<?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>121619</bug_id>
          
          <creation_ts>2013-09-19 10:54:35 -0700</creation_ts>
          <short_desc>[CSS Shapes] add shape-margin support for image valued shapes</short_desc>
          <delta_ts>2013-10-10 08:34:24 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116348</blocked>
    
    <blocked>122601</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>achicu</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931007</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-19 10:54:35 -0700</bug_when>
    <thetext>Currently shape-margin is ignored for image valued shapes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932271</commentid>
    <comment_count>1</comment_count>
      <attachid>212386</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-23 13:43:04 -0700</bug_when>
    <thetext>Created attachment 212386
Patch

Add support for computing the shape-margin boundary for a shape-outside whose value is an image. The current implementation is correct but suboptimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932289</commentid>
    <comment_count>2</comment_count>
      <attachid>212386</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-23 14:21:58 -0700</bug_when>
    <thetext>Comment on attachment 212386
Patch

Attachment 212386 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/1966485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932324</commentid>
    <comment_count>3</comment_count>
      <attachid>212398</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-23 15:36:29 -0700</bug_when>
    <thetext>Created attachment 212398
Patch

Resync&apos;d to get past the windows EWS build problem - which seems to be unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932373</commentid>
    <comment_count>4</comment_count>
      <attachid>212398</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-23 17:14:50 -0700</bug_when>
    <thetext>Comment on attachment 212398
Patch

Attachment 212398 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2096053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933552</commentid>
    <comment_count>5</comment_count>
      <attachid>212398</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-09-26 09:48:46 -0700</bug_when>
    <thetext>Comment on attachment 212398
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        value is an image. The current implementation is correct but suboptimal.

Is there a bug that will improve it? Why not just do the optimal version now :) ?

Is it correct to ignore the empty intervals inside the shape?

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:56
&gt; +    m_xIntercepts.resize(radius + 1);

I&apos;m not sure if it is worth caching these values. And if you don&apos;t need the cache, then you don&apos;t really need the Generator class at all.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:87
&gt; +    ASSERT(m_intervalLists[y].size() &lt;= 1);

It seems like you are going to need more than one interval. Seems like ShapeInterval::uniteShapeIntervals does very similar things.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:233
&gt; +        intervalGenerator.set(y, intervalsAtY[0].x1(), intervalsAtY.last().x2());

Isn&apos;t this going to ignore the intervals inside? Why are you not doing the traversal for each interval?

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:234
&gt; +        for (int marginY = marginY0; marginY &lt;= marginY1; ++marginY)

You can generate all the intervals for one line and then use ShapeInterval::uniteShapeIntervals to unite it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933559</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-26 09:57:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 212398 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212398&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        value is an image. The current implementation is correct but suboptimal.
&gt; 
&gt; Is there a bug that will improve it? Why not just do the optimal version now :) ?

Because I&apos;d like to lock down the correct behavior before adding optimizations.  The performance of the current implementation is actually OK.
 
&gt; Is it correct to ignore the empty intervals inside the shape?

Yes.

&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:56
&gt; &gt; +    m_xIntercepts.resize(radius + 1);
&gt; 
&gt; I&apos;m not sure if it is worth caching these values. And if you don&apos;t need the cache, then you don&apos;t really need the Generator class at all.

This is not just a cache, although avoiding a sqrt()  per interval is worthwhile.  The other motivation for the Generator class is to factor out of the code that computes margin boundary for a single interval.

&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:87
&gt; &gt; +    ASSERT(m_intervalLists[y].size() &lt;= 1);
&gt; 
&gt; It seems like you are going to need more than one interval. Seems like ShapeInterval::uniteShapeIntervals does very similar things.

Only one interval is needed - the outermost limits - because the margin boundary is for shape-outside.


&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:233
&gt; &gt; +        intervalGenerator.set(y, intervalsAtY[0].x1(), intervalsAtY.last().x2());
&gt; 
&gt; Isn&apos;t this going to ignore the intervals inside? Why are you not doing the traversal for each interval?

See above.

&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:234
&gt; &gt; +        for (int marginY = marginY0; marginY &lt;= marginY1; ++marginY)
&gt; 
&gt; You can generate all the intervals for one line and then use ShapeInterval::uniteShapeIntervals to unite it.

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933568</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-09-26 10:14:28 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 212398 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212398&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; &gt; +        value is an image. The current implementation is correct but suboptimal.
&gt; &gt; 
&gt; &gt; Is there a bug that will improve it? Why not just do the optimal version now :) ?
&gt; 
&gt; Because I&apos;d like to lock down the correct behavior before adding optimizations.  The performance of the current implementation is actually OK.
How different is the optimization going to be from the current code? Suboptimal means there is another algorithm that will do it with a better O() complexity. If you don&apos;t think there&apos;s one now, you may want to remove that phrase. 

Anyway, if you already have an optimization in mind for the current algorithm implementation, please add a tracking bug and reference it from the changelog. Make sure the bug reflects your thoughts.

&gt; 
&gt; &gt; Is it correct to ignore the empty intervals inside the shape?
&gt; 
&gt; Yes.
It&apos;s correct for now, but just because we only support shape-outside on floats. Exclusions are not going to work with this implementation. I think the code would not be a lot more complicated if you did it right from the begining. Please make it work in that case too.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:56
&gt; &gt; &gt; +    m_xIntercepts.resize(radius + 1);
&gt; &gt; 
&gt; &gt; I&apos;m not sure if it is worth caching these values. And if you don&apos;t need the cache, then you don&apos;t really need the Generator class at all.
&gt; 
&gt; This is not just a cache, although avoiding a sqrt()  per interval is worthwhile.  The other motivation for the Generator class is to factor out of the code that computes margin boundary for a single interval.
While the image size is not expected to be too large, making an arbitrary large vector based on a CSS value doesn&apos;t seem reasonable to me. You can just provide a large margin and crash the allocator.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:87
&gt; &gt; &gt; +    ASSERT(m_intervalLists[y].size() &lt;= 1);
&gt; &gt; 
&gt; &gt; It seems like you are going to need more than one interval. Seems like ShapeInterval::uniteShapeIntervals does very similar things.
&gt; 
&gt; Only one interval is needed - the outermost limits - because the margin boundary is for shape-outside.
See above.
&gt; 
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:233
&gt; &gt; &gt; +        intervalGenerator.set(y, intervalsAtY[0].x1(), intervalsAtY.last().x2());
&gt; &gt; 
&gt; &gt; Isn&apos;t this going to ignore the intervals inside? Why are you not doing the traversal for each interval?
&gt; 
&gt; See above.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:234
&gt; &gt; &gt; +        for (int marginY = marginY0; marginY &lt;= marginY1; ++marginY)
&gt; &gt; 
&gt; &gt; You can generate all the intervals for one line and then use ShapeInterval::uniteShapeIntervals to unite it.
&gt; 
&gt; See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933963</commentid>
    <comment_count>8</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-27 09:27:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (From update of attachment 212398 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212398&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; &gt; &gt; +        value is an image. The current implementation is correct but suboptimal.
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there a bug that will improve it? Why not just do the optimal version now :) ?
&gt; &gt; 
&gt; &gt; Because I&apos;d like to lock down the correct behavior before adding optimizations.  The performance of the current implementation is actually OK.
&gt; How different is the optimization going to be from the current code? Suboptimal means there is another algorithm that will do it with a better O() complexity. If you don&apos;t think there&apos;s one now, you may want to remove that phrase. 
&gt; 
&gt; Anyway, if you already have an optimization in mind for the current algorithm implementation, please add a tracking bug and reference it from the changelog. Make sure the bug reflects your thoughts.

Since the point about &quot;suboptimal&quot; seems to be misleading, I&apos;ve removed it.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Is it correct to ignore the empty intervals inside the shape?
&gt; &gt; 
&gt; &gt; Yes.
&gt; It&apos;s correct for now, but just because we only support shape-outside on floats. Exclusions are not going to work with this implementation. I think the code would not be a lot more complicated if you did it right from the begining. Please make it work in that case too.

Even when we add support for exclusions this code will just become an important special case. It makes the cost of computing the margin boundary proportional to the number of  lines that contain above-threshold pixels, instead of that and the number of above-threshold intervals per line.

&gt; &gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:56
&gt; &gt; &gt; &gt; +    m_xIntercepts.resize(radius + 1);
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m not sure if it is worth caching these values. And if you don&apos;t need the cache, then you don&apos;t really need the Generator class at all.
&gt; &gt; 
&gt; &gt; This is not just a cache, although avoiding a sqrt()  per interval is worthwhile.  The other motivation for the Generator class is to factor out of the code that computes margin boundary for a single interval.
&gt; While the image size is not expected to be too large, making an arbitrary large vector based on a CSS value doesn&apos;t seem reasonable to me. You can just provide a large margin and crash the allocator.

I&apos;ve changed the code to limit this value to the maximum width,height of the image.  Doing so doesn&apos;t affect the correctness of the implementation and it prevents the problem you&apos;ve pointed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933965</commentid>
    <comment_count>9</comment_count>
      <attachid>212815</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-27 09:31:53 -0700</bug_when>
    <thetext>Created attachment 212815
Patch

Made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933991</commentid>
    <comment_count>10</comment_count>
      <attachid>212815</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-27 10:27:16 -0700</bug_when>
    <thetext>Comment on attachment 212815
Patch

Attachment 212815 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2660176

New failing tests:
media/track/track-cue-rendering-vertical.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933992</commentid>
    <comment_count>11</comment_count>
      <attachid>212819</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-27 10:27:18 -0700</bug_when>
    <thetext>Created attachment 212819
Archive of layout-test-results from webkit-ews-16 for mac-mountainlion-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: webkit-ews-16  Port: mac-mountainlion-wk2  Platform: Mac OS X 10.8.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934166</commentid>
    <comment_count>12</comment_count>
      <attachid>212815</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-27 17:48:28 -0700</bug_when>
    <thetext>Comment on attachment 212815
Patch

Attachment 212815 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2657286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934195</commentid>
    <comment_count>13</comment_count>
      <attachid>212871</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-27 19:28:40 -0700</bug_when>
    <thetext>Created attachment 212871
Patch

EWS bot test failure doesn&apos;t appear to have anything to do with this patch.  Resync&apos;d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934207</commentid>
    <comment_count>14</comment_count>
      <attachid>212871</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-27 21:43:11 -0700</bug_when>
    <thetext>Comment on attachment 212871
Patch

Attachment 212871 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2660363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934588</commentid>
    <comment_count>15</comment_count>
      <attachid>212995</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-09-30 08:03:55 -0700</bug_when>
    <thetext>Created attachment 212995
Patch

Avoid Win32 compile problems by casting sqrt&apos;s argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935071</commentid>
    <comment_count>16</comment_count>
      <attachid>212995</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-01 10:01:13 -0700</bug_when>
    <thetext>Comment on attachment 212995
Patch

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

Thanks! I think that another round will make it perfect :)

&gt; LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-002.html:36
&gt; +        -webkit-shape-margin: 50px;

We should have negative testing as well, so please add &quot;-webkit-shape-margin: 0px&quot; and &quot;-webkit-shape-margin: -100px&quot; as well as &quot;-webkit-shape-margin: -1000000px&quot;

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:55
&gt; +    ASSERT(radius &gt;= 0);

Use unsigned.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:56
&gt; +    m_xIntercepts.resize(radius + 1);

Is there any limit defined for the radius?

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:87
&gt; +    ASSERT(m_intervalLists[y].size() &lt;= 1);

You need a comment explaining what happened when this assert fails.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:233
&gt; +        intervalGenerator.set(y, intervalsAtY[0].x1(), intervalsAtY.last().x2());

This is still not addressing the previous review comments, so it&apos;s not going to work with non-floats exclusions that have empty spaces in the middle. 

Can you at least add a comment saying that we will need to revisit and rewrite this function? Add a bug for it and reference it from the comments.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:247
&gt; +    int marginBoundaryRadius = std::min(clampToInteger(shapeMargin()), std::max(m_imageSize.width(), m_imageSize.height()));

Replace clampToInteger() with clampTo&lt;unsigned&gt;(). Look in &quot;template&lt;&gt; inline CSSPrimitiveValue::operator unsigned() const&quot; for another example. Might be usefull to add a function to MathExtras.h.

I suppose you need to ceil() the margin, so that 5.5px will be considered 6px instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935271</commentid>
    <comment_count>17</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-10-01 16:45:50 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 212995 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212995&amp;action=review

&gt; &gt; LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-002.html:36
&gt; &gt; +        -webkit-shape-margin: 50px;
&gt; 
&gt; We should have negative testing as well, so please add &quot;-webkit-shape-margin: 0px&quot; and &quot;-webkit-shape-margin: -100px&quot; as well as &quot;-webkit-shape-margin: -1000000px&quot;

Negative shape-margin values are just truncated to zero. The existing tests in fast/shapes/parsing/script-tests/parsing-shape-margin.js check this.

I added a test that verifies that specifying &quot;-webkit-shape-margin: 0px&quot; does what you&apos;d expect.

&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:56
&gt; &gt; +    m_xIntercepts.resize(radius + 1);
&gt; 
&gt; Is there any limit defined for the radius?

Yes. RasterShape::marginIntervals() limits it to the max of the image&apos;s width and height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935272</commentid>
    <comment_count>18</comment_count>
      <attachid>213131</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-10-01 16:46:23 -0700</bug_when>
    <thetext>Created attachment 213131
Patch

Made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935273</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-01 16:48:54 -0700</bug_when>
    <thetext>Attachment 213131 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-001-expected.txt&apos;, u&apos;LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-001.html&apos;, u&apos;LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-002-expected.txt&apos;, u&apos;LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-002.html&apos;, u&apos;LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-003-expected.html&apos;, u&apos;LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin-003.html&apos;, u&apos;Source/WTF/wtf/MathExtras.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/rendering/shapes/RasterShape.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/RasterShape.h&apos;, u&apos;Source/WebCore/rendering/shapes/Shape.cpp&apos;]&quot; exit_code: 1
Source/WebCore/ChangeLog:27:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935278</commentid>
    <comment_count>20</comment_count>
      <attachid>213133</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-10-01 17:09:09 -0700</bug_when>
    <thetext>Created attachment 213133
Patch

Fixed a CL typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935820</commentid>
    <comment_count>21</comment_count>
      <attachid>213267</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-10-03 09:24:16 -0700</bug_when>
    <thetext>Created attachment 213267
Patch

RasterShapeIntervals::computeShapeMarginIntervals&apos; margin parameter is now unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935821</commentid>
    <comment_count>22</comment_count>
      <attachid>213268</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-10-03 09:28:53 -0700</bug_when>
    <thetext>Created attachment 213268
Patch

Resync&apos;d the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935829</commentid>
    <comment_count>23</comment_count>
      <attachid>213268</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-03 09:49:17 -0700</bug_when>
    <thetext>Comment on attachment 213268
Patch

Thanks Hans!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935841</commentid>
    <comment_count>24</comment_count>
      <attachid>213268</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-03 10:18:44 -0700</bug_when>
    <thetext>Comment on attachment 213268
Patch

Clearing flags on attachment: 213268

Committed r156838: &lt;http://trac.webkit.org/changeset/156838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935842</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-03 10:18:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212386</attachid>
            <date>2013-09-23 13:43:04 -0700</date>
            <delta_ts>2013-09-23 15:36:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>15036</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OGZjY2M5Li5hYjIyMGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA5LTIzICBDaGFuZ1Nlb2sgT2ggIDxjaGFu
Z3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBbVGV4bWFwXSBSZWxvYWRpbmcgYSB3
ZWJnbCBwYWdlIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFw
ZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2lu
LTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRl
LWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzYwZDQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxOCBAQAorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250
ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS4KKworWAor
CitYCitYCisKK1gKK1hYWFgKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2EnKS50b3AgaXMgMAorUEFT
UyBpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCBpcyA1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicp
LmxlZnQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykudG9wIGlzIDc1CitQQVNTIGlt
YWdlU2hhcGVSZWN0KCdjJykubGVmdCBpcyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50
b3AgaXMgMTI1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdlJykudG9wIGlzIDE1MAorUEFTUyBpbWFn
ZVNoYXBlUmVjdCgnZScpLmxlZnQgaXMgMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZs
b2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE5N2I3OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaW1hZ2VTaGFw
ZVJlY3QoZWxlbWVudElkKSAKKyAgICB7CisgICAgICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImltYWdlLXNoYXBlIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAg
IHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKKyAgICAgICAgcmV0dXJuIHtsZWZ0OiByLmxlZnQgLSBzLmxlZnQsIHRvcDog
ci50b3AgLSBzLnRvcCwgd2lkdGg6IHIud2lkdGgsIGhlaWdodDogci5oZWlnaHR9OworICAgIH0K
KworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBxdWlldCA9IHRy
dWU7IC8vIFBBU1Mgb3V0cHV0IGRlcGVuZHMgb24gaWYgc3VicGl4ZWwgbGF5b3V0IGhhcyBiZWVu
IGVuYWJsZWQKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdhJykudG9wIiwgIjAi
KTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1hZ2VTaGFwZVJlY3QoJ2EnKS5sZWZ0IiwgMjky
LCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCIs
ICI1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdiJykubGVmdCIsICIzMDAi
KTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJykudG9wIiwgIjc1Iik7Cisg
ICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2MnKS5sZWZ0IiwgIjMwMCIpOworCisgICAg
ICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AiLCAiMTI1Iik7CisgICAgICBzaG91
bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdkJykubGVmdCIsIDI5MiwgMSwgcXVpZXQpOwor
CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS50b3AiLCAiMTUwIik7CisgICAg
ICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS5sZWZ0IiwgIjAiKTsKKyAgICB9OworPC9z
Y3JpcHQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7
CisgICAgICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7
dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI1MHB4
JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PSc1MCcgeT0nNTAnIHdpZHRoPScyMDAnIGhlaWdodD0n
NTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1tYXJnaW46
IDUwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0n
MzAwJyBoZWlnaHQ9JzE1MCcgcng9JzUwJyByeT0nNTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsK
KyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICAgICAgd2lkdGg6IDM1
MHB4OyAKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsgCisgICAgfQorCisgICAgI2NvbnRlbnQgewor
ICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdy
ZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJl
cXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3Vu
ZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS48L3A+CisgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorICAgICAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwv
ZGl2PgorICAgICAgPHNwYW4gaWQ9ImEiPlg8L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iYiI+WDwv
c3Bhbj48YnI+PHNwYW4gaWQ9ImMiPlg8L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iZCI+WDwvc3Bh
bj48YnI+PHNwYW4gaWQ9ImUiPlhYWFg8L3NwYW4+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdl
LW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUt
b3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI2NjUyYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxv
YXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3Jl
ZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUu
CisKK1gKKworWAorWAorCitYCitYWFhYCitQQVNTIGltYWdlU2hhcGVSZWN0KCdhJykudG9wIGlz
IDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AgaXMgNTAKK1BBU1MgaW1hZ2VTaGFwZVJl
Y3QoJ2InKS5yaWdodCBpcyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2MnKS50b3AgaXMgNzUK
K1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2MnKS5yaWdodCBpcyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJl
Y3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdlJykudG9wIGlzIDE1MAor
UEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnJpZ2h0IGlzIDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9h
dHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUt
b3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkN2Y5ZGYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLmh0bWwKQEAgLTAsMCArMSw2MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9u
IGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkgCisgICAgeworICAgICAgICB2YXIgcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1zaGFwZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHJldHVybiB7cmlnaHQ6IHMucmlnaHQgLSBy
LnJpZ2h0LCB0b3A6IHIudG9wIC0gcy50b3AsIHdpZHRoOiByLndpZHRoLCBoZWlnaHQ6IHIuaGVp
Z2h0fTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2
YXIgcXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91dHB1dCBkZXBlbmRzIG9uIGlmIHN1YnBpeGVsIGxh
eW91dCBoYXMgYmVlbiBlbmFibGVkCisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgn
YScpLnRvcCIsICIwIik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdh
JykucmlnaHQiLCAyOTIsIDEsIHF1aWV0KTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVS
ZWN0KCdiJykudG9wIiwgIjUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2In
KS5yaWdodCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJyku
dG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2MnKS5yaWdodCIs
ICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdkJykudG9wIiwgIjEy
NSIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnZCcpLnJpZ2h0Iiwg
MjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZScpLnRv
cCIsICIxNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZScpLnJpZ2h0Iiwg
IjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAg
ICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgi
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnIHdpZHRoPScyNTBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nNTAnIHk9JzUwJyB3
aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13
ZWJraXQtc2hhcGUtbWFyZ2luOiA1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRo
cmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHJlY3Qg
eD0nMCcgeT0nMCcgd2lkdGg9JzMwMCcgaGVpZ2h0PScxNTAnIHJ4PSc1MCcgcnk9JzUwJyBmaWxs
PSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7
CisgICAgICAgIHdpZHRoOiAzMDBweDsgCisgICAgICAgIGhlaWdodDogMjUwcHg7IAorICAgIH0K
KworICAgICNjb250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7
CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhl
IEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVl
IHJvdW5kZWQgcmVjdGFuZ2xlLjwvcD4KKyAgPGRpdiBpZD0iY29udGVudCI+CisgICAgICA8ZGl2
IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+CisgICAgICA8c3BhbiBpZD0iYSI+WDwvc3Bhbj48YnI+
PGJyPjxzcGFuIGlkPSJiIj5YPC9zcGFuPjxicj48c3BhbiBpZD0iYyI+WDwvc3Bhbj48YnI+PGJy
PjxzcGFuIGlkPSJkIj5YPC9zcGFuPjxicj48c3BhbiBpZD0iZSI+WFhYWDwvc3Bhbj4KKyAgPC9k
aXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNWY5NjA3ZS4uOTc4M2Q2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisy
MDEzLTA5LTIzICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1MgU2hhcGVzXSBhZGQgc2hhcGUtbWFyZ2luIHN1cHBvcnQgZm9yIGltYWdlIHZhbHVlZCBzaGFw
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTYx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBjb21wdXRpbmcgdGhlIHNoYXBlLW1hcmdpbiBib3VuZGFyeSBmb3IgYSBzaGFw
ZS1vdXRzaWRlIHdob3NlCisgICAgICAgIHZhbHVlIGlzIGFuIGltYWdlLiBUaGUgY3VycmVudCBp
bXBsZW1lbnRhdGlvbiBpcyBjb3JyZWN0IGJ1dCBzdWJvcHRpbWFsLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1p
bWFnZS1tYXJnaW4tMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbAor
CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ip
OiBJbnRlcm5hbCB1dGlsaXR5IHRoYXQgZ2VuZXJhdGVzIHRoZSBtYXJnaW4gaW50ZXJ2YWxzIGZv
ciB0aGUgaW1hZ2UgaW50ZXJ2YWwgc3BlY2lmaWVkIHdpdGggc2V0KCkuCisgICAgICAgIChXZWJD
b3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1h
cmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRJbnNlcnRpb25Qb2ludCk6IEZpbmQgdGhlIGluc2VydGlvbiBwb2ludCBpbmRleCBmb3IgdGhl
IHRoZSBzcGVjaWZpZWQgWCB2YWx1ZSwgd2l0aGluIGEgdmVjdG9yIG9mIGludGVydmFscyBzb3J0
ZWQgYnkgWDEuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6dW5pdGVN
YXJnaW5JbnRlcnZhbCk6IERlc3RydWN0aXZlbHkgdW5pdGUgb25lIGludGVydmFsIHdpdGggYW4g
ZXhpc3Rpbmcgb25lLCBvciBhcHBlbmQgaXQuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMpOiBSZXR1cm4gdGhlIGxhemlseSBjb21w
dXRlZCB2YWx1ZSwgb3IgY3JlYXRlIGl0IHdpdGggY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxz
KCkuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAo
V2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFz
dGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFyZ2luSW50ZXJ2YWwpOgorCiAyMDEzLTA5LTIzICBD
aGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBbVGV4
bWFwXSBSZWxvYWRpbmcgYSB3ZWJnbCBwYWdlIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA4N2NkOThhLi5lMTFi
MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcApAQCAtMzQsNiArMzQsNDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBN
YXJnaW5JbnRlcnZhbEdlbmVyYXRvciB7CitwdWJsaWM6CisgICAgTWFyZ2luSW50ZXJ2YWxHZW5l
cmF0b3IoaW50IHJhZGl1cyk7CisgICAgdm9pZCBzZXQoaW50IHksIGludCB4MSwgaW50IHgyKTsK
KyAgICBJbnRTaGFwZUludGVydmFsIGludGVydmFsQXQoaW50IHkpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFZlY3RvcjxpbnQ+IG1feEludGVyY2VwdHM7CisgICAgaW50IG1feTsKKyAgICBpbnQg
bV94MTsKKyAgICBpbnQgbV94MjsKK307CisKK01hcmdpbkludGVydmFsR2VuZXJhdG9yOjpNYXJn
aW5JbnRlcnZhbEdlbmVyYXRvcihpbnQgcmFkaXVzKQorICAgIDogbV95KDApCisgICAgLCBtX3gx
KDApCisgICAgLCBtX3gyKDApCit7CisgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKKyAgICBtX3hJ
bnRlcmNlcHRzLnJlc2l6ZShyYWRpdXMgKyAxKTsKKyAgICBpbnQgcmFkaXVzU3F1YXJlZCA9IHJh
ZGl1cyAqIHJhZGl1czsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8PSByYWRpdXM7IHkrKykKKyAg
ICAgICAgbV94SW50ZXJjZXB0c1t5XSA9IHNxcnQocmFkaXVzU3F1YXJlZCAtIHkgKiB5KTsKK30K
Kwordm9pZCBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6c2V0KGludCB5LCBpbnQgeDEsIGludCB4
MikKK3sKKyAgICBBU1NFUlQoeSA+PSAwICYmIHgxID49IDAgJiYgeDIgPiB4MSk7CisgICAgbV95
ID0geTsKKyAgICBtX3gxID0geDE7CisgICAgbV94MiA9IHgyOworfQorCitJbnRTaGFwZUludGVy
dmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBjb25zdAorewor
ICAgIHVuc2lnbmVkIHhJbnRlcmNlcHRzSW5kZXggPSBhYnMoeSAtIG1feSk7CisgICAgaW50IGR4
ID0gKHhJbnRlcmNlcHRzSW5kZXggPj0gbV94SW50ZXJjZXB0cy5zaXplKCkpID8gMCA6IG1feElu
dGVyY2VwdHNbeEludGVyY2VwdHNJbmRleF07CisgICAgcmV0dXJuIEludFNoYXBlSW50ZXJ2YWwo
c3RkOjptYXgoMCwgbV94MSAtIGR4KSwgbV94MiArIGR4KTsKK30KKwogdm9pZCBSYXN0ZXJTaGFw
ZUludGVydmFsczo6YXBwZW5kSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKQogewogICAg
IEFTU0VSVCh5ID49IDAgJiYgeSA8IHNpemUoKSAmJiB4MSA+PSAwICYmIHgyID4geDEgJiYgKG1f
aW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5KCkgfHwgeDEgPiBtX2ludGVydmFsTGlzdHNbeV0ubGFz
dCgpLngyKCkpKTsKQEAgLTQyLDYgKzgyLDIwIEBAIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6
OmFwcGVuZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4MikKICAgICBtX2ludGVydmFsTGlz
dHNbeV0uYXBwZW5kKEludFNoYXBlSW50ZXJ2YWwoeDEsIHgyKSk7CiB9CiAKK3ZvaWQgUmFzdGVy
U2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFyZ2luSW50ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBl
SW50ZXJ2YWwmIGludGVydmFsKQoreworICAgIEFTU0VSVChtX2ludGVydmFsTGlzdHNbeV0uc2l6
ZSgpIDw9IDEpOworCisgICAgaWYgKG1faW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5KCkpCisgICAg
ICAgIG1faW50ZXJ2YWxMaXN0c1t5XS5hcHBlbmQoaW50ZXJ2YWwpOworICAgIGVsc2UgeworICAg
ICAgICBJbnRTaGFwZUludGVydmFsJiByZXN1bHRJbnRlcnZhbCA9IG1faW50ZXJ2YWxMaXN0c1t5
XVswXTsKKyAgICAgICAgcmVzdWx0SW50ZXJ2YWwuc2V0KHN0ZDo6bWluKHJlc3VsdEludGVydmFs
LngxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1heChyZXN1bHRJbnRlcnZhbC54MigpLCBpbnRl
cnZhbC54MigpKSk7CisgICAgfQorCisgICAgbV9ib3VuZHMudW5pdGUoSW50UmVjdChpbnRlcnZh
bC54MSgpLCB5LCBpbnRlcnZhbC53aWR0aCgpLCAxKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzaGFwZUludGVydmFsc0NvbnRhaW4oY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFs
cywgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWwpCiB7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGludGVydmFscy5zaXplKCk7IGkrKykgewpAQCAtMTY1LDE0ICsyMTksMzUg
QEAgdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkx
LCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWwKICAgICB9CiB9CiAKK1Bhc3NPd25QdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5J
bnRlcnZhbHMoaW50IG1hcmdpbikgY29uc3QKK3sKKyAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscyhzaXplKCkg
KyBtYXJnaW4pKTsKKyAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBpbnRlcnZhbEdlbmVyYXRv
cihtYXJnaW4pOworCisgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygp
Lm1heFkoKTsgKyt5KSB7CisgICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZh
bHNBdFkgPSBnZXRJbnRlcnZhbHMoeSk7CisgICAgICAgIGlmIChpbnRlcnZhbHNBdFkuaXNFbXB0
eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGludCBtYXJnaW5ZMCA9IHN0ZDo6
bWF4KDAsIHkgLSBtYXJnaW4pOworICAgICAgICBpbnQgbWFyZ2luWTEgPSBzdGQ6Om1pbihyZXN1
bHQtPnNpemUoKSAtIDEsIHkgKyBtYXJnaW4pOworICAgICAgICBpbnRlcnZhbEdlbmVyYXRvci5z
ZXQoeSwgaW50ZXJ2YWxzQXRZWzBdLngxKCksIGludGVydmFsc0F0WS5sYXN0KCkueDIoKSk7Cisg
ICAgICAgIGZvciAoaW50IG1hcmdpblkgPSBtYXJnaW5ZMDsgbWFyZ2luWSA8PSBtYXJnaW5ZMTsg
KyttYXJnaW5ZKQorICAgICAgICAgICAgcmVzdWx0LT51bml0ZU1hcmdpbkludGVydmFsKG1hcmdp
blksIGludGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQobWFyZ2luWSkpOworICAgIH0KKworICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCiBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFs
cyYgUmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNo
YXBlTWFyZ2luKCkgPj0gMCk7CiAgICAgaWYgKCFzaGFwZU1hcmdpbigpKQogICAgICAgICByZXR1
cm4gKm1faW50ZXJ2YWxzOwogCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24temVy
byBtYXJnaW4sIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
MzQ4LgotICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisgICAgaWYgKCFtX21hcmdpbkludGVydmFs
cykKKyAgICAgICAgbV9tYXJnaW5JbnRlcnZhbHMgPSBtX2ludGVydmFscy0+Y29tcHV0ZVNoYXBl
TWFyZ2luSW50ZXJ2YWxzKHNoYXBlTWFyZ2luKCkpOworCisgICAgcmV0dXJuICptX21hcmdpbklu
dGVydmFsczsKIH0KIAogY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjpw
YWRkaW5nSW50ZXJ2YWxzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaAppbmRleCBmMTc5YTcwLi4yMWEzOTZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCkBAIC01MiwxOSArNTIsMjIgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIElu
dFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0RXhjbHVkZWRJbnRl
cnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0Owog
ICAgIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsWShpbnQgbWluWSwgY29uc3QgSW50U2l6ZSYg
bWluU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdDsKKyAgICBQYXNzT3duUHRyPFJhc3Rl
clNoYXBlSW50ZXJ2YWxzPiBjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IG1hcmdpbikg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ludGVy
dmFsTGlzdHMuc2l6ZSgpOyB9CisKICAgICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgZ2V0SW50
ZXJ2YWxzKGludCB5KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKHkgPj0gMCAmJiB5IDwg
c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5XTsKICAgICB9CisKICAg
ICBib29sIGNvbnRhaW5zKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICBib29sIGdldEludGVy
dmFsWDFWYWx1ZXMoaW50IG1pblksIGludCBtYXhZLCBpbnQgbWluSW50ZXJ2YWxXaWR0aCwgVmVj
dG9yPGludD4mIHJlc3VsdCkgY29uc3Q7Ci0KKyAgICB2b2lkIHVuaXRlTWFyZ2luSW50ZXJ2YWwo
aW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmKTsKICAgICBJbnRSZWN0IG1fYm91bmRzOwot
ICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFscyA+IG1faW50ZXJ2YWxMaXN0czsKKyAgICBWZWN0
b3I8SW50U2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxMaXN0czsKIH07CiAKIGNsYXNzIFJhc3Rl
clNoYXBlIDogcHVibGljIFNoYXBlIHsKQEAgLTczLDYgKzc2LDcgQEAgcHVibGljOgogICAgIFJh
c3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKICAg
ICAgICAgOiBTaGFwZSgpCiAgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgICAg
ICAsIG1fbWFyZ2luSW50ZXJ2YWxzKG51bGxwdHIpCiAgICAgewogICAgIH0KIApAQCAtODgsNiAr
OTIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBwYWRkaW5n
SW50ZXJ2YWxzKCkgY29uc3Q7CiAKICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IG1f
aW50ZXJ2YWxzOworICAgIG11dGFibGUgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX21h
cmdpbkludGVydmFsczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="234604"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212398</attachid>
            <date>2013-09-23 15:36:29 -0700</date>
            <delta_ts>2013-09-27 09:31:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>15037</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYWZjNDBlLi4wMTkxMmYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA5LTIzICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNTU5OTgpOiB3aGVu
IHpvb21pbmcgaW4sIHRpbGVzIGFyZSB0b28gc21hbGwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWlt
YWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2MGQ0NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUg
Z3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5n
bGUuCisKK1gKKworWAorWAorCitYCitYWFhYCitQQVNTIGltYWdlU2hhcGVSZWN0KCdhJykudG9w
IGlzIDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AgaXMgNTAKK1BBU1MgaW1hZ2VTaGFw
ZVJlY3QoJ2InKS5sZWZ0IGlzIDMwMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYycpLnRvcCBpcyA3
NQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYycpLmxlZnQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVS
ZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnRvcCBpcyAxNTAK
K1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5sZWZ0IGlzIDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9h
dHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUt
b3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOTdiNzkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwKQEAgLTAsMCArMSw1OCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9u
IGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkgCisgICAgeworICAgICAgICB2YXIgcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1zaGFwZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHJldHVybiB7bGVmdDogci5sZWZ0IC0gcy5s
ZWZ0LCB0b3A6IHIudG9wIC0gcy50b3AsIHdpZHRoOiByLndpZHRoLCBoZWlnaHQ6IHIuaGVpZ2h0
fTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIg
cXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91dHB1dCBkZXBlbmRzIG9uIGlmIHN1YnBpeGVsIGxheW91
dCBoYXMgYmVlbiBlbmFibGVkCisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYScp
LnRvcCIsICIwIik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdhJyku
bGVmdCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3Qo
J2InKS50b3AiLCAiNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLmxl
ZnQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYycpLnRvcCIs
ICI3NSIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJykubGVmdCIsICIzMDAi
KTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdkJykudG9wIiwgIjEyNSIpOwor
ICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnZCcpLmxlZnQiLCAyOTIsIDEs
IHF1aWV0KTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdlJykudG9wIiwgIjE1
MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdlJykubGVmdCIsICIwIik7Cisg
ICAgfTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZs
b2F0OiBsZWZ0OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFn
ZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdp
ZHRoPScyNTBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nNTAnIHk9JzUwJyB3aWR0aD0nMjAw
JyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hh
cGUtbWFyZ2luOiA1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDog
MDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHJlY3QgeD0nMCcgeT0n
MCcgd2lkdGg9JzMwMCcgaGVpZ2h0PScxNTAnIHJ4PSc1MCcgcnk9JzUwJyBmaWxsPSdibHVlJy8+
PC9zdmc+Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgICAg
IHdpZHRoOiAzNTBweDsgCisgICAgICAgIGhlaWdodDogMjUwcHg7IAorICAgIH0KKworICAgICNj
b250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAg
IGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPlRo
aXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQg
d3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuPC9wPgorICA8ZGl2IGlkPSJj
b250ZW50IiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAgIDxkaXYgaWQ9ImltYWdl
LXNoYXBlIj48L2Rpdj4KKyAgICAgIDxzcGFuIGlkPSJhIj5YPC9zcGFuPjxicj48YnI+PHNwYW4g
aWQ9ImIiPlg8L3NwYW4+PGJyPjxzcGFuIGlkPSJjIj5YPC9zcGFuPjxicj48YnI+PHNwYW4gaWQ9
ImQiPlg8L3NwYW4+PGJyPjxzcGFuIGlkPSJlIj5YWFhYPC9zcGFuPgorICA8L2Rpdj4KKyAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZs
b2F0cy1pbWFnZS1tYXJnaW4tMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hh
cGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdp
bi0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgy
NjY1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9u
dC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJvdW5kZWQg
cmVjdGFuZ2xlLgorCitYCisKK1gKK1gKKworWAorWFhYWAorUEFTUyBpbWFnZVNoYXBlUmVjdCgn
YScpLnRvcCBpcyAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykudG9wIGlzIDUwCitQQVNTIGlt
YWdlU2hhcGVSZWN0KCdiJykucmlnaHQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJyku
dG9wIGlzIDc1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykucmlnaHQgaXMgMzAwCitQQVNTIGlt
YWdlU2hhcGVSZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnRv
cCBpcyAxNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5yaWdodCBpcyAwCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91
dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hh
cGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdp
bi0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDdmOWRmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sCkBAIC0wLDAg
KzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAg
ICBmdW5jdGlvbiBpbWFnZVNoYXBlUmVjdChlbGVtZW50SWQpIAorICAgIHsKKyAgICAgICAgdmFy
IHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utc2hhcGUiKS5nZXRCb3VuZGluZ0Ns
aWVudFJlY3QoKTsKKyAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt
ZW50SWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICByZXR1cm4ge3JpZ2h0OiBz
LnJpZ2h0IC0gci5yaWdodCwgdG9wOiByLnRvcCAtIHMudG9wLCB3aWR0aDogci53aWR0aCwgaGVp
Z2h0OiByLmhlaWdodH07CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eworICAgICAgdmFyIHF1aWV0ID0gdHJ1ZTsgLy8gUEFTUyBvdXRwdXQgZGVwZW5kcyBvbiBpZiBz
dWJwaXhlbCBsYXlvdXQgaGFzIGJlZW4gZW5hYmxlZAorCisgICAgICBzaG91bGRCZSgiaW1hZ2VT
aGFwZVJlY3QoJ2EnKS50b3AiLCAiMCIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFnZVNo
YXBlUmVjdCgnYScpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJlKCJp
bWFnZVNoYXBlUmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hh
cGVSZWN0KCdiJykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBl
UmVjdCgnYycpLnRvcCIsICI3NSIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdj
JykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZCcp
LnRvcCIsICIxMjUiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1hZ2VTaGFwZVJlY3QoJ2Qn
KS5yaWdodCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJl
Y3QoJ2UnKS50b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2Un
KS5yaWdodCIsICIwIik7CisgICAgfTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNpbWFnZS1z
aGFwZSB7CisgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1vdXRz
aWRlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjUwcHgnIGhlaWdodD0nMTAwcHgnPjxyZWN0IHg9JzUw
JyB5PSc1MCcgd2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOwor
ICAgICAgICAtd2Via2l0LXNoYXBlLW1hcmdpbjogNTBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFw
ZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0
YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmcnPjxyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPSczMDAnIGhlaWdodD0nMTUwJyByeD0nNTAnIHJ5
PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDog
bm8tcmVwZWF0OworICAgICAgICB3aWR0aDogMzAwcHg7IAorICAgICAgICBoZWlnaHQ6IDI1MHB4
OyAKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICAgIGZvbnQ6IDI1cHgvMSBBaGVtLCBz
YW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHRleHQtYWxpZ246IHJp
Z2h0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJl
cXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3Vu
ZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS48L3A+CisgIDxkaXYgaWQ9ImNvbnRlbnQiPgor
ICAgICAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAgPHNwYW4gaWQ9ImEiPlg8
L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImMiPlg8L3Nw
YW4+PGJyPjxicj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImUiPlhYWFg8L3Nw
YW4+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDY0OWYyZWUuLmU5Yjk4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOSBAQAorMjAxMy0wOS0yMyAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKwor
ICAgICAgICBbQ1NTIFNoYXBlc10gYWRkIHNoYXBlLW1hcmdpbiBzdXBwb3J0IGZvciBpbWFnZSB2
YWx1ZWQgc2hhcGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE2MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBzaGFwZS1tYXJnaW4gYm91bmRhcnkg
Zm9yIGEgc2hhcGUtb3V0c2lkZSB3aG9zZQorICAgICAgICB2YWx1ZSBpcyBhbiBpbWFnZS4gVGhl
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgY29ycmVjdCBidXQgc3Vib3B0aW1hbC4KKworICAg
ICAgICBUZXN0czogZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBl
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4t
MDAyLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6Ok1hcmdpbkludGVydmFs
R2VuZXJhdG9yKTogSW50ZXJuYWwgdXRpbGl0eSB0aGF0IGdlbmVyYXRlcyB0aGUgbWFyZ2luIGlu
dGVydmFscyBmb3IgdGhlIGltYWdlIGludGVydmFsIHNwZWNpZmllZCB3aXRoIHNldCgpLgorICAg
ICAgICAoV2ViQ29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdCk6CisgICAgICAgIChX
ZWJDb3JlOjpmaW5kSW5zZXJ0aW9uUG9pbnQpOiBGaW5kIHRoZSBpbnNlcnRpb24gcG9pbnQgaW5k
ZXggZm9yIHRoZSB0aGUgc3BlY2lmaWVkIFggdmFsdWUsIHdpdGhpbiBhIHZlY3RvciBvZiBpbnRl
cnZhbHMgc29ydGVkIGJ5IFgxLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZh
bHM6OnVuaXRlTWFyZ2luSW50ZXJ2YWwpOiBEZXN0cnVjdGl2ZWx5IHVuaXRlIG9uZSBpbnRlcnZh
bCB3aXRoIGFuIGV4aXN0aW5nIG9uZSwgb3IgYXBwZW5kIGl0LgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyk6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBs
YXppbHkgY29tcHV0ZWQgdmFsdWUsIG9yIGNyZWF0ZSBpdCB3aXRoIGNvbXB1dGVTaGFwZU1hcmdp
bkludGVydmFscygpLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKToKKwogMjAx
My0wOS0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICB1c2UgTk9NSU5NQVggaW5zdGVhZCBvZiAjZGVmaW5lIG1pbiBtaW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKaW5kZXggODdjZDk4YS4uZTEx
YjM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5jcHAKQEAgLTM0LDYgKzM0LDQ2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgeworcHVibGljOgorICAgIE1hcmdpbkludGVydmFsR2Vu
ZXJhdG9yKGludCByYWRpdXMpOworICAgIHZvaWQgc2V0KGludCB5LCBpbnQgeDEsIGludCB4Mik7
CisgICAgSW50U2hhcGVJbnRlcnZhbCBpbnRlcnZhbEF0KGludCB5KSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBWZWN0b3I8aW50PiBtX3hJbnRlcmNlcHRzOworICAgIGludCBtX3k7CisgICAgaW50
IG1feDE7CisgICAgaW50IG1feDI7Cit9OworCitNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6TWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3IoaW50IHJhZGl1cykKKyAgICA6IG1feSgwKQorICAgICwgbV94
MSgwKQorICAgICwgbV94MigwKQoreworICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7CisgICAgbV94
SW50ZXJjZXB0cy5yZXNpemUocmFkaXVzICsgMSk7CisgICAgaW50IHJhZGl1c1NxdWFyZWQgPSBy
YWRpdXMgKiByYWRpdXM7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPD0gcmFkaXVzOyB5KyspCisg
ICAgICAgIG1feEludGVyY2VwdHNbeV0gPSBzcXJ0KHJhZGl1c1NxdWFyZWQgLSB5ICogeSk7Cit9
CisKK3ZvaWQgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OnNldChpbnQgeSwgaW50IHgxLCBpbnQg
eDIpCit7CisgICAgQVNTRVJUKHkgPj0gMCAmJiB4MSA+PSAwICYmIHgyID4geDEpOworICAgIG1f
eSA9IHk7CisgICAgbV94MSA9IHgxOworICAgIG1feDIgPSB4MjsKK30KKworSW50U2hhcGVJbnRl
cnZhbCBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKK3sK
KyAgICB1bnNpZ25lZCB4SW50ZXJjZXB0c0luZGV4ID0gYWJzKHkgLSBtX3kpOworICAgIGludCBk
eCA9ICh4SW50ZXJjZXB0c0luZGV4ID49IG1feEludGVyY2VwdHMuc2l6ZSgpKSA/IDAgOiBtX3hJ
bnRlcmNlcHRzW3hJbnRlcmNlcHRzSW5kZXhdOworICAgIHJldHVybiBJbnRTaGFwZUludGVydmFs
KHN0ZDo6bWF4KDAsIG1feDEgLSBkeCksIG1feDIgKyBkeCk7Cit9CisKIHZvaWQgUmFzdGVyU2hh
cGVJbnRlcnZhbHM6OmFwcGVuZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4MikKIHsKICAg
ICBBU1NFUlQoeSA+PSAwICYmIHkgPCBzaXplKCkgJiYgeDEgPj0gMCAmJiB4MiA+IHgxICYmICht
X2ludGVydmFsTGlzdHNbeV0uaXNFbXB0eSgpIHx8IHgxID4gbV9pbnRlcnZhbExpc3RzW3ldLmxh
c3QoKS54MigpKSk7CkBAIC00Miw2ICs4MiwyMCBAQCB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxz
OjphcHBlbmRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCiAgICAgbV9pbnRlcnZhbExp
c3RzW3ldLmFwcGVuZChJbnRTaGFwZUludGVydmFsKHgxLCB4MikpOwogfQogCit2b2lkIFJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKGludCB5LCBjb25zdCBJbnRTaGFw
ZUludGVydmFsJiBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9pbnRlcnZhbExpc3RzW3ldLnNp
emUoKSA8PSAxKTsKKworICAgIGlmIChtX2ludGVydmFsTGlzdHNbeV0uaXNFbXB0eSgpKQorICAg
ICAgICBtX2ludGVydmFsTGlzdHNbeV0uYXBwZW5kKGludGVydmFsKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgSW50U2hhcGVJbnRlcnZhbCYgcmVzdWx0SW50ZXJ2YWwgPSBtX2ludGVydmFsTGlzdHNb
eV1bMF07CisgICAgICAgIHJlc3VsdEludGVydmFsLnNldChzdGQ6Om1pbihyZXN1bHRJbnRlcnZh
bC54MSgpLCBpbnRlcnZhbC54MSgpKSwgc3RkOjptYXgocmVzdWx0SW50ZXJ2YWwueDIoKSwgaW50
ZXJ2YWwueDIoKSkpOworICAgIH0KKworICAgIG1fYm91bmRzLnVuaXRlKEludFJlY3QoaW50ZXJ2
YWwueDEoKSwgeSwgaW50ZXJ2YWwud2lkdGgoKSwgMSkpOworfQorCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2hhcGVJbnRlcnZhbHNDb250YWluKGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZh
bHMsIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBpbnRlcnZhbHMuc2l6ZSgpOyBpKyspIHsKQEAgLTE2NSwxNCArMjE5LDM1
IEBAIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5
MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFsCiAgICAgfQogfQogCitQYXNzT3duUHRyPFJhc3Rl
clNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2lu
SW50ZXJ2YWxzKGludCBtYXJnaW4pIGNvbnN0Cit7CisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50
ZXJ2YWxzPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMoc2l6ZSgp
ICsgbWFyZ2luKSk7CisgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgaW50ZXJ2YWxHZW5lcmF0
b3IobWFyZ2luKTsKKworICAgIGZvciAoaW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3VuZHMo
KS5tYXhZKCk7ICsreSkgeworICAgICAgICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2
YWxzQXRZID0gZ2V0SW50ZXJ2YWxzKHkpOworICAgICAgICBpZiAoaW50ZXJ2YWxzQXRZLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgbWFyZ2luWTAgPSBzdGQ6
Om1heCgwLCB5IC0gbWFyZ2luKTsKKyAgICAgICAgaW50IG1hcmdpblkxID0gc3RkOjptaW4ocmVz
dWx0LT5zaXplKCkgLSAxLCB5ICsgbWFyZ2luKTsKKyAgICAgICAgaW50ZXJ2YWxHZW5lcmF0b3Iu
c2V0KHksIGludGVydmFsc0F0WVswXS54MSgpLCBpbnRlcnZhbHNBdFkubGFzdCgpLngyKCkpOwor
ICAgICAgICBmb3IgKGludCBtYXJnaW5ZID0gbWFyZ2luWTA7IG1hcmdpblkgPD0gbWFyZ2luWTE7
ICsrbWFyZ2luWSkKKyAgICAgICAgICAgIHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbChtYXJn
aW5ZLCBpbnRlcnZhbEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKK30KKwogY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZh
bHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAogewogICAgIEFTU0VSVChz
aGFwZU1hcmdpbigpID49IDApOwogICAgIGlmICghc2hhcGVNYXJnaW4oKSkKICAgICAgICAgcmV0
dXJuICptX2ludGVydmFsczsKIAotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLXpl
cm8gbWFyZ2luLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NjM0OC4KLSAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworICAgIGlmICghbV9tYXJnaW5JbnRlcnZh
bHMpCisgICAgICAgIG1fbWFyZ2luSW50ZXJ2YWxzID0gbV9pbnRlcnZhbHMtPmNvbXB1dGVTaGFw
ZU1hcmdpbkludGVydmFscyhzaGFwZU1hcmdpbigpKTsKKworICAgIHJldHVybiAqbV9tYXJnaW5J
bnRlcnZhbHM7CiB9CiAKIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6
cGFkZGluZ0ludGVydmFscygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmgKaW5kZXggZjE3OWE3MC4uMjFhMzk2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNTIsMTkgKzUyLDIyIEBA
IHB1YmxpYzoKICAgICB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJ
bnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAgICB2b2lkIGdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsK
ICAgICBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFkoaW50IG1pblksIGNvbnN0IEludFNpemUm
IG1pblNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3Q7CisgICAgUGFzc093blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBtYXJnaW4p
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cnZhbExpc3RzLnNpemUoKTsgfQorCiAgICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGdldElu
dGVydmFscyhpbnQgeSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8
IHNpemUoKSk7CiAgICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeV07CiAgICAgfQorCiAg
ICAgYm9vbCBjb250YWlucyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgYm9vbCBnZXRJbnRl
cnZhbFgxVmFsdWVzKGludCBtaW5ZLCBpbnQgbWF4WSwgaW50IG1pbkludGVydmFsV2lkdGgsIFZl
Y3RvcjxpbnQ+JiByZXN1bHQpIGNvbnN0OwotCisgICAgdm9pZCB1bml0ZU1hcmdpbkludGVydmFs
KGludCB5LCBjb25zdCBJbnRTaGFwZUludGVydmFsJik7CiAgICAgSW50UmVjdCBtX2JvdW5kczsK
LSAgICBWZWN0b3I8SW50U2hhcGVJbnRlcnZhbHMgPiBtX2ludGVydmFsTGlzdHM7CisgICAgVmVj
dG9yPEludFNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsTGlzdHM7CiB9OwogCiBjbGFzcyBSYXN0
ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CkBAIC03Myw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICBS
YXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMpCiAg
ICAgICAgIDogU2hhcGUoKQogICAgICAgICAsIG1faW50ZXJ2YWxzKGludGVydmFscykKKyAgICAg
ICAgLCBtX21hcmdpbkludGVydmFscyhudWxscHRyKQogICAgIHsKICAgICB9CiAKQEAgLTg4LDYg
KzkyLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGlu
Z0ludGVydmFscygpIGNvbnN0OwogCiAgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBt
X2ludGVydmFsczsKKyAgICBtdXRhYmxlIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9t
YXJnaW5JbnRlcnZhbHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="234707"
          type_id="1"
          status="-"
          setter="achicu"
    />
    <flag name="commit-queue"
          id="234628"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212815</attachid>
            <date>2013-09-27 09:31:53 -0700</date>
            <delta_ts>2013-09-27 19:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>16020</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzM0OTVlLi5hY2MxNDUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA5LTI3ICBEZW5pcyBOb21peWFtYSAgPGQu
bm9taXlhbWFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS11bV0syXSBMb2dnaW5nIG9mIGFj
Y2Vzc2liaWxpdHkgZXZlbnRzIGlzIG5vdCBkaXNhYmxlZCBiZXR3ZWVuIHRlc3RzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWlt
YWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjJjNjBkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBl
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4t
MDAxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgcmVxdWlyZXMgdGhl
IEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVl
IHJvdW5kZWQgcmVjdGFuZ2xlLgorCitYCisKK1gKK1gKKworWAorWFhYWAorUEFTUyBpbWFnZVNo
YXBlUmVjdCgnYScpLnRvcCBpcyAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykudG9wIGlzIDUw
CitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykubGVmdCBpcyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJl
Y3QoJ2MnKS50b3AgaXMgNzUKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2MnKS5sZWZ0IGlzIDMwMAor
UEFTUyBpbWFnZVNoYXBlUmVjdCgnZCcpLnRvcCBpcyAxMjUKK1BBU1MgaW1hZ2VTaGFwZVJlY3Qo
J2UnKS50b3AgaXMgMTUwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdlJykubGVmdCBpcyAwCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3No
YXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdl
LW1hcmdpbi0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTk3
Yjc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0
c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sCkBA
IC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKyAgICBmdW5jdGlvbiBpbWFnZVNoYXBlUmVjdChlbGVtZW50SWQpIAorICAgIHsKKyAgICAg
ICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utc2hhcGUiKS5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChlbGVtZW50SWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICByZXR1cm4ge2xl
ZnQ6IHIubGVmdCAtIHMubGVmdCwgdG9wOiByLnRvcCAtIHMudG9wLCB3aWR0aDogci53aWR0aCwg
aGVpZ2h0OiByLmhlaWdodH07CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9u
KCkgeworICAgICAgdmFyIHF1aWV0ID0gdHJ1ZTsgLy8gUEFTUyBvdXRwdXQgZGVwZW5kcyBvbiBp
ZiBzdWJwaXhlbCBsYXlvdXQgaGFzIGJlZW4gZW5hYmxlZAorCisgICAgICBzaG91bGRCZSgiaW1h
Z2VTaGFwZVJlY3QoJ2EnKS50b3AiLCAiMCIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFn
ZVNoYXBlUmVjdCgnYScpLmxlZnQiLCAyOTIsIDEsIHF1aWV0KTsKKworICAgICAgc2hvdWxkQmUo
ImltYWdlU2hhcGVSZWN0KCdiJykudG9wIiwgIjUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VT
aGFwZVJlY3QoJ2InKS5sZWZ0IiwgIjMwMCIpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFw
ZVJlY3QoJ2MnKS50b3AiLCAiNzUiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgn
YycpLmxlZnQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZCcp
LnRvcCIsICIxMjUiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1hZ2VTaGFwZVJlY3QoJ2Qn
KS5sZWZ0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVj
dCgnZScpLnRvcCIsICIxNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZScp
LmxlZnQiLCAiMCIpOworICAgIH07Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hh
cGUgeworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1vdXRzaWRl
OiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjUwcHgnIGhlaWdodD0nMTAwcHgnPjxyZWN0IHg9JzUwJyB5
PSc1MCcgd2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAg
ICAgICAtd2Via2l0LXNoYXBlLW1hcmdpbjogNTBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1p
bWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTpp
bWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcn
PjxyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPSczMDAnIGhlaWdodD0nMTUwJyByeD0nNTAnIHJ5PSc1
MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgICAgICB3aWR0aDogMzUwcHg7IAorICAgICAgICBoZWlnaHQ6IDI1MHB4OyAK
KyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICAgIGZvbnQ6IDI1cHgvMSBBaGVtLCBzYW5z
LXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorICA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdyZWVu
IGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xlLjwv
cD4KKyAgPGRpdiBpZD0iY29udGVudCIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+CisgICAg
ICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+CisgICAgICA8c3BhbiBpZD0iYSI+WDwvc3Bh
bj48YnI+PGJyPjxzcGFuIGlkPSJiIj5YPC9zcGFuPjxicj48c3BhbiBpZD0iYyI+WDwvc3Bhbj48
YnI+PGJyPjxzcGFuIGlkPSJkIj5YPC9zcGFuPjxicj48c3BhbiBpZD0iZSI+WFhYWDwvc3Bhbj4K
KyAgPC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZs
b2F0cy1pbWFnZS1tYXJnaW4tMDAyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44MjY2NTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2Ut
bWFyZ2luLTAwMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0IHJlcXVp
cmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0
aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS4KKworWAorCitYCitYCisKK1gKK1hYWFgKK1BBU1Mg
aW1hZ2VTaGFwZVJlY3QoJ2EnKS50b3AgaXMgMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLnRv
cCBpcyA1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLnJpZ2h0IGlzIDMwMAorUEFTUyBpbWFn
ZVNoYXBlUmVjdCgnYycpLnRvcCBpcyA3NQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYycpLnJpZ2h0
IGlzIDMwMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZCcpLnRvcCBpcyAxMjUKK1BBU1MgaW1hZ2VT
aGFwZVJlY3QoJ2UnKS50b3AgaXMgMTUwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdlJykucmlnaHQg
aXMgMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRl
LWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZs
b2F0cy1pbWFnZS1tYXJnaW4tMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOGQ3ZjlkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVz
L3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0w
MDIuaHRtbApAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaW1hZ2VTaGFwZVJlY3QoZWxlbWVudElkKSAKKyAg
ICB7CisgICAgICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlLXNoYXBl
IikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAg
cmV0dXJuIHtyaWdodDogcy5yaWdodCAtIHIucmlnaHQsIHRvcDogci50b3AgLSBzLnRvcCwgd2lk
dGg6IHIud2lkdGgsIGhlaWdodDogci5oZWlnaHR9OworICAgIH0KKworICAgIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBxdWlldCA9IHRydWU7IC8vIFBBU1Mgb3V0cHV0
IGRlcGVuZHMgb24gaWYgc3VicGl4ZWwgbGF5b3V0IGhhcyBiZWVuIGVuYWJsZWQKKworICAgICAg
c2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdhJykudG9wIiwgIjAiKTsKKyAgICAgIHNob3VsZEJl
Q2xvc2VUbygiaW1hZ2VTaGFwZVJlY3QoJ2EnKS5yaWdodCIsIDI5MiwgMSwgcXVpZXQpOworCisg
ICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AiLCAiNTAiKTsKKyAgICAgIHNo
b3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLnJpZ2h0IiwgIjMwMCIpOworCisgICAgICBzaG91
bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2MnKS50b3AiLCAiNzUiKTsKKyAgICAgIHNob3VsZEJlKCJp
bWFnZVNoYXBlUmVjdCgnYycpLnJpZ2h0IiwgIjMwMCIpOworCisgICAgICBzaG91bGRCZSgiaW1h
Z2VTaGFwZVJlY3QoJ2QnKS50b3AiLCAiMTI1Iik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImlt
YWdlU2hhcGVSZWN0KCdkJykucmlnaHQiLCAyOTIsIDEsIHF1aWV0KTsKKworICAgICAgc2hvdWxk
QmUoImltYWdlU2hhcGVSZWN0KCdlJykudG9wIiwgIjE1MCIpOworICAgICAgc2hvdWxkQmUoImlt
YWdlU2hhcGVSZWN0KCdlJykucmlnaHQiLCAiMCIpOworICAgIH07Cis8L3NjcmlwdD4KKzxzdHls
ZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmbG9hdDogcmlnaHQ7CisgICAgICAgIC13
ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI1MHB4JyBoZWlnaHQ9JzEw
MHB4Jz48cmVjdCB4PSc1MCcgeT0nNTAnIHdpZHRoPScyMDAnIGhlaWdodD0nNTAnIGZpbGw9J2Js
dWUnLz48L3N2Zz4iKTsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1tYXJnaW46IDUwcHg7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnJz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMzAwJyBoZWlnaHQ9
JzE1MCcgcng9JzUwJyByeT0nNTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAgICAgYmFj
a2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OyAKKyAgICAg
ICAgaGVpZ2h0OiAyNTBweDsgCisgICAgfQorCisgICAgI2NvbnRlbnQgeworICAgICAgICBmb250
OiAyNXB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAg
ICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
IDxwPlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBz
aG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuPC9wPgorICA8ZGl2
IGlkPSJjb250ZW50Ij4KKyAgICAgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj48L2Rpdj4KKyAgICAg
IDxzcGFuIGlkPSJhIj5YPC9zcGFuPjxicj48YnI+PHNwYW4gaWQ9ImIiPlg8L3NwYW4+PGJyPjxz
cGFuIGlkPSJjIj5YPC9zcGFuPjxicj48YnI+PHNwYW4gaWQ9ImQiPlg8L3NwYW4+PGJyPjxzcGFu
IGlkPSJlIj5YWFhYPC9zcGFuPgorICA8L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YzU4OWVjLi4yZWZlY2ZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTMtMDktMjMgIEhhbnMgTXVsbGVyICA8aG11bGxl
ckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3Vw
cG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUgc2hhcGUt
bWFyZ2luIGJvdW5kYXJ5IGZvciBhIHNoYXBlLW91dHNpZGUgd2hvc2UKKyAgICAgICAgdmFsdWUg
aXMgYW4gaW1hZ2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmdpbkludGVydmFsR2VuZXJh
dG9yOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcik6IEludGVybmFsIHV0aWxpdHkgdGhhdCBnZW5l
cmF0ZXMgdGhlIG1hcmdpbiBpbnRlcnZhbHMgZm9yIHRoZSBpbWFnZSBpbnRlcnZhbCBzcGVjaWZp
ZWQgd2l0aCBzZXQoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1hcmdpbkludGVydmFsR2VuZXJhdG9y
OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OmludGVy
dmFsQXQpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEluc2VydGlvblBvaW50KTogRmluZCB0aGUg
aW5zZXJ0aW9uIHBvaW50IGluZGV4IGZvciB0aGUgdGhlIHNwZWNpZmllZCBYIHZhbHVlLCB3aXRo
aW4gYSB2ZWN0b3Igb2YgaW50ZXJ2YWxzIHNvcnRlZCBieSBYMS4KKyAgICAgICAgKFdlYkNvcmU6
OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKTogRGVzdHJ1Y3RpdmVs
eSB1bml0ZSBvbmUgaW50ZXJ2YWwgd2l0aCBhbiBleGlzdGluZyBvbmUsIG9yIGFwcGVuZCBpdC4K
KyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJn
aW5JbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6Om1hcmdpbkludGVy
dmFscyk6IFJldHVybiB0aGUgbGF6aWx5IGNvbXB1dGVkIHZhbHVlLCBvciBjcmVhdGUgaXQgd2l0
aCBjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoKS4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFs
czo6Z2V0SW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6dW5pdGVNYXJn
aW5JbnRlcnZhbCk6CisKIDIwMTMtMDktMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBBZGQgdG9XZWJLaXRDU1MqVmFsdWUgZnVuY3Rpb25zIHRv
IGNhc3QgZnJvbSBDU1NWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcAppbmRleCA4N2NkOThhLi5hYzIwY2U1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMzQsNiArMzQsNDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNYXJnaW5JbnRlcnZhbEdlbmVyYXRv
ciB7CitwdWJsaWM6CisgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IoaW50IHJhZGl1cyk7Cisg
ICAgdm9pZCBzZXQoaW50IHksIGludCB4MSwgaW50IHgyKTsKKyAgICBJbnRTaGFwZUludGVydmFs
IGludGVydmFsQXQoaW50IHkpIGNvbnN0OworCitwcml2YXRlOgorICAgIFZlY3RvcjxpbnQ+IG1f
eEludGVyY2VwdHM7CisgICAgaW50IG1feTsKKyAgICBpbnQgbV94MTsKKyAgICBpbnQgbV94MjsK
K307CisKK01hcmdpbkludGVydmFsR2VuZXJhdG9yOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcihp
bnQgcmFkaXVzKQorICAgIDogbV95KDApCisgICAgLCBtX3gxKDApCisgICAgLCBtX3gyKDApCit7
CisgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKKyAgICBtX3hJbnRlcmNlcHRzLnJlc2l6ZShyYWRp
dXMgKyAxKTsKKyAgICBpbnQgcmFkaXVzU3F1YXJlZCA9IHJhZGl1cyAqIHJhZGl1czsKKyAgICBm
b3IgKGludCB5ID0gMDsgeSA8PSByYWRpdXM7IHkrKykKKyAgICAgICAgbV94SW50ZXJjZXB0c1t5
XSA9IHNxcnQocmFkaXVzU3F1YXJlZCAtIHkgKiB5KTsKK30KKwordm9pZCBNYXJnaW5JbnRlcnZh
bEdlbmVyYXRvcjo6c2V0KGludCB5LCBpbnQgeDEsIGludCB4MikKK3sKKyAgICBBU1NFUlQoeSA+
PSAwICYmIHgxID49IDAgJiYgeDIgPiB4MSk7CisgICAgbV95ID0geTsKKyAgICBtX3gxID0geDE7
CisgICAgbV94MiA9IHgyOworfQorCitJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2Vu
ZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBjb25zdAoreworICAgIHVuc2lnbmVkIHhJbnRlcmNl
cHRzSW5kZXggPSBhYnMoeSAtIG1feSk7CisgICAgaW50IGR4ID0gKHhJbnRlcmNlcHRzSW5kZXgg
Pj0gbV94SW50ZXJjZXB0cy5zaXplKCkpID8gMCA6IG1feEludGVyY2VwdHNbeEludGVyY2VwdHNJ
bmRleF07CisgICAgcmV0dXJuIEludFNoYXBlSW50ZXJ2YWwoc3RkOjptYXgoMCwgbV94MSAtIGR4
KSwgbV94MiArIGR4KTsKK30KKwogdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5kSW50
ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKQogewogICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8
IHNpemUoKSAmJiB4MSA+PSAwICYmIHgyID4geDEgJiYgKG1faW50ZXJ2YWxMaXN0c1t5XS5pc0Vt
cHR5KCkgfHwgeDEgPiBtX2ludGVydmFsTGlzdHNbeV0ubGFzdCgpLngyKCkpKTsKQEAgLTQyLDYg
KzgyLDIwIEBAIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFwcGVuZEludGVydmFsKGludCB5
LCBpbnQgeDEsIGludCB4MikKICAgICBtX2ludGVydmFsTGlzdHNbeV0uYXBwZW5kKEludFNoYXBl
SW50ZXJ2YWwoeDEsIHgyKSk7CiB9CiAKK3ZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRl
TWFyZ2luSW50ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQor
eworICAgIEFTU0VSVChtX2ludGVydmFsTGlzdHNbeV0uc2l6ZSgpIDw9IDEpOworCisgICAgaWYg
KG1faW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5KCkpCisgICAgICAgIG1faW50ZXJ2YWxMaXN0c1t5
XS5hcHBlbmQoaW50ZXJ2YWwpOworICAgIGVsc2UgeworICAgICAgICBJbnRTaGFwZUludGVydmFs
JiByZXN1bHRJbnRlcnZhbCA9IG1faW50ZXJ2YWxMaXN0c1t5XVswXTsKKyAgICAgICAgcmVzdWx0
SW50ZXJ2YWwuc2V0KHN0ZDo6bWluKHJlc3VsdEludGVydmFsLngxKCksIGludGVydmFsLngxKCkp
LCBzdGQ6Om1heChyZXN1bHRJbnRlcnZhbC54MigpLCBpbnRlcnZhbC54MigpKSk7CisgICAgfQor
CisgICAgbV9ib3VuZHMudW5pdGUoSW50UmVjdChpbnRlcnZhbC54MSgpLCB5LCBpbnRlcnZhbC53
aWR0aCgpLCAxKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBzaGFwZUludGVydmFsc0NvbnRh
aW4oY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFscywgY29uc3QgSW50U2hhcGVJbnRl
cnZhbCYgaW50ZXJ2YWwpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVydmFs
cy5zaXplKCk7IGkrKykgewpAQCAtMTY1LDE0ICsyMTksMzYgQEAgdm9pZCBSYXN0ZXJTaGFwZUlu
dGVydmFsczo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50
ZXJ2YWwKICAgICB9CiB9CiAKK1Bhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IG1hcmdpbikg
Y29uc3QKK3sKKyAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IHJlc3VsdCA9IGFkb3B0
UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscyhzaXplKCkgKyBtYXJnaW4pKTsKKyAgICBNYXJn
aW5JbnRlcnZhbEdlbmVyYXRvciBpbnRlcnZhbEdlbmVyYXRvcihtYXJnaW4pOworCisgICAgZm9y
IChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CisgICAg
ICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHNBdFkgPSBnZXRJbnRlcnZhbHMo
eSk7CisgICAgICAgIGlmIChpbnRlcnZhbHNBdFkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGludCBtYXJnaW5ZMCA9IHN0ZDo6bWF4KDAsIHkgLSBtYXJnaW4pOwor
ICAgICAgICBpbnQgbWFyZ2luWTEgPSBzdGQ6Om1pbihyZXN1bHQtPnNpemUoKSAtIDEsIHkgKyBt
YXJnaW4pOworICAgICAgICBpbnRlcnZhbEdlbmVyYXRvci5zZXQoeSwgaW50ZXJ2YWxzQXRZWzBd
LngxKCksIGludGVydmFsc0F0WS5sYXN0KCkueDIoKSk7CisgICAgICAgIGZvciAoaW50IG1hcmdp
blkgPSBtYXJnaW5ZMDsgbWFyZ2luWSA8PSBtYXJnaW5ZMTsgKyttYXJnaW5ZKQorICAgICAgICAg
ICAgcmVzdWx0LT51bml0ZU1hcmdpbkludGVydmFsKG1hcmdpblksIGludGVydmFsR2VuZXJhdG9y
LmludGVydmFsQXQobWFyZ2luWSkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOworfQorCiBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6Om1hcmdp
bkludGVydmFscygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNoYXBlTWFyZ2luKCkgPj0gMCk7CiAg
ICAgaWYgKCFzaGFwZU1hcmdpbigpKQogICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOwogCi0g
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24temVybyBtYXJnaW4sIHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4LgotICAgIHJldHVybiAqbV9p
bnRlcnZhbHM7CisgICAgaW50IG1hcmdpbkJvdW5kYXJ5UmFkaXVzID0gc3RkOjptaW4oY2xhbXBU
b0ludGVnZXIoc2hhcGVNYXJnaW4oKSksIHN0ZDo6bWF4KG1faW1hZ2VTaXplLndpZHRoKCksIG1f
aW1hZ2VTaXplLmhlaWdodCgpKSk7CisgICAgaWYgKCFtX21hcmdpbkludGVydmFscykKKyAgICAg
ICAgbV9tYXJnaW5JbnRlcnZhbHMgPSBtX2ludGVydmFscy0+Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzKG1hcmdpbkJvdW5kYXJ5UmFkaXVzKTsKKworICAgIHJldHVybiAqbV9tYXJnaW5JbnRl
cnZhbHM7CiB9CiAKIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFk
ZGluZ0ludGVydmFscygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmgKaW5kZXggZjE3OWE3MC4uN2Y0ZjlhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNTIsMjcgKzUyLDMyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRT
aGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAgICB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2
YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAg
ICBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFkoaW50IG1pblksIGNvbnN0IEludFNpemUmIG1p
blNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3Q7CisgICAgUGFzc093blB0cjxSYXN0ZXJT
aGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBtYXJnaW4pIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZh
bExpc3RzLnNpemUoKTsgfQorCiAgICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGdldEludGVy
dmFscyhpbnQgeSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8IHNp
emUoKSk7CiAgICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeV07CiAgICAgfQorCiAgICAg
Ym9vbCBjb250YWlucyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgYm9vbCBnZXRJbnRlcnZh
bFgxVmFsdWVzKGludCBtaW5ZLCBpbnQgbWF4WSwgaW50IG1pbkludGVydmFsV2lkdGgsIFZlY3Rv
cjxpbnQ+JiByZXN1bHQpIGNvbnN0OwotCisgICAgdm9pZCB1bml0ZU1hcmdpbkludGVydmFsKGlu
dCB5LCBjb25zdCBJbnRTaGFwZUludGVydmFsJik7CiAgICAgSW50UmVjdCBtX2JvdW5kczsKLSAg
ICBWZWN0b3I8SW50U2hhcGVJbnRlcnZhbHMgPiBtX2ludGVydmFsTGlzdHM7CisgICAgVmVjdG9y
PEludFNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsTGlzdHM7CiB9OwogCiBjbGFzcyBSYXN0ZXJT
aGFwZSA6IHB1YmxpYyBTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hh
cGUpOwogcHVibGljOgotICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IGludGVydmFscykKKyAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBl
SW50ZXJ2YWxzPiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSkKICAgICAgICAg
OiBTaGFwZSgpCiAgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgICAgICAsIG1f
bWFyZ2luSW50ZXJ2YWxzKG51bGxwdHIpCisgICAgICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXpl
KQogICAgIHsKICAgICB9CiAKQEAgLTg4LDYgKzkzLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBS
YXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGluZ0ludGVydmFscygpIGNvbnN0OwogCiAgICAgT3du
UHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsczsKKyAgICBtdXRhYmxlIE93blB0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9tYXJnaW5JbnRlcnZhbHM7CisgICAgSW50U2l6ZSBt
X2ltYWdlU2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggZDA0ZTgwYS4uYmE1NTEyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTIzOSw3ICsyMzksNyBA
QCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSog
c3R5bGVJbWFnZSwgZmxvYXQgdGhyZXNobwogICAgICAgICB9CiAgICAgfQogCi0gICAgT3duUHRy
PFJhc3RlclNoYXBlPiByYXN0ZXJTaGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZShpbnRl
cnZhbHMucmVsZWFzZSgpKSk7CisgICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJTaGFwZSA9
IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZShpbnRlcnZhbHMucmVsZWFzZSgpLCBpbWFnZVNpemUp
KTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJh
c3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKICAg
ICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAw
KTsK
</data>
<flag name="commit-queue"
          id="235079"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>212819</attachid>
            <date>2013-09-27 10:27:18 -0700</date>
            <delta_ts>2013-09-27 19:28:40 -0700</delta_ts>
            <desc>Archive of layout-test-results from webkit-ews-16 for mac-mountainlion-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1001607</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
x4vzw7Pzi6PD128O33ubWFe7Im2Ek0TWXbeBzPrJZJ2ssfY62WxihbB2n+wtjfENqfvd2ghanvvk
JUqoMSSadH33FfxIc/7bd0xnJ+x3ZTNN7UabYFYB9C1O4xIx70asRTGLYtIsat+OkHxxQpx2e8o5
O/7j/PD9nz87spcqpduxiF+xf/w/UEsDBAoAAAAAAFVPO0MAAAAAAAAAAAAAAAAFABwAZmFzdC9V
VAkAA0K5RVK5ukVSdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFVPO0MAAAAAAAAAAAAAAAAJABwA
ZmFzdC94c2wvVVQJAANCuUVSubpFUnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACABVTztDcv1l8oUA
AADpAAAAJQAcAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAkAA0K5RVJC
uUVSdXgLAAEE9QEAAAQUAAAArU4xDsJADNv7inygZGC7GSbYQHRO21SclLtUuZzU/p6DfoHFsmzL
9qRpjUIeNQObqQVYovAPAiK+VGrighdywuvwwIHHW3S8067Vn1y84ELFcSuCxkWrTS2+va2fdTo1
FSRmhjOwcOLsENOq5l1zwkEhQM00tlFXEKX5T+P9Uc/z90X3AVBLAwQUAAIACABVTztDiR8h/pcA
AADAAwAAJwAcAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUCQADQrlF
UkK5RVJ1eAsAAQT1AQAABBQAAADtjzEOwjAMRfeewhcoHtgywwQbiM5u6opITlwljlRuT6BHYENd
LNvf/vrPa1yCkAVNwDlrdjAH4W9xiPhQqZELnsgIz8MNBx4vwfBKL61252IFZyqGaxHMXLRm387b
ZP1IUx/iotn6msOh7UBCYjgCC0dOBpvaNcVtLTioicYWwBREafo1SNJS/fNj0v5EOr/z7rx/xPsG
UEsDBBQAAgAIAFVPO0OBSnetSwAAAKwAAAA0ABwAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8t
ZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUCQADQrlFUkK5RVJ1eAsAAQT1AQAABBQAAAC1zLEN
gDAMRNE+U9wKtGzjwAVZcmxkLOZHomAD6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUbW3LnUNdX
xMBh0cW+juJVbfvl+gBQSwMEFAACAAgAnFA7Q8WfPBgkAgAA9wYAABEAHABmdWxsX3Jlc3VsdHMu
anNvblVUCQADt7pFUrm6RVJ1eAsAAQT1AQAABBQAAACtVV1r2zAU/StDTxuzmuajpXj0IZAwxjoY
S7YOxjCKfe2IyJKQrtJkJf+9V3bmPqSFZMubP67OOffoHmk8mWTfprPvd/PZ20eG4NGz9JHVUEgR
H9ayAMNzo9EZ5XkuLEqjPUcn8lUNOnBvHEJxscRaxQWwsZDTB5ayr+PZjCVM5BgE/WPz6c852yV7
zLVRoQbuFb25Y5e/+fRl/HH6vkFKmKxFBVkhyzKz4HLQyNLLi8Gg4+h0a8N97iSJ19UpUps2Y23z
wPMAvA4oFgo4wgZPhmoQHGhqmZTwNTiUuVDnbH80eoWsNgXwfCl0dcJ2JWwpfOaRMBxL0QXYHbqL
pqrUKc6+gHoA2gk/62xcHxK9MNPK0KbIP//n018iqC1uKSaBVJy/lzZFC+H2PA9L0HFG/yWSnSVr
6WWccdjImBheBqUoPwD6dNBCeqvEth2SsxrQH3YkDo/KUANKHxyU8ajLcGuBpb/Y7S37/SpLv2Oh
U0SEQpqzNjE6tP/Z7v0pebzrMZ1+Ja2NNYPRzVXCdKgzB5UD7+OYs7R/TWI00qQG22CVQnloC2tJ
VboiZQmjXTOBTIqXAummuWa9H40e35sIFL3p/ax3D4vPEnt3Te28uT+oH3CRi6XDFtUK74GYh4PR
4CZhVm5A7XFBx9P0WUSMkXWAuKVVmC/bMCWslJtYSE1dXfZb1FKJ1bZRGgg9a70RTZazUsbadmmE
fIi+70l27z48AVBLAwQKAAAAAABsTztDAAAAAAAAAAAAAAAABQAcAGh0dHAvVVQJAANsuUVSubpF
UnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAQUDtDAAAAAAAAAAAAAAAACwAcAGh0dHAvdGVzdHMv
VVQJAAOwuUVSubpFUnV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABsTztDAAAAAAAAAAAAAAAAEAAc
AGh0dHAvdGVzdHMvbWlzYy9VVAkAA2y5RVK5ukVSdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAGxP
O0MVNTWSegAAALwAAAAqABwAaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIu
dHh0VVQJAANsuUVSbLlFUnV4CwABBPUBAAAEFAAAAI2OQQ7DIAwE73mFP0Ag7aEVvyHEVSwZjIyR
+vwS5QPVXlY7h9kspREnI6mAqqIRPsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5Ph6PSRM0N
pXVuwFQRnoCMBavBTZdJ4l0hwqhpnxoTYEnHf7oqfeTzupcsMS8/UEsDBAoAAAAAABhQO0MAAAAA
AAAAAAAAAAAUABwAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAkAA7+5RVK5ukVSdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAABhQO0MAAAAAAAAAAAAAAAAqABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvVVQJAAO/uUVSubpFUnV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAY
UDtDY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA7+5RVK/uUVSdXgLAAEE9QEAAAQUAAAALY1B
CsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePI
ku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKO
za8xRJuC7GpN1PGavlBLAwQUAAIACAAYUDtDY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0y
LXN0ZGVyci50eHRVVAkAA7+5RVK/uUVSdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgV
hb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/+
+0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBL
AwQUAAIACAAQUDtDYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
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
BwEAACcAHABtZWRpYS9tZWRpYS1mcmFnbWVudHMvVEMwMDExLXN0ZGVyci50eHRVVAkAA4G5RVKB
uUVSdXgLAAEE9QEAAAQUAAAAVc5BTsMwFIThPaeYCyQyTRorYYXEhl1FgQ1i8RpPW6svdmS7gt6e
UlAF+9E3/8LcNpXpq4WF6YdlP7Rt3XZLPByn+YnBMT0n8q3retsM1th33L+uVE5Mj4UTzKfdbqzd
uM7ZxsBRVOMohQ4fe6+EYD4rPuyQyQN8Ri5eFT5gTnGXmPMdlHL4noxxmpXFx4C9BKdMNV4yUY0S
RurqR1qfoYwS/7xBwv+uLFvq6dpw+Y4zk1zwa8VvW33zBVBLAwQKAAAAAAAMUDtDAAAAAAAAAAAA
AAAADAAcAG1lZGlhL3RyYWNrL1VUCQADp7lFUrm6RVJ1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
eU87Q5MDPzpeAQAAFQQAAC0AHABtZWRpYS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWFj
dHVhbC50eHRVVAkAA4W5RVKFuUVSdXgLAAEE9QEAAAQUAAAA1VJNT8JAEL33V0ziodS0DcQzBwM1
JmIxWhMT42Fph3ZC28XdWZB/73YBE0kEPHjwspd9M+9rMtQMXAmG3CAwfjCQhsawmNUYe553eQlZ
h6GWmETtYNTOpZe8PCSjLBlDj+1/pkS+iNm9Imda4cigjmtsS65gOAS/7wcwvfNSuWVxULdtTRZR
kF7WYgNUgB+tcbYgjhosSEQdOnLoaAfyO4m5UQpbrjewIk1W7BFBlkW/9t9izUJxRg06QYOtoBNj
g8Oxq7PGLJuz2U1MpMIGaKlNA4WspQJNDKJBDg93zZUoG2srJp28G1GnssAfCUpkG/K1vs3uJ70g
cFysDG6Xds2NKtGWttYKwZkA7lzIucv9YhCC1aEraeoCZphL+7cLM/Yen9NzcoR+8Ovg//wSDqzv
LzuE74ntrStko1oQ0OI6hFzadTnDVxVHo9iWfKLjf3AsSTqG6Q1kyVPmeZ9QSwMEFAACAAgAeU87
Qy5FPGN1AQAA8AIAACsAHABtZWRpYS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWRpZmYu
dHh0VVQJAAOFuUVShblFUnV4CwABBPUBAAAEFAAAAL2QQU/jMBSE7/kVI3FIS+KkcNkTUtk20kqw
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
0CkOpjuJyL/e5qMyH0O663GqAxV8fRxwQPhEI64bLcHV1eu1Lsxv2L2YaM+ttKFB2z/F7Kp4Czyv
67+Q7eY/mHZoBxCJYCuOWz6dcB352tIFr214RqHqHge+sXPgl4325+BzuzY6NDAaHce+mj3gJi56
as7gTSU/JCjbm4N0LyiWlgUUFCT5Lzoh/ykiLw51fZbBpX2w7tEeN3EY/A3KZ2OYT6DMi5KpvwBQ
SwMEFAACAAgADlA7Q0LFf5ROAQAAZAMAAD4AHABtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUtbG9jYWxpemVkLWV4cGVjdGVkLnR4dFVUCQADq7lFUqu5RVJ1eAsAAQT1AQAA
BBQAAACVks1qwzAQhO96ir3ZDtRvkENxHAoNSYjtUig9KNbaFlFWQVrTn6evnB8aaMHJ2TPzzY5c
omfgTjLU8sDakgdJCny/Zc0GPeyRetCM+/DBIRhbS6O/UaVC5C/5soxrSQcjv7hztm+7RIjJZAIF
DqkIvUcHRlLbyxbh4LBBh1RjKjbVMtbE6Egan3rkKkjXR4FDtThbfPwWIUXvSSKeUCpNLfjO9kbB
NnSRWzQGFUTFpW4k8td1npX5DGJ2st4ttOcC6+GylPGTMxuYxDCdXrsSWD0LMdcujDHcCpp+9zgu
8B911TTXvMH4hzFoTumhhQ3L3h7/2LOFeBNs+6BRqJJR2j+WE7zstLuHnVNrtO8gy0aZV9LzjLZ3
3N0BW8jw40A5PBfE57iHikKAgoIlox+//JaMyys3d7WraEf2g0YbXHRHSr6cwWoOZV6UQvwAUEsD
BBQAAgAIAA5QO0PrAzHyTwkAANgpAABCABwAbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMt
dHJhY2ttZW51LWxvY2FsaXplZC1wcmV0dHktZGlmZi5odG1sVVQJAAOruUVSq7lFUnV4CwABBPUB
AAAEFAAAANVabW/byBH+7l+xiNHKDkLq3ZHk2EViy7ji0iSInbsCRVEsyaW4McnVcZeW7bb/vbNv
FEmRtoxKh9wdLpK4b8/MPPPMLC/vIpHE5wfvIoID+EiIwMiPcMaJOOvkInQmHXjMxUNMzg9mMU1v
36DZHeVUkAD9+wDBP4LcCycgPsuwoCydoZSl5FQNeSwLSOZ4TAiWzFB/eY8C+E6C04P/HujtzCY+
i1k2Q4e94VSNuVc0Jpc0DM24h/3bRcbyNHDs1HAi/y0fpE/gLKYBOgyCQI+FLBVOiBMaP8xQwlLG
l9g3ABOcLShA7pME9fSjJQPjlB0ZicGiO6IARf0a0uFw2LA/xyl3OMloWBrk9JGoM8qHOjEJxQz1
3LF9HlC+jDFsIrAXE8cncawHVjQQEWzQ6/3JYMRBQNNFsVrjM+GR36oRMpBpGgEwUUyP2B3JalaN
x+PTNocTol3hyrh8hLO4WRzGDIMpGV1Eoho9OesCXIBpWhzFwP1UgJm9Z8w2Vjpq34qnVhFY56g4
SrqtMrxcI7smvoxfK3HU4ipt6pQxvLV+B1L1lvf6hPn9EkIM+4Np5A1y5UfdwlZ4nAbEe5B/IgX1
Q8z82y84Ey6YOgtpxoXjRzQOWh0rj7uG9W+e2iwjCYT2zTPnmTOs+2kK9CGOJ6dUaDe2rAO2COrj
2MExXUB+CNZgVkYk23/CaRAT6w6zj3Sh/B0RHdA1n/084zI0EnY9C7EH0cltxODMgjg6gRS8p1BU
eL5Jh0VGHk5rxHTHz8VLuxi5gj3rZjfMWFJzttFIeYb0+qc88UgGbCJldumnFvimlBrWTqcVEbTp
0iSFNpNHo1Et9zajX2iM3GisU0CnQSH6hgeGnk0U0XArdBoawSoZrkxsFBxdKFrd8oRILTOZnRKm
caBVE8Maa0glV2GRo7NVDYE/1U+wIyP41pEPNCCa4AWpRGaGBoXDvRhLL8qJPkgDYAAo5huq272O
ymQ0bdXekIRrAZC0gh2LElnK5oalQRhUl0Kwefv0KZmePlXXi52MypRxmKxoL9lBsLEBCkjcvoJM
n0XTfY2u8+WSZQKqbWaYDE5NEpIKjl534Tyci4hpf+uKLBsaYL0Anvo2UmqBmtPSAxRzJBgMlFCT
rZydWGJLucFxfGERNM4e6FqW4HunVt4T6A3Mo0GvqDv1o8HvT55TZHaR0pVjmnC6bEl02XRWxLul
whGZTDvtCQ0cuQN+WjJjZIw+5AKLnH/IPajhRT10ZfY0wpFLBGOxh7PquD06jInK0PVAwh6Lp4U4
DXUem15KfrXdgvze3ha2KceT7dyaFiG9J3ofo8e9qkkuVj2ITrPNKr6ioAVZjWrFno8OTQNyDyL1
hGnrQliC0GSXEaNKeZsYFUslTJOwjaUJzvPY/bNAT9ZA+5rEtgjpXwqs+V5UMPOzAFx0ZpWjaZjh
RCOs5Um1jSjlyEWL0m765gF6TbYytZ7E0DhCz7xFYTqZXq3pZWpyy6ByRHWsaCODzfa42hybPbT7
Njnc2hIEVmf1Me+tKNjrTq88emNrZO1ecvLWCtomzCeSpHTj4QnWvXxZc1OWwePTFpUx9ssWjDcd
ru2wed1rmhJjj8QzHEKGvdlYrp+rTVRBTsHUV+g/6NXpQVGIS+W7vjrG0KGz0BEPS9K41atWRGZi
7ZobkVgJZNGMYtmMttSow4RwbhuPVj83haWUHddKqLcphVBioCG6oyznF8UTaGYfSXpRKpZNdd62
HPUSUy4uUsuBtYoJVtvNb8NEIyJDWwO3QmOoAT0OETInKuXCtH0tTV+5zno5ZFVa1h1b3wN6NwuZ
b3zIciH1opx+XpyrSmKGgC8hYIEK1reGlIul2gV6mJuI6JO6ptIuAL+0QTAkYMzTsw3VOLqjWGqy
+JvhBID1MraCgEMnEGFYa5oiKlzZBBV2jMamiy9aEfPbqoNsZOV/vWoRta916j1+QgO4ZWnDZIC4
vXw3VBTowxjHd+B78ACp1ZXyTW+j1Dl9d6hbpvXLD1v9G2JweHl5WUrpw8nV5dX4qlGfoLlsZvF8
Pm9CPSPJEhSqEnzTptVmuvAVkFYyfz6d9CZGt/yY4Oxfqj2wVwH5RF2bIjnlXde8eXvH/YwuIaaZ
f/YqEmLJZ90u/o7v3QVjC1i0pFxSVz3rxtTj3e+/5SR76PbdkTswP1xoLd3v/NU57Kv2O0fVnX0W
EEfGkKxg3l8g0jKYZ6NJaQmAMi8LPRY8wAfkA+DGnJ917E1AvjOM+ufdXyCeoFndSyxwd/7rdfdX
4v1Mhfn4kNM46H6Fuos56QJTwJ2OIKCwcH3PY8G7CQko7t7BxZo5kvgZi7nj46XqrWTd8G8hWXMH
ekog4yMJHGhochy74l4AzH4VXenlUGdzRF3a257LyzwC3tXG5TUGVd8AmUmgLamdpe7/66aic/7n
1OPLU/AoTDqvTIVcL0/sN86Bet05v3r/148zdEPBRZKGaIUhi4Br8gqUMkHDh0vIOikeHogG8JwE
ZjMIIJhgP8rmlPjYOTfDZu6LncUjuIo8769nfdXfwk2DdjfdAJ20HFraIGh5QBs9QUVMOJL8AYkk
CQxkBBVMcuve+v/MGGxhxrDdjN2CGW4BZtQOZv7L/NPNkY9Tqe4iAtFcRMe7RTjaAuH493LXeAsw
J+1gXr9+ja5lHYcinnPVDqaLXJZs6DxCkpHUJztm28kWiN+2I/767dORuqGmOOZwMRLfAPYXBRZy
+qOBz4/+0SFp55/Hx7+rsOi3Rs8L8Xrek656u4WrntBr5a+foB5K7eURy+NACq7q+EFyUefaKk3n
RSHeFv5kB/Dnf/8yv7iZX6IjVVE/Ui5MmVTvTy90x4nOzsrWHKPPP/8hC8p0C49NtpeWPxLX+70d
sOVK/l8qVTHhjrWuqqqONiXAZ2gH90L9fn+n3JcWbfBdgm9i+m4MGOzAgP0gG+4AGWgIg1Zre6a8
h8sTOvpK9BU8IMHxnogz2j9xGmzZH4/GPyyPTnaA7Cai2UtoNE8XMeURurjYE33e7p8+JRv2R5vJ
D0ub6S7qFMszEb2ANx8x3GPQjWyB0JEJgPMtVX+PRr40JXxPejTo7Z9Q2xi3N6YN+j8q0waDnXRE
4YuI9i29Tdkq3ROZhvsnkzVgf4TZSYX+dIk+X6Gb+fXNfkDuo+y+5DpR+1CvY9919V/o/B9QSwME
CgACAAAADlA7QyaQpOI0AAAANAAAADwAHABtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10
cmFja21lbnUtbG9jYWxpemVkLXN0ZGVyci50eHRVVAkAA6u5RVKruUVSdXgLAAEE9QEAAAQUAAAA
RkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkClBLAwQU
AAIACAAOUDtDV4h+Jo0BAAD0BgAAOQAcAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRy
YWNrbWVudS1zb3J0ZWQtYWN0dWFsLnR4dFVUCQADq7lFUqu5RVJ1eAsAAQT1AQAABBQAAADtlEtL
xDAQx+/9FHNLd5HiWxA87UbwtYpbRRAPsZ1to3VSkomPb29Sd1XQi1r04i0h//nNg/knR8fAtWIo
VMvakANFJTh/zZobDDeL4IxlLEFTUCLcIXlQRWFsqakCNuAdWmgtztAiFeiyJJHncpKnhaK2UU9c
W+OrepAkw+EQpsgdp4tqFFVeVfguPEtOzyapJkZLqnGZQz4L0pNOYLE8nIe49FIgiatBx4U8dvKg
uZ6jgvKN7mJOA5KqRrt6Cdiq4hb4qX19WrT/MTmHLrvDtDa+KcfaxZ7ySDjQVKZiNA8Vkesx1JMH
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
CwABBPUBAAAEFAAAAL2QMU/DMBCF9/yK25IoOKYDEkKqFEHMUilFbWhZ3eQoBteO7HNp/z1uC+oA
AwNi8enu3n3vyYwx4AurwwY9ryVJLpZzvsTVRNFnuQ1K93yGGqVHruXeBmKEnphDHzR5vsFeSb5V
PVrWWUPOas+eg9a+c4iGbY98hrsBO8K+pB0lRVH8m7HsKEh9tK0qYKOLaygOT1UlIBaiabNOmiEa
5F/9O67eFJ1J3Ys0a4zr2WOTHf3KExvGMMoTJp4exF0rashO47mOGldupQ5RMoZ0lOYwnSRFux9Q
OGfdDZhIB+XBWAJpwK5e4+9AhocjScqsIf0OS3/OcFle/SZFlP1hDtHUML2HVszbBJIPUEsDBBQA
AgAIAA5QO0N8WdYQegAAALoAAAAzABwAbWVkaWEvdmlkZW8tY29udHJvbHMtZnVsbHNjcmVlbi12
b2x1bWUtZXhwZWN0ZWQudHh0VVQJAAOsuUVSrLlFUnV4CwABBPUBAAAEFAAAAHMNc/UL0UhOzCvI
SazU5HIFc8tTk7IzS9JKc3KKk4tSU/OSMxLz0lM1uYJC/TTKMlNS8/XK8nNKc1MVbBUMgXoiAlyd
Q1xdFDQgosE5QCVFemWJOaVAFbYK6obqmgr+3th0G+iZEqEfqApigqufi4K/m0KIa3AIFxcAUEsD
BBQAAgAIAA5QO0NTfTKfOggAAO0eAAA3ABwAbWVkaWEvdmlkZW8tY29udHJvbHMtZnVsbHNjcmVl
bi12b2x1bWUtcHJldHR5LWRpZmYuaHRtbFVUCQADrLlFUqy5RVJ1eAsAAQT1AQAABBQAAADtWd1u
47gVvs9TEAlazywi2Y7jjOMkLjqJgwLbzi426W7vCkqiLE4o0UvSjjNt372Hf7IkS7aLGbRYoDvY
sUQekt/5/Q41t5nK2ezkNiM4gZ+cKIziDAtJ1F1vpdJg0oNhqd4YmZ1MGS1eztF0TSVVJEH/OEHw
nyIbFSQk5gIryospKnhBbsxUxEVCRBBxpXg+RcPlBiXwTJKbk3+d2O3cJjFnXEzR2WB0bebCR8rI
A01TNx/h+GUh+KpIAi+aTvSf6kH2BMkZTdBZkiR2LuWFClKcU/Y2RTkvuFzi2AHMsVhQgDwkORrY
oSUH5YwegjDQaE0MoGzYQDoajVr2l7iQgSSCppVJSb8Qc0b10ICRVE3RIBz78YTKJcOwicIRI0FM
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
6kWp0nzzej61rNdtV364g/JbUpADpio+c3IE8lyyEMVQxxSpMWdFV5UqqvwqX+6s1eketJr+48P0
6m56jV7BFGG+rqR+b1llWp/QxQVqKRVar9EvP72MHj/sQY+XkWy0H9x8NJ9wc+hgKTMKrRP5SjLb
We7xHuRWvGZ4ydz6xgn9quUUaX0lS+0qf6/zvSKi190PIgopTrVUSP/Zm2IRHYXohXDR6+0JF035
LgF4vNWfBK449MM0hfZO/N75dILqZ7qfXgpB/e8WQYP9IOjXcqlusxH0Oaq7UYV9+mIoGv5/5J3e
6XeLkX1kxOn7a/TLDbqb3t69jJCjFzDf/9AJuYf+znLeNn9T679QSwMECgACAAAAIFA7QyaQpOI0
AAAANAAAACgAHABtZWRpYS92aWRlby1jb250cm9scy10b2dnbGluZy1zdGRlcnIudHh0VVQJAAPL
uUVSy7lFUnV4CwABBPUBAAAEFAAAAEZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlE
b25lIHRvIGJlIGNhbGxlZApQSwMEFAACAAgAI1A7Q2WkDyjsAAAApgEAADoAHABtZWRpYS92aWRl
by1jb250cm9scy12aXNpYmxlLWV4aXRpbmctZnVsbHNjcmVlbi1hY3R1YWwudHh0VVQJAAPRuUVS
0blFUnV4CwABBPUBAAAEFAAAAIWQQU7DMBBF9z7FXzZZ9A5IJBISDRIN7J1kGluknmCPG7g9dqJC
YcN29OfNm99SkAAxWnCxAzF6duJ5CtCeEMzCDvok5EEfVqwbcYrTFHpP5FT1WjXtrtdunvSnGM9x
NIUqSxz4QjhzDAThRCfkBLooknluQBDtZZ1mZk5s58tSZUCbtDarPz68OCyG3M1cxNtEJtiA2VMg
JxmzyS3UvVn5ce6NdiMVSj2/NLv15H6LVOm9OsWOa2xXFP8BsmXS/vZIbnEa0F0tf7eWP7xp7kCD
1dfdLO5YwLN+j7RHfffwqKrmHk812urYKvUFUEsDBBQAAgAIACNQO0OKJLZT4gAAAKMBAAA4ABwA
bWVkaWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1leGl0aW5nLWZ1bGxzY3JlZW4tZGlmZi50eHRV
VAkAA9G5RVLRuUVSdXgLAAEE9QEAAAQUAAAAvY7BTgIxEIbvfYo5KkvpSRNuq2FJjIqJbODc3f6w
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
hyZsvGqBLBjUYcYORjOMaOQTHj3qfyNAXpMmR42kVyBb70BhR83npLzDLmOM3858J3gBiyk8GLKf
nOeQrJMUqsOMiGYEnPE4Y6Jfx7bZ1Ej/zVol6RKqbc0v10CFaCg3+yPjpwKqEgSvBWNvUEsDBBQA
AgAIAEJQO0MG26aH2QAAALEBAAAqABwAbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVk
LWRpZmYudHh0VVQJAAMLukVSC7pFUnV4CwABBPUBAAAEFAAAAL2OMW/CMBCF9/yK2ygyF9MO3ZBS
GiMhUFORCLoe5KRGchoUn1P493WdDpW6dGK5d8On7z1EBL3vrG/Z6ZyEtDmU+sDHTSM/sfSNrfWO
LZNjbenaeUFhJ9iz81acbrluSA/RgkfqkduzXPHznT+w9cI18uXMp/CkcpFEKXWLTjqJJxsbswzw
YfYI6vtkWQIJmLdX81yZHO6GpuYuHU2wWMDkfjKFYvMXidpISO95hPAXFA2lDWyfDmT9aJuPoPoP
OINiWZrdPlBhBaye1tsw4yWHYgWVKasw/AtQSwMEFAACAAgAQlA7QywUumiWAAAA5wAAAC4AHABt
ZWRpYS92b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQtZXhwZWN0ZWQudHh0VVQJAAMLukVSC7pF
UnV4CwABBPUBAAAEFAAAAGWOMQ7CMAxF95zCW2Gp4ACdaFiQKFIzsLaKUS0laZXEQXB6QuiA1NH2
e/9bYYgB6AFxQkizYYsQDGn0ecN2BArg0eUZNSx+XtCbFzwndP9GhtiRo0iDoXcmR45gUdPwPVmO
qGsh5P0mT0q2sEu5YK5XuWmgOlZ76C4bopgFiJ5xwxS/L9/WaTD8yzqs3LWF7gxK9kqID1BLAwQU
AAIACABCUDtDUF8eDOgHAAAgGwAAMgAcAG1lZGlhL3ZvbHVtZS1iYXItZW1wdHktd2hlbi1tdXRl
ZC1wcmV0dHktZGlmZi5odG1sVVQJAAMLukVSC7pFUnV4CwABBPUBAAAEFAAAAL1ZbXPjthH+7l+B
sadVkzEpyZJ8lmSrk7PlaSZpLhN7kn7rgCQo4gwSCgFK8qX97128USRFSur0prnJkcLL4tndZ1/A
u09kyhYX9wnBETxSIjEKE5wLIh96hYy9ux4MC/nOyOJixmj2do1mGyqoJBH64wLBf5LspBeRkOdY
Up7NUMYzMtdTAc8jknsBl5KnMzRc71AE7ySaX/z7woizQkLOeD5DV4PRVM/5z5SRJxrHdj7A4dsq
50UWeW5pfKf+VA8yJwjOaISuoigyczHPpBfjlLL3GUp5xsUahxZgivMVBchDkqKBGVpzUE7rkRMG
Gm2IBpQMG0hHo1GLfIEz4QmS07gyKegXos+oHuoxEssZGvgTNx5RsWYYhEgcMOKFhDEzsaWRTEDA
YPAnixFHEc1W5W6Dz7pHvdU9ZCHTLAFgslye8A3JG1pNJpN5l8EJMabwlV9+hLOE3RwzjkGVnK4S
WfeeWvUIJsA0K4/iYH4qQc3BCbWtlp6WW7PUNgHtPO1HRbdtjtd7ZC8kVP7rJI7eXKdNkzKWt87u
QKrBemdOWO7W4GKQD6qRa+SrR1PDTniCRiR4V38jDfUj4+HbzziXPqg6i2kupBcmlEWdhlXHvcD+
62PCcpKCa69PnGfPcOanGdCHeIFaUqPdxLEO2CJpiJmHGV1BfEjeolZOFNv/hrOIEWcOK0eZUP1O
iHHons9hkQvlGgW7GYU4AO8UzmNwZkkcE0Aa3jEUNZ4f0mGVk/d5g5j+5JS/jImRL/lJM/txztOG
sW2OVGcoq/9UpAHJgU2kyi4z6oAfplLL2um0lgRduLSlQhfJ4/G4EXuH3i9zjBI0MSFgwqBM+pYH
lp5tFDFwa3Qa2YRVUVyr2JpwTKHoNMuRJLXOVXQqmNaALptY1jhFarEKmzwTrXoK7Kl/gh45wW+e
GjCAaIpXpOaZGbopDR4wrKyoFoaQGgADQLFvqKn33it342ln7o1JvE8AilYgsSyRlWhu2RrFUX0r
OFt0L5+S6fxYXS8l2SxTxWGjortkR9GBABQR1r2DTE+i6X+LXor1mucSqm1umQxGTVOSSYG+7cN5
uJAJN/Y2FVk1NMB6CTwNnaf0Br2mowco1ygwGCihF7t0duuIrdINZuzRIWhdfWNqWYp3XqO8p9Ab
2KGbQVl3mkeD3Y+eU0Z2GdK1Y9pw+nxNTNn0tiR4o9KTuQo7YwkDHPk3Yl5RY2yVvhISy0J8LAKo
4WU99FX0tMJRWyTnLMB5fd4dHTOiI3Q/kfIv5WiZnEYmjm0vpV5dt6Deu9vCrsxxtJ3b0yKmO2Lk
2Hw8qKvkY92DmDA7rOJbCrkgb1CtlPnFo1lEdpCkjqi2L4QVCG162WRUK293NotlCqYN2NbSBOcF
fHcS6O0e6NCQ2BUh80uDte9lBbM/S8BlZ1Y7msY5Tg3CRpzU24hKjDx2ZNpD27xDr8m3ttYTBo0j
9MxnFKbb6fOeXrYmd0xqQ9TnyjYyOmyP682xlWHMd8jhzpYgcnnWHPOdSwruujOozr66Gtm4l9x+
cAntEOaRIKnceESKTS9fzbkZz2F43pFlrP6qBRNthxs9XFwP2pYwHBA2wzFE2PXBdjOuheiCnIGq
l+hf6HJ+URbiSvlu7mYYOnQee/J9TVpFXXYisgsb19yEMJ0gy2YUq2a0o0ZdpUQI13h02rnNLZXo
eNGJ+pxSCCUGGqIN5YV4LEegmf1CssdKsWyr867laJaYanFRuRxYq5ngcrv9bZlok8jI1cCz0Fhq
QI9DpIqJWrmwbV9H01ets0EBUZVV846r7xHdzGIeWhvyQqp8UQ2/gBW6ktgp4EsMWKCCDZ0i1WKp
pUAP85oQc1LfVtoV4Fc6SI4kzAVmtaWaQBuKVU6Wf7ecALBBzrfgcOgEEgx7bVNEpa+aoFKP8cR2
8WUrYn+77KAaWfX/oF5E3WedZo+f0ghuWUYx5SDhLt8tFQX6MC7wBmwPFiCNulK96R2UOm/oj0zL
tP/44ap/iw+unp6eKiF9dff89Dx5bs1P0Fy2s3i5XLahnpF0DRmq5nzbpjVW+vAKSGuRv5zeDe5s
3goZwfk/dXvgrgJqRF+bErXkvm+/vN2LMKdr8GkePlwmUq7FrN/Hn/HOX3G+gk1rKhR19Vif0UD0
P/9ekPy9P/TH/o394UNr6X8WlwuQq+UtUF1yyCPiKR+SLaz7K3haOfNhfFfZAqDsx8KAR+/wgHgA
3FiIh567Cahvhslw0f8V/Ak5q/+EJe4vf3vp/0aCH6i0j48FZVH/F6i7WJA+MAXM6UkCGRau7wWT
op+SiOL+RkvxoK/ytOm9bUIyLwWmRB40MAVmvtxJgDWso6l8DOodzuhLete4urwjkUA3HTWWqJsL
qn300R9IoZC6Ffq6v+8heosbsB3ML2qrIKpPr4HK3FvYGbA7wPifwYzOADPqBrP8x8/Lx9flE/rL
hkaE+8Y36OEB9Ya9b9CnH74u2vEZaMfno9Wc0WBlXpBWvPpRRV0JUuULPX2o23mMMjfek4yqrDtq
nckZ1vlzFoj1/CwTaVe+QPaEi9sGQxHTlhr0vrmHK/pC20q9nLRYXWfI1qcVtouOantEE36GWc7X
FlqHxfV9Xz30O/r08WX5y6+wCziOnr/7/kc7+f+kztdKRrdnGPD2iAF/ekKfntHr8uX160b6hzNw
fTg/Sf43vmg8dFmDaqL/Yew/UEsDBBQAAgAIAEVQO0PyMjZROgIAAGYOAAArABwAcHl3ZWJzb2Nr
ZXQud3MubG9nLTI3U2VwMjAxMy0wOTU2NDAtZXJyLnR4dFVUCQADEbpFUsi4RVJ1eAsAAQT1AQAA
BBQAAADtlltP2zAUgN/7K454odVCnEtpad52Kdu0iU0tgocKWU5yQq06cXbs0mW/fm4pI2gwTdPg
KXKkyDf5yznHn7KIgjA+CiZH0RjCIAnCJI69cRxdwWI6m32ZXQHnpZAV5/4lpnOdrdDOkW6QEph+
z7C2UlcgK6hJZ2iMrK6B8NsajYWCdJlA/zCMxn7gWnjowSiIg2DQOyeRYSqyFfRL7ZYSZlhZyIRS
oISxg6QHcCoVwgGbN8ZiyT7LlAQ17JREiRtNK8O+NnapK7+4G2EXSMbxGBb5Y6Zkyurdim2vje7X
zYEHSlYIxyeR18Lne3Zul4QidxAABlXhF7KSZnk33d+/PciUdOBc5Dm57YMXoo6jeEf9kOqednY7
8EFUuUJ66yJqnkL2djta4BdarUs07J2wgk0v58zl/ZO07FxrZdg8I1lbwzaYrqStG2aXkvJakG1Y
qXNeN27G7KiZse58oXSFLfTR6DbgnDt2y/kvaA/+QLj9/pcK7mgYPk64L4L+i4FMhq0s32NsCne4
X6j1c7Dc5q5da8G+1rbn3UPw7ULf4DbDqn8jcbPYkLTIdVEYtEm78ypdFwUSN/IHXg16SKSdPhZT
okrD1jVvSK/QXUJZY6+3+F1Jx158PHFKunw9O/t49v4xKT0s+QTCnXL+vcl65AuqBRxBpnOE4TYM
7l4YcY1wqimVeY7VE7Cj4H/6M0n25gwdQuCezp+dPzt/dv78W38OAy88mTzfL91wEndK6pTUKalT
0uNK+glQSwMEFAACAAgANFA7Q7kfrQgJAQAAjwIAACsAHABweXdlYnNvY2tldC53cy5sb2ctMjdT
ZXAyMDEzLTA5NTY0MC1vdXQudHh0VVQJAAPzuUVSyLhFUnV4CwABBPUBAAAEFAAAALWQzW6CQBSF
95PwDuyNtYQqSsICagWsGGRQCzsZx2GEztCZKbR9n75nf5dtYmN6djf33HznniBN44FxYejGpaHD
jipUUkb0WHDFEa+lBtYNEbs9tvUOF5KjCisNXHPGMFKUM1v/3msAYtTf4gJ+evouQrhRtr6kEy+v
pWfSsSkf4WZZ+6QsrMhQlaOBV1sDGgDBf6d4SLa9dt6WszSfJ8KL2RG2BMeRjFbObzd371IllVR2
gjPyMZ4R9mdG0EG4zlF6EyzUU/NyKFae5bvMrLrQOQl2bjGTnagX6XBUHMOef1+6G2s/qiP2PCWZ
c+K3f6ANp9lAdeEMXjVtJtxbVcWcjklCD+Mv2htQSwMEFAACAAgAnFA7Q8owPWybJQAAXqAAAAwA
HAByZXN1bHRzLmh0bWxVVAkAA7e6RVK3ukVSdXgLAAEE9QEAAAQUAAAAzT1rd9u4sd/9KxBnW0q1
Hnb2cbeWrZzUcTZu8zqxt929XteHkiiJMUWqJOVHt/7vd2YAEE9SUpKec/e0SQQCg8FgMDMYDAZH
T16+P7n49cMpm5eLZLhzVJQPSTTcwV/s9x0G/82jeDYvD9nB/v4fBjuPO6Ns8iA+LcJ8FqeHbH9A
P6dZWnan4SJOHg7Z6yi5jcp4HHZYEaZFt4jyeKrVK+J/RwD0YFnywklcLJMQGnbvotFNDICS6J5/
0ku6kziPxmWcQbfjLFkt0oEXS47mkP3JQLWbRFOo9N1SQBalZbYUhdBwfiCa6Gh+J9HUWxz0vo8W
1GZp9jLKyjJbAF1634oKZX6YZmWrl0fFKimLbp7dtVk5Ec3u5nEZdYtlOIa+0uwuD5dNrQ6ncV6U
3WzaLR+WkR9GvggTDmNCMMw2bdGojO7LbpnD/EyhxSFLsrsoH4dFJJqKastwMonTGYx4eV/RqZwf
Rotl+dBBjOhfdu19UU+Uy2lcASsAOyQwjYhpGolZXmT/9n0DEL0xTEUEs4F/h3Ea5RZI5AzATkwR
zIBkB8GZ2W2UT2FwhyxclRmHCVSRtANGyvJDNsvDB4dDCyBkEuW8jTYRoukoHN/M8myVTroCCk2E
Wz2e5uEi6jCzcDGT0xdPgKDsx/19yZtyCD/wIgve5SQsw250vwzTSTQ53p2GSRHtXglo1WKqSPi0
zLJkFErCLbMi5otoGt9Hk4E5cdX6IDZ/Jn/lHKHqN3FPmMQzAEPfBjUkyWejsPXs++87TP2x3/vx
+7ZokOWTKOfcVWRJPGFFDMIj179283ASrwq1THt87N3RCtZaum42NBKDyLEofFCNyMVE8URF0zhN
gAW7oyQb3wxMOci+hYb7kusUkfMoCcv4ViAyXuUF4jaJpiHMp2DxVZ4Di5scmePU6F/9o+YUstsY
Vbs4Wc7khyMY5UoSiGa7K4QWFnBpeSAXPInU3jQJZ7VsRnWoyiya+Oty8nEUC+hyGU26+SpNgfO6
UZgnD91FVBThLDJGd0ik5XPydLKva5w7MY2jLJmsnaqKx781F5UjWhpgNHGJZIXvasFbgkD/UkkD
2YMYJqwF1KSJXGxANb6osyXOY7GBLJJVgbjpyuqlGodHxcmVUdHtmVQBHMJ9t5iHE5Ss+EH+/+mP
P/5o6m5SMoLrMlBSMaiL3rPCFSTIc4NGNhViSCGx8bCTcBQl9vyKicW5mseTSZTqJFpmMWievBvd
wuordHUlBiG1XE+HLYglrI1vJaI13Gorm7pRSaGIvS1Baifdf2fZwmFcr2inydzXV/W+IRT//MMf
TP492HdmXhU5thrwgf0FtXlVXE/G+mF6ZP+z/U0Etc6UIIvZ91CHNNA+aB3+v97/oO6pJaQyG7UB
mkaGHJ9Z6qI1SkJbS1SMq6wSznjr2dmPbq8A2QBSNF6A1GzgB1ML+XuXSpLMaF1JfqfMkJruhpoA
a1QxPj7kwEDHAf2I2yTlcQEvYHFQR3lYcHX5VKgYUGtFWdiG5/eOhpfIH/XFBodvdFgMptMqBU0J
BidAo8LdYVULqo3zeFkOd27BdJpdF2WII5muUtqCsFmSjcLkHEtb7R2ORTxlrSeiqrSz8T9RxI61
MlL1MKj5BQ7jkF1edYxvMMqbhw9hUdR8n4fF67Jciq9kAzoVzpCyr8I4WYHCqat0ARK4sc4iLgqg
7UdugbqY5PLD74/mh2KerZLJRTabJRGhAnXKfGWBn0LfAL5mmDTJ/4jL+XkJ7JF7KsSLKFuVNc3V
BBukrOo87qg/86hc5amaauC1arZfvHx5/fH0/Oc3F+etOF2uSjnlBhtIKx0mmioJthN8JDmKFfkY
rPZVklyL+r1PRZYS71lVhwqDooSC03vYCxXws4V0kTggg8aweu6hXywHhVSUZ1jwftoKeoGwtcX4
qEaxGiHAdIaSkdq2zQEvwnI8j4pz2o9leSvNJmC4FOKnzvD4pcdX7FuzUXtHsQh1XV+1VUEe7JiQ
QdhuBNatp8PUh7YM0Z5+P72A3XDNuEDsgoSgj0BTgs9bvYN/6isb0VxDqra1WCqUBy7vpaskMZHN
owVIa4IpkbPQ6fEqJ4DyhNczIcD2/jQcz+nTm7goO7Do0wnsayW8Fznoz94yz8oMHQQ90aAHoj7x
tLLxQw4+I8O2BYwtgfb77NXZL29PDxns62HrPYkzVoazAtFhL35+efaeL+3nFQeD7SDX8ZlgZoDX
iyUfv1HfJUdjsxQ6HlQs4wB5csy6B/qMYRuUenk4tnsAHTMW7NnL8lnQ5q0HRttlHoFxBU0lkOfM
btjv9Xr9gB2yIFBtEU9oJZrvUc9qFTp47zF9wP2gl0TprJyLgT+yCMS0NSpc9S9BoejUMyRBFzov
ywdJPUUzox0RzODZ9YB1kGKg9vh0EHvsQA5kp5pI4I53vGnL6aC3THE6OG5Icb6TIhqD5RFoQkOC
gamjT2ooAJXtQelzdHiF5XF5XwaGZAyOJvEtG0PPxbG9Qxtq38jeHwYwDBorTNVRH74Oj7BI9g+l
XNAHfLKxAEW8VWfImwbmqipRZwLdSGu2OM/IlbUlsrt8d0JGFqr6XdHjEVpsvEqYwldQkdQbI+8S
75KQr+hXsS6NA5o34B6dktoNaQfWAlEIGytDX3EPxZs4vYEJF9/VMlZfe4RiNaOuY0ObYBOmAvGv
VZQ/VOI56PmAaByktcRvJ9wBicwX7Dm9meOsWgr2xlVaNQCTPgmXRVTfRCfjutqClnXIIq4Djdog
wpUN9zG7Q1Gk60EFpwPyDF05QdshnOaElCueE8yGrqi0WgI/4SDIWcntJLd+h9udFgl8bXOsHBey
sFoU2V2viMoXJYgbmNeoFRhO0sBowzHn0InnL8RyuwBbMm9ZWITLJWxNXl+8fSM0Ox6QOAZQnBZR
Xr6YfArHQFSsrWhQU6EVjCIQRdFpivgRVA/XiMawqrENCjCsaaLYzIraqsvXTXyuq1Ze74J8f8dE
YmV1bMRb1HQTLlLAUtQSyL6/rZ7tH3wreLiWy3n9RlbUtOSmzIibFE2jcYmrm2vK+oju+IAn2XiF
Mqw3ziPsg0u0lkZRXlWTZzBInRQDHehJlCRNUCcaVKzbA3FxDsMS82SQ/AWYcdRC2BADpXN5/0jX
oraldFbCArnRuQPtH11NIQRaxdK1lbMW7UygfH8Afx3p3UlcWLy3Z5tnCZfgWu3L+Mq0wvg3y47x
SWzSe2AwWjtvH/I46wPPzhY/GfqYOpq50oYryKCtsc6juZgNoIbpTDDnAEBqIvxPFz18njuiVXtQ
saEwoQR78SZiM8DbtKUzTy1JqxYuE9Gtb4nwGtWy2Ep61tfTxBLMxt/jIh4l0QvDFNEWQIMQsc/D
EM3dK9YzzBpdXz2p6U9nknEShfkZei5vw6Rl7vINbpB1tEnfoDbuKlfS3+vKGM2btEHPGtql5mxp
bY0SaNBqyDqkDnu2v79fmeyGdiwe0nELf3ZYmM8KOa0A6oJ7ZlqybgsQZfgD2S95aCEBRKMBe+yg
p85inls+SbQFamXL8rqycHXuUW7IY2ZUYv/5T8VAavazNHk4n2d3P1euIen9arUd10IFyydScSnx
U3oJqR34VPimsAL/8E8r5VcYnsatBuJfSLXjYDVGct3YGsDXQHLtF6htmDD+7QJKah9hfFqnw0DL
GHsBTe+APoJ/cwWkJC6xs2tPddilBgTU0VWNuf7/ZxC+DcTaYXCX7c9FhK4Nk+XETD/xejx73IFx
TT6d60lMa+9Jko2pXxA459wP0FbelmmcRIf9Pt/W71t7SACDvTtuzlFYRB/CUrP4fBjbBkUeIbEz
pKIfe1lBCUzZEVpp87JcAqa2e8hTee9Y9fWctYI+UDvLS9r0yw9tdFr0R6C4YENQAySAzlbpTd9w
AemuHx+eG04M7N/7tt8jFJ4ArEWGHkNThPsuFF40LXz/H2i/jvrh8KhA45MDoZP/LB0n8fgGj1jw
d6ucx0V7d8jArP/hzwdHfaxvew5EVfxDn3M+w68QqmFhIlnehbfxLARRQ/EGWNIydjdYqja0HQ1W
289xeNTAl+RfSF4ZHFjRSxutGZVRDdvjBREkqG1MonG4J2gjSSQIrVaDz/9aff1AJiiMczWlv0X0
VOGMIDRdR9acK1DovCJYNO+Oc8isKRhDdiqZg1nzHBdCUZ0KddOSegfMgXG5ChPjZKOQ1QwbHdc+
r0yOofO/nX0I7HUvwZKHm4tQ+t0rlkkM2yim+y2xAQcoq/Nf3sq+3Y3WuG53Y/bz9zBZRVU/1NDY
6GgOKTWMSoBqMIRnlP3xj0Zb/K+mcfDqxdkb6VEFWe20Yzp8ovDF6S8XAXTB7A9nb1/8dLpX+5mc
/bApajt9GDOrLeyagzlV3TrPybNxVBQ/KfH3CrYIyJjvR5+gvs5MJLP4KRn/2DPPD7QPsEm4LujQ
sV1nRptnk73lqpjr/YqtktlIP7d1hLbxETQondVVc4Z6SOnLHZOZzFHxsoHpW9GWkapZlUJ3wYcX
5+eBooZfo6yKqLiONMl2japcEUkDbszwBste88LKUQEHvT07Pz9795OxvNX50iK8iUBG5REr52GJ
+2CMKauCj4iUxTKGP0EPMhC9XbGuy/uSIea4mHW4vMkdzCsTPcsj7l4NI5gn5B4+aNjlqRm8yG6i
tKiXO9wlVxTRBHmOdmbvYQsgiHqWfozKXIktDu1y/4pIaK1O8fGAf6QFHNhiVdWpmilWJEYR52PI
Oa0as5CCVoTxEaUh2LsTBLd2GIYJZ4I2AyO2I7bFWDQKxKdaBE9kqX3Ia9TgBKNxbz5ssZzFygCV
ib+uKSTbVhEmUE8MQ8OoH7cY/8nHF+evg3pSq/iULyLzxdnb0/c/XzR0pAdxbNxVJdws/tDiSTyw
3KMq6S3RbQ7pE2za13r9S1VrPGtbB6GqGDTu/Dg2/k2fZfHEwm/GmzhuU4oEPtYQNGpwBXhfOk7U
SoiLoVrs6rYBrc+nnzewTBos6+GRqMCkyZeKNqQU2HgIbLtWN0DFwv5LkamMSAsdj3MMEfmovNjW
QS55PvGyje7qFnU6ekd4UN2hs0/6jXjsmN5kq6VScNiO/1rfahJPp7IN/ts4FPXLObSReFDB9RKj
YJQRQAPbqxkZb8I7xIrYIy9jW3R8h3U37PHO6OvO6EWYl+6xGvGDUOroSNcESYfpuy1hvTD7oC0I
HINGqVCuRNpuhIpjEhphfNUmyFq2Xs2Cuq3mk0LkybEPC3GqalFUH7Xi0C4YQBQFVVEYqjBZSJTV
N0+bgNaWvMbCa1b/l1LiuJYS21DDIIJv7I8O0uaUu3GTn4MO8nhR4SLPwSxMfFTcaqxigpRsGmwN
a91Ua4aFrstwfOZWhsZ4jeXXyygfV17/bSgm0SDoLfRm0L9A8P+hHbRdcV+7vNWm5YnYm5sbo2ux
abgmrDV//VbUgr9EVVucARzL2EEz9GN2Z+6MjR2ikFpH3F32hdtAMZBAxiEhLVv+veFzjYEobI40
7W7g3Zd/iXxzkZNCSjQ9RtkqvaOizvCozIdSksvCo3Ji+Oa8fkPNxdDmzjBspW3dNe/ZsS/CVwcw
cPu3gicaHAG1bEobw02UkB4m7hyWC6xse0cNr+0Y7T5khKvIxWZjcXQX3uriiAee6ut2w+Ul4AiK
GlA2X/P2HtK//gl4+3OUo0SSgmuVFFjfJc7TZ/UorEOzrw0dGf3fir2+tksa8xCXLY2syq2hn+cT
KMu5IbZLbMi0Zb9JnzA6WIhR0Tfd2x3bddK2JQIubikWqCN7xW8rS9FlYLMYq5dlsm/BtF/ae30H
DXzP/cnPvQ7GSrAbaGnky4fwB6qeoXk+5agyEaFOxz0iLL1DR/9lHkX8X+5WC7+JCAH6JxDXTw5y
22guNymfFVjylcoBVHv2m+iBxSn1Y2/L0+iuEvMCxHPWUgG1xGvQHs8G4S9zDUuTSAK/hBpXvlMF
RXQS0KLmwLlPo2kVjEORuA2sCCmia42TyQ1r8s5JhURHdeMNIwEFo8IYqE/7yIrKekW2iKqAEi7e
MKpEnk1zf7k6J2CP3nAkRDKJi/IkW6Wl8vzImxJNLhtxQlpgtDU0xjPFKr6FSuyp16NTjKNJqk2W
5q19DIWdnMh2hckNm0V9yKlWUKD7zw1mcYI+Pg96oIe20egtT40JsopWJG5pmwIgCWcIeB6Fkyi3
o1xLcbZihA8ZtFft5AQoBxyxAIHQppZzpDW1xsG0aRDVnE0LsMYptGd43KgsyteE5mvYwgmMnWPc
+QFJZP6V7hy09PNli1vloXL7kB2F4rj36a52bN8NQW1VZ9iSyuLgms71oQKd9/ex54EXazlKjlSH
bzzOqlBtuZDzstXWTGHhCaNrDaRkKEzPEQpk8XOA5IrnJ3RdKgroaog6Wrc3FHjlk1+/4O3x+oV+
waGe7KS1qFmlt9QBVDiZsHIeqUOEKV+QIkkNKQikK9ah80eckAIX8zbqWLvgwrFHxyydoxRy9I4r
DHDGAYBVMh9iz6Be5/TDRpV/6PPajmLTzrj55DXE7po6CGt7nND1Z7AW9iQ2TPn3eSaMAdfYkdZs
SdeyWcOG1eiMdo/abk3/2DCXwoZSYR/QTXOMio+AlUlquwu1fs2heSmmbQt811Bxg8ChyA0C/2Xr
j03ZV+/aY0iuAUqHVvzctyLm7587LA4syWZyZFTAoMD2UG1Dq3CxTKKKVvTL49u0ByYOyRqHpqQS
2glgMY6T1SSSl6TF1qBPLi15V3ke5dTXXSQ+Qzs8L6fjclkJZYEEwmVAzWyZDgAfBbxnlXW869kU
8EZ6PZLL1V20Rpd+mVEcTHWt1VKo9lXYAhRhZF6EtY8Q83jR4pccLVi8ECTUMgnHUav/z8vfit/u
w/2rvf9U//qmj9FpIhwW5u6vKxCNIV0rpHReRPcx3kJehCnsWckqpYQEFzjoc1CiZFj+/ggLXCvq
XUPDuzDHqB/h0ytuZ4xSGxzv8kQPlNNDZEnAf+8Oj5ZZ8jDDiBrM2QECcr+zzw7wj+87B/u7sjlI
1uTw6Xg8phvrtzOSLkbnmMfia/R+QN0fYP/bdI+2RTQ5kVFox8qMkyZJiIhZ80VlZCaQjYDzyqvr
Vmq7qkDVad6MvvkGg1sQJ/Kqj4EDbIReG8YcmZLQnJc2XXpQtfTrDKrUdjjpUGmj51ZTUXYvkhy+
PnyMbsH4poAd1ZzfWkL27wkzv2gFuahpS0Ls2QHnRn95oYvr7rWwnW1ILSSwyvxgvGceGghzT+L/
MNjZeCTunH02AR6t+z7+MZsd2vxpjk7tb1DC0iUfbrTam2/xueZi2SVvdGWS6NGzLAGGfzHgxSbJ
KdZOjoDoy2IWleIm3F8ezmiW+V0goRK1K2oEmtzVQu4rgL6hzKt9oFyTJ9yEP5agKp+XWkz6dTo+
us0641tizYsoNkUVbcIOG1khbxgoBTMPq7PMWLFaYnA5S6L7eJzN8nA5j8eENamNFKbLDG694NEf
dfyAHaoxWy6J0brGo5rGRsQeV0ocx+hf6KW8xTjRgo0e+LYANV/PkWFiFtDDy9E45vh4Q2v51ptc
W00j3bdWoxjk+rYjty2dBai2xwqQK/bEitof+NKCKCBHGjLP0adaJZqyjkOx79wrZBVMINmRmMHn
DEHpSS08FxS97XQcHtsNe0RiZX2LaGywxYLQbyBiA9glutLKWIGamw1L3q0WI1OHVktyC1lRIwUu
9T7E9tWRZYYMsDDnHtAT9KPoqEd1+MJuIMwBV6XVlXzHWzRJlQEB0fMGxG2FH1VotEo2sGqMDsyD
ZGVE+PRUvQ0h5a60HCtAz1mDhXnIam3fgaUs1U36Y9ZgNOqKqcJHH6VXs3nVGdEex/UBg0L/N8sW
ymTXijDq4+59+jJK6O4Bdyfq368x9durEPkUvv8w4EBv+HbrH2hUQ/GPmB5TK39NFjbWxw/8C8Gb
mO0MMH9iNf0OXABVB2aHDSDcQVGMy4nmJ6+4cpUndTc9667Ga+505ZE2Lt1TCj0rg51xKB+XZG9A
5z2KDWj1f+u2Lv/5W/fqT+3fMPKi3748uLJYnqdZ2QgvqmriREWB/lkXkBZMFMiYg6FFmLad0epN
CZi9PGOb4BsgbbYxsfdnBQx8vXKJwEMxWzpoEYMJRDcKcc/Xu5Nc6rIubMeW94HbZF7xpYdb6xrx
HI44IiuLY+ClgU5nHsXTNBNmY31K7PvBJDGMVcKnxbtEDJVSilwdZoYPoVvUPbiBFfFT+vJ0mLlA
CPuX8XTanCwivMRThW+Od3GZ7F45+T2+zgr2pcK0uU2eJ9jlxt13kSvIGYs2EC2OTo2HXHM2INsV
Xh0cOzWbYowH2hGZj43WSE/tUNkM0mt/TchaEFrbDe3xGYUm//jNw89Dy4QMdiRPoyEt1IrLnMQX
Y2stGh1N8vAOObrtLkb8pK9Aa2Hb1whkvMmJ/3y0xbOUDdwl8hdMBFu4zYF56BNwFBiYMLSPAMiS
pSTOMMsqplOzIApx2mfPWNcctIia/AXUtytq27Vis8yWvm6ECK7v51e7Hy6eVUc+yr+gCB6VU2KL
s/ttMujiwb7Tt8sM3M5/m62K6P2q9Mpluj3UowS80eSCJDFdOTKLenreurNXH1+8PfXY+fLk8Wxq
t2dxwXhCjbsouI3YAlGakA8/m9LRY0WZZmFs+xy9slYTg1pKDoUt+bD09VVPtrdQ1aQbU3QzZmAh
q4vEIm0zWYtMN9LcRguGqlOSNUOumY2vQkgrIZOu6CvMdBVYpY7SQbHnak8v2sDOqHaULgAtos7G
A7M5WGVeMWZ7oD3cUcMha65IcrzfiIQS2o65WRz6xRtRdUyVfwHZZMImsdkGsWUVk9Ssh/qrDvVX
FyoISQ9QLiM1pnyiaGKRsmavaPvAGtmf5/jxJeZx/FRN9mcrssPzO5gkvO3zaXmdVhsDr7nx16Cq
q/UXTianmHMePQ4Rwg2IGsh4gSnbLWmkkhGugwVErAcF+kBB4md2elBQdWpnRArBGosMNSKnxqwm
3gTBQpmUVbr03MijGegIERGFPT7afXKc/xY90BANWXyrZe0kPYYFvUVUhlAdhQIvKObxtDRKxmWe
QEGNzCzuYrwX1OJJYXrTPFuczMP8BPe0or34aQgUfJ2IBXFwaLCZOZjrYpxnSXKRvcJHjyjoymLL
EbDbzcAC+mkzoO9g570xzJvNYH7AxDDAMBvDTTaD+ybcYvxRM0yep+REcd1GQMfNQGWCom3Bls1g
+aXebYFOtwT6ii+sBtiP7kpzmdNnyuJCs9tFpT6gfc0YqenBGn89KpJNfJjIZIxOMKVmKjRjmmi7
PdCJB18RcbkWNyOhKzHNIPpNpUgVmdM87jWd731VSugS5L9KDVukfB1ifB220MAKr87W7Cz8cFTl
shnpqzUonOqpqB1EREfNI2i1N0xc7SLiiGsfEp6kwZuMp9X2k98V5r5OvVmtv6BbRy77OvXk4vqa
XQpVUMdxpeLIdRPemNdMwunwaw4qObp1pCZMvqBdRZWJiMALfsAu7U8ehJ4GJbtJszsWpg/lHKwx
Fo5wo0BQ0DhjZ6WoiomWRuEoeWBjChPHUMCMKQrkDKGCGUxwejv+cRhRJ/CbEtIaIfEW7YTTt6rr
rIoqaV3Q5sd7eD4yMG8aauD1bKkVTCuGpqJhU0S/tKsvJZZXgOZBzQMNvq5krI+ntwkMr4w26tTY
KpsN+LHtK62ZV3a61ep4WcMAiTzK7pvO2o2Hmgz3ggvHdp5rNbY8qBKPJzmtezEuUQMp5/Sgvq12
bBwczZ8N5aInch31oeRomfNHpYxh78pseKeTWAaqQkU9GrzeQ+1DRb9E8xWmQ3OxWHtFEXV9Ez3w
1IUG+8nrMlpRdaWjOsePlmEutrq1SMFGuZtGd/jOIuAE+75ofMNvhP+WUmg9C5yuxFiNSTEw+ZTF
aavqXqC0EV10d5jwbot37ew+hE0LiBKa+Kxd4DXSDFvIln5kTGxjbleN2BHblzmleMHwmOnmtpMC
WGTYU15LA60NrZ7Ksac+aX5YVegRc+JrdQ1srUujGppo8NkI+/EiSW8jJQMeKfyi3uReY3FoHstt
ND/JRtWuweOcZ3cfxR2bqnqzJ3RjP7Xz4LIUFWBJyG7jAi+jcl8nQM3yScFacS/qVQ8NomlwG0d3
GKGIeVczvF/wCcPb78KUDAe8NoVZ+fD0CH7iEYV86pZTuXpJsGedBctJWNJ9C44SHUJ12bN9z6zV
X5k8mYdpg+lmMlw9xRQPKTeub314jnGyldnNKBqjvcPfZaRs/1Gp06Zi7d5GecDxpMnP/cpgVLlb
PnM7bISowmRki+XKMV5s/J0XH+qk3kaiggs+GZyrE18BuYPP+AAH2P8Zno5ms1awBjDwedBZ03tb
eXsa/MWgRkHtF4UDzvS+ah5jdcekaYLNHWW9mlUPXYoISKVsB9ZNbMRHdSXTJNBKqfp7T2/r/iOP
KUwzvK1iear3Iyw8a1728Y9mk2GQcg7aVrh+41pQ52OBykrwu/WUNXuUL7dp47EvjPs2amulTEuF
AurkkwcBBkmvMZkAnvJZmUy74lHjwG6Ac1AnxuRT0Y3JCMUzYfhspR6NgLEpAsP6BIWig40yFPK6
qpFxPRR7u+QfwFy/qmopVlUHQRQWew7oUyBCVJ6V0aLlELHD/nr+/l2PX8aKpw8t7EJsjY3K9CZF
HQXxfU6UMnqXs7oudTWADd0XiIDgvJUh5GpOPsUM0DDAoi2iFgG152OCGpkGZ6eExCltMMHjiZUz
RrxvagS4Y1FlnB/zeYIJ0ufDNzR3zevfNw/dMN/yFkyqXc/nKMNa5ohm6ViIKzcDBJdvPLnaz0X0
Tuw91ku2DbfW3o54FrftZKj5PpGfmnYdJ2s+775pA8bdWV2ZH85caevy0uF5slbodbrwTzpXbjDh
tFWmdBRPRdIiHrHfZipRxaWVu+uqzZzwQ8qAfxvl5UUmafVaJDapmEekirFzH4rcM3WZMptS6z22
zVTx/6XRxovZZZGPNxuuEYTYrntHdANk6yIjtb7fZandvaLjlrSx0+w2d6NSw8jHx80XERpnWTzF
ZbasHkDwze/jdo9hwdr7aAbRGA/7CmT4g4LVc6iUb/onygjgebnYF8fDDsX7wuYDNZswxitR3UJJ
XROx3j9GSbPKMSKvHmv6gNHdHC0KzzQ1joq0N4NWvwna3rihOjr68g3osFXY6jdB23d5TD7S66Fz
3ZuYuve59oZoHcK9DPhMurC8E2FfoadUgO3mtMPr1+HnTHMVzkyTuFEE80bDNjHy5T92cozSazo1
rZqyiT56sn8La+QtGBaG/iRLo0Fv6haJhI//NiLVW3YJviZEW3vRrvIf6qU+O4JCil5md1Zg6ZO6
8L6nJn484lREzMU8p4mswZnXdUc3j9iMyHfQXxc6BTvxNOjYg9O2vyrXk5bPnW5dyfxCdPulA5av
QRA9Q43jAg30ez4p3e7Lpu6GjcLWNUceT5z62rxRsFl6HO0ESAeDuTL0fKzi/qMuFJ/Ici0tjSkN
6wewt+dsI+byqiHPsGS+huikWdJyCYnUUsduZiVBS62GlhLVSKPELyppqZZENiU6L8E28US8Ky0T
FuVGZqbAyGBkfyEoKHulb6PLUdodit/1rXjUt92Mx+0bjb84iaJGJRyMSNJo5F+qS8ykdx7zXDD0
CIaZCaauJwHJHIdeR+RYqXI/GRlUZGIxk3s9aVcedwxDB1Y60OdDqO139AyB3jd76tKBCb5zHNP8
mXOYxjLLklFos4z2BjoY0NHuELZ75EqNO+xTh90wkD0swXyL6ISWJ+MgUeB/YyzhERJUTcYtdOjX
FL/iaZAYvdGtTKz2KbwNizEo7/LwNosnrfauyqxW8+Dh7lB2ybOsse0h175DuDuUn7aHDiTWlYX9
ypmhQneHoip24U6IBoo0LJ8gTX0YbXg7ck0Nj7gjA1et683cZZiv55g2r3gMKl0V0hNwvLvGr7k7
pNwKCrJa/rz7DdAyttKbYuRzEOwOxb6dg1qDAleEx7vI3vIolcUpqNtwgpc/KJMQsbg4Eo3kSSbX
V7sGabXz2O2GYDhT+GKTgI761IHFDrR2KvmxRrzG+C5tvloaSlAmgdo9WgpGCooyWy6RL1Zpivvo
KMyTB2CsosDd4xCFDwa5RPcxzjF97R31l8PdOgS0N3Bso0LPUUaJD+tagj3GT9XphSoqpzfpfbnK
pIAWsF3rp/61m44irtYd1qCpvi/7dAelzxNG0xsYHeZmT9mqf/PpKz8Gc+DDNGP2ysIEuCKgCBil
jbgY3o+GZ0CM94K2nBa9rTkx+IWuTCEq3mxr9QhZT8Fti5PZvOOQjyfUQ9yWKy3D3ucyjfGEljZp
r/CDyJ/akowDGnOK534M1hSpP/56F6PXJ/GtLsTHY5B8btZr2KqsfwBrSwJ7QFRErvgSlTqMmcGe
VoyRnlgwkhTWDkp/uk/fOqtEdcshPuAHyn2Mpg/mENTSsPLCa5FpcHdo/uYpV5ceDSCBAjPAfsSE
SWUKpPGzgmhsFMxQJD2+Zl7Zfba83jTVik6UjdOzuLtHsjzwFNWfbUXtIKuzY29Cmda+vd36/MSi
xh58qyPYjsz84AYbyYiiBhytVxlMpOod/u5GyTlGDdZ2bLxJZLvSavv2bbcaO9+cvNY5xhaUfXRd
ue55r+cIiGIz5JmNe5bInb9HfW5LD3eOnnS77PWLk78dsrt5lNKZ4rUgBT0V2PtU8MAaytk56cBq
DjGWh2H0HVABt6SrtKjyCBe9nTN+7zfDIJxlzEUYfuaPPvOINqltue4AtZ+T6/Khx7pdwIqjx4p8
fLwLVbNVDoKnX61DjhelWpTjoBwTWYrYHe+aOz2sR7k6d/4PUEsDBAoAAAAAAGlQO0MAAAAAAAAA
AAAAAAAIABwAcmV0cmllcy9VVAkAA1W6RVK5ukVSdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAJtQ
O0MAAAAAAAAAAAAAAAAOABwAcmV0cmllcy9tZWRpYS9VVAkAA7a6RVK5ukVSdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAAJtQO0MAAAAAAAAAAAAAAAAUABwAcmV0cmllcy9tZWRpYS90cmFjay9VVAkA
A7a6RVK5ukVSdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAJtQO0OTAz86XgEAABUEAAA1ABwAcmV0
cmllcy9tZWRpYS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWFjdHVhbC50eHRVVAkAA7a6
RVK2ukVSdXgLAAEE9QEAAAQUAAAA1VJNT8JAEL33V0ziodS0DcQzBwM1JmIxWhMT42Fph3ZC28Xd
WZB/73YBE0kEPHjwspd9M+9rMtQMXAmG3CAwfjCQhsawmNUYe553eQlZh6GWmETtYNTOpZe8PCSj
LBlDj+1/pkS+iNm9Imda4cigjmtsS65gOAS/7wcwvfNSuWVxULdtTRZRkF7WYgNUgB+tcbYgjhos
SEQdOnLoaAfyO4m5UQpbrjewIk1W7BFBlkW/9t9izUJxRg06QYOtoBNjg8Oxq7PGLJuz2U1MpMIG
aKlNA4WspQJNDKJBDg93zZUoG2srJp28G1GnssAfCUpkG/K1vs3uJ70gcFysDG6Xds2NKtGWttYK
wZkA7lzIucv9YhCC1aEraeoCZphL+7cLM/Yen9NzcoR+8Ovg//wSDqzvLzuE74ntrStko1oQ0OI6
hFzadTnDVxVHo9iWfKLjf3AsSTqG6Q1kyVPmeZ9QSwMEFAACAAgAm1A7Q7MXOJJ6AQAAAAMAADMA
HAByZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZGlmZi50eHRVVAkA
A7a6RVK2ukVSdXgLAAEE9QEAAAQUAAAAvZFBT+MwFITv+RUjcUhL4qRw2RNS2TbSSrAsYgOstOLg
Jo/Wwokr+5mWf4/jUAlxgRMXW7I937wZCyFQ3hntO3LlUrIsq/u/5T2tLhS/bT+90m15Q5qko1LL
F+NZMDkWlpzX7EpLbFXQd9QqWbKVzdO4isaT6DzLlaYg2bOg/ZYaprbgPSdZln2ruWzYSx2t53OI
k9P8B7K4zucJjo+x2Mh+TeANwbG0DFYdwTwioHB0kkMx3MZ43WJFjQl3z8qpwC8S3NxeTYbB6sG7
iBMUQeb+zx6KCKsH1hlm0wTVv+tqUVdLfEVxhnSWTvHnIhHvdftRt1RuG2qpNHXU8+RZtWRypO14
nE4L1fdk6/A8ki6NpQ5q63yH1mhj4UIm2RHno0d2ZTDAEeeJwXeKN3gDQrVIxY5WT4pFrHysdmz8
4ArlgtLaMJF+OXSU4GPHA3xQ51gTLzydu1/178vJ9NBx+Fpve0j0tMvRmABsGI9Wroesn3QeQ3yW
OHkFUEsDBBQAAgAIAJtQO0NBWgwXfQEAAB4EAAA3ABwAcmV0cmllcy9tZWRpYS90cmFjay90cmFj
ay1jdWUtbXV0YWJsZS10ZXh0LWV4cGVjdGVkLnR4dFVUCQADtrpFUra6RVJ1eAsAAQT1AQAABBQA
AADVkk9v2zAMxe/+FAR2cFzYRoKdexgSDwOaJsWmAQOKHRSbiYnIUipR+fPtJ8tNgWVYkx130UWP
5OPvUaBj4FYy1B6B8chADjrPcqWwTJLk7g5EryFNTFJFGem1SaofT9VUVDMYcfgXVtbbkuMra6Y9
Tj26UqHecAv395CO0wyWD8nCDFOiNHY7UFA05HZKnoAaSIsDrrbERYcNyaJXF1FdvIrS3mLtrUXN
6gR7chTMvmMoTHHP45+lY2lZUIfR0GQwdKVscln28aayMC2u2VfMjcUOaOd8B41RxoIjBtkh55e9
1lZuurBWSa568VItTIN/HbBBDpA/uS/icT7KsjiLrcehaZ/ctJV6E2JtEeISwP0WZh25f5jkEHy4
1njVwAprE/5eYZbJ1++LWzjCOPtn8OM/CR6HstkQcKWwhzDaU4Mmh/Sce1aS1mjFzWAvGJxPPIff
0Z0ZWGRvNUjQeMihNuHCaoa3TN5lMqR9xdN/cDXVYgbLzyCqbyJJfgFQSwMEFAACAAgAm1A7Q4wx
vBXfCAAAUh4AADsAHAByZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQt
cHJldHR5LWRpZmYuaHRtbFVUCQADtrpFUra6RVJ1eAsAAQT1AQAABBQAAAC9WWlv28gZ/u5fMYix
VRKYlGRJjiwfxcYHFthsuli7uwWKohiSQ3FikqOdGVpy2v73vnNRQ4qUhW7QGDE593s/z9CXmSzy
66PLjOAEHgWRGMUZ5oLIq0El02A+gG4hX3JyfbTIafl0ghbPVFBJEvSvIwT/JNnIICEx41hSVi5Q
yUpyoYcixhPCg4hJyYoFGq82KIF3klwc/efIbGc3iVnO+AIdjybneiy8pzm5pWlqxyMcPy05q8ok
cFPTufrxDzInCJbTBB0nSWLGUlbKIMUFzV8WqGAlEyscWwELzJcURB6TAo1M14qBcloPTnLQ6Jlo
gbJxS9LJZNKxv8ClCAThNPUGBf1K9Bn+oUFOUrlAo3Dm+hMqVjmGTSSOchLEJM/NwJomMoMNRqPv
rIw4SWi5rFcb+ax71FvTQ1ZkWmYgmKynZ+yZ8JZWs9nsos/ghBhThMovn+AsYRenOcOgCqfLTDa9
p2bdgAkwLeujGJifSlBz9IraVstA79uw1DoD7QLtRxVua45XW8keSKz81xs4enEzbNohY+PW2R2C
arTamBPuNitwMewPqpETFKpHW8Ne8QRNSPSifiMt6secxU8/Yy5DUHWRUi5kEGc0T3oNq457gPUn
+zbjpADXnrxynj3DmZ+WED4kiNSURtjNXNRBtEga4zzAOV1CfkjWoRYnKtp/wGWSE2cOu48yoWpn
xDh0G89xxYVyjRK7nYU4Au9UzmNwZh04JoG0ePukaMT5bjgsOXm5aAVmOHvNX8bEKJTsVTOHKWdF
y9i2RqozlNU/V0VEOEQT8aPL9DrBd0upjdrz80YRdOnSVQpdJk+n01bu7Xq/rjFqo5lJAZMGddG3
cWDDsytEjLiNcJrYguUprlXsLDgGKHrNsqdIrbjKTiWmNaCrJjZqnCKNXIVFgclWPQT21E3QgxP8
FKgOIxAt8JI0PLNAp7XBoxwrK6qJMZQGkAFEsW+orffWK/PpeW/tTUm6LQAqrGDHGiK9bO5YmqRJ
cyk4W/RPPyfnF/twvd7JVhlfDpsV/ZCdJDsboITk/SvI+avSDN+jh2q1YlwC2nIbyWDUoiClFOj9
EM7DlcyYsbdBZEVoIOolxGnsPKUX6Dk9HKCeo4TBEBJ6sitnZy6wVbnBeX7jJOicfWqwrMCboAXv
BXAD23U6qnGnfTTYfe85dWbXKd04pkvOkK2Igc1gTaInKgPJVdoZSxjBUXgqLjw1plbpYyGxrMTH
KgIMr/EwVNnTKY5aIhnLI8yb4+7oNCc6Q7cDBfta99bFaWLy2HIp9erYgnrvp4V9lWMvnduGRUo3
xOxj6/GoqVKINQcxabaL4msKtYC3Qq3e82tAy4RsoEjtUW0LhJ4IXXrZYtSAt7mtYqUS0yZsJzTB
eRHbvCro2VbQsQliB0KmpYW17zWC2WYtcM3MGkfTlOPCSNjKkyaN8HLkpqfS7trmBbgmW1usJzkQ
R+DMBwDT2fn9NrwsJvcMakM0x2oamezS4yY5tnsY8+3GcC8lSFydNcd874qCu+6M/NFHh5Gte8nZ
B1fQdsXckyTejUcU2HB5v+aWjEP3RU+VsforCia6Djd6uLwedU3JcUTyBU4hw052lpt+vYkG5BJU
fYP+jd5cHNVA7MF3e3WOgaGzNJAvK9K51ZteiezE1jU3I7kukDUZxYqM9mDUcUGEcMSj185dbvGy
40EX6kOgECAGCNEzZZW4qXuAzH4l5Y0Hll047yhHG2J8cFG1HKJWR4Kr7bZtI9EWkYnDwIOksaEB
HIdIlRMNuLC0r4f0+TgbVZBVpV93HL4n9HmRstjakFVS1Qs//aK80khihyBeUpAFEGzsFPHBUu8C
HOYxI+akoUXaJcivdJAMSRiLzGwbagI9U6xqsvzJxgQIG3G2BocDE8gwrLWkiMpQkaBaj+nMsvia
iti2qw6KyKr/oyaIus86bY5f0ARuWUYx5SDhLt8diAI8jAn8DLYHC5AWrvg3vR2oC8bhxFCm7ccP
h/4dPji+vb31Uvp4fn97P7vvrE9ALruj+O7urkvqBSlWUKEazrc0rTUzhFeQtJH5d+fz0dzWrTgn
mP9T0wN3FVA9+tqUqSmXQ/vl7VLEnK7Apzy+epNJuRKL4RB/wZtwydgSFq2oUKGr+4Y5jcTwy+8V
4S/DcTgNT20jBGoZfhFvrmFfvd81au4cs4QEyodkDfP+DJ5Wzryazr0lIJT9WBix5AUekA8gNxbi
auBuAuqbYTa+Hv4K/oSaNbzFEg/vfnsY/kaiH6m0j48VzZPhL4C7WJAhRAqYM5AEKixc36tciiEn
klNYX5CE4iHgRPxkfgdxRYKiMl+MzF00lhXOQ7mRIN+4KZb3VWiwO6Jv63396haPRAa0OmlNUVcY
1Pj6o7+UAqK6GfrevyUTg+vxKVgRJlw3pkF+HzAJdBxcv3+PbjJcQrarigAxBsJJCvSIpQgsgo7H
J5DuIC+rcqhDcFuCMZWRYKbQbgv+Ay3+uC6TQ3SZ9Ovyy18/v1XOflT+DLVXQ9BB/H30j1Br9qgU
u0Kjd99Y8Okhgk/7Bb/72893N493t+gQ8a/QYDR4h/7yY1sJ/fBV8YrB4NoO7yp8WMCam/WrAevN
22+y2QEm+1MZidVFv9ku4Z5f2w40g5buQm9NQ83SHY+mrSyq23ayAROzS+6tJ947ILfXkm+faeLP
ZCdoYNoWmga6/13oTaJl6e/INTtWbvzE/G5S+Cr461eiKlCiqr3fDRiHsL+GyBMbF7rrteho+hcQ
8HXn2kl7PbvHaeyQEDCeBa51/RnMo566gcy7dqluS9Ohfao7VLVaU5mhxIxY7+oxgO9BsPa2M3zR
69B44HdIf/ZGXykAJExn7WtPsktzJojhtbn/Dhwrf/FVevZXeu+quPqn2/f/Z7p/M3w6OyQSzvZE
wret1B8OEefDoXCpQs58iwVmfVOR78UPjz99evvOwSWQjYqXcMMsyfoE+BrnQBlQyvFSXQi+NXzO
D9Ft/r/Bp/76oUsW1CnkVyRThnTt+SMR2npoIgi0S/8p+b9QSwMEFAACAAgAm1A7QwwypCh0AQAA
ngMAAD8AHAByZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctbW9kZS1jaGFu
Z2VkLWFjdHVhbC50eHRVVAkAA7a6RVK2ukVSdXgLAAEE9QEAAAQUAAAAnZJLb8IwEITv/hV743GI
yqkSEocAblWVQqVEVaWqBxMvsVVjV4nD4993HYIAARXtIVIO+83Mzno0myazCYcXniTxI++D0Rbh
vteHVGGBIOizzkMPPG48+EJkX5BVWMJKl3pukD3ETxOa1kuU4CoPa6G9tjksXBFIvdiOHUl6B3OE
TBiDkqVYkpYSficVTAq0kgwlrBVacNZsaQAbw6WTCLqETAmbE8/f+DRtZ8J+G7H1qnBVrjqMxVJC
Ky7EXGet47xr7RWEEOS2G+I2N7pU16dYgr4OUFu7Rf1/0K4BWqlUbk3LXp4+mOzHlZYSLWPdLgwd
udXbk0ZlZGhHZF6vELpdxt9f+SjlY2h7qioNfKMW7YZGREYGbU4qgwG0eq0OzJ5v4z7uPqN67wDu
Q17Ddyv/2fUMOzFteqzhUMYsnLup/qiP5omdF0KCY12G4w/dJtLWYpFe0v6NsgQkJB/eauBsZUyT
6MZr7o9/ds6T9NH/47MfUEsDBBQAAgAIAJtQO0OHHnmXcwEAAKMCAAA9ABwAcmV0cmllcy9tZWRp
YS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLW1vZGUtY2hhbmdlZC1kaWZmLnR4dFVUCQADtrpF
Ura6RVJ1eAsAAQT1AQAABBQAAADFkEtP4zAUhff5FWfHI3WjAMNISEh9xCAE06JJBLN1k0ttjWsj
+wbafz9O29mzY2F74XvO+c4VQqB48bbfUCwqxaqQr3XxSqtHw8dn1hvbFb/JkopUWLXzPQumyCJQ
7C3HIhAHk/Qb6owqOKj27+EWbU9pynUUjFuLje9ItFq5NXWCtu/UMnVj3nKW5/k3YaiWe2X3EJMJ
RDm6RF6OfmAyyfL5clEvnyR+ybqe3ssbWOMIP8sbNJoCQaXjPKME05axz0LKivgw0awsZfnd9OEp
jZvEhASMT2U4MeDNh0Fq3naVT57ssSK0ylrqMjSpFVgrPpgNMQf6ZPKpycE7u0sDdIwcCsFEHDtl
kC9y0Zy2yr2nPbEOvl/rswz7hhfl6Br5xeXoauiIDOfnmHnWh6yove0GlmODcfpOfn+e5byRFU6H
hc97qkwcrGd+OzbOUWiG/re3OJkGtTLtyRmWj5n4uky6tTVR/9ctKizv0Mi6SYD/AFBLAwQUAAIA
CACbUDtDlDuorDgBAABrAwAAQQAcAHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRl
cmluZy1tb2RlLWNoYW5nZWQtZXhwZWN0ZWQudHh0VVQJAAO2ukVStrpFUnV4CwABBPUBAAAEFAAA
ALWRvU7DMBSFdz/F3dJmiOABOvTHLEgNUi2EhBjc+BJbGBvZTn/eHsdJVKK2qAxsHs53zvU5DH2A
IHmAqkEP3CE4NAIdCthLNGCNPkYBQnC8+oBPKxCUh0pyU6Mg9Jmu2aTi5kvzY5DONrWcEjIXArK5
41tVZRDwEHp8r4KMltimdSJqaq28vK4iGwzpgBRt39P75J2AYMFLu1emvqw+hQxyqYRAQ0iew8LG
tPT76NFoAVsEXgW1Q8hzQl+e6JLRFUxCrIq1fO9WdKJlJAuNpo4usxlk99kUysfbuNe7tyL9uwWH
I6/h3Zf/nHqGjUL7HhPcllG2c/fV/+hjp7za6guFRMOV8u34C3solDHo2CXv3ygTgU20j/MlzjRa
9xfduOYw/tmco+uL/zl/TI1XXK+gfABGN4yQb1BLAwQUAAIACACbUDtDOpsKyosIAADiHgAARQAc
AHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1tb2RlLWNoYW5nZWQtcHJl
dHR5LWRpZmYuaHRtbFVUCQADtrpFUra6RVJ1eAsAAQT1AQAABBQAAADVWWtz47YV/e5fgVlP68Rj
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
+YjhHoNuZAuEjkwAnG+p+vs08uUp4XvSo0Fv/4Taxri9MW3Q/1GZNhjspCMKX0S0b+ltylbpnsg0
3D+ZrAH7I8xOKvSnS/T5Ct3Mr2/2A3IfZfcl14nah3ot+66r/2Ln/wBQSwMECgACAAAAjFA7QyaQ
pOI0AAAANAAAAEQAHAByZXRyaWVzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNr
bWVudS1sb2NhbGl6ZWQtc3RkZXJyLnR4dFVUCQADmLpFUpi6RVJ1eAsAAQT1AQAABBQAAABGQUlM
OiBUaW1lZCBvdXQgd2FpdGluZyBmb3Igbm90aWZ5RG9uZSB0byBiZSBjYWxsZWQKUEsDBBQAAgAI
AGxQO0NXiH4mjQEAAPQGAABBABwAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUtc29ydGVkLWFjdHVhbC50eHRVVAkAA1u6RVJbukVSdXgLAAEE9QEAAAQUAAAA
7ZRLS8QwEMfv/RRzS3eR4lsQPO1G8LWKW0UQD7GdbaN1UpKJj29vUndV0Ita9OItIf/5zYP5J0fH
wLViKFTL2pADRSU4f82aGww3i+CMZSxBU1Ai3CF5UEVhbKmpAjbgHVpoLc7QIhXosiSR53KSp4Wi
tlFPXFvjq3qQJMPhEKbIHaeLahRVXlX4LjxLTs8mqSZGS6pxmUM+C9KTTmCxPJyHuPRSIImrQceF
PHbyoLmeo4Lyje5iTgOSqka7egnYquIW+Kl9fVq0/zE5hy67w7Q2vinH2sWe8kg40FSmYjQPFZHr
MdSTB7C01tht8FTiTFMcnwMyHMYL5voGC4YU71XjVeSD6Co6CqPdY7xzl8tXog/MSj+Y1X4wa/1g
1vvBbPSD2ewHsxUx8uJEjnI5hvRel2gyxkfuFs1lDVIVdntnB8SmGMDxwc9zzpnixT+jOpgFPzNP
cMe+ahWhwyUo3suiXePz63fxBeveqM66P7LbLMTgtyDTRcX/pv1F0/7ZfsvJGI53IZfTPEmeAVBL
AwQUAAIACABsUDtDP612x1QCAABpCwAAPwAcAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1kaWZmLnR4dFVUCQADW7pFUlu6RVJ1eAsAAQT1AQAA
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
hXPW3YCJ6qA8GEsgDdjmNX4JMjySJCmzgfS7WPpzhsvi6jcpIuwPc4jZBOb3UItlnUDyAVBLAwQU
AAIACABrUDtDfFnWEHoAAAC6AAAAOwAcAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtZnVs
bHNjcmVlbi12b2x1bWUtZXhwZWN0ZWQudHh0VVQJAANaukVSWrpFUnV4CwABBPUBAAAEFAAAAHMN
c/UL0UhOzCvISazU5HIFc8tTk7IzS9JKc3KKk4tSU/OSMxLz0lM1uYJC/TTKMlNS8/XK8nNKc1MV
bBUMgXoiAlydQ1xdFDQgosE5QCVFemWJOaVAFbYK6obqmgr+3th0G+iZEqEfqApigqufi4K/m0KI
a3AIFxcAUEsDBBQAAgAIAGtQO0PisP8vPggAAPUeAAA/ABwAcmV0cmllcy9tZWRpYS92aWRlby1j
b250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1wcmV0dHktZGlmZi5odG1sVVQJAANaukVSWrpFUnV4
CwABBPUBAAAEFAAAAO1Z3W7juBW+z1MQCVrPLCLZjuOM4yQuOomDAtvOLjbpbu8KSqIsTijRS9KO
M23fvYd/siRLtosZtFigO9ixRB6S3/n9DjW3mcrZ7OQ2IziBn5wojOIMC0nUXW+l0mDSg2Gp3hiZ
nUwZLV7O0XRNJVUkQf84QfCfIhsVJCTmAivKiykqeEFuzFTERUJEEHGleD5Fw+UGJfBMkpuTf53Y
7dwmMWdcTNHZYHRt5sJHysgDTVM3H+H4ZSH4qkgCL5pO9J/qQfYEyRlN0FmSJHYu5YUKUpxT9jZF
OS+4XOLYAcyxWFCAPCQ5GtihJQfljB6CMNBoTQygbNhAOhqNWvaXuJCBJIKmlUlJvxBzRvXQgJFU
TdEgHPvxhMolw7CJwhEjQUwYsxOvNFEZbDAY/M5hxElCi0W52uJz7tFPdQ85yLTIAJgqxTO+JqKh
1Xg8vukyOCHWFKH2y5/hLOkWp4xjUEXQRabq3tNS92ACTIvyKA7mpwrUHBxQ22kZmH1rlnrNQLvA
+FGH26vAyy2yJxJr/3UGjllcD5tmyLi49XaHoBosN/aE+WYJLob9QTVyjkL909SwE56kCYne9N/I
QP3IePzyIxYqBFWnKRVSBXFGWdJpWH3cE6w/37eZIDm49vzAee4Mb35aQPiQINIitbAb+6iDaFE0
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
ZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWV4cGVjdGVkLnBuZ1VUCQADWrpFUlq6
RVJ1eAsAAQT1AQAABBQAAADk/WVYlN33BgwDgiAqIQrSICANioQ0iNLdjXSDDCUxhAooSEhKd3c3
oyIt3UMpDUPDEAMDz1zWLb//+x7H8/35cB/ezFyzrx1rr3Wutdc69ztlRambuGS4aGhoN2Wkn6qi
oV2hQUPD0Ma5ivokwe3VC9Q/zC7PtF1MrcxNbZ1d7dEemvIb8z9+YGz+wOKB+UNjYxNzC+4Hjx/w
mT548JD7EQ+3WAplLhqaGJrMU3H1l+gbydeaNDVGL/heS2R8Vw9+S1SpphOfQavtyPw6BqGZkPHY
Fq/XsflEKlMHkwdbeZh+hK0H/Y783FUn4kRKMSz2dzLyWG2kx3NzY/Cy7XpLz5xT+TnkybRX32Qr
1BbcX182NumVOmNurweixxFDwyDwQ8OkQUMH/pf/mvzHB7SWvWGjDW7f7mH/+xWBn5grDoGfehCr
Ku2fT4Av/e9iYNI8VO589c+TaJgFEn5oWQL6H3DR/33DVwIatHf+T4j/fZJGmRLVwOiPYPVLfaEJ
REOXvnG7gubSu9ZRDeTjaWU9udTrh5g4YiZpEViX3qUehGogXn/Oe1/h6Ahy0SzPTJmoJefQkdLp
/++YVgg7b4iFCawz1S6ECTYshIvOgk96jNwMGlycGrdbGgUX3j+aNg6iXG5w395yqF+K7RuuC/P0
PNvtmEHHpvguAs9X0lAvtOkqzovEef1vu9cwua5EUAl7HvOdaek7BTR+f3V9GgEr3RY56VJquM7Z
NIDci4O4PLLscyltPtS9ZgAZfmq/3XK6FTkVN1w23eI+62HpfjAoFZf5xG7Kpit0syiKq8d8RsZm
6OY/L4m5ZnaVhjHZJRI2WWmZQUZ9cdwxw9G4EalNxa7d6GZPCyuunQUxpnpXnHaInqt0woqiZOHF
hGklBoImNza/VTCXOERO1875CMrpz8RoBbvOkAY++WdanxGtpozOX6E+FrO5w9/duNVQWLp/tt/f
2MMJmUae9Pu6cTbtvKJ+6HFxOrfdY9GbsGToc2J+1M1aWkfuUPd5DZFgW+I0buCerFf3It3rcNJy
5s01ommv2f0UN+Ra70k0s9p0TqLD+jlqHuqEDydalbDVsjUKNevfETE2hPJCO9m1yz7Bt2amwDC9
uT0uKs9V2qP91Itp+ObUOBw23g9GvdYdNcCUVI6xXKVUPLDvlnOqM+Sk13FaU89+ScpD/aJPcNtF
cLNKzYR68zb46F5fn1Xz6TZk7kj0+Se0o3Zyx5envBPPr6DW5HSDqHirlPrld/Sj1cxwxPMV1Jcu
K6m+LeSPX6RxyplGuyidw0t9643O5kkc4OujDnPgI9c55JY78qBhv0+wfz9JyKOi9oJ87jjwdJ4E
snoqE6nBBqs7pbDljv9nQhWk0hYKT28pRNOdZnOCu8BLrEa7YWc+p5sreEI7YrWgJdnc2sOo+wqg
1IuzlRmnDsoV9RqLXjL3bw87XjLqnuDSZ3wOUh+8zdilIlgsyP/jDVHSmLTViJh4q6HX5lILauQN
+Wq5DUHUPhPjao2fX2M3iiLXlLZQkwyacmgsPkVu+26PF1qtf1StclTgUfsE2u/lOyWk5J9JtK/R
saE2VN5h7epLCxbdnINAUhvcRjW06l/jCXTOuE3ZOzRu1sgl9WVjrUlROL3Bb/lqvNj5ISW3S8Ek
2k2JO2YL3/f4deM5Agb+nv5cjk7HtCPM9WjGPVUN7V5JbopnASTIuiLYnNI9tZc47J/56FVIM0F/
O/aqEx0CK2mcdvQ91avdbSdvzJaLQ9B8H9Uycq207Hdzn3YKymW2FJDXnaCK41ZNG7ydOM9jNUAD
LD5C5WYxeT3ycAp570X15lhxouDhhCnybbCkrCd8fel1Ij54VUIxE3cbvO0FnvHYX66GdSOouMze
nn7HFl3lnn9k8hWHz+fspWhB5JiUoLg9iY6bLvKoeRusKP4Wg2ky5xly7nT2aPrsZB8ZPlqZKemg
KLjJTa3OrKQ2v9GjZ/1+aOudZIhZ4WShyO0Jpjq1Fzmnuc+fWg9mPBN5LtsAaas4fHLyj1IaiMRk
IfazqjI+3ax1F9woe31B+sjivbsFj7ks3v445NxVNNIJsZZ7uqb+o+HadYwMdzE6MurTiQ6oudzW
/US7+fPDWsjJ+e2X2hVrJqCMGHq+aPZcBHzcqHY9QCA2PV9fz648wGB5PVO5fpO+p6+sZAOflOn4
AzsZ+O39yZ3RUp9RbIyE+fscnM0HkaWx7UybKXlO0eEb+FGh6nmlJubm5XinPyj+U6tprjhmJehd
ISZtwXd8dKMlb80P8a8kLYybWNkMJ/E7n1m9HXNlChB/MqFpizdPARodnDr2Pd9P9TF4h3GLoXg8
Qq30Wb+HmuqcjZEstbVbzloWD03Cnrmib1VJzkd2w6aJ0tFjVJ+WfI4a505YrN9XbMlU4Zdf93iz
0tYd3I1qmrMkSegfzb/MqFxOSMB+MGbpUf1gOnLs5rRzv7DDZIX5rIfI7lci5BMb9sfj6ixyTkb+
qpNh9qfh35IFa2eq6LGwEnyyXLFlw4X23oquj6N+tDIea1WgORs9UgslmZKKTbYWEEYeDCt+fhM6
/8a1Tcw/UfJDhqI3WWaV163ufmfDazrWRfurYpT/9KWdUVkdLcPvyfWM6hq6BDz+RYJa7xPQhY5B
c/64VqzPzmvqY06ztR4tXati+lxDW+qaSQty32I4AeJVTJIa/3fjIQx7djxqPoekU5jRxTrkFXzT
0XeqNPX4K6PID9Rmq/0i7QddY1XR/d5yNOvl9TDBgSGZfY1Vf2gOtXHBH2QbdLungrAMrN0Svu3k
Vd+J3Wo+MjwK4PRO3zFnXXMAxbHpzBe+83cZabitEKL6IIfZWgYQVEzZWDPtoeoZ06VJ6ci9CrM7
Pbrw6j7Jz0zXLq35YsqrbKyhOAO3eMbM5/MoZX4gmN5zojEUl3OAxQwelE0dH811gMdrKbAOMXrA
4czFHwYsHaqtPC6QR0ebIih9c0o5Vu2nl9pyM4o4zFa8kbjYNvQNsa1tdBtC3VeXiT0+AZHNaZiv
pMAwlIAFXpIBW6cSKjglPDQNNIrLCJjS/Uh1WKw0uC6nQ2bwwUE3opjzWTY8fTDOtrR5DNtQwOe4
lVqx6lFVT1+15jMj7GGMF8VLA9ys2Xn6a/yovQx5a3haYcX9NPXGmGdCCEcD04cPjxlmiB4O4h3i
cozUYnyxHs45OYdPmm56l5a+YjYAw0d9PnhHFpnowERY84ac+oWPDozQ9il3r/8zJ2vXXKzJPbRr
Hz3H+jZK7qrwbEgr1u5DtUh9oXOomNVcxKoAdnNvLZzGiUW6jcTIe9C+5WTZqc2HmrBLa0DNrnt9
atG6NLJIpGKDW0fAxuWZf5iIXtGHIO7T4uR15gjVW5blVdHtTFsp2o0m4UudwRVjwhp+sv+AKSs2
DOh48UhV32t2jSdZyUnzVjTP/d+yE4dzd7m0VG/RMh9HsNnzatt0LxyvbNL19D2mvPP+2ZWKOs/u
yu8SK8Y76TBuSaejp/ayMkDr94+ZlvAGrv4dHjevfzA2TWhopnPVuPQ74mTbffFb/6Iz3XdiKiED
etfkeexHST4dPGMtJo3nsdXkaXzC++9j68FodDQ8dZS66or/4kAx1lvPMbPubAvwSvwD2NIkUXjN
BjPF4V8cORCM+lB3t8T00b/t2jxFwUjJ72vE/8K9YmnUh/8faTTNSxOCwqLWWksxWobW7s0o81jb
aFhtE6PX7OlKW2rZnxLgnKztNbqGsn0hNbUgW3W7k+4YVvBwiUGjwNpsphQ+0VK4Zsl1ODV7/7ov
SpW3zCTw2JpMJXp3xYYm20MO+GoqHoalumjdyqwDGR1vlWaBulDQsRg2WqilPdPlU2mAJXOol0l/
Eg2RQBPZvAB3IU7ZavX7S885og+2OyTJ7Q/6Qr/z/en0HbqB7N53+on32cn8skazbwAyUEmg/IAI
LD7IVmOM/XsG9DGI7ssz6WCqlclKSkmgPoi/NiFt/Gjqrf1vDatL0Jn0SuO9akLKSLPX0ZeRzFUX
nC7c3OgJl+xV7mQTRFXDj5FrcEJFrEjvRAFzgTdwdiWpYZkVWRtbVx4ysyuS6ZTbI94r7trjsynB
EtPRDLDCyMPC1DwhONFyzJSjuqEVpI/nplLSvMu7sSUyDLjsp/MxmIbowW/Z5Wbx/4b2tM85spKS
jLLYUtF99ThnFL8nWBj/dMzjJbuOm71UlKMb81zkwU1KO1u6XCgGrvP34lDKO4tvDgsMXZIDukJg
rYu3vW64qk3tCBTYTji+TKntz2uyEpy0TFLXlKVWideXSCPGrGp5R5NFvLhG9HOxE5LFLNAiScRc
Gl5JXl/0DuoDj/zQ0nlc8BysI8xfGpku4HS9odjnpfoUG6MO3D7dWl8s7dlI7Ig7d4C4pDaxQQRl
bAzIwXtxgDVPGTfZK4rUNXIDmuRrawtvNX3pa2ab5F2YSt+/p9G/lVz90GAjge6fbWpLlKeNdktg
CWSzQKHjfLiUFei45nqd2/M5XlPf0o0grmGHqMV4OkpXvyjosyshD1aVydcYVyY3lNGymoT8I6pD
1+9JCSfEZaXuaWjZR2fJqU49mEPgSJlmOauq6jVyFhDNBpUpaDOycG6J5PtoihF1r/yLM3hw1L0J
G5K2B2jxHkpKyXypeIA2UJ+ky18emWuqqZq6LD+1KqlLzn8AGsuOwrqxvNHzueZTq5l0zt58kn2h
qdRoFMd9pROB/uExs4nBx/QPqz0FgqPgtIENvG7pHMaJqx7cDypBTpHvm/aySh9rg6NaCf95dzXg
QHlQGEkwWQ5THNV9or1xI0PN+UnHOMYdZxNXeWezzL7qar7m+bACOvBimd4nglEZZDdetjLEyve+
aILjIcscxpVCoqv61ogCn1jk+tx6wIpNLnWlmnmO2ksqaGxWyMG4knrK4htmz9SMTAZjgz5a5X7M
jH6QMCzY4beoS95TLmfWBvktNa0zMWqF5VJokhsoxydpxbB2rVU7j0btl66Jgr5p9J/vawl2qRmq
qtbDTeHybhOa5sbC8HTYjkLzXlZiWEEp1xqD15N4pwb6SVtEQF/dYoJQdYicpoN5TpTBlMqJbAXD
hoSHipdZ1CifpkmpULni0LOK6Iy9aBLFqUj5NfbENhW3yH997eeY6xZ0T/hrlgkSQTGPl12LWAe1
MruVP0XcecldYL9601/12uocHsaq6tog3h/xbXV8yoT9mMI4b/GmmvJr52T5EUlWF3rxf3UfFJMr
97mGrdk97vdotFmD9Stl2/qzB2OPMQ/27jVwFDlVSan9lknkrU79N4aQgkzSS9GCASuUoiTbDEvn
/Pdjso8oZ//KnBDK6f9HrDMB375g17xA8vWbFtTfMMIBBN9f8xbDGEHqp94iR385mFAsi9LZGttC
bpd09lVAZ6Mlc1zS2QWAj+8Zjw1GObeNKD+nW4YauXpWVNnHst6S3wK1Hhbu0i577i+4/+1RSKTK
u+50qqFnAncKpRheqg/FgrZDttoKNApxj9zOjndjlEuZSH+AmeEnD0iXdphkrVm0QtFgcwWBxJ9/
vWses6HKvqqaN9Q/6YvuhZSQ7Rgbn/fxi6PDKcfGrZnxzeS8meHt+hUqPs+DVW4i78ni2pnlwO3a
VBjKMMy5NtuOlzj0JvAodojOusYJWn37KE8ak/fAeVneMcQljgNlYXYTk2XivLabx0PJeFgqE2V3
OjfopQIi8oUlLfo3JiudZ0h27/LafdxWEIqmlxPam9Wby/tmlM7ewJctRJ3+XtUj2vpqL6v8py3T
gLZ7eL/nZwfzvvxH5Yqb8XQ0DHIlyq3XOeo+CW6AMO8rJCyiuvnD975i0irlMSGdZF1XFGPuYY7b
ae1olFq+GxSpJx5TrRafnIvLUqnsyRQRGVVynvV6A+WAODc5sAgeTTureeVjho/ggYhlfbFc2tVr
VqW87wgx5XWa2AjRS7huzgYHRb7MU6xWY0gJl93Jq0nu/E8y4GJpJVJiiIO1hZSX89e2B1JA3cxb
UNtS+46NTrpwlzhDz3zOOfM4g+kvAdenYmAZjnMtW+UdVPufu7sYUzdKWhDrbq7tYZSwHMXk9f3A
G6S3WDMNXt/ilMfnEYWPqAmu0urlyMfPUyLOkaeAK+u2mn9LSACHnVbCE+WTjMNYcsb1nRUEmU08
d9tIvJYFt5sqgegI6k1PhKjABypGKyFGQr0KqSLFBskRHX7oV6YjGeSgMVrrX7ZCJI1kwSIsnzNV
D2lyKzDvouezKWX93F9i+wR56zhvZ23GWZJffLnWAstN9WmQ2EnH4G9REjrJcjfpCCVfgUn6Ujp/
ezirMiYQYrWT3tCtFj8ERBnCR481BkzPz7SFzUI21LkaMz0/+iztvO1mW9L1tBp5Mp3xOWjx3dqj
fqGFZ9Tgg8Fyg7dBST5db69S29DU65JkRH9tJYk9KXxh1P0S6Jv8IytDLAzdDok/SDBtD7NB09Bs
id5nkY5694tD02770/Tabx9/jN+4QSnAXdM367W9ue/YsJYzATLXnUzx2orX7sCVDKNYS7G77mm3
+zKFh9yGVZgbbtPey5eYhyc1mS8gU7NRPW7YosAv9EXRPAQDjV+3grmUPWeul7lm+kXrzRbWQvLD
QufKtgmpHtfiCm4qJ/vg3sKv+8a8sa2Z2s35+P9pjhgxA2yaBM9MM7orThErtaFMTDfJuJlKJqwF
oiKbFcIL6U9ALtj4VBRa0xxKaiE1UBtWUYyBRnfHo6jUsywDj6GAg2GXMG5hbps0rAELd/WxT/5X
wJr8Qk/ihwx4mbpyAC+ETVGIRG1XtrLN5X1lm7Zt8dvREJi8+byxW8coM1/prX6peqHuav/D/7TN
B8D1/lCpXVhl0oY751pq2KyqMUDuvZb/7Ntg1gdcBZLuBNmcFnqJ6yPDkfDs50/grt8i2T084NKF
uS1LEXGtdFUKYGuy6F5nLbEIc8hkBq+OZ9bDGHYPRI+ts5XWwxXrJgl+6xppyXqhLy2PS/ExPA/n
zxXy8TcHMH6HZPUwNAyuZFy8sY056DI45bZNwCPGoR/9kJkYs3dAR6p7wx6vUeR608vdebbBFqFS
byy5CkYOZtHwJDaq+14onxxL7/bEqoBSZNiPlYgoqPQ4N3i4+0m8BwIXRuJluLWvwkzVtq6AXL/V
uW+S3kBGQ/lbXyRhrnvixvIjdFaXhBgZ+IM8IpMOhVyVgJjLm05r8Fb9yjSpZdIHqabSqI5BjbYm
N0bXpHY6O7Uw1Mg6cd/sTTBbeKwHuN1xTllJkTMc21e5RtW2qmDwn8LOwxzbXNcKIl50nVh62i3+
Xs7DvLOrV+0oTHBLWj+TcByydGfhKePah44uDV9rIXlqSrnqZ/b7j7dQ5p1tG0f6Fv6aikM3qyDs
hClOqt5tgOo/NwrX37v1Ck9Few4mpc/xj3dkVhAcLGqnU4u8wb2lnuZK76+EUvTdyvFmeQ7VkXYf
ohKygxB8jZkNf/cZ4p1WAvuQyuH9yYxBui7pyqXrRsdPCt6ruoTX5H8FBqLSXBf4X+BMluYRWv6S
kBX4nqZj16bcMye+dCOIj09wX5PH/nwwUjIQ5KLByRx/Rk8qsxncNW7pUHkwQJKpLuW6EHkQpeaI
aB/tmiccz5kQWksn9OcWPlhimeQqtafrqqMnZ6DbvK6lIzS/SJyYG8pRuRUyGX/gfbtVop87/yHO
CAipZ0rwRO63gbUGDODQV82c0Sv4Qt+TRyTwhblVvn/Gpt7IVeyNf8RY0/caX2QVQuHaSRv0NZZV
jYubYTU9iEq2yBQLm+rl80awWFWcZIpZTdbabny/dzuMNnlhCHk0t13Z84OwW/i73xXcU7/Oh32N
+G+1bdcj6xgYKs0VMdTKYxdSGSTEZR8ePVPMtBsEd0ex7P7sIfp/oYwqLv8GPDGfw8rUE6/KYUXB
+swwsvEfIqGUgjU7xOd7PZzbyiXvWUubhlZg9p5JNxToIr2zC0sauqmHfaxL36seon+w499clxtu
z5Dx8BzmCPKCVlkPmvgKgxEuvurCk1QKHi/f2HM07Typ7eWdOmabzBJW3KM3ZReet/tAVXPRcUdL
n5BVVej2Qb5h0o0la24p173ZuOLaWehRdrPC3pa16ruVzLtUh/IdT2iJ/uszGtBnYnbdRY7mA1Vf
co6W4yfuy/GWxA5dx7sLMyP5aki4ki9C7cK84Inxi3ukIIKlTklz6RQzK92odTb9ugdWpL4sUjMi
1wv5jpc/dYwbxrFOLm8YgroYFBF6ArCiyuloZrWzbIpDeuFoTr0YeolNtqUlY7jrxnBuOP7L23ff
fY7VcyAlZkyBqX3NCTrAs+c/3QAM/+S9Zdw6l3AJvSdUoImol29w11usGlJQE19+k7hVwGkl5qVI
8I/0c+n/9FfMNTOHp3U2owX65JsaRPObtXNbKJwiOheAcY2/RxbEvd0A40ABFSvf5EPb5W/xDhNl
xi3B1XwdXocbk/VmeeU5R531GnOglCVv6NR51Xnxt4OIyqLD+1JLKMMf3vMo23asSGcrkxqZ514X
KlVfY6UUtZLqK+Ja/H7yudQkFwoWNR70QcqRplNgfhTUeaIz9M6skxjLNZ29wHcOfLQ0n97QwIn7
JDpLIv+oDQrTZhuW3VGGZCFo0yAqf+Eh5TV1V7ovYTOuPmFJe9TnO0E+w6JePezY+9PO/b2Uj5mk
47mtIy+GYigMkKvXpYkYFb+xS8Sm+iDWZutjTDNKqa05Q00iDyJma/zTsR6icIuig6WeLY+6Edf7
IJcPYI9XD4e1vD6+zdReLVTPnrjnE5luFgbZ28OktqEDMyqlbNirePEjK7LvUkXSzYwqyiBWRe4A
Yg7o7ODB+Ib/5prwGvdXHGm6V88sUX/sXnuAMXR8RHD913cCmAk+mFkCExGXj+FceP2/PVutnsbO
qjQeoAY+ovskQiP56rdLmFYBbOtutyDuSydyqFUl8Kvam+lwu9QWFzpGhOJVRfd/jwqtzDHi0XH2
0/ROdj+54VRxoI9BqreaO0A/v8zjQHnXWQ0zK3EllDXVk9PdMazJvFIjJ+4t+8lnGFAbmyD7ajXl
bOrkoMaXK4QWntJBsp0RwkurKrZUHh9VLp1JSqbRHqIP9s1BrxmQL0+2ozZpyUTyQLWte91+XR+D
mmDEyuQnzobhapqEpqbG/Km+uYrWSN654Wozq6jPReqcQhUHWRQYoYp+YDEyJF6G6K9zwxAxte0r
GQYVdx53yohuN+0n5Tw72Jgc3r5f8t0YJag+2DvcdZEPTb7icEoI2skF+rhwdBiZo+TPJwFnLgih
+il9pkShPdz3zJT6q3QgQkYOim5Qk9evHOj2II79dKvRMee9548PFozm/06Y9L0Ifox7QY2a+Uqp
IlvvGFN2/FuZc5PmS5oPoW4FFCiTslXRw7Hv8frqTZBcLJu1VknIbLPXKbOigOhaVpRA5+P1PCeH
7ugQMLVE4A2nEGJ21VG3fBRuddiarhc5fnx+vDDjOm4wXnKGArh2UQ/brNUluYg59CdK9El0aqQD
7VRoIrOkYt/3zQ9+fsxFM/AGk7utQiqcSsGK9P5v962bcaCKjqaD0j0pt/L551d4/q9xb+PkyYdB
MF7XuWyUdyA2TvZXOro/ioB1acXKzzNA7SjAWZnivdeF9zkIt6R+maw0qC+cf/kupQD9Wvpzji7i
rgjvSRMBqYCPPjJcAiFS6pwl/zpXEXFi4013bFUct5uPDhVP35M+utUIOVlOBE8Cp3V6UsMJ0QCQ
RCFG2UAKXzhJXCAe5XolACLrTFItPbO6Brz3uElZ1CIi6TMNX9I/Sbvk5JFirgugkT547pcamVX6
lIEh9CoTfHtOtCbYzArZiQK6RHol8qFheWHr7QxRuwfDSh13ToW6lMmEXpaJSvpaB39UTaCy6EEh
vcxepGvzzluNMPl/98QiTUT91aepiaOvYLr0YBNNOiIdpG1Jjap+s4kZE84gxpGVbBT1mEJhnCZx
zIcsqYc10hbVL98gQHj+Fvc/aZUlnGyZkP9sKFoizXrcL/pKQM3lg3gkYR6MWRsedD308vE4CIfA
L1oi/H+eVgG2c50r5jO4suTSUk/c6RiUjo45X94oLHjqylN7eoklDzNt38EWekG59olyU3CyeU/s
s8RT22HOcCoZruhS8JO9zrLzjO7brXQy4XnyJbQD7zHtZjQfQQMV/oTrbqEcbZv8aRT6OBvPR8Bh
cXntioKbi1XK3GtyOtBOZcVTFMT6yCRhXpDZ4CRTMSqVQBWZLjDEz2Edjs+wlhgtj19IXsxXqiC6
mZFyP/OWkFmuXTmn1zP4d7J/Vy37Vh4MbREFIPbcKL13Pr87pAR10rZs+GNTvS02PQmi8rSyq+cq
/rYuyarrQyUsv5L3Hjjuxea35soKakHwWPYlWTn7IncaTyyc9RlYHyVnurLN2YXFwnQF1uX0NflK
8Dz+nTimAMAzGM5R2OddKz4nlKIY/NzSii86vX2RPngd1V2zEygjvWLgnh0+YSE5owQ4z3D6gHHJ
vAu1BRpSM7IHsRTGg+8PS4RdAGCA/XBcy8A1Bh9lEh5vlLV2L9POfNWjY18Px/x3/WR/ziM/PmLS
MtVVy9Ajm/rORwHXAkGU7catgZ0BKsBxfamMU7+uTJk4hcmIa3FCrh31rAHTWP2eeo6ANddI0LqB
51r25sFdUZ+mxsVIOe8XtOAsZ/3IjR5OiNAg8Vo6PSlKPQQT/YBH3chmVsupGpYQUrdAl09g1xGi
N3K736XMfw2jVzEtFjaXkMx+KP4nPggLxdkc+5bEP3yTnPcbJGYcisk/mVCQxe11aAdY8sKEl0k8
trHkIt51RlMEmkPzoK67PDbqHym9qEZbWWRSvbab+eLeTzlCZjYbt1s27QatXm80oLShc1cdvGZq
+pxO8vbju/iToHED95i2zLt633zCCKw0MRCNf8NHAx/Ehh2f5qEtoOyvq1wcB1wtYrEMxqrU3UPk
jROP8d65jz93ZryCXsLD4xV+l7JRFKPSId1t0Ajc1HMx5iFoUZrPeoi+9uWuybsD/+g+34NM6qWx
hbSHptNf3xElt6gyULJ0ScjvQ+dvfif5N7IUTDNAQEfzbEJCA2UBn2BqFmn/eD3F7aRLPlqoVVrF
ctOgHUdaYk4k+md4wZ/lFpMlZpZXrOG31333nvJjJrz2G/OyJjP6WEHxIrQlAPY1gZnm2iZu/Au8
P5vTA9ice1+HUYKe546xbGUrkFpczKJhifWAjH+w3LI/JTs4nfJvAoG8H1rWO0eOHHGaULG7L7NG
WXO+ieSl8WLea4vI5Pjv3NYnsNZV+Tkzpm6Q3yv8UFWrEYn86Q/4dJZqNfS1Xkfus47aaaauj//E
vQagmFxSYotCZXhZ1dS3ihypMIwfpD2nvSH0ZR/EHluk3AKfkr6Ilda6nte9JO71Z2LGCJ9jmlFe
76MZGMHkZigYs17qjqnW9D//o8TzHqKAAdkcWkOQmCVB577MTN+ABB0dJm2yeILIn0CMHGo4Pts3
E8TT7mGuMxxHPDzMZn8VETyt++aPdx4pZoE2JO1cQ76Hl8aNWSD9PTvOsHtavix4xp3AHibvUuVK
S8kyKiPZDNNi/Kh85bf7yg0gDKt33MDJVKAf+F2Bw+0nhH+PtFLQ0KV7RDHQUPIVunPVd7RAozeY
uvGvKaYRQ4tEC7TD4eZCx6KGrtDJD8LKijRXEN/shb2TCzUPh39HHtPuAMHj0B3i6juOFLwSNCGf
1kcLpzTyx4XZq7w8he+PQUYXDMQZfwGiqyhAJP3o7rubBFYMGJ7WzwWTxhtneFlatcrXkYrp1L9b
BGHiiLF03JIhyGPFOGzLb1BlyXgf2j0CY5J+avA39JiHhppYXLGnmJjrAWKPEYPSmTS4T7UjDDmV
CD3/ZF/JpXnFvlwWtyTMoMCAS4ipJZAZL9LRW2TSuN3osfHoQ9TqDuU6/uqZBcZ7P+79mTbefy3Y
CCnqHQKNtHlX/lVPFvfF0Ia+uZNM6QaLPfKWKSC1s8oPwjP93TEGgk79KxkeA0VXmP3ZFGiUn2Gg
3IdwcgGXvOGGa8WnL3c+YyOh4Z56Uipsrzx1IRm+R2TJluVnf2IxqzdQHXG5ao7wEwu4ttEAKzHM
4N/w2iiXat1AqhjffvsnuyrtM8rIcU/clDDAefsJSIsQnyBH3OSbLvvR4tOW/ObvqQIAVpfBHetX
GQm2do3FpV8nvkH89bRw/L/x0BRdWH1gRH9EHus35sdEMxiu0GWjbYrRxjfx/Io7yk1tABBW9d2e
WHbncSPfZi9Yce0r3VFBc+qI9fJnXL/a4QUErXr3Objw1uNVtVTQFewbTFDv61cBNXHwLNcXCTNy
6Evif9bTZfPAfUu/dr9P8BRrtaAQZiEXRAF6O2WRaI9rYd8MH9uqTEUWnbZx+qh0LmD+zTOgQ833
y6MboYL+Ysyfg0aGXJiwaBMdGvIvJh0aN6dbTrdgVF4bD91Xkt015ffnzg9rFUWNbQIH8csrs763
5sSRaoUGRvzF5HYYRejWG6dBhxr3dhbVlGLYdPoq+L/dupfrWTvj5rzQTrkwpufYHLlU80Ti+mMz
27q+Zzdav2fd0X7+xy3QuWYW5leGL10567khS/cCxl5bxXoOHW8Z2/LcW+zaLGkNcZhpqJ9xn5vZ
LGvFc0BhRbbb9i0nFq7CAZ0UZ3U0Yrw6yuZLg4gGvJ6NJjSaDhnu1be8zM8s1CVnbQ/Ru+SCPX+P
ex7nAYYqBaeNBE0UsKdmjC4QWu7DCnz12FQvP0Hq40zZsQ1gd69Gl9XQVw7X4C75PHjS1+zDhlOW
iUU9JF7ThReTX1JSnNLXaoYu+zHOdbbSsv9JjEah5p2+zUUgX0btbxISN5P/N8KIq9XXq2mVSTBv
+x2sj/Zw3o17AurmoYTlc+W81Jh6cP3xRt757MuFm3yOs0JHO634jc9CiE++S6BLh1MJT6P82u2r
+FQbVwqBnLWpvAqQ2vR4CY5Yd7bsb1UptokSxZFzqjTxKKIBjIPPr6/WO8zMnThfh2xEmyNyRZHW
46VGokbs9k+NT/Yu6taGc83fwZRLAjZwI79k+dRMmFw/QsnFIDYRIjiO/eW4VdBaOo2EGjccq6SD
2nfaF+PlSJ6KQ7/w0Y22GO8WC4UOmnYEhw7Tzb/qgt//G7P2kiIsrz6ACc2fjEi77oUx7XEEC6wU
4uMQijja3oZ179aoYAkWfOqrnQY5G/XnPF1yHaH23hGf61tcfSLe7nu+T50qatp+w/10s/Y0X1OE
7vhOjYqvjfuUfW09rKSxrxmxXniue6JpoVaNQRgwXFXxJLsmqqz/AYRsZeOK6s2Czt/b8nEHDo4S
OqbAO7+kjRe6aikOPBVpawqyxsq0UvqpM6ECiwlb2UipjBMZ8Gb1uOEWCumxdEaGrUttOlrrvb04
glzM8G3O8nrunx9BIA9GZeMdIciaU8spEcbw2tCds01HX9bOAXV2lOkUVxGjFzZ3dwl9a6ZtJBDe
svFyKSZuStJk9lqResnBHgoLOX9x/BsCjkUZhNZZgduOtzHAp4dwvGb+KUeU3DqM8iDSUutuI7m0
qsJevStqFsd7/B2NDwUlRHV3m7fBpcpG6G9f4a6xkS60h+7bCsvnhJE71KWTc79IIx/gla3soPKq
KyxpKEj7AmQdbdUt4HFObYRdbxkJ715Q1S8jjCMZj/2b4rQeJ7Z8uwihQdlLM3AXk7s7jV5KT7Rf
uLapIBgmp4pLsLhjyYBFMiQjhXXFJjczMgzBv/uVaAbPPvV2jSdLyFVe6IvBsfd5+jJ0rNdJRGD9
DHwcMjkIHIjPHa3wv+9ICEJZ0y9Cq8v1k9qqpBighP2cdIkgAf6V2EW7iwXqbXnbiiZQWE4IpYSO
k1rKl73Vehc1Lh1crvb3pAt2R06stW5uxZ6ISZvC4um8msHbyXKBr1Cwvm4Y+66MWpl8YNc3AWI9
UTlDXQ8XWW1dg+4/mqdTyY9Z+0RHhQhjtrwP9IpnyQYlN64oV9Yt0b7G+nM6ichmWQnPrVFFMhUm
+JL/ZO3nq+S3W6yyhbDuaMZmXQRNtfi5jm9MKnq9zDuHXCC3awhTV6Zj9RwmjUe+mtHzI5zURuf3
5PGk/q7na9R6mk4zVhURYSy/tUU+S5KgWl7Tl5EKvcqmXfbpmbt2aY4OaCPk5hN5yzW4P7532vPM
PXtxj4Q+srUBjp0fV9+HV7NnXUycn3Zc5ZT5HITQbjCTCSqZ3xNQv3flj25uuB/Bj1VYUi3FD4RA
+OeJ39CHXtWmzCceGxzJ6uVzvNDIVdQUrRQc1uJdhelZ2KZ8b92Y8VhJBgtGVT8/96Zuui3MwCY5
FSb4+qv6vev/tErql9WcXmTbo4yHoUHzXNG1TltwQ3JpuUrPgH8WtOpupddZXCpzk1pEyE511BmJ
hGK8EMxxzaORkWmYCnwnUHtWVaN52HLU3D9VaDtZbK1dw/HUY0hC1OPc/mGgTe6+EG+eA4NqeaZU
zCoR6e+XatJ8ul2kWdczoa2CAXrTL7jdpB5PthZB14I8nDpNVeCd/Cr4w+b0B77vhH2FTH+NwqmD
QoxK/pNi7MFZGo9XOPzHuGTRP02H+oBkSMXw4psnbH6d+6OsWA7pFMkr5bQb4c5/pTwctTTIGSLu
AlMMUMECBSyvG0giHg5nfzyH2sxnrxyc87Bvkq0u91PrM4XXlB64PhSXzj4NA0B+Xq+a/fXDVj+J
lfZHLFG2f1c7CNg47Q+xFGiVwRi4NAdqdoBjMQMcV70muf7cbcZ13KQtWkM0fIFa4MyxGa4pg1yT
07AwVRejovzCq/vNgVmoVug/i0CFsggEva/7Hmk17spLmeK4cKDzDwhWFV8pVyHYTByc7DqPhcfr
X8/aYDL40rYcQsLphtoCmf1qYoRXGWU8bYNjRBoLEfe1hgeL5rLcZE6O5nwhw0rskS685DaDouDf
mDshBo2OptfTsrxwC4fN+rSoiEKXnHJAhLxaVtjzYMc/AOOqXhytQVYiFj7vTL7X0Vb9K/xqrYi9
1czw9arvTaKzh6SG/6VpPcCIp6PR/IAy08oi6NdF6PPHHMe94OtLN4cwXIelBNak/L/ShQvNA8rL
t4SGYRvnLVQnjcEr1QdhzQn5aKTbed6lRPXdbcLYK1dMYc/QFwmvcX20P7Pte+FFLXSHLvxvsHEE
H11SbH3FME0mimh1ptH987s4CaRuooQBvgyMi3tGOhFHN4IWaQiGa/ChfO0vbxWoDC7OVkQbxw29
erVibmBx4IuevUjJCRCA8iCrhhVtp4LMItRoMrLEloW3PcJRSmFmOq7lgKF2LSeReN0Z44+LZAoc
48smN85o3x0gxpjEXFSOiwrEo9S14gjyHMx4FgBTVbTjbgvL7sSZeqNWHs1ZD0FuOiaPvWJ68O4w
07Z6EEKIIOUye5vI72whntVNjUJMWhsmbqENecUvpU65myXDqQxWc3UZUZaKvaIz4NeWYAS2hC9G
mSif/2PLx46m4MBxYhfbLPGwU/DRbGKth50w/6qMoqfd66T45TM9MS7z7tvuSPh47lV5KA/428eH
LdjDMmo5QHLr0oarQTUQ+jf6SAWTnb0WTD+3/sY86U92AUrZ44iRLYikm9+89vQKvvO3YfX14dzw
KZMQ9mm3Kfs54pcbyhMjSnTXQGkXB7miJ+AnQ2aLzFEOiK5MNSqPAlP0N2Fu5yf9vrPs+nUDwtCa
FtOtJg/D6BypzYoejhIjlIkPcodsmYOlU0kfWZRptvq9+AuRxVDel98rIpwiugc2I0yi2dL8oC+t
WTTzhUZIm40DmsJc3h+euD1aZWk3D6s4pVXJ+EFZUygNdr3PV7t/cd25PjLblv80R01ba6WAKKfe
eaVBp9IiQGezj0Fqj17LladYdoWsehI1himMgs3p1ZoPeEtrUnutIi4lh5BzeCn405Diy74QINeb
EK8r/H6PGuVfkQ6VoXG+ibOfRr7fnuHqgcmd3am6+jx3SSc+zMZUsaHEtYRZxve4lfqs028vMjLJ
BwtDBikb291LGkeRXOhzwAiVstKqkh/HpWJjVh5MCFtJ9U0vI5GuCisZrYXmO4JtjjNCOFj4jyOE
sDgdm3YDFYmGN2vnUrQ18zHGIBrB9KDfvdgEgukp2FoEO5gpNqfTML9zpOlrPxOC5uP5kC2UH7qX
SYUQsk/JAnMXVMshopREYqQCnlBuYmWktoBPEWuaU3aVoZX9RwWRr8LvsGrWmfekOOOLHIvple15
p9vnM0JlkKglcv5ZtAGgyCrLd5G8SiMOe75nC9QhhhOGBRxVr/87Qkd5hv233ymIfR/Tc8iPv+M+
65E7rCTMUHwxoGTJAOaXM/p+72+oxBvIsuFJ7dLGvBT3Hwn+Zf91Z8gQKDm3kfGDO1ZnKc39+tE3
IBJhwUs1dTmm2MeAckLqm9Zu/huJY1dAyU62o2j7pSQZZ8Ah/vZ6a5r8iSNq34IJniP1wNPYVb8z
uOk+Wb5M3E4xIcQEEQHeEsuGuwk5NfRqkNEpdNxkKU/f63XWZh7VVMR/wdQBSRpnTExZIL/hVlkv
8R117e/pYk9XBg1G2cUIb26O/ZNtmk1Ag8YcQGZPM0CPScym/Z392uvrj+x7E3hECMq/099QXq7d
vK307+OdSa/ahFZVy4auYoSKP0dhnNB0q5tVZki9m2nDDL/cO0yUvtOd5zWlv5TrCsCLv8P6o6Tk
UK+3fjf1/sO/IcQ8/F/nILAFyXQs1GjqMbUvxv7OpS4Ax4YEmMpuX6qzyuNF+d42RJIil6ukaMTQ
VMU+X7v8of2v9gvB1yNQbvQIHfr/n6DDpa6CgSKq8FM/4ktHNtcwMGnYnRIf3vq3M3BxmkdoxlQu
4GkmYLgCcWiwOYE4vuZfYUEYAUox62JjxV7OoBq9j+qq/ZfOoEsVYbgoCcZleux/uUxMIc1LE3up
7/UY2a0uppWP2aYpoMrWsarbXsm54XUCY0r6pB4/c8HKfFnXtSS4f+8H7vuA3z1mEQP7tPB0BIE3
JPpvo2OEeaeob9Gf1qMPCIwkiV/qnCu1XzQ52oiA3w/C12iXf4UazOKnOHLMIljJcaUuNsHSoZGc
W9twDhaQDXdQ2+i2qdu4iPNnFgNwUMJ+Zz3X7OGSwM7SVQIGVkWJy+dlV/wb8MVsKMVQ73OlUbx6
Ka36o9gMNs3SVbRqvOe6x5NfXC4dqdGgQCDqRy6r5Z3vf/XD1ufZfI4AJs0Ohz/o4hD92p9OCKHm
gb5FZ2UpFpgJl9nmDMZ/WzL7byaUx26mUVzKc3uatnUlAnTFTxf7QfHBA2PWf/tXAQwO9L3nJkZF
tDRrqSuaisNFtVlcewwXjhhNst+52yQ2fTJh9m8VoQo8nY1TbJYIojwGXXkrC33F9m83qgT+m4lq
xJVA5L+Ch3NtBIxW0XWfvJHD4EnMfmqpdSGilM/IydFlprM+FOoDHZp3D68vaWxZT8KJmYB4ZRdP
1fKBEt0mvx0ZbJQ62GM0FBv8aCCe2plB2M80LhkgGqoNeNkVvkB5r9mez4wdFg9Bh3H/HTghhgF0
+XFp6GJ148bQMrJUv35oxRU2VmygkxIiReVBr1Q9ITDTwA4qbRFodYXV0NQIsTpPejY26hlBW4Vr
zz8VFZQvzTSyu7BqzWyMsZZfUMZubAVOH4uP+1pbI91hDQPNZ6lGtZOiopqQom9tMPAnBaOKwtOj
wNcVBe2x7gaVA71eZ75TCKM7eor3MRNC/c6bh0XfuW0MZkpVxr8V/j2lwQQfHxg/6QKBwv1cNqGj
xYbN0LUJnXy5OC3wTrnh0ansOgiOSGy4OJhoba773M5QvQ0tbvQybSbRj4Mvx4ycx8S5vSCHtLyb
Wu8tlrOBzK7HzdwvLXWDufu2ZB06ljqQf9LxJV+ZfZSWdWhraEuOZn1dKQRfUG49TBIIGLw/esgz
jo/1J9tEjEYLbajSsj/SHrzzGVvOQa4VSjRhFzKTrGeAYNLcZBe7ghMtmTYG65cdTtD8PQAE44BH
Kym8H+Pm5WpRFiLUNnt5XXtJ0O8lao9wXNvBampoYmf6VSelIIbSN9YY5A/RL6tEIpRycgXR/Qnw
/pZgAMDc2eLi/Vf9pCni/DRCJVGCAWSoHZJ7C2WEcudzHv3ScrSASrxe/ulysWlaN0o5Fdy4u3tJ
UX4SQL0Vpv3i6uW60vhfRpRlDv0ryvq5AkbU1UNP+ZeMJfgBOh2T1wTjsqJmRL1gfVEy7bIW8Bc7
8uQFbUJDp9dHkbKa5Xpxm9PEhUl6yDFWhq7V2U37WtDoskOzw2vUEu7aCs+wkrdsxBZDqrIOZxpa
Fg19mhNhY/Y9kVDR2hRnR0jdRH1JYvRICywhoK+YPdRAhnII53Idi85U7FDRxlC2nK7TaM8IOJ+l
6IObvWIdrEbF2tMNPMofYJV9z2p/hs/Ti67WOq5Xdh2S6NXmqtf4JUZAPnvA2COuxcE+TkFufQ6b
+p+9dVNeDDbnebA6+Ik4TeD3yzx/pX7uNFChf9DADR+SyLoxNafsoUejknlgozdXWlJscOFgP8UU
OIx/7d81rWZUXu+BQ23Drl62Wa2EKPNapxf45ZLN0gfM36kf91bvM5SLmeaCgcLwAoK6v+VhCJAE
61Dmy3qeRvkGyr6aWKmQXBIxphCUVdc5trpxabFvS/yyfw8f519HmZ3rKPvK05P8Fe+XVPIBwtTM
/F7kcl8XbqH6Ou0VtHypr49REnHTvUf57r+vDZX71f7CrD43ylzKMn5C1A5NDv62wRGSqG9lbOUv
Z0Cj+ZvgEPjdlghpuPxaHZSIdX9BeayXJPvuL4QQ8lnGAAjh4pSdF+ts0bv9+kkzYPPWFYwPLltl
sjjUXCzMCnIH/b9cAhRSP1rO4EfNrQBqhmL6wmJ/95QbmCFd0+5L/QemFbVz7+qOBFx6bfc9FG4g
FiGTuGSw2wCQ8RHb4IbiOmpde5+gtlsviLH8lyZYD0VtN1VH3Ez8y0nidYBTdTSbzn9pWGFAnG+G
63bg5dX62f5MHR9JLy2a/9A11Ay5uFX99pKygBkaIlO7rAOAacWkaRvI4LgsWcQoyarYGbx7WbIC
fykMkxeqKJGzIsYo8rWNFXxH+esnjj9zyNXugv9rKKf/hf4fLoCfxwAAAq87wuu9lHz+AhjiVmz6
g8sr9+td7c31VnjoONGKqNnKrsxk+F1TD8xW5NhHrv+p+m8DoHMgsSutsgSGhxTdwnqxdnlGYMIw
z9+mtaXSThuGjysNmz3rSwzeqc2vRVz376MdyJYjiVtxfFiSssc75+18Hia4ojl4/b8kC9TQiJSE
HkpgtqEmOhtHuwxi0Zvw5FOaM0PMpIeurxN8fm/ITPkQz/Hx3yn0QElMJ+pHKieGgjIZ/AYCLPFq
cR3vYPR3CqE3DyELZXxQpO/c6exKitcWf+2opl69eU/snRTCHk4z+iTtxp1zyFHzNryCjTPdWs08
sTh71nf3TwrL78bXRwudjwQ8D6z4nJflxystlY788b0/zYCPZuqnCuah1bbJOSGreWYrAu3ZRYic
RkoGOqHwKJ2eJjavjAbzUT69zbzDHx7qhsWllRvv1uM05uyqM6FBKyoe1S28XlkLU44Qg+PyFSN/
5zzI6LhK17nhiCa8qCR5qnzM7T481Sx8kto+TkO0ag6qm2KQSxmSn3g/6O96QInypNEqzhGwRqCq
3HV7dkZ4/9ujLZjRRYMXQDlAfb6DvX1bJ26p5QNbbfOaSqFpPSJuqkXTTQ+ytG7k4DWcqdnRhODU
qfgKnCkpdjzQQbvHLytD5+nkH4jFkN7UJ9Jv6xtpuFSjFJkY7ehvoMp/8kcMUAZcbsq3YrtJRMHK
t5M26HiNhiXMa4GJ0QpaZe3w+ibvC8BVFk1g4hfuieN055t9mdm43XKK62i1GWqRJNQTdaMrRQTc
0Ihal+k7WvrGJkThh1cfl57l0cD0pLJ1e0LWiUb5PA1swZmIp3BOTYjVad7Zqmv5XuZmJnJUNSXn
wgoRs5ZmrRH7xVqHd0bWvIBckbzi0MnjPqvQWBRyiLVAKc92ur58SIUZKqJLFUOodTHrtR2qufAn
QcSf92dNWbyEBdpefL93DoHfV3gGzcJburAXqecHuTPAGQZQYV87rCh4skY30+DK+lg5Yfh8tNSH
Z/yeLkyqAjisO5VL7k8RFtSiMdnkB7SNkhgniw+80Mj1gcvufNsWq9GJrPFD3yBcfq4tyMU5RXXe
7yCVlTDGEiZNvFrZgeYDe46qbs7mA9WjCdPw+lY8wW+h5Hx9odSis9hkc4ix2mkgrwsgnICkHeaK
IvMFz48XwC8iV3gDkDae4x2i505AXYdoNWv/W+mq8FXygVXyfiskqLRns3T6UAXJys7JIupp4OC7
VFNaJaLioTMOrPxpnk9MLEkMdXMYzHH+67utbd+LxsZDqG3mqKB+R3VtU1mFoeLTKEnDcMGtx+OZ
UuFfecxHz0/D17/+3eLbBJ0U6Pyraa+h4HeMeEkYWAoQz83q8el2cseNcNBtO90xWClkqwRy7ila
Ch7MeLYlZ4SIpCZ91x0sgAlic2g5Wbbi8S3mKn6oohzF92wp8VFmZmRMj7UHfFQLWb2U7z2swOcK
VJ4rmkbZaQk2f9CoqIFCxDczkM8CtMGUMeq+P74E+JAldr2vedcY1v2ukGj5GTy4pp8F33xNSFcU
teLU7OGGll0hY5xaPlXgqgsrD9R/SKv6aq0WDBh7zcQX+OZU7U5Tnj6zXFjpwVbpaqWl+Y9HtsjA
veqSeSC8qFdto9F4HlOarwckj3h+bDIJW89VShVR9N2X9QwEzhUak91nJ3tTReeQ2xfnjoJOTggd
w8bgDyG1s56FrRCiSoteUJyRT/0Ka5jsfTmpbKa5uj1+5+XjhrO/hQ7C/gVhfmencxcOc3pfYnL0
uq6pRkpk0jNatN7kcwG4KsgF3YoaN2ummiQqTrcaGyFnS5wtitDSF5j0ukphU4yiJzK1F+enjRen
kIv9PslYCcIYwuLSc+4n+0YXcKPZWEff06kt6ovjIPevQPFJVWsV8VVbM6kanUjT7NriIanPPfGW
KWtUHouE29+tnFpacGsGJcnroxQFuprP9npmCStqrKXYV7XAkwXnX0SGoc96slKhugSmK/f7KThj
Qt75FCmoa05Xj8ZQIKVLut4XpsZosXtEFqorHYZEzY6xSs8ZB1E2+RyyIrzJ1CjZu+4LewE167j9
G5nhImSnG9aeWQzVU17bzTMXp74X/ZAHdWs5idOcPrvX+5f9ruC9yE12S0jkc0zx2u/lA6c97w+u
DheUhAM8KBtuM65apak55jYHEhdXpz1Wks8Zvq7lpm6JGhIyynmoeDgdFhpO43TmqWR6e2HR0nKO
1kYziOq7m9r/TWJRFvF3NXR5xcbPoiNKffYde0ZDy2DJt6RpT/bo/AgyZw9BHm5FynE4Aawe1PzK
fiDUkhwb3n7fOdkfWbhXlPVdsi9wLJjCa6PcMMesAyltOFFKQbK0ZrWCa8XdK6fWlZXbLQrPVzqp
ZmQZJoEsMgWC1FdMqU8/ovQ90ruRLlxoqGc40ZAfnCBwf0oqjEJnVcp+yOdgWSeTGVdkUQy5YSm6
L5AXWhJyQigxGtd6JyXx/QNOofDY03Z7SLQjXL5klCe3r0SOP+EGnDAl7p6cvfy4Z5VRw5qjhH/O
lsex/MQji/6KbjbOolxLTm8LDUbEBuXL7/4BkGtegdw8ewMS+K50ku93+nP2eBLSVgz38ETPXlBH
BIGzk6fmIsIsU8E1cbQGLsVYuwiCgLHgzbqFMOBwFdQaeHP/iE8mZ7LA9CVVseORtniSD9vatoJd
JDQIEbhyf24x4b+TEfVAsUn0t+fO43l+s2O2VRLDMtx35BzPee5VoAQaIfa0b25Uy2izeizx2Sn+
3HlluKCs22yW2NPhtsVVPZp72E9Arjf6i0utZr9/ft1MlMespiSKrDKSL+X75BlSSBjKXjs9tLZZ
gcHRpeyXbc3itGmWevhEBVw9LB28uFiuV3Gn7uN+MV+HSQF1spwj1n2PKP7ZAuqUFfvS82iXG/2Z
mxKTPzyqUtZKgIFYjhsn70x3V4alc/zw0BRkxbfH6y+eDkvfQH24eRf6fCWhJM/Lod8iJfNcZD5F
GItw0NKxdsZtvz9lzIz5uVbybLNXI0pOZsOh1i6OifY1TtAy5X4diA9yGgU61oyoOpfZwFkh54c+
+4lzx5kILVW9UBer3g7RixMl0b185Cugvq0nXASxKj/pgYgVJrs2FN7Hzoym4lX5OWxQqKc2MyaR
4r9pDRPLISmsphzMusjiMZBQRJjHGSxX6TUcIiOiMuvHExyyLj4trd6gFBhBfscW3bF9ujjSOTjo
gtc1mjhXRW/ZPIGaY6Mt1TnobafuaOb6p505tBKBxzwkoJxFMVnRSa4X38UcC+08Dyctm01zBq81
944esDQ/HNMNLUvOSb9Jxt0JS3PDHXBJ7nBgZtORFT37gY+8zVsdpQjSblNTsxxK0p+rU/QlZaxU
cdM2TOrWjK31SXrv2S1XISXQjmxmWEs5+IbSA2SUx1vuEFiqrfAwLnd0VniOLpCvfB6vqlzMOWWN
bIecwzmPFqgvHu/rRN0IxWtngOdDkP3gLWfFYTLRg3T8+l6+uaYHm/KeMftshduP+h63XtwsuFBT
Eh41ePEZy3A5gMRwNT72HuSjF6El398sza9ALGGRaSLQCvTygLp+9kFCVGZbpa5yAeErlEj2KTUq
f0+7aFq6m1ciSbj4xlY3toRBYkkH/S00bh2TSWygKvaFbCCChzzjcXSpmKwjWMEIS7bCQDwoqQLr
OvFxqccaU70JDXIeukaUhjtwIKnDC7OvnEVbKddreBc6FrnKBP6SRfNUTb9lP3k7eqkugIu/VBgd
q1+mvzFFSSFmaDUlW/R8NxzIwKZM0fE65N7LsVRKJFufHH5UuCLTX31uAT+DVmav6BlVDM81puiF
6qK6uXNQtDZ97uaijnuREnmuaR5+fjgqiYRZ8a7nCVEysLIywEvdUDZgDjfTmsz+bCdIdKPNmlvN
d5iMP5oKN3BjGDj5LE0ljh0p/fjhb/BECEgAQSjN+Yw098WwRQy8Ut3c3g119G5V2lWOl7xykIp0
HTdYISkr0S7/IkgGOZ3ZbooiEGC4L7jFRAqKCD7x+BFAcjalxE9CYuDyYVxCgDl+SwZs3SqBpb6u
5Wi3lMW8JvdYdzzDW8GjHvX6ZiLLvqTlmsLkIT/0K96C/OogF+6CDD/5TIlIOlInpNQ+76QZkahu
Vg3iw2tLqWRbehnwV6R0+EB6pXOhnl39ehAzS//ifcrRMeibFU3Rb8MeqlykYxxreYeafEK1CGPD
lynqJQLGXJOaorC8mrH7QrVusbleVGC8Dd3+0PMxIFWBO0CmI4SzZcI6s6nOUhO1qf1X4welqDds
FXFF6OV8IbrOFZMWiSeWOmqMF4hxCEJB1LUknHn1ui7up834mJQhRmZrahqFtaG5NGTvus6o7i2s
72Q8lOM1NbJ0nJGFYrp0uffn7BQEguO63ycmy1FPmsv4xuEKHWR6F7t+aB56Jt4s6XmQOXh3iQGe
6/1vtTE/RuRIdhJJqJXVZzin74ncOMTXdzurh3T8lQv/9tzZMl9z5a7oxb7orPUxdLxlmRJDQao7
6gk2XWELBWgzQaTYXstNIZFrhc5FPoNr8fijRI4zUvpCz6G+rXRKWTk76wQGSjlHAYcpQRfQCPfM
4oroRf3FvdjZ6IJkEdKi2r4KNRn/YBH+opoEo1IsiEfUrKItZe/DDorhH0TFZB8GRZhqfGhYhpMM
BAuEtoQ4OIvIYxnhhL3hjbz8bjdOcfpb9x7zG89k7ZUpMnEC3+eDqyBl9lVsnvaum3cPjVdwRVz6
7zzQDhZJbZgrIOkenJM+iNfwGKrMtVTrL+TdGj6QEa5EYJbmsK47iiNFdz5dETFKDVOccpTqa4Su
5lGD3/UcjHOLs2NoDUE5m98PSAfn+KxFTZM1R4ERXgqy6cgCU99CAd0KGtpvw/UGcoEtO9mc46S1
zv3C4wlelLgkH4iiCLuW/xxe+HNdM9u6svch3PurtazUx4PUhqTr/I88h/M5N6xYApLwFegGTVz4
6ROuZl98dS2uzQfcGcjY23e8dMOJss5c9HN9ruqRzrsoJDebCoujePuAabAeEUFEJyXjaD8K4adR
8eiubXo18P2pgC00lrgLZl9yMDz/fDIb6wsiOi8nd7W4PJKCD0twiLUkGRFJlOuG23n7dtc7bimm
gvC1nEw7tQg6YZGLk/7TtrN1NWe4eSkW9X058yEt3p9+J8uzHrDFHd9np+Fud0YZdUULm/Q9Bg9j
WsKgRDGcpweZ4Tyrjk99JQ7l80qSYXm3RahFFmaEsOYOv617KNOY9qcY3hA6WYwKsFTKxEeQD+5n
nruUIDhbjjPGJfoNjtkShYY/I0KpNuOrvbvGcr3hPOzNWcr1InHF3w37q0RkhE3bb4jqWveDRlqE
DvV8BdpHtVokRbNarzEmpfW4yRjlDQtLy3qISqSMpHj/jqBU3mKypI74hvbUcStTRjE4ac+2pL69
9DRCYney36fG4AVBzYfX2XxpuATconr7Pb1rD3JpixxXQNLc/cIcXSfjb4Na9jmxZf1fJWUP0Ibb
xsUyNh5k+sQ86fi6l10KT2/aESpMhrJMPlx/cfLle1zXeDSPQr3K0D3fZiy+mREIxQx3mKYF8qrB
8TCbcMZmJjxzSWYvprRmyKCGuW0tlV7JNfQdFOqRCeUklgVF2C9+sqQ/CwaVHwpA64VJbtGKdGsJ
eilmZrQpMhcRjXPkg9VTDAqNhGt1O0t8qenVOK8fLD1uHhlICI1SEpm82NRNLDJNQsbGjWmCWWmG
3i5/xqaeLikQKWYndZIx2qnMt3VaWvwdbdCNF+NHl16+zYZcse+TelnStAAV8civ/ZjglnWyllCQ
lSZ2amzlzNO7PTZufVDNNDo+/aL6w5Vieg+Quou6anIZvnPBl3P4VS06tASRjEFscEB3Uq6VV1QM
/Zw72Yl5RQZCugb5UWi0WkSd2NVMnbg7Sn4p3sCtxLRKNHV3izP0zdvSSAy+U8/BxrYAifpDOfwo
2nS3kkxVzfrS22fdBUZ2HjQCh1VjCMkYlrEWNiS7dlkmHCWnQhmbGiUrzzyZGGJOv9QY5ZSWLCzq
eCQIRWWvGHJiVd3/GnluWD1hYPu56nqDJDg6cvHZ6aPGzbyaHx4jIralnp4n6cwmBVHRRS1rph1Z
iMU/oTxlMiCrhp0qVA7Rr3Nx0qMySOHI/oYHW8zR2dWhL7zvzvvVxAuQQIaiR5L3kkwLcSCr9VcJ
5GplA8jMrkAjQeIH+d51lJdtjYGoleWU4k4gv8ki+f7uj4ubIVeyEADt2EJw5+8wb5WQf0G4Hz1h
7H4pjfipQ9LL+XfnUughCqVDCILe9DHGB9UTGmrZdtFiYX7QKRXwhMcqvdXm2xxHa/FGqC1lQCTW
wzFJDzeqGq2WbCvfWMeOokNNzjXtojOUs3mxFCsFf98dEit1Gh5raUDCKqorCvWtX1IBZ+5lLA2e
Zy7pjLd1h4+FHxo5eKjP5TX9dFI9xoAwBzwTGafngLD5qqJWys0gf2E4CRGPdLxIyXOo8rXt/8NJ
4t99C+WGD+YYhxCzF9iVSgNjGkDDPKgW/bcuEYz5dYzNZSOB4n/ieCfXFnXfOMxnqN2uyJHWFhS0
GO1n4eN3ez9W6y041tgSM9a/UWOavTTeKFQ5FQYvccyGo9ZO2/oEzgF8wXDAo0PxN2uUAqDAyaRG
ROdE9rUKi3On6qYW3Iga856gsF2ypbV8WQzivxpLL0hh/MGbVcsnwXs0xOe+9qZCCiKUIwN/SS6o
DjTcu5h4PtGPXDkxqmVUZj1DTkGw/qf9U7c3MokpATJe3m9kjAojTU1kUrtuRlVrUYLFWaGz3cUK
5UvQB8oy4q8lpQ9Oeh/o1O+N+FYJFV7cYdU8dsOVnIcmesd0tffVGCHI9SbvdnDeGJjvHu1TVa03
YxK7TrJbELrBN+WabAbpRgkqRE2W3xt6cRoJP9JxqE8x8vqR5iv6t2ZVPUVs+Z7LOVGJkAvABwJX
Evssf4D1DGkbGvgnD4JWue/ewTG7n6CUoycQL1euxbTLKnO48/Thbz34+tZP0iKDhJQsYTG7dRUX
gTdmAWqydg2qLgmKD8G6My/W3yBwcjFkWhSSuSi/IGJzM9eynBmqqxtqVg1O0ikbam6PVdfmzhPw
mXchCrKQ64wsSsg3HkuH5DGWNVMqwzvcwqyKJIWthBhwRbH+B9f+ysxPGCzEyD+VLjDouewSFOao
iywrmtgvc0wOGo80H3fjPrGI22OXmRv4XMMLKmBPe4A9C51QEVe0Kl23FqmHZ3re5yzBj1LbeDii
YN8KyysxhvzwmBVBCTXKC3NS1WEGPzUH3fTXJRhA3H8VoRuRq/Qr6OUGRPcN0QbXcMnYI/YpBY6W
3+qlhP3IewU3hy82QU1A5BrlAjJS1b2gyNEx4gRZbFvTz6+JVfSC9a6YwovCKDOvV7BDRjJ3P0iU
pj1hdtlScBiRqbB1Pi8uHsUPd+OMZtRbWNRD0nvElnq6bReFrpmMU/wTAtdNFGvDiBhgjlMjX+lM
qORk5PGWK9VLG7zi/N2Vw/JxdLxbIn0/xVrelaQRDjLtN+JBUGlR/n6LIAyapaVrb4rs1Un41web
6JHRpQ02mfQGkdDAkzGpx2R0yVGRUChYJXlH5I39FwEVD6cjGXglRoKyyMq/Z4/iafMhA0veQXhO
bx8KyN6KDUD361sa6X4XI0RZGYngtoRK8g1BO9PjKjmS2Z4/sDTCq8Giui/BFUOyYqdHKViQ4vLQ
o3vcI6XmfmtYO+27/NFhlaQi/Icj1eXXXa9NPe3P9I+PCYkyW4xhBLd9Xv/HXQTerUDzCK1r4Zjs
CX/icl0HFp7xc4LkBCKBFuK8j0SFpgl05K4lxc1rd9zVKdfogmYwAvMU17XcmAIQKF19MuhdqXVC
fFc7+cF32WEteOWG1oUmp5CWIPJjMsuj5C/7AzX0BlkQn4w9ekb5wdPblOzXYCA8f8/7BOBYmI6W
y58EjFv+wQqfI6+wrWhI8deDhJbKoKuvuhebCvRlFEuTC1OSfBUuPpiWeB6mQqAyKXuRkd3F1IWW
Fa01LNdh+fgGQY7rMYwzLurgGBnOSaLu98MMXYbDnC7tDOOL+Qb6FSDWR8kb0LBurUh2Y+ruEChd
YlFL+S2vpXeukRyR2bdjcpteQGPNZB0n2cIqoi6lONEp85ETdpfzBE1EF359WGpq8K6FTCMQI7Do
U6aKvYQjTrSs2IUbgVicbLjbr1OUDUwyH7on/J9+4EgwOH58RZYEM8vg1U2nu3Y5oQXI9dWlI0o3
xsShDe0TDgKv7OXUttOmxZEMuhqHZgonPPkvi/vewc8s7ksndpJAJYeV+w3wpSOcT8ARzvFyusCl
I5yfR1qhnGo8ZPQHASgxD/cbg1xy5tCy9gzuEV46Y7LSwMCkKfZcKSf/92MeIGfoyqrLtX+7oskQ
Qeo30iO0WtkvMiUMH1FTRKxKrVgmu2qqHCnARxUTt2TaX2Fdn463TNGJfi+rjgeP4BjK1xZm+ZwZ
WRPtZeTCqVmsq1FXu9ARXvrG81kXzrZcfn9QF1OQlIqsWr0NpvaFJk8Vzs8jNn9ixoFs+8ziausb
i7fHEKLzOpUW9T9agxpr53ymXLdbHLafbqb49Asf1Q1mSuXGf+9xaN7k5fOGIPVrHWbOSmAGjW6u
tmNFTgLnuyWN0+Km7WbdeU8D4h9ZeuplNbqsDWWHzG3IN0x7bTc7jOSpxM+ov5KyYORneSO/+ZDL
y6I/JRnW8rajzLjV23E+nV5n/sPRLELS/BzXfrCZeekExzy6+ydXjTGGGzUrG7HT7/kJZHxg/OVN
pD3KDjPrgALIDF98xpo1jqN7YD1EP54phX/xyGn+6fan8LsPvyikCPFX81VPQYpTkmSrh7fmcAuK
krs3hDSU4wOGJPyjk1zgjJRm/QBtqqvaZP1KSiJUjuFllltEpTKCNe1RTsUz0fnC7+Liz4jVFmhJ
C2yPNIWiv0q4FiSz7HqjxlK9+fS/HLA8bAxXYYyhXCXqo69ESi+DDqPVFJ3GDb3sBS2kqDyyGg+G
5MAnHI0b87/LusGnh67hwocf8TUVRU7M3OGjWrWFj9w2tPlc19VT+cw6I7RJN8miXxp75p3k56ZA
xfEngRzW7YGj7bk5doOGKgmlmO+D4lbXSIdMt6brDbUeNi8n2EJlCIcBz/rRnMdK8gwgQKg3ze8C
nMkCRmfz1g6IA+vN9TdCV2/c/R7LpjNU0qRK4mbEjVBdByhMYiqw+WMYPuFIm3vcu/mnIEFDSuxA
s1Fz7Q2R4o6BKPJgmPIV/p3OXfB8F2MzkaDD9GMjPgTso2nYbljFmM7T1/ijGind0WGCW499i9pL
X1Htr3Ss0+qZ5UZOUo62HrAGSalbMI8PSWQSzxPfFKFXkk/1WCblRKA6GLb5RGjxQE6S+1j5Stdo
A0E2PVVL2TejgFPVdqBv5gni+ywEAwJU/zjsA9V791gZd+moT96SuC2E8t3HbTZvvwGxeL46kF7u
ejjr5ZjqO6zA1xbLOtx9OO3c/1VA8wFoUfrITG/ANKRjv2hSWW8tPV/rkUPL5FPXx92KozIV5qXN
h3v23T8I3Vj0bqN1DkYqeNg/RDooli8FkjvsGOjMlBklJ7K3i+iW2MZk7761VbMzZEjBryynAAhz
wP8S2awLoA2OkDOQk759LQSxfypuPZAm7tSmOBwfvWHvqc/QFZcp+HLne928m0eCbtWopt4JoR8Q
1kw9W2Tc7I7iyErNcc5aS1e5wu7H25hZcRWPYrUS1a3u6K0KcRleA5fBZ8ZO8/Ufg7US2HNMk9jb
dW2fFRnqW7IQ4VcKlijWe8S8FOleUim5WfVfikDoUxrnm2+T2nSzAXhW4gVfjyl4NftdTondJOx+
qLpVg/KYOhecgVQ3LSW2iBOLqKDUNNauq6dQSlcYzh7UREGVbr8uN5xml9KI8YrttJe4umuILjTf
rmvYyDBRojGYX2mBslum8hlX9xLhYZsHmGCgkuTIURZsFfQ7j9EfeitvnYwAyahfmKW0Bc3VGXYp
E6PJD6OYKYrOpe4aMLFynoDrfG8LIbF8d7jkscSqHSnsJHPisWi2+2CyJ5addSLjk+S4R6TLDdGg
pBHJhpy1RE3i7m/DWtqQiX1QarjsLpOm47pWnFgKyfXRUbS1P8TE9MrjamXfBvufcK7wM3fxf4ta
rFrJ94Ja557QPFWEAaU/fY8X3gvNg5OFwkpYlqsF8xe4qYwTQaiRSWnSRHcoPuxR46wq/LgvdKS/
VwHQlTFJOq4/+c92MJQ5aEEEqmhKWzkYVfFM9LtZJRQdUhrcp52k5slC687ZS+8yCsiECymWIOQW
jBGr2gXsNokdTkrDWuYeUmKRL6XDQWqGkzq/aKZe/0MzpYKzSE6V94GHl2F1pxVfaUTs9BnT8dsp
PonQWE6jreQlurDH91QCu+klXAtjzEKSRtiERyCofdb2d58pNQ3ZfQir4OsiDqWSkUxgNzr+QqJq
Hp3hVaXwk3ft7XrbfzkEVpoAXGRfEYcRlXvKORixBDdeQyLg+2ouy72JJFobfFzRmYWeMl2LjF3S
NlryLSLOidlBLXezBQrI47JSkzyH+UoUicPreNuWZfBDcVDCy6nVFethTy7TzjDJRGptVNc9T8hY
OyFk7xLvavStLwtg2PHMkQkVB2rZyV4T/EkLkqUD0ivv13AVU738jr6dReW5mv4OA1/k+Lmoq01f
En+5K5X3jvjFUp4EHj99jX58ZDqzOL7wgbIJJevjnU9XpjavZDRz79FXMiiE93svPzLEX6OI24Jc
+KQa4IUrb6FjUyhPYD8Nc5oFi33VVYv7ys4cz+5862NwNcUFGymuanA9J4jMPGRLLUX9JweQJ94l
3pwRV7S9ylTkt7nEZDdoF6XrSB3ekfXGRHlA7U6ckY9HEMhc32MpRsTIcXjBzIrswyKrgeuoxvnH
Qzkv8+gK/LdmPdZaRgm8xArdw4lu/NPDOQohxKewteHc08z1rkOr7lY6O+cfASQN9jWT7ZZd9zed
IhlJbdcILUMOypCiJXXzwdof5tPTlODzZkxKmfwFUUctds3wsRbOTftId6UoWSHqtp0ySwFi3P9Y
7dOwcFB9rrAavOe+lh2HmHqx20bS8KhfqPKFXHs49TZwTFnqixhORXCq3cF9TdQV8ZpJipdFYo9e
YjhB3fLHlwDxnmM1/vVDHe3mz3zYIi2HDfpdvJZHwFHd0NyQjmXyEkCmx7lUxriW7j1ZQE9qY8nM
iV9YapoqAvb+lPlJ+kbNNKin7PGufuo9XuEsd6ueSctUlOHvJH6o9SnbiwJ6ay+iNeUrnbry0bNh
uFnIVoh92d2xd4KlX/dVbuDDpf7LCC+Wp3Gm+6JRqLkEtSpNIHCEIN1QOOX0hOO2dKeOZmSmx7iB
ez0KqJzCqoyAexuAwzONomZ+oLy0j0EilKdZqq8YEbvPtjI8e5gLdzTPCUoyr+bjZ4GspHjppzAb
AAfI1MhVqeZWe9RGfOaVIHRxtp9va/7tqmB3LAoWTWW7n4duUk9t9aCgzu3uSEV6iRqmvOv2KsjT
rUZOEvzRUbAKQQY9pWwz55hhh0m85qsgBMMoPjoy9C9z56p0WgE5odtGyb7zYvTFTpDoQeL5pJ4D
/0dUFxy2PomLd2fJRJ3FlSyurksZiSU8djJxIK04OxhWOuorpiACI6W9rG9HZQUd1Ny8wf4WYFsE
CU7pFqYjIo2FskI2eojex7dAW59StD0xymZpI96NusHgfBYTx3isTL4m6LFn5hgC7VmLY2/biaBY
K3GTHZI6yv+IEnMJlM5Wed/3T7pXqHQaraQYGSGbgATqDyU/woh2SJD2b7RNO3BARzP6OfB/cjQr
r5lxPCldEqFJvvn6HPjoLvoh+sNbf1zCGADXqtcIZl3O9y4GKBNitkVqLlUqRF0j8HPhetFw6coO
VqJfmWDd4dg1EmmuQCKY67ZwrMSvu0+A2obRTRGIy2ZZce+yZon+WhV/Rh9kP3l7kWRAU03QrjD5
FQtyVWi6TTD8wbCEgPqTwA1mqXDd/c7W9wL/YvUHGDfL8d+6nY8prkIf9PPODue4tm29KTFobE3u
cOWIh/oL9V/1GUwuwRpcXJpRmHE7j6WMrTpJKWGQSLxhke3540M24xKBFZDrOLTqToD8Ofw0XcwE
T2qCzcjiT+KKCBQ4W+Fmz7DsT/Hhc8LCBwRV0C/3c8x7QjrJl6RQYz2ug0xn/nMWQZT8DT89FhmJ
w8DbdLPn8jlboD6lkeQaUdIdwluteAYO5Kp6XW836T4HfmQ+cj2cW/BSLqXYLSCoxz9dLQtGHDgp
Ce2+wadQ5F+67b5ZPV6jtoQyKe4Aj3w/ObdVhF6FmUwjyOBga2ZKyWnoRIYxeUS8XUUq1FktR3/j
9C6X2Vu9KqsPBTVyAG51XumDf+7Y7aDeLmncanBbQgFcs8T3zIqZXJHlL358cVtq6Kx4xmUWgvGB
XrjCzIU4HK/9A7r/ffo05lhhzwOrJz1/YiPKIv45lOj8W3ULQslY14ldcCjU08TEzEFnd+5+zTYN
Fx6z7E8VFdVsP1gbxkUPhpPEPEIBzlT4YpSSG46I+otenvGXwi4+3x52rA7QyuBjOcvUSAcu9hAP
87N8PZCLHNQRyvB0uvmvc9WE2bBcrB3iiXJJat2hlt8+fphA9vLNbfQcorTShEDCWJYLCki2A1R4
i8eFkDpul1XlVDAAIu+cCg3TKQQuR+V2Kce/iqYnhX+hI8TA+ldwOmmUx9E7/dCvnEXTgxlYmK25
xfJ9L87LNeglYFIpHsvxEyBzG5enrup8HPHvc1N9BEomVmQCh75/fo18iJBT+xo9dPBAD4X07tpv
lcICpIpAZv8mTtNgA5wIiOkiYv3xe2tElWTxnetGztUx8+t36CTE3xLXSaklnJU56DZXVeS9pxcO
Ln/GVdhGNxLnjMP9CL3l1SjAC/Frc1FgKDRezaJgqrqc3rkeLmag9LlAVN/qclVSNJAMSuH5P08H
30Nt56/FdEwFQVwsnEYt07VjVKQyMuYIkPo0FY0NHSlLP10rIuSQYVKHCyBjhbHp1bBBp40SfTwO
pCPTvTeJIqUC4SQaOXepZDx/hq8s6J/DahIGee1+q/wRgFtEVW4JhT5WIIqjpUaQpzxuUGvG3IAM
GaPuIclAEBQFsTqekrKoUY6GykUWiwwdRNwY/dDnJOPlzSQzl2XmqT1j1exhj7AmgXOTxnynFTQP
AU+yFmCPX0r//EkwigIQEbWw76/xFau2IyTwds3xhXbE7Ch7RA8GJEx7YqzNNfl0B/f2V40FpMyn
fS+QIp0yUbTCB6Ol/M7LTxNPYUFzvXyJCyw68WsUxaYnFs5V+uNDKkbzFQ1Orp2X9iQz4BnE89on
1Mo4wsMfz7/FOwQYKX0u8EMNUd1l6BkXoXXiirb0eqs985h0XQI+nyPKzCkHbAHkbfZQDqsGTe54
KtBZKQoMWJVDWtYLCr0JorI6jIMoNXnx1+7Pklmr+F66Nkr95zz2eAz0i5wWNe51syLzPo3kq82g
bLdGmcEKoAJ81TiDwChbH1Cx8/QkkrbDkKtP5HTjSXlfTC7XqExUuoj69pAcp31uB8BzyBCnP//6
+hpd8kKkmZHPydK7Gml8hi7tKiuVJJzSVDMmhXiu7GSq+XSu68+H7LrmaU8qHskEdssA4chq/Yux
Dbty/D/xQQPHp1a1Fr8ZBs+Lm8bud3aNqTNkT1ZaNqIsud7o14UincrpnR+tSGhgWSRxnFx7nkrm
l42J/TwqTRkEEFmoN5v2Od0ELvyxtwyRJDcbn3GfS5ZrB+iVD6kfZnz6/LIzFrgaiY2qbcLk0PmN
WOWtgTmGv7HZMMwEH7onWHdR9rdEr8ElP/UVfZCBkYeqYcp3ic7bz5Oc+/g3W2IZSIECZ+lARIKQ
RwV1ekRmCfUwXen7D3RSDTJR9+tRLotcFn6Wy3kmNZKplgo7lHQBYE4+iGFZU5ahMkkYJ3ZEg1xK
RMb0D7yLzvyFqgC1w+/cKzNpw6Weznk3DM0zbPbM1rBe5UIZX8RhutCvBfwgxk9HM1N5YELlQkzb
TTtAgVk1Kzd8/CV6yc/2gF2fcUweXcZKq/PN3zLu7p8QmjFlDMghJ3ogpTd8YmevkS/A6jfY+S5M
2OuQTePG5l/cD9RCKHg7P7yJYY355RNdseFD80NxrGpaAuZACtff1rtYgmb/UVPxaww52gEBzNve
VtFPMqlkl8K87/InVjDUzzRC9n1aMSgL/7K3+4/dByjzVvxdaYqREc/B+wQ4r9Gxrht/J0yJsy03
C9grnpNE1D5t0BXT4MCH/jH+ZWFodD9LOvxz7qcxq1QrsmqVFFXjHvzhAxYLBbg6jq8OCGMKvBZL
UVp3C6QiI6XFWbsxdID+OxBjhBoO3Mtx4AbGHVplzs9B78s57QnfqC+O3ftN3DIQASQ+SyZUzkS4
o2XTKj/DANJBly1eaWy0vLbSs8zILL6+ppyvyLVuABH4/Ibs94AyAITxTC4LHbV+fJgbcuqumQTB
fz1+oABU95wQDSVfVm/4jgs1i200zyb+3C4khoGOEXExNxv/aU5D3d070vdLJMGtWFxaTAwZaTGx
8rSnuNegwTrK/rrZbFdVBoKhsnxy6Jsm5qO4mK9obuvoFolFYKaznBLbGkxg0NO8eUNfhH4rNiJr
m++F4bLohddcs+Mp5HT2tG9l/9x9i82y72T2NNJ59tt0IkagCU7VI3Qsas9+qY/z+2UlGh7CyzU4
Sis2Mcj3139jUknA7xM8C4aGkuAl0kY8e74JrW5OuA1PJvb08iQkOp0Lfqkx8GvHCPgD5TPXJE2u
YDa88/PhLuNLIplxSIz5ka/9DKK6iv1boihQo20vf3oLE/fZp5THGkzZ98ztNHPyKmk+NCT9ZbVC
Awou/N7i4NwOEHt8OqhYSYP7dCLCMLoRR/hPYRPDAyY5IVhaJY4Kvv88wUBkjtvHE5x3k2xvKVsb
NJcnL8ZkEe9/2fdkeT/SCMWWhol/CwH8XxHSoDFPYIlT/l9GTNSjYxqYAj9kVJOfS2jNuNz9PRt5
/mLLVATFry2opW+arWH43791DNxFBaSMVTk+ORUBLvOBHGVanTIVPFPOQrIi3EtnPDR7Un+77f7n
NJ9uSPsqW9zA4f74aatxe4shobVl3NCrurdRlOw9htPfmjuAwYm38XnedXRCgLgd2xgy4FjRdd/+
6IC15G8964wMyvYKlgpq1vL771BSE7+pqpfJ+7sZ4gg6p698OQ/nqCd6UGl/zQr/LcYtsJ2M5hQZ
EVMLcFHXz+xmCv6h7TbtFu/6RsR6IXC7yCvN3p49qojlPyxJLnxAzLpx9zm49tbjY1Nq58b31EbV
J8Q3ivTrh9beKSqJnGQlivr6jIIqBITOdlodgFw88oFRzZXkWDyU4436cyqmF+o2ZT8DZMi6L8Vo
xfZ0/t0ZPqidAd1OSHcSJchjOI7Q1cXLpjH7+pbwvBLVvTrk4VS/8PH311vLiY4OH5eBG9GSRYzX
30z+IkmKjSPV6v2HJMkRYwPdehsWdKhwb2fVNHz0P5KkcOHDF48sqRau4lPpV047rFqhB9ndPKp/
a3w3yeXKdbvf9SIuLP7fSAlmrwzlx1E1shAed8HHjwqAC6q8klNdx3Sa+1qjUlKoalHmoOGhaXsd
ysnP169eitW77XntA/+xjLifXUVa9/rCoQA+jM3oagQdETalU5yuWTvXXso+VURTltXvLZAXhvaI
ZnQ3gweT61qRQeMYEjEOcUOJQTGQgH/GeQQqWkqzpW49JjuMNcPTtVHevkK3OA0zFfejZD+OwKtQ
cMtTtHd12IzGj8JiMtbR9Nnv5ePk06m20eB3jB838p2p+HvSZqWGEf+Ixt6GxEYijQDztt8NapFp
x58USdUUsHKB2Jc8vyiSdgGKpNrnnzGOeozOh9h1Kr5iU+OKAaycbtNOUnxO80+ptW+Scn2dymvw
VBsaLsERW8+W9f0taTCAreucLE08iGjg6sE7ovt1KeKOvjNfGAXN4893w32nQykFx/gKuTN3Nir7
G3s4Grnl9FM97c20Im7fD60EqkAgxyGQnc9vUubNyWd5pow9mToHbikI+8MAtshwtBQUIJqyTAU/
ceJZGS+GkX+dmOC5nv33ChR2xoh6zMJZc0r2WgIsmgETjBASTg5salXzzFDe7uLBOqcFbz3+Wd7C
51Ia2j6w4tqDTTsZdUMp5KzXNhwpH6Z42wxw5Vu8+5L4t9rJHQ/kir3Fdxg3MndHtgPJHV4AzI96
zZ7Volr1o5OqxWJP+fXyS6bzoq913OhJ/LAiTNObFvy75t3P+ZvfCxKxtFSczi68OJ4lUs1H13Vn
s25fvQP6Cp+YmaAdB3E2+9JzKJHDrlAf+wElGN0VWZntKhcwOfJdIDUQUfJatpJv26Pfq1uuWP14
TM+xfi5u1nlP2TpwhQ9yoqATGGvD7Dd4Ixjj3hpz44LwvUhjU2bqi4nd9cLSaAuTWbwi9dKDbtbS
puQff6/YsAeI+uw5KYNrr/ujcJNX0GzSJt+c96Pa9QTwACNzm9Jy8BTTx05Pvk5xbMpFIOZjyXp+
knpRP234myHpkWXfgRfAkJRoV/EusayHw8HbOtaitPkQFKcPktEJAAgSEh0aunp4G6NecYZmIrKi
b9vRxzDAf94h9IsV7Fan/isN/dHBGxib4mKVN2RBVXCd8vnJHJYSRhlmsYjW1Jjb+tKMlHdu5KWG
yQqsO6PAe/3DbClcPcHRNv9QwzorL0n10qz4mLaQ1D2PLgXZyPyHX3KNGKoz/76ijxaFa8rwGpw5
eGO5A/2Slpush7JkFPvqGfinIKczUz0JRUUpmWsmHcqaQ5G5ZSJ9cnwMUdk0pu3vSftmRRzgY/19
o4qpQHBNgbU3h4mTFFfAoWHNgvp5FvtnLtL7j2Da9qdsHjHrCwzGMVBV7D961geD7XN3f3AswU6Y
ayxREYPWlCOkOfGBccaUSQiheZDh8UGg6+YHK7eh90+KRak+gskdm5xO3mmyqCkbu1ojtg08McYA
PHqAh1/ti1jLlXskwjqNWvcZy7GvZln8CBm50cjuf/iRoACBgZc+YxUbDrrz1+qLe120+D3RWkMq
leghxOygXfKxROtYilOb1wTDOp7NR83b7FN5oCllQxnLXpdV9p0f1+9Ss9lnXQz4Y9+/ymn9Oahd
+/DbI3CgLAts+C3G33J/BRrna5rpAD/SwaOf/EhZvVe1yfOJawaHsthrN5DquT6aos6PAX6ktT/8
SPa1M96iUdVWP55QN6k307OJT7U4XpWxekr4RxADAH4kdURAxUBsOgVmgtinpPUXlW6P36/3WtfW
gJqWBsKZ7RfHhrPuK6VQuFnbGM4ZTaE5dMheYZFWjdw6/PJ0qbhJ1ajQa7xxdmlztH5jjIttiiSD
ay1dKcVX7306gjm142q1/dMCt8M8QtM/XE8DNzG1X43e1CIlJ5cVC9sB6FZVciwEFt9u1y2EnT+y
m3iw/aZwG7jDIvDmVNPBUEuqevRgnuwm9mCj+B4mIWjnDjfTTSqhuvt3DjKeTVqDntASiy16rMdg
1CqH7XnY4XTQ/TW4u0Bh53ZCmor/tc58RVCRaYzRyx9YueH2j0W/+105C3RwzmOUn2hj139crk99
5HjgwSMundkRtrR0TWRkpXwoEPngu/Lsy3Yu/j+nMmlgHDOOzzbUagO3MXoZ09CepNoAXCdbwMUn
1E3aaJWnW41arDklhx4UFwM/jCotFBQW1mQ0LEzZaMLxjKntLWpvLxe//6snN6VonK8+haXtF406
iA4P3sVAyonhHXwcEiFIxBr0eoQQnHTXCe+qFusOG2KYtmtxWVP9WW7FhXXb+EVkTm2s9lp5o40j
qJqit10BFqfpczTjLgjW/ZBVOTkQvEv6mwl/IB/zI/raCGuIQQDdjvxaeQXIyt5NbHvSSoNMwCUP
n+32g4mWG2v3Ztheli0pvr56s/uOdx7kVTQ21UuxyYr9c+W1h030/1xjxGUpVkSLkv00Hwxib2nV
Ql8DahHvOj5p8hEF6rWscIx3AEcwpcuAuEgpDcP2jbcIgBuJ2vfMiROSIArtPP8QTrHY/n5ykFk5
qgnggaxytEg/Pen33Xqda7M4SPxXOxE8v5r1eBxDQSDpU+cHuh7FJor1cVk8V8LIQ3Or+g+G96zE
Aw8AIwAgHY/2++ElEMRo6bRtafNyomwgRpzR+V6cR0Ps1GrxGmPSiydrwvRESRiEDFhcAN/jlGm4
8LQWBKHBZ/L1LciL6y/II/nJg1E9tRmAbk8boSCG5yoMaKylLVBeHJuOqkgpg2kls1vRM8kJRv3g
bFAXCv34rleRPPWXEQrrG5W6kFythJU0NtQ7r8Q+Kzj/jE3tMupgMV4Uggh2F8pZ4wEjDvYe93bv
UEVYfHj2q9bVRRA99rnrKaUfsv4aPX+rhyDsYVNNut6jm6Dp7Yb9vqYZoqkucSXnISLBRTbulTmM
SODMv7C0pcHkU1ZtTv/Hh63hzwWsu0b6fQ4rkzIdrGqA4hGiYVOJ3inxD4t6iWVhQn+lTRxldYRL
iHRrIsQoXn40NZTJVsmUrC+ugXZvlrWGZX8ylT/J9kmQibiChFycQs6FaWPMFvOjHBCLg8zhQtXl
aE+kenzX1VJBAEkXfvShu1DTc3+S7CWVbZ+jxpmJctOZj+4pW+am0qn8zstlWv9SIwFB4/evbmDy
EnxEIQcj1axb/D+MVQl2q0vB7E4eEdVqqS9EA2JYtQeuHx4YRlRxu66r1045NMYkX5Qld40ugBjk
VkCHCrllxXs2RDnAhby9iXycbOsxcRRdUfrVoxUsSzy2lShoGodRQDl9MCQf1H3w4ezFjaXRCylR
xAd8bc9r/R4VdpNcoq20J04VXNW0f6l9UjC5jgATJczJpjsuJSYXzBaA55bNVTisAv4mM16/pxt5
EGJ09qX/Rh4be9eaFk0Eb4lZ/mySU5eK4eaCkpCklZZ+rjMWfuztPCulDuf+ZmUfEulpyRUyPSR3
DRWPdx//ygiFt3TKqzi+2ZcSkyNAuDJnjKfgFdIx9N673wmHYo4Y3/wOlj+TYgr5d8iGe1GKOuib
ECjfzACuv2w+GJLzGZMIz+2NOqAKtWhmQA5KUfdkPqkPncXK6F8dzESCCoHqjMkFr1Hpzx3dMawz
e0us081Hs2q4mimsR8U8mXz5/SnCU+DjVuqf3GrDgnLRB3tPmxXOY/Uc8j1NvYobBvD/cqQS0aBZ
C6nRu6H5p+r7gnuK6k6WE5NFnslCL9KVfBmE+eWU/iFG8sDkinvumvK/xEhVP4mRBFY1DcjagZQb
GT+kY3FW/8SvH3UB7rzi/yFGOgfKsiFNpJeIkQwAYqRCzv8hRvIFXPui11tz179YoabvIU7ZRfHd
cXT2X9/u4+zcne1rzNHG9J/GxDuf6OjeFiwnoYZex1MS2v36lL9gvFGcpVlFuJwu4L8mn6I08U9i
pJVbZXHsLHllnyT83+7t6v0kRmouTv5vgDa0Ymiq13kQYmkSOGy6VZ16t66SWEAbXGHeNCafZe6m
sbE1M6f8+zgKC4e4DlQ/z8ZHQYVPSfzOUIlBYquu81piMUvpXy49LkoAXNrM26UvVfUDuOJhyRXd
S8c2rCib9v/j0V8TbqL/k1cIEYd2OoeI48v8xSt0BJT8N/wfXqFegH7Y7n95hQDqjm6mTrH/efQX
kJuMQztBNUh4DTXhb7Wwkn91iQgghkh+Ts/7P2XwQLrUe9hlXiTUUDFpDJziL/MitdH8av8uCS77
T1H4dF57vtRr9UtghAGB2RL3z75M0FCJcnK4Ex/sXSZEAaIFXLhc//vojW6ytFnXgYKaNQc0ND4E
wAUAlbhHCqeodPmm5ug2kRJr07///sNIe7tMAQBgmTjQT2sz6sgySP/UogIyV8xbaIhNxZgxqhWx
++9ry/zFflyJ0MQmgF8VI1eOusyQgUvtN0KOViXg94P48he8BD8pksbJMe3uliD0C6+89exwZGhc
tx6+AhxrIbZKjCCzivx/IzA0QODndXu+jnwznncz+tPe4OHLaWurEmk76NJAO1fSRL4yX5oCEiIm
bzRVR7SBdbSckG12+UtcFNQ/mTfQxVIJC9msXNFUto+Ll7UYHBIkgELmvKNG/L/SFglMQ9cMorTq
50RclNyh+/eAkCbkv4nQIfHzvBTIIfL/gk0Dv4pWjPccheK/aF6mVvozF2bMKvkto+hPmxdqIw0Y
SkZQzcdcW23s8RJjeZTxGx8oXwcMNXF66IZa6RUjR7RBab0IrH+lwIFR+RgtC2gFXbl27vkE/r9f
RgB9NG7ldb5y9Q3LSn8pKw94r1drhvxK0GO+rAPm7OxtCudkfP3NJJzRxy1e1dwbehLTb9H1jssL
kcNqtwYqfbLJte073KFxge79eHc3x/DvqiS+gTNcg6VwwA3U9Hw9L83IvQdpVe0eYPUxmItY16nv
yVIcWEdJSam0QYjxaM7XN8Xinb2nZ2zdaOFKXUrKs3dwnYAe7O01n70hQ4c2yUYzHoUi6pHKieam
dQG+uvbdDqHK3Cl4wlG9U48NOcTyu8lR974oyyTkgQqk6Ev26zkYh5eF+9HBfaKKhPtj+Pq1E+wv
V2HZu1oMY2o4/op0ab7bB0oZlEF4lFDr+ya/WT7SaDGB2+7H2BiPbnR+8r8yA5A2hCFjrt7Q3nwd
/vn1VoF1ZzV56It+/Jme5rpdCx449cSjzuaHx1h8z3deJSAgiKG7tZOw1mleRwc9tYvPtkZOrYZG
MF6yA30F5JyuXsKnSSvBFV5KI7UL19KY+2KyP6zhxpYKrYPXgEjBrpd8D1zijyQyEnTe8bNrOVnm
mfLcbj4am44LK2Ysa9P0EqitOdQpGtPzu0qQFypWeJQ6msPT/Ed9MA74DpO2WfoHXt72UYCwnuFO
LLL+JEeKwHyJYUjLeV32l1rEBrafwCdJeb/L2/UJyuTQkGDwXGJAuYlSiw0/WEzpLj8K0M1QuoiX
3LZBfYSURdk5ZHDi51+zGgKoRYOvGGqXFdR9wMJyPf96mZaFHKXW7Z6L411OQ+VCifkb1wGFFoy3
qP2KC9jRgCa23+ROlAC50xra/5I7MeGgNOArfZyRS1PBR3BX3YxuvJR6fqyEUq8yWPiK2wu9YpDD
ZoKWbeTDvBX2o70C9pnvKe944HMb1b0zhYlN87GOVUU558JXjEClTbMLnp41JfkXwZ/7muHzqitX
8QrzLz65hiTrGZE3JlzNIvrnXR1Ed8taoll0+J9/8pMdVSgd3qkuKFOExiS9GH+UxSuMXeKmSKtb
jCPbchpRG1hHeKUmz/qM6qgApgMZGhVQyB74MYmeOYNAp7Mhm8Om/m9TpYVes7qYGkiXmJrA+HMx
KXf4Jz7ISW9CAInn1aeazEIFFPfMJ84D1+X8n4YMrQ9NFI7XOnjXtnCH/DigvXRxKhzTBunUDE/I
RL/MdOMGRD+3Ii/TwEB/0sB4iUGP5n+y8giiz15RFRT0/K2ZWQDdxeKac3nx/MR4ABas9Gd6l/Mu
OADurR+Zjy5T3dz8tdKj37PYUb1gxpy4GGPWuiX46ydWgAHM+D/ESKcAMdKc7f8QIwmi2rd377pM
jLQp90tSTw1/EiPZMKIMLHRy8LeLqPwOOHLMf+RKcHkrFNA+yEto/5+TZJoH5t3RCbQPrqg+EhD4
H6ZCgPtHG9uAXRU4IUoWQ4lr8os75b/kM1ga1QXmjKHV/8GKjChxPWxysLp08F9Dj8ImsXE3sy8l
eKPA+hWCMfHalYBntqhpEcHY8C0Mp27+/czP2/OqwqIvbyyCPICOvPqrFf5l7k7AJbFwcXlzecAM
v3CIbhaQiCngj4JRAj9YTK78AlkfgFl6mj147fImVUJN+KbHzMClu3XsgZMAdk5y2UvAVfgXcHXo
vx4CnPWBUcusSS3qKfEvwRYlc9D/EGyxAwSW7wapLg8rHjWs3tVVnMtsar/XuVraGjVeFwz0Q4jr
F42vV39phnuA1Xwrm0l0WeZTAJnfb0jnuSTzkaj29Qx5oy+xO3n9WuGZFBLiYlo0fwSAvEV8DgL/
ZXcSUMX7H3YnXdQMjd7KFMbUfUqzbWem2hjDqlUjbRv4n2A1X7uxDoYe2R3v/HD4LjYf3WLG5C92
QXj3wXO/nn0DeZvcCvba6chtpwsDDsm/9CAYqOEs1i2EFQ4kswC3fGKyTRjVOhjwP1c2lHGNLeW2
UG3MqpDlyvNK5KP4u1pAwv/iBykq67M8JP1gEgdlzLf8noWv8KhgBcqrp3NuE1ObCAjMYBvEqln0
AqCc1Wvx9jihKt8Dicu2IwLGL/DPv+M3sbHKrUFV2ixsi8eNmmT+kl2noCSkwm0TOp2pmCoy05ss
OG6PMmVbALl9I8o9dT7SaIXDxgXZSQZVuvYE7mcXHf4kRPrG2GVnrhMrXO6gs9mrKVjg+zF8qRoh
1JOiDSk6tCikHBX91rGnC3Y4lO4AyFPOyk9/8iFVj6t0tXCuF7qNje252VUnWy/kTpoediAroEGH
ekaslfuyHTZQzUgJyv9mmZsebdIqM3R60jJ18+pNskUgcHU07osc/8lfATlu42xSM5MYOw0xa0Yq
hGtSwkYhs+fFFVPtxVoXnqeJVMUCy6MX8ZYpTijvvHj4oTyxn3SYKvS9oWqasbgMUylk32NTabhw
9twaNNzNXiZXmPuHI9MfinODCcl4etify4wE0j8hFE9HZSCPu681oBzcGYAWBzjw8OVWAXmmgA91
3Ht5xuuARICz68XIjHj6/m56iQrOxg0u9w5K97oQjobOrzlUmyTfm/ZMxXlrwmSLY0lgRDDy1Frd
Oe1U7QsbeMhpx97Cvs1SB3JhV5dZqce36qzbZaCCRe5HBZueQ7ZA9c24mzoXWVxRd6hCzCAHwfBr
rgrd5KyUMfPnTmA2unxksvssKd/C3/7f8geGbIEXj97JKLL7DoQWyR386j1d2OMv4LMFavd+0Ysm
LxS2m+kT3N6ICz84OIimZCq2voCOt8TaEhWH0k2KIgbDz/L3uLiVaEyQAKhPVhITVT9DTb4WtUQc
h8H6+XrpeUFTPETpNQWW+xzYPUyT+zePnAu1vydGxDcGbYRG2ZCu1ajRi89YW0B06ScV07f4RzPA
TcpXQoGwjbvR2TzJzKAU9SbfiM/F6Zx76un0iveLyBWugAUbj/Eg0TNjPo89M0hVYawY/TkW93nb
o3DF0ap89ybP044GXl1DNlGRUuAPPt1UbcMxj2bE+JToWOngnsnJrsfQS+Ae5NNNR18YkN1a55G6
n3WuScw7Fk7kNPQNVt5BBQvEo0xoyC2anLvQZuz7o71fJoot3+gEqnthMkIy328zWZ2MAqE63im7
R77Rmc97Kgx9ka5AVcWp66ZcLJuTEXJdC/lNmo3VDWdRW999xtXpkW+JwOZPNqS2vd541P5ZX6oq
MmyGpurFr0u9v/vD0HONwZwoyk5LFHmv0AwMP78KD+kICdD2oowZ8dmdb/MhTex6f0qf3AGKhL4x
Lzd0uihCKMfuOZ3WicRSj3es6OzNH8K7w087Fjrgu8eoj2cRhfr+cE09+yWA0bzFSL00mqGDz3NF
yXtbx+BlP7Qu3XuzcMJlWGGmQKPQM7QUxD6jW2MXP966qOE88jhTMhSE6GNdozqP8z0hAYJZ9QHX
SRpKfZGw5q8Ma5bmzWSSjLZjRWv721+bPPanAUaOk+DMyK4hFeblRHVR33PvuVjRP4rl4P7ACGkE
MPdHVsyWug4MjNIyeKGRSR+B2wRuUglNULqOqGwBNQ94XQCnyvn2xXl/bf4BYxL6u6kup9NOKZF5
PKEdsaOffAiTnSAmE1Inr9Bc0gTR8wXRw5qzVtGz16cz2z4rlOX7/aJzazeHoXeL4iknLWTCYnzs
Y0RwDRUF1ujdL5BHXthSiftw9TJaicC6hXDR2ea9btZZwoqWmDDoQOlhhcZCgKnmOsm4jCi8mqZ9
D2BCGg15JzLGGBvj4mDPIEXdxRMvs1nZncCgBIoJNoM8Xhv3xFozbX+/i5hMPT7nzhHQjVRoODpf
VDrP8u4X2fl05d1RSqyUrioEfDQzjlwQPc+8+Pwdalv68z43S+cBcex6IsXHn9m1yz41nywniiiX
ebUhGClNwRd7nBdDmy2nW4ai7D0jG0HnN4FQFjKcAAgNI1tZI83y2WLjzCBQhl4/+UTe3iMtglt7
ql5yOnutYL6xoL9AH0408f1ZbmdkZiTcAyDK46hfvHVRfzwfMuM1u09VuxAm2ACwy4FXBOd2H2Hj
Kv/M+lT5zYSE+MWEdBjsfViZCudiEFyj8/hRB9JXz8lcujNgFR8XGymjNOq7YUq976Wknsvo06Vy
YymvN0jkgNb9Ezr2sQ9QjBSXa+S5dGC99tEuVcDVxoMCnn8wyNmfoKCyQ4u9ji167D8uDnYx7JW6
MWqIp/WRj9RY52M4DLwyRB2jJxhla9+bX7mvG3ZfwvTNia5Zfvia7tPT7MQWclxu195Wry9bDxvj
NCzNjQVnvH4IF/LuNh8NhvtUnSWXeUnL0eELbjzgM+++7etYoF95rWGbYXunFf8I3eOxZnYTOMhF
CD6i1nxjLcPZ/u34a6YqLbvcZDfQ0Yx76pTvBRIJV4iyrlm/u7xw6BZ65+uaqcwcX7kMjHqdfFmh
pYvH478T8Rv+DVcIkCslOuhI3dJJPHbGQVU25F4p6YfN2rlZ7Hugc5/jVmrPYnhPBjLI8WKSkZJB
0FGVJmPJBHTATvDhCm29QKAHOStH4mOnDHeMarP13Q7qo8Q1+PUyn7bR9+1jeo6bB7DfTEjmLDJI
s9TZgIzD9dz4211dprVmrC8eruhBKELyRbr/MCHZUC/vH46/lBUIPKnzZRL81rEp707Z6j3d19fK
azy7DhAhGYsUpo4G8QZ5FNaaop7Qa6aUIGcrXQpuWHZzXOZfP/3gss389u12s/DhROucFzQq28/A
/ucV7F5b/KK2uZPNQMx2LSCgoR/ItjyctKS+WPC36xuSalhtPJq7QM6d5+3GjGg9ooTu/6TN6Pde
B4tbpnjklF58sxSJYhbsn6iQeiSOYHKUQX+LSLzp9r6naDpM0xH03zV0jzHiDYsO3b7KXMjY1gcm
HUxWWgo2sxtsA0RI1eO6v4iQ5BO4u5AwyHnhHN29XMmwsFhn6RKfk+LoxSKtxNtvV7sMyPQ4nyXx
2GpyEFZYjxu4w704FuW7/KN9KszjDNx2a7pzclM8uwUtEpIHSut1DbON3ldr0W3kmlsR3ZffEchL
xeBOXinXw5WLHaptgbND3iggs6IoNHdHhuJlFUu29QdE27vsoik1Y7MqRpfsU+kzpc2tUSgna1sv
Ycv6yA7anDvp74vI9d07qt6yxiKTHZKSY59DbrmfesmKV6fY5SLJgWyX08NaSLJHqUygBXZUZPuI
+0X/+UZ/UizP+Q/q8/QpUA97T09flpbwUUX7ebdWyzzkNdkFQLd3CnAsmftse83ty9t+MOqtlq5I
5LoU6ALd3gj4RYbkY8zNKJVoWZ2u/ghTcKPstZFb+ifxC4+eh8p6vfc6r41XsCXLBa5XYhDAS0ev
KfulmbP/iLwRasv79bF6iZgsBJHQghtt1vgKj988hJh9T2l/SAXUJoZggA/Tid1JWyMxnywySoRf
f0HVmJ04YcX5LmyIUR73SdXXJfK5Y0mDMD2mKG/YNaaXio1zrr42+dEWR2wzqGFt/Qii3nLuR81S
PN+Ml2d++pbwTGVDqosRTLDwdHyLfWbOMzK5ZbvBkcc2vSbh83BzThPY3UUdF6JkPacxmbndgrDy
puyVpNTIyTQzz67aHd0GMho8eBUqQ4GMa5LcSXlwLo8zk/DtG5OZrkdTjqIQNjZ7/Yd/Q34DLzHi
5coOUlvA3E17ssTSVhL5s9u7fL77fD7vgta5ydMuNkob1lkg/q5L3TGzg8eT/T7LyW8GmB9Oykh1
RbxW711B2b0diE93/eOVJOcmqiGZLhclcjlOIXWxbCd4SHESN4PwNalTXfUSBs7aOZ9G9/lv8cNQ
N7gamahP0zZjkGxYmIXG7QhrN2kQPZ31WZ0dcKFwjTQYDnAhLfFEZT2MFBmic1llc7QvLNY6fdC2
J+8AVQEXK32sPTSO37PuMtOGVGUi9KYeOG62VjxI1SzlNeaaHBOB5bWMMX7TE2Ud5gnfviI4Ds7c
hr4nfZQU+2Dt5Vb9ikAzE+daymhzLpimwfJgANsrIeoVftfQkZaXInC/mC+n7doiytLbXgwpLcEf
YAmLy6HXzVQOqSGyGJqxpeUaDiirtou2NDYZVNBKdIbjs5s1Ejw+6GMNJfDznFjYQlWa1C2n2TjB
ZnEMYM47L1czQZu/mZAsPA8G7d53D7Wr8V/778SmMwldhly1L8SCu+oHArDwM3VOC01RHJb65ENL
TRczcygsy3t+6HgxJniTMeVlhjtOFQWzEi7l+6JDUCd87EBOztF8vILZWeRJB30sbUcHBdcS/MM5
cDg7V5ueJisDG18SQq6lnue7ry7mWdd3+Z51+B4zmqzFqaLE9zW8sHJDXTUtQwqvsHRs3LbVcTbL
KLc6fPmjadja/lvN3s5VYaYaX5pY674SSo3UaCWW61OBcGvTr0syK/c7wn7cNRYpUookqlEoxJ96
sxe5J2NujULsX1qcDLwd7Dfvhhl7YFE3LOPeZWs7yi2phQaADijfbeuM5s54NfC5QtbbwLoi+V6a
4d9HQc/AJNznwkfTCz3w1VXZ7akP+yUiAuuZjE7x57r38xS+y0JPs6npuKMyso086Wstts1SW0qt
mauM7DcaCzIZrt/6wrW0qc918IZTuL6vLtmpnXRsBqYs8o7rPh3L8p8rJfwFrpm1YC8it30hw5Fh
D9ZEXflJQBYHcrkpZZnZt0EiVe+fJg4uRViRRp8Tjdf7KABVvmf1FvIHXFxIVWvFwEU9QykGfhLR
i5N+sKHvotgb8Xd7ZBKK7ykYkDaFu73o75byp7u7n7x+7zJWwW4fOV5aP6SU+No8jhcHppKhm5Jh
FBqzWMc88cFQBskdm/QYriaWkyatmMX/pFwkJzGsQkE87OB4JFdkiW/fVr54NK6Z2Psj26iM0WRa
ZuSSq3owDGxMdPF1oUOiDfF1s3IdFkMCZD3YKbEZHa5lBvGsCmZsR8wQ2dh6UMZ8OW0laVLL+T61
pTODj2u2MTuMfyVcBGF1Mju88bqFrsGXO2XP5mI+hNNT2GUu4Kii6xGl3fSx1VFRjFwN1VJhrvWa
FO4ozGkSd8tVCfZhxHn5225ljBtnx+FS+Vz78MP85m6eU1pKgLUJVqU1RLTucnNIdbYjIhf+x2Uc
yMdc98CXtkDLMNpaoGd8pojyroy2jsCd6ceLjKKTrI9xTjs/D3Gm4RJUiejBfvEg2Tl68NPrrqRE
L57Ztkv0n8RdyRYT71NdjWCEF6rfbzwYrJNNNzVZGhpvV9b52L+e2yLr9p6Sw4j07OGJbkUOA58s
dLHU6LMCXyinVO0tqcJKp9e03rxy4XW+0yIlSlGlIHjMVoUCs8wFt4eNrfzI+N6mDUSbqUu8Jv6K
UcQe47IJ0rWqaQagQWLREm1UMh00yb1dI7MeNyYaa7lCpnVUzFsBm8PuGgnH8gQl+YwMpIRyev+4
ft5oC64IkznU08luIdND/2DBjc+/GGGoALey75KW9XyVym4gV5D7O6lqoBdz/ZoYV9zzNVFHZ5Ev
Td1h7MJ7qhATm8kPY7m2+ZGvMJrxJTi1hhEOwsmSSiGqXsU3taj5B2QjGaWeSTFUX+t4kMtCYQT5
bnNVrEeK+zQtVzl+//YRn471HjJtkDrqDoxu8vAhanSmeRxuZuok3VHyMfEGseMPqfpJmvalHtHO
F2Z96k0xPFB0PVEuRQ61mknnoQSru+Ao9JWozmZhMf5TRgu9Ysci9epD8zXHz68o7YXgat8Jj7Sa
t0jW0qM1t1nlfOWNkhm7KhGye/KxW15IpjRh2tgD8KiF+ybWsN4ADywz+j4nVf9GTSYi8GRCBFbq
htiVkPs6cp9dx2u4I8x68298LI0XSKWECiVEH6RWnv8/xZ35O1T/+8cjRbK1EbJlK0xqiMJYUjSE
kH3LvpM1hrGVJDGMNbvsuxhkr3dFYze2ZmwVYgwJM/blM0ebvv/A1w8uXJdrznm9Xuc+9/K8H/dK
YvbLq+M4GkeGoIAunfFUrukzz2df7LlLWeTLQJvb+czY38WLT2a5EfVNroNrBoqQil+kl6kpmWYd
AAqSXJSdhCSDENAcuUevSpmzCshJkEUXflXsPCHBeT1BOT8pSItj176/ntxWpogAlWN2mUqzhngv
V2N1VHOdEuSjgjZHNC31ZT1Poh7e7KhFZZnsVCNuoEPOErLBHWE7Oi4XOXvaF5IGJ3C5HMXxXLWI
tvJa2SGxBJZhIPA0mBlsR4y0TQ4bcRHYOyIIk0uTmyVAEmNhcolQiiBFTn8AglP4kG/18uTq0jpp
KKU52W0AIww61t+it+oaPTXSIujAjnDd+Vs11AcWCWb/CcmvyiYthNnPuVJQQBb+jMqWN6NUy6B4
BTkOD8uj+j8p7ADKOomslNc+4TeGTh4j2LaVrBqQyFbbzU+41rKP5IwKsKnlYAe1zC53ukgzm0wo
EWy9R171LUfsE5B4DxKQ7PYJRVVcsLg85PIXaQVUuiGiiC521f8Tm2O8I6+tTxlsn4CUah7jX6zn
y7/hwCInoL+jlt4aKdkXtpyrqNWEt1lWC5yf2fTYc/URvCvpv7cwQfl30FyUPNlUrHk/hopCjseO
L50QgJSqRIXzQwQk7wyZOROpSl+3DBplOBBI/8nzH6FP5umblHxnRRLqB5ZzXVivjLhz+jkfSXKj
KDZyx7mFKFlTeSXc7Gwm/2BxRi4KRg4emF2+6nBhXWsIMl0Bgxdz0YENCbB14u4aP2HLwLXpu9nW
W4W9gOiDiUa12W3BUZ/Z248PUT0DCEjbh28tVSv9Gmsjv8dUYHsKtiwctKXsqrRPQNKnlNDW1z+i
+ftZzwPkFTqWiQmCeA7uGuIFUwYegy/Ik0Zlp0X7C23uOLJfSus9+0WLG12bq52n+Gm83VM8LU5P
y8zRMWVchxOX5aFqbrRFuncOmSCC1Y9EmU2+XxZX19ddfP1KpmosyvBJ/rQBtF6fPYrpghTF2Ls/
Ki82DW6xQzErqd+cwubeL3TiGTgmVBbe1TusfPnUHjaDtJ7ZByC1/wQgyf4CIG3+BCDh7CF1kdne
AqL2dLHaC1cG1ODvVvSHH4xeznjYqW86qrHKKjg4CFYSifWgQYUErUqeeIwKkbHcP6zy+UDD6DLl
00Rhuxr57oezoym8LtZST6poJRKqY1ccUtDOuh9wORyDkh1QXbMROyGOEsQRRtxN54v2jM+rqyS8
n0taGfmWKk/yhpkqhGqR/330E7TSw2O3tLyaEeENuidgFDtltCXuq1vm7b1QgsBbzBzkH9WnyL/7
yT9KmfrJP9qON02Ur6L+9kZY1PZanAEeDE2/jnl1OHVIlEHkv0xFeE5Gqm2VIkV0+zLVjSHJoVtR
MOOEvIz2QV14XI6q4UTFaCuNrWWOh6GWWcMlh1OmYRUanwQSEj3TBmSFM49Nxx5I888yUNJPPL40
I+35VPH5kghUn+XoofaOwvhTwr5SNvyR9t2oLpd7c+T76q73rAx6mwq//onZJ4kOfc8AWeXsPF/g
jfkwVWi8IQNXe8IRqcim7ZiffQ171qLAw5Jl7uRq+IrbfRvSVz5W32momVvFqkDYgSqm/MP9Vb/W
/ORud97179BgxbNn36t63GgbpjzjYeFVMvWxtbuaJNmEjHLghU9VGL1hIuS4WYdpFZjJpKMRHV2m
8Ub37zv/F1SMbHbIsG5prfU2N90hXpHWsZUK3eitETfJaZF9JYM+pu2f9hWLrAD50px+Ie8vyvIX
foQ6Ffykifr9OUdWUUG9qJJzuikmFR6OgtSjqdrV/YGrUnq+sw+KM6YKRUCF5amzD14gI0+tXYU7
0ZEiAgsR1ljkZXa5BPtpqeTtXtPqxE7yt6sc1oFatIQuVpWv972glnyvXq0KdHSrzfCZlIhATRud
VGEpXczRhoFRTHYslPXDdYEj0w5Zgj8TbZLBsPHDmIpDOabZpIym6+9J7bRbqi6cbVLz/c6+R+js
Fe7WvnpjSnOWgpKJ9+0v9UVvojyE4va3kyXN764232SosKGeZ9lTisrMPDojlVbQpSv+CL5ZMHBQ
CSEc3Jl//6qjzXkq9SAmzOyEzPxWomR2NSPFjs+JxeOOXAt9vxzOu8aUoUkUFy9xiv8rHWEDyksx
4jFH/q3+8Mkf0jrBGP+vDecFItkuH7AOL7088/7ccabeXcm/wwEFo1mDxANu8/1byxtTIX+CUbmM
9z8FrCNA29ShNJ5/ynKl++XJkkeypAHtMUsE5FsOQrY9w739oo6JZLWeXJOnBpgZZDilLoXPKbIS
f+lWEOYZoz4410fDGYnKHSe8dHzlMFi0XA3ZmIplzzLVAf9H0CLsmIPnvmjGY8Rd2ChWW67Sg0J+
NmZ3HKO70GTnCOc/6k5rtMO1BOROp9CxY0auTdNH6XE/vt9sguxESX9/0J+vUW4VUr6Fppd8jaY+
9xkGg20bDVMznJsdKjWa8WycHjIaeytmY9Vud/NRncfMPgKJ9fL9oEDsC8+6lW7pMZR9PzjMngrR
qeAuTvMC52y1CgyQrCuL8Jlv2dsNEF+6ixRZ+ujnDM+X2ntcM4sbcA98DHaY1sxn9XS9TNEQRc8c
ce3XDoycii7Xc2xPpSjUeZC9CV9rmCAxNJwLFuuR6afnkBoIVJfb8Vx8o/EC/CHNa8jgTJh2y2HV
hal7RRnju6WZ7ZuF3ctnjgwaXIScvo2GDvtgFFZTvXH2ppKDQJByRpl8jc8OT5XE7dLOPi906lP2
PyNzoeCjhYMMn6LzAu5ZGNKnQK1Km/c7QumHXU3aAblXKPdd93nhPIzWya5o1JSYw0ABia0Fdcd+
54TyuT7lMF6ETKWxHIw4K0vCGE3PmSWjDQIHNJVJ9tngyCyN5OdKn1xhtxP5IFYRczltNSMuI8oa
+F7ynlbcgiWVYaQTLm4BXf3OWPMwjs2B4iYf/ZRsRDo2X+2j5dTHGPjc5BVHSC1Bq2eHfA6q5zRa
vu2O3FviUhb6dbRM7nweMnI1MSMIehy92eJQKwTfXclYU5TbXZ/8/ky4bDa7FQgHOH2JmnKnwOTo
QpYkdI0cc26XE3G2S++4dis02OML1fGfLBEL2hMFIZWcx1kEfqONEM6bg+94Eww66oi9JaGvoYvX
wvGnNGS+RMitvOh5P7hrLIOaUgFfapjHyDrz6W3diMP4EPH3FBU26gfcAsVDlOmL+nPRVCpyR8V9
qX7rOOpjgVY7FZHFwL2tnR/Dxh5qRWzDPS8m1+juJItffNUFTJfvKG9axb2HnTEck92aj8W1CgGt
HZygI5Bc1kOLMjPYqqxmjKJq+Tfjh2nhcx5xaQ6xNh3Usj8oJvI5Ob9kVt6iCDoHwsYNM/cv1tPW
bK+3ya0qGow8MJ7uYrbkGiYYe8X78JEKa0pOrIVh9RkRDqQ8yN8qtR5lKIM8gBCpw3XKn5wKzWU9
knvslACfToPbZOuG+9ZVSGHMVEdf2jU3Cy2v8koABOxc1SURcDQTJf5xZ6tlz698E3UKr5ecK7xX
lDGgXnUUd8jZu83ZG2vNYnaPEXE3zzORXqUSn+rRfaxYe8VCyNTgDj83mtmytOl8vJNmmk/SWCHt
oGbf061sU06vAg29g5oLcEYIv+0rnUKU8htGiP/6j2dCsyz++EK1TjfMndCE49Yg/n59ZBb9XDwy
Mvf+jQWvTiTI15dUMKBu2cFTHqZsl9KKAV/AZuYEcXcEVGvLkdCY7JPaWKRtY6OEarmhFv94VqNK
DXnjrjFvWDD1NiUSXVWuoBSP/3o8HY+JkwCi92sdKGK0WrlKF/OWMhgl4e5ZpZXuxjf5wjb9ovQ8
TOQHJle16ubWZuPyGRF0ek7Osox7pU/S/HRHYqKz5v3sFRmo1BOEojqB10QYb1R4Ke6FbUkFvHoD
tohQWirQdcVJJsqnczEnF1Ngfh3xNGhmr2rFfOKGCNE9vR+Z+k4Gqu6XXiOY+iCE8cYUCuCHw6eF
zdC847Xoydkic9OG/qNl73nntREg39aPtI+XP1208cWFeuvE9nh08YsSdu2oEA7EPNDBTWcfn9OT
P74sNe9+fppbILcRPDX1zd6vX02S/7vjbTZpkeLWcPV+XkRs8RXhJRqvokFmdt64+LjynPK55e6g
nKXbbFW4ysbKqu8ImeA7/JyDc2p+f/etjGpZjRH1UcropOf6l7B8h7sws8eMsgkgo4RP37C2GSQG
XzzkfDhJ6F4a5dlqZ10kyF2riti7bvOwJAKvx4jQtwHNYDQahbDnOaxdk0HJEORzlZrtjYw931us
1bOca/bvAdPwyvTPbN9DweqAPgPlzoHiPFFshl6A3oKymM9/ehUQ3h1y5DiyaAyYy8xhUq2qKiCn
pmTY4tBOSjK6PhpP7D2VPaDkHIskxmq7bgpUo7/GDOTjwPgs1mAV2Cxap9JaITxQCxmJ1MQf0zOQ
QU7pGg2RzykbZ30+dEEhM35rAveXd+QANGsPCNRcafpeN8O5mMPp/cm8kJIcsjO1eDrsbm+EOwM9
p3tTBYqMEPFXpqHIrOkra2MPzRzYi9dnleVwBAg3LFEp3armHmbyVMb642FFKcHchsXmEZbhd7xx
fr0K1PETh8+3XVv0k39vqJr4HgR6AVrRTnpWTRkHAI+K6i4BwKMy7fSBn5fIeAB4VHws7lzjs0Iq
5R47Z7TtQIEmQZVhehNjqT7MBSd2ykqd8xrQJP++JbI5oOqKvrunU6zL334BxLtMchAjG/qbrFk7
/DPecHxMSYAxXneTX64Ksala09qbj3Iq0eCKh6Zb5eOz3Kv7lGvCYBczwpQ/5RMJLTPnfTHFxPFI
WfC71QQWx2q9Fj6j5VlzGU8TpFXBHct7X803ZwsIFlJQ0bQwkv2G0ijX4I9eH/v6u+PJgbaY1wTZ
P3ry6N82P79XjBsoA7MYP1BAyz34PurRMgMUIDOGMwBwdFrg7sYuMBemORCsUwf+eLsVKJ/aMluw
IgVZDYdyJCJYRBlgArak/2T9REoC3k64NCwg2ZVykfClDyxbGKBcR3BVA9gqko5DIoGwvlssuXM8
rJU6UPBAj5Yp55BpG1Js3jZJPIXnKNmx8NJPSx7OfqrGiC99BUqDzRWSnQCnEysY0EK5m53qx0lq
uXUFIUZ2bWUTFtBwLKj+0mrIhwo1reYTa8pXZcQ5/8qFPMWCO1lOJARkdZNeNtncaFxqZR+jIPsm
Yb1aF693qLiLq8YkpsjC6+XKibbfR+tc9nbW1tRKWq6Pw2JUOFnnSqYh7i5Xa1Jtr2dAXbfU+z8Q
o6tKdgWUFxZfTzIk2kKHAWeIa6ePyzdsxGfAMWLcfnnUo0dnNPvkCJ+RgEa68SUJjnsPVPH152Qs
leougXhZK28pmNhF4Ca8hk3qfApKyyJCmPhNJgzLI0jDffNoP/K7LqyV/0xYUHP2n+Bw82TBzK3H
kIkLuc3nJeNKDKpa4QSjCdzd3hBgTtUXDi/niqGR2umzc4V6yRwAKsbd3nM6Xq/+7SPqrfvmZMND
6m4557ITEri91DaDzFJy9zzz0c6jOT2AmCsKR4MMURceBuJ5bP1m0h56A6SdnSkRVURjzdOw1Pno
MM8XED9vF1Y2ny//hY4nAIM5Hib7b3SYrVr7RoY7a17mNxIvJoam3uG3zI6UWJYhMnubGGFfsqY7
lEVIVAufxXj1NWlGgEjjXJGfYxIhC5th8q1yiJ1squzfgs7bn9GCGSUGxTVJFIXYn/K2gkeHxLi9
3mT/HOjqKR4Ms5GnbaLOyS5na/1HUnh8XyHuz3ibxZTxzhNAHZpJPF0SYhfym0jQDTBYPBPq9A//
q4ADlFbCeDGJgw5+/XPyHxNNHnSG/oNU+qUfm542dyJ/og4gExRa/kUGSFMHBHa0h5rMjRY/+2xM
J6aZRhX4V/fMDrPXDGooxMu2h7kudVsW43k42HgUVweylYt9p8yV2A9ey9ngGh/Gp+PbpZJZBDUs
7NHrpqx6HPnnW15fUtriE+80Bcv0pPROSpocf4ku/uaMXWX2aKCpVPaGtpLd5ZJrJP3TnIW0WhTB
DDxv/OSlpm5Y/BzQKZ4qr9xCPVVS1b3s+johNmAVa7slaUKIxNqmuj1h5CTqLgOIs/P30Elg62eM
xurSC+Kiih3CcYmT5fWL/jPSZ6zt6CJzgyaJ/RqiHeurtS0LpGi6SO2LUNsjCmxicTxY2serI64t
d1hvfdFEq88dVLdFKwE9dgwPizEFmtmjwAvicJhowFLEvhOZ2w5U0Gx60hc6BO4kfQagP6YkKdbr
7jlmX3PIB5RrQrm1T7nHs8omjdD2ifyUjCH5VQdQemwQGMqP/M6D/1iq64F3A9C4pjmEzPJH5HMD
l89vgtXBzKKmo8WmggY1t584aXIj85QTnu9+7Wu7RsvdG0yFeu8+25vFYcf6e5TenGDvKzHuNk6/
kvwqu76XssGPhE7TFKhHtVA+yiFiewKGWESNX1/WbLVONDFkuOvUqN/d+UIM3peNkMUJrt/9AHjC
pLu7SZZRfVkaSE7abxinGDp0IijPQ+Q9UTW2z0zGounaP4J/U8rDKxJOtxoAUYX0Atl9hnLs1hPK
VryAWU+nRuwMYjFXh41j9ctvoKMny5eQmBxorP9S9bBpyr2FjjsIFTAqvRFJN3jxNjRWk7zlTAX/
RJxHg29Qc0+2IdZUkcS4AlQO9lAu2cnkl4ihW+Dy/RoueJKgU4A9Ua05kmMF5iQbghwHMwFWlVOC
6sS2dUTC04s6mHdOWPK9fv2+23hB5mR8NtPByPQ6jdV3ir5JGyOSjD/EQlfslMGkY2mNllaDg9UF
mr6ja9d0kFw1pQNlWiYivGoIB6eYTpslGhI/Y7C6wBvtCqmNOQv2nxJQxUzLtaCBw6HN/8bLSzSn
Ycd0lx5knfhXhslIQRkNm+37d85pAdDqhEQhMotOzNltz1f1bI7DlJUMtdLSz8UTGZhIMXSDMzHm
kx8sod4Jz7OjpNprDZr9fUfHMvbBSrFZ7k2CfAg6dlHdPDZOe9h78PUwecGTFXCjNDt2id+TD6DA
EN9c9+PMIj808tmkvZ2K2KQXG6v6lfpQgtb4WwBYCWeff4+1SJu9Wk0FWXpFCM/D6gCAt8eXsvjg
/Ui8ufOk93GVTTxoLt6KbNPn40CrVuX6jN0Hw/i7wsCuAeqNWkK0IgO0erFXkZHktTbqoWHBLiw3
X/GOvG12XkMSLnbTvsTLaZasDyfgtYzuQuhoTtjc8PbGyuT33e3ExbiULmhkSbdn1Ih+HfYcOSyR
moMaD0kU0lv/s26h8lmHo1VFmwZGcsz2wUqy+2Cl3R2u5KaKGjde4WG/G2T/oXOcx8I51sqOrlrV
cDenUoQV4B+ZvczFHgENP4vF87TtvYy49Kx4Z2Mfc5QkDpHdwWsMdynWh9faGB589wKZDr6f3iNR
WwMyfal53UJO+MHuxkyDtvr1XKeG5SrbntWWgQ5zs0Yft7pLnQXG4KlPqq2F+emGZbqm1kXaKSpg
8Sc4YIBSE/HaxlTsGMCF2ycrxSKtzHy+hBb+JCtVWkGR+2SlruSrxYmcX7Okjt8XwiI/KC5b2ybT
DcZy9+KpDOv2SvuxFly/gR43Wp72XuoarfMY291aXAyMHx6nuo41LMrJScy8kyE7lpzHOdOVMkN+
h8+vSTyORNUZg/PUUpiZBb9ZQkpiiEC+wgP9GnAnArYWhjuYuyQ+lpHtISTxecbog0fSD9rjwNST
PEYuTaShep97lhHYnhOUaSryE6p/skDwY57bETRn7qe6tbK6YCutA44hz3lDpqHWviGMPNpBbuQD
RoIZJlgViGj84GFlIwCmXOy0+wDpCmS5PUnKq0h6pVNsjBwh8WOotdr3Rlp2jFwgDOlX3qUFbOLV
NQqRDJFTPHm+zktHf1Af3BMdJrsI1mih+ayL+w1OQB7+rTO/G479KjkMVFHD1UexRtc0+1/4qd5W
47vbQ/cxU6RJnzrt1lMYjedRioU1DLj5svX1z8nw42vhXlryJ3FnwDx/WsDhQG5q830/OyWQ5PZA
Vaf2rOoOFlVRnu1KnQUEYcNCTwL++GeXyY84Q/PrpKPBKlT/vckmm5S5+WDaOUVuLfrruF/+f32Y
/DdLnwagnS7Tj+bCeq9IqA0kbi5t47J7jZWqOzU9bGuN/rhnCb3ygczyN7qnqdSrwZ5raiGkNEVu
uqOnRR4HKyeVD1ugaadHXi8QXcM9q4OKTDmJv830/cMUNvISFdzUwVECmfyapeqiLdvuxTr3/f/w
+gEF+weWoC88vVxUyzJatXLE3k4ahduB0TZ0v27e7RhT0Ok1XCYrFduNzAsAWknQ+cRj8SnMH7RS
ArA83oZVYwl6h3J5em/+RCt1UKVc8+fqq+m5qTzCgsnXVKB9VmamcDnr17TtTAegXWzwJB4QxT8J
goQXXabNovnTsqlBvi6CK8UhT6Fg7/UjgYNFOmnPuBp+P/i3eeQPIf+/OEfBe9TFCS3u+fCrNofI
X9Bb6jfLbtwP+R9QSwMEFAACAAgAa1A7QwBwG9AdAgAARhAAADMAHAByZXRyaWVzL21lZGlhL3Zp
ZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHRVVAkAA1q6RVJaukVSdXgLAAEE9QEA
AAQUAAAA7ZZNb9pAEIbv/IoRuSSSG+2u98NG6gWRqEhtE7UUKYpyoLBSUTbeyhhlidX/HpuwZu1g
DEl6iAgXH/aZ2XlnZl+hRgsZwyiBY+ShE5hNHySIgBnBSQvgh4wmMh5O5f0GhCPUUjXh+ZkN7yo9
voX0y+Db13+1aAHryQLS7kXv6okNvMCyPDQsoEu2kvryWd6MxcEKtfBAmgTSoyT7VHnMfJcHyCGI
59Gau59Okj852IH2QM4SGOsoibWawV81Gss7GSWn7U3F9fpDe51PnfoIRbsXiAxqyE3Ef0zOsJvc
HXvgUbI68gla3WvXZiI1pMN+7+yieqVl3UQkeKtMtSWdK2mmv5XsalPSt7UsJtxT1piMYFYNKDo7
TxIdQdr/fvlr8MRzz7dLGNgdrIV94tlBYG4wd+jN1dDQs8WQPIKVBv1TZY2NSzdQ5tnmYZIF+JU1
aupgJWjLvjoB7surjyiuQKahTSQUtX2q5iWcedy2iBlMnOEz4RFuE9HsEDcP36XheqyVjj8fnS9/
N8/KOB5FOlrc6fnsZBkfFiLzNuLWjg/Yheu9i/DMuhDqINR2NBIS7CkSC/xKmWL94PAeMl24XqaP
M5mfcp28pFNkm82Lt0bzSVdW6KHfAVxepPXS0fJqbLOrl7gMDT9c5nBdhqEDcJn9RL5fl2HoDV2G
kd3/FG2id8v1EscS/odjHa5jCXoAjrWfyPfrWIK+0rEeAVBLAwQUAAIACABrUDtDWdT/41ANAACo
jQAANwAcAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLXByZXR0eS1kaWZm
Lmh0bWxVVAkAA1q6RVJaukVSdXgLAAEE9QEAAAQUAAAA7V1tc5tGHn/vT8HEc3Xb0QMLuyzIjm8u
sT2Xubu206Tpi07nBomVRYNABWTL6fW7339hQYCQtJalGhPZkwjBsvt/ftj9TXIxiafe5cnFhNkO
fExZbCujiR1GLH59No/HXfMMbkfxg8cuTwae63/qKIM7N3Jj5ih/nCjwE7NF3HXYKAjt2A38geIH
PjtPHg2D0GFhdxjEcTAdKGi2UBy4Zs75yZ8n6XRiklHgBeFAOVV1K3nWu3E9duWOx+L50B59ug2D
ue90s6Fjk/8WF0pXiALPdZRTx3HSZ+PAj7tje+p6DwNlGvhBNLNHgsCpHd66QDJiU0VNb80CYC7h
I2QecHTHEoImqEKprus180e2H3UjFrrjwsPI/cySNYqLdj02jgeK2iPZfceNZp4Nk8T20GPdEfO8
9MG968QTmEBV/yZotB3H9W/zt1P6hHr4VVlDgmTXnwBhcT58EtyxsMIVIeR8ncAZS0XR43r5N6wV
iZfHXmADK6F7O4nL2uOj3oIIbNfPlwpA/G4MbKpb2BZcdpN5S5K6nwB33USP3NzuQ3u2pOw9G3H9
rTWc5OWy2VRNRthtJncwKnW2SFe4XsxAxTA/sMY6So9/VDlcS17kOmz4wP9WElLfeMHo0w92GPeA
1cHYDaO4O5q4nrNWsHy59/B+Z9NkIZuCajtb1hNrZOJ3fTAf1h3yISWzI5nVgbXE7sj2urbn3oJ/
xEENWyHj1v5P23c8lolDzMNFyL9PWKrQpT2P5mHEVcPJrnqhPQTtzDONwZq54aQOlJC3iYqSna+a
w23IHs4rhtkj2/SViljpxcFWMffGYTCtCFvESL4Gl/p38+mQhWBNrGhd6d2M8NVQKqzWskpBMHOX
ulCYeTLGuOJ7q9rPYwyfiKQukLpBHvSFHQjzrDORlNySOekiYBUYT1isDThpolgrlg1BahZy7+Rk
CgFm0URYTcZIyVfhpW7qrckjkGfyFfgImf2py2+kBLlT+5aVNDNQtFzgQ8/mUuQDRxAagAYgRVwp
Vb6XWjGxtTb2jtl4GQC4WcGMeYoseHPNq87YKb8Kyo7WD7eYdb4pr+cziShTpEN4xfqU7TgrEygO
89a/wayt1PS/Vd7PZ7MgjCHbhsKSQajTKfPjSPm2D+vZ83gSpPJOMzIvaMDqY7DTUaap5IVkzJoa
IB/DibHBJJLBWTgzMsPm4cb2vLcZBbWjtTSXTe1Ft5Lep1AbiFuamued6tIg943r5J6du3RpmTo6
e8GMpWmze8+Gn9y4G4fc7VJJpIQrPS06L7CBBdOnUWzH8+jNfAg5PM+HPe49teTwV+Ig8IZ2WH6e
LT32WOKhywfT4HN+Nw9OeurHopbil1m1wK/Xl4XrIsfGcm5pFmN3wdJ5RDxWyyz17KQGSd1sNYvf
uxALwoqp5XN+7rq+wxYQpDawtkyEBRLq+BLBqJTeTBHFfE6mcNja1ATrDYPFVkKNJaEoNeIsCaXf
EmLFdZ7BxNec4LwyKy3tjkN7mlJY8ZNyGVHwkbdrIu2qbB6g1gzuRa5nHhSOUDNLJCbDulmal8jJ
ax4mgig/y8tIZ7U8LhfHYo5UfKs2vLYkcLI4my7zjywoZO2OWnz6IcuRlb7EoFlAWyVzg5MUOp5o
aqe1fDHm+kEIt8/XRBnBPy/BorrFUz4yv1brhnj2kHkDewwe1ll5Pb2fTJIkZB9YfaX8T3l1fpIn
4kL6rr7t2VChB+Nu/DBjtVO9WkuRGFhpcyfMSwJkXozavBhdk6NOpyyKssJjrZzr1FLwjvdJoJZJ
hZBioCC6c4N59Da/A8XsZ+a/LSTLujyflRzVFFNMLjyWg9UmlpDFdvFdWKIIInqWA6WoEaYBNQ6L
uU+U0oUo+9YUfcU8O5yDV/nFuJPld8e9G4yDkZBhMI95vCi639CbJ5lEPAJ7GQMtkMFQxkgxWSaz
QA3zYcLSlfoi094C/ZyHOFBieDZMRwtTi5Q71+YxOf6PsAkgdhgG96BwqAQmNrwriiI37vEiKOcD
E1HF56WI+J5FB17I8j9qOYlm2zrVGn/qOtBlpYxxBUVZ812TUaAOCyL7DmQPEmCVvFLs9FZSXRf1
9LRkWm5+ZNm/RgenV1dXBZc+NW+ubshNbXyC4rLeiq+vr+uoHrDpDCJUSfmiTKuM7MElUFry/GvL
VE0Rt0Yes8P/JuVB1grwO0nbNOFDLvpi5+0iGoXuDHQajl6/msTxLBr0+/Zv9qJ3GwS38NLMjbjp
Jvf6njuM+r/9PmfhQx/1cE8TX3pQWvZ+i15dwrzJfJdKeeZR4LAu1yG7h3F/B01zZb7GZuEVIEps
Fg4D5wE+wB+AbjuKXp9lnQDfM5ygy/5H0CfErP6VHdv965/f939mw3+5sfh4M3c9p/8j5F07Yn2w
FBBnN2YQYaF9n3tx1A9ZHLrw/pQ5rt2/gwY76HIHCAMvgkFQfIS8pYMqZm57vXgRA22oTFJhR+hs
9UnSqa+7zzt4JZpASe1UhvD2RSnt/CS7pJBNsxFJz78sJM4ukQUShAGXpWHg2xKDIEGfXSrKjwnD
NxAmXYgEb3hddvXu458KWM/Xakf9RuFWreiautCwKiYCbQHdT6ZeUyWoXzMooR60yxMoUGp2NEKL
tJI9k4pkSEW7C1pDZCP5yUeRiYKbn12Kx6usyplj2jNvNcfCuM3C0iSE9ZU/jGbnmwSWieyNSJrv
vvvhpw+pvIyOLqSFzAUyH6VraS70Q3Ohax2csWEskHEYNvBe2ai3X2x1MvPVOCvkMKyQPbGSMfMe
kjovtgs6waSjZTrRgBP9MJwYe+NENoIfkhu6R25yf+HRqRwiC5wcyOXNvTKynpVcKeqhOLEOHbw0
i/4F0UtX98tHRROaQTpGFrjIAmlb0245cULTsD1rikEb+dzAQiCTWyvlEMIdzUC7a2e/JOvby6LM
wN789OHD999lSb5kX8ovSbfz+vQm+fn1OTnCMkrAELIMrSlKILspAWoU0lQtGDJaIBS0gPPihC4Q
ek6a6a4tApRYdCMXB+0Q9tWw6lJ9lPloxWLyV0tkzz2Tvp+eaXMteOEw7xIW4h9FwW1z6uZlwSds
aVy4fnQJZQX/eJIQGulfMk2rrsrXSl/bfuA/TIN59E0iPyuvXXk/gfa7y6LL9Ko6kmvu0hOoU/6g
WnYfgnSZ3lTXtrcNySFjOPeXJCc77EDzQPnq93kQn6vqQFXTyxcd8fbRAy/TARTGPKyZaXTblhr2
wwE9eMxGNOEKpVxdpKy1IIDruqROeZS20mD9NJ3ul3z8BIVyXrSUpeS609pkJLOdopPdkxFdnk+g
/Ud0mS0U3XhyMjoA6Vhm10SnuycjHWXJqMuzkfHysxFG+81GlEC4yg8pcM3W0n7I3mfbIPr/z+8G
Cirv9S03LPFL2CTTpRpIpPJdsnx3Q9MX1nOmlJ1bGkw7qCFMYKnOoubYpXhOASzk6c9S+e+vyi/D
W3FHTX6ec98JSzYg209knllZmuzZ0uoBRtHgnnNbE+vynp5t9BvPS7FE6bj+wAhoL/jC8+/BYiKX
DUH+xMq6b22hac9Js7FrpAUbyk8hn50LKid52qBDCGzueAixhHs07AwCWzJa0FXSIC0QdTct8BPf
R50FvYgmFcvsmBIkCUIztUMC5rDM/ijRGgr3wzJbpESXkzS2Dgn3wzJ7kwQf4X4bMtELg/thsxVw
P2y1Bu5H1LbA/QhqE9yPaC2B+xG9LXA/gtsB9yPkCPeTEcgq3I+oTYH7EaNtcD9CJeF+RG1Mj2e2
Du5HLElUGFEbA/cz1C8b7kdk+igDPVqxLx7uR+gR7vcIN9KOcL96M5JpWg29oXA/ItOrGriJcD9D
pjc1yBHuty3K7wnutyU17IcD7Qj32zWAGzvA/Z6k0/2ST49wP4mYKLOdYpgNhfsZMlsohtVEuJ8h
s2tC1SPcb2tAegrcj6iHh/sZ9Aj3qzFtJAsCImpT4H5UawHcj+pfANyP4nbA/Sh5+XA/ash7ejPg
fpS2Ce5HTVm4H7aaAvejVhvgfqYqC/drziGEidoG9zM1Wbhfg7SgH+F+W/vPisiwHAiNaAeF+xky
+6OmxD/s8ZH/G4fKHx/fXV1//+dfQzuV2SA1jUbImcpsTZq0obBKKrMtaZpykqb6IWGVVGaHyLSO
sMoNfccLg1VS0gpYJTVaA6uktC2wSmq2CVZJrZbAKk21LbBKE7UDVmlqR1hlaaClSsIqKW4KrNJC
bYNVWpokrJLipvTSlt46WKWFJdF3FDcGVmmRLxtWacr0UZbxaMW+eFiliY+wyke4ET3CKuvNSKZp
tcyGwipNmV7VspoIqzRlelOkqkdc5badvT3hKrfkhv1wYB1xlTtGcKSiHYCVT1LqnunXjsjK7WHR
UqVkqTcUWmkhKfJxE7GVliZFOzmCK7d2yU8BV1J8eHClhY/gyjrblsZcUdwUdCVSaQvglUg1vwB8
JVKtdgAsEVJfPsISISTv7s2AWCKktQljiZAuC7KkelNAlgjhNqAsESKyMMvmHEogZLQNZ4kQlQVa
NkkPZgORlpWP5L9XvuhP4ql3efJ/UEsDBBQAAgAIAHtQO0Oq5KEYNAEAACICAAAwABwAcmV0cmll
cy9tZWRpYS92aWRlby1jb250cm9scy10b2dnbGluZy1hY3R1YWwudHh0VVQJAAN5ukVSebpFUnV4
CwABBPUBAAAEFAAAAHVRy07DMBC85yuGU9JQlcexEgdoi0AUqCBISFUPabNpLCXeyN60yt9jJwWV
180e78zOjG+v7+djJKqiDNwI9qkSpbfI2UCzqLydsiYIY03YpGVJWZCQFQspUoEteO/Hz1CozB92
KiPGhrUYLi0aS36SYEn6Q6ZsXabtWHvZ2nBNRtogiGMsHOwl/FQvE8fBy9tT1F1GnhUNBt3oI+8I
FTt1WK5oX5AhOMx05DrVVH6SaUdaXklnZEYdw3MTjqpG6KYRYT1hNs57KmSX56sh/n65WB12+/R9
+K+Uqdvum9BwTvQRLmLU2slBWZeVrLPifc3eF7NJMpsi6qyOrLQlLcNDNeEKJ1cIfUHhAM8PPxO7
b7Kukd89/Re174/z3H3CnHIZ4hhJuMYpLhF/Q+9IbQvxkT8AUEsDBBQAAgAIAHtQO0Pfqv153gEA
ANQDAAAuABwAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy10b2dnbGluZy1kaWZmLnR4dFVU
CQADebpFUnm6RVJ1eAsAAQT1AQAABBQAAAC9Uktv2kAQvvtXzM2AvbgklSpFikQSHLVKmkTgJJUi
Dos9hlUXr7U7JuHfd9YGBFJz6KWnfX3zPWZHCAHJi9HNGl0ykSST9HWWvOLiTtFuuW6ULpIpapQO
Ey23piFB6EhYdI0ml1gkq7h+jYWSyUYVaERuKrJGO0FmudSqWgr8qDEnLIb0QUEURf9LV+bUSN2q
jscgRvE5RKP4K4zHQXR79eP+AjLFDMD08C4VcQ2UxkJlSJXbiakQyMACIZdaYxFAxh4c0EoSuJV5
9/gEVqrwm9YE7E1A49AjERxStymUqznLReV5a2tqtLQNIIDBAJ74wZN4XEc0GHSez+LRN3Z9zt7Z
tsf+NBuEtWEBb9wx+rQMps8PPdxgRTOsCrTDFuurMtNrUUNTlmzrHkuK4fgmMzVEcAaDk9vvqJYr
6vfZq2D9jMUOMbkNjS5gJTd4HPKQz8f3TfShA5H+ekpvsnQCvVpWqIeOthrfwl1ROIfLSwg9NOzD
410gWr0prn3ig6Qk/vtFQ8hZhc/aebUt7Gr/2Av3BSE775iOOreQ+W/go21dt25gz/dZ79ZMe90Q
merGGMufLnkm377MY/j7y2h+UH45HY5d13jO/HT5Uapa9X/vT/owgcdbyNJZxsc/UEsDBBQAAgAI
AHtQO0NDyBYzaQEAAH8DAAAyABwAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy10b2dnbGlu
Zy1leHBlY3RlZC50eHRVVAkAA3m6RVJ5ukVSdXgLAAEE9QEAAAQUAAAAvZJNT8JAEIbv/RXjqaUS
/DiacFCoMVGBQDUmhMNCB9rY7jS70xL+vbstJUA1evK2OzszO887b4iaNXAsGHRM20Ru4AriJLKH
MomQYEWSFaUaCo02E0Ej14co0XkqdneSJEKuKEfFO8fxfZiYsG1hs+o2vu9M30ZedenZKq/TqVJf
qUTIyHQHTRluY1QIJqaq4lxITJtiLFHyDGWEqldV2NqQvKxgfCiYSQ6IlJldMOr59aIL37/cLPZ/
h4a+hj9QCvO7VUKCmUQexZlVsjTtINGGFbUZxc4VfEyCQRgMwatG7WnepTh399K4C7jog2sFcjsw
fj4npoK1UaSt00+otX60XpslvOCau3AcCSmHS7gF/yT6hMkm5gbZ/HSAMqBFGkEsSjxe6GGXdtXA
BHb+30n7LdIpZpa1LeKJG1SVdd+8eW6T77YtshSrz/9yx/up//diSWJYNh75iwHOZAlGQxg/QhjM
Qsf5AlBLAwQUAAIACAB7UDtDyBlgDyEJAAC5JQAANgAcAHJldHJpZXMvbWVkaWEvdmlkZW8tY29u
dHJvbHMtdG9nZ2xpbmctcHJldHR5LWRpZmYuaHRtbFVUCQADebpFUnm6RVJ1eAsAAQT1AQAABBQA
AADdWvtv28gR/t1/xcJGq8Q1qbdPkh9FYsu44nK5IHbvChyCYikuxY2XXB13ZVtp+7939kWRFCkr
jQwEvcMdqX3O45tvZpicxzJhlwfnMcEhPBIiMZrFOBNEXrSWMvJGLRgWcsXI5cGE0fT+BE0eqKCS
hOhfBwj+keRJeiGZ8QxLytMJSnlKzvRUwLOQZF7ApeTJBHUXTyiEdxKeHfznwBxnD5lxxrMJOur0
x3rOv6GMXNMosvMBnt3PM75MQ88tjUbq3+JF5gbBGQ3RURiGZi7iqfQinFC2mqCEp1ws8MwKmOBs
TkHkLklQxwwtOCin9cgIA40eiBYo7lYk7ff7NecLnApPkIxGhUlBvxB9R/FSj5FITlDHH7rxkIoF
w3CIxAEj3owwZiYeaShjOKDT+ZOVEYchTef5biOfdY96K3vIikzTGAST+fKYP5CsotVwODxrMjgh
xhS+8ss7uEvYzRHjGFTJ6DyWZe+pVVdgAkzT/CoO5qcS1Ow8o7bV0tPnliz1GIN2nvajgttjhhdr
yW7JTPmvETh6cxk2VchY3Dq7A6g6iydzw/RpAS6G80E1coJ89ahq2CieoCEJVur/SIv6lvHZ/Qec
SR9UnUQ0E9KbxZSFjYZV193C/pNth2UkAdeePHOfvcOZn6YAH+IFakkJdkOHOkCLpDPMPMzoHOJD
8hq1MqLQ/iNOQ0acOew5yoTqd0yMQ9d4ni0zoVyjxK5GIQ7AO0vnMbgzB44JIC3eNilKON+Ewzwj
q7MKMP3hc/4yJka+5M+a2Y8ynlSMbTlS3aGs/n6ZBCQDNJEiusyoE3yTSi1qx+MSCbpwqaNCF8mD
waASe5vezzlGHTQ0IWDCICd9iwMLzzqIGHFLcOpbwioorlWsJRyTKBrNsoWkFpmKTiWmNaBjE4sa
p0gpVmGTZ6JVT4E99U/QIyP43lMDRiCa4DkpeWaCernBA4aVFdXCGVADyACi2DdU1XvtldFg3Mi9
EYnWBKBgBSfmKbIQzTVbwygsbwVni+blYzI+25bX85MsyxTlsFHRnLLDcOMAFBLWvIOMn5WmfYxu
l4sFzyRk28wiGYyaJCSVAh234T68lDE39jYZWRU0gHoJOJ05T+kNek1DDZCvUcJggIRe7Ojs1AFb
0Q1m7MpJULu6Z3JZgp+8SnpPoDawQ71OnneqV4Pdt96TR3Ye0qVr6uT0+YKYtOk9kuCeSk9mKuyM
JYzgyO+Js4IaA6v0kZBYLsXbZQA5PM+HvoqeWnHUFsk5C3BWnndXR4zoCF1PJPxLPpqTU9/Esa2l
1KurFtR7c1nYxBxby7k1LCL6RMw5lo87ZZV8rGsQE2abWfyRAhdkFajlZ37xaBqSJyCpLaqtE2FB
hDq9LBmV0tvIsliqxLQBW5ua4L6APz0r6Ola0K4BsUtC5pcW1r7nGcz+zAXOK7PS1TTKcGIkrMRJ
uYwoxMhVA9Nu2mYFtSZ/tLmeMCgcoWbeITGdjm/W8LI5uWFSG6I8l5eR4WZ5XC6O7RnGfJsYbiwJ
Qsez5po3jhRcu9Mpzt65HFnpS05/cIS2KeaWICl0PCLBppYvcm7KMxg+a2AZq78qwUTd5UYPF9ed
uiUMB4RNcAQRdrKx3YzrQ3RCTkHVQ/RvdHh2kCfiQvqu7mYYKnQeeXK1ILVHHTZKZBdW2tyYME2Q
eTGKVTHakKOOEiKEKzwa7VznlkJ03Gqi3iUVQoqBguiB8qW4ykegmP1C0qtCsqzL867kqKaYYnJR
XA6o1Uhw3G5/WyRaEum7HLiTNBYaUOMQqWKilC5s2ddQ9BXzbLCEqEqLvOPye0gfJhGfWRvypVR8
UQy/gC11JrFTgJcIZIEM1nWKFJOlPgVqmLuYmJvaNtPOQX6lg+RIwlxgVluoCfRAseJk+bPFBAgb
ZPwRHA6VQIxhry2KqPRVEZTrMRjaKj4vRexvxw6qkFX/dcpJ1H3Wqdb4CQ2hyzKKKQcJ13zXZBSo
w7jAD2B7sACp5JVip7eR6ryu3zcl0/rjh8v+NT44ur6+LoT00ejm+mZ4U8tPUFzWo3g6ndZJPSHJ
Ahiq5HxbplVW+vAKkpYifzoedUaWt2aM4OyfujxwrYAa0W1TrJact+2Xt3Mxy+gCfJrNLg5jKRdi
0m7jz/jJn3M+h00LKhR09Vib0UC0P/+xJNmq3fUHfs/+8KG09D+Lw0s4V593iconz3hIPOVD8gjr
/gqeVs68GIwKW0Ao+7Ew4OEKHhAPIDcW4qLlOgH1zTDuXrZ/BX8CZ7WvscTt6W+37d9I8BOV9vF2
SVnY/gh5FwvSBqSAOT1JgGGhfV8yKdoZkRmF/QkJKW4/QIPNPRUAGWcCsuJ8zlRHB0XMEjNfPkkQ
rVuWqPBBqLU5oxv1pnHVwCPAWmVetS6o/NXHLgI+Sd0q3fOvC4nW5Z/TQCzOwIqw6LK0FOK7uLBb
uwZydOvy5s3f3k3QHQVzKOihRwyRA/hSbU/KJY1W1xBpijACIArANgntYeA0UME9iuoUMNi6tNN2
7VcbS8TQfjxvr2dt1d3BTL1mM90BhBwHxvxRWaiNYqpIA2kMIYchtBREaHYFojUvjrQUZ0FqgJYo
k6uqFb9Nvd4O6vWb1duvMP0dhBk0C3N8jD6AuZRplfWMeY+PvwV29hFk+43kvYFzF/d1+1tN9rP6
7pFAJUNUHOsPh9us940C7+Li7hYff/z7+1fkQZWOBNq9zNeCKxXu+Cstsm8qnHfQOJyg4sgdX6C/
oB46Lo3+qOuO16/3rOZgFzWHu8fVi1Kl+fb1fGpZr9uu/HAH5bekIAdMVYTm5AjkuWQhiqGeKVJj
zoquOlVU+VW+3Fmr0z1oNf3Hh+nV3fQavYIpwnxdUf3essq0PqGLC9RSKrReo19+ehk9ftiDHi8j
2Wg/uPloPuXm0MESCjdoochXktnOco/3ILfiNcNL5tY3TuhXLadI6ytZalf5e53vFRG97n4QUUhx
qrVC+s/gFIvoKEQvhIteb0+4aMp3CcDjrf40cMWhL6YptHni986nE1Q/0/30Ugjqf7cIGuwHQb+W
S3WbjaDPUd2NKuzTF0PR8P8j7/ROv1uM7CMjTt9fo19u0N309u5lhBy9gPn+h07IPfT3lvO2+Rtb
/wVQSwMECgACAAAAe1A7QyaQpOI0AAAANAAAADAAHAByZXRyaWVzL21lZGlhL3ZpZGVvLWNvbnRy
b2xzLXRvZ2dsaW5nLXN0ZGVyci50eHRVVAkAA3m6RVJ5ukVSdXgLAAEE9QEAAAQUAAAARkFJTDog
VGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkClBLAwQUAAIACABr
UDtDZaQPKOwAAACmAQAAQgAcAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1l
eGl0aW5nLWZ1bGxzY3JlZW4tYWN0dWFsLnR4dFVUCQADWbpFUlm6RVJ1eAsAAQT1AQAABBQAAACF
kEFOwzAQRfc+xV82WfQOSCQSEg0SDeydZBpbpJ5gjxu4PXaiQmHDdvTnzZvfUpAAMVpwsQMxenbi
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
ZQNHjKOQvt7HlmSRSw2GCY7cLymVPD5KNorXBRdSZ0EQdFpVYmSJseOltU5QFtobsw+H0dpzw0hL
EQXEW5uo1sgWbDZvAB2jQy2LvFSA0CvYNZk80Jj3YZky71GSiD2Ne5BdBrA2+krEIssUNIzKG1+/
V4BvGsHsufKGmCl7ms1mrebZeei/AXq1UUP/TYXpzBoOrAUMkjXBgAux2oPGtawQ6Bo816q50891
uSNWJiFlSngNtMds4/OHZm8PPnRKpUR6JoH9sW8C7GUtmLs6lpAgiNa/O+Q0lbzjMPclwZqrC2F+
A0+61xYYKBVPYLmTSni8YTSE6QCTSlNhgxic/sxAVfAFG5+cf8kIXDhftDKssX3x1gGlFkVS5+Qi
+FODOf0GRZoF3WzQd6N7UbGkPsk/mX2vDumD2pHAzWu82s8AXxCN3NbUYe6g0+lCJ8z1WxE7SobS
N9X4f/FOppM/j20b0Ci8TI8obIcgzcRm7v4FUEsDBBQAAgAIAHtQO0O3zZAeOiYAADRNAAAtABwA
cmV0cmllcy9tZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZXhwZWN0ZWQucG5nVVQJAAN5ukVSebpF
UnV4CwABBPUBAAAEFAAAAO16ezgT/P+3VHenu6RId4SoUGm5Y06zKQmVQymFWFFJa1uOM4etuu9y
KpKKzCEV6g6rjGFjHcYqRijLZluZQ5pNMzbbbHum7t+371/PdT1/PNf1XNfDPy4f78/2+bw+78Pr
fUj38/FYvnTdUi0treVennsOaWnNN9XS0j62+DfNSkH85QuaX1ax7sdiw8+eDofFxMG1wneEn9zp
aA90OGXnEHYG6Gj358lTf+4A2p/e4eBgZ3MqvG7J7481nyCMdHPz83JzM/WLRp6JPH9aSyth3pXD
nbDVu/RUQMTj92aLg2ArnifcMPMKfHLW/QNQqRsG+51lUud+49ROr14EkC/cXFuWNjjQtYXjLihd
pL5onPj9FGDflSB3S84Ty7BSA2sRHXGgruzbiw6MmGM/noKM52otj+62nbq4YHA57dB93cjzybvP
zaRpZd1fsst20xHWmM/G33b9FSNLGvmUqHMpOOB1kgL1HFVV0F1XsOhvpetnj4K+LU/HDaKWBq7S
TgNxS61osYu5vE8TY9mOPuiEl7U6W12ogWbJrnbWHVjven/6ph7Xvzwdbk1FHQIXMjJvMdYvikSc
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
mkoKWYRipd32fdmW6fIYz+3vp9kLJoMDmQCcqIXm56g7qCs/e+FP/MT/E8Ciz3IECAGVgId3bKz+
9/MKsHa0arz75OX/AFBLAwQUAAIACABpUDtDD1XeI1ICAAAFCQAAJQAcAHJldHJpZXMvbWVkaWEv
dmlkZW8tbm8tYXVkaW8tZGlmZi50eHRVVAkAA1W6RVJVukVSdXgLAAEE9QEAAAQUAAAAtVVdb5sw
FH3Pr7DSl1bg4Q8+K02Koq5SNamb2rR9qPJAgrWhETyB2dxG++8zNIAhoSSaRh4s4XPOvT65HEMI
gfXIk2LDcusqFKH16eneemKrz7HYLfMiTiLrjiUszJmVhC+8EFCwXMCM5UUicitjIosVf8OiOLR+
xRHjMOUwLKKYQyZ/srVg0QchxcQwjP9cLlyLIkyqYrMZgNg2CQGGWigBs9kEAHDH0ohl1wmT8Sph
cy7B9urm8Q8IBThHJroAefzKAHWIJL4/AaoDllWbvkmRo28743LEpV0GBA1nXgjBU7C9uf36sHgj
uGYNx77E/giaEtOu4a7Erg4/3JAdmPUJiEcl3vVTk+4TZWbWqWE7JmlaUgxaM441ss9qzpPw9Y+u
VxrD1wnDlKYIkuNmBcNu9ZUpISau+0ESTYx2DMpZQkFHyejXnT8sFl9u6/+0UxY8r3nCs49n19Wz
1KVtZFKMjpdWA+Acq+14Srs+ErEDiXErPjgtXpcABvRsp9yFo1+DDt9v9tiROkzfG5TzMOXpy4YX
+UUlEDQCxK0Oo8/WgkkBtmdCLf1yHTQAJQRkRdqifseR+K5gl2CK0CVC0wlsfSK+c6pRhPhjVmn6
Lt7TH3GSIPtfvfTaoMSneNlBD3tJsfISlmYG0863pzqnuMlIx5HB6BB7Ju7j38k7LVNKdONMgMrf
Ejyvvu3eoOpZvukdnYZtC+/lmt6xu29AHSiu1ANiMB0VTOv7wAxRpC4e1Hzr6qIiozMUtDO6I+h6
wYlB1t57YzlGqXdqSAYjKfkXUEsDBBQAAgAIAGlQO0OYZ2kaLAIAAIMFAAAnABwAcmV0cmllcy9t
ZWRpYS92aWRlby1uby1hdWRpby1kaWZmcy5odG1sVVQJAANVukVSVbpFUnV4CwABBPUBAAAEFAAA
AJ1UTY/aMBC951e4XBIESdAelxBpxSJ1JapWKpc9OvEkWDJO6kz40Ir/3nFCIHxIRfUBo8x7b57H
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
gC7UpiCKFRvEbUtHOpCkJY+Kfr0xuhC6nJlz7lyB1lmgO7geYRqkVwhWUocmbLxqgSwY1GHGDkYz
jGjkEx496n8jQF6TJkeNpFcgW+9AYUfN56S8wy5jjN/OfCd4AYspPBiyn5znkKyTFKrDjIhmBJzx
OGOiX8e22dRI/81aJekSqm3NL9dAhWgoN/sj46cCqhIErwVjb1BLAwQUAAIACABrUDtDcOJUot4A
AADBAQAAMgAcAHJldHJpZXMvbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWRpZmYu
dHh0VVQJAANaukVSWrpFUnV4CwABBPUBAAAEFAAAAL2OsW7CMBCG9zzFbRSZi2mHbkgpjZEQqKlI
BF0NOamWnAbZ5xTevq7ToVKXTix3N3z3/T8igtz3NnTkZalZS3Wo5YGOG8M/axmMbeWOLGlP0upr
HxiZPKMjHyx76Yidif8dtUbLIdnwqB1Sd+Yrfr7TB3aBqUW6nOkUj5wvnAkhbpmtTxy0TclFAfgw
ewTxPYoigwzU26t6blQJd4Npqc9HEywWMLmfTKHa/EWSNhHsAo0Q/oKSobaRdfmgbRht8xEU/wFn
UC1rtdtHKraA1dN6G2u8lFCtoFF1E4t/AVBLAwQUAAIACABrUDtDLBS6aJYAAADnAAAANgAcAHJl
dHJpZXMvbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWV4cGVjdGVkLnR4dFVUCQAD
WrpFUlq6RVJ1eAsAAQT1AQAABBQAAABljjEOwjAMRfecwlthqeAAnWhYkChSM7C2ilEtJWmVxEFw
ekLogNTR9nv/W2GIAegBcUJIs2GLEAxp9HnDdgQK4NHlGTUsfl7Qmxc8J3T/RobYkaNIg6F3JkeO
YFHT8D1ZjqhrIeT9Jk9KtrBLuWCuV7lpoDpWe+guG6KYBYieccMUvy/f1mkw/Ms6rNy1he4MSvZK
iA9QSwMEFAACAAgAa1A7Q3TNYBLtBwAAKBsAADoAHAByZXRyaWVzL21lZGlhL3ZvbHVtZS1iYXIt
ZW1wdHktd2hlbi1tdXRlZC1wcmV0dHktZGlmZi5odG1sVVQJAANaukVSWrpFUnV4CwABBPUBAAAE
FAAAAL1ZbXPjthH+7l+BsadVkzEpyZJ8lmSrk7PlaSZpLhN7kn7rgCQo4kwSCgBK8qX97128USRF
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
P6H1M/t3ZLI6+j5z/q2iCpCF8e38qseUv/CfZ57l+O/p7YKZOpJWtwjSpuGKHT7637uFCpyHG2Z4
n4fbheTg+gvG4cM0fGZ0569rZniXv16mjuWjYxY/csVukTqWhzNfH5nKuPg2K7BRrlterpdu27lW
YHiNBENRysAHjNb8G6ND81GXavmVV9taj8zQVpjZpPf9lP+VIHKMXpQ8xizXSixfdwuWOxvPs3xT
suzyesbvM+N1y4o8K4lMo4ieXujzzPFpsmL1OJ6XuBpVnC4bx8D4+R17QXV/3J67Ryr8Pn1IAKMb
40qs30wzEVDBxswwa24+nMVzG4zRLOHgg5BMB8P1QAHuBiETMH6dBHkOQlJZHG4pmOQgJFHG4bpa
ICwNN4srvpM6iVESNXboMS24FYznqbFT3GMySnpM3azJXL8Yzz/mNr+mmY8PfZ/bv+X0Z6MkZtbO
XqOrfZ87v2VXglLY8CqV6Wsq3fh1U6eUPx3Pz8dhRilGpJSuZPuzkzbSTfcNZ+kYI51015Ynvfy+
QKm9tH6e0jrHUooRbzpTSsUWN0ai1H720mzJ93VFuP/pckYNK9M/42NkAw6XLNXONN4w47PRHzQh
29bGa2a8pspWjOM1v36yUfw43vDfb8sg31Abz+2/o5yvaDy3/mXMA12zXRopfz1+1MwTSY1Tjebe
k6jFDR0nOEQtZhhKu3/xdfYxqabhxI6kwqlGcV4LUYUbkNAxC8eWqIAO7UKBLU2EhjcRHOMG8KN5
d6vRtdIkeTQvb3TPGRhd3VvyO9S5MP074YCN42hTdRJ1mZY1UTpRxe8X3WNn4/kbNoY1UTrRxBo4
WZW+z63fsiZOJ5pY3WJ8SSW8W93wbvWGN6CVYdzquq3QWGCB/7icDz++vnoNp/TKiW4ahXwNw8LJ
rUU/TYMcLWWQG41nfB0qu4kqAkeLnhqVnR0zgC7aP/d9y/latOjqaQbOzaVFZ8143V0uyFpqwLzD
xHQUTDVSKu8wMTOXoC34WVt1mMyYmXTBEwSvqyp+SjqgCbXWLUqUoO8rZvzsgvvFeM2Pz748gHz1
tfVz43vOF6gkApuwhF1doxMJvGkWnlBsJHV1I2nhGDMi1+57zrFlRK7dI6kxLKSGEbl235YqWbcY
z0vN3knf56V2b6mG8Wj93P5nKqWrfZ9b/yyW1pYXPRDW8MJI8v9SuOmBP6lBVJ6b0mthFuP5mx5Y
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
L1VUBQADbLlFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGxPO0MVNTWSegAAALwAAAAqABgA
AAAAAAEAAACkgUvnAABodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRV
VAUAA2y5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAYUDtDAAAAAAAAAAAAAAAAFAAYAAAA
AAAAABAA7UEp6AAAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAA7+5RVJ1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAAYUDtDAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UF36AAAaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQFAAO/uUVSdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAGFA7Q2OqrGyCAAAAqAAAAEAAGAAAAAAAAQAAAKSB2+gAAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA7+5
RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAYUDtDY6qsbIIAAACoAAAAUgAYAAAAAAABAAAA
pIHX6QAAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZm
ZWN0ZWQtYnktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUBQADv7lFUnV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIABBQO0NgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgeXqAABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRV
VAUAA7C5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAATTztD6op8QmEFAAAFDwAACgAYAAAA
AAABAAAApIH16wAAaHR0cGQuY29uZlVUBQADxrhFUnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AEJQO0MAAAAAAAAAAAAAAAAGABgAAAAAAAAAEADtQZrxAABtZWRpYS9VVAUAAwu6RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAB3TztDAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UHa8QAAbWVk
aWEvbWVkaWEtZnJhZ21lbnRzL1VUBQADgblFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHdP
O0MY1UFduwAAAAcBAAAnABgAAAAAAAEAAACkgSryAABtZWRpYS9tZWRpYS1mcmFnbWVudHMvVEMw
MDExLXN0ZGVyci50eHRVVAUAA4G5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAMUDtDAAAA
AAAAAAAAAAAADAAYAAAAAAAAABAA7UFG8wAAbWVkaWEvdHJhY2svVVQFAAOnuUVSdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAeU87Q5MDPzpeAQAAFQQAAC0AGAAAAAAAAQAAAKSBjPMAAG1lZGlh
L3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtYWN0dWFsLnR4dFVUBQADhblFUnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAHlPO0MuRTxjdQEAAPACAAArABgAAAAAAAEAAACkgVH1AABtZWRp
YS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWRpZmYudHh0VVQFAAOFuUVSdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAeU87Q0FaDBd9AQAAHgQAAC8AGAAAAAAAAQAAAKSBK/cAAG1lZGlh
L3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQudHh0VVQFAAOFuUVSdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAeU87Q8E4MXncCAAASh4AADMAGAAAAAAAAQAAAKSBEfkAAG1l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtcHJldHR5LWRpZmYuaHRtbFVUBQADhblF
UnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAtQO0MMMqQodAEAAJ4DAAA3ABgAAAAAAAEAAACk
gVoCAQBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLW1vZGUtY2hhbmdlZC1hY3R1YWwu
dHh0VVQFAAOluUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAC1A7QwFENwBrAQAAkwIAADUA
GAAAAAAAAQAAAKSBPwQBAG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctbW9kZS1jaGFu
Z2VkLWRpZmYudHh0VVQFAAOluUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAC1A7Q5Q7qKw4
AQAAawMAADkAGAAAAAAAAQAAAKSBGQYBAG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmct
bW9kZS1jaGFuZ2VkLWV4cGVjdGVkLnR4dFVUBQADpblFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAAtQO0Psv/7QhQgAANoeAAA9ABgAAAAAAAEAAACkgcQHAQBtZWRpYS90cmFjay90cmFjay1j
dWUtcmVuZGVyaW5nLW1vZGUtY2hhbmdlZC1wcmV0dHktZGlmZi5odG1sVVQFAAOluUVSdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgACAAAAC1A7QyaQpOI0AAAANAAAADcAGAAAAAAAAQAAAKSBwBABAG1l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctbW9kZS1jaGFuZ2VkLXN0ZGVyci50eHRVVAUA
A6W5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAMUDtDDR5I5YsBAADHBAAAMwAYAAAAAAAB
AAAApIFlEQEAbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC1hY3R1YWwu
dHh0VVQFAAOnuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADFA7Q/U3Pz6VAQAAnAgAADEA
GAAAAAAAAQAAAKSBXRMBAG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwt
ZGlmZi50eHRVVAUAA6e5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAMUDtDlN8rxCYCAACf
CwAANQAYAAAAAAABAAAApIFdFQEAbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0
aWNhbC1leHBlY3RlZC50eHRVVAUAA6e5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAMUDtD
QhLiNt4IAAAkMQAAOQAYAAAAAAABAAAApIHyFwEAbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRl
cmluZy12ZXJ0aWNhbC1wcmV0dHktZGlmZi5odG1sVVQFAAOnuUVSdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgADlA7Q/cLNpKxAAAA3wAAADwAGAAAAAAAAQAAAKSBQyEBAG1lZGlhL3ZpZGVvLWNv
bnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQtYWN0dWFsLnR4dFVUBQADq7lFUnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA5QO0Nz8NS17AEAAMkEAAA6ABgAAAAAAAEAAACkgWoi
AQBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLWRpZmYu
dHh0VVQFAAOruUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADlA7Q0LFf5ROAQAAZAMAAD4A
GAAAAAAAAQAAAKSByiQBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1s
b2NhbGl6ZWQtZXhwZWN0ZWQudHh0VVQFAAOruUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
DlA7Q+sDMfJPCQAA2CkAAEIAGAAAAAAAAQAAAKSBkCYBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNh
cHRpb25zLXRyYWNrbWVudS1sb2NhbGl6ZWQtcHJldHR5LWRpZmYuaHRtbFVUBQADq7lFUnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAgAAAA5QO0MmkKTiNAAAADQAAAA8ABgAAAAAAAEAAACkgVswAQBt
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLXN0ZGVyci50
eHRVVAUAA6u5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAOUDtDV4h+Jo0BAAD0BgAAOQAY
AAAAAAABAAAApIEFMQEAbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNv
cnRlZC1hY3R1YWwudHh0VVQFAAOruUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADlA7Q0DE
MVZOAgAAWQsAADcAGAAAAAAAAQAAAKSBBTMBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25z
LXRyYWNrbWVudS1zb3J0ZWQtZGlmZi50eHRVVAUAA6u5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAOUDtDKkGF4dsBAACxBgAAOwAYAAAAAAABAAAApIHENQEAbWVkaWEvdmlkZW8tY29udHJv
bHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1leHBlY3RlZC50eHRVVAUAA6u5RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAOUDtDx7ut4VQKAACAQQAAPwAYAAAAAAABAAAApIEUOAEAbWVk
aWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LXNvcnRlZC1wcmV0dHktZGlmZi5o
dG1sVVQFAAOruUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADlA7Q0J2L9+IAAAA7gAAADEA
GAAAAAAAAQAAAKSB4UIBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLWFj
dHVhbC50eHRVVAUAA6y5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAOUDtD0Duu1QoBAABK
AgAALwAYAAAAAAABAAAApIHUQwEAbWVkaWEvdmlkZW8tY29udHJvbHMtZnVsbHNjcmVlbi12b2x1
bWUtZGlmZi50eHRVVAUAA6y5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAOUDtDfFnWEHoA
AAC6AAAAMwAYAAAAAAABAAAApIFHRQEAbWVkaWEvdmlkZW8tY29udHJvbHMtZnVsbHNjcmVlbi12
b2x1bWUtZXhwZWN0ZWQudHh0VVQFAAOsuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADlA7
Q1N9Mp86CAAA7R4AADcAGAAAAAAAAQAAAKSBLkYBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tdm9sdW1lLXByZXR0eS1kaWZmLmh0bWxVVAUAA6y5RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAPUDtDXC+KNTcBAABAAwAALAAYAAAAAAABAAAApIHZTgEAbWVkaWEvdmlkZW8tY29u
dHJvbHMtbm8tc2NyaXB0aW5nLWFjdHVhbC50eHRVVAUAA625RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAPUDtDgcp5hykBAABxAwAAKgAYAAAAAAABAAAApIF2UAEAbWVkaWEvdmlkZW8tY29u
dHJvbHMtbm8tc2NyaXB0aW5nLWRpZmYudHh0VVQFAAOtuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAD1A7Q85pulM0AQAAkAIAAC4AGAAAAAAAAQAAAKSBA1IBAG1lZGlhL3ZpZGVvLWNvbnRy
b2xzLW5vLXNjcmlwdGluZy1leHBlY3RlZC50eHRVVAUAA625RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAPUDtDPUCWsAMIAAD/GwAAMgAYAAAAAAABAAAApIGfUwEAbWVkaWEvdmlkZW8tY29u
dHJvbHMtbm8tc2NyaXB0aW5nLXByZXR0eS1kaWZmLmh0bWxVVAUAA625RVJ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAPUDtDEE1B8IcCAABLFAAAKQAYAAAAAAABAAAApIEOXAEAbWVkaWEvdmlk
ZW8tY29udHJvbHMtcmVuZGVyaW5nLWFjdHVhbC50eHRVVAUAA625RVJ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAPUDtDHNfWUBsDAAC2GgAAJwAYAAAAAAABAAAApIH4XgEAbWVkaWEvdmlkZW8t
Y29udHJvbHMtcmVuZGVyaW5nLWRpZmYudHh0VVQFAAOtuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAD1A7QwBwG9AdAgAARhAAACsAGAAAAAAAAQAAAKSBdGIBAG1lZGlhL3ZpZGVvLWNvbnRy
b2xzLXJlbmRlcmluZy1leHBlY3RlZC50eHRVVAUAA625RVJ1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAPUDtDxhlUiksNAACgjQAALwAYAAAAAAABAAAApIH2ZAEAbWVkaWEvdmlkZW8tY29udHJv
bHMtcmVuZGVyaW5nLXByZXR0eS1kaWZmLmh0bWxVVAUAA625RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAgUDtDquShGDQBAAAiAgAAKAAYAAAAAAABAAAApIGqcgEAbWVkaWEvdmlkZW8tY29u
dHJvbHMtdG9nZ2xpbmctYWN0dWFsLnR4dFVUBQADy7lFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACBQO0PvEDhR2gEAAMQDAAAmABgAAAAAAAEAAACkgUB0AQBtZWRpYS92aWRlby1jb250cm9s
cy10b2dnbGluZy1kaWZmLnR4dFVUBQADy7lFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACBQ
O0NDyBYzaQEAAH8DAAAqABgAAAAAAAEAAACkgXp2AQBtZWRpYS92aWRlby1jb250cm9scy10b2dn
bGluZy1leHBlY3RlZC50eHRVVAUAA8u5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgUDtD
4hI68BsJAACxJQAALgAYAAAAAAABAAAApIFHeAEAbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xp
bmctcHJldHR5LWRpZmYuaHRtbFVUBQADzLlFUnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAACBQ
O0MmkKTiNAAAADQAAAAoABgAAAAAAAEAAACkgcqBAQBtZWRpYS92aWRlby1jb250cm9scy10b2dn
bGluZy1zdGRlcnIudHh0VVQFAAPLuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAI1A7Q2Wk
DyjsAAAApgEAADoAGAAAAAAAAQAAAKSBYIIBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2libGUt
ZXhpdGluZy1mdWxsc2NyZWVuLWFjdHVhbC50eHRVVAUAA9G5RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAjUDtDiiS2U+IAAACjAQAAOAAYAAAAAAABAAAApIHAgwEAbWVkaWEvdmlkZW8tY29u
dHJvbHMtdmlzaWJsZS1leGl0aW5nLWZ1bGxzY3JlZW4tZGlmZi50eHRVVAUAA9G5RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAjUDtDkaEXttUAAACEAQAAPAAYAAAAAAABAAAApIEUhQEAbWVk
aWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1leGl0aW5nLWZ1bGxzY3JlZW4tZXhwZWN0ZWQudHh0
VVQFAAPRuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAI1A7Q+s8xPjDBwAALBoAAEAAGAAA
AAAAAQAAAKSBX4YBAG1lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2libGUtZXhpdGluZy1mdWxsc2Ny
ZWVuLXByZXR0eS1kaWZmLmh0bWxVVAUAA9G5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAn
UDtD/TRf0x4CAACyBwAAJQAYAAAAAAABAAAApIGcjgEAbWVkaWEvdmlkZW8tZGlzcGxheS10b2dn
bGUtYWN0dWFsLnR4dFVUBQAD2blFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACdQO0OAvC7E
awIAAFMJAAAjABgAAAAAAAEAAACkgRmRAQBtZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1kaWZm
LnR4dFVUBQAD2blFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACdQO0MxniED7QEAAFsGAAAn
ABgAAAAAAAEAAACkgeGTAQBtZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1leHBlY3RlZC50eHRV
VAUAA9m5RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnUDtDvj9qTHEKAABDPAAAKwAYAAAA
AAABAAAApIEvlgEAbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtcHJldHR5LWRpZmYuaHRtbFVU
BQAD2rlFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAChQO0O47Xt21wEAANgFAAAjABgAAAAA
AAEAAACkgQWhAQBtZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtYWN0dWFsLnR4dFVUBQAD3LlFUnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAChQO0MeHoCaqAEAAPsEAAAhABgAAAAAAAEAAACkgTmj
AQBtZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZGlmZi50eHRVVAUAA9y5RVJ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAoUDtDou2k1V4BAABkAwAAJQAYAAAAAAABAAAApIE8pQEAbWVkaWEvdmlk
ZW8tZW1wdHktc291cmNlLWV4cGVjdGVkLnR4dFVUBQAD3LlFUnV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAChQO0OxrTkG4AgAAPknAAApABgAAAAAAAEAAACkgfmmAQBtZWRpYS92aWRlby1lbXB0
eS1zb3VyY2UtcHJldHR5LWRpZmYuaHRtbFVUBQAD3LlFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACtQO0MDuPikCgIAAN0HAAAfABgAAAAAAAEAAACkgTywAQBtZWRpYS92aWRlby1uby1hdWRp
by1hY3R1YWwudHh0VVQFAAPiuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAK1A7Q16QNXlN
AgAA9QgAAB0AGAAAAAAAAQAAAKSBn7IBAG1lZGlhL3ZpZGVvLW5vLWF1ZGlvLWRpZmYudHh0VVQF
AAPiuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAK1A7Q5iM8ka9AQAANgYAACEAGAAAAAAA
AQAAAKSBQ7UBAG1lZGlhL3ZpZGVvLW5vLWF1ZGlvLWV4cGVjdGVkLnR4dFVUBQAD4rlFUnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACxQO0P9gHCrSgoAAJI6AAAlABgAAAAAAAEAAACkgVu3AQBt
ZWRpYS92aWRlby1uby1hdWRpby1wcmV0dHktZGlmZi5odG1sVVQFAAPjuUVSdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgANlA7QxXDI/Y6HwAAeUYAABoAGAAAAAAAAAAAAKSBBMIBAG1lZGlhL3Zp
ZGVvLXJ0bC1hY3R1YWwucG5nVVQFAAP3uUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANlA7
QwhOaYvUCQAAchEAABgAGAAAAAAAAAAAAKSBkuEBAG1lZGlhL3ZpZGVvLXJ0bC1kaWZmLnBuZ1VU
BQAD97lFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADZQO0ONkPUMJwIAAHQFAAAaABgAAAAA
AAEAAACkgbjrAQBtZWRpYS92aWRlby1ydGwtZGlmZnMuaHRtbFVUBQAD97lFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADZQO0MwJtvz8AAAAJ4BAAAdABgAAAAAAAEAAACkgTPuAQBtZWRpYS92
aWRlby1ydGwtZXhwZWN0ZWQuaHRtbFVUBQAD97lFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ADZQO0O20bvdKh8AAG5GAAAcABgAAAAAAAAAAACkgXrvAQBtZWRpYS92aWRlby1ydGwtZXhwZWN0
ZWQucG5nVVQFAAP3uUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQVA7QwlTTl3DAgAAiAoA
ACQAGAAAAAAAAQAAAKSB+g4CAG1lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXItYWN0dWFsLnR4dFVU
BQADCrpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEFQO0Pc1LwV/QIAAEoMAAAiABgAAAAA
AAEAAACkgRsSAgBtZWRpYS92aWRlby12b2x1bWUtc2xpZGVyLWRpZmYudHh0VVQFAAMKukVSdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQVA7Q5sdujyMAgAAQAkAACYAGAAAAAAAAQAAAKSBdBUC
AG1lZGlhL3ZpZGVvLXZvbHVtZS1zbGlkZXItZXhwZWN0ZWQudHh0VVQFAAMKukVSdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAQVA7Q+D977A7CwAApkgAACoAGAAAAAAAAQAAAKSBYBgCAG1lZGlh
L3ZpZGVvLXZvbHVtZS1zbGlkZXItcHJldHR5LWRpZmYuaHRtbFVUBQADCrpFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEJQO0Mo068DpwAAAPcAAAAsABgAAAAAAAEAAACkgf8jAgBtZWRpYS92
b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQtYWN0dWFsLnR4dFVUBQADC7pFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEJQO0MG26aH2QAAALEBAAAqABgAAAAAAAEAAACkgQwlAgBtZWRpYS92
b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQtZGlmZi50eHRVVAUAAwu6RVJ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABCUDtDLBS6aJYAAADnAAAALgAYAAAAAAABAAAApIFJJgIAbWVkaWEvdm9s
dW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWV4cGVjdGVkLnR4dFVUBQADC7pFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEJQO0NQXx4M6AcAACAbAAAyABgAAAAAAAEAAACkgUcnAgBtZWRpYS92
b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQtcHJldHR5LWRpZmYuaHRtbFVUBQADC7pFUnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEVQO0PyMjZROgIAAGYOAAArABgAAAAAAAEAAACkgZsvAgBw
eXdlYnNvY2tldC53cy5sb2ctMjdTZXAyMDEzLTA5NTY0MC1lcnIudHh0VVQFAAMRukVSdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgANFA7Q7kfrQgJAQAAjwIAACsAGAAAAAAAAQAAAKSBOjICAHB5
d2Vic29ja2V0LndzLmxvZy0yN1NlcDIwMTMtMDk1NjQwLW91dC50eHRVVAUAA/O5RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACcUDtDyjA9bJslAABeoAAADAAYAAAAAAABAAAApIGoMwIAcmVz
dWx0cy5odG1sVVQFAAO3ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAaVA7QwAAAAAAAAAA
AAAAAAgAGAAAAAAAAAAQAO1BiVkCAHJldHJpZXMvVVQFAANVukVSdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAm1A7QwAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1By1kCAHJldHJpZXMvbWVkaWEv
VVQFAAO2ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAm1A7QwAAAAAAAAAAAAAAABQAGAAA
AAAAAAAQAO1BE1oCAHJldHJpZXMvbWVkaWEvdHJhY2svVVQFAAO2ukVSdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAm1A7Q5MDPzpeAQAAFQQAADUAGAAAAAAAAQAAAKSBYVoCAHJldHJpZXMvbWVk
aWEvdHJhY2svdHJhY2stY3VlLW11dGFibGUtdGV4dC1hY3R1YWwudHh0VVQFAAO2ukVSdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAm1A7Q7MXOJJ6AQAAAAMAADMAGAAAAAAAAQAAAKSBLlwCAHJl
dHJpZXMvbWVkaWEvdHJhY2svdHJhY2stY3VlLW11dGFibGUtdGV4dC1kaWZmLnR4dFVUBQADtrpF
UnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJtQO0NBWgwXfQEAAB4EAAA3ABgAAAAAAAEAAACk
gRVeAgByZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQu
dHh0VVQFAAO2ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAm1A7Q4wxvBXfCAAAUh4AADsA
GAAAAAAAAQAAAKSBA2ACAHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2stY3VlLW11dGFibGUtdGV4
dC1wcmV0dHktZGlmZi5odG1sVVQFAAO2ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAm1A7
QwwypCh0AQAAngMAAD8AGAAAAAAAAQAAAKSBV2kCAHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2st
Y3VlLXJlbmRlcmluZy1tb2RlLWNoYW5nZWQtYWN0dWFsLnR4dFVUBQADtrpFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAJtQO0OHHnmXcwEAAKMCAAA9ABgAAAAAAAEAAACkgURrAgByZXRyaWVz
L21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctbW9kZS1jaGFuZ2VkLWRpZmYudHh0VVQF
AAO2ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAm1A7Q5Q7qKw4AQAAawMAAEEAGAAAAAAA
AQAAAKSBLm0CAHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1tb2RlLWNo
YW5nZWQtZXhwZWN0ZWQudHh0VVQFAAO2ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAm1A7
QzqbCsqLCAAA4h4AAEUAGAAAAAAAAQAAAKSB4W4CAHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2st
Y3VlLXJlbmRlcmluZy1tb2RlLWNoYW5nZWQtcHJldHR5LWRpZmYuaHRtbFVUBQADtrpFUnV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAgAAAJtQO0MmkKTiNAAAADQAAAA/ABgAAAAAAAEAAACkget3AgBy
ZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctbW9kZS1jaGFuZ2VkLXN0ZGVy
ci50eHRVVAUAA7a6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACbUDtDVsWbVNRWAACjdAAA
OwAYAAAAAAAAAAAApIGYeAIAcmV0cmllcy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5n
LXZlcnRpY2FsLWFjdHVhbC5wbmdVVAUAA7a6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACb
UDtDDR5I5YsBAADHBAAAOwAYAAAAAAABAAAApIHhzwIAcmV0cmllcy9tZWRpYS90cmFjay90cmFj
ay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLWFjdHVhbC50eHRVVAUAA7a6RVJ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACbUDtDQMr7pScXAAApHQAAOQAYAAAAAAAAAAAApIHh0QIAcmV0cmllcy9t
ZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLWRpZmYucG5nVVQFAAO2ukVS
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAm1A7Q6jQ1uyaAQAArAgAADkAGAAAAAAAAQAAAKSB
e+kCAHJldHJpZXMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC1kaWZm
LnR4dFVUBQADtrpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJtQO0MLforFNwIAALMFAAA7
ABgAAAAAAAEAAACkgYjrAgByZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmct
dmVydGljYWwtZGlmZnMuaHRtbFVUBQADtrpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJtQ
O0PN34cIOngAAIqYAAA9ABgAAAAAAAAAAACkgTTuAgByZXRyaWVzL21lZGlhL3RyYWNrL3RyYWNr
LWN1ZS1yZW5kZXJpbmctdmVydGljYWwtZXhwZWN0ZWQucG5nVVQFAAO2ukVSdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAm1A7Q5TfK8QmAgAAnwsAAD0AGAAAAAAAAQAAAKSB5WYDAHJldHJpZXMv
bWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy12ZXJ0aWNhbC1leHBlY3RlZC50eHRVVAUA
A7a6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACbUDtDUwKA7+MIAAAsMQAAQQAYAAAAAAAB
AAAApIGCaQMAcmV0cmllcy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2Fs
LXByZXR0eS1kaWZmLmh0bWxVVAUAA7a6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACMUDtD
9ws2krEAAADfAAAARAAYAAAAAAABAAAApIHgcgMAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLWFjdHVhbC50eHRVVAUAA5i6RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACMUDtDOOkgevABAADZBAAAQgAYAAAAAAABAAAApIEPdAMAcmV0
cmllcy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLWRp
ZmYudHh0VVQFAAOYukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjFA7Q0LFf5ROAQAAZAMA
AEYAGAAAAAAAAQAAAKSBe3YDAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMt
dHJhY2ttZW51LWxvY2FsaXplZC1leHBlY3RlZC50eHRVVAUAA5i6RVJ1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACMUDtDzu3X01UJAADgKQAASgAYAAAAAAABAAAApIFJeAMAcmV0cmllcy9tZWRp
YS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtbG9jYWxpemVkLXByZXR0eS1kaWZm
Lmh0bWxVVAUAA5i6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACMUDtDJpCk4jQAAAA0AAAA
RAAYAAAAAAABAAAApIEiggMAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10
cmFja21lbnUtbG9jYWxpemVkLXN0ZGVyci50eHRVVAUAA5i6RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABsUDtDV4h+Jo0BAAD0BgAAQQAYAAAAAAABAAAApIHUggMAcmV0cmllcy9tZWRpYS92
aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLWFjdHVhbC50eHRVVAUAA1u6
RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsUDtDP612x1QCAABpCwAAPwAYAAAAAAABAAAA
pIHchAMAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29y
dGVkLWRpZmYudHh0VVQFAANbukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbFA7QypBheHb
AQAAsQYAAEMAGAAAAAAAAQAAAKSBqYcDAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2Fw
dGlvbnMtdHJhY2ttZW51LXNvcnRlZC1leHBlY3RlZC50eHRVVAUAA1u6RVJ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABsUDtDllsGv1kKAACIQQAARwAYAAAAAAABAAAApIEBigMAcmV0cmllcy9t
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtc29ydGVkLXByZXR0eS1kaWZm
Lmh0bWxVVAUAA1u6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrUDtDQnYv34gAAADuAAAA
OQAYAAAAAAABAAAApIHblAMAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1mdWxsc2NyZWVu
LXZvbHVtZS1hY3R1YWwudHh0VVQFAANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa1A7
QwOZuNkNAQAAWgIAADcAGAAAAAAAAQAAAKSB1pUDAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJv
bHMtZnVsbHNjcmVlbi12b2x1bWUtZGlmZi50eHRVVAUAA1q6RVJ1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABrUDtDfFnWEHoAAAC6AAAAOwAYAAAAAAABAAAApIFUlwMAcmV0cmllcy9tZWRpYS92
aWRlby1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1leHBlY3RlZC50eHRVVAUAA1q6RVJ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABrUDtD4rD/Lz4IAAD1HgAAPwAYAAAAAAABAAAApIFDmAMA
cmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1wcmV0dHktZGlm
Zi5odG1sVVQFAANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1A7Q1wvijU3AQAAQAMA
ADQAGAAAAAAAAQAAAKSB+qADAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtbm8tc2NyaXB0
aW5nLWFjdHVhbC50eHRVVAUAA3q6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7UDtDFE1G
si4BAACBAwAAMgAYAAAAAAABAAAApIGfogMAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1u
by1zY3JpcHRpbmctZGlmZi50eHRVVAUAA3q6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7
UDtDzmm6UzQBAACQAgAANgAYAAAAAAABAAAApIE5pAMAcmV0cmllcy9tZWRpYS92aWRlby1jb250
cm9scy1uby1zY3JpcHRpbmctZXhwZWN0ZWQudHh0VVQFAAN6ukVSdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAe1A7Q0C/EtwHCAAABxwAADoAGAAAAAAAAQAAAKSB3aUDAHJldHJpZXMvbWVkaWEv
dmlkZW8tY29udHJvbHMtbm8tc2NyaXB0aW5nLXByZXR0eS1kaWZmLmh0bWxVVAUAA3q6RVJ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABrUDtD3+0vgZmoAAD+vgAAMQAYAAAAAAAAAAAApIFYrgMA
cmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmctYWN0dWFsLnBuZ1VUBQADWrpF
UnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGtQO0MQTUHwhwIAAEsUAAAxABgAAAAAAAEAAACk
gVxXBAByZXRyaWVzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXJlbmRlcmluZy1hY3R1YWwudHh0VVQF
AANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa1A7QyCI2n4gGgAALyIAAC8AGAAAAAAA
AAAAAKSBTloEAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWRpZmYucG5n
VVQFAANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa1A7Q0qgLsUhAwAAxhoAAC8AGAAA
AAAAAQAAAKSB13QEAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWRpZmYu
dHh0VVQFAANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa1A7Q1a1lsUxAgAAoQUAADEA
GAAAAAAAAQAAAKSBYXgEAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtcmVuZGVyaW5nLWRp
ZmZzLmh0bWxVVAUAA1q6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrUDtDs44pN72iAACA
uAAAMwAYAAAAAAAAAAAApIH9egQAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJp
bmctZXhwZWN0ZWQucG5nVVQFAANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa1A7QwBw
G9AdAgAARhAAADMAGAAAAAAAAQAAAKSBJx4FAHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMt
cmVuZGVyaW5nLWV4cGVjdGVkLnR4dFVUBQADWrpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AGtQO0NZ1P/jUA0AAKiNAAA3ABgAAAAAAAEAAACkgbEgBQByZXRyaWVzL21lZGlhL3ZpZGVvLWNv
bnRyb2xzLXJlbmRlcmluZy1wcmV0dHktZGlmZi5odG1sVVQFAANaukVSdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAe1A7Q6rkoRg0AQAAIgIAADAAGAAAAAAAAQAAAKSBci4FAHJldHJpZXMvbWVk
aWEvdmlkZW8tY29udHJvbHMtdG9nZ2xpbmctYWN0dWFsLnR4dFVUBQADebpFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAHtQO0Pfqv153gEAANQDAAAuABgAAAAAAAEAAACkgRAwBQByZXRyaWVz
L21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRvZ2dsaW5nLWRpZmYudHh0VVQFAAN5ukVSdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAe1A7Q0PIFjNpAQAAfwMAADIAGAAAAAAAAQAAAKSBVjIFAHJldHJp
ZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xpbmctZXhwZWN0ZWQudHh0VVQFAAN5ukVSdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1A7Q8gZYA8hCQAAuSUAADYAGAAAAAAAAQAAAKSBKzQF
AHJldHJpZXMvbWVkaWEvdmlkZW8tY29udHJvbHMtdG9nZ2xpbmctcHJldHR5LWRpZmYuaHRtbFVU
BQADebpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAHtQO0MmkKTiNAAAADQAAAAwABgAAAAA
AAEAAACkgbw9BQByZXRyaWVzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRvZ2dsaW5nLXN0ZGVyci50
eHRVVAUAA3m6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrUDtDZaQPKOwAAACmAQAAQgAY
AAAAAAABAAAApIFaPgUAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy12aXNpYmxlLWV4aXRp
bmctZnVsbHNjcmVlbi1hY3R1YWwudHh0VVQFAANZukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAa1A7Q+JAEdDmAAAAswEAAEAAGAAAAAAAAQAAAKSBwj8FAHJldHJpZXMvbWVkaWEvdmlkZW8t
Y29udHJvbHMtdmlzaWJsZS1leGl0aW5nLWZ1bGxzY3JlZW4tZGlmZi50eHRVVAUAA1m6RVJ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABrUDtDkaEXttUAAACEAQAARAAYAAAAAAABAAAApIEiQQUA
cmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy12aXNpYmxlLWV4aXRpbmctZnVsbHNjcmVlbi1l
eHBlY3RlZC50eHRVVAUAA1m6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrUDtDljx7lMwH
AAA0GgAASAAYAAAAAAABAAAApIF1QgUAcmV0cmllcy9tZWRpYS92aWRlby1jb250cm9scy12aXNp
YmxlLWV4aXRpbmctZnVsbHNjcmVlbi1wcmV0dHktZGlmZi5odG1sVVQFAANZukVSdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAaVA7Qwn5XVlVWQAAMncAAC0AGAAAAAAAAAAAAKSBw0oFAHJldHJp
ZXMvbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtYWN0dWFsLnBuZ1VUBQADVrpFUnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGlQO0P9NF/THgIAALIHAAAtABgAAAAAAAEAAACkgX+kBQByZXRy
aWVzL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWFjdHVhbC50eHRVVAUAA1a6RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABpUDtD1qcHtPYNAACEFQAAKwAYAAAAAAAAAAAApIEEpwUAcmV0
cmllcy9tZWRpYS92aWRlby1kaXNwbGF5LXRvZ2dsZS1kaWZmLnBuZ1VUBQADVrpFUnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGlQO0NOZ7kRcAIAAGMJAAArABgAAAAAAAEAAACkgV+1BQByZXRy
aWVzL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWRpZmYudHh0VVQFAANWukVSdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAaVA7Q5coe54vAgAAlQUAAC0AGAAAAAAAAQAAAKSBNLgFAHJldHJp
ZXMvbWVkaWEvdmlkZW8tZGlzcGxheS10b2dnbGUtZGlmZnMuaHRtbFVUBQADVrpFUnV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGlQO0Oop4CXHFYAAJd2AAAvABgAAAAAAAAAAACkgcq6BQByZXRy
aWVzL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnBuZ1VUBQADVrpFUnV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQO0MxniED7QEAAFsGAAAvABgAAAAAAAEAAACkgU8RBgBy
ZXRyaWVzL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLWV4cGVjdGVkLnR4dFVUBQADVrpFUnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQO0Onn2FYdgoAAEs8AAAzABgAAAAAAAEAAACkgaUT
BgByZXRyaWVzL21lZGlhL3ZpZGVvLWRpc3BsYXktdG9nZ2xlLXByZXR0eS1kaWZmLmh0bWxVVAUA
A1a6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB7UDtD8a+O1TcoAACYTgAAKwAYAAAAAAAA
AAAApIGIHgYAcmV0cmllcy9tZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtYWN0dWFsLnBuZ1VUBQAD
ebpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHtQO0O47Xt21wEAANgFAAArABgAAAAAAAEA
AACkgSRHBgByZXRyaWVzL21lZGlhL3ZpZGVvLWVtcHR5LXNvdXJjZS1hY3R1YWwudHh0VVQFAAN5
ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1A7Q8S8I0qrEgAALBoAACkAGAAAAAAAAAAA
AKSBYEkGAHJldHJpZXMvbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLWRpZmYucG5nVVQFAAN5ukVS
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1A7Q5vNizKsAQAACwUAACkAGAAAAAAAAQAAAKSB
blwGAHJldHJpZXMvbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLWRpZmYudHh0VVQFAAN5ukVSdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1A7Qw8h1rMvAgAAjwUAACsAGAAAAAAAAQAAAKSBfV4G
AHJldHJpZXMvbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLWRpZmZzLmh0bWxVVAUAA3m6RVJ1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAB7UDtDt82QHjomAAA0TQAALQAYAAAAAAAAAAAApIERYQYA
cmV0cmllcy9tZWRpYS92aWRlby1lbXB0eS1zb3VyY2UtZXhwZWN0ZWQucG5nVVQFAAN5ukVSdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAe1A7Q6LtpNVeAQAAZAMAAC0AGAAAAAAAAQAAAKSBsocG
AHJldHJpZXMvbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLWV4cGVjdGVkLnR4dFVUBQADebpFUnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHtQO0PMbkbu5AgAAAEoAAAxABgAAAAAAAEAAACkgXeJ
BgByZXRyaWVzL21lZGlhL3ZpZGVvLWVtcHR5LXNvdXJjZS1wcmV0dHktZGlmZi5odG1sVVQFAAN5
ukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaVA7Q2PxbQWdWAAASnoAACcAGAAAAAAAAAAA
AKSBxpIGAHJldHJpZXMvbWVkaWEvdmlkZW8tbm8tYXVkaW8tYWN0dWFsLnBuZ1VUBQADVbpFUnV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQO0MDuPikCgIAAN0HAAAnABgAAAAAAAEAAACkgcTr
BgByZXRyaWVzL21lZGlhL3ZpZGVvLW5vLWF1ZGlvLWFjdHVhbC50eHRVVAUAA1W6RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABpUDtDN0Z+0RgOAACfFQAAJQAYAAAAAAAAAAAApIEv7gYAcmV0
cmllcy9tZWRpYS92aWRlby1uby1hdWRpby1kaWZmLnBuZ1VUBQADVbpFUnV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGlQO0MPVd4jUgIAAAUJAAAlABgAAAAAAAEAAACkgab8BgByZXRyaWVzL21l
ZGlhL3ZpZGVvLW5vLWF1ZGlvLWRpZmYudHh0VVQFAANVukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAaVA7Q5hnaRosAgAAgwUAACcAGAAAAAAAAQAAAKSBV/8GAHJldHJpZXMvbWVkaWEvdmlk
ZW8tbm8tYXVkaW8tZGlmZnMuaHRtbFVUBQADVbpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AGlQO0PddFywoVQAANZ1AAApABgAAAAAAAAAAACkgeQBBwByZXRyaWVzL21lZGlhL3ZpZGVvLW5v
LWF1ZGlvLWV4cGVjdGVkLnBuZ1VUBQADVbpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQ
O0OYjPJGvQEAADYGAAApABgAAAAAAAEAAACkgehWBwByZXRyaWVzL21lZGlhL3ZpZGVvLW5vLWF1
ZGlvLWV4cGVjdGVkLnR4dFVUBQADVbpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQO0Om
1IGiTwoAAJo6AAAtABgAAAAAAAEAAACkgQhZBwByZXRyaWVzL21lZGlhL3ZpZGVvLW5vLWF1ZGlv
LXByZXR0eS1kaWZmLmh0bWxVVAUAA1W6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABpUDtD
ciP5tdgfAAC0RwAAIgAYAAAAAAAAAAAApIG+YwcAcmV0cmllcy9tZWRpYS92aWRlby1ydGwtYWN0
dWFsLnBuZ1VUBQADVbpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQO0PfBITlnQoAADoS
AAAgABgAAAAAAAAAAACkgfKDBwByZXRyaWVzL21lZGlhL3ZpZGVvLXJ0bC1kaWZmLnBuZ1VUBQAD
VrpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGlQO0ONkPUMJwIAAHQFAAAiABgAAAAAAAEA
AACkgemOBwByZXRyaWVzL21lZGlhL3ZpZGVvLXJ0bC1kaWZmcy5odG1sVVQFAANWukVSdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAaVA7QzAm2/PwAAAAngEAACUAGAAAAAAAAQAAAKSBbJEHAHJl
dHJpZXMvbWVkaWEvdmlkZW8tcnRsLWV4cGVjdGVkLmh0bWxVVAUAA1a6RVJ1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABpUDtDd9nFBTYfAABuRwAAJAAYAAAAAAAAAAAApIG7kgcAcmV0cmllcy9t
ZWRpYS92aWRlby1ydGwtZXhwZWN0ZWQucG5nVVQFAANVukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAaVA7Q6giI6eVdAAAS5IAACwAGAAAAAAAAAAAAKSBT7IHAHJldHJpZXMvbWVkaWEvdmlk
ZW8tdm9sdW1lLXNsaWRlci1hY3R1YWwucG5nVVQFAANVukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAaVA7QwlTTl3DAgAAiAoAACwAGAAAAAAAAQAAAKSBSicIAHJldHJpZXMvbWVkaWEvdmlk
ZW8tdm9sdW1lLXNsaWRlci1hY3R1YWwudHh0VVQFAANVukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAaVA7Q7zoWTfVKQAA9i8AACoAGAAAAAAAAAAAAKSBcyoIAHJldHJpZXMvbWVkaWEvdmlk
ZW8tdm9sdW1lLXNsaWRlci1kaWZmLnBuZ1VUBQADVbpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGlQO0OpLToEAgMAAFoMAAAqABgAAAAAAAEAAACkgaxUCAByZXRyaWVzL21lZGlhL3ZpZGVv
LXZvbHVtZS1zbGlkZXItZGlmZi50eHRVVAUAA1W6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABpUDtDQZxhRy8CAACSBQAALAAYAAAAAAABAAAApIESWAgAcmV0cmllcy9tZWRpYS92aWRlby12
b2x1bWUtc2xpZGVyLWRpZmZzLmh0bWxVVAUAA1W6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABpUDtDugtMCGOBAADOngAALgAYAAAAAAAAAAAApIGnWggAcmV0cmllcy9tZWRpYS92aWRlby12
b2x1bWUtc2xpZGVyLWV4cGVjdGVkLnBuZ1VUBQADVbpFUnV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGlQO0ObHbo8jAIAAEAJAAAuABgAAAAAAAEAAACkgXLcCAByZXRyaWVzL21lZGlhL3ZpZGVv
LXZvbHVtZS1zbGlkZXItZXhwZWN0ZWQudHh0VVQFAANVukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAaVA7Q16UG05ACwAArkgAADIAGAAAAAAAAQAAAKSBZt8IAHJldHJpZXMvbWVkaWEvdmlk
ZW8tdm9sdW1lLXNsaWRlci1wcmV0dHktZGlmZi5odG1sVVQFAANVukVSdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAa1A7QyjTrwOnAAAA9wAAADQAGAAAAAAAAQAAAKSBEusIAHJldHJpZXMvbWVk
aWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLWFjdHVhbC50eHRVVAUAA1q6RVJ1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABrUDtDcOJUot4AAADBAQAAMgAYAAAAAAABAAAApIEn7AgAcmV0
cmllcy9tZWRpYS92b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQtZGlmZi50eHRVVAUAA1q6RVJ1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrUDtDLBS6aJYAAADnAAAANgAYAAAAAAABAAAApIFx
7QgAcmV0cmllcy9tZWRpYS92b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQtZXhwZWN0ZWQudHh0
VVQFAANaukVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa1A7Q3TNYBLtBwAAKBsAADoAGAAA
AAAAAQAAAKSBd+4IAHJldHJpZXMvbWVkaWEvdm9sdW1lLWJhci1lbXB0eS13aGVuLW11dGVkLXBy
ZXR0eS1kaWZmLmh0bWxVVAUAA1q6RVJ1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACcUDtDR1is
0Gz5BQC1gSIACgAYAAAAAAABAAAApIHY9ggAc3RhdHMuanNvblVUBQADt7pFUnV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAB1QO0MAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQYjwDgBzdmcvVVQF
AAPKuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAHVA7QwAAAAAAAAAAAAAAAAsAGAAAAAAA
AAAQAO1BxvAOAHN2Zy9zdHJva2UvVVQFAAPKuUVSdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
HVA7Q0tt0qyDAAAAlAAAACUAGAAAAAAAAQAAAKSBC/EOAHN2Zy9zdHJva2UvemVyby13aWR0aC1o
YW5nLXN0ZGVyci50eHRVVAUAA8q5RVJ1eAsAAQT1AQAABBQAAABQSwUGAAAAAMAAwACEVgAA7fEO
AAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212871</attachid>
            <date>2013-09-27 19:28:40 -0700</date>
            <delta_ts>2013-09-30 08:03:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>15923</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMTkyNmIyLi44YTU4YWZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA5LTI3ICBCZW0gSm9uZXMtQmV5ICA8Ympv
bmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhcGVzXSBOZXcgcG9zaXRpb25pbmcg
bW9kZWw6IFBvc2l0aXZlIG1hcmdpbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hh
cGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdp
bi0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2MGQ0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3No
YXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTggQEAKK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29u
dGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuCisKK1gK
KworWAorWAorCitYCitYWFhYCitQQVNTIGltYWdlU2hhcGVSZWN0KCdhJykudG9wIGlzIDAKK1BB
U1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AgaXMgNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2In
KS5sZWZ0IGlzIDMwMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYycpLnRvcCBpcyA3NQorUEFTUyBp
bWFnZVNoYXBlUmVjdCgnYycpLmxlZnQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdkJyku
dG9wIGlzIDEyNQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnRvcCBpcyAxNTAKK1BBU1MgaW1h
Z2VTaGFwZVJlY3QoJ2UnKS5sZWZ0IGlzIDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2Ut
bWFyZ2luLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOTdiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRl
LWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGltYWdlU2hh
cGVSZWN0KGVsZW1lbnRJZCkgCisgICAgeworICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJpbWFnZS1zaGFwZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAg
ICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCk7CisgICAgICAgIHJldHVybiB7bGVmdDogci5sZWZ0IC0gcy5sZWZ0LCB0b3A6
IHIudG9wIC0gcy50b3AsIHdpZHRoOiByLndpZHRoLCBoZWlnaHQ6IHIuaGVpZ2h0fTsKKyAgICB9
CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcXVpZXQgPSB0
cnVlOyAvLyBQQVNTIG91dHB1dCBkZXBlbmRzIG9uIGlmIHN1YnBpeGVsIGxheW91dCBoYXMgYmVl
biBlbmFibGVkCisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYScpLnRvcCIsICIw
Iik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdhJykubGVmdCIsIDI5
MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3Ai
LCAiNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLmxlZnQiLCAiMzAw
Iik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYycpLnRvcCIsICI3NSIpOwor
ICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJykubGVmdCIsICIzMDAiKTsKKworICAg
ICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdkJykudG9wIiwgIjEyNSIpOworICAgICAgc2hv
dWxkQmVDbG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnZCcpLmxlZnQiLCAyOTIsIDEsIHF1aWV0KTsK
KworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdlJykudG9wIiwgIjE1MCIpOworICAg
ICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdlJykubGVmdCIsICIwIik7CisgICAgfTsKKzwv
c2NyaXB0PgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZsb2F0OiBsZWZ0
OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9zdmcreG1s
O3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNTBw
eCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nNTAnIHk9JzUwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9
JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtbWFyZ2lu
OiA1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAgICAg
ICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9
JzMwMCcgaGVpZ2h0PScxNTAnIHJ4PSc1MCcgcnk9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7
CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgICAgIHdpZHRoOiAz
NTBweDsgCisgICAgICAgIGhlaWdodDogMjUwcHg7IAorICAgIH0KKworICAgICNjb250ZW50IHsK
KyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBn
cmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPlRoaXMgdGVzdCBy
ZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91
bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuPC9wPgorICA8ZGl2IGlkPSJjb250ZW50IiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj48
L2Rpdj4KKyAgICAgIDxzcGFuIGlkPSJhIj5YPC9zcGFuPjxicj48YnI+PHNwYW4gaWQ9ImIiPlg8
L3NwYW4+PGJyPjxzcGFuIGlkPSJjIj5YPC9zcGFuPjxicj48YnI+PHNwYW4gaWQ9ImQiPlg8L3Nw
YW4+PGJyPjxzcGFuIGlkPSJlIj5YWFhYPC9zcGFuPgorICA8L2Rpdj4KKyAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFn
ZS1tYXJnaW4tMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNjY1MmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZs
b2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdy
ZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xl
LgorCitYCisKK1gKK1gKKworWAorWFhYWAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYScpLnRvcCBp
cyAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykudG9wIGlzIDUwCitQQVNTIGltYWdlU2hhcGVS
ZWN0KCdiJykucmlnaHQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykudG9wIGlzIDc1
CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykucmlnaHQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVS
ZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnRvcCBpcyAxNTAK
K1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5yaWdodCBpcyAwCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDdmOWRmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sCkBAIC0wLDAgKzEsNjAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBmdW5jdGlv
biBpbWFnZVNoYXBlUmVjdChlbGVtZW50SWQpIAorICAgIHsKKyAgICAgICAgdmFyIHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utc2hhcGUiKS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKKyAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICByZXR1cm4ge3JpZ2h0OiBzLnJpZ2h0IC0g
ci5yaWdodCwgdG9wOiByLnRvcCAtIHMudG9wLCB3aWR0aDogci53aWR0aCwgaGVpZ2h0OiByLmhl
aWdodH07CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAg
dmFyIHF1aWV0ID0gdHJ1ZTsgLy8gUEFTUyBvdXRwdXQgZGVwZW5kcyBvbiBpZiBzdWJwaXhlbCBs
YXlvdXQgaGFzIGJlZW4gZW5hYmxlZAorCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3Qo
J2EnKS50b3AiLCAiMCIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgn
YScpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBl
UmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdi
JykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYycp
LnRvcCIsICI3NSIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJykucmlnaHQi
LCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZCcpLnRvcCIsICIx
MjUiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1hZ2VTaGFwZVJlY3QoJ2QnKS5yaWdodCIs
IDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS50
b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS5yaWdodCIs
ICIwIik7CisgICAgfTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7Cisg
ICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1vdXRzaWRlOiB1cmwo
ImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnJyB3aWR0aD0nMjUwcHgnIGhlaWdodD0nMTAwcHgnPjxyZWN0IHg9JzUwJyB5PSc1MCcg
d2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICAt
d2Via2l0LXNoYXBlLW1hcmdpbjogNTBweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10
aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9z
dmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxyZWN0
IHg9JzAnIHk9JzAnIHdpZHRoPSczMDAnIGhlaWdodD0nMTUwJyByeD0nNTAnIHJ5PSc1MCcgZmls
bD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0
OworICAgICAgICB3aWR0aDogMzAwcHg7IAorICAgICAgICBoZWlnaHQ6IDI1MHB4OyAKKyAgICB9
CisKKyAgICAjY29udGVudCB7CisgICAgICAgIGZvbnQ6IDI1cHgvMSBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAg
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRo
ZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1
ZSByb3VuZGVkIHJlY3RhbmdsZS48L3A+CisgIDxkaXYgaWQ9ImNvbnRlbnQiPgorICAgICAgPGRp
diBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAgPHNwYW4gaWQ9ImEiPlg8L3NwYW4+PGJy
Pjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImMiPlg8L3NwYW4+PGJyPjxi
cj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImUiPlhYWFg8L3NwYW4+CisgIDwv
ZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGU2NDMwZDQuLjVkN2NiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAxMy0wOS0yMyAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBb
Q1NTIFNoYXBlc10gYWRkIHNoYXBlLW1hcmdpbiBzdXBwb3J0IGZvciBpbWFnZSB2YWx1ZWQgc2hh
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBzaGFwZS1tYXJnaW4gYm91bmRhcnkgZm9yIGEgc2hh
cGUtb3V0c2lkZSB3aG9zZQorICAgICAgICB2YWx1ZSBpcyBhbiBpbWFnZS4KKworICAgICAgICBU
ZXN0czogZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9h
dHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBlcy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLmh0
bWwKKworICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6Ok1hcmdpbkludGVydmFsR2VuZXJh
dG9yKTogSW50ZXJuYWwgdXRpbGl0eSB0aGF0IGdlbmVyYXRlcyB0aGUgbWFyZ2luIGludGVydmFs
cyBmb3IgdGhlIGltYWdlIGludGVydmFsIHNwZWNpZmllZCB3aXRoIHNldCgpLgorICAgICAgICAo
V2ViQ29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdCk6CisgICAgICAgIChXZWJDb3Jl
OjpmaW5kSW5zZXJ0aW9uUG9pbnQpOiBGaW5kIHRoZSBpbnNlcnRpb24gcG9pbnQgaW5kZXggZm9y
IHRoZSB0aGUgc3BlY2lmaWVkIFggdmFsdWUsIHdpdGhpbiBhIHZlY3RvciBvZiBpbnRlcnZhbHMg
c29ydGVkIGJ5IFgxLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVu
aXRlTWFyZ2luSW50ZXJ2YWwpOiBEZXN0cnVjdGl2ZWx5IHVuaXRlIG9uZSBpbnRlcnZhbCB3aXRo
IGFuIGV4aXN0aW5nIG9uZSwgb3IgYXBwZW5kIGl0LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVy
U2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBsYXppbHkg
Y29tcHV0ZWQgdmFsdWUsIG9yIGNyZWF0ZSBpdCB3aXRoIGNvbXB1dGVTaGFwZU1hcmdpbkludGVy
dmFscygpLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKToKKwogMjAxMy0wOS0y
NyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5kZXhlZERC
IElETCBSZWZhY3RvcmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5jcHAKaW5kZXggODdjZDk4YS4uYWMyMGNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKQEAgLTM0LDYgKzM0LDQ2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ig
eworcHVibGljOgorICAgIE1hcmdpbkludGVydmFsR2VuZXJhdG9yKGludCByYWRpdXMpOworICAg
IHZvaWQgc2V0KGludCB5LCBpbnQgeDEsIGludCB4Mik7CisgICAgSW50U2hhcGVJbnRlcnZhbCBp
bnRlcnZhbEF0KGludCB5KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8aW50PiBtX3hJ
bnRlcmNlcHRzOworICAgIGludCBtX3k7CisgICAgaW50IG1feDE7CisgICAgaW50IG1feDI7Cit9
OworCitNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IoaW50
IHJhZGl1cykKKyAgICA6IG1feSgwKQorICAgICwgbV94MSgwKQorICAgICwgbV94MigwKQorewor
ICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7CisgICAgbV94SW50ZXJjZXB0cy5yZXNpemUocmFkaXVz
ICsgMSk7CisgICAgaW50IHJhZGl1c1NxdWFyZWQgPSByYWRpdXMgKiByYWRpdXM7CisgICAgZm9y
IChpbnQgeSA9IDA7IHkgPD0gcmFkaXVzOyB5KyspCisgICAgICAgIG1feEludGVyY2VwdHNbeV0g
PSBzcXJ0KHJhZGl1c1NxdWFyZWQgLSB5ICogeSk7Cit9CisKK3ZvaWQgTWFyZ2luSW50ZXJ2YWxH
ZW5lcmF0b3I6OnNldChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCit7CisgICAgQVNTRVJUKHkgPj0g
MCAmJiB4MSA+PSAwICYmIHgyID4geDEpOworICAgIG1feSA9IHk7CisgICAgbV94MSA9IHgxOwor
ICAgIG1feDIgPSB4MjsKK30KKworSW50U2hhcGVJbnRlcnZhbCBNYXJnaW5JbnRlcnZhbEdlbmVy
YXRvcjo6aW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCB4SW50ZXJjZXB0
c0luZGV4ID0gYWJzKHkgLSBtX3kpOworICAgIGludCBkeCA9ICh4SW50ZXJjZXB0c0luZGV4ID49
IG1feEludGVyY2VwdHMuc2l6ZSgpKSA/IDAgOiBtX3hJbnRlcmNlcHRzW3hJbnRlcmNlcHRzSW5k
ZXhdOworICAgIHJldHVybiBJbnRTaGFwZUludGVydmFsKHN0ZDo6bWF4KDAsIG1feDEgLSBkeCks
IG1feDIgKyBkeCk7Cit9CisKIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFwcGVuZEludGVy
dmFsKGludCB5LCBpbnQgeDEsIGludCB4MikKIHsKICAgICBBU1NFUlQoeSA+PSAwICYmIHkgPCBz
aXplKCkgJiYgeDEgPj0gMCAmJiB4MiA+IHgxICYmIChtX2ludGVydmFsTGlzdHNbeV0uaXNFbXB0
eSgpIHx8IHgxID4gbV9pbnRlcnZhbExpc3RzW3ldLmxhc3QoKS54MigpKSk7CkBAIC00Miw2ICs4
MiwyMCBAQCB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjphcHBlbmRJbnRlcnZhbChpbnQgeSwg
aW50IHgxLCBpbnQgeDIpCiAgICAgbV9pbnRlcnZhbExpc3RzW3ldLmFwcGVuZChJbnRTaGFwZUlu
dGVydmFsKHgxLCB4MikpOwogfQogCit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1h
cmdpbkludGVydmFsKGludCB5LCBjb25zdCBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZhbCkKK3sK
KyAgICBBU1NFUlQobV9pbnRlcnZhbExpc3RzW3ldLnNpemUoKSA8PSAxKTsKKworICAgIGlmICht
X2ludGVydmFsTGlzdHNbeV0uaXNFbXB0eSgpKQorICAgICAgICBtX2ludGVydmFsTGlzdHNbeV0u
YXBwZW5kKGludGVydmFsKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSW50U2hhcGVJbnRlcnZhbCYg
cmVzdWx0SW50ZXJ2YWwgPSBtX2ludGVydmFsTGlzdHNbeV1bMF07CisgICAgICAgIHJlc3VsdElu
dGVydmFsLnNldChzdGQ6Om1pbihyZXN1bHRJbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MSgpKSwg
c3RkOjptYXgocmVzdWx0SW50ZXJ2YWwueDIoKSwgaW50ZXJ2YWwueDIoKSkpOworICAgIH0KKwor
ICAgIG1fYm91bmRzLnVuaXRlKEludFJlY3QoaW50ZXJ2YWwueDEoKSwgeSwgaW50ZXJ2YWwud2lk
dGgoKSwgMSkpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hhcGVJbnRlcnZhbHNDb250YWlu
KGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMsIGNvbnN0IEludFNoYXBlSW50ZXJ2
YWwmIGludGVydmFsKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnZhbHMu
c2l6ZSgpOyBpKyspIHsKQEAgLTE2NSwxNCArMjE5LDM2IEBAIHZvaWQgUmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVy
dmFsCiAgICAgfQogfQogCitQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJT
aGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBtYXJnaW4pIGNv
bnN0Cit7CisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiByZXN1bHQgPSBhZG9wdFB0
cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMoc2l6ZSgpICsgbWFyZ2luKSk7CisgICAgTWFyZ2lu
SW50ZXJ2YWxHZW5lcmF0b3IgaW50ZXJ2YWxHZW5lcmF0b3IobWFyZ2luKTsKKworICAgIGZvciAo
aW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3VuZHMoKS5tYXhZKCk7ICsreSkgeworICAgICAg
ICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzQXRZID0gZ2V0SW50ZXJ2YWxzKHkp
OworICAgICAgICBpZiAoaW50ZXJ2YWxzQXRZLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpbnQgbWFyZ2luWTAgPSBzdGQ6Om1heCgwLCB5IC0gbWFyZ2luKTsKKyAg
ICAgICAgaW50IG1hcmdpblkxID0gc3RkOjptaW4ocmVzdWx0LT5zaXplKCkgLSAxLCB5ICsgbWFy
Z2luKTsKKyAgICAgICAgaW50ZXJ2YWxHZW5lcmF0b3Iuc2V0KHksIGludGVydmFsc0F0WVswXS54
MSgpLCBpbnRlcnZhbHNBdFkubGFzdCgpLngyKCkpOworICAgICAgICBmb3IgKGludCBtYXJnaW5Z
ID0gbWFyZ2luWTA7IG1hcmdpblkgPD0gbWFyZ2luWTE7ICsrbWFyZ2luWSkKKyAgICAgICAgICAg
IHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbChtYXJnaW5ZLCBpbnRlcnZhbEdlbmVyYXRvci5p
bnRlcnZhbEF0KG1hcmdpblkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKK30KKwogY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5J
bnRlcnZhbHMoKSBjb25zdAogewogICAgIEFTU0VSVChzaGFwZU1hcmdpbigpID49IDApOwogICAg
IGlmICghc2hhcGVNYXJnaW4oKSkKICAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKIAotICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gbWFyZ2luLCBzZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OC4KLSAgICByZXR1cm4gKm1faW50
ZXJ2YWxzOworICAgIGludCBtYXJnaW5Cb3VuZGFyeVJhZGl1cyA9IHN0ZDo6bWluKGNsYW1wVG9J
bnRlZ2VyKHNoYXBlTWFyZ2luKCkpLCBzdGQ6Om1heChtX2ltYWdlU2l6ZS53aWR0aCgpLCBtX2lt
YWdlU2l6ZS5oZWlnaHQoKSkpOworICAgIGlmICghbV9tYXJnaW5JbnRlcnZhbHMpCisgICAgICAg
IG1fbWFyZ2luSW50ZXJ2YWxzID0gbV9pbnRlcnZhbHMtPmNvbXB1dGVTaGFwZU1hcmdpbkludGVy
dmFscyhtYXJnaW5Cb3VuZGFyeVJhZGl1cyk7CisKKyAgICByZXR1cm4gKm1fbWFyZ2luSW50ZXJ2
YWxzOwogfQogCiBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6OnBhZGRp
bmdJbnRlcnZhbHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oCmluZGV4IGYxNzlhNzAuLjYwMDg5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKQEAgLTUyLDI3ICs1MiwzMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hh
cGVJbnRlcnZhbHMmIHJlc3VsdCkgY29uc3Q7CiAgICAgdm9pZCBnZXRFeGNsdWRlZEludGVydmFs
cyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkgY29uc3Q7CiAgICAg
Ym9vbCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxZKGludCBtaW5ZLCBjb25zdCBJbnRTaXplJiBtaW5T
aXplLCBMYXlvdXRVbml0JiByZXN1bHQpIGNvbnN0OworICAgIFBhc3NPd25QdHI8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+IGNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgbWFyZ2luKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxM
aXN0cy5zaXplKCk7IH0KKwogICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBnZXRJbnRlcnZh
bHMoaW50IHkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoeSA+PSAwICYmIHkgPCBzaXpl
KCkpOwogICAgICAgICByZXR1cm4gbV9pbnRlcnZhbExpc3RzW3ldOwogICAgIH0KKwogICAgIGJv
b2wgY29udGFpbnMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgZ2V0SW50ZXJ2YWxY
MVZhbHVlcyhpbnQgbWluWSwgaW50IG1heFksIGludCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8
aW50PiYgcmVzdWx0KSBjb25zdDsKLQorICAgIHZvaWQgdW5pdGVNYXJnaW5JbnRlcnZhbChpbnQg
eSwgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYpOwogICAgIEludFJlY3QgbV9ib3VuZHM7Ci0gICAg
VmVjdG9yPEludFNoYXBlSW50ZXJ2YWxzID4gbV9pbnRlcnZhbExpc3RzOworICAgIFZlY3RvcjxJ
bnRTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbExpc3RzOwogfTsKIAogY2xhc3MgUmFzdGVyU2hh
cGUgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBl
KTsKIHB1YmxpYzoKLSAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBpbnRlcnZhbHMpCisgICAgUmFzdGVyU2hhcGUoUGFzc093blB0cjxSYXN0ZXJTaGFwZUlu
dGVydmFscz4gaW50ZXJ2YWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUpCiAgICAgICAgIDog
U2hhcGUoKQogICAgICAgICAsIG1faW50ZXJ2YWxzKGludGVydmFscykKKyAgICAgICAgLCBtX2lt
YWdlU2l6ZShpbWFnZVNpemUpCiAgICAgewogICAgIH0KIApAQCAtODgsNiArOTIsOCBAQCBwcml2
YXRlOgogICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBwYWRkaW5nSW50ZXJ2YWxzKCkg
Y29uc3Q7CiAKICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxzOwor
ICAgIG11dGFibGUgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX21hcmdpbkludGVydmFs
czsKKyAgICBJbnRTaXplIG1faW1hZ2VTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCBlZGEzYWM4
Li4xOTcwNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApA
QCAtMjM5LDcgKzIzOSw3IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShj
b25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3
IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCkpKTsKKyAgICBPd25QdHI8UmFzdGVyU2hh
cGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxl
YXNlKCksIGltYWdlU2l6ZSkpOwogICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3Jp
dGluZ01vZGU7CiAgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0
aChtYXJnaW4sIDApOwogICAgIHJhc3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKHBhZGRpbmcsIDApOwo=
</data>
<flag name="commit-queue"
          id="235149"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212995</attachid>
            <date>2013-09-30 08:03:55 -0700</date>
            <delta_ts>2013-10-01 16:46:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>16012</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOGE5YTBkLi4yOTFkMjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA5LTMwICBSb2JlcnQgUGxvY2llbm5payAg
PHIucGxvY2llbm5pa0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGRlZCBwYXNzaW5n
IGV4cGVjdGF0aW9uIGZvciBmYXN0L2Zvcm1zL3RleHRhcmVhLW1ldHJpY3MuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUt
b3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1p
bWFnZS1tYXJnaW4tMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4yYzYwZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFw
ZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2lu
LTAwMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0IHJlcXVpcmVzIHRo
ZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1
ZSByb3VuZGVkIHJlY3RhbmdsZS4KKworWAorCitYCitYCisKK1gKK1hYWFgKK1BBU1MgaW1hZ2VT
aGFwZVJlY3QoJ2EnKS50b3AgaXMgMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCBpcyA1
MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLmxlZnQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVS
ZWN0KCdjJykudG9wIGlzIDc1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykubGVmdCBpcyAzMDAK
K1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGltYWdlU2hhcGVSZWN0
KCdlJykudG9wIGlzIDE1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLmxlZnQgaXMgMAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFn
ZS1tYXJnaW4tMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE5
N2I3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbApA
QCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisgICAgZnVuY3Rpb24gaW1hZ2VTaGFwZVJlY3QoZWxlbWVudElkKSAKKyAgICB7CisgICAg
ICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlLXNoYXBlIikuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgcmV0dXJuIHts
ZWZ0OiByLmxlZnQgLSBzLmxlZnQsIHRvcDogci50b3AgLSBzLnRvcCwgd2lkdGg6IHIud2lkdGgs
IGhlaWdodDogci5oZWlnaHR9OworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKKyAgICAgIHZhciBxdWlldCA9IHRydWU7IC8vIFBBU1Mgb3V0cHV0IGRlcGVuZHMgb24g
aWYgc3VicGl4ZWwgbGF5b3V0IGhhcyBiZWVuIGVuYWJsZWQKKworICAgICAgc2hvdWxkQmUoImlt
YWdlU2hhcGVSZWN0KCdhJykudG9wIiwgIjAiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1h
Z2VTaGFwZVJlY3QoJ2EnKS5sZWZ0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJl
KCJpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdl
U2hhcGVSZWN0KCdiJykubGVmdCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hh
cGVSZWN0KCdjJykudG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3Qo
J2MnKS5sZWZ0IiwgIjMwMCIpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2Qn
KS50b3AiLCAiMTI1Iik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdk
JykubGVmdCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJl
Y3QoJ2UnKS50b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2Un
KS5sZWZ0IiwgIjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNo
YXBlIHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIC13ZWJraXQtc2hhcGUtb3V0c2lk
ZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI1MHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PSc1MCcg
eT0nNTAnIHdpZHRoPScyMDAnIGhlaWdodD0nNTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAg
ICAgICAgLXdlYmtpdC1zaGFwZS1tYXJnaW46IDUwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUt
aW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
Jz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMzAwJyBoZWlnaHQ9JzE1MCcgcng9JzUwJyByeT0n
NTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5v
LXJlcGVhdDsKKyAgICAgICAgd2lkdGg6IDM1MHB4OyAKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsg
CisgICAgfQorCisgICAgI2NvbnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVl
biBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS48
L3A+CisgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorICAg
ICAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAgPHNwYW4gaWQ9ImEiPlg8L3Nw
YW4+PGJyPjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImMiPlg8L3NwYW4+
PGJyPjxicj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImUiPlhYWFg8L3NwYW4+
CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRz
L3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODI2NjUyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdl
LW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCByZXF1
aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91bmQg
dGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuCisKK1gKKworWAorWAorCitYCitYWFhYCitQQVNT
IGltYWdlU2hhcGVSZWN0KCdhJykudG9wIGlzIDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50
b3AgaXMgNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS5yaWdodCBpcyAzMDAKK1BBU1MgaW1h
Z2VTaGFwZVJlY3QoJ2MnKS50b3AgaXMgNzUKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2MnKS5yaWdo
dCBpcyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGltYWdl
U2hhcGVSZWN0KCdlJykudG9wIGlzIDE1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnJpZ2h0
IGlzIDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjhkN2Y5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBl
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4t
MDAyLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkgCisg
ICAgeworICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1zaGFw
ZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICB2YXIgciA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAg
IHJldHVybiB7cmlnaHQ6IHMucmlnaHQgLSByLnJpZ2h0LCB0b3A6IHIudG9wIC0gcy50b3AsIHdp
ZHRoOiByLndpZHRoLCBoZWlnaHQ6IHIuaGVpZ2h0fTsKKyAgICB9CisKKyAgICB3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91dHB1
dCBkZXBlbmRzIG9uIGlmIHN1YnBpeGVsIGxheW91dCBoYXMgYmVlbiBlbmFibGVkCisKKyAgICAg
IHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYScpLnRvcCIsICIwIik7CisgICAgICBzaG91bGRC
ZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdhJykucmlnaHQiLCAyOTIsIDEsIHF1aWV0KTsKKwor
ICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdiJykudG9wIiwgIjUwIik7CisgICAgICBz
aG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2InKS5yaWdodCIsICIzMDAiKTsKKworICAgICAgc2hv
dWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJykudG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRCZSgi
aW1hZ2VTaGFwZVJlY3QoJ2MnKS5yaWdodCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImlt
YWdlU2hhcGVSZWN0KCdkJykudG9wIiwgIjEyNSIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJp
bWFnZVNoYXBlUmVjdCgnZCcpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3Vs
ZEJlKCJpbWFnZVNoYXBlUmVjdCgnZScpLnRvcCIsICIxNTAiKTsKKyAgICAgIHNob3VsZEJlKCJp
bWFnZVNoYXBlUmVjdCgnZScpLnJpZ2h0IiwgIjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8c3R5
bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAgICAt
d2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4
bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNTBweCcgaGVpZ2h0PScx
MDBweCc+PHJlY3QgeD0nNTAnIHk9JzUwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdi
bHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtbWFyZ2luOiA1MHB4OworICAg
ICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2Zyc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzMwMCcgaGVpZ2h0
PScxNTAnIHJ4PSc1MCcgcnk9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgICAgIHdpZHRoOiAzMDBweDsgCisgICAg
ICAgIGhlaWdodDogMjUwcHg7IAorICAgIH0KKworICAgICNjb250ZW50IHsKKyAgICAgICAgZm9u
dDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAg
ICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRlbnQg
c2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xlLjwvcD4KKyAgPGRp
diBpZD0iY29udGVudCI+CisgICAgICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+CisgICAg
ICA8c3BhbiBpZD0iYSI+WDwvc3Bhbj48YnI+PGJyPjxzcGFuIGlkPSJiIj5YPC9zcGFuPjxicj48
c3BhbiBpZD0iYyI+WDwvc3Bhbj48YnI+PGJyPjxzcGFuIGlkPSJkIj5YPC9zcGFuPjxicj48c3Bh
biBpZD0iZSI+WFhYWDwvc3Bhbj4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5OGEwMC4uZTM1MTI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA5LTIzICBIYW5zIE11bGxlciAgPGhtdWxs
ZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hhcGVzXSBhZGQgc2hhcGUtbWFyZ2luIHN1
cHBvcnQgZm9yIGltYWdlIHZhbHVlZCBzaGFwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTYxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjb21wdXRpbmcgdGhlIHNoYXBl
LW1hcmdpbiBib3VuZGFyeSBmb3IgYSBzaGFwZS1vdXRzaWRlIHdob3NlCisgICAgICAgIHZhbHVl
IGlzIGFuIGltYWdlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRl
LWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVy
YXRvcjo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IpOiBJbnRlcm5hbCB1dGlsaXR5IHRoYXQgZ2Vu
ZXJhdGVzIHRoZSBtYXJnaW4gaW50ZXJ2YWxzIGZvciB0aGUgaW1hZ2UgaW50ZXJ2YWwgc3BlY2lm
aWVkIHdpdGggc2V0KCkuCisgICAgICAgIChXZWJDb3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRv
cjo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRl
cnZhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRJbnNlcnRpb25Qb2ludCk6IEZpbmQgdGhl
IGluc2VydGlvbiBwb2ludCBpbmRleCBmb3IgdGhlIHRoZSBzcGVjaWZpZWQgWCB2YWx1ZSwgd2l0
aGluIGEgdmVjdG9yIG9mIGludGVydmFscyBzb3J0ZWQgYnkgWDEuCisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZUludGVydmFsczo6dW5pdGVNYXJnaW5JbnRlcnZhbCk6IERlc3RydWN0aXZl
bHkgdW5pdGUgb25lIGludGVydmFsIHdpdGggYW4gZXhpc3Rpbmcgb25lLCBvciBhcHBlbmQgaXQu
CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFy
Z2luSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRl
cnZhbHMpOiBSZXR1cm4gdGhlIGxhemlseSBjb21wdXRlZCB2YWx1ZSwgb3IgY3JlYXRlIGl0IHdp
dGggY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKCkuCisgICAgICAgICogcmVuZGVyaW5nL3No
YXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmdldEludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVy
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFy
Z2luSW50ZXJ2YWwpOgorCiAyMDEzLTA5LTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgR2VuZXJhdGUgdG9DU1NDYWxjVmFsdWUgaW5zdGVhZCBv
ZiB1c2luZyBtYW51YWwgY2FzdCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA4N2NkOThhLi41ZjBmNWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMzQs
NiArMzQsNDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNYXJnaW5JbnRlcnZh
bEdlbmVyYXRvciB7CitwdWJsaWM6CisgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IoaW50IHJh
ZGl1cyk7CisgICAgdm9pZCBzZXQoaW50IHksIGludCB4MSwgaW50IHgyKTsKKyAgICBJbnRTaGFw
ZUludGVydmFsIGludGVydmFsQXQoaW50IHkpIGNvbnN0OworCitwcml2YXRlOgorICAgIFZlY3Rv
cjxpbnQ+IG1feEludGVyY2VwdHM7CisgICAgaW50IG1feTsKKyAgICBpbnQgbV94MTsKKyAgICBp
bnQgbV94MjsKK307CisKK01hcmdpbkludGVydmFsR2VuZXJhdG9yOjpNYXJnaW5JbnRlcnZhbEdl
bmVyYXRvcihpbnQgcmFkaXVzKQorICAgIDogbV95KDApCisgICAgLCBtX3gxKDApCisgICAgLCBt
X3gyKDApCit7CisgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKKyAgICBtX3hJbnRlcmNlcHRzLnJl
c2l6ZShyYWRpdXMgKyAxKTsKKyAgICBpbnQgcmFkaXVzU3F1YXJlZCA9IHJhZGl1cyAqIHJhZGl1
czsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8PSByYWRpdXM7IHkrKykKKyAgICAgICAgbV94SW50
ZXJjZXB0c1t5XSA9IHNxcnQoc3RhdGljX2Nhc3Q8ZG91YmxlPihyYWRpdXNTcXVhcmVkIC0geSAq
IHkpKTsKK30KKwordm9pZCBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6c2V0KGludCB5LCBpbnQg
eDEsIGludCB4MikKK3sKKyAgICBBU1NFUlQoeSA+PSAwICYmIHgxID49IDAgJiYgeDIgPiB4MSk7
CisgICAgbV95ID0geTsKKyAgICBtX3gxID0geDE7CisgICAgbV94MiA9IHgyOworfQorCitJbnRT
aGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBj
b25zdAoreworICAgIHVuc2lnbmVkIHhJbnRlcmNlcHRzSW5kZXggPSBhYnMoeSAtIG1feSk7Cisg
ICAgaW50IGR4ID0gKHhJbnRlcmNlcHRzSW5kZXggPj0gbV94SW50ZXJjZXB0cy5zaXplKCkpID8g
MCA6IG1feEludGVyY2VwdHNbeEludGVyY2VwdHNJbmRleF07CisgICAgcmV0dXJuIEludFNoYXBl
SW50ZXJ2YWwoc3RkOjptYXgoMCwgbV94MSAtIGR4KSwgbV94MiArIGR4KTsKK30KKwogdm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5kSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgy
KQogewogICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8IHNpemUoKSAmJiB4MSA+PSAwICYmIHgyID4g
eDEgJiYgKG1faW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5KCkgfHwgeDEgPiBtX2ludGVydmFsTGlz
dHNbeV0ubGFzdCgpLngyKCkpKTsKQEAgLTQyLDYgKzgyLDIwIEBAIHZvaWQgUmFzdGVyU2hhcGVJ
bnRlcnZhbHM6OmFwcGVuZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4MikKICAgICBtX2lu
dGVydmFsTGlzdHNbeV0uYXBwZW5kKEludFNoYXBlSW50ZXJ2YWwoeDEsIHgyKSk7CiB9CiAKK3Zv
aWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFyZ2luSW50ZXJ2YWwoaW50IHksIGNvbnN0
IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQoreworICAgIEFTU0VSVChtX2ludGVydmFsTGlz
dHNbeV0uc2l6ZSgpIDw9IDEpOworCisgICAgaWYgKG1faW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5
KCkpCisgICAgICAgIG1faW50ZXJ2YWxMaXN0c1t5XS5hcHBlbmQoaW50ZXJ2YWwpOworICAgIGVs
c2UgeworICAgICAgICBJbnRTaGFwZUludGVydmFsJiByZXN1bHRJbnRlcnZhbCA9IG1faW50ZXJ2
YWxMaXN0c1t5XVswXTsKKyAgICAgICAgcmVzdWx0SW50ZXJ2YWwuc2V0KHN0ZDo6bWluKHJlc3Vs
dEludGVydmFsLngxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1heChyZXN1bHRJbnRlcnZhbC54
MigpLCBpbnRlcnZhbC54MigpKSk7CisgICAgfQorCisgICAgbV9ib3VuZHMudW5pdGUoSW50UmVj
dChpbnRlcnZhbC54MSgpLCB5LCBpbnRlcnZhbC53aWR0aCgpLCAxKSk7Cit9CisKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzaGFwZUludGVydmFsc0NvbnRhaW4oY29uc3QgSW50U2hhcGVJbnRlcnZhbHMm
IGludGVydmFscywgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWwpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGludGVydmFscy5zaXplKCk7IGkrKykgewpAQCAtMTY1LDE0
ICsyMTksMzYgQEAgdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhjbHVkZWRJbnRlcnZh
bHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWwKICAgICB9CiB9CiAKK1Bhc3NPd25Q
dHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hh
cGVNYXJnaW5JbnRlcnZhbHMoaW50IG1hcmdpbikgY29uc3QKK3sKKyAgICBPd25QdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFs
cyhzaXplKCkgKyBtYXJnaW4pKTsKKyAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBpbnRlcnZh
bEdlbmVyYXRvcihtYXJnaW4pOworCisgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8
IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CisgICAgICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxz
JiBpbnRlcnZhbHNBdFkgPSBnZXRJbnRlcnZhbHMoeSk7CisgICAgICAgIGlmIChpbnRlcnZhbHNB
dFkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGludCBtYXJnaW5Z
MCA9IHN0ZDo6bWF4KDAsIHkgLSBtYXJnaW4pOworICAgICAgICBpbnQgbWFyZ2luWTEgPSBzdGQ6
Om1pbihyZXN1bHQtPnNpemUoKSAtIDEsIHkgKyBtYXJnaW4pOworICAgICAgICBpbnRlcnZhbEdl
bmVyYXRvci5zZXQoeSwgaW50ZXJ2YWxzQXRZWzBdLngxKCksIGludGVydmFsc0F0WS5sYXN0KCku
eDIoKSk7CisgICAgICAgIGZvciAoaW50IG1hcmdpblkgPSBtYXJnaW5ZMDsgbWFyZ2luWSA8PSBt
YXJnaW5ZMTsgKyttYXJnaW5ZKQorICAgICAgICAgICAgcmVzdWx0LT51bml0ZU1hcmdpbkludGVy
dmFsKG1hcmdpblksIGludGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQobWFyZ2luWSkpOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworfQorCiBjb25zdCBSYXN0ZXJTaGFw
ZUludGVydmFscyYgUmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKHNoYXBlTWFyZ2luKCkgPj0gMCk7CiAgICAgaWYgKCFzaGFwZU1hcmdpbigpKQogICAg
ICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOwogCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBub24temVybyBtYXJnaW4sIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2MzQ4LgotICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisgICAgaW50IG1hcmdpbkJv
dW5kYXJ5UmFkaXVzID0gc3RkOjptaW4oY2xhbXBUb0ludGVnZXIoc2hhcGVNYXJnaW4oKSksIHN0
ZDo6bWF4KG1faW1hZ2VTaXplLndpZHRoKCksIG1faW1hZ2VTaXplLmhlaWdodCgpKSk7CisgICAg
aWYgKCFtX21hcmdpbkludGVydmFscykKKyAgICAgICAgbV9tYXJnaW5JbnRlcnZhbHMgPSBtX2lu
dGVydmFscy0+Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKG1hcmdpbkJvdW5kYXJ5UmFkaXVz
KTsKKworICAgIHJldHVybiAqbV9tYXJnaW5JbnRlcnZhbHM7CiB9CiAKIGNvbnN0IFJhc3RlclNo
YXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKaW5kZXggZjE3OWE3
MC4uNjAwODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuaApAQCAtNTIsMjcgKzUyLDMxIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEluY2x1ZGVk
SW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25z
dDsKICAgICB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFw
ZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAgICBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZh
bFkoaW50IG1pblksIGNvbnN0IEludFNpemUmIG1pblNpemUsIExheW91dFVuaXQmIHJlc3VsdCkg
Y29uc3Q7CisgICAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBl
TWFyZ2luSW50ZXJ2YWxzKGludCBtYXJnaW4pIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGludCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbExpc3RzLnNpemUoKTsgfQorCiAgICAgY29u
c3QgSW50U2hhcGVJbnRlcnZhbHMmIGdldEludGVydmFscyhpbnQgeSkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8IHNpemUoKSk7CiAgICAgICAgIHJldHVybiBtX2lu
dGVydmFsTGlzdHNbeV07CiAgICAgfQorCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBJbnRSZWN0
JikgY29uc3Q7CiAgICAgYm9vbCBnZXRJbnRlcnZhbFgxVmFsdWVzKGludCBtaW5ZLCBpbnQgbWF4
WSwgaW50IG1pbkludGVydmFsV2lkdGgsIFZlY3RvcjxpbnQ+JiByZXN1bHQpIGNvbnN0OwotCisg
ICAgdm9pZCB1bml0ZU1hcmdpbkludGVydmFsKGludCB5LCBjb25zdCBJbnRTaGFwZUludGVydmFs
Jik7CiAgICAgSW50UmVjdCBtX2JvdW5kczsKLSAgICBWZWN0b3I8SW50U2hhcGVJbnRlcnZhbHMg
PiBtX2ludGVydmFsTGlzdHM7CisgICAgVmVjdG9yPEludFNoYXBlSW50ZXJ2YWxzPiBtX2ludGVy
dmFsTGlzdHM7CiB9OwogCiBjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOwogcHVibGljOgotICAgIFJhc3RlclNo
YXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICBSYXN0
ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMsIGNvbnN0
IEludFNpemUmIGltYWdlU2l6ZSkKICAgICAgICAgOiBTaGFwZSgpCiAgICAgICAgICwgbV9pbnRl
cnZhbHMoaW50ZXJ2YWxzKQorICAgICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICB7
CiAgICAgfQogCkBAIC04OCw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmFzdGVyU2hh
cGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdDsKIAogICAgIE93blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7CisgICAgbXV0YWJsZSBPd25QdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IG1fbWFyZ2luSW50ZXJ2YWxzOworICAgIEludFNpemUgbV9pbWFnZVNp
emU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGVkYTNhYzguLjE5NzA0MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgUGFzc093
blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1h
Z2UsIGZsb2F0IHRocmVzaG8KICAgICAgICAgfQogICAgIH0KIAotICAgIE93blB0cjxSYXN0ZXJT
aGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJl
bGVhc2UoKSkpOworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0
cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSwgaW1hZ2VTaXplKSk7CiAgICAg
cmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFw
ZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CiAgICAgcmFzdGVy
U2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGluZywgMCk7Cg==
</data>
<flag name="review"
          id="235282"
          type_id="1"
          status="-"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213131</attachid>
            <date>2013-10-01 16:46:23 -0700</date>
            <delta_ts>2013-10-01 17:09:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>19225</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNDk2N2QwLi5iODc3Y2ZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTEwLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2VudGVyIG1pc3NwZWxsaW5nIGRvdHMgYWNyb3NzIHdpZHRoIG9mIHdvcmQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91
dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1h
Z2UtbWFyZ2luLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMmM2MGQ0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVz
L3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0w
MDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUg
QWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUg
cm91bmRlZCByZWN0YW5nbGUuCisKK1gKKworWAorWAorCitYCitYWFhYCitQQVNTIGltYWdlU2hh
cGVSZWN0KCdhJykudG9wIGlzIDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AgaXMgNTAK
K1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS5sZWZ0IGlzIDMwMAorUEFTUyBpbWFnZVNoYXBlUmVj
dCgnYycpLnRvcCBpcyA3NQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYycpLmxlZnQgaXMgMzAwCitQ
QVNTIGltYWdlU2hhcGVSZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNoYXBlUmVjdCgn
ZScpLnRvcCBpcyAxNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5sZWZ0IGlzIDAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2Ut
bWFyZ2luLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOTdi
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRz
aWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwKQEAg
LTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorICAgIGZ1bmN0aW9uIGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkgCisgICAgeworICAgICAg
ICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1zaGFwZSIpLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1lbnRJZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHJldHVybiB7bGVm
dDogci5sZWZ0IC0gcy5sZWZ0LCB0b3A6IHIudG9wIC0gcy50b3AsIHdpZHRoOiByLndpZHRoLCBo
ZWlnaHQ6IHIuaGVpZ2h0fTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICB2YXIgcXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91dHB1dCBkZXBlbmRzIG9uIGlm
IHN1YnBpeGVsIGxheW91dCBoYXMgYmVlbiBlbmFibGVkCisKKyAgICAgIHNob3VsZEJlKCJpbWFn
ZVNoYXBlUmVjdCgnYScpLnRvcCIsICIwIik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdl
U2hhcGVSZWN0KCdhJykubGVmdCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgi
aW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AiLCAiNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNo
YXBlUmVjdCgnYicpLmxlZnQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBl
UmVjdCgnYycpLnRvcCIsICI3NSIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdj
JykubGVmdCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdkJyku
dG9wIiwgIjEyNSIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnZCcp
LmxlZnQiLCAyOTIsIDEsIHF1aWV0KTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0
KCdlJykudG9wIiwgIjE1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdlJyku
bGVmdCIsICIwIik7CisgICAgfTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFw
ZSB7CisgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6
IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnIHdpZHRoPScyNTBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nNTAnIHk9
JzUwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtbWFyZ2luOiA1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWlt
YWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+
PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzMwMCcgaGVpZ2h0PScxNTAnIHJ4PSc1MCcgcnk9JzUw
JyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1y
ZXBlYXQ7CisgICAgICAgIHdpZHRoOiAzNTBweDsgCisgICAgICAgIGhlaWdodDogMjUwcHg7IAor
ICAgIH0KKworICAgICNjb250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMt
c2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisgIDxwPlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4g
Y29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuPC9w
PgorICA8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAg
IDxkaXYgaWQ9ImltYWdlLXNoYXBlIj48L2Rpdj4KKyAgICAgIDxzcGFuIGlkPSJhIj5YPC9zcGFu
Pjxicj48YnI+PHNwYW4gaWQ9ImIiPlg8L3NwYW4+PGJyPjxzcGFuIGlkPSJjIj5YPC9zcGFuPjxi
cj48YnI+PHNwYW4gaWQ9ImQiPlg8L3NwYW4+PGJyPjxzcGFuIGlkPSJlIj5YWFhYPC9zcGFuPgor
ICA8L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjgyNjY1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRo
ZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xlLgorCitYCisKK1gKK1gKKworWAorWFhYWAorUEFTUyBp
bWFnZVNoYXBlUmVjdCgnYScpLnRvcCBpcyAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykudG9w
IGlzIDUwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykucmlnaHQgaXMgMzAwCitQQVNTIGltYWdl
U2hhcGVSZWN0KCdjJykudG9wIGlzIDc1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykucmlnaHQg
aXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNo
YXBlUmVjdCgnZScpLnRvcCBpcyAxNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5yaWdodCBp
cyAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44ZDdmOWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
Mi5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBpbWFnZVNoYXBlUmVjdChlbGVtZW50SWQpIAorICAg
IHsKKyAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utc2hhcGUi
KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBy
ZXR1cm4ge3JpZ2h0OiBzLnJpZ2h0IC0gci5yaWdodCwgdG9wOiByLnRvcCAtIHMudG9wLCB3aWR0
aDogci53aWR0aCwgaGVpZ2h0OiByLmhlaWdodH07CisgICAgfQorCisgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHF1aWV0ID0gdHJ1ZTsgLy8gUEFTUyBvdXRwdXQg
ZGVwZW5kcyBvbiBpZiBzdWJwaXhlbCBsYXlvdXQgaGFzIGJlZW4gZW5hYmxlZAorCisgICAgICBz
aG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2EnKS50b3AiLCAiMCIpOworICAgICAgc2hvdWxkQmVD
bG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnYScpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAg
ICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hv
dWxkQmUoImltYWdlU2hhcGVSZWN0KCdiJykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3Vs
ZEJlKCJpbWFnZVNoYXBlUmVjdCgnYycpLnRvcCIsICI3NSIpOworICAgICAgc2hvdWxkQmUoImlt
YWdlU2hhcGVSZWN0KCdjJykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFn
ZVNoYXBlUmVjdCgnZCcpLnRvcCIsICIxMjUiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1h
Z2VTaGFwZVJlY3QoJ2QnKS5yaWdodCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRC
ZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS50b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1h
Z2VTaGFwZVJlY3QoJ2UnKS5yaWdodCIsICIwIik7CisgICAgfTsKKzwvc2NyaXB0PgorPHN0eWxl
PgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgLXdl
YmtpdC1zaGFwZS1vdXRzaWRlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjUwcHgnIGhlaWdodD0nMTAw
cHgnPjxyZWN0IHg9JzUwJyB5PSc1MCcgd2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1
ZScvPjwvc3ZnPiIpOworICAgICAgICAtd2Via2l0LXNoYXBlLW1hcmdpbjogNTBweDsKKyAgICAg
ICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnPjxyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPSczMDAnIGhlaWdodD0n
MTUwJyByeD0nNTAnIHJ5PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgICAgICB3aWR0aDogMzAwcHg7IAorICAgICAg
ICBoZWlnaHQ6IDI1MHB4OyAKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICAgIGZvbnQ6
IDI1cHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAg
IHRleHQtYWxpZ246IHJpZ2h0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNo
b3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS48L3A+CisgIDxkaXYg
aWQ9ImNvbnRlbnQiPgorICAgICAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAg
PHNwYW4gaWQ9ImEiPlg8L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNw
YW4gaWQ9ImMiPlg8L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4g
aWQ9ImUiPlhYWFg8L3NwYW4+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
My1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMy1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzA1M2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNj
b250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAg
IGNvbG9yOiBncmVlbjsKKyAgICAgICAgbWFyZ2luOiAwcHg7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMDBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0n
MCcgeT0nMCcgd2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOwor
ICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRo
ZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByZWN0YW5nbGUuPC9w
PgorICA8cHJlIGlkPSJjb250ZW50Ij4KKyAgICAgICAgWAorICAgICAgICBYCitYCisgIDwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
My5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmMwY2Y4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1p
bWFnZS1tYXJnaW4tMDAzLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZsb2F0
OiBsZWZ0OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9z
dmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRo
PScyMDBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzIwMCcgaGVp
Z2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICAtd2Via2l0LXNoYXBlLW1h
cmdpbjogMHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAg
ICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3Zn
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwMHB4JyBoZWlnaHQ9
JzEwMHB4Jz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdi
bHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cisg
ICAgICAgIHdpZHRoOiA1MDBweDsgCisgICAgICAgIGhlaWdodDogMTAwcHg7IAorICAgIH0KKwor
ICAgICNjb250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7Cisg
ICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
IDxwPlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBz
aG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcmVjdGFuZ2xlLjwvcD4KKyAgPGRpdiBpZD0iY29u
dGVudCI+CisgICAgICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+CisgICAgICBYPGJyPlg8
YnI+WAorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCA3MDFl
NzQwLi45YjIyM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysr
IGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0yOTYsNiArMjk2LDExIEBAIGlubGlu
ZSBpbnQgY2xhbXBUb0ludGVnZXIoZG91YmxlIHZhbHVlKQogICAgIHJldHVybiBjbGFtcFRvPGlu
dD4odmFsdWUpOwogfQogCitpbmxpbmUgaW50IGNsYW1wVG9VbnNpZ25lZChkb3VibGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuIGNsYW1wVG88dW5zaWduZWQ+KHZhbHVlKTsKK30KKwogaW5saW5lIGZs
b2F0IGNsYW1wVG9GbG9hdChkb3VibGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGNsYW1wVG88Zmxv
YXQ+KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZmY5YzczLi5mNjI4ZjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTMtMDktMjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5j
b20+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3Ig
aW1hZ2UgdmFsdWVkIHNoYXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUgc2hhcGUtbWFyZ2luIGJv
dW5kYXJ5IGZvciBhIHNoYXBlLW91dHNpZGUgd2hvc2UKKyAgICAgICAgdmFsdWUgaXMgYW4gaW1h
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3No
YXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1h
Z2UtbWFyZ2luLTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBlcy9zaGFwZS1vdXRz
aWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWwKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6Ok1hcmdpbkludGVydmFsR2VuZXJhdG9yKTog
SW50ZXJuYWwgdXRpbGl0eSB0aGF0IGdlbmVyYXRlcyB0aGUgbWFyZ2luIGludGVydmFscyBmb3Ig
dGhlIGltYWdlIGludGVydmFsIHNwZWNpZmllZCB3aXRoIHNldCgpLgorICAgICAgICAoV2ViQ29y
ZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNYXJn
aW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
SW5zZXJ0aW9uUG9pbnQpOiBGaW5kIHRoZSBpbnNlcnRpb24gcG9pbnQgaW5kZXggZm9yIHRoZSB0
aGUgc3BlY2lmaWVkIFggdmFsdWUsIHdpdGhpbiBhIHZlY3RvciBvZiBpbnRlcnZhbHMgc29ydGVk
IGJ5IFgxLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFy
Z2luSW50ZXJ2YWwpOiBEZXN0cnVjdGl2ZWx5IHVuaXRlIG9uZSBpbnRlcnZhbCB3aXRoIGFuIGV4
aXN0aW5nIG9uZSwgb3IgYXBwZW5kIGl0LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJ
bnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBsYXppbHkgY29tcHV0
ZWQgdmFsdWUsIG9yIGNyZWF0ZSBpdCB3aXRoIGNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscygp
LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKToKKyAgICAgICAgKiBXVEYvd3Rm
L01hdGhFeHRyYXMuaAorICAgICAgICAKKwogMjAxMy0xMC0wMSAgU3phYm9sY3MgRMOhdmlkICA8
ZGF2aWRzekBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmVuYW1lIFVSTCB0eXBlIHZhcmlh
YmxlcyBpbiBDdXJsIG5ldHdvcmsgYmFja2VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKaW5kZXggODdjZDk4YS4uNGVjZWNhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKQEAgLTM0
LDYgKzM0LDQ1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWFyZ2luSW50ZXJ2
YWxHZW5lcmF0b3IgeworcHVibGljOgorICAgIE1hcmdpbkludGVydmFsR2VuZXJhdG9yKHVuc2ln
bmVkIHJhZGl1cyk7CisgICAgdm9pZCBzZXQoaW50IHksIGludCB4MSwgaW50IHgyKTsKKyAgICBJ
bnRTaGFwZUludGVydmFsIGludGVydmFsQXQoaW50IHkpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFZlY3RvcjxpbnQ+IG1feEludGVyY2VwdHM7CisgICAgaW50IG1feTsKKyAgICBpbnQgbV94MTsK
KyAgICBpbnQgbV94MjsKK307CisKK01hcmdpbkludGVydmFsR2VuZXJhdG9yOjpNYXJnaW5JbnRl
cnZhbEdlbmVyYXRvcih1bnNpZ25lZCByYWRpdXMpCisgICAgOiBtX3koMCkKKyAgICAsIG1feDEo
MCkKKyAgICAsIG1feDIoMCkKK3sKKyAgICBtX3hJbnRlcmNlcHRzLnJlc2l6ZShyYWRpdXMgKyAx
KTsKKyAgICB1bnNpZ25lZCByYWRpdXNTcXVhcmVkID0gcmFkaXVzICogcmFkaXVzOworICAgIGZv
ciAodW5zaWduZWQgeSA9IDA7IHkgPD0gcmFkaXVzOyB5KyspCisgICAgICAgIG1feEludGVyY2Vw
dHNbeV0gPSBzcXJ0KHN0YXRpY19jYXN0PGRvdWJsZT4ocmFkaXVzU3F1YXJlZCAtIHkgKiB5KSk7
Cit9CisKK3ZvaWQgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OnNldChpbnQgeSwgaW50IHgxLCBp
bnQgeDIpCit7CisgICAgQVNTRVJUKHkgPj0gMCAmJiB4MSA+PSAwICYmIHgyID4geDEpOworICAg
IG1feSA9IHk7CisgICAgbV94MSA9IHgxOworICAgIG1feDIgPSB4MjsKK30KKworSW50U2hhcGVJ
bnRlcnZhbCBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdChpbnQgeSkgY29uc3QK
K3sKKyAgICB1bnNpZ25lZCB4SW50ZXJjZXB0c0luZGV4ID0gYWJzKHkgLSBtX3kpOworICAgIGlu
dCBkeCA9ICh4SW50ZXJjZXB0c0luZGV4ID49IG1feEludGVyY2VwdHMuc2l6ZSgpKSA/IDAgOiBt
X3hJbnRlcmNlcHRzW3hJbnRlcmNlcHRzSW5kZXhdOworICAgIHJldHVybiBJbnRTaGFwZUludGVy
dmFsKHN0ZDo6bWF4KDAsIG1feDEgLSBkeCksIG1feDIgKyBkeCk7Cit9CisKIHZvaWQgUmFzdGVy
U2hhcGVJbnRlcnZhbHM6OmFwcGVuZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4MikKIHsK
ICAgICBBU1NFUlQoeSA+PSAwICYmIHkgPCBzaXplKCkgJiYgeDEgPj0gMCAmJiB4MiA+IHgxICYm
IChtX2ludGVydmFsTGlzdHNbeV0uaXNFbXB0eSgpIHx8IHgxID4gbV9pbnRlcnZhbExpc3RzW3ld
Lmxhc3QoKS54MigpKSk7CkBAIC00Miw2ICs4MSwyMCBAQCB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2
YWxzOjphcHBlbmRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCiAgICAgbV9pbnRlcnZh
bExpc3RzW3ldLmFwcGVuZChJbnRTaGFwZUludGVydmFsKHgxLCB4MikpOwogfQogCit2b2lkIFJh
c3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKGludCB5LCBjb25zdCBJbnRT
aGFwZUludGVydmFsJiBpbnRlcnZhbCkKK3sKKyAgICBBU1NFUlQobV9pbnRlcnZhbExpc3RzW3ld
LnNpemUoKSA8PSAxKTsgLy8gRWFjaCBtX2ludGVydmFsTGlzdHMgZW50cnkgaGFzIDAgb3Igb25l
IGludGVydmFsLgorCisgICAgaWYgKG1faW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5KCkpCisgICAg
ICAgIG1faW50ZXJ2YWxMaXN0c1t5XS5hcHBlbmQoaW50ZXJ2YWwpOworICAgIGVsc2UgeworICAg
ICAgICBJbnRTaGFwZUludGVydmFsJiByZXN1bHRJbnRlcnZhbCA9IG1faW50ZXJ2YWxMaXN0c1t5
XVswXTsKKyAgICAgICAgcmVzdWx0SW50ZXJ2YWwuc2V0KHN0ZDo6bWluKHJlc3VsdEludGVydmFs
LngxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1heChyZXN1bHRJbnRlcnZhbC54MigpLCBpbnRl
cnZhbC54MigpKSk7CisgICAgfQorCisgICAgbV9ib3VuZHMudW5pdGUoSW50UmVjdChpbnRlcnZh
bC54MSgpLCB5LCBpbnRlcnZhbC53aWR0aCgpLCAxKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzaGFwZUludGVydmFsc0NvbnRhaW4oY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFs
cywgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWwpCiB7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGludGVydmFscy5zaXplKCk7IGkrKykgewpAQCAtMTY1LDE0ICsyMTgsMzcg
QEAgdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkx
LCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWwKICAgICB9CiB9CiAKKy8vIEN1cnJlbnRseSBsaW1p
dGVkIHRvIGNvbXB1dGluZyB0aGUgbWFyZ2luIGJvdW5kYXJ5IGZvciBzaGFwZS1vdXRzaWRlIGZv
ciBmbG9hdHMsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
MzQ4LgorUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgbWFyZ2luKSBjb25zdAoreworICAg
IE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzKHNpemUoKSArIG1hcmdpbikpOworICAgIE1hcmdpbkludGVydmFsR2Vu
ZXJhdG9yIGludGVydmFsR2VuZXJhdG9yKG1hcmdpbik7CisKKyAgICBmb3IgKGludCB5ID0gYm91
bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKKyAgICAgICAgY29uc3QgSW50
U2hhcGVJbnRlcnZhbHMmIGludGVydmFsc0F0WSA9IGdldEludGVydmFscyh5KTsKKyAgICAgICAg
aWYgKGludGVydmFsc0F0WS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgaW50IG1hcmdpblkwID0gc3RkOjptYXgoMCwgeSAtIG1hcmdpbik7CisgICAgICAgIGludCBt
YXJnaW5ZMSA9IHN0ZDo6bWluKHJlc3VsdC0+c2l6ZSgpIC0gMSwgeSArIG1hcmdpbik7CisgICAg
ICAgIGludGVydmFsR2VuZXJhdG9yLnNldCh5LCBpbnRlcnZhbHNBdFlbMF0ueDEoKSwgaW50ZXJ2
YWxzQXRZLmxhc3QoKS54MigpKTsKKyAgICAgICAgZm9yIChpbnQgbWFyZ2luWSA9IG1hcmdpblkw
OyBtYXJnaW5ZIDw9IG1hcmdpblkxOyArK21hcmdpblkpCisgICAgICAgICAgICByZXN1bHQtPnVu
aXRlTWFyZ2luSW50ZXJ2YWwobWFyZ2luWSwgaW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdCht
YXJnaW5ZKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisKIGNv
bnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKICAgICBpZiAoIXNoYXBl
TWFyZ2luKCkpCiAgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CiAKLSAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbiwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCi0gICAgcmV0dXJuICptX2ludGVydmFsczsKKyAg
ICBpbnQgbWFyZ2luQm91bmRhcnlSYWRpdXMgPSBzdGQ6Om1pbihjbGFtcFRvVW5zaWduZWQoY2Vp
bChzaGFwZU1hcmdpbigpKSksIHN0ZDo6bWF4KG1faW1hZ2VTaXplLndpZHRoKCksIG1faW1hZ2VT
aXplLmhlaWdodCgpKSk7CisgICAgaWYgKCFtX21hcmdpbkludGVydmFscykKKyAgICAgICAgbV9t
YXJnaW5JbnRlcnZhbHMgPSBtX2ludGVydmFscy0+Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxz
KG1hcmdpbkJvdW5kYXJ5UmFkaXVzKTsKKworICAgIHJldHVybiAqbV9tYXJnaW5JbnRlcnZhbHM7
CiB9CiAKIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0lu
dGVydmFscygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmgKaW5kZXggZjE3OWE3MC4uNjAwODllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNTIsMjcgKzUyLDMxIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUlu
dGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAgICB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGlu
dCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFscyYgcmVzdWx0KSBjb25zdDsKICAgICBib29s
IGZpcnN0SW5jbHVkZWRJbnRlcnZhbFkoaW50IG1pblksIGNvbnN0IEludFNpemUmIG1pblNpemUs
IExheW91dFVuaXQmIHJlc3VsdCkgY29uc3Q7CisgICAgUGFzc093blB0cjxSYXN0ZXJTaGFwZUlu
dGVydmFscz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBtYXJnaW4pIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnZhbExpc3Rz
LnNpemUoKTsgfQorCiAgICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGdldEludGVydmFscyhp
bnQgeSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8IHNpemUoKSk7
CiAgICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeV07CiAgICAgfQorCiAgICAgYm9vbCBj
b250YWlucyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgYm9vbCBnZXRJbnRlcnZhbFgxVmFs
dWVzKGludCBtaW5ZLCBpbnQgbWF4WSwgaW50IG1pbkludGVydmFsV2lkdGgsIFZlY3RvcjxpbnQ+
JiByZXN1bHQpIGNvbnN0OwotCisgICAgdm9pZCB1bml0ZU1hcmdpbkludGVydmFsKGludCB5LCBj
b25zdCBJbnRTaGFwZUludGVydmFsJik7CiAgICAgSW50UmVjdCBtX2JvdW5kczsKLSAgICBWZWN0
b3I8SW50U2hhcGVJbnRlcnZhbHMgPiBtX2ludGVydmFsTGlzdHM7CisgICAgVmVjdG9yPEludFNo
YXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsTGlzdHM7CiB9OwogCiBjbGFzcyBSYXN0ZXJTaGFwZSA6
IHB1YmxpYyBTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOwog
cHVibGljOgotICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
IGludGVydmFscykKKyAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBpbnRlcnZhbHMsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSkKICAgICAgICAgOiBTaGFw
ZSgpCiAgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgICAgICAsIG1faW1hZ2VT
aXplKGltYWdlU2l6ZSkKICAgICB7CiAgICAgfQogCkBAIC04OCw2ICs5Miw4IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25z
dDsKIAogICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7CisgICAg
bXV0YWJsZSBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IG1fbWFyZ2luSW50ZXJ2YWxzOwor
ICAgIEludFNpemUgbV9pbWFnZVNpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGVkYTNhYzguLjE5
NzA0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0y
MzksNyArMjM5LDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0
IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG8KICAgICAgICAgfQogICAgIH0K
IAotICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFz
dGVyU2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSkpOworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4g
cmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2Uo
KSwgaW1hZ2VTaXplKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5n
TW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1h
cmdpbiwgMCk7CiAgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5n
dGgocGFkZGluZywgMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213133</attachid>
            <date>2013-10-01 17:09:09 -0700</date>
            <delta_ts>2013-10-03 09:24:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>19248</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNDk2N2QwLi5iODc3Y2ZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTEwLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2VudGVyIG1pc3NwZWxsaW5nIGRvdHMgYWNyb3NzIHdpZHRoIG9mIHdvcmQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91
dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1h
Z2UtbWFyZ2luLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMmM2MGQ0NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVz
L3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0w
MDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCByZXF1aXJlcyB0aGUg
QWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUg
cm91bmRlZCByZWN0YW5nbGUuCisKK1gKKworWAorWAorCitYCitYWFhYCitQQVNTIGltYWdlU2hh
cGVSZWN0KCdhJykudG9wIGlzIDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AgaXMgNTAK
K1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS5sZWZ0IGlzIDMwMAorUEFTUyBpbWFnZVNoYXBlUmVj
dCgnYycpLnRvcCBpcyA3NQorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYycpLmxlZnQgaXMgMzAwCitQ
QVNTIGltYWdlU2hhcGVSZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNoYXBlUmVjdCgn
ZScpLnRvcCBpcyAxNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5sZWZ0IGlzIDAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2Ut
bWFyZ2luLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxOTdi
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRz
aWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwKQEAg
LTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorICAgIGZ1bmN0aW9uIGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkgCisgICAgeworICAgICAg
ICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1zaGFwZSIpLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGVsZW1lbnRJZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHJldHVybiB7bGVm
dDogci5sZWZ0IC0gcy5sZWZ0LCB0b3A6IHIudG9wIC0gcy50b3AsIHdpZHRoOiByLndpZHRoLCBo
ZWlnaHQ6IHIuaGVpZ2h0fTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgICB2YXIgcXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91dHB1dCBkZXBlbmRzIG9uIGlm
IHN1YnBpeGVsIGxheW91dCBoYXMgYmVlbiBlbmFibGVkCisKKyAgICAgIHNob3VsZEJlKCJpbWFn
ZVNoYXBlUmVjdCgnYScpLnRvcCIsICIwIik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdl
U2hhcGVSZWN0KCdhJykubGVmdCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgi
aW1hZ2VTaGFwZVJlY3QoJ2InKS50b3AiLCAiNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNo
YXBlUmVjdCgnYicpLmxlZnQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFnZVNoYXBl
UmVjdCgnYycpLnRvcCIsICI3NSIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdj
JykubGVmdCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdkJyku
dG9wIiwgIjEyNSIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnZCcp
LmxlZnQiLCAyOTIsIDEsIHF1aWV0KTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0
KCdlJykudG9wIiwgIjE1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdlJyku
bGVmdCIsICIwIik7CisgICAgfTsKKzwvc2NyaXB0PgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFw
ZSB7CisgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6
IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcnIHdpZHRoPScyNTBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nNTAnIHk9
JzUwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtbWFyZ2luOiA1MHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWlt
YWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+
PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzMwMCcgaGVpZ2h0PScxNTAnIHJ4PSc1MCcgcnk9JzUw
JyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1y
ZXBlYXQ7CisgICAgICAgIHdpZHRoOiAzNTBweDsgCisgICAgICAgIGhlaWdodDogMjUwcHg7IAor
ICAgIH0KKworICAgICNjb250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMt
c2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisgIDxwPlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4g
Y29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuPC9w
PgorICA8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAg
IDxkaXYgaWQ9ImltYWdlLXNoYXBlIj48L2Rpdj4KKyAgICAgIDxzcGFuIGlkPSJhIj5YPC9zcGFu
Pjxicj48YnI+PHNwYW4gaWQ9ImIiPlg8L3NwYW4+PGJyPjxzcGFuIGlkPSJjIj5YPC9zcGFuPjxi
cj48YnI+PHNwYW4gaWQ9ImQiPlg8L3NwYW4+PGJyPjxzcGFuIGlkPSJlIj5YWFhYPC9zcGFuPgor
ICA8L2Rpdj4KKyAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjgyNjY1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRo
ZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xlLgorCitYCisKK1gKK1gKKworWAorWFhYWAorUEFTUyBp
bWFnZVNoYXBlUmVjdCgnYScpLnRvcCBpcyAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykudG9w
IGlzIDUwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdiJykucmlnaHQgaXMgMzAwCitQQVNTIGltYWdl
U2hhcGVSZWN0KCdjJykudG9wIGlzIDc1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykucmlnaHQg
aXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0KCdkJykudG9wIGlzIDEyNQorUEFTUyBpbWFnZVNo
YXBlUmVjdCgnZScpLnRvcCBpcyAxNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2UnKS5yaWdodCBp
cyAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44ZDdmOWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
Mi5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBpbWFnZVNoYXBlUmVjdChlbGVtZW50SWQpIAorICAg
IHsKKyAgICAgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2Utc2hhcGUi
KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgdmFyIHIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChlbGVtZW50SWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBy
ZXR1cm4ge3JpZ2h0OiBzLnJpZ2h0IC0gci5yaWdodCwgdG9wOiByLnRvcCAtIHMudG9wLCB3aWR0
aDogci53aWR0aCwgaGVpZ2h0OiByLmhlaWdodH07CisgICAgfQorCisgICAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIHF1aWV0ID0gdHJ1ZTsgLy8gUEFTUyBvdXRwdXQg
ZGVwZW5kcyBvbiBpZiBzdWJwaXhlbCBsYXlvdXQgaGFzIGJlZW4gZW5hYmxlZAorCisgICAgICBz
aG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2EnKS50b3AiLCAiMCIpOworICAgICAgc2hvdWxkQmVD
bG9zZVRvKCJpbWFnZVNoYXBlUmVjdCgnYScpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAg
ICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hv
dWxkQmUoImltYWdlU2hhcGVSZWN0KCdiJykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3Vs
ZEJlKCJpbWFnZVNoYXBlUmVjdCgnYycpLnRvcCIsICI3NSIpOworICAgICAgc2hvdWxkQmUoImlt
YWdlU2hhcGVSZWN0KCdjJykucmlnaHQiLCAiMzAwIik7CisKKyAgICAgIHNob3VsZEJlKCJpbWFn
ZVNoYXBlUmVjdCgnZCcpLnRvcCIsICIxMjUiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1h
Z2VTaGFwZVJlY3QoJ2QnKS5yaWdodCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRC
ZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS50b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1h
Z2VTaGFwZVJlY3QoJ2UnKS5yaWdodCIsICIwIik7CisgICAgfTsKKzwvc2NyaXB0PgorPHN0eWxl
PgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgLXdl
YmtpdC1zaGFwZS1vdXRzaWRlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjUwcHgnIGhlaWdodD0nMTAw
cHgnPjxyZWN0IHg9JzUwJyB5PSc1MCcgd2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1
ZScvPjwvc3ZnPiIpOworICAgICAgICAtd2Via2l0LXNoYXBlLW1hcmdpbjogNTBweDsKKyAgICAg
ICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnPjxyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPSczMDAnIGhlaWdodD0n
MTUwJyByeD0nNTAnIHJ5PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgICAgICB3aWR0aDogMzAwcHg7IAorICAgICAg
ICBoZWlnaHQ6IDI1MHB4OyAKKyAgICB9CisKKyAgICAjY29udGVudCB7CisgICAgICAgIGZvbnQ6
IDI1cHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAg
IHRleHQtYWxpZ246IHJpZ2h0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNo
b3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS48L3A+CisgIDxkaXYg
aWQ9ImNvbnRlbnQiPgorICAgICAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAg
PHNwYW4gaWQ9ImEiPlg8L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNw
YW4gaWQ9ImMiPlg8L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4g
aWQ9ImUiPlhYWFg8L3NwYW4+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
My1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMy1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzA1M2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNj
b250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAg
IGNvbG9yOiBncmVlbjsKKyAgICAgICAgbWFyZ2luOiAwcHg7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMDBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0n
MCcgeT0nMCcgd2lkdGg9JzIwMCcgaGVpZ2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOwor
ICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRo
ZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByZWN0YW5nbGUuPC9w
PgorICA8cHJlIGlkPSJjb250ZW50Ij4KKyAgICAgICAgWAorICAgICAgICBYCitYCisgIDwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
My5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmMwY2Y4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1p
bWFnZS1tYXJnaW4tMDAzLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZsb2F0
OiBsZWZ0OworICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9z
dmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRo
PScyMDBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzIwMCcgaGVp
Z2h0PSc1MCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiIpOworICAgICAgICAtd2Via2l0LXNoYXBlLW1h
cmdpbjogMHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAg
ICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3Zn
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwMHB4JyBoZWlnaHQ9
JzEwMHB4Jz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdi
bHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cisg
ICAgICAgIHdpZHRoOiA1MDBweDsgCisgICAgICAgIGhlaWdodDogMTAwcHg7IAorICAgIH0KKwor
ICAgICNjb250ZW50IHsKKyAgICAgICAgZm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7Cisg
ICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cisg
IDxwPlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBz
aG91bGQgd3JhcCBhcm91bmQgdGhlIGJsdWUgcmVjdGFuZ2xlLjwvcD4KKyAgPGRpdiBpZD0iY29u
dGVudCI+CisgICAgICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+CisgICAgICBYPGJyPlg8
YnI+WAorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01hdGhFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCA3MDFl
NzQwLi45YjIyM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysr
IGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0yOTYsNiArMjk2LDExIEBAIGlubGlu
ZSBpbnQgY2xhbXBUb0ludGVnZXIoZG91YmxlIHZhbHVlKQogICAgIHJldHVybiBjbGFtcFRvPGlu
dD4odmFsdWUpOwogfQogCitpbmxpbmUgaW50IGNsYW1wVG9VbnNpZ25lZChkb3VibGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuIGNsYW1wVG88dW5zaWduZWQ+KHZhbHVlKTsKK30KKwogaW5saW5lIGZs
b2F0IGNsYW1wVG9GbG9hdChkb3VibGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGNsYW1wVG88Zmxv
YXQ+KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZmY5YzczLi43ODY0YjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTMtMDktMjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5j
b20+CisKKyAgICAgICAgW0NTUyBTaGFwZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3Ig
aW1hZ2UgdmFsdWVkIHNoYXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUgc2hhcGUtbWFyZ2luIGJv
dW5kYXJ5IGZvciBhIHNoYXBlLW91dHNpZGUgd2hvc2UKKyAgICAgICAgdmFsdWUgaXMgYW4gaW1h
Z2UuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3No
YXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1h
Z2UtbWFyZ2luLTAwMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBlcy9zaGFwZS1vdXRz
aWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWwKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6Ok1hcmdpbkludGVydmFsR2VuZXJhdG9yKTog
SW50ZXJuYWwgdXRpbGl0eSB0aGF0IGdlbmVyYXRlcyB0aGUgbWFyZ2luIGludGVydmFscyBmb3Ig
dGhlIGltYWdlIGludGVydmFsIHNwZWNpZmllZCB3aXRoIHNldCgpLgorICAgICAgICAoV2ViQ29y
ZTo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNYXJn
aW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5k
SW5zZXJ0aW9uUG9pbnQpOiBGaW5kIHRoZSBpbnNlcnRpb24gcG9pbnQgaW5kZXggZm9yIHRoZSB0
aGUgc3BlY2lmaWVkIFggdmFsdWUsIHdpdGhpbiBhIHZlY3RvciBvZiBpbnRlcnZhbHMgc29ydGVk
IGJ5IFgxLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFy
Z2luSW50ZXJ2YWwpOiBEZXN0cnVjdGl2ZWx5IHVuaXRlIG9uZSBpbnRlcnZhbCB3aXRoIGFuIGV4
aXN0aW5nIG9uZSwgb3IgYXBwZW5kIGl0LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJ
bnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBsYXppbHkgY29tcHV0
ZWQgdmFsdWUsIG9yIGNyZWF0ZSBpdCB3aXRoIGNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscygp
LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbkludGVydmFsKToKKyAgICAgICAgKiBXVEYvd3Rm
L01hdGhFeHRyYXMuaDogQWRkZWQgY2xhbXBUb1Vuc2lnbmVkKCkgaW5saW5lLgorCiAyMDEzLTEw
LTAxICBTemFib2xjcyBEw6F2aWQgIDxkYXZpZHN6QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAg
ICBSZW5hbWUgVVJMIHR5cGUgdmFyaWFibGVzIGluIEN1cmwgbmV0d29yayBiYWNrZW5kLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA4
N2NkOThhLi40ZWNlY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcApAQCAtMzQsNiArMzQsNDUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciB7CitwdWJsaWM6CisgICAgTWFyZ2lu
SW50ZXJ2YWxHZW5lcmF0b3IodW5zaWduZWQgcmFkaXVzKTsKKyAgICB2b2lkIHNldChpbnQgeSwg
aW50IHgxLCBpbnQgeDIpOworICAgIEludFNoYXBlSW50ZXJ2YWwgaW50ZXJ2YWxBdChpbnQgeSkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPGludD4gbV94SW50ZXJjZXB0czsKKyAgICBp
bnQgbV95OworICAgIGludCBtX3gxOworICAgIGludCBtX3gyOworfTsKKworTWFyZ2luSW50ZXJ2
YWxHZW5lcmF0b3I6Ok1hcmdpbkludGVydmFsR2VuZXJhdG9yKHVuc2lnbmVkIHJhZGl1cykKKyAg
ICA6IG1feSgwKQorICAgICwgbV94MSgwKQorICAgICwgbV94MigwKQoreworICAgIG1feEludGVy
Y2VwdHMucmVzaXplKHJhZGl1cyArIDEpOworICAgIHVuc2lnbmVkIHJhZGl1c1NxdWFyZWQgPSBy
YWRpdXMgKiByYWRpdXM7CisgICAgZm9yICh1bnNpZ25lZCB5ID0gMDsgeSA8PSByYWRpdXM7IHkr
KykKKyAgICAgICAgbV94SW50ZXJjZXB0c1t5XSA9IHNxcnQoc3RhdGljX2Nhc3Q8ZG91YmxlPihy
YWRpdXNTcXVhcmVkIC0geSAqIHkpKTsKK30KKwordm9pZCBNYXJnaW5JbnRlcnZhbEdlbmVyYXRv
cjo6c2V0KGludCB5LCBpbnQgeDEsIGludCB4MikKK3sKKyAgICBBU1NFUlQoeSA+PSAwICYmIHgx
ID49IDAgJiYgeDIgPiB4MSk7CisgICAgbV95ID0geTsKKyAgICBtX3gxID0geDE7CisgICAgbV94
MiA9IHgyOworfQorCitJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjpp
bnRlcnZhbEF0KGludCB5KSBjb25zdAoreworICAgIHVuc2lnbmVkIHhJbnRlcmNlcHRzSW5kZXgg
PSBhYnMoeSAtIG1feSk7CisgICAgaW50IGR4ID0gKHhJbnRlcmNlcHRzSW5kZXggPj0gbV94SW50
ZXJjZXB0cy5zaXplKCkpID8gMCA6IG1feEludGVyY2VwdHNbeEludGVyY2VwdHNJbmRleF07Cisg
ICAgcmV0dXJuIEludFNoYXBlSW50ZXJ2YWwoc3RkOjptYXgoMCwgbV94MSAtIGR4KSwgbV94MiAr
IGR4KTsKK30KKwogdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5kSW50ZXJ2YWwoaW50
IHksIGludCB4MSwgaW50IHgyKQogewogICAgIEFTU0VSVCh5ID49IDAgJiYgeSA8IHNpemUoKSAm
JiB4MSA+PSAwICYmIHgyID4geDEgJiYgKG1faW50ZXJ2YWxMaXN0c1t5XS5pc0VtcHR5KCkgfHwg
eDEgPiBtX2ludGVydmFsTGlzdHNbeV0ubGFzdCgpLngyKCkpKTsKQEAgLTQyLDYgKzgxLDIwIEBA
IHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFwcGVuZEludGVydmFsKGludCB5LCBpbnQgeDEs
IGludCB4MikKICAgICBtX2ludGVydmFsTGlzdHNbeV0uYXBwZW5kKEludFNoYXBlSW50ZXJ2YWwo
eDEsIHgyKSk7CiB9CiAKK3ZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFyZ2luSW50
ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQoreworICAgIEFT
U0VSVChtX2ludGVydmFsTGlzdHNbeV0uc2l6ZSgpIDw9IDEpOyAvLyBFYWNoIG1faW50ZXJ2YWxM
aXN0cyBlbnRyeSBoYXMgMCBvciBvbmUgaW50ZXJ2YWwuCisKKyAgICBpZiAobV9pbnRlcnZhbExp
c3RzW3ldLmlzRW1wdHkoKSkKKyAgICAgICAgbV9pbnRlcnZhbExpc3RzW3ldLmFwcGVuZChpbnRl
cnZhbCk7CisgICAgZWxzZSB7CisgICAgICAgIEludFNoYXBlSW50ZXJ2YWwmIHJlc3VsdEludGVy
dmFsID0gbV9pbnRlcnZhbExpc3RzW3ldWzBdOworICAgICAgICByZXN1bHRJbnRlcnZhbC5zZXQo
c3RkOjptaW4ocmVzdWx0SW50ZXJ2YWwueDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWF4KHJl
c3VsdEludGVydmFsLngyKCksIGludGVydmFsLngyKCkpKTsKKyAgICB9CisKKyAgICBtX2JvdW5k
cy51bml0ZShJbnRSZWN0KGludGVydmFsLngxKCksIHksIGludGVydmFsLndpZHRoKCksIDEpKTsK
K30KKwogc3RhdGljIGlubGluZSBib29sIHNoYXBlSW50ZXJ2YWxzQ29udGFpbihjb25zdCBJbnRT
aGFwZUludGVydmFscyYgaW50ZXJ2YWxzLCBjb25zdCBJbnRTaGFwZUludGVydmFsJiBpbnRlcnZh
bCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW50ZXJ2YWxzLnNpemUoKTsgaSsr
KSB7CkBAIC0xNjUsMTQgKzIxOCwzNyBAQCB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRF
eGNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbAogICAgIH0K
IH0KIAorLy8gQ3VycmVudGx5IGxpbWl0ZWQgdG8gY29tcHV0aW5nIHRoZSBtYXJnaW4gYm91bmRh
cnkgZm9yIHNoYXBlLW91dHNpZGUgZm9yIGZsb2F0cywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCitQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGlu
dCBtYXJnaW4pIGNvbnN0Cit7CisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiByZXN1
bHQgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMoc2l6ZSgpICsgbWFyZ2luKSk7
CisgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgaW50ZXJ2YWxHZW5lcmF0b3IobWFyZ2luKTsK
KworICAgIGZvciAoaW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3VuZHMoKS5tYXhZKCk7ICsr
eSkgeworICAgICAgICBjb25zdCBJbnRTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzQXRZID0gZ2V0
SW50ZXJ2YWxzKHkpOworICAgICAgICBpZiAoaW50ZXJ2YWxzQXRZLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgbWFyZ2luWTAgPSBzdGQ6Om1heCgwLCB5IC0g
bWFyZ2luKTsKKyAgICAgICAgaW50IG1hcmdpblkxID0gc3RkOjptaW4ocmVzdWx0LT5zaXplKCkg
LSAxLCB5ICsgbWFyZ2luKTsKKyAgICAgICAgaW50ZXJ2YWxHZW5lcmF0b3Iuc2V0KHksIGludGVy
dmFsc0F0WVswXS54MSgpLCBpbnRlcnZhbHNBdFkubGFzdCgpLngyKCkpOworICAgICAgICBmb3Ig
KGludCBtYXJnaW5ZID0gbWFyZ2luWTA7IG1hcmdpblkgPD0gbWFyZ2luWTE7ICsrbWFyZ2luWSkK
KyAgICAgICAgICAgIHJlc3VsdC0+dW5pdGVNYXJnaW5JbnRlcnZhbChtYXJnaW5ZLCBpbnRlcnZh
bEdlbmVyYXRvci5pbnRlcnZhbEF0KG1hcmdpblkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKK30KKwogY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNo
YXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAogewogICAgIEFTU0VSVChzaGFwZU1hcmdpbigp
ID49IDApOwogICAgIGlmICghc2hhcGVNYXJnaW4oKSkKICAgICAgICAgcmV0dXJuICptX2ludGVy
dmFsczsKIAotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gbWFyZ2luLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OC4KLSAgICBy
ZXR1cm4gKm1faW50ZXJ2YWxzOworICAgIGludCBtYXJnaW5Cb3VuZGFyeVJhZGl1cyA9IHN0ZDo6
bWluKGNsYW1wVG9VbnNpZ25lZChjZWlsKHNoYXBlTWFyZ2luKCkpKSwgc3RkOjptYXgobV9pbWFn
ZVNpemUud2lkdGgoKSwgbV9pbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBpZiAoIW1fbWFyZ2lu
SW50ZXJ2YWxzKQorICAgICAgICBtX21hcmdpbkludGVydmFscyA9IG1faW50ZXJ2YWxzLT5jb21w
dXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMobWFyZ2luQm91bmRhcnlSYWRpdXMpOworCisgICAgcmV0
dXJuICptX21hcmdpbkludGVydmFsczsKIH0KIAogY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMm
IFJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAppbmRleCBmMTc5YTcwLi42MDA4OWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCkBAIC01
MiwyNyArNTIsMzEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50
IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0OwogICAgIHZvaWQg
Z2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiBy
ZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsWShpbnQgbWluWSwg
Y29uc3QgSW50U2l6ZSYgbWluU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdDsKKyAgICBQ
YXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZh
bHMoaW50IG1hcmdpbikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgaW50IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2ludGVydmFsTGlzdHMuc2l6ZSgpOyB9CisKICAgICBjb25zdCBJbnRTaGFwZUlu
dGVydmFscyYgZ2V0SW50ZXJ2YWxzKGludCB5KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KHkgPj0gMCAmJiB5IDwgc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5
XTsKICAgICB9CisKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAg
ICBib29sIGdldEludGVydmFsWDFWYWx1ZXMoaW50IG1pblksIGludCBtYXhZLCBpbnQgbWluSW50
ZXJ2YWxXaWR0aCwgVmVjdG9yPGludD4mIHJlc3VsdCkgY29uc3Q7Ci0KKyAgICB2b2lkIHVuaXRl
TWFyZ2luSW50ZXJ2YWwoaW50IHksIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmKTsKICAgICBJbnRS
ZWN0IG1fYm91bmRzOwotICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFscyA+IG1faW50ZXJ2YWxM
aXN0czsKKyAgICBWZWN0b3I8SW50U2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxMaXN0czsKIH07
CiAKIGNsYXNzIFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSYXN0ZXJTaGFwZSk7CiBwdWJsaWM6Ci0gICAgUmFzdGVyU2hhcGUoUGFzc093blB0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzKQorICAgIFJhc3RlclNoYXBlKFBhc3NP
d25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscywgY29uc3QgSW50U2l6ZSYgaW1h
Z2VTaXplKQogICAgICAgICA6IFNoYXBlKCkKICAgICAgICAgLCBtX2ludGVydmFscyhpbnRlcnZh
bHMpCisgICAgICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgIHsKICAgICB9CiAKQEAg
LTg4LDYgKzkyLDggQEAgcHJpdmF0ZToKICAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYg
cGFkZGluZ0ludGVydmFscygpIGNvbnN0OwogCiAgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBtX2ludGVydmFsczsKKyAgICBtdXRhYmxlIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFs
cz4gbV9tYXJnaW5JbnRlcnZhbHM7CisgICAgSW50U2l6ZSBtX2ltYWdlU2l6ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKaW5kZXggZWRhM2FjOC4uMTk3MDQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCBQYXNzT3duUHRyPFNoYXBlPiBT
aGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgZmxvYXQgdGhy
ZXNobwogICAgICAgICB9CiAgICAgfQogCi0gICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJT
aGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZShpbnRlcnZhbHMucmVsZWFzZSgpKSk7Cisg
ICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJTaGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJT
aGFwZShpbnRlcnZhbHMucmVsZWFzZSgpLCBpbWFnZVNpemUpKTsKICAgICByYXN0ZXJTaGFwZS0+
bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9
IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKICAgICByYXN0ZXJTaGFwZS0+bV9wYWRk
aW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213267</attachid>
            <date>2013-10-03 09:24:16 -0700</date>
            <delta_ts>2013-10-03 09:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>6469496</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiZGQwZGYyLi42MjczYzcy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDE4ICsxLDMgQEAK
LTIwMTMtMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZW1vdmUgUXQgcmVsYXRlZCBmaWxlcyBmcm9tIHRoZSByb290IGRpcmVjdG9yaWVzCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyNDkKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogU291cmNlL1F0
V2ViS2l0LnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBTb3VyY2UvYXBpLnByaTogUmVtb3ZlZC4K
LSAgICAgICAgKiBTb3VyY2UvcXR3ZWJraXQucWRvY2NvbmY6IFJlbW92ZWQuCi0gICAgICAgICog
U291cmNlL3N5bmMucHJvZmlsZTogUmVtb3ZlZC4KLSAgICAgICAgKiBTb3VyY2UvdGVzdHMucHJp
OiBSZW1vdmVkLgotICAgICAgICAqIFNvdXJjZS93aWRnZXRzYXBpLnByaTogUmVtb3ZlZC4KLSAg
ICAgICAgKiBXZWJLaXQucHJvOiBSZW1vdmVkLgotCiAyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERPTUZpbGVTeXN0
ZW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3NTkzZWUzLi5iODc3Y2ZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUyNiArMSwxOCBAQAotMjAx
My0xMC0wMiAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKzIwMTMtMDktMjMgIEhh
bnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKLSAgICAgICAgW0NTUyBTaGFwZXNdIElt
cGxlbWVudCB0aGUgc2hhcGUtaW1hZ2UtdGhyZXNob2xkIHByb3BlcnR5Ci0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMTYKKyAgICAgICAgW0NTUyBT
aGFwZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CiAK
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICBDaGVjayBwYXJz
aW5nIG9mIHRoZSBub24taW5oZXJpdGVkIENTUyBzaGFwZS1pbWFnZS10aHJlc2hvbGQgbnVtYmVy
IHByb3BlcnR5LgotICAgICAgICBUaGUgcHJvcGVydHkgaXMgZGVmaW5lZCBoZXJlOgotICAgICAg
ICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3Mtc2hhcGVzLTEvI3NoYXBlLWltYWdlLXRocmVz
aG9sZC1wcm9wZXJ0eQotCi0gICAgICAgICogZmFzdC9zaGFwZXMvcGFyc2luZy9wYXJzaW5nLXNo
YXBlLWltYWdlLXRocmVzaG9sZC1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIGZhc3Qv
c2hhcGVzL3BhcnNpbmcvcGFyc2luZy1zaGFwZS1pbWFnZS10aHJlc2hvbGQuaHRtbDogQWRkZWQu
Ci0gICAgICAgICogZmFzdC9zaGFwZXMvcGFyc2luZy9zY3JpcHQtdGVzdHMvcGFyc2luZy1zaGFw
ZS1pbWFnZS10aHJlc2hvbGQuanM6IEFkZGVkLgotCi0yMDEzLTEwLTAyICBNYW51ZWwgUmVnbyBD
YXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgotCi0gICAgICAgIFtDU1MgUmVnaW9uc10gSGVs
cGVyIGZ1bmN0aW9ucyBmb3Igc2VsZWN0aW9uIGxheW91dCB0ZXN0cwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTI4Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleGFuZHJ1IENoaWN1bGl0YS4KLQotICAgICAgICBDcmVhdGUgbmV3IGNvbW1vbiBK
YXZhU2NyaXB0IG1ldGhvZHMgZm9yIENTUyBSZWdpb25zIGxheW91dCB0ZXN0cwotICAgICAgICBy
ZWxhdGVkIHRvIHNlbGVjdGlvbi4gUmVmYWN0b3JlZCB0ZXN0cyBpbiBvcmRlciB0byB1c2UgdGhl
bS4KLQotICAgICAgICAqIGZhc3QvcmVnaW9ucy9yZXNvdXJjZXMvaGVscGVyLmpzOiBBZGRlZCBu
ZXcgZnVuY3Rpb25zLgotICAgICAgICAoc2VsZWN0Q29udGVudEJ5UmFuZ2UpOiBTZWxlY3QgZnJv
bSBzdGFydCB0byBlbmQgcG9zaXRpb24uCi0gICAgICAgIChzZWxlY3RDb250ZW50QnlJZHMpOiBT
ZWxlY3QgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBlbGVtZW50IHRvIHRoZSBlbmQK
LSAgICAgICAgb2YgdGhlIHNlY29uZCBvbmUuCi0gICAgICAgIChzZWxlY3RCYXNlQW5kRXh0ZW50
KTogU2VsZWN0IGZyb20gc3RhcnQgdG8gZW5kIHdpdGggZ2l2ZW4gb2Zmc2V0cyB1c2luZwotICAg
ICAgICBTZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudCgpIG1ldGhvZC4KLSAgICAgICAgKG1vdXNl
Q2xpY2spOiBDbGlja3MgaW4gYSBnaXZlbiBwb3NpdGlvbi4KLSAgICAgICAgKiBmYXN0L3JlZ2lv
bnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LWluLWVtcHR5LXJlZ2lvbi5odG1sOiBSZWZhY3Rv
cmVkCi0gICAgICAgIHRlc3QgaW4gb3JkZXIgdG8gdXNlIHRoZSBuZXcgZnVuY3Rpb25zLgotICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZm
ZXJlbnQtcmVnaW9uLWZsb3dzLTItZXhwZWN0ZWQuaHRtbDoKLSAgICAgICAgRGl0dG8uCi0gICAg
ICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZl
cmVudC1yZWdpb24tZmxvd3MtMi5odG1sOgotICAgICAgICBEaXR0by4KLSAgICAgICAgKiBmYXN0
L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lv
bi1mbG93cy5odG1sOgotICAgICAgICBEaXR0by4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvc2Vs
ZWN0aW9uL3NlbGVjdGlvbi1kaXJlY3Rpb24tZXhwZWN0ZWQuaHRtbDogRGl0dG8uCi0gICAgICAg
ICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWw6IERpdHRv
LgotCi0yMDEzLTEwLTAyICBCZW0gSm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgotCi0g
ICAgICAgIFtjc3Mtc2hhcGVzXSBzaGFwZS1vdXRzaWRlIGRvZXMgbm90IHByb3Blcmx5IGhhbmRs
ZSB0aGUgY29udGFpbmVyIGFuZCB0aGUgZmxvYXQgaGF2aW5nIGRpZmZlcmVudCB3cml0aW5nIG1v
ZGVzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIy
NDMKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4YW5kcnUgQ2hpY3VsaXRhLgotCi0gICAgICAg
IFRlc3QgdGhhdCB0aGUgbWFyZ2lucyBhbmQgd2lkdGggYXJlIHByb3Blcmx5IGNvbXB1dGVkIGlu
IHRoZSBjYXNlIG9mCi0gICAgICAgIGRpZmZlcmVudCB3cml0aW5nIG1vZGVzLgotCi0gICAgICAg
ICogZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMt
ZGlmZmVyZW50LXdyaXRpbmctbW9kZXMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCi0gICAgICAgICog
ZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtZGlm
ZmVyZW50LXdyaXRpbmctbW9kZXMuaHRtbDogQWRkZWQuCi0KLTIwMTMtMTAtMDIgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCByZWJh
c2VsaW5lLCB0cnkgdG8gYWRkIG5ld2xpbmVzIGJhY2sgdGhhdCBrZWVwIGRpc2FwcGVhcmluZyBv
biBtZS4KLQotICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvY29udGVudHMt
b3BhcXVlL2JvZHktYmFja2dyb3VuZC1wYWludGVkLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBw
bGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9ib2R5LWJhY2tncm91
bmQtc2tpcHBlZC1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9jb21w
b3NpdGluZy9yZXBhaW50L2ZpeGVkLWJhY2tncm91bmQtc2Nyb2xsLWV4cGVjdGVkLnR4dDoKLSAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3J0bC9ydGwtYWJzb2x1dGUtZXhw
ZWN0ZWQudHh0OgotICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvcnRsL3J0
bC1hYnNvbHV0ZS1vdmVyZmxvdy1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLWV4cGVj
dGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3RpbGluZy9y
b3RhdGVkLXRpbGVkLWNsYW1wZWQtZXhwZWN0ZWQudHh0OgotICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvY29tcG9zaXRpbmcvdGlsaW5nL3JvdGF0ZWQtdGlsZWQtcHJlc2VydmUzZC1jbGFtcGVk
LWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3Rp
bGluZy90aWxlLWNhY2hlLXpvb21lZC1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcvdGlsZWQtbGF5ZXItcmVzaXplLWV4cGVjdGVkLnR4
dDoKLQotMjAxMy0xMC0wMiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNv
bT4KLQotICAgICAgICBbQ1NTIFJlZ2lvbnNdIFNlbGVjdGlvbiBsYXlvdXQgdGVzdHMgbW92ZWQg
dG8gc3BlY2lmaWMgZm9sZGVyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjIwOTkKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4YW5kcnUgQ2hpY3Vs
aXRhLgotCi0gICAgICAgIE1vdmVkIENTUyBSZWdpb25zIGxheW91dCB0ZXN0cyByZWxhdGVkIHRv
IHNlbGVjdGlvbiB0bwotICAgICAgICAiZmFzdC9yZWdpb25zL3NlbGVjdGlvbi8iLgotCi0gICAg
ICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC1pbi1lbXB0eS1yZWdp
b24tZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Nl
bGVjdGluZy10ZXh0LWluLWVtcHR5LXJlZ2lvbi1leHBlY3RlZC50eHQuCi0gICAgICAgICogZmFz
dC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC1pbi1lbXB0eS1yZWdpb24uaHRtbDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC1pbi1l
bXB0eS1yZWdpb24uaHRtbC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVj
dGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy0yLWV4cGVjdGVkLmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhy
b3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLTItZXhwZWN0ZWQuaHRtbC4KLSAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJl
Z2lvbi1mbG93cy0yLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
c2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLTIuaHRtbC4KLSAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlm
ZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1m
bG93cy1leHBlY3RlZC5odG1sLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2Vs
ZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLmh0bWw6IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZm
ZXJlbnQtcmVnaW9uLWZsb3dzLmh0bWwuCi0gICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi9zZWxlY3Rpb24tZGlyZWN0aW9uLWV4cGVjdGVkLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWRpcmVjdGlvbi1leHBlY3RlZC5odG1sLgotICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2VsZWN0aW9uLWRpcmVjdGlvbi5odG1sOiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1kaXJlY3Rpb24u
aHRtbC4KLSAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFVwZGF0
ZSBwYXRoIGluIHNraXBwZWQgdGVzdHMuCi0gICAgICAgICogcGxhdGZvcm0vcXQtd2syL1Rlc3RF
eHBlY3RhdGlvbnM6IERpdHRvLgotCi0yMDEzLTEwLTAyICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAot
ICAgICAgICBbbWFjXSBTdG9wIHVzaW5nIERyYXdpbmdBcmVhSW1wbCBvbiBQTEFURk9STShNQUMp
IAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODU5
Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTA2OTM1OT4KLQotICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6Ci0KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL2NvbnRl
bnRzLW9wYXF1ZS9ib2R5LWJhY2tncm91bmQtcGFpbnRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgot
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL2Jv
ZHktYmFja2dyb3VuZC1za2lwcGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFi
c29sdXRlLW92ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93LXNjcm9sbGVkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgIEFkZCBXZWJLaXQyIHJlc3VsdHMsIGJlY2F1c2Ug
d2UgZHVtcCBub24td2hpdGUgYmFja2dyb3VuZCBjb2xvciBvbiB0aGUgcm9vdCBsYXllciBub3cu
Ci0KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvZml4ZWQt
YmFja2dyb3VuZC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgTmV3IFdlYktp
dDIgcmVzdWx0OyByZXBhaW50IHJlY3RzIGFyZSBzaG93aW5nIHVwIG5vdy4KLSAgICAgICAgCi0g
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLWV4cGVj
dGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3J0bC9ydGwt
Zml4ZWQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0OgotICAgICAgICBTbGlnaHRseSBhZGp1c3RlZCBy
ZXN1bHRzLgotCi0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcv
cm90YXRlZC10aWxlZC1jbGFtcGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcvcm90YXRlZC10aWxlZC1wcmVzZXJ2ZTNk
LWNsYW1wZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L2NvbXBvc2l0aW5nL3RpbGluZy90aWxlLWNhY2hlLXpvb21lZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgotICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvdGlsaW5nL3RpbGVkLWxh
eWVyLXJlc2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICBOZXcgV2ViS2l0MiByZXN1
bHRzOyB3ZSBzaG93IHRoZSByb290IHRpbGUgY2FjaGUgaWYgbGF5ZXJUcmVlQXNUZXh0IGlzIGFz
a2VkIHRvIGR1bXAgdGlsZSBjYWNoZXMuCi0gICAgICAgIAotICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvZWRpdGluZy9pbnB1dC9jYXJldC1hdC10aGUtZWRnZS1vZi1jb250ZW50ZWRpdGFibGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2VkaXRpbmcv
aW5wdXQvcmV2ZWFsLWNhcmV0LW9mLW11bHRpbGluZS1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvYmxvY2svYmFzaWMv
MDIwLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9mYXN0
L2R5bmFtaWMvMDEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMi9mYXN0L2R5bmFtaWMvbGF5ZXItaGl0LXRlc3QtY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvcmVwYWludC9sYXllci1oaWRlLXdo
ZW4tbmVlZHMtbGF5b3V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9mYXN0L3RleHQvd2hpdGVzcGFjZS8wMjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvbGF5ZXJz
L2xheWVyLXZpc2liaWxpdHktc3VibGF5ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL2Zhc3QvcmVwYWludC9pbnZpc2libGUtb2JqZWN0cy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgotICAgICAgICBOZXcgV2ViS2l0MiByZXN1bHRzOyBhZGRpdGlvbmFsIGNv
bXBvc2l0aW5nIGxheWVycy4KLSAgICAgICAgCi0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90
aWxlZC1kcmF3aW5nL3dpbmRvdy1zZXJ2ZXItc25hcHNob3RzLXdvcmstZXhwZWN0ZWQtbWlzbWF0
Y2guaHRtbDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3dpbmRvdy1zZXJ2ZXItc25hcHNob3RzLXdvcmsuaHRtbDogQWRkZWQuCi0gICAgICAgIE5ldyB0
ZXN0IHRvIGVuc3VyZSB0aGF0IHdpbmRvdy1zZXJ2ZXIgc25hcHNob3RzIHdvcmsgd2l0aCB0aWxl
ZCBkcmF3aW5nLgotCi0yMDEzLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
Ci0KLSAgICAgICAgSW1wbGVtZW50IEFycmF5IGtleSwgdmFsdWUgYW5kIGVudHJpZXMgaXRlcmF0
b3JzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIx
OTUKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAgICAgICBBZGQgdGVz
dHMKLQotICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4
dDoKLSAgICAgICAgKiBqcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAg
ICAgICAgKiBqcy9hcnJheS1pdGVyYXRvcnMuaHRtbDogQWRkZWQuCi0gICAgICAgICoganMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgotICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9hcnJheS1pdGVyYXRvcnMuanM6IEFkZGVkLgotCi0yMDEzLTA5LTI1ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+Ci0KLSAgICAgICAgSW1wbGVtZW50IHByZWZpeGVk
LWRlc3RydWN0dXJpbmcgYXNzaWdubWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTMwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBIYWhu
ZW5iZXJnLgotCi0gICAgICAgIFJlbGFuZGluZyB3aXRoIGZpeCBhZnRlciByb2xsb3V0IC0gaXQg
aGVscHMgdG8gbm90IGNvbXBsZXRlbHkgZGVzdHJveQotICAgICAgICBvcHRpbWlzYXRpb25zIGZv
ciBubyByZWFzb24uCi0KLTIwMTMtMTAtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+Ci0KLSAgICAgICAgdmlkZW8tb2JqZWN0LWZpdCB0ZXN0cyBhcmUgZmxha3kKLSAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTgwMwotCi0gICAg
ICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6IE1hcmtpbmcgYXMgc3VjaC4KLQot
MjAxMy0xMC0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KLQotICAgICAg
ICBRdWlya3Ntb2RlOiBDU1MxOiBXZWJLaXQgZmFpbHMgZHluYW1pYyA6Zmlyc3QtbGV0dGVyIHRl
c3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAy
Ci0KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczogQ29ycmVjdGluZyBN
YWMgZXhwZWN0YXRpb25zIHRvbywgbm93IHRoYXQgd2UgaGF2ZSByZXN1bHRzLgotCi0yMDEzLTEw
LTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIFF1aXJr
c21vZGU6IENTUzE6IFdlYktpdCBmYWlscyBkeW5hbWljIDpmaXJzdC1sZXR0ZXIgdGVzdAotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDIKLQotICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItYmxvY2stY2hhbmdlLWV4
cGVjdGVkLnBuZzogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2ZpcnN0
LWxldHRlci1ibG9jay1jaGFuZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgQWRkZWQg
ZXhwZWN0ZWQgcmVzdWx0cyBmb3IgTWFjLgotCi0gICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnM6IENvcnJlY3RlZCB0aGUgZXhwZWN0YXRpb24uIFRoaXMgdGVzdCBpcyBub3QK
LSAgICAgICAgZmFpbGluZywgaXQgaGFzIG5vIHJlc3VsdHMuCi0KLTIwMTMtMTAtMDIgIE1paGFp
IE1hZXJlYW4gIDxtbWFlcmVhbkBhZG9iZS5jb20+Ci0KLSAgICAgICAgW0NTUyBSZWdpb25zXSBB
Y3RpdmF0ZSBhbGwgcmVnaW9ucyB0byBoYXZlIGxheWVycywgYXMgQ1NTIFJlZ2lvbnMgY3JlYXRl
IGEgbmV3IHN0YWNraW5nIGNvbnRleHQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTgyOAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgotCi0gICAgICAgIEZvciB0aGUgcmVmIHRlc3RzLCB0aGUgZGl2cyBpbiB0aGUgZXhwZWN0ZWQg
cmVzdWx0cyBjb3Jlc3BvbmRpbmcgdG8gdGhlIHJlZ2lvbnMgbm93IGhhdmUgYSBDU1Mgc3R5bGUg
Y2F1c2luZwotICAgICAgICB0aGVtIHRvIGFsc28gY3JlYXRlIFN0YWNraW5nIENvbnRleHRzLgot
Ci0gICAgICAgIE1vc3Qgb2YgdGhlIHRlc3RzIGluIGZhc3QvcmVnaW9ucy9sYXllcnMvIGhhdmUg
YmVlbiBkZWxldGVkIGJlY2F1c2UgdGhleSBhcmVuJ3QgcmVsZXZhbnQgYW55bW9yZS4KLQotICAg
ICAgICBUaGUgY2hhbmdlIGluIG1vc3Qgb2YgdGhlICotZXhwZWN0ZWQudHh0IGZpbGVzIGlzIHRo
YXQgdGhlICIgaGFzTGF5ZXIiIHBhcnQgaGFzIGJlZW4gcmVtb3ZlZCAoc2luY2UgYWxsIHJlZ2lv
bnMKLSAgICAgICAgbm93IGhhdmUgbGF5ZXJzKS4KLSAgICAgICAgCi0gICAgICAgIFBsYXRmb3Jt
IChlZmwsIGVmbC13azIsIGd0aywgbWFjLWxpb24sIG1hYy13azIsIHF0LCBxdC13azIpIHNwZWNp
ZmljIGV4cGVjdGF0ZWQgcmVzdWx0cyBuZWVkIHRvIGJlIGdlbmVyYXRlZCBhZ2Fpbi4KLQotICAg
ICAgICAqIGZhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3RlZC50eHQ6
Ci0gICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5odG1s
OiBBZGRlZC4gVGhlIHRlc3QgaXMgbm93IGEgcmVmIHRlc3QuCi0gICAgICAgICogZmFzdC9yZWdp
b25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC5odG1sOiBBZGRlZC4gVGhl
IHRlc3QgaXMgbm93IGEgcmVmIHRlc3QuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3ctY29u
dGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBlY3RlZC5odG1sOiBBZGRlZC5UaGUgdGVzdCBpcyBu
b3cgYSByZWYgdGVzdC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
LXZlcnRpY2FsLXJsLmh0bWw6Ci0gICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1i
YXNpYy12ZXJ0aWNhbC5odG1sOgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQt
YmFzaWMuaHRtbDoKLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5h
bWljLXJlbW92ZS1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dzLWRl
cGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMv
bGF5ZXJzL2R5bmFtaWMtbGF5ZXItYWRkZWQtd2l0aC1uby1sYXlvdXQtZXhwZWN0ZWQucG5nOiBS
ZW1vdmVkLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9sYXllcnMvZHluYW1pYy1sYXllci1hZGRl
ZC13aXRoLW5vLWxheW91dC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogZmFzdC9y
ZWdpb25zL2xheWVycy9keW5hbWljLWxheWVyLWFkZGVkLXdpdGgtbm8tbGF5b3V0Lmh0bWw6IFJl
bW92ZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2xheWVycy9keW5hbWljLWxheWVyLXJlbW92
ZWQtd2l0aC1uby1sYXlvdXQtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIGZhc3Qv
cmVnaW9ucy9sYXllcnMvZHluYW1pYy1sYXllci1yZW1vdmVkLXdpdGgtbm8tbGF5b3V0LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvbGF5ZXJzL2R5bmFtaWMt
bGF5ZXItcmVtb3ZlZC13aXRoLW5vLWxheW91dC5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIGZh
c3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtZXhwZWN0ZWQucG5n
OiBSZW1vdmVkLgotICAgICAgICAqIGZhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3Rl
ZC10by1sYXllcnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIGZhc3QvcmVnaW9u
cy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtaG9yaXpvbnRhbC1idC1leHBlY3Rl
ZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXBy
b21vdGVkLXRvLWxheWVycy1ob3Jpem9udGFsLWJ0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBmYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLWhv
cml6b250YWwtYnQuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvbGF5ZXJz
L3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLXZlcnRpY2FsLWxyLWV4cGVjdGVkLnBuZzogUmVt
b3ZlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8t
bGF5ZXJzLXZlcnRpY2FsLWxyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBmYXN0
L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLXZlcnRpY2FsLWxyLmh0
bWw6IFJlbW92ZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21v
dGVkLXRvLWxheWVycy12ZXJ0aWNhbC1ybC1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAg
ICogZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0aWNh
bC1ybC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogZmFzdC9yZWdpb25zL2xheWVy
cy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0aWNhbC1ybC5odG1sOiBSZW1vdmVkLgot
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMu
aHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBmYXN0L3JlZ2lvbnMvbGF5ZXJzL3N0YWNraW5nLWNv
bnRleHQtcGFpbnQtb3JkZXItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCi0gICAgICAgICogZmFzdC9y
ZWdpb25zL2xheWVycy9zdGFja2luZy1jb250ZXh0LXBhaW50LW9yZGVyLmh0bWw6IEFkZGVkLiBX
aGlsZSB0aGUgZXhpc3RpbmcgcmVnaW9uLXNpYmxpbmctcGFpbnQtb3JkZXIuaHRtbAotICAgICAg
ICB0ZXN0IHZlcmlmaWVzIHRoYXQgcmVnaW9ucyBwYWludCBjb3JyZWN0bHkgd2hlbiB0aGUgbmV4
dCBzaWJsaW5nIGFsc28gY3JlYXRlcyBhIHN0YWNraW5nIGNvbnRleHQsIHRoaXMgbmV3IHRlc3QK
LSAgICAgICAgdmVyaWZpZXMgdGhhdCByZWdpb25zIHBhaW50IGNvcnJlY3RseSB3aGVuIHRoZSBu
ZXh0IHNpYmxpbmcgZG9lc24ndCBjcmVhdGUgYSBzdGFja2luZyBjb250ZXh0LgotICAgICAgICAq
IGZhc3QvcmVnaW9ucy9yZWdpb24tc2libGluZy1wYWludC1vcmRlci1leHBlY3RlZC5odG1sOgot
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9yZWdpb24tc2libGluZy1wYWludC1vcmRlci5odG1sOgot
ICAgICAgICAqIGZhc3QvcmVwYWludC9vdmVyZmxvdy1mbGlwcGVkLXdyaXRpbmctbW9kZS1ibG9j
ay1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBmYXN0L3JlcGFpbnQvcmVnaW9u
LXBhaW50aW5nLWNvbXBvc2l0ZWQtZWxlbWVudC1leHBlY3RlZC5odG1sOgotICAgICAgICAqIGZh
c3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW4tY29tcG9zaXRlZC12aWV3LWV4cGVjdGVkLmh0
bWw6Ci0gICAgICAgICogZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbi1jb21wb3NpdGVk
LXZpZXcuaHRtbDoKLSAgICAgICAgKiBmYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLXZpYS1s
YXlvdXQtZXhwZWN0ZWQudHh0OgotICAgICAgICAqIHBsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVj
dGF0aW9uczoKLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL2Zhc3QvcmVwYWludC9qYXBhbmVz
ZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4K
LSAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxl
Y3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9uczoKLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
ZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVjdGVkLnBuZzogUmVtb3Zl
ZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9u
cy1tYXJrLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFz
dC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmc6IFJlbW92ZWQuIFRoZSB0
ZXN0IGlzIG5vdyBhIHJlZiB0ZXN0LgotICAgICAgICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lv
bnMvZmxvdy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBl
Y3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9m
bG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2Fs
LXJsLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC9y
ZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5
LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvbXVs
dGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13aWR0aC1yZWdpb25zLWV4
cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25z
L211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9u
cy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVn
aW9ucy9yZWdpb24tZHluYW1pYy1hZnRlci1iZWZvcmUtZXhwZWN0ZWQudHh0OgotICAgICAgICAq
IHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvcmVnaW9uLWdlbmVyYXRlZC1jb250ZW50LWJlZm9y
ZS1hZnRlci1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9u
cy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBuZzogUmVtb3Zl
ZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0
LXNtYWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRm
b3JtL2VmbC9mYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4
cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25z
L3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
Ci0gICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rp
b24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWlu
LXJlZ2lvbnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL2VmbC9m
YXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC5wbmc6IFJl
bW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRp
bmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnBu
ZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZmFzdC9yZXBhaW50L3JlZ2lvbi1w
YWludGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKLSAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9y
ZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJr
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9yZWdp
b25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICog
cGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvdy1jb250
ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93
LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2Fs
LXJsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9y
ZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQucG5nOiBSZW1v
dmVkLgotICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZv
cm0vZ3RrL2Zhc3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZh
cmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1p
bi12YXJpYWJsZS13aWR0aC1yZWdpb25zLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3JlZ2lvbi1keW5hbWljLWFmdGVyLWJlZm9yZS1l
eHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9yZWdpb24t
Z2VuZXJhdGVkLWNvbnRlbnQtYmVmb3JlLWFmdGVyLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0LXNtYWxsLXBhZ2luYXRp
b24tZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3Jl
Z2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ct
b3V0LW9mLXNlY29uZC1yZWdpb24tZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9u
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9yZXBh
aW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5n
OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvamFwYW5lc2Ut
cmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0g
ICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9saW5lLWZsb3ctd2l0aC1mbG9hdHMt
aW4tcmVnaW9ucy1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVw
YWludC9vdmVyZmxvdy1mbGlwcGVkLXdyaXRpbmctbW9kZS1ibG9jay1pbi1yZWdpb25zLWV4cGVj
dGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWlu
dGluZy1pbnZhbGlkYXRpb24tZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRm
b3JtL2d0ay9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9yZWdp
b24tcGFpbnRpbmctdmlhLWxheW91dC1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICog
cGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjLWxpb24vVGVzdEV4cGVj
dGF0aW9uczoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlcGFpbnQvamFwYW5l
c2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC5wbmc6IFJlbW92ZWQu
Ci0gICAgICAgICogcGxhdGZvcm0vbWFjLWxpb24vZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNl
bGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKLSAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmc6IFJlbW92
ZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFz
aWMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3Jl
Z2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4K
LSAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12
ZXJ0aWNhbC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5nOiBS
ZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50
LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC9yZWdpb25zL211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMtaW4t
dmFyaWFibGUtd2lkdGgtcmVnaW9ucy1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0v
bWFjL2Zhc3QvcmVnaW9ucy9yZWdpb24tZHluYW1pYy1hZnRlci1iZWZvcmUtZXhwZWN0ZWQudHh0
OgotICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWdlbmVyYXRlZC1j
b250ZW50LWJlZm9yZS1hZnRlci1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVk
LnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL3RvcC1vdmVyZmxvdy1v
dXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFj
L2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4
cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50
L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0Ogot
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbGluZS1mbG93LXdpdGgtZmxvYXRz
LWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0OgotICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3Jl
cGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC50eHQ6Ci0gICAgICAg
ICogcGxhdGZvcm0vcXQtd2syL1Rlc3RFeHBlY3RhdGlvbnM6Ci0gICAgICAgICogcGxhdGZvcm0v
cXQtd2syL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQucG5nOiBSZW1v
dmVkLgotICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50
LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9xdC13azIvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBl
Y3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVnaW9u
cy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lv
bnMtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9mYXN0
L3JlZ2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1leHBlY3RlZC5wbmc6
IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVnaW9ucy90b3Atb3Zl
cmZsb3ctb3V0LW9mLXNlY29uZC1yZWdpb24tZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAg
ICAqIHBsYXRmb3JtL3F0LXdrMi9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRh
dGlvbi1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vcXQtd2syL2Zh
c3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC13azIvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWlu
dGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9xdC9UZXN0RXhwZWN0YXRpb25zOgotICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvcmVnaW9u
cy9hdXRvaGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAg
ICogcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxv
dy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9m
YXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJh
c2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9y
bS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAg
ICogcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1v
dmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3QvcmVn
aW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRoLXJl
Z2lvbnMtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3Qv
cmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRo
LXJlZ2lvbnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotICAgICAgICAqIHBsYXRmb3JtL3F0L2Zh
c3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBu
ZzogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvdGV4dC1yZWdp
b24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAg
ICogcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJl
Z2lvbi1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9y
ZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC50eHQ6IFJl
bW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L2xpbmUtZmxvdy13aXRo
LWZsb2F0cy1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9m
YXN0L3JlcGFpbnQvb3ZlcmZsb3ctZmxpcHBlZC13cml0aW5nLW1vZGUtYmxvY2staW4tcmVnaW9u
cy1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L3JlZ2lv
bi1wYWludGluZy1pbnZhbGlkYXRpb24tZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAgICAq
IHBsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlcGFpbnQv
cmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgotICAgICAg
ICAqIHBsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcGxhdGZvcm0vd2luL2Zhc3QvcmVwYWlu
dC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZzog
UmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS93aW4vZmFzdC9yZXBhaW50L2phcGFuZXNlLXJs
LXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgotCi0y
MDEzLTEwLTAyICBSZW5hdGEgSG9kb3ZhbiAgPHJlbmlAd2Via2l0Lm9yZz4KLQotICAgICAgICBI
VE1MIGxpc3Rib3ggaXMgbm90IHJlc2l6ZWQgaG9yaXpvbnRhbGx5IHdoZW4gem9vbWluZwotICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0NDUKLQotICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBBIHRlc3Qgd2l0aCBhIHpv
b21lZCBsaXN0Ym94IGlzIGFkZGVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHN0eWxlQ2hhbmdlIGlz
IGNhdGNoZWQuCi0KLSAgICAgICAgKiBmYXN0L3RyYW5zZm9ybXMvbGlzdGJveC16b29tLmh0bWw6
IEFkZGVkLgotICAgICAgICAqIGZhc3QvdHJhbnNmb3Jtcy9saXN0Ym94LXpvb20tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KLQotMjAxMy0xMC0wMSAgU2FudG9zaCBNYWh0byAgPHNhbnRvc2gubWFAc2Ft
c3VuZy5jb20+Ci0KLSAgICAgICAgY29udGVudGVkaXRhYmxlIGp1c3RpZnkgY29tbWFuZHMgYXBw
bGllZCB0byBuZXh0IHBhcmFncmFwaCBhcyB3ZWxsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYxMQotCi0gICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KLQotICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIHNlbGVjdGluZyBvbmUgcGFyYWdy
YXBoIGFuZCB0aGUgYmVnaW5uaW5nIG9mIGFub3RoZXIKLSAgICAgICAgcGFyYWdyYXBoIHRvIGVu
c3VyZSB0aGF0IG9ubHkgdGhlIGZpcnN0IGZ1bGx5LXNlbGVjdGVkIHBhcmFncmFwaCBzaG91bGQK
LSAgICAgICAgYmUganVzdGlmaWVkIHdoZW4ganVzdGlmeWluZyB0aGUgc2VsZWN0aW9uLgotCi0g
ICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9hbGlnbi1pbi1zcGFuLWV4cGVjdGVkLnR4dDog
VXBkYXRlZC4KLSAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2NvbnRlbnRlZGl0YWJsZS1q
dXN0aWZ5LW5leHQtcGFyYWdyYXBoLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0gICAgICAgICogZWRp
dGluZy9leGVjQ29tbWFuZC9jb250ZW50ZWRpdGFibGUtanVzdGlmeS1uZXh0LXBhcmFncmFwaC5o
dG1sOiBBZGRlZC4KLQotMjAxMy0xMC0wMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KLQotICAgICAgICBGbGFreSBUZXN0OiBtZWRpYS9tZWRpYS1lbGVtZW50LXBsYXktYWZ0
ZXItZW9zLmh0bWwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNTA0OAotCi0gICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6IE1h
cmtpbmcgYXMgc3VjaC4KLQotMjAxMy0xMC0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgotCi0gICAgICAgIFJFR1JFU1NJT04oMTU2NDY0KTogNTAlIHJlZ3Jlc3Npb24gb24gU3Vu
U3BpZGVyL3N0cmluZy1mYXN0YQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyMjAyCi0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjE1NjQ2
NC4KLQotICAgICAgICAqIGpzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCi0gICAgICAgICoganMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50Lmh0bWw6IFJl
bW92ZWQuCi0gICAgICAgICoganMvbW96aWxsYS9zdHJpY3QvMTMuMS1leHBlY3RlZC50eHQ6Ci0g
ICAgICAgICoganMvbW96aWxsYS9zdHJpY3QvcmVncmVzcy01MzIyNTQtZXhwZWN0ZWQudHh0Ogot
ICAgICAgICAqIGpzL21vemlsbGEvc3RyaWN0L3NjcmlwdC10ZXN0cy8xMy4xLmpzOgotICAgICAg
ICAqIGpzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgotICAgICAgICAqIGpzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMtbGVuZ3Ro
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KLSAgICAgICAgKiBqcy9yZWdyZXNzL2Rlc3RydWN0dXJp
bmctYXJndW1lbnRzLWxlbmd0aC5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIGpzL3JlZ3Jlc3Mv
ZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBqcy9yZWdy
ZXNzL2Rlc3RydWN0dXJpbmctc3dhcC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCi0gICAgICAgICog
anMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXN3YXAuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy1sZW5ndGguanM6
IFJlbW92ZWQuCi0gICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmlu
Zy1hcmd1bWVudHMuanM6IFJlbW92ZWQuCi0gICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvZGVzdHJ1Y3R1cmluZy1zd2FwLmpzOiBSZW1vdmVkLgotICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanM6IFJlbW92ZWQuCi0gICAgICAgICogc3B1
dG5pay9Db25mb3JtYW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9uL1MxM19BNS5odG1sOgotCi0y
MDEzLTEwLTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgotCi0gICAg
ICAgIFRpbGVkIGRyYXdpbmcgR3JhcGhpY3NMYXllciB0cmVlIGR1bXBzIHNob3VsZCBtYXRjaCBu
b24tdGlsZWQgbW9yZSBjbG9zZWx5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjIxNzIKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNz
b24uCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFj
a2dyb3VuZC9maXhlZC1iYWNrZ3JvdW5kLW5vLWltYWdlLWV4cGVjdGVkLnR4dDoKLSAgICAgICAg
KiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1i
b2R5LWJhY2tncm91bmQtYm9keS1sYXllci1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtYm9keS1iYWNr
Z3JvdW5kLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtb3BhY2l0eS1odG1s
LWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcv
Zml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtcG9zaXRpb25lZC1leHBlY3Rl
ZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJh
Y2tncm91bmQvZml4ZWQtYm9keS1iYWNrZ3JvdW5kLXRyYW5zZm9ybWVkLWh0bWwtZXhwZWN0ZWQu
dHh0OgotICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNr
Z3JvdW5kL2ZpeGVkLWJvZHktYmFja2dyb3VuZC16b29tZWQtZXhwZWN0ZWQudHh0OgotICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVk
LWh0bWwtYmFja2dyb3VuZC1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtbm9uLXByb3BhZ2F0ZWQtYm9k
eS1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvc3RpY2t5L3N0aWNreS1sYXllcnMtZXhwZWN0ZWQudHh0OgotICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy90aWxlLWNvdmVyYWdlLWFmdGVyLXNjcm9s
bC1leHBlY3RlZC50eHQ6Ci0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L3RpbGUtY292ZXJhZ2UtYWZ0ZXItc2Nyb2xsLXNwZWN1bGF0aXZlLWV4cGVjdGVkLnR4dDoKLSAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zY3Jv
bGwtdG8tYm90dG9tLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQ6Ci0g
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc3Bl
Y3VsYXRpdmUtZXhwZWN0ZWQudHh0OgotICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy90aWxlLXNpemUtc2xvdy16b29tZWQtZXhwZWN0ZWQudHh0OgotICAgICAgICAqIHBs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy90aWxlZC1kcmF3aW5nLXNjcm9sbC1wb3NpdGlv
bi1wYWdlLWNhY2hlLXJlc3RvcmF0aW9uLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJhd2luZy16b29tLWV4cGVjdGVkLnR4dDoK
LSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJhd2luZy16
b29tLXNjcm9sbGVkLWV4cGVjdGVkLnR4dDoKLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0ZWQudHh0OgotICAgICAgICBSZWJh
c2VsaW5lIHNvbWUgdGVzdHMgZ2l2ZW4gdGhlc2UgY2hhbmdlcy4KLQotMjAxMy0xMC0wMSAgSm9v
bmUgSHVyICA8am9vbmUuaHVyQGludGVsLmNvbT4KLQotICAgICAgICBRdWlya3Ntb2RlOiBDU1Mx
OiBXZWJLaXQgZmFpbHMgZHluYW1pYyA6Zmlyc3QtbGV0dGVyIHRlc3QKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAyCi0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgSHlhdHQuCi0KLSAgICAgICAgQWRkIGEgdGVzdCBjYXNlIHRoYXQgZW5zdXJl
cyB0aGF0IENTUyBmaXJzdC1sZXR0ZXIgcHJvcGVydHkgc2hvdWxkIHdvcmsgCi0gICAgICAgIHBy
b3Blcmx5IHdoZW4gdGhlIGZpcnN0IGxldHRlciBpcyBjaGFuZ2VkIGJ5IERPTSBzY3JpcHRpbmcu
Ci0KLSAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItYmxvY2stY2hhbmdlLmh0bWw6IEFk
ZGVkLgotICAgICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgotICAgICAgICAq
IHBsYXRmb3JtL2d0ay13azEvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1leHBl
Y3RlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIHBsYXRmb3JtL2d0ay13azIvZmFzdC9jc3MvZmly
c3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1leHBlY3RlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItYmxvY2stY2hhbmdlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6Ci0KLTIw
MTMtMTAtMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+Ci0KLSAgICAgICAg
W1dpbl0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCi0KLSAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9uczogVXBkYXRlIFRlc3RFeHBlY3RhdGlvbnMgZm9yIHR3byBjcmFzaGVzIHRo
YXQgd2VyZSBub3QKLSAgICAgICAgcHJldmlvdXNseSBsb2dnZWQsIG9uZSBpbWFnZS1vbmx5IGZh
aWx1cmUsIGFub3RoZXIgYnJva2VuIHRlc3QgZHVlIHRvIHRoZSBtZWRpYSBjaGFuZ2VzLgotCi0y
MDEzLTEwLTAxICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAg
W1dpbmRvd3NdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBTa2lwIGZhc3QvZXZlbnRzL2RyYWctYW5k
LWRyb3AtYXV0b3Njcm9sbC1pbm5lci1mcmFtZS5odG1sLgotCi0JCURyYWcgYW5kIGRyb3AgZG9l
cyBub3Qgd29yayBvbiBXaW5kb3dzIERSVC4KLQotICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zOgotCi0yMDEzLTEwLTAxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgotCi0gICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxNTY3
MzAuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIw
MjEKLQotICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiBEaXNhYmxlIGEg
bnVtYmVyIG9mIHRlc3RzIGJyb2tlbiBieSB0aGUgc3dpdGNoIHRvIHRoZSBuZXcKLSAgICAgICAg
Q1NTL0pTLWJhc2VkIG1lZGlhIGNvbnRyb2xzLgotCi0yMDEzLTEwLTAxICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgotCi0gICAgICAgIGZhc3QvZm9ybXMvc2VhcmNoLWV2ZW50
LWRlbGF5Lmh0bWwgaXMgZmxha2V5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01Mzk5MAotCi0gICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogTWFya2lu
ZyBhcyBzdWNoLgotCi0yMDEzLTEwLTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTU2NzI1LgotICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNTY3MjUKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE3NgotCi0gICAgICAgIGJy
b2tlIGFsbCB0aGUgbWlzbWF0Y2ggdGVzdHMgYWdhaW4gKFJlcXVlc3RlZCBieSB0aG9ydG9uIG9u
Ci0gICAgICAgICN3ZWJraXQpLgotCi0gICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3dpbmRvdy1zZXJ2ZXItc25hcHNob3RzLXdvcmstZXhwZWN0ZWQtbWlzbWF0Y2guaHRt
bDogUmVtb3ZlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvd2lu
ZG93LXNlcnZlci1zbmFwc2hvdHMtd29yay5odG1sOiBSZW1vdmVkLgotCi0yMDEzLTEwLTAxICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgotCi0gICAgICAgIFt3azJdIFdl
YktpdFRlc3RSdW5uZXIncyB3aW5kb3cgc25hcHNob3RzIGFyZSBibGFuayB3aXRoIHRpbGVkIGRy
YXdpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MjAwNgotICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwOTUxOTc+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgRGVhbiBKYWNrc29uLgotCi0gICAgICAgIEFkZCBhIHRlc3QgdGhhdCBlbnN1cmVzIHRo
YXQgV2ViS2l0VGVzdFJ1bm5lcidzIHNuYXBzaG90cyBhcmUgbm90Ci0gICAgICAgIGNvbXBsZXRl
bHkgYmxhbmsgd2l0aCB0aWxlZCBkcmF3aW5nIGVuYWJsZWQuCi0KLSAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvd2luZG93LXNlcnZlci1zbmFwc2hvdHMtd29yay1leHBl
Y3RlZC1taXNtYXRjaC5odG1sOiBBZGRlZC4KLSAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvd2luZG93LXNlcnZlci1zbmFwc2hvdHMtd29yay5odG1sOiBBZGRlZC4KLQot
MjAxMy0wOS0zMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KLQotICAgICAgICBb
TWFjXSBBZGQgc3VwcG9ydCBmb3IgVmlkZW9UcmFjayB0byBNZWRpYVBsYXllclByaXZhdGVBVkZP
YmpDCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIx
MjIKLQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisgICAgICAgIFZlcmlmeSB0
aGF0IHRoZSBzaGFwZS1vdXRzaWRlIG1hcmdpbi1ib3VuZGFyeSBpcyBjb21wdXRlZCBjb3JyZWN0
bHkgZm9yIGltYWdlIHZhbHVlZCBzaGFwZXMuCiAKLSAgICAgICAgKiBtZWRpYS90cmFjay92aWRl
by10cmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgotICAgICAgICAqIG1lZGlhL3RyYWNrL3ZpZGVv
LXRyYWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUt
ZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWlt
YWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBl
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4t
MDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxv
YXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWw6IEFkZGVkLgogCiAyMDEzLTEwLTAx
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGMzNmM4OWMuLjYxMjMyODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTAsNSAr
NTAsMyBAQCB3ZWJraXQub3JnL2IvMTEyNTIxIFsgRGVidWcgXSB3ZWJhdWRpby9qYXZhc2NyaXB0
YXVkaW9ub2RlLmh0bWwgWyBQYXNzIENyYXNoIF0KIAogIyBUaGUgdGVzdCBmcmVxdWVudGx5IHRp
bWVzIG91dCwgYW5kIGlzIGp1c3QgdW5zdWNjZXNzZnVsIGF0IGRldGVjdGluZyBpbmNvcnJlY3Qg
YmVoYXZpb3Igd2hlbiBpdCBwYXNzZXMuCiB3ZWJraXQub3JnL2IvNzI2OTggbWVkaWEvYXVkaW8t
Z2FyYmFnZS1jb2xsZWN0Lmh0bWwgWyBTa2lwIF0KLQotd2Via2l0Lm9yZy9iLzUzOTkwIGZhc3Qv
Zm9ybXMvc2VhcmNoLWV2ZW50LWRlbGF5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9hbGlnbi1pbi1zcGFuLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvYWxpZ24taW4tc3Bhbi1leHBl
Y3RlZC50eHQKaW5kZXggNmQ1ZjA5MS4uNGQ4ZTgwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9hbGlnbi1pbi1zcGFuLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2FsaWduLWluLXNwYW4tZXhwZWN0ZWQudHh0CkBA
IC0xLDMgKzEsNCBAQAogTGluZSAxLiAKIFNlbGVjdCBhbGwgdGV4dCBpbiB0aGlzIGxpbmUgYW5k
IHVzZSBqdXN0aWZ5IGNvbW1hbmQuCiBMaW5lIDMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvY29udGVudGVkaXRhYmxlLWp1c3RpZnktbmV4dC1wYXJhZ3Jh
cGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9jb250ZW50
ZWRpdGFibGUtanVzdGlmeS1uZXh0LXBhcmFncmFwaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQ0MmJhZmMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9jb250ZW50ZWRpdGFibGUtanVzdGlmeS1uZXh0LXBhcmFncmFwaC1l
eHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1UaGlzIHRlc3QgaXMg
Zm9yIGEgYnVnIHdoZW4gc2VsZWN0aW9uIGV4dGVuZHMgY29tcGxldGUgbGluZSBvbiBmaXJzdCBw
YXJhZ3JhcGggYW5kIGFwcGx5aW5nIGp1c3RpZnlDZW50ZXIgY29tbWFuZCB3aWxsIGJlIGFwcGxp
ZWQgdG8gbmV4dCBwYXJhZ3JhcGggYWxzby4gT25seSBmaXJzdCBQYXJhZ3JhcGggd2l0aCBpZCAi
cGFyYWdyYXBoMSIgc2hvdWxkIGhhdmUgYXR0cmlidXRlIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50
ZXIiCi18ICIKLSAgICAiCi18IDxwPgotfCAgIGlkPSJwYXJhZ3JhcGgxIgotfCAgIHN0eWxlPSJ0
ZXh0LWFsaWduOiBjZW50ZXI7IgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+UGFyYWdyYXBoIG9u
ZS4iCi18ICIKLSAgICAiCi18IDxwPgotfCAgIGlkPSJwYXJhZ3JhcGgyIgotfCAgIDwjc2VsZWN0
aW9uLWZvY3VzPgotfCAgICJQYXJhZ3JhcGggdHdvLiIKLXwgIgotIgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9jb250ZW50ZWRpdGFibGUtanVzdGlmeS1uZXh0
LXBhcmFncmFwaC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9jb250ZW50
ZWRpdGFibGUtanVzdGlmeS1uZXh0LXBhcmFncmFwaC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNmY3OWUwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvY29udGVudGVkaXRhYmxlLWp1c3RpZnktbmV4dC1wYXJhZ3JhcGguaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotCi08Ym9keT4KLTxkaXYgaWQ9ImNvbnRhaW5lciIgY29udGVudGVkaXRh
YmxlID4KLSAgICA8cCBpZD0icGFyYWdyYXBoMSI+UGFyYWdyYXBoIG9uZS48L3A+Ci0gICAgPHAg
aWQ9InBhcmFncmFwaDIiPlBhcmFncmFwaCB0d28uPC9wPgotPC9kaXY+Ci08L2JvZHk+Ci0KLTxz
Y3JpcHQ+Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmZvY3VzKCk7
Ci0gICAgZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdFeHRlbmQnLCAnRm9yd2FyZCcsICdMaW5lJyk7
Ci0gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0p1c3RpZnlDZW50ZXInLCBmYWxzZSwgbnVsbCk7
Ci0KLSAgICBNYXJrdXAuZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCBpcyBmb3IgYSBidWcgd2hlbiBz
ZWxlY3Rpb24gZXh0ZW5kcyBjb21wbGV0ZSBsaW5lIG9uIGZpcnN0IHBhcmFncmFwaCBhbmQgYXBw
bHlpbmcganVzdGlmeUNlbnRlciBjb21tYW5kIHdpbGwgYmUgYXBwbGllZCB0byBuZXh0IHBhcmFn
cmFwaCBhbHNvLiBPbmx5IGZpcnN0IFBhcmFncmFwaCB3aXRoIGlkICJwYXJhZ3JhcGgxIiBzaG91
bGQgaGF2ZSBhdHRyaWJ1dGUgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciInKTsKLSAgICBNYXJr
dXAuZHVtcCgnY29udGFpbmVyJyk7Ci08L3NjcmlwdD4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9jay1jaGFuZ2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9jay1jaGFuZ2UuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDU1MzRkNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9maXJzdC1sZXR0ZXItYmxvY2stY2hhbmdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwzMiArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTxodG1sPiAKLTxoZWFkPgotPHRpdGxlPlRl
c3QgZm9yIGZpcnN0LWxldHRlciB0aGF0IGlzIGFkZGVkIGJ5IERPTSBzY3JpcHRpbmc8L3RpdGxl
PgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLXA6Zmlyc3QtbGV0dGVyIHt0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsgY29sb3I6ICNDQjAwMEY7fQotPC9zdHlsZT4KLTxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLQotd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIGRv
Y3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgIGFkZFRleHROb2RlKCk7Ci19OwotCi1mdW5jdGlv
biBhZGRUZXh0Tm9kZSgpIHsKLSAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnSSBhbSBhZGRpbmcgYSBuZXcgdGV4dC4gJyk7Ci0gICAgdmFyIHBhcmEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwotICAgIHBhcmEuaW5zZXJ0QmVmb3JlKHRleHROb2Rl
LCBwYXJhLmZpcnN0Q2hpbGQpOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHAgaWQ9InRlc3QiPgotVGhpcyBpcyBhIHRlc3QgcGFyYWdyYXBoLiBZb3UgY2FuIGluc2VydCBl
eHRyYSB0ZXh0IGF0IGl0cyBzdGFydDsgCi10aGUgOmZpcnN0LWxldHRlciBzdHlsZXMgc2hvdWxk
IGJlIHVwZGF0ZWQgdG8gYWNjb21vZGF0ZSB0aGlzIG5ldyB0ZXh0LgotPC9wPgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQt
cmVnaW9ucy1tYXJrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9hdXRv
aGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3RlZC50eHQKaW5kZXggMTQ4OTFlOC4uYmM0MTY0YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1t
YXJrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvYXV0b2hlaWdo
dC1yZWdpb25zLW1hcmstZXhwZWN0ZWQudHh0CkBAIC0zLDEwICszLDEwIEBAIGxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTE2CiAgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxMTYKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHgxMDAKLWxheWVyIGF0ICg4LDgpIHNpemUgNTB4NTAKLSAgUmVuZGVy
UmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgNTB4NTAKLWxheWVyIGF0ICg4LDU4KSBzaXplIDUw
eDUwCi0gIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCw1MCkgc2l6ZSA1MHg1MAorICAgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgNTB4NTAKKyAgICAgIFJlbmRlclJlZ2lvbiB7
RElWfSBhdCAoMCw1MCkgc2l6ZSA1MHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAs
NTApIHNpemUgNTB4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDUwKSBzaXplIDUw
eDUwCiBsYXllciBhdCAoOCw1MCkgc2l6ZSA1MHg0NTAKICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0
ICg4LDUwKSBzaXplIDUweDQ1MAogbGF5ZXIgYXQgKDUwLDgpIHNpemUgNjUweDUwCkBAIC0yNCwx
MiArMjQsMTIgQEAgRmxvdyBUaHJlYWRzCiAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA1MHg0NTAK
ICAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDUweDQ1MAogICBSZWdp
b25zIGZvciBmbG93ICdmbG93MycKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMKKyAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMgaGFzTGF5ZXIKICAgVGhyZWFkIHdpdGggZmxv
dy1uYW1lICdmbG93NCcKICAgICBsYXllciBhdCAoMCwwKSBzaXplIDY1MHg1MAogICAgICAgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgNjUweDUwCiAgIFJlZ2lvbnMgZm9yIGZs
b3cgJ2Zsb3c0JwotICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uNAorICAgIFJlbmRlclJl
Z2lvbiB7RElWfSAjcmVnaW9uNCBoYXNMYXllcgogICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zs
b3c1JwogICBSZWdpb25zIGZvciBmbG93ICdmbG93NScKICAgICBSZW5kZXJSZWdpb24ge0RJVn0g
I3JlZ2lvbjUgaGFzQXV0b0xvZ2ljYWxIZWlnaHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTk3MzA2ZS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw0NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLQotPGh0bWw+Ci08aGVhZD4KLQot
ICAgIDwhLS0gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGNvbnRlbnQgY2FuIGJlIHJlZGlyZWN0ZWQg
dG8gYSByZWdpb24uIEl0IGFsc28KLSAgICAgdHJpZXMgb3V0IGEgdmFsaWRhdGlvbiBzdHJhdGVn
eSB0aGF0IHJlY3JlYXRlcyB0aGUgaW50ZW5kZWQgZGlzcGxheQotICAgICB1c2luZyBub24tcmVn
aW9uIG1hcmt1cC4gSWYgdG9wIGRvZXMgbm90IG1hdGNoIHRoZSBib3R0b20gdGhlbiB0aGUgCi0g
ICAgIHJlc3VsdCBzaG91bGQgYmUgcmVqZWN0ZWQuIC0tPgotCi0gICAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KLSAgICAgICAgaHRtbCB7Ci0gICAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3Ro
aW5nOiBub25lOwotICAgICAgICB9Ci0KLSAgICAgICAgLnJlZ2lvbnsKLSAgICAgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgLyogcmVnaW9ucyBjcmVhdGUgU3RhY2tpbmcg
Q29udGV4dHMgKi8KLSAgICAgICAgICAgIGhlaWdodDoxMDBweDsKLSAgICAgICAgICAgIHdpZHRo
OjMwMHB4OwotICAgICAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggIzg4ODsgLyogdG8gc3RvcCB0
aGUgbWFyZ2luIGNvbGxhcHNpbmcgKi8KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLnBh
c3N7Ci0gICAgICAgICAgICBjb2xvcjogZ3JlZW47Ci0gICAgICAgIH0KLSAgICA8L3N0eWxlPgot
PC9oZWFkPgotPGJvZHk+Ci0gICAgPGRpdj4KLSAgICAgICAgVGhlIHdvcmRzICJmbG93IGNvbnRl
bnQiIGluIGdyZWVuIHNob3VsZCBkaXNwbGF5IGFmdGVyIHRoaXMgZGl2LCAKLSAgICAgICAgYW5k
IHRoZXJlIHNob3VsZCBiZSB0d28gY29waWVzIG9mIHRoaXMgY29udGVudCB0aGF0IG1hdGNoLgot
ICAgIDwvZGl2PgotICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJyZWdpb24iPgotICAgICAg
ICA8ZGl2IGlkPSJzb3VyY2UiIGNsYXNzPSJwYXNzIj4KLSAgICAgICAgICAgIDxwPmZsb3cgY29u
dGVudDwvcD4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdj4KLSAgICAgICAg
VGhlIHdvcmRzICJmbG93IGNvbnRlbnQiIGluIGdyZWVuIHNob3VsZCBkaXNwbGF5IGFmdGVyIHRo
aXMgZGl2LCAKLSAgICAgICAgYW5kIHRoZXJlIHNob3VsZCBiZSB0d28gY29waWVzIG9mIHRoaXMg
Y29udGVudCB0aGF0IG1hdGNoLgotICAgIDwvZGl2PgotICAgIDxkaXYgY2xhc3M9InBhc3MiPgot
ICAgICAgICA8cD5mbG93IGNvbnRlbnQ8L3A+Ci0gICAgPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
LXZlcnRpY2FsLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvdy1j
b250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFiN2E5N2IuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUw+Ci0KLTxodG1sPgotPGhlYWQ+Ci0KLSAg
ICA8IS0tIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBjb250ZW50IGNhbiBiZSByZWRpcmVjdGVkIHRv
IGEgcmVnaW9uLiBJdCBhbHNvCi0gICAgIHRyaWVzIG91dCBhIHZhbGlkYXRpb24gc3RyYXRlZ3kg
dGhhdCByZWNyZWF0ZXMgdGhlIGludGVuZGVkIGRpc3BsYXkKLSAgICAgdXNpbmcgbm9uLXJlZ2lv
biBtYXJrdXAuIElmIHRvcCBkb2VzIG5vdCBtYXRjaCB0aGUgYm90dG9tIHRoZW4gdGhlIAotICAg
ICByZXN1bHQgc2hvdWxkIGJlIHJlamVjdGVkLiAtLT4KLQotICAgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+Ci0gICAgICAgIGh0bWwgewotICAgICAgICAgICAgLXdlYmtpdC13cml0aW5nLW1vZGU6
IHZlcnRpY2FsLWxyOwotICAgICAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogbm9uZTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLnJlZ2lvbnsKLSAgICAgICAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgLyogcmVnaW9ucyBjcmVhdGUgU3RhY2tpbmcgQ29u
dGV4dHMgKi8KLSAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7Ci0gICAgICAgICAgICBib3JkZXI6IHNvbGlkIDFweCAjODg4OyAvKiB0byBzdG9wIHRo
ZSBtYXJnaW4gY29sbGFwc2luZyAqLwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAucGFz
c3sKLSAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKLSAgICAgICAgfQotICAgIDwvc3R5bGU+Ci08
L2hlYWQ+Ci08Ym9keT4KLSAgICA8ZGl2PgotICAgICAgICBUaGUgd29yZHMgImZsb3cgY29udGVu
dCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgYWZ0ZXIgdGhpcyBkaXYsIAotICAgICAgICBhbmQg
dGhlcmUgc2hvdWxkIGJlIHR3byBjb3BpZXMgb2YgdGhpcyBjb250ZW50IHRoYXQgbWF0Y2guCi0g
ICAgPC9kaXY+Ci0gICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+Ci0gICAgICAg
IDxkaXYgaWQ9InNvdXJjZSIgY2xhc3M9InBhc3MiPgotICAgICAgICAgICAgPHA+ZmxvdyBjb250
ZW50PC9wPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2PgotICAgICAgICBU
aGUgd29yZHMgImZsb3cgY29udGVudCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgYWZ0ZXIgdGhp
cyBkaXYsIAotICAgICAgICBhbmQgdGhlcmUgc2hvdWxkIGJlIHR3byBjb3BpZXMgb2YgdGhpcyBj
b250ZW50IHRoYXQgbWF0Y2guCi0gICAgPC9kaXY+Ci0gICAgPGRpdiBjbGFzcz0icGFzcyI+Ci0g
ICAgICAgIDxwPmZsb3cgY29udGVudDwvcD4KLSAgICA8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMt
dmVydGljYWwtcmwtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93
LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGIzZThhNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08IURPQ1RZUEUgSFRNTD4KLQotPGh0bWw+Ci08aGVh
ZD4KLQotICAgIDwhLS0gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGNvbnRlbnQgY2FuIGJlIHJlZGly
ZWN0ZWQgdG8gYSByZWdpb24uIEl0IGFsc28KLSAgICAgdHJpZXMgb3V0IGEgdmFsaWRhdGlvbiBz
dHJhdGVneSB0aGF0IHJlY3JlYXRlcyB0aGUgaW50ZW5kZWQgZGlzcGxheQotICAgICB1c2luZyBu
b24tcmVnaW9uIG1hcmt1cC4gSWYgdG9wIGRvZXMgbm90IG1hdGNoIHRoZSBib3R0b20gdGhlbiB0
aGUgCi0gICAgIHJlc3VsdCBzaG91bGQgYmUgcmVqZWN0ZWQuIC0tPgotCi0gICAgPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KLSAgICAgICAgaHRtbCB7Ci0gICAgICAgICAgICAtd2Via2l0LXdyaXRp
bmctbW9kZTogdmVydGljYWwtcmw7Ci0gICAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5n
OiBub25lOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAucmVnaW9uewotICAgICAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyAvKiByZWdpb25zIGNyZWF0ZSBTdGFj
a2luZyBDb250ZXh0cyAqLwotICAgICAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKLSAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyAvKiB0
byBzdG9wIHRoZSBtYXJnaW4gY29sbGFwc2luZyAqLwotICAgICAgICAgICAgcGFkZGluZzogNXB4
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAucGFzc3sKLSAgICAgICAgICAgIGNvbG9y
OiBncmVlbjsKLSAgICAgICAgfQotICAgIDwvc3R5bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8
ZGl2PgotICAgICAgICBUaGUgd29yZHMgImZsb3cgY29udGVudCIgaW4gZ3JlZW4gc2hvdWxkIGRp
c3BsYXkgdHdpY2UgYWZ0ZXIgdGhpcyBkaXYsIAotICAgICAgICBhbmQgdGhlcmUgc2hvdWxkIGJl
IHR3byBjb3BpZXMgb2YgdGhpcyBjb250ZW50IHRoYXQgbWF0Y2guCi0gICAgPC9kaXY+Ci0gICAg
PGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+Ci0gICAgICAgIDxkaXYgaWQ9InNvdXJj
ZSIgY2xhc3M9InBhc3MiPgotICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7Ij5m
aXJzdCBmbG93IGNvbnRlbnQ8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAg
PGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+Ci0gICAgICAgIDxkaXYgaWQ9InNvdXJj
ZSIgY2xhc3M9InBhc3MiPgotICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6MTAwcHg7Ij5z
ZWNvbmQgZmxvdyBjb250ZW50PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZGl2PgotICAg
IDxkaXY+Ci0gICAgICAgIFRoZSB3b3JkcyAiZmxvdyBjb250ZW50IiBpbiBncmVlbiBzaG91bGQg
ZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgCi0gICAgICAgIGFuZCB0aGVyZSBzaG91bGQgYmUgdHdv
IGNvcGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2
IGNsYXNzPSJwYXNzIj4KLSAgICAgICAgPHA+ZmxvdyBjb250ZW50PC9wPgotICAgIDwvZGl2Pgot
PC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC5odG1sCmluZGV4IDE5NTRjYzkuLjYw
ZjYzNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQt
YmFzaWMtdmVydGljYWwtcmwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxv
dy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLmh0bWwKQEAgLTksMjIgKzksMTMgQEAKICAgICAg
cmVzdWx0IHNob3VsZCBiZSByZWplY3RlZC4gLS0+CiAKICAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgotICAgICAgICBodG1sIHsKLSAgICAgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2
ZXJ0aWNhbC1ybDsKLSAgICAgICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IG5vbmU7Ci0g
ICAgICAgIH0KKyAgICAgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1y
bCB9CiAKICAgICAgICAgI3NvdXJjZXsKICAgICAgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBt
YWluLXRocmVhZDsKICAgICAgICAgfQogCi0gICAgICAgIC5yZWdpb24gewotICAgICAgICAgICAg
LXdlYmtpdC1mbG93LWZyb206IG1haW4tdGhyZWFkOwotICAgICAgICAgICAgd2lkdGg6IDEwMHB4
OwotICAgICAgICAgICAgaGVpZ2h0OjMwMHB4OwotICAgICAgICAgICAgYm9yZGVyOjFweCBzb2xp
ZCBibGFjazsKLSAgICAgICAgICAgIHBhZGRpbmc6NXB4OwotICAgICAgICB9CisgICAgICAgIC5y
ZWdpb24geyB3aWR0aDogMTAwcHg7IGhlaWdodDozMDBweDsgLXdlYmtpdC1mbG93LWZyb206IG1h
aW4tdGhyZWFkOyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjVweCB9CiAKICAgICAg
ICAgLnBhc3N7CiAgICAgICAgICAgICBjb2xvcjogZ3JlZW47CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLmh0bWwKaW5k
ZXggM2U4ZDU1ZC4uYmY4OTg0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwuaHRtbApAQCAtOSwxMCArOSw3IEBA
CiAgICAgIHJlc3VsdCBzaG91bGQgYmUgcmVqZWN0ZWQuIC0tPgogCiAgICAgPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KLSAgICAgICAgaHRtbCB7Ci0gICAgICAgICAgICAtd2Via2l0LXdyaXRpbmct
bW9kZTogdmVydGljYWwtbHI7Ci0gICAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBu
b25lOwotICAgICAgICB9CisgICAgICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVy
dGljYWwtbHIgfQogCiAgICAgICAgICNzb3VyY2V7CiAgICAgICAgICAgICAtd2Via2l0LWZsb3ct
aW50bzogbWFpbi10aHJlYWQ7CkBAIC0yMCw5ICsxNyw4IEBACiAgICAgICAgIAogICAgICAgICAu
cmVnaW9uewogICAgICAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IG1haW4tdGhyZWFkOwotICAg
ICAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKLSAgICAg
ICAgICAgIGJvcmRlcjogc29saWQgMXB4ICM4ODg7CisgICAgICAgICAgICB3aWR0aDoxMDBweDsK
KyAgICAgICAgICAgIGhlaWdodDozMDBweDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
LnBhc3N7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50
LWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
Lmh0bWwKaW5kZXggMTE1NjhhMi4uZjM4NWY5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMuaHRtbApAQCAtOSwxMCArOSw2IEBACiAgICAgIHJl
c3VsdCBzaG91bGQgYmUgcmVqZWN0ZWQuIC0tPgogCiAgICAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KLSAgICAgICAgaHRtbCB7Ci0gICAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBu
b25lOwotICAgICAgICB9Ci0KICAgICAgICAgI3NvdXJjZXsKICAgICAgICAgICAgIC13ZWJraXQt
Zmxvdy1pbnRvOiBtYWluLXRocmVhZDsKICAgICAgICAgfQpAQCAtMjEsNyArMTcsNiBAQAogICAg
ICAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IG1haW4tdGhyZWFkOwogICAgICAgICAgICAgaGVp
Z2h0OjEwMHB4OwogICAgICAgICAgICAgd2lkdGg6MzAwcHg7Ci0gICAgICAgICAgICBib3JkZXI6
IHNvbGlkIDFweCAjODg4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAucGFzc3sKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFt
aWMtcmVtb3ZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dAppbmRleCA2M2ZhMzQwLi4yOTZl
OWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0CkBAIC0zLDYg
KzMsNyBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDE2CiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNgogICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7
RElWfSBhdCAoMCwwKSBzaXplIDB4MAogRmxvdyBUaHJlYWRzCiAgIFRocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0MnCiAgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2Ft
ZS1mbG93LWV4cGVjdGVkLnR4dAppbmRleCAxYTlmYjhhLi5mODc5ZmRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNh
bWUtZmxvdy1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw5IEBAIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKICAgUmVuZGVyQmxvY2sge0hUTUx9
IGF0ICgwLDApIHNpemUgODAweDE2CiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6
ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCisgICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlclJlZ2lv
biB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAogRmxvdyBUaHJlYWRzCiAgIFRocmVhZCB3aXRoIGZs
b3ctbmFtZSAnZmxvd0InCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9keW5hbWljLWxheWVyLWFkZGVkLXdpdGgt
bm8tbGF5b3V0LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMv
ZHluYW1pYy1sYXllci1hZGRlZC13aXRoLW5vLWxheW91dC1leHBlY3RlZC5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUxZGI5NQpCaW5hcnkgZmlsZXMgL2Rldi9udWxs
IGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvZHluYW1pYy1sYXllci1hZGRl
ZC13aXRoLW5vLWxheW91dC1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL2R5bmFtaWMtbGF5ZXItYWRkZWQtd2l0aC1uby1sYXlv
dXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9keW5hbWlj
LWxheWVyLWFkZGVkLXdpdGgtbm8tbGF5b3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZTliNmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2xheWVycy9keW5hbWljLWxheWVyLWFkZGVkLXdpdGgtbm8tbGF5b3V0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MAorICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAgIFJlbmRlclJlZ2lv
biB7RElWfSBhdCAoMCwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCld
CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDEwNCwwKSBzaXplIDUyeDUyIFtib3JkZXI6
ICgxcHggc29saWQgIzAwMDAwMCldCitsYXllciBhdCAoNjAsOCkgc2l6ZSA1Mng1MgorICBSZW5k
ZXJSZWdpb24ge0RJVn0gYXQgKDUyLDApIHNpemUgNTJ4NTIgW2JvcmRlcjogKDFweCBzb2xpZCAj
MDAwMDAwKV0KK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2FydGljbGUn
CisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA1MHgxNTAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCBhdCAoMCwwKSBzaXplIDUweDE1MAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDUweDE1MAorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNp
emUgNTB4NTAgW2JnY29sb3I9IzAwODAwMF0KKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwxMDApIHNpemUgNTB4NTAgW2JnY29sb3I9I0ZGQTUwMF0KKyAgICBsYXllciBhdCAoMCw1
MCkgc2l6ZSA1MHg1MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTApIHNpemUgNTB4
NTAgW2JnY29sb3I9IzAwMDBGRl0KKyAgUmVnaW9ucyBmb3IgZmxvdyAnYXJ0aWNsZScKKyAgICBS
ZW5kZXJSZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3Nob3VsZC1oYXZlLWxh
eWVyIGhhc0xheWVyCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL2R5bmFtaWMtbGF5ZXItYWRkZWQtd2l0aC1uby1sYXlv
dXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvZHluYW1pYy1sYXllci1h
ZGRlZC13aXRoLW5vLWxheW91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmFiYzAwZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
bGF5ZXJzL2R5bmFtaWMtbGF5ZXItYWRkZWQtd2l0aC1uby1sYXlvdXQuaHRtbApAQCAtMCwwICsx
LDMzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDwhLS0KKyAgICBUZXN0aW5nIHRo
YXQgcmVnaW9ucyBiZWNvbWUgbGF5ZXJzIGFzIHJlcXVpcmVkIGJ5IHRoZSBjb250ZW50IHRoYXQg
ZGlzcGxheSBpbiB0aG9zZSByZWdpb25zLiAKKyAgICBUaGVyZSBzaG91bGQgYmUgdGhyZWUgYm94
ZXMgKGdyZWVuLCBibHVlLCBvcmFuZ2UpIHdpdGggYmxhY2sgYm9yZGVycy4gCisgICAgVGhlIHRl
c3QgcGFzc2VzIGlmIHRoZSBzZWNvbmQgcmVnaW9uIGJlY29tZXMgYSBSZW5kZXJMYXllci4KKyAg
ICAtLT4KKyAgICA8aGVhZD4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9yZXNvdXJjZXMvcmVnaW9uLXN0eWxlLmNzcyI+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5sYXllcgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNm
b3JtOiB0cmFuc2xhdGVaKDBweCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8ZGl2IGNsYXNzPSJmbG93QXJ0aWNsZSI+
CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmVlbkJveCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGlkPSJ0ZXN0LWJveCIgY2xhc3M9ImJsdWVCb3giPjwvZGl2PgorICAgICAgICAgICAgPGRp
diBjbGFzcz0ib3JhbmdlQm94Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYg
Y2xhc3M9InJlZ2lvbkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0i
c2hvdWxkLWhhdmUtbGF5ZXIiIGNsYXNzPSJyZWdpb25BcnRpY2xlIGJvcmRlckJveCI+PC9kaXY+
CisgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lvbkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIC8vIEZvcmNlIGEgbGF5b3V0CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
bGluZSB3aWxsIG1ha2UgYSBsYXllciBmb3IgdGhlIHRlc3QtYm94LCBidXQgd2lsbCBub3QgdHJp
Z2dlciBhIG5ldyBsYXlvdXQuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdC1ib3giKS5jbGFzc0xpc3QuYWRkKCJsYXllciIpOworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
bGF5ZXJzL2R5bmFtaWMtbGF5ZXItcmVtb3ZlZC13aXRoLW5vLWxheW91dC1leHBlY3RlZC5wbmcg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL2R5bmFtaWMtbGF5ZXItcmVtb3ZlZC13
aXRoLW5vLWxheW91dC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOGMwY2VkMgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9sYXllcnMvZHluYW1pYy1sYXllci1yZW1vdmVkLXdpdGgtbm8tbGF5b3V0LWV4
cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9s
YXllcnMvZHluYW1pYy1sYXllci1yZW1vdmVkLXdpdGgtbm8tbGF5b3V0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvZHluYW1pYy1sYXllci1yZW1vdmVkLXdp
dGgtbm8tbGF5b3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yZmNjMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2xheWVycy9keW5hbWljLWxheWVyLXJlbW92ZWQtd2l0aC1uby1sYXlvdXQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjIgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwCisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICg1
MiwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gYXQgKDEwNCwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQg
IzAwMDAwMCldCitsYXllciBhdCAoOCw4KSBzaXplIDUyeDUyCisgIFJlbmRlclJlZ2lvbiB7RElW
fSBhdCAoMCwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCitGbG93
IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdhcnRpY2xlJworICAgIGxheWVyIGF0
ICgwLDApIHNpemUgNTB4MTUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgYXQgKDAsMCkg
c2l6ZSA1MHgxNTAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA1MHgx
NTAKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1MCkgc2l6ZSA1MHg1MCBbYmdj
b2xvcj0jMDAwMEZGXQorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDEwMCkgc2l6
ZSA1MHg1MCBbYmdjb2xvcj0jRkZBNTAwXQorICAgIGxheWVyIGF0ICgwLDApIHNpemUgNTB4NTAK
KyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNTB4NTAgW2JnY29sb3I9IzAw
ODAwMF0KKyAgUmVnaW9ucyBmb3IgZmxvdyAnYXJ0aWNsZScKKyAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gI3Nob3VsZC1oYXZlLWxheWVyIGhhc0xheWVyCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9Cisg
ICAgUmVuZGVyUmVnaW9uIHtESVZ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvbGF5ZXJzL2R5bmFtaWMtbGF5ZXItcmVtb3ZlZC13aXRoLW5vLWxheW91dC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9keW5hbWljLWxheWVyLXJlbW92ZWQtd2l0aC1u
by1sYXlvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjIwYjlm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9keW5h
bWljLWxheWVyLXJlbW92ZWQtd2l0aC1uby1sYXlvdXQuaHRtbApAQCAtMCwwICsxLDMzIEBACis8
IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDwhLS0KKyAgICBUZXN0aW5nIHRoYXQgcmVnaW9u
cyBiZWNvbWUgbGF5ZXJzIGFzIHJlcXVpcmVkIGJ5IHRoZSBjb250ZW50IHRoYXQgZGlzcGxheSBp
biB0aG9zZSByZWdpb25zLiAKKyAgICBUaGVyZSBzaG91bGQgYmUgdGhyZWUgYm94ZXMgKGdyZWVu
LCBibHVlLCBvcmFuZ2UpIHdpdGggYmxhY2sgYm9yZGVycy4gCisgICAgVGhlIHRlc3QgcGFzc2Vz
IGlmIG9ubHkgdGhlIGZpcnN0IHJlZ2lvbiBiZWNvbWVzIGEgUmVuZGVyTGF5ZXIuCisgICAgLS0+
CisgICAgPGhlYWQ+CisgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vcmVz
b3VyY2VzL3JlZ2lvbi1zdHlsZS5jc3MiPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
bGF5ZXIKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigwcHgpOworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBjbGFzcz0iZmxvd0FydGljbGUiPgorICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iZ3JlZW5Cb3ggbGF5ZXIiPjwvZGl2PgorICAgICAgICAgICAg
PGRpdiBpZD0idGVzdC1ib3giIGNsYXNzPSJibHVlQm94IGxheWVyIj48L2Rpdj4KKyAgICAgICAg
ICAgIDxkaXYgY2xhc3M9Im9yYW5nZUJveCI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8ZGl2IGlkPSJzaG91bGQtaGF2ZS1sYXllciIgY2xhc3M9InJlZ2lvbkFydGljbGUgYm9yZGVy
Qm94Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3JkZXJCb3gi
PjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJyZWdpb25BcnRpY2xlIGJvcmRlckJveCI+PC9k
aXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAvLyBGb3JjZSBhIGxheW91dAorICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIGxpbmUgd2lsbCByZW1vdmUgdGhlIGxheWVyIGZvciB0aGUgdGVzdC1ib3gsIGJ1dCB3
aWxsIG5vdCB0cmlnZ2VyIGEgbmV3IGxheW91dC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0LWJveCIpLmNsYXNzTGlzdC5yZW1vdmUoImxheWVyIik7CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRv
LWxheWVycy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OGMwY2VkMgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtZXhwZWN0ZWQucG5nIGRpZmZl
cgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXBy
b21vdGVkLXRvLWxheWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
bGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWIzYjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJSZWdpb24g
e0RJVn0gYXQgKDAsMCkgc2l6ZSA1Mng1MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQor
ICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgxMDQsMCkgc2l6ZSA1Mng1MiBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDAwMDApXQorbGF5ZXIgYXQgKDYwLDgpIHNpemUgNTJ4NTIKKyAgUmVuZGVy
UmVnaW9uIHtESVZ9IGF0ICg1MiwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAw
MDAwMCldCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdhcnRpY2xlJwor
ICAgIGxheWVyIGF0ICgwLDApIHNpemUgNTB4MTUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQgYXQgKDAsMCkgc2l6ZSA1MHgxNTAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA1MHgxNTAKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDUweDUwIFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMTAwKSBzaXplIDUweDUwIFtiZ2NvbG9yPSNGRkE1MDBdCisgICAgbGF5ZXIgYXQgKDAsNTAp
IHNpemUgNTB4NTAKKyAgICAgIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElW
fSBhdCAoMCw1MCkgc2l6ZSA1MHg1MCBbYmdjb2xvcj0jMDAwMEZGXQorICBSZWdpb25zIGZvciBm
bG93ICdhcnRpY2xlJworICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICAgIFJlbmRlclJlZ2lvbiB7
RElWfSAjc2hvdWxkLWhhdmUtbGF5ZXIgaGFzTGF5ZXIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9t
b3RlZC10by1sYXllcnMtaG9yaXpvbnRhbC1idC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLWhvcml6b250YWwt
YnQtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NzFj
ZDcKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
bGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLWhvcml6b250YWwtYnQtZXhwZWN0ZWQu
cG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9y
ZWdpb25zLXByb21vdGVkLXRvLWxheWVycy1ob3Jpem9udGFsLWJ0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMt
aG9yaXpvbnRhbC1idC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNGQ1NTU0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtaG9yaXpvbnRhbC1idC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCw1NDApIHNpemUgODAw
eDYwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElW
fSBhdCAoMCwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDEwNCwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHgg
c29saWQgIzAwMDAwMCldCitsYXllciBhdCAoNjAsNTQwKSBzaXplIDUyeDUyCisgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoNTIsMCkgc2l6ZSA1Mng1MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAw
MDApXQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnYXJ0aWNsZScKKyAg
ICBsYXllciBhdCAoMCw0NTApIHNpemUgNTB4MTUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQgYXQgKDAsMCkgc2l6ZSA1MHgxNTAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA1MHgxNTAKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDUweDUwIFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMTAwKSBzaXplIDUweDUwIFtiZ2NvbG9yPSNGRkE1MDBdCisgICAgbGF5ZXIgYXQgKDAsNTAw
KSBzaXplIDUweDUwCisgICAgICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJ
Vn0gYXQgKDAsNTApIHNpemUgNTB4NTAgW2JnY29sb3I9IzAwMDBGRl0KKyAgUmVnaW9ucyBmb3Ig
ZmxvdyAnYXJ0aWNsZScKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gI3Nob3VsZC1oYXZlLWxheWVyIGhhc0xheWVyCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJv
bW90ZWQtdG8tbGF5ZXJzLWhvcml6b250YWwtYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtaG9yaXpvbnRhbC1idC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwOWIwMTMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQt
dG8tbGF5ZXJzLWhvcml6b250YWwtYnQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorICAgIDwhLS0KKyAgICBUZXN0aW5nIHRoYXQgcmVnaW9ucyBiZWNvbWUg
bGF5ZXJzIGFzIHJlcXVpcmVkIGJ5IHRoZSBjb250ZW50IHRoYXQgZGlzcGxheSBpbiB0aG9zZSBy
ZWdpb25zLiAKKyAgICBUaGVyZSBzaG91bGQgYmUgdGhyZWUgYm94ZXMgKGdyZWVuLCBibHVlLCBv
cmFuZ2UpIHdpdGggYmxhY2sgYm9yZGVycy4gCisgICAgVGhlIHRlc3QgcGFzc2VzIGlmIHRoZSBz
ZWNvbmQgcmVnaW9uIGJlY29tZXMgYSBSZW5kZXJMYXllci4KKyAgICAtLT4KKyAgICA8aGVhZD4K
KyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9yZXNvdXJjZXMvcmVnaW9u
LXN0eWxlLmNzcyI+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGh0bWwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1i
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC5ibHVlQm94CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBjbGFzcz0i
Zmxvd0FydGljbGUiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JlZW5Cb3giPjwvZGl2Pgor
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmx1ZUJveCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJvcmFuZ2VCb3giPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBj
bGFzcz0icmVnaW9uQXJ0aWNsZSBib3JkZXJCb3giPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJz
aG91bGQtaGF2ZS1sYXllciIgY2xhc3M9InJlZ2lvbkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4K
KyAgICAgICAgPGRpdiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3JkZXJCb3giPjwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9s
YXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtdmVydGljYWwtbHItZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxh
eWVycy12ZXJ0aWNhbC1sci1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjQ5YTc3MApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtdmVydGljYWwt
bHItZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0aWNhbC1sci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQt
dG8tbGF5ZXJzLXZlcnRpY2FsLWxyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xYjdlZDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0aWNhbC1sci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDYweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA2MHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDB4NTg0CisgICAgICBSZW5kZXJSZWdpb24g
e0RJVn0gYXQgKDAsMCkgc2l6ZSA1Mng1MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQor
ICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDEwNCkgc2l6ZSA1Mng1MiBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDAwMDApXQorbGF5ZXIgYXQgKDgsNjApIHNpemUgNTJ4NTIKKyAgUmVuZGVy
UmVnaW9uIHtESVZ9IGF0ICgwLDUyKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAw
MDAwMCldCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdhcnRpY2xlJwor
ICAgIGxheWVyIGF0ICgwLDApIHNpemUgMTUweDUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQgYXQgKDAsMCkgc2l6ZSAxNTB4NTAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSAxNTB4NTAKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXpl
IDUweDUwIFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDEwMCwwKSBzaXplIDUweDUwIFtiZ2NvbG9yPSNGRkE1MDBdCisgICAgbGF5ZXIgYXQgKDUwLDAp
IHNpemUgNTB4NTAKKyAgICAgIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElW
fSBhdCAoNTAsMCkgc2l6ZSA1MHg1MCBbYmdjb2xvcj0jMDAwMEZGXQorICBSZWdpb25zIGZvciBm
bG93ICdhcnRpY2xlJworICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICAgIFJlbmRlclJlZ2lvbiB7
RElWfSAjc2hvdWxkLWhhdmUtbGF5ZXIgaGFzTGF5ZXIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9t
b3RlZC10by1sYXllcnMtdmVydGljYWwtbHIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtdmVydGljYWwtbHIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjliNDE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxh
eWVycy12ZXJ0aWNhbC1sci5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgICAgPCEtLQorICAgIFRlc3RpbmcgdGhhdCByZWdpb25zIGJlY29tZSBsYXllcnMg
YXMgcmVxdWlyZWQgYnkgdGhlIGNvbnRlbnQgdGhhdCBkaXNwbGF5IGluIHRob3NlIHJlZ2lvbnMu
IAorICAgIFRoZXJlIHNob3VsZCBiZSB0aHJlZSBib3hlcyAoZ3JlZW4sIGJsdWUsIG9yYW5nZSkg
d2l0aCBibGFjayBib3JkZXJzLiAKKyAgICBUaGUgdGVzdCBwYXNzZXMgaWYgdGhlIHNlY29uZCBy
ZWdpb24gYmVjb21lcyBhIFJlbmRlckxheWVyLgorICAgIC0tPgorICAgIDxoZWFkPgorICAgICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3Jlc291cmNlcy9yZWdpb24tc3R5bGUu
Y3NzIj4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgaHRtbAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC5ibHVlQm94CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBjbGFzcz0iZmxvd0FydGlj
bGUiPgorICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JlZW5Cb3giPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYmx1ZUJveCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJv
cmFuZ2VCb3giPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0icmVn
aW9uQXJ0aWNsZSBib3JkZXJCb3giPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJzaG91bGQtaGF2
ZS1sYXllciIgY2xhc3M9InJlZ2lvbkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3JkZXJCb3giPjwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVn
aW9ucy1wcm9tb3RlZC10by1sYXllcnMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0
aWNhbC1ybC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjM1ZjEzYwpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMtdmVydGljYWwtcmwtZXhwZWN0
ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVy
cy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJz
LXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kMTU5NWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L2xheWVycy9yZWdpb25zLXByb21vdGVkLXRvLWxheWVycy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoNzQwLDApIHNpemUgNjB4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDYweDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgMHg1ODQKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBh
dCAoMCwwKSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTA0KSBzaXplIDUyeDUyIFtib3JkZXI6ICgxcHggc29s
aWQgIzAwMDAwMCldCitsYXllciBhdCAoNzQwLDYwKSBzaXplIDUyeDUyCisgIFJlbmRlclJlZ2lv
biB7RElWfSBhdCAoMCw1Mikgc2l6ZSA1Mng1MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDAp
XQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnYXJ0aWNsZScKKyAgICBs
YXllciBhdCAoNjUwLDApIHNpemUgMTUweDUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQg
YXQgKDAsMCkgc2l6ZSAxNTB4NTAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkg
c2l6ZSAxNTB4NTAKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDUw
eDUwIFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDEw
MCwwKSBzaXplIDUweDUwIFtiZ2NvbG9yPSNGRkE1MDBdCisgICAgbGF5ZXIgYXQgKDcwMCwwKSBz
aXplIDUweDUwCisgICAgICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0g
YXQgKDUwLDApIHNpemUgNTB4NTAgW2JnY29sb3I9IzAwMDBGRl0KKyAgUmVnaW9ucyBmb3IgZmxv
dyAnYXJ0aWNsZScKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gI3Nob3VsZC1oYXZlLWxheWVyIGhhc0xheWVyCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lvbnMtcHJvbW90
ZWQtdG8tbGF5ZXJzLXZlcnRpY2FsLXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
bGF5ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLXZlcnRpY2FsLXJsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdiNTc2MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXll
cnMtdmVydGljYWwtcmwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorICAgIDwhLS0KKyAgICBUZXN0aW5nIHRoYXQgcmVnaW9ucyBiZWNvbWUgbGF5ZXJzIGFz
IHJlcXVpcmVkIGJ5IHRoZSBjb250ZW50IHRoYXQgZGlzcGxheSBpbiB0aG9zZSByZWdpb25zLiAK
KyAgICBUaGVyZSBzaG91bGQgYmUgdGhyZWUgYm94ZXMgKGdyZWVuLCBibHVlLCBvcmFuZ2UpIHdp
dGggYmxhY2sgYm9yZGVycy4gCisgICAgVGhlIHRlc3QgcGFzc2VzIGlmIHRoZSBzZWNvbmQgcmVn
aW9uIGJlY29tZXMgYSBSZW5kZXJMYXllci4KKyAgICAtLT4KKyAgICA8aGVhZD4KKyAgICAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9yZXNvdXJjZXMvcmVnaW9uLXN0eWxlLmNz
cyI+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIGh0bWwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAuYmx1ZUJveAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxkaXYgY2xhc3M9ImZsb3dBcnRpY2xl
Ij4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyZWVuQm94Ij48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImJsdWVCb3giPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3Jh
bmdlQm94Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lv
bkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0ic2hvdWxkLWhhdmUt
bGF5ZXIiIGNsYXNzPSJyZWdpb25BcnRpY2xlIGJvcmRlckJveCI+PC9kaXY+CisgICAgICAgIDxk
aXYgY2xhc3M9InJlZ2lvbkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5ZXJzL3JlZ2lv
bnMtcHJvbW90ZWQtdG8tbGF5ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvbGF5
ZXJzL3JlZ2lvbnMtcHJvbW90ZWQtdG8tbGF5ZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTk0NDM3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9sYXllcnMvcmVnaW9ucy1wcm9tb3RlZC10by1sYXllcnMuaHRtbApAQCAtMCww
ICsxLDI3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDwhLS0KKyAgICBUZXN0aW5n
IHRoYXQgcmVnaW9ucyBiZWNvbWUgbGF5ZXJzIGFzIHJlcXVpcmVkIGJ5IHRoZSBjb250ZW50IHRo
YXQgZGlzcGxheSBpbiB0aG9zZSByZWdpb25zLiAKKyAgICBUaGVyZSBzaG91bGQgYmUgdGhyZWUg
Ym94ZXMgKGdyZWVuLCBibHVlLCBvcmFuZ2UpIHdpdGggYmxhY2sgYm9yZGVycy4gCisgICAgVGhl
IHRlc3QgcGFzc2VzIGlmIHRoZSBzZWNvbmQgcmVnaW9uIGJlY29tZXMgYSBSZW5kZXJMYXllci4K
KyAgICAtLT4KKyAgICA8aGVhZD4KKyAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9yZXNvdXJjZXMvcmVnaW9uLXN0eWxlLmNzcyI+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ibHVlQm94CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBjbGFzcz0iZmxvd0FydGljbGUiPgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iZ3JlZW5Cb3giPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0i
Ymx1ZUJveCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcmFuZ2VCb3giPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3Jk
ZXJCb3giPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJzaG91bGQtaGF2ZS1sYXllciIgY2xhc3M9
InJlZ2lvbkFydGljbGUgYm9yZGVyQm94Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0icmVn
aW9uQXJ0aWNsZSBib3JkZXJCb3giPjwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvc3RhY2tpbmctY29udGV4dC1w
YWludC1vcmRlci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2xheWVy
cy9zdGFja2luZy1jb250ZXh0LXBhaW50LW9yZGVyLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGFlYTRhMjEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2xheWVycy9zdGFja2luZy1jb250ZXh0LXBhaW50LW9yZGVyLWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTwhLS0K
LSAgICBUaGlzIGlzIGEgdGVzdCByZWZlcmVuY2UgZmlsZS4KLSAgICBUZXN0IHRoYXQgdGhlIHJl
Z2lvbiBwYWludHMgb3ZlciBpdHMgc2libGluZyBiZWNhdXNlIHJlZ2lvbnMgY3JlYXRlIHN0YWNr
aW5nIGNvbnRleHRzLgotICAgIFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgbm8gcmVkIHZp
c2libGUuCi0tLT4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHN0eWxlPgotICAgICAgICAjcmVnaW9u
IHsKLSAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMDsgLyogcmVnaW9u
cyBjcmVhdGUgU3RhY2tpbmcgQ29udGV4dHMgKi8KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOwotICAgICAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKLSAgICAgICAgfQotICAgICAgICAjc2libGluZy1vZi1yZWdpb24gewotICAgICAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwotICAgICAgICAgICAgd2lkdGg6IDEwMHB4Owot
ICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKLSAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xMDBw
eDsKLSAgICAgICAgfQotICAgIDwvc3R5bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8ZGl2IGlk
PSJyZWdpb24iPnJlZ2lvbjwvZGl2PgotICAgIDxkaXYgaWQ9InNpYmxpbmctb2YtcmVnaW9uIj5z
aWJsaW5nPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvbGF5ZXJzL3N0YWNraW5nLWNvbnRleHQtcGFpbnQtb3JkZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvc3RhY2tpbmctY29udGV4dC1wYWludC1vcmRl
ci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmI0OTYxLi4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9sYXllcnMvc3RhY2tpbmctY29udGV4dC1wYWlu
dC1vcmRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08IS0tCi0gICAgVGVzdCB0aGF0IHRoZSByZWdpb24gcGFpbnRzIG92ZXIgaXRzIHNpYmxp
bmcgYmVjYXVzZSByZWdpb25zIGNyZWF0ZSBzdGFja2luZyBjb250ZXh0cy4KLSAgICBUaGlzIHRl
c3QgcGFzc2VzIGlmIHRoZXJlIGlzIG5vIHJlZCB2aXNpYmxlLgotLS0+Ci08aHRtbD4KLTxoZWFk
PgotICAgIDxzdHlsZT4KLSAgICAgICAgI2NvbnRlbnQtZm9yLXJlZ2lvbiB7Ci0gICAgICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKLSAgICAgICAgICAgIC13ZWJraXQtZmxvdy1pbnRv
OiBmbG93OwotICAgICAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICAgICAgaGVpZ2h0OiAx
MDBweDsKLSAgICAgICAgfQotICAgICAgICAjcmVnaW9uIHsKLSAgICAgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyYXk7Ci0gICAgICAgICAgICAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsKLSAg
ICAgICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAg
ICAgIH0KLSAgICAgICAgI3NpYmxpbmctb2YtcmVnaW9uIHsKLSAgICAgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJlZDsKLSAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgICAgIGhl
aWdodDogMTAwcHg7Ci0gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTAwcHg7Ci0gICAgICAgIH0K
LSAgICA8L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci0gICAgPGRpdiBpZD0iY29udGVudC1mb3It
cmVnaW9uIj5yZWdpb248L2Rpdj4KLSAgICA8ZGl2IGlkPSJyZWdpb24iPjwvZGl2PgotICAgIDxk
aXYgaWQ9InNpYmxpbmctb2YtcmVnaW9uIj5zaWJsaW5nPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVnaW9uLXNpYmxpbmctcGFp
bnQtb3JkZXItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24t
c2libGluZy1wYWludC1vcmRlci1leHBlY3RlZC5odG1sCmluZGV4IGM5ZWY4ZmMuLjg2MzUyNTgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tc2libGluZy1wYWlu
dC1vcmRlci1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdp
b24tc2libGluZy1wYWludC1vcmRlci1leHBlY3RlZC5odG1sCkBAIC05LDEzICs5LDExIEBACiA8
aGVhZD4KICAgICA8c3R5bGU+CiAgICAgICAgICNyZWdpb24gewotICAgICAgICAgICAgcG9zaXRp
b246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyAvKiByZWdpb25zIGNyZWF0ZSBTdGFja2luZyBDb250
ZXh0cyAqLwogICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsKICAgICAgICAgICAg
IHdpZHRoOiAxMDBweDsKICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CiAgICAgICAgIH0KICAg
ICAgICAgI3NpYmxpbmctb2YtcmVnaW9uIHsKLSAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsgei1pbmRleDogMTsgLyogY3JlYXRlIFN0YWNraW5nIENvbnRleHRzICovCiAgICAgICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKICAg
ICAgICAgICAgIGhlaWdodDogMTAwcHg7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVnaW9uLXNpYmxpbmctcGFpbnQtb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9yZWdpb24tc2libGluZy1wYWludC1vcmRlci5odG1sCmluZGV4IDU1ZGEyMDQuLjg0
NWY1YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24tc2libGlu
Zy1wYWludC1vcmRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9yZWdpb24t
c2libGluZy1wYWludC1vcmRlci5odG1sCkBAIC0yNiw3ICsyNiw2IEBACiAgICAgICAgICAgICBo
ZWlnaHQ6IDEwMHB4OwogICAgICAgICB9CiAgICAgICAgICNzaWJsaW5nLW9mLXJlZ2lvbiB7Ci0g
ICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IC8qIGNyZWF0ZSBTdGFj
a2luZyBDb250ZXh0cyAqLwogICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAg
ICAgICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVzb3VyY2VzL2hlbHBlci5qcwppbmRleCA2Y2Y3ZDNm
Li40YzI5MGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVzb3VyY2Vz
L2hlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVzb3VyY2VzL2hlbHBl
ci5qcwpAQCAtMjAyLDQxICsyMDIsMyBAQCBmdW5jdGlvbiBjb21wYXJlQXJyYXlzKGN1cnJlbnQs
IGV4cGVjdGVkKSB7CiAgICAgfQogICAgIHRlc3RQYXNzZWQoIkFycmF5IFsiICArIGV4cGVjdGVk
LnRvU3RyaW5nKCkgKyAiXSBpcyBlcXVhbCB0byBbIiArIGN1cnJlbnQudG9TdHJpbmcoKSArICJd
Iik7CiB9Ci0KLWZ1bmN0aW9uIHNlbGVjdENvbnRlbnRCeVJhbmdlKGZyb21YLCBmcm9tWSwgdG9Y
LCB0b1kpIHsKLSAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhmcm9tWCwgZnJvbVkpOwotICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOwotCi0gICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odG9YLCB0b1kp
OwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gc2VsZWN0Q29udGVu
dEJ5SWRzKGZyb21JZCwgdG9JZCkgewotICAgIHZhciBmcm9tUmVjdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGZyb21JZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0gICAgdmFyIHRvUmVj
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRvSWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OwotCi0gICAgdmFyIGZyb21SZWN0VmVydGljYWxDZW50ZXIgPSBmcm9tUmVjdC50b3AgKyBmcm9t
UmVjdC5oZWlnaHQgLyAyOwotICAgIHZhciB0b1JlY3RWZXJ0aWNhbENlbnRlciA9IHRvUmVjdC50
b3AgKyB0b1JlY3QuaGVpZ2h0IC8gMjsKLQotICAgIHNlbGVjdENvbnRlbnRCeVJhbmdlKGZyb21S
ZWN0LmxlZnQsIGZyb21SZWN0VmVydGljYWxDZW50ZXIsIHRvUmVjdC5yaWdodCwgdG9SZWN0VmVy
dGljYWxDZW50ZXIpOwotfQotCi1mdW5jdGlvbiBzZWxlY3RCYXNlQW5kRXh0ZW50KGZyb21JZCwg
ZnJvbU9mZnNldCwgdG9JZCwgdG9PZmZzZXQpIHsKLSAgICB2YXIgZnJvbSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGZyb21JZCk7Ci0gICAgdmFyIHRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodG9JZCk7Ci0KLSAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwot
ICAgIHNlbGVjdGlvbi5zZXRCYXNlQW5kRXh0ZW50KGZyb20sIGZyb21PZmZzZXQsIHRvLCB0b09m
ZnNldCk7Ci19Ci0KLWZ1bmN0aW9uIG1vdXNlQ2xpY2socG9zaXRpb25YLCBwb3NpdGlvblkpIHsK
LSAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhwb3NpdGlvblgsIHBvc2l0aW9uWSk7Ci0gICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LWluLWVtcHR5LXJlZ2lv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQt
aW4tZW1wdHktcmVnaW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jMzZhODM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3NlbGVjdGluZy10ZXh0LWluLWVtcHR5LXJlZ2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw5IEBACitUZXN0IGZvciBbQ1NTIFJlZ2lvbnNdIFNlbGVjdGluZyB0ZXh0IGluc2lkZSBhbiBl
bXB0eSByZWdpb24gY2F1c2VzIHNlbGVjdGlvbiBvdXRzaWRlIHRoZSByZWdpb24gYXJlYS4KKwor
VGhlIGJsdWUgYm9yZGVyIGJveCBpcyBhIHJlZ2lvbiB3aXRob3V0IGZsb3dlZCBjb250ZW50Lgor
CitUbyB0ZXN0IG1hbnVhbGx5LCBtb3ZlIHRoZSBtb3VzZSBpbiB0aGUgdG9wIGxlZnQgY29ybmVy
IG9mIHRoZSByZWdpb24gYW5kIHRyeSB0byBzZWxlY3QgdGhlIHJlZ2lvbiBjb250ZW50LgorCitZ
b3Ugc2hvdWxkIG5vdCBzZWUgYW55IHNlbGVjdGVkIHRleHQ6IFBBU1MKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtaW4tZW1wdHktcmVnaW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW5nLXRleHQtaW4tZW1wdHkt
cmVnaW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYwZmMxYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4
dC1pbi1lbXB0eS1yZWdpb24uaHRtbApAQCAtMCwwICsxLDM1IEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5IHsg
Zm9udDogMjBweC8xIG1vbm9zcGFjZTsgbWFyZ2luOiAyMHB4OyB9CisgICAgICAgICAgICAjcmVn
aW9uIHsgLXdlYmtpdC1mbG93LWZyb206IHVuZGVmaW5lZDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4OyBib3JkZXI6IDEwcHggc29saWQgYmx1ZTsgfQorICAgICAgICA8L3N0eWxlPgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzc1MiI+IFtDU1MgUmVnaW9uc10g
U2VsZWN0aW5nIHRleHQgaW5zaWRlIGFuIGVtcHR5IHJlZ2lvbiBjYXVzZXMgc2VsZWN0aW9uIG91
dHNpZGUgdGhlIHJlZ2lvbiBhcmVhPC9hPi48L3A+CisgICAgICAgIDxwPlRoZSBibHVlIGJvcmRl
ciBib3ggaXMgYSByZWdpb24gd2l0aG91dCBmbG93ZWQgY29udGVudC48L3A+CisgICAgICAgIDxw
PlRvIHRlc3QgbWFudWFsbHksIG1vdmUgdGhlIG1vdXNlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIg
b2YgdGhlIHJlZ2lvbiBhbmQgdHJ5IHRvIHNlbGVjdCB0aGUgcmVnaW9uIGNvbnRlbnQuPC9wPgor
ICAgICAgICA8cD5Zb3Ugc2hvdWxkIG5vdCBzZWUgYW55IHNlbGVjdGVkIHRleHQ6IDxzcGFuIGlk
PSJyZXN1bHQiPjwvc3Bhbj48L3A+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lvbiI+PC9kaXY+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAg
ICAgICAgIHZhciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uIik7Cisg
ICAgICAgICAgICAgICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAx
MDsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9w
ICsgMTA7CisgICAgICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWCA9IHN0YXJ0UG9zaXRpb25Y
ICsgMTAwOworICAgICAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblkgPSBzdGFydFBvc2l0aW9u
WSArIDEwMDsKKworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5k
UG9zaXRpb25YLCBlbmRQb3NpdGlvblkpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lckhUTUwgPSAoc2VsZWN0aW9uLnRvU3RyaW5nKCkubGVuZ3RoID09IDApID8gIlBB
U1MiIDogIkZBSUwiOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0
aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLTItZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVu
dC1yZWdpb24tZmxvd3MtMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIyYWViNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLTItZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c3R5bGU+Citib2R5IHsgd2lkdGg6IDYwMHB4OyB9CisjZm9vdE5vdGUgeyBmb250LXNp
emU6IDEzcHg7IH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2VsZWN0VGV4dCgpCit7
CisgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgdmFyIHN0YXJ0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iik7CisgIHZhciBlbmQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZW5kIik7CisKKyAgc2VsZWN0aW9uLnNldEJhc2VBbmRFeHRlbnQo
c3RhcnQsIDAsIGVuZCwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
c2VsZWN0VGV4dCgpIj4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorICAgIDxoMSBzdHlsZT0ibWFyZ2lu
LXRvcDogMHB4Ij5TZWxlY3RpbmcgdGV4dCB0aHJvdWdoIGRpZmZlcmVudCBDU1MtUmVnaW9uIGZs
b3dzPC9oMT4KKyAgICA8ZGl2PgorICAgIFRoaXMgdGV4dCBjb250YWlucyBhIGZvb3Rub3RlIGFz
IGEgbmVzdGVkIHJlZ2lvbiB3aGF0IGlzIGRpcGxheWVkIDxzcGFuIGlkPSJzdGFydCI+YmVsb3c8
c3Bhbj4gdGhlIGFydGljbGUuICgxKSBJZiB5b3Ugc3RhcnQgc2VsZWN0aW5nCisgICAgICAgIHRl
eHQgZnJvbSB0aGlzIGFydGljbGUgdW50aWwgc29tZXdoZXJlIGluIHRoZSBmb290bm90ZSBhbmQg
dGhlbiBjbGljayBzb21ld2hlcmUsIHRoZSBzZWxlY3Rpb24gc2hvdWxkIGJlIGNsZWFyZWQuCisg
ICAgPC9kaXY+CisgICAgPGRpdiBpZD0iZm9vdE5vdGUiPigxKSBUaGlzIGlzIGEgZm9vdG5vdGUu
IEZvb3Rub3RlcyBjYW4gYmUgcXVpdGUgbG9uZyBhbmQgZ28gb3ZlciBzZXZlcmFsIGxpbmVzLiBU
aGlzIGZvb3Rub3RlCisgICAgaXMgbmVzdGVkIGluc2lkZSB0aGUgdGV4dCA8c3BhbiBpZD0iZW5k
Ij5hYm92ZTxzcGFuPiBhbmQgZGlzcGxheWVkIGhlcmUgd2l0aCB0aGUgaGVscCBvZiBjc3MtcmVn
aW9ucy48L3NwYW4+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVu
dC1yZWdpb24tZmxvd3MtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlu
Zy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy0yLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4M2UwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdp
b24tZmxvd3MtMi5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KK2JvZHkgeyB3aWR0aDogNjAwcHg7IH0KKworI2Zvb3ROb3RlIHsK
KyAgICAtd2Via2l0LWZsb3ctaW50bzogZm9vdE5vdGU7CisgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgZm9udC1zaXplOiAxM3B4OworfQorCisjZm9vdE5vdGVSZWdpb24geyAtd2Via2l0LWZsb3ct
ZnJvbTogZm9vdE5vdGU7IH0KKyNjb250ZW50IHsgLXdlYmtpdC1mbG93LWludG86IGNvbnRlbnQ7
IH0KKyNyZWdpb24geyAtd2Via2l0LWZsb3ctZnJvbTogY29udGVudDsgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorCis8ZGl2IGlkPSJyZWdpb24iPjwvZGl2PgorPGRpdiBpZD0iZm9vdE5v
dGVSZWdpb24iPjwvZGl2PgorPGRpdiBpZD0iY29udGVudCI+CisgICAgPGgxIHN0eWxlPSJtYXJn
aW4tdG9wOiAwcHgiPlNlbGVjdGluZyB0ZXh0IHRocm91Z2ggZGlmZmVyZW50IENTUy1SZWdpb24g
Zmxvd3M8L2gxPgorICAgIDxkaXYgaWQ9ImNvbnRlbnRUZXh0Ij4KKyAgICAgICAgVGhpcyB0ZXh0
IGNvbnRhaW5zIGEgZm9vdG5vdGUgYXMgYSBuZXN0ZWQgcmVnaW9uIHdoYXQgaXMgZGlwbGF5ZWQg
PHNwYW4gaWQ9InN0YXJ0Ij5iZWxvdzwvc3Bhbj4gdGhlIGFydGljbGUuICgxKSA8c3BhbiBpZD0i
Zm9vdE5vdGUiPgorICAgICAgICA8c3Bhbj48c3Bhbj48L3NwYW4+KDEpIFRoaXMgaXMgYSBmb290
bm90ZS4gRm9vdG5vdGVzIGNhbiBiZSBxdWl0ZSBsb25nIGFuZCBnbyBvdmVyIHNldmVyYWwgbGlu
ZXMuIFRoaXMgZm9vdG5vdGUKKyAgICAgICAgaXMgbmVzdGVkIGluc2lkZSB0aGUgdGV4dCA8c3Bh
biBpZD0iZW5kIj5hYm92ZTwvc3Bhbj4gYW5kIGRpc3BsYXllZCBoZXJlIHdpdGggdGhlIGhlbHAg
b2YgY3NzLXJlZ2lvbnMuPC9zcGFuPjwvc3Bhbj4gSWYgeW91IHN0YXJ0IHNlbGVjdGluZworICAg
ICAgICB0ZXh0IGZyb20gdGhpcyBhcnRpY2xlIHVudGlsIHNvbWV3aGVyZSBpbiB0aGUgZm9vdG5v
dGUgYW5kIHRoZW4gY2xpY2sgc29tZXdoZXJlLCB0aGUgc2VsZWN0aW9uIHNob3VsZCBiZSBjbGVh
cmVkLgorICAgIDwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAvLyBXZSBhcmUgcG9zaXRpb25pbmcgdGhlIG1vdXNlIHRvIHRoZSBjZW50ZXIg
b2YgdGhlIGNvbnRlbnRUZXh0IGFuZCBzdGFydCBob2xkaW5nIHRoZSBtb3VzZSBkb3duCisgICAg
dmFyIHN0YXJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0Iik7CisgICAgdmFyIHhT
dGFydFBvc2l0aW9uID0gc3RhcnQub2Zmc2V0TGVmdCArIDA7CisgICAgdmFyIHlTdGFydFBvc2l0
aW9uID0gc3RhcnQub2Zmc2V0VG9wICsgc3RhcnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyh4U3RhcnRQb3NpdGlvbiwgeVN0YXJ0UG9zaXRpb24pOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworCisgICAgLy8gV2UgYXJlIHBvc2l0aW9uaW5nIHRo
ZSBtb3VzZSB0byB0aGUgY2VudGVyIG9mIHRoZSBmb290Tm90ZSAod2hhdCBpcyBhIGRpZmZlcmVu
dCByZWdpb24gZmxvdykgYW5kIHJlbGVhc2UgdGhlIGJ1dHRvbgorICAgIHZhciBlbmQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZW5kIik7CisgICAgdmFyIHhFbmRQb3NpdGlvbiA9IGVuZC5v
ZmZzZXRMZWZ0ICsgMDsKKyAgICB2YXIgeUVuZFBvc2l0aW9uID0gZW5kLm9mZnNldFRvcCArIGVu
ZC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHhFbmRQb3Np
dGlvbiwgeUVuZFBvc2l0aW9uKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3RpbmctdGV4dC10aHJvdWdo
LWRpZmZlcmVudC1yZWdpb24tZmxvd3MtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43ZWVkZjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93
cy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KK2JvZHkgeyB3aWR0aDogNjAwcHg7IH0KKyNmb290Tm90ZSB7IGZv
bnQtc2l6ZTogMTNweDsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iY29u
dGVudCI+CisgICAgPGgxIHN0eWxlPSJtYXJnaW4tdG9wOiAwcHgiPlNlbGVjdGluZyB0ZXh0IHRo
cm91Z2ggZGlmZmVyZW50IENTUy1SZWdpb24gZmxvd3M8L2gxPgorICAgIDxkaXY+CisgICAgVGhp
cyB0ZXh0IGNvbnRhaW5zIGEgZm9vdG5vdGUgYXMgYSBuZXN0ZWQgcmVnaW9uIHdoYXQgaXMgZGlw
bGF5ZWQgYmVsb3cgdGhlIGFydGljbGUuICgxKSBJZiB5b3Ugc3RhcnQgc2VsZWN0aW5nCisgICAg
ICAgIHRleHQgZnJvbSB0aGlzIGFydGljbGUgdW50aWwgc29tZXdoZXJlIGluIHRoZSBmb290bm90
ZSBhbmQgdGhlbiBjbGljayBzb21ld2hlcmUsIHRoZSBzZWxlY3Rpb24gc2hvdWxkIGJlIGNsZWFy
ZWQuCisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iZm9vdE5vdGUiPigxKSBUaGlzIGlzIGEgZm9v
dG5vdGUuIEZvb3Rub3RlcyBjYW4gYmUgcXVpdGUgbG9uZyBhbmQgZ28gb3ZlciBzZXZlcmFsIGxp
bmVzLiBUaGlzIGZvb3Rub3RlCisgICAgaXMgbmVzdGVkIGluc2lkZSB0aGUgdGV4dCBhYm92ZSBh
bmQgZGlzcGxheWVkIGhlcmUgd2l0aCB0aGUgaGVscCBvZiBjc3MtcmVnaW9ucy48L2Rpdj4KKzwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50
LXJlZ2lvbi1mbG93cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1
ZjlhMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0
aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZsb3dzLmh0bWwKQEAgLTAsMCArMSw1
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorYm9keSB7IHdp
ZHRoOiA2MDBweDsgfQorCisjZm9vdE5vdGUgeworICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmb290
Tm90ZTsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBmb250LXNpemU6IDEzcHg7Cit9CisKKyNm
b290Tm90ZVJlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9tOiBmb290Tm90ZTsgfQorI2NvbnRlbnQg
eyAtd2Via2l0LWZsb3ctaW50bzogY29udGVudDsgfQorI3JlZ2lvbiB7IC13ZWJraXQtZmxvdy1m
cm9tOiBjb250ZW50OyB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9InJl
Z2lvbiI+PC9kaXY+Cis8ZGl2IGlkPSJmb290Tm90ZVJlZ2lvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b250ZW50Ij4KKyAgICA8aDEgc3R5bGU9Im1hcmdpbi10b3A6IDBweCI+U2VsZWN0aW5nIHRleHQg
dGhyb3VnaCBkaWZmZXJlbnQgQ1NTLVJlZ2lvbiBmbG93czwvaDE+CisgICAgPGRpdiBpZD0iY29u
dGVudFRleHQiPgorICAgICAgICBUaGlzIHRleHQgY29udGFpbnMgYSBmb290bm90ZSBhcyBhIG5l
c3RlZCByZWdpb24gd2hhdCBpcyBkaXBsYXllZCBiZWxvdyB0aGUgYXJ0aWNsZS4gKDEpIDxzcGFu
IGlkPSJmb290Tm90ZSI+CisgICAgICAgIDxzcGFuPjxzcGFuPjwvc3Bhbj4oMSkgVGhpcyBpcyBh
IGZvb3Rub3RlLiBGb290bm90ZXMgY2FuIGJlIHF1aXRlIGxvbmcgYW5kIGdvIG92ZXIgc2V2ZXJh
bCBsaW5lcy4gVGhpcyBmb290bm90ZQorICAgICAgICBpcyBuZXN0ZWQgaW5zaWRlIHRoZSB0ZXh0
IGFib3ZlIGFuZCBkaXNwbGF5ZWQgaGVyZSB3aXRoIHRoZSBoZWxwIG9mIGNzcy1yZWdpb25zLjwv
c3Bhbj48L3NwYW4+IElmIHlvdSBzdGFydCBzZWxlY3RpbmcKKyAgICAgICAgdGV4dCBmcm9tIHRo
aXMgYXJ0aWNsZSB1bnRpbCBzb21ld2hlcmUgaW4gdGhlIGZvb3Rub3RlIGFuZCB0aGVuIGNsaWNr
IHNvbWV3aGVyZSwgdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgY2xlYXJlZC4KKyAgICA8L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgLy8gV2Ug
YXJlIHBvc2l0aW9uaW5nIHRoZSBtb3VzZSB0byB0aGUgY2VudGVyIG9mIHRoZSBjb250ZW50VGV4
dCBhbmQgc3RhcnQgaG9sZGluZyB0aGUgbW91c2UgZG93bgorICAgIHZhciBzdGFydCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50VGV4dCIpOworICAgIHZhciB4U3RhcnRQb3NpdGlv
biA9IHN0YXJ0Lm9mZnNldExlZnQgKyAxMDsKKyAgICB2YXIgeVN0YXJ0UG9zaXRpb24gPSBzdGFy
dC5vZmZzZXRUb3AgKyBzdGFydC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHhTdGFydFBvc2l0aW9uLCB5U3RhcnRQb3NpdGlvbik7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisKKyAgICAvLyBXZSBhcmUgcG9zb3Rpb25pbmcgdGhlIG1vdXNlIHRv
IHRoZSBjZW50ZXIgb2YgdGhlIGZvb3ROb3RlICh3aGF0IGlzIGEgZGlmZmVyZW50IHJlZ2lvbiBm
bG93KSBhbmQgcmVsZWFzZSB0aGUgYnV0dG9uCisgICAgdmFyIGVuZCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJmb290Tm90ZVJlZ2lvbiIpOworICAgIHZhciB4RW5kUG9zaXRpb24gPSBlbmQu
b2Zmc2V0TGVmdCArIGVuZC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHlFbmRQb3NpdGlvbiA9
IGVuZC5vZmZzZXRUb3AgKyBlbmQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4RW5kUG9zaXRpb24sIHlFbmRQb3NpdGlvbik7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgLy8gV2UgYXJlIG1vdmluZyB0aGUgbW91c2Ugc29tZXdoZXJlIGVs
c2UgYW5kIGNsaWNrIHRvIGNsZWFyIHRoZSBzZWxlY3Rpb24KKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbygxLCAxKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24tZGlyZWN0aW9uLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWRpcmVjdGlvbi1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzUwODkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWRpcmVj
dGlvbi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzxodG1sPgorPGhlYWQ+CisgICAg
PHN0eWxlPgorICAgICAgICAjcmVnaW9uIHsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgICAgICB0b3A6IDEwMHB4OworICAgICAgICB9CisKKyAgICAgICAgI291dHNpZGUg
eworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsK
KyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHRvcDogMHB4Owor
ICAgICAgICB9CisKKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBtYXJnaW4tdG9wOiAwOwor
ICAgICAgICB9CisKKyAgICAgICAgI2Rlc2NyaXB0aW9uIHsKKyAgICAgICAgICAgIHdpZHRoOiA2
MDBweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHRvcDog
MjAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHNlbGVjdFRleHQoKSB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMDAsIDEwKTsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgMTEwKTsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2VsZWN0VGV4dCgpOyI+CisgICAgPGRpdiBpZD0i
cmVnaW9uIj5pbnNpZGUgcmVnaW9uIGluc2lkZSByZWdpb24gaW5zaWRlIHJlZ2lvbiBpbnNpZGUg
cmVnaW9uPC9kaXY+CisgICAgPGRpdiBpZD0ib3V0c2lkZSI+b3V0c2lkZSByZWdpb24gb3V0c2lk
ZSByZWdpb24gb3V0c2lkZSByZWdpb24gb3V0c2lkZSByZWdpb248L2Rpdj4KKyAgICA8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+CisgICAgICAgIDxoMT48YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNTAxIj5CdWcgIzEyMTUwMSAtIFtDU1MgUmVnaW9uc10g
TGF5b3V0IFRlc3QgZm9yIHNlbGVjdGlvbiBkaXJlY3Rpb248L2E+PC9oMT4KKyAgICAgICAgPHA+
U2VsZWN0aW9uIGlzIGJhc2VkIGluIERPTSB0cmVlLCBzbyBpZiB5b3Ugc2VsZWN0IHRleHQgZnJv
bSAib3V0c2lkZSByZWdpb24iIHRvICJpbnNpZGUgcmVnaW9uIiB0aGUgaGlnaGxpZ2h0ZWQgYXJl
YSBpcyBleGFjdGx5IHRoZSBvcHBvc2l0ZSB0byB3aGF0IHRoZSB1c2VyIGlzIGFjdHVhbGx5IHNl
bGVjdGluZy48L3A+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWRpcmVjdGlvbi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1kaXJlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODViOGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1kaXJlY3Rpb24uaHRtbApAQCAtMCwwICsxLDQ4
IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgI3NvdXJjZSB7CisgICAg
ICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogY29udGVudDsKKyAgICAgICAgfQorCisgICAgICAg
ICNyZWdpb24geworICAgICAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGNvbnRlbnQ7CisgICAg
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICB9CisKKyAgICAgICAgI291dHNpZGUgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgfQorCisgICAgICAgIGJvZHkgeworICAg
ICAgICAgICAgbWFyZ2luLXRvcDogMDsKKyAgICAgICAgfQorCisgICAgICAgICNkZXNjcmlwdGlv
biB7CisgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdFRleHQoKSB7CisgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygxMDAsIDEwKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwMCwgMTEw
KTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2VsZWN0
VGV4dCgpOyI+CisgICAgPGRpdiBpZD0ic291cmNlIj5pbnNpZGUgcmVnaW9uIGluc2lkZSByZWdp
b24gaW5zaWRlIHJlZ2lvbiBpbnNpZGUgcmVnaW9uPC9kaXY+CisgICAgPGRpdiBpZD0ib3V0c2lk
ZSI+b3V0c2lkZSByZWdpb24gb3V0c2lkZSByZWdpb24gb3V0c2lkZSByZWdpb24gb3V0c2lkZSBy
ZWdpb248L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj4KKyAgICAgICAgPGgxPjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE1MDEiPkJ1ZyAjMTIxNTAxIC0gW0NTUyBSZWdpb25zXSBMYXlv
dXQgVGVzdCBmb3Igc2VsZWN0aW9uIGRpcmVjdGlvbjwvYT48L2gxPgorICAgICAgICA8cD5TZWxl
Y3Rpb24gaXMgYmFzZWQgaW4gRE9NIHRyZWUsIHNvIGlmIHlvdSBzZWxlY3QgdGV4dCBmcm9tICJv
dXRzaWRlIHJlZ2lvbiIgdG8gImluc2lkZSByZWdpb24iIHRoZSBoaWdobGlnaHRlZCBhcmVhIGlz
IGV4YWN0bHkgdGhlIG9wcG9zaXRlIHRvIHdoYXQgdGhlIHVzZXIgaXMgYWN0dWFsbHkgc2VsZWN0
aW5nLjwvcD4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtaW4tZW1wdHktcmVn
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2Vs
ZWN0aW5nLXRleHQtaW4tZW1wdHktcmVnaW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzM2YTgzNS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LWluLWVtcHR5LXJlZ2lvbi1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRlc3QgZm9yIFtDU1MgUmVnaW9uc10g
U2VsZWN0aW5nIHRleHQgaW5zaWRlIGFuIGVtcHR5IHJlZ2lvbiBjYXVzZXMgc2VsZWN0aW9uIG91
dHNpZGUgdGhlIHJlZ2lvbiBhcmVhLgotCi1UaGUgYmx1ZSBib3JkZXIgYm94IGlzIGEgcmVnaW9u
IHdpdGhvdXQgZmxvd2VkIGNvbnRlbnQuCi0KLVRvIHRlc3QgbWFudWFsbHksIG1vdmUgdGhlIG1v
dXNlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHJlZ2lvbiBhbmQgdHJ5IHRvIHNlbGVj
dCB0aGUgcmVnaW9uIGNvbnRlbnQuCi0KLVlvdSBzaG91bGQgbm90IHNlZSBhbnkgc2VsZWN0ZWQg
dGV4dDogUEFTUwotCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxl
Y3Rpb24vc2VsZWN0aW5nLXRleHQtaW4tZW1wdHktcmVnaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LWluLWVtcHR5LXJlZ2lvbi5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzViNDdiLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtaW4tZW1wdHkt
cmVnaW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08IWRvY3R5cGUgaHRt
bD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2hlbHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzdHlsZT4KLSAgICAgICAgICAgIGJvZHkg
eyBmb250OiAyMHB4LzEgbW9ub3NwYWNlOyBtYXJnaW46IDIwcHg7IH0KLSAgICAgICAgICAgICNy
ZWdpb24geyAtd2Via2l0LWZsb3ctZnJvbTogdW5kZWZpbmVkOyB3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7IGJvcmRlcjogMTBweCBzb2xpZCBibHVlOyB9Ci0gICAgICAgIDwvc3R5bGU+Ci0g
ICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8cD5UZXN0IGZvciA8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NzUyIj4gW0NTUyBSZWdpb25z
XSBTZWxlY3RpbmcgdGV4dCBpbnNpZGUgYW4gZW1wdHkgcmVnaW9uIGNhdXNlcyBzZWxlY3Rpb24g
b3V0c2lkZSB0aGUgcmVnaW9uIGFyZWE8L2E+LjwvcD4KLSAgICAgICAgPHA+VGhlIGJsdWUgYm9y
ZGVyIGJveCBpcyBhIHJlZ2lvbiB3aXRob3V0IGZsb3dlZCBjb250ZW50LjwvcD4KLSAgICAgICAg
PHA+VG8gdGVzdCBtYW51YWxseSwgbW92ZSB0aGUgbW91c2UgaW4gdGhlIHRvcCBsZWZ0IGNvcm5l
ciBvZiB0aGUgcmVnaW9uIGFuZCB0cnkgdG8gc2VsZWN0IHRoZSByZWdpb24gY29udGVudC48L3A+
Ci0gICAgICAgIDxwPllvdSBzaG91bGQgbm90IHNlZSBhbnkgc2VsZWN0ZWQgdGV4dDogPHNwYW4g
aWQ9InJlc3VsdCI+PC9zcGFuPjwvcD4KLSAgICAgICAgPGRpdiBpZD0icmVnaW9uIj48L2Rpdj4K
LSAgICAgICAgPHNjcmlwdD4KLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
ICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotCi0gICAgICAg
ICAgICAgICAgdmFyIHJlZ2lvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24iKTsK
LSAgICAgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblggPSByZWdpb24ub2Zmc2V0TGVmdCAr
IDEwOwotICAgICAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRU
b3AgKyAxMDsKLSAgICAgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25YID0gc3RhcnRQb3NpdGlv
blggKyAxMDA7Ci0gICAgICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRp
b25ZICsgMTAwOwotCi0gICAgICAgICAgICAgICAgc2VsZWN0Q29udGVudEJ5UmFuZ2Uoc3RhcnRQ
b3NpdGlvblgsIHN0YXJ0UG9zaXRpb25ZLCBlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7Ci0K
LSAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJI
VE1MID0gKHNlbGVjdGlvbi50b1N0cmluZygpLmxlbmd0aCA9PSAwKSA/ICJQQVNTIiA6ICJGQUlM
IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3Rp
bmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtMi1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC10aHJvdWdo
LWRpZmZlcmVudC1yZWdpb24tZmxvd3MtMi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3MDBhYzI0Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZs
b3dzLTItZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaGVs
cGVyLmpzIj48L3NjcmlwdD4KLTxzdHlsZT4KLWJvZHkgeyB3aWR0aDogNjAwcHg7IH0KLSNmb290
Tm90ZSB7IGZvbnQtc2l6ZTogMTNweDsgfQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0ic2VsZWN0QmFzZUFuZEV4dGVudCgnc3RhcnQnLCAwLCAnZW5kJywgMSkiPgotPGRpdiBpZD0i
Y29udGVudCI+Ci0gICAgPGgxIHN0eWxlPSJtYXJnaW4tdG9wOiAwcHgiPlNlbGVjdGluZyB0ZXh0
IHRocm91Z2ggZGlmZmVyZW50IENTUy1SZWdpb24gZmxvd3M8L2gxPgotICAgIDxkaXY+Ci0gICAg
VGhpcyB0ZXh0IGNvbnRhaW5zIGEgZm9vdG5vdGUgYXMgYSBuZXN0ZWQgcmVnaW9uIHdoYXQgaXMg
ZGlwbGF5ZWQgPHNwYW4gaWQ9InN0YXJ0Ij5iZWxvdzxzcGFuPiB0aGUgYXJ0aWNsZS4gKDEpIElm
IHlvdSBzdGFydCBzZWxlY3RpbmcKLSAgICAgICAgdGV4dCBmcm9tIHRoaXMgYXJ0aWNsZSB1bnRp
bCBzb21ld2hlcmUgaW4gdGhlIGZvb3Rub3RlIGFuZCB0aGVuIGNsaWNrIHNvbWV3aGVyZSwgdGhl
IHNlbGVjdGlvbiBzaG91bGQgYmUgY2xlYXJlZC4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGlkPSJm
b290Tm90ZSI+KDEpIFRoaXMgaXMgYSBmb290bm90ZS4gRm9vdG5vdGVzIGNhbiBiZSBxdWl0ZSBs
b25nIGFuZCBnbyBvdmVyIHNldmVyYWwgbGluZXMuIFRoaXMgZm9vdG5vdGUKLSAgICBpcyBuZXN0
ZWQgaW5zaWRlIHRoZSB0ZXh0IDxzcGFuIGlkPSJlbmQiPmFib3ZlPHNwYW4+IGFuZCBkaXNwbGF5
ZWQgaGVyZSB3aXRoIHRoZSBoZWxwIG9mIGNzcy1yZWdpb25zLjwvc3Bhbj48L2Rpdj4KLTwvZGl2
PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3Mt
Mi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4
dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MtMi5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5YjA4M2IyLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9zZWxlY3Rpb24vc2VsZWN0aW5nLXRleHQtdGhyb3VnaC1kaWZmZXJlbnQtcmVnaW9uLWZs
b3dzLTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1s
PgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvaGVscGVyLmpzIj48
L3NjcmlwdD4KLTxzdHlsZT4KLWJvZHkgeyB3aWR0aDogNjAwcHg7IH0KLQotI2Zvb3ROb3RlIHsK
LSAgICAtd2Via2l0LWZsb3ctaW50bzogZm9vdE5vdGU7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0g
ICAgZm9udC1zaXplOiAxM3B4OwotfQotCi0jZm9vdE5vdGVSZWdpb24geyAtd2Via2l0LWZsb3ct
ZnJvbTogZm9vdE5vdGU7IH0KLSNjb250ZW50IHsgLXdlYmtpdC1mbG93LWludG86IGNvbnRlbnQ7
IH0KLSNyZWdpb24geyAtd2Via2l0LWZsb3ctZnJvbTogY29udGVudDsgfQotPC9zdHlsZT4KLTwv
aGVhZD4KLTxib2R5PgotCi08ZGl2IGlkPSJyZWdpb24iPjwvZGl2PgotPGRpdiBpZD0iZm9vdE5v
dGVSZWdpb24iPjwvZGl2PgotPGRpdiBpZD0iY29udGVudCI+Ci0gICAgPGgxIHN0eWxlPSJtYXJn
aW4tdG9wOiAwcHgiPlNlbGVjdGluZyB0ZXh0IHRocm91Z2ggZGlmZmVyZW50IENTUy1SZWdpb24g
Zmxvd3M8L2gxPgotICAgIDxkaXYgaWQ9ImNvbnRlbnRUZXh0Ij4KLSAgICAgICAgVGhpcyB0ZXh0
IGNvbnRhaW5zIGEgZm9vdG5vdGUgYXMgYSBuZXN0ZWQgcmVnaW9uIHdoYXQgaXMgZGlwbGF5ZWQg
PHNwYW4gaWQ9InN0YXJ0Ij5iZWxvdzwvc3Bhbj4gdGhlIGFydGljbGUuICgxKSA8c3BhbiBpZD0i
Zm9vdE5vdGUiPgotICAgICAgICA8c3Bhbj48c3Bhbj48L3NwYW4+KDEpIFRoaXMgaXMgYSBmb290
bm90ZS4gRm9vdG5vdGVzIGNhbiBiZSBxdWl0ZSBsb25nIGFuZCBnbyBvdmVyIHNldmVyYWwgbGlu
ZXMuIFRoaXMgZm9vdG5vdGUKLSAgICAgICAgaXMgbmVzdGVkIGluc2lkZSB0aGUgdGV4dCA8c3Bh
biBpZD0iZW5kIj5hYm92ZTwvc3Bhbj4gYW5kIGRpc3BsYXllZCBoZXJlIHdpdGggdGhlIGhlbHAg
b2YgY3NzLXJlZ2lvbnMuPC9zcGFuPjwvc3Bhbj4gSWYgeW91IHN0YXJ0IHNlbGVjdGluZwotICAg
ICAgICB0ZXh0IGZyb20gdGhpcyBhcnRpY2xlIHVudGlsIHNvbWV3aGVyZSBpbiB0aGUgZm9vdG5v
dGUgYW5kIHRoZW4gY2xpY2sgc29tZXdoZXJlLCB0aGUgc2VsZWN0aW9uIHNob3VsZCBiZSBjbGVh
cmVkLgotICAgIDwvZGl2PgotPC9kaXY+Ci0KLTxzY3JpcHQ+Ci1zZWxlY3RDb250ZW50QnlJZHMo
InN0YXJ0IiwgImVuZCIpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXRocm91
Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4dC10aHJvdWdoLWRpZmZlcmVudC1yZWdp
b24tZmxvd3MtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Vl
ZGY3Yy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3Nl
bGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93cy1leHBlY3RlZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHN0eWxlPgotYm9keSB7IHdpZHRoOiA2MDBweDsgfQotI2Zvb3ROb3RlIHsgZm9u
dC1zaXplOiAxM3B4OyB9Ci08L3N0eWxlPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJjb250
ZW50Ij4KLSAgICA8aDEgc3R5bGU9Im1hcmdpbi10b3A6IDBweCI+U2VsZWN0aW5nIHRleHQgdGhy
b3VnaCBkaWZmZXJlbnQgQ1NTLVJlZ2lvbiBmbG93czwvaDE+Ci0gICAgPGRpdj4KLSAgICBUaGlz
IHRleHQgY29udGFpbnMgYSBmb290bm90ZSBhcyBhIG5lc3RlZCByZWdpb24gd2hhdCBpcyBkaXBs
YXllZCBiZWxvdyB0aGUgYXJ0aWNsZS4gKDEpIElmIHlvdSBzdGFydCBzZWxlY3RpbmcKLSAgICAg
ICAgdGV4dCBmcm9tIHRoaXMgYXJ0aWNsZSB1bnRpbCBzb21ld2hlcmUgaW4gdGhlIGZvb3Rub3Rl
IGFuZCB0aGVuIGNsaWNrIHNvbWV3aGVyZSwgdGhlIHNlbGVjdGlvbiBzaG91bGQgYmUgY2xlYXJl
ZC4KLSAgICA8L2Rpdj4KLSAgICA8ZGl2IGlkPSJmb290Tm90ZSI+KDEpIFRoaXMgaXMgYSBmb290
bm90ZS4gRm9vdG5vdGVzIGNhbiBiZSBxdWl0ZSBsb25nIGFuZCBnbyBvdmVyIHNldmVyYWwgbGlu
ZXMuIFRoaXMgZm9vdG5vdGUKLSAgICBpcyBuZXN0ZWQgaW5zaWRlIHRoZSB0ZXh0IGFib3ZlIGFu
ZCBkaXNwbGF5ZWQgaGVyZSB3aXRoIHRoZSBoZWxwIG9mIGNzcy1yZWdpb25zLjwvZGl2PgotPC9k
aXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3RpbmctdGV4
dC10aHJvdWdoLWRpZmZlcmVudC1yZWdpb24tZmxvd3MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWRiNjI0ZC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvc2VsZWN0aW9uL3NlbGVjdGluZy10ZXh0LXRocm91Z2gtZGlmZmVyZW50LXJlZ2lvbi1mbG93
cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9oZWxwZXIuanMiPjwvc2Ny
aXB0PgotPHN0eWxlPgotYm9keSB7IHdpZHRoOiA2MDBweDsgfQotCi0jZm9vdE5vdGUgewotICAg
IC13ZWJraXQtZmxvdy1pbnRvOiBmb290Tm90ZTsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBm
b250LXNpemU6IDEzcHg7Ci19Ci0KLSNmb290Tm90ZVJlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9t
OiBmb290Tm90ZTsgfQotI2NvbnRlbnQgeyAtd2Via2l0LWZsb3ctaW50bzogY29udGVudDsgfQot
I3JlZ2lvbiB7IC13ZWJraXQtZmxvdy1mcm9tOiBjb250ZW50OyB9Ci08L3N0eWxlPgotPC9oZWFk
PgotPGJvZHk+Ci0KLTxkaXYgaWQ9InJlZ2lvbiI+PC9kaXY+Ci08ZGl2IGlkPSJmb290Tm90ZVJl
Z2lvbiI+PC9kaXY+Ci08ZGl2IGlkPSJjb250ZW50Ij4KLSAgICA8aDEgc3R5bGU9Im1hcmdpbi10
b3A6IDBweCI+U2VsZWN0aW5nIHRleHQgdGhyb3VnaCBkaWZmZXJlbnQgQ1NTLVJlZ2lvbiBmbG93
czwvaDE+Ci0gICAgPGRpdiBpZD0iY29udGVudFRleHQiPgotICAgICAgICBUaGlzIHRleHQgY29u
dGFpbnMgYSBmb290bm90ZSBhcyBhIG5lc3RlZCByZWdpb24gd2hhdCBpcyBkaXBsYXllZCBiZWxv
dyB0aGUgYXJ0aWNsZS4gKDEpIDxzcGFuIGlkPSJmb290Tm90ZSI+Ci0gICAgICAgIDxzcGFuPjxz
cGFuPjwvc3Bhbj4oMSkgVGhpcyBpcyBhIGZvb3Rub3RlLiBGb290bm90ZXMgY2FuIGJlIHF1aXRl
IGxvbmcgYW5kIGdvIG92ZXIgc2V2ZXJhbCBsaW5lcy4gVGhpcyBmb290bm90ZQotICAgICAgICBp
cyBuZXN0ZWQgaW5zaWRlIHRoZSB0ZXh0IGFib3ZlIGFuZCBkaXNwbGF5ZWQgaGVyZSB3aXRoIHRo
ZSBoZWxwIG9mIGNzcy1yZWdpb25zLjwvc3Bhbj48L3NwYW4+IElmIHlvdSBzdGFydCBzZWxlY3Rp
bmcKLSAgICAgICAgdGV4dCBmcm9tIHRoaXMgYXJ0aWNsZSB1bnRpbCBzb21ld2hlcmUgaW4gdGhl
IGZvb3Rub3RlIGFuZCB0aGVuIGNsaWNrIHNvbWV3aGVyZSwgdGhlIHNlbGVjdGlvbiBzaG91bGQg
YmUgY2xlYXJlZC4KLSAgICA8L2Rpdj4KLTwvZGl2PgotCi08c2NyaXB0PgotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7Ci0gICAgLy8gV2UgYXJlIHBvc2l0aW9uaW5nIHRoZSBtb3VzZSB0byB0aGUg
Y2VudGVyIG9mIHRoZSBjb250ZW50VGV4dCBhbmQgc3RhcnQgaG9sZGluZyB0aGUgbW91c2UgZG93
bgotICAgIHZhciBzdGFydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50VGV4dCIp
OwotICAgIHZhciB4U3RhcnRQb3NpdGlvbiA9IHN0YXJ0Lm9mZnNldExlZnQgKyAxMDsKLSAgICB2
YXIgeVN0YXJ0UG9zaXRpb24gPSBzdGFydC5vZmZzZXRUb3AgKyBzdGFydC5vZmZzZXRIZWlnaHQg
LyAyOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHhTdGFydFBvc2l0aW9uLCB5U3RhcnRQ
b3NpdGlvbik7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7Ci0KLSAgICAvLyBXZSBhcmUg
cG9zb3Rpb25pbmcgdGhlIG1vdXNlIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGZvb3ROb3RlICh3aGF0
IGlzIGEgZGlmZmVyZW50IHJlZ2lvbiBmbG93KSBhbmQgcmVsZWFzZSB0aGUgYnV0dG9uCi0gICAg
dmFyIGVuZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb290Tm90ZVJlZ2lvbiIpOwotICAg
IHZhciB4RW5kUG9zaXRpb24gPSBlbmQub2Zmc2V0TGVmdCArIGVuZC5vZmZzZXRXaWR0aCAvIDI7
Ci0gICAgdmFyIHlFbmRQb3NpdGlvbiA9IGVuZC5vZmZzZXRUb3AgKyBlbmQub2Zmc2V0SGVpZ2h0
IC8gMjsKLSAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4RW5kUG9zaXRpb24sIHlFbmRQb3Np
dGlvbik7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwotCi0gICAgLy8gV2UgYXJlIG1vdmlu
ZyB0aGUgbW91c2Ugc29tZXdoZXJlIGVsc2UgYW5kIGNsaWNrIHRvIGNsZWFyIHRoZSBzZWxlY3Rp
b24KLSAgICBtb3VzZUNsaWNrKDEsIDEpOwotfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGlv
bi1kaXJlY3Rpb24tZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxl
Y3Rpb24vc2VsZWN0aW9uLWRpcmVjdGlvbi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiMThkNjgyLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9zZWxlY3Rpb24vc2VsZWN0aW9uLWRpcmVjdGlvbi1leHBlY3RlZC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMzggKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHN0eWxlPgotICAgICAgICAj
cmVnaW9uIHsKLSAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAgICAgICAgICB3aWR0aDog
MjAwcHg7Ci0gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgICAgICB0b3A6
IDEwMHB4OwotICAgICAgICB9Ci0KLSAgICAgICAgI291dHNpZGUgewotICAgICAgICAgICAgaGVp
Z2h0OiAxMDBweDsKLSAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKLSAgICAgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgICAgIHRvcDogMHB4OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9keSB7Ci0gICAgICAgICAgICBtYXJnaW4tdG9wOiAwOwotICAgICAgICB9Ci0KLSAgICAg
ICAgI2Rlc2NyaXB0aW9uIHsKLSAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKLSAgICAgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgICAgIHRvcDogMjAwcHg7Ci0gICAgICAgIH0K
LSAgICA8L3N0eWxlPgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZWxlY3RDb250ZW50QnlSYW5n
ZSgxMDAsIDEwLCAxMDAsIDExMCk7Ij4KLSAgICA8ZGl2IGlkPSJyZWdpb24iPmluc2lkZSByZWdp
b24gaW5zaWRlIHJlZ2lvbiBpbnNpZGUgcmVnaW9uIGluc2lkZSByZWdpb248L2Rpdj4KLSAgICA8
ZGl2IGlkPSJvdXRzaWRlIj5vdXRzaWRlIHJlZ2lvbiBvdXRzaWRlIHJlZ2lvbiBvdXRzaWRlIHJl
Z2lvbiBvdXRzaWRlIHJlZ2lvbjwvZGl2PgotICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj4KLSAg
ICAgICAgPGgxPjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjE1MDEiPkJ1ZyAjMTIxNTAxIC0gW0NTUyBSZWdpb25zXSBMYXlvdXQgVGVzdCBmb3Igc2Vs
ZWN0aW9uIGRpcmVjdGlvbjwvYT48L2gxPgotICAgICAgICA8cD5TZWxlY3Rpb24gaXMgYmFzZWQg
aW4gRE9NIHRyZWUsIHNvIGlmIHlvdSBzZWxlY3QgdGV4dCBmcm9tICJvdXRzaWRlIHJlZ2lvbiIg
dG8gImluc2lkZSByZWdpb24iIHRoZSBoaWdobGlnaHRlZCBhcmVhIGlzIGV4YWN0bHkgdGhlIG9w
cG9zaXRlIHRvIHdoYXQgdGhlIHVzZXIgaXMgYWN0dWFsbHkgc2VsZWN0aW5nLjwvcD4KLSAgICA8
L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9zZWxlY3Rpb24vc2VsZWN0aW9uLWRpcmVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVjNzAyZDEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSwzOCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KLSAgICA8c3R5bGU+Ci0gICAgICAgICNzb3Vy
Y2UgewotICAgICAgICAgICAgLXdlYmtpdC1mbG93LWludG86IGNvbnRlbnQ7Ci0gICAgICAgIH0K
LQotICAgICAgICAjcmVnaW9uIHsKLSAgICAgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBjb250
ZW50OwotICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKLSAgICAgICAgICAgIHdpZHRoOiAyMDBw
eDsKLSAgICAgICAgfQotCi0gICAgICAgICNvdXRzaWRlIHsKLSAgICAgICAgICAgIGhlaWdodDog
MTAwcHg7Ci0gICAgICAgICAgICB3aWR0aDogMjAwcHg7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b2R5IHsKLSAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7Ci0gICAgICAgIH0KLQotICAgICAgICAj
ZGVzY3JpcHRpb24gewotICAgICAgICAgICAgd2lkdGg6IDYwMHB4OwotICAgICAgICB9Ci0gICAg
PC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2VsZWN0Q29udGVudEJ5UmFuZ2UoMTAw
LCAxMCwgMTAwLCAxMTApOyI+Ci0gICAgPGRpdiBpZD0ic291cmNlIj5pbnNpZGUgcmVnaW9uIGlu
c2lkZSByZWdpb24gaW5zaWRlIHJlZ2lvbiBpbnNpZGUgcmVnaW9uPC9kaXY+Ci0gICAgPGRpdiBp
ZD0ib3V0c2lkZSI+b3V0c2lkZSByZWdpb24gb3V0c2lkZSByZWdpb24gb3V0c2lkZSByZWdpb24g
b3V0c2lkZSByZWdpb248L2Rpdj4KLSAgICA8ZGl2IGlkPSJyZWdpb24iPjwvZGl2PgotICAgIDxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj4KLSAgICAgICAgPGgxPjxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE1MDEiPkJ1ZyAjMTIxNTAxIC0gW0NTUyBSZWdp
b25zXSBMYXlvdXQgVGVzdCBmb3Igc2VsZWN0aW9uIGRpcmVjdGlvbjwvYT48L2gxPgotICAgICAg
ICA8cD5TZWxlY3Rpb24gaXMgYmFzZWQgaW4gRE9NIHRyZWUsIHNvIGlmIHlvdSBzZWxlY3QgdGV4
dCBmcm9tICJvdXRzaWRlIHJlZ2lvbiIgdG8gImluc2lkZSByZWdpb24iIHRoZSBoaWdobGlnaHRl
ZCBhcmVhIGlzIGV4YWN0bHkgdGhlIG9wcG9zaXRlIHRvIHdoYXQgdGhlIHVzZXIgaXMgYWN0dWFs
bHkgc2VsZWN0aW5nLjwvcD4KLSAgICA8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9vdmVyZmxvdy1mbGlwcGVkLXdyaXRpbmctbW9k
ZS1ibG9jay1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWlu
dC9vdmVyZmxvdy1mbGlwcGVkLXdyaXRpbmctbW9kZS1ibG9jay1pbi1yZWdpb25zLWV4cGVjdGVk
LnR4dAppbmRleCAxM2E5NDZiLi44ZDRjZTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3JlcGFpbnQvb3ZlcmZsb3ctZmxpcHBlZC13cml0aW5nLW1vZGUtYmxvY2staW4tcmVnaW9ucy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L292ZXJmbG93LWZsaXBw
ZWQtd3JpdGluZy1tb2RlLWJsb2NrLWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0xNCw0ICsx
NCw0IEBAIEZsb3cgVGhyZWFkcwogICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9yPSMwMDgwMDBdCiAgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDApIHNpemUgMTAweDUwIFtiZ2NvbG9yPSNGRjAwMDBdCiAgIFJlZ2lvbnMgZm9y
IGZsb3cgJ3RocmVhZCcKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gaGFzTGF5ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9yZWdp
b24tcGFpbnRpbmctY29tcG9zaXRlZC1lbGVtZW50LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWNvbXBvc2l0ZWQtZWxlbWVudC1leHBlY3Rl
ZC5odG1sCmluZGV4IGUzOWZlNmMuLjBmNWMwOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctY29tcG9zaXRlZC1lbGVtZW50LWV4cGVjdGVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1jb21wb3Np
dGVkLWVsZW1lbnQtZXhwZWN0ZWQuaHRtbApAQCAtMTAsNyArMTAsNiBAQAogICAgIHdpZHRoOiAx
MDBweDsKICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Ci0g
ICAgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyAvKmNyZWF0ZSBTdGFja2luZyBDb250
ZXh0Ki8KIH0KIDwvc3R5bGU+CiA8L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWluLWNvbXBvc2l0ZWQtdmlldy1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbi1jb21wb3NpdGVk
LXZpZXctZXhwZWN0ZWQuaHRtbAppbmRleCA3ZWU2YjdmLi40MDRiNWU4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWluLWNvbXBvc2l0ZWQtdmll
dy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9yZWdpb24tcGFp
bnRpbmctaW4tY29tcG9zaXRlZC12aWV3LWV4cGVjdGVkLmh0bWwKQEAgLTgsNyArOCw2IEBACiAg
ICAgbGVmdDogMHB4OwogICAgIHdpZHRoOiAxMDBweDsKICAgICBoZWlnaHQ6IDUwcHg7Ci0gICAg
ei1pbmRleDogMTsgLypjcmVhdGVzIFN0YWNraW5nIENvbnRleHQqLwogfQogCiAjcmVnaW9uMSB7
CkBAIC0zNCw3ICszMyw3IEBAIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpOyI+Ci0gICAgPGRpdiBpZD0icmVn
aW9uMSI+MTwvZGl2PgorICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2PgogICAgIDxkaXYgaWQ9
InJlZ2lvbjIiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbi1jb21wb3NpdGVkLXZpZXcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW4tY29tcG9zaXRlZC12
aWV3Lmh0bWwKaW5kZXggMDRlOTQyNy4uZDAyNzExNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbi1jb21wb3NpdGVkLXZpZXcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWluLWNvbXBvc2l0ZWQt
dmlldy5odG1sCkBAIC01MCw3ICs1MCw3IEBAIGZ1bmN0aW9uIHJlcGFpbnRUZXN0KCkKICAgICA8
IS0tIFRlc3RpbmcgdGhhdCB0aGUgcmVwYWludCBnb2VzIHRocm91Z2ggdGhlIFJlbmRlclJlZ2lv
bnMgYW5kIG5vdCAKICAgICBkaXJlY3RseSB0byB0aGUgdmlld3BvcnQuIFlvdSBzaG91bGQgc2Vl
IHR3byBncmVlbiByZWN0YW5nbGVzLiAtLT4KICAgICA8ZGl2IGlkPSJjb250ZW50Ij4KLSAgICAg
ICAgPGRpdiBpZD0idGFyZ2V0Ij4xPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InRhcmdldCI+PC9k
aXY+CiAgICAgPC9kaXY+CiAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CiAgICAgPGRpdiBp
ZD0icmVnaW9uMiI+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
cmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnR4dAppbmRleCBh
NmIwOTQ5Li4xMGQ5N2ZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvcmVn
aW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC1leHBlY3RlZC50eHQKQEAgLTMs
OCArMyw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKLWxheWVyIGF0ICg4LDgp
IHNpemUgNzg2eDE4MgotICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODZ4MTgy
IFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODZ4MTgyIFtiZ2NvbG9yPSNGRjAwMDBd
IFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCiBGbG93IFRocmVhZHMKICAgVGhyZWFkIHdp
dGggZmxvdy1uYW1lICdmbG93MScKICAgICBsYXllciBhdCAoMCwwKSBzaXplIDc4NHgxMTgwIGJh
Y2tncm91bmRDbGlwIGF0ICgwLDApIHNpemUgODAweDYwMCBjbGlwIGF0ICgwLDApIHNpemUgODAw
eDYwMCBvdXRsaW5lQ2xpcCBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTE0LDUgKzEzLDUgQEAg
RmxvdyBUaHJlYWRzCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDEwMDApIHNpemUg
Nzg0eDIwMAogICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDIw
MCBbYmdjb2xvcj0jMDA4MDAwXQogICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKLSAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEg
aGFzTGF5ZXIKICAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3BhcnNpbmcvcGFyc2luZy1zaGFwZS1pbWFnZS10aHJlc2hv
bGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvcGFyc2luZy9wYXJzaW5n
LXNoYXBlLWltYWdlLXRocmVzaG9sZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhjNjZjNzYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
cGFyc2luZy9wYXJzaW5nLXNoYXBlLWltYWdlLXRocmVzaG9sZC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UZXN0IHBhcnNpbmcgb2YgdGhlIENTUyBzaGFwZS1p
bWFnZS10aHJlc2hvbGQgcHJvcGVydHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQot
Ci1QQVNTIGdldENvbXB1dGVkU3R5bGVWYWx1ZSgiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hv
bGQiLCAiMCIpIGlzICIwIgotUEFTUyBnZXRDb21wdXRlZFN0eWxlVmFsdWUoIi13ZWJraXQtc2hh
cGUtaW1hZ2UtdGhyZXNob2xkIiwgIjAuNSIpIGlzICIwLjUiCi1QQVNTIGdldENvbXB1dGVkU3R5
bGVWYWx1ZSgiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQiLCAiMSIpIGlzICIxIgotUEFT
UyBnZXRDb21wdXRlZFN0eWxlVmFsdWUoIi13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkIiwg
Ii0wLjEiKSBpcyAiMCIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItd2Via2l0LXNoYXBl
LWltYWdlLXRocmVzaG9sZCIsICIxLjEiKSBpcyAiMSIKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZVZh
bHVlKCItd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZCIsICJpZGVudGlmaWVyIikgaXMgIjAi
Ci1QQVNTIGdldENvbXB1dGVkU3R5bGVWYWx1ZSgiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hv
bGQiLCAiJ3N0cmluZyciKSBpcyAiMCIKLVBBU1MgZ2V0Q2hpbGRDb21wdXRlZFN0eWxlKCItd2Vi
a2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZCIsICIwIiwgIjAiKSBpcyAiMCIKLVBBU1MgZ2V0Q2hp
bGRDb21wdXRlZFN0eWxlKCItd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZCIsICIwIiwgIjEi
KSBpcyAiMSIKLVBBU1MgZ2V0Q2hpbGRDb21wdXRlZFN0eWxlKCItd2Via2l0LXNoYXBlLWltYWdl
LXRocmVzaG9sZCIsICIxIiwgIi0xIikgaXMgIjAiCi1QQVNTIGdldENoaWxkQ29tcHV0ZWRTdHls
ZSgiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQiLCAiMiIsICIxIikgaXMgIjEiCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvcGFyc2luZy9wYXJzaW5nLXNoYXBlLWltYWdlLXRo
cmVzaG9sZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvcGFyc2luZy9wYXJzaW5nLXNo
YXBlLWltYWdlLXRocmVzaG9sZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MTkxZjJjLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3BhcnNpbmcvcGFy
c2luZy1zaGFwZS1pbWFnZS10aHJlc2hvbGQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+
Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3BhcnNpbmctdGVzdC11dGlscy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3BhcnNpbmctc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3BhcnNpbmcvc2NyaXB0LXRlc3RzL3BhcnNpbmctc2hhcGUtaW1h
Z2UtdGhyZXNob2xkLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvcGFyc2luZy9zY3JpcHQt
dGVzdHMvcGFyc2luZy1zaGFwZS1pbWFnZS10aHJlc2hvbGQuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUwOGU0NTkuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFw
ZXMvcGFyc2luZy9zY3JpcHQtdGVzdHMvcGFyc2luZy1zaGFwZS1pbWFnZS10aHJlc2hvbGQuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1kZXNjcmlwdGlvbignVGVzdCBwYXJzaW5n
IG9mIHRoZSBDU1Mgc2hhcGUtaW1hZ2UtdGhyZXNob2xkIHByb3BlcnR5LicpOwotCi0vLyBUaGUg
dGVzdCBmdW5jdGlvbnMgYW5kIGdsb2JhbHMgdXNlZCBoZXJlIGFyZSBkZWZpbmVkIHBhcnNpbmct
dGVzdC11dGlscy5qcy4KLQotYXBwbHlUb0VhY2hBcmdsaXN0KAotICAgIHRlc3RTaGFwZUNvbXB1
dGVkUHJvcGVydHksCi0gICAgWy8vIFtwcm9wZXJ0eSwgdmFsdWUsIGV4cGVjdGVkVmFsdWVdCi0g
ICAgIFsiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQiLCAiMCIsICIwIl0sCi0gICAgIFsi
LXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQiLCAiMC41IiwgIjAuNSJdLAotICAgICBbIi13
ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkIiwgIjEiLCAiMSJdLAotICAgICBbIi13ZWJraXQt
c2hhcGUtaW1hZ2UtdGhyZXNob2xkIiwgIi0wLjEiLCAiMCJdLAotICAgICBbIi13ZWJraXQtc2hh
cGUtaW1hZ2UtdGhyZXNob2xkIiwgIjEuMSIsICIxIl0sCi0gICAgIFsiLXdlYmtpdC1zaGFwZS1p
bWFnZS10aHJlc2hvbGQiLCAiaWRlbnRpZmllciIsICIwIl0sCi0gICAgIFsiLXdlYmtpdC1zaGFw
ZS1pbWFnZS10aHJlc2hvbGQiLCAiXCdzdHJpbmdcJyIsICIwIl0KLV0KLQotCi0pOwotCi1hcHBs
eVRvRWFjaEFyZ2xpc3QoCi0gICAgdGVzdE5vdEluaGVyaXRlZFNoYXBlQ2hpbGRQcm9wZXJ0eSwK
LSAgICBbLy8gW3Byb3BlcnR5LCBwYXJlbnRWYWx1ZSwgY2hpbGRWYWx1ZSwgZXhwZWN0ZWRDaGls
ZFZhbHVlXQotICAgICBbIi13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkIiwgIjAiLCAiMCIs
ICIwIl0sCi0gICAgIFsiLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQiLCAiMCIsICIxIiwg
IjEiXSwKLSAgICAgWyItd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZCIsICIxIiwgIi0xIiwg
IjAiXSwKLSAgICAgWyItd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZCIsICIyIiwgIjEiLCAi
MSJdXQotKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWRpZmZlcmVudC13cml0aW5nLW1vZGVzLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1kaWZmZXJlbnQtd3JpdGluZy1tb2Rlcy1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzlkZjcxLi4wMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzLWRpZmZlcmVudC13cml0aW5nLW1vZGVzLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwyMyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTx0aXRsZT5zaGFwZS1vdXRz
aWRlIG9uIGZsb2F0cyB3aXRoIGEgZGlmZmVyZW50IHdyaXRpbmcgbW9kZSBpbiB0aGUgZmxvYXQg
YW5kIHRoZSBjb250YWluZXI8L3RpdGxlPgotPHN0eWxlPgotICAgIC5jb250YWluZXIgewotICAg
ICAgICBmb250OiAyMHB4LzEgQWhlbTsKLSAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAg
fQotICAgIC5mbG9hdCB7Ci0gICAgICAgIGhlaWdodDogMjBweDsKLSAgICAgICAgd2lkdGg6IDQw
cHg7Ci0gICAgICAgIG1hcmdpbjogMHB4IDIwcHg7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6
IHJlZDsKLSAgICAgICAgY29sb3I6IGdyZWVuOwotICAgICAgICBmbG9hdDogbGVmdDsKLSAgICB9
Ci08L3N0eWxlPgotPGJvZHk+Ci0gICAgPHA+PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjI0MyI+QnVnIDEyMjI0MzwvYT4gLSBbY3NzLXNoYXBlc10g
c2hhcGUtb3V0c2lkZSBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgdGhlIGNvbnRhaW5lciBhbmQg
dGhlIGZsb2F0IGhhdmluZyBkaWZmZXJlbnQgd3JpdGluZyBtb2RlczwvcD4KLSAgICA8cD5Zb3Ug
c2hvdWxkIHNlZSBhIHNpbmdsZSBncmVlbiBzcXVhcmUuIFlvdSBzaG91bGQgbm90IHNlZSBhbnkg
cmVkLjwvcD4KLSAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgotICAgICAgICA8ZGl2IGNsYXNz
PSJmbG9hdCI+WFg8L2Rpdj4KLSAgICA8L2Rpdj4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWRpZmZlcmVudC13cml0aW5nLW1vZGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBl
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1kaWZmZXJlbnQtd3Jp
dGluZy1tb2Rlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWM5OGEzLi4w
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRz
L3NoYXBlLW91dHNpZGUtZmxvYXRzLWRpZmZlcmVudC13cml0aW5nLW1vZGVzLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTx0aXRsZT5zaGFwZS1v
dXRzaWRlIG9uIGZsb2F0cyB3aXRoIGEgZGlmZmVyZW50IHdyaXRpbmcgbW9kZSBpbiB0aGUgZmxv
YXQgYW5kIHRoZSBjb250YWluZXI8L3RpdGxlPgotPHN0eWxlPgotICAgIC5jb250YWluZXIgewot
ICAgICAgICBmb250OiAyMHB4LzEgQWhlbTsKLSAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0g
ICAgICAgIGNvbG9yOiBncmVlbjsKLSAgICB9Ci0gICAgLmZsb2F0IHsKLSAgICAgICAgLXdlYmtp
dC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyOwotICAgICAgICAtd2Via2l0LXNoYXBlLW91dHNp
ZGU6IHJlY3RhbmdsZSgtMjBweCwgMCwgMjBweCwgMjBweCk7Ci0gICAgICAgIGhlaWdodDogMjBw
eDsKLSAgICAgICAgd2lkdGg6IDQwcHg7Ci0gICAgICAgIG1hcmdpbjogMHB4IDIwcHg7Ci0gICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKLSAgICAgICAgZmxvYXQ6IGxlZnQ7Ci0gICAgfQot
PC9zdHlsZT4KLTxib2R5PgotICAgIDxwPjxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjIyNDMiPkJ1ZyAxMjIyNDM8L2E+IC0gW2Nzcy1zaGFwZXNdIHNo
YXBlLW91dHNpZGUgZG9lcyBub3QgcHJvcGVybHkgaGFuZGxlIHRoZSBjb250YWluZXIgYW5kIHRo
ZSBmbG9hdCBoYXZpbmcgZGlmZmVyZW50IHdyaXRpbmcgbW9kZXM8L3A+Ci0gICAgPHA+WW91IHNo
b3VsZCBzZWUgYSBzaW5nbGUgZ3JlZW4gc3F1YXJlLiBZb3Ugc2hvdWxkIG5vdCBzZWUgYW55IHJl
ZC48L3A+Ci0gICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgPGRpdiBjbGFzcz0i
ZmxvYXQiPjwvZGl2PgotICAgICAgICBYWAotICAgIDwvZGl2PgotPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0
c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFn
ZS1tYXJnaW4tMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yYzYwZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBB
aGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSBy
b3VuZGVkIHJlY3RhbmdsZS4KKworWAorCitYCitYCisKK1gKK1hYWFgKK1BBU1MgaW1hZ2VTaGFw
ZVJlY3QoJ2EnKS50b3AgaXMgMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCBpcyA1MAor
UEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLmxlZnQgaXMgMzAwCitQQVNTIGltYWdlU2hhcGVSZWN0
KCdjJykudG9wIGlzIDc1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykubGVmdCBpcyAzMDAKK1BB
U1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdl
JykudG9wIGlzIDE1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLmxlZnQgaXMgMAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE5N2I3
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRtbApAQCAt
MCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgZnVuY3Rpb24gaW1hZ2VTaGFwZVJlY3QoZWxlbWVudElkKSAKKyAgICB7CisgICAgICAg
IHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlLXNoYXBlIikuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZWxlbWVudElkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgcmV0dXJuIHtsZWZ0
OiByLmxlZnQgLSBzLmxlZnQsIHRvcDogci50b3AgLSBzLnRvcCwgd2lkdGg6IHIud2lkdGgsIGhl
aWdodDogci5oZWlnaHR9OworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
IHsKKyAgICAgIHZhciBxdWlldCA9IHRydWU7IC8vIFBBU1Mgb3V0cHV0IGRlcGVuZHMgb24gaWYg
c3VicGl4ZWwgbGF5b3V0IGhhcyBiZWVuIGVuYWJsZWQKKworICAgICAgc2hvdWxkQmUoImltYWdl
U2hhcGVSZWN0KCdhJykudG9wIiwgIjAiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygiaW1hZ2VT
aGFwZVJlY3QoJ2EnKS5sZWZ0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJlKCJp
bWFnZVNoYXBlUmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hvdWxkQmUoImltYWdlU2hh
cGVSZWN0KCdiJykubGVmdCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVS
ZWN0KCdjJykudG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2Mn
KS5sZWZ0IiwgIjMwMCIpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2QnKS50
b3AiLCAiMTI1Iik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdkJyku
bGVmdCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3Qo
J2UnKS50b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2UnKS5s
ZWZ0IiwgIjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBl
IHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTog
dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2Zycgd2lkdGg9JzI1MHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PSc1MCcgeT0n
NTAnIHdpZHRoPScyMDAnIGhlaWdodD0nNTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAg
ICAgLXdlYmtpdC1zaGFwZS1tYXJnaW46IDUwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1h
Z2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1h
Z2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48
cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMzAwJyBoZWlnaHQ9JzE1MCcgcng9JzUwJyByeT0nNTAn
IGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJl
cGVhdDsKKyAgICAgICAgd2lkdGg6IDM1MHB4OyAKKyAgICAgICAgaGVpZ2h0OiAyNTBweDsgCisg
ICAgfQorCisgICAgI2NvbnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fucy1z
ZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBj
b250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3RhbmdsZS48L3A+
CisgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgorICAgICAg
PGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAgPHNwYW4gaWQ9ImEiPlg8L3NwYW4+
PGJyPjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImMiPlg8L3NwYW4+PGJy
Pjxicj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImUiPlhYWFg8L3NwYW4+Cisg
IDwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3No
YXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9h
dHMtaW1hZ2UtbWFyZ2luLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODI2NjUyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1h
cmdpbi0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCByZXF1aXJl
cyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91bmQgdGhl
IGJsdWUgcm91bmRlZCByZWN0YW5nbGUuCisKK1gKKworWAorWAorCitYCitYWFhYCitQQVNTIGlt
YWdlU2hhcGVSZWN0KCdhJykudG9wIGlzIDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS50b3Ag
aXMgNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS5yaWdodCBpcyAzMDAKK1BBU1MgaW1hZ2VT
aGFwZVJlY3QoJ2MnKS50b3AgaXMgNzUKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2MnKS5yaWdodCBp
cyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGltYWdlU2hh
cGVSZWN0KCdlJykudG9wIGlzIDE1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnJpZ2h0IGlz
IDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1m
bG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9h
dHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjhkN2Y5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAy
Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkgCisgICAg
eworICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1zaGFwZSIp
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICB2YXIgciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHJl
dHVybiB7cmlnaHQ6IHMucmlnaHQgLSByLnJpZ2h0LCB0b3A6IHIudG9wIC0gcy50b3AsIHdpZHRo
OiByLndpZHRoLCBoZWlnaHQ6IHIuaGVpZ2h0fTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91dHB1dCBk
ZXBlbmRzIG9uIGlmIHN1YnBpeGVsIGxheW91dCBoYXMgYmVlbiBlbmFibGVkCisKKyAgICAgIHNo
b3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYScpLnRvcCIsICIwIik7CisgICAgICBzaG91bGRCZUNs
b3NlVG8oImltYWdlU2hhcGVSZWN0KCdhJykucmlnaHQiLCAyOTIsIDEsIHF1aWV0KTsKKworICAg
ICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdiJykudG9wIiwgIjUwIik7CisgICAgICBzaG91
bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2InKS5yaWdodCIsICIzMDAiKTsKKworICAgICAgc2hvdWxk
QmUoImltYWdlU2hhcGVSZWN0KCdjJykudG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRCZSgiaW1h
Z2VTaGFwZVJlY3QoJ2MnKS5yaWdodCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdl
U2hhcGVSZWN0KCdkJykudG9wIiwgIjEyNSIpOworICAgICAgc2hvdWxkQmVDbG9zZVRvKCJpbWFn
ZVNoYXBlUmVjdCgnZCcpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3VsZEJl
KCJpbWFnZVNoYXBlUmVjdCgnZScpLnRvcCIsICIxNTAiKTsKKyAgICAgIHNob3VsZEJlKCJpbWFn
ZVNoYXBlUmVjdCgnZScpLnJpZ2h0IiwgIjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8c3R5bGU+
CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAgICAtd2Vi
a2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNTBweCcgaGVpZ2h0PScxMDBw
eCc+PHJlY3QgeD0nNTAnIHk9JzUwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVl
Jy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtbWFyZ2luOiA1MHB4OworICAgICAg
ICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2Zyc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzMwMCcgaGVpZ2h0PScx
NTAnIHJ4PSc1MCcgcnk9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIGJhY2tn
cm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgICAgIHdpZHRoOiAzMDBweDsgCisgICAgICAg
IGhlaWdodDogMjUwcHg7IAorICAgIH0KKworICAgICNjb250ZW50IHsKKyAgICAgICAgZm9udDog
MjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAg
dGV4dC1hbGlnbjogcmlnaHQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8
cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hv
dWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xlLjwvcD4KKyAgPGRpdiBp
ZD0iY29udGVudCI+CisgICAgICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+CisgICAgICA8
c3BhbiBpZD0iYSI+WDwvc3Bhbj48YnI+PGJyPjxzcGFuIGlkPSJiIj5YPC9zcGFuPjxicj48c3Bh
biBpZD0iYyI+WDwvc3Bhbj48YnI+PGJyPjxzcGFuIGlkPSJkIj5YPC9zcGFuPjxicj48c3BhbiBp
ZD0iZSI+WFhYWDwvc3Bhbj4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAz
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZs
b2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3MDUzYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBl
LW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2Nv
bnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAg
Y29sb3I6IGdyZWVuOworICAgICAgICBtYXJnaW46IDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1p
bWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PScw
JyB5PScwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7Cisg
ICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gVGhl
IGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJlY3RhbmdsZS48L3A+
CisgIDxwcmUgaWQ9ImNvbnRlbnQiPgorICAgICAgICBYCisgICAgICAgIFgKK1gKKyAgPC9wcmU+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFw
ZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYzBjZjg2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWlt
YWdlLW1hcmdpbi0wMDMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZmxvYXQ6
IGxlZnQ7CisgICAgICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9
JzIwMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMjAwJyBoZWln
aHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtbWFy
Z2luOiAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjAwcHgnIGhlaWdodD0n
MTAwcHgnPjxyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPScyMDAnIGhlaWdodD0nNTAnIGZpbGw9J2Js
dWUnLz48L3N2Zz4iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAg
ICAgICAgd2lkdGg6IDUwMHB4OyAKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsgCisgICAgfQorCisg
ICAgI2NvbnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNo
b3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByZWN0YW5nbGUuPC9wPgorICA8ZGl2IGlkPSJjb250
ZW50Ij4KKyAgICAgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj48L2Rpdj4KKyAgICAgIFg8YnI+WDxi
cj5YCisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90cmFuc2Zvcm1zL2xpc3Rib3gtem9vbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3RyYW5zZm9ybXMvbGlzdGJveC16b29tLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTFjZjQ3NC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Ry
YW5zZm9ybXMvbGlzdGJveC16b29tLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotCi1UaGUgdGVzdCBwYXNzZXMgaWYgYm90aCBkaW1lbnNpb25zIChub3Qgb25seSBo
ZWlnaHQpIG9mIHRoZSBsaXN0Ym94IGlzIHJlc2l6ZWQgYWNjb3JkaW5nIHRvIHRoZSB6b29tLgot
UEFTUyBleHBlY3RlZCB3aWR0aDogNTUgd2lkdGggKy8tMTAgYWxsb3dhbmNlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC90cmFuc2Zvcm1zL2xpc3Rib3gtem9vbS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC90cmFuc2Zvcm1zL2xpc3Rib3gtem9vbS5odG1sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwNzU2NDNlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdHJh
bnNmb3Jtcy9saXN0Ym94LXpvb20uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAK
LTxodG1sPgotPGhlYWQ+Ci0JPHNjcmlwdD4KLQkgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
CQl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKQotCi0JICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0J
CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b1pvb20nKS5zdHlsZS56b29tID0gMjsKLQotCQkv
LyBDb21wYXJpbmcgdGhlIHJlc3VsdCB0byB0aGUgZXhwZWN0YXRpb24uCi0JCXZhciBleHBlY3Rl
ZFdpZHRoID0gNTU7Ci0JCXZhciByZWFsV2lkdGggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9ab29tIikpLmdldFByb3BlcnR5Q1NTVmFsdWUoJ3dp
ZHRoJykuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZS5DU1NfTlVNQkVSKTsKLQkJdmFy
IHJlc3VsdCA9ICIiOwotCQlpZiAoTWF0aC5hYnMoZXhwZWN0ZWRXaWR0aCAtIHJlYWxXaWR0aCkg
PiAxMCkKLQkJICAgIHJlc3VsdCA9ICJGQUlMIjsKLQkJZWxzZQotCQkgICAgcmVzdWx0ID0gIlBB
U1MiOwotCQlyZXN1bHQgKz0gIiBleHBlY3RlZCB3aWR0aDogIiArIGV4cGVjdGVkV2lkdGggKyAi
IHdpZHRoICsvLTEwIGFsbG93YW5jZS4iOwotCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OwotCSAgICB9Ci0JPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0K
LTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLQotPHNlbGVjdCBpZD0idG9ab29tIiBNVUxUSVBM
RT4KLQk8b3B0aW9uIHZhbHVlPSJmaXJzdCI+Zmlyc3QKLQk8b3B0aW9uIHZhbHVlPSJzZWNvbmQi
PnNlY29uZAotPC9zZWxlY3Q+Ci0KLTxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIGJvdGggZGltZW5z
aW9ucyAobm90IG9ubHkgaGVpZ2h0KSBvZiB0aGUgbGlzdGJveCBpcyByZXNpemVkIGFjY29yZGlu
ZyB0byB0aGUgem9vbS48L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCIvPgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMt
ZXhwZWN0ZWQudHh0CmluZGV4IDllZGQwNjYuLjQ4MTRlYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTQ1
LDcgKzQ1LDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5
cGUpIGlzIFsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmkKIFBBU1MgZ2V0U29ydGVkT3duUHJv
cGVydHlOYW1lcyhGdW5jdGlvbikgaXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQog
UEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnByb3RvdHlwZSkgaXMgWydh
cHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAn
dG9TdHJpbmcnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEFycmF5KSBpcyBbJ2lz
QXJyYXknLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KLVBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhBcnJheS5wcm90b3R5cGUpIGlzIFsnY29uY2F0JywgJ2NvbnN0cnVjdG9y
JywgJ2VudHJpZXMnLCAnZXZlcnknLCAnZmlsdGVyJywgJ2ZvckVhY2gnLCAnaW5kZXhPZicsICdq
b2luJywgJ2tleXMnLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ21hcCcsICdwb3AnLCAncHVz
aCcsICdyZWR1Y2UnLCAncmVkdWNlUmlnaHQnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzbGljZScs
ICdzb21lJywgJ3NvcnQnLCAnc3BsaWNlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywg
J3Vuc2hpZnQnLCAndmFsdWVzJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhBcnJh
eS5wcm90b3R5cGUpIGlzIFsnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2V2ZXJ5JywgJ2ZpbHRl
cicsICdmb3JFYWNoJywgJ2luZGV4T2YnLCAnam9pbicsICdsYXN0SW5kZXhPZicsICdsZW5ndGgn
LCAnbWFwJywgJ3BvcCcsICdwdXNoJywgJ3JlZHVjZScsICdyZWR1Y2VSaWdodCcsICdyZXZlcnNl
JywgJ3NoaWZ0JywgJ3NsaWNlJywgJ3NvbWUnLCAnc29ydCcsICdzcGxpY2UnLCAndG9Mb2NhbGVT
dHJpbmcnLCAndG9TdHJpbmcnLCAndW5zaGlmdCddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5
TmFtZXMoU3RyaW5nKSBpcyBbJ2Zyb21DaGFyQ29kZScsICdsZW5ndGgnLCAnbmFtZScsICdwcm90
b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN0cmluZy5wcm90b3R5cGUp
IGlzIFsnYW5jaG9yJywgJ2JpZycsICdibGluaycsICdib2xkJywgJ2NoYXJBdCcsICdjaGFyQ29k
ZUF0JywgJ2NvbmNhdCcsICdjb25zdHJ1Y3RvcicsICdmaXhlZCcsICdmb250Y29sb3InLCAnZm9u
dHNpemUnLCAnaW5kZXhPZicsICdpdGFsaWNzJywgJ2xhc3RJbmRleE9mJywgJ2xlbmd0aCcsICds
aW5rJywgJ2xvY2FsZUNvbXBhcmUnLCAnbWF0Y2gnLCAncmVwbGFjZScsICdzZWFyY2gnLCAnc2xp
Y2UnLCAnc21hbGwnLCAnc3BsaXQnLCAnc3RyaWtlJywgJ3N1YicsICdzdWJzdHInLCAnc3Vic3Ry
aW5nJywgJ3N1cCcsICd0b0xvY2FsZUxvd2VyQ2FzZScsICd0b0xvY2FsZVVwcGVyQ2FzZScsICd0
b0xvd2VyQ2FzZScsICd0b1N0cmluZycsICd0b1VwcGVyQ2FzZScsICd0cmltJywgJ3RyaW1MZWZ0
JywgJ3RyaW1SaWdodCcsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1l
cyhCb29sZWFuKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9hcnJheS1pdGVyYXRvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyYXktaXRlcmF0b3JzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTgxOWVjMGYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyYXktaXRl
cmF0b3JzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLVRoaXMg
dGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBpdGVyYXRvciBtZXRob2RzIG9uIEFycmF5
IG9iamVjdHMuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGtleSBpcyAw
Ci1QQVNTIGtleSBpcyAxCi1QQVNTIGtleSBpcyAyCi1QQVNTIGtleSBpcyAzCi1QQVNTIGtleSBp
cyA0Ci1QQVNTIGtleSBpcyA1Ci1QQVNTIHRlc3RBcnJheS5sZW5ndGggaXMgNgotUEFTUyBrZXlz
Lm5leHQoKS52YWx1ZSBpcyB1bmRlZmluZWQuCi1QQVNTIHZhbHVlIGlzIDEKLVBBU1MgdmFsdWUg
aXMgMgotUEFTUyB2YWx1ZSBpcyAzCi1QQVNTIHZhbHVlIGlzIDQKLVBBU1MgdmFsdWUgaXMgNQot
UEFTUyB2YWx1ZSBpcyA2Ci1QQVNTIHRlc3RBcnJheS5sZW5ndGggaXMgNgotUEFTUyB2YWx1ZXMu
bmV4dCgpLnZhbHVlIGlzIHVuZGVmaW5lZC4KLVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0K
LVBBU1Mga2V5IGlzIDAKLVBBU1MgdmFsdWUgaXMgMQotUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlb
a2V5XQotUEFTUyBrZXkgaXMgMQotUEFTUyB2YWx1ZSBpcyAyCi1QQVNTIHZhbHVlIGlzIHRlc3RB
cnJheVtrZXldCi1QQVNTIGtleSBpcyAyCi1QQVNTIHZhbHVlIGlzIDMKLVBBU1MgdmFsdWUgaXMg
dGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIDMKLVBBU1MgdmFsdWUgaXMgNAotUEFTUyB2YWx1
ZSBpcyB0ZXN0QXJyYXlba2V5XQotUEFTUyBrZXkgaXMgNAotUEFTUyB2YWx1ZSBpcyA1Ci1QQVNT
IHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCi1QQVNTIGtleSBpcyA1Ci1QQVNTIHZhbHVlIGlzIDYK
LVBBU1MgdGVzdEFycmF5Lmxlbmd0aCBpcyA2Ci1QQVNTIGVudHJpZXMubmV4dCgpLnZhbHVlIGlz
IHVuZGVmaW5lZC4KLVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIGkK
LVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIGkKLVBBU1MgdmFsdWUg
aXMgdGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIGkKLVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5
W2tleV0KLVBBU1Mga2V5IGlzIGkKLVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KLVBBU1Mg
a2V5IGlzIGkKLVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIGkKLVBB
U1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIGkKLVBBU1MgdmFsdWUgaXMg
dGVzdEFycmF5W2tleV0KLVBBU1Mga2V5IGlzIGkKLVBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tl
eV0KLVBBU1Mga2V5IGlzIGkKLVBBU1MgdGVzdEFycmF5Lmxlbmd0aCBpcyA5Ci1QQVNTIGVudHJp
ZXMubmV4dCgpLnZhbHVlIGlzIHVuZGVmaW5lZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJh
eS1pdGVyYXRvcnMuaHRtbCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWl0ZXJhdG9ycy5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWU2NjRiLi4wMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2pzL2FycmF5LWl0ZXJhdG9ycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAs
MCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2FycmF5
LWl0ZXJhdG9ycy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMK
aW5kZXggMGY1MzcwYi4uNDNkZjQxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwpAQCAtNTMsNyArNTMs
NyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAgICJGdW5jdGlvbiI6ICJb
J2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAgICAiRnVuY3Rpb24ucHJvdG90eXBl
IjogIlsnYXBwbHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJBcnJheSI6ICJbJ2lzQXJyYXknLCAnbGVuZ3RoJywg
J25hbWUnLCAncHJvdG90eXBlJ10iLAotICAgICJBcnJheS5wcm90b3R5cGUiOiAiWydjb25jYXQn
LCAnY29uc3RydWN0b3InLCAnZW50cmllcycsICdldmVyeScsICdmaWx0ZXInLCAnZm9yRWFjaCcs
ICdpbmRleE9mJywgJ2pvaW4nLCAna2V5cycsICdsYXN0SW5kZXhPZicsICdsZW5ndGgnLCAnbWFw
JywgJ3BvcCcsICdwdXNoJywgJ3JlZHVjZScsICdyZWR1Y2VSaWdodCcsICdyZXZlcnNlJywgJ3No
aWZ0JywgJ3NsaWNlJywgJ3NvbWUnLCAnc29ydCcsICdzcGxpY2UnLCAndG9Mb2NhbGVTdHJpbmcn
LCAndG9TdHJpbmcnLCAndW5zaGlmdCcsICd2YWx1ZXMnXSIsCisgICAgIkFycmF5LnByb3RvdHlw
ZSI6ICJbJ2NvbmNhdCcsICdjb25zdHJ1Y3RvcicsICdldmVyeScsICdmaWx0ZXInLCAnZm9yRWFj
aCcsICdpbmRleE9mJywgJ2pvaW4nLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ21hcCcsICdw
b3AnLCAncHVzaCcsICdyZWR1Y2UnLCAncmVkdWNlUmlnaHQnLCAncmV2ZXJzZScsICdzaGlmdCcs
ICdzbGljZScsICdzb21lJywgJ3NvcnQnLCAnc3BsaWNlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3Rv
U3RyaW5nJywgJ3Vuc2hpZnQnXSIsCiAgICAgIlN0cmluZyI6ICJbJ2Zyb21DaGFyQ29kZScsICds
ZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAgIlN0cmluZy5wcm90b3R5cGUiOiAi
WydhbmNob3InLCAnYmlnJywgJ2JsaW5rJywgJ2JvbGQnLCAnY2hhckF0JywgJ2NoYXJDb2RlQXQn
LCAnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2ZpeGVkJywgJ2ZvbnRjb2xvcicsICdmb250c2l6
ZScsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsn
LCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcsICdyZXBsYWNlJywgJ3NlYXJjaCcsICdzbGljZScs
ICdzbWFsbCcsICdzcGxpdCcsICdzdHJpa2UnLCAnc3ViJywgJ3N1YnN0cicsICdzdWJzdHJpbmcn
LCAnc3VwJywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3RvTG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93
ZXJDYXNlJywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNlJywgJ3RyaW0nLCAndHJpbUxlZnQnLCAn
dHJpbVJpZ2h0JywgJ3ZhbHVlT2YnXSIsCiAgICAgIkJvb2xlYW4iOiAiWydsZW5ndGgnLCAnbmFt
ZScsICdwcm90b3R5cGUnXSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyYXktaXRlcmF0b3JzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5
LWl0ZXJhdG9ycy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NjYjc4OS4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktaXRlcmF0b3JzLmpz
CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotZGVzY3JpcHRpb24oCi0iVGhpcyB0ZXN0
IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGl0ZXJhdG9yIG1ldGhvZHMgb24gQXJyYXkgb2Jq
ZWN0cy4iCi0pOwotCi0KLXZhciB0ZXN0QXJyYXkgPSBbMSwyLDMsNCw1LDZdCi12YXIga2V5cyA9
IHRlc3RBcnJheS5rZXlzKCk7Ci12YXIgaSA9IDA7Ci13aGlsZSAodHJ1ZSkgewotICAgIHZhciB7
ZG9uZSwgdmFsdWU6IGtleX0gPSBrZXlzLm5leHQoKTsKLSAgICBpZiAoZG9uZSkKLSAgICAgICAg
YnJlYWs7Ci0gICAgc2hvdWxkQmUoImtleSIsIFN0cmluZyhpKSkKLSAgICBpKys7Ci19Ci0KLXNo
b3VsZEJlKCJ0ZXN0QXJyYXkubGVuZ3RoIiwgU3RyaW5nKGkpKQotCi1zaG91bGRCZVVuZGVmaW5l
ZCgia2V5cy5uZXh0KCkudmFsdWUiKQotCi12YXIgdmFsdWVzID0gdGVzdEFycmF5LnZhbHVlcygp
OwotdmFyIGkgPSAwOwotd2hpbGUgKHRydWUpIHsKLSAgICB2YXIge2RvbmUsIHZhbHVlfSA9IHZh
bHVlcy5uZXh0KCk7Ci0gICAgaWYgKGRvbmUpCi0gICAgICAgIGJyZWFrOwotICAgIGkrKzsKLSAg
ICBzaG91bGRCZSgidmFsdWUiLCBTdHJpbmcoaSkgKQotfQotCi1zaG91bGRCZSgidGVzdEFycmF5
Lmxlbmd0aCIsIFN0cmluZyhpKSkKLQotc2hvdWxkQmVVbmRlZmluZWQoInZhbHVlcy5uZXh0KCku
dmFsdWUiKQotCi12YXIgZW50cmllcyA9IHRlc3RBcnJheS5lbnRyaWVzKCk7Ci12YXIgaSA9IDA7
Ci1kbyB7Ci0gICAgdmFyIHtkb25lLCB2YWx1ZTogZW50cnl9ID0gZW50cmllcy5uZXh0KCk7Ci0g
ICAgaWYgKGRvbmUpCi0gICAgICAgIGJyZWFrOwotICAgIHZhciBba2V5LCB2YWx1ZV0gPSBlbnRy
eTsKLSAgICBzaG91bGRCZSgidmFsdWUiLCAidGVzdEFycmF5W2tleV0iKQotICAgIHNob3VsZEJl
KCJrZXkiLCBTdHJpbmcoaSkpCi0gICAgaSsrCi0gICAgc2hvdWxkQmUoInZhbHVlIiwgU3RyaW5n
KGkpKQotfSB3aGlsZSAoIWRvbmUpOwotCi1zaG91bGRCZSgidGVzdEFycmF5Lmxlbmd0aCIsIFN0
cmluZyhpKSkKLQotc2hvdWxkQmVVbmRlZmluZWQoImVudHJpZXMubmV4dCgpLnZhbHVlIikKLQot
Ci0KLXZhciBlbnRyaWVzID0gdGVzdEFycmF5LmVudHJpZXMoKTsKLXZhciBpID0gMDsKLWRvIHsK
LSAgICB2YXIge2RvbmUsIHZhbHVlOiBlbnRyeX0gPSBlbnRyaWVzLm5leHQoKTsKLSAgICBpZiAo
ZG9uZSkKLSAgICAgICAgYnJlYWs7Ci0gICAgdmFyIFtrZXksIHZhbHVlXSA9IGVudHJ5OwotICAg
IHNob3VsZEJlKCJ2YWx1ZSIsICJ0ZXN0QXJyYXlba2V5XSIpCi0gICAgc2hvdWxkQmUoImtleSIs
ICJpIikKLSAgICBpKysKLSAgICBpZiAoaSAlIDIgPT0gMCkKLSAgICAgICAgdGVzdEFycmF5W2ld
ICo9IDI7Ci0gICAgaWYgKGkgPCA0KQotICAgICAgICB0ZXN0QXJyYXkucHVzaCh0ZXN0QXJyYXku
bGVuZ3RoKQotICAgIGlmIChpID09IDQpCi0gICAgICAgIGRlbGV0ZSB0ZXN0QXJyYXlbNF0KLSAg
ICBpZiAoaSA9PSA1KQotICAgICAgICB0ZXN0QXJyYXlbNF0gPSA1Ci19IHdoaWxlICghZG9uZSk7
Ci1zaG91bGRCZSgidGVzdEFycmF5Lmxlbmd0aCIsIFN0cmluZyhpKSkKLQotc2hvdWxkQmVVbmRl
ZmluZWQoImVudHJpZXMubmV4dCgpLnZhbHVlIikKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdmlkZW8tdHJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdmlkZW8tdHJhY2stZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NjMyZWUwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVv
LXRyYWNrLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUluLWJh
bmQgdmlkZW8gdHJhY2tzLgotCi1FVkVOVChhZGR0cmFjaykKLUVYUEVDVEVEIChldmVudC50cmFj
ayA9PSAndmlkZW8udmlkZW9UcmFja3NbMF0nKSBPSwotCi1FVkVOVChjYW5wbGF5dGhyb3VnaCkK
LQotKiogQ2hlY2sgaW5pdGlhbCBpbi1iYW5kIHRyYWNrIHN0YXRlcwotRVhQRUNURUQgKHZpZGVv
LnZpZGVvVHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCi0KLSoqIFVubG9hZCB2aWRlbyBmaWxlLCBj
aGVjayB0cmFjayBjb3VudAotUlVOKHZpZGVvLnNyYyA9ICcnKQotRVhQRUNURUQgKHZpZGVvLnZp
ZGVvVHJhY2tzLmxlbmd0aCA9PSAnMCcpIE9LCi0KLUVORCBPRiBURVNUCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay92aWRlby10cmFjay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiOWNkMTMwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3ZpZGVvLXRy
YWNrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KLQotICAgICAgICA8c2Ny
aXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0u
Li92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0PgotCi0gICAgICAgICAg
ICB2YXIgYWRkdHJhY2tFdmVudENvdW50ID0gMDsKLQotICAgICAgICAgICAgZnVuY3Rpb24gdHJh
Y2tBZGRlZChldmVudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkVWRU5UKCIgKyBldmVudC50eXBlICsgIikiKTsKLSAgICAgICAgICAgICAgICBjb21wYXJl
VHJhY2tzKCJldmVudC50cmFjayIsICJ2aWRlby52aWRlb1RyYWNrc1siICsgYWRkdHJhY2tFdmVu
dENvdW50ICsgIl0iKTsKLSAgICAgICAgICAgICAgICArK2FkZHRyYWNrRXZlbnRDb3VudDsKLSAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmdW5jdGlvbiBjb21wYXJlVHJhY2tzKHRyYWNrMSwgdHJhY2syKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHZhciBlcXVhbCA9IChldmFsKHRyYWNrMSkgPT0gZXZhbCh0cmFj
azIpKTsKLSAgICAgICAgICAgICAgICByZXBvcnRFeHBlY3RlZChlcXVhbCwgdHJhY2sxLCAiPT0i
LCB0cmFjazIsIHRyYWNrMSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbnBsYXl0aHJvdWdoKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIjxicj48aT4qKiBDaGVjayBpbml0aWFsIGluLWJhbmQgdHJhY2sgc3RhdGVzPCIgKyAi
L2k+Iik7Ci0gICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby52aWRlb1RyYWNrcy5s
ZW5ndGgiLCAxKTsKLQotICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPjxpPioqIFVu
bG9hZCB2aWRlbyBmaWxlLCBjaGVjayB0cmFjayBjb3VudDwiICsgIi9pPiIpOwotICAgICAgICAg
ICAgICAgIHJ1bigidmlkZW8uc3JjID0gJyciKTsKLSAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLnZpZGVvVHJhY2tzLmxlbmd0aCIsIDApOwotCi0gICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCIiKTsKLSAgICAgICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHNldHVwKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgdmlkZW8udmlkZW9U
cmFja3MuYWRkRXZlbnRMaXN0ZW5lcigiYWRkdHJhY2siLCB0cmFja0FkZGVkKTsKLSAgICAgICAg
ICAgICAgICB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi9jb250ZW50L3Rl
c3QnKTsKLSAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgY2Fu
cGxheXRocm91Z2gpOwotICAgICAgICAgICAgfQotCi0gICAgICAgIDwvc2NyaXB0PgotICAgIDwv
aGVhZD4KLSAgICA8Ym9keSBvbmxvYWQ9InNldHVwKCkiPgotICAgICAgICA8dmlkZW8gY29udHJv
bHM+PC92aWRlbz4KLSAgICAgICAgPHA+SW4tYmFuZCB2aWRlbyB0cmFja3MuPC9wPgotICAgIDwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAyMDI1Y2ZlLi42YjY1ZDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01MjAsNiArNTIwLDMgQEAgd2Via2l0Lm9y
Zy9iLzExOTc4OSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1iZWZvcmUtcHJlc3Npbmctc3Bpbi1i
dXR0b24uaHRtbCBbIEMKIHdlYmtpdC5vcmcvYi8xMTk3ODkgZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtY29vcmRzLWluLXpvb20tYW5kLXNjcm9sbC5odG1sIFsgQ3Jhc2ggXQogd2Via2l0Lm9yZy9i
LzExOTc4OSBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC1pbnNpZGUtaWZyYW1lLmh0bWwgWyBDcmFz
aCBdCiB3ZWJraXQub3JnL2IvMTE5Nzg5IGZhc3QvZXZlbnRzL3RvdWNoL3RvdWNoLXNsaWRlci1u
by1qcy10b3VjaC1saXN0ZW5lci5odG1sIFsgQ3Jhc2ggXQotCi0jIFRlc3RzIG5lZWQgbmV3IGdl
bmVyYXRlZCBleHBlY3RlZCByZXN1bHRzCi13ZWJraXQub3JnL2IvMTIxODI4IGZhc3QvcmVwYWlu
dC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLmh0bWwgWyBNaXNzaW5n
IF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvZmFzdC9yZXBhaW50
L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2Vs
ZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWVkNWQ3MQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVj
dGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2Vs
ZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwtd2syL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1p
bi1yZWdpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4wZWNiZGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdr
Mi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoNzU0LDApIHNp
emUgNDZ4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDQ2eDYwMCBbYm9y
ZGVyOiAoMTBweCBzb2xpZCAjODAwMDAwKV0KKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoMTgs
MTgpIHNpemUgMTB4NTY0IFtib3JkZXI6ICg1cHggc29saWQgIzAwMDAwMCldCitsYXllciBhdCAo
Mjk2LDEwMCkgc2l6ZSA0MDR4NDA0CisgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMTAwLDEwMCkg
c2l6ZSA0MDR4NDA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDAwMCldCitGbG93IFRocmVhZHMK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICd0aHJlYWQnCisgICAgbGF5ZXIgYXQgKDQwMCwwKSBz
aXplIDQwMHg0MDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDQw
MHg0MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAzNTB4NDAwCisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDApIHNpemUgMzQ3eDQwMAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDEsMCkgd2lkdGggMzgwOiAiXHh7MzA1Qn1ceHszMDYzfVx4ezMw
NEJ9XHh7MzA0Rn1ceHs4OThCfVx4ezMwNjR9XHh7MzA1MX1ceHszMDVGfVx4ezMwNTl9XHh7MzA3
MH1ceHszMDg5fVx4ezMwNTd9XHh7MzA0NH1ceHs4QTE4fVx4ezRFOEJ9XHh7MzA0Q31ceHszMDY5
fVx4ezMwNTN9XHh7MzA2Qn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjYsMCkgd2lkdGgg
NDAwOiAiXHh7MzA0Mn1ceHszMDYzfVx4ezMwNUZ9XHh7MzA0Qn1ceHs1RkQ4fVx4ezMwOEN9XHh7
MzA2Nn1ceHszMDU3fVx4ezMwN0V9XHh7MzA2M31ceHszMDVGfVx4ezdENEN9XHh7OUExM31ceHsz
MDZGfVx4ezMwNDJ9XHh7MzA4QX1ceHszMDdFfVx4ezMwNTl9XHh7MzA0Qn1ceHszMDZBfSIKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg1MSwwKSB3aWR0aCA0MDA6ICJceHszMDg5fVx4ezMwQkZ9
XHh7MzBBNH1ceHszMEM4fVx4ezMwRUJ9XHh7MzA2OH1ceHszMEEyfVx4ezMwQzl9XHh7MzBFQ31c
eHszMEI5fVx4ezMwNjB9XHh7MzA1MX1ceHszMDY3fVx4ezMwNkF9XHh7MzA0Rn1ceHszMDAxfVx4
ezhBMkF9XHh7NTU0Rn1ceHszMDU3fVx4ezMwNUZ9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDc2LDApIHdpZHRoIDM5ODogIlx4ezMwQTZ9XHh7MzBBN31ceHszMEQ2fVx4ezMwREF9XHh7MzBG
Q31ceHszMEI4fVx4ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4ezMwQzZ9XHh7MzBGM31ceHszMEM0
fVx4ezMwNEJ9XHh7MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7N0QyMn1ceHszMDU5fVx4ezMwOEJ9
XHh7MzA1M30iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTAxLDApIHdpZHRoIDQwMDogIlx4
ezMwNjh9XHh7MzA0Q31ceHszMDY3fVx4ezMwNER9XHh7MzA3RX1ceHszMDU5fVx4ezMwMDJ9XHh7
MzA1Qn1ceHszMDYzfVx4ezMwNEJ9XHh7MzA0Rn1ceHs4OThCfVx4ezMwNjR9XHh7MzA1MX1ceHsz
MDVGfVx4ezMwNTl9XHh7MzA3MH1ceHszMDg5fVx4ezMwNTd9XHh7MzA0NH0iCisgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMTI2LDApIHdpZHRoIDQwMDogIlx4ezhBMTh9XHh7NEU4Qn1ceHszMDRD
fVx4ezMwNjl9XHh7MzA1M31ceHszMDZCfVx4ezMwNDJ9XHh7MzA2M31ceHszMDVGfVx4ezMwNEJ9
XHh7NUZEOH1ceHszMDhDfVx4ezMwNjZ9XHh7MzA1N31ceHszMDdFfVx4ezMwNjN9XHh7MzA1Rn1c
eHs3RDRDfVx4ezlBMTN9XHh7MzA2Rn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTUxLDAp
IHdpZHRoIDM4NTogIlx4ezMwNDJ9XHh7MzA4QX1ceHszMDdFfVx4ezMwNTl9XHh7MzA0Qn0gXHh7
MzA2QX1ceHszMDg5fVx4ezMwQkZ9XHh7MzBBNH1ceHszMEM4fVx4ezMwRUJ9XHh7MzA2OH1ceHsz
MEEyfVx4ezMwQzl9XHh7MzBFQ31ceHszMEI5fVx4ezMwNjB9XHh7MzA1MX1ceHszMDY3fSIKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxNzYsMCkgd2lkdGggMzk4OiAiXHh7MzA2QX1ceHszMDRG
fVx4ezMwMDF9XHh7OEEyQX1ceHs1NTRGfVx4ezMwNTd9XHh7MzA1Rn1ceHszMEE2fVx4ezMwQTd9
XHh7MzBENn1ceHszMERBfVx4ezMwRkN9XHh7MzBCOH1ceHszMDZFfVx4ezMwQjN9XHh7MzBGM31c
eHszMEM2fVx4ezMwRjN9XHh7MzBDNH1ceHszMDRCfSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgyMDEsMCkgd2lkdGggNDAwOiAiXHh7MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7N0QyMn1ceHsz
MDU5fVx4ezMwOEJ9XHh7MzA1M31ceHszMDY4fVx4ezMwNEN9XHh7MzA2N31ceHszMDREfVx4ezMw
N0V9XHh7MzA1OX1ceHszMDAyfVx4ezhBMkF9XHh7NTU0Rn1ceHszMDU3fVx4ezMwNUZ9XHh7MzBB
Nn1ceHszMEE3fSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyMjYsMCkgd2lkdGggMzk4OiAi
XHh7MzBENn1ceHszMERBfVx4ezMwRkN9XHh7MzBCOH1ceHszMDZFfVx4ezMwQjN9XHh7MzBGM31c
eHszMEM2fVx4ezMwRjN9XHh7MzBDNH1ceHszMDRCfVx4ezMwODl9XHh7MzA4Mn1ceHs2OTFDfVx4
ezdEMjJ9XHh7MzA1OX1ceHszMDhCfVx4ezMwNTN9XHh7MzA2OH1ceHszMDRDfSIKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgyNTEsMCkgd2lkdGggNDAwOiAiXHh7MzA2N31ceHszMDREfVx4ezMw
N0V9XHh7MzA1OX1ceHszMDAyfVx4ezMwNUJ9XHh7MzA2M31ceHszMDRCfVx4ezMwNEZ9XHh7ODk4
Qn1ceHszMDY0fVx4ezMwNTF9XHh7MzA1Rn1ceHszMDU5fVx4ezMwNzB9XHh7MzA4OX1ceHszMDU3
fVx4ezMwNDR9XHh7OEExOH1ceHs0RThCfSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNzYs
MCkgd2lkdGggNDAwOiAiXHh7MzA0Q31ceHszMDY5fVx4ezMwNTN9XHh7MzA2Qn1ceHszMDQyfVx4
ezMwNjN9XHh7MzA1Rn1ceHszMDRCfVx4ezVGRDh9XHh7MzA4Q31ceHszMDY2fVx4ezMwNTd9XHh7
MzA3RX1ceHszMDYzfVx4ezMwNUZ9XHh7N0Q0Q31ceHs5QTEzfVx4ezMwNkZ9XHh7MzA0Mn1ceHsz
MDhBfSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgzMDEsMCkgd2lkdGggMzY1OiAiXHh7MzA3
RX1ceHszMDU5fVx4ezMwNEJ9IFx4ezMwNkF9XHh7MzA4OX1ceHszMEJGfVx4ezMwQTR9XHh7MzBD
OH1ceHszMEVCfVx4ezMwNjh9XHh7MzBBMn1ceHszMEM5fVx4ezMwRUN9XHh7MzBCOX1ceHszMDYw
fVx4ezMwNTF9XHh7MzA2N31ceHszMDZBfSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgzMjYs
MCkgd2lkdGggODA6ICJceHszMDRGfVx4ezMwMDF9XHh7OEEyQX1ceHs1NTRGfSIKKyAgUmVnaW9u
cyBmb3IgZmxvdyAndGhyZWFkJworICAgIFJlbmRlclJlZ2lvbiB7RElWfQorc2VsZWN0aW9uIHN0
YXJ0OiBwb3NpdGlvbiA3MCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7RElWfSBvZiBi
b2R5CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDIzMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2Yg
Y2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGE3YmVjNzIuLjc3NzI5MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjU1LDE0ICsxNjU1LDMgQEAgd2Via2l0Lm9yZy9iLzEx
ODM3OCB2aWJyYXRpb24vY2FuY2VsVmlicmF0aW9uLWFmdGVyLXBhZ2V2aXNpYmlsaXR5LWNoYW5n
ZWQtdG8taGkKIAogd2Via2l0Lm9yZy9iLzExOTc4MiBmYXN0L2Zvcm1zL3NlYXJjaC1zdHlsZWQu
aHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTU2MDIgZmFzdC9jc3MvZmlyc3QtbGV0
dGVyLWJsb2NrLWNoYW5nZS5odG1sIFsgTWlzc2luZyBdCi0KLSMgVGVzdHMgbmVlZCBuZXcgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIHJlc3VsdHMKLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25z
L2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8x
MjE4MjggZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbCBb
IE1pc3NpbmcgXQotd2Via2l0Lm9yZy9iLzEyMTgyOCBmYXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGly
ZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13aWR0aC1yZWdpb25zLmh0bWwgWyBNaXNz
aW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0
LXNtYWxsLXBhZ2luYXRpb24uaHRtbCBbIE1pc3NpbmcgXQotd2Via2l0Lm9yZy9iLzEyMTgyOCBm
YXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLmh0bWwgWyBNaXNz
aW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVj
dGlvbi1yZXBhaW50LWluLXJlZ2lvbnMuaHRtbCBbIE1pc3NpbmcgXQotd2Via2l0Lm9yZy9iLzEy
MTgyOCBmYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi5odG1sIFsgTWlz
c2luZyBdCi13ZWJraXQub3JnL2IvMTIxODI4IGZhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmct
dmlhLWxheW91dC5odG1sIFsgTWlzc2luZyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvYXV0b2hlaWdodC1yZWdp
b25zLW1hcmstZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmRjMTRiNjAKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVjdGVkLnBuZyBk
aWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMv
YXV0b2hlaWdodC1yZWdpb25zLW1hcmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL2Zhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE1ODI1OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvYXV0b2hlaWdodC1y
ZWdpb25zLW1hcmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDYgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4MTE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHgxMTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgxMDAKKyAg
ICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDUweDUwCisgICAgICBSZW5kZXJS
ZWdpb24ge0RJVn0gYXQgKDAsNTApIHNpemUgNTB4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9
IGF0ICgwLDUwKSBzaXplIDUweDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCw1MCkg
c2l6ZSA1MHg1MAorbGF5ZXIgYXQgKDgsNTApIHNpemUgNTB4NDUwCisgIFJlbmRlclJlZ2lvbiB7
RElWfSBhdCAoOCw1MCkgc2l6ZSA1MHg0NTAKK2xheWVyIGF0ICg1MCw4KSBzaXplIDY1MHg1MAor
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDUwLDgpIHNpemUgNjUweDUwCitGbG93IFRocmVhZHMK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93JworICAgIGxheWVyIGF0ICgwLDApIHNpemUg
NTB4NTAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDUweDUwCisg
IFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3cnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24K
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MicKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxv
dzInCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yIGhhc0F1dG9Mb2dpY2FsSGVpZ2h0
CisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzMnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA1MHg0NTAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDUweDQ1
MAorICBSZWdpb25zIGZvciBmbG93ICdmbG93MycKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3Jl
Z2lvbjMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93NCcKKyAgICBsYXllciBhdCAoMCww
KSBzaXplIDY1MHg1MAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUg
NjUweDUwCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3c0JworICAgIFJlbmRlclJlZ2lvbiB7RElW
fSAjcmVnaW9uNAorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3c1JworICBSZWdpb25zIGZv
ciBmbG93ICdmbG93NScKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjUgaGFzQXV0b0xv
Z2ljYWxIZWlnaHQKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93NicKKyAgICBsYXllciBh
dCAoMCwwKSBzaXplIDUweDUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgYXQgKDAsMCkg
c2l6ZSA1MHg1MAorICBSZWdpb25zIGZvciBmbG93ICdmbG93NicKKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gI3JlZ2lvbjYKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93OCcKKyAgUmVnaW9u
cyBmb3IgZmxvdyAnZmxvdzgnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb244IGludmFs
aWQKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93NycKKyAgUmVnaW9ucyBmb3IgZmxvdyAn
ZmxvdzcnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb243IGhhc0F1dG9Mb2dpY2FsSGVp
Z2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zs
b3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
ZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY2YmM1ZApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJh
c2ljLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2JiMDg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93
LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTk0CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHgxOTQKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgxNzAK
KyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2NngxNworICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQwNTogIlRoZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVu
IHNob3VsZCBkaXNwbGF5IGFmdGVyIHRoaXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDQwNSwwKSB3aWR0aCAzNjE6ICJhbmQgdGhlcmUgc2hvdWxkIGJlIHR3byBjb3BpZXMgb2YgdGhp
cyBjb250ZW50IHRoYXQgbWF0Y2guIgorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDE4
KSBzaXplIDMwMHgxMDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDExOCkgc2l6ZSA3
ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzY2eDE3Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDA1OiAiVGhlIHdvcmRzIFwiZmxvdyBj
b250ZW50XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgYWZ0ZXIgdGhpcyBkaXYsICIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoNDA1LDApIHdpZHRoIDM2MTogImFuZCB0aGVyZSBzaG91bGQgYmUg
dHdvIGNvcGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4iCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwxNTIpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3OXgxNworICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNzk6ICJmbG93IGNvbnRlbnQiCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGgg
Zmxvdy1uYW1lICdtYWluLXRocmVhZCcKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDMwMHgxMDAK
KyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDMwMHgxMDAKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTYpIHNpemUgMzAweDE4IFtjb2xvcj0jMDA4MDAw
XQorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDMwMHgxOAorICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzl4MTcKKyAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6ICJmbG93IGNvbnRlbnQiCisgIFJlZ2lvbnMg
Zm9yIGZsb3cgJ21haW4tdGhyZWFkJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93LWNv
bnRlbnQtYmFzaWMtdmVydGljYWwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtZXhwZWN0ZWQucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNTE5ZjYKQmluYXJ5IGZpbGVz
IC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zs
b3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNp
Yy12ZXJ0aWNhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9y
ZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRkM2ZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZl
cnRpY2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgw
LDApIHNpemUgMjMweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSAyMzB4
NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSAyMDZ4NTg0CisgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDM2eDU4NAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNXg1NTYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA0MDU6ICJUaGUgd29yZHMgXCJmbG93IGNvbnRlbnRcIiBpbiBncmVlbiBzaG91bGQg
ZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQwNSkg
d2lkdGggMTUxOiAiYW5kIHRoZXJlIHNob3VsZCBiZSB0d28iCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDE4LDApIHdpZHRoIDIwNjogImNvcGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4i
CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDM2LDApIHNpemUgMTAweDMwMAorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDEzNiwwKSBzaXplIDM2eDU4NAorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNXg1NTYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA0MDU6ICJUaGUgd29yZHMgXCJmbG93IGNvbnRlbnRcIiBpbiBncmVlbiBzaG91
bGQgZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQw
NSkgd2lkdGggMTUxOiAiYW5kIHRoZXJlIHNob3VsZCBiZSB0d28iCisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDE4LDApIHdpZHRoIDIwNjogImNvcGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRj
aC4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTg4LDApIHNpemUgMTh4NTg0IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAxOHg1ODQK
KyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxN3g3OQorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6ICJmbG93IGNvbnRlbnQiCitGbG93IFRo
cmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdtYWluLXRocmVhZCcKKyAgICBsYXllciBh
dCAoMCwwKSBzaXplIDEwMHgzMDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCww
KSBzaXplIDEwMHgzMDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDE2LDApIHNpemUg
MTh4MzAwIFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCww
KSBzaXplIDE4eDMwMAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTd4NzkKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6ICJmbG93
IGNvbnRlbnQiCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ21haW4tdGhyZWFkJworICAgIFJlbmRlclJl
Z2lvbiB7RElWfSAjcmVnaW9uMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFz
aWMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmFjN2U4ZjkKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1l
eHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
ZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNp
Yy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2RjZGY5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDM1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
VmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICg0NDYsMCkgc2l6ZSAzNTR4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDM1NHg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDMzMHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgMzZ4NTg0CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDM1eDU2NgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ0MzogIlRo
ZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVuIHNob3VsZCBkaXNwbGF5IHR3aWNlIGFm
dGVyIHRoaXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDQzKSB3aWR0aCAxMjM6
ICJhbmQgdGhlcmUgc2hvdWxkIGJlIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxOCwwKSB3aWR0
aCAyMzQ6ICJ0d28gY29waWVzIG9mIHRoaXMgY29udGVudCB0aGF0IG1hdGNoLiIKKyAgICAgIFJl
bmRlclJlZ2lvbiB7RElWfSBhdCAoMzYsMCkgc2l6ZSAxMTJ4MzEyIFtib3JkZXI6ICgxcHggc29s
aWQgIzAwMDAwMCldCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDE0OCwwKSBzaXplIDEx
MngzMTIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgyNjAsMCkgc2l6ZSAzNng1ODQKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMzV4NTU2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDA1
OiAiVGhlIHdvcmRzIFwiZmxvdyBjb250ZW50XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgYWZ0
ZXIgdGhpcyBkaXYsICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MDUpIHdpZHRoIDE1MTog
ImFuZCB0aGVyZSBzaG91bGQgYmUgdHdvIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxOCwwKSB3
aWR0aCAyMDY6ICJjb3BpZXMgb2YgdGhpcyBjb250ZW50IHRoYXQgbWF0Y2guIgorICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDMxMiwwKSBzaXplIDE4eDU4NCBbY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMTh4NTg0CisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTd4NzkKKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDc5OiAiZmxvdyBjb250ZW50IgorRmxvdyBUaHJlYWRzCisgIFRocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnbWFpbi10aHJlYWQnCisgICAgbGF5ZXIgYXQgKDYwMCwwKSBzaXpl
IDIwMHgzMDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgz
MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDB4MzAwIFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMTAw
eDMwMAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTd4MTA3
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwNzogImZpcnN0IGZsb3cg
Y29udGVudCIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTAwLDApIHNpemUgMTAw
eDMwMAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTd4MTI3
CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNzogInNlY29uZCBmbG93
IGNvbnRlbnQiCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ21haW4tdGhyZWFkJworICAgIFJlbmRlclJl
Z2lvbiB7RElWfSAjcmVnaW9uMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBl
bmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3Rl
ZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMxNGI2MApCaW5hcnkg
ZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lv
bnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC5wbmcgZGlmZmVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zsb3dzLWRl
cGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZlOWU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93
cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBA
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDE2CisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHgxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorRmxv
dyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCisgIFRocmVhZCB3aXRo
IGZsb3ctbmFtZSAnZmxvd0EnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJworICAgIFJlbmRl
clJlZ2lvbiB7RElWfQorICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICBUaHJlYWQgd2l0aCBmbG93
LW5hbWUgJ2Zsb3dCJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdp
b24ge0RJVn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lv
bnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13aWR0aC1yZWdp
b25zLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMv
bXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13aWR0aC1yZWdpb25z
LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzE4NjJj
CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zh
c3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdp
ZHRoLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2Vz
LWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWlu
LXZhcmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjZiYzljMjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2Vz
LWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NDIyCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg0MjIKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg0MDYKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDQw
NgorICAgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MDJ4MTAyIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAo
MCwxMDIpIHNpemUgNTAyeDE4MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMjg0KSBzaXplIDIwMngxMjIgW2JvcmRlcjogKDFw
eCBzb2xpZCAjMDAwMDAwKV0KK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUg
J2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgNTAweDQwMAorICAgICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgNTAweDQwMAorICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMjUsMCkgc2l6ZSA0NTB4MzcyCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDI3LDE1KSBzaXplIDM5NngzNDIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMEZGKV0KKyAg
ICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg0MCwxMSkgc2l6ZSAzMTZ4MjQ5IFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwODAwMCldCisgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMSwxNykgc2l6ZSAzMTR4OTMKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKC0xOCwwKSBzaXplIDMzMXg5MgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKC0x
OCwwKSB3aWR0aCAyNDg6ICJUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2Yi
CisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoLTE4LDE4KSB3aWR0aCAyNDg6ICJ0aGUg
cmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IgorICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKC0xOCwzNikgd2lkdGggMjQ4OiAiZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiBU
aGlzIGxpbmUgb2YgdGV4dCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDU3KSB3
aWR0aCAzMTM6ICJzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9m
IHRleHQiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw3NSkgd2lkdGggMjAxOiAi
c2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIgorICAgICAgICAgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDEsMTI2KSBzaXplIDMxNHg3MgorICAgICAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMxM3g3MQorICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMzEzOiAiVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQg
b3V0IG9mIHRoZSByZWdpb24uIgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgp
IHdpZHRoIDMxMzogIlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUg
cmVnaW9uLiIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3aWR0aCAzMTM6
ICJUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4iCisg
ICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw1NCkgd2lkdGggMzA0OiAiVGhpcyBsaW5l
IG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIgorICAgICAgICAgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDEsMjE0KSBzaXplIDMxNHgxOAorICAgICAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMwNHgxNworICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzA0OiAiVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxk
IG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScK
KyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0g
I3JlZ2lvbjIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvcmVnaW9uLWR5bmFtaWMtYWZ0ZXIt
YmVmb3JlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lv
bnMvcmVnaW9uLWR5bmFtaWMtYWZ0ZXItYmVmb3JlLWV4cGVjdGVkLnR4dAppbmRleCAzNzQxNjI3
Li40ZjJhODE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdp
b25zL3JlZ2lvbi1keW5hbWljLWFmdGVyLWJlZm9yZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9yZWdpb24tZHluYW1pYy1hZnRlci1iZWZv
cmUtZXhwZWN0ZWQudHh0CkBAIC0yMiw0ICsyMiw0IEBAIEZsb3cgVGhyZWFkcwogICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJzb21lIHRleHQgdG8iCiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjk6ICJmbG93IgogICBSZWdpb25zIGZvciBmbG93
ICduYW1lZEZsb3cnCi0gICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24KKyAgICBSZW5kZXJS
ZWdpb24ge0RJVn0gI3JlZ2lvbiBoYXNMYXllcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9yZWdpb24tZ2VuZXJhdGVkLWNvbnRlbnQtYmVmb3JlLWFm
dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMv
cmVnaW9uLWdlbmVyYXRlZC1jb250ZW50LWJlZm9yZS1hZnRlci1leHBlY3RlZC50eHQKaW5kZXgg
Mzc0MTYyNy4uNGYyYTgxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zh
c3QvcmVnaW9ucy9yZWdpb24tZ2VuZXJhdGVkLWNvbnRlbnQtYmVmb3JlLWFmdGVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL3JlZ2lvbi1n
ZW5lcmF0ZWQtY29udGVudC1iZWZvcmUtYWZ0ZXItZXhwZWN0ZWQudHh0CkBAIC0yMiw0ICsyMiw0
IEBAIEZsb3cgVGhyZWFkcwogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6
ICJzb21lIHRleHQgdG8iCiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMjk6
ICJmbG93IgogICBSZWdpb25zIGZvciBmbG93ICduYW1lZEZsb3cnCi0gICAgUmVuZGVyUmVnaW9u
IHtESVZ9ICNyZWdpb24KKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbiBoYXNMYXllcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy90ZXh0LXJl
Z2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlv
bi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhNzg3
MgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9m
YXN0L3JlZ2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1leHBlY3RlZC5w
bmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdp
b25zL3RleHQtcmVnaW9uLXNwbGl0LXNtYWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFs
bC1wYWdpbmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jZGM4MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDM3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDI3
NgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4Mjc2CisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsMTYpIHNpemUgNzg0eDI0NAorICAgICAgUmVuZGVyUmVnaW9uIHtE
SVZ9IGF0ICgwLDApIHNpemUgMjA0eDM0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDAwMCldCisg
ICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsNTApIHNpemUgMjA0eDU0IFtib3JkZXI6ICgy
cHggc29saWQgIzAwMDAwMCldCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTIwKSBz
aXplIDIwNHg1NCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwMDApXQorICAgICAgUmVuZGVyUmVn
aW9uIHtESVZ9IGF0ICgwLDE5MCkgc2l6ZSAyMDR4NTQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAw
MDAwKV0KK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cnCisgICAg
bGF5ZXIgYXQgKDAsMCkgc2l6ZSAyMDB4MTgwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQg
YXQgKDAsMCkgc2l6ZSAyMDB4MTgwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDMw
KSBzaXplIDIwMHgxMTgKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAy
MDB4MTE4CisgICAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMTExeDE3
CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDExMXgxNwor
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDExMTogIlRleHQgaW4gcmVn
aW9uIDIuIgorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMTEsMCkgc2l6ZSAx
NDN4MzUKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDExMSwwKSB3aWR0aCAzMjogIiBUaGlz
IgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggOTk6ICJwYXJhZ3JhcGgg
aGFzIFwiIgorICAgICAgICAgICAgUmVuZGVySW5saW5lIHtJfSBhdCAoMCwwKSBzaXplIDE5Nng0
OQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDk5LDE4KSBzaXplIDE5Nng0
OQorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg5OSwxOCkgd2lkdGggOTc6ICItd2Via2l0
LXJlZ2lvbi0iCisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTApIHdpZHRoIDEyMzog
ImJyZWFrLWFmdGVyOiBhbHdheXMiCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEyMyw1MCkgc2l6ZSAxNXgxNworICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTIzLDUwKSB3
aWR0aCAxNTogIlwiLiAiCisgICAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNp
emUgMTc5eDY3CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTM4LDUwKSBz
aXplIDE3OXg2NworICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMzgsNTApIHdpZHRoIDQx
OiAiVGhlcmUiCisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjgpIHdpZHRoIDE2Njog
InNob3VsZCBiZSBub3RoaW5nIGluIHRoaXMiCisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMTAwKSB3aWR0aCAxMzk6ICJyZWdpb24gYWZ0ZXIgdGhpcyBsaW5lLiIKKyAgUmVnaW9ucyBm
b3IgZmxvdyAnZmxvdycKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEKKyAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjIKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMK
KyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVn
aW9uLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMv
dG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTY1NzBjCkJpbmFyeSBmaWxlcyAvZGV2L251bGwg
YW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ct
b3V0LW9mLXNlY29uZC1yZWdpb24tZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ctb3V0LW9mLXNl
Y29uZC1yZWdpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3Qv
cmVnaW9ucy90b3Atb3ZlcmZsb3ctb3V0LW9mLXNlY29uZC1yZWdpb24tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzODBkMGQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL3RvcC1vdmVyZmxvdy1v
dXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg0MTgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDQxOAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDE2KSBzaXplIDc4
NHgzOTQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHg3MgorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Nzl4NzEKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NzU6ICJJbiB0aGUgdGVzdCBjYXNlIGJlbG93LCB0aGUgZ3Jl
ZW4gYmxvY2sncyB3aWR0aCBzaG91bGQgbm90IHZhcnkgYW5kIHNob3VsZCB1c2UgdGhlIHNlY29u
ZCByZWdpb24gdG8gZGV0ZXJtaW5lIGl0cyB3aWR0aC4gSXQgaXMiCisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTgpIHdpZHRoIDczMTogIm92ZXJmbG93aW5nIHVwd2FyZHMgb3V0IG9mIHRoZSBi
bHVlIGJsb2NrLCBhbmQgc28gdGhlIHBvcnRpb24gdGhhdCBvdmVyZmxvd3Mgc2hvdWxkIGNvbnRp
bnVlIHRvIHVzZSB0aGUgYmx1ZSBibG9jaydzIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2
KSB3aWR0aCA3Nzk6ICJjb250YWluaW5nIGJsb2NrIHdpZHRoLiBUaGUgYmx1ZSBibG9jayBkb2Vz
IG5vdCBleGlzdCBpbiByZWdpb24gb25lLCBzbyB1c2luZyBzb21lIGh5cG90aGV0aWNhbCBtYWRl
LXVwIHdpZHRoIGlzIGluY29ycmVjdC4iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTQpIHdp
ZHRoIDU2NTogIlRoZSBvdmVyZmxvdyBzaG91bGQgYmUgc3BpbGxpbmcgb3V0IG9mIHRoZSB0b3Ag
b2YgcmVnaW9uIHR3byBhbmQgYmUgcGFpbnRlZCBpbiByZWdpb24gb25lLiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDg4KSBzaXplIDc4NHgzMDYKKyAgICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDApIHNpemUgMzAyeDEwMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDAp
XQorICAgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTAyKSBzaXplIDQwMngyMDIgW2Jv
cmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0
ICgwLDMwNCkgc2l6ZSAyeDIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KK0Zsb3cgVGhy
ZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDAp
IHNpemUgNDAweDMwMAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUg
NDAweDMwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDQwMHgxNzcK
KyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoNSwxMDApIHNpemUgMzkweDcyIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDBGRildCisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoNDgsLTk5KSBzaXplIDI5NHgxNzAgW2JvcmRlcjogKDFweCBzb2xpZCAjMDA4MDAwKV0KKyAg
ICAgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxLDE3KSBzaXplIDI5MXg1NAorICAgICAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI5MXg1MworICAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjkxOiAiVGhlc2UgbGluZXMgc2hv
dWxkIGFsbCBmaXQgdG8gdGhlIHdpZHRoIG9mIHRoZSIKKyAgICAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE4KSB3aWR0aCAyOTE6ICJibG9jayBpbiB0aGUgc2Vjb25kIHJlZ2lvbiBhbmQg
c3BpbGwgb3V0IG9mIHRoZSIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3
aWR0aCAxMTI6ICJ0b3Agb2YgdGhlIHNlY29uZCAiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMTEyLDM2KSB3aWR0aCA0NDogInJlZ2lvbi4iCisgICAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMSw5OSkgc2l6ZSAyOTF4NTQKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyOTF4NTMKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDI5MTogIlRoZXNlIGxpbmVzIHNob3VsZCBhbGwgZml0IHRvIHRoZSB3
aWR0aCBvZiB0aGUiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGgg
MjkxOiAiYmxvY2sgaW4gdGhlIHNlY29uZCByZWdpb24gYW5kIHNwaWxsIG91dCBvZiB0aGUiCisg
ICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggMTEyOiAidG9wIG9mIHRo
ZSBzZWNvbmQgIgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDExMiwzNikgd2lkdGgg
NDQ6ICJyZWdpb24uIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKKyAgICBSZW5kZXJSZWdp
b24ge0RJVn0gI3JlZ2lvbjEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjIKKyAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVn
aW9ucy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZXBhaW50
L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MzMzNTkKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZXBhaW50L2phcGFu
ZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGRpZmZlcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVwYWludC9qYXBhbmVz
ZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFp
bnQtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTVhMDMxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoNzU0LDApIHNp
emUgNDZ4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDQ2eDYwMCBbYm9y
ZGVyOiAoMTBweCBzb2xpZCAjODAwMDAwKV0KKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoMTgs
MTgpIHNpemUgMTB4NTY0IFtib3JkZXI6ICg1cHggc29saWQgIzAwMDAwMCldCitsYXllciBhdCAo
Mjk2LDEwMCkgc2l6ZSA0MDR4NDA0CisgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMTAwLDEwMCkg
c2l6ZSA0MDR4NDA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDAwMCldCitGbG93IFRocmVhZHMK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICd0aHJlYWQnCisgICAgbGF5ZXIgYXQgKDQwMCwwKSBz
aXplIDQwMHg0MDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDQw
MHg0MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMzZ4NDAwCisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzM2eDM5OQorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzk5OiAiXHh7MzA1Qn1ceHszMDYzfVx4ezMw
NEJ9XHh7MzA0Rn1ceHs4OThCfVx4ezMwNjR9XHh7MzA1MX1ceHszMDVGfVx4ezMwNTl9XHh7MzA3
MH1ceHszMDg5fVx4ezMwNTd9XHh7MzA0NH1ceHs4QTE4fVx4ezRFOEJ9XHh7MzA0Q31ceHszMDY5
fVx4ezMwNTN9XHh7MzA2Qn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjQsMCkgd2lkdGgg
Mzk5OiAiXHh7MzA0Mn1ceHszMDYzfVx4ezMwNUZ9XHh7MzA0Qn1ceHs1RkQ4fVx4ezMwOEN9XHh7
MzA2Nn1ceHszMDU3fVx4ezMwN0V9XHh7MzA2M31ceHszMDVGfVx4ezdENEN9XHh7OUExM31ceHsz
MDZGfVx4ezMwNDJ9XHh7MzA4QX1ceHszMDdFfVx4ezMwNTl9XHh7MzA0Qn0iCisgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNDgsMCkgd2lkdGggMzk5OiAiXHh7MzA2QX1ceHszMDg5fVx4ezMwQkZ9
XHh7MzBBNH1ceHszMEM4fVx4ezMwRUJ9XHh7MzA2OH1ceHszMEEyfVx4ezMwQzl9XHh7MzBFQ31c
eHszMEI5fVx4ezMwNjB9XHh7MzA1MX1ceHszMDY3fVx4ezMwNkF9XHh7MzA0Rn1ceHszMDAxfVx4
ezhBMkF9XHh7NTU0Rn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzIsMCkgd2lkdGggMzk3
OiAiXHh7MzA1N31ceHszMDVGfVx4ezMwQTZ9XHh7MzBBN31ceHszMEQ2fVx4ezMwREF9XHh7MzBG
Q31ceHszMEI4fVx4ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4ezMwQzZ9XHh7MzBGM31ceHszMEM0
fVx4ezMwNEJ9XHh7MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7N0QyMn0iCisgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoOTYsMCkgd2lkdGggMzk5OiAiXHh7MzA1OX1ceHszMDhCfVx4ezMwNTN9XHh7
MzA2OH1ceHszMDRDfVx4ezMwNjd9XHh7MzA0RH1ceHszMDdFfVx4ezMwNTl9XHh7MzAwMn1ceHsz
MDVCfVx4ezMwNjN9XHh7MzA0Qn1ceHszMDRGfVx4ezg5OEJ9XHh7MzA2NH1ceHszMDUxfVx4ezMw
NUZ9XHh7MzA1OX0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTIwLDApIHdpZHRoIDM3ODog
Ilx4ezMwNzB9XHh7MzA4OX1ceHszMDU3fVx4ezMwNDR9XHh7OEExOH1ceHs0RThCfVx4ezMwNEN9
XHh7MzA2OX1ceHszMDUzfVx4ezMwNkJ9XHh7MzA0Mn1ceHszMDYzfVx4ezMwNUZ9XHh7MzA0Qn1c
eHs1RkQ4fVx4ezMwOEN9XHh7MzA2Nn1ceHszMDU3fSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgxNDQsMCkgd2lkdGggMzgzOiAiXHh7MzA3RX1ceHszMDYzfVx4ezMwNUZ9XHh7N0Q0Q31ceHs5
QTEzfVx4ezMwNkZ9XHh7MzA0Mn1ceHszMDhBfVx4ezMwN0V9XHh7MzA1OX1ceHszMDRCfSBceHsz
MDZBfVx4ezMwODl9XHh7MzBCRn1ceHszMEE0fVx4ezMwQzh9XHh7MzBFQn1ceHszMDY4fSIKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxNjgsMCkgd2lkdGggMzk5OiAiXHh7MzBBMn1ceHszMEM5
fVx4ezMwRUN9XHh7MzBCOX1ceHszMDYwfVx4ezMwNTF9XHh7MzA2N31ceHszMDZBfVx4ezMwNEZ9
XHh7MzAwMX1ceHs4QTJBfVx4ezU1NEZ9XHh7MzA1N31ceHszMDVGfVx4ezMwQTZ9XHh7MzBBN31c
eHszMEQ2fVx4ezMwREF9XHh7MzBGQ30iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTkyLDAp
IHdpZHRoIDM5NzogIlx4ezMwQjh9XHh7MzA2RX1ceHszMEIzfVx4ezMwRjN9XHh7MzBDNn1ceHsz
MEYzfVx4ezMwQzR9XHh7MzA0Qn1ceHszMDg5fVx4ezMwODJ9XHh7NjkxQ31ceHs3RDIyfVx4ezMw
NTl9XHh7MzA4Qn1ceHszMDUzfVx4ezMwNjh9XHh7MzA0Q31ceHszMDY3fVx4ezMwNER9IgorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDIxNiwwKSB3aWR0aCAzOTc6ICJceHszMDdFfVx4ezMwNTl9
XHh7MzAwMn1ceHs4QTJBfVx4ezU1NEZ9XHh7MzA1N31ceHszMDVGfVx4ezMwQTZ9XHh7MzBBN31c
eHszMEQ2fVx4ezMwREF9XHh7MzBGQ31ceHszMEI4fVx4ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4
ezMwQzZ9XHh7MzBGM31ceHszMEM0fSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNDAsMCkg
d2lkdGggMzk5OiAiXHh7MzA0Qn1ceHszMDg5fVx4ezMwODJ9XHh7NjkxQ31ceHs3RDIyfVx4ezMw
NTl9XHh7MzA4Qn1ceHszMDUzfVx4ezMwNjh9XHh7MzA0Q31ceHszMDY3fVx4ezMwNER9XHh7MzA3
RX1ceHszMDU5fVx4ezMwMDJ9XHh7MzA1Qn1ceHszMDYzfVx4ezMwNEJ9XHh7MzA0Rn0iCisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMjY0LDApIHdpZHRoIDM5OTogIlx4ezg5OEJ9XHh7MzA2NH1c
eHszMDUxfVx4ezMwNUZ9XHh7MzA1OX1ceHszMDcwfVx4ezMwODl9XHh7MzA1N31ceHszMDQ0fVx4
ezhBMTh9XHh7NEU4Qn1ceHszMDRDfVx4ezMwNjl9XHh7MzA1M31ceHszMDZCfVx4ezMwNDJ9XHh7
MzA2M31ceHszMDVGfVx4ezMwNEJ9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI4OCwwKSB3
aWR0aCAzODM6ICJceHs1RkQ4fVx4ezMwOEN9XHh7MzA2Nn1ceHszMDU3fVx4ezMwN0V9XHh7MzA2
M31ceHszMDVGfVx4ezdENEN9XHh7OUExM31ceHszMDZGfVx4ezMwNDJ9XHh7MzA4QX1ceHszMDdF
fVx4ezMwNTl9XHh7MzA0Qn0gXHh7MzA2QX1ceHszMDg5fVx4ezMwQkZ9IgorICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDMxMiwwKSB3aWR0aCAzMzY6ICJceHszMEE0fVx4ezMwQzh9XHh7MzBFQn1c
eHszMDY4fVx4ezMwQTJ9XHh7MzBDOX1ceHszMEVDfVx4ezMwQjl9XHh7MzA2MH1ceHszMDUxfVx4
ezMwNjd9XHh7MzA2QX1ceHszMDRGfVx4ezMwMDF9XHh7OEEyQX1ceHs1NTRGfSIKKyAgUmVnaW9u
cyBmb3IgZmxvdyAndGhyZWFkJworICAgIFJlbmRlclJlZ2lvbiB7RElWfQorc2VsZWN0aW9uIHN0
YXJ0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJv
ZHkKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMjkgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNo
aWxkIDEge0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWlu
dmFsaWRhdGlvbi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMDdiMjFlYwpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3Rl
ZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9y
ZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbnZhbGlkYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0
aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODBm
ZmNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVw
YWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6
ZSAzMDJ4MTUyIFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCld
CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNTIpIHNpemUgNzg0eDE4Cisg
ICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE3CisgICAgICBSZW5kZXJSZWdp
b24ge0RJVn0gYXQgKDAsMTcwKSBzaXplIDMwMngyMDIgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRl
cjogKDFweCBzb2xpZCAjMDAwMDAwKV0KK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93
LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDM1MAorICAgICAgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMzAweDM1MAorICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzNTAKKyAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzNTAgW2JnY29sb3I9IzAwODAwMF0KKyAgUmVnaW9ucyBm
b3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xCisgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5n
LXZpYS1sYXlvdXQtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUwYmE5YzkKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4cGVjdGVk
LnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3Jl
cGFpbnQvcmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQxZWJkZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlcGFpbnQv
cmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1ODQKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDc4Nngx
ODIgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KK0Zsb3cg
VGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgw
LDApIHNpemUgNzg0eDExODAgYmFja2dyb3VuZENsaXAgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwIGNs
aXAgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwIG91dGxpbmVDbGlwIGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgNzg0eDExODAKKyAg
ICBsYXllciBhdCAoMCwwKSBzaXplIDc4NHgxMjAwIGJhY2tncm91bmRDbGlwIGF0ICgwLDApIHNp
emUgODAweDYwMCBjbGlwIGF0ICgwLDApIHNpemUgODAweDYwMCBvdXRsaW5lQ2xpcCBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgICAgIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7
RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxMjAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDEwMDApIHNpemUgNzg0eDIwMAorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDApIHNpemUgNzg0eDIwMCBbYmdjb2xvcj0jMDA4MDAwXQorICBSZWdpb25zIGZvciBmbG93ICdm
bG93MScKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEKKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gI3JlZ2lvbjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azEv
ZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGstd2sxL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9jay1jaGFuZ2Ut
ZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzBlMjM2Li4wMDAw
MDAwCkJpbmFyeSBmaWxlcyBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azEvZmFzdC9jc3Mv
Zmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1leHBlY3RlZC5wbmcgYW5kIC9kZXYvbnVsbCBkaWZm
ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA2MDQzOWE1Li4zM2U3ZjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC01MjEsNyArNTIxLDcgQEAgQnVnKEdUSykgZmFzdC9jc3MvaW1h
Z2UtcmVuZGVyaW5nLmh0bWwgWyBGYWlsdXJlIF0KIAogQnVnKEdUSykgZmFzdC9jc3Mvc3RpY2t5
L3N0aWNreS10b3Atem9vbWVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotQnVnKEdUSykg
ZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK0J1ZyhHVEspIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogQnVnKEdUSykgZmFzdC90ZXh0L2Rlc2NlbnQtY2xp
cC1pbi1zY2FsZWQtcGFnZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWJsb2Nr
LWNoYW5nZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL2Zhc3Qv
Y3NzL2ZpcnN0LWxldHRlci1ibG9jay1jaGFuZ2UtZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhN2JhM2YyLi4wMDAwMDAwCkJpbmFyeSBmaWxlcyBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay13azIvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1l
eHBlY3RlZC5wbmcgYW5kIC9kZXYvbnVsbCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTFkNzM3OC4uYjhhNDQ0MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQxLDE2ICs0MSw2IEBACiAjIFRlc3Rz
IHRoYXQgcmVxdWlyZSBuZXcgcmVzdWx0cy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCiAKLSMgVGVzdHMgbmVlZCBuZXcgZ2VuZXJhdGVkIGV4cGVjdGVkIHJlc3VsdHMKLXdlYmtp
dC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLmh0bWwg
WyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktZHluYW1pYy1yZW1vdmUuaHRtbCBbIE1pc3NpbmcgXQotd2Via2l0Lm9yZy9iLzEyMTgy
OCBmYXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJs
ZS13aWR0aC1yZWdpb25zLmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFz
dC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0LXNtYWxsLXBhZ2luYXRpb24uaHRtbCBbIE1pc3Np
bmcgXQotd2Via2l0Lm9yZy9iLzEyMTgyOCBmYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1v
Zi1zZWNvbmQtcmVnaW9uLmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFz
dC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMuaHRtbCBb
IE1pc3NpbmcgXQotd2Via2l0Lm9yZy9iLzEyMTgyOCBmYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50
aW5nLWludmFsaWRhdGlvbi5odG1sIFsgTWlzc2luZyBdCi13ZWJraXQub3JnL2IvMTIxODI4IGZh
c3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC5odG1sIFsgTWlzc2luZyBdCi0K
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEV4cGVjdGVkIGZhaWx1cmVzCiAj
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9jay1jaGFuZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9j
ay1jaGFuZ2UtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGMx
OWVmLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nzcy9maXJz
dC1sZXR0ZXItYmxvY2stY2hhbmdlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1
ICswLDAgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjYKLSAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDY2Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsMTYpIHNpemUgNzg0eDM0Ci0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3
ODR4MzQKLSAgICAgICAgUmVuZGVySW5saW5lIChnZW5lcmF0ZWQpIGF0ICgwLDApIHNpemUgNXgx
NyBbY29sb3I9I0NCMDAwRl0KLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA1eDE3Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1OiAiSSIKLSAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1LDApIHNpemUgMTQ3eDE3Ci0gICAgICAgICAg
dGV4dCBydW4gYXQgKDUsMCkgd2lkdGggMTQ3OiAiIGFtIGFkZGluZyBhIG5ldyB0ZXh0LiAiCi0g
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTUyLDApIHNpemUgNzc1eDM0Ci0gICAgICAg
ICAgdGV4dCBydW4gYXQgKDE1MiwwKSB3aWR0aCAzNzg6ICJUaGlzIGlzIGEgdGVzdCBwYXJhZ3Jh
cGguIFlvdSBjYW4gaW5zZXJ0IGV4dHJhIHRleHQgYXQgaXRzIHN0YXJ0OyAiCi0gICAgICAgICAg
dGV4dCBydW4gYXQgKDUzMCwwKSB3aWR0aCAyNDU6ICJ0aGUgOmZpcnN0LWxldHRlciBzdHlsZXMg
c2hvdWxkIGJlIHVwZGF0ZWQiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTcpIHdpZHRoIDE3
OTogInRvIGFjY29tb2RhdGUgdGhpcyBuZXcgdGV4dC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVj
dGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvYXV0b2hlaWdo
dC1yZWdpb25zLW1hcmstZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRjMTRiNjAKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVjdGVk
LnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3Jl
Z2lvbnMvYXV0b2hlaWdodC1yZWdpb25zLW1hcmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM0MTY0YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvYXV0b2hl
aWdodC1yZWdpb25zLW1hcmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDYgQEAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHgxMTYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgx
MDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDUweDUwCisgICAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsNTApIHNpemUgNTB4MAorICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDUwKSBzaXplIDUweDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAo
MCw1MCkgc2l6ZSA1MHg1MAorbGF5ZXIgYXQgKDgsNTApIHNpemUgNTB4NDUwCisgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoOCw1MCkgc2l6ZSA1MHg0NTAKK2xheWVyIGF0ICg1MCw4KSBzaXplIDY1
MHg1MAorICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDUwLDgpIHNpemUgNjUweDUwCitGbG93IFRo
cmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93JworICAgIGxheWVyIGF0ICgwLDAp
IHNpemUgNTB4NTAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDUw
eDUwCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3cnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNy
ZWdpb24KKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MicKKyAgUmVnaW9ucyBmb3IgZmxv
dyAnZmxvdzInCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yIGhhc0F1dG9Mb2dpY2Fs
SGVpZ2h0CisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzMnCisgICAgbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA1MHg0NTAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXpl
IDUweDQ1MAorICBSZWdpb25zIGZvciBmbG93ICdmbG93MycKKyAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gI3JlZ2lvbjMgaGFzTGF5ZXIKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93NCcKKyAg
ICBsYXllciBhdCAoMCwwKSBzaXplIDY1MHg1MAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFk
IGF0ICgwLDApIHNpemUgNjUweDUwCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3c0JworICAgIFJl
bmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uNCBoYXNMYXllcgorICBUaHJlYWQgd2l0aCBmbG93LW5h
bWUgJ2Zsb3c1JworICBSZWdpb25zIGZvciBmbG93ICdmbG93NScKKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0gI3JlZ2lvbjUgaGFzQXV0b0xvZ2ljYWxIZWlnaHQKKyAgVGhyZWFkIHdpdGggZmxvdy1u
YW1lICdmbG93NicKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDUweDUwCisgICAgICBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSA1MHg1MAorICBSZWdpb25zIGZvciBmbG93ICdm
bG93NicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjYKKyAgVGhyZWFkIHdpdGggZmxv
dy1uYW1lICdmbG93OCcKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzgnCisgICAgUmVuZGVyUmVn
aW9uIHtESVZ9ICNyZWdpb244IGludmFsaWQKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93
NycKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzcnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNy
ZWdpb243IGhhc0F1dG9Mb2dpY2FsSGVpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmcgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1l
eHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ4ZGM0YwpC
aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJh
c2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMv
Zmxvdy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44OGRmOTRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTkxCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxOTEKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHgxNjcKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDAp
IHNpemUgNzg0eDE3CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2
NngxNworICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQwNTogIlRoZSB3b3JkcyBc
ImZsb3cgY29udGVudFwiIGluIGdyZWVuIHNob3VsZCBkaXNwbGF5IGFmdGVyIHRoaXMgZGl2LCAi
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDQwNSwwKSB3aWR0aCAzNjE6ICJhbmQgdGhlcmUgc2hv
dWxkIGJlIHR3byBjb3BpZXMgb2YgdGhpcyBjb250ZW50IHRoYXQgbWF0Y2guIgorICAgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDE3KSBzaXplIDMwMHgxMDAKKyAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDExNykgc2l6ZSA3ODR4MTcKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNzY2eDE3CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NDA1OiAiVGhlIHdvcmRzIFwiZmxvdyBjb250ZW50XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkg
YWZ0ZXIgdGhpcyBkaXYsICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDA1LDApIHdpZHRoIDM2
MTogImFuZCB0aGVyZSBzaG91bGQgYmUgdHdvIGNvcGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBt
YXRjaC4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNTApIHNpemUgNzg0eDE3IFtj
b2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MTcKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3OXgxNworICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6ICJmbG93IGNvbnRlbnQiCitGbG93
IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdtYWluLXRocmVhZCcKKyAgICBsYXll
ciBhdCAoMCwwKSBzaXplIDMwMHgxMDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAo
MCwwKSBzaXplIDMwMHgxMDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTYpIHNp
emUgMzAweDE3IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDMwMHgxNworICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgNzl4MTcKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6ICJm
bG93IGNvbnRlbnQiCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ21haW4tdGhyZWFkJworICAgIFJlbmRl
clJlZ2lvbiB7RElWfSAjcmVnaW9uMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFz
aWMtdmVydGljYWwtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQwZTAwOTcKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3Rl
ZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9y
ZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNh
bC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNkODY5
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lv
bnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMw
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgMjI1eDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSAyMjV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSAyMDF4NTg0CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDM0
eDU4NAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNHg1NTYKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0MDU6ICJUaGUgd29yZHMgXCJmbG93IGNv
bnRlbnRcIiBpbiBncmVlbiBzaG91bGQgZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgIgorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDQwNSkgd2lkdGggMTUxOiAiYW5kIHRoZXJlIHNob3VsZCBiZSB0
d28iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDE3LDApIHdpZHRoIDIwNjogImNvcGllcyBvZiB0
aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4iCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDM0
LDApIHNpemUgMTAweDMwMAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDEzNCwwKSBzaXpl
IDM0eDU4NAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNHg1NTYK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0MDU6ICJUaGUgd29yZHMgXCJmbG93
IGNvbnRlbnRcIiBpbiBncmVlbiBzaG91bGQgZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgIgorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDQwNSkgd2lkdGggMTUxOiAiYW5kIHRoZXJlIHNob3VsZCBi
ZSB0d28iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDE3LDApIHdpZHRoIDIwNjogImNvcGllcyBv
ZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MTg0LDApIHNpemUgMTd4NTg0IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSAxN3g1ODQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxN3g3OQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6
ICJmbG93IGNvbnRlbnQiCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdt
YWluLXRocmVhZCcKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDEwMHgzMDAKKyAgICAgIFJlbmRl
ck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDEwMHgzMDAKKyAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDE2LDApIHNpemUgMTd4MzAwIFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDE3eDMwMAorICAgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTd4NzkKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzk6ICJmbG93IGNvbnRlbnQiCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ21h
aW4tdGhyZWFkJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMt
dmVydGljYWwtcmwtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
cmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5nCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZGRkY2QKQmluYXJ5IGZpbGVzIC9kZXYv
bnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29u
dGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12
ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9y
ZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM5MDc0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
LXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICg0NTEsMCkgc2l6ZSAzNDl4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDM0OXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDMyNXg1ODQK
KyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMzR4NTg0CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM0eDU2NgorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQ0MzogIlRoZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVu
IHNob3VsZCBkaXNwbGF5IHR3aWNlIGFmdGVyIHRoaXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsNDQzKSB3aWR0aCAxMjM6ICJhbmQgdGhlcmUgc2hvdWxkIGJlIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICgxNywwKSB3aWR0aCAyMzQ6ICJ0d28gY29waWVzIG9mIHRoaXMgY29udGVu
dCB0aGF0IG1hdGNoLiIKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMzQsMCkgc2l6ZSAx
MTJ4MzEyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICBSZW5kZXJSZWdpb24g
e0RJVn0gYXQgKDE0NiwwKSBzaXplIDExMngzMTIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAw
KV0KKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNTgsMCkgc2l6ZSAzNHg1ODQKKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzR4NTU2CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNDA1OiAiVGhlIHdvcmRzIFwiZmxvdyBjb250ZW50XCIgaW4g
Z3JlZW4gc2hvdWxkIGRpc3BsYXkgYWZ0ZXIgdGhpcyBkaXYsICIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw0MDUpIHdpZHRoIDE1MTogImFuZCB0aGVyZSBzaG91bGQgYmUgdHdvIgorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxNywwKSB3aWR0aCAyMDY6ICJjb3BpZXMgb2YgdGhpcyBjb250ZW50
IHRoYXQgbWF0Y2guIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMwOCwwKSBzaXplIDE3
eDU4NCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNp
emUgMTd4NTg0CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTd4
NzkKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc5OiAiZmxvdyBjb250ZW50
IgorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnbWFpbi10aHJlYWQnCisg
ICAgbGF5ZXIgYXQgKDYwMCwwKSBzaXplIDIwMHgzMDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZCBhdCAoMCwwKSBzaXplIDIwMHgzMDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMCkgc2l6ZSAyMDB4MzAwIFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDApIHNpemUgMTAweDMwMAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTd4MTA3CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDEwNzogImZpcnN0IGZsb3cgY29udGVudCIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMTAwLDApIHNpemUgMTAweDMwMAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTd4MTI3CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDEyNzogInNlY29uZCBmbG93IGNvbnRlbnQiCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ21h
aW4tdGhyZWFkJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMQorICAgIFJlbmRlclJl
Z2lvbiB7RElWfSAjcmVnaW9uMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZGMxNGI2MApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92
ZS1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yOTZlOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNgorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElW
fSBhdCAoMCwwKSBzaXplIDB4MAorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFt
ZSAnZmxvd0MnCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0EnCisgIFJlZ2lvbnMgZm9y
IGZsb3cgJ2Zsb3dBJworICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICAgIFJlbmRlclJlZ2lvbiB7
RElWfQorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJworICBSZWdpb25zIGZvciBmbG93
ICdmbG93QicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdl
cy1pbi12YXJpYWJsZS13aWR0aC1yZWdpb25zLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1p
bi12YXJpYWJsZS13aWR0aC1yZWdpb25zLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iMjRjODZhCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0
eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGRpZmZlcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9tdWx0aXBs
ZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9tdWx0aXBsZS1k
aXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lvbnMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YTFhZjkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL211bHRpcGxl
LWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9ucy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg0
MjIKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDQyMgorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDQwNgorICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMCkgc2l6ZSA3ODR4NDA2CisgICAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAo
MCwwKSBzaXplIDQwMngxMDIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAg
UmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDEwMikgc2l6ZSA1MDJ4MTgyIFtib3JkZXI6ICgxcHgg
c29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwyODQpIHNp
emUgMjAyeDEyMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorRmxvdyBUaHJlYWRzCisg
IFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzEnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA1
MDB4NDAwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSA1MDB4NDAw
CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNSwwKSBzaXplIDQ1MHgzNzIKKyAgICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjcsMTUpIHNpemUgMzk2eDM0MiBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDAwRkYpXQorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDQw
LDExKSBzaXplIDMxNngyNDIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDA4MDAwKV0KKyAgICAgICAg
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxLDE3KSBzaXplIDMxNHg5MQorICAgICAgICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoLTE4LDApIHNpemUgMzMxeDkxCisgICAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoLTE4LDApIHdpZHRoIDI0ODogIlRoaXMgbGluZSBvZiB0ZXh0
IHNob3VsZCBub3QgZ2V0IG91dCBvZiIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgt
MTgsMTcpIHdpZHRoIDI0ODogInRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBu
b3QiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoLTE4LDM0KSB3aWR0aCAyNDg6ICJn
ZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IgorICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsNTcpIHdpZHRoIDMxMzogInNob3VsZCBub3QgZ2V0IG91dCBvZiB0
aGUgcmVnaW9uLiBUaGlzIGxpbmUgb2YgdGV4dCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDc0KSB3aWR0aCAyMDE6ICJzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4i
CisgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMSwxMjQpIHNpemUgMzE0eDY4Cisg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzEzeDY4Cisg
ICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTM6ICJUaGlzIGxpbmUg
b2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4iCisgICAgICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxNykgd2lkdGggMzEzOiAiVGhpcyBsaW5lIG9mIHRleHQgc2hv
dWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIgorICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMzQpIHdpZHRoIDMxMzogIlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0
IG91dCBvZiB0aGUgcmVnaW9uLiIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDUx
KSB3aWR0aCAzMDQ6ICJUaGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhl
IHJlZ2lvbi4iCisgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMSwyMDgpIHNpemUg
MzE0eDE3CisgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MzA0eDE3CisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMDQ6ICJU
aGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4iCisgIFJl
Z2lvbnMgZm9yIGZsb3cgJ2Zsb3cxJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMQor
ICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAj
cmVnaW9uMwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9u
cy9yZWdpb24tZHluYW1pYy1hZnRlci1iZWZvcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9yZWdpb24tZHluYW1pYy1hZnRlci1iZWZvcmUtZXhw
ZWN0ZWQudHh0CmluZGV4IDBhYWUwM2QuLmQ5ZjM4ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvcmVnaW9uLWR5bmFtaWMtYWZ0ZXItYmVmb3JlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3Jl
Z2lvbi1keW5hbWljLWFmdGVyLWJlZm9yZS1leHBlY3RlZC50eHQKQEAgLTIyLDQgKzIyLDQgQEAg
RmxvdyBUaHJlYWRzCiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInNv
bWUgdGV4dCB0byIKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3KSB3aWR0aCAyOTogImZs
b3ciCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ25hbWVkRmxvdycKLSAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gI3JlZ2lvbgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uIGhhc0xheWVyCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3JlZ2lvbi1nZW5l
cmF0ZWQtY29udGVudC1iZWZvcmUtYWZ0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9yZWdpb24tZ2VuZXJhdGVkLWNvbnRlbnQtYmVmb3JlLWFm
dGVyLWV4cGVjdGVkLnR4dAppbmRleCAwYWFlMDNkLi5kOWYzODgyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3JlZ2lvbi1nZW5lcmF0ZWQtY29udGVu
dC1iZWZvcmUtYWZ0ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9mYXN0L3JlZ2lvbnMvcmVnaW9uLWdlbmVyYXRlZC1jb250ZW50LWJlZm9yZS1hZnRlci1leHBl
Y3RlZC50eHQKQEAgLTIyLDQgKzIyLDQgQEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInNvbWUgdGV4dCB0byIKICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE3KSB3aWR0aCAyOTogImZsb3ciCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ25hbWVk
RmxvdycKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbgorICAgIFJlbmRlclJlZ2lvbiB7
RElWfSAjcmVnaW9uIGhhc0xheWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0LXNtYWxsLXBhZ2luYXRpb24tZXhwZWN0
ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lv
bi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMjA4Y2ZjCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFs
bC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5h
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25z
L3RleHQtcmVnaW9uLXNwbGl0LXNtYWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NzQ4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0LXNt
YWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4Mjc2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHgyNzYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwxNikgc2l6ZSA3ODR4MjQ0
CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDR4MzQgW2JvcmRlcjog
KDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCw1MCkg
c2l6ZSAyMDR4NTQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoMCwxMjApIHNpemUgMjA0eDU0IFtib3JkZXI6ICgycHggc29saWQgIzAw
MDAwMCldCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTkwKSBzaXplIDIwNHg1NCBb
Ym9yZGVyOiAoMnB4IHNvbGlkICMwMDAwMDApXQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRo
IGZsb3ctbmFtZSAnZmxvdycKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDIwMHgxODAKKyAgICAg
IFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgxODAKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMzApIHNpemUgMjAweDExNworICAgICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDIwMHgxMTcKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7
Qn0gYXQgKDAsMCkgc2l6ZSAxMTF4MTcKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMTExeDE3CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTExOiAiVGV4dCBpbiByZWdpb24gMi4iCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDExMSwwKSBzaXplIDE0M3gzNAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MTExLDApIHdpZHRoIDMyOiAiIFRoaXMiCisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3
KSB3aWR0aCA5OTogInBhcmFncmFwaCBoYXMgXCIiCisgICAgICAgICAgICBSZW5kZXJJbmxpbmUg
e0l9IGF0ICgwLDApIHNpemUgMTk2eDUwCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoOTksMTcpIHNpemUgMTk2eDUwCisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDk5
LDE3KSB3aWR0aCA5NzogIi13ZWJraXQtcmVnaW9uLSIKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw1MCkgd2lkdGggMTIzOiAiYnJlYWstYWZ0ZXI6IGFsd2F5cyIKKyAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTIzLDUwKSBzaXplIDE1eDE3CisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgxMjMsNTApIHdpZHRoIDE1OiAiXCIuICIKKyAgICAgICAgICAgIFJlbmRl
cklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxNzl4NjcKKyAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxMzgsNTApIHNpemUgMTc5eDY3CisgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDEzOCw1MCkgd2lkdGggNDE6ICJUaGVyZSIKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw2Nykgd2lkdGggMTY2OiAic2hvdWxkIGJlIG5vdGhpbmcgaW4gdGhpcyIKKyAgICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMDApIHdpZHRoIDEzOTogInJlZ2lvbiBhZnRlciB0
aGlzIGxpbmUuIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93JworICAgIFJlbmRlclJlZ2lvbiB7
RElWfSAjcmVnaW9uMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMgorICAgIFJlbmRl
clJlZ2lvbiB7RElWfSAjcmVnaW9uMworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uNApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy90b3Atb3Zl
cmZsb3ctb3V0LW9mLXNlY29uZC1yZWdpb24tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ctb3V0LW9mLXNlY29uZC1yZWdpb24t
ZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZDY2NGEK
QmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9yZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC5wbmcg
ZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25z
L3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25k
LXJlZ2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTNlNjQyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmll
dyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDQxNAorICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NDE0CisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsMTYpIHNpemUgNzg0eDM5MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDApIHNpemUgNzg0eDY4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDc3OXg2OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc3NTogIkluIHRoZSB0
ZXN0IGNhc2UgYmVsb3csIHRoZSBncmVlbiBibG9jaydzIHdpZHRoIHNob3VsZCBub3QgdmFyeSBh
bmQgc2hvdWxkIHVzZSB0aGUgc2Vjb25kIHJlZ2lvbiB0byBkZXRlcm1pbmUgaXRzIHdpZHRoLiBJ
dCBpcyIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNykgd2lkdGggNzMxOiAib3ZlcmZsb3dp
bmcgdXB3YXJkcyBvdXQgb2YgdGhlIGJsdWUgYmxvY2ssIGFuZCBzbyB0aGUgcG9ydGlvbiB0aGF0
IG92ZXJmbG93cyBzaG91bGQgY29udGludWUgdG8gdXNlIHRoZSBibHVlIGJsb2NrJ3MiCisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMzQpIHdpZHRoIDc3OTogImNvbnRhaW5pbmcgYmxvY2sgd2lk
dGguIFRoZSBibHVlIGJsb2NrIGRvZXMgbm90IGV4aXN0IGluIHJlZ2lvbiBvbmUsIHNvIHVzaW5n
IHNvbWUgaHlwb3RoZXRpY2FsIG1hZGUtdXAgd2lkdGggaXMgaW5jb3JyZWN0LiIKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCw1MSkgd2lkdGggNTY1OiAiVGhlIG92ZXJmbG93IHNob3VsZCBiZSBz
cGlsbGluZyBvdXQgb2YgdGhlIHRvcCBvZiByZWdpb24gdHdvIGFuZCBiZSBwYWludGVkIGluIHJl
Z2lvbiBvbmUuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsODQpIHNpemUgNzg0eDMw
NgorICAgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDJ4MTAyIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAo
MCwxMDIpIHNpemUgNDAyeDIwMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMzA0KSBzaXplIDJ4MiBbYm9yZGVyOiAoMXB4IHNv
bGlkICMwMDAwMDApXQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
dzEnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA0MDB4MzAwCisgICAgICBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSA0MDB4MzAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgNDAweDE3NAorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg1
LDEwMCkgc2l6ZSAzOTB4NjkgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMEZGKV0KKyAgICAgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg0OCwtOTkpIHNpemUgMjk0eDE2NyBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDgwMDApXQorICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDEs
MTcpIHNpemUgMjkxeDUxCisgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMjkxeDUxCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAyOTE6ICJUaGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0byB0aGUgd2lkdGggb2YgdGhlIgor
ICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTcpIHdpZHRoIDI5MTogImJsb2NrIGlu
IHRoZSBzZWNvbmQgcmVnaW9uIGFuZCBzcGlsbCBvdXQgb2YgdGhlIgorICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMzQpIHdpZHRoIDExMjogInRvcCBvZiB0aGUgc2Vjb25kICIKKyAg
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMTIsMzQpIHdpZHRoIDQ0OiAicmVnaW9uLiIK
KyAgICAgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxLDk5KSBzaXplIDI5MXg1MQorICAg
ICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI5MXg1MQorICAg
ICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjkxOiAiVGhlc2UgbGluZXMg
c2hvdWxkIGFsbCBmaXQgdG8gdGhlIHdpZHRoIG9mIHRoZSIKKyAgICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDE3KSB3aWR0aCAyOTE6ICJibG9jayBpbiB0aGUgc2Vjb25kIHJlZ2lvbiBh
bmQgc3BpbGwgb3V0IG9mIHRoZSIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM0
KSB3aWR0aCAxMTI6ICJ0b3Agb2YgdGhlIHNlY29uZCAiCisgICAgICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMTEyLDM0KSB3aWR0aCA0NDogInJlZ2lvbi4iCisgIFJlZ2lvbnMgZm9yIGZsb3cg
J2Zsb3cxJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMQorICAgIFJlbmRlclJlZ2lv
biB7RElWfSAjcmVnaW9uMgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1z
ZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4t
cmVnaW9ucy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZWIyMjBjOQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9u
cy1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9qYXBh
bmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjc5ZDk0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rp
b24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKK2xheWVyIGF0ICg3NTQsMCkgc2l6ZSA0Nng2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgNDZ4NjAwIFtib3JkZXI6ICgxMHB4IHNvbGlkICM4MDAwMDApXQorICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICgxOCwxOCkgc2l6ZSAxMHg1NjQgW2JvcmRlcjogKDVweCBzb2xp
ZCAjMDAwMDAwKV0KK2xheWVyIGF0ICgyOTYsMTAwKSBzaXplIDQwNHg0MDQKKyAgUmVuZGVyUmVn
aW9uIHtESVZ9IGF0ICgxMDAsMTAwKSBzaXplIDQwNHg0MDQgW2JvcmRlcjogKDJweCBzb2xpZCAj
MDAwMDAwKV0KK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ3RocmVhZCcK
KyAgICBsYXllciBhdCAoNDAwLDApIHNpemUgNDAweDQwMAorICAgICAgUmVuZGVyTmFtZWRGbG93
VGhyZWFkIGF0ICgwLDApIHNpemUgNDAweDQwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDM1MHg0MDAKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEs
MCkgc2l6ZSAzNDd4NDAwCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwwKSB3aWR0aCAzODA6
ICJceHszMDVCfVx4ezMwNjN9XHh7MzA0Qn1ceHszMDRGfVx4ezg5OEJ9XHh7MzA2NH1ceHszMDUx
fVx4ezMwNUZ9XHh7MzA1OX1ceHszMDcwfVx4ezMwODl9XHh7MzA1N31ceHszMDQ0fVx4ezhBMTh9
XHh7NEU4Qn1ceHszMDRDfVx4ezMwNjl9XHh7MzA1M31ceHszMDZCfSIKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgyNiwwKSB3aWR0aCA0MDA6ICJceHszMDQyfVx4ezMwNjN9XHh7MzA1Rn1ceHsz
MDRCfVx4ezVGRDh9XHh7MzA4Q31ceHszMDY2fVx4ezMwNTd9XHh7MzA3RX1ceHszMDYzfVx4ezMw
NUZ9XHh7N0Q0Q31ceHs5QTEzfVx4ezMwNkZ9XHh7MzA0Mn1ceHszMDhBfVx4ezMwN0V9XHh7MzA1
OX1ceHszMDRCfVx4ezMwNkF9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUxLDApIHdpZHRo
IDQwMDogIlx4ezMwODl9XHh7MzBCRn1ceHszMEE0fVx4ezMwQzh9XHh7MzBFQn1ceHszMDY4fVx4
ezMwQTJ9XHh7MzBDOX1ceHszMEVDfVx4ezMwQjl9XHh7MzA2MH1ceHszMDUxfVx4ezMwNjd9XHh7
MzA2QX1ceHszMDRGfVx4ezMwMDF9XHh7OEEyQX1ceHs1NTRGfVx4ezMwNTd9XHh7MzA1Rn0iCisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzYsMCkgd2lkdGggMzk4OiAiXHh7MzBBNn1ceHszMEE3
fVx4ezMwRDZ9XHh7MzBEQX1ceHszMEZDfVx4ezMwQjh9XHh7MzA2RX1ceHszMEIzfVx4ezMwRjN9
XHh7MzBDNn1ceHszMEYzfVx4ezMwQzR9XHh7MzA0Qn1ceHszMDg5fVx4ezMwODJ9XHh7NjkxQ31c
eHs3RDIyfVx4ezMwNTl9XHh7MzA4Qn1ceHszMDUzfSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgxMDEsMCkgd2lkdGggNDAwOiAiXHh7MzA2OH1ceHszMDRDfVx4ezMwNjd9XHh7MzA0RH1ceHsz
MDdFfVx4ezMwNTl9XHh7MzAwMn1ceHszMDVCfVx4ezMwNjN9XHh7MzA0Qn1ceHszMDRGfVx4ezg5
OEJ9XHh7MzA2NH1ceHszMDUxfVx4ezMwNUZ9XHh7MzA1OX1ceHszMDcwfVx4ezMwODl9XHh7MzA1
N31ceHszMDQ0fSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjYsMCkgd2lkdGggNDAwOiAi
XHh7OEExOH1ceHs0RThCfVx4ezMwNEN9XHh7MzA2OX1ceHszMDUzfVx4ezMwNkJ9XHh7MzA0Mn1c
eHszMDYzfVx4ezMwNUZ9XHh7MzA0Qn1ceHs1RkQ4fVx4ezMwOEN9XHh7MzA2Nn1ceHszMDU3fVx4
ezMwN0V9XHh7MzA2M31ceHszMDVGfVx4ezdENEN9XHh7OUExM31ceHszMDZGfSIKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxNTEsMCkgd2lkdGggMzg1OiAiXHh7MzA0Mn1ceHszMDhBfVx4ezMw
N0V9XHh7MzA1OX1ceHszMDRCfSBceHszMDZBfVx4ezMwODl9XHh7MzBCRn1ceHszMEE0fVx4ezMw
Qzh9XHh7MzBFQn1ceHszMDY4fVx4ezMwQTJ9XHh7MzBDOX1ceHszMEVDfVx4ezMwQjl9XHh7MzA2
MH1ceHszMDUxfVx4ezMwNjd9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE3NiwwKSB3aWR0
aCAzOTg6ICJceHszMDZBfVx4ezMwNEZ9XHh7MzAwMX1ceHs4QTJBfVx4ezU1NEZ9XHh7MzA1N31c
eHszMDVGfVx4ezMwQTZ9XHh7MzBBN31ceHszMEQ2fVx4ezMwREF9XHh7MzBGQ31ceHszMEI4fVx4
ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4ezMwQzZ9XHh7MzBGM31ceHszMEM0fVx4ezMwNEJ9Igor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIwMSwwKSB3aWR0aCA0MDA6ICJceHszMDg5fVx4ezMw
ODJ9XHh7NjkxQ31ceHs3RDIyfVx4ezMwNTl9XHh7MzA4Qn1ceHszMDUzfVx4ezMwNjh9XHh7MzA0
Q31ceHszMDY3fVx4ezMwNER9XHh7MzA3RX1ceHszMDU5fVx4ezMwMDJ9XHh7OEEyQX1ceHs1NTRG
fVx4ezMwNTd9XHh7MzA1Rn1ceHszMEE2fVx4ezMwQTd9IgorICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDIyNiwwKSB3aWR0aCAzOTg6ICJceHszMEQ2fVx4ezMwREF9XHh7MzBGQ31ceHszMEI4fVx4
ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4ezMwQzZ9XHh7MzBGM31ceHszMEM0fVx4ezMwNEJ9XHh7
MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7N0QyMn1ceHszMDU5fVx4ezMwOEJ9XHh7MzA1M31ceHsz
MDY4fVx4ezMwNEN9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI1MSwwKSB3aWR0aCA0MDA6
ICJceHszMDY3fVx4ezMwNER9XHh7MzA3RX1ceHszMDU5fVx4ezMwMDJ9XHh7MzA1Qn1ceHszMDYz
fVx4ezMwNEJ9XHh7MzA0Rn1ceHs4OThCfVx4ezMwNjR9XHh7MzA1MX1ceHszMDVGfVx4ezMwNTl9
XHh7MzA3MH1ceHszMDg5fVx4ezMwNTd9XHh7MzA0NH1ceHs4QTE4fVx4ezRFOEJ9IgorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDI3NiwwKSB3aWR0aCA0MDA6ICJceHszMDRDfVx4ezMwNjl9XHh7
MzA1M31ceHszMDZCfVx4ezMwNDJ9XHh7MzA2M31ceHszMDVGfVx4ezMwNEJ9XHh7NUZEOH1ceHsz
MDhDfVx4ezMwNjZ9XHh7MzA1N31ceHszMDdFfVx4ezMwNjN9XHh7MzA1Rn1ceHs3RDRDfVx4ezlB
MTN9XHh7MzA2Rn1ceHszMDQyfVx4ezMwOEF9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDMw
MSwwKSB3aWR0aCAzNjU6ICJceHszMDdFfVx4ezMwNTl9XHh7MzA0Qn0gXHh7MzA2QX1ceHszMDg5
fVx4ezMwQkZ9XHh7MzBBNH1ceHszMEM4fVx4ezMwRUJ9XHh7MzA2OH1ceHszMEEyfVx4ezMwQzl9
XHh7MzBFQ31ceHszMEI5fVx4ezMwNjB9XHh7MzA1MX1ceHszMDY3fVx4ezMwNkF9IgorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDMyNiwwKSB3aWR0aCA4MDogIlx4ezMwNEZ9XHh7MzAwMX1ceHs4
QTJBfVx4ezU1NEZ9IgorICBSZWdpb25zIGZvciBmbG93ICd0aHJlYWQnCisgICAgUmVuZGVyUmVn
aW9uIHtESVZ9IGhhc0xheWVyCitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDcwIG9mIGNoaWxk
IDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKK3NlbGVjdGlvbiBlbmQ6ICAgcG9z
aXRpb24gMjMwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvbGluZS1mbG93
LXdpdGgtZmxvYXRzLWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvcmVwYWludC9saW5lLWZsb3ctd2l0aC1mbG9hdHMtaW4tcmVnaW9ucy1leHBl
Y3RlZC50eHQKaW5kZXggOWVlOGQ1ZS4uOGI4ZTg2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9saW5lLWZsb3ctd2l0aC1mbG9hdHMtaW4tcmVnaW9u
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWlu
dC9saW5lLWZsb3ctd2l0aC1mbG9hdHMtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQKQEAgLTg1LDQg
Kzg1LDQgQEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg2
LDQ0OCkgd2lkdGggOTM6ICJoZXJlOyB0aGUgZ3JlYXQgIgogICAgICAgICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoOTksNDQ4KSB3aWR0aCAyNjE6ICJ3b25kZXIgaXMsIHRoYXQgdGhlcmVceHsy
MDE4fXMgYW55IG9uZSBsZWZ0IGFsaXZlIVx4ezIwMTl9IgogICBSZWdpb25zIGZvciBmbG93ICd0
aHJlYWQnCi0gICAgUmVuZGVyUmVnaW9uIHtESVZ9CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGhh
c0xheWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZXBhaW50
L292ZXJmbG93LWZsaXBwZWQtd3JpdGluZy1tb2RlLWJsb2NrLWluLXJlZ2lvbnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9vdmVyZmxvdy1mbGlw
cGVkLXdyaXRpbmctbW9kZS1ibG9jay1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dAppbmRleCAxM2E5
NDZiLi44ZDRjZTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9y
ZXBhaW50L292ZXJmbG93LWZsaXBwZWQtd3JpdGluZy1tb2RlLWJsb2NrLWluLXJlZ2lvbnMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvb3Zl
cmZsb3ctZmxpcHBlZC13cml0aW5nLW1vZGUtYmxvY2staW4tcmVnaW9ucy1leHBlY3RlZC50eHQK
QEAgLTE0LDQgKzE0LDQgQEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2JnY29sb3I9IzAwODAwMF0KICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMDB4NTAgW2JnY29sb3I9I0ZGMDAwMF0KICAg
UmVnaW9ucyBmb3IgZmxvdyAndGhyZWFkJwotICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICAgIFJl
bmRlclJlZ2lvbiB7RElWfSBoYXNMYXllcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVk
LnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50
aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNTM5ZmJkYQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1l
eHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbnZhbGlkYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52
YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iMTY5ZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAs
MCkgc2l6ZSAzMDJ4MTUyIFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAw
MDAwMCldCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNTIpIHNpemUgNzg0
eDE3CisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE3CisgICAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gYXQgKDAsMTY5KSBzaXplIDMwMngyMDIgW2JnY29sb3I9I0ZGMDAwMF0g
W2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0
aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDM1MAorICAg
ICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMzAweDM1MAorICAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzNTAKKyAgICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzNTAgW2JnY29sb3I9IzAwODAwMF0KKyAgUmVn
aW9ucyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xCisg
ICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4cGVj
dGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlcGFpbnQvcmVnaW9uLXBh
aW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmUwYmE5YzkKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4
cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxh
eW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBk
OTdmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3Jl
cGFpbnQvcmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTcgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXpl
IDc4NngxODIgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0K
K0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVy
IGF0ICgwLDApIHNpemUgNzg0eDExODAgYmFja2dyb3VuZENsaXAgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwIGNsaXAgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwIG91dGxpbmVDbGlwIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgNzg0eDEx
ODAKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDc4NHgxMjAwIGJhY2tncm91bmRDbGlwIGF0ICgw
LDApIHNpemUgODAweDYwMCBjbGlwIGF0ICgwLDApIHNpemUgODAweDYwMCBvdXRsaW5lQ2xpcCBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICAgIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlv
bmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxMjAwCisgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDEwMDApIHNpemUgNzg0eDIwMAorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgNzg0eDIwMCBbYmdjb2xvcj0jMDA4MDAwXQorICBSZWdpb25zIGZvciBm
bG93ICdmbG93MScKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEgaGFzTGF5ZXIKKyAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1saW9uL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtbGlvbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDRmOTg5ZjYuLmEwNDA5ZjYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1saW9uL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU2LDYg
KzE1NiwzIEBAIHdlYmtpdC5vcmcvYi8xMTg4NzAgWyBEZWJ1ZyBdIGNvbXBvc2l0aW5nL3BhdHRl
cm5zL2RpcmVjdC1wYXR0ZXJuLWNvbXBvc2l0aW5nLXBhCiB3ZWJraXQub3JnL2IvMTE4ODcwIFsg
RGVidWcgXSBjb21wb3NpdGluZy9wYXR0ZXJucy9kaXJlY3QtcGF0dGVybi1jb21wb3NpdGluZy1w
b3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTE4ODcwIFsg
RGVidWcgXSBjb21wb3NpdGluZy9wYXR0ZXJucy9kaXJlY3QtcGF0dGVybi1jb21wb3NpdGluZy1z
aXplLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0gICAKIHdlYmtpdC5vcmcvYi8xMTg4NzAgWyBE
ZWJ1ZyBdIGNvbXBvc2l0aW5nL3BhdHRlcm5zL2RpcmVjdC1wYXR0ZXJuLWNvbXBvc2l0aW5nLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBUZXN0cyBuZWVkIG5ldyBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgcmVzdWx0cwotd2Via2l0Lm9yZy9iLzEyMTgyOCBmYXN0L3JlcGFpbnQvamFwYW5lc2Ut
cmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy5odG1sIFsgTWlzc2luZyBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlcGFpbnQvamFwYW5lc2Ut
cmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtbGlvbi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJl
cGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTkwNDMxZQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVw
YWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1saW9uL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24t
cmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy1saW9uL2Zhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdp
b25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTZl
ZDhmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxpb24vZmFz
dC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDc1NCwwKSBzaXplIDQ2
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA0Nng2MDAgW2JvcmRlcjog
KDEwcHggc29saWQgIzgwMDAwMCldCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDE4LDE4KSBz
aXplIDEweDU2NCBbYm9yZGVyOiAoNXB4IHNvbGlkICMwMDAwMDApXQorbGF5ZXIgYXQgKDI5Niwx
MDApIHNpemUgNDA0eDQwNAorICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDEwMCwxMDApIHNpemUg
NDA0eDQwNCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwMDApXQorRmxvdyBUaHJlYWRzCisgIFRo
cmVhZCB3aXRoIGZsb3ctbmFtZSAndGhyZWFkJworICAgIGxheWVyIGF0ICg0MDAsMCkgc2l6ZSA0
MDB4NDAwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgYXQgKDAsMCkgc2l6ZSA0MDB4NDAw
CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMzUweDQwMAorICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwwKSBzaXplIDM0NngzOTAKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgyLDApIHdpZHRoIDM4MzogIlx4ezMwNUJ9XHh7MzA2M31ceHszMDRCfVx4
ezMwNEZ9XHh7ODk4Qn1ceHszMDY0fVx4ezMwNTF9XHh7MzA1Rn1ceHszMDU5fVx4ezMwNzB9XHh7
MzA4OX1ceHszMDU3fVx4ezMwNDR9XHh7OEExOH1ceHs0RThCfVx4ezMwNEN9XHh7MzA2OX1ceHsz
MDUzfVx4ezMwNkJ9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI3LDApIHdpZHRoIDM4Mzog
Ilx4ezMwNDJ9XHh7MzA2M31ceHszMDVGfVx4ezMwNEJ9XHh7NUZEOH1ceHszMDhDfVx4ezMwNjZ9
XHh7MzA1N31ceHszMDdFfVx4ezMwNjN9XHh7MzA1Rn1ceHs3RDRDfVx4ezlBMTN9XHh7MzA2Rn1c
eHszMDQyfVx4ezMwOEF9XHh7MzA3RX1ceHszMDU5fVx4ezMwNEJ9IgorICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDUyLDApIHdpZHRoIDM4MzogIlx4ezMwNkF9XHh7MzA4OX1ceHszMEJGfVx4ezMw
QTR9XHh7MzBDOH1ceHszMEVCfVx4ezMwNjh9XHh7MzBBMn1ceHszMEM5fVx4ezMwRUN9XHh7MzBC
OX1ceHszMDYwfVx4ezMwNTF9XHh7MzA2N31ceHszMDZBfVx4ezMwNEZ9XHh7MzAwMX1ceHs4QTJB
fVx4ezU1NEZ9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDc3LDApIHdpZHRoIDM4MzogIlx4
ezMwNTd9XHh7MzA1Rn1ceHszMEE2fVx4ezMwQTd9XHh7MzBENn1ceHszMERBfVx4ezMwRkN9XHh7
MzBCOH1ceHszMDZFfVx4ezMwQjN9XHh7MzBGM31ceHszMEM2fVx4ezMwRjN9XHh7MzBDNH1ceHsz
MDRCfVx4ezMwODl9XHh7MzA4Mn1ceHs2OTFDfVx4ezdEMjJ9IgorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDEwMiwwKSB3aWR0aCAzODM6ICJceHszMDU5fVx4ezMwOEJ9XHh7MzA1M31ceHszMDY4
fVx4ezMwNEN9XHh7MzA2N31ceHszMDREfVx4ezMwN0V9XHh7MzA1OX1ceHszMDAyfVx4ezMwNUJ9
XHh7MzA2M31ceHszMDRCfVx4ezMwNEZ9XHh7ODk4Qn1ceHszMDY0fVx4ezMwNTF9XHh7MzA1Rn1c
eHszMDU5fSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMjcsMCkgd2lkdGggMzYzOiAiXHh7
MzA3MH1ceHszMDg5fVx4ezMwNTd9XHh7MzA0NH1ceHs4QTE4fVx4ezRFOEJ9XHh7MzA0Q31ceHsz
MDY5fVx4ezMwNTN9XHh7MzA2Qn1ceHszMDQyfVx4ezMwNjN9XHh7MzA1Rn1ceHszMDRCfVx4ezVG
RDh9XHh7MzA4Q31ceHszMDY2fVx4ezMwNTd9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE1
MiwwKSB3aWR0aCAzOTA6ICJceHszMDdFfVx4ezMwNjN9XHh7MzA1Rn1ceHs3RDRDfVx4ezlBMTN9
XHh7MzA2Rn1ceHszMDQyfVx4ezMwOEF9XHh7MzA3RX1ceHszMDU5fVx4ezMwNEJ9IFx4ezMwNkF9
XHh7MzA4OX1ceHszMEJGfVx4ezMwQTR9XHh7MzBDOH1ceHszMEVCfVx4ezMwNjh9XHh7MzBBMn0i
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTc3LDApIHdpZHRoIDM4MzogIlx4ezMwQzl9XHh7
MzBFQ31ceHszMEI5fVx4ezMwNjB9XHh7MzA1MX1ceHszMDY3fVx4ezMwNkF9XHh7MzA0Rn1ceHsz
MDAxfVx4ezhBMkF9XHh7NTU0Rn1ceHszMDU3fVx4ezMwNUZ9XHh7MzBBNn1ceHszMEE3fVx4ezMw
RDZ9XHh7MzBEQX1ceHszMEZDfVx4ezMwQjh9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIw
MiwwKSB3aWR0aCAzODM6ICJceHszMDZFfVx4ezMwQjN9XHh7MzBGM31ceHszMEM2fVx4ezMwRjN9
XHh7MzBDNH1ceHszMDRCfVx4ezMwODl9XHh7MzA4Mn1ceHs2OTFDfVx4ezdEMjJ9XHh7MzA1OX1c
eHszMDhCfVx4ezMwNTN9XHh7MzA2OH1ceHszMDRDfVx4ezMwNjd9XHh7MzA0RH1ceHszMDdFfSIK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyMjcsMCkgd2lkdGggMzgzOiAiXHh7MzA1OX1ceHsz
MDAyfVx4ezhBMkF9XHh7NTU0Rn1ceHszMDU3fVx4ezMwNUZ9XHh7MzBBNn1ceHszMEE3fVx4ezMw
RDZ9XHh7MzBEQX1ceHszMEZDfVx4ezMwQjh9XHh7MzA2RX1ceHszMEIzfVx4ezMwRjN9XHh7MzBD
Nn1ceHszMEYzfVx4ezMwQzR9XHh7MzA0Qn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUy
LDApIHdpZHRoIDM4MzogIlx4ezMwODl9XHh7MzA4Mn1ceHs2OTFDfVx4ezdEMjJ9XHh7MzA1OX1c
eHszMDhCfVx4ezMwNTN9XHh7MzA2OH1ceHszMDRDfVx4ezMwNjd9XHh7MzA0RH1ceHszMDdFfVx4
ezMwNTl9XHh7MzAwMn1ceHszMDVCfVx4ezMwNjN9XHh7MzA0Qn1ceHszMDRGfVx4ezg5OEJ9Igor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI3NywwKSB3aWR0aCAzODM6ICJceHszMDY0fVx4ezMw
NTF9XHh7MzA1Rn1ceHszMDU5fVx4ezMwNzB9XHh7MzA4OX1ceHszMDU3fVx4ezMwNDR9XHh7OEEx
OH1ceHs0RThCfVx4ezMwNEN9XHh7MzA2OX1ceHszMDUzfVx4ezMwNkJ9XHh7MzA0Mn1ceHszMDYz
fVx4ezMwNUZ9XHh7MzA0Qn1ceHs1RkQ4fSIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgzMDIs
MCkgd2lkdGggMzkwOiAiXHh7MzA4Q31ceHszMDY2fVx4ezMwNTd9XHh7MzA3RX1ceHszMDYzfVx4
ezMwNUZ9XHh7N0Q0Q31ceHs5QTEzfVx4ezMwNkZ9XHh7MzA0Mn1ceHszMDhBfVx4ezMwN0V9XHh7
MzA1OX1ceHszMDRCfSBceHszMDZBfVx4ezMwODl9XHh7MzBCRn1ceHszMEE0fVx4ezMwQzh9Igor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDMyNywwKSB3aWR0aCAyODI6ICJceHszMEVCfVx4ezMw
Njh9XHh7MzBBMn1ceHszMEM5fVx4ezMwRUN9XHh7MzBCOX1ceHszMDYwfVx4ezMwNTF9XHh7MzA2
N31ceHszMDZBfVx4ezMwNEZ9XHh7MzAwMX1ceHs4QTJBfVx4ezU1NEZ9IgorICBSZWdpb25zIGZv
ciBmbG93ICd0aHJlYWQnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGhhc0xheWVyCitzZWxlY3Rp
b24gc3RhcnQ6IHBvc2l0aW9uIDY4IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtESVZ9
IG9mIGJvZHkKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMjIwIG9mIGNoaWxkIDAgeyN0ZXh0
fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMzAwYTMwLi43OWNlZjgzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMzAsNiArMzMwLDcg
QEAgd2Via2l0Lm9yZy9iLzExODkyNSBbIERlYnVnIF0gY3NzMy9maWx0ZXJzL2N1c3RvbS9lZmZl
Y3QtY3VzdG9tLXRyYW5zZm9ybS1wYXJhbWUKIHdlYmtpdC5vcmcvYi8xMTg5MjUgWyBEZWJ1ZyBd
IGZhc3QvbGF5ZXJzL25vLWNsaXBwaW5nLW92ZXJmbG93LWhpZGRlbi1hZGRlZC1hZnRlci10cmFu
c2l0aW9uLmh0bWwgIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTE4OTI1IFsg
RGVidWcgXSBmYXN0L211bHRpY29sL21peGVkLW9wYWNpdHktZml4ZWQtdGVzdC5odG1sICBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzExODkyNSBbIERlYnVnIF0gZmFzdC9yZWdp
b25zL2ZpeGVkLXBvcy1lbGVtLWluLXJlZ2lvbi5odG1sICBbIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzExODkyNSBbIERlYnVnIF0gZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGlu
Zy1pbi1jb21wb3NpdGVkLXZpZXcuaHRtbCAgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xMTg5MjUgWyBEZWJ1ZyBdIHN2Zy9yZXBhaW50L2J1ZmZlcmVkLXJlbmRlcmluZy1zdGF0
aWMtaW1hZ2UuaHRtbCAgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBPbmx5IGZhaWxpbmcgb24g
V0sxCkBAIC0zNDcsNDggKzM0OCw2IEBAIHdlYmtpdC5vcmcvYi8xMDcwMTggc3ZnL2FuaW1hdGlv
bnMvYW5pbWF0ZS1saW5lYXItZGlzY3JldGUtYWRkaXRpdmUtYi5zdmcgWyBJbWFnCiB3ZWJraXQu
b3JnL2IvMTA3MDE4IHN2Zy9hbmltYXRpb25zL2FuaW1hdGUtbGluZWFyLWRpc2NyZXRlLWFkZGl0
aXZlLWMuc3ZnICBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTA3MDE4
IHN2Zy9hbmltYXRpb25zL21vemlsbGEvYW5pbWF0ZU1vdGlvbi1tcGF0aC1wYXRoTGVuZ3RoLTEu
c3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAotIyBSZWdpb24gb3ZlcmZsb3cgZG9lc24n
dCBxdWl0ZSB3b3JrIHdpdGggdGlsZWQgZHJhd2luZy4KLXdlYmtpdC5vcmcvYi8xMjIyMzMgZmFz
dC9yZWdpb25zL3BlcmNlbnRhZ2UtbWFyZ2lucy1taXhlZC1sdHItZG9taW5hbnQtcmVnaW9ucy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMjMzIGZhc3QvcmVnaW9u
cy9wZXJjZW50YWdlLW1hcmdpbnMtbWl4ZWQtcnRsLWRvbWluYW50LXJlZ2lvbnMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzMyBmYXN0L3JlZ2lvbnMvcGVyY2Vu
dGFnZS1tYXJnaW5zLXJ0bC12YXJpYWJsZS13aWR0aC1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzMgZmFzdC9yZWdpb25zL3BlcmNlbnRhZ2UtbWFy
Z2lucy12YXJpYWJsZS13aWR0aC1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8xMjIyMzMgZmFzdC9yZWdpb25zL2ZyYW1lLXZpZXctb3ZlcmZsb3ctc2Nyb2xs
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBDb2xvciBzcGFjZSBpc3N1ZXMgZnJvbSBz
d2l0Y2hpbmcgdG8gdGlsZWQgZHJhd2luZy4KLXdlYmtpdC5vcmcvYi8xMjIyMzQgZmFzdC9jc3Mv
Y29tcHV0ZWQtaW1hZ2Utd2lkdGgtd2l0aC1wZXJjZW50LWhlaWdodC5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMjM0IHN2Zy9maWx0ZXJzL2NvbG9yLXNwYWNlLWNv
bnZlcnNpb24uc3ZnICBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNCBz
dmcvbWFza2luZy9tYXNrLXR5cGUtbHVtaW5hbmNlLnN2ZyAgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8xMjIyMzQgc3ZnL21hc2tpbmcvbWFzay10eXBlLW5vdC1zZXQuc3ZnICBb
IEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNCBzdmcvZmlsdGVycy9mZVNw
ZWN1bGFyTGlnaHQtcHJlbXVsdGlwbGllZC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtp
dC5vcmcvYi8xMjIyMzQgc3ZnL2ZpbHRlcnMvZmlsdGVyLWN5Y2xlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgY3NzMy9maWx0ZXJzL251bGwtZWZmZWN0LWNo
ZWNrLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgZmFzdC9p
bWFnZXMvcGRmLWFzLWltYWdlLXdpdGgtYW5ub3RhdGlvbnMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNCBjc3MzL2ZpbHRlcnMvY3VzdG9tL2NvbXBvc2l0ZWQv
Y3VzdG9tLWZpbHRlci1ibGVuZC1tb2Rlcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMTIyMjM0IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hLXRleC1j
b29yZC1vcHRpb25hbC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIy
MjM0IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1hcnJheS11bmlmb3JtLWluZGly
ZWN0LWluZGV4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQg
Y3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWFycmF5Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20t
ZmlsdGVyLWJsZW5kLW1vZGVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8xMjIyMzQgY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWNoYW5nZS1ibGVuZC1t
b2RlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgY3NzMy9m
aWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWNvbG9yLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LWRldGFjaGVkLW1lc2gtd2l0aC1tZXNoLWJveC10eXBlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVy
LW1hdE4uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNCBjc3Mz
L2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItbWVzaC1jb2x1bW4tcm93LW9yZGVyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIyMzQgY3NzMy9maWx0ZXJzL2N1
c3RvbS9jdXN0b20tZmlsdGVyLXUtbWVzaC1ib3guaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQot
d2Via2l0Lm9yZy9iLzEyMjIzNCBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdS1t
ZXNoLXNpemUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNCBj
c3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdS10ZXh0dXJlLXNpemUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNCBjc3MzL2ZpbHRlcnMvY3VzdG9t
L2N1c3RvbS1maWx0ZXItdS10aWxlLXNpemUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzEyMjIzNCBjc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItdW5hdmFp
bGFibGUtdmFyeWluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIy
MjM0IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1jbGFtcC1jc3MtY29sb3ItbWF0
cml4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQotIyBUaWxlZCBiYWNrZ3JvdW5kIGltYWdl
cyB0aGF0IGludGVyc2VjdCB0aGUgdGlsZXMgYXJlIGdldHRpbmcgd2VpcmQgZnJpbmdpbmcuCi13
ZWJraXQub3JnL2IvMTIyMjM1IGNzczMvbWFza2luZy9tYXNrLXJlcGVhdC1zcGFjZS1ib3JkZXIu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNSBjc3MzL21hc2tp
bmcvbWFzay1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13
ZWJraXQub3JnL2IvMTIyMjM1IGNzczMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLXJlcGVhdC1zcGFj
ZS1ib3JkZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjIzNSBj
c3MzL2JhY2tncm91bmQvYmFja2dyb3VuZC1yZXBlYXQtc3BhY2UtcGFkZGluZy5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8xMjIyMzcgWyBEZWJ1ZyBdIGZhc3QvdGFi
bGUvY3Jhc2gtc2VjdGlvbi1sb2dpY2FsLWhlaWdodC1jaGFuZ2VkLW5lZWRzQ2VsbFJlY2FsYy5o
dG1sIFsgQ3Jhc2ggXQotd2Via2l0Lm9yZy9iLzEyMjIzOCBmYXN0L2xheWVycy9uby1jbGlwcGlu
Zy1vdmVyZmxvdy1oaWRkZW4tYWRkZWQtYWZ0ZXItdHJhbnNmb3JtLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLQogIyMjIEVORCBPRiAoMSkgQ2xhc3NpZmllZCBmYWlsdXJlcyB3aXRoIGJ1ZyBy
ZXBvcnRzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvY29udGVudHMt
b3BhcXVlL2JvZHktYmFja2dyb3VuZC1wYWludGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvY29udGVudHMtb3BhcXVlL2JvZHktYmFja2dy
b3VuZC1wYWludGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2E3MzBlYjAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21w
b3NpdGluZy9jb250ZW50cy1vcGFxdWUvYm9keS1iYWNrZ3JvdW5kLXBhaW50ZWQtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotKEdyYXBoaWNzTGF5ZXIKLSAgKGJv
dW5kcyA4MDAuMDAgNjAwLjAwKQotICAoY2hpbGRyZW4gMQotICAgIChHcmFwaGljc0xheWVyCi0g
ICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCi0gICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAg
ICAgIChiYWNrZ3JvdW5kQ29sb3IgIzAwMDBGRikKLSAgICAgIChjaGlsZHJlbiAxCi0gICAgICAg
IChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAgICAg
ICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKLSAgICAg
ICAgICAoY2hpbGRyZW4gMgotICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAg
ICAgKHBvc2l0aW9uIDguMDAgOC4wMCkKLSAgICAgICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMjAw
LjAwKQotICAgICAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgICAgIChib3VuZHMgODAwLjAwIDYw
MC4wMCkKLSAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQotICAgICAgICAgICAgKQotICAg
ICAgICAgICkKLSAgICAgICAgKQotICAgICAgKQotICAgICkKLSAgKQotKQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1
ZS9ib2R5LWJhY2tncm91bmQtc2tpcHBlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL2NvbnRlbnRzLW9wYXF1ZS9ib2R5LWJhY2tncm91bmQt
c2tpcHBlZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MGI0
MWYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGlu
Zy9jb250ZW50cy1vcGFxdWUvYm9keS1iYWNrZ3JvdW5kLXNraXBwZWQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotKEdyYXBoaWNzTGF5ZXIKLSAgKGJvdW5kcyA4
MDAuMDAgNjAwLjAwKQotICAoY2hpbGRyZW4gMQotICAgIChHcmFwaGljc0xheWVyCi0gICAgICAo
Ym91bmRzIDgwMC4wMCA2MDAuMDApCi0gICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgIChi
YWNrZ3JvdW5kQ29sb3IgIzAwMDBGRikKLSAgICAgIChjaGlsZHJlbiAxCi0gICAgICAgIChHcmFw
aGljc0xheWVyCi0gICAgICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAgICAgICAgIChk
cmF3c0NvbnRlbnQgMSkKLSAgICAgICAgICAoY2hpbGRyZW4gMgotICAgICAgICAgICAgKEdyYXBo
aWNzTGF5ZXIKLSAgICAgICAgICAgICAgKHBvc2l0aW9uIDguMDAgOC4wMCkKLSAgICAgICAgICAg
ICAgKGJvdW5kcyAyMDAuMDAgMjAwLjAwKQotICAgICAgICAgICAgICAoY29udGVudHNPcGFxdWUg
MSkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAg
ICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKLSAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAx
KQotICAgICAgICAgICAgKQotICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgKQotICAgICkK
LSAgKQotKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBv
c2l0aW5nL3JlcGFpbnQvZml4ZWQtYmFja2dyb3VuZC1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L2ZpeGVkLWJhY2tn
cm91bmQtc2Nyb2xsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDk0ZmY3My4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBv
c2l0aW5nL3JlcGFpbnQvZml4ZWQtYmFja2dyb3VuZC1zY3JvbGwtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotKHJlcGFpbnQgcmVjdHMKLSAgKHJlY3QgMCAwIDc4
NSA2MDApCi0pCi0oR3JhcGhpY3NMYXllcgotICAoYm91bmRzIDc4NS4wMCAyMDIxLjAwKQotICAo
Y2hpbGRyZW4gMQotICAgIChHcmFwaGljc0xheWVyCi0gICAgICAoYm91bmRzIDc4NS4wMCAyMDIx
LjAwKQotICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAoY2hpbGRyZW4gMQotICAgICAg
ICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiAtNC4wMCA5Ni4wMCkKLSAgICAg
ICAgICAoYm91bmRzIDQyOC4wMCA0MjguMDApCi0gICAgICAgICAgKGRyYXdzQ29udGVudCAxKQot
ICAgICAgICAgIChyZXBhaW50IHJlY3RzCi0gICAgICAgICAgICAocmVjdCAwLjAwIDAuMDAgNDI4
LjAwIDQyOC4wMCkKLSAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICkKLSAgICApCi0gICkK
LSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGlu
Zy9ydGwvcnRsLWFic29sdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvY29tcG9zaXRpbmcvcnRsL3J0bC1hYnNvbHV0ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYjAxNTIuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLShHcmFwaGljc0xheWVyCi0gIChib3Vu
ZHMgODAwLjAwIDYwMC4wMCkKLSAgKGNoaWxkcmVuIDEKLSAgICAoR3JhcGhpY3NMYXllcgotICAg
ICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAg
ICAoYmFja2dyb3VuZENvbG9yICNGRjAwMDApCi0gICAgICAoY2hpbGRyZW4gMQotICAgICAgICAo
R3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiA1MC4wMCA1MC4wMCkKLSAgICAgICAg
ICAoYm91bmRzIDEwMC4wMCAxMDAuMDApCi0gICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0g
ICAgICAgICkKLSAgICAgICkKLSAgICApCi0gICkKLSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcv
cnRsL3J0bC1hYnNvbHV0ZS1vdmVyZmxvdy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI0MjhjNzIuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRlLW92ZXJmbG93LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLShHcmFwaGljc0xheWVyCi0gIChwb3Np
dGlvbiAtMjE1LjAwIDAuMDApCi0gIChib3VuZHMgMTAwMC4wMCAxMDAwLjAwKQotICAoY2hpbGRy
ZW4gMQotICAgIChHcmFwaGljc0xheWVyCi0gICAgICAoYm91bmRzIDEwMDAuMDAgMTAwMC4wMCkK
LSAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgKGJhY2tncm91bmRDb2xvciAjRkYwMDAw
KQotICAgICAgKGNoaWxkcmVuIDEKLSAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAo
cG9zaXRpb24gMjY1LjAwIDUwLjAwKQotICAgICAgICAgIChib3VuZHMgMTAwLjAwIDEwMC4wMCkK
LSAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgICAgKQotICAgICAgKQotICAgICkK
LSAgKQotKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBv
c2l0aW5nL3J0bC9ydGwtYWJzb2x1dGUtb3ZlcmZsb3ctc2Nyb2xsZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWFic29sdXRl
LW92ZXJmbG93LXNjcm9sbGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDM0NTllNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L2NvbXBvc2l0aW5nL3J0bC9ydGwtYWJzb2x1dGUtb3ZlcmZsb3ctc2Nyb2xsZWQtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotKEdyYXBoaWNzTGF5ZXIKLSAgKHBv
c2l0aW9uIC0yMTUuMDAgMC4wMCkKLSAgKGJvdW5kcyAxMDAwLjAwIDEwMDAuMDApCi0gIChjaGls
ZHJlbiAxCi0gICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgIChib3VuZHMgMTAwMC4wMCAxMDAwLjAw
KQotICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAoYmFja2dyb3VuZENvbG9yICNGRjAw
MDApCi0gICAgICAoY2hpbGRyZW4gMQotICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAg
IChwb3NpdGlvbiA1MS4wMCA1MC4wMCkKLSAgICAgICAgICAoYm91bmRzIDEwMC4wMCAxMDAuMDAp
Ci0gICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAgICkKLSAgICAgICkKLSAgICAp
Ci0gICkKLSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21w
b3NpdGluZy9ydGwvcnRsLWZpeGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1leHBlY3RlZC50eHQKaW5kZXggNTQy
YjFiZi4uYzkwOTJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9j
b21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3J0bC9ydGwtZml4ZWQtZXhwZWN0ZWQudHh0CkBA
IC00LDcgKzQsNiBAQAogICAgIChHcmFwaGljc0xheWVyCiAgICAgICAoYm91bmRzIDgwMC4wMCA2
MDAuMDApCiAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgIChiYWNrZ3JvdW5kQ29sb3Ig
I0ZGMDAwMCkKICAgICAgIChjaGlsZHJlbiAyCiAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAg
ICAgICAgKHBvc2l0aW9uIDUwLjAwIDUwLjAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLW92ZXJmbG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvcnRsL3J0bC1m
aXhlZC1vdmVyZmxvdy1leHBlY3RlZC50eHQKaW5kZXggOTA2OTdjMy4uMDIzYjljZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy9ydGwvcnRsLWZp
eGVkLW92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL2NvbXBvc2l0aW5nL3J0bC9ydGwtZml4ZWQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC01
LDcgKzUsNiBAQAogICAgIChHcmFwaGljc0xheWVyCiAgICAgICAoYm91bmRzIDEwMDAuMDAgMTAw
MC4wMCkKICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgKGJhY2tncm91bmRDb2xvciAj
RkYwMDAwKQogICAgICAgKGNoaWxkcmVuIDIKICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAg
ICAgICAocG9zaXRpb24gMjY1LjAwIDUwLjAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcvcm90YXRlZC10aWxlZC1jbGFtcGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvdGls
aW5nL3JvdGF0ZWQtdGlsZWQtY2xhbXBlZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDRkZDNlNmYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcvcm90YXRlZC10aWxlZC1jbGFtcGVkLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLShHcmFwaGljc0xheWVyCi0gIChi
b3VuZHMgODAwLjAwIDYwMC4wMCkKLSAgKHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDgwMC4wMCB4
IDYwMC4wMCkKLSAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKLSAgKGNoaWxkcmVuIDEKLSAgICAoR3Jh
cGhpY3NMYXllcgotICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQotICAgICAgKGNvbnRlbnRz
T3BhcXVlIDEpCi0gICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgODAwLjAwIHggNjAwLjAw
KQotICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKLSAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdl
IDAsIDAgODAwIHggNjAwKQotICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCi0gICAgICAodG9w
IGxlZnQgdGlsZSAwLCAwIHRpbGVzIGdyaWQgMiB4IDIpCi0gICAgICAoY2hpbGRyZW4gMQotICAg
ICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiA1OC4wMCA1MC4wMCkKLSAg
ICAgICAgICAoYm91bmRzIDUwMi4wMCAzMDIuMDApCi0gICAgICAgICAgKHZpc2libGUgcmVjdCAw
LjAwLCAwLjAwIDUwMi4wMCB4IDMwMi4wMCkKLSAgICAgICAgICAoY29udGVudHNTY2FsZSAxLjAw
KQotICAgICAgICAgIChjaGlsZHJlbiAxCi0gICAgICAgICAgICAoR3JhcGhpY3NMYXllcgotICAg
ICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAwKQotICAgICAgICAgICAgICAoYm91bmRzIDUw
MC4wMCAzMDAuMDApCi0gICAgICAgICAgICAgIChjaGlsZHJlblRyYW5zZm9ybSBbMS4wMCAwLjAw
IDAuMDAgMC4wMF0gWzAuMDAgMS4wMCAwLjAwIDAuMDBdIFswLjAwIDAuMDAgMS4wMCAtMC4wMF0g
WzAuMDAgMC4wMCAwLjAwIDEuMDBdKQotICAgICAgICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAs
IDAuMDAgNTAwLjAwIHggMzAwLjAwKQotICAgICAgICAgICAgICAoY29udGVudHNTY2FsZSAxLjAw
KQotICAgICAgICAgICAgICAoY2hpbGRyZW4gMQotICAgICAgICAgICAgICAgIChHcmFwaGljc0xh
eWVyCi0gICAgICAgICAgICAgICAgICAocG9zaXRpb24gLTEyNTAuMDAgMC4wMCkKLSAgICAgICAg
ICAgICAgICAgIChhbmNob3IgMC41NCAwLjUwKQotICAgICAgICAgICAgICAgICAgKGJvdW5kcyAy
ODAwLjAwIDMwMC4wMCkKLSAgICAgICAgICAgICAgICAgICh1c2luZ1RpbGVkTGF5ZXIgMSkKLSAg
ICAgICAgICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgICAgICAgICAgICAgKGRy
YXdzQ29udGVudCAxKQotICAgICAgICAgICAgICAgICAgKHRyYW5zZm9ybSBbMC4xNyAwLjAwIC0w
Ljk4IDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAwXSBbMC45OCAwLjAwIDAuMTcgMC4wMF0gWzAu
MDAgMC4wMCAwLjAwIDEuMDBdKQotICAgICAgICAgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAw
LCAwLjAwIDI4MDAuMDAgeCAzMDAuMDApCi0gICAgICAgICAgICAgICAgICAoY29udGVudHNTY2Fs
ZSAxLjAwKQotICAgICAgICAgICAgICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2UgMCwgMCAyNzk5
IHggMjk5KQotICAgICAgICAgICAgICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCi0gICAgICAg
ICAgICAgICAgICAodG9wIGxlZnQgdGlsZSAwLCAwIHRpbGVzIGdyaWQgNSB4IDEpCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgICAgKQot
ICAgICAgICApCi0gICAgICApCi0gICAgKQotICApCi0pCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvdGlsaW5nL3JvdGF0ZWQtdGlsZWQtcHJl
c2VydmUzZC1jbGFtcGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvY29tcG9zaXRpbmcvdGlsaW5nL3JvdGF0ZWQtdGlsZWQtcHJlc2VydmUzZC1jbGFtcGVkLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMyNmVmMS4uMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3RpbGluZy9y
b3RhdGVkLXRpbGVkLXByZXNlcnZlM2QtY2xhbXBlZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1OCArMCwwIEBACi0oR3JhcGhpY3NMYXllcgotICAoYm91bmRzIDgwMC4wMCA2MDAu
MDApCi0gICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA4MDAuMDAgeCA2MDAuMDApCi0gIChjb250
ZW50c1NjYWxlIDEuMDApCi0gIChjaGlsZHJlbiAxCi0gICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAg
IChib3VuZHMgODAwLjAwIDYwMC4wMCkKLSAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAg
KHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDgwMC4wMCB4IDYwMC4wMCkKLSAgICAgIChjb250ZW50
c1NjYWxlIDEuMDApCi0gICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAwLCAwIDgwMCB4IDYwMCkK
LSAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQotICAgICAgKHRvcCBsZWZ0IHRpbGUgMCwgMCB0
aWxlcyBncmlkIDIgeCAyKQotICAgICAgKGNoaWxkcmVuIDEKLSAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKLSAgICAgICAgICAocG9zaXRpb24gNTguMDAgNTAuMDApCi0gICAgICAgICAgKGJvdW5kcyA1
MDIuMDAgMzAyLjAwKQotICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA1MDIuMDAg
eCAzMDIuMDApCi0gICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKLSAgICAgICAgICAoY2hp
bGRyZW4gMQotICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAgICAgKHBvc2l0
aW9uIDEuMDAgMS4wMCkKLSAgICAgICAgICAgICAgKGJvdW5kcyA1MDAuMDAgMzAwLjAwKQotICAg
ICAgICAgICAgICAoY2hpbGRyZW5UcmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAw
IDEuMDAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgLTAuMDBdIFswLjAwIDAuMDAgMC4wMCAx
LjAwXSkKLSAgICAgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDUwMC4wMCB4IDMw
MC4wMCkKLSAgICAgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKLSAgICAgICAgICAgICAg
KGNoaWxkcmVuIDEKLSAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgICAg
ICAgICAgKGJvdW5kcyA1MDAuMDAgMC4wMCkKLSAgICAgICAgICAgICAgICAgIChwcmVzZXJ2ZXMz
RCAxKQotICAgICAgICAgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDAuMDAgeCAw
LjAwKQotICAgICAgICAgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKLSAgICAgICAgICAg
ICAgICAgIChjaGlsZHJlbiAxCi0gICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCi0g
ICAgICAgICAgICAgICAgICAgICAgKHBvc2l0aW9uIC0xMjUwLjAwIDAuMDApCi0gICAgICAgICAg
ICAgICAgICAgICAgKGFuY2hvciAwLjU0IDAuNTApCi0gICAgICAgICAgICAgICAgICAgICAgKGJv
dW5kcyAyODAwLjAwIDMwMC4wMCkKLSAgICAgICAgICAgICAgICAgICAgICAodXNpbmdUaWxlZExh
eWVyIDEpCi0gICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCi0gICAgICAg
ICAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQotICAgICAgICAgICAgICAgICAgICAgICh0
cmFuc2Zvcm0gWzAuMTcgMC4wMCAtMC45OCAwLjAwXSBbMC4wMCAxLjAwIDAuMDAgMC4wMF0gWzAu
OTggMC4wMCAwLjE3IDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkKLSAgICAgICAgICAgICAg
ICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgMjgwMC4wMCB4IDMwMC4wMCkKLSAgICAg
ICAgICAgICAgICAgICAgICAoY29udGVudHNTY2FsZSAxLjAwKQotICAgICAgICAgICAgICAgICAg
ICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAsIDAgMjc5OSB4IDI5OSkKLSAgICAgICAgICAgICAg
ICAgICAgICAodGlsZSBzaXplIDUxMiB4IDUxMikKLSAgICAgICAgICAgICAgICAgICAgICAodG9w
IGxlZnQgdGlsZSAwLCAwIHRpbGVzIGdyaWQgNSB4IDEpCi0gICAgICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICkKLSAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICkKLSAgICApCi0g
ICkKLSkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9jb21wb3Np
dGluZy90aWxpbmcvdGlsZS1jYWNoZS16b29tZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcvdGlsZS1jYWNoZS16b29tZWQtZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzYxYjBjLi4wMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvY29tcG9zaXRpbmcvdGlsaW5nL3Rp
bGUtY2FjaGUtem9vbWVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAg
QEAKLShHcmFwaGljc0xheWVyCi0gIChib3VuZHMgMTkzMi4wMCA0MTUwLjAwKQotICAodmlzaWJs
ZSByZWN0IDAuMDAsIDAuMDAgNzg1LjAwIHggNTg1LjAwKQotICAoY29udGVudHNTY2FsZSAxLjAw
KQotICAoY2hpbGRyZW4gMQotICAgIChHcmFwaGljc0xheWVyCi0gICAgICAoYW5jaG9yIDAuMDAg
MC4wMCkKLSAgICAgIChib3VuZHMgMTIwOC4wMCAyNTk0LjAwKQotICAgICAgKGNvbnRlbnRzT3Bh
cXVlIDEpCi0gICAgICAodHJhbnNmb3JtIFsxLjYwIDAuMDAgMC4wMCAwLjAwXSBbMC4wMCAxLjYw
IDAuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDAuMDBdIFswLjAwIDAuMDAgMC4wMCAxLjAwXSkK
LSAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA0OTAuNjMgeCAzNjUuNjMpCi0gICAgICAo
Y29udGVudHNTY2FsZSAxLjAwKQotICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2UgMCwgMCA2NDAg
eCA2NDApCi0gICAgICAodGlsZSBzaXplIDUxMiB4IDUxMikKLSAgICAgICh0b3AgbGVmdCB0aWxl
IDAsIDAgdGlsZXMgZ3JpZCAyIHggMikKLSAgICAgIChjaGlsZHJlbiAxCi0gICAgICAgIChHcmFw
aGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDguMDAgOC4wMCkKLSAgICAgICAgICAoYm91
bmRzIDcwMC4wMCAyNTAwLjAwKQotICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAg
ICAgICh0cmFuc2Zvcm0gWzEuMDAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuMDAgMC4wMCAwLjAw
XSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAxLjAwIDEuMDBdKQotICAgICAgICAg
ICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA0ODIuNjMgeCAzNTcuNjMpCi0gICAgICAgICAgKGNv
bnRlbnRzU2NhbGUgMS42MCkKLSAgICAgICAgKQotICAgICAgKQotICAgICkKLSAgKQotKQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3RpbGlu
Zy90aWxlZC1sYXllci1yZXNpemUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9jb21wb3NpdGluZy90aWxpbmcvdGlsZWQtbGF5ZXItcmVzaXplLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNjODQ5OC4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2NvbXBvc2l0aW5nL3RpbGluZy90aWxlZC1sYXll
ci1yZXNpemUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGls
ZWQgbGF5ZXIKLShHcmFwaGljc0xheWVyCi0gIChib3VuZHMgODA4LjAwIDIxMjEuMDApCi0gIChj
aGlsZHJlbiAxCi0gICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgIChib3VuZHMgODA4LjAwIDIxMjEu
MDApCi0gICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdl
IDAsIDAgODA4IHggMTAyNCkKLSAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQotICAgICAgKHRv
cCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCAyKQotICAgICAgKGNoaWxkcmVuIDEKLSAg
ICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAocG9zaXRpb24gOC4wMCA4LjAwKQotICAg
ICAgICAgIChib3VuZHMgODAwLjAwIDIxMDAuMDApCi0gICAgICAgICAgKHVzaW5nVGlsZWRMYXll
ciAxKQotICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQotICAgICAgICAgIChkcmF3c0NvbnRl
bnQgMSkKLSAgICAgICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAwLCAwIDgwMCB4IDEwMjQpCi0g
ICAgICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCi0gICAgICAgICAgKHRvcCBsZWZ0IHRpbGUg
MCwgMCB0aWxlcyBncmlkIDIgeCAyKQotICAgICAgICApCi0gICAgICApCi0gICAgKQotICApCi0p
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9pbnB1
dC9jYXJldC1hdC10aGUtZWRnZS1vZi1jb250ZW50ZWRpdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL2lucHV0L2NhcmV0LWF0LXRoZS1lZGdl
LW9mLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM4NmUzNzAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9lZGl0aW5nL2lucHV0L2NhcmV0LWF0LXRoZS1lZGdlLW9mLWNvbnRlbnRlZGl0YWJsZS1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1sYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0
ICgwLDApIHNpemUgODAweDcyCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg3MgotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU2Ci0gICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgzNgotICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Njl4MzYKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3Njk6ICJXaGVuIHRoZSBjYXJldCByZWFjaGVzIHRoZSBlZGdlIG9mIHRoZSBpbnB1
dCBib3ggb3IgY29udGVudCBlZGl0YWJsZSBkaXYsIG9uIHRoZSBuZXh0IGlucHV0IGlmIG11c3Qg
anVtcCB0byB0aGUgY2VudGVyIG9mIHRoZSIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkg
d2lkdGggNDg6ICJjb250cm9sLiIKLWxheWVyIGF0ICg4LDQ0KSBzaXplIDgyeDIwIGNsaXAgYXQg
KDksNDUpIHNpemUgODB4MTggc2Nyb2xsWCA0MiBzY3JvbGxXaWR0aCAzMzcKLSAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMzYpIHNpemUgODJ4MjAgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAw
KV0KLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSAzMzZ4MTgKLSAgICAgIHRl
eHQgcnVuIGF0ICgxLDEpIHdpZHRoIDMzNjogIjAxMjM0NTY3ODkwMTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OSIKLWxheWVyIGF0ICg4LDQ0KSBzaXplIDh4MTgKLSAgUmVuZGVyQmxvY2sg
KHBvc2l0aW9uZWQpIHtTUEFOfSBhdCAoOCw0NCkgc2l6ZSA4eDE4Ci0gICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOHgxOAotICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
ODogIjAiCi1jYXJldDogcG9zaXRpb24gMTIgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDUg
e0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9l
ZGl0aW5nL2lucHV0L3JldmVhbC1jYXJldC1vZi1tdWx0aWxpbmUtY29udGVudGVkaXRhYmxlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZWRpdGluZy9pbnB1dC9y
ZXZlYWwtY2FyZXQtb2YtbXVsdGlsaW5lLWNvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODYzZDIuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9lZGl0aW5nL2lucHV0L3JldmVhbC1jYXJldC1vZi1tdWx0
aWxpbmUtY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEw
OCArMCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDIxNgotICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MjE2Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4MjAwCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBz
aXplIDc4NHgxOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1OTV4
MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1OTU6ICJXaGVuIHRoZSBjYXJl
dCBpcyBzY3JvbGxlZCBvdXQsIG9uIHN0YXJ0aW5nIHR5cGluZyBpdCBtdXN0IGJlIGJyb3VnaHQg
dG8gdGhlIGNlbnRlciBvZiB0aGUgY29udHJvbC4iCi1sYXllciBhdCAoOCwyNikgc2l6ZSA3ODR4
MTgyIGNsaXAgYXQgKDksMjcpIHNpemUgNzY3eDE2NSBzY3JvbGxZIDI1MiBzY3JvbGxIZWlnaHQg
NTU4Ci0gIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDc4NHgxODIgW2JvcmRlcjog
KDFweCBzb2xpZCAjMDAwMDAwKV0KLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6
ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggMTY6ICIwMCIKLSAgICBSZW5k
ZXJCUiB7QlJ9IGF0ICgxNywxKSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEsMTkpIHNpemUgMTZ4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgxLDE5KSB3aWR0aCAxNjogIjAx
IgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDE5KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDEsMzcpIHNpemUgMTZ4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgxLDM3KSB3
aWR0aCAxNjogIjAyIgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDM3KSBzaXplIDB4MTgKLSAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsNTUpIHNpemUgMTZ4MTgKLSAgICAgIHRleHQgcnVu
IGF0ICgxLDU1KSB3aWR0aCAxNjogIjAzIgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDU1KSBz
aXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsNzMpIHNpemUgMTZ4MTgKLSAg
ICAgIHRleHQgcnVuIGF0ICgxLDczKSB3aWR0aCAxNjogIjA0IgotICAgIFJlbmRlckJSIHtCUn0g
YXQgKDE3LDczKSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsOTEpIHNp
emUgMTZ4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgxLDkxKSB3aWR0aCAxNjogIjA1IgotICAgIFJl
bmRlckJSIHtCUn0gYXQgKDE3LDkxKSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDEsMTA5KSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwxMDkpIHdpZHRoIDE2
OiAiMDYiCi0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMTA5KSBzaXplIDB4MTgKLSAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDEsMTI3KSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAo
MSwxMjcpIHdpZHRoIDE2OiAiMDciCi0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMTI3KSBzaXpl
IDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMTQ1KSBzaXplIDE2eDE4Ci0gICAg
ICB0ZXh0IHJ1biBhdCAoMSwxNDUpIHdpZHRoIDE2OiAiMDgiCi0gICAgUmVuZGVyQlIge0JSfSBh
dCAoMTcsMTQ1KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMTYzKSBz
aXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwxNjMpIHdpZHRoIDE2OiAiMDkiCi0gICAg
UmVuZGVyQlIge0JSfSBhdCAoMTcsMTYzKSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDEsMTgxKSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwxODEpIHdpZHRo
IDE2OiAiMTAiCi0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMTgxKSBzaXplIDB4MTgKLSAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMTk5KSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBh
dCAoMSwxOTkpIHdpZHRoIDE2OiAiMTEiCi0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMTk5KSBz
aXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMjE3KSBzaXplIDE2eDE4Ci0g
ICAgICB0ZXh0IHJ1biBhdCAoMSwyMTcpIHdpZHRoIDE2OiAiMTIiCi0gICAgUmVuZGVyQlIge0JS
fSBhdCAoMTcsMjE3KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMjM1
KSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwyMzUpIHdpZHRoIDE2OiAiMTMiCi0g
ICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMjM1KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDEsMjUzKSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwyNTMpIHdp
ZHRoIDE2OiAiMTQiCi0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMjUzKSBzaXplIDB4MTgKLSAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMjcxKSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1
biBhdCAoMSwyNzEpIHdpZHRoIDE2OiAiMTUiCi0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMjcx
KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMjg5KSBzaXplIDE2eDE4
Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwyODkpIHdpZHRoIDE2OiAiMTYiCi0gICAgUmVuZGVyQlIg
e0JSfSBhdCAoMTcsMjg5KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEs
MzA3KSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwzMDcpIHdpZHRoIDE2OiAiMTci
Ci0gICAgUmVuZGVyQlIge0JSfSBhdCAoMTcsMzA3KSBzaXplIDB4MTgKLSAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDEsMzI1KSBzaXplIDI1eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMSwzMjUp
IHdpZHRoIDI1OiAiPjE4IgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDI2LDMyNSkgc2l6ZSAweDE4
Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDM0Mykgc2l6ZSAxNngxOAotICAgICAgdGV4
dCBydW4gYXQgKDEsMzQzKSB3aWR0aCAxNjogIjE5IgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3
LDM0Mykgc2l6ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDM2MSkgc2l6ZSAx
NngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsMzYxKSB3aWR0aCAxNjogIjIwIgotICAgIFJlbmRl
ckJSIHtCUn0gYXQgKDE3LDM2MSkgc2l6ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgxLDM3OSkgc2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsMzc5KSB3aWR0aCAxNjog
IjIxIgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDM3OSkgc2l6ZSAweDE4Ci0gICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgxLDM5Nykgc2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEs
Mzk3KSB3aWR0aCAxNjogIjIyIgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDM5Nykgc2l6ZSAw
eDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDQxNSkgc2l6ZSAxNngxOAotICAgICAg
dGV4dCBydW4gYXQgKDEsNDE1KSB3aWR0aCAxNjogIjIzIgotICAgIFJlbmRlckJSIHtCUn0gYXQg
KDE3LDQxNSkgc2l6ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDQzMykgc2l6
ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsNDMzKSB3aWR0aCAxNjogIjI0IgotICAgIFJl
bmRlckJSIHtCUn0gYXQgKDE3LDQzMykgc2l6ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxLDQ1MSkgc2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsNDUxKSB3aWR0aCAx
NjogIjI1IgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDQ1MSkgc2l6ZSAweDE4Ci0gICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxLDQ2OSkgc2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQg
KDEsNDY5KSB3aWR0aCAxNjogIjI2IgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDQ2OSkgc2l6
ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDQ4Nykgc2l6ZSAxNngxOAotICAg
ICAgdGV4dCBydW4gYXQgKDEsNDg3KSB3aWR0aCAxNjogIjI3IgotICAgIFJlbmRlckJSIHtCUn0g
YXQgKDE3LDQ4Nykgc2l6ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDUwNSkg
c2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsNTA1KSB3aWR0aCAxNjogIjI4IgotICAg
IFJlbmRlckJSIHtCUn0gYXQgKDE3LDUwNSkgc2l6ZSAweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgxLDUyMykgc2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDEsNTIzKSB3aWR0
aCAxNjogIjI5IgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDUyMykgc2l6ZSAweDE4Ci0gICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDU0MSkgc2l6ZSAxNngxOAotICAgICAgdGV4dCBydW4g
YXQgKDEsNTQxKSB3aWR0aCAxNjogIjMwIgotICAgIFJlbmRlckJSIHtCUn0gYXQgKDE3LDU0MSkg
c2l6ZSAweDE4Ci1sYXllciBhdCAoOCwyNikgc2l6ZSA4eDE4Ci0gIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB7U1BBTn0gYXQgKDgsMjYpIHNpemUgOHgxOAotICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDh4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg6ICIw
IgotY2FyZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMzYgeyN0ZXh0fSBvZiBjaGlsZCA1IHtESVZ9
IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFzdC9i
bG9jay9iYXNpYy8wMjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9mYXN0L2Jsb2NrL2Jhc2ljLzAyMC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk3MTNlNTMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9mYXN0L2Jsb2NrL2Jhc2ljLzAyMC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyNCArMCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCww
KSBzaXplIDc4NHg1MgotICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBz
aXplIDc4NHgxOAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEy
eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjogIkEiCi0gICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxMiwwKSBzaXplIDExeDE4Ci0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTIsMCkgd2lkdGggMTE6ICJDIgotICAgICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMzQpIHNpemUgNzg0eDAKLSAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQp
IHNpemUgNzg0eDE4Ci0gICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkg
c2l6ZSA3ODR4MTgKLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTAwLDApIHNp
emUgMTZ4MTgKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEwMCwwKSB3aWR0aCAxNjogIkEg
IgotICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAxMDB4MTAwIFtiZ2NvbG9yPSMwMDgwMDBdCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDExNiwwKSBzaXplIDExeDE4Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMTYs
MCkgd2lkdGggMTE6ICJCIgotICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6
ZSA3ODR4MAotbGF5ZXIgYXQgKDIwLDgpIHNpemUgMTF4MTgKLSAgUmVuZGVyQmxvY2sgKHBvc2l0
aW9uZWQpIHtTUEFOfSBhdCAoMjAsOCkgc2l6ZSAxMXgxOAotICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDExeDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTog
IkIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZHluYW1p
Yy8wMTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2R5
bmFtaWMvMDEyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk0
NGM2Yi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZHlu
YW1pYy8wMTItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLWxh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAw
eDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIHtIMn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjgKLSAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjE5eDI4Ci0gICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjE5OiAiQmxvY2sgQ29sbGFwc2UgRGVtbyIKLSAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCw0Nykgc2l6ZSA3ODR4MTgKLSAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjg3eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMzA0OiAiVGhpcyB0YWJsZSBiZWxvdyBoYXMgdGhyZWUgaGllcmFyY2hpY2FsIHNl
Y3Rpb25zLiAiCi0gICAgICAgICAgdGV4dCBydW4gYXQgKDMwNCwwKSB3aWR0aCAzODM6ICJDb2xs
YXBzaW5nIGEgc2VjdGlvbiBzaG91bGQgY2F1c2UgdGhvc2UgYmVsb3cgaXQgdG8gbW92ZSB1cC4i
Ci0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsODEpIHNpemUgNzg0eDE4Ci0gICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2NXgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDc2NTogIlRoaXMgd29ya3Mgb24gdGhlIGxhdGVzdCBXaW5kb3dzIElF
IGFuZCBNb3ppbGxhIEZpcmVmb3ggKFdpbiBhbmQgTWFjKSBidXQgbm90IG9uIFNhZmFyaSAxLjIu
MyAodjEyNS45KSB7b3IgMi4wICgxNDYpfS4iCi0gICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAs
MTE1KSBzaXplIDc4NHgxOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA3NDd4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1Nzk6ICJOb3RlIHRo
YXQgdGhlIHNlY29uZCBzZWN0aW9uIGlzIGNvbGxhcHNlZCB3aGVuIHRoZSBwYWdlIG9wZW5zIGFu
ZCBleHBhbmRpbmcgaXQgd29ya3MgZmluZS4gIgotICAgICAgICAgIHRleHQgcnVuIGF0ICg1Nzks
MCkgd2lkdGggMTY4OiAiSnVzdCB0aGUgY29sbGFwc2UgaXMgYnJva2VuLiIKLSAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDE0OSkgc2l6ZSA3ODR4MTQ4Ci0gICAgICAgIFJlbmRlckJsb2Nr
IHtIUn0gYXQgKDAsMCkgc2l6ZSA3ODR4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQot
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxMCkgc2l6ZSA3ODR4MjAKLSAgICAgICAg
ICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgxNiwyKSBzaXplIDc1eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMTYsMikgd2lkdGggNzU6ICIgQmxvY2sgT25lIgotICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwzMCkgc2l6ZSA3ODR4MjAKLSAgICAgICAgICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAo
MCwwKSBzaXplIDE2eDE2Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwyKSBz
aXplIDc4eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTYsMikgd2lkdGggNzg6ICIgQmxv
Y2sgVHdvIgotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1MCkgc2l6ZSA3ODR4MjAK
LSAgICAgICAgICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMCwwKSBzaXplIDE2eDE2Ci0gICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwyKSBzaXplIDg4eDE4Ci0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTYsMikgd2lkdGggODg6ICIgQmxvY2sgVGhyZWUiCi0gICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDcwKSBzaXplIDc4NHg2OAotICAgICAgICAgIFJlbmRlclRhYmxl
IHtUQUJMRX0gYXQgKDAsMCkgc2l6ZSA3ODR4NjgKLSAgICAgICAgICAgIFJlbmRlclRhYmxlU2Vj
dGlvbiB7VEJPRFl9IGF0ICgwLDApIHNpemUgNzg0eDY4Ci0gICAgICAgICAgICAgIFJlbmRlclRh
YmxlUm93IHtUUn0gYXQgKDAsMikgc2l6ZSA3ODR4MjAKLSAgICAgICAgICAgICAgICBSZW5kZXJU
YWJsZUNlbGwge1REfSBhdCAoMiwyKSBzaXplIDMyeDIwIFtyPTAgYz0wIHJzPTEgY3M9MV0KLSAg
ICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDR4MTgKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggNDogIiAiCi0gICAgICAg
ICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDM2LDIpIHNpemUgNzQ2eDIwIFtyPTAg
Yz0xIHJzPTEgY3M9MV0KLSAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MSwxKSBzaXplIDY1eDE4Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdp
ZHRoIDY1OiAiVGhpcyBpcyB0aGUiCi0gICAgICAgICAgICAgIFJlbmRlclRhYmxlUm93IHtUUn0g
YXQgKDAsMjQpIHNpemUgNzg0eDIwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtU
RH0gYXQgKDIsMjQpIHNpemUgMzJ4MjAgW3I9MSBjPTAgcnM9MSBjcz0xXQotICAgICAgICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgNHgxOAotICAgICAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCA0OiAiICIKLSAgICAgICAgICAgICAgICBS
ZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMzYsMjQpIHNpemUgNzQ2eDIwIFtyPTEgYz0xIHJzPTEg
Y3M9MV0KLSAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXpl
IDY5eDE4Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDY5OiAi
Y29udGVudHMgb2YiCi0gICAgICAgICAgICAgIFJlbmRlclRhYmxlUm93IHtUUn0gYXQgKDAsNDYp
IHNpemUgNzg0eDIwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDIs
NDYpIHNpemUgMzJ4MjAgW3I9MiBjPTAgcnM9MSBjcz0xXQotICAgICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgNHgxOAotICAgICAgICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCA0OiAiICIKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJs
ZUNlbGwge1REfSBhdCAoMzYsNDYpIHNpemUgNzQ2eDIwIFtyPTIgYz0xIHJzPTEgY3M9MV0KLSAg
ICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDc0eDE4Ci0g
ICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDc0OiAiYmxvY2sgdGhy
ZWUuIgotICAgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDE0Nikgc2l6ZSA3ODR4MiBbYm9y
ZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQotbGF5ZXIgYXQgKDgsMTg3KSBzaXplIDEwOXg2OAot
ICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDgsMTg3KSBzaXplIDEwOXg2OAot
ICAgIFJlbmRlclRhYmxlIHtUQUJMRX0gYXQgKDAsMCkgc2l6ZSAxMDl4NjgKLSAgICAgIFJlbmRl
clRhYmxlU2VjdGlvbiB7VEJPRFl9IGF0ICgwLDApIHNpemUgMTA5eDY4Ci0gICAgICAgIFJlbmRl
clRhYmxlUm93IHtUUn0gYXQgKDAsMikgc2l6ZSAxMDl4MjAKLSAgICAgICAgICBSZW5kZXJUYWJs
ZUNlbGwge1REfSBhdCAoMiwyKSBzaXplIDMyeDIwIFtyPTAgYz0wIHJzPTEgY3M9MV0KLSAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDR4MTgKLSAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggNDogIiAiCi0gICAgICAgICAgUmVuZGVyVGFibGVD
ZWxsIHtURH0gYXQgKDM2LDIpIHNpemUgNzF4MjAgW3I9MCBjPTEgcnM9MSBjcz0xXQotICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgNjV4MTgKLSAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggNjU6ICJUaGlzIGlzIHRoZSIKLSAgICAgICAgUmVu
ZGVyVGFibGVSb3cge1RSfSBhdCAoMCwyNCkgc2l6ZSAxMDl4MjAKLSAgICAgICAgICBSZW5kZXJU
YWJsZUNlbGwge1REfSBhdCAoMiwyNCkgc2l6ZSAzMngyMCBbcj0xIGM9MCBycz0xIGNzPTFdCi0g
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSA0eDE4Ci0gICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDQ6ICIgIgotICAgICAgICAgIFJlbmRlclRh
YmxlQ2VsbCB7VER9IGF0ICgzNiwyNCkgc2l6ZSA3MXgyMCBbcj0xIGM9MSBycz0xIGNzPTFdCi0g
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSA2OXgxOAotICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCA2OTogImNvbnRlbnRzIG9mIgotICAgICAg
ICBSZW5kZXJUYWJsZVJvdyB7VFJ9IGF0ICgwLDQ2KSBzaXplIDEwOXgyMAotICAgICAgICAgIFJl
bmRlclRhYmxlQ2VsbCB7VER9IGF0ICgyLDQ2KSBzaXplIDMyeDIwIFtyPTIgYz0wIHJzPTEgY3M9
MV0KLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDR4MTgKLSAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggNDogIiAiCi0gICAgICAgICAgUmVu
ZGVyVGFibGVDZWxsIHtURH0gYXQgKDM2LDQ2KSBzaXplIDcxeDIwIFtyPTIgYz0xIHJzPTEgY3M9
MV0KLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDY2eDE4Ci0g
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDY2OiAiYmxvY2sgb25lLiIKLWxh
eWVyIGF0ICg4LDIwNykgc2l6ZSAxMDl4NjgKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICg4LDIwNykgc2l6ZSAxMDl4NjgKLSAgICBSZW5kZXJUYWJsZSB7VEFCTEV9IGF0ICgw
LDApIHNpemUgMTA5eDY4Ci0gICAgICBSZW5kZXJUYWJsZVNlY3Rpb24ge1RCT0RZfSBhdCAoMCww
KSBzaXplIDEwOXg2OAotICAgICAgICBSZW5kZXJUYWJsZVJvdyB7VFJ9IGF0ICgwLDIpIHNpemUg
MTA5eDIwCi0gICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDIsMikgc2l6ZSAzMngy
MCBbcj0wIGM9MCBycz0xIGNzPTFdCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEsMSkgc2l6ZSA0eDE4Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDQ6
ICIgIgotICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICgzNiwyKSBzaXplIDcxeDIw
IFtyPTAgYz0xIHJzPTEgY3M9MV0KLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MSwxKSBzaXplIDY1eDE4Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDY1
OiAiVGhpcyBpcyB0aGUiCi0gICAgICAgIFJlbmRlclRhYmxlUm93IHtUUn0gYXQgKDAsMjQpIHNp
emUgMTA5eDIwCi0gICAgICAgICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDIsMjQpIHNpemUg
MzJ4MjAgW3I9MSBjPTAgcnM9MSBjcz0xXQotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxLDEpIHNpemUgNHgxOAotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0
aCA0OiAiICIKLSAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMzYsMjQpIHNpemUg
NzF4MjAgW3I9MSBjPTEgcnM9MSBjcz0xXQotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxLDEpIHNpemUgNjl4MTgKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lk
dGggNjk6ICJjb250ZW50cyBvZiIKLSAgICAgICAgUmVuZGVyVGFibGVSb3cge1RSfSBhdCAoMCw0
Nikgc2l6ZSAxMDl4MjAKLSAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMiw0Nikg
c2l6ZSAzMngyMCBbcj0yIGM9MCBycz0xIGNzPTFdCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDEsMSkgc2l6ZSA0eDE4Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEp
IHdpZHRoIDQ6ICIgIgotICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICgzNiw0Nikg
c2l6ZSA3MXgyMCBbcj0yIGM9MSBycz0xIGNzPTFdCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDEsMSkgc2l6ZSA2N3gxOAotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwx
KSB3aWR0aCA2NzogImJsb2NrIHR3by4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL2Zhc3QvZHluYW1pYy9sYXllci1oaXQtdGVzdC1jcmFzaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvZHluYW1pYy9sYXllci1oaXQtdGVz
dC1jcmFzaC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyOTNl
M2IuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2R5bmFt
aWMvbGF5ZXItaGl0LXRlc3QtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MTggKzAsMCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTgKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzQ2
eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzQ2OiAiTW91c2luZyBvdmVy
IHRoZSB5ZWxsb3cgc3F1YXJlIGJlbG93IHNob3VsZCBub3QgY2F1c2UgYW4gYXNzZXJ0aW9uIGZh
aWx1cmUgb3IgY3Jhc2guIFRoaXMgdGVzdHMgZm9yIHJlZ3Jlc3Npb25zIGFnYWluc3QgIgotICAg
ICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMzJ4MTggW2NvbG9yPSMwMDAwRUVd
Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg3NDYsMCkgc2l6ZSAzMngxOAotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDc0NiwwKSB3aWR0aCAzMjogIjY5MzEiCi0gICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoNzc4LDApIHNpemUgNHgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICg3NzgsMCkgd2lkdGggNDogIi4iCi1sYXllciBhdCAoNTAsNTApIHNpemUgMjAweDIwMAot
ICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgekk6IDEge0RJVn0gYXQgKDUwLDUwKSBzaXplIDIw
MHgyMDAgW2JnY29sb3I9I0ZGRkYwMF0KLWxheWVyIGF0ICg3MCw1MCkgc2l6ZSAxMDB4MTAwCi0g
IFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB6STogNSB7RElWfSBhdCAoMjAsMCkgc2l6ZSAxMDB4
MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCi1jYXJldDogcG9zaXRpb24gMSBvZiBjaGlsZCAyIHsjdGV4
dH0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL2Zhc3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L2xheWVycy9sYXllci12aXNpYmlsaXR5
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQyOGRjZC4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvbGF5ZXJzL2xheWVy
LXZpc2liaWxpdHktZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzI2ICswLDAgQEAK
LWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUg
ODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1ODQKLSAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDAsMCkg
c2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJC
bG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxMzQsMCkgc2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgy
cHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0
ICgyNjgsMCkgc2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAg
ICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg0MDIsMCkgc2l6ZSAxMzR4MTA0IFti
b3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcp
IHtESVZ9IGF0ICg1MzYsMCkgc2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBG
RildCi0gICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgwLDEwNCkgc2l6ZSAx
MzR4MTA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJCbG9jayAo
ZmxvYXRpbmcpIHtESVZ9IGF0ICgxMzQsMTA0KSBzaXplIDEzNHgxMDQgW2JvcmRlcjogKDJweCBz
b2xpZCAjMDAwMEZGKV0KLSAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDI2
OCwxMDQpIHNpemUgMTM0eDEwNCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwRkYpXQotICAgICAg
UmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoNDAyLDEwNCkgc2l6ZSAxMzR4MTA0IFti
b3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcp
IHtESVZ9IGF0ICg1MzYsMTA0KSBzaXplIDEzNHgxMDQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAw
MEZGKV0KLSAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDAsMjA4KSBzaXpl
IDEzNHgxMDQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgIFJlbmRlckJsb2Nr
IChmbG9hdGluZykge0RJVn0gYXQgKDEzNCwyMDgpIHNpemUgMTM0eDEwNCBbYm9yZGVyOiAoMnB4
IHNvbGlkICMwMDAwRkYpXQotICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAo
MjY4LDIwOCkgc2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAg
ICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg0MDIsMjA4KSBzaXplIDEzNHgxMDQg
W2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgIFJlbmRlckJsb2NrIChmbG9hdGlu
Zykge0RJVn0gYXQgKDUzNiwyMDgpIHNpemUgMTM0eDEwNCBbYm9yZGVyOiAoMnB4IHNvbGlkICMw
MDAwRkYpXQotICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMCwzMTIpIHNp
emUgMTM0eDEwNCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwRkYpXQotICAgICAgUmVuZGVyQmxv
Y2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTM0LDMxMikgc2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgy
cHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0
ICgyNjgsMzEyKSBzaXplIDEzNHgxMDQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMEZGKV0KLSAg
ICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDQwMiwzMTIpIHNpemUgMTM0eDEw
NCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwRkYpXQotICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0
aW5nKSB7RElWfSBhdCAoNTM2LDMxMikgc2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgycHggc29saWQg
IzAwMDBGRildCi0gICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgwLDQxNikg
c2l6ZSAxMzR4MTA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICBSZW5kZXJC
bG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxMzQsNDE2KSBzaXplIDEzNHgxMDQgW2JvcmRlcjog
KDJweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0g
YXQgKDI2OCw0MTYpIHNpemUgMTM0eDEwNCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwRkYpXQot
bGF5ZXIgYXQgKDEwLDEwKSBzaXplIDEzMHg0NAotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9z
aXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSAxMzB4NDQKLSAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwwKSBzaXplIDEzMHgxOAotICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgNzl4MTgKLSAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzk6ICIx
IGdyZWVuIGJveDoiCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgMTMweDI2
IFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMiwyKSBzaXplIDEyNngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAzNXgxOAotICAgICAgICAgIHRleHQg
cnVuIGF0ICgyLDIpIHdpZHRoIDM1OiAiZmFpbGVkIgotbGF5ZXIgYXQgKDE0NCwxMCkgc2l6ZSAx
MzB4NjIKLSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIp
IHNpemUgMTMweDYyCi0gICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSAx
MzB4MzYKLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwN3gzNgotICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjogIjIgIgotICAgICAgICB0ZXh0IHJ1biBh
dCAoMTIsMCkgd2lkdGggOTU6ICJncmVlbiBib3ggd2l0aCIKLSAgICAgICAgdGV4dCBydW4gYXQg
KDAsMTgpIHdpZHRoIDU3OiAid29yZCBvazoiCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MzYpIHNpemUgMTMweDI2IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDEyNngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICMw
MDgwMDApXQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAxNngxOAot
ICAgICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAoMjc4
LDEwKSBzaXplIDEzMHgzNgotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJ
Vn0gYXQgKDIsMikgc2l6ZSAxMzB4MzYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAxMDd4MzYKLSAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwNzogIjMgZ3JlZW4g
Ym94IHdpdGgiCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNTc6ICJ3b3JkIG9rOiIK
LSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICgyNzgs
NDYpIHNpemUgMTMweDM0Ci0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwz
Nikgc2l6ZSAxMzB4MzQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDEyNngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDgw
MDApXQotICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAg
ICAgdGV4dCBydW4gYXQgKDIsMikgd2lkdGggMTY6ICJvayIKLWxheWVyIGF0ICg0MTIsMTApIHNp
emUgMTMweDM2Ci0gIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MiwyKSBzaXplIDEzMHgzNgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEw
N3gzNgotICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA3OiAiNCBncmVlbiBib3ggd2l0
aCIKLSAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA1NzogIndvcmQgb2s6IgotICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotbGF5ZXIgYXQgKDQxMiw0Nikgc2l6
ZSAxMzB4MzQKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDM2KSBzaXpl
IDEzMHgzNCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotbGF5ZXIgYXQgKDQxNCw0OCkg
c2l6ZSAxMjZ4MzAKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNp
emUgMTI2eDMwIFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRo
IDE2OiAib2siCi1sYXllciBhdCAoNTQ2LDEwKSBzaXplIDEzMHgzNgotICBSZW5kZXJCbG9jayAo
cmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSAxMzB4MzYKLSAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMDd4MzYKLSAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDEwNzogIjUgZ3JlZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggNTc6ICJ3b3JkIG9rOiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAweDAKLWxheWVyIGF0ICg1NDYsNDYpIHNpemUgMTMweDM0Ci0gIFJlbmRlckJsb2NrIChw
b3NpdGlvbmVkKSB7RElWfSBhdCAoMCwzNikgc2l6ZSAxMzB4MzQgW2JvcmRlcjogKDJweCBzb2xp
ZCAjRkYwMDAwKV0KLSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDEyNngyNiBb
Ym9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDIsMikgc2l6ZSAxMjJ4MjIgW2JvcmRlcjogKDJweCBzb2xpZCAjMDA4MDAwKV0KLSAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMiwyKSB3aWR0aCAxNjogIm9rIgotbGF5ZXIgYXQgKDEwLDExNCkgc2l6ZSAxMzB4MzYK
LSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUg
MTMweDM2Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTA3eDM2Ci0gICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDc6ICI2IGdyZWVuIGJveCB3aXRoIgotICAgICAg
dGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDU3OiAid29yZCBvazoiCi0gICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXllciBhdCAoMTAsMTUwKSBzaXplIDEzMHgzNAot
ICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMzYpIHNpemUgMTMweDM0IFti
b3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoMTIsMTUyKSBzaXplIDEyNngz
MAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjZ4MzAg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MiwyKSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDgwMDApXQotICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAgICAgdGV4dCBydW4gYXQg
KDIsMikgd2lkdGggMTY6ICJvayIKLWxheWVyIGF0ICgxNDQsMTE0KSBzaXplIDEzMHgzNgotICBS
ZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSAxMzB4
MzYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMDd4MzYKLSAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwNzogIjcgZ3JlZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0
IHJ1biBhdCAoMCwxOCkgd2lkdGggNTc6ICJ3b3JkIG9rOiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICgxNDQsMTUwKSBzaXplIDEzMHgzNAotICBS
ZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMzYpIHNpemUgMTMweDM0IFtib3Jk
ZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoMTQ2LDE1Mikgc2l6ZSAxMjZ4MzAK
LSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgMTI2eDMwIFti
b3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoMTQ4LDE1NCkgc2l6ZSAxMjJ4
MjYKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgMTIyeDI2
IFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2si
Ci1sYXllciBhdCAoMjc4LDExNCkgc2l6ZSAxMzB4MzYKLSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZl
IHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgMTMweDM2Ci0gICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMTIyeDM2Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxMjI6ICI4IGRvdWJsZSBncmVlbiBib3giCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lk
dGggODk6ICJ3aXRoIHdvcmQgb2s6IgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDB4MAotbGF5ZXIgYXQgKDI3OCwxNTApIHNpemUgMTMweDM0Ci0gIFJlbmRlckJsb2NrIChw
b3NpdGlvbmVkKSB7RElWfSBhdCAoMCwzNikgc2l6ZSAxMzB4MzQgW2JvcmRlcjogKDJweCBzb2xp
ZCAjMDA4MDAwKV0KLWxheWVyIGF0ICgyODAsMTUyKSBzaXplIDEyNngzMAotICBSZW5kZXJCbG9j
ayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjZ4MzAgW2JvcmRlcjogKDJweCBz
b2xpZCAjRkYwMDAwKV0KLWxheWVyIGF0ICgyODIsMTU0KSBzaXplIDEyMngyNgotICBSZW5kZXJC
bG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjJ4MjYgW2JvcmRlcjogKDJw
eCBzb2xpZCAjMDA4MDAwKV0KLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAx
NngxOAotICAgICAgdGV4dCBydW4gYXQgKDIsMikgd2lkdGggMTY6ICJvayIKLWxheWVyIGF0ICg0
MTIsMTE0KSBzaXplIDEzMHgzNgotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkg
e0RJVn0gYXQgKDIsMikgc2l6ZSAxMzB4MzYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxMDd4MzYKLSAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwNzogIjkgZ3Jl
ZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNTc6ICJ3b3JkIG9r
OiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICg0
MTIsMTUwKSBzaXplIDEzMHgzNAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMzYpIHNpemUgMTMweDM0IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXllciBh
dCAoNDE0LDE1Mikgc2l6ZSAxMjZ4MzAKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9
IGF0ICgyLDIpIHNpemUgMTI2eDMwIFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXll
ciBhdCAoNDE2LDE1NCkgc2l6ZSAxMjJ4MjYKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgyLDIpIHNpemUgMTIyeDI2IFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0g
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAgIHRleHQgcnVu
IGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAoNTQ2LDExNCkgc2l6ZSAxMzB4MTgK
LSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUg
MTMweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODd4MTgKLSAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg3OiAiMTAgZ3JlZW4gYm94OiIKLSAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICg1NDYsMTMyKSBzaXplIDEz
MHgzNAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMTgpIHNpemUgMTMw
eDM0IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoNTQ4LDEzNCkgc2l6
ZSAxMjZ4MzAKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUg
MTI2eDMwIFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi1sYXllciBhdCAoNTUwLDEzNikg
c2l6ZSAxMjJ4MjYKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNp
emUgMTIyeDI2IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgyLDIpIHNpemUgMzV4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRo
IDM1OiAiZmFpbGVkIgotbGF5ZXIgYXQgKDEwLDIxOCkgc2l6ZSAxMzB4MzYKLSAgUmVuZGVyQmxv
Y2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgMTMweDM2Ci0gICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTE1eDM2Ci0gICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMTU6ICIxMSBncmVlbiBib3ggd2l0aCIKLSAgICAgIHRleHQgcnVuIGF0
ICgwLDE4KSB3aWR0aCA1NzogIndvcmQgb2s6IgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDB4MAotbGF5ZXIgYXQgKDEwLDI1NCkgc2l6ZSAxMzB4MzQKLSAgUmVuZGVyQmxv
Y2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDM2KSBzaXplIDEzMHgzNCBbYm9yZGVyOiAoMnB4
IHNvbGlkICNGRjAwMDApXQotICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDIpIHNpemUgMTI2
eDI2IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMiwyKSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDgwMDApXQotICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAxNngxOAotICAgICAgICAgIHRl
eHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAoMTQ0LDIxOCkgc2l6ZSAx
MzB4MzYKLSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIp
IHNpemUgMTMweDM2Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTE1eDM2
Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTU6ICIxMiBncmVlbiBib3ggd2l0aCIK
LSAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA1NzogIndvcmQgb2s6IgotICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotbGF5ZXIgYXQgKDE0NCwyNTQpIHNpemUg
MTMweDM0Ci0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwzNikgc2l6ZSAx
MzB4MzQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMiwyKSBzaXplIDEyNngyNiBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjJ4MjIgW2JvcmRlcjogKDJweCBz
b2xpZCAjMDA4MDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUg
MTZ4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAxNjogIm9rIgotbGF5ZXIg
YXQgKDI3OCwyMTgpIHNpemUgMTMweDE4Ci0gIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlv
bmVkKSB7RElWfSBhdCAoMiwyKSBzaXplIDEzMHgxOAotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDg3eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NzogIjEz
IGdyZWVuIGJveDoiCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1s
YXllciBhdCAoMjc4LDIzNikgc2l6ZSAxMzB4MzQKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgwLDE4KSBzaXplIDEzMHgzNCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDAp
XQotICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDIpIHNpemUgMTI2eDI2IFtib3JkZXI6ICgy
cHggc29saWQgIzAwODAwMCldCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXpl
IDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAzNXgxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgyLDIp
IHdpZHRoIDM1OiAiZmFpbGVkIgotbGF5ZXIgYXQgKDQxMiwyMTgpIHNpemUgMTMweDM2Ci0gIFJl
bmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMiwyKSBzaXplIDEzMHgz
NgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDExNXgzNgotICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTE1OiAiMTQgZ3JlZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0
IHJ1biBhdCAoMCwxOCkgd2lkdGggNTc6ICJ3b3JkIG9rOiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICg0MTIsMjU0KSBzaXplIDEzMHgzMAotICBS
ZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMzYpIHNpemUgMTMweDMwCi0gICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMzB4MjIgW2JvcmRlcjogKDJweCBzb2xp
ZCAjMDA4MDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDE2eDE4
Ci0gICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAoNTQ2
LDIxOCkgc2l6ZSAxMzB4MzYKLSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtE
SVZ9IGF0ICgyLDIpIHNpemUgMTMweDM2Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMTE1eDM2Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTU6ICIxNSBncmVl
biBib3ggd2l0aCIKLSAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA1NzogIndvcmQgb2s6
IgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotbGF5ZXIgYXQgKDU0
NiwyNTQpIHNpemUgMTMweDMwCi0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAo
MCwzNikgc2l6ZSAxMzB4MzAKLWxheWVyIGF0ICg1NDYsMjU0KSBzaXplIDEzMHgzMAotICBSZW5k
ZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMzB4MzAgW2JvcmRlcjog
KDJweCBzb2xpZCAjMDA4MDAwKV0KLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6
ZSAxNngxOAotICAgICAgdGV4dCBydW4gYXQgKDIsMikgd2lkdGggMTY6ICJvayIKLWxheWVyIGF0
ICgxMCwzMjIpIHNpemUgMTMweDM2Ci0gIFJlbmRlckJsb2NrIChyZWxhdGl2ZSBwb3NpdGlvbmVk
KSB7RElWfSBhdCAoMiwyKSBzaXplIDEzMHgzNgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDExNXgzNgotICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTE1OiAiMTYg
Z3JlZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNTc6ICJ3b3Jk
IG9rOiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0
ICgxMCwzNTgpIHNpemUgMTMweDM0Ci0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBh
dCAoMCwzNikgc2l6ZSAxMzB4MzQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDEyNng0OCBbYm9yZGVyOiAoMnB4IHNvbGlk
ICNGRjAwMDApXQotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjJ4MjIg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgyLDIpIHNpemUgMjB4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAy
MDogImZhaWwiCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyNCkgc2l6ZSAxMjJ4MjIg
W2JvcmRlcjogKDJweCBzb2xpZCAjMDA4MDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgyLDIpIHNpemUgMTZ4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAx
NjogIm9rIgotbGF5ZXIgYXQgKDE0NCwzMjIpIHNpemUgMTMweDM2Ci0gIFJlbmRlckJsb2NrIChy
ZWxhdGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMiwyKSBzaXplIDEzMHgzNgotICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDExNXgzNgotICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTE1OiAiMTcgZ3JlZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggNTc6ICJ3b3JkIG9rOiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAweDAKLWxheWVyIGF0ICgxNDQsMzU4KSBzaXplIDEzMHgzNAotICBSZW5kZXJCbG9jayAo
cG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMzYpIHNpemUgMTMweDM0IFtib3JkZXI6ICgycHggc29s
aWQgI0ZGMDAwMCldCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjZ4NDgg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgyLDIpIHNpemUgMTIyeDIyIFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDE2eDE4Ci0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDIsMikgd2lkdGggMTY6ICJvayIKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgy
LDI0KSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAyMHgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgyLDIpIHdpZHRoIDIwOiAiZmFpbCIKLWxheWVyIGF0ICgyNzgsMzIyKSBzaXplIDEzMHgz
NgotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6
ZSAxMzB4MzYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTV4MzYKLSAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDExNTogIjE4IGdyZWVuIGJveCB3aXRoIgotICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDU3OiAid29yZCBvazoiCi0gICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXllciBhdCAoMjc4LDM1OCkgc2l6ZSAxMzB4
MzQKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDM2KSBzaXplIDEzMHgz
NCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgyLDIpIHNpemUgMTI2eDQ4IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlk
ICNGRjAwMDApXQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAyMHgx
OAotICAgICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDIwOiAiZmFpbCIKLSAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgyLDI0KSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlk
ICMwMDgwMDApXQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAxNngx
OAotICAgICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAo
NDEyLDMyMikgc2l6ZSAxMzB4MzYKLSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgyLDIpIHNpemUgMTMweDM2Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMTE1eDM2Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTU6ICIxOSBn
cmVlbiBib3ggd2l0aCIKLSAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA1NzogIndvcmQg
b2s6IgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotbGF5ZXIgYXQg
KDQxMiwzNTgpIHNpemUgMTMweDM0Ci0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBh
dCAoMCwzNikgc2l6ZSAxMzB4MzQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDEyNngyNiBbYm9yZGVyOiAoMnB4IHNvbGlk
ICNGRjAwMDApXQotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjJ4MjIg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgyLDIpIHNpemUgMjB4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAy
MDogImZhaWwiCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMjgpIHNpemUgMTI2eDI2IFti
b3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MiwyKSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDgwMDApXQotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAxNngxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAoNTQ2LDMyMikgc2l6ZSAxMzB4MTgK
LSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUg
MTMweDE4Ci0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODd4MTgKLSAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg3OiAiMjAgZ3JlZW4gYm94OiIKLSAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICg1NDYsMzQwKSBzaXplIDEz
MHgzNAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDAsMTgpIHNpemUgMTMw
eDM0IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsMikgc2l6ZSAxMjZ4NDggW2JvcmRlcjogKDJweCBzb2xpZCAjMDA4MDAwKV0KLSAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDIpIHNpemUgMTIyeDIyIFtib3JkZXI6ICgycHggc29s
aWQgI0ZGMDAwMCldCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDE2
eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDIsMikgd2lkdGggMTY6ICJvayIKLSAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgyLDI0KSBzaXplIDEyMngyMiBbYm9yZGVyOiAoMnB4IHNvbGlk
ICMwMDgwMDApXQotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAxNngx
OAotICAgICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBhdCAo
MTAsNDI2KSBzaXplIDEzMHgzNgotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkg
e0RJVn0gYXQgKDIsMikgc2l6ZSAxMzB4MzYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxMjR4MzYKLSAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogIjIxIHR3
byBncmVlbiBib3hlcyIKLSAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCA4OTogIndpdGgg
d29yZCBvazoiCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXll
ciBhdCAoMTAsNDYyKSBzaXplIDEzMHgzNAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJ
Vn0gYXQgKDAsMzYpIHNpemUgMTMweDM0IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0g
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6ZSAxMjZ4MjYgW2JvcmRlcjogKDJweCBz
b2xpZCAjRkYwMDAwKV0KLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDIpIHNpemUgMTIy
eDIyIFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMiwyKSBzaXplIDE2eDE4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDIsMikgd2lk
dGggMTY6ICJvayIKLSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyOCkgc2l6ZSAxMjZ4MjYg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgyLDIpIHNpemUgMTIyeDIyIFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDE2eDE4Ci0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDIsMikgd2lkdGggMTY6ICJvayIKLWxheWVyIGF0ICgxNDQsNDI2KSBzaXplIDEzMHgz
NgotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6
ZSAxMzB4MzYKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTV4MzYKLSAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDExNTogIjIyIGdyZWVuIGJveCB3aXRoIgotICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDU3OiAid29yZCBvazoiCi0gICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi1sYXllciBhdCAoMTQ0LDQ2Mikgc2l6ZSAxMzB4
MzQKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDM2KSBzaXplIDEzMHgz
NCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotbGF5ZXIgYXQgKDE0Niw0NjQpIHNpemUg
MTI2eDMwCi0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMiwyKSBzaXplIDEy
NngzMCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDgwMDApXQotICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMiwyKSBzaXplIDE2eDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCAxNjog
Im9rIgotbGF5ZXIgYXQgKDI3OCw0MjYpIHNpemUgMTMweDM2Ci0gIFJlbmRlckJsb2NrIChyZWxh
dGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMiwyKSBzaXplIDEzMHgzNgotICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDExNXgzNgotICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTE1OiAiMjMgZ3JlZW4gYm94IHdpdGgiCi0gICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkg
d2lkdGggNTc6ICJ3b3JkIG9rOiIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAweDAKLWxheWVyIGF0ICgyNzgsNDYyKSBzaXplIDEzMHgzNAotICBSZW5kZXJCbG9jayAocG9z
aXRpb25lZCkgekk6IDEge0RJVn0gYXQgKDAsMzYpIHNpemUgMTMweDM0IFtib3JkZXI6ICgycHgg
c29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoMjgwLDQ2NCkgc2l6ZSAxMjZ4MzAKLSAgUmVuZGVy
QmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgMTI2eDMwIFtib3JkZXI6ICgy
cHggc29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoMjgyLDQ2Nikgc2l6ZSAxMjJ4MjYKLSAgUmVu
ZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgMTIyeDI2IFtib3JkZXI6
ICgycHggc29saWQgIzAwODAwMCldCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNp
emUgMTZ4MTgKLSAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvbGF5ZXJzL2xheWVyLXZpc2li
aWxpdHktc3VibGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9mYXN0L2xheWVycy9sYXllci12aXNpYmlsaXR5LXN1YmxheWVyLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxZGFkNi4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHktc3VibGF5
ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1s
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4
NAotICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTgKLSAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMTgpIHNpemUgMHgxOAotICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwzNikg
c2l6ZSAweDE4Ci0gICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDU0KSBzaXplIDB4MTgKLSAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw3Mikgc2l6ZSAxODB4MTgKLSAgICAgICAgdGV4dCBy
dW4gYXQgKDAsNzIpIHdpZHRoIDE4MDogIjI0IGdyZWVuIGJveCB3aXRoIHdvcmQgb2s6ICIKLSAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCw5MCkgc2l6
ZSAweDE4Ci0gICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDEwOCkgc2l6ZSAweDE4Ci0gICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgwLDEyNikgc2l6ZSAweDE4Ci0gICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMTQ0KSBzaXplIDE4MHgxOAotICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdp
ZHRoIDE4MDogIjI1IGdyZWVuIGJveCB3aXRoIHdvcmQgb2s6ICIKLSAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwxNjIpIHNpemUgMHgxOAotICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwxODApIHNpemUgMHgxOAotICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwxOTgpIHNpemUgMHgxOAotICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDIxNikg
c2l6ZSAxODB4MTgKLSAgICAgICAgdGV4dCBydW4gYXQgKDAsMjE2KSB3aWR0aCAxODA6ICIyNiBn
cmVlbiBib3ggd2l0aCB3b3JkIG9rOiAiCi0gICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDAsMjM0KSBzaXplIDB4MTgKLSAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDAsMjUyKSBzaXplIDB4MTgKLSAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMjcwKSBzaXpl
IDB4MTgKLWxheWVyIGF0ICgwLDk4KSBzaXplIDgwMHgzNAotICBSZW5kZXJCbG9jayAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDAsOTgpIHNpemUgODAweDM0IFtib3JkZXI6ICgycHggc29saWQgI0ZG
MDAwMCldCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6ZSA3OTZ4NCBbYm9yZGVy
OiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDYpIHNp
emUgNzk2eDIyIFtib3JkZXI6ICgycHggc29saWQgIzAwODAwMCldCi0gICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSAxNngxOAotICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3
aWR0aCAxNjogIm9rIgotbGF5ZXIgYXQgKDIsMTAwKSBzaXplIDc5NngzMAotICBSZW5kZXJCbG9j
ayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSA3OTZ4MzAgW2JvcmRlcjogKDJweCBz
b2xpZCAjRkYwMDAwKV0KLSAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjd4
MTgKLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDI3eDE4Ci0gICAgICAg
IHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDI3OiAiYmxhaCIKLSAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKLWxheWVyIGF0ICgyLDEwMCkgc2l6ZSA3OTZ4MzAKLSAgUmVu
ZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgyLDIpIHNpemUgNzk2eDMwIFtib3JkZXI6
ICgycHggc29saWQgI0ZGMDAwMCldCi1sYXllciBhdCAoMCwxNzApIHNpemUgODAweDM0Ci0gIFJl
bmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwxNzApIHNpemUgODAweDM0IFtib3Jk
ZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikg
c2l6ZSA3OTZ4NCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgyLDYpIHNpemUgNzk2eDQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0K
LSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwxMCkgc2l6ZSA3OTZ4MjIgW2JvcmRlcjogKDJw
eCBzb2xpZCAjMDA4MDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXpl
IDE2eDE4Ci0gICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1sYXllciBh
dCAoMiwxNzIpIHNpemUgNzk2eDMwCi0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBh
dCAoMiwyKSBzaXplIDc5NngzMCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQotbGF5ZXIg
YXQgKDIsMTcyKSBzaXplIDc5NngzMAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0g
YXQgKDIsMikgc2l6ZSA3OTZ4MzAgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICBS
ZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjd4MTgKLSAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMiwyKSBzaXplIDI3eDE4Ci0gICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdp
ZHRoIDI3OiAiYmxhaCIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAK
LWxheWVyIGF0ICgwLDI0Mikgc2l6ZSA4MDB4MzQKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgwLDI0Mikgc2l6ZSA4MDB4MzQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAw
KV0KLSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDc5NngyMiBbYm9yZGVyOiAo
MnB4IHNvbGlkICNGRjAwMDApXQotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMikgc2l6
ZSA3OTJ4MTgKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjd4MTgK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzogImJsYWgiCi0gICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsMjQpIHNpemUgNzk2eDQgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYw
MDAwKV0KLSAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyOCkgc2l6ZSA3OTZ4MjIgW2JvcmRl
cjogKDJweCBzb2xpZCAjMDA4MDAwKV0KLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwy
KSBzaXplIDE2eDE4Ci0gICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDE2OiAib2siCi1s
YXllciBhdCAoMiwyNDQpIHNpemUgNzk2eDMwCi0gIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7
RElWfSBhdCAoMiwyKSBzaXplIDc5NngzMCBbYm9yZGVyOiAoMnB4IHNvbGlkICNGRjAwMDApXQot
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyN3gxOAotICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgMjd4MTgKLSAgICAgICAgdGV4dCBydW4gYXQgKDIs
Mikgd2lkdGggMjc6ICJibGFoIgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDB4MAotbGF5ZXIgYXQgKDIsMjQ0KSBzaXplIDc5NngzMAotICBSZW5kZXJCbG9jayAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDIsMikgc2l6ZSA3OTZ4MzAgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYw
MDAwKV0KLSAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjd4MTgKLSAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXplIDI3eDE4Ci0gICAgICAgIHRleHQgcnVu
IGF0ICgyLDIpIHdpZHRoIDI3OiAiYmxhaCIKLSAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAweDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvZmFz
dC9yZXBhaW50L2ludmlzaWJsZS1vYmplY3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvZmFzdC9yZXBhaW50L2ludmlzaWJsZS1vYmplY3RzLWV4cGVjdGVkLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEyM2NjYy4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvcmVwYWludC9pbnZpc2libGUtb2JqZWN0
cy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1sYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
Ci1sYXllciBhdCAoOCw4KSBzaXplIDc4NHgxOAotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9z
aXRpb25lZCkge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKLSAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgNjd4MTgKLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDY3eDE4Ci0gICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY3OiAiaXMgaW52
aXNpYmxlIgotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAotbGF5ZXIg
YXQgKDgsMjYpIHNpemUgNzg0eDEwMAotICBSZW5kZXJCbG9jayAocmVsYXRpdmUgcG9zaXRpb25l
ZCkge0RJVn0gYXQgKDAsMTgpIHNpemUgNzg0eDEwMAotICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgNzg0eDEwMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9mYXN0L3JlcGFpbnQvbGF5ZXItaGlkZS13aGVuLW5lZWRzLWxheW91dC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2Zhc3QvcmVwYWludC9sYXllci1oaWRl
LXdoZW4tbmVlZHMtbGF5b3V0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGNlMTI0YTMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9mYXN0L3JlcGFpbnQvbGF5ZXItaGlkZS13aGVuLW5lZWRzLWxheW91dC1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0g
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0Ci1sYXllciBhdCAoOCw4
KSBzaXplIDc4NHgxMDAKLSAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9
IGF0ICgwLDApIHNpemUgNzg0eDEwMAotICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNp
emUgMTAweDEwMCBbYmdjb2xvcj0jMDA4MDAwXQotbGF5ZXIgYXQgKDgsOCkgc2l6ZSA1MHgxMDAK
LSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgNTB4MTAwIFti
Z2NvbG9yPSNGRjAwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L2Zhc3QvdGV4dC93aGl0ZXNwYWNlLzAyOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL2Zhc3QvdGV4dC93aGl0ZXNwYWNlLzAyOC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMGEwOGEuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9mYXN0L3RleHQvd2hpdGVzcGFjZS8wMjgtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAot
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAotICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTZ4MTgKLSAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTY6ICJBICIKLSAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTYsMCkgc2l6
ZSAxMXgxOAotICAgICAgICB0ZXh0IHJ1biBhdCAoMTYsMCkgd2lkdGggMTE6ICJDIgotbGF5ZXIg
YXQgKDI0LDgpIHNpemUgMTF4MTgKLSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtTUEFOfSBh
dCAoMjQsOCkgc2l6ZSAxMXgxOAotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDExeDE4Ci0gICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTogIkIiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dy
b3VuZC9maXhlZC1iYWNrZ3JvdW5kLW5vLWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJh
Y2tncm91bmQtbm8taW1hZ2UtZXhwZWN0ZWQudHh0CmluZGV4IDE0MTZjNDNlLi4yMzA3OWIxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4
ZWQtYmFja2dyb3VuZC9maXhlZC1iYWNrZ3JvdW5kLW5vLWltYWdlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dy
b3VuZC9maXhlZC1iYWNrZ3JvdW5kLW5vLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtNCw5ICs0LDE1
IEBACiAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgIChib3VuZHMgNzg1LjAwIDE3MDAuMDApCiAg
ICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChi
YWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAsIDAg
Nzg1IHggMTAyNCkKICAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQogICAgICAgKHRvcCBsZWZ0
IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCAyKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgKQorICAgICAgKQogICAgICkKICAgKQogKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJh
Y2tncm91bmQvZml4ZWQtYm9keS1iYWNrZ3JvdW5kLWJvZHktbGF5ZXItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91
bmQvZml4ZWQtYm9keS1iYWNrZ3JvdW5kLWJvZHktbGF5ZXItZXhwZWN0ZWQudHh0CmluZGV4IDFj
MmZiNGQuLmRmNzBhOTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJvZHktYmFja2dyb3VuZC1ib2R5
LWxheWVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtYm9keS1s
YXllci1leHBlY3RlZC50eHQKQEAgLTE0LDkgKzE0LDE0IEBACiAgICAgICAgICkKICAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKICAgICAgICAgICAoYm91bmRzIDc4NS4wMCAxNjAwLjAwKQorICAgICAg
ICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAwLCAw
IDc4NSB4IDEwMjQpCiAgICAgICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCiAgICAgICAgICAg
KHRvcCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCAyKQorICAgICAgICAgIChjaGlsZHJl
biAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgKQorICAgICAgICAg
ICkKICAgICAgICAgKQogICAgICAgKQogICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJvZHkt
YmFja2dyb3VuZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Rp
bGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtZXhwZWN0
ZWQudHh0CmluZGV4IGI2YjdlMmQuLjZlZWMzNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJvZHkt
YmFja2dyb3VuZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtYm9keS1iYWNrZ3JvdW5kLWV4
cGVjdGVkLnR4dApAQCAtMTQsOSArMTQsMTQgQEAKICAgICAgICAgKQogICAgICAgICAoR3JhcGhp
Y3NMYXllcgogICAgICAgICAgIChib3VuZHMgNzg1LjAwIDE3MDAuMDApCisgICAgICAgICAgKGRy
YXdzQ29udGVudCAxKQogICAgICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAsIDAgNzg1IHgg
MTAyNCkKICAgICAgICAgICAodGlsZSBzaXplIDUxMiB4IDUxMikKICAgICAgICAgICAodG9wIGxl
ZnQgdGlsZSAwLCAwIHRpbGVzIGdyaWQgMiB4IDIpCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAg
ICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICApCisgICAgICAgICAgKQogICAg
ICAgICApCiAgICAgICApCiAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtYm9keS1iYWNrZ3Jv
dW5kLW9wYWNpdHktaHRtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQt
b3BhY2l0eS1odG1sLWV4cGVjdGVkLnR4dAppbmRleCBiNmI3ZTJkLi42ZWVjMzQwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFj
a2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtb3BhY2l0eS1odG1sLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFj
a2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtb3BhY2l0eS1odG1sLWV4cGVjdGVkLnR4dApA
QCAtMTQsOSArMTQsMTQgQEAKICAgICAgICAgKQogICAgICAgICAoR3JhcGhpY3NMYXllcgogICAg
ICAgICAgIChib3VuZHMgNzg1LjAwIDE3MDAuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAx
KQogICAgICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAsIDAgNzg1IHggMTAyNCkKICAgICAg
ICAgICAodGlsZSBzaXplIDUxMiB4IDUxMikKICAgICAgICAgICAodG9wIGxlZnQgdGlsZSAwLCAw
IHRpbGVzIGdyaWQgMiB4IDIpCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgIChH
cmFwaGljc0xheWVyCisgICAgICAgICAgICApCisgICAgICAgICAgKQogICAgICAgICApCiAgICAg
ICApCiAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtYm9keS1iYWNrZ3JvdW5kLXBvc2l0aW9u
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3
aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtYm9keS1iYWNrZ3JvdW5kLXBvc2l0aW9uZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IDc4ZWEzZTMuLmM0ZDAxMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJv
ZHktYmFja2dyb3VuZC1wb3NpdGlvbmVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5
LWJhY2tncm91bmQtcG9zaXRpb25lZC1leHBlY3RlZC50eHQKQEAgLTE0LDkgKzE0LDE0IEBACiAg
ICAgICAgICkKICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgICAgICAoYm91bmRzIDc4NS4w
MCAzNzAwLjAwKQorICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAodGlsZSBj
YWNoZSBjb3ZlcmFnZSAwLCAwIDc4NSB4IDEwMjQpCiAgICAgICAgICAgKHRpbGUgc2l6ZSA1MTIg
eCA1MTIpCiAgICAgICAgICAgKHRvcCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCAyKQor
ICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
ICAgICAgKQorICAgICAgICAgICkKICAgICAgICAgKQogICAgICAgKQogICAgICkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNr
Z3JvdW5kL2ZpeGVkLWJvZHktYmFja2dyb3VuZC10cmFuc2Zvcm1lZC1odG1sLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNr
Z3JvdW5kL2ZpeGVkLWJvZHktYmFja2dyb3VuZC10cmFuc2Zvcm1lZC1odG1sLWV4cGVjdGVkLnR4
dAppbmRleCA5N2U5YTFkLi45MDdkZDEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tn
cm91bmQtdHJhbnNmb3JtZWQtaHRtbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtYm9keS1i
YWNrZ3JvdW5kLXRyYW5zZm9ybWVkLWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0xNCw5ICsxNCwxNCBA
QAogICAgICAgICApCiAgICAgICAgIChHcmFwaGljc0xheWVyCiAgICAgICAgICAgKGJvdW5kcyA3
OTUuMDAgMTcxMC4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCiAgICAgICAgICAgKHRp
bGUgY2FjaGUgY292ZXJhZ2UgMCwgMCA3OTUgeCAxMDI0KQogICAgICAgICAgICh0aWxlIHNpemUg
NTEyIHggNTEyKQogICAgICAgICAgICh0b3AgbGVmdCB0aWxlIDAsIDAgdGlsZXMgZ3JpZCAyIHgg
MikKKyAgICAgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICkKICAgICApCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQt
YmFja2dyb3VuZC9maXhlZC1ib2R5LWJhY2tncm91bmQtem9vbWVkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5k
L2ZpeGVkLWJvZHktYmFja2dyb3VuZC16b29tZWQtZXhwZWN0ZWQudHh0CmluZGV4IDkxOTU4N2Eu
LjEzZjkxMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQt
ZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJvZHktYmFja2dyb3VuZC16b29tZWQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2lu
Zy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWJvZHktYmFja2dyb3VuZC16b29tZWQtZXhwZWN0ZWQu
dHh0CkBAIC0xNiw5ICsxNiwxNCBAQAogICAgICAgICApCiAgICAgICAgIChHcmFwaGljc0xheWVy
CiAgICAgICAgICAgKGJvdW5kcyA3ODUuMDAgMTcwMC4wMCkKKyAgICAgICAgICAoZHJhd3NDb250
ZW50IDEpCiAgICAgICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2UgMCwgMCA0NDUgeCA2NjcpCiAg
ICAgICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCiAgICAgICAgICAgKHRvcCBsZWZ0IHRpbGUg
MCwgMCB0aWxlcyBncmlkIDIgeCAzKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgKQorICAgICAgICAgICkKICAgICAgICAgKQog
ICAgICAgKQogICAgICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWh0bWwtYmFja2dyb3VuZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4
ZWQtYmFja2dyb3VuZC9maXhlZC1odG1sLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0CmluZGV4IDNj
NDhlNjkuLmViNzE2MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLWh0bWwtYmFja2dyb3VuZC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5n
L2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtaHRtbC1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dApAQCAt
MTQsOSArMTQsMTQgQEAKICAgICAgICAgKQogICAgICAgICAoR3JhcGhpY3NMYXllcgogICAgICAg
ICAgIChib3VuZHMgNzg1LjAwIDE1MTYuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQog
ICAgICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAsIDAgNzg1IHggMTAyNCkKICAgICAgICAg
ICAodGlsZSBzaXplIDUxMiB4IDUxMikKICAgICAgICAgICAodG9wIGxlZnQgdGlsZSAwLCAwIHRp
bGVzIGdyaWQgMiB4IDIpCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgIChHcmFw
aGljc0xheWVyCisgICAgICAgICAgICApCisgICAgICAgICAgKQogICAgICAgICApCiAgICAgICAp
CiAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4ZWQtbm9uLXByb3BhZ2F0ZWQtYm9keS1iYWNrZ3Jv
dW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy9maXhlZC1iYWNrZ3JvdW5kL2ZpeGVkLW5vbi1wcm9wYWdhdGVkLWJvZHktYmFja2dyb3Vu
ZC1leHBlY3RlZC50eHQKaW5kZXggY2E0ZGYxMC4uN2NkM2EzOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL2ZpeGVkLWJhY2tncm91bmQvZml4
ZWQtbm9uLXByb3BhZ2F0ZWQtYm9keS1iYWNrZ3JvdW5kLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvZml4ZWQtYmFja2dyb3VuZC9m
aXhlZC1ub24tcHJvcGFnYXRlZC1ib2R5LWJhY2tncm91bmQtZXhwZWN0ZWQudHh0CkBAIC00LDEw
ICs0LDE1IEBACiAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgIChib3VuZHMgNzg1LjAwIDE3MDAu
MDApCiAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAg
ICAgIChiYWNrZ3JvdW5kQ29sb3IgI0MwQzBDMCkKICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdl
IDAsIDAgNzg1IHggMTIwMCkKICAgICAgICh0aWxlIHNpemUgNzg1IHggNjAwKQogICAgICAgKHRv
cCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDEgeCAyKQorICAgICAgKGNoaWxkcmVuIDEKKyAg
ICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgKQorICAgICAgKQogICAgICkKICAgKQogKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3N0
aWNreS9zdGlja3ktbGF5ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvdGlsZWQtZHJhd2luZy9zdGlja3kvc3RpY2t5LWxheWVycy1leHBlY3RlZC50eHQKaW5k
ZXggYThkY2Y5Ny4uNjNjYzJmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL3N0aWNreS9zdGlja3ktbGF5ZXJzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvc3RpY2t5L3N0aWNr
eS1sYXllcnMtZXhwZWN0ZWQudHh0CkBAIC01LDQyICs1LDQ4IEBAIExlZnQgc3RpY2t5IFJpZ2h0
IHN0aWNreSBMZWZ0ICUgc3RpY2t5IFJpZ2h0ICUgc3RpY2t5IExlZnQgYW5kIFJpZ2h0IExlZnQg
YW5kIFJpCiAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgIChib3VuZHMgMjAwOC4wMCA1ODUuMDAp
CiAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgIChjaGlsZHJlbiA2CisgICAgICAoZHJh
d3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAoY2hp
bGRyZW4gMQogICAgICAgICAoR3JhcGhpY3NMYXllcgotICAgICAgICAgIChwb3NpdGlvbiA4MjAu
MDAgMjUuMDApCi0gICAgICAgICAgKGJvdW5kcyAzMDAuMDAgNjAuMDApCi0gICAgICAgICAgKGNv
bnRlbnRzT3BhcXVlIDEpCi0gICAgICAgICAgKGRyYXdzQ29udGVudCAxKQotICAgICAgICApCi0g
ICAgICAgIChHcmFwaGljc0xheWVyCi0gICAgICAgICAgKHBvc2l0aW9uIDgxMi4wMCA5My4wMCkK
LSAgICAgICAgICAoYm91bmRzIDMwMC4wMCA2MC4wMCkKLSAgICAgICAgICAoY29udGVudHNPcGFx
dWUgMSkKLSAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCi0gICAgICAgICkKLSAgICAgICAgKEdy
YXBoaWNzTGF5ZXIKLSAgICAgICAgICAocG9zaXRpb24gOTYwLjAwIDE2MS4wMCkKLSAgICAgICAg
ICAoYm91bmRzIDMwMC4wMCA2MC4wMCkKLSAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAg
ICAgICAgICAoZHJhd3NDb250ZW50IDEpCi0gICAgICAgICkKLSAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKLSAgICAgICAgICAocG9zaXRpb24gODEyLjAwIDIyOS4wMCkKLSAgICAgICAgICAoYm91bmRz
IDMwMC4wMCA2MC4wMCkKLSAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgICAgICAo
ZHJhd3NDb250ZW50IDEpCi0gICAgICAgICkKLSAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAg
ICAgICAocG9zaXRpb24gODIwLjAwIDI5Ny4wMCkKLSAgICAgICAgICAoYm91bmRzIDMwMC4wMCA2
MC4wMCkKLSAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgICAgICAoZHJhd3NDb250
ZW50IDEpCi0gICAgICAgICkKLSAgICAgICAgKEdyYXBoaWNzTGF5ZXIKLSAgICAgICAgICAocG9z
aXRpb24gOTYwLjAwIDM2NS4wMCkKLSAgICAgICAgICAoYm91bmRzIDMwMC4wMCA2MC4wMCkKLSAg
ICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKLSAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisg
ICAgICAgICAgKGNoaWxkcmVuIDYKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAg
ICAgICAgIChwb3NpdGlvbiA4MjAuMDAgMjUuMDApCisgICAgICAgICAgICAgIChib3VuZHMgMzAw
LjAwIDYwLjAwKQorICAgICAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgICAg
ICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDgxMi4wMCA5My4wMCkKKyAgICAgICAgICAg
ICAgKGJvdW5kcyAzMDAuMDAgNjAuMDApCisgICAgICAgICAgICAgIChjb250ZW50c09wYXF1ZSAx
KQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICApCisgICAgICAg
ICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gOTYwLjAwIDE2MS4w
MCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAzMDAuMDAgNjAuMDApCisgICAgICAgICAgICAgIChj
b250ZW50c09wYXF1ZSAxKQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAg
ICAgICApCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRp
b24gODEyLjAwIDIyOS4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAzMDAuMDAgNjAuMDApCisg
ICAgICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICAgICAgICAoZHJhd3NDb250
ZW50IDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
ICAgICAgICAocG9zaXRpb24gODIwLjAwIDI5Ny4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAz
MDAuMDAgNjAuMDApCisgICAgICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICAg
ICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICAoR3JhcGhp
Y3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gOTYwLjAwIDM2NS4wMCkKKyAgICAgICAg
ICAgICAgKGJvdW5kcyAzMDAuMDAgNjAuMDApCisgICAgICAgICAgICAgIChjb250ZW50c09wYXF1
ZSAxKQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICApCisgICAg
ICAgICAgKQogICAgICAgICApCiAgICAgICApCiAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2UtYWZ0ZXItc2Ny
b2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy90aWxlLWNvdmVyYWdlLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQKaW5kZXggYTZlYTUz
MC4uMTA3NjQ3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2UtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1h
ZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC02LDExICs2LDE5IEBACiAgICAgKEdyYXBoaWNz
TGF5ZXIKICAgICAgIChib3VuZHMgNzg1LjAwIDUwMjEuMDApCiAgICAgICAoY29udGVudHNPcGFx
dWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZG
RkZGRikKICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMzAwMC4wMCA3ODUuMDAgeCA2MDAuMDAp
CiAgICAgICAoY29udGVudHNTY2FsZSAxLjAwKQogICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2Ug
MCwgMjU2MCA3ODUgeCAxNTM2KQogICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCiAgICAgICAo
dG9wIGxlZnQgdGlsZSAwLCA1IHRpbGVzIGdyaWQgMiB4IDMpCisgICAgICAoY2hpbGRyZW4gMQor
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4w
MCAwLjAwIHggMC4wMCkKKyAgICAgICAgICAoY29udGVudHNTY2FsZSAxLjAwKQorICAgICAgICAp
CisgICAgICApCiAgICAgKQogICApCiApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1hZnRlci1zY3JvbGwtc3BlY3Vs
YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1k
cmF3aW5nL3RpbGUtY292ZXJhZ2UtYWZ0ZXItc2Nyb2xsLXNwZWN1bGF0aXZlLWV4cGVjdGVkLnR4
dAppbmRleCBiMjhlZDJiLi5iYjI2ZmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1hZnRlci1zY3JvbGwtc3BlY3Vs
YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGls
ZWQtZHJhd2luZy90aWxlLWNvdmVyYWdlLWFmdGVyLXNjcm9sbC1zcGVjdWxhdGl2ZS1leHBlY3Rl
ZC50eHQKQEAgLTYsMTEgKzYsMTkgQEAKICAgICAoR3JhcGhpY3NMYXllcgogICAgICAgKGJvdW5k
cyA3ODUuMDAgNTAyMS4wMCkKICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKGRyYXdz
Q29udGVudCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQogICAgICAgKHZpc2li
bGUgcmVjdCAwLjAwLCAzMDAwLjAwIDc4NS4wMCB4IDYwMC4wMCkKICAgICAgIChjb250ZW50c1Nj
YWxlIDEuMDApCiAgICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAwLCAyMDQ4IDc4NSB4IDI1NjAp
CiAgICAgICAodGlsZSBzaXplIDUxMiB4IDUxMikKICAgICAgICh0b3AgbGVmdCB0aWxlIDAsIDQg
dGlsZXMgZ3JpZCAyIHggNSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xh
eWVyCisgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDAuMDAgeCAwLjAwKQorICAg
ICAgICAgIChjb250ZW50c1NjYWxlIDEuMDApCisgICAgICAgICkKKyAgICAgICkKICAgICApCiAg
ICkKICkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy90aWxlLWNvdmVyYWdlLXNjcm9sbC10by1ib3R0b20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc2Nyb2xs
LXRvLWJvdHRvbS1leHBlY3RlZC50eHQKaW5kZXggMTA3NDNhMi4uOGUzZmFmZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJh
Z2Utc2Nyb2xsLXRvLWJvdHRvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc2Nyb2xsLXRvLWJvdHRvbS1l
eHBlY3RlZC50eHQKQEAgLTYsMTEgKzYsMTkgQEAKICAgICAoR3JhcGhpY3NMYXllcgogICAgICAg
KGJvdW5kcyA3ODUuMDAgNTAyMS4wMCkKICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAg
KGRyYXdzQ29udGVudCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQogICAgICAg
KHZpc2libGUgcmVjdCAwLjAwLCA0NDIxLjAwIDc4NS4wMCB4IDYwMC4wMCkKICAgICAgIChjb250
ZW50c1NjYWxlIDEuMDApCiAgICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAwLCA0MDk2IDc4NSB4
IDkyNSkKICAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQogICAgICAgKHRvcCBsZWZ0IHRpbGUg
MCwgOCB0aWxlcyBncmlkIDIgeCAyKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBo
aWNzTGF5ZXIKKyAgICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgMC4wMCB4IDAuMDAp
CisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKKyAgICAgICAgKQorICAgICAgKQogICAg
ICkKICAgKQogKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxl
ZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc2xv
dy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CmluZGV4IGEwNDY1ZDUuLjY0ZDU1YjggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy90aWxlLWNvdmVy
YWdlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy1leHBl
Y3RlZC50eHQKQEAgLTYsMTEgKzYsMTkgQEAKICAgICAoR3JhcGhpY3NMYXllcgogICAgICAgKGJv
dW5kcyA4MDAuMDAgNjAwLjAwKQogICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJh
d3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCiAgICAgICAodmlz
aWJsZSByZWN0IDAuMDAsIDAuMDAgODAwLjAwIHggNjAwLjAwKQogICAgICAgKGNvbnRlbnRzU2Nh
bGUgMS4wMCkKICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAsIDAgODAwIHggNjAwKQogICAg
ICAgKHRpbGUgc2l6ZSA4MDAgeCA2MDApCiAgICAgICAodG9wIGxlZnQgdGlsZSAwLCAwIHRpbGVz
IGdyaWQgMSB4IDEpCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCAwLjAwIHggMC4wMCkKKyAgICAgICAg
ICAoY29udGVudHNTY2FsZSAxLjAwKQorICAgICAgICApCisgICAgICApCiAgICAgKQogICApCiAp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcv
dGlsZS1jb3ZlcmFnZS1zcGVjdWxhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zcGVjdWxhdGl2ZS1leHBl
Y3RlZC50eHQKaW5kZXggMzE2N2VjMy4uMTUxNDEwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc3BlY3VsYXRpdmUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy90aWxlLWNvdmVyYWdlLXNwZWN1bGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtNiwxMSArNiwx
OSBAQAogICAgIChHcmFwaGljc0xheWVyCiAgICAgICAoYm91bmRzIDc4NS4wMCA1MDIxLjAwKQog
ICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAo
YmFja2dyb3VuZENvbG9yICNGRkZGRkYpCiAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAg
Nzg1LjAwIHggNjAwLjAwKQogICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKICAgICAgICh0aWxl
IGNhY2hlIGNvdmVyYWdlIDAsIDAgNzg1IHggMjA0OCkKICAgICAgICh0aWxlIHNpemUgNTEyIHgg
NTEyKQogICAgICAgKHRvcCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCA0KQorICAgICAg
KGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAodmlzaWJsZSBy
ZWN0IDAuMDAsIDAuMDAgMC4wMCB4IDAuMDApCisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4w
MCkKKyAgICAgICAgKQorICAgICAgKQogICAgICkKICAgKQogKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGUtc2l6ZS1zbG93LXpvb21l
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvdGlsZS1zaXplLXNsb3ctem9vbWVkLWV4cGVjdGVkLnR4dAppbmRleCAxN2JiYjcxLi4wNDYw
ZDBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdp
bmcvdGlsZS1zaXplLXNsb3ctem9vbWVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZS1zaXplLXNsb3ctem9vbWVkLWV4cGVj
dGVkLnR4dApAQCAtNywxMiArNywyMCBAQAogICAgICAgKGFuY2hvciAwLjAwIDAuMDApCiAgICAg
ICAoYm91bmRzIDc4NS4wMCA1ODUuMDApCiAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAg
IChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3IgI0ZGRkZGRikKICAgICAg
ICh0cmFuc2Zvcm0gWzEuNzAgMC4wMCAwLjAwIDAuMDBdIFswLjAwIDEuNzAgMC4wMCAwLjAwXSBb
MC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAwIDEuMDBdKQogICAgICAgKHZpc2li
bGUgcmVjdCAwLjAwLCAwLjAwIDQ2MS43NiB4IDM0NC4xMikKICAgICAgIChjb250ZW50c1NjYWxl
IDEuMDApCiAgICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAwLCAwIDQ2MSB4IDM0NCkKICAgICAg
ICh0aWxlIHNpemUgNzg1IHggNTg1KQogICAgICAgKHRvcCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBn
cmlkIDEgeCAxKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgMC4wMCB4IDAuMDApCisgICAgICAgICAg
KGNvbnRlbnRzU2NhbGUgMS43MCkKKyAgICAgICAgKQorICAgICAgKQogICAgICkKICAgKQogKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3Rp
bGVkLWRyYXdpbmctc2Nyb2xsLXBvc2l0aW9uLXBhZ2UtY2FjaGUtcmVzdG9yYXRpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3RpbGVk
LWRyYXdpbmctc2Nyb2xsLXBvc2l0aW9uLXBhZ2UtY2FjaGUtcmVzdG9yYXRpb24tZXhwZWN0ZWQu
dHh0CmluZGV4IDc0NWRkMTMuLmMxMWQ2NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvdGlsZWQtZHJhd2luZy90aWxlZC1kcmF3aW5nLXNjcm9sbC1wb3NpdGlvbi1w
YWdlLWNhY2hlLXJlc3RvcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJhd2luZy1zY3JvbGwtcG9zaXRpb24t
cGFnZS1jYWNoZS1yZXN0b3JhdGlvbi1leHBlY3RlZC50eHQKQEAgLTgsMTEgKzgsMTkgQEAgZG9j
dW1lbnQuYm9keS5zY3JvbGxUb3AgPSAxMDAwCiAgICAgKEdyYXBoaWNzTGF5ZXIKICAgICAgIChi
b3VuZHMgNTAwOC4wMCA1MDE2LjAwKQogICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAo
ZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFja2dyb3VuZENvbG9yICNGRkZGRkYpCiAgICAgICAo
dmlzaWJsZSByZWN0IDEwMDAuMDAsIDEwMDAuMDAgNzg1LjAwIHggNTg1LjAwKQogICAgICAgKGNv
bnRlbnRzU2NhbGUgMS4wMCkKICAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDUxMiwgMCAyMDQ4
IHggMjU2MCkKICAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQogICAgICAgKHRvcCBsZWZ0IHRp
bGUgMSwgMCB0aWxlcyBncmlkIDQgeCA1KQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdy
YXBoaWNzTGF5ZXIKKyAgICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgMC4wMCB4IDAu
MDApCisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKKyAgICAgICAgKQorICAgICAgKQog
ICAgICkKICAgKQogKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90
aWxlZC1kcmF3aW5nL3RpbGVkLWRyYXdpbmctem9vbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJhd2luZy16b29tLWV4cGVj
dGVkLnR4dAppbmRleCBkNGIxNDVlLi4xMmI1N2U0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJhd2luZy16b29tLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGls
ZWQtZHJhd2luZy16b29tLWV4cGVjdGVkLnR4dApAQCAtNywxMiArNywyMCBAQAogICAgICAgKGFu
Y2hvciAwLjAwIDAuMDApCiAgICAgICAoYm91bmRzIDc4NS4wMCA1ODUuMDApCiAgICAgICAoY29u
dGVudHNPcGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5k
Q29sb3IgI0ZGRkZGRikKICAgICAgICh0cmFuc2Zvcm0gWzIuMzAgMC4wMCAwLjAwIDAuMDBdIFsw
LjAwIDIuMzAgMC4wMCAwLjAwXSBbMC4wMCAwLjAwIDEuMDAgMC4wMF0gWzAuMDAgMC4wMCAwLjAw
IDEuMDBdKQogICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDM0MS4zMCB4IDI1NC4zNSkK
ICAgICAgIChjb250ZW50c1NjYWxlIDEuMDApCiAgICAgICAodGlsZSBjYWNoZSBjb3ZlcmFnZSAw
LCAwIDQ0NSB4IDQ0NSkKICAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQogICAgICAgKHRvcCBs
ZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCAyKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgMC4w
MCB4IDAuMDApCisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMi4zMCkKKyAgICAgICAgKQorICAg
ICAgKQogICAgICkKICAgKQogKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi90aWxlZC1kcmF3aW5nL3RpbGVkLWRyYXdpbmctem9vbS1zY3JvbGxlZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJh
d2luZy16b29tLXNjcm9sbGVkLWV4cGVjdGVkLnR4dAppbmRleCA3NGY5M2I0Li41YTNiNGM4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGls
ZWQtZHJhd2luZy16b29tLXNjcm9sbGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdGlsZWQtZHJhd2luZy16b29tLXNjcm9sbGVk
LWV4cGVjdGVkLnR4dApAQCAtNywxMiArNywyMCBAQAogICAgICAgKGFuY2hvciAwLjAwIDAuMDAp
CiAgICAgICAoYm91bmRzIDEyMDguMDAgMjAyMS4wMCkKICAgICAgIChjb250ZW50c09wYXF1ZSAx
KQorICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZG
KQogICAgICAgKHRyYW5zZm9ybSBbMi4zMCAwLjAwIDAuMDAgMC4wMF0gWzAuMDAgMi4zMCAwLjAw
IDAuMDBdIFswLjAwIDAuMDAgMS4wMCAwLjAwXSBbMC4wMCAwLjAwIDAuMDAgMS4wMF0pCiAgICAg
ICAodmlzaWJsZSByZWN0IDgwMC4wMCwgMTAwMC4wMCAzNDEuMzAgeCAyNTQuMzUpCiAgICAgICAo
Y29udGVudHNTY2FsZSAxLjAwKQogICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2UgNjY3LCA4OTAg
NTQwIHggNDQ1KQogICAgICAgKHRpbGUgc2l6ZSA1MTIgeCA1MTIpCiAgICAgICAodG9wIGxlZnQg
dGlsZSAzLCA0IHRpbGVzIGdyaWQgMyB4IDIpCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCAwLjAwIHgg
MC4wMCkKKyAgICAgICAgICAoY29udGVudHNTY2FsZSAyLjMwKQorICAgICAgICApCisgICAgICAp
CiAgICAgKQogICApCiApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3VzZS10aWxlZC1kcmF3aW5nLWV4cGVj
dGVkLnR4dAppbmRleCAxMzRjOGRhLi4wYjQ3MThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvdXNlLXRpbGVkLWRyYXdpbmctZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJhd2luZy91c2Ut
dGlsZWQtZHJhd2luZy1leHBlY3RlZC50eHQKQEAgLTYsMTEgKzYsMTkgQEAKICAgICAoR3JhcGhp
Y3NMYXllcgogICAgICAgKGJvdW5kcyAxMjA4LjAwIDIwMjEuMDApCiAgICAgICAoY29udGVudHNP
cGFxdWUgMSkKKyAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgIChiYWNrZ3JvdW5kQ29sb3Ig
I0ZGRkZGRikKICAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCA3ODUuMDAgeCA1ODUuMDAp
CiAgICAgICAoY29udGVudHNTY2FsZSAxLjAwKQogICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2Ug
MCwgMCAxMDI0IHggMTAyNCkKICAgICAgICh0aWxlIHNpemUgNTEyIHggNTEyKQogICAgICAgKHRv
cCBsZWZ0IHRpbGUgMCwgMCB0aWxlcyBncmlkIDIgeCAyKQorICAgICAgKGNoaWxkcmVuIDEKKyAg
ICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAg
MC4wMCB4IDAuMDApCisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgMS4wMCkKKyAgICAgICAgKQor
ICAgICAgKQogICAgICkKICAgKQogKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi90aWxlZC1kcmF3aW5nL3dpbmRvdy1zZXJ2ZXItc25hcHNob3RzLXdvcmstZXhwZWN0
ZWQtbWlzbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvdGlsZWQtZHJh
d2luZy93aW5kb3ctc2VydmVyLXNuYXBzaG90cy13b3JrLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNTMxYTQuLjAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3dpbmRvdy1zZXJ2ZXItc25h
cHNob3RzLXdvcmstZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIg
KzAsMCBAQAotPGh0bWw+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3RpbGVkLWRyYXdpbmcvd2luZG93LXNlcnZlci1zbmFwc2hvdHMtd29yay5odG1s
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi90aWxlZC1kcmF3aW5nL3dpbmRvdy1zZXJ2
ZXItc25hcHNob3RzLXdvcmsuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQw
MzljNS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3RpbGVkLWRy
YXdpbmcvd2luZG93LXNlcnZlci1zbmFwc2hvdHMtd29yay5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNSArMCwwIEBACi08aHRtbD4KLTxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
azsgY29sb3I6IHdoaXRlOyI+Ci1JZiB0aGlzIHRlc3QgcGFzc2VzIChpZiBXZWJLaXRUZXN0UnVu
bmVyJ3Mgc25hcHNob3RzIGFyZSB3b3JraW5nIGNvcnJlY3RseSB3aXRoIHRpbGVkIGRyYXdpbmcp
LCBpdCB3aWxsIG5vdCBtYXRjaCB0aGUgcHVyZS13aGl0ZSBtaXNtYXRjaCBleHBlY3RhdGlvbi4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggYTljY2EyNS4uNmY1ODA0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEzNjMsOSArMTM2MywzIEBAIHdlYmtpdC5vcmcvYi8xMjIwMzkg
bWVkaWEvdHJhY2svdHJhY2stY3VlLW92ZXJsYXAtc25hcC10by1saW5lcy1ub3Qtc2V0Lmh0bWwg
WyBQCiB3ZWJraXQub3JnL2IvMTIyMDQwIGFuaW1hdGlvbnMvY29tYm8tdHJhbnNmb3JtLXRyYW5z
bGF0ZStzY2FsZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzEyMjA0MiBt
ZWRpYS9tZWRpYS1jb250cm9sbGVyLXBsYXliYWNrLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotCi13
ZWJraXQub3JnL2IvMTE1MDQ4IG1lZGlhL21lZGlhLWVsZW1lbnQtcGxheS1hZnRlci1lb3MuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCi0KLXdlYmtpdC5vcmcvYi8xMjE4MDMgbWVkaWEvdmlkZW8tb2Jq
ZWN0LWZpdC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjE4MDMgbWVkaWEv
dmlkZW8tb2JqZWN0LWZpdC1jaGFuZ2UuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi13ZWJraXQub3Jn
L2IvMTIxODAzIGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLW9iamVjdC1maXQuaHRtbCBbIFBhc3Mg
RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3Mv
Zmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5nZS1leHBlY3RlZC5wbmcK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MTBmN2QuLjAwMDAwMDAKQmluYXJ5IGZp
bGVzIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1ibG9j
ay1jaGFuZ2UtZXhwZWN0ZWQucG5nIGFuZCAvZGV2L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLWJsb2NrLWNoYW5n
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9jc3MvZmlyc3Qt
bGV0dGVyLWJsb2NrLWNoYW5nZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU5MjY5ZmUuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvY3NzL2ZpcnN0LWxldHRlci1ibG9jay1jaGFuZ2UtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTUgKzAsMCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRl
clZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2OAot
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjgKLSAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCwxNikgc2l6ZSA3ODR4MzYKLSAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgzNgotICAgICAgICBSZW5kZXJJbmxpbmUgKGdlbmVyYXRlZCkgYXQgKDAs
MCkgc2l6ZSA1eDE4IFtjb2xvcj0jQ0IwMDBGXQotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDV4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDU6ICJJIgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDUsMCkgc2l6ZSAxNDd4MTgK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNSwwKSB3aWR0aCAxNDc6ICIgYW0gYWRkaW5nIGEgbmV3
IHRleHQuICIKLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNTIsMCkgc2l6ZSA3NzV4
MzYKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTUyLDApIHdpZHRoIDM3ODogIlRoaXMgaXMgYSB0
ZXN0IHBhcmFncmFwaC4gWW91IGNhbiBpbnNlcnQgZXh0cmEgdGV4dCBhdCBpdHMgc3RhcnQ7ICIK
LSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTMwLDApIHdpZHRoIDI0NTogInRoZSA6Zmlyc3QtbGV0
dGVyIHN0eWxlcyBzaG91bGQgYmUgdXBkYXRlZCIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggMTc5OiAidG8gYWNjb21vZGF0ZSB0aGlzIG5ldyB0ZXh0LiIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxv
dy1jb250ZW50LWJhc2ljLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xMmI2YWExCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQucG5n
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9u
cy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMzU1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHgxOTQKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE5NAorICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDE3MAorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNzY2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NDA1OiAiVGhlIHdvcmRzIFwiZmxvdyBjb250ZW50XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkg
YWZ0ZXIgdGhpcyBkaXYsICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDA1LDApIHdpZHRoIDM2
MTogImFuZCB0aGVyZSBzaG91bGQgYmUgdHdvIGNvcGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBt
YXRjaC4iCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTgpIHNpemUgMzAweDEwMAor
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTE4KSBzaXplIDc4NHgxOAorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NjZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA0MDU6ICJUaGUgd29yZHMgXCJmbG93IGNvbnRlbnRcIiBpbiBncmVl
biBzaG91bGQgZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgIgorICAgICAgICAgIHRleHQgcnVuIGF0
ICg0MDUsMCkgd2lkdGggMzYxOiAiYW5kIHRoZXJlIHNob3VsZCBiZSB0d28gY29waWVzIG9mIHRo
aXMgY29udGVudCB0aGF0IG1hdGNoLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE1
Mikgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDc5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3OTogImZs
b3cgY29udGVudCIKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ21haW4t
dGhyZWFkJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDEwMAorICAgICAgUmVuZGVyTmFt
ZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMzAweDEwMAorICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwxNikgc2l6ZSAzMDB4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMzAweDE4CisgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3OXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA3OTogImZsb3cgY29udGVudCIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnbWFpbi10
aHJlYWQnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0
aWNhbC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25z
L2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTAwNGM3NApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2lj
LXZlcnRpY2FsLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250
ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40NTU3YjM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMzAgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAyMzB4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDIzMHg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDIwNng1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgMzZ4NTg0CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDM2eDU1NgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQwNTogIlRo
ZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVuIHNob3VsZCBkaXNwbGF5IGFmdGVyIHRo
aXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDA1KSB3aWR0aCAxNTE6ICJhbmQg
dGhlcmUgc2hvdWxkIGJlIHR3byIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTgsMCkgd2lkdGgg
MjA2OiAiY29waWVzIG9mIHRoaXMgY29udGVudCB0aGF0IG1hdGNoLiIKKyAgICAgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoMzYsMCkgc2l6ZSAxMDB4MzAwCisgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMTM2LDApIHNpemUgMzZ4NTg0CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDM2eDU1NgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQwNTog
IlRoZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVuIHNob3VsZCBkaXNwbGF5IGFmdGVy
IHRoaXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDA1KSB3aWR0aCAxNTE6ICJh
bmQgdGhlcmUgc2hvdWxkIGJlIHR3byIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTgsMCkgd2lk
dGggMjA2OiAiY29waWVzIG9mIHRoaXMgY29udGVudCB0aGF0IG1hdGNoLiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgxODgsMCkgc2l6ZSAxOHg1ODQgW2NvbG9yPSMwMDgwMDBdCisgICAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDE4eDU4NAorICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4eDc5CisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA3OTogImZsb3cgY29udGVudCIKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQg
d2l0aCBmbG93LW5hbWUgJ21haW4tdGhyZWFkJworICAgIGxheWVyIGF0ICgwLDApIHNpemUgMTAw
eDMwMAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMTAweDMwMAor
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTYsMCkgc2l6ZSAxOHgzMDAgW2NvbG9yPSMw
MDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMTh4MzAwCisg
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOHg3OQorICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3OTogImZsb3cgY29udGVudCIKKyAgUmVn
aW9ucyBmb3IgZmxvdyAnbWFpbi10aHJlYWQnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdp
b24xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL2Zs
b3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1ybC1l
eHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYyZjE2MQpC
aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLnBuZyBkaWZm
ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxv
dy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjFmYzk3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9m
bG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDQ0NiwwKSBzaXplIDM1NHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgMzU0eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgMzMweDU4NAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAz
Nng1ODQKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzZ4NTY2Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDQzOiAiVGhlIHdvcmRzIFwiZmxvdyBj
b250ZW50XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgdHdpY2UgYWZ0ZXIgdGhpcyBkaXYsICIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0NDMpIHdpZHRoIDEyMzogImFuZCB0aGVyZSBzaG91
bGQgYmUiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDE4LDApIHdpZHRoIDIzNDogInR3byBjb3Bp
ZXMgb2YgdGhpcyBjb250ZW50IHRoYXQgbWF0Y2guIgorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9
IGF0ICgzNiwwKSBzaXplIDExMngzMTIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAg
ICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMTQ4LDApIHNpemUgMTEyeDMxMiBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI2MCwwKSBz
aXplIDM2eDU4NAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNng1
NTYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0MDU6ICJUaGUgd29yZHMgXCJm
bG93IGNvbnRlbnRcIiBpbiBncmVlbiBzaG91bGQgZGlzcGxheSBhZnRlciB0aGlzIGRpdiwgIgor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQwNSkgd2lkdGggMTUxOiAiYW5kIHRoZXJlIHNob3Vs
ZCBiZSB0d28iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDE4LDApIHdpZHRoIDIwNjogImNvcGll
cyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMzEyLDApIHNpemUgMTh4NTg0IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSAxOHg1ODQKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAxOHg3OQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
Nzk6ICJmbG93IGNvbnRlbnQiCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1l
ICdtYWluLXRocmVhZCcKKyAgICBsYXllciBhdCAoNjAwLDApIHNpemUgMjAweDMwMAorICAgICAg
UmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMjAweDMwMAorICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDIwMHgzMDAgW2NvbG9yPSMwMDgwMDBdCisgICAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMDB4MzAwCisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOHgxMDcKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA3OiAiZmlyc3QgZmxvdyBjb250ZW50IgorICAgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxMDAsMCkgc2l6ZSAxMDB4MzAwCisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOHgxMjcKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI3OiAic2Vjb25kIGZsb3cgY29udGVudCIKKyAgUmVn
aW9ucyBmb3IgZmxvdyAnbWFpbi10aHJlYWQnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdp
b24xCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNo
YW5nZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5n
ZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9ucy1leHBlY3RlZC50eHQKaW5kZXggZjhmMzA1Yy4u
ZTdkODAyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9u
cy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdpZHRoLXJlZ2lv
bnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lv
bnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13aWR0aC1yZWdp
b25zLWV4cGVjdGVkLnR4dApAQCAtNCwxMiArNCw5IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDQyMgogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NDIyCiAgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NDA2CiAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwwKSBzaXplIDc4NHg0MDYKLWxheWVyIGF0ICg4LDgpIHNpemUgNDAyeDEwMgot
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MDJ4MTAyIFtib3JkZXI6ICgxcHgg
c29saWQgIzAwMDAwMCldCi1sYXllciBhdCAoOCwxMTApIHNpemUgNTAyeDE4MgotICBSZW5kZXJS
ZWdpb24ge0RJVn0gYXQgKDAsMTAyKSBzaXplIDUwMngxODIgW2JvcmRlcjogKDFweCBzb2xpZCAj
MDAwMDAwKV0KLWxheWVyIGF0ICg4LDI5Mikgc2l6ZSAyMDJ4MTIyCi0gIFJlbmRlclJlZ2lvbiB7
RElWfSBhdCAoMCwyODQpIHNpemUgMjAyeDEyMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDAp
XQorICAgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSA0MDJ4MTAyIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAo
MCwxMDIpIHNpemUgNTAyeDE4MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMjg0KSBzaXplIDIwMngxMjIgW2JvcmRlcjogKDFw
eCBzb2xpZCAjMDAwMDAwKV0KIEZsb3cgVGhyZWFkcwogICBUaHJlYWQgd2l0aCBmbG93LW5hbWUg
J2Zsb3cxJwogICAgIGxheWVyIGF0ICgwLDApIHNpemUgNTAweDQwMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9yZWdpb24tZHluYW1pYy1hZnRlci1i
ZWZvcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9u
cy9yZWdpb24tZHluYW1pYy1hZnRlci1iZWZvcmUtZXhwZWN0ZWQudHh0CmluZGV4IGFkN2YyYWUu
LmNiMjc1ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lv
bnMvcmVnaW9uLWR5bmFtaWMtYWZ0ZXItYmVmb3JlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL3JlZ2lvbi1keW5hbWljLWFmdGVyLWJlZm9y
ZS1leHBlY3RlZC50eHQKQEAgLTIyLDQgKzIyLDQgQEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInNvbWUgdGV4dCB0byIKICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAyOTogImZsb3ciCiAgIFJlZ2lvbnMgZm9yIGZsb3cg
J25hbWVkRmxvdycKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbgorICAgIFJlbmRlclJl
Z2lvbiB7RElWfSAjcmVnaW9uIGhhc0xheWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9yZWdpb25zL3JlZ2lvbi1nZW5lcmF0ZWQtY29udGVudC1iZWZvcmUtYWZ0
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9y
ZWdpb24tZ2VuZXJhdGVkLWNvbnRlbnQtYmVmb3JlLWFmdGVyLWV4cGVjdGVkLnR4dAppbmRleCBh
ZDdmMmFlLi5jYjI3NWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9yZWdpb25zL3JlZ2lvbi1nZW5lcmF0ZWQtY29udGVudC1iZWZvcmUtYWZ0ZXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvcmVnaW9uLWdl
bmVyYXRlZC1jb250ZW50LWJlZm9yZS1hZnRlci1leHBlY3RlZC50eHQKQEAgLTIyLDQgKzIyLDQg
QEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3Njog
InNvbWUgdGV4dCB0byIKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAyOTog
ImZsb3ciCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ25hbWVkRmxvdycKLSAgICBSZW5kZXJSZWdpb24g
e0RJVn0gI3JlZ2lvbgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uIGhhc0xheWVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL3RleHQtcmVn
aW9uLXNwbGl0LXNtYWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9u
LWV4cGVjdGVkLnR4dAppbmRleCBhZjMzODY1Li5mY2ZiYTMxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0LXNtYWxsLXBh
Z2luYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3JlZ2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1leHBlY3RlZC50eHQK
QEAgLTMsMTQgKzMsMTAgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHgyNzYKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDI3NgogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDE2KSBzaXplIDc4NHgyNDQKLWxheWVy
IGF0ICg4LDE2KSBzaXplIDIwNHgzNAotICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6
ZSAyMDR4MzQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMDAwKV0KLWxheWVyIGF0ICg4LDY2KSBz
aXplIDIwNHg1NAotICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsNTApIHNpemUgMjA0eDU0IFti
b3JkZXI6ICgycHggc29saWQgIzAwMDAwMCldCi1sYXllciBhdCAoOCwxMzYpIHNpemUgMjA0eDU0
Ci0gIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwxMjApIHNpemUgMjA0eDU0IFtib3JkZXI6ICgy
cHggc29saWQgIzAwMDAwMCldCi1sYXllciBhdCAoOCwyMDYpIHNpemUgMjA0eDU0Ci0gIFJlbmRl
clJlZ2lvbiB7RElWfSBhdCAoMCwxOTApIHNpemUgMjA0eDU0IFtib3JkZXI6ICgycHggc29saWQg
IzAwMDAwMCldCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDR4MzQg
W2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBh
dCAoMCw1MCkgc2l6ZSAyMDR4NTQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAg
IFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwxMjApIHNpemUgMjA0eDU0IFtib3JkZXI6ICgycHgg
c29saWQgIzAwMDAwMCldCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTkwKSBzaXpl
IDIwNHg1NCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwMDApXQogRmxvdyBUaHJlYWRzCiAgIFRo
cmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdycKICAgICBsYXllciBhdCAoMCwwKSBzaXplIDIwMHgx
ODAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvdG9w
LW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVn
aW9uLWV4cGVjdGVkLnR4dAppbmRleCBkODYzNzAyLi45M2RkYTllIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vj
b25kLXJlZ2lvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ctb3V0LW9mLXNlY29uZC1yZWdpb24tZXhwZWN0ZWQudHh0
CkBAIC0xMCwxMiArMTAsOSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg0MTgKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggNzc5OiAiY29udGFpbmluZyBibG9jayB3aWR0aC4g
VGhlIGJsdWUgYmxvY2sgZG9lcyBub3QgZXhpc3QgaW4gcmVnaW9uIG9uZSwgc28gdXNpbmcgc29t
ZSBoeXBvdGhldGljYWwgbWFkZS11cCB3aWR0aCBpcyBpbmNvcnJlY3QuIgogICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDU0KSB3aWR0aCA1NjU6ICJUaGUgb3ZlcmZsb3cgc2hvdWxkIGJlIHNwaWxs
aW5nIG91dCBvZiB0aGUgdG9wIG9mIHJlZ2lvbiB0d28gYW5kIGJlIHBhaW50ZWQgaW4gcmVnaW9u
IG9uZS4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw4OCkgc2l6ZSA3ODR4MzA2Ci1s
YXllciBhdCAoOCwxMDQpIHNpemUgMzAyeDEwMgotICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAs
MCkgc2l6ZSAzMDJ4MTAyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCi1sYXllciBhdCAo
OCwyMDYpIHNpemUgNDAyeDIwMgotICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTAyKSBzaXpl
IDQwMngyMDIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KLWxheWVyIGF0ICg4LDQwOCkg
c2l6ZSAyeDIKLSAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDMwNCkgc2l6ZSAyeDIgW2JvcmRl
cjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgw
LDApIHNpemUgMzAyeDEwMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTAyKSBzaXplIDQwMngyMDIgW2JvcmRlcjogKDFweCBz
b2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDMwNCkgc2l6
ZSAyeDIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KIEZsb3cgVGhyZWFkcwogICBUaHJl
YWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cxJwogICAgIGxheWVyIGF0ICgwLDApIHNpemUgNDAweDMw
MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9qYXBh
bmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJl
cGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjhkNTk2MApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQt
aW4tcmVnaW9ucy1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWlu
LXJlZ2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVw
YWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4
dAppbmRleCA2ZDdlYjI3Li5hZjE1ZTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lv
bnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFp
bnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQK
QEAgLTI2LDYgKzI2LDYgQEAgRmxvdyBUaHJlYWRzCiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MzAyLDApIHdpZHRoIDM2NzogIlx4ezMwN0V9XHh7MzA1OX1ceHszMDRCfSBceHszMDZBfVx4ezMw
ODl9XHh7MzBCRn1ceHszMEE0fVx4ezMwQzh9XHh7MzBFQn1ceHszMDY4fVx4ezMwQTJ9XHh7MzBD
OX1ceHszMEVDfVx4ezMwQjl9XHh7MzA2MH1ceHszMDUxfVx4ezMwNjd9XHh7MzA2QX0iCiAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMzI3LDApIHdpZHRoIDgwOiAiXHh7MzA0Rn1ceHszMDAxfVx4
ezhBMkF9XHh7NTU0Rn0iCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ3RocmVhZCcKLSAgICBSZW5kZXJS
ZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gaGFzTGF5ZXIKIHNlbGVjdGlvbiBz
dGFydDogcG9zaXRpb24gNzAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Ym9keQogc2VsZWN0aW9uIGVuZDogICBwb3NpdGlvbiAyMzAgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDEge0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvcmVwYWludC9saW5lLWZsb3ctd2l0aC1mbG9hdHMtaW4tcmVnaW9ucy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2xpbmUtZmxvdy13
aXRoLWZsb2F0cy1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dAppbmRleCAxZWQ5OGU1Li4wNTExMGVl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2xpbmUt
Zmxvdy13aXRoLWZsb2F0cy1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L2xpbmUtZmxvdy13aXRoLWZsb2F0cy1pbi1yZWdp
b25zLWV4cGVjdGVkLnR4dApAQCAtODUsNCArODUsNCBAQCBGbG93IFRocmVhZHMKICAgICAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDYsNDc0KSB3aWR0aCA5MzogImhlcmU7IHRoZSBncmVh
dCAiCiAgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg5OSw0NzQpIHdpZHRoIDI2MTog
IndvbmRlciBpcywgdGhhdCB0aGVyZVx4ezIwMTh9cyBhbnkgb25lIGxlZnQgYWxpdmUhXHh7MjAx
OX0iCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ3RocmVhZCcKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0K
KyAgICBSZW5kZXJSZWdpb24ge0RJVn0gaGFzTGF5ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L3JlZ2lv
bi1wYWludGluZy1pbnZhbGlkYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IGVjZGNhNDIuLjVhY2Yy
ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvcmVn
aW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMywxMiArMywxMCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
IGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
NTg0CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDJ4MTUyIFtiZ2Nv
bG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCiAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNTIpIHNpemUgNzg0eDE4CiAgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE4Ci1sYXllciBhdCAoOCw4KSBzaXplIDMwMngxNTIKLSAg
UmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMzAyeDE1MiBbYmdjb2xvcj0jRkYwMDAw
XSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQotbGF5ZXIgYXQgKDgsMTc4KSBzaXplIDMw
MngyMDIKLSAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDE3MCkgc2l6ZSAzMDJ4MjAyIFtiZ2Nv
bG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICBSZW5kZXJS
ZWdpb24ge0RJVn0gYXQgKDAsMTcwKSBzaXplIDMwMngyMDIgW2JnY29sb3I9I0ZGMDAwMF0gW2Jv
cmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KIEZsb3cgVGhyZWFkcwogICBUaHJlYWQgd2l0aCBm
bG93LW5hbWUgJ2Zsb3cxJwogICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDM1MApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4Y2NjOGI5Li43
N2MzZWI0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTEwMDcsMTkgKzEwMDcsMTIgQEAgd2Via2l0Lm9yZy9iLzc2OTg2IHNjcm9sbGJhcnMv
c2Nyb2xsLXJ0bC1vci1idC1sYXllci5odG1sCiAjIFtRdF0gSW1hZ2VzIHNjYWxlIGRpZmZlcmVu
dGx5IGluIFdLMSBhbmQgV0syCiB3ZWJraXQub3JnL2IvOTIwMTUgdGFibGVzL21vemlsbGFfZXhw
ZWN0ZWRfZmFpbHVyZXMvYnVncy9idWc4NTAxNi5odG1sCiAKLSMgVGVzdHMgbmVlZCBuZXcgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIHJlc3VsdHMKLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25z
L211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9u
cy5odG1sIFsgTWlzc2luZyBdCi13ZWJraXQub3JnL2IvMTIxODI4IGZhc3QvcmVnaW9ucy90ZXh0
LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtpdC5v
cmcvYi8xMjE4MjggZmFzdC9yZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lv
bi5odG1sIFsgTWlzc2luZyBdCi13ZWJraXQub3JnL2IvMTIxODI4IGZhc3QvcmVwYWludC9yZWdp
b24tcGFpbnRpbmctaW52YWxpZGF0aW9uLmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8x
MjE4MjggZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5b3V0Lmh0bWwgWyBNaXNz
aW5nIF0KLQogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAtIFJlZ3Jlc3Npb25zIG9jY3VyZWQg
YWZ0ZXIgUXQgdmVyc2lvbiB1cGRhdGUKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKIAotIyBbUXRd
W1dLMl0gTmV3IGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24vc2VsZWN0aW9uLWRpcmVjdGlvbi5odG1s
IHJlZiB0ZXN0cyBmYWlscyBhZnRlciByMTU1OTc0Lgotd2Via2l0Lm9yZy9iLzEyMTY3OSBmYXN0
L3JlZ2lvbnMvc2VsZWN0aW9uL3NlbGVjdGlvbi1kaXJlY3Rpb24uaHRtbCBbIFNraXAgXQorIyBb
UXRdW1dLMl0gTmV3IGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWwgcmVmIHRl
c3RzIGZhaWxzIGFmdGVyIHIxNTU5NzQuCit3ZWJraXQub3JnL2IvMTIxNjc5IGZhc3QvcmVnaW9u
cy9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWwgWyBTa2lwIF0KIAogI1tRdF0gVGVzdHMgZmFpbHMg
YWZ0ZXIgdXNpbmcgUXQ1LjEuMS4KIHdlYmtpdC5vcmcvYi8xMjE2NzggZmFzdC9kb20vRGV2aWNl
TW90aW9uL25vLXBhZ2UtY2FjaGUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0
ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVnaW9ucy9mbG93LWNv
bnRlbnQtYmFzaWMtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmI0N2Y1NmEKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC13azIvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5wbmcg
ZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvZmFzdC9yZWdp
b25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC13azIvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNh
bC1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE2NDE5
ZgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdr
Mi9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnBuZyBk
aWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9mYXN0L3JlZ2lv
bnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVkLnBuZyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0LXdrMi9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRp
Y2FsLXJsLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
Y2U3ODY3CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQtd2syL2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0
ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL2Zh
c3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdp
ZHRoLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL2Zh
c3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdp
ZHRoLXJlZ2lvbnMtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmIyYTcyY2EKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC13azIvZmFzdC9yZWdpb25zL211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMt
aW4tdmFyaWFibGUtd2lkdGgtcmVnaW9ucy1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNw
bGl0LXNtYWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQtd2syL2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4
cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjI1ZWY0CkJp
bmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL2Zh
c3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBu
ZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9mYXN0L3Jl
Z2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9mYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1v
Zi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43NGM2NWM4CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ctb3V0LW9mLXNlY29uZC1y
ZWdpb24tZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQtd2syL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVj
dGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9mYXN0L3JlcGFpbnQvcmVnaW9u
LXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzcwM2ViYgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFs
aWRhdGlvbi1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC13azIvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbnZhbGlkYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVwYWludC9yZWdp
b24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44OWZjMzlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQtd2syL2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9u
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJS
ZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDJ4MTUyIFtiZ2NvbG9yPSNGRjAwMDBdIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwxNTIpIHNpemUgNzg0eDE5CisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6
ZSAweDE5CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTcxKSBzaXplIDMwMngyMDIg
W2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KK0Zsb3cgVGhy
ZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cxJworICAgIGxheWVyIGF0ICgwLDAp
IHNpemUgMzAweDM1MAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUg
MzAweDM1MAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzNTAK
KyAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDMwMHgzNTAgW2JnY29s
b3I9IzAwODAwMF0KKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVnaW9u
IHtESVZ9ICNyZWdpb24xCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWlu
dGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdr
Mi9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzNkYmMKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvZmFzdC9yZXBhaW50L3Jl
Z2lvbi1wYWludGluZy12aWEtbGF5b3V0LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGVmYTMzMzYuLjVjNjU3YzQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc5NiwxMiArMjc5Niwz
IEBAIHdlYmtpdC5vcmcvYi8xMjA2NzEgZWRpdGluZy9zdHlsZS9tYWtlLXRleHQtd3JpdGluZy1k
aXJlY3Rpb24taW5saW5lLXdpbi5odG1sIFsKIAogIyBSRUdSRVNTSU9OKHIxNTU3NzEpOiBqcy9z
dGFjay1vdmVyZmxvdy1hcnJpdHktY2F0Y2guaHRtbCBpcyBjcmFzaGluZyBvbiBub24tTWFjIHBs
YXRmb3Jtcwogd2Via2l0Lm9yZy9iLzEyMTM3NiBqcy9zdGFjay1vdmVyZmxvdy1hcnJpdHktY2F0
Y2guaHRtbCBbIFNraXAgXQotCi0jIFRlc3RzIG5lZWQgbmV3IGdlbmVyYXRlZCBleHBlY3RlZCBy
ZXN1bHRzCi13ZWJraXQub3JnL2IvMTIxODI4IGZhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJlZ2lv
bnMtbWFyay5odG1sIFsgTWlzc2luZyBdCi13ZWJraXQub3JnL2IvMTIxODI4IGZhc3QvcmVnaW9u
cy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtp
dC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25zL211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5n
ZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9ucy5odG1sIFsgTWlzc2luZyBdCi13ZWJraXQub3Jn
L2IvMTIxODI4IGZhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9u
Lmh0bWwgWyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZWdpb25zL3RvcC1v
dmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi5odG1sIFsgTWlzc2luZyBdCi13ZWJraXQub3Jn
L2IvMTIxODI4IGZhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLmh0bWwg
WyBNaXNzaW5nIF0KLXdlYmtpdC5vcmcvYi8xMjE4MjggZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWlu
dGluZy12aWEtbGF5b3V0Lmh0bWwgWyBNaXNzaW5nIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3Rl
ZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvYXV0b2hlaWdodC1y
ZWdpb25zLW1hcmstZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjEzNGMxYzQKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvYXV0b2hlaWdodC1yZWdpb25zLW1hcmstZXhwZWN0ZWQucG5n
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25z
L2F1dG9oZWlnaHQtcmVnaW9ucy1tYXJrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L2Zhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJlZ2lvbnMtbWFyay1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM0MTY0YwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9hdXRvaGVpZ2h0LXJl
Z2lvbnMtbWFyay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NiBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHgxMTYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDExNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDEwMAorICAg
ICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgNTB4NTAKKyAgICAgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoMCw1MCkgc2l6ZSA1MHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0g
YXQgKDAsNTApIHNpemUgNTB4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDUwKSBz
aXplIDUweDUwCitsYXllciBhdCAoOCw1MCkgc2l6ZSA1MHg0NTAKKyAgUmVuZGVyUmVnaW9uIHtE
SVZ9IGF0ICg4LDUwKSBzaXplIDUweDQ1MAorbGF5ZXIgYXQgKDUwLDgpIHNpemUgNjUweDUwCisg
IFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoNTAsOCkgc2l6ZSA2NTB4NTAKK0Zsb3cgVGhyZWFkcwor
ICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA1
MHg1MAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgNTB4NTAKKyAg
UmVnaW9ucyBmb3IgZmxvdyAnZmxvdycKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbgor
ICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3cyJworICBSZWdpb25zIGZvciBmbG93ICdmbG93
MicKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjIgaGFzQXV0b0xvZ2ljYWxIZWlnaHQK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MycKKyAgICBsYXllciBhdCAoMCwwKSBzaXpl
IDUweDQ1MAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgNTB4NDUw
CisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3czJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVn
aW9uMyBoYXNMYXllcgorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3c0JworICAgIGxheWVy
IGF0ICgwLDApIHNpemUgNjUweDUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgYXQgKDAs
MCkgc2l6ZSA2NTB4NTAKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzQnCisgICAgUmVuZGVyUmVn
aW9uIHtESVZ9ICNyZWdpb240IGhhc0xheWVyCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
dzUnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3c1JworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAj
cmVnaW9uNSBoYXNBdXRvTG9naWNhbEhlaWdodAorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zs
b3c2JworICAgIGxheWVyIGF0ICgwLDApIHNpemUgNTB4NTAKKyAgICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCBhdCAoMCwwKSBzaXplIDUweDUwCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3c2Jwor
ICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uNgorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUg
J2Zsb3c4JworICBSZWdpb25zIGZvciBmbG93ICdmbG93OCcKKyAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gI3JlZ2lvbjggaW52YWxpZAorICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3c3JworICBS
ZWdpb25zIGZvciBmbG93ICdmbG93NycKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjcg
aGFzQXV0b0xvZ2ljYWxIZWlnaHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwYWE3NgpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9m
bG93LWNvbnRlbnQtYmFzaWMtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50
LWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y
NTVjMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9y
ZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxOTcKKyAgUmVuZGVyQmxvY2sge0hUTUx9
IGF0ICgwLDApIHNpemUgODAweDE5NworICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDE3MworICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTkK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzI0eDE5CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzc4OiAiVGhlIHdvcmRzIFwiZmxvdyBjb250ZW50
XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgYWZ0ZXIgdGhpcyBkaXYsICIKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMzc4LDApIHdpZHRoIDM0NjogImFuZCB0aGVyZSBzaG91bGQgYmUgdHdvIGNv
cGllcyBvZiB0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4iCisgICAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gYXQgKDAsMTkpIHNpemUgMzAweDEwMAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MTE5KSBzaXplIDc4NHgxOQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA3MjR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6ICJUaGUgd29y
ZHMgXCJmbG93IGNvbnRlbnRcIiBpbiBncmVlbiBzaG91bGQgZGlzcGxheSBhZnRlciB0aGlzIGRp
diwgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgzNzgsMCkgd2lkdGggMzQ2OiAiYW5kIHRoZXJl
IHNob3VsZCBiZSB0d28gY29waWVzIG9mIHRoaXMgY29udGVudCB0aGF0IG1hdGNoLiIKKyAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE1NCkgc2l6ZSA3ODR4MTkgW2NvbG9yPSMwMDgwMDBd
CisgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOQorICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc0eDE5CisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA3NDogImZsb3cgY29udGVudCIKK0Zsb3cgVGhyZWFkcworICBU
aHJlYWQgd2l0aCBmbG93LW5hbWUgJ21haW4tdGhyZWFkJworICAgIGxheWVyIGF0ICgwLDApIHNp
emUgMzAweDEwMAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMzAw
eDEwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNikgc2l6ZSAzMDB4MTkgW2Nv
bG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgMzAw
eDE5CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NHgxOQor
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NDogImZsb3cgY29udGVudCIK
KyAgUmVnaW9ucyBmb3IgZmxvdyAnbWFpbi10aHJlYWQnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9
ICNyZWdpb24xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lv
bnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtZXhw
ZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NTBiOWIKQmlu
YXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3Jl
Z2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRl
bnQtYmFzaWMtdmVydGljYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNpYy12ZXJ0aWNhbC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U0OTE0YwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFz
aWMtdmVydGljYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSAyMzV4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDIzNXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDIxMXg1ODQKKyAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMzh4NTg0CisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM4eDU4MgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDM3ODogIlRoZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVuIHNo
b3VsZCBkaXNwbGF5IGFmdGVyIHRoaXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
Mzc4KSB3aWR0aCAyMDQ6ICJhbmQgdGhlcmUgc2hvdWxkIGJlIHR3byBjb3BpZXMgb2YiCisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDE5LDApIHdpZHRoIDEzODogInRoaXMgY29udGVudCB0aGF0IG1h
dGNoLiIKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMzgsMCkgc2l6ZSAxMDB4MzAwCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTM4LDApIHNpemUgMzh4NTg0CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM4eDU4MgorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDM3ODogIlRoZSB3b3JkcyBcImZsb3cgY29udGVudFwiIGluIGdyZWVu
IHNob3VsZCBkaXNwbGF5IGFmdGVyIHRoaXMgZGl2LCAiCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMzc4KSB3aWR0aCAyMDQ6ICJhbmQgdGhlcmUgc2hvdWxkIGJlIHR3byBjb3BpZXMgb2YiCisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDE5LDApIHdpZHRoIDEzODogInRoaXMgY29udGVudCB0aGF0
IG1hdGNoLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxOTIsMCkgc2l6ZSAxOXg1ODQg
W2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDE5
eDU4NAorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE5eDc0Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NDogImZsb3cgY29udGVudCIKK0Zs
b3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ21haW4tdGhyZWFkJworICAgIGxh
eWVyIGF0ICgwLDApIHNpemUgMTAweDMwMAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0
ICgwLDApIHNpemUgMTAweDMwMAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTYsMCkg
c2l6ZSAxOXgzMDAgW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgMTl4MzAwCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxOXg3NAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NDog
ImZsb3cgY29udGVudCIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnbWFpbi10aHJlYWQnCisgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJsLWV4cGVjdGVk
LnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQt
YmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhiZjBkODgKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvdy1jb250ZW50LWJhc2ljLXZlcnRpY2FsLXJs
LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3ctY29udGVudC1iYXNp
Yy12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTA3ZGQwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvcmVnaW9ucy9mbG93LWNvbnRlbnQtYmFzaWMtdmVydGljYWwtcmwtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJW
aWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDQ0MSwwKSBzaXplIDM1OXg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzU5eDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgMzM1eDU4NAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMCkgc2l6ZSAzOHg1ODQKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMzh4NTU5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDE0OiAiVGhl
IHdvcmRzIFwiZmxvdyBjb250ZW50XCIgaW4gZ3JlZW4gc2hvdWxkIGRpc3BsYXkgdHdpY2UgYWZ0
ZXIgdGhpcyBkaXYsICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MTQpIHdpZHRoIDE0NTog
ImFuZCB0aGVyZSBzaG91bGQgYmUgdHdvIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxOSwwKSB3
aWR0aCAxOTc6ICJjb3BpZXMgb2YgdGhpcyBjb250ZW50IHRoYXQgbWF0Y2guIgorICAgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IGF0ICgzOCwwKSBzaXplIDExMngzMTIgW2JvcmRlcjogKDFweCBzb2xp
ZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMTUwLDApIHNpemUgMTEy
eDMxMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDI2MiwwKSBzaXplIDM4eDU4NAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAzOHg1ODIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6
ICJUaGUgd29yZHMgXCJmbG93IGNvbnRlbnRcIiBpbiBncmVlbiBzaG91bGQgZGlzcGxheSBhZnRl
ciB0aGlzIGRpdiwgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM3OCkgd2lkdGggMjA0OiAi
YW5kIHRoZXJlIHNob3VsZCBiZSB0d28gY29waWVzIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgxOSwwKSB3aWR0aCAxMzg6ICJ0aGlzIGNvbnRlbnQgdGhhdCBtYXRjaC4iCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMzE2LDApIHNpemUgMTl4NTg0IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSAxOXg1ODQKKyAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOXg3NAorICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzQ6ICJmbG93IGNvbnRlbnQiCitGbG93IFRocmVhZHMKKyAgVGhyZWFk
IHdpdGggZmxvdy1uYW1lICdtYWluLXRocmVhZCcKKyAgICBsYXllciBhdCAoNjAwLDApIHNpemUg
MjAweDMwMAorICAgICAgUmVuZGVyTmFtZWRGbG93VGhyZWFkIGF0ICgwLDApIHNpemUgMjAweDMw
MAorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDIwMHgzMDAgW2NvbG9y
PSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMDB4
MzAwCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOXgxMDAK
KyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTAwOiAiZmlyc3QgZmxvdyBj
b250ZW50IgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxMDAsMCkgc2l6ZSAxMDB4
MzAwCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxOXgxMjEK
KyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTIxOiAic2Vjb25kIGZsb3cg
Y29udGVudCIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnbWFpbi10aHJlYWQnCisgICAgUmVuZGVyUmVn
aW9uIHtESVZ9ICNyZWdpb24xCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5k
ZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1keW5hbWljLXJlbW92ZS1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0YzFjNApCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9m
bG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LWR5bmFtaWMtcmVtb3ZlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTZlOWU5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktZHluYW1pYy1yZW1vdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCitGbG93IFRocmVh
ZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycKKyAgVGhyZWFkIHdpdGggZmxvdy1u
YW1lICdmbG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCisgICAgUmVuZGVyUmVnaW9u
IHtESVZ9CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9CisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0InCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJworICAgIFJlbmRlclJlZ2lvbiB7RElW
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL211bHRp
cGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9ucy1leHBl
Y3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvbXVsdGlwbGUt
ZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13aWR0aC1yZWdpb25zLWV4cGVjdGVk
LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWZmZGExCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25z
L211bHRpcGxlLWRpcmVjdGlvbmFsaXR5LWNoYW5nZXMtaW4tdmFyaWFibGUtd2lkdGgtcmVnaW9u
cy1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJs
ZS13aWR0aC1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zh
c3QvcmVnaW9ucy9tdWx0aXBsZS1kaXJlY3Rpb25hbGl0eS1jaGFuZ2VzLWluLXZhcmlhYmxlLXdp
ZHRoLXJlZ2lvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjI4MmRhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9m
YXN0L3JlZ2lvbnMvbXVsdGlwbGUtZGlyZWN0aW9uYWxpdHktY2hhbmdlcy1pbi12YXJpYWJsZS13
aWR0aC1yZWdpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM2IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDQyMgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NDIyCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NDA2Cisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHg0MDYKKyAgICAgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgNDAyeDEwMiBbYm9yZGVyOiAoMXB4IHNvbGlk
ICMwMDAwMDApXQorICAgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTAyKSBzaXplIDUw
MngxODIgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDI4NCkgc2l6ZSAyMDJ4MTIyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAw
MCldCitGbG93IFRocmVhZHMKKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93MScKKyAgICBs
YXllciBhdCAoMCwwKSBzaXplIDUwMHg0MDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBh
dCAoMCwwKSBzaXplIDUwMHg0MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDI1LDAp
IHNpemUgNDUweDM3MgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyNywxNSkgc2l6
ZSAzOTZ4MzQyIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDBGRildCisgICAgICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoNDAsMTEpIHNpemUgMzE2eDI1NiBbYm9yZGVyOiAoMXB4IHNvbGlk
ICMwMDgwMDApXQorICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDEsMTcpIHNpemUg
MzE0eDk1CisgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgtMTgsMCkgc2l6
ZSAzMzF4OTUKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgtMTgsMCkgd2lkdGggMjQ4
OiAiVGhpcyBsaW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSIKKyAgICAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgtMTgsMTkpIHdpZHRoIDI0ODogInJlZ2lvbi4gVGhpcyBs
aW5lIG9mIHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IgorICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKC0xOCwzOCkgd2lkdGggMjQ4OiAib2YgdGhlIHJlZ2lvbi4gVGhpcyBsaW5lIG9mIHRl
eHQgc2hvdWxkIG5vdCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDU3KSB3aWR0
aCAzMTM6ICJnZXQgb3V0IG9mIHRoZSByZWdpb24uIFRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBu
b3QgZ2V0IgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNzYpIHdpZHRoIDEwMjog
Im91dCBvZiB0aGUgcmVnaW9uLiIKKyAgICAgICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgx
LDEyOCkgc2l6ZSAzMTR4NzYKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAzMTN4NzYKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDMxMzogIlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVn
aW9uLiIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5KSB3aWR0aCAzMTM6ICJU
aGlzIGxpbmUgb2YgdGV4dCBzaG91bGQgbm90IGdldCBvdXQgb2YgdGhlIHJlZ2lvbi4iCisgICAg
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOCkgd2lkdGggMzEzOiAiVGhpcyBsaW5lIG9m
IHRleHQgc2hvdWxkIG5vdCBnZXQgb3V0IG9mIHRoZSByZWdpb24uIgorICAgICAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsNTcpIHdpZHRoIDI4NTogIlRoaXMgbGluZSBvZiB0ZXh0IHNob3Vs
ZCBub3QgZ2V0IG91dCBvZiB0aGUgcmVnaW9uLiIKKyAgICAgICAgICAgICAgUmVuZGVyQmxvY2sg
e1B9IGF0ICgxLDIyMCkgc2l6ZSAzMTR4MTkKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAyODV4MTkKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDI4NTogIlRoaXMgbGluZSBvZiB0ZXh0IHNob3VsZCBub3QgZ2V0IG91dCBv
ZiB0aGUgcmVnaW9uLiIKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvdzEnCisgICAgUmVuZGVyUmVn
aW9uIHtESVZ9ICNyZWdpb24xCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24yCisgICAg
UmVuZGVyUmVnaW9uIHtESVZ9ICNyZWdpb24zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvdGV4dC1yZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvdGV4dC1y
ZWdpb24tc3BsaXQtc21hbGwtcGFnaW5hdGlvbi1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMWZmYjhjOQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1z
bWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdp
bmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9u
cy90ZXh0LXJlZ2lvbi1zcGxpdC1zbWFsbC1wYWdpbmF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmU3MDU0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL3RleHQtcmVnaW9uLXNwbGl0LXNt
YWxsLXBhZ2luYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4Mjc2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHgyNzYKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwxNikgc2l6ZSA3ODR4MjQ0
CisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMDR4MzQgW2JvcmRlcjog
KDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCw1MCkg
c2l6ZSAyMDR4NTQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoMCwxMjApIHNpemUgMjA0eDU0IFtib3JkZXI6ICgycHggc29saWQgIzAw
MDAwMCldCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMTkwKSBzaXplIDIwNHg1NCBb
Ym9yZGVyOiAoMnB4IHNvbGlkICMwMDAwMDApXQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRo
IGZsb3ctbmFtZSAnZmxvdycKKyAgICBsYXllciBhdCAoMCwwKSBzaXplIDIwMHgxODAKKyAgICAg
IFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDIwMHgxODAKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMzApIHNpemUgMjAweDExOQorICAgICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDIwMHgxMTkKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7
Qn0gYXQgKDAsMCkgc2l6ZSAxMDl4MTkKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMTA5eDE5CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTA5OiAiVGV4dCBpbiByZWdpb24gMi4iCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDEwOSwwKSBzaXplIDEzOHgzOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MTA5LDApIHdpZHRoIDI5OiAiIFRoaXMiCisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5
KSB3aWR0aCA5NDogInBhcmFncmFwaCBoYXMgXCIiCisgICAgICAgICAgICBSZW5kZXJJbmxpbmUg
e0l9IGF0ICgwLDApIHNpemUgMTkzeDUwCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoOTQsMTkpIHNpemUgMTkzeDUwCisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDk0
LDE5KSB3aWR0aCA5OTogIi13ZWJraXQtcmVnaW9uLSIKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw1MCkgd2lkdGggMTI2OiAiYnJlYWstYWZ0ZXI6IGFsd2F5cyIKKyAgICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTI2LDUwKSBzaXplIDEzeDE5CisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgxMjYsNTApIHdpZHRoIDEzOiAiXCIuICIKKyAgICAgICAgICAgIFJlbmRl
cklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxNzl4NjkKKyAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxMzksNTApIHNpemUgMTc5eDY5CisgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDEzOSw1MCkgd2lkdGggNDA6ICJUaGVyZSIKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCw2OSkgd2lkdGggMTYwOiAic2hvdWxkIGJlIG5vdGhpbmcgaW4gdGhpcyIKKyAgICAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMDApIHdpZHRoIDEzODogInJlZ2lvbiBhZnRlciB0
aGlzIGxpbmUuIgorICBSZWdpb25zIGZvciBmbG93ICdmbG93JworICAgIFJlbmRlclJlZ2lvbiB7
RElWfSAjcmVnaW9uMQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMgorICAgIFJlbmRl
clJlZ2lvbiB7RElWfSAjcmVnaW9uMworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uNApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL3RvcC1vdmVy
Zmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4
cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjJkNzQ1CkJp
bmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9y
ZWdpb25zL3RvcC1vdmVyZmxvdy1vdXQtb2Ytc2Vjb25kLXJlZ2lvbi1leHBlY3RlZC5wbmcgZGlm
ZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvdG9w
LW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy90b3Atb3ZlcmZsb3ctb3V0LW9mLXNlY29uZC1yZWdp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOTdm
MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lv
bnMvdG9wLW92ZXJmbG93LW91dC1vZi1zZWNvbmQtcmVnaW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDM4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDQyMgorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NDIyCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsMTYpIHNpemUgNzg0eDM5OAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNp
emUgNzg0eDc2CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1OXg3
NgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc0MDogIkluIHRoZSB0ZXN0IGNh
c2UgYmVsb3csIHRoZSBncmVlbiBibG9jaydzIHdpZHRoIHNob3VsZCBub3QgdmFyeSBhbmQgc2hv
dWxkIHVzZSB0aGUgc2Vjb25kIHJlZ2lvbiB0byBkZXRlcm1pbmUgaXRzIHdpZHRoLiBJdCBpcyIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOSkgd2lkdGggNzU5OiAib3ZlcmZsb3dpbmcgdXB3
YXJkcyBvdXQgb2YgdGhlIGJsdWUgYmxvY2ssIGFuZCBzbyB0aGUgcG9ydGlvbiB0aGF0IG92ZXJm
bG93cyBzaG91bGQgY29udGludWUgdG8gdXNlIHRoZSBibHVlIGJsb2NrJ3MgY29udGFpbmluZyIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzOCkgd2lkdGggNzU4OiAiYmxvY2sgd2lkdGguIFRo
ZSBibHVlIGJsb2NrIGRvZXMgbm90IGV4aXN0IGluIHJlZ2lvbiBvbmUsIHNvIHVzaW5nIHNvbWUg
aHlwb3RoZXRpY2FsIG1hZGUtdXAgd2lkdGggaXMgaW5jb3JyZWN0LiBUaGUgb3ZlcmZsb3ciCisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTcpIHdpZHRoIDQ0OTogInNob3VsZCBiZSBzcGlsbGlu
ZyBvdXQgb2YgdGhlIHRvcCBvZiByZWdpb24gdHdvIGFuZCBiZSBwYWludGVkIGluIHJlZ2lvbiBv
bmUuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsOTIpIHNpemUgNzg0eDMwNgorICAg
ICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMDJ4MTAyIFtib3JkZXI6ICgx
cHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwxMDIp
IHNpemUgNDAyeDIwMiBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gYXQgKDAsMzA0KSBzaXplIDJ4MiBbYm9yZGVyOiAoMXB4IHNvbGlkICMw
MDAwMDApXQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzEnCisg
ICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA0MDB4MzAwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJl
YWQgYXQgKDAsMCkgc2l6ZSA0MDB4MzAwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDApIHNpemUgNDAweDE4MAorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg1LDEwMCkg
c2l6ZSAzOTB4NzUgW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMEZGKV0KKyAgICAgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICg0OCwtOTkpIHNpemUgMjk0eDE3MyBbYm9yZGVyOiAoMXB4IHNv
bGlkICMwMDgwMDApXQorICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDEsMTcpIHNp
emUgMjkxeDU3CisgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMjkxeDU3CisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyOTE6
ICJUaGVzZSBsaW5lcyBzaG91bGQgYWxsIGZpdCB0byB0aGUgd2lkdGggb2YgdGhlIgorICAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkpIHdpZHRoIDI5MTogImJsb2NrIGluIHRoZSBz
ZWNvbmQgcmVnaW9uIGFuZCBzcGlsbCBvdXQgb2YgdGhlIgorICAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMzgpIHdpZHRoIDEwOTogInRvcCBvZiB0aGUgc2Vjb25kICIKKyAgICAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxMDksMzgpIHdpZHRoIDQxOiAicmVnaW9uLiIKKyAgICAg
ICAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxLDk5KSBzaXplIDI5MXg1NworICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI5MXg1NworICAgICAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjkxOiAiVGhlc2UgbGluZXMgc2hvdWxk
IGFsbCBmaXQgdG8gdGhlIHdpZHRoIG9mIHRoZSIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDE5KSB3aWR0aCAyOTE6ICJibG9jayBpbiB0aGUgc2Vjb25kIHJlZ2lvbiBhbmQgc3Bp
bGwgb3V0IG9mIHRoZSIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM4KSB3aWR0
aCAxMDk6ICJ0b3Agb2YgdGhlIHNlY29uZCAiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMTA5LDM4KSB3aWR0aCA0MTogInJlZ2lvbi4iCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3cx
JworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMQorICAgIFJlbmRlclJlZ2lvbiB7RElW
fSAjcmVnaW9uMgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L2xpbmUtZmxvdy13aXRoLWZsb2F0
cy1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3Qv
cmVwYWludC9saW5lLWZsb3ctd2l0aC1mbG9hdHMtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQKaW5k
ZXggOGQ5YTQxNS4uNGNmMTcyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
ZmFzdC9yZXBhaW50L2xpbmUtZmxvdy13aXRoLWZsb2F0cy1pbi1yZWdpb25zLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlcGFpbnQvbGluZS1mbG93LXdp
dGgtZmxvYXRzLWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0CkBAIC03OSw0ICs3OSw0IEBAIEZsb3cg
VGhyZWFkcwogICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNiw0NjIpIHdpZHRoIDQw
NjogIlRoZXlceHsyMDE5fXJlIGRyZWFkZnVsbHkgZm9uZCBvZiBiZWhlYWRpbmcgcGVvcGxlIGhl
cmU7IHRoZSBncmVhdCIKICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDYsNDgxKSB3
aWR0aCAyNDg6ICJ3b25kZXIgaXMsIHRoYXQgdGhlcmVceHsyMDE4fXMgYW55IG9uZSBsZWZ0IGFs
aXZlIVx4ezIwMTl9IgogICBSZWdpb25zIGZvciBmbG93ICd0aHJlYWQnCi0gICAgUmVuZGVyUmVn
aW9uIHtESVZ9CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGhhc0xheWVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlcGFpbnQvb3ZlcmZsb3ctZmxpcHBlZC13cml0
aW5nLW1vZGUtYmxvY2staW4tcmVnaW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L3JlcGFpbnQvb3ZlcmZsb3ctZmxpcHBlZC13cml0aW5nLW1vZGUtYmxvY2st
aW4tcmVnaW9ucy1leHBlY3RlZC50eHQKaW5kZXggMTNhOTQ2Yi4uOGQ0Y2UzNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L292ZXJmbG93LWZsaXBwZWQt
d3JpdGluZy1tb2RlLWJsb2NrLWluLXJlZ2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9vdmVyZmxvdy1mbGlwcGVkLXdyaXRpbmctbW9k
ZS1ibG9jay1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dApAQCAtMTQsNCArMTQsNCBAQCBGbG93IFRo
cmVhZHMKICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMTAweDEw
MCBbYmdjb2xvcj0jMDA4MDAwXQogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBz
aXplIDEwMHg1MCBbYmdjb2xvcj0jRkYwMDAwXQogICBSZWdpb25zIGZvciBmbG93ICd0aHJlYWQn
Ci0gICAgUmVuZGVyUmVnaW9uIHtESVZ9CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGhhc0xheWVy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlcGFpbnQvcmVnaW9u
LXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLWludmFsaWRhdGlvbi1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhMmZjYwpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9y
ZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmct
aW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3Qv
cmVwYWludC9yZWdpb24tcGFpbnRpbmctaW52YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWZjMzlmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy1pbnZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAg
IFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDMwMngxNTIgW2JnY29sb3I9I0ZGMDAw
MF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDE1Mikgc2l6ZSA3ODR4MTkKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MTkKKyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwxNzEpIHNpemUg
MzAyeDIwMiBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQor
RmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvdzEnCisgICAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSAzMDB4MzUwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgYXQgKDAs
MCkgc2l6ZSAzMDB4MzUwCisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUg
MzAweDM1MAorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgMzAweDM1
MCBbYmdjb2xvcj0jMDA4MDAwXQorICBSZWdpb25zIGZvciBmbG93ICdmbG93MScKKyAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjEKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gI3JlZ2lvbjIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9yZWdpb24t
cGFpbnRpbmctdmlhLWxheW91dC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9mYXN0L3JlcGFpbnQvcmVnaW9uLXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YmMyODcKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlcGFpbnQvcmVnaW9u
LXBhaW50aW5nLXZpYS1sYXlvdXQtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZXBhaW50L3JlZ2lvbi1wYWludGluZy12aWEtbGF5
b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9y
ZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTBkOTdmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L2Zhc3QvcmVwYWludC9yZWdpb24tcGFpbnRpbmctdmlhLWxheW91dC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDApIHNpemUgNzg2eDE4MiBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDAwMDApXQorRmxvdyBUaHJlYWRzCisgIFRocmVhZCB3aXRoIGZsb3ctbmFt
ZSAnZmxvdzEnCisgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODR4MTE4MCBiYWNrZ3JvdW5kQ2xp
cCBhdCAoMCwwKSBzaXplIDgwMHg2MDAgY2xpcCBhdCAoMCwwKSBzaXplIDgwMHg2MDAgb3V0bGlu
ZUNsaXAgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQg
YXQgKDAsMCkgc2l6ZSA3ODR4MTE4MAorICAgIGxheWVyIGF0ICgwLDApIHNpemUgNzg0eDEyMDAg
YmFja2dyb3VuZENsaXAgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwIGNsaXAgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwIG91dGxpbmVDbGlwIGF0ICgwLDApIHNpemUgODAweDYwMAorICAgICAgUmVuZGVyQmxv
Y2sgKHJlbGF0aXZlIHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDEyMDAKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTAwMCkgc2l6ZSA3ODR4MjAwCisgICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjAwIFtiZ2NvbG9yPSMwMDgw
MDBdCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3cxJworICAgIFJlbmRlclJlZ2lvbiB7RElWfSAj
cmVnaW9uMSBoYXNMYXllcgorICAgIFJlbmRlclJlZ2lvbiB7RElWfSAjcmVnaW9uMgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzZmFhNTZmLi4xYTFlOWM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTcyLDcg
KzE3Miw2IEBAIGZhc3QvZXZlbnRzL2Ryb3Atd2l0aC1maWxlLXBhdGhzLmh0bWwKIGZhc3QvZXZl
bnRzL2Ryb3B6b25lLTAwNC5odG1sCiBmYXN0L2V2ZW50cy9vbmx5LXZhbGlkLWRyb3AtdGFyZ2V0
cy1yZWNlaXZlLWZpbGUtZHJvcC5odG1sCiBmYXN0L2V2ZW50cy9zdGFuZGFsb25lLWltYWdlLWRy
YWctdG8tZWRpdGFibGUuaHRtbAotZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xs
LWlubmVyLWZyYW1lLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2Fy
ZC1maWxlLWFjY2Vzcy5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctZHJvcC1zYW1lLXVu
aXF1ZS1vcmlnaW4uaHRtbAogCkBAIC0yMTU3LDcgKzIxNTYsNiBAQCBmYXN0L2Zvcm1zL2NvbnRy
b2wtY2xpcC1vdmVyZmxvdy5odG1sCiBmYXN0L2Zvcm1zL3NlbGVjdC1iYXNlbGluZS5odG1sCiBm
YXN0L3JlcGFpbnQvY29udHJvbC1jbGlwLmh0bWwKIGZhc3Qvc2VsZWN0b3JzLzA2NC5odG1sCi1m
YXN0L3NlbGVjdG9ycy8xNjYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogZmFzdC90YWJsZS9h
cHBlbmQtY2VsbHMyLmh0bWwKIGZhc3QvdGFibGUvcmVtb3ZlLXRkLWRpc3BsYXktbm9uZS5odG1s
CiBmYXN0L3dyaXRpbmctbW9kZS9icm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbApAQCAt
Mjg2NSw3ICsyODYzLDYgQEAgd2Via2l0Lm9yZy9iLzEyMTUwOSBmYXN0L2V2ZW50cy9wYWdlLXZp
c2liaWxpdHktdHJhbnNpdGlvbi10ZXN0Lmh0bWwJWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMjE1
MDkgZmFzdC9ldmVudHMvcGFnZS12aXNpYmlsaXR5LWlmcmFtZS1tb3ZlLXRlc3QuaHRtbAlbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzEyMTUwOSBmYXN0L2hpc3RvcnkvZ28tYmFjay10by1pZnJhbWUt
d2l0aC1wbHVnaW4uaHRtbAlbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEyMTUwOSBsb2FkZXIvZ28t
YmFjay10by1kaWZmZXJlbnQtd2luZG93LXNpemUuaHRtbAlbIFNraXAgXQotd2Via2l0Lm9yZy9i
LzEyMTUwOSBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWF1dG9zY3JvbGwtaW5uZXItZnJhbWUu
aHRtbCBbIFNraXAgXQogCiAjIFRoZSBmb2xsb3dpbmcgdGVzdCBjYXNlcyBhcmUgY3Jhc2hpbmc6
CiB3ZWJraXQub3JnL2IvMTIxNTEwIGZhc3QvcGFyc2VyL3Jlc2lkdWFsLXN0eWxlLWhhbmcuaHRt
bAlbIFNraXAgXQpAQCAtMjg5NCw5ICsyODkxLDYgQEAgd2Via2l0Lm9yZy9iLzEyMTUxMCBtZWRp
YS90cmFjay90cmFjay1yZW1vdmUtY3Jhc2guaHRtbAlbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEy
MTUxMCBtZWRpYS90cmFjay90cmFjay1jdWUtbm90aGluZy10by1yZW5kZXIuaHRtbAlbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzEyMTUxMCBtZWRpYS90cmFjay90cmFjay1kZWxldGUtZHVyaW5nLXNl
dHVwLmh0bWwJWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMjE1MTAgc3ZnL1czQy1TVkctMS4xL2Fu
aW1hdGUtZWxlbS0wMi10LnN2ZwlbIFNraXAgXSAKLXdlYmtpdC5vcmcvYi8xMjE1MTAgZmFzdC9m
cmFtZXMvc2VhbWxlc3Mvc2VhbWxlc3MtbmVzdGVkLWNyYXNoLmh0bWwgWyBTa2lwIF0KLXdlYmtp
dC5vcmcvYi8xMjE1MTAganMvZG9tL2Z1bmN0aW9uLWNvbnN0cnVjdG9yLXRoaXMtdmFsdWUuaHRt
bCBbIFNraXAgXQotCiAKICMgTW9yZSBza2lwcGVkIHRlc3RzCiBlZGl0aW5nL3NlbGVjdGlvbi9j
YXJldC1sdHItcmlnaHQuaHRtbCBbIFNraXAgXQpAQCAtMjk1MSwzOCArMjk0NSwzIEBAIGpzL2Rv
bS9yYW5kb20tYXJyYXktZ2Mtc3RyZXNzLmh0bWwgWyBTa2lwIF0KICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODgxMAogZmFzdC9zaGFwZXMKIGNzc3dnL2NvbnRy
aWJ1dG9ycy9hZG9iZS9zdWJtaXR0ZWQvc2hhcGVzCi0KLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBm
YWlsIGR1ZSB0byB0aGUgbmV3IENTUy9KUy1iYXNlZCBtZWRpYSBjb250cm9scy4KLSMgVGhleSBu
ZWVkIHRvIGJlIHJlYmFzZWxpbmVkLgotIyBSRUdSRVNTSU9OKHIxNTY3MzApOiAxOCBtZWRpYSB0
ZXN0cyBicm9rZW4gKDEyMjAyMSkKLXdlYmtpdC5vcmcvYi8xMjIwMjEgbWVkaWEvdHJhY2svdHJh
Y2stY3VlLW11dGFibGUtdGV4dC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMDIx
IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctbW9kZS1jaGFuZ2VkLmh0bWwgWyBGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIwMjEgbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1tb2Rl
Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMjIwMjEgbWVkaWEvdmlkZW8tY29udHJv
bHMtY2FwdGlvbnMtdHJhY2ttZW51LWxvY2FsaXplZC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS1zb3J0
ZWQuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjAyMSBtZWRpYS92aWRlby1jb250
cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEy
MjAyMSBtZWRpYS92aWRlby1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLW5vLXNjcmlwdGlu
Zy5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWNvbnRy
b2xzLXJlbmRlcmluZy5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlh
L3ZpZGVvLWNvbnRyb2xzLXRvZ2dsaW5nLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8x
MjIwMjEgbWVkaWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1leGl0aW5nLWZ1bGxzY3JlZW4uaHRt
bCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjAyMSBtZWRpYS92aWRlby1kaXNwbGF5LXRv
Z2dsZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVvLWVt
cHR5LXNvdXJjZS5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3Zp
ZGVvLXJ0bC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMDIxIG1lZGlhL3ZpZGVv
LXZvbHVtZS1zbGlkZXIuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjAyMSBtZWRp
YS92b2x1bWUtYmFyLWVtcHR5LXdoZW4tbXV0ZWQuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9y
Zy9iLzEyMjAyMSBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQotCi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgYWxzbyBzZWVtIGFmZmVj
dGVkIGJ5IHIxNTY3MzAKLXdlYmtpdC5vcmcvYi8xMjIxNjYgbWVkaWEvdHJhY2svYXVkaW8tdHJh
Y2suaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjE2NiBtZWRpYS90cmFjay92aWRl
by10cmFjay5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMTY2IG1lZGlhL2F1ZGlv
LWNvbnRyb2xzLWRvLW5vdC1mYWRlLW91dC5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2Iv
MTIyMTY2IG1lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci5odG1sIFsgRmFpbHVyZSBdCi13ZWJr
aXQub3JnL2IvMTIyMTY2IG1lZGlhL2NvbnRyb2xzLXJpZ2h0LWNsaWNrLW9uLXRpbWViYXIuaHRt
bCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjE2NiBtZWRpYS9tZWRpYS1jYXB0aW9ucy1u
by1jb250cm9scy5odG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTIyMTY2IG1lZGlhL21l
ZGlhLWNvbnRyb2xzLWludmFsaWQtdXJsLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8x
MjIxNjYgbWVkaWEvbWVkaWEtdm9sdW1lLXNsaWRlci1yZW5kZXJlZC1ub3JtYWwuaHRtbCBbIEZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjE2NiBtZWRpYS9ub2Rlc0Zyb21SZWN0LXNoYWRvd0Nv
bnRlbnQuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyMjE2NiBtZWRpYS92aWRlby1j
b250cm9scy12aXNpYmxlLWF1ZGlvLW9ubHkuaHRtbCBbIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9i
LzEyMjE2NiBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXRyZWUtaXMtcmVtb3ZlZC1w
cm9wZXJseS5odG1sIFsgRmFpbHVyZSBdCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVn
aW9ucy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9yZXBhaW50
L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZGZkYzYKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZmFzdC9yZXBhaW50L2phcGFu
ZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMtZXhwZWN0ZWQucG5nIGRpZmZlcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvcmVwYWludC9qYXBhbmVz
ZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFp
bnQtaW4tcmVnaW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTM5MDhhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9mYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoNzU0LDApIHNp
emUgNDZ4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDQ2eDYwMCBbYm9y
ZGVyOiAoMTBweCBzb2xpZCAjODAwMDAwKV0KKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoMTgs
MTgpIHNpemUgMTB4NTY0IFtib3JkZXI6ICg1cHggc29saWQgIzAwMDAwMCldCitsYXllciBhdCAo
Mjk2LDEwMCkgc2l6ZSA0MDR4NDA0CisgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMTAwLDEwMCkg
c2l6ZSA0MDR4NDA0IFtib3JkZXI6ICgycHggc29saWQgIzAwMDAwMCldCitGbG93IFRocmVhZHMK
KyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICd0aHJlYWQnCisgICAgbGF5ZXIgYXQgKDQwMCwwKSBz
aXplIDQwMHg0MDAKKyAgICAgIFJlbmRlck5hbWVkRmxvd1RocmVhZCBhdCAoMCwwKSBzaXplIDQw
MHg0MDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAzMTJ4NDAwCisg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzEyeDM5OAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzY0OiAiXHh7MzA1Qn1ceHszMDYzfVx4ezMw
NEJ9XHh7MzA0Rn1ceHs4OThCfVx4ezMwNjR9XHh7MzA1MX1ceHszMDVGfVx4ezMwNTl9XHh7MzA3
MH1ceHszMDg5fVx4ezMwNTd9XHh7MzA0NH1ceHs4QTE4fVx4ezRFOEJ9XHh7MzA0Q31ceHszMDY5
fVx4ezMwNTN9XHh7MzA2Qn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjQsMCkgd2lkdGgg
Mzg3OiAiXHh7MzA0Mn1ceHszMDYzfVx4ezMwNUZ9XHh7MzA0Qn1ceHs1RkQ4fVx4ezMwOEN9XHh7
MzA2Nn1ceHszMDU3fVx4ezMwN0V9XHh7MzA2M31ceHszMDVGfVx4ezdENEN9XHh7OUExM31ceHsz
MDZGfVx4ezMwNDJ9XHh7MzA4QX1ceHszMDdFfVx4ezMwNTl9XHh7MzA0Qn1ceHszMDZBfSIKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg0OCwwKSB3aWR0aCAzODg6ICJceHszMDg5fVx4ezMwQkZ9
XHh7MzBBNH1ceHszMEM4fVx4ezMwRUJ9XHh7MzA2OH1ceHszMEEyfVx4ezMwQzl9XHh7MzBFQ31c
eHszMEI5fVx4ezMwNjB9XHh7MzA1MX1ceHszMDY3fVx4ezMwNkF9XHh7MzA0Rn1ceHszMDAxfVx4
ezhBMkF9XHh7NTU0Rn1ceHszMDU3fVx4ezMwNUZ9XHh7MzBBNn1ceHszMEE3fSIKKyAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICg3MiwwKSB3aWR0aCAzOTc6ICJceHszMEQ2fVx4ezMwREF9XHh7MzBG
Q31ceHszMEI4fVx4ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4ezMwQzZ9XHh7MzBGM31ceHszMEM0
fVx4ezMwNEJ9XHh7MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7N0QyMn1ceHszMDU5fVx4ezMwOEJ9
XHh7MzA1M31ceHszMDY4fVx4ezMwNEN9XHh7MzA2N30iCisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoOTYsMCkgd2lkdGggMzk4OiAiXHh7MzA0RH1ceHszMDdFfVx4ezMwNTl9XHh7MzAwMn1ceHsz
MDVCfVx4ezMwNjN9XHh7MzA0Qn1ceHszMDRGfVx4ezg5OEJ9XHh7MzA2NH1ceHszMDUxfVx4ezMw
NUZ9XHh7MzA1OX1ceHszMDcwfVx4ezMwODl9XHh7MzA1N31ceHszMDQ0fVx4ezhBMTh9XHh7NEU4
Qn1ceHszMDRDfVx4ezMwNjl9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEyMCwwKSB3aWR0
aCAzODQ6ICJceHszMDUzfVx4ezMwNkJ9XHh7MzA0Mn1ceHszMDYzfVx4ezMwNUZ9XHh7MzA0Qn1c
eHs1RkQ4fVx4ezMwOEN9XHh7MzA2Nn1ceHszMDU3fVx4ezMwN0V9XHh7MzA2M31ceHszMDVGfVx4
ezdENEN9XHh7OUExM31ceHszMDZGfVx4ezMwNDJ9XHh7MzA4QX1ceHszMDdFfVx4ezMwNTl9Igor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0NCwwKSB3aWR0aCAzOTc6ICJceHszMDRCfSBceHsz
MDZBfVx4ezMwODl9XHh7MzBCRn1ceHszMEE0fVx4ezMwQzh9XHh7MzBFQn1ceHszMDY4fVx4ezMw
QTJ9XHh7MzBDOX1ceHszMEVDfVx4ezMwQjl9XHh7MzA2MH1ceHszMDUxfVx4ezMwNjd9XHh7MzA2
QX1ceHszMDRGfVx4ezMwMDF9XHh7OEEyQX1ceHs1NTRGfVx4ezMwNTd9XHh7MzA1Rn0iCisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMTY4LDApIHdpZHRoIDM5MzogIlx4ezMwQTZ9XHh7MzBBN31c
eHszMEQ2fVx4ezMwREF9XHh7MzBGQ31ceHszMEI4fVx4ezMwNkV9XHh7MzBCM31ceHszMEYzfVx4
ezMwQzZ9XHh7MzBGM31ceHszMEM0fVx4ezMwNEJ9XHh7MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7
N0QyMn1ceHszMDU5fVx4ezMwOEJ9XHh7MzA1M31ceHszMDY4fSIKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgxOTIsMCkgd2lkdGggMzk1OiAiXHh7MzA0Q31ceHszMDY3fVx4ezMwNER9XHh7MzA3
RX1ceHszMDU5fVx4ezMwMDJ9XHh7OEEyQX1ceHs1NTRGfVx4ezMwNTd9XHh7MzA1Rn1ceHszMEE2
fVx4ezMwQTd9XHh7MzBENn1ceHszMERBfVx4ezMwRkN9XHh7MzBCOH1ceHszMDZFfVx4ezMwQjN9
XHh7MzBGM31ceHszMEM2fVx4ezMwRjN9IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIxNiww
KSB3aWR0aCAzODk6ICJceHszMEM0fVx4ezMwNEJ9XHh7MzA4OX1ceHszMDgyfVx4ezY5MUN9XHh7
N0QyMn1ceHszMDU5fVx4ezMwOEJ9XHh7MzA1M31ceHszMDY4fVx4ezMwNEN9XHh7MzA2N31ceHsz
MDREfVx4ezMwN0V9XHh7MzA1OX1ceHszMDAyfVx4ezMwNUJ9XHh7MzA2M31ceHszMDRCfVx4ezMw
NEZ9XHh7ODk4Qn0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjQwLDApIHdpZHRoIDM5MTog
Ilx4ezMwNjR9XHh7MzA1MX1ceHszMDVGfVx4ezMwNTl9XHh7MzA3MH1ceHszMDg5fVx4ezMwNTd9
XHh7MzA0NH1ceHs4QTE4fVx4ezRFOEJ9XHh7MzA0Q31ceHszMDY5fVx4ezMwNTN9XHh7MzA2Qn1c
eHszMDQyfVx4ezMwNjN9XHh7MzA1Rn1ceHszMDRCfVx4ezVGRDh9XHh7MzA4Q30iCisgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMjY0LDApIHdpZHRoIDM5MzogIlx4ezMwNjZ9XHh7MzA1N31ceHsz
MDdFfVx4ezMwNjN9XHh7MzA1Rn1ceHs3RDRDfVx4ezlBMTN9XHh7MzA2Rn1ceHszMDQyfVx4ezMw
OEF9XHh7MzA3RX1ceHszMDU5fVx4ezMwNEJ9IFx4ezMwNkF9XHh7MzA4OX1ceHszMEJGfVx4ezMw
QTR9XHh7MzBDOH1ceHszMEVCfVx4ezMwNjh9XHh7MzBBMn0iCisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMjg4LDApIHdpZHRoIDE5NzogIlx4ezMwQzl9XHh7MzBFQ31ceHszMEI5fVx4ezMwNjB9
XHh7MzA1MX1ceHszMDY3fVx4ezMwNkF9XHh7MzA0Rn1ceHszMDAxfVx4ezhBMkF9XHh7NTU0Rn0i
CisgIFJlZ2lvbnMgZm9yIGZsb3cgJ3RocmVhZCcKKyAgICBSZW5kZXJSZWdpb24ge0RJVn0KK3Nl
bGVjdGlvbiBzdGFydDogcG9zaXRpb24gMSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7
RElWfSBvZiBib2R5CitzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDMwIG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5o
CmluZGV4IDEwZWVjZjMuLjUwZThmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuaApA
QCAtMTQxLDExICsxNDEsNyBAQCBKU19FWFBPUlQgdm9pZCBKU0dhcmJhZ2VDb2xsZWN0KEpTQ29u
dGV4dFJlZiBjdHgpOwogCiAvKiBFbmFibGUgdGhlIE9iamVjdGl2ZS1DIEFQSSBmb3IgcGxhdGZv
cm1zIHdpdGggYSBtb2Rlcm4gcnVudGltZS4gKi8KICNpZiAhZGVmaW5lZChKU0NfT0JKQ19BUElf
RU5BQkxFRCkKLSNpZm5kZWYgSlNDX09CSkNfQVBJX0FWQUlMQUJMRV9NQUNfT1NfWF8xMDgwCiAj
ZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIChkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5l
ZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwICYmICFkZWZpbmVkKF9f
aTM4Nl9fKSkKLSNlbHNlCi0jZGVmaW5lIEpTQ19PQkpDX0FQSV9FTkFCTEVEIChkZWZpbmVkKF9f
Y2xhbmdfXykgJiYgZGVmaW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCkgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDgwICYmICFkZWZpbmVkKF9faTM4Nl9fKSkKLSNlbmRpZgogI2VuZGlmCiAKICNlbmRpZiAvKiBK
U0Jhc2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0LmgKaW5kZXggMDhmN2Vj
YS4uZWYzZTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5oCkBAIC00MSwx
MSArNDEsNyBAQAogLy8gdGhhdCByZWZlcmVuY2UgYSBwYXJ0aWN1bGFyIEpTQ29udGV4dCBoYXZl
IGJlZW4gZGVhbGxvY2F0ZWQgdGhlIEpTQ29udGV4dCAKIC8vIHdpbGwgYmUgZGVhbGxvY2F0ZWQg
dW5sZXNzIGl0IGhhcyBiZWVuIHByZXZpb3VzbHkgcmV0YWluZWQuCiAKLSNpZm5kZWYgSlNDX09C
SkNfQVBJX0FWQUlMQUJMRV9NQUNfT1NfWF8xMDgwCiBOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwg
TkEpCi0jZWxzZQotT0JKQ19WSVNJQkxFCi0jZW5kaWYKIEBpbnRlcmZhY2UgSlNDb250ZXh0IDog
TlNPYmplY3QKIAogLy8gQ3JlYXRlIGEgSlNDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hbmFnZWRWYWx1ZS5oCmluZGV4IGIzNjEyOTMuLjVmZjNmODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKQEAgLTQ2LDExICs0Niw3IEBACiAv
LyBmcm9tIHRoZSBPYmplY3RpdmUtQyBoZWFwLiBJdCBpcyBpbmNvcnJlY3QgdG8gc3RvcmUgYSBK
U1ZhbHVlIGludG8gYW4gCiAvLyBPYmplY3RpdmUtQyBoZWFwIG9iamVjdCwgYXMgdGhpcyBjYW4g
dmVyeSBlYXNpbHkgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLCAKIC8vIGtlZXBpbmcgdGhlIGVu
dGlyZSBKU0NvbnRleHQgYWxpdmUuIAotI2lmbmRlZiBKU0NfT0JKQ19BUElfQVZBSUxBQkxFX01B
Q19PU19YXzEwODAKIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCBOQSkKLSNlbHNlCi1PQkpDX1ZJ
U0lCTEUKLSNlbmRpZgogQGludGVyZmFjZSBKU01hbmFnZWRWYWx1ZSA6IE5TT2JqZWN0CiAKIC8v
IENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY3JlYXRpbmcgSlNNYW5hZ2VkVmFsdWVzIGZyb20gSlNW
YWx1ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVm
UXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZlF0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTQwODE4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZlF0LmNwcApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBs
YyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU1N0cmluZ1JlZlF0LmgiCisKKyNpbmNsdWRlICJBUElDYXN0LmgiCisj
aW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nUmVmLmgi
CisjaW5jbHVkZSAiT3BhcXVlSlNTdHJpbmcuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFs
dWUuaD4KKworUVN0cmluZyBKU1N0cmluZ0NvcHlRU3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZykK
K3sKKyAgICByZXR1cm4gc3RyaW5nLT5xU3RyaW5nKCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBKU1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGNvbnN0IFFTdHJpbmcmIHFTdHJpbmcp
Cit7CisgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBqc1N0cmluZyA9IE9wYXF1ZUpTU3RyaW5n
OjpjcmVhdGUocVN0cmluZyk7CisKKyAgICBpZiAoanNTdHJpbmcpCisgICAgICAgIHJldHVybiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4oQWRvcHQsIGpzU3RyaW5nLnJlbGVhc2UoKS5sZWFrUmVm
KCkpOworCisgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZSgpLmxlYWtSZWYoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmUXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNTdHJpbmdSZWZRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYz
YTA1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmUXQuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgSlNTdHJpbmdSZWZRdF9oCisjZGVmaW5lIEpTU3RyaW5nUmVmUXRfaAorCisj
aW5jbHVkZSAiSlNCYXNlLmgiCisjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKKyNpbmNsdWRlIDxR
U3RyaW5nPgorCisvKiBRU3RyaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgKi8KKworLyohCitAZnVu
Y3Rpb24KK0BhYnN0cmFjdCAgICAgICAgIENyZWF0ZXMgYSBRU3RyaW5nIGZyb20gYSBKYXZhU2Ny
aXB0IHN0cmluZy4KK0BwYXJhbSBzdHJpbmcgICAgIFRoZSBKU1N0cmluZyB0byBjb3B5IGludG8g
dGhlIG5ldyBRU3RyaW5nLgorQHJlc3VsdCAgICAgICAgICAgQSBRU3RyaW5nIGNvbnRhaW5pbmcg
c3RyaW5nLgorKi8KK0pTX0VYUE9SVCBRU3RyaW5nIEpTU3RyaW5nQ29weVFTdHJpbmcoSlNTdHJp
bmdSZWYgc3RyaW5nKTsKK0pTX0VYUE9SVCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gSlNTdHJp
bmdDcmVhdGVXaXRoUVN0cmluZyhjb25zdCBRU3RyaW5nJik7CisKKyNlbmRpZiAvKiBKU1N0cmlu
Z1JlZlF0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKaW5kZXggNzk1YjVkNi4u
Yzc3NzA3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLmgKQEAgLTg3LDExICs4Nyw3
IEBACiAvLyBjbGFzcyBtZXRob2RzIHdpbGwgYmUgcmV0dXJuZWQuIFNlZSBKU0V4cG9ydC5oIGZv
ciBtb3JlIGluZm9ybWF0aW9uIG9uCiAvLyBjb25zdHJ1Y3RvciBvYmplY3RzLgogCi0jaWZuZGVm
IEpTQ19PQkpDX0FQSV9BVkFJTEFCTEVfTUFDX09TX1hfMTA4MAogTlNfQ0xBU1NfQVZBSUxBQkxF
KDEwXzksIE5BKQotI2Vsc2UKLU9CSkNfVklTSUJMRQotI2VuZGlmCiBAaW50ZXJmYWNlIEpTVmFs
dWUgOiBOU09iamVjdAogCiAvLyBDcmVhdGUgYSBKU1ZhbHVlIGJ5IGNvbnZlcnRpbmcgYW4gT2Jq
ZWN0aXZlLUMgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1h
Y2hpbmUuaAppbmRleCA2MmFjZDhjLi5iNTA2MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmlydHVhbE1hY2hpbmUuaApAQCAtMzIsMTEgKzMyLDcgQEAKIC8vIHZpcnR1YWwg
bWFjaGluZSwgd2l0aCBjb25jdXJyZW50IEphdmFTY3JpcHQgZXhlY3V0aW9uIHN1cHBvcnRlZCBi
eSBhbGxvY2F0aW5nCiAvLyBzZXBhcmF0ZSBpbnN0YW5jZXMgb2YgSlNWaXJ0dWFsTWFjaGluZS4K
IAotI2lmbmRlZiBKU0NfT0JKQ19BUElfQVZBSUxBQkxFX01BQ19PU19YXzEwODAKIE5TX0NMQVNT
X0FWQUlMQUJMRSgxMF85LCBOQSkKLSNlbHNlCi1PQkpDX1ZJU0lCTEUKLSNlbmRpZgogQGludGVy
ZmFjZSBKU1ZpcnR1YWxNYWNoaW5lIDogTlNPYmplY3QKIAogLy8gQ3JlYXRlIGEgbmV3IEpTVmly
dHVhbE1hY2hpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1
ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgK
aW5kZXggZDYxN2IzNS4uYzM3NGI1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9PcGFxdWVKU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3Bh
cXVlSlNTdHJpbmcuaApAQCAtNTgsNiArNTgsOSBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmcoKSBjb25zdDsKICAgICBKU0M6OklkZW50aWZpZXIg
aWRlbnRpZmllcihKU0M6OlZNKikgY29uc3Q7CisjaWYgUExBVEZPUk0oUVQpCisgICAgUVN0cmlu
ZyBxU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyNlbmRpZgogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkPE9wYXF1ZUpTU3Ry
aW5nPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmYjNkODUwLi5kOGJm
NTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNjYsOCArMjY2LDYg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0FycmF5QnVmZmVyLmNw
cAogICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogICAgIHJ1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAKLSAgICBydW50aW1lL0FycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKLSAg
ICBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50
aW1lL0Jvb2xlYW5PYmplY3QuY3BwCkBAIC0zMTEsNyArMzA5LDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKICAg
ICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKLSAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5jcHAKICAgICBydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAg
cnVudGltZS9KU0NlbGwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3OGZiMmUxLi5j
MGFjZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNDE3ICsxLDMgQEAKLTIwMTMt
MTAtMDIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KLQotICAgICAgICBUaGUgT2Jq
ZWN0aXZlLUMgQVBJIHNob3VsZCBiZSBhdmFpbGFibGUgaW4gMTAuOCBidWlsZHMKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjI0NQotCi0gICAgICAg
IFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KLQotICAgICAgICBFbmFibGVkIHRoZSBPYmplY3RpdmUt
QyBBUEkgd2hlbiBidWlsZGluZyBvbiBPUyBYIDEwLjggd2l0aCB0aGUgbW9kZXJuIE9iamVjdGl2
ZS1DIHJ1bnRpbWUsCi0gICAgICAgIGJ1dCBrZXB0IHRoZSBhdmFpbGFiaWxpdHkgYXR0cmlidXRl
cyBpbiBBUEkgaGVhZGVycyBmb3IgMTAuOSBhbmQgbGF0ZXIgYXMgdGhleSB3ZXJlLgotCi0gICAg
ICAgICogQVBJL0pTQmFzZS5oOiBXaGVuIEpTQ19PQkpDX0FQSV9BVkFJTEFCTEVfTUFDX09TX1hf
MTA4MCBpcyBkZWZpbmVkLCBtYWRlCi0gICAgICAgIEpTQ19PQkpDX0FQSV9FTkFCTEVEIHRydWUg
b24gMTAuOCBhbmQgYWJvdmUuCi0gICAgICAgICogQVBJL0pTQ29udGV4dC5oOiBXaGVuIEpTQ19P
QkpDX0FQSV9BVkFJTEFCTEVfTUFDX09TX1hfMTA4MCBpcyBkZWZpbmVkLCBtYXJrZWQgdGhlIGNs
YXNzCi0gICAgICAgIGFzIGF2YWlsYWJsZSBvbiBhbGwgT1MgWCB2ZXJzaW9ucy4KLSAgICAgICAg
KiBBUEkvSlNNYW5hZ2VkVmFsdWUuaDogRGl0dG8uCi0gICAgICAgICogQVBJL0pTVmFsdWUuaDog
RGl0dG8uCi0gICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUuaDogRGl0dG8uCi0gICAgICAg
ICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzogQWRkZWQgSlNDX09CSkNfQVBJX0FWQUlM
QUJMRV9NQUNfT1NfWF8xMDgwIHRvCi0gICAgICAgIEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElP
TlMuCi0gICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgYSBzY3JpcHQgYnVpbGQgcGhhc2UgdG8gdW5pZmRlZiB0aGUKLSAgICAgICAgYWJvdmUg
aGVhZGVyIGZpbGVzIHdpdGggSlNDX09CSkNfQVBJX0FWQUlMQUJMRV9NQUNfT1NfWF8xMDgwIGVp
dGhlciBkZWZpbmVkIG9yIG5vdCBiYXNlZCBvbgotICAgICAgICB0aGUgT1MgWCB2ZXJzaW9uIHdl
IGFyZSB0YXJnZXRpbmcuCi0KLTIwMTMtMTAtMDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+Ci0KLSAgICAgICAgTWFrZSBCYXNlbGluZSBKSVQgZXhjZXB0aW9uIGhhbmRsaW5n
IHdvcmsgbGlrZSB0aGUgREZHIEpJVAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIyMjQ0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8u
Ci0KLSAgICAgICAgQWRkZWQgYSBqdW1wIGxpc3QgKG1fZXhjZXB0aW9uQ2hlY2tzKSB0byBKSVQg
YXMgYSBjb21tb24gcGxhY2UgZm9yIGV4Y2VwdGlvbiBwcm9jZXNzaW5nIHdpdGhpbgotICAgICAg
ICBnZW5lcmF0ZWQgY29kZS4gIEFkZGVkIGV4Y2VwdGlvbkNoZWNrKCkgaGVscGVycyB0aGF0IGNo
ZWNrIGZvciBhbiBleGNlcHRpb24gd2hpY2ggYWRkIGEgYnJhbmNoCi0gICAgICAgIHRvIHRoZSBs
aXN0LgotCi0gICAgICAgICogaml0L0pJVC5jcHA6Ci0gICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGUpOgotICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFu
ZGxlcnMpOgotICAgICAgICAqIGppdC9KSVQuaDoKLSAgICAgICAgKEpTQzo6SklUOjpleGNlcHRp
b25DaGVjayk6Ci0KLTIwMTMtMTAtMDIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
LQotICAgICAgICBGaXggTVNWQyBidWlsZAotCi0gICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgotCi0yMDEzLTEwLTAyICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgT3B0aW1pemVkIFZNIGFjY2VzcyBmcm9t
IEMrKyBjb2RlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjIyNDEKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAgICAgICAq
IHJ1bnRpbWUvSlNTY29wZS5oOgotICAgICAgICAoSlNDOjpKU1Njb3BlOjp2bSk6IFVzZSBNYXJr
ZWRCbG9jayBpbnN0ZWFkIG9mIEhlYXAsIHNpbmNlIGJvdGggaGF2ZSBhCi0gICAgICAgIHBvaW50
ZXIgdG8gdGhlIFZNLCBhbmQgSGVhcCBpcyBvbmUgZXh0cmEgbG9hZC4KLQotMjAxMy0xMC0wMiAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KLQotICAgICAgICBUaGUgTExJbnQg
c2hvdWxkIG5vdCB1c2UgSklUU3RhY2tGcmFtZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjMxCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAg
UGl6bG8uCi0KLSAgICAgICAgUmVwbGFjZWQgdXNlcyBvZiBKSVRTdGFja0ZyYW1lOjp2bSB3aXRo
IGNvZGUgdG8gZWl0aGVyIGFjY2VzcyB0aGUgdm0gdmlhIHRoZSBDb2RlQmxvY2sgZnJvbQotICAg
ICAgICBrbm93biBKYXZhU2NyaXB0IGNhbGwgZnJhbWVzIG9yIHZpYSB0aGUgSlNTY29wZSogZm9y
IGhvc3QgY2FsbCBmcmFtZXMuICBUaGlzIGVsaW1pbmF0ZXMKLSAgICAgICAgYWxsIHVzZXMgb2Yg
SklUU3RhY2tGcmFtZSBmcm9tIHRoZSBMTEludC4KLQotICAgICAgICAqIGhlYXAvTWFya2VkQmxv
Y2suaDogTWFkZSBMTEludE9mZnNldHNFeHRyYWN0b3IgYSBmcmllbmQgdG8gYWNjZXNzIG1lbWJl
ciBvZmZzZXRzLgotICAgICAgICAqIGhlYXAvV2Vha1NldC5oOiBNYWRlIExMSW50T2Zmc2V0c0V4
dHJhY3RvciBhIGZyaWVuZCB0byBhY2Nlc3MgbWVtYmVyIG9mZnNldHMuCi0gICAgICAgICogbGxp
bnQvTExJbnREYXRhLmNwcDoKLSAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3Nl
cnRpb25zKTogQWRkZWQgYW4gQVNTRVJUIGZvciB0aGUgbmV3bHkgYWRkZWQgTWFya2VkQmxvY2tN
YXNrCi0gICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Ci0gICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKLSAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtOgotCi0yMDEzLTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+Ci0KLSAgICAgICAgSW1wbGVtZW50IEFycmF5IGtleSwgdmFsdWUgYW5kIGVu
dHJpZXMgaXRlcmF0b3JzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjIxOTUKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAg
ICAgICBBZGQgaW1wbGVtZW50YXRpb24gb2YgRVM2IEFycmF5IGl0ZXJhdG9ycyBmb3Iga2V5cygp
LCB2YWx1ZXMoKSBhbmQgZW50cmllcygpCi0KLSAgICAgICAgRmFpcmx5IHNlbGYgZXhwbGFuYXRv
cnkgYXMgd2UganVzdCBuZWVkIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIHNvIHRoYXQgd2UgY2Fu
Ci0gICAgICAgIGltcGxlbWVudCBhbmQgdGVzdCBvdGhlciBmZWF0dXJlcy4KLQotICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgICogcnVu
dGltZS9BcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KLSAgICAgICAgKEpTQzo6
QXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Ci0gICAgICAgICogcnVu
dGltZS9BcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaDogQWRkZWQuCi0gICAgICAgIChKU0M6OkFy
cmF5SXRlcmF0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKLSAgICAgICAgKEpTQzo6QXJyYXlJdGVy
YXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgotICAgICAgICAoSlNDOjpBcnJheUl0
ZXJhdG9yQ29uc3RydWN0b3I6OkFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvcik6Ci0gICAgICAgICog
cnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDogQWRkZWQuCi0gICAgICAgIChKU0M6
OkFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKLSAgICAgICAgKEpTQzo6
Y3JlYXRlSXRlcmF0b3JSZXN1bHQpOgotICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yUHJvdG90
eXBlTmV4dCk6Ci0gICAgICAgICogcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmg6IEFk
ZGVkLgotICAgICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUpOgotICAg
ICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUpOgotICAg
ICAgICAoSlNDOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBlOjpBcnJheUl0ZXJhdG9yUHJvdG90eXBl
KToKLSAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKLSAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNWYWx1ZXMpOgotICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0VudHJp
ZXMpOgotICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0tleXMpOgotICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKLSAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoK
LSAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6Y3JlYXRlRW1wdHlVbmlxdWUpOgotICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcDogQWRkZWQuCi0gICAgICAgIChKU0M6OkpTQXJy
YXlJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgotICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUl0
ZXJhdG9yLmg6IEFkZGVkLgotICAgICAgICAoSlNDOjpKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6Ci0gICAgICAgIChKU0M6OkpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKToKLSAgICAg
ICAgKEpTQzo6SlNBcnJheUl0ZXJhdG9yOjppdGVyYXRpb25LaW5kKToKLSAgICAgICAgKEpTQzo6
SlNBcnJheUl0ZXJhdG9yOjppdGVyYXRlZE9iamVjdCk6Ci0gICAgICAgIChKU0M6OkpTQXJyYXlJ
dGVyYXRvcjo6bmV4dEluZGV4KToKLSAgICAgICAgKEpTQzo6SlNBcnJheUl0ZXJhdG9yOjpzZXRO
ZXh0SW5kZXgpOgotICAgICAgICAoSlNDOjpKU0FycmF5SXRlcmF0b3I6OmZpbmlzaCk6Ci0gICAg
ICAgIChKU0M6OkpTQXJyYXlJdGVyYXRvcjo6SlNBcnJheUl0ZXJhdG9yKToKLSAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKLSAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0KToKLSAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Ci0gICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjppdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk6Ci0KLTIwMTMtMTAt
MDIgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KLQotICAgICAgICBn
ZXRfY2FsbGVlIGFuZCB0b190aGlzIGFyZW4ndCBwcm9wZXJseSBjbGVhcmVkIGR1cmluZyBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyMjI0Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
Ci0KLSAgICAgICAgRXZlbiB0aG91Z2ggdGhlcmUgaXMgY29kZSB0byBjbGVhciB1bm1hcmtlZCBp
bmxpbmUgY2FjaGUgb2JqZWN0cyBpbiBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSwKLSAgICAgICAg
aXQgd2lsbCBuZXZlciBydW4gYmVjYXVzZSBnZXRfY2FsbGVlIGFuZCB0b190aGlzIHdlcmVuJ3Qg
YWRkZWQgdG8gdGhlIHByb3BlciBWZWN0b3IgaW4gdGhlIAotICAgICAgICBVbmxpbmtlZENvZGVC
bG9jayB0aGF0IGlzIGl0ZXJhdGVkIGR1cmluZyBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseS4KLQot
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Ci0gICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Ci0gICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlVGhpcyk6Ci0KLTIwMTMtMDktMjUgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBJbXBsZW1lbnQgcHJlZml4ZWQt
ZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE5MzAKLQotICAgICAgICBSZXZpZXdlZCBieSBNYXJrIEhhaG5l
bmJlcmcuCi0KLSAgICAgICAgUmVsYW5kaW5nIHdpdGggZml4IGFmdGVyIHJvbGxvdXQgLSBpdCBo
ZWxwcyB0byBub3QgY29tcGxldGVseSBkZXN0cm95Ci0gICAgICAgIG9wdGltaXNhdGlvbnMgZm9y
IG5vIHJlYXNvbi4KLQotMjAxMy0xMC0wMiAgTmFkYXYgUm90ZW0gIDxucm90ZW1AYXBwbGUuY29t
PgotCi0gICAgICAgIEZUTDogUmVmYWN0b3IgY29tcGlsZUFyaXRoRGl2IGFuZCBjb21waWxlQXJp
dGhNb2QgaW50byBvbmUgZnVuY3Rpb24uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjIyMDUKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXps
by4KLQotICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Ci0gICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKLSAgICAgICAgKEpTQzo6RlRMOjpM
b3dlckRGR1RvTExWTTo6Y29tcGlsZUFkZFN1Yik6Ci0gICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVBcml0aERpdk1vZCk6Ci0KLTIwMTMtMTAtMDIgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBHZXQgcmlkIG9mIFF0IGNvZGUg
ZnJvbSBKYXZhU2NyaXB0Q29yZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyMjIzCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0K
LSAgICAgICAgKiBBUEkvSlNTdHJpbmdSZWZRdC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogQVBJ
L0pTU3RyaW5nUmVmUXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBBUEkvT3BhcXVlSlNTdHJpbmcu
aDoKLSAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6IFJlbW92ZWQuCi0gICAgICAgICogSmF2
YVNjcmlwdENvcmUucHJpOiBSZW1vdmVkLgotICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnBybzog
UmVtb3ZlZC4KLSAgICAgICAgKiBMTEludE9mZnNldHNFeHRyYWN0b3IucHJvOiBSZW1vdmVkLgot
ICAgICAgICAqIFRhcmdldC5wcmk6IFJlbW92ZWQuCi0gICAgICAgICogYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaDoKLSAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKLSAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnVyc2hpZnQzMik6Ci0gICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKLSAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk12Nzo6c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2gpOgotICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgotICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aFN1Yik6Ci0gICAgICAgICogaGVhcC9IZWFwVGltZXIuY3BwOgotICAgICAgICAoSlNDOjpI
ZWFwVGltZXI6OnRpbWVyRXZlbnQpOgotICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmg6Ci0gICAg
ICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgotICAgICAgICAoSlNDOjpJbmNyZW1l
bnRhbFN3ZWVwZXI6OnNjaGVkdWxlVGltZXIpOgotICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmg6Ci0gICAgICAgICogaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6Ci0gICAgICAg
IChKU0M6OkpJVDo6ZW1pdFN1YjMyQ29uc3RhbnQpOgotICAgICAgICAqIGpzYy5jcHA6Ci0gICAg
ICAgIChtYWluKToKLSAgICAgICAgKiBqc2MucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHJ1bnRp
bWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKLSAgICAgICAgKiBydW50aW1lL0dDQWN0aXZpdHlDYWxs
YmFjay5jcHA6Ci0gICAgICAgIChKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2spOgotICAgICAgICAoSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpjYW5jZWxUaW1lcik6Ci0gICAgICAgICogcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaDoKLSAgICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKLSAgICAgICAgKG1haW4pOgotICAgICAg
ICAqIHlhcnIveWFyci5wcmk6IFJlbW92ZWQuCi0KLTIwMTMtMTAtMDEgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KLQotICAgICAgICBGVEwgc2hvdWxkIHVzZSB0aGUgbmV3IHZlcnNp
b24gb2YgTExWTSBNQ0pJVCBtZW1vcnkgbWFuYWdlciBBUElzIHRoYXQgdGFrZSBhIFNlY3Rpb25O
YW1lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIx
OTMKLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KLSAgICAgICAgCi0gICAg
ICAgIFVwZGF0ZSBvdXIgdXNhZ2Ugb2YgdGhlIExMVk0gQyBBUEkgc2luY2UgdGhlIEFQSSBpcyBh
Ym91dCB0byBjaGFuZ2UuCi0KLSAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6Ci0gICAgICAg
IChKU0M6OkZUTDo6bW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToKLSAgICAgICAgKEpTQzo6RlRMOjpt
bUFsbG9jYXRlRGF0YVNlY3Rpb24pOgotCi0yMDEzLTEwLTAxICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUkVHUkVTU0lPTigxNTY0NjQpOiA1MCUgcmVncmVzc2lv
biBvbiBTdW5TcGlkZXIvc3RyaW5nLWZhc3RhCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDIKLQotICAgICAgICBVbnJldmlld2VkLCByb2xsIG91
dCByMTU2NDY0LgotICAgICAgICAKLSAgICAgICAgVGhpcyBpcyBhIHByb2dyZXNzaW9uIG9uIHN0
cmluZy1mYXN0YSwgc2luY2UgaXQgZml4ZXMgdGhlIHJlZ3Jlc3Npb24uCi0KLSAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6Ci0gICAgICAgIChKU0M6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZyk6Ci0gICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKLSAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKLSAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKLSAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFeHByZXNzaW9uSW5m
byk6Ci0gICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Ci0gICAgICAgIChK
U0M6OkZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKToKLSAgICAgICAgKEpTQzo6RnVuY0V4cHJOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgotICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6Ci0gICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgotICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgotICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjphZGRWYXIpOgotICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6Ci0gICAg
ICAgIChKU0M6OkNvbW1hTm9kZTo6Q29tbWFOb2RlKToKLSAgICAgICAgKEpTQzo6UGFyYW1ldGVy
Tm9kZTo6UGFyYW1ldGVyTm9kZSk6Ci0gICAgICAgIChKU0M6OkZvckluTm9kZTo6Rm9ySW5Ob2Rl
KToKLSAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgotICAgICAgICAoSlNDOjpGdW5jdGlvblBh
cmFtZXRlcnM6OmNyZWF0ZSk6Ci0gICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6RnVu
Y3Rpb25QYXJhbWV0ZXJzKToKLSAgICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjp+RnVu
Y3Rpb25QYXJhbWV0ZXJzKToKLSAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKLSAgICAgICAgKEpT
Qzo6RXhwcmVzc2lvbk5vZGU6OmlzRG90QWNjZXNzb3JOb2RlKToKLSAgICAgICAgKEpTQzo6Q29t
bWFOb2RlOjphcHBlbmQpOgotICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2RlOjppZGVudCk6Ci0g
ICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6YXQpOgotICAgICAgICAoSlNDOjpGdW5j
dGlvblBhcmFtZXRlcnM6OmlkZW50aWZpZXJzKToKLSAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKLSAgICAgICAgKEpTQzo6OjpQYXJzZXIpOgotICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVj
bGFyYXRpb24pOgotICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKLSAg
ICAgICAgKEpTQzo6OjpwYXJzZUZvclN0YXRlbWVudCk6Ci0gICAgICAgIChKU0M6Ojo6cGFyc2VG
b3JtYWxQYXJhbWV0ZXJzKToKLSAgICAgICAgKEpTQzo6OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKToKLSAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Ci0gICAgICAgIChKU0M6OlNjb3BlOjpk
ZWNsYXJlUGFyYW1ldGVyKToKLSAgICAgICAgKEpTQzo6UGFyc2VyOjpkZWNsYXJlUGFyYW1ldGVy
KToKLSAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgotICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KToKLSAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlRm9ySW5Mb29wKToKLSAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6b3BlcmF0b3JTdGFja1BvcCk6Ci0gICAgICAgICogcnVudGltZS9KU09OT2JqZWN0LmNwcDoK
LSAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuaDoKLQotMjAxMy0xMC0wMSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgotCi0gICAgICAgIFZhcmlhYmxlIGV2ZW50IHN0cmVhbSAo
Zm9yIERGRyBPU1IgZXhpdCkgc2hvdWxkIGJlIGV4cGxpY2l0IGFib3V0IHdoZXJlIG9uIHRoZSBz
dGFjayBhIFNldExvY2FsIHB1dCBhIHZhbHVlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxNzgKLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KLSAgICAgICAgCi0gICAgICAgIE5vdyBpZiB0aGUgREZHIHN0b3JlcyB0aGUgdmFs
dWUgb2YgYSB2YXJpYWJsZSBpbnRvIHRoZSBzdGFjayBleHBsaWNpdGx5IHZpYSBhIFNldExvY2Fs
LAotICAgICAgICBpdCB3aWxsIHJlY29yZCB3aGVyZSBvbiB0aGUgc3RhY2sgaXQgc3RvcmVkIHRo
ZSB2YWx1ZSBpbiBhZGRpdGlvbiB0byByZWNvcmRpbmcgd2hlcmUgb24KLSAgICAgICAgdGhlIHN0
YWNrIHRoZSBieXRlY29kZSB3b3VsZCBoYXZlIGRvbmUgdGhlIFNldExvY2FsLiBQcmV2aW91c2x5
IGl0IGp1c3QgcmVjb3JkZWQgdGhlCi0gICAgICAgIGZvcm1hdCBhbmQgdGhlIGJ5dGVjb2RlIHZh
cmlhYmxlLiBSZWNvcmRpbmcganVzdCB0aGUgYnl0ZWNvZGUgdmFyaWFibGUgaXMgY3VycmVudGx5
IGZpbmUKLSAgICAgICAgc2luY2UgdGhlIERGRyBhbHdheXMgZXhlY3V0ZXMgU2V0TG9jYWwncyB0
byB0aGUgc2FtZSBzdGFjayBsb2NhdGlvbiB0aGF0IHRoZSBieXRlY29kZQotICAgICAgICB3b3Vs
ZCBoYXZlIHVzZWQuIEJ1dCB0aGF0IHByZXZlbnRzIHN0YWNrIGNvbXByZXNzaW9uICh3ZWJraXQu
b3JnL2IvMTIyMDI0KSBzbyB0aGlzIHBhdGNoCi0gICAgICAgIGFsbG93cyB0aGUgU2V0TG9jYWwg
dG8gc2F5IGJvdGggdGhlIGJ5dGVjb2RlIHZhcmlhYmxlIHRoYXQgd2UncmUgc3BlYWtpbmcgb2Yg
YW5kIHRoZQotICAgICAgICBhY3R1YWwgc3RhY2sgbG9jYXRpb24gdG8gd2hpY2ggdGhlIFNldExv
Y2FsIHN0b3JlZCB0aGUgdmFsdWUuCi0gICAgICAgIAotICAgICAgICBUaGlzIGhhZCB0byB0b3Vj
aCBhIGxvdCBvZiBjb2RlLCBzbyBJIHRvb2sgdGhlIG9wcG9ydHVuaXR5IHRvIGFsc28gcmVzb2x2
ZQotICAgICAgICB3ZWJraXQub3JnL2IvMTA4MDE5LgotCi0gICAgICAgICogYnl0ZWNvZGUvT3Bl
cmFuZHMuaDoKLSAgICAgICAgKEpTQzo6T3BlcmFuZHM6Omhhc09wZXJhbmQpOgotICAgICAgICAq
IGRmZy9ERkdGbHVzaEZvcm1hdC5oOgotICAgICAgICAoSlNDOjpERkc6OmRhdGFGb3JtYXRGb3Ip
OgotICAgICAgICAqIGRmZy9ERkdNaW5pZmllZElELmg6Ci0gICAgICAgIChKU0M6OkRGRzo6TWlu
aWZpZWRJRDo6Yml0cyk6Ci0gICAgICAgIChKU0M6OkRGRzo6TWluaWZpZWRJRDo6aW52YWxpZElE
KToKLSAgICAgICAgKEpTQzo6REZHOjpNaW5pZmllZElEOjpvdGhlckludmFsaWRJRCk6Ci0gICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKLSAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1vdkhpbnQpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKLSAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6cmVjb3JkU2V0TG9j
YWwpOgotICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKLSAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Ci0gICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKLSAgICAgICAgKiBkZmcvREZHVmFsdWVTb3VyY2UuY3BwOgotICAgICAgICAoSlND
OjpERkc6OlZhbHVlU291cmNlOjpkdW1wKToKLSAgICAgICAgKiBkZmcvREZHVmFsdWVTb3VyY2Uu
aDoKLSAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6VmFsdWVTb3VyY2UpOgotICAgICAg
ICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjpmb3JGbHVzaEZvcm1hdCk6Ci0gICAgICAgIChKU0M6
OkRGRzo6VmFsdWVTb3VyY2U6OmZvckRhdGFGb3JtYXQpOgotICAgICAgICAoSlNDOjpERkc6OlZh
bHVlU291cmNlOjppc1NldCk6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFsdWVTb3VyY2U6OmtpbmQp
OgotICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjp2YWx1ZVJlY292ZXJ5KToKLSAgICAg
ICAgKEpTQzo6REZHOjpWYWx1ZVNvdXJjZTo6aWQpOgotICAgICAgICAoSlNDOjpERkc6OlZhbHVl
U291cmNlOjp2aXJ0dWFsUmVnaXN0ZXIpOgotICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50
LmNwcDoKLSAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wKToKLSAgICAgICAg
KEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wU3BpbGxJbmZvKToKLSAgICAgICAgKiBkZmcv
REZHVmFyaWFibGVFdmVudC5oOgotICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmZp
bGxHUFIpOgotICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmZpbGxQYWlyKToKLSAg
ICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpmaWxsRlBSKToKLSAgICAgICAgKEpTQzo6
REZHOjpWYXJpYWJsZUV2ZW50OjpzcGlsbCk6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVF
dmVudDo6ZGVhdGgpOgotICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OnNldExvY2Fs
KToKLSAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50Ojptb3ZIaW50KToKLSAgICAgICAg
KEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjppZCk6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFyaWFi
bGVFdmVudDo6Z3ByKToKLSAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50Ojp0YWdHUFIp
OgotICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OnBheWxvYWRHUFIpOgotICAgICAg
ICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmZwcik6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFy
aWFibGVFdmVudDo6c3BpbGxSZWdpc3Rlcik6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVF
dmVudDo6Ynl0ZWNvZGVSZWdpc3Rlcik6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVu
dDo6bWFjaGluZVJlZ2lzdGVyKToKLSAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50Ojp2
YXJpYWJsZVJlcHJlc2VudGF0aW9uKToKLSAgICAgICAgKiBkZmcvREZHVmFyaWFibGVFdmVudFN0
cmVhbS5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25z
dHJ1Y3QpOgotCi0yMDEzLTEwLTAxICBOYWRhdiBSb3RlbSAgPG5yb3RlbUBhcHBsZS5jb20+Ci0K
LSAgICAgICAgRlRMOiBzcGxpdCBvdmVyZmxvdyBjaGVja3MgaW50byBub24tb3ZlcmZsb3cgYXJp
dGhtZXRpYyBhbmQgYW4gYWRkaXRpb25hbCBjYWxsIHRvIHRoZSBvdmVyZmxvdyBpbnRyaW5zaWMg
Y2hlY2suCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjIxNzAKLQotICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KLQotICAgICAgICBPdmVy
ZmxvdyBpbnRyaW5zaWNzIGFyZSBwcmV2ZW50aW5nIFNDRVYgYW5kIG90aGVyIExMVk0gYW5hbHlz
aXMgcGFzc2VzIGZyb20gYW5hbHl6aW5nIGxvb3BzLiBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIEZU
TC1JUiBnZW4gYnkgc3BsaXR0aW5nIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIGludG8gdHdvIHBh
cnRzOgotICAgICAgICAxLiBHZW5lcmF0ZSB0aGUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbiAodGhh
dCBtYXkgb3ZlcmZsb3cpCi0gICAgICAgIDIuIEdlbmVyYXRlIHRoZSBvdmVyZmxvdyBjaGVjayAo
dGhhdCBpcyBvbmx5IHVzZWQgYnkgdGhlIE9TUi1leGl0IGxvZ2ljKS4KLQotICAgICAgICBXZSB0
cnVzdCBMTFZNIChTZWxlY3Rpb25EQUcpIHRvIG1lcmdlIHRoZXNlIGNhbGN1bGF0aW9ucyBpbnRv
IGEgc2luZ2xlIG9wY29kZS4KLQotICAgICAgICBUaGlzIEpTIGZ1bmN0aW9uOgotCi0gICAgICAg
IGZ1bmN0aW9uIGZvbygpIHsKLSAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgMTAwMDAwMDA7IGkr
KykgeyB9Ci0gICAgICAgIH0KLQotICAgICAgICBJcyBub3cgY29tcGlsZWQgaW50byB0aGlzIExM
Vk0tSVI6IAotCi0gICAgICAgICJPU1IgZXhpdCBjb250aW51YXRpb24gZm9yIEAyNDxJbnQzMj4i
OiAgICAgICAgICAgOyBwcmVkcyA9ICUiQmxvY2sgIzAiLCAlIk9TUiBleGl0IGNvbnRpbnVhdGlv
biBmb3IgQDI0PEludDMyPjIiCi0gICAgICAgICAgJTQgPSBwaGkgaTY0IFsgJTEwLCAlIk9TUiBl
eGl0IGNvbnRpbnVhdGlvbiBmb3IgQDI0PEludDMyPjIiIF0sIFsgLTI4MTQ3NDk3NjcxMDY1Niwg
JSJCbG9jayAjMCIgXQotICAgICAgICAgICU1ID0gdHJ1bmMgaTY0ICU0IHRvIGkzMgotICAgICAg
ICAgICU2ID0gYWRkIGkzMiAlNSwgMQotICAgICAgICAgICU3ID0gdGFpbCBjYWxsIHsgaTMyLCBp
MSB9IEBsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pMzIoaTMyICU1LCBpMzIgMSkKLSAgICAgICAg
ICAlOCA9IGV4dHJhY3R2YWx1ZSB7IGkzMiwgaTEgfSAlNywgMQotICAgICAgICAgIGJyIGkxICU4
LCBsYWJlbCAlIk9TUiBleGl0IGZhaWxDYXNlIGZvciBAMjQ8SW50MzI+MSIsIGxhYmVsICUiT1NS
IGV4aXQgY29udGludWF0aW9uIGZvciBAMjQ8SW50MzI+MiIKLQotICAgICAgICAgQW5kIGludG8g
dGhpcyBhc3NlbWJseToKLQotICAgICAgICBMQkIwXzE6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyMgJU9TUiBleGl0IGNvbnRpbnVhdGlvbiBmb3IgQDI0PEludDMyPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjID0+VGhpcyBJbm5lciBMb29wIEhl
YWRlcjogRGVwdGg9MQotICAgICAgICAgICAgbW92bCAgJWVjeCwgJWVzaQotICAgICAgICAgICAg
aW5jbCAgJWVzaQotICAgICAgICAgICAgam8gIExCQjBfNAotCi0gICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcDoKLSAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUFkZFN1Yik6Ci0gICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVB
cml0aE11bCk6Ci0gICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVBcml0
aE5lZ2F0ZSk6Ci0KLTIwMTMtMTAtMDEgIE5hZGF2IFJvdGVtICA8bnJvdGVtQGFwcGxlLmNvbT4K
LQotICAgICAgICBDb25zb2xpZGF0ZSBtdWx0aXBsZSBPU1JFeGl0IGNhbGxzIGludG8gb25lLgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTY4Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCi0KLSAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwOgotICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlQXJpdGhNdWwpOgotICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
QXJpdGhEaXYpOgotICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJp
dGhNb2QpOgotCi0yMDEzLTA5LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+Ci0K
LSAgICAgICAgU3BlY3VsYXRpdmVKSVQ6Om1fYXJndW1lbnRzL21fdmFyaWFibGVzIGFyZSB2ZXN0
aWdlcyBvZiBhIHRpbWUgbG9uZyBnb25lCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjIxNDAKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KLSAgICAgICAgCi0gICAgICAgIEp1c3Qga2lsbGluZyBjb2RlLgotCi0gICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6U3BlY3VsYXRpdmVKSVQpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5saW5lU3RhcnQpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3VycmVudEJsb2NrKToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2hlY2tBcmd1bWVudFR5cGVzKToKLSAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoK
LSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6cmVjb3JkU2V0TG9jYWwpOgotCiAy
MDEzLTEwLTAxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBKYXZhU2NyaXB0Q29yZSBmYWlscyB0byBidWlsZCB3aXRoIG5ld2VyIHZlcnNpb25zIG9m
IGNsYW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCmluZGV4IGExYzI0YzguLjNjNTVlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC00OSw3ICs0OSw3IEBA
IEdDQ19NT0RFTF9UVU5JTkcgPSAkKEdDQ19NT0RFTF9UVU5JTkdfJChQTEFURk9STV9OQU1FKSk7
CiBHQ0NfTU9ERUxfVFVOSU5HX21hY29zeCA9IEc1OwogR0NDX09CSkNfQ0FMTF9DWFhfQ0RUT1JT
ID0gWUVTOwogR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKLUdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpIEhBVkVfRFRSQUNFPSQoSEFWRV9E
VFJBQ0UpIFdFQktJVF9WRVJTSU9OX01JTl9SRVFVSVJFRD1XRUJLSVRfVkVSU0lPTl9MQVRFU1Qg
SEFWRV9IRUFERVJfREVURUNUSU9OX0ggSlNDX09CSkNfQVBJX0FWQUlMQUJMRV9NQUNfT1NfWF8x
MDgwICQoRkVBVFVSRV9ERUZJTkVTKSAkKEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMpOwor
R0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgSEFWRV9EVFJB
Q0U9JChIQVZFX0RUUkFDRSkgV0VCS0lUX1ZFUlNJT05fTUlOX1JFUVVJUkVEPVdFQktJVF9WRVJT
SU9OX0xBVEVTVCBIQVZFX0hFQURFUl9ERVRFQ1RJT05fSCAkKEZFQVRVUkVfREVGSU5FUykgJChH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TKTsKIEdDQ19TVFJJQ1RfQUxJQVNJTkcgPSBZRVM7
CiBHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CiBHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJS
T1JTID0gWUVTOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1NDI1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTAsMCArMSwxMjQg
QEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBEZXJpdmVkIHNvdXJjZXMgZm9yIEphdmFTY3JpcHRTb3VyY2UK
KyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVp
bGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBkZXJpdmVkCisKK0xVVF9GSUxF
UyArPSBcCisgICAgcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgXAor
ICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcCBcCisgICAgcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IFwKKyAgICBydW50aW1lL0pTT05PYmplY3QuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZUNv
bnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VQcm90b3R5cGUuY3BwIFwKKyAg
ICBydW50aW1lL0pTUHJvbWlzZVJlc29sdmVyUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9N
YXRoT2JqZWN0LmNwcCBcCisgICAgcnVudGltZS9OYW1lUHJvdG90eXBlLmNwcCBcCisgICAgcnVu
dGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcCBcCisgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAgXAor
ICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHAgXAorCitLRVlXT1JETFVUX0ZJTEVTICs9IFwKKyAgICBwYXJzZXIvS2V5d29y
ZHMudGFibGUKKworSklUX1NUVUJfRklMRVMgKz0gXAorICAgIGppdC9KSVRTdHVicy5jcHAKKwor
TExJTlRfQVNTRU1CTEVSID0gJCRQV0QvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKwor
TExJTlRfREVQRU5ERU5DWSA9IFwKKyAgICAkJFBXRC9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtIFwKKyAgICAkJFBXRC9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIFwK
KyAgICAkJExMSU5UX0FTU0VNQkxFUgorCitESVNBU1NFTUJMRVJfRklMRVMgPSBcCisgICAgZGlz
YXNzZW1ibGVyL3VkaXM4Ni9vcHRhYmxlLnhtbAorCitESVNBU1NFTUJMRVJfREVQRU5ERU5DWSA9
IFwKKyAgICAkJFBXRC9kaXNhc3NlbWJsZXIvdWRpczg2L3VkX29wY29kZS5weSBcCisgICAgJCRQ
V0QvZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZF9vcHRhYmxlLnB5CisKKyMgR0VORVJBVE9SIDEtQTog
TFVUIGNyZWF0b3IKK2x1dC5vdXRwdXQgPSAke1FNQUtFX0ZJTEVfQkFTRX0ubHV0LmgKK2x1dC5p
bnB1dCA9IExVVF9GSUxFUworbHV0LnNjcmlwdCA9ICQkUFdEL2NyZWF0ZV9oYXNoX3RhYmxlCits
dXQuY29tbWFuZHMgPSBwZXJsICQkbHV0LnNjcmlwdCAke1FNQUtFX0ZJTEVfTkFNRX0gLWkgPiAk
e1FNQUtFX0ZJTEVfT1VUfQorbHV0LmRlcGVuZHMgPSAke1FNQUtFX0ZJTEVfTkFNRX0KK0dFTkVS
QVRPUlMgKz0gbHV0CisKKyMgR0VORVJBVE9SIDEtQjogcGFydGljdWxhciBMVVQgY3JlYXRvciAo
Zm9yIDEgZmlsZSBvbmx5KQora2V5d29yZGx1dC5vdXRwdXQgPSBMZXhlci5sdXQuaAora2V5d29y
ZGx1dC5pbnB1dCA9IEtFWVdPUkRMVVRfRklMRVMKK2tleXdvcmRsdXQuc2NyaXB0ID0gJCRQV0Qv
Y3JlYXRlX2hhc2hfdGFibGUKK2tleXdvcmRsdXQuY29tbWFuZHMgPSBwZXJsICQka2V5d29yZGx1
dC5zY3JpcHQgJHtRTUFLRV9GSUxFX05BTUV9IC1pID4gJHtRTUFLRV9GSUxFX09VVH0KK2tleXdv
cmRsdXQuZGVwZW5kcyA9ICR7UU1BS0VfRklMRV9OQU1FfQorR0VORVJBVE9SUyArPSBrZXl3b3Jk
bHV0CisKKyMgR0VORVJBVE9SIDItQTogSklUIFN0dWIgZnVuY3Rpb25zIGZvciBSVkNUCitydmN0
c3R1YnMub3V0cHV0ID0gR2VuZXJhdGVkJHtRTUFLRV9GSUxFX0JBU0V9X1JWQ1QuaAorcnZjdHN0
dWJzLnNjcmlwdCA9ICQkUFdEL2NyZWF0ZV9qaXRfc3R1YnMKK3J2Y3RzdHVicy5jb21tYW5kcyA9
IHBlcmwgLWkgJCRydmN0c3R1YnMuc2NyaXB0IC0tcHJlZml4IFJWQ1QgLS1oZWFkZXIgJCRQV0Qv
aml0L0pJVFN0dWJzQVJNLmggJHtRTUFLRV9GSUxFX05BTUV9ID4gJHtRTUFLRV9GSUxFX09VVH0K
K3J2Y3RzdHVicy5kZXBlbmRzID0gJHtRTUFLRV9GSUxFX05BTUV9CitydmN0c3R1YnMuaW5wdXQg
PSBKSVRfU1RVQl9GSUxFUworcnZjdHN0dWJzLkNPTkZJRyArPSBub19saW5rCitHRU5FUkFUT1JT
ICs9IHJ2Y3RzdHVicworCisjIEdFTkVSQVRPUiAyLUI6IEpJVCBTdHViIGZ1bmN0aW9ucyBmb3Ig
TVNWQworbXN2Y3N0dWJzLm91dHB1dCA9IEdlbmVyYXRlZCR7UU1BS0VfRklMRV9CQVNFfV9NU1ZD
LmFzbQorbXN2Y3N0dWJzLnNjcmlwdCA9ICQkUFdEL2NyZWF0ZV9qaXRfc3R1YnMKK21zdmNzdHVi
cy5jb21tYW5kcyA9IHBlcmwgLWkgJCRtc3Zjc3R1YnMuc2NyaXB0IC0tcHJlZml4IE1TVkMgLS1o
ZWFkZXIgJCRQV0Qvaml0L0pJVFN0dWJzQVJNLmggJHtRTUFLRV9GSUxFX05BTUV9ID4gJHtRTUFL
RV9GSUxFX09VVH0KK21zdmNzdHVicy5kZXBlbmRzID0gJHtRTUFLRV9GSUxFX05BTUV9Cittc3Zj
c3R1YnMuaW5wdXQgPSBKSVRfU1RVQl9GSUxFUworbXN2Y3N0dWJzLkNPTkZJRyArPSBub19saW5r
CitHRU5FUkFUT1JTICs9IG1zdmNzdHVicworCisjR0VORVJBVE9SOiAiUmVnRXhwSml0VGFibGVz
LmgiOiB0YWJsZXMgdXNlZCBieSBZYXJyCityZXRnZW4ub3V0cHV0ID0gUmVnRXhwSml0VGFibGVz
LmgKK3JldGdlbi5zY3JpcHQgPSAkJFBXRC9jcmVhdGVfcmVnZXhfdGFibGVzCityZXRnZW4uaW5w
dXQgPSByZXRnZW4uc2NyaXB0CityZXRnZW4uY29tbWFuZHMgPSBweXRob24gJCRyZXRnZW4uc2Ny
aXB0ID4gJHtRTUFLRV9GSUxFX09VVH0KK0dFTkVSQVRPUlMgKz0gcmV0Z2VuCisKKyNHRU5FUkFU
T1I6ICJLZXl3b3JkTG9va3VwLmgiOiBkZWNpc2lvbiB0cmVlIHVzZWQgYnkgdGhlIGxleGVyCitr
bGdlbi5vdXRwdXQgPSBLZXl3b3JkTG9va3VwLmgKK2tsZ2VuLnNjcmlwdCA9ICQkUFdEL0tleXdv
cmRMb29rdXBHZW5lcmF0b3IucHkKK2tsZ2VuLmlucHV0ID0gS0VZV09SRExVVF9GSUxFUwora2xn
ZW4uY29tbWFuZHMgPSBweXRob24gJCRrbGdlbi5zY3JpcHQgJHtRTUFLRV9GSUxFX05BTUV9ID4g
JHtRTUFLRV9GSUxFX09VVH0KK0dFTkVSQVRPUlMgKz0ga2xnZW4KKworRVhUUkFDVE9SX0JJTkFS
WSA9IExMSW50T2Zmc2V0c0V4dHJhY3RvciQkQklOX0VYVEVOU0lPTgorRElSUyA9ICQkT1VUX1BX
RCAkJE9VVF9QV0QvZGVidWcgJCRPVVRfUFdEL3JlbGVhc2UKK2ZvcihkaXIsIERJUlMpIHsKKyAg
ICBmaWxlID0gJCRkaXIvJCRFWFRSQUNUT1JfQklOQVJZCisgICAgZXhpc3RzKCQkZmlsZSk6IExM
SU5UX0ZJTEVTICs9ICQkZmlsZQorfQorCisjR0VORVJBVE9SOiBMTEludAorbGxpbnQub3V0cHV0
ID0gJHtRTUFLRV9GSUxFX0lOX1BBVEh9JCR7UU1BS0VfRElSX1NFUH1MTEludEFzc2VtYmx5LmgK
K2xsaW50LnNjcmlwdCA9ICQkUFdEL29mZmxpbmVhc20vYXNtLnJiCitsbGludC5pbnB1dCA9IExM
SU5UX0ZJTEVTCitsbGludC5kZXBlbmRzID0gJCRMTElOVF9ERVBFTkRFTkNZCitsbGludC5jb21t
YW5kcyA9IHJ1YnkgJCRsbGludC5zY3JpcHQgJCRMTElOVF9BU1NFTUJMRVIgJHtRTUFLRV9GSUxF
X0lOfSAke1FNQUtFX0ZJTEVfT1VUfQorR0VORVJBVE9SUyArPSBsbGludAorCitsaW51eC0qOmlm
KGlzRXF1YWwoUVRfQVJDSCwgImkzODYiKXxpc0VxdWFsKFFUX0FSQ0gsICJ4ODZfNjQiKSkgewor
ICAgICMgR0VORVJBVE9SOiBkaXNhc3NlbWJsZXIKKyAgICBkaXNhc3NlbWJsZXIub3V0cHV0ID0g
dWRpczg2X2l0YWIuYworICAgIGRpc2Fzc2VtYmxlci5pbnB1dCA9IERJU0FTU0VNQkxFUl9GSUxF
UworICAgIGRpc2Fzc2VtYmxlci5zY3JpcHQgPSAkJFBXRC9kaXNhc3NlbWJsZXIvdWRpczg2L2l0
YWIucHkKKyAgICBkaXNhc3NlbWJsZXIuZGVwZW5kcyA9ICQkRElTQVNTRU1CTEVSX0RFUEVOREVO
Q1kKKyAgICBkaXNhc3NlbWJsZXIuY29tbWFuZHMgPSBweXRob24gJCRkaXNhc3NlbWJsZXIuc2Ny
aXB0ICR7UU1BS0VfRklMRV9OQU1FfSAtLW91dHB1dERpciAke1FNQUtFX0ZVTkNfRklMRV9PVVRf
UEFUSH0KKyAgICBkaXNhc3NlbWJsZXIuQ09ORklHICs9IG5vX2xpbmsKKyAgICBHRU5FUkFUT1JT
ICs9IGRpc2Fzc2VtYmxlcgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBkY2I3MTg5Li5mOGIzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtNzQ4LDEwICs3NDgsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmggXAot
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5j
cHAgXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JDb25z
dHJ1Y3Rvci5oIFwKLSAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmNwcCBcCi0gICAgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5U3RvcmFn
ZS5oIFwKQEAgLTg1Nyw4ICs4NTMsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIFwKLQlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIFwKLSAgICBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MTI5MDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCkBAIC0wLDAgKzEs
NDcgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGlzIGZpbGUgY29udGFpbnMgc2hhcmVkIHJ1bGVzIHVz
ZWQgYm90aCB3aGVuIGJ1aWxkaW5nCisjIEphdmFTY3JpcHRDb3JlIGl0c2VsZiwgYW5kIGJ5IHRh
cmdldHMgdGhhdCB1c2UgSmF2YVNjcmlwdENvcmUuCisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVB
RE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K1NPVVJDRV9ESVIgPSAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9KYXZhU2NyaXB0Q29yZQor
CitKQVZBU0NSSVBUQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIgPSAkJHtST09UX0JVSUxEX0RJ
Un0vU291cmNlL0phdmFTY3JpcHRDb3JlLyQke0dFTkVSQVRFRF9TT1VSQ0VTX0RFU1RESVJ9CisK
K0lOQ0xVREVQQVRIICs9IFwKKyAgICAkJFNPVVJDRV9ESVIgXAorICAgICQkU09VUkNFX0RJUi8u
LiBcCisgICAgJCRTT1VSQ0VfRElSLy4uL1dURiBcCisgICAgJCRTT1VSQ0VfRElSL2Fzc2VtYmxl
ciBcCisgICAgJCRTT1VSQ0VfRElSL2J5dGVjb2RlIFwKKyAgICAkJFNPVVJDRV9ESVIvYnl0ZWNv
bXBpbGVyIFwKKyAgICAkJFNPVVJDRV9ESVIvaGVhcCBcCisgICAgJCRTT1VSQ0VfRElSL2RmZyBc
CisgICAgJCRTT1VSQ0VfRElSL2RlYnVnZ2VyIFwKKyAgICAkJFNPVVJDRV9ESVIvZGlzYXNzZW1i
bGVyIFwKKyAgICAkJFNPVVJDRV9ESVIvZnRsIFwKKyAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0
ZXIgXAorICAgICQkU09VUkNFX0RJUi9qaXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCisg
ICAgJCRTT1VSQ0VfRElSL3BhcnNlciBcCisgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKKyAg
ICAkJFNPVVJDRV9ESVIvcnVudGltZSBcCisgICAgJCRTT1VSQ0VfRElSL3Rvb2xzIFwKKyAgICAk
JFNPVVJDRV9ESVIveWFyciBcCisgICAgJCRTT1VSQ0VfRElSL0FQSSBcCisgICAgJCRTT1VSQ0Vf
RElSL0ZvcndhcmRpbmdIZWFkZXJzIFwKKyAgICAkJEpBVkFTQ1JJUFRDT1JFX0dFTkVSQVRFRF9T
T1VSQ0VTX0RJUgorCisjIFBpY2sgdXAgdGhlIHJpZ2h0IHZlcnNpb24gb2YgTExJbnRBc3NlbWJs
eS5oCittYWN4OiBJTkNMVURFUEFUSCArPSAkJEpBVkFTQ1JJUFRDT1JFX0dFTkVSQVRFRF9TT1VS
Q0VTX0RJUi8kJHRhcmdldFN1YkRpcigpCisKK3dpbjMyLSo6IExJQlMgKz0gLWx3aW5tbQorCit3
aW5jZSogeworICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9vcy13aW4zMgorfQorCits
aW51eC0qOmlmKGlzRXF1YWwoUVRfQVJDSCwgImkzODYiKXxpc0VxdWFsKFFUX0FSQ0gsICJ4ODZf
NjQiKSkgeworICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9kaXNhc3NlbWJsZXIvdWRp
czg2Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJvIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzEzMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpAQCAtMCwwICsxLDI0IEBACisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyMgTWFpbiBwcm9qZWN0IGZpbGUgZm9yIEphdmFTY3JpcHRTb3VyY2UKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBzdWJkaXJzCitDT05GSUcgKz0gb3Jk
ZXJlZAorCitMTEludE9mZnNldHNFeHRyYWN0b3IuZmlsZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5wcm8KK0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5tYWtlZmlsZSA9IE1ha2VmaWxlLkxMSW50T2Zm
c2V0c0V4dHJhY3RvcgorU1VCRElSUyArPSBMTEludE9mZnNldHNFeHRyYWN0b3IKKworZGVyaXZl
ZF9zb3VyY2VzLmZpbGUgPSBEZXJpdmVkU291cmNlcy5wcmkKK3RhcmdldC5maWxlID0gVGFyZ2V0
LnByaQorCitTVUJESVJTICs9IGRlcml2ZWRfc291cmNlcyB0YXJnZXQKKworYWRkU3RyaWN0U3Vi
ZGlyT3JkZXJCZXR3ZWVuKExMSW50T2Zmc2V0c0V4dHJhY3RvciwgZGVyaXZlZF9zb3VyY2VzKQor
YWRkU3RyaWN0U3ViZGlyT3JkZXJCZXR3ZWVuKGRlcml2ZWRfc291cmNlcywgdGFyZ2V0KQorCitq
c2MuZmlsZSA9IGpzYy5wcm8KK2pzYy5tYWtlZmlsZSA9IE1ha2VmaWxlLmpzYworU1VCRElSUyAr
PSBqc2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDU4ZmVkMTIu
LmRkMDcyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNDI1
LDggKzQyNSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVm
ZmVyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVm
ZmVyVmlldy5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJh
eUNvbnN0cnVjdG9yLmNwcCIgLz4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAiIC8+DQotICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCIgLz4NCiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5UHJvdG90eXBlLmNwcCIgLz4NCiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEJvb2xlYW5Db25zdHJ1Y3Rvci5jcHAiIC8+DQog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxCb29sZWFuT2JqZWN0LmNwcCIgLz4N
CkBAIC00NjIsNyArNDYwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNBUElWYWx1ZVdyYXBwZXIuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNBY3RpdmF0aW9uLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQXJyYXkuY3BwIiAvPg0KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNBcnJheUl0ZXJhdG9yLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTQXJyYXlCdWZmZXIuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIiAvPg0KQEAg
LTg0Myw4ICs4NDAsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJh
eUJ1ZmZlclZpZXcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEFy
cmF5Q29uc3RydWN0b3IuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEFycmF5Q29udmVudGlvbnMuaCIgLz4NCi0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5oIiAvPg0KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oIiAvPg0KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlQcm90b3R5cGUuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5U3RvcmFnZS5oIiAvPg0KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIgLz4N
CkBAIC05MDMsNyArODk4LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNBcnJheUJ1ZmZlclZpZXcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oIiAvPg0KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiIC8+DQogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0JvdW5kRnVuY3Rpb24uaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWUuaCIgLz4NCiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQ0pTVmFsdWVJbmxpbmVzLmgiIC8+DQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2OGE2MTM3Li5iZDA2OTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTM4LDEyICs5MzgsNiBAQAogCQlBN0I0OEY0OTBFRTg5MzZG
MDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNjBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAgKi87IH07CiAJCUE3QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAv
KiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTdCNjAxODIx
NjM5RkQyQTAwMzcyQkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzlFNzgxRjE1RUVDQkE4MDA0N0M4NTUgLyog
VW5saW5rZWRDb2RlQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQlBN0JEQUVDNjE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvckNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3QkRBRUMwMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3Iu
Y3BwICovOyB9OwotCQlBN0JEQUVDNzE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvckNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBN0JEQUVDMTE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmgg
Ki87IH07Ci0JCUE3QkRBRUM4MTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QkRBRUMyMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsg
fTsKLQkJQTdCREFFQzkxN0Y0RUExNDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QkRBRUMz
MTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi87IH07Ci0JCUE3
QkRBRUNBMTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCREFFQzQxN0Y0RUExNDAwRjYx
NDBDIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgKi87IH07Ci0JCUE3QkRBRUNCMTdGNEVBMTQwMEY2
MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0
b3IuaCAqLzsgfTsKIAkJQTdCRkYzQzAxNzk4Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25S
ZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
QkZGM0JGMTc5ODY4OTQwMDAyRjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggKi87IH07CiAJ
CUE3QzBDNEFDMTY4MTAzMDIwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QzBDNEFCMTY3QzA4Q0Qw
MDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0MwQzRBRDE2ODEwNjdFMDAxNzAxMUQgLyogSlNT
Y3JpcHRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdDMEM0QUExNjdDMDhDRDAwMTcwMTFEIC8qIEpTU2NyaXB0UmVmLmNwcCAqLzsgfTsKQEAg
LTIxNjUsMTIgKzIxNTksNiBAQAogCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0
YWJsZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRh
YmxlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QjQ4REI2MEVF
NzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBN0I0QUNBRTE0ODRDOUNFMDBCMzhBMzYgLyogSlNFeHBvcnRN
YWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeHBvcnRNYWNyb3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTdCREFFQzAxN0Y0RUExNDAwRjYxNDBD
IC8qIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBN0JEQUVDMTE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRv
ckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5SXRl
cmF0b3JDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBN0JEQUVD
MjE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTdCREFFQzMxN0Y0RUExNDAwRjYxNDBDIC8q
IEFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBN0JEQUVDNDE3RjRFQTE0MDBGNjE0MEMgLyogSlNBcnJheUl0ZXJhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXJyYXlJdGVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0Fy
cmF5SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QkZGM0JGMTc5ODY4OTQw
MDAyRjQ2MiAvKiBERkdGaWx0cmF0aW9uUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0ZpbHRyYXRpb25SZXN1bHQuaDsgcGF0aCA9IGRmZy9ERkdGaWx0cmF0aW9u
UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3QzBDNEFBMTY3QzA4Q0Qw
MDE3MDExRCAvKiBKU1NjcmlwdFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NjcmlwdFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
QzBDNEFCMTY3QzA4Q0QwMDE3MDExRCAvKiBKU1NjcmlwdFJlZlByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zNDQzLDEyICszNDMxLDYgQEAKIAkJCQlBN0NBM0FFMjE3REE0
MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggKi8sCiAJCQkJQTdDQTNBRTkxN0RBNTE2ODAwNjUz
OEFGIC8qIFdlYWtNYXBEYXRhLmNwcCAqLywKIAkJCQlBN0NBM0FFQTE3REE1MTY4MDA2NTM4QUYg
LyogV2Vha01hcERhdGEuaCAqLywKLQkJCQlBN0JEQUVDMDE3RjRFQTE0MDBGNjE0MEMgLyogQXJy
YXlJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCAqLywKLQkJCQlBN0JEQUVDMTE3RjRFQTE0MDBGNjE0
MEMgLyogQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmggKi8sCi0JCQkJQTdCREFFQzIxN0Y0RUEx
NDAwRjYxNDBDIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAotCQkJCUE3QkRBRUMz
MTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCi0JCQkJQTdC
REFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgKi8sCi0JCQkJQTdC
REFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQzMzEsNyAr
NDMxMyw2IEBACiAJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFz
bUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8q
IExMSW50T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRTbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE3QkRBRUNCMTdGNEVB
MTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4
MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdFNUFCMzgxNzk5RTRCMjAwRDI4MzNEIC8qIExMVk1EaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MkUzMTM5MTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00MzkxLDcgKzQzNzIsNiBAQAogCQkJCTBGQ0NBRTQ1MTZEMENGNzQwMEQwQzY1QiAv
KiBQYXJzZXJFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RjE4MjUxNjQxOTJDNzAwNjQw
QTQ3IC8qIFBhcnNlck1vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTMwM0Q2NDE0NDdCOUUx
MDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggaW4gSGVhZGVycyAqLywKLQkJCQlBN0JEQUVDNzE3
RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjM0QjE0QzE2RDQzRTBEMDAxQ0RBNUEgLyogUG9seW1vcnBoaWNBY2Nlc3NTdHJ1
Y3R1cmVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNDE0RTFCNjAwMDBENTJBRTAg
LyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5ODIwNjEx
NkJGRTM4MzAwMjQwRDAyIC8qIFByZWNpc2VKdW1wVGFyZ2V0cy5oIGluIEhlYWRlcnMgKi8sCkBA
IC00NDM5LDcgKzQ0MTksNiBAQAogCQkJCUJDMThDNTJDMEUxNkZDRDIwMEIzNDQ2MCAvKiBSZWdF
eHBPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QyMDJDNDBFMTcwNkE3MDAyQzdF
ODIgLyogUmVnRXhwUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjBCMjU5OTE3MDY1
MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQlBN0JEQUVDOTE3RjRF
QTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZCN0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFJlamVjdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC00NjI2LDcgKzQ2MDUsNiBAQAogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkJNUQyRjdD
RjkwQzY4NzVCQjAwQjVCNzJCIC8qIFVwZGF0ZSBJbmZvLnBsaXN0IHdpdGggdmVyc2lvbiBpbmZv
cm1hdGlvbiAqLywKIAkJCQk5MzJGNUIzRjA4MjJBMUM3MDA3MzY5NzUgLyogSGVhZGVycyAqLywK
LQkJCQkzNzMyODExQTE3RkNEMjM1MDA0QUQ1MTkgLyogUG9zdHByb2Nlc3MgSGVhZGVycyAqLywK
IAkJCQk5MzJGNUI5MTA4MjJBMUM3MDA3MzY5NzUgLyogU291cmNlcyAqLywKIAkJCQk5MzJGNUJE
MjA4MjJBMUM3MDA3MzY5NzUgLyogRnJhbWV3b3JrcyAqLywKIAkJCQk1RDI5RDhCRTBFOTg2MEI0
MDBDM0QyRDAgLyogQ2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBhbmQgRXh0ZXJuYWxzICovLApAQCAt
NDczMiwyNSArNDcxMCw2IEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3Jp
cHQgPSAiaWYgWyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIF07IHRoZW5cbiAgICBl
eGl0IDA7XG5maVxuXG5pZiBbIC1mIC4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWluYXBw
cm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0
cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1vYmpjLWNsYXNzLW5hbWVzIEpTIHx8IGV4aXQgJD9c
bmZpIjsKIAkJfTsKLQkJMzczMjgxMUExN0ZDRDIzNTAwNEFENTE5IC8qIFBvc3Rwcm9jZXNzIEhl
YWRlcnMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7Ci0JCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkpOwotCQkJaW5wdXRQ
YXRocyA9ICgKLQkJCQkiJChUQVJHRVRfQlVJTERfRElSKS8kKFBVQkxJQ19IRUFERVJTX0ZPTERF
Ul9QQVRIKS9KU0Jhc2UuaCIsCi0JCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVB
REVSU19GT0xERVJfUEFUSCkvSlNDb250ZXh0LmgiLAotCQkJCSIkKFRBUkdFVF9CVUlMRF9ESVIp
LyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0pTTWFuYWdlZFZhbHVlLmgiLAotCQkJCSIk
KFRBUkdFVF9CVUlMRF9ESVIpLyQoUFVCTElDX0hFQURFUlNfRk9MREVSX1BBVEgpL0pTVmFsdWUu
aCIsCi0JCQkJIiQoVEFSR0VUX0JVSUxEX0RJUikvJChQVUJMSUNfSEVBREVSU19GT0xERVJfUEFU
SCkvSlNWaXJ0dWFsTWFjaGluZS5oIiwKLQkJCSk7Ci0JCQluYW1lID0gIlBvc3Rwcm9jZXNzIEhl
YWRlcnMiOwotCQkJb3V0cHV0UGF0aHMgPSAoCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxT
Y3JpcHQgPSAiY2QgXCIke1RBUkdFVF9CVUlMRF9ESVJ9LyR7UFVCTElDX0hFQURFUlNfRk9MREVS
X1BBVEh9XCJcblxuaWYgW1sgJHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0gPT0gXCIx
MDgwXCIgXV07IHRoZW5cbiAgICBVTklGREVGX09QVElPTj1cIi1ESlNDX09CSkNfQVBJX0FWQUlM
QUJMRV9NQUNfT1NfWF8xMDgwXCI7XG5lbHNlXG4gICAgVU5JRkRFRl9PUFRJT049XCItVUpTQ19P
QkpDX0FQSV9BVkFJTEFCTEVfTUFDX09TX1hfMTA4MFwiO1xuZmlcblxuZm9yIEhFQURFUiBpbiBK
U0Jhc2UuaCBKU0NvbnRleHQuaCBKU01hbmFnZWRWYWx1ZS5oIEpTVmFsdWUuaCBKU1ZpcnR1YWxN
YWNoaW5lLmg7IGRvXG4gICAgdW5pZmRlZiAtQiAke1VOSUZERUZfT1BUSU9OfSAtbyAke0hFQURF
Un0gJHtIRUFERVJ9XG4gICAgaWYgW1sgJD8gPiAxIF1dOyB0aGVuXG4gICAgICAgIGV4aXQgMTtc
biAgICBmaVxuZG9uZSI7Ci0JCX07CiAJCTVEMjlEOEJFMEU5ODYwQjQwMEMzRDJEMCAvKiBDaGVj
ayBGb3IgV2VhayBWVGFibGVzIGFuZCBFeHRlcm5hbHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
NTEzOCw3ICs1MDk3LDYgQEAKIAkJCQlBNzIwMjhCNjE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkVCMTdCNkI1QUIwMEE3
QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkVEMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUE3QkRBRUNBMTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc4ODAxNDAxNDcxQUQ5MjAwNDFCMDE2IC8qIEpTRGF0ZU1hdGguY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQwNTY2RDYxMDdFQzI3MTAwNURCQzhEIC8qIEpTRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDIxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTR2xv
YmFsT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTIzMSw3ICs1MTg5LDYgQEAKIAkJCQlF
MTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTY5QTA3OUEwRUQxRDNBRTAwRjFGNjgxIC8qIE9wY29kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI4MDg1MDEwN0VDMEQ3MDAxM0U3QjIgLyogT3BlcmF0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlBN0JEQUVDODE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZD
NDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCQzEwN0VDNTREMDA0
MkVDMkMgLyogUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDUyQzM0MEZCNzkyMTkw
MDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUyNzYsNyArNTIz
Myw2IEBACiAJCQkJQTcyOTlEQTExN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjcwNDE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlw
ZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzIyNTQ5NDMxNUY3REJB
QTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3QkRBRUM2
MTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDQwMkMwRTZBNzY0MDAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5RTE3MzA2QzhEMDA3REJEQTUgLyogU291cmNlQ29k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ5M0FGQTE2RDBDQUQzMDA4NDUwOEIgLyogU291
cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvTExJbnRPZmZzZXRzRXh0cmFjdG9yLnBybyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9MTEludE9mZnNldHNFeHRyYWN0b3IucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjM3ZDZmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLnBybwpAQCAtMCwwICsxLDcxIEBACisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgUHJvamVjdCBmaWxlIGZvciB0aGUgTExJbnRPZmZzZXRzRXh0cmFjdG9yIGJpbmFyeSwgdXNl
ZCB0byBnZW5lcmF0ZQorIyBkZXJpdmVkIHNvdXJjZXMgZm9yIEphdmFTY3JpcHRDb3JlLgorIwor
IyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBz
eXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGFwcAorVEFSR0VUID0gTExJbnRPZmZz
ZXRzRXh0cmFjdG9yCisKK2RlYnVnX2FuZF9yZWxlYXNlIHsKKyAgICBDT05GSUcgKz0gZm9yY2Vf
YnVpbGRfYWxsCisgICAgQ09ORklHICs9IGJ1aWxkX2FsbAorfQorCisjIERvbid0IHRyeSB0byBs
aW5rIGFnYWluc3QgYW55IFF0IGxpYnJhcmllcywgYnV0IGF0IGxlYXN0CisjIHB1bGwgaW4gaW5j
bHVkZSBwYXRocyBhcyB3ZSBpbmNsdWRlIHFnbG9iYWwuaC4KK0lOQ0xVREVQQVRIICs9ICQkUVQu
Y29yZS5pbmNsdWRlcworQ09ORklHICs9IGNvbnNvbGUKK0NPTkZJRyAtPSBxdAorTElCUyA9CisK
K2RlZmluZVRlc3QoYWRkSW5jbHVkZVBhdGhzKSB7CisgICAgIyBKdXN0IG5lZWRlZCBmb3IgaW5j
bHVkZSBwYXRocworICAgIGluY2x1ZGUoSmF2YVNjcmlwdENvcmUucHJpKQorICAgIGluY2x1ZGUo
Li4vV1RGL1dURi5wcmkpCisKKyAgICBleHBvcnQoSU5DTFVERVBBVEgpCit9CisKK2FkZEluY2x1
ZGVQYXRocygpCisKK0xMSU5UX0RFUEVOREVOQ1kgPSBcCisgICAgJCRQV0QvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gXAorICAgICQkUFdEL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gXAorICAgICQkUFdEL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gXAor
ICAgICQkUFdEL29mZmxpbmVhc20vYXJtLnJiIFwKKyAgICAkJFBXRC9vZmZsaW5lYXNtL2FzdC5y
YiBcCisgICAgJCRQV0Qvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYiBcCisgICAgJCRQV0Qvb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiIFwKKyAgICAkJFBXRC9vZmZsaW5lYXNt
L2luc3RydWN0aW9ucy5yYiBcCisgICAgJCRQV0Qvb2ZmbGluZWFzbS9vZmZzZXRzLnJiIFwKKyAg
ICAkJFBXRC9vZmZsaW5lYXNtL29wdC5yYiBcCisgICAgJCRQV0Qvb2ZmbGluZWFzbS9wYXJzZXIu
cmIgXAorICAgICQkUFdEL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiIFwKKyAgICAkJFBXRC9vZmZs
aW5lYXNtL3NlbGZfaGFzaC5yYiBcCisgICAgJCRQV0Qvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYiBc
CisgICAgJCRQV0Qvb2ZmbGluZWFzbS9zaDQucmIgXAorICAgICQkUFdEL29mZmxpbmVhc20vdHJh
bnNmb3JtLnJiIFwKKyAgICAkJFBXRC9vZmZsaW5lYXNtL3g4Ni5yYgorCitJTlBVVF9GSUxFUyA9
ICQkUFdEL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCitsbGludC5vdXRwdXQgPSBMTElu
dERlc2lyZWRPZmZzZXRzLmgKK2xsaW50LnNjcmlwdCA9ICQkUFdEL29mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgorbGxpbnQuaW5wdXQgPSBJTlBVVF9GSUxFUworbGxpbnQu
ZGVwZW5kcyA9ICQkTExJTlRfREVQRU5ERU5DWQorbGxpbnQuY29tbWFuZHMgPSBydWJ5ICQkbGxp
bnQuc2NyaXB0ICR7UU1BS0VfRklMRV9OQU1FfSAke1FNQUtFX0ZJTEVfT1VUfQorbGxpbnQuQ09O
RklHICs9IG5vX2xpbmsKK1FNQUtFX0VYVFJBX0NPTVBJTEVSUyArPSBsbGludAorCittYWN4IHsK
KyAgICBERVNURElSID0gJCR0YXJnZXRTdWJEaXIoKQorICAgIGxsaW50Lm91dHB1dCA9ICQkdGFy
Z2V0U3ViRGlyKCkvJCRsbGludC5vdXRwdXQKKyAgICBJTkNMVURFUEFUSCArPSAkJHRhcmdldFN1
YkRpcigpCit9CisKKyMgQ29tcGlsYXRpb24gb2YgdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxs
eSBkZXBlbmQgb24gTExJbnREZXNpcmVkT2Zmc2V0cy5oCisjIGR1ZSB0byBxbWFrZSBzY2Fubmlu
ZyB0aGUgc291cmNlIGZpbGUgZm9yIGhlYWRlciBkZXBlbmRlbmNpZXMuCitTT1VSQ0VTID0gbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorCittYWM6IExJQlNfUFJJVkFURSArPSAtZnJh
bWV3b3JrIEFwcEtpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41YTNiODdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkKQEAgLTAsMCArMSw0NTQgQEAKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU
YXJnZXQgZmlsZSBmb3IgdGhlIEphdmFTY3JpcHRTb3VyY2UgbGlicmFyeQorIworIyBTZWUgJ1Rv
b2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitURU1QTEFURSA9IGxpYgorVEFSR0VUID0gSmF2YVNjcmlwdENvcmUKKwor
aW5jbHVkZShKYXZhU2NyaXB0Q29yZS5wcmkpCisKK1dFQktJVCArPSB3dGYKK1FUICs9IGNvcmUK
K1FUIC09IGd1aQorCitDT05GSUcgKz0gc3RhdGljbGliCisKKyotZysrKjpRTUFLRV9DWFhGTEFH
U19SRUxFQVNFIC09IC1PMgorKi1nKysqOlFNQUtFX0NYWEZMQUdTX1JFTEVBU0UgKz0gLU8zCisK
KyMgUnVsZXMgd2hlbiBKSVQgZW5hYmxlZCAobm90IGRpc2FibGVkKQorIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9KSVQ9MCkgeworICAgIGxpbnV4Ki1nKysqOmdyZWF0ZXJUaGFuKFFUX0dDQ19N
QUpPUl9WRVJTSU9OLDMpOmdyZWF0ZXJUaGFuKFFUX0dDQ19NSU5PUl9WRVJTSU9OLDApIHsKKyAg
ICAgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLWZuby1zdGFjay1wcm90ZWN0b3IKKyAgICAgICAgUU1B
S0VfQ0ZMQUdTICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yCisgICAgfQorfQorCitpbmNsdWRlKHlh
cnIveWFyci5wcmkpCisKK0lOU1RBTExERVBTICs9IGFsbAorCitkZWJ1Z19hbmRfcmVsZWFzZTog
SU5DTFVERVBBVEggKz0gJCRKQVZBU0NSSVBUQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVIvJCR0
YXJnZXRTdWJEaXIoKQorCitTT1VSQ0VTICs9IFwKKyAgICBBUEkvSlNCYXNlLmNwcCBcCisgICAg
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgXAorICAgIEFQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uY3BwIFwKKyAgICBBUEkvSlNDYWxsYmFja09iamVjdC5jcHAgXAorICAgIEFQSS9KU0NsYXNz
UmVmLmNwcCBcCisgICAgQVBJL0pTQ29udGV4dFJlZi5jcHAgXAorICAgIEFQSS9KU09iamVjdFJl
Zi5jcHAgXAorICAgIEFQSS9KU1NjcmlwdFJlZi5jcHAgXAorICAgIEFQSS9KU1N0cmluZ1JlZi5j
cHAgXAorICAgIEFQSS9KU1N0cmluZ1JlZlF0LmNwcCBcCisgICAgQVBJL0pTVmFsdWVSZWYuY3Bw
IFwKKyAgICBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgXAorICAgIEFQSS9PcGFx
dWVKU1N0cmluZy5jcHAgXAorICAgIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwIFwKKyAgICBh
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwIFwKKyAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5j
cHAgXAorICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAgXAorICAgIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTS5jcHAgXAorICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5jcHAgXAorICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIFwKKyAg
ICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwIFwKKyAgICBieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwIFwKKyAgICBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgXAorICAgIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgXAorICAgIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwIFwKKyAgICBieXRl
Y29kZS9Db2RlT3JpZ2luLmNwcCBcCisgICAgYnl0ZWNvZGUvQ29kZVR5cGUuY3BwIFwKKyAgICBi
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAorICAgIGJ5dGVjb2RlL0RlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjay5jcHAgXAorICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwIFwK
KyAgICBieXRlY29kZS9FeGl0S2luZC5jcHAgXAorICAgIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwIFwKKyAgICBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWVTZXQuY3BwIFwKKyAgICBieXRlY29k
ZS9KdW1wVGFibGUuY3BwIFwKKyAgICBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHAgXAorICAgIGJ5dGVjb2RlL01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwIFwKKyAg
ICBieXRlY29kZS9PcGNvZGUuY3BwIFwKKyAgICBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcCBcCisgICAgYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBcCisgICAgYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgXAorICAgIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2Uu
Y3BwIFwKKyAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIFwKKyAgICBieXRlY29kZS9TcGVj
aWFsUG9pbnRlci5jcHAgXAorICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCisgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgXAorICAgIGJ5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBcCisgICAgYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIFwKKyAgICBieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcCBcCisgICAgYnl0ZWNvZGUv
V2F0Y2hwb2ludC5jcHAgXAorICAgIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
XAorICAgIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIFwKKyAgICBoZWFwL0NvZGVCbG9j
a1NldC5jcHAgXAorICAgIGhlYXAvQ29waWVkU3BhY2VJbmxpbmVzLmggXAorICAgIGhlYXAvQ29w
aWVkU3BhY2UuY3BwIFwKKyAgICBoZWFwL0NvcHlWaXNpdG9yLmNwcCBcCisgICAgaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAgXAorICAgIGhlYXAvV2Vhay5jcHAgXAorICAgIGhlYXAvV2Vha0Js
b2NrLmNwcCBcCisgICAgaGVhcC9XZWFrSGFuZGxlT3duZXIuY3BwIFwKKyAgICBoZWFwL1dlYWtT
ZXQuY3BwIFwKKyAgICBoZWFwL0hhbmRsZVNldC5jcHAgXAorICAgIGhlYXAvSGFuZGxlU3RhY2su
Y3BwIFwKKyAgICBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCisgICAgaGVhcC9HQ1RocmVhZFNo
YXJlZERhdGEuY3BwIFwKKyAgICBoZWFwL0dDVGhyZWFkLmNwcCBcCisgICAgaGVhcC9IZWFwLmNw
cCBcCisgICAgaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAgXAorICAgIGhlYXAvSGVhcFRpbWVyLmNw
cCBcCisgICAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIFwKKyAgICBoZWFwL0pJVFN0dWJS
b3V0aW5lU2V0LmNwcCBcCisgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIFwKKyAgICBo
ZWFwL01hcmtTdGFjay5jcHAgXAorICAgIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcCBcCisgICAg
aGVhcC9NYXJrZWRCbG9jay5jcHAgXAorICAgIGhlYXAvTWFya2VkU3BhY2UuY3BwIFwKKyAgICBo
ZWFwL1Nsb3RWaXNpdG9yLmNwcCBcCisgICAgaGVhcC9TdXBlclJlZ2lvbi5jcHAgXAorICAgIGhl
YXAvVlRhYmxlU3BlY3RydW0uY3BwIFwKKyAgICBoZWFwL1dyaXRlQmFycmllclN1cHBvcnQuY3Bw
IFwKKyAgICBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwIFwKKyAgICBkZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAgXAorICAgIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBcCisgICAg
ZGZnL0RGR0Fic3RyYWN0SGVhcC5jcHAgXAorICAgIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcCBc
CisgICAgZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIFwKKyAgICBkZmcv
REZHQXJyYXlNb2RlLmNwcCBcCisgICAgZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuY3BwIFwK
KyAgICBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgXAorICAgIGRmZy9ERkdC
YXNpY0Jsb2NrLmNwcCBcCisgICAgZGZnL0RGR0JpbmFyeVN3aXRjaC5jcHAgXAorICAgIGRmZy9E
RkdCbG9ja0luc2VydGlvblNldC5jcHAgXAorICAgIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAg
XAorICAgIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIFwKKyAgICBkZmcvREZHQ2xvYmJlcml6ZS5j
cHAgXAorICAgIGRmZy9ERkdDbG9iYmVyU2V0LmNwcCBcCisgICAgZGZnL0RGR0NvbW1vbi5jcHAg
XAorICAgIGRmZy9ERkdDb21tb25EYXRhLmNwcCBcCisgICAgZGZnL0RGR0NvbXBpbGF0aW9uS2V5
LmNwcCBcCisgICAgZGZnL0RGR0NvbXBpbGF0aW9uTW9kZS5jcHAgXAorICAgIGRmZy9ERkdDRkFQ
aGFzZS5jcHAgXAorICAgIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBcCisgICAg
ZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwIFwKKyAgICBkZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIFwKKyAgICBkZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQaGFzZS5jcHAg
XAorICAgIGRmZy9ERkdDU0VQaGFzZS5jcHAgXAorICAgIGRmZy9ERkdEQ0VQaGFzZS5jcHAgXAor
ICAgIGRmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwIFwKKyAgICBkZmcvREZHRGVzaXJlZFN0
cnVjdHVyZUNoYWlucy5jcHAgXAorICAgIGRmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwIFwK
KyAgICBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcCBcCisgICAgZGZnL0RGR0Rlc2lyZWRX
ZWFrUmVmZXJlbmNlcy5jcHAgXAorICAgIGRmZy9ERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAg
XAorICAgIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwIFwKKyAgICBkZmcvREZHRG9taW5hdG9ycy5j
cHAgXAorICAgIGRmZy9ERkdEcml2ZXIuY3BwIFwKKyAgICBkZmcvREZHRWRnZS5jcHAgXAorICAg
IGRmZy9ERkdGYWlsZWRGaW5hbGl6ZXIuY3BwIFwKKyAgICBkZmcvREZHRmluYWxpemVyLmNwcCBc
CisgICAgZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIFwKKyAgICBkZmcvREZHRmx1c2hGb3JtYXQuY3Bw
IFwKKyAgICBkZmcvREZHRmx1c2hMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIFwKKyAgICBkZmcv
REZHR3JhcGguY3BwIFwKKyAgICBkZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIFwKKyAg
ICBkZmcvREZHSklUQ29kZS5jcHAgXAorICAgIGRmZy9ERkdKSVRDb21waWxlci5jcHAgXAorICAg
IGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwIFwKKyAgICBkZmcvREZHTElDTVBoYXNlLmNwcCBcCisg
ICAgZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBcCisgICAgZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQ
aGFzZS5jcHAgXAorICAgIGRmZy9ERkdMb25nTGl2ZWRTdGF0ZS5jcHAgXAorICAgIGRmZy9ERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgXAorICAgIGRmZy9ERkdNaW5pZmllZE5vZGUu
Y3BwIFwKKyAgICBkZmcvREZHTmF0dXJhbExvb3BzLmNwcCBcCisgICAgZGZnL0RGR05vZGUuY3Bw
IFwKKyAgICBkZmcvREZHTm9kZUZsYWdzLmNwcCBcCisgICAgZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IFwKKyAgICBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAgXAorICAgIGRm
Zy9ERkdPU1JFbnRyeS5jcHAgXAorICAgIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0LmNwcCBcCisgICAgZGZnL0RGR09TUkV4aXRCYXNl
LmNwcCBcCisgICAgZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAgXAorICAgIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXI2NC5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAg
XAorICAgIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIFwKKyAgICBkZmcvREZHT1NS
RXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgXAorICAgIGRmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24u
Y3BwIFwKKyAgICBkZmcvREZHUGhhc2UuY3BwIFwKKyAgICBkZmcvREZHUGxhbi5jcHAgXAorICAg
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgXAorICAgIGRmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIFwKKyAgICBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcCBcCisgICAgZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBcCisgICAgZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIFwKKyAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgXAor
ICAgIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBcCisgICAgZGZnL0RGR1RodW5r
cy5jcHAgXAorICAgIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBcCisgICAg
ZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3BwIFwKKyAgICBkZmcvREZHVXNlS2luZC5jcHAgXAor
ICAgIGRmZy9ERkdWYWx1ZVNvdXJjZS5jcHAgXAorICAgIGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0Rh
dGFEdW1wLmNwcCBcCisgICAgZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwIFwKKyAgICBkZmcvREZH
VmFyaWFibGVFdmVudFN0cmVhbS5jcHAgXAorICAgIGRmZy9ERkdWYWxpZGF0ZS5jcHAgXAorICAg
IGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIFwKKyAgICBkZmcvREZH
V29ya2xpc3QuY3BwIFwKKyAgICBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBcCisgICAg
aW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5jcHAgXAorICAgIGludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAgXAorICAgIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBcCisgICAgaW50ZXJwcmV0ZXIv
SlNTdGFjay5jcHAgXAorICAgIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgXAorICAgIGpp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwIFwKKyAgICBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAgXAorICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIFwKKyAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAorICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmNwcCBcCisgICAgaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAgXAorICAgIGppdC9KSVRB
cml0aG1ldGljLmNwcCBcCisgICAgaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgXAorICAgIGpp
dC9KSVRDYWxsLmNwcCBcCisgICAgaml0L0pJVENhbGwzMl82NC5jcHAgXAorICAgIGppdC9KSVRD
b2RlLmNwcCBcCisgICAgaml0L0pJVC5jcHAgXAorICAgIGppdC9KSVREaXNhc3NlbWJsZXIuY3Bw
IFwKKyAgICBqaXQvSklURXhjZXB0aW9ucy5jcHAgXAorICAgIGppdC9KSVRPcGNvZGVzLmNwcCBc
CisgICAgaml0L0pJVE9wY29kZXMzMl82NC5jcHAgXAorICAgIGppdC9KSVRPcGVyYXRpb25zLmNw
cCBcCisgICAgaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBcCisgICAgaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwIFwKKyAgICBqaXQvSklUU3R1YlJvdXRpbmUuY3BwIFwKKyAgICBqaXQv
SklUU3R1YnMuY3BwIFwKKyAgICBqaXQvSklUVGh1bmtzLmNwcCBcCisgICAgaml0L0pJVFRvREZH
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBcCisgICAgaml0L0p1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQuY3BwIFwKKyAgICBqaXQvUmVwYXRjaC5jcHAgXAorICAgIGppdC9UaHVua0dl
bmVyYXRvcnMuY3BwIFwKKyAgICBsbGludC9MTEludENMb29wLmNwcCBcCisgICAgbGxpbnQvTExJ
bnREYXRhLmNwcCBcCisgICAgbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBcCisgICAgbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcCBcCisgICAgbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIFwKKyAg
ICBsbGludC9MTEludFRodW5rcy5jcHAgXAorICAgIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwIFwKKyAgICBwYXJzZXIvTGV4ZXIuY3BwIFwKKyAgICBwYXJzZXIvTm9kZXMuY3BwIFwKKyAg
ICBwYXJzZXIvUGFyc2VyQXJlbmEuY3BwIFwKKyAgICBwYXJzZXIvUGFyc2VyLmNwcCBcCisgICAg
cGFyc2VyL1NvdXJjZUNvZGUuY3BwIFwKKyAgICBwYXJzZXIvU291cmNlUHJvdmlkZXIuY3BwIFwK
KyAgICBwYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgXAorICAgIHByb2ZpbGVyL1Byb2Zp
bGVyQnl0ZWNvZGUuY3BwIFwKKyAgICBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlLmggXAorICAg
IHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgXAorICAgIHByb2ZpbGVyL1By
b2ZpbGVyQnl0ZWNvZGVzLmNwcCBcCisgICAgcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMuaCBc
CisgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgXAorICAgIHByb2ZpbGVyL1By
b2ZpbGVyQ29tcGlsYXRpb24uaCBcCisgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktp
bmQuY3BwIFwKKyAgICBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIFwKKyAgICBw
cm9maWxlci9Qcm9maWxlckNvbXBpbGVkQnl0ZWNvZGUuY3BwIFwKKyAgICBwcm9maWxlci9Qcm9m
aWxlckNvbXBpbGVkQnl0ZWNvZGUuaCBcCisgICAgcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5j
cHAgXAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaCBcCisgICAgcHJvZmlsZXIvUHJv
ZmlsZXJFeGVjdXRpb25Db3VudGVyLmggXAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmNw
cCBcCisgICAgcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uaCBcCisgICAgcHJvZmlsZXIvUHJvZmls
ZXJPcmlnaW5TdGFjay5jcHAgXAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suaCBc
CisgICAgcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0LmNwcCBcCisgICAgcHJvZmlsZXIvUHJvZmls
ZXJPU1JFeGl0U2l0ZS5jcHAgXAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRlY29k
ZXMuY3BwIFwKKyAgICBwcm9maWxlci9Qcm9maWxlLmNwcCBcCisgICAgcHJvZmlsZXIvUHJvZmls
ZUdlbmVyYXRvci5jcHAgXAorICAgIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcCBcCisgICAgcHJv
ZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwIFwKKyAgICBydW50aW1lL0FyZ0xpc3QuY3BwIFwKKyAg
ICBydW50aW1lL0FyZ3VtZW50cy5jcHAgXAorICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwIFwK
KyAgICBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgXAorICAgIHJ1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIFwKKyAgICBydW50
aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvQm9vbGVhbk9iamVjdC5j
cHAgXAorICAgIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvQ2Fs
bERhdGEuY3BwIFwKKyAgICBydW50aW1lL0NvZGVDYWNoZS5jcHAgXAorICAgIHJ1bnRpbWUvQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgXAorICAgIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
Y3BwIFwKKyAgICBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgXAorICAgIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAgXAorICAgIHJ1bnRpbWUvQ29tcGlsYXRpb25SZXN1
bHQuY3BwIFwKKyAgICBydW50aW1lL0NvbXBsZXRpb24uY3BwIFwKKyAgICBydW50aW1lL0NvbnN0
cnVjdERhdGEuY3BwIFwKKyAgICBydW50aW1lL0RhdGFWaWV3LmNwcCBcCisgICAgcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50aW1lL0RhdGVDb252ZXJzaW9uLmNwcCBcCisg
ICAgcnVudGltZS9EYXRlSW5zdGFuY2UuY3BwIFwKKyAgICBydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwIFwKKyAgICBydW50aW1lL0R1bXBDb250ZXh0LmNwcCBcCisgICAgcnVudGltZS9FcnJvci5j
cHAgXAorICAgIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvRXJy
b3JJbnN0YW5jZS5jcHAgXAorICAgIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwIFwKKyAgICBy
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIFwKKyAgICBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
IFwKKyAgICBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZUR1bXAuY3BwIFwKKyAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcCBcCisgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKyAgICBydW50aW1l
L0dldHRlclNldHRlci5jcHAgXAorICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAgXAorICAgIHJ1
bnRpbWUvSW5kZXhpbmdUeXBlLmNwcCBcCisgICAgcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcCBcCisgICAgcnVudGltZS9JbnRlbmRlZFN0cnVjdHVyZUNoYWluLmNwcCBcCisgICAgcnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCisgICAgcnVudGltZS9KU0FQSVZhbHVlV3JhcHBl
ci5jcHAgXAorICAgIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBcCisgICAgcnVudGltZS9KU0Fy
cmF5LmNwcCBcCisgICAgcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcCBcCisgICAgcnVudGltZS9K
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBcCisgICAg
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIFwKKyAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
IFwKKyAgICBydW50aW1lL0pTQ2VsbC5jcHAgXAorICAgIHJ1bnRpbWUvSlNEYXRhVmlldy5jcHAg
XAorICAgIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNE
YXRlTWF0aC5jcHAgXAorICAgIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHAgXAorICAgIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIFwKKyAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcCBcCisgICAgcnVudGltZS9KU0xvY2suY3BwIFwKKyAgICBydW50aW1lL0pTTWFwLmNwcCBc
CisgICAgcnVudGltZS9KU05hbWVTY29wZS5jcHAgXAorICAgIHJ1bnRpbWUvSlNOYW1lU2NvcGUu
Y3BwIFwKKyAgICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwIFwKKyAgICBydW50aW1lL0pTT05P
YmplY3QuY3BwIFwKKyAgICBydW50aW1lL0pTT2JqZWN0LmNwcCBcCisgICAgcnVudGltZS9KU1By
b21pc2UuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvbWlzZUNhbGxiYWNrLmNwcCBcCisgICAgcnVu
dGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQcm9taXNlUHJv
dG90eXBlLmNwcCBcCisgICAgcnVudGltZS9KU1Byb21pc2VSZXNvbHZlci5jcHAgXAorICAgIHJ1
bnRpbWUvSlNQcm9taXNlUmVzb2x2ZXJDb25zdHJ1Y3Rvci5jcHAgXAorICAgIHJ1bnRpbWUvSlNQ
cm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwIFwKKyAgICBydW50aW1lL0pTUHJveHkuY3BwIFwKKyAgICBydW50aW1lL0pT
U2V0LmNwcCBcCisgICAgcnVudGltZS9KU1Njb3BlLmNwcCBcCisgICAgcnVudGltZS9KU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCBcCisgICAgcnVudGltZS9KU1N0cmluZy5jcHAgXAorICAg
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwIFwKKyAgICBydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuY3BwIFwKKyAgICBydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAgXAor
ICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5UHJvdG90eXBlcy5jcHAgXAorICAgIHJ1bnRpbWUvSlNU
eXBlZEFycmF5cy5jcHAgXAorICAgIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5jcHAgXAorICAg
IHJ1bnRpbWUvSlNXZWFrTWFwLmNwcCBcCisgICAgcnVudGltZS9KU1dpdGhTY29wZS5jcHAgXAor
ICAgIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcCBcCisgICAgcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcCBcCisgICAgcnVudGltZS9Mb29rdXAuY3BwIFwKKyAgICBydW50aW1lL01hcENvbnN0
cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9NYXBEYXRhLmNwcCBcCisgICAgcnVudGltZS9NYXBQ
cm90b3R5cGUuY3BwIFwKKyAgICBydW50aW1lL01hdGhPYmplY3QuY3BwIFwKKyAgICBydW50aW1l
L01lbW9yeVN0YXRpc3RpY3MuY3BwIFwKKyAgICBydW50aW1lL05hbWVDb25zdHJ1Y3Rvci5jcHAg
XAorICAgIHJ1bnRpbWUvTmFtZUluc3RhbmNlLmNwcCBcCisgICAgcnVudGltZS9OYW1lUHJvdG90
eXBlLmNwcCBcCisgICAgcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBcCisgICAg
cnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAgXAorICAgIHJ1bnRpbWUvTnVtYmVyQ29u
c3RydWN0b3IuY3BwIFwKKyAgICBydW50aW1lL051bWJlck9iamVjdC5jcHAgXAorICAgIHJ1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAgXAorICAgIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9PcGVy
YXRpb25zLmNwcCBcCisgICAgcnVudGltZS9PcHRpb25zLmNwcCBcCisgICAgcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuY3BwIFwKKyAgICBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcCBc
CisgICAgcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwIFwKKyAgICBydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwIFwKKyAgICBydW50aW1lL1Byb3RvdHlwZU1hcC5jcHAgXAorICAgIHJ1bnRpbWUvUmVn
RXhwLmNwcCBcCisgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAgXAorICAgIHJ1bnRpbWUvUmVn
RXhwQ2FjaGVkUmVzdWx0LmNwcCBcCisgICAgcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAg
XAorICAgIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBcCisgICAgcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwIFwKKyAgICBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgXAorICAgIHJ1
bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCBcCisgICAgcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAgXAorICAgIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBcCisgICAgcnVudGltZS9TaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5jcHAgXAorICAgIHJ1bnRpbWUvU21hbGxTdHJpbmdzLmNwcCBc
CisgICAgcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBcCisgICAgcnVudGltZS9TdHJp
Y3RFdmFsQWN0aXZhdGlvbi5jcHAgXAorICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
IFwKKyAgICBydW50aW1lL1N0cmluZ09iamVjdC5jcHAgXAorICAgIHJ1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcCBcCisgICAgcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcCBcCisg
ICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKKyAgICBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cCBcCisgICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgXAorICAgIHJ1bnRpbWUvU3lt
Ym9sVGFibGUuY3BwIFwKKyAgICBydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAgXAorICAgIHJ1
bnRpbWUvVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIFwKKyAgICBydW50aW1lL1R5cGVkQXJyYXlU
eXBlLmNwcCBcCisgICAgcnVudGltZS9WTS5jcHAgXAorICAgIHJ1bnRpbWUvV2F0Y2hkb2cuY3Bw
IFwKKyAgICBydW50aW1lL1dhdGNoZG9nTm9uZS5jcHAgXAorICAgIHJ1bnRpbWUvV2Vha01hcENv
bnN0cnVjdG9yLmNwcCBcCisgICAgcnVudGltZS9XZWFrTWFwRGF0YS5jcHAgXAorICAgIHJ1bnRp
bWUvV2Vha01hcFByb3RvdHlwZS5jcHAgXAorICAgIHRvb2xzL0NvZGVQcm9maWxlLmNwcCBcCisg
ICAgdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAgXAorICAgIHlhcnIvWWFyckpJVC5jcHAgXAorCits
aW51eC0qOmlmKGlzRXF1YWwoUVRfQVJDSCwgImkzODYiKXxpc0VxdWFsKFFUX0FSQ0gsICJ4ODZf
NjQiKSkgeworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBkaXNhc3NlbWJsZXIvWDg2RGlzYXNz
ZW1ibGVyLmNwcCBcCisgICAgICAgIGRpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
IFwKKyAgICAgICAgZGlzYXNzZW1ibGVyL3VkaXM4Ni91ZGlzODYuYyBcCisgICAgICAgIGRpc2Fz
c2VtYmxlci91ZGlzODYvdWRpczg2X2RlY29kZS5jIFwKKyAgICAgICAgZGlzYXNzZW1ibGVyL3Vk
aXM4Ni91ZGlzODZfaW5wdXQuYyBcCisgICAgICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2
X2l0YWJfaG9sZGVyLmMgXAorICAgICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Nl9zeW4t
YXR0LmMgXAorICAgICAgICBkaXNhc3NlbWJsZXIvdWRpczg2L3VkaXM4Nl9zeW4taW50ZWwuYyBc
CisgICAgICAgIGRpc2Fzc2VtYmxlci91ZGlzODYvdWRpczg2X3N5bi5jIFwKK30KKword2luMzI6
IXdpbjMyLWcrKyo6aXNFcXVhbChRVF9BUkNILCAieDg2XzY0Iik6eworICAgIGFzbV9jb21waWxl
ci5jb21tYW5kcyA9IG1sNjQgL2MKKyAgICBhc21fY29tcGlsZXIuY29tbWFuZHMgKz0gIC9GbyAk
e1FNQUtFX0ZJTEVfT1VUfSAke1FNQUtFX0ZJTEVfSU59CisgICAgYXNtX2NvbXBpbGVyLm91dHB1
dCA9ICR7UU1BS0VfVkFSX09CSkVDVFNfRElSfSR7UU1BS0VfRklMRV9CQVNFfSQke2ZpcnN0KFFN
QUtFX0VYVF9PQkopfQorICAgIGFzbV9jb21waWxlci5pbnB1dCA9IEFTTV9TT1VSQ0VTCisgICAg
YXNtX2NvbXBpbGVyLnZhcmlhYmxlX291dCA9IE9CSkVDVFMKKyAgICBhc21fY29tcGlsZXIubmFt
ZSA9IGNvbXBpbGluZ1thc21dICR7UU1BS0VfRklMRV9JTn0KKyAgICBzaWxlbnQ6YXNtX2NvbXBp
bGVyLmNvbW1hbmRzID0gQGVjaG8gY29tcGlsaW5nW2FzbV0gJHtRTUFLRV9GSUxFX0lOfSAmJiAk
JGFzbV9jb21waWxlci5jb21tYW5kcworICAgIFFNQUtFX0VYVFJBX0NPTVBJTEVSUyArPSBhc21f
Y29tcGlsZXIKKworICAgIEFTTV9TT1VSQ0VTICs9IGppdC9KSVRTdHVic01TVkM2NC5hc20KK30K
KworYnVpbGQ/KHF0dGVzdHN1cHBvcnQpIHsKKyAgICBIRUFERVJTICs9IEFQSS9KU0NUZXN0UnVu
bmVyVXRpbHMuaAorICAgIFNPVVJDRVMgKz0gQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAKK30K
KworSEVBREVSUyArPSAkJGZpbGVzKCouaCwgdHJ1ZSkKKworKnNoNCogeworICAgIFFNQUtFX0NY
WEZMQUdTICs9IC1taWVlZSAtdworICAgIFFNQUtFX0NGTEFHUyAgICs9IC1taWVlZSAtdworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaAppbmRleCBmNzRhMmMxLi42MzBhOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApA
QCAtMzQsNiArMzQsMTUgQEAKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAKKworI2lmIFBMQVRG
T1JNKFFUKQorI2RlZmluZSBFTkFCTEVfSklUX0NPTlNUQU5UX0JMSU5ESU5HIDAKKyNlbmRpZgor
CisjaWZuZGVmIEVOQUJMRV9KSVRfQ09OU1RBTlRfQkxJTkRJTkcKKyNkZWZpbmUgRU5BQkxFX0pJ
VF9DT05TVEFOVF9CTElORElORyAxCisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGlubGlu
ZSBib29sIGlzQVJNdjdzKCkKQEAgLTIyMCw3ICsyMjksMTIgQEAgcHVibGljOgogICAgICAgICBj
b25zdCB2b2lkKiBtX3ZhbHVlOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0
ZSBUcnVzdGVkSW1tUHRyCisgICAgc3RydWN0IEltbVB0ciA6IAorI2lmIEVOQUJMRShKSVRfQ09O
U1RBTlRfQkxJTkRJTkcpCisgICAgICAgIHByaXZhdGUgVHJ1c3RlZEltbVB0ciAKKyNlbHNlCisg
ICAgICAgIHB1YmxpYyBUcnVzdGVkSW1tUHRyCisjZW5kaWYKICAgICB7CiAgICAgICAgIGV4cGxp
Y2l0IEltbVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIDogVHJ1c3RlZEltbVB0
cih2YWx1ZSkKQEAgLTI1NSw3ICsyNjksMTMgQEAgcHVibGljOgogICAgIH07CiAKIAotICAgIHN0
cnVjdCBJbW0zMiA6IHByaXZhdGUgVHJ1c3RlZEltbTMyIHsKKyAgICBzdHJ1Y3QgSW1tMzIgOiAK
KyNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQorICAgICAgICBwcml2YXRlIFRydXN0
ZWRJbW0zMiAKKyNlbHNlCisgICAgICAgIHB1YmxpYyBUcnVzdGVkSW1tMzIKKyNlbmRpZgorICAg
IHsKICAgICAgICAgZXhwbGljaXQgSW1tMzIoaW50MzJfdCB2YWx1ZSkKICAgICAgICAgICAgIDog
VHJ1c3RlZEltbTMyKHZhbHVlKQogICAgICAgICB7CkBAIC0yOTQsNyArMzE0LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgaW50NjRfdCBtX3ZhbHVlOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgSW1tNjQg
OiBwcml2YXRlIFRydXN0ZWRJbW02NAorICAgIHN0cnVjdCBJbW02NCA6IAorI2lmIEVOQUJMRShK
SVRfQ09OU1RBTlRfQkxJTkRJTkcpCisgICAgICAgIHByaXZhdGUgVHJ1c3RlZEltbTY0IAorI2Vs
c2UKKyAgICAgICAgcHVibGljIFRydXN0ZWRJbW02NAorI2VuZGlmCiAgICAgewogICAgICAgICBl
eHBsaWNpdCBJbW02NChpbnQ2NF90IHZhbHVlKQogICAgICAgICAgICAgOiBUcnVzdGVkSW1tNjQo
dmFsdWUpCkBAIC03NjksOSArNzk0LDExIEBAIHByb3RlY3RlZDoKICAgICBWZWN0b3I8UmVnaXN0
ZXJBbGxvY2F0aW9uT2Zmc2V0LCAxMD4gbV9yZWdpc3RlckFsbG9jYXRpb25Gb3JPZmZzZXRzOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIHN0YXRpYyBi
b29sIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICBz
dGF0aWMgYm9vbCBzaG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIHNob3VsZEJsaW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQ2
NF90KSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVm
ZmVyOwogICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IGQwNWVkZWIuLmFhNmRk
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
QmFzZTo6anVtcDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmJyYW5jaDMyOwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6bW92ZTsKKworI2lmIEVOQUJMRShKSVRfQ09OU1RB
TlRfQkxJTkRJTkcpCiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjphZGQzMjsKICAgICB1
c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OmFuZDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVy
QmFzZTo6YnJhbmNoQWRkMzI7CkBAIC04Myw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBN
YWNyb0Fzc2VtYmxlckJhc2U6OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6
dXJzaGlmdDMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6eG9yMzI7CisjZW5kaWYK
IAogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdHdvVG9UaGUzMjsgLy8gVGhpcyBpcyBzdXBlciB1
c2VmdWwgZm9yIHNvbWUgZG91YmxlIGNvZGUuCiAKQEAgLTg2Myw2ICs4NjYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBicmFuY2hTdWI2NChjb25kLCBzcmMxLCBzcmMyLCBkZXN0KTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyQmFzZTo6YW5kNjQ7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJCYXNlOjpjb252
ZXJ0SW50MzJUb0RvdWJsZTsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6OnN0b3JlNjQ7
CkBAIC0xMDgyLDggKzEwODYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmU2NChpbW0u
YXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCisjZW5kaWYgLy8gRU5BQkxFKEpJVF9D
T05TVEFOVF9CTElORElORykKKwogI2VuZGlmIC8vICFDUFUoWDg2XzY0KQogCisjaWYgRU5BQkxF
KEpJVF9DT05TVEFOVF9CTElORElORykKICAgICBib29sIHNob3VsZEJsaW5kKEltbTMyIGltbSkK
ICAgICB7CiAjaWYgRU5BQkxFKEZPUkNFRF9KSVRfQkxJTkRJTkcpCkBAIC0xNDQ1LDYgKzE0NTIs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB1cnNoaWZ0MzIoc3JjLCB0cnVzdGVkSW1tMzJG
b3JTaGlmdChhbW91bnQpLCBkZXN0KTsKICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DT05T
VEFOVF9CTElORElORykKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCAz
NWQ1NzMyLi4zOWIwNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtNzc1LDYgKzc3NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBzcmMxLCBzcmMyKTsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoSklUX0NPTlNUQU5UX0JMSU5ESU5HKQogICAgIHN0YXRpYyBib29sIHNob3VsZEJs
aW5kRm9yU3BlY2lmaWNBcmNoKHVpbnQzMl90IHZhbHVlKQogICAgIHsKICAgICAgICAgQVJNVGh1
bWJJbW1lZGlhdGUgaW1tZWRpYXRlID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1t
KHZhbHVlKTsKQEAgLTc5Miw2ICs3OTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGJlIGNvbnRy
b2xsZWQgYnkgYW4gYXR0YWNrZXIuCiAgICAgICAgIHJldHVybiAhaW1tZWRpYXRlLmlzVUludDEy
KCk7CiAgICAgfQorI2VuZGlmCiAKICAgICAvLyBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zOgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggNDYzNzlkZC4uMmYzM2ViZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaApAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVy
SUQgc3RhY2tQb2ludGVyUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVzcDsKICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBmcmFtZVBvaW50ZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJw
OwogCisjaWYgRU5BQkxFKEpJVF9DT05TVEFOVF9CTElORElORykKICAgICBzdGF0aWMgYm9vbCBz
aG91bGRCbGluZEZvclNwZWNpZmljQXJjaCh1aW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUg
Pj0gMHgwMGZmZmZmZjsgfQogI2lmIENQVShYODZfNjQpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
QmxpbmRGb3JTcGVjaWZpY0FyY2godWludDY0X3QgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID49IDB4
MDBmZmZmZmY7IH0KQEAgLTEwNSw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkQmxpbmRGb3JTcGVjaWZpY0FyY2godWludHB0cl90IHZhbHVlKSB7IHJldHVybiB2YWx1
ZSA+PSAweDAwZmZmZmZmOyB9CiAjZW5kaWYKICNlbmRpZgorI2VuZGlmCiAKICAgICAvLyBJbnRl
Z2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uczoKICAgICAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3BlcmFuZHMuaAppbmRleCA4MWQyZGE0Li43N2Q3NjAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaApAQCAtMTU2LDEwICsxNTYsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHNpemVfdD4oVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSkgPCBudW1iZXJPZkxv
Y2FscygpOwogICAgIH0KLSAgICBib29sIGhhc09wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIHJlZykg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBoYXNPcGVyYW5kKHJlZy5vZmZzZXQoKSk7Ci0g
ICAgfQogICAgIAogICAgIHZvaWQgc2V0T3BlcmFuZChpbnQgb3BlcmFuZCwgY29uc3QgVCYgdmFs
dWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAyMTI1YzRmLi5jOTYzMmViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMzg3LDcgKzM4Nyw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keSwgVW5sCiAg
ICAgaWYgKGlzQ29uc3RydWN0b3IoKSkgewogICAgICAgICBlbWl0Q3JlYXRlVGhpcygmbV90aGlz
UmVnaXN0ZXIpOwogICAgIH0gZWxzZSBpZiAoZnVuY3Rpb25Cb2R5LT51c2VzVGhpcygpIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSB7Ci0gICAgICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CiAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoMCk7CkBAIC0xNDM1LDcgKzE0MzQsNiBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENyZWF0ZVRoaXMoUmVnaXN0ZXJJRCogZHN0KQogewogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gbmV3VGVtcG9yYXJ5KCk7IAogCi0gICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICAgICBlbWl0T3Bjb2RlKG9wX2dldF9jYWxsZWUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChmdW5jLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggNzQxMDIxNi4uZTg1ZmVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTcyNiwyNiArMTcyNiw5IEBAIHZvaWQg
Rm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChtX2xleHByLT5pc0Rl
Y29uc3RydWN0aW9uTm9kZSgpKTsKICAgICAgICAgRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9k
ZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUq
PihtX2xleHByKTsKLSAgICAgICAgYXV0byBiaW5kaW5nID0gYXNzaWduTm9kZS0+YmluZGluZ3Mo
KTsKLSAgICAgICAgaWYgKGJpbmRpbmctPmlzQmluZGluZ05vZGUoKSkgewotICAgICAgICAgICAg
YXV0byBzaW1wbGVCaW5kaW5nID0gc3RhdGljX2Nhc3Q8QmluZGluZ05vZGUqPihiaW5kaW5nKTsK
LSAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBzaW1wbGVCaW5kaW5nLT5ib3VuZFByb3Bl
cnR5KCk7Ci0gICAgICAgICAgICBMb2NhbCBsb2NhbCA9IGdlbmVyYXRvci5sb2NhbChpZGVudCk7
Ci0gICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBsb2NhbC5nZXQoKTsKLSAgICAgICAgICAgIGlm
ICghcHJvcGVydHlOYW1lKQotICAgICAgICAgICAgICAgIGdvdG8gZ2VuZXJpY0JpbmRpbmc7Ci0g
ICAgICAgICAgICBleHBlY3RlZFN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
cHVzaE9wdGltaXNlZEZvckluKGV4cGVjdGVkU3Vic2NyaXB0LmdldCgpLCBpdGVyLmdldCgpLCBp
LmdldCgpLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgb3B0aW1pemVkRm9yaW5BY2Nlc3Mg
PSB0cnVlOwotICAgICAgICAgICAgZ290byBjb21wbGV0ZWRTaW1wbGVCaW5kaW5nOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICBnZW5lcmljQmluZGluZzoKLSAgICAgICAgICAgIHByb3BlcnR5
TmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm90ZWN0KHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBhc3NpZ25Ob2RlLT5i
aW5kaW5ncygpLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICB9Ci0gICAgICAgIGNvbXBsZXRlZFNpbXBsZUJpbmRpbmc6Ci0gICAgICAgIDsKKyAgICAgICAg
cHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvdGVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICBhc3NpZ25Ob2RlLT5i
aW5kaW5ncygpLT5lbWl0Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBwcm9wZXJ0eU5hbWUpOwogICAgIH0K
IAogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAppbmRleCBiZTNmOTQzLi5jYmNlYThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCkBAIC0zMiw3ICsz
Miw2IEBACiAKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJERkdVc2VLaW5k
LmgiCi0jaW5jbHVkZSAiRGF0YUZvcm1hdC5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKQEAgLTg5LDI4ICs4OCw2IEBAIGlubGluZSBV
c2VLaW5kIHVzZUtpbmRGb3IoRmx1c2hGb3JtYXQgZm9ybWF0KQogICAgIHJldHVybiBVbnR5cGVk
VXNlOwogfQogCi1pbmxpbmUgRGF0YUZvcm1hdCBkYXRhRm9ybWF0Rm9yKEZsdXNoRm9ybWF0IGZv
cm1hdCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgRGVhZEZsdXNoOgotICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdERlYWQ7Ci0gICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAg
ICAgICAgcmV0dXJuIERhdGFGb3JtYXRKUzsKLSAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAg
ICAgIHJldHVybiBEYXRhRm9ybWF0RG91YmxlOwotICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdEludDMyOwotICAgIGNhc2UgRmx1c2hlZEludDUyOgotICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdEludDUyOwotICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAg
ICAgIHJldHVybiBEYXRhRm9ybWF0Q2VsbDsKLSAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAg
ICAgICByZXR1cm4gRGF0YUZvcm1hdEJvb2xlYW47Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFGb3JtYXREZWFkOwotfQotCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZElELmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01pbmlmaWVkSUQuaAppbmRleCAyNGVhMjU2Li4zNjk2NTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkSUQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkSUQuaApAQCAtNjYsMjEgKzY2LDIwIEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZCA9PSBvdGhlckludmFsaWRJRCgpOyB9CiAgICAgCitwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBNaW5pZmllZE5vZGU7CisgICAgZnJpZW5kIGNsYXNzIFZhbHVlU291cmNlOwor
ICAgIAorICAgIHN0YXRpYyB1aW50cHRyX3QgaW52YWxpZElEKCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludHB0cl90PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEpKTsgfQorICAgIHN0YXRpYyB1
aW50cHRyX3Qgb3RoZXJJbnZhbGlkSUQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KHN0YXRpY19jYXN0PGludHB0cl90PigtMikpOyB9CisgICAgCiAgICAgc3RhdGljIE1pbmlmaWVk
SUQgZnJvbUJpdHModWludHB0cl90IHZhbHVlKQogICAgIHsKICAgICAgICAgTWluaWZpZWRJRCBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2lkID0gdmFsdWU7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQotICAgIAotICAgIHVpbnRwdHJfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBNaW5pZmllZE5vZGU7Ci0gICAgCi0g
ICAgc3RhdGljIHVpbnRwdHJfdCBpbnZhbGlkSUQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpOyB9Ci0gICAgc3RhdGljIHVpbnRwdHJf
dCBvdGhlckludmFsaWRJRCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KC0yKSk7IH0KLSAgICAKICAgICB1aW50cHRyX3QgbV9pZDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggZjdlOTE4OS4uZWQ4ZTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQ2LDYgKzQ2LDggQEAgU3BlY3VsYXRpdmVKSVQ6OlNw
ZWN1bGF0aXZlSklUKEpJVENvbXBpbGVyJiBqaXQpCiAgICAgLCBtX2N1cnJlbnROb2RlKDApCiAg
ICAgLCBtX2luZGV4SW5CbG9jaygwKQogICAgICwgbV9nZW5lcmF0aW9uSW5mbyhtX2ppdC5jb2Rl
QmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpCisgICAgLCBtX2FyZ3VtZW50cyhqaXQuY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkKKyAgICAsIG1fdmFyaWFibGVzKGppdC5ncmFwaCgp
Lm1fbG9jYWxWYXJzKQogICAgICwgbV9sYXN0U2V0T3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoKSkK
ICAgICAsIG1fc3RhdGUobV9qaXQuZ3JhcGgoKSkKICAgICAsIG1faW50ZXJwcmV0ZXIobV9qaXQu
Z3JhcGgoKSwgbV9zdGF0ZSkKQEAgLTE1MjAsNyArMTUyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVNb3ZIaW50KE5vZGUqIG5vZGUpCiAgICAgaWYgKGNoaWxkLT5vcCgpID09IFVJ
bnQzMlRvTnVtYmVyKQogICAgICAgICBub3RpY2VPU1JCaXJ0aChjaGlsZC0+Y2hpbGQxKCkubm9k
ZSgpKTsKICAgICAKLSAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6Om1v
dkhpbnQoTWluaWZpZWRJRChjaGlsZCksIG5vZGUtPmxvY2FsKCkpKTsKKyAgICBtX3N0cmVhbS0+
YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6Om1vdkhpbnQoTWluaWZpZWRJRChjaGlsZCksIG5v
ZGUtPmxvY2FsKCkub2Zmc2V0KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1vdkhpbnRBbmRDaGVjayhOb2RlKiBub2RlKQpAQCAtMTUzNSwxMSArMTUzNyw0OCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5saW5lU3RhcnQoTm9kZSogbm9kZSkKICAgICBJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lOwogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKTsKICAgICB1bnNpZ25lZCBhcmd1bWVudFBvc2l0aW9uU3Rh
cnQgPSBub2RlLT5hcmd1bWVudFBvc2l0aW9uU3RhcnQoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFt
ZSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsg
KytpKSB7Ci0gICAgICAgIFZhbHVlU291cmNlIHNvdXJjZSA9IFZhbHVlU291cmNlOjpmb3JGbHVz
aEZvcm1hdCgKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpLAotICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50UG9zaXRp
b25TdGFydCArIGldLmZsdXNoRm9ybWF0KCkpOwotICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50c1tpXSA9IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgIFZhbHVlU291cmNl
IHZhbHVlU291cmNlOworICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0NhcHR1cmVkKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpKSkKKyAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVT
b3VyY2UoVmFsdWVJbkpTU3RhY2spOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFyZ3Vt
ZW50UG9zaXRpb24mIGFyZ3VtZW50UG9zaXRpb24gPQorICAgICAgICAgICAgICAgIG1faml0Lmdy
YXBoKCkubV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVudFBvc2l0aW9uU3RhcnQgKyBpXTsKKyAg
ICAgICAgICAgIHN3aXRjaCAoYXJndW1lbnRQb3NpdGlvbi5mbHVzaEZvcm1hdCgpKSB7CisgICAg
ICAgICAgICBjYXNlIERlYWRGbHVzaDoKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6
CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFj
ayk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWREb3Vi
bGU6CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShEb3VibGVJbkpT
U3RhY2spOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVk
SW50MzI6CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQzMklu
SlNTdGFjayk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNo
ZWRJbnQ1MjoKKyAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEludDUy
SW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1
c2hlZENlbGw6CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShDZWxs
SW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1
c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShC
b29sZWFuSW5KU1N0YWNrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5ID0gY29tcHV0ZVZhbHVl
UmVjb3ZlcnlGb3IoCisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCksIHZhbHVlU291cmNlKTsKKyAg
ICAgICAgLy8gVGhlIHJlY292ZXJ5IHNob3VsZCByZWZlciBlaXRoZXIgdG8gc29tZXRoaW5nIHRo
YXQgaGFzIGFscmVhZHkgYmVlbgorICAgICAgICAvLyBzdG9yZWQgaW50byB0aGUgc3RhY2sgYXQg
dGhlIHJpZ2h0IHBsYWNlLCBvciB0byBhIGNvbnN0YW50LAorICAgICAgICAvLyBzaW5jZSB0aGUg
QXJndW1lbnRzIGNvZGUgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGhhbmRsZSBhbnl0aGluZyBlbHNl
LgorICAgICAgICAvLyBUaGUgZXhjZXB0aW9uIGlzIHRoZSB0aGlzIGFyZ3VtZW50LCB3aGljaCB3
ZSBkb24ndCByZWFsbHkgbmVlZCB0byBiZQorICAgICAgICAvLyBhYmxlIHRvIHJlY292ZXIuCisj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQorICAgICAgICBkYXRhTG9nRigiXG5SZWNvdmVy
eSBmb3IgYXJndW1lbnQgJWQ6ICIsIGkpOworICAgICAgICByZWNvdmVyeS5kdW1wKFdURjo6ZGF0
YUZpbGUoKSk7CisjZW5kaWYKKyAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbaV0g
PSByZWNvdmVyeTsKICAgICB9CiB9CiAKQEAgLTE1ODAsMzAgKzE2MTksMzEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAgICAgCiAgICAgbV9qaXQuaml0QXNz
ZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9i
bG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAg
ICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKAotICAgICAgICAgICAgVmFyaWFibGVFdmVudDo6c2V0
TG9jYWwoCi0gICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSksIHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCBEYXRhRm9ybWF0SlMpKTsKKyAgICBBU1NFUlQo
bV9hcmd1bWVudHMuc2l6ZSgpID09IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIFZhbHVlU291cmNlIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2Uo
VmFsdWVJbkpTU3RhY2spOworICAgICAgICBtX2FyZ3VtZW50c1tpXSA9IHZhbHVlU291cmNlOwor
ICAgICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNldExvY2FsKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpLCB2YWx1ZVNvdXJjZS5kYXRhRm9ybWF0KCkpKTsK
ICAgICB9CiAgICAgCiAgICAgbV9zdGF0ZS5yZXNldCgpOwogICAgIG1fc3RhdGUuYmVnaW5CYXNp
Y0Jsb2NrKG1fYmxvY2spOwogICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
ay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgIEFTU0VSVCht
X3ZhcmlhYmxlcy5zaXplKCkgPT0gbV9ibG9jay0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPnZhcmlhYmxlc0F0SGVhZC5sb2Nh
bChpKTsKKyAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CiAgICAgICAgIGlmICghbm9k
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBObyBuZWVkIHRvIHJlY29yZCBkZWFkIFNldExv
Y2FsJ3MuCi0gICAgICAgIAotICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0g
bm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgIERhdGFGb3JtYXQgZm9ybWF0Owot
ICAgICAgICBpZiAodmFyaWFibGUtPmlzQXJndW1lbnRzQWxpYXMoKSkKLSAgICAgICAgICAgIGZv
cm1hdCA9IERhdGFGb3JtYXRBcmd1bWVudHM7CisgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZh
bHVlU291cmNlKFNvdXJjZUlzRGVhZCk7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5pc0FyZ3VtZW50c0FsaWFzKCkpCisgICAgICAgICAgICB2YWx1ZVNvdXJj
ZSA9IFZhbHVlU291cmNlKEFyZ3VtZW50c1NvdXJjZSk7CiAgICAgICAgIGVsc2UgaWYgKCFub2Rl
LT5yZWZDb3VudCgpKQotICAgICAgICAgICAgY29udGludWU7IC8vIE5vIG5lZWQgdG8gcmVjb3Jk
IGRlYWQgU2V0TG9jYWwncy4KKyAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2Uo
U291cmNlSXNEZWFkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9ybWF0ID0gZGF0YUZv
cm1hdEZvcih2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSk7Ci0gICAgICAgIG1fc3RyZWFtLT5hcHBl
bmRBbmRMb2coCi0gICAgICAgICAgICBWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbCh2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpKSwgdmFyaWFibGUtPmxvY2FsKCksIGZvcm1hdCkpOworICAgICAgICAg
ICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZTo6Zm9yRmx1c2hGb3JtYXQobm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpOworICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9
IHZhbHVlU291cmNlOworICAgICAgICAvLyBGSVhNRTogRG9uJ3QgZW1pdCBTZXRMb2NhbChEZWFk
KS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODAxOQorICAgICAg
ICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnNldExvY2FsKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGkpLCB2YWx1ZVNvdXJjZS5kYXRhRm9ybWF0KCkpKTsKICAgICB9CiAg
ICAgCiAgICAgbV9sYXN0U2V0T3BlcmFuZCA9IFZpcnR1YWxSZWdpc3RlcigpOwpAQCAtMTY1Myw3
ICsxNjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6IHsKICAgICAgICAg
ICAgICAgICBtX2xhc3RTZXRPcGVyYW5kID0gbV9jdXJyZW50Tm9kZS0+bG9jYWwoKTsKLSAgICAg
ICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0RGVhZCk7CisgICAgICAgICAgICAg
ICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbChtX2N1cnJl
bnROb2RlLT5sb2NhbCgpLCBEYXRhRm9ybWF0RGVhZCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogCkBAIC0xNzQ4LDYgKzE3ODgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKCkKICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0
ID0gQ29kZU9yaWdpbigwKTsKICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSA9IENvZGVP
cmlnaW4oMCk7CiAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLnNpemUo
KTsgKytpKQorICAgICAgICBtX2FyZ3VtZW50c1tpXSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0
YWNrKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKytp
KQorICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsK
KyAgICAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7ICsraSkgewogICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2Fy
Z3VtZW50c1tpXTsKICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwpA
QCAtMTg1Myw2ICsxODk4LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVz
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9v
c3JFbnRyeUhlYWRzLnNpemUoKSk7CiB9CiAKK1ZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6
OmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGludCBvcGVyYW5kLCBjb25zdCBWYWx1ZVNvdXJjZSYg
dmFsdWVTb3VyY2UpCit7CisgICAgaWYgKHZhbHVlU291cmNlLmlzSW5KU1N0YWNrKCkpCisgICAg
ICAgIHJldHVybiB2YWx1ZVNvdXJjZS52YWx1ZVJlY292ZXJ5KG9wZXJhbmQpOworICAgICAgICAK
KyAgICBBU1NFUlQodmFsdWVTb3VyY2Uua2luZCgpID09IEhhdmVOb2RlKTsKKyAgICBOb2RlKiBu
b2RlID0gdmFsdWVTb3VyY2UuaWQoKS5ub2RlKG1faml0LmdyYXBoKCkpOworICAgIGlmIChpc0Nv
bnN0YW50KG5vZGUpKQorICAgICAgICByZXR1cm4gVmFsdWVSZWNvdmVyeTo6Y29uc3RhbnQodmFs
dWVPZkpTQ29uc3RhbnQobm9kZSkpOworICAgIAorICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5KCk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbChOb2RlKiBu
b2RlLCBTcGVjdWxhdGVDZWxsT3BlcmFuZCYgYmFzZSwgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVy
YW5kJiBwcm9wZXJ0eSkKIHsKICAgICBFZGdlIGNoaWxkMyA9IG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMik7CkBAIC0zMDg2LDggKzMxNDQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9qaXQubW92
ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIo
SW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICB9IGVsc2UgeworI2lmIEVO
QUJMRShKSVRfQ09OU1RBTlRfQkxJTkRJTkcpCiAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92
ZXJmbG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCksIHNjcmF0Y2guZ3By
KCkpKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJm
bG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkpKTsKKyNlbmRpZgogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4
IGExZmRjZjcuLjI2NGU4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKQEAgLTIxODUsMTYgKzIxODUsNDEgQEAgcHVibGljOgogICAgIC8vIGZs
YWcgaXMgY2xlYXJlZCwgaW5kaWNhdGluZyBubyBmdXJ0aGVyIGNvZGUgZ2VuZXJhdGlvbiBzaG91
bGQgdGFrZSBwbGFjZS4KICAgICBib29sIG1fY29tcGlsZU9rYXk7CiAgICAgCi0gICAgdm9pZCBy
ZWNvcmRTZXRMb2NhbCgKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGJ5dGVjb2RlUmVnLCBWaXJ0
dWFsUmVnaXN0ZXIgbWFjaGluZVJlZywgRGF0YUZvcm1hdCBmb3JtYXQpCisgICAgLy8gVHJhY2tp
bmcgZm9yIHdoaWNoIG5vZGVzIGFyZSBjdXJyZW50bHkgaG9sZGluZyB0aGUgdmFsdWVzIG9mIGFy
Z3VtZW50cyBhbmQgYnl0ZWNvZGUKKyAgICAvLyBvcGVyYW5kLWluZGV4ZWQgdmFyaWFibGVzLgor
ICAgIAorICAgIFZhbHVlU291cmNlIHZhbHVlU291cmNlRm9yT3BlcmFuZChWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZv
ck9wZXJhbmQob3BlcmFuZCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0Tm9kZUZvck9wZXJh
bmQoTm9kZSogbm9kZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAgeworICAgICAgICB2
YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQob3BlcmFuZCkgPSBWYWx1ZVNvdXJjZShNaW5p
ZmllZElEKG5vZGUpKTsKKyAgICB9CisgICAgCisgICAgLy8gQ2FsbCB0aGlzIHdpdGggY2FyZSwg
c2luY2UgaXQgYm90aCByZXR1cm5zIGEgcmVmZXJlbmNlIGludG8gYW4gYXJyYXkKKyAgICAvLyBh
bmQgcG90ZW50aWFsbHkgcmVzaXplcyB0aGUgYXJyYXkuIFNvIGl0IHdvdWxkIG5vdCBiZSByaWdo
dCB0byBjYWxsIHRoaXMKKyAgICAvLyB0d2ljZSBhbmQgdGhlbiBwZXJmb3JtIG9wZXJhbmRzIG9u
IGJvdGggcmVmZXJlbmNlcywgc2luY2UgdGhlIG9uZSBmcm9tCisgICAgLy8gdGhlIGZpcnN0IGNh
bGwgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KKyAgICBWYWx1ZVNvdXJjZSYgdmFsdWVTb3VyY2VS
ZWZlcmVuY2VGb3JPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKLSAgICAg
ICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbChieXRlY29k
ZVJlZywgbWFjaGluZVJlZywgZm9ybWF0KSk7CisgICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1l
bnQoKSkgeworICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gb3BlcmFuZC50b0FyZ3VtZW50KCk7
CisgICAgICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICB9CisK
KyAgICAgICAgaW50IGxvY2FsID0gb3BlcmFuZC50b0xvY2FsKCk7CisgICAgICAgIGlmICgodW5z
aWduZWQpbG9jYWwgPj0gbV92YXJpYWJsZXMuc2l6ZSgpKQorICAgICAgICAgICAgbV92YXJpYWJs
ZXMucmVzaXplKGxvY2FsICsgMSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbV92YXJpYWJs
ZXNbbG9jYWxdOwogICAgIH0KICAgICAKLSAgICB2b2lkIHJlY29yZFNldExvY2FsKERhdGFGb3Jt
YXQgZm9ybWF0KQorICAgIHZvaWQgcmVjb3JkU2V0TG9jYWwoVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQsIFZhbHVlU291cmNlIHZhbHVlU291cmNlKQogICAgIHsKLSAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSA9IG1fY3VycmVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwot
ICAgICAgICByZWNvcmRTZXRMb2NhbCh2YXJpYWJsZS0+bG9jYWwoKSwgdmFyaWFibGUtPmxvY2Fs
KCksIGZvcm1hdCk7CisgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChvcGVy
YW5kKSA9IHZhbHVlU291cmNlOworICAgICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlh
YmxlRXZlbnQ6OnNldExvY2FsKG9wZXJhbmQsIHZhbHVlU291cmNlLmRhdGFGb3JtYXQoKSkpOwog
ICAgIH0KIAogICAgIEdlbmVyYXRpb25JbmZvJiBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKQEAgLTIyNDAsNiArMjI2NSw4
IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFZlY3RvcjxCcmFuY2hSZWNvcmQsIDg+IG1fYnJhbmNo
ZXM7CiAKKyAgICBWZWN0b3I8VmFsdWVTb3VyY2UsIDA+IG1fYXJndW1lbnRzOworICAgIFZlY3Rv
cjxWYWx1ZVNvdXJjZSwgMD4gbV92YXJpYWJsZXM7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fbGFz
dFNldE9wZXJhbmQ7CiAgICAgQ29kZU9yaWdpbiBtX2NvZGVPcmlnaW5Gb3JFeGl0VGFyZ2V0Owog
ICAgIENvZGVPcmlnaW4gbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CkBAIC0yMjU0LDYgKzIy
ODEsMTMgQEAgcHVibGljOgogICAgIAogICAgIFZlY3RvcjxPd25QdHI8U2xvd1BhdGhHZW5lcmF0
b3I+LCA4PiBtX3Nsb3dQYXRoR2VuZXJhdG9yczsKICAgICBWZWN0b3I8U2lsZW50UmVnaXN0ZXJT
YXZlUGxhbj4gbV9wbGFuczsKKyAgICAKKyAgICBWYWx1ZVJlY292ZXJ5IGNvbXB1dGVWYWx1ZVJl
Y292ZXJ5Rm9yKGludCBvcGVyYW5kLCBjb25zdCBWYWx1ZVNvdXJjZSYpOworCisgICAgVmFsdWVS
ZWNvdmVyeSBjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihpbnQgb3BlcmFuZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjb21wdXRlVmFsdWVSZWNvdmVyeUZvcihvcGVyYW5kLCB2YWx1ZVNvdXJjZUZv
ck9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpKSk7CisgICAgfQogfTsKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAppbmRleCA2Nzc3NWRiLi4xMTk5ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIwMjYsNyArMjAyNiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIC8v
IEluZGljYXRlIHRoYXQgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIHJldHJpZXZlIHRoZSB2
YWx1ZSBvZgogICAgICAgICAgICAgLy8gdGhpcyBieXRlY29kZSB2YXJpYWJsZSBmcm9tIHJlZ2lz
dGVycyBvciBvdGhlciBsb2NhdGlvbnMgaW4gdGhlIHN0YWNrLAogICAgICAgICAgICAgLy8gYnV0
IHRoYXQgaXQgaXMgc3RvcmVkIGFzIGEgZG91YmxlLgotICAgICAgICAgICAgcmVjb3JkU2V0TG9j
YWwoRGF0YUZvcm1hdERvdWJsZSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5s
b2NhbCgpLCBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIwMzQsNyArMjAzNCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIFNwZWN1bGF0ZUlu
dDMyT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5sb2Nh
bCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKLSAgICAgICAgICAgIHJlY29yZFNl
dExvY2FsKERhdGFGb3JtYXRJbnQzMik7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2Rl
LT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjaykpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjA0Myw3ICsyMDQzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIGNl
bGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwg
SklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgbm9S
ZXN1bHQobm9kZSk7Ci0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0Q2VsbCk7
CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShD
ZWxsSW5KU1N0YWNrKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCkBAIC0yMDUxLDcgKzIwNTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLmdwcigp
LCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICBu
b1Jlc3VsdChub2RlKTsKLSAgICAgICAgICAgIHJlY29yZFNldExvY2FsKERhdGFGb3JtYXRCb29s
ZWFuKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291
cmNlKEJvb2xlYW5JbkpTU3RhY2spKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKQEAgLTIwNjAsNyArMjA2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwog
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQo
bm9kZSk7Ci0gICAgICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwoRGF0YUZvcm1hdERvdWJsZSk7
CisgICAgICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwgVmFsdWVTb3Vy
Y2UoRG91YmxlSW5KU1N0YWNrKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTIwNjgsNyArMjA2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUu
cGF5bG9hZEdQUigpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5sb2NhbCgpKSk7CiAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6dGFn
Rm9yKG5vZGUtPmxvY2FsKCkpKTsKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAg
ICAgICAgcmVjb3JkU2V0TG9jYWwoRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIHJlY29yZFNl
dExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHN0b3JpbmcgYW4gYXJndW1lbnRzIG9i
amVjdCB0aGF0IGhhcyBiZWVuIG9wdGltaXplZCBhd2F5LAogICAgICAgICAgICAgLy8gb3VyIHZh
cmlhYmxlIGV2ZW50IHN0cmVhbSBmb3IgT1NSIGV4aXQgbm93IHJlZmxlY3RzIHRoZSBvcHRpbWl6
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IGVhNzVhZTkuLjYzZmVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjMzMyw3ICsyMzMzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgLy8gSW5k
aWNhdGUgdGhhdCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gcmV0cmlldmUgdGhlIHZhbHVl
IG9mCiAgICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJz
IG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgc3RhY2ssCiAgICAgICAgICAgICAvLyBidXQgdGhh
dCBpdCBpcyBzdG9yZWQgYXMgYSBkb3VibGUuCi0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChE
YXRhRm9ybWF0RG91YmxlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2Fs
KCksIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjM0MSw3ICsyMzQxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkp
KTsKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgcmVjb3JkU2V0TG9j
YWwoRGF0YUZvcm1hdEludDMyKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxv
Y2FsKCksIFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVJbnQ1
Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgbV9qaXQu
c3RvcmU2NCh2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwo
KSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7Ci0gICAgICAgICAgICByZWNvcmRTZXRM
b2NhbChEYXRhRm9ybWF0SW50NTIpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+
bG9jYWwoKSwgVmFsdWVTb3VyY2UoSW50NTJJbkpTU3RhY2spKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIzNTgsNyArMjM1OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBjZWxs
R1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoY2VsbEdQUiwgSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1
bHQobm9kZSk7Ci0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0Q2VsbCk7Cisg
ICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShDZWxs
SW5KU1N0YWNrKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAg
CkBAIC0yMzY2LDcgKzIzNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCBib29sZWFuKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoYm9vbGVhbi5ncHIo
KSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkpOwogICAgICAgICAgICAg
bm9SZXN1bHQobm9kZSk7Ci0gICAgICAgICAgICByZWNvcmRTZXRMb2NhbChEYXRhRm9ybWF0Qm9v
bGVhbik7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNv
dXJjZShCb29sZWFuSW5KU1N0YWNrKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yMzc1LDcgKzIzNzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigp
LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICBu
b1Jlc3VsdChub2RlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwo
RGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCks
IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIElmIHdlJ3JlIHN0b3JpbmcgYW4gYXJndW1lbnRzIG9iamVjdCB0aGF0IGhhcyBiZWVuIG9w
dGltaXplZCBhd2F5LAogICAgICAgICAgICAgLy8gb3VyIHZhcmlhYmxlIGV2ZW50IHN0cmVhbSBm
b3IgT1NSIGV4aXQgbm93IHJlZmxlY3RzIHRoZSBvcHRpbWl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAKaW5kZXggNTFjZjc4OC4uZWY3MDJlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5jcHAKQEAgLTQwLDIy
ICs0MCwyMiBAQCB2b2lkIFZhbHVlU291cmNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiAgICAgICAgIG91dC5wcmludCgiSXNEZWFkIik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
VmFsdWVJbkpTU3RhY2s6Ci0gICAgICAgIG91dC5wcmludCgiSlM6ciIsIHZpcnR1YWxSZWdpc3Rl
cigpKTsKKyAgICAgICAgb3V0LnByaW50KCJJblN0YWNrIik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSW50MzJJbkpTU3RhY2s6Ci0gICAgICAgIG91dC5wcmludCgiSW50MzI6ciIsIHZpcnR1
YWxSZWdpc3RlcigpKTsKKyAgICAgICAgb3V0LnByaW50KCJJbnQzMiIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEludDUySW5KU1N0YWNrOgotICAgICAgICBvdXQucHJpbnQoIkludDUyOnIi
LCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgIG91dC5wcmludCgiSW50NTIiKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDZWxsSW5KU1N0YWNrOgotICAgICAgICBvdXQucHJpbnQoIkNl
bGw6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgb3V0LnByaW50KCJDZWxsIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQm9vbGVhbkluSlNTdGFjazoKLSAgICAgICAgb3V0LnBy
aW50KCJCb29sOnIiLCB2aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgIG91dC5wcmludCgiQm9v
bCIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvdWJsZUluSlNTdGFjazoKLSAgICAgICAg
b3V0LnByaW50KCJEb3VibGU6ciIsIHZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgb3V0LnBy
aW50KCJEb3VibGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcmd1bWVudHNTb3VyY2U6
CiAgICAgICAgIG91dC5wcmludCgiQXJndW1lbnRzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbHVlU291cmNlLmgKaW5kZXggNzk2YzRkNi4uYTdmZDlkZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaApAQCAtMTE1LDY3ICsxMTUsNTkgQEAg
c3RhdGljIGlubGluZSBib29sIGlzVHJpdmlhbGx5UmVjb3ZlcmFibGUoVmFsdWVTb3VyY2VLaW5k
IGtpbmQpCiBjbGFzcyBWYWx1ZVNvdXJjZSB7CiBwdWJsaWM6CiAgICAgVmFsdWVTb3VyY2UoKQot
ICAgICAgICA6IG1fa2luZChTb3VyY2VOb3RTZXQpCisgICAgICAgIDogbV92YWx1ZShpZEZyb21L
aW5kKFNvdXJjZU5vdFNldCkpCiAgICAgewogICAgIH0KICAgICAKICAgICBleHBsaWNpdCBWYWx1
ZVNvdXJjZShWYWx1ZVNvdXJjZUtpbmQgdmFsdWVTb3VyY2VLaW5kKQotICAgICAgICA6IG1fa2lu
ZCh2YWx1ZVNvdXJjZUtpbmQpCisgICAgICAgIDogbV92YWx1ZShpZEZyb21LaW5kKHZhbHVlU291
cmNlS2luZCkpCiAgICAgewotICAgICAgICBBU1NFUlQoa2luZCgpID09IEFyZ3VtZW50c1NvdXJj
ZSB8fCBraW5kKCkgPT0gU291cmNlSXNEZWFkKTsKKyAgICAgICAgQVNTRVJUKGtpbmQoKSAhPSBT
b3VyY2VOb3RTZXQpOworICAgICAgICBBU1NFUlQoa2luZCgpICE9IEhhdmVOb2RlKTsKICAgICB9
CiAgICAgCiAgICAgZXhwbGljaXQgVmFsdWVTb3VyY2UoTWluaWZpZWRJRCBpZCkKLSAgICAgICAg
OiBtX2tpbmQoSGF2ZU5vZGUpCi0gICAgICAgICwgbV92YWx1ZShpZC5iaXRzKCkpCisgICAgICAg
IDogbV92YWx1ZShpZCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghIWlkKTsKICAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBIYXZlTm9kZSk7CiAgICAgfQogICAgIAotICAgIFZhbHVlU291cmNlKFZh
bHVlU291cmNlS2luZCB2YWx1ZVNvdXJjZUtpbmQsIFZpcnR1YWxSZWdpc3RlciB3aGVyZSkKLSAg
ICAgICAgOiBtX2tpbmQodmFsdWVTb3VyY2VLaW5kKQotICAgICAgICAsIG1fdmFsdWUoc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KHdoZXJlLm9mZnNldCgpKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChr
aW5kKCkgIT0gU291cmNlTm90U2V0KTsKLSAgICAgICAgQVNTRVJUKGtpbmQoKSAhPSBIYXZlTm9k
ZSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBWYWx1ZVNvdXJjZSBmb3JGbHVzaEZvcm1hdChW
aXJ0dWFsUmVnaXN0ZXIgd2hlcmUsIEZsdXNoRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgVmFs
dWVTb3VyY2UgZm9yRmx1c2hGb3JtYXQoRmx1c2hGb3JtYXQgZm9ybWF0KQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgICAgY2FzZSBEZWFkRmx1c2g6CiAgICAgICAgICAg
ICByZXR1cm4gVmFsdWVTb3VyY2UoU291cmNlSXNEZWFkKTsKICAgICAgICAgY2FzZSBGbHVzaGVk
SlNWYWx1ZToKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjaywg
d2hlcmUpOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsK
ICAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291
cmNlKERvdWJsZUluSlNTdGFjaywgd2hlcmUpOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291
cmNlKERvdWJsZUluSlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrLCB3aGVyZSk7CisgICAgICAg
ICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spOwogICAgICAgICBjYXNlIEZs
dXNoZWRJbnQ1MjoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShJbnQ1MkluSlNTdGFj
aywgd2hlcmUpOworICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEludDUySW5KU1N0YWNr
KTsKICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJldHVybiBWYWx1ZVNv
dXJjZShDZWxsSW5KU1N0YWNrLCB3aGVyZSk7CisgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3Vy
Y2UoQ2VsbEluSlNTdGFjayk7CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAg
ICAgICByZXR1cm4gVmFsdWVTb3VyY2UoQm9vbGVhbkluSlNTdGFjaywgd2hlcmUpOworICAgICAg
ICAgICAgcmV0dXJuIFZhbHVlU291cmNlKEJvb2xlYW5JbkpTU3RhY2spOwogICAgICAgICB9CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBWYWx1
ZVNvdXJjZSgpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgVmFsdWVTb3VyY2UgZm9yRGF0YUZv
cm1hdChWaXJ0dWFsUmVnaXN0ZXIgd2hlcmUsIERhdGFGb3JtYXQgZGF0YUZvcm1hdCkKKyAgICBz
dGF0aWMgVmFsdWVTb3VyY2UgZm9yRGF0YUZvcm1hdChEYXRhRm9ybWF0IGRhdGFGb3JtYXQpCiAg
ICAgewotICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoZGF0YUZvcm1hdFRvVmFsdWVTb3VyY2VL
aW5kKGRhdGFGb3JtYXQpLCB3aGVyZSk7CisgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShkYXRh
Rm9ybWF0VG9WYWx1ZVNvdXJjZUtpbmQoZGF0YUZvcm1hdCkpOwogICAgIH0KICAgICAKICAgICBi
b29sIGlzU2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBraW5kKCkgIT0gU291cmNl
Tm90U2V0OworICAgICAgICByZXR1cm4ga2luZEZyb21JRChtX3ZhbHVlKSAhPSBTb3VyY2VOb3RT
ZXQ7CiAgICAgfQogICAgIAogICAgIFZhbHVlU291cmNlS2luZCBraW5kKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2tpbmQ7CisgICAgICAgIHJldHVybiBraW5kRnJvbUlEKG1fdmFs
dWUpOwogICAgIH0KICAgICAKICAgICBib29sIGlzSW5KU1N0YWNrKCkgY29uc3QgeyByZXR1cm4g
SlNDOjpERkc6OmlzSW5KU1N0YWNrKGtpbmQoKSk7IH0KQEAgLTE4Niw3ICsxNzgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiB2YWx1ZVNvdXJjZUtpbmRUb0RhdGFGb3JtYXQoa2luZCgpKTsK
ICAgICB9CiAgICAgCi0gICAgVmFsdWVSZWNvdmVyeSB2YWx1ZVJlY292ZXJ5KCkgY29uc3QKKyAg
ICBWYWx1ZVJlY292ZXJ5IHZhbHVlUmVjb3ZlcnkoaW50IG9wZXJhbmQpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQoaXNUcml2aWFsbHlSZWNvdmVyYWJsZSgpKTsKICAgICAgICAgc3dpdGNo
IChraW5kKCkpIHsKQEAgLTE5NywyNyArMTg5LDM0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBWYWx1ZVJlY292ZXJ5Ojphcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQoKTsKICAgICAg
ICAgICAgIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zl
cnk6OmRpc3BsYWNlZEluSlNTdGFjayh2aXJ0dWFsUmVnaXN0ZXIoKSwgZGF0YUZvcm1hdCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBWYWx1ZVJlY292ZXJ5OjpkaXNwbGFjZWRJbkpTU3RhY2soVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLCBkYXRhRm9ybWF0KCkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIAogICAgIE1pbmlmaWVkSUQgaWQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGtp
bmQoKSA9PSBIYXZlTm9kZSk7Ci0gICAgICAgIHJldHVybiBNaW5pZmllZElEOjpmcm9tQml0cyht
X3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CiAgICAgfQogICAgIAotICAgIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKSBjb25zdAorICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgTWluaWZpZWRJRCBpZEZy
b21LaW5kKFZhbHVlU291cmNlS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW5K
U1N0YWNrKCkpOwotICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG1fdmFsdWUpOworICAg
ICAgICBBU1NFUlQoa2luZCA+PSBTb3VyY2VOb3RTZXQgJiYga2luZCA8IEhhdmVOb2RlKTsKKyAg
ICAgICAgcmV0dXJuIE1pbmlmaWVkSUQ6OmZyb21CaXRzKE1pbmlmaWVkSUQ6OmludmFsaWRJRCgp
IC0ga2luZCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OworICAgIHN0YXRpYyBWYWx1ZVNvdXJjZUtpbmQga2luZEZyb21JRChNaW5pZmllZElEIGlkKQor
ICAgIHsKKyAgICAgICAgdWludHB0cl90IGtpbmQgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KE1p
bmlmaWVkSUQ6OmludmFsaWRJRCgpIC0gaWQubV9pZCk7CisgICAgICAgIGlmIChraW5kID49IHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oSGF2ZU5vZGUpKQorICAgICAgICAgICAgcmV0dXJuIEhhdmVO
b2RlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWVTb3VyY2VLaW5kPihraW5kKTsK
KyAgICB9CiAgICAgCi1wcml2YXRlOgotICAgIFZhbHVlU291cmNlS2luZCBtX2tpbmQ7Ci0gICAg
dWludHB0cl90IG1fdmFsdWU7CisgICAgTWluaWZpZWRJRCBtX3ZhbHVlOwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJpYWJsZUV2ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVFdmVudC5jcHAKaW5kZXggYmIxMDRhYi4uODcxOTI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCkBAIC01NSwxMiArNTUsMTAgQEAg
dm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAg
IG91dC5wcmludCgiRGVhdGgoIiwgaWQoKSwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNb3ZIaW50RXZlbnQ6Ci0gICAgICAgIG91dC5wcmludCgiTW92SGludCgiLCBpZCgpLCAiLCBy
IiwgYnl0ZWNvZGVSZWdpc3RlcigpLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIk1vdkhpbnQo
IiwgaWQoKSwgIiwgciIsIG9wZXJhbmQoKSwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTZXRMb2NhbEV2ZW50OgotICAgICAgICBvdXQucHJpbnQoCi0gICAgICAgICAgICAiU2V0TG9j
YWwobWFjaGluZTpyIiwgbWFjaGluZVJlZ2lzdGVyKCksICIgLT4gYnl0ZWNvZGU6ciIsIGJ5dGVj
b2RlUmVnaXN0ZXIoKSwKLSAgICAgICAgICAgICIsICIsIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRh
Rm9ybWF0KCkpLCAiKSIpOworICAgICAgICBvdXQucHJpbnRmKCJTZXRMb2NhbChyJWQsICVzKSIs
IG9wZXJhbmQoKSwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtODQsNyArODIsNyBAQCB2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBGaWxsSW5mbyhjb25z
dCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogCiB2b2lkIFZhcmlhYmxlRXZl
bnQ6OmR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKLSAgICBvdXQucHJpbnQobmFtZSwgIigiLCBpZCgpLCAiLCByIiwgc3BpbGxSZWdpc3Rl
cigpLCAiLCAiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSwgIikiKTsKKyAgICBv
dXQucHJpbnQobmFtZSwgIigiLCBpZCgpLCAiLCByIiwgdmlydHVhbFJlZ2lzdGVyKCksICIsICIs
IGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpLCAiKSIpOwogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVF
dmVudC5oCmluZGV4IDI0NDIzZWQuLjczZWE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCkBAIC02MSw3ICs2MSw4IEBAIGVudW0gVmFyaWFibGVF
dmVudEtpbmQgewogICAgIC8vIGJ1dCB0aGF0IGl0IGhhcyBub3QgYmVlbiBzdG9yZWQgaW50byB0
aGF0IG9wZXJhbmQuCiAgICAgTW92SGludEV2ZW50LAogICAgIAotICAgIC8vIEEgU2V0TG9jYWxF
dmVudCBtZWFucyB0aGF0IGEgbm9kZSdzIHZhbHVlIGhhcyBiZWVuIHN0b3JlZCBpbnRvIHRoZSBz
dGFjay4KKyAgICAvLyBBIFNldExvY2FsRXZlbnQgbWVhbnMgdGhhdCBhIG5vZGUncyB2YWx1ZSBo
YXMgYWN0dWFsbHkgYmVlbiBzdG9yZWQgaW50byB0aGUKKyAgICAvLyBieXRlY29kZSBvcGVyYW5k
IHRoYXQgaXQncyBhc3NvY2lhdGVkIHdpdGguCiAgICAgU2V0TG9jYWxFdmVudCwKICAgICAKICAg
ICAvLyBVc2VkIHRvIGluZGljYXRlIGFuIHVuaW5pdGlhbGl6ZWQgVmFyaWFibGVFdmVudC4gRG9u
J3QgdXNlIGZvciBvdGhlcgpAQCAtMTAzLDggKzEwNCw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKCEoZGF0YUZvcm1hdCAmIERhdGFGb3JtYXRKUykpOwogI2VuZGlmCiAgICAgICAgIFZhcmlh
YmxlRXZlbnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lm1fd2hpY2guaWQgPSBpZC5iaXRzKCk7Ci0g
ICAgICAgIGV2ZW50Lm1fcmVwcmVzZW50YXRpb24uZ3ByID0gZ3ByOworICAgICAgICBldmVudC5t
X2lkID0gaWQ7CisgICAgICAgIGV2ZW50LnUuZ3ByID0gZ3ByOwogICAgICAgICBldmVudC5tX2tp
bmQgPSBraW5kOwogICAgICAgICBldmVudC5tX2RhdGFGb3JtYXQgPSBkYXRhRm9ybWF0OwogICAg
ICAgICByZXR1cm4gZXZlbnQ7CkBAIC0xMTUsOSArMTE2LDkgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKGtpbmQgPT0gQmlydGhUb0ZpbGwgfHwga2luZCA9PSBGaWxsKTsKICAgICAg
ICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAgICAgZXZlbnQubV93aGljaC5pZCA9IGlkLmJp
dHMoKTsKLSAgICAgICAgZXZlbnQubV9yZXByZXNlbnRhdGlvbi5wYWlyLnRhZ0dQUiA9IHRhZ0dQ
UjsKLSAgICAgICAgZXZlbnQubV9yZXByZXNlbnRhdGlvbi5wYWlyLnBheWxvYWRHUFIgPSBwYXls
b2FkR1BSOworICAgICAgICBldmVudC5tX2lkID0gaWQ7CisgICAgICAgIGV2ZW50LnUucGFpci50
YWdHUFIgPSB0YWdHUFI7CisgICAgICAgIGV2ZW50LnUucGFpci5wYXlsb2FkR1BSID0gcGF5bG9h
ZEdQUjsKICAgICAgICAgZXZlbnQubV9raW5kID0ga2luZDsKICAgICAgICAgZXZlbnQubV9kYXRh
Rm9ybWF0ID0gRGF0YUZvcm1hdEpTOwogICAgICAgICByZXR1cm4gZXZlbnQ7CkBAIC0xMjgsOCAr
MTI5LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQmlydGhUb0Zp
bGwgfHwga2luZCA9PSBGaWxsKTsKICAgICAgICAgVmFyaWFibGVFdmVudCBldmVudDsKLSAgICAg
ICAgZXZlbnQubV93aGljaC5pZCA9IGlkLmJpdHMoKTsKLSAgICAgICAgZXZlbnQubV9yZXByZXNl
bnRhdGlvbi5mcHIgPSBmcHI7CisgICAgICAgIGV2ZW50Lm1faWQgPSBpZDsKKyAgICAgICAgZXZl
bnQudS5mcHIgPSBmcHI7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IGtpbmQ7CiAgICAgICAgIGV2
ZW50Lm1fZGF0YUZvcm1hdCA9IERhdGFGb3JtYXREb3VibGU7CiAgICAgICAgIHJldHVybiBldmVu
dDsKQEAgLTEzOSw4ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoa2lu
ZCA9PSBCaXJ0aFRvU3BpbGwgfHwga2luZCA9PSBTcGlsbCk7CiAgICAgICAgIFZhcmlhYmxlRXZl
bnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lm1fd2hpY2guaWQgPSBpZC5iaXRzKCk7Ci0gICAgICAg
IGV2ZW50Lm1fcmVwcmVzZW50YXRpb24udmlydHVhbFJlZyA9IHZpcnR1YWxSZWdpc3Rlci5vZmZz
ZXQoKTsKKyAgICAgICAgZXZlbnQubV9pZCA9IGlkOworICAgICAgICBldmVudC51LnZpcnR1YWxS
ZWcgPSB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCk7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IGtp
bmQ7CiAgICAgICAgIGV2ZW50Lm1fZGF0YUZvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgcmV0dXJu
IGV2ZW50OwpAQCAtMTQ5LDI3ICsxNTAsMjUgQEAgcHVibGljOgogICAgIHN0YXRpYyBWYXJpYWJs
ZUV2ZW50IGRlYXRoKE1pbmlmaWVkSUQgaWQpCiAgICAgewogICAgICAgICBWYXJpYWJsZUV2ZW50
IGV2ZW50OwotICAgICAgICBldmVudC5tX3doaWNoLmlkID0gaWQuYml0cygpOworICAgICAgICBl
dmVudC5tX2lkID0gaWQ7CiAgICAgICAgIGV2ZW50Lm1fa2luZCA9IERlYXRoOwogICAgICAgICBy
ZXR1cm4gZXZlbnQ7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBWYXJpYWJsZUV2ZW50IHNldExv
Y2FsKAotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYnl0ZWNvZGVSZWcsIFZpcnR1YWxSZWdpc3Rl
ciBtYWNoaW5lUmVnLCBEYXRhRm9ybWF0IGZvcm1hdCkKKyAgICBzdGF0aWMgVmFyaWFibGVFdmVu
dCBzZXRMb2NhbChWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyLCBEYXRhRm9ybWF0IGZv
cm1hdCkKICAgICB7CiAgICAgICAgIFZhcmlhYmxlRXZlbnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50
Lm1fd2hpY2gudmlydHVhbFJlZyA9IG1hY2hpbmVSZWcub2Zmc2V0KCk7Ci0gICAgICAgIGV2ZW50
Lm1fcmVwcmVzZW50YXRpb24udmlydHVhbFJlZyA9IGJ5dGVjb2RlUmVnLm9mZnNldCgpOworICAg
ICAgICBldmVudC51LnZpcnR1YWxSZWcgPSB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCk7CiAgICAg
ICAgIGV2ZW50Lm1fa2luZCA9IFNldExvY2FsRXZlbnQ7CiAgICAgICAgIGV2ZW50Lm1fZGF0YUZv
cm1hdCA9IGZvcm1hdDsKICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgIH0KICAgICAKLSAgICBz
dGF0aWMgVmFyaWFibGVFdmVudCBtb3ZIaW50KE1pbmlmaWVkSUQgaWQsIFZpcnR1YWxSZWdpc3Rl
ciBieXRlY29kZVJlZykKKyAgICBzdGF0aWMgVmFyaWFibGVFdmVudCBtb3ZIaW50KE1pbmlmaWVk
SUQgaWQsIGludCBvcGVyYW5kKQogICAgIHsKICAgICAgICAgVmFyaWFibGVFdmVudCBldmVudDsK
LSAgICAgICAgZXZlbnQubV93aGljaC5pZCA9IGlkLmJpdHMoKTsKLSAgICAgICAgZXZlbnQubV9y
ZXByZXNlbnRhdGlvbi52aXJ0dWFsUmVnID0gYnl0ZWNvZGVSZWcub2Zmc2V0KCk7CisgICAgICAg
IGV2ZW50Lm1faWQgPSBpZDsKKyAgICAgICAgZXZlbnQudS52aXJ0dWFsUmVnID0gb3BlcmFuZDsK
ICAgICAgICAgZXZlbnQubV9raW5kID0gTW92SGludEV2ZW50OwogICAgICAgICByZXR1cm4gZXZl
bnQ7CiAgICAgfQpAQCAtMTg0LDcgKzE4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
a2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBtX2tpbmQgPT0gRmlsbAogICAgICAgICAgICAgICAgfHwg
bV9raW5kID09IEJpcnRoVG9TcGlsbCB8fCBtX2tpbmQgPT0gU3BpbGwKICAgICAgICAgICAgICAg
IHx8IG1fa2luZCA9PSBEZWF0aCB8fCBtX2tpbmQgPT0gTW92SGludEV2ZW50KTsKLSAgICAgICAg
cmV0dXJuIE1pbmlmaWVkSUQ6OmZyb21CaXRzKG1fd2hpY2guaWQpOworICAgICAgICByZXR1cm4g
bV9pZDsKICAgICB9CiAgICAgCiAgICAgRGF0YUZvcm1hdCBkYXRhRm9ybWF0KCkgY29uc3QKQEAg
LTIwMyw3ICsyMDIsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAg
QVNTRVJUKCEobV9kYXRhRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSk7CiAjZW5kaWYKLSAgICAgICAg
cmV0dXJuIG1fcmVwcmVzZW50YXRpb24uZ3ByOworICAgICAgICByZXR1cm4gdS5ncHI7CiAgICAg
fQogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0yMTEsMTMgKzIxMCwxMyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBBU1NFUlQobV9raW5kID09IEJpcnRoVG9GaWxsIHx8IG1fa2lu
ZCA9PSBGaWxsKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YUZvcm1hdCAmIERhdGFGb3JtYXRKUyk7
Ci0gICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uLnBhaXIudGFnR1BSOworICAgICAgICBy
ZXR1cm4gdS5wYWlyLnRhZ0dQUjsKICAgICB9CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgcGF5bG9hZEdQUigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV9raW5kID09IEJp
cnRoVG9GaWxsIHx8IG1fa2luZCA9PSBGaWxsKTsKICAgICAgICAgQVNTRVJUKG1fZGF0YUZvcm1h
dCAmIERhdGFGb3JtYXRKUyk7Ci0gICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uLnBhaXIu
cGF5bG9hZEdQUjsKKyAgICAgICAgcmV0dXJuIHUucGFpci5wYXlsb2FkR1BSOwogICAgIH0KICNl
bmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQogICAgIApAQCAtMjI1LDI4ICsyMjQsMjIgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fa2luZCA9PSBCaXJ0aFRvRmlsbCB8fCBtX2tp
bmQgPT0gRmlsbCk7CiAgICAgICAgIEFTU0VSVChtX2RhdGFGb3JtYXQgPT0gRGF0YUZvcm1hdERv
dWJsZSk7Ci0gICAgICAgIHJldHVybiBtX3JlcHJlc2VudGF0aW9uLmZwcjsKKyAgICAgICAgcmV0
dXJuIHUuZnByOwogICAgIH0KICAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxSZWdpc3Rl
cigpIGNvbnN0CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQobV9raW5kID09IEJpcnRoVG9TcGlsbCB8fCBtX2tpbmQgPT0g
U3BpbGwpOwotICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKG1fcmVwcmVzZW50YXRpb24u
dmlydHVhbFJlZyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+
KHUudmlydHVhbFJlZyk7CiAgICAgfQogICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciBieXRlY29k
ZVJlZ2lzdGVyKCkgY29uc3QKKyAgICBpbnQgb3BlcmFuZCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQobV9raW5kID09IFNldExvY2FsRXZlbnQgfHwgbV9raW5kID09IE1vdkhpbnRFdmVu
dCk7Ci0gICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIobV9yZXByZXNlbnRhdGlvbi52aXJ0
dWFsUmVnKTsKKyAgICAgICAgcmV0dXJuIHUudmlydHVhbFJlZzsKICAgICB9CiAgICAgCi0gICAg
VmlydHVhbFJlZ2lzdGVyIG1hY2hpbmVSZWdpc3RlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQobV9raW5kID09IFNldExvY2FsRXZlbnQpOwotICAgICAgICByZXR1cm4gVmlydHVhbFJl
Z2lzdGVyKG1fd2hpY2gudmlydHVhbFJlZyk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0IFZhcmlh
YmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxlUmVwcmVzZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3JlcHJlc2VudGF0aW9uOyB9CisgICAgY29uc3QgVmFyaWFibGVSZXByZXNlbnRhdGlvbiYg
dmFyaWFibGVSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHU7IH0KICAgICAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKQEAgLTI1NCwxMCArMjQ3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGR1bXBGaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIAotICAgIHVuaW9uIHsKLSAgICAgICAgaW50IHZpcnR1
YWxSZWc7Ci0gICAgICAgIHVpbnRwdHJfdCBpZDsKLSAgICB9IG1fd2hpY2g7CisgICAgTWluaWZp
ZWRJRCBtX2lkOwogICAgIAogICAgIC8vIEZvciBCaXJ0aFRvRmlsbCwgRmlsbDoKICAgICAvLyAg
IC0gVGhlIEdQUiBvciBGUFIsIG9yIGEgR1BSIHBhaXIuCkBAIC0yNjcsNyArMjU3LDcgQEAgcHJp
dmF0ZToKICAgICAvLyAgIC0gVGhlIGJ5dGVjb2RlIG9wZXJhbmQuCiAgICAgLy8gRm9yIERlYXRo
OgogICAgIC8vICAgLSBVbnVzZWQuCi0gICAgVmFyaWFibGVSZXByZXNlbnRhdGlvbiBtX3JlcHJl
c2VudGF0aW9uOworICAgIFZhcmlhYmxlUmVwcmVzZW50YXRpb24gdTsKICAgICAKICAgICBpbnQ4
X3QgbV9raW5kOwogICAgIGludDhfdCBtX2RhdGFGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50U3RyZWFtLmNwcAppbmRleCAxMGQ4MGNm
Li4yOGE5ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlRXZlbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
aWFibGVFdmVudFN0cmVhbS5jcHAKQEAgLTE0Miw4ICsxNDIsNiBAQCB2b2lkIFZhcmlhYmxlRXZl
bnRTdHJlYW06OnJlY29uc3RydWN0KAogCiAgICAgLy8gU3RlcCAyOiBDcmVhdGUgYSBtb2NrLXVw
IG9mIHRoZSBERkcncyBzdGF0ZSBhbmQgZXhlY3V0ZSB0aGUgZXZlbnRzLgogICAgIE9wZXJhbmRz
PFZhbHVlU291cmNlPiBvcGVyYW5kU291cmNlcyhjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwg
bnVtVmFyaWFibGVzKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBvcGVyYW5kU291cmNlcy5zaXpl
KCk7IGktLTspCi0gICAgICAgIG9wZXJhbmRTb3VyY2VzW2ldID0gVmFsdWVTb3VyY2UoU291cmNl
SXNEZWFkKTsKICAgICBIYXNoTWFwPE1pbmlmaWVkSUQsIE1pbmlmaWVkR2VuZXJhdGlvbkluZm8+
IGdlbmVyYXRpb25JbmZvczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGFydEluZGV4OyBpIDwg
aW5kZXg7ICsraSkgewogICAgICAgICBjb25zdCBWYXJpYWJsZUV2ZW50JiBldmVudCA9IGF0KGkp
OwpAQCAtMTY3LDEyICsxNjUsMTIgQEAgdm9pZCBWYXJpYWJsZUV2ZW50U3RyZWFtOjpyZWNvbnN0
cnVjdCgKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgTW92SGlu
dEV2ZW50OgotICAgICAgICAgICAgaWYgKG9wZXJhbmRTb3VyY2VzLmhhc09wZXJhbmQoZXZlbnQu
Ynl0ZWNvZGVSZWdpc3RlcigpKSkKLSAgICAgICAgICAgICAgICBvcGVyYW5kU291cmNlcy5zZXRP
cGVyYW5kKGV2ZW50LmJ5dGVjb2RlUmVnaXN0ZXIoKSwgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkp
OworICAgICAgICAgICAgaWYgKG9wZXJhbmRTb3VyY2VzLmhhc09wZXJhbmQoZXZlbnQub3BlcmFu
ZCgpKSkKKyAgICAgICAgICAgICAgICBvcGVyYW5kU291cmNlcy5zZXRPcGVyYW5kKGV2ZW50Lm9w
ZXJhbmQoKSwgVmFsdWVTb3VyY2UoZXZlbnQuaWQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgU2V0TG9jYWxFdmVudDoKLSAgICAgICAgICAgIGlmIChvcGVyYW5kU291cmNl
cy5oYXNPcGVyYW5kKGV2ZW50LmJ5dGVjb2RlUmVnaXN0ZXIoKSkpCi0gICAgICAgICAgICAgICAg
b3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFuZChldmVudC5ieXRlY29kZVJlZ2lzdGVyKCksIFZhbHVl
U291cmNlOjpmb3JEYXRhRm9ybWF0KGV2ZW50Lm1hY2hpbmVSZWdpc3RlcigpLCBldmVudC5kYXRh
Rm9ybWF0KCkpKTsKKyAgICAgICAgICAgIGlmIChvcGVyYW5kU291cmNlcy5oYXNPcGVyYW5kKGV2
ZW50Lm9wZXJhbmQoKSkpCisgICAgICAgICAgICAgICAgb3BlcmFuZFNvdXJjZXMuc2V0T3BlcmFu
ZChldmVudC5vcGVyYW5kKCksIFZhbHVlU291cmNlOjpmb3JEYXRhRm9ybWF0KGV2ZW50LmRhdGFG
b3JtYXQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTg1LDcgKzE4Myw3IEBAIHZv
aWQgVmFyaWFibGVFdmVudFN0cmVhbTo6cmVjb25zdHJ1Y3QoCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG9wZXJhbmRTb3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlU291
cmNlJiBzb3VyY2UgPSBvcGVyYW5kU291cmNlc1tpXTsKICAgICAgICAgaWYgKHNvdXJjZS5pc1Ry
aXZpYWxseVJlY292ZXJhYmxlKCkpIHsKLSAgICAgICAgICAgIHZhbHVlUmVjb3Zlcmllc1tpXSA9
IHNvdXJjZS52YWx1ZVJlY292ZXJ5KCk7CisgICAgICAgICAgICB2YWx1ZVJlY292ZXJpZXNbaV0g
PSBzb3VyY2UudmFsdWVSZWNvdmVyeShvcGVyYW5kU291cmNlcy5vcGVyYW5kRm9ySW5kZXgoaSkp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCBkMTNmOWI3Li40NjQ5NDc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTQyLDExICs0Miw5IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAK
IHN0YXRpYyB1aW50OF90KiBtbUFsbG9jYXRlQ29kZVNlY3Rpb24oCi0gICAgdm9pZCogb3BhcXVl
U3RhdGUsIHVpbnRwdHJfdCBzaXplLCB1bnNpZ25lZCBhbGlnbm1lbnQsIHVuc2lnbmVkIHNlY3Rp
b25JRCwKLSAgICBjb25zdCBjaGFyKiBzZWN0aW9uTmFtZSkKKyAgICB2b2lkKiBvcGFxdWVTdGF0
ZSwgdWludHB0cl90IHNpemUsIHVuc2lnbmVkIGFsaWdubWVudCwgdW5zaWduZWQgc2VjdGlvbklE
KQogewogICAgIFVOVVNFRF9QQVJBTShzZWN0aW9uSUQpOwotICAgIFVOVVNFRF9QQVJBTShzZWN0
aW9uTmFtZSk7CiAgICAgCiAgICAgU3RhdGUmIHN0YXRlID0gKnN0YXRpY19jYXN0PFN0YXRlKj4o
b3BhcXVlU3RhdGUpOwogICAgIApAQCAtNjMsMTMgKzYxLDEzIEBAIHN0YXRpYyB1aW50OF90KiBt
bUFsbG9jYXRlQ29kZVNlY3Rpb24oCiAKIHN0YXRpYyB1aW50OF90KiBtbUFsbG9jYXRlRGF0YVNl
Y3Rpb24oCiAgICAgdm9pZCogb3BhcXVlU3RhdGUsIHVpbnRwdHJfdCBzaXplLCB1bnNpZ25lZCBh
bGlnbm1lbnQsIHVuc2lnbmVkIHNlY3Rpb25JRCwKLSAgICBjb25zdCBjaGFyKiBzZWN0aW9uTmFt
ZSwgTExWTUJvb2wgaXNSZWFkT25seSkKKyAgICBMTFZNQm9vbCBpc1JlYWRPbmx5KQogewogICAg
IC8vIEZJWE1FOiBmb3VydGhUaWVyOiBGVEwgbWVtb3J5IGFsbG9jYXRvciBzaG91bGQgYmUgYWJs
ZSB0byBhbGxvY2F0ZSBkYXRhCiAgICAgLy8gc2VjdGlvbnMgaW4gbm9uLWV4ZWN1dGFibGUgbWVt
b3J5LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYx
ODkKICAgICBVTlVTRURfUEFSQU0oaXNSZWFkT25seSk7Ci0gICAgcmV0dXJuIG1tQWxsb2NhdGVD
b2RlU2VjdGlvbihvcGFxdWVTdGF0ZSwgc2l6ZSwgYWxpZ25tZW50LCBzZWN0aW9uSUQsIHNlY3Rp
b25OYW1lKTsKKyAgICByZXR1cm4gbW1BbGxvY2F0ZUNvZGVTZWN0aW9uKG9wYXF1ZVN0YXRlLCBz
aXplLCBhbGlnbm1lbnQsIHNlY3Rpb25JRCk7CiB9CiAKIHN0YXRpYyBMTFZNQm9vbCBtbUFwcGx5
UGVybWlzc2lvbnModm9pZCosIGNoYXIqKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggOTlmMDFiNy4uN2JkYzRhYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTI3OSwx
OSArMjc5LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBB
cml0aEFkZDoKICAgICAgICAgY2FzZSBWYWx1ZUFkZDoKLSAgICAgICAgICAgIGNvbXBpbGVBZGRT
dWIoKTsKKyAgICAgICAgICAgIGNvbXBpbGVBZGRTdWIoQWRkKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEFyaXRoU3ViOgotICAgICAgICAgICAgY29tcGlsZUFkZFN1YigpOwor
ICAgICAgICAgICAgY29tcGlsZUFkZFN1YihTdWIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgICAgICBjb21waWxlQXJpdGhNdWwoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRoRGl2OgotICAgICAgICAgICAgY29tcGls
ZUFyaXRoRGl2TW9kKCk7CisgICAgICAgICAgICBjb21waWxlQXJpdGhEaXYoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRoTW9kOgotICAgICAgICAgICAgY29tcGlsZUFy
aXRoRGl2TW9kKCk7CisgICAgICAgICAgICBjb21waWxlQXJpdGhNb2QoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEFyaXRoTWluOgogICAgICAgICBjYXNlIEFyaXRoTWF4OgpA
QCAtNjU0LDI0ICs2NTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX05PREVfRE9fVE9fQ0hJ
TERSRU4obV9ncmFwaCwgbV9ub2RlLCBzcGVjdWxhdGUpOwogICAgIH0KICAgICAKLSAgICB2b2lk
IGNvbXBpbGVBZGRTdWIoKQorICAgIGVudW0gQWRkT3JTdWJLaW5kIHtBZGQsIFN1Yn07CisgICAg
dm9pZCBjb21waWxlQWRkU3ViKEFkZE9yU3ViS2luZCBvcEtpbmQpCiAgICAgewotICAgICAgICBi
b29sIGlzU3ViID0gIG1fbm9kZS0+b3AoKSA9PSBBcml0aFN1YjsKKyAgICAgICAgYm9vbCBpc1N1
YiA9IG9wS2luZCA9PSBTdWI7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5iaW5hcnlVc2VLaW5k
KCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgTFZhbHVlIGxlZnQg
PSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9
IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IGlzU3ViID8gbV9vdXQuc3ViKGxlZnQsIHJpZ2h0KSA6IG1fb3V0LmFkZChsZWZ0LCByaWdodCk7
Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRl
Z2VyKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRJbnQz
MihyZXN1bHQpOworICAgICAgICAgICAgICAgIHNldEludDMyKGlzU3ViID8gbV9vdXQuc3ViKGxl
ZnQsIHJpZ2h0KSA6IG1fb3V0LmFkZChsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBMVmFsdWUgb3ZlcmZsb3cgPSBpc1N1
YiA/IG1fb3V0LnN1YldpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KSA6IG1fb3V0LmFkZFdpdGhP
dmVyZmxvdzMyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBpc1N1
YiA/IG1fb3V0LnN1YldpdGhPdmVyZmxvdzMyKGxlZnQsIHJpZ2h0KSA6IG1fb3V0LmFkZFdpdGhP
dmVyZmxvdzMyKGxlZnQsIHJpZ2h0KTsKIAotICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93
LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvdywgMSkpOwotICAgICAg
ICAgICAgc2V0SW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywg
bm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAxKSk7CisgICAgICAgICAg
ICBzZXRJbnQzMihtX291dC5leHRyYWN0VmFsdWUocmVzdWx0LCAwKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC02ODcsMTEgKzY4Nyw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50NTIobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQ1MihtX25v
ZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBpc1N1YiA/IG1fb3V0
LnN1YihsZWZ0LCByaWdodCkgOiBtX291dC5hZGQobGVmdCwgcmlnaHQpOwotCi0gICAgICAgICAg
ICBMVmFsdWUgb3ZlcmZsb3cgPSBpc1N1YiA/IG1fb3V0LnN1YldpdGhPdmVyZmxvdzY0KGxlZnQs
IHJpZ2h0KSA6IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KTsKLSAgICAgICAg
ICAgIHNwZWN1bGF0ZShJbnQ1Mk92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJhY3RW
YWx1ZShvdmVyZmxvdywgMSkpOwotICAgICAgICAgICAgc2V0SW50NTIocmVzdWx0KTsKKyAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBpc1N1YiA/IG1fb3V0LnN1YldpdGhPdmVyZmxvdzY0KGxl
ZnQsIHJpZ2h0KSA6IG1fb3V0LmFkZFdpdGhPdmVyZmxvdzY0KGxlZnQsIHJpZ2h0KTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZShJbnQ1Mk92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJh
Y3RWYWx1ZShyZXN1bHQsIDEpKTsKKyAgICAgICAgICAgIHNldEludDUyKG1fb3V0LmV4dHJhY3RW
YWx1ZShyZXN1bHQsIDApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTcxNSwxMSArNzEzLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5tdWwobGVmdCwgcmlnaHQpOwot
Ci0gICAgICAgICAgICBpZiAoIWJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG1fbm9kZS0+YXJp
dGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHJlc3Vs
dDsKKyAgICAgICAgICAgIGlmIChieXRlY29kZUNhblRydW5jYXRlSW50ZWdlcihtX25vZGUtPmFy
aXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0Lm11bChsZWZ0
LCByaWdodCk7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBMVmFsdWUgb3Zl
cmZsb3dSZXN1bHQgPSBtX291dC5tdWxXaXRoT3ZlcmZsb3czMihsZWZ0LCByaWdodCk7CiAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJh
Y3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMSkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1f
b3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8o
bV9ub2RlLT5hcml0aE5vZGVGbGFncygpKSkgewpAQCAtNzI5LDggKzczMCw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdFplcm8zMihyZXN1bHQpLCBj
b250aW51YXRpb24sIHNsb3dDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwotICAgICAgICAgICAgICAgIExWYWx1ZSBjb25kID0gbV9vdXQuYml0T3IobV9vdXQu
bGVzc1RoYW4obGVmdCwgbV9vdXQuaW50MzJaZXJvKSwgbV9vdXQubGVzc1RoYW4ocmlnaHQsIG1f
b3V0LmludDMyWmVybykpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8s
IG5vVmFsdWUoKSwgMCwgY29uZCk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZl
WmVybywgbm9WYWx1ZSgpLCAwLCBtX291dC5sZXNzVGhhbihsZWZ0LCBtX291dC5pbnQzMlplcm8p
KTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAs
IG1fb3V0Lmxlc3NUaGFuKHJpZ2h0LCBtX291dC5pbnQzMlplcm8pKTsKICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgICAgICB9CkBAIC03NDMsMTIgKzc0
NCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW50NTJLaW5kIGtpbmQ7CiAgICAgICAgICAg
ICBMVmFsdWUgbGVmdCA9IGxvd1doaWNoZXZlckludDUyKG1fbm9kZS0+Y2hpbGQxKCksIGtpbmQp
OwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDIoKSwg
b3Bwb3NpdGUoa2luZCkpOwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0Lm11bChs
ZWZ0LCByaWdodCk7Ci0KLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBMVmFsdWUgb3ZlcmZs
b3dSZXN1bHQgPSBtX291dC5tdWxXaXRoT3ZlcmZsb3c2NChsZWZ0LCByaWdodCk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGUoSW50NTJPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBtX291dC5leHRyYWN0
VmFsdWUob3ZlcmZsb3dSZXN1bHQsIDEpKTsKLQorICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMCk7CisgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmICghYnl0ZWNvZGVDYW5JZ25vcmVOZWdhdGl2ZVplcm8obV9ub2RlLT5hcml0
aE5vZGVGbGFncygpKSkgewogICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dDYXNlID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aE11bCBzbG93IGNhc2UiKSk7CiAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJB
cml0aE11bCBjb250aW51YXRpb24iKSk7CkBAIC03NTYsOCArNzU2LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90WmVybzY0KHJlc3VsdCksIGNvbnRp
bnVhdGlvbiwgc2xvd0Nhc2UpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGNvbmQgPSBtX291dC5iaXRPcihtX291dC5sZXNz
VGhhbihsZWZ0LCBtX291dC5pbnQ2NFplcm8pLCBtX291dC5sZXNzVGhhbihyaWdodCwgbV9vdXQu
aW50NjRaZXJvKSk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9W
YWx1ZSgpLCAwLCBjb25kKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJv
LCBub1ZhbHVlKCksIDAsIG1fb3V0Lmxlc3NUaGFuKGxlZnQsIG1fb3V0LmludDY0WmVybykpOwor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUoKSwgMCwgbV9v
dXQubGVzc1RoYW4ocmlnaHQsIG1fb3V0LmludDY0WmVybykpOwogICAgICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgICAgIH0KQEAgLTc3NywxNyArNzc3LDE3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLQotICAg
IHZvaWQgY29tcGlsZUFyaXRoRGl2TW9kKCkKKyAgICAKKyAgICB2b2lkIGNvbXBpbGVBcml0aERp
digpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+YmluYXJ5VXNlS2luZCgpKSB7CiAg
ICAgICAgIGNhc2UgSW50MzJVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBudW1lcmF0b3IgPSBs
b3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBkZW5vbWluYXRv
ciA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBMQmFzaWNCbG9jayB1bnNhZmVEZW5vbWluYXRvciA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
QXJpdGhEaXZNb2QgdW5zYWZlIGRlbm9taW5hdG9yIikpOwotICAgICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aERpdk1vZCBjb250
aW51YXRpb24iKSk7Ci0gICAgICAgICAgICBMQmFzaWNCbG9jayBkb25lID0gRlRMX05FV19CTE9D
SyhtX291dCwgKCJBcml0aERpdk1vZCBkb25lIikpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sg
dW5zYWZlRGVub21pbmF0b3IgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoRGl2IHVuc2Fm
ZSBkZW5vbWluYXRvciIpKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhEaXYgY29udGludWF0aW9uIikpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgZG9uZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhEaXYg
ZG9uZSIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2Nr
LCAzPiByZXN1bHRzOwogICAgICAgICAgICAgCkBAIC04MDAsMTIgKzgwMCwxMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgTFZhbHVlIG5lZzJUb1RoZTMxID0gbV9vdXQuY29uc3RJbnQzMigtMjE0
NzQ4MzY0Ny0xKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGJ5dGVjb2RlVXNlc0Fz
TnVtYmVyKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICBMVmFs
dWUgY29uZCA9IG1fb3V0LmJpdE9yKG1fb3V0LmlzWmVybzMyKGRlbm9taW5hdG9yKSwgbV9vdXQu
ZXF1YWwobnVtZXJhdG9yLCBuZWcyVG9UaGUzMSkpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLCBjb25kKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvMzIoZGVub21pbmF0b3IpKTsK
KyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQu
ZXF1YWwobnVtZXJhdG9yLCBuZWcyVG9UaGUzMSkpOwogICAgICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB3ZSBjb252ZXJ0IHRoZSByZXN1bHQgdG8gYW4gaW50
IGFmdGVyIHdlJ3JlIGRvbmUuIFNvLAotICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBkZW5vbWlu
YXRvciBpcyB6ZXJvLCB0aGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlIHplcm8uCisgICAgICAgICAg
ICAgICAgLy8gaWYgdGhlIGRlbm9taW5hdG9yIGlzIHplcm8sIHRoZW4gdGhlIHJlc3VsdCBzaG91
bGQgYmUgcmVzdWx0IHNob3VsZCBiZSB6ZXJvLgogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBk
ZW5vbWluYXRvciBpcyBub3QgemVybyAoaS5lLiBpdCdzIC0xIGJlY2F1c2Ugd2UncmUgZ3VhcmRl
ZCBieSB0aGUKICAgICAgICAgICAgICAgICAvLyBjaGVjayBhYm92ZSkgYW5kIHRoZSBudW1lcmF0
b3IgaXMgLTJeMzEgdGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSAtMl4zMS4KICAgICAgICAgICAg
ICAgICAKQEAgLTgzMCw4ICs4MzAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBkb25lKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkp
KSB7Ci0gICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgemVyb051bWVyYXRvciA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiQXJpdGhEaXZNb2QgemVybyBudW1lcmF0b3IiKSk7Ci0gICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbnVtZXJhdG9yQ29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJBcml0aERpdk1vZCBudW1lcmF0b3IgY29udGludWF0aW9uIikpOworICAgICAgICAg
ICAgICAgIExCYXNpY0Jsb2NrIHplcm9OdW1lcmF0b3IgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkFyaXRoRGl2IHplcm8gbnVtZXJhdG9yIikpOworICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG51bWVyYXRvckNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhEaXYg
bnVtZXJhdG9yIGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvMzIobnVtZXJhdG9yKSwgemVyb051bWVyYXRv
ciwgbnVtZXJhdG9yQ29udGludWF0aW9uKTsKICAgICAgICAgICAgICAgICAKQEAgLTg0NSwxNyAr
ODQ1LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVtZXJh
dG9yQ29udGludWF0aW9uLCBpbm5lckxhc3ROZXh0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTFZhbHVlIGRpdk1vZFJlc3VsdCA9IG1fbm9kZS0+b3AoKSA9PSBB
cml0aERpdgotICAgICAgICAgICAgICAgID8gbV9vdXQuZGl2KG51bWVyYXRvciwgZGVub21pbmF0
b3IpCi0gICAgICAgICAgICAgICAgOiBtX291dC5yZW0obnVtZXJhdG9yLCBkZW5vbWluYXRvcik7
CisgICAgICAgICAgICBMVmFsdWUgZGl2aXNpb25SZXN1bHQgPSBtX291dC5kaXYobnVtZXJhdG9y
LCBkZW5vbWluYXRvcik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChieXRlY29kZVVz
ZXNBc051bWJlcihtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7CiAgICAgICAgICAgICAgICAg
c3BlY3VsYXRlKAogICAgICAgICAgICAgICAgICAgICBPdmVyZmxvdywgbm9WYWx1ZSgpLCAwLAot
ICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChtX291dC5tdWwoZGl2TW9kUmVzdWx0
LCBkZW5vbWluYXRvciksIG51bWVyYXRvcikpOworICAgICAgICAgICAgICAgICAgICBtX291dC5u
b3RFcXVhbChtX291dC5tdWwoZGl2aXNpb25SZXN1bHQsIGRlbm9taW5hdG9yKSwgbnVtZXJhdG9y
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcihkaXZNb2RSZXN1bHQpKTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBw
ZW5kKG1fb3V0LmFuY2hvcihkaXZpc2lvblJlc3VsdCkpOwogICAgICAgICAgICAgbV9vdXQuanVt
cChkb25lKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZG9uZSwg
bGFzdE5leHQpOwpAQCAtODY1LDkgKzg2Myw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIE51bWJlclVzZTogewotICAgICAgICAgICAgTFZhbHVlIEMx
ID0gbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZhbHVlIEMyID0g
bG93RG91YmxlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgc2V0RG91YmxlKG1fbm9k
ZS0+b3AoKSA9PSBBcml0aERpdiA/IG1fb3V0LmRvdWJsZURpdihDMSwgQzIpIDogbV9vdXQuZG91
YmxlUmVtKEMxLCBDMikpOworICAgICAgICAgICAgc2V0RG91YmxlKAorICAgICAgICAgICAgICAg
IG1fb3V0LmRvdWJsZURpdihsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJsZSht
X25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIApAQCAtODc3LDYgKzg3NCw5OSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgY29tcGlsZUFyaXRoTW9kKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMlVzZTogeworICAg
ICAgICAgICAgTFZhbHVlIG51bWVyYXRvciA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgTFZhbHVlIGRlbm9taW5hdG9yID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHVuc2FmZURlbm9taW5h
dG9yID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJBcml0aE1vZCB1bnNhZmUgZGVub21pbmF0b3Ii
KSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIkFyaXRoTW9kIGNvbnRpbnVhdGlvbiIpKTsKKyAgICAgICAgICAgIExCYXNpY0Js
b2NrIGRvbmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTW9kIGRvbmUiKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMz4gcmVzdWx0czsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIGFkanVzdGVkRGVub21pbmF0b3IgPSBt
X291dC5hZGQoZGVub21pbmF0b3IsIG1fb3V0LmludDMyT25lKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmFib3ZlKGFkanVzdGVkRGVub21pbmF0b3IsIG1f
b3V0LmludDMyT25lKSwgY29udGludWF0aW9uLCB1bnNhZmVEZW5vbWluYXRvcik7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8o
dW5zYWZlRGVub21pbmF0b3IsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIExWYWx1ZSBuZWcyVG9UaGUzMSA9IG1fb3V0LmNvbnN0SW50MzIoLTIxNDc0ODM2NDctMSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZJWE1FOiAtMl4zMSAvIC0xIHdpbGwgYWN0
dWFsbHkgeWllbGQgbmVnYXRpdmUgemVybywgc28gd2UgY291bGQgaGF2ZSBhCisgICAgICAgICAg
ICAvLyBzZXBhcmF0ZSBjYXNlIGZvciB0aGF0LiBCdXQgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0
ZXIgc28gbXVjaC4KKyAgICAgICAgICAgIGlmIChieXRlY29kZVVzZXNBc051bWJlcihtX25vZGUt
PmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93
LCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzMyKGRlbm9taW5hdG9yKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmVxdWFsKG51bWVy
YXRvciwgbmVnMlRvVGhlMzEpKTsKKyAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIGNhc2Ugd2hlcmUgd2UgY29udmVydCB0aGUgcmVzdWx0IHRvIGFuIGludCBhZnRlciB3ZSdy
ZSBkb25lLiBTbywKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZGVub21pbmF0b3IgaXMgemVy
bywgdGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSByZXN1bHQgc2hvdWxkIGJlIHplcm8uCisgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIGRlbm9taW5hdG9yIGlzIG5vdCB6ZXJvIChpLmUuIGl0J3Mg
LTEgYmVjYXVzZSB3ZSdyZSBndWFyZGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIC8vIGNoZWNr
IGFib3ZlKSBhbmQgdGhlIG51bWVyYXRvciBpcyAtMl4zMSB0aGVuIHRoZSByZXN1bHQgc2hvdWxk
IGJlIC0yXjMxLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IG1vZEJ5WmVybyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJpdGhNb2QgbW9kdWxvIGJ5IHpl
cm8iKSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90TW9kQnlaZXJvID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJBcml0aE1vZCBub3QgbW9kdWxvIGJ5IHplcm8iKSk7CisgICAgICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbmVnMlRvVGhlMzFCeU5lZzEgPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIkFyaXRoTW9kIC0yXjMxLy0xIikpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm8zMihkZW5vbWluYXRvciksIG1vZEJ5WmVy
bywgbm90TW9kQnlaZXJvKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhtb2RCeVplcm8sIG5vdE1vZEJ5WmVybyk7CisgICAgICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmludDMyWmVybykpOworICAgICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoZG9uZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obm90TW9kQnlaZXJvLCBuZWcyVG9UaGUzMUJ5TmVnMSk7CisgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG51bWVyYXRvciwgbmVnMlRvVGhlMzEp
LCBuZWcyVG9UaGUzMUJ5TmVnMSwgY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZWcyVG9UaGUzMUJ5TmVnMSwgY29udGludWF0
aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQu
aW50MzJaZXJvKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuanVtcChkb25lKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBkb25lKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHJlbWFpbmRlciA9
IG1fb3V0LnJlbShudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKCFieXRlY29kZUNhbklnbm9yZU5lZ2F0aXZlWmVybyhtX25vZGUtPmFyaXRoTm9k
ZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgbmVnYXRpdmVOdW1lcmF0
b3IgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTW9kIG5lZ2F0aXZlIG51bWVyYXRvciIp
KTsKKyAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBudW1lcmF0b3JDb250aW51YXRpb24gPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIkFyaXRoTW9kIG51bWVyYXRvciBjb250aW51YXRpb24iKSk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAg
ICAgICAgICAgICAgICBtX291dC5sZXNzVGhhbihudW1lcmF0b3IsIG1fb3V0LmludDMyWmVybyks
CisgICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlTnVtZXJhdG9yLCBudW1lcmF0b3JDb250aW51
YXRpb24pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlu
bmVyTGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhuZWdhdGl2ZU51bWVyYXRvciwgbnVtZXJhdG9y
Q29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzcGVjdWxh
dGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzMyKHJlbWFpbmRlcikp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAobnVtZXJhdG9y
Q29udGludWF0aW9uKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhudW1lcmF0b3JDb250aW51YXRpb24sIGlubmVyTGFzdE5leHQpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNo
b3IocmVtYWluZGVyKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGRvbmUpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhkb25lLCBsYXN0TmV4dCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShtX291dC5pbnQzMiwgcmVzdWx0
cykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIE51bWJlclVzZTogeworICAgICAgICAgICAgc2V0RG91YmxlKAorICAgICAgICAgICAg
ICAgIG1fb3V0LmRvdWJsZVJlbShsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIGxvd0RvdWJs
ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCiAg
ICAgdm9pZCBjb21waWxlQXJpdGhNaW5Pck1heCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+YmluYXJ5VXNlS2luZCgpKSB7CkBAIC05NjAsMTggKzEwNTAsMjAgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93
SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSBtX291dC5uZWcodmFsdWUpOwotICAgICAgICAgICAgaWYgKCFieXRlY29kZUNh
blRydW5jYXRlSW50ZWdlcihtX25vZGUtPmFyaXRoTm9kZUZsYWdzKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhOb2Rl
RmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG5lZ2F0
ZS13aXRoLW92ZXJmbG93IGludHJpbnNpYy4gSG9wZWZ1bGx5IHRoaXMKLSAgICAgICAgICAgICAg
ICAgICAgLy8gZG9lcyB0aGUgdHJpY2ssIHRob3VnaC4KLSAgICAgICAgICAgICAgICAgICAgTFZh
bHVlIG92ZXJmbG93UmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93MzIobV9vdXQuaW50MzJa
ZXJvLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9W
YWx1ZSgpLCAwLCBtX291dC5leHRyYWN0VmFsdWUob3ZlcmZsb3dSZXN1bHQsIDEpKTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93
LCBub1ZhbHVlKCksIDAsIG1fb3V0LnRlc3RJc1plcm8zMih2YWx1ZSwgbV9vdXQuY29uc3RJbnQz
MigweDdmZmZmZmZmKSkpOwotCisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICAg
ICAgaWYgKGJ5dGVjb2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG1fbm9kZS0+YXJpdGhOb2RlRmxhZ3Mo
KSkpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQubmVnKHZhbHVlKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGJ5dGVjb2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG1fbm9kZS0+YXJpdGhO
b2RlRmxhZ3MoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGEgbmVnYXRl
LXdpdGgtb3ZlcmZsb3cgaW50cmluc2ljLiBIb3BlZnVsbHkgdGhpcworICAgICAgICAgICAgICAg
IC8vIGRvZXMgdGhlIHRyaWNrLCB0aG91Z2guCisgICAgICAgICAgICAgICAgTFZhbHVlIG92ZXJm
bG93UmVzdWx0ID0gbV9vdXQuc3ViV2l0aE92ZXJmbG93MzIobV9vdXQuaW50MzJaZXJvLCB2YWx1
ZSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1f
b3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMSkpOworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3VsdCwgMCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgp
LCAwLCBtX291dC50ZXN0SXNaZXJvMzIodmFsdWUsIG1fb3V0LmNvbnN0SW50MzIoMHg3ZmZmZmZm
ZikpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5uZWcodmFsdWUpOwogICAgICAg
ICAgICAgfQotCisgICAgICAgICAgICAKICAgICAgICAgICAgIHNldEludDMyKHJlc3VsdCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTkwLDcgKzEwODIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SW50NTIobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBMVmFsdWUgb3ZlcmZsb3dSZXN1bHQgPSBtX291dC5zdWJXaXRoT3ZlcmZs
b3c2NChtX291dC5pbnQ2NFplcm8sIHZhbHVlKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShJbnQ1
Mk92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0LmV4dHJhY3RWYWx1ZShvdmVyZmxvd1Jlc3Vs
dCwgMSkpOwotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0Lm5lZyh2YWx1ZSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZXh0cmFjdFZhbHVlKG92ZXJmbG93UmVz
dWx0LCAwKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5vVmFsdWUoKSwg
MCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CiAgICAgICAgICAgICBzZXRJbnQ1MihyZXN1bHQp
OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVy
LmNwcAppbmRleCBmOGNiMjI1Li5hMzBhMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBUaW1lci5jcHAKQEAgLTMzLDcgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBQTEFURk9STShFRkwpCisj
aWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxR
TXV0ZXhMb2NrZXI+CisjaW5jbHVkZSA8UVRocmVhZD4KKyNpbmNsdWRlIDxRVGltZXJFdmVudD4K
KyNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2VuZGlmCiAKQEAgLTEy
NCw2ICsxMjksNDQgQEAgdm9pZCBIZWFwVGltZXI6OmludmFsaWRhdGUoKQogewogfQogCisjZWxp
ZiBQTEFURk9STShRVCkKKworSGVhcFRpbWVyOjpIZWFwVGltZXIoVk0qIHZtKQorICAgIDogbV92
bSh2bSkKKyAgICAsIG1fbmV3VGhyZWFkKDApCisgICAgLCBtX211dGV4KFFNdXRleDo6Tm9uUmVj
dXJzaXZlKQoreworICAgIC8vIFRoZSBIZWFwVGltZXIgbWlnaHQgYmUgY3JlYXRlZCBiZWZvcmUg
dGhlIHJ1bkxvb3AgaXMgc3RhcnRlZCwKKyAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhl
IHRocmVhZCBoYXMgYW4gZXZlbnREaXNwYXRjaGVyIGFscmVhZHkuCisgICAgUUV2ZW50TG9vcCBm
YWtlTG9vcCh0aGlzKTsKK30KKworSGVhcFRpbWVyOjp+SGVhcFRpbWVyKCkKK3sKKyAgICBRTXV0
ZXhMb2NrZXIgbG9jaygmbV9tdXRleCk7CisgICAgbV90aW1lci5zdG9wKCk7Cit9CisKK3ZvaWQg
SGVhcFRpbWVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KikKK3sKKyAgICBRTXV0ZXhMb2NrZXIg
bG9jaygmbV9tdXRleCk7CisgICAgaWYgKG1fbmV3VGhyZWFkKSB7CisgICAgICAgIC8vIFdlIG5l
ZWQgdG8gd2FpdCB3aXRoIHByb2Nlc3NpbmcgdW50aWwgd2UgYXJlIG9uIHRoZSByaWdodCB0aHJl
YWQuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBUElFbnRyeVNoaW0gc2hpbShtX3Zt
KTsKKyAgICBkb1dvcmsoKTsKK30KKwordm9pZCBIZWFwVGltZXI6OmN1c3RvbUV2ZW50KFFFdmVu
dCopCit7CisgICAgQVNTRVJUKG1fbmV3VGhyZWFkKTsKKyAgICBRTXV0ZXhMb2NrZXIgbG9jaygm
bV9tdXRleCk7CisgICAgbW92ZVRvVGhyZWFkKG1fbmV3VGhyZWFkKTsKKyAgICBtX25ld1RocmVh
ZCA9IDA7Cit9CisKICNlbGlmIFBMQVRGT1JNKEVGTCkKIAogSGVhcFRpbWVyOjpIZWFwVGltZXIo
Vk0qIHZtKQpAQCAtMTYxLDYgKzIwNCw3IEBAIGJvb2wgSGVhcFRpbWVyOjp0aW1lckV2ZW50KHZv
aWQqIGluZm8pCiAgICAgCiAgICAgcmV0dXJuIEVDT1JFX0NBTExCQUNLX0NBTkNFTDsKIH0KKwog
I2Vsc2UKIEhlYXBUaW1lcjo6SGVhcFRpbWVyKFZNKiB2bSkKICAgICA6IG1fdm0odm0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCmluZGV4IDI3Y2RiYmQuLmY3NTc2ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCkBAIC0zMyw2ICszMywxMSBAQAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZWxpZiBQTEFURk9S
TShCTEFDS0JFUlJZKQogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisjZWxp
ZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyNpbmNsdWRlIDxRTXV0ZXg+
CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVGhyZWFkPgogI2VsaWYgUExBVEZPUk0o
RUZMKQogdHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX1RpbWVyIEVjb3JlX1RpbWVyOwogI2VuZGlmCkBA
IC00MSw3ICs0NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgVk07CiAKKyNpZiBQTEFU
Rk9STShRVCkgJiYgIVVTRShDRikKK2NsYXNzIEhlYXBUaW1lciA6IHB1YmxpYyBRT2JqZWN0IHsK
KyNlbHNlCiBjbGFzcyBIZWFwVGltZXIgeworI2VuZGlmCiBwdWJsaWM6CiAjaWYgVVNFKENGKQog
ICAgIEhlYXBUaW1lcihWTSosIENGUnVuTG9vcFJlZik7CkBAIC02OCw2ICs3NywxMiBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCB0aW1lckRpZEZpcmUoKTsKIAogICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpUaW1lcjxIZWFwVGltZXI+IG1fdGltZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICB2
b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKKyAgICB2b2lkIGN1c3RvbUV2ZW50KFFFdmVu
dCopOworICAgIFFCYXNpY1RpbWVyIG1fdGltZXI7CisgICAgUVRocmVhZCogbV9uZXdUaHJlYWQ7
CisgICAgUU11dGV4IG1fbXV0ZXg7CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAgc3RhdGljIGJv
b2wgdGltZXJFdmVudCh2b2lkKik7CiAgICAgRWNvcmVfVGltZXIqIGFkZChkb3VibGUgZGVsYXks
IHZvaWQqIGFnZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lu
Y3JlbWVudGFsU3dlZXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwCmluZGV4IGFjMDUwYjYuLjAzODQzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcApAQCAtMzcsNyArMzcs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmIFVTRShDRikgfHwgUExBVEZPUk0oQkxBQ0tC
RVJSWSkKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFFU
KQogCiBzdGF0aWMgY29uc3QgZG91YmxlIHN3ZWVwVGltZVNsaWNlID0gLjAxOyAvLyBzZWNvbmRz
CiBzdGF0aWMgY29uc3QgZG91YmxlIHN3ZWVwVGltZVRvdGFsID0gLjEwOwpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogICAgIENGUnVuTG9v
cFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpICsgc19kZWNhZGUpOwogfQogCi0jZWxpZiBQTEFURk9STShCTEFDS0JFUlJZKQorI2Vs
aWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oUVQpCiAgICAKIEluY3JlbWVudGFs
U3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCiAgICAgOiBIZWFwVGltZXIo
aGVhcC0+dm0oKSkKQEAgLTgzLDcgKzgzLDExIEBAIFBhc3NPd25QdHI8SW5jcmVtZW50YWxTd2Vl
cGVyPiBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZShIZWFwKiBoZWFwKQogCiB2b2lkIEluY3Jl
bWVudGFsU3dlZXBlcjo6c2NoZWR1bGVUaW1lcigpCiB7CisjaWYgUExBVEZPUk0oUVQpCisgICAg
bV90aW1lci5zdGFydChzd2VlcFRpbWVTbGljZSAqIHN3ZWVwVGltZU11bHRpcGxpZXIgKiAxMDAw
LCB0aGlzKTsKKyNlbHNlCiAgICAgbV90aW1lci5zdGFydChzd2VlcFRpbWVTbGljZSAqIHN3ZWVw
VGltZU11bHRpcGxpZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpj
YW5jZWxUaW1lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNy
ZW1lbnRhbFN3ZWVwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFs
U3dlZXBlci5oCmluZGV4IDYzMzNiMjYuLjFjNmEzNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsRmluaXNoU3dlZXBpbmcoKTsKIAogcHJpdmF0ZToKLSNpZiBVU0Uo
Q0YpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaWYgVVNFKENGKSB8fCBQTEFURk9STShCTEFD
S0JFUlJZKSB8fCBQTEFURk9STShRVCkKICNpZiBVU0UoQ0YpCiAgICAgSW5jcmVtZW50YWxTd2Vl
cGVyKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCmluZGV4IGNiOTgzYmYuLmMzMjUzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtNjksOCArNjksNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAvLyBzaXplLgogCiAgICAgY2xhc3MgTWFya2VkQmxvY2sgOiBwdWJsaWMgSGVhcEJs
b2NrPE1hcmtlZEJsb2NrPiB7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7Ci0KICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbVNp
emUgPSA4OyAvLyBieXRlcwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJsb2NrU2l6ZSA9
IDY0ICogS0I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgKaW5kZXggYTVkZGNhZi4u
NTgwY2JlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaApAQCAtMzQsOCArMzQs
NiBAQCBjbGFzcyBIZWFwOwogY2xhc3MgV2Vha0ltcGw7CiAKIGNsYXNzIFdlYWtTZXQgewotICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KIHB1YmxpYzoKICAgICBzdGF0
aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lk
KiBjb250ZXh0ID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShXZWFrSW1wbCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVkMTU4YWMuLmY3M2Y4MzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgSlNDOjpNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6U1NFMkNoZWNrU3RhdGUgSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c19zc2UKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKLSNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiSklUU3R1YkNhbGwuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpAQCAtNjY0LDggKzY2Myw2IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogCiAgICAgQVNT
RVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKICAgICAKLSAgICBwcml2YXRlQ29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCk7Ci0gICAgCiAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICBt
X2Rpc2Fzc2VtYmxlci0+c2V0RW5kT2ZDb2RlKGxhYmVsKCkpOwogCkBAIC04MTksMjYgKzgxNiw2
IEBAIHZvaWQgSklUOjpsaW5rU2xvd0NhbGwoQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxM
aW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBjYWxsZXJDb2RlQmxvY2stPnZtKCktPmdldENU
SVN0dWIob2xkU3R5bGVWaXJ0dWFsQ2FsbEdlbmVyYXRvcikuY29kZSgpKTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQotewotICAgIGlmIChtX2V4Y2Vw
dGlvbkNoZWNrcy5lbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9leGNlcHRp
b25DaGVja3MubGluayh0aGlzKTsKLSAgICAKLSAgICAvLyBsb29rdXBFeGNlcHRpb25IYW5kbGVy
IGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBleGVjICh0aGUgQ2FsbEZyYW1lKikuCi0gICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
LSNpZiBDUFUoWDg2KQotICAgIC8vIEZJWE1FOiBzaG91bGQgdXNlIHRoZSBjYWxsIGFic3RyYWN0
aW9uLCBidXQgdGhpcyBpcyBjdXJyZW50bHkgaW4gdGhlIFNwZWN1bGF0aXZlSklUIGxheWVyIQot
ICAgIHBva2UoR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSNlbmRpZgotICAgIG1fY2FsbHMuYXBw
ZW5kKENhbGxSZWNvcmQoY2FsbCgpLCAodW5zaWduZWQpLTEsIEZ1bmN0aW9uUHRyKGxvb2t1cEV4
Y2VwdGlvbkhhbmRsZXIpLnZhbHVlKCkpKTsKLSAgICAvLyBsb29rdXBFeGNlcHRpb25IYW5kbGVy
IGxlYXZlcyB0aGUgaGFuZGxlciBDYWxsRnJhbWUqIGluIHRoZSByZXR1cm5WYWx1ZUdQUiwKLSAg
ICAvLyBhbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIGhhbmRsZXIgaW4gcmV0dXJuVmFsdWVHUFIyLgot
ICAgIGp1bXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCA5MmY3YzIwLi4xNDQzZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQyMSwxOCAr
NDIxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvZGVSZWYgcHJpdmF0ZUNvbXBpbGVD
VElOYXRpdmVDYWxsKFZNKiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
OwogCi0gICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1wVG9IYW5kbGVyKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoanVtcFRvSGFuZGxl
cik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgbV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVj
aygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25I
YW5kbGVycygpOwotCiAgICAgICAgIHN0YXRpYyBib29sIGlzRGlyZWN0UHV0QnlJZChTdHJ1Y3R1
cmVTdHViSW5mbyopOwogCiAgICAgICAgIHZvaWQgYWRkU2xvd0Nhc2UoSnVtcCk7CkBAIC05MTQs
OCArOTAyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTbG93Q2FzZUVudHJ5
PiBtX3Nsb3dDYXNlczsKICAgICAgICAgVmVjdG9yPFN3aXRjaFJlY29yZD4gbV9zd2l0Y2hlczsK
IAotICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNoZWNrczsKLQogICAgICAgICB1bnNpZ25l
ZCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRleDsKICAgICAgICAgdW5zaWduZWQgbV9i
eVZhbEluc3RydWN0aW9uSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fY2FsbExpbmtJbmZvSW5k
ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5j
cHAKaW5kZXggNGIyMzFhYy4uY2FkMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcApAQCAtNjUyLDcgKzY1MiwxMiBAQCB2b2lkIEpJ
VDo6ZW1pdFN1YjMyQ29uc3RhbnQoaW50IGRzdCwgaW50IG9wLCBpbnQzMl90IGNvbnN0YW50LCBS
ZXN1bHRUeXBlIG9wVHlwZQogICAgIC8vIEludDMyIGNhc2UuCiAgICAgZW1pdExvYWQob3AsIHJl
Z1QxLCByZWdUMCk7CiAgICAgSnVtcCBub3RJbnQzMiA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJh
bmNoU3ViMzIoT3ZlcmZsb3csIHJlZ1QwLCBJbW0zMihjb25zdGFudCksIHJlZ1QyLCByZWdUMykp
OyAgIAorI2lmIEVOQUJMRShKSVRfQ09OU1RBTlRfQkxJTkRJTkcpCisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoU3ViMzIoT3ZlcmZsb3csIHJlZ1QwLCBJbW0zMihjb25zdGFudCksIHJlZ1QyLCByZWdU
MykpOworI2Vsc2UKKyAgICBhZGRTbG93Q2FzZShicmFuY2hTdWIzMihPdmVyZmxvdywgcmVnVDAs
IEltbTMyKGNvbnN0YW50KSwgcmVnVDIpKTsKKyNlbmRpZgorICAgIAogICAgIGVtaXRTdG9yZUlu
dDMyKGRzdCwgcmVnVDIsIChvcCA9PSBkc3QpKTsKIAogICAgIC8vIERvdWJsZSBjYXNlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAppbmRleCAxY2YzYjRhLi5iMDY4MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtNzgsNiArNzgsMTEgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURh
dGVUaW1lPgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8ZmVudi5oPgog
I2luY2x1ZGUgPGFybS9hcmNoLmg+CkBAIC01NjksNiArNTc0LDEwIEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6c2V0dXBBcHBsaWNh
dGlvbkxvZ2dpbmcoImpzYyIpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBRQ29y
ZUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oRUZM
KQogICAgIGVjb3JlX2luaXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5wcm8gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLnBybwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmQ3M2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5wcm8KQEAgLTAsMCArMSwzMyBAQAorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIFByb2plY3QgZmlsZSBmb3IgdGhlIGpzYyBiaW5hcnkgKGludGVyYWN0aXZlIGludGVycHJl
dGVyKQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRo
ZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGFwcAorCitUQVJHRVQg
PSBqc2MKK0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1FUIC09IGd1aQorCit3
aW4zMi0qOiBDT05GSUcgKz0gY29uc29sZQord2luMzItbXN2Yyo6IENPTkZJRyArPSBleGNlcHRp
b25zX29mZiBzdGxfb2ZmCit3aW4zMi1tc3ZjKnx3aW4zMi1pY2M6IElOQ0xVREVQQVRIICs9ICQk
Uk9PVF9XRUJLSVRfRElSL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMgorCitXRUJLSVQg
Kz0gamF2YXNjcmlwdGNvcmUgd3RmCisKK1NPVVJDRVMgPSBqc2MuY3BwCisKK3dpbjMyLSogewor
ICAgIExJQlMgKz0gLWxhZHZhcGkzMgorfQorCit3aW5jZSogeworICAgIExJQlMgKz0gbW10aW1l
ci5saWIKK30KKworIyBQcmV2ZW50IHdhcm5pbmdzIGFib3V0IGRpZmZlcmVuY2UgaW4gdmlzaWJp
bGl0eSBvbiBNYWMgT1MgWAorY29udGFpbnMoUVRfQ09ORklHLCByZWR1Y2VfZXhwb3J0cyk6Q09O
RklHICs9IGhpZGVfc3ltYm9scwordW5peDpjb250YWlucyhRVF9DT05GSUcsIHJlZHVjZV9yZWxv
Y2F0aW9ucyk6Q09ORklHICs9IGJzeW1ib2xpY19mdW5jdGlvbnMKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBiZWM5OWE2Li5jZDNkYjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTI1LDggKzEyNSw2IEBA
IHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIAogICAgIEFTU0VSVChS
ZXNvbHZlTW9kZUFuZFR5cGU6Om1hc2sgPT0gMHhmZmZmKTsKIAotICAgIEFTU0VSVChNYXJrZWRC
bG9jazo6YmxvY2tNYXNrID09IH4weGZmZmYpOwotCiAgICAgLy8gRklYTUU6IG1ha2UgdGhlc2Ug
YXNzZXJ0aW9ucyBsZXNzIGhvcnJpYmxlLgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBWZWN0
b3I8aW50PiB0ZXN0VmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDY2ZDM3YTIuLjZiMzk5Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE1Nyw4ICsxNTcsNiBAQCBjb25zdCBEeW5hbWljID0gNgogCiBjb25zdCBSZXNvbHZlTW9k
ZU1hc2sgPSAweGZmZmYKIAotY29uc3QgTWFya2VkQmxvY2tNYXNrID0gfjB4ZmZmZgotCiAjIEFs
bG9jYXRpb24gY29uc3RhbnRzCiBpZiBKU1ZBTFVFNjQKICAgICBjb25zdCBKU0ZpbmFsT2JqZWN0
U2l6ZUNsYXNzSW5kZXggPSAxCkBAIC0zNzMsNyArMzcxLDcgQEAgbWFjcm8gZnVuY3Rpb25Jbml0
aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKICAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KICAg
ICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fdm1bdDFdLCB0MgotICAgIGxvYWRwIFZNOjppbnRlcnByZXRlclt0Ml0s
IHQyCisgICAgbG9hZHAgVk06OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0
IHRvIHRoZSBKU1N0YWNrIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKICAgICBsc2hpZnRwIDMsIHQw
CiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJwYmVxIEludGVycHJldGVyOjptX3N0YWNrICsg
SlNTdGFjazo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKQEAgLTY1Nyw4ICs2NTUsNyBA
QCBfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CiAKIF9sbGludF9vcF9sb29wX2hpbnQ6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQotICAgIGxvYWRwIENv
ZGVCbG9jazo6bV92bVt0MV0sIHQxCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6dm1bc3BdLCB0
MQogICAgIGxvYWRiIFZNOjp3YXRjaGRvZytXYXRjaGRvZzo6bV90aW1lckRpZEZpcmVbdDFdLCB0
MAogICAgIGJ0Ym56IHQwLCAuaGFuZGxlV2F0Y2hkb2dUaW1lcgogLmFmdGVyV2F0Y2hkb2dUaW1l
ckNoZWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlODFjZDUzLi4yZTBjMTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQpAQCAtMzA3LDggKzMwNyw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25l
TGFiZWwsIHNsb3dfcGF0aCkKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRl
cnNbdDFdLCBkb25lTGFiZWwKICAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIsIFBDKSAgICMgVGhp
cyBzbG93X3BhdGggaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQw
ICE9IDAgPT4gZXJyb3IKICAgICBidGl6IHQwLCAuaXNBcml0eUZpeHVwTmVlZGVkCi0gICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QxXSwgdDEK
KyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bVtzcF0sIHQxCiAgICAgbG9hZHAgVk06OmNhbGxG
cmFtZUZvclRocm93W3QxXSwgdDAKICAgICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
W3QxXQogLmlzQXJpdHlGaXh1cE5lZWRlZDoKQEAgLTE3MjcsOCArMTcyNiw3IEBAIF9sbGludF9v
cF9jYXRjaDoKICAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2lu
ZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCiAgICAgIyBzZXQgVk06OnRhcmdldEludGVy
cHJldGVyUENGb3JUaHJvdy4KICAgICBtb3ZlIHQwLCBjZnIKLSAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDMKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bdDNdLCB0MworICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6OnZtW3NwXSwgdDMKICAgICBsb2FkaSBWTTo6dGFyZ2V0SW50ZXJwcmV0ZXJQ
Q0ZvclRocm93W3QzXSwgUEMKICAgICBsb2FkaSBWTTo6bV9leGNlcHRpb24gKyBQYXlsb2FkT2Zm
c2V0W3QzXSwgdDAKICAgICBsb2FkaSBWTTo6bV9leGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0
MQpAQCAtMTc4OSw4ICsxNzg3LDcgQEAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1w
b2xpbmU6CiAgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRo
cm93aW5nIGZyb20gTExJbnRTbG93UGF0aHMpLCBzbwogICAgICMgdGhlIHRocm93IHRhcmdldCBp
cyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgogICAg
ICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wu
Ci0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3Zt
W3QxXSwgdDEKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bVtzcF0sIHQxCiAgICAgbG9hZHAg
Vk06OnRvcENhbGxGcmFtZVt0MV0sIGNmcgogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJv
d1t0MV0sIHQwCiAgICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KQEAgLTE3
OTgsOCArMTc5NSw3IEBAIF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOgog
CiBfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKICAgICBwcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwodDIpCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QxXSwgdDEKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2
bVtzcF0sIHQxCiAgICAgbG9hZHAgVk06OnRvcENhbGxGcmFtZVt0MV0sIGNmcgogICAgIGxvYWRw
IFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCiAgICAgam1wIFZNOjp0YXJnZXRNYWNoaW5l
UENGb3JUaHJvd1t0MV0KQEAgLTE4MTIsOSArMTgwOCw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFt
cG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgIHN0b3JlaSBDZWxsVGFnLCBT
Y29wZUNoYWluICsgVGFnT2Zmc2V0W2Nmcl0KICAgICBzdG9yZWkgdDEsIFNjb3BlQ2hhaW4gKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0KICAgICBpZiBYODYKLSAgICAgICAgbG9hZHAgU2NvcGVDaGFpbltj
ZnJdLCB0MwotICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKLSAgICAgICAgbG9hZHAg
TWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0MworICAgICAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjp2bSArIDRbc3BdLCB0MyAjIEFkZGl0aW9uYWwgb2Zmc2V0IGZv
ciByZXR1cm4gYWRkcmVzcwogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3Qz
XQogICAgICAgICBwZWVrIDAsIHQxCiAgICAgICAgIHN0b3JlcCB0MSwgUmV0dXJuUENbY2ZyXQpA
QCAtMTgyNSwxMyArMTgxOSw5IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFi
bGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgICAgICBtb3ZlIHQwLCBjZnIKICAgICAgICAgY2FsbCBl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0MV0KICAgICAgICAgYWRkcCAxNiAtIDQsIHNwCi0g
ICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDMKLSAgICAgICAgYW5kcCBNYXJrZWRCbG9j
a01hc2ssIHQzCi0gICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0
OjptX3ZtW3QzXSwgdDMKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6dm0gKyA0W3NwXSwg
dDMKICAgICBlbHNpZiBBUk0gb3IgQVJNdjcgb3IgQVJNdjdfVFJBRElUSU9OQUwKLSAgICAgICAg
bG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0MwotICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywg
dDMKLSAgICAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1b
dDNdLCB0MworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bVtzcF0sIHQzCiAgICAgICAg
IHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVbdDNdCiAgICAgICAgIG1vdmUgdDAsIHQyCiAg
ICAgICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MykKQEAgLTE4NDIsMTMgKzE4
MzIsOSBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5j
dGlvbikKICAgICAgICAgbW92ZSB0MiwgY2ZyCiAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNl
dFRvRnVuY3Rpb25bdDFdCiAgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJu
KHQzKQotICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQzCi0gICAgICAgIGFuZHAgTWFy
a2VkQmxvY2tNYXNrLCB0MwotICAgICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsg
V2Vha1NldDo6bV92bVt0M10sIHQzCisgICAgICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OnZtW3Nw
XSwgdDMKICAgICBlbHNpZiBNSVBTIG9yIFNINAotICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nm
cl0sIHQzCi0gICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwotICAgICAgICBsb2FkcCBN
YXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCisgICAgICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6OnZtW3NwXSwgdDMKICAgICAgICAgc3RvcmVwIGNmciwgVk06OnRv
cENhbGxGcmFtZVt0M10KICAgICAgICAgbW92ZSB0MCwgdDIKICAgICAgICAgcHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKHQzKQpAQCAtMTg2MCwxMyArMTg0Niw5IEBAIG1hY3JvIG5hdGl2
ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uKQogICAgICAgICBtb3Zl
IHQwLCBhMAogICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQogICAg
ICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKLSAgICAgICAgbG9hZHAg
U2NvcGVDaGFpbltjZnJdLCB0MwotICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKLSAg
ICAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0
MworICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bVtzcF0sIHQzCiAgICAgZWxzaWYgQ19M
T09QCi0gICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDMKLSAgICAgICAgYW5kcCBNYXJr
ZWRCbG9ja01hc2ssIHQzCi0gICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBX
ZWFrU2V0OjptX3ZtW3QzXSwgdDMKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6dm1bc3Bd
LCB0MwogICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQogICAgICAgICBt
b3ZlIHQwLCB0MgogICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDMpCkBA
IC0xODc3LDEwICsxODU5LDggQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJs
ZU9mZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIG1vdmUgdDIsIGNmcgogICAgICAgICBjbG9vcENh
bGxOYXRpdmUgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCiAgICAgICAgIHJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQzKQotICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nm
cl0sIHQzCi0gICAgICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwotICAgICAgICBsb2FkcCBN
YXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCi0gICAgZWxzZQor
ICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bVtzcF0sIHQzCisgICAgZWxzZSAgCiAgICAg
ICAgIGVycm9yCiAgICAgZW5kCiAgICAgYmluZXEgVk06Om1fZXhjZXB0aW9uICsgVGFnT2Zmc2V0
W3QzXSwgRW1wdHlWYWx1ZVRhZywgLmV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBmYzE2NGQwLi5i
NjE2N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTkzLDggKzE5Myw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJp
dHlDaGVjayhkb25lTGFiZWwsIHNsb3dfcGF0aCkKICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgp
CiAgICAgY0NhbGwyKHNsb3dfcGF0aCwgY2ZyLCBQQykgICAjIFRoaXMgc2xvd19wYXRoIGhhcyBh
IHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCiAg
ICAgYnRpeiB0MCwgLmlzQXJpdHlGaXh1cE5lZWRlZAotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MQotICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVt0MV0sIHQxCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6dm1bc3BdLCB0MQogICAgIGxvYWRwIFZNOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0s
IHQwCiAgICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KIC5pc0FyaXR5Rml4
dXBOZWVkZWQ6CkBAIC0xNTc3LDggKzE1NzYsNyBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgbW92
ZSB0MCwgY2ZyCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQz
Ci0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QzXSwgdDMKKyAgICBsb2FkcCBKSVRTdGFja0Zy
YW1lOjp2bVtzcF0sIHQzCiAgICAgbG9hZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJv
d1t0M10sIFBDCiAgICAgc3VicCBQQiwgUEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0xNjAzLDgg
KzE2MDEsNyBAQCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZToKICAgICAj
IFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBM
TEludFNsb3dQYXRocyksIHNvCiAgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3Nh
cmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCiAgICAgIyBUaGlzIGVzc2Vu
dGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bdDFdLCB0MQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6OnZtW3NwXSwgdDEKICAgICBsb2FkcCBWTTo6dG9wQ2FsbEZy
YW1lW3QxXSwgY2ZyCiAgICAgbG9hZHAgVk06OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKICAg
ICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQpAQCAtMTYxMiw4ICsxNjA5LDcg
QEAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU6CiAKIF9sbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgogICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCh0MikKLSAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKLSAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fdm1bdDFdLCB0MQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OnZtW3NwXSwgdDEKICAg
ICBsb2FkcCBWTTo6dG9wQ2FsbEZyYW1lW3QxXSwgY2ZyCiAgICAgbG9hZHAgVk06OmNhbGxGcmFt
ZUZvclRocm93W3QxXSwgdDAKICAgICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3Qx
XQpAQCAtMTYyMiw5ICsxNjE4LDcgQEAgX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xp
bmU6CiBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlv
bikKICAgICBzdG9yZXAgMCwgQ29kZUJsb2NrW2Nmcl0KICAgICBpZiBYODZfNjQKLSAgICAgICAg
bG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0MAotICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywg
dDAKLSAgICAgICAgbG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1b
dDBdLCB0MAorICAgICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bSArIDhbc3BdLCB0MAogICAg
ICAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QwXQogICAgICAgICBsb2FkcCBDYWxs
ZXJGcmFtZVtjZnJdLCB0MAogICAgICAgICBsb2FkcSBTY29wZUNoYWluW3QwXSwgdDEKQEAgLTE2
MzgsMTggKzE2MzIsMTQgQEAgbWFjcm8gbmF0aXZlQ2FsbFRyYW1wb2xpbmUoZXhlY3V0YWJsZU9m
ZnNldFRvRnVuY3Rpb24pCiAgICAgICAgIG1vdmUgdDAsIGNmciAjIFJlc3RvcmUgY2ZyIHRvIGF2
b2lkIGxvYWRpbmcgZnJvbSBzdGFjawogICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1
bmN0aW9uW3QxXQogICAgICAgICBhZGRwIDE2IC0gOCwgc3AKLSAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbltjZnJdLCB0MwotICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKLSAgICAgICAg
bG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0MworICAg
ICAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjp2bSArIDhbc3BdLCB0MwogCiAgICAgZWxzaWYgQ19M
T09QCiAgICAgICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIHQwCiAgICAgICAgIGxvYWRwIFNj
b3BlQ2hhaW5bdDBdLCB0MQogICAgICAgICBzdG9yZXAgdDEsIFNjb3BlQ2hhaW5bY2ZyXQogCi0g
ICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDMKLSAgICAgICAgYW5kcCBNYXJrZWRCbG9j
a01hc2ssIHQzCi0gICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFrU2V0
OjptX3ZtW3QzXSwgdDMKKyAgICAgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6dm1bc3BdLCB0Mwog
ICAgICAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3QzXQogCiAgICAgICAgIG1vdmUg
dDAsIHQyCkBAIC0xNjYyLDkgKzE2NTIsNyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShl
eGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbikKICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1
dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQogCiAgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKHQzKQotICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQzCi0gICAg
ICAgIGFuZHAgTWFya2VkQmxvY2tNYXNrLCB0MwotICAgICAgICBsb2FkcCBNYXJrZWRCbG9jazo6
bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCisgICAgICAgIGxvYWRwIEpJVFN0YWNr
RnJhbWU6OnZtW3NwXSwgdDMKICAgICBlbHNlCiAgICAgICAgIGVycm9yCiAgICAgZW5kCkBAIC0x
Njc1LDggKzE2NjMsOCBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zm
c2V0VG9GdW5jdGlvbikKICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDEpCiAg
ICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBQQgotICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVtQQl0sIHQwCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6dm1bc3BdLCB0MAogICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxsRnJhbWVbdDBd
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF90aHJvd19mcm9tX25hdGl2ZV9jYWxsKQogICAgIGpt
cCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MTZlZWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJB
cnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaCIKLQotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gQXJyYXlJdGVyYXRvckNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yKSB9OwotCi12b2lkIEFy
cmF5SXRlcmF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDg5ZDVkOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaAorKysgL2Rldi9udWxs
CkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpZm5kZWYgQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yX2gKLSNkZWZpbmUgQXJy
YXlJdGVyYXRvckNvbnN0cnVjdG9yX2gKLQotI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEFycmF5SXRlcmF0b3JQcm90b3R5cGU7Ci0KLWNs
YXNzIEFycmF5SXRlcmF0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKLQotICAgIHN0YXRp
YyBBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKikKLSAgICB7Ci0gICAgICAgIEFycmF5SXRl
cmF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBBcnJheUl0ZXJhdG9yQ29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAgICB9Ci0KLSAgICBERUNMQVJF
X0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAg
ICB9Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotfTsKLQotfQotCi0jZW5kaWYgLy8g
IWRlZmluZWQoQXJyYXlJdGVyYXRvckNvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzhmYTE1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmgiCi0KLSNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gQXJyYXlJdGVyYXRvclByb3RvdHlw
ZTo6c19pbmZvID0geyAiQXJyYXkgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEFycmF5SXRlcmF0b3JQcm90b3R5cGUpIH07Ci0KLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0KEV4ZWNT
dGF0ZSopOwotCi12b2lkIEFycmF5SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0KLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPm5leHQsIGFycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LCBEb250RW51
bSwgMCk7Ci19Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjcmVhdGVJdGVyYXRvclJlc3VsdChD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgQXJyYXlJdGVyYXRpb25LaW5kIGtpbmQsIHNpemVfdCBpbmRl
eCwgSlNWYWx1ZSByZXN1bHQsIGJvb2wgZG9uZSkKLXsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgSlNP
YmplY3QqIHJlc3VsdE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGNhbGxGcmFtZSk7Ci0g
ICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3QoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPnBy
b3BlcnR5TmFtZXMoKS5kb25lLCBqc0Jvb2xlYW4oZG9uZSkpOwotICAgIHN3aXRjaCAoa2luZCAm
IH5BcnJheUl0ZXJhdGVTcGFyc2VUYWcpIHsKLSAgICBjYXNlIEFycmF5SXRlcmF0ZUtleToKLSAg
ICAgICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3QoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZSwgZG9uZSA/IGpzVW5kZWZpbmVkKCkgOiBqc051bWJlcihp
bmRleCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFycmF5SXRlcmF0ZVZhbHVlOgotICAg
ICAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdChjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+
cHJvcGVydHlOYW1lcygpLnZhbHVlLCBkb25lID8ganNVbmRlZmluZWQoKSA6IHJlc3VsdCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXlJdGVyYXRlS2V5VmFsdWU6IHsKLSAgICAgICAg
aWYgKCFkb25lKSB7Ci0gICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAg
ICAgICAgICAgYXJncy5hcHBlbmQoanNOdW1iZXIoaW5kZXgpKTsKLSAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKHJlc3VsdCk7Ci0gICAgICAgICAgICBKU0FycmF5KiByZXN1bHRBcnJheSA9IGNvbnN0
cnVjdEFycmF5KGNhbGxGcmFtZSwgMCwgZ2xvYmFsT2JqZWN0LCBhcmdzKTsKLSAgICAgICAgICAg
IHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5wcm9w
ZXJ0eU5hbWVzKCkudmFsdWUsIHJlc3VsdEFycmF5KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdChjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+
cHJvcGVydHlOYW1lcygpLnZhbHVlLCBqc1VuZGVmaW5lZCgpKTsKLQotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHRPYmplY3QpOwotfQot
ICAgIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUl0ZXJhdG9yUHJvdG90eXBl
TmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICBKU0FycmF5SXRlcmF0b3IqIGl0ZXJh
dG9yID0ganNEeW5hbWljQ2FzdDxKU0FycmF5SXRlcmF0b3IqPihjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKLSAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgQXJyYXlJdGVyYXRvci5uZXh0KCkgb24gYSBu
b24tQXJyYXlJdGVyYXRvciBvYmplY3QiKSk7Ci0gICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0
ID0gaXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXRlcmF0
b3ItPm5leHRJbmRleCgpOwotICAgIEFycmF5SXRlcmF0aW9uS2luZCBraW5kID0gaXRlcmF0b3It
Pml0ZXJhdGlvbktpbmQoKTsKLSAgICBKU1ZhbHVlIGpzTGVuZ3RoID0gSlNWYWx1ZShpdGVyYXRl
ZE9iamVjdCkuZ2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KTsKLSAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0KLSAgICBzaXplX3QgbGVuZ3RoID0ganNMZW5ndGgu
dG9VSW50MzIoY2FsbEZyYW1lKTsKLSAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Ci0KLSAgICBpZiAoaW5k
ZXggPj0gbGVuZ3RoKSB7Ci0gICAgICAgIGl0ZXJhdG9yLT5maW5pc2goKTsKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0KGNhbGxGcmFtZSwga2luZCwgaW5kZXgsIGpzVW5kZWZp
bmVkKCksIHRydWUpOwotICAgIH0KLSAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBpdGVyYXRlZE9i
amVjdC0+dHJ5R2V0SW5kZXhRdWlja2x5KGluZGV4KSkgewotICAgICAgICBpdGVyYXRvci0+c2V0
TmV4dEluZGV4KGluZGV4ICsgMSk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVJdGVyYXRvclJlc3Vs
dChjYWxsRnJhbWUsIGtpbmQsIGluZGV4LCByZXN1bHQsIGZhbHNlKTsKLSAgICB9Ci0gICAgCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwotICAgIFByb3BlcnR5U2xvdCBzbG90
KGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBpZiAoa2luZCA+IEFycmF5SXRlcmF0ZVNwYXJzZVRhZykg
ewotICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgaW5kZXhlZCBwcm9wZXJ0eSB3aWxsIGJl
IGFuIG93biBwcm9wZXJ0eSBzbyBjYWNoZSB0aGUgZ2V0T3duUHJvcGVydHkKLSAgICAgICAgLy8g
bWV0aG9kIGxvY2FsbHkKLSAgICAgICAgYXV0byBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4ID0g
aXRlcmF0ZWRPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXg7
Ci0gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoaXRlcmF0ZWRPYmplY3QsIGNhbGxGcmFtZSwgaW5kZXgsIHNs
b3QpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUs
IGluZGV4KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChpdGVyYXRlZE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaW5kZXgs
IHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJh
bWUsIGluZGV4KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGluZGV4Kys7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGl0ZXJhdGVkT2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpbmRleCwgc2xvdCkpCi0gICAgICAgIHJlc3Vs
dCA9IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpbmRleCk7Ci0KLSAgICBpZiAoaW5kZXggPT0g
bGVuZ3RoKQotICAgICAgICBpdGVyYXRvci0+ZmluaXNoKCk7Ci0gICAgZWxzZQotICAgICAgICBp
dGVyYXRvci0+c2V0TmV4dEluZGV4KGluZGV4ICsgMSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUl0ZXJh
dG9yUmVzdWx0KGNhbGxGcmFtZSwga2luZCwgaW5kZXgsIGpzVW5kZWZpbmVkKCksIGluZGV4ID09
IGxlbmd0aCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTBlZTlhNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUl0ZXJhdG9yUHJvdG90eXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFy
cmF5SXRlcmF0b3JQcm90b3R5cGVfaAotI2RlZmluZSBBcnJheUl0ZXJhdG9yUHJvdG90eXBlX2gK
LQotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBBcnJh
eUl0ZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgot
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotCi0gICAgc3RhdGljIEFycmF5SXRl
cmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgQXJyYXlJdGVyYXRvclBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlJdGVy
YXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEFycmF5SXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgIHJldHVybiBwcm90b3R5cGU7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZP
OwotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIEFycmF5SXRlcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKLSAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKLX07Ci0KLX0KLQot
I2VuZGlmIC8vICFkZWZpbmVkKEFycmF5SXRlcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiMmY2YTk4
Li41ZjhjNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgotI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nSm9pbmVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC02NSw5ICs2NCw2IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNS
ZWR1Y2UoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVmFsdWVz
KEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNLZXlzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNFbnRyaWVzKEV4ZWNTdGF0ZSopOwogCiB9CiAKQEAgLTExNiw5
ICsxMTIsNiBAQCBjb25zdCBDbGFzc0luZm8gQXJyYXlQcm90b3R5cGU6OnNfaW5mbyA9IHsiQXJy
YXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCBFeGVjU3RhdAogICByZWR1Y2UgICAgICAgICBhcnJh
eVByb3RvRnVuY1JlZHVjZSAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgcmVkdWNlUmln
aHQgICAgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodCAgICBEb250RW51bXxGdW5jdGlvbiAxCiAg
IG1hcCAgICAgICAgICAgIGFycmF5UHJvdG9GdW5jTWFwICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQotICB2YWx1ZXMgICAgICAgICBhcnJheVByb3RvRnVuY1ZhbHVlcyAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKLSAgZW50cmllcyAgICAgICAgYXJyYXlQcm90b0Z1bmNFbnRyaWVz
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCi0gIGtleXMgICAgICAgICAgIGFycmF5UHJvdG9G
dW5jS2V5cyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogQGVuZAogKi8KIApAQCAtMTMz
OCwyMiArMTMzMSw0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcigtMSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FycmF5SXRlcmF0b3I6OmNy
ZWF0ZShleGVjLCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmFycmF5SXRlcmF0b3JT
dHJ1Y3R1cmUoKSwgQXJyYXlJdGVyYXRlVmFsdWUsIHRoaXNPYmopKTsKLX0KLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0VudHJpZXMoRXhlY1N0YXRlKiBleGVj
KQotewotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhp
cyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBBcnJheUl0ZXJhdGVLZXlWYWx1
ZSwgdGhpc09iaikpOwotfQotICAgIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0tleXMoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVj
dChleGVjKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlJdGVyYXRvcjo6Y3Jl
YXRlKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlJdGVyYXRvclN0
cnVjdHVyZSgpLCBBcnJheUl0ZXJhdGVLZXksIHRoaXNPYmopKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAppbmRleCBkODdkMGI0Li41NDIyYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNk
ZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwK
ICAgICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKEFycmF5QnVmZmVyKSBcCi0gICAgbWFjcm8o
QXJyYXlJdGVyYXRvcikgXAogICAgIG1hY3JvKEJZVEVTX1BFUl9FTEVNRU5UKSBcCiAgICAgbWFj
cm8oQm9vbGVhbikgXAogICAgIG1hY3JvKERhdGUpIFwKQEAgLTgxLDcgKzgwLDYgQEAKICAgICBt
YWNybyhkZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAogICAgIG1hY3Jv
KGRvY3VtZW50KSBcCi0gICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwK
ICAgICBtYWNybyhldmFsKSBcCiAgICAgbWFjcm8oZXhlYykgXApAQCAtMTA4LDcgKzEwNiw2IEBA
CiAgICAgbWFjcm8obWVzc2FnZSkgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXAogICAgIG1hY3Jv
KG5hbWUpIFwKLSAgICBtYWNybyhuZXh0KSBcCiAgICAgbWFjcm8obm93KSBcCiAgICAgbWFjcm8o
bnVtSW5saW5lZENhbGxzKSBcCiAgICAgbWFjcm8obnVtSW5saW5lZEdldEJ5SWRzKSBcCkBAIC0y
MTEsNyArMjA4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIg
dW5kZXJzY29yZVByb3RvOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHRoaXNJZGVudGlmaWVy
OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHVzZVN0cmljdElkZW50aWZpZXI7Ci0gICAgICAg
IGNvbnN0IFByaXZhdGVOYW1lIGl0ZXJhdG9yUHJpdmF0ZU5hbWU7CiAKICAgICAgICAgCiAjZGVm
aW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfS0VZV09SRF9OQU1FX0dMT0JBTChuYW1lKSBjb25z
dCBJZGVudGlmaWVyIG5hbWUjI0tleXdvcmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAppbmRleCBjZTY3Nzc5Li4xNzRjNjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KIAotI2lmIE9TKFdJTkNFKQorI2lmIE9TKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQp
CiBleHRlcm4gIkMiIHRpbWVfdCB0aW1lKHRpbWVfdCogdGltZXIpOyAvLyBQcm92aWRlZCBieSBs
aWJjZS4KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAppbmRleCBkMGM5NDEwLi5kMTgxMzZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0UoQ0YpIHx8IFBM
QVRGT1JNKEVGTCkKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwp
CiAKIGNvbnN0IGRvdWJsZSBnY1RpbWVTbGljZVBlck1CID0gMC4wMTsgLy8gUGVyY2VudGFnZSBv
ZiBDUFUgdGltZSB3ZSB3aWxsIHNwZW5kIHRvIHJlY2xhaW0gMSBNQgogY29uc3QgZG91YmxlIG1h
eEdDVGltZVNsaWNlID0gMC4wNTsgLy8gVGhlIG1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lIHdl
IHdhbnQgdG8gdXNlIGZvciBvcHBvcnR1bmlzdGljIHRpbWVyLXRyaWdnZXJlZCBjb2xsZWN0aW9u
cy4KQEAgLTcwLDYgKzcwLDEyIEBAIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1CiAgICAgLCBtX2Rl
bGF5KHNfZGVjYWRlKQogewogfQorI2VsaWYgUExBVEZPUk0oUVQpCitEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAgOiBH
Q0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKKyAgICAsIG1fZGVsYXkoaG91cikKK3sKK30K
ICNlbGlmIFBMQVRGT1JNKEVGTCkKIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayho
ZWFwLT52bSgpLCBXVEY6OmlzTWFpblRocmVhZCgpKQpAQCAtMTExLDYgKzExNywyMSBAQCB2b2lk
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKICAgICBtX2RlbGF5ID0g
c19kZWNhZGU7CiAgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQo
KSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBzX2RlY2FkZSk7CiB9CisjZWxpZiBQTEFU
Rk9STShRVCkKKwordm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVy
KGRvdWJsZSBuZXdEZWxheSkKK3sKKyAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2Rl
bGF5KQorICAgICAgICByZXR1cm47CisgICAgbV9kZWxheSA9IG5ld0RlbGF5OworICAgIG1fdGlt
ZXIuc3RhcnQobmV3RGVsYXkgKiAxMDAwLCB0aGlzKTsKK30KKwordm9pZCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit7CisgICAgbV9kZWxheSA9IGhvdXI7CisgICAg
bV90aW1lci5zdG9wKCk7Cit9CiAjZWxpZiBQTEFURk9STShFRkwpCiB2b2lkIERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAppbmRl
eCA1ZGYwOWUwLi5hN2FlYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVm
KTsKICNlbmRpZgotI2lmIFVTRShDRikgfHwgUExBVEZPUk0oRUZMKQorI2lmIFVTRShDRikgfHwg
UExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkKIHByb3RlY3RlZDoKICAgICB2b2lkIGNhbmNl
bFRpbWVyKCk7CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKGRvdWJsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggYmQxZWVjYy4uZDRkYjEwYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtNjAsMTEgKzYw
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBDU3RyaW5nIGFzY2lpKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmcuYXNjaWkoKTsgfQogICAgICAgICBDU3RyaW5nIHV0Zjgo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy51dGY4KCk7IH0KLSAgICAgICAgCi0gICAgICAgIHN0
YXRpYyBJZGVudGlmaWVyIGNyZWF0ZUVtcHR5VW5pcXVlKFZNKiB2bSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVF
bXB0eVVuaXF1ZSgpKSk7Ci0gICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSWRlbnRpZmllciBj
cmVhdGVMQ2hhckZyb21VQ2hhcihWTSogdm0sIGNvbnN0IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKSB7
IHJldHVybiBJZGVudGlmaWVyKHZtLCBhZGQ4KHZtLCBzLCBsZW5ndGgpKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE1OWYxZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgot
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gSlNBcnJheUl0ZXJhdG9y
OjpzX2luZm8gPSB7ICJBcnJheUl0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU0FycmF5SXRlcmF0b3IpIH07Ci0KLXZvaWQgSlNBcnJheUl0ZXJhdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgQXJyYXlJdGVyYXRpb25L
aW5kIGtpbmQsIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Ci0gICAgbV9pdGVyYXRpb25LaW5kID0ga2luZDsKLSAgICBtX2l0ZXJhdGVk
T2JqZWN0LnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxZWYwNTU3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBKU0FycmF5SXRlcmF0b3JfaAotI2RlZmluZSBKU0FycmF5SXRlcmF0b3JfaAotCi0jaW5j
bHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gQXJyYXlJdGVyYXRp
b25LaW5kIHsKLSAgICBBcnJheUl0ZXJhdGVLZXksCi0gICAgQXJyYXlJdGVyYXRlVmFsdWUsCi0g
ICAgQXJyYXlJdGVyYXRlS2V5VmFsdWUsCi0gICAgQXJyYXlJdGVyYXRlU3BhcnNlVGFnID0gNCwK
LSAgICBBcnJheUl0ZXJhdGVTcGFyc2VLZXksCi0gICAgQXJyYXlJdGVyYXRlU3BhcnNlVmFsdWUs
Ci0gICAgQXJyYXlJdGVyYXRlU3BhcnNlS2V5VmFsdWUKLX07Ci0KLWNsYXNzIEpTQXJyYXlJdGVy
YXRvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
SlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQXJyYXlJdGVyYXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCkK
LSAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgICAgIEpTQXJyYXlJdGVy
YXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5SXRlcmF0
b3I+KHZtLmhlYXApKSBKU0FycmF5SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGlu
c3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSwga2lu
ZCwgaXRlcmF0ZWRPYmplY3QpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotCi0g
ICAgQXJyYXlJdGVyYXRpb25LaW5kIGl0ZXJhdGlvbktpbmQoKSBjb25zdCB7IHJldHVybiBtX2l0
ZXJhdGlvbktpbmQ7IH0KLSAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdGVkT2JqZWN0LmdldCgpOyB9Ci0gICAgc2l6ZV90IG5leHRJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmV4dEluZGV4OyB9Ci0gICAgdm9pZCBzZXROZXh0SW5kZXgoc2l6ZV90
IG5leHRJbmRleCkgeyBtX25leHRJbmRleCA9IG5leHRJbmRleDsgfQotICAgIHZvaWQgZmluaXNo
KCkgeyBtX25leHRJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0K
LSAgICAKLSAgICB1c2luZyBKU05vbkZpbmFsT2JqZWN0OjphcnJheVN0b3JhZ2VPck51bGw7Ci0K
LXByaXZhdGU6Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIEpTQXJyYXlJdGVyYXRvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAgICAg
LCBtX25leHRJbmRleCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBBcnJheUl0ZXJhdGlvbktpbmQsIEpTT2JqZWN0KiBpdGVy
YXRlZE9iamVjdCk7Ci0gICAgCi0gICAgQXJyYXlJdGVyYXRpb25LaW5kIG1faXRlcmF0aW9uS2lu
ZDsKLSAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1faXRlcmF0ZWRPYmplY3Q7Ci0gICAgc2l6
ZV90IG1fbmV4dEluZGV4OwotfTsKLQotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSlNBcnJheUl0
ZXJhdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggOTJmNWFiYTEuLmNlODQwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMyLDggKzMyLDYgQEAKIAog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKLSNp
bmNsdWRlICJBcnJheUl0ZXJhdG9yQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJBcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJC
b29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCkBAIC01
NSw3ICs1Myw2IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUu
aCIKLSNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0Nh
bGxiYWNrRnVuY3Rpb24uaCIKQEAgLTM4NSwxMiArMzgyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5f
VFlQRShQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKQogCiAjdW5kZWYgUFVUX0NPTlNU
UlVDVE9SX0ZPUl9TSU1QTEVfVFlQRQotICAgIFByb3RvdHlwZU1hcCYgcHJvdG90eXBlTWFwID0g
dm0ucHJvdG90eXBlTWFwOwotICAgIFN0cnVjdHVyZSogaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUg
PSBwcm90b3R5cGVNYXAuZW1wdHlPYmplY3RTdHJ1Y3R1cmVGb3JQcm90b3R5cGUobV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCksIEpTRmluYWxPYmplY3Q6OmRlZmF1bHRJbmxpbmVDYXBhY2l0eSgpKTsK
LSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgaXRlcmF0b3JSZXN1bHRTdHJ1
Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmRvbmUsIDAsIDAsIG9mZnNldCk7Ci0gICAgaXRlcmF0
b3JSZXN1bHRTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwg
aXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCAwLCAwLCBv
ZmZzZXQpOwotICAgIG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBpdGVy
YXRvclJlc3VsdFN0cnVjdHVyZSk7CisKIAogICAgIG1fZXZhbEZ1bmN0aW9uLnNldCh2bSwgdGhp
cywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFs
LnN0cmluZygpLCBnbG9iYWxGdW5jRXZhbCkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5ldmFsLCBtX2V2YWxGdW5jdGlvbi5nZXQoKSwgRG9u
dEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggYTY1YjlmNS4uMjc0YzliZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC04MSw3ICs4MSw2IEBAIHN0cnVjdCBIYXNoVGFi
bGU7CiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3Ip
IFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyLCBhcnJheUJ1ZmZlciwgYXJyYXlCdWZmZXIsIEpT
QXJyYXlCdWZmZXIsIEFycmF5QnVmZmVyKSBcCiAgICAgbWFjcm8oV2Vha01hcCwgd2Vha01hcCwg
d2Vha01hcCwgSlNXZWFrTWFwLCBXZWFrTWFwKSBcCi0gICAgbWFjcm8oQXJyYXlJdGVyYXRvciwg
YXJyYXlJdGVyYXRvciwgYXJyYXlJdGVyYXRvciwgSlNBcnJheUl0ZXJhdG9yLCBBcnJheUl0ZXJh
dG9yKSBcCiAKICNkZWZpbmUgREVDTEFSRV9TSU1QTEVfQlVJTFRJTl9UWVBFKGNhcGl0YWxOYW1l
LCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lKSBcCiAgICAgY2xh
c3MgSlMgIyMgY2FwaXRhbE5hbWU7IFwKQEAgLTE5NSw4ICsxOTQsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pbnRlcm5hbEZ1bmN0aW9uU3RydWN0dXJlOwotICAgIAot
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmU7CiAK
ICNpZiBFTkFCTEUoUFJPTUlTRVMpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9t
aXNlU3RydWN0dXJlOwpAQCAtNDA1LDcgKzQwMiw2IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUq
IHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICBTdHJ1
Y3R1cmUqIGl0ZXJhdG9yUmVzdWx0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRv
clJlc3VsdFN0cnVjdHVyZS5nZXQoKTsgfQogCiAjaWYgRU5BQkxFKFBST01JU0VTKQogICAgIFN0
cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvbWlzZVN0cnVj
dHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4
IGRiNjYyMzcuLjU1M2ZiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmgKQEAgLTIxNSw3ICsyMTUsNyBAQCBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIEpTU2NvcGU6Omds
b2JhbE9iamVjdCgpCiAKIGlubGluZSBWTSogSlNTY29wZTo6dm0oKQogeyAKLSAgICByZXR1cm4g
TWFya2VkQmxvY2s6OmJsb2NrRm9yKHRoaXMpLT52bSgpOworICAgIHJldHVybiBIZWFwOjpoZWFw
KHRoaXMpLT52bSgpOwogfQogCiBpbmxpbmUgUmVnaXN0ZXImIFJlZ2lzdGVyOjpvcGVyYXRvcj0o
SlNTY29wZSogc2NvcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJl
Z0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKaW5kZXggMDVk
ZjkwZS4uNzNjZjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdF
eHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcApAQCAtNDYs
NiArNDYsMTEgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KFFUKQorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURhdGVUaW1lPgor
I2VuZGlmCisKIGNvbnN0IGludCBNYXhMaW5lTGVuZ3RoID0gMTAwICogMTAyNDsKIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKQEAgLTE3OSw2ICsxODQsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogICAgIHRpbWVCZWdpblBlcmlvZCgxKTsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oUVQpCisgICAgUUNvcmVBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisjZW5kaWYKKwog
ICAgIC8vIEluaXRpYWxpemUgSlNDIGJlZm9yZSBnZXR0aW5nIFZNLgogICAgIEpTQzo6aW5pdGlh
bGl6ZVRocmVhZGluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci95YXJyLnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL3lhcnIucHJpCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlOWI0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci95YXJyLnByaQpAQCAtMCwwICsxLDEyIEBACisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgUHJvamVjdCBmaWxlIGZvciBZQVJSCisjCisjIFNlZSAnVG9vbHMvcW1ha2Uv
UkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKK1NPVVJDRVMgKz0gXAorICAgICQkUFdEL1lhcnJJbnRlcnByZXRlci5jcHAgXAorICAgICQk
UFdEL1lhcnJQYXR0ZXJuLmNwcCBcCisgICAgJCRQV0QvWWFyclN5bnRheENoZWNrZXIuY3BwIFwK
KyAgICAkJFBXRC9ZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1F0V2ViS2l0LnBybyBiL1NvdXJjZS9RdFdlYktpdC5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uN2NmYTQwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9RdFdlYktp
dC5wcm8KQEAgLTAsMCArMSw0NiBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJvb3QgcHJvamVjdCBmaWxl
IGZvciBRdFdlYktpdAorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2
aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IHN1YmRp
cnMKK0NPTkZJRyArPSBvcmRlcmVkCisKK2FwaS5maWxlID0gYXBpLnByaQorU1VCRElSUyArPSBh
cGkKKworYnVpbGQ/KHdlYmtpdDEpIHsKKyAgICB3ZWJraXR3aWRnZXRzLmZpbGUgPSB3aWRnZXRz
YXBpLnByaQorICAgIFNVQkRJUlMgKz0gd2Via2l0d2lkZ2V0cworfQorCitidWlsZD8od2Via2l0
MikgeworICAgIHdlYnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvV2ViUHJvY2Vzcy5wcm8KKyAgICBT
VUJESVJTICs9IHdlYnByb2Nlc3MKKyAgICBlbmFibGU/KFBMVUdJTl9QUk9DRVNTKSB7CisgICAg
ICAgIHBsdWdpbnByb2Nlc3MuZmlsZSA9IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy5wcm8KKyAgICAg
ICAgU1VCRElSUyArPSBwbHVnaW5wcm9jZXNzCisgICAgfQorCisgICAgZW5hYmxlPyhTVUlEX1NB
TkRCT1hfTElOVVgpIHsKKyAgICAgICAgc2FuZGJveHByb2Nlc3MuZmlsZSA9IFdlYktpdDIvU2Fu
ZGJveFByb2Nlc3MucHJvCisgICAgICAgIFNVQkRJUlMgKz0gc2FuZGJveHByb2Nlc3MKKyAgICB9
Cit9CisKK2RlY2xhcmF0aXZlLmZpbGUgPSBXZWJLaXQvcXQvZGVjbGFyYXRpdmUvZGVjbGFyYXRp
dmUucHJvCitkZWNsYXJhdGl2ZS5tYWtlZmlsZSA9IE1ha2VmaWxlLmRlY2xhcmF0aXZlCitoYXZl
PyhRVFFVSUNLKTogU1VCRElSUyArPSBkZWNsYXJhdGl2ZQorCitidWlsZD8od2Via2l0MSkgewor
ICAgIGJ1aWxkPyh0ZXN0cykgeworICAgICAgICB0ZXN0cy5maWxlID0gdGVzdHMucHJpCisgICAg
ICAgIFNVQkRJUlMgKz0gdGVzdHMKKyAgICB9CisKKyAgICBleGFtcGxlcy5maWxlID0gV2ViS2l0
L3F0L2V4YW1wbGVzL2V4YW1wbGVzLnBybworICAgIGV4YW1wbGVzLkNPTkZJRyArPSBub19kZWZh
dWx0X3RhcmdldAorICAgIGV4YW1wbGVzLm1ha2VmaWxlID0gTWFrZWZpbGUKKyAgICBTVUJESVJT
ICs9IGV4YW1wbGVzCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg3N2U5Y2EuLjJjZjZjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDQyICsxLDMg
QEAKLTIwMTMtMTAtMDIgIE5hZGF2IFJvdGVtICA8bnJvdGVtQGFwcGxlLmNvbT4KLQotICAgICAg
ICBFbGltaW5hdGUgYSBicmFuY2ggaW4gRmFzdEJpdFZlY3RvciBzZXRBbmRDaGVjaywgbWFrZSBp
dCB2ZWN0b3JpemFibGUuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjIyMjkKLQotICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KLQot
ICAgICAgICBUaGUgQ1BVIGlzIHVubGlrZWx5IHRvIHByZWRpY3QgdGhlIGJyYW5jaCBpbiBzZXRB
bmRDaGVjay4gSSBjaGFuZ2VkIHRoZSBjb2RlIHRvIHVzZSBjb25kaXRpb25hbCBpbnN0cnVjdGlv
bnMuCi0KLSAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgotICAgICAgICAoV1RGOjpGYXN0
Qml0VmVjdG9yOjpzZXRBbmRDaGVjayk6Ci0KLTIwMTMtMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgUXQgY29kZSBmcm9tIFdURgot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjIxCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCi0KLSAgICAgICAgSSdtIGtlZXBp
bmcgdGhlIFBMQVRGT1JNKFFUKSBkZWZpbmVzIGluIFBsYXRmb3JtLmggZm9yIG5vdyBzbyB3ZSBj
YW4gYXNzZXNzIGlmIHRoZXJlIGFyZSBhbnkKLSAgICAgICAgUXQgb25seSBmZWF0dXJlcyB0aGF0
IHdlIGNhbiByZW1vdmUgbGF0ZXIuCi0KLSAgICAgICAgKiBXVEYucHJpOiBSZW1vdmVkLgotICAg
ICAgICAqIFdURi5wcm86IFJlbW92ZWQuCi0gICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgot
ICAgICAgICAqIHd0Zi9DdXJyZW50VGltZS5jcHA6Ci0gICAgICAgICogd3RmL0Rpc2FsbG93Q1R5
cGUuaDoKLSAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5jcHA6Ci0gICAgICAgICogd3RmL0ZlYXR1
cmVEZWZpbmVzLmg6Ci0gICAgICAgICogd3RmL3F0L01haW5UaHJlYWRRdC5jcHA6IFJlbW92ZWQu
Ci0gICAgICAgICogd3RmL3F0L1N0cmluZ1F0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiB3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaDoKLSAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoK
LSAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6flN0cmluZ0ltcGwpOgotICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaDoKLSAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgotICAg
ICAgICAoV1RGOjpTdHJpbmc6OmZvcm1hdCk6Ci0gICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
Lmg6Ci0KIDIwMTMtMDktMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgc3VwcG9ydCBmb3IgRE9NRmlsZVN5c3RlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYucHJpIGIvU291cmNlL1dURi9XVEYucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmQzNGZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL1dURi5wcmkK
QEAgLTAsMCArMSw0NSBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgZmlsZSBjb250YWlucyBzaGFy
ZWQgcnVsZXMgdXNlZCBib3RoIHdoZW4gYnVpbGRpbmcgV1RGIGl0c2VsZgorIyBhbmQgZm9yIHRh
cmdldHMgdGhhdCBkZXBlbmQgaW4gc29tZSB3YXkgb24gV1RGLgorIworIyBTZWUgJ1Rvb2xzL3Ft
YWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjIEFsbCBleHRlcm5hbCBtb2R1bGVzIHNob3VsZCBpbmNsdWRlIFdURiBoZWFkZXJz
IGJ5IHByZWZpeGluZyB3aXRoICJ3dGYiICgjaW5jbHVkZSA8d3RmL3NvbWUvdGhpbmcuaD4pLgor
SU5DTFVERVBBVEggKz0gJCRQV0QKKworbWFjIHsKKyAgICAjIE1hYyBPUyBkb2VzIHNoaXAgbGli
aWN1IGJ1dCBub3QgdGhlIGFzc29jaWF0ZWQgaGVhZGVyIGZpbGVzLgorICAgICMgVGhlcmVmb3Jl
IFdlYktpdCBwcm92aWRlcyBhZGVxdWF0ZSBoZWFkZXIgZmlsZXMuCisgICAgSU5DTFVERVBBVEgg
Kz0gJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV1RGL2ljdQorICAgIExJQlMgKz0gLWxpY3Vj
b3JlCit9IGVsc2UgeworICAgIGNvbnRhaW5zKFFUX0NPTkZJRyxpY3UpIHsKKyAgICAgICAgd2lu
MzI6IExJQlMgKz0gLWxpY3VpbiAtbGljdXVjIC1saWN1ZHQKKyAgICAgICAgZWxzZTogTElCUyAr
PSAtbGljdWkxOG4gLWxpY3V1YyAtbGljdWRhdGEKKyAgICB9Cit9CisKK2xpbnV4LSo6dXNlPyhH
U1RSRUFNRVIpIHsKKyAgICBERUZJTkVTICs9IFdURl9VU0VfR0xJQj0xCisgICAgUEtHQ09ORklH
ICs9IGdsaWItMi4wIGdpby0yLjAKK30KKword2luMzItKiB7CisgICAgTElCUyArPSAtbHdpbm1t
CisgICAgTElCUyArPSAtbGdkaTMyCit9IGVsc2UgeworICAgIExJQlMgKz0gLWx6Cit9CisKK3Fu
eCB7CisgICAgIyByZXF1aXJlZCBmb3IgdGltZWdtCisgICAgTElCUyArPSAtbG5idXRpbAorfQor
CittYWMgeworICAgIExJQlMgKz0gLWZyYW1ld29yayBBcHBLaXQKK30KKworIyBNU1ZDIGlzIGxh
Y2tpbmcgc3RkaW50LmggYXMgd2VsbCBhcyBpbnR0eXBlcy5oLgord2luMzItbXN2Yyp8d2luMzIt
aWNjfHdpbmNlKjogSU5DTFVERVBBVEggKz0gJCRST09UX1dFQktJVF9ESVIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29zLXdpbjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9Tb3Vy
Y2UvV1RGL1dURi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU5YTM4
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtMCwwICsxLDI2NCBA
QAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgV1RGCisjCisjIFNlZSAnVG9vbHMv
cW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitURU1QTEFURSA9IGxpYgorVEFSR0VUID0gV1RGCisKK2luY2x1ZGUoV1RGLnByaSkK
KworQ09ORklHICs9IHN0YXRpY2xpYgorCitWUEFUSCArPSAkJFBXRC93dGYKKworSU5DTFVERVBB
VEggKz0gJCRQV0Qvd3RmCisKK3dpbmNlKiB7CisgICAgIyBmb3IgbXQxOTkzN2FyLmMKKyAgICBJ
TkNMVURFUEFUSCArPSAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9UaGlyZFBhcnR5Cit9CisK
K0hFQURFUlMgKz0gXAorICAgIEFTQ0lJQ1R5cGUuaCBcCisgICAgQXNzZXJ0aW9ucy5oIFwKKyAg
ICBBdG9taWNzLmggXAorICAgIEFWTFRyZWUuaCBcCisgICAgQml0bWFwLmggXAorICAgIEJpdEFy
cmF5LmggXAorICAgIEJpdFZlY3Rvci5oIFwKKyAgICBCbG9vbUZpbHRlci5oIFwKKyAgICBCb3Vu
ZHNDaGVja2VkUG9pbnRlci5oIFwKKyAgICBCdW1wUG9pbnRlckFsbG9jYXRvci5oIFwKKyAgICBC
eXRlT3JkZXIuaCBcCisgICAgQ2hlY2tlZEFyaXRobWV0aWMuaCBcCisgICAgQ29tcGlsZXIuaCBc
CisgICAgQ29tcHJlc3Npb24uaCBcCisgICAgQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aCBcCisgICAgQ3VycmVudFRpbWUuaCBcCisgICAgRGF0ZU1hdGguaCBcCisgICAgRGVjaW1hbE51
bWJlci5oIFwKKyAgICBEZWNvZGVyLmggXAorICAgIERhdGFMb2cuaCBcIAorICAgIERlcXVlLmgg
XAorICAgIERpc2FsbG93Q1R5cGUuaCBcCisgICAgZHRvYS5oIFwKKyAgICBkdG9hL2JpZ251bS1k
dG9hLmggXAorICAgIGR0b2EvYmlnbnVtLmggXAorICAgIGR0b2EvY2FjaGVkLXBvd2Vycy5oIFwK
KyAgICBkdG9hL2RpeS1mcC5oIFwKKyAgICBkdG9hL2RvdWJsZS1jb252ZXJzaW9uLmggXAorICAg
IGR0b2EvZG91YmxlLmggXAorICAgIGR0b2EvZmFzdC1kdG9hLmggXAorICAgIGR0b2EvZml4ZWQt
ZHRvYS5oIFwKKyAgICBkdG9hL3N0cnRvZC5oIFwKKyAgICBkdG9hL3V0aWxzLmggXAorICAgIER5
bmFtaWNBbm5vdGF0aW9ucy5oIFwKKyAgICBFbmNvZGVyLmggXAorICAgIEVudW1DbGFzcy5oIFwK
KyAgICBFeHBvcnRNYWNyb3MuaCBcCisgICAgRmFzdE1hbGxvYy5oIFwKKyAgICBGZWF0dXJlRGVm
aW5lcy5oIFwKKyAgICBGaWxlUHJpbnRTdHJlYW0uaCBcCisgICAgRml4ZWRBcnJheS5oIFwKKyAg
ICBGb3J3YXJkLmggXAorICAgIEZ1bmN0aW9uRGlzcGF0Y2hlci5oIFwKKyAgICBGdW5jdGlvbmFs
LmggXAorICAgIEdldFB0ci5oIFwKKyAgICBHcmVnb3JpYW5EYXRlVGltZS5oIFwKKyAgICBIYXNo
Q291bnRlZFNldC5oIFwKKyAgICBIYXNoRnVuY3Rpb25zLmggXAorICAgIEhhc2hJdGVyYXRvcnMu
aCBcCisgICAgSGFzaE1hcC5oIFwKKyAgICBIYXNoU2V0LmggXAorICAgIEhhc2hUYWJsZS5oIFwK
KyAgICBIYXNoVHJhaXRzLmggXAorICAgIEhleE51bWJlci5oIFwKKyAgICBMaXN0SGFzaFNldC5o
IFwKKyAgICBMb2NrZXIuaCBcCisgICAgTWFpblRocmVhZC5oIFwKKyAgICBNYWxsb2NQdHIuaCBc
CisgICAgTWF0aEV4dHJhcy5oIFwKKyAgICBNRDUuaCBcCisgICAgTWVkaWFUaW1lLmggXAorICAg
IE1lc3NhZ2VRdWV1ZS5oIFwKKyAgICBNZXRhQWxsb2NhdG9yLmggXAorICAgIE1ldGFBbGxvY2F0
b3JIYW5kbGUuaCBcCisgICAgUmVmLmggXAorICAgIE5vbmNvcHlhYmxlLmggXAorICAgIE51bWJl
ck9mQ29yZXMuaCBcCisgICAgUkFNU2l6ZS5oIFwKKyAgICBPU0FsbG9jYXRvci5oIFwKKyAgICBP
U1JhbmRvbVNvdXJjZS5oIFwKKyAgICBPd25QdHIuaCBcCisgICAgT3duUHRyQ29tbW9uLmggXAor
ICAgIFBhY2tlZEludFZlY3Rvci5oIFwKKyAgICBQYWdlQWxsb2NhdGlvbi5oIFwKKyAgICBQYWdl
QWxsb2NhdGlvbkFsaWduZWQuaCBcCisgICAgUGFnZUJsb2NrLmggXAorICAgIFBhZ2VSZXNlcnZh
dGlvbi5oIFwKKyAgICBQYXJhbGxlbEpvYnMuaCBcCisgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5o
IFwKKyAgICBQYXJhbGxlbEpvYnNMaWJkaXNwYXRjaC5oIFwKKyAgICBQYXJhbGxlbEpvYnNPcGVu
TVAuaCBcCisgICAgUGFzc093blB0ci5oIFwKKyAgICBQYXNzUmVmUHRyLmggXAorICAgIFBsYXRm
b3JtLmggXAorICAgIFBvc3NpYmx5TnVsbC5oIFwKKyAgICBQcmludFN0cmVhbS5oIFwKKyAgICBQ
cm9jZXNzSUQuaCBcCisgICAgUmFuZG9tTnVtYmVyLmggXAorICAgIFJhbmRvbU51bWJlclNlZWQu
aCBcCisgICAgUmF3UG9pbnRlci5oIFwKKyAgICBSZWRCbGFja1RyZWUuaCBcCisgICAgUmVmQ291
bnRlZC5oIFwKKyAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCBcCisgICAgUmVmUHRyLmggXAor
ICAgIFJlZlB0ckhhc2hNYXAuaCBcCisgICAgUmV0YWluUHRyLmggXAorICAgIFNIQTEuaCBcCisg
ICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oIFwKKyAgICBTcGVjdHJ1bS5oIFwKKyAgICBTdGFja0Jv
dW5kcy5oIFwKKyAgICBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBcCisgICAgU3RkTGliRXh0cmFzLmgg
XAorICAgIFN0cmluZ0V4dHJhcy5oIFwKKyAgICBTdHJpbmdIYXNoZXIuaCBcCisgICAgU3RyaW5n
UHJpbnRTdHJlYW0uaCBcCisgICAgVENQYWNrZWRDYWNoZS5oIFwKKyAgICBUQ1NwaW5Mb2NrLmgg
XAorICAgIFRDU3lzdGVtQWxsb2MuaCBcCisgICAgdGV4dC9BU0NJSUZhc3RQYXRoLmggXAorICAg
IHRleHQvQXRvbWljU3RyaW5nLmggXAorICAgIHRleHQvQXRvbWljU3RyaW5nSGFzaC5oIFwKKyAg
ICB0ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCBcCisgICAgdGV4dC9BdG9taWNTdHJpbmdUYWJsZS5o
IFwKKyAgICB0ZXh0L0Jhc2U2NC5oIFwKKyAgICB0ZXh0L0NTdHJpbmcuaCBcCisgICAgdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggXAorICAgIHRleHQvU3RyaW5nQnVmZmVyLmggXAor
ICAgIHRleHQvU3RyaW5nQnVpbGRlci5oIFwKKyAgICB0ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgg
XAorICAgIHRleHQvU3RyaW5nSGFzaC5oIFwKKyAgICB0ZXh0L1N0cmluZ0ltcGwuaCBcCisgICAg
dGV4dC9TdHJpbmdPcGVyYXRvcnMuaCBcCisgICAgdGV4dC9UZXh0UG9zaXRpb24uaCBcCisgICAg
dGV4dC9XVEZTdHJpbmcuaCBcCisgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaCBcCisgICAg
VGhyZWFkaW5nLmggXAorICAgIFRocmVhZGluZ1ByaW1pdGl2ZXMuaCBcCisgICAgVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oIFwKKyAgICBUaHJlYWRTYWZlUmVmQ291bnRlZC5oIFwKKyAgICBU
aHJlYWRTcGVjaWZpYy5oIFwKKyAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmggXAorICAgIHVu
aWNvZGUvQ29sbGF0b3IuaCBcCisgICAgdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIFwKKyAgICB1
bmljb2RlL1NjcmlwdENvZGVzRnJvbUlDVS5oIFwKKyAgICB1bmljb2RlL1VuaWNvZGUuaCBcCisg
ICAgdW5pY29kZS9Vbmljb2RlTWFjcm9zRnJvbUlDVS5oIFwKKyAgICB1bmljb2RlL1VURjguaCBc
CisgICAgVmFsdWVDaGVjay5oIFwKKyAgICBWZWN0b3IuaCBcCisgICAgVmVjdG9yVHJhaXRzLmgg
XAorICAgIFZNVGFncy5oIFwKKyAgICBXVEZUaHJlYWREYXRhLmggXAorICAgIFdlYWtQdHIuaAor
Cit1bml4OiBIRUFERVJTICs9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAorCitTT1VS
Q0VTICs9IFwKKyAgICBBc3NlcnRpb25zLmNwcCBcCisgICAgQXRvbWljcy5jcHAgXAorICAgIEJp
dFZlY3Rvci5jcHAgXAorICAgIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBcCisgICAgQ29tcHJlc3Np
b24uY3BwIFwKKyAgICBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAgXAorICAgIEN1
cnJlbnRUaW1lLmNwcCBcCisgICAgRGF0ZU1hdGguY3BwIFwKKyAgICBEYXRhTG9nLmNwcCBcCisg
ICAgRGVjaW1hbE51bWJlci5jcHAgXAorICAgIGR0b2EuY3BwIFwKKyAgICBkdG9hL2JpZ251bS1k
dG9hLmNjIFwKKyAgICBkdG9hL2JpZ251bS5jYyBcCisgICAgZHRvYS9jYWNoZWQtcG93ZXJzLmNj
IFwKKyAgICBkdG9hL2RpeS1mcC5jYyBcCisgICAgZHRvYS9kb3VibGUtY29udmVyc2lvbi5jYyBc
CisgICAgZHRvYS9mYXN0LWR0b2EuY2MgXAorICAgIGR0b2EvZml4ZWQtZHRvYS5jYyBcCisgICAg
ZHRvYS9zdHJ0b2QuY2MgXAorICAgIEZhc3RNYWxsb2MuY3BwIFwKKyAgICBGaWxlUHJpbnRTdHJl
YW0uY3BwIFwKKyAgICBGdW5jdGlvbkRpc3BhdGNoZXIuY3BwIFwKKyAgICBHcmVnb3JpYW5EYXRl
VGltZS5jcHAgXAorICAgIGdvYmplY3QvR093blB0ci5jcHAgXAorICAgIGdvYmplY3QvR1JlZlB0
ci5jcHAgXAorICAgIEhhc2hUYWJsZS5jcHAgXAorICAgIE1ENS5jcHAgXAorICAgIE1haW5UaHJl
YWQuY3BwIFwKKyAgICBNZWRpYVRpbWUuY3BwIFwKKyAgICBNZXRhQWxsb2NhdG9yLmNwcCBcCisg
ICAgTnVtYmVyT2ZDb3Jlcy5jcHAgXAorICAgIFJBTVNpemUuY3BwIFwKKyAgICBPU1JhbmRvbVNv
dXJjZS5jcHAgXAorICAgIHF0L01haW5UaHJlYWRRdC5jcHAgXAorICAgIHF0L1N0cmluZ1F0LmNw
cCBcCisgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBcCisgICAgUGFnZUJsb2NrLmNwcCBc
CisgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAgXAorICAgIFByaW50U3RyZWFtLmNwcCBcCisg
ICAgUmFuZG9tTnVtYmVyLmNwcCBcCisgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBcCisg
ICAgU0hBMS5jcHAgXAorICAgIFNpeENoYXJhY3Rlckhhc2guY3BwIFwKKyAgICBTdGFja0JvdW5k
cy5jcHAgXAorICAgIFN0cmluZ1ByaW50U3RyZWFtLmNwcCBcCisgICAgVENTeXN0ZW1BbGxvYy5j
cHAgXAorICAgIFRocmVhZGluZy5jcHAgXAorICAgIFdURlRocmVhZERhdGEuY3BwIFwKKyAgICB0
ZXh0L0F0b21pY1N0cmluZy5jcHAgXAorICAgIHRleHQvQXRvbWljU3RyaW5nVGFibGUuY3BwIFwK
KyAgICB0ZXh0L0Jhc2U2NC5jcHAgXAorICAgIHRleHQvQ1N0cmluZy5jcHAgXAorICAgIHRleHQv
U3RyaW5nQnVpbGRlci5jcHAgXAorICAgIHRleHQvU3RyaW5nSW1wbC5jcHAgXAorICAgIHRleHQv
U3RyaW5nU3RhdGljcy5jcHAgXAorICAgIHRleHQvV1RGU3RyaW5nLmNwcCBcCisgICAgdW5pY29k
ZS9Db2xsYXRvckRlZmF1bHQuY3BwIFwKKyAgICB1bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAg
XAorICAgIHVuaWNvZGUvVVRGOC5jcHAKKwordW5peDogU09VUkNFUyArPSBcCisgICAgT1NBbGxv
Y2F0b3JQb3NpeC5jcHAgXAorICAgIFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwK
KyAgICBUaHJlYWRpbmdQdGhyZWFkcy5jcHAKKword2luKnx3aW5jZSo6IFNPVVJDRVMgKz0gXAor
ICAgIE9TQWxsb2NhdG9yV2luLmNwcCBcCisgICAgVGhyZWFkU3BlY2lmaWNXaW4uY3BwIFwKKyAg
ICBUaHJlYWRpbmdXaW4uY3BwCisKK3dpbjMyIHsKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAg
dGhyZWFkcy93aW4vQmluYXJ5U2VtYXBob3JlV2luLmNwcAorICAgIElOQ0xVREVQQVRIICs9ICQk
UFdEL3d0Zi90aHJlYWRzCit9IGVsc2UgeworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICB0aHJl
YWRzL0JpbmFyeVNlbWFwaG9yZS5jcHAKK30KKworUVQgKz0gY29yZQorUVQgLT0gZ3VpCisKKyot
ZysrKjpRTUFLRV9DWFhGTEFHU19SRUxFQVNFIC09IC1PMgorKi1nKysqOlFNQUtFX0NYWEZMQUdT
X1JFTEVBU0UgKz0gLU8zCisKKypzaDQqIHsKKyAgICBRTUFLRV9DWFhGTEFHUyArPSAtbWllZWUg
LXcKKyAgICBRTUFLRV9DRkxBR1MgICArPSAtbWllZWUgLXcKK30KKworKi1nKysqOmxlc3NUaGFu
KFFUX0dDQ19NQUpPUl9WRVJTSU9OLCA1KTpsZXNzVGhhbihRVF9HQ0NfTUlOT1JfVkVSU0lPTiwg
NikgeworICAgICMgRm9yIEdDQyA0LjUgYW5kIGJlZm9yZSB3ZSBkaXNhYmxlIEMrKzB4IG1vZGUg
aW4gSlNDIGZvciBpZiBlbmFibGVkIGluIFF0J3MgbWtzcGVjCisgICAgUU1BS0VfQ1hYRkxBR1Mg
LT0gLXN0ZD1jKysweCAtc3RkPWdudSsrMHggLXN0ZD1jKysxMSAtc3RkPWdudSsrMTEKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Bc3NlcnRpb25zLmNwcAppbmRleCBhYTkwMmM2Li5kMzBjMTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25z
LmNwcApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV1RGUmVwb3J0QmFja3RyYWNlKCkKIH0KIAog
I2lmIE9TKERBUldJTikgfHwgT1MoTElOVVgpCi0jICBpZiBQTEFURk9STShHVEspCisjICBpZiBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogIyAgICBpZiBkZWZpbmVkKF9fR0xJQkNfXykg
JiYgIWRlZmluZWQoX19VQ0xJQkNfXykKICMgICAgICBkZWZpbmUgV1RGX1VTRV9CQUNLVFJBQ0Vf
U1lNQk9MUyAxCiAjICAgIGVuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DdXJyZW50
VGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAKaW5kZXggNTVlMmFiMy4u
NjI3ZDI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0N1cnJlbnRUaW1lLmNwcApAQCAtNTksNiArNTksMTAgQEAKICNpbmNs
dWRlIDxnbGliLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFFbGFw
c2VkVGltZXI+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKICNpZiBPUyhXSU5ET1dTKQpA
QCAtMjc5LDEzICsyODMsMjIgQEAgZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
CiAgICAgcmV0dXJuIGVjb3JlX3RpbWVfZ2V0KCk7CiB9CiAKLSNlbGlmIFVTRShHTElCKSAmJiAh
UExBVEZPUk0oRUZMKQorI2VsaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpICYmICFQTEFU
Rk9STShRVCkKIAogZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpCiB7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oZ19nZXRfbW9ub3RvbmljX3RpbWUoKSAvIDEwMDAw
MDAuMCk7CiB9CiAKKyNlbGlmIFBMQVRGT1JNKFFUKQorCitkb3VibGUgbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkKK3sKKyAgICBBU1NFUlQoUUVsYXBzZWRUaW1lcjo6aXNNb25vdG9uaWMo
KSk7CisgICAgc3RhdGljIFFFbGFwc2VkVGltZXIgdGltZXI7CisgICAgcmV0dXJuIHRpbWVyLm5z
ZWNzRWxhcHNlZCgpIC8gMS4wZTk7Cit9CisKICNlbGlmIE9TKFFOWCkKIAogZG91YmxlIG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EaXNh
bGxvd0NUeXBlLmggYi9Tb3VyY2UvV1RGL3d0Zi9EaXNhbGxvd0NUeXBlLmgKaW5kZXggODlmYzE3
MC4uYzNjYzA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGlzYWxsb3dDVHlwZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Rpc2FsbG93Q1R5cGUuaApAQCAtNDEsNyArNDEsNyBAQAogLy8g
b3IgPGdsaWIvZ2kxOG4tbGliLmg+LCB3aGljaCBpbiB0dXJuIGluY2x1ZGUgPHhsb2NhbGUvX2N0
eXBlLmg+IHdoaWNoIHVzZXMKIC8vIGlzYWNpaSgpLiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KLSNpZiAhKE9TKERBUldJTikgJiYgUExBVEZPUk0oR1RLKSkgJiYgIU9TKFFOWCkgJiYgIWRl
ZmluZWQoX0xJQkNQUF9WRVJTSU9OKQorI2lmICFQTEFURk9STShRVCkgJiYgIShPUyhEQVJXSU4p
ICYmIFBMQVRGT1JNKEdUSykpICYmICFPUyhRTlgpICYmICFkZWZpbmVkKF9MSUJDUFBfVkVSU0lP
TikKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA4Yzhm
M2QyLi5kZmVmYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0xMDEsOCArMTAxLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIEFTU0VSVCht
X251bUJpdHMgPT0gb3RoZXIubV9udW1CaXRzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YXJyYXlMZW5ndGgoKTsgaS0tOykgewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2FycmF5W2ld
ICE9IG90aGVyLm1fYXJyYXlbaV07CisgICAgICAgICAgICBpZiAobV9hcnJheVtpXSA9PSBvdGhl
ci5tX2FycmF5W2ldKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbV9h
cnJheVtpXSA9IG90aGVyLm1fYXJyYXlbaV07CisgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
Y3BwCmluZGV4IDViMjk1NTUuLjAwMGFiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RNYWxsb2MuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwCkBAIC0xMDcs
NyArMTA3LDkgQEAKICNlbmRpZgogCiAvLyBIYXJkZW4gdGhlIHBvaW50ZXJzIHN0b3JlZCBpbiB0
aGUgVENNYWxsb2MgbGlua2VkIGxpc3RzCisjaWYgIVBMQVRGT1JNKFFUKQogI2RlZmluZSBFTkFC
TEVfVENNQUxMT0NfSEFSREVOSU5HIDEKKyNlbmRpZgogCiAvLyBVc2UgYSBiYWNrZ3JvdW5kIHRo
cmVhZCB0byBwZXJpb2RpY2FsbHkgc2NhdmVuZ2UgbWVtb3J5IHRvIHJlbGVhc2UgYmFjayB0byB0
aGUgc3lzdGVtCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXgg
MTMzMGY5OS4uYmIxODIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmlu
ZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC0yOTksNiArMjk5
LDE3IEBACiAKICNlbmRpZiAvKiBQTEFURk9STShHVEspICovCiAKKy8qIC0tLS0tLS0tLSBRdCBw
b3J0IChVbml4LCBXaW5kb3dzLCBNYWMsIFdpbkNFKSAtLS0tLS0tLS0gKi8KKyNpZiBQTEFURk9S
TShRVCkKKworI2lmIE9TKFVOSVgpCisjaWYgIWRlZmluZWQoRU5BQkxFX1BMVUdJTl9QQUNLQUdF
X1NJTVBMRV9IQVNIKQorI2RlZmluZSBFTkFCTEVfUExVR0lOX1BBQ0tBR0VfU0lNUExFX0hBU0gg
MQorI2VuZGlmCisjZW5kaWYKKworI2VuZGlmIC8qIFBMQVRGT1JNKFFUKSAqLworCiAvKiAtLS0t
LS0tLS0gQmxhY2tiZXJyeSBwb3J0IChRTlgpIC0tLS0tLS0tLSAqLwogI2lmIFBMQVRGT1JNKEJM
QUNLQkVSUlkpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBiL1Nv
dXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCA3MDFlNzQwLi45YjIyM2E1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvTWF0
aEV4dHJhcy5oCkBAIC0yOTYsNiArMjk2LDExIEBAIGlubGluZSBpbnQgY2xhbXBUb0ludGVnZXIo
ZG91YmxlIHZhbHVlKQogICAgIHJldHVybiBjbGFtcFRvPGludD4odmFsdWUpOwogfQogCitpbmxp
bmUgaW50IGNsYW1wVG9VbnNpZ25lZChkb3VibGUgdmFsdWUpCit7CisgICAgcmV0dXJuIGNsYW1w
VG88dW5zaWduZWQ+KHZhbHVlKTsKK30KKwogaW5saW5lIGZsb2F0IGNsYW1wVG9GbG9hdChkb3Vi
bGUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KHZhbHVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9x
dC9NYWluVGhyZWFkUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYw
NmE3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9xdC9NYWluVGhyZWFkUXQu
Y3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBD
b21wdXRpbmcgU2VydmljZXMgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTWFpblRocmVhZC5oIgorCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNp
bmNsdWRlIDxRRXZlbnQ+CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVGhyZWFkPgor
CituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGludCBzX21haW5UaHJlYWRJbnZva2VyRXZlbnRU
eXBlOworCitjbGFzcyBNYWluVGhyZWFkSW52b2tlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBR
X09CSkVDVAorcHVibGljOgorICAgIE1haW5UaHJlYWRJbnZva2VyKCk7CisgICAgdmlydHVhbCBi
b29sIGV2ZW50KFFFdmVudCopOworfTsKKworTWFpblRocmVhZEludm9rZXI6Ok1haW5UaHJlYWRJ
bnZva2VyKCkKK3sKKyAgICBzX21haW5UaHJlYWRJbnZva2VyRXZlbnRUeXBlID0gUUV2ZW50Ojpy
ZWdpc3RlckV2ZW50VHlwZSgpOworfQorCitib29sIE1haW5UaHJlYWRJbnZva2VyOjpldmVudChR
RXZlbnQqIGUpCit7CisgICAgaWYgKGUtPnR5cGUoKSAhPSBzX21haW5UaHJlYWRJbnZva2VyRXZl
bnRUeXBlKQorICAgICAgICByZXR1cm4gUU9iamVjdDo6ZXZlbnQoZSk7CisKKyAgICBkaXNwYXRj
aEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1FfR0xP
QkFMX1NUQVRJQyhNYWluVGhyZWFkSW52b2tlciwgd2Via2l0X21haW5fdGhyZWFkX2ludm9rZXIp
CisKK3ZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCit7CisgICAgd2Via2l0X21h
aW5fdGhyZWFkX2ludm9rZXIoKTsKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25z
T25NYWluVGhyZWFkKCkKK3sKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQod2Via2l0
X21haW5fdGhyZWFkX2ludm9rZXIoKSwgbmV3IFFFdmVudChzdGF0aWNfY2FzdDxRRXZlbnQ6OlR5
cGU+KHNfbWFpblRocmVhZEludm9rZXJFdmVudFR5cGUpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjaW5jbHVkZSAiTWFpblRocmVhZFF0Lm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3F0L1N0cmluZ1F0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3F0L1N0cmluZ1F0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjFlOTM5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvcXQvU3RyaW5nUXQuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2luY2x1ZGUg
PFFTdHJpbmc+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBTdHJpbmcgY29udmVyc2lvbnMKK1N0
cmluZzo6U3RyaW5nKGNvbnN0IFFTdHJpbmcmIHFzdHIpCit7CisgICAgaWYgKHFzdHIuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjphZG9wdChjb25z
dF9jYXN0PFFTdHJpbmcmPihxc3RyKS5kYXRhX3B0cigpKTsKK30KKworU3RyaW5nOjpTdHJpbmco
Y29uc3QgUVN0cmluZ1JlZiYgcmVmKQoreworICAgIGlmICghcmVmLnN0cmluZygpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPGNvbnN0IFVDaGFyKj4ocmVmLnVuaWNvZGUoKSksIHJlZi5sZW5ndGgoKSk7Cit9CisK
K1N0cmluZzo6b3BlcmF0b3IgUVN0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwpCisg
ICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisKKyAgICBpZiAoUVN0cmluZ0RhdGEqIHFTdHJpbmdE
YXRhID0gbV9pbXBsLT5xU3RyaW5nRGF0YSgpKSB7CisgICAgICAgIC8vIFRoZSBXVEYgc3RyaW5n
IHdhcyBhZG9wdGVkIGZyb20gYSBRU3RyaW5nIGF0IHNvbWUgcG9pbnQsIHNvIHdlCisgICAgICAg
IC8vIGNhbiBqdXN0IGFkb3B0IHRoZSBRU3RyaW5nRGF0YSBsaWtlIGEgcmVndWxhciBRU3RyaW5n
IGNvcHkuCisgICAgICAgIHFTdHJpbmdEYXRhLT5yZWYucmVmKCk7CisgICAgICAgIFFTdHJpbmdE
YXRhUHRyIHFTdHJpbmdEYXRhUG9pbnRlciA9IHsgcVN0cmluZ0RhdGEgfTsKKyAgICAgICAgcmV0
dXJuIFFTdHJpbmcocVN0cmluZ0RhdGFQb2ludGVyKTsKKyAgICB9CisKKyAgICBpZiAoaXM4Qml0
KCkgJiYgIW1faW1wbC0+aGFzMTZCaXRTaGFkb3coKSkgeworICAgICAgICAvLyBBc2tpbmcgZm9y
IGNoYXJhY3RlcnMoKSBvZiBhbiA4LWJpdCBzdHJpbmcgd2lsbCBtYWtlIGEgMTYtYml0IGNvcHkg
aW50ZXJuYWxseQorICAgICAgICAvLyBpbiBXVEY6OlN0cmluZy4gU2luY2Ugd2UncmUgZ29pbmcg
dG8gY29weSB0aGUgZGF0YSB0byBRU3RyaW5nRGF0YSBhbnl3YXlzLCB3ZQorICAgICAgICAvLyBj
YW4gZG8gdGhlIGNvbnZlcnNpb24gb3Vyc2VsdmVzIGFuZCBzYXZlIG9uZSBjb3B5LgorICAgICAg
ICByZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihjaGFyYWN0ZXJzOCgpKSwgbGVuZ3RoKCkpOworICAgIH0KKworICAgIHJldHVybiBRU3RyaW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihjaGFyYWN0ZXJzKCkpLCBsZW5ndGgoKSk7
Cit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oCmluZGV4IDJhNzgxMTAuLmE2M2Q2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aApAQCAtMTUwLDYgKzE1MCwxMCBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3RyaW5nKE5TU3RyaW5n
KiBzKSA6IG1fc3RyaW5nKGFkZCgoQ0ZTdHJpbmdSZWYpcykpIHsgfQogICAgIG9wZXJhdG9yIE5T
U3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShRVCkKKyAgICBBdG9taWNTdHJpbmcoY29uc3QgUVN0cmluZyYgcykgOiBtX3N0cmluZyhhZGQo
U3RyaW5nKHMpLmltcGwoKSkpIHsgfQorICAgIG9wZXJhdG9yIFFTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZzsgfQorI2VuZGlmCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBB
dG9taWNTdHJpbmcoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcykgOiBtX3N0
cmluZyhhZGQoU3RyaW5nKHMpLmltcGwoKSkpIHsgfQogICAgIG9wZXJhdG9yIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggMTFmYTEwMy4uZGE5ZWM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCkBAIC0xMzcsNiArMTM3LDEzIEBAIFN0cmluZ0ltcGw6On5TdHJpbmdJ
bXBsKCkKICAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDxMQ2hhcio+KG1fZGF0YTgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAob3duZXJzaGlw
ID09IEJ1ZmZlckFkb3B0ZWRRU3RyaW5nKSB7CisgICAgICAgIGlmICghbV9xU3RyaW5nRGF0YS0+
cmVmLmRlcmVmKCkpCisgICAgICAgICAgICBRU3RyaW5nRGF0YTo6ZGVhbGxvY2F0ZShtX3FTdHJp
bmdEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogCiAgICAgQVNTRVJUKG93
bmVyc2hpcCA9PSBCdWZmZXJTdWJzdHJpbmcpOwogICAgIEFTU0VSVChtX3N1YnN0cmluZ0J1ZmZl
cik7CkBAIC0xOTI1LDYgKzE5MzIsMTggQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjphZG9wdChTdHJpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTdHJpbmdJbXBsKGJ1ZmZlci5yZWxlYXNlKCksIGxlbmd0aCkpOwogfQogCisjaWYg
UExBVEZPUk0oUVQpCitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmFkb3B0KFFT
dHJpbmdEYXRhKiBxU3RyaW5nRGF0YSkKK3sKKyAgICBBU1NFUlQocVN0cmluZ0RhdGEpOworCisg
ICAgaWYgKCFxU3RyaW5nRGF0YS0+c2l6ZSkKKyAgICAgICAgcmV0dXJuIGVtcHR5KCk7CisKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0cmluZ0ltcGwocVN0cmluZ0RhdGEsIENvbnN0cnVjdEFk
b3B0ZWRRU3RyaW5nKSk7Cit9CisjZW5kaWYKKwogc2l6ZV90IFN0cmluZ0ltcGw6OnNpemVJbkJ5
dGVzKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogc3VwcG9ydCBzdWJzdHJpbmdzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCmluZGV4IDg3NjY2MTIuLmJmMWYzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NvbnZlcnNp
b25Nb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCisjaWYgUExBVEZP
Uk0oUVQpCisjaW5jbHVkZSA8UVN0cmluZz4KKyNlbmRpZgorCiAjaWYgVVNFKENGKQogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwogI2VuZGlmCkBAIC0xNTUs
NiArMTU5LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIEJ1ZmZlckludGVybmFsLAogICAgICAgICBC
dWZmZXJPd25lZCwKICAgICAgICAgQnVmZmVyU3Vic3RyaW5nLAorI2lmIFBMQVRGT1JNKFFUKQor
ICAgICAgICBCdWZmZXJBZG9wdGVkUVN0cmluZworI2VuZGlmCisgICAgICAgIC8vIE5PVEU6IEFk
ZGluZyBtb3JlIG93bmVyc2hpcCB0eXBlcyBuZWVkcyB0byBleHRlbmQgbV9oYXNoQW5kRmxhZ3Mg
YXMgd2UncmUgYXQgY2FwYWNpdHkKICAgICB9OwogCiAgICAgLy8gVXNlZCB0byBjb25zdHJ1Y3Qg
c3RhdGljIHN0cmluZ3MsIHdoaWNoIGhhdmUgYW4gc3BlY2lhbCByZWZDb3VudCB0aGF0IGNhbiBu
ZXZlciBoaXQgemVyby4KQEAgLTMzMyw2ICszNDEsMzAgQEAgcHJpdmF0ZToKICAgICAgICAgU1RS
SU5HX1NUQVRTX0FERF8xNkJJVF9TVFJJTkcobV9sZW5ndGgpOwogICAgIH0KIAorI2lmIFBMQVRG
T1JNKFFUKQorICAgIC8vIFVzZWQgdG8gY3JlYXRlIG5ldyBzdHJpbmdzIHRoYXQgYWRvcHQgYW4g
ZXhpc3RpbmcgUVN0cmluZydzIGRhdGEKKyAgICBlbnVtIENvbnN0cnVjdEFkb3B0ZWRRU3RyaW5n
VGFnIHsgQ29uc3RydWN0QWRvcHRlZFFTdHJpbmcgfTsKKyAgICBTdHJpbmdJbXBsKFFTdHJpbmdE
YXRhKiBxU3RyaW5nRGF0YSwgQ29uc3RydWN0QWRvcHRlZFFTdHJpbmdUYWcpCisgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQorICAgICAgICAsIG1fbGVuZ3RoKHFTdHJp
bmdEYXRhLT5zaXplKQorICAgICAgICAsIG1fZGF0YTE2KDApCisgICAgICAgICwgbV9xU3RyaW5n
RGF0YShxU3RyaW5nRGF0YSkKKyAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJBZG9wdGVk
UVN0cmluZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2xlbmd0aCk7CisKKyAgICAgICAgLy8g
V2UgcmVmIHRoZSBzdHJpbmctZGF0YSB0byBlbnN1cmUgaXQgd2lsbCBiZSB2YWxpZCBmb3IgdGhl
IGxpZmV0aW1lIG9mCisgICAgICAgIC8vIHRoaXMgc3RyaW5nLiBXZSB0aGVuIGRlcmVmIGl0IGlu
IHRoZSBkZXN0cnVjdG9yLCBzbyB0aGF0IHRoZSBzdHJpbmcKKyAgICAgICAgLy8gZGF0YSBjYW4g
ZXZlbnR1YWxseSBiZSBmcmVlZC4KKyAgICAgICAgbV9xU3RyaW5nRGF0YS0+cmVmLnJlZigpOwor
CisgICAgICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSByZWYgd2UgY2FuIHNhZmVseSByZWZlcmVu
Y2UgdGhlIHN0cmluZyBkYXRhCisgICAgICAgIG1fZGF0YTE2ID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8Y29uc3QgVUNoYXIqPihxU3RyaW5nRGF0YS0+ZGF0YSgpKTsKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YTE2KTsKKworICAgICAgICBTVFJJTkdfU1RBVFNfQUREXzE2QklUX1NUUklORyhtX2xlbmd0
aCk7CisgICAgfQorI2VuZGlmCiAgICAgflN0cmluZ0ltcGwoKTsKIAogcHVibGljOgpAQCAtNDQ5
LDYgKzQ4MSwxMCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cmluZ0ltcGw+IGFkb3B0KFN0cmluZ0J1ZmZlcjxVQ2hhcj4mKTsKICAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQo
U3RyaW5nQnVmZmVyPExDaGFyPiYpOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRvcHQoUVN0cmluZ0RhdGEqKTsKKyNlbmRpZgorCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICAgICBib29sIGlz
OEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaEFuZEZsYWdzICYgc19oYXNoRmxhZzhCaXRCdWZm
ZXI7IH0KIApAQCAtNTI5LDYgKzU2NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1YlN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuICBidWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmc7
IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisgICAgUVN0cmluZ0RhdGEqIHFTdHJpbmdE
YXRhKCkgeyByZXR1cm4gYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyQWRvcHRlZFFTdHJpbmcg
PyBtX3FTdHJpbmdEYXRhIDogMDsgfQorI2VuZGlmCisgICAgCiAgICAgc3RhdGljIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjhGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZlcnNp
b24pOwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjhGb3JSYW5nZSh1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29u
dmVyc2lvbikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOChD
b252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKSBjb25zdDsKQEAgLTgzMyw2ICs4NzMs
OSBAQCBwcml2YXRlOgogICAgICAgICB2b2lkKiBtX2J1ZmZlcjsKICAgICAgICAgU3RyaW5nSW1w
bCogbV9zdWJzdHJpbmdCdWZmZXI7CiAgICAgICAgIG11dGFibGUgVUNoYXIqIG1fY29weURhdGEx
NjsKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgUVN0cmluZ0RhdGEqIG1fcVN0cmluZ0RhdGE7
CisjZW5kaWYKICAgICB9OwogICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNoQW5kRmxhZ3M7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGRkYTA1NjcuLjVhZTU2OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTQxMSw3ICs0MTEsMjEgQEAgVmVjdG9yPFVDaGFy
PiBTdHJpbmc6OmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkgY29uc3QKIAogU3RyaW5n
IFN0cmluZzo6Zm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewotI2lmIE9TKFdJTkNF
KQorI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIFVzZSBRU3RyaW5nOjp2c3ByaW50ZiB0byBhdm9p
ZCB0aGUgbG9jYWxlIGRlcGVuZGVudCBmb3JtYXR0aW5nIG9mIHZzbnByaW50Zi4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5OTQKKyAgICB2YV9saXN0
IGFyZ3M7CisgICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKKworICAgIFFTdHJpbmcgYnVmZmVy
OworICAgIGJ1ZmZlci52c3ByaW50Zihmb3JtYXQsIGFyZ3MpOworCisgICAgdmFfZW5kKGFyZ3Mp
OworCisgICAgUUJ5dGVBcnJheSBiYSA9IGJ1ZmZlci50b1V0ZjgoKTsKKyAgICByZXR1cm4gU3Ry
aW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiYS5jb25zdERh
dGEoKSksIGJhLmxlbmd0aCgpKTsKKworI2VsaWYgT1MoV0lOQ0UpCiAgICAgdmFfbGlzdCBhcmdz
OwogICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IGQwMzFmNjIuLmM4Mzk3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzIsNiAr
MzIsMTIgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0o
UVQpCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFTdHJpbmc7CitRVF9FTkRfTkFNRVNQQUNF
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiBuYW1lc3BhY2UgQmxhY2tCZXJy
eSB7CiBuYW1lc3BhY2UgUGxhdGZvcm0gewpAQCAtMzQ1LDcgKzM1MSwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gUmV0dXJuIHRoZSBzdHJpbmcgd2l0aCBjYXNlIGZvbGRlZCBmb3IgY2FzZSBpbnNlbnNp
dGl2ZSBjb21wYXJpc29uLgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgZm9sZENh
c2UoKSBjb25zdDsKIAorI2lmICFQTEFURk9STShRVCkKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFN0cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDEsIDIpOworI2Vsc2UKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0
cmluZyBmb3JtYXQoY29uc3QgY2hhciAqLCAuLi4pOworI2VuZGlmCiAKICAgICAvLyBSZXR1cm5z
IGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nLiBUaGUgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB3cml0
dGVuCiAgICAgLy8gaW50byB0aGUgYnVmZmVyIHJldHVybmVkIGluIGRhdGEgYmVmb3JlIHRoZSBy
ZXR1cm5lZCBzdHJpbmcgaXMgdXNlZC4KQEAgLTQxMyw2ICs0MjMsMTIgQEAgcHVibGljOgogICAg
IG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgaWYgKCFtX2ltcGwpIHJldHVybiBAIiI7IHJl
dHVybiAqbV9pbXBsOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBTdHJpbmcoY29uc3QgUVN0cmluZyYpOworICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBTdHJpbmcoY29uc3QgUVN0cmluZ1JlZiYpOworICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBvcGVyYXRvciBRU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEJM
QUNLQkVSUlkpCiAgICAgU3RyaW5nKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcm
KTsKICAgICBvcGVyYXRvciBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODMwZTc0NC4uNzg2NGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw4MzIgKzEsMzAg
QEAKLTIwMTMtMTAtMDIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisyMDEzLTA5
LTIzICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCi0gICAgICAgIFtDU1MgU2hh
cGVzXSBJbXBsZW1lbnQgdGhlIHNoYXBlLWltYWdlLXRocmVzaG9sZCBwcm9wZXJ0eQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjE2CisgICAgICAg
IFtDU1MgU2hhcGVzXSBhZGQgc2hhcGUtbWFyZ2luIHN1cHBvcnQgZm9yIGltYWdlIHZhbHVlZCBz
aGFwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTYxOQogCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgQWRk
ZWQgc3VwcG9ydCBmb3IgdGhlIENTUyBzaGFwZS1pbWFnZS10aHJlc2hvbGQgcHJvcGVydHkuIFRo
aXMgY2hhbmdlCi0gICAgICAgIGp1c3QgZW5hYmxlcyBwYXJzaW5nIHRoZSBwcm9wZXJ0eSwgaXQn
cyBub3QgY29ubmVjdGVkIHRvIHRoZQotICAgICAgICBTaGFwZXMgY29kZSB5ZXQuCi0KLSAgICAg
ICAgVGhlIG51bWJlciB2YWx1ZWQgc2hhcGUtaW1hZ2UtdGhyZXNob2xkIHByb3BlcnR5IGlzIGRl
ZmluZWQgaGVyZToKLSAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLXNoYXBlcy0x
LyNzaGFwZS1pbWFnZS10aHJlc2hvbGQtcHJvcGVydHkKLSAgICAgICAgSXRzIGNvbXB1dGVkIHZh
bHVlIGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswLCAxXS4KLQotICAgICAgICBUZXN0OiBmYXN0
L3NoYXBlcy9wYXJzaW5nL3BhcnNpbmctc2hhcGUtaW1hZ2UtdGhyZXNob2xkLmh0bWwKLQotICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgotICAgICAgICAoV2Vi
Q29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6Ci0gICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFs
dWUpOgotICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgotICAgICAgICAqIGNzcy9E
ZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXI6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIpOgotICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHkpOgotICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgotICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEpOgotICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6
b3BlcmF0b3I9PSk6Ci0gICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuaDoKLQotMjAxMy0xMC0wMiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+Ci0KLSAgICAgICAgUmVtb3ZlIFF0LXNwZWNpZmljIGNvZGUgaW4gV2ViQ29yZS9wbHVnaW5z
LgotICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTIyMjQ3PgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBQdXJnZSBQTEFURk9STShRVCkgYmxv
Y2tzIGFuZCBRdC1zcGVjaWZpYyBmaWxlcy4KLQotMjAxMy0xMC0wMiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KLQotICAgICAgICBJREwgcGFyc2VyIHNob3VsZCByZW1v
dmUgYSBsZWFkaW5nICJfIiBmcm9tIGlkZW50aWZpZXIgbmFtZXMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjIzOQotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEplciBOb2JsZS4KLQotICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgYmluZGluZ3Mg
dGVzdHMgYW5kIHJlc3VsdHMuCi0KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbToKLSAgICAgICAgKGlkZW50aWZpZXJSZW1vdmVOdWxsYWJsZVByZWZpeCk6IFJlbW92ZSBs
ZWFkaW5nICJfIi4KLSAgICAgICAgKHBhcnNlSW50ZXJmYWNlKTogQ2FsbCBpZGVudGlmaWVyUmVt
b3ZlTnVsbGFibGVQcmVmaXguCi0gICAgICAgIChwYXJzZUV4Y2VwdGlvbik6IERpdHRvLgotICAg
ICAgICAocGFyc2VFbnVtKTogRGl0dG8uCi0gICAgICAgIChwYXJzZUNvbnN0KTogRGl0dG8uCi0g
ICAgICAgIChwYXJzZUF0dHJpYnV0ZVJlc3QpOiBEaXR0by4KLSAgICAgICAgKHBhcnNlT3BlcmF0
aW9uUmVzdCk6IERpdHRvLgotICAgICAgICAocGFyc2VPcHRpb25hbE9yUmVxdWlyZWRBcmd1bWVu
dCk6IERpdHRvLgotICAgICAgICAocGFyc2VFeGNlcHRpb25GaWVsZCk6IERpdHRvLgotICAgICAg
ICAocGFyc2VOb25BbnlUeXBlKTogRGl0dG8uCi0KLSAgICAgICAgVXBkYXRlIHRlc3RzIGFuZCBy
ZXN1bHRzLgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9i
ai5jcHA6Ci0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
Lmg6Ci0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01hdHRyaWJ1dGUu
Y3BwOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTWF0
dHJpYnV0ZS5oOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTXJlYWRvbmx5LmNwcDogQWRkZWQuCi0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01yZWFkb25seS5oOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKLSAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6Ci0gICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5zeW1ib2xzOgotICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTWF0dHJpYnV0ZS5jcHA6
IEFkZGVkLgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TWF0dHJpYnV0ZS5oOiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01hdHRyaWJ1dGUuc3ltYm9sczogQWRkZWQuCi0gICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NYXR0cmlidXRlUHJpdmF0ZS5oOiBBZGRl
ZC4KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01yZWFk
b25seS5jcHA6IEFkZGVkLgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTXJlYWRvbmx5Lmg6IEFkZGVkLgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTXJlYWRvbmx5LnN5bWJvbHM6IEFkZGVkLgotICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTXJlYWRvbmx5UHJpdmF0ZS5o
OiBBZGRlZC4KLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cDoKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6Ci0gICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDogQWRkZWQuCi0g
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmg6IEFkZGVkLgot
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcDogQWRkZWQu
Ci0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaDogQWRkZWQu
Ci0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgotICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06Ci0gICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NYXR0cmlidXRlLmg6IEFkZGVkLgotICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZS5tbTogQWRkZWQu
Ci0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NYXR0cmlidXRlSW50ZXJu
YWwuaDogQWRkZWQuCi0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NcmVh
ZG9ubHkuaDogQWRkZWQuCi0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
cmVhZG9ubHkubW06IEFkZGVkLgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTXJlYWRvbmx5SW50ZXJuYWwuaDogQWRkZWQuCi0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RFeGNlcHRpb24uaWRsOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SW50ZXJmYWNlLmlkbDoKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGw6Ci0KLTIwMTMtMTAtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgotCi0gICAgICAgIFJlbW92ZSBRdC1zcGVjaWZpYyBjb2RlIGluIFdlYkNvcmUve2JpbmRpbmdz
LGJyaWRnZSxsb2FkZXIsaWNvbix0ZXN0aW5nfS4KLSAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzEyMjI0Mj4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAg
ICAgICAgUHVyZ2UgUExBVEZPUk0oUVQpIGJsb2NrcyBhbmQgUXQtc3BlY2lmaWMgZmlsZXMuCi0K
LTIwMTMtMTAtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgotCi0gICAgICAg
IFJlbW92ZSBRdC1zcGVjaWZpYyBjb2RlIGluIFdlYkNvcmUve3BhZ2UsYWNjZXNzaWJpbGl0eX0u
Ci0gICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjIyMjI+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIFB1cmdlIFBMQVRGT1JNKFFUKSBibG9j
a3MgYW5kIEZvb0JhclF0LiogZmlsZXMuCi0KLTIwMTMtMTAtMDIgIFpvbHRhbiBIb3J2YXRoICA8
em9sdGFuQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgW0NTUyBTaGFwZXNdIE1vdmUgU2hhcGVJbnNp
ZGVJbmZvOjp1cGRhdGVTZWdtZW50c0ZvckxpbmUgaW1wbGVtZW50YXRpb25zIGludG8gdGhlIGNw
cAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjM2
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCi0KLSAgICAgICAgVGhlcmUgaXMg
bm8gcmVhc29uIGZvciB1cGRhdGVTZWdtZW50c0ZvckxpbmUgbWV0aG9kcyB0byBiZSBpbmxpbmUu
IEkgbW92ZWQgdGhlbSB0byB0aGUgY3BwLgotCi0gICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVo
YXZpb3IgY2hhbmdlLgotCi0gICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUlu
Zm8uY3BwOgotICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbnNpZGVJbmZvOjp1cGRhdGVTZWdtZW50
c0ZvckxpbmUpOgotICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmg6
Ci0KLTIwMTMtMTAtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgotCi0gICAg
ICAgIFJlbW92ZSBRdCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0uCi0gICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xMjIyMjg+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgotCi0gICAgICAgIFB1cmdlIFBMQVRGT1JNKFFUKSBibG9ja3MgYW5kIEZvb0JhclF0LiogZmls
ZXMuCi0KLTIwMTMtMTAtMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
Ci0KLSAgICAgICAgW21hY10gU3RvcCB1c2luZyBEcmF3aW5nQXJlYUltcGwgb24gUExBVEZPUk0o
TUFDKSAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MTg1OQotICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwNjkzNTk+Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgotCi0gICAgICAgIFRlc3Q6IHBsYXRmb3JtL21hYy13azIv
dGlsZWQtZHJhd2luZy93aW5kb3ctc2VydmVyLXNuYXBzaG90cy13b3JrLmh0bWwKLQotICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
VHJhY2tlZFJlcGFpbnRSZWN0KToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVwYWlu
dENvbnRlbnRSZWN0YW5nbGUpOgotICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6Ci0gICAgICAg
IEZhY3RvciBvdXQgdGhlIGNvb3JkaW5hdGUgY29udmVyc2lvbiBhbmQgYXBwZW5kaW5nIG9mIG5l
dyByZXBhaW50IHJlY3RzIG9uIEZyYW1lVmlldy4KLQotICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
ZHVtcFByb3BlcnRpZXMpOgotICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGREdW1wUHJv
cGVydHlGb3JMYXllcik6Ci0gICAgICAgIERvbid0IGR1bXAgcmVwYWludCByZWN0cyBvbiB0aGUg
cm9vdCB0aWxlIGNhY2hlLCB0aGV5J2xsIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3AsCi0gICAgICAg
IHdoZXJlIEZyYW1lVmlldydzIHJlcGFpbnRzIGFyZSBub3JtYWxseSBpbmNsdWRlZC4KLQotICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KToKLSAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVj
dCk6Ci0gICAgICAgIFB1c2ggdGhlIHJvb3QgdGlsZSBjYWNoZSdzIHRyYWNrZWQgcmVwYWludCBy
ZWN0cyB0byBGcmFtZVZpZXcgaW5zdGVhZC4KLQotMjAxMy0xMC0wMiAgQmVuamFtaW4gUG91bGFp
biAgPGJlbmphbWluQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgQ2xlYW4gdXAgbW9yZSA8c3R5bGUg
c2NvcGVkPiBmcm9tIHN0eWxlIHJlc29sdXRpb24KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE4OAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgotCi0gICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6Ok1hdGNoUmVxdWVzdDo6TWF0Y2hSZXF1ZXN0KToKLSAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyk6Ci0gICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24pOgotICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0
aG9yUnVsZXMpOgotICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVN
YXRjaGVzKToKLSAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpkb0NvbGxl
Y3RNYXRjaGluZ1J1bGVzRm9yTGlzdCk6Ci0gICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmg6Ci0gICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkpOgotICAgICAgICAqIGNzcy9T
ZWxlY3RvckNoZWNrZXIuaDoKLSAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQ6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0KToKLSAgICAgICAg
KiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFM
aXN0OjpzZWxlY3Rvck1hdGNoZXMpOgotCi0yMDEzLTEwLTAyICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgVXBkYXRlIGJpbmRpbmdzIHRlc3QgcmVzdWx0
cy4KLQotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6
OmZpbmFsaXplKToKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0Lmg6Ci0gICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAg
ICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZSk6Ci0gICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6Ci0gICAgICAgIChX
ZWJDb3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQp
OgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JPd25lcjo6
ZmluYWxpemUpOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmg6Ci0gICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAg
ICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZSk6Ci0gICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6Ci0gICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3du
ZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgotICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFsaXplKToKLSAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmg6Ci0gICAgICAgIChXZWJDb3JlOjp3cmFw
cGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKToKLSAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6Ci0gICAgICAgIChXZWJDb3Jl
Ojp3cmFwcGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJP
d25lcjo6ZmluYWxpemUpOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6Ci0gICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3du
ZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUpOgotICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmg6Ci0g
ICAgICAgIChXZWJDb3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBl
ckNvbnRleHQpOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKToKLSAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6Ci0gICAgICAgIChXZWJD
b3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgot
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNPd25lcjo6ZmluYWxpemUpOgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6Ci0gICAgICAgIChXZWJDb3JlOjp3cmFwcGVy
T3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgotICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlT3duZXI6OmZpbmFsaXplKToKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6Ci0gICAgICAgIChXZWJD
b3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQpOgot
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc093bmVyOjpmaW5hbGl6ZSk6Ci0gICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmg6Ci0gICAgICAgIChX
ZWJDb3JlOjp3cmFwcGVyT3duZXIpOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlckNvbnRleHQp
OgotCi0yMDEzLTEwLTAyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZW1vdmUgUXQtc3BlY2lmaWMgY29kZSBpbiBXZWJDb3JlL3tyZW5kZXJpbmcsZWRpdGlu
ZyxoaXN0b3J5fS4KLSAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMjIyMD4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgUHVyZ2UgUExBVEZP
Uk0oUVQpIGJsb2NrcyBhbmQgRm9vQmFyUXQuKiBmaWxlcy4KLQotMjAxMy0xMC0wMiAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgUmVtb3ZlIFF0LXNwZWNpZmlj
IGNvZGUgaW4gY29tbW9uIFdlYkNvcmUve2h0bWwsZG9tfSBmaWxlcy4KLSAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzEyMjIxOT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCi0KLSAgICAgICAgUHVyZ2UgUExBVEZPUk0oUVQpIGJsb2Nrcy4KLQotMjAxMy0xMC0w
MSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIENUVEU6IERPTVdyYXBw
ZXJXb3JsZHMgc2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKLQotICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogYmluZGluZ3MvanMvRE9NV3Jh
cHBlcldvcmxkLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6RE9NV3Jh
cHBlcldvcmxkKToKLSAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6fkRPTVdyYXBw
ZXJXb3JsZCk6Ci0gICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBl
cnMpOgotICAgICAgICAoV2ViQ29yZTo6bm9ybWFsV29ybGQpOgotICAgICAgICAoV2ViQ29yZTo6
bWFpblRocmVhZE5vcm1hbFdvcmxkKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuaDoKLSAgICAgICAgKFdlYkNvcmU6OmRlYnVnZ2VyV29ybGQpOgotICAgICAgICAoV2Vi
Q29yZTo6cGx1Z2luV29ybGQpOgotICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFdvcmxkKToKLSAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6OkpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUpOgotICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgotICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKLSAg
ICAgICAgKFdlYkNvcmU6OndyYXBwZXJDb250ZXh0KToKLSAgICAgICAgKFdlYkNvcmU6OmdldElu
bGluZUNhY2hlZFdyYXBwZXIpOgotICAgICAgICAoV2ViQ29yZTo6c2V0SW5saW5lQ2FjaGVkV3Jh
cHBlcik6Ci0gICAgICAgIChXZWJDb3JlOjpjbGVhcklubGluZUNhY2hlZFdyYXBwZXIpOgotICAg
ICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkV3JhcHBlcik6Ci0gICAgICAgIChXZWJDb3JlOjpjYWNo
ZVdyYXBwZXIpOgotICAgICAgICAoV2ViQ29yZTo6dW5jYWNoZVdyYXBwZXIpOgotICAgICAgICAo
V2ViQ29yZTo6anNTdHJpbmdXaXRoQ2FjaGUpOgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0OjpK
U0RPTUdsb2JhbE9iamVjdCk6Ci0gICAgICAgIChXZWJDb3JlOjp0b0pTRE9NR2xvYmFsT2JqZWN0
KToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgotICAgICAgICAo
V2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OndvcmxkKToKLSAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNl
OjpKU0RPTVdpbmRvd0Jhc2UpOgotICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdpbmRvdyk6Ci0g
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6Ci0gICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRv
d1NoZWxsOjpKU0RPTVdpbmRvd1NoZWxsKToKLSAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93
U2hlbGw6OnNldFdpbmRvdyk6Ci0gICAgICAgIChXZWJDb3JlOjp0b0pTRE9NV2luZG93U2hlbGwp
OgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaDoKLSAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpKU0RP
TVdpbmRvd1NoZWxsOjp3b3JsZCk6Ci0gICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SlNFcnJvckhhbmRsZXI6OkpTRXJyb3JIYW5kbGVy
KToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oOgotICAgICAgICAoV2Vi
Q29yZTo6SlNFcnJvckhhbmRsZXI6OmNyZWF0ZSk6Ci0gICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6SlNF
dmVudExpc3RlbmVyKToKLSAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQpOgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oOgotICAgICAg
ICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpjcmVhdGUpOgotICAgICAgICAoV2ViQ29yZTo6
SlNFdmVudExpc3RlbmVyOjppc29sYXRlZFdvcmxkKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpnZXRKU0xp
c3RlbmVyRnVuY3Rpb25zKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OkpTTGF6eUV2
ZW50TGlzdGVuZXIpOgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
aDoKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6SlNNdXRhdGlvbkNhbGxiYWNrOjpKU011dGF0aW9uQ2FsbGJhY2spOgotICAg
ICAgICAoV2ViQ29yZTo6SlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKToKLSAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgotICAgICAgICAoV2ViQ29yZTo6SlNOb2RlT3duZXI6
OmZpbmFsaXplKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuaDoKLSAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9wZXJ0
eVNsb3QpOgotICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpKU1dvcmtlckds
b2JhbFNjb3BlQmFzZSk6Ci0gICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKToKLSAgICAgICAg
KFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKToKLSAgICAgICAgKFdl
YkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZSk6Ci0gICAgICAgICogYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmg6Ci0gICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OlNj
aGVkdWxlZEFjdGlvbik6Ci0gICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhY2hlZEZyYW1lRGF0YTo6cmVzdG9y
ZSk6Ci0gICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmg6Ci0gICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29udHJvbGxlcik6Ci0gICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRDb250cm9sbGVyOjpkZXN0cm95V2luZG93U2hlbGwpOgotICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwpOgotICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKToKLSAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6OmdldEFsbFdvcmxkcyk6Ci0gICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKLSAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKLSAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSk6Ci0g
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgotICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2hlbGwpOgotICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q29udHJvbGxlcjo6ZXhpc3RpbmdXaW5kb3dTaGVsbCk6Ci0gICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpnbG9iYWxPYmplY3QpOgotICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVy
Ojppc0NvbnRlbnRTY3JpcHQpOgotICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OmV4ZWNTdGF0ZUZyb21Ob2RlKToKLSAgICAgICAgKFdlYkNv
cmU6OmV4ZWNTdGF0ZUZyb21QYWdlKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oOgotICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlCdWZm
ZXJzKToKLSAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmg6Ci0gICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpXZWJDb3JlSlNDbGllbnREYXRhKToK
LSAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6Om5vcm1hbFdvcmxkKToKLSAg
ICAgICAgKFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OmdldEFsbFdvcmxkcyk6Ci0gICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlSlNDbGllbnREYXRhOjpyZW1lbWJlcldvcmxkKToKLSAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVKU0NsaWVudERhdGE6OmZvcmdldFdvcmxkKToKLSAgICAgICAg
KiBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyOjpKU0FycmF5QnVmZmVyT3duZXI6
OmZpbmFsaXplKToKLSAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKLSAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKLSAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgotICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KToKLSAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKLSAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA6
Ci0gICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZUlzb2xhdGVkV29ybGQpOgotICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlTWVkaWFDb250cm9sc0luamVjdGVkU2NyaXB0KToK
LSAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QpOgotICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgotICAgICAgICAqIGh0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpwbHVnSW5J
bWFnZUVsZW1lbnRJc29sYXRlZFdvcmxkKToKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOgotICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2Vu
dDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKLSAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuaDoKLSAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQpOgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
Lmg6Ci0gICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKLSAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIp
OgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGRJbXBsKToKLSAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmg6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6Ci0gICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6Ci0gICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOgotICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKLSAgICAgICAg
KFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKToKLSAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5B
bGxXb3JsZHMpOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKToKLSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKToKLSAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuaDoKLSAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoK
LSAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaEdsb2JhbE9iamVj
dEF2YWlsYWJsZSk6Ci0gICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHA6Ci0gICAgICAgICogcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwOgotICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uOjpET01XaW5kb3dFeHRlbnNpb24pOgotICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmg6Ci0gICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3dFeHRlbnNpb246OmNyZWF0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNp
b246OndvcmxkKToKLSAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OkZyYW1lOjppbmplY3RVc2VyU2NyaXB0cyk6Ci0gICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5q
ZWN0VXNlclNjcmlwdHNGb3JXb3JsZCk6Ci0gICAgICAgICogcGFnZS9GcmFtZS5oOgotICAgICAg
ICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRk
VXNlclNjcmlwdFRvV29ybGQpOgotICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQpOgotICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVV
c2VyU2NyaXB0RnJvbVdvcmxkKToKLSAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6cmVtb3Zl
VXNlclN0eWxlU2hlZXRGcm9tV29ybGQpOgotICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpy
ZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZCk6Ci0gICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZCk6Ci0gICAgICAgICogcGFnZS9QYWdlR3Jv
dXAuaDoKLQotMjAxMy0xMC0wMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZpbmcgcmVmZXJlbmNlcyB0byB0aGUgcmVjZW50
bHkgcmVtb3ZlZCBNb2R1bGVzL2ZpbGVzeXN0ZW0gZGlyZWN0b3J5LgotCi0gICAgICAgICogR05V
bWFrZWZpbGUuYW06Ci0KLTIwMTMtMTAtMDIgIE1paGFpIE1hZXJlYW4gIDxtbWFlcmVhbkBhZG9i
ZS5jb20+Ci0KLSAgICAgICAgW0NTUyBSZWdpb25zXSBBY3RpdmF0ZSBhbGwgcmVnaW9ucyB0byBo
YXZlIGxheWVycywgYXMgQ1NTIFJlZ2lvbnMgY3JlYXRlIGEgbmV3IHN0YWNraW5nIGNvbnRleHQK
LSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTgyOAot
Ci0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0gICAgICAgIFRoZSBDU1MgUmVn
aW9ucyBzcGVjaWZpY2F0aW9uIHNheXMgIkNTUyBSZWdpb25zIGNyZWF0ZSBhIG5ldyBzdGFja2lu
ZyBjb250ZXh0LiIgKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1yZWdpb25zLykuCi0KLSAg
ICAgICAgRGl2cyB0aGF0IGNyZWF0ZSBzdGFja2luZyBjb250ZXh0cyBhcmUgcGFpbnRlZCBhZnRl
ciB0aGUgZGl2cyB0aGF0IGRvbid0IGNyZWF0ZSBzdGFja2luZyBjb250ZXh0cy4KLQotICAgICAg
ICBUZXN0OiBmYXN0L3JlZ2lvbnMvbGF5ZXJzL3N0YWNraW5nLWNvbnRleHQtcGFpbnQtb3JkZXIu
aHRtbDogV2hpbGUgdGhlIGV4aXN0aW5nIHJlZ2lvbi1zaWJsaW5nLXBhaW50LW9yZGVyLmh0bWwK
LSAgICAgICAgdGVzdCB2ZXJpZmllcyB0aGF0IHJlZ2lvbnMgcGFpbnQgY29ycmVjdGx5IHdoZW4g
dGhlIG5leHQgc2libGluZyBhbHNvIGNyZWF0ZXMgYSBzdGFja2luZyBjb250ZXh0LCB0aGlzIG5l
dyB0ZXN0Ci0gICAgICAgIHZlcmlmaWVzIHRoYXQgcmVnaW9ucyBwYWludCBjb3JyZWN0bHkgd2hl
biB0aGUgbmV4dCBzaWJsaW5nIGRvZXNuJ3QgY3JlYXRlIGEgc3RhY2tpbmcgY29udGV4dC4KLQot
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6IFJlbW92ZSBjb2RlIHRoYXQgaXMg
bm90IG5lZWRlZCBub3cgdGhhdCBhbGwgcmVnaW9ucyBoYXZlIGxheWVycy4KLSAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaDogUmVtb3ZlIGNvZGUgdGhhdCBpcyBub3QgbmVlZGVkIG5v
dyB0aGF0IGFsbCByZWdpb25zIGhhdmUgbGF5ZXJzLgotICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOiBSZW1vdmUgY29kZSB0aGF0IGlzIG5vdCBuZWVkZWQgbm93IHRoYXQgYWxsIHJl
Z2lvbnMgaGF2ZSBsYXllcnMuCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOiBSZW1v
dmUgY29kZSB0aGF0IGlzIG5vdCBuZWVkZWQgbm93IHRoYXQgYWxsIHJlZ2lvbnMgaGF2ZSBsYXll
cnMuCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgotICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6dXBkYXRlTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKTog
UmVtb3ZlIGNvZGUgdGhhdCBpcyBub3QgbmVlZGVkIG5vdyB0aGF0IGFsbCByZWdpb25zIGhhdmUg
bGF5ZXJzLgotICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgotICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdpb24pOgotICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uaDoKLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6cmVxdWly
ZXNMYXllcik6IEFsd2F5cy4gQ1NTIFJlZ2lvbnMgY3JlYXRlIFN0YWNraW5nIENvbnRleHRzLiBS
ZW5kZXJNdWx0aUNvbHVtblNldAotICAgICAgICBpbXBsZW1lbnRzIGl0cyBvd24gYmVoYXZpb3Vy
IHNvIHRoZSBiZWhhdmlvdXIgb2YgZWFjaCBjbGFzcyBpcyBjb250YWluZWQgd2l0aGluIGl0cyBv
d24gZmlsZXMuCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6Ci0g
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVxdWlyZXNMYXllcik6IFJl
bmRlck11bHRpQ29sdW1uU2V0IGRlcml2ZXMgZnJvbSBSZW5kZXJSZWdpb24sIGJ1dCB1bmxpa2Ug
dGhlCi0gICAgICAgIENTUyBSZWdpb25zIHNwZWNpZmljYXRpb24sIHRoZSBNdWx0aS1Db2x1bW5z
IENTUyBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0aGF0IHRoZSBjb2x1bW4gYm94ZXMgZG8gbm90IGVz
dGFibGlzaCBuZXcKLSAgICAgICAgU3RhY2tpbmcgQ29udGV4dHMuCi0gICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6d3JpdGVSZW5kZXJS
ZWdpb25MaXN0KTogVGhlcmUncyBubyBuZWVkIHRvIG91dHB1dCAiIGhhc0xheWVyIiBzaW5jZSBh
bGwgcmVnaW9ucyBub3cgaGF2ZSBsYXllcnMuCi0KLTIwMTMtMTAtMDIgIFJlbmF0YSBIb2RvdmFu
ICA8cmVuaUB3ZWJraXQub3JnPgotCi0gICAgICAgIEhUTUwgbGlzdGJveCBpcyBub3QgcmVzaXpl
ZCBob3Jpem9udGFsbHkgd2hlbiB6b29taW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ0NQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgotCi0gICAgICAgIElmIGFueSBzdHlsZSBjaGFuZ2VzIGhhcHBlbnMgb24gYSBIVE1MU2Vs
ZWN0RWxlbWVudCwgd2UgbmVlZCB0byBzZXQgdGhlIG1fb3B0aW9uc0NoYW5nZWQgcHJvcGVydHkK
LSAgICAgICAgb2YgaXRzIHJlbmRlcmVyIChSZW5kZXJMaXN0Qm94KSBvdGhlcndpc2UgaXRzIHNp
emUgd29uJ3QgZm9sbG93IHRoZSBjaGFuZ2VkIGNvbnRlbnQuCi0KLSAgICAgICAgVGVzdDogZmFz
dC90cmFuc2Zvcm1zL2xpc3Rib3gtem9vbS5odG1sCi0KLSAgICAgICAgKiBodG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaWRS
ZWNhbGNTdHlsZSk6Ci0gICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgotCi0yMDEz
LTEwLTAxICBTYW50b3NoIE1haHRvICA8c2FudG9zaC5tYUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBjb250ZW50ZWRpdGFibGUganVzdGlmeSBjb21tYW5kcyBhcHBsaWVkIHRvIG5leHQgcGFyYWdy
YXBoIGFzIHdlbGwKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwNjExCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgotCi0gICAgICAg
IFdoZW4gdGhlIHNlbGVjdGlvbiBleHRlbmRzIGZyb20gZmlyc3QgcGFyYWdyYXBoIHRvIHN0YXJ0
IG9mIG5leHQKLSAgICAgICAgcGFyYWdyYXBoIHRoZW4gSnVzdGlmeSBjb21tYW5kIGlzIGFwcGxp
ZWQgdG8gYm90aCB0aGUgcGFyYWdyYXBoLAotICAgICAgICBJbnN0ZWFkIGl0IHNob3VsZCBiZSBh
cHBsaWVkIG9ubHkgdG8gZmlyc3QgcGFyYWdyYXBoLgotCi0gICAgICAgIENvLWF1dGhvcjogU3Vk
YXJzaGFuIEMgUCA8c3VkYXJzaGFuLmNwQHNhbXN1bmcuY29tPgotCi0gICAgICAgIFRlc3Q6IGVk
aXRpbmcvZXhlY0NvbW1hbmQvY29udGVudGVkaXRhYmxlLWp1c3RpZnktbmV4dC1wYXJhZ3JhcGgu
aHRtbAotCi0gICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6Ci0gICAgICAg
IChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKToKLSAgICAgICAg
QWRqdXN0ZWQgdmlzaWJsZUVuZCB0byBwcmV2aW91cyBwb3NpdGlvbi4KLQotMjAxMy0xMC0wMSAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+Ci0KLSAgICAgICAgTW92ZSBtb3VzZSBl
dmVudCBkaXNwYXRjaCBmcm9tIE5vZGUgdG8gRWxlbWVudC4KLSAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzEyMjIwMz4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
Ci0KLSAgICAgICAgV2UgbmV2ZXIgZGlzcGF0Y2ggbW91c2UgZXZlbnRzIG9uIHRleHQgb3Igb3Ro
ZXIgbm9uLWVsZW1lbnQgbm9kZXMsCi0gICAgICAgIHNvIG1vdmUgdGhlIHJlbGF0ZWQgbG9naWMg
dG8gdXNpbmcgRWxlbWVudC4KLQotICAgICAgICBOb2RlOjpkaXNwYXRjaE1vdXNlRXZlbnQoKSBt
b3ZlcyB0byBFbGVtZW50LiBJIGFsc28gY2hhbmdlZCB0aGUKLSAgICAgICAgcmVsYXRlZFRhcmdl
dCBhcmd1bWVudCB0byBiZSBhbiBFbGVtZW50KiBzaW5jZSB0aGUgcmVsYXRlZCB0YXJnZXQKLSAg
ICAgICAgaXMgbmV2ZXIgYSBOb2RlIGVpdGhlci4KLQotICAgICAgICBNb3N0IG9mIHRoaXMgcGF0
Y2ggaXMgKk5vZGUgLT4gKkVsZW1lbnQgcmVuYW1lcyBpbiBFdmVudEhhbmRsZXIuCi0KLTIwMTMt
MTAtMDEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KLQotICAgICAg
ICBHZW5lcmF0ZSB0b0NTU0Zvb1ZhbHVlIGZvciBDU1MgY2hpbGQgdmFsdWVzCi0gICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxNTcKLQotICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAgICAgICBBcyBhIHN0ZXAgdG8gY2xlYW51cCBz
dGF0aWNfY2FzdDw+IGZvciBDU1NGb29WYWx1ZSwgdGhpcyBwYXRjaCBhZGRzIHRvQ1NTRm9vVmFs
dWUoKQotICAgICAgICBmb3IgIkNTU0FzcGVjdFJhdGlvVmFsdWUsIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZSwgQ1NTRnVuY3Rpb25WYWx1ZSwgQ1NTSW5oZXJpdGVkVmFsdWUsCi0gICAgICAgIENT
U1ZhbHVlTGlzdCwgQ1NTVmFyaWFibGVWYWx1ZSwgYW5kIENTU0ZvbnRGYWNlU3JjVmFsdWUiLgot
Ci0gICAgICAgIFRvIHVzZSBDU1NfVkFMVUVfVFlQRV9DQVNUUywgaXNGdW5jdGlvblZhbHVlKCks
IGlzRm9udEZhY2VTcmNWYWx1ZSgpIGFyZSBhZGRlZCB0bwotICAgICAgICBnZW5lcmF0ZSB0b0NT
U0Z1bmN0aW9uVmFsdWUsIHRvQ1NTRm9udEZhY2VTcmNWYWx1ZSgpLgotCi0gICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlcy4KLQotICAgICAgICAqIGNzcy9DU1NBc3BlY3RS
YXRpb1ZhbHVlLmg6Ci0gICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOgot
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmg6Ci0gICAgICAgICogY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZv
bnRGYWNlUnVsZSk6Ci0gICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKLSAgICAgICAg
KiBjc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaDoKLSAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OmZpbHRlclByb3BlcnRpZXMpOgotICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjphZGRGaWxsVmFsdWUpOgotICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjph
ZGRBbmltYXRpb25WYWx1ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZv
bnRGYWNlUnVsZSk6Ci0gICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5Ojp3cmFwVmFsdWVJbkNvbW1hU2VwYXJhdGVkTGlzdCk6Ci0gICAg
ICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2UpOgotICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZSk6Ci0gICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXN0cm95KToKLSAgICAgICAgKiBjc3MvQ1NT
VmFsdWUuaDoKLSAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0Z1bmN0aW9uVmFsdWUpOgot
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzRm9udEZhY2VTcmNWYWx1ZSk6Ci0gICAgICAg
ICogY3NzL0NTU1ZhbHVlTGlzdC5oOgotICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0SW5z
cGVjdG9yOjpDU1NWYWx1ZUxpc3RJbnNwZWN0b3IpOgotICAgICAgICAqIGNzcy9DU1NWYXJpYWJs
ZVZhbHVlLmg6Ci0gICAgICAgICogY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwOgotICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjo6YXBwbHlWYWx1ZSk6Ci0gICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXM6OmFwcGx5VmFs
dWUpOgotICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUNvdW50ZXI6OmFwcGx5VmFsdWUp
OgotICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUN1cnNvcjo6YXBwbHlWYWx1ZSk6Ci0g
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEVtcGhhc2lzU3R5bGU6OmFwcGx5VmFs
dWUpOgotICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseVZh
bHVlKToKLSAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlJbWFnZVJlc29sdXRpb246OmFw
cGx5VmFsdWUpOgotICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVRleHRJbmRlbnQ6OmFw
cGx5VmFsdWUpOgotICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OmNvbXBhcmVBc3BlY3RSYXRpb1ZhbHVlKToKLSAgICAgICAgKiBjc3MvU1ZH
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjph
cHBseVNWR1Byb3BlcnR5KToKLSAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUpOgotICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUdyaWRQb3NpdGlvbik6Ci0gICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjph
cHBseVByb3BlcnR5KToKLSAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyKToKLSAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNy
ZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGhJbmxpbmVTeW50YXgpOgotICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0RGVjb3Jh
dGlvbkVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6Ci0gICAgICAgIChXZWJDb3Jl
OjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGUpOgotICAgICAgICAoV2ViQ29yZTo6U3R5bGVDaGFu
Z2U6OmV4dHJhY3RUZXh0U3R5bGVzKToKLSAgICAgICAgKFdlYkNvcmU6OmRpZmZUZXh0RGVjb3Jh
dGlvbnMpOgotICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QpOgotICAgICAgICAqIHN2Zy9TVkdGb250
RmFjZUVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50Ojpy
ZWJ1aWxkRm9udEZhY2UpOgotCi0yMDEzLTEwLTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+Ci0KLSAgICAgICAgQ29udmVydCBQYWdlR3JvdXAgdG8gdXNpbmcgc3RkOjp1bmlxdWVfcHRy
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxODQK
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBwYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwOgotICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5oOgotICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwOgotICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaDoK
LSAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKLSAgICAgICAgKiBwYWdlL0dyb3VwU2V0dGluZ3Mu
aDoKLSAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgotICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNw
cDoKLSAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgotICAgICAgICAqIHBhZ2UvVXNlclNjcmlw
dFR5cGVzLmg6Ci0gICAgICAgICogcGFnZS9Vc2VyU3R5bGVTaGVldFR5cGVzLmg6Ci0gICAgICAg
ICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgotICAgICAgICAqIHdvcmtl
cnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcDoKLSAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRl
ZFdvcmtlclRocmVhZC5oOgotICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwOgotICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaDoKLSAg
ICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHA6Ci0gICAgICAgICogd29ya2Vy
cy9TaGFyZWRXb3JrZXJUaHJlYWQuaDoKLSAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDoKLSAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmg6Ci0gICAgICAg
ICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgotICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhy
ZWFkLmg6Ci0KLTIwMTMtMTAtMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+Ci0KLSAgICAgICAgVGlsZWQgZHJhd2luZyBHcmFwaGljc0xheWVyIHRyZWUgZHVtcHMgc2hv
dWxkIG1hdGNoIG5vbi10aWxlZCBtb3JlIGNsb3NlbHkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE3MgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBObyBuZXcgdGVzdHMsIGJ1dCB3aWxsIGJlIHRlc3Rl
ZCBieSBhbGwgb2YgdGhlIGNvbXBvc2l0aW5nIHRlc3RzIGFmdGVyIGJ1ZyAxMjE4NTkgbGFuZHMu
Ci0KLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0aWVzKToKLSAgICAgICAgT25s
eSBkdW1wIGRyYXdzQ29udGVudCBhbmQgYmFja2dyb3VuZENvbG9yIGlmIHRoZSBjbGllbnQgc2F5
cyB3ZSBzaG91bGQuCi0gICAgICAgIFByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gc2tpcCBvdmVyIGEg
bGF5ZXIgaW4gdGhlIGR1bXAsIG1ha2luZyBpdCBhcHBlYXIgYXMgaWYgdGhhdCBsYXllcidzCi0g
ICAgICAgIGNoaWxkcmVuIGFyZSBkaXJlY3QgZGVjZW5kZW50cyBvZiB0aGF0IGxheWVyJ3MgcGFy
ZW50LgotCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5o
OgotICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudDo6c2hvdWxkU2tpcExheWVy
SW5EdW1wKTogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50Ojpz
aG91bGREdW1wUHJvcGVydHlGb3JMYXllcik6IEFkZGVkLgotCi0gICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnNob3VsZFNraXBMYXllckluRHVtcCk6Ci0gICAgICAgIEFkZGVkLiBBbHdheXMgc2tp
cCB0aGUgcm9vdCB0aWxlIGNhY2hlJ3MgZmxhdHRlbmluZyBsYXllciwgYXMgaXQgaXMKLSAgICAg
ICAgdW5pbnRlcmVzdGluZyBhbmQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG5vbi10aWxlZC1kcmF3
aW5nIGNvbXBvc2l0aW5nIGNhc2UuCi0KLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2hvdWxkRHVtcFByb3BlcnR5Rm9yTGF5ZXIpOgotICAgICAgICBEb24ndCBkdW1wIGRy
YXdzQ29udGVudCBvbiB0aGUgcm9vdCB0aWxlIGNhY2hlLgotICAgICAgICBEb24ndCBkdW1wIGJh
Y2tncm91bmRjb2xvciBvbiB0aGUgcm9vdCB0aWxlIGNhY2hlLCB1bmxlc3MgaXQgaXMgbm9uLXdo
aXRlLgotICAgICAgICBUaGlzIG1heSByZXF1aXJlIHNvbWUgV2ViS2l0Mi1zcGVjaWZpYyByZWJh
c2VsaW5lcywgYnV0IHRoZXkgd2lsbCBvY2N1ciBsYXRlci4KLQotICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaDoKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlQmFja2luZyk6Ci0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmxheWVyVHJlZUFzVGV4dCk6Ci0gICAgICAgIElmIHRoZSByb290IHRpbGUgY2FjaGUgaGFzIG5v
IGNvbXBvc2l0ZWQgY2hpbGRyZW4sIGRvbid0IGR1bXAgYW55dGhpbmcsCi0gICAgICAgIHRvIG1h
dGNoIHRoZSB0cmFkaXRpb25hbCBjYXNlIHdoZXJlIHdlIGRyb3Agb3V0IG9mIGNvbXBvc2l0aW5n
IHdoZW4KLSAgICAgICAgd2UgaGF2ZSBubyByZWFzb24gdG8gYmUgY29tcG9zaXRpbmcuIEV4Y2Vw
dCwgZG8gZHVtcCB0aGUgcm9vdCB0aWxlIGNhY2hlJ3MKLSAgICAgICAgbGF5ZXJzIGlmIHdlJ3Jl
IHNwZWNpZmljYWxseSBiZWluZyBhc2tlZCB0byBkdW1wIHRpbGUgY2FjaGVzLgorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAotMjAxMy0xMC0wMSAgSm9vbmUgSHVyICA8am9v
bmUuaHVyQGludGVsLmNvbT4KKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGluZyB0aGUg
c2hhcGUtbWFyZ2luIGJvdW5kYXJ5IGZvciBhIHNoYXBlLW91dHNpZGUgd2hvc2UKKyAgICAgICAg
dmFsdWUgaXMgYW4gaW1hZ2UuCiAKLSAgICAgICAgUXVpcmtzbW9kZTogQ1NTMTogV2ViS2l0IGZh
aWxzIGR5bmFtaWMgOmZpcnN0LWxldHRlciB0ZXN0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMgorICAgICAgICBUZXN0czogZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAw
MS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAyLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWlt
YWdlLW1hcmdpbi0wMDMuaHRtbAogCi0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0Lgot
Ci0gICAgICAgIENTUyBmaXJzdC1sZXR0ZXIgcHJvcGVydHkgZG9lcyBub3Qgd29yayBwcm9wZXJs
eSB3aGVuIHRoZSBmaXJzdCBsZXR0ZXIgaXMgY2hhbmdlZCAKLSAgICAgICAgYnkgRE9NIHNjcmlw
dGluZy4gCi0gICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRvIGNoZWNrIGlmIHRoZSBleGlzdGlu
ZyBmaXJzdC1sZXR0ZXIgaXMgbm8gbG9uZ2VyIHRoZQotICAgICAgICBmaXJzdC1sZXR0ZXIuIElu
IHRoaXMgY2FzZSwgaXQgZGVsZXRlcyB0aGUgb2xkIGZpcnN0LWxldHRlciBvYmplY3QgYW5kIGNy
ZWF0ZXMgCi0gICAgICAgIGEgbmV3IG9uZS4gRm9yIHRoZSByZW1haW5pbmcgdGV4dCwgdGhlIG9s
ZFJlbWFpbmluZ1RleHQgb2JqZWN0IGlzIHVzZWQgCi0gICAgICAgIGFnYWluIGZvciBjb250YWlu
aW5nIHRoZSBmdWxsIHRleHQoZmlyc3QgbGV0dGVyICsgcmVtYWluaW5nIHRleHQpLiAKLQotICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItYmxvY2stY2hhbmdlLmh0bWwKLQotICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6dXBkYXRlRmlyc3RMZXR0ZXIpOgotCi0yMDEzLTEwLTAxICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KLQotICAgICAgICBNYWtlIHRlc3RzIGZvciByZW5kZXJlciBi
YXNlIHR5cGVzIG5vbi12aXJ0dWFsCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjIxODUKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0Lgot
Ci0gICAgICAgIE1ha2UgaXNSZW5kZXJGb28oKSBmdW5jdGlvbnMgZm9yIGNvbW1vbmx5IHRlc3Rl
ZCBiYXNlIHR5cGVzIHVzZSBiaXQgZmxhZ3MgaW5zdGVhZCBvZiB2aXJ0dWFsIGNhbGxzLgotICAg
ICAgICBUaGlzIGlzIGZhc3RlciBhbmQgd2UgaGF2ZSBzcGFjZSBpbiBSZW5kZXJFbGVtZW50Lgot
ICAgICAgICAKLSAgICAgICAgVGhlc2UgYml0cyBhcmUgbm90IG11dHVsbHkgZXhjbHVzaXZlLiBG
b3IgdGVzdGluZyBsZWFmIHR5cGVzIHdlIGNhbiBhZGQgYW4gZW51bS4KLQotMjAxMy0xMC0wMSAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KLQotICAgICAgICBDbGVhbnVwIERvY3Vt
ZW50OjpkaXNwYXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE0MwotCi0gICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgotCi0gICAgICAgIFJlZHVjZSB0aGUgY29kZSBkdXBsaWNh
dGlvbiBieSBleHRyYWN0aW5nIGRpc3BhdGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudC4K
LQotICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXJGaXJlZCk6Ci0gICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6ZGlzcGF0Y2hGdWxsU2NyZWVuQ2hhbmdlT3JFcnJvckV2ZW50KTogRXh0cmFjdGVk
LgotICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgotCi0yMDEzLTEwLTAxICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgotCi0gICAgICAgIFtXaW5dIEltcGxlbWVudCB0aGUgbWVk
aWEgY29udHJvbHMgaW4gSmF2YVNjcmlwdCAKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjE2NgotCi0gICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KLQotICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IFVuY29tbWVudCBmZWF0dXJlIGZs
YWcgdGVzdC4KLSAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOiBBZGQg
bmV3IG1lZGlhIGNvbnRyb2wgaW1wbGVtZW50YXRpb24gZmlsZXMuCi0gICAgICAgIEFsc28gY2xl
YW5lZCB1cCBzb21lIG1pc3BsYWNlZCBmaWxlcyBpbiB0aGUgcHJvamVjdCB0cmVlLgotICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczogRGl0dG8uCi0gICAg
ICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21tb24ucHJvcHM6IEFkZCBtaXNzaW5nIGlu
Y2x1ZGUgcGF0aCBmb3IgdGhlCi0gICAgICAgIG1lZGlhY29udHJvbHMgcGF0aC4KLSAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDogQWRkIE1vZHVsZXMv
bWVkaWFjb250cm9scyB0byBjb3BpZWQgaGVhZGVycy4KLSAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwOiBBZGQgbWlzc2luZyBpbmNsdWRlIGZvciBVc2VyQWdlbnRTY3JpcHRz
LgotCi0yMDEzLTEwLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+Ci0KLSAgICAgICAgQWRkZWQgYWRvcHRDT00gdG8gQ09NUHRyIG9uIFdpbmRvd3MuCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwNjkKLQotICAg
ICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgotCi0gICAgICAgICogcGxhdGZvcm0vd2lu
L0NPTVB0ci5oOgotICAgICAgICAoYWRvcHRDT00pOiBBZGRlZC4KLQotMjAxMy0xMC0wMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KLQotICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeDsgVGhlIGFkZGVkRnVuY3Rpb24gYW5kIHJlbW92ZWRGdW5jdGlvbiBhcmd1bWVudHMgdG8g
ZGV0ZXJtaW5lQ2hhbmdlZFRyYWNrc0Zyb21OZXdUcmFja3NBbmRPbGRJdGVtcwotICAgICAgICB3
ZXJlIHJldmVyc2VkLCBleHBvc2luZyBhbiB1bmRlcmx5aW5nLCBleGlzdGluZyBidWcgaW4gQXVk
aW9UcmFja1ByaXZhdGUgYW5kIFZpZGVvVHJhY2sgcHJpdmF0ZS4gR2l2ZSBhIGRlZmF1bHQgKG51
bGwpCi0gICAgICAgIHZhbHVlIHRvIEF1ZGlvVHJhY2tQcml2YXRlOjptX2NsaWVudCBhbmQgVmlk
ZW9UcmFja1ByaXZhdGU6Om1fY2xpZW50IGFuZCBmaXggdGhlIG9yZGVyaW5nIG9mIGFyZ3VtZW50
cyBpbgotICAgICAgICBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJvbU5ld1RyYWNrc0FuZE9sZEl0
ZW1zLgotCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaDoK
LSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpBdWRpb1RyYWNrUHJpdmF0ZSk6
Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKLSAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpWaWRlb1RyYWNrUHJpdmF0ZSk6Ci0gICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKLSAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5n
ZWRUcmFja3NGcm9tTmV3VHJhY2tzQW5kT2xkSXRlbXMpOgotCi0yMDEzLTA5LTMwICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgotCi0gICAgICAgIFtNYWNdIEFkZCBzdXBwb3J0IGZv
ciBWaWRlb1RyYWNrIHRvIE1lZGlhUGxheWVyUHJpdmF0ZUFWRk9iakMKLSAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjEyMgotCi0gICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KLQotICAgICAgICBUZXN0OiBtZWRpYS90cmFjay92aWRlby10
cmFjay5odG1sCi0KLSAgICAgICAgUmVmYWN0b3IgdGhlIG1ldGhvZHMgd2hpY2ggcXVlcnkgQVZB
c3NldFRyYWNrIGFuZCBBVlBsYXllckl0ZW1UcmFjayBpbnRvIGFuIEltcGwgY2xhc3MsIGFuZAot
ICAgICAgICB1c2UgdGhhdCBjbGFzcyB0byByZXNldCB0aGUgcHJvcGVydGllcyBvZiBib3RoIEF1
ZGlvVHJhY2tBVkZPYmpDIGFuZCB0aGUgbmV3IFZpZGVvVHJhY2tBVkZPYmpDLgotCi0gICAgICAg
IEFkZCBuZXcgZmlsZXMgdG8gcHJvamVjdDoKLSAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6Ci0KLSAgICAgICAgQWRkIHRoZSBuZXcgaW1wbGVtZW50YXRpb24gY2xh
c3MsIHNoYXJlZCBieSBBdWRpb1RyYWNrQVZGT2JqQyBhbmQgVmlkZW9UcmFja0FWRk9iakM6Ci0g
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGwuaDogQWRkZWQuCi0gICAgICAgIChXZWJDb3JlOjpBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsOjpjcmVhdGUpOiBTaW1wbGUgZmFjdG9yeS4KLSAgICAgICAgKFdlYkNvcmU6OkFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw6OnBsYXllckl0ZW1UcmFjayk6IFNpbXBsZSBnZXR0ZXIuCi0g
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGwubW06IEFkZGVkLgotICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbDo6QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbCk6IFNpbXBsZSBjb25zdHJ1Y3Rvci4K
LSAgICAgICAgKFdlYkNvcmU6OkFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmVuYWJsZWQpOiBQ
YXNzIHRvIEFWUGxheWVySXRlbVRyYWNrLgotICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbDo6c2V0RW5hYmxlZCk6IERpdHRvLgotICAgICAgICAoV2ViQ29yZTo6QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6YXVkaW9LaW5kKTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBB
bHRlcm5hdGl2ZSBhbmQgTWFpbiBjb250ZW50LgotICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbDo6dmlkZW9LaW5kKTogRGlzdGluZ3Vpc2ggYmV0d2VlbiBBbHRlcm5h
dGl2ZSwgTWFpbiwgQ2FwdGlvbiwKLSAgICAgICAgICAgIGFuZCBEZXNjcmlwdGlvbiBjb250ZW50
LgotICAgICAgICAoV2ViQ29yZTo6QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6aWQpOiBQYXNz
IHRvIEFWQXNzZXRUcmFjay4KLSAgICAgICAgKFdlYkNvcmU6OkFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw6OmxhYmVsKTogUmV0cmlldmUgdGhlIFRpdGxlIG1ldGFkYXRhIGluIHRoZSB1c2VyJ3Mg
cHJlZmVycmVkCi0gICAgICAgICAgICBsYW5ndWFnZS4KLSAgICAgICAgKFdlYkNvcmU6OkFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw6Omxhbmd1YWdlKTogUGFzcyB0byBsYW5ndWFnZUZvckFWQXNz
ZXRUcmFjay4KLSAgICAgICAgKFdlYkNvcmU6OkFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6Omxh
bmd1YWdlRm9yQVZBc3NldFRyYWNrKTogTW92ZWQgZnJvbSBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akMuCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1ZpZGVvVHJhY2tQ
cml2YXRlQVZGLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1RyYWNrUHJpdmF0ZUFWRi5oLgotICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVBVkY6OmtpbmQpOiBTaW1wbGUgZ2V0dGVyLgotICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkY6OmlkKTogRGl0dG8uCi0gICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6bGFiZWwpOiBEaXR0by4KLSAgICAgICAgKFdlYkNvcmU6
OlZpZGVvVHJhY2tQcml2YXRlQVZGOjpsYW5ndWFnZSk6IERpdHRvLgotICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkY6OnNldEtpbmQpOiBTaW1wbGUgc2V0dGVyLgotICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkY6OnNldElkKTogRGl0dG8uCi0gICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRjo6c2V0TGFiZWwpOiBEaXR0by4KLSAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGOjpzZXRMYW5ndWFnZSk6IERpdHRvLgot
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkY6OlZpZGVvVHJhY2tQcml2YXRl
QVZGKTogU2ltcGxlIGNvbnN0cnVjdG9yLgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oOgotICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbToKLSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDKTogQ3JlYXRlIGEgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC4K
LSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKTogUmV0cmlldmUgcHJvcGVydGllcyBmcm9tIG1faW1wbC4KLSAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKTog
Q3JlYXRlIGEgbmV3IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuCi0gICAgICAgIChXZWJDb3Jl
OjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjayk6IFBhc3MgdG8gbV9p
bXBsLgotICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRFbmFi
bGVkKTogRGl0dG8uCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgotICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06Ci0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp0cmFja3NDaGFuZ2VkKTogUmVmYWN0b3IgaW1wbGVtZW50YXRpb24gaW50bwot
ICAgICAgICAgICAgdGVtcGxhdGUgbWV0aG9kIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3
VHJhY2tzQW5kT2xkSXRlbXMoKS4KLSAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNoYW5nZWRU
cmFja3NGcm9tTmV3VHJhY2tzQW5kT2xkSXRlbXMpOiBSZWZhY3RvcmVkLgotICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlQXVkaW9UcmFj
a3MpOiBQYXNzIHRvIGRldGVybWluZUNoYW5nZWRUcmFja3NGcm9tTmV3VHJhY2tzQW5kT2xkSXRl
bXMuCi0gICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVWaWRlb1RyYWNrcyk6IERpdHRvLgotICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKTog
Q2hhbmdlZCBjbGFzcyBob3N0aW5nCi0gICAgICAgICAgICBsYW5ndWFnZUZvckFWQXNzZXRUcmFj
ay4KLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuY3BwOiBBZGRlZC4KLSAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKTogQ3JlYXRlIGEgQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbC4KLSAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKTogUmV0cmlldmUgcHJvcGVydGll
cyBmcm9tIG1faW1wbC4KLSAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6c2V0UGxheWVySXRlbVRyYWNrKTogQ3JlYXRlIGEgbmV3IEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwuCi0gICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXll
ckl0ZW1UcmFjayk6IFBhc3MgdG8gbV9pbXBsLgotICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpzZXRTZWxlY3RlZCk6IERpdHRvLgotICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oOiBB
ZGRlZC4KLSAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6Y3JlYXRl
KTogU2ltcGxlIGZhY3RvcnkuCi0KLTIwMTMtMTAtMDEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgotCi0gICAgICAgIExlYWYgRXZlbnRUYXJnZXQgc3ViY2xhc3NlcyBzaG91bGQg
YmUgRklOQUwuCi0gICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjIxNDE+Ci0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAgICAgICAgQ2xlYXIgb3V0IGEgc2xldyBv
ZiBGSVhNRXMgbm93IHRoYXQgSGFzTWVtb3J5Q29zdE1lbWJlckZ1bmN0aW9uCi0gICAgICAgIHdv
cmtzIG9uIGNsYXNzZXMgbWFya2VkIEZJTkFMIChmaXhlZCBpbiBidWcgMTIxNzQ3LikKKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1hcmdpbkludGVydmFsR2VuZXJhdG9yOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcik6IEludGVy
bmFsIHV0aWxpdHkgdGhhdCBnZW5lcmF0ZXMgdGhlIG1hcmdpbiBpbnRlcnZhbHMgZm9yIHRoZSBp
bWFnZSBpbnRlcnZhbCBzcGVjaWZpZWQgd2l0aCBzZXQoKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1h
cmdpbkludGVydmFsR2VuZXJhdG9yOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWFyZ2luSW50
ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEluc2Vy
dGlvblBvaW50KTogRmluZCB0aGUgaW5zZXJ0aW9uIHBvaW50IGluZGV4IGZvciB0aGUgdGhlIHNw
ZWNpZmllZCBYIHZhbHVlLCB3aXRoaW4gYSB2ZWN0b3Igb2YgaW50ZXJ2YWxzIHNvcnRlZCBieSBY
MS4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjp1bml0ZU1hcmdpbklu
dGVydmFsKTogRGVzdHJ1Y3RpdmVseSB1bml0ZSBvbmUgaW50ZXJ2YWwgd2l0aCBhbiBleGlzdGlu
ZyBvbmUsIG9yIGFwcGVuZCBpdC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFz
dGVyU2hhcGU6Om1hcmdpbkludGVydmFscyk6IFJldHVybiB0aGUgbGF6aWx5IGNvbXB1dGVkIHZh
bHVlLCBvciBjcmVhdGUgaXQgd2l0aCBjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoKS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJhc3RlclNoYXBlOjpSYXN0ZXJTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZUludGVydmFsczo6dW5pdGVNYXJnaW5JbnRlcnZhbCk6CisgICAgICAgICogV1RGL3d0Zi9NYXRo
RXh0cmFzLmg6IEFkZGVkIGNsYW1wVG9VbnNpZ25lZCgpIGlubGluZS4KIAogMjAxMy0xMC0wMSAg
U3phYm9sY3MgRMOhdmlkICA8ZGF2aWRzekBpbmYudS1zemVnZWQuaHU+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IGRjYzk5ZmEuLmQ3MTc4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtODI5LDkgKzgyOSw5IEBAIGlmZXEgKCQoZmluZHN0cmluZyBFTkFC
TEVfRlVMTFNDUkVFTl9BUEksJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZVTExTQ1JFRU5f
CiAgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVU
UykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKIGVuZGlmCiAKLWlmZXEgKCQoZmluZHN0
cmluZyBFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBULCQoRkVBVFVSRV9ERUZJTkVTKSksIEVO
QUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpCisjIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVf
TUVESUFfQ09OVFJPTFNfU0NSSVBULCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9NRURJQV9D
T05UUk9MU19TQ1JJUFQpCiAJVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5U
X1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc0FwcGxlLmNzcwotZW5kaWYKKyMgZW5kaWYKIAogVXNlckFnZW50U3R5bGVTaGVldHMuaCA6
IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nv
ci5wbSAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFBMQVRGT1JNX0ZFQVRVUkVfREVGSU5F
UykKIAlwZXJsIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZGVmaW5lcyAiJChG
RUFUVVJFX0RFRklORVMpIiAkQCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICQoVVNFUl9B
R0VOVF9TVFlMRV9TSEVFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDdhNDQxMTkuLjNmYjky
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMCw2ICsxMCw3IEBAIHdlYmNvcmVfY3BwZmxh
Z3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvS0hS
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iYXR0ZXJ5IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbiBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIgXApAQCAtMzY4
LDYgKzM2OSw3IEBAIERlcml2ZWRTb3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmg6IERlcml2ZWRT
b3VyY2VzL0FOR0xFL2dsc2xhbmdfdGFiLmNwcAogCiBJRExfUEFUSCA6PSBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL2JhdHRlcnkgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2FtZXBhZCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL2dlb2xvY2F0aW9uIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvaW5kZXhlZGRiIFwKQEAg
LTU5OSw2ICs2MDEsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCiBFWFRSQV9E
SVNUICs9IFwKIAkkKHdpbGRjYXJkICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jh
dHRlcnkvKi5pZGwpIFwKKwkkKHdpbGRjYXJkICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vKi5pZGwpIFwKIAkkKHdpbGRjYXJkICQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvKi5pZGwpIFwKIAkkKHdpbGRjYXJkICQoc3JjZGlyKS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uLyouaWRsKSBcCiAJJCh3aWxkY2FyZCAkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvKi5pZGwpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oCmluZGV4IDcyYjhiMzguLjBkZmQzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNDUsNyArNDUs
OCBAQCBjbGFzcyBNZWRpYUtleUVycm9yOwogY2xhc3MgTWVkaWFLZXlzOwogY2xhc3MgQ0RNU2Vz
c2lvbjsKIAotY2xhc3MgTWVkaWFLZXlTZXNzaW9uIEZJTkFMIDogcHVibGljIFJlZkNvdW50ZWQ8
TWVkaWFLZXlTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1Ymxp
YyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91
bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBm
aXhlZC4KK2NsYXNzIE1lZGlhS2V5U2Vzc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5
U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtleXMq
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgfk1lZGlhS2V5U2Vzc2lvbigpOwpAQCAt
NzIsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRrZXllcnJvcik7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3
ZWJraXRrZXltZXNzYWdlKTsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBNZWRpYUtleVNlc3Np
b25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIE1lZGlhS2V5U2Vzc2lvbkV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogcHJv
dGVjdGVkOgogICAgIE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWVk
aWFLZXlzKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwpAQCAtOTksOCArMTAwLDggQEAgcHJv
dGVjdGVkOgogICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4gbV9hZGRLZXlUaW1lcjsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVm
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7
IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBG
SU5BTCB7IGRlcmVmKCk7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDc4YTkxZGQuLmQxODU5ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApA
QCAtNTAsNyArNTAsOCBAQCBjbGFzcyBJREJPYmplY3RTdG9yZTsKIGNsYXNzIElEQk9wZW5EQlJl
cXVlc3Q7CiBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIAotY2xhc3MgSURCVHJhbnNh
Y3Rpb24gRklOQUwgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxJ
REJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQg
RklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3Mg
SURCVHJhbnNhY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRl
ZDxJREJUcmFuc2FjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGUsIElEQkRhdGFiYXNlKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgSURCRGF0YWJhc2Uq
LCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgcHJldmlvdXNN
ZXRhZGF0YSk7CkBAIC0xMDEsMTUgKzEwMiwxNSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihjb21wbGV0ZSk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihlcnJvcik7CiAKLSAgICB2b2lkIG9uQWJvcnQoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPik7Ci0gICAgdm9pZCBvbkNvbXBsZXRlKCk7CisgICAgdmlydHVhbCB2b2lkIG9u
QWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CisgICAgdmlydHVhbCB2b2lkIG9u
Q29tcGxldGUoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdl
dEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IElEQlRyYW5zYWN0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gSURCVHJhbnNhY3Rpb25FdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgRXZl
bnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQo
UGFzc1JlZlB0cjxFdmVudD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KSBPVkVSUklERSBGSU5BTDsKIAogICAgIC8vIEFjdGl2ZURP
TU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBPVkVS
UklERTsKQEAgLTEzMSw4ICsxMzIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgZW51
bSBTdGF0ZSB7CiAgICAgICAgIEluYWN0aXZlLCAvLyBDcmVhdGVkIG9yIHN0YXJ0ZWQsIGJ1dCBu
b3QgaW4gYW4gZXZlbnQgY2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDU5YjA3MTAuLjI1MjMzNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAt
NDksNyArNDksOCBAQCBjbGFzcyBNZWRpYVNvdXJjZTsKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZh
dGU7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCi1jbGFzcyBTb3VyY2VCdWZmZXIgRklOQUwgOiBwdWJs
aWMgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7Cisv
LyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIFNvdXJjZUJ1ZmZlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VCdWZmZXI+IGNyZWF0ZShQYXNzT3du
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+LCBNZWRpYVNvdXJjZSopOwogCkBAIC03MiwxNiArNzMs
MTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICAv
LyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBTb3VyY2VCdWZmZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBTb3VyY2VCdWZmZXJF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8U291cmNl
QnVmZmVyPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8U291cmNlQnVmZmVyPjo6ZGVyZWY7
CiAKIHByb3RlY3RlZDoKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0K
IAogcHJpdmF0ZToKICAgICBTb3VyY2VCdWZmZXIoUGFzc093blB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlPiwgTWVkaWFTb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKaW5kZXggMDkwNTEzNy4uM2UwNTY5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXJMaXN0LmgKQEAgLTQzLDcgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
b3VyY2VCdWZmZXI7CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlckxpc3QgRklOQUwgOiBwdWJsaWMgUmVm
Q291bnRlZDxTb3VyY2VCdWZmZXJMaXN0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxk
IGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4
ZWQuCitjbGFzcyBTb3VyY2VCdWZmZXJMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U291cmNlQnVm
ZmVyTGlzdD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VCdWZmZXJM
aXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7CkBAIC02
MCwxOSArNjEsMTkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBTb3VyY2VCdWZmZXJMaXN0
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IFNvdXJjZUJ1ZmZlckxpc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KIAogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8U291cmNlQnVmZmVyTGlzdD46OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkPFNvdXJjZUJ1ZmZlckxpc3Q+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBTb3VyY2VC
dWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZvaWQgc2NoZWR1bGVF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIEdlbmVyaWNFdmVu
dFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaAppbmRleCAxOGE1
NjQwLi43NjA3ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaApAQCAtNDQsNyArNDQsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJLaXRTb3VyY2VCdWZmZXI7CiBjbGFzcyBHZW5l
cmljRXZlbnRRdWV1ZTsKIAotY2xhc3MgV2ViS2l0U291cmNlQnVmZmVyTGlzdCBGSU5BTCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYktpdFNvdXJjZUJ1ZmZlckxpc3Q+LCBwdWJsaWMgU2NyaXB0V3Jh
cHBhYmxlLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CisvLyBGSVhNRTogVGhp
cyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIFdlYktpdFNvdXJjZUJ1ZmZlckxpc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJLaXRTb3VyY2VCdWZmZXJMaXN0PiwgcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYktpdFNvdXJjZUJ1ZmZlckxpc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKQEAgLTYwLDE5ICs2MSwxOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhcigpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdmly
dHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIFdlYktpdFNvdXJjZUJ1ZmZlckxpc3RFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gV2ViS2l0U291cmNlQnVmZmVy
TGlzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiAgICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJLaXRTb3VyY2VCdWZmZXJMaXN0Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
V2ViS2l0U291cmNlQnVmZmVyTGlzdD46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IFdlYktpdFNvdXJjZUJ1ZmZlckxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFdl
YktpdFNvdXJjZUJ1ZmZlckxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdm9p
ZCBjcmVhdGVBbmRGaXJlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0K
IAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
ICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBkOWNmZTdhLi43
YTI4MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5oCkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TWVkaWFTdHJlYW1DZW50ZXI7CiAKLWNsYXNzIE1lZGlhU3RyZWFtIEZJTkFMIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFTdHJlYW0+LCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUsIHB1YmxpYyBNZWRpYVN0cmVhbURlc2NyaXB0b3JDbGllbnQsIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQuCitjbGFzcyBNZWRpYVN0cmVhbSA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiwgcHVibGljIFVSTFJlZ2lzdHJhYmxlLCBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPik7CkBAIC03Miw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICBNZWRpYVN0cmVh
bURlc2NyaXB0b3IqIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3IuZ2V0
KCk7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IEZJTkFMIHsgcmV0dXJuIE1lZGlhU3Ry
ZWFtRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgRklOQUwgeyByZXR1cm4g
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQor
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYVN0cmVhbUV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YVN0cmVhbT46OmRlcmVmOwpAQCAtODUsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFT
dHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNj
cmlwdG9yPik7CiAKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgotICAgIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNv
bnRleHREZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKICAgICAvLyBNZWRpYVN0cmVhbURlc2NyaXB0
b3JDbGllbnQKQEAgLTkzLDggKzk0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkRW5kKCkgT1ZFUlJJREU7CiAgICAgCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9CisgICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7
IH0KIAogICAgIC8vIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVudAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRSZW1vdGVTb3VyY2UoTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
aW5kZXggMWZlMWZmYS4uYjYzNTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTQ0LDcgKzQ0LDggQEAgY2xh
c3MgRGljdGlvbmFyeTsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc0NhbGxiYWNrOwogCi1jbGFzcyBNZWRpYVN0cmVhbVRyYWNrIEZJTkFMIDog
cHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVE
YXRhLCBwdWJsaWMgTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyIHsKKy8vIEZJWE1FOiBUaGlz
IGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8x
MjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1l
ZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFT
dHJlYW1UcmFjaygpOwogCkBAIC02OSw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGVuZGVk
KCkgY29uc3Q7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBN
ZWRpYVN0cmVhbVRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gTWVkaWFTdHJlYW1UcmFja0V2ZW50VGFy
Z2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwpAQCAtODUsOCAr
ODYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhY2tEaWRFbmQoKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJl
ZigpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwg
eyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUg
RklOQUwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZU9ic2VydmVyCiAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaAppbmRleCA2
YjdiMDRiOC4uNmIxOGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKQEAgLTQxLDcgKzQxLDggQEAgY2xhc3MgTWVkaWFTdHJl
YW1UcmFjazsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFJUQ0RUTUZT
ZW5kZXJIYW5kbGVyOwogCi1jbGFzcyBSVENEVE1GU2VuZGVyIEZJTkFMIDogcHVibGljIFJlZkNv
dW50ZWQ8UlRDRFRNRlNlbmRlcj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQs
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxkIGJl
IG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4ZWQu
CitjbGFzcyBSVENEVE1GU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRFRNRlNlbmRlcj4s
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENEVE1G
U2VuZGVyKCk7CkBAIC01OSw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHRvbmVjaGFuZ2UpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gUlRDRFRNRlNlbmRlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFJUQ0RUTUZT
ZW5kZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5B
TCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklE
RTsKQEAgLTc1LDggKzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGlt
ZXJGaXJlZChUaW1lcjxSVENEVE1GU2VuZGVyPiopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IHJlZigpOyB9
CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5BTCB7IGRl
cmVmKCk7IH0KIAogICAgIC8vIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIGRpZFBsYXlUb25lKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCmluZGV4IDUx
MDE3ZjguLjQ5YWRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTQ1LDcgKzQ1LDggQEAgY2xhc3MgRGljdGlvbmFy
eTsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlcjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjsKIAotY2xhc3MgUlRDRGF0YUNoYW5uZWwgRklOQUwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50IHsK
Ky8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDov
L3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgUlRDRGF0YUNoYW5uZWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxSVENEYXRhQ2hhbm5lbD4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgUlRDRGF0YUNoYW5uZWxI
YW5kbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEYXRhQ2hh
bm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzT3duUHRyPFJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcios
IGNvbnN0IFN0cmluZyYgLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAt
NzksOCArODAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBSVENEYXRhQ2hhbm5l
bEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsg
cmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxSVENEYXRhQ2hhbm5lbD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFu
bmVsPjo6ZGVyZWY7CkBAIC05Miw4ICs5Myw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVs
ZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8UlRDRGF0YUNoYW5uZWw+Kik7CiAKICAgICAvLyBFdmVu
dFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVy
ZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFM
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURF
IEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNDk2ZTJmMC4uYzdmOTk5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaApAQCAtNTgsNyArNTgsOCBAQCBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRp
b25DYWxsYmFjazsKIGNsYXNzIFJUQ1N0YXRzQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7
CiAKLWNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIEZJTkFMIDogcHVibGljIFJlZkNvdW50ZWQ8UlRD
UGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUg
bWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4K
K2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5l
Y3Rpb24+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDUGVlckNv
bm5lY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGljdGlvbmFy
eSYgcnRjQ29uZmlndXJhdGlvbiwgY29uc3QgRGljdGlvbmFyeSYgbWVkaWFDb25zdHJhaW50cywg
RXhjZXB0aW9uQ29kZSYpOwogICAgIH5SVENQZWVyQ29ubmVjdGlvbigpOwpAQCAtMTIwLDggKzEy
MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwo
UGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KSBPVkVSUklERTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklO
QUwgeyByZXR1cm4gUlRDUGVlckNvbm5lY3Rpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
KyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKQEAgLTEzOCw4ICsxMzksOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaGFzTG9jYWxTdHJlYW1XaXRoVHJhY2tJZChjb25zdCBTdHJpbmcmIHRyYWNrSWQp
OwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAKICAg
ICB2b2lkIGNoYW5nZVNpZ25hbGluZ1N0YXRlKFNpZ25hbGluZ1N0YXRlKTsKICAgICB2b2lkIGNo
YW5nZUljZUdhdGhlcmluZ1N0YXRlKEljZUdhdGhlcmluZ1N0YXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCA0NTY3
M2ViLi43OTY3MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC02Myw3ICs2Myw4IEBAIGNsYXNzIFRocmVhZGFibGVM
b2FkZXI7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIE5vdGlmaWNhdGlv
biBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKKy8vIEZJWE1FOiBU
aGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcv
Yi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgTm90aWZpY2F0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIE5vdGlmaWNhdGlvbigpOwpAQCAtMTIyLDggKzEyMyw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj46OmRlcmVmOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFy
Z2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFM
IHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nSWNvbigpOwogCkBAIC0xNTIs
OCArMTUzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgp
IE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBkZXJlZigpOyB9CiAK
ICAgICB2b2lkIHN0YXJ0TG9hZGluZ0ljb24oKTsKICAgICB2b2lkIGZpbmlzaExvYWRpbmdJY29u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IDUxZWMzNDUuLjE4NGIxZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oCkBAIC0zNyw3ICszNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlIEZJTkFMIDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhIHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJr
ZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xh
c3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJik7CiAgICAgCkBAIC03NSw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBS
ZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT46OmRlcmVmOwogCi0gICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIApAQCAtODQsOSArODUsOSBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4g
bV9wbGF0Zm9ybVV0dGVyYW5jZTsKICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1f
dm9pY2U7CiAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVy
ZWYoKTsgfQogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCAyYjJmOTc3Li40MDQ4Y2Nk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBA
IC01MCw3ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDsKIAotY2xhc3MgV2ViU29ja2V0IEZJTkFMIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0
cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgV2ViU29ja2V0IDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKICAgICBz
dGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtOTcsOCArOTgsOCBAQCBwdWJsaWM6CiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjbG9zZSk7CiAKICAgICAvLyBFdmVudFRh
cmdldCBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTDsKIAogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V2ViU29ja2V0Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29j
a2V0Pjo6ZGVyZWY7CkBAIC0xMjIsOCArMTIzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcmVzdW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVm
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFM
IHsgZGVyZWYoKTsgfQogCiAgICAgc2l6ZV90IGdldEZyYW1pbmdPdmVyaGVhZChzaXplX3QgcGF5
bG9hZFNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDI1NGQyODQuLjc4YmMyMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODUsNyArMTg1LDcgQEAgX19aTjdXZWJDb3JlMTJFdmVu
dEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRBdFBvaW50RVJLTlNfMTFMYXlvdXRQb2ludEVqUktOU18x
MExheW8KIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZlbnRF
UktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjNo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdX
ZWJDb3JlMTJFdmVudEhhbmRsZXIyNGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNjcm9s
bExvZ2ljYWxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCi1fX1pO
N1dlYkNvcmUxMkV2ZW50SGFuZGxlcjMwc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50RU4z
V1RGMTBQYXNzUmVmUHRySU5TXzdFbGVtZW50RUVFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxl
cjI3c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjMxcGFzc01vdXNlTW92ZWRFdmVudFRvU2Ny
b2xsYmFyc0VSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJDb3JlMTJFdmVudEhh
bmRsZXIzM3NlbmRGYWtlRXZlbnRzQWZ0ZXJXaWRnZXRUcmFja2luZ0VQN05TRXZlbnQKIF9fWk43
V2ViQ29yZTEyRXZlbnRIYW5kbGVyOGtleUV2ZW50RVJLTlNfMjFQbGF0Zm9ybUtleWJvYXJkRXZl
bnRFCkBAIC01NjQsMTMgKzU2NCwxMyBAQCBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25D
MUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzEzRnJhbWVMb2FkVHlwZUViCiBfX1pON1dlYkNv
cmUxNk5hdmlnYXRpb25BY3Rpb25DMUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RU5TXzE0TmF2aWdh
dGlvblR5cGVFCiBfX1pON1dlYkNvcmUxNk5hdmlnYXRpb25BY3Rpb25DMUV2CiBfX1pON1dlYkNv
cmUxNlJlc291cmNlUmVzcG9uc2UxOXNldENlcnRpZmljYXRlQ2hhaW5FUEs5X19DRkFycmF5Ci1f
X1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxMGluaXRTY3JpcHRFUk5TXzE1RE9NV3JhcHBl
cldvcmxkRQorX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTBpbml0U2NyaXB0RVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjExY3JlYXRl
V29ybGRFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTNleGVjdXRlU2NyaXB0RVJL
TjNXVEY2U3RyaW5nRWIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE3Y2FuRXhlY3V0
ZVNjcmlwdHNFTlNfMzNSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHNFCiBfX1pON1dl
YkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxN2phdmFTY3JpcHRDb250ZXh0RXYKIF9fWk43V2ViQ29y
ZTE2U2NyaXB0Q29udHJvbGxlcjE4d2luZG93U2NyaXB0T2JqZWN0RXYKLV9fWk43V2ViQ29yZTE2
U2NyaXB0Q29udHJvbGxlcjIwZXhlY3V0ZVNjcmlwdEluV29ybGRFUk5TXzE1RE9NV3JhcHBlcldv
cmxkRVJLTjNXVEY2U3RyaW5nRWIKK19fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjIwZXhl
Y3V0ZVNjcmlwdEluV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRWIK
IF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjIxcHJvY2Vzc2luZ1VzZXJHZXN0dXJlRXYK
IF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjI0anNPYmplY3RGb3JQbHVnaW5FbGVtZW50
RVBOU18xN0hUTUxQbHVnSW5FbGVtZW50RQogX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9iYWxEYXRh
MTBzdGF0aWNEYXRhRQpAQCAtNjE0LDcgKzYxNCw3IEBAIF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VE
aWRDaGFuZ2VFdgogX19aTjdXZWJDb3JlMTdvcGVuVGVtcG9yYXJ5RmlsZUVSS04zV1RGNlN0cmlu
Z0VSaQogX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVSS05TXzIxTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNl
clZpc2libGVTdHJpbmdFUDVOU1VSTAotX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25D
MUVQTlNfNUZyYW1lRVJOU18xNURPTVdyYXBwZXJXb3JsZEUKK19fWk43V2ViQ29yZTE4RE9NV2lu
ZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dl
YkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CiBfX1pON1dlYkNvcmUxOFBs
YXRmb3JtUGFzdGVib2FyZDEzYnVmZmVyRm9yVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTNzdHJpbmdGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQpA
QCAtMTI1NywxNiArMTI1NywxNiBAQCBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTZzeW5jTG9jYWxT
dG9yYWdlRXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxN2Nsb3NlTG9jYWxTdG9yYWdlRXYKIF9f
Wk43V2ViQ29yZTlQYWdlR3JvdXAxOGFkZFZpc2l0ZWRMaW5rSGFzaEV5CiBfX1pON1dlYkNvcmU5
UGFnZUdyb3VwMThudW1iZXJPZlBhZ2VHcm91cHNFdgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIw
YWRkVXNlclNjcmlwdFRvV29ybGRFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5n
RVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVT
RV9OU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lc0UKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dvcmxkRVBOU18x
NURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzNVUkxFUktOUzNfNlZlY3RvcklT
NF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjNVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZUVOU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFCiBfX1pON1dlYkNvcmU5UGFnZUdy
b3VwMjByZW1vdmVBbGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjFyZW1v
dmVBbGxWaXNpdGVkTGlua3NFdgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxl
U2hlZXRUb1dvcmxkRVJOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzNV
UkxFUktOUzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjVV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzRU5TXzE0VXNlclN0eWxlTGV2ZWxFTlNfMjJVc2VyU3R5
bGVJbmplY3Rpb25UaW1lRQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI1cmVtb3ZlVXNlclNjcmlw
dEZyb21Xb3JsZEVSTlNfMTVET01XcmFwcGVyV29ybGRFUktOU18zVVJMRQotX19aTjdXZWJDb3Jl
OVBhZ2VHcm91cDI2cmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGRFUk5TXzE1RE9NV3JhcHBlcldv
cmxkRQorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkRVBO
U18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzNVUkxFUktOUzNfNlZlY3Rv
cklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjVVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzRU5TXzE0VXNlclN0eWxlTGV2ZWxFTlNfMjJVc2VyU3R5bGVJbmplY3Rpb25UaW1l
RQorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI1cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZEVQTlNf
MTVET01XcmFwcGVyV29ybGRFUktOU18zVVJMRQorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI2cmVt
b3ZlVXNlclNjcmlwdHNGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDI2c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3NFYgotX19aTjdXZWJDb3Jl
OVBhZ2VHcm91cDI5cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGRFUk5TXzE1RE9NV3JhcHBl
cldvcmxkRVJLTlNfM1VSTEUKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJTdHls
ZVNoZWV0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzNVUkxFCiBfX1pON1dl
YkNvcmU5UGFnZUdyb3VwMzBjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXNFdgotX19aTjdX
ZWJDb3JlOVBhZ2VHcm91cDMwcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkRVJOU18xNURP
TVdyYXBwZXJXb3JsZEUKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAzMHJlbW92ZVVzZXJTdHlsZVNo
ZWV0c0Zyb21Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmU5UGFnZUdy
b3VwOXBhZ2VHcm91cEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTlTY3JvbGxiYXIxMG1v
dXNlTW92ZWRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKIF9fWk43V2ViQ29yZTlTY3JvbGxi
YXIxMW1vdXNlRXhpdGVkRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCmluZGV4IGE5NzVhNGQuLjNkYTVmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNjQyNSw3ICs2NDI1LDYgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xNYXRoTUxO
YW1lcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcU1ZHRWxlbWVudEZhY3RvcnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFNWR05hbWVzLmNwcCIgLz4KLSAgICA8Q2xDb21waWxl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xVc2VyQWdlbnRTY3JpcHRzRGF0YS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
VXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMici
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC02NTY2LDcgKzY1NjUsNyBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cTW9kdWxlc1xxdW90YVxTdG9yYWdlRXJyb3JDYWxsYmFjay5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHF1b3RhXFN0b3JhZ2VJbmZvLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccXVvdGFcU3RvcmFnZVF1b3Rh
LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWVkaWFjb250cm9s
c1xNZWRpYUNvbnRyb2xzSG9zdC5jcHAiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxN
b2R1bGVzXG1lZGlhY29udHJvbHNcTWVkaWFDb250cm9sc0hvc3QuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtZWRpYXNvdXJjZVxNZWRpYVNvdXJjZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1lZGlhc291cmNlXE1lZGlhU291
cmNlUmVnaXN0cnkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xt
ZWRpYXNvdXJjZVxTb3VyY2VCdWZmZXIuY3BwIiAvPgpAQCAtMTgyMjcsNyArMTgyMjYsNiBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFNWR0VsZW1l
bnRGYWN0b3J5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcU1ZHTmFtZXMuaCIgLz4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xVc2VyQWdlbnRTY3JpcHRzLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
JChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcVXNl
ckFnZW50U3R5bGVTaGVldHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xXZWJLaXRGb250RmFtaWx5TmFtZXMuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0
ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xYTUxOYW1lcy5oIiAvPgpAQCAt
MjA2MTMsOCArMjA2MTEsNiBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGNzc1x0aGVtZVdpbi5j
c3MiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cY3NzXHRoZW1lV2luUXVpcmtzLmNzcyIgLz4K
ICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxjc3Ncdmlldy1zb3VyY2UuY3NzIiAvPgotICAgIDxOb25l
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWVkaWFjb250cm9sc1xtZWRpYUNvbnRyb2xzQXBwbGUuY3Nz
IiAvPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWVkaWFjb250cm9sc1xtZWRpYUNv
bnRyb2xzQXBwbGUuanMiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5ceG1sXFhQYXRoR3JhbW1h
ci55IiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGJpbmRpbmdzXHNjcmlwdHNcQ29kZUdlbmVy
YXRvci5wbSIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xzY3JpcHRzXENvZGVH
ZW5lcmF0b3JKUy5wbSIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA3MzkzMDM1Li5mZGVlM2NjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC0yOTUsMTIgKzI5NSw2IEBACiAgICAgPEZpbHRlciBJbmNsdWRlPSJwbGF0
Zm9ybVxncmFwaGljc1xlZ2wiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2UyN2IzNDhkLTBi
ODctNGU1Zi1iNWI5LWI5OWUyODNlYTIyYn08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0
ZXI+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJyZW5kZXJpbmdcc2hhcGVzIj4KLSAgICAgIDxVbmlx
dWVJZGVudGlmaWVyPntjMWM4ODQ0OS05NjZmLTQ2MjgtYTg4Yi0xNmMzMGYwOGRkN2V9PC9Vbmlx
dWVJZGVudGlmaWVyPgotICAgIDwvRmlsdGVyPgotICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxl
c1xpbmRleGVkZGJcbGV2ZWxkYiI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57NTRjODg5Zjct
YjVlNy00OTFlLTkwMjktNjVkYzcxODViOWQwfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0Zp
bHRlcj4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxEZXJpdmVkU291cmNlcy5jcHAiPgpAQCAtMjM2Nyw2ICsyMzYxLDIxIEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcRWxsaXBzaXNCb3guY3BwIj4KICAgICAg
IDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5jcHAiPgorICAg
ICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmNwcCI+CisgICAg
ICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIj4K
KyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8u
Y3BwIj4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC02ODQ0LDYgKzY4NTMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZG9t
XElubGluZVN0eWxlU2hlZXRPd25lci5jcHAiPgogICAgICAgPEZpbHRlcj5kb208L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xz
aGFwZXNcUmFzdGVyU2hhcGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzdHlsZVxTdHls
ZUZvbnRTaXplRnVuY3Rpb25zLmNwcCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNjg1OSw2OSArNjg3MSwyMSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cYmluZGluZ3NcanNcV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCI+CiAg
ICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyQmxvY2tGbG93LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxTdHJ1Y3R1cmVkRXhjZXB0
aW9uSGFuZGxlclN1cHByZXNzb3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cd2luPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5k
ZXJpbmdcRmxvYXRpbmdPYmplY3RzLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmls
dGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXFJlbmRlckJsb2NrRmxvdy5jcHAiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xSZW5kZXJFbGVtZW50LmNwcCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJl
bmRlckxpbmVCcmVhay5jcHAiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KLSAg
ICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXEZsb2F0UG9seWdvbi5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcc2hhcGVz
PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5mby5jcHAiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmdc
c2hhcGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiPgotICAgICAgPEZpbHRl
cj5yZW5kZXJpbmdcc2hhcGVzPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlT3V0c2lkZUluZm8uY3BwIj4K
LSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHNoYXBlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hh
cGUuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHNoYXBlczwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xS
YXN0ZXJTaGFwZS5jcHAiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcc2hhcGVzPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzaGFw
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XE1vZHVsZXNcaW5kZXhlZGRiXGxldmVsZGJcSURCQ3Vyc29yQmFja2VuZExldmVsREIuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+TW9kdWxlc1xpbmRleGVkZGJcbGV2ZWxkYjwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xpbmRleGVkZGJc
bGV2ZWxkYlxJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1v
ZHVsZXNcaW5kZXhlZGRiXGxldmVsZGI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXGxldmVsZGJcSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcaW5kZXhlZGRiXGxl
dmVsZGI8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXGxldmVsZGJcSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxE
Qi5jcHAiPgotICAgICAgPEZpbHRlcj5Nb2R1bGVzXGluZGV4ZWRkYlxsZXZlbGRiPC9GaWx0ZXI+
Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
TGluZVdpZHRoLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgotICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTQmVmb3JlVW5sb2FkRXZlbnQuY3BwIj4KLSAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJj
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xVc2VyQWdlbnRTY3JpcHRzRGF0YS5jcHAiPgotICAgICAg
PEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtZWRpYWNvbnRyb2xzXE1lZGlhQ29udHJvbHNI
b3N0LmNwcCI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcbWVkaWFjb250cm9sczwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQmVmb3JlVW5sb2FkRXZlbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXEZsb2F0aW5nT2JqZWN0cy5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGluZGV4ZWRkYlxsZXZlbGRiXElEQkN1cnNvckJhY2tlbmRM
ZXZlbERCLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhl
ZGRiXGxldmVsZGJcSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGluZGV4ZWRkYlxsZXZlbGRiXElEQkZhY3RvcnlCYWNr
ZW5kTGV2ZWxEQi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGlu
ZGV4ZWRkYlxsZXZlbGRiXElEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRmxvYXRQb2x5Z29uLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lV2lkdGguY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlckxpbmVCcmVh
ay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyRWxl
bWVudC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVz
XFNoYXBlSW5mby5jcHAiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnZW9sb2NhdGlvblxDb29yZGluYXRlcy5oIj4K
QEAgLTkxMzIsNiArOTA5NiwyNCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXEVsbGlwc2lzQm94LmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFw
ZXNcUG9seWdvblNoYXBlLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFw
ZXNcUmVjdGFuZ2xlU2hhcGUuaCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNo
YXBlc1xTaGFwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlSW5zaWRlSW5mby5oIj4KKyAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVz
XFNoYXBlSW50ZXJ2YWwuaCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZzwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBl
c1xTaGFwZU91dHNpZGVJbmZvLmgiPgorICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xG
aWx0ZXJFZmZlY3RSZW5kZXJlci5oIj4KICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNDQ3MSw2ICsxNDQ1Myw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkb21cSW5saW5lU3R5bGVTaGVldE93bmVyLmgiPgogICAgICAgPEZpbHRl
cj5kb208L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmFzdGVyU2hhcGUuaCI+CisgICAgICA8RmlsdGVyPnJlbmRl
cmluZzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cc3R5bGVcU3R5bGVSZXNvbHZlVHJlZS5oIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xNDQ4Myw2NCArMTQ0NjgsMjEgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGRvbVxUZXh0Tm9kZVRyYXZlcnNhbC5oIj4KICAgICAgIDxGaWx0ZXI+
ZG9tPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSFRNTEVsZW1lbnRUeXBlSGVscGVycy5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZv
cm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXFNWR0VsZW1lbnRU
eXBlSGVscGVycy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTQmVmb3JlVW5sb2FkRXZlbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xGbG9hdGluZ09iamVjdHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxTaGFyZWRHRElPYmplY3QuaCI+CiAgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdpbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXEZsb2F0aW5nT2JqZWN0cy5o
Ij4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyTGluZUJyZWFrLmgiPgot
ICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJFbGVtZW50LmgiPgotICAgICAg
PEZpbHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEZsb2F0UG9seWdvbi5oIj4KLSAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVPdXRzaWRlSW5m
by5oIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHNoYXBlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFw
ZS5oIj4KLSAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHNoYXBlczwvRmlsdGVyPgotICAgIDwvQ2xJ
bmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFw
ZUluZm8uaCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzaGFwZXM8L0ZpbHRlcj4KLSAgICA8
L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
U2hhcGVJbnNpZGVJbmZvLmgiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcc2hhcGVzPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFNoYXBlSW50ZXJ2YWwuaCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmluZ1xzaGFw
ZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcUmFzdGVyU2hhcGUuaCI+Ci0gICAgICA8RmlsdGVyPnJlbmRlcmlu
Z1xzaGFwZXM8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmgiPgotICAgICAgPEZpbHRlcj5y
ZW5kZXJpbmdcc2hhcGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmgiPgotICAgICAg
PEZpbHRlcj5yZW5kZXJpbmdcc2hhcGVzPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+Ci0gICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZVdpZHRoLmgiPgotICAgICAgPEZp
bHRlcj5yZW5kZXJpbmc8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lTGF5b3V0U3RhdGUuaCI+Ci0gICAgICA8RmlsdGVy
PnJlbmRlcmluZzwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXExpbmVJbmZvLmgiPgotICAgICAgPEZpbHRlcj5yZW5kZXJpbmc8
L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xIVE1MRWxlbWVudFR5cGVIZWxwZXJzLmgiPgotICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlVW5sb2FkRXZl
bnQuaCI+Ci0gICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+Ci0gICAgPC9DbElu
Y2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
U1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiPgotICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwv
RmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXFVzZXJBZ2VudFNjcmlwdHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWVkaWFjb250cm9sc1xNZWRpYUNvbnRyb2xzSG9zdC5jcHAi
IC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFBv
bHlnb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lSW5m
by5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVMYXlvdXRT
dGF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVXaWR0
aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlckVsZW1l
bnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMaW5l
QnJlYWsuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
U2hhcGVJbmZvLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxOb25l
IEluY2x1ZGU9Ii4uXGNzc1xDU1NHcmFtbWFyLnkuaW4iPgpAQCAtMTUzODgsMTIgKzE1MzMwLDYg
QEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxSZXNvdXJjZXNccGx1Z0lucy5qcyI+CiAgICAgICA8
RmlsdGVyPnBsdWdpbnM8L0ZpbHRlcj4KICAgICA8L05vbmU+Ci0gICAgPE5vbmUgSW5jbHVkZT0i
Li5cTW9kdWxlc1xtZWRpYWNvbnRyb2xzXG1lZGlhQ29udHJvbHNBcHBsZS5jc3MiPgotICAgICAg
PEZpbHRlcj5Nb2R1bGVzXG1lZGlhY29udHJvbHM8L0ZpbHRlcj4KLSAgICA8L05vbmU+Ci0gICAg
PE5vbmUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtZWRpYWNvbnRyb2xzXG1lZGlhQ29udHJvbHNBcHBs
ZS5qcyI+Ci0gICAgICA8RmlsdGVyPk1vZHVsZXNcbWVkaWFjb250cm9sczwvRmlsdGVyPgotICAg
IDwvTm9uZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEN1c3RvbUJ1aWxk
U3RlcCBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdy5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlQ29tbW9uLnByb3BzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmVDb21tb24ucHJvcHMKaW5kZXggNGU5YzJkMi4uODkzZGIwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21tb24ucHJvcHMKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmVDb21tb24ucHJvcHMKQEAg
LTcsMTEgKzcsMTEgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPg0KICAgPEl0ZW1EZWZpbml0aW9uR3Jv
dXA+DQogICAgIDxDbENvbXBpbGU+DQotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3Jp
ZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlhY29udHJvbHM7
JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFzdHJlYW07JChQcm9qZWN0RGlyKS4uXE1vZHVs
ZXNcZmlsZXN5c3RlbTskKFByb2plY3REaXIpLi5cTW9kdWxlc1xnZW9sb2NhdGlvbjskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1xpbmRleGVkZGI7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbWVkaWFz
b3VyY2U7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcbmF2aWdhdG9yY29udGVudHV0aWxzOyQoUHJv
amVjdERpcikuLlxNb2R1bGVzXHNwZWVjaDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xwcm94aW1p
dHk7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccXVvdGE7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNc
bm90aWZpY2F0aW9uczskKFByb2plY3REaXIpLi5cTW9kdWxlc1x3ZWJkYXRhYmFzZTskKFByb2pl
Y3REaXIpLi5cTW9kdWxlc1x3ZWJzb2NrZXRzOyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5
OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbjskKFByb2plY3REaXIpLi5cYnJpZGdl
OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYzskKFByb2plY3REaXIpLi5cYnJpZGdlXGpzYzskKFBy
b2plY3REaXIpLi5cY3NzOyQoUHJvamVjdERpcikuLlxlZGl0aW5nOyQoUHJvamVjdERpcikuLlxm
aWxlYXBpOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmc7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmlu
Z1xtYXRobWw7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzaGFwZXM7JChQcm9qZWN0RGlyKS4u
XHJlbmRlcmluZ1xzdHlsZTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nXHN2ZzskKFByb2plY3RE
aXIpLi5cYmluZGluZ3M7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVyaWM7JChQcm9qZWN0
RGlyKS4uXGJpbmRpbmdzXGpzOyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqc1xzcGVjaWFsaXph
dGlvbjskKFByb2plY3REaXIpLi5cZG9tOyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdDskKFBy
b2plY3REaXIpLi5caGlzdG9yeTskKFByb2plY3REaXIpLi5caHRtbDskKFByb2plY3REaXIpLi5c
aHRtbFxjYW52YXM7JChQcm9qZWN0RGlyKS4uXGh0bWxcZm9ybXM7JChQcm9qZWN0RGlyKS4uXGh0
bWxccGFyc2VyOyQoUHJvamVjdERpcikuLlxodG1sXHNoYWRvdzskKFByb2plY3REaXIpLi5caHRt
bFx0cmFjazskKFByb2plY3REaXIpLi5caW5zcGVjdG9yOyQoUHJvamVjdERpcikuLlxsb2FkZXI7
JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZTskKFByb2plY3REaXIpLi5cbG9hZGVyXGFy
Y2hpdmU7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmOyQoUHJvamVjdERpcikuLlxs
b2FkZXJcY2FjaGU7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uOyQoUHJvamVjdERpcikuLlxt
YXRobWw7JChQcm9qZWN0RGlyKS4uXHBhZ2U7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9u
OyQoUHJvamVjdERpcikuLlxwYWdlXHNjcm9sbGluZzskKFByb2plY3REaXIpLi5ccGFnZVx3aW47
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxhbmltYXRp
b247JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG1vY2s7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHNxbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luOyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdpbjskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cY2Y7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzOyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xjYTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcY3B1XGFybVxmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1xmaWx0ZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXGFybTsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGU7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXHRyYW5zZm9ybXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRl
eHQ7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHRleHRcdHJhbnNjb2RlcjskKFByb2plY3REaXIp
Li5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luOyQoUHJvamVjdERpcikuLlx4bWw7JChQcm9qZWN0RGly
KS4uXHhtbFxwYXJzZXI7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXM7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnM7
JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2luOyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9u
OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3M7JChQcm9qZWN0RGlyKS4uXHN2Z1xwcm9wZXJ0
aWVzOyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVyczskKFByb2plY3REaXIpLi5c
c3ZnOyQoUHJvamVjdERpcikuLlx0ZXN0aW5nOyQoUHJvamVjdERpcikuLlx3bWw7JChQcm9qZWN0
RGlyKS4uXHN0b3JhZ2U7JChQcm9qZWN0RGlyKS4uXHN0eWxlOyQoUHJvamVjdERpcikuLlx3ZWJz
b2NrZXRzOyQoUHJvamVjdERpcikuLlx3b3JrZXJzOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGU7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmU7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTskKFByb2plY3REaXIpLi5cRm9y
d2FyZGluZ0hlYWRlcnM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdTskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZWdsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxncmFwaGljc1xzdXJmYWNlczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncc3Vy
ZmFjZXNcZWdsOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVuZ2w7JChXZWJL
aXRfTGlicmFyaWVzKVxpbmNsdWRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRl
OyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlOyQoV2Vi
S2l0X0xpYnJhcmllcylcaW5jbHVkZVxzcWxpdGU7JChXZWJLaXRfTGlicmFyaWVzKVxpbmNsdWRl
XEphdmFTY3JpcHRDb3JlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVx6bGliOyUoQWRkaXRp
b25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+DQor
ICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQcm9qZWN0RGlyKS4uOyQoUHJv
amVjdERpcikuLlxNb2R1bGVzXG1lZGlhc3RyZWFtOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXGZp
bGVzeXN0ZW07JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcZ2VvbG9jYXRpb247JChQcm9qZWN0RGly
KS4uXE1vZHVsZXNcaW5kZXhlZGRiOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG1lZGlhc291cmNl
OyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG5hdmlnYXRvcmNvbnRlbnR1dGlsczskKFByb2plY3RE
aXIpLi5cTW9kdWxlc1xzcGVlY2g7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNccHJveGltaXR5OyQo
UHJvamVjdERpcikuLlxNb2R1bGVzXHF1b3RhOyQoUHJvamVjdERpcikuLlxNb2R1bGVzXG5vdGlm
aWNhdGlvbnM7JChQcm9qZWN0RGlyKS4uXE1vZHVsZXNcd2ViZGF0YWJhc2U7JChQcm9qZWN0RGly
KS4uXE1vZHVsZXNcd2Vic29ja2V0czskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eTskKFBy
b2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW47JChQcm9qZWN0RGlyKS4uXGJyaWRnZTskKFBy
b2plY3REaXIpLi5cYnJpZGdlXGM7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2M7JChQcm9qZWN0
RGlyKS4uXGNzczskKFByb2plY3REaXIpLi5cZWRpdGluZzskKFByb2plY3REaXIpLi5cZmlsZWFw
aTskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcbWF0
aG1sOyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc2hhcGVzOyQoUHJvamVjdERpcikuLlxyZW5k
ZXJpbmdcc3R5bGU7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdmc7JChQcm9qZWN0RGlyKS4u
XGJpbmRpbmdzOyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xnZW5lcmljOyQoUHJvamVjdERpciku
LlxiaW5kaW5nc1xqczskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb247
JChQcm9qZWN0RGlyKS4uXGRvbTskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQ7JChQcm9qZWN0
RGlyKS4uXGhpc3Rvcnk7JChQcm9qZWN0RGlyKS4uXGh0bWw7JChQcm9qZWN0RGlyKS4uXGh0bWxc
Y2FudmFzOyQoUHJvamVjdERpcikuLlxodG1sXGZvcm1zOyQoUHJvamVjdERpcikuLlxodG1sXHBh
cnNlcjskKFByb2plY3REaXIpLi5caHRtbFxzaGFkb3c7JChQcm9qZWN0RGlyKS4uXGh0bWxcdHJh
Y2s7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvcjskKFByb2plY3REaXIpLi5cbG9hZGVyOyQoUHJv
amVjdERpcikuLlxsb2FkZXJcYXBwY2FjaGU7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZl
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZjskKFByb2plY3REaXIpLi5cbG9hZGVy
XGNhY2hlOyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvbjskKFByb2plY3REaXIpLi5cbWF0aG1s
OyQoUHJvamVjdERpcikuLlxwYWdlOyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlvbjskKFBy
b2plY3REaXIpLi5ccGFnZVxzY3JvbGxpbmc7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luOyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybTskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uOyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxzcWw7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHdpbjskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0
d29yazskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW47JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGNmOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljczskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcY2E7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXGNwdVxhcm1cZmlsdGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmls
dGVyczskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xhcm07JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlOyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVx0ZXh0XHRyYW5zY29kZXI7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpbjskKFByb2plY3REaXIpLi5ceG1sOyQoUHJvamVjdERpcikuLlx4
bWxccGFyc2VyOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVxXZWJDb3JlXERlcml2ZWRTb3VyY2VzOyQoUHJvamVjdERpcikuLlxwbHVnaW5zOyQoUHJv
amVjdERpcikuLlxwbHVnaW5zXHdpbjskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbjskKFBy
b2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzOyQoUHJvamVjdERpcikuLlxzdmdccHJvcGVydGllczsk
KFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRlcnM7JChQcm9qZWN0RGlyKS4uXHN2Zzsk
KFByb2plY3REaXIpLi5cdGVzdGluZzskKFByb2plY3REaXIpLi5cd21sOyQoUHJvamVjdERpciku
LlxzdG9yYWdlOyQoUHJvamVjdERpcikuLlxzdHlsZTskKFByb2plY3REaXIpLi5cd2Vic29ja2V0
czskKFByb2plY3REaXIpLi5cd29ya2VyczskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZTskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlOyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlOyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmU7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRp
bmdIZWFkZXJzOyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xncHU7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGVnbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3Jh
cGhpY3Ncc3VyZmFjZXM7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHN1cmZhY2Vz
XGVnbDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbmdsOyQoV2ViS2l0X0xp
YnJhcmllcylcaW5jbHVkZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZTskKFdl
YktpdF9MaWJyYXJpZXMpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZTskKFdlYktpdF9M
aWJyYXJpZXMpXGluY2x1ZGVcc3FsaXRlOyQoV2ViS2l0X0xpYnJhcmllcylcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZTskKFdlYktpdF9MaWJyYXJpZXMpXGluY2x1ZGVcemxpYjslKEFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPg0KICAgICAg
IDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5ESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JFX0NP
TlRFWFRfTUVOVVM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmlu
aXRpb25zPg0KICAgICAgIDxQcmVjb21waWxlZEhlYWRlcj5Vc2U8L1ByZWNvbXBpbGVkSGVhZGVy
Pg0KICAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+V2ViQ29yZVByZWZpeC5oPC9QcmVjb21w
aWxlZEhlYWRlckZpbGU+DQogICAgICAgPEZvcmNlZEluY2x1ZGVGaWxlcz5XZWJDb3JlUHJlZml4
Lmg7SUNVVmVyc2lvbi5oOyUoRm9yY2VkSW5jbHVkZUZpbGVzKTwvRm9yY2VkSW5jbHVkZUZpbGVz
Pg0KICAgICA8L0NsQ29tcGlsZT4NCiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4NCi08L1Byb2pl
Y3Q+DQorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21k
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5j
bWQKaW5kZXggZWM2YWNmZC4uM2RlYWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKQEAgLTE2LDcgKzE2
LDYgQEAgeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGNvbmZpZy5oIiAiJUNPTkZJR1VSQVRJ
T05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVDT05GSUdVUkFUSU9O
QlVJTERESVIlXG9iaiVQbGF0Zm9ybUFyY2hpdGVjdHVyZSVcV2ViQ29yZVxEZXJpdmVkU291cmNl
c1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAv
eSAvZCAiJVByb2plY3REaXIlLi5cTW9kdWxlc1xmaWxlc3lzdGVtXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxNb2R1bGVzXGdlb2xvY2F0aW9uXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1
ZGVcV2ViQ29yZSIKLXhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxNb2R1bGVzXG1lZGlhY29u
dHJvbHNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNv
cHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXE1vZHVsZXNcbWVkaWFzb3VyY2VcKi5oIiAiJUNPTkZJ
R1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0
RGlyJS4uXE1vZHVsZXNcbmF2aWdhdG9yY29udGVudHV0aWxzXCouaCIgIiVDT05GSUdVUkFUSU9O
QlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxN
b2R1bGVzXG5vdGlmaWNhdGlvbnNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVk
ZVxXZWJDb3JlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGM3YTFhZmIuLjk2OTkxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUyNDEsMTEgKzUyNDEsNiBA
QAogCQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRTcz
NDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCAqLzsgfTsK
IAkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdGNkUyMTQ1NzY3
NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUNEMjdGNkU3MTQ1
NzcwRDMwMDc4MjA3RCAvKiBNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTYxNDU3NzBEMzAwNzgyMDdEIC8qIE1l
ZGlhQ29udHJvbGxlci5jcHAgKi87IH07Ci0JCUNEMzM2RjYxMTdGOUY2NDcwMERERENEMCAvKiBB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZGNUYxN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwubW0gKi87IH07Ci0JCUNEMzM2RjYyMTdGOUY2NDcwMERERENEMCAvKiBB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDMzNkY2MDE3RjlGNjQ3MDBERERDRDAgLyogQVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbC5oICovOyB9OwotCQlDRDMzNkY2NDE3RkEwQTREMDBERERDRDAgLyogVmlk
ZW9UcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFW
Ri5oICovOyB9OwotCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMzM2RjY1MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMu
Y3BwICovOyB9OwotCQlDRDMzNkY2ODE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDMzNkY2NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmgg
Ki87IH07CiAJCUNEMzdCMzk4MTVDMUI5NzEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tl
eXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Qz
N0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgKi87IH07
CiAJCUNEM0E0OTUyMTdBOUM4QzYwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZUJhc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTUxMTdBOUM4QjYw
MDI3NEU0MiAvKiBNZWRpYVNvdXJjZUJhc2UuaCAqLzsgfTsKIAkJQ0QzQTQ5NTQxN0E5Q0M5MDAw
Mjc0RTQyIC8qIE1lZGlhU291cmNlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1MDE3QTlDOEI2MDAyNzRFNDIgLyogTWVkaWFTb3Vy
Y2VCYXNlLmNwcCAqLzsgfTsKQEAgLTEyMTA5LDExICsxMjEwNCw2IEBACiAJCUNEMjdGNkUzMTQ1
NzY3NTgwMDc4MjA3RCAvKiBKU01lZGlhQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI3RjZFNjE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFD
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEMzM2RjVGMTdG
OUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QzMzZGNjAxN0Y5RjY0NzAwREREQ0Qw
IC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVB
VkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVB
VkYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0QzMzZGNjUxN0ZBMEFDNjAwRERE
Q0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOyBwYXRoID0gb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlDRDMzNkY2NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQy5oOyBwYXRoID0gb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0
aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1MDE3QTlDOEI2MDAyNzRFNDIgLyogTWVk
aWFTb3VyY2VCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhU291cmNlQmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM0Niw3ICsxMzMzNiw2IEBACiAJCQkJ
MDdCNDQyRDUxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAq
LywKIAkJCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcCAqLywKIAkJCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCi0JCQkJQ0QzMzZGNjMxN0ZBMEE0RDAwRERE
Q0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGF2Zm91
bmRhdGlvbjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTg1Miw4ICsxOTg0MSw2
IEBACiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlDRDMzNkY1RjE3RjlGNjQ3MDBERERDRDAg
LyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSAqLywKLQkJCQlDRDMzNkY2MDE3RjlGNjQ3
MDBERERDRDAgLyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oICovLAogCQkJCUNERTNBODU1
MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJ
Q0RFM0E4NTYxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oICov
LAogCQkJCTA3QUE2QjY5MTY2RDAxOTUwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGT2JqQy5oICovLApAQCAtMTk4NjQsOCArMTk4NTEsNiBAQAogCQkJCURGOUFGRDcxMTNGQzMx
RDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tICovLAog
CQkJCUNEN0UwNTIwMTY1MUE4NDEwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aCAqLywKIAkJCQlDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tICovLAotCQkJCUNEMzM2RjY1MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMuY3BwICovLAotCQkJCUNEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gb2JqYzsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMzA4Nyw3ICsyMzA3Miw2IEBACiAJCQkJODQ4
NTIyN0UxMTkwMTYyQzAwNkVEQzdGIC8qIEpTU1ZHVktlcm5FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNzhFMDkyMDE3RDE0RDFDMDA0MjBBQTEgLyogUlRDRFRNRlNlbmRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzFEQ0I3MDIxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBh
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0QzMzZGNjQxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVv
VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0UxOTBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjA0MDlE
MUNDNjAwMDBCRTMyNSAvKiBKU1RleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzM0ExNEI5MEI3
RDFENTIwMEE1M0ZGRCAvKiBKU1RleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzQ0Nyw3
ICsyMzQzMSw2IEBACiAJCQkJOTc0NkFGMkMxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQ
b3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYzMDE0RjREREU2MDAzRTdB
NzAgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlDRDMzNkY2
ODE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMzIxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9u
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8q
IHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovLApAQCAtMjQ0MjAsNyArMjQ0MDMsNiBAQAog
CQkJCUExMzZBMDBEMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnRUaHJvdHRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERkQ0OEUwRTMwNTI5MDAwOUQxMEFE
IC8qIFhNTEh0dHBSZXF1ZXN0VXBsb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODMzQzgwRDBB
MkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUNEMzM2RjYy
MTdGOUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNOYW1lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVl
Vmlld2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDA0LDcgKzI1OTg2LDYgQEAKIAkJCQkxQTQ5
NEJGQTBBMTIyRjQ0MDBGREFGQzEgLyogSlNIVE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzk2OURCMTE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENEVE1GVG9uZUNoYW5nZUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTgyM0Y1MEMwQTk4REYwMDUzRjFCNSAvKiBKU0hU
TUxFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEMzM2RjY3MTdGQTBBQzYw
MERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM4RTY1RjcwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzZENDRFQzBDMDdGMkVEMDA3MkQyQzkgLyogSlNI
VE1MRW1iZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNkQ0NEJFMEMwN0VGQjYw
MDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNjQyMSw3ICsyNjQwMiw2IEBACiAJCQkJNURBNUUwRkMxMDJCOTUzODAwMDg4Q0Y5IC8qIEpT
V2ViU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMjA1MDlEMUNDNjAwMDBCRTMy
NSAvKiBKU1doZWVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDOEJFNUQwRThCRDE1
QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEMzM2RjYxMTdG
OUY2NDcwMERERENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFDQTVDQkMwRThDRENBRjAwRThFRjkwIC8qIEpTV29ya2VyQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxODI1NjhGMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckds
b2JhbFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzM2RDM0MEVCMEEwOTQwMDc0MTBC
QyAvKiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVjdFF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvcXQvQWNjZXNzaWJpbGl0eU9iamVj
dFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjMyNjQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9xdC9BY2Nlc3NpYmls
aXR5T2JqZWN0UXQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgorCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlnbm9yZUF0dGFj
aG1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1J
bmNsdWRlc09iamVjdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzTWVudUxpc3RQb3B1cCgpIHx8IGlz
TWVudUxpc3RPcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKworICAgIHJl
dHVybiBEZWZhdWx0QmVoYXZpb3I7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4IDUzMzZj
ODMuLjg3OTk0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApAQCAtODcsNyArODcsNyBAQCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkKICAgICAsIG1faXNF
bmNyeXB0ZWRNZWRpYUVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVS
UlkpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oUVQpCiAgICAgLCBtX2lzVmlkZW9UcmFj
a0VuYWJsZWQodHJ1ZSkKICNlbHNlCiAgICAgLCBtX2lzVmlkZW9UcmFja0VuYWJsZWQoZmFsc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAppbmRl
eCBjMjVlZmUyLi5iNjkxYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01XcmFwcGVyV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5jcHAKQEAgLTM2LDE4ICszNiwxOCBAQCBET01XcmFwcGVyV29ybGQ6OkRP
TVdyYXBwZXJXb3JsZChKU0M6OlZNKiB2bSwgYm9vbCBpc05vcm1hbCkKIHsKICAgICBWTTo6Q2xp
ZW50RGF0YSogY2xpZW50RGF0YSA9IG1fdm0tPmNsaWVudERhdGE7CiAgICAgQVNTRVJUKGNsaWVu
dERhdGEpOwotICAgIHN0YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPihjbGllbnREYXRh
KS0+cmVtZW1iZXJXb3JsZCgqdGhpcyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50
RGF0YSo+KGNsaWVudERhdGEpLT5yZW1lbWJlcldvcmxkKHRoaXMpOwogfQogCiBET01XcmFwcGVy
V29ybGQ6On5ET01XcmFwcGVyV29ybGQoKQogewogICAgIFZNOjpDbGllbnREYXRhKiBjbGllbnRE
YXRhID0gbV92bS0+Y2xpZW50RGF0YTsKICAgICBBU1NFUlQoY2xpZW50RGF0YSk7Ci0gICAgc3Rh
dGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KGNsaWVudERhdGEpLT5mb3JnZXRXb3JsZCgq
dGhpcyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KGNsaWVudERhdGEp
LT5mb3JnZXRXb3JsZCh0aGlzKTsKIAogICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVkIGxh
emlseS4KICAgICB3aGlsZSAoIW1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLmlz
RW1wdHkoKSkKLSAgICAgICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5i
ZWdpbigpKS0+ZGVzdHJveVdpbmRvd1NoZWxsKCp0aGlzKTsKKyAgICAgICAgKCptX3NjcmlwdENv
bnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1NoZWxsKHRo
aXMpOwogfQogCiB2b2lkIERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJXcmFwcGVycygpCkBAIC01Nywy
MCArNTcsMjAgQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBlcnMoKQogCiAgICAg
Ly8gVGhlc2UgaXRlbXMgYXJlIGNyZWF0ZWQgbGF6aWx5LgogICAgIHdoaWxlICghbV9zY3JpcHRD
b250cm9sbGVyc1dpdGhXaW5kb3dTaGVsbHMuaXNFbXB0eSgpKQotICAgICAgICAoKm1fc2NyaXB0
Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLmJlZ2luKCkpLT5kZXN0cm95V2luZG93U2hlbGwo
KnRoaXMpOworICAgICAgICAoKm1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLmJl
Z2luKCkpLT5kZXN0cm95V2luZG93U2hlbGwodGhpcyk7CiB9CiAKLURPTVdyYXBwZXJXb3JsZCYg
bm9ybWFsV29ybGQoSlNDOjpWTSYgdm0pCitET01XcmFwcGVyV29ybGQqIG5vcm1hbFdvcmxkKEpT
Qzo6Vk0mIHZtKQogewogICAgIFZNOjpDbGllbnREYXRhKiBjbGllbnREYXRhID0gdm0uY2xpZW50
RGF0YTsKICAgICBBU1NFUlQoY2xpZW50RGF0YSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmVKU0NsaWVudERhdGEqPihjbGllbnREYXRhKS0+bm9ybWFsV29ybGQoKTsKIH0KIAotRE9N
V3JhcHBlcldvcmxkJiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQorRE9NV3JhcHBlcldvcmxkKiBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCYgY2FjaGVkTm9ybWFsV29ybGQgPSBub3JtYWxXb3Js
ZCgqSlNET01XaW5kb3c6OmNvbW1vblZNKCkpOworICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQq
IGNhY2hlZE5vcm1hbFdvcmxkID0gbm9ybWFsV29ybGQoKkpTRE9NV2luZG93Ojpjb21tb25WTSgp
KTsKICAgICByZXR1cm4gY2FjaGVkTm9ybWFsV29ybGQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKaW5kZXggYjhiYzJjZi4uNjQ2ODRhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTY3LDEy
ICs2NywxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc05vcm1hbDsKIH07CiAKLURPTVdyYXBw
ZXJXb3JsZCYgbm9ybWFsV29ybGQoSlNDOjpWTSYpOwotRE9NV3JhcHBlcldvcmxkJiBtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKTsKLWlubGluZSBET01XcmFwcGVyV29ybGQmIGRlYnVnZ2VyV29ybGQo
KSB7IHJldHVybiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsgfQotaW5saW5lIERPTVdyYXBwZXJX
b3JsZCYgcGx1Z2luV29ybGQoKSB7IHJldHVybiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsgfQor
RE9NV3JhcHBlcldvcmxkKiBub3JtYWxXb3JsZChKU0M6OlZNJik7CitET01XcmFwcGVyV29ybGQq
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpOworaW5saW5lIERPTVdyYXBwZXJXb3JsZCogZGVidWdn
ZXJXb3JsZCgpIHsgcmV0dXJuIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpOyB9CitpbmxpbmUgRE9N
V3JhcHBlcldvcmxkKiBwbHVnaW5Xb3JsZCgpIHsgcmV0dXJuIG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpOyB9CiAKLWlubGluZSBET01XcmFwcGVyV29ybGQmIGN1cnJlbnRXb3JsZChKU0M6OkV4ZWNT
dGF0ZSogZXhlYykKK2lubGluZSBET01XcmFwcGVyV29ybGQqIGN1cnJlbnRXb3JsZChKU0M6OkV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT53b3JsZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKaW5kZXggYWFiZmIwMS4uMzYyMzlk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIEdDQ29udHJvbGxlciYgZ2NDb250cm9sbGVyKCkKIH0KIAogR0NDb250cm9s
bGVyOjpHQ0NvbnRyb2xsZXIoKQotI2lmICFVU0UoQ0YpICYmICFQTEFURk9STShCTEFDS0JFUlJZ
KQorI2lmICFVU0UoQ0YpICYmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZPUk0oUVQp
CiAgICAgOiBtX0dDVGltZXIodGhpcywgJkdDQ29udHJvbGxlcjo6Z2NUaW1lckZpcmVkKQogI2Vu
ZGlmCiB7CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVj
dFNvb24oKQogICAgIC8vIHN5c3RlbXMgd2l0aCBDb3JlRm91bmRhdGlvbi4gSWYgYW5kIHdoZW4g
dGhlIG5vdGlvbiBvZiBhIHJ1biBsb29wIGlzIHB1c2hlZCAKICAgICAvLyBkb3duIGludG8gV1RG
IHNvIHRoYXQgbW9yZSBwbGF0Zm9ybXMgY2FuIHRha2UgYWR2YW50YWdlIG9mIGl0LCB3ZSB3aWxs
IGJlIAogICAgIC8vIGFibGUgdG8gdXNlIHJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBoIG9uIG1v
cmUgcGxhdGZvcm1zLgotI2lmIFVTRShDRikgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyNpZiBV
U0UoQ0YpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFFUKQogICAgIEpTTG9j
a0hvbGRlciBsb2NrKEpTRE9NV2luZG93Ojpjb21tb25WTSgpKTsKICAgICBKU0RPTVdpbmRvdzo6
Y29tbW9uVk0oKS0+aGVhcC5yZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCgpOwogI2Vsc2UKQEAg
LTcxLDcgKzcxLDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0U29vbigpCiAj
ZW5kaWYKIH0KIAotI2lmICFVU0UoQ0YpICYmICFQTEFURk9STShCTEFDS0JFUlJZKQorI2lmICFV
U0UoQ0YpICYmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZPUk0oUVQpCiB2b2lkIEdD
Q29udHJvbGxlcjo6Z2NUaW1lckZpcmVkKFRpbWVyPEdDQ29udHJvbGxlcj4qKQogewogICAgIGNv
bGxlY3QoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCmluZGV4
IDhhMjRjYjAuLmFjNDgzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRl
OgogICAgICAgICBHQ0NvbnRyb2xsZXIoKTsgLy8gVXNlIGdjQ29udHJvbGxlcigpIGluc3RlYWQK
IAotI2lmICFVU0UoQ0YpICYmICFQTEFURk9STShCTEFDS0JFUlJZKQorI2lmICFVU0UoQ0YpICYm
ICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZPUk0oUVQpCiAgICAgICAgIHZvaWQgZ2NU
aW1lckZpcmVkKFRpbWVyPEdDQ29udHJvbGxlcj4qKTsKICAgICAgICAgVGltZXI8R0NDb250cm9s
bGVyPiBtX0dDVGltZXI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IDBjOTNjZWUu
LjNhZDVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5
bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtMzcxLDcgKzM3MSw3IEBAIEpTVmFs
dWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBpZiAoIWNzc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAg
ICBjdXJyZW50V29ybGQoZXhlYykubV9jc3NWYWx1ZVJvb3RzLmFkZChjc3NWYWx1ZS5nZXQoKSwg
cm9vdChpbXBsKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgp
LgorICAgIGN1cnJlbnRXb3JsZChleGVjKS0+bV9jc3NWYWx1ZVJvb3RzLmFkZChjc3NWYWx1ZS5n
ZXQoKSwgcm9vdChpbXBsKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5h
bGl6ZSgpLgogICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihjc3NWYWx1ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
VmFsdWVDdXN0b20uY3BwCmluZGV4IDgxODYzZTUuLjExZjUwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCkBAIC03MCw4ICs3MCw4IEBA
IGJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsCiB2b2lkIEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
SlNDU1NWYWx1ZSoganNDU1NWYWx1ZSA9IGpzQ2FzdDxKU0NTU1ZhbHVlKj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHdvcmxkLm1fY3NzVmFsdWVSb290cy5yZW1v
dmUoanNDU1NWYWx1ZS0+aW1wbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgd29ybGQtPm1fY3NzVmFs
dWVSb290cy5yZW1vdmUoanNDU1NWYWx1ZS0+aW1wbCgpKTsKICAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwganNDU1NWYWx1ZS0+aW1wbCgpLCBqc0NTU1ZhbHVlKTsKICAgICBqc0NTU1ZhbHVlLT5y
ZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aAppbmRleCBkZTM3YjA3Li4wMDg3MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaApAQCAtMTEyLDg3ICsxMTIsODcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsK
ICAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChnZXRE
T01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPih2bSwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKS0+c3RvcmVkUHJvdG90eXBlKCkpKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQm
IHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKikKKyAgICBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVy
KikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlVHlwZWRBcnJheUNv
bnRyb2xsZXIqPih3b3JsZC52bSgpLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyLmdldCgpKS0+d3Jh
cHBlck93bmVyKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlVHlwZWRBcnJh
eUNvbnRyb2xsZXIqPih3b3JsZC0+dm0oKS0+bV90eXBlZEFycmF5Q29udHJvbGxlci5nZXQoKSkt
PndyYXBwZXJPd25lcigpOwogICAgIH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCogd3JhcHBlckNv
bnRleHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciopCisgICAgaW5s
aW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIEpTQzo6QXJy
YXlCdWZmZXIqKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZ3b3JsZDsKKyAgICAgICAgcmV0dXJu
IHdvcmxkOwogICAgIH0KIAotICAgIGlubGluZSBKU0RPTVdyYXBwZXIqIGdldElubGluZUNhY2hl
ZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiwgdm9pZCopIHsgcmV0dXJuIDA7IH0KLSAgICBpbmxp
bmUgYm9vbCBzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYsIHZvaWQqLCBK
U0RPTVdyYXBwZXIqLCBKU0M6OldlYWtIYW5kbGVPd25lciosIHZvaWQqKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGlubGluZSBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVy
V29ybGQmLCB2b2lkKiwgSlNET01XcmFwcGVyKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbmxp
bmUgSlNET01XcmFwcGVyKiBnZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCos
IHZvaWQqKSB7IHJldHVybiAwOyB9CisgICAgaW5saW5lIGJvb2wgc2V0SW5saW5lQ2FjaGVkV3Jh
cHBlcihET01XcmFwcGVyV29ybGQqLCB2b2lkKiwgSlNET01XcmFwcGVyKiwgSlNDOjpXZWFrSGFu
ZGxlT3duZXIqLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbmxpbmUgYm9vbCBjbGVh
cklubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiwgdm9pZCosIEpTRE9NV3JhcHBl
ciopIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBpbmxpbmUgSlNET01XcmFwcGVyKiBnZXRJbmxp
bmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFNjcmlwdFdyYXBwYWJsZSog
ZG9tT2JqZWN0KQorICAgIGlubGluZSBKU0RPTVdyYXBwZXIqIGdldElubGluZUNhY2hlZFdyYXBw
ZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgU2NyaXB0V3JhcHBhYmxlKiBkb21PYmplY3QpCiAg
ICAgewotICAgICAgICBpZiAoIXdvcmxkLmlzTm9ybWFsKCkpCisgICAgICAgIGlmICghd29ybGQt
PmlzTm9ybWFsKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGRvbU9i
amVjdC0+d3JhcHBlcigpOwogICAgIH0KIAotICAgIGlubGluZSBKU0M6OkpTQXJyYXlCdWZmZXIq
IGdldElubGluZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpBcnJh
eUJ1ZmZlciogYnVmZmVyKQorICAgIGlubGluZSBKU0M6OkpTQXJyYXlCdWZmZXIqIGdldElubGlu
ZUNhY2hlZFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgSlNDOjpBcnJheUJ1ZmZlciog
YnVmZmVyKQogICAgIHsKLSAgICAgICAgaWYgKCF3b3JsZC5pc05vcm1hbCgpKQorICAgICAgICBp
ZiAoIXdvcmxkLT5pc05vcm1hbCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBidWZmZXItPm1fd3JhcHBlci5nZXQoKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBz
ZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFNjcmlwdFdyYXBw
YWJsZSogZG9tT2JqZWN0LCBKU0RPTVdyYXBwZXIqIHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIsIHZvaWQqIGNvbnRleHQpCisgICAgaW5saW5lIGJvb2wgc2V0SW5s
aW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBTY3JpcHRXcmFwcGFibGUq
IGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyLCBKU0M6OldlYWtIYW5kbGVPd25lciog
d3JhcHBlck93bmVyLCB2b2lkKiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCF3b3JsZC5p
c05vcm1hbCgpKQorICAgICAgICBpZiAoIXdvcmxkLT5pc05vcm1hbCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBkb21PYmplY3QtPnNldFdyYXBwZXIod3JhcHBlciwgd3Jh
cHBlck93bmVyLCBjb250ZXh0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
aW5saW5lIGJvb2wgc2V0SW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBKU0M6OkFycmF5QnVmZmVyKiBkb21PYmplY3QsIEpTQzo6SlNBcnJheUJ1ZmZlciogd3JhcHBl
ciwgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lciwgdm9pZCogY29udGV4dCkKKyAg
ICBpbmxpbmUgYm9vbCBzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCogd29y
bGQsIEpTQzo6QXJyYXlCdWZmZXIqIGRvbU9iamVjdCwgSlNDOjpKU0FycmF5QnVmZmVyKiB3cmFw
cGVyLCBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyLCB2b2lkKiBjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKCF3b3JsZC5pc05vcm1hbCgpKQorICAgICAgICBpZiAoIXdvcmxk
LT5pc05vcm1hbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkb21PYmpl
Y3QtPm1fd3JhcHBlciA9IEpTQzo6V2VhazxKU0M6OkpTQXJyYXlCdWZmZXI+KHdyYXBwZXIsIHdy
YXBwZXJPd25lciwgY29udGV4dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGlubGluZSBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBTY3JpcHRXcmFwcGFibGUqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVyKQor
ICAgIGlubGluZSBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihET01XcmFwcGVyV29ybGQq
IHdvcmxkLCBTY3JpcHRXcmFwcGFibGUqIGRvbU9iamVjdCwgSlNET01XcmFwcGVyKiB3cmFwcGVy
KQogICAgIHsKLSAgICAgICAgaWYgKCF3b3JsZC5pc05vcm1hbCgpKQorICAgICAgICBpZiAoIXdv
cmxkLT5pc05vcm1hbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkb21P
YmplY3QtPmNsZWFyV3JhcHBlcih3cmFwcGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaW5saW5lIGJvb2wgY2xlYXJJbmxpbmVDYWNoZWRXcmFwcGVyKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIEpTQzo6QXJyYXlCdWZmZXIqIGRvbU9iamVjdCwgSlNDOjpKU0FycmF5QnVm
ZmVyKiB3cmFwcGVyKQorICAgIGlubGluZSBib29sIGNsZWFySW5saW5lQ2FjaGVkV3JhcHBlcihE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBKU0M6OkFycmF5QnVmZmVyKiBkb21PYmplY3QsIEpTQzo6
SlNBcnJheUJ1ZmZlciogd3JhcHBlcikKICAgICB7Ci0gICAgICAgIGlmICghd29ybGQuaXNOb3Jt
YWwoKSkKKyAgICAgICAgaWYgKCF3b3JsZC0+aXNOb3JtYWwoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgd2Vha0NsZWFyKGRvbU9iamVjdC0+bV93cmFwcGVyLCB3cmFwcGVy
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU09iamVjdCogZ2V0Q2FjaGVkV3JhcHBlcihET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBET01DbGFzcyogZG9tT2JqZWN0KQorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNPYmplY3QqIGdldENhY2hlZFdyYXBwZXIoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCkKICAgICB7CiAgICAgICAg
IGlmIChKU0M6OkpTT2JqZWN0KiB3cmFwcGVyID0gZ2V0SW5saW5lQ2FjaGVkV3JhcHBlcih3b3Js
ZCwgZG9tT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgICAgICByZXR1
cm4gd29ybGQubV93cmFwcGVycy5nZXQoZG9tT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHdvcmxk
LT5tX3dyYXBwZXJzLmdldChkb21PYmplY3QpOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBET01DbGFzcywgdHlwZW5hbWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgdm9pZCBjYWNoZVdy
YXBwZXIoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBl
ckNsYXNzKiB3cmFwcGVyKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5h
bWUgV3JhcHBlckNsYXNzPiBpbmxpbmUgdm9pZCBjYWNoZVdyYXBwZXIoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBlckNsYXNzKiB3cmFwcGVyKQogICAg
IHsKICAgICAgICAgSlNDOjpXZWFrSGFuZGxlT3duZXIqIG93bmVyID0gd3JhcHBlck93bmVyKHdv
cmxkLCBkb21PYmplY3QpOwogICAgICAgICB2b2lkKiBjb250ZXh0ID0gd3JhcHBlckNvbnRleHQo
d29ybGQsIGRvbU9iamVjdCk7CiAgICAgICAgIGlmIChzZXRJbmxpbmVDYWNoZWRXcmFwcGVyKHdv
cmxkLCBkb21PYmplY3QsIHdyYXBwZXIsIG93bmVyLCBjb250ZXh0KSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgd2Vha0FkZCh3b3JsZC5tX3dyYXBwZXJzLCAodm9pZCopZG9tT2JqZWN0
LCBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4od3JhcHBlciwgb3duZXIsIGNvbnRleHQpKTsKKyAg
ICAgICAgd2Vha0FkZCh3b3JsZC0+bV93cmFwcGVycywgKHZvaWQqKWRvbU9iamVjdCwgSlNDOjpX
ZWFrPEpTQzo6SlNPYmplY3Q+KHdyYXBwZXIsIG93bmVyLCBjb250ZXh0KSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIERPTUNsYXNzLCB0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlu
bGluZSB2b2lkIHVuY2FjaGVXcmFwcGVyKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIERPTUNsYXNz
KiBkb21PYmplY3QsIFdyYXBwZXJDbGFzcyogd3JhcHBlcikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRE9NQ2xhc3MsIHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIHZvaWQgdW5jYWNoZVdy
YXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgRE9NQ2xhc3MqIGRvbU9iamVjdCwgV3JhcHBl
ckNsYXNzKiB3cmFwcGVyKQogICAgIHsKICAgICAgICAgaWYgKGNsZWFySW5saW5lQ2FjaGVkV3Jh
cHBlcih3b3JsZCwgZG9tT2JqZWN0LCB3cmFwcGVyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgd2Vha1JlbW92ZSh3b3JsZC5tX3dyYXBwZXJzLCAodm9pZCopZG9tT2JqZWN0LCB3cmFw
cGVyKTsKKyAgICAgICAgd2Vha1JlbW92ZSh3b3JsZC0+bV93cmFwcGVycywgKHZvaWQqKWRvbU9i
amVjdCwgd3JhcHBlcik7CiAgICAgfQogICAgIAogICAgICNkZWZpbmUgQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgY2xhc3NOYW1lLCBvYmplY3QpIGNyZWF0ZVdyYXBwZXI8
SlMjI2NsYXNzTmFtZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxjbGFzc05hbWUq
PihvYmplY3QpKQpAQCAtNTc3LDcgKzU3Nyw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBKU1N0cmluZ0NhY2hlJiBzdHJpbmdDYWNo
ZSA9IGN1cnJlbnRXb3JsZChleGVjKS5tX3N0cmluZ0NhY2hlOworICAgICAgICBKU1N0cmluZ0Nh
Y2hlJiBzdHJpbmdDYWNoZSA9IGN1cnJlbnRXb3JsZChleGVjKS0+bV9zdHJpbmdDYWNoZTsKICAg
ICAgICAgSlNTdHJpbmdDYWNoZTo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IHN0cmluZ0NhY2hlLmFk
ZChzdHJpbmdJbXBsLCBudWxscHRyKTsKICAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEpTQzo6anNTdHJpbmco
ZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmY2JkMTQzLi4zNWQ1MzA5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
NDcsNyArNDcsNiBAQCBKU0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxETwogICAgICwgbV9jdXJyZW50RXZl
bnQoMCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7Ci0gICAgQVNTRVJUKG1fd29ybGQpOwogfQog
CiB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTEyNSwx
MiArMTI0LDEyIEBAIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvCiAgICAgcmV0dXJuIDA7CiB9CiAK
LUpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiBkb2N1bWVu
dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK0pTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xv
YmFsT2JqZWN0KERvY3VtZW50KiBkb2N1bWVudCwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsK
ICAgICByZXR1cm4gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+ZnJhbWUoKSwgd29ybGQpOwogfQog
Ci1KU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQor
SlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsK
ICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh0b0RvY3VtZW50KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLCB3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAppbmRleCAzZmY4MmFjLi5hNTlhMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTY1LDExICs2NSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0M6OkpT
Q2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBET01XcmFwcGVyV29ybGQmIHdv
cmxkKCkgeyByZXR1cm4gKm1fd29ybGQ7IH0KKyAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
c3RhdGljIFdFQktJVF9FWFBPUlREQVRBIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKLQog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBpbmZvKCkg
eyByZXR1cm4gJnNfaW5mbzsgfQogCkBAIC0xMDEsOCArMTAwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50
KiwgSlNDOjpFeGVjU3RhdGUqKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2Jh
bE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpFeGVjU3RhdGUqKTsKIAotICAg
IEpTRE9NR2xvYmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiwgRE9NV3Jh
cHBlcldvcmxkJik7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIERPTVdyYXBwZXJXb3JsZCYpOworICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiB0b0pTRE9NR2xvYmFsT2JqZWN0KERvY3VtZW50KiwgRE9NV3JhcHBlcldvcmxk
Kik7CisgICAgSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIERPTVdyYXBwZXJXb3JsZCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CmluZGV4IGMyOWU2ZDUuLjI2ZmVjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNTQsNyArNTQsNyBAQCBjb25zdCBDbGFzc0luZm8g
SlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6
OnNfaW5mbwogY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3Vw
cG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0LCAmamF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZCwgJnF1ZXVlVGFza1RvRXZlbnRM
b29wIH07CiAKIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93
U2hlbGwqIHNoZWxsKQotICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNo
ZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKKyAgICA6IEpTRE9NR2xv
YmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKICAgICAsIG1faW1wbCh3aW5kb3cpCiAgICAgLCBtX3NoZWxsKHNoZWxsKQog
ewpAQCAtMjEyLDcgKzIxMiw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIERPTVdp
bmRvdyogZG9tV2luZG93KQogICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCkud2luZG93U2hlbGwo
Y3VycmVudFdvcmxkKGV4ZWMpKTsKIH0KIAotSlNET01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJh
bWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorSlNET01XaW5kb3cqIHRvSlNET01X
aW5kb3coRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuaAppbmRleCA4Y2E1MGI1Li5iZmE1ZjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtODUsNyArODUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBE
T01XaW5kb3cqKTsKIAogICAgIC8vIFJldHVybnMgSlNET01XaW5kb3cgb3IgMAotICAgIEpTRE9N
V2luZG93KiB0b0pTRE9NV2luZG93KEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CisgICAgSlNE
T01XaW5kb3cqIHRvSlNET01XaW5kb3coRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKICAgICBK
U0RPTVdpbmRvdyogdG9KU0RPTVdpbmRvdyhKU0M6OkpTVmFsdWUpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hl
bGwuY3BwCmluZGV4IDU5NzNhMjcuLjdmN2RhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC00Myw5ICs0Myw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93U2hlbGw6OnNfaW5mbyA9
IHsgIkpTRE9NV2luZG93U2hlbGwiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTRE9NV2luZG93U2hlbGwpIH07CiAKLUpTRE9NV2luZG93U2hlbGw6OkpTRE9NV2lu
ZG93U2hlbGwoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKLSAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAsIG1fd29ybGQoJndvcmxkKQor
SlNET01XaW5kb3dTaGVsbDo6SlNET01XaW5kb3dTaGVsbChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKKyAgICA6IEJhc2UoKndvcmxkLT52bSgpLCBzdHJ1Y3R1
cmUpCisgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCkBAIC02MSwxMSArNjEsMTEgQEAgdm9p
ZCBKU0RPTVdpbmRvd1NoZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKICAgICBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd1NoZWxsKj4oY2VsbCktPkpTRE9NV2luZG93U2hlbGw6On5KU0RPTVdpbmRv
d1NoZWxsKCk7CiB9CiAKLXZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KFZNJiB2bSwg
SlNET01XaW5kb3cqIHdpbmRvdykKK3ZvaWQgSlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KEpT
Qzo6Vk0mIHZtLCBKU0RPTVdpbmRvdyogd2luZG93KQogewogICAgIEFTU0VSVF9BUkcod2luZG93
LCB3aW5kb3cpOwogICAgIHNldFRhcmdldCh2bSwgd2luZG93KTsKLSAgICBzdHJ1Y3R1cmUoKS0+
c2V0R2xvYmFsT2JqZWN0KHZtLCB3aW5kb3cpOworICAgIHN0cnVjdHVyZSgpLT5zZXRHbG9iYWxP
YmplY3QoKkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCB3aW5kb3cpOwogICAgIGdjQ29udHJvbGxl
cigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCkBAIC03NywxNSArNzcsMTMgQEAgdm9pZCBK
U0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3coUGFzc1JlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRv
dykKICAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBwcm90b3R5
cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCiAgICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xv
YmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKICAgICAvLyBjb25z
dHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5cGUuKQotICAgIAotICAgIFZNJiB2
bSA9ICpKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKTsKLSAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSA9IEpTRE9NV2luZG93UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIDAsIGpz
TnVsbCgpKTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSh2bSwg
SlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZSh2bSwgMCwgcHJvdG90eXBlU3RydWN0dXJlKSk7
Ci0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2luZG93OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIDAsIHByb3RvdHlwZS5nZXQoKSk7Ci0gICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93
ID0gSlNET01XaW5kb3c6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBkb21XaW5kb3csIHRoaXMpOwot
ICAgIHByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCh2bSwganNET01XaW5k
b3cpOwotICAgIHNldFdpbmRvdyh2bSwganNET01XaW5kb3cpOworICAgIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlID0gSlNET01XaW5kb3dQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSgq
SlNET01XaW5kb3c6OmNvbW1vblZNKCksIDAsIGpzTnVsbCgpKTsKKyAgICBTdHJvbmc8SlNET01X
aW5kb3dQcm90b3R5cGU+IHByb3RvdHlwZSgqSlNET01XaW5kb3c6OmNvbW1vblZNKCksIEpTRE9N
V2luZG93UHJvdG90eXBlOjpjcmVhdGUoKkpTRE9NV2luZG93Ojpjb21tb25WTSgpLCAwLCBwcm90
b3R5cGVTdHJ1Y3R1cmUpKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNET01XaW5k
b3c6OmNyZWF0ZVN0cnVjdHVyZSgqSlNET01XaW5kb3c6OmNvbW1vblZNKCksIDAsIHByb3RvdHlw
ZS5nZXQoKSk7CisgICAgSlNET01XaW5kb3cqIGpzRE9NV2luZG93ID0gSlNET01XaW5kb3c6OmNy
ZWF0ZSgqSlNET01XaW5kb3c6OmNvbW1vblZNKCksIHN0cnVjdHVyZSwgZG9tV2luZG93LCB0aGlz
KTsKKyAgICBwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKkpTRE9NV2lu
ZG93Ojpjb21tb25WTSgpLCBqc0RPTVdpbmRvdyk7CisgICAgc2V0V2luZG93KCpKU0RPTVdpbmRv
dzo6Y29tbW9uVk0oKSwganNET01XaW5kb3cpOwogICAgIEFTU0VSVChqc0RPTVdpbmRvdy0+Z2xv
YmFsT2JqZWN0KCkgPT0ganNET01XaW5kb3cpOwogICAgIEFTU0VSVChwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpID09IGpzRE9NV2luZG93KTsKIH0KQEAgLTExMCwxMSArMTA4LDExIEBAIEpTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gZnJhbWUt
PnNjcmlwdCgpLndpbmRvd1NoZWxsKGN1cnJlbnRXb3JsZChleGVjKSk7CiB9CiAKLUpTRE9NV2lu
ZG93U2hlbGwqIHRvSlNET01XaW5kb3dTaGVsbChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCitKU0RPTVdpbmRvd1NoZWxsKiB0b0pTRE9NV2luZG93U2hlbGwoRnJhbWUqIGZy
YW1lLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCiB7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS53aW5kb3dTaGVs
bCh3b3JsZCk7CisgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS53aW5kb3dTaGVsbChpc29sYXRl
ZFdvcmxkKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IDg2NTI2YzUuLjg5NmVhN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTQw
LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEpTRE9NV2luZG93U2hl
bGwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICAgICAgdHlwZWRlZiBKU0M6OkpTUHJveHkg
QmFzZTsKICAgICBwdWJsaWM6CisgICAgICAgIEpTRE9NV2luZG93U2hlbGwoUGFzc1JlZlB0cjxE
T01XaW5kb3c+LCBKU0M6OlN0cnVjdHVyZSosIERPTVdyYXBwZXJXb3JsZCopOwogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5k
b3coKSBjb25zdCB7IHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KHRhcmdldCgpKTsg
fQpAQCAtNTAsMTAgKzUxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBET01X
aW5kb3cqIGltcGwoKSBjb25zdDsKIAotICAgICAgICBzdGF0aWMgSlNET01XaW5kb3dTaGVsbCog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgICAgICBzdGF0
aWMgSlNET01XaW5kb3dTaGVsbCogY3JlYXRlKFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpIAogICAg
ICAgICB7Ci0gICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01XaW5kb3dTaGVsbD4odm0uaGVhcCkpIEpTRE9NV2lu
ZG93U2hlbGwodm0sIHN0cnVjdHVyZSwgd29ybGQpOwotICAgICAgICAgICAgc2hlbGwtPmZpbmlz
aENyZWF0aW9uKHZtLCB3aW5kb3cpOworICAgICAgICAgICAgSlNDOjpIZWFwJiBoZWFwID0gSlNE
T01XaW5kb3c6OmNvbW1vblZNKCktPmhlYXA7CisgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxs
KiBzaGVsbCA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01XaW5kb3dTaGVs
bD4oaGVhcCkpIEpTRE9NV2luZG93U2hlbGwoc3RydWN0dXJlLCB3b3JsZCk7CisgICAgICAgICAg
ICBzaGVsbC0+ZmluaXNoQ3JlYXRpb24oKndvcmxkLT52bSgpLCB3aW5kb3cpOwogICAgICAgICAg
ICAgcmV0dXJuIHNoZWxsOyAKICAgICAgICAgfQogCkBAIC02MiwxNyArNjQsMTcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIDAsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OlByb3h5VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCgpIHsgcmV0dXJuICptX3dvcmxkOyB9CisgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IEpTRE9NV2luZG93U2hlbGwoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgRE9NV3JhcHBlcldv
cmxkJik7CisgICAgICAgIEpTRE9NV2luZG93U2hlbGwoSlNDOjpTdHJ1Y3R1cmUqLCBET01XcmFw
cGVyV29ybGQqKTsKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgUGFzc1Jl
ZlB0cjxET01XaW5kb3c+KTsKIAogICAgICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dv
cmxkOwogICAgIH07CiAKICAgICBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEZy
YW1lKik7Ci0gICAgSlNET01XaW5kb3dTaGVsbCogdG9KU0RPTVdpbmRvd1NoZWxsKEZyYW1lKiwg
RE9NV3JhcHBlcldvcmxkJik7CisgICAgSlNET01XaW5kb3dTaGVsbCogdG9KU0RPTVdpbmRvd1No
ZWxsKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCmluZGV4
IGE1MDc0N2IuLmM2YjExMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXJyb3JIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vy
cm9ySGFuZGxlci5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0Vycm9ySGFuZGxlcjo6SlNFcnJvckhhbmRsZXIoSlNP
YmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICA6IEpTRXZlbnRMaXN0ZW5lcihmdW5jdGlvbiwgd3Jh
cHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKQorSlNFcnJvckhhbmRsZXI6OkpTRXJyb3JIYW5kbGVy
KEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUs
IERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IEpTRXZlbnRMaXN0ZW5lcihm
dW5jdGlvbiwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5oCmluZGV4IDU1ZDJkNTMu
Ljk1N2ZkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIu
aApAQCAtMzcsMTUgKzM3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNFcnJv
ckhhbmRsZXIgOiBwdWJsaWMgSlNFdmVudExpc3RlbmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0Vycm9ySGFuZGxlcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVy
LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29y
bGQmIHdvcmxkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTRXJyb3JIYW5kbGVyPiBjcmVhdGUo
SlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNB
dHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSlNFcnJvckhhbmRsZXIobGlzdGVuZXIsIHdyYXBwZXIsIGlz
QXR0cmlidXRlLCB3b3JsZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTRXJyb3JI
YW5kbGVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgaXNvbGF0ZWRXb3JsZCkpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgfkpTRXJyb3JIYW5kbGVyKCk7CiAKIHByaXZhdGU6Ci0gICAg
SlNFcnJvckhhbmRsZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdy
YXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIEpTRXJyb3JI
YW5kbGVyKEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBi
b29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpOwogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CmluZGV4IGQwZGQzZjUuLmQ5MTRlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMzksMTEgKzM5LDExIEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNFdmVudExpc3RlbmVyOjpKU0V2ZW50
TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0
dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKQorSlNFdmVudExpc3RlbmVy
OjpKU0V2ZW50TGlzdGVuZXIoSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwg
Ym9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQogICAgIDog
RXZlbnRMaXN0ZW5lcihKU0V2ZW50TGlzdGVuZXJUeXBlKQogICAgICwgbV93cmFwcGVyKHdyYXBw
ZXIpCiAgICAgLCBtX2lzQXR0cmlidXRlKGlzQXR0cmlidXRlKQotICAgICwgbV9pc29sYXRlZFdv
cmxkKCZpc29sYXRlZFdvcmxkKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQp
CiB7CiAgICAgaWYgKHdyYXBwZXIpIHsKICAgICAgICAgSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXIo
d3JhcHBlciwgZnVuY3Rpb24pOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dAogICAgIGlmICghanNGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgKm1faXNvbGF0ZWRXb3JsZCk7CisgICAgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdCkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5oCmluZGV4IDA2MzljOTYuLjBlNzg0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC0zMyw5ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIGNsYXNzIEpTRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4g
Y3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBi
b29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5l
ciwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldv
cmxkKiBpc29sYXRlZFdvcmxkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEpTRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdv
cmxkKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIGlzb2xhdGVkV29ybGQpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0V2ZW50TGlzdGVuZXIqIGNhc3QoY29uc3QgRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIpCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdHRyaWJ1
dGU7IH0KIAogICAgICAgICBKU0M6OkpTT2JqZWN0KiBqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdDsKLSAgICAgICAgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxk
KCkgY29uc3QgeyByZXR1cm4gKm1faXNvbGF0ZWRXb3JsZDsgfQorICAgICAgICBET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVkV29ybGQuZ2V0
KCk7IH0KIAogICAgICAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKCkgY29uc3QgeyByZXR1cm4g
bV93cmFwcGVyLmdldCgpOyB9CiAgICAgICAgIHZvaWQgc2V0V3JhcHBlcihKU0M6OlZNJiwgSlND
OjpKU09iamVjdCogd3JhcHBlcikgY29uc3QgeyBtX3dyYXBwZXIgPSBKU0M6OldlYWs8SlNDOjpK
U09iamVjdD4od3JhcHBlcik7IH0KQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3Q7CiAKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTRXZlbnRMaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5j
dGlvbiwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBl
cldvcmxkJik7CisgICAgICAgIEpTRXZlbnRMaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlv
biwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldv
cmxkKiBpc29sYXRlZFdvcmxkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3Vz
dG9tLmNwcAppbmRleCBjZDk4ZGU0Li4xYTI5YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0y
MDUsNyArMjA1LDcgQEAgc3RhdGljIEpTQXJyYXkqIGdldEpTTGlzdGVuZXJGdW5jdGlvbnMoRXhl
Y1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnMKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIEhpZGUgbGlzdGVuZXJzIGZyb20gb3RoZXIgY29u
dGV4dHMuCi0gICAgICAgIGlmICgmanNMaXN0ZW5lci0+aXNvbGF0ZWRXb3JsZCgpICE9ICZjdXJy
ZW50V29ybGQoZXhlYykpCisgICAgICAgIGlmIChqc0xpc3RlbmVyLT5pc29sYXRlZFdvcmxkKCkg
IT0gY3VycmVudFdvcmxkKGV4ZWMpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEpT
T2JqZWN0KiBmdW5jdGlvbiA9IGpzTGlzdGVuZXItPmpzRnVuY3Rpb24oZG9jdW1lbnQpOwogICAg
ICAgICBpZiAoIWZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCmluZGV4IDBlY2FmNzMu
Ljg2MWJkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVj
dG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTczLDcgKzczLDkgQEAgSlNW
YWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm0oRXhlY1N0YXRlKiBleGVjU3Rh
dGUpCiAKIEpTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnQoRXhlY1N0YXRlKiBl
eGVjU3RhdGUpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKQorICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBwb3J0LCAoQVNDSUlMaXRlcmFsKCJxdCIp
KSk7CisjZWxpZiBQTEFURk9STShHVEspCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIHBvcnQsIChBU0NJSUxpdGVyYWwoImd0ayIpKSk7CiAjZWxpZiBQTEFURk9STShFRkwp
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHBvcnQsIChBU0NJSUxpdGVy
YWwoImVmbCIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2
ZW50TGlzdGVuZXIuY3BwCmluZGV4IDAxYWVlN2YuLmUxZjdmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdU
Rjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBldmVudExpc3RlbmVyQ291bnRlciwgKCJKU0xhenlF
dmVudExpc3RlbmVyIikpOwogCi1KU0xhenlFdmVudExpc3RlbmVyOjpKU0xhenlFdmVudExpc3Rl
bmVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1l
dGVyTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBDb250YWluZXJOb2RlKiBub2RlLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgSlNPYmplY3Qq
IHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3JsZCkKK0pTTGF6eUV2ZW50TGlz
dGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIENvbnRh
aW5lck5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRp
b24mIHBvc2l0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkKQogICAgIDogSlNFdmVudExpc3RlbmVyKDAsIHdyYXBwZXIsIHRydWUsIGlzb2xhdGVk
V29ybGQpCiAgICAgLCBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiAgICAgLCBtX2V2ZW50
UGFyYW1ldGVyTmFtZShldmVudFBhcmFtZXRlck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgKaW5kZXggYjQ4M2UzNy4uOGE0N2UzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIu
aApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
fkpTTGF6eUV2ZW50TGlzdGVuZXIoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTTGF6eUV2
ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZXZl
bnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIENvbnRhaW5lck5vZGUqLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgVGV4dFBvc2l0aW9uJiwgSlNDOjpKU09iamVjdCog
d3JhcHBlciwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKTsKKyAgICAgICAgSlNMYXp5
RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBl
dmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgQ29udGFpbmVyTm9kZSosIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mLCBKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpOwogCiAgICAgICAgIHZp
cnR1YWwgSlNDOjpKU09iamVjdCogaW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIGNvbnN0IE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRl
ZEZyb21NYXJrdXAoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAppbmRleCAzNjYy
NTlhLi5jMzg4Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25DYWxsYmFjay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
SlNNdXRhdGlvbkNhbGxiYWNrOjpKU011dGF0aW9uQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNr
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIDogQWN0aXZlRE9NQ2FsbGJh
Y2soZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2NhbGxi
YWNrKGNhbGxiYWNrKQotICAgICwgbV9pc29sYXRlZFdvcmxkKCZnbG9iYWxPYmplY3QtPndvcmxk
KCkpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoZ2xvYmFsT2JqZWN0LT53b3JsZCgpKQogewogfQog
CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgSlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mIG11dGF0aW9ucywKICAgICAgICAgcmV0dXJu
OwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogCi0gICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgKm1faXNv
bGF0ZWRXb3JsZCk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNE
T01HbG9iYWxPYmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIEpTVmFsdWUg
anNPYnNlcnZlciA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBvYnNlcnZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAwM2RiNDg3Li41ZWNl
MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAg
LTEzNCw3ICsxMzQsNyBAQCBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdgogdm9pZCBKU05vZGVPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
eHQpCiB7CiAgICAgSlNOb2RlKiBqc05vZGUgPSBzdGF0aWNfY2FzdDxKU05vZGUqPihoYW5kbGUu
Z2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQgPSAqc3RhdGljX2Nh
c3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCBqc05vZGUtPmltcGwoKSwganNOb2RlKTsKICAgICBqc05vZGUtPnJlbGVh
c2VJbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oCmluZGV4IDdhZDM3ZGMuLjE1ZmNiZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUeXBlLCBjbGFzcyBCYXNlPiBib29sIHBsdWdpbkVsZW1lbnRDdXN0b21HZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QsIFR5cGUqIGVsZW1lbnQpCiAgICAgewotICAg
ICAgICBpZiAoIWVsZW1lbnQtPmdsb2JhbE9iamVjdCgpLT53b3JsZCgpLmlzTm9ybWFsKCkpIHsK
KyAgICAgICAgaWYgKCFlbGVtZW50LT5nbG9iYWxPYmplY3QoKS0+d29ybGQoKS0+aXNOb3JtYWwo
KSkgewogICAgICAgICAgICAgaWYgKEpTQzo6Z2V0U3RhdGljVmFsdWVTbG90PFR5cGUsIEJhc2U+
KGV4ZWMsICpUeXBlOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUsIGVsZW1lbnQsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNw
cAppbmRleCAyZjk3YWJiLi5lZDlmZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC01MCw3ICs1MCw3IEBA
IGNvbnN0IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29y
a2VyR2xvYmFsU2NvcGUiLCAmSlNET01HCiBjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFs
bG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUlu
Zm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVk
LCAmcXVldWVUYXNrVG9FdmVudExvb3AgfTsKIAogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OkpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBpbXBsKQotICAgIDogSlNET01HbG9i
YWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJm5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBub3Jt
YWxXb3JsZCh2bSksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQogICAgICwgbV9pbXBsKGlt
cGwpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcAppbmRleCAwMTY5MzFmLi43ODllYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPFNjaGVkdWxlZEFj
dGlvbj4gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBET01XcmFwcGVy
V29ybGQmIGlzb2xhdGVkV29ybGQsIENvbnRlbnRTZWN1cml0eVBvbGljeSogcG9saWN5KQorUGFz
c093blB0cjxTY2hlZHVsZWRBY3Rpb24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kqIHBvbGljeSkKIHsKICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTY1LDkgKzY1LDkgQEAgUGFzc093blB0cjxTY2hlZHVs
ZWRBY3Rpb24+IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgRE9NV3Jh
cHBlclcKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihleGVjLCB2LCBp
c29sYXRlZFdvcmxkKSk7CiB9CiAKLVNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRl
ZFdvcmxkKQorU2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRBY3Rpb24oRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGZ1bmN0aW9uLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCiAgICAg
OiBtX2Z1bmN0aW9uKGV4ZWMtPnZtKCksIGZ1bmN0aW9uKQotICAgICwgbV9pc29sYXRlZFdvcmxk
KCZpc29sYXRlZFdvcmxkKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCiB7
CiAgICAgLy8gc2V0VGltZW91dChmdW5jdGlvbiwgaW50ZXJ2YWwsIGFyZzAsIGFyZzEuLi4pLgog
ICAgIC8vIFN0YXJ0IGF0IDIgdG8gc2tpcCBmdW5jdGlvbiBhbmQgaW50ZXJ2YWwuCkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKIAogdm9pZCBTY2hlZHVsZWRBY3Rp
b246OmV4ZWN1dGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIEpTRE9NV2luZG93KiB3aW5k
b3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5mcmFtZSgpLCAqbV9pc29sYXRlZFdvcmxkKTsK
KyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhkb2N1bWVudC0+ZnJhbWUo
KSwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUo
RG9jdW1lbnQqIGRvY3VtZW50KQogICAgIGlmIChtX2Z1bmN0aW9uKQogICAgICAgICBleGVjdXRl
RnVuY3Rpb25JbkNvbnRleHQod2luZG93LCB3aW5kb3ctPnNoZWxsKCksIGRvY3VtZW50KTsKICAg
ICBlbHNlCi0gICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0SW5Xb3JsZCgqbV9p
c29sYXRlZFdvcmxkLCBtX2NvZGUpOworICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdEluV29ybGQobV9pc29sYXRlZFdvcmxkLmdldCgpLCBtX2NvZGUpOwogfQogCiAjaWYgRU5B
QkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5oCmluZGV4IDNlZTIxYmMuLmFiMDJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5oCkBAIC00NiwxNiArNDYsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFNjaGVkdWxlZEFjdGlvbiB7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNjaGVkdWxlZEFjdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqLCBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQsIENvbnRlbnRT
ZWN1cml0eVBvbGljeSopOworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rp
b24+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCwgQ29udGVudFNlY3VyaXR5UG9saWN5Kik7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNjaGVkdWxlZEFj
dGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldv
cmxkJiBpc29sYXRlZFdvcmxkKTsKLSAgICAgICAgU2NoZWR1bGVkQWN0aW9uKGNvbnN0IFN0cmlu
ZyYgY29kZSwgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdvcmxkKQotICAgICAgICAgICAgOiBt
X2Z1bmN0aW9uKCppc29sYXRlZFdvcmxkLnZtKCkpCisgICAgICAgIFNjaGVkdWxlZEFjdGlvbihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvcmxkKiBp
c29sYXRlZFdvcmxkKTsKKyAgICAgICAgU2NoZWR1bGVkQWN0aW9uKGNvbnN0IFN0cmluZyYgY29k
ZSwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgICAgICAgICAgOiBtX2Z1bmN0
aW9uKCppc29sYXRlZFdvcmxkLT52bSgpKQogICAgICAgICAgICAgLCBtX2NvZGUoY29kZSkKLSAg
ICAgICAgICAgICwgbV9pc29sYXRlZFdvcmxkKCZpc29sYXRlZFdvcmxkKQorICAgICAgICAgICAg
LCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKICAgICAgICAgewogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1l
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwCmluZGV4IDkzMjIxOTYuLjQ1NTgwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcApAQCAtNzMsOSArNzMsMTAg
QEAgdm9pZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogICAg
IFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS5zY3JpcHQoKTsKICAg
ICBTY3JpcHRDb250cm9sbGVyOjpTaGVsbE1hcCYgd2luZG93U2hlbGxzID0gc2NyaXB0Q29udHJv
bGxlci5tX3dpbmRvd1NoZWxsczsKIAotICAgIGZvciAoYXV0byBpdCA9IHdpbmRvd1NoZWxscy5i
ZWdpbigpLCBlbmQgPSB3aW5kb3dTaGVsbHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gaXQtPmtleS5nZXQoKTsKLSAgICAgICAgSlNE
T01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgU2NyaXB0
Q29udHJvbGxlcjo6U2hlbGxNYXA6Oml0ZXJhdG9yIHdpbmRvd1NoZWxsc0VuZCA9IHdpbmRvd1No
ZWxscy5lbmQoKTsKKyAgICBmb3IgKFNjcmlwdENvbnRyb2xsZXI6OlNoZWxsTWFwOjppdGVyYXRv
ciBpdGVyID0gd2luZG93U2hlbGxzLmJlZ2luKCk7IGl0ZXIgIT0gd2luZG93U2hlbGxzRW5kOyAr
K2l0ZXIpIHsKKyAgICAgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IGl0ZXItPmtleS5nZXQo
KTsKKyAgICAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBpdGVyLT52YWx1ZS5n
ZXQoKTsKIAogICAgICAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IG1fd2luZG93cy5nZXQo
d29ybGQpLmdldCgpKQogICAgICAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyh3aW5kb3ct
PnZtKCksIHdpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENhY2hlZEZyYW1lRGF0YS5oCmluZGV4IDU1Yjk4ZTNiLi5mOTUyNjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaApAQCAtMzYs
MjQgKzM2LDI0IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEpTRE9NV2luZG93OworICAgIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKIAotY2xhc3MgRnJhbWU7Ci1jbGFzcyBKU0RPTVdpbmRvdzsKLWNs
YXNzIERPTVdyYXBwZXJXb3JsZDsKKyAgICBjbGFzcyBTY3JpcHRDYWNoZWRGcmFtZURhdGEgewor
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHRDYWNoZWRGcmFtZURhdGEpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPCBSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiwgSlNDOjpTdHJvbmc8SlNET01XaW5kb3c+ID4gSlNET01XaW5kb3dTZXQ7
CiAKLWNsYXNzIFNjcmlwdENhY2hlZEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKEZyYW1lJik7Ci0gICAgflNjcmlwdENhY2hl
ZEZyYW1lRGF0YSgpOworICAgIHB1YmxpYzoKKyAgICAgICAgU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
KEZyYW1lJik7CisgICAgICAgIH5TY3JpcHRDYWNoZWRGcmFtZURhdGEoKTsKIAotICAgIHZvaWQg
cmVzdG9yZShGcmFtZSYpOwotICAgIHZvaWQgY2xlYXIoKTsKKyAgICAgICAgdm9pZCByZXN0b3Jl
KEZyYW1lJik7CisgICAgICAgIHZvaWQgY2xlYXIoKTsKIAotcHJpdmF0ZToKLSAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2luZG93
Pj4gSlNET01XaW5kb3dTZXQ7Ci0gICAgSlNET01XaW5kb3dTZXQgbV93aW5kb3dzOwotfTsKKyAg
ICBwcml2YXRlOgorICAgICAgICBKU0RPTVdpbmRvd1NldCBtX3dpbmRvd3M7CisgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDhiYjc0YWRmLi44NDg2MGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtOTIsMzMg
KzkyLDMwIEBAIFNjcmlwdENvbnRyb2xsZXI6On5TY3JpcHRDb250cm9sbGVyKCkKICAgICAvLyBJ
dCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgbV93aW5kb3dTaGVsbHMgd2lsbCBjcmVhdGUgYSBs
b3Qgb2YgZ2FyYmFnZS4KICAgICBpZiAoIW1fd2luZG93U2hlbGxzLmlzRW1wdHkoKSkgewogICAg
ICAgICB3aGlsZSAoIW1fd2luZG93U2hlbGxzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlc3Ry
b3lXaW5kb3dTaGVsbCgqbV93aW5kb3dTaGVsbHMuYmVnaW4oKS0+a2V5KTsKKyAgICAgICAgICAg
IGRlc3Ryb3lXaW5kb3dTaGVsbChtX3dpbmRvd1NoZWxscy5iZWdpbigpLT5rZXkuZ2V0KCkpOwog
ICAgICAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdFNvb24oKTsKICAgICB9CiB9CiAK
LXZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRlc3Ryb3lXaW5kb3dTaGVsbChET01X
cmFwcGVyV29ybGQqIHdvcmxkKQogewotICAgIEFTU0VSVChtX3dpbmRvd1NoZWxscy5jb250YWlu
cygmd29ybGQpKTsKLSAgICBtX3dpbmRvd1NoZWxscy5yZW1vdmUoJndvcmxkKTsKLSAgICB3b3Js
ZC5kaWREZXN0cm95V2luZG93U2hlbGwodGhpcyk7CisgICAgQVNTRVJUKG1fd2luZG93U2hlbGxz
LmNvbnRhaW5zKHdvcmxkKSk7CisgICAgbV93aW5kb3dTaGVsbHMucmVtb3ZlKHdvcmxkKTsKKyAg
ICB3b3JsZC0+ZGlkRGVzdHJveVdpbmRvd1NoZWxsKHRoaXMpOwogfQogCi1KU0RPTVdpbmRvd1No
ZWxsKiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQm
IHdvcmxkKQorSlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93
U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKLSAgICBBU1NFUlQoIW1fd2luZG93U2hl
bGxzLmNvbnRhaW5zKCZ3b3JsZCkpOwotCi0gICAgVk0mIHZtID0gKndvcmxkLnZtKCk7Ci0KLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2luZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVs
bCh2bSwgSlNET01XaW5kb3dTaGVsbDo6Y3JlYXRlKHZtLCBtX2ZyYW1lLmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLCBzdHJ1Y3R1cmUsIHdvcmxkKSk7CisgICAgQVNTRVJUKCFtX3dpbmRvd1NoZWxs
cy5jb250YWlucyh3b3JsZCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNET01XaW5k
b3dTaGVsbDo6Y3JlYXRlU3RydWN0dXJlKCp3b3JsZC0+dm0oKSwganNOdWxsKCkpOworICAgIFN0
cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCgqd29ybGQtPnZtKCksIEpTRE9NV2lu
ZG93U2hlbGw6OmNyZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBzdHJ1Y3R1
cmUsIHdvcmxkKSk7CiAgICAgU3Ryb25nPEpTRE9NV2luZG93U2hlbGw+IHdpbmRvd1NoZWxsMih3
aW5kb3dTaGVsbCk7Ci0gICAgbV93aW5kb3dTaGVsbHMuYWRkKCZ3b3JsZCwgd2luZG93U2hlbGwp
OwotICAgIHdvcmxkLmRpZENyZWF0ZVdpbmRvd1NoZWxsKHRoaXMpOworICAgIG1fd2luZG93U2hl
bGxzLmFkZCh3b3JsZCwgd2luZG93U2hlbGwpOworICAgIHdvcmxkLT5kaWRDcmVhdGVXaW5kb3dT
aGVsbCh0aGlzKTsKICAgICByZXR1cm4gd2luZG93U2hlbGwuZ2V0KCk7CiB9CiAKLVNjcmlwdFZh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAgICAgY29uc3QgU291cmNlQ29k
ZSYganNTb3VyY2VDb2RlID0gc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKTsKICAgICBTdHJpbmcg
c291cmNlVVJMID0ganNTb3VyY2VDb2RlLnByb3ZpZGVyKCktPnVybCgpOwpAQCAtMTY3LDcgKzE2
NCw3IEBAIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVh
dGVXb3JsZCgpCiAgICAgcmV0dXJuIERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKEpTRE9NV2luZG93
Ojpjb21tb25WTSgpKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpnZXRBbGxXb3JsZHMo
VmVjdG9yPFJlZjxET01XcmFwcGVyV29ybGQ+PiYgd29ybGRzKQordm9pZCBTY3JpcHRDb250cm9s
bGVyOjpnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4mIHdvcmxk
cykKIHsKICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGllbnREYXRhKj4oSlNET01XaW5kb3c6
OmNvbW1vblZNKCktPmNsaWVudERhdGEpLT5nZXRBbGxXb3JsZHMod29ybGRzKTsKIH0KQEAgLTIw
OCwxMSArMjA1LDExIEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbChE
T01XaW5kb3cqIG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QCiAgICAgICAgIGdjQ29udHJv
bGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwogfQogCi1KU0RPTVdpbmRvd1NoZWxsKiBTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCitKU0RPTVdp
bmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCog
d29ybGQpCiB7Ci0gICAgQVNTRVJUKCFtX3dpbmRvd1NoZWxscy5jb250YWlucygmd29ybGQpKTsK
KyAgICBBU1NFUlQoIW1fd2luZG93U2hlbGxzLmNvbnRhaW5zKHdvcmxkKSk7CiAKLSAgICBKU0xv
Y2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC0+
dm0oKSk7CiAKICAgICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9IGNyZWF0ZVdpbmRv
d1NoZWxsKHdvcmxkKTsKIApAQCAtMzgzLDcgKzM4MCw3IEBAIE5QT2JqZWN0KiBTY3JpcHRDb250
cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQbHVnSW5FbGVt
ZW50CiAKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oUVQpCiBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6Okluc3RhbmNlPiBTY3Jp
cHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRJbnN0YW5jZUZvcldpZGdldChXaWRnZXQqIHdpZGdl
dCkKIHsKICAgICBpZiAoIXdpZGdldC0+aXNQbHVnaW5WaWV3KCkpCkBAIC00NTksNyArNDU2LDcg
QEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdHMoKQogI2VuZGlmCiB9
CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUg
OiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgU2NyaXB0U291cmNlQ29kZSBz
b3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CkBAIC00NzUsOCAr
NDcyLDggQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3koKQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gSlNET01XaW5k
b3c6OmNvbW1vblZNKCktPnRvcENhbGxGcmFtZTsKICAgICBpZiAoIWNhbGxGcmFtZSB8fCBjYWxs
RnJhbWUgPT0gQ2FsbEZyYW1lOjpub0NhbGxlcigpKSAKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIERPTVdyYXBwZXJXb3JsZCYgZG9tV3JhcHBlcldvcmxkID0gY3VycmVudFdvcmxkKGNhbGxG
cmFtZSk7Ci0gICAgaWYgKGRvbVdyYXBwZXJXb3JsZC5pc05vcm1hbCgpKQorICAgIERPTVdyYXBw
ZXJXb3JsZCogZG9tV3JhcHBlcldvcmxkID0gY3VycmVudFdvcmxkKGNhbGxGcmFtZSk7CisgICAg
aWYgKGRvbVdyYXBwZXJXb3JsZC0+aXNOb3JtYWwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IDYxYjc5NWYuLjhmMDYzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTY2LDcgKzY2LDcgQEAgZW51bSBS
ZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgewogCiBjbGFzcyBTY3JpcHRDb250cm9s
bGVyIHsKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhOwotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgSlNDOjpTdHJvbmc8SlNET01XaW5k
b3dTaGVsbD4+IFNoZWxsTWFwOworICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPCBSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiwgSlNDOjpTdHJvbmc8SlNET01XaW5kb3dTaGVsbD4gPiBTaGVsbE1hcDsK
IAogcHVibGljOgogICAgIGV4cGxpY2l0IFNjcmlwdENvbnRyb2xsZXIoRnJhbWUmKTsKQEAgLTc0
LDI5ICs3NCwyOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01XcmFwcGVy
V29ybGQ+IGNyZWF0ZVdvcmxkKCk7CiAKLSAgICBKU0RPTVdpbmRvd1NoZWxsKiBjcmVhdGVXaW5k
b3dTaGVsbChET01XcmFwcGVyV29ybGQmKTsKLSAgICB2b2lkIGRlc3Ryb3lXaW5kb3dTaGVsbChE
T01XcmFwcGVyV29ybGQmKTsKKyAgICBKU0RPTVdpbmRvd1NoZWxsKiBjcmVhdGVXaW5kb3dTaGVs
bChET01XcmFwcGVyV29ybGQqKTsKKyAgICB2b2lkIGRlc3Ryb3lXaW5kb3dTaGVsbChET01XcmFw
cGVyV29ybGQqKTsKIAotICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCisgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwoRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCkKICAgICB7Ci0gICAgICAgIFNoZWxsTWFwOjppdGVyYXRvciBpdGVy
ID0gbV93aW5kb3dTaGVsbHMuZmluZCgmd29ybGQpOworICAgICAgICBTaGVsbE1hcDo6aXRlcmF0
b3IgaXRlciA9IG1fd2luZG93U2hlbGxzLmZpbmQod29ybGQpOwogICAgICAgICByZXR1cm4gKGl0
ZXIgIT0gbV93aW5kb3dTaGVsbHMuZW5kKCkpID8gaXRlci0+dmFsdWUuZ2V0KCkgOiBpbml0U2Ny
aXB0KHdvcmxkKTsKICAgICB9Ci0gICAgSlNET01XaW5kb3dTaGVsbCogZXhpc3RpbmdXaW5kb3dT
aGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAorICAgIEpTRE9NV2luZG93U2hlbGwq
IGV4aXN0aW5nV2luZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkgY29uc3QKICAgICB7
Ci0gICAgICAgIFNoZWxsTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMu
ZmluZCgmd29ybGQpOworICAgICAgICBTaGVsbE1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1f
d2luZG93U2hlbGxzLmZpbmQod29ybGQpOwogICAgICAgICByZXR1cm4gKGl0ZXIgIT0gbV93aW5k
b3dTaGVsbHMuZW5kKCkpID8gaXRlci0+dmFsdWUuZ2V0KCkgOiAwOwogICAgIH0KLSAgICBKU0RP
TVdpbmRvdyogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAgSlNET01X
aW5kb3cqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHdpbmRvd1NoZWxsKHdvcmxkKS0+d2luZG93KCk7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKKyAg
ICBzdGF0aWMgdm9pZCBnZXRBbGxXb3JsZHMoVmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+
ID4mKTsKIAogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYpOwogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBTY3JpcHRWYWx1ZSBleGVj
dXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYXJn
dW1lbnQgaXMgYSBKYXZhU2NyaXB0IFVSTC4KICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRV
UkwoY29uc3QgVVJMJiwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3Vs
ZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNj
cmlwdFVSTCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmKTsKLSAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZUluV29ybGQoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOworICAgIFNjcmlwdFZhbHVlIGV2
YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkKik7
CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0Owog
CkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKIHByaXZhdGU6Ci0gICAgSlNET01XaW5kb3dT
aGVsbCogaW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQmKTsKKyAgICBKU0RPTVdpbmRvd1NoZWxs
KiBpbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpOwogCiAgICAgdm9pZCBkaXNjb25u
ZWN0UGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA4YzgxNDA4Li4zYjY2ZTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC0zNjksNyArMzY5LDcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGYWlsZWRU
b1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMKIAogYm9vbCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aXNDb250ZW50U2NyaXB0KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1
cm4gJmN1cnJlbnRXb3JsZChleGVjKSAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCk7CisgICAg
cmV0dXJuIGN1cnJlbnRXb3JsZChleGVjKSAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsKIH0K
IAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXgg
ZGUzYjA5YS4uOTZiZWJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0
YXRlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBKU0M6OkV4ZWNTdGF0ZSogbWFpbldvcmxkRXhlY1N0
YXRlKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gc2hlbGwtPndpbmRvdygpLT5nbG9iYWxFeGVj
KCk7CiB9CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBOb2RlKiBub2RlKQorSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21Ob2Rl
KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTg1LDcgKzg1LDcgQEAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNT
dGF0ZUZyb21Ob2RlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIE5vZGUqIG5vZGUpCiAgICAgcmV0
dXJuIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpLT5nbG9iYWxFeGVjKCk7CiB9
CiAKLUpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tUGFnZShET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBQYWdlKiBwYWdlKQorSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIFBhZ2UqIHBhZ2UpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPm1haW5G
cmFtZSgpLnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmluZGV4IDRmNDFmZGEuLmVlYzY4
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaApAQCAtNTIsMTMg
KzUyLDEzIEBAIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogLy8gRm9yIG5vdywgdGhlIHNlcGFy
YXRpb24gaXMgcHVyZWx5IGJ5IGNvbnZlbnRpb24uCiB0eXBlZGVmIEpTQzo6RXhlY1N0YXRlIFNj
cmlwdFN0YXRlOwogCi1ET01XaW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpFeGVj
U3RhdGUqKTsKK0RPTVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShTY3JpcHRTdGF0ZSop
OwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUoSlNDOjpFeGVjU3RhdGUqKTsKIAogSlNDOjpFeGVjU3RhdGUqIG1haW5Xb3JsZEV4ZWNT
dGF0ZShGcmFtZSopOwogCi1KU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3Jh
cHBlcldvcmxkJiwgTm9kZSopOwotSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZUZyb21QYWdlKERP
TVdyYXBwZXJXb3JsZCYsIFBhZ2UqKTsKK0pTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9k
ZShET01XcmFwcGVyV29ybGQqLCBOb2RlKik7CitKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJv
bVBhZ2UoRE9NV3JhcHBlcldvcmxkKiwgUGFnZSopOwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiBK
U0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2Jh
bFNjb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCAyNDE5NjE1Li5hNzdjN2NmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE4
OTIsNyArMTg5Miw3IEBAIFBhc3NPd25QdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1CiAgICAgfQogCiAgICAgT3du
UHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gY29udGVudHMgPSBhZG9wdFB0cihuZXcgQXJy
YXlCdWZmZXJDb250ZW50c0FycmF5KGFycmF5QnVmZmVycy5zaXplKCkpKTsKLSAgICBWZWN0b3I8
UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdvcmxkczsKKyAgICBWZWN0b3I8UmVmUHRyPERPTVdyYXBw
ZXJXb3JsZD4gPiB3b3JsZHM7CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+
KGV4ZWMtPnZtKCkuY2xpZW50RGF0YSktPmdldEFsbFdvcmxkcyh3b3JsZHMpOwogCiAgICAgSGFz
aFNldDxKU0M6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaAppbmRleCA4N2U5NWRlLi5iODM2N2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5o
CkBAIC0zNiwxMCArMzYsNyBAQCBjbGFzcyBXZWJDb3JlSlNDbGllbnREYXRhIDogcHVibGljIEpT
Qzo6Vk06OkNsaWVudERhdGEgewogICAgIGZyaWVuZCB2b2lkIGluaXROb3JtYWxXb3JsZENsaWVu
dERhdGEoSlNDOjpWTSopOwogCiBwdWJsaWM6Ci0gICAgV2ViQ29yZUpTQ2xpZW50RGF0YSgpCi0g
ICAgewotICAgIH0KLQorICAgIFdlYkNvcmVKU0NsaWVudERhdGEoKSB7IH0KICAgICB2aXJ0dWFs
IH5XZWJDb3JlSlNDbGllbnREYXRhKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3dvcmxkU2V0
LmNvbnRhaW5zKG1fbm9ybWFsV29ybGQuZ2V0KCkpKTsKQEAgLTQ5LDI3ICs0NiwyMiBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVChtX3dvcmxkU2V0LmlzRW1wdHkoKSk7CiAgICAgfQogCi0gICAg
RE9NV3JhcHBlcldvcmxkJiBub3JtYWxXb3JsZCgpIHsgcmV0dXJuICptX25vcm1hbFdvcmxkOyB9
CisgICAgRE9NV3JhcHBlcldvcmxkKiBub3JtYWxXb3JsZCgpIHsgcmV0dXJuIG1fbm9ybWFsV29y
bGQuZ2V0KCk7IH0KIAotICAgIHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBl
cldvcmxkPj4mIHdvcmxkcykKKyAgICB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8UmVmUHRyPERP
TVdyYXBwZXJXb3JsZD4gPiYgd29ybGRzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHdvcmxkcy5p
c0VtcHR5KCkpOwotCi0gICAgICAgIHdvcmxkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fd29y
bGRTZXQuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gbV93b3JsZFNldC5iZWdpbigp
LCBlbmQgPSBtX3dvcmxkU2V0LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICB3
b3JsZHMudW5jaGVja2VkQXBwZW5kKCooKml0KSk7CisgICAgICAgIGNvcHlUb1ZlY3RvcihtX3dv
cmxkU2V0LCB3b3JsZHMpOwogICAgIH0KIAotICAgIHZvaWQgcmVtZW1iZXJXb3JsZChET01XcmFw
cGVyV29ybGQmIHdvcmxkKQorICAgIHZvaWQgcmVtZW1iZXJXb3JsZChET01XcmFwcGVyV29ybGQq
IHdvcmxkKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX3dvcmxkU2V0LmNvbnRhaW5zKCZ3b3Js
ZCkpOwotICAgICAgICBtX3dvcmxkU2V0LmFkZCgmd29ybGQpOworICAgICAgICBBU1NFUlQoIW1f
d29ybGRTZXQuY29udGFpbnMod29ybGQpKTsKKyAgICAgICAgbV93b3JsZFNldC5hZGQod29ybGQp
OwogICAgIH0KLQotICAgIHZvaWQgZm9yZ2V0V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
KyAgICB2b2lkIGZvcmdldFdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV93b3JsZFNldC5jb250YWlucygmd29ybGQpKTsKLSAgICAgICAgbV93b3Js
ZFNldC5yZW1vdmUoJndvcmxkKTsKKyAgICAgICAgQVNTRVJUKG1fd29ybGRTZXQuY29udGFpbnMo
d29ybGQpKTsKKyAgICAgICAgbV93b3JsZFNldC5yZW1vdmUod29ybGQpOwogICAgIH0KIAogICAg
IERPTU9iamVjdEhhc2hUYWJsZU1hcCBoYXNoVGFibGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcApp
bmRleCAwZGIzZDUyLi4yYWQ2OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OkpTQXJyYXlCdWZmZXJPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjoKIHsKICAgICBhdXRvJiB3cmFwcGVyID0gKnN0
YXRpY19jYXN0PEpTQzo6SlNBcnJheUJ1ZmZlcio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAg
ICAgYXV0byYgYnVmZmVyID0gKndyYXBwZXIuaW1wbCgpOwotICAgIHVuY2FjaGVXcmFwcGVyKCpz
dGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KSwgJmJ1ZmZlciwgJndyYXBwZXIp
OworICAgIHVuY2FjaGVXcmFwcGVyKHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpLCAmYnVmZmVyLCAmd3JhcHBlcik7CiAgICAgYnVmZmVyLmRlcmVmKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggNjdhZDliZC4uYjlkYjZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTkzNSwxNSArOTM1LDE1IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9p
ZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTtcbiIp
OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiXG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGlu
ZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsICRp
bXBsVHlwZSopXG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSBKU0M6
OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosICRpbXBsVHlw
ZSopXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlMke2ludGVyZmFj
ZU5hbWV9T3duZXIsIGpzJHtpbnRlcmZhY2VOYW1lfU93bmVyLCAoKSk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICByZXR1cm4gJmpzJHtpbnRlcmZhY2VOYW1lfU93bmVy
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJp
bmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgJGltcGxU
eXBlKilcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiaW5saW5lIHZvaWQqIHdy
YXBwZXJDb250ZXh0KERPTVdyYXBwZXJXb3JsZCogd29ybGQsICRpbXBsVHlwZSopXG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHJldHVybiAmd29ybGQ7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICByZXR1cm4gd29ybGQ7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIn1cbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKICAgICB9CkBA
IC0yNjI3LDcgKzI2MjcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInZvaWQgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6OmZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEpTJHtpbnRlcmZhY2VOYW1lfSoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0
PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9N
V3JhcHBlcldvcmxkKj4oY29udGV4dCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLCBq
cyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGpzJHtpbnRlcmZhY2VOYW1lfS0+cmVsZWFzZUltcGwoKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETFBhcnNlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtCmluZGV4IDMxOWY2MmIuLjFjYmExMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCkBAIC0zMDksMTMgKzMwOSw2IEBAIHN1YiB0
eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgKICAgICByZXR1cm4gJHR5cGU7CiB9CiAKLXN1YiBpZGVu
dGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgKLXsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OwotICAg
ICR0eXBlID1+IHMvXl8vLzsKLSAgICByZXR1cm4gJHR5cGU7Ci19Ci0KIG15ICRuZXh0QXR0cmli
dXRlXzEgPSAnXihhdHRyaWJ1dGV8aW5oZXJpdHxyZWFkb25seSkkJzsKIG15ICRuZXh0UHJpbWl0
aXZlVHlwZV8xID0gJ14oaW50fGxvbmd8c2hvcnR8dW5zaWduZWQpJCc7CiBteSAkbmV4dFByaW1p
dGl2ZVR5cGVfMiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJlc3RyaWN0ZWQpJCc7CkBAIC01MDMsNyAr
NDk2LDcgQEAgc3ViIHBhcnNlSW50ZXJmYWNlCiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZh
bHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiaW50ZXJmYWNlIiwgX19MSU5FX18pOwogICAgICAgICBt
eSAkaW50ZXJmYWNlTmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblR5cGUoJGludGVyZmFjZU5hbWVUb2tlbiwgSWRlbnRpZmllclRva2VuKTsK
LSAgICAgICAgJGludGVyZmFjZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgo
JGludGVyZmFjZU5hbWVUb2tlbi0+dmFsdWUoKSkpOworICAgICAgICAkaW50ZXJmYWNlLT5uYW1l
KCRpbnRlcmZhY2VOYW1lVG9rZW4tPnZhbHVlKCkpOwogICAgICAgICBteSAkcGFyZW50cyA9ICRz
ZWxmLT5wYXJzZUluaGVyaXRhbmNlKCk7CiAgICAgICAgICRpbnRlcmZhY2UtPnBhcmVudHMoJHBh
cmVudHMpOwogICAgICAgICAkaW50ZXJmYWNlLT5wYXJlbnQoJHBhcmVudHMtPlswXSk7CkBAIC03
MDMsNyArNjk2LDcgQEAgc3ViIHBhcnNlRXhjZXB0aW9uCiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZXhjZXB0aW9uIiwgX19MSU5FX18pOwogICAg
ICAgICBteSAkZXhjZXB0aW9uTmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAg
ICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJGV4Y2VwdGlvbk5hbWVUb2tlbiwgSWRlbnRpZmllclRv
a2VuKTsKLSAgICAgICAgJGludGVyZmFjZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQ
cmVmaXgoJGV4Y2VwdGlvbk5hbWVUb2tlbi0+dmFsdWUoKSkpOworICAgICAgICAkaW50ZXJmYWNl
LT5uYW1lKCRleGNlcHRpb25OYW1lVG9rZW4tPnZhbHVlKCkpOwogICAgICAgICAkaW50ZXJmYWNl
LT5pc0V4Y2VwdGlvbigxKTsKICAgICAgICAgbXkgJHBhcmVudHMgPSAkc2VsZi0+cGFyc2VJbmhl
cml0YW5jZSgpOwogICAgICAgICAkaW50ZXJmYWNlLT5wYXJlbnRzKCRwYXJlbnRzKTsKQEAgLTc2
Nyw3ICs3NjAsNyBAQCBzdWIgcGFyc2VFbnVtCiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZh
bHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZW51bSIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJGVu
dW1OYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRv
a2VuVHlwZSgkZW51bU5hbWVUb2tlbiwgSWRlbnRpZmllclRva2VuKTsKLSAgICAgICAgJGVudW0t
Pm5hbWUoaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCRlbnVtTmFtZVRva2VuLT52YWx1
ZSgpKSk7CisgICAgICAgICRlbnVtLT5uYW1lKCRlbnVtTmFtZVRva2VuLT52YWx1ZSgpKTsKICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJ7IiwgX19M
SU5FX18pOwogICAgICAgICBwdXNoKEB7JGVudW0tPnZhbHVlc30sIEB7JHNlbGYtPnBhcnNlRW51
bVZhbHVlTGlzdCgpfSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5n
ZXRUb2tlbigpLCAifSIsIF9fTElORV9fKTsKQEAgLTg4MSw3ICs4NzQsNyBAQCBzdWIgcGFyc2VD
b25zdAogICAgICAgICAkbmV3RGF0YU5vZGUtPnR5cGUoJHNlbGYtPnBhcnNlQ29uc3RUeXBlKCkp
OwogICAgICAgICBteSAkY29uc3ROYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkY29uc3ROYW1lVG9rZW4sIElkZW50aWZpZXJUb2tl
bik7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQ
cmVmaXgoJGNvbnN0TmFtZVRva2VuLT52YWx1ZSgpKSk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+
bmFtZSgkY29uc3ROYW1lVG9rZW4tPnZhbHVlKCkpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9r
ZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIj0iLCBfX0xJTkVfXyk7CiAgICAgICAgICRuZXdE
YXRhTm9kZS0+dmFsdWUoJHNlbGYtPnBhcnNlQ29uc3RWYWx1ZSgpKTsKICAgICAgICAgJHNlbGYt
PmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18pOwpAQCAt
MTE2Myw3ICsxMTU2LDcgQEAgc3ViIHBhcnNlQXR0cmlidXRlUmVzdAogICAgICAgICAkbmV3RGF0
YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsK
ICAgICAgICAgbXkgJHRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5h
c3NlcnRUb2tlblR5cGUoJHRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwotICAgICAgICAkbmV3RGF0
YU5vZGUtPnNpZ25hdHVyZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHRv
a2VuLT52YWx1ZSgpKSk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKCR0
b2tlbi0+dmFsdWUoKSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5n
ZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKICAgICAgICAgIyBDdXN0b21Db25zdHJ1Y3RvciBt
YXkgYWxzbyBiZSB1c2VkIG9uIGF0dHJpYnV0ZXMuCiAgICAgICAgIGlmIChkZWZpbmVkICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ3VzdG9tQ29uc3RydWN0b3JzIn0pIHsKQEAgLTEzNDksNyAr
MTM0Miw3IEBAIHN1YiBwYXJzZU9wZXJhdGlvblJlc3QKICAgICAgICAgbXkgJG5ld0RhdGFOb2Rl
ID0gZG9tRnVuY3Rpb24tPm5ldygpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShk
b21TaWduYXR1cmUtPm5ldygpKTsKICAgICAgICAgbXkgJG5hbWUgPSAkc2VsZi0+cGFyc2VPcHRp
b25hbElkZW50aWZpZXIoKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUo
aWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCRuYW1lKSk7CisgICAgICAgICRuZXdEYXRh
Tm9kZS0+c2lnbmF0dXJlLT5uYW1lKCRuYW1lKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIoIiwgJG5hbWUsIF9fTElORV9fKTsKICAgICAgICAg
cHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JHNlbGYtPnBhcnNlQXJndW1lbnRM
aXN0KCl9KTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2Vu
KCksICIpIiwgX19MSU5FX18pOwpAQCAtMTQzNCw3ICsxNDI3LDcgQEAgc3ViIHBhcnNlT3B0aW9u
YWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5pc051bGxh
YmxlKDApOwogICAgICAgICB9CiAgICAgICAgICMgUmVtb3ZlIGFsbCAiPyIgaWYgZXhpc3RzLCBl
LmcuICJvYmplY3Q/W10/IiAtPiAib2JqZWN0W10iLgotICAgICAgICAkcGFyYW1EYXRhTm9kZS0+
dHlwZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgodHlwZVJlbW92ZU51bGxhYmxlU3Vm
Zml4KCR0eXBlKSkpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSh0eXBlUmVtb3ZlTnVs
bGFibGVTdWZmaXgoJHR5cGUpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0aW9uYWwo
MSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1lKCRzZWxmLT5wYXJzZUFyZ3VtZW50TmFt
ZSgpKTsKICAgICAgICAgJHNlbGYtPnBhcnNlRGVmYXVsdCgpOwpAQCAtMTUxMSw3ICsxNTA0LDcg
QEAgc3ViIHBhcnNlRXhjZXB0aW9uRmllbGQKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1
cmUtPnR5cGUoJHNlbGYtPnBhcnNlVHlwZSgpKTsKICAgICAgICAgbXkgJHRva2VuID0gJHNlbGYt
PmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRva2VuLCBJZGVu
dGlmaWVyVG9rZW4pOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZShpZGVu
dGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHRva2VuLT52YWx1ZSgpKSk7CisgICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKCR0b2tlbi0+dmFsdWUoKSk7CiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsK
ICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKQEAgLTE4
ODMsNyArMTg3Niw3IEBAIHN1YiBwYXJzZU5vbkFueVR5cGUKICAgICAgICAgcmV0dXJuICJEYXRl
IiAuICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgoKTsKICAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBl
KCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpIGVxICI6OiIpIHsKLSAgICAg
ICAgbXkgJG5hbWUgPSBpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHNlbGYtPnBhcnNl
U2NvcGVkTmFtZSgpKTsKKyAgICAgICAgbXkgJG5hbWUgPSAkc2VsZi0+cGFyc2VTY29wZWROYW1l
KCk7CiAgICAgICAgIHJldHVybiAkbmFtZSAuICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgoKTsKICAg
ICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19M
SU5FX18pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggYzZlMzhiNi4uYWI3MzBkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouY3BwCkBAIC03NjUsMTQgKzc2NSw2IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6
c2V0TnVsbGFibGVTdHJpbmdWYWx1ZShpbnQgbmV3TnVsbGFibGVTdHJpbmdWYWx1ZSkKICAgICBp
bXBsKCktPnNldE51bGxhYmxlU3RyaW5nVmFsdWUobmV3TnVsbGFibGVTdHJpbmdWYWx1ZSk7CiB9
CiAKLVdlYkRPTVN0cmluZyBXZWJET01UZXN0T2JqOjphdHRyaWJ1dGUoKSBjb25zdAotewotICAg
IGlmICghaW1wbCgpKQotICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7Ci0KLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcmPihpbXBsKCktPmF0dHJpYnV0ZSgpKTsK
LX0KLQogdm9pZCBXZWJET01UZXN0T2JqOjp2b2lkTWV0aG9kKCkKIHsKICAgICBpZiAoIWltcGwo
KSkKQEAgLTExMjksMTQgKzExMjEsNiBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnZhcmlhZGljTm9k
ZU1ldGhvZChjb25zdCBXZWJET01Ob2RlJiBoZWFkLCBjb25zdCBXZWJET01Ob2RlJgogICAgIGlt
cGwoKS0+dmFyaWFkaWNOb2RlTWV0aG9kKHRvV2ViQ29yZShoZWFkKSwgdG9XZWJDb3JlKHRhaWwp
KTsKIH0KIAotdm9pZCBXZWJET01UZXN0T2JqOjphbnkoZmxvYXQgYSwgaW50IGIpCi17Ci0gICAg
aWYgKCFpbXBsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGltcGwoKS0+YW55KGEsIGIpOwot
fQotCiBXZWJDb3JlOjpUZXN0T2JqKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE9iaiYgd3Jh
cHBlcikKIHsKICAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmluZGV4
IGVjOTYxZDguLjU1ZWI2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC02NSw4ICs2NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgV0VCRE9NX0NPTlNUX1ZBTFVFXzEyID0gMHgwMSwKICAgICAgICAgV0VC
RE9NX0NPTlNUX1ZBTFVFXzEzID0gMFgyMCwKICAgICAgICAgV0VCRE9NX0NPTlNUX1ZBTFVFXzE0
ID0gMHgxYWJjLAotICAgICAgICBXRUJET01fQ09OU1RfSkFWQVNDUklQVCA9IDE1LAotICAgICAg
ICBXRUJET01fcmVhZG9ubHkgPSAwCisgICAgICAgIFdFQkRPTV9DT05TVF9KQVZBU0NSSVBUID0g
MTUKICAgICB9OwogCiAgICAgaW50IHJlYWRPbmx5TG9uZ0F0dHIoKSBjb25zdDsKQEAgLTE1Niw3
ICsxNTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZShpbnQpOwogICAgIGludCBudWxsYWJsZVN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXROdWxsYWJsZVN0cmluZ1ZhbHVlKGludCk7Ci0gICAgV2ViRE9NU3RyaW5nIGF0dHJpYnV0
ZSgpIGNvbnN0OwogCiAgICAgdm9pZCB2b2lkTWV0aG9kKCk7CiAgICAgdm9pZCB2b2lkTWV0aG9k
V2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBX
ZWJET01UZXN0T2JqJiBvYmpBcmcpOwpAQCAtMjA5LDcgKzIwNyw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHZhcmlhZGljU3RyaW5nTWV0aG9kKGNvbnN0IFdlYkRPTVN0cmluZyYgaGVhZCwgY29uc3Qg
V2ViRE9NU3RyaW5nJiB0YWlsKTsKICAgICB2b2lkIHZhcmlhZGljRG91YmxlTWV0aG9kKGRvdWJs
ZSBoZWFkLCBkb3VibGUgdGFpbCk7CiAgICAgdm9pZCB2YXJpYWRpY05vZGVNZXRob2QoY29uc3Qg
V2ViRE9NTm9kZSYgaGVhZCwgY29uc3QgV2ViRE9NTm9kZSYgdGFpbCk7Ci0gICAgdm9pZCBhbnko
ZmxvYXQgYSwgaW50IGIpOwogCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaW1wbCgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTWF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTWF0dHJpYnV0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2
Yjk1YmYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01hdHRyaWJ1dGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAot
LyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJET01h
dHRyaWJ1dGUuaCIKLQotI2luY2x1ZGUgIlVSTC5oIgotI2luY2x1ZGUgIldlYkRPTVN0cmluZy5o
IgotI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJhdHRyaWJ1dGUu
aCIKLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCi1zdHJ1Y3QgV2ViRE9NYXR0cmlidXRl
OjpXZWJET01hdHRyaWJ1dGVQcml2YXRlIHsKLSAgICBXZWJET01hdHRyaWJ1dGVQcml2YXRlKFdl
YkNvcmU6OmF0dHJpYnV0ZSogb2JqZWN0ID0gMCkKLSAgICAgICAgOiBpbXBsKG9iamVjdCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYkNvcmU6OmF0dHJpYnV0ZT4gaW1wbDsKLX07Ci0K
LVdlYkRPTWF0dHJpYnV0ZTo6V2ViRE9NYXR0cmlidXRlKCkKLSAgICA6IFdlYkRPTU9iamVjdCgp
Ci0gICAgLCBtX2ltcGwoMCkKLXsKLX0KLQotV2ViRE9NYXR0cmlidXRlOjpXZWJET01hdHRyaWJ1
dGUoV2ViQ29yZTo6YXR0cmlidXRlKiBpbXBsKQotICAgIDogV2ViRE9NT2JqZWN0KCkKLSAgICAs
IG1faW1wbChuZXcgV2ViRE9NYXR0cmlidXRlUHJpdmF0ZShpbXBsKSkKLXsKLX0KLQotV2ViRE9N
YXR0cmlidXRlOjpXZWJET01hdHRyaWJ1dGUoY29uc3QgV2ViRE9NYXR0cmlidXRlJiBjb3B5KQot
ICAgIDogV2ViRE9NT2JqZWN0KCkKLXsKLSAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBX
ZWJET01hdHRyaWJ1dGVQcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7Ci19Ci0KLVdlYkRPTWF0dHJp
YnV0ZSYgV2ViRE9NYXR0cmlidXRlOjpvcGVyYXRvcj0oY29uc3QgV2ViRE9NYXR0cmlidXRlJiBj
b3B5KQotewotICAgIGRlbGV0ZSBtX2ltcGw7Ci0gICAgbV9pbXBsID0gY29weS5pbXBsKCkgPyBu
ZXcgV2ViRE9NYXR0cmlidXRlUHJpdmF0ZShjb3B5LmltcGwoKSkgOiAwOwotICAgIHJldHVybiAq
dGhpczsKLX0KLQotV2ViQ29yZTo6YXR0cmlidXRlKiBXZWJET01hdHRyaWJ1dGU6OmltcGwoKSBj
b25zdAotewotICAgIHJldHVybiBtX2ltcGwgPyBXVEY6OmdldFB0cihtX2ltcGwtPmltcGwpIDog
MDsKLX0KLQotV2ViRE9NYXR0cmlidXRlOjp+V2ViRE9NYXR0cmlidXRlKCkKLXsKLSAgICBkZWxl
dGUgbV9pbXBsOwotICAgIG1faW1wbCA9IDA7Ci19Ci0KLVdlYkRPTVN0cmluZyBXZWJET01hdHRy
aWJ1dGU6OnJlYWRvbmx5KCkgY29uc3QKLXsKLSAgICBpZiAoIWltcGwoKSkKLSAgICAgICAgcmV0
dXJuIFdlYkRPTVN0cmluZygpOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6
U3RyaW5nJj4oaW1wbCgpLT5yZWFkb25seSgpKTsKLX0KLQotV2ViQ29yZTo6YXR0cmlidXRlKiB0
b1dlYkNvcmUoY29uc3QgV2ViRE9NYXR0cmlidXRlJiB3cmFwcGVyKQotewotICAgIHJldHVybiB3
cmFwcGVyLmltcGwoKTsKLX0KLQotV2ViRE9NYXR0cmlidXRlIHRvV2ViS2l0KFdlYkNvcmU6OmF0
dHJpYnV0ZSogdmFsdWUpCi17Ci0gICAgcmV0dXJuIFdlYkRPTWF0dHJpYnV0ZSh2YWx1ZSk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTWF0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01hdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1M2Q5
ZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTWF0dHJpYnV0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpZm5kZWYgV2ViRE9NYXR0cmlidXRlX2gKLSNkZWZpbmUgV2ViRE9NYXR0cmlidXRlX2gKLQot
I2luY2x1ZGUgPFdlYkRPTU9iamVjdC5oPgotI2luY2x1ZGUgPFdlYkRPTVN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBhdHRyaWJ1dGU7Ci19OwotCi0KLWNsYXNzIFdlYkRP
TWF0dHJpYnV0ZSA6IHB1YmxpYyBXZWJET01PYmplY3QgewotcHVibGljOgotICAgIFdlYkRPTWF0
dHJpYnV0ZSgpOwotICAgIGV4cGxpY2l0IFdlYkRPTWF0dHJpYnV0ZShXZWJDb3JlOjphdHRyaWJ1
dGUqKTsKLSAgICBXZWJET01hdHRyaWJ1dGUoY29uc3QgV2ViRE9NYXR0cmlidXRlJik7Ci0gICAg
V2ViRE9NYXR0cmlidXRlJiBvcGVyYXRvcj0oY29uc3QgV2ViRE9NYXR0cmlidXRlJik7Ci0gICAg
dmlydHVhbCB+V2ViRE9NYXR0cmlidXRlKCk7Ci0KLSAgICBXZWJET01TdHJpbmcgcmVhZG9ubHko
KSBjb25zdDsKLQotICAgIFdlYkNvcmU6OmF0dHJpYnV0ZSogaW1wbCgpIGNvbnN0OwotCi1wcm90
ZWN0ZWQ6Ci0gICAgc3RydWN0IFdlYkRPTWF0dHJpYnV0ZVByaXZhdGU7Ci0gICAgV2ViRE9NYXR0
cmlidXRlUHJpdmF0ZSogbV9pbXBsOwotfTsKLQotV2ViQ29yZTo6YXR0cmlidXRlKiB0b1dlYkNv
cmUoY29uc3QgV2ViRE9NYXR0cmlidXRlJik7Ci1XZWJET01hdHRyaWJ1dGUgdG9XZWJLaXQoV2Vi
Q29yZTo6YXR0cmlidXRlKik7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01yZWFkb25seS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTXJlYWRvbmx5LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJlYzE1ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTXJlYWRvbmx5LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViRE9NcmVhZG9ubHkuaCIKLQotI2luY2x1ZGUgIldlYkV4Y2Vw
dGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJyZWFkb25seS5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLXN0cnVjdCBXZWJET01yZWFkb25seTo6
V2ViRE9NcmVhZG9ubHlQcml2YXRlIHsKLSAgICBXZWJET01yZWFkb25seVByaXZhdGUoV2ViQ29y
ZTo6cmVhZG9ubHkqIG9iamVjdCA9IDApCi0gICAgICAgIDogaW1wbChvYmplY3QpCi0gICAgewot
ICAgIH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpyZWFkb25seT4gaW1wbDsKLX07Ci0KLVdlYkRP
TXJlYWRvbmx5OjpXZWJET01yZWFkb25seSgpCi0gICAgOiBXZWJET01PYmplY3QoKQotICAgICwg
bV9pbXBsKDApCi17Ci19Ci0KLVdlYkRPTXJlYWRvbmx5OjpXZWJET01yZWFkb25seShXZWJDb3Jl
OjpyZWFkb25seSogaW1wbCkKLSAgICA6IFdlYkRPTU9iamVjdCgpCi0gICAgLCBtX2ltcGwobmV3
IFdlYkRPTXJlYWRvbmx5UHJpdmF0ZShpbXBsKSkKLXsKLX0KLQotV2ViRE9NcmVhZG9ubHk6Oldl
YkRPTXJlYWRvbmx5KGNvbnN0IFdlYkRPTXJlYWRvbmx5JiBjb3B5KQotICAgIDogV2ViRE9NT2Jq
ZWN0KCkKLXsKLSAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01yZWFkb25seVBy
aXZhdGUoY29weS5pbXBsKCkpIDogMDsKLX0KLQotV2ViRE9NcmVhZG9ubHkmIFdlYkRPTXJlYWRv
bmx5OjpvcGVyYXRvcj0oY29uc3QgV2ViRE9NcmVhZG9ubHkmIGNvcHkpCi17Ci0gICAgZGVsZXRl
IG1faW1wbDsKLSAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01yZWFkb25seVBy
aXZhdGUoY29weS5pbXBsKCkpIDogMDsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLVdlYkNvcmU6
OnJlYWRvbmx5KiBXZWJET01yZWFkb25seTo6aW1wbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aW1wbCA/IFdURjo6Z2V0UHRyKG1faW1wbC0+aW1wbCkgOiAwOwotfQotCi1XZWJET01yZWFkb25s
eTo6fldlYkRPTXJlYWRvbmx5KCkKLXsKLSAgICBkZWxldGUgbV9pbXBsOwotICAgIG1faW1wbCA9
IDA7Ci19Ci0KLVdlYkNvcmU6OnJlYWRvbmx5KiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NcmVhZG9u
bHkmIHdyYXBwZXIpCi17Ci0gICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOwotfQotCi1XZWJET01y
ZWFkb25seSB0b1dlYktpdChXZWJDb3JlOjpyZWFkb25seSogdmFsdWUpCi17Ci0gICAgcmV0dXJu
IFdlYkRPTXJlYWRvbmx5KHZhbHVlKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NcmVhZG9ubHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NcmVhZG9ubHkuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjk4ODFjNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTXJlYWRvbmx5LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJET01yZWFkb25seV9oCi0jZGVmaW5l
IFdlYkRPTXJlYWRvbmx5X2gKLQotI2luY2x1ZGUgPFdlYkRPTU9iamVjdC5oPgotI2luY2x1ZGUg
PFdlYkRPTVN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyByZWFkb25seTsK
LX07Ci0KLQotY2xhc3MgV2ViRE9NcmVhZG9ubHkgOiBwdWJsaWMgV2ViRE9NT2JqZWN0IHsKLXB1
YmxpYzoKLSAgICBXZWJET01yZWFkb25seSgpOwotICAgIGV4cGxpY2l0IFdlYkRPTXJlYWRvbmx5
KFdlYkNvcmU6OnJlYWRvbmx5Kik7Ci0gICAgV2ViRE9NcmVhZG9ubHkoY29uc3QgV2ViRE9NcmVh
ZG9ubHkmKTsKLSAgICBXZWJET01yZWFkb25seSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRPTXJlYWRv
bmx5Jik7Ci0gICAgdmlydHVhbCB+V2ViRE9NcmVhZG9ubHkoKTsKLQotCi0gICAgV2ViQ29yZTo6
cmVhZG9ubHkqIGltcGwoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIHN0cnVjdCBXZWJET01y
ZWFkb25seVByaXZhdGU7Ci0gICAgV2ViRE9NcmVhZG9ubHlQcml2YXRlKiBtX2ltcGw7Ci19Owot
Ci1XZWJDb3JlOjpyZWFkb25seSogdG9XZWJDb3JlKGNvbnN0IFdlYkRPTXJlYWRvbmx5Jik7Ci1X
ZWJET01yZWFkb25seSB0b1dlYktpdChXZWJDb3JlOjpyZWFkb25seSopOwotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXggYWQ1M2ExMS4uZTIwN2E5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAgLTEzMSw3ICsxMzEsNiBAQCBlbnVt
IHsKICAgICBQUk9QX05VTExBQkxFX1NUUklOR19BVFRSSUJVVEUsCiAgICAgUFJPUF9OVUxMQUJM
RV9MT05HX1NFVFRBQkxFX0FUVFJJQlVURSwKICAgICBQUk9QX05VTExBQkxFX1NUUklOR19WQUxV
RSwKLSAgICBQUk9QX0FUVFJJQlVURSwKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9vYmpfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQpAQCAtNTYyLDEwICs1NjEsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BlcnR5SWQsCiAgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFsdWUsIGNvcmVT
ZWxmLT5udWxsYWJsZVN0cmluZ1ZhbHVlKGlzTnVsbCwgZWMpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIGNhc2UgUFJPUF9BVFRSSUJVVEU6IHsKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0
cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+YXR0cmlidXRlKCkpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMTMyLDE2ICsxMTI3LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9jbGFzc19pbml0KFdlYktpdERPTVRlc3RPYmpDbGFzcyogcmVxdWVzdENsYXNzKQog
ICAgICAgICAgICAgR19NSU5MT05HLCBHX01BWExPTkcsIDAsCiAgICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFKSk7CiAKLSAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAotICAgICAgICBnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfQVRUUklCVVRFLAotICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAgImF0dHJpYnV0ZSIsCi0gICAgICAg
ICAgICAiVGVzdE9iajphdHRyaWJ1dGUiLAotICAgICAgICAgICAgInJlYWQtb25seSBnY2hhciog
VGVzdE9iajphdHRyaWJ1dGUiLAotICAgICAgICAgICAgIiIsCi0gICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKLQogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2luaXQoV2ViS2l0RE9NVGVzdE9iaiogcmVxdWVzdCkKQEAgLTE2NjUsMTQgKzE2NTAsNiBAQCB2
b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgV2ViS2l0RE9NTgogICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhvZChjb252
ZXJ0ZWRIZWFkLCBjb252ZXJ0ZWRUYWlsKTsKIH0KIAotdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2FueShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnZmxvYXQgYSwgZ2xvbmcgYikKLXsKLSAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGl0ZW0tPmFueShhLCBiKTsKLX0KLQogZ2xv
bmcgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2xvbmdfYXR0cihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKQEAgLTI2MTEsMTIgKzI1ODgsMyBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X251
bGxhYmxlX3N0cmluZ192YWx1ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZwogICAgIGl0
ZW0tPnNldE51bGxhYmxlU3RyaW5nVmFsdWUodmFsdWUpOwogfQogCi1nY2hhciogd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCi17Ci0gICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9PQkooc2VsZiksIDApOwotICAgIFdlYkNvcmU6OlRl
c3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNv
bnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+YXR0cmlidXRlKCkpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCBhYjJiMjI0Li5iMDU1MDU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC01NDMsMTcgKzU0Myw2IEBAIFdF
QktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial92YXJpYWRpY19ub2RlX21ldGhvZChX
ZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01Ob2RlKiBoZWFkLCBXZWJLaXRET01Ob2Rl
KiB0YWlsKTsKIAogLyoqCi0gKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2FueToKLSAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCi0gKiBAYTogQSAjZ2Zsb2F0Ci0gKiBAYjogQSAjZ2xvbmcKLSAq
Ci0gKgotKiovCi1XRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9kb21fdGVzdF9vYmpfYW55KFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGdmbG9hdCBhLCBnbG9uZyBiKTsKLQotLyoqCiAgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRyOgogICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKICAqCkBAIC0xNTIyLDE2ICsxNTExLDYgQEAgd2Via2l0X2RvbV90ZXN0X29i
al9nZXRfbnVsbGFibGVfc3RyaW5nX3ZhbHVlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJv
cioqIGUKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfbnVsbGFibGVf
c3RyaW5nX3ZhbHVlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKTsKIAotLyoq
Ci0gKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyaWJ1dGU6Ci0gKiBAc2VsZjogQSAjV2Vi
S2l0RE9NVGVzdE9iagotICoKLSAqIFJldHVybnM6Ci0gKgotKiovCi1XRUJLSVRfQVBJIGdjaGFy
Kgotd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYpOwotCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogV2ViS2l0RE9NVGVzdE9ial9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLnN5bWJvbHMKaW5kZXggOGQ3ZjEzMi4uMGY0
NzQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5zeW1ib2xzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouc3ltYm9scwpAQCAtNDUs
NyArNDUsNiBAQCBXZWJLaXRET01ib29sKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3N0cmljdF9mdW5j
dGlvbihXZWJLaXRET01UZXN0T2JqKiwgY29uc3QgZ2NoYQogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3ZhcmlhZGljX3N0cmluZ19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiosIGNvbnN0IGdjaGFy
KiwgY29uc3QgZ2NoYXIqKQogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX2RvdWJs
ZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiosIGdkb3VibGUsIGdkb3VibGUpCiB2b2lkIHdlYmtp
dF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfbm9kZV9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiosIFdl
YktpdERPTU5vZGUqLCBXZWJLaXRET01Ob2RlKikKLXZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9h
bnkoV2ViS2l0RE9NVGVzdE9iaiosIGdmbG9hdCwgZ2xvbmcpCiBnbG9uZyB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqKQogZ2NoYXIq
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9zdHJpbmdfYXR0cihXZWJLaXRET01U
ZXN0T2JqKikKIFdlYktpdERPTVRlc3RPYmoqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRf
b25seV90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqKQpAQCAtMTQxLDQgKzE0MCwzIEBA
IGdsb25nIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX2xvbmdfc2V0dGFibGVfYXR0
cmlidXRlKFdlYktpdERPTVRlc3RPYmoqCiB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X251
bGxhYmxlX2xvbmdfc2V0dGFibGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqLCBnbG9uZykK
IGdsb25nIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X251bGxhYmxlX3N0cmluZ192YWx1ZShXZWJL
aXRET01UZXN0T2JqKiwgR0Vycm9yKiopCiB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X251
bGxhYmxlX3N0cmluZ192YWx1ZShXZWJLaXRET01UZXN0T2JqKiwgZ2xvbmcpCi1nY2hhciogd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTWF0dHJpYnV0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMwODdiZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NYXR0cmlidXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE3NCArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NYXR0cmlidXRlLmgiCi0KLSNpbmNsdWRlICJD
U1NJbXBvcnRSdWxlLmgiCi0jaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0RE9NYXR0cmlidXRlUHJpdmF0ZS5oIgotI2luY2x1ZGUgImdvYmplY3QvQ29udmVy
dFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9BVFRSSUJVVEVfR0VUX1BSSVZBVEUob2Jq
KSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfVFlQRV9ET01fQVRUUklC
VVRFLCBXZWJLaXRET01hdHRyaWJ1dGVQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0
RE9NYXR0cmlidXRlUHJpdmF0ZSB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OmF0dHJpYnV0ZT4gY29y
ZU9iamVjdDsKLX0gV2ViS2l0RE9NYXR0cmlidXRlUHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLVdlYktpdERPTWF0dHJpYnV0ZSoga2l0KFdlYkNvcmU6OmF0dHJpYnV0ZSogb2JqKQot
ewotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChncG9pbnRlciBy
ZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCi0gICAgICAgIHJldHVybiBXRUJLSVRfRE9N
X0FUVFJJQlVURShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXBhdHRyaWJ1dGUob2JqKTsKLX0KLQot
V2ViQ29yZTo6YXR0cmlidXRlKiBjb3JlKFdlYktpdERPTWF0dHJpYnV0ZSogcmVxdWVzdCkKLXsK
LSAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OmF0dHJpYnV0ZSo+KFdF
QktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Ci19Ci0KLVdlYktpdERP
TWF0dHJpYnV0ZSogd3JhcGF0dHJpYnV0ZShXZWJDb3JlOjphdHRyaWJ1dGUqIGNvcmVPYmplY3Qp
Ci17Ci0gICAgQVNTRVJUKGNvcmVPYmplY3QpOwotICAgIHJldHVybiBXRUJLSVRfRE9NX0FUVFJJ
QlVURShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX0FUVFJJQlVURSwgImNvcmUtb2JqZWN0
IiwgY29yZU9iamVjdCwgTlVMTCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotR19E
RUZJTkVfVFlQRShXZWJLaXRET01hdHRyaWJ1dGUsIHdlYmtpdF9kb21fYXR0cmlidXRlLCBXRUJL
SVRfVFlQRV9ET01fT0JKRUNUKQotCi1lbnVtIHsKLSAgICBQUk9QXzAsCi0gICAgUFJPUF9SRUFE
T05MWSwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYXR0cmlidXRlX2ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKLXsKLSAgICBXZWJLaXRET01hdHRyaWJ1dGVQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9BVFRSSUJVVEVfR0VUX1BSSVZBVEUob2JqZWN0KTsKLQotICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKLQotICAgIHBy
aXYtPn5XZWJLaXRET01hdHRyaWJ1dGVQcml2YXRlKCk7Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X2RvbV9hdHRyaWJ1dGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQot
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
c3BlYykKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0KLSAg
ICBXZWJLaXRET01UZXN0RXhjZXB0aW9uKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0VYQ0VQVElP
TihvYmplY3QpOwotICAgIFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIGNvcmVTZWxmID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwotCi0gICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci0gICAgY2FzZSBQUk9Q
X05BTUU6IHsKLSAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRG
OFN0cmluZyhjb3JlU2VsZi0+bmFtZSgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBk
ZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fYXR0cmlidXRlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLQotICAgIFdlYktpdERPTWF0
dHJpYnV0ZSogc2VsZiA9IFdFQktJVF9ET01fQVRUUklCVVRFKG9iamVjdCk7Ci0gICAgV2ViQ29y
ZTo6YXR0cmlidXRlKiBjb3JlU2VsZiA9IFdlYktpdDo6Y29yZShzZWxmKTsKLQotICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUF9SRUFET05MWTogewotICAgICAgICBnX3Zh
bHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5yZWFk
b25seSgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBH
X09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3Bl
Yyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIEdPYmplY3QqIHdlYmtpdF9k
b21fYXR0cmlidXRlX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3Bl
cnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQot
ewotICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fYXR0cmli
dXRlX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXND
b3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7Ci0KLSAgICBXZWJLaXRET01hdHRyaWJ1dGVQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9BVFRSSUJVVEVfR0VUX1BSSVZBVEUob2JqZWN0KTsKLSAg
ICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6YXR0cmlidXRlKj4oV0VC
S0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7Ci0gICAgV2ViS2l0OjpET01PYmpl
Y3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Ci0KLSAgICByZXR1
cm4gb2JqZWN0OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2F0dHJpYnV0ZV9jbGFzc19p
bml0KFdlYktpdERPTWF0dHJpYnV0ZUNsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVj
dENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01h
dHRyaWJ1dGVQcml2YXRlKSk7Ci0gICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtp
dF9kb21fYXR0cmlidXRlX2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfZG9tX2F0dHJpYnV0ZV9maW5hbGl6ZTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9w
cm9wZXJ0eSA9IHdlYmtpdF9kb21fYXR0cmlidXRlX2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAg
ICAgUFJPUF9OQU1FLAotICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAotICAgICAgICAgICAg
Im5hbWUiLAotICAgICAgICAgICAgIlRlc3RFeGNlcHRpb246bmFtZSIsCi0gICAgICAgICAgICAi
cmVhZC1vbmx5IGdjaGFyKiBUZXN0RXhjZXB0aW9uOm5hbWUiLAotICAgICAgICAgICAgIiIsCi0g
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLQotICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoCi0gICAgICAgIGdvYmplY3RDbGFzcywKLSAgICAgICAgUFJPUF9S
RUFET05MWSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKLSAgICAgICAgICAgICJyZWFk
b25seSIsCi0gICAgICAgICAgICAiYXR0cmlidXRlOnJlYWRvbmx5IiwKLSAgICAgICAgICAgICJy
ZWFkLW9ubHkgZ2NoYXIqIGF0dHJpYnV0ZTpyZWFkb25seSIsCi0gICAgICAgICAgICAiIiwKLSAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi19Ci0KLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fYXR0cmlidXRlX2luaXQoV2ViS2l0RE9NYXR0cmlidXRlKiByZXF1ZXN0KQotewot
ICAgIFdlYktpdERPTWF0dHJpYnV0ZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX0FUVFJJQlVU
RV9HRVRfUFJJVkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTWF0dHJpYnV0
ZVByaXZhdGUoKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fYXR0cmlidXRlX2dldF9yZWFkb25s
eShXZWJLaXRET01hdHRyaWJ1dGUqIHNlbGYpCi17Ci0gICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNf
QVRUUklCVVRFKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjphdHRyaWJ1dGUqIGl0ZW0gPSBXZWJL
aXQ6OmNvcmUoc2VsZik7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmco
aXRlbS0+cmVhZG9ubHkoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NYXR0
cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01hdHRyaWJ1dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ2MmRm
OS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01hdHRyaWJ1dGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAK
LS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZiAhZGVmaW5lZChfX1dFQktJVERP
TV9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQpCi0jZXJyb3IgIk9ubHkg
PHdlYmtpdGRvbS93ZWJraXRkb20uaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKLSNlbmRp
ZgotCi0jaWZuZGVmIFdlYktpdERPTWF0dHJpYnV0ZV9oCi0jZGVmaW5lIFdlYktpdERPTWF0dHJp
YnV0ZV9oCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1ZGUgPHdlYmtpdGRvbS9X
ZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5o
PgotCi1HX0JFR0lOX0RFQ0xTCi0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBXRUJLSVRfVFlQ
RV9ET01fQVRUUklCVVRFICAgICAgICAgICAgKHdlYmtpdF9kb21fYXR0cmlidXRlX2dldF90eXBl
KCkpCi0jZGVmaW5lIFdFQktJVF9ET01fQVRUUklCVVRFKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9BVFRSSUJVVEUsIFdl
YktpdERPTWF0dHJpYnV0ZSkpCi0jZGVmaW5lIFdFQktJVF9ET01fQVRUUklCVVRFX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RP
TV9BVFRSSUJVVEUsIFdlYktpdERPTWF0dHJpYnV0ZUNsYXNzKQotI2RlZmluZSBXRUJLSVRfRE9N
X0lTX0FUVFJJQlVURShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChv
YmopLCBXRUJLSVRfVFlQRV9ET01fQVRUUklCVVRFKSkKLSNkZWZpbmUgV0VCS0lUX0RPTV9JU19B
VFRSSUJVVEVfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAg
V0VCS0lUX1RZUEVfRE9NX0FUVFJJQlVURSkpCi0jZGVmaW5lIFdFQktJVF9ET01fQVRUUklCVVRF
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJ
VF9UWVBFX0RPTV9BVFRSSUJVVEUsIFdlYktpdERPTWF0dHJpYnV0ZUNsYXNzKSkKLQotc3RydWN0
IF9XZWJLaXRET01hdHRyaWJ1dGUgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFu
Y2U7Ci19OwotCi1zdHJ1Y3QgX1dlYktpdERPTWF0dHJpYnV0ZUNsYXNzIHsKLSAgICBXZWJLaXRE
T01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1XRUJLSVRfQVBJIEdUeXBlCi13ZWJr
aXRfZG9tX2F0dHJpYnV0ZV9nZXRfdHlwZSAodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9h
dHRyaWJ1dGVfZ2V0X3JlYWRvbmx5OgotICogQHNlbGY6IEEgI1dlYktpdERPTWF0dHJpYnV0ZQot
ICoKLSAqIFJldHVybnM6Ci0gKgotKiovCi1XRUJLSVRfQVBJIGdjaGFyKgotd2Via2l0X2RvbV9h
dHRyaWJ1dGVfZ2V0X3JlYWRvbmx5KFdlYktpdERPTWF0dHJpYnV0ZSogc2VsZik7Ci0KLUdfRU5E
X0RFQ0xTCi0KLSNlbmRpZiAvKiBXZWJLaXRET01UZXN0RXhjZXB0aW9uX2ggKi8KLSNlbmRpZiAv
KiBXZWJLaXRET01hdHRyaWJ1dGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NYXR0cmlidXRlLnN5bWJvbHMgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01hdHRy
aWJ1dGUuc3ltYm9scwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhODJhYS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01hdHRyaWJ1dGUuc3ltYm9scworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWdj
aGFyKiB3ZWJraXRfZG9tX2F0dHJpYnV0ZV9nZXRfcmVhZG9ubHkoV2ViS2l0RE9NYXR0cmlidXRl
KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTWF0dHJpYnV0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTWF0dHJpYnV0ZVByaXZhdGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGZlYjJkNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01hdHRyaWJ1dGVQcml2
YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUg
aGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZ
IQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYktpdERPTWF0dHJpYnV0ZVByaXZhdGVfaAotI2RlZmlu
ZSBXZWJLaXRET01hdHRyaWJ1dGVQcml2YXRlX2gKLQotI2luY2x1ZGUgImF0dHJpYnV0ZS5oIgot
I2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01hdHRyaWJ1dGUuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci1XZWJLaXRET01hdHRyaWJ1dGUqIHdyYXBhdHRyaWJ1dGUoV2ViQ29yZTo6YXR0cmli
dXRlKik7Ci1XZWJLaXRET01hdHRyaWJ1dGUqIGtpdChXZWJDb3JlOjphdHRyaWJ1dGUqKTsKLVdl
YkNvcmU6OmF0dHJpYnV0ZSogY29yZShXZWJLaXRET01hdHRyaWJ1dGUqKTsKLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9NYXR0cmlidXRlUHJpdmF0ZV9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01yZWFkb25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01yZWFkb25seS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE4NTgwODQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NcmVhZG9ubHkuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTAzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRET01yZWFkb25seS5oIgotCi0jaW5jbHVkZSAi
Q1NTSW1wb3J0UnVsZS5oIgotI2luY2x1ZGUgIkRPTU9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgotI2luY2x1
ZGUgIldlYktpdERPTXJlYWRvbmx5UHJpdmF0ZS5oIgotI2luY2x1ZGUgImdvYmplY3QvQ29udmVy
dFRvVVRGOFN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLSNkZWZpbmUgV0VCS0lUX0RPTV9SRUFET05MWV9HRVRfUFJJVkFURShvYmop
IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9UWVBFX0RPTV9SRUFET05M
WSwgV2ViS2l0RE9NcmVhZG9ubHlQcml2YXRlKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
cmVhZG9ubHlQcml2YXRlIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6cmVhZG9ubHk+IGNvcmVPYmpl
Y3Q7Ci19IFdlYktpdERPTXJlYWRvbmx5UHJpdmF0ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYktpdERPTXJlYWRvbmx5KiBraXQoV2ViQ29yZTo6cmVhZG9ubHkqIG9iaikKLXsKLSAgICBp
ZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9N
T2JqZWN0Q2FjaGU6OmdldChvYmopKQotICAgICAgICByZXR1cm4gV0VCS0lUX0RPTV9SRUFET05M
WShyZXQpOwotCi0gICAgcmV0dXJuIHdyYXByZWFkb25seShvYmopOwotfQotCi1XZWJDb3JlOjpy
ZWFkb25seSogY29yZShXZWJLaXRET01yZWFkb25seSogcmVxdWVzdCkKLXsKLSAgICByZXR1cm4g
cmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNvcmU6OnJlYWRvbmx5Kj4oV0VCS0lUX0RPTV9PQkpF
Q1QocmVxdWVzdCktPmNvcmVPYmplY3QpIDogMDsKLX0KLQotV2ViS2l0RE9NcmVhZG9ubHkqIHdy
YXByZWFkb25seShXZWJDb3JlOjpyZWFkb25seSogY29yZU9iamVjdCkKLXsKLSAgICBBU1NFUlQo
Y29yZU9iamVjdCk7Ci0gICAgcmV0dXJuIFdFQktJVF9ET01fUkVBRE9OTFkoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0RPTV9SRUFET05MWSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVM
TCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotR19ERUZJTkVfVFlQRShXZWJLaXRE
T01yZWFkb25seSwgd2Via2l0X2RvbV9yZWFkb25seSwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkK
LQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9yZWFkb25seV9maW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCi17Ci0gICAgV2ViS2l0RE9NcmVhZG9ubHlQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9S
RUFET05MWV9HRVRfUFJJVkFURShvYmplY3QpOwotCi0gICAgV2ViS2l0OjpET01PYmplY3RDYWNo
ZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwotCi0gICAgcHJpdi0+fldlYktpdERP
TXJlYWRvbmx5UHJpdmF0ZSgpOwotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fcmVhZG9u
bHlfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQotc3RhdGljIEdPYmplY3Qq
IHdlYmtpdF9kb21fcmVhZG9ubHlfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3Ry
dWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3Bl
cnRpZXMpCi17Ci0gICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV9yZWFkb25seV9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9w
ZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwotCi0gICAgV2ViS2l0RE9NcmVhZG9u
bHlQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9SRUFET05MWV9HRVRfUFJJVkFURShvYmplY3Qp
OwotICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpyZWFkb25seSo+
KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwotICAgIFdlYktpdDo6RE9N
T2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwotCi0gICAg
cmV0dXJuIG9iamVjdDsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9yZWFkb25seV9jbGFz
c19pbml0KFdlYktpdERPTXJlYWRvbmx5Q2xhc3MqIHJlcXVlc3RDbGFzcykKLXsKLSAgICBHT2Jq
ZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7Ci0g
ICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERP
TXJlYWRvbmx5UHJpdmF0ZSkpOwotICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJr
aXRfZG9tX3JlYWRvbmx5X2NvbnN0cnVjdG9yOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRfZG9tX3JlYWRvbmx5X2ZpbmFsaXplOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3JlYWRvbmx5X2luaXQoV2ViS2l0RE9NcmVhZG9ubHkqIHJlcXVlc3QpCi17Ci0gICAgV2Vi
S2l0RE9NcmVhZG9ubHlQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9SRUFET05MWV9HRVRfUFJJ
VkFURShyZXF1ZXN0KTsKLSAgICBuZXcgKHByaXYpIFdlYktpdERPTXJlYWRvbmx5UHJpdmF0ZSgp
OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01yZWFkb25seS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NcmVhZG9ubHkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTQ2YzRiZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01yZWFkb25seS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmICFk
ZWZpbmVkKF9fV0VCS0lURE9NX0hfSU5TSURFX18pICYmICFkZWZpbmVkKEJVSUxESU5HX1dFQktJ
VCkKLSNlcnJvciAiT25seSA8d2Via2l0ZG9tL3dlYmtpdGRvbS5oPiBjYW4gYmUgaW5jbHVkZWQg
ZGlyZWN0bHkuIgotI2VuZGlmCi0KLSNpZm5kZWYgV2ViS2l0RE9NcmVhZG9ubHlfaAotI2RlZmlu
ZSBXZWJLaXRET01yZWFkb25seV9oCi0KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotI2luY2x1
ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01PYmplY3QuaD4KLSNpbmNsdWRlIDx3ZWJraXRkb20vd2Vi
a2l0ZG9tZGVmaW5lcy5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLUdfQkVHSU5fREVDTFMKLQotI2Rl
ZmluZSBXRUJLSVRfVFlQRV9ET01fUkVBRE9OTFkgICAgICAgICAgICAod2Via2l0X2RvbV9yZWFk
b25seV9nZXRfdHlwZSgpKQotI2RlZmluZSBXRUJLSVRfRE9NX1JFQURPTkxZKG9iaikgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9S
RUFET05MWSwgV2ViS2l0RE9NcmVhZG9ubHkpKQotI2RlZmluZSBXRUJLSVRfRE9NX1JFQURPTkxZ
X0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX0RPTV9SRUFET05MWSwgV2ViS2l0RE9NcmVhZG9ubHlDbGFzcykKLSNkZWZpbmUgV0VC
S0lUX0RPTV9JU19SRUFET05MWShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9U
WVBFKChvYmopLCBXRUJLSVRfVFlQRV9ET01fUkVBRE9OTFkpKQotI2RlZmluZSBXRUJLSVRfRE9N
X0lTX1JFQURPTkxZX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX0RPTV9SRUFET05MWSkpCi0jZGVmaW5lIFdFQktJVF9ET01fUkVBRE9O
TFlfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VC
S0lUX1RZUEVfRE9NX1JFQURPTkxZLCBXZWJLaXRET01yZWFkb25seUNsYXNzKSkKLQotc3RydWN0
IF9XZWJLaXRET01yZWFkb25seSB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5j
ZTsKLX07Ci0KLXN0cnVjdCBfV2ViS2l0RE9NcmVhZG9ubHlDbGFzcyB7Ci0gICAgV2ViS2l0RE9N
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotV0VCS0lUX0FQSSBHVHlwZQotd2Via2l0
X2RvbV9yZWFkb25seV9nZXRfdHlwZSAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAv
KiBXZWJLaXRET01UZXN0SW50ZXJmYWNlX2ggKi8KLSNlbmRpZiAvKiBXZWJLaXRET01yZWFkb25s
eV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01yZWFkb25seS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NcmVhZG9ubHkuc3ltYm9scwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NcmVhZG9u
bHlQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01yZWFkb25seVByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTc2NTkxYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01yZWFkb25seVByaXZhdGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDMzICswLDAgQEAKLS8qCi0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
V2ViS2l0RE9NcmVhZG9ubHlQcml2YXRlX2gKLSNkZWZpbmUgV2ViS2l0RE9NcmVhZG9ubHlQcml2
YXRlX2gKLQotI2luY2x1ZGUgInJlYWRvbmx5LmgiCi0jaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktp
dERPTXJlYWRvbmx5Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotV2ViS2l0RE9NcmVhZG9ubHkq
IHdyYXByZWFkb25seShXZWJDb3JlOjpyZWFkb25seSopOwotV2ViS2l0RE9NcmVhZG9ubHkqIGtp
dChXZWJDb3JlOjpyZWFkb25seSopOwotV2ViQ29yZTo6cmVhZG9ubHkqIGNvcmUoV2ViS2l0RE9N
cmVhZG9ubHkqKTsKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViS2l0RE9N
cmVhZG9ubHlQcml2YXRlX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5k
ZXggNGY2OTlmMC4uZDEwYjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAK
QEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdE93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVuawogdm9pZCBKU1Rlc3RB
Y3RpdmVET01PYmplY3RPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBqc1Rl
c3RBY3RpdmVET01PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oaGFuZGxl
LmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwganNUZXN0QWN0aXZlRE9NT2JqZWN0LT5pbXBsKCksIGpzVGVzdEFjdGl2
ZURPTU9iamVjdCk7CiAgICAganNUZXN0QWN0aXZlRE9NT2JqZWN0LT5yZWxlYXNlSW1wbCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGJiYmVlZTUuLjUwODU3Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTc2LDE1ICs3NiwxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdEFjdGl2ZURPTU9iamVjdCopCitpbmxpbmUgSlND
OjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqLCBUZXN0QWN0
aXZlRE9NT2JqZWN0KikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTVGVzdEFjdGl2ZURP
TU9iamVjdE93bmVyLCBqc1Rlc3RBY3RpdmVET01PYmplY3RPd25lciwgKCkpOwogICAgIHJldHVy
biAmanNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI7CiB9CiAKLWlubGluZSB2b2lkKiB3cmFwcGVy
Q29udGV4dChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBUZXN0QWN0aXZlRE9NT2JqZWN0KikKK2lu
bGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0QWN0
aXZlRE9NT2JqZWN0KikKIHsKLSAgICByZXR1cm4gJndvcmxkOworICAgIHJldHVybiB3b3JsZDsK
IH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCosIFRlc3RBY3RpdmVET01PYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwCmluZGV4IGM5ODNkMWUuLmVkOTRmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
CiB2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKiBqc1Rlc3RDdXN0b21OYW1lZEdldHRlciA9IGpzQ2FzdDxKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAg
ICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4o
Y29udGV4dCk7CiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLT5pbXBsKCksIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsKICAgICBqc1Rlc3RDdXN0b21O
YW1lZEdldHRlci0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmgKaW5kZXggMzc1MGUwNS4uNzNiZjUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmgKQEAgLTgwLDE1ICs4MCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAot
aW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxk
JiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKikKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciog
d3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIFRlc3RDdXN0b21OYW1lZEdldHRlciopCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyLCBq
c1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyLCAoKSk7CiAgICAgcmV0dXJuICZqc1Rlc3RDdXN0
b21OYW1lZEdldHRlck93bmVyOwogfQogCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKikKK2lubGluZSB2b2lk
KiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqKQogewotICAgIHJldHVybiAmd29ybGQ7CisgICAgcmV0dXJuIHdvcmxkOwogfQogCiBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNTMxOTJiNy4uZTE0NGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVuCiB2b2lkIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cioganNUZXN0RXZlbnRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+aW1wbCgpLCBq
c1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKICAgICBqc1Rlc3RFdmVudENvbnN0cnVjdG9yLT5yZWxl
YXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggMGYzMTQw
Ni4uZjUxNjFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC03OCwxNSAr
NzgsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKLWlubGluZSBKU0M6OldlYWtIYW5k
bGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RFdmVudENvbnN0cnVj
dG9yKikKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBw
ZXJXb3JsZCosIFRlc3RFdmVudENvbnN0cnVjdG9yKikKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEpTVGVzdEV2ZW50Q29uc3RydWN0b3JPd25lciwganNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93
bmVyLCAoKSk7CiAgICAgcmV0dXJuICZqc1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI7CiB9CiAK
LWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBUZXN0
RXZlbnRDb25zdHJ1Y3RvciopCitpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCwgVGVzdEV2ZW50Q29uc3RydWN0b3IqKQogewotICAgIHJldHVybiAmd29y
bGQ7CisgICAgcmV0dXJuIHdvcmxkOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEV2ZW50Q29uc3RydWN0b3IqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDEzNmE3ZDQuLjljMmNhYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXRP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
CiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTVGVzdEV2ZW50VGFyZ2V0
KiBqc1Rlc3RFdmVudFRhcmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5n
ZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxk
ID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CiAgICAgdW5jYWNoZVdy
YXBwZXIod29ybGQsIGpzVGVzdEV2ZW50VGFyZ2V0LT5pbXBsKCksIGpzVGVzdEV2ZW50VGFyZ2V0
KTsKICAgICBqc1Rlc3RFdmVudFRhcmdldC0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmgKaW5kZXggNTNlMjExNy4uMWExMGYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgK
QEAgLTg1LDE1ICs4NSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5lIEpT
Qzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdEV2
ZW50VGFyZ2V0KikKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERP
TVdyYXBwZXJXb3JsZCosIFRlc3RFdmVudFRhcmdldCopCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChKU1Rlc3RFdmVudFRhcmdldE93bmVyLCBqc1Rlc3RFdmVudFRhcmdldE93bmVyLCAoKSk7
CiAgICAgcmV0dXJuICZqc1Rlc3RFdmVudFRhcmdldE93bmVyOwogfQogCi1pbmxpbmUgdm9pZCog
d3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgVGVzdEV2ZW50VGFyZ2V0KikK
K2lubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0
RXZlbnRUYXJnZXQqKQogewotICAgIHJldHVybiAmd29ybGQ7CisgICAgcmV0dXJuIHdvcmxkOwog
fQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgVGVzdEV2ZW50VGFyZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDQzOWM4MDgu
LjFkNTlkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYm9v
bCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPgogdm9pZCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
SlNUZXN0RXhjZXB0aW9uKiBqc1Rlc3RFeGNlcHRpb24gPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9u
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNUZXN0RXhjZXB0aW9uLT5pbXBsKCksIGpzVGVzdEV4
Y2VwdGlvbik7CiAgICAganNUZXN0RXhjZXB0aW9uLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4
Y2VwdGlvbi5oCmluZGV4IGNiNDBkMzQuLjNjNjg1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKQEAg
LTc2LDE1ICs3NiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5lIEpTQzo6
V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdEV4Y2Vw
dGlvbiopCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQqLCBUZXN0RXhjZXB0aW9uKikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpT
VGVzdEV4Y2VwdGlvbk93bmVyLCBqc1Rlc3RFeGNlcHRpb25Pd25lciwgKCkpOwogICAgIHJldHVy
biAmanNUZXN0RXhjZXB0aW9uT3duZXI7CiB9CiAKLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4
dChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBUZXN0RXhjZXB0aW9uKikKK2lubGluZSB2b2lkKiB3
cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0RXhjZXB0aW9uKikKIHsK
LSAgICByZXR1cm4gJndvcmxkOworICAgIHJldHVybiB3b3JsZDsKIH0KIAogSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RFeGNlcHRpb24q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZTJhMDc5Mi4uMjczZTliNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKQEAgLTcyMSw3ICs3MjEsNyBAQCBib29sIEpTVGVzdEludGVyZmFjZU93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
CiB2b2lkIEpTVGVzdEludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGpz
VGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUuZ2V0KCkuYXND
ZWxsKCkpOwotICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3Jh
cHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCBqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0SW50ZXJmYWNlKTsKICAgICBqc1Rl
c3RJbnRlcmZhY2UtPnJlbGVhc2VJbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggNDRh
NjY1Mi4uYWQzNTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApAQCAtMTAzLDE1ICsxMDMsMTUgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciog
d3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RJbnRlcmZhY2UqKQoraW5saW5lIEpT
Qzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgVGVzdElu
dGVyZmFjZSopCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU1Rlc3RJbnRlcmZhY2VPd25l
ciwganNUZXN0SW50ZXJmYWNlT3duZXIsICgpKTsKICAgICByZXR1cm4gJmpzVGVzdEludGVyZmFj
ZU93bmVyOwogfQogCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgVGVzdEludGVyZmFjZSopCitpbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgVGVzdEludGVyZmFjZSopCiB7Ci0gICAgcmV0dXJuICZ3b3Js
ZDsKKyAgICByZXR1cm4gd29ybGQ7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0SW50ZXJmYWNlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggNGVhYzI5NC4uYWJjNTYzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTc1
LDcgKzE3NSw3IEBAIGJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKCiB2b2lkIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cioganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29y
bGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAg
IERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKICAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci0+aW1wbCgpLCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKICAgICBqc1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggOThhZDEwMi4uZTJiYmM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC03NiwxNSArNzYs
MTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKLWlubGluZSBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKikKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdy
YXBwZXJXb3JsZCosIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKikKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lciwganNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lck93bmVyLCAoKSk7CiAgICAgcmV0dXJuICZqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyT3duZXI7CiB9CiAKLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciopCitpbmxp
bmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqKQogewotICAgIHJldHVybiAmd29ybGQ7CisgICAgcmV0dXJuIHdv
cmxkOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAppbmRleCBmY2VlY2Q1Li40ZDljNWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW4KIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKICAgICBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yKiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVz
dE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAgIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3Js
ZCo+KGNvbnRleHQpOwogICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCBqc1Rlc3ROYW1lZENvbnN0
cnVjdG9yLT5pbXBsKCksIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IpOwogICAgIGpzVGVzdE5hbWVk
Q29uc3RydWN0b3ItPnJlbGVhc2VJbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0
b3IuaAppbmRleCBmZTQzZjNmLi4zNDZlN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmgKQEAgLTc4LDE1ICs3OCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAotaW5s
aW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwg
VGVzdE5hbWVkQ29uc3RydWN0b3IqKQoraW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFw
cGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgVGVzdE5hbWVkQ29uc3RydWN0b3IqKQogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyLCBqc1Rlc3RO
YW1lZENvbnN0cnVjdG9yT3duZXIsICgpKTsKICAgICByZXR1cm4gJmpzVGVzdE5hbWVkQ29uc3Ry
dWN0b3JPd25lcjsKIH0KIAotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsIFRlc3ROYW1lZENvbnN0cnVjdG9yKikKK2lubGluZSB2b2lkKiB3cmFwcGVy
Q29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0TmFtZWRDb25zdHJ1Y3RvciopCiB7
Ci0gICAgcmV0dXJuICZ3b3JsZDsKKyAgICByZXR1cm4gd29ybGQ7CiB9CiAKIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TmFtZWRDb25z
dHJ1Y3RvciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA0NzlhYTVkLi5jYjU5NDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApA
QCAtMTUyLDEzICsxNTIsMTEgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alRhYmxlVmFsdWVzW10gPQogICAgIHsgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIiwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSks
IChpbnRwdHJfdCkwIH0sCiAgICAgeyAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiLCBE
b250RGVsZXRlLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSks
IChpbnRwdHJfdClzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSB9LAog
ICAgIHsgIm51bGxhYmxlU3RyaW5nVmFsdWUiLCBEb250RGVsZXRlLCBOb0ludHJpbnNpYywgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpO
dWxsYWJsZVN0cmluZ1ZhbHVlKSwgKGludHB0cl90KXNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5n
VmFsdWUgfSwKLSAgICB7ICJhdHRyaWJ1dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50
cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9iakF0dHJpYnV0ZSksIChpbnRwdHJfdCkwIH0sCi0gICAgeyAiYXR0cmlidXRlV2l0
aFJlc2VydmVkRW51bVR5cGUiLCBEb250RGVsZXRlLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpBdHRyaWJ1dGVX
aXRoUmVzZXJ2ZWRFbnVtVHlwZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRo
UmVzZXJ2ZWRFbnVtVHlwZSB9LAogICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFk
T25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpMCB9LAogICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RPYmpUYWJsZSA9IHsgMjY2LCAyNTUsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07Citz
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyAyNjUsIDI1NSwgSlNUZXN0
T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFs
dWVzW10gPQpAQCAtMTc4LDcgKzE3Niw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsgIkNPTlNUX1ZBTFVFXzEz
IiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMyks
IChpbnRwdHJfdCkwIH0sCiAgICAgeyAiQ09OU1RfVkFMVUVfMTQiLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNPTlNUX1ZBTFVFXzE0KSwgKGludHB0cl90KTAgfSwKICAg
ICB7ICJDT05TVF9KQVZBU0NSSVBUIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNp
YywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpDT05TVF9KQVZBU0NSSVBUKSwgKGludHB0cl90KTAgfSwKLSAgICB7ICJyZWFkb25seSIs
IERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVhZG9ubHkpLCAoaW50cHRy
X3QpMCB9LAogICAgIHsgInN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIiLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0ciks
IChpbnRwdHJfdCkwIH0sCiAgICAgeyAic3RhdGljU3RyaW5nQXR0ciIsIERvbnREZWxldGUsIE5v
SW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0ciksIChpbnRwdHJfdClzZXRK
U1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIgfSwKICAgICB7ICJUZXN0U3ViT2Jq
IiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RT
dWJPYmopLCAoaW50cHRyX3QpMCB9LApAQCAtMTkzLDcgKzE5MCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlID0geyAzOSwgMzEsIEpTVGVzdE9iakNvbnN0cnVjdG9y
VGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqQ29uc3Ry
dWN0b3JUYWJsZSA9IHsgMzgsIDMxLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAw
IH07CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIENPTVBJTEVfQVNTRVJUKDAgPT0gVGVzdE9i
ajo6Q09ORElUSU9OQUxfQ09OU1QsIFRlc3RPYmpFbnVtQ09ORElUSU9OQUxfQ09OU1RJc1dyb25n
VXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CkBAIC0yMTAsNyArMjA3LDYgQEAgQ09NUElMRV9BU1NF
UlQoMHgwMSA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xMiwgVGVzdE9iakVudW1DT05TVF9WQUxV
RV8xMklzV3JvbmcKIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVf
MTMsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50
cyk7CiBDT01QSUxFX0FTU0VSVCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRl
c3RPYmpFbnVtQ09OU1RfVkFMVUVfMTRJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7CiBD
T01QSUxFX0FTU0VSVCgxNSA9PSBUZXN0T2JqOjpDT05TVF9JTVBMLCBUZXN0T2JqRW51bUNPTlNU
X0lNUExJc1dyb25nVXNlRG9Ob3RDaGVja0NvbnN0YW50cyk7Ci1DT01QSUxFX0FTU0VSVCgwID09
IFRlc3RPYmo6OnJlYWRvbmx5LCBUZXN0T2JqRW51bXJlYWRvbmx5SXNXcm9uZ1VzZURvTm90Q2hl
Y2tDb25zdGFudHMpOwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNv
bnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPYmooRXhlY1N0YXRlKiBleGVjKQogewpAQCAtMjY5
LDcgKzI2NSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJDT05TVF9WQUxVRV8xMyIsIERvbnREZWxldGUgfCBS
ZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1RfVkFMVUVfMTMpLCAoaW50cHRyX3QpMCB9LAog
ICAgIHsgIkNPTlNUX1ZBTFVFXzE0IiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNp
YywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpDT05TVF9WQUxVRV8xNCksIChpbnRwdHJfdCkwIH0sCiAgICAgeyAiQ09OU1RfSkFWQVND
UklQVCIsIERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1RfSkFWQVND
UklQVCksIChpbnRwdHJfdCkwIH0sCi0gICAgeyAicmVhZG9ubHkiLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlYWRvbmx5KSwgKGludHB0cl90KTAgfSwKICAgICB7ICJ2
b2lkTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZCksIChpbnRwdHJfdCkwIH0sCiAgICAgeyAidm9pZE1ldGhvZFdpdGhBcmdz
IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1l
dGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMgfSwKICAgICB7ICJieXRlTWV0aG9kIiwgRG9udERl
bGV0ZSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZCksIChp
bnRwdHJfdCkwIH0sCkBAIC0zMzcsNyArMzMyLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgInZhcmlhZGljU3Ry
aW5nTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpLCAoaW50cHRyX3QpMiB9LAogICAgIHsgInZhcmlhZGlj
RG91YmxlTWV0aG9kIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QpLCAoaW50cHRyX3QpMiB9LAogICAgIHsgInZhcmlh
ZGljTm9kZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCksIChpbnRwdHJfdCkyIH0sCi0gICAgeyAiYW55Iiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KSwgKGlu
dHB0cl90KTIgfSwKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH0KIH07CiAKQEAgLTEw
ODcsMjYgKzEwODEsNiBAQCBKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eQogfQogCiAKLUpTVmFsdWUg
anNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJv
cGVydHlOYW1lKQotewotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICBU
ZXN0T2JqKiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC0+YXR0cmlidXRlKCkpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLQotSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKLXsK
LSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qo
c2xvdEJhc2UpKTsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgVGVzdE9iaiogaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKGV4ZWMsIGltcGwtPmF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKCkpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLQogSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGRvbU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpA
QCAtMTc1MCwyMCArMTcyNCw2IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhCiB9CiAKIAotdm9p
ZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKLSAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc09iamVjdCk7Ci0gICAgVGVzdE9iaiogaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
LSAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChuYXRpdmVWYWx1ZSAhPSAiIiAm
JiBuYXRpdmVWYWx1ZSAhPSAiT3B0aW9uYWxWYWx1ZTEiICYmIG5hdGl2ZVZhbHVlICE9ICJPcHRp
b25hbFZhbHVlMiIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFsVmFsdWUzIikKLSAgICAgICAg
cmV0dXJuOwotICAgIGltcGwtPnNldEF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKG5hdGl2
ZVZhbHVlKTsKLX0KLQotCiBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Db25z
dHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwpAQCAtMzE4MiwyNiArMzE0Miw2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRo
b2QoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkFueShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5o
b3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoSlNUZXN0T2JqOjpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgVGVzdE9iaiogaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgZmxvYXQg
YShleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgaW50IGIodG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgTm9ybWFsQ29udmVy
c2lvbikpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLT5hbnkoYSwgYik7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQogdm9pZCBKU1Rlc3RP
Ymo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBKU1Rlc3RPYmoqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oY2VsbCk7CkBA
IC0zMjk0LDEyICszMjM0LDYgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9KQVZBU0NSSVBUKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogICAgIHJldHVybiBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQ+KDE1KSk7CiB9CiAKLUpTVmFsdWUganNUZXN0T2JqUmVhZG9ubHko
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwotICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KDApKTsKLX0K
LQogc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RPYmoqIGpzVGVzdE9iaikK
IHsKICAgICBpZiAoanNUZXN0T2JqLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCkBAIC0zMzE5LDcg
KzMyNTMsNyBAQCBib29sIEpTVGVzdE9iak93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZQogdm9pZCBKU1Rlc3RPYmpPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
CiB7CiAgICAgSlNUZXN0T2JqKiBqc1Rlc3RPYmogPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oaGFuZGxl
LmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwganNUZXN0T2JqLT5pbXBsKCksIGpzVGVzdE9iaik7CiAgICAganNUZXN0
T2JqLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDU1NGJmZGYuLmViNmZlOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmgKQEAgLTkwLDE1ICs5MCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5l
IEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVz
dE9iaiopCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQqLCBUZXN0T2JqKikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTVGVzdE9i
ak93bmVyLCBqc1Rlc3RPYmpPd25lciwgKCkpOwogICAgIHJldHVybiAmanNUZXN0T2JqT3duZXI7
CiB9CiAKLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBUZXN0T2JqKikKK2lubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQq
IHdvcmxkLCBUZXN0T2JqKikKIHsKLSAgICByZXR1cm4gJndvcmxkOworICAgIHJldHVybiB3b3Js
ZDsKIH0KIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFRlc3RPYmoqKTsKQEAgLTIzMSw3ICsyMzEsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldp
dGhBcgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljRG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2Qo
SlNDOjpFeGVjU3RhdGUqKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShKU0M6OkV4ZWNTdGF0ZSopOwogLy8gQXR0cmlidXRl
cwogCiBKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMzY0LDkgKzM2Myw2IEBA
IEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1CiB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1Nl
dHRhYmxlQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNW
YWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogdm9pZCBzZXRKU1Rl
c3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6SlNWYWx1ZSk7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1KU0M6OkpTVmFsdWUg
anNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLXZvaWQgc2V0SlNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogLy8gQ29uc3RhbnRz
CiAKQEAgLTM4NSw3ICszODEsNiBAQCBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVf
MTIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydAogSlNDOjpKU1Zh
bHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzEzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ09OU1RfVkFMVUVf
MTQoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIEpT
Qzo6SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9KQVZBU0NSSVBUKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1KU0M6OkpTVmFsdWUganNUZXN0T2JqUmVh
ZG9ubHkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNjlmMzAxZS4uODMzMGRkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIGJv
b2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKCiB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
bnRleHQpCiB7CiAgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyoganNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy0+aW1wbCgp
LCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKICAgICBqc1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgKaW5kZXggN2JiMDZlOS4uNTg0NTI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC03NiwxNSArNzYsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0KTsKIH07CiAKLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikKK2lubGlu
ZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCosIFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lciwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc093bmVyLCAoKSk7CiAgICAgcmV0dXJuICZqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
T3duZXI7CiB9CiAKLWlubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQm
IHdvcmxkLCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyopCitpbmxpbmUgdm9pZCogd3JhcHBl
ckNvbnRleHQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqKQogewotICAgIHJldHVybiAmd29ybGQ7CisgICAgcmV0dXJuIHdvcmxkOwogfQogCiBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggZmEwNGFiYy4uYzQ5MWVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Ogogdm9pZCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLT5pbXBsKCksIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk7CiAgICAg
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLT5yZWxlYXNlSW1wbCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
CmluZGV4IGM1OTc4ZjUuLjM5OTk3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTgzLDE1ICs4MywxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSopCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVy
V29ybGQqLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKikKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU93bmVy
LCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lciwgKCkpOwogICAgIHJl
dHVybiAmanNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlT3duZXI7CiB9CiAKLWlu
bGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKikKK2lubGluZSB2b2lkKiB3cmFwcGVyQ29udGV4
dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKikKIHsKLSAgICByZXR1cm4gJndvcmxkOworICAgIHJldHVybiB3b3JsZDsKIH0KIAogSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4
IDk2NjQzOTUuLjBkYjk5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtNTc4LDcgKzU3OCw3
IEBAIGJvb2wgSlNUZXN0VHlwZWRlZnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoCiB2b2lkIEpTVGVzdFR5cGVkZWZzT3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQog
ewogICAgIEpTVGVzdFR5cGVkZWZzKiBqc1Rlc3RUeXBlZGVmcyA9IGpzQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICBET01XcmFw
cGVyV29ybGQqIHdvcmxkID0gc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsIGpzVGVzdFR5cGVkZWZzLT5pbXBsKCksIGpzVGVz
dFR5cGVkZWZzKTsKICAgICBqc1Rlc3RUeXBlZGVmcy0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmgKaW5kZXggZDY5MWE4Yi4uMmRmODJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKQEAgLTc3
LDE1ICs3NywxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5lIEpTQzo6V2Vh
a0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdFR5cGVkZWZz
KikKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJX
b3JsZCosIFRlc3RUeXBlZGVmcyopCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU1Rlc3RU
eXBlZGVmc093bmVyLCBqc1Rlc3RUeXBlZGVmc093bmVyLCAoKSk7CiAgICAgcmV0dXJuICZqc1Rl
c3RUeXBlZGVmc093bmVyOwogfQogCi1pbmxpbmUgdm9pZCogd3JhcHBlckNvbnRleHQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgVGVzdFR5cGVkZWZzKikKK2lubGluZSB2b2lkKiB3cmFwcGVyQ29u
dGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0VHlwZWRlZnMqKQogewotICAgIHJldHVy
biAmd29ybGQ7CisgICAgcmV0dXJuIHdvcmxkOwogfQogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdFR5cGVkZWZzKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAzN2NmYi4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0K
LSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTYXR0cmlidXRlLmgiCi0KLSNpbmNs
dWRlICJVUkwuaCIKLSNpbmNsdWRlICJhdHRyaWJ1dGUuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pT
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgSlND
OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8qIEhhc2ggdGFibGUgKi8KLQotc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTYXR0cmlidXRlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAi
cmVhZG9ubHkiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzYXR0cmlidXRlUmVhZG9u
bHkpLCAoaW50cHRyX3QpMCB9LAotICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFk
T25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNhdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkwIH0sCi0gICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgMCwgMCB9Ci19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTYXR0cmlidXRlVGFibGUgPSB7IDQsIDMsIEpTYXR0cmlidXRlVGFibGVWYWx1ZXMsIDAgfTsK
LS8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAw
LCAwLCBOb0ludHJpbnNpYywgMCwgMCB9Ci19OwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
YXR0cmlidXRlQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNhdHRyaWJ1dGVDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNhdHRyaWJ1dGVDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiYXR0cmlidXRlQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNh
dHRyaWJ1dGVDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTYXR0cmli
dXRlQ29uc3RydWN0b3IpIH07Ci0KLUpTYXR0cmlidXRlQ29uc3RydWN0b3I6OkpTYXR0cmlidXRl
Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi0gICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLXsKLX0KLQotdm9pZCBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNhdHRyaWJ1dGVQcm90
b3R5cGU6OnNlbGYodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7Ci0g
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBS
ZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Ci19Ci0KLWJvb2wgSlNhdHRyaWJ1dGVD
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQot
ewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvciwg
SlNET01XcmFwcGVyPihleGVjLCBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxK
U2F0dHJpYnV0ZUNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKLX0K
LQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU2F0dHJpYnV0ZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIDAsIDAgfQotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU2F0
dHJpYnV0ZVByb3RvdHlwZVRhYmxlID0geyAxLCAwLCBKU2F0dHJpYnV0ZVByb3RvdHlwZVRhYmxl
VmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNhdHRyaWJ1dGVQcm90b3R5cGU6OnNfaW5m
byA9IHsgImF0dHJpYnV0ZVByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZKU2F0dHJpYnV0ZVBy
b3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTYXR0cmlidXRlUHJvdG90eXBl
KSB9OwotCi1KU09iamVjdCogSlNhdHRyaWJ1dGVQcm90b3R5cGU6OnNlbGYoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNhdHRyaWJ1dGU+KHZtLCBnbG9iYWxPYmplY3QpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNh
dHRyaWJ1dGU6OnNfaW5mbyA9IHsgImF0dHJpYnV0ZSIsICZCYXNlOjpzX2luZm8sICZKU2F0dHJp
YnV0ZVRhYmxlLCAwICwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU2F0dHJpYnV0ZSkgfTsKLQotSlNh
dHRyaWJ1dGU6OkpTYXR0cmlidXRlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPGF0dHJpYnV0ZT4gaW1wbCkKLSAgICA6IEpT
RE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW1wbChpbXBsLmxl
YWtSZWYoKSkKLXsKLX0KLQotdm9pZCBKU2F0dHJpYnV0ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU2F0dHJpYnV0ZTo6Y3JlYXRlUHJvdG90eXBlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gSlNhdHRy
aWJ1dGVQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBKU2F0dHJpYnV0ZVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZXJy
b3JQcm90b3R5cGUoKSkpOwotfQotCi12b2lkIEpTYXR0cmlidXRlOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQotewotICAgIEpTYXR0cmlidXRlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNhdHRyaWJ1dGUqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU2F0dHJpYnV0ZTo6fkpTYXR0
cmlidXRlKCk7Ci19Ci0KLUpTYXR0cmlidXRlOjp+SlNhdHRyaWJ1dGUoKQotewotICAgIHJlbGVh
c2VJbXBsSWZOb3ROdWxsKCk7Ci19Ci0KLWJvb2wgSlNhdHRyaWJ1dGU6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBKU2F0dHJpYnV0ZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU2F0dHJpYnV0ZSo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNhdHRyaWJ1dGUsIEJhc2U+KGV4ZWMsIEpTYXR0cmlidXRlVGFibGUsIHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25s
eShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKLXsKLSAg
ICBKU2F0dHJpYnV0ZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU2F0dHJpYnV0ZSo+KGFzT2JqZWN0
KHNsb3RCYXNlKSk7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAgIGF0dHJpYnV0ZSogaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKGV4ZWMsIGltcGwtPnJlYWRvbmx5KCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LQotSlNWYWx1ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQotewotICAgIEpTYXR0cmlidXRlKiBkb21PYmplY3Qg
PSBqc0Nhc3Q8SlNhdHRyaWJ1dGUqPihhc09iamVjdChzbG90QmFzZSkpOwotICAgIHJldHVybiBK
U2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSk7Ci19Ci0KLUpTVmFsdWUgSlNhdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZh
YmxlKEpTYXR0cmlidXRlKiBqc2F0dHJpYnV0ZSkKLXsKLSAgICBpZiAoanNhdHRyaWJ1dGUtPmhh
c0N1c3RvbVByb3BlcnRpZXMoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIEpTYXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCi17Ci0gICAgSlNhdHRyaWJ1dGUqIGpzYXR0cmlidXRlID0ganNDYXN0PEpTYXR0
cmlidXRlKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBpZiAoIWlzT2JzZXJ2YWJsZShq
c2F0dHJpYnV0ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTYXR0cmlidXRlT3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQot
ewotICAgIEpTYXR0cmlidXRlKiBqc2F0dHJpYnV0ZSA9IGpzQ2FzdDxKU2F0dHJpYnV0ZSo+KGhh
bmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCBqc2F0dHJpYnV0ZS0+aW1wbCgpLCBqc2F0dHJpYnV0ZSk7Ci0gICAganNhdHRyaWJ1dGUt
PnJlbGVhc2VJbXBsKCk7Ci19Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYg
UExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMi
IHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdhdHRyaWJ1dGVAV2ViQ29y
ZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43
V2ViQ29yZTlhdHRyaWJ1dGVFW107IH0KLSNlbmRpZgotI2VuZGlmCi1KU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
YXR0cmlidXRlKiBpbXBsKQotewotICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwotICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU2F0dHJp
YnV0ZT4oZXhlYywgaW1wbCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSNpZiBFTkFCTEUo
QklORElOR19JTlRFR1JJVFkpCi0gICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KGltcGwpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9p
ZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVu
dGlmaWVyKCI/P183YXR0cmlidXRlQFdlYkNvcmVAQDZCQCIpKTsKLSNlbHNlCi0gICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmU5YXR0cmlidXRlRVsyXTsKLSNp
ZiBDT01QSUxFUihDTEFORykKLSAgICAvLyBJZiB0aGlzIGZhaWxzIGF0dHJpYnV0ZSBkb2VzIG5v
dCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCi0g
ICAgQ09NUElMRV9BU1NFUlQoX19pc19wb2x5bW9ycGhpYyhhdHRyaWJ1dGUpLCBhdHRyaWJ1dGVf
aXNfbm90X3BvbHltb3JwaGljKTsKLSNlbmRpZgotI2VuZGlmCi0gICAgLy8gSWYgeW91IGhpdCB0
aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0g
ICAgLy8gYXR0cmlidXRlIGhhcyBzdWJjbGFzc2VzLiBJZiBhdHRyaWJ1dGUgaGFzIHN1YmNsYXNz
ZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJl
IGF0dHJpYnV0ZSB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwotICAgIC8vIGJ5
IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZh
Y2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVy
ID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYKLSAgICBSZXBvcnRNZW1vcnlDb3N0
PGF0dHJpYnV0ZT46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywgaW1wbCk7Ci0gICAgcmV0dXJuIGNy
ZWF0ZU5ld1dyYXBwZXI8SlNhdHRyaWJ1dGU+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19
Ci0KLWF0dHJpYnV0ZSogdG9hdHRyaWJ1dGUoSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIHJl
dHVybiB2YWx1ZS5pbmhlcml0cyhKU2F0dHJpYnV0ZTo6aW5mbygpKSA/IGpzQ2FzdDxKU2F0dHJp
YnV0ZSo+KGFzT2JqZWN0KHZhbHVlKSktPmltcGwoKSA6IDA7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYzI5ODYuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDcgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVm
IEpTYXR0cmlidXRlX2gKLSNkZWZpbmUgSlNhdHRyaWJ1dGVfaAotCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCi0jaW5jbHVkZSAiYXR0cmlidXRlLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJv
clByb3RvdHlwZS5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KLSNpbmNs
dWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SlNhdHRyaWJ1dGUgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IEpTRE9NV3JhcHBlciBCYXNlOwotICAgIHN0YXRpYyBKU2F0dHJpYnV0ZSogY3JlYXRlKEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBh
c3NSZWZQdHI8YXR0cmlidXRlPiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNhdHRyaWJ1dGUqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNhdHRyaWJ1dGU+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNhdHRyaWJ1dGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGlt
cGwpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0g
ICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNy
ZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTYXR0cmlidXRlKCk7Ci0gICAgREVDTEFS
RV9JTkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0g
ICAgYXR0cmlidXRlKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsOyB9Ci0gICAgdm9pZCBy
ZWxlYXNlSW1wbCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9Ci0KLSAgICB2b2lk
IHJlbGVhc2VJbXBsSWZOb3ROdWxsKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgICAgIG1faW1wbC0+ZGVyZWYoKTsKLSAgICAgICAgICAgIG1faW1wbCA9IDA7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgYXR0cmlidXRlKiBtX2ltcGw7Ci1wcm90ZWN0
ZWQ6Ci0gICAgSlNhdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFBhc3NSZWZQdHI8YXR0cmlidXRlPik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
Jik7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
LX07Ci0KLWNsYXNzIEpTYXR0cmlidXRlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkKiwgYXR0cmlidXRlKikKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEpTYXR0cmlidXRlT3duZXIsIGpzYXR0cmlidXRlT3duZXIsICgpKTsKLSAg
ICByZXR1cm4gJmpzYXR0cmlidXRlT3duZXI7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyQ29u
dGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBhdHRyaWJ1dGUqKQotewotICAgIHJldHVybiB3
b3JsZDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIGF0dHJpYnV0ZSopOwotYXR0cmlidXRlKiB0b2F0dHJpYnV0ZShKU0M6OkpTVmFs
dWUpOwotCi1jbGFzcyBKU2F0dHJpYnV0ZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJh
c2U7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKLSAgICBzdGF0aWMgSlNhdHRyaWJ1dGVQcm90b3R5cGUqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgSlNhdHRyaWJ1dGVQcm90b3R5cGUqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNhdHRyaWJ1dGVQcm90b3R5cGU+KHZt
LmhlYXApKSBKU2F0dHJpYnV0ZVByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsK
LSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgSlNhdHRyaWJ1dGVQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKSB7IH0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLX07Ci0KLWNs
YXNzIEpTYXR0cmlidXRlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qg
ewotcHJpdmF0ZToKLSAgICBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCopOwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rv
ck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKiBjcmVhdGUo
SlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTYXR0cmlidXRlQ29uc3RydWN0
b3I+KHZtLmhlYXApKSBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKLSAg
ICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUs
IEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci19
OwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6SlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1KU0M6OkpT
VmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTMwZGY1Li4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRv
bmx5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi0vKgotICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU3JlYWRvbmx5LmgiCi0K
LSNpbmNsdWRlICJyZWFkb25seS5oIgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vKiBIYXNoIHRhYmxlICov
Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU3JlYWRvbmx5VGFibGVWYWx1ZXNbXSA9
Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCBOb0ludHJpbnNp
YywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc3Jl
YWRvbmx5Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpMCB9LAotICAgIHsgMCwgMCwgTm9JbnRyaW5z
aWMsIDAsIDAgfQotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU3JlYWRvbmx5VGFibGUg
PSB7IDIsIDEsIEpTcmVhZG9ubHlUYWJsZVZhbHVlcywgMCB9OwotLyogSGFzaCB0YWJsZSBmb3Ig
Y29uc3RydWN0b3IgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTcmVhZG9ubHlD
b25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQotewotICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAs
IDAgfQotfTsKLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU3JlYWRvbmx5Q29uc3RydWN0b3JU
YWJsZSA9IHsgMSwgMCwgSlNyZWFkb25seUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNv
bnN0IENsYXNzSW5mbyBKU3JlYWRvbmx5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgInJlYWRvbmx5
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNyZWFkb25seUNvbnN0cnVjdG9yVGFibGUs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNyZWFkb25seUNvbnN0cnVjdG9yKSB9OwotCi1KU3Jl
YWRvbmx5Q29uc3RydWN0b3I6OkpTcmVhZG9ubHlDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IERPTUNvbnN0cnVj
dG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotewotfQotCi12b2lkIEpTcmVhZG9u
bHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTcmVhZG9ubHlQcm90b3R5cGU6OnNlbGYodm0sIGdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51
bSk7Ci19Ci0KLWJvb2wgSlNyZWFkb25seUNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xv
dDxKU3JlYWRvbmx5Q29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgSlNyZWFkb25seUNv
bnN0cnVjdG9yVGFibGUsIGpzQ2FzdDxKU3JlYWRvbmx5Q29uc3RydWN0b3IqPihvYmplY3QpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8K
LQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTcmVhZG9ubHlQcm90b3R5cGVUYWJsZVZh
bHVlc1tdID0KLXsKLSAgICB7IDAsIDAsIE5vSW50cmluc2ljLCAwLCAwIH0KLX07Ci0KLXN0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNyZWFkb25seVByb3RvdHlwZVRhYmxlID0geyAxLCAwLCBKU3Jl
YWRvbmx5UHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU3JlYWRv
bmx5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJyZWFkb25seVByb3RvdHlwZSIsICZCYXNlOjpzX2lu
Zm8sICZKU3JlYWRvbmx5UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNy
ZWFkb25seVByb3RvdHlwZSkgfTsKLQotSlNPYmplY3QqIEpTcmVhZG9ubHlQcm90b3R5cGU6OnNl
bGYoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8SlNyZWFkb25seT4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLWNvbnN0
IENsYXNzSW5mbyBKU3JlYWRvbmx5OjpzX2luZm8gPSB7ICJyZWFkb25seSIsICZCYXNlOjpzX2lu
Zm8sICZKU3JlYWRvbmx5VGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTcmVhZG9ubHkp
IH07Ci0KLUpTcmVhZG9ubHk6OkpTcmVhZG9ubHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8cmVhZG9ubHk+IGltcGwpCi0g
ICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgLCBtX2ltcGwo
aW1wbC5sZWFrUmVmKCkpCi17Ci19Ci0KLXZvaWQgSlNyZWFkb25seTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU3JlYWRvbmx5OjpjcmVhdGVQcm90b3R5
cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBK
U3JlYWRvbmx5UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNyZWFkb25seVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotdm9pZCBKU3JlYWRvbmx5OjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQotewotICAgIEpTcmVhZG9ubHkqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU3JlYWRvbmx5Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNyZWFkb25seTo6fkpTcmVh
ZG9ubHkoKTsKLX0KLQotSlNyZWFkb25seTo6fkpTcmVhZG9ubHkoKQotewotICAgIHJlbGVhc2VJ
bXBsSWZOb3ROdWxsKCk7Ci19Ci0KLWJvb2wgSlNyZWFkb25seTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIEpTcmVhZG9ubHkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNyZWFkb25seSo+KG9iamVjdCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8
SlNyZWFkb25seSwgQmFzZT4oZXhlYywgSlNyZWFkb25seVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlIGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBKU3Jl
YWRvbmx5KiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNyZWFkb25seSo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7Ci0gICAgcmV0dXJuIEpTcmVhZG9ubHk6OmdldENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpOwotfQotCi1KU1ZhbHVlIEpTcmVhZG9ubHk6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNyZWFkb25seUNvbnN0cnVjdG9yPih2bSwganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc09ic2VydmFibGUoSlNyZWFkb25seSoganNyZWFkb25seSkKLXsKLSAgICBpZiAoanNy
ZWFkb25seS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgSlNyZWFkb25seU93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIEpTcmVhZG9ubHkqIGpzcmVhZG9ubHkgPSBqc0Nh
c3Q8SlNyZWFkb25seSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Ci0gICAgaWYgKCFpc09ic2Vy
dmFibGUoanNyZWFkb25seSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBVTlVTRURfUEFS
QU0odmlzaXRvcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTcmVhZG9ubHlPd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
eHQpCi17Ci0gICAgSlNyZWFkb25seSoganNyZWFkb25seSA9IGpzQ2FzdDxKU3JlYWRvbmx5Kj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKLSAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0gc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsIGpzcmVhZG9ubHktPmltcGwoKSwganNyZWFkb25seSk7Ci0gICAganNyZWFkb25seS0+
cmVsZWFzZUltcGwoKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHJlYWRvbmx5KiBpbXBsKQotewot
ICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIGlmIChKU1ZhbHVl
IHJlc3VsdCA9IGdldEV4aXN0aW5nV3JhcHBlcjxKU3JlYWRvbmx5PihleGVjLCBpbXBsKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSNpZiBDT01QSUxFUihDTEFORykKLSAgICAvLyBJZiB5b3Ug
aGl0IHRoaXMgZmFpbHVyZSB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24gaGFzIHRoZSBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCi0gICAgLy8gYXR0cmlidXRlLiBZb3Ugc2hvdWxkIHJlbW92ZSB0
aGF0IGF0dHJpYnV0ZS4gSWYgdGhlIGNsYXNzIGhhcyBzdWJjbGFzc2VzCi0gICAgLy8gdGhhdCBt
YXkgYmUgcGFzc2VkIHRocm91Z2ggdGhpcyB0b0pTKCkgZnVuY3Rpb24geW91IHNob3VsZCB1c2Ug
dGhlIFNraXBWVGFibGVWYWxpZGF0aW9uCi0gICAgLy8gYXR0cmlidXRlIHRvIHJlYWRvbmx5Lgot
ICAgIENPTVBJTEVfQVNTRVJUKCFfX2lzX3BvbHltb3JwaGljKHJlYWRvbmx5KSwgcmVhZG9ubHlf
aXNfcG9seW1vcnBoaWNfYnV0X2lkbF9jbGFpbXNfbm90X3RvX2JlKTsKLSNlbmRpZgotICAgIFJl
cG9ydE1lbW9yeUNvc3Q8cmVhZG9ubHk+OjpyZXBvcnRNZW1vcnlDb3N0KGV4ZWMsIGltcGwpOwot
ICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTcmVhZG9ubHk+KGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW1wbCk7Ci19Ci0KLXJlYWRvbmx5KiB0b3JlYWRvbmx5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
LXsKLSAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoSlNyZWFkb25seTo6aW5mbygpKSA/IGpzQ2Fz
dDxKU3JlYWRvbmx5Kj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpIDogMDsKLX0KLQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9u
bHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5Y2UwYjMuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
Zm5kZWYgSlNyZWFkb25seV9oCi0jZGVmaW5lIEpTcmVhZG9ubHlfaAotCi0jaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0jaW5jbHVkZSAicmVhZG9ubHkuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUg
PHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xh
c3MgSlNyZWFkb25seSA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewotcHVibGljOgotICAgIHR5cGVk
ZWYgSlNET01XcmFwcGVyIEJhc2U7Ci0gICAgc3RhdGljIEpTcmVhZG9ubHkqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPHJlYWRvbmx5PiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNyZWFkb25seSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU3JlYWRvbmx5PihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTcmVhZG9ubHkoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwp
OwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAg
ICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0
ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0gICAgfkpTcmVhZG9ubHkoKTsKLSAgICBERUNMQVJFX0lO
Rk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBy
ZWFkb25seSogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQotICAgIHZvaWQgcmVsZWFz
ZUltcGwoKSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfQotCi0gICAgdm9pZCByZWxl
YXNlSW1wbElmTm90TnVsbCgpCi0gICAgewotICAgICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAg
ICAgICBtX2ltcGwtPmRlcmVmKCk7Ci0gICAgICAgICAgICBtX2ltcGwgPSAwOwotICAgICAgICB9
Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHJlYWRvbmx5KiBtX2ltcGw7Ci1wcm90ZWN0ZWQ6Ci0g
ICAgSlNyZWFkb25seShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1Jl
ZlB0cjxyZWFkb25seT4pOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci19OwotCi1j
bGFzcyBKU3JlYWRvbmx5T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVi
bGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3du
ZXIoRE9NV3JhcHBlcldvcmxkKiwgcmVhZG9ubHkqKQotewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoSlNyZWFkb25seU93bmVyLCBqc3JlYWRvbmx5T3duZXIsICgpKTsKLSAgICByZXR1cm4gJmpz
cmVhZG9ubHlPd25lcjsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJDb250ZXh0KERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIHJlYWRvbmx5KikKLXsKLSAgICByZXR1cm4gd29ybGQ7Ci19Ci0KLUpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCByZWFk
b25seSopOwotcmVhZG9ubHkqIHRvcmVhZG9ubHkoSlNDOjpKU1ZhbHVlKTsKLQotY2xhc3MgSlNy
ZWFkb25seVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewotcHVibGlj
OgotICAgIHR5cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHNlbGYoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBz
dGF0aWMgSlNyZWFkb25seVByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAg
ewotICAgICAgICBKU3JlYWRvbmx5UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTcmVhZG9ubHlQcm90b3R5cGU+KHZtLmhlYXApKSBKU3JlYWRvbmx5UHJv
dG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVf
SU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU3JlYWRv
bmx5UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkg
eyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci19OwotCi1jbGFzcyBKU3JlYWRvbmx5Q29uc3RydWN0
b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHJpdmF0ZToKLSAgICBKU3JlYWRv
bmx5Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0KLXB1
YmxpYzoKLSAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGlj
IEpTcmVhZG9ubHlDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIHsKLSAg
ICAgICAgSlNyZWFkb25seUNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTcmVhZG9ubHlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTcmVhZG9ubHlDb25z
dHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIERF
Q0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLXByb3RlY3RlZDoKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9NQ29uc3RydWN0
b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwotfTsKLQotLy8gQXR0cmlidXRlcwotCi1KU0M6OkpT
VmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmgKaW5kZXggMWNjMGJjNy4uOWM4Y2JkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaApAQCAtNjAs
OCArNjAsNyBAQCBlbnVtIHsKICAgICBET01fQ09OU1RfVkFMVUVfMTIgPSAweDAxLAogICAgIERP
TV9DT05TVF9WQUxVRV8xMyA9IDBYMjAsCiAgICAgRE9NX0NPTlNUX1ZBTFVFXzE0ID0gMHgxYWJj
LAotICAgIERPTV9DT05TVF9KQVZBU0NSSVBUID0gMTUsCi0gICAgRE9NX3JlYWRvbmx5ID0gMAor
ICAgIERPTV9DT05TVF9KQVZBU0NSSVBUID0gMTUKIH07CiAKIEBpbnRlcmZhY2UgRE9NVGVzdE9i
aiA6IERPTU9iamVjdApAQCAtMTI0LDcgKzEyMyw2IEBAIGVudW0gewogQHByb3BlcnR5KHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyAqbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGU7CiBAcHJvcGVydHkg
aW50IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlOwogQHByb3BlcnR5IGludCBudWxsYWJs
ZVN0cmluZ1ZhbHVlOwotQHByb3BlcnR5KHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqYXR0cmli
dXRlOwogCiAtICh2b2lkKXZvaWRNZXRob2Q7CiAtICh2b2lkKXZvaWRNZXRob2RXaXRoQXJnczoo
aW50KWxvbmdBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmog
KilvYmpBcmc7CkBAIC0xOTAsNyArMTg4LDYgQEAgZW51bSB7CiAtICh2b2lkKXZhcmlhZGljU3Ry
aW5nTWV0aG9kOihOU1N0cmluZyAqKWhlYWQgdGFpbDooTlNTdHJpbmcgKil0YWlsOwogLSAodm9p
ZCl2YXJpYWRpY0RvdWJsZU1ldGhvZDooZG91YmxlKWhlYWQgdGFpbDooZG91YmxlKXRhaWw7CiAt
ICh2b2lkKXZhcmlhZGljTm9kZU1ldGhvZDooRE9NTm9kZSAqKWhlYWQgdGFpbDooRE9NTm9kZSAq
KXRhaWw7Ci0tICh2b2lkKWFueTooZmxvYXQpYSBiOihpbnQpYjsKIEBlbmQKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbQppbmRleCBmMGNkNTZhLi4xYjhlNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTc5
OSwxMiArNzk5LDYgQEAKICAgICBJTVBMLT5zZXROdWxsYWJsZVN0cmluZ1ZhbHVlKG5ld051bGxh
YmxlU3RyaW5nVmFsdWUpOwogfQogCi0tIChOU1N0cmluZyAqKWF0dHJpYnV0ZQotewotICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+YXR0
cmlidXRlKCk7Ci19Ci0KIC0gKHZvaWQpdm9pZE1ldGhvZAogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTExNzAsMTIgKzExNjQsNiBAQAogICAgIElNUEwt
PnZhcmlhZGljTm9kZU1ldGhvZChjb3JlKGhlYWQpLCBjb3JlKHRhaWwpKTsKIH0KIAotLSAodm9p
ZClhbnk6KGZsb2F0KWEgYjooaW50KWIKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgSU1QTC0+YW55KGEsIGIpOwotfQotCiBAZW5kCiAKIFdlYkNvcmU6
OlRlc3RPYmoqIGNvcmUoRE9NVGVzdE9iaiAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NYXR0cmlidXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTVlZDMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NYXR0cmlidXRlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KLQotI2lmIFdFQktJVF9WRVJT
SU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAotCi1AY2xhc3MgTlNTdHJp
bmc7Ci0KLUBpbnRlcmZhY2UgRE9NYXR0cmlidXRlIDogRE9NT2JqZWN0Ci1AcHJvcGVydHkocmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpyZWFkb25seTsKLUBlbmQKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1
dGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRy
aWJ1dGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNzUzYjkuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NYXR0cmli
dXRlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKLQot
I2ltcG9ydCAiRE9NYXR0cmlidXRlLmgiCi0KLSNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgot
I2ltcG9ydCAiRE9NYXR0cmlidXRlSW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRs
ZXJzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRocmVh
ZENoZWNrLmgiCi0jaW1wb3J0ICJVUkwuaCIKLSNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgi
Ci0jaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0ICJhdHRyaWJ1dGUu
aCIKLSNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6YXR0cmlidXRlKj4oX2ludGVybmFsKQotCi1AaW1wbGVtZW50YXRpb24gRE9N
YXR0cmlidXRlCi0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVk
dWxlRGVhbGxvY2F0ZU9uTWFpblRocmVhZChbRE9NYXR0cmlidXRlIGNsYXNzXSwgc2VsZikpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVm
KCk7Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAg
aWYgKF9pbnRlcm5hbCkKLSAgICAgICAgSU1QTC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxp
emVdOwotfQotCi0tIChOU1N0cmluZyAqKXJlYWRvbmx5Ci17Ci0gICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIHJldHVybiBJTVBMLT5yZWFkb25seSgpOwotfQot
Ci1AZW5kCi0KLVdlYkNvcmU6OmF0dHJpYnV0ZSogY29yZShET01hdHRyaWJ1dGUgKndyYXBwZXIp
Ci17Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OmF0dHJp
YnV0ZSo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOwotfQotCi1ET01hdHRyaWJ1dGUgKmtpdChX
ZWJDb3JlOjphdHRyaWJ1dGUqIHZhbHVlKQotewotICAgIHsgRE9NX0FTU0VSVF9NQUlOX1RIUkVB
RCgpOyBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOyB9OwotICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKERPTWF0dHJpYnV0ZSAqd3JhcHBl
ciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwotICAgIERPTWF0dHJpYnV0ZSAqd3JhcHBlciA9IFtbRE9NYXR0cmli
dXRlIGFsbG9jXSBfaW5pdF07Ci0gICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVpbnRlcnByZXRf
Y2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKLSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAg
YWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyIGF1dG9y
ZWxlYXNlXTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTWF0dHJpYnV0ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01hdHRyaWJ1dGVJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhZmZiMDA0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTWF0dHJpYnV0ZUludGVybmFsLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9y
dCA8V2ViQ29yZS9ET01hdHRyaWJ1dGUuaD4KLQotI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExP
V0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBhdHRyaWJ1dGU7Ci19Ci0KLVdlYkNvcmU6OmF0dHJpYnV0ZSogY29yZShET01hdHRyaWJ1dGUg
Kik7Ci1ET01hdHRyaWJ1dGUgKmtpdChXZWJDb3JlOjphdHRyaWJ1dGUqKTsKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01y
ZWFkb25seS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
cmVhZG9ubHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2YjkwYi4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01yZWFk
b25seS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndl
aW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NT2JqZWN0Lmg+Ci0K
LSNpZiBXRUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QK
LQotQGludGVyZmFjZSBET01yZWFkb25seSA6IERPTU9iamVjdAotQGVuZAotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTXJl
YWRvbmx5Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
cmVhZG9ubHkubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYzVmYzQuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NcmVh
ZG9ubHkubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJET01JbnRlcm5hbC5oIgot
Ci0jaW1wb3J0ICJET01yZWFkb25seS5oIgotCi0jaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIK
LSNpbXBvcnQgIkRPTXJlYWRvbmx5SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRs
ZXJzLmgiCi0jaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIlRocmVh
ZENoZWNrLmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgotI2ltcG9ydCAiV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCAicmVhZG9ubHkuaCIKLSNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KLQotI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6cmVhZG9u
bHkqPihfaW50ZXJuYWwpCi0KLUBpbXBsZW1lbnRhdGlvbiBET01yZWFkb25seQotCi0tICh2b2lk
KWRlYWxsb2MKLXsKLSAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5U
aHJlYWQoW0RPTXJlYWRvbmx5IGNsYXNzXSwgc2VsZikpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChfaW50ZXJuYWwpCi0gICAgICAgIElNUEwtPmRlcmVmKCk7Ci0gICAgW3N1cGVyIGRlYWxs
b2NdOwotfQotCi0tICh2b2lkKWZpbmFsaXplCi17Ci0gICAgaWYgKF9pbnRlcm5hbCkKLSAgICAg
ICAgSU1QTC0+ZGVyZWYoKTsKLSAgICBbc3VwZXIgZmluYWxpemVdOwotfQotCi1AZW5kCi0KLVdl
YkNvcmU6OnJlYWRvbmx5KiBjb3JlKERPTXJlYWRvbmx5ICp3cmFwcGVyKQotewotICAgIHJldHVy
biB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpyZWFkb25seSo+KHdyYXBwZXIt
Pl9pbnRlcm5hbCkgOiAwOwotfQotCi1ET01yZWFkb25seSAqa2l0KFdlYkNvcmU6OnJlYWRvbmx5
KiB2YWx1ZSkKLXsKLSAgICB7IERPTV9BU1NFUlRfTUFJTl9USFJFQUQoKTsgV2ViQ29yZVRocmVh
ZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsgfTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIGlmIChET01yZWFkb25seSAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIo
dmFsdWUpKQotICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwot
ICAgIERPTXJlYWRvbmx5ICp3cmFwcGVyID0gW1tET01yZWFkb25seSBhbGxvY10gX2luaXRdOwot
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7Ci0gICAgdmFsdWUtPnJlZigpOwotICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOwotICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01yZWFkb25s
eUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01yZWFkb25seUludGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNzdm
NWEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NcmVhZG9ubHlJbnRlcm5hbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot
LyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KLSAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFdlYkNvcmUvRE9NcmVhZG9ubHku
aD4KLQotI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xB
VEVTVAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyByZWFkb25seTsKLX0KLQotV2ViQ29y
ZTo6cmVhZG9ubHkqIGNvcmUoRE9NcmVhZG9ubHkgKik7Ci1ET01yZWFkb25seSAqa2l0KFdlYkNv
cmU6OnJlYWRvbmx5Kik7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFeGNlcHRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFeGNlcHRpb24uaWRsCmluZGV4IDRmOGViMmUuLmNkNTc3
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
RXhjZXB0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEV4Y2VwdGlvbi5pZGwKQEAgLTI4LDggKzI4LDMgQEAKIGV4Y2VwdGlvbiBUZXN0RXhjZXB0
aW9uIHsKICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKIH07Ci0KLS8vIElk
ZW50aWZpZXJzIHdpdGggYSBsZWFkaW5nIHVuZGVyc2NvcmUsIHdoaWNoIHNob3VsZCBiZSByZW1v
dmVkLgotZXhjZXB0aW9uIF9hdHRyaWJ1dGUgewotICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBfcmVhZG9ubHk7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCmluZGV4IGY3OTE3YTcuLjA5ODNmMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJm
YWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdElu
dGVyZmFjZS5pZGwKQEAgLTQyLDcgKzQyLDMgQEAKIAogVGVzdEludGVyZmFjZSBpbXBsZW1lbnRz
IFRlc3RJbXBsZW1lbnRzOwogCi1bCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQotXSBp
bnRlcmZhY2UgX3JlYWRvbmx5IHsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZTc1ZjcwZS4uMzllOGVhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzIs
OSArMzIsNiBAQAogCiBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVt
VmFsdWUyIiwgIkVudW1WYWx1ZTMiIH07CiAKLS8vIExlYWRpbmcgdW5kZXJzY29yZSBvbiBhbiBl
bnVtIHNob3VsZCBiZSByZW1vdmVkLgotZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFs
dWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwotCiBbCiAgICAgQ29u
c3RydWN0b3IoVGVzdENhbGxiYWNrIHRlc3RDYWxsYmFjayksCiAgICAgSW50ZXJmYWNlTmFtZT1U
ZXN0T2JqZWN0CkBAIC0yNjcsMTIgKzI2NCw2IEBAIGVudW0gX29wdGlvbmFsIHsgIiIsICJPcHRp
b25hbFZhbHVlMSIsICJPcHRpb25hbFZhbHVlMiIsICJPcHRpb25hbFZhbHVlMyIgfTsKICAgICBh
dHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU7CiAKICAgICBbR2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVTdHJpbmdWYWx1ZTsK
LQotICAgIC8vIElkZW50aWZpZXJzIHdpdGggYSBsZWFkaW5nIHVuZGVyc2NvcmUsIHdoaWNoIHNo
b3VsZCBiZSByZW1vdmVkLgotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAgICAgICAgICAgICAg
X3JlYWRvbmx5ID0gMDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIF9h
dHRyaWJ1dGU7Ci0gICAgYXR0cmlidXRlIF9vcHRpb25hbCAgICAgICAgICAgICAgICBhdHRyaWJ1
dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZTsKLSAgICB2b2lkIF9hbnkoZmxvYXQgYSwgbG9uZyBiKTsK
IH07CiAKIC8vIFRoZSBmb2xsb3dpbmcgY29tbWVudCBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBj
b2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwCmluZGV4IDZlZDE0ODUu
LmY4YmNmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlND
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5jcHAKQEAgLTMz
LDYgKzMzLDExIEBACiAjaW5jbHVkZSAicnVudGltZS9KU0xvY2suaCIKICNpbmNsdWRlICJydW50
aW1lL09iamVjdFByb3RvdHlwZS5oIgogCisKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJx
dF9pbnN0YW5jZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQmlu
ZGluZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2NsYXNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTk5ZDJkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9jbGFzcy5jcHAKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInF0X2NsYXNzLmgiCisKKyNpbmNsdWRlICJBUElDYXN0LmgiCisj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgInF0X2luc3RhbmNlLmgiCisjaW5jbHVk
ZSAicXRfcnVudGltZS5oIgorCisjaW5jbHVkZSA8cWRlYnVnLmg+CisjaW5jbHVkZSA8cW1ldGFv
YmplY3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQmluZGluZ3MgeworCitRdENs
YXNzOjpRdENsYXNzKGNvbnN0IFFNZXRhT2JqZWN0KiBtbykKKyAgICA6IG1fbWV0YU9iamVjdCht
bykKK3sKK30KKworUXRDbGFzczo6flF0Q2xhc3MoKQoreworfQorCit0eXBlZGVmIEhhc2hNYXA8
Y29uc3QgUU1ldGFPYmplY3QqLCBRdENsYXNzKj4gQ2xhc3Nlc0J5TWV0YU9iamVjdDsKK3N0YXRp
YyBDbGFzc2VzQnlNZXRhT2JqZWN0KiBjbGFzc2VzQnlNZXRhT2JqZWN0ID0gMDsKKworUXRDbGFz
cyogUXRDbGFzczo6Y2xhc3NGb3JPYmplY3QoUU9iamVjdCogbykKK3sKKyAgICBpZiAoIWNsYXNz
ZXNCeU1ldGFPYmplY3QpCisgICAgICAgIGNsYXNzZXNCeU1ldGFPYmplY3QgPSBuZXcgQ2xhc3Nl
c0J5TWV0YU9iamVjdDsKKworICAgIGNvbnN0IFFNZXRhT2JqZWN0KiBtbyA9IG8tPm1ldGFPYmpl
Y3QoKTsKKyAgICBRdENsYXNzKiBhQ2xhc3MgPSBjbGFzc2VzQnlNZXRhT2JqZWN0LT5nZXQobW8p
OworICAgIGlmICghYUNsYXNzKSB7CisgICAgICAgIGFDbGFzcyA9IG5ldyBRdENsYXNzKG1vKTsK
KyAgICAgICAgY2xhc3Nlc0J5TWV0YU9iamVjdC0+c2V0KG1vLCBhQ2xhc3MpOworICAgIH0KKwor
ICAgIHJldHVybiBhQ2xhc3M7Cit9CisKK2NvbnN0IGNoYXIqIFF0Q2xhc3M6Om5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBtX21ldGFPYmplY3QtPmNsYXNzTmFtZSgpOworfQorCisvLyBXZSB1
c2UgdGhpcyB0byBnZXQgYXQgc2lnbmFscyAoc28gd2UgY2FuIHJldHVybiBhIHByb3BlciBmdW5j
dGlvbiBvYmplY3QsCisvLyBhbmQgbm90IGdldCB3cmFwcGVkIGluIFJ1bnRpbWVNZXRob2QpLiBB
bHNvLCB1c2UgdGhpcyBmb3IgbWV0aG9kcywKKy8vIHNvIHdlIGNhbiBjYWNoZSB0aGUgb2JqZWN0
IGFuZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IGZvciB0aGUgc2FtZQorLy8gaWRlbnRpZmllci4K
K0pTVmFsdWUgUXRDbGFzczo6ZmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBJbnN0YW5j
ZSogaW5zdCwgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCit7CisgICAgUXRJbnN0YW5jZSogcXRp
bnN0ID0gc3RhdGljX2Nhc3Q8UXRJbnN0YW5jZSo+KGluc3QpOworICAgIEpTQ29udGV4dFJlZiBj
b250ZXh0ID0gdG9SZWYoZXhlYyk7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworCisg
ICAgU3RyaW5nIHVzdHJpbmcoaWRlbnRpZmllci5wdWJsaWNOYW1lKCkpOworICAgIGNvbnN0IFFC
eXRlQXJyYXkgbmFtZSA9IFFTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KHVz
dHJpbmcuY2hhcmFjdGVycygpKSwgdXN0cmluZy5sZW5ndGgoKSkudG9MYXRpbjEoKTsKKworICAg
IC8vIEZpcnN0IHNlZSBpZiB3ZSBoYXZlIGEgY2FjaGUgaGl0CisgICAgaWYgKFF0UnVudGltZU1l
dGhvZCogbWV0aG9kID0gcXRpbnN0LT5tX21ldGhvZHMudmFsdWUobmFtZSkpIHsKKyAgICAgICAg
SlNWYWx1ZSBvYmogPSB0b0pTKG1ldGhvZC0+anNPYmplY3RSZWYoY29udGV4dCwgJmV4Y2VwdGlv
bikpOworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
cmV0dXJuIG9iajsKKyAgICB9CisKKyAgICAvLyBOb3BlLCBjcmVhdGUgYW4gZW50cnkKKyAgICBj
b25zdCBRQnl0ZUFycmF5IG5vcm1hbCA9IFFNZXRhT2JqZWN0Ojpub3JtYWxpemVkU2lnbmF0dXJl
KG5hbWUuY29uc3REYXRhKCkpOworCisgICAgLy8gU2VlIGlmIHRoZXJlIGlzIGFuIGV4YWN0IG1h
dGNoCisgICAgaW50IGluZGV4ID0gLTE7CisgICAgUU1ldGFNZXRob2QgbWV0YU1ldGhvZDsKKyAg
ICBpZiAobm9ybWFsLmNvbnRhaW5zKCcoJykgJiYgKGluZGV4ID0gbV9tZXRhT2JqZWN0LT5pbmRl
eE9mTWV0aG9kKG5vcm1hbCkpICE9IC0xKSB7CisgICAgICAgIG1ldGFNZXRob2QgPSBtX21ldGFP
YmplY3QtPm1ldGhvZChpbmRleCk7CisgICAgICAgIGlmIChtZXRhTWV0aG9kLmFjY2VzcygpID09
IFFNZXRhTWV0aG9kOjpQcml2YXRlKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICB9CisK
KyAgICAvLyBOb3BlLi4gdHJ5IGEgYmFzZW5hbWUgbWF0Y2gKKyAgICBpZiAoaW5kZXggPT0gLTEp
IHsKKyAgICAgICAgY29uc3QgaW50IGNvdW50ID0gbV9tZXRhT2JqZWN0LT5tZXRob2RDb3VudCgp
OworICAgICAgICBmb3IgKGluZGV4ID0gY291bnQgLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7
CisgICAgICAgICAgICBtZXRhTWV0aG9kID0gbV9tZXRhT2JqZWN0LT5tZXRob2QoaW5kZXgpOwor
ICAgICAgICAgICAgaWYgKG1ldGFNZXRob2QuYWNjZXNzKCkgPT0gUU1ldGFNZXRob2Q6OlByaXZh
dGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChtZXRhTWV0
aG9kLm5hbWUoKSA9PSBub3JtYWwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoaW5kZXggPT0gLTEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgaW50IGZsYWdzID0gbWV0YU1ldGhvZC5tZXRob2RUeXBlKCkgPT0gUU1ldGFN
ZXRob2Q6OlNpZ25hbCA/IFF0UnVudGltZU1ldGhvZDo6TWV0aG9kSXNTaWduYWwgOiAwOworICAg
IFF0UnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IFF0UnVudGltZU1ldGhvZChjb250ZXh0LCBz
dGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5zdCktPmdldE9iamVjdCgpLCBub3JtYWwsIGluZGV4
LCBmbGFncywgcXRpbnN0KTsKKyAgICBxdGluc3QtPm1fbWV0aG9kcy5pbnNlcnQobmFtZSwgbWV0
aG9kKTsKKyAgICBKU1ZhbHVlIG9iaiA9IHRvSlMobWV0aG9kLT5qc09iamVjdFJlZihjb250ZXh0
LCAmZXhjZXB0aW9uKSk7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICBy
ZXR1cm4gb2JqOworfQorCisvLyBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgaGFuZGxlZCBieSB0aGUg
ZmFsbGJhY2sgY2FzZSBhYm92ZS4uLgorTWV0aG9kKiBRdENsYXNzOjptZXRob2ROYW1lZChQcm9w
ZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gIyMj
IHdlIG1heSBlbmQgdXAgd2l0aCBhIGRpZmZlcmVudCBzZWFyY2ggb3JkZXIgdGhhbiBRdFNjcmlw
dCBieSBub3QKKy8vIGZvbGRpbmcgdGhpcyBjb2RlIGludG8gdGhlIGZhbGxiYWNrTWV0aG9kIGFi
b3ZlLCBidXQgRmllbGRzIHByb3BhZ2F0ZSBvdXQKKy8vIG9mIHRoZSBiaW5kaW5nIGNvZGUKK0Zp
ZWxkKiBRdENsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBpZGVudGlmaWVyLCBJbnN0YW5j
ZSogaW5zdGFuY2UpIGNvbnN0Cit7CisgICAgLy8gQ2hlY2sgc3RhdGljIHByb3BlcnRpZXMgZmly
c3QKKyAgICBRdEluc3RhbmNlKiBxdGluc3QgPSBzdGF0aWNfY2FzdDxRdEluc3RhbmNlKj4oaW5z
dGFuY2UpOworCisgICAgUU9iamVjdCogb2JqID0gcXRpbnN0LT5nZXRPYmplY3QoKTsKKyAgICBT
dHJpbmcgdXN0cmluZyhpZGVudGlmaWVyLnB1YmxpY05hbWUoKSk7CisgICAgY29uc3QgUVN0cmlu
ZyBuYW1lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPih1c3RyaW5nLmNoYXJhY3RlcnMo
KSksIHVzdHJpbmcubGVuZ3RoKCkpOworICAgIGNvbnN0IFFCeXRlQXJyYXkgYXNjaWkgPSBuYW1l
LnRvTGF0aW4xKCk7CisKKyAgICAvLyBGaXJzdCBjaGVjayBmb3IgYSBjYWNoZWQgZmllbGQKKyAg
ICBRdEZpZWxkKiBmID0gcXRpbnN0LT5tX2ZpZWxkcy52YWx1ZShuYW1lKTsKKworICAgIGlmIChv
YmopIHsKKyAgICAgICAgaWYgKGYpIHsKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FjaGUgcmVh
bCBtZXRhcHJvcGVydGllcywgYnV0IHdlIGRvIHN0b3JlIHRoZQorICAgICAgICAgICAgLy8gb3Ro
ZXIgdHlwZXMgc28gd2UgY2FuIGRlbGV0ZSB0aGVtIGxhdGVyCisgICAgICAgICAgICBpZiAoZi0+
ZmllbGRUeXBlKCkgPT0gUXRGaWVsZDo6TWV0YVByb3BlcnR5KQorICAgICAgICAgICAgICAgIHJl
dHVybiBmOworI2lmbmRlZiBRVF9OT19QUk9QRVJUSUVTCisgICAgICAgICAgICBpZiAoZi0+Zmll
bGRUeXBlKCkgPT0gUXRGaWVsZDo6RHluYW1pY1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAg
aWYgKG9iai0+ZHluYW1pY1Byb3BlcnR5TmFtZXMoKS5pbmRleE9mKGFzY2lpKSA+PSAwKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZjsKKyAgICAgICAgICAgICAgICAvLyBEeW5hbWljIHBy
b3BlcnR5IHRoYXQgZGlzYXBwZWFyZWQKKyAgICAgICAgICAgICAgICBxdGluc3QtPm1fZmllbGRz
LnJlbW92ZShuYW1lKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgZjsKKyAgICAgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc3QgUUxpc3Q8
UU9iamVjdCo+JiBjaGlsZHJlbiA9IG9iai0+Y2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBpbnQgY291bnQgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yIChp
bnQgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAg
ICAgIFFPYmplY3QqIGNoaWxkID0gY2hpbGRyZW4uYXQoaW5kZXgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQtPm9iamVjdE5hbWUoKSA9PSBuYW1lKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGY7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8g
RGlkbid0IGZpbmQgaXQsIGRlbGV0ZSBpdCBmcm9tIHRoZSBjYWNoZQorICAgICAgICAgICAgICAg
IHF0aW5zdC0+bV9maWVsZHMucmVtb3ZlKG5hbWUpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBm
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IGluZGV4ID0gbV9tZXRh
T2JqZWN0LT5pbmRleE9mUHJvcGVydHkoYXNjaWkpOworICAgICAgICBpZiAoaW5kZXggPj0gMCkg
eworICAgICAgICAgICAgY29uc3QgUU1ldGFQcm9wZXJ0eSBwcm9wID0gbV9tZXRhT2JqZWN0LT5w
cm9wZXJ0eShpbmRleCk7CisKKyAgICAgICAgICAgIGlmIChwcm9wLmlzU2NyaXB0YWJsZShvYmop
KSB7CisgICAgICAgICAgICAgICAgZiA9IG5ldyBRdEZpZWxkKHByb3ApOworICAgICAgICAgICAg
ICAgIHF0aW5zdC0+bV9maWVsZHMuaW5zZXJ0KG5hbWUsIGYpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNpZm5kZWYgUVRfTk9fUFJPUEVS
VElFUworICAgICAgICAvLyBEeW5hbWljIHByb3BlcnRpZXMKKyAgICAgICAgaW5kZXggPSBvYmot
PmR5bmFtaWNQcm9wZXJ0eU5hbWVzKCkuaW5kZXhPZihhc2NpaSk7CisgICAgICAgIGlmIChpbmRl
eCA+PSAwKSB7CisgICAgICAgICAgICBmID0gbmV3IFF0RmllbGQoYXNjaWkpOworICAgICAgICAg
ICAgcXRpbnN0LT5tX2ZpZWxkcy5pbnNlcnQobmFtZSwgZik7CisgICAgICAgICAgICByZXR1cm4g
ZjsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgLy8gQ2hpbGQgb2JqZWN0cworCisgICAg
ICAgIGNvbnN0IFFMaXN0PFFPYmplY3QqPiYgY2hpbGRyZW4gPSBvYmotPmNoaWxkcmVuKCk7Cisg
ICAgICAgIGNvbnN0IGludCBjb3VudCA9IGNoaWxkcmVuLmNvdW50KCk7CisgICAgICAgIGZvciAo
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CisgICAgICAgICAgICBRT2JqZWN0
KiBjaGlsZCA9IGNoaWxkcmVuLmF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChjaGlsZC0+b2Jq
ZWN0TmFtZSgpID09IG5hbWUpIHsKKyAgICAgICAgICAgICAgICBmID0gbmV3IFF0RmllbGQoY2hp
bGQpOworICAgICAgICAgICAgICAgIHF0aW5zdC0+bV9maWVsZHMuaW5zZXJ0KG5hbWUsIGYpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gTm90aGluZyBuYW1lZCB0aGlzCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHF0c2NyaXB0LCBjYWNoZWQgbWV0aG9kcyBkb24n
dCBjYXVzZQorICAgIC8vIGVycm9ycyB1bnRpbCB0aGV5IGFyZSBhY2Nlc3NlZCwgc28gZG9uJ3Qg
YmxpbmRseSBjcmVhdGUgYW4gZXJyb3IKKyAgICAvLyBoZXJlLgorICAgIGlmIChxdGluc3QtPm1f
bWV0aG9kcy5jb250YWlucyhhc2NpaSkpCisgICAgICAgIHJldHVybiAwOworCisjaWZuZGVmIFFU
X05PX1BST1BFUlRJRVMKKyAgICAvLyBkZWxldGVkIHFvYmplY3QsIGJ1dCBjYW4ndCB0aHJvdyBh
biBlcnJvciBmcm9tIGhlcmUgKG5vIGV4ZWMpCisgICAgLy8gY3JlYXRlIGEgZmFrZSBRdEZpZWxk
IHRoYXQgd2lsbCB0aHJvdyB1cG9uIGFjY2VzcworICAgIGlmICghZikgeworICAgICAgICBmID0g
bmV3IFF0RmllbGQoYXNjaWkpOworICAgICAgICBxdGluc3QtPm1fZmllbGRzLmluc2VydChuYW1l
LCBmKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gZjsKK30KKworfQorfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfY2xhc3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9xdC9xdF9jbGFzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjEyNTYyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
Y2xhc3MuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCisgKgorICovCisKKyNpZm5kZWYgcXRfY2xhc3NfaAorI2RlZmluZSBxdF9jbGFz
c19oCisKKyNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKKyNpbmNsdWRlICJxZ2xvYmFsLmgiCisKK1FU
X0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUU9iamVjdDsKK3N0cnVjdCBRTWV0YU9iamVjdDsKK1FU
X0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQmluZGluZ3Mgewor
CisKK2NsYXNzIFF0Q2xhc3MgOiBwdWJsaWMgQ2xhc3MgeworcHJvdGVjdGVkOgorICAgIFF0Q2xh
c3MoY29uc3QgUU1ldGFPYmplY3QqKTsKKworcHVibGljOgorICAgIHN0YXRpYyBRdENsYXNzKiBj
bGFzc0Zvck9iamVjdChRT2JqZWN0Kik7CisgICAgdmlydHVhbCB+UXRDbGFzcygpOworCisgICAg
dmlydHVhbCBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBNZXRob2QqIG1l
dGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZp
ZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdDsKKworICAgIHZp
cnR1YWwgSlNWYWx1ZSBmYWxsYmFja09iamVjdChFeGVjU3RhdGUqLCBJbnN0YW5jZSosIFByb3Bl
cnR5TmFtZSk7CisKK3ByaXZhdGU6CisgICAgUXRDbGFzcyhjb25zdCBRdENsYXNzJik7IC8vIHBy
b2hpYml0IGNvcHlpbmcKKyAgICBRdENsYXNzJiBvcGVyYXRvcj0oY29uc3QgUXRDbGFzcyYpOyAv
LyBwcm9oaWJpdCBhc3NpZ25tZW50CisKKyAgICBjb25zdCBRTWV0YU9iamVjdCogbV9tZXRhT2Jq
ZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZTE2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCkBAIC0wLDAgKzEsMzgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxdF9pbnN0YW5jZS5oIgorCisjaW5jbHVkZSAi
QVBJQ2FzdC5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgInF0X2NsYXNzLmgiCisjaW5j
bHVkZSAicXRfcnVudGltZS5oIgorI2luY2x1ZGUgInJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgorCisjaW5jbHVkZSA8cWRlYnVnLmg+Cisj
aW5jbHVkZSA8cWhhc2guaD4KKyNpbmNsdWRlIDxxbWV0YW9iamVjdC5oPgorI2luY2x1ZGUgPHFt
ZXRhdHlwZS5oPgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCaW5kaW5ncyB7CisKKy8v
IENhY2hlIFF0SW5zdGFuY2VzCit0eXBlZGVmIFFNdWx0aUhhc2g8dm9pZCosIFF0SW5zdGFuY2Uq
PiBRT2JqZWN0SW5zdGFuY2VNYXA7CitzdGF0aWMgUU9iamVjdEluc3RhbmNlTWFwIGNhY2hlZElu
c3RhbmNlczsKKworLy8gRGVyaXZlZCBSdW50aW1lT2JqZWN0CitjbGFzcyBRdFJ1bnRpbWVPYmpl
Y3QgOiBwdWJsaWMgUnVudGltZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBSdW50aW1l
T2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCisg
ICAgeworICAgICAgICBRdFJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxs
PFF0UnVudGltZU9iamVjdD4odm0uaGVhcCkpIFF0UnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJl
LCBpbnN0YW5jZSk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAg
ICByZXR1cm4gb2JqZWN0OworICAgIH0KKyAgICAKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsICBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUnVudGltZU9iamVj
dDo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuOworCitwcml2YXRlOgor
ICAgIFF0UnVudGltZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8SW5zdGFuY2U+
KTsKK307CisKK2NvbnN0IENsYXNzSW5mbyBRdFJ1bnRpbWVPYmplY3Q6OnNfaW5mbyA9IHsgIlF0
UnVudGltZU9iamVjdCIsICZSdW50aW1lT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoUXRSdW50aW1lT2JqZWN0KSB9OworCitRdFJ1bnRpbWVPYmplY3Q6OlF0UnVudGlt
ZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSkKKyAgICA6IFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgaW5zdGFuY2Up
Cit7Cit9CisKKy8vIFF0SW5zdGFuY2UKK1F0SW5zdGFuY2U6OlF0SW5zdGFuY2UoUU9iamVjdCog
bywgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0LCBWYWx1ZU93bmVyc2hpcCBvd25l
cnNoaXApCisgICAgOiBJbnN0YW5jZShyb290T2JqZWN0KQorICAgICwgbV9jbGFzcygwKQorICAg
ICwgbV9vYmplY3QobykKKyAgICAsIG1faGFzaGtleShvKQorICAgICwgbV9vd25lcnNoaXAob3du
ZXJzaGlwKQoreworfQorCitRdEluc3RhbmNlOjp+UXRJbnN0YW5jZSgpCit7CisgICAgSlNMb2Nr
SG9sZGVyIGxvY2soV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpKTsKKworICAg
IGNhY2hlZEluc3RhbmNlcy5yZW1vdmUobV9oYXNoa2V5KTsKKworICAgIHFEZWxldGVBbGwobV9t
ZXRob2RzKTsKKyAgICBtX21ldGhvZHMuY2xlYXIoKTsKKworICAgIHFEZWxldGVBbGwobV9maWVs
ZHMpOworICAgIG1fZmllbGRzLmNsZWFyKCk7CisKKyAgICBpZiAobV9vYmplY3QpIHsKKyAgICAg
ICAgc3dpdGNoIChtX293bmVyc2hpcCkgeworICAgICAgICBjYXNlIFF0T3duZXJzaGlwOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXV0b093bmVyc2hpcDoKKyAgICAgICAgICAg
IGlmIChtX29iamVjdC5kYXRhKCktPnBhcmVudCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoIQorICAgICAgICBjYXNlIFNjcmlwdE93bmVyc2hp
cDoKKyAgICAgICAgICAgIGRlbGV0ZSBtX29iamVjdC5kYXRhKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KK30KKworUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBRdEluc3Rh
bmNlOjpnZXRRdEluc3RhbmNlKFFPYmplY3QqIG8sIFBhc3NSZWZQdHI8Um9vdE9iamVjdD4gcm9v
dE9iamVjdCwgVmFsdWVPd25lcnNoaXAgb3duZXJzaGlwKQoreworICAgIEpTTG9ja0hvbGRlciBs
b2NrKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSk7CisKKyAgICBmb3JlYWNo
IChRdEluc3RhbmNlKiBpbnN0YW5jZSwgY2FjaGVkSW5zdGFuY2VzLnZhbHVlcyhvKSkKKyAgICAg
ICAgaWYgKGluc3RhbmNlLT5yb290T2JqZWN0KCkgPT0gcm9vdE9iamVjdCkgeworICAgICAgICAg
ICAgLy8gVGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlbW92ZXMgaW5zdGFuY2VzLCBidXQgaXQgbWF5
IGhhcHBlbiB0aGF0IHRoZSB3cmFwcGVkCisgICAgICAgICAgICAvLyBRT2JqZWN0IGRpZXMgYmVm
b3JlIHRoZSBnYyBraWNrcyBpbi4gVG8gaGFuZGxlIHRoYXQgY2FzZSB3ZSBoYXZlIHRvIGRvIGFu
IGFkZGl0aW9uYWwKKyAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRvIHNlZSBpZiB0aGUgaW5zdGFu
Y2UncyB3cmFwcGVkIG9iamVjdCBpcyBzdGlsbCBhbGl2ZS4gSWYgaXQgaXNuJ3QsIHRoZW4KKyAg
ICAgICAgICAgIC8vIHdlIGhhdmUgdG8gY3JlYXRlIGEgbmV3IHdyYXBwZXIuCisgICAgICAgICAg
ICBpZiAoIWluc3RhbmNlLT5nZXRPYmplY3QoKSkKKyAgICAgICAgICAgICAgICBjYWNoZWRJbnN0
YW5jZXMucmVtb3ZlKGluc3RhbmNlLT5oYXNoS2V5KCkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICAgICAgfQorCisgICAgUmVmUHRyPFF0
SW5zdGFuY2U+IHJldCA9IFF0SW5zdGFuY2U6OmNyZWF0ZShvLCByb290T2JqZWN0LCBvd25lcnNo
aXApOworICAgIGNhY2hlZEluc3RhbmNlcy5pbnNlcnQobywgcmV0LmdldCgpKTsKKworICAgIHJl
dHVybiByZXQucmVsZWFzZSgpOworfQorCitib29sIFF0SW5zdGFuY2U6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisK
K3ZvaWQgUXRJbnN0YW5jZTo6cHV0KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIEpTT2JqZWN0OjpwdXQob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKK30KKworUXRJbnN0YW5jZSogUXRJbnN0YW5jZTo6Z2V0SW5zdGFuY2Uo
SlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKCFvYmplY3QtPmluaGVyaXRzKFF0UnVudGltZU9iamVjdDo6aW5mbygpKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFF0SW5zdGFuY2UqPihzdGF0
aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4ob2JqZWN0KS0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpKTsK
K30KKworQ2xhc3MqIFF0SW5zdGFuY2U6OmdldENsYXNzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
Y2xhc3MpIHsKKyAgICAgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBtX2NsYXNzID0gUXRDbGFzczo6Y2xhc3NGb3JPYmplY3QobV9vYmplY3QuZGF0YSgp
KTsKKyAgICB9CisgICAgcmV0dXJuIG1fY2xhc3M7Cit9CisKK1J1bnRpbWVPYmplY3QqIFF0SW5z
dGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOworICAgIHFEZWxldGVBbGwobV9tZXRob2RzKTsKKyAgICBtX21ldGhv
ZHMuY2xlYXIoKTsKKworICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVz
ZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QuCisgICAgcmV0
dXJuIFF0UnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIFdlYkNvcmU6OmRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmU8UXRSdW50aW1lT2JqZWN0PihleGVjKSwgdGhpcyk7Cit9CisKK3Zv
aWQgUXRJbnN0YW5jZTo6YmVnaW4oKQoreworICAgIC8vIERvIG5vdGhpbmcuCit9CisKK3ZvaWQg
UXRJbnN0YW5jZTo6ZW5kKCkKK3sKKyAgICAvLyBEbyBub3RoaW5nLgorfQorCit2b2lkIFF0SW5z
dGFuY2U6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgYXJyYXkpCit7CisgICAgLy8gVGhpcyBpcyB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLCBz
byBwdXQ6CisgICAgLy8gcHJvcGVydGllcworICAgIC8vIGR5bmFtaWMgcHJvcGVydGllcworICAg
IC8vIHNsb3RzCisgICAgUU9iamVjdCogb2JqID0gZ2V0T2JqZWN0KCk7CisgICAgaWYgKG9iaikg
eworICAgICAgICBjb25zdCBRTWV0YU9iamVjdCogbWV0YSA9IG9iai0+bWV0YU9iamVjdCgpOwor
CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWV0YS0+cHJvcGVydHlD
b3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgIFFNZXRhUHJvcGVydHkgcHJvcCA9IG1ldGEtPnBy
b3BlcnR5KGkpOworICAgICAgICAgICAgaWYgKHByb3AuaXNTY3JpcHRhYmxlKCkpCisgICAgICAg
ICAgICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXIoZXhlYywgcHJvcC5uYW1lKCkpKTsKKyAgICAg
ICAgfQorCisjaWZuZGVmIFFUX05PX1BST1BFUlRJRVMKKyAgICAgICAgUUxpc3Q8UUJ5dGVBcnJh
eT4gZHluUHJvcHMgPSBvYmotPmR5bmFtaWNQcm9wZXJ0eU5hbWVzKCk7CisgICAgICAgIGZvcmVh
Y2ggKGNvbnN0IFFCeXRlQXJyYXkmIGJhLCBkeW5Qcm9wcykKKyAgICAgICAgICAgIGFycmF5LmFk
ZChJZGVudGlmaWVyKGV4ZWMsIGJhLmNvbnN0RGF0YSgpKSk7CisjZW5kaWYKKworICAgICAgICBj
b25zdCBpbnQgbWV0aG9kQ291bnQgPSBtZXRhLT5tZXRob2RDb3VudCgpOworICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgbWV0aG9kQ291bnQ7IGkrKykgeworICAgICAgICAgICAgUU1ldGFNZXRob2Qg
bWV0aG9kID0gbWV0YS0+bWV0aG9kKGkpOworICAgICAgICAgICAgaWYgKG1ldGhvZC5hY2Nlc3Mo
KSAhPSBRTWV0YU1ldGhvZDo6UHJpdmF0ZSkgeworICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkg
c2lnID0gbWV0aG9kLm1ldGhvZFNpZ25hdHVyZSgpOworICAgICAgICAgICAgICAgIGFycmF5LmFk
ZChJZGVudGlmaWVyKGV4ZWMsIFN0cmluZyhzaWcuY29uc3REYXRhKCksIHNpZy5sZW5ndGgoKSkp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworSlNWYWx1ZSBRdEluc3Rh
bmNlOjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQoreworICAgIGlmICghZ2V0Q2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAg
IE1ldGhvZCogbWV0aG9kID0gbV9jbGFzcy0+bWV0aG9kTmFtZWQocHJvcGVydHlOYW1lLCB0aGlz
KTsKKyAgICByZXR1cm4gUnVudGltZU1ldGhvZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxSdW50aW1l
TWV0aG9kPihleGVjKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbWV0aG9kKTsKK30KKwor
SlNWYWx1ZSBRdEluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhv
ZCopCit7CisgICAgLy8gSW1wbGVtZW50ZWQgdmlhIGZhbGxiYWNrTWV0aG9kICYgUXRSdW50aW1l
TWV0YU1ldGhvZDo6Y2FsbEFzRnVuY3Rpb24KKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30K
KworSlNWYWx1ZSBRdEluc3RhbmNlOjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpIGNvbnN0Cit7CisgICAgaWYgKGhpbnQgPT0gUHJlZmVy
U3RyaW5nKQorICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWUoZXhlYyk7CisgICAgaWYgKGhpbnQg
PT0gUHJlZmVyTnVtYmVyKQorICAgICAgICByZXR1cm4gbnVtYmVyVmFsdWUoZXhlYyk7CisgICAg
cmV0dXJuIHZhbHVlT2YoZXhlYyk7Cit9CisKK0pTVmFsdWUgUXRJbnN0YW5jZTo6c3RyaW5nVmFs
dWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIFFPYmplY3QqIG9iaiA9IGdldE9iamVj
dCgpOworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICAvLyBI
bW0uLiBzZWUgaWYgdGhlcmUgaXMgYSB0b1N0cmluZyBkZWZpbmVkCisgICAgUUJ5dGVBcnJheSBi
dWY7CisgICAgYm9vbCB1c2VEZWZhdWx0ID0gdHJ1ZTsKKyAgICBnZXRDbGFzcygpOworICAgIGlm
IChtX2NsYXNzKSB7CisgICAgICAgIC8vIENoZWF0IGFuZCBkb24ndCB1c2UgdGhlIGZ1bGwgbmFt
ZSByZXNvbHV0aW9uCisgICAgICAgIGludCBpbmRleCA9IG9iai0+bWV0YU9iamVjdCgpLT5pbmRl
eE9mTWV0aG9kKCJ0b1N0cmluZygpIik7CisgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAg
ICAgICAgICBRTWV0YU1ldGhvZCBtID0gb2JqLT5tZXRhT2JqZWN0KCktPm1ldGhvZChpbmRleCk7
CisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaG93IG11Y2ggd2UgY2FuIGNhbGwgaXQKKyAg
ICAgICAgICAgIGlmIChtLmFjY2VzcygpICE9IFFNZXRhTWV0aG9kOjpQcml2YXRlCisgICAgICAg
ICAgICAgICAgJiYgbS5tZXRob2RUeXBlKCkgIT0gUU1ldGFNZXRob2Q6OlNpZ25hbAorICAgICAg
ICAgICAgICAgICYmIG0ucGFyYW1ldGVyQ291bnQoKSA9PSAwCisgICAgICAgICAgICAgICAgJiYg
bS5yZXR1cm5UeXBlKCkgIT0gUU1ldGFUeXBlOjpWb2lkKSB7CisgICAgICAgICAgICAgICAgUVZh
cmlhbnQgcmV0KG0ucmV0dXJuVHlwZSgpLCAodm9pZCopMCk7CisgICAgICAgICAgICAgICAgdm9p
ZCAqIHFhcmdzWzFdOworICAgICAgICAgICAgICAgIHFhcmdzWzBdID0gcmV0LmRhdGEoKTsKKwor
ICAgICAgICAgICAgICAgIGlmIChRTWV0YU9iamVjdDo6bWV0YWNhbGwob2JqLCBRTWV0YU9iamVj
dDo6SW52b2tlTWV0YU1ldGhvZCwgaW5kZXgsIHFhcmdzKSA8IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHJldC5pc1ZhbGlkKCkgJiYgcmV0LmNhbkNvbnZlcnQoUVZhcmlhbnQ6OlN0cmlu
ZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IHJldC50b1N0cmluZygpLnRvTGF0
aW4xKCkuY29uc3REYXRhKCk7IC8vICMjIyBMYXRpbiAxPyBBc2NpaT8KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVzZURlZmF1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICh1c2VEZWZhdWx0KSB7CisgICAgICAgIGNvbnN0IFFNZXRhT2JqZWN0KiBtZXRhID0gb2JqID8g
b2JqLT5tZXRhT2JqZWN0KCkgOiAmUU9iamVjdDo6c3RhdGljTWV0YU9iamVjdDsKKyAgICAgICAg
UVN0cmluZyBuYW1lID0gb2JqID8gb2JqLT5vYmplY3ROYW1lKCkgOiBRU3RyaW5nOjpmcm9tVXRm
OCgidW5uYW1lZCIpOworICAgICAgICBRU3RyaW5nIHN0ciA9IFFTdHJpbmc6OmZyb21VdGY4KCIl
MChuYW1lID0gXCIlMVwiKSIpCisgICAgICAgICAgICAgICAgICAgICAgLmFyZyhRTGF0aW4xU3Ry
aW5nKG1ldGEtPmNsYXNzTmFtZSgpKSkuYXJnKG5hbWUpOworCisgICAgICAgIGJ1ZiA9IHN0ci50
b0xhdGluMSgpOworICAgIH0KKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgYnVmLmNvbnN0RGF0
YSgpKTsKK30KKworSlNWYWx1ZSBRdEluc3RhbmNlOjpudW1iZXJWYWx1ZShFeGVjU3RhdGUqKSBj
b25zdAoreworICAgIHJldHVybiBqc051bWJlcigwKTsKK30KKworSlNWYWx1ZSBRdEluc3RhbmNl
Ojpib29sZWFuVmFsdWUoKSBjb25zdAoreworICAgIC8vIEVDTUEgOS4yCisgICAgcmV0dXJuIGpz
Qm9vbGVhbihnZXRPYmplY3QoKSk7Cit9CisKK0pTVmFsdWUgUXRJbnN0YW5jZTo6dmFsdWVPZihF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKGV4ZWMpOwor
fQorCitRQnl0ZUFycmF5IFF0RmllbGQ6Om5hbWUoKSBjb25zdAoreworICAgIGlmIChtX3R5cGUg
PT0gTWV0YVByb3BlcnR5KQorICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eS5uYW1lKCk7CisgICAg
aWYgKG1fdHlwZSA9PSBDaGlsZE9iamVjdCAmJiBtX2NoaWxkT2JqZWN0KQorICAgICAgICByZXR1
cm4gbV9jaGlsZE9iamVjdC5kYXRhKCktPm9iamVjdE5hbWUoKS50b0xhdGluMSgpOworI2lmbmRl
ZiBRVF9OT19QUk9QRVJUSUVTCisgICAgaWYgKG1fdHlwZSA9PSBEeW5hbWljUHJvcGVydHkpCisg
ICAgICAgIHJldHVybiBtX2R5bmFtaWNQcm9wZXJ0eTsKKyNlbmRpZgorICAgIHJldHVybiBRQnl0
ZUFycmF5KCk7IC8vIGRlbGV0ZWQgY2hpbGQgb2JqZWN0Cit9CisKK0pTVmFsdWUgUXRGaWVsZDo6
dmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdCkg
Y29uc3QKK3sKKyAgICBjb25zdCBRdEluc3RhbmNlKiBpbnN0YW5jZSA9IHN0YXRpY19jYXN0PGNv
bnN0IFF0SW5zdGFuY2UqPihpbnN0KTsKKyAgICBRT2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+Z2V0
T2JqZWN0KCk7CisKKyAgICBpZiAob2JqKSB7CisgICAgICAgIFFWYXJpYW50IHZhbDsKKyAgICAg
ICAgaWYgKG1fdHlwZSA9PSBNZXRhUHJvcGVydHkpIHsKKyAgICAgICAgICAgIGlmIChtX3Byb3Bl
cnR5LmlzUmVhZGFibGUoKSkKKyAgICAgICAgICAgICAgICB2YWwgPSBtX3Byb3BlcnR5LnJlYWQo
b2JqKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3R5cGUgPT0gQ2hpbGRPYmplY3QpCisgICAgICAg
ICAgICB2YWwgPSBRVmFyaWFudDo6ZnJvbVZhbHVlKChRT2JqZWN0KikgbV9jaGlsZE9iamVjdC5k
YXRhKCkpOworI2lmbmRlZiBRVF9OT19QUk9QRVJUSUVTCisgICAgICAgIGVsc2UgaWYgKG1fdHlw
ZSA9PSBEeW5hbWljUHJvcGVydHkpCisgICAgICAgICAgICB2YWwgPSBvYmotPnByb3BlcnR5KG1f
ZHluYW1pY1Byb3BlcnR5KTsKKyNlbmRpZgorICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9
IDA7CisgICAgICAgIEpTVmFsdWVSZWYganNWYWx1ZSA9IGNvbnZlcnRRVmFyaWFudFRvVmFsdWUo
dG9SZWYoZXhlYyksIGluc3QtPnJvb3RPYmplY3QoKSwgdmFsLCAmZXhjZXB0aW9uKTsKKyAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIGpzVmFsdWUpOworICAgIH0KKyAgICBRU3RyaW5nIG1zZyA9IFFTdHJpbmcoUUxhdGlu
MVN0cmluZygiY2Fubm90IGFjY2VzcyBtZW1iZXIgYCUxJyBvZiBkZWxldGVkIFFPYmplY3QiKSku
YXJnKFFMYXRpbjFTdHJpbmcobmFtZSgpKSk7CisgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgbXNnLnRvTGF0aW4xKCkuY29uc3REYXRh
KCkpKTsKK30KKwordm9pZCBRdEZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0Cit7CisgICAg
aWYgKG1fdHlwZSA9PSBDaGlsZE9iamVjdCkgLy8gUXRTY3JpcHQgZG9lc24ndCBhbGxvdyBzZXR0
aW5nIHRvIGEgbmFtZWQgY2hpbGQKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgUXRJbnN0
YW5jZSogaW5zdGFuY2UgPSBzdGF0aWNfY2FzdDxjb25zdCBRdEluc3RhbmNlKj4oaW5zdCk7Cisg
ICAgUU9iamVjdCogb2JqID0gaW5zdGFuY2UtPmdldE9iamVjdCgpOworICAgIGlmIChvYmopIHsK
KyAgICAgICAgUU1ldGFUeXBlOjpUeXBlIGFyZ3R5cGUgPSBRTWV0YVR5cGU6OlZvaWQ7CisgICAg
ICAgIGlmIChtX3R5cGUgPT0gTWV0YVByb3BlcnR5KQorICAgICAgICAgICAgYXJndHlwZSA9IChR
TWV0YVR5cGU6OlR5cGUpIG1fcHJvcGVydHkudXNlclR5cGUoKTsKKworICAgICAgICAvLyBkeW5h
bWljIHByb3BlcnRpZXMganVzdCBnZXQgYW55IFFWYXJpYW50CisgICAgICAgIEpTVmFsdWVSZWYg
ZXhjZXB0aW9uID0gMDsKKyAgICAgICAgUVZhcmlhbnQgdmFsID0gY29udmVydFZhbHVlVG9RVmFy
aWFudCh0b1JlZihleGVjKSwgdG9SZWYoZXhlYywgYVZhbHVlKSwgYXJndHlwZSwgMCwgJmV4Y2Vw
dGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV90eXBlID09IE1ldGFQcm9wZXJ0eSkg
eworICAgICAgICAgICAgaWYgKG1fcHJvcGVydHkuaXNXcml0YWJsZSgpKQorICAgICAgICAgICAg
ICAgIG1fcHJvcGVydHkud3JpdGUob2JqLCB2YWwpOworICAgICAgICB9CisjaWZuZGVmIFFUX05P
X1BST1BFUlRJRVMKKyAgICAgICAgZWxzZSBpZiAobV90eXBlID09IER5bmFtaWNQcm9wZXJ0eSkK
KyAgICAgICAgICAgIG9iai0+c2V0UHJvcGVydHkobV9keW5hbWljUHJvcGVydHkuY29uc3REYXRh
KCksIHZhbCk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBRU3RyaW5nIG1zZyA9IFFT
dHJpbmcoUUxhdGluMVN0cmluZygiY2Fubm90IGFjY2VzcyBtZW1iZXIgYCUxJyBvZiBkZWxldGVk
IFFPYmplY3QiKSkuYXJnKFFMYXRpbjFTdHJpbmcobmFtZSgpKSk7CisgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgbXNnLnRvTGF0aW4xKCku
Y29uc3REYXRhKCkpKTsKKyAgICB9Cit9CisKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfaW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDgwYmVk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNl
LmgKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBxdF9pbnN0YW5jZV9oCisjZGVmaW5lIHF0X2luc3Rh
bmNlX2gKKworI2luY2x1ZGUgIkJyaWRnZUpTQy5oIgorI2luY2x1ZGUgIkpTV2Vha09iamVjdE1h
cFJlZlByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWFrLmgiCisjaW5jbHVkZSAiV2Vha0lubGluZXMu
aCIKKyNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxRUG9pbnRlcj4KKyNpbmNs
dWRlIDxxaGFzaC5oPgorI2luY2x1ZGUgPHFzZXQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK25h
bWVzcGFjZSBCaW5kaW5ncyB7CisKK2NsYXNzIFF0Q2xhc3M7CitjbGFzcyBRdEZpZWxkOworY2xh
c3MgUXRSdW50aW1lTWV0aG9kOworCitjbGFzcyBXZWFrTWFwSW1wbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYWtNYXBJbXBsPiB7CitwdWJsaWM6CisgICAgV2Vha01hcEltcGwoSlNDb250ZXh0R3Jv
dXBSZWYpOworICAgIH5XZWFrTWFwSW1wbCgpOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1f
Y29udGV4dDsKKyAgICBKU1dlYWtPYmplY3RNYXBSZWYgbV9tYXA7Cit9OworCitjbGFzcyBXZWFr
TWFwIHsKK3B1YmxpYzoKKyAgICB+V2Vha01hcCgpOworCisgICAgdm9pZCBzZXQoSlNDb250ZXh0
UmVmLCB2b2lkKiBrZXksIEpTT2JqZWN0UmVmKTsKKyAgICBKU09iamVjdFJlZiBnZXQodm9pZCog
a2V5KTsKKyAgICB2b2lkIHJlbW92ZSh2b2lkKiBrZXkpOworCitwcml2YXRlOgorICAgIFJlZlB0
cjxXZWFrTWFwSW1wbD4gbV9pbXBsOworfTsKKworY2xhc3MgUXRJbnN0YW5jZSA6IHB1YmxpYyBJ
bnN0YW5jZSB7CitwdWJsaWM6CisgICAgZW51bSBWYWx1ZU93bmVyc2hpcCB7CisgICAgICAgIFF0
T3duZXJzaGlwLAorICAgICAgICBTY3JpcHRPd25lcnNoaXAsCisgICAgICAgIEF1dG9Pd25lcnNo
aXAKKyAgICB9OworCisgICAgflF0SW5zdGFuY2UoKTsKKworICAgIHZpcnR1YWwgQ2xhc3MqIGdl
dENsYXNzKCkgY29uc3Q7CisgICAgdmlydHVhbCBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2Jq
ZWN0KEV4ZWNTdGF0ZSopOworCisgICAgdmlydHVhbCB2b2lkIGJlZ2luKCk7CisgICAgdmlydHVh
bCB2b2lkIGVuZCgpOworCisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlT2YoRXhlY1N0YXRlKikg
Y29uc3Q7CisgICAgdmlydHVhbCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBQcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKKworICAgIHZpcnR1YWwgSlNWYWx1ZSBnZXRNZXRo
b2QoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKyAgICB2aXJ0dWFsIEpTVmFsdWUgaW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKTsKKworICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jik7CisKKyAgICBK
U1ZhbHVlIHN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3Q7CisgICAgSlNWYWx1ZSBu
dW1iZXJWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0OworICAgIEpTVmFsdWUgYm9vbGVhblZh
bHVlKCkgY29uc3Q7CisKKyAgICBRT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdC5kYXRhKCk7IH0KKyAgICBRT2JqZWN0KiBoYXNoS2V5KCkgY29uc3QgeyByZXR1cm4g
bV9oYXNoa2V5OyB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBnZXRRdElu
c3RhbmNlKFFPYmplY3QqLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+LCBWYWx1ZU93bmVyc2hpcCk7
CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmKTsKKworICAgIHN0YXRpYyBRdEluc3RhbmNlKiBnZXRJbnN0YW5jZShKU09iamVjdCop
OworCitwcml2YXRlOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGNyZWF0ZShR
T2JqZWN0ICppbnN0YW5jZSwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0LCBWYWx1
ZU93bmVyc2hpcCBvd25lcnNoaXApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFF0SW5zdGFuY2UoaW5zdGFuY2UsIHJvb3RPYmplY3QsIG93bmVyc2hpcCkpOworICAgIH0KKwor
ICAgIGZyaWVuZCBjbGFzcyBRdENsYXNzOworICAgIGZyaWVuZCBjbGFzcyBRdEZpZWxkOworICAg
IGZyaWVuZCBjbGFzcyBRdFJ1bnRpbWVNZXRob2Q7CisgICAgUXRJbnN0YW5jZShRT2JqZWN0Kiwg
UGFzc1JlZlB0cjxSb290T2JqZWN0PiwgVmFsdWVPd25lcnNoaXApOyAvLyBGYWN0b3J5IHByb2R1
Y2VkIG9ubHkuLgorICAgIG11dGFibGUgUXRDbGFzcyogbV9jbGFzczsKKyAgICBRUG9pbnRlcjxR
T2JqZWN0PiBtX29iamVjdDsKKyAgICBRT2JqZWN0KiBtX2hhc2hrZXk7CisgICAgbXV0YWJsZSBR
SGFzaDxRQnl0ZUFycmF5LCBRdFJ1bnRpbWVNZXRob2QqPiBtX21ldGhvZHM7CisgICAgbXV0YWJs
ZSBRSGFzaDxRU3RyaW5nLCBRdEZpZWxkKj4gbV9maWVsZHM7CisgICAgVmFsdWVPd25lcnNoaXAg
bV9vd25lcnNoaXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcGl4bWFwcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFw
cnVudGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4YTJmNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50
aW1lLmNwcApAQCAtMCwwICsxLDI3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICoKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF0X3Bp
eG1hcHJ1bnRpbWUuaCIKKworI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNsdWRlICJDYWNoZWRJ
bWFnZS5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZURh
dGEuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJKU0ltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCisj
aW5jbHVkZSAiSmF2YVNjcmlwdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKKyNpbmNs
dWRlICJTdGlsbEltYWdlUXQuaCIKKyNpbmNsdWRlIDxRQnVmZmVyPgorI2luY2x1ZGUgPFFCeXRl
QXJyYXk+CisjaW5jbHVkZSA8UUNvbG9yPgorI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxR
UGl4bWFwPgorI2luY2x1ZGUgPFFWYXJpYW50PgorI2luY2x1ZGUgPFF0RW5kaWFuPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGlu
Z3MgeworCitzdGF0aWMgdm9pZCBjb3B5UGl4ZWxzSW50byhjb25zdCBRSW1hZ2UmIHNvdXJjZUlt
YWdlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIGRlc3RQaXhlbHMpCit7
CisgICAgUUltYWdlIGltYWdlKHNvdXJjZUltYWdlKTsKKyAgICBzd2l0Y2ggKGltYWdlLmZvcm1h
dCgpKSB7CisgICAgY2FzZSBRSW1hZ2U6OkZvcm1hdF9SR0I4ODg6CisgICAgICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAgIGNvbnN0IHVjaGFyKiBzY2Fu
TGluZSA9IGltYWdlLnNjYW5MaW5lKHkpOworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgKihkZXN0UGl4ZWxzKyspID0gKihzY2Fu
TGluZSsrKTsKKyAgICAgICAgICAgICAgICAqKGRlc3RQaXhlbHMrKykgPSAqKHNjYW5MaW5lKysp
OworICAgICAgICAgICAgICAgICooZGVzdFBpeGVscysrKSA9ICooc2NhbkxpbmUrKyk7CisgICAg
ICAgICAgICAgICAgKihkZXN0UGl4ZWxzKyspID0gMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBpbWFnZSA9IGltYWdl
LmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgICAgICAvLyBGYWxs
IHRocm91Z2gKKyAgICBjYXNlIFFJbWFnZTo6Rm9ybWF0X1JHQjMyOgorICAgIGNhc2UgUUltYWdl
OjpGb3JtYXRfQVJHQjMyOgorICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KSB7CisgICAgICAgICAgICBjb25zdCBxdWludDMyKiBzY2FuTGluZSA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPGNvbnN0IHF1aW50MzIqPihpbWFnZS5zY2FuTGluZSh5KSk7CisgICAgICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICBRUmdiIHBp
eGVsID0gc2NhbkxpbmVbeF07CisgICAgICAgICAgICAgICAgcVRvQmlnRW5kaWFuPHF1aW50MzI+
KChwaXhlbCA8PCA4KSB8IHFBbHBoYShwaXhlbCksIGRlc3RQaXhlbHMpOworICAgICAgICAgICAg
ICAgIGRlc3RQaXhlbHMgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBRUGl4bWFwIHRvUGl4bWFwKGNvbnN0IFFWYXJpYW50
JiBkYXRhKQoreworICAgIGlmIChkYXRhLnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6
VHlwZT4ocU1ldGFUeXBlSWQ8UVBpeG1hcD4oKSkpCisgICAgICAgIHJldHVybiBkYXRhLnZhbHVl
PFFQaXhtYXA+KCk7CisKKyAgICBpZiAoZGF0YS50eXBlKCkgPT0gc3RhdGljX2Nhc3Q8UVZhcmlh
bnQ6OlR5cGU+KHFNZXRhVHlwZUlkPFFJbWFnZT4oKSkpCisgICAgICAgIHJldHVybiBRUGl4bWFw
Ojpmcm9tSW1hZ2UoZGF0YS52YWx1ZTxRSW1hZ2U+KCkpOworCisgICAgcmV0dXJuIFFQaXhtYXAo
KTsKK30KKworc3RhdGljIFFJbWFnZSB0b0ltYWdlKGNvbnN0IFFWYXJpYW50JiBkYXRhKQorewor
ICAgIGlmIChkYXRhLnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4ocU1ldGFU
eXBlSWQ8UUltYWdlPigpKSkKKyAgICAgICAgcmV0dXJuIGRhdGEudmFsdWU8UUltYWdlPigpOwor
CisgICAgaWYgKGRhdGEudHlwZSgpID09IHN0YXRpY19jYXN0PFFWYXJpYW50OjpUeXBlPihxTWV0
YVR5cGVJZDxRUGl4bWFwPigpKSkKKyAgICAgICAgcmV0dXJuIGRhdGEudmFsdWU8UVBpeG1hcD4o
KS50b0ltYWdlKCk7CisKKyAgICByZXR1cm4gUUltYWdlKCk7Cit9CisKK3N0YXRpYyBRU2l6ZSBp
bWFnZVNpemVGb3JWYXJpYW50KGNvbnN0IFFWYXJpYW50JiBkYXRhKQoreworICAgIGlmIChkYXRh
LnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4ocU1ldGFUeXBlSWQ8UVBpeG1h
cD4oKSkpCisgICAgICAgIHJldHVybiBkYXRhLnZhbHVlPFFQaXhtYXA+KCkuc2l6ZSgpOworICAg
IGlmIChkYXRhLnR5cGUoKSA9PSBzdGF0aWNfY2FzdDxRVmFyaWFudDo6VHlwZT4ocU1ldGFUeXBl
SWQ8UUltYWdlPigpKSkKKyAgICAgICAgcmV0dXJuIGRhdGEudmFsdWU8UUltYWdlPigpLnNpemUo
KTsKKyAgICByZXR1cm4gUVNpemUoMCwgMCk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGdldFBp
eG1hcFdpZHRoKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3Ry
aW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBRVmFyaWFudCYgZGF0YSA9ICpzdGF0aWNfY2Fz
dDxRVmFyaWFudCo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgaW1hZ2VTaXplRm9yVmFyaWFudChkYXRhKS53aWR0aCgp
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgZ2V0UGl4bWFwSGVpZ2h0KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKK3sK
KyAgICBRVmFyaWFudCYgZGF0YSA9ICpzdGF0aWNfY2FzdDxRVmFyaWFudCo+KEpTT2JqZWN0R2V0
UHJpdmF0ZShvYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwg
aW1hZ2VTaXplRm9yVmFyaWFudChkYXRhKS5oZWlnaHQoKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIGFzc2lnblRvSFRNTEltYWdlRWxlbWVudChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIG9iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoIWFyZ3VtZW50Q291bnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIEpTT2JqZWN0UmVmIG9iamVjdEFyZyA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgaWYgKCFvYmplY3RB
cmcpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IDo6dG9KUyhvYmplY3RBcmcpOworCisgICAgaWYgKCFqc09i
amVjdC0+aW5oZXJpdHMoSlNIVE1MSW1hZ2VFbGVtZW50OjppbmZvKCkpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBRVmFyaWFudCYgZGF0YSA9
ICpzdGF0aWNfY2FzdDxRVmFyaWFudCo+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKKwor
ICAgIC8vIFdlIG5vdyBrbm93IHRoYXQgd2UgaGF2ZSBhIHZhbGlkIDxpbWc+IGVsZW1lbnQgYXMg
dGhlIGFyZ3VtZW50LCB3ZSBjYW4gYXR0YWNoIHRoZSBwaXhtYXAgdG8gaXQuCisgICAgUmVmUHRy
PFN0aWxsSW1hZ2U+IHN0aWxsSW1hZ2UgPSBXZWJDb3JlOjpTdGlsbEltYWdlOjpjcmVhdGUodG9Q
aXhtYXAoZGF0YSkpOworICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEpTSFRNTEltYWdlRWxlbWVudCo+KGpzT2JqZWN0KS0+aW1wbCgpOworICAgIGltYWdl
RWxlbWVudC0+c2V0Q2FjaGVkSW1hZ2UobmV3IENhY2hlZEltYWdlKHN0aWxsSW1hZ2UuZ2V0KCkp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlUmVmIHBpeG1hcFRvSW1hZ2VEYXRhKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgb2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIFFWYXJpYW50JiBkYXRhID0gKnN0YXRpY19jYXN0PFFWYXJpYW50Kj4oSlNPYmplY3RH
ZXRQcml2YXRlKG9iamVjdCkpOworICAgIFFJbWFnZSBpbWFnZSA9IHRvSW1hZ2UoZGF0YSk7Cisg
ICAgaW50IHdpZHRoID0gaW1hZ2Uud2lkdGgoKTsKKyAgICBpbnQgaGVpZ2h0ID0gaW1hZ2UuaGVp
Z2h0KCk7CisKKyAgICBSZWZQdHI8SW1hZ2VEYXRhPiBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNy
ZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBjb3B5UGl4ZWxzSW50byhpbWFnZSwg
d2lkdGgsIGhlaWdodCwgaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSk7CisgICAgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Ojp0b0pTKEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KSkpOworICAgIEpTQzo6RXhl
Y1N0YXRlKiBleGVjID0gOjp0b0pTKGNvbnRleHQpOworICAgIHJldHVybiA6OnRvUmVmKGV4ZWMs
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbWFnZURhdGEuZ2V0KCkpKTsKK30KKworc3RhdGlj
IEpTVmFsdWVSZWYgcGl4bWFwVG9EYXRhVXJsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgb2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIFFWYXJpYW50JiBkYXRhID0gKnN0YXRpY19jYXN0PFFWYXJpYW50Kj4oSlNPYmplY3RHZXRQ
cml2YXRlKG9iamVjdCkpOworICAgIFFCeXRlQXJyYXkgYnl0ZUFycmF5OworICAgIFFCdWZmZXIg
YnVmZmVyKCZieXRlQXJyYXkpOworICAgIHRvSW1hZ2UoZGF0YSkuc2F2ZSgmYnVmZmVyLCAiUE5H
Iik7CisgICAgUUJ5dGVBcnJheSBlbmNvZGVkID0gUUJ5dGVBcnJheSgiZGF0YTppbWFnZS9wbmc7
YmFzZTY0LCIpICsgYnl0ZUFycmF5LnRvQmFzZTY0KCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IHN0cihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZW5jb2RlZC5j
b25zdERhdGEoKSkpOworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmluZyhj
b250ZXh0LCBzdHIuZ2V0KCkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBwaXhtYXBUb1N0cmluZyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIG9iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBR
VmFyaWFudCYgZGF0YSA9ICpzdGF0aWNfY2FzdDxRVmFyaWFudCo+KEpTT2JqZWN0R2V0UHJpdmF0
ZShvYmplY3QpKTsKKyAgICBRU2l6ZSBzaXplID0gaW1hZ2VTaXplRm9yVmFyaWFudChkYXRhKTsK
KyAgICBRU3RyaW5nIHN0cmluZ1ZhbHVlID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiW1F0IE5hdGl2
ZSBQaXhtYXAgJTEsJTJdIikuYXJnKHNpemUud2lkdGgoKSkuYXJnKHNpemUuaGVpZ2h0KCkpOwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHIoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHN0cmluZ1ZhbHVlLnRvVXRmOCgpLmNvbnN0RGF0YSgpKSk7CisgICAgSlNW
YWx1ZVJlZiB2YWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIHN0ci5nZXQoKSk7CisK
KyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmFsaXplUGl4bWFwKEpTT2Jq
ZWN0UmVmIG9iamVjdCkKK3sKKyAgICBkZWxldGUgc3RhdGljX2Nhc3Q8UVZhcmlhbnQqPihKU09i
amVjdEdldFByaXZhdGUob2JqZWN0KSk7Cit9CisKK0pTT2JqZWN0UmVmIFF0UGl4bWFwUnVudGlt
ZTo6dG9KUyhKU0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgUVZhcmlhbnQmIHZhbHVlLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgcmV0dXJuIEpTT2JqZWN0TWFrZShjb250ZXh0LCBn
ZXRDbGFzc1JlZigpLCBuZXcgUVZhcmlhbnQodmFsdWUpKTsKK30KKworc3RhdGljIFFWYXJpYW50
IGVtcHR5VmFyaWFudEZvckhpbnQoUU1ldGFUeXBlOjpUeXBlIGhpbnQpCit7CisgICAgaWYgKGhp
bnQgPT0gcU1ldGFUeXBlSWQ8UVBpeG1hcD4oKSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpm
cm9tVmFsdWUoUVBpeG1hcCgpKTsKKyAgICBpZiAoaGludCA9PSBxTWV0YVR5cGVJZDxRSW1hZ2U+
KCkpCisgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKFFJbWFnZSgpKTsKKyAgICBy
ZXR1cm4gUVZhcmlhbnQoKTsKK30KKworUVZhcmlhbnQgUXRQaXhtYXBSdW50aW1lOjp0b1F0KEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmosIFFNZXRhVHlwZTo6VHlwZSBoaW50
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVy
biBlbXB0eVZhcmlhbnRGb3JIaW50KGhpbnQpOworCisgICAgaWYgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MoY29udGV4dCwgb2JqLCBRdFBpeG1hcFJ1bnRpbWU6OmdldENsYXNzUmVmKCkpKSB7Cisg
ICAgICAgIFFWYXJpYW50KiBvcmlnaW5hbFZhcmlhbnQgPSBzdGF0aWNfY2FzdDxRVmFyaWFudCo+
KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmopKTsKKyAgICAgICAgaWYgKGhpbnQgPT0gcU1ldGFUeXBl
SWQ8UVBpeG1hcD4oKSkKKyAgICAgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFQ
aXhtYXA+KHRvUGl4bWFwKCpvcmlnaW5hbFZhcmlhbnQpKTsKKworICAgICAgICBpZiAoaGludCA9
PSBxTWV0YVR5cGVJZDxRSW1hZ2U+KCkpCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZy
b21WYWx1ZTxRSW1hZ2U+KHRvSW1hZ2UoKm9yaWdpbmFsVmFyaWFudCkpOworICAgIH0KKworICAg
IEpTT2JqZWN0KiBqc09iamVjdCA9IDo6dG9KUyhvYmopOworICAgIGlmICghanNPYmplY3QtPmlu
aGVyaXRzKEpTSFRNTEltYWdlRWxlbWVudDo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5
VmFyaWFudEZvckhpbnQoaGludCk7CisKKyAgICBKU0hUTUxJbWFnZUVsZW1lbnQqIGVsZW1lbnRK
U1dyYXBwZXIgPSBzdGF0aWNfY2FzdDxKU0hUTUxJbWFnZUVsZW1lbnQqPihqc09iamVjdCk7Cisg
ICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gZWxlbWVudEpTV3JhcHBlci0+aW1w
bCgpOworCisgICAgaWYgKCFpbWFnZUVsZW1lbnQpCisgICAgICAgIHJldHVybiBlbXB0eVZhcmlh
bnRGb3JIaW50KGhpbnQpOworCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkSW1hZ2UpCisgICAgICAgIHJl
dHVybiBlbXB0eVZhcmlhbnRGb3JIaW50KGhpbnQpOworCisgICAgSW1hZ2UqIGltYWdlID0gY2Fj
aGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpKTsKKyAg
ICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZW1wdHlWYXJpYW50Rm9ySGludChoaW50KTsK
KworICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIGlmICghcGl4bWFwKQorICAgICAgICByZXR1cm4gZW1wdHlWYXJpYW50Rm9ySGlu
dChoaW50KTsKKworICAgIHJldHVybiAoaGludCA9PSBzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5
cGU+KHFNZXRhVHlwZUlkPFFQaXhtYXA+KCkpKQorICAgICAgICA/IFFWYXJpYW50Ojpmcm9tVmFs
dWU8UVBpeG1hcD4oKnBpeG1hcCkKKyAgICAgICAgOiBRVmFyaWFudDo6ZnJvbVZhbHVlPFFJbWFn
ZT4ocGl4bWFwLT50b0ltYWdlKCkpOworfQorCitib29sIFF0UGl4bWFwUnVudGltZTo6Y2FuSGFu
ZGxlKFFNZXRhVHlwZTo6VHlwZSBoaW50KQoreworICAgIHJldHVybiBoaW50ID09IHFNZXRhVHlw
ZUlkPFFJbWFnZT4oKSB8fCBoaW50ID09IHFNZXRhVHlwZUlkPFFQaXhtYXA+KCk7Cit9CisKK0pT
Q2xhc3NSZWYgUXRQaXhtYXBSdW50aW1lOjpnZXRDbGFzc1JlZigpCit7CisgICAgc3RhdGljIGNv
bnN0IEpTU3RhdGljVmFsdWUgc3RhdGljVmFsdWVzW10gPSB7CisgICAgICAgIHsgIndpZHRoIiwg
Z2V0UGl4bWFwV2lkdGgsIDAsIDAgfSwKKyAgICAgICAgeyAiaGVpZ2h0IiwgZ2V0UGl4bWFwSGVp
Z2h0LCAwLCAwIH0sCisgICAgICAgIHsgMCwgMCwgMCwgMH0KKyAgICB9OworCisgICAgc3RhdGlj
IGNvbnN0IEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CisgICAgICAgIHsg
ImFzc2lnblRvSFRNTEltYWdlRWxlbWVudCIsIGFzc2lnblRvSFRNTEltYWdlRWxlbWVudCwgMCB9
LAorICAgICAgICB7ICJ0b0RhdGFVcmwiLCBwaXhtYXBUb0RhdGFVcmwsIDAgfSwKKyAgICAgICAg
eyAidG9JbWFnZURhdGEiLCBwaXhtYXBUb0ltYWdlRGF0YSwgMCB9LAorICAgICAgICB7ICJ0b1N0
cmluZyIsIHBpeG1hcFRvU3RyaW5nLCAwIH0sCisgICAgICAgIHsgMCwgMCwgMCB9CisgICAgfTsK
KworICAgIHN0YXRpYyBjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiBjbGFzc0RlZmluaXRpb24gPSB7
CisgICAgICAgIDAsIDAsICJRdFBpeG1hcFJ1bnRpbWVPYmplY3QiLCAwLCBzdGF0aWNWYWx1ZXMs
IHN0YXRpY0Z1bmN0aW9ucywKKyAgICAgICAgMCwgZmluYWxpemVQaXhtYXAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAKKyAgICB9OworCisgICAgc3RhdGljIEpTQ2xhc3NSZWYgY2xhc3NSZWYg
PSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZmluaXRpb24pOworICAgIHJldHVybiBjbGFzc1JlZjsK
K30KKworCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9w
aXhtYXBydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGlt
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZGEwMTYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5oCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqCisgKi8KKworI2lmbmRlZiBxdF9waXhtYXBydW50aW1lX2gKKyNkZWZpbmUgcXRfcGl4bWFw
cnVudGltZV9oCisKKyNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0
LmgiCisjaW5jbHVkZSA8UVZhcmlhbnQ+CisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2Ug
QmluZGluZ3MgeworCitjbGFzcyBRdFBpeG1hcFJ1bnRpbWUgeworcHVibGljOgorICAgIHN0YXRp
YyBKU09iamVjdFJlZiB0b0pTKEpTQ29udGV4dFJlZiwgY29uc3QgUVZhcmlhbnQmLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pOworICAgIHN0YXRpYyBRVmFyaWFudCB0b1F0KEpTQ29udGV4dFJlZiwg
SlNPYmplY3RSZWYsIFFNZXRhVHlwZTo6VHlwZSBoaW50LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OworICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZShRTWV0YVR5cGU6OlR5cGUgaGludCk7CisKKyAg
ICBzdGF0aWMgSlNDbGFzc1JlZiBnZXRDbGFzc1JlZigpOworfTsKKworfQorCit9CisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yNjlhYzZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCkBAIC0wLDAgKzEsMTU5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAicXRfcnVudGltZS5oIgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgor
I2luY2x1ZGUgIkFQSVNoaW1zLmgiCisjaW5jbHVkZSAiQm9vbGVhbk9iamVjdC5oIgorI2luY2x1
ZGUgIkRhdGVJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRhdGVQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKKyNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpT
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTSFRN
TEVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
I2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheS5o
IgorI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFy
cmF5LmgiCisjaW5jbHVkZSAicWRhdGV0aW1lLmgiCisjaW5jbHVkZSAicWRlYnVnLmgiCisjaW5j
bHVkZSAicW1ldGFvYmplY3QuaCIKKyNpbmNsdWRlICJxbWV0YXR5cGUuaCIKKyNpbmNsdWRlICJx
b2JqZWN0LmgiCisjaW5jbHVkZSAicXN0cmluZ2xpc3QuaCIKKyNpbmNsdWRlICJxdF9pbnN0YW5j
ZS5oIgorI2luY2x1ZGUgInF0X3BpeG1hcHJ1bnRpbWUuaCIKKyNpbmNsdWRlICJxdmFybGVuZ3Ro
YXJyYXkuaCIKKyNpbmNsdWRlIDxKU0Z1bmN0aW9uLmg+CisKKyNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
KyNpbmNsdWRlIDxydW50aW1lX2FycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZV9vYmplY3QuaD4K
KworLy8gUXRTY3JpcHQgaGFzIHRoZXNlCitRX0RFQ0xBUkVfTUVUQVRZUEUoUU9iamVjdExpc3Qp
OworUV9ERUNMQVJFX01FVEFUWVBFKFFMaXN0PGludD4pOworUV9ERUNMQVJFX01FVEFUWVBFKFFW
YXJpYW50KTsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBKU0Mgewor
bmFtZXNwYWNlIEJpbmRpbmdzIHsKKworLy8gRGVidWdnaW5nCisvLyNkZWZpbmUgUVRXS19SVU5U
SU1FX0NPTlZFUlNJT05fREVCVUcKKy8vI2RlZmluZSBRVFdLX1JVTlRJTUVfTUFUQ0hfREVCVUcK
KworY2xhc3MgUVdLTm9EZWJ1ZworeworcHVibGljOgorICAgIGlubGluZSBRV0tOb0RlYnVnKCl7
fQorICAgIGlubGluZSB+UVdLTm9EZWJ1Zygpe30KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgaW5saW5lIFFXS05vRGVidWcgJm9wZXJhdG9yPDwoY29uc3QgVCAmKSB7IHJldHVybiAq
dGhpczsgfQorfTsKKworI2lmZGVmIFFUV0tfUlVOVElNRV9DT05WRVJTSU9OX0RFQlVHCisjZGVm
aW5lIHFDb252RGVidWcoKSBxRGVidWcoKQorI2Vsc2UKKyNkZWZpbmUgcUNvbnZEZWJ1ZygpIFFX
S05vRGVidWcoKQorI2VuZGlmCisKKyNpZmRlZiBRVFdLX1JVTlRJTUVfTUFUQ0hfREVCVUcKKyNk
ZWZpbmUgcU1hdGNoRGVidWcoKSBxRGVidWcoKQorI2Vsc2UKKyNkZWZpbmUgcU1hdGNoRGVidWco
KSBRV0tOb0RlYnVnKCkKKyNlbmRpZgorCit0eXBlZGVmIGVudW0geworICAgIFZhcmlhbnQgPSAw
LAorICAgIE51bWJlciwKKyAgICBCb29sZWFuLAorICAgIFJUU3RyaW5nLAorICAgIERhdGUsCisg
ICAgQXJyYXksCisgICAgUU9iaiwKKyAgICBPYmplY3QsCisgICAgTnVsbCwKKyAgICBSVFVpbnQ4
QXJyYXkKK30gSlNSZWFsVHlwZTsKKworI2lmIGRlZmluZWQoUVRXS19SVU5USU1FX0NPTlZFUlNJ
T05fREVCVUcpIHx8IGRlZmluZWQoUVRXS19SVU5USU1FX01BVENIX0RFQlVHKQorUURlYnVnIG9w
ZXJhdG9yPDwoUURlYnVnIGRiZywgY29uc3QgSlNSZWFsVHlwZSAmYykKK3sKKyAgICAgY29uc3Qg
Y2hhciAqbWFwW10gPSB7ICJWYXJpYW50IiwgIk51bWJlciIsICJCb29sZWFuIiwgIlJUU3RyaW5n
IiwgIkRhdGUiLAorICAgICAgICAgIkFycmF5IiwgIlJUT2JqZWN0IiwgIk9iamVjdCIsICJOdWxs
In07CisKKyAgICAgZGJnLm5vc3BhY2UoKSA8PCAiSlNUeXBlKCIgPDwgKChpbnQpYykgPDwgIiwg
IiA8PCAgbWFwW2NdIDw8ICIpIjsKKworICAgICByZXR1cm4gZGJnLnNwYWNlKCk7Cit9CisjZW5k
aWYKKwordm9pZCBzZXRFeGNlcHRpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbiwgY29uc3QgUVN0cmluZyYgdGV4dCkKK3sKKyAgICBpZiAoIWV4Y2VwdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgSlNTdHJpbmdSZWYgZXJyb3JTdHIgPSBKU1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh0ZXh0LnRvVXRmOCgpKTsKKyAgICBKU1ZhbHVlUmVmIGVycm9y
VmFsW10gPSB7IEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGVycm9yU3RyKSB9OworICAgICpl
eGNlcHRpb24gPSBKU09iamVjdE1ha2VFcnJvcihjb250ZXh0LCAxLCBlcnJvclZhbCwgMCk7Cisg
ICAgSlNTdHJpbmdSZWxlYXNlKGVycm9yU3RyKTsKK30KKworc3RydWN0IFJ1bnRpbWVDb252ZXJz
aW9uIHsKKyAgICBDb252ZXJ0VG9KU1ZhbHVlRnVuY3Rpb24gdG9KU1ZhbHVlRnVuYzsKKyAgICBD
b252ZXJ0VG9WYXJpYW50RnVuY3Rpb24gdG9WYXJpYW50RnVuYzsKK307CisKK3R5cGVkZWYgUUhh
c2g8aW50LCBSdW50aW1lQ29udmVyc2lvbj4gUnVudGltZUNvbnZlcnNpb25UYWJsZTsKK1FfR0xP
QkFMX1NUQVRJQyhSdW50aW1lQ29udmVyc2lvblRhYmxlLCBjdXN0b21SdW50aW1lQ29udmVyc2lv
bnMpCisKK3ZvaWQgcmVnaXN0ZXJDdXN0b21UeXBlKGludCBxdE1ldGFUeXBlSWQsIENvbnZlcnRU
b1ZhcmlhbnRGdW5jdGlvbiB0b1ZhcmlhbnRGdW5jLCBDb252ZXJ0VG9KU1ZhbHVlRnVuY3Rpb24g
dG9KU1ZhbHVlRnVuYykKK3sKKyAgICBSdW50aW1lQ29udmVyc2lvbiBjb252ZXJzaW9uOworICAg
IGNvbnZlcnNpb24udG9KU1ZhbHVlRnVuYyA9IHRvSlNWYWx1ZUZ1bmM7CisgICAgY29udmVyc2lv
bi50b1ZhcmlhbnRGdW5jID0gdG9WYXJpYW50RnVuYzsKKyAgICBjdXN0b21SdW50aW1lQ29udmVy
c2lvbnMoKS0+aW5zZXJ0KHF0TWV0YVR5cGVJZCwgY29udmVyc2lvbik7Cit9CisKK3N0YXRpYyBi
b29sIGlzSlNVaW50OEFycmF5KEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICByZXR1cm4gdG9K
UyhvYmplY3QpLT5pbmhlcml0cyhKU1VpbnQ4QXJyYXk6OmluZm8oKSk7Cit9CisKK3N0YXRpYyBi
b29sIGlzSlNBcnJheShKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgcmV0dXJuIHRvSlMob2Jq
ZWN0KS0+aW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKTsKK30KKworc3RhdGljIGJvb2wgaXNKU0Rh
dGUoSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIHJldHVybiB0b0pTKG9iamVjdCktPmluaGVy
aXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKTsKK30KKworc3RhdGljIGJvb2wgaXNRdE9iamVjdChK
U09iamVjdFJlZiBvYmplY3QpCit7CisgICAgcmV0dXJuIHRvSlMob2JqZWN0KS0+aW5oZXJpdHMo
UnVudGltZU9iamVjdDo6aW5mbygpKTsKK30KKworc3RhdGljIEpTUmVhbFR5cGUgdmFsdWVSZWFs
VHlwZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgdmFsdWUpKQor
ICAgICAgICByZXR1cm4gTnVtYmVyOworICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwg
dmFsdWUpKQorICAgICAgICByZXR1cm4gUlRTdHJpbmc7CisgICAgaWYgKEpTVmFsdWVJc0Jvb2xl
YW4oY29udGV4dCwgdmFsdWUpKQorICAgICAgICByZXR1cm4gQm9vbGVhbjsKKyAgICBpZiAoSlNW
YWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBOdWxsOworICAgIGlm
ICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFJUU3Ry
aW5nOyAvLyBJIGRvbid0IGtub3cuCisKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7CisKKyAgICBpZiAoaXNKU1VpbnQ4
QXJyYXkob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIFJUVWludDhBcnJheTsKKyAgICBpZiAoaXNK
U0FycmF5KG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gQXJyYXk7CisgICAgaWYgKGlzSlNE
YXRlKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gRGF0ZTsKKyAgICBpZiAoaXNRdE9iamVj
dChvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIFFPYmo7CisKKyAgICByZXR1cm4gT2JqZWN0
OworfQorCitzdGF0aWMgUVN0cmluZyB0b1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmdSZWYpCit7
CisgICAgcmV0dXJuIFFTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KEpTU3Ry
aW5nR2V0Q2hhcmFjdGVyc1B0cihzdHJpbmdSZWYpKSwgSlNTdHJpbmdHZXRMZW5ndGgoc3RyaW5n
UmVmKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHVud3JhcEJveGVkUHJpbWl0aXZlKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU09iamVjdFJlZiBvYmopCit7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICBBUElFbnRyeVNoaW0gZW50
cnlTaGltKGV4ZWMpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTKG9iaik7CisgICAgaWYg
KG9iamVjdC0+aW5oZXJpdHMoTnVtYmVyT2JqZWN0OjppbmZvKCkpKQorICAgICAgICByZXR1cm4g
dG9SZWYoZXhlYywganNOdW1iZXIob2JqZWN0LT50b051bWJlcihleGVjKSkpOworICAgIGlmIChv
YmplY3QtPmluaGVyaXRzKFN0cmluZ09iamVjdDo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIG9iamVjdC0+dG9TdHJpbmcoZXhlYykpOworICAgIGlmIChvYmplY3QtPmluaGVy
aXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCisgICAgICAgIHJldHVybiB0b1JlZihleGVjLCBv
YmplY3QtPnRvUHJpbWl0aXZlKGV4ZWMpKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1FWYXJp
YW50IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBRTWV0
YVR5cGU6OlR5cGUsIGludCosIEhhc2hTZXQ8SlNPYmplY3RSZWY+KiwgaW50LCBKU1ZhbHVlUmVm
ICpleGNlcHRpb24pOworCitzdGF0aWMgUVZhcmlhbnRNYXAgY29udmVydFZhbHVlVG9RVmFyaWFu
dE1hcChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBIYXNoU2V0PEpT
T2JqZWN0UmVmPiogdmlzaXRlZE9iamVjdHMsIGludCByZWN1cnNpb25MaW1pdCwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIFFWYXJpYW50TWFwIHJlc3VsdDsKKyAgICBKU1Byb3BlcnR5
TmFtZUFycmF5UmVmIHByb3BlcnRpZXMgPSBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRl
eHQsIG9iamVjdCk7CisgICAgc2l6ZV90IHByb3BlcnR5Q291bnQgPSBKU1Byb3BlcnR5TmFtZUFy
cmF5R2V0Q291bnQocHJvcGVydGllcyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
b3BlcnR5Q291bnQ7ICsraSkgeworICAgICAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNQcm9wZXJ0
eU5hbWVBcnJheUdldE5hbWVBdEluZGV4KHByb3BlcnRpZXMsIGkpOworCisgICAgICAgIGludCBw
cm9wZXJ0eUNvbnZlcnNpb25EaXN0YW5jZSA9IDA7CisgICAgICAgIEpTVmFsdWVSZWYgcHJvcGVy
dHkgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgbmFtZSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgUVZhcmlhbnQgdiA9IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoY29udGV4dCwg
cHJvcGVydHksIFFNZXRhVHlwZTo6Vm9pZCwgJnByb3BlcnR5Q29udmVyc2lvbkRpc3RhbmNlLCB2
aXNpdGVkT2JqZWN0cywgcmVjdXJzaW9uTGltaXQsIGV4Y2VwdGlvbik7CisgICAgICAgIGlmIChl
eGNlcHRpb24gJiYgKmV4Y2VwdGlvbikKKyAgICAgICAgICAgICpleGNlcHRpb24gPSAwOworICAg
ICAgICBlbHNlIGlmIChwcm9wZXJ0eUNvbnZlcnNpb25EaXN0YW5jZSA+PSAwKSB7CisgICAgICAg
ICAgICByZXN1bHQuaW5zZXJ0KHRvU3RyaW5nKG5hbWUpLCB2KTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVsZWFzZShwcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlbVR5cGU+CitRTGlzdDxJdGVtVHlw
ZT4gY29udmVydFRvTGlzdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNSZWFsVHlwZSB0eXBlLCBK
U09iamVjdFJlZiBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVmIHZhbHVlLCBpbnQqIGRpc3RhbmNlLCBIYXNoU2V0PEpTT2JqZWN0UmVmPiogdmlzaXRlZE9i
amVjdHMsIGludCByZWN1cnNpb25MaW1pdCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUU1ldGFUeXBlOjpUeXBlIHR5cGVJZCA9IHN0
YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4ocU1ldGFUeXBlSWQ8SXRlbVR5cGU+KCkpKQorewor
ICAgIFFMaXN0PEl0ZW1UeXBlPiBsaXN0OworICAgIGlmICh0eXBlID09IEFycmF5KSB7CisgICAg
ICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBsZW5ndGhTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygibGVuZ3RoIik7CisgICAgICAgIEpTVmFsdWVSZWYgbGVuZ3RoVmFsID0gSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBvYmplY3QsIGxlbmd0aFN0ciwgZXhjZXB0aW9uKTsKKyAg
ICAgICAgc2l6ZV90IGxlbmd0aCA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBsZW5ndGhWYWws
IGV4Y2VwdGlvbik7CisgICAgICAgIGxpc3QucmVzZXJ2ZShsZW5ndGgpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVlUmVm
IHZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4dCwgb2JqZWN0LCBpLCBl
eGNlcHRpb24pOworICAgICAgICAgICAgaW50IGl0ZW1EaXN0YW5jZSA9IC0xOworICAgICAgICAg
ICAgUVZhcmlhbnQgdmFyaWFudCA9IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoY29udGV4dCwgdmFs
dWUsIHR5cGVJZCwgJml0ZW1EaXN0YW5jZSwgdmlzaXRlZE9iamVjdHMsIHJlY3Vyc2lvbkxpbWl0
LCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYgKGl0ZW1EaXN0YW5jZSA+PSAwKQorICAgICAg
ICAgICAgICAgIGxpc3QgPDwgdmFyaWFudC52YWx1ZTxJdGVtVHlwZT4oKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAobGlz
dC5jb3VudCgpICE9IGxlbmd0aCkKKyAgICAgICAgICAgIGxpc3QuY2xlYXIoKTsKKyAgICAgICAg
ZWxzZSBpZiAoZGlzdGFuY2UpCisgICAgICAgICAgICAqZGlzdGFuY2UgPSA1OworICAgIH0gZWxz
ZSB7CisgICAgICAgIGludCBpdGVtRGlzdGFuY2UgPSAtMTsKKyAgICAgICAgUVZhcmlhbnQgdmFy
aWFudCA9IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQoY29udGV4dCwgdmFsdWUsIHR5cGVJZCwgJml0
ZW1EaXN0YW5jZSwgdmlzaXRlZE9iamVjdHMsIHJlY3Vyc2lvbkxpbWl0LCBleGNlcHRpb24pOwor
ICAgICAgICBpZiAoaXRlbURpc3RhbmNlID49IDApIHsKKyAgICAgICAgICAgIGxpc3QgPDwgdmFy
aWFudC52YWx1ZTxJdGVtVHlwZT4oKTsKKyAgICAgICAgICAgIGlmIChkaXN0YW5jZSkKKyAgICAg
ICAgICAgICAgICAqZGlzdGFuY2UgPSAxMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bGlzdDsKK30KKworc3RhdGljIFFTdHJpbmcgdG9RU3RyaW5nKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzdHJp
bmcoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKKyAgICBp
ZiAoIXN0cmluZykKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gUVN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRy
KHN0cmluZy5nZXQoKSkpLCBKU1N0cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpKTsKK30KKwor
c3RhdGljIHZvaWQgZ2V0R3JlZ29yaWFuRGF0ZVRpbWVVVEMoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTUmVhbFR5cGUgdHlwZSwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3RSZWYgb2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24sIEdyZWdvcmlhbkRhdGVUaW1lKiBnZHQpCit7CisgICAgRXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGlt
KGV4ZWMpOworICAgIGlmICh0eXBlID09IERhdGUpIHsKKyAgICAgICAgSlNPYmplY3QqIGpzT2Jq
ZWN0ID0gdG9KUyhvYmplY3QpOworICAgICAgICBEYXRlSW5zdGFuY2UqIGRhdGUgPSBhc0RhdGVJ
bnN0YW5jZShqc09iamVjdCk7CisgICAgICAgIGdkdC0+Y29weUZyb20oKmRhdGUtPmdyZWdvcmlh
bkRhdGVUaW1lVVRDKGV4ZWMpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkb3VibGUgbXMgPSBK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7CisgICAgICAgIEdyZWdv
cmlhbkRhdGVUaW1lIGNvbnZlcnRlZEdkdDsKKyAgICAgICAgbXNUb0dyZWdvcmlhbkRhdGVUaW1l
KGV4ZWMtPnZtKCksIG1zLCAvKnV0YyovIHRydWUsIGNvbnZlcnRlZEdkdCk7CisgICAgICAgIGdk
dC0+Y29weUZyb20oY29udmVydGVkR2R0KTsKKyAgICB9Cit9CisKK3N0YXRpYyBRRGF0ZVRpbWUg
dG9RRGF0ZVRpbWVVVEMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTUmVhbFR5cGUgdHlwZSwgSlNW
YWx1ZVJlZiB2YWx1ZSwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
Cit7CisgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ2R0OworICAgIGdldEdyZWdvcmlhbkRhdGVUaW1l
VVRDKGNvbnRleHQsIHR5cGUsIHZhbHVlLCBvYmplY3QsIGV4Y2VwdGlvbiwgJmdkdCk7CisgICAg
UURhdGUgZGF0ZShnZHQueWVhcigpLCBnZHQubW9udGgoKSArIDEsIGdkdC5tb250aERheSgpKTsK
KyAgICBRVGltZSB0aW1lKGdkdC5ob3VyKCksIGdkdC5taW51dGUoKSwgZ2R0LnNlY29uZCgpKTsK
KyAgICByZXR1cm4gUURhdGVUaW1lKGRhdGUsIHRpbWUsIFF0OjpVVEMpOworfQorCitRVmFyaWFu
dCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IHZhbHVlLCBRTWV0YVR5cGU6OlR5cGUgaGludCwgaW50ICpkaXN0YW5jZSwgSGFzaFNldDxKU09i
amVjdFJlZj4qIHZpc2l0ZWRPYmplY3RzLCBpbnQgcmVjdXJzaW9uTGltaXQsIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICAtLXJlY3Vyc2lvbkxpbWl0OworCisgICAgaWYgKCF2YWx1ZSB8
fCAhcmVjdXJzaW9uTGltaXQpCisgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworCisgICAgSlNP
YmplY3RSZWYgb2JqZWN0ID0gMDsKKyAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHZh
bHVlKSkgeworICAgICAgICBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUs
IDApOworICAgICAgICBpZiAodmlzaXRlZE9iamVjdHMtPmNvbnRhaW5zKG9iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKworICAgICAgICB2aXNpdGVkT2JqZWN0cy0+YWRk
KG9iamVjdCk7CisKKyAgICAgICAgdmFsdWUgPSB1bndyYXBCb3hlZFByaW1pdGl2ZShjb250ZXh0
LCB2YWx1ZSwgb2JqZWN0KTsKKyAgICB9CisKKyAgICAvLyBjaGVjayBtYWdpYyBwb2ludGVyIHZh
bHVlcyBiZWZvcmUgZGVyZWZlcmVuY2luZyB2YWx1ZQorICAgIGlmIChKU1ZhbHVlSXNOdW1iZXIo
Y29udGV4dCwgdmFsdWUpCisgICAgICAgICYmIHN0ZDo6aXNuYW4oSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIHZhbHVlLCBleGNlcHRpb24pKSkgeworICAgICAgICBpZiAoZGlzdGFuY2UpCisgICAg
ICAgICAgICAqZGlzdGFuY2UgPSAtMTsKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgICAg
fQorCisgICAgaWYgKEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkgJiYgaGludCAh
PSBRTWV0YVR5cGU6OlFTdHJpbmcgJiYgaGludCAhPSAoUU1ldGFUeXBlOjpUeXBlKSBxTWV0YVR5
cGVJZDxRVmFyaWFudD4oKSkgeworICAgICAgICBpZiAoZGlzdGFuY2UpCisgICAgICAgICAgICAq
ZGlzdGFuY2UgPSAtMTsKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgICAgfQorCisgICAg
SlNSZWFsVHlwZSB0eXBlID0gdmFsdWVSZWFsVHlwZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9u
KTsKKyAgICBpZiAoaGludCA9PSBRTWV0YVR5cGU6OlZvaWQpIHsKKyAgICAgICAgc3dpdGNoKHR5
cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTnVtYmVyOgorICAgICAgICAgICAgICAgIGhpbnQgPSBR
TWV0YVR5cGU6OkRvdWJsZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBoaW50ID0gUU1ldGFUeXBlOjpCb29sOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBSVFN0cmluZzoKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaGludCA9IFFNZXRhVHlwZTo6UVN0cmluZzsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRGF0ZToKKyAgICAgICAg
ICAgICAgICBoaW50ID0gUU1ldGFUeXBlOjpRRGF0ZVRpbWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIE9iamVjdDoKKyAgICAgICAgICAgICAgICBoaW50ID0gUU1l
dGFUeXBlOjpRVmFyaWFudE1hcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgUU9iajoKKyAgICAgICAgICAgICAgICBoaW50ID0gUU1ldGFUeXBlOjpRT2JqZWN0U3Rh
cjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUlRVaW50OEFycmF5
OgorICAgICAgICAgICAgICAgIGhpbnQgPSBRTWV0YVR5cGU6OlFCeXRlQXJyYXk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFycmF5OgorICAgICAgICAgICAgICAg
IGhpbnQgPSBRTWV0YVR5cGU6OlFWYXJpYW50TGlzdDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHFDb252RGVidWcoKSA8PCAiY29udmVydFZhbHVlVG9R
VmFyaWFudDoganN0eXBlIGlzICIgPDwgdHlwZSA8PCAiLCBoaW50IGlzIiA8PCBoaW50OworCisg
ICAgaWYgKEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpCisgICAgICAgICYmIGhpbnQgIT0g
UU1ldGFUeXBlOjpRT2JqZWN0U3RhcgorICAgICAgICAmJiBoaW50ICE9IFFNZXRhVHlwZTo6Vm9p
ZFN0YXIKKyAgICAgICAgJiYgaGludCAhPSBRTWV0YVR5cGU6OlFTdHJpbmcKKyAgICAgICAgJiYg
aGludCAhPSAoUU1ldGFUeXBlOjpUeXBlKSBxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgeworICAg
ICAgICBpZiAoZGlzdGFuY2UpCisgICAgICAgICAgICAqZGlzdGFuY2UgPSAtMTsKKyAgICAgICAg
cmV0dXJuIFFWYXJpYW50KCk7CisgICAgfQorCisgICAgUVZhcmlhbnQgcmV0OworICAgIGludCBk
aXN0ID0gLTE7CisgICAgc3dpdGNoIChoaW50KSB7CisgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpC
b29sOgorICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0
LCB2YWx1ZSkpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQm9vbGVhbikKKyAgICAgICAgICAg
ICAgICBkaXN0ID0gMDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkaXN0ID0g
MTA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFFNZXRhVHlwZTo6SW50Ogor
ICAgICAgICBjYXNlIFFNZXRhVHlwZTo6VUludDoKKyAgICAgICAgY2FzZSBRTWV0YVR5cGU6Okxv
bmc6CisgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpVTG9uZzoKKyAgICAgICAgY2FzZSBRTWV0YVR5
cGU6OkxvbmdMb25nOgorICAgICAgICBjYXNlIFFNZXRhVHlwZTo6VUxvbmdMb25nOgorICAgICAg
ICBjYXNlIFFNZXRhVHlwZTo6U2hvcnQ6CisgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpVU2hvcnQ6
CisgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpGbG9hdDoKKyAgICAgICAgY2FzZSBRTWV0YVR5cGU6
OkRvdWJsZToKKyAgICAgICAgICAgIHJldCA9IFFWYXJpYW50KEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCB2YWx1ZSwgMCkpOworICAgICAgICAgICAgcmV0LmNvbnZlcnQoKFFWYXJpYW50OjpUeXBl
KWhpbnQpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gTnVtYmVyKSB7CisgICAgICAgICAgICAg
ICAgc3dpdGNoIChoaW50KSB7CisgICAgICAgICAgICAgICAgY2FzZSBRTWV0YVR5cGU6OkRvdWJs
ZToKKyAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpGbG9hdDoKKyAgICAgICAgICAg
ICAgICAgICAgZGlzdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgUU1ldGFUeXBlOjpMb25nTG9uZzoKKyAgICAgICAgICAgICAgICBjYXNlIFFN
ZXRhVHlwZTo6VUxvbmdMb25nOgorICAgICAgICAgICAgICAgICAgICBkaXN0ID0gMjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBRTWV0YVR5cGU6Okxv
bmc6CisgICAgICAgICAgICAgICAgY2FzZSBRTWV0YVR5cGU6OlVMb25nOgorICAgICAgICAgICAg
ICAgICAgICBkaXN0ID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBRTWV0YVR5cGU6OkludDoKKyAgICAgICAgICAgICAgICBjYXNlIFFNZXRhVHlw
ZTo6VUludDoKKyAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDQ7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpTaG9ydDoKKyAgICAg
ICAgICAgICAgICBjYXNlIFFNZXRhVHlwZTo6VVNob3J0OgorICAgICAgICAgICAgICAgICAgICBk
aXN0ID0gNTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGRp
c3QgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXN0ID0gMTA7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFFNZXRhVHlwZTo6UUNo
YXI6CisgICAgICAgICAgICBpZiAodHlwZSA9PSBOdW1iZXIgfHwgdHlwZSA9PSBCb29sZWFuKSB7
CisgICAgICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoUUNoYXIoKHVzaG9ydClKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgdmFsdWUsIDApKSk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0g
Qm9vbGVhbikKKyAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDM7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBkaXN0ID0gNjsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cihBZG9wdCwgSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKSk7CisgICAgICAgICAg
ICAgICAgUUNoYXIgY2g7CisgICAgICAgICAgICAgICAgaWYgKHN0ciAmJiBKU1N0cmluZ0dldExl
bmd0aChzdHIuZ2V0KCkpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgY2ggPSAqcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBRQ2hhcio+KEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzdHIuZ2V0KCkp
KTsKKyAgICAgICAgICAgICAgICByZXQgPSBRVmFyaWFudChjaCk7CisgICAgICAgICAgICAgICAg
aWYgKHR5cGUgPT0gUlRTdHJpbmcpCisgICAgICAgICAgICAgICAgICAgIGRpc3QgPSAzOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGlzdCA9IDEwOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBRTWV0YVR5cGU6OlFT
dHJpbmc6IHsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8
fCBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGRpc3RhbmNlKQorICAgICAgICAgICAgICAgICAgICAqZGlzdGFuY2UgPSAxOworICAgICAg
ICAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc3RyKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNv
bnRleHQsIHZhbHVlLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIGlmIChzdHIpIHsKKyAgICAg
ICAgICAgICAgICBRU3RyaW5nIHN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4o
SlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKHN0ci5nZXQoKSkpLCBKU1N0cmluZ0dldExlbmd0aChz
dHIuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICByZXQgPSBRVmFyaWFudChzdHJpbmcpOworICAg
ICAgICAgICAgICAgIGlmICh0eXBlID09IFJUU3RyaW5nKQorICAgICAgICAgICAgICAgICAgICBk
aXN0ID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRpc3Qg
PSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBRTWV0YVR5cGU6OlFWYXJpYW50TWFwOgorICAgICAgICAgICAgaWYgKHR5cGUg
PT0gT2JqZWN0IHx8IHR5cGUgPT0gQXJyYXkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBRVmFy
aWFudChjb252ZXJ0VmFsdWVUb1FWYXJpYW50TWFwKGNvbnRleHQsIG9iamVjdCwgdmlzaXRlZE9i
amVjdHMsIHJlY3Vyc2lvbkxpbWl0LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAvLyBU
aG9zZSB0eXBlcyBjYW4gc3RpbGwgaGF2ZSBwZXJmZWN0IG1hdGNoZXMsIGUuZy4gJ2Jvb2wnIGlm
IHZhbHVlIGlzIGEgQm9vbGVhbiBPYmplY3QuCisgICAgICAgICAgICAgICAgZGlzdCA9IDE7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFFNZXRhVHlw
ZTo6UVZhcmlhbnRMaXN0OgorICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoY29udmVydFRvTGlz
dDxRVmFyaWFudD4oY29udGV4dCwgdHlwZSwgb2JqZWN0LCB2YWx1ZSwgJmRpc3QsIHZpc2l0ZWRP
YmplY3RzLCByZWN1cnNpb25MaW1pdCwgZXhjZXB0aW9uLCBRTWV0YVR5cGU6OlZvaWQpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpRU3RyaW5nTGlzdDog
eworICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoY29udmVydFRvTGlzdDxRU3RyaW5nPihjb250
ZXh0LCB0eXBlLCBvYmplY3QsIHZhbHVlLCAmZGlzdCwgdmlzaXRlZE9iamVjdHMsIHJlY3Vyc2lv
bkxpbWl0LCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBRTWV0YVR5cGU6OlFCeXRlQXJyYXk6IHsKKyAgICAgICAgICAgIGlmICh0eXBl
ID09IFJUVWludDhBcnJheSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxKU0M6OlVpbnQ4QXJy
YXk+IGFyciA9IHRvVWludDhBcnJheSh0b0pTKHRvSlMoY29udGV4dCksIHZhbHVlKSk7CisgICAg
ICAgICAgICAgICAgcmV0ID0gUVZhcmlhbnQoUUJ5dGVBcnJheShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihhcnItPmRhdGEoKSksIGFyci0+bGVuZ3RoKCkpKTsKKyAgICAgICAgICAgICAg
ICBkaXN0ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0ID0g
UVZhcmlhbnQodG9RU3RyaW5nKGNvbnRleHQsIHZhbHVlKS50b0xhdGluMSgpKTsKKyAgICAgICAg
ICAgICAgICBpZiAodHlwZSA9PSBSVFN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgZGlzdCA9
IDU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkaXN0ID0gMTA7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgUU1ldGFUeXBlOjpRRGF0ZVRpbWU6CisgICAgICAgIGNhc2UgUU1ldGFUeXBlOjpRRGF0
ZToKKyAgICAgICAgY2FzZSBRTWV0YVR5cGU6OlFUaW1lOgorICAgICAgICAgICAgaWYgKHR5cGUg
PT0gRGF0ZSB8fCB0eXBlID09IE51bWJlcikgeworICAgICAgICAgICAgICAgIFFEYXRlVGltZSBk
dCA9IHRvUURhdGVUaW1lVVRDKGNvbnRleHQsIHR5cGUsIHZhbHVlLCBvYmplY3QsIGV4Y2VwdGlv
bik7CisgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBpc051bWJlciA9ICh0eXBlID09IE51bWJl
cik7CisgICAgICAgICAgICAgICAgaWYgKGhpbnQgPT0gUU1ldGFUeXBlOjpRRGF0ZVRpbWUpIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHQ7CisgICAgICAgICAgICAgICAgICAgIGRpc3Qg
PSBpc051bWJlciA/IDYgOiAwOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGludCA9PSBR
TWV0YVR5cGU6OlFEYXRlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGR0LmRhdGUoKTsK
KyAgICAgICAgICAgICAgICAgICAgZGlzdCA9IGlzTnVtYmVyID8gOCA6IDE7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHQudGltZSgpOworICAg
ICAgICAgICAgICAgICAgICBkaXN0ID0gaXNOdW1iZXIgPyAxMCA6IDI7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFJUU3RyaW5nKSB7CisgICAgICAg
ICAgICAgICAgUVN0cmluZyBxc3RyaW5nID0gdG9RU3RyaW5nKGNvbnRleHQsIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBpZiAoaGludCA9PSBRTWV0YVR5cGU6OlFEYXRlVGltZSkgeworICAgICAg
ICAgICAgICAgICAgICBRRGF0ZVRpbWUgZHQgPSBRRGF0ZVRpbWU6OmZyb21TdHJpbmcocXN0cmlu
ZywgUXQ6OklTT0RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWR0LmlzVmFsaWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGR0ID0gUURhdGVUaW1lOjpmcm9tU3RyaW5nKHFzdHJp
bmcsIFF0OjpUZXh0RGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghZHQuaXNWYWxpZCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgZHQgPSBRRGF0ZVRpbWU6OmZyb21TdHJpbmcocXN0
cmluZywgUXQ6OlN5c3RlbUxvY2FsZURhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWR0
LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0ID0gUURhdGVUaW1lOjpmcm9t
U3RyaW5nKHFzdHJpbmcsIFF0OjpMb2NhbGVEYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGR0LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkaXN0ID0gMjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGludCA9PSBRTWV0YVR5cGU6OlFEYXRlKSB7CisgICAg
ICAgICAgICAgICAgICAgIFFEYXRlIGR0ID0gUURhdGU6OmZyb21TdHJpbmcocXN0cmluZywgUXQ6
OklTT0RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWR0LmlzVmFsaWQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGR0ID0gUURhdGU6OmZyb21TdHJpbmcocXN0cmluZywgUXQ6OlRl
eHREYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkdC5pc1ZhbGlkKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBkdCA9IFFEYXRlOjpmcm9tU3RyaW5nKHFzdHJpbmcsIFF0OjpTeXN0
ZW1Mb2NhbGVEYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkdC5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBkdCA9IFFEYXRlOjpmcm9tU3RyaW5nKHFzdHJpbmcsIFF0
OjpMb2NhbGVEYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGR0LmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkaXN0ID0gMzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIFFUaW1lIGR0ID0gUVRpbWU6OmZyb21TdHJpbmcocXN0
cmluZywgUXQ6OklTT0RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWR0LmlzVmFsaWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0ID0gUVRpbWU6OmZyb21TdHJpbmcocXN0cmlu
ZywgUXQ6OlRleHREYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkdC5pc1ZhbGlkKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBkdCA9IFFUaW1lOjpmcm9tU3RyaW5nKHFzdHJpbmcs
IFF0OjpTeXN0ZW1Mb2NhbGVEYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkdC5pc1Zh
bGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkdCA9IFFUaW1lOjpmcm9tU3RyaW5nKHFz
dHJpbmcsIFF0OjpMb2NhbGVEYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGR0LmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBkaXN0ID0gMzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
UU1ldGFUeXBlOjpRT2JqZWN0U3RhcjoKKyAgICAgICAgICAgIGlmICh0eXBlID09IFFPYmopIHsK
KyAgICAgICAgICAgICAgICBRdEluc3RhbmNlKiBxdGluc3QgPSBRdEluc3RhbmNlOjpnZXRJbnN0
YW5jZSh0b0pTKG9iamVjdCkpOworICAgICAgICAgICAgICAgIGlmIChxdGluc3QpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHF0aW5zdC0+Z2V0T2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHFDb252RGVidWcoKSA8PCAiZm91bmQgaW5zdGFuY2UsIHdpdGggb2JqZWN0OiIg
PDwgKHZvaWQqKSBxdGluc3QtPmdldE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0ID0gUVZhcmlhbnQ6OmZyb21WYWx1ZShxdGluc3QtPmdldE9iamVjdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHFDb252RGVidWcoKSA8PCByZXQ7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkaXN0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHFDb252RGVidWcoKSA8PCAiY2FuJ3QgY29udmVydCBkZWxldGVkIHFvYmpl
Y3QiOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgcUNvbnZEZWJ1ZygpIDw8ICJ3YXNuJ3QgYSBxdGluc3RhbmNlIjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTnVsbCkg
eworICAgICAgICAgICAgICAgIFFPYmplY3QqIG51bGxvYmogPSAwOworICAgICAgICAgICAgICAg
IHJldCA9IFFWYXJpYW50Ojpmcm9tVmFsdWUobnVsbG9iaik7CisgICAgICAgICAgICAgICAgZGlz
dCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHFDb252RGVidWco
KSA8PCAicHJldmlvdXMgdHlwZSB3YXMgbm90IGFuIG9iamVjdDoiIDw8IHR5cGU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFFNZXRhVHlwZTo6Vm9p
ZFN0YXI6CisgICAgICAgICAgICBpZiAodHlwZSA9PSBRT2JqKSB7CisgICAgICAgICAgICAgICAg
UXRJbnN0YW5jZSogcXRpbnN0ID0gUXRJbnN0YW5jZTo6Z2V0SW5zdGFuY2UodG9KUyhvYmplY3Qp
KTsKKyAgICAgICAgICAgICAgICBpZiAocXRpbnN0KSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChxdGluc3QtPmdldE9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBxQ29udkRl
YnVnKCkgPDwgImZvdW5kIGluc3RhbmNlLCB3aXRoIG9iamVjdDoiIDw8ICh2b2lkKikgcXRpbnN0
LT5nZXRPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IFFWYXJpYW50Ojpm
cm9tVmFsdWUoKHZvaWQgKilxdGluc3QtPmdldE9iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHFDb252RGVidWcoKSA8PCByZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHFDb252RGVidWcoKSA8PCAiY2FuJ3QgY29udmVydCBkZWxldGVkIHFvYmplY3QiOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgcUNvbnZEZWJ1ZygpIDw8ICJ3YXNuJ3QgYSBxdGluc3RhbmNlIjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gTnVsbCkgeworICAgICAg
ICAgICAgICAgIHJldCA9IFFWYXJpYW50Ojpmcm9tVmFsdWUoKHZvaWQqKTApOworICAgICAgICAg
ICAgICAgIGRpc3QgPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IE51bWJlcikg
eworICAgICAgICAgICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgdGhhdCBjb252ZXJ0aW5nIGEgZG91
YmxlIHRvIGEgcG9pbnRlciBpcyBhIHdpc2UKKyAgICAgICAgICAgICAgICAvLyBtb3ZlLiAgRXhj
ZXB0IG1heWJlIDAuCisgICAgICAgICAgICAgICAgcUNvbnZEZWJ1ZygpIDw8ICJnb3QgbnVtYmVy
IGZvciB2b2lkICogLSBub3QgY29udmVydGluZywgc2VlbXMgdW5zYWZlOiIgPDwgSlNWYWx1ZVRv
TnVtYmVyKGNvbnRleHQsIHZhbHVlLCAwKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcUNvbnZEZWJ1ZygpIDw8ICJ2b2lkKiAtIHVuaGFuZGxlZCB0eXBlIiA8PCB0eXBl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIC8vIE5vbiBjb25zdCB0eXBlIGlkcworICAgICAgICAgICAgaWYgKGhpbnQg
PT0gKFFNZXRhVHlwZTo6VHlwZSkgcU1ldGFUeXBlSWQ8UU9iamVjdExpc3Q+KCkpIHsKKyAgICAg
ICAgICAgICAgICByZXQgPSBRVmFyaWFudDo6ZnJvbVZhbHVlKGNvbnZlcnRUb0xpc3Q8UU9iamVj
dCo+KGNvbnRleHQsIHR5cGUsIG9iamVjdCwgdmFsdWUsICZkaXN0LCB2aXNpdGVkT2JqZWN0cywg
cmVjdXJzaW9uTGltaXQsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGhpbnQgPT0gKFFNZXRhVHlwZTo6VHlwZSkgcU1l
dGFUeXBlSWQ8UUxpc3Q8aW50PiA+KCkpIHsKKyAgICAgICAgICAgICAgICByZXQgPSBRVmFyaWFu
dDo6ZnJvbVZhbHVlKGNvbnZlcnRUb0xpc3Q8aW50Pihjb250ZXh0LCB0eXBlLCBvYmplY3QsIHZh
bHVlLCAmZGlzdCwgdmlzaXRlZE9iamVjdHMsIHJlY3Vyc2lvbkxpbWl0LCBleGNlcHRpb24pKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChR
dFBpeG1hcFJ1bnRpbWU6OmNhbkhhbmRsZShzdGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KGhp
bnQpKSkgeworICAgICAgICAgICAgICAgIHJldCA9IFF0UGl4bWFwUnVudGltZTo6dG9RdChjb250
ZXh0LCBvYmplY3QsIHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4oaGludCksIGV4Y2VwdGlv
bik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGN1c3RvbVJ1bnRpbWVDb252ZXJzaW9ucygpLT5j
b250YWlucyhoaW50KSkgeworICAgICAgICAgICAgICAgIHJldCA9IGN1c3RvbVJ1bnRpbWVDb252
ZXJzaW9ucygpLT52YWx1ZShoaW50KS50b1ZhcmlhbnRGdW5jKHRvSlMob2JqZWN0KSwgJmRpc3Qs
IHZpc2l0ZWRPYmplY3RzKTsKKyAgICAgICAgICAgICAgICBpZiAoZGlzdCA9PSAwKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaGludCA9PSAoUU1l
dGFUeXBlOjpUeXBlKSBxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgeworICAgICAgICAgICAgICAg
IGlmIChKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNVbmRlZmluZWQo
Y29udGV4dCwgdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICpkaXN0YW5jZSA9IDE7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBRVmFyaWFudCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAodHlwZSA9PSBPYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgaGF2
ZW4ndCByZWFsbHkgdmlzaXRlZCB0aGlzIG9iamVjdCB5ZXQsIHdlIHJlbW92ZSBpdAorICAgICAg
ICAgICAgICAgICAgICB2aXNpdGVkT2JqZWN0cy0+cmVtb3ZlKG9iamVjdCk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gQW5kIHRoZW4gcmVjdXJzZSB3aXRoIHRoZSBh
dXRvZGV0ZWN0IGZsYWcKKyAgICAgICAgICAgICAgICByZXQgPSBjb252ZXJ0VmFsdWVUb1FWYXJp
YW50KGNvbnRleHQsIHZhbHVlLCBRTWV0YVR5cGU6OlZvaWQsIGRpc3RhbmNlLCB2aXNpdGVkT2Jq
ZWN0cywgcmVjdXJzaW9uTGltaXQsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgZGlzdCA9
IDEwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBkaXN0ID0gMTA7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIXJldC5p
c1ZhbGlkKCkpCisgICAgICAgIGRpc3QgPSAtMTsKKyAgICBpZiAoZGlzdGFuY2UpCisgICAgICAg
ICpkaXN0YW5jZSA9IGRpc3Q7CisKKyAgICByZXR1cm4gcmV0OworfQorCitRVmFyaWFudCBjb252
ZXJ0VmFsdWVUb1FWYXJpYW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVl
LCBRTWV0YVR5cGU6OlR5cGUgaGludCwgaW50ICpkaXN0YW5jZSwgSlNWYWx1ZVJlZiAqZXhjZXB0
aW9uKQoreworICAgIGNvbnN0IGludCByZWN1cnNpb25MaW1pdCA9IDIwMDsKKyAgICBIYXNoU2V0
PEpTT2JqZWN0UmVmPiB2aXNpdGVkT2JqZWN0czsKKyAgICByZXR1cm4gY29udmVydFZhbHVlVG9R
VmFyaWFudChjb250ZXh0LCB2YWx1ZSwgaGludCwgZGlzdGFuY2UsICZ2aXNpdGVkT2JqZWN0cywg
cmVjdXJzaW9uTGltaXQsIGV4Y2VwdGlvbik7Cit9CisKK0pTVmFsdWVSZWYgY29udmVydFFWYXJp
YW50VG9WYWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1JlZlB0cjxSb290T2JqZWN0PiBy
b290LCBjb25zdCBRVmFyaWFudCYgdmFyaWFudCwgSlNWYWx1ZVJlZiAqZXhjZXB0aW9uKQorewor
ICAgIC8vIFZhcmlhbnRzIHdpdGggUU9iamVjdCAqIGNhbiBiZSBpc051bGwgYnV0IG5vdCBhIG51
bGwgcG9pbnRlcgorICAgIC8vIEFuIGVtcHR5IFFTdHJpbmcgdmFyaWFudCBpcyBhbHNvIG51bGwK
KyAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZSA9IChRTWV0YVR5cGU6OlR5cGUpIHZhcmlhbnQudXNl
clR5cGUoKTsKKworICAgIHFDb252RGVidWcoKSA8PCAiY29udmVydFFWYXJpYW50VG9WYWx1ZTog
bWV0YXR5cGU6IiA8PCB0eXBlIDw8ICIsIGlzbnVsbDogIiA8PCB2YXJpYW50LmlzTnVsbCgpOwor
ICAgIGlmICh2YXJpYW50LmlzTnVsbCgpICYmCisgICAgICAgICFRTWV0YVR5cGU6OnR5cGVGbGFn
cyh0eXBlKS50ZXN0RmxhZyhRTWV0YVR5cGU6OlBvaW50ZXJUb1FPYmplY3QpICYmCisgICAgICAg
IHR5cGUgIT0gUU1ldGFUeXBlOjpWb2lkU3RhciAmJgorICAgICAgICB0eXBlICE9IFFNZXRhVHlw
ZTo6UVN0cmluZykgeworICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdWxsKGNvbnRleHQpOwor
ICAgIH0KKworICAgIGlmICh0eXBlID09IFFNZXRhVHlwZTo6Qm9vbCkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB2YXJpYW50LnRvQm9vbCgpKTsKKworICAgIGlm
ICh0eXBlID09IFFNZXRhVHlwZTo6SW50IHx8CisgICAgICAgIHR5cGUgPT0gUU1ldGFUeXBlOjpV
SW50IHx8CisgICAgICAgIHR5cGUgPT0gUU1ldGFUeXBlOjpMb25nIHx8CisgICAgICAgIHR5cGUg
PT0gUU1ldGFUeXBlOjpVTG9uZyB8fAorICAgICAgICB0eXBlID09IFFNZXRhVHlwZTo6TG9uZ0xv
bmcgfHwKKyAgICAgICAgdHlwZSA9PSBRTWV0YVR5cGU6OlVMb25nTG9uZyB8fAorICAgICAgICB0
eXBlID09IFFNZXRhVHlwZTo6U2hvcnQgfHwKKyAgICAgICAgdHlwZSA9PSBRTWV0YVR5cGU6OlVT
aG9ydCB8fAorICAgICAgICB0eXBlID09IFFNZXRhVHlwZTo6RmxvYXQgfHwKKyAgICAgICAgdHlw
ZSA9PSBRTWV0YVR5cGU6OkRvdWJsZSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVy
KGNvbnRleHQsIHZhcmlhbnQudG9Eb3VibGUoKSk7CisKKyAgICBpZiAodHlwZSA9PSBRTWV0YVR5
cGU6OlFEYXRlVGltZSB8fAorICAgICAgICB0eXBlID09IFFNZXRhVHlwZTo6UURhdGUgfHwKKyAg
ICAgICAgdHlwZSA9PSBRTWV0YVR5cGU6OlFUaW1lKSB7CisKKyAgICAgICAgUURhdGUgZGF0ZSA9
IFFEYXRlOjpjdXJyZW50RGF0ZSgpOworICAgICAgICBRVGltZSB0aW1lKDAsMCwwKTsgLy8gbWlk
bmlnaHQKKworICAgICAgICBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OlFEYXRlKQorICAgICAgICAg
ICAgZGF0ZSA9IHZhcmlhbnQudmFsdWU8UURhdGU+KCk7CisgICAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gUU1ldGFUeXBlOjpRVGltZSkKKyAgICAgICAgICAgIHRpbWUgPSB2YXJpYW50LnZhbHVlPFFU
aW1lPigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFFEYXRlVGltZSBkdCA9IHZhcmlh
bnQudmFsdWU8UURhdGVUaW1lPigpLnRvTG9jYWxUaW1lKCk7CisgICAgICAgICAgICBkYXRlID0g
ZHQuZGF0ZSgpOworICAgICAgICAgICAgdGltZSA9IGR0LnRpbWUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIERhdGVzIHNwZWNpZmllZCB0aGlzIHdheSBhcmUgaW4gbG9jYWwgdGltZSAod2Ug
Y29udmVydCBEYXRlVGltZXMgYWJvdmUpCisgICAgICAgIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10gPSB7CisgICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBkYXRlLnll
YXIoKSksCisgICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBkYXRlLm1vbnRo
KCkgLSAxKSwKKyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGRhdGUuZGF5
KCkpLAorICAgICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdGltZS5ob3VyKCkp
LAorICAgICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdGltZS5taW51dGUoKSks
CisgICAgICAgICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0aW1lLnNlY29uZCgpKSwK
KyAgICAgICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHRpbWUubXNlYygpKQorICAg
ICAgICB9OworICAgICAgICByZXR1cm4gSlNPYmplY3RNYWtlRGF0ZShjb250ZXh0LCA3LCBhcmd1
bWVudHMsIGV4Y2VwdGlvbik7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpR
Qnl0ZUFycmF5KSB7CisgICAgICAgIFFCeXRlQXJyYXkgcXRCeXRlQXJyYXkgPSB2YXJpYW50LnZh
bHVlPFFCeXRlQXJyYXk+KCk7CisgICAgICAgIFdURjo6UmVmUHRyPEpTQzo6VWludDhDbGFtcGVk
QXJyYXk+IHd0ZkJ5dGVBcnJheSA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQocXRCeXRlQXJyYXkubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkod3RmQnl0ZUFy
cmF5LT5kYXRhKCksIHF0Qnl0ZUFycmF5LmNvbnN0RGF0YSgpLCBxdEJ5dGVBcnJheS5sZW5ndGgo
KSk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgICAgIEFQ
SUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgICAgIHJldHVybiB0b1JlZihleGVjLCB0
b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKSwgd3RmQnl0ZUFycmF5LmdldCgpKSk7CisgICAgfQorCisgICAgaWYgKFFN
ZXRhVHlwZTo6dHlwZUZsYWdzKHR5cGUpLnRlc3RGbGFnKFFNZXRhVHlwZTo6UG9pbnRlclRvUU9i
amVjdCkpIHsKKyAgICAgICAgUU9iamVjdCogb2JqID0gdmFyaWFudC52YWx1ZTxRT2JqZWN0Kj4o
KTsKKyAgICAgICAgaWYgKCFvYmopCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdWxs
KGNvbnRleHQpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOworICAg
ICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgICAgICByZXR1cm4gdG9SZWYo
ZXhlYywgUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZShvYmosIHJvb3QsIFF0SW5zdGFuY2U6OlF0
T3duZXJzaGlwKS0+Y3JlYXRlUnVudGltZU9iamVjdChleGVjKSk7CisgICAgfQorCisgICAgaWYg
KFF0UGl4bWFwUnVudGltZTo6Y2FuSGFuZGxlKHN0YXRpY19jYXN0PFFNZXRhVHlwZTo6VHlwZT4o
dmFyaWFudC50eXBlKCkpKSkKKyAgICAgICAgcmV0dXJuIFF0UGl4bWFwUnVudGltZTo6dG9KUyhj
b250ZXh0LCB2YXJpYW50LCBleGNlcHRpb24pOworCisgICAgaWYgKGN1c3RvbVJ1bnRpbWVDb252
ZXJzaW9ucygpLT5jb250YWlucyh0eXBlKSkgeworICAgICAgICBpZiAoIXJvb3QtPmdsb2JhbE9i
amVjdCgpLT5pbmhlcml0cyhKU0RPTVdpbmRvdzo6aW5mbygpKSkKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSAoc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihyb290LT5nbG9iYWxPYmplY3QoKSkp
LT5pbXBsKCktPmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
ZXhlYyk7CisgICAgICAgIHJldHVybiB0b1JlZihleGVjLCBjdXN0b21SdW50aW1lQ29udmVyc2lv
bnMoKS0+dmFsdWUodHlwZSkudG9KU1ZhbHVlRnVuYyhleGVjLCB0b0pTRE9NR2xvYmFsT2JqZWN0
KGRvY3VtZW50LCBleGVjKSwgdmFyaWFudCkpOworICAgIH0KKworICAgIGlmICh0eXBlID09IFFN
ZXRhVHlwZTo6UVZhcmlhbnRNYXApIHsKKyAgICAgICAgLy8gY3JlYXRlIGEgbmV3IG9iamVjdCwg
YW5kIHN0dWZmIHByb3BlcnRpZXMgaW50byBpdAorICAgICAgICBKU09iamVjdFJlZiByZXQgPSBK
U09iamVjdE1ha2UoY29udGV4dCwgMCwgMCk7CisgICAgICAgIFFWYXJpYW50TWFwIG1hcCA9IHZh
cmlhbnQudmFsdWU8UVZhcmlhbnRNYXA+KCk7CisgICAgICAgIFFWYXJpYW50TWFwOjpjb25zdF9p
dGVyYXRvciBpID0gbWFwLmNvbnN0QmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKGkgIT0gbWFwLmNv
bnN0RW5kKCkpIHsKKyAgICAgICAgICAgIFFTdHJpbmcgcyA9IGkua2V5KCk7CisgICAgICAgICAg
ICBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNDaGFyKj4ocy5jb25zdERhdGEoKSksIHMubGVuZ3Ro
KCkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcm9wZXJ0eVZhbHVlID0gY29udmVydFFWYXJp
YW50VG9WYWx1ZShjb250ZXh0LCByb290LmdldCgpLCBpLnZhbHVlKCksIC8qaWdub3JlZCBleGNl
cHRpb24qLzApOworICAgICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUpCisgICAgICAgICAgICAg
ICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCByZXQsIHByb3BlcnR5TmFtZSwgcHJvcGVy
dHlWYWx1ZSwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCAvKmlnbm9yZWQgZXhjZXB0aW9uKi8w
KTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShwcm9wZXJ0eU5hbWUpOworICAgICAgICAg
ICAgKytpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAv
LyBMaXN0IHR5cGVzCisgICAgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpRVmFyaWFudExpc3QpIHsK
KyAgICAgICAgLy8gIyMjIFRPRE86IENvdWxkIHVzZSBzcGVjaWFsIGFycmF5IGNsYXNzIHRoYXQg
bGF6aWx5IGNvbnZlcnRzLgorICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk0NjkxCisgICAgICAgIFFWYXJpYW50TGlzdCB2bCA9IHZhcmlhbnQu
dG9MaXN0KCk7CisgICAgICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gSlNPYmplY3RNYWtlQXJyYXko
Y29udGV4dCwgMCwgMCwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbiAmJiAqZXhj
ZXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGFycmF5OworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IHZsLmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZVJlZiBwcm9wZXJ0
eSA9IGNvbnZlcnRRVmFyaWFudFRvVmFsdWUoY29udGV4dCwgcm9vdC5nZXQoKSwgdmwuYXQoaSks
IC8qaWdub3JlZCBleGNlcHRpb24qLzApOworICAgICAgICAgICAgaWYgKHByb3BlcnR5KQorICAg
ICAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBp
LCBwcm9wZXJ0eSwgLyppZ25vcmVkIGV4Y2VwdGlvbiovMCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGFycmF5OworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBRTWV0YVR5cGU6OlFTdHJpbmdM
aXN0KSB7CisgICAgICAgIFFTdHJpbmdMaXN0IHNsID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nTGlz
dD4oKTsKKyAgICAgICAgSlNPYmplY3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250
ZXh0LCAwLCAwLCBleGNlcHRpb24pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNsLmNv
dW50KCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgUVN0cmluZyYgcyA9IHNsLmF0KGkpOwor
ICAgICAgICAgICAgSlNTdHJpbmdSZWYganNTdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNDaGFyKj4ocy5jb25zdERhdGEoKSksIHMu
bGVuZ3RoKCkpOworICAgICAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoY29udGV4
dCwgYXJyYXksIGksIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGpzU3RyaW5nKSwgLyppZ25v
cmVkIGV4Y2VwdGlvbiovMCk7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UoanNTdHJpbmcp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gc3RhdGljX2Nhc3Q8UU1ldGFUeXBlOjpUeXBlPihxTWV0YVR5cGVJZDxRT2JqZWN0TGlzdD4o
KSkpIHsKKyAgICAgICAgUU9iamVjdExpc3Qgb2wgPSB2YXJpYW50LnZhbHVlPFFPYmplY3RMaXN0
PigpOworICAgICAgICBKU09iamVjdFJlZiBhcnJheSA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRl
eHQsIDAsIDAsIGV4Y2VwdGlvbik7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29u
dGV4dCk7CisgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgb2wuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBKU1ZhbHVl
UmVmIGpzT2JqZWN0ID0gdG9SZWYoZXhlYywgUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZShvbC5h
dChpKSwgcm9vdCwgUXRJbnN0YW5jZTo6UXRPd25lcnNoaXApLT5jcmVhdGVSdW50aW1lT2JqZWN0
KGV4ZWMpKTsKKyAgICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQs
IGFycmF5LCBpLCBqc09iamVjdCwgLyppZ25vcmVkIGV4Y2VwdGlvbiovMCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBzdGF0aWNfY2Fz
dDxRTWV0YVR5cGU6OlR5cGU+KHFNZXRhVHlwZUlkPFFMaXN0PGludD4gPigpKSkgeworICAgICAg
ICBRTGlzdDxpbnQ+IGlsID0gdmFyaWFudC52YWx1ZTxRTGlzdDxpbnQ+ID4oKTsKKyAgICAgICAg
SlNPYmplY3RSZWYgYXJyYXkgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCBleGNl
cHRpb24pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlsLmNvdW50KCk7ICsraSkKKyAg
ICAgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIGFycmF5LCBpLCBK
U1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBpbC5hdChpKSksIC8qaWdub3JlZCBleGNlcHRpb24q
LzApOworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gKFFN
ZXRhVHlwZTo6VHlwZSlxTWV0YVR5cGVJZDxRVmFyaWFudD4oKSkgeworICAgICAgICBRVmFyaWFu
dCByZWFsID0gdmFyaWFudC52YWx1ZTxRVmFyaWFudD4oKTsKKyAgICAgICAgcUNvbnZEZWJ1Zygp
IDw8ICJyZWFsIHZhcmlhbnQgaXM6IiA8PCByZWFsOworICAgICAgICByZXR1cm4gY29udmVydFFW
YXJpYW50VG9WYWx1ZShjb250ZXh0LCByb290LmdldCgpLCByZWFsLCBleGNlcHRpb24pOworICAg
IH0KKworICAgIHFDb252RGVidWcoKSA8PCAiZmFsbGJhY2sgcGF0aCBmb3IiIDw8IHZhcmlhbnQg
PDwgdmFyaWFudC51c2VyVHlwZSgpOworCisgICAgUVN0cmluZyBzdHJpbmcgPSB2YXJpYW50LnRv
U3RyaW5nKCk7CisgICAgSlNTdHJpbmdSZWYganNzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgSlNDaGFyKj4oc3RyaW5nLmNvbnN0RGF0
YSgpKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNWYWx1ZU1h
a2VTdHJpbmcoY29udGV4dCwganNzdHJpbmcpOworICAgIEpTU3RyaW5nUmVsZWFzZShqc3N0cmlu
Zyk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCisvLyBUeXBlIGNvbnZlcnNpb24gbWV0YWRhdGEg
KGZyb20gUXRTY3JpcHQgb3JpZ2luYWxseSkKK2NsYXNzIFF0TWV0aG9kTWF0Y2hUeXBlCit7Citw
dWJsaWM6CisgICAgZW51bSBLaW5kIHsKKyAgICAgICAgSW52YWxpZCwKKyAgICAgICAgVmFyaWFu
dCwKKyAgICAgICAgTWV0YVR5cGUsCisgICAgICAgIFVucmVzb2x2ZWQsCisgICAgICAgIE1ldGFF
bnVtCisgICAgfTsKKworCisgICAgUXRNZXRob2RNYXRjaFR5cGUoKQorICAgICAgICA6IG1fa2lu
ZChJbnZhbGlkKSB7IH0KKworICAgIEtpbmQga2luZCgpIGNvbnN0CisgICAgeyByZXR1cm4gbV9r
aW5kOyB9CisKKyAgICBRTWV0YVR5cGU6OlR5cGUgdHlwZUlkKCkgY29uc3Q7CisKKyAgICBib29s
IGlzVmFsaWQoKSBjb25zdAorICAgIHsgcmV0dXJuIChtX2tpbmQgIT0gSW52YWxpZCk7IH0KKwor
ICAgIGJvb2wgaXNWYXJpYW50KCkgY29uc3QKKyAgICB7IHJldHVybiAobV9raW5kID09IFZhcmlh
bnQpOyB9CisKKyAgICBib29sIGlzTWV0YVR5cGUoKSBjb25zdAorICAgIHsgcmV0dXJuIChtX2tp
bmQgPT0gTWV0YVR5cGUpOyB9CisKKyAgICBib29sIGlzVW5yZXNvbHZlZCgpIGNvbnN0CisgICAg
eyByZXR1cm4gKG1fa2luZCA9PSBVbnJlc29sdmVkKTsgfQorCisgICAgYm9vbCBpc01ldGFFbnVt
KCkgY29uc3QKKyAgICB7IHJldHVybiAobV9raW5kID09IE1ldGFFbnVtKTsgfQorCisgICAgUUJ5
dGVBcnJheSBuYW1lKCkgY29uc3Q7CisKKyAgICBpbnQgZW51bWVyYXRvckluZGV4KCkgY29uc3QK
KyAgICB7IFFfQVNTRVJUKGlzTWV0YUVudW0oKSk7IHJldHVybiBtX3R5cGVJZDsgfQorCisgICAg
c3RhdGljIFF0TWV0aG9kTWF0Y2hUeXBlIHZhcmlhbnQoKQorICAgIHsgcmV0dXJuIFF0TWV0aG9k
TWF0Y2hUeXBlKFZhcmlhbnQpOyB9CisKKyAgICBzdGF0aWMgUXRNZXRob2RNYXRjaFR5cGUgbWV0
YVR5cGUoaW50IHR5cGVJZCwgY29uc3QgUUJ5dGVBcnJheSAmbmFtZSkKKyAgICB7IHJldHVybiBR
dE1ldGhvZE1hdGNoVHlwZShNZXRhVHlwZSwgdHlwZUlkLCBuYW1lKTsgfQorCisgICAgc3RhdGlj
IFF0TWV0aG9kTWF0Y2hUeXBlIG1ldGFFbnVtKGludCBlbnVtSW5kZXgsIGNvbnN0IFFCeXRlQXJy
YXkgJm5hbWUpCisgICAgeyByZXR1cm4gUXRNZXRob2RNYXRjaFR5cGUoTWV0YUVudW0sIGVudW1J
bmRleCwgbmFtZSk7IH0KKworICAgIHN0YXRpYyBRdE1ldGhvZE1hdGNoVHlwZSB1bnJlc29sdmVk
KGNvbnN0IFFCeXRlQXJyYXkgJm5hbWUpCisgICAgeyByZXR1cm4gUXRNZXRob2RNYXRjaFR5cGUo
VW5yZXNvbHZlZCwgLyp0eXBlSWQ9Ki8wLCBuYW1lKTsgfQorCitwcml2YXRlOgorICAgIFF0TWV0
aG9kTWF0Y2hUeXBlKEtpbmQga2luZCwgaW50IHR5cGVJZCA9IDAsIGNvbnN0IFFCeXRlQXJyYXkg
Jm5hbWUgPSBRQnl0ZUFycmF5KCkpCisgICAgICAgIDogbV9raW5kKGtpbmQpLCBtX3R5cGVJZCh0
eXBlSWQpLCBtX25hbWUobmFtZSkgeyB9CisKKyAgICBLaW5kIG1fa2luZDsKKyAgICBpbnQgbV90
eXBlSWQ7CisgICAgUUJ5dGVBcnJheSBtX25hbWU7Cit9OworCitRTWV0YVR5cGU6OlR5cGUgUXRN
ZXRob2RNYXRjaFR5cGU6OnR5cGVJZCgpIGNvbnN0Cit7CisgICAgaWYgKGlzVmFyaWFudCgpKQor
ICAgICAgICByZXR1cm4gKFFNZXRhVHlwZTo6VHlwZSkgcU1ldGFUeXBlSWQ8UVZhcmlhbnQ+KCk7
CisgICAgcmV0dXJuIChRTWV0YVR5cGU6OlR5cGUpIChpc01ldGFFbnVtKCkgPyBRTWV0YVR5cGU6
OkludCA6IG1fdHlwZUlkKTsKK30KKworUUJ5dGVBcnJheSBRdE1ldGhvZE1hdGNoVHlwZTo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX25hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bV9uYW1lOworICAgIGVsc2UgaWYgKG1fa2luZCA9PSBWYXJpYW50KQorICAgICAgICByZXR1cm4g
IlFWYXJpYW50IjsKKyAgICByZXR1cm4gUUJ5dGVBcnJheSgpOworfQorCitzdHJ1Y3QgUXRNZXRo
b2RNYXRjaERhdGEKK3sKKyAgICBpbnQgbWF0Y2hEaXN0YW5jZTsKKyAgICBpbnQgaW5kZXg7Cisg
ICAgUVZlY3RvcjxRdE1ldGhvZE1hdGNoVHlwZT4gdHlwZXM7CisgICAgUVZhckxlbmd0aEFycmF5
PFFWYXJpYW50LCAxMD4gYXJnczsKKworICAgIFF0TWV0aG9kTWF0Y2hEYXRhKGludCBkaXN0LCBp
bnQgaWR4LCBRVmVjdG9yPFF0TWV0aG9kTWF0Y2hUeXBlPiB0eXBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBRVmFyTGVuZ3RoQXJyYXk8UVZhcmlhbnQsIDEwPiAmYXMp
CisgICAgICAgIDogbWF0Y2hEaXN0YW5jZShkaXN0KSwgaW5kZXgoaWR4KSwgdHlwZXModHlwcyks
IGFyZ3MoYXMpIHsgfQorICAgIFF0TWV0aG9kTWF0Y2hEYXRhKCkKKyAgICAgICAgOiBpbmRleCgt
MSkgeyB9CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdAorICAgIHsgcmV0dXJuIChpbmRleCAh
PSAtMSk7IH0KKworICAgIGludCBmaXJzdFVucmVzb2x2ZWRJbmRleCgpIGNvbnN0CisgICAgewor
ICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB0eXBlcy5jb3VudCgpOyBpKyspIHsKKyAgICAgICAg
ICAgIGlmICh0eXBlcy5hdChpKS5pc1VucmVzb2x2ZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfTsKKworc3RhdGlj
IGludCBpbmRleE9mTWV0YUVudW0oY29uc3QgUU1ldGFPYmplY3QgKm1ldGEsIGNvbnN0IFFCeXRl
QXJyYXkgJnN0cikKK3sKKyAgICBRQnl0ZUFycmF5IHNjb3BlOworICAgIFFCeXRlQXJyYXkgbmFt
ZTsKKyAgICBpbnQgc2NvcGVJZHggPSBzdHIuaW5kZXhPZigiOjoiKTsKKyAgICBpZiAoc2NvcGVJ
ZHggIT0gLTEpIHsKKyAgICAgICAgc2NvcGUgPSBzdHIubGVmdChzY29wZUlkeCk7CisgICAgICAg
IG5hbWUgPSBzdHIubWlkKHNjb3BlSWR4ICsgMik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmFt
ZSA9IHN0cjsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IG1ldGEtPmVudW1lcmF0b3JDb3VudCgp
IC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgUU1ldGFFbnVtIG0gPSBtZXRhLT5lbnVtZXJh
dG9yKGkpOworICAgICAgICBpZiAoKG0ubmFtZSgpID09IG5hbWUpLyogJiYgKHNjb3BlLmlzRW1w
dHkoKSB8fCAobS5zY29wZSgpID09IHNjb3BlKSkqLykKKyAgICAgICAgICAgIHJldHVybiBpOwor
ICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgcmVzb2x2
aW5nIG1ldGhvZHMKKy8vIExhcmdlbHkgYmFzZWQgb24gY29kZSBpbiBRdFNjcmlwdCBmb3IgY29t
cGF0aWJpbGl0eSByZWFzb25zCitzdGF0aWMgaW50IGZpbmRNZXRob2RJbmRleChKU0NvbnRleHRS
ZWYgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFNZXRhT2JqZWN0
KiBtZXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSYgc2ln
bmF0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50Q291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd1ByaXZhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRVmFyTGVuZ3RoQXJyYXk8UVZhcmlhbnQsIDEwPiAmdmFycywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiB2dmFycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBRTGlzdDxpbnQ+IG1hdGNo
aW5nSW5kaWNlczsKKworICAgIGJvb2wgb3ZlcmxvYWRzID0gIXNpZ25hdHVyZS5jb250YWlucygn
KCcpOworCisgICAgaW50IGNvdW50ID0gbWV0YS0+bWV0aG9kQ291bnQoKTsKKyAgICBmb3IgKGlu
dCBpID0gY291bnQgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBjb25zdCBRTWV0YU1ldGhv
ZCBtID0gbWV0YS0+bWV0aG9kKGkpOworCisgICAgICAgIC8vIERvbid0IGNob29zZSBwcml2YXRl
IG1ldGhvZHMKKyAgICAgICAgaWYgKG0uYWNjZXNzKCkgPT0gUU1ldGFNZXRob2Q6OlByaXZhdGUg
JiYgIWFsbG93UHJpdmF0ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIHRy
eSBhbmQgZmluZCBhbGwgbWF0Y2hpbmcgbmFtZWQgbWV0aG9kcworICAgICAgICBpZiAoIW92ZXJs
b2FkcyAmJiBtLm1ldGhvZFNpZ25hdHVyZSgpID09IHNpZ25hdHVyZSkKKyAgICAgICAgICAgIG1h
dGNoaW5nSW5kaWNlcy5hcHBlbmQoaSk7CisgICAgICAgIGVsc2UgaWYgKG92ZXJsb2FkcyAmJiBt
Lm5hbWUoKSA9PSBzaWduYXR1cmUpCisgICAgICAgICAgICBtYXRjaGluZ0luZGljZXMuYXBwZW5k
KGkpOworICAgIH0KKworICAgIGludCBjaG9zZW5JbmRleCA9IC0xOworICAgIFFWZWN0b3I8UXRN
ZXRob2RNYXRjaFR5cGU+IGNob3NlblR5cGVzOworCisgICAgUVZhckxlbmd0aEFycmF5PFFWYXJp
YW50LCAxMD4gYXJnczsKKyAgICBRVmVjdG9yPFF0TWV0aG9kTWF0Y2hEYXRhPiBjYW5kaWRhdGVz
OworICAgIFFWZWN0b3I8UXRNZXRob2RNYXRjaERhdGE+IHVucmVzb2x2ZWQ7CisgICAgUVZlY3Rv
cjxpbnQ+IHRvb0Zld0FyZ3M7CisgICAgUVZlY3RvcjxpbnQ+IGNvbnZlcnNpb25GYWlsZWQ7CisK
KyAgICBmb3JlYWNoKGludCBpbmRleCwgbWF0Y2hpbmdJbmRpY2VzKSB7CisgICAgICAgIFFNZXRh
TWV0aG9kIG1ldGhvZCA9IG1ldGEtPm1ldGhvZChpbmRleCk7CisKKyAgICAgICAgUVZlY3RvcjxR
dE1ldGhvZE1hdGNoVHlwZT4gdHlwZXM7CisgICAgICAgIGJvb2wgdW5yZXNvbHZlZFR5cGVzID0g
ZmFsc2U7CisKKyAgICAgICAgLy8gcmVzb2x2ZSByZXR1cm4gdHlwZQorICAgICAgICBRQnl0ZUFy
cmF5IHJldHVyblR5cGVOYW1lID0gbWV0aG9kLnR5cGVOYW1lKCk7CisgICAgICAgIGludCBydHlw
ZSA9IG1ldGhvZC5yZXR1cm5UeXBlKCk7CisgICAgICAgIGlmIChydHlwZSA9PSBRTWV0YVR5cGU6
OlVua25vd25UeXBlKSB7CisgICAgICAgICAgICBpZiAocmV0dXJuVHlwZU5hbWUuZW5kc1dpdGgo
JyonKSkgeworICAgICAgICAgICAgICAgIHR5cGVzLmFwcGVuZChRdE1ldGhvZE1hdGNoVHlwZTo6
bWV0YVR5cGUoUU1ldGFUeXBlOjpWb2lkU3RhciwgcmV0dXJuVHlwZU5hbWUpKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGVudW1JbmRleCA9IGluZGV4T2ZNZXRh
RW51bShtZXRhLCByZXR1cm5UeXBlTmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGVudW1JbmRl
eCAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdHlwZXMuYXBwZW5kKFF0TWV0aG9kTWF0Y2hU
eXBlOjptZXRhRW51bShlbnVtSW5kZXgsIHJldHVyblR5cGVOYW1lKSk7CisgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVucmVzb2x2ZWRUeXBlcyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIHR5cGVzLmFwcGVuZChRdE1ldGhvZE1hdGNoVHlwZTo6dW5yZXNv
bHZlZChyZXR1cm5UeXBlTmFtZSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChydHlwZSA9PSBRTWV0YVR5cGU6OlFW
YXJpYW50KQorICAgICAgICAgICAgICAgIHR5cGVzLmFwcGVuZChRdE1ldGhvZE1hdGNoVHlwZTo6
dmFyaWFudCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0eXBlcy5hcHBl
bmQoUXRNZXRob2RNYXRjaFR5cGU6Om1ldGFUeXBlKHJ0eXBlLCByZXR1cm5UeXBlTmFtZSkpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gcmVzb2x2ZSBhcmd1bWVudCB0eXBlcworICAgICAgICBR
TGlzdDxRQnl0ZUFycmF5PiBwYXJhbWV0ZXJUeXBlTmFtZXMgPSBtZXRob2QucGFyYW1ldGVyVHlw
ZXMoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJUeXBlTmFtZXMuY291
bnQoKTsgKytpKSB7CisgICAgICAgICAgICBRQnl0ZUFycmF5IGFyZ1R5cGVOYW1lID0gcGFyYW1l
dGVyVHlwZU5hbWVzLmF0KGkpOworICAgICAgICAgICAgaW50IGF0eXBlID0gbWV0aG9kLnBhcmFt
ZXRlclR5cGUoaSk7CisgICAgICAgICAgICBpZiAoYXR5cGUgPT0gUU1ldGFUeXBlOjpVbmtub3du
VHlwZSkgeworICAgICAgICAgICAgICAgIGludCBlbnVtSW5kZXggPSBpbmRleE9mTWV0YUVudW0o
bWV0YSwgYXJnVHlwZU5hbWUpOworICAgICAgICAgICAgICAgIGlmIChlbnVtSW5kZXggIT0gLTEp
CisgICAgICAgICAgICAgICAgICAgIHR5cGVzLmFwcGVuZChRdE1ldGhvZE1hdGNoVHlwZTo6bWV0
YUVudW0oZW51bUluZGV4LCBhcmdUeXBlTmFtZSkpOworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICB1bnJlc29sdmVkVHlwZXMgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICB0eXBlcy5hcHBlbmQoUXRNZXRob2RNYXRjaFR5cGU6OnVucmVzb2x2ZWQoYXJnVHlw
ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmIChhdHlwZSA9PSBRTWV0YVR5cGU6OlFWYXJpYW50KQorICAgICAgICAgICAg
ICAgICAgICB0eXBlcy5hcHBlbmQoUXRNZXRob2RNYXRjaFR5cGU6OnZhcmlhbnQoKSk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0eXBlcy5hcHBlbmQoUXRNZXRo
b2RNYXRjaFR5cGU6Om1ldGFUeXBlKGF0eXBlLCBhcmdUeXBlTmFtZSkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIG5hdGl2ZSBtZXRob2QgcmVxdWlyZXMg
bW9yZSBhcmd1bWVudHMgdGhhbiB3aGF0IHdhcyBwYXNzZWQgZnJvbSBKYXZhU2NyaXB0CisgICAg
ICAgIGlmIChhcmd1bWVudENvdW50ICsgMSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlcy5j
b3VudCgpKSkgeworICAgICAgICAgICAgcU1hdGNoRGVidWcoKSA8PCAiTWF0Y2g6dG9vIGZldyBh
cmdzIGZvciIgPDwgbWV0aG9kLm1ldGhvZFNpZ25hdHVyZSgpOworICAgICAgICAgICAgdG9vRmV3
QXJncy5hcHBlbmQoaW5kZXgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAodW5yZXNvbHZlZFR5cGVzKSB7CisgICAgICAgICAgICBxTWF0Y2hEZWJ1Zygp
IDw8ICJNYXRjaDp1bnJlc29sdmVkIGFyZyB0eXBlcyBmb3IiIDw8IG1ldGhvZC5tZXRob2RTaWdu
YXR1cmUoKTsKKyAgICAgICAgICAgIC8vIHJlbWVtYmVyIGl0IHNvIHdlIGNhbiBnaXZlIGFuIGVy
cm9yIG1lc3NhZ2UgbGF0ZXIsIGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgdW5yZXNvbHZlZC5h
cHBlbmQoUXRNZXRob2RNYXRjaERhdGEoLyptYXRjaERpc3RhbmNlPSovSU5UX01BWCwgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
cywgUVZhckxlbmd0aEFycmF5PFFWYXJpYW50LCAxMD4oKSkpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgY29udmVydCBhcmd1bWVudHMKKyAgICAg
ICAgaWYgKGFyZ3MuY291bnQoKSAhPSB0eXBlcy5jb3VudCgpKQorICAgICAgICAgICAgYXJncy5y
ZXNpemUodHlwZXMuY291bnQoKSk7CisKKyAgICAgICAgUXRNZXRob2RNYXRjaFR5cGUgcmV0VHlw
ZSA9IHR5cGVzWzBdOworICAgICAgICBpZiAocmV0VHlwZS50eXBlSWQoKSAhPSBRTWV0YVR5cGU6
OlZvaWQpCisgICAgICAgICAgICBhcmdzWzBdID0gUVZhcmlhbnQocmV0VHlwZS50eXBlSWQoKSwg
KHZvaWQgKikwKTsgLy8gdGhlIHJldHVybiB2YWx1ZQorCisgICAgICAgIGJvb2wgY29udmVydGVk
ID0gdHJ1ZTsKKyAgICAgICAgaW50IG1hdGNoRGlzdGFuY2UgPSAwOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBjb252ZXJ0ZWQgJiYgaSArIDEgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dHlwZXMuY291bnQoKSk7ICsraSkgeworICAgICAgICAgICAgSlNWYWx1ZVJlZiBhcmcgPSBpIDwg
YXJndW1lbnRDb3VudCA/IGFyZ3VtZW50c1tpXSA6IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOworCisgICAgICAgICAgICBpbnQgYXJnZGlzdGFuY2UgPSAtMTsKKyAgICAgICAgICAgIFFW
YXJpYW50IHYgPSBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KGNvbnRleHQsIGFyZywgdHlwZXMuYXQo
aSsxKS50eXBlSWQoKSwgJmFyZ2Rpc3RhbmNlLCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYg
KGFyZ2Rpc3RhbmNlID49IDApIHsKKyAgICAgICAgICAgICAgICBtYXRjaERpc3RhbmNlICs9IGFy
Z2Rpc3RhbmNlOworICAgICAgICAgICAgICAgIGFyZ3NbaSsxXSA9IHY7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHFNYXRjaERlYnVnKCkgPDwgImZhaWxlZCB0byBjb252
ZXJ0IGFyZ3VtZW50ICIgPDwgaSA8PCAidHlwZSIgPDwgdHlwZXMuYXQoaSsxKS50eXBlSWQoKSA8
PCBRTWV0YVR5cGU6OnR5cGVOYW1lKHR5cGVzLmF0KGkrMSkudHlwZUlkKCkpOworICAgICAgICAg
ICAgICAgIGNvbnZlcnRlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcU1hdGNoRGVidWcoKSA8PCAiTWF0Y2g6ICIgPDwgbWV0aG9kLm1ldGhvZFNpZ25hdHVy
ZSgpIDw8IChjb252ZXJ0ZWQgPyAiY29udmVydGVkIjoiZmFpbGVkIHRvIGNvbnZlcnQiKSA8PCAi
ZGlzdGFuY2UgIiA8PCBtYXRjaERpc3RhbmNlOworCisgICAgICAgIGlmIChjb252ZXJ0ZWQpIHsK
KyAgICAgICAgICAgIGlmICgoYXJndW1lbnRDb3VudCArIDEgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHR5cGVzLmNvdW50KCkpKQorICAgICAgICAgICAgICAgICYmIChtYXRjaERpc3RhbmNlID09
IDApKSB7CisgICAgICAgICAgICAgICAgLy8gcGVyZmVjdCBtYXRjaCwgdXNlIHRoaXMgb25lCisg
ICAgICAgICAgICAgICAgY2hvc2VuSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICBjaG9z
ZW5UeXBlcyA9IHR5cGVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgUXRNZXRob2RNYXRjaERhdGEgY3VycmVudE1hdGNoKG1hdGNoRGlzdGFuY2Us
IGluZGV4LCB0eXBlcywgYXJncyk7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlcy5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoY3VycmVudE1hdGNoKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFF0TWV0aG9kTWF0Y2hEYXRhIGJlc3RN
YXRjaFNvRmFyID0gY2FuZGlkYXRlcy5hdCgwKTsKKyAgICAgICAgICAgICAgICBpZiAoKGFyZ3Mu
Y291bnQoKSA+IGJlc3RNYXRjaFNvRmFyLmFyZ3MuY291bnQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgfHwgKChhcmdzLmNvdW50KCkgPT0gYmVzdE1hdGNoU29GYXIuYXJncy5jb3VudCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiAobWF0Y2hEaXN0YW5jZSA8PSBiZXN0TWF0Y2hTb0Zhci5tYXRj
aERpc3RhbmNlKSkpCisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHJlcGVuZChjdXJy
ZW50TWF0Y2gpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlcy5hcHBlbmQoY3VycmVudE1hdGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnZlcnNpb25GYWlsZWQuYXBwZW5kKGluZGV4KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghb3ZlcmxvYWRzKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgaWYgKGNob3NlbkluZGV4ID09IC0xICYmIGNhbmRpZGF0ZXMuY291bnQoKSA9PSAw
KSB7CisgICAgICAgIC8vIE5vIHZhbGlkIGZ1bmN0aW9ucyBhdCBhbGwgLSBmb3JtYXQgYW4gZXJy
b3IgbWVzc2FnZQorICAgICAgICBpZiAoIWNvbnZlcnNpb25GYWlsZWQuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBRU3RyaW5nIG1lc3NhZ2UgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJpbmNvbXBh
dGlibGUgdHlwZSBvZiBhcmd1bWVudChzKSBpbiBjYWxsIHRvICUwKCk7IGNhbmRpZGF0ZXMgd2Vy
ZVxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcmcoUVN0cmluZzo6ZnJvbUxh
dGluMShzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29udmVy
c2lvbkZhaWxlZC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID4gMCkKKyAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSBRTGF0aW4xU3RyaW5nKCJcbiIpOworICAgICAg
ICAgICAgICAgIFFNZXRhTWV0aG9kIG10ZCA9IG1ldGEtPm1ldGhvZChjb252ZXJzaW9uRmFpbGVk
LmF0KGkpKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlICs9IFFTdHJpbmc6OmZyb21MYXRpbjEo
IiAgICAlMCIpLmFyZyhRU3RyaW5nOjpmcm9tTGF0aW4xKG10ZC5tZXRob2RTaWduYXR1cmUoKSkp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2Vw
dGlvbiwgbWVzc2FnZSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXVucmVzb2x2ZWQuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBRdE1ldGhvZE1hdGNoRGF0YSBhcmdzSW5zdGFuY2UgPSB1bnJlc29s
dmVkLmZpcnN0KCk7CisgICAgICAgICAgICBpbnQgdW5yZXNvbHZlZEluZGV4ID0gYXJnc0luc3Rh
bmNlLmZpcnN0VW5yZXNvbHZlZEluZGV4KCk7CisgICAgICAgICAgICBRX0FTU0VSVCh1bnJlc29s
dmVkSW5kZXggIT0gLTEpOworICAgICAgICAgICAgUXRNZXRob2RNYXRjaFR5cGUgdW5yZXNvbHZl
ZFR5cGUgPSBhcmdzSW5zdGFuY2UudHlwZXMuYXQodW5yZXNvbHZlZEluZGV4KTsKKyAgICAgICAg
ICAgIFFTdHJpbmcgbWVzc2FnZSA9IFFTdHJpbmc6OmZyb21MYXRpbjEoImNhbm5vdCBjYWxsICUw
KCk6IHVua25vd24gdHlwZSBgJTEnIikKKyAgICAgICAgICAgICAgICAuYXJnKFFTdHJpbmc6OmZy
b21MYXRpbjEoc2lnbmF0dXJlKSkKKyAgICAgICAgICAgICAgICAuYXJnKFFMYXRpbjFTdHJpbmco
dW5yZXNvbHZlZFR5cGUubmFtZSgpKSk7CisgICAgICAgICAgICBzZXRFeGNlcHRpb24oY29udGV4
dCwgZXhjZXB0aW9uLCBtZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFFT
dHJpbmcgbWVzc2FnZSA9IFFTdHJpbmc6OmZyb21MYXRpbjEoInRvbyBmZXcgYXJndW1lbnRzIGlu
IGNhbGwgdG8gJTAoKTsgY2FuZGlkYXRlcyBhcmVcbiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuYXJnKFFTdHJpbmc6OmZyb21MYXRpbjEoc2lnbmF0dXJlKSk7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHRvb0Zld0FyZ3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gUUxhdGlu
MVN0cmluZygiXG4iKTsKKyAgICAgICAgICAgICAgICBRTWV0YU1ldGhvZCBtdGQgPSBtZXRhLT5t
ZXRob2QodG9vRmV3QXJncy5hdChpKSk7CisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCIgICAgJTAiKS5hcmcoUVN0cmluZzo6ZnJvbUxhdGluMShtdGQubWV0
aG9kU2lnbmF0dXJlKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldEV4Y2VwdGlv
bihjb250ZXh0LCBleGNlcHRpb24sIG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKGNob3NlbkluZGV4ID09IC0xICYmIGNhbmRpZGF0ZXMuY291bnQoKSA+IDApIHsKKyAgICAg
ICAgUXRNZXRob2RNYXRjaERhdGEgYmVzdE1hdGNoID0gY2FuZGlkYXRlcy5hdCgwKTsKKyAgICAg
ICAgaWYgKChjYW5kaWRhdGVzLnNpemUoKSA+IDEpCisgICAgICAgICAgICAmJiAoYmVzdE1hdGNo
LmFyZ3MuY291bnQoKSA9PSBjYW5kaWRhdGVzLmF0KDEpLmFyZ3MuY291bnQoKSkKKyAgICAgICAg
ICAgICYmIChiZXN0TWF0Y2gubWF0Y2hEaXN0YW5jZSA9PSBjYW5kaWRhdGVzLmF0KDEpLm1hdGNo
RGlzdGFuY2UpKSB7CisgICAgICAgICAgICAvLyBhbWJpZ3VvdXMgY2FsbAorICAgICAgICAgICAg
UVN0cmluZyBtZXNzYWdlID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiYW1iaWd1b3VzIGNhbGwgb2Yg
b3ZlcmxvYWRlZCBmdW5jdGlvbiAlMCgpOyBjYW5kaWRhdGVzIHdlcmVcbiIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC5hcmcoUUxhdGluMVN0cmluZyhzaWduYXR1cmUpKTsKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FuZGlkYXRlcy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIC8vIE9ubHkgY2FuZGlkYXRlIGZvciBvdmVybG9hZCBpZiBhcmd1bWVu
dCBjb3VudCBhbmQgbWF0Y2ggZGlzdGFuY2UgaXMgc2FtZSBhcyBiZXN0IG1hdGNoCisgICAgICAg
ICAgICAgICAgaWYgKGNhbmRpZGF0ZXMuYXQoaSkuYXJncy5jb3VudCgpID09IGJlc3RNYXRjaC5h
cmdzLmNvdW50KCkKKyAgICAgICAgICAgICAgICAgICAgfHwgY2FuZGlkYXRlcy5hdChpKS5tYXRj
aERpc3RhbmNlID09IGJlc3RNYXRjaC5tYXRjaERpc3RhbmNlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gUUxhdGlu
MVN0cmluZygiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgUU1ldGFNZXRob2QgbXRkID0gbWV0
YS0+bWV0aG9kKGNhbmRpZGF0ZXMuYXQoaSkuaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIiAgICAlMCIpLmFyZyhRU3RyaW5nOjpmcm9t
TGF0aW4xKG10ZC5tZXRob2RTaWduYXR1cmUoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHNldEV4Y2VwdGlvbihjb250ZXh0LCBleGNlcHRpb24sIG1l
c3NhZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hvc2VuSW5kZXggPSBiZXN0
TWF0Y2guaW5kZXg7CisgICAgICAgICAgICBjaG9zZW5UeXBlcyA9IGJlc3RNYXRjaC50eXBlczsK
KyAgICAgICAgICAgIGFyZ3MgPSBiZXN0TWF0Y2guYXJnczsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChjaG9zZW5JbmRleCAhPSAtMSkgeworICAgICAgICAvKiBDb3B5IHRoZSBzdHVmZiBv
dmVyICovCisgICAgICAgIGludCBpOworICAgICAgICB2YXJzLnJlc2l6ZShhcmdzLmNvdW50KCkp
OworICAgICAgICBmb3IgKGk9MDsgaSA8IGFyZ3MuY291bnQoKTsgaSsrKSB7CisgICAgICAgICAg
ICB2YXJzW2ldID0gYXJnc1tpXTsKKyAgICAgICAgICAgIGlmIChjaG9zZW5UeXBlc1tpXS5pc1Zh
cmlhbnQoKSkKKyAgICAgICAgICAgICAgICB2dmFyc1tpXSA9ICZ2YXJzW2ldOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHZ2YXJzW2ldID0gdmFyc1tpXS5kYXRhKCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY2hvc2VuSW5kZXg7Cit9CisKKy8vIFNpZ25hbHMg
YXJlIG5vdCBmdXp6eSBtYXRjaGVkIGFzIG11Y2ggYXMgbWV0aG9kcworc3RhdGljIGludCBmaW5k
U2lnbmFsSW5kZXgoY29uc3QgUU1ldGFPYmplY3QqIG1ldGEsIGludCBpbml0aWFsSW5kZXgsIFFC
eXRlQXJyYXkgc2lnbmF0dXJlKQoreworICAgIGludCBpbmRleCA9IGluaXRpYWxJbmRleDsKKyAg
ICBRTWV0YU1ldGhvZCBtZXRob2QgPSBtZXRhLT5tZXRob2QoaW5kZXgpOworICAgIGJvb2wgb3Zl
cmxvYWRzID0gIXNpZ25hdHVyZS5jb250YWlucygnKCcpOworICAgIGlmIChvdmVybG9hZHMgJiYg
KG1ldGhvZC5hdHRyaWJ1dGVzKCkgJiBRTWV0YU1ldGhvZDo6Q2xvbmVkKSkgeworICAgICAgICAv
LyBmaW5kIHRoZSBtb3N0IGdlbmVyYWwgbWV0aG9kCisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IG1ldGhvZCA9IG1ldGEtPm1ldGhvZCgtLWluZGV4KTsKKyAgICAgICAgfSB3aGlsZSAobWV0aG9k
LmF0dHJpYnV0ZXMoKSAmIFFNZXRhTWV0aG9kOjpDbG9uZWQpOworICAgIH0KKyAgICByZXR1cm4g
aW5kZXg7Cit9CisKK3N0YXRpYyBKU0NsYXNzUmVmIHByb3RvdHlwZUZvclNpZ25hbHNBbmRTbG90
cygpCit7CisgICAgc3RhdGljIEpTQ2xhc3NEZWZpbml0aW9uIGNsYXNzRGVmID0geworICAgICAg
ICAwLCBrSlNDbGFzc0F0dHJpYnV0ZU5vQXV0b21hdGljUHJvdG90eXBlLCAwLCAwLCAwLCAwLAor
ICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCisgICAgfTsKKyAgICBzdGF0
aWMgSlNDbGFzc1JlZiBjbHMgPSBKU0NsYXNzQ3JlYXRlKCZjbGFzc0RlZik7CisgICAgcmV0dXJu
IGNsczsKK30KKworUXRSdW50aW1lTWV0aG9kOjpRdFJ1bnRpbWVNZXRob2QoSlNDb250ZXh0UmVm
IGN0eCwgUU9iamVjdCogb2JqZWN0LCBjb25zdCBRQnl0ZUFycmF5JiBpZGVudGlmaWVyLCBpbnQg
aW5kZXgsIGludCBmbGFncywgUXRJbnN0YW5jZSogaW5zdGFuY2UpCisgICAgOiBtX29iamVjdChv
YmplY3QpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1faW5kZXgoaW5k
ZXgpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKK3sK
K30KKworUXRSdW50aW1lTWV0aG9kOjp+UXRSdW50aW1lTWV0aG9kKCkKK3sKK30KKworSlNWYWx1
ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmNhbGwoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiAvKnRoaXNPYmplY3QqLywgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICBRdFJ1bnRpbWVNZXRob2QqIGQgPSB0b1J1bnRpbWVNZXRob2QoY29udGV4dCwg
ZnVuY3Rpb24pOworICAgIGlmICghZCkgeworICAgICAgICBzZXRFeGNlcHRpb24oY29udGV4dCwg
ZXhjZXB0aW9uLCBRU3RyaW5nTGl0ZXJhbCgiY2Fubm90IGNhbGwgZnVuY3Rpb24gb2YgZGVsZXRl
ZCBydW50aW1lIG1ldGhvZCIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworICAgIH0KKyAgICBRT2JqZWN0KiBvYmogPSBkLT5tX29iamVjdDsKKworICAg
IGlmICghb2JqKSB7CisgICAgICAgIHNldEV4Y2VwdGlvbihjb250ZXh0LCBleGNlcHRpb24sIFFT
dHJpbmdMaXRlcmFsKCJjYW5ub3QgY2FsbCBmdW5jdGlvbiBvZiBkZWxldGVkIFFPYmplY3QiKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisK
KyAgICAvLyBBbGxvdyBmb3IgbWF4aW11bSBvZiAxMCBhcmd1bWVudHMgYW5kIHNpemUgc3RhY2sg
YXJyYXlzIGFjY29yZGluZ2x5LgorICAgIGlmIChhcmd1bWVudENvdW50ID4gMTApCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIFFWYXJMZW5ndGhB
cnJheTxRVmFyaWFudCwgMTA+IHZhcmdzOworICAgIHZvaWQqIHFhcmdzWzExXTsKKyAgICBjb25z
dCBRTWV0YU9iamVjdCogbWV0YU9iamVjdCA9IG9iai0+bWV0YU9iamVjdCgpOworCisgICAgaW50
IG1ldGhvZEluZGV4ID0gZmluZE1ldGhvZEluZGV4KGNvbnRleHQsIG1ldGFPYmplY3QsIGQtPm1f
aWRlbnRpZmllciwgIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGQtPm1fZmxhZ3MgJiBBbGxvd1ByaXZhdGUpLCB2YXJncywg
KHZvaWQgKiopcWFyZ3MsIGV4Y2VwdGlvbik7CisKKyAgICBpZiAoUU1ldGFPYmplY3Q6Om1ldGFj
YWxsKG9iaiwgUU1ldGFPYmplY3Q6Okludm9rZU1ldGFNZXRob2QsIG1ldGhvZEluZGV4LCBxYXJn
cykgPj0gMCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
CisgICAgaWYgKHZhcmdzLnNpemUoKSA+IDAgJiYgbWV0YU9iamVjdC0+bWV0aG9kKG1ldGhvZElu
ZGV4KS5yZXR1cm5UeXBlKCkgIT0gUU1ldGFUeXBlOjpWb2lkKQorICAgICAgICByZXR1cm4gY29u
dmVydFFWYXJpYW50VG9WYWx1ZShjb250ZXh0LCBkLT5tX2luc3RhbmNlLT5yb290T2JqZWN0KCks
IHZhcmdzWzBdLCBleGNlcHRpb24pOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCitKU1ZhbHVlUmVmIFF0UnVudGltZU1ldGhvZDo6Y29ubmVjdChKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgcmV0dXJuIGNvbm5lY3RPckRpc2Nvbm5l
Y3QoY29udGV4dCwgZnVuY3Rpb24sIHRoaXNPYmplY3QsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50
cywgZXhjZXB0aW9uLCB0cnVlKTsKK30KKworSlNWYWx1ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmRp
c2Nvbm5lY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiBjb25u
ZWN0T3JEaXNjb25uZWN0KGNvbnRleHQsIGZ1bmN0aW9uLCB0aGlzT2JqZWN0LCBhcmd1bWVudENv
dW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbiwgZmFsc2UpOworfQorCitKU09iamVjdFJlZiBRdFJ1
bnRpbWVNZXRob2Q6OmpzT2JqZWN0UmVmKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKG1fanNPYmplY3QpCisgICAgICAgIHJldHVybiB0b1Jl
ZihtX2pzT2JqZWN0LmdldCgpKTsKKworICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBjb25uZWN0U3Ry
ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImNvbm5lY3QiKTsKKyAgICBzdGF0aWMg
SlNTdHJpbmdSZWYgZGlzY29ubmVjdFN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJkaXNjb25uZWN0Iik7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGFjdHVhbE5hbWVT
dHIoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1faWRlbnRpZmllci5jb25z
dERhdGEoKSkpOworCisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNPYmplY3RNYWtlRnVuY3Rp
b25XaXRoQ2FsbGJhY2soY29udGV4dCwgYWN0dWFsTmFtZVN0ci5nZXQoKSwgY2FsbCk7CisKKyAg
ICBKU09iamVjdFJlZiBnZW5lcmFsRnVuY3Rpb25Qcm90byA9IEpTVmFsdWVUb09iamVjdChjb250
ZXh0LCBKU09iamVjdEdldFByb3RvdHlwZShjb250ZXh0LCBvYmplY3QpLCAwKTsKKyAgICBKU09i
amVjdFJlZiBydW50aW1lTWV0aG9kUHJvdG8gPSBKU09iamVjdE1ha2UoY29udGV4dCwgcHJvdG90
eXBlRm9yU2lnbmFsc0FuZFNsb3RzKCksIHRoaXMpOworICAgIEpTT2JqZWN0U2V0UHJvdG90eXBl
KGNvbnRleHQsIHJ1bnRpbWVNZXRob2RQcm90bywgZ2VuZXJhbEZ1bmN0aW9uUHJvdG8pOworCisg
ICAgSlNPYmplY3RTZXRQcm90b3R5cGUoY29udGV4dCwgb2JqZWN0LCBydW50aW1lTWV0aG9kUHJv
dG8pOworCisgICAgSlNPYmplY3RSZWYgY29ubmVjdEZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVu
Y3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgY29ubmVjdFN0ciwgY29ubmVjdCk7CisgICAgSlNP
YmplY3RTZXRQcm90b3R5cGUoY29udGV4dCwgY29ubmVjdEZ1bmN0aW9uLCBydW50aW1lTWV0aG9k
UHJvdG8pOworCisgICAgSlNPYmplY3RSZWYgZGlzY29ubmVjdEZ1bmN0aW9uID0gSlNPYmplY3RN
YWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgZGlzY29ubmVjdFN0ciwgZGlzY29ubmVj
dCk7CisgICAgSlNPYmplY3RTZXRQcm90b3R5cGUoY29udGV4dCwgZGlzY29ubmVjdEZ1bmN0aW9u
LCBydW50aW1lTWV0aG9kUHJvdG8pOworCisgICAgY29uc3QgSlNQcm9wZXJ0eUF0dHJpYnV0ZXMg
YXR0cmlidXRlcyA9IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0gfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGU7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBvYmpl
Y3QsIGNvbm5lY3RTdHIsIGNvbm5lY3RGdW5jdGlvbiwgYXR0cmlidXRlcywgZXhjZXB0aW9uKTsK
KyAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG9iamVjdCwgZGlzY29ubmVjdFN0ciwg
ZGlzY29ubmVjdEZ1bmN0aW9uLCBhdHRyaWJ1dGVzLCBleGNlcHRpb24pOworCisgICAgbV9qc09i
amVjdCA9IFdlYWs8SlNPYmplY3Q+KHRvSlMob2JqZWN0KSk7CisKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCitRdFJ1bnRpbWVNZXRob2QqIFF0UnVudGltZU1ldGhvZDo6dG9SdW50aW1lTWV0aG9k
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgSlNPYmpl
Y3RSZWYgcHJvdG8gPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgSlNPYmplY3RHZXRQcm90b3R5
cGUoY29udGV4dCwgb2JqZWN0KSwgMCk7CisgICAgaWYgKCFwcm90bykKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIHByb3RvLCBwcm90
b3R5cGVGb3JTaWduYWxzQW5kU2xvdHMoKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxRdFJ1bnRpbWVNZXRob2QqPihKU09iamVjdEdldFByaXZhdGUocHJvdG8p
KTsKK30KKworSlNWYWx1ZVJlZiBRdFJ1bnRpbWVNZXRob2Q6OmNvbm5lY3RPckRpc2Nvbm5lY3Qo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBib29sIGNvbm5lY3QpCit7CisgICAgUXRSdW50
aW1lTWV0aG9kKiBkID0gdG9SdW50aW1lTWV0aG9kKGNvbnRleHQsIHRoaXNPYmplY3QpOworICAg
IGlmICghZCkKKyAgICAgICAgZCA9IHRvUnVudGltZU1ldGhvZChjb250ZXh0LCBmdW5jdGlvbik7
CisgICAgaWYgKCFkKSB7CisgICAgICAgIFFTdHJpbmcgZXJyb3JTdHIgPSBRU3RyaW5nTGl0ZXJh
bCgiUXRNZXRhTWV0aG9kLiUxOiBDYW5ub3QgY29ubmVjdCB0by9mcm9tIGRlbGV0ZWQgUU9iamVj
dCIpLmFyZyhjb25uZWN0ID8gIFFTdHJpbmdMaXRlcmFsKCJjb25uZWN0IikgOiBRU3RyaW5nTGl0
ZXJhbCgiZGlzY29ubmVjdCIpKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2Vw
dGlvbiwgZXJyb3JTdHIpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CisgICAgfQorCisgICAgUVN0cmluZyBmdW5jdGlvbk5hbWUgPSBjb25uZWN0ID8gUVN0
cmluZ0xpdGVyYWwoImNvbm5lY3QiKSA6IFFTdHJpbmdMaXRlcmFsKCJkaXNjb25uZWN0Iik7CisK
KyAgICBpZiAoIWFyZ3VtZW50Q291bnQpIHsKKyAgICAgICAgUVN0cmluZyBlcnJvclN0ciA9IFFT
dHJpbmdMaXRlcmFsKCJRdE1ldGFNZXRob2QuJTE6IG5vIGFyZ3VtZW50cyBnaXZlbiIpLmFyZyhj
b25uZWN0ID8gIFFTdHJpbmdMaXRlcmFsKCJjb25uZWN0IikgOiBRU3RyaW5nTGl0ZXJhbCgiZGlz
Y29ubmVjdCIpKTsKKyAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgZXJy
b3JTdHIpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cisg
ICAgfQorCisgICAgaWYgKCghKGQtPm1fZmxhZ3MgJiBRdFJ1bnRpbWVNZXRob2Q6Ok1ldGhvZElz
U2lnbmFsKSkpIHsKKyAgICAgICAgc2V0RXhjZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgUVN0
cmluZ0xpdGVyYWwoIlF0TWV0YU1ldGhvZC4lMzogJTE6OiUyKCkgaXMgbm90IGEgc2lnbmFsIiku
YXJnKFFTdHJpbmc6OmZyb21VdGY4KGQtPm1fb2JqZWN0LmRhdGEoKS0+bWV0YU9iamVjdCgpLT5j
bGFzc05hbWUoKSkpLmFyZyhRU3RyaW5nOjpmcm9tTGF0aW4xKGQtPm1faWRlbnRpZmllcikpLmFy
ZyhmdW5jdGlvbk5hbWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworICAgIH0KKworICAgIFFPYmplY3QqIHNlbmRlciA9IGQtPm1fb2JqZWN0LmRhdGEo
KTsKKworICAgIGlmICghc2VuZGVyKSB7CisgICAgICAgIHNldEV4Y2VwdGlvbihjb250ZXh0LCBl
eGNlcHRpb24sIFFTdHJpbmdMaXRlcmFsKCJjYW5ub3QgY2FsbCBmdW5jdGlvbiBvZiBkZWxldGVk
IFFPYmplY3QiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKyAgICB9CisKKyAgICBpbnQgc2lnbmFsSW5kZXggPSBmaW5kU2lnbmFsSW5kZXgoc2VuZGVy
LT5tZXRhT2JqZWN0KCksIGQtPm1faW5kZXgsIGQtPm1faWRlbnRpZmllcik7CisKKyAgICBKU09i
amVjdFJlZiB0YXJnZXRPYmplY3QgPSAwOworICAgIEpTT2JqZWN0UmVmIHRhcmdldEZ1bmN0aW9u
ID0gMDsKKworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpIHsKKyAgICAgICAgaWYgKCFKU1Zh
bHVlSXNPYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdKSkgeworICAgICAgICAgICAgc2V0RXhj
ZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgUVN0cmluZ0xpdGVyYWwoIlF0TWV0YU1ldGhvZC4l
MTogdGFyZ2V0IGlzIG5vdCBhIGZ1bmN0aW9uIikuYXJnKGZ1bmN0aW9uTmFtZSkpOworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgICAgICB9Cisg
ICAgICAgIHRhcmdldEZ1bmN0aW9uID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgZXhjZXB0aW9uKTsKKworICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qoc29t
ZUZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKEpTT2JqZWN0SXNGdW5jdGlvbihjb250ZXh0LCB0YXJn
ZXRGdW5jdGlvbikpIHsKKyAgICAgICAgICAgIC8vIG9iamVjdC5zaWduYWwuY29ubmVjdChvdGhl
ck9iamVjdC5zbG90KTsKKyAgICAgICAgICAgIGlmIChRdFJ1bnRpbWVNZXRob2QqIHRhcmdldE1l
dGhvZCA9IHRvUnVudGltZU1ldGhvZChjb250ZXh0LCB0YXJnZXRGdW5jdGlvbikpCisgICAgICAg
ICAgICAgICAgdGFyZ2V0T2JqZWN0ID0gdG9SZWYoUXRJbnN0YW5jZTo6Z2V0UXRJbnN0YW5jZSh0
YXJnZXRNZXRob2QtPm1fb2JqZWN0LmRhdGEoKSwgZC0+bV9pbnN0YW5jZS0+cm9vdE9iamVjdCgp
LCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCktPmNyZWF0ZVJ1bnRpbWVPYmplY3QodG9KUyhjb250
ZXh0KSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRhcmdldEZ1bmN0aW9uID0gMDsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qob2JqZWN0LCBz
b21lRnVuY3Rpb24pOworICAgICAgICB0YXJnZXRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICBpZiAoSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHQsIGFyZ3VtZW50c1sxXSkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIG9i
aiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICBpZiAoSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIG9iaikpCisgICAgICAg
ICAgICAgICAgdGFyZ2V0RnVuY3Rpb24gPSBvYmo7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0
YXJnZXRGdW5jdGlvbikgeworICAgICAgICAgICAgLy8gTWF5YmUgdGhlIHNlY29uZCBhcmd1bWVu
dCBpcyBhIHN0cmluZworICAgICAgICAgICAgSlNWYWx1ZVJlZiBjb252ZXJzaW9uRXhjZXB0aW9u
ID0gMDsKKyAgICAgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBmdW5jdGlvbk5hbWUo
QWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzFdLCAmY29udmVy
c2lvbkV4Y2VwdGlvbikpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZSAmJiAhY29udmVy
c2lvbkV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZnVuY3Rpb25Qcm9w
ZXJ0eSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgdGFyZ2V0T2JqZWN0LCBmdW5jdGlv
bk5hbWUuZ2V0KCksICZjb252ZXJzaW9uRXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbnZlcnNpb25FeGNlcHRpb24gJiYgZnVuY3Rpb25Qcm9wZXJ0eSAmJiBKU1ZhbHVlSXNPYmpl
Y3QoY29udGV4dCwgZnVuY3Rpb25Qcm9wZXJ0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0RnVuY3Rpb24gPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgZnVuY3Rpb25Qcm9wZXJ0eSwg
MCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghSlNPYmplY3RJc0Z1bmN0aW9uKGNvbnRleHQs
IHRhcmdldEZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEZ1bmN0aW9u
ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBvYmplY3Quc2lnbmFsLmNvbm5lY3Qoc29tZU9iamVjdCk7CisgICAgaWYgKCF0
YXJnZXRGdW5jdGlvbikgeworICAgICAgICBRU3RyaW5nIG1lc3NhZ2UgPSBRU3RyaW5nTGl0ZXJh
bCgiUXRNZXRhTWV0aG9kLiUxOiB0YXJnZXQgaXMgbm90IGEgZnVuY3Rpb24iKTsKKyAgICAgICAg
aWYgKGNvbm5lY3QpCisgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5hcmcoUVN0cmluZ0xp
dGVyYWwoImNvbm5lY3QiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBt
ZXNzYWdlLmFyZyhRU3RyaW5nTGl0ZXJhbCgiZGlzY29ubmVjdCIpKTsKKyAgICAgICAgc2V0RXhj
ZXB0aW9uKGNvbnRleHQsIGV4Y2VwdGlvbiwgbWVzc2FnZSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAoY29ubmVjdCkgewor
ICAgICAgICAvLyB0byBjb25uZWN0LCB3ZSBuZWVkOgorICAgICAgICAvLyAgdGFyZ2V0IG9iamVj
dCBbZnJvbSBjdG9yXQorICAgICAgICAvLyAgdGFyZ2V0IHNpZ25hbCBpbmRleCBldGMuIFtmcm9t
IGN0b3JdCisgICAgICAgIC8vICByZWNlaXZlciBmdW5jdGlvbiBbZnJvbSBhcmd1bWVudHNdCisg
ICAgICAgIC8vICByZWNlaXZlciB0aGlzIG9iamVjdCBbZnJvbSBhcmd1bWVudHNdCisKKyAgICAg
ICAgUXRDb25uZWN0aW9uT2JqZWN0KiBjb25uID0gbmV3IFF0Q29ubmVjdGlvbk9iamVjdChjb250
ZXh0LCBRdEluc3RhbmNlOjpnZXRRdEluc3RhbmNlKHNlbmRlciwgZC0+bV9pbnN0YW5jZS0+cm9v
dE9iamVjdCgpLCBRdEluc3RhbmNlOjpRdE93bmVyc2hpcCksIHNpZ25hbEluZGV4LCB0YXJnZXRP
YmplY3QsIHRhcmdldEZ1bmN0aW9uKTsKKyAgICAgICAgYm9vbCBvayA9IFFNZXRhT2JqZWN0Ojpj
b25uZWN0KHNlbmRlciwgc2lnbmFsSW5kZXgsIGNvbm4sIGNvbm4tPm1ldGFPYmplY3QoKS0+bWV0
aG9kT2Zmc2V0KCkpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBkZWxldGUgY29u
bjsKKyAgICAgICAgICAgIFFTdHJpbmcgbXNnID0gUVN0cmluZyhRTGF0aW4xU3RyaW5nKCJRdE1l
dGFNZXRob2QuY29ubmVjdDogZmFpbGVkIHRvIGNvbm5lY3QgdG8gJTE6OiUyKCkiKSkKKyAgICAg
ICAgICAgICAgICAgICAgLmFyZyhRTGF0aW4xU3RyaW5nKHNlbmRlci0+bWV0YU9iamVjdCgpLT5j
bGFzc05hbWUoKSkpCisgICAgICAgICAgICAgICAgICAgIC5hcmcoUUxhdGluMVN0cmluZyhkLT5t
X2lkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIHNldEV4Y2VwdGlvbihjb250ZXh0LCBleGNlcHRp
b24sIG1zZyk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdG9yZSBjb25uZWN0aW9uCisgICAgICAgIFF0
Q29ubmVjdGlvbk9iamVjdDo6Y29ubmVjdGlvbnMuaW5zZXJ0KHNlbmRlciwgY29ubik7CisKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworICAgIH0KKworICAg
IC8vIE5vdyB0byBmaW5kIG91ciBwcmV2aW91cyBjb25uZWN0aW9uIG9iamVjdC4KKyAgICBRTGlz
dDxRdENvbm5lY3Rpb25PYmplY3QqPiBjb25ucyA9IFF0Q29ubmVjdGlvbk9iamVjdDo6Y29ubmVj
dGlvbnMudmFsdWVzKHNlbmRlcik7CisKKyAgICBmb3JlYWNoIChRdENvbm5lY3Rpb25PYmplY3Qq
IGNvbm4sIGNvbm5zKSB7CisgICAgICAgIC8vIElzIHRoaXMgdGhlIHJpZ2h0IGNvbm5lY3Rpb24/
CisgICAgICAgIGlmICghY29ubi0+bWF0Y2goY29udGV4dCwgc2VuZGVyLCBzaWduYWxJbmRleCwg
dGFyZ2V0T2JqZWN0LCB0YXJnZXRGdW5jdGlvbikpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAvLyBZZXAsIGRpc2Nvbm5lY3QgaXQKKyAgICAgICAgUU1ldGFPYmplY3Q6OmRpc2Nv
bm5lY3Qoc2VuZGVyLCBzaWduYWxJbmRleCwgY29ubiwgY29ubi0+bWV0YU9iamVjdCgpLT5tZXRo
b2RPZmZzZXQoKSk7CisgICAgICAgIGRlbGV0ZSBjb25uOyAvLyB0aGlzIHdpbGwgYWxzbyByZW1v
dmUgaXQgZnJvbSB0aGUgbWFwCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKKyAgICB9CisKKyAgICBRU3RyaW5nIG1zZyA9IFFTdHJpbmdMaXRlcmFsKCJRdE1l
dGFNZXRob2QuZGlzY29ubmVjdDogZmFpbGVkIHRvIGRpc2Nvbm5lY3QgZnJvbSAlMTo6JTIoKSIp
CisgICAgICAgICAgICAuYXJnKFFMYXRpbjFTdHJpbmcoc2VuZGVyLT5tZXRhT2JqZWN0KCktPmNs
YXNzTmFtZSgpKSkKKyAgICAgICAgICAgIC5hcmcoUUxhdGluMVN0cmluZyhkLT5tX2lkZW50aWZp
ZXIpKTsKKworICAgIHNldEV4Y2VwdGlvbihjb250ZXh0LCBleGNlcHRpb24sIG1zZyk7CisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCisvLyA9PT09PT09PT09
PT09PT0KKworUU11bHRpTWFwPFFPYmplY3QqLCBRdENvbm5lY3Rpb25PYmplY3QqPiBRdENvbm5l
Y3Rpb25PYmplY3Q6OmNvbm5lY3Rpb25zOworCitRdENvbm5lY3Rpb25PYmplY3Q6OlF0Q29ubmVj
dGlvbk9iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBz
ZW5kZXJJbnN0YW5jZSwgaW50IHNpZ25hbEluZGV4LCBKU09iamVjdFJlZiByZWNlaXZlciwgSlNP
YmplY3RSZWYgcmVjZWl2ZXJGdW5jdGlvbikKKyAgICA6IFFPYmplY3Qoc2VuZGVySW5zdGFuY2Ut
PmdldE9iamVjdCgpKQorICAgICwgbV9jb250ZXh0KEpTQ29udGV4dEdldEdsb2JhbENvbnRleHQo
Y29udGV4dCkpCisgICAgLCBtX3Jvb3RPYmplY3Qoc2VuZGVySW5zdGFuY2UtPnJvb3RPYmplY3Qo
KSkKKyAgICAsIG1fc2lnbmFsSW5kZXgoc2lnbmFsSW5kZXgpCisgICAgLCBtX3JlY2VpdmVyKHJl
Y2VpdmVyKQorICAgICwgbV9yZWNlaXZlckZ1bmN0aW9uKHJlY2VpdmVyRnVuY3Rpb24pCit7Cisg
ICAgaWYgKG1fcmVjZWl2ZXIpCisgICAgICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4dCwgbV9y
ZWNlaXZlcik7CisgICAgSlNWYWx1ZVByb3RlY3QobV9jb250ZXh0LCBtX3JlY2VpdmVyRnVuY3Rp
b24pOworfQorCitRdENvbm5lY3Rpb25PYmplY3Q6On5RdENvbm5lY3Rpb25PYmplY3QoKQorewor
ICAgIGNvbm5lY3Rpb25zLnJlbW92ZShwYXJlbnQoKSwgdGhpcyk7CisKKyAgICBpZiAobV9yZWNl
aXZlcikKKyAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChtX2NvbnRleHQsIG1fcmVjZWl2ZXIpOwor
ICAgIEpTVmFsdWVVbnByb3RlY3QobV9jb250ZXh0LCBtX3JlY2VpdmVyRnVuY3Rpb24pOworfQor
CisvLyBCZWdpbiBtb2MtZ2VuZXJhdGVkIGNvZGUgLS0gbW9kaWZ5IHdpdGggY2FyZSEgQ2hlY2sg
IkhBTkQgRURJVCIgcGFydHMKK3N0cnVjdCBxdF9tZXRhX3N0cmluZ2RhdGFfUXRDb25uZWN0aW9u
T2JqZWN0X3QgeworICAgIFFCeXRlQXJyYXlEYXRhIGRhdGFbM107CisgICAgY2hhciBzdHJpbmdk
YXRhWzQ0XTsKK307CisjZGVmaW5lIFFUX01PQ19MSVRFUkFMKGlkeCwgb2ZzLCBsZW4pIHsgXAor
ICAgIFFfUkVGQ09VTlRfSU5JVElBTElaRV9TVEFUSUMsIGxlbiwgMCwgMCwgXAorICAgIG9mZnNl
dG9mKHF0X21ldGFfc3RyaW5nZGF0YV9RdENvbm5lY3Rpb25PYmplY3RfdCwgc3RyaW5nZGF0YSkg
KyBvZnMgXAorICAgICAgICAtIGlkeCAqIHNpemVvZihRQnl0ZUFycmF5RGF0YSkgXAorICAgIH0K
K3N0YXRpYyBjb25zdCBxdF9tZXRhX3N0cmluZ2RhdGFfUXRDb25uZWN0aW9uT2JqZWN0X3QgcXRf
bWV0YV9zdHJpbmdkYXRhX1F0Q29ubmVjdGlvbk9iamVjdCA9IHsKKyAgICB7CitRVF9NT0NfTElU
RVJBTCgwLCAwLCAzMyksCitRVF9NT0NfTElURVJBTCgxLCAzNCwgNyksCitRVF9NT0NfTElURVJB
TCgyLCA0MiwgMCkKKyAgICB9LAorICAgICJKU0M6OkJpbmRpbmdzOjpRdENvbm5lY3Rpb25PYmpl
Y3RcMCIKKyAgICAiZXhlY3V0ZVwwXDAiCit9OworI3VuZGVmIFFUX01PQ19MSVRFUkFMCisKK3N0
YXRpYyBjb25zdCB1aW50IHF0X21ldGFfZGF0YV9RdENvbm5lY3Rpb25PYmplY3RbXSA9IHsKKwor
IC8vIGNvbnRlbnQ6CisgICAgICAgNywgICAgICAgLy8gcmV2aXNpb24KKyAgICAgICAwLCAgICAg
ICAvLyBjbGFzc25hbWUKKyAgICAgICAwLCAgICAwLCAvLyBjbGFzc2luZm8KKyAgICAgICAxLCAg
IDE0LCAvLyBtZXRob2RzCisgICAgICAgMCwgICAgMCwgLy8gcHJvcGVydGllcworICAgICAgIDAs
ICAgIDAsIC8vIGVudW1zL3NldHMKKyAgICAgICAwLCAgICAwLCAvLyBjb25zdHJ1Y3RvcnMKKyAg
ICAgICAwLCAgICAgICAvLyBmbGFncworICAgICAgIDAsICAgICAgIC8vIHNpZ25hbENvdW50CisK
KyAvLyBzbG90czogbmFtZSwgYXJnYywgcGFyYW1ldGVycywgdGFnLCBmbGFncworICAgICAgIDEs
ICAgIDAsICAgMTksICAgIDIsIDB4MGEsCisKKyAvLyBzbG90czogcGFyYW1ldGVycworICAgIFFN
ZXRhVHlwZTo6Vm9pZCwKKworICAgICAgIDAgICAgICAgIC8vIGVvZAorfTsKKwordm9pZCBRdENv
bm5lY3Rpb25PYmplY3Q6OnF0X3N0YXRpY19tZXRhY2FsbChRT2JqZWN0ICpfbywgUU1ldGFPYmpl
Y3Q6OkNhbGwgX2MsIGludCBfaWQsIHZvaWQgKipfYSkKK3sKKyAgICBpZiAoX2MgPT0gUU1ldGFP
YmplY3Q6Okludm9rZU1ldGFNZXRob2QpIHsKKyAgICAgICAgUV9BU1NFUlQoc3RhdGljTWV0YU9i
amVjdC5jYXN0KF9vKSk7CisgICAgICAgIFF0Q29ubmVjdGlvbk9iamVjdCAqX3QgPSBzdGF0aWNf
Y2FzdDxRdENvbm5lY3Rpb25PYmplY3QgKj4oX28pOworICAgICAgICBzd2l0Y2ggKF9pZCkgewor
ICAgICAgICBjYXNlIDA6IF90LT5leGVjdXRlKF9hKTsgYnJlYWs7IC8vIEhBTkQgRURJVDogYWRk
IF9hIHBhcmFtZXRlcgorICAgICAgICBkZWZhdWx0OiA7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K2NvbnN0IFFNZXRhT2JqZWN0IFF0Q29ubmVjdGlvbk9iamVjdDo6c3RhdGljTWV0YU9iamVjdCA9
IHsKKyAgICB7ICZRT2JqZWN0OjpzdGF0aWNNZXRhT2JqZWN0LCBxdF9tZXRhX3N0cmluZ2RhdGFf
UXRDb25uZWN0aW9uT2JqZWN0LmRhdGEsCisgICAgICBxdF9tZXRhX2RhdGFfUXRDb25uZWN0aW9u
T2JqZWN0LCBxdF9zdGF0aWNfbWV0YWNhbGwsIDAsIDAgfQorfTsKKworY29uc3QgUU1ldGFPYmpl
Y3QgKlF0Q29ubmVjdGlvbk9iamVjdDo6bWV0YU9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICZzdGF0aWNNZXRhT2JqZWN0OworfQorCit2b2lkICpRdENvbm5lY3Rpb25PYmplY3Q6OnF0X21l
dGFjYXN0KGNvbnN0IGNoYXIgKl9jbG5hbWUpCit7CisgICAgaWYgKCFfY2xuYW1lKSByZXR1cm4g
MDsKKyAgICBpZiAoIXN0cmNtcChfY2xuYW1lLCBxdF9tZXRhX3N0cmluZ2RhdGFfUXRDb25uZWN0
aW9uT2JqZWN0LnN0cmluZ2RhdGEpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dm9pZCo+
KGNvbnN0X2Nhc3Q8UXRDb25uZWN0aW9uT2JqZWN0Kj4odGhpcykpOworICAgIHJldHVybiBRT2Jq
ZWN0OjpxdF9tZXRhY2FzdChfY2xuYW1lKTsKK30KKworaW50IFF0Q29ubmVjdGlvbk9iamVjdDo6
cXRfbWV0YWNhbGwoUU1ldGFPYmplY3Q6OkNhbGwgX2MsIGludCBfaWQsIHZvaWQgKipfYSkKK3sK
KyAgICBfaWQgPSBRT2JqZWN0OjpxdF9tZXRhY2FsbChfYywgX2lkLCBfYSk7CisgICAgaWYgKF9p
ZCA8IDApCisgICAgICAgIHJldHVybiBfaWQ7CisgICAgaWYgKF9jID09IFFNZXRhT2JqZWN0OjpJ
bnZva2VNZXRhTWV0aG9kKSB7CisgICAgICAgIGlmIChfaWQgPCAxKQorICAgICAgICAgICAgcXRf
c3RhdGljX21ldGFjYWxsKHRoaXMsIF9jLCBfaWQsIF9hKTsKKyAgICAgICAgX2lkIC09IDE7Cisg
ICAgfQorICAgIHJldHVybiBfaWQ7Cit9CisvLyBFbmQgb2YgbW9jLWdlbmVyYXRlZCBjb2RlCisK
K3ZvaWQgUXRDb25uZWN0aW9uT2JqZWN0OjpleGVjdXRlKHZvaWQqKiBhcmd2KQoreworICAgIFFP
YmplY3QqIHNlbmRlciA9IHBhcmVudCgpOworICAgIGNvbnN0IFFNZXRhT2JqZWN0KiBtZXRhID0g
c2VuZGVyLT5tZXRhT2JqZWN0KCk7CisgICAgY29uc3QgUU1ldGFNZXRob2QgbWV0aG9kID0gbWV0
YS0+bWV0aG9kKG1fc2lnbmFsSW5kZXgpOworCisgICAgSlNWYWx1ZVJlZiogaWdub3JlZEV4Y2Vw
dGlvbiA9IDA7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGxlbmd0aFByb3BlcnR5KEFk
b3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIikpOworICAgIGludCBy
ZWNlaXZlckxlbmd0aCA9IGludChKU1ZhbHVlVG9OdW1iZXIobV9jb250ZXh0LCBKU09iamVjdEdl
dFByb3BlcnR5KG1fY29udGV4dCwgbV9yZWNlaXZlckZ1bmN0aW9uLCBsZW5ndGhQcm9wZXJ0eS5n
ZXQoKSwgaWdub3JlZEV4Y2VwdGlvbiksIGlnbm9yZWRFeGNlcHRpb24pKTsKKyAgICBpbnQgYXJn
YyA9IHFNYXgobWV0aG9kLnBhcmFtZXRlckNvdW50KCksIHJlY2VpdmVyTGVuZ3RoKTsKKyAgICBX
VEY6OlZlY3RvcjxKU1ZhbHVlUmVmPiBhcmdzKGFyZ2MpOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBhcmdjOyBpKyspIHsKKyAgICAgICAgaW50IGFyZ1R5cGUgPSBtZXRob2QucGFyYW1ldGVy
VHlwZShpKTsKKyAgICAgICAgYXJnc1tpXSA9IGNvbnZlcnRRVmFyaWFudFRvVmFsdWUobV9jb250
ZXh0LCBtX3Jvb3RPYmplY3QsIFFWYXJpYW50KGFyZ1R5cGUsIGFyZ3ZbaSsxXSksIGlnbm9yZWRF
eGNlcHRpb24pOworICAgIH0KKworICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24obV9jb250ZXh0
LCBtX3JlY2VpdmVyRnVuY3Rpb24sIG1fcmVjZWl2ZXIsIGFyZ2MsIGFyZ3MuZGF0YSgpLCAwKTsK
K30KKworYm9vbCBRdENvbm5lY3Rpb25PYmplY3Q6Om1hdGNoKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBRT2JqZWN0KiBzZW5kZXIsIGludCBzaWduYWxJbmRleCwgSlNPYmplY3RSZWYgcmVjZWl2ZXIs
IEpTT2JqZWN0UmVmIHJlY2VpdmVyRnVuY3Rpb24pCit7CisgICAgaWYgKHNlbmRlciAhPSBwYXJl
bnQoKSB8fCBzaWduYWxJbmRleCAhPSBtX3NpZ25hbEluZGV4KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgSlNWYWx1ZVJlZiogaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgY29uc3QgYm9v
bCByZWNlaXZlck1hdGNoID0gKCFyZWNlaXZlciAmJiAhbV9yZWNlaXZlcikgfHwgKHJlY2VpdmVy
ICYmIG1fcmVjZWl2ZXIgJiYgSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgcmVjZWl2ZXIsIG1fcmVj
ZWl2ZXIsIGlnbm9yZWRFeGNlcHRpb24pKTsKKyAgICByZXR1cm4gcmVjZWl2ZXJNYXRjaCAmJiBK
U1ZhbHVlSXNFcXVhbChjb250ZXh0LCByZWNlaXZlckZ1bmN0aW9uLCBtX3JlY2VpdmVyRnVuY3Rp
b24sIGlnbm9yZWRFeGNlcHRpb24pOworfQorCit9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
cnVudGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZTQyYTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCkBA
IC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKgorICovCisKKyNpZm5kZWYgQklORElOR1NfUVRfUlVOVElNRV9IXworI2RlZmluZSBCSU5E
SU5HU19RVF9SVU5USU1FX0hfCisKKyNpbmNsdWRlICJCcmlkZ2VKU0MuaCIKKyNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0LmgiCisjaW5jbHVkZSAiV2Vhay5o
IgorI2luY2x1ZGUgIldlYWtJbmxpbmVzLmgiCisjaW5jbHVkZSAicXRfaW5zdGFuY2UuaCIKKyNp
bmNsdWRlICJydW50aW1lX21ldGhvZC5oIgorCisjaW5jbHVkZSA8UVBvaW50ZXI+CisKKyNpbmNs
dWRlIDxxYnl0ZWFycmF5Lmg+CisjaW5jbHVkZSA8cW1ldGFvYmplY3QuaD4KKyNpbmNsdWRlIDxx
dmFyaWFudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVj
dDsKK30KKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgQmluZGluZ3MgeworCitjbGFzcyBR
dEZpZWxkIDogcHVibGljIEZpZWxkIHsKK3B1YmxpYzoKKworICAgIHR5cGVkZWYgZW51bSB7Cisg
ICAgICAgIE1ldGFQcm9wZXJ0eSwKKyNpZm5kZWYgUVRfTk9fUFJPUEVSVElFUworICAgICAgICBE
eW5hbWljUHJvcGVydHksCisjZW5kaWYKKyAgICAgICAgQ2hpbGRPYmplY3QKKyAgICB9IFF0Rmll
bGRUeXBlOworCisgICAgUXRGaWVsZChjb25zdCBRTWV0YVByb3BlcnR5ICZwKQorICAgICAgICA6
IG1fdHlwZShNZXRhUHJvcGVydHkpLCBtX3Byb3BlcnR5KHApCisgICAgICAgIHt9CisKKyNpZm5k
ZWYgUVRfTk9fUFJPUEVSVElFUworICAgIFF0RmllbGQoY29uc3QgUUJ5dGVBcnJheSAmYikKKyAg
ICAgICAgOiBtX3R5cGUoRHluYW1pY1Byb3BlcnR5KSwgbV9keW5hbWljUHJvcGVydHkoYikKKyAg
ICAgICAge30KKyNlbmRpZgorCisgICAgUXRGaWVsZChRT2JqZWN0ICpjaGlsZCkKKyAgICAgICAg
OiBtX3R5cGUoQ2hpbGRPYmplY3QpLCBtX2NoaWxkT2JqZWN0KGNoaWxkKQorICAgICAgICB7fQor
CisgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlVG9JbnN0YW5jZShF
eGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0OworICAgIFFCeXRlQXJy
YXkgbmFtZSgpIGNvbnN0OworICAgIFF0RmllbGRUeXBlIGZpZWxkVHlwZSgpIGNvbnN0IHtyZXR1
cm4gbV90eXBlO30KK3ByaXZhdGU6CisgICAgUXRGaWVsZFR5cGUgbV90eXBlOworICAgIFFCeXRl
QXJyYXkgbV9keW5hbWljUHJvcGVydHk7CisgICAgUU1ldGFQcm9wZXJ0eSBtX3Byb3BlcnR5Owor
ICAgIFFQb2ludGVyPFFPYmplY3Q+IG1fY2hpbGRPYmplY3Q7Cit9OworCitjbGFzcyBRdFJ1bnRp
bWVNZXRob2QgeworcHVibGljOgorICAgIGVudW0gTWV0aG9kRmxhZ3MgeworICAgICAgICBNZXRo
b2RJc1NpZ25hbCA9IDEsCisgICAgICAgIEFsbG93UHJpdmF0ZSA9IDIKKyAgICB9OworCisgICAg
UXRSdW50aW1lTWV0aG9kKEpTQ29udGV4dFJlZiwgUU9iamVjdCosIGNvbnN0IFFCeXRlQXJyYXkm
IGlkZW50aWZpZXIsIGludCBzaWduYWxJbmRleCwgaW50IGZsYWdzLCBRdEluc3RhbmNlKik7Cisg
ICAgflF0UnVudGltZU1ldGhvZCgpOworCisgICAgc3RhdGljIEpTVmFsdWVSZWYgY2FsbChKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIEpTVmFsdWVSZWYgY29ubmVjdChKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIEpTVmFsdWVSZWYgZGlzY29ubmVjdChK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisKKyAgICBKU09iamVjdFJlZiBqc09iamVjdFJlZihK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisKKyAgICBjb25zdCBRQnl0ZUFy
cmF5JiBuYW1lKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgc3Rh
dGljIFF0UnVudGltZU1ldGhvZCogdG9SdW50aW1lTWV0aG9kKEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYpOworCisgICAgc3RhdGljIEpTVmFsdWVSZWYgY29ubmVjdE9yRGlzY29ubmVjdChKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbiwgYm9vbCBjb25uZWN0KTsKKyAgICBRUG9pbnRlcjxRT2JqZWN0
PiBtX29iamVjdDsKKyAgICBRQnl0ZUFycmF5IG1faWRlbnRpZmllcjsKKyAgICBpbnQgbV9pbmRl
eDsKKyAgICBpbnQgbV9mbGFnczsKKyAgICBXZWFrPEpTT2JqZWN0PiBtX2pzT2JqZWN0OworICAg
IFF0SW5zdGFuY2UqIG1faW5zdGFuY2U7Cit9OworCisvLyBBIFF0Q29ubmVjdGlvbk9iamVjdCBy
ZXByZXNlbnRzIGEgY29ubmVjdGlvbiBjcmVhdGVkIGluc2lkZSBKUy4gSXQgd2lsbCBjb25uZWN0
IGl0cyBvd24gZXhlY3V0ZSgpIHNsb3QKKy8vIHdpdGggdGhlIGFwcHJvcHJpYXRlIHNpZ25hbCBv
ZiAnc2VuZGVyJy4gV2hlbiBleGVjdXRlKCkgaXMgY2FsbGVkLCBpdCB3aWxsIGNhbGwgSlMgJ3Jl
Y2VpdmVyRnVuY3Rpb24nLgorY2xhc3MgUXRDb25uZWN0aW9uT2JqZWN0IDogcHVibGljIFFPYmpl
Y3QKK3sKKyAgICBRX09CSkVDVF9GQUtFCitwdWJsaWM6CisgICAgUXRDb25uZWN0aW9uT2JqZWN0
KEpTQ29udGV4dFJlZiwgUGFzc1JlZlB0cjxRdEluc3RhbmNlPiBzZW5kZXJJbnN0YW5jZSwgaW50
IHNpZ25hbEluZGV4LCBKU09iamVjdFJlZiByZWNlaXZlciwgSlNPYmplY3RSZWYgcmVjZWl2ZXJG
dW5jdGlvbik7CisgICAgflF0Q29ubmVjdGlvbk9iamVjdCgpOworCisgICAgdm9pZCBleGVjdXRl
KHZvaWQgKiphcmd2KTsKKworICAgIGJvb2wgbWF0Y2goSlNDb250ZXh0UmVmLCBRT2JqZWN0KiBz
ZW5kZXIsIGludCBzaWduYWxJbmRleCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNPYmplY3RS
ZWYgZnVuY09iamVjdCk7CisKK3ByaXZhdGU6CisgICAgSlNHbG9iYWxDb250ZXh0UmVmIG1fY29u
dGV4dDsKKyAgICBSZWZQdHI8Um9vdE9iamVjdD4gbV9yb290T2JqZWN0OworCisgICAgaW50IG1f
c2lnbmFsSW5kZXg7CisgICAgSlNPYmplY3RSZWYgbV9yZWNlaXZlcjsKKyAgICBKU09iamVjdFJl
ZiBtX3JlY2VpdmVyRnVuY3Rpb247CisKKyAgICBmcmllbmQgY2xhc3MgUXRSdW50aW1lTWV0aG9k
OworICAgIHN0YXRpYyBRTXVsdGlNYXA8UU9iamVjdCosIFF0Q29ubmVjdGlvbk9iamVjdCo+IGNv
bm5lY3Rpb25zOworfTsKKworCit0eXBlZGVmIFFWYXJpYW50ICgqQ29udmVydFRvVmFyaWFudEZ1
bmN0aW9uKShKU09iamVjdCogb2JqZWN0LCBpbnQgKmRpc3RhbmNlLCBIYXNoU2V0PEpTT2JqZWN0
UmVmPiogdmlzaXRlZE9iamVjdHMpOwordHlwZWRlZiBKU1ZhbHVlICgqQ29udmVydFRvSlNWYWx1
ZUZ1bmN0aW9uKShFeGVjU3RhdGUqIGV4ZWMsIFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFFWYXJpYW50JiB2YXJpYW50KTsKKwordm9pZCByZWdpc3RlckN1
c3RvbVR5cGUoaW50IHF0TWV0YVR5cGVJZCwgQ29udmVydFRvVmFyaWFudEZ1bmN0aW9uLCBDb252
ZXJ0VG9KU1ZhbHVlRnVuY3Rpb24pOworCitRVmFyaWFudCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgUU1ldGFUeXBlOjpUeXBlIGhpbnQsIGludCAqZGlz
dGFuY2UsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CitKU1ZhbHVlUmVmIGNvbnZlcnRRVmFyaWFu
dFRvVmFsdWUoSlNDb250ZXh0UmVmLCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+LCBjb25zdCBRVmFy
aWFudCYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisKK3ZvaWQgc2V0RXhjZXB0aW9uKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBjb25zdCBRU3RyaW5nJiB0ZXh0KTsKKwor
fSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCmluZGV4IGQ4YTM5YWYuLjlmYzc4
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaApAQCAtNjAsOCAr
NjAsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZGVub21pbmF0b3JWYWx1ZTsKIH07CiAKLUNT
U19WQUxVRV9UWVBFX0NBU1RTKEFzcGVjdFJhdGlvVmFsdWUpCi0KIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggNGI4YTM0
Yi4uNDExMmJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuaApAQCAtNTYsOCArNTYsNiBAQCBwcml2YXRlOgogICAgIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzbGljZXMsIGJvb2wgZmlsbCk7
CiB9OwogCi1DU1NfVkFMVUVfVFlQRV9DQVNUUyhCb3JkZXJJbWFnZVNsaWNlVmFsdWUpCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU0JvcmRlckltYWdlU2xpY2VWYWx1
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDlmYjFlMmQuLjYzM2QxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zOTEsNyArMzkxLDYgQEAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAjaWYg
RU5BQkxFKENTU19TSEFQRVMpCiAgICAgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU1hcmdpbiwKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlUGFkZGluZywKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFNo
YXBlSW1hZ2VUaHJlc2hvbGQsCiAjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgIENTU1Byb3Bl
cnR5QnVmZmVyZWRSZW5kZXJpbmcsCkBAIC0yODQ2LDggKzI4NDUsNiBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHN0eWxlLT5zaGFwZU1hcmdpbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNo
YXBlUGFkZGluZzoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1
ZShzdHlsZS0+c2hhcGVQYWRkaW5nKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
U2hhcGVJbWFnZVRocmVzaG9sZDoKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShzdHlsZS0+c2hhcGVJbWFnZVRocmVzaG9sZCgpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lk
ZToKICAgICAgICAgICAgIGlmICghc3R5bGUtPnNoYXBlSW5zaWRlKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXggODczMzky
OC4uOTlhMTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBA
IC05NSw4ICs5NSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLUNTU19WQUxVRV9UWVBFX0NB
U1RTKEZvbnRGYWNlU3JjVmFsdWUpCi0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwCmluZGV4IDlhMDVkNTUuLmU4NDMxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC05OSwxNSArOTksMTUgQEAgdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VS
dWxlKQogICAgIGlmICghZm9udEZhbWlseSB8fCAhc3JjIHx8ICFmb250RmFtaWx5LT5pc1ZhbHVl
TGlzdCgpIHx8ICFzcmMtPmlzVmFsdWVMaXN0KCkgfHwgKHVuaWNvZGVSYW5nZSAmJiAhdW5pY29k
ZVJhbmdlLT5pc1ZhbHVlTGlzdCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTVmFsdWVM
aXN0KiBmYW1pbHlMaXN0ID0gdG9DU1NWYWx1ZUxpc3QoZm9udEZhbWlseS5nZXQoKSk7CisgICAg
Q1NTVmFsdWVMaXN0KiBmYW1pbHlMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oZm9u
dEZhbWlseS5nZXQoKSk7CiAgICAgaWYgKCFmYW1pbHlMaXN0LT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ1NTVmFsdWVMaXN0KiBzcmNMaXN0ID0gdG9DU1NWYWx1ZUxpc3Qoc3Jj
LmdldCgpKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHNyY0xpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1
ZUxpc3QqPihzcmMuZ2V0KCkpOwogICAgIGlmICghc3JjTGlzdC0+bGVuZ3RoKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIENTU1ZhbHVlTGlzdCogcmFuZ2VMaXN0ID0gdG9DU1NWYWx1ZUxpc3Qo
dW5pY29kZVJhbmdlLmdldCgpKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHJhbmdlTGlzdCA9IHN0YXRp
Y19jYXN0PENTU1ZhbHVlTGlzdCo+KHVuaWNvZGVSYW5nZS5nZXQoKSk7CiAKICAgICB1bnNpZ25l
ZCB0cmFpdHNNYXNrID0gMDsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVj
dG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVs
ZSkKICAgICAgICAgfSBlbHNlIGlmICghZm9udFZhcmlhbnQtPmlzVmFsdWVMaXN0KCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YXJpYW50TGlzdCA9IHRv
Q1NTVmFsdWVMaXN0KGZvbnRWYXJpYW50LmdldCgpKTsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB2
YXJpYW50TGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KGZvbnRWYXJpYW50LmdldCgp
KTsKICAgICAgICAgdW5zaWduZWQgbnVtVmFyaWFudHMgPSB2YXJpYW50TGlzdC0+bGVuZ3RoKCk7
CiAgICAgICAgIGlmICghbnVtVmFyaWFudHMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDcs
NyArMjA3LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBT
dHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzcmNMZW5ndGg7IGkrKykgewogICAgICAgICAvLyBBbiBpdGVtIGluIHRoZSBsaXN0IGVpdGhl
ciBzcGVjaWZpZXMgYSBzdHJpbmcgKGxvY2FsIGZvbnQgbmFtZSkgb3IgYSBVUkwgKHJlbW90ZSBm
b250IHRvIGRvd25sb2FkKS4KLSAgICAgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZSogaXRlbSA9IHRv
Q1NTRm9udEZhY2VTcmNWYWx1ZShzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsK
KyAgICAgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PENTU0ZvbnRG
YWNlU3JjVmFsdWUqPihzcmNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKICAgICAg
ICAgT3duUHRyPENTU0ZvbnRGYWNlU291cmNlPiBzb3VyY2U7CiAKICNpZiBFTkFCTEUoU1ZHX0ZP
TlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKaW5kZXggZGE1YTYxMC4uMzc0
MzM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCkBAIC01Nyw4ICs1Nyw2
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbV9hcmdzOwogfTsKIAotQ1NT
X1ZBTFVFX1RZUEVfQ0FTVFMoRnVuY3Rpb25WYWx1ZSkKLQogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKaW5kZXggYWFmNjE1MS4uODg2YWEwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKQEAgLTQ0LDggKzQ0LDYgQEAgcHJpdmF0
ZToKICAgICB9CiB9OwogCi1DU1NfVkFMVUVfVFlQRV9DQVNUUyhJbmhlcml0ZWRWYWx1ZSkKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTSW5oZXJpdGVkVmFsdWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBjMWMxYzJlLi5iMTUwMmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTUyNyw3ICsxNTI3LDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2Vk
UHJvcGUKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eVZhcmlhYmxlKSB7Ci0gICAg
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSB0b0NTU1ZhcmlhYmxlVmFsdWUocHJv
cGVydHkudmFsdWUoKSktPm5hbWUoKTsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSA9IHN0YXRpY19jYXN0PENTU1ZhcmlhYmxlVmFsdWUqPihwcm9wZXJ0eS52YWx1ZSgpKS0+
bmFtZSgpOwogICAgICAgICAgICAgaWYgKHNlZW5WYXJpYWJsZXMuY29udGFpbnMobmFtZSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzZWVuVmFyaWFibGVzLmFkZChu
YW1lKTsKQEAgLTMwMjksOSArMzAyOSw2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U2hhcGVQYWRkaW5nOgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSAmJiAhaWQg
JiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZykpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVJbWFnZVRocmVzaG9sZDoKLSAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jc3NTaGFwZXNFbmFibGVkKCkgJiYgIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlcikp
OwotICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJ
T04pCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUltYWdlT3JpZW50YXRpb246CkBAIC0zMTk2LDcgKzMx
OTMsNyBAQCB2b2lkIENTU1BhcnNlcjo6YWRkRmlsbFZhbHVlKFJlZlB0cjxDU1NWYWx1ZT4mIGx2
YWwsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHJ2YWwpCiB7CiAgICAgaWYgKGx2YWwpIHsKICAgICAg
ICAgaWYgKGx2YWwtPmlzQmFzZVZhbHVlTGlzdCgpKQotICAgICAgICAgICAgdG9DU1NWYWx1ZUxp
c3QobHZhbC5nZXQoKSktPmFwcGVuZChydmFsKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KGx2YWwuZ2V0KCkpLT5hcHBlbmQocnZhbCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gb2xkbFZhbChsdmFsLnJlbGVhc2UoKSk7
CiAgICAgICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKQEAgLTM0MDQsNyArMzQwMSw3IEBAIHZvaWQgQ1NT
UGFyc2VyOjphZGRBbmltYXRpb25WYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiByCiB7CiAgICAgaWYgKGx2YWwpIHsKICAgICAgICAgaWYgKGx2YWwtPmlz
VmFsdWVMaXN0KCkpCi0gICAgICAgICAgICB0b0NTU1ZhbHVlTGlzdChsdmFsLmdldCgpKS0+YXBw
ZW5kKHJ2YWwpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4obHZhbC5n
ZXQoKSktPmFwcGVuZChydmFsKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBvbGRWYWwobHZhbC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CkBAIC0xMTY2Niw3ICsxMTY2Myw3IEBAIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4g
Q1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUoKQogICAgICAgICBDU1NQcm9wZXJ0eSYgcHJv
cGVydHkgPSBtX3BhcnNlZFByb3BlcnRpZXNbaV07CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgp
ID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQgJiYgcHJvcGVydHkudmFsdWUoKS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcHJvcGVydHkud3JhcFZhbHVlSW5Db21tYVNlcGFyYXRl
ZExpc3QoKTsKLSAgICAgICAgZWxzZSBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUZv
bnRGYW1pbHkgJiYgKCFwcm9wZXJ0eS52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpIHx8IHRvQ1NTVmFs
dWVMaXN0KHByb3BlcnR5LnZhbHVlKCkpLT5sZW5ndGgoKSAhPSAxKSkgeworICAgICAgICBlbHNl
IGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3BlcnR5
LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJv
cGVydHkudmFsdWUoKSktPmxlbmd0aCgpICE9IDEpKSB7CiAgICAgICAgICAgICAvLyBVbmxpa2Ug
Zm9udC1mYW1pbHkgcHJvcGVydHksIGZvbnQtZmFtaWx5IGRlc2NyaXB0b3IgaW4gQGZvbnQtZmFj
ZSBydWxlCiAgICAgICAgICAgICAvLyBoYXMgdG8gYmUgYSB2YWx1ZSBsaXN0IHdpdGggZXhhY3Rs
eSBvbmUgZmFtaWx5IG5hbWUuIEl0IGNhbm5vdCBoYXZlIGEKICAgICAgICAgICAgIC8vIGhhdmUg
J2luaXRpYWwnIHZhbHVlIGFuZCBjYW5ub3QgJ2luaGVyaXQnIGZyb20gcGFyZW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggMTMyM2NhZi4uZDMyYTYzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgQ1NTUHJvcGVydHk6Ondy
YXBWYWx1ZUluQ29tbWFTZXBhcmF0ZWRMaXN0KCkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlID0gbV92YWx1ZS5yZWxlYXNlKCk7CiAgICAgbV92YWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICB0b0NTU1ZhbHVlTGlzdChtX3ZhbHVlLmdldCgpKS0+
YXBwZW5kKHZhbHVlLnJlbGVhc2UoKSk7CisgICAgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
bV92YWx1ZS5nZXQoKSktPmFwcGVuZCh2YWx1ZS5yZWxlYXNlKCkpOwogfQogCiBlbnVtIExvZ2lj
YWxCb3hTaWRlIHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggMTk5NmU0OC4uMzAyZjA1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTQzMiw3ICs0MzIs
NiBAQCB6LWluZGV4CiAtd2Via2l0LXNoYXBlLW91dHNpZGUKIC13ZWJraXQtc2hhcGUtbWFyZ2lu
CiAtd2Via2l0LXNoYXBlLXBhZGRpbmcKLS13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkCiAj
ZW5kaWYKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykgJiYgRU5BQkxFX0NTU19F
WENMVVNJT05TCiAtd2Via2l0LXdyYXAtZmxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAu
Y3BwCmluZGV4IGZjYmNjYjMuLjM4Mjc4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1h
cC5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVj
ZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSwgTgogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVyIGltYWdlIHZhbHVlLgotICAg
IENTU1ZhbHVlTGlzdCogYm9yZGVySW1hZ2UgPSB0b0NTU1ZhbHVlTGlzdCh2YWx1ZSk7CisgICAg
Q1NTVmFsdWVMaXN0KiBib3JkZXJJbWFnZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZh
bHVlKTsKIAogICAgIC8vIFNldCB0aGUgaW1hZ2UgKHRoaXMga2lja3Mgb2ZmIHRoZSBsb2FkKS4K
ICAgICBDU1NQcm9wZXJ0eUlEIGltYWdlUHJvcGVydHk7CkBAIC01NjEsNyArNTYxLDcgQEAgdm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBDU1NWYWx1ZSogdmFsdWUsIE4KICAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+aXNCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUoKSkKICAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2UoY3Vy
cmVudCwgaW1hZ2UpOwogICAgICAgICBlbHNlIGlmIChjdXJyZW50LT5pc1ZhbHVlTGlzdCgpKSB7
Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHNsYXNoTGlzdCA9IHRvQ1NTVmFsdWVMaXN0KGN1
cnJlbnQpOworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBzbGFzaExpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPihjdXJyZW50KTsKICAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgaW1h
Z2Ugc2xpY2VzLgogICAgICAgICAgICAgaWYgKHNsYXNoTGlzdC0+aXRlbSgwKSAmJiBzbGFzaExp
c3QtPml0ZW0oMCktPmlzQm9yZGVySW1hZ2VTbGljZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
bWFwTmluZVBpZWNlSW1hZ2VTbGljZShzbGFzaExpc3QtPml0ZW0oMCksIGltYWdlKTsKQEAgLTYw
MCw3ICs2MDAsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2Uo
Q1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1hZwogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVyIGltYWdlIHZhbHVlLgotICAgIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSogYm9yZGVySW1hZ2VTbGljZSA9IHRvQ1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlKHZhbHVlKTsKKyAgICBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqIGJvcmRlckltYWdlU2xp
Y2UgPSBzdGF0aWNfY2FzdDxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqPih2YWx1ZSk7CiAKICAg
ICAvLyBTZXQgdXAgYSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBvdXIgaW1hZ2Ugc2xpY2VzLgog
ICAgIExlbmd0aEJveCBib3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCBhMDFkZjExLi5i
ZTkyMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTM4MywxMCArMzgzLDEwIEBAIHZv
aWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogCiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAg
IGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NTQXNwZWN0UmF0aW9W
YWx1ZSh0aGlzKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlvVmFs
dWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQm9yZGVySW1hZ2VTbGljZUNs
YXNzOgotICAgICAgICBkZWxldGUgdG9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUodGhpcyk7Cisg
ICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqPih0aGlz
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2FudmFzQ2xhc3M6CiAgICAgICAgIGRlbGV0
ZSB0b0NTU0NhbnZhc1ZhbHVlKHRoaXMpOwpAQCAtMzk4LDEzICszOTgsMTMgQEAgdm9pZCBDU1NW
YWx1ZTo6ZGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxGb250VmFsdWUqPih0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRm9udEZhY2VTcmNDbGFzczoKLSAgICAg
ICAgZGVsZXRlIHRvQ1NTRm9udEZhY2VTcmNWYWx1ZSh0aGlzKTsKKyAgICAgICAgZGVsZXRlIHN0
YXRpY19jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgRm9udEZlYXR1cmVDbGFzczoKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEZv
bnRGZWF0dXJlVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRnVuY3Rp
b25DbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NTRnVuY3Rpb25WYWx1ZSh0aGlzKTsKKyAgICAg
ICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU0Z1bmN0aW9uVmFsdWUqPih0aGlzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKICAgICAgICAgZGVsZXRlIHRv
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZSh0aGlzKTsKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIENT
U1ZhbHVlOjpkZXN0cm95KCkKICAgICAgICAgZGVsZXRlIHRvQ1NTSW1hZ2VWYWx1ZSh0aGlzKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5oZXJpdGVkQ2xhc3M6Ci0gICAgICAgIGRlbGV0
ZSB0b0NTU0luaGVyaXRlZFZhbHVlKHRoaXMpOworICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8
Q1NTSW5oZXJpdGVkVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5p
dGlhbENsYXNzOgogICAgICAgICBkZWxldGUgdG9DU1NJbml0aWFsVmFsdWUodGhpcyk7CkBAIC00
NDMsNyArNDQzLDcgQEAgdm9pZCBDU1NWYWx1ZTo6ZGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxDU1NVbmljb2RlUmFuZ2VWYWx1ZSo+KHRoaXMpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBWYWx1ZUxpc3RDbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NTVmFsdWVMaXN0
KHRoaXMpOworICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odGhpcyk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybUNsYXNzOgogICAg
ICAgICBkZWxldGUgdG9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSh0aGlzKTsKQEAgLTQ4Myw3ICs0
ODMsNyBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
VkFSSUFCTEVTKQogICAgIGNhc2UgVmFyaWFibGVDbGFzczoKLSAgICAgICAgZGVsZXRlIHRvQ1NT
VmFyaWFibGVWYWx1ZSh0aGlzKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU1Zhcmlh
YmxlVmFsdWUqPih0aGlzKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggYmQ1YzNkMS4uNjg0NWE3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKQEAgLTc0LDkgKzc0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDYW52YXNWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IENhbnZhc0NsYXNzOyB9CiAgICAgYm9v
bCBpc0Nyb3NzZmFkZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3Jvc3Nm
YWRlQ2xhc3M7IH0KICAgICBib29sIGlzQ3Vyc29ySW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xhc3NUeXBlID09IEN1cnNvckltYWdlQ2xhc3M7IH0KLSAgICBib29sIGlzRnVuY3Rpb25W
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEZ1bmN0aW9uQ2xhc3M7IH0KICAg
ICBib29sIGlzRm9udEZlYXR1cmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IEZvbnRGZWF0dXJlQ2xhc3M7IH0KLSAgICBib29sIGlzRm9udEZhY2VTcmNWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEZvbnRGYWNlU3JjQ2xhc3M7IH0KICAgICBib29sIGlz
Rm9udFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gRm9udENsYXNzOyB9CiAg
ICAgYm9vbCBpc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA+PSBDYW52YXNDbGFzcyAmJiBtX2NsYXNzVHlwZSA8PSBSYWRpYWxHcmFkaWVudENsYXNzOyB9
CiAgICAgYm9vbCBpc0dyYWRpZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA+
PSBMaW5lYXJHcmFkaWVudENsYXNzICYmIG1fY2xhc3NUeXBlIDw9IFJhZGlhbEdyYWRpZW50Q2xh
c3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCAzZmE0MWE1Li4yYmRkOWU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC04MywxMyArODMsMTEgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8UmVmUHRyPENTU1ZhbHVlPiwgND4gbV92YWx1ZXM7CiB9OwogCi1DU1NfVkFM
VUVfVFlQRV9DQVNUUyhWYWx1ZUxpc3QpCi0KIC8vIE9iamVjdHMgb2YgdGhpcyBjbGFzcyBhcmUg
aW50ZW5kZWQgdG8gYmUgc3RhY2stYWxsb2NhdGVkIGFuZCBzY29wZWQgdG8gYSBzaW5nbGUgZnVu
Y3Rpb24uCiAvLyBQbGVhc2UgdGFrZSBjYXJlIG5vdCB0byBwYXNzIHRoZXNlIGFyb3VuZCBhcyB0
aGV5IGRvIGhvbGQgb250byBhIHJhdyBwb2ludGVyLgogY2xhc3MgQ1NTVmFsdWVMaXN0SW5zcGVj
dG9yIHsKIHB1YmxpYzoKLSAgICBDU1NWYWx1ZUxpc3RJbnNwZWN0b3IoQ1NTVmFsdWUqIHZhbHVl
KSA6IG1fbGlzdCgodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0KCkpID8gdG9DU1NWYWx1ZUxp
c3QodmFsdWUpIDogMCkgeyB9CisgICAgQ1NTVmFsdWVMaXN0SW5zcGVjdG9yKENTU1ZhbHVlKiB2
YWx1ZSkgOiBtX2xpc3QoKHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSA/IHN0YXRpY19j
YXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKSA6IDApIHsgfQogICAgIENTU1ZhbHVlKiBpdGVtKHNp
emVfdCBpbmRleCkgY29uc3QgeyBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRl
eCA8IGxlbmd0aCgpKTsgcmV0dXJuIG1fbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpbmRl
eCk7IH0KICAgICBDU1NWYWx1ZSogZmlyc3QoKSBjb25zdCB7IHJldHVybiBpdGVtKDApOyB9CiAg
ICAgQ1NTVmFsdWUqIHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZW0oMSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCmluZGV4IGU5NDEwM2EuLmM4M2M2YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaApAQCAtNjEsOCArNjEsNiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IFN0cmluZyBtX3ZhbHVlOwogfTsKIAotQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoVmFy
aWFibGVWYWx1ZSkKLQogfQogCiAjZW5kaWYgLyogRU5BQkxFKENTU19WQVJJQUJMRVMpICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggZmRj
Y2RiYy4uOTdiM2EzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVC
dWlsZGVyLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICAp
IHsKICAgICAgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXll
ciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuICovCi0gICAgICAgICAgICBDU1NWYWx1
ZUxpc3QqIHZhbHVlTGlzdCA9IHRvQ1NTVmFsdWVMaXN0KHZhbHVlKTsKKyAgICAgICAgICAgIENT
U1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUp
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxl
bmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAoIWN1cnJDaGlsZCkgewogICAgICAg
ICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZh
bHVlICovCkBAIC05NTUsNyArOTU1LDcgQEAgcHVibGljOgogICAgICAgICBGb250RGVzY3JpcHRp
b246OkxpZ2F0dXJlc1N0YXRlIGhpc3RvcmljYWxMaWdhdHVyZXNTdGF0ZSA9IEZvbnREZXNjcmlw
dGlvbjo6Tm9ybWFsTGlnYXR1cmVzU3RhdGU7CiAKICAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVl
TGlzdCgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHRvQ1NTVmFs
dWVMaXN0KHZhbHVlKTsKKyAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogaXRlbSA9IHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKQEAgLTExNTUs
NyArMTE1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNldENvdW50ZXJJbmNyZW1lbnRUb05v
bmUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSB0b0NTU1ZhbHVlTGlzdCh2YWx1ZSk7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlz
dCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKICAgICAgICAgaW50IGxlbmd0
aCA9IGxpc3QgPyBsaXN0LT5sZW5ndGgoKSA6IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBjdXJyVmFsdWUgPSBsaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Y2xlYXJDdXJzb3JMaXN0
KCk7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gdG9DU1NWYWx1ZUxpc3QodmFsdWUpOworICAgICAgICAgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogICAg
ICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwogICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+c3R5bGUoKS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKQEAgLTE2NTAsNyArMTY1MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1
ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gdG9D
U1NWYWx1ZUxpc3QodmFsdWUpOworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogICAgICAgICAgICAgQVNTRVJUKGxpc3Qt
Pmxlbmd0aCgpID09IDIpOwogICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpICE9IDIpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg2OSw3ICsxODY5LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8oZmFsc2Up
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIENTU0FzcGVjdFJhdGlv
VmFsdWUqIGFzcGVjdFJhdGlvVmFsdWUgPSB0b0NTU0FzcGVjdFJhdGlvVmFsdWUodmFsdWUpOwor
ICAgICAgICBDU1NBc3BlY3RSYXRpb1ZhbHVlKiBhc3BlY3RSYXRpb1ZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8odHJ1ZSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIt
PnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+ZGVu
b21pbmF0b3JWYWx1ZSgpKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0QXNw
ZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+bnVtZXJhdG9yVmFsdWUoKSk7CkBA
IC0yMDYzLDcgKzIwNjMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5p
c1ZhbHVlTGlzdCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NWYWx1ZUxpc3Qq
IHZhbHVlTGlzdCA9IHRvQ1NTVmFsdWVMaXN0KHZhbHVlKTsKKyAgICAgICAgQ1NTVmFsdWVMaXN0
KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CiAgICAgICAg
IEltYWdlUmVzb2x1dGlvblNvdXJjZSBzb3VyY2UgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdl
UmVzb2x1dGlvblNvdXJjZSgpOwogICAgICAgICBJbWFnZVJlc29sdXRpb25TbmFwIHNuYXAgPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvblNuYXAoKTsKICAgICAgICAgZG91Ymxl
IHJlc29sdXRpb24gPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvbigpOwpAQCAt
MjEyMSw3ICsyMTIxLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0SW5kZW50TGluZSB0ZXh0SW5k
ZW50TGluZVZhbHVlID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50TGluZSgpOwogICAg
ICAgICBUZXh0SW5kZW50VHlwZSB0ZXh0SW5kZW50VHlwZVZhbHVlID0gUmVuZGVyU3R5bGU6Omlu
aXRpYWxUZXh0SW5kZW50VHlwZSgpOwogI2VuZGlmCi0gICAgICAgIENTU1ZhbHVlTGlzdCogdmFs
dWVMaXN0ID0gdG9DU1NWYWx1ZUxpc3QodmFsdWUpOworICAgICAgICBDU1NWYWx1ZUxpc3QqIHZh
bHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAg
ICAgIENTU1ZhbHVlKiBpdGVtID0gdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkp
OwogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC0yNDI3LDcg
KzI0MjcsNiBAQCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVy
KCkKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRTaGFwZU1hcmdpbiwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6
OnNoYXBlTWFyZ2luLCAmUmVuZGVyU3R5bGU6OnNldFNoYXBlTWFyZ2luLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxTaGFwZU1hcmdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0U2hhcGVQYWRkaW5nLCBBcHBseVByb3BlcnR5TGVuZ3Ro
PCZSZW5kZXJTdHlsZTo6c2hhcGVQYWRkaW5nLCAmUmVuZGVyU3R5bGU6OnNldFNoYXBlUGFkZGlu
ZywgJlJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVQYWRkaW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRTaGFwZUltYWdlVGhyZXNo
b2xkLCBBcHBseVByb3BlcnR5RGVmYXVsdDxmbG9hdCwgJlJlbmRlclN0eWxlOjpzaGFwZUltYWdl
VGhyZXNob2xkLCBmbG9hdCwgJlJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdlVGhyZXNob2xkLCBm
bG9hdCwgJlJlbmRlclN0eWxlOjppbml0aWFsU2hhcGVJbWFnZVRocmVzaG9sZD46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0U2hhcGVJ
bnNpZGUsIEFwcGx5UHJvcGVydHlTaGFwZTwmUmVuZGVyU3R5bGU6OnNoYXBlSW5zaWRlLCAmUmVu
ZGVyU3R5bGU6OnNldFNoYXBlSW5zaWRlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxTaGFwZUluc2lk
ZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0U2hhcGVPdXRzaWRlLCBBcHBseVByb3BlcnR5U2hhcGU8JlJlbmRlclN0eWxlOjpzaGFw
ZU91dHNpZGUsICZSZW5kZXJTdHlsZTo6c2V0U2hhcGVPdXRzaWRlLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxTaGFwZU91dHNpZGU+OjpjcmVhdGVIYW5kbGVyKCkpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCA0ZDlhMWFkLi40M2ViMWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTY1
LDEzICs2NSwxNSBAQCBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCYgcmlnaHRUb0xlZnRE
ZWNsYXJhdGlvbigpCiAKIGNsYXNzIE1hdGNoUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgTWF0Y2hS
ZXF1ZXN0KFJ1bGVTZXQqIHJ1bGVTZXQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMgPSBmYWxzZSkK
KyAgICBNYXRjaFJlcXVlc3QoUnVsZVNldCogcnVsZVNldCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cyA9IGZhbHNlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IDApCiAgICAgICAgIDogcnVs
ZVNldChydWxlU2V0KQogICAgICAgICAsIGluY2x1ZGVFbXB0eVJ1bGVzKGluY2x1ZGVFbXB0eVJ1
bGVzKQorICAgICAgICAsIHNjb3BlKHNjb3BlKQogICAgIHsKICAgICB9CiAgICAgY29uc3QgUnVs
ZVNldCogcnVsZVNldDsKICAgICBjb25zdCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzOworICAgIGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogfTsKIAogU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1
bHQmIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUmVzdWx0KCkKQEAgLTE2NSw3ICsxNjcs
OCBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25z
dCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdAogICAgIC8vIGMpIHRoZSBydWxlcyBjb21lcyBm
cm9tIGEgc2NvcGVkIHN0eWxlIHNoZWV0IHdpdGhpbiB0aGUgc2FtZSB0cmVlIHNjb3BlCiAgICAg
VHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBlbGVtZW50LT50cmVlU2NvcGUoKTsKICAgICBpZiAoIU1h
dGNoaW5nVUFSdWxlc1Njb3BlOjppc01hdGNoaW5nVUFSdWxlcygpCi0gICAgICAgICYmICF0cmVl
U2NvcGUtPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAgICYmICF0cmVlU2NvcGUtPmFwcGx5
QXV0aG9yU3R5bGVzKCkKKyAgICAgICAgJiYgKCFtYXRjaFJlcXVlc3Quc2NvcGUgfHwgbWF0Y2hS
ZXF1ZXN0LnNjb3BlLT50cmVlU2NvcGUoKSAhPSB0cmVlU2NvcGUpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXZSBuZWVkIHRvIGNvbGxlY3QgdGhlIHJ1bGVzIGZvciBpZCwgY2xhc3MsIHRh
ZywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpbnRvIGEgYnVmZmVyIGFuZApAQCAtMTk2LDcgKzE5OSw3
IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGNvbnN0IE1hdGNoUmVxdWVzdCYgbWF0CiAgICAgICAgIGlmIChjaGVja1JlZ2lvblNlbGVj
dG9yKHJlZ2lvblNlbGVjdG9yLCBtX3JlZ2lvbkZvclN0eWxpbmctPmdlbmVyYXRpbmdFbGVtZW50
KCkpKSB7CiAgICAgICAgICAgICBSdWxlU2V0KiByZWdpb25SdWxlcyA9IG1hdGNoUmVxdWVzdC5y
dWxlU2V0LT5yZWdpb25TZWxlY3RvcnNBbmRSdWxlU2V0cygpLmF0KGkpLnJ1bGVTZXQuZ2V0KCk7
CiAgICAgICAgICAgICBBU1NFUlQocmVnaW9uUnVsZXMpOwotICAgICAgICAgICAgY29sbGVjdE1h
dGNoaW5nUnVsZXMoTWF0Y2hSZXF1ZXN0KHJlZ2lvblJ1bGVzLCBtYXRjaFJlcXVlc3QuaW5jbHVk
ZUVtcHR5UnVsZXMpLCBydWxlUmFuZ2UpOworICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMoTWF0Y2hSZXF1ZXN0KHJlZ2lvblJ1bGVzLCBtYXRjaFJlcXVlc3QuaW5jbHVkZUVtcHR5UnVs
ZXMsIG1hdGNoUmVxdWVzdC5zY29wZSksIHJ1bGVSYW5nZSk7CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC0yMjUsNiArMjI4LDY4IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnNvcnRBbmRU
cmFuc2Zlck1hdGNoZWRSdWxlcygpCiAgICAgfQogfQogCit2b2lkIEVsZW1lbnRSdWxlQ29sbGVj
dG9yOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpCit7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKCFtX3Njb3BlUmVzb2x2ZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIE1hdGNoIHNjb3BlZCBhdXRob3IgcnVsZXMgYnkgdHJhdmVyc2lu
ZyB0aGUgc2NvcGVkIGVsZW1lbnQgc3RhY2sgKHJlYnVpbGQgaXQgaWYgaXQgZ290IGluY29uc2lz
dGVudCkuCisgICAgaWYgKG1fc2NvcGVSZXNvbHZlci0+aGFzU2NvcGVkU3R5bGVzKCkgJiYgbV9z
Y29wZVJlc29sdmVyLT5lbnN1cmVTdGFja0NvbnNpc3RlbmN5KG1fc3RhdGUuZWxlbWVudCgpKSkg
eworICAgICAgICBib29sIGFwcGx5QXV0aG9yU3R5bGVzID0gbV9zdGF0ZS5lbGVtZW50KCktPnRy
ZWVTY29wZSgpLT5hcHBseUF1dGhvclN0eWxlcygpOworICAgICAgICBib29sIGRvY3VtZW50U2Nv
cGUgPSB0cnVlOworICAgICAgICB1bnNpZ25lZCBzY29wZVNpemUgPSBtX3Njb3BlUmVzb2x2ZXIt
PnN0YWNrU2l6ZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2NvcGVTaXpl
OyArK2kpIHsKKyAgICAgICAgICAgIGNsZWFyTWF0Y2hlZFJ1bGVzKCk7CisgICAgICAgICAgICBt
X3Jlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUgPSBtX3Jlc3VsdC5tYXRjaGVkUHJvcGVydGll
cy5zaXplKCkgLSAxOworCisgICAgICAgICAgICBjb25zdCBTdHlsZVNjb3BlUmVzb2x2ZXI6OlN0
YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVJlc29sdmVyLT5zdGFja0ZyYW1lQXQoaSk7CisgICAg
ICAgICAgICBkb2N1bWVudFNjb3BlID0gZG9jdW1lbnRTY29wZSAmJiAhZnJhbWUubV9zY29wZS0+
aXNJblNoYWRvd1RyZWUoKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudFNjb3BlKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFhcHBseUF1dGhvclN0eWxlcykKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghbV9z
Y29wZVJlc29sdmVyLT5tYXRjaGVzU3R5bGVCb3VuZHMoZnJhbWUpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTWF0Y2hSZXF1ZXN0
IG1hdGNoUmVxdWVzdChmcmFtZS5tX3J1bGVTZXQsIGluY2x1ZGVFbXB0eVJ1bGVzLCBmcmFtZS5t
X3Njb3BlKTsKKyAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSBydWxlUmFuZ2Ug
PSBtX3Jlc3VsdC5yYW5nZXMuYXV0aG9yUnVsZVJhbmdlKCk7CisgICAgICAgICAgICBjb2xsZWN0
TWF0Y2hpbmdSdWxlcyhtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAgICAgICAgICBjb2xs
ZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CisgICAg
ICAgICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIG1hdGNoSG9zdFJ1bGVzKGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorfQorCit2b2lkIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjptYXRjaEhvc3RSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQorewor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEFTU0VSVChtX3Njb3BlUmVzb2x2ZXIpOworCisg
ICAgY2xlYXJNYXRjaGVkUnVsZXMoKTsKKyAgICBtX3Jlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1
bGUgPSBtX3Jlc3VsdC5tYXRjaGVkUHJvcGVydGllcy5zaXplKCkgLSAxOworCisgICAgVmVjdG9y
PFJ1bGVTZXQqPiBtYXRjaGVkUnVsZXM7CisgICAgbV9zY29wZVJlc29sdmVyLT5tYXRjaEhvc3RS
dWxlcyhtX3N0YXRlLmVsZW1lbnQoKSwgbWF0Y2hlZFJ1bGVzKTsKKyAgICBpZiAobWF0Y2hlZFJ1
bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
bWF0Y2hlZFJ1bGVzLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICBTdHlsZVJlc29sdmVy
OjpSdWxlUmFuZ2UgcnVsZVJhbmdlID0gbV9yZXN1bHQucmFuZ2VzLmF1dGhvclJ1bGVSYW5nZSgp
OworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QobWF0Y2hlZFJ1bGVz
LmF0KGktMSksIGluY2x1ZGVFbXB0eVJ1bGVzLCBtX3N0YXRlLmVsZW1lbnQoKSksIHJ1bGVSYW5n
ZSk7CisgICAgfQorICAgIHNvcnRBbmRUcmFuc2Zlck1hdGNoZWRSdWxlcygpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCit9CisKIHZvaWQgRWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlSdWxl
cykKIHsKICAgICBjbGVhck1hdGNoZWRSdWxlcygpOwpAQCAtMjQwLDYgKzMwNSw4IEBAIHZvaWQg
RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQXV0aG9yUnVsZXMoYm9vbCBpbmNsdWRlRW1wdHlS
dWxlcykKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtYXRjaFJlcXVlc3QsIHJ1
bGVSYW5nZSk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKKworICAgIG1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoaW5jbHVkZUVtcHR5UnVsZXMpOwogfQogCiB2b2lkIEVsZW1l
bnRSdWxlQ29sbGVjdG9yOjptYXRjaFVzZXJSdWxlcyhib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQpA
QCAtMjg5LDcgKzM1Niw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoVUFSdWxl
cyhSdWxlU2V0KiBydWxlcykKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoKTsKIH0K
IAotaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OnJ1bGVNYXRjaGVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pCitpbmxpbmUgYm9vbCBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6cnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRh
LCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pCiB7
CiAgICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKIApAQCAt
MzE2LDYgKzM4Myw3IEBAIGlubGluZSBib29sIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0
Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIFBzZXVkb0lkCiAgICAgU2VsZWN0b3JDaGVj
a2VyIHNlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCgpLCBtX21vZGUpOwogICAgIFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQgY29udGV4dChydWxlRGF0YS5zZWxlY3Rvcigp
LCBzdGF0ZS5lbGVtZW50KCksIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxlZCk7
CiAgICAgY29udGV4dC5lbGVtZW50U3R5bGUgPSBzdGF0ZS5zdHlsZSgpOworICAgIGNvbnRleHQu
c2NvcGUgPSBzY29wZTsKICAgICBjb250ZXh0LnBzZXVkb0lkID0gbV9wc2V1ZG9TdHlsZVJlcXVl
c3QucHNldWRvSWQ7CiAgICAgY29udGV4dC5zY3JvbGxiYXIgPSBtX3BzZXVkb1N0eWxlUmVxdWVz
dC5zY3JvbGxiYXI7CiAgICAgY29udGV4dC5zY3JvbGxiYXJQYXJ0ID0gbV9wc2V1ZG9TdHlsZVJl
cXVlc3Quc2Nyb2xsYmFyUGFydDsKQEAgLTM1Myw3ICs0MjEsNyBAQCB2b2lkIEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpkb0NvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVs
ZURhdGE+KgogICAgICAgICBpZiAoaGFzSW5zcGVjdG9yRnJvbnRlbmRzKQogICAgICAgICAgICAg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTWF0Y2hSdWxlKCZkb2N1bWVu
dCgpLCBydWxlLCBtX2luc3BlY3RvckNTU09NV3JhcHBlcnMsIGRvY3VtZW50KCkuc3R5bGVTaGVl
dENvbGxlY3Rpb24oKSk7CiAgICAgICAgIFBzZXVkb0lkIGR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVE
TzsKLSAgICAgICAgaWYgKHJ1bGVNYXRjaGVzKHJ1bGVEYXRhLCBkeW5hbWljUHNldWRvKSkgewor
ICAgICAgICBpZiAocnVsZU1hdGNoZXMocnVsZURhdGEsIG1hdGNoUmVxdWVzdC5zY29wZSwgZHlu
YW1pY1BzZXVkbykpIHsKICAgICAgICAgICAgIC8vIEZvciBTaGFyaW5nUnVsZXMgdGVzdGluZywg
YW55IG1hdGNoIGlzIGdvb2QgZW5vdWdoLCB3ZSBkb24ndCBjYXJlIHdoYXQgaXMgbWF0Y2hlZC4K
ICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gU2VsZWN0b3JDaGVja2VyOjpTaGFyaW5nUnVsZXMp
IHsKICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkUnVsZSgmcnVsZURhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRleCBkMWY0MThjLi5hOWI5NTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApAQCAtNzYsMTEgKzc2
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRFbGVtZW50U3R5bGVQcm9wZXJ0aWVzKGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqLCBib29sIGlzQ2FjaGVhYmxlID0gdHJ1ZSk7CiAKICAgICB2b2lk
IG1hdGNoVUFSdWxlcyhSdWxlU2V0Kik7CisgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVz
KGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoYm9vbCBp
bmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGNvbnN0
IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2ZXI6OlJ1bGVSYW5nZSYpOwogICAgIHZvaWQgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oY29uc3QgTWF0Y2hSZXF1ZXN0JiwgU3R5bGVSZXNv
bHZlcjo6UnVsZVJhbmdlJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
Y29uc3QgVmVjdG9yPFJ1bGVEYXRhPiosIGNvbnN0IE1hdGNoUmVxdWVzdCYsIFN0eWxlUmVzb2x2
ZXI6OlJ1bGVSYW5nZSYpOwotICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmLCBQ
c2V1ZG9JZCYpOworICAgIGJvb2wgcnVsZU1hdGNoZXMoY29uc3QgUnVsZURhdGEmLCBjb25zdCBD
b250YWluZXJOb2RlKiBzY29wZSwgUHNldWRvSWQmKTsKIAogICAgIHZvaWQgc29ydE1hdGNoZWRS
dWxlcygpOwogICAgIHZvaWQgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggYjM2MmIwZi4uYmI4MTBj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMTgy
LDcgKzE4Miw3IEBAIGJvb2wgY29tcGFyZVZhbHVlKFQgYSwgVCBiLCBNZWRpYUZlYXR1cmVQcmVm
aXggb3ApCiBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFs
dWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQogewogICAg
IGlmICh2YWx1ZS0+aXNBc3BlY3RSYXRpb1ZhbHVlKCkpIHsKLSAgICAgICAgQ1NTQXNwZWN0UmF0
aW9WYWx1ZSogYXNwZWN0UmF0aW8gPSB0b0NTU0FzcGVjdFJhdGlvVmFsdWUodmFsdWUpOworICAg
ICAgICBDU1NBc3BlY3RSYXRpb1ZhbHVlKiBhc3BlY3RSYXRpbyA9IHN0YXRpY19jYXN0PENTU0Fz
cGVjdFJhdGlvVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIHJldHVybiBjb21wYXJlVmFsdWUod2lk
dGggKiBzdGF0aWNfY2FzdDxpbnQ+KGFzcGVjdFJhdGlvLT5kZW5vbWluYXRvclZhbHVlKCkpLCBo
ZWlnaHQgKiBzdGF0aWNfY2FzdDxpbnQ+KGFzcGVjdFJhdGlvLT5udW1lcmF0b3JWYWx1ZSgpKSwg
b3ApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxl
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CmluZGV4IDFkYjM4ZjEuLmExMWViMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBDU1NWYWx1ZUxp
c3QqIGRhc2hlcyA9IHRvQ1NTVmFsdWVMaXN0KHZhbHVlKTsKKyAgICAgICAgICAgIENTU1ZhbHVl
TGlzdCogZGFzaGVzID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogCiAgICAg
ICAgICAgICBWZWN0b3I8U1ZHTGVuZ3RoPiBhcnJheTsKICAgICAgICAgICAgIHNpemVfdCBsZW5n
dGggPSBkYXNoZXMtPmxlbmd0aCgpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUp
CiAgICAgICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gdG9DU1NWYWx1ZUxp
c3QodmFsdWUpOworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0ICpsaXN0ID0gc3RhdGljX2Nhc3Q8
Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwogICAgICAgICAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAKaW5kZXggNGZmMzk2Yi4uZWRhYTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5jcHAKQEAgLTE4OSw2ICsxODksMTAgQEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBT
ZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVjdXJzaXZlbHkoY29uc3QgU2VsZWN0b3JDaGVja2luZ0MK
IAogICAgIFBzZXVkb0lkIGlnbm9yZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKICAgICBpZiAo
cmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKSB7CisgICAgICAgIC8vIEFib3J0
IGlmIHRoZSBuZXh0IHNlbGVjdG9yIHdvdWxkIGV4Y2VlZCB0aGUgc2NvcGUuCisgICAgICAgIGlm
IChjb250ZXh0LmVsZW1lbnQgPT0gY29udGV4dC5zY29wZSAmJiBjb250ZXh0LmJlaGF2aW9yQXRC
b3VuZGFyeSAhPSBTdGF5c1dpdGhpblRyZWVTY29wZSkKKyAgICAgICAgICAgIHJldHVybiBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseTsKKwogICAgICAgICAvLyBCYWlsLW91dCBpZiB0aGlzIHNlbGVj
dG9yIGlzIGlycmVsZXZhbnQgZm9yIHRoZSBwc2V1ZG9JZAogICAgICAgICBpZiAoY29udGV4dC5w
c2V1ZG9JZCAhPSBOT1BTRVVETyAmJiBjb250ZXh0LnBzZXVkb0lkICE9IGR5bmFtaWNQc2V1ZG8p
CiAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CkBAIC0yMDksNiAr
MjEzLDggQEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoUmVj
dXJzaXZlbHkoY29uc3QgU2VsZWN0b3JDaGVja2luZ0MKICAgICAgICAgICAgIE1hdGNoIG1hdGNo
ID0gdGhpcy0+bWF0Y2hSZWN1cnNpdmVseShuZXh0Q29udGV4dCwgaWdub3JlRHluYW1pY1BzZXVk
byk7CiAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsK
KyAgICAgICAgICAgIGlmIChuZXh0Q29udGV4dC5lbGVtZW50ID09IG5leHRDb250ZXh0LnNjb3Bl
ICYmIG5leHRDb250ZXh0LmJlaGF2aW9yQXRCb3VuZGFyeSAhPSBTdGF5c1dpdGhpblRyZWVTY29w
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogCkBAIC0yNjIs
NiArMjY4LDkgQEAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNo
UmVjdXJzaXZlbHkoY29uc3QgU2VsZWN0b3JDaGVja2luZ0MKIAogICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CiAgICAgICAgIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3Jl
IGluIHRoZSBzYW1lIHRyZWUtc2NvcGUgYXMgdGhlIHNjb3BpbmcgZWxlbWVudCwgdGhlbiBmb2xs
b3dpbmcgYSBzaGFkb3cgZGVzY2VuZGFudCBjb21iaW5hdG9yIHdvdWxkIGVzY2FwZSB0aGF0IGFu
ZCB0aHVzIHRoZSBzY29wZS4KKyAgICAgICAgICAgIGlmIChjb250ZXh0LnNjb3BlICYmIGNvbnRl
eHQuc2NvcGUtPnRyZWVTY29wZSgpID09IGNvbnRleHQuZWxlbWVudC0+dHJlZVNjb3BlKCkgJiYg
Y29udGV4dC5iZWhhdmlvckF0Qm91bmRhcnkgIT0gU3RheXNXaXRoaW5UcmVlU2NvcGUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAg
RWxlbWVudCogc2hhZG93SG9zdE5vZGUgPSBjb250ZXh0LmVsZW1lbnQtPnNoYWRvd0hvc3QoKTsK
ICAgICAgICAgICAgIGlmICghc2hhZG93SG9zdE5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5o
CmluZGV4IDZjYzJiZTIuLjA5ODRhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgU2VsZWN0b3JDaGVja2VyIHsKIHB1YmxpYzoKICAg
ICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBWaXNpdGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1h
dGNoRW5hYmxlZCB9OwogICAgIGVudW0gTW9kZSB7IFJlc29sdmluZ1N0eWxlID0gMCwgQ29sbGVj
dGluZ1J1bGVzLCBRdWVyeWluZ1J1bGVzLCBTaGFyaW5nUnVsZXMgfTsKKyAgICBlbnVtIEJlaGF2
aW9yQXRCb3VuZGFyeSB7IERvZXNOb3RDcm9zc0JvdW5kYXJ5LCBTdGF5c1dpdGhpblRyZWVTY29w
ZSB9OwogCiAgICAgU2VsZWN0b3JDaGVja2VyKERvY3VtZW50JiwgTW9kZSk7CiAKQEAgLTY1LDYg
KzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLCBpc1N1YlNlbGVjdG9yKGZhbHNlKQogICAg
ICAgICAgICAgLCBoYXNTY3JvbGxiYXJQc2V1ZG8oZmFsc2UpCiAgICAgICAgICAgICAsIGhhc1Nl
bGVjdGlvblBzZXVkbyhmYWxzZSkKKyAgICAgICAgICAgICwgYmVoYXZpb3JBdEJvdW5kYXJ5KERv
ZXNOb3RDcm9zc0JvdW5kYXJ5KQogICAgICAgICB7IH0KIAogICAgICAgICBjb25zdCBDU1NTZWxl
Y3Rvciogc2VsZWN0b3I7CkBAIC03OCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBp
c1N1YlNlbGVjdG9yOwogICAgICAgICBib29sIGhhc1Njcm9sbGJhclBzZXVkbzsKICAgICAgICAg
Ym9vbCBoYXNTZWxlY3Rpb25Qc2V1ZG87CisgICAgICAgIEJlaGF2aW9yQXRCb3VuZGFyeSBiZWhh
dmlvckF0Qm91bmRhcnk7CiAgICAgfTsKIAogICAgIGJvb2wgbWF0Y2goY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFBzZXVkb0lkJiBwc2V1ZG9JZCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBkZDBhYjczLi5jMjg3OTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC0zNjYsOSArMzY2LDEw
IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIHZhbHVlc1tpXSA9IGdldFByb3BlcnR5Q1NTVmFsdWUoc2hv
cnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgIGlmICh2YWx1ZXNbaV0pIHsKLSAgICAg
ICAgICAgIGlmICh2YWx1ZXNbaV0tPmlzQmFzZVZhbHVlTGlzdCgpKQotICAgICAgICAgICAgICAg
IG51bUxheWVycyA9IG1heCh0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbaV0uZ2V0KCkpLT5sZW5ndGgo
KSwgbnVtTGF5ZXJzKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICh2YWx1ZXNb
aV0tPmlzQmFzZVZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiB2
YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZXNbaV0uZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIG51bUxheWVycyA9IG1heCh2YWx1ZUxpc3QtPmxlbmd0aCgpLCBudW1M
YXllcnMpOworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbnVtTGF5ZXJzID0g
bWF4PHNpemVfdD4oMVUsIG51bUxheWVycyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODgsNyAr
Mzg5LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1
ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJgogICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZTsKICAgICAgICAgICAgIGlmICh2YWx1ZXNbal0pIHsKICAgICAgICAgICAgICAg
ICBpZiAodmFsdWVzW2pdLT5pc0Jhc2VWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSB0b0NTU1ZhbHVlTGlzdCh2YWx1ZXNbal0uZ2V0KCkpLT5pdGVtKGkpOworICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlc1tq
XS5nZXQoKSktPml0ZW0oaSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWVzW2pdOwogCkBAIC00MTMsNyArNDE0LDcgQEAgU3RyaW5nIFN0
eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kJgogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHlWYWx1
ZTsKICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBuZXh0VmFsdWUgPSB2YWx1
ZXNbaiArIDFdOwogICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFZhbHVlLT5pc1ZhbHVlTGlz
dCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgeVZhbHVlID0gdG9DU1NWYWx1ZUxpc3QobmV4
dFZhbHVlLmdldCgpKS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KG5leHRWYWx1ZS5n
ZXQoKSktPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgIHlWYWx1ZSA9IG5leHRWYWx1ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDQxZjljOGYuLmM2ZGE3NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE5ODIsNyArMTk4Miw4IEBAIHN0YXRpYyBi
b29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9z
aXRpb24pCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIENTU1ZhbHVlTGlzdCog
dmFsdWVzID0gdG9DU1NWYWx1ZUxpc3QodmFsdWUpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHZh
bHVlcyA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKICAgICBBU1NFUlQodmFs
dWVzLT5sZW5ndGgoKSk7CiAKICAgICBib29sIGlzU3BhblBvc2l0aW9uID0gZmFsc2U7CkBAIC0y
MDk5LDcgKzIxMDAsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CiAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VmFyaWFibGUpIHsKLSAgICAgICAgQ1NTVmFyaWFi
bGVWYWx1ZSogdmFyaWFibGUgPSB0b0NTU1ZhcmlhYmxlVmFsdWUodmFsdWUpOworICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih2YWx1ZS0+aXNWYXJpYWJsZVZhbHVlKCkp
OworICAgICAgICBDU1NWYXJpYWJsZVZhbHVlKiB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PENTU1Zh
cmlhYmxlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIEFTU0VSVCghdmFyaWFibGUtPm5hbWUoKS5p
c0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIXZhcmlhYmxlLT52YWx1ZSgpLmlzRW1wdHkoKSk7
CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFZhcmlhYmxlKHZhcmlhYmxlLT5uYW1lKCksIHZh
cmlhYmxlLT52YWx1ZSgpKTsKQEAgLTIyMzAsNyArMjIzMiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlz
dCgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSB0b0NTU1ZhbHVlTGlzdCh2
YWx1ZSk7CisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NW
YWx1ZUxpc3QqPih2YWx1ZSk7CiAgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPiA+IHF1b3RlczsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlz
dC0+bGVuZ3RoKCk7IGkgKz0gMikgewogICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBmaXJzdCA9
IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CkBAIC0yNjk5LDcgKzI3MDEsNyBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFs
dWUqIHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEZvbnREZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKLSAg
ICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gdG9DU1NWYWx1ZUxpc3QodmFsdWUpOworICAgICAg
ICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7
CiAgICAgICAgIFJlZlB0cjxGb250RmVhdHVyZVNldHRpbmdzPiBzZXR0aW5ncyA9IEZvbnRGZWF0
dXJlU2V0dGluZ3M6OmNyZWF0ZSgpOwogICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKQEAgLTMwNDAsNyArMzA0
Miw2IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUpCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFw
ZVBhZGRpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlSW1hZ2VUaHJlc2hvbGQ6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRTaGFwZU91dHNpZGU6CiAjZW5kaWYKQEAgLTM1MjUsNyArMzUyNiw3IEBAIFBh
c3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3Rv
bUZpbHRlclBhcmFtZXRlcihjb25zCiAgICAgaWYgKCFwYXJhbWV0ZXJWYWx1ZS0+aXNWYWx1ZUxp
c3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IHRv
Q1NTVmFsdWVMaXN0KHBhcmFtZXRlclZhbHVlKTsKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9
IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHBhcmFtZXRlclZhbHVlKTsKICAgICBpZiAoIXZh
bHVlcy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zNjA1LDcgKzM2MDYsNyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRl
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogewogICAgIENTU1ZhbHVlKiBzaGFkZXJzVmFsdWUg
PSBmaWx0ZXJWYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKTsKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihzaGFkZXJzVmFsdWUtPmlzVmFsdWVMaXN0KCkpOwotICAg
IENTU1ZhbHVlTGlzdCogc2hhZGVyc0xpc3QgPSB0b0NTU1ZhbHVlTGlzdChzaGFkZXJzVmFsdWUp
OworICAgIENTU1ZhbHVlTGlzdCogc2hhZGVyc0xpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxp
c3QqPihzaGFkZXJzVmFsdWUpOwogCiAgICAgdW5zaWduZWQgc2hhZGVyc0xpc3RMZW5ndGggPSBz
aGFkZXJzTGlzdC0+bGVuZ3RoKCk7CiAgICAgQVNTRVJUKHNoYWRlcnNMaXN0TGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ0OWMzZGMuLjMwN2I3NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNTM4NywxNCArNTM4Nyw5IEBAIHZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3Jl
ZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKICAgICBtX2Z1bGxTY3Jl
ZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnN3YXAoY2hhbmdlUXVldWUpOwogICAgIERlcXVlPFJl
ZlB0cjxOb2RlPiA+IGVycm9yUXVldWU7CiAgICAgbV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdl
dFF1ZXVlLnN3YXAoZXJyb3JRdWV1ZSk7Ci0gICAgZGlzcGF0Y2hGdWxsU2NyZWVuQ2hhbmdlT3JF
cnJvckV2ZW50KGNoYW5nZVF1ZXVlLCBldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5n
ZUV2ZW50KTsKLSAgICBkaXNwYXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoZXJyb3JR
dWV1ZSwgZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50KTsKLX0KIAotdm9p
ZCBEb2N1bWVudDo6ZGlzcGF0Y2hGdWxsU2NyZWVuQ2hhbmdlT3JFcnJvckV2ZW50KERlcXVlPFJl
ZlB0cjxOb2RlPj4mIHF1ZXVlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKLXsKLSAg
ICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9
IHF1ZXVlLnRha2VGaXJzdCgpOworICAgIHdoaWxlICghY2hhbmdlUXVldWUuaXNFbXB0eSgpKSB7
CisgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gY2hhbmdlUXVldWUudGFrZUZpcnN0KCk7CiAg
ICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsK
ICAgICAgICAgLy8gVGhlIGRpc3BhdGNoRXZlbnQgYmVsb3cgbWF5IGhhdmUgYmxvd24gYXdheSBv
dXIgZG9jdW1lbnRFbGVtZW50LgpAQCAtNTQwMywxMCArNTM5OCwyNiBAQCB2b2lkIERvY3VtZW50
OjpkaXNwYXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+
PiYgcXVldWUsCiAKICAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJvbSBv
dXIgdHJlZSwgYWxzbyBtZXNzYWdlIHRoZSBkb2N1bWVudEVsZW1lbnQuIFNpbmNlIHdlIG1heQog
ICAgICAgICAvLyBoYXZlIGEgZG9jdW1lbnQgaGllcmFyY2h5LCBjaGVjayB0aGF0IG5vZGUgaXNu
J3QgaW4gYW5vdGhlciBkb2N1bWVudC4KLSAgICAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkp
Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBp
ZiAoIWNvbnRhaW5zKG5vZGUuZ2V0KCkpICYmICFub2RlLT5pbkRvY3VtZW50KCkpCisgICAgICAg
ICAgICBjaGFuZ2VRdWV1ZS5hcHBlbmQoZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICAKKyAg
ICAgICAgbm9kZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgfQogCi0gICAgICAg
IG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIHRydWUsIGZhbHNl
KSk7CisgICAgd2hpbGUgKCFlcnJvclF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8
Tm9kZT4gbm9kZSA9IGVycm9yUXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgLy8gVGhlIGRp
c3BhdGNoRXZlbnQgYmVsb3cgbWF5IGhhdmUgYmxvd24gYXdheSBvdXIgZG9jdW1lbnRFbGVtZW50
LgorICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisg
ICAgICAgIC8vIElmIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkIGZyb20gb3VyIHRyZWUsIGFsc28g
bWVzc2FnZSB0aGUgZG9jdW1lbnRFbGVtZW50LiBTaW5jZSB3ZSBtYXkKKyAgICAgICAgLy8gaGF2
ZSBhIGRvY3VtZW50IGhpZXJhcmNoeSwgY2hlY2sgdGhhdCBub2RlIGlzbid0IGluIGFub3RoZXIg
ZG9jdW1lbnQuCisgICAgICAgIGlmICghY29udGFpbnMobm9kZS5nZXQoKSkgJiYgIW5vZGUtPmlu
RG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGVycm9yUXVldWUuYXBwZW5kKGRvY3VtZW50RWxlbWVu
dCgpKTsKKyAgICAgICAgCisgICAgICAgIG5vZGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmVycm9yRXZlbnQsIHRydWUsIGZhbHNlKSk7
CiAgICAgfQogfQogCkBAIC02MDI2LDcgKzYwMzcsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiogdGltZXIpCiAgICAg
bV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmVu
c3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBE
b2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29y
bGQpCiB7CiAgICAgaWYgKG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE1NGZhZjUuLjczYTc4NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBMYXlv
dXRQb2ludDsKIGNsYXNzIExheW91dFJlY3Q7CiBjbGFzcyBMaXZlTm9kZUxpc3RCYXNlOworY2xh
c3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgSlNOb2RlOwogY2xhc3MgTG9jYWxlOwogY2xhc3Mg
TWVkaWFDYW5TdGFydExpc3RlbmVyOwpAQCAtMTE4MSw3ICsxMTgyLDcgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8Rm9udExvYWRlcj4gZm9udGxvYWRlcigpOwogI2VuZGlmCiAKLSAgICB2b2lk
IGVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lk
IGVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqKTsKIAogICAgIHZv
aWQgc2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudChib29sKTsKIApAQCAtMTI1Miw3ICsx
MjUzLDYgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVD
YWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICB2b2lkIGRpc3BhdGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1
ZTxSZWZQdHI8Tm9kZT4+JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwogICAgIHZv
aWQgY2xlYXJGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CiAgICAgdm9pZCBwb3BGdWxsc2NyZWVu
RWxlbWVudFN0YWNrKCk7CiAgICAgdm9pZCBwdXNoRnVsbHNjcmVlbkVsZW1lbnRTdGFjayhFbGVt
ZW50Kik7CkBAIC0xNDczLDggKzE0NzMsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2s7CiAgICAgUmVuZGVyRnVsbFNjcmVl
biogbV9mdWxsU2NyZWVuUmVuZGVyZXI7CiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fZnVsbFNjcmVl
bkNoYW5nZURlbGF5VGltZXI7Ci0gICAgRGVxdWU8UmVmUHRyPE5vZGU+PiBtX2Z1bGxTY3JlZW5D
aGFuZ2VFdmVudFRhcmdldFF1ZXVlOwotICAgIERlcXVlPFJlZlB0cjxOb2RlPj4gbV9mdWxsU2Ny
ZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxOb2RlPiA+IG1fZnVs
bFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWU7CisgICAgRGVxdWU8UmVmUHRyPE5vZGU+ID4g
bV9mdWxsU2NyZWVuRXJyb3JFdmVudFRhcmdldFF1ZXVlOwogICAgIGJvb2wgbV9pc0FuaW1hdGlu
Z0Z1bGxTY3JlZW47CiAgICAgTGF5b3V0UmVjdCBtX3NhdmVkUGxhY2Vob2xkZXJGcmFtZVJlY3Q7
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3NhdmVkUGxhY2Vob2xkZXJSZW5kZXJTdHlsZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
LmNwcAppbmRleCBhMDk2ZGFkLi41NzBhYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVt
ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODQ3NjA5Yy4uNWIzOTY0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMjQwLDExICsyNDAsNiBAQCBib29sIEVsZW1lbnQ6OnNob3Vs
ZFVzZUlucHV0TWV0aG9kKCkKICAgICByZXR1cm4gaXNDb250ZW50RWRpdGFibGUoVXNlclNlbGVj
dEFsbElzQWx3YXlzTm9uRWRpdGFibGUpOwogfQogCi1ib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91
c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgaW50IGRldGFpbCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCkKLXsKLSAg
ICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIE1vdXNlRXZlbnRE
aXNwYXRjaE1lZGlhdG9yOjpjcmVhdGUoTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG9j
dW1lbnQoKS5kZWZhdWx0VmlldygpLCBldmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0KSkpOwot
fQotCiBib29sIEVsZW1lbnQ6OmRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZl
bnQodGhpcywgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OmNyZWF0ZShldmVudCwgZG9jdW1l
bnQoKS5kZWZhdWx0VmlldygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1NTJlZDZhLi5jOTFi
MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQzLDggKzQzLDYgQEAgY2xhc3MgRWxlbWVudFJh
cmVEYXRhOwogY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIExvY2Fs
ZTsKLWNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKLWNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFBzZXVkb0VsZW1lbnQ7CiBjbGFz
cyBSZW5kZXJSZWdpb247CkBAIC01MzQsNyArNTMyLDYgQEAgcHVibGljOgogICAgIEludFNpemUg
c2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2F2ZWRMYXllclNj
cm9sbE9mZnNldChjb25zdCBJbnRTaXplJik7CiAKLSAgICBib29sIGRpc3BhdGNoTW91c2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgaW50IGNsaWNrQ291bnQgPSAwLCBFbGVtZW50KiByZWxhdGVkVGFyZ2V0ID0gbnVsbHB0cik7
CiAgICAgYm9vbCBkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7
CiAgICAgYm9vbCBkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYp
OwogICAgIHZvaWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhFdmVudCogdW5kZXJseWluZ0V2ZW50
LCBTaW11bGF0ZWRDbGlja01vdXNlRXZlbnRPcHRpb25zID0gU2VuZE5vRXZlbnRzLCBTaW11bGF0
ZWRDbGlja1Zpc3VhbE9wdGlvbnMgPSBTaG93UHJlc3NlZExvb2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAppbmRleCA0MTAyYWFkLi43ODkzMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
aApAQCAtNDcsNyArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhlIG92ZXJ3
aGVsbWluZ2x5IGNvbW1vbiBjYXNlIGlzIHNlbmRpbmcgYSBzaW5nbGUgcG9ydCwgc28gaGFuZGxl
IHRoYXQgZWZmaWNpZW50bHkgd2l0aCBhbiBpbmxpbmUgYnVmZmVyIG9mIHNpemUgMS4KICAgICB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+LCAxPiBNZXNzYWdlUG9ydEFycmF5Owog
Ci0gICAgY2xhc3MgTWVzc2FnZVBvcnQgRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXNzYWdl
UG9ydD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKKyAgICAvLyBGSVhNRTog
VGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMTIxNzQ3PiBpcyBmaXhlZC4KKyAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lc3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgTWVzc2FnZVBvcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOyB9CiAg
ICAgICAgIHZpcnR1YWwgfk1lc3NhZ2VQb3J0KCk7CkBAIC03Myw5ICs3NCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAotICAgICAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gTWVzc2FnZVBvcnRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQb3J0KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gTWVz
c2FnZVBvcnRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJ
REUgRklOQUwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CisgICAgICAgIHZp
cnR1YWwgYm9vbCBpc01lc3NhZ2VQb3J0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlcygpOwogCkBAIC0xMDUsOCAr
MTA2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxp
Y2l0IE1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5B
TCB7IGRlcmVmKCk7IH0KIAogICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2Vu
dGFuZ2xlZENoYW5uZWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA4ODgzOTllLi5lZDJkMTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0yMTEwLDYgKzIxMTAsMTIgQEAgYm9vbCBOb2RlOjpkaXNwYXRj
aERPTUFjdGl2YXRlRXZlbnQoaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWlu
Z0V2ZW4KICAgICByZXR1cm4gZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCk7CiB9CiAKK2Jvb2wgTm9k
ZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLAorICAgIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0
ZWRUYXJnZXQpCit7CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0
aGlzLCBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6Y3JlYXRlKE1vdXNlRXZlbnQ6OmNyZWF0
ZShldmVudFR5cGUsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgZXZlbnQsIGRldGFpbCwgcmVs
YXRlZFRhcmdldCkpKTsKK30KKwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIGJvb2wgTm9k
ZTo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGV2ZW50
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggY2JiYzYzNC4uNTEzY2Y1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAt
NzAsNiArNzAsOCBAQCBjbGFzcyBOYW1lTm9kZUxpc3Q7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNz
IE5vZGVMaXN0c05vZGVEYXRhOwogY2xhc3MgTm9kZVJhcmVEYXRhOworY2xhc3MgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xhc3MgUXVhbGlmaWVk
TmFtZTsKIGNsYXNzIFJhZGlvTm9kZUxpc3Q7CiBjbGFzcyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
cjsKQEAgLTU0MSw2ICs1NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFN1YnRyZWVN
b2RpZmllZEV2ZW50KCk7CiAgICAgYm9vbCBkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQoaW50IGRl
dGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KTsKIAorICAgIGJvb2wgZGlz
cGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBpbnQgY2xpY2tDb3VudCA9IDAsIE5vZGUqIHJlbGF0ZWRUYXJnZXQg
PSAwKTsKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgYm9vbCBkaXNwYXRjaEdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggZGNjNmNiZS4uMWExMDEwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjEsNiArNjEsNyBAQCBpbmxpbmUgYm9vbCBTZWxl
Y3RvckRhdGFMaXN0OjpzZWxlY3Rvck1hdGNoZXMoY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3Rv
ckRhdGEsCiAKICAgICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGVsZW1lbnQtPmRv
Y3VtZW50KCksIFNlbGVjdG9yQ2hlY2tlcjo6UXVlcnlpbmdSdWxlcyk7CiAgICAgU2VsZWN0b3JD
aGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCBzZWxlY3RvckNoZWNraW5nQ29udGV4dChz
ZWxlY3RvckRhdGEuc2VsZWN0b3IsIGVsZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1h
dGNoRGlzYWJsZWQpOworICAgIHNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0LmJlaGF2aW9yQXRCb3Vu
ZGFyeSA9IFNlbGVjdG9yQ2hlY2tlcjo6U3RheXNXaXRoaW5UcmVlU2NvcGU7CiAgICAgc2VsZWN0
b3JDaGVja2luZ0NvbnRleHQuc2NvcGUgPSAhcm9vdE5vZGUtPmlzRG9jdW1lbnROb2RlKCkgJiYg
cm9vdE5vZGUtPmlzQ29udGFpbmVyTm9kZSgpID8gdG9Db250YWluZXJOb2RlKHJvb3ROb2RlKSA6
IDA7CiAgICAgUHNldWRvSWQgaWdub3JlRHluYW1pY1BzZXVkbyA9IE5PUFNFVURPOwogICAgIHJl
dHVybiBzZWxlY3RvckNoZWNrZXIubWF0Y2goc2VsZWN0b3JDaGVja2luZ0NvbnRleHQsIGlnbm9y
ZUR5bmFtaWNQc2V1ZG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAK
aW5kZXggNTkxYTFlOC4uOTE4YmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1
bWVudHMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKEdU
SykKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFFUKQogY29uc3QgZmxvYXQgVmlld3BvcnRBcmd1bWVudHM6OmRlcHJlY2F0ZWRUYXJnZXREUEkg
PSAxNjA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRl
eCBjNjQ5Mzc1Li4zMzNjOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMu
aApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICB9CiAKLSNpZiBQTEFURk9STShCTEFDS0JF
UlJZKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICAvLyBGSVhNRTogV2UncmUgZ29pbmcgdG8ga2Vl
cCB0aGlzIGNvbnN0YW50IGFyb3VuZCB1bnRpbCBhbGwgZW1iZWRkZXJzCiAgICAgLy8gcmVmYWN0
b3IgdGhlaXIgY29kZSB0byBubyBsb25nZXIgbmVlZCBpdC4KICAgICBzdGF0aWMgY29uc3QgZmxv
YXQgZGVwcmVjYXRlZFRhcmdldERQSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaApp
bmRleCBmMTJlYjFhLi5jZjQ0NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0TmFtZWRGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5o
CkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgUmVuZGVyTmFtZWRGbG93
VGhyZWFkOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgV2ViS2l0TmFt
ZWRGbG93IEZJTkFMIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0TmFtZWRGbG93PiwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworLy8gRklYTUU6IFRoaXMgY2xhc3Mgc2hvdWxk
IGJlIG1hcmtlZCBGSU5BTCBvbmNlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0Nz4gaXMgZml4
ZWQuCitjbGFzcyBXZWJLaXROYW1lZEZsb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXROYW1l
ZEZsb3c+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBjcmVhdGUoUGFzc1JlZlB0cjxOYW1l
ZEZsb3dDb2xsZWN0aW9uPiBtYW5hZ2VyLCBjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWRO
YW1lKTsKIApAQCAtNjIsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxX
ZWJLaXROYW1lZEZsb3c+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZs
b3c+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBXZWJLaXROYW1lZEZsb3dFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REUgRklOQUwgeyByZXR1cm4gV2ViS2l0TmFtZWRGbG93RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBmcm9tIHRoZSBKUyBiaW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGlmIHRoZSBOYW1l
ZEZsb3cgb2JqZWN0IGlzIHJlYWNoYWJsZSBvciBub3QuCiAgICAgLy8gSWYgdGhlIG9iamVjdCBo
YXMgbGlzdGVuZXJzLCB0aGUgb2JqZWN0IHNob3VsZCBvbmx5IGJlIGRpc2NhcmRlZCBpZiB0aGUg
cGFyZW50IERvY3VtZW50IGlzIG5vdCByZWFjaGFibGUuCkBAIC04NSw4ICs4Niw4IEBAIHByaXZh
dGU6CiAgICAgV2ViS2l0TmFtZWRGbG93KFBhc3NSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4s
IGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRp
b24uCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigp
OyB9CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklOQUwgeyBy
ZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgRklO
QUwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBUaGUgbmFtZSBvZiB0aGUgZmxvdyB0aHJlYWQgYXMg
c3BlY2lmaWVkIGluIENTUy4KICAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkTmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggZmJhYzgz
My4uNDZkZjZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKQEAgLTI3MSw4ICsyNzEsNiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJs
b2NrU3R5bGUoRWRpdGluZ1N0eWxlICpzdHlsZSkKIAogICAgIFZpc2libGVQb3NpdGlvbiBwYXJh
Z3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQp
Lm5leHQoKSk7Ci0gICAgaWYgKHZpc2libGVFbmQgIT0gdmlzaWJsZVN0YXJ0ICYmIGlzU3RhcnRP
ZlBhcmFncmFwaCh2aXNpYmxlRW5kKSkKLSAgICAgICAgdmlzaWJsZUVuZCA9IHZpc2libGVFbmQu
cHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgIFZpc2libGVQb3NpdGlv
biBiZXlvbmRFbmQoZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCkubmV4dCgpKTsKICAgICB3aGls
ZSAocGFyYWdyYXBoU3RhcnQuaXNOb3ROdWxsKCkgJiYgcGFyYWdyYXBoU3RhcnQgIT0gYmV5b25k
RW5kKSB7CiAgICAgICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBwYXJhZ3JhcGhT
dGFydC5kZWVwRXF1aXZhbGVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAppbmRleCBhOGEyN2VlLi4yZmIyZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgYm9vbCBIVE1MVGV4dERlY29yYXRpb25F
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgU3R5bGUK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN0eWxlVmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKICAgICBpZiAo
IXN0eWxlVmFsdWUpCiAgICAgICAgIHN0eWxlVmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKLSAgICByZXR1cm4gbWF0Y2hlcyhlbGVt
ZW50KSAmJiBzdHlsZVZhbHVlICYmIHN0eWxlVmFsdWUtPmlzVmFsdWVMaXN0KCkgJiYgdG9DU1NW
YWx1ZUxpc3Qoc3R5bGVWYWx1ZS5nZXQoKSktPmhhc1ZhbHVlKG1fcHJpbWl0aXZlVmFsdWUuZ2V0
KCkpOworICAgIHJldHVybiBtYXRjaGVzKGVsZW1lbnQpICYmIHN0eWxlVmFsdWUgJiYgc3R5bGVW
YWx1ZS0+aXNWYWx1ZUxpc3QoKSAmJiBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihzdHlsZVZh
bHVlLmdldCgpKS0+aGFzVmFsdWUobV9wcmltaXRpdmVWYWx1ZS5nZXQoKSk7CiB9CiAKIGNsYXNz
IEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50IDogcHVibGljIEhUTUxFbGVtZW50RXF1aXZhbGVudCB7
CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZShjb25z
dCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlPdmVycmlkZQogICAgICAgICAv
LyB0ZXh0IGRlY29yYXRpb25zIG5ldmVyIG92ZXJyaWRlIHZhbHVlcwogICAgICAgICBpZiAoKHBy
b3BlcnR5LmlkKCkgPT0gQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiB8fCBwcm9wZXJ0eS5pZCgp
ID09IENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpICYmIHByb3BlcnR5
LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgJiYgdmFsdWUpIHsKICAgICAgICAgICAgIGlmICh2YWx1
ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgICAgIG1lcmdlVGV4dERlY29yYXRpb25W
YWx1ZXModG9DU1NWYWx1ZUxpc3QodmFsdWUuZ2V0KCkpLCB0b0NTU1ZhbHVlTGlzdChwcm9wZXJ0
eS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgbWVyZ2VUZXh0RGVjb3JhdGlvblZhbHVlcyhz
dGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZS5nZXQoKSksIHN0YXRpY19jYXN0PENTU1Zh
bHVlTGlzdCo+KHByb3BlcnR5LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhbHVlID0gMDsgLy8gdGV4dC1kZWNvcmF0aW9u
OiBub25lIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyB0aGUgcHJvcGVydHkKQEAgLTE0MzIs
NyArMTQzMiw3IEBAIHZvaWQgU3R5bGVDaGFuZ2U6OmV4dHJhY3RUZXh0U3R5bGVzKERvY3VtZW50
KiBkb2N1bWVudCwgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQqCiAgICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gdW5kZXJsaW5lID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBsaW5lVGhyb3VnaCA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZUxpbmVUaHJvdWdoKTsKIAotICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBuZXdU
ZXh0RGVjb3JhdGlvbiA9IHRvQ1NTVmFsdWVMaXN0KHRleHREZWNvcmF0aW9uLmdldCgpKS0+Y29w
eSgpOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBuZXdUZXh0RGVjb3JhdGlvbiA9IHN0
YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHRleHREZWNvcmF0aW9uLmdldCgpKS0+Y29weSgpOwog
ICAgICAgICBpZiAobmV3VGV4dERlY29yYXRpb24tPnJlbW92ZUFsbCh1bmRlcmxpbmUuZ2V0KCkp
KQogICAgICAgICAgICAgbV9hcHBseVVuZGVybGluZSA9IHRydWU7CiAgICAgICAgIGlmIChuZXdU
ZXh0RGVjb3JhdGlvbi0+cmVtb3ZlQWxsKGxpbmVUaHJvdWdoLmdldCgpKSkKQEAgLTE0ODEsOCAr
MTQ4MSw4IEBAIHN0YXRpYyB2b2lkIGRpZmZUZXh0RGVjb3JhdGlvbnMoTXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByCiAgICAgaWYgKCF0ZXh0RGVjb3JhdGlv
biB8fCAhdGV4dERlY29yYXRpb24tPmlzVmFsdWVMaXN0KCkgfHwgIXJlZlRleHREZWNvcmF0aW9u
IHx8ICFyZWZUZXh0RGVjb3JhdGlvbi0+aXNWYWx1ZUxpc3QoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VGV4dERlY29yYXRpb24gPSB0b0NTU1ZhbHVl
TGlzdCh0ZXh0RGVjb3JhdGlvbi5nZXQoKSktPmNvcHkoKTsKLSAgICBDU1NWYWx1ZUxpc3QqIHZh
bHVlc0luUmVmVGV4dERlY29yYXRpb24gPSB0b0NTU1ZhbHVlTGlzdChyZWZUZXh0RGVjb3JhdGlv
bik7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbmV3VGV4dERlY29yYXRpb24gPSBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPih0ZXh0RGVjb3JhdGlvbi5nZXQoKSktPmNvcHkoKTsKKyAgICBD
U1NWYWx1ZUxpc3QqIHZhbHVlc0luUmVmVGV4dERlY29yYXRpb24gPSBzdGF0aWNfY2FzdDxDU1NW
YWx1ZUxpc3QqPihyZWZUZXh0RGVjb3JhdGlvbik7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZhbHVlc0luUmVmVGV4dERlY29yYXRpb24tPmxlbmd0aCgpOyBpKyspCiAgICAgICAgIG5l
d1RleHREZWNvcmF0aW9uLT5yZW1vdmVBbGwodmFsdWVzSW5SZWZUZXh0RGVjb3JhdGlvbi0+aXRl
bShpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCBlMDhm
NGZiLi42YzA3Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3Qo
RnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRQogICAgIFJlZlB0cjxD
U1NWYWx1ZT4gc2VsZWN0ZWRDU1NWYWx1ZSA9IHNlbGVjdGlvblN0eWxlLT5zdHlsZSgpLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogICAgIFN0cmluZyBuZXdTdHlsZSA9IEFTQ0lJ
TGl0ZXJhbCgibm9uZSIpOwogICAgIGlmIChzZWxlY3RlZENTU1ZhbHVlLT5pc1ZhbHVlTGlzdCgp
KSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHNlbGVjdGVkQ1NTVmFsdWVMaXN0ID0g
dG9DU1NWYWx1ZUxpc3Qoc2VsZWN0ZWRDU1NWYWx1ZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHNlbGVjdGVkQ1NTVmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVM
aXN0Kj4oc2VsZWN0ZWRDU1NWYWx1ZS5nZXQoKSk7CiAgICAgICAgIGlmICghc2VsZWN0ZWRDU1NW
YWx1ZUxpc3QtPnJlbW92ZUFsbCh2YWx1ZSkpCiAgICAgICAgICAgICBzZWxlY3RlZENTU1ZhbHVl
TGlzdC0+YXBwZW5kKHZhbHVlKTsKICAgICAgICAgaWYgKHNlbGVjdGVkQ1NTVmFsdWVMaXN0LT5s
ZW5ndGgoKSkKQEAgLTkyNSw3ICs5MjUsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGUoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oUVQpCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7CkBAIC0xNjAzLDcgKzE2MDMsNyBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1h
cCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAgICAgICAgIHsgIllhbmsiLCB7IGV4ZWN1dGVZYW5rLCBz
dXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldo
ZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIllhbmtBbmRTZWxlY3QiLCB7IGV4ZWN1dGVZYW5r
QW5kU2VsZWN0LCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFi
bGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxv
d0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICAgICAgeyAiUGFzdGVHbG9iYWxTZWxlY3Rp
b24iLCB7IGV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbiwgc3VwcG9ydGVkRnJvbU1lbnVPcktl
eUJpbmRpbmcsIGVuYWJsZWRQYXN0ZSwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNl
cnRpb24sIGFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IDQ3ZDJkZjYuLmY5ZTE5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oCkBAIC01Myw3ICs1Myw4IEBAIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEZpbGVS
ZWFkZXIgRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJr
ZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xh
c3MgRmlsZVJlYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVSZWFkZXI+LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEZp
bGVSZWFkZXJMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bGVSZWFkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKQEAgLTgxLDE0ICs4
MiwxNCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gRmlsZVJlYWRlckV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIEZpbGVSZWFkZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVS
UklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQogCiAgICAgLy8gRmlsZVJlYWRlckxvYWRlckNsaWVudAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydExvYWRpbmcoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBlcnJvckNvZGUpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGludCBlcnJvckNvZGUpOwogCiAgICAgdXNpbmcgUmVm
Q291bnRlZDxGaWxlUmVhZGVyPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8RmlsZVJlYWRl
cj46OmRlcmVmOwpAQCAtMTAxLDE1ICsxMDIsMTUgQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIobG9hZGVuZCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
RmlsZVJlYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgRmlsZVJlYWRlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAg
dm9pZCB0ZXJtaW5hdGUoKTsKICAgICB2b2lkIHJlYWRJbnRlcm5hbChCbG9iKiwgRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZFR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uaAppbmRleCBkNDFkNWUyLi4wYzM0ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9I
aXN0b3J5SXRlbS5oCkBAIC0zOSw2ICszOSwxMiBAQAogdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmpl
Y3QqIGlkOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRVmFyaWFudD4K
KyNpbmNsdWRlIDxRQnl0ZUFycmF5PgorI2luY2x1ZGUgPFFEYXRhU3RyZWFtPgorI2VuZGlmCisK
ICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQogI2luY2x1ZGUgIkhpc3RvcnlJdGVtVmlld1N0YXRl
LmgiCiAjZW5kaWYKQEAgLTE5MSw2ICsxOTcsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VHJh
bnNpZW50UHJvcGVydHkoY29uc3QgU3RyaW5nJiwgaWQpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShRVCkKKyAgICBRVmFyaWFudCB1c2VyRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckRhdGE7
IH0KKyAgICB2b2lkIHNldFVzZXJEYXRhKGNvbnN0IFFWYXJpYW50JiB1c2VyRGF0YSkgeyBtX3Vz
ZXJEYXRhID0gdXNlckRhdGE7IH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhpc3RvcnlJdGVt
PiByZXN0b3JlU3RhdGUoUURhdGFTdHJlYW0mIGJ1ZmZlciwgaW50IHZlcnNpb24pOworICAgIFFE
YXRhU3RyZWFtJiBzYXZlU3RhdGUoUURhdGFTdHJlYW0mIG91dCwgaW50IHZlcnNpb24pIGNvbnN0
OworI2VuZGlmCisKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQogICAgIEhpc3RvcnlJdGVtVmll
d1N0YXRlJiB2aWV3U3RhdGUoKSB7IHJldHVybiBtX3ZpZXdTdGF0ZTsgfQogI2VuZGlmCkBAIC0y
NzksNiArMjkzLDEwIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhhc2hNYXA8U3RyaW5nLCBSZXRh
aW5QdHI8aWQ+ID4gPiBtX3RyYW5zaWVudFByb3BlcnRpZXM7CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFFUKQorICAgIFFWYXJpYW50IG1fdXNlckRhdGE7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KEJMQUNLQkVSUlkpCiAgICAgSGlzdG9yeUl0ZW1WaWV3U3RhdGUgbV92aWV3U3RhdGU7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvcXQvSGlzdG9yeUl0ZW1RdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTQ1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwCkBAIC0wLDAgKzEsMjQx
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SGlzdG9yeUl0ZW0uaCIKKworI2luY2x1ZGUgIkZvcm1EYXRhLmgiCisjaW5jbHVkZSA8d3RmL0Rl
Y29kZXIuaD4KKyNpbmNsdWRlIDx3dGYvRW5jb2Rlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgUURhdGFTdHJlYW0mIG9wZXJhdG9yPDwoUURhdGFTdHJlYW0mIHN0cmVhbSwgY29u
c3QgU3RyaW5nJiBzdHIpCit7CisgICAgLy8gY291bGQgYmUgZmFzdGVyCisgICAgc3RyZWFtIDw8
IFFTdHJpbmcoc3RyKTsKKyAgICByZXR1cm4gc3RyZWFtOworfQorCitzdGF0aWMgUURhdGFTdHJl
YW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgU3RyaW5nJiBzdHIpCit7CisgICAg
Ly8gbWFiZSBub3QgdGhlIGZhc3Rlc3Qgd2F5LCBidXQgcmVhbGx5IGVhc3kKKyAgICBRU3RyaW5n
IHRtcDsKKyAgICBzdHJlYW0gPj4gdG1wOworICAgIHN0ciA9IHRtcDsKKyAgICByZXR1cm4gc3Ry
ZWFtOworfQorCitjbGFzcyBRRGF0YVN0cmVhbUNvZGVyIDogcHVibGljIFdURjo6RW5jb2Rlciwg
cHVibGljIFdURjo6RGVjb2RlciB7CitwdWJsaWM6CisgICAgUURhdGFTdHJlYW1Db2RlcihRRGF0
YVN0cmVhbSYpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlQm9vbChib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlVUludDMyKHVpbnQzMl90KTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5jb2RlVUludDY0KHVpbnQ2NF90KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlSW50MzIo
aW50MzJfdCk7CisgICAgdmlydHVhbCB2b2lkIGVuY29kZUludDY0KGludDY0X3QpOworICAgIHZp
cnR1YWwgdm9pZCBlbmNvZGVGbG9hdChmbG9hdCk7CisgICAgdmlydHVhbCB2b2lkIGVuY29kZURv
dWJsZShkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlQnl0ZXMoVmVjdG9yPHVpbnQ4X3Q+Jik7Cisg
ICAgdmlydHVhbCBib29sIGRlY29kZUJvb2woYm9vbCYpOworICAgIHZpcnR1YWwgYm9vbCBkZWNv
ZGVVSW50MzIodWludDMyX3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlVUludDY0KHVpbnQ2
NF90Jik7CisgICAgdmlydHVhbCBib29sIGRlY29kZUludDMyKGludDMyX3QmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgZGVjb2RlSW50NjQoaW50NjRfdCYpOworICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVG
bG9hdChmbG9hdCYpOworICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVEb3VibGUoZG91YmxlJik7Cisg
ICAgdmlydHVhbCBib29sIGRlY29kZVN0cmluZyhTdHJpbmcmKTsKKworICAgIFFEYXRhU3RyZWFt
JiBtX3N0cmVhbTsKK307CisKK1FEYXRhU3RyZWFtQ29kZXI6OlFEYXRhU3RyZWFtQ29kZXIoUURh
dGFTdHJlYW0mIHN0cmVhbSkKKyAgICA6IG1fc3RyZWFtKHN0cmVhbSkKK3sKK30KKwordm9pZCBR
RGF0YVN0cmVhbUNvZGVyOjplbmNvZGVCeXRlcyhjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90
IHNpemUpCit7CisgICAgbV9zdHJlYW0gPDwgcWludDY0KHNpemUpOworICAgIGZvciAoOyBzaXpl
ID4gMDsgLS1zaXplKQorICAgICAgICBtX3N0cmVhbSA8PCBieXRlcysrOworfQorCit2b2lkIFFE
YXRhU3RyZWFtQ29kZXI6OmVuY29kZUJvb2woYm9vbCB2YWx1ZSkKK3sKKyAgICBtX3N0cmVhbSA8
PCB2YWx1ZTsKK30KKwordm9pZCBRRGF0YVN0cmVhbUNvZGVyOjplbmNvZGVVSW50MzIodWludDMy
X3QgdmFsdWUpCit7CisgICAgbV9zdHJlYW0gPDwgdmFsdWU7Cit9CisKK3ZvaWQgUURhdGFTdHJl
YW1Db2Rlcjo6ZW5jb2RlVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIG1fc3RyZWFtIDw8
IHN0YXRpY19jYXN0PHF1aW50NjQ+KHZhbHVlKTsKK30KKwordm9pZCBRRGF0YVN0cmVhbUNvZGVy
OjplbmNvZGVJbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIG1fc3RyZWFtIDw8IHZhbHVlOwor
fQorCit2b2lkIFFEYXRhU3RyZWFtQ29kZXI6OmVuY29kZUludDY0KGludDY0X3QgdmFsdWUpCit7
CisgICAgbV9zdHJlYW0gPDwgc3RhdGljX2Nhc3Q8cWludDY0Pih2YWx1ZSk7Cit9CisKK3ZvaWQg
UURhdGFTdHJlYW1Db2Rlcjo6ZW5jb2RlRmxvYXQoZmxvYXQgdmFsdWUpCit7CisgICAgbV9zdHJl
YW0gPDwgdmFsdWU7Cit9CisKK3ZvaWQgUURhdGFTdHJlYW1Db2Rlcjo6ZW5jb2RlRG91YmxlKGRv
dWJsZSB2YWx1ZSkKK3sKKyAgICBtX3N0cmVhbSA8PCB2YWx1ZTsKK30KKwordm9pZCBRRGF0YVN0
cmVhbUNvZGVyOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX3N0
cmVhbSA8PCB2YWx1ZTsKK30KKworYm9vbCBRRGF0YVN0cmVhbUNvZGVyOjpkZWNvZGVCeXRlcyhW
ZWN0b3I8dWludDhfdD4mIG91dCkKK3sKKyAgICBvdXQuY2xlYXIoKTsKKyAgICBxaW50NjQgY291
bnQ7CisgICAgdWludDhfdCBieXRlOworICAgIG1fc3RyZWFtID4+IGNvdW50OworICAgIG91dC5y
ZXNlcnZlQ2FwYWNpdHkoY291bnQpOworICAgIGZvciAocWludDY0IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgeworICAgICAgICBtX3N0cmVhbSA+PiBieXRlOworICAgICAgICBvdXQuYXBwZW5kKGJ5
dGUpOworICAgIH0KKyAgICByZXR1cm4gbV9zdHJlYW0uc3RhdHVzKCkgPT0gUURhdGFTdHJlYW06
Ok9rOworfQorCitib29sIFFEYXRhU3RyZWFtQ29kZXI6OmRlY29kZUJvb2woYm9vbCYgb3V0KQor
eworICAgIG1fc3RyZWFtID4+IG91dDsKKyAgICByZXR1cm4gbV9zdHJlYW0uc3RhdHVzKCkgPT0g
UURhdGFTdHJlYW06Ok9rOworfQorCitib29sIFFEYXRhU3RyZWFtQ29kZXI6OmRlY29kZVVJbnQz
Mih1aW50MzJfdCYgb3V0KQoreworICAgIG1fc3RyZWFtID4+IG91dDsKKyAgICByZXR1cm4gbV9z
dHJlYW0uc3RhdHVzKCkgPT0gUURhdGFTdHJlYW06Ok9rOworfQorCitib29sIFFEYXRhU3RyZWFt
Q29kZXI6OmRlY29kZVVJbnQ2NCh1aW50NjRfdCYgb3V0KQoreworICAgIHF1aW50NjQgdG1wOwor
ICAgIG1fc3RyZWFtID4+IHRtcDsKKyAgICAvLyBxdWludDY0IGlzIGRlZmluZWQgdG8gImxvbmcg
bG9uZyB1bnNpZ25lZCIsIGluY29tcGF0aWJsZSB3aXRoIHVpbnQ2NF90IGRlZmluZWQgYXMgImxv
bmcgdW5zaWduZWQiIG9uIDY0Yml0cyBhcmNocy4KKyAgICBvdXQgPSB0bXA7CisgICAgcmV0dXJu
IG1fc3RyZWFtLnN0YXR1cygpID09IFFEYXRhU3RyZWFtOjpPazsKK30KKworYm9vbCBRRGF0YVN0
cmVhbUNvZGVyOjpkZWNvZGVJbnQzMihpbnQzMl90JiBvdXQpCit7CisgICAgbV9zdHJlYW0gPj4g
b3V0OworICAgIHJldHVybiBtX3N0cmVhbS5zdGF0dXMoKSA9PSBRRGF0YVN0cmVhbTo6T2s7Cit9
CisKK2Jvb2wgUURhdGFTdHJlYW1Db2Rlcjo6ZGVjb2RlSW50NjQoaW50NjRfdCYgb3V0KQorewor
ICAgIHFpbnQ2NCB0bXA7CisgICAgbV9zdHJlYW0gPj4gdG1wOworICAgIC8vIHFpbnQ2NCBpcyBk
ZWZpbmVkIHRvICJsb25nIGxvbmciLCBpbmNvbXBhdGlibGUgd2l0aCBpbnQ2NF90IGRlZmluZWQg
YXMgImxvbmciIG9uIDY0Yml0cyBhcmNocy4KKyAgICBvdXQgPSB0bXA7CisgICAgcmV0dXJuIG1f
c3RyZWFtLnN0YXR1cygpID09IFFEYXRhU3RyZWFtOjpPazsKK30KKworYm9vbCBRRGF0YVN0cmVh
bUNvZGVyOjpkZWNvZGVGbG9hdChmbG9hdCYgb3V0KQoreworICAgIG1fc3RyZWFtID4+IG91dDsK
KyAgICByZXR1cm4gbV9zdHJlYW0uc3RhdHVzKCkgPT0gUURhdGFTdHJlYW06Ok9rOworfQorCiti
b29sIFFEYXRhU3RyZWFtQ29kZXI6OmRlY29kZURvdWJsZShkb3VibGUmIG91dCkKK3sKKyAgICBt
X3N0cmVhbSA+PiBvdXQ7CisgICAgcmV0dXJuIG1fc3RyZWFtLnN0YXR1cygpID09IFFEYXRhU3Ry
ZWFtOjpPazsKK30KKworYm9vbCBRRGF0YVN0cmVhbUNvZGVyOjpkZWNvZGVTdHJpbmcoU3RyaW5n
JiBvdXQpCit7CisgICAgbV9zdHJlYW0gPj4gb3V0OworICAgIHJldHVybiBtX3N0cmVhbS5zdGF0
dXMoKSA9PSBRRGF0YVN0cmVhbTo6T2s7Cit9CisKK1Bhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhp
c3RvcnlJdGVtOjpyZXN0b3JlU3RhdGUoUURhdGFTdHJlYW0mIGluLCBpbnQgdmVyc2lvbikKK3sK
KyAgICBBU1NFUlQodmVyc2lvbiA9PSAyKTsKKworICAgIFN0cmluZyB1cmw7CisgICAgU3RyaW5n
IHRpdGxlOworICAgIFN0cmluZyBvcmlnaW5hbFVSTDsKKyAgICBpbiA+PiB1cmwgPj4gdGl0bGUg
Pj4gb3JpZ2luYWxVUkw7CisKKyAgICBRRGF0YVN0cmVhbUNvZGVyIGRlY29kZXIoaW4pOworICAg
IFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGRlY29kZUJhY2tGb3J3YXJkVHJlZSh1cmwsIHRp
dGxlLCBvcmlnaW5hbFVSTCwgZGVjb2Rlcik7CisgICAgLy8gZGVjb2RlQmFja0ZvcndhcmRUcmVl
IGhhcyBpdHMgb3duIHN0cmVhbSB2ZXJzaW9uLiBBbiBpbmNvbXBhdGlibGUgaW5wdXQgc3RyZWFt
IHZlcnNpb24gd2lsbCByZXR1cm4gbnVsbCBoZXJlLgorICAgIGlmICghaXRlbSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAvLyBhdCB0aGUgZW5kIGxvYWQgdXNlckRhdGEKKyAgICBib29sIHZh
bGlkVXNlckRhdGE7CisgICAgaW4gPj4gdmFsaWRVc2VyRGF0YTsKKyAgICBpZiAodmFsaWRVc2Vy
RGF0YSkgeworICAgICAgICBRVmFyaWFudCB0bXA7CisgICAgICAgIGluID4+IHRtcDsKKyAgICAg
ICAgaXRlbS0+c2V0VXNlckRhdGEodG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gaXRlbTsKK30K
KworUURhdGFTdHJlYW0mIFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpzYXZlU3RhdGUoUURhdGFTdHJl
YW0mIG91dCwgaW50IHZlcnNpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKHZlcnNpb24gPT0gMik7
CisKKyAgICBvdXQgPDwgdXJsU3RyaW5nKCkgPDwgdGl0bGUoKSA8PCBvcmlnaW5hbFVSTFN0cmlu
ZygpOworCisgICAgUURhdGFTdHJlYW1Db2RlciBlbmNvZGVyKG91dCk7CisgICAgZW5jb2RlQmFj
a0ZvcndhcmRUcmVlKGVuY29kZXIpOworCisgICAgLy8gc2F2ZSB1c2VyIGRhdGEKKyAgICBpZiAo
dXNlckRhdGEoKS5pc1ZhbGlkKCkpCisgICAgICAgIG91dCA8PCB0cnVlIDw8IHVzZXJEYXRhKCk7
CisgICAgZWxzZQorICAgICAgICBvdXQgPDwgZmFsc2U7CisKKyAgICByZXR1cm4gb3V0OworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCmluZGV4IGUxNzk2YjkuLjE5ZDY1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSFRNTEFuY2hvckVs
ZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdAogCiBib29sIEhUTUxBbmNob3JFbGVtZW50Ojpp
c01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIHsKLSNpZiAhKFBMQVRGT1JNKEVGTCkgfHwgUExBVEZP
Uk0oR1RLKSkKKyNpZiAhKFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShRVCkpCiAgICAgLy8gT25seSBhbGxvdyBsaW5rcyB3aXRoIHRhYkluZGV4IG9yIGNvbnRlbnRF
ZGl0YWJsZSB0byBiZSBtb3VzZSBmb2N1c2FibGUuCiAgICAgLy8gVGhpcyBpcyBvdXIgcnVsZSBm
b3IgdGhlIE1hYyBwbGF0Zm9ybTsgb24gbWFueSBvdGhlciBwbGF0Zm9ybXMgd2UgZm9jdXMgYW55
IGxpbmsgeW91IGNsaWNrIG9uLgogICAgIGlmIChpc0xpbmsoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMWM4ODU3Yy4uYWFkODNhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRXaWR0aChpbnQgdmFsdWUpCiAjaWYgRU5BQkxFKFdF
QkdMKQogc3RhdGljIGJvb2wgcmVxdWlyZXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yV2ViR0wo
KQogewotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShRVCkKICAgICByZXR1cm4gZmFsc2U7CiAj
ZWxzZQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCmluZGV4IDk0N2FkMzcuLmQxOGQxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmgKQEAgLTMzLDcgKzMzLDkgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotI2lmIFVTRShDRykKKyNpZiBQTEFURk9STShRVCkKKyNk
ZWZpbmUgRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5IEludGVycG9sYXRpb25NZWRpdW0KKyNl
bGlmIFVTRShDRykKICNkZWZpbmUgRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5IEludGVycG9s
YXRpb25Mb3cKICNlbHNlCiAjZGVmaW5lIERlZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbnRl
cnBvbGF0aW9uRGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggYTkxMmNkOS4uZmJiZTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgYm9v
bCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZl
bnQqIGV2ZW50KSBjb25zdAogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzTW91c2VG
b2N1c2FibGUoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFFUKQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6aXNNb3VzZUZvY3VzYWJs
ZSgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBhZDc5ZDhjLi5mYTU1NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTUxNjQsMTEgKzUxNjQsMTEgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdl
c3R1cmUoKQogfQogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKLURPTVdyYXBw
ZXJXb3JsZCYgSFRNTE1lZGlhRWxlbWVudDo6ZW5zdXJlSXNvbGF0ZWRXb3JsZCgpCitET01XcmFw
cGVyV29ybGQqIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZUlzb2xhdGVkV29ybGQoKQogewogICAg
IGlmICghbV9pc29sYXRlZFdvcmxkKQogICAgICAgICBtX2lzb2xhdGVkV29ybGQgPSBET01XcmFw
cGVyV29ybGQ6OmNyZWF0ZShKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7Ci0gICAgcmV0dXJuICpt
X2lzb2xhdGVkV29ybGQ7CisgICAgcmV0dXJuIG1faXNvbGF0ZWRXb3JsZC5nZXQoKTsKIH0KIAog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQo
KQpAQCAtNTE4MSw3ICs1MTgxLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRp
YUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKQogICAgIGlmICghbWVkaWFDb250cm9sc1NjcmlwdC5s
ZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCA9IGVuc3VyZUlzb2xhdGVkV29ybGQoKTsKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxk
ID0gZW5zdXJlSXNvbGF0ZWRXb3JsZCgpOwogICAgIFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENv
bnRyb2xsZXIgPSBwYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKTsKICAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3Jp
cHRDb250cm9sbGVyLmdsb2JhbE9iamVjdCh3b3JsZCkpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CkBAIC01MjA1LDcgKzUyMDUsOSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9v
dCogcm9vdCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQgPSBlbnN1cmVJc29sYXRlZFdvcmxkKCk7CisgICAgRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCA9IGVuc3VyZUlzb2xhdGVkV29ybGQoKTsKKyAgICBpZiAoIXdvcmxkKQorICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIWVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlw
dCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CmluZGV4IDZlYTUxZDkuLjc3MzYwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC02MjcsNyArNjI3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShNRURJQV9D
T05UUk9MU19TQ1JJUFQpCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jv
b3QoU2hhZG93Um9vdCopIE9WRVJSSURFOwotICAgIERPTVdyYXBwZXJXb3JsZCYgZW5zdXJlSXNv
bGF0ZWRXb3JsZCgpOworICAgIERPTVdyYXBwZXJXb3JsZCogZW5zdXJlSXNvbGF0ZWRXb3JsZCgp
OwogICAgIGJvb2wgZW5zdXJlTWVkaWFDb250cm9sc0luamVjdGVkU2NyaXB0KCk7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCA5YzBiZTI4
Li4yZmQzOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApA
QCAtMjU0LDYgKzI1NCwxMSBAQCBib29sIEhUTUxPYmplY3RFbGVtZW50OjpzaG91bGRBbGxvd1F1
aWNrVGltZUNsYXNzSWRRdWlyaygpCiAgICAgCiBib29sIEhUTUxPYmplY3RFbGVtZW50OjpoYXNW
YWxpZENsYXNzSWQoKQogeworI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShzZXJ2aWNlVHlwZSgpLCAiYXBwbGljYXRpb24veC1xdC1wbHVnaW4iKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShzZXJ2aWNlVHlwZSgpLCAiYXBwbGljYXRpb24veC1xdC1zdHlsZWQtd2lkZ2V0
IikpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoc2VydmljZVR5cGUoKSkgJiYgY2xhc3NJZCgpLnN0
YXJ0c1dpdGgoImphdmE6IiwgZmFsc2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNGQzZTZiZC4uMzZk
ODMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycygp
CiAKICAgICBpZiAobV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzKSB7CiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOworICAgICAg
ICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgw
KTsKICAgICAgICAgbV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzID0gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBi
MGJkOGI1Li45YzI4MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKQEAgLTM1NiwxMiArMzU2LDYgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKCkKICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dS
b290KCkuZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVu
dCwgdHJ1ZSwgZmFsc2UpKTsKIH0KIAotc3RhdGljIERPTVdyYXBwZXJXb3JsZCYgcGx1Z0luSW1h
Z2VFbGVtZW50SXNvbGF0ZWRXb3JsZCgpCi17Ci0gICAgc3RhdGljIERPTVdyYXBwZXJXb3JsZCYg
aXNvbGF0ZWRXb3JsZCA9ICpET01XcmFwcGVyV29ybGQ6OmNyZWF0ZShKU0RPTVdpbmRvdzo6Y29t
bW9uVk0oKSkubGVha1JlZigpOwotICAgIHJldHVybiBpc29sYXRlZFdvcmxkOwotfQotCiB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93
Um9vdCogcm9vdCkKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CkBAIC0z
NzUsNyArMzY5LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAgICAgCiAgICAgU3RyaW5nIG1pbWVUeXBl
ID0gbG9hZGVkTWltZVR5cGUoKTsKIAotICAgIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3Js
ZCA9IHBsdWdJbkltYWdlRWxlbWVudElzb2xhdGVkV29ybGQoKTsKKyAgICBzdGF0aWMgRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01X
aW5kb3c6OmNvbW1vblZNKCkpLmxlYWtSZWYoKTsKICAgICBkb2N1bWVudCgpLmVuc3VyZVBsdWdJ
bnNJbmplY3RlZFNjcmlwdChpc29sYXRlZFdvcmxkKTsKIAogICAgIFNjcmlwdENvbnRyb2xsZXIm
IHNjcmlwdENvbnRyb2xsZXIgPSBwYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggOWQ5MjY0Mi4uMDE5YzRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTg2LDE0ICs4
Niw2IEBAIFBhc3NSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+IEhUTUxTZWxlY3RFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MU2VsZWN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCi12b2lkIEhU
TUxTZWxlY3RFbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIHN0eWxlQ2hhbmdl
KQotewotICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBvcHRpb25zIGRpZG4ndCBuZWNlc3NhcmlseSBj
aGFuZ2UsIHdlIHdpbGwgY2FsbCBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIgZm9yIGl0cyBz
aWRlIGVmZmVjdAotICAgIC8vIG9mIHJlY29tcHV0aW5nIHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVu
dC4gV2UgbmVlZCB0byBkbyB0aGF0IGlmIHRoZSBzdHlsZSBjaGFuZ2UgaW5jbHVkZWQgYSBjaGFu
Z2UgaW4gem9vbSBsZXZlbC4KLSAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKTsKLSAg
ICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRSZWNhbGNTdHlsZShzdHlsZUNoYW5nZSk7Ci19
Ci0KIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNlbGVjdEVsZW1lbnQ6OmZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IHNlbGVjdE11bHRpcGxlLCAoInNlbGVjdC1tdWx0aXBsZSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApp
bmRleCAwNDk3MmFmLi4xNmI4ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5oCkBAIC0xMzcsOSArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiAgICAgdm9pZCBkaXNwYXRjaENoYW5nZUV2ZW50
Rm9yTWVudUxpc3QoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6
Q2hhbmdlKSBPVkVSUklERSBGSU5BTDsKLQorICAgIAogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1z
KGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMgPSB0cnVlKSBjb25zdDsKIAogICAgIHZvaWQgZGVz
ZWxlY3RJdGVtcyhIVE1MT3B0aW9uRWxlbWVudCogZXhjbHVkZUVsZW1lbnQgPSAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oCmluZGV4IDFhYTljY2MuLjIyZjM5ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMsOCBAQCBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCi1jbGFzcyBNZWRpYUNvbnRyb2xsZXIgRklOQUwgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYUNvbnRyb2xsZXI+LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CisvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQg
YmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhl
ZC4KK2NsYXNzIE1lZGlhQ29udHJvbGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJv
bGxlcj4sIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xsZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB+
TWVkaWFDb250cm9sbGVyKCk7CkBAIC01NCw1OCArNTUsNTggQEAgcHVibGljOgogCiAgICAgY29u
c3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUdyb3VwOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXll
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgY3Vy
cmVudFRpbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91Ymxl
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fcGF1c2VkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBsYXkoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZWQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgdW5wYXVzZSgp
OwogICAgIAotICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3VibGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
ZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRQbGF5
YmFja1JhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3Vi
bGUpOwogICAgIAotICAgIHZpcnR1YWwgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1JhdGUoZG91YmxlKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSk7CiAgICAgCi0gICAgdmlydHVhbCBkb3VibGUgdm9s
dW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92b2x1bWU7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldFZvbHVtZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX211dGVkOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBt
dXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0
ZWQoYm9vbCk7CiAgICAgCi0gICAgdmlydHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKyAgICB2aXJ0dWFsIFJlYWR5U3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQogCiAgICAgZW51
bSBQbGF5YmFja1N0YXRlIHsgV0FJVElORywgUExBWUlORywgRU5ERUQgfTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHBsYXliYWNrU3RhdGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzQXVkaW8oKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGJvb2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2li
bGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNW
aWRlbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCk7CisgICAg
dmlydHVhbCBib29sIGNsb3NlZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xv
c2VkQ2FwdGlvbnNWaXNpYmxlOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Nh
bm5pbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTY2Fubmlu
ZygpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjcnViYmluZygpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5n
KCk7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuUGxheSgpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBp
c0xpdmVTdHJlYW0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3Ry
ZWFtKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGhhc0N1cnJlbnRTcmMoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VycmVudFNyYygpIGNvbnN0OwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHJldHVyblRvUmVhbHRpbWUoKTsKIAogICAgIGJvb2wgaXNCbG9ja2VkKCkgY29u
c3Q7CiAKQEAgLTEyOSwxMCArMTMwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRpbWV1
cGRhdGVUaW1lcigpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gTWVkaWFDb250cm9sbGVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9OworICAgIHZpcnR1
YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsg
fQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBNZWRpYUNvbnRyb2xsZXJFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH07CiAKICAgICBmcmllbmQgY2xhc3MgSFRNTE1lZGlhRWxl
bWVudDsKICAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sbGVyRXZlbnRMaXN0ZW5lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCmluZGV4IGQ3NzBhMDIuLjZiN2U3ZTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMjE0
NSw4ICsyMTQ1LDE4IEBAIFBhc3NSZWZQdHI8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6bWVhc3VyZVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0CiAgICAgU3RyaW5nIG5vcm1h
bGl6ZWRUZXh0ID0gdGV4dDsKICAgICBub3JtYWxpemVTcGFjZXMobm9ybWFsaXplZFRleHQpOwog
CisjaWYgUExBVEZPUk0oUVQpCisgICAgLy8gV2UgYWx3YXlzIHVzZSBjb21wbGV4IHRleHQgc2hh
cGluZyBzaW5jZSBpdCBjYW4ndCBiZSB0dXJuZWQgb2ZmIGZvciBRUGFpbnRlclBhdGg6OmFkZFRl
eHQoKS4KKyAgICBGb250OjpDb2RlUGF0aCBvbGRDb2RlUGF0aCA9IEZvbnQ6OmNvZGVQYXRoKCk7
CisgICAgRm9udDo6c2V0Q29kZVBhdGgoRm9udDo6Q29tcGxleCk7CisjZW5kaWYKKwogICAgIG1l
dHJpY3MtPnNldFdpZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0UnVuKG5vcm1hbGl6ZWRUZXh0
KSkpOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgRm9udDo6c2V0Q29kZVBhdGgob2xkQ29kZVBh
dGgpOworI2VuZGlmCisKICAgICByZXR1cm4gbWV0cmljcy5yZWxlYXNlKCk7CiB9CiAKQEAgLTIy
NzMsNiArMjI4MywxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogCiAgICAgYy0+c2V0VGV4
dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKKyNp
ZiBQTEFURk9STShRVCkKKyAgICAvLyBXZSBhbHdheXMgdXNlIGNvbXBsZXggdGV4dCBzaGFwaW5n
IHNpbmNlIGl0IGNhbid0IGJlIHR1cm5lZCBvZmYgZm9yIFFQYWludGVyUGF0aDo6YWRkVGV4dCgp
LgorICAgIEZvbnQ6OkNvZGVQYXRoIG9sZENvZGVQYXRoID0gRm9udDo6Y29kZVBhdGgoKTsKKyAg
ICBGb250OjpzZXRDb2RlUGF0aChGb250OjpDb21wbGV4KTsKKyNlbmRpZgorCiAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqYyk7CiAgICAgICAgIGMtPnRyYW5zbGF0ZShsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSk7
CkBAIC0yMjgzLDYgKzIyOTksMTAgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRy
YXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAg
Yy0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250OjpVc2VGYWxsYmFj
a0lmRm9udE5vdFJlYWR5KTsKIAogICAgIGRpZERyYXcodGV4dFJlY3QpOworCisjaWYgUExBVEZP
Uk0oUVQpCisgICAgRm9udDo6c2V0Q29kZVBhdGgob2xkQ29kZVBhdGgpOworI2VuZGlmCiB9CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppbmZsYXRlU3Ryb2tlUmVjdChGbG9hdFJl
Y3QmIHJlY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHAKaW5kZXggZDRhZmE1MC4uNWI1ZTAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcApAQCAtNDMsNiArNDMsMTMgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dDb250ZXh0Lmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFQ
YWludGVyPgorI2luY2x1ZGUgPFFCcnVzaD4KKyNpbmNsdWRlIDxRUGVuPgorI2luY2x1ZGUgPFFD
b2xvcj4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gQ29sb3JQYXJzZVJl
c3VsdCB7IFBhcnNlZFJHQkEsIFBhcnNlZEN1cnJlbnRDb2xvciwgUGFyc2VkU3lzdGVtQ29sb3Is
IFBhcnNlRmFpbGVkIH07CkBAIC0yNTAsNiArMjU3LDEyIEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFw
cGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICAv
LyBXZSdsbCBuZWVkIGEgZmFuY2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENNWUtB
IGNvcnJlY3RseQogI2lmIFVTRShDRykKICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS1N0cm9rZUNv
bG9yKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBtX2NteWthLT5jLCBtX2NteWthLT5tLCBt
X2NteWthLT55LCBtX2NteWthLT5rLCBtX2NteWthLT5hKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQor
ICAgICAgICBRUGVuIGN1cnJlbnRQZW4gPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGVu
KCk7CisgICAgICAgIFFDb2xvciBjbHI7CisgICAgICAgIGNsci5zZXRDbXlrRihtX2NteWthLT5j
LCBtX2NteWthLT5tLCBtX2NteWthLT55LCBtX2NteWthLT5rLCBtX2NteWthLT5hKTsKKyAgICAg
ICAgY3VycmVudFBlbi5zZXRDb2xvcihjbHIpOworICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+c2V0UGVuKGN1cnJlbnRQZW4pOwogI2Vsc2UKICAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IobV9jbXlrYS0+cmdiYSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAjZW5kaWYK
QEAgLTI4Miw2ICsyOTUsMTIgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICAvLyBXZSdsbCBuZWVkIGEgZmFu
Y2llciBDb2xvciBhYnN0cmFjdGlvbiB0byBzdXBwb3J0IENNWUtBIGNvcnJlY3RseQogI2lmIFVT
RShDRykKICAgICAgICAgQ0dDb250ZXh0U2V0Q01ZS0ZpbGxDb2xvcihjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKSwgbV9jbXlrYS0+YywgbV9jbXlrYS0+bSwgbV9jbXlrYS0+eSwgbV9jbXlrYS0+
aywgbV9jbXlrYS0+YSk7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICAgICAgUUJydXNoIGN1cnJl
bnRCcnVzaCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5icnVzaCgpOworICAgICAgICBR
Q29sb3IgY2xyOworICAgICAgICBjbHIuc2V0Q215a0YobV9jbXlrYS0+YywgbV9jbXlrYS0+bSwg
bV9jbXlrYS0+eSwgbV9jbXlrYS0+aywgbV9jbXlrYS0+YSk7CisgICAgICAgIGN1cnJlbnRCcnVz
aC5zZXRDb2xvcihjbHIpOworICAgICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0
QnJ1c2goY3VycmVudEJydXNoKTsKICNlbHNlCiAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihtX2NteWthLT5yZ2JhLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCmluZGV4IDZmMTgy
ZTIuLmQzYWYyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bnRleHRHcm91cC5jcHAKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFyZWRPYmplY3QuaCIKIAorI2lmIFBMQVRG
T1JNKFFUKQorI3VuZGVmIGVtaXQKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBh
c3NSZWZQdHI8V2ViR0xDb250ZXh0R3JvdXA+IFdlYkdMQ29udGV4dEdyb3VwOjpjcmVhdGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggM2U4YmFmYi4uYzBmMjg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC04MSw2ICs4MSwxMCBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKKyNpZiBQTEFURk9STShRVCkKKyN1bmRlZiBlbWl0CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBkb3VibGUgc2Vjb25kc0JldHdlZW5SZXN0b3Jl
QXR0ZW1wdHMgPSAxLjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggZGFlZjcyMS4uOTQxNjE0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzdGFydERyYWco
Y29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50TG9jYXRpb24pCiAKICAgICBtX2xhc3REcmFnRXZlbnRM
b2NhdGlvbiA9IGV2ZW50TG9jYXRpb247CiAKLSAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOworICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CiAKICAgICBtX2lzQmVpbmdE
cmFnZ2VkID0gdHJ1ZTsKIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudDo6ZW5kRHJhZygpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVu
dChudWxscHRyKTsKKyAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VF
dmVudHNOb2RlKDApOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c3RhcnRU
aW1lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAppbmRleCA2M2M2YmI1Li5mOTVhZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIGFic29sdXRlUG9pbnQpCiB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c3RhcnREcmFn
Z2luZygpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkgewot
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KHRoaXMpOworICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlKHRoaXMpOwogICAgICAgICBtX2luRHJhZ01vZGUgPSB0cnVlOwogICAgIH0K
IH0KQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c3RvcERyYWdn
aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
KCkuZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01v
dXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICBtX2luRHJhZ01vZGUgPSBmYWxz
ZTsKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6Ondp
bGxEZXRhY2hSZW5kZXJlcnMoKQogewogICAgIGlmIChtX2luRHJhZ01vZGUpIHsKICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQobnVsbHB0cik7
CisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVu
dHNOb2RlKDApOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IDVlNDcxMWEuLmViNzNjY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKICAgICAgICAgaWYgKGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgp
LmNvbnRhaW5zKGxvY2FsKSkgewogICAgICAgICAgICAgaWYgKCFtX2NhcHR1cmluZykgewogICAg
ICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNl
RXZlbnRzRWxlbWVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCkucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcih0aGlzKTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCiAgICAgc3Rv
cFJlcGVhdGluZ1RpbWVyKCk7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKLSAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQobnVsbHB0cik7Cisg
ICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNO
b2RlKDApOwogICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCkudW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKaW5kZXggMGM1YjRjMy4uNDc4Yzg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0yMDEsNyArMjAx
LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OndpbGxEZXRhY2hSZW5k
ZXJlcnMoKQogewogICAgIGlmIChtX2NhcHR1cmluZykgewogICAgICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgICAg
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiAg
ICAgfQogfQogCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+aXNNb3Vz
ZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0g
TGVmdEJ1dHRvbikgewogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT52aXNp
YmxlVG9IaXRUZXN0aW5nKCkpIHsKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KHRoaXMpOworICAgICAgICAgICAgICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CiAg
ICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgp
ICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHsKICAgICAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2
ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVu
dHNOb2RlKDApOwogICAgICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoaG92ZXJlZCgpKSB7CkBAIC0zMDUsNyArMzA1LDcgQEAg
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNl
ZG93bkV2ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2
ZW50Kj4oZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAgICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQo
dGhpcyk7CisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmlu
Z01vdXNlRXZlbnRzTm9kZSh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2NhcHR1cmluZyA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIElu
cHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50
ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZl
bnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAgICAgICAgIGlmIChtX2NhcHR1cmluZyAm
JiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkgewogICAg
ICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAg
ICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0Vs
ZW1lbnQobnVsbHB0cik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICAgICAgICAgICAgICBtX2NhcHR1cmlu
ZyA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAg
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6d2lsbERldGFjaFJlbmRlcmVycygp
CiB7CiAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBk
b2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KG51bGxwdHIpOworICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAgICB9CiAK
ICAgICBpZiAobV9saXN0ZW5lcklkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcAppbmRleCBkNDA5YTk3Li44ZWM1NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTc3LDkgKzc3LDkgQEAgSW5zcGVjdG9y
QWdlbnQ6On5JbnNwZWN0b3JBZ2VudCgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJ
bnNwZWN0b3JBZ2VudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3Zv
aWQgSW5zcGVjdG9yQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJh
bWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7Ci0gICAgaWYgKCZ3b3JsZCAhPSAmbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpCisgICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbmplY3RlZFNjcmlwdEZvck9yaWdp
bi5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCmlu
ZGV4IGI4YTM1NjcuLjZkNDkyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9u
dGVuZCgpOwogCi0gICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBE
T01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChG
cmFtZSosIERPTVdyYXBwZXJXb3JsZCopOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAg
ICAgdm9pZCBkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDAwNjYxMzkuLjZmODdl
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTIxMSw5ICsyMTEsOSBAQCBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnNwZWN0b3JGcm9u
dGVuZENsaWVudDsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUq
IGZyYW1lLCBET01XcmFwcGVyV29ybGQqIHdvcmxkKQogewotICAgIGlmICgmd29ybGQgIT0gJm1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKQorICAgIGlmICh3b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgc3VwcG9z
ZWQgdG8gc2VydmUgYXMgSW5zcGVjdG9yRnJvbnRlbmQgbm90aWZ5IGluc3BlY3RvciBmcm9udGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5k
ZXggM2YxMGI3Ny4uZDgyN2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudD4pOwogICAgIGJvb2wgaGFzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSBjb25zdDsKLSAg
ICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3Js
ZCYpOworICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3Jh
cHBlcldvcmxkKik7CiAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlwdEZvck9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpOwogCiAgICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDFjNjYzYTEuLjcx
NWMzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpF
dmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmUKICAgICBT
dHJpbmcgc2NyaXB0SWQ7CiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAgICAgaWYgKGF1dG8gc2Ny
aXB0TGlzdGVuZXIgPSBKU0V2ZW50TGlzdGVuZXI6OmNhc3QoZXZlbnRMaXN0ZW5lci5nZXQoKSkp
IHsKLSAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRMaXN0ZW5lci0+aXNvbGF0
ZWRXb3JsZCgpLnZtKCkpOworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHNjcmlwdExp
c3RlbmVyLT5pc29sYXRlZFdvcmxkKCktPnZtKCkpOwogICAgICAgICBzdGF0ZSA9IGV4ZWNTdGF0
ZUZyb21Ob2RlKHNjcmlwdExpc3RlbmVyLT5pc29sYXRlZFdvcmxkKCksICZub2RlLT5kb2N1bWVu
dCgpKTsKICAgICAgICAgaGFuZGxlciA9IHNjcmlwdExpc3RlbmVyLT5qc0Z1bmN0aW9uKCZub2Rl
LT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGhhbmRsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNzM1
YmIwNi4uMTFiZDU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWU6On5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKQog
ewogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBG
cmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCiB7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKICAgICBpZiAocGFnZUFnZW50KQpA
QCAtMTYyLDEyICsxNjIsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW4KICAgICAgICAgaW5z
cGVjdG9yQWdlbnQtPmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChmcmFtZSwgd29ybGQpOwog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChQYWdlRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPnBhZ2VEZWJ1Z2dlckFnZW50
KCkpIHsKLSAgICAgICAgaWYgKHBhZ2VBZ2VudCAmJiAmd29ybGQgPT0gJm1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpICYmIGZyYW1lID09IHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCkpCisgICAgICAgIGlm
IChwYWdlQWdlbnQgJiYgd29ybGQgPT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkgJiYgZnJhbWUg
PT0gcGFnZUFnZW50LT5tYWluRnJhbWUoKSkKICAgICAgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRp
ZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKFBh
Z2VSdW50aW1lQWdlbnQqIHBhZ2VSdW50aW1lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5w
YWdlUnVudGltZUFnZW50KCkpIHsKLSAgICAgICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5v
cm1hbFdvcmxkKCkpCisgICAgICAgIGlmICh3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSkKICAgICAgICAgICAgIHBhZ2VSdW50aW1lQWdlbnQtPmRpZENyZWF0ZU1haW5Xb3JsZENvbnRl
eHQoZnJhbWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAyZDZiNDg1Li5kZjNlYTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQqKTsKICAgICBzdGF0
aWMgYm9vbCBpc0RlYnVnZ2VyUGF1c2VkKEZyYW1lKik7CiAKICAgICBzdGF0aWMgdm9pZCB3aWxs
SW5zZXJ0RE9NTm9kZShEb2N1bWVudCosIE5vZGUqIHBhcmVudCk7CkBAIC0zMTksNyArMzE5LDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgc3RhdGlj
IHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSosIERPTVdy
YXBwZXJXb3JsZCopOwogICAgIHN0YXRpYyBib29sIGlzRGVidWdnZXJQYXVzZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqKTsKIAogICAgIHN0YXRpYyB2b2lkIHdpbGxJbnNlcnRET01Ob2RlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgTm9kZSogcGFyZW50KTsKQEAgLTUxMiw3ICs1MTIsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCog
d29ybGQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShm
cmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGE5YTQ5M2IuLjQ5YTdhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC04NjgsOSArODY4LDkgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwg
Ym9vbCB2YWx1ZSkKICAgICBtX2lnbm9yZVNjcmlwdHNFbmFibGVkTm90aWZpY2F0aW9uID0gZmFs
c2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSogZnJhbWUsIERP
TVdyYXBwZXJXb3JsZCogd29ybGQpCiB7Ci0gICAgaWYgKCZ3b3JsZCAhPSAmbWFpblRocmVhZE5v
cm1hbFdvcmxkKCkpCisgICAgaWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggM2NiOTU0Yi4u
MmIwMmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICBEZXZpY2VPcmllbnRhdGlvbkRh
dGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oRGV2aWNlT3JpZW50YXRpb25EYXRhKik7CiAK
ICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCi0gICAgdm9pZCBkaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCopOwogICAg
IHZvaWQgZG9tQ29udGVudEV2ZW50RmlyZWQoKTsKICAgICB2b2lkIGxvYWRFdmVudEZpcmVkKCk7
CiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDIzNDE3YTkuLjMzYjJiOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTM1NCw3ICszNTQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCopIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRv
Y3VtZW50RWxlbWVudEF2YWlsYWJsZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3Jt
Rmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZU
UERpcmVjdG9yeVBhcnNlci5jcHAKaW5kZXggMzI1OTY0Ni4uNmEwNWM0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKQEAgLTI0LDggKzI0LDEwIEBA
CiAjaWYgRU5BQkxFKEZUUERJUikKICNpbmNsdWRlICJGVFBEaXJlY3RvcnlQYXJzZXIuaCIKIAor
I2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFEYXRlVGltZT4KIC8vIE9uIFdpbmRvd3MsIHVz
ZSB0aGUgdGhyZWFkc2FmZSAqX3IgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHB0aHJlYWQuCi0jaWYg
T1MoV0lORE9XUykgJiYgKFVTRShQVEhSRUFEUykgfHwgSEFWRShQVEhSRUFEX0gpKQorI2VsaWYg
T1MoV0lORE9XUykgJiYgKFVTRShQVEhSRUFEUykgfHwgSEFWRShQVEhSRUFEX0gpKQogI2luY2x1
ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCkBAIC0zNSw3ICszNywzOCBAQAogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotI2lmIE9TKFdJTkRPV1MpICYmICFkZWZp
bmVkKGdtdGltZV9yKQorI2lmIFBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFfV1NfV0lOMzIpCisK
Ky8vIFJlcGxhY2VtZW50IGZvciBnbXRpbWVfcigpIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24g
TWluR1cuCisvLyBXZSB1c2UgdGhpcyBvbiBXaW4zMiBRdCBwbGF0Zm9ybSBmb3IgcG9ydGFiaWxp
dHkuCitzdHJ1Y3QgdG0gZ210aW1lUXQoY29uc3QgUURhdGVUaW1lJiBpbnB1dCkKK3sKKyAgICB0
bSByZXN1bHQ7CisKKyAgICBRRGF0ZSBkYXRlKGlucHV0LmRhdGUoKSk7CisgICAgcmVzdWx0LnRt
X3llYXIgPSBkYXRlLnllYXIoKSAtIDE5MDA7CisgICAgcmVzdWx0LnRtX21vbiA9IGRhdGUubW9u
dGgoKTsKKyAgICByZXN1bHQudG1fbWRheSA9IGRhdGUuZGF5KCk7CisgICAgcmVzdWx0LnRtX3dk
YXkgPSBkYXRlLmRheU9mV2VlaygpOworICAgIHJlc3VsdC50bV95ZGF5ID0gZGF0ZS5kYXlPZlll
YXIoKTsKKworICAgIFFUaW1lIHRpbWUoaW5wdXQudGltZSgpKTsKKyAgICByZXN1bHQudG1fc2Vj
ID0gdGltZS5zZWNvbmQoKTsKKyAgICByZXN1bHQudG1fbWluID0gdGltZS5taW51dGUoKTsKKyAg
ICByZXN1bHQudG1faG91ciA9IHRpbWUuaG91cigpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIHN0cnVjdCB0bSAqZ210aW1lUXQoY29uc3QgdGltZV90ICpjb25zdCB0aW1lcCwg
c3RydWN0IHRtICpyZXN1bHQpCit7CisgICAgY29uc3QgUURhdGVUaW1lIGR0KFFEYXRlVGltZTo6
ZnJvbVRpbWVfdCgqdGltZXApKTsKKyAgICAqcmVzdWx0ID0gV2ViQ29yZTo6Z210aW1lUXQoZHQp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNkZWZpbmUgZ210aW1lX3IoeCwgeSkgZ210aW1l
UXQoeCwgeSkKKyNlbGlmIE9TKFdJTkRPV1MpICYmICFkZWZpbmVkKGdtdGltZV9yKQogI2lmIGRl
ZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNDAwKSAKICNkZWZpbmUgZ210aW1lX3Io
eCwgeSkgZ210aW1lX3MoKHkpLCAoeCkpCiAjZWxzZSAvKiAhX01TQ19WRVIgKi8gCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlNDQwOTY1Li43MjlmY2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMyNDgsMTMgKzMyNDgsMTMgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygp
CiAgICAgaWYgKCFtX2ZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9F
eGVjdXRlU2NyaXB0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZjxET01XcmFw
cGVyV29ybGQ+PiB3b3JsZHM7CisgICAgVmVjdG9yPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+ID4g
d29ybGRzOwogICAgIFNjcmlwdENvbnRyb2xsZXI6OmdldEFsbFdvcmxkcyh3b3JsZHMpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29ybGRzLnNpemUoKTsgKytpKQogICAgICAgICBkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCh3b3JsZHNbaV0uZ2V0KCkpOwogfQogCi12
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKICAgICBpZiAoIW1f
ZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
IHx8ICFtX2ZyYW1lLnNjcmlwdCgpLmV4aXN0aW5nV2luZG93U2hlbGwod29ybGQpKQogICAgICAg
ICByZXR1cm47CkBAIC0zMjcxLDcgKzMyNzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRz
KCkKIHsKLSAgICBWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+IHdvcmxkczsKKyAgICBWZWN0
b3I8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiB3b3JsZHM7CiAgICAgU2NyaXB0Q29udHJvbGxl
cjo6Z2V0QWxsV29ybGRzKHdvcmxkcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Js
ZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fY2xpZW50LmRpc3BhdGNoR2xvYmFsT2JqZWN0QXZh
aWxhYmxlKHdvcmxkc1tpXS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IDJlZjgxMjQuLjA4NTM5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBA
IC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlZE9ubG9hZEV2ZW50cygp
OwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Q7CiAKLSAgICB2b2lkIGRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYpOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
Kik7CiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7
CiAgICAgdm9pZCBkaXNwYXRjaERvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGUxNWI3OTYuLmRjN2Q5ZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIE9iamVjdENvbnRl
bnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAwOwogICAgICAgICB2aXJ0
dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldv
cmxkJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0ID0gMDsgLy8gIk5hdmlnYXRpb24iIGhlcmUg
bWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8gYW5vdGhlciB0aGF0IGVuZHMgdXAg
aW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogCkBAIC0zMjgsNyArMzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxPcGVuU29ja2V0
U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSopIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShET01XcmFwcGVyV29ybGQmKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJX
b3JsZCopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERP
TVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QoRE9NV2luZG93RXh0ZW5zaW9uKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVu
c2lvblRvR2xvYmFsT2JqZWN0KERPTVdpbmRvd0V4dGVuc2lvbiopIHsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVu
c2lvbihET01XaW5kb3dFeHRlbnNpb24qKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IGM4NmQyYzguLmIwNTRj
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNh
dGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuaApAQCAtNDMsNyArNDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIFVSTDsKIAotY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZSBGSU5BTCA6
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9u
Q2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIERPTVdpbmRv
d1Byb3BlcnR5IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwg
b25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xhc3MgRE9NQXBw
bGljYXRpb25DYWNoZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01BcHBsaWNhdGlvbkNhY2hlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgRE9NQXBwbGljYXRpb25DYWNoZShmcmFtZSkpOyB9CiAgICAgfkRPTUFwcGxpY2F0
aW9uQ2FjaGUoKSB7IEFTU0VSVCghbV9mcmFtZSk7IH0KQEAgLTcxLDE2ICs3MiwxNiBAQCBwdWJs
aWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjYWNoZWQpOwogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIob2Jzb2xldGUpOwogCi0gICAgdmlydHVhbCBF
dmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIERPTUFwcGxpY2F0aW9uQ2FjaGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
LSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gRE9NQXBw
bGljYXRpb25DYWNoZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJS
SURFIEZJTkFMOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdG9FdmVudFR5cGUo
QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgaWQpOwogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IERPTUFwcGxpY2F0aW9uQ2FjaGUoRnJhbWUqKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCiAgICAgQXBw
bGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMmE1OTNkYy4u
ZTA1ZWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3Bw
CkBAIC01Miw3ICs1Miw3IEBACiAjZGVmaW5lIElTX0lDT05fU1lOQ19USFJFQUQoKSAobV9zeW5j
VGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSkKICNkZWZpbmUgQVNTRVJUX0lDT05fU1lOQ19USFJF
QUQoKSBBU1NFUlQoSVNfSUNPTl9TWU5DX1RIUkVBRCgpKQogCi0jaWYgUExBVEZPUk0oR1RLKQor
I2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspCiAjZGVmaW5lIENBTl9USEVNRV9VUkxf
SUNPTgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IDRmZmYyYWEuLjUxYWEzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMoUGFnZUdyb3VwJiBncm91cCkKK0NhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKiBncm91cCkKICAgICA6IG1fcGFnZUdyb3VwKGdy
b3VwKQogICAgICwgbV9kaXNwbGF5TW9kZShGb3JjZWRPbmx5KQogICAgICwgbV90aW1lcih0aGlz
LCAmQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGltZXJGaXJlZCkKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Q2FwdGkKIAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1
c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0gKihtX3BhZ2VH
cm91cC5wYWdlcygpLmJlZ2luKCkpOworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VHcm91cCgpLT5w
YWdlcygpLmJlZ2luKCkpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZl
cnNDYXB0aW9ucygpIGNvbnN0CiAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNl
clByZWZlcnNDYXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7Ci0gICAgUGFnZSogcGFnZSA9ICoo
bV9wYWdlR3JvdXAucGFnZXMoKS5iZWdpbigpKTsKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3Jv
dXAoKS0+cGFnZXMoKS5iZWdpbigpKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsK
IApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQ
cmVmZXJzQ2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogCiBib29sIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnVzZXJQcmVmZXJzU3VidGl0bGVzKCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0g
KihwYWdlR3JvdXAoKS5wYWdlcygpLmJlZ2luKCkpOworICAgIFBhZ2UqIHBhZ2UgPSAqKHBhZ2VH
cm91cCgpLT5wYWdlcygpLmJlZ2luKCkpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
Ojp1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0CiAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6c2V0VXNlclByZWZlcnNTdWJ0aXRsZXMoYm9vbCBwcmVmZXJlbmNlKQogewotICAgIFBh
Z2UqIHBhZ2UgPSAqKG1fcGFnZUdyb3VwLnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgUGFnZSogcGFn
ZSA9ICoocGFnZUdyb3VwKCktPnBhZ2VzKCkuYmVnaW4oKSk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGJvb2wgcHJlZmVyZW5jZSkKIAogYm9vbCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMoKSBjb25z
dAogewotICAgIFBhZ2UqIHBhZ2UgPSAqKG1fcGFnZUdyb3VwLnBhZ2VzKCkuYmVnaW4oKSk7Cisg
ICAgUGFnZSogcGFnZSA9ICoocGFnZUdyb3VwKCktPnBhZ2VzKCkuYmVnaW4oKSk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xMjYsNyArMTI2LDcgQEAg
Ym9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMo
KSBjb25zdAogCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzVGV4
dERlc2NyaXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7Ci0gICAgUGFnZSogcGFnZSA9ICoobV9w
YWdlR3JvdXAucGFnZXMoKS5iZWdpbigpKTsKKyAgICBQYWdlKiBwYWdlID0gKihwYWdlR3JvdXAo
KS0+cGFnZXMoKS5iZWdpbigpKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKICAg
ICAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVz
ZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiAKIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCiB7Ci0gICAgbV9w
YWdlR3JvdXAuY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworICAgIG1fcGFnZUdyb3VwLT5j
YXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IENhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OnByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0CkBAIC0yMzgsMTMgKzIz
OCwxMyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0ZUNhcHRpb25TdHlsZVNo
ZWV0T3ZlcmlkZSgpCiAgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRlIHN0eWxlIHNoZWV0IHdp
dGggYSB1bmlxdWUgVVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQuCiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChVUkwsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywg
InVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzRE
QzIzIikpOwogCi0gICAgbV9wYWdlR3JvdXAucmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CisgICAgcGFn
ZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogCiAgICAgU3RyaW5nIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0ID0gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKICAgICBpZiAo
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BhZ2VHcm91cC5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQobWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LCBjYXB0aW9uc1N0eWxlU2hlZXRV
UkwsIFZlY3RvcjxTdHJpbmc+KCksCisgICAgcGFnZUdyb3VwKCktPmFkZFVzZXJTdHlsZVNoZWV0
VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgVmVjdG9yPFN0cmluZz4oKSwKICAgICAgICAgVmVj
dG9yPFN0cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxldmVsLCBJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCBhYjA0MDMwLi4xY2EyYTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBUZXh0VHJhY2tMaXN0OwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsK
IHB1YmxpYzoKLSAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCYpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IGNyZWF0ZShQYWdlR3JvdXAq
IGdyb3VwKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhncm91
cCkpOyB9CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpOwogCiAgICAgZW51
bSBDYXB0aW9uRGlzcGxheU1vZGUgewpAQCAtODcsMTYgKzg3LDE3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgdGVzdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RpbmdNb2RlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldFRlc3RpbmdNb2RlKGJvb2wgb3ZlcnJpZGUpIHsgbV90ZXN0
aW5nTW9kZSA9IG92ZXJyaWRlOyB9CiAgICAgCi0gICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQorICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogcHJvdGVjdGVkOgorICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKik7CiAgICAgdm9pZCB1cGRhdGVDYXB0aW9uU3R5bGVT
aGVldE92ZXJpZGUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlcz4qKTsKICAgICB2b2lkIG5vdGlmeSgpOwogCi0gICAgUGFnZUdy
b3VwJiBtX3BhZ2VHcm91cDsKKyAgICBQYWdlR3JvdXAqIG1fcGFnZUdyb3VwOwogICAgIENhcHRp
b25EaXNwbGF5TW9kZSBtX2Rpc3BsYXlNb2RlOwogICAgIFRpbWVyPENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM+IG1fdGltZXI7CiAgICAgU3RyaW5nIG1fdXNlclByZWZlcnJlZExhbmd1YWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
LmNwcAppbmRleCBlNTRmZThjLi43Mzk1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCiAjaW5jbHVkZSAiQ29y
ZVRleHQvQ29yZVRleHQuaCIKICNlbmRpZgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgog
I2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6
ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJv
bEVsZW1lbnRzLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiU29mdExpbmtp
bmcuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0
LmgiCkBAIC0xMzksNyArMTQxLDcgQEAgc3RhdGljIHZvaWQgdXNlckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnQKIH0KICNlbmRp
ZgogCi1DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUYoUGFnZUdyb3VwJiBncm91cCkKK0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
OjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRihQYWdlR3JvdXAqIGdyb3VwKQogICAgIDog
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyhncm91cCkKICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJ
VFlfRlJBTUVXT1JLKQogICAgICwgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlcyhmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUYuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuaAppbmRleCAzZDRmNTczLi4wZGU3YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oCkBAIC0zNyw3ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYgOiBwdWJsaWMgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyB7CiBwdWJsaWM6Ci0gICAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYoUGFnZUdyb3VwJik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+IGNyZWF0ZShQYWdlR3JvdXAqIGdyb3Vw
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYoZ3Jv
dXApKTsgfQogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGKCk7CiAK
ICNpZiBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQpAQCAtNjcsNiArNjcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJh
Y2sqKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKKyAgICBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRihQYWdlR3JvdXAqKTsKKwogI2lmIEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9G
UkFNRVdPUkspCiAgICAgU3RyaW5nIGNhcHRpb25zV2luZG93Q1NTKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGNhcHRpb25zQmFja2dyb3VuZENTUygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGJkZjU4ZDguLjE3MWNiZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTIzOCw3
ICsyMzgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICAvLyBGb3Igbm93LCBjYWxsIGlu
dG8gdGhlIGNsaWVudC4gVGhpcyBpcyB0ZW1wb3JhcnkhCiAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5jb3B5SW1hZ2UobV9oaXRUZXN0UmVzdWx0KTsKICAgICAgICAgYnJlYWs7Ci0jaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdl
VXJsVG9DbGlwYm9hcmQ6CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb3B5VVJMKG1faGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgp
KTsKICAgICAgICAgYnJlYWs7CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkK
ICAgICAgICAgaW5zZXJ0VW5pY29kZUNoYXJhY3Rlcih6ZXJvV2lkdGhOb25Kb2luZXIsIGZyYW1l
KTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwp
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGw6CiAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKSk7CiAgICAg
Q29udGV4dE1lbnVJdGVtIENvcHlJbWFnZUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVt
VGFnQ29weUltYWdlVG9DbGlwYm9hcmQsIAogICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdDb3B5
SW1hZ2VUb0NsaXBib2FyZCgpKTsKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkK
KyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAg
Q29udGV4dE1lbnVJdGVtIENvcHlJbWFnZVVybEl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQsIAogICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpKTsKICNlbmRpZgpAQCAtODAyLDcgKzgwMiw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIENvbnRleHRNZW51SXRlbSBEZWxldGVJdGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ0RlbGV0ZSwgY29udGV4dE1lbnVJdGVtVGFnRGVsZXRlKCkpOwogI2VuZGlmCi0jaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIENvbnRleHRNZW51SXRlbSBTZWxlY3RBbGxJ
dGVtKEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCwgY29udGV4dE1lbnVJ
dGVtVGFnU2VsZWN0QWxsKCkpOwogI2VuZGlmCiAKQEAgLTgyNiw2ICs4MjYsMTAgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgICAgICBhcHBlbmRJ
dGVtKE9wZW5MaW5rSW5OZXdXaW5kb3dJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAg
ICAgICAgICAgICBhcHBlbmRJdGVtKERvd25sb2FkRmlsZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwogICAgICAgICAgICAgfQorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICAgICAgaWYgKG1f
aGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkpIAorICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
Q29weUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOworI2VuZGlmCiAgICAgICAgICAgICBhcHBl
bmRJdGVtKENvcHlMaW5rSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAgICAgIH0KIApA
QCAtODM4LDcgKzg0Miw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBhcHBlbmRJdGVtKERvd25sb2FkSW1hZ2VJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKICAgICAgICAgICAgIGlmIChpbWFnZVVSTC5pc0xvY2FsRmlsZSgpIHx8IG1faGl0
VGVzdFJlc3VsdC5pbWFnZSgpKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQ29weUltYWdl
SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7Ci0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShFRkwpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KQogICAgICAgICAgICAgYXBwZW5kSXRlbShDb3B5SW1hZ2VVcmxJdGVtLCBtX2NvbnRleHRNZW51
LmdldCgpKTsKICNlbmRpZgogICAgICAgICB9CkBAIC0xMDE4LDcgKzEwMjIsNyBAQCB2b2lkIENv
bnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICBhcHBlbmRJdGVtKERlbGV0
ZUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0
b3JJdGVtKCksIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oRUZMKQogICAgICAgICBhcHBlbmRJdGVtKFNlbGVjdEFsbEl0ZW0sIG1fY29udGV4
dE1lbnUuZ2V0KCkpOwogI2VuZGlmCiAKQEAgLTEzMTAsNyArMTMxNCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3
V2luZG93OgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rp
c2s6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6
Ci0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgogI2VuZGlmCiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCBjZGZl
OWFhLi4zMmJmMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4
dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24u
Y3BwCkBAIC0zNSwxMiArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01XaW5k
b3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCitET01XaW5kb3dFeHRlbnNpb246OkRPTVdpbmRvd0V4dGVuc2lvbihGcmFt
ZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgOiBET01XaW5kb3dQcm9wZXJ0
eShmcmFtZSkKLSAgICAsIG1fd29ybGQoJndvcmxkKQorICAgICwgbV93b3JsZCh3b3JsZCkKICAg
ICAsIG1fd2FzRGV0YWNoZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHRoaXMtPmZyYW1lKCkpOwor
ICAgIEFTU0VSVChtX3dvcmxkKTsKIH0KIAogdm9pZCBET01XaW5kb3dFeHRlbnNpb246OmRpc2Nv
bm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRl
bnNpb24uaAppbmRleCBhMGJjNTQ0Li41M2I4NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93RXh0ZW5zaW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhbWU7CiAKIGNsYXNz
IERPTVdpbmRvd0V4dGVuc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVdpbmRvd0V4dGVuc2lv
bj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVdpbmRvd0V4dGVuc2lvbj4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NV2luZG93RXh0ZW5zaW9uKGZyYW1lLCB3b3JsZCkp
OwogICAgIH0KQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkgT1ZFUlJJREU7CiAKLSAgICBET01X
cmFwcGVyV29ybGQmIHdvcmxkKCkgY29uc3QgeyByZXR1cm4gKm1fd29ybGQ7IH0KKyAgICBET01X
cmFwcGVyV29ybGQqIHdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQogCiBw
cml2YXRlOgotICAgIERPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYp
OworICAgIERPTVdpbmRvd0V4dGVuc2lvbihGcmFtZSosIERPTVdyYXBwZXJXb3JsZCopOwogCiAg
ICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKICAgICBSZWZQdHI8RnJhbWU+IG1f
ZGlzY29ubmVjdGVkRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXgg
NTkwYjAyNi4uY2RiOTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MzMzLDcgKzMzMyw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkK
ICAgICAsIG1fc3ZnUGFuKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3Jlc2l6ZUxheWVyKDApCi0g
ICAgLCBtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChu
dWxscHRyKQorICAgICwgbV9ldmVudEhhbmRsZXJXaWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50
c05vZGUoMCkKICAgICAsIG1fY2xpY2tDb3VudCgwKQogICAgICwgbV9tb3VzZVBvc2l0aW9uSXNV
bmtub3duKHRydWUpCiAgICAgLCBtX21vdXNlRG93blRpbWVzdGFtcCgwKQpAQCAtMzg4LDggKzM4
OCw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAgICAgY2FuY2VsQXV0b0hpZGVDdXJz
b3JUaW1lcigpOwogI2VuZGlmCiAgICAgbV9yZXNpemVMYXllciA9IDA7Ci0gICAgbV9lbGVtZW50
VW5kZXJNb3VzZSA9IG51bGxwdHI7Ci0gICAgbV9sYXN0RWxlbWVudFVuZGVyTW91c2UgPSBudWxs
cHRyOworICAgIG1fbm9kZVVuZGVyTW91c2UgPSAwOworICAgIG1fbGFzdE5vZGVVbmRlck1vdXNl
ID0gMDsKICNpZiBFTkFCTEUoU1ZHKQogICAgIG1faW5zdGFuY2VVbmRlck1vdXNlID0gMDsKICAg
ICBtX2xhc3RJbnN0YW5jZVVuZGVyTW91c2UgPSAwOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpjbGVhcigpCiAgICAgbV9tb3VzZVByZXNzTm9kZSA9IDA7CiAgICAgbV9t
b3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBtX2NhcHR1cmVzRHJhZ2dpbmcgPSBmYWxzZTsKLSAg
ICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7CisgICAgbV9jYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUgPSAwOwogICAgIG1fbGF0Y2hlZFdoZWVsRXZlbnRFbGVtZW50ID0g
bnVsbHB0cjsKICAgICBtX3ByZXZpb3VzV2hlZWxTY3JvbGxlZEVsZW1lbnQgPSBudWxscHRyOwog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xMzc3LDcgKzEzNzcsNyBAQCBPcHRpb25hbEN1
cnNvciBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGJvb2wgc2hpZgogICAgICAgICAgICAgJiYgIW1fbW91c2VEb3duTWF5U3RhcnREcmFnCiAj
ZW5kaWYKICAgICAgICAgICAgICYmIG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2Uo
KQotICAgICAgICAgICAgJiYgIW1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KSB7CisgICAg
ICAgICAgICAmJiAhbV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUpIHsKICAgICAgICAgICAgIHJl
dHVybiBpQmVhbTsKICAgICAgICAgfQogCkBAIC0xNTU1LDggKzE1NTUsOCBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
bW91c2VFdmVudCkKICAgICAgICAgLy8gdGhlIG1fbW91c2VQcmVzc2VkIGZsYWcsIHdoaWNoIG1h
eSBoYXBwZW4gaWYgYW4gQXBwS2l0IHdpZGdldCBlbnRlcmVkIGEgbW9kYWwgZXZlbnQgbG9vcC4K
ICAgICAgICAgbV9jYXB0dXJlc0RyYWdnaW5nID0gc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmNh
cHR1cmVzRHJhZ2dpbmcoKTsKICAgICAgICAgaWYgKG1fbW91c2VQcmVzc2VkICYmIG1fY2FwdHVy
ZXNEcmFnZ2luZykgewotICAgICAgICAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQg
PSBzdWJmcmFtZS0+b3duZXJFbGVtZW50KCk7Ci0gICAgICAgICAgICBtX2V2ZW50SGFuZGxlcldp
bGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IHRydWU7CisgICAgICAgICAgICBt
X2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSA9IG1ldi50YXJnZXROb2RlKCk7CisgICAgICAgICAg
ICBtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSA9IHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTY1NSw4ICsxNjU1LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
RG91YmxlQ2xpY2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXYKICAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzIG1ldiA9IHByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIG1vdXNlRXZlbnQpOwogICAg
IEZyYW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtZXYpOwotICAgIGlm
IChtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCkKLSAg
ICAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQgPSBudWxscHRyOworICAgIGlmICht
X2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSkKKyAgICAgICAg
bV9jYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUgPSAwOwogICAgIGlmIChzdWJmcmFtZSAmJiBwYXNz
TW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKQEAgLTE3OTEsNyArMTc5MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQsIEhpCiAg
ICAgfQogCiAgICAgYm9vbCBzd2FsbG93RXZlbnQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhbWU+
IG5ld1N1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkgPyBzdWJm
cmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkpIDog
c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CisgICAgUmVmUHRyPEZyYW1lPiBuZXdTdWJm
cmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdldCgpID8gc3ViZnJhbWVGb3JUYXJn
ZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdldCgpKSA6IHN1YmZyYW1lRm9ySGl0
VGVzdFJlc3VsdChtZXYpOwogIAogICAgIC8vIFdlIHdhbnQgbW91c2VvdXRzIHRvIGhhcHBlbiBm
aXJzdCwgZnJvbSB0aGUgaW5zaWRlIG91dC4gIEZpcnN0IHNlbmQgYSBtb3ZlIGV2ZW50IHRvIHRo
ZSBsYXN0IHN1YmZyYW1lIHNvIHRoYXQgaXQgd2lsbCBmaXJlIG1vdXNlb3V0cy4KICAgICBpZiAo
bV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSAmJiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZy
YW1lLT50cmVlKCkuaXNEZXNjZW5kYW50T2YoJm1fZnJhbWUpICYmIG1fbGFzdE1vdXNlTW92ZUV2
ZW50U3ViZnJhbWUgIT0gbmV3U3ViZnJhbWUpCkBAIC0xODk2LDE0ICsxODk2LDE0IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgICAgIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UtPm1v
dXNlVXAobW91c2VFdmVudCk7CiAgICAgICAgIGJvb2wgY2FuY2VsYWJsZSA9IHRydWU7CiAgICAg
ICAgIGJvb2wgc2V0VW5kZXIgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuICFkaXNwYXRjaE1vdXNl
RXZlbnQoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCwgbV9sYXN0RWxlbWVudFVuZGVyTW91c2Uu
Z2V0KCksIGNhbmNlbGFibGUsIG1fY2xpY2tDb3VudCwgbW91c2VFdmVudCwgc2V0VW5kZXIpOwor
ICAgICAgICByZXR1cm4gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50LCBtX2xhc3ROb2RlVW5kZXJNb3VzZS5nZXQoKSwgY2FuY2VsYWJsZSwgbV9jbGlja0NvdW50
LCBtb3VzZUV2ZW50LCBzZXRVbmRlcik7CiAgICAgfQogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1No
YWRvd0NvbnRlbnQpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gcHJl
cGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgbW91c2VFdmVudCk7Ci0gICAgRnJhbWUqIHN1YmZyYW1l
ID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkgPyBzdWJmcmFtZUZvclRhcmdl
dE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkpIDogc3ViZnJhbWVGb3JI
aXRUZXN0UmVzdWx0KG1ldik7Ci0gICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50KQotICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxl
bWVudCA9IG51bGxwdHI7CisgICAgRnJhbWUqIHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUuZ2V0KCkgPyBzdWJmcmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUuZ2V0KCkpIDogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1ldik7CisgICAgaWYg
KG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKQorICAgICAg
ICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSA9IDA7CiAgICAgaWYgKHN1YmZyYW1lICYmIHBh
c3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC0yMTg5LDcgKzIxODksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xl
YXJEcmFnU3RhdGUoKQogewogICAgIHN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKICAgICBtX2RyYWdU
YXJnZXQgPSAwOwotICAgIG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50ID0gbnVsbHB0cjsK
KyAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSA9IDA7CiAgICAgbV9zaG91bGRPbmx5Rmly
ZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgbV9zZW5kaW5n
RXZlbnRUb1N1YnZpZXcgPSBmYWxzZTsKQEAgLTIxOTcsMTAgKzIxOTcsMTAgQEAgdm9pZCBFdmVu
dEhhbmRsZXI6OmNsZWFyRHJhZ1N0YXRlKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogCi12b2lkIEV2ZW50SGFuZGxlcjo6c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50
KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzZXRDYXB0
dXJpbmdNb3VzZUV2ZW50c05vZGUoUGFzc1JlZlB0cjxOb2RlPiBuKQogewotICAgIG1fY2FwdHVy
aW5nTW91c2VFdmVudHNFbGVtZW50ID0gZWxlbWVudDsKLSAgICBtX2V2ZW50SGFuZGxlcldpbGxS
ZXNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IGZhbHNlOworICAgIG1fY2FwdHVyaW5n
TW91c2VFdmVudHNOb2RlID0gbjsKKyAgICBtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmlu
Z01vdXNlRXZlbnRzTm9kZSA9IGZhbHNlOwogfQogCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzIEV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbWV2KQpAQCAtMjIyOSwyMiArMjIy
OSwxOSBAQCBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2VBc3NvY2lh
dGVkV2l0aFNoYWRvd1RyZWVFbGVtZW50KE5vZGUqCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRh
dGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIG1vdXNlRXZlbnQsIGJvb2wgZmlyZU1vdXNlT3Zlck91dCkKIHsKLSAgICBFbGVt
ZW50KiB0YXJnZXRFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBOb2RlKiByZXN1bHQgPSB0YXJnZXRO
b2RlOwogICAgIAotICAgIC8vIElmIHdlJ3JlIGNhcHR1cmluZywgd2UgYWx3YXlzIGdvIHJpZ2h0
IHRvIHRoYXQgZWxlbWVudC4KLSAgICBpZiAobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQp
Ci0gICAgICAgIHRhcmdldEVsZW1lbnQgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5n
ZXQoKTsKLSAgICBlbHNlIGlmICh0YXJnZXROb2RlKSB7Ci0gICAgICAgIC8vIElmIHRoZSB0YXJn
ZXQgbm9kZSBpcyBhIG5vbi1lbGVtZW50LCBkaXNwYXRjaCBvbiB0aGUgcGFyZW50LiA8cmRhcjov
L3Byb2JsZW0vNDE5NjY0Nj4KLSAgICAgICAgaWYgKCF0YXJnZXROb2RlLT5pc0VsZW1lbnROb2Rl
KCkpCi0gICAgICAgICAgICB0YXJnZXRFbGVtZW50ID0gdGFyZ2V0Tm9kZS0+cGFyZW50T3JTaGFk
b3dIb3N0RWxlbWVudCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0YXJnZXRFbGVtZW50
ID0gdG9FbGVtZW50KHRhcmdldE5vZGUpOworICAgIC8vIElmIHdlJ3JlIGNhcHR1cmluZywgd2Ug
YWx3YXlzIGdvIHJpZ2h0IHRvIHRoYXQgbm9kZS4KKyAgICBpZiAobV9jYXB0dXJpbmdNb3VzZUV2
ZW50c05vZGUpCisgICAgICAgIHJlc3VsdCA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNOb2RlLmdl
dCgpOworICAgIGVsc2UgeworICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IG5vZGUgaXMgYSB0ZXh0
IG5vZGUsIGRpc3BhdGNoIG9uIHRoZSBwYXJlbnQgbm9kZSAtIHJkYXI6Ly80MTk2NjQ2CisgICAg
ICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LT5pc1RleHROb2RlKCkpCisgICAgICAgICAgICByZXN1
bHQgPSByZXN1bHQtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKTsKICAgICB9Ci0KLSAgICBt
X2VsZW1lbnRVbmRlck1vdXNlID0gdGFyZ2V0RWxlbWVudDsKKyAgICBtX25vZGVVbmRlck1vdXNl
ID0gcmVzdWx0OwogI2lmIEVOQUJMRShTVkcpCi0gICAgbV9pbnN0YW5jZVVuZGVyTW91c2UgPSBp
bnN0YW5jZUFzc29jaWF0ZWRXaXRoU2hhZG93VHJlZUVsZW1lbnQodGFyZ2V0RWxlbWVudCk7Cisg
ICAgbV9pbnN0YW5jZVVuZGVyTW91c2UgPSBpbnN0YW5jZUFzc29jaWF0ZWRXaXRoU2hhZG93VHJl
ZUVsZW1lbnQocmVzdWx0KTsKIAogICAgIC8vIDx1c2U+IHNoYWRvdyB0cmVlIGVsZW1lbnRzIG1h
eSBoYXZlIGJlZW4gcmVjbG9uZWQsIHVwZGF0ZSBub2RlIHVuZGVyIG1vdXNlIGluIGFueSBjYXNl
CiAgICAgaWYgKG1fbGFzdEluc3RhbmNlVW5kZXJNb3VzZSkgewpAQCAtMjI2NywxMCArMjI2NCwx
MCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSog
dGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gaW5z
dGFuY2UtPnNoYWRvd1RyZWVFbGVtZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzaGFkb3dU
cmVlRWxlbWVudC0+aW5Eb2N1bWVudCgpIHx8IG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlID09IHNo
YWRvd1RyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIGlmICghc2hhZG93VHJlZUVsZW1lbnQt
PmluRG9jdW1lbnQoKSB8fCBtX2xhc3ROb2RlVW5kZXJNb3VzZSA9PSBzaGFkb3dUcmVlRWxlbWVu
dCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBtX2xh
c3RFbGVtZW50VW5kZXJNb3VzZSA9IHNoYWRvd1RyZWVFbGVtZW50OworICAgICAgICAgICAgICAg
IG1fbGFzdE5vZGVVbmRlck1vdXNlID0gc2hhZG93VHJlZUVsZW1lbnQ7CiAgICAgICAgICAgICAg
ICAgbV9sYXN0SW5zdGFuY2VVbmRlck1vdXNlID0gaW5zdGFuY2U7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yMjgwLDE5ICsyMjc3LDE5IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2RlLCBjb25z
dCBQbGF0Zm9ybU1vCiAKICAgICAvLyBGaXJlIG1vdXNlb3V0L21vdXNlb3ZlciBpZiB0aGUgbW91
c2UgaGFzIHNoaWZ0ZWQgdG8gYSBkaWZmZXJlbnQgbm9kZS4KICAgICBpZiAoZmlyZU1vdXNlT3Zl
ck91dCkgewotICAgICAgICBSZW5kZXJMYXllciogbGF5ZXJGb3JMYXN0Tm9kZSA9IGxheWVyRm9y
Tm9kZShtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS5nZXQoKSk7Ci0gICAgICAgIFJlbmRlckxheWVy
KiBsYXllckZvck5vZGVVbmRlck1vdXNlID0gbGF5ZXJGb3JOb2RlKG1fZWxlbWVudFVuZGVyTW91
c2UuZ2V0KCkpOworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXJGb3JMYXN0Tm9kZSA9IGxheWVy
Rm9yTm9kZShtX2xhc3ROb2RlVW5kZXJNb3VzZS5nZXQoKSk7CisgICAgICAgIFJlbmRlckxheWVy
KiBsYXllckZvck5vZGVVbmRlck1vdXNlID0gbGF5ZXJGb3JOb2RlKG1fbm9kZVVuZGVyTW91c2Uu
Z2V0KCkpOwogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAKLSAgICAgICAg
aWYgKG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlICYmICghbV9lbGVtZW50VW5kZXJNb3VzZSB8fCAm
bV9lbGVtZW50VW5kZXJNb3VzZS0+ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLmRvY3VtZW50KCkpKSB7
CisgICAgICAgIGlmIChtX2xhc3ROb2RlVW5kZXJNb3VzZSAmJiAoIW1fbm9kZVVuZGVyTW91c2Ug
fHwgJm1fbm9kZVVuZGVyTW91c2UtPmRvY3VtZW50KCkgIT0gbV9mcmFtZS5kb2N1bWVudCgpKSkg
ewogICAgICAgICAgICAgLy8gVGhlIG1vdXNlIGhhcyBtb3ZlZCBiZXR3ZWVuIGZyYW1lcy4KLSAg
ICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS0+ZG9j
dW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9sYXN0
Tm9kZVVuZGVyTW91c2UtPmRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGlm
IChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCiAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lVmlldy0+bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHBhZ2UgJiYgKGxheWVyRm9yTGFzdE5vZGUgJiYgKCFsYXllckZv
ck5vZGVVbmRlck1vdXNlIHx8IGxheWVyRm9yTm9kZVVuZGVyTW91c2UgIT0gbGF5ZXJGb3JMYXN0
Tm9kZSkpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbW91c2UgaGFzIG1vdmVkIGJldHdlZW4gbGF5
ZXJzLgotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fbGFzdEVsZW1lbnRVbmRlck1v
dXNlLT5kb2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSBtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT5jb250YWluc1Njcm9sbGFibGVBcmVhKGxheWVy
Rm9yTGFzdE5vZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJGb3JMYXN0Tm9kZS0+
bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpOwpAQCAtMjMwMCwxNSArMjI5NywxNSBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwg
Y29uc3QgUGxhdGZvcm1NbwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG1fZWxlbWVudFVuZGVyTW91c2UgJiYgKCFtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSB8fCAmbV9s
YXN0RWxlbWVudFVuZGVyTW91c2UtPmRvY3VtZW50KCkgIT0gbV9mcmFtZS5kb2N1bWVudCgpKSkg
eworICAgICAgICBpZiAobV9ub2RlVW5kZXJNb3VzZSAmJiAoIW1fbGFzdE5vZGVVbmRlck1vdXNl
IHx8ICZtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLmRvY3VtZW50
KCkpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbW91c2UgaGFzIG1vdmVkIGJldHdlZW4gZnJhbWVz
LgotICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZWxlbWVudFVuZGVyTW91c2UtPmRv
Y3VtZW50KCkuZnJhbWUoKSkgeworICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fbm9k
ZVVuZGVyTW91c2UtPmRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGlmIChG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCiAgICAgICAgICAgICAgICAgICAg
IGZyYW1lVmlldy0+bW91c2VFbnRlcmVkQ29udGVudEFyZWEoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChwYWdlICYmIChsYXllckZvck5vZGVVbmRlck1vdXNlICYmICghbGF5
ZXJGb3JMYXN0Tm9kZSB8fCBsYXllckZvck5vZGVVbmRlck1vdXNlICE9IGxheWVyRm9yTGFzdE5v
ZGUpKSkgewogICAgICAgICAgICAgLy8gVGhlIG1vdXNlIGhhcyBtb3ZlZCBiZXR3ZWVuIGxheWVy
cy4KLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2VsZW1lbnRVbmRlck1vdXNlLT5k
b2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX25v
ZGVVbmRlck1vdXNlLT5kb2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChmcmFtZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEobGF5ZXJGb3JOb2RlVW5k
ZXJNb3VzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckZvck5vZGVVbmRlck1vdXNl
LT5tb3VzZUVudGVyZWRDb250ZW50QXJlYSgpOwpAQCAtMjMxNiwyNSArMjMxMywyNSBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgUGxhdGZvcm1NbwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlICYmICZtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS0+
ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLmRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgIG1fbGFzdEVs
ZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fbGFzdE5vZGVVbmRlck1v
dXNlICYmICZtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZG9jdW1lbnQoKSAhPSBtX2ZyYW1lLmRvY3Vt
ZW50KCkpIHsKKyAgICAgICAgICAgIG1fbGFzdE5vZGVVbmRlck1vdXNlID0gMDsKICAgICAgICAg
ICAgIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UgPSAwOwogI2lmIEVOQUJMRShTVkcpCiAgICAg
ICAgICAgICBtX2xhc3RJbnN0YW5jZVVuZGVyTW91c2UgPSAwOwogI2VuZGlmCiAgICAgICAgIH0K
IAotICAgICAgICBpZiAobV9sYXN0RWxlbWVudFVuZGVyTW91c2UgIT0gbV9lbGVtZW50VW5kZXJN
b3VzZSkgeworICAgICAgICBpZiAobV9sYXN0Tm9kZVVuZGVyTW91c2UgIT0gbV9ub2RlVW5kZXJN
b3VzZSkgewogICAgICAgICAgICAgLy8gc2VuZCBtb3VzZW91dCBldmVudCB0byB0aGUgb2xkIG5v
ZGUKLSAgICAgICAgICAgIGlmIChtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSkKLSAgICAgICAgICAg
ICAgICBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZl
bnQsIGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50LCAwLCBtX2VsZW1lbnRVbmRlck1vdXNlLmdl
dCgpKTsKKyAgICAgICAgICAgIGlmIChtX2xhc3ROb2RlVW5kZXJNb3VzZSkKKyAgICAgICAgICAg
ICAgICBtX2xhc3ROb2RlVW5kZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZlbnQs
IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50LCAwLCBtX25vZGVVbmRlck1vdXNlLmdldCgpKTsK
ICAgICAgICAgICAgIC8vIHNlbmQgbW91c2VvdmVyIGV2ZW50IHRvIHRoZSBuZXcgbm9kZQotICAg
ICAgICAgICAgaWYgKG1fZWxlbWVudFVuZGVyTW91c2UpCi0gICAgICAgICAgICAgICAgbV9lbGVt
ZW50VW5kZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCwgMCwgbV9sYXN0RWxlbWVudFVuZGVyTW91c2UuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKG1fbm9kZVVuZGVyTW91c2UpCisgICAgICAgICAgICAgICAgbV9ub2RlVW5k
ZXJNb3VzZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIGV2ZW50TmFtZXMoKS5tb3Vz
ZW92ZXJFdmVudCwgMCwgbV9sYXN0Tm9kZVVuZGVyTW91c2UuZ2V0KCkpOwogICAgICAgICB9Ci0g
ICAgICAgIG1fbGFzdEVsZW1lbnRVbmRlck1vdXNlID0gbV9lbGVtZW50VW5kZXJNb3VzZTsKKyAg
ICAgICAgbV9sYXN0Tm9kZVVuZGVyTW91c2UgPSBtX25vZGVVbmRlck1vdXNlOwogI2lmIEVOQUJM
RShTVkcpCi0gICAgICAgIG1fbGFzdEluc3RhbmNlVW5kZXJNb3VzZSA9IGluc3RhbmNlQXNzb2Np
YXRlZFdpdGhTaGFkb3dUcmVlRWxlbWVudChtX2VsZW1lbnRVbmRlck1vdXNlLmdldCgpKTsKKyAg
ICAgICAgbV9sYXN0SW5zdGFuY2VVbmRlck1vdXNlID0gaW5zdGFuY2VBc3NvY2lhdGVkV2l0aFNo
YWRvd1RyZWVFbGVtZW50KG1fbm9kZVVuZGVyTW91c2UuZ2V0KCkpOwogI2VuZGlmCiAgICAgfQog
fQpAQCAtMjM0OCw4ICsyMzQ1LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2UKIAogICAgIGJv
b2wgc3dhbGxvd0V2ZW50ID0gZmFsc2U7CiAKLSAgICBpZiAobV9lbGVtZW50VW5kZXJNb3VzZSkK
LSAgICAgICAgc3dhbGxvd0V2ZW50ID0gIShtX2VsZW1lbnRVbmRlck1vdXNlLT5kaXNwYXRjaE1v
dXNlRXZlbnQobW91c2VFdmVudCwgZXZlbnRUeXBlLCBjbGlja0NvdW50KSk7CisgICAgaWYgKG1f
bm9kZVVuZGVyTW91c2UpCisgICAgICAgIHN3YWxsb3dFdmVudCA9ICEobV9ub2RlVW5kZXJNb3Vz
ZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNlRXZlbnQsIGV2ZW50VHlwZSwgY2xpY2tDb3VudCkp
OwogCiAgICAgaWYgKCFzd2FsbG93RXZlbnQgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5t
b3VzZWRvd25FdmVudCkgewogCkBAIC0yMzY2LDcgKzIzNjMsMTEgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9k
ZSogdGFyZ2UKICAgICAgICAgLy8gaXMgZXhwZWN0ZWQgYnkgc29tZSBzaXRlcyB0aGF0IHJlbHkg
b24gb25DaGFuZ2UgaGFuZGxlcnMgcnVubmluZwogICAgICAgICAvLyBmcm9tIGZvcm0gZmllbGRz
IGJlZm9yZSB0aGUgYnV0dG9uIGNsaWNrIGlzIHByb2Nlc3NlZC4KIAotICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gbV9lbGVtZW50VW5kZXJNb3VzZS5nZXQoKTsKKyAgICAgICAgRWxlbWVudCog
ZWxlbWVudDsKKyAgICAgICAgaWYgKG1fbm9kZVVuZGVyTW91c2UpCisgICAgICAgICAgICBlbGVt
ZW50ID0gbV9ub2RlVW5kZXJNb3VzZS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG1fbm9k
ZVVuZGVyTW91c2UuZ2V0KCkpIDogbV9ub2RlVW5kZXJNb3VzZS0+cGFyZW50T3JTaGFkb3dIb3N0
RWxlbWVudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbGVtZW50ID0gMDsKIAogICAg
ICAgICAvLyBXYWxrIHVwIHRoZSBET00gdHJlZSB0byBzZWFyY2ggZm9yIGFuIGVsZW1lbnQgdG8g
Zm9jdXMuCiAgICAgICAgIHdoaWxlIChlbGVtZW50KSB7CkBAIC0zNzI1LDcgKzM3MjYsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aXNLZXlib2FyZE9wdGlvblRhYihLZXlib2FyZEV2ZW50KiBldmVu
dCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50SW52ZXJ0c1RhYnNUb0xpbmtzQ2xpZW50Q2Fs
bFJlc3VsdChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9S
TShFRkwpCiAgICAgcmV0dXJuIEV2ZW50SGFuZGxlcjo6aXNLZXlib2FyZE9wdGlvblRhYihldmVu
dCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CmluZGV4IDgwM2EyM2Y1Li42ZTk4MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtb3VzZVByZXNzZWQoKSBjb25z
dCB7IHJldHVybiBtX21vdXNlUHJlc3NlZDsgfQogICAgIHZvaWQgc2V0TW91c2VQcmVzc2VkKGJv
b2wgcHJlc3NlZCkgeyBtX21vdXNlUHJlc3NlZCA9IHByZXNzZWQ7IH0KIAotICAgIHZvaWQgc2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4pOyAvLyBBIGNh
bGxlciBpcyByZXNwb25zaWJsZSBmb3IgcmVzZXR0aW5nIGNhcHR1cmluZyBlbGVtZW50IHRvIDAu
CisgICAgdm9pZCBzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoUGFzc1JlZlB0cjxOb2RlPik7
IC8vIEEgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZXNldHRpbmcgY2FwdHVyaW5nIG5vZGUg
dG8gMC4KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCB1cGRhdGVEcmFnQW5k
RHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBDbGlwYm9hcmQqKTsKQEAgLTQ0OCwxMSAr
NDQ4LDExIEBAIHByaXZhdGU6CiAKICAgICBSZW5kZXJMYXllciogbV9yZXNpemVMYXllcjsKIAot
ICAgIFJlZlB0cjxFbGVtZW50PiBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudDsKLSAgICBi
b29sIG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50Owor
ICAgIFJlZlB0cjxOb2RlPiBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZTsKKyAgICBib29sIG1f
ZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlOwogICAgIAotICAg
IFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnRVbmRlck1vdXNlOwotICAgIFJlZlB0cjxFbGVtZW50
PiBtX2xhc3RFbGVtZW50VW5kZXJNb3VzZTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVW5kZXJN
b3VzZTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9sYXN0Tm9kZVVuZGVyTW91c2U7CiAgICAgUmVmUHRy
PEZyYW1lPiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lOwogICAgIFJlZlB0cjxTY3JvbGxi
YXI+IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2U7CiAgICAgQ3Vyc29yIG1fY3VycmVudE1vdXNl
Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IGZiN2Q5YmQuLjc0NzdlNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRh
YmxlTG9hZGVyOwogCi1jbGFzcyBFdmVudFNvdXJjZSBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVk
PEV2ZW50U291cmNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHByaXZhdGUg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CisvLyBGSVhN
RTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KK2NsYXNzIEV2ZW50U291cmNlIDogcHVibGljIFJlZkNv
dW50ZWQ8RXZlbnRTb3VyY2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHJp
dmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxFdmVudFNvdXJjZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc1LDIxICs3
NiwyMSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxFdmVudFNvdXJjZT46OnJlZjsK
ICAgICB1c2luZyBSZWZDb3VudGVkPEV2ZW50U291cmNlPjo6ZGVyZWY7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gRXZlbnRTb3VyY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBFdmVudFNvdXJjZUV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgRXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIGNv
bnN0IERpY3Rpb25hcnkmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9W
RVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcsIGRvdWJsZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsQWNjZXNzQ29u
dHJvbENoZWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIGludCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VFcnJvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogCiAgICAgdmlydHVhbCB2
b2lkIHN0b3AoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyZmI3M2M5Li4y
MTAxMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNTM1LDEyICs1MzUsMTIgQEAgdm9pZCBG
cmFtZTo6aW5qZWN0VXNlclNjcmlwdHMoVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9u
VGltZSkKICAgICBjb25zdCBVc2VyU2NyaXB0TWFwKiB1c2VyU2NyaXB0cyA9IG1fcGFnZS0+Z3Jv
dXAoKS51c2VyU2NyaXB0cygpOwogICAgIGlmICghdXNlclNjcmlwdHMpCiAgICAgICAgIHJldHVy
bjsKLQotICAgIGZvciAoYXV0byBpdCA9IHVzZXJTY3JpcHRzLT5iZWdpbigpLCBlbmQgPSB1c2Vy
U2NyaXB0cy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaW5qZWN0VXNlclNjcmlw
dHNGb3JXb3JsZCgqaXQtPmtleS5nZXQoKSwgKml0LT52YWx1ZSwgaW5qZWN0aW9uVGltZSk7Cisg
ICAgVXNlclNjcmlwdE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdXNlclNjcmlwdHMtPmVuZCgp
OworICAgIGZvciAoVXNlclNjcmlwdE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB1c2VyU2NyaXB0
cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpbmplY3RVc2VyU2NyaXB0c0Zv
cldvcmxkKGl0LT5rZXkuZ2V0KCksICppdC0+dmFsdWUsIGluamVjdGlvblRpbWUpOwogfQogCi12
b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIGNvbnN0IFVzZXJTY3JpcHRWZWN0b3ImIHVzZXJTY3JpcHRzLCBVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lKQordm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHNGb3JX
b3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0VmVjdG9yJiB1c2Vy
U2NyaXB0cywgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKICAgICBp
ZiAodXNlclNjcmlwdHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
aW5kZXggYjhiODA2YS4uNWFiNzk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjA1LDcgKzIwNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWUoUGFnZSYsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Jik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2b2lkIGluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgY29uc3Qg
VXNlclNjcmlwdFZlY3RvciYsIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICAgICAgdm9p
ZCBpbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVzZXJT
Y3JpcHRWZWN0b3ImLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAKICAgICAgICAgSGFzaFNl
dDxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMDFhZDY5ZS4uN2Q2MGQwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjA3OCwyMyArMjA3OCwxNyBAQCBIb3N0V2luZG93KiBG
cmFtZVZpZXc6Omhvc3RXaW5kb3coKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEZy
YW1lVmlldzo6YWRkVHJhY2tlZFJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIHIpCi17Ci0gICAg
aWYgKCFtX2lzVHJhY2tpbmdSZXBhaW50cyB8fCByLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgSW50UmVjdCByZXBhaW50UmVjdCA9IHI7Ci0gICAgcmVwYWludFJlY3QubW92ZSgt
c2Nyb2xsT2Zmc2V0KCkpOwotICAgIG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5hcHBlbmQocmVwYWlu
dFJlY3QpOwotfQotCiBjb25zdCB1bnNpZ25lZCBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZCA9
IDI1OwogCiB2b2lkIEZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUoY29uc3QgSW50
UmVjdCYgciwgYm9vbCBpbW1lZGlhdGUpCiB7CiAgICAgQVNTRVJUKCFmcmFtZSgpLm93bmVyRWxl
bWVudCgpKTsKIAotICAgIGFkZFRyYWNrZWRSZXBhaW50UmVjdChyKTsKKyAgICBpZiAobV9pc1Ry
YWNraW5nUmVwYWludHMpIHsKKyAgICAgICAgSW50UmVjdCByZXBhaW50UmVjdCA9IHI7CisgICAg
ICAgIHJlcGFpbnRSZWN0Lm1vdmUoLXNjcm9sbE9mZnNldCgpKTsKKyAgICAgICAgbV90cmFja2Vk
UmVwYWludFJlY3RzLmFwcGVuZChyZXBhaW50UmVjdCk7CisgICAgfQogCiAgICAgZG91YmxlIGRl
bGF5ID0gbV9kZWZlcnJpbmdSZXBhaW50cyA/IDAgOiBhZGp1c3RlZERlZmVycmVkUmVwYWludERl
bGF5KCk7CiAgICAgaWYgKChtX2RlZmVycmluZ1JlcGFpbnRzIHx8IG1fZGVmZXJyZWRSZXBhaW50
VGltZXIuaXNBY3RpdmUoKSB8fCBkZWxheSkgJiYgIWltbWVkaWF0ZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggYmQyYmMxOS4uN2MzMTgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CkBAIC00MzUsOCArNDM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQWRkV2lkZ2V0VG9SZW5k
ZXJUcmVlKFdpZGdldCYpOwogICAgIHZvaWQgd2lsbFJlbW92ZVdpZGdldEZyb21SZW5kZXJUcmVl
KFdpZGdldCYpOwogCi0gICAgdm9pZCBhZGRUcmFja2VkUmVwYWludFJlY3QoY29uc3QgSW50UmVj
dCYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBh
dGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9s
bCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxDb250ZW50c1Nsb3dQYXRoKGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpIE9WRVJSSURF
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Hcm91cFNldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dyb3VwU2V0dGluZ3MuaAppbmRleCBlMDk0ZjA5Li42MDNkMDZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dyb3VwU2V0dGluZ3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dyb3VwU2V0dGluZ3MuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBHcm91cFNldHRpbmdzX2gKICNkZWZpbmUgR3JvdXBTZXR0aW5nc19oCiAKKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw3ICszNiwxMCBAQCBjbGFzcyBQYWdlR3JvdXA7CiBjbGFz
cyBHcm91cFNldHRpbmdzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcm91cFNldHRpbmdz
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgR3JvdXBTZXR0aW5ncygp
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyb3VwU2V0dGluZ3MoKSk7CisgICAgfQogCiAg
ICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VRdW90YUJ5dGVzKHVuc2lnbmVkKTsKICAgICB1bnNpZ25l
ZCBsb2NhbFN0b3JhZ2VRdW90YUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VR
dW90YUJ5dGVzOyB9CkBAIC00Nyw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcm
IGluZGV4ZWREQkRhdGFiYXNlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJh
c2VQYXRoOyB9CiAKIHByaXZhdGU6CisgICAgR3JvdXBTZXR0aW5ncygpOworCiAgICAgdW5zaWdu
ZWQgbV9sb2NhbFN0b3JhZ2VRdW90YUJ5dGVzOwogICAgIFN0cmluZyBtX2luZGV4ZWREQkRhdGFi
YXNlUGF0aDsKICAgICBpbnQ2NF90IG1faW5kZXhlZERCUXVvdGFCeXRlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDA2ZGI0ZGEuLmZiM2JkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDM0LDcg
KzQzNCw3IEBAIHZvaWQgUGFnZTo6c2V0R3JvdXBOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICBpZiAobV9ncm91cCAmJiAhbV9ncm91cC0+bmFtZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBB
U1NFUlQobV9ncm91cCAhPSBtX3NpbmdsZVBhZ2VHcm91cC5nZXQoKSk7CiAgICAgICAgIEFTU0VS
VCghbV9zaW5nbGVQYWdlR3JvdXApOwotICAgICAgICBtX2dyb3VwLT5yZW1vdmVQYWdlKCp0aGlz
KTsKKyAgICAgICAgbV9ncm91cC0+cmVtb3ZlUGFnZSh0aGlzKTsKICAgICB9CiAKICAgICBpZiAo
bmFtZS5pc0VtcHR5KCkpCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBQYWdlOjpzZXRHcm91cE5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGVsc2UgewogICAgICAgICBtX3NpbmdsZVBhZ2VH
cm91cCA9IG51bGxwdHI7CiAgICAgICAgIG1fZ3JvdXAgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChu
YW1lKTsKLSAgICAgICAgbV9ncm91cC0+YWRkUGFnZSgqdGhpcyk7CisgICAgICAgIG1fZ3JvdXAt
PmFkZFBhZ2UodGhpcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5k
ZXggYTZhYTc3NS4uOTE2Y2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtMzgs
NyArMzgsNiBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2lmIChQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShJT1MpKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JL
KQpAQCAtNjQsMTYgKzYzLDE2IEBAIFBhZ2VHcm91cDo6UGFnZUdyb3VwKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICA6IG1fbmFtZShuYW1lKQogICAgICwgbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQo
ZmFsc2UpCiAgICAgLCBtX2lkZW50aWZpZXIoZ2V0VW5pcXVlSWRlbnRpZmllcigpKQotICAgICwg
bV9ncm91cFNldHRpbmdzKHN0ZDo6bWFrZV91bmlxdWU8R3JvdXBTZXR0aW5ncz4oKSkKKyAgICAs
IG1fZ3JvdXBTZXR0aW5ncyhHcm91cFNldHRpbmdzOjpjcmVhdGUoKSkKIHsKIH0KIAogUGFnZUdy
b3VwOjpQYWdlR3JvdXAoUGFnZSYgcGFnZSkKICAgICA6IG1fdmlzaXRlZExpbmtzUG9wdWxhdGVk
KGZhbHNlKQogICAgICwgbV9pZGVudGlmaWVyKGdldFVuaXF1ZUlkZW50aWZpZXIoKSkKLSAgICAs
IG1fZ3JvdXBTZXR0aW5ncyhzdGQ6Om1ha2VfdW5pcXVlPEdyb3VwU2V0dGluZ3M+KCkpCisgICAg
LCBtX2dyb3VwU2V0dGluZ3MoR3JvdXBTZXR0aW5nczo6Y3JlYXRlKCkpCiB7Ci0gICAgYWRkUGFn
ZShwYWdlKTsKKyAgICBhZGRQYWdlKCZwYWdlKTsKIH0KIAogUGFnZUdyb3VwOjp+UGFnZUdyb3Vw
KCkKQEAgLTEwNyw3ICsxMDYsOSBAQCB2b2lkIFBhZ2VHcm91cDo6Y2xvc2VMb2NhbFN0b3JhZ2Uo
KQogICAgIGlmICghcGFnZUdyb3VwcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRv
IGl0ID0gcGFnZUdyb3Vwcy0+YmVnaW4oKSwgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgIFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vw
cy0+ZW5kKCk7CisKKyAgICBmb3IgKFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IgaXQgPSBwYWdlR3Jv
dXBzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+
aGFzTG9jYWxTdG9yYWdlKCkpCiAgICAgICAgICAgICBpdC0+dmFsdWUtPmxvY2FsU3RvcmFnZSgp
LT5jbG9zZSgpOwogICAgIH0KQEAgLTExOCw3ICsxMTksOCBAQCB2b2lkIFBhZ2VHcm91cDo6Y2xl
YXJMb2NhbFN0b3JhZ2VGb3JBbGxPcmlnaW5zKCkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCksIGVu
ZCA9IHBhZ2VHcm91cHMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBQYWdlR3JvdXBN
YXA6Oml0ZXJhdG9yIGVuZCA9IHBhZ2VHcm91cHMtPmVuZCgpOworICAgIGZvciAoUGFnZUdyb3Vw
TWFwOjppdGVyYXRvciBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5oYXNMb2NhbFN0b3JhZ2UoKSkKICAgICAgICAgICAg
IGl0LT52YWx1ZS0+bG9jYWxTdG9yYWdlKCktPmNsZWFyQWxsT3JpZ2luc0ZvckRlbGV0aW9uKCk7
CiAgICAgfQpAQCAtMTI5LDcgKzEzMSw4IEBAIHZvaWQgUGFnZUdyb3VwOjpjbGVhckxvY2FsU3Rv
cmFnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIGlmICghcGFnZUdyb3Vw
cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvIGl0ID0gcGFnZUdyb3Vwcy0+YmVn
aW4oKSwgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIFBh
Z2VHcm91cE1hcDo6aXRlcmF0b3IgZW5kID0gcGFnZUdyb3Vwcy0+ZW5kKCk7CisgICAgZm9yIChQ
YWdlR3JvdXBNYXA6Oml0ZXJhdG9yIGl0ID0gcGFnZUdyb3Vwcy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPmhhc0xvY2FsU3RvcmFnZSgpKQogICAg
ICAgICAgICAgaXQtPnZhbHVlLT5sb2NhbFN0b3JhZ2UoKS0+Y2xlYXJPcmlnaW5Gb3JEZWxldGlv
bihvcmlnaW4pOwogICAgIH0KQEAgLTE0MCw3ICsxNDMsOCBAQCB2b2lkIFBhZ2VHcm91cDo6Y2xv
c2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzKCkKICAgICBpZiAoIXBhZ2VHcm91cHMpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCksIGVu
ZCA9IHBhZ2VHcm91cHMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBQYWdlR3JvdXBN
YXA6Oml0ZXJhdG9yIGVuZCA9IHBhZ2VHcm91cHMtPmVuZCgpOworICAgIGZvciAoUGFnZUdyb3Vw
TWFwOjppdGVyYXRvciBpdCA9IHBhZ2VHcm91cHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5oYXNMb2NhbFN0b3JhZ2UoKSkKICAgICAgICAgICAg
IGl0LT52YWx1ZS0+bG9jYWxTdG9yYWdlKCktPmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNl
cygpOwogICAgIH0KQEAgLTE1MSw3ICsxNTUsOCBAQCB2b2lkIFBhZ2VHcm91cDo6c3luY0xvY2Fs
U3RvcmFnZSgpCiAgICAgaWYgKCFwYWdlR3JvdXBzKQogICAgICAgICByZXR1cm47CiAKLSAgICBm
b3IgKGF1dG8gaXQgPSBwYWdlR3JvdXBzLT5iZWdpbigpLCBlbmQgPSBwYWdlR3JvdXBzLT5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgUGFnZUdyb3VwTWFwOjppdGVyYXRvciBlbmQgPSBw
YWdlR3JvdXBzLT5lbmQoKTsKKyAgICBmb3IgKFBhZ2VHcm91cE1hcDo6aXRlcmF0b3IgaXQgPSBw
YWdlR3JvdXBzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52
YWx1ZS0+aGFzTG9jYWxTdG9yYWdlKCkpCiAgICAgICAgICAgICBpdC0+dmFsdWUtPmxvY2FsU3Rv
cmFnZSgpLT5zeW5jKCk7CiAgICAgfQpAQCAtMTY1LDE2ICsxNzAsMTggQEAgdW5zaWduZWQgUGFn
ZUdyb3VwOjpudW1iZXJPZlBhZ2VHcm91cHMoKQogICAgIHJldHVybiBwYWdlR3JvdXBzLT5zaXpl
KCk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRQYWdlKFBhZ2UmIHBhZ2UpCit2b2lkIFBhZ2VH
cm91cDo6YWRkUGFnZShQYWdlKiBwYWdlKQogewotICAgIEFTU0VSVCghbV9wYWdlcy5jb250YWlu
cygmcGFnZSkpOwotICAgIG1fcGFnZXMuYWRkKCZwYWdlKTsKKyAgICBBU1NFUlQocGFnZSk7Cisg
ICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKHBhZ2UpKTsKKyAgICBtX3BhZ2VzLmFkZChwYWdl
KTsKIH0KIAotdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVBhZ2UoUGFnZSYgcGFnZSkKK3ZvaWQgUGFn
ZUdyb3VwOjpyZW1vdmVQYWdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZXMuY29u
dGFpbnMoJnBhZ2UpKTsKLSAgICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7CisgICAgQVNTRVJUKHBh
Z2UpOworICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKHBhZ2UpKTsKKyAgICBtX3BhZ2VzLnJl
bW92ZShwYWdlKTsKIH0KIAogYm9vbCBQYWdlR3JvdXA6OmlzTGlua1Zpc2l0ZWQoTGlua0hhc2gg
dmlzaXRlZExpbmtIYXNoKQpAQCAtMjYwLDQxICsyNjcsNTMgQEAgU3RvcmFnZU5hbWVzcGFjZSog
UGFnZUdyb3VwOjp0cmFuc2llbnRMb2NhbFN0b3JhZ2UoU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bikKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotdm9pZCBQ
YWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdElu
amVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcykKK3ZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFw
cGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rp
b25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAg
IGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1
cmwsIHdoaXRlbGlzdCwgYmxhY2tsaXN0LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7
CisgICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOworCisgICAgT3duUHRyPFVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQgPSBhZG9wdFB0cihuZXcgVXNlclNjcmlwdChzb3VyY2UsIHVybCwgd2hpdGVs
aXN0LCBibGFja2xpc3QsIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKSk7CiAgICAgaWYg
KCFtX3VzZXJTY3JpcHRzKQotICAgICAgICBtX3VzZXJTY3JpcHRzID0gc3RkOjptYWtlX3VuaXF1
ZTxVc2VyU2NyaXB0TWFwPigpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0VmVjdG9y
PiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLT5hZGQoJndvcmxkLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgICAgIG1fdXNlclNjcmlwdHMgPSBhZG9wdFB0cihuZXcgVXNl
clNjcmlwdE1hcCk7CisgICAgT3duUHRyPFVzZXJTY3JpcHRWZWN0b3I+JiBzY3JpcHRzSW5Xb3Js
ZCA9IG1fdXNlclNjcmlwdHMtPmFkZCh3b3JsZCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghc2NyaXB0c0luV29ybGQpCi0gICAgICAgIHNjcmlwdHNJbldvcmxkID0gc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOwotICAgIHNjcmlwdHNJbldvcmxkLT5hcHBl
bmQoc3RkOjptb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICAgICAgc2NyaXB0c0luV29ybGQgPSBhZG9w
dFB0cihuZXcgVXNlclNjcmlwdFZlY3Rvcik7CisgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZCh1
c2VyU2NyaXB0LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVT
aGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVj
dGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lKQordm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1
cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVzZXJTdHlsZUxldmVsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7
Ci0gICAgYXV0byB1c2VyU3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hl
ZXQ+KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0ZWRGcmFtZXMsIGxl
dmVsKTsKKyAgICBBU1NFUlRfQVJHKHdvcmxkLCB3b3JsZCk7CisKKyAgICBPd25QdHI8VXNlclN0
eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0KHNv
dXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKSk7
CiAgICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cykKLSAgICAgICAgbV91c2VyU3R5bGVTaGVldHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0TWFwPigpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxVc2VyU3R5bGVTaGVldFZlY3Rvcj4mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0
eWxlU2hlZXRzLT5hZGQoJndvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAg
IG1fdXNlclN0eWxlU2hlZXRzID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0TWFwKTsKKyAg
ICBPd25QdHI8VXNlclN0eWxlU2hlZXRWZWN0b3I+JiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3Vz
ZXJTdHlsZVNoZWV0cy0+YWRkKHdvcmxkLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCi0gICAgICAgIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IHN0
ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7Ci0gICAgc3R5bGVTaGVldHNJ
bldvcmxkLT5hcHBlbmQoc3RkOjptb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CisgICAgICAgIHN0eWxl
U2hlZXRzSW5Xb3JsZCA9IGFkb3B0UHRyKG5ldyBVc2VyU3R5bGVTaGVldFZlY3Rvcik7CisgICAg
c3R5bGVTaGVldHNJbldvcmxkLT5hcHBlbmQodXNlclN0eWxlU2hlZXQucmVsZWFzZSgpKTsKIAog
ICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpCiAgICAg
ICAgIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAK
LXZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3Jp
cHRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgVVJMJiB1cmwpCiB7Cisg
ICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOworCiAgICAgaWYgKCFtX3VzZXJTY3JpcHRzKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGl0ID0gbV91c2VyU2NyaXB0cy0+ZmluZCgmd29y
bGQpOworICAgIFVzZXJTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV91c2VyU2NyaXB0cy0+Zmlu
ZCh3b3JsZCk7CiAgICAgaWYgKGl0ID09IG1fdXNlclNjcmlwdHMtPmVuZCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgYXV0byBzY3JpcHRzID0gaXQtPnZhbHVlLmdldCgpOworICAgIFVz
ZXJTY3JpcHRWZWN0b3IqIHNjcmlwdHMgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZm9yIChpbnQg
aSA9IHNjcmlwdHMtPnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIGlmIChzY3Jp
cHRzLT5hdChpKS0+dXJsKCkgPT0gdXJsKQogICAgICAgICAgICAgc2NyaXB0cy0+cmVtb3ZlKGkp
OwpAQCAtMzA0LDE3ICszMjMsMTkgQEAgdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3JpcHRG
cm9tV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVVJMJiB1cmwKICAgICAgICAg
bV91c2VyU2NyaXB0cy0+cmVtb3ZlKGl0KTsKIH0KIAotdm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVz
ZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYg
dXJsKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVSTCYgdXJsKQogeworICAgIEFTU0VSVF9BUkcod29y
bGQsIHdvcmxkKTsKKwogICAgIGlmICghbV91c2VyU3R5bGVTaGVldHMpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gaXQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+ZmluZCgmd29ybGQpOworICAg
IFVzZXJTdHlsZVNoZWV0TWFwOjppdGVyYXRvciBpdCA9IG1fdXNlclN0eWxlU2hlZXRzLT5maW5k
KHdvcmxkKTsKICAgICBib29sIHNoZWV0c0NoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAoaXQgPT0g
bV91c2VyU3R5bGVTaGVldHMtPmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0
byBzdHlsZXNoZWV0cyA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICBVc2VyU3R5bGVTaGVldFZlY3Rv
ciogc3R5bGVzaGVldHMgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZm9yIChpbnQgaSA9IHN0eWxl
c2hlZXRzLT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBpZiAoc3R5bGVzaGVl
dHMtPmF0KGkpLT51cmwoKSA9PSB1cmwpIHsKICAgICAgICAgICAgIHN0eWxlc2hlZXRzLT5yZW1v
dmUoaSk7CkBAIC0zMzEsMjAgKzM1MiwyNCBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0
eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVVJMJgogICAg
IGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKLXZv
aWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQm
IHdvcmxkKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKERPTVdy
YXBwZXJXb3JsZCogd29ybGQpCiB7CisgICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOworCiAg
ICAgaWYgKCFtX3VzZXJTY3JpcHRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3VzZXJTY3Jp
cHRzLT5yZW1vdmUoJndvcmxkKTsKKyAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUod29ybGQpOwog
fQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdy
YXBwZXJXb3JsZCYgd29ybGQpCit2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRz
RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CisgICAgQVNTRVJUX0FSRyh3b3Js
ZCwgd29ybGQpOworCiAgICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlKCZ3b3JsZCkpCisgICAgaWYg
KCFtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlKHdvcmxkKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKTsKQEAgLTM1
MiwxMCArMzc3LDEwIEBAIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9t
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIAogdm9pZCBQYWdlR3JvdXA6OnJlbW92ZUFs
bFVzZXJDb250ZW50KCkKIHsKLSAgICBtX3VzZXJTY3JpcHRzID0gbnVsbHB0cjsKKyAgICBtX3Vz
ZXJTY3JpcHRzLmNsZWFyKCk7CiAKICAgICBpZiAobV91c2VyU3R5bGVTaGVldHMpIHsKLSAgICAg
ICAgbV91c2VyU3R5bGVTaGVldHMgPSBudWxscHRyOworICAgICAgICBtX3VzZXJTdHlsZVNoZWV0
cy5jbGVhcigpOwogICAgICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFs
bEZyYW1lcygpOwogICAgIH0KIH0KQEAgLTM2Myw3ICszODgsOCBAQCB2b2lkIFBhZ2VHcm91cDo6
cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQogdm9pZCBQYWdlR3JvdXA6OmludmFsaWRhdGVJbmplY3Rl
ZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCkKIHsKICAgICAvLyBDbGVhciBvdXIgY2FjaGVk
IHNoZWV0cyBhbmQgaGF2ZSB0aGVtIGp1c3QgcmVwYXJzZS4KLSAgICBmb3IgKGF1dG8gaXQgPSBt
X3BhZ2VzLmJlZ2luKCksIGVuZCA9IG1fcGFnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BhZ2VzLmVuZCgpOwor
ICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wYWdlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmKCpp
dCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rp
b24oKS5pbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKICAgICAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsK
QEAgLTM3NCwyMyArNDAwLDIzIEBAIHZvaWQgUGFnZUdyb3VwOjppbnZhbGlkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogdm9p
ZCBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQogewotICAgIGZvciAoYXV0
byBpdCA9IG1fcGFnZXMuYmVnaW4oKSwgZW5kID0gbV9wYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICAoKml0KS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOworICAgIGZv
ciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGkgPSBtX3BhZ2VzLmJlZ2luKCk7IGkgIT0gbV9w
YWdlcy5lbmQoKTsgKytpKQorICAgICAgICAoKmkpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2Vk
KCk7CiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdlc0ZvckNhcHRpb25QcmVmZXJlbmNlc0NoYW5n
ZWQoKTsKIH0KIAogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogUGFnZUdyb3VwOjpjYXB0aW9uUHJl
ZmVyZW5jZXMoKQogewotICAgIGlmICghbV9jYXB0aW9uUHJlZmVyZW5jZXMpIHsKKyAgICBpZiAo
IW1fY2FwdGlvblByZWZlcmVuY2VzKQogI2lmIChQTEFURk9STShNQUMpICYmICFQTEFURk9STShJ
T1MpKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQotICAgICAgICBtX2Nh
cHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRjo6Y3JlYXRlKHRoaXMpOwogI2Vsc2UKLSAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpjcmVhdGUodGhpcyk7CiAjZW5kaWYKLSAgICB9CiAKICAgICByZXR1cm4gbV9j
YXB0aW9uUHJlZmVyZW5jZXMuZ2V0KCk7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAppbmRleCBjZmJjMGVkLi42MmEzMDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBjbGFzcyBDYXB0aW9uUHJlZmVy
ZW5jZXNDaGFuZ2VkTGlzdGVuZXI7CisgICAgY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczsK
KyNlbmRpZgogICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBHcm91cFNldHRpbmdzOwogICAgIGNs
YXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwpAQCAtNDMsMTEgKzQ3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFN0b3Jh
Z2VOYW1lc3BhY2U7CiAKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgY2xhc3MgQ2FwdGlv
blByZWZlcmVuY2VzQ2hhbmdlZExpc3RlbmVyOwotICAgIGNsYXNzIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM7Ci0jZW5kaWYKLQogICAgIGNsYXNzIFBhZ2VHcm91cCA6IHB1YmxpYyBTdXBwbGVtZW50
YWJsZTxQYWdlR3JvdXA+IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUdyb3Vw
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAtNjksOCArNjgsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBh
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlczsgfQogCi0gICAgICAgIHZvaWQgYWRkUGFnZShQ
YWdlJik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlJik7CisgICAgICAgIHZvaWQgYWRk
UGFnZShQYWdlKik7CisgICAgICAgIHZvaWQgcmVtb3ZlUGFnZShQYWdlKik7CiAKICAgICAgICAg
Ym9vbCBpc0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKIApAQCAtOTAsMTIgKzg5LDIwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTdG9yYWdlTmFtZXNwYWNlKiB0cmFuc2llbnRMb2Nh
bFN0b3JhZ2UoU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKLSAgICAgICAgdm9pZCBhZGRV
c2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUsIFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMpOwotICAgICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChE
T01XcmFwcGVyV29ybGQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlz
dCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgPSBVc2VyU3R5bGVV
c2VyTGV2ZWwsIFVzZXJTdHlsZUluamVjdGlvblRpbWUgPSBJbmplY3RJbkV4aXN0aW5nRG9jdW1l
bnRzKTsKLSAgICAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCYsIGNvbnN0IFVSTCYpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCYsIGNvbnN0IFVSTCYpOwotICAgICAgICB2b2lkIHJlbW92
ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCYpOwotICAgICAgICB2b2lkIHJl
bW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQmKTsKKyAgICAgICAg
dm9pZCBhZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgVVJMJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKKyAgICAgICAgdm9pZCBhZGRV
c2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFVSTCYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFj
a2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVz
ZXJTdHlsZUxldmVsIGxldmVsID0gVXNlclN0eWxlVXNlckxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRp
bWUgPSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKKyAgICAgICAgdm9pZCByZW1vdmVVc2Vy
U2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOworICAgICAgICB2
b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0
IFVSTCYpOworCisgICAgICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoRE9NV3Jh
cHBlcldvcmxkKik7CisgICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxk
KERPTVdyYXBwZXJXb3JsZCopOworCiAgICAgICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQo
KTsKIAogICAgICAgICBjb25zdCBVc2VyU2NyaXB0TWFwKiB1c2VyU2NyaXB0cygpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlclNjcmlwdHMuZ2V0KCk7IH0KQEAgLTEyMiwxMyArMTI5LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IG1fbG9jYWxT
dG9yYWdlOwogICAgICAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiA+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwOwogCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0TWFwPiBtX3VzZXJTY3JpcHRzOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXRNYXA+IG1fdXNlclN0eWxlU2hlZXRzOworICAg
ICAgICBPd25QdHI8VXNlclNjcmlwdE1hcD4gbV91c2VyU2NyaXB0czsKKyAgICAgICAgT3duUHRy
PFVzZXJTdHlsZVNoZWV0TWFwPiBtX3VzZXJTdHlsZVNoZWV0czsKIAotICAgICAgICBjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8R3JvdXBTZXR0aW5ncz4gbV9ncm91cFNldHRpbmdzOworICAgICAgICBj
b25zdCBPd25QdHI8R3JvdXBTZXR0aW5ncz4gbV9ncm91cFNldHRpbmdzOwogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FwdGlvblVzZXJQcmVmZXJl
bmNlcz4gbV9jYXB0aW9uUHJlZmVyZW5jZXM7CisgICAgICAgIE93blB0cjxDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzPiBtX2NhcHRpb25QcmVmZXJlbmNlczsKICNlbmRpZgogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCA1YWY1OTVmLi42MjdmNTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZS5oCkBAIC01MiwxMyArNTIsMTQgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFVzZXJUaW1pbmc7CiAKLWNsYXNzIFBl
cmZvcm1hbmNlIEZJTkFMIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50
ZWQ8UGVyZm9ybWFuY2U+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHksIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhIHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJr
ZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgorY2xh
c3MgUGVyZm9ybWFuY2UgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRl
ZDxQZXJmb3JtYW5jZT4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSwgcHVibGljIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlcmZv
cm1hbmNlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUGVyZm9y
bWFuY2UoZnJhbWUpKTsgfQogICAgIH5QZXJmb3JtYW5jZSgpOwogCi0gICAgdmlydHVhbCBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIFBlcmZvcm1hbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFBlcmZvcm1hbmNlRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAgICBQ
ZXJmb3JtYW5jZU5hdmlnYXRpb24qIG5hdmlnYXRpb24oKSBjb25zdDsKICAgICBQZXJmb3JtYW5j
ZVRpbWluZyogdGltaW5nKCkgY29uc3Q7CkBAIC05Myw4ICs5NCw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgUGVyZm9ybWFuY2UoRnJhbWUqKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQogICAg
IGJvb2wgaXNSZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGwoKTsKIAogICAgIG11dGFibGUgUmVmUHRy
PFBlcmZvcm1hbmNlTmF2aWdhdGlvbj4gbV9uYXZpZ2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clNjcmlwdFR5cGVzLmgKaW5kZXggZjg1OTc3ZS4uNmIwYzAzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHRUeXBlcy5oCkBAIC0zNiw4ICszNiw4IEBAIGVudW0gVXNlclNjcmlwdEluamVj
dGlvblRpbWUgeyBJbmplY3RBdERvY3VtZW50U3RhcnQsIEluamVjdEF0RG9jdW1lbnRFbmQgfTsK
IGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFVzZXJTY3JpcHQ7CiAKLXR5cGVkZWYgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0Pj4gVXNlclNjcmlwdFZlY3RvcjsKLXR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgc3RkOjp1bmlxdWVfcHRyPFVzZXJT
Y3JpcHRWZWN0b3I+PiBVc2VyU2NyaXB0TWFwOwordHlwZWRlZiBWZWN0b3I8T3duUHRyPFVzZXJT
Y3JpcHQ+ID4gVXNlclNjcmlwdFZlY3RvcjsKK3R5cGVkZWYgSGFzaE1hcDxSZWZQdHI8RE9NV3Jh
cHBlcldvcmxkPiwgT3duUHRyPFVzZXJTY3JpcHRWZWN0b3I+ID4gVXNlclNjcmlwdE1hcDsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyU3R5bGVTaGVldFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNo
ZWV0VHlwZXMuaAppbmRleCAyMDcyODY0Li43NGNiYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTdHlsZVNoZWV0VHlwZXMuaApAQCAtMzcsOCArMzcsOCBAQCBlbnVtIFVzZXJTdHlsZUxl
dmVsIHsgVXNlclN0eWxlVXNlckxldmVsLCBVc2VyU3R5bGVBdXRob3JMZXZlbCB9OwogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7CiAKLXR5cGVkZWYgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVldD4+IFVzZXJTdHlsZVNoZWV0VmVjdG9yOwot
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBzdGQ6OnVuaXF1ZV9wdHI8
VXNlclN0eWxlU2hlZXRWZWN0b3I+PiBVc2VyU3R5bGVTaGVldE1hcDsKK3R5cGVkZWYgVmVjdG9y
PE93blB0cjxVc2VyU3R5bGVTaGVldD4gPiBVc2VyU3R5bGVTaGVldFZlY3RvcjsKK3R5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgT3duUHRyPFVzZXJTdHlsZVNoZWV0VmVj
dG9yPiA+IFVzZXJTdHlsZVNoZWV0TWFwOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTBkMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcApAQCAtMCwwICsxLDc5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5o
IgorCisjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNs
dWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBUaGVzZSB2YWx1ZXMgYXJlIHN0cmFpZ2h0IG91dCBv
ZiBEcmFnQ29udHJvbGxlck1hYywgc28gcHJvYmFibHkgaGF2ZSAKKy8vIGxpdHRsZSBjb3JyZWxh
dGlvbiB3aXRoIFF0IHN0YW5kYXJkcy4uLgorY29uc3QgaW50IERyYWdDb250cm9sbGVyOjpMaW5r
RHJhZ0JvcmRlckluc2V0ID0gMjsKK2NvbnN0IGludCBEcmFnQ29udHJvbGxlcjo6TWF4T3JpZ2lu
YWxJbWFnZUFyZWEgPSAxNTAwICogMTUwMDsKK2NvbnN0IGludCBEcmFnQ29udHJvbGxlcjo6RHJh
Z0ljb25SaWdodEluc2V0ID0gNzsKK2NvbnN0IGludCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ljb25C
b3R0b21JbnNldCA9IDM7CisKK2NvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFnSW1hZ2VB
bHBoYSA9IDAuNzVmOworCisKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJh
Z0RhdGEqKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK0RyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0RhdGEqIGRyYWdEYXRhKQoreworICAgIC8v
IEZJWE1FOiBUaGlzIGxvZ2ljIGlzIGluY29tcGxldGUuCisgICAgaWYgKGRyYWdEYXRhLT5jb250
YWluc1VSTCgwKSkKKyAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICAK
KyAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Cit9IAorCitjb25zdCBJbnRTaXplJiBEcmFn
Q29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCit7CisgICAgc3RhdGljIGNvbnN0IEludFNp
emUgbWF4RHJhZ0ltYWdlU2l6ZSg0MDAsIDQwMCk7CisgICAgCisgICAgcmV0dXJuIG1heERyYWdJ
bWFnZVNpemU7Cit9CisKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURy
YWcoKQoreworfQorCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQoreworICAgIGNsaXBib2FyZC0+cGFzdGVib2FyZCgpLndy
aXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTBjODI1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRXZl
bnRIYW5kbGVyUXQuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKworI2luY2x1ZGUg
IkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNs
dWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhpdFRlc3RS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIktleWJvYXJk
RXZlbnQuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisj
aW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworI2lmIGRlZmluZWQoUV9XU19NQUMpCitjb25zdCBkb3VibGUgRXZl
bnRIYW5kbGVyOjpUZXh0RHJhZ0RlbGF5ID0gMC4xNTsKKyNlbHNlCitjb25zdCBkb3VibGUgRXZl
bnRIYW5kbGVyOjpUZXh0RHJhZ0RlbGF5ID0gMC4wOworI2VuZGlmCisKK2Jvb2wgRXZlbnRIYW5k
bGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFpc0tleWJvYXJkT3B0aW9uVGFiKGV2ZW50KTsKK30KKwordm9pZCBFdmVu
dEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFt
ZS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAgcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZyYW1lKCZtX2ZyYW1lKTsKK30KKworYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGNvbnN0Cit7CisgICAgLy8gUXQgaGFzIGFuIGFjdGl2
YXRpb24gZXZlbnQgd2hpY2ggaXMgc2VudCBpbmRlcGVuZGVudGx5CisgICAgLy8gICBvZiBtb3Vz
ZSBldmVudCBzbyB0aGlzIHRoaW5nIHdpbGwgYmUgYSBzbmFmdSB0byBpbXBsZW1lbnQKKyAgICAv
LyAgIGNvcnJlY3RseQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6
OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
V2lkZ2V0KiB3aWRnZXQpCit7CisgICAgUV9BU1NFUlQod2lkZ2V0KTsKKyAgICBpZiAoIXdpZGdl
dC0+aXNGcmFtZVZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRv
RnJhbWVWaWV3KHdpZGdldCktPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hlZWxFdmVu
dChldmVudCk7Cit9CisKK1Bhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFdmVudEhhbmRsZXI6OmNyZWF0
ZURyYWdnaW5nQ2xpcGJvYXJkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ2xpcGJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCgpOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJl
c3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFt
ZSogc3ViZnJhbWUpCit7CisgICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNl
UHJlc3NFdmVudChtZXYuZXZlbnQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRXZl
bnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVk
Tm9kZSkKK3sKKyAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZl
bnQobWV2LmV2ZW50KCksIGhvdmVyZWROb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCit7CisgICAgc3ViZnJh
bWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1ldi5ldmVudCgpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlN
b2RpZmllcnMoKQoreworI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gUGxhdGZvcm1FdmVudDo6
Q3RybEtleSB8IFBsYXRmb3JtRXZlbnQ6OkFsdEtleTsKKyNlbHNlCisgICAgcmV0dXJuIFBsYXRm
b3JtRXZlbnQ6OkFsdEtleTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRleHRNZW51SXRlbS5oCmluZGV4IGRhODI3M2QuLjJhZjczZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5k
b3csCiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2ssCiAgICAg
ICAgIENvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkLAotI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJs
VG9DbGlwYm9hcmQsCiAjZW5kaWYKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1l
SW5OZXdXaW5kb3csCkBAIC03MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgICAgIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZSwKICNlbmRpZgot
I2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0gKEVGTCkKKyNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STSAoRUZMKQogICAgICAgICBDb250ZXh0TWVudUl0ZW1U
YWdTZWxlY3RBbGwsCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1
cnNvci5oCmluZGV4IGYyMGZkZmEuLmQzNTQyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0N1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0N1cnNvci5o
CkBAIC00MCw2ICs0MCw4IEBAIHR5cGVkZWYgSElDT04gSENVUlNPUjsKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5o
IgorI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UUN1cnNvcj4KICNlbGlmIFBMQVRGT1JN
KEJMQUNLQkVSUlkpCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ3Vyc29yLmg+CiAjZW5k
aWYKQEAgLTU0LDcgKzU2LDcgQEAgdHlwZWRlZiBISUNPTiBIQ1VSU09SOwogI2VuZGlmCiAKIC8v
IExvb2tzIGxpa2UgaXQncyBqdXN0IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHN0aWxsIG5vdCB1c2lu
ZyB0aGlzPwotI2lmIFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKQorI2lmIFBMQVRGT1JNKFdJTikg
fHwgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShFRkwpIHx8IFBMQVRGT1JNKE5JWCkKICNkZWZpbmUgV1RGX1VTRV9MQVpZX05BVElWRV9D
VVJTT1IgMQogI2VuZGlmCiAKQEAgLTc5LDYgKzgxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHR5cGVkZWYgR1JlZlB0cjxHZGtDdXJzb3I+IFBsYXRmb3JtQ3Vyc29yOwogI2VsaWYgUExB
VEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgpCiAgICAgdHlwZWRlZiBjb25zdCBjaGFyKiBQbGF0
Zm9ybUN1cnNvcjsKKyNlbGlmIFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19DVVJTT1Ip
CisgICAgLy8gRG8gbm90IG5lZWQgdG8gYmUgc2hhcmVkIGJ1dCBuZWVkIHRvIGJlIGNyZWF0ZWQg
ZHluYW1pY2FsbHkgdmlhIGVuc3VyZVBsYXRmb3JtQ3Vyc29yLgorICAgIHR5cGVkZWYgUUN1cnNv
ciogUGxhdGZvcm1DdXJzb3I7CiAjZWxpZiBQTEFURk9STShCTEFDS0JFUlJZKQogICAgIHR5cGVk
ZWYgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJsYWNrQmVycnlDdXJzb3IgUGxhdGZvcm1DdXJzb3I7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggOTMwMzc2OS4uMWJhN2Nl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC00Nyw2ICs0NywxMSBAQCB0eXBl
ZGVmIGlkIERyYWdEYXRhUmVmOwogdHlwZWRlZiB2b2lkKiBEcmFnRGF0YVJlZjsKICNlbmRpZgog
CisjZWxpZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUU1pbWVEYXRh
OworUVRfRU5EX05BTUVTUEFDRQordHlwZWRlZiBjb25zdCBRTWltZURhdGEqIERyYWdEYXRhUmVm
OwogI2VsaWYgUExBVEZPUk0oV0lOKQogdHlwZWRlZiBzdHJ1Y3QgSURhdGFPYmplY3QqIERyYWdE
YXRhUmVmOwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTE1LDcgKzEyMCw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZTsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisj
aWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8v
IGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9y
LgogICAgIERyYWdEYXRhKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4
IGQ4ZjUyYmMuLjFiYmQwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0z
NSw2ICszNSwxMCBAQAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiBPQkpDX0NMQVNTIE5TSW1hZ2U7CisjZWxpZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05B
TUVTUEFDRQorY2xhc3MgUVBpeG1hcDsKK1FUX0VORF9OQU1FU1BBQ0UKICNlbGlmIFBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKICNlbGlmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oTklYKQpAQCAtNTEsNiArNTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4g
RHJhZ0ltYWdlUmVmOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgdHlwZWRlZiBRUGl4bWFwKiBE
cmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgdHlwZWRlZiBIQklUTUFQIERy
YWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTklYKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGZhMDMzZWQuLjJjMTRlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTQwLDcgKzQwLDE1IEBACiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0YpCisjaWYgUExBVEZPUk0oUVQp
CisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVkZSA8UUxpYnJhcnk+CisjaWYgZGVmaW5lZChRX09T
X1dJTjMyKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorI2VuZGlmCisKKyNpZiBVU0Uo
Q0YpIHx8IChQTEFURk9STShRVCkgJiYgZGVmaW5lZChRX1dTX01BQykpCiB0eXBlZGVmIHN0cnVj
dCBfX0NGQnVuZGxlKiBDRkJ1bmRsZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRh
KiBDRkRhdGFSZWY7CiAjZW5kaWYKQEAgLTY5LDYgKzc3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHR5cGVkZWYgSE1PRFVMRSBQbGF0Zm9ybU1vZHVsZTsKICNlbGlmIFBMQVRGT1JNKEVGTCkK
IHR5cGVkZWYgRWluYV9Nb2R1bGUqIFBsYXRmb3JtTW9kdWxlOworI2VsaWYgUExBVEZPUk0oUVQp
CisjaWYgZGVmaW5lZChRX1dTX01BQykKK3R5cGVkZWYgQ0ZCdW5kbGVSZWYgUGxhdGZvcm1Nb2R1
bGU7CisjZWxpZiAhZGVmaW5lZChRVF9OT19MSUJSQVJZKQordHlwZWRlZiBRTGlicmFyeSogUGxh
dGZvcm1Nb2R1bGU7CisjZWxzZQordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybU1vZHVsZTsKKyNlbmRp
ZgogI2VsaWYgVVNFKEdMSUIpCiB0eXBlZGVmIEdNb2R1bGUqIFBsYXRmb3JtTW9kdWxlOwogI2Vs
aWYgVVNFKENGKQpAQCAtMTAxLDcgKzExNywxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3Jt
TW9kdWxlVmVyc2lvbjsKICNlbmRpZgogCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKLSNpZiBVU0Uo
R0xJQikgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShRVCkKK3R5cGVkZWYgUUZpbGUq
IFBsYXRmb3JtRmlsZUhhbmRsZTsKK2NvbnN0IFBsYXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlID0gMDsKKyNlbGlmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQog
dHlwZWRlZiBHRmlsZUlPU3RyZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQbGF0Zm9y
bUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7CiAjZWxpZiBPUyhXSU5E
T1dTKQpAQCAtMTk5LDcgKzIxOCw3IEBAIFN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29uc3Qg
U3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpOwogQ1N0cmluZyBz
aGFyZWRSZXNvdXJjZXNQYXRoKCk7CiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoU09V
UCkgfHwgUExBVEZPUk0oUVQpCiB1aW50NjRfdCBnZXRWb2x1bWVGcmVlU2l6ZUZvclBhdGgoY29u
c3QgY2hhciopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAKaW5kZXggNTk5MDExYi4uNDllZDIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTIwOSw2ICsyMDksMTQgQEAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiUGFz
dGUiLCAiUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAorI2lmIFBMQVRGT1JNKFFUKQor
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gIlNlbGVjdCBBbGwiOworfQorI2VuZGlmCisKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoIk5vIEd1ZXNzZXMgRm91bmQiLCAiTm8gR3Vlc3NlcyBGb3VuZCBjb250ZXh0IG1lbnUgaXRl
bSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IDFh
ODY3MzguLmU5NzZhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmgKQEAgLTQ5LDEyICs0OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJ
bk5ld1dpbmRvdygpOworI2lmIFBMQVRGT1JNKFFUKQorICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdPcGVuTGlua0luVGhpc1dpbmRvdygpOworI2VuZGlmCiAgICAgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5JbWFnZUluTmV3V2luZG93KCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rv
d25sb2FkSW1hZ2VUb0Rpc2soKTsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUlt
YWdlVG9DbGlwYm9hcmQoKTsKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNp
ZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkKCk7CiAjZW5kaWYK
ICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKTsKQEAg
LTgwLDcgKzgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdVbmljb2RlSW5zZXJ0WldKTWFyaygpOwogICAgIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdVbmljb2RlSW5zZXJ0WldOSk1hcmsoKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKEVGTCkKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCk7CiAj
ZW5kaWYKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNzQ2NGUx
OS4uZGE3N2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAKQEAgLTQwLDYgKzQwLDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRSW1hZ2VSZWFkZXI+CisjaW5jbHVk
ZSA8UUltYWdlV3JpdGVyPgorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVO
QUJMRShNSFRNTCkKICNpbmNsdWRlICJBcmNoaXZlRmFjdG9yeS5oIgogI2VuZGlmCkBAIC0yNDYs
NiArMjUxLDI5IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
cygpCiAgICAgc3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKCJpbWFnZS93ZWJw
Iik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg1LCAxLCAwKQorICAgIFFMaXN0PFFCeXRlQXJyYXk+IG1pbWVUeXBlcyA9IFFJ
bWFnZVJlYWRlcjo6c3VwcG9ydGVkTWltZVR5cGVzKCk7CisgICAgUV9GT1JFQUNIKGNvbnN0IFFC
eXRlQXJyYXkmIG1pbWVUeXBlLCBtaW1lVHlwZXMpIHsKKyAgICAgICAgc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMtPmFkZChtaW1lVHlwZS5jb25zdERhdGEoKSk7CisgICAgICAgIHN1cHBvcnRlZElt
YWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZS5jb25zdERhdGEoKSk7CisgICAgfQor
I2Vsc2UKKyAgICBRTGlzdDxRQnl0ZUFycmF5PiBmb3JtYXRzID0gUUltYWdlUmVhZGVyOjpzdXBw
b3J0ZWRJbWFnZUZvcm1hdHMoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvcm1hdHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZm9ybWF0cy5hdChpKS5jb25zdERhdGEoKSk7CisgICAg
ICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcy0+YWRkKG1pbWVUeXBlKTsKKyAgICAgICAgICAgIHN1cHBvcnRlZEltYWdlUmVz
b3VyY2VNSU1FVHlwZXMtPmFkZChtaW1lVHlwZSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYg
Ly8gUVRfVkVSU0lPTgorI2lmIEVOQUJMRShTVkcpCisgICAgLy8gRG8gbm90IHRyZWF0IFNWRyBh
cyBpbWFnZXMgZGlyZWN0bHkgaWYgV2ViS2l0IGNhbiBoYW5kbGUgdGhlbS4KKyAgICBzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcy0+cmVtb3ZlKCJpbWFnZS9zdmcreG1sIik7CisgICAgc3VwcG9ydGVk
SW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+cmVtb3ZlKCJpbWFnZS9zdmcreG1sIik7CisjZW5kaWYK
KyNlbmRpZiAvLyBQTEFURk9STShRVCkKICNlbmRpZiAvLyBVU0UoQ0cpCiB9CiAKQEAgLTI3MCw2
ICsyOTgsMjAgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
Rm9yRW5jb2RpbmcoKQogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2RpbmctPmFk
ZCgiaW1hZ2UvanBlZyIpOwogICAgIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzRm9yRW5jb2Rpbmct
PmFkZCgiaW1hZ2UvZ2lmIik7CiAjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFFUKQorI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg1LCAxLCAwKQorICAgIFFMaXN0PFFCeXRlQXJyYXk+
IG1pbWVUeXBlcyA9IFFJbWFnZVdyaXRlcjo6c3VwcG9ydGVkTWltZVR5cGVzKCk7CisgICAgUV9G
T1JFQUNIKGNvbnN0IFFCeXRlQXJyYXkmIG1pbWVUeXBlLCBtaW1lVHlwZXMpIHsKKyAgICAgICAg
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKG1pbWVUeXBlLmNvbnN0RGF0
YSgpKTsKKyAgICB9CisjZWxzZQorICAgIFFMaXN0PFFCeXRlQXJyYXk+IGZvcm1hdHMgPSBRSW1h
Z2VXcml0ZXI6OnN1cHBvcnRlZEltYWdlRm9ybWF0cygpOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZm9ybWF0cy5zaXplKCk7ICsraSkgeworICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihmb3JtYXRzLmF0KGkpLmNvbnN0
RGF0YSgpKTsKKyAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQobWltZVR5cGUpOworICAgIH0K
KyNlbmRpZiAvLyBRVF9WRVJTSU9OCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgc3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZXNGb3JFbmNvZGluZy0+YWRkKCJpbWFnZS9wbmciKTsKICAgICBzdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlc0ZvckVuY29kaW5nLT5hZGQoImltYWdlL2pwZWciKTsKQEAgLTQ4NSw2
ICs1MjcsNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0V2VsbEtub3duTUlNRVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpbwogICAgIHJldHVybiBmaW5kTWltZVR5
cGUoY29tbW9uTWVkaWFUeXBlcywgc2l6ZW9mKGNvbW1vbk1lZGlhVHlwZXMpIC8gc2l6ZW9mKGNv
bW1vbk1lZGlhVHlwZXNbMF0pLCBleHRlbnNpb24pOwogfQogCisjaWYgIVBMQVRGT1JNKFFUKQog
U3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgc2l6ZV90IHBvcyA9IHBhdGgucmV2ZXJzZUZpbmQoJy4nKTsKQEAgLTQ5
Niw2ICs1MzksNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICB9CiAgICAgcmV0dXJuIGRlZmF1bHRNSU1FVHlwZSgp
OwogfQorI2VuZGlmCiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CkBAIC02NDgsNyArNjkyLDcgQEAgY29u
c3QgU3RyaW5nJiBkZWZhdWx0TUlNRVR5cGUoKQogICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGU7
CiB9CiAKLSNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgIVVTRShDVVJMKQorI2lmICFQTEFU
Rk9STShRVCkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpICYmICFVU0UoQ1VSTCkKIFN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICByZXR1cm4gbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm90
SW1wbGVtZW50ZWQuaAppbmRleCAyYWNhNDMxLi5jN2UzZjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vdEltcGxlbWVudGVkLmgKQEAgLTMwLDYgKzMwLDkgQEAKIAogI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAgICNkZWZpbmUgc3VwcmVzc05vdEltcGxlbWVudGVk
V2FybmluZygpIGdldGVudigiRElTQUJMRV9OSV9XQVJOSU5HIikKKyNlbGlmIFBMQVRGT1JNKFFU
KQorICAgICNpbmNsdWRlIDxRQnl0ZUFycmF5PgorICAgICNkZWZpbmUgc3VwcmVzc05vdEltcGxl
bWVudGVkV2FybmluZygpICFxZ2V0ZW52KCJESVNBQkxFX05JX1dBUk5JTkciKS5pc0VtcHR5KCkK
ICNlbHNlCiAgICAgI2RlZmluZSBzdXByZXNzTm90SW1wbGVtZW50ZWRXYXJuaW5nKCkgZmFsc2UK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDc2MjdhZjcuLmIz
MTQ5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTQxLDYgKzQxLDEw
IEBAIE9CSkNfQ0xBU1MgTlNBcnJheTsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFNaW1lRGF0YT4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oV0lOKQogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIldDRGF0YU9iamVjdC5o
IgpAQCAtNjgsNyArNzIsNyBAQCBlbnVtIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNs
aXBib2FyZCB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJbmNsdWRlSQogLy8gRm9yIHdyaXRp
bmcgdG8gdGhlIHBhc3RlYm9hcmQuIEdlbmVyYWxseSBzb3J0ZWQgd2l0aCB0aGUgcmljaGVzdCBm
b3JtYXRzIG9uIHRvcC4KIAogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKLSNpZiAhKFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQorI2lmICEoUExB
VEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShX
SU4pKQogICAgIFBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgflBhc3RlYm9hcmRXZWJDb250
ZW50KCk7CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKQEAgLTkzLDcgKzk3LDcgQEAg
c3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgUGFzdGVib2FyZEltYWdlKCk7CiAgICAgflBh
c3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci0jaWYgIShQTEFURk9S
TShFRkwpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKKyNpZiAhKFBMQVRGT1JN
KEVGTCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oV0lOKSkK
ICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CkBAIC0xMDYsNyArMTEwLDcgQEAg
Y2xhc3MgUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXIgewogcHVibGljOgogICAgIHZpcnR1YWwg
flBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyKCkgeyB9CiAKLSNpZiAhKFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQorI2lmICEoUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXSU4pKQogICAgIHZp
cnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwpAQCAtMTYz
LDExICsxNjcsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RHJhZ0ltYWdlKERyYWdJbWFnZVJl
ZiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShXSU4pCiAgICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZy
YWdtZW50KEZyYW1lKiwgUGFzc1JlZlB0cjxSYW5nZT4sIGJvb2wgYWxsb3dQbGFpblRleHQsIGJv
b2wmIGNob3NlUGxhaW5UZXh0KTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4KICNlbmRp
ZgogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgd3JpdGVJbWFnZShO
b2RlKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7IC8vIEZJWE1FOiBMYXllcmlu
ZyB2aW9sYXRpb24uCiAgICAgdm9pZCB3cml0ZVNlbGVjdGlvbihSYW5nZSosIGJvb2wgY2FuU21h
cnRDb3B5T3JEZWxldGUsIEZyYW1lKiwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkID0gRGVmYXVsdFNlbGVjdGVkVGV4dFR5cGUpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlv
bGF0aW9uLgogI2VuZGlmCkBAIC0xNzgsNyArMTgyLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCgpIGNvbnN0OwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShHVEspCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICBzdGF0aWMg
UGFzc093blB0cjxQYXN0ZWJvYXJkPiBjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKTsKICNlbmRp
ZgogCkBAIC0xOTQsNiArMTk4LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFFUKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhc3RlYm9hcmQ+IGNyZWF0ZShjb25zdCBR
TWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkID0gMCwgYm9vbCBpc0ZvckRyYWdBbmREcm9wID0g
ZmFsc2UpOworCisgICAgUU1pbWVEYXRhKiBjbGlwYm9hcmREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV93cml0YWJsZURhdGE7IH0KKyAgICB2b2lkIGludmFsaWRhdGVXcml0YWJsZURhdGEoKSBjb25z
dCB7IG1fd3JpdGFibGVEYXRhID0gMDsgfQorICAgIGJvb2wgaXNGb3JEcmFnQW5kRHJvcCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNGb3JEcmFnQW5kRHJvcDsgfQorICAgIGJvb2wgaXNGb3JDb3B5QW5k
UGFzdGUoKSBjb25zdCB7IHJldHVybiAhbV9pc0ZvckRyYWdBbmREcm9wOyB9CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKFdJTikKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRhdGFPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KICAgICB2b2lkIHNldEV4dGVybmFsRGF0YU9i
amVjdChJRGF0YU9iamVjdCopOwpAQCAtMjEwLDYgKzIyMywxMiBAQCBwcml2YXRlOgogICAgIFBh
c3RlYm9hcmQoR3RrQ2xpcGJvYXJkKik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IFBhc3RlYm9hcmQoY29uc3QgUU1pbWVEYXRhKiAsIGJvb2wpOworCisgICAgY29uc3QgUU1pbWVE
YXRhKiByZWFkRGF0YSgpIGNvbnN0OworI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAg
ZXhwbGljaXQgUGFzdGVib2FyZChJRGF0YU9iamVjdCopOwogICAgIGV4cGxpY2l0IFBhc3RlYm9h
cmQoV0NEYXRhT2JqZWN0Kik7CkBAIC0yMzUsNiArMjU0LDEzIEBAIHByaXZhdGU6CiAgICAgbG9u
ZyBtX2NoYW5nZUNvdW50OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBib29sIG1f
c2VsZWN0aW9uTW9kZTsKKyAgICBjb25zdCBRTWltZURhdGEqIG1fcmVhZGFibGVEYXRhOworICAg
IG11dGFibGUgUU1pbWVEYXRhKiBtX3dyaXRhYmxlRGF0YTsKKyAgICBib29sIG1faXNGb3JEcmFn
QW5kRHJvcDsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIEhXTkQgbV9vd25lcjsK
ICAgICBDT01QdHI8SURhdGFPYmplY3Q+IG1fZGF0YU9iamVjdDsKQEAgLTI1Miw3ICsyNzgsNyBA
QCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgV2ViQXJjaGl2ZVBib2FyZFR5cGU7CiBleHRlcm4g
Y29uc3QgY2hhciogY29uc3QgV2ViVVJMTmFtZVBib2FyZFR5cGU7CiAjZW5kaWYKIAotI2lmICFQ
TEFURk9STShHVEspCisjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSkKIAogaW5s
aW5lIFBhc3RlYm9hcmQ6On5QYXN0ZWJvYXJkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKaW5kZXggNTliYTI5Yi4uMmVkMjU0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgKQEAg
LTQxLDYgKzQxLDEyIEBAIHR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEtleSBHZGtFdmVudEtleTsK
ICNpbmNsdWRlICJDb21wb3NpdGlvblJlc3VsdHMuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
UVQpCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFLZXlFdmVudDsKK1FUX0VORF9OQU1FU1BB
Q0UKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIG5hbWVzcGFjZSBCbGFja0Jl
cnJ5IHsKIG5hbWVzcGFjZSBQbGF0Zm9ybSB7CkBAIC03Myw2ICs3OSwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgLCBtX2dka0V2ZW50S2V5
KDApCiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgICAgICwgbV9xdEV2ZW50KDAp
CisgICAgICAgICAgICAsIG1fdXNlTmF0aXZlVmlydHVhbEtleUFzRE9NS2V5KGZhbHNlKQorI2Vu
ZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0xNDUsNiArMTU1LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFN0cmluZyBzaW5nbGVDaGFyYWN0ZXJTdHJpbmco
dW5zaWduZWQpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFFLZXlFdmVudCosIGJvb2wpOworICAgICAgICBRS2V5RXZlbnQqIHF0RXZl
bnQoKSBjb25zdCB7IHJldHVybiBtX3F0RXZlbnQ7IH0KKyAgICAgICAgdWludDMyX3QgbmF0aXZl
TW9kaWZpZXJzKCkgY29uc3Q7CisgICAgICAgIHVpbnQzMl90IG5hdGl2ZVNjYW5Db2RlKCkgY29u
c3Q7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgICAgIFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCYp
OwogI2VuZGlmCkBAIC0xNzYsOCArMTkzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgR2RrRXZlbnRLZXkqIG1fZ2RrRXZlbnRLZXk7CiAgICAgICAgIENvbXBvc2l0aW9uUmVzdWx0
cyBtX2NvbXBvc2l0aW9uUmVzdWx0czsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAg
ICBRS2V5RXZlbnQqIG1fcXRFdmVudDsKKyAgICAgICAgYm9vbCBtX3VzZU5hdGl2ZVZpcnR1YWxL
ZXlBc0RPTUtleTsKKyNlbmRpZgogICAgIH07CiAgICAgCisjaWYgUExBVEZPUk0oUVQpCisvLyBV
c2VkIGJ5IFdlYktpdDIuCitTdHJpbmcga2V5SWRlbnRpZmllckZvclF0S2V5Q29kZShpbnQga2V5
Q29kZSk7CitpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudCh1bnNpZ25lZCBpbnQga2V5Y29k
ZSwgYm9vbCBpc0tleXBhZCA9IGZhbHNlKTsgICAgCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gUGxhdGZvcm1LZXlib2FyZEV2ZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVudURlc2NyaXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oCmluZGV4IGFhODIz
MGYuLjdiMTg2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
TWVudURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24uaApAQCAtMzAsNiArMzAsOCBAQAogT0JKQ19DTEFTUyBOU011dGFibGVB
cnJheTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZWxpZiBQ
TEFURk9STShRVCkKKyNpbmNsdWRlIDxxbGlzdC5oPgogI2VsaWYgUExBVEZPUk0oR1RLKQogdHlw
ZWRlZiBzdHJ1Y3QgX0d0a01lbnUgR3RrTWVudTsKICNlbmRpZgpAQCAtMzksNiArNDEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVVTRShDUk9TU19QTEFURk9STV9DT05URVhUX01FTlVT
KQogI2lmIFBMQVRGT1JNKE1BQykKICAgICB0eXBlZGVmIE5TTXV0YWJsZUFycmF5KiBQbGF0Zm9y
bU1lbnVEZXNjcmlwdGlvbjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGNsYXNzIENvbnRleHRN
ZW51SXRlbTsKKyAgICB0eXBlZGVmIGNvbnN0IFFMaXN0PENvbnRleHRNZW51SXRlbT4qIFBsYXRm
b3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHR5cGVkZWYgR3Rr
TWVudSogUGxhdGZvcm1NZW51RGVzY3JpcHRpb247CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAppbmRleCA3NDU0YmVhLi44Nzg0ZGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaApAQCAtMjYsNiAr
MjYsMTIgQEAKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKKyNpZiBQTEFURk9STShRVCkK
K1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVRvdWNoRXZlbnQ7CitRVF9FTkRfTkFNRVNQQUNF
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiBuYW1lc3BhY2UgQmxhY2tCZXJy
eSB7CiBuYW1lc3BhY2UgUGxhdGZvcm0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVRvdWNoUG9pbnQuaAppbmRleCAwMzM3MDIzLi5lYjQyMDE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxR
VG91Y2hFdmVudD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBQbGF0Zm9ybSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5M
b29wLmgKaW5kZXggNjM4OWE1OS4uZTI4ZjU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bkxvb3Au
aApAQCAtOTYsNiArOTYsMTAgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CiAgICAg
ICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKKyNlbGlmIFBMQVRGT1JN
KFFUKQorICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKFJ1bkxvb3AqLCBpbnQgSUQpOwor
ICAgICAgICBpbnQgbV9JRDsKKyAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwogI2VsaWYgUExB
VEZPUk0oRUZMKQogICAgICAgICBzdGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqIGRhdGEpOwog
ICAgICAgICBFY29yZV9UaW1lciogbV90aW1lcjsKQEAgLTE1MSw2ICsxNTUsMTEgQEAgcHJpdmF0
ZToKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CiAgICAgUmV0YWluUHRy
PENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwogICAgIGludCBtX25lc3RpbmdM
ZXZlbDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFRpbWVy
QmFzZSo+IFRpbWVyTWFwOworICAgIFRpbWVyTWFwIG1fYWN0aXZlVGltZXJzOworICAgIGNsYXNz
IFRpbWVyT2JqZWN0OworICAgIFRpbWVyT2JqZWN0KiBtX3RpbWVyT2JqZWN0OwogI2VsaWYgUExB
VEZPUk0oRUZMKQogICAgIGJvb2wgbV9pbml0RWZsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggZjJiNjJjOC4uNTJlYmExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtMzgsNiArMzgsOSBAQCBzdGF0
aWMgVVJMU2NoZW1lc01hcCYgbG9jYWxVUkxTY2hlbWVzKCkKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoImFwcGxld2ViZGF0YSIpOwogI2VuZGlmCisjaWYgUExB
VEZPUk0oUVQpCisgICAgICAgIGxvY2FsU2NoZW1lcy5hZGQoInFyYyIpOworI2VuZGlmCiAgICAg
fQogCiAgICAgcmV0dXJuIGxvY2FsU2NoZW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvck5vbmUuY3BwCmluZGV4IGY3YzFjMDkuLjg3OTQzNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yTm9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JOb25lLmNwcApAQCAtMzk0LDYg
KzM5NCw3IEBAIFNjcm9sbEFuaW1hdG9yTm9uZTo6flNjcm9sbEFuaW1hdG9yTm9uZSgpCiAKIFNj
cm9sbEFuaW1hdG9yTm9uZTo6UGFyYW1ldGVycyBTY3JvbGxBbmltYXRvck5vbmU6OnBhcmFtZXRl
cnNGb3JTY3JvbGxHcmFudWxhcml0eShTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkgY29u
c3QKIHsKKyNpZiAhUExBVEZPUk0oUVQpCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewogICAg
IGNhc2UgU2Nyb2xsQnlEb2N1bWVudDoKICAgICAgICAgcmV0dXJuIFBhcmFtZXRlcnModHJ1ZSwg
MjAgKiBrVGlja1RpbWUsIDEwICoga1RpY2tUaW1lLCBDdWJpYywgMTAgKiBrVGlja1RpbWUsIEN1
YmljLCAxMCAqIGtUaWNrVGltZSwgTGluZWFyLCAxKTsKQEAgLTQwNiw2ICs0MDcsMjIgQEAgU2Ny
b2xsQW5pbWF0b3JOb25lOjpQYXJhbWV0ZXJzIFNjcm9sbEFuaW1hdG9yTm9uZTo6cGFyYW1ldGVy
c0ZvclNjcm9sbEdyYW51bGFyaXQKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CisjZWxzZQorICAgIC8vIFRoaXMgaXMgYSBzbGlnaHRseSBkaWZmZXJl
bnQgc3RyYXRlZ3kgZm9yIHRoZSBhbmltYXRpb24gd2l0aCBhIHN0ZWVwIGF0dGFjayBjdXJ2ZSBh
bmQgbmF0dXJhbCByZWxlYXNlIGN1cnZlLgorICAgIC8vIFRoZSBmYXN0IGFjY2VsZXJhdGlvbiBt
YWtlcyB0aGUgYW5pbWF0aW9uIGxvb2sgbW9yZSByZXNwb25zaXZlIHRvIHVzZXIgaW5wdXQuCisg
ICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgU2Nyb2xsQnlEb2N1bWVudDoKKyAg
ICAgICAgcmV0dXJuIFBhcmFtZXRlcnModHJ1ZSwgMjAgKiBrVGlja1RpbWUsIDEwICoga1RpY2tU
aW1lLCBDdWJpYywgNiAqIGtUaWNrVGltZSwgUXVhZHJhdGljLCAxMCAqIGtUaWNrVGltZSwgUXVh
ZHJhdGljLCAyMiAqIGtUaWNrVGltZSk7CisgICAgY2FzZSBTY3JvbGxCeUxpbmU6CisgICAgICAg
IHJldHVybiBQYXJhbWV0ZXJzKHRydWUsIDYgKiBrVGlja1RpbWUsIDUgKiBrVGlja1RpbWUsIEN1
YmljLCAxICoga1RpY2tUaW1lLCBRdWFkcmF0aWMsIDQgKiBrVGlja1RpbWUsIExpbmVhciwgMSk7
CisgICAgY2FzZSBTY3JvbGxCeVBhZ2U6CisgICAgICAgIHJldHVybiBQYXJhbWV0ZXJzKHRydWUs
IDEyICoga1RpY2tUaW1lLCAxMCAqIGtUaWNrVGltZSwgQ3ViaWMsIDMgKiBrVGlja1RpbWUsIFF1
YWRyYXRpYywgNiAqIGtUaWNrVGltZSwgTGluZWFyLCAxKTsKKyAgICBjYXNlIFNjcm9sbEJ5UGl4
ZWw6CisgICAgICAgIHJldHVybiBQYXJhbWV0ZXJzKHRydWUsIDggKiBrVGlja1RpbWUsIDMgKiBr
VGlja1RpbWUsIEN1YmljLCAyICoga1RpY2tUaW1lLCBRdWFkcmF0aWMsIDUgKiBrVGlja1RpbWUs
IFF1YWRyYXRpYywgMS4yNSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIFBhcmFtZXRlcnMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxMDJjMGQ3Li4xOGIwZTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtMTM4OSw3ICsxMzg5LDcg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIG9yaWdp
biwgYm9vbCB1cGRhdGVQb3NpdGlvbkF0QWwKICAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhzY3Jv
bGxPZmZzZXQoKSk7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShRVCkg
JiYgIVBMQVRGT1JNKE1BQykKIAogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUFkZENoaWxkKFdp
ZGdldCopCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBm
Zjc4OWIyLi4zMzg0NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKQEAgLTMyNyw3ICszMjcsNyBAQCB1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRh
KGNvbnN0IGNoYXIqJiBzb21lRGF0YSwgdW5zaWduZWQgcG9zaXRpb24pIGNvbgogI2VuZGlmCiB9
CiAKLSNpZiAhVVNFKENGKQorI2lmICFVU0UoQ0YpIHx8IFBMQVRGT1JNKFFUKQogCiBpbmxpbmUg
dm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuY3BwCmluZGV4IGVkYzc4MzYuLmQ5NjEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApA
QCAtNjI5LDcgKzYyOSw3IEBAIFN0cmluZyBVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwogfQogCi0jaWYgIVVT
RShDRikKKyNpZiAhUExBVEZPUk0oUVQpICYmICFVU0UoQ0YpCiBTdHJpbmcgVVJMOjpmaWxlU3lz
dGVtUGF0aCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkgfHwgIWlzTG9jYWxGaWxlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1VSTC5oCmluZGV4IGMxMzI5ZWIuLjJmMzEzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5oCkBAIC0zOSw2ICszOSwxMiBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBD
RlVSTFJlZjsKIE9CSkNfQ0xBU1MgTlNVUkw7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQor
UVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRVXJsOworUVRfRU5EX05BTUVTUEFDRQorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dEVuY29kaW5nOwpAQCAtMTY4LDYg
KzE3NCwxMSBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCk7IH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisgICAgVVJMKGNvbnN0
IFFVcmwmKTsKKyAgICBvcGVyYXRvciBRVXJsKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGNvbnN0
IFVSTCogaW5uZXJVUkwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICNpZm5kZWYgTkRFQlVHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDRkNTAxZGYuLjNmZjE2NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5oCkBAIC0zNiw2ICszNiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UVBvaW50ZXI+Cisj
aW5jbHVkZSA8cWdsb2JhbC5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiBPQkpDX0NM
QVNTIE5TVmlldzsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CkBAIC01Myw2ICs1OCwxMyBAQCB0eXBl
ZGVmIHN0cnVjdCBfR3RrQ29udGFpbmVyIEd0a0NvbnRhaW5lcjsKIHR5cGVkZWYgR3RrV2lkZ2V0
KiBQbGF0Zm9ybVdpZGdldDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCitRVF9CRUdJTl9O
QU1FU1BBQ0UKK2NsYXNzIFFPYmplY3Q7CitRVF9FTkRfTkFNRVNQQUNFCit0eXBlZGVmIFFPYmpl
Y3QqIFBsYXRmb3JtV2lkZ2V0OworI2VuZGlmCisKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKSB8
fCBQTEFURk9STShOSVgpCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtV2lkZ2V0OwogI2VuZGlmCkBA
IC02Niw3ICs3OCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7
CiB0eXBlZGVmIEV2YXNfT2JqZWN0KiBQbGF0Zm9ybVdpZGdldDsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oQkxBQ0tCRVJSWSkKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIFFXZWJQYWdlQ2xpZW50
OwordHlwZWRlZiBRV2ViUGFnZUNsaWVudCogUGxhdGZvcm1QYWdlQ2xpZW50OworI2VsaWYgUExB
VEZPUk0oQkxBQ0tCRVJSWSkKICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgogdHlw
ZWRlZiBQYWdlQ2xpZW50QmxhY2tCZXJyeSogUGxhdGZvcm1QYWdlQ2xpZW50OwogI2VsaWYgUExB
VEZPUk0oRUZMKQpAQCAtMTk3LDYgKzIxMiwxMSBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmplY3Qq
IGV2YXNPYmplY3QoKSB7IHJldHVybiBtX2V2YXNPYmplY3Q7IH0KICNlbmRpZgogCisjaWYgUExB
VEZPUk0oUVQpCisgICAgUU9iamVjdCogYmluZGluZ09iamVjdCgpIGNvbnN0OworICAgIHZvaWQg
c2V0QmluZGluZ09iamVjdChRT2JqZWN0Kik7CisjZW5kaWYKKwogICAgIC8vIFZpcnR1YWwgbWV0
aG9kcyB0byBjb252ZXJ0IHBvaW50cyB0by9mcm9tIHRoZSBjb250YWluaW5nIFNjcm9sbFZpZXcK
ICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVj
dCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKQEAgLTIzNiw2ICsyNTYsMTEgQEAgcHJpdmF0ZToKICNp
ZiBQTEFURk9STShFRkwpCiAgICAgRXZhc19PYmplY3QqIG1fZXZhc09iamVjdDsKICNlbmRpZgor
CisjaWYgUExBVEZPUk0oUVQpCisgICAgUVBvaW50ZXI8UU9iamVjdD4gbV9iaW5kaW5nT2JqZWN0
OworI2VuZGlmCisKIH07CiAKICNpZiAhUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcAppbmRleCBjYjU1ZmM3Li5jYjVmMWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcApAQCAtMjYsNiArMjYsMTIgQEAKICNpbmNsdWRl
ICJBdWRpb0J1cy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKIAorI2lmIFBM
QVRGT1JNKFFUKQorLy8gQ2xlYXIgb3V0IG9mZmVuZGluZyBRdCBtYWNybyBzbyB0aGUgZm9sbG93
aW5nIGhlYWRlciwgZ2lvLmgsIGNhbiBiZSBpbmNsdWRlZC4KKy8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTA4MQorI3VuZGVmIHNpZ25hbHMKKyNlbmRpZgorCiAj
aW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgogI2lu
Y2x1ZGUgPGdzdC9nc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL3F0L0F1ZGlvQnVzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vcXQv
QXVkaW9CdXNRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FjNWU0
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL3F0L0F1
ZGlvQnVzUXQuY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1cy5o
IgorCisjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCisjaW5jbHVkZSA8UVJlc291cmNlPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjps
b2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCBzYW1wbGVSYXRlKQor
eworICAgIFFTdHJpbmcgcGF0aCA9IFFTdHJpbmdMaXRlcmFsKCI6L3dlYmtpdC9yZXNvdXJjZXMv
YXVkaW8vIik7CisgICAgcGF0aC5hcHBlbmQoUUxhdGluMVN0cmluZyhuYW1lKSk7CisgICAgUVJl
c291cmNlIHJlc291cmNlKHBhdGgpOworICAgIHJldHVybiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlB
dWRpb0ZpbGUocmVzb3VyY2UuZGF0YSgpLCByZXNvdXJjZS5zaXplKCksIC8qIG1peFRvTW9ubyAq
LyBmYWxzZSwgc2FtcGxlUmF0ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAppbmRleCAyNTEyM2M4Li44YzhmM2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0
QnJpZGdlLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiAhUExBVEZPUk0oR1RLKSAm
JiAhUExBVEZPUk0oRUZMKSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgIVBMQVRGT1JNKFdJ
TikgJiYgIVBMQVRGT1JNKE5JWCkKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZM
KSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgIVBMQVRGT1JNKFFUKSAmJiAhUExBVEZPUk0o
V0lOKSAmJiAhUExBVEZPUk0oTklYKQogI2luY2x1ZGUgIkFOR0xFL1NoYWRlckxhbmcuaCIKICNl
bGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
CmluZGV4IDlkZWMyZjkuLmFmZDkxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApAQCAtNzUsOCArNzUsNyBAQCBwdWJs
aWM6CiAKIHByb3RlY3RlZDoKICAgICBBdWRpb1RyYWNrUHJpdmF0ZSgpCi0gICAgICAgIDogbV9j
bGllbnQoMCkKLSAgICAgICAgLCBtX2VuYWJsZWQoZmFsc2UpCisgICAgICAgIDogbV9lbmFibGVk
KGZhbHNlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGJjOWE2M2YuLjdlNmFiYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTExLDcgKzExMSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1h
Z2Uob2JzZXJ2ZXIpKTsKICAgICB9Ci0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJ
TikgfHwgKFBMQVRGT1JNKFFUKSAmJiBPUyhXSU5ET1dTKSkKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCaXRtYXBJbWFnZT4gY3JlYXRlKEhCSVRNQVApOwogI2VuZGlmCiAgICAgdmlydHVhbCB+Qml0
bWFwSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmluZGV4
IDhlNDBjMjQuLjRkZDllNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaApAQCAtMzYsNiArMzYsMTMgQEAKIHR5cGVkZWYgc3RydWN0IENHQ29sb3IqIENHQ29sb3JS
ZWY7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHFnbG9iYWwuaD4KK1FU
X0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUUNvbG9yOworUVRfRU5EX05BTUVTUEFDRQorI2VuZGlm
CisKICNpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHN0cnVjdCBfR2RrQ29sb3IgR2RrQ29sb3I7
CiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCkBAIC0xMjIsNiArMTI5LDExIEBAIHB1YmxpYzoK
ICAgICBDb2xvciBibGVuZChjb25zdCBDb2xvciYpIGNvbnN0OwogICAgIENvbG9yIGJsZW5kV2l0
aFdoaXRlKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBDb2xvcihjb25zdCBRQ29s
b3ImKTsKKyAgICBvcGVyYXRvciBRQ29sb3IoKSBjb25zdDsKKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIENvbG9yKGNvbnN0IEdka0NvbG9yJik7CiAgICAgLy8gV2UgY2FuJ3Qgc2Vu
c2libHkgZ28gYmFjayB0byBHZGtDb2xvciB3aXRob3V0IGxvc2luZyB0aGUgYWxwaGEgdmFsdWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA5
MjE2MTcxLi5lNTgyYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludC5oCkBAIC01MSw2ICs1MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNQb2ludCBO
U1BvaW50OwogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgInFn
bG9iYWwuaCIKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVBvaW50RjsKK1FUX0VORF9OQU1F
U1BBQ0UKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5z
Zm9ybTsKQEAgLTE0NCw2ICsxNTEsMTEgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIE5TUG9pbnQo
KSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisgICAgRmxvYXRQb2ludChjb25z
dCBRUG9pbnRGJik7CisgICAgb3BlcmF0b3IgUVBvaW50RigpIGNvbnN0OworI2VuZGlmCisKICNp
ZiBQTEFURk9STShCTEFDS0JFUlJZKQogICAgIEZsb2F0UG9pbnQoY29uc3QgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkZsb2F0UG9pbnQmKTsKICAgICBvcGVyYXRvciBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RmxvYXRQb2ludCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuaAppbmRleCAwNDNlNTc0Li44YmYxYTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaApAQCAtNDIsNiArNDIsMTIgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX05TUmVjdCBOU1JlY3Q7CiAjZW5kaWYKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
UVQpCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFSZWN0RjsKK1FUX0VORF9OQU1FU1BBQ0UK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKIG5hbWVzcGFjZSBCbGFja0JlcnJ5
IHsKIG5hbWVzcGFjZSBQbGF0Zm9ybSB7CkBAIC0xODYsNiArMTkyLDEyIEBAIHB1YmxpYzoKICAg
ICBvcGVyYXRvciBOU1JlY3QoKSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUVQpCisg
ICAgRmxvYXRSZWN0KGNvbnN0IFFSZWN0RiYpOworICAgIG9wZXJhdG9yIFFSZWN0RigpIGNvbnN0
OworICAgIEZsb2F0UmVjdCBub3JtYWxpemVkKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFVTRShD
QUlSTykKICAgICBGbG9hdFJlY3QoY29uc3QgY2Fpcm9fcmVjdGFuZ2xlX3QmKTsKICAgICBvcGVy
YXRvciBjYWlyb19yZWN0YW5nbGVfdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFNpemUuaAppbmRleCAwZmE4Y2MxLi43YWFlZDE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaApAQCAtMzEsNiArMzEsMTIg
QEAKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAK
KyNpZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVNpemVGOworUVRf
RU5EX05BTUVTUEFDRQorI2VuZGlmCisKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQogbmFtZXNw
YWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFBsYXRmb3JtIHsKQEAgLTExMiw2ICsxMTgsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gRmxvYXRTaXplKG1faGVpZ2h0LCBtX3dpZHRoKTsK
ICAgICB9CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBleHBsaWNpdCBGbG9hdFNpemUoY29uc3Qg
UVNpemVGJik7CisgICAgb3BlcmF0b3IgUVNpemVGKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgRmxvYXRTaXplKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpGbG9hdFNpemUmKTsKICAgICBvcGVyYXRvciBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Rmxv
YXRTaXplKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5k
ZXggYjBlMmEyNS4uYmQ4ZGJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaApAQCAtMzUsNiArMzUsMTMgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKKyNpZiBQTEFURk9STShRVCkK
KyNpbmNsdWRlIDxRUmF3Rm9udD4KK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVRleHRMYXlv
dXQ7CitRVF9FTkRfTkFNRVNQQUNFCisjZW5kaWYKKwogLy8gIlgxMS9YLmgiIGRlZmluZXMgQ29t
cGxleCB0byAwIGFuZCBjb25mbGljdHMKIC8vIHdpdGggQ29tcGxleCB2YWx1ZSBpbiBDb2RlUGF0
aCBlbnVtLgogI2lmZGVmIENvbXBsZXgKQEAgLTE2Myw2ICsxNzAsMTEgQEAgcHVibGljOgogICAg
IHN0YXRpYyB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IExDaGFyKiwg
c2l6ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlvbiwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbik7CiAg
ICAgc3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoY29uc3QgVUNoYXIq
LCBzaXplX3QgbGVuZ3RoLCBUZXh0RGlyZWN0aW9uLCBib29sJiBpc0FmdGVyRXhwYW5zaW9uKTsK
IAorI2lmIFBMQVRGT1JNKFFUKQorICAgIFFSYXdGb250IHJhd0ZvbnQoKSBjb25zdDsKKyAgICBR
Rm9udCBzeW50aGV0aWNGb250KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFVzZVNtb290aGluZyhib29sKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VTbW9v
dGhpbmcoKTsKIApAQCAtMjk2LDYgKzMwOCwxMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
ZmVhdHVyZXM7CiAgICAgfQogCisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBpbml0Rm9ybWF0
Rm9yVGV4dExheW91dChRVGV4dExheW91dCosIGNvbnN0IFRleHRSdW4mKSBjb25zdDsKKyNlbmRp
ZgorCiAgICAgc3RhdGljIFR5cGVzZXR0aW5nRmVhdHVyZXMgc19kZWZhdWx0VHlwZXNldHRpbmdG
ZWF0dXJlczsKIAogICAgIEZvbnREZXNjcmlwdGlvbiBtX2ZvbnREZXNjcmlwdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApp
bmRleCA3MDBkYjk1Li43YTBmMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yNSw2ICsyNSw4IEBACiAvLyBGSVhN
RTogVGhpcyBpcyB0ZW1wb3JhcnkgdW50aWwgYWxsIHBvcnRzIHN3aXRjaCB0byB1c2luZyB0aGlz
IGZpbGUuCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNpbmNsdWRlICJoYXJmYnV6ei9Gb250
UGxhdGZvcm1EYXRhSGFyZkJ1enouaCIKKyNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgInF0
L0ZvbnRQbGF0Zm9ybURhdGEuaCIKICNlbGlmIFVTRShXSU5HREkpCiAjaW5jbHVkZSAid2luY2Uv
Rm9udFBsYXRmb3JtRGF0YS5oIgogI2VsaWYgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKE5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlci5oCmluZGV4IDNmZmY3N2IuLjY1MTQxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaApAQCAtNTEsNiArNTEsOCBAQCBjbGFz
cyBTaW1wbGVGb250RGF0YTsKIHR5cGVkZWYgY2Fpcm9fZ2x5cGhfdCBHbHlwaEJ1ZmZlckdseXBo
OwogI2VsaWYgVVNFKFdJTkdESSkKIHR5cGVkZWYgd2NoYXJfdCBHbHlwaEJ1ZmZlckdseXBoOwor
I2VsaWYgUExBVEZPUk0oUVQpCit0eXBlZGVmIHF1aW50MzIgR2x5cGhCdWZmZXJHbHlwaDsKICNl
bGlmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiB0eXBlZGVmIHVuc2lnbmVkIEdseXBoQnVmZmVyR2x5
cGg7CiAjZWxzZQpAQCAtNzEsNiArNzMsMTkgQEAgcHVibGljOgogICAgIENHRmxvYXQgd2lkdGgo
KSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1NpemU6OndpZHRoOyB9CiAgICAgQ0dGbG9hdCBoZWln
aHQoKSBjb25zdCB7IHJldHVybiB0aGlzLT5DR1NpemU6OmhlaWdodDsgfQogfTsKKyNlbGlmIFBM
QVRGT1JNKFFUKQorc3RydWN0IEdseXBoQnVmZmVyQWR2YW5jZSA6IHB1YmxpYyBRUG9pbnRGIHsK
K3B1YmxpYzoKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UoKSA6IFFQb2ludEYoKSB7IH0KKyAgICBH
bHlwaEJ1ZmZlckFkdmFuY2UoY29uc3QgUVBvaW50RiYgYWR2YW5jZSkKKyAgICAgICAgOiBRUG9p
bnRGKGFkdmFuY2UpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc2V0V2lkdGgocXJlYWwgd2lk
dGgpIHsgUVBvaW50Rjo6c2V0WCh3aWR0aCk7IH0KKyAgICBxcmVhbCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIFFQb2ludEY6OngoKTsgfQorICAgIHFyZWFsIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IFFQb2ludEY6OnkoKTsgfQorfTsKICNlbHNlCiB0eXBlZGVmIEZsb2F0U2l6ZSBHbHlwaEJ1ZmZl
ckFkdmFuY2U7CiAjZW5kaWYKQEAgLTE0OSw2ICsxNjQsOCBAQCBwdWJsaWM6CiAjaWYgVVNFKENH
KQogICAgICAgICBDR1NpemUgYWR2YW5jZSA9IHsgd2lkdGgsIDAgfTsKICAgICAgICAgbV9hZHZh
bmNlcy5hcHBlbmQoYWR2YW5jZSk7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICAgICAgbV9hZHZh
bmNlcy5hcHBlbmQoUVBvaW50Rih3aWR0aCwgMCkpOwogI2Vsc2UKICAgICAgICAgbV9hZHZhbmNl
cy5hcHBlbmQoRmxvYXRTaXplKHdpZHRoLCAwKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCmluZGV4IDkzNDc0YmYuLmZiMWRmOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaApAQCAtNDIsNiArNDIs
MTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0KiBDR0NvbnRleHRSZWY7CiB0eXBlZGVmIHN0
cnVjdCBDR0dyYWRpZW50KiBDR0dyYWRpZW50UmVmOwogdHlwZWRlZiBDR0dyYWRpZW50UmVmIFBs
YXRmb3JtR3JhZGllbnQ7CiAKKyNlbGlmIFBMQVRGT1JNKFFUKQorUVRfQkVHSU5fTkFNRVNQQUNF
CitjbGFzcyBRR3JhZGllbnQ7CitRVF9FTkRfTkFNRVNQQUNFCit0eXBlZGVmIFFHcmFkaWVudCog
UGxhdGZvcm1HcmFkaWVudDsKICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgc3RydWN0IF9jYWly
b19wYXR0ZXJuIGNhaXJvX3BhdHRlcm5fdDsKIHR5cGVkZWYgY2Fpcm9fcGF0dGVybl90KiBQbGF0
Zm9ybUdyYWRpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWZiNWQ5Yi4uOGM1YjVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBA
IC0xODksNyArMTg5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6Omhhc0JsdXJyZWRTaGFkb3co
KSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0
YXRlLnNoYWRvd0NvbG9yLmFscGhhKCkgJiYgbV9zdGF0ZS5zaGFkb3dCbHVyOwogfQogCi0jaWYg
VVNFKENBSVJPKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBVU0UoQ0FJUk8pCiBib29sIEdyYXBoaWNz
Q29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogewogICAgIC8vIFdlIGNhbid0IGF2
b2lkIFNoYWRvd0JsdXIgaWYgdGhlIHNoYWRvdyBoYXMgYmx1ci4KQEAgLTM4MCwxMCArMzgwLDEy
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgLS1t
X3RyYW5zcGFyZW5jeUNvdW50OwogfQogCisjaWYgIVBMQVRGT1JNKFFUKQogYm9vbCBHcmFwaGlj
c0NvbnRleHQ6OmlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuICht
X3RyYW5zcGFyZW5jeUNvdW50ID4gMCkgJiYgc3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKTsK
IH0KKyNlbmRpZgogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRpbmdDb250cm9sVGludHMo
KSBjb25zdAogewpAQCAtNTk3LDEwICs1OTksMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclMK
ICAgICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMsIG9w
LCBibGVuZE1vZGUsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CiAKKyNpZiAhUExBVEZPUk0oUVQp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGNsaXAoRmxvYXRSZWN0KHJlY3QpKTsKIH0KKyNlbmRpZgogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2xpcFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0JiByZWN0KQogewpAQCAtNjM5LDcg
KzY0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlCiAgICAgYnVmZmVyLT5jbGlwKHRoaXMs
IHJlY3QpOwogfQogCi0jaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKKyNpZiAhVVNFKENHKSAm
JiAhUExBVEZPUk0oUVQpICYmICFVU0UoQ0FJUk8pCiBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6
Y2xpcEJvdW5kcygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02ODks
NyArNjkzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBS
b3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG8KICAgICAgICAgZmlsbFJlY3QocmVj
dC5yZWN0KCksIGNvbG9yLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRN
b2RlKTsKIH0KIAotI2lmICFVU0UoQ0cpICYmICFVU0UoQ0FJUk8pCisjaWYgIVVTRShDRykgJiYg
IVBMQVRGT1JNKFFUKSAmJiAhVVNFKENBSVJPKQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03NTIsNyArNzU2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3
aW5nTW9kZUZsYWdzKQogfQogI2VuZGlmCiAKLSNpZiAhVVNFKENBSVJPKQorI2lmICFQTEFURk9S
TShRVCkgJiYgIVVTRShDQUlSTykKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0
cm9rZVN0eWxlKFN0cm9rZVN0eWxlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyODYxZWRiLi45NzNkYmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDYsNiArNDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9y
bUNvbnRleHRDYWlybzsKIH0KIHR5cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8g
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxR
UGFpbnRlcj4KK3R5cGVkZWYgUVBhaW50ZXIgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZWxp
ZiBVU0UoV0lOR0RJKQogdHlwZWRlZiBzdHJ1Y3QgSERDX18gUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQ7CiAjZWxpZiBQTEFURk9STShCTEFDS0JFUlJZKQpAQCAtNzAsNiArNzMsMTAgQEAgdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyIFVJbnQ4OwogI2VuZGlmCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFU
KSAmJiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoV0lOR0RJKQpAQCAtMzU5LDcgKzM2Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGVhclNoYWRvdygpOwogCiAgICAgICAgIGJv
b2wgaGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0OwotI2lmIFVTRShDQUlSTykKKyNpZiBQTEFURk9S
TShRVCkgfHwgVVNFKENBSVJPKQogICAgICAgICBib29sIG11c3RVc2VTaGFkb3dCbHVyKCkgY29u
c3Q7CiAjZW5kaWYKIApAQCAtNDc4LDYgKzQ4NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpCiAKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICAgICAgdm9pZCBwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChjb25z
dCBRUmVjdCYsIHFyZWFsLCBRUGl4bWFwJik7CisgICAgICAgIHZvaWQgdGFrZU93bmVyc2hpcE9m
UGxhdGZvcm1Db250ZXh0KCk7CisjZW5kaWYKKwogI2lmIFVTRShDQUlSTykKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KGNhaXJvX3QqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDdhMzhkOGMu
LjE1OTA4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHVuc2lnbmVkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRDaGFubmVsQml0c0J5Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCkK
ICAgICB9CiB9CiAKLSNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgIVBMQVRGT1JNKEdUSykg
JiYgIVBMQVRGT1JNKEVGTCkgJiYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikgJiYg
IVBMQVRGT1JNKE5JWCkKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgIVBMQVRGT1JNKFFU
KSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oRUZMKSAmJiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oTklYKQogUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIE51bGxQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggMzY1NTdmYS4uNzhiNWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC00MiwxNCArNDIsMTQgQEAKICNlbmRp
ZgogCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gYXZvaWQgdGhlIG5hbWUgY29uZmxp
Y3Rpb24gZm9yIE5PX0VSUk9SLgotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU4p
IHx8IChQTEFURk9STShRVCkgJiYgT1MoV0lORE9XUykpCiAjdW5kZWYgTk9fRVJST1IKICNlbGlm
IFBMQVRGT1JNKEdUSykKIC8vIFRoaXMgZGVmaW5lIGlzIGZyb20gdGhlIFgxMSBoZWFkZXJzLCBi
dXQgaXQncyB1c2VkIGJlbG93LCBzbyB3ZSBtdXN0IHVuZGVmaW5lIGl0LgogI3VuZGVmIFZFUlNJ
T04KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFU
Rk9STShOSVgpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oTklYKQogI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAj
ZW5kaWYKIApAQCAtNTcsNiArNTcsMTMgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBP
QkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdMTGF5ZXI7CisjZWxpZiBQTEFURk9S
TShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVBhaW50ZXI7CitjbGFzcyBRUmVjdDsK
K2NsYXNzIFFPcGVuR0xDb250ZXh0OworY2xhc3MgUVN1cmZhY2U7CitRVF9FTkRfTkFNRVNQQUNF
CiAjZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKQog
dHlwZWRlZiB1bnNpZ25lZCBpbnQgR0x1aW50OwogI2VuZGlmCkBAIC02NSw2ICs3Miw5IEBAIHR5
cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKIHR5cGVkZWYgc3RydWN0IF9DR0xDb250ZXh0T2Jq
ZWN0ICpDR0xDb250ZXh0T2JqOwogCiB0eXBlZGVmIENHTENvbnRleHRPYmogUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRDsKKyNlbGlmIFBMQVRGT1JNKFFUKQordHlwZWRlZiBRT3BlbkdMQ29udGV4
dCogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRDsKK3R5cGVkZWYgUVN1cmZhY2UqIFBsYXRmb3Jt
R3JhcGhpY3NTdXJmYWNlM0Q7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEOwpAQCAt
ODIsNiArOTIsOSBAQCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xFUzsKICNlbHNlCiBjbGFzcyBF
eHRlbnNpb25zM0RPcGVuR0w7CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKK2NsYXNzIEV4dGVu
c2lvbnMzRFF0OworI2VuZGlmCiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2U7CiBjbGFz
cyBJbWFnZUJ1ZmZlcjsKQEAgLTQ4OCw3ICs1MDEsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oV0lO
KSB8fCBQTEFURk9STShOSVgpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8
IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oTklYKQogICAgIC8vIFdpdGggbXVsdGlzYW1wbGlu
ZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAgIHZvaWQg
cHJlcGFyZVRleHR1cmUoKTsKICNlbmRpZgpAQCAtNzcwLDYgKzc4Myw5IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgVVNFKENBSVJPKQogICAgIHZvaWQg
cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWdl
V2lkdGgsIGludCBpbWFnZUhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbnZh
c1dpZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyogY29udGV4dCk7
CisjZWxpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWdu
ZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwg
UVBhaW50ZXIqIGNvbnRleHQpOwogI2VsaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgVVNFKENH
KQogICAgIHZvaWQgcGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVs
cywgaW50IGltYWdlV2lkdGgsIGludCBpbWFnZUhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGNhbnZhc1dpZHRoLCBpbnQgY2FudmFzSGVpZ2h0LCBHcmFwaGljc0NvbnRleHQqKTsK
QEAgLTg4Nyw2ICs5MDMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERh
dGE7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4
RGF0YTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgICAgICBRSW1hZ2UgbV9xdEltYWdlOwogI2Vs
aWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ltYWdl
RGF0YTsKICNlbmRpZgpAQCAtOTExLDcgKzkyOSw3IEBAIHByaXZhdGU6CiAgICAgLy8gRGVzdGlu
YXRpb24gZGF0YSB3aWxsIGhhdmUgbm8gZ2FwcyBiZXR3ZWVuIHJvd3MuCiAgICAgc3RhdGljIGJv
b2wgcGFja1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBEYXRhRm9ybWF0IHNvdXJj
ZURhdGFGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIHNv
dXJjZVVucGFja0FsaWdubWVudCwgdW5zaWduZWQgZGVzdGluYXRpb25Gb3JtYXQsIHVuc2lnbmVk
IGRlc3RpbmF0aW9uVHlwZSwgQWxwaGFPcCwgdm9pZCogZGVzdGluYXRpb25EYXRhLCBib29sIGZs
aXBZKTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0o
TklYKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShXSU4p
IHx8IFBMQVRGT1JNKE5JWCkKICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJl
cXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCiAgICAgLy8gaW4gcGFydGljdWxh
ciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAg
ICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRo
ZSBPcGVuR0wKQEAgLTkzMiw3ICs5NTAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXNoYXBl
RkJPcyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVj
ZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKLSNpZiAoUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShOSVgpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpZiAoUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKSkgJiYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmKTsK
ICNlbmRpZgogCkBAIC05NTEsNyArOTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBtX2NvbnRl
eHQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExB
VEZPUk0oTklYKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9S
TShXSU4pIHx8IFBMQVRGT1JNKE5JWCkKICAgICBzdHJ1Y3QgU3ltYm9sSW5mbyB7CiAgICAgICAg
IFN5bWJvbEluZm8oKQogICAgICAgICAgICAgOiB0eXBlKDApCkBAIC0xMDEyLDcgKzEwMzAsNyBA
QCBwcml2YXRlOgogICAgIE93blB0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFk
ZXJzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShCTEFDS0JFUlJZKSB8fCAoKFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKE5JWCkpICYm
IFVTRShPUEVOR0xfRVNfMikpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgKFBMQVRGT1JN
KFFUKSAmJiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKSkgfHwgKChQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpKSAmJiBVU0UoT1BF
TkdMX0VTXzIpKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xFUzsKICAgICBP
d25QdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4
IDViMjI2OTguLmUwMDkwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCwgTGF5ZXJU
cmVlQXNUZXh0QmUKICAgICAgICAgdHMgPDwgIihwcmVzZXJ2ZXMzRCAiIDw8IG1fcHJlc2VydmVz
M0QgPDwgIilcbiI7CiAgICAgfQogCi0gICAgaWYgKG1fZHJhd3NDb250ZW50ICYmIG1fY2xpZW50
LT5zaG91bGREdW1wUHJvcGVydHlGb3JMYXllcih0aGlzLCAiZHJhd3NDb250ZW50IikpIHsKKyAg
ICBpZiAobV9kcmF3c0NvbnRlbnQpIHsKICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCAr
IDEpOwogICAgICAgICB0cyA8PCAiKGRyYXdzQ29udGVudCAiIDw8IG1fZHJhd3NDb250ZW50IDw8
ICIpXG4iOwogICAgIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OmR1
bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50LCBMYXllclRyZWVBc1RleHRC
ZQogICAgICAgICB0cyA8PCAiKVxuIjsKICAgICB9CiAKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ29s
b3IuaXNWYWxpZCgpICYmIG1fY2xpZW50LT5zaG91bGREdW1wUHJvcGVydHlGb3JMYXllcih0aGlz
LCAiYmFja2dyb3VuZENvbG9yIikpIHsKKyAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3IuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgdHMg
PDwgIihiYWNrZ3JvdW5kQ29sb3IgIiA8PCBtX2JhY2tncm91bmRDb2xvci5uYW1lRm9yUmVuZGVy
VHJlZUFzVGV4dCgpIDw8ICIpXG4iOwogICAgIH0KQEAgLTY5Niw3ICs2OTYsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXI6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50LCBM
YXllclRyZWVBc1RleHRCZQogICAgICAgICB0cyA8PCAiKVxuIjsKICAgICB9CiAKLSAgICBpZiAo
YmVoYXZpb3IgJiBMYXllclRyZWVBc1RleHRJbmNsdWRlUmVwYWludFJlY3RzICYmIHJlcGFpbnRS
ZWN0TWFwKCkuY29udGFpbnModGhpcykgJiYgIXJlcGFpbnRSZWN0TWFwKCkuZ2V0KHRoaXMpLmlz
RW1wdHkoKSAmJiBtX2NsaWVudC0+c2hvdWxkRHVtcFByb3BlcnR5Rm9yTGF5ZXIodGhpcywgInJl
cGFpbnRSZWN0cyIpKSB7CisgICAgaWYgKGJlaGF2aW9yICYgTGF5ZXJUcmVlQXNUZXh0SW5jbHVk
ZVJlcGFpbnRSZWN0cyAmJiByZXBhaW50UmVjdE1hcCgpLmNvbnRhaW5zKHRoaXMpICYmICFyZXBh
aW50UmVjdE1hcCgpLmdldCh0aGlzKS5pc0VtcHR5KCkpIHsKICAgICAgICAgd3JpdGVJbmRlbnQo
dHMsIGluZGVudCArIDEpOwogICAgICAgICB0cyA8PCAiKHJlcGFpbnQgcmVjdHNcbiI7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwYWludFJlY3RNYXAoKS5nZXQodGhpcykuc2l6
ZSgpOyArK2kpIHsKQEAgLTc0NCwyOSArNzQ0LDE0IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6ZHVt
cFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQsIExheWVyVHJlZUFzVGV4dEJl
CiAgICAgZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzKHRzLCBpbmRlbnQsIGJlaGF2aW9yKTsKICAg
ICAKICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkpIHsKLSAgICAgICAgVGV4dFN0cmVhbSBjaGls
ZHJlblN0cmVhbTsKLSAgICAgICAgdW5zaWduZWQgdG90YWxDaGlsZENvdW50ID0gbV9jaGlsZHJl
bi5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4
IDwgbV9jaGlsZHJlbi5zaXplKCk7IGNoaWxkSW5kZXgrKykgewotICAgICAgICAgICAgR3JhcGhp
Y3NMYXllciogY2hpbGQgPSBtX2NoaWxkcmVuW2NoaWxkSW5kZXhdOwotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC0+c2hvdWxkU2tpcExheWVySW5EdW1wKGNoaWxkKSkgewotICAgICAgICAgICAg
ICAgIGNoaWxkLT5kdW1wTGF5ZXIoY2hpbGRyZW5TdHJlYW0sIGluZGVudCArIDIsIGJlaGF2aW9y
KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICAgICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgZ3JhbmRDaGlsZHJl
biA9IGNoaWxkLT5jaGlsZHJlbigpOwotICAgICAgICAgICAgdG90YWxDaGlsZENvdW50ICs9IGdy
YW5kQ2hpbGRyZW4uc2l6ZSgpIC0gMTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGdyYW5kQ2hp
bGRJbmRleCA9IDA7IGdyYW5kQ2hpbGRJbmRleCA8IGdyYW5kQ2hpbGRyZW4uc2l6ZSgpOyBncmFu
ZENoaWxkSW5kZXgrKykKLSAgICAgICAgICAgICAgICBncmFuZENoaWxkcmVuW2dyYW5kQ2hpbGRJ
bmRleF0tPmR1bXBMYXllcihjaGlsZHJlblN0cmVhbSwgaW5kZW50ICsgMiwgYmVoYXZpb3IpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgd3JpdGVJbmRlbnQoY2hpbGRyZW5TdHJlYW0sIGluZGVudCAr
IDEpOwotICAgICAgICBjaGlsZHJlblN0cmVhbSA8PCAiKVxuIjsKLQotICAgICAgICBpZiAodG90
YWxDaGlsZENvdW50KSB7Ci0gICAgICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7
Ci0gICAgICAgICAgICB0cyA8PCAiKGNoaWxkcmVuICIgPDwgdG90YWxDaGlsZENvdW50IDw8ICJc
biI7Ci0gICAgICAgICAgICB0cyA8PCBjaGlsZHJlblN0cmVhbS5yZWxlYXNlKCk7Ci0gICAgICAg
IH0KKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOworICAgICAgICB0cyA8PCAi
KGNoaWxkcmVuICIgPDwgbV9jaGlsZHJlbi5zaXplKCkgPDwgIlxuIjsKKyAgICAgICAgCisgICAg
ICAgIHVuc2lnbmVkIGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUo
KTsgaSsrKQorICAgICAgICAgICAgbV9jaGlsZHJlbltpXS0+ZHVtcExheWVyKHRzLCBpbmRlbnQg
KyAyLCBiZWhhdmlvcik7CisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAg
ICAgICAgdHMgPDwgIilcbiI7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgKaW5kZXggMDg0NTQ1Zi4u
YmRmNmE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDbGllbnQuaApAQCAtOTAsOSArOTAsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTa2lwTGF5ZXJJbkR1bXAoY29uc3QgR3JhcGhpY3NM
YXllciopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1
bXBQcm9wZXJ0eUZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBjaGFyKikgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIFJlbmRlckxheWVy
QmFja2luZyBvdmVycmlkZXMgdGhpcyB0byB2ZXJpZnkgdGhhdCBpdCBpcyBub3QKICAgICAvLyBj
dXJyZW50bHkgcGFpbnRpbmcgY29udGVudHMuIEFuIEFTU0VSVCBmYWlscywgaWYgaXQgaXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggMmFiN2NhMC4uYTc4YjI2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtMzEsNiArMzEs
OCBAQAogT0JKQ19DTEFTUyBOU0ltYWdlOwogI2VsaWYgUExBVEZPUk0oV0lOKQogdHlwZWRlZiBz
dHJ1Y3QgSElDT05fXyogSElDT047CisjZWxpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRSWNv
bj4KICNlbGlmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9HZGtQaXhidWYgR2RrUGl4
YnVmOwogI2VuZGlmCkBAIC01OSw2ICs2MSw5IEBAIHByaXZhdGU6CiAjZWxpZiBQTEFURk9STShX
SU4pCiAgICAgSWNvbihISUNPTik7CiAgICAgSElDT04gbV9oSWNvbjsKKyNlbGlmIFBMQVRGT1JN
KFFUKQorICAgIEljb24oKTsKKyAgICBRSWNvbiBtX2ljb247CiAjZWxpZiBQTEFURk9STShHVEsp
CiAgICAgSWNvbigpOwogICAgIEdka1BpeGJ1ZiogbV9pY29uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggYTg3MDE5OS4uOTg3YTU2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC01NCw2ICs1NCwxMCBAQCB0eXBlZGVm
IFNJWkUqIExQU0laRTsKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UVBpeG1hcD4KKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oR1RLKQogdHlwZWRlZiBzdHJ1Y3QgX0dka1BpeGJ1ZiBHZGtQaXhidWY7CiAjZW5k
aWYKQEAgLTE2Niw2ICsxNzAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElt
YWdlPiBsb2FkUGxhdGZvcm1UaGVtZUljb24oY29uc3QgY2hhciogbmFtZSwgaW50IHNpemUpOwog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBzdGF0aWMgdm9pZCBzZXRQbGF0Zm9ybVJl
c291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFQaXhtYXAmKTsKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oRUZMKQogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZh
cyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaAppbmRleCAyNjI2NDczLi4wZjU5ZTAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEu
aApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YUNHLmgiCiAjZWxp
ZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCIKKyNlbGlmIFBM
QVRGT1JNKFFUKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YVF0LmgiCiAjZWxpZiBVU0UoV0lO
R0RJKQogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YVdpbmNlLmgiCiAjZWxpZiBQTEFURk9STShC
TEFDS0JFUlJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgK
aW5kZXggMTY5MjAzNy4uZTVjN2EzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRQb2ludC5oCkBAIC0zNCw3ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0IENHUG9pbnQg
Q0dQb2ludDsKICNlbmRpZgogCiAKLSNpZiBPUyhEQVJXSU4pCisjaWYgT1MoREFSV0lOKSAmJiAh
UExBVEZPUk0oUVQpCiAjaWZkZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllf
VFlQRVMKIHR5cGVkZWYgc3RydWN0IENHUG9pbnQgTlNQb2ludDsKICNlbHNlCkBAIC00NSw2ICs0
NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBfTlNQb2ludCBOU1BvaW50OwogI2lmIFBMQVRGT1JNKFdJ
TikKIHR5cGVkZWYgc3RydWN0IHRhZ1BPSU5UIFBPSU5UOwogdHlwZWRlZiBzdHJ1Y3QgdGFnUE9J
TlRTIFBPSU5UUzsKKyNlbGlmIFBMQVRGT1JNKFFUKQorUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFz
cyBRUG9pbnQ7CitRVF9FTkRfTkFNRVNQQUNFCiAjZWxpZiBQTEFURk9STShHVEspCiB0eXBlZGVm
IHN0cnVjdCBfR2RrUG9pbnQgR2RrUG9pbnQ7CiAjZWxpZiBQTEFURk9STShCTEFDS0JFUlJZKQpA
QCAtMTExLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBDR1BvaW50KCkgY29uc3Q7
CiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19T
QU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisjaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oUVQp
ICYmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKQog
ICAgIGV4cGxpY2l0IEludFBvaW50KGNvbnN0IE5TUG9pbnQmKTsgLy8gZG9uJ3QgZG8gdGhpcyBp
bXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKICAgICBvcGVyYXRvciBOU1BvaW50KCkgY29uc3Q7
CiAjZW5kaWYKQEAgLTEyMSw2ICsxMjUsOSBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgUE9JTlQo
KSBjb25zdDsKICAgICBJbnRQb2ludChjb25zdCBQT0lOVFMmKTsKICAgICBvcGVyYXRvciBQT0lO
VFMoKSBjb25zdDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIEludFBvaW50KGNvbnN0IFFQb2lu
dCYpOworICAgIG9wZXJhdG9yIFFQb2ludCgpIGNvbnN0OwogI2VsaWYgUExBVEZPUk0oR1RLKQog
ICAgIEludFBvaW50KGNvbnN0IEdka1BvaW50Jik7CiAgICAgb3BlcmF0b3IgR2RrUG9pbnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAppbmRleCBi
Nzc4YzRjLi5jOTlmYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5oCkBAIC00Myw2ICs0MywxMCBAQCB0eXBlZGVmIHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsK
IAogI2lmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgc3RydWN0IHRhZ1JFQ1QgUkVDVDsKKyNlbGlm
IFBMQVRGT1JNKFFUKQorUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRUmVjdDsKK1FUX0VORF9O
QU1FU1BBQ0UKICNlbGlmIFBMQVRGT1JNKEdUSykKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgog
dHlwZWRlZiBzdHJ1Y3QgX0dka1JlY3RhbmdsZSBHZGtSZWN0YW5nbGU7CkBAIC0xNzMsNiArMTc3
LDkgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICBJbnRSZWN0KGNvbnN0IFJFQ1Qm
KTsKICAgICBvcGVyYXRvciBSRUNUKCkgY29uc3Q7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBJ
bnRSZWN0KGNvbnN0IFFSZWN0Jik7CisgICAgb3BlcmF0b3IgUVJlY3QoKSBjb25zdDsKICNlbGlm
IFBMQVRGT1JNKEdUSykKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogICAgIEludFJlY3QoY29u
c3QgR2RrUmVjdGFuZ2xlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRT
aXplLmgKaW5kZXggZGI3ZGJhNy4uMzA3NzQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemUuaApAQCAtNDIsNiArNDIsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgX05T
U2l6ZSBOU1NpemU7CiAKICNpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIHN0cnVjdCB0YWdTSVpF
IFNJWkU7CisjZWxpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxxZ2xvYmFsLmg+CitRVF9CRUdJ
Tl9OQU1FU1BBQ0UKK2NsYXNzIFFTaXplOworUVRfRU5EX05BTUVTUEFDRQogI2VsaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBQbGF0Zm9y
bSB7CkBAIC0xNDAsNiArMTQ1LDExIEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBTSVpFKCkgY29u
c3Q7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIEludFNpemUoY29uc3QgUVNpemUm
KTsKKyAgICBvcGVyYXRvciBRU2l6ZSgpIGNvbnN0OworI2VuZGlmCisKICNpZiBQTEFURk9STShC
TEFDS0JFUlJZKQogICAgIEludFNpemUoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFNp
emUmKTsKICAgICBvcGVyYXRvciBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50U2l6ZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDM4Y2E1ODYuLjNiYzhiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTQ4LDYgKzQ4LDEwIEBACiAjaW5jbHVkZSAi
SFRNTE1lZGlhU291cmNlLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PFF0R2xvYmFsPgorI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgogI2RlZmluZSBQbGF0Zm9ybU1lZGlhRW5naW5lQ2xh
c3NOYW1lIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcgpAQCAtNTgsNyArNjIsNyBAQAogI2lm
IFVTRShBVkZPVU5EQVRJT04pCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIgogI2VuZGlmCi0jZWxpZiBPUyhXSU5DRSkKKyNlbGlmIE9TKFdJTkNFKSAmJiAh
UExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaCIKICNkZWZp
bmUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFtZSBNZWRpYVBsYXllclByaXZhdGUKICNlbGlm
IFBMQVRGT1JNKFdJTikKQEAgLTY3LDYgKzcxLDExIEBACiAjaWYgVVNFKEFWRk9VTkRBVElPTikK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIgogI2VuZGlmCisj
ZWxpZiBQTEFURk9STShRVCkKKyNpZiBVU0UoUVRfTVVMVElNRURJQSkgJiYgIVVTRShHU1RSRUFN
RVIpCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCIKKyNkZWZpbmUgUGxhdGZvcm1N
ZWRpYUVuZ2luZUNsYXNzTmFtZSBNZWRpYVBsYXllclByaXZhdGVRdAorI2VuZGlmCiAjZWxpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVy
cnkuaCIKICNkZWZpbmUgUGxhdGZvcm1NZWRpYUVuZ2luZUNsYXNzTmFtZSBNZWRpYVBsYXllclBy
aXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCmluZGV4IGEyYWIxMWUuLjM3NTQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtMzAsNiArMzAsMTIgQEAKIAog
I2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBQ
TEFURk9STShRVCkKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCisjaW5jbHVkZSA8cWdsb2Jh
bC5oPgorUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRUGl4bWFwOworUVRfRU5EX05BTUVTUEFD
RQogI2VsaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjZWxpZiBVU0Uo
V0lOR0RJKQpAQCAtNTAsNiArNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBwb2ludGVy
cyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4KICNpZiBVU0Uo
Q0cpCiB0eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBQTEFURk9STShR
VCkKK3R5cGVkZWYgUVBpeG1hcCogTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0
eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiBQ
YXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCmluZGV4IGI0OTU4
MTQuLjcyNTZmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L09wZW5HTEVTU2hpbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9P
cGVuR0xFU1NoaW1zLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgT3BlbkdMRVNTaGltc19o
CiAjZGVmaW5lIE9wZW5HTEVTU2hpbXNfaAogCi0jaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZP
Uk0oTklYKQorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShO
SVgpCiAjZGVmaW5lIGdsQmluZEZyYW1lYnVmZmVyRVhUIGdsQmluZEZyYW1lYnVmZmVyCiAjZGVm
aW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAogI2Rl
ZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQgZ2xCaW5kUmVuZGVyYnVmZmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAKaW5kZXggNTA3MzRm
OS4uNmEwM2JmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
T3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09w
ZW5HTFNoaW1zLmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBESVNBQkxFX1NISU1TCiAj
aW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKIAotI2lmICFQTEFURk9STShXSU4pCisjaWYgIVBMQVRG
T1JNKFFUKSAmJiAhUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKIApA
QCAtNDEsNyArNDEsMTQgQEAgT3BlbkdMRnVuY3Rpb25UYWJsZSogb3BlbkdMRnVuY3Rpb25UYWJs
ZSgpCiAgICAgcmV0dXJuICZ0YWJsZTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFU
Rk9STShRVCkKK3N0YXRpYyB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyKiBwcm9jTmFt
ZSkKK3sKKyAgICBpZiAoUU9wZW5HTENvbnRleHQqIGNvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6
Y3VycmVudENvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGNvbnRleHQtPmdldFByb2NBZGRyZXNzKHByb2NOYW1lKSk7CisgICAgcmV0dXJuIDA7Cit9Cisj
ZWxpZiBQTEFURk9STShXSU4pCiBzdGF0aWMgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgY2hh
ciogcHJvY05hbWUpCiB7CiAgICAgcmV0dXJuIEdldFByb2NBZGRyZXNzKEdldE1vZHVsZUhhbmRs
ZUEoImxpYkdMRVN2MiIpLCBwcm9jTmFtZSk7CkBAIC0xMDgsNyArMTE1LDcgQEAgc3RhdGljIHZv
aWQqIGxvb2t1cE9wZW5HTEZ1bmN0aW9uQWRkcmVzcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGJvb2wqIHN1Y2Nlc3MKICAgICByZXR1cm4gdGFyZ2V0OwogfQogCi0jaWYgUExBVEZPUk0oTklY
KSAmJiBVU0UoT1BFTkdMX0VTXzIpCisjaWYgKFBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKFFUX09Q
RU5HTF9FU18yKSkgfHwgKFBMQVRGT1JNKE5JWCkgJiYgVVNFKE9QRU5HTF9FU18yKSkKIAogLy8g
V2l0aCBBbmdsZSBvbmx5IEVHTC9HTEVTMiBleHRlbnNpb25zIGFyZSBhdmFpbGFibGUgdGhyb3Vn
aCBlZ2xHZXRQcm9jQWRkcmVzcywgbm90IHRoZSByZWd1bGFyIHN0YW5kYXJkaXplZCBmdW5jdGlv
bnMuCiAjZGVmaW5lIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShGdW5jdGlvbk5hbWUsIHN1
Y2Nlc3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09w
ZW5HTFNoaW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGlt
cy5oCmluZGV4IGZhNjk2ZjMuLmE3MzA5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaApAQCAtMjAsNyArMjAsMTIgQEAKICNpZm5kZWYgT3Bl
bkdMU2hpbXNfaAogI2RlZmluZSBPcGVuR0xTaGltc19oCiAKLSNpZiBQTEFURk9STShOSVgpICYm
IFVTRShPUEVOR0xfRVNfMikKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxxZ2xvYmFsLmg+
CisjaW5jbHVkZSA8cW9wZW5nbGZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0
PgorI2luY2x1ZGUgPFFTdXJmYWNlPgorI2VsaWYgUExBVEZPUk0oTklYKSAmJiBVU0UoT1BFTkdM
X0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjZWxzZQogI2luY2x1ZGUgPEdML2dsLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmluZGV4IDJiMDQ5NTEu
LmQ2NmFkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCkBA
IC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmICFQTEFURk9STShR
VCkKIHN0YXRpYyB2b2lkIHBhdGhMZW5ndGhBcHBsaWVyRnVuY3Rpb24odm9pZCogaW5mbywgY29u
c3QgUGF0aEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgUGF0aFRyYXZlcnNhbFN0YXRlJiB0cmF2
ZXJzYWxTdGF0ZSA9ICpzdGF0aWNfY2FzdDxQYXRoVHJhdmVyc2FsU3RhdGUqPihpbmZvKTsKQEAg
LTkwLDYgKzkxLDcgQEAgZmxvYXQgUGF0aDo6bm9ybWFsQW5nbGVBdExlbmd0aChmbG9hdCBsZW5n
dGgsIGJvb2wmIG9rKSBjb25zdAogICAgIG9rID0gdHJhdmVyc2FsU3RhdGUubV9zdWNjZXNzOwog
ICAgIHJldHVybiB0cmF2ZXJzYWxTdGF0ZS5tX25vcm1hbEFuZ2xlOwogfQorI2VuZGlmCiAKIHZv
aWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgUm91bmRlZFJlY3QmIHIpCiB7CkBAIC0xODUs
NyArMTg3LDcgQEAgdm9pZCBQYXRoOjphZGRCZXppZXJzRm9yUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHRvcEwKICAgICBjbG9zZVN1YnBhdGgoKTsK
IH0KIAotI2lmICFVU0UoQ0cpCisjaWYgIVVTRShDRykgJiYgIVBMQVRGT1JNKFFUKQogRmxvYXRS
ZWN0IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAogewogICAgIHJldHVybiBib3VuZGlu
Z1JlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCBkYjY0
NWUwLi4xMjIyMTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBA
IC0zNCw2ICszNCw5IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR1BhdGggUGxh
dGZvcm1QYXRoOworI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8cXBhaW50ZXJwYXRoLmg+
Cit0eXBlZGVmIFFQYWludGVyUGF0aCBQbGF0Zm9ybVBhdGg7CiAjZWxpZiBVU0UoQ0FJUk8pCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWlyb1BhdGg7CkBAIC01Myw3ICs1NiwxMiBAQCB0
eXBlZGVmIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6UGF0aCBQbGF0Zm9ybVBhdGg7
CiB0eXBlZGVmIHZvaWQgUGxhdGZvcm1QYXRoOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkK
Ky8qIFFQYWludGVyUGF0aCBpcyB2YWx1ZWQgYmFzZWQgKi8KK3R5cGVkZWYgUGxhdGZvcm1QYXRo
IFBsYXRmb3JtUGF0aFB0cjsKKyNlbHNlCiB0eXBlZGVmIFBsYXRmb3JtUGF0aCogUGxhdGZvcm1Q
YXRoUHRyOworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA1LDcgKzExMywx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IG5vcm1hbEFuZ2xlQXRMZW5n
dGgoZmxvYXQgbGVuZ3RoLCBib29sJiBvaykgY29uc3Q7CiAKICAgICAgICAgdm9pZCBjbGVhcigp
OworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisjZWxzZQogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFt
X3BhdGg7IH0KKyNlbmRpZgogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKICAgICAgICAg
Ly8gR2V0cyB0aGUgY3VycmVudCBwb2ludCBvZiB0aGUgY3VycmVudCBwYXRoLCB3aGljaCBpcyBj
b25jZXB0dWFsbHkgdGhlIGZpbmFsIHBvaW50IHJlYWNoZWQgYnkgdGhlIHBhdGggc28gZmFyLgog
ICAgICAgICAvLyBOb3RlIHRoZSBQYXRoIGNhbiBiZSBlbXB0eSAoaXNFbXB0eSgpID09IHRydWUp
IGFuZCBzdGlsbCBoYXZlIGEgY3VycmVudCBwb2ludC4KQEAgLTEzNSwxMCArMTQ3LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXpl
Jik7CiAKICAgICAgICAgLy8gVG8ga2VlcCBQYXRoKCkgY2hlYXAsIGl0IGRvZXMgbm90IGFsbG9j
YXRlIGEgUGxhdGZvcm1QYXRoIGltbWVkaWF0ZWx5Ci0gICAgICAgIC8vIG1lYW5pbmcgUGF0aDo6
cGxhdGZvcm1QYXRoKCkgY2FuIHJldHVybiBudWxsLgorICAgICAgICAvLyBtZWFuaW5nIFBhdGg6
OnBsYXRmb3JtUGF0aCgpIGNhbiByZXR1cm4gbnVsbCAoZXhjZXB0IG9uIFF0KS4KICAgICAgICAg
UGxhdGZvcm1QYXRoUHRyIHBsYXRmb3JtUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQor
I2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBQbGF0Zm9ybVBhdGhQdHIgZW5zdXJlUGxhdGZvcm1Q
YXRoKCkgeyByZXR1cm4gcGxhdGZvcm1QYXRoKCk7IH0KKyNlbHNlCiAgICAgICAgIC8vIGVuc3Vy
ZVBsYXRmb3JtUGF0aCgpIHdpbGwgYWxsb2NhdGUgYSBQbGF0Zm9ybVBhdGggaWYgaXQgaGFzIG5v
dCB5ZXQgYmVlbiBhbmQgd2lsbCBuZXZlciByZXR1cm4gbnVsbC4KICAgICAgICAgUGxhdGZvcm1Q
YXRoUHRyIGVuc3VyZVBsYXRmb3JtUGF0aCgpOworI2VuZGlmCiAKICAgICAgICAgdm9pZCBhcHBs
eSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllckZ1bmN0aW9uKSBjb25zdDsKICAgICAgICAgdm9pZCB0
cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggNTg1MDg1OC4uZWYzNDdkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAtNDAsNiArNDAsOSBAQCB0eXBl
ZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9ybVBhdHRlcm5QdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiAj
aW5jbHVkZSA8Y2Fpcm8uaD4KIHR5cGVkZWYgY2Fpcm9fcGF0dGVybl90KiBQbGF0Zm9ybVBhdHRl
cm5QdHI7CisjZWxpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRQnJ1c2g+Cit0eXBlZGVmIFFC
cnVzaCBQbGF0Zm9ybVBhdHRlcm5QdHI7CiAjZWxpZiBVU0UoV0lOR0RJKQogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybVBhdHRlcm5QdHI7CiAjZW5kaWYKQEAgLTU5LDcgKzYyLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCiAgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBh
biBhYnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0
aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybWF0aW9uJyAKKyNpZiBQTEFURk9S
TShRVCkKKyAgICAvLyBRdCBpZ25vcmVzIHVzZXIgc3BhY2UgdHJhbnNmb3JtYXRpb24gYW5kIHVz
ZXMgcGF0dGVybidzIGluc3RlYWQKKyAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZv
cm1QYXR0ZXJuKCkgY29uc3Q7CisjZWxzZQogICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm1h
dGlvbikgY29uc3Q7CisjZW5kaWYKICAgICB2b2lkIHNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uKTsKICAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpIHsgcmV0dXJu
IG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247IH07CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVBh
dHRlcm5TcGFjZVRyYW5zZm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1MYXllci5oCmluZGV4IDdmMmYzZjguLjM2YTkzZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKQEAgLTMzLDYg
KzMzLDExIEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIHR5cGVkZWYgQ0FMYXllciBQbGF0Zm9ybUxh
eWVyOwogI2VsaWYgUExBVEZPUk0oV0lOKQogdHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZMYXllciBQbGF0
Zm9ybUxheWVyOworI2VsaWYgUExBVEZPUk0oUVQpCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKK3R5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIgUGxhdGZvcm1MYXllcjsKK307CiAjZWxpZiBQTEFURk9STShHVEspCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXggNTQ4ODU4OC4u
NjM3Yjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2lt
cGxlRm9udERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1w
bGVGb250RGF0YS5oCkBAIC01Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgPGNhaXJvLmg+CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFSYXdGb250PgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwpAQCAtMjAwLDYgKzIw
NCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPiAxMDgwCiAgICAgICAgIHdrQ1RGb250VHJhbnNmb3JtT3B0aW9ucyBvcHRp
b25zID0gKHR5cGVzZXR0aW5nRmVhdHVyZXMgJiBLZXJuaW5nID8gd2tDVEZvbnRUcmFuc2Zvcm1B
cHBseVBvc2l0aW9uaW5nIDogMCkgfCAodHlwZXNldHRpbmdGZWF0dXJlcyAmIExpZ2F0dXJlcyA/
IHdrQ1RGb250VHJhbnNmb3JtQXBwbHlTaGFwaW5nIDogMCk7CiAgICAgICAgIHJldHVybiB3a0NU
Rm9udFRyYW5zZm9ybUdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgZ2x5cGhzLCByZWlu
dGVycHJldF9jYXN0PENHU2l6ZSo+KGFkdmFuY2VzKSwgZ2x5cGhDb3VudCwgb3B0aW9ucyk7Cisj
ZWxpZiBQTEFURk9STShRVCkgJiYgUVRfVkVSU0lPTiA+PSAweDA1MDEwMAorICAgICAgICBRUmF3
Rm9udDo6TGF5b3V0RmxhZ3MgZmxhZ3MgPSAodHlwZXNldHRpbmdGZWF0dXJlcyAmIEtlcm5pbmcp
ID8gUVJhd0ZvbnQ6Oktlcm5lZEFkdmFuY2VzIDogUVJhd0ZvbnQ6OlNlcGFyYXRlQWR2YW5jZXM7
CisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtRGF0YS5yYXdGb250KCkuYWR2YW5jZXNGb3JHbHlw
aEluZGV4ZXMoZ2x5cGhzLCBhZHZhbmNlcywgZ2x5cGhDb3VudCwgZmxhZ3MpOwogI2Vsc2UKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGdseXBocyk7CiAgICAgICAgIFVOVVNFRF9QQVJBTShhZHZhbmNl
cyk7CkBAIC0yMDksNiArMjE2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorI2lmIFBM
QVRGT1JNKFFUKQorICAgIFFSYXdGb250IGdldFF0UmF3Rm9udCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1EYXRhLnJhd0ZvbnQoKTsgfQorI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgYm9vbCBpc1N5c3RlbUZvbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3lzdGVtRm9udDsgfQog
I2lmICFPUyhXSU5DRSkgLy8gZGlzYWJsZSB1bnVzZWQgbWVtYmVycyB0byBzYXZlIHNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZh
dGUuaAppbmRleCBkODI3OWY2Li5iMTUxNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTc1LDggKzc1LDcgQEAg
cHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgVmlkZW9UcmFja1ByaXZhdGUoKQotICAgICAgICA6
IG1fY2xpZW50KDApCi0gICAgICAgICwgbV9zZWxlY3RlZChmYWxzZSkKKyAgICAgICAgOiBtX3Nl
bGVjdGVkKGZhbHNlKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAppbmRleCBiZjYzNWM5Li44YWEyNjc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCkBA
IC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAhZm9udC50eXBlc2V0
dGluZ0ZlYXR1cmVzKCk7CiAKICAgICAgICAgcmV0dXJuICEoZm9udC50eXBlc2V0dGluZ0ZlYXR1
cmVzKCkgJiB+KEtlcm5pbmcgfCBMaWdhdHVyZXMpKTsKKyNlbGlmIFBMQVRGT1JNKFFUKSAmJiBR
VF9WRVJTSU9OID49IDB4MDUwMTAwCisgICAgICAgIHJldHVybiAhKGZvbnQudHlwZXNldHRpbmdG
ZWF0dXJlcygpICYgfktlcm5pbmcpICYmICFmb250LmlzU21hbGxDYXBzKCkgJiYgIWZvbnQubGV0
dGVyU3BhY2luZygpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuICFmb250LnR5cGVzZXR0aW5nRmVh
dHVyZXMoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1M2FhMDQuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaWZuZGVmIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGxfaAotI2RlZmluZSBBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsX2gKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotI2lu
Y2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUu
aCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
Ci1PQkpDX0NMQVNTIEFWQXNzZXRUcmFjazsKLU9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVHJhY2s7
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
PiBjcmVhdGUoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZU93bmVkPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKLSAgICB9Ci0g
ICAgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVlBsYXllckl0ZW1UcmFjayopOwotCi0gICAg
QVZQbGF5ZXJJdGVtVHJhY2sqIHBsYXllckl0ZW1UcmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWVySXRlbVRyYWNrLmdldCgpOyB9Ci0KLSAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKLSAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0KLSAgICBBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZCBhdWRp
b0tpbmQoKSBjb25zdDsKLSAgICBWaWRlb1RyYWNrUHJpdmF0ZTo6S2luZCB2aWRlb0tpbmQoKSBj
b25zdDsKLQotICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0OwotICAgIEF0b21pY1N0cmluZyBs
YWJlbCgpIGNvbnN0OwotICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0OwotCi0gICAg
c3RhdGljIFN0cmluZyBsYW5ndWFnZUZvckFWQXNzZXRUcmFjayhBVkFzc2V0VHJhY2sqKTsKLQot
cHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVHJhY2s+IG1fcGxheWVySXRlbVRy
YWNrOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNLKQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NzhjNjMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgiCi0K
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0KLSNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCi0jaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2su
aD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1UcmFjay5oPgotI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfT1BU
SU9OQUwoQVZGb3VuZGF0aW9uKQotCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFz
c2V0VHJhY2spCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1UcmFj
aykKLVNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFJdGVtKQotCi1TT0ZU
X0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVJfT1BU
SU9OQUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0Zv
ckFjY2Vzc2liaWxpdHksIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChB
VkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwgTlNT
dHJpbmcgKikKLVNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZNZWRp
YUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBO
U1N0cmluZyAqKQotU09GVF9MSU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVk1l
dGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfUE9JTlRFUl9PUFRJ
T05BTChBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbiwgTlNTdHJpbmcgKikK
LQotI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCkKLQotI2Rl
ZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCBnZXRBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCgpCi0jZGVmaW5lIEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0Rlc2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSBnZXRBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHkoKQotI2RlZmluZSBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGlj
SXNBdXhpbGlhcnlDb250ZW50KCkKLSNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNj
cmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpCi0jZGVmaW5lIEFWTWV0
YWRhdGFDb21tb25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUoKQotI2RlZmlu
ZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uKCkK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IG1f
cGxheWVySXRlbVRyYWNrKHRyYWNrKQotewotfQotCi1ib29sIEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw6OmVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9wbGF5ZXJJdGVtVHJhY2su
Z2V0KCkgaXNFbmFibGVkXTsKLX0KLQotdm9pZCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpz
ZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkg
c2V0RW5hYmxlZDplbmFibGVkXTsKLX0KLQotQXVkaW9UcmFja1ByaXZhdGU6OktpbmQgQVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbDo6YXVkaW9LaW5kKCkgY29uc3QKLXsKLSAgICBBVkFzc2V0VHJh
Y2sqIGFzc2V0VHJhY2sgPSBbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkgYXNzZXRUcmFja107Ci0g
ICAgaWYgKFthc3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rl
cmlzdGljSXNBdXhpbGlhcnlDb250ZW50XSkKLSAgICAgICAgcmV0dXJuIEF1ZGlvVHJhY2tQcml2
YXRlOjpBbHRlcm5hdGl2ZTsKLSAgICBlbHNlIGlmIChbYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50XSkKLSAg
ICAgICAgcmV0dXJuIEF1ZGlvVHJhY2tQcml2YXRlOjpNYWluOwotICAgIHJldHVybiBBdWRpb1Ry
YWNrUHJpdmF0ZTo6Tm9uZTsKLX0KLQotVmlkZW9UcmFja1ByaXZhdGU6OktpbmQgQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbDo6dmlkZW9LaW5kKCkgY29uc3QKLXsKLSAgICBBVkFzc2V0VHJhY2sq
IGFzc2V0VHJhY2sgPSBbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkgYXNzZXRUcmFja107Ci0gICAg
aWYgKFthc3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3Rlcmlz
dGljRGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5XSkKLSAgICAgICAgcmV0dXJuIFZpZGVv
VHJhY2tQcml2YXRlOjpTaWduOwotICAgIGVsc2UgaWYgKFthc3NldFRyYWNrIGhhc01lZGlhQ2hh
cmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNTcG9rZW5EaWFsb2dG
b3JBY2Nlc3NpYmlsaXR5XSkKLSAgICAgICAgcmV0dXJuIFZpZGVvVHJhY2tQcml2YXRlOjpDYXB0
aW9uczsKLSAgICBlbHNlIGlmIChbYXNzZXRUcmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudF0pCi0gICAgICAgIHJldHVybiBW
aWRlb1RyYWNrUHJpdmF0ZTo6QWx0ZXJuYXRpdmU7Ci0gICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sg
aGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFt
Q29udGVudF0pCi0gICAgICAgIHJldHVybiBWaWRlb1RyYWNrUHJpdmF0ZTo6TWFpbjsKLSAgICBy
ZXR1cm4gVmlkZW9UcmFja1ByaXZhdGU6Ok5vbmU7Ci19Ci0KLUF0b21pY1N0cmluZyBBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsOjppZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCIlZCIsIFtbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkgYXNzZXRUcmFja10gdHJhY2tJRF0p
OwotfQotCi1BdG9taWNTdHJpbmcgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6bGFiZWwoKSBj
b25zdAotewotICAgIE5TQXJyYXkgKnRpdGxlcyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRhZGF0YUl0
ZW1zRnJvbUFycmF5OltbbV9wbGF5ZXJJdGVtVHJhY2suZ2V0KCkgYXNzZXRUcmFja10gY29tbW9u
TWV0YWRhdGFdIHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGtleVNwYWNlOkFWTWV0
YWRhdGFLZXlTcGFjZUNvbW1vbl07Ci0gICAgaWYgKCFbdGl0bGVzIGNvdW50XSkKLSAgICAgICAg
cmV0dXJuIGVtcHR5QXRvbTsKLQotICAgIC8vIElmIHBvc3NpYmxlLCByZXR1cm4gYSB0aXRsZSBp
biBvbmUgb2YgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAotICAgIE5TQXJyYXkgKnRpdGxlc0ZvclByZWZl
cnJlZExhbmd1YWdlcyA9IFtBVk1ldGFkYXRhSXRlbSBtZXRhZGF0YUl0ZW1zRnJvbUFycmF5OnRp
dGxlcyBmaWx0ZXJlZEFuZFNvcnRlZEFjY29yZGluZ1RvUHJlZmVycmVkTGFuZ3VhZ2VzOltOU0xv
Y2FsZSBwcmVmZXJyZWRMYW5ndWFnZXNdXTsKLSNlbHNlCi0gICAgTlNBcnJheSAqdGl0bGVzRm9y
UHJlZmVycmVkTGFuZ3VhZ2VzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJy
YXk6dGl0bGVzIHdpdGhMb2NhbGU6W05TTG9jYWxlIGN1cnJlbnRMb2NhbGVdXTsKLSNlbmRpZgot
ICAgIGlmIChbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIGNvdW50XSkKLSAgICAgICAgcmV0
dXJuIFtbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6MF0gc3RyaW5n
VmFsdWVdOwotICAgIHJldHVybiBbW3RpdGxlcyBvYmplY3RBdEluZGV4OjBdIHN0cmluZ1ZhbHVl
XTsKLX0KLQotQXRvbWljU3RyaW5nIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6Omxhbmd1YWdl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbGFuZ3VhZ2VGb3JBVkFzc2V0VHJhY2soW21fcGxheWVy
SXRlbVRyYWNrLmdldCgpIGFzc2V0VHJhY2tdKTsKLX0KLQotU3RyaW5nIEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw6Omxhbmd1YWdlRm9yQVZBc3NldFRyYWNrKEFWQXNzZXRUcmFjayogdHJhY2sp
Ci17Ci0gICAgTlNTdHJpbmcgKmxhbmd1YWdlID0gW3RyYWNrIGV4dGVuZGVkTGFuZ3VhZ2VUYWdd
OwotCi0gICAgLy8gSWYgdGhlIGxhbmd1YWdlIGNvZGUgaXMgc3RvcmVkIGFzIGEgUXVpY2tUaW1l
IDUtYml0IHBhY2tlZCBjb2RlIHRoZXJlIGFyZW4ndCBlbm91Z2ggYml0cyBmb3IgYSBmdWxsCi0g
ICAgLy8gUkZDIDQ2NDYgbGFuZ3VhZ2UgdGFnIHNvIGV4dGVuZGVkTGFuZ3VhZ2VUYWcgcmV0dXJu
cyBOVUxMLiBJbiB0aGlzIGNhc2UgbGFuZ3VhZ2VDb2RlIHdpbGwgcmV0dXJuIHRoZQotICAgIC8v
IElTTyA2MzktMi9UIGxhbmd1YWdlIGNvZGUgc28gY2hlY2sgaXQuCi0gICAgaWYgKCFsYW5ndWFn
ZSkKLSAgICAgICAgbGFuZ3VhZ2UgPSBbdHJhY2sgbGFuZ3VhZ2VDb2RlXTsKLQotICAgIC8vIFNv
bWUgbGVnYWN5IHRyYWNrcyBoYXZlICJ1bmQiIGFzIGEgbGFuZ3VhZ2UsIHRyZWF0IHRoYXQgdGhl
IHNhbWUgYXMgbm8gbGFuZ3VhZ2UgYXQgYWxsLgotICAgIGlmICghbGFuZ3VhZ2UgfHwgW2xhbmd1
YWdlIGlzRXF1YWxUb1N0cmluZzpAInVuZCJdKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLQotICAgIHJldHVybiBsYW5ndWFnZTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJ
REVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL1ZpZGVvVHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vVmlkZW9UcmFja1ByaXZhdGVBVkYuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1MDQzOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vVmlkZW9UcmFja1ByaXZhdGVBVkYu
aAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFZp
ZGVvVHJhY2tQcml2YXRlQVZGX2gKLSNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVBVkZfaAotCi0j
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotCi0jaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiA6IHB1
YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVmlkZW9U
cmFja1ByaXZhdGVBVkYpCi1wdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlk
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIGxhYmVsKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZpcnR1
YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9sYW5n
dWFnZTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRLaW5kKEtpbmQga2luZCkgeyBtX2tp
bmQgPSBraW5kOyB9Ci0gICAgdm9pZCBzZXRJZChBdG9taWNTdHJpbmcgbmV3SWQpIHsgbV9pZCA9
IG5ld0lkOyB9Ci0gICAgdm9pZCBzZXRMYWJlbChBdG9taWNTdHJpbmcgbGFiZWwpIHsgbV9sYWJl
bCA9IGxhYmVsOyB9Ci0gICAgdm9pZCBzZXRMYW5ndWFnZShBdG9taWNTdHJpbmcgbGFuZ3VhZ2Up
IHsgbV9sYW5ndWFnZSA9IGxhbmd1YWdlOyB9Ci0KLSAgICBLaW5kIG1fa2luZDsKLSAgICBBdG9t
aWNTdHJpbmcgbV9pZDsKLSAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKLSAgICBBdG9taWNTdHJp
bmcgbV9sYW5ndWFnZTsKLQotICAgIFZpZGVvVHJhY2tQcml2YXRlQVZGKCkKLSAgICAgICAgOiBt
X2tpbmQoTm9uZSkKLSAgICB7Ci0gICAgfQotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJ
REVPX1RSQUNLKQotCi0jZW5kaWYgLy8gVmlkZW9UcmFja1ByaXZhdGVBVkZfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3ZWVh
OGM1Li40YzQxY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMuaApAQCAtMjksMTQgKzI5LDEzIEBACiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVBVkYuaCIKLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCitPQkpDX0NMQVNTIEFWQXNz
ZXRUcmFjazsKIE9CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVHJhY2s7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDsKLQogY2xhc3MgQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRlQVZGIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMpCiBwdWJsaWM6CkBA
IC00OCwxMyArNDcsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJv
b2wpOwogCiAgICAgdm9pZCBzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sqKTsK
LSAgICBBVlBsYXllckl0ZW1UcmFjayogcGxheWVySXRlbVRyYWNrKCk7CisgICAgQVZQbGF5ZXJJ
dGVtVHJhY2sqIHBsYXllckl0ZW1UcmFjaygpIHsgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrLmdl
dCgpOyB9CisKKyAgICBzdGF0aWMgU3RyaW5nIGxhbmd1YWdlRm9yQVZBc3NldFRyYWNrKEFWQXNz
ZXRUcmFjayopOwogCiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBs
YXllckl0ZW1UcmFjayopOwogCiAgICAgdm9pZCByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
LSAgICBPd25QdHI8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4gbV9pbXBsOworCisgICAgUmV0
YWluUHRyPEFWUGxheWVySXRlbVRyYWNrPiBtX3BsYXllckl0ZW1UcmFjazsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpp
bmRleCA2YjQ3MTc1Li5hZWQ2MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCkBAIC0yNSw0MiArMjUsMTI4IEBACiAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmgiCi0jaW1w
b3J0ICJBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgiCiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAKKyNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4K
KyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0VHJhY2suaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1UcmFjay5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRh
dGFJdGVtLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQor
CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0VHJhY2spCitTT0ZUX0xJTktf
Q0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1UcmFjaykKK1NPRlRfTElOS19DTEFTUyhB
VkZvdW5kYXRpb24sIEFWTWV0YWRhdGFJdGVtKQorCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSwgTlNTdHJpbmcgKikKK1NPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uLCBOU1N0cmluZyAq
KQorCisjZGVmaW5lIEFWTWV0YWRhdGFJdGVtIGdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKQorCisj
ZGVmaW5lIEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSBnZXRBVk1ldGFkYXRhQ29tbW9uS2V5VGl0
bGUoKQorI2RlZmluZSBBVk1ldGFkYXRhS2V5U3BhY2VDb21tb24gZ2V0QVZNZXRhZGF0YUtleVNw
YWNlQ29tbW9uKCkKKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4
MAorCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3Rp
Y0lzTWFpblByb2dyYW1Db250ZW50LCBOU1N0cmluZyAqKQorU09GVF9MSU5LX1BPSU5URVIoQVZG
b3VuZGF0aW9uLCBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2li
aWxpdHksIE5TU3RyaW5nICopCitTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwgTlNTdHJpbmcgKikKK1NPRlRfTElO
S19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmliZXNT
cG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5LCBOU1N0cmluZyAqKQorCisjZGVmaW5lIEFWTWVk
aWFDaGFyYWN0ZXJpc3RpY0lzTWFpblByb2dyYW1Db250ZW50IGdldEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0lzTWFpblByb2dyYW1Db250ZW50KCkKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGlj
RGVzY3JpYmVzVmlkZW9Gb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rl
c2NyaWJlc1ZpZGVvRm9yQWNjZXNzaWJpbGl0eSgpCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY0lzQXV4aWxpYXJ5Q29udGVudCBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFy
eUNvbnRlbnQoKQorI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNUcmFuc2NyaWJlc1Nwb2tl
bkRpYWxvZ0ZvckFjY2Vzc2liaWxpdHkgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGljVHJhbnNjcmli
ZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5KCkKKworI2Vsc2UKKworI2RlZmluZSBBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCBAInB1YmxpYy5tYWluLXByb2dy
YW0tY29udGVudCIKKyNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljRGVzY3JpYmVzVmlkZW9G
b3JBY2Nlc3NpYmlsaXR5IEAicHVibGljLmFjY2Vzc2liaWxpdHkuZGVzY3JpYmVzLXZpZGVvIgor
I2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQgQCJwdWJsaWMu
YXV4aWxpYXJ5LWNvbnRlbnQiCisjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3Jp
YmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSBAInB1YmxpYy5hY2Nlc3NpYmlsaXR5LnRy
YW5zY3JpYmVzLXNwb2tlbi1kaWFsb2ciCisKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFW
UGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsOjpjcmVhdGUodHJhY2spKQorICAgIDogbV9wbGF5ZXJJdGVtVHJhY2sodHJhY2spCiB7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogewotICAgIHNldEVuYWJs
ZWQobV9pbXBsLT5lbmFibGVkKCkpOwotICAgIHNldEtpbmQobV9pbXBsLT5hdWRpb0tpbmQoKSk7
Ci0gICAgc2V0SWQobV9pbXBsLT5pZCgpKTsKLSAgICBzZXRMYWJlbChtX2ltcGwtPmxhYmVsKCkp
OwotICAgIHNldExhbmd1YWdlKG1faW1wbC0+bGFuZ3VhZ2UoKSk7CisgICAgQVZBc3NldFRyYWNr
KiBhc3NldFRyYWNrID0gW21fcGxheWVySXRlbVRyYWNrLmdldCgpIGFzc2V0VHJhY2tdOworICAg
IGlmICghYXNzZXRUcmFjaykgeworICAgICAgICBzZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAg
c2V0S2luZChOb25lKTsKKyAgICAgICAgc2V0SWQoZW1wdHlBdG9tKTsKKyAgICAgICAgc2V0TGFi
ZWwoZW1wdHlBdG9tKTsKKyAgICAgICAgc2V0TGFuZ3VhZ2UoZW1wdHlBdG9tKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNldEVuYWJsZWQoW21fcGxheWVySXRlbVRyYWNrLmdldCgp
IGlzRW5hYmxlZF0pOworICAgIHNldElkKFN0cmluZzo6Zm9ybWF0KCIlZCIsIFthc3NldFRyYWNr
IHRyYWNrSURdKSk7CisKKyAgICBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNEZXNjcmliZXNWaWRlb0ZvckFjY2Vzc2liaWxpdHldKQor
ICAgICAgICBzZXRLaW5kKERlc2NyaXB0aW9uKTsKKyAgICBlbHNlIGlmIChbYXNzZXRUcmFjayBo
YXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY1RyYW5zY3JpYmVzU3Bv
a2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eV0pCisgICAgICAgIHNldEtpbmQoVHJhbnNsYXRpb24p
OworICAgIGVsc2UgaWYgKFthc3NldFRyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRp
YUNoYXJhY3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50XSkKKyAgICAgICAgc2V0S2luZChBbHRl
cm5hdGl2ZSk7CisgICAgZWxzZSBpZiAoW2Fzc2V0VHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3Rp
YzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudF0pCisgICAgICAgIHNl
dEtpbmQoTWFpbik7CisgICAgZWxzZQorICAgICAgICBzZXRLaW5kKE5vbmUpOworCisgICAgTlNB
cnJheSAqdGl0bGVzID0gW0FWTWV0YWRhdGFJdGVtIG1ldGFkYXRhSXRlbXNGcm9tQXJyYXk6W2Fz
c2V0VHJhY2sgY29tbW9uTWV0YWRhdGFdIHdpdGhLZXk6QVZNZXRhZGF0YUNvbW1vbktleVRpdGxl
IGtleVNwYWNlOkFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbl07CisgICAgaWYgKFt0aXRsZXMgY291
bnRdKSB7CisgICAgICAgIC8vIElmIHBvc3NpYmxlLCByZXR1cm4gYSB0aXRsZSBpbiBvbmUgb2Yg
dGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA4MAorICAgICAgICBOU0FycmF5ICp0aXRsZXNGb3JQcmVmZXJyZWRM
YW5ndWFnZXMgPSBbQVZNZXRhZGF0YUl0ZW0gbWV0YWRhdGFJdGVtc0Zyb21BcnJheTp0aXRsZXMg
ZmlsdGVyZWRBbmRTb3J0ZWRBY2NvcmRpbmdUb1ByZWZlcnJlZExhbmd1YWdlczpbTlNMb2NhbGUg
cHJlZmVycmVkTGFuZ3VhZ2VzXV07CisjZWxzZQorICAgICAgICBOU0FycmF5ICp0aXRsZXNGb3JQ
cmVmZXJyZWRMYW5ndWFnZXMgPSBbQVZNZXRhZGF0YUl0ZW0gbWV0YWRhdGFJdGVtc0Zyb21BcnJh
eTp0aXRsZXMgd2l0aExvY2FsZTpbTlNMb2NhbGUgY3VycmVudExvY2FsZV1dOworI2VuZGlmCisg
ICAgICAgIGlmIChbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIGNvdW50XSkKKyAgICAgICAg
ICAgIHNldExhYmVsKFtbdGl0bGVzRm9yUHJlZmVycmVkTGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6
MF0gc3RyaW5nVmFsdWVdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TGFiZWwoW1t0
aXRsZXMgb2JqZWN0QXRJbmRleDowXSBzdHJpbmdWYWx1ZV0pOworICAgIH0KKworICAgIHNldExh
bmd1YWdlKGxhbmd1YWdlRm9yQVZBc3NldFRyYWNrKGFzc2V0VHJhY2spKTsKIH0KIAogdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1U
cmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6
Y3JlYXRlKHRyYWNrKTsKKyAgICBtX3BsYXllckl0ZW1UcmFjayA9IHRyYWNrOwogICAgIHJlc2V0
UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCi1BVlBsYXllckl0ZW1UcmFjayogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQordm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIHJldHVybiBtX2ltcGwt
PnBsYXllckl0ZW1UcmFjaygpOworICAgIEF1ZGlvVHJhY2tQcml2YXRlQVZGOjpzZXRFbmFibGVk
KGVuYWJsZWQpOworICAgIFttX3BsYXllckl0ZW1UcmFjay5nZXQoKSBzZXRFbmFibGVkOmVuYWJs
ZWRdOwogfQogCi12b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0RW5hYmxlZChib29s
IGVuYWJsZWQpCitTdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpsYW5ndWFnZUZvckFW
QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sqIHRyYWNrKQogewotICAgIEF1ZGlvVHJhY2tQcml2YXRl
QVZGOjpzZXRFbmFibGVkKGVuYWJsZWQpOwotICAgIG1faW1wbC0+c2V0RW5hYmxlZChlbmFibGVk
KTsKKyAgICBOU1N0cmluZyAqbGFuZ3VhZ2UgPSBbdHJhY2sgZXh0ZW5kZWRMYW5ndWFnZVRhZ107
CisKKyAgICAvLyBJZiB0aGUgbGFuZ3VhZ2UgY29kZSBpcyBzdG9yZWQgYXMgYSBRdWlja1RpbWUg
NS1iaXQgcGFja2VkIGNvZGUgdGhlcmUgYXJlbid0IGVub3VnaCBiaXRzIGZvciBhIGZ1bGwKKyAg
ICAvLyBSRkMgNDY0NiBsYW5ndWFnZSB0YWcgc28gZXh0ZW5kZWRMYW5ndWFnZVRhZyByZXR1cm5z
IE5VTEwuIEluIHRoaXMgY2FzZSBsYW5ndWFnZUNvZGUgd2lsbCByZXR1cm4gdGhlCisgICAgLy8g
SVNPIDYzOS0yL1QgbGFuZ3VhZ2UgY29kZSBzbyBjaGVjayBpdC4KKyAgICBpZiAoIWxhbmd1YWdl
KQorICAgICAgICBsYW5ndWFnZSA9IFt0cmFjayBsYW5ndWFnZUNvZGVdOworCisgICAgLy8gU29t
ZSBsZWdhY3kgdHJhY2tzIGhhdmUgInVuZCIgYXMgYSBsYW5ndWFnZSwgdHJlYXQgdGhhdCB0aGUg
c2FtZSBhcyBubyBsYW5ndWFnZSBhdCBhbGwuCisgICAgaWYgKCFsYW5ndWFnZSB8fCBbbGFuZ3Vh
Z2UgaXNFcXVhbFRvU3RyaW5nOkAidW5kIl0pCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworCisgICAgcmV0dXJuIGxhbmd1YWdlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5k
ZXggNjZmM2QyYy4uZmIwYjQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjAsNyArNjAs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQzsKLWNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIAogY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24gewogcHVibGljOgpAQCAtMTg2LDExICsxODUsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJhY2tzKCk7CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2b2lkIHVwZGF0ZUF1ZGlvVHJhY2tzKCk7
Ci0gICAgdm9pZCB1cGRhdGVWaWRlb1RyYWNrcygpOwotI2VuZGlmCi0KICAgICBSZXRhaW5QdHI8
QVZVUkxBc3NldD4gbV9hdkFzc2V0OwogICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9hdlBsYXll
cjsKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX2F2UGxheWVySXRlbTsKQEAgLTIyNCw3
ICsyMTgsNiBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZlY3Rv
cjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDPj4gbV9hdWRpb1RyYWNrczsKLSAgICBW
ZWN0b3I8UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQz4+IG1fdmlkZW9UcmFja3M7CiAj
ZW5kaWYKIAogICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqIG1fY3VycmVudFRyYWNrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMGE5YTEzMC4uNzc2MmYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgiCiAKICNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5oIgotI2ltcG9ydCAiQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIgogI2ltcG9ydCAiQmxv
Y2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNp
bXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgpAQCAtNDUsNyArNDQsNiBAQAogI2ltcG9ydCAiU29m
dExpbmtpbmcuaCIKICNpbXBvcnQgIlRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlVVSUQuaCIKLSNp
bXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTEwNTQsOCArMTA1Miw0MyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRyYWNrc0NoYW5nZWQoKQogCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgICAgIHVwZGF0ZUF1ZGlvVHJhY2tzKCk7Ci0gICAgICAgIHVw
ZGF0ZVZpZGVvVHJhY2tzKCk7CisgICAgICAgIFJldGFpblB0cjxOU1NldD4gYXVkaW9UcmFja3Mg
PSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6W3RyYWNrcyBvYmplY3RzQXRJ
bmRleGVzOlt0cmFja3MgaW5kZXhlc09mT2JqZWN0c1Bhc3NpbmdUZXN0Ol4oaWQgdHJhY2ssIE5T
VUludGVnZXIsIEJPT0wqKXsKKyAgICAgICAgICAgIHJldHVybiBbW1t0cmFjayBhc3NldFRyYWNr
XSBtZWRpYVR5cGVdIGlzRXF1YWxUb1N0cmluZzpBVk1lZGlhVHlwZUF1ZGlvXTsKKyAgICAgICAg
fV1dXSk7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ+IG9sZEF1ZGlvVHJhY2tzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTptX2F1ZGlvVHJh
Y2tzLnNpemUoKV0pOworCisgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM+ID4gQXVkaW9UcmFja1ZlY3RvcjsKKyAgICAgICAgZm9yIChBdWRpb1Ry
YWNrVmVjdG9yOjppdGVyYXRvciBpID0gbV9hdWRpb1RyYWNrcy5iZWdpbigpOyBpICE9IG1fYXVk
aW9UcmFja3MuZW5kKCk7ICsraSkKKyAgICAgICAgICAgIFtvbGRBdWRpb1RyYWNrcy5nZXQoKSBh
ZGRPYmplY3Q6KCppKS0+cGxheWVySXRlbVRyYWNrKCldOworCisgICAgICAgIFJldGFpblB0cjxO
U011dGFibGVTZXQ+IHJlbW92ZWRBVkF1ZGlvVHJhY2tzID0gYWRvcHROUyhbb2xkQXVkaW9UcmFj
a3MuZ2V0KCkgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgW3JlbW92ZWRBVkF1ZGlvVHJhY2tzLmdl
dCgpIG1pbnVzU2V0OmF1ZGlvVHJhY2tzLmdldCgpXTsKKworICAgICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlU2V0PiBhZGRlZEFWQXVkaW9UcmFja3MgPSBhZG9wdE5TKFthdWRpb1RyYWNrcy5nZXQo
KSBtdXRhYmxlQ29weV0pOworICAgICAgICBbYWRkZWRBVkF1ZGlvVHJhY2tzLmdldCgpIG1pbnVz
U2V0Om9sZEF1ZGlvVHJhY2tzLmdldCgpXTsKKworICAgICAgICBBdWRpb1RyYWNrVmVjdG9yIHJl
cGxhY2VtZW50QXVkaW9UcmFja3M7CisgICAgICAgIEF1ZGlvVHJhY2tWZWN0b3IgYWRkZWRBdWRp
b1RyYWNrczsKKyAgICAgICAgQXVkaW9UcmFja1ZlY3RvciByZW1vdmVkQXVkaW9UcmFja3M7Cisg
ICAgICAgIGZvciAoQXVkaW9UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaSA9IG1fYXVkaW9UcmFja3Mu
YmVnaW4oKTsgaSAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChbcmVtb3ZlZEFWQXVkaW9UcmFja3MgY29udGFpbnNPYmplY3Q6KCppKS0+cGxheWVySXRlbVRy
YWNrKCldKQorICAgICAgICAgICAgICAgIHJlbW92ZWRBdWRpb1RyYWNrcy5hcHBlbmQoKmkpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50QXVkaW9UcmFja3Mu
YXBwZW5kKCppKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoQVZQbGF5ZXJJdGVtVHJhY2sq
IHBsYXllckl0ZW1UcmFjayBpbiBhZGRlZEFWQXVkaW9UcmFja3MuZ2V0KCkpCisgICAgICAgICAg
ICBhZGRlZEF1ZGlvVHJhY2tzLmFwcGVuZChBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0
ZShwbGF5ZXJJdGVtVHJhY2spKTsKKworICAgICAgICByZXBsYWNlbWVudEF1ZGlvVHJhY2tzLmFw
cGVuZFZlY3RvcihhZGRlZEF1ZGlvVHJhY2tzKTsKKworICAgICAgICBtX2F1ZGlvVHJhY2tzLnN3
YXAocmVwbGFjZW1lbnRBdWRpb1RyYWNrcyk7CisKKyAgICAgICAgZm9yIChBdWRpb1RyYWNrVmVj
dG9yOjppdGVyYXRvciBpID0gcmVtb3ZlZEF1ZGlvVHJhY2tzLmJlZ2luKCk7IGkgIT0gcmVtb3Zl
ZEF1ZGlvVHJhY2tzLmVuZCgpOyArK2kpCisgICAgICAgICAgICBwbGF5ZXIoKS0+cmVtb3ZlQXVk
aW9UcmFjaygqaSk7CisKKyAgICAgICAgZm9yIChBdWRpb1RyYWNrVmVjdG9yOjppdGVyYXRvciBp
ID0gYWRkZWRBdWRpb1RyYWNrcy5iZWdpbigpOyBpICE9IGFkZGVkQXVkaW9UcmFja3MuZW5kKCk7
ICsraSkKKyAgICAgICAgICAgIHBsYXllcigpLT5hZGRBdWRpb1RyYWNrKCppKTsKICNlbmRpZgog
ICAgIH0KIApAQCAtMTA4OCw1OSArMTEyMSw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6dHJhY2tzQ2hhbmdlZCgpCiAgICAgc2V0RGVsYXlDaGFyYWN0ZXJpc3Rp
Y3NDaGFuZ2VkTm90aWZpY2F0aW9uKGZhbHNlKTsKIH0KIAotI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLXRlbXBsYXRlIDx0eXBlbmFtZSBSZWZULCB0eXBlbmFtZSBQYXNzUmVmVD4KLXZvaWQgZGV0
ZXJtaW5lQ2hhbmdlZFRyYWNrc0Zyb21OZXdUcmFja3NBbmRPbGRJdGVtcyhOU0FycmF5KiB0cmFj
a3MsIE5TU3RyaW5nKiB0cmFja1R5cGUsIFZlY3RvcjxSZWZUPiYgb2xkSXRlbXMsIFJlZlQgKCpp
dGVtRmFjdG9yeSkoQVZQbGF5ZXJJdGVtVHJhY2sqKSwgTWVkaWFQbGF5ZXIqIHBsYXllciwgdm9p
ZCAoTWVkaWFQbGF5ZXI6OipyZW1vdmVkRnVuY3Rpb24pKFBhc3NSZWZUKSwgdm9pZCAoTWVkaWFQ
bGF5ZXI6OiphZGRlZEZ1bmN0aW9uKShQYXNzUmVmVCkpCi17Ci0gICAgUmV0YWluUHRyPE5TU2V0
PiBuZXdUcmFja3MgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoQXJyYXk6W3RyYWNr
cyBvYmplY3RzQXRJbmRleGVzOlt0cmFja3MgaW5kZXhlc09mT2JqZWN0c1Bhc3NpbmdUZXN0Ol4o
aWQgdHJhY2ssIE5TVUludGVnZXIsIEJPT0wqKXsKLSAgICAgICAgcmV0dXJuIFtbW3RyYWNrIGFz
c2V0VHJhY2tdIG1lZGlhVHlwZV0gaXNFcXVhbFRvU3RyaW5nOnRyYWNrVHlwZV07Ci0gICAgfV1d
XSk7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gb2xkVHJhY2tzID0gYWRvcHROUyhbW05T
TXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvbGRJdGVtcy5zaXplKCldKTsKLQot
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlQ+IEl0ZW1WZWN0b3I7Ci0gICAgZm9yIChhdXRvIGkgPSBv
bGRJdGVtcy5iZWdpbigpOyBpICE9IG9sZEl0ZW1zLmVuZCgpOyArK2kpCi0gICAgICAgIFtvbGRU
cmFja3MgYWRkT2JqZWN0OigqaSktPnBsYXllckl0ZW1UcmFjaygpXTsKLQotICAgIFJldGFpblB0
cjxOU011dGFibGVTZXQ+IHJlbW92ZWRUcmFja3MgPSBhZG9wdE5TKFtvbGRUcmFja3MgbXV0YWJs
ZUNvcHldKTsKLSAgICBbcmVtb3ZlZFRyYWNrcyBtaW51c1NldDpuZXdUcmFja3MuZ2V0KCldOwot
Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gYWRkZWRUcmFja3MgPSBhZG9wdE5TKFtuZXdU
cmFja3MgbXV0YWJsZUNvcHldKTsKLSAgICBbYWRkZWRUcmFja3MgbWludXNTZXQ6b2xkVHJhY2tz
LmdldCgpXTsKLQotICAgIEl0ZW1WZWN0b3IgcmVwbGFjZW1lbnRJdGVtczsKLSAgICBJdGVtVmVj
dG9yIGFkZGVkSXRlbXM7Ci0gICAgSXRlbVZlY3RvciByZW1vdmVkSXRlbXM7Ci0gICAgZm9yIChh
dXRvIGkgPSBvbGRJdGVtcy5iZWdpbigpOyBpICE9IG9sZEl0ZW1zLmVuZCgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKFtyZW1vdmVkVHJhY2tzIGNvbnRhaW5zT2JqZWN0OigqaSktPnBsYXllckl0ZW1U
cmFjaygpXSkKLSAgICAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQoKmkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZXBsYWNlbWVudEl0ZW1zLmFwcGVuZCgqaSk7Ci0gICAgfQotCi0g
ICAgZm9yIChBVlBsYXllckl0ZW1UcmFjayogdHJhY2sgaW4gYWRkZWRUcmFja3MuZ2V0KCkpCi0g
ICAgICAgIGFkZGVkSXRlbXMuYXBwZW5kKGl0ZW1GYWN0b3J5KHRyYWNrKSk7Ci0KLSAgICByZXBs
YWNlbWVudEl0ZW1zLmFwcGVuZFZlY3RvcihhZGRlZEl0ZW1zKTsKLSAgICBvbGRJdGVtcy5zd2Fw
KHJlcGxhY2VtZW50SXRlbXMpOwotCi0gICAgZm9yIChhdXRvIGkgPSByZW1vdmVkSXRlbXMuYmVn
aW4oKTsgaSAhPSByZW1vdmVkSXRlbXMuZW5kKCk7ICsraSkKLSAgICAgICAgKHBsYXllci0+KnJl
bW92ZWRGdW5jdGlvbikoKmkpOwotCi0gICAgZm9yIChhdXRvIGkgPSBhZGRlZEl0ZW1zLmJlZ2lu
KCk7IGkgIT0gYWRkZWRJdGVtcy5lbmQoKTsgKytpKQotICAgICAgICAocGxheWVyLT4qYWRkZWRG
dW5jdGlvbikoKmkpOwotfQotCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUF1ZGlvVHJhY2tzKCkKLXsKLSAgICBkZXRlcm1pbmVDaGFuZ2VkVHJhY2tzRnJv
bU5ld1RyYWNrc0FuZE9sZEl0ZW1zKFttX2F2UGxheWVySXRlbSB0cmFja3NdLCBBVk1lZGlhVHlw
ZUF1ZGlvLCBtX2F1ZGlvVHJhY2tzLCAmQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpjcmVhdGUs
IHBsYXllcigpLCAmTWVkaWFQbGF5ZXI6OnJlbW92ZUF1ZGlvVHJhY2ssICZNZWRpYVBsYXllcjo6
YWRkQXVkaW9UcmFjayk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6dXBkYXRlVmlkZW9UcmFja3MoKQotewotICAgIGRldGVybWluZUNoYW5nZWRUcmFja3NG
cm9tTmV3VHJhY2tzQW5kT2xkSXRlbXMoW21fYXZQbGF5ZXJJdGVtIHRyYWNrc10sIEFWTWVkaWFU
eXBlVmlkZW8sIG1fdmlkZW9UcmFja3MsICZWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmNyZWF0
ZSwgcGxheWVyKCksICZNZWRpYVBsYXllcjo6cmVtb3ZlVmlkZW9UcmFjaywgJk1lZGlhUGxheWVy
OjphZGRWaWRlb1RyYWNrKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCi0KIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2l6ZUNoYW5nZWQoKQogewog
ICAgIGlmICghbV9hdkFzc2V0KQpAQCAtMTU4Nyw3ICsxNTY3LDcgQEAgU3RyaW5nIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygp
IGNvbnN0CiAgICAgfQogCiAgICAgQVZBc3NldFRyYWNrICp0cmFjayA9IFt0cmFja3Mgb2JqZWN0
QXRJbmRleDowXTsKLSAgICBtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw6Omxhbmd1YWdlRm9yQVZBc3NldFRyYWNrKHRyYWNrKTsKKyAgICBt
X2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
bGFuZ3VhZ2VGb3JBVkFzc2V0VHJhY2sodHJhY2spOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAg
IGlmIChtX2xhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjayA9PSBlbXB0eVN0cmluZygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMjIwNmMuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQy5oIgotI2ltcG9ydCAiQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIgotCi0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0
cmFjaykKLTogbV9pbXBsKEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw6OmNyZWF0ZSh0cmFjaykp
Ci17Ci0gICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7Ci19Ci0KLXZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQotewotICAgIHNldFNl
bGVjdGVkKG1faW1wbC0+ZW5hYmxlZCgpKTsKLSAgICBzZXRLaW5kKG1faW1wbC0+dmlkZW9LaW5k
KCkpOwotICAgIHNldElkKG1faW1wbC0+aWQoKSk7Ci0gICAgc2V0TGFiZWwobV9pbXBsLT5sYWJl
bCgpKTsKLSAgICBzZXRMYW5ndWFnZShtX2ltcGwtPmxhbmd1YWdlKCkpOwotfQotCi12b2lkIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRlbVRy
YWNrICp0cmFjaykKLXsKLSAgICBtX2ltcGwgPSBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsOjpj
cmVhdGUodHJhY2spOwotICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwotfQotCi1BVlBs
YXllckl0ZW1UcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2so
KQotewotICAgIHJldHVybiBtX2ltcGwtPnBsYXllckl0ZW1UcmFjaygpOwotfQotCi12b2lkIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0U2VsZWN0ZWQoYm9vbCBlbmFibGVkKQotewotICAg
IFZpZGVvVHJhY2tQcml2YXRlQVZGOjpzZXRTZWxlY3RlZChlbmFibGVkKTsKLSAgICBtX2ltcGwt
PnNldEVuYWJsZWQoZW5hYmxlZCk7Ci19Ci0gICAgCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiOTE2ZTA2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDX2gKLSNkZWZpbmUgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDX2gKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLQotI2luY2x1ZGUgIlZpZGVvVHJh
Y2tQcml2YXRlQVZGLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotCi1PQkpDX0NMQVNTIEFW
UGxheWVySXRlbVRyYWNrOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw7Ci0KLWNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyBGSU5B
TCA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZUFWRiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKQotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDPiBjcmVhdGUoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNr
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakModHJhY2spKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoYm9v
bCkgT1ZFUlJJREU7Ci0KLSAgICB2b2lkIHNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1U
cmFjayopOwotICAgIEFWUGxheWVySXRlbVRyYWNrKiBwbGF5ZXJJdGVtVHJhY2soKTsKLQotcHJp
dmF0ZToKLSAgICBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqKTsK
LQotICAgIHZvaWQgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7Ci0gICAgT3duUHRyPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+IG1faW1wbDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShWSURFT19UUkFDSykKLQotI2VuZGlmIC8vIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQ19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1
ZmZlci5jcHAKaW5kZXggYjBkMmNkYy4uMTliZGM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcApAQCAtMzksNyAr
MzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShXSU4pIHx8IFVT
RShDQUlSTykKKyNpZiBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKSB8fCBVU0UoQ0FJUk8p
CiBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVk
LCBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwgUHJlc2VydmVEcmF3
aW5nQnVmZmVyIHByZXNlcnZlRHJhd2luZ0J1ZmZlciwgQWxwaGFSZXF1aXJlbWVudCBhbHBoYSkK
ICAgICA6IG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyKHByZXNlcnZlRHJhd2luZ0J1ZmZlcikKICAg
ICAsIG1fYWxwaGEoYWxwaGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjQ3Y2I0YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJldyBXYXNvbiAocmVjdGFs
b2dpY0ByZWN0YWxvZ2ljLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoM0RfR1JB
UEhJQ1MpCisKKyNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK1BsYXRmb3JtTGF5ZXIqIERy
YXdpbmdCdWZmZXI6OnBsYXRmb3JtTGF5ZXIoKQoreworICAgIHJldHVybiAwOworfQorCit1bnNp
Z25lZCBEcmF3aW5nQnVmZmVyOjpmcm9udENvbG9yQnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gY29sb3JCdWZmZXIoKTsKK30KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQoreworfQorI2VuZGlmCisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzc1MDI2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lclF0LmNwcApAQCAtMCwwICsx
LDkwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW1hZ2VHU3RyZWFtZXIuaCIKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisK
KyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21l
dGEuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorCit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0ltYWdlR1N0cmVh
bWVyOjpJbWFnZUdTdHJlYW1lcihHc3RCdWZmZXIqIGJ1ZmZlciwgR3N0Q2FwcyogY2FwcykKKyAg
ICA6IG1faW1hZ2UoMCkKK3sKKyAgICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CisgICAgSW50U2l6
ZSBzaXplOworICAgIGludCBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBwaXhlbEFzcGVjdFJh
dGlvRGVub21pbmF0b3IsIHN0cmlkZTsKKyAgICBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2Fw
cyhjYXBzLCBzaXplLCBmb3JtYXQsIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgc3RyaWRlKTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisgICAgR3N0TWFwSW5mbyBpbmZvOworICAgIGdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgJmluZm8s
IEdTVF9NQVBfUkVBRCk7CisgICAgdWNoYXIqIGJ1ZmZlckRhdGEgPSByZWludGVycHJldF9jYXN0
PHVjaGFyKj4oaW5mby5kYXRhKTsKKyNlbHNlCisgICAgdWNoYXIqIGJ1ZmZlckRhdGEgPSByZWlu
dGVycHJldF9jYXN0PHVjaGFyKj4oR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlcikpOworI2VuZGlmCisg
ICAgUUltYWdlOjpGb3JtYXQgaW1hZ2VGb3JtYXQ7CisgICAgUUltYWdlOjpJbnZlcnRNb2RlIGlu
dmVydE1vZGU7CisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorICAgIGlmIChm
b3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9CR1JBKSB7CisgICAgICAgIGltYWdlRm9ybWF0ID0g
UUltYWdlOjpGb3JtYXRfQVJHQjMyOworICAgICAgICBpbnZlcnRNb2RlID0gUUltYWdlOjpJbnZl
cnRSZ2JhOworICAgIH0gZWxzZSB7CisgICAgICAgIGltYWdlRm9ybWF0ID0gUUltYWdlOjpGb3Jt
YXRfUkdCMzI7CisgICAgICAgIGludmVydE1vZGUgPSBRSW1hZ2U6OkludmVydFJnYjsKKyAgICB9
CisjZWxzZQorICAgIGltYWdlRm9ybWF0ID0gKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0FS
R0IpID8gUUltYWdlOjpGb3JtYXRfQVJHQjMyIDogUUltYWdlOjpGb3JtYXRfUkdCMzI7CisjZW5k
aWYKKworICAgIFFJbWFnZSBpbWFnZShidWZmZXJEYXRhLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCksIGltYWdlRm9ybWF0KTsKKworI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJ
QU4KKyAgICBpbWFnZS5pbnZlcnRQaXhlbHMoaW52ZXJ0TW9kZSk7CisjZW5kaWYKKyAgICBRUGl4
bWFwKiBzdXJmYWNlID0gbmV3IFFQaXhtYXA7CisgICAgc3VyZmFjZS0+Y29udmVydEZyb21JbWFn
ZShpbWFnZSk7CisgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoc3VyZmFjZSk7CisK
KyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGlmIChHc3RWaWRlb0Nyb3BNZXRhKiBjcm9w
TWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2Nyb3BfbWV0YShidWZmZXIpKQorICAgICAgICBz
ZXRDcm9wUmVjdChGbG9hdFJlY3QoY3JvcE1ldGEtPngsIGNyb3BNZXRhLT55LCBjcm9wTWV0YS0+
d2lkdGgsIGNyb3BNZXRhLT5oZWlnaHQpKTsKKworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVy
LCAmaW5mbyk7CisjZW5kaWYKK30KKworSW1hZ2VHU3RyZWFtZXI6On5JbWFnZUdTdHJlYW1lcigp
Cit7CisgICAgaWYgKG1faW1hZ2UpCisgICAgICAgIG1faW1hZ2UuY2xlYXIoKTsKKworICAgIG1f
aW1hZ2UgPSAwOworfQorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2lu
ZG93UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Bs
YXRmb3JtVmlkZW9XaW5kb3dRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMWRjZmQwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UXQuY3BwCkBAIC0wLDAgKzEsMTMz
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1WaWRlb1dpbmRvdy5oIgorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQorCisjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgiCisKKyNp
bmNsdWRlIDxRQ3Vyc29yPgorI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxR
S2V5RXZlbnQ+CisjaW5jbHVkZSA8UVBhbGV0dGU+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCisjaWZuZGVmIFFUX05PX0NVUlNPUgorc3RhdGljIGNvbnN0IGludCBnSGlkZU1vdXNlQ3Vy
c29yRGVsYXkgPSAzMDAwOworI2VuZGlmCisKK0Z1bGxTY3JlZW5WaWRlb1dpbmRvdzo6RnVsbFNj
cmVlblZpZGVvV2luZG93KCkKKyAgICA6IG1fbWVkaWFFbGVtZW50KDApCit7CisgICAgc2V0TW9k
YWxpdHkoUXQ6OkFwcGxpY2F0aW9uTW9kYWwpOworCisjaWZuZGVmIFFUX05PX0NVUlNPUgorICAg
IG1fY3Vyc29yVGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX2N1cnNv
clRpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChoaWRlQ3Vyc29yKCkpKTsKKyNl
bmRpZgorfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6c2V0VmlkZW9FbGVtZW50KEhU
TUxWaWRlb0VsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50
OworfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6a2V5UHJlc3NFdmVudChRS2V5RXZl
bnQqIGV2KQoreworICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBldi0+a2V5KCkgPT0gUXQ6Oktl
eV9TcGFjZSkgeworICAgICAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5wYXVzZWQoKSkKKyAgICAg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5wYXVzZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX21lZGlhRWxlbWVudC0+cGxheSgpOworICAgIH0gZWxzZSBpZiAoZXYtPmtleSgpID09IFF0
OjpLZXlfRXNjYXBlKQorICAgICAgICBlbWl0IGNsb3NlZCgpOworICAgIFFXaW5kb3c6OmtleVBy
ZXNzRXZlbnQoZXYpOworfQorCitib29sIEZ1bGxTY3JlZW5WaWRlb1dpbmRvdzo6ZXZlbnQoUUV2
ZW50KiBldikKK3sKKyAgICBzd2l0Y2ggKGV2LT50eXBlKCkpIHsKKyAgICBjYXNlIFFFdmVudDo6
TW91c2VNb3ZlOgorICAgICAgICBzaG93Q3Vyc29yKCk7CisgICAgICAgIGV2LT5hY2NlcHQoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uRGJsQ2xp
Y2s6CisgICAgICAgIGVtaXQgY2xvc2VkKCk7CisgICAgICAgIGV2LT5hY2NlcHQoKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBRRXZlbnQ6OkNsb3NlOgorI2lmbmRlZiBRVF9OT19D
VVJTT1IKKyAgICAgICAgbV9jdXJzb3JUaW1lci5zdG9wKCk7CisjZW5kaWYKKyNpZm5kZWYgUVRf
Tk9fQ1VSU09SCisgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6cmVzdG9yZU92ZXJyaWRlQ3Vyc29y
KCk7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiBRV2luZG93OjpldmVudChldik7Cit9CisKK3ZvaWQgRnVsbFNj
cmVlblZpZGVvV2luZG93OjpzaG93RnVsbFNjcmVlbigpCit7CisgICAgUVdpbmRvdzo6c2hvd0Z1
bGxTY3JlZW4oKTsKKyAgICByYWlzZSgpOworICAgIGhpZGVDdXJzb3IoKTsKK30KKwordm9pZCBG
dWxsU2NyZWVuVmlkZW9XaW5kb3c6OmhpZGVDdXJzb3IoKQoreworI2lmbmRlZiBRVF9OT19DVVJT
T1IKKyAgICBRR3VpQXBwbGljYXRpb246OnNldE92ZXJyaWRlQ3Vyc29yKFFDdXJzb3IoUXQ6OkJs
YW5rQ3Vyc29yKSk7CisjZW5kaWYKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6OnNo
b3dDdXJzb3IoKQoreworI2lmbmRlZiBRVF9OT19DVVJTT1IKKyAgICBRR3VpQXBwbGljYXRpb246
OnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOworICAgIG1fY3Vyc29yVGltZXIuc3RhcnQoZ0hpZGVN
b3VzZUN1cnNvckRlbGF5KTsKKyNlbmRpZgorfQorCisKK1BsYXRmb3JtVmlkZW9XaW5kb3c6OlBs
YXRmb3JtVmlkZW9XaW5kb3coKQoreworICAgIFFXaW5kb3cqIHdpbiA9IG5ldyBGdWxsU2NyZWVu
VmlkZW9XaW5kb3coKTsKKyAgICBtX3dpbmRvdyA9IHdpbjsKKyAgICB3aW4tPnNldEZsYWdzKHdp
bi0+ZmxhZ3MoKSB8IFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KTsKKyAgICAvLyBGSVhNRTogUG9y
dCB0byBRdCA1LgorICAgIHdpbi0+c2hvd0Z1bGxTY3JlZW4oKTsKKyAgICBtX3ZpZGVvV2luZG93
SWQgPSB3aW4tPndpbklkKCk7Cit9CisKK1BsYXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZp
ZGVvV2luZG93KCkKK3sKKyAgICBkZWxldGUgbV93aW5kb3c7CisgICAgbV92aWRlb1dpbmRvd0lk
ID0gMDsKK30KKwordm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3ZlcmxheShH
c3RNZXNzYWdlKikKK3sKK30KKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5jcHAKaW5kZXggMzg0NzhiYi4uMTk0Nzk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiQU5HTEUv
U2hhZGVyTGFuZy5oIgogI2luY2x1ZGUgPE9wZW5HTC9nbC5oPgotI2VsaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oTklYKQorI2Vs
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShXSU4pIHx8IFBMQVRGT1JNKE5JWCkKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2Vu
ZGlmCiAKQEAgLTY1LDcgKzY1LDcgQEAgUGxhdGZvcm0zRE9iamVjdCBFeHRlbnNpb25zM0RPcGVu
R0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOwogICAgIEdMdWludCBhcnJheSA9IDA7Ci0jaWYgKFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKE5JWCkpCisjaWYgKFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0o
V0lOKSB8fCBQTEFURk9STShOSVgpKQogICAgIGlmIChpc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9y
dGVkKCkpCiAgICAgICAgIGdsR2VuVmVydGV4QXJyYXlzKDEsICZhcnJheSk7CiAjZWxpZiBkZWZp
bmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJh
eV9vYmplY3QKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0w6OmRlbGV0
ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgKFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKE5JWCkpCisj
aWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExB
VEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpKQogICAgIGlmIChpc1ZlcnRleEFycmF5T2JqZWN0
U3VwcG9ydGVkKCkpCiAgICAgICAgIGdsRGVsZXRlVmVydGV4QXJyYXlzKDEsICZhcnJheSk7CiAj
ZWxpZiBkZWZpbmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3Zl
cnRleF9hcnJheV9vYmplY3QKQEAgLTk0LDcgKzk0LDcgQEAgR0MzRGJvb2xlYW4gRXh0ZW5zaW9u
czNET3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCiAgICAg
ICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0jaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4p
IHx8IFBMQVRGT1JNKE5JWCkpCisjaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpKQogICAgIGlm
IChpc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkpCiAgICAgICAgIHJldHVybiBnbElzVmVy
dGV4QXJyYXkoYXJyYXkpOwogI2VsaWYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CkBAIC0xMDYsNyArMTA2LDcgQEAg
R0MzRGJvb2xlYW4gRXh0ZW5zaW9uczNET3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
M0RPYmplY3QgYXJyYXkpCiB2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTDo6YmluZFZlcnRleEFycmF5
T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCiB7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSNpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKFdJTikgfHwgUExBVEZPUk0oTklYKSkKKyNpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKE5JWCkp
CiAgICAgaWYgKGlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKSkKICAgICAgICAgZ2xCaW5k
VmVydGV4QXJyYXkoYXJyYXkpOwogI2VsaWYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlf
b2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CkBAIC0xNjAsNyArMTYwLDcg
QEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5h
bWUgPT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewotI2lmIChQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKSkKKyNpZiAoUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgpKQogICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2Fy
cmF5X29iamVjdCIpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOwpAQCAtMjA1LDcgKzIw
NSw3IEBAIFN0cmluZyBFeHRlbnNpb25zM0RPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJl
dHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhH
TF9FWFRFTlNJT05TKSkpOwogfQogCi0jaWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKE5JWCkpCisjaWYgKFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFU
Rk9STShOSVgpKQogYm9vbCBFeHRlbnNpb25zM0RPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RT
dXBwb3J0ZWQoKQogewogICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlP
YmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zM0RPcGVuR0wuaAppbmRleCA1Y2UwMjlhLi40YzBlMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTC5oCkBAIC02MCw3ICs2MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgU3RyaW5n
IGdldEV4dGVuc2lvbnMoKTsKLSNpZiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8
IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oTklYKSkKKyNpZiAoUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KE5JWCkpCiBwcml2YXRlOgogICAgIGJvb2wgaXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDE3
NDI4OWIuLmIwZjdmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3Bw
CkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CiAjZWxpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+Ci0jZWxpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpCisjZWxpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JN
KFdJTikgfHwgUExBVEZPUk0oTklYKQogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnMzRE9wZW5HTEVTLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuaAppbmRleCBlNDExZmJlLi5lM2FjMWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
czNET3BlbkdMRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuaApAQCAtMjksMTAgKzI5LDE1IEBACiAKICNpbmNsdWRl
ICJFeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCIKIAorI2lmIFBMQVRGT1JNKFFUKQorLy8gVGFr
ZXMgY2FyZSBvZiBkZWNsYXJpbmcgdGhlIEdMRVMgZXh0ZW5zaW9ucy4KKyNpbmNsdWRlIDxxb3Bl
bmdsLmg+CisjZWxzZQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPEdMRVMyL2ds
MmV4dC5oPgorI2VuZGlmCiAKLSNpZiBPUyhRTlgpCisjaWYgT1MoUU5YKSB8fCBQTEFURk9STShR
VCkKIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwMzAu
CiAvLyBOZXdlciBLaG9yb25zIGhlYWRlcnMgZG8gZGVmaW5lIHRoZXNlIHdpdGggYSBQUk9DIHN1
ZmZpeCwgYnV0IG9sZGVyIGhlYWRlcnMgZG9uJ3QuCiAjZGVmaW5lIFBGTkdMRlJBTUVCVUZGRVJU
RVhUVVJFMkRNVUxUSVNBTVBMRUlNRyBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJETVVMVElTQU1Q
TEVJTUdQUk9DCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCA4NjQ0
YzljLi5lN2RmOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxPcGVuR0wvZ2wu
aD4KLSNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4p
IHx8IFBMQVRGT1JNKE5JWCkKKyNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpCiAjaW5jbHVk
ZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCA3ZWEzMjk5Li5kYTIwYWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAK
ICNpbmNsdWRlICJPcGVuR0xFU1NoaW1zLmgiCiAjZWxpZiBQTEFURk9STShNQUMpCiAjaW5jbHVk
ZSA8T3BlbkdML2dsLmg+Ci0jZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwg
UExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShOSVgpCisjZWxpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0o
TklYKQogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIApAQCAtMjU1LDcgKzI1NSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogICAgIGlmICh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50
SGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSNpZiAoUExBVEZPUk0oRUZMKSB8fCBQTEFURk9S
TShOSVgpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpZiAoUExBVEZPUk0oUVQpIHx8IFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKSkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAg
ICAgOjpnbEZsdXNoKCk7IC8vIE1ha2Ugc3VyZSBhbGwgR0wgY2FsbHMgaGF2ZSBiZWVuIGNvbW1p
dHRlZCBiZWZvcmUgcmVzaXppbmcuCiAgICAgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvQ29sb3JRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db2xvclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xNTE3NjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvQ29sb3JRdC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKwor
I2luY2x1ZGUgPFFDb2xvcj4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb2xvcjo6Q29sb3Io
Y29uc3QgUUNvbG9yJiBjKQorICAgIDogbV9jb2xvcihtYWtlUkdCQShjLnJlZCgpLCBjLmdyZWVu
KCksIGMuYmx1ZSgpLCBjLmFscGhhKCkpKQoreworICAgIG1fdmFsaWQgPSBjLmlzVmFsaWQoKTsK
K30KKworQ29sb3I6Om9wZXJhdG9yIFFDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFsaWQp
CisgICAgICAgIHJldHVybiBRQ29sb3IocmVkKCksIGdyZWVuKCksIGJsdWUoKSwgYWxwaGEoKSk7
CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUUNvbG9yKCk7Cit9CisKK30KKworLy8gdmltOiB0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0Zsb2F0UG9pbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9GbG9hdFBvaW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgy
MDkzZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9GbG9hdFBvaW50UXQuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICoKKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKKworI2luY2x1ZGUgPFFQb2ludEY+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRQ
b2ludDo6RmxvYXRQb2ludChjb25zdCBRUG9pbnRGJiBwKQorICAgIDogbV94KHAueCgpKQorICAg
ICwgbV95KHAueSgpKQoreworfQorCitGbG9hdFBvaW50OjpvcGVyYXRvciBRUG9pbnRGKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gUVBvaW50RihtX3gsIG1feSk7Cit9CisKK30KKworLy8gdmltOiB0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0Zsb2F0UmVjdFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0Zsb2F0UmVjdFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjM4
NzZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRmxvYXRSZWN0UXQuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgor
CisjaW5jbHVkZSA8UVJlY3RGPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0UmVjdDo6
RmxvYXRSZWN0KGNvbnN0IFFSZWN0RiYgcikKKyAgICA6IG1fbG9jYXRpb24oci50b3BMZWZ0KCkp
CisgICAgLCBtX3NpemUoci53aWR0aCgpCisgICAgLCByLmhlaWdodCgpKQoreworfQorCitGbG9h
dFJlY3Q6Om9wZXJhdG9yIFFSZWN0RigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFSZWN0Rih4KCks
IHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworfQorCitGbG9hdFJlY3QgRmxvYXRSZWN0Ojpub3Jt
YWxpemVkKCkgY29uc3QKK3sKKyAgICBGbG9hdFJlY3Qgbm9ybWFsaXplZFJlY3QgPSAqdGhpczsK
KworICAgIGlmICh3aWR0aCgpIDwgMCkgeworICAgICAgICBub3JtYWxpemVkUmVjdC5zZXRYKHgo
KSArIHdpZHRoKCkpOworICAgICAgICBub3JtYWxpemVkUmVjdC5zZXRXaWR0aCgtd2lkdGgoKSk7
CisgICAgfQorICAgIGlmIChoZWlnaHQoKSA8IDApIHsKKyAgICAgICAgbm9ybWFsaXplZFJlY3Qu
c2V0WSh5KCkgKyBoZWlnaHQoKSk7CisgICAgICAgIG5vcm1hbGl6ZWRSZWN0LnNldEhlaWdodCgt
aGVpZ2h0KCkpOworICAgIH0KKyAgICByZXR1cm4gbm9ybWFsaXplZFJlY3Q7Cit9CisKK30KKwor
Ly8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0Zsb2F0U2l6ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0Zsb2F0U2l6ZVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zZWNmYWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvRmxvYXRTaXplUXQuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgor
CisjaW5jbHVkZSA8UVNpemVGPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0U2l6ZTo6
RmxvYXRTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSkKKyAgICA6IG1fd2lkdGgoc2l6ZS53aWR0aCgp
KQorICAgICwgbV9oZWlnaHQoc2l6ZS5oZWlnaHQoKSkKK3sKK30KKworRmxvYXRTaXplOjpvcGVy
YXRvciBRU2l6ZUYoKSBjb25zdAoreworICAgIHJldHVybiBRU2l6ZUYod2lkdGgoKSwgaGVpZ2h0
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhhOTg3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyCisgICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hhbmtzIDx3ZWJraXRA
bmlja3NoYW5rcy5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0
eSBuZWVkZWQgZm9yIGxvYWRpbmcgaW1hZ2VzLCBzdHlsZSBzaGVldHMgYW5kIGh0bWwKKyAgICBw
YWdlcyBmcm9tIHRoZSB3ZWIuIEl0IGhhcyBhIG1lbW9yeSBjYWNoZSBmb3IgdGhlc2Ugb2JqZWN0
cy4KKyovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisKKyNp
bmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAi
Rm9udFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
I2luY2x1ZGUgPFFGb250PgorI2luY2x1ZGUgPFFGb250RGF0YWJhc2U+CisjaW5jbHVkZSA8UVRl
eHRMYXlvdXQ+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgpCit7Cit9CisKK3N0YXRpYyBRUmF3Rm9u
dCByYXdGb250Rm9yQ2hhcmFjdGVycyhjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFFSYXdG
b250JiBmb250KQoreworICAgIFFUZXh0TGF5b3V0IGxheW91dChzdHJpbmcpOworICAgIGxheW91
dC5zZXRSYXdGb250KGZvbnQpOworICAgIGxheW91dC5iZWdpbkxheW91dCgpOworICAgIGxheW91
dC5jcmVhdGVMaW5lKCk7CisgICAgbGF5b3V0LmVuZExheW91dCgpOworCisgICAgUUxpc3Q8UUds
eXBoUnVuPiBnbHlwaExpc3QgPSBsYXlvdXQuZ2x5cGhSdW5zKCk7CisgICAgQVNTRVJUKGdseXBo
TGlzdC5zaXplKCkgPD0gMSk7CisgICAgaWYgKCFnbHlwaExpc3Quc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gUVJhd0ZvbnQoKTsKKworICAgIGNvbnN0IFFHbHlwaFJ1biYgZ2x5cGhzKGdseXBoTGlz
dC5hdCgwKSk7CisgICAgcmV0dXJuIGdseXBocy5yYXdGb250KCk7Cit9CisKK1Bhc3NSZWZQdHI8
U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBvcmlnaW5hbEZvbnRE
YXRhLCBib29sLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkKK3sKKyAgICBR
U3RyaW5nIHFzdHJpbmcgPSBRU3RyaW5nOjpmcm9tUmF3RGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IFFDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCk7CisgICAgUVJhd0ZvbnQgY29tcHV0ZWRG
b250ID0gcmF3Rm9udEZvckNoYXJhY3RlcnMocXN0cmluZywgb3JpZ2luYWxGb250RGF0YS0+Z2V0
UXRSYXdGb250KCkpOworICAgIGlmICghY29tcHV0ZWRGb250LmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgRm9udFBsYXRmb3JtRGF0YSBhbHRlcm5hdGVGb250KGNvbXB1dGVkRm9u
dCk7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKCZhbHRlcm5hdGVGb250LCBEb05vdFJl
dGFpbik7Cit9CisKK1Bhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
biwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbikKK3sKKyAgICBjb25zdCBBdG9taWNTdHJpbmcg
ZmFsbGJhY2tGYW1pbHkgPSBRRm9udChmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKSkubGFz
dFJlc29ydEZhbWlseSgpOworICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhKGZvbnRE
ZXNjcmlwdGlvbiwgZmFsbGJhY2tGYW1pbHkpOworICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0
YSgmcGxhdGZvcm1EYXRhLCBzaG91bGRSZXRhaW4pOworfQorCit2b2lkIEZvbnRDYWNoZTo6Z2V0
VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPHVuc2lnbmVkPiYpCit7
Cit9CisKK1Bhc3NPd25QdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUpCit7CisgICAgUUZvbnREYXRhYmFzZSBkYjsKKyAg
ICBpZiAoIWRiLmhhc0ZhbWlseShmYW1pbHlOYW1lKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlv
biwgZmFtaWx5TmFtZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgxYzMyZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMCwwICsxLDU1IEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisK
KyAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGFsbCBmdW5jdGlvbmFsaXR5IG5lZWRlZCBmb3IgbG9h
ZGluZyBpbWFnZXMsIHN0eWxlIHNoZWV0cyBhbmQgaHRtbAorICAgIHBhZ2VzIGZyb20gdGhlIHdl
Yi4gSXQgaGFzIGEgbWVtb3J5IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgorKi8KKyNpZm5kZWYg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YV9oCisjZGVmaW5lIEZvbnRDdXN0b21QbGF0Zm9ybURhdGFf
aAorCisjaW5jbHVkZSAiRm9udE9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRm9udFJlbmRlcmlu
Z01vZGUuaCIKKyNpbmNsdWRlICJGb250V2lkdGhWYXJpYW50LmgiCisjaW5jbHVkZSA8UVJhd0Zv
bnQ+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK3N0cnVjdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpIHsgfQorCisgICAgRm9udFBsYXRmb3JtRGF0YSBmb250
UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBGb250T3JpZW50
YXRpb24gPSBIb3Jpem9udGFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGb250V2lkdGhWYXJpYW50ID0gUmVndWxhcldpZHRoLCBGb250UmVuZGVyaW5nTW9kZSA9IE5v
cm1hbFJlbmRlcmluZ01vZGUpOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29u
c3QgU3RyaW5nJik7CisKKyAgICBRUmF3Rm9udCBtX3Jhd0ZvbnQ7Cit9OworCitGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciog
YnVmZmVyKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YVF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTc5NzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YVF0
LmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKKyAgICBUaGlzIGNsYXNzIHBy
b3ZpZGVzIGFsbCBmdW5jdGlvbmFsaXR5IG5lZWRlZCBmb3IgbG9hZGluZyBpbWFnZXMsIHN0eWxl
IHNoZWV0cyBhbmQgaHRtbAorICAgIHBhZ2VzIGZyb20gdGhlIHdlYi4gSXQgaGFzIGEgbWVtb3J5
IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgorKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgiCisKKyNpbmNsdWRlICJGb250UGxhdGZvcm1E
YXRhLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaWYgVVNFKFpMSUIpCisjaW5jbHVk
ZSAiV09GRkZpbGVGb3JtYXQuaCIKKyNlbmRpZgorI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Zm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Rm9udE9yaWVudGF0aW9uLCBGb250V2lkdGhWYXJpYW50LCBGb250UmVuZGVyaW5nTW9kZSkKK3sK
KyAgICBRX0FTU0VSVChtX3Jhd0ZvbnQuaXNWYWxpZCgpKTsKKyAgICBtX3Jhd0ZvbnQuc2V0UGl4
ZWxTaXplKHFyZWFsKHNpemUpKTsKKyAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShtX3Jhd0Zv
bnQpOworfQorCitGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQoreworICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBi
dWZmZXIpOworCisjaWYgVVNFKFpMSUIpCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2ZudEJ1
ZmZlcjsKKyAgICBpZiAoaXNXT0ZGKGJ1ZmZlcikpIHsKKyAgICAgICAgVmVjdG9yPGNoYXI+IHNm
bnQ7CisgICAgICAgIGlmICghY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLCBzZm50KSkKKyAgICAg
ICAgICAgIHJldHVybiAwOworCisgICAgICAgIHNmbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFk
b3B0VmVjdG9yKHNmbnQpOworICAgICAgICBidWZmZXIgPSBzZm50QnVmZmVyLmdldCgpOworICAg
IH0KKyNlbmRpZiAvLyBVU0UoWkxJQikKKworICAgIGNvbnN0IFFCeXRlQXJyYXkgZm9udERhdGEo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyNpZiAhVVNFKFpMSUIpCisgICAgaWYg
KGZvbnREYXRhLnN0YXJ0c1dpdGgoIndPRkYiKSkgeworICAgICAgICBxV2FybmluZygiV09GRiBz
dXBwb3J0IHJlcXVpcmVzIFF0V2ViS2l0IHRvIGJlIGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0LiIp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYgLy8gIVVTRShaTElCKQorICAgIC8v
IFBpeGVsIHNpemUgZG9lc24ndCBtYXR0ZXIgYXQgdGhpcyBwb2ludCwgaXQgaXMgc2V0IGluIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEuCisgICAgUVJhd0ZvbnQgcmF3
Rm9udChmb250RGF0YSwgLypwaXhlbFNpemUgPSAqLzAsIFFGb250OjpQcmVmZXJEZWZhdWx0SGlu
dGluZyk7CisgICAgaWYgKCFyYXdGb250LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhICpkYXRhID0gbmV3IEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE7CisgICAgZGF0YS0+bV9yYXdGb250ID0gcmF3Rm9udDsKKyAgICByZXR1cm4gZGF0YTsK
K30KKworYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBT
dHJpbmcmIGZvcm1hdCkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZm9ybWF0LCAi
dHJ1ZXR5cGUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmb3JtYXQsICJvcGVudHlwZSIpCisjaWYg
VVNFKFpMSUIpCisgICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmb3JtYXQsICJ3b2Zm
IikKKyNlbmRpZgorICAgIDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjUwODg1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTAsMCArMSwxMzIg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlcgorICAgIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBo
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKKyAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGFsbCBm
dW5jdGlvbmFsaXR5IG5lZWRlZCBmb3IgbG9hZGluZyBpbWFnZXMsIHN0eWxlIHNoZWV0cyBhbmQg
aHRtbAorICAgIHBhZ2VzIGZyb20gdGhlIHdlYi4gSXQgaGFzIGEgbWVtb3J5IGNhY2hlIGZvciB0
aGVzZSBvYmplY3RzLgorKi8KKyNpZm5kZWYgRm9udFBsYXRmb3JtRGF0YV9oCisjZGVmaW5lIEZv
bnRQbGF0Zm9ybURhdGFfaAorCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSAiRm9udE9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSA8UUZvbnQ+CisjaW5jbHVkZSA8UUhhc2g+
CisjaW5jbHVkZSA8UVJhd0ZvbnQ+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRQ
bGF0Zm9ybURhdGFQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udFBsYXRmb3JtRGF0YVBy
aXZhdGU+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250UGxhdGZvcm1EYXRhUHJpdmF0
ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEZvbnRQbGF0Zm9ybURh
dGFQcml2YXRlKCkKKyAgICAgICAgOiBzaXplKDApCisgICAgICAgICwgYm9sZChmYWxzZSkKKyAg
ICAgICAgLCBvYmxpcXVlKGZhbHNlKQorICAgICAgICAsIGlzRGVsZXRlZFZhbHVlKGZhbHNlKQor
ICAgIHsgfQorICAgIEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKGNvbnN0IGZsb2F0IHNpemUsIGNv
bnN0IGJvb2wgYm9sZCwgY29uc3QgYm9vbCBvYmxpcXVlKQorICAgICAgICA6IHNpemUoc2l6ZSkK
KyAgICAgICAgLCBib2xkKGJvbGQpCisgICAgICAgICwgb2JsaXF1ZShvYmxpcXVlKQorICAgICAg
ICAsIGlzRGVsZXRlZFZhbHVlKGZhbHNlKQorICAgIHsKKy8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZv
ciBTVkcgRm9udHMsIHdoaWNoIGFyZSBvbmx5IHN1cHBvcnRlZCB3aGVuIHVzaW5nIFFSYXdGb250
LgorLy8gSXQgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGFwcHJvcHJpYXRlIHBsYXRmb3JtIGRh
dGEgdG8gdXNlIGFzIGEgZmFsbGJhY2suCisgICAgICAgIFFGb250IGZvbnQ7CisgICAgICAgIGZv
bnQuc2V0Qm9sZChib2xkKTsKKyAgICAgICAgZm9udC5zZXRJdGFsaWMob2JsaXF1ZSk7CisgICAg
ICAgIHJhd0ZvbnQgPSBRUmF3Rm9udDo6ZnJvbUZvbnQoZm9udCwgUUZvbnREYXRhYmFzZTo6QW55
KTsKKyAgICAgICAgcmF3Rm9udC5zZXRQaXhlbFNpemUoc2l6ZSk7CisgICAgfQorCisgICAgRm9u
dFBsYXRmb3JtRGF0YVByaXZhdGUoY29uc3QgUVJhd0ZvbnQmIHJhd0ZvbnQpCisgICAgICAgIDog
cmF3Rm9udChyYXdGb250KQorICAgICAgICAsIHNpemUocmF3Rm9udC5waXhlbFNpemUoKSkKKyAg
ICAgICAgLCBib2xkKHJhd0ZvbnQud2VpZ2h0KCkgPj0gUUZvbnQ6OkJvbGQpCisgICAgICAgICwg
b2JsaXF1ZShmYWxzZSkKKyAgICAgICAgLCBpc0RlbGV0ZWRWYWx1ZShmYWxzZSkKKyAgICB7IH0K
KworICAgIEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKKyAgICAgICAgOiBpc0RlbGV0ZWRWYWx1ZSh0cnVlKQorICAgIHsgfQorCisgICAgUVJh
d0ZvbnQgcmF3Rm9udDsKKyAgICBmbG9hdCBzaXplOworICAgIGJvb2wgYm9sZCA6IDE7CisgICAg
Ym9vbCBvYmxpcXVlIDogMTsKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlIDogMTsKK307CisKK2Ns
YXNzIEZvbnRQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9i
bGlxdWUpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBpbnQgd29yZFNwYWNpbmcgPSAwLCBpbnQgbGV0
dGVyU3BhY2luZyA9IDApOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYsIGZsb2F0IHNpemUpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgUVJhd0ZvbnQm
IHJhd0ZvbnQpCisgICAgICAgIDogbV9kYXRhKGFkb3B0UmVmKG5ldyBGb250UGxhdGZvcm1EYXRh
UHJpdmF0ZShyYXdGb250KSkpCisgICAgeyB9CisgICAgRm9udFBsYXRmb3JtRGF0YShXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9kYXRhKGFkb3B0UmVmKG5ldyBG
b250UGxhdGZvcm1EYXRhUHJpdmF0ZSgpKSkKKyAgICB7CisgICAgICAgIG1fZGF0YS0+aXNEZWxl
dGVkVmFsdWUgPSB0cnVlOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250
UGxhdGZvcm1EYXRhJikgY29uc3Q7CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RhdGEgJiYgbV9kYXRhLT5pc0RlbGV0
ZWRWYWx1ZTsKKyAgICB9CisKKyAgICBRUmF3Rm9udCByYXdGb250KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIFFfQVNTRVJUKCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKKyAgICAgICAgaWYg
KCFtX2RhdGEpCisgICAgICAgICAgICByZXR1cm4gUVJhd0ZvbnQoKTsKKyAgICAgICAgcmV0dXJu
IG1fZGF0YS0+cmF3Rm9udDsKKyAgICB9CisKKyAgICBmbG9hdCBzaXplKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFFfQVNTRVJUKCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKKyAgICAgICAg
aWYgKCFtX2RhdGEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZGF0
YS0+c2l6ZTsKKyAgICB9CisKKyAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBIb3Jpem9udGFsOyB9IC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgdm9pZCBz
ZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24pIHsgfSAvLyBGSVhNRTogSW1wbGVtZW50Lgor
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmlu
ZyBkZXNjcmlwdGlvbigpIGNvbnN0OworI2VuZGlmCitwcml2YXRlOgorICAgIFJlZlB0cjxGb250
UGxhdGZvcm1EYXRhUHJpdmF0ZT4gbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRhUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGYzYTkxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0
LmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxl
IEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgICAgQ29weXJpZ2h0IChDKSAyMDEx
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHly
aWdodCAoQykgMjAxMyBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKworKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKwor
I2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFFGb250OjpXZWlnaHQgdG9RRm9udFdl
aWdodChGb250V2VpZ2h0IGZvbnRXZWlnaHQpCit7CisgICAgc3dpdGNoIChmb250V2VpZ2h0KSB7
CisgICAgY2FzZSBGb250V2VpZ2h0MTAwOgorICAgIGNhc2UgRm9udFdlaWdodDIwMDoKKyAgICAg
ICAgcmV0dXJuIFFGb250OjpMaWdodDsgLy8gUUZvbnQ6OkxpZ2h0ID09IFdlaWdodCBvZiAyNQor
ICAgIGNhc2UgRm9udFdlaWdodDYwMDoKKyAgICAgICAgcmV0dXJuIFFGb250OjpEZW1pQm9sZDsg
Ly8gUUZvbnQ6OkRlbWlCb2xkID09IFdlaWdodCBvZiA2MworICAgIGNhc2UgRm9udFdlaWdodDcw
MDoKKyAgICBjYXNlIEZvbnRXZWlnaHQ4MDA6CisgICAgICAgIHJldHVybiBRRm9udDo6Qm9sZDsg
Ly8gUUZvbnQ6OkJvbGQgPT0gV2VpZ2h0IG9mIDc1CisgICAgY2FzZSBGb250V2VpZ2h0OTAwOgor
ICAgICAgICByZXR1cm4gUUZvbnQ6OkJsYWNrOyAvLyBRRm9udDo6QmxhY2sgPT0gV2VpZ2h0IG9m
IDg3CisgICAgY2FzZSBGb250V2VpZ2h0MzAwOgorICAgIGNhc2UgRm9udFdlaWdodDQwMDoKKyAg
ICBjYXNlIEZvbnRXZWlnaHQ1MDA6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFFGb250
OjpOb3JtYWw7IC8vIFFGb250OjpOb3JtYWwgPT0gV2VpZ2h0IG9mIDUwCisgICAgfQorfQorCitz
dGF0aWMgaW5saW5lIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IGZsb2F0IHNpemUsIGNvbnN0IGJv
b2wgYm9sZCwgY29uc3QgYm9vbCBvYmxpcXVlKQoreworICAgICAvLyB0aGlzIGlzIHRoZSBlbXB0
eSB2YWx1ZSBieSBkZWZpbml0aW9uIG9mIHRoZSB0cmFpdCBGb250RGF0YUNhY2hlS2V5VHJhaXRz
CisgICAgcmV0dXJuICFib2xkICYmICFvYmxpcXVlICYmIHNpemUgPT0gMC5mOworfQorCitGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9v
bCBvYmxpcXVlKQoreworICAgIGlmICghaXNFbXB0eVZhbHVlKHNpemUsIGJvbGQsIG9ibGlxdWUp
KQorICAgICAgICBtX2RhdGEgPSBhZG9wdFJlZihuZXcgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUo
c2l6ZSwgYm9sZCwgb2JsaXF1ZSkpOworfQorCitGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgZmFtaWx5TmFtZSwgaW50IHdvcmRTcGFjaW5nLCBpbnQgbGV0dGVyU3BhY2luZykKKyAg
ICA6IG1fZGF0YShhZG9wdFJlZihuZXcgRm9udFBsYXRmb3JtRGF0YVByaXZhdGUoKSkpCit7Cisg
ICAgUUZvbnQgZm9udDsKKyAgICBpbnQgcmVxdWVzdGVkU2l6ZSA9IGRlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCk7CisgICAgZm9udC5zZXRGYW1pbHkoZmFtaWx5TmFtZSk7CisgICAgaWYg
KHJlcXVlc3RlZFNpemUpCisgICAgICAgIGZvbnQuc2V0UGl4ZWxTaXplKHJlcXVlc3RlZFNpemUp
OworICAgIGZvbnQuc2V0SXRhbGljKGRlc2NyaXB0aW9uLml0YWxpYygpKTsKKyAgICBmb250LnNl
dFdlaWdodCh0b1FGb250V2VpZ2h0KGRlc2NyaXB0aW9uLndlaWdodCgpKSk7CisgICAgZm9udC5z
ZXRXb3JkU3BhY2luZyh3b3JkU3BhY2luZyk7CisgICAgZm9udC5zZXRMZXR0ZXJTcGFjaW5nKFFG
b250OjpBYnNvbHV0ZVNwYWNpbmcsIGxldHRlclNwYWNpbmcpOworICAgIGlmIChkZXNjcmlwdGlv
bi5mb250U21vb3RoaW5nKCkgPT0gTm9TbW9vdGhpbmcKKyAgICAgICAgfHwgKGRlc2NyaXB0aW9u
LmZvbnRTbW9vdGhpbmcoKSA9PSBBdXRvU21vb3RoaW5nICYmICFGb250OjpzaG91bGRVc2VTbW9v
dGhpbmcoKSkpCisgICAgICAgIGZvbnQuc2V0U3R5bGVTdHJhdGVneShRRm9udDo6Tm9BbnRpYWxp
YXMpOworCisgICAgbV9kYXRhLT5ib2xkID0gZm9udC5ib2xkKCk7CisgICAgLy8gV2ViS2l0IGFs
bG93cyBmb250IHNpemUgemVybyBidXQgUUZvbnQgZG9lcyBub3QuIFdlIHdpbGwgcmV0dXJuCisg
ICAgLy8gbV9kYXRhLT5zaXplIGlmIGEgZm9udCBzaXplIG9mIHplcm8gaXMgcmVxdWVzdGVkIGFu
ZCBwaXhlbFNpemUoKQorICAgIC8vIG90aGVyd2lzZS4KKyAgICBtX2RhdGEtPnNpemUgPSAoIXJl
cXVlc3RlZFNpemUpID8gcmVxdWVzdGVkU2l6ZSA6IGZvbnQucGl4ZWxTaXplKCk7CisgICAgbV9k
YXRhLT5yYXdGb250ID0gUVJhd0ZvbnQ6OmZyb21Gb250KGZvbnQsIFFGb250RGF0YWJhc2U6OkFu
eSk7Cit9CisKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIsIGZsb2F0IHNpemUpCisgICAgOiBtX2RhdGEoYWRvcHRSZWYobmV3
IEZvbnRQbGF0Zm9ybURhdGFQcml2YXRlKCkpKQoreworICAgIG1fZGF0YS0+cmF3Rm9udCA9IG90
aGVyLm1fZGF0YS0+cmF3Rm9udDsKKyAgICBtX2RhdGEtPmJvbGQgPSBvdGhlci5tX2RhdGEtPmJv
bGQ7CisgICAgbV9kYXRhLT5vYmxpcXVlID0gb3RoZXIubV9kYXRhLT5vYmxpcXVlOworICAgIG1f
ZGF0YS0+cmF3Rm9udC5zZXRQaXhlbFNpemUoc2l6ZSk7CisgICAgbV9kYXRhLT5zaXplID0gbV9k
YXRhLT5yYXdGb250LnBpeGVsU2l6ZSgpOworfQorCitib29sIEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYg
KG1fZGF0YSA9PSBvdGhlci5tX2RhdGEpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KCFtX2RhdGEgfHwgIW90aGVyLm1fZGF0YSB8fCBtX2RhdGEtPmlzRGVsZXRlZFZhbHVlIHx8IG90
aGVyLm1fZGF0YS0+aXNEZWxldGVkVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGNvbnN0IGJvb2wgZXF1YWxzID0gKG1fZGF0YS0+c2l6ZSA9PSBvdGhlci5tX2RhdGEtPnNpemUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAmJiBtX2RhdGEtPmJvbGQgPT0gb3RoZXIubV9kYXRh
LT5ib2xkCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbV9kYXRhLT5vYmxpcXVlID09IG90
aGVyLm1fZGF0YS0+b2JsaXF1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICYmIG1fZGF0YS0+
cmF3Rm9udCA9PSBvdGhlci5tX2RhdGEtPnJhd0ZvbnQpOworICAgIHJldHVybiBlcXVhbHM7Cit9
CisKK3Vuc2lnbmVkIEZvbnRQbGF0Zm9ybURhdGE6Omhhc2goKSBjb25zdAoreworICAgIGlmICgh
bV9kYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobV9kYXRhLT5pc0RlbGV0ZWRWYWx1
ZSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIHFIYXNoKG1fZGF0YS0+cmF3Rm9udC5m
YW1pbHlOYW1lKCkpIF4gcUhhc2gobV9kYXRhLT5yYXdGb250LnN0eWxlKCkpCisgICAgICAgICAg
ICBeIHFIYXNoKG1fZGF0YS0+cmF3Rm9udC53ZWlnaHQoKSkKKyAgICAgICAgICAgIF4gcUhhc2go
KnJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KCZtX2RhdGEtPnNpemUpKTsKK30KKworI2lmbmRl
ZiBOREVCVUcKK1N0cmluZyBGb250UGxhdGZvcm1EYXRhOjpkZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjVmMGQ1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCkBAIC0wLDAgKzEsMzQyIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtp
dC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKworI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgor
I2luY2x1ZGUgIkZvbnRHbHlwaHMuaCIKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKyNpbmNs
dWRlICJHbHlwaEJ1ZmZlci5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQ
YXR0ZXJuLmgiCisjaW5jbHVkZSAiU2hhZG93Qmx1ci5oIgorI2luY2x1ZGUgIlRleHRSdW4uaCIK
KworI2luY2x1ZGUgPFFCcnVzaD4KKyNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxRUGFp
bnRlclBhdGg+CisjaW5jbHVkZSA8UVBlbj4KKyNpbmNsdWRlIDxRUG9pbnRGPgorI2luY2x1ZGUg
PFFUZXh0TGF5b3V0PgorI2luY2x1ZGUgPHFhbGdvcml0aG1zLmg+CisKKyNpbmNsdWRlIDxsaW1p
dHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgUVN0cmluZyBmcm9t
UmF3RGF0YVdpdGhvdXRSZWYoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCBzdGFydCA9IDAsIGlu
dCBsZW4gPSAtMSkKK3sKKyAgICBpZiAobGVuIDwgMCkKKyAgICAgICAgbGVuID0gc3RyaW5nLmxl
bmd0aCgpIC0gc3RhcnQ7CisgICAgUV9BU1NFUlQoc3RhcnQgKyBsZW4gPD0gc3RyaW5nLmxlbmd0
aCgpKTsKKworICAgIC8vIFdlIGRvbid0IGRldGFjaC4gVGhpcyBhc3N1bWVzIHRoZSBXZWJDb3Jl
IHN0cmluZyBkYXRhIHdpbGwgc3RheSB2YWxpZCBmb3IgdGhlCisgICAgLy8gbGlmZXRpbWUgb2Yg
dGhlIFFTdHJpbmcgd2UgcGFzcyBiYWNrLCBzaW5jZSB3ZSBkb24ndCByZWYgdGhlIFdlYkNvcmUg
c3RyaW5nLgorICAgIHJldHVybiBRU3RyaW5nOjpmcm9tUmF3RGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IFFDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSArIHN0YXJ0KSwgbGVuKTsKK30KKwor
c3RhdGljIFFUZXh0TGluZSBzZXR1cExheW91dChRVGV4dExheW91dCogbGF5b3V0LCBjb25zdCBU
ZXh0UnVuJiBzdHlsZSkKK3sKKyAgICBpbnQgZmxhZ3MgPSBzdHlsZS5ydGwoKSA/IFF0OjpUZXh0
Rm9yY2VSaWdodFRvTGVmdCA6IFF0OjpUZXh0Rm9yY2VMZWZ0VG9SaWdodDsKKyAgICBpZiAoc3R5
bGUuZXhwYW5zaW9uKCkpCisgICAgICAgIGZsYWdzIHw9IFF0OjpUZXh0SnVzdGlmaWNhdGlvbkZv
cmNlZDsKKyAgICBsYXlvdXQtPnNldEZsYWdzKGZsYWdzKTsKKyAgICBsYXlvdXQtPmJlZ2luTGF5
b3V0KCk7CisgICAgUVRleHRMaW5lIGxpbmUgPSBsYXlvdXQtPmNyZWF0ZUxpbmUoKTsKKyAgICBs
aW5lLnNldExpbmVXaWR0aChJTlRfTUFYLzI1Nik7CisgICAgaWYgKHN0eWxlLmV4cGFuc2lvbigp
KQorICAgICAgICBsaW5lLnNldExpbmVXaWR0aChsaW5lLm5hdHVyYWxUZXh0V2lkdGgoKSArIHN0
eWxlLmV4cGFuc2lvbigpKTsKKyAgICBsYXlvdXQtPmVuZExheW91dCgpOworICAgIHJldHVybiBs
aW5lOworfQorCitzdGF0aWMgUVBlbiBmaWxsUGVuRm9yQ29udGV4dChHcmFwaGljc0NvbnRleHQq
IGN0eCkKK3sKKyAgICBpZiAoY3R4LT5maWxsR3JhZGllbnQoKSkgeworICAgICAgICBRQnJ1c2gg
YnJ1c2goKmN0eC0+ZmlsbEdyYWRpZW50KCktPnBsYXRmb3JtR3JhZGllbnQoKSk7CisgICAgICAg
IGJydXNoLnNldFRyYW5zZm9ybShjdHgtPmZpbGxHcmFkaWVudCgpLT5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkpOworICAgICAgICByZXR1cm4gUVBlbihicnVzaCwgMCk7CisgICAgfQorCisgICAg
aWYgKGN0eC0+ZmlsbFBhdHRlcm4oKSkgeworICAgICAgICByZXR1cm4gUVBlbihRQnJ1c2goY3R4
LT5maWxsUGF0dGVybigpLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oKSksIDApOworICAgIH0KKwor
ICAgIHJldHVybiBRUGVuKFFDb2xvcihjdHgtPmZpbGxDb2xvcigpKSwgMCk7Cit9CisKK3N0YXRp
YyBRUGVuIHN0cm9rZVBlbkZvckNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjdHgpCit7CisgICAg
aWYgKGN0eC0+c3Ryb2tlR3JhZGllbnQoKSkgeworICAgICAgICBRQnJ1c2ggYnJ1c2goKmN0eC0+
c3Ryb2tlR3JhZGllbnQoKS0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAgICAgYnJ1c2guc2V0
VHJhbnNmb3JtKGN0eC0+c3Ryb2tlR3JhZGllbnQoKS0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgcmV0dXJuIFFQZW4oYnJ1c2gsIGN0eC0+c3Ryb2tlVGhpY2tuZXNzKCkpOwor
ICAgIH0KKworICAgIGlmIChjdHgtPnN0cm9rZVBhdHRlcm4oKSkgeworICAgICAgICBRQnJ1c2gg
YnJ1c2goY3R4LT5zdHJva2VQYXR0ZXJuKCktPmNyZWF0ZVBsYXRmb3JtUGF0dGVybigpKTsKKyAg
ICAgICAgcmV0dXJuIFFQZW4oYnJ1c2gsIGN0eC0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgIH0K
KworICAgIHJldHVybiBRUGVuKFFDb2xvcihjdHgtPnN0cm9rZUNvbG9yKCkpLCBjdHgtPnN0cm9r
ZVRoaWNrbmVzcygpKTsKK30KKworc3RhdGljIFFQYWludGVyUGF0aCBwYXRoRm9yR2x5cGhzKGNv
bnN0IFFHbHlwaFJ1biYgZ2x5cGhSdW4sIGNvbnN0IFFQb2ludEYmIG9mZnNldCkKK3sKKyAgICBR
UGFpbnRlclBhdGggcGF0aDsKKyAgICBjb25zdCBRUmF3Rm9udCByYXdGb250KGdseXBoUnVuLnJh
d0ZvbnQoKSk7CisgICAgY29uc3QgUVZlY3RvcjxxdWludDMyPiBnbHlwaEluZGljZXMgPSBnbHlw
aFJ1bi5nbHlwaEluZGV4ZXMoKTsKKyAgICBjb25zdCBRVmVjdG9yPFFQb2ludEY+IHBvc2l0aW9u
cyA9IGdseXBoUnVuLnBvc2l0aW9ucygpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2x5cGhJ
bmRpY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFFQYWludGVyUGF0aCBnbHlwaFBhdGggPSBy
YXdGb250LnBhdGhGb3JHbHlwaChnbHlwaEluZGljZXMuYXQoaSkpOworICAgICAgICBnbHlwaFBh
dGgudHJhbnNsYXRlKHBvc2l0aW9ucy5hdChpKSArIG9mZnNldCk7CisgICAgICAgIHBhdGguYWRk
UGF0aChnbHlwaFBhdGgpOworICAgIH0KKyAgICByZXR1cm4gcGF0aDsKK30KKworc3RhdGljIHZv
aWQgZHJhd1F0R2x5cGhSdW4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBRR2x5cGhS
dW4mIHF0R2x5cGhSdW4sIGNvbnN0IFFQb2ludEYmIHBvaW50LCBpbnQgYmFzZUxpbmVPZmZzZXQp
Cit7CisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
KworICAgIFFQYWludGVyUGF0aCB0ZXh0U3Ryb2tlUGF0aDsKKyAgICBpZiAoY29udGV4dC0+dGV4
dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKKyAgICAgICAgdGV4dFN0cm9rZVBhdGgg
PSBwYXRoRm9yR2x5cGhzKHF0R2x5cGhSdW4sIHBvaW50KTsKKworICAgIGlmIChjb250ZXh0LT5o
YXNTaGFkb3coKSkgeworICAgICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUg
PSBjb250ZXh0LT5zdGF0ZSgpOworICAgICAgICBpZiAoY29udGV4dC0+bXVzdFVzZVNoYWRvd0Js
dXIoKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3coc3RhdGUpOworICAgICAgICAg
ICAgY29uc3QgaW50IHdpZHRoID0gcXRHbHlwaFJ1bi5ib3VuZGluZ1JlY3QoKS53aWR0aCgpOwor
ICAgICAgICAgICAgY29uc3QgUVJhd0ZvbnQmIGZvbnQgPSBxdEdseXBoUnVuLnJhd0ZvbnQoKTsK
KyAgICAgICAgICAgIGNvbnN0IGludCBoZWlnaHQgPSBmb250LmFzY2VudCgpICsgZm9udC5kZXNj
ZW50KCk7CisgICAgICAgICAgICBjb25zdCBRUmVjdEYgYm91bmRpbmdSZWN0KHBvaW50LngoKSwg
cG9pbnQueSgpIC0gZm9udC5hc2NlbnQoKSArIGJhc2VMaW5lT2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5i
ZWdpblNoYWRvd0xheWVyKGNvbnRleHQsIGJvdW5kaW5nUmVjdCk7CisgICAgICAgICAgICBpZiAo
c2hhZG93Q29udGV4dCkgeworICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVy
ID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+c2V0UGVuKHN0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc2hhZG93Q29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpCisgICAg
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdHbHlwaFJ1bihwb2ludCwgcXRHbHlw
aFJ1bik7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhZG93Q29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgc2hhZG93UGFpbnRlci0+cGVuKCkpOwor
ICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFFQZW4gcHJldmlvdXNQZW4gPSBw
YWludGVyLT5wZW4oKTsKKyAgICAgICAgICAgIHBhaW50ZXItPnNldFBlbihzdGF0ZS5zaGFkb3dD
b2xvcik7CisgICAgICAgICAgICBjb25zdCBRUG9pbnRGIHNoYWRvd09mZnNldChzdGF0ZS5zaGFk
b3dPZmZzZXQud2lkdGgoKSwgc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAg
ICAgIHBhaW50ZXItPnRyYW5zbGF0ZShzaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgaWYgKGNv
bnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKQorICAgICAgICAgICAgICAg
IHBhaW50ZXItPmRyYXdHbHlwaFJ1bihwb2ludCwgcXRHbHlwaFJ1bik7CisgICAgICAgICAgICBl
bHNlIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQorICAg
ICAgICAgICAgICAgIHBhaW50ZXItPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHBhaW50ZXIt
PnBlbigpKTsKKyAgICAgICAgICAgIHBhaW50ZXItPnRyYW5zbGF0ZSgtc2hhZG93T2Zmc2V0KTsK
KyAgICAgICAgICAgIHBhaW50ZXItPnNldFBlbihwcmV2aW91c1Blbik7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9r
ZSkKKyAgICAgICAgcGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgc3Ryb2tlUGVu
Rm9yQ29udGV4dChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHsKKyAgICAgICAgUVBlbiBwcmV2aW91c1BlbiA9IHBhaW50ZXIt
PnBlbigpOworICAgICAgICBwYWludGVyLT5zZXRQZW4oZmlsbFBlbkZvckNvbnRleHQoY29udGV4
dCkpOworICAgICAgICBwYWludGVyLT5kcmF3R2x5cGhSdW4ocG9pbnQsIHF0R2x5cGhSdW4pOwor
ICAgICAgICBwYWludGVyLT5zZXRQZW4ocHJldmlvdXNQZW4pOworICAgIH0KK30KKwordm9pZCBG
b250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7
CisgICAgU3RyaW5nIHNhbml0aXplZCA9IEZvbnQ6Om5vcm1hbGl6ZVNwYWNlcyhydW4uY2hhcmFj
dGVyczE2KCksIHJ1bi5sZW5ndGgoKSk7CisgICAgY29uc3QgUVN0cmluZyBzdHJpbmcgPSBmcm9t
UmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkKTsKKyAgICBRVGV4dExheW91dCBsYXlvdXQoc3Ry
aW5nKTsKKyAgICBsYXlvdXQuc2V0UmF3Rm9udChyYXdGb250KCkpOworICAgIGluaXRGb3JtYXRG
b3JUZXh0TGF5b3V0KCZsYXlvdXQsIHJ1bik7CisgICAgUVRleHRMaW5lIGxpbmUgPSBzZXR1cExh
eW91dCgmbGF5b3V0LCBydW4pOworICAgIGNvbnN0IFFQb2ludEYgYWRqdXN0ZWRQb2ludChwb2lu
dC54KCksIHBvaW50LnkoKSAtIGxpbmUuYXNjZW50KCkpOworCisgICAgUUxpc3Q8UUdseXBoUnVu
PiBydW5zID0gbGluZS5nbHlwaFJ1bnMoZnJvbSwgdG8gLSBmcm9tKTsKKyAgICBRX0ZPUkVBQ0go
UUdseXBoUnVuIGdseXBoUnVuLCBydW5zKQorICAgICAgICBkcmF3UXRHbHlwaFJ1bihjdHgsIGds
eXBoUnVuLCBhZGp1c3RlZFBvaW50LCBsaW5lLmFzY2VudCgpKTsKK30KKworZmxvYXQgRm9udDo6
ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25z
dCBTaW1wbGVGb250RGF0YSo+KiwgR2x5cGhPdmVyZmxvdyopIGNvbnN0Cit7CisgICAgaWYgKCFw
cmltYXJ5Rm9udCgpLT5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKCFydW4ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHJ1
bi5sZW5ndGgoKSA9PSAxICYmIHRyZWF0QXNTcGFjZShydW5bMF0pKQorICAgICAgICByZXR1cm4g
cHJpbWFyeUZvbnQoKS0+c3BhY2VXaWR0aCgpICsgcnVuLmV4cGFuc2lvbigpOworICAgIFN0cmlu
ZyBzYW5pdGl6ZWQgPSBGb250Ojpub3JtYWxpemVTcGFjZXMocnVuLmNoYXJhY3RlcnMxNigpLCBy
dW4ubGVuZ3RoKCkpOworICAgIFFTdHJpbmcgc3RyaW5nID0gZnJvbVJhd0RhdGFXaXRob3V0UmVm
KHNhbml0aXplZCk7CisKKyAgICBRVGV4dExheW91dCBsYXlvdXQoc3RyaW5nKTsKKyAgICBsYXlv
dXQuc2V0UmF3Rm9udChyYXdGb250KCkpOworICAgIGluaXRGb3JtYXRGb3JUZXh0TGF5b3V0KCZs
YXlvdXQsIHJ1bik7CisgICAgUVRleHRMaW5lIGxpbmUgPSBzZXR1cExheW91dCgmbGF5b3V0LCBy
dW4pOworICAgIGZsb2F0IHgxID0gbGluZS5jdXJzb3JUb1goMCk7CisgICAgZmxvYXQgeDIgPSBs
aW5lLmN1cnNvclRvWChydW4ubGVuZ3RoKCkpOworICAgIGZsb2F0IHdpZHRoID0gcUFicyh4MiAt
IHgxKTsKKworICAgIHJldHVybiB3aWR0aCArIHJ1bi5leHBhbnNpb24oKTsKK30KKworaW50IEZv
bnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCkgY29uc3QKK3sKKyAgICBTdHJpbmcgc2FuaXRpemVkID0gRm9u
dDo6bm9ybWFsaXplU3BhY2VzKHJ1bi5jaGFyYWN0ZXJzMTYoKSwgcnVuLmxlbmd0aCgpKTsKKyAg
ICBRU3RyaW5nIHN0cmluZyA9IGZyb21SYXdEYXRhV2l0aG91dFJlZihzYW5pdGl6ZWQpOworCisg
ICAgUVRleHRMYXlvdXQgbGF5b3V0KHN0cmluZyk7CisgICAgbGF5b3V0LnNldFJhd0ZvbnQocmF3
Rm9udCgpKTsKKyAgICBpbml0Rm9ybWF0Rm9yVGV4dExheW91dCgmbGF5b3V0LCBydW4pOworICAg
IFFUZXh0TGluZSBsaW5lID0gc2V0dXBMYXlvdXQoJmxheW91dCwgcnVuKTsKKyAgICByZXR1cm4g
bGluZS54VG9DdXJzb3IocG9zaXRpb24pOworfQorCitGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9u
UmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYg
cHQsIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAoreworICAgIFN0cmluZyBzYW5pdGl6
ZWQgPSBGb250Ojpub3JtYWxpemVTcGFjZXMocnVuLmNoYXJhY3RlcnMxNigpLCBydW4ubGVuZ3Ro
KCkpOworICAgIFFTdHJpbmcgc3RyaW5nID0gZnJvbVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXpl
ZCk7CisKKyAgICBRVGV4dExheW91dCBsYXlvdXQoc3RyaW5nKTsKKyAgICBsYXlvdXQuc2V0UmF3
Rm9udChyYXdGb250KCkpOworICAgIGluaXRGb3JtYXRGb3JUZXh0TGF5b3V0KCZsYXlvdXQsIHJ1
bik7CisgICAgUVRleHRMaW5lIGxpbmUgPSBzZXR1cExheW91dCgmbGF5b3V0LCBydW4pOworCisg
ICAgZmxvYXQgeDEgPSBsaW5lLmN1cnNvclRvWChmcm9tKTsKKyAgICBmbG9hdCB4MiA9IGxpbmUu
Y3Vyc29yVG9YKHRvKTsKKyAgICBpZiAoeDIgPCB4MSkKKyAgICAgICAgcVN3YXAoeDEsIHgyKTsK
KworICAgIHJldHVybiBGbG9hdFJlY3QocHQueCgpICsgeDEsIHB0LnkoKSwgeDIgLSB4MSwgaCk7
Cit9CisKK3ZvaWQgRm9udDo6aW5pdEZvcm1hdEZvclRleHRMYXlvdXQoUVRleHRMYXlvdXQqIGxh
eW91dCwgY29uc3QgVGV4dFJ1biYgcnVuKSBjb25zdAoreworICAgIFFUZXh0TGF5b3V0OjpGb3Jt
YXRSYW5nZSByYW5nZTsKKyAgICAvLyBXZWJDb3JlIGV4cGVjdHMgd29yZC1zcGFjaW5nIHRvIGJl
IGlnbm9yZWQgb24gbGVhZGluZyBzcGFjZXMgY29udHJhcnkgdG8gd2hhdCBRdCBkb2VzLgorICAg
IC8vIFRvIGF2b2lkIHdvcmQtc3BhY2luZyBvbiBhbnkgbGVhZGluZyBzcGFjZXMsIHdlIGV4Y2x1
ZGUgdGhlbSBmcm9tIEZvcm1hdFJhbmdlIHdoaWNoCisgICAgLy8gd29yZC1zcGFjaW5nIGFsb25n
IHdpdGggb3RoZXIgb3B0aW9ucyB3b3VsZCBiZSBhcHBsaWVkIHRvLiBUaGlzIGlzIHNhZmUgc2lu
Y2UgdGhlIG90aGVyCisgICAgLy8gZm9ybWF0dGluZyBvcHRpb25zIGRvZXMgbm90IGFmZmVjdCBz
cGFjZXMuCisgICAgdW5zaWduZWQgbGVuZ3RoID0gcnVuLmxlbmd0aCgpOworICAgIGZvciAocmFu
Z2Uuc3RhcnQgPSAwOyByYW5nZS5zdGFydCA8IGxlbmd0aCAmJiB0cmVhdEFzU3BhY2UocnVuW3Jh
bmdlLnN0YXJ0XSk7ICsrcmFuZ2Uuc3RhcnQpIHsgfQorICAgIHJhbmdlLmxlbmd0aCA9IGxlbmd0
aCAtIHJhbmdlLnN0YXJ0OworCisgICAgaWYgKG1fd29yZFNwYWNpbmcpCisgICAgICAgIHJhbmdl
LmZvcm1hdC5zZXRGb250V29yZFNwYWNpbmcobV93b3JkU3BhY2luZyk7CisgICAgaWYgKG1fbGV0
dGVyU3BhY2luZykKKyAgICAgICAgcmFuZ2UuZm9ybWF0LnNldEZvbnRMZXR0ZXJTcGFjaW5nKG1f
bGV0dGVyU3BhY2luZyk7CisgICAgaWYgKHR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmIEtlcm5pbmcp
CisgICAgICAgIHJhbmdlLmZvcm1hdC5zZXRGb250S2VybmluZyh0cnVlKTsKKyAgICBpZiAoaXNT
bWFsbENhcHMoKSkKKyAgICAgICAgcmFuZ2UuZm9ybWF0LnNldEZvbnRDYXBpdGFsaXphdGlvbihR
Rm9udDo6U21hbGxDYXBzKTsKKworICAgIGlmIChyYW5nZS5mb3JtYXQucHJvcGVydHlDb3VudCgp
ICYmIHJhbmdlLmxlbmd0aCkKKyAgICAgICAgbGF5b3V0LT5zZXRBZGRpdGlvbmFsRm9ybWF0cyhR
TGlzdDxRVGV4dExheW91dDo6Rm9ybWF0UmFuZ2U+KCkgPDwgcmFuZ2UpOworfQorCitib29sIEZv
bnQ6OmNhblJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
R3JhcGhpY3NDb250ZXh0KiAvKiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8s
IGNvbnN0IEF0b21pY1N0cmluZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9p
bnQgKi8sIGludCAvKiBmcm9tICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkgY29uc3QKK3sKKyAgICBpZiAoIWZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKS5zaXpl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc2hvdWxkRmlsbCA9IGNvbnRleHQtPnRl
eHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsOworICAgIGJvb2wgc2hvdWxkU3Ryb2tlID0g
Y29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZTsKKworICAgIGlmICgh
c2hvdWxkRmlsbCAmJiAhc2hvdWxkU3Ryb2tlKQorICAgICAgICByZXR1cm47CisKKyAgICBRVmVj
dG9yPHF1aW50MzI+IGdseXBoSW5kZXhlczsKKyAgICBRVmVjdG9yPFFQb2ludEY+IHBvc2l0aW9u
czsKKworICAgIGdseXBoSW5kZXhlcy5yZXNlcnZlKG51bUdseXBocyk7CisgICAgcG9zaXRpb25z
LnJlc2VydmUobnVtR2x5cGhzKTsKKyAgICBjb25zdCBRUmF3Rm9udCYgZm9udChmb250RGF0YS0+
Z2V0UXRSYXdGb250KCkpOworCisgICAgZmxvYXQgd2lkdGggPSAwOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgeworICAgICAgICBHbHlwaCBnbHlwaCA9IGdseXBo
QnVmZmVyLmdseXBoQXQoZnJvbSArIGkpOworICAgICAgICBmbG9hdCBhZHZhbmNlID0gZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOworICAgICAgICBpZiAoIWdseXBoKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGdseXBoSW5kZXhlcy5hcHBlbmQoZ2x5cGgp
OworICAgICAgICBwb3NpdGlvbnMuYXBwZW5kKFFQb2ludEYod2lkdGgsIDApKTsKKyAgICAgICAg
d2lkdGggKz0gYWR2YW5jZTsKKyAgICB9CisKKyAgICBRR2x5cGhSdW4gcXRHbHlwaHM7CisgICAg
cXRHbHlwaHMuc2V0R2x5cGhJbmRleGVzKGdseXBoSW5kZXhlcyk7CisgICAgcXRHbHlwaHMuc2V0
UG9zaXRpb25zKHBvc2l0aW9ucyk7CisgICAgcXRHbHlwaHMuc2V0UmF3Rm9udChmb250KTsKKwor
ICAgIGRyYXdRdEdseXBoUnVuKGNvbnRleHQsIHF0R2x5cGhzLCBwb2ludCwgLyogYmFzZWxpbmVP
ZmZzZXQgPSAqLzApOworfQorCisKK2Jvb2wgRm9udDo6Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBo
c0luQ29tcGxleFRleHQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworUUZvbnQgRm9udDo6
c3ludGhldGljRm9udCgpIGNvbnN0Cit7CisgICAgUVJhd0ZvbnQgcmF3Rm9udChwcmltYXJ5Rm9u
dCgpLT5nZXRRdFJhd0ZvbnQoKSk7CisgICAgUUZvbnQgZihyYXdGb250LmZhbWlseU5hbWUoKSk7
CisgICAgaWYgKHJhd0ZvbnQucGl4ZWxTaXplKCkpCisgICAgICAgIGYuc2V0UGl4ZWxTaXplKHJh
d0ZvbnQucGl4ZWxTaXplKCkpOworICAgIGYuc2V0V2VpZ2h0KHJhd0ZvbnQud2VpZ2h0KCkpOwor
ICAgIGYuc2V0U3R5bGUocmF3Rm9udC5zdHlsZSgpKTsKKyAgICBpZiAobV9sZXR0ZXJTcGFjaW5n
KQorICAgICAgICBmLnNldExldHRlclNwYWNpbmcoUUZvbnQ6OkFic29sdXRlU3BhY2luZywgbV9s
ZXR0ZXJTcGFjaW5nKTsKKyAgICBpZiAobV93b3JkU3BhY2luZykKKyAgICAgICAgZi5zZXRXb3Jk
U3BhY2luZyhtX3dvcmRTcGFjaW5nKTsKKyAgICByZXR1cm4gZjsKK30KKworCitRUmF3Rm9udCBG
b250OjpyYXdGb250KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcHJpbWFyeUZvbnQoKS0+Z2V0UXRS
YXdGb250KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dseXBoUGFnZVRyZWVOb2RlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR2x5cGhQYWdlVHJlZU5vZGVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWVlOTkyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dseXBoUGFnZVRyZWVOb2RlUXQuY3BwCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlcgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKworICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgYWxsIGZ1bmN0aW9u
YWxpdHkgbmVlZGVkIGZvciBsb2FkaW5nIGltYWdlcywgc3R5bGUgc2hlZXRzIGFuZCBodG1sCisg
ICAgcGFnZXMgZnJvbSB0aGUgd2ViLiBJdCBoYXMgYSBtZW1vcnkgY2FjaGUgZm9yIHRoZXNlIG9i
amVjdHMuCisqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdseXBoUGFnZVRyZWVO
b2RlLmgiCisKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorI2luY2x1ZGUgPFFGb250TWV0
cmljc0Y+CisjaW5jbHVkZSA8UVRleHRMYXlvdXQ+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ym9vbCBHbHlwaFBhZ2U6OmZpbGwodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIFVD
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhKQoreworICAgIFFSYXdGb250IHJhd0ZvbnQgPSBmb250RGF0YS0+cGxhdGZvcm1E
YXRhKCkucmF3Rm9udCgpOworICAgIFFTdHJpbmcgcXN0cmluZyA9IFFTdHJpbmc6OmZyb21SYXdE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihidWZmZXIpLCBzdGF0aWNfY2FzdDxp
bnQ+KGJ1ZmZlckxlbmd0aCkpOworICAgIFFWZWN0b3I8cXVpbnQzMj4gaW5kZXhlcyA9IHJhd0Zv
bnQuZ2x5cGhJbmRleGVzRm9yU3RyaW5nKHFzdHJpbmcpOworCisgICAgYm9vbCBoYXZlR2x5cGhz
ID0gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgR2x5cGggZ2x5cGggPSAoaSA8IGluZGV4ZXMuc2l6ZSgpKSA/IGluZGV4ZXMuYXQo
aSkgOiAwOworICAgICAgICBpZiAoIWdseXBoKQorICAgICAgICAgICAgc2V0R2x5cGhEYXRhRm9y
SW5kZXgob2Zmc2V0ICsgaSwgMCwgMCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaGF2
ZUdseXBocyA9IHRydWU7CisgICAgICAgICAgICBzZXRHbHlwaERhdGFGb3JJbmRleChvZmZzZXQg
KyBpLCBnbHlwaCwgZm9udERhdGEpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBoYXZl
R2x5cGhzOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFkaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYWRpZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcy
YmIwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFkaWVudFF0LmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKworI2lu
Y2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCisjaW5j
bHVkZSA8UUdyYWRpZW50PgorI2luY2x1ZGUgPFFQYWludGVyPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgR3JhZGllbnQ6OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgZGVsZXRlIG1f
Z3JhZGllbnQ7CisgICAgbV9ncmFkaWVudCA9IDA7Cit9CisKK1FHcmFkaWVudCogR3JhZGllbnQ6
OnBsYXRmb3JtR3JhZGllbnQoKQoreworICAgIGlmIChtX2dyYWRpZW50KQorICAgICAgICByZXR1
cm4gbV9ncmFkaWVudDsKKworICAgIGJvb2wgcmV2ZXJzZWQgPSBtX3IwID4gbV9yMTsKKworICAg
IHFyZWFsIGlubmVyUmFkaXVzID0gcmV2ZXJzZWQgPyBtX3IxIDogbV9yMDsKKyAgICBxcmVhbCBv
dXRlclJhZGl1cyA9IHJldmVyc2VkID8gbV9yMCA6IG1fcjE7CisgICAgUVBvaW50RiBjZW50ZXIg
PSByZXZlcnNlZCA/IG1fcDAgOiBtX3AxOworICAgIFFQb2ludEYgZm9jYWxQb2ludCA9IHJldmVy
c2VkID8gbV9wMSA6IG1fcDA7CisKKyAgICBpZiAobV9yYWRpYWwpCisgICAgICAgIG1fZ3JhZGll
bnQgPSBuZXcgUVJhZGlhbEdyYWRpZW50KGNlbnRlciwgb3V0ZXJSYWRpdXMsIGZvY2FsUG9pbnQp
OworICAgIGVsc2UKKyAgICAgICAgbV9ncmFkaWVudCA9IG5ldyBRTGluZWFyR3JhZGllbnQobV9w
MC54KCksIG1fcDAueSgpLCBtX3AxLngoKSwgbV9wMS55KCkpOworCisgICAgbV9ncmFkaWVudC0+
c2V0SW50ZXJwb2xhdGlvbk1vZGUoUUdyYWRpZW50OjpDb21wb25lbnRJbnRlcnBvbGF0aW9uKTsK
KworICAgIHNvcnRTdG9wc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBRQ29sb3Igc3RvcENvbG9yOwor
ICAgIFZlY3RvcjxDb2xvclN0b3A+OjppdGVyYXRvciBzdG9wSXRlcmF0b3IgPSBtX3N0b3BzLmJl
Z2luKCk7CisgICAgcXJlYWwgbGFzdFN0b3AoMC4wKTsKKyAgICBjb25zdCBxcmVhbCBsYXN0U3Rv
cERpZmYgPSAwLjAwMDAwMDE7CisgICAgd2hpbGUgKHN0b3BJdGVyYXRvciAhPSBtX3N0b3BzLmVu
ZCgpKSB7CisgICAgICAgIHN0b3BDb2xvci5zZXRSZ2JGKHN0b3BJdGVyYXRvci0+cmVkLCBzdG9w
SXRlcmF0b3ItPmdyZWVuLCBzdG9wSXRlcmF0b3ItPmJsdWUsIHN0b3BJdGVyYXRvci0+YWxwaGEp
OworICAgICAgICBpZiAocUZ1enp5Q29tcGFyZShsYXN0U3RvcCwgcXJlYWwoc3RvcEl0ZXJhdG9y
LT5zdG9wKSkpCisgICAgICAgICAgICBsYXN0U3RvcCA9IHN0b3BJdGVyYXRvci0+c3RvcCArIGxh
c3RTdG9wRGlmZjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGFzdFN0b3AgPSBzdG9wSXRl
cmF0b3ItPnN0b3A7CisKKyAgICAgICAgaWYgKG1fcmFkaWFsICYmICFxRnV6enlDb21wYXJlKDEg
KyBvdXRlclJhZGl1cywgcXJlYWwoMSkpKSB7CisgICAgICAgICAgICBsYXN0U3RvcCA9IGxhc3RT
dG9wICogKDEuMGYgLSBpbm5lclJhZGl1cyAvIG91dGVyUmFkaXVzKTsKKyAgICAgICAgICAgIGlm
ICghcmV2ZXJzZWQpCisgICAgICAgICAgICAgICAgbGFzdFN0b3AgKz0gaW5uZXJSYWRpdXMgLyBv
dXRlclJhZGl1czsKKyAgICAgICAgfQorCisgICAgICAgIHFyZWFsIHN0b3BQb3NpdGlvbiA9IHFN
aW4obGFzdFN0b3AsIHFyZWFsKDEuMGYpKTsKKworICAgICAgICBpZiAobV9yYWRpYWwgJiYgcmV2
ZXJzZWQpCisgICAgICAgICAgICBzdG9wUG9zaXRpb24gPSAxIC0gc3RvcFBvc2l0aW9uOworCisg
ICAgICAgIG1fZ3JhZGllbnQtPnNldENvbG9yQXQoc3RvcFBvc2l0aW9uLCBzdG9wQ29sb3IpOwor
ICAgICAgICAvLyBLZWVwIHRoZSBsYXN0U3RvcCBhcyBvcmdpbmFsIHZhbHVlLCBzaW5jZSB0aGUg
Zm9sbG93aW5nIHN0b3BDb2xvciBkZXBlbmQgaXQKKyAgICAgICAgbGFzdFN0b3AgPSBzdG9wSXRl
cmF0b3ItPnN0b3A7CisgICAgICAgICsrc3RvcEl0ZXJhdG9yOworICAgIH0KKworICAgIGlmICht
X3N0b3BzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBUaGUgYmVoYXZpb3Igb2YgUUdyYWRpZW50
IHdpdGggbm8gc3RvcHMgaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmcm9tIEhUTUw1IHNwZWMsCisg
ICAgICAgIC8vIHdoZXJlIHRoZSBsYXR0ZXIgcmVxdWlyZXMgdGhlIGdyYWRpZW50IHRvIGJlIHRy
YW5zcGFyZW50IGJsYWNrLgorICAgICAgICBtX2dyYWRpZW50LT5zZXRDb2xvckF0KDAuMCwgUUNv
bG9yKDAsIDAsIDAsIDApKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1fc3ByZWFkTWV0aG9kKSB7
CisgICAgY2FzZSBTcHJlYWRNZXRob2RQYWQ6CisgICAgICAgIG1fZ3JhZGllbnQtPnNldFNwcmVh
ZChRR3JhZGllbnQ6OlBhZFNwcmVhZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3ByZWFk
TWV0aG9kUmVmbGVjdDoKKyAgICAgICAgbV9ncmFkaWVudC0+c2V0U3ByZWFkKFFHcmFkaWVudDo6
UmVmbGVjdFNwcmVhZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3ByZWFkTWV0aG9kUmVw
ZWF0OgorICAgICAgICBtX2dyYWRpZW50LT5zZXRTcHJlYWQoUUdyYWRpZW50OjpSZXBlYXRTcHJl
YWQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gbV9ncmFkaWVudDsKK30K
Kwordm9pZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3sKKyAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZmlsbFJl
Y3QocmVjdCwgKnBsYXRmb3JtR3JhZGllbnQoKSk7Cit9CisKK30gLy9uYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3Mjg5
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0wLDAgKzEsNTgyIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMCBUaWV0byBDb3Jwb3JhdGlvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgICAgIAorICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICAgICAKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
T3BlbkdMRVMuaCIKKyNlbHNlCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCisjZW5k
aWYKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZh
Y2UuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2luY2x1
ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt
cGl4bWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjaWYgUVRfVkVSU0lP
TiA+PSAweDA1MDEwMAorI2luY2x1ZGUgPFFPZmZzY3JlZW5TdXJmYWNlPgorI2Vsc2UKKyNpbmNs
dWRlIDxRV2luZG93PgorI2VuZGlmCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaW5j
bHVkZSA8dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oPgorI2VuZGlmCisKKyNpZiBVU0UoM0RfR1JB
UEhJQ1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmICFkZWZpbmVkKEdMY2hhcikKK3R5
cGVkZWYgY2hhciBHTGNoYXI7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKEdMX0RFUFRIMjRfU1RF
TkNJTDgpCisjZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCisjZW5kaWYKKworY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgICAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgorI2VuZGlm
Cit7CitwdWJsaWM6CisgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4
dDNEKiwgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CisgICAg
fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgb3BhY2l0eSk7CisjZW5kaWYKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAg
ICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOworICAgIHZpcnR1YWwgR3JhcGhpY3NT
dXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKKyNlbmRpZgorCisgICAg
UVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNvbnN0OworICAgIHZvaWQgYmxpdE11bHRpc2FtcGxlRnJh
bWVidWZmZXIoKSBjb25zdDsKKyAgICB2b2lkIGJsaXRNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQW5k
UmVzdG9yZUNvbnRleHQoKSBjb25zdDsKKyAgICBib29sIG1ha2VDdXJyZW50SWZOZWVkZWQoKSBj
b25zdDsKKyAgICB2b2lkIGNyZWF0ZU9mZnNjcmVlbkJ1ZmZlcnMoKTsKKyAgICB2b2lkIGluaXRp
YWxpemVBTkdMRSgpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRT
aXplJik7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIEhvc3RXaW5k
b3cqIG1faG9zdFdpbmRvdzsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEIG1fc3VyZmFj
ZTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIG1fcGxhdGZvcm1Db250ZXh0OworICAg
IFFPYmplY3QqIG1fc3VyZmFjZU93bmVyOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAg
IEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgbV9zdXJmYWNlRmxhZ3M7CisgICAgUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKK307CisKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworI2lmIFVTRShPUEVOR0xf
RVNfMikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCisgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKKyAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93KQorICAgICwgbV9zdXJmYWNl
KDApCisgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgwKQorICAgICwgbV9zdXJmYWNlT3duZXIoMCkK
K3sKKyAgICBpZiAocmVuZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3Vy
cmVudEdMQ29udGV4dCkgeworICAgICAgICBtX3BsYXRmb3JtQ29udGV4dCA9IFFPcGVuR0xDb250
ZXh0OjpjdXJyZW50Q29udGV4dCgpOworICAgICAgICBpZiAobV9wbGF0Zm9ybUNvbnRleHQpCisg
ICAgICAgICAgICBtX3N1cmZhY2UgPSBtX3BsYXRmb3JtQ29udGV4dC0+c3VyZmFjZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUU9wZW5HTENvbnRleHQqIHNoYXJlQ29udGV4dCA9
IDA7CisgICAgaWYgKGhvc3RXaW5kb3cgJiYgaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50
KCkgJiYgaG9zdFdpbmRvdy0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPm1ha2VPcGVuR0xDb250ZXh0
Q3VycmVudElmQXZhaWxhYmxlKCkpCisgICAgICAgIHNoYXJlQ29udGV4dCA9IFFPcGVuR0xDb250
ZXh0OjpjdXJyZW50Q29udGV4dCgpOworCisjaWYgUVRfVkVSU0lPTiA+PSAweDA1MDEwMAorICAg
IFFPZmZzY3JlZW5TdXJmYWNlKiBzdXJmYWNlID0gbmV3IFFPZmZzY3JlZW5TdXJmYWNlOworICAg
IHN1cmZhY2UtPmNyZWF0ZSgpOworICAgIG1fc3VyZmFjZSA9IHN1cmZhY2U7CisgICAgbV9zdXJm
YWNlT3duZXIgPSBzdXJmYWNlOworI2Vsc2UKKyAgICBRV2luZG93KiB3aW5kb3cgPSBuZXcgUVdp
bmRvdzsKKyAgICB3aW5kb3ctPnNldFN1cmZhY2VUeXBlKFFTdXJmYWNlOjpPcGVuR0xTdXJmYWNl
KTsKKyAgICB3aW5kb3ctPnNldEdlb21ldHJ5KC0xMCwgLTEwLCAxLCAxKTsKKyAgICB3aW5kb3ct
PmNyZWF0ZSgpOworICAgIG1fc3VyZmFjZSA9IHdpbmRvdzsKKyAgICBtX3N1cmZhY2VPd25lciA9
IHdpbmRvdzsKKyNlbmRpZgorCisgICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBuZXcgUU9wZW5HTENv
bnRleHQobV9zdXJmYWNlT3duZXIpOworICAgIGlmIChzaGFyZUNvbnRleHQpCisgICAgICAgIG1f
cGxhdGZvcm1Db250ZXh0LT5zZXRTaGFyZUNvbnRleHQoc2hhcmVDb250ZXh0KTsKKworICAgIGlm
ICghbV9wbGF0Zm9ybUNvbnRleHQtPmNyZWF0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
YWtlQ3VycmVudElmTmVlZGVkKCk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBJ
bnRTaXplIHN1cmZhY2VTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+
bV9jdXJyZW50SGVpZ2h0KTsKKyAgICBtX3N1cmZhY2VGbGFncyA9IEdyYXBoaWNzU3VyZmFjZTo6
U3VwcG9ydHNUZXh0dXJlVGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJm
YWNlOjpTdXBwb3J0c1NoYXJpbmc7CisKKyAgICBpZiAoIXN1cmZhY2VTaXplLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzdXJm
YWNlU2l6ZSwgbV9zdXJmYWNlRmxhZ3MsIG1fcGxhdGZvcm1Db250ZXh0KTsKKyNlbmRpZgorfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlT2Zmc2NyZWVuQnVmZmVycygp
Cit7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fY29udGV4dC0+bV9m
Ym8pOworCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb250ZXh0LT5tX3RleHR1cmUpOworICAg
IGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29udGV4dC0+
bV90ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBf
VCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAgIGdsQmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCisgICAgLy8gQ3JlYXRlIGEgbXVs
dGlzYW1wbGUgRkJPLgorICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKSB7Cisg
ICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8p
OworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIG1fY29udGV4dC0+bV9z
dGF0ZS5ib3VuZEZCTyA9IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTzsKKyAgICAgICAgZ2xH
ZW5SZW5kZXJidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7
CisgICAgICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuc3RlbmNpbCB8fCBtX2NvbnRleHQtPm1f
YXR0cnMuZGVwdGgpCisgICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fY29udGV4
dC0+bV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gQmluZCBjYW52YXMgRkJPLgorICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOworICAgICAgICBtX2Nv
bnRleHQtPm1fc3RhdGUuYm91bmRGQk8gPSBtX2NvbnRleHQtPm1fZmJvOworI2lmIFVTRShPUEVO
R0xfRVNfMikKKyAgICAgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5kZXB0aCkKKyAgICAgICAg
ICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbV9jb250ZXh0LT5tX2RlcHRoQnVmZmVyKTsKKyAg
ICAgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5zdGVuY2lsKQorICAgICAgICAgICAgZ2xHZW5S
ZW5kZXJidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fc3RlbmNpbEJ1ZmZlcik7CisjZW5kaWYKKyAg
ICAgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5zdGVuY2lsIHx8IG1fY29udGV4dC0+bV9hdHRy
cy5kZXB0aCkKKyAgICAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbV9jb250ZXh0LT5t
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6aW5pdGlhbGl6ZUFOR0xFKCkKK3sKKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5H
TEVSZXNvdXJjZXM7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNvdXJjZXMp
OworCisgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZF
UlRFWF9BVFRSSUJTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7CisgICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9VTklGT1JN
X1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZBUllJTkdfVkVD
VE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKKyAgICBtX2NvbnRleHQt
PmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAg
bV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX0NPTUJJTkVEX1RF
WFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpN
QVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVu
aXRzKTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlm
b3JtVmVjdG9ycyk7CisKKyAgICAvLyBBbHdheXMgc2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KKyAg
ICBBTkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDE7CisKKyAgICBFeHRlbnNpb25zM0Qq
IGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKQorICAgICAgICBBTkdM
RVJlc291cmNlcy5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgPSAxOworCisgICAgR0MzRGludCByYW5n
ZVsyXSwgcHJlY2lzaW9uOworICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIEdyYXBoaWNzQ29udGV4dDNEOjpI
SUdIX0ZMT0FULCByYW5nZSwgJnByZWNpc2lvbik7CisgICAgQU5HTEVSZXNvdXJjZXMuRnJhZ21l
bnRQcmVjaXNpb25IaWdoID0gKHJhbmdlWzBdIHx8IHJhbmdlWzFdIHx8IHByZWNpc2lvbik7CisK
KyAgICBtX2NvbnRleHQtPm1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsK
K30KKworR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KCkKK3sKKyAgICBkZWxldGUgbV9zdXJmYWNlT3duZXI7CisgICAgbV9zdXJmYWNlT3duZXIgPSAw
OworfQorCitzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwp
Cit7CisgICAgcmV0dXJuICgoKHBpeGVsIDw8IDE2KSB8IChwaXhlbCA+PiAxNikpICYgMHgwMGZm
MDBmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKK30KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNp
dHkpCit7CisgICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgYmxpdE11
bHRpc2FtcGxlRnJhbWVidWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpOworCisgICAgaWYgKHRleHR1
cmVNYXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSA9PSBUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2Rl
KSB7CisgICAgICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyAgICAgICAgQVNTRVJUKG1fZ3JhcGhpY3NTdXJmYWNlKTsKKyAgICAgICAgLy8gQ0dMIG9ubHkg
cHJvdmlkZXMgdXMgdGhlIGNvbnRleHQsIGJ1dCBub3QgdGhlIHZpZXcgdGhlIGNvbnRleHQgaXMg
Y3VycmVudGx5IGJvdW5kIHRvLgorICAgICAgICAvLyBUbyBtYWtlIHN1cmUgdGhlIGNvbnRleHQg
aXMgYm91bmQgdGhlIHRoZSByaWdodCBzdXJmYWNlIHdlIGhhdmUgdG8gZG8gYSBtYWtlQ3VycmVu
dCB0aHJvdWdoIFFPcGVuR0wgYWdhaW4uCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBj
b2RlIGFzIHNvb24gYXMgR3JhcGhpY3NTdXJmYWNlTWFjIG1ha2VzIHVzZSBvZiBOU09wZW5HTC4K
KyAgICAgICAgUU9wZW5HTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUU9wZW5HTENvbnRleHQ6
OmN1cnJlbnRDb250ZXh0KCk7CisgICAgICAgIFFTdXJmYWNlKiBjdXJyZW50U3VyZmFjZSA9IGN1
cnJlbnRDb250ZXh0LT5zdXJmYWNlKCk7CisgICAgICAgIG1ha2VDdXJyZW50SWZOZWVkZWQoKTsK
KworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weUZyb21UZXh0dXJlKG1fY29udGV4dC0+
bV90ZXh0dXJlLCBJbnRSZWN0KDAsIDAsIG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29u
dGV4dC0+bV9jdXJyZW50SGVpZ2h0KSk7CisKKyAgICAgICAgLy8gQ0dMIG9ubHkgcHJvdmlkZXMg
dXMgdGhlIGNvbnRleHQsIGJ1dCBub3QgdGhlIHZpZXcgdGhlIGNvbnRleHQgaXMgY3VycmVudGx5
IGJvdW5kIHRvLgorICAgICAgICAvLyBUbyBtYWtlIHN1cmUgdGhlIGNvbnRleHQgaXMgYm91bmQg
dGhlIHRoZSByaWdodCBzdXJmYWNlIHdlIGhhdmUgdG8gZG8gYSBtYWtlQ3VycmVudCB0aHJvdWdo
IFFPcGVuR0wgYWdhaW4uCisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjb2RlIGFzIHNv
b24gYXMgR3JhcGhpY3NTdXJmYWNlTWFjIG1ha2VzIHVzZSBvZiBOU09wZW5HTC4KKyAgICAgICAg
Y3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKKworICAgICAgICBt
X2dyYXBoaWNzU3VyZmFjZS0+cGFpbnRUb1RleHR1cmVNYXBwZXIodGV4bWFwR0wsIHRhcmdldFJl
Y3QsIG1hdHJpeCwgb3BhY2l0eSk7CisjZWxzZQorICAgICAgICBUZXh0dXJlTWFwcGVyR0w6OkZs
YWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRl
eHQtPm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7Cisg
ICAgICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9j
b250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOworICAgICAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUo
bV9jb250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbWF0
cml4LCBvcGFjaXR5KTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0KCk7
CisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAg
ICBwYWludGVyLT5zYXZlKCk7CisgICAgcGFpbnRlci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Cisg
ICAgcGFpbnRlci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKKworICAgIGNvbnN0IGludCBoZWlnaHQg
PSBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodDsKKyAgICBjb25zdCBpbnQgd2lkdGggPSBtX2Nv
bnRleHQtPm1fY3VycmVudFdpZHRoOworCisgICAgLy8gQWx0ZXJuYXRpdmVseSByZWFkIHBpeGVs
cyB0byBhIG1lbW9yeSBidWZmZXIuCisgICAgUUltYWdlIG9mZnNjcmVlbkltYWdlKHdpZHRoLCBo
ZWlnaHQsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMg
PSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOworCisg
ICAgbWFrZUN1cnJlbnRJZk5lZWRlZCgpOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisgICAgZ2xSZWFkUGl4
ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y29udGV4dC0+bV9zdGF0ZS5ib3VuZEZCTyk7CisKKyAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMgQUJH
UiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdAorICAg
IC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIHRv
cCBsZWZ0LgorICAgIHF1aW50MzIqIHBpeGVsc1NyYyA9IGltYWdlUGl4ZWxzOworICAgIGNvbnN0
IGludCBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjsKKyAgICBmb3IgKGludCByb3cgPSAwOyByb3cg
PCBoYWxmSGVpZ2h0OyArK3JvdykgeworICAgICAgICBjb25zdCBpbnQgdGFyZ2V0SWR4ID0gKGhl
aWdodCAtIDEgLSByb3cpICogd2lkdGg7CisgICAgICAgIHF1aW50MzIqIHBpeGVsc0RzdCA9IGlt
YWdlUGl4ZWxzICsgdGFyZ2V0SWR4OworICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1
bW4gPCB3aWR0aDsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgIHF1aW50MzIgdGVtcFBpeGVsID0g
KnBpeGVsc1NyYzsKKyAgICAgICAgICAgICpwaXhlbHNTcmMgPSBzd2FwQmdyVG9SZ2IoKnBpeGVs
c0RzdCk7CisgICAgICAgICAgICAqcGl4ZWxzRHN0ID0gc3dhcEJnclRvUmdiKHRlbXBQaXhlbCk7
CisgICAgICAgICAgICArK3BpeGVsc1NyYzsKKyAgICAgICAgICAgICsrcGl4ZWxzRHN0OworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCkgJSAyKSB7Cisg
ICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHdpZHRoOyArK2NvbHVtbikgewor
ICAgICAgICAgICAgKnBpeGVsc1NyYyA9IHN3YXBCZ3JUb1JnYigqcGl4ZWxzU3JjKTsKKyAgICAg
ICAgICAgICsrcGl4ZWxzU3JjOworICAgICAgICB9CisgICAgfQorCisgICAgcGFpbnRlci0+ZHJh
d0ltYWdlKHRhcmdldFJlY3QsIG9mZnNjcmVlbkltYWdlKTsKKyAgICBwYWludGVyLT5yZXN0b3Jl
KCk7Cit9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCitJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxh
dGZvcm1MYXllclNpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKG1fY29udGV4dC0+
bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKK30KKwordWludDMy
X3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQorewor
ICAgIGlmICghbV9ncmFwaGljc1N1cmZhY2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9j
b250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgYmxpdE11bHRpc2FtcGxlRnJhbWVi
dWZmZXJBbmRSZXN0b3JlQ29udGV4dCgpOworICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5RnJv
bVRleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUsIEludFJlY3QoMCwgMCwgbV9jb250ZXh0LT5t
X2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpKTsKKyAgICByZXR1cm4g
bV9ncmFwaGljc1N1cmZhY2UtPmZyb250QnVmZmVyKCk7Cit9CisKK0dyYXBoaWNzU3VyZmFjZVRv
a2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25z
dAoreworICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsKK30KKyNl
bmRpZgorCitRUmVjdEYgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpib3VuZGluZ1JlY3QoKSBj
b25zdAoreworICAgIHJldHVybiBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKG1fY29udGV4
dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KSk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpibGl0TXVsdGlzYW1wbGVGcmFtZWJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKQorICAgICAg
ICByZXR1cm47CisjaWYgIVVTRShPUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKTsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9jb250ZXh0LT5t
X2Zibyk7CisgICAgZ2xCbGl0RnJhbWVidWZmZXIoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRX
aWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY29udGV4dC0+bV9jdXJy
ZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklU
LCBHTF9MSU5FQVIpOworI2VuZGlmCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8pOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6YmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXJB
bmRSZXN0b3JlQ29udGV4dCgpIGNvbnN0Cit7CisgICAgY29uc3QgUU9wZW5HTENvbnRleHQqIGN1
cnJlbnRDb250ZXh0ID0gUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCk7CisgICAgUVN1
cmZhY2UqIGN1cnJlbnRTdXJmYWNlID0gMDsKKyAgICBpZiAoY3VycmVudENvbnRleHQgJiYgY3Vy
cmVudENvbnRleHQgIT0gbV9wbGF0Zm9ybUNvbnRleHQpIHsKKyAgICAgICAgY3VycmVudFN1cmZh
Y2UgPSBjdXJyZW50Q29udGV4dC0+c3VyZmFjZSgpOworICAgICAgICBtX3BsYXRmb3JtQ29udGV4
dC0+bWFrZUN1cnJlbnQobV9zdXJmYWNlKTsKKyAgICB9CisKKyAgICBpZiAobV9jb250ZXh0LT5t
X2F0dHJzLmFudGlhbGlhcykKKyAgICAgICAgYmxpdE11bHRpc2FtcGxlRnJhbWVidWZmZXIoKTsK
KworICAgIC8vIFdoaWxlIHRoZSBjb250ZXh0IGlzIHN0aWxsIGJvdW5kLCBtYWtlIHN1cmUgYWxs
IHRoZSBGcmFtZWJ1ZmZlciBjb250ZW50IGlzIGluIGZpbmlzaGVkIHN0YXRlLgorICAgIC8vIFRo
aXMgaXMgbmVjZXNzYXJ5IGFzIHdlIGFyZSBkb2luZyBvdXIgb3duIGRvdWJsZSBidWZmZXJpbmcg
aW5zdGVhZCBvZiB1c2luZyBhIGRyYXdhYmxlIHRoYXQgcHJvdmlkZXMgc3dhcEJ1ZmZlcnMuCisg
ICAgZ2xGaW5pc2goKTsKKworICAgIGlmIChjdXJyZW50Q29udGV4dCAmJiBjdXJyZW50Q29udGV4
dCAhPSBtX3BsYXRmb3JtQ29udGV4dCkKKyAgICAgICAgY29uc3RfY2FzdDxRT3BlbkdMQ29udGV4
dCo+KGN1cnJlbnRDb250ZXh0KS0+bWFrZUN1cnJlbnQoY3VycmVudFN1cmZhY2UpOworfQorCiti
b29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUN1cnJlbnRJZk5lZWRlZCgpIGNvbnN0
Cit7CisgICAgY29uc3QgUU9wZW5HTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUU9wZW5HTENv
bnRleHQ6OmN1cnJlbnRDb250ZXh0KCk7CisgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IG1fcGxh
dGZvcm1Db250ZXh0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9wbGF0Zm9y
bUNvbnRleHQtPm1ha2VDdXJyZW50KG1fc3VyZmFjZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmIHNpemUp
Cit7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQor
ICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgbV9n
cmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBtX3N1cmZhY2VG
bGFncywgbV9wbGF0Zm9ybUNvbnRleHQpOworI2VuZGlmCit9CisKK1Bhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKK3sKKyAgICAvLyBUaGlzIGltcGxlbWVudGF0
aW9uIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSBI
b3N0V2luZG93LgorICAgIGlmIChyZW5kZXJTdHlsZSA9PSBSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJzLCBob3N0V2luZG93
LCByZW5kZXJTdHlsZSkpOworICAgIHJldHVybiBjb250ZXh0LT5tX3ByaXZhdGUgPyBjb250ZXh0
LnJlbGVhc2UoKSA6IDA7Cit9CisKK0dyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQz
RChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQorICAgIDog
bV9jdXJyZW50V2lkdGgoMCkKKyAgICAsIG1fY3VycmVudEhlaWdodCgwKQorICAgICwgbV9jb21w
aWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfT1VUUFVU
KQorICAgICwgbV9hdHRycyhhdHRycykKKyAgICAsIG1fcmVuZGVyU3R5bGUocmVuZGVyU3R5bGUp
CisgICAgLCBtX3RleHR1cmUoMCkKKyAgICAsIG1fY29tcG9zaXRvclRleHR1cmUoMCkKKyAgICAs
IG1fZmJvKDApCisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICwgbV9kZXB0aEJ1ZmZlcigwKQor
ICAgICwgbV9zdGVuY2lsQnVmZmVyKDApCisjZW5kaWYKKyAgICAsIG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKDApCisgICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKKyAgICAsIG1faW50ZXJuYWxD
b2xvckZvcm1hdCgwKQorICAgICwgbV9tdWx0aXNhbXBsZUZCTygwKQorICAgICwgbV9tdWx0aXNh
bXBsZURlcHRoU3RlbmNpbEJ1ZmZlcigwKQorICAgICwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVy
KDApCisgICAgLCBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZSh0aGlzLCBob3N0V2luZG93LCByZW5kZXJTdHlsZSkpKQoreworICAgIHZhbGlkYXRlQXR0cmli
dXRlcygpOworCisgICAgaWYgKCFtX3ByaXZhdGUtPm1fc3VyZmFjZSB8fCAhbV9wcml2YXRlLT5t
X3BsYXRmb3JtQ29udGV4dCkgeworICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBHTCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgbV9wcml2YXRlID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKCFp
bml0aWFsaXplZCkgeworICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7
CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFzdWNjZXNzKSB7
CisgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAocmVuZGVyU3R5bGUgPT0gUmVuZGVyT2Zmc2NyZWVuKQorICAgICAgICBtX3ByaXZh
dGUtPmNyZWF0ZU9mZnNjcmVlbkJ1ZmZlcnMoKTsKKworICAgIG1fcHJpdmF0ZS0+aW5pdGlhbGl6
ZUFOR0xFKCk7CisKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgIGdsRW5hYmxlKEdMX1BPSU5U
X1NQUklURSk7CisgICAgZ2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7Cisj
ZW5kaWYKKworICAgIGlmIChyZW5kZXJTdHlsZSAhPSBSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQp
CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOworfQorCitHcmFwaGlj
c0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKK3sKKyAgICAvLyBJZiBHcmFwaGljc0Nv
bnRleHQzRCBpbml0IGZhaWxlZCBpbiBjb25zdHJ1Y3RvciwgbV9wcml2YXRlIHNldCB0byBudWxs
cHRyIGFuZCBubyBidWZmZXJzIGFyZSBhbGxvY2F0ZWQuCisgICAgaWYgKCFtX3ByaXZhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsRGVsZXRl
VGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1f
ZmJvKTsKKyAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKKyAgICAgICAgZ2xEZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkKKyAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVycygxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfSBlbHNlIGlm
IChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkgeworI2lmIFVTRShPUEVOR0xfRVNf
MikKKyAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBnbERlbGV0ZVJlbmRl
cmJ1ZmZlcnMoMSwgJm1fZGVwdGhCdWZmZXIpOworICAgICAgICBpZiAobV9hdHRycy5zdGVuY2ls
KQorICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX3N0ZW5jaWxCdWZmZXIp
OworI2VuZGlmCisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpOworICAgIH0KK30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+bV9wbGF0Zm9ybUNvbnRleHQ7Cit9CisKK1BsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGV4
dHVyZTsKK30KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK1BsYXRmb3JtTGF5
ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLmdldCgpOworfQorI2VuZGlmCisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
Om1ha2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgaWYgKCFtX3ByaXZhdGUgfHwgbV9yZW5kZXJT
dHlsZSA9PSBSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5tYWtlQ3VycmVudElmTmVlZGVkKCk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdo
dCwgUVBhaW50ZXIqIGNvbnRleHQpCit7CisgICAgUUltYWdlIGltYWdlKGltYWdlUGl4ZWxzLCBp
bWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1hdEZvckFs
cGhhRW5hYmxlZEltYWdlcygpKTsKKyAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+
dHJhbnNsYXRlKDAsIGltYWdlSGVpZ2h0KTsKKyAgICBjb250ZXh0LT5zY2FsZSgxLCAtMSk7Cisg
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVf
U291cmNlKTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UoUVJlY3QoMCwgMCwgY2FudmFzV2lkdGgs
IC1jYW52YXNIZWlnaHQpLCBpbWFnZSk7CisgICAgY29udGV4dC0+cmVzdG9yZSgpOworfQorCisj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVH
cmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgbV9wcml2YXRlLT5j
cmVhdGVHcmFwaGljc1N1cmZhY2VzKHNpemUpOworfQorI2VuZGlmCisKK0dyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6fkltYWdlRXh0cmFjdG9yKCkKK3sKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKTsKKyAgICBpZiAoIW1faW1hZ2UpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIElzIGltYWdlIGFscmVhZHkgbG9hZGVkPyBJ
ZiBub3QsIGxvYWQgaXQuCisgICAgaWYgKG1faW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgbV9xdElt
YWdlID0gUUltYWdlOjpmcm9tRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyKj4obV9p
bWFnZS0+ZGF0YSgpLT5kYXRhKCkpLCBtX2ltYWdlLT5kYXRhKCktPnNpemUoKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIFFQaXhtYXAqIG5hdGl2ZVBpeG1hcCA9IG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlmICghbmF0aXZlUGl4bWFwKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIFdpdGggUVBBLCB3ZSBjYW4gYXZvaWQgYSBk
ZWVwIGNvcHkuCisgICAgICAgIG1fcXRJbWFnZSA9ICpuYXRpdmVQaXhtYXAtPmhhbmRsZSgpLT5i
dWZmZXIoKTsKKyAgICB9CisKKyAgICBtX2FscGhhT3AgPSBBbHBoYURvTm90aGluZzsKKyAgICBz
d2l0Y2ggKG1fcXRJbWFnZS5mb3JtYXQoKSkgeworICAgIGNhc2UgUUltYWdlOjpGb3JtYXRfUkdC
MzI6CisgICAgICAgIC8vIEZvciBvcGFxdWUgaW1hZ2VzLCB3ZSBzaG91bGQgbm90IHByZW11bHRp
cGx5IG9yIHVubXVsdGlwbHkgYWxwaGEuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUUltYWdl
OjpGb3JtYXRfQVJHQjMyOgorICAgICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkKKyAgICAgICAg
ICAgIG1fYWxwaGFPcCA9IEFscGhhRG9QcmVtdWx0aXBseTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZDoKKyAgICAgICAgaWYgKCFw
cmVtdWx0aXBseUFscGhhKQorICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFEb1VubXVsdGlw
bHk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRoZSBpbWFnZSBo
YXMgYSBmb3JtYXQgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIGluIHBhY2tQaXhlbHMuIFdlIGhhdmUg
dG8gY29udmVydCBpdCBoZXJlLgorICAgICAgICBtX3F0SW1hZ2UgPSBtX3F0SW1hZ2UuY29udmVy
dFRvRm9ybWF0KHByZW11bHRpcGx5QWxwaGEgPyBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVs
dGlwbGllZCA6IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIG1faW1hZ2VXaWR0aCA9IG1faW1hZ2UtPndpZHRoKCk7CisgICAgbV9pbWFnZUhlaWdo
dCA9IG1faW1hZ2UtPmhlaWdodCgpOworICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdl
SGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9pbWFnZVBpeGVsRGF0YSA9IG1f
cXRJbWFnZS5jb25zdEJpdHMoKTsKKyAgICBtX2ltYWdlU291cmNlRm9ybWF0ID0gRGF0YUZvcm1h
dEJHUkE4OworICAgIG1faW1hZ2VTb3VyY2VVbnBhY2tBbGlnbm1lbnQgPSAwOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2Fs
bGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikKK3sKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1l
c3NhZ2VDYWxsYmFjaz4pCit7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTZi
ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0wLDAgKzEsMTY5OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPHNhbmRmZWxkQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBE
aXJrIFNjaHVsemUgPHZiczg1QGdteC5kZT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBT
ZW5jaGEsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRyZWFzIEtsaW5nIDxrbGluZ0B3
ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYy4gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCisjaWYgT1Mo
V0lORE9XUykKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGF0
dGVybi5oIgorI2luY2x1ZGUgIlNoYWRvd0JsdXIuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgorI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCisKKyNpbmNsdWRlIDxR
QnJ1c2g+CisjaW5jbHVkZSA8UUdyYWRpZW50PgorI2luY2x1ZGUgPFFQYWludERldmljZT4KKyNp
bmNsdWRlIDxRUGFpbnRFbmdpbmU+CisjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVBh
aW50ZXJQYXRoPgorI2luY2x1ZGUgPFFQYWludGVyUGF0aFN0cm9rZXI+CisjaW5jbHVkZSA8UVBp
eG1hcD4KKyNpbmNsdWRlIDxRUG9seWdvbkY+CisjaW5jbHVkZSA8UVN0YWNrPgorI2luY2x1ZGUg
PFFWZWN0b3I+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworI2lmIE9TKFdJTkRPV1Mp
CitRVF9CRUdJTl9OQU1FU1BBQ0UKK1FfR1VJX0VYUE9SVCBRUGl4bWFwIHF0X3BpeG1hcEZyb21X
aW5IQklUTUFQKEhCSVRNQVAsIGludCBoYml0bWFwRm9ybWF0ID0gMCk7CitRVF9FTkRfTkFNRVNQ
QUNFCisKK2VudW0gSEJpdG1hcEZvcm1hdCB7CisgICAgSEJpdG1hcE5vQWxwaGEsCisgICAgSEJp
dG1hcFByZW11bHRpcGxpZWRBbHBoYSwKKyAgICBIQml0bWFwQWxwaGEKK307CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgaW5saW5lIFFQYWludGVyOjpDb21wb3NpdGlv
bk1vZGUgdG9RdENvbXBvc2l0aW9uTW9kZShDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBz
d2l0Y2ggKG9wKSB7CisgICAgY2FzZSBDb21wb3NpdGVDbGVhcjoKKyAgICAgICAgcmV0dXJuIFFQ
YWludGVyOjpDb21wb3NpdGlvbk1vZGVfQ2xlYXI7CisgICAgY2FzZSBDb21wb3NpdGVDb3B5Ogor
ICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2U7CisgICAgY2Fz
ZSBDb21wb3NpdGVTb3VyY2VPdmVyOgorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0
aW9uTW9kZV9Tb3VyY2VPdmVyOworICAgIGNhc2UgQ29tcG9zaXRlU291cmNlSW46CisgICAgICAg
IHJldHVybiBRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZUluOworICAgIGNhc2UgQ29t
cG9zaXRlU291cmNlT3V0OgorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9Tb3VyY2VPdXQ7CisgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VBdG9wOgorICAgICAgICByZXR1
cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2VBdG9wOworICAgIGNhc2UgQ29tcG9z
aXRlRGVzdGluYXRpb25PdmVyOgorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9u
TW9kZV9EZXN0aW5hdGlvbk92ZXI7CisgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbkluOgor
ICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9EZXN0aW5hdGlvbkluOwor
ICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQ6CisgICAgICAgIHJldHVybiBRUGFpbnRl
cjo6Q29tcG9zaXRpb25Nb2RlX0Rlc3RpbmF0aW9uT3V0OworICAgIGNhc2UgQ29tcG9zaXRlRGVz
dGluYXRpb25BdG9wOgorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9E
ZXN0aW5hdGlvbkF0b3A7CisgICAgY2FzZSBDb21wb3NpdGVYT1I6CisgICAgICAgIHJldHVybiBR
UGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1hvcjsKKyAgICBjYXNlIENvbXBvc2l0ZVBsdXNEYXJr
ZXI6CisgICAgICAgIC8vIHRoZXJlIGlzIG5vIGV4YWN0IG1hdGNoLCBidXQgdGhpcyBpcyB0aGUg
Y2xvc2VzdAorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9EYXJrZW47
CisgICAgY2FzZSBDb21wb3NpdGVQbHVzTGlnaHRlcjoKKyAgICAgICAgcmV0dXJuIFFQYWludGVy
OjpDb21wb3NpdGlvbk1vZGVfUGx1czsKKyAgICBjYXNlIENvbXBvc2l0ZURpZmZlcmVuY2U6Cisg
ICAgICAgIHJldHVybiBRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0RpZmZlcmVuY2U7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0
dXJuIFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3ZlcjsKK30KKworc3RhdGljIGlu
bGluZSBRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlIHRvUXRDb21wb3NpdGlvbk1vZGUoQmxlbmRN
b2RlIG9wKQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIEJsZW5kTW9kZU5vcm1hbDoK
KyAgICAgICAgcmV0dXJuIFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3ZlcjsKKyAg
ICBjYXNlIEJsZW5kTW9kZU11bHRpcGx5OgorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9NdWx0aXBseTsKKyAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICAgICAg
cmV0dXJuIFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU2NyZWVuOworICAgIGNhc2UgQmxlbmRN
b2RlT3ZlcmxheToKKyAgICAgICAgcmV0dXJuIFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfT3Zl
cmxheTsKKyAgICBjYXNlIEJsZW5kTW9kZURhcmtlbjoKKyAgICAgICAgcmV0dXJuIFFQYWludGVy
OjpDb21wb3NpdGlvbk1vZGVfRGFya2VuOworICAgIGNhc2UgQmxlbmRNb2RlTGlnaHRlbjoKKyAg
ICAgICAgcmV0dXJuIFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfTGlnaHRlbjsKKyAgICBjYXNl
IEJsZW5kTW9kZUNvbG9yRG9kZ2U6CisgICAgICAgIHJldHVybiBRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX0NvbG9yRG9kZ2U7CisgICAgY2FzZSBCbGVuZE1vZGVDb2xvckJ1cm46CisgICAgICAg
IHJldHVybiBRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0NvbG9yQnVybjsKKyAgICBjYXNlIEJs
ZW5kTW9kZUhhcmRMaWdodDoKKyAgICAgICAgcmV0dXJuIFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfSGFyZExpZ2h0OworICAgIGNhc2UgQmxlbmRNb2RlU29mdExpZ2h0OgorICAgICAgICByZXR1
cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb2Z0TGlnaHQ7CisgICAgY2FzZSBCbGVuZE1v
ZGVEaWZmZXJlbmNlOgorICAgICAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9E
aWZmZXJlbmNlOworICAgIGNhc2UgQmxlbmRNb2RlRXhjbHVzaW9uOgorICAgICAgICByZXR1cm4g
UVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9FeGNsdXNpb247CisgICAgY2FzZSBCbGVuZE1vZGVI
dWU6CisgICAgY2FzZSBCbGVuZE1vZGVTYXR1cmF0aW9uOgorICAgIGNhc2UgQmxlbmRNb2RlQ29s
b3I6CisgICAgY2FzZSBCbGVuZE1vZGVMdW1pbm9zaXR5OgorICAgICAgICAvLyBOb3Qgc3VwcG9y
dGVkLgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9T
b3VyY2VPdmVyOworfQorCitzdGF0aWMgaW5saW5lIFF0OjpQZW5DYXBTdHlsZSB0b1F0TGluZUNh
cChMaW5lQ2FwIGxjKQoreworICAgIHN3aXRjaCAobGMpIHsKKyAgICBjYXNlIEJ1dHRDYXA6Cisg
ICAgICAgIHJldHVybiBRdDo6RmxhdENhcDsKKyAgICBjYXNlIFJvdW5kQ2FwOgorICAgICAgICBy
ZXR1cm4gUXQ6OlJvdW5kQ2FwOworICAgIGNhc2UgU3F1YXJlQ2FwOgorICAgICAgICByZXR1cm4g
UXQ6OlNxdWFyZUNhcDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gUXQ6OkZsYXRDYXA7Cit9CisKK3N0YXRpYyBpbmxpbmUg
UXQ6OlBlbkpvaW5TdHlsZSB0b1F0TGluZUpvaW4oTGluZUpvaW4gbGopCit7CisgICAgc3dpdGNo
IChsaikgeworICAgIGNhc2UgTWl0ZXJKb2luOgorICAgICAgICByZXR1cm4gUXQ6OlN2Z01pdGVy
Sm9pbjsKKyAgICBjYXNlIFJvdW5kSm9pbjoKKyAgICAgICAgcmV0dXJuIFF0OjpSb3VuZEpvaW47
CisgICAgY2FzZSBCZXZlbEpvaW46CisgICAgICAgIHJldHVybiBRdDo6QmV2ZWxKb2luOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJl
dHVybiBRdDo6U3ZnTWl0ZXJKb2luOworfQorCitzdGF0aWMgUXQ6OlBlblN0eWxlIHRvUVBlblN0
eWxlKFN0cm9rZVN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNl
IE5vU3Ryb2tlOgorICAgICAgICByZXR1cm4gUXQ6Ok5vUGVuOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNvbGlkU3Ryb2tlOgorI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgY2FzZSBEb3Vi
bGVTdHJva2U6CisgICAgY2FzZSBXYXZ5U3Ryb2tlOgorI2VuZGlmCisgICAgICAgIHJldHVybiBR
dDo6U29saWRMaW5lOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvdHRlZFN0cm9rZToKKyAg
ICAgICAgcmV0dXJuIFF0OjpEb3RMaW5lOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERhc2hl
ZFN0cm9rZToKKyAgICAgICAgcmV0dXJuIFF0OjpEYXNoTGluZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJl
dHVybiBRdDo6Tm9QZW47Cit9CisKK3N0YXRpYyBpbmxpbmUgUXQ6OkZpbGxSdWxlIHRvUXRGaWxs
UnVsZShXaW5kUnVsZSBydWxlKQoreworICAgIHN3aXRjaCAocnVsZSkgeworICAgIGNhc2UgUlVM
RV9FVkVOT0REOgorICAgICAgICByZXR1cm4gUXQ6Ok9kZEV2ZW5GaWxsOworICAgIGNhc2UgUlVM
RV9OT05aRVJPOgorICAgICAgICByZXR1cm4gUXQ6OldpbmRpbmdGaWxsOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gUXQ6Ok9k
ZEV2ZW5GaWxsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0UG9pbnRzRm9yRG90dGVk
TGluZShGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHdpZHRoLCBib29sIGlz
VmVydGljYWxMaW5lKQoreworICAgIGlmIChpc1ZlcnRpY2FsTGluZSkgeworICAgICAgICBwMS5z
ZXRZKHAxLnkoKSAtIHdpZHRoIC8gMik7CisgICAgICAgIHAyLnNldFkocDIueSgpICsgd2lkdGgg
LyAyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwMS5zZXRYKHAxLngoKSAtIHdpZHRoIC8gMik7
CisgICAgICAgIHAyLnNldFgocDIueCgpICsgd2lkdGggLyAyKTsKKyAgICB9Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBkcmF3TGluZUVuZHBvaW50c0ZvclN0eWxlKFFQYWludGVyICpwYWludGVy
LCBjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHdpZHRo
LCBib29sIGlzVmVydGljYWxMaW5lLCBTdHJva2VTdHlsZSBzdHlsZSwgQ29sb3IgY29sb3IpCit7
CisgICAgLy8gRG8gYSByZWN0IGZpbGwgb2Ygb3VyIGVuZHBvaW50cy4gVGhpcyBlbnN1cmVzIHdl
IGFsd2F5cyBoYXZlIHRoZQorICAgIC8vIGFwcGVhcmFuY2Ugb2YgYmVpbmcgYSBib3JkZXIuCisg
ICAgaWYgKHN0eWxlID09IERhc2hlZFN0cm9rZSkgeworICAgICAgICBpZiAoaXNWZXJ0aWNhbExp
bmUpIHsKKyAgICAgICAgICAgIHBhaW50ZXItPmZpbGxSZWN0KEZsb2F0UmVjdChwMS54KCkgLSB3
aWR0aCAvIDIsIHAxLnkoKSAtIHdpZHRoLCB3aWR0aCwgd2lkdGgpLCBRQ29sb3IoY29sb3IpKTsK
KyAgICAgICAgICAgIHBhaW50ZXItPmZpbGxSZWN0KEZsb2F0UmVjdChwMi54KCkgLSB3aWR0aCAv
IDIsIHAyLnkoKSwgd2lkdGgsIHdpZHRoKSwgUUNvbG9yKGNvbG9yKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBwYWludGVyLT5maWxsUmVjdChGbG9hdFJlY3QocDEueCgpIC0gd2lk
dGgsIHAxLnkoKSAtIHdpZHRoIC8gMiwgd2lkdGgsIHdpZHRoKSwgUUNvbG9yKGNvbG9yKSk7Cisg
ICAgICAgICAgICBwYWludGVyLT5maWxsUmVjdChGbG9hdFJlY3QocDIueCgpLCBwMi55KCkgLSB3
aWR0aCAvIDIsIHdpZHRoLCB3aWR0aCksIFFDb2xvcihjb2xvcikpOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gQXMgcGVyIGNzcyBzcGVjIGEgZG90dGVkIHN0cm9rZSBzaG91bGQgYmUgbWFk
ZSBvZiBjaXJjbGVzIHNvIHdlJ3JlCisgICAgLy8gZHJhd2luZyBjaXJjbGVzIGFzIGVuZHBvaW50
cy4KKyAgICBpZiAoc3R5bGUgPT0gRG90dGVkU3Ryb2tlKSB7CisgICAgICAgIHBhaW50ZXItPnNl
dFBlbihRdDo6Tm9QZW4pOworICAgICAgICBwYWludGVyLT5zZXRCcnVzaChRQ29sb3IoY29sb3Ip
KTsKKyAgICAgICAgcGFpbnRlci0+ZHJhd0VsbGlwc2UocDEueCgpIC0gd2lkdGggLyAyLCBwMS55
KCkgLSB3aWR0aCAvIDIsIHdpZHRoLCB3aWR0aCk7CisgICAgICAgIHBhaW50ZXItPmRyYXdFbGxp
cHNlKHAyLngoKSAtIHdpZHRoIC8gMiwgcDIueSgpIC0gd2lkdGggLyAyLCB3aWR0aCwgd2lkdGgp
OworICAgIH0KK30KKworY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRpYWxTb2xpZENvbG9yKTsK
KyAgICB+R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKCk7CisKKyAgICBpbmxpbmUgUVBh
aW50ZXIqIHAoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGxheWVycy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4gcGFpbnRlcjsKKyAgICAgICAgcmV0dXJuICZsYXllcnMudG9wKCkt
PnBhaW50ZXI7CisgICAgfQorCisgICAgYm9vbCBhbnRpQWxpYXNpbmdGb3JSZWN0c0FuZExpbmVz
OworCisgICAgUVN0YWNrPFRyYW5zcGFyZW5jeUxheWVyKj4gbGF5ZXJzOworICAgIC8vIENvdW50
aW5nIHJlYWwgbGF5ZXJzLiBSZXF1aXJlZCBieSBpc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSBjYWxs
cworICAgIC8vIEZvciBleGFtcGxlLCBsYXllcnMgd2l0aCB2YWxpZCBhbHBoYU1hc2sgYXJlIG5v
dCByZWFsIGxheWVycworICAgIGludCBsYXllckNvdW50OworCisgICAgLy8gcmV1c2UgdGhpcyBi
cnVzaCBmb3Igc29saWQgY29sb3IgKHRvIHByZXZlbnQgZXhwZW5zaXZlIFFCcnVzaCBjb25zdHJ1
Y3Rpb24pCisgICAgUUJydXNoIHNvbGlkQ29sb3I7CisKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OworICAgIGJvb2wgaW5pdGlhbFNtb290aFBpeG1h
cFRyYW5zZm9ybUhpbnQ7CisKKyAgICBRUmVjdEYgY2xpcEJvdW5kaW5nUmVjdCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gcCgpLT5jbGlwQm91bmRpbmdSZWN0KCk7CisgICAgfQorCisg
ICAgdm9pZCB0YWtlT3duZXJzaGlwT2ZQbGF0Zm9ybUNvbnRleHQoKSB7IHBsYXRmb3JtQ29udGV4
dElzT3duZWQgPSB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgUVBhaW50ZXIqIHBhaW50ZXI7Cisg
ICAgYm9vbCBwbGF0Zm9ybUNvbnRleHRJc093bmVkOworfTsKKworR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqIHAs
IGNvbnN0IFFDb2xvciYgaW5pdGlhbFNvbGlkQ29sb3IpCisgICAgOiBhbnRpQWxpYXNpbmdGb3JS
ZWN0c0FuZExpbmVzKGZhbHNlKQorICAgICwgbGF5ZXJDb3VudCgwKQorICAgICwgc29saWRDb2xv
cihpbml0aWFsU29saWRDb2xvcikKKyAgICAsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvbkRlZmF1bHQpCisgICAgLCBpbml0aWFsU21vb3RoUGl4bWFwVHJhbnNmb3JtSGlu
dChmYWxzZSkKKyAgICAsIHBhaW50ZXIocCkKKyAgICAsIHBsYXRmb3JtQ29udGV4dElzT3duZWQo
ZmFsc2UpCit7CisgICAgaWYgKCFwYWludGVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBV
c2UgdGhlIGRlZmF1bHQgdGhlIFFQYWludGVyIHdhcyBjb25zdHJ1Y3RlZCB3aXRoLgorICAgIGFu
dGlBbGlhc2luZ0ZvclJlY3RzQW5kTGluZXMgPSBwYWludGVyLT50ZXN0UmVuZGVySGludChRUGFp
bnRlcjo6QW50aWFsaWFzaW5nKTsKKworICAgIC8vIFVzZWQgZm9yIGRlZmF1bHQgaW1hZ2UgaW50
ZXJwb2xhdGlvbiBxdWFsaXR5LgorICAgIGluaXRpYWxTbW9vdGhQaXhtYXBUcmFuc2Zvcm1IaW50
ID0gcGFpbnRlci0+dGVzdFJlbmRlckhpbnQoUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9y
bSk7CisKKyAgICBwYWludGVyLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcs
IHRydWUpOworCit9CisKK0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpCit7CisgICAgaWYgKCFwbGF0Zm9ybUNvbnRleHRJc093
bmVkKQorICAgICAgICByZXR1cm47CisKKyAgICBRUGFpbnREZXZpY2UqIGRldmljZSA9IHBhaW50
ZXItPmRldmljZSgpOworICAgIHBhaW50ZXItPmVuZCgpOworICAgIGRlbGV0ZSBwYWludGVyOwor
ICAgIGRlbGV0ZSBkZXZpY2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUlu
aXQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBhaW50ZXIpCit7CisgICAgbV9kYXRhID0gbmV3
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShwYWludGVyLCBmaWxsQ29sb3IoKSk7CisK
KyAgICBzZXRQYWludGluZ0Rpc2FibGVkKCFwYWludGVyKTsKKworICAgIGlmICghcGFpbnRlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gc29saWRDb2xvciBpcyBpbml0aWFsaXplZCB3aXRo
IHRoZSBmaWxsQ29sb3IoKS4KKyAgICBwYWludGVyLT5zZXRCcnVzaChtX2RhdGEtPnNvbGlkQ29s
b3IpOworCisgICAgUVBlbiBwZW4ocGFpbnRlci0+cGVuKCkpOworICAgIHBlbi5zZXRDb2xvcihz
dHJva2VDb2xvcigpKTsKKyAgICBwZW4uc2V0Sm9pblN0eWxlKHRvUXRMaW5lSm9pbihNaXRlckpv
aW4pKTsKKyAgICBwYWludGVyLT5zZXRQZW4ocGVuKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtRGVzdHJveSgpCit7CisgICAgd2hpbGUgKCFtX2RhdGEtPmxheWVycy5pc0Vt
cHR5KCkpCisgICAgICAgIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKKyAgICBkZWxldGUgbV9k
YXRhOworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEtPnAoKTsKK30KKworQWZm
aW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKEluY2x1ZGVEZXZpY2VTY2FsZSkg
Y29uc3QKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gQWZm
aW5lVHJhbnNmb3JtKCk7CisKKyAgICBjb25zdCBRVHJhbnNmb3JtJiBtYXRyaXggPSBwbGF0Zm9y
bUNvbnRleHQoKS0+Y29tYmluZWRUcmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNm
b3JtKG1hdHJpeC5tMTEoKSwgbWF0cml4Lm0xMigpLCBtYXRyaXgubTIxKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRyaXgubTIyKCksIG1hdHJpeC5keCgpLCBtYXRyaXguZHkoKSk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCit7CisgICAg
aWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgIW1fZGF0YS0+bGF5ZXJzLnRvcCgpLT5h
bHBoYU1hc2suaXNOdWxsKCkpCisgICAgICAgICsrbV9kYXRhLT5sYXllcnMudG9wKCktPnNhdmVD
b3VudGVyOworICAgIG1fZGF0YS0+cCgpLT5zYXZlKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCit7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5p
c0VtcHR5KCkgJiYgIW1fZGF0YS0+bGF5ZXJzLnRvcCgpLT5hbHBoYU1hc2suaXNOdWxsKCkpCisg
ICAgICAgIGlmICghLS1tX2RhdGEtPmxheWVycy50b3AoKS0+c2F2ZUNvdW50ZXIpCisgICAgICAg
ICAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CisKKyAgICBtX2RhdGEtPnAoKS0+
cmVzdG9yZSgpOworfQorCisvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0cm9r
ZWQgYm9yZGVyLgorLy8gVGhpcyBpcyBvbmx5IHVzZWQgdG8gZHJhdyBib3JkZXJzIChyZWFsIGZp
bGwgaXMgZG9uZSB2aWEgZmlsbFJlY3QpLCBhbmQKKy8vIHRodXMgaXQgbXVzdCBub3QgY2FzdCBh
bnkgc2hhZG93Lgordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQVNTRVJUKCFyZWN0LmlzRW1wdHkoKSk7CisKKyAgICBRUGFpbnRlciogcCA9IG1fZGF0
YS0+cCgpOworICAgIGNvbnN0IGJvb2wgYW50aUFsaWFzID0gcC0+dGVzdFJlbmRlckhpbnQoUVBh
aW50ZXI6OkFudGlhbGlhc2luZyk7CisgICAgcC0+c2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50
aWFsaWFzaW5nLCBtX2RhdGEtPmFudGlBbGlhc2luZ0ZvclJlY3RzQW5kTGluZXMpOworCisgICAg
cC0+ZHJhd1JlY3QocmVjdCk7CisKKyAgICBwLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRp
YWxpYXNpbmcsIGFudGlBbGlhcyk7Cit9CisKKy8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcg
Ym9yZGVycy4KKy8vIE11c3Qgbm90IGNhc3QgYW55IHNoYWRvdy4KK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9p
bnQyKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFN0cm9rZVN0eWxlIHN0eWxlID0gc3Ryb2tlU3R5bGUoKTsKKyAgICBDb2xvciBjb2xvciA9
IHN0cm9rZUNvbG9yKCk7CisgICAgaWYgKHN0eWxlID09IE5vU3Ryb2tlKQorICAgICAgICByZXR1
cm47CisKKyAgICBmbG9hdCB3aWR0aCA9IHN0cm9rZVRoaWNrbmVzcygpOworCisgICAgRmxvYXRQ
b2ludCBwMSA9IHBvaW50MTsKKyAgICBGbG9hdFBvaW50IHAyID0gcG9pbnQyOworICAgIGJvb2wg
aXNWZXJ0aWNhbExpbmUgPSAocDEueCgpID09IHAyLngoKSk7CisKKyAgICBRUGFpbnRlciogcCA9
IG1fZGF0YS0+cCgpOworICAgIGNvbnN0IGJvb2wgYW50aUFsaWFzID0gcC0+dGVzdFJlbmRlckhp
bnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZyk7CisgICAgcC0+c2V0UmVuZGVySGludChRUGFpbnRl
cjo6QW50aWFsaWFzaW5nLCBtX2RhdGEtPmFudGlBbGlhc2luZ0ZvclJlY3RzQW5kTGluZXMpOwor
ICAgIGFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyhwMSwgcDIsIHdpZHRoLCBzdHlsZSk7CisK
KyAgICBRdDo6UGVuQ2FwU3R5bGUgY2FwU3R5bGUgPSBRdDo6RmxhdENhcDsKKyAgICBRVmVjdG9y
PHFyZWFsPiBkYXNoZXM7CisgICAgaW50IHBhdFdpZHRoID0gMDsKKworICAgIHN3aXRjaCAoc3R5
bGUpIHsKKyAgICBjYXNlIE5vU3Ryb2tlOgorICAgIGNhc2UgU29saWRTdHJva2U6CisjaWYgRU5B
QkxFKENTUzNfVEVYVCkKKyAgICBjYXNlIERvdWJsZVN0cm9rZToKKyAgICBjYXNlIFdhdnlTdHJv
a2U6CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEb3R0ZWRTdHJva2U6IHsKKyAg
ICAgICAgY2FwU3R5bGUgPSBRdDo6Um91bmRDYXA7CisgICAgICAgIHBhdFdpZHRoID0gc3RhdGlj
X2Nhc3Q8aW50Pih3aWR0aCk7CisgICAgICAgIC8vIFRoZSBhY3R1YWwgbGVuZ3RoIG9mIG9uZSBs
aW5lIGVsZW1lbnQgY2FuIG5vdCBiZSBzZXQgdG8gemVybyBhbmQgYXQgMC4xIHRoZSBkb3RzCisg
ICAgICAgIC8vIGFyZSBzdGlsbCBzbGlnaHRseSBlbG9uZ2F0ZWQuIFNldHRpbmcgaXQgdG8gMC4w
MSB3aWxsIG1ha2UgaXQgbG9vayBsaWtlIHRoZQorICAgICAgICAvLyBsaW5lIGVuZGluZ3MgYXJl
IGJlaW5nIHN0dWNrIHRvZ2V0aGVyLCBjbG9zZSBlbm91Z2ggdG8gbG9vayBsaWtlIGEgY2lyY2xl
LgorICAgICAgICAvLyBGb3IgdGhlIGRpc3RhbmNlIG9mIHRoZSBsaW5lIGVsZW1lbnRzIHdlIHN1
YnRyYWN0IHRoZSBzbWFsbCBhbW91bnQgYWdhaW4uCisgICAgICAgIGNvbnN0IHFyZWFsIGxpbmVF
bGVtZW50TGVuZ3RoID0gMC4wMTsKKyAgICAgICAgZGFzaGVzIDw8IGxpbmVFbGVtZW50TGVuZ3Ro
IDw8IHFyZWFsKDIgKiBwYXRXaWR0aCkgLyB3aWR0aCAtIGxpbmVFbGVtZW50TGVuZ3RoOworICAg
ICAgICBhZGp1c3RQb2ludHNGb3JEb3R0ZWRMaW5lKHAxLCBwMiwgd2lkdGgsIGlzVmVydGljYWxM
aW5lKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRGFzaGVkU3Ryb2tlOgorICAg
ICAgICBjYXBTdHlsZSA9IFF0OjpGbGF0Q2FwOworICAgICAgICBwYXRXaWR0aCA9IDMgKiBzdGF0
aWNfY2FzdDxpbnQ+KHdpZHRoKTsKKyAgICAgICAgZGFzaGVzIDw8IHFyZWFsKHBhdFdpZHRoKSAv
IHdpZHRoIDw8IHFyZWFsKHBhdFdpZHRoKSAvIHdpZHRoOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBpZiAocGF0V2lkdGgpIHsKKyAgICAgICAgcC0+c2F2ZSgpOworCisgICAgICAgIFFQ
ZW4gcGVuID0gcC0+cGVuKCk7CisKKyAgICAgICAgZHJhd0xpbmVFbmRwb2ludHNGb3JTdHlsZShw
LCBwMSwgcDIsIHdpZHRoLCBpc1ZlcnRpY2FsTGluZSwgc3R5bGUsIGNvbG9yKTsKKworICAgICAg
ICAvLyBFeGFtcGxlOiA4MCBwaXhlbHMgd2l0aCBhIHdpZHRoIG9mIDMwIHBpeGVscy4KKyAgICAg
ICAgLy8gUmVtYWluZGVyIGlzIDIwLiAgVGhlIG1heGltdW0gcGl4ZWxzIG9mIGxpbmUgd2UgY291
bGQgcGFpbnQKKyAgICAgICAgLy8gd2lsbCBiZSA1MCBwaXhlbHMuCisgICAgICAgIGludCBkaXN0
YW5jZSA9IChpc1ZlcnRpY2FsTGluZSA/IChwb2ludDIueSgpIC0gcG9pbnQxLnkoKSkgOiAocG9p
bnQyLngoKSAtIHBvaW50MS54KCkpKSAtIDIqKGludCl3aWR0aDsKKyAgICAgICAgaW50IHJlbWFp
bmRlciA9IGRpc3RhbmNlICUgcGF0V2lkdGg7CisgICAgICAgIGludCBjb3ZlcmFnZSA9IGRpc3Rh
bmNlIC0gcmVtYWluZGVyOworICAgICAgICBpbnQgbnVtU2VnbWVudHMgPSBjb3ZlcmFnZSAvIHBh
dFdpZHRoOworCisgICAgICAgIGZsb2F0IHBhdHRlcm5PZmZzZXQgPSAwLjBmOworICAgICAgICAv
LyBTcGVjaWFsIGNhc2UgMXB4IGRvdHRlZCBib3JkZXJzIGZvciBzcGVlZC4KKyAgICAgICAgaWYg
KHBhdFdpZHRoID09IDEpCisgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ID0gMS4wZjsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBib29sIGV2ZW5OdW1iZXJPZlNlZ21lbnRzID0gIShudW1T
ZWdtZW50cyAlIDIpOworICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgICAgICAg
ICBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICFldmVuTnVtYmVyT2ZTZWdtZW50czsKKyAgICAgICAg
ICAgIGlmIChldmVuTnVtYmVyT2ZTZWdtZW50cykgeworICAgICAgICAgICAgICAgIGlmIChyZW1h
aW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSBwYXRXaWR0aCAt
IHJlbWFpbmRlcjsKKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSByZW1haW5k
ZXIgLyAyOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gcGF0V2lkdGggLyAyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZiAocmVtYWluZGVyKQorICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0
ID0gKHBhdFdpZHRoIC0gcmVtYWluZGVyKSAvIDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBwZW4uc2V0V2lkdGhGKHdpZHRoKTsKKyAgICAgICAgcGVuLnNldENhcFN0eWxl
KGNhcFN0eWxlKTsKKyAgICAgICAgcGVuLnNldERhc2hQYXR0ZXJuKGRhc2hlcyk7CisgICAgICAg
IHBlbi5zZXREYXNoT2Zmc2V0KHBhdHRlcm5PZmZzZXQgLyB3aWR0aCk7CisgICAgICAgIHAtPnNl
dFBlbihwZW4pOworICAgIH0KKworI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgaWYgKHN0eWxl
ID09IFdhdnlTdHJva2UpIHsKKyAgICAgICAgY29uc3QgZmxvYXQgc3RlcCA9IDIgKiB3aWR0aDsg
Ly8gTWFrZSB3YXZlIGhlaWdodCBlcXVhbCB0byB0d28gdGltZXMgc3Ryb2tlVGhpY2tuZXNzKCku
CisgICAgICAgIGNvbnN0IGZsb2F0IGZsYXQgPSB3aWR0aDsgLy8gU2V0IHNpemUgb2YgZmxhdCBs
aW5lcyBiZXR3ZWVuIGRpYWdvbmFsIGxpbmVzLgorICAgICAgICBzaG9ydCBzaWduYWwgPSAtMTsK
KyAgICAgICAgUVBhaW50ZXJQYXRoIHBhdGg7CisgICAgICAgIGZsb2F0IHgxLCB5MSwgeDIsIHky
OworCisgICAgICAgIGlmIChpc1ZlcnRpY2FsTGluZSkgeworICAgICAgICAgICAgeDEgPSB4MiA9
IHAxLngoKTsKKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlICh4MSwgeTEpIDwgKHgyLCB5MikK
KyAgICAgICAgICAgIGlmIChwMS55KCkgPCBwMi55KCkpIHsKKyAgICAgICAgICAgICAgICB5MSA9
IHAxLnkoKTsKKyAgICAgICAgICAgICAgICB5MiA9IHAyLnkoKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgeTEgPSBwMi55KCk7CisgICAgICAgICAgICAgICAgeTIgPSBw
MS55KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFF0IGludGVycHJldHMgZ2Vv
bWV0cmljIHVuaXRzIGFzIGVuZC1wb2ludCBpbmNsdXNpdmUsIHdoaWxlIFdlYkNvcmUgaW50ZXJw
cmV0cyBnZW9tZXRyaWMgdW5pdHMgYXMgZW5kcG9pbnQgZXhjbHVzaXZlLgorICAgICAgICAgICAg
Ly8gVGhpcyBtZWFucyB3ZSBuZWVkIHRvIHN1YnRyYWN0IG9uZSBmcm9tIHRoZSBlbmRwb2ludCwg
b3IgdGhlIGxpbmUgd2lsbCBiZSBwYWludGVkIG9uZSBwaXhlbCB0b28gbG9uZy4KKyAgICAgICAg
ICAgIHkyIC09IDE7CisgICAgICAgICAgICBwYXRoLm1vdmVUbyh4MSArIHNpZ25hbCAqIHN0ZXAs
IHkxKTsKKyAgICAgICAgICAgIGZsb2F0IHkgPSB5MSArIDIgKiBzdGVwOworCisgICAgICAgICAg
ICB3aGlsZSAoeSA8PSB5MikgeworICAgICAgICAgICAgICAgIHNpZ25hbCA9IC1zaWduYWw7Cisg
ICAgICAgICAgICAgICAgcGF0aC5saW5lVG8oeDEgKyBzaWduYWwgKiBzdGVwLCB5KTsKKyAgICAg
ICAgICAgICAgICBwYXRoLmxpbmVUbyh4MSArIHNpZ25hbCAqIHN0ZXAsIHkgKyBmbGF0KTsgLy8g
RHJhdyBmbGF0IGxpbmUgYmV0d2VlbiBkaWFnb25hbCBsaW5lcy4KKyAgICAgICAgICAgICAgICB5
ICs9IDIgKiBzdGVwICsgZmxhdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHkxID0geTIgPSBwMS55KCk7CisKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSAo
eDEsIHkxKSA8ICh4MiwgeTIpCisgICAgICAgICAgICBpZiAocDEueCgpIDwgcDIueCgpKSB7Cisg
ICAgICAgICAgICAgICAgeDEgPSBwMS54KCk7CisgICAgICAgICAgICAgICAgeDIgPSBwMi54KCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHgxID0gcDIueCgpOworICAg
ICAgICAgICAgICAgIHgyID0gcDEueCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBRdCBpbnRlcnByZXRzIGdlb21ldHJpYyB1bml0cyBhcyBlbmQtcG9pbnQgaW5jbHVzaXZlLCB3
aGlsZSBXZWJDb3JlIGludGVycHJldHMgZ2VvbWV0cmljIHVuaXRzIGFzIGVuZHBvaW50IGV4Y2x1
c2l2ZS4KKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgbmVlZCB0byBzdWJ0cmFjdCBvbmUg
ZnJvbSB0aGUgZW5kcG9pbnQsIG9yIHRoZSBsaW5lIHdpbGwgYmUgcGFpbnRlZCBvbmUgcGl4ZWwg
dG9vIGxvbmcuCisgICAgICAgICAgICB4MiAtPSAxOworICAgICAgICAgICAgcGF0aC5tb3ZlVG8o
eDEsIHkxICsgc2lnbmFsICogc3RlcCk7CisgICAgICAgICAgICBmbG9hdCB4ID0geDEgKyAyICog
c3RlcDsKKworICAgICAgICAgICAgd2hpbGUgKHggPD0geDIpIHsKKyAgICAgICAgICAgICAgICBz
aWduYWwgPSAtc2lnbmFsOworICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKHgsIHkxICsgc2ln
bmFsICogc3RlcCk7CisgICAgICAgICAgICAgICAgcGF0aC5saW5lVG8oeCArIGZsYXQsIHkxICsg
c2lnbmFsICogc3RlcCk7IC8vIERyYXcgZmxhdCBsaW5lIGJldHdlZW4gZGlhZ29uYWwgbGluZXMu
CisgICAgICAgICAgICAgICAgeCArPSAyICogc3RlcCArIGZsYXQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBUaGUgbGFzdCBwb2ludCBjcmVhdGVkIGJ5IHRoZSB3aGls
ZSBsb29wcyBhYm92ZSBtYXkgbm90IGJlIHRoZSBlbmQKKyAgICAgICAgLy8gcG9pbnQsIHNvIGNv
bXBsZXRlIHRoZSB3YXZlIGJ5IGNvbm5lY3RpbmcgdGhlIGVuZCBwb2ludC4KKyAgICAgICAgcGF0
aC5saW5lVG8oeDIsIHkyKTsKKyAgICAgICAgUVBlbiBwZW4gPSBwLT5wZW4oKTsKKyAgICAgICAg
cGVuLnNldEpvaW5TdHlsZShRdDo6QmV2ZWxKb2luKTsgLy8gQSBiZXZlbGxlZCBsaW5lIGpvaW4g
aXMgbW9yZSBzdWl0YWJsZSBmb3Igd2F2eSB0aGFuIG1pdGVyIG9yIHJvdW5kLgorICAgICAgICBw
ZW4uc2V0V2lkdGgod2lkdGgpOworICAgICAgICBjb25zdCBib29sIG9sZEFudGlBbGlhc2luZyA9
IHAtPnRlc3RSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcpOworICAgICAgICBwLT5z
ZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIHRydWUpOyAvLyBBbnRpQWxpYXNp
bmcgaXMgbmVlZGVkIGZvciBkaWFnb25hbCBsaW5lcyBvZiB3YXZ5IHN0cm9rZQorICAgICAgICBw
LT5zdHJva2VQYXRoKHBhdGgsIHBlbik7CisgICAgICAgIHAtPnNldFJlbmRlckhpbnQoUVBhaW50
ZXI6OkFudGlhbGlhc2luZywgb2xkQW50aUFsaWFzaW5nKTsKKyAgICB9IGVsc2UgeworI2VuZGlm
IC8vIENTUzNfVEVYVAorICAgIC8vIFF0IGludGVycHJldHMgZ2VvbWV0cmljIHVuaXRzIGFzIGVu
ZC1wb2ludCBpbmNsdXNpdmUsIHdoaWxlIFdlYkNvcmUgaW50ZXJwcmV0cyBnZW9tdHJpYyB1bml0
cyBhcyBlbmRwb2ludCBleGNsdXNpdmUuCisgICAgLy8gVGhpcyBtZWFucyB3ZSBuZWVkIHRvIHN1
YnRyYWN0IG9uZSBmcm9tIHRoZSBlbmRwb2ludCwgb3IgdGhlIGxpbmUgd2lsbCBiZSBwYWludGVk
IG9uZSBwaXhlbCB0b28gbG9uZy4KKyAgICBpZiAocDEueCgpID09IHAyLngoKSkKKyAgICAgICAg
cC0+ZHJhd0xpbmUocDEsIHAyIC0gRmxvYXRTaXplKDAsIDEpKTsKKyAgICBlbHNlCisgICAgICAg
IHAtPmRyYXdMaW5lKHAxLCBwMiAtIEZsb2F0U2l6ZSgxLCAwKSk7CisjaWYgRU5BQkxFKENTUzNf
VEVYVCkKKyAgICB9CisjZW5kaWYgLy8gQ1NTM19URVhUCisKKyAgICBpZiAocGF0V2lkdGgpCisg
ICAgICAgIHAtPnJlc3RvcmUoKTsKKworICAgIHAtPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFu
dGlhbGlhc2luZywgYW50aUFsaWFzKTsKK30KKworLy8gVGhpcyBtZXRob2QgaXMgb25seSB1c2Vk
IHRvIGRyYXcgdGhlIGxpdHRsZSBjaXJjbGVzIHVzZWQgaW4gbGlzdHMuCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEtPnAoKS0+ZHJh
d0VsbGlwc2UocmVjdCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9s
eWdvbihzaXplX3QgbnBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIHNob3Vs
ZEFudGlhbGlhcykKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobnBvaW50cyA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBRUG9s
eWdvbkYgcG9seWdvbihucG9pbnRzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnBv
aW50czsgaSsrKQorICAgICAgICBwb2x5Z29uW2ldID0gcG9pbnRzW2ldOworCisgICAgUVBhaW50
ZXIqIHAgPSBtX2RhdGEtPnAoKTsKKworICAgIGNvbnN0IGJvb2wgYW50aUFsaWFzID0gcC0+dGVz
dFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZyk7CisgICAgcC0+c2V0UmVuZGVySGlu
dChRUGFpbnRlcjo6QW50aWFsaWFzaW5nLCBzaG91bGRBbnRpYWxpYXMpOworCisgICAgcC0+ZHJh
d0NvbnZleFBvbHlnb24ocG9seWdvbik7CisKKyAgICBwLT5zZXRSZW5kZXJIaW50KFFQYWludGVy
OjpBbnRpYWxpYXNpbmcsIGFudGlBbGlhcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2lu
dHMsIGJvb2wgYW50aWFsaWFzZWQpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG51bVBvaW50cyA8PSAxKQorICAgICAgICByZXR1cm47
CisKKyAgICBRUGFpbnRlclBhdGggcGF0aChwb2ludHNbMF0pOworICAgIGZvciAoc2l6ZV90IGkg
PSAxOyBpIDwgbnVtUG9pbnRzOyArK2kpCisgICAgICAgIHBhdGgubGluZVRvKHBvaW50c1tpXSk7
CisgICAgcGF0aC5zZXRGaWxsUnVsZShRdDo6V2luZGluZ0ZpbGwpOworCisgICAgUVBhaW50ZXIq
IHAgPSBtX2RhdGEtPnAoKTsKKworICAgIGJvb2wgcGFpbnRlcldhc0FudGlhbGlhc2VkID0gcC0+
dGVzdFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZyk7CisKKyAgICBpZiAocGFpbnRl
cldhc0FudGlhbGlhc2VkICE9IGFudGlhbGlhc2VkKQorICAgICAgICBwLT5zZXRSZW5kZXJIaW50
KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIGFudGlhbGlhc2VkKTsKKworICAgIHAtPnNldENsaXBQ
YXRoKHBhdGgsIFF0OjpJbnRlcnNlY3RDbGlwKTsKKworICAgIGlmIChwYWludGVyV2FzQW50aWFs
aWFzZWQgIT0gYW50aWFsaWFzZWQpCisgICAgICAgIHAtPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6
OkFudGlhbGlhc2luZywgcGFpbnRlcldhc0FudGlhbGlhc2VkKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEt
PnAoKTsKKyAgICBRUGFpbnRlclBhdGggcGxhdGZvcm1QYXRoID0gcGF0aC5wbGF0Zm9ybVBhdGgo
KTsKKyAgICBwbGF0Zm9ybVBhdGguc2V0RmlsbFJ1bGUodG9RdEZpbGxSdWxlKGZpbGxSdWxlKCkp
KTsKKworICAgIGlmIChoYXNTaGFkb3coKSkgeworICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0Js
dXIoKSB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fc3RhdGUuZmlsbEdyYWRpZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xh
eWVyKHRoaXMsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCkpOworICAgICAgICAgICAg
aWYgKHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFp
bnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgICAg
IGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7CisgICAgICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUJydXNoKG1fc3RhdGUuZmlsbFBhdHRlcm4t
PmNyZWF0ZVBsYXRmb3JtUGF0dGVybigpKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICht
X3N0YXRlLmZpbGxHcmFkaWVudCkgeworICAgICAgICAgICAgICAgICAgICBRQnJ1c2ggYnJ1c2go
Km1fc3RhdGUuZmlsbEdyYWRpZW50LT5wbGF0Zm9ybUdyYWRpZW50KCkpOworICAgICAgICAgICAg
ICAgICAgICBicnVzaC5zZXRUcmFuc2Zvcm0obV9zdGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZp
bGxQYXRoKHBsYXRmb3JtUGF0aCwgYnJ1c2gpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwg
cC0+YnJ1c2goKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNoYWRvdy5l
bmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFFQb2ludEYgb2Zmc2V0KG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIG1f
c3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShv
ZmZzZXQpOworICAgICAgICAgICAgUUNvbG9yIHNoYWRvd0NvbG9yID0gbV9zdGF0ZS5zaGFkb3dD
b2xvcjsKKyAgICAgICAgICAgIHNoYWRvd0NvbG9yLnNldEFscGhhRihzaGFkb3dDb2xvci5hbHBo
YUYoKSAqIHAtPmJydXNoKCkuY29sb3IoKS5hbHBoYUYoKSk7CisgICAgICAgICAgICBwLT5maWxs
UGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0
ZSgtb2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVy
bikgeworICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFCcnVzaChtX3N0YXRlLmZp
bGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oKSkpOworICAgIH0gZWxzZSBpZiAobV9z
dGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICAgICAgUUJydXNoIGJydXNoKCptX3N0YXRlLmZpbGxH
cmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3Jt
KG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAg
ICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIGJydXNoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBwLT5icnVzaCgpKTsKK30KKworaW5saW5lIHN0YXRp
YyB2b2lkIGZpbGxQYXRoU3Ryb2tlKFFQYWludGVyKiBwYWludGVyLCBRUGFpbnRlclBhdGhTdHJv
a2VyJiBwYXRoU3Ryb2tlciwgY29uc3QgUVBhaW50ZXJQYXRoJiBwbGF0Zm9ybVBhdGgsIGNvbnN0
IFFCcnVzaCYgYnJ1c2gpCit7CisgICAgUVBhaW50ZXJQYXRoIHN0cm9rZSA9IHBhdGhTdHJva2Vy
LmNyZWF0ZVN0cm9rZShwbGF0Zm9ybVBhdGgpOworICAgIHBhaW50ZXItPmZpbGxQYXRoKHN0cm9r
ZSwgYnJ1c2gpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQ
YXRoJiBwYXRoKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgUVBlbiBwZW4ocC0+cGVu
KCkpOworICAgIFFQYWludGVyUGF0aCBwbGF0Zm9ybVBhdGggPSBwYXRoLnBsYXRmb3JtUGF0aCgp
OworICAgIHBsYXRmb3JtUGF0aC5zZXRGaWxsUnVsZSh0b1F0RmlsbFJ1bGUoZmlsbFJ1bGUoKSkp
OworICAgIFFQYWludGVyUGF0aFN0cm9rZXIgcGF0aFN0cm9rZXI7CisgICAgcGF0aFN0cm9rZXIu
c2V0Sm9pblN0eWxlKHBlbi5qb2luU3R5bGUoKSk7CisgICAgcGF0aFN0cm9rZXIuc2V0RGFzaE9m
ZnNldChwZW4uZGFzaE9mZnNldCgpKTsKKyAgICBwYXRoU3Ryb2tlci5zZXRNaXRlckxpbWl0KHBl
bi5taXRlckxpbWl0KCkpOworICAgIHBhdGhTdHJva2VyLnNldENhcFN0eWxlKHBlbi5jYXBTdHls
ZSgpKTsKKyAgICBwYXRoU3Ryb2tlci5zZXRXaWR0aChwZW4ud2lkdGhGKCkpOworCisgICAgaWYg
KGhhc1NoYWRvdygpKSB7CisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpIHx8IG1fc3Rh
dGUuc3Ryb2tlUGF0dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAgIEZsb2F0
UmVjdCBib3VuZGluZ1JlY3QgPSBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOworICAg
ICAgICAgICAgYm91bmRpbmdSZWN0LmluZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0
aEYoKSk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcih0aGlzLCBib3VuZGluZ1JlY3QpOworICAgICAgICAgICAgaWYg
KHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRl
ciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgICAgIGlm
IChtX3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFFCcnVzaCBi
cnVzaCgqbV9zdGF0ZS5zdHJva2VHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQt
PmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxQYXRo
U3Ryb2tlKHNoYWRvd1BhaW50ZXIsIHBhdGhTdHJva2VyLCBwbGF0Zm9ybVBhdGgsIGJydXNoKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZmlsbFBhdGhTdHJv
a2Uoc2hhZG93UGFpbnRlciwgcGF0aFN0cm9rZXIsIHBsYXRmb3JtUGF0aCwgcGVuLmJydXNoKCkp
OworICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0KG1fc3Rh
dGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsK
KyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgUUNvbG9yIHNo
YWRvd0NvbG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKKyAgICAgICAgICAgIHNoYWRvd0NvbG9y
LnNldEFscGhhRihzaGFkb3dDb2xvci5hbHBoYUYoKSAqIHBlbi5jb2xvcigpLmFscGhhRigpKTsK
KyAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7CisgICAgICAgICAgICBzaGFkb3dQZW4u
c2V0Q29sb3Ioc2hhZG93Q29sb3IpOworICAgICAgICAgICAgZmlsbFBhdGhTdHJva2UocCwgcGF0
aFN0cm9rZXIsIHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuLmJydXNoKCkpOworICAgICAgICAgICAg
cC0+dHJhbnNsYXRlKC1vZmZzZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fc3Rh
dGUuc3Ryb2tlUGF0dGVybikgeworICAgICAgICBRQnJ1c2ggYnJ1c2ggPSBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybigpOworICAgICAgICBmaWxsUGF0aFN0cm9r
ZShwLCBwYXRoU3Ryb2tlciwgcGxhdGZvcm1QYXRoLCBicnVzaCk7CisgICAgfSBlbHNlIGlmICht
X3N0YXRlLnN0cm9rZUdyYWRpZW50KSB7CisgICAgICAgIFFCcnVzaCBicnVzaCgqbV9zdGF0ZS5z
dHJva2VHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAgICAgYnJ1c2guc2V0VHJh
bnNmb3JtKG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7
CisgICAgICAgIGZpbGxQYXRoU3Ryb2tlKHAsIHBhdGhTdHJva2VyLCBwbGF0Zm9ybVBhdGgsIGJy
dXNoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZmlsbFBhdGhTdHJva2UocCwgcGF0aFN0cm9rZXIs
IHBsYXRmb3JtUGF0aCwgcGVuLmJydXNoKCkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZHJh
d1JlcGVhdFBhdHRlcm4oUVBhaW50ZXIqIHAsIFBhc3NSZWZQdHI8UGF0dGVybj4gcGF0dGVybiwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIEFTU0VSVChwYXR0ZXJuKTsKKworICAgIGNv
bnN0IFFCcnVzaCBicnVzaCA9IHBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybigpOworICAg
IGlmIChicnVzaC5zdHlsZSgpICE9IFF0OjpUZXh0dXJlUGF0dGVybikKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29uc3QgYm9vbCByZXBlYXRYID0gcGF0dGVybi0+cmVwZWF0WCgpOworICAgIGNv
bnN0IGJvb2wgcmVwZWF0WSA9IHBhdHRlcm4tPnJlcGVhdFkoKTsKKyAgICAvLyBQYXR0ZXJucyBt
dXN0IGJlIHBhaW50ZWQgc28gdGhhdCB0aGUgdG9wIGxlZnQgb2YgdGhlIGZpcnN0IGltYWdlIGlz
IGFuY2hvcmVkIGF0CisgICAgLy8gdGhlIG9yaWdpbiBvZiB0aGUgY29vcmRpbmF0ZSBzcGFjZQor
CisgICAgUVJlY3RGIHRhcmdldFJlY3QocmVjdCk7CisgICAgY29uc3QgaW50IHcgPSBicnVzaC50
ZXh0dXJlKCkud2lkdGgoKTsKKyAgICBjb25zdCBpbnQgaCA9IGJydXNoLnRleHR1cmUoKS5oZWln
aHQoKTsKKworICAgIEFTU0VSVChwKTsKKyAgICBRUmVnaW9uIG9sZENsaXA7CisgICAgaWYgKHAt
Pmhhc0NsaXBwaW5nKCkpCisgICAgICAgIG9sZENsaXAgPSBwLT5jbGlwUmVnaW9uKCk7CisKKyAg
ICAvLyBUaGUgb25seSB0eXBlIG9mIHRyYW5zZm9ybXMgc3VwcG9ydGVkIGZvciB0aGUgYnJ1c2gg
YXJlIHRyYW5zbGF0aW9ucy4KKyAgICBBU1NFUlQoIWJydXNoLnRyYW5zZm9ybSgpLmlzUm90YXRp
bmcoKSk7CisKKyAgICBRUmVjdEYgY2xpcCA9IHRhcmdldFJlY3Q7CisgICAgUVJlY3RGIHBhdHRl
cm5SZWN0ID0gYnJ1c2gudHJhbnNmb3JtKCkubWFwUmVjdChRUmVjdEYoMCwgMCwgdywgaCkpOwor
ICAgIGlmICghcmVwZWF0WCkgeworICAgICAgICBjbGlwLnNldExlZnQocGF0dGVyblJlY3QubGVm
dCgpKTsKKyAgICAgICAgY2xpcC5zZXRXaWR0aChwYXR0ZXJuUmVjdC53aWR0aCgpKTsKKyAgICB9
CisgICAgaWYgKCFyZXBlYXRZKSB7CisgICAgICAgIGNsaXAuc2V0VG9wKHBhdHRlcm5SZWN0LnRv
cCgpKTsKKyAgICAgICAgY2xpcC5zZXRIZWlnaHQocGF0dGVyblJlY3QuaGVpZ2h0KCkpOworICAg
IH0KKyAgICBpZiAoIXJlcGVhdFggfHwgIXJlcGVhdFkpCisgICAgICAgIHAtPnNldENsaXBSZWN0
KGNsaXApOworCisgICAgcC0+ZmlsbFJlY3QodGFyZ2V0UmVjdCwgYnJ1c2gpOworCisgICAgaWYg
KCFvbGRDbGlwLmlzRW1wdHkoKSkKKyAgICAgICAgcC0+c2V0Q2xpcFJlZ2lvbihvbGRDbGlwKTsK
KyAgICBlbHNlIGlmICghcmVwZWF0WCB8fCAhcmVwZWF0WSkKKyAgICAgICAgcC0+c2V0Q2xpcHBp
bmcoZmFsc2UpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgUVJlY3RGIG5vcm1h
bGl6ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7CisKKyAgICBpZiAobV9zdGF0ZS5maWxsUGF0
dGVybikgeworICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0Js
dXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwor
ICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
ICAgICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHNoYWRvd1BhaW50ZXIsIG1fc3RhdGUuZmls
bFBhdHRlcm4sIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICBzaGFkb3cuZW5kU2hh
ZG93TGF5ZXIodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZHJhd1Jl
cGVhdFBhdHRlcm4ocCwgbV9zdGF0ZS5maWxsUGF0dGVybiwgbm9ybWFsaXplZFJlY3QpOworICAg
IH0gZWxzZSBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKKyAgICAgICAgUUJydXNoIGJydXNo
KCptX3N0YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKKyAgICAgICAgYnJ1
c2guc2V0VHJhbnNmb3JtKG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKCkpOworICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0Js
dXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwor
ICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
ICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVz
aCk7CisgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBi
cnVzaCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAgICAg
ICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgICAgIFNoYWRvd0Js
dXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgICAgIC8vIGRyYXdSZWN0U2hhZG93V2l0
aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90YXRpb25zLCBhbmQgdGhlIGZhbGxiYWNrIG9m
CisgICAgICAgICAgICAgICAgLy8gZHJhd2luZyB0aG91Z2ggY2xpcFRvSW1hZ2VCdWZmZXIoKSBw
cm9kdWNlcyBzY2FsaW5nIGFydGlmYWN0cyBmb3IgdXMuCisgICAgICAgICAgICAgICAgaWYgKCFn
ZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIo
dGhpcywgbm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93Q29u
dGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIg
PSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBwLT5icnVzaCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgICAgICBzaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJh
ZGlpKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTb2xpZCBy
ZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IG9yIHRyYW5zZm9ybWF0aW9ucyBhcHBs
aWVkIGNhbiBiZSBkb25lCisgICAgICAgICAgICAgICAgLy8gZmFzdGVyIHdpdGhvdXQgdXNpbmcg
dGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgUUNvbG9yIHNoYWRvd0Nv
bG9yID0gbV9zdGF0ZS5zaGFkb3dDb2xvcjsKKyAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5z
ZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFG
KCkpOworICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0
ZWQoUVBvaW50RihtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpLCBtX3N0YXRlLnNoYWRvd09m
ZnNldC5oZWlnaHQoKSkpLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgcC0+YnJ1c2goKSk7CisgICAg
fQorfQorCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUVJlY3RGIHBsYXRmb3JtUmVjdChyZWN0KTsKKyAgICBRUGFpbnRlciogcCA9
IG1fZGF0YS0+cCgpOworICAgIGlmIChoYXNTaGFkb3coKSkgeworICAgICAgICBpZiAobXVzdFVz
ZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7
CisgICAgICAgICAgICBzaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcGxhdGZvcm1SZWN0LCBS
b3VuZGVkUmVjdDo6UmFkaWkoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRQ29s
b3Igc2hhZG93Q29sb3IgPSBtX3N0YXRlLnNoYWRvd0NvbG9yOworICAgICAgICAgICAgc2hhZG93
Q29sb3Iuc2V0QWxwaGFGKHNoYWRvd0NvbG9yLmFscGhhRigpICogcC0+YnJ1c2goKS5jb2xvcigp
LmFscGhhRigpKTsKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0KHBsYXRmb3JtUmVjdC50cmFuc2xh
dGVkKFFQb2ludEYobV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dP
ZmZzZXQuaGVpZ2h0KCkpKSwgc2hhZG93Q29sb3IpOworICAgICAgICB9CisgICAgfQorICAgIHAt
PmZpbGxSZWN0KHBsYXRmb3JtUmVjdCwgUUNvbG9yKGNvbG9yKSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYgdG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsIGNvbnN0IEludFNpemUmIGJv
dHRvbUxlZnQsIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0LCBjb25zdCBDb2xvciYgY29sb3Is
IENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBhdGggcGF0aDsKKyAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0
LCBib3R0b21SaWdodCk7CisgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKKyAgICBpZiAo
aGFzU2hhZG93KCkpIHsKKyAgICAgICAgaWYgKG11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAgICAg
ICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgc2hhZG93LmRy
YXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BS
aWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93T2Zmc2V0KG1fc3RhdGUuc2hhZG93T2Zmc2V0Lndp
ZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIHAtPnRy
YW5zbGF0ZShzaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0
Zm9ybVBhdGgoKSwgUUNvbG9yKG1fc3RhdGUuc2hhZG93Q29sb3IpKTsKKyAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZSgtc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwLT5maWxs
UGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKK30KKwordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwg
IWNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGF0aCBwYXRoOworICAg
IHBhdGguYWRkUmVjdChyZWN0KTsKKyAgICBpZiAoIXJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpLmlz
WmVybygpKQorICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJvdW5kZWRIb2xlUmVjdCk7Cisg
ICAgZWxzZQorICAgICAgICBwYXRoLmFkZFJlY3Qocm91bmRlZEhvbGVSZWN0LnJlY3QoKSk7CisK
KyAgICBRUGFpbnRlclBhdGggcGxhdGZvcm1QYXRoID0gcGF0aC5wbGF0Zm9ybVBhdGgoKTsKKyAg
ICBwbGF0Zm9ybVBhdGguc2V0RmlsbFJ1bGUoUXQ6Ok9kZEV2ZW5GaWxsKTsKKworICAgIFFQYWlu
dGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAgICAgIGlm
IChtdXN0VXNlU2hhZG93Qmx1cigpKSB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyht
X3N0YXRlKTsKKyAgICAgICAgICAgIHNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwg
cm91bmRlZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFkb3dPZmZzZXQobV9zdGF0
ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBwLT5m
aWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihtX3N0YXRlLnNoYWRvd0NvbG9yKSk7CisgICAg
ICAgICAgICBwLT50cmFuc2xhdGUoLXNoYWRvd09mZnNldCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihjb2xvcikpOworfQorCitib29s
IEdyYXBoaWNzQ29udGV4dDo6aXNJblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9kYXRhLT5sYXllckNvdW50OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fZGF0YS0+cCgpLT5zZXRDbGlwUmVjdChyZWN0LCBRdDo6
SW50ZXJzZWN0Q2xpcCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2RhdGEtPnAoKS0+c2V0Q2xpcFJlY3QocmVjdCwgUXQ6OkludGVyc2Vj
dENsaXApOworfQorSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdAor
eworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgUVJlY3RGIGNsaXBSZWN0Owor
CisgICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2lu
ZG93KCkpOworCisgICAgaWYgKHAtPmhhc0NsaXBwaW5nKCkpCisgICAgICAgIGNsaXBSZWN0ID0g
Y2xpcFJlY3QuaW50ZXJzZWN0ZWQobV9kYXRhLT5jbGlwQm91bmRpbmdSZWN0KCkpOworCisgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoY2xpcFJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgY2xpcFJ1bGUpCit7Cisg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUVBhaW50
ZXIqIHAgPSBtX2RhdGEtPnAoKTsKKyAgICBRUGFpbnRlclBhdGggcGxhdGZvcm1QYXRoID0gcGF0
aC5wbGF0Zm9ybVBhdGgoKTsKKyAgICBwbGF0Zm9ybVBhdGguc2V0RmlsbFJ1bGUoY2xpcFJ1bGUg
PT0gUlVMRV9FVkVOT0REID8gUXQ6Ok9kZEV2ZW5GaWxsIDogUXQ6OldpbmRpbmdGaWxsKTsKKyAg
ICBwLT5zZXRDbGlwUGF0aChwbGF0Zm9ybVBhdGgsIFF0OjpJbnRlcnNlY3RDbGlwKTsKK30KKwor
dm9pZCBkcmF3Rm9jdXNSaW5nRm9yUGF0aChRUGFpbnRlciogcCwgY29uc3QgUVBhaW50ZXJQYXRo
JiBwYXRoLCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgYW50aUFsaWFzaW5nKQoreworICAgIGNv
bnN0IGJvb2wgYW50aUFsaWFzID0gcC0+dGVzdFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlh
c2luZyk7CisgICAgcC0+c2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFsaWFzaW5nLCBhbnRp
QWxpYXNpbmcpOworCisgICAgY29uc3QgUVBlbiBvbGRQZW4gPSBwLT5wZW4oKTsKKyAgICBjb25z
dCBRQnJ1c2ggb2xkQnJ1c2ggPSBwLT5icnVzaCgpOworCisgICAgUVBlbiBuUGVuID0gcC0+cGVu
KCk7CisgICAgblBlbi5zZXRDb2xvcihjb2xvcik7CisgICAgcC0+c2V0QnJ1c2goUXQ6Ok5vQnJ1
c2gpOworICAgIG5QZW4uc2V0U3R5bGUoUXQ6OkRvdExpbmUpOworCisgICAgcC0+c3Ryb2tlUGF0
aChwYXRoLCBuUGVuKTsKKyAgICBwLT5zZXRCcnVzaChvbGRCcnVzaCk7CisgICAgcC0+c2V0UGVu
KG9sZFBlbik7CisKKyAgICBwLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcs
IGFudGlBbGlhcyk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNv
bnN0IFBhdGgmIHBhdGgsIGludCAvKiB3aWR0aCAqLywgaW50IG9mZnNldCwgY29uc3QgQ29sb3Im
IGNvbG9yKQoreworICAgIC8vIEZJWE1FOiBVc2UgJ29mZnNldCcgZm9yIHNvbWV0aGluZz8gaHR0
cDovL3dlYmtpdC5vcmcvYi80OTkwOQorCisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
Y29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBkcmF3Rm9jdXNSaW5nRm9y
UGF0aChtX2RhdGEtPnAoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSwgY29sb3IsIG1fZGF0YS0+YW50
aUFsaWFzaW5nRm9yUmVjdHNBbmRMaW5lcyk7Cit9CisKKy8qKgorICogRm9jdXMgcmluZyBoYW5k
bGluZyBmb3IgZm9ybSBjb250cm9scyBpcyBub3QgaGFuZGxlZCBoZXJlLiBRdCBzdHlsZSBpbgor
ICogUmVuZGVyVGhlbWUgaGFuZGxlcyBkcmF3aW5nIGZvY3VzIG9uIHdpZGdldHMgd2hpY2ggCisg
KiBuZWVkIGl0LiBJdCBpcyBzdGlsbCBoYW5kbGVkIGhlcmUgZm9yIGxpbmtzLgorICovCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBpbnQgd2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKKworICAgIGlmICgh
cmVjdHMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQgcmFkaXVzID0gKHdpZHRo
IC0gMSkgLyAyOworICAgIFFQYWludGVyUGF0aCBwYXRoOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByZWN0Q291bnQ7ICsraSkgeworICAgICAgICBRUmVjdCByZWN0ID0gUVJlY3QoKHJl
Y3RzW2ldKSkuYWRqdXN0ZWQoLW9mZnNldCAtIHJhZGl1cywgLW9mZnNldCAtIHJhZGl1cywgb2Zm
c2V0ICsgcmFkaXVzLCBvZmZzZXQgKyByYWRpdXMpOworICAgICAgICAvLyBUaGlzIGlzIG5vdCB0
aGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIGFkZCBhIHJlY3QgdG8gYSBwYXRoLCBidXQgaWYgd2Ug
ZG9uJ3QgY3JlYXRlIHRoZSB0bXBQYXRoLAorICAgICAgICAvLyB3ZSB3aWxsIGVuZCB1cCB3aXRo
IHVnbHkgbGluZXMgaW4gYmV0d2VlbiByb3dzIG9mIHRleHQgb24gYW5jaG9ycyB3aXRoIG11bHRp
cGxlIGxpbmVzLgorICAgICAgICBRUGFpbnRlclBhdGggdG1wUGF0aDsKKyAgICAgICAgdG1wUGF0
aC5hZGRSb3VuZGVkUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cyk7CisgICAgICAgIHBhdGggPSBw
YXRoLnVuaXRlZCh0bXBQYXRoKTsKKyAgICB9CisgICAgZHJhd0ZvY3VzUmluZ0ZvclBhdGgobV9k
YXRhLT5wKCksIHBhdGgsIGNvbG9yLCBtX2RhdGEtPmFudGlBbGlhc2luZ0ZvclJlY3RzQW5kTGlu
ZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZs
b2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wpCit7CisgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRQb2ludCBzdGFydFBvaW50
ID0gb3JpZ2luOworICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQgPSBvcmlnaW4gKyBGbG9hdFNpemUo
d2lkdGgsIDApOworCisgICAgLy8gSWYgcGFpbnRlbmdpbmUgdHlwZSBpcyBYMTEgdG8gYXZvaWQg
YXJ0aWZhY3RzCisgICAgLy8gbGlrZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQyMjQ4CisjaWYgZGVmaW5lZChRX1dTX1gxMSkKKyAgICBRUGFpbnRlciogcCA9
IG1fZGF0YS0+cCgpOworICAgIGlmIChwLT5wYWludEVuZ2luZSgpLT50eXBlKCkgPT0gUVBhaW50
RW5naW5lOjpYMTEpIHsKKyAgICAgICAgLy8gSWYgc3Ryb2tlIHRoaWNrbmVzcyBpcyBvZGQgd2Ug
bmVlZCBkZWNyZWFzZSBZIGNvb3JkaW5hdGUgYnkgMSBwaXhlbCwKKyAgICAgICAgLy8gYmVjYXVz
ZSBpbnNpZGUgbWV0aG9kIGFkanVzdExpbmVUb1BpeGVsQm91bmRhcmllcyguLi4pLCB3aGljaAor
ICAgICAgICAvLyBjYWxsZWQgZnJvbSBkcmF3TGluZSguLi4pLCBZIGNvb3JkaW5hdGUgd2lsbCBi
ZSBpbmNyZWFzZWQgYnkgMC41ZgorICAgICAgICAvLyBhbmQgdGhlbiBpbnNpZGUgUXQgcGFpbnRp
bmcgZW5naW5lIHdpbGwgYmUgcm91bmRlZCB0byBuZXh0IGdyZWF0ZXIKKyAgICAgICAgLy8gaW50
ZWdlciB2YWx1ZS4KKyAgICAgICAgZmxvYXQgc3Ryb2tlV2lkdGggPSBzdHJva2VUaGlja25lc3Mo
KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc3Ryb2tlV2lkdGgpICUgMikgeworICAg
ICAgICAgICAgc3RhcnRQb2ludC5zZXRZKHN0YXJ0UG9pbnQueSgpIC0gMSk7CisgICAgICAgICAg
ICBlbmRQb2ludC5zZXRZKGVuZFBvaW50LnkoKSAtIDEpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmIC8vIGRlZmluZWQoUV9XU19YMTEpCisKKyAgICBkcmF3TGluZShyb3VuZGVkSW50UG9pbnQo
c3RhcnRQb2ludCksIHJvdW5kZWRJbnRQb2ludChlbmRQb2ludCkpOworfQorCisKKy8qCisgKiAg
IE5PVEU6IFRoaXMgY29kZSBpcyBjb21wbGV0ZWx5IGJhc2VkIHVwb24gdGhlIG9uZSBmcm9tCisg
KiAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdFcnJvclVuZGVy
bGluZS57aHxjcHB9CisgKgorICogICBEcmF3cyBhbiBlcnJvciB1bmRlcmxpbmUgdGhhdCBsb29r
cyBsaWtlIG9uZSBvZjoKKyAqCisgKiAgICAgICAgICAgICAgIEggICAgICAgRSAgICAgICAgICAg
ICAgICBICisgKiAgICAgIC9cICAgICAgL1wgICAgICAvXCAgICAgICAgL1wgICAgICAvXCAgICAg
ICAgICAgICAgIC0KKyAqICAgIEEvICBcICAgIC8gIFwgICAgLyAgXCAgICAgQS8gIFwgICAgLyAg
XCAgICAgICAgICAgICAgfAorICogICAgIFwgICBcICAvICAgIFwgIC8gICAvRCAgICAgXCAgIFwg
IC8gICAgXCAgICAgICAgICAgICB8CisgKiAgICAgIFwgICBcLyAgQyAgIFwvICAgLyAgICAgICAg
XCAgIFwvICAgQyAgXCAgICAgICAgICAgIHwgaGVpZ2h0ID0gaGVpZ2h0U3F1YXJlcyAqIHNxdWFy
ZQorICogICAgICAgXCAgICAgIC9cICBGICAgLyAgICAgICAgICBcICBGICAgL1wgICBcICAgICAg
ICAgICB8CisgKiAgICAgICAgXCAgICAvICBcICAgIC8gICAgICAgICAgICBcICAgIC8gIFwgICBc
RyAgICAgICAgIHwKKyAqICAgICAgICAgXCAgLyAgICBcICAvICAgICAgICAgICAgICBcICAvICAg
IFwgIC8gICAgICAgICAgfAorICogICAgICAgICAgXC8gICAgICBcLyAgICAgICAgICAgICAgICBc
LyAgICAgIFwvICAgICAgICAgICAtCisgKiAgICAgICAgICBCICAgICAgICAgICAgICAgICAgICAg
ICAgIEIKKyAqICAgICAgICAgIHwtLS18CisgKiAgICAgICAgdW5pdFdpZHRoID0gKGhlaWdodFNx
dWFyZXMgLSAxKSAqIHNxdWFyZQorICoKKyAqICBUaGUgeCwgeSwgd2lkdGgsIGhlaWdodCBwYXNz
ZWQgaW4gZ2l2ZSB0aGUgZGVzaXJlZCBib3VuZGluZyBib3g7CisgKiAgeC93aWR0aCBhcmUgYWRq
dXN0ZWQgdG8gbWFrZSB0aGUgdW5kZXJsaW5lIGEgaW50ZWdlciBudW1iZXIgb2YgdW5pdHMgd2lk
ZS4KKyovCitzdGF0aWMgdm9pZCBkcmF3RXJyb3JVbmRlcmxpbmUoUVBhaW50ZXIgKnBhaW50ZXIs
IHFyZWFsIHgsIHFyZWFsIHksIHFyZWFsIHdpZHRoLCBxcmVhbCBoZWlnaHQpCit7CisgICAgY29u
c3QgcXJlYWwgaGVpZ2h0U3F1YXJlcyA9IDIuNTsKKworICAgIHFyZWFsIHNxdWFyZSA9IGhlaWdo
dCAvIGhlaWdodFNxdWFyZXM7CisgICAgcXJlYWwgaGFsZlNxdWFyZSA9IDAuNSAqIHNxdWFyZTsK
KworICAgIHFyZWFsIHVuaXRXaWR0aCA9IChoZWlnaHRTcXVhcmVzIC0gMS4wKSAqIHNxdWFyZTsK
KyAgICBpbnQgd2lkdGhVbml0cyA9IHN0YXRpY19jYXN0PGludD4oKHdpZHRoICsgMC41ICogdW5p
dFdpZHRoKSAvIHVuaXRXaWR0aCk7CisKKyAgICB4ICs9IDAuNSAqICh3aWR0aCAtIHdpZHRoVW5p
dHMgKiB1bml0V2lkdGgpOworICAgIHdpZHRoID0gd2lkdGhVbml0cyAqIHVuaXRXaWR0aDsKKwor
ICAgIHFyZWFsIGJvdHRvbSA9IHkgKyBoZWlnaHQ7CisgICAgcXJlYWwgdG9wID0geTsKKworICAg
IFFQYWludGVyUGF0aCBwYXRoOworCisgICAgLy8gQm90dG9tIG9mIHNxdWlnZ2xlLgorICAgIHBh
dGgubW92ZVRvKHggLSBoYWxmU3F1YXJlLCB0b3AgKyBoYWxmU3F1YXJlKTsgLy8gQQorCisgICAg
aW50IGkgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aFVuaXRzOyBpICs9IDIpIHsKKyAg
ICAgICAgcXJlYWwgbWlkZGxlID0geCArIChpICsgMSkgKiB1bml0V2lkdGg7CisgICAgICAgIHFy
ZWFsIHJpZ2h0ID0geCArIChpICsgMikgKiB1bml0V2lkdGg7CisKKyAgICAgICAgcGF0aC5saW5l
VG8obWlkZGxlLCBib3R0b20pOyAvLyBCCisKKyAgICAgICAgaWYgKGkgKyAyID09IHdpZHRoVW5p
dHMpCisgICAgICAgICAgICBwYXRoLmxpbmVUbyhyaWdodCArIGhhbGZTcXVhcmUsIHRvcCArIGhh
bGZTcXVhcmUpOyAvLyBECisgICAgICAgIGVsc2UgaWYgKGkgKyAxICE9IHdpZHRoVW5pdHMpCisg
ICAgICAgICAgICBwYXRoLmxpbmVUbyhyaWdodCwgdG9wICsgc3F1YXJlKTsgLy8gQworICAgIH0K
KworICAgIC8vIFRvcCBvZiBzcXVpZ2dsZS4KKyAgICBmb3IgKGkgLT0gMjsgaSA+PSAwOyBpIC09
IDIpIHsKKyAgICAgICAgcXJlYWwgbGVmdCA9IHggKyBpICogdW5pdFdpZHRoOworICAgICAgICBx
cmVhbCBtaWRkbGUgPSB4ICsgKGkgKyAxKSAqIHVuaXRXaWR0aDsKKyAgICAgICAgcXJlYWwgcmln
aHQgPSB4ICsgKGkgKyAyKSAqIHVuaXRXaWR0aDsKKworICAgICAgICBpZiAoaSArIDEgPT0gd2lk
dGhVbml0cykKKyAgICAgICAgICAgIHBhdGgubGluZVRvKG1pZGRsZSArIGhhbGZTcXVhcmUsIGJv
dHRvbSAtIGhhbGZTcXVhcmUpOyAvLyBHCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYg
KGkgKyAyID09IHdpZHRoVW5pdHMpCisgICAgICAgICAgICAgICAgcGF0aC5saW5lVG8ocmlnaHQs
IHRvcCk7IC8vIEUKKworICAgICAgICAgICAgcGF0aC5saW5lVG8obWlkZGxlLCBib3R0b20gLSBo
YWxmU3F1YXJlKTsgLy8gRgorICAgICAgICB9CisKKyAgICAgICAgcGF0aC5saW5lVG8obGVmdCwg
dG9wKTsgLy8gSAorICAgIH0KKworICAgIHBhaW50ZXItPmRyYXdQYXRoKHBhdGgpOworfQorCisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZs
b2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIERvY3VtZW50TWFya2VyTGluZVN0eWxlIHN0
eWxlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFFQYWludGVyKiBwYWludGVyID0gcGxhdGZvcm1Db250ZXh0KCk7CisgICAgY29uc3QgUVBl
biBvcmlnaW5hbFBlbiA9IHBhaW50ZXItPnBlbigpOworCisgICAgc3dpdGNoIChzdHlsZSkgewor
ICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJTcGVsbGluZ0xpbmVTdHlsZToKKyAgICAgICAgcGFpbnRl
ci0+c2V0UGVuKFF0OjpyZWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIERvY3VtZW50TWFy
a2VyR3JhbW1hckxpbmVTdHlsZToKKyAgICAgICAgcGFpbnRlci0+c2V0UGVuKFF0OjpncmVlbik7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBkcmF3RXJyb3JVbmRlcmxpbmUocGFpbnRlciwgb3JpZ2luLngoKSwgb3JpZ2luLnkoKSwg
d2lkdGgsIGNNaXNzcGVsbGluZ0xpbmVUaGlja25lc3MpOworICAgIHBhaW50ZXItPnNldFBlbihv
cmlnaW5hbFBlbik7Cit9CisKK0Zsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZp
Y2VQaXhlbHMoY29uc3QgRmxvYXRSZWN0JiBmcmVjdCwgUm91bmRpbmdNb2RlKQoreworICAgIC8v
IEl0IGlzIG5vdCBlbm91Z2gganVzdCB0byByb3VuZCB0byBwaXhlbHMgaW4gZGV2aWNlIHNwYWNl
LiBUaGUgcm90YXRpb24gcGFydCBvZiB0aGUKKyAgICAvLyBhZmZpbmUgdHJhbnNmb3JtIG1hdHJp
eCB0byBkZXZpY2Ugc3BhY2UgY2FuIG1lc3Mgd2l0aCB0aGlzIGNvbnZlcnNpb24gaWYgd2UgaGF2
ZSBhCisgICAgLy8gcm90YXRpbmcgaW1hZ2UgbGlrZSB0aGUgaGFuZHMgb2YgdGhlIHdvcmxkIGNs
b2NrIHdpZGdldC4gV2UganVzdCBuZWVkIHRoZSBzY2FsZSwgc28KKyAgICAvLyB3ZSBnZXQgdGhl
IGFmZmluZSB0cmFuc2Zvcm0gbWF0cml4IGFuZCBleHRyYWN0IHRoZSBzY2FsZS4KKyAgICBRUGFp
bnRlciogcGFpbnRlciA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIFFUcmFuc2Zvcm0gZGV2aWNl
VHJhbnNmb3JtID0gcGFpbnRlci0+ZGV2aWNlVHJhbnNmb3JtKCk7CisgICAgaWYgKGRldmljZVRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHJldHVybiBmcmVjdDsKKworICAgIHFyZWFs
IGRldmljZVNjYWxlWCA9IHNxcnRmKGRldmljZVRyYW5zZm9ybS5tMTEoKSAqIGRldmljZVRyYW5z
Zm9ybS5tMTEoKSArIGRldmljZVRyYW5zZm9ybS5tMTIoKSAqIGRldmljZVRyYW5zZm9ybS5tMTIo
KSk7CisgICAgcXJlYWwgZGV2aWNlU2NhbGVZID0gc3FydGYoZGV2aWNlVHJhbnNmb3JtLm0yMSgp
ICogZGV2aWNlVHJhbnNmb3JtLm0yMSgpICsgZGV2aWNlVHJhbnNmb3JtLm0yMigpICogZGV2aWNl
VHJhbnNmb3JtLm0yMigpKTsKKworICAgIFFQb2ludCBkZXZpY2VPcmlnaW4oZnJlY3QueCgpICog
ZGV2aWNlU2NhbGVYLCBmcmVjdC55KCkgKiBkZXZpY2VTY2FsZVkpOworICAgIFFQb2ludCBkZXZp
Y2VMb3dlclJpZ2h0KGZyZWN0Lm1heFgoKSAqIGRldmljZVNjYWxlWCwgZnJlY3QubWF4WSgpICog
ZGV2aWNlU2NhbGVZKTsKKworICAgIC8vIERvbid0IGxldCB0aGUgaGVpZ2h0IG9yIHdpZHRoIHJv
dW5kIHRvIDAgdW5sZXNzIGVpdGhlciB3YXMgb3JpZ2luYWxseSAwCisgICAgaWYgKGRldmljZU9y
aWdpbi55KCkgPT0gZGV2aWNlTG93ZXJSaWdodC55KCkgJiYgZnJlY3QuaGVpZ2h0KCkpCisgICAg
ICAgIGRldmljZUxvd2VyUmlnaHQuc2V0WShkZXZpY2VMb3dlclJpZ2h0LnkoKSArIDEpOworICAg
IGlmIChkZXZpY2VPcmlnaW4ueCgpID09IGRldmljZUxvd2VyUmlnaHQueCgpICYmIGZyZWN0Lndp
ZHRoKCkpCisgICAgICAgIGRldmljZUxvd2VyUmlnaHQuc2V0WChkZXZpY2VMb3dlclJpZ2h0Lngo
KSArIDEpOworCisgICAgRmxvYXRQb2ludCByb3VuZGVkT3JpZ2luID0gRmxvYXRQb2ludChkZXZp
Y2VPcmlnaW4ueCgpIC8gZGV2aWNlU2NhbGVYLCBkZXZpY2VPcmlnaW4ueSgpIC8gZGV2aWNlU2Nh
bGVZKTsKKyAgICBGbG9hdFBvaW50IHJvdW5kZWRMb3dlclJpZ2h0ID0gRmxvYXRQb2ludChkZXZp
Y2VMb3dlclJpZ2h0LngoKSAvIGRldmljZVNjYWxlWCwgZGV2aWNlTG93ZXJSaWdodC55KCkgLyBk
ZXZpY2VTY2FsZVkpOworICAgIHJldHVybiBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRl
ZExvd2VyUmlnaHQgLSByb3VuZGVkT3JpZ2luKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgLy8gUXQgZG9l
c24ndCBzdXBwb3J0IHNoYWRvd3MgbmF0aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5IGlu
IHRoZSBkcmF3KgorICAgIC8vIGZ1bmN0aW9ucworICAgIGlmIChtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKSB7CisgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNv
bnRleHQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAorICAgICAg
ICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9w
cG9zaXRlIFkgYXhpcworICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShz
aXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGVhclBsYXRmb3JtU2hhZG93KCkKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnB1c2hUcmFuc3BhcmVuY3lMYXllckludGVybmFsKGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVh
bCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1hc2spCit7CisgICAgUVBhaW50ZXIqIHAgPSBtX2Rh
dGEtPnAoKTsKKworICAgIFFUcmFuc2Zvcm0gZGV2aWNlVHJhbnNmb3JtID0gcC0+dHJhbnNmb3Jt
KCk7CisgICAgUVJlY3QgZGV2aWNlQ2xpcCA9IGRldmljZVRyYW5zZm9ybS5tYXBSZWN0KHJlY3Qp
OworCisgICAgYWxwaGFNYXNrID0gYWxwaGFNYXNrLnRyYW5zZm9ybWVkKGRldmljZVRyYW5zZm9y
bSk7CisgICAgaWYgKGFscGhhTWFzay53aWR0aCgpICE9IGRldmljZUNsaXAud2lkdGgoKSB8fCBh
bHBoYU1hc2suaGVpZ2h0KCkgIT0gZGV2aWNlQ2xpcC5oZWlnaHQoKSkKKyAgICAgICAgYWxwaGFN
YXNrID0gYWxwaGFNYXNrLnNjYWxlZChkZXZpY2VDbGlwLndpZHRoKCksIGRldmljZUNsaXAuaGVp
Z2h0KCkpOworCisgICAgbV9kYXRhLT5sYXllcnMucHVzaChuZXcgVHJhbnNwYXJlbmN5TGF5ZXIo
cCwgZGV2aWNlQ2xpcCwgMS4wLCBhbHBoYU1hc2spKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQoreworICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCB4LCB5
LCB3LCBoOworICAgIHggPSB5ID0gMDsKKyAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwor
ICAgIGNvbnN0IFFQYWludERldmljZSogZGV2aWNlID0gcC0+ZGV2aWNlKCk7CisgICAgdyA9IGRl
dmljZS0+d2lkdGgoKTsKKyAgICBoID0gZGV2aWNlLT5oZWlnaHQoKTsKKworICAgIGlmIChwLT5o
YXNDbGlwcGluZygpKSB7CisgICAgICAgIFFSZWN0RiBjbGlwID0gbV9kYXRhLT5jbGlwQm91bmRp
bmdSZWN0KCk7CisgICAgICAgIFFSZWN0RiBkZXZpY2VDbGlwID0gcC0+dHJhbnNmb3JtKCkubWFw
UmVjdChjbGlwKTsKKyAgICAgICAgeCA9IGludChxQm91bmQocXJlYWwoMCksIGRldmljZUNsaXAu
eCgpLCAocXJlYWwpdykpOworICAgICAgICB5ID0gaW50KHFCb3VuZChxcmVhbCgwKSwgZGV2aWNl
Q2xpcC55KCksIChxcmVhbCloKSk7CisgICAgICAgIHcgPSBpbnQocUJvdW5kKHFyZWFsKDApLCBk
ZXZpY2VDbGlwLndpZHRoKCksIChxcmVhbCl3KSArIDIpOworICAgICAgICBoID0gaW50KHFCb3Vu
ZChxcmVhbCgwKSwgZGV2aWNlQ2xpcC5oZWlnaHQoKSwgKHFyZWFsKWgpICsgMik7CisgICAgfQor
CisgICAgUVBpeG1hcCBlbXB0eUFscGhhTWFzazsKKyAgICBtX2RhdGEtPmxheWVycy5wdXNoKG5l
dyBUcmFuc3BhcmVuY3lMYXllcihwLCBRUmVjdCh4LCB5LCB3LCBoKSwgb3BhY2l0eSwgZW1wdHlB
bHBoYU1hc2spKTsKKyAgICArK21fZGF0YS0+bGF5ZXJDb3VudDsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFRyYW5zcGFyZW5jeUxheWVy
KiBsYXllciA9IG1fZGF0YS0+bGF5ZXJzLnBvcCgpOworICAgIGlmICghbGF5ZXItPmFscGhhTWFz
ay5pc051bGwoKSkgeworICAgICAgICBsYXllci0+cGFpbnRlci5yZXNldFRyYW5zZm9ybSgpOwor
ICAgICAgICBsYXllci0+cGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9EZXN0aW5hdGlvbkluKTsKKyAgICAgICAgbGF5ZXItPnBhaW50ZXIuZHJhd1Bp
eG1hcChRUG9pbnQoKSwgbGF5ZXItPmFscGhhTWFzayk7CisgICAgfSBlbHNlCisgICAgICAgIC0t
bV9kYXRhLT5sYXllckNvdW50OyAvLyBzZWUgdGhlIGNvbW1lbnQgZm9yIGxheWVyQ291bnQKKyAg
ICBsYXllci0+cGFpbnRlci5lbmQoKTsKKworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7
CisgICAgcC0+c2F2ZSgpOworICAgIHAtPnJlc2V0VHJhbnNmb3JtKCk7CisgICAgcC0+c2V0T3Bh
Y2l0eShsYXllci0+b3BhY2l0eSk7CisgICAgcC0+ZHJhd1BpeG1hcChsYXllci0+b2Zmc2V0LCBs
YXllci0+cGl4bWFwKTsKKyAgICBwLT5yZXN0b3JlKCk7CisKKyAgICBkZWxldGUgbGF5ZXI7Cit9
CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpzdXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgUVBh
aW50ZXI6OkNvbXBvc2l0aW9uTW9kZSBjdXJyZW50Q29tcG9zaXRpb25Nb2RlID0gcC0+Y29tcG9z
aXRpb25Nb2RlKCk7CisgICAgcC0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3Np
dGlvbk1vZGVfU291cmNlKTsKKyAgICBwLT5maWxsUmVjdChyZWN0LCBRdDo6dHJhbnNwYXJlbnQp
OworICAgIHAtPnNldENvbXBvc2l0aW9uTW9kZShjdXJyZW50Q29tcG9zaXRpb25Nb2RlKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBsaW5lV2lkdGgpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkUmVjdChyZWN0KTsKKwor
ICAgIGZsb2F0IHByZXZpb3VzU3Ryb2tlVGhpY2tuZXNzID0gc3Ryb2tlVGhpY2tuZXNzKCk7CisK
KyAgICBpZiAobGluZVdpZHRoICE9IHByZXZpb3VzU3Ryb2tlVGhpY2tuZXNzKQorICAgICAgICBz
ZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKKworICAgIHN0cm9rZVBhdGgocGF0aCk7CisK
KyAgICBpZiAobGluZVdpZHRoICE9IHByZXZpb3VzU3Ryb2tlVGhpY2tuZXNzKQorICAgICAgICBz
ZXRTdHJva2VUaGlja25lc3MocHJldmlvdXNTdHJva2VUaGlja25lc3MpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcChMaW5lQ2FwIGxjKQoreworICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQYWludGVyKiBwID0gbV9kYXRh
LT5wKCk7CisgICAgUVBlbiBuUGVuID0gcC0+cGVuKCk7CisgICAgblBlbi5zZXRDYXBTdHlsZSh0
b1F0TGluZUNhcChsYykpOworICAgIHAtPnNldFBlbihuUGVuKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYgZGFzaGVzLCBmbG9hdCBkYXNo
T2Zmc2V0KQoreworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CisgICAgUVBlbiBwZW4g
PSBwLT5wZW4oKTsKKyAgICB1bnNpZ25lZCBkYXNoTGVuZ3RoID0gZGFzaGVzLnNpemUoKTsKKyAg
ICBpZiAoZGFzaExlbmd0aCkgeworICAgICAgICBRVmVjdG9yPHFyZWFsPiBwYXR0ZXJuOworICAg
ICAgICB1bnNpZ25lZCBjb3VudCA9IGRhc2hMZW5ndGg7CisgICAgICAgIGlmIChkYXNoTGVuZ3Ro
ICUgMikKKyAgICAgICAgICAgIGNvdW50ICo9IDI7CisKKyAgICAgICAgZmxvYXQgcGVuV2lkdGgg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGRvdWJsZShwZW4ud2lkdGhGKCkpKTsKKyAgICAgICAg
aWYgKHBlbldpZHRoIDw9IDAuZikKKyAgICAgICAgICAgIHBlbldpZHRoID0gMS5mOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgcGF0
dGVybi5hcHBlbmQoZGFzaGVzW2kgJSBkYXNoTGVuZ3RoXSAvIHBlbldpZHRoKTsKKworICAgICAg
ICBwZW4uc2V0RGFzaFBhdHRlcm4ocGF0dGVybik7CisgICAgICAgIHBlbi5zZXREYXNoT2Zmc2V0
KGRhc2hPZmZzZXQgLyBwZW5XaWR0aCk7CisgICAgfSBlbHNlCisgICAgICAgIHBlbi5zZXRTdHls
ZShRdDo6U29saWRMaW5lKTsKKyAgICBwLT5zZXRQZW4ocGVuKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGxqKQoreworICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5w
KCk7CisgICAgUVBlbiBuUGVuID0gcC0+cGVuKCk7CisgICAgblBlbi5zZXRKb2luU3R5bGUodG9R
dExpbmVKb2luKGxqKSk7CisgICAgcC0+c2V0UGVuKG5QZW4pOworfQorCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0TWl0ZXJMaW1pdChmbG9hdCBsaW1pdCkKK3sKKyAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+
cCgpOworICAgIFFQZW4gblBlbiA9IHAtPnBlbigpOworICAgIG5QZW4uc2V0TWl0ZXJMaW1pdChs
aW1pdCk7CisgICAgcC0+c2V0UGVuKG5QZW4pOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0QWxwaGEoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKKyAgICBwLT5z
ZXRPcGFjaXR5KG9wYWNpdHkpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQVNTRVJUKG9wID09IFdlYkNvcmU6OkNvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRN
b2RlID09IFdlYkNvcmU6OkJsZW5kTW9kZU5vcm1hbCk7CisKKyAgICBpZiAob3AgPT0gV2ViQ29y
ZTo6Q29tcG9zaXRlU291cmNlT3ZlcikKKyAgICAgICAgbV9kYXRhLT5wKCktPnNldENvbXBvc2l0
aW9uTW9kZSh0b1F0Q29tcG9zaXRpb25Nb2RlKGJsZW5kTW9kZSkpOworICAgIGVsc2UKKyAgICAg
ICAgbV9kYXRhLT5wKCktPnNldENvbXBvc2l0aW9uTW9kZSh0b1F0Q29tcG9zaXRpb25Nb2RlKG9w
KSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHBhdGgsIFdp
bmRSdWxlIHdpbmRSdWxlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFFQYWludGVyUGF0aCBjbGlwUGF0aCA9IHBhdGgucGxhdGZvcm1QYXRo
KCk7CisgICAgY2xpcFBhdGguc2V0RmlsbFJ1bGUodG9RdEZpbGxSdWxlKHdpbmRSdWxlKSk7Cisg
ICAgbV9kYXRhLT5wKCktPnNldENsaXBQYXRoKGNsaXBQYXRoLCBRdDo6SW50ZXJzZWN0Q2xpcCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYW52YXNDbGlwKGNvbnN0IFBhdGgmIHBhdGgs
IFdpbmRSdWxlIHdpbmRSdWxlKQoreworICAgIGNsaXAocGF0aCwgd2luZFJ1bGUpOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoJiBwYXRoKQoreworICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQYWludGVyKiBw
ID0gbV9kYXRhLT5wKCk7CisgICAgUVBhaW50ZXJQYXRoIGNsaXBwZWRPdXQgPSBwYXRoLnBsYXRm
b3JtUGF0aCgpOworICAgIFFQYWludGVyUGF0aCBuZXdDbGlwOworICAgIG5ld0NsaXAuc2V0Rmls
bFJ1bGUoUXQ6Ok9kZEV2ZW5GaWxsKTsKKyAgICBpZiAocC0+aGFzQ2xpcHBpbmcoKSkgeworICAg
ICAgICBuZXdDbGlwLmFkZFJlY3QobV9kYXRhLT5jbGlwQm91bmRpbmdSZWN0KCkpOworICAgICAg
ICBuZXdDbGlwLmFkZFBhdGgoY2xpcHBlZE91dCk7CisgICAgICAgIHAtPnNldENsaXBQYXRoKG5l
d0NsaXAsIFF0OjpJbnRlcnNlY3RDbGlwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBRUmVjdCB3
aW5kb3dSZWN0ID0gcC0+dHJhbnNmb3JtKCkuaW52ZXJ0ZWQoKS5tYXBSZWN0KHAtPndpbmRvdygp
KTsKKyAgICAgICAgbmV3Q2xpcC5hZGRSZWN0KHdpbmRvd1JlY3QpOworICAgICAgICBuZXdDbGlw
LmFkZFBhdGgoY2xpcHBlZE91dC5pbnRlcnNlY3RlZChuZXdDbGlwKSk7CisgICAgICAgIHAtPnNl
dENsaXBQYXRoKG5ld0NsaXApOworICAgIH0KK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnRy
YW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZGF0YS0+cCgpLT50cmFuc2xhdGUoeCwgeSk7Cit9
CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWFucykKK3sKKyAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRVHJhbnNmb3Jt
IHJvdGF0aW9uID0gUVRyYW5zZm9ybSgpLnJvdGF0ZVJhZGlhbnMocmFkaWFucyk7CisgICAgbV9k
YXRhLT5wKCktPnNldFRyYW5zZm9ybShyb3RhdGlvbiwgdHJ1ZSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHMpCit7CisgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLT5wKCktPnNjYWxlKHMu
d2lkdGgoKSwgcy5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0
KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKKyAgICBRUGFp
bnRlclBhdGggbmV3Q2xpcDsKKyAgICBuZXdDbGlwLnNldEZpbGxSdWxlKFF0OjpPZGRFdmVuRmls
bCk7CisgICAgaWYgKHAtPmhhc0NsaXBwaW5nKCkpIHsKKyAgICAgICAgbmV3Q2xpcC5hZGRSZWN0
KG1fZGF0YS0+Y2xpcEJvdW5kaW5nUmVjdCgpKTsKKyAgICAgICAgbmV3Q2xpcC5hZGRSZWN0KFFS
ZWN0KHJlY3QpKTsKKyAgICAgICAgcC0+c2V0Q2xpcFBhdGgobmV3Q2xpcCwgUXQ6OkludGVyc2Vj
dENsaXApOworICAgIH0gZWxzZSB7CisgICAgICAgIFFSZWN0IGNsaXBPdXRSZWN0KHJlY3QpOwor
ICAgICAgICBRUmVjdCB3aW5kb3cgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3Qo
cC0+d2luZG93KCkpOworICAgICAgICBjbGlwT3V0UmVjdCAmPSB3aW5kb3c7CisgICAgICAgIG5l
d0NsaXAuYWRkUmVjdCh3aW5kb3cpOworICAgICAgICBuZXdDbGlwLmFkZFJlY3QoY2xpcE91dFJl
Y3QpOworICAgICAgICBwLT5zZXRDbGlwUGF0aChuZXdDbGlwKTsKKyAgICB9Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9kYXRhLT5wKCktPnNldFdvcmxkVHJhbnNmb3JtKHRyYW5zZm9ybSwgdHJ1ZSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0pCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9kYXRhLT5wKCktPnNldFdvcmxkVHJhbnNmb3JtKHRyYW5zZm9ybSk7Cit9CisKKyNp
ZiBFTkFCTEUoM0RfUkVOREVSSU5HKQorVHJhbnNmb3JtYXRpb25NYXRyaXggR3JhcGhpY3NDb250
ZXh0OjpnZXQzRFRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisKKyAgICByZXR1cm4g
cGxhdGZvcm1Db250ZXh0KCktPmNvbWJpbmVkVHJhbnNmb3JtKCk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0Ojpjb25jYXQzRFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGF0YS0+cCgpLT5zZXRXb3JsZFRyYW5zZm9ybSh0cmFuc2Zvcm0sIHRydWUp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0M0RUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEtPnAoKS0+c2V0V29ybGRUcmFuc2Zvcm0o
dHJhbnNmb3JtLCBmYWxzZSk7Cit9CisjZW5kaWYKKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit7CisgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhY29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOworICAgIFFQZW4gbmV3UGVuKHAtPnBl
bigpKTsKKyAgICBtX2RhdGEtPnNvbGlkQ29sb3Iuc2V0Q29sb3IoY29sb3IpOworICAgIG5ld1Bl
bi5zZXRCcnVzaChtX2RhdGEtPnNvbGlkQ29sb3IpOworICAgIHAtPnNldFBlbihuZXdQZW4pOwor
fQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VTdHlsZShTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKKyAgICBRUGVuIG5ld1Bl
bihwLT5wZW4oKSk7CisgICAgbmV3UGVuLnNldFN0eWxlKHRvUVBlblN0eWxlKHN0cm9rZVN0eWxl
KSk7CisgICAgcC0+c2V0UGVuKG5ld1Blbik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCit7CisgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFFQYWludGVyKiBwID0gbV9k
YXRhLT5wKCk7CisgICAgUVBlbiBuZXdQZW4ocC0+cGVuKCkpOworICAgIG5ld1Blbi5zZXRXaWR0
aEYodGhpY2tuZXNzKTsKKyAgICBwLT5zZXRQZW4obmV3UGVuKTsKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtRmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9y
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLT5zb2xpZENvbG9yLnNl
dENvbG9yKGNvbG9yKTsKKyAgICBtX2RhdGEtPnAoKS0+c2V0QnJ1c2gobV9kYXRhLT5zb2xpZENv
bG9yKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFs
aWFzKGJvb2wgZW5hYmxlKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2RhdGEtPnAoKS0+c2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFs
aWFzaW5nLCBlbmFibGUpOworfQorCisjaWYgT1MoV0lORE9XUykKKworSERDIEdyYXBoaWNzQ29u
dGV4dDo6Z2V0V2luZG93c0NvbnRleHQoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vbCBzdXBw
b3J0QWxwaGFCbGVuZCwgYm9vbCBtYXlDcmVhdGVCaXRtYXApCit7CisgICAgLy8gcGFpbnRpbmcg
dGhyb3VnaCBuYXRpdmUgSERDIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBwbHVnaW4sIHdoZXJlIG1h
eUNyZWF0ZUJpdG1hcCBpcyBhbHdheXMgdHJ1ZQorICAgIFFfQVNTRVJUKG1heUNyZWF0ZUJpdG1h
cCk7CisKKyAgICBpZiAoZHN0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgLy8gQ3JlYXRlIGEgYml0bWFwIERDIGluIHdoaWNoIHRvIGRyYXcuCisgICAgQklUTUFQSU5G
TyBiaXRtYXBJbmZvOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpU2l6ZSAgICAgICAgICA9
IHNpemVvZihCSVRNQVBJTkZPSEVBREVSKTsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVdp
ZHRoICAgICAgICAgPSBkc3RSZWN0LndpZHRoKCk7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIu
YmlIZWlnaHQgICAgICAgID0gZHN0UmVjdC5oZWlnaHQoKTsKKyAgICBiaXRtYXBJbmZvLmJtaUhl
YWRlci5iaVBsYW5lcyAgICAgICAgPSAxOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpQml0
Q291bnQgICAgICA9IDMyOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpQ29tcHJlc3Npb24g
ICA9IEJJX1JHQjsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVNpemVJbWFnZSAgICAgPSAw
OworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpWFBlbHNQZXJNZXRlciA9IDA7CisgICAgYml0
bWFwSW5mby5ibWlIZWFkZXIuYmlZUGVsc1Blck1ldGVyID0gMDsKKyAgICBiaXRtYXBJbmZvLmJt
aUhlYWRlci5iaUNsclVzZWQgICAgICAgPSAwOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJp
Q2xySW1wb3J0YW50ICA9IDA7CisKKyAgICB2b2lkKiBwaXhlbHMgPSAwOworICAgIEhCSVRNQVAg
Yml0bWFwID0gOjpDcmVhdGVESUJTZWN0aW9uKDAsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9S
UywgJnBpeGVscywgMCwgMCk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiAwOwor
CisgICAgSERDIGRpc3BsYXlEQyA9IDo6R2V0REMoMCk7CisgICAgSERDIGJpdG1hcERDID0gOjpD
cmVhdGVDb21wYXRpYmxlREMoZGlzcGxheURDKTsKKyAgICA6OlJlbGVhc2VEQygwLCBkaXNwbGF5
REMpOworCisgICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMsIGJpdG1hcCk7CisKKyAgICAvLyBG
aWxsIG91ciBidWZmZXIgd2l0aCBjbGVhciBpZiB3ZSdyZSBnb2luZyB0byBhbHBoYSBibGVuZC4K
KyAgICBpZiAoc3VwcG9ydEFscGhhQmxlbmQpIHsKKyAgICAgICAgQklUTUFQIGJtcEluZm87Cisg
ICAgICAgIEdldE9iamVjdChiaXRtYXAsIHNpemVvZihibXBJbmZvKSwgJmJtcEluZm8pOworICAg
ICAgICBpbnQgYnVmZmVyU2l6ZSA9IGJtcEluZm8uYm1XaWR0aEJ5dGVzICogYm1wSW5mby5ibUhl
aWdodDsKKyAgICAgICAgbWVtc2V0KGJtcEluZm8uYm1CaXRzLCAwLCBidWZmZXJTaXplKTsKKyAg
ICB9CisKKyNpZiAhT1MoV0lOQ0UpCisgICAgLy8gTWFrZSBzdXJlIHdlIGNhbiBkbyB3b3JsZCB0
cmFuc2Zvcm1zLgorICAgIFNldEdyYXBoaWNzTW9kZShiaXRtYXBEQywgR01fQURWQU5DRUQpOwor
CisgICAgLy8gQXBwbHkgYSB0cmFuc2xhdGlvbiB0byBvdXIgY29udGV4dCBzbyB0aGF0IHRoZSBk
cmF3aW5nIGRvbmUgd2lsbCBiZSBhdCAoMCwwKSBvZiB0aGUgYml0bWFwLgorICAgIFhGT1JNIHhm
b3JtOworICAgIHhmb3JtLmVNMTEgPSAxLjBmOworICAgIHhmb3JtLmVNMTIgPSAwLjBmOworICAg
IHhmb3JtLmVNMjEgPSAwLjBmOworICAgIHhmb3JtLmVNMjIgPSAxLjBmOworICAgIHhmb3JtLmVE
eCA9IC1kc3RSZWN0LngoKTsKKyAgICB4Zm9ybS5lRHkgPSAtZHN0UmVjdC55KCk7CisgICAgOjpT
ZXRXb3JsZFRyYW5zZm9ybShiaXRtYXBEQywgJnhmb3JtKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGJpdG1hcERDOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVsZWFzZVdpbmRvd3NDb250
ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9ydEFscGhhQmxl
bmQsIGJvb2wgbWF5Q3JlYXRlQml0bWFwKQoreworICAgIC8vIHBhaW50aW5nIHRocm91Z2ggbmF0
aXZlIEhEQyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgcGx1Z2luLCB3aGVyZSBtYXlDcmVhdGVCaXRt
YXAgaXMgYWx3YXlzIHRydWUKKyAgICBRX0FTU0VSVChtYXlDcmVhdGVCaXRtYXApOworCisgICAg
aWYgKGhkYykgeworCisgICAgICAgIGlmICghZHN0UmVjdC5pc0VtcHR5KCkpIHsKKworICAgICAg
ICAgICAgSEJJVE1BUCBiaXRtYXAgPSBzdGF0aWNfY2FzdDxIQklUTUFQPihHZXRDdXJyZW50T2Jq
ZWN0KGhkYywgT0JKX0JJVE1BUCkpOworICAgICAgICAgICAgQklUTUFQIGluZm87CisgICAgICAg
ICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXplb2YoaW5mbyksICZpbmZvKTsKKyAgICAgICAgICAg
IEFTU0VSVChpbmZvLmJtQml0c1BpeGVsID09IDMyKTsKKworICAgICAgICAgICAgUVBpeG1hcCBw
aXhtYXAgPSBxdF9waXhtYXBGcm9tV2luSEJJVE1BUChiaXRtYXAsIHN1cHBvcnRBbHBoYUJsZW5k
ID8gSEJpdG1hcFByZW11bHRpcGxpZWRBbHBoYSA6IEhCaXRtYXBOb0FscGhhKTsKKyAgICAgICAg
ICAgIG1fZGF0YS0+cCgpLT5kcmF3UGl4bWFwKGRzdFJlY3QsIHBpeG1hcCk7CisKKyAgICAgICAg
ICAgIDo6RGVsZXRlT2JqZWN0KGJpdG1hcCk7CisgICAgICAgIH0KKworICAgICAgICA6OkRlbGV0
ZURDKGhkYyk7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpCit7
CisgICAgbV9kYXRhLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gcXVhbGl0eTsKKworICAg
IHN3aXRjaCAocXVhbGl0eSkgeworICAgIGNhc2UgSW50ZXJwb2xhdGlvbk5vbmU6CisgICAgY2Fz
ZSBJbnRlcnBvbGF0aW9uTG93OgorICAgICAgICAvLyB1c2UgbmVhcmVzdC1uZWlnYm9yCisgICAg
ICAgIG1fZGF0YS0+cCgpLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFu
c2Zvcm0sIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEludGVycG9sYXRpb25N
ZWRpdW06CisgICAgY2FzZSBJbnRlcnBvbGF0aW9uSGlnaDoKKyAgICAgICAgLy8gdXNlIHRoZSBm
aWx0ZXIKKyAgICAgICAgbV9kYXRhLT5wKCktPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OlNtb290
aFBpeG1hcFRyYW5zZm9ybSwgdHJ1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJbnRl
cnBvbGF0aW9uRGVmYXVsdDoKKyAgICBkZWZhdWx0OgorICAgICAgICBtX2RhdGEtPnAoKS0+c2V0
UmVuZGVySGludChRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNmb3JtLCBtX2RhdGEtPmluaXRp
YWxTbW9vdGhQaXhtYXBUcmFuc2Zvcm1IaW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfTsKK30K
KworSW50ZXJwb2xhdGlvblF1YWxpdHkgR3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhLT5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6dGFrZU93bmVyc2hpcE9mUGxh
dGZvcm1Db250ZXh0KCkKK3sKKyAgICBtX2RhdGEtPnRha2VPd25lcnNoaXBPZlBsYXRmb3JtQ29u
dGV4dCgpOworfQorCit9CisKKy8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JY29uUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSWNvblF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iNmNjNjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSWNvblF0LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkljb24uaCIKKworI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPFFNaW1lRGF0YWJhc2U+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSWNvbjo6SWNvbigpCit7
Cit9CisKK0ljb246On5JY29uKCkKK3sKK30KKworLy8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8g
Q2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KK1Bhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3Jl
YXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCit7CisgICAg
aWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUU1pbWVU
eXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yRmlsZShmaWxlbmFtZXNb
MF0sIFFNaW1lRGF0YWJhc2U6Ok1hdGNoRXh0ZW5zaW9uKTsKKworICAgIFFTdHJpbmcgaWNvbk5h
bWUgPSBtaW1lVHlwZS5pY29uTmFtZSgpOworICAgIFFTdHJpbmcgZ2VuZXJpY0ljb25OYW1lID0g
bWltZVR5cGUuZ2VuZXJpY0ljb25OYW1lKCk7CisKKyAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggb25l
IG9mIHRocmVlIGNhc2VzOgorICAgIC8vIDEuIEFsbCB0aGUgZmlsZXMgaGF2ZSB0aGUgc2FtZSB0
eXBlLgorICAgIC8vIDIuIEFsbCB0aGUgZmlsZXMgYXJlIG9mIHRoZSBzYW1lIGdlbmVyaWMgdHlw
ZS4KKyAgICAvLyAzLiBUaGUgZmlsZXMgYXJlIG5vdCBldmVuIG9mIHRoZSBzYW1lIGdlbmVyaWMg
dHlwZS4KKyAgICBjb25zdCBpbnQgY291bnQgPSBmaWxlbmFtZXMuc2l6ZSgpOworICAgIGZvciAo
aW50IGkgPSAxOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBtaW1lVHlwZSA9IFFNaW1lRGF0
YWJhc2UoKS5taW1lVHlwZUZvckZpbGUoZmlsZW5hbWVzW2ldLCBRTWltZURhdGFiYXNlOjpNYXRj
aEV4dGVuc2lvbik7CisgICAgICAgIGlmIChpY29uTmFtZSAhPSBtaW1lVHlwZS5pY29uTmFtZSgp
KQorICAgICAgICAgICAgaWNvbk5hbWUuY2xlYXIoKTsKKyAgICAgICAgaWYgKGdlbmVyaWNJY29u
TmFtZSAhPSBtaW1lVHlwZS5nZW5lcmljSWNvbk5hbWUoKSkgeworICAgICAgICAgICAgZ2VuZXJp
Y0ljb25OYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIEZJWE1FOiBCeSBkZWZhdWx0LCBvbmx5IFgxMSB3aWxsIHN1cHBvcnQgdGhlbWVk
IGljb25zLgorICAgIFJlZlB0cjxJY29uPiBpY29uID0gYWRvcHRSZWYobmV3IEljb24pOworICAg
IGlmICghaWNvbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICBpY29uLT5tX2ljb24gPSBRSWNvbjo6
ZnJvbVRoZW1lKGljb25OYW1lLCBRSWNvbjo6ZnJvbVRoZW1lKGdlbmVyaWNJY29uTmFtZSkpOwor
ICAgIGVsc2UgaWYgKCFnZW5lcmljSWNvbk5hbWUuaXNFbXB0eSgpKQorICAgICAgICBpY29uLT5t
X2ljb24gPSBRSWNvbjo6ZnJvbVRoZW1lKGdlbmVyaWNJY29uTmFtZSk7CisKKyAgICBpZiAoaWNv
bi0+bV9pY29uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaWNvbi5y
ZWxlYXNlKCk7Cit9CisKK3ZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmIChtX2ljb24uaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faWNvbi5wYWludChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgcmVjdCk7Cit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YVF0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFRdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZjc4MmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGFR
dC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSW1hZ2UuaCIKKworI2lu
Y2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFFQaXhtYXA+CisKKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEludFNpemU7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJsaWM6CisgICAg
SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKworICAgIFFJbWFnZSB0b1FJbWFnZSgp
IGNvbnN0OworCisgICAgUVBpeG1hcCBtX3BpeG1hcDsKKyAgICBPd25QdHI8UVBhaW50ZXI+IG1f
cGFpbnRlcjsKKyAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlQnVmZmVyUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZi
MTNhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMCwwICsxLDM4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0
IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIK
KyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU3RpbGxJbWFnZVF0Lmgi
CisjaW5jbHVkZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpbmNsdWRlIDxRQnVm
ZmVyPgorI2luY2x1ZGUgPFFDb2xvcj4KKyNpbmNsdWRlIDxRSW1hZ2U+CisjaW5jbHVkZSA8UUlt
YWdlV3JpdGVyPgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFFQaXhtYXA+CisjaW5j
bHVkZSA8bWF0aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlQnVmZmVyRGF0YTo6
SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCisgICAgOiBtX3BpeG1hcChzaXpl
KQoreworICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9waXhtYXAuZmlsbChRQ29sb3IoUXQ6OnRyYW5zcGFyZW50KSk7CisKKyAgICBRUGFpbnRlciog
cGFpbnRlciA9IG5ldyBRUGFpbnRlcjsKKyAgICBtX3BhaW50ZXIgPSBhZG9wdFB0cihwYWludGVy
KTsKKworICAgIGlmICghcGFpbnRlci0+YmVnaW4oJm1fcGl4bWFwKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gU2luY2UgSW1hZ2VCdWZmZXIgaXMgdXNlZCBtYWlubHkgZm9yIENhbnZhcywg
ZXhwbGljaXRseSBpbml0aWFsaXplCisgICAgLy8gaXRzIHBhaW50ZXIncyBwZW4gYW5kIGJydXNo
IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgY2FudmFzIGRlZmF1bHRzCisgICAgLy8gTk9URToga2Vl
cCBpbiBzeW5jIHdpdGggQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZQorICAgIFFQZW4g
cGVuID0gcGFpbnRlci0+cGVuKCk7CisgICAgcGVuLnNldENvbG9yKFF0OjpibGFjayk7CisgICAg
cGVuLnNldFdpZHRoKDEpOworICAgIHBlbi5zZXRDYXBTdHlsZShRdDo6RmxhdENhcCk7CisgICAg
cGVuLnNldEpvaW5TdHlsZShRdDo6U3ZnTWl0ZXJKb2luKTsKKyAgICBwZW4uc2V0TWl0ZXJMaW1p
dCgxMCk7CisgICAgcGFpbnRlci0+c2V0UGVuKHBlbik7CisgICAgUUJydXNoIGJydXNoID0gcGFp
bnRlci0+YnJ1c2goKTsKKyAgICBicnVzaC5zZXRDb2xvcihRdDo6YmxhY2spOworICAgIHBhaW50
ZXItPnNldEJydXNoKGJydXNoKTsKKyAgICBwYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBh
aW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2VPdmVyKTsKKyAgICAKKyAgICBtX2ltYWdlID0g
U3RpbGxJbWFnZTo6Y3JlYXRlRm9yUmVuZGVyaW5nKCZtX3BpeG1hcCk7Cit9CisKK1FJbWFnZSBJ
bWFnZUJ1ZmZlckRhdGE6OnRvUUltYWdlKCkgY29uc3QKK3sKKyAgICBRUGFpbnRFbmdpbmUqIHBh
aW50RW5naW5lID0gbV9waXhtYXAucGFpbnRFbmdpbmUoKTsKKyAgICBpZiAoIXBhaW50RW5naW5l
IHx8IHBhaW50RW5naW5lLT50eXBlKCkgIT0gUVBhaW50RW5naW5lOjpSYXN0ZXIpCisgICAgICAg
IHJldHVybiBtX3BpeG1hcC50b0ltYWdlKCk7CisKKyAgICAvLyBRUmFzdGVyUGl4bWFwRGF0YTo6
dG9JbWFnZSgpIHdpbGwgZGVlcC1jb3B5IHRoZSBiYWNraW5nIFFJbWFnZSBpZiB0aGVyZSdzIGFu
IGFjdGl2ZSBRUGFpbnRlciBvbiBpdC4KKyAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywg
d2UgZG9uJ3Qgd2FudCB0aGF0IGhlcmUsIHNvIHdlIHRlbXBvcmFyaWx5IHJlZGlyZWN0IHRoZSBw
YWludCBlbmdpbmUuCisgICAgUVBhaW50RGV2aWNlKiBjdXJyZW50UGFpbnREZXZpY2UgPSBwYWlu
dEVuZ2luZS0+cGFpbnREZXZpY2UoKTsKKyAgICBwYWludEVuZ2luZS0+c2V0UGFpbnREZXZpY2Uo
MCk7CisgICAgUUltYWdlIGltYWdlID0gbV9waXhtYXAudG9JbWFnZSgpOworICAgIHBhaW50RW5n
aW5lLT5zZXRQYWludERldmljZShjdXJyZW50UGFpbnREZXZpY2UpOworICAgIHJldHVybiBpbWFn
ZTsKK30KKworSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZs
b2F0IC8qIHJlc29sdXRpb25TY2FsZSAqLywgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgYm9v
bCYgc3VjY2VzcykKKyAgICA6IG1fZGF0YShzaXplKQorICAgICwgbV9zaXplKHNpemUpCisgICAg
LCBtX2xvZ2ljYWxTaXplKHNpemUpCit7CisgICAgc3VjY2VzcyA9IG1fZGF0YS5tX3BhaW50ZXIg
JiYgbV9kYXRhLm1fcGFpbnRlci0+aXNBY3RpdmUoKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRl
eHQobV9kYXRhLm1fcGFpbnRlci5nZXQoKSkpOworfQorCitJbWFnZUJ1ZmZlcjo6fkltYWdlQnVm
ZmVyKCkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fZGF0YS5tX3BhaW50ZXItPmlzQWN0aXZlKCkpOworCisgICAg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKworUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZm
ZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlv
cikgY29uc3QKK3sKKyAgICBpZiAoY29weUJlaGF2aW9yID09IENvcHlCYWNraW5nU3RvcmUpCisg
ICAgICAgIHJldHVybiBTdGlsbEltYWdlOjpjcmVhdGUobV9kYXRhLm1fcGl4bWFwKTsKKworICAg
IHJldHVybiBTdGlsbEltYWdlOjpjcmVhdGVGb3JSZW5kZXJpbmcoJm1fZGF0YS5tX3BpeG1hcCk7
Cit9CisKK0JhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkK
K3sKKyAgICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7Cit9CisKK3ZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwKKyAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUpCit7CisgICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQo
KSkgeworICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIuICBJbiBv
cmRlciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRvIGNvcHkgdGhlIHNvdXJjZSBidWZmZXIg
Zmlyc3QuCisgICAgICAgIFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2lu
Z1N0b3JlKTsKKyAgICAgICAgZGVzdENvbnRleHQtPmRyYXdJbWFnZShjb3B5LmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAgfSBlbHNl
CisgICAgICAgIGRlc3RDb250ZXh0LT5kcmF3SW1hZ2UobV9kYXRhLm1faW1hZ2UuZ2V0KCksIHN0
eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpOworfQorCit2b2lkIElt
YWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRl
eHQoKSkgeworICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIuICBJ
biBvcmRlciBmb3IgdGhpcyB0byB3b3JrLCB3ZSBuZWVkIHRvIGNvcHkgdGhlIHNvdXJjZSBidWZm
ZXIgZmlyc3QuCisgICAgICAgIFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFj
a2luZ1N0b3JlKTsKKyAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIHNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVj
dCk7CisgICAgfSBlbHNlCisgICAgICAgIG1fZGF0YS5tX2ltYWdlLT5kcmF3UGF0dGVybihkZXN0
Q29udGV4dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHN0eWxlQ29sb3JTcGFj
ZSwgb3AsIGRlc3RSZWN0KTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZmxvYXRSZWN0KSBjb25zdAoreworICAg
IFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gbV9kYXRhLm1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgSW50UmVjdCByZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmbG9hdFJlY3QpOworICAgIFFQaXht
YXAgYWxwaGFNYXNrID0gKm5hdGl2ZUltYWdlOworCisgICAgY29udGV4dC0+cHVzaFRyYW5zcGFy
ZW5jeUxheWVySW50ZXJuYWwocmVjdCwgMS4wLCBhbHBoYU1hc2spOworfQorCit2b2lkIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxv
b2tVcFRhYmxlKQoreworICAgIGJvb2wgaXNQYWludGluZyA9IG1fZGF0YS5tX3BhaW50ZXItPmlz
QWN0aXZlKCk7CisgICAgaWYgKGlzUGFpbnRpbmcpCisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXIt
PmVuZCgpOworCisgICAgUUltYWdlIGltYWdlID0gbV9kYXRhLnRvUUltYWdlKCkuY29udmVydFRv
Rm9ybWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgQVNTRVJUKCFpbWFnZS5pc051bGwo
KSk7CisKKyAgICB1Y2hhciogYml0cyA9IGltYWdlLmJpdHMoKTsKKyAgICBjb25zdCBpbnQgYnl0
ZXNQZXJMaW5lID0gaW1hZ2UuYnl0ZXNQZXJMaW5lKCk7CisKKyAgICBmb3IgKGludCB5ID0gMDsg
eSA8IG1fc2l6ZS5oZWlnaHQoKTsgKyt5KSB7CisgICAgICAgIHF1aW50MzIqIHNjYW5MaW5lID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8cXVpbnQzMio+KGJpdHMgKyB5ICogYnl0ZXNQZXJMaW5lKTsK
KyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBtX3NpemUud2lkdGgoKTsgKyt4KSB7CisgICAg
ICAgICAgICBRUmdiJiBwaXhlbCA9IHNjYW5MaW5lW3hdOworICAgICAgICAgICAgcGl4ZWwgPSBx
UmdiYShsb29rVXBUYWJsZVtxUmVkKHBpeGVsKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvb2tVcFRhYmxlW3FHcmVlbihwaXhlbCldLAorICAgICAgICAgICAgICAgICAgICAgICAgICBs
b29rVXBUYWJsZVtxQmx1ZShwaXhlbCldLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxQWxw
aGEocGl4ZWwpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fZGF0YS5tX3BpeG1hcCA9IFFQ
aXhtYXA6OmZyb21JbWFnZShpbWFnZSk7CisKKyAgICBpZiAoaXNQYWludGluZykKKyAgICAgICAg
bV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCBjb3B5Q29sb3JUb1JHQkEoQ29sb3ImIGZyb20sIHVjaGFyKiB0bykKK3sKKyAg
ICAvLyBDb3B5IGZyb20gZW5kaWFuIGRlcGVuZGVudCAzMmJpdCBBUkdCIHRvIGVuZGlhbiBpbmRl
cGVuZGVudCBSR0JBODg4OC4KKyAgICB0b1swXSA9IGZyb20ucmVkKCk7CisgICAgdG9bMV0gPSBm
cm9tLmdyZWVuKCk7CisgICAgdG9bMl0gPSBmcm9tLmJsdWUoKTsKKyAgICB0b1szXSA9IGZyb20u
YWxwaGEoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvcHlSR0JBVG9Db2xvcihjb25zdCB1
Y2hhciogZnJvbSwgQ29sb3ImIHRvKQoreworICAgIC8vIENvcHkgZnJvbSBlbmRpYW4gaW5kZXBl
bmRlbnQgUkdCQTg4ODggdG8gZW5kaWFuIGRlcGVuZGVudCAzMmJpdCBBUkdCLgorICAgIHRvID0g
Q29sb3I6OmNyZWF0ZVVuY2hlY2tlZChmcm9tWzBdLCBmcm9tWzFdLCBmcm9tWzJdLCBmcm9tWzNd
KTsKK30KKwordGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+CitQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1h
Z2VCdWZmZXJEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgZmxv
YXQgYXJlYSA9IDQuMGYgKiByZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpOworICAgIGlmIChh
cmVhID4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVz
dWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgp
ICogcmVjdC5oZWlnaHQoKSAqIDQpOworICAgIHVjaGFyKiByZXN1bHREYXRhID0gcmVzdWx0LT5k
YXRhKCk7CisKKyAgICBpZiAocmVjdC54KCkgPCAwIHx8IHJlY3QueSgpIDwgMCB8fCByZWN0Lm1h
eFgoKSA+IHNpemUud2lkdGgoKSB8fCByZWN0Lm1heFkoKSA+IHNpemUuaGVpZ2h0KCkpCisgICAg
ICAgIHJlc3VsdC0+emVyb0ZpbGwoKTsKKworICAgIGludCBvcmlnaW54ID0gcmVjdC54KCk7Cisg
ICAgaW50IGRlc3R4ID0gMDsKKyAgICBpZiAob3JpZ2lueCA8IDApIHsKKyAgICAgICAgZGVzdHgg
PSAtb3JpZ2lueDsKKyAgICAgICAgb3JpZ2lueCA9IDA7CisgICAgfQorICAgIGludCBlbmR4ID0g
cmVjdC5tYXhYKCk7CisgICAgaWYgKGVuZHggPiBzaXplLndpZHRoKCkpCisgICAgICAgIGVuZHgg
PSBzaXplLndpZHRoKCk7CisgICAgaW50IG51bUNvbHVtbnMgPSBlbmR4IC0gb3JpZ2lueDsKKwor
ICAgIGludCBvcmlnaW55ID0gcmVjdC55KCk7CisgICAgaW50IGRlc3R5ID0gMDsKKyAgICBpZiAo
b3JpZ2lueSA8IDApIHsKKyAgICAgICAgZGVzdHkgPSAtb3JpZ2lueTsKKyAgICAgICAgb3JpZ2lu
eSA9IDA7CisgICAgfQorICAgIGludCBlbmR5ID0gcmVjdC5tYXhZKCk7CisgICAgaWYgKGVuZHkg
PiBzaXplLmhlaWdodCgpKQorICAgICAgICBlbmR5ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBpbnQg
bnVtUm93cyA9IGVuZHkgLSBvcmlnaW55OworCisgICAgY29uc3QgdW5zaWduZWQgZGVzdEJ5dGVz
UGVyUm93ID0gNCAqIHJlY3Qud2lkdGgoKTsKKworICAgIC8vIE5PVEU6IEZvciB1bm11bHRpcGxp
ZWQgZGF0YSwgd2UgdW5kbyB0aGUgcHJlbXVsdGlwbGljYXRpb24gYmVsb3cuCisgICAgUUltYWdl
IGltYWdlID0gaW1hZ2VEYXRhLnRvUUltYWdlKCkuY29udmVydFRvRm9ybWF0KFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKworICAgIEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkp
OworCisgICAgLy8gVGhlIENhbnZhcyAyRCBDb250ZXh0IGV4cGVjdHMgUkdCQSBvcmRlciwgd2hp
bGUgUXQgdXNlcyAzMmJpdCBRUmdiIChBUkdCL0JHUkEpLgorICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgbnVtUm93czsgKyt5KSB7CisgICAgICAgIC8vIFRoaXMgY2FzdCBhbmQgdGhlIGNhbGxzIGJl
bG93IHJlbGllcyBvbiBib3RoIFFSZ2IgYW5kIFdlYkNvcmU6OlJHQkEzMiBiZWluZyAzMmJpdCBB
UkdCLgorICAgICAgICBjb25zdCB1bnNpZ25lZCogc3JjUm93ID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCo+KGltYWdlLmNvbnN0U2NhbkxpbmUob3JpZ2lueSArIHkpKSArIG9yaWdp
bng7CisgICAgICAgIHVjaGFyKiBkZXN0Um93ID0gcmVzdWx0RGF0YSArIChkZXN0eSArIHkpICog
ZGVzdEJ5dGVzUGVyUm93ICsgZGVzdHggKiA0OworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IG51bUNvbHVtbnM7IHgrKywgc3JjUm93KyssIGRlc3RSb3cgKz0gNCkgeworICAgICAgICAgICAg
Q29sb3IgcGl4ZWxDb2xvcjsKKyAgICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlw
bGllZCkKKyAgICAgICAgICAgICAgICBwaXhlbENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoKnNyY1Jvdyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGl4ZWxD
b2xvciA9IENvbG9yKCpzcmNSb3cpOworICAgICAgICAgICAgY29weUNvbG9yVG9SR0JBKHBpeGVs
Q29sb3IsIGRlc3RSb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVy
OjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0
ZVN5c3RlbSkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4o
cmVjdCwgbV9kYXRhLCBtX3NpemUpOworfQorCitQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAoreworICAgIHJldHVybiBnZXRJbWFnZURhdGE8
UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOworfQorCit2b2lkIEltYWdlQnVm
ZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkq
IHNvdXJjZSwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSkKK3sKKyAg
ICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID4gMCk7CisgICAgQVNTRVJUKHNvdXJjZVJlY3Qu
aGVpZ2h0KCkgPiAwKTsKKworICAgIGludCBvcmlnaW54ID0gc291cmNlUmVjdC54KCk7CisgICAg
aW50IGRlc3R4ID0gZGVzdFBvaW50LngoKSArIHNvdXJjZVJlY3QueCgpOworICAgIEFTU0VSVChk
ZXN0eCA+PSAwKTsKKyAgICBBU1NFUlQoZGVzdHggPCBtX3NpemUud2lkdGgoKSk7CisgICAgQVNT
RVJUKG9yaWdpbnggPj0gMCk7CisgICAgQVNTRVJUKG9yaWdpbnggPD0gc291cmNlUmVjdC5tYXhY
KCkpOworCisgICAgaW50IGVuZHggPSBkZXN0UG9pbnQueCgpICsgc291cmNlUmVjdC5tYXhYKCk7
CisgICAgQVNTRVJUKGVuZHggPD0gbV9zaXplLndpZHRoKCkpOworCisgICAgaW50IG51bUNvbHVt
bnMgPSBlbmR4IC0gZGVzdHg7CisKKyAgICBpbnQgb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOwor
ICAgIGludCBkZXN0eSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKKyAgICBBU1NF
UlQoZGVzdHkgPj0gMCk7CisgICAgQVNTRVJUKGRlc3R5IDwgbV9zaXplLmhlaWdodCgpKTsKKyAg
ICBBU1NFUlQob3JpZ2lueSA+PSAwKTsKKyAgICBBU1NFUlQob3JpZ2lueSA8PSBzb3VyY2VSZWN0
Lm1heFkoKSk7CisKKyAgICBpbnQgZW5keSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0Lm1h
eFkoKTsKKyAgICBBU1NFUlQoZW5keSA8PSBtX3NpemUuaGVpZ2h0KCkpOworICAgIGludCBudW1S
b3dzID0gZW5keSAtIGRlc3R5OworCisgICAgY29uc3QgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cg
PSA0ICogc291cmNlU2l6ZS53aWR0aCgpOworCisgICAgLy8gTk9URTogRm9yIHVubXVsdGlwbGll
ZCBpbnB1dCBkYXRhLCB3ZSBkbyB0aGUgcHJlbXVsdGlwbGljYXRpb24gYmVsb3cuCisgICAgUUlt
YWdlIGltYWdlKG51bUNvbHVtbnMsIG51bVJvd3MsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVt
dWx0aXBsaWVkKTsKKworICAgIHVuc2lnbmVkKiBkZXN0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQqPihpbWFnZS5iaXRzKCkpOworICAgIGNvbnN0IHVjaGFyKiBzcmNEYXRhID0gc291
cmNlLT5kYXRhKCk7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewor
ICAgICAgICBjb25zdCB1Y2hhciogc3JjUm93ID0gc3JjRGF0YSArIChvcmlnaW55ICsgeSkgKiBz
cmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0OworICAgICAgICAvLyBUaGlzIGNhc3QgYW5kIHRo
ZSBjYWxscyBiZWxvdyByZWxpZXMgb24gYm90aCBRUmdiIGFuZCBXZWJDb3JlOjpSR0JBMzIgYmVp
bmcgMzJiaXQgQVJHQi4KKyAgICAgICAgdW5zaWduZWQqIGRlc3RSb3cgPSBkZXN0RGF0YSArIHkg
KiBudW1Db2x1bW5zOworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7IHgr
Kywgc3JjUm93ICs9IDQsIGRlc3RSb3crKykgeworICAgICAgICAgICAgQ29sb3IgcGl4ZWxDb2xv
cjsKKyAgICAgICAgICAgIGNvcHlSR0JBVG9Db2xvcihzcmNSb3csIHBpeGVsQ29sb3IpOworICAg
ICAgICAgICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKQorICAgICAgICAgICAgICAg
ICpkZXN0Um93ID0gcHJlbXVsdGlwbGllZEFSR0JGcm9tQ29sb3IocGl4ZWxDb2xvcik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgKmRlc3RSb3cgPSBwaXhlbENvbG9yLnJnYigp
OworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBpc1BhaW50aW5nID0gbV9kYXRhLm1fcGFp
bnRlci0+aXNBY3RpdmUoKTsKKyAgICBpZiAoIWlzUGFpbnRpbmcpCisgICAgICAgIG1fZGF0YS5t
X3BhaW50ZXItPmJlZ2luKCZtX2RhdGEubV9waXhtYXApOworICAgIGVsc2UgeworICAgICAgICBt
X2RhdGEubV9wYWludGVyLT5zYXZlKCk7CisKKyAgICAgICAgLy8gcHV0SW1hZ2VEYXRhKCkgc2hv
dWxkIGJlIHVuYWZmZWN0ZWQgYnkgcGFpbnRlciBzdGF0ZQorICAgICAgICBtX2RhdGEubV9wYWlu
dGVyLT5yZXNldFRyYW5zZm9ybSgpOworICAgICAgICBtX2RhdGEubV9wYWludGVyLT5zZXRPcGFj
aXR5KDEuMCk7CisgICAgICAgIG1fZGF0YS5tX3BhaW50ZXItPnNldENsaXBwaW5nKGZhbHNlKTsK
KyAgICB9CisKKyAgICBtX2RhdGEubV9wYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50
ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOworICAgIG1fZGF0YS5tX3BhaW50ZXItPmRyYXdJ
bWFnZShkZXN0eCwgZGVzdHksIGltYWdlKTsKKworICAgIGlmICghaXNQYWludGluZykKKyAgICAg
ICAgbV9kYXRhLm1fcGFpbnRlci0+ZW5kKCk7CisgICAgZWxzZQorICAgICAgICBtX2RhdGEubV9w
YWludGVyLT5yZXN0b3JlKCk7Cit9CisKK3N0YXRpYyBib29sIGVuY29kZUltYWdlKGNvbnN0IFFQ
aXhtYXAmIHBpeG1hcCwgY29uc3QgU3RyaW5nJiBmb3JtYXQsIGNvbnN0IGRvdWJsZSogcXVhbGl0
eSwgUUJ5dGVBcnJheSYgZGF0YSkKK3sKKyAgICBpbnQgY29tcHJlc3Npb25RdWFsaXR5ID0gMTAw
OworICAgIGlmIChxdWFsaXR5ICYmICpxdWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjAp
CisgICAgICAgIGNvbXByZXNzaW9uUXVhbGl0eSA9IHN0YXRpY19jYXN0PGludD4oKnF1YWxpdHkg
KiAxMDAgKyAwLjUpOworCisgICAgUUJ1ZmZlciBidWZmZXIoJmRhdGEpOworICAgIGJ1ZmZlci5v
cGVuKFFCdWZmZXI6OldyaXRlT25seSk7CisgICAgYm9vbCBzdWNjZXNzID0gcGl4bWFwLnNhdmUo
JmJ1ZmZlciwgZm9ybWF0LnV0ZjgoKS5kYXRhKCksIGNvbXByZXNzaW9uUXVhbGl0eSk7CisgICAg
YnVmZmVyLmNsb3NlKCk7CisKKyAgICByZXR1cm4gc3VjY2VzczsKK30KKworU3RyaW5nIEltYWdl
QnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBx
dWFsaXR5LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAoreworICAgIEFTU0VSVChNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwor
CisgICAgLy8gUUltYWdlV3JpdGVyIGRvZXMgbm90IHN1cHBvcnQgbWltZXR5cGVzLiBJdCBkb2Vz
IHN1cHBvcnQgUXQgaW1hZ2UgZm9ybWF0cyAocG5nLAorICAgIC8vIGdpZiwganBlZy4uLiwgeHBt
KSBzbyBza2lwIHRoZSBpbWFnZS8gdG8gZ2V0IHRoZSBRdCBpbWFnZSBmb3JtYXQgdXNlZCB0byBl
bmNvZGUKKyAgICAvLyB0aGUgbV9waXhtYXAgaW1hZ2UuCisKKyAgICBRQnl0ZUFycmF5IGRhdGE7
CisgICAgaWYgKCFlbmNvZGVJbWFnZShtX2RhdGEubV9waXhtYXAsIG1pbWVUeXBlLnN1YnN0cmlu
ZyhzaXplb2YgImltYWdlIiksIHF1YWxpdHksIGRhdGEpKQorICAgICAgICByZXR1cm4gImRhdGE6
LCI7CisKKyAgICByZXR1cm4gImRhdGE6IiArIG1pbWVUeXBlICsgIjtiYXNlNjQsIiArIGRhdGEu
dG9CYXNlNjQoKS5kYXRhKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hM2Y0NDY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCkBAIC0wLDAgKzEsMjgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEZyaWVkZW1hbm4gS2xlaW50IDxma2xlaW50
QHRyb2xsdGVjaC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyUXQuaCIK
KworI2luY2x1ZGUgPFF0Q29yZS9RQnVmZmVyPgorI2luY2x1ZGUgPFF0Q29yZS9RQnl0ZUFycmF5
PgorI2luY2x1ZGUgPFF0R3VpL1FJbWFnZVJlYWRlcj4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJbWFnZURlY29kZXJRdDo6SW1hZ2VEZWNvZGVyUXQoSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0Fu
aW1hdGlvbk5vbmUpCit7Cit9CisKK0ltYWdlRGVjb2RlclF0Ojp+SW1hZ2VEZWNvZGVyUXQoKQor
eworfQorCit2b2lkIEltYWdlRGVjb2RlclF0OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKGZhaWxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBObyBwcm9ncmVzc2l2ZSBsb2FkaW5nIHBvc3NpYmxlCisgICAgaWYgKCFh
bGxEYXRhUmVjZWl2ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhY2hlIG91ciBvd24g
bmV3IGRhdGEuCisgICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CisKKyAgICAvLyBXZSBleHBlY3QgdG8gYmUgb25seSBjYWxsZWQgb25jZSB3aXRoIGFsbERh
dGFSZWNlaXZlZAorICAgIEFTU0VSVCghbV9idWZmZXIpOworICAgIEFTU0VSVCghbV9yZWFkZXIp
OworCisgICAgLy8gQXR0ZW1wdCB0byBsb2FkIHRoZSBkYXRhCisgICAgUUJ5dGVBcnJheSBpbWFn
ZURhdGEgPSBRQnl0ZUFycmF5Ojpmcm9tUmF3RGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOworICAgIG1fYnVmZmVyID0gYWRvcHRQdHIobmV3IFFCdWZmZXIpOworICAgIG1fYnVm
ZmVyLT5zZXREYXRhKGltYWdlRGF0YSk7CisgICAgbV9idWZmZXItPm9wZW4oUUlPRGV2aWNlOjpS
ZWFkT25seSB8IFFJT0RldmljZTo6VW5idWZmZXJlZCk7CisgICAgbV9yZWFkZXIgPSBhZG9wdFB0
cihuZXcgUUltYWdlUmVhZGVyKG1fYnVmZmVyLmdldCgpLCBtX2Zvcm1hdCkpOworCisgICAgLy8g
VGhpcyB3aWxsIGZvcmNlIHRoZSBKUEVHIGRlY29kZXIgdG8gdXNlIEpEQ1RfSUZBU1QKKyAgICBt
X3JlYWRlci0+c2V0UXVhbGl0eSg0OSk7CisKKyAgICAvLyBRSW1hZ2VSZWFkZXIgb25seSBhbGxv
d3MgcmV0cmlldmluZyB0aGUgZm9ybWF0IGJlZm9yZSByZWFkaW5nIHRoZSBpbWFnZQorICAgIG1f
Zm9ybWF0ID0gbV9yZWFkZXItPmZvcm1hdCgpOworfQorCitib29sIEltYWdlRGVjb2RlclF0Ojpp
c1NpemVBdmFpbGFibGUoKQoreworICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFi
bGUoKSAmJiBtX3JlYWRlcikKKyAgICAgICAgaW50ZXJuYWxEZWNvZGVTaXplKCk7CisKKyAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKTsKK30KKworc2l6ZV90IEltYWdl
RGVjb2RlclF0OjpmcmFtZUNvdW50KCkKK3sKKyAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlz
RW1wdHkoKSAmJiBtX3JlYWRlcikgeworICAgICAgICBpZiAobV9yZWFkZXItPnN1cHBvcnRzQW5p
bWF0aW9uKCkpIHsKKyAgICAgICAgICAgIGludCBpbWFnZUNvdW50ID0gbV9yZWFkZXItPmltYWdl
Q291bnQoKTsKKworICAgICAgICAgICAgLy8gRml4dXAgZm9yIFF0IGRlY29kZXJzLi4uIGltYWdl
Q291bnQoKSBpcyB3cm9uZworICAgICAgICAgICAgLy8gYW5kIGp1bXBUb05leHRJbWFnZSBkb2Vz
IG5vdCB3b3JrIGVpdGhlci4uLiBzbworICAgICAgICAgICAgLy8gd2Ugd2lsbCBoYXZlIHRvIHBh
cnNlIGV2ZXJ5dGhpbmcuLi4KKyAgICAgICAgICAgIGlmICghaW1hZ2VDb3VudCkKKyAgICAgICAg
ICAgICAgICBmb3JjZUxvYWRFdmVyeXRoaW5nKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKGltYWdlQ291bnQpOworICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJl
bXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKKyAg
ICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZVswXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJl
bXVsdGlwbHlBbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKTsKK30KKworaW50IEltYWdlRGVjb2RlclF0OjpyZXBldGl0aW9uQ291
bnQoKSBjb25zdAoreworICAgIGlmIChtX3JlYWRlciAmJiBtX3JlYWRlci0+c3VwcG9ydHNBbmlt
YXRpb24oKSkKKyAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSBtX3JlYWRlci0+bG9vcENvdW50
KCk7CisgICAgcmV0dXJuIG1fcmVwZXRpdGlvbkNvdW50OworfQorCitTdHJpbmcgSW1hZ2VEZWNv
ZGVyUXQ6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKG1f
Zm9ybWF0LmNvbnN0RGF0YSgpLCBtX2Zvcm1hdC5sZW5ndGgoKSk7Cit9CisKK0ltYWdlRnJhbWUq
IEltYWdlRGVjb2RlclF0OjpmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KQoreworICAg
IC8vIEluIGNhc2UgdGhlIEltYWdlRGVjb2RlclF0IGdvdCByZWNyZWF0ZWQgd2UgZG9uJ3Qga25v
dworICAgIC8vIHlldCBob3cgbWFueSBpbWFnZXMgd2UgYXJlIGdvaW5nIHRvIGhhdmUgYW5kIG5l
ZWQgdG8KKyAgICAvLyBmaW5kIHRoYXQgb3V0IG5vdy4KKyAgICBzaXplX3QgY291bnQgPSBtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpOworICAgIGlmICghZmFpbGVkKCkgJiYgIWNvdW50KSB7Cisg
ICAgICAgIGludGVybmFsRGVjb2RlU2l6ZSgpOworICAgICAgICBjb3VudCA9IGZyYW1lQ291bnQo
KTsKKyAgICB9CisKKyAgICBpZiAoaW5kZXggPj0gY291bnQpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgSW1hZ2VGcmFtZSYgZnJhbWUgPSBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdOworICAg
IGlmIChmcmFtZS5zdGF0dXMoKSAhPSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlICYmIG1fcmVh
ZGVyKQorICAgICAgICBpbnRlcm5hbFJlYWRJbWFnZShpbmRleCk7CisgICAgcmV0dXJuICZmcmFt
ZTsKK30KKwordm9pZCBJbWFnZURlY29kZXJRdDo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCAvKmluZGV4Ki8pCit7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmludGVybmFsRGVjb2Rl
U2l6ZSgpCit7CisgICAgQVNTRVJUKG1fcmVhZGVyKTsKKworICAgIC8vIElmIHdlIGhhdmUgYSBR
U2l6ZSgpIHNvbWV0aGluZyBmYWlsZWQKKyAgICBRU2l6ZSBzaXplID0gbV9yZWFkZXItPnNpemUo
KTsKKyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2V0RmFpbGVkKCk7CisgICAg
ICAgIHJldHVybiBjbGVhclBvaW50ZXJzKCk7CisgICAgfQorCisgICAgc2V0U2l6ZShzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgdGFibGVz
IHNldCBieSBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnksCisgICAgLy8gYnV0IHRoZWlyIGRp
bWVuc2lvbnMgYXJlIHVzZWQgYnkgSW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKCkuCisgICAgcHJl
cGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgaWYgKG1fc2NhbGVkKQorICAgICAgICBt
X3JlYWRlci0+c2V0U2NhbGVkU2l6ZShzY2FsZWRTaXplKCkpOworfQorCit2b2lkIEltYWdlRGVj
b2RlclF0OjppbnRlcm5hbFJlYWRJbWFnZShzaXplX3QgZnJhbWVJbmRleCkKK3sKKyAgICBBU1NF
UlQobV9yZWFkZXIpOworCisgICAgaWYgKG1fcmVhZGVyLT5zdXBwb3J0c0FuaW1hdGlvbigpKQor
ICAgICAgICBtX3JlYWRlci0+anVtcFRvSW1hZ2UoZnJhbWVJbmRleCk7CisgICAgZWxzZSBpZiAo
ZnJhbWVJbmRleCkgeworICAgICAgICBzZXRGYWlsZWQoKTsKKyAgICAgICAgcmV0dXJuIGNsZWFy
UG9pbnRlcnMoKTsKKyAgICB9CisKKyAgICBpZiAoIWludGVybmFsSGFuZGxlQ3VycmVudEltYWdl
KGZyYW1lSW5kZXgpKQorICAgICAgc2V0RmFpbGVkKCk7CisKKyAgICAvLyBBdHRlbXB0IHRvIHJl
dHVybiBzb21lIG1lbW9yeQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9mcmFtZUJ1ZmZlckNh
Y2hlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGVbaV0uc3Rh
dHVzKCkgIT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjbGVhclBvaW50ZXJzKCk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyUXQ6
OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKHNpemVfdCBmcmFtZUluZGV4KQoreworICAgIElt
YWdlRnJhbWUqIGNvbnN0IGJ1ZmZlciA9ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbZnJhbWVJbmRleF07
CisgICAgUVNpemUgaW1hZ2VTaXplID0gbV9yZWFkZXItPnNjYWxlZFNpemUoKTsKKyAgICBpZiAo
aW1hZ2VTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgaW1hZ2VTaXplID0gbV9yZWFkZXItPnNpemUo
KTsKKworICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRSW1hZ2UgaW1hZ2Uo
cmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KGJ1ZmZlci0+Z2V0QWRkcigwLCAwKSksIGltYWdlU2l6
ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERh
dGEpICogaW1hZ2VTaXplLndpZHRoKCksIG1fcmVhZGVyLT5pbWFnZUZvcm1hdCgpKTsKKworICAg
IGJ1ZmZlci0+c2V0RHVyYXRpb24obV9yZWFkZXItPm5leHRJbWFnZURlbGF5KCkpOworICAgIG1f
cmVhZGVyLT5yZWFkKCZpbWFnZSk7CisKKyAgICAvLyBJbWFnZUZyYW1lIGV4cGVjdHMgQVJHQjMy
LgorICAgIGlmIChidWZmZXItPnByZW11bHRpcGx5QWxwaGEoKSkgeworICAgICAgICBpZiAoaW1h
Z2UuZm9ybWF0KCkgIT0gUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpCisgICAg
ICAgICAgICBpbWFnZSA9IGltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdC
MzJfUHJlbXVsdGlwbGllZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGltYWdlLmZvcm1h
dCgpICE9IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMikKKyAgICAgICAgICAgIGltYWdlID0gaW1hZ2Uu
Y29udmVydFRvRm9ybWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgfQorCisgICAgaWYg
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNoYXIqPihpbWFnZS5jb25zdEJpdHMoKSkgIT0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGJ1ZmZlci0+Z2V0QWRkcigwLCAwKSkpIHsKKyAg
ICAgICAgLy8gVGhlIGluLWJ1ZmZlciB3YXMgcmVwbGFjZWQgZHVyaW5nIGRlY29kaW5nIHdpdGgg
YW5vdGhlciwgc28gY29weSBpbnRvIGl0IG1hbnVhbGx5LgorICAgICAgICBtZW1jcHkoYnVmZmVy
LT5nZXRBZGRyKDAsIDApLCBpbWFnZS5jb25zdEJpdHMoKSwgIGltYWdlLmJ5dGVDb3VudCgpKTsK
KyAgICB9CisKKyAgICBpZiAoaW1hZ2UuaXNOdWxsKCkpIHsKKyAgICAgICAgZnJhbWVDb3VudCgp
OworICAgICAgICByZXBldGl0aW9uQ291bnQoKTsKKyAgICAgICAgY2xlYXJQb2ludGVycygpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYnVmZmVyLT5zZXRPcmlnaW5hbEZy
YW1lUmVjdChpbWFnZS5yZWN0KCkpOworICAgIGJ1ZmZlci0+c2V0SGFzQWxwaGEoaW1hZ2UuaGFz
QWxwaGFDaGFubmVsKCkpOworICAgIGJ1ZmZlci0+c2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1l
Q29tcGxldGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIFRoZSBRSW1hZ2VJT0hhbmRs
ZXIgaXMgbm90IGFibGUgdG8gdGVsbCB1cyBob3cgbWFueSBmcmFtZXMKKy8vIHdlIGhhdmUgYW5k
IHdlIG5lZWQgdG8gcGFyc2UgZXZlcnkgaW1hZ2UuIFdlIGRvIHRoaXMgYnkKKy8vIGluY3JlYXNp
bmcgdGhlIG1fZnJhbWVCdWZmZXJDYWNoZSBieSBvbmUgYW5kIHRyeSB0byBwYXJzZQorLy8gdGhl
IGltYWdlLiBXZSBzdG9wIHdoZW4gUUltYWdlOjpyZWFkIGZhaWxzIGFuZCB0aGVuIG5lZWQKKy8v
IHRvIHJlc2l6ZSB0aGUgbV9mcmFtZUJ1ZmZlckNhY2hlIHRvIHRoZSBmaW5hbCBzaXplIGFuZCB1
cGRhdGUKKy8vIHRoZSBmYWlsZWQgYml0LiBJZiB3ZSBmYWlsZWQgdG8gZGVjb2RlIHRoZSBmaXJz
dCBpbWFnZQorLy8gdGhlbiB3ZSB0cnVseSBmYWlsZWQgdG8gZGVjb2RlLCBvdGhlcndpc2Ugd2Un
cmUgT0suCisKKy8vIFRPRE86IERvIG5vdCBpbmNyZW1lbnQgdGhlIG1fZnJhbWVCdWZmZXJDYWNo
ZS5zaXplKCkgYnkgb25lIGJ1dCBtb3JlIHRoYW4gb25lCit2b2lkIEltYWdlRGVjb2RlclF0Ojpm
b3JjZUxvYWRFdmVyeXRoaW5nKCkKK3sKKyAgICBpbnQgaW1hZ2VDb3VudCA9IDA7CisKKyAgICBk
byB7CisgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoKytpbWFnZUNvdW50KTsKKyAg
ICB9IHdoaWxlIChpbnRlcm5hbEhhbmRsZUN1cnJlbnRJbWFnZShpbWFnZUNvdW50IC0gMSkpOwor
CisgICAgLy8gSWYgd2UgZmFpbGVkIGRlY29kaW5nIHRoZSBmaXJzdCBpbWFnZSB3ZSBhY3R1YWxs
eQorICAgIC8vIGhhdmUgbm8gaW1hZ2VzIGFuZCBuZWVkIHRvIHNldCB0aGUgZmFpbGVkIGJpdC4K
KyAgICAvLyBPdGhlcndpc2UsIHdlIHdhbnQgdG8gZm9yZ2V0IGFib3V0CisgICAgLy8gdGhlIGxh
c3QgYXR0ZW1wdCB0byBkZWNvZGUgYSBpbWFnZS4KKyAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVz
aXplKGltYWdlQ291bnQgLSAxKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJhbWVC
dWZmZXJDYWNoZS5zaXplKCk7ICsraSkKKyAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlW2ldLnNl
dFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKKyAgICBpZiAoaW1hZ2VDb3Vu
dCA9PSAxKQorICAgICAgc2V0RmFpbGVkKCk7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyUXQ6OmNs
ZWFyUG9pbnRlcnMoKQoreworICAgIG1fcmVhZGVyLmNsZWFyKCk7CisgICAgbV9idWZmZXIuY2xl
YXIoKTsKK30KKworUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1h
Z2UoKSBjb25zdAoreworICAgIFFJbWFnZTo6Rm9ybWF0IGZvcm1hdDsKKyAgICBpZiAobV9oYXNB
bHBoYSkKKyAgICAgICAgZm9ybWF0ID0gbV9wcmVtdWx0aXBseUFscGhhID8gIFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfQVJHQjMyOworICAgIGVs
c2UKKyAgICAgICAgZm9ybWF0ID0gUUltYWdlOjpGb3JtYXRfUkdCMzI7CisKKyAgICBRSW1hZ2Ug
aW1nKHJlaW50ZXJwcmV0X2Nhc3Q8dWNoYXIqPihtX2J5dGVzKSwgbV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSwgc2l6ZW9mKFBpeGVsRGF0YSkgKiBtX3NpemUud2lkdGgoKSwgZm9ybWF0
KTsKKworICAgIHJldHVybiBuZXcgUVBpeG1hcChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7Cit9
CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhhZTNiNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5oCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRnJpZWRlbWFubiBLbGVpbnQgPGZrbGVpbnRAdHJv
bGx0ZWNoLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlRGVjb2RlclF0X2gK
KyNkZWZpbmUgSW1hZ2VEZWNvZGVyUXRfaAorCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisj
aW5jbHVkZSA8UXRDb3JlL1FCdWZmZXI+CisjaW5jbHVkZSA8UXRDb3JlL1FIYXNoPgorI2luY2x1
ZGUgPFF0Q29yZS9RTGlzdD4KKyNpbmNsdWRlIDxRdEd1aS9RSW1hZ2VSZWFkZXI+CisjaW5jbHVk
ZSA8UXRHdWkvUVBpeG1hcD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisKK2NsYXNzIEltYWdlRGVj
b2RlclF0IDogcHVibGljIEltYWdlRGVjb2RlcgoreworcHVibGljOgorICAgIEltYWdlRGVjb2Rl
clF0KEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKKyAgICB+SW1hZ2VEZWNvZGVyUXQoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKKyAgICB2aXJ0dWFsIHNpemVfdCBmcmFt
ZUNvdW50KCk7CisgICAgdmlydHVhbCBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CisgICAg
dmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KTsKKwor
ICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKTsK
KworcHJpdmF0ZToKKyAgICBJbWFnZURlY29kZXJRdChjb25zdCBJbWFnZURlY29kZXJRdCYpOwor
ICAgIEltYWdlRGVjb2RlclF0ICZvcGVyYXRvcj0oY29uc3QgSW1hZ2VEZWNvZGVyUXQmKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGludGVybmFsRGVjb2RlU2l6ZSgpOworICAgIHZvaWQgaW50ZXJu
YWxSZWFkSW1hZ2Uoc2l6ZV90KTsKKyAgICBib29sIGludGVybmFsSGFuZGxlQ3VycmVudEltYWdl
KHNpemVfdCk7CisgICAgdm9pZCBmb3JjZUxvYWRFdmVyeXRoaW5nKCk7CisgICAgdm9pZCBjbGVh
clBvaW50ZXJzKCk7CisKK3ByaXZhdGU6CisgICAgUUJ5dGVBcnJheSBtX2Zvcm1hdDsKKyAgICBP
d25QdHI8UUJ1ZmZlcj4gbV9idWZmZXI7CisgICAgT3duUHRyPFFJbWFnZVJlYWRlcj4gbV9yZWFk
ZXI7CisgICAgbXV0YWJsZSBpbnQgbV9yZXBldGl0aW9uQ291bnQ7Cit9OworCisKKworfQorCisj
ZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzQ3ZmNiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5j
cHAKQEAgLTAsMCArMSwzNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRGlyayBNdWVs
bGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8
emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNpbW9uIEhhdXNtYW5uIDxoYXVz
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0
dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDEwIFNlbmNoYSwg
SW5jLgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNs
dWRlICJTaGFkb3dCbHVyLmgiCisjaW5jbHVkZSAiU3RpbGxJbWFnZVF0LmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2lu
Y2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxRSW1hZ2VSZWFkZXI+CisjaW5jbHVkZSA8UVBhaW50
ZXI+CisjaW5jbHVkZSA8UVBpeG1hcD4KKyNpbmNsdWRlIDxRUGl4bWFwQ2FjaGU+CisjaW5jbHVk
ZSA8UVRyYW5zZm9ybT4KKyNpbmNsdWRlIDxwcml2YXRlL3FoZXhzdHJpbmdfcC5oPgorCisjaW5j
bHVkZSA8bWF0aC5oPgorCisjaWYgT1MoV0lORE9XUykKK1FUX0JFR0lOX05BTUVTUEFDRQorUV9H
VUlfRVhQT1JUIFFQaXhtYXAgcXRfcGl4bWFwRnJvbVdpbkhCSVRNQVAoSEJJVE1BUCwgaW50IGhi
aXRtYXBGb3JtYXQgPSAwKTsKK1FUX0VORF9OQU1FU1BBQ0UKKyNlbmRpZgorCit0eXBlZGVmIFFI
YXNoPFFCeXRlQXJyYXksIFFQaXhtYXA+IFdlYkdyYXBoaWNIYXNoOworUV9HTE9CQUxfU1RBVElD
KFdlYkdyYXBoaWNIYXNoLCBfZ3JhcGhpY3MpCisKK3N0YXRpYyB2b2lkIGVhcmx5Q2xlYXJHcmFw
aGljcygpCit7CisgICAgX2dyYXBoaWNzKCktPmNsZWFyKCk7Cit9CisKK3N0YXRpYyBXZWJHcmFw
aGljSGFzaCogZ3JhcGhpY3MoKQoreworICAgIFdlYkdyYXBoaWNIYXNoKiBoYXNoID0gX2dyYXBo
aWNzKCk7CisKKyAgICBpZiAoaGFzaC0+aXNFbXB0eSgpKSB7CisKKyAgICAgICAgLy8gcHJldmVu
dCB+UVBpeG1hcCBydW5uaW5nIGFmdGVyIH5RQXBwbGljYXRpb24gKGxlYWtzIG5hdGl2ZSBwaXht
YXBzKQorICAgICAgICBxQWRkUG9zdFJvdXRpbmUoZWFybHlDbGVhckdyYXBoaWNzKTsKKworICAg
ICAgICAvLyBRV2ViU2V0dGluZ3M6Ok1pc3NpbmdJbWFnZUdyYXBoaWMKKyAgICAgICAgaGFzaC0+
aW5zZXJ0KCJtaXNzaW5nSW1hZ2UiLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVz
b3VyY2VzL21pc3NpbmdJbWFnZS5wbmciKSkpOworICAgICAgICAvLyBRV2ViU2V0dGluZ3M6Ok1p
c3NpbmdQbHVnaW5HcmFwaGljCisgICAgICAgIGhhc2gtPmluc2VydCgibnVsbFBsdWdpbiIsIFFQ
aXhtYXAoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvbnVsbFBsdWdpbi5wbmciKSkp
OworICAgICAgICAvLyBRV2ViU2V0dGluZ3M6OkRlZmF1bHRGcmFtZUljb25HcmFwaGljCisgICAg
ICAgIGhhc2gtPmluc2VydCgidXJsSWNvbiIsIFFQaXhtYXAoUUxhdGluMVN0cmluZygiOndlYmtp
dC9yZXNvdXJjZXMvdXJsSWNvbi5wbmciKSkpOworICAgICAgICAvLyBRV2ViU2V0dGluZ3M6OlRl
eHRBcmVhU2l6ZUdyaXBDb3JuZXJHcmFwaGljCisgICAgICAgIGhhc2gtPmluc2VydCgidGV4dEFy
ZWFSZXNpemVDb3JuZXIiLCBRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjp3ZWJraXQvcmVzb3VyY2Vz
L3RleHRBcmVhUmVzaXplQ29ybmVyLnBuZyIpKSk7CisgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6
RGVsZXRlQnV0dG9uR3JhcGhpYworICAgICAgICBoYXNoLT5pbnNlcnQoImRlbGV0ZUJ1dHRvbiIs
IFFQaXhtYXAoUUxhdGluMVN0cmluZygiOndlYmtpdC9yZXNvdXJjZXMvZGVsZXRlQnV0dG9uLnBu
ZyIpKSk7CisgICAgICAgIC8vIFFXZWJTZXR0aW5nczo6SW5wdXRTcGVlY2hCdXR0b25HcmFwaGlj
CisgICAgICAgIGhhc2gtPmluc2VydCgiaW5wdXRTcGVlY2giLCBRUGl4bWFwKFFMYXRpbjFTdHJp
bmcoIjp3ZWJraXQvcmVzb3VyY2VzL2lucHV0U3BlZWNoLnBuZyIpKSk7CisgICAgfQorCisgICAg
cmV0dXJuIGhhc2g7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGludG8g
V2ViS2l0CitzdGF0aWMgUVBpeG1hcCBsb2FkUmVzb3VyY2VQaXhtYXAoY29uc3QgY2hhciAqbmFt
ZSkKK3sKKyAgICByZXR1cm4gZ3JhcGhpY3MoKS0+dmFsdWUobmFtZSk7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkK
K3sKKyAgICBpZiAoY2xlYXJNZXRhZGF0YSkKKyAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxz
ZTsKKworICAgIGlmIChtX2ZyYW1lKSB7CisgICAgICAgIGRlbGV0ZSBtX2ZyYW1lOworICAgICAg
ICBtX2ZyYW1lID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKy8vIEltYWdlIENsYXNzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKworUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgcmV0dXJuIFN0aWxsSW1hZ2U6
OmNyZWF0ZShsb2FkUmVzb3VyY2VQaXhtYXAobmFtZSkpOworfQorCit2b2lkIEltYWdlOjpzZXRQ
bGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IFFQaXhtYXAmIHBpeG1hcCkK
K3sKKyAgICBXZWJHcmFwaGljSGFzaCogaCA9IGdyYXBoaWNzKCk7CisgICAgaWYgKHBpeG1hcC5p
c051bGwoKSkKKyAgICAgICAgaC0+cmVtb3ZlKG5hbWUpOworICAgIGVsc2UKKyAgICAgICAgaC0+
aW5zZXJ0KG5hbWUsIHBpeG1hcCk7Cit9CisKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgQmxlbmRNb2RlKQoreworICAgIFFQaXhtYXAqIGZyYW1lUGl4bWFwID0gbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lUGl4bWFwKSAvLyBJZiBpdCdzIHRv
byBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KKyAgICAgICAgcmV0dXJuOworCisj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBGbG9hdFJlY3QgdGls
ZVJlY3RBZGp1c3RlZCA9IGFkanVzdFNvdXJjZVJlY3RGb3JEb3duU2FtcGxpbmcodGlsZVJlY3Qs
IGZyYW1lUGl4bWFwLT5zaXplKCkpOworI2Vsc2UKKyAgICBGbG9hdFJlY3QgdGlsZVJlY3RBZGp1
c3RlZCA9IHRpbGVSZWN0OworI2VuZGlmCisKKyAgICAvLyBRdCBpbnRlcnByZXRzIDAgd2lkdGgv
aGVpZ2h0IGFzIGZ1bGwgd2lkdGgvaGVpZ2h0IHNvIGp1c3Qgc2hvcnQgY2lyY3VpdC4KKyAgICBR
UmVjdEYgZHIgPSBRUmVjdEYoZGVzdFJlY3QpLm5vcm1hbGl6ZWQoKTsKKyAgICBRUmVjdCB0ciA9
IFFSZWN0Rih0aWxlUmVjdEFkanVzdGVkKS50b1JlY3QoKS5ub3JtYWxpemVkKCk7CisgICAgaWYg
KCFkci53aWR0aCgpIHx8ICFkci5oZWlnaHQoKSB8fCAhdHIud2lkdGgoKSB8fCAhdHIuaGVpZ2h0
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQaXhtYXAgcGl4bWFwID0gKmZyYW1lUGl4bWFw
OworICAgIGlmICh0ci54KCkgfHwgdHIueSgpIHx8IHRyLndpZHRoKCkgIT0gcGl4bWFwLndpZHRo
KCkgfHwgdHIuaGVpZ2h0KCkgIT0gcGl4bWFwLmhlaWdodCgpKQorICAgICAgICBwaXhtYXAgPSBw
aXhtYXAuY29weSh0cik7CisKKyAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9y
ID0gY3R4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7CisKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oIXBpeG1hcC5oYXNBbHBoYSgpICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIg
PyBDb21wb3NpdGVDb3B5IDogb3ApOworCisgICAgUVBhaW50ZXIqIHAgPSBjdHh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsK
KworICAgIC8vIElmIHRoaXMgd291bGQgZHJhdyBtb3JlIHRoYW4gb25lIHNjYWxlZCB0aWxlLCB3
ZSBzY2FsZSB0aGUgcGl4bWFwIGZpcnN0IGFuZCB0aGVuIHVzZSB0aGUgcmVzdWx0IHRvIGRyYXcu
CisgICAgaWYgKHRyYW5zZm9ybS50eXBlKCkgPT0gUVRyYW5zZm9ybTo6VHhTY2FsZSkgeworICAg
ICAgICBRUmVjdEYgdGlsZVJlY3RJblRhcmdldENvb3JkcyA9ICh0cmFuc2Zvcm0gKiBRVHJhbnNm
b3JtKCkudHJhbnNsYXRlKHBoYXNlLngoKSwgcGhhc2UueSgpKSkubWFwUmVjdCh0cik7CisKKyAg
ICAgICAgYm9vbCB0aWxlV2lsbEJlUGFpbnRlZE9ubHlPbmNlID0gdGlsZVJlY3RJblRhcmdldENv
b3Jkcy5jb250YWlucyhkcik7CisgICAgICAgIGlmICghdGlsZVdpbGxCZVBhaW50ZWRPbmx5T25j
ZSkgeworICAgICAgICAgICAgUVNpemVGIHNjYWxlZFNpemUoZmxvYXQocGl4bWFwLndpZHRoKCkp
ICogdHJhbnNmb3JtLm0xMSgpLCBmbG9hdChwaXhtYXAuaGVpZ2h0KCkpICogdHJhbnNmb3JtLm0y
MigpKTsKKyAgICAgICAgICAgIFFQaXhtYXAgc2NhbGVkUGl4bWFwKHNjYWxlZFNpemUudG9TaXpl
KCkpOworICAgICAgICAgICAgaWYgKHBpeG1hcC5oYXNBbHBoYSgpKQorICAgICAgICAgICAgICAg
IHNjYWxlZFBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigmc2NhbGVkUGl4bWFwKTsKKyAgICAgICAgICAg
ICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2Rl
X1NvdXJjZSk7CisgICAgICAgICAgICAgICAgcGFpbnRlci5zZXRSZW5kZXJIaW50cyhwLT5yZW5k
ZXJIaW50cygpKTsKKyAgICAgICAgICAgICAgICBwYWludGVyLmRyYXdQaXhtYXAoUVJlY3QoMCwg
MCwgc2NhbGVkUGl4bWFwLndpZHRoKCksIHNjYWxlZFBpeG1hcC5oZWlnaHQoKSksIHBpeG1hcCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwaXhtYXAgPSBzY2FsZWRQaXhtYXA7CisgICAg
ICAgICAgICB0cmFuc2Zvcm0gPSBRVHJhbnNmb3JtOjpmcm9tVHJhbnNsYXRlKHRyYW5zZm9ybS5k
eCgpLCB0cmFuc2Zvcm0uZHkoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBUcmFuc2xh
dGUgdGhlIGNvb3JkaW5hdGVzIGFzIHBoYXNlIGlzIG5vdCBpbiB3b3JsZCBtYXRyaXggY29vcmRp
bmF0ZSBzcGFjZSBidXQgdGhlIHRpbGUgcmVjdCBvcmlnaW4gaXMuICovCisgICAgdHJhbnNmb3Jt
ICo9IFFUcmFuc2Zvcm0oKS50cmFuc2xhdGUocGhhc2UueCgpLCBwaGFzZS55KCkpOworICAgIHRy
YW5zZm9ybS50cmFuc2xhdGUodHIueCgpLCB0ci55KCkpOworCisgICAgUUJydXNoIGIocGl4bWFw
KTsKKyAgICBiLnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIHAtPmZpbGxSZWN0KGRyLCBi
KTsKKworICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsK
KworICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlk
RHJhdyh0aGlzKTsKK30KKworQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFQaXhtYXAqIHBpeG1h
cCwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAs
IG1fY3VycmVudEZyYW1lKDApCisgICAgLCBtX2ZyYW1lcygwKQorICAgICwgbV9mcmFtZVRpbWVy
KDApCisgICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKKyAgICAsIG1fcmVw
ZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCisgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUo
MCkKKyAgICAsIG1fZGVjb2RlZFNpemUoMCkKKyAgICAsIG1fZnJhbWVDb3VudCgxKQorICAgICwg
bV9pc1NvbGlkQ29sb3IoZmFsc2UpCisgICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNl
KQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwgbV9hbGxEYXRhUmVjZWl2
ZWQodHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0
cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAgIGludCB3aWR0aCA9IHBp
eG1hcC0+d2lkdGgoKTsKKyAgICBpbnQgaGVpZ2h0ID0gcGl4bWFwLT5oZWlnaHQoKTsKKyAgICBt
X2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6ZSA9IEludFNpemUo
d2lkdGgsIGhlaWdodCk7CisKKyAgICBtX2ZyYW1lcy5ncm93KDEpOworICAgIG1fZnJhbWVzWzBd
Lm1fZnJhbWUgPSBwaXhtYXA7CisgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IHBpeG1hcC0+
aGFzQWxwaGEoKTsKKyAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7CisgICAg
Y2hlY2tGb3JTb2xpZENvbG9yKCk7Cit9CisKK3ZvaWQgQml0bWFwSW1hZ2U6OmludmFsaWRhdGVQ
bGF0Zm9ybURhdGEoKQoreworfQorCitRUGl4bWFwKiBwcmVzY2FsZUltYWdlSWZSZXF1aXJlZChR
UGFpbnRlciogcGFpbnRlciwgUVBpeG1hcCogaW1hZ2UsIFFQaXhtYXAqIGJ1ZmZlciwgY29uc3Qg
UVJlY3RGJiBkZXN0UmVjdCwgUVJlY3RGKiBzcmNSZWN0KQoreworICAgIC8vIFRoZSBxdWFsaXR5
IG9mIGRvd24gc2NhbGluZyBhdCAwLjV4IGFuZCBiZWxvdyBpbiBRUGFpbnRlciBpcyBub3QgdmVy
eSBnb29kCisgICAgLy8gZHVlIHRvIHVzaW5nIGJpbGluZWFyIHNhbXBsaW5nLCBzbyBmb3IgaGln
aCBxdWFsaXR5IHNjYWxpbmcgd2UgbmVlZCB0bworICAgIC8vIHBlcmZvcm0gc2NhbGluZyBvdXJz
ZWx2ZXMuCisgICAgQVNTRVJUKGltYWdlKTsKKyAgICBBU1NFUlQocGFpbnRlcik7CisgICAgaWYg
KCEocGFpbnRlci0+cmVuZGVySGludHMoKSAmIFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zv
cm0pKQorICAgICAgICByZXR1cm4gaW1hZ2U7CisKKyAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IHBhaW50ZXItPmNvbWJpbmVkVHJhbnNmb3JtKCk7CisKKyAgICAvLyBQcmVzY2FsaW5nIHRyYW5z
Zm9ybXMgdGhhdCBkb2VzIG1vcmUgdGhhbiBzY2FsZSBvciB0cmFuc2xhdGUgaXMgbm90IHN1cHBv
cnRlZC4KKyAgICBpZiAodHJhbnNmb3JtLnR5cGUoKSA+IFFUcmFuc2Zvcm06OlR4U2NhbGUpCisg
ICAgICAgIHJldHVybiBpbWFnZTsKKworICAgIFFSZWN0RiB0cmFuc2Zvcm1lZERzdCA9IHRyYW5z
Zm9ybS5tYXBSZWN0KGRlc3RSZWN0KTsKKyAgICAvLyBPbmx5IHByZXNjYWxlIGlmIGRvd25zY2Fs
aW5nIHRvIDAuNXggb3IgbGVzcworICAgIGlmICh0cmFuc2Zvcm1lZERzdC53aWR0aCgpICogMiA+
IHNyY1JlY3QtPndpZHRoKCkgJiYgdHJhbnNmb3JtZWREc3QuaGVpZ2h0KCkgKiAyID4gc3JjUmVj
dC0+aGVpZ2h0KCkpCisgICAgICAgIHJldHVybiBpbWFnZTsKKworICAgIC8vIFRoaXMgbWF5IG5v
dCB3b3JrIHJpZ2h0IHdpdGggc3VicGl4ZWwgcG9zaXRpb25zLCBidXQgdGhhdCBjYW4gbm90IGN1
cnJlbnRseSBoYXBwZW4uCisgICAgUVJlY3QgcGl4ZWxTcmMgPSBzcmNSZWN0LT50b1JlY3QoKTsK
KyAgICBRU2l6ZSBzY2FsZWRTaXplID0gdHJhbnNmb3JtZWREc3Quc2l6ZSgpLnRvU2l6ZSgpOwor
CisgICAgUVN0cmluZyBrZXkgPSBRU3RyaW5nTGl0ZXJhbCgicXR3ZWJraXRfcHJlc2NhbGVkXyIp
CisgICAgICAgICUgSGV4U3RyaW5nPHFpbnQ2ND4oaW1hZ2UtPmNhY2hlS2V5KCkpCisgICAgICAg
ICUgSGV4U3RyaW5nPGludD4ocGl4ZWxTcmMueCgpKSAlIEhleFN0cmluZzxpbnQ+KHBpeGVsU3Jj
LnkoKSkKKyAgICAgICAgJSBIZXhTdHJpbmc8aW50PihwaXhlbFNyYy53aWR0aCgpKSAlIEhleFN0
cmluZzxpbnQ+KHBpeGVsU3JjLmhlaWdodCgpKQorICAgICAgICAlIEhleFN0cmluZzxpbnQ+KHNj
YWxlZFNpemUud2lkdGgoKSkgJSBIZXhTdHJpbmc8aW50PihzY2FsZWRTaXplLmhlaWdodCgpKTsK
KworICAgIGlmICghUVBpeG1hcENhY2hlOjpmaW5kKGtleSwgYnVmZmVyKSkgeworICAgICAgICBp
ZiAocGl4ZWxTcmMgIT0gaW1hZ2UtPnJlY3QoKSkKKyAgICAgICAgICAgICpidWZmZXIgPSBpbWFn
ZS0+Y29weShwaXhlbFNyYykuc2NhbGVkKHNjYWxlZFNpemUsIFF0OjpJZ25vcmVBc3BlY3RSYXRp
bywgUXQ6OlNtb290aFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
KmJ1ZmZlciA9IGltYWdlLT5zY2FsZWQoc2NhbGVkU2l6ZSwgUXQ6Oklnbm9yZUFzcGVjdFJhdGlv
LCBRdDo6U21vb3RoVHJhbnNmb3JtYXRpb24pOworICAgICAgICBRUGl4bWFwQ2FjaGU6Omluc2Vy
dChrZXksICpidWZmZXIpOworICAgIH0KKworICAgICpzcmNSZWN0ID0gUVJlY3RGKFFQb2ludEYo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKKy8vIERyYXdpbmcg
Um91dGluZXMKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQoreworICAgIFFSZWN0RiBub3JtYWxpemVkRHN0ID0gZHN0Lm5vcm1hbGl6ZWQoKTsKKyAg
ICBRUmVjdEYgbm9ybWFsaXplZFNyYyA9IHNyYy5ub3JtYWxpemVkKCk7CisKKyAgICBzdGFydEFu
aW1hdGlvbigpOworCisgICAgaWYgKG5vcm1hbGl6ZWRTcmMuaXNFbXB0eSgpIHx8IG5vcm1hbGl6
ZWREc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRUGl4bWFwKiBpbWFnZSA9
IG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG1heUZpbGxXaXRoU29saWRDb2xvcigpKSB7CisgICAgICAgIGZp
bGxXaXRoU29saWRDb2xvcihjdHh0LCBub3JtYWxpemVkRHN0LCBzb2xpZENvbG9yKCksIHN0eWxl
Q29sb3JTcGFjZSwgb3ApOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBub3JtYWxpemVkU3JjID0gYWRqdXN0U291
cmNlUmVjdEZvckRvd25TYW1wbGluZyhub3JtYWxpemVkU3JjLCBpbWFnZS0+c2l6ZSgpKTsKKyNl
bmRpZgorCisgICAgUVBpeG1hcCBwcmVzY2FsZWRCdWZmZXI7CisgICAgaW1hZ2UgPSBwcmVzY2Fs
ZUltYWdlSWZSZXF1aXJlZChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UsICZwcmVzY2Fs
ZWRCdWZmZXIsIG5vcm1hbGl6ZWREc3QsICZub3JtYWxpemVkU3JjKTsKKworICAgIENvbXBvc2l0
ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBjdHh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsK
KyAgICBCbGVuZE1vZGUgcHJldmlvdXNCbGVuZE1vZGUgPSBjdHh0LT5ibGVuZE1vZGVPcGVyYXRp
b24oKTsKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5oYXNBbHBoYSgp
ICYmIG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5v
cm1hbCA/IENvbXBvc2l0ZUNvcHkgOiBvcCwgYmxlbmRNb2RlKTsKKworICAgIGlmIChjdHh0LT5o
YXNTaGFkb3coKSkgeworICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhjdHh0LT5zdGF0ZSgpKTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hh
ZG93TGF5ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CisgICAgICAgIGlmIChzaGFkb3dDb250ZXh0
KSB7CisgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1h
cChub3JtYWxpemVkRHN0LCAqaW1hZ2UsIG5vcm1hbGl6ZWRTcmMpOworICAgICAgICAgICAgc2hh
ZG93LmVuZFNoYWRvd0xheWVyKGN0eHQpOworICAgICAgICB9CisgICAgfQorCisgICAgY3R4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKmltYWdlLCBub3Jt
YWxpemVkU3JjKTsKKworICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09w
ZXJhdG9yLCBwcmV2aW91c0JsZW5kTW9kZSk7CisKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQor
ICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Cit9CisKK3ZvaWQgQml0bWFw
SW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCit7CisgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxz
ZTsKKyAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKKworICAgIGlmIChmcmFtZUNv
dW50KCkgPiAxKQorICAgICAgICByZXR1cm47CisKKyAgICBRUGl4bWFwKiBmcmFtZVBpeG1hcCA9
IGZyYW1lQXRJbmRleCgwKTsKKyAgICBpZiAoIWZyYW1lUGl4bWFwIHx8IGZyYW1lUGl4bWFwLT53
aWR0aCgpICE9IDEgfHwgZnJhbWVQaXhtYXAtPmhlaWdodCgpICE9IDEpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKKyAgICBtX3NvbGlkQ29sb3IgPSBRQ29s
b3I6OmZyb21SZ2JhKGZyYW1lUGl4bWFwLT50b0ltYWdlKCkucGl4ZWwoMCwgMCkpOworfQorCisj
aWYgT1MoV0lORE9XUykKK1Bhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVh
dGUoSEJJVE1BUCBoQml0bWFwKQoreworICAgIFFQaXhtYXAqIHFQaXhtYXAgPSBuZXcgUVBpeG1h
cChxdF9waXhtYXBGcm9tV2luSEJJVE1BUChoQml0bWFwKSk7CisKKyAgICByZXR1cm4gQml0bWFw
SW1hZ2U6OmNyZWF0ZShxUGl4bWFwKTsKK30KKyNlbmRpZgorCit9CisKKworLy8gdmltOiB0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ludFBvaW50UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW50
UG9pbnRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkMzM2YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lu
dFBvaW50UXQuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
WmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisKKyNpbmNs
dWRlIDxRUG9pbnQ+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UG9pbnQ6OkludFBvaW50
KGNvbnN0IFFQb2ludCYgcCkKKyAgICA6IG1feChwLngoKSkKKyAgICAsIG1feShwLnkoKSkKK3sK
K30KKworSW50UG9pbnQ6Om9wZXJhdG9yIFFQb2ludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFQ
b2ludChtX3gsIG1feSk7Cit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ludFJlY3RRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbnRSZWN0UXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjYzE1M2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbnRSZWN0UXQuY3BwCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUu
b3JnPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKworI2luY2x1ZGUgPFFSZWN0PgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0ludFJlY3Q6OkludFJlY3QoY29uc3QgUVJlY3QmIHIpCisgICAgOiBt
X2xvY2F0aW9uKHIudG9wTGVmdCgpKQorICAgICwgbV9zaXplKHIud2lkdGgoKSwgci5oZWlnaHQo
KSkKK3sKK30KKworSW50UmVjdDo6b3BlcmF0b3IgUVJlY3QoKSBjb25zdAoreworICAgIHJldHVy
biBRUmVjdCh4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworfQorCit9CisKKy8vIHZpbTog
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbnRTaXplUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW50U2l6ZVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjJiZjM1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW50U2l6ZVF0LmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8UVNp
emU+CisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50
U2l6ZTo6SW50U2l6ZShjb25zdCBRU2l6ZSYgcikKKyAgICA6IG1fd2lkdGgoci53aWR0aCgpKQor
ICAgICwgbV9oZWlnaHQoci5oZWlnaHQoKSkKK3sKK30KKworSW50U2l6ZTo6b3BlcmF0b3IgUVNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBRU2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7Cit9CisK
K30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzZlYjU0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
Y3BwCkBAIC0wLDAgKzEsNjU5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCIKKworI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIK
KyNpbmNsdWRlICJXaWRnZXQuaCIKKworI2luY2x1ZGUgPFFNZWRpYVBsYXllckNvbnRyb2w+Cisj
aW5jbHVkZSA8UU1lZGlhU2VydmljZT4KKyNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+
CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWVKYXI+
CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1
ZGUgPFFQb2ludD4KKyNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRVGltZT4KKyNpbmNsdWRl
IDxRVGltZXI+CisjaW5jbHVkZSA8UVVybD4KKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8
cW1lZGlhbWV0YWRhdGEuaD4KKyNpbmNsdWRlIDxxbXVsdGltZWRpYS5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgInRleG1hcC9UZXh0dXJlTWFwcGVyLmgi
CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gTWVkaWFQbGF5ZXJQcml2
YXRlUXQ6OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTWVkaWFQbGF5ZXJQcml2YXRlUXQocGxheWVyKSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0cmFyKQoreworICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIDAsIDAsIDApOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4gJnN1cHBvcnRlZCkKK3sKKyAgICBRU3RyaW5n
TGlzdCB0eXBlcyA9IFFNZWRpYVBsYXllcjo6c3VwcG9ydGVkTWltZVR5cGVzKCk7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIFFTdHJpbmcg
bWltZSA9IHR5cGVzLmF0KGkpOworICAgICAgICBpZiAobWltZS5zdGFydHNXaXRoKFFTdHJpbmc6
OmZyb21MYXRpbjEoImF1ZGlvLyIpKSB8fCBtaW1lLnN0YXJ0c1dpdGgoUVN0cmluZzo6ZnJvbUxh
dGluMSgidmlkZW8vIikpKQorICAgICAgICAgICAgc3VwcG9ydGVkLmFkZChtaW1lKTsKKyAgICB9
Cit9CisKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFN0cmluZyYgY29kZWMsIGNvbnN0
IFVSTCYpCit7CisgICAgaWYgKCFtaW1lLnN0YXJ0c1dpdGgoImF1ZGlvLyIpICYmICFtaW1lLnN0
YXJ0c1dpdGgoInZpZGVvLyIpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3Vw
cG9ydGVkOworCisgICAgLy8gUGFyc2UgYW5kIHRyaW0gY29kZWNzLgorICAgIFFTdHJpbmcgY29k
ZWNTdHIgPSBjb2RlYzsKKyAgICBRU3RyaW5nTGlzdCBjb2RlY0xpc3QgPSBjb2RlY1N0ci5zcGxp
dChRTGF0aW4xQ2hhcignLCcpLCBRU3RyaW5nOjpTa2lwRW1wdHlQYXJ0cyk7CisgICAgUVN0cmlu
Z0xpc3QgY29kZWNMaXN0VHJpbW1lZDsKKyAgICBmb3JlYWNoIChjb25zdCBRU3RyaW5nJiBjb2Rl
Y1N0ck5vdFRyaW1tZWQsIGNvZGVjTGlzdCkgeworICAgICAgICBRU3RyaW5nIGNvZGVjU3RyVHJp
bW1lZCA9IGNvZGVjU3RyTm90VHJpbW1lZC50cmltbWVkKCk7CisgICAgICAgIGlmICghY29kZWNT
dHJUcmltbWVkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvZGVjTGlzdFRyaW1tZWQuYXBwZW5k
KGNvZGVjU3RyVHJpbW1lZCk7CisgICAgfQorCisgICAgaWYgKFFNZWRpYVBsYXllcjo6aGFzU3Vw
cG9ydChtaW1lLCBjb2RlY0xpc3RUcmltbWVkKSA+PSBRTXVsdGltZWRpYTo6UHJvYmFibHlTdXBw
b3J0ZWQpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisKKyAgICBy
ZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworfQorCitNZWRpYVBsYXllclByaXZh
dGVRdDo6TWVkaWFQbGF5ZXJQcml2YXRlUXQoTWVkaWFQbGF5ZXIqIHBsYXllcikKKyAgICA6IG1f
d2ViQ29yZVBsYXllcihwbGF5ZXIpCisgICAgLCBtX21lZGlhUGxheWVyKG5ldyBRTWVkaWFQbGF5
ZXIpCisgICAgLCBtX21lZGlhUGxheWVyQ29udHJvbCgwKQorICAgICwgbV9uZXR3b3JrU3RhdGUo
TWVkaWFQbGF5ZXI6OkVtcHR5KQorICAgICwgbV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZl
Tm90aGluZykKKyAgICAsIG1fY3VycmVudFNpemUoMCwgMCkKKyAgICAsIG1fbmF0dXJhbFNpemUo
UmVuZGVyVmlkZW86OmRlZmF1bHRTaXplKCkpCisgICAgLCBtX2lzU2Vla2luZyhmYWxzZSkKKyAg
ICAsIG1fY29tcG9zaXRlZChmYWxzZSkKKyAgICAsIG1fcHJlbG9hZChNZWRpYVBsYXllcjo6QXV0
bykKKyAgICAsIG1fYnl0ZXNMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3MoMCkKKyAgICAs
IG1fc3VwcHJlc3NOZXh0UGxheWJhY2tDaGFuZ2VkKGZhbHNlKQoreworICAgIG1fbWVkaWFQbGF5
ZXItPnNldFZpZGVvT3V0cHV0KHRoaXMpOworCisgICAgLy8gU2lnbmFsIEhhbmRsZXJzCisgICAg
Y29ubmVjdChtX21lZGlhUGxheWVyLCBTSUdOQUwobWVkaWFTdGF0dXNDaGFuZ2VkKFFNZWRpYVBs
YXllcjo6TWVkaWFTdGF0dXMpKSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1QobWVkaWFTdGF0dXND
aGFuZ2VkKFFNZWRpYVBsYXllcjo6TWVkaWFTdGF0dXMpKSk7CisgICAgY29ubmVjdChtX21lZGlh
UGxheWVyLCBTSUdOQUwoc3RhdGVDaGFuZ2VkKFFNZWRpYVBsYXllcjo6U3RhdGUpKSwKKyAgICAg
ICAgICAgIHRoaXMsIFNMT1Qoc3RhdGVDaGFuZ2VkKFFNZWRpYVBsYXllcjo6U3RhdGUpKSk7Cisg
ICAgY29ubmVjdChtX21lZGlhUGxheWVyLCBTSUdOQUwoZXJyb3IoUU1lZGlhUGxheWVyOjpFcnJv
cikpLAorICAgICAgICAgICAgdGhpcywgU0xPVChoYW5kbGVFcnJvcihRTWVkaWFQbGF5ZXI6OkVy
cm9yKSkpOworICAgIGNvbm5lY3QobV9tZWRpYVBsYXllciwgU0lHTkFMKGJ1ZmZlclN0YXR1c0No
YW5nZWQoaW50KSksCisgICAgICAgICAgICB0aGlzLCBTTE9UKGJ1ZmZlclN0YXR1c0NoYW5nZWQo
aW50KSkpOworICAgIGNvbm5lY3QobV9tZWRpYVBsYXllciwgU0lHTkFMKGR1cmF0aW9uQ2hhbmdl
ZChxaW50NjQpKSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1QoZHVyYXRpb25DaGFuZ2VkKHFpbnQ2
NCkpKTsKKyAgICBjb25uZWN0KG1fbWVkaWFQbGF5ZXIsIFNJR05BTChwb3NpdGlvbkNoYW5nZWQo
cWludDY0KSksCisgICAgICAgICAgICB0aGlzLCBTTE9UKHBvc2l0aW9uQ2hhbmdlZChxaW50NjQp
KSk7CisgICAgY29ubmVjdChtX21lZGlhUGxheWVyLCBTSUdOQUwodm9sdW1lQ2hhbmdlZChpbnQp
KSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1Qodm9sdW1lQ2hhbmdlZChpbnQpKSk7CisgICAgY29u
bmVjdChtX21lZGlhUGxheWVyLCBTSUdOQUwobXV0ZWRDaGFuZ2VkKGJvb2wpKSwKKyAgICAgICAg
ICAgIHRoaXMsIFNMT1QobXV0ZWRDaGFuZ2VkKGJvb2wpKSk7CisgICAgY29ubmVjdCh0aGlzLCBT
SUdOQUwoc3VyZmFjZUZvcm1hdENoYW5nZWQoY29uc3QgUVZpZGVvU3VyZmFjZUZvcm1hdCYpKSwK
KyAgICAgICAgICAgIHRoaXMsIFNMT1Qoc3VyZmFjZUZvcm1hdENoYW5nZWQoY29uc3QgUVZpZGVv
U3VyZmFjZUZvcm1hdCYpKSk7CisKKyAgICAvLyBHcmFiIHRoZSBwbGF5ZXIgY29udHJvbAorICAg
IGlmIChRTWVkaWFTZXJ2aWNlKiBzZXJ2aWNlID0gbV9tZWRpYVBsYXllci0+c2VydmljZSgpKSB7
CisgICAgICAgIG1fbWVkaWFQbGF5ZXJDb250cm9sID0gcW9iamVjdF9jYXN0PFFNZWRpYVBsYXll
ckNvbnRyb2wgKj4oCisgICAgICAgICAgICAgICAgc2VydmljZS0+cmVxdWVzdENvbnRyb2woUU1l
ZGlhUGxheWVyQ29udHJvbF9paWQpKTsKKyAgICB9Cit9CisKK01lZGlhUGxheWVyUHJpdmF0ZVF0
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUXQoKQoreworICAgIG1fbWVkaWFQbGF5ZXItPmRpc2Nvbm5l
Y3QodGhpcyk7CisgICAgbV9tZWRpYVBsYXllci0+c3RvcCgpOworICAgIG1fbWVkaWFQbGF5ZXIt
PnNldE1lZGlhKFFNZWRpYUNvbnRlbnQoKSk7CisKKyAgICBkZWxldGUgbV9tZWRpYVBsYXllcjsK
K30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVRdDo6aGFzVmlkZW8oKSBjb25zdAoreworICAg
IHJldHVybiBtX21lZGlhUGxheWVyLT5pc1ZpZGVvQXZhaWxhYmxlKCk7Cit9CisKK2Jvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlUXQ6Omhhc0F1ZGlvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkK
K3sKKyAgICBtX21lZGlhVXJsID0gdXJsOworCisgICAgLy8gUXRNdWx0aW1lZGlhIGRvZXMgbm90
IGhhdmUgYW4gQVBJIHRvIHRocm90dGxlIGxvYWRpbmcKKyAgICAvLyBzbyB3ZSBoYW5kbGUgdGhp
cyBvdXJzZWx2ZXMgYnkgZGVsYXlpbmcgdGhlIGxvYWQKKyAgICBpZiAobV9wcmVsb2FkID09IE1l
ZGlhUGxheWVyOjpOb25lKSB7CisgICAgICAgIG1fZGVsYXlpbmdMb2FkID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbW1pdExvYWQodXJsKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVRdDo6Y29tbWl0TG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICAv
LyBXZSBhcmUgbm93IGxvYWRpbmcKKyAgICBpZiAobV9uZXR3b3JrU3RhdGUgIT0gTWVkaWFQbGF5
ZXI6OkxvYWRpbmcpIHsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9h
ZGluZzsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7Cisg
ICAgfQorCisgICAgLy8gQW5kIHdlIGRvbid0IGhhdmUgYW55IGRhdGEgeWV0CisgICAgaWYgKG1f
cmVhZHlTdGF0ZSAhPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpIHsKKyAgICAgICAgbV9yZWFk
eVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworICAgICAgICBtX3dlYkNvcmVQbGF5
ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CisgICAgfQorCisgICAgVVJMIGtVcmwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOworICAgIGNvbnN0IFFVcmwgclVybCA9IGtVcmw7CisgICAgY29uc3QgUVN0
cmluZyBzY2hlbWUgPSByVXJsLnNjaGVtZSgpLnRvTG93ZXIoKTsKKworICAgIC8vIENvbnN0cnVj
dCB0aGUgbWVkaWEgY29udGVudCB3aXRoIGEgbmV0d29yayByZXF1ZXN0IGlmIHRoZSByZXNvdXJj
ZSBpcyBodHRwW3NdCisgICAgaWYgKHNjaGVtZSA9PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJodHRw
IikgfHwgc2NoZW1lID09IFFTdHJpbmc6OmZyb21MYXRpbjEoImh0dHBzIikpIHsKKyAgICAgICAg
UU5ldHdvcmtSZXF1ZXN0IHJlcXVlc3QgPSBRTmV0d29ya1JlcXVlc3QoclVybCk7CisKKyAgICAg
ICAgLy8gR3JhYiB0aGUgY3VycmVudCBkb2N1bWVudAorICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyT3du
aW5nRG9jdW1lbnQoKTsKKworICAgICAgICAvLyBHcmFiIHRoZSBmcmFtZSBhbmQgbmV0d29yayBt
YW5hZ2VyCisgICAgICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1l
KCkgOiAwOworICAgICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFt
ZS0+bG9hZGVyKCkgOiAwOworICAgICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIg
PSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpLT5uZXR3b3Jr
QWNjZXNzTWFuYWdlcigpIDogMDsKKworICAgICAgICBpZiAobWFuYWdlcikgeworICAgICAgICAg
ICAgLy8gU2V0IHRoZSBjb29raWVzCisgICAgICAgICAgICBRTmV0d29ya0Nvb2tpZUphciogamFy
ID0gbWFuYWdlci0+Y29va2llSmFyKCk7CisgICAgICAgICAgICBRTGlzdDxRTmV0d29ya0Nvb2tp
ZT4gY29va2llcyA9IGphci0+Y29va2llc0ZvclVybChyVXJsKTsKKworICAgICAgICAgICAgLy8g
RG9uJ3Qgc2V0IHRoZSBoZWFkZXIgaWYgdGhlcmUgYXJlIG5vIGNvb2tpZXMuCisgICAgICAgICAg
ICAvLyBUaGlzIHByZXZlbnRzIGEgd2FybmluZyBmcm9tIGJlaW5nIGVtaXR0ZWQuCisgICAgICAg
ICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0
SGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29va2llSGVhZGVyLCBRVmFyaWFudDo6ZnJvbVZhbHVl
KGNvb2tpZXMpKTsKKworICAgICAgICAgICAgLy8gU2V0IHRoZSByZWZmZXJlciwgYnV0IG5vdCB3
aGVuIHJlcXVlc3RpbmcgaW5zZWN1cmUgY29udGVudCBmcm9tIGEgc2VjdXJlIHBhZ2UKKyAgICAg
ICAgICAgIFFVcmwgZG9jdW1lbnRVcmwgPSBRVXJsKFFTdHJpbmcoZG9jdW1lbnQtPmRvY3VtZW50
VVJJKCkpKTsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudFVybC5zY2hlbWUoKS50b0xvd2VyKCkg
PT0gUVN0cmluZzo6ZnJvbUxhdGluMSgiaHR0cCIpIHx8IHNjaGVtZSA9PSBRU3RyaW5nOjpmcm9t
TGF0aW4xKCJodHRwcyIpKQorICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0UmF3SGVhZGVyKCJS
ZWZlcmVyIiwgZG9jdW1lbnRVcmwudG9FbmNvZGVkKCkpOworCisgICAgICAgICAgICAvLyBTZXQg
dGhlIHVzZXIgYWdlbnQKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0UmF3SGVhZGVyKCJVc2VyLUFn
ZW50IiwgZnJhbWVMb2FkZXItPnVzZXJBZ2VudChyVXJsKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIG1fbWVkaWFQbGF5ZXItPnNldE1lZGlhKFFNZWRpYUNvbnRlbnQocmVx
dWVzdCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgdGhl
IFVSTAorICAgICAgICBtX21lZGlhUGxheWVyLT5zZXRNZWRpYShRTWVkaWFDb250ZW50KHJVcmwp
KTsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGN1cnJlbnQgdm9sdW1lIGFuZCBtdXRlIHN0YXR1
cworICAgIC8vIFdlIGdldCB0aGVzZSBmcm9tIHRoZSBlbGVtZW50LCByYXRoZXIgdGhhbiB0aGUg
cGxheWVyLCBpbiBjYXNlIHdlIGhhdmUKKyAgICAvLyB0cmFuc2l0aW9uZWQgZnJvbSBhIG1lZGlh
IGVuZ2luZSB3aGljaCBkb2Vzbid0IHN1cHBvcnQgbXV0aW5nLCB0byBhIG1lZGlhCisgICAgLy8g
ZW5naW5lIHdoaWNoIGRvZXMuCisgICAgbV9tZWRpYVBsYXllci0+c2V0TXV0ZWQobV93ZWJDb3Jl
UGxheWVyLT5tdXRlZCgpKTsKKyAgICBtX21lZGlhUGxheWVyLT5zZXRWb2x1bWUoc3RhdGljX2Nh
c3Q8aW50PihtX3dlYkNvcmVQbGF5ZXItPnZvbHVtZSgpICogMTAwLjApKTsKKworICAgIC8vIERv
bid0IHNlbmQgUGxheWJhY2tDaGFuZ2VkIG5vdGlmaWNhdGlvbiBmb3IgcHJlLXJvbGwuCisgICAg
bV9zdXBwcmVzc05leHRQbGF5YmFja0NoYW5nZWQgPSB0cnVlOworCisgICAgLy8gU2V0dGluZyBh
IG1lZGlhIHNvdXJjZSB3aWxsIHN0YXJ0IGxvYWRpbmcgdGhlIG1lZGlhLCBidXQgd2UgbmVlZAor
ICAgIC8vIHRvIHByZS1yb2xsIGFzIHdlbGwgdG8gZ2V0IHZpZGVvIHNpemUtaGludHMgYW5kIGJ1
ZmZlci1zdGF0dXMKKyAgICBpZiAobV93ZWJDb3JlUGxheWVyLT5wYXVzZWQoKSkKKyAgICAgICAg
bV9tZWRpYVBsYXllci0+cGF1c2UoKTsKKyAgICBlbHNlCisgICAgICAgIG1fbWVkaWFQbGF5ZXIt
PnBsYXkoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6cmVzdW1lTG9hZCgpCit7
CisgICAgbV9kZWxheWluZ0xvYWQgPSBmYWxzZTsKKworICAgIGlmICghbV9tZWRpYVVybC5pc051
bGwoKSkKKyAgICAgICAgY29tbWl0TG9hZChtX21lZGlhVXJsKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVRdDo6Y2FuY2VsTG9hZCgpCit7CisgICAgbV9tZWRpYVBsYXllci0+c2V0TWVk
aWEoUU1lZGlhQ29udGVudCgpKTsKKyAgICB1cGRhdGVTdGF0ZXMoKTsKK30KKwordm9pZCBNZWRp
YVBsYXllclByaXZhdGVRdDo6cHJlcGFyZVRvUGxheSgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5
ZXItPm1lZGlhKCkuaXNOdWxsKCkgfHwgbV9kZWxheWluZ0xvYWQpCisgICAgICAgIHJlc3VtZUxv
YWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6cGxheSgpCit7CisgICAgaWYg
KG1fbWVkaWFQbGF5ZXItPnN0YXRlKCkgIT0gUU1lZGlhUGxheWVyOjpQbGF5aW5nU3RhdGUpCisg
ICAgICAgIG1fbWVkaWFQbGF5ZXItPnBsYXkoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVRdDo6cGF1c2UoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyLT5zdGF0ZSgpID09IFFNZWRp
YVBsYXllcjo6UGxheWluZ1N0YXRlKQorICAgICAgICBtX21lZGlhUGxheWVyLT5wYXVzZSgpOwor
fQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwYXVzZWQoKSBjb25zdAoreworICAgIHJl
dHVybiAobV9tZWRpYVBsYXllci0+c3RhdGUoKSAhPSBRTWVkaWFQbGF5ZXI6OlBsYXlpbmdTdGF0
ZSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnNlZWsoZmxvYXQgcG9zaXRpb24p
Cit7CisgICAgaWYgKCFtX21lZGlhUGxheWVyLT5pc1NlZWthYmxlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX21lZGlhUGxheWVyQ29udHJvbCAmJiAhbV9tZWRpYVBsYXllckNvbnRy
b2wtPmF2YWlsYWJsZVBsYXliYWNrUmFuZ2VzKCkuY29udGFpbnMocG9zaXRpb24gKiAxMDAwKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1NlZWtpbmcgPSB0cnVlOworICAgIG1fbWVkaWFQ
bGF5ZXItPnNldFBvc2l0aW9uKHN0YXRpY19jYXN0PHFpbnQ2ND4ocG9zaXRpb24gKiAxMDAwKSk7
Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnNlZWtpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBtX2lzU2Vla2luZzsKK30KKworZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OmR1
cmF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6Okhh
dmVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICBmbG9hdCBkdXJhdGlvbiA9
IG1fbWVkaWFQbGF5ZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmOworCisgICAgLy8gV2UgYXJlIHN0
cmVhbWluZworICAgIGlmIChkdXJhdGlvbiA8PSAwLjBmKQorICAgICAgICBkdXJhdGlvbiA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworCisgICAgcmV0dXJuIGR1cmF0
aW9uOworfQorCitmbG9hdCBNZWRpYVBsYXllclByaXZhdGVRdDo6Y3VycmVudFRpbWUoKSBjb25z
dAoreworICAgIHJldHVybiBtX21lZGlhUGxheWVyLT5wb3NpdGlvbigpIC8gMTAwMC4wZjsKK30K
KworUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVRdDo6YnVmZmVyZWQo
KSBjb25zdAoreworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCA9IFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOworCisgICAgaWYgKCFtX21lZGlhUGxheWVyQ29udHJvbCkKKyAgICAgICAgcmV0
dXJuIGJ1ZmZlcmVkOworCisgICAgUU1lZGlhVGltZVJhbmdlIHBsYXliYWNrUmFuZ2VzID0gbV9t
ZWRpYVBsYXllckNvbnRyb2wtPmF2YWlsYWJsZVBsYXliYWNrUmFuZ2VzKCk7CisKKyAgICBmb3Jl
YWNoIChjb25zdCBRTWVkaWFUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwsIHBsYXliYWNrUmFuZ2VzLmlu
dGVydmFscygpKSB7CisgICAgICAgIGZsb2F0IHJhbmdlTWluID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGludGVydmFsLnN0YXJ0KCkpIC8gMTAwMC4wZjsKKyAgICAgICAgZmxvYXQgcmFuZ2VNYXggPSBz
dGF0aWNfY2FzdDxmbG9hdD4oaW50ZXJ2YWwuZW5kKCkpIC8gMTAwMC4wZjsKKyAgICAgICAgYnVm
ZmVyZWQtPmFkZChyYW5nZU1pbiwgcmFuZ2VNYXgpOworICAgIH0KKworICAgIHJldHVybiBidWZm
ZXJlZC5yZWxlYXNlKCk7Cit9CisKK2Zsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjptYXhUaW1l
U2Vla2FibGUoKSBjb25zdAoreworICAgIGlmICghbV9tZWRpYVBsYXllckNvbnRyb2wpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX21lZGlhUGxh
eWVyQ29udHJvbC0+YXZhaWxhYmxlUGxheWJhY2tSYW5nZXMoKS5sYXRlc3RUaW1lKCkpIC8gMTAw
MC4wZjsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVRdDo6ZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCA9IDA7CisgICAgUUxhdGluMVN0
cmluZyBieXRlc0xvYWRlZEtleSgiYnl0ZXMtbG9hZGVkIik7CisgICAgaWYgKG1fbWVkaWFQbGF5
ZXItPmF2YWlsYWJsZU1ldGFEYXRhKCkuY29udGFpbnMoYnl0ZXNMb2FkZWRLZXkpKQorICAgICAg
ICBieXRlc0xvYWRlZCA9IG1fbWVkaWFQbGF5ZXItPm1ldGFEYXRhKGJ5dGVzTG9hZGVkS2V5KS50
b0ludCgpOworICAgIGVsc2UKKyAgICAgICAgYnl0ZXNMb2FkZWQgPSBtX21lZGlhUGxheWVyLT5i
dWZmZXJTdGF0dXMoKTsKKyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcyA9IGJ5dGVzTG9hZGVk
ICE9IG1fYnl0ZXNMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7CisgICAgbV9ieXRlc0xv
YWRlZEF0TGFzdERpZExvYWRpbmdQcm9ncmVzcyA9IGJ5dGVzTG9hZGVkOworICAgIHJldHVybiBk
aWRMb2FkaW5nUHJvZ3Jlc3M7Cit9CisKK3Vuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZVF0Ojp0
b3RhbEJ5dGVzKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllci0+YXZhaWxhYmxlTWV0
YURhdGEoKS5jb250YWlucyhRTWVkaWFNZXRhRGF0YTo6U2l6ZSkpCisgICAgICAgIHJldHVybiBt
X21lZGlhUGxheWVyLT5tZXRhRGF0YShRTWVkaWFNZXRhRGF0YTo6U2l6ZSkudG9JbnQoKTsKKwor
ICAgIHJldHVybiAxMDA7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnNldFByZWxv
YWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKK3sKKyAgICBtX3ByZWxvYWQgPSBwcmVs
b2FkOworICAgIGlmIChtX2RlbGF5aW5nTG9hZCAmJiBtX3ByZWxvYWQgIT0gTWVkaWFQbGF5ZXI6
Ok5vbmUpCisgICAgICAgIHJlc3VtZUxvYWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVRdDo6c2V0UmF0ZShmbG9hdCByYXRlKQoreworICAgIG1fbWVkaWFQbGF5ZXItPnNldFBsYXli
YWNrUmF0ZShyYXRlKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6c2V0Vm9sdW1l
KGZsb2F0IHZvbHVtZSkKK3sKKyAgICBtX21lZGlhUGxheWVyLT5zZXRWb2x1bWUoc3RhdGljX2Nh
c3Q8aW50Pih2b2x1bWUgKiAxMDAuMCkpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF0
OjpzdXBwb3J0c011dGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnNldE11dGVkKGJvb2wgbXV0ZWQpCit7CisgICAgbV9tZWRp
YVBsYXllci0+c2V0TXV0ZWQobXV0ZWQpOworfQorCitNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpuZXR3b3JrU3RhdGUoKSBjb25zdAoreworICAgIHJldHVy
biBtX25ldHdvcmtTdGF0ZTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5
ZXJQcml2YXRlUXQ6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlYWR5U3Rh
dGU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnNldFZpc2libGUoYm9vbCkKK3sK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6bWVkaWFTdGF0dXNDaGFuZ2VkKFFNZWRp
YVBsYXllcjo6TWVkaWFTdGF0dXMpCit7CisgICAgdXBkYXRlU3RhdGVzKCk7Cit9CisKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OmhhbmRsZUVycm9yKFFNZWRpYVBsYXllcjo6RXJyb3IpCit7
CisgICAgdXBkYXRlU3RhdGVzKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnN0
YXRlQ2hhbmdlZChRTWVkaWFQbGF5ZXI6OlN0YXRlKQoreworICAgIGlmICghbV9zdXBwcmVzc05l
eHRQbGF5YmFja0NoYW5nZWQpCisgICAgICAgIG1fd2ViQ29yZVBsYXllci0+cGxheWJhY2tTdGF0
ZUNoYW5nZWQoKTsKKyAgICBlbHNlCisgICAgICAgIG1fc3VwcHJlc3NOZXh0UGxheWJhY2tDaGFu
Z2VkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnN1cmZhY2VGb3Jt
YXRDaGFuZ2VkKGNvbnN0IFFWaWRlb1N1cmZhY2VGb3JtYXQmIGZvcm1hdCkKK3sKKyAgICBRU2l6
ZSBzaXplID0gZm9ybWF0LnNpemVIaW50KCk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6Om5hdHVyYWxTaXplQ2hhbmdlZCglZHglZCkiLAorICAgICAgICAgICAgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIGlmICghc2l6ZS5pc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEludFNpemUgd2ViQ29yZVNpemUgPSBzaXplOworICAgIGlmICh3
ZWJDb3JlU2l6ZSA9PSBtX25hdHVyYWxTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25h
dHVyYWxTaXplID0gd2ViQ29yZVNpemU7CisgICAgbV93ZWJDb3JlUGxheWVyLT5zaXplQ2hhbmdl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0Ojpwb3NpdGlvbkNoYW5nZWQocWlu
dDY0KQoreworICAgIC8vIE9ubHkgcHJvcGFnYXRlIHRoaXMgZXZlbnQgaWYgd2UgYXJlIHNlZWtp
bmcKKyAgICBpZiAobV9pc1NlZWtpbmcpIHsKKyAgICAgICAgbV9pc1NlZWtpbmcgPSBmYWxzZTsK
KyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT50aW1lQ2hhbmdlZCgpOworICAgIH0KK30KKwordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRdDo6YnVmZmVyU3RhdHVzQ2hhbmdlZChpbnQpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6ZHVyYXRp
b25DaGFuZ2VkKHFpbnQ2NCkKK3sKKyAgICBtX3dlYkNvcmVQbGF5ZXItPmR1cmF0aW9uQ2hhbmdl
ZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0Ojp2b2x1bWVDaGFuZ2VkKGludCB2
b2x1bWUpCit7CisgICAgbV93ZWJDb3JlUGxheWVyLT52b2x1bWVDaGFuZ2VkKHN0YXRpY19jYXN0
PGZsb2F0Pih2b2x1bWUpIC8gMTAwLjApOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0
OjptdXRlZENoYW5nZWQoYm9vbCBtdXRlZCkKK3sKKyAgICBtX3dlYkNvcmVQbGF5ZXItPm11dGVD
aGFuZ2VkKG11dGVkKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6dXBkYXRlU3Rh
dGVzKCkKK3sKKyAgICAvLyBTdG9yZSB0aGUgb2xkIHN0YXRlcyBzbyB0aGF0IHdlIGNhbiBkZXRl
Y3QgYSBjaGFuZ2UgYW5kIHJhaXNlIGNoYW5nZSBldmVudHMKKyAgICBNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlIG9sZE5ldHdvcmtTdGF0ZSA9IG1fbmV0d29ya1N0YXRlOworICAgIE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlIG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CisKKyAgICBRTWVk
aWFQbGF5ZXI6Ok1lZGlhU3RhdHVzIGN1cnJlbnRTdGF0dXMgPSBtX21lZGlhUGxheWVyLT5tZWRp
YVN0YXR1cygpOworICAgIFFNZWRpYVBsYXllcjo6RXJyb3IgY3VycmVudEVycm9yID0gbV9tZWRp
YVBsYXllci0+ZXJyb3IoKTsKKworICAgIGlmIChjdXJyZW50RXJyb3IgIT0gUU1lZGlhUGxheWVy
OjpOb0Vycm9yKSB7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90
aGluZzsKKyAgICAgICAgaWYgKGN1cnJlbnRFcnJvciA9PSBRTWVkaWFQbGF5ZXI6OkZvcm1hdEVy
cm9yIHx8IGN1cnJlbnRFcnJvciA9PSBRTWVkaWFQbGF5ZXI6OlJlc291cmNlRXJyb3IpCisgICAg
ICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcjsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29y
a0Vycm9yOworICAgIH0gZWxzZSBpZiAoY3VycmVudFN0YXR1cyA9PSBRTWVkaWFQbGF5ZXI6OlVu
a25vd25NZWRpYVN0YXR1cworICAgICAgICAgICAgICAgfHwgY3VycmVudFN0YXR1cyA9PSBRTWVk
aWFQbGF5ZXI6Ok5vTWVkaWEpIHsKKyAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXll
cjo6SWRsZTsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5n
OworICAgIH0gZWxzZSBpZiAoY3VycmVudFN0YXR1cyA9PSBRTWVkaWFQbGF5ZXI6OkxvYWRpbmdN
ZWRpYSkgeworICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwor
ICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CisgICAgfSBl
bHNlIGlmIChjdXJyZW50U3RhdHVzID09IFFNZWRpYVBsYXllcjo6TG9hZGVkTWVkaWEpIHsKKyAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKKyAgICAgICAgbV9y
ZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsKKyAgICB9IGVsc2UgaWYgKGN1
cnJlbnRTdGF0dXMgPT0gUU1lZGlhUGxheWVyOjpCdWZmZXJpbmdNZWRpYSkgeworICAgICAgICBt
X25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICBtX3JlYWR5U3Rh
dGUgPSBNZWRpYVBsYXllcjo6SGF2ZUZ1dHVyZURhdGE7CisgICAgfSBlbHNlIGlmIChjdXJyZW50
U3RhdHVzID09IFFNZWRpYVBsYXllcjo6U3RhbGxlZE1lZGlhKSB7CisgICAgICAgIG1fbmV0d29y
a1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1l
ZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CisgICAgfSBlbHNlIGlmIChjdXJyZW50U3RhdHVz
ID09IFFNZWRpYVBsYXllcjo6QnVmZmVyZWRNZWRpYQorICAgICAgICAgICAgICAgfHwgY3VycmVu
dFN0YXR1cyA9PSBRTWVkaWFQbGF5ZXI6OkVuZE9mTWVkaWEpIHsKKyAgICAgICAgbV9uZXR3b3Jr
U3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CisgICAgfSBlbHNlIGlmIChjdXJyZW50U3RhdHVzID09
IFFNZWRpYVBsYXllcjo6SW52YWxpZE1lZGlhKSB7CisgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9yOworICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBs
YXllcjo6SGF2ZU5vdGhpbmc7CisgICAgfQorCisgICAgLy8gTG9nIHRoZSBzdGF0ZSBjaGFuZ2Vz
IGFuZCByYWlzZSB0aGUgc3RhdGUgY2hhbmdlIGV2ZW50cworICAgIC8vIE5COiBUaGUgcmVhZHlT
dGF0ZUNoYW5nZWQgZXZlbnQgbXVzdCBjb21lIGJlZm9yZSB0aGUgbmV0d29ya1N0YXRlQ2hhbmdl
ZCBldmVudC4KKyAgICAvLyBCcmVha2luZyB0aGlzIGludmFyaWFudCB3aWxsIGNhdXNlIHRoZSBy
ZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtIGZvciBtdWx0aXBsZQorICAgIC8vIHNvdXJjZXMg
dG8gZmFpbC4KKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IG9sZFJlYWR5U3RhdGUpCisgICAgICAg
IG1fd2ViQ29yZVBsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKKworICAgIGlmIChtX25ldHdv
cmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUpCisgICAgICAgIG1fd2ViQ29yZVBsYXllci0+bmV0
d29ya1N0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpzZXRT
aXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6OnNldFNpemUoJWR4JWQpIiwKKyAgICAgICAgICAgIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CisKKyAgICBpZiAoc2l6ZSA9PSBtX2N1cnJlbnRTaXplKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2N1cnJlbnRTaXplID0gc2l6ZTsKK30KKworSW50U2l6ZSBNZWRpYVBs
YXllclByaXZhdGVRdDo6bmF0dXJhbFNpemUoKSBjb25zdAoreworICAgIGlmICghaGFzVmlkZW8o
KSB8fCAgbV9yZWFkeVN0YXRlIDwgTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YSkgeworICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRdDo6bmF0dXJhbFNpemUoKSAtPiAweDAg
KCFoYXNWaWRlbyB8fCAhaGF2ZU1ldGFEYXRhKSIpOworICAgICAgICByZXR1cm4gSW50U2l6ZSgp
OworICAgIH0KKworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVF0OjpuYXR1cmFs
U2l6ZSgpIC0+ICVkeCVkIChtX25hdHVyYWxTaXplKSIsCisgICAgICAgICAgICBtX25hdHVyYWxT
aXplLndpZHRoKCksIG1fbmF0dXJhbFNpemUuaGVpZ2h0KCkpOworCisgICAgcmV0dXJuIG1fbmF0
dXJhbFNpemU7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnJlbW92ZVZpZGVvSXRl
bSgpCit7CisgICAgbV9tZWRpYVBsYXllci0+c2V0VmlkZW9PdXRwdXQoc3RhdGljX2Nhc3Q8UUFi
c3RyYWN0VmlkZW9TdXJmYWNlKj4oMCkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0
OjpyZXN0b3JlVmlkZW9JdGVtKCkKK3sKKyAgICBtX21lZGlhUGxheWVyLT5zZXRWaWRlb091dHB1
dCh0aGlzKTsKK30KKworLy8gQmVnaW4gUUFic3RyYWN0VmlkZW9TdXJmYWNlIGltcGxlbWVudGF0
aW9uLgorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpzdGFydChjb25zdCBRVmlkZW9TdXJm
YWNlRm9ybWF0JiBmb3JtYXQpCit7CisgICAgbV9jdXJyZW50VmlkZW9GcmFtZSA9IFFWaWRlb0Zy
YW1lKCk7CisgICAgbV9mcmFtZUZvcm1hdCA9IGZvcm1hdDsKKworICAgIC8vIElmIHRoZSBwaXhl
bCBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCBieSBRSW1hZ2UsIHRoZW4gd2UgcmV0dXJuIGZhbHNl
IGhlcmUgYW5kIHRoZSBRdE11bHRpbWVkaWEgYmFjay1lbmQKKyAgICAvLyB3aWxsIHJlLW5lZ290
aWF0ZSBhbmQgY2FsbCB1cyBhZ2FpbiB3aXRoIGEgYmV0dGVyIGZvcm1hdC4KKyAgICBpZiAoUVZp
ZGVvRnJhbWU6OmltYWdlRm9ybWF0RnJvbVBpeGVsRm9ybWF0KG1fZnJhbWVGb3JtYXQucGl4ZWxG
b3JtYXQoKSkgPT0gUUltYWdlOjpGb3JtYXRfSW52YWxpZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIFFBYnN0cmFjdFZpZGVvU3VyZmFjZTo6c3RhcnQoZm9ybWF0KTsKK30K
KworUUxpc3Q8UVZpZGVvRnJhbWU6OlBpeGVsRm9ybWF0PiBNZWRpYVBsYXllclByaXZhdGVRdDo6
c3VwcG9ydGVkUGl4ZWxGb3JtYXRzKFFBYnN0cmFjdFZpZGVvQnVmZmVyOjpIYW5kbGVUeXBlIGhh
bmRsZVR5cGUpIGNvbnN0Cit7CisgICAgUUxpc3Q8UVZpZGVvRnJhbWU6OlBpeGVsRm9ybWF0PiBm
b3JtYXRzOworICAgIHN3aXRjaCAoaGFuZGxlVHlwZSkgeworICAgIGNhc2UgUUFic3RyYWN0Vmlk
ZW9CdWZmZXI6OlFQaXhtYXBIYW5kbGU6CisgICAgY2FzZSBRQWJzdHJhY3RWaWRlb0J1ZmZlcjo6
Tm9IYW5kbGU6CisgICAgICAgIGZvcm1hdHMgPDwgUVZpZGVvRnJhbWU6OkZvcm1hdF9SR0IzMiA8
PCBRVmlkZW9GcmFtZTo6Rm9ybWF0X0FSR0IzMiA8PCBRVmlkZW9GcmFtZTo6Rm9ybWF0X1JHQjU2
NTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogYnJlYWs7CisgICAgfQorICAgIHJldHVy
biBmb3JtYXRzOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpwcmVzZW50KGNvbnN0
IFFWaWRlb0ZyYW1lJiBmcmFtZSkKK3sKKyAgICBtX2N1cnJlbnRWaWRlb0ZyYW1lID0gZnJhbWU7
CisgICAgbV93ZWJDb3JlUGxheWVyLT5yZXBhaW50KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
Ky8vIEVuZCBRQWJzdHJhY3RWaWRlb1N1cmZhY2UgaW1wbGVtZW50YXRpb24uCisKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3sKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAg
aWYgKG1fY29tcG9zaXRlZCkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgcGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fY3VycmVudFZpZGVvRnJh
bWUuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRUGFpbnRlciogcGFpbnRlciA9
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgaWYgKG1fY3VycmVudFZpZGVvRnJh
bWUuaGFuZGxlVHlwZSgpID09IFFBYnN0cmFjdFZpZGVvQnVmZmVyOjpRUGl4bWFwSGFuZGxlKSB7
CisgICAgICAgIHBhaW50ZXItPmRyYXdQaXhtYXAocmVjdCwgbV9jdXJyZW50VmlkZW9GcmFtZS5o
YW5kbGUoKS52YWx1ZTxRUGl4bWFwPigpKTsKKyAgICB9IGVsc2UgaWYgKG1fY3VycmVudFZpZGVv
RnJhbWUubWFwKFFBYnN0cmFjdFZpZGVvQnVmZmVyOjpSZWFkT25seSkpIHsKKyAgICAgICAgUUlt
YWdlIGltYWdlKG1fY3VycmVudFZpZGVvRnJhbWUuYml0cygpLAorICAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZUZvcm1hdC5mcmFtZVNpemUoKS53aWR0aCgpLAorICAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZUZvcm1hdC5mcmFtZVNpemUoKS5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgIG1fY3VycmVudFZpZGVvRnJhbWUuYnl0ZXNQZXJMaW5lKCksCisgICAgICAgICAgICAgICAg
ICAgICBRVmlkZW9GcmFtZTo6aW1hZ2VGb3JtYXRGcm9tUGl4ZWxGb3JtYXQobV9mcmFtZUZvcm1h
dC5waXhlbEZvcm1hdCgpKSk7CisgICAgICAgIGNvbnN0IFFSZWN0IHRhcmdldCA9IHJlY3Q7CisK
KyAgICAgICAgaWYgKG1fZnJhbWVGb3JtYXQuc2NhbkxpbmVEaXJlY3Rpb24oKSA9PSBRVmlkZW9T
dXJmYWNlRm9ybWF0OjpCb3R0b21Ub1RvcCkgeworICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9y
bSBvbGRUcmFuc2Zvcm0gPSBwYWludGVyLT50cmFuc2Zvcm0oKTsKKyAgICAgICAgICAgIHBhaW50
ZXItPnNjYWxlKDEsIC0xKTsKKyAgICAgICAgICAgIHBhaW50ZXItPnRyYW5zbGF0ZSgwLCAtdGFy
Z2V0LmJvdHRvbSgpKTsKKyAgICAgICAgICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUmVjdCh0YXJn
ZXQueCgpLCAwLCB0YXJnZXQud2lkdGgoKSwgdGFyZ2V0LmhlaWdodCgpKSwgaW1hZ2UpOworICAg
ICAgICAgICAgcGFpbnRlci0+c2V0VHJhbnNmb3JtKG9sZFRyYW5zZm9ybSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwYWludGVyLT5kcmF3SW1hZ2UodGFyZ2V0LCBpbWFnZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBtX2N1cnJlbnRWaWRlb0ZyYW1lLnVubWFwKCk7CisgICAgfQor
fQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRdDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQoreworfQorI2VuZGlmCisKK1BsYXRmb3JtTWVkaWEg
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAoreworICAgIFBsYXRm
b3JtTWVkaWEgcG07CisgICAgcG0udHlwZSA9IFBsYXRmb3JtTWVkaWE6OlF0TWVkaWFQbGF5ZXJU
eXBlOworICAgIHBtLm1lZGlhLnF0TWVkaWFQbGF5ZXIgPSBjb25zdF9jYXN0PE1lZGlhUGxheWVy
UHJpdmF0ZVF0Kj4odGhpcyk7CisgICAgcmV0dXJuIHBtOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNpbmNsdWRlICJtb2NfTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2
YXRlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVy
UHJpdmF0ZVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNlOTAwZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01l
ZGlhUGxheWVyUHJpdmF0ZVF0LmgKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgTWVkaWFQbGF5ZXJQcml2YXRlUXRfaAorI2RlZmluZSBNZWRpYVBsYXllclBy
aXZhdGVRdF9oCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKworI2luY2x1ZGUg
PFFBYnN0cmFjdFZpZGVvU3VyZmFjZT4KKyNpbmNsdWRlIDxRTWVkaWFQbGF5ZXI+CisjaW5jbHVk
ZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVmlkZW9TdXJmYWNlRm9ybWF0PgorCitRVF9CRUdJTl9O
QU1FU1BBQ0UKK2NsYXNzIFFNZWRpYVBsYXllckNvbnRyb2w7CitjbGFzcyBRR3JhcGhpY3NWaWRl
b0l0ZW07CitjbGFzcyBRR3JhcGhpY3NTY2VuZTsKK1FUX0VORF9OQU1FU1BBQ0UKKworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlUXQgOiBwdWJsaWMgUUFic3RyYWN0VmlkZW9TdXJmYWNlLCBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIKKyNlbmRpZgoreworCisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxh
eWVyKik7CisgICAgfk1lZGlhUGxheWVyUHJpdmF0ZVF0KCk7CisKKyAgICBzdGF0aWMgdm9pZCBy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKKyAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgVVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKSB7IHJldHVy
biB0cnVlOyB9CisKKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBdWRp
bygpIGNvbnN0OworCisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyAmdXJsKTsKKyAgICB2b2lk
IGNvbW1pdExvYWQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgcmVzdW1lTG9hZCgpOwor
ICAgIHZvaWQgY2FuY2VsTG9hZCgpOworCisgICAgdm9pZCBwbGF5KCk7CisgICAgdm9pZCBwYXVz
ZSgpOworICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpOworCisgICAgYm9vbCBwYXVzZWQoKSBjb25z
dDsKKyAgICBib29sIHNlZWtpbmcoKSBjb25zdDsKKworICAgIGZsb2F0IGR1cmF0aW9uKCkgY29u
c3Q7CisgICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKKyAgICB2b2lkIHNlZWsoZmxvYXQp
OworCisgICAgdm9pZCBzZXRSYXRlKGZsb2F0KTsKKyAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7
CisKKyAgICBib29sIHN1cHBvcnRzTXV0aW5nKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNdXRlZChi
b29sKTsKKworICAgIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCk7CisKKyAg
ICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OworICAgIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKworICAgIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKyAgICBmbG9hdCBtYXhUaW1lU2Vla2Fi
bGUoKSBjb25zdDsKKyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0OworICAgIHVu
c2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25zdDsKKworICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsK
KworICAgIEludFNpemUgbmF0dXJhbFNpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpOworCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgLy8gcmVpbXBsZW1lbnRlZCBmb3IgY2FudmFzIGRyYXdJbWFnZShIVE1M
VmlkZW9FbGVtZW50KQorICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworCisgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3Jl
ZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisgICAgLy8gd2hldGhlciBhY2NlbGVyYXRlZCByZW5kZXJpbmcgaXMgc3VwcG9ydGVk
IGJ5IHRoZSBtZWRpYSBlbmdpbmUgZm9yIHRoZSBjdXJyZW50IG1lZGlhLgorICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVuZGVyaW5nIHN5c3RlbSBmbGlwcyB0aGUgaW50
byBvciBvdXQgb2YgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1vZGUuCisgICAgdmlydHVhbCB2b2lk
IGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgeyB9CisgICAgLy8gQ29uc3QtY2Fz
dGluZyBoZXJlIGlzIHNhZmUsIHNpbmNlIGFsbCBvZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
cidzIGZ1bmN0aW9ucyBhcmUgY29uc3QuZworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyNlbmRpZgor
CisgICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKKworICAg
IFFNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhUGxheWVy
OyB9CisgICAgdm9pZCByZW1vdmVWaWRlb0l0ZW0oKTsKKyAgICB2b2lkIHJlc3RvcmVWaWRlb0l0
ZW0oKTsKKworICAgIC8vIFFBYnN0cmFjdFZpZGVvU3VyZmFjZSBtZXRob2RzCisgICAgdmlydHVh
bCBib29sIHN0YXJ0KGNvbnN0IFFWaWRlb1N1cmZhY2VGb3JtYXQmIGZvcm1hdCk7CisgICAgdmly
dHVhbCBRTGlzdDxRVmlkZW9GcmFtZTo6UGl4ZWxGb3JtYXQ+IHN1cHBvcnRlZFBpeGVsRm9ybWF0
cyhRQWJzdHJhY3RWaWRlb0J1ZmZlcjo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlID0gUUFic3RyYWN0
VmlkZW9CdWZmZXI6Ok5vSGFuZGxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VudChj
b25zdCBRVmlkZW9GcmFtZSYgZnJhbWUpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBt
ZWRpYVN0YXR1c0NoYW5nZWQoUU1lZGlhUGxheWVyOjpNZWRpYVN0YXR1cyk7CisgICAgdm9pZCBo
YW5kbGVFcnJvcihRTWVkaWFQbGF5ZXI6OkVycm9yKTsKKyAgICB2b2lkIHN0YXRlQ2hhbmdlZChR
TWVkaWFQbGF5ZXI6OlN0YXRlKTsKKyAgICB2b2lkIHN1cmZhY2VGb3JtYXRDaGFuZ2VkKGNvbnN0
IFFWaWRlb1N1cmZhY2VGb3JtYXQmKTsKKyAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChxaW50NjQp
OworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKHFpbnQ2NCk7CisgICAgdm9pZCBidWZmZXJTdGF0
dXNDaGFuZ2VkKGludCk7CisgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGludCk7CisgICAgdm9pZCBt
dXRlZENoYW5nZWQoYm9vbCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVTdGF0ZXMoKTsK
KworICAgIHZpcnR1YWwgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4g
IlF0IjsgfQorCitwcml2YXRlOgorICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KE1lZGlhUGxheWVy
Kik7CisKKyAgICBNZWRpYVBsYXllciogbV93ZWJDb3JlUGxheWVyOworICAgIFFNZWRpYVBsYXll
ciogbV9tZWRpYVBsYXllcjsKKyAgICBRTWVkaWFQbGF5ZXJDb250cm9sKiBtX21lZGlhUGxheWVy
Q29udHJvbDsKKyAgICBRVmlkZW9TdXJmYWNlRm9ybWF0IG1fZnJhbWVGb3JtYXQ7CisgICAgUVZp
ZGVvRnJhbWUgbV9jdXJyZW50VmlkZW9GcmFtZTsKKworICAgIG11dGFibGUgTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKKyAgICBtdXRhYmxlIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKworICAgIEludFNpemUgbV9jdXJyZW50U2l6ZTsKKyAg
ICBJbnRTaXplIG1fbmF0dXJhbFNpemU7CisgICAgYm9vbCBtX2lzVmlzaWJsZTsKKyAgICBib29s
IG1faXNTZWVraW5nOworICAgIGJvb2wgbV9jb21wb3NpdGVkOworICAgIE1lZGlhUGxheWVyOjpQ
cmVsb2FkIG1fcHJlbG9hZDsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1fYnl0ZXNMb2FkZWRBdExh
c3REaWRMb2FkaW5nUHJvZ3Jlc3M7CisgICAgYm9vbCBtX2RlbGF5aW5nTG9hZDsKKyAgICBTdHJp
bmcgbV9tZWRpYVVybDsKKyAgICBib29sIG1fc3VwcHJlc3NOZXh0UGxheWJhY2tDaGFuZ2VkOwor
Cit9OworfQorCisjZW5kaWYgLy8gTWVkaWFQbGF5ZXJQcml2YXRlUXRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTmF0aXZlSW1hZ2VRdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTmF0aXZlSW1hZ2VRdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZDFkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0LmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBab2x0YW4gSG9ydmF0aCAoem9s
dGFuQHdlYmtpdC5vcmcpIDIwMTIgVW5pdmVyc2l0eSBvZiBTemVnZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBOYXRpdmVJbWFnZVF0X2gKKyNkZWZpbmUgTmF0aXZlSW1hZ2VRdF9oCisKKyNpbmNsdWRlIDxR
SW1hZ2U+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTmF0aXZlSW1hZ2VRdCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFFJbWFnZTo6Rm9ybWF0IGRlZmF1bHRGb3JtYXRGb3JBbHBoYUVu
YWJsZWRJbWFnZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
Ml9QcmVtdWx0aXBsaWVkOworICAgIH0KKworICAgIHN0YXRpYyBRSW1hZ2U6OkZvcm1hdCBkZWZh
dWx0Rm9ybWF0Rm9yT3BhcXVlSW1hZ2VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBRSW1hZ2U6
OkZvcm1hdF9SR0IzMjsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZiAvLyBOYXRpdmVJbWFnZVF0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzAyM2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCkBAIC0w
LDAgKzEsNDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tA
a2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFuZHJlYXMgS2xpbmcgPGtsaW5nQHdlYmtp
dC5vcmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUGF0aC5oIgorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCisjaW5j
bHVkZSAiU3Ryb2tlU3R5bGVBcHBsaWVyLmgiCisjaW5jbHVkZSA8UVBhaW50ZXJQYXRoPgorI2lu
Y2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXRoOjpQYXRoKCkKK3sKK30K
KworUGF0aDo6flBhdGgoKQoreworfQorCitQYXRoOjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQor
ICAgIDogbV9wYXRoKG90aGVyLm1fcGF0aCkKK3sKK30KKworUGF0aCYgUGF0aDo6b3BlcmF0b3I9
KGNvbnN0IFBhdGgmIG90aGVyKQoreworICAgIG1fcGF0aCA9IG90aGVyLm1fcGF0aDsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBhcmVDb2xsaW5lYXIoY29uc3Qg
UVBvaW50RiYgYSwgY29uc3QgUVBvaW50RiYgYiwgY29uc3QgUVBvaW50RiYgYykKK3sKKyAgICAv
LyBTb2x2ZWQgZnJvbSBjb21wYXJpbmcgdGhlIHNsb3BlcyBvZiBhIHRvIGIgYW5kIGIgdG8gYzog
KGF5LWJ5KS8oYXgtYngpID09IChjeS1ieSkvKGN4LWJ4KQorICAgIHJldHVybiBxRnV6enlDb21w
YXJlKChjLnkoKSAtIGIueSgpKSAqIChhLngoKSAtIGIueCgpKSwgKGEueSgpIC0gYi55KCkpICog
KGMueCgpIC0gYi54KCkpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHdpdGhpblJhbmdlKHFy
ZWFsIHAsIHFyZWFsIGEsIHFyZWFsIGIpCit7CisgICAgcmV0dXJuIChwID49IGEgJiYgcCA8PSBi
KSB8fCAocCA+PSBiICYmIHAgPD0gYSk7Cit9CisKKy8vIENoZWNrIHdoZXRoZXIgYSBwb2ludCBp
cyBvbiB0aGUgYm9yZGVyCitzdGF0aWMgYm9vbCBpc1BvaW50T25QYXRoQm9yZGVyKGNvbnN0IFFQ
b2x5Z29uRiYgYm9yZGVyLCBjb25zdCBRUG9pbnRGJiBwKQoreworICAgIC8vIG51bGwgYm9yZGVy
IGRvZXNuJ3QgY29udGFpbiBwb2ludHMKKyAgICBpZiAoYm9yZGVyLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUVBvaW50RiBwMSA9IGJvcmRlci5hdCgwKTsKKyAgICBR
UG9pbnRGIHAyOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBib3JkZXIuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgcDIgPSBib3JkZXIuYXQoaSk7CisgICAgICAgIGlmIChhcmVDb2xsaW5lYXIo
cCwgcDEsIHAyKQorICAgICAgICAgICAgICAgIC8vIE9uY2Ugd2Uga25vdyB0aGF0IHRoZSBwb2lu
dHMgYXJlIGNvbGxpbmVhciB3ZQorICAgICAgICAgICAgICAgIC8vIG9ubHkgbmVlZCB0byBjaGVj
ayBvbmUgb2YgdGhlIGNvb3JkaW5hdGVzCisgICAgICAgICAgICAgICAgJiYgKHFBYnMocDIueCgp
IC0gcDEueCgpKSA+IHFBYnMocDIueSgpIC0gcDEueSgpKSA/CisgICAgICAgICAgICAgICAgICAg
ICAgICB3aXRoaW5SYW5nZShwLngoKSwgcDEueCgpLCBwMi54KCkpIDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdpdGhpblJhbmdlKHAueSgpLCBwMS55KCksIHAyLnkoKSkpKSB7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwMSA9IHAyOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIFdpbmRSdWxlIHJ1bGUpIGNvbnN0Cit7CisgICAgUXQ6OkZpbGxSdWxlIHNhdmVk
UnVsZSA9IG1fcGF0aC5maWxsUnVsZSgpOworICAgIGNvbnN0X2Nhc3Q8UVBhaW50ZXJQYXRoKj4o
Jm1fcGF0aCktPnNldEZpbGxSdWxlKHJ1bGUgPT0gUlVMRV9FVkVOT0REID8gUXQ6Ok9kZEV2ZW5G
aWxsIDogUXQ6OldpbmRpbmdGaWxsKTsKKworICAgIGJvb2wgY29udGFpbnMgPSBtX3BhdGguY29u
dGFpbnMocG9pbnQpOworICAgIAorICAgIGlmICghY29udGFpbnMpIHsKKyAgICAgICAgLy8gY2hl
Y2sgd2hldGhlciB0aGUgcG9pbnQgaXMgb24gdGhlIGJvcmRlcgorICAgICAgICBjb250YWlucyA9
IGlzUG9pbnRPblBhdGhCb3JkZXIobV9wYXRoLnRvRmlsbFBvbHlnb24oKSwgcG9pbnQpOworICAg
IH0KKworICAgIGNvbnN0X2Nhc3Q8UVBhaW50ZXJQYXRoKj4oJm1fcGF0aCktPnNldEZpbGxSdWxl
KHNhdmVkUnVsZSk7CisgICAgcmV0dXJuIGNvbnRhaW5zOworfQorCitzdGF0aWMgR3JhcGhpY3ND
b250ZXh0KiBzY3JhdGNoQ29udGV4dCgpCit7CisgICAgc3RhdGljIFFJbWFnZSBpbWFnZSgxLCAx
LCBOYXRpdmVJbWFnZVF0OjpkZWZhdWx0Rm9ybWF0Rm9yQWxwaGFFbmFibGVkSW1hZ2VzKCkpOwor
ICAgIHN0YXRpYyBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7CisgICAgc3RhdGljIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCA9IG5ldyBHcmFwaGljc0NvbnRleHQoJnBhaW50ZXIpOworICAgIHJl
dHVybiBjb250ZXh0OworfQorCitib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxl
QXBwbGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGFwcGxpZXIpOworCisgICAgUVBhaW50ZXJQYXRoU3Ryb2tlciBzdHJva2U7CisgICAg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gc2NyYXRjaENvbnRleHQoKTsKKyAgICBhcHBsaWVy
LT5zdHJva2VTdHlsZShjb250ZXh0KTsKKworICAgIFFQZW4gcGVuID0gY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPnBlbigpOworICAgIHN0cm9rZS5zZXRXaWR0aChwZW4ud2lkdGhGKCkpOwor
ICAgIHN0cm9rZS5zZXRDYXBTdHlsZShwZW4uY2FwU3R5bGUoKSk7CisgICAgc3Ryb2tlLnNldEpv
aW5TdHlsZShwZW4uam9pblN0eWxlKCkpOworICAgIHN0cm9rZS5zZXRNaXRlckxpbWl0KHBlbi5t
aXRlckxpbWl0KCkpOworICAgIHN0cm9rZS5zZXREYXNoUGF0dGVybihwZW4uZGFzaFBhdHRlcm4o
KSk7CisgICAgc3Ryb2tlLnNldERhc2hPZmZzZXQocGVuLmRhc2hPZmZzZXQoKSk7CisKKyAgICBy
ZXR1cm4gc3Ryb2tlLmNyZWF0ZVN0cm9rZShtX3BhdGgpLmNvbnRhaW5zKHBvaW50KTsKK30KKwor
dm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIG1fcGF0
aC50cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKK30KKworRmxvYXRSZWN0
IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGguY29u
dHJvbFBvaW50UmVjdCgpOworfQorCitGbG9hdFJlY3QgUGF0aDo6Ym91bmRpbmdSZWN0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wYXRoLmJvdW5kaW5nUmVjdCgpOworfQorCitGbG9hdFJlY3Qg
UGF0aDo6c3Ryb2tlQm91bmRpbmdSZWN0KFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllcikgY29u
c3QKK3sKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBzY3JhdGNoQ29udGV4dCgpOwor
ICAgIFFQYWludGVyUGF0aFN0cm9rZXIgc3Ryb2tlOworICAgIGlmIChhcHBsaWVyKSB7CisgICAg
ICAgIGFwcGxpZXItPnN0cm9rZVN0eWxlKGNvbnRleHQpOworCisgICAgICAgIFFQZW4gcGVuID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBlbigpOworICAgICAgICBzdHJva2Uuc2V0V2lk
dGgocGVuLndpZHRoRigpKTsKKyAgICAgICAgc3Ryb2tlLnNldENhcFN0eWxlKHBlbi5jYXBTdHls
ZSgpKTsKKyAgICAgICAgc3Ryb2tlLnNldEpvaW5TdHlsZShwZW4uam9pblN0eWxlKCkpOworICAg
ICAgICBzdHJva2Uuc2V0TWl0ZXJMaW1pdChwZW4ubWl0ZXJMaW1pdCgpKTsKKyAgICAgICAgc3Ry
b2tlLnNldERhc2hQYXR0ZXJuKHBlbi5kYXNoUGF0dGVybigpKTsKKyAgICAgICAgc3Ryb2tlLnNl
dERhc2hPZmZzZXQocGVuLmRhc2hPZmZzZXQoKSk7CisgICAgfQorICAgIHJldHVybiBzdHJva2Uu
Y3JlYXRlU3Ryb2tlKG1fcGF0aCkuYm91bmRpbmdSZWN0KCk7Cit9CisKK3ZvaWQgUGF0aDo6bW92
ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIG1fcGF0aC5tb3ZlVG8ocG9pbnQp
OworfQorCit2b2lkIFBhdGg6OmFkZExpbmVUbyhjb25zdCBGbG9hdFBvaW50JiBwKQoreworICAg
IG1fcGF0aC5saW5lVG8ocCk7Cit9CisKK3ZvaWQgUGF0aDo6YWRkUXVhZEN1cnZlVG8oY29uc3Qg
RmxvYXRQb2ludCYgY3AsIGNvbnN0IEZsb2F0UG9pbnQmIHApCit7CisgICAgbV9wYXRoLnF1YWRU
byhjcCwgcCk7Cit9CisKK3ZvaWQgUGF0aDo6YWRkQmV6aWVyQ3VydmVUbyhjb25zdCBGbG9hdFBv
aW50JiBjcDEsIGNvbnN0IEZsb2F0UG9pbnQmIGNwMiwgY29uc3QgRmxvYXRQb2ludCYgcCkKK3sK
KyAgICBtX3BhdGguY3ViaWNUbyhjcDEsIGNwMiwgcCk7Cit9CisKK3ZvaWQgUGF0aDo6YWRkQXJj
VG8oY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRp
dXMpCit7CisgICAgRmxvYXRQb2ludCBwMChtX3BhdGguY3VycmVudFBvc2l0aW9uKCkpOworCisg
ICAgRmxvYXRQb2ludCBwMXAwKChwMC54KCkgLSBwMS54KCkpLCAocDAueSgpIC0gcDEueSgpKSk7
CisgICAgRmxvYXRQb2ludCBwMXAyKChwMi54KCkgLSBwMS54KCkpLCAocDIueSgpIC0gcDEueSgp
KSk7CisgICAgZmxvYXQgcDFwMF9sZW5ndGggPSBzcXJ0ZihwMXAwLngoKSAqIHAxcDAueCgpICsg
cDFwMC55KCkgKiBwMXAwLnkoKSk7CisgICAgZmxvYXQgcDFwMl9sZW5ndGggPSBzcXJ0ZihwMXAy
LngoKSAqIHAxcDIueCgpICsgcDFwMi55KCkgKiBwMXAyLnkoKSk7CisKKyAgICBkb3VibGUgY29z
X3BoaSA9IChwMXAwLngoKSAqIHAxcDIueCgpICsgcDFwMC55KCkgKiBwMXAyLnkoKSkgLyAocDFw
MF9sZW5ndGggKiBwMXAyX2xlbmd0aCk7CisKKyAgICAvLyBUaGUgcG9pbnRzIHAwLCBwMSwgYW5k
IHAyIGFyZSBvbiB0aGUgc2FtZSBzdHJhaWdodCBsaW5lIChIVE1MNSwgNC44LjExLjEuOCkKKyAg
ICAvLyBXZSBjb3VsZCBoYXZlIHVzZWQgYXJlQ29sbGluZWFyKCkgaGVyZSwgYnV0IHNpbmNlIHdl
J3JlIHJldXNpbmcKKyAgICAvLyB0aGUgdmFyaWFibGVzIGNvbXB1dGVkIGFib3ZlIGxhdGVyIG9u
IHdlIGtlZXAgdGhpcyBsb2dpYy4KKyAgICBpZiAocUZ1enp5Q29tcGFyZShxQWJzKGNvc19waGkp
LCAxLjApKSB7CisgICAgICAgIG1fcGF0aC5saW5lVG8ocDEpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZmxvYXQgdGFuZ2VudCA9IHJhZGl1cyAvIHRhbihhY29zKGNvc19waGkpIC8g
Mik7CisgICAgZmxvYXQgZmFjdG9yX3AxcDAgPSB0YW5nZW50IC8gcDFwMF9sZW5ndGg7CisgICAg
RmxvYXRQb2ludCB0X3AxcDAoKHAxLngoKSArIGZhY3Rvcl9wMXAwICogcDFwMC54KCkpLCAocDEu
eSgpICsgZmFjdG9yX3AxcDAgKiBwMXAwLnkoKSkpOworCisgICAgRmxvYXRQb2ludCBvcnRoX3Ax
cDAocDFwMC55KCksIC1wMXAwLngoKSk7CisgICAgZmxvYXQgb3J0aF9wMXAwX2xlbmd0aCA9IHNx
cnQob3J0aF9wMXAwLngoKSAqIG9ydGhfcDFwMC54KCkgKyBvcnRoX3AxcDAueSgpICogb3J0aF9w
MXAwLnkoKSk7CisgICAgZmxvYXQgZmFjdG9yX3JhID0gcmFkaXVzIC8gb3J0aF9wMXAwX2xlbmd0
aDsKKworICAgIC8vIGFuZ2xlIGJldHdlZW4gb3J0aF9wMXAwIGFuZCBwMXAyIHRvIGdldCB0aGUg
cmlnaHQgdmVjdG9yIG9ydGhvZ3JhcGhpYyB0byBwMXAwCisgICAgZG91YmxlIGNvc19hbHBoYSA9
IChvcnRoX3AxcDAueCgpICogcDFwMi54KCkgKyBvcnRoX3AxcDAueSgpICogcDFwMi55KCkpIC8g
KG9ydGhfcDFwMF9sZW5ndGggKiBwMXAyX2xlbmd0aCk7CisgICAgaWYgKGNvc19hbHBoYSA8IDAu
ZikKKyAgICAgICAgb3J0aF9wMXAwID0gRmxvYXRQb2ludCgtb3J0aF9wMXAwLngoKSwgLW9ydGhf
cDFwMC55KCkpOworCisgICAgRmxvYXRQb2ludCBwKCh0X3AxcDAueCgpICsgZmFjdG9yX3JhICog
b3J0aF9wMXAwLngoKSksICh0X3AxcDAueSgpICsgZmFjdG9yX3JhICogb3J0aF9wMXAwLnkoKSkp
OworCisgICAgLy8gY2FsY3VsYXRlIGFuZ2xlcyBmb3IgYWRkQXJjCisgICAgb3J0aF9wMXAwID0g
RmxvYXRQb2ludCgtb3J0aF9wMXAwLngoKSwgLW9ydGhfcDFwMC55KCkpOworICAgIGZsb2F0IHNh
ID0gYWNvcyhvcnRoX3AxcDAueCgpIC8gb3J0aF9wMXAwX2xlbmd0aCk7CisgICAgaWYgKG9ydGhf
cDFwMC55KCkgPCAwLmYpCisgICAgICAgIHNhID0gMiAqIHBpRG91YmxlIC0gc2E7CisKKyAgICAv
LyBhbnRpY2xvY2t3aXNlIGxvZ2ljCisgICAgYm9vbCBhbnRpY2xvY2t3aXNlID0gZmFsc2U7CisK
KyAgICBmbG9hdCBmYWN0b3JfcDFwMiA9IHRhbmdlbnQgLyBwMXAyX2xlbmd0aDsKKyAgICBGbG9h
dFBvaW50IHRfcDFwMigocDEueCgpICsgZmFjdG9yX3AxcDIgKiBwMXAyLngoKSksIChwMS55KCkg
KyBmYWN0b3JfcDFwMiAqIHAxcDIueSgpKSk7CisgICAgRmxvYXRQb2ludCBvcnRoX3AxcDIoKHRf
cDFwMi54KCkgLSBwLngoKSksICh0X3AxcDIueSgpIC0gcC55KCkpKTsKKyAgICBmbG9hdCBvcnRo
X3AxcDJfbGVuZ3RoID0gc3FydGYob3J0aF9wMXAyLngoKSAqIG9ydGhfcDFwMi54KCkgKyBvcnRo
X3AxcDIueSgpICogb3J0aF9wMXAyLnkoKSk7CisgICAgZmxvYXQgZWEgPSBhY29zKG9ydGhfcDFw
Mi54KCkgLyBvcnRoX3AxcDJfbGVuZ3RoKTsKKyAgICBpZiAob3J0aF9wMXAyLnkoKSA8IDApCisg
ICAgICAgIGVhID0gMiAqIHBpRG91YmxlIC0gZWE7CisgICAgaWYgKChzYSA+IGVhKSAmJiAoKHNh
IC0gZWEpIDwgcGlEb3VibGUpKQorICAgICAgICBhbnRpY2xvY2t3aXNlID0gdHJ1ZTsKKyAgICBp
ZiAoKHNhIDwgZWEpICYmICgoZWEgLSBzYSkgPiBwaURvdWJsZSkpCisgICAgICAgIGFudGljbG9j
a3dpc2UgPSB0cnVlOworCisgICAgbV9wYXRoLmxpbmVUbyh0X3AxcDApOworCisgICAgYWRkQXJj
KHAsIHJhZGl1cywgc2EsIGVhLCBhbnRpY2xvY2t3aXNlKTsKK30KKwordm9pZCBQYXRoOjpjbG9z
ZVN1YnBhdGgoKQoreworICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKK30KKwordm9pZCBQYXRo
OjphZGRBcmMoY29uc3QgRmxvYXRQb2ludCYgcCwgZmxvYXQgciwgZmxvYXQgc2FyLCBmbG9hdCBl
YXIsIGJvb2wgYW50aWNsb2Nrd2lzZSkKK3sKKyAgICBxcmVhbCB4YyA9IHAueCgpOworICAgIHFy
ZWFsIHljID0gcC55KCk7CisgICAgcXJlYWwgcmFkaXVzID0gcjsKKworCisgICAgLy8jIyMgSEFD
SworICAgIC8vIEluIFF0IHdlIGRvbid0IHN3aXRjaCB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gZm9y
IGRlZ3JlZXMKKyAgICAvLyBhbmQgc3RpbGwgdXNlIHRoZSAwLDAgYXMgYm90dG9tIGxlZnQgZm9y
IGRlZ3JlZXMgc28gd2UgbmVlZAorICAgIC8vIHRvIHN3aXRjaAorICAgIHNhciA9IC1zYXI7Cisg
ICAgZWFyID0gLWVhcjsKKyAgICBhbnRpY2xvY2t3aXNlID0gIWFudGljbG9ja3dpc2U7CisgICAg
Ly9lbmQgaGFjaworCisgICAgZmxvYXQgc2EgPSByYWQyZGVnKHNhcik7CisgICAgZmxvYXQgZWEg
PSByYWQyZGVnKGVhcik7CisKKyAgICBkb3VibGUgc3BhbiA9IDA7CisKKyAgICBkb3VibGUgeHMg
PSB4YyAtIHJhZGl1czsKKyAgICBkb3VibGUgeXMgPSB5YyAtIHJhZGl1czsKKyAgICBkb3VibGUg
d2lkdGggID0gcmFkaXVzKjI7CisgICAgZG91YmxlIGhlaWdodCA9IHJhZGl1cyoyOworCisgICAg
aWYgKCghYW50aWNsb2Nrd2lzZSAmJiAoZWEgLSBzYSA+PSAzNjApKSB8fCAoYW50aWNsb2Nrd2lz
ZSAmJiAoc2EgLSBlYSA+PSAzNjApKSkgeworICAgICAgICAvLyBJZiB0aGUgYW50aWNsb2Nrd2lz
ZSBhcmd1bWVudCBpcyBmYWxzZSBhbmQgZW5kQW5nbGUtc3RhcnRBbmdsZSBpcyBlcXVhbCB0byBv
ciBncmVhdGVyIHRoYW4gMipQSSwgb3IsIGlmIHRoZQorICAgICAgICAvLyBhbnRpY2xvY2t3aXNl
IGFyZ3VtZW50IGlzIHRydWUgYW5kIHN0YXJ0QW5nbGUtZW5kQW5nbGUgaXMgZXF1YWwgdG8gb3Ig
Z3JlYXRlciB0aGFuIDIqUEksIHRoZW4gdGhlIGFyYyBpcyB0aGUgd2hvbGUKKyAgICAgICAgLy8g
Y2lyY3VtZmVyZW5jZSBvZiB0aGlzIGNpcmNsZS4KKyAgICAgICAgc3BhbiA9IDM2MDsKKworICAg
ICAgICBpZiAoYW50aWNsb2Nrd2lzZSkKKyAgICAgICAgICAgIHNwYW4gPSAtc3BhbjsKKyAgICB9
IGVsc2UgeworICAgICAgICBpZiAoIWFudGljbG9ja3dpc2UgJiYgKGVhIDwgc2EpKQorICAgICAg
ICAgICAgc3BhbiArPSAzNjA7CisgICAgICAgIGVsc2UgaWYgKGFudGljbG9ja3dpc2UgJiYgKHNh
IDwgZWEpKQorICAgICAgICAgICAgc3BhbiAtPSAzNjA7CisKKyAgICAgICAgLy8gdGhpcyBpcyBh
bHNvIGR1ZSB0byBzd2l0Y2hlZCBjb29yZGluYXRlIHN5c3RlbQorICAgICAgICAvLyB3ZSB3b3Vs
ZCBlbmQgdXAgd2l0aCBhIDAgc3BhbiBpbnN0ZWFkIG9mIDM2MAorICAgICAgICBpZiAoIShxRnV6
enlDb21wYXJlKHNwYW4gKyAoZWEgLSBzYSkgKyAxLCAxLjApCisgICAgICAgICAgICAmJiBxRnV6
enlDb21wYXJlKHFBYnMoc3BhbiksIDM2MC4wKSkpIHsKKyAgICAgICAgICAgIC8vIG1vZCAzNjAK
KyAgICAgICAgICAgIHNwYW4gKz0gKGVhIC0gc2EpIC0gKHN0YXRpY19jYXN0PGludD4oKGVhIC0g
c2EpIC8gMzYwKSkgKiAzNjA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJZiB0aGUgcGF0
aCBpcyBlbXB0eSwgbW92ZSB0byB3aGVyZSB0aGUgYXJjIHdpbGwgc3RhcnQgdG8gYXZvaWQgcGFp
bnRpbmcgYSBsaW5lIGZyb20gKDAsMCkKKyAgICAvLyBOT1RFOiBRUGFpbnRlclBhdGg6OmlzRW1w
dHkoKSB3b24ndCB3b3JrIGhlcmUgc2luY2UgaXQgaWdub3JlcyBhIGxvbmUgTW92ZVRvRWxlbWVu
dAorICAgIGlmICghbV9wYXRoLmVsZW1lbnRDb3VudCgpKQorICAgICAgICBtX3BhdGguYXJjTW92
ZVRvKHhzLCB5cywgd2lkdGgsIGhlaWdodCwgc2EpOworICAgIGVsc2UgaWYgKCFyYWRpdXMpIHsK
KyAgICAgICAgbV9wYXRoLmxpbmVUbyh4YywgeWMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9wYXRoLmFyY1RvKHhzLCB5cywgd2lkdGgsIGhlaWdodCwgc2EsIHNwYW4pOworCit9
CisKK3ZvaWQgUGF0aDo6YWRkUmVjdChjb25zdCBGbG9hdFJlY3QmIHIpCit7CisgICAgbV9wYXRo
LmFkZFJlY3Qoci54KCksIHIueSgpLCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOworfQorCit2b2lk
IFBhdGg6OmFkZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByKQoreworICAgIG1fcGF0aC5hZGRF
bGxpcHNlKHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKK30KKwordm9pZCBQ
YXRoOjpjbGVhcigpCit7CisgICAgaWYgKCFtX3BhdGguZWxlbWVudENvdW50KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3BhdGggPSBRUGFpbnRlclBhdGgoKTsKK30KKworYm9vbCBQYXRoOjpp
c0VtcHR5KCkgY29uc3QKK3sKKyAgICAvLyBEb24ndCB1c2UgUVBhaW50ZXJQYXRoOjppc0VtcHR5
KCksIGFzIHRoYXQgYWxzbyByZXR1cm5zIHRydWUgaWYgdGhlcmUncyBvbmx5CisgICAgLy8gb25l
IGluaXRpYWwgTW92ZVRvIGVsZW1lbnQgaW4gdGhlIHBhdGguCisgICAgcmV0dXJuICFtX3BhdGgu
ZWxlbWVudENvdW50KCk7Cit9CisKK2Jvb2wgUGF0aDo6aGFzQ3VycmVudFBvaW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIWlzRW1wdHkoKTsKK30KKworRmxvYXRQb2ludCBQYXRoOjpjdXJyZW50
UG9pbnQoKSBjb25zdCAKK3sKKyAgICByZXR1cm4gbV9wYXRoLmN1cnJlbnRQb3NpdGlvbigpOwor
fQorCit2b2lkIFBhdGg6OmFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyRnVuY3Rpb24gZnVu
Y3Rpb24pIGNvbnN0Cit7CisgICAgUGF0aEVsZW1lbnQgcGVsZW1lbnQ7CisgICAgRmxvYXRQb2lu
dCBwb2ludHNbM107CisgICAgcGVsZW1lbnQucG9pbnRzID0gcG9pbnRzOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbV9wYXRoLmVsZW1lbnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgY29uc3Qg
UVBhaW50ZXJQYXRoOjpFbGVtZW50JiBjdXIgPSBtX3BhdGguZWxlbWVudEF0KGkpOworCisgICAg
ICAgIHN3aXRjaCAoY3VyLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUVBhaW50ZXJQYXRoOjpN
b3ZlVG9FbGVtZW50OgorICAgICAgICAgICAgICAgIHBlbGVtZW50LnR5cGUgPSBQYXRoRWxlbWVu
dE1vdmVUb1BvaW50OworICAgICAgICAgICAgICAgIHBlbGVtZW50LnBvaW50c1swXSA9IFFQb2lu
dEYoY3VyKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbihpbmZvLCAmcGVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkxpbmVU
b0VsZW1lbnQ6CisgICAgICAgICAgICAgICAgcGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50QWRk
TGluZVRvUG9pbnQ7CisgICAgICAgICAgICAgICAgcGVsZW1lbnQucG9pbnRzWzBdID0gUVBvaW50
RihjdXIpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGluZm8sICZwZWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFFQYWludGVyUGF0aDo6Q3VydmVU
b0VsZW1lbnQ6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50ZXJQ
YXRoOjpFbGVtZW50JiBjMSA9IG1fcGF0aC5lbGVtZW50QXQoaSArIDEpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFFQYWludGVyUGF0aDo6RWxlbWVudCYgYzIgPSBtX3BhdGguZWxlbWVudEF0KGkg
KyAyKTsKKworICAgICAgICAgICAgICAgIFFfQVNTRVJUKGMxLnR5cGUgPT0gUVBhaW50ZXJQYXRo
OjpDdXJ2ZVRvRGF0YUVsZW1lbnQpOworICAgICAgICAgICAgICAgIFFfQVNTRVJUKGMyLnR5cGUg
PT0gUVBhaW50ZXJQYXRoOjpDdXJ2ZVRvRGF0YUVsZW1lbnQpOworCisgICAgICAgICAgICAgICAg
cGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OworICAgICAgICAgICAg
ICAgIHBlbGVtZW50LnBvaW50c1swXSA9IFFQb2ludEYoY3VyKTsKKyAgICAgICAgICAgICAgICBw
ZWxlbWVudC5wb2ludHNbMV0gPSBRUG9pbnRGKGMxKTsKKyAgICAgICAgICAgICAgICBwZWxlbWVu
dC5wb2ludHNbMl0gPSBRUG9pbnRGKGMyKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbihpbmZv
LCAmcGVsZW1lbnQpOworCisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBRUGFpbnRlclBhdGg6OkN1
cnZlVG9EYXRhRWxlbWVudDoKKyAgICAgICAgICAgICAgICBRX0FTU0VSVChmYWxzZSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUGF0aDo6dHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQoreworICAgIFFUcmFuc2Zvcm0gcVRyYW5zZm9ybSh0cmFuc2Zvcm0p
OworICAgIG1fcGF0aCA9IHFUcmFuc2Zvcm0ubWFwKG1fcGF0aCk7Cit9CisKK2Zsb2F0IFBhdGg6
Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aC5sZW5ndGgoKTsKK30KKworRmxv
YXRQb2ludCBQYXRoOjpwb2ludEF0TGVuZ3RoKGZsb2F0IGxlbmd0aCwgYm9vbCYgb2spIGNvbnN0
Cit7CisgICAgb2sgPSAobGVuZ3RoID49IDAgJiYgbGVuZ3RoIDw9IG1fcGF0aC5sZW5ndGgoKSk7
CisKKyAgICBxcmVhbCBwZXJjZW50ID0gbV9wYXRoLnBlcmNlbnRBdExlbmd0aChsZW5ndGgpOwor
ICAgIFFQb2ludEYgcG9pbnQgPSBtX3BhdGgucG9pbnRBdFBlcmNlbnQocGVyY2VudCk7CisKKyAg
ICByZXR1cm4gcG9pbnQ7Cit9CisKK2Zsb2F0IFBhdGg6Om5vcm1hbEFuZ2xlQXRMZW5ndGgoZmxv
YXQgbGVuZ3RoLCBib29sJiBvaykgY29uc3QKK3sKKyAgICBvayA9IChsZW5ndGggPj0gMCAmJiBs
ZW5ndGggPD0gbV9wYXRoLmxlbmd0aCgpKTsKKworICAgIHFyZWFsIHBlcmNlbnQgPSBtX3BhdGgu
cGVyY2VudEF0TGVuZ3RoKGxlbmd0aCk7CisgICAgcXJlYWwgYW5nbGUgPSBtX3BhdGguYW5nbGVB
dFBlcmNlbnQocGVyY2VudCk7CisKKyAgICAvLyBOb3JtYWxpemUgYW5nbGUgdmFsdWUuCisgICAg
Ly8gUVBhaW50ZXJQYXRoIHJldHVybnMgYW5nbGUgdmFsdWVzIHdpdGggdGhlIG9yaWdvIGJlaW5n
IGF0IHRoZSB0b3AgbGVmdCBjb3JuZXIuCisgICAgLy8gSW4gY2FzZSBvZiBtb3ZlVG8oMCwgMCkg
YW5kIGFkZExpbmVUbygwLCAxMCkgdGhlIGFuZ2xlIGlzIDI3MCwKKyAgICAvLyB3aGlsZSB0aGUg
Y2FsbGVyIGV4cGVjdHMgaXQgdG8gYmUgOTAuCisgICAgLy8gTm9ybWFsaXplIHRoZSB2YWx1ZSBi
eSBtaXJyb3JpbmcgaXQgdG8gdGhlIHgtYXhpcy4KKyAgICAvLyBGb3IgbW9yZSBpbmZvIGxvb2sg
YXQgcGF0aExlbmd0aEFwcGxpZXJGdW5jdGlvbigpLgorICAgIGlmIChhbmdsZSA+IDApCisgICAg
ICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7CisgICAgcmV0dXJuIGFuZ2xlOworfQorCit9CisKKy8v
IHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvUGF0dGVyblF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
YWFlNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvUGF0dGVyblF0LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitRQnJ1c2ggUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKCkgY29uc3QKK3sKKyAg
ICBRUGl4bWFwKiBwaXhtYXAgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBpZiAoIXBpeG1hcCkKKyAgICAgICAgcmV0dXJuIFFCcnVzaCgpOworCisgICAg
Ly8gUXQgbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNlciBzcGFjZSBpdHNlbGYKKyAgICBRQnJ1
c2ggYnJ1c2goKnBpeG1hcCk7CisgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fcGF0dGVyblNwYWNl
VHJhbnNmb3JtYXRpb24pOworCisgICAgcmV0dXJuIGJydXNoOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TaW1wbGVGb250RGF0YVF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRhUXQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZGVmMjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TaW1wbGVGb250
RGF0YVF0LmNwcApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
CisgICAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0eSBuZWVkZWQgZm9yIGxv
YWRpbmcgaW1hZ2VzLCBzdHlsZSBzaGVldHMgYW5kIGh0bWwKKyAgICBwYWdlcyBmcm9tIHRoZSB3
ZWIuIEl0IGhhcyBhIG1lbW9yeSBjYWNoZSBmb3IgdGhlc2Ugb2JqZWN0cy4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNpbXBsZUZv
bnREYXRhOjpkZXRlcm1pbmVQaXRjaCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBt
X3RyZWF0QXNGaXhlZFBpdGNoID0gZmFsc2U7Cit9CisKK2Jvb2wgU2ltcGxlRm9udERhdGE6OmNv
bnRhaW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkgY29u
c3QKK3sKKyAgICBRUmF3Rm9udCByYXdGb250KG1fcGxhdGZvcm1EYXRhLnJhd0ZvbnQoKSk7CisK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghcmF3
Rm9udC5zdXBwb3J0c0NoYXJhY3RlcihzdGF0aWNfY2FzdDxRQ2hhcj4oY2hhcmFjdGVyc1tpXSkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitmbG9hdCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGds
eXBoKSBjb25zdAoreworICAgIGlmICghZ2x5cGggfHwgIXBsYXRmb3JtRGF0YSgpLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBRVmVjdG9yPHF1aW50MzI+IGdseXBoSW5kZXhlczsK
KyAgICBnbHlwaEluZGV4ZXMuYXBwZW5kKGdseXBoKTsKKyAgICBRVmVjdG9yPFFQb2ludEY+IGFk
dmFuY2VzID0gcGxhdGZvcm1EYXRhKCkucmF3Rm9udCgpLmFkdmFuY2VzRm9yR2x5cGhJbmRleGVz
KGdseXBoSW5kZXhlcyk7CisgICAgQVNTRVJUKCFhZHZhbmNlcy5pc0VtcHR5KCkpOworICAgIHJl
dHVybiBhZHZhbmNlcy5hdCgwKS54KCk7Cit9CisKK1Bhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+
IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUNyZWF0ZVNjYWxlZEZvbnREYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBmbG9hdCBzY2FsZUZhY3RvcikgY29uc3QKK3sK
KyAgICBjb25zdCBmbG9hdCBzY2FsZWRTaXplID0gbHJvdW5kZihmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRTaXplKCkgKiBzY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIFNpbXBsZUZvbnREYXRhOjpj
cmVhdGUoRm9udFBsYXRmb3JtRGF0YShtX3BsYXRmb3JtRGF0YSwgc2NhbGVkU2l6ZSksIGlzQ3Vz
dG9tRm9udCgpLCBmYWxzZSk7Cit9CisKK0Zsb2F0UmVjdCBTaW1wbGVGb250RGF0YTo6cGxhdGZv
cm1Cb3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF0
Zm9ybURhdGEucmF3Rm9udCgpLmJvdW5kaW5nUmVjdChnbHlwaCk7Cit9CisKK3ZvaWQgU2ltcGxl
Rm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCit7CisgICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5zaXpl
KCkpIHsKKyAgICAgICAgIG1fZm9udE1ldHJpY3MucmVzZXQoKTsKKyAgICAgICAgIG1fYXZnQ2hh
cldpZHRoID0gMDsKKyAgICAgICAgIG1fbWF4Q2hhcldpZHRoID0gMDsKKyAgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBRUmF3Rm9udCByYXdGb250KG1fcGxhdGZvcm1EYXRhLnJhd0ZvbnQo
KSk7CisgICAgZmxvYXQgZGVzY2VudCA9IHJhd0ZvbnQuZGVzY2VudCgpOworICAgIGZsb2F0IGFz
Y2VudCA9IHJhd0ZvbnQuYXNjZW50KCk7CisgICAgZmxvYXQgeEhlaWdodCA9IHJhd0ZvbnQueEhl
aWdodCgpOworICAgIGZsb2F0IGxpbmVTcGFjaW5nID0gYXNjZW50ICsgZGVzY2VudCArIHJhd0Zv
bnQubGVhZGluZygpOworCisgICAgUVZlY3RvcjxxdWludDMyPiBpbmRleGVzID0gcmF3Rm9udC5n
bHlwaEluZGV4ZXNGb3JTdHJpbmcoUUxhdGluMVN0cmluZygiICIpKTsKKyAgICBRVmVjdG9yPFFQ
b2ludEY+IGFkdmFuY2VzID0gcmF3Rm9udC5hZHZhbmNlc0ZvckdseXBoSW5kZXhlcyhpbmRleGVz
KTsKKyAgICBmbG9hdCBzcGFjZVdpZHRoID0gYWR2YW5jZXMuYXQoMCkueCgpOworCisgICAgaW5k
ZXhlcyA9IHJhd0ZvbnQuZ2x5cGhJbmRleGVzRm9yU3RyaW5nKFFMYXRpbjFTdHJpbmcoIjAiKSk7
CisgICAgYWR2YW5jZXMgPSByYXdGb250LmFkdmFuY2VzRm9yR2x5cGhJbmRleGVzKGluZGV4ZXMp
OworICAgIGZsb2F0IHplcm9XaWR0aCA9IGFkdmFuY2VzLmF0KDApLngoKTsKKworICAgIC8vIFRo
ZSBsaW5lIHNwYWNpbmcgc2hvdWxkIGFsd2F5cyBiZSA+PSAoYXNjZW50ICsgZGVzY2VudCksIGJ1
dCB0aGlzCisgICAgLy8gbWF5IGJlIGZhbHNlIGluIHNvbWUgY2FzZXMgZHVlIHRvIG1pc2JlaGF2
aW5nIHBsYXRmb3JtIGxpYnJhcmllcy4KKyAgICAvLyBXb3JrYXJvdW5kIGZyb20gU2ltcGxlRm9u
dFBhbmdvLmNwcCBhbmQgU2ltcGxlRm9udEZyZWVUeXBlLmNwcAorICAgIGlmIChsaW5lU3BhY2lu
ZyA8IGFzY2VudCArIGRlc2NlbnQpCisgICAgICAgIGxpbmVTcGFjaW5nID0gYXNjZW50ICsgZGVz
Y2VudDsKKworICAgIC8vIFFGb250TWV0cmljc0Y6OmxlYWRpbmcoKSBtYXkgcmV0dXJuIG5lZ2F0
aXZlIHZhbHVlcyBvbiBwbGF0Zm9ybXMKKyAgICAvLyBzdWNoIGFzIEZyZWVUeXBlLiBDYWxjdWxh
dGUgdGhlIGxpbmUgZ2FwIG1hbnVhbGx5IGluc3RlYWQuCisgICAgZmxvYXQgbGluZUdhcCA9IGxp
bmVTcGFjaW5nIC0gYXNjZW50IC0gZGVzY2VudDsKKworICAgIG1fZm9udE1ldHJpY3Muc2V0QXNj
ZW50KGFzY2VudCk7CisgICAgLy8gV2ViS2l0IGV4cGVjdHMgdGhlIGRlc2NlbnQgdG8gYmUgcG9z
aXRpdmUuCisgICAgbV9mb250TWV0cmljcy5zZXREZXNjZW50KHFBYnMoZGVzY2VudCkpOworICAg
IG1fZm9udE1ldHJpY3Muc2V0TGluZVNwYWNpbmcobGluZVNwYWNpbmcpOworICAgIG1fZm9udE1l
dHJpY3Muc2V0WEhlaWdodCh4SGVpZ2h0KTsKKyAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVHYXAo
bGluZUdhcCk7CisgICAgbV9mb250TWV0cmljcy5zZXRaZXJvV2lkdGgoemVyb1dpZHRoKTsKKyAg
ICBtX3NwYWNlV2lkdGggPSBzcGFjZVdpZHRoOworfQorCit2b2lkIFNpbXBsZUZvbnREYXRhOjpw
bGF0Zm9ybUNoYXJXaWR0aEluaXQoKQoreworICAgIGlmICghbV9wbGF0Zm9ybURhdGEuc2l6ZSgp
KQorICAgICAgICByZXR1cm47CisgICAgUVJhd0ZvbnQgcmF3Rm9udChtX3BsYXRmb3JtRGF0YS5y
YXdGb250KCkpOworICAgIG1fYXZnQ2hhcldpZHRoID0gcmF3Rm9udC5hdmVyYWdlQ2hhcldpZHRo
KCk7CisgICAgbV9tYXhDaGFyV2lkdGggPSByYXdGb250Lm1heENoYXJXaWR0aCgpOworfQorCit2
b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybURlc3Ryb3koKQoreworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGQzYmNlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNw
cApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RpbGxJbWFnZVF0LmgiCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2hhZG93
Qmx1ci5oIgorCisjaW5jbHVkZSA8UVBhaW50ZXI+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U3RpbGxJbWFnZTo6U3RpbGxJbWFnZShjb25zdCBRUGl4bWFwJiBwaXhtYXApCisgICAgOiBtX3Bp
eG1hcChuZXcgUVBpeG1hcChwaXhtYXApKQorICAgICwgbV9vd25zUGl4bWFwKHRydWUpCit7fQor
CitTdGlsbEltYWdlOjpTdGlsbEltYWdlKGNvbnN0IFFQaXhtYXAqIHBpeG1hcCkKKyAgICA6IG1f
cGl4bWFwKHBpeG1hcCkKKyAgICAsIG1fb3duc1BpeG1hcChmYWxzZSkKK3t9CisKK1N0aWxsSW1h
Z2U6On5TdGlsbEltYWdlKCkKK3sKKyAgICBpZiAobV9vd25zUGl4bWFwKQorICAgICAgICBkZWxl
dGUgbV9waXhtYXA7Cit9CisKK2Jvb2wgU3RpbGxJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkKK3sKKyAgICByZXR1cm4gIW1fcGl4bWFwLT5oYXNBbHBoYSgpOworfQorCitJbnRT
aXplIFN0aWxsSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKG1fcGl4
bWFwLT53aWR0aCgpLCBtX3BpeG1hcC0+aGVpZ2h0KCkpOworfQorCitQYXNzTmF0aXZlSW1hZ2VQ
dHIgU3RpbGxJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIHJldHVy
biBjb25zdF9jYXN0PFBhc3NOYXRpdmVJbWFnZVB0cj4obV9waXhtYXApOworfQorCit2b2lkIFN0
aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dCwKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7CisgICAgaWYgKG1fcGl4bWFwLT5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IG5vcm1hbGl6ZWRTcmMgPSBzcmMu
bm9ybWFsaXplZCgpOworICAgIEZsb2F0UmVjdCBub3JtYWxpemVkRHN0ID0gZHN0Lm5vcm1hbGl6
ZWQoKTsKKworICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBjdHh0LT5j
b21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICBCbGVuZE1vZGUgcHJldmlvdXNCbGVuZE1vZGUgPSBj
dHh0LT5ibGVuZE1vZGVPcGVyYXRpb24oKTsKKyAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24ob3AsIGJsZW5kTW9kZSk7CisKKyAgICBpZiAoY3R4dC0+aGFzU2hhZG93KCkpIHsKKyAgICAg
ICAgU2hhZG93Qmx1ciBzaGFkb3coY3R4dC0+c3RhdGUoKSk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5vcm1h
bGl6ZWREc3QpOworICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgeworICAgICAgICAgICAgUVBh
aW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
KyAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKm1f
cGl4bWFwLCBub3JtYWxpemVkU3JjKTsKKyAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXll
cihjdHh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGN0eHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7Cisg
ICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IsIHByZXZpb3Vz
QmxlbmRNb2RlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xZTllMjE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvU3RpbGxJbWFnZVF0LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICoKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdGlsbEltYWdlUXRfaAorI2RlZmluZSBTdGlsbElt
YWdlUXRfaAorCisjaW5jbHVkZSAiSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisg
ICAgY2xhc3MgU3RpbGxJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgcHVibGljOgorICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdGlsbEltYWdlPiBjcmVhdGUoY29uc3QgUVBpeG1hcCYgcGl4
bWFwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0aWxsSW1h
Z2UocGl4bWFwKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGls
bEltYWdlPiBjcmVhdGVGb3JSZW5kZXJpbmcoY29uc3QgUVBpeG1hcCogcGl4bWFwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0aWxsSW1hZ2UocGl4bWFwKSk7
CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCk7CisKKyAgICAgICAgLy8gRklYTUU6IFN0aWxsSW1hZ2VzIGFyZSB1bmRlcnJlcG9y
dGluZyBkZWNvZGVkIHNpemVzIGFuZCB3aWxsIGJlIHVuYWJsZQorICAgICAgICAvLyB0byBwcnVu
ZSBiZWNhdXNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVl
KSB7IFFfVU5VU0VEKGRlc3Ryb3lBbGwpOyB9CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgZGVj
b2RlZFNpemUoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyAgICAgICAgdmlydHVhbCBJbnRTaXpl
IHNpemUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFN0aWxsSW1hZ2UoY29uc3QgUVBpeG1h
cCYpOworICAgICAgICBTdGlsbEltYWdlKGNvbnN0IFFQaXhtYXAqKTsKKyAgICAgICAgdmlydHVh
bCB+U3RpbGxJbWFnZSgpOworICAgICAgICAKKyAgICAgICAgY29uc3QgUVBpeG1hcCogbV9waXht
YXA7CisgICAgICAgIGJvb2wgbV9vd25zUGl4bWFwOworICAgIH07CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWU0NTZiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcApAQCAtMCwwICsx
LDE5NyBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAor
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaWxlUXQuaCIKKworI2lmIFVTRShUSUxFRF9CQUNL
SU5HX1NUT1JFKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiVGls
ZWRCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgor
I2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVJlZ2lv
bj4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
ZWNrZXJTaXplID0gMTY7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hlY2tlckNvbG9yMSA9IDB4
ZmY1NTU1NTU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hlY2tlckNvbG9yMiA9IDB4ZmZhYWFh
YWE7CisgICAgCitzdGF0aWMgUVBpeG1hcCYgY2hlY2tlcmVkUGl4bWFwKCkKK3sKKyAgICBzdGF0
aWMgUVBpeG1hcCogcGl4bWFwOworICAgIGlmICghcGl4bWFwKSB7CisgICAgICAgIHBpeG1hcCA9
IG5ldyBRUGl4bWFwKGNoZWNrZXJTaXplLCBjaGVja2VyU2l6ZSk7CisgICAgICAgIFFQYWludGVy
IHBhaW50ZXIocGl4bWFwKTsKKyAgICAgICAgUUNvbG9yIGNvbG9yMShjaGVja2VyQ29sb3IxKTsK
KyAgICAgICAgUUNvbG9yIGNvbG9yMihjaGVja2VyQ29sb3IyKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCB5ID0gMDsgeSA8IGNoZWNrZXJTaXplOyB5ICs9IGNoZWNrZXJTaXplIC8gMikgeworICAg
ICAgICAgICAgYm9vbCBhbHRlcm5hdGUgPSB5ICUgY2hlY2tlclNpemU7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIHggPSAwOyB4IDwgY2hlY2tlclNpemU7IHggKz0gY2hlY2tlclNpemUgLyAy
KSB7CisgICAgICAgICAgICAgICAgcGFpbnRlci5maWxsUmVjdCh4LCB5LCBjaGVja2VyU2l6ZSAv
IDIsIGNoZWNrZXJTaXplIC8gMiwgYWx0ZXJuYXRlID8gY29sb3IxIDogY29sb3IyKTsKKyAgICAg
ICAgICAgICAgICBhbHRlcm5hdGUgPSAhYWx0ZXJuYXRlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiAqcGl4bWFwOworfQorICAgIAorVGlsZVF0OjpUaWxlUXQo
VGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgY29uc3QgQ29vcmRpbmF0ZSYgdGlsZUNv
b3JkaW5hdGUpCisgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCisgICAgLCBtX2Nv
b3JkaW5hdGUodGlsZUNvb3JkaW5hdGUpCisgICAgLCBtX3JlY3QobV9iYWNraW5nU3RvcmUtPnRp
bGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRpbmF0ZSkpCisgICAgLCBtX2J1ZmZlcigwKQor
ICAgICwgbV9iYWNrQnVmZmVyKDApCisgICAgLCBtX2RpcnR5UmVnaW9uKG5ldyBRUmVnaW9uKG1f
cmVjdCkpCit7Cit9CisKK1RpbGVRdDo6flRpbGVRdCgpCit7CisgICAgZGVsZXRlIG1fYnVmZmVy
OworICAgIGRlbGV0ZSBtX2JhY2tCdWZmZXI7CisgICAgZGVsZXRlIG1fZGlydHlSZWdpb247Cit9
CisKK2Jvb2wgVGlsZVF0Ojppc0RpcnR5KCkgY29uc3QKK3sgCisgICAgcmV0dXJuICFtX2RpcnR5
UmVnaW9uLT5pc0VtcHR5KCk7IAorfQorCitib29sIFRpbGVRdDo6aXNSZWFkeVRvUGFpbnQoKSBj
b25zdAoreyAKKyAgICByZXR1cm4gbV9idWZmZXI7IAorfQorCit2b2lkIFRpbGVRdDo6aW52YWxp
ZGF0ZShjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgSW50UmVjdCB0aWxlRGlydHlS
ZWN0ID0gaW50ZXJzZWN0aW9uKGRpcnR5UmVjdCwgbV9yZWN0KTsKKyAgICBpZiAodGlsZURpcnR5
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgICptX2RpcnR5UmVnaW9uICs9
IHRpbGVEaXJ0eVJlY3Q7Cit9CisgICAgCitWZWN0b3I8SW50UmVjdD4gVGlsZVF0Ojp1cGRhdGVC
YWNrQnVmZmVyKCkKK3sKKyAgICBpZiAobV9idWZmZXIgJiYgIWlzRGlydHkoKSkKKyAgICAgICAg
cmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOworCisgICAgaWYgKCFtX2JhY2tCdWZmZXIpIHsKKyAg
ICAgICAgaWYgKCFtX2J1ZmZlcikgeworICAgICAgICAgICAgbV9iYWNrQnVmZmVyID0gbmV3IFFQ
aXhtYXAobV9iYWNraW5nU3RvcmUtPnRpbGVTaXplKCkud2lkdGgoKSwgbV9iYWNraW5nU3RvcmUt
PnRpbGVTaXplKCkuaGVpZ2h0KCkpOworICAgICAgICAgICAgbV9iYWNrQnVmZmVyLT5maWxsKG1f
YmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3Io
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDdXJyZW50bHkgYWxsIGJ1ZmZl
cnMgYXJlIHVwZGF0ZWQgc3luY2hyb25vdXNseSBhdCB0aGUgc2FtZSB0aW1lIHNvIHRoZXJlIGlz
IG5vIHJlYWwgbmVlZAorICAgICAgICAgICAgLy8gdG8gaGF2ZSBzZXBhcmF0ZSBiYWNrIGFuZCBm
cm9udCBidWZmZXJzLiBKdXN0IHVzZSB0aGUgZXhpc3RpbmcgYnVmZmVyLgorICAgICAgICAgICAg
bV9iYWNrQnVmZmVyID0gbV9idWZmZXI7CisgICAgICAgICAgICBtX2J1ZmZlciA9IDA7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBRVmVjdG9yPFFSZWN0PiBkaXJ0eVJlY3RzID0gbV9kaXJ0eVJl
Z2lvbi0+cmVjdHMoKTsKKyAgICAqbV9kaXJ0eVJlZ2lvbiA9IFFSZWdpb24oKTsKKyAgICAKKyAg
ICBRUGFpbnRlciBwYWludGVyKG1fYmFja0J1ZmZlcik7CisgICAgR3JhcGhpY3NDb250ZXh0IGNv
bnRleHQoJnBhaW50ZXIpOworICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX3JlY3QueCgpLCAtbV9y
ZWN0LnkoKSk7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gdXBkYXRlZFJlY3RzOworICAgIGludCBz
aXplID0gZGlydHlSZWN0cy5zaXplKCk7CisgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBzaXplOyAr
K24pICB7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBJbnRSZWN0IHJlY3QgPSBk
aXJ0eVJlY3RzW25dOworICAgICAgICB1cGRhdGVkUmVjdHMuYXBwZW5kKHJlY3QpOworICAgICAg
ICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUobV9iYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSwgbV9iYWNraW5nU3RvcmUt
PmNvbnRlbnRzU2NhbGUoKSkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+Y2xpZW50KCktPnRp
bGVkQmFja2luZ1N0b3JlUGFpbnQoJmNvbnRleHQsIG1fYmFja2luZ1N0b3JlLT5tYXBUb0NvbnRl
bnRzKHJlY3QpKTsKKyAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CisgICAgfQorCisgICAgcmV0
dXJuIHVwZGF0ZWRSZWN0czsKK30KKwordm9pZCBUaWxlUXQ6OnN3YXBCYWNrQnVmZmVyVG9Gcm9u
dCgpCit7CisgICAgaWYgKCFtX2JhY2tCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBkZWxl
dGUgbV9idWZmZXI7CisgICAgbV9idWZmZXIgPSBtX2JhY2tCdWZmZXI7CisgICAgbV9iYWNrQnVm
ZmVyID0gMDsKK30KKwordm9pZCBUaWxlUXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgSW50UmVjdCB0YXJnZXQgPSBpbnRlcnNlY3Rpb24ocmVjdCwgbV9y
ZWN0KTsKKyAgICBJbnRSZWN0IHNvdXJjZSgodGFyZ2V0LngoKSAtIG1fcmVjdC54KCkpLAorICAg
ICAgICAgICAgICAgICAgICh0YXJnZXQueSgpIC0gbV9yZWN0LnkoKSksCisgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmhlaWdodCgp
KTsKKyAgICAKKyAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1BpeG1hcCh0YXJn
ZXQsICptX2J1ZmZlciwgc291cmNlKTsKK30KKyAgICAKK3ZvaWQgVGlsZVF0OjpyZXNpemUoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBJbnRSZWN0IG9sZFJlY3QgPSBtX3JlY3Q7Cisg
ICAgbV9yZWN0ID0gSW50UmVjdChtX3JlY3QubG9jYXRpb24oKSwgbmV3U2l6ZSk7CisgICAgaWYg
KG1fcmVjdC5tYXhYKCkgPiBvbGRSZWN0Lm1heFgoKSkKKyAgICAgICAgaW52YWxpZGF0ZShJbnRS
ZWN0KG9sZFJlY3QubWF4WCgpLCBvbGRSZWN0LnkoKSwgbV9yZWN0Lm1heFgoKSAtIG9sZFJlY3Qu
bWF4WCgpLCBtX3JlY3QuaGVpZ2h0KCkpKTsKKyAgICBpZiAobV9yZWN0Lm1heFkoKSA+IG9sZFJl
Y3QubWF4WSgpKQorICAgICAgICBpbnZhbGlkYXRlKEludFJlY3Qob2xkUmVjdC54KCksIG9sZFJl
Y3QubWF4WSgpLCBtX3JlY3Qud2lkdGgoKSwgbV9yZWN0Lm1heFkoKSAtIG9sZFJlY3QubWF4WSgp
KSk7Cit9CisKK3ZvaWQgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kOjpwYWludENoZWNrZXJQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQpCit7
CisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAg
ICBRVHJhbnNmb3JtIHdvcmxkVHJhbnNmb3JtID0gcGFpbnRlci0+d29ybGRUcmFuc2Zvcm0oKTsK
KyAgICBxcmVhbCBzY2FsZVggPSB3b3JsZFRyYW5zZm9ybS5tMTEoKTsKKyAgICBxcmVhbCBzY2Fs
ZVkgPSB3b3JsZFRyYW5zZm9ybS5tMjIoKTsKKyAgICAKKyAgICBRUmVjdCB0YXJnZXRWaWV3UmVj
dCA9IFFSZWN0Rih0YXJnZXQueCgpICogc2NhbGVYLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRhcmdldC55KCkgKiBzY2FsZVksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0LndpZHRoKCkgKiBzY2FsZVgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGFyZ2V0LmhlaWdodCgpICogc2NhbGVZKS50b0FsaWduZWRSZWN0KCk7Cisg
ICAgCisgICAgUVRyYW5zZm9ybSBhZGp1c3RlZFRyYW5zZm9ybSgxLiwgd29ybGRUcmFuc2Zvcm0u
bTEyKCksIHdvcmxkVHJhbnNmb3JtLm0xMygpLAorICAgICAgICAgICAgICAgICAgd29ybGRUcmFu
c2Zvcm0ubTIxKCksIDEuLCB3b3JsZFRyYW5zZm9ybS5tMjMoKSwKKyAgICAgICAgICAgICAgICAg
IHdvcmxkVHJhbnNmb3JtLm0zMSgpLCB3b3JsZFRyYW5zZm9ybS5tMzIoKSwgd29ybGRUcmFuc2Zv
cm0ubTMzKCkpOworICAgIHBhaW50ZXItPnNldFdvcmxkVHJhbnNmb3JtKGFkanVzdGVkVHJhbnNm
b3JtKTsKKyAgICAKKyAgICBwYWludGVyLT5kcmF3VGlsZWRQaXhtYXAodGFyZ2V0Vmlld1JlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZXJlZFBpeG1hcCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRUG9pbnQodGFyZ2V0Vmlld1JlY3QubGVmdCgpICUgY2hl
Y2tlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWaWV3
UmVjdC50b3AoKSAlIGNoZWNrZXJTaXplKSk7CisgICAgCisgICAgcGFpbnRlci0+c2V0V29ybGRU
cmFuc2Zvcm0od29ybGRUcmFuc2Zvcm0pOworfQorCitQYXNzUmVmUHRyPFRpbGU+IFRpbGVkQmFj
a2luZ1N0b3JlQmFja2VuZDo6Y3JlYXRlVGlsZShUaWxlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlLCBjb25zdCBUaWxlOjpDb29yZGluYXRlJiB0aWxlQ29vcmRpbmF0ZSkKK3sKKyAgICByZXR1
cm4gVGlsZVF0OjpjcmVhdGUoYmFja2luZ1N0b3JlLCB0aWxlQ29vcmRpbmF0ZSk7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9UaWxlUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RpbGVRdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZjgxMGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuaApAQCAt
MCwwICsxLDcyIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBUaWxlUXRfaAorI2RlZmluZSBUaWxlUXRfaAorCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJUaWxlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFQaXhtYXA7Citj
bGFzcyBRUmVnaW9uOworUVRfRU5EX05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRpbGVkQmFja2luZ1N0b3JlOworCitjbGFzcyBUaWxlUXQgOiBwdWJsaWMgVGlsZSB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRQb2ludCBDb29yZGluYXRlOworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGlsZT4gY3JlYXRlKFRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUs
IGNvbnN0IENvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
VGlsZVF0KGJhY2tpbmdTdG9yZSwgdGlsZUNvb3JkaW5hdGUpKTsgfQorICAgIH5UaWxlUXQoKTsK
KworICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJ
bnRSZWN0Jik7CisgICAgVmVjdG9yPEludFJlY3Q+IHVwZGF0ZUJhY2tCdWZmZXIoKTsKKyAgICB2
b2lkIHN3YXBCYWNrQnVmZmVyVG9Gcm9udCgpOworICAgIGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBj
b25zdDsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsK
KworICAgIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIGNvb3JkaW5hdGUoKSBjb25zdCB7IHJldHVy
biBtX2Nvb3JkaW5hdGU7IH0KKyAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9CisgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwor
Citwcml2YXRlOgorICAgIFRpbGVRdChUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENvb3JkaW5h
dGUmKTsKKworICAgIFRpbGVkQmFja2luZ1N0b3JlKiBtX2JhY2tpbmdTdG9yZTsKKyAgICBDb29y
ZGluYXRlIG1fY29vcmRpbmF0ZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsKKworICAgIFFQaXhtYXAq
IG1fYnVmZmVyOworICAgIFFQaXhtYXAqIG1fYmFja0J1ZmZlcjsKKyAgICBRUmVnaW9uKiBtX2Rp
cnR5UmVnaW9uOworfTsKKworfQorI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RyYW5zZm9ybWF0aW9uTWF0cml4UXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVHJhbnNmb3JtYXRpb25NYXRyaXhR
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNhMGU0MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RyYW5zZm9y
bWF0aW9uTWF0cml4UXQuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RyYW5zZm9ybWF0aW9u
TWF0cml4OjpvcGVyYXRvciBRVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVRyYW5z
Zm9ybShtMTEoKSwgbTEyKCksIG0xNCgpLCBtMjEoKSwgbTIyKCksIG0yNCgpLCBtNDEoKSwgbTQy
KCksIG00NCgpKTsKK30KKworQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvciBRVHJhbnNmb3JtKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gUVRyYW5zZm9ybShhKCksIGIoKSwgYygpLCBkKCksIGUoKSwg
ZigpKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KGNv
bnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyAgICBzZXRNYXRyaXgodHJhbnNmb3JtLm0x
MSgpLCB0cmFuc2Zvcm0ubTEyKCksIDAsIHRyYW5zZm9ybS5tMTMoKSwKKyAgICAgICAgICAgICAg
dHJhbnNmb3JtLm0yMSgpLCB0cmFuc2Zvcm0ubTIyKCksIDAsIHRyYW5zZm9ybS5tMjMoKSwKKyAg
ICAgICAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgICAgICAgdHJhbnNmb3JtLm0zMSgpLCB0
cmFuc2Zvcm0ubTMyKCksIDAsIHRyYW5zZm9ybS5tMzMoKSk7Cit9CisKK1RyYW5zZm9ybWF0aW9u
TWF0cml4OjpvcGVyYXRvciBRTWF0cml4NHg0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUU1hdHJp
eDR4NChtMTEoKSwgbTEyKCksIG0xMygpLCBtMTQoKSwKKyAgICAgICAgICAgICAgICAgICAgICBt
MjEoKSwgbTIyKCksIG0yMygpLCBtMjQoKSwKKyAgICAgICAgICAgICAgICAgICAgICBtMzEoKSwg
bTMyKCksIG0zMygpLCBtMzQoKSwKKyAgICAgICAgICAgICAgICAgICAgICBtNDEoKSwgbTQyKCks
IG00MygpLCBtNDQoKSk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeChjb25zdCBRTWF0cml4NHg0JiBtYXRyaXgpCit7CisgICAgc2V0TWF0cml4KG1hdHJp
eCgwLCAwKSwgbWF0cml4KDEsIDApLCBtYXRyaXgoMiwgMCksIG1hdHJpeCgzLCAwKSwKKyAgICAg
ICAgICAgICAgbWF0cml4KDAsIDEpLCBtYXRyaXgoMSwgMSksIG1hdHJpeCgyLCAxKSwgbWF0cml4
KDMsIDEpLAorICAgICAgICAgICAgICBtYXRyaXgoMCwgMiksIG1hdHJpeCgxLCAyKSwgbWF0cml4
KDIsIDIpLCBtYXRyaXgoMywgMiksCisgICAgICAgICAgICAgIG1hdHJpeCgwLCAzKSwgbWF0cml4
KDEsIDMpLCBtYXRyaXgoMiwgMyksIG1hdHJpeCgzLCAzKSk7Cit9CisKK30KKworLy8gdmltOiB0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1RyYW5zcGFyZW5jeUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9UcmFuc3BhcmVuY3lMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmYxM2RlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9UcmFuc3BhcmVuY3lMYXllci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxzYW5kZmVsZEBrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggRGlyayBTY2h1bHplIDx2YnM4NUBnbXguZGU+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFRyYW5zcGFyZW5jeUxheWVyX2gKKyNkZWZpbmUgVHJhbnNwYXJl
bmN5TGF5ZXJfaAorCisjaW5jbHVkZSA8UVBhaW50RW5naW5lPgorI2luY2x1ZGUgPFFQYWludGVy
PgorI2luY2x1ZGUgPFFQaXhtYXA+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFRy
YW5zcGFyZW5jeUxheWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBUcmFuc3BhcmVuY3lMYXllcihjb25zdCBRUGFpbnRlciogcCwgY29uc3QgUVJlY3QgJnJl
Y3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFzaykKKyAgICAgICAgOiBwaXhtYXAo
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKQorICAgICAgICAsIG9wYWNpdHkob3BhY2l0eSkK
KyAgICAgICAgLCBhbHBoYU1hc2soYWxwaGFNYXNrKQorICAgICAgICAsIHNhdmVDb3VudGVyKDEp
IC8vIHNlZSB0aGUgY29tbWVudCBmb3Igc2F2ZUNvdW50ZXIKKyAgICB7CisgICAgICAgIG9mZnNl
dCA9IHJlY3QudG9wTGVmdCgpOworICAgICAgICBwaXhtYXAuZmlsbChRdDo6dHJhbnNwYXJlbnQp
OworICAgICAgICBwYWludGVyLmJlZ2luKCZwaXhtYXApOworICAgICAgICBwYWludGVyLnNldFJl
bmRlckhpbnRzKHAtPnJlbmRlckhpbnRzKCkpOworICAgICAgICBwYWludGVyLnRyYW5zbGF0ZSgt
b2Zmc2V0KTsKKyAgICAgICAgcGFpbnRlci5zZXRQZW4ocC0+cGVuKCkpOworICAgICAgICBwYWlu
dGVyLnNldEJydXNoKHAtPmJydXNoKCkpOworICAgICAgICBwYWludGVyLnNldFRyYW5zZm9ybShw
LT50cmFuc2Zvcm0oKSwgdHJ1ZSk7CisgICAgICAgIHBhaW50ZXIuc2V0Rm9udChwLT5mb250KCkp
OworICAgICAgICBwYWludGVyLnNldE9wYWNpdHkoMSk7CisgICAgfQorCisgICAgVHJhbnNwYXJl
bmN5TGF5ZXIoKQorICAgIHsKKyAgICB9CisKKyAgICBRUGl4bWFwIHBpeG1hcDsKKyAgICBRUG9p
bnQgb2Zmc2V0OworICAgIFFQYWludGVyIHBhaW50ZXI7CisgICAgcXJlYWwgb3BhY2l0eTsKKyAg
ICAvLyBmb3IgY2xpcFRvSW1hZ2VCdWZmZXIKKyAgICBRUGl4bWFwIGFscGhhTWFzazsKKyAgICAv
LyBzYXZlQ291bnRlciBpcyBvbmx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBhbHBoYU1hc2sK
KyAgICAvLyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcyB1bnNwZWNpZmllZAorICAgIGludCBzYXZl
Q291bnRlcjsKK3ByaXZhdGU6CisgICAgVHJhbnNwYXJlbmN5TGF5ZXIoY29uc3QgVHJhbnNwYXJl
bmN5TGF5ZXIgJikge30KKyAgICBUcmFuc3BhcmVuY3lMYXllciAmIG9wZXJhdG9yPShjb25zdCBU
cmFuc3BhcmVuY3lMYXllciAmKSB7IHJldHVybiAqdGhpczsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVHJhbnNwYXJlbmN5TGF5ZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaAppbmRleCA3OTg3MzlmLi45NTg3ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApA
QCAtMTEzLDYgKzExMywxMCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEdyYXBoaWNzU3Vy
ZmFjZShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgc3Rh
dGljIHZvaWQgZGlkUmVsZWFzZUltYWdlKHZvaWQqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IHVpbnQzMl90IG1fZmJvOwogICAgIEdyYXBoaWNzU3VyZmFjZVByaXZhdGUqIG1fcHJpdmF0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5kZXggMjNlZmEwMi4uNTFj
YWRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKQEAgLTI2LDcg
KzI2LDE2IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0wuaCIKIAorI2lmIFBMQVRGT1JNKFFUKQorLy8gUXQgaGVhZGVycyBtdXN0IGJlIGlu
Y2x1ZGVkIGJlZm9yZSBnbHggaGVhZGVycy4KKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+Cisj
aW5jbHVkZSA8UU9wZW5HTENvbnRleHQ+CisjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybW5hdGl2ZWlu
dGVyZmFjZS5oPgorI2luY2x1ZGUgPEdML2dsZXh0Lmg+CisjaW5jbHVkZSA8R0wvZ2x4Lmg+Cisj
ZWxzZQogI2luY2x1ZGUgPG9wZW5nbC9HTERlZnMuaD4KKyNlbmRpZgogCiAjaW5jbHVkZSAiR0xY
Q29uZmlnU2VsZWN0b3IuaCIKIApAQCAtNjgsNyArNzcsMTYgQEAgc3RydWN0IEdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGUgewogICAgIHsKICAgICAgICAgR0xYQ29udGV4dCBzaGFyZUNvbnRleHRPYmpl
Y3QgPSAwOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGlmIChzaGFyZUNvbnRleHQpIHsK
KyAgICAgICAgICAgIFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSogbmF0aXZlSW50ZXJmYWNlID0g
UUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSgpOworICAgICAgICAgICAg
c2hhcmVDb250ZXh0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8R0xYQ29udGV4dD4obmF0aXZlSW50ZXJm
YWNlLT5uYXRpdmVSZXNvdXJjZUZvckNvbnRleHQoUUJ5dGVBcnJheUxpdGVyYWwoImdseGNvbnRl
eHQiKSwgc2hhcmVDb250ZXh0KSk7CisgICAgICAgICAgICBpZiAoIXNoYXJlQ29udGV4dE9iamVj
dCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTShzaGFyZUNvbnRleHQpOworI2VuZGlmCiAKICAgICAgICAgR0xQbGF0Zm9ybVN1
cmZhY2U6OlN1cmZhY2VBdHRyaWJ1dGVzIHNoYXJlZFN1cmZhY2VBdHRyaWJ1dGVzID0gR0xQbGF0
Zm9ybVN1cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkIHwKICAgICAgICAgICAgIEdMUGxhdGZvcm1TdXJm
YWNlOjpTdXBwb3J0QWxwaGE7CkBAIC00NTEsNiArNDY5LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgbV9wcml2YXRlID0gMDsKIH0KIAorI2lmICFQTEFU
Rk9STShRVCkKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1CZWdpblBhaW50KGNvbnN0IEludFNpemUmLCBjaGFyKiwgaW50KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CkBAIC00NjIsNSArNDgxLDYgQEAgUGFzc1JlZlB0cjxJbWFnZT4g
R3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFkT25seUltYWdlKGNvbnN0IEludFJlY3QmKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFj
L0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41NzdiODIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAK
QEAgLTAsMCArMSw0NDAgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkgJiYgT1MoREFSV0lOKQorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJHTC5oIgorI2luY2x1ZGUgPENHTENvbnRleHQuaD4KKyNpbmNsdWRlIDxDR0xDdXJyZW50
Lmg+CisjaW5jbHVkZSA8Q0dMSU9TdXJmYWNlLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24v
Q29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxJT1N1cmZhY2UvSU9TdXJmYWNlLmg+CisjaW5j
bHVkZSA8T3BlbkdML09wZW5HTC5oPgorI2luY2x1ZGUgPE9wZW5HTC9nbC5oPgorI2luY2x1ZGUg
PG1hY2gvbWFjaC5oPgorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0
aW9uPgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1u
YXRpdmVpbnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyB1aW50MzJfdCBjcmVhdGVUZXh0dXJlKElPU3VyZmFjZVJlZiBoYW5kbGUpCit7CisgICAgR0x1
aW50IHRleHR1cmUgPSAwOworICAgIEdMdWludCBmb3JtYXQgPSBHTF9CR1JBOworICAgIEdMdWlu
dCB0eXBlID0gR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWOworICAgIEdMdWludCBpbnRlcm5h
bEZvcm1hdCA9IEdMX1JHQkE7CisgICAgQ0dMQ29udGV4dE9iaiBjb250ZXh0ID0gQ0dMR2V0Q3Vy
cmVudENvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgR0xpbnQgcHJldlRleHR1cmU7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9URVhUVVJFX1JFQ1RB
TkdMRV9BUkIsICZwcmV2VGV4dHVyZSk7CisKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJl
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwgdGV4dHVyZSk7
CisgICAgQ0dMRXJyb3IgZXJyb3IgPSBDR0xUZXhJbWFnZUlPU3VyZmFjZTJEKGNvbnRleHQsIEdM
X1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwgaW50ZXJuYWxGb3JtYXQsIElPU3VyZmFjZUdldFdpZHRo
KGhhbmRsZSksIElPU3VyZmFjZUdldEhlaWdodChoYW5kbGUpLCBmb3JtYXQsIHR5cGUsIGhhbmRs
ZSwgMCk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRl
eHR1cmUpOworICAgICAgICB0ZXh0dXJlID0gMDsKKyAgICB9CisKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwgcHJldlRleHR1cmUpOworCisgICAgcmV0dXJuIHRl
eHR1cmU7Cit9CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKK3B1YmxpYzoKKyAg
ICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tl
biwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKKyAgICAgICAgOiBtX2NvbnRleHQoMCkKKyAgICAgICAg
LCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX3Rva2VuKHRva2VuKQorICAgICAgICAsIG1fZnJv
bnRCdWZmZXJUZXh0dXJlKDApCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclJlYWRUZXh0dXJlKDAp
CisgICAgICAgICwgbV9iYWNrQnVmZmVyVGV4dHVyZSgwKQorICAgICAgICAsIG1fYmFja0J1ZmZl
clJlYWRUZXh0dXJlKDApCisgICAgICAgICwgbV9yZWFkRmJvKDApCisgICAgICAgICwgbV9kcmF3
RmJvKDApCisgICAgeworICAgICAgICBtX2Zyb250QnVmZmVyID0gSU9TdXJmYWNlTG9va3VwRnJv
bU1hY2hQb3J0KG1fdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworICAgICAgICBtX2JhY2tCdWZm
ZXIgPSBJT1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQobV90b2tlbi5iYWNrQnVmZmVySGFuZGxl
KTsKKyAgICB9CisKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplLCBHcmFwaGlj
c1N1cmZhY2U6OkZsYWdzIGZsYWdzKQorICAgICAgICA6IG1fY29udGV4dCgwKQorICAgICAgICAs
IG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKDApCisgICAgICAg
ICwgbV9mcm9udEJ1ZmZlclJlYWRUZXh0dXJlKDApCisgICAgICAgICwgbV9iYWNrQnVmZmVyVGV4
dHVyZSgwKQorICAgICAgICAsIG1fYmFja0J1ZmZlclJlYWRUZXh0dXJlKDApCisgICAgICAgICwg
bV9yZWFkRmJvKDApCisgICAgICAgICwgbV9kcmF3RmJvKDApCisgICAgeworI2lmIFBMQVRGT1JN
KFFUKQorICAgICAgICBRUGxhdGZvcm1OYXRpdmVJbnRlcmZhY2UqIG5hdGl2ZUludGVyZmFjZSA9
IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYXRpdmVJbnRlcmZhY2UoKTsKKyAgICAgICAgQ0dM
Q29udGV4dE9iaiBzaGFyZUNvbnRleHRPYmplY3QgPSBzdGF0aWNfY2FzdDxDR0xDb250ZXh0T2Jq
PihuYXRpdmVJbnRlcmZhY2UtPm5hdGl2ZVJlc291cmNlRm9yQ29udGV4dChRQnl0ZUFycmF5TGl0
ZXJhbCgiY2dsQ29udGV4dE9iaiIpLCBzaGFyZUNvbnRleHQpKTsKKyAgICAgICAgaWYgKCFzaGFy
ZUNvbnRleHRPYmplY3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQ0dMUGl4ZWxG
b3JtYXRPYmogcGl4ZWxGb3JtYXRPYmplY3QgPSBDR0xHZXRQaXhlbEZvcm1hdChzaGFyZUNvbnRl
eHRPYmplY3QpOworICAgICAgICBpZiAoa0NHTE5vRXJyb3IgIT0gQ0dMQ3JlYXRlQ29udGV4dChw
aXhlbEZvcm1hdE9iamVjdCwgc2hhcmVDb250ZXh0T2JqZWN0LCAmbV9jb250ZXh0KSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBDR0xSZXRhaW5Db250ZXh0KG1fY29udGV4dCk7Cisj
ZW5kaWYKKworICAgICAgICB1bnNpZ25lZCBwaXhlbEZvcm1hdCA9ICdCR1JBJzsKKyAgICAgICAg
dW5zaWduZWQgYnl0ZXNQZXJFbGVtZW50ID0gNDsKKyAgICAgICAgaW50IHdpZHRoID0gbV9zaXpl
LndpZHRoKCk7CisgICAgICAgIGludCBoZWlnaHQgPSBtX3NpemUuaGVpZ2h0KCk7CisKKyAgICAg
ICAgdW5zaWduZWQgbG9uZyBieXRlc1BlclJvdyA9IElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lP
U3VyZmFjZUJ5dGVzUGVyUm93LCB3aWR0aCAqIGJ5dGVzUGVyRWxlbWVudCk7CisgICAgICAgIGlm
ICghYnl0ZXNQZXJSb3cpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5zaWduZWQg
bG9uZyBhbGxvY1NpemUgPSBJT1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VBbGxvY1Np
emUsIGhlaWdodCAqIGJ5dGVzUGVyUm93KTsKKyAgICAgICAgaWYgKCFhbGxvY1NpemUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3Qgdm9pZCAqa2V5c1s2XTsKKyAgICAgICAg
Y29uc3Qgdm9pZCAqdmFsdWVzWzZdOworICAgICAgICBrZXlzWzBdID0ga0lPU3VyZmFjZVdpZHRo
OworICAgICAgICB2YWx1ZXNbMF0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmd2lkdGgpOworICAgICAgICBrZXlzWzFdID0ga0lPU3VyZmFjZUhlaWdodDsKKyAgICAgICAg
dmFsdWVzWzFdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7
CisgICAgICAgIGtleXNbMl0gPSBrSU9TdXJmYWNlUGl4ZWxGb3JtYXQ7CisgICAgICAgIHZhbHVl
c1syXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZwaXhlbEZvcm1hdCk7
CisgICAgICAgIGtleXNbM10gPSBrSU9TdXJmYWNlQnl0ZXNQZXJFbGVtZW50OworICAgICAgICB2
YWx1ZXNbM10gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmYnl0ZXNQZXJF
bGVtZW50KTsKKyAgICAgICAga2V5c1s0XSA9IGtJT1N1cmZhY2VCeXRlc1BlclJvdzsKKyAgICAg
ICAgdmFsdWVzWzRdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZieXRl
c1BlclJvdyk7CisgICAgICAgIGtleXNbNV0gPSBrSU9TdXJmYWNlQWxsb2NTaXplOworICAgICAg
ICB2YWx1ZXNbNV0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwgJmFsbG9j
U2l6ZSk7CisKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QgPSBDRkRpY3Rpb25hcnlDcmVh
dGUoMCwga2V5cywgdmFsdWVzLCA2LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDY7IGkrKykKKyAgICAgICAgICAgIENGUmVsZWFzZSh2YWx1ZXNbaV0pOworCisg
ICAgICAgIG1fZnJvbnRCdWZmZXIgPSBJT1N1cmZhY2VDcmVhdGUoZGljdCk7CisgICAgICAgIG1f
YmFja0J1ZmZlciA9IElPU3VyZmFjZUNyZWF0ZShkaWN0KTsKKworICAgICAgICBpZiAoIShmbGFn
cyAmIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5nKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4oSU9TdXJmYWNlQ3Jl
YXRlTWFjaFBvcnQobV9mcm9udEJ1ZmZlciksIElPU3VyZmFjZUNyZWF0ZU1hY2hQb3J0KG1fYmFj
a0J1ZmZlcikpOworICAgIH0KKworICAgIH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKKyAgICB7
CisgICAgICAgIGlmIChtX2Zyb250QnVmZmVyVGV4dHVyZSkKKyAgICAgICAgICAgIGdsRGVsZXRl
VGV4dHVyZXMoMSwgJm1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKworICAgICAgICBpZiAobV9mcm9u
dEJ1ZmZlclJlYWRUZXh0dXJlKQorICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9m
cm9udEJ1ZmZlclJlYWRUZXh0dXJlKTsKKworICAgICAgICBpZiAobV9iYWNrQnVmZmVyVGV4dHVy
ZSkKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fYmFja0J1ZmZlclRleHR1cmUp
OworCisgICAgICAgIGlmIChtX2JhY2tCdWZmZXJSZWFkVGV4dHVyZSkKKyAgICAgICAgICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJm1fYmFja0J1ZmZlclJlYWRUZXh0dXJlKTsKKworICAgICAgICBp
ZiAobV9mcm9udEJ1ZmZlcikKKyAgICAgICAgICAgIENGUmVsZWFzZShJT1N1cmZhY2VSZWYobV9m
cm9udEJ1ZmZlcikpOworCisgICAgICAgIGlmIChtX2JhY2tCdWZmZXIpCisgICAgICAgICAgICBD
RlJlbGVhc2UoSU9TdXJmYWNlUmVmKG1fYmFja0J1ZmZlcikpOworCisgICAgICAgIGlmIChtX3Jl
YWRGYm8pCisgICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9yZWFkRmJvKTsK
KworICAgICAgICBpZiAobV9kcmF3RmJvKQorICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1fZHJhd0Zibyk7CisKKyAgICAgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgICAg
IENHTFJlbGVhc2VDb250ZXh0KG1fY29udGV4dCk7CisKKyAgICAgICAgaWYgKG1fdG9rZW4uZnJv
bnRCdWZmZXJIYW5kbGUpCisgICAgICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rh
c2tfc2VsZigpLCBtX3Rva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICAgICAgaWYgKG1fdG9r
ZW4uYmFja0J1ZmZlckhhbmRsZSkKKyAgICAgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIG1fdG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisKKyAgICB9CisKKyAg
ICB1aW50MzJfdCBzd2FwQnVmZmVycygpCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV9mcm9u
dEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXJU
ZXh0dXJlLCBtX2JhY2tCdWZmZXJUZXh0dXJlKTsKKyAgICAgICAgc3RkOjpzd2FwKG1fZnJvbnRC
dWZmZXJSZWFkVGV4dHVyZSwgbV9iYWNrQnVmZmVyUmVhZFRleHR1cmUpOworCisgICAgICAgIHJl
dHVybiBJT1N1cmZhY2VHZXRJRChtX2Zyb250QnVmZmVyKTsKKyAgICB9CisKKyAgICB2b2lkIG1h
a2VDdXJyZW50KCkKKyAgICB7CisgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gQ0dMR2V0Q3Vy
cmVudENvbnRleHQoKTsKKworICAgICAgICBpZiAobV9jb250ZXh0KQorICAgICAgICAgICAgQ0dM
U2V0Q3VycmVudENvbnRleHQobV9jb250ZXh0KTsKKyAgICB9CisKKyAgICB2b2lkIGRvbmVDdXJy
ZW50KCkKKyAgICB7CisgICAgICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1fZGV0YWNoZWRDb250
ZXh0KTsKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSAwOworICAgIH0KKworICAgIHZvaWQg
Y29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBnbEZsdXNoIGNhbiBw
b3NzaWJseSBiZSByZXBsYWNlZCBieSB1c2luZyB0aGUgR0xfQVJCX3N5bmMgZXh0ZW5zaW9uLgor
ICAgICAgICBnbEZsdXNoKCk7IC8vIE1ha2Ugc3VyZSB0aGUgdGV4dHVyZSBoYXMgYWN0dWFsbHkg
YmVlbiBjb21wbGV0ZWx5IHdyaXR0ZW4gaW4gdGhlIG9yaWdpbmFsIGNvbnRleHQuCisKKyAgICAg
ICAgbWFrZUN1cnJlbnQoKTsKKworICAgICAgICBpbnQgeCA9IHNvdXJjZVJlY3QueCgpOworICAg
ICAgICBpbnQgeSA9IHNvdXJjZVJlY3QueSgpOworICAgICAgICBpbnQgd2lkdGggPSBzb3VyY2VS
ZWN0LndpZHRoKCk7CisgICAgICAgIGludCBoZWlnaHQgPSBzb3VyY2VSZWN0LmhlaWdodCgpOwor
CisgICAgICAgIGdsUHVzaEF0dHJpYihHTF9BTExfQVRUUklCX0JJVFMpOworICAgICAgICBHTGlu
dCBwcmV2aW91c0ZCTzsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9CSU5E
SU5HLCAmcHJldmlvdXNGQk8pOworCisgICAgICAgIGlmICghbV9kcmF3RmJvKQorICAgICAgICAg
ICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZHJhd0Zibyk7CisKKyAgICAgICAgaWYgKCFtX3Jl
YWRGYm8pCisgICAgICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9yZWFkRmJvKTsKKwor
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtX3JlYWRGYm8p
OworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX1JFQURfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKKworICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBtX2RyYXdGYm8pOworICAg
ICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0RSQVdfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIsIGJhY2tCdWZmZXJUZXh0dXJl
SUQoKSwgMCk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQs
IHgsIHgraGVpZ2h0LCB5K3dpZHRoLCB5LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIp
OyAvLyBGbGlwIHRoZSB0ZXh0dXJlIHVwc2lkZSBkb3duLgorCisgICAgICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRFJBV19GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwgMCwgMCk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfMkQsIDAsIDApOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
cHJldmlvdXNGQk8pOworICAgICAgICBnbFBvcEF0dHJpYigpOworCisgICAgICAgIC8vIEZsdXNo
aW5nIHRoZSBnbCBjb21tYW5kIGJ1ZmZlciBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoZSB0ZXh0
dXJlIGhhcyBjb3JyZWN0bHkgYmVlbiBib3VuZCB0byB0aGUgSU9TdXJmYWNlLgorICAgICAgICBn
bEZsdXNoKCk7CisKKyAgICAgICAgc3dhcEJ1ZmZlcnMoKTsKKyAgICAgICAgZG9uZUN1cnJlbnQo
KTsKKyAgICB9CisKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tlbigpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV90b2tlbjsKKyAgICB9CisKKyAgICB1aW50MzJfdCBmcm9udEJ1
ZmZlclRleHR1cmVJRCgpCisgICAgeworICAgICAgICBpZiAoIW1fZnJvbnRCdWZmZXJSZWFkVGV4
dHVyZSkKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXJSZWFkVGV4dHVyZSA9IGNyZWF0ZVRleHR1
cmUobV9mcm9udEJ1ZmZlcik7CisKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRCdWZmZXJSZWFkVGV4
dHVyZTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBiYWNrQnVmZmVyVGV4dHVyZUlEKCkKKyAgICB7
CisgICAgICAgIGlmICghbV9iYWNrQnVmZmVyVGV4dHVyZSkKKyAgICAgICAgICAgIG1fYmFja0J1
ZmZlclRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKG1fYmFja0J1ZmZlcik7CisKKyAgICAgICAgcmV0
dXJuIG1fYmFja0J1ZmZlclRleHR1cmU7CisgICAgfQorCisgICAgUGxhdGZvcm1HcmFwaGljc1N1
cmZhY2UgZnJvbnRCdWZmZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRC
dWZmZXI7CisgICAgfQorCisgICAgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2UgYmFja0J1ZmZlcigp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iYWNrQnVmZmVyOworICAgIH0KKworICAg
IEludFNpemUgc2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zaXplOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBDR0xDb250ZXh0T2JqIG1fY29udGV4dDsKKyAgICBJbnRTaXpl
IG1fc2l6ZTsKKyAgICBDR0xDb250ZXh0T2JqIG1fZGV0YWNoZWRDb250ZXh0OworICAgIFBsYXRm
b3JtR3JhcGhpY3NTdXJmYWNlIG1fZnJvbnRCdWZmZXI7CisgICAgUGxhdGZvcm1HcmFwaGljc1N1
cmZhY2UgbV9iYWNrQnVmZmVyOworICAgIHVpbnQzMl90IG1fZnJvbnRCdWZmZXJUZXh0dXJlOwor
ICAgIHVpbnQzMl90IG1fZnJvbnRCdWZmZXJSZWFkVGV4dHVyZTsKKyAgICB1aW50MzJfdCBtX2Jh
Y2tCdWZmZXJUZXh0dXJlOworICAgIHVpbnQzMl90IG1fYmFja0J1ZmZlclJlYWRUZXh0dXJlOwor
ICAgIHVpbnQzMl90IG1fcmVhZEZibzsKKyAgICB1aW50MzJfdCBtX2RyYXdGYm87CisgICAgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4gbV90b2tlbjsKK307CisKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1FeHBvcnQoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUt
PnRva2VuKCk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1HZXRUZXh0
dXJlSUQoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmZyb250QnVmZmVyVGV4dHVyZUlEKCk7
Cit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNvcHlUb0dMVGV4dHVyZSh1aW50
MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBJbnRQb2ludCYgb2Zmc2V0KQoreworICAgIGdsUHVzaEF0dHJpYihHTF9BTExfQVRUUklCX0JJ
VFMpOworICAgIGlmICghbV9mYm8pCisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zi
byk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIsIDApOworICAg
IGdsQmluZFRleHR1cmUodGFyZ2V0LCBpZCk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVB
RF9GUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVB
RF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FSQiwgbV9wcml2YXRlLT5mcm9udEJ1ZmZlclRleHR1cmVJRCgpLCAwKTsKKyAgICBnbENvcHlU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCBv
ZmZzZXQueCgpLCBvZmZzZXQueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVp
Z2h0KCkpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQiwgMCwgMCk7Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgMCk7CisgICAgZ2xQb3BB
dHRyaWIoKTsKKworICAgIC8vIEFjY29yZGluZyB0byBJT1N1cmZhY2UncyBkb2N1bWVudGF0aW9u
LCBnbEJpbmRGcmFtZWJ1ZmZlciBpcyB0aGUgb25lIHRyaWdnZXJpbmcgYW4gdXBkYXRlIG9mIHRo
ZSBzdXJmYWNlJ3MgY2FjaGUuCisgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIHN0YXJ0cyByZW5k
ZXJpbmcgYW5kIHVubG9ja3MgdGhlIHN1cmZhY2UgYmVmb3JlIHRoaXMgaGFwcGVucywgd2UgbWln
aHQgY29weSBjb250ZW50cworICAgIC8vIG9mIHRoZSBjdXJyZW50bHkgcmVuZGVyaW5nIGZyYW1l
IG9uIG91ciB0ZXh0dXJlIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzbHkgY29tcGxldGVkIGZyYW1l
LgorICAgIC8vIEZsdXNoIHRoZSBjb21tYW5kIGJ1ZmZlciB0byByZWR1Y2UgdGhlIG9kZHMgb2Yg
dGhpcyBoYXBwZW5pbmcsIHRoaXMgd291bGQgbm90IGJlIG5lY2Vzc2FyeSB3aXRoIGRvdWJsZSBi
dWZmZXJpbmcuCisgICAgZ2xGbHVzaCgpOworfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1Db3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCkKK3sKKyAgICBtX3ByaXZhdGUtPmNvcHlGcm9tVGV4dHVyZSh0ZXh0dXJlLCBzb3Vy
Y2VSZWN0KTsKK30KKwordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQoreworICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6ZSgpOworICAgIEZs
b2F0UmVjdCByZWN0T25Db250ZW50cyhGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIGFk
anVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0
KHJlY3RPbkNvbnRlbnRzLCB0YXJnZXRSZWN0KSk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1h
cHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fcHJpdmF0ZS0+ZnJvbnRCdWZm
ZXJUZXh0dXJlSUQoKSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCB8IFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QsIHNpemUsIHJlY3RPbkNvbnRlbnRzLCBhZGp1
c3RlZFRyYW5zZm9ybSwgb3BhY2l0eSk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIElPU3VyZmFjZUdldElE
KG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXIoKSk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1Td2FwQnVmZmVycygpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3dhcEJ1
ZmZlcnMoKTsKK30KKworSW50U2l6ZSBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU2l6ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2l6ZSgpOworfQorCitQYXNzUmVmUHRyPEdy
YXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCBGbGFncyBmbGFncywgY29uc3QgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBz
aGFyZUNvbnRleHQpCit7CisgICAgLy8gV2UgY3VycmVudGx5IGRpc2FibGUgc3VwcG9ydCBmb3Ig
Q29weVRvVGV4dHVyZSBvbiBNYWMsIGJlY2F1c2UgdGhpcyBpcyB1c2VkIGZvciBzaW5nbGUgYnVm
ZmVyZWQgVGlsZXMuCisgICAgLy8gVGhlIHNpbmdsZSBidWZmZXJlZCBuYXR1cmUgb2YgdGhpcyBy
ZXF1aXJlcyBhIGNhbGwgdG8gZ2xGbHVzaCwgYXMgZGVzY3JpYmVkIGluIHBsYXRmb3JtQ29weVRv
VGV4dHVyZS4KKyAgICAvLyBUaGlzIGNhbGwgYmxvY2tzIHRoZSBHUFUgZm9yIGFib3V0IDQwbXMs
IHdoaWNoIG1ha2VzIHNtb290aCBhbmltYXRpb25zIGltcG9zc2libGUuCisgICAgaWYgKGZsYWdz
ICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5nbGVCdWZmZXJl
ZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc1N1
cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKyAgICBzdXJmYWNlLT5tX3ByaXZhdGUgPSBuZXcgR3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZShzaGFyZUNvbnRleHQsIHNpemUsIGZsYWdzKTsKKworICAgIGlmICgh
c3VyZmFjZS0+bV9wcml2YXRlLT5mcm9udEJ1ZmZlcigpIHx8ICFzdXJmYWNlLT5tX3ByaXZhdGUt
PmJhY2tCdWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNl
PigpOworCisgICAgcmV0dXJuIHN1cmZhY2U7Cit9CisKK1Bhc3NSZWZQdHI8R3JhcGhpY3NTdXJm
YWNlPiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtSW1wb3J0KGNvbnN0IEludFNpemUmIHNpemUs
IEZsYWdzIGZsYWdzLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisgICAg
Ly8gV2UgY3VycmVudGx5IGRpc2FibGUgc3VwcG9ydCBmb3IgQ29weVRvVGV4dHVyZSBvbiBNYWMs
IGJlY2F1c2UgdGhpcyBpcyB1c2VkIGZvciBzaW5nbGUgYnVmZmVyZWQgVGlsZXMuCisgICAgLy8g
VGhlIHNpbmdsZSBidWZmZXJlZCBuYXR1cmUgb2YgdGhpcyByZXF1aXJlcyBhIGNhbGwgdG8gZ2xG
bHVzaCwgYXMgZGVzY3JpYmVkIGluIHBsYXRmb3JtQ29weVRvVGV4dHVyZS4KKyAgICAvLyBUaGlz
IGNhbGwgYmxvY2tzIHRoZSBHUFUgZm9yIGFib3V0IDQwbXMsIHdoaWNoIG1ha2VzIHNtb290aCBh
bmltYXRpb25zIGltcG9zc2libGUuCisgICAgaWYgKGZsYWdzICYgU3VwcG9ydHNDb3B5VG9UZXh0
dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5nbGVCdWZmZXJlZCkKKyAgICAgICAgcmV0dXJuIFBh
c3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc1N1cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsK
KyAgICBzdXJmYWNlLT5tX3ByaXZhdGUgPSBuZXcgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSh0b2tl
biwgc2l6ZSk7CisKKyAgICBpZiAoIXN1cmZhY2UtPm1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXIoKSB8
fCAhc3VyZmFjZS0+bV9wcml2YXRlLT5iYWNrQnVmZmVyKCkpCisgICAgICAgIHJldHVybiBQYXNz
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKKworICAgIHJldHVybiBzdXJmYWNlOworfQorCitz
dGF0aWMgaW50IGlvU3VyZmFjZUxvY2tPcHRpb25zKGludCBsb2NrT3B0aW9ucykKK3sKKyAgICBp
bnQgb3B0aW9ucyA9IDA7CisgICAgaWYgKGxvY2tPcHRpb25zICYgR3JhcGhpY3NTdXJmYWNlOjpS
ZWFkT25seSkKKyAgICAgICAgb3B0aW9ucyB8PSBrSU9TdXJmYWNlTG9ja1JlYWRPbmx5OworICAg
IGlmICghKGxvY2tPcHRpb25zICYgR3JhcGhpY3NTdXJmYWNlOjpSZXRhaW5QaXhlbHMpKQorICAg
ICAgICBvcHRpb25zIHw9IGtJT1N1cmZhY2VMb2NrQXZvaWRTeW5jOworCisgICAgcmV0dXJuIG9w
dGlvbnM7Cit9CisKK2NoYXIqIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Mb2NrKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGludCogb3V0cHV0U3RyaWRlLCBMb2NrT3B0aW9ucyBsb2NrT3B0aW9ucykK
K3sKKyAgICAvLyBMb2NraW5nIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBzaW5nbGUgYnVmZmVyZWQg
dXNlLgorICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBvbmx5IGhhdmUgYSBmcm9udCBidWZmZXIsIHNv
IHdlIG9ubHkgbG9jayB0aGlzIG9uZS4KKyAgICBtX2xvY2tPcHRpb25zID0gbG9ja09wdGlvbnM7
CisgICAgSU9SZXR1cm4gc3RhdHVzID0gSU9TdXJmYWNlTG9jayhtX3ByaXZhdGUtPmZyb250QnVm
ZmVyKCksIGlvU3VyZmFjZUxvY2tPcHRpb25zKG1fbG9ja09wdGlvbnMpLCAwKTsKKyAgICBpZiAo
c3RhdHVzID09IGtJT1JldHVybkNhbm5vdExvY2spIHsKKyAgICAgICAgbV9sb2NrT3B0aW9ucyB8
PSBSZXRhaW5QaXhlbHM7CisgICAgICAgIElPU3VyZmFjZUxvY2sobV9wcml2YXRlLT5mcm9udEJ1
ZmZlcigpLCBpb1N1cmZhY2VMb2NrT3B0aW9ucyhtX2xvY2tPcHRpb25zKSwgMCk7CisgICAgfQor
CisgICAgaW50IHN0cmlkZSA9IElPU3VyZmFjZUdldEJ5dGVzUGVyUm93KG1fcHJpdmF0ZS0+ZnJv
bnRCdWZmZXIoKSk7CisgICAgaWYgKG91dHB1dFN0cmlkZSkKKyAgICAgICAgKm91dHB1dFN0cmlk
ZSA9IHN0cmlkZTsKKworICAgIGNoYXIqIGJhc2UgPSBzdGF0aWNfY2FzdDxjaGFyKj4oSU9TdXJm
YWNlR2V0QmFzZUFkZHJlc3MobV9wcml2YXRlLT5mcm9udEJ1ZmZlcigpKSk7CisKKyAgICByZXR1
cm4gYmFzZSArIHN0cmlkZSAqIHJlY3QueSgpICsgcmVjdC54KCkgKiA0OworfQorCit2b2lkIEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1VbmxvY2soKQoreworICAgIElPU3VyZmFjZVVubG9jayht
X3ByaXZhdGUtPmZyb250QnVmZmVyKCksIGlvU3VyZmFjZUxvY2tPcHRpb25zKG1fbG9ja09wdGlv
bnMpLCAwKTsKK30KKwordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSgpCit7
CisgICAgaWYgKG1fZmJvKQorICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8p
OworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIGRlbGV0ZSBtX3ByaXZhdGU7CisgICAgbV9w
cml2YXRlID0gMDsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VR
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNkMzBkOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0
L0dyYXBoaWNzU3VyZmFjZVF0LmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorIENvcHlyaWdodCAo
QykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzU3VyZmFjZS5oIgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpICYmIFBMQVRGT1JN
KFFUKQorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNpbmNsdWRlIDxRSW1hZ2U+CisjaW5j
bHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVBpeG1hcD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
ewordm9pZCBHcmFwaGljc1N1cmZhY2U6OmRpZFJlbGVhc2VJbWFnZSh2b2lkKiBkYXRhKQorewor
ICAgIEdyYXBoaWNzU3VyZmFjZSogc3VyZmFjZSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzU3VyZmFj
ZSo+KGRhdGEpOworICAgIHN1cmZhY2UtPnBsYXRmb3JtVW5sb2NrKCk7Cit9CisKK3N0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1CZWdpblBh
aW50KGNvbnN0IEludFNpemUmIHNpemUsIGNoYXIqIGJpdHMsIGludCBzdHJpZGUpCit7CisgICAg
UUltYWdlOjpGb3JtYXQgZm9ybWF0ID0gKGZsYWdzKCkgJiBTdXBwb3J0c0FscGhhKSA/IFFJbWFn
ZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkIDogUUltYWdlOjpGb3JtYXRfUkdCMzI7CisK
KyAgICAvLyBUaGUgaW1hZ2UgYW5kIHBhaW50ZXIgd2lsbCBiZSByZWxlYXNlZCB3aGVuIHRoZSBy
ZXR1cm5lZCBHcmFwaGljc0NvbnRleHQgaXMgcmVsZWFzZWQuCisgICAgUUltYWdlKiBpbWFnZSA9
IG5ldyBRSW1hZ2UocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KGJpdHMpLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCksIHN0cmlkZSwgZm9ybWF0LCBkaWRSZWxlYXNlSW1hZ2UsIHRoaXMpOwor
ICAgIFFQYWludGVyKiBwYWludGVyID0gbmV3IFFQYWludGVyKGltYWdlKTsKKyAgICBwYWludGVy
LT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0sIHRydWUpOwor
ICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRl
eHQ+KHBhaW50ZXIpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dGFrZU93bmVyc2hpcE9mUGxhdGZv
cm1Db250ZXh0KCk7CisgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dDsKK30KKworUGFzc1JlZlB0
cjxJbWFnZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFkT25seUltYWdlKGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgaW50IHN0cmlkZTsKKyAgICBRSW1hZ2U6OkZvcm1hdCBmb3JtYXQg
PSAoZmxhZ3MoKSAmIFN1cHBvcnRzQWxwaGEpID8gUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11
bHRpcGxpZWQgOiBRSW1hZ2U6OkZvcm1hdF9SR0IzMjsKKyAgICBjaGFyKiBkYXRhID0gcGxhdGZv
cm1Mb2NrKHJlY3QsICZzdHJpZGUsIFJldGFpblBpeGVscyB8IFJlYWRPbmx5KTsKKyAgICBRSW1h
Z2UgaW1hZ2UocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KGRhdGEpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCksIHN0cmlkZSwgZm9ybWF0LCBkaWRSZWxlYXNlSW1hZ2UsIHRoaXMpOworICAg
IHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG5ldyBRUGl4bWFwKFFQaXhtYXA6OmZyb21JbWFn
ZShpbWFnZSkpKTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3dpbi9HcmFwaGljc1N1cmZh
Y2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOGM1ZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy93aW4vR3JhcGhpY3NTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDUwMSBAQAorLyoKKworIENv
cHlyaWdodCAoQykgMjAxMiBaZW5vIEFsYmlzc2VyIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1N1cmZhY2UuaCIKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJHTC5oIgorCisjZGVmaW5lIEVHTF9FR0xFWFRfUFJPVE9UWVBFUyAvLyBUaGlzIG11
c3QgYmUgZGVmaW5lZCBiZWZvcmUgaW5jbHVkaW5nIGVnbC5oIGFuZCBlZ2xleHQuaC4KKyNpbmNs
dWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaWYgUExBVEZPUk0o
UVQpCisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0
PgorI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgU1RSSU5HSUZZKC4uLikgI19fVkFfQVJHU19f
CisKK3N0YXRpYyBHTHVpbnQgbG9hZFNoYWRlcihHTGVudW0gdHlwZSwgY29uc3QgR0xjaGFyICpz
aGFkZXJTcmMpCit7CisgICAgR0x1aW50IHNoYWRlcjsKKyAgICBHTGludCBjb21waWxlZDsKKwor
ICAgIHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKHR5cGUpOworICAgIGlmICghc2hhZGVyKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnNoYWRlclNy
YywgMCk7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xHZXRTaGFkZXJpdihz
aGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgIGlmICghY29tcGlsZWQp
IHsKKyAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIHJldHVybiBzaGFkZXI7Cit9CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2
YXRlIHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IEludFNpemUm
IHNpemUsIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKQorICAgICAgICA6IG1fdG9rZW4odG9r
ZW4pCisgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKKyAgICAgICAgLCBtX2RldGFjaGVk
UmVhZFN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2RldGFjaGVkRHJhd1N1cmZhY2UoMCkKKyAgICAg
ICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2VnbERpc3BsYXkoMCkKKyAgICAgICAgLCBt
X2VnbENvbnRleHQoMCkKKyAgICAgICAgLCBtX2VnbENvbmZpZygwKQorICAgICAgICAsIG1fZWds
RnJvbnRCdWZmZXJTdXJmYWNlKDApCisgICAgICAgICwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSgw
KQorICAgICAgICAsIG1faW5pdGlhbEZyb250QnVmZmVyU2hhcmVIYW5kbGUodG9rZW4uZnJvbnRC
dWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlKHRva2VuLmZy
b250QnVmZmVySGFuZGxlKQorICAgICAgICAsIG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlKHRva2Vu
LmJhY2tCdWZmZXJIYW5kbGUpCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkKKyAg
ICAgICAgLCBtX3NoYWRlclByb2dyYW0oMCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemVTaGFk
ZXJQcm9ncmFtKCk7CisgICAgfQorCisKKyAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250ZXh0LCBjb25zdCBJbnRTaXplJiBz
aXplLCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdzKQorICAgICAgICA6IG1fZGV0YWNoZWRD
b250ZXh0KDApCisgICAgICAgICwgbV9kZXRhY2hlZFJlYWRTdXJmYWNlKDApCisgICAgICAgICwg
bV9kZXRhY2hlZERyYXdTdXJmYWNlKDApCisgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAg
ICwgbV9lZ2xEaXNwbGF5KDApCisgICAgICAgICwgbV9lZ2xDb250ZXh0KDApCisgICAgICAgICwg
bV9lZ2xDb25maWcoMCkKKyAgICAgICAgLCBtX2VnbEZyb250QnVmZmVyU3VyZmFjZSgwKQorICAg
ICAgICAsIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UoMCkKKyAgICAgICAgLCBtX2luaXRpYWxGcm9u
dEJ1ZmZlclNoYXJlSGFuZGxlKDApCisgICAgICAgICwgbV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxl
KDApCisgICAgICAgICwgbV9iYWNrQnVmZmVyU2hhcmVIYW5kbGUoMCkKKyAgICAgICAgLCBtX2Zy
b250QnVmZmVyVGV4dHVyZSgwKQorICAgICAgICAsIG1fc2hhZGVyUHJvZ3JhbSgwKQorICAgIHsK
KyAgICAgICAgaW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKTsKKworICAgICAgICBzdGF0aWMgUEZO
RUdMUVVFUllTVVJGQUNFUE9JTlRFUkFOR0xFUFJPQyBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5H
TEUgPSAwOworICAgICAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSkgeworICAg
ICAgICAgICAgZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5FR0xRVUVSWVNVUkZBQ0VQT0lOVEVSQU5HTEVQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWds
UXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFIikpOworICAgICAgICAgICAgaWYgKCFlZ2xRdWVyeVN1
cmZhY2VQb2ludGVyQU5HTEUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFtX2VnbERpc3BsYXkgfHwgIW1fZWdsQ29udGV4dCB8fCAhbV9lZ2xDb25m
aWcpIHsKKyAgICAgICAgICAgIG1fZWdsRGlzcGxheSA9IGVnbEdldEN1cnJlbnREaXNwbGF5KCk7
CisKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgICAgIFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFj
ZSogbmF0aXZlSW50ZXJmYWNlID0gUUd1aUFwcGxpY2F0aW9uOjpwbGF0Zm9ybU5hdGl2ZUludGVy
ZmFjZSgpOworICAgICAgICAgICAgbV9lZ2xDb25maWcgPSBzdGF0aWNfY2FzdDxFR0xDb25maWc+
KG5hdGl2ZUludGVyZmFjZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRl
cmFsKCJlZ2xDb25maWciKSwgc2hhcmVDb250ZXh0KSk7CisgICAgICAgICAgICBFR0xDb250ZXh0
IGVnbFNoYXJlQ29udGV4dCA9IHN0YXRpY19jYXN0PEVHTENvbnRleHQ+KG5hdGl2ZUludGVyZmFj
ZS0+bmF0aXZlUmVzb3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRlcmFsKCJlZ2xDb250ZXh0
IiksIHNoYXJlQ29udGV4dCkpOworI2VuZGlmCisgICAgICAgICAgICBFR0xpbnQgY29udGV4dEF0
dHJpYnV0ZXNbXSA9IHsgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVHTF9OT05FIH07
CisgICAgICAgICAgICBtX2VnbENvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1fZWdsRGlzcGxh
eSwgbV9lZ2xDb25maWcsIGVnbFNoYXJlQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMpOworICAg
ICAgICB9CisKKyAgICAgICAgRUdMaW50IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgIEVH
TF9XSURUSCwgc2l6ZS53aWR0aCgpLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWln
aHQoKSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdCLAor
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xfVEVYVFVSRV8yRCwKKyAgICAgICAg
ICAgIEVHTF9OT05FCisgICAgICAgIH07CisKKyAgICAgICAgbV9lZ2xGcm9udEJ1ZmZlclN1cmZh
Y2UgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShtX2VnbERpc3BsYXksIG1fZWdsQ29uZmlnLCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSA9IGVnbENyZWF0ZVBi
dWZmZXJTdXJmYWNlKG1fZWdsRGlzcGxheSwgbV9lZ2xDb25maWcsIGF0dHJpYnV0ZXMpOworICAg
ICAgICBpZiAobV9lZ2xGcm9udEJ1ZmZlclN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UgfHwgbV9l
Z2xCYWNrQnVmZmVyU3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUobV9lZ2xEaXNwbGF5LCBt
X2VnbEZyb250QnVmZmVyU3VyZmFjZSwgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9B
TkdMRSwgJm1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZSk7CisgICAgICAgIGVnbFF1ZXJ5U3VyZmFj
ZVBvaW50ZXJBTkdMRShtX2VnbERpc3BsYXksIG1fZWdsQmFja0J1ZmZlclN1cmZhY2UsIEVHTF9E
M0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUsICZtX2JhY2tCdWZmZXJTaGFyZUhhbmRs
ZSk7CisKKyAgICAgICAgbV9pbml0aWFsRnJvbnRCdWZmZXJTaGFyZUhhbmRsZSA9IG1fZnJvbnRC
dWZmZXJTaGFyZUhhbmRsZTsKKworICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9r
ZW4obV9mcm9udEJ1ZmZlclNoYXJlSGFuZGxlLCBtX2JhY2tCdWZmZXJTaGFyZUhhbmRsZSk7Cisg
ICAgfQorCisgICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQorICAgIHsKKyAgICAgICAgcmVs
ZWFzZUZyb250QnVmZmVyVGV4dHVyZSgpOworCisgICAgICAgIGlmIChtX2VnbEJhY2tCdWZmZXJT
dXJmYWNlKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNwbGF5LCBtX2Vn
bEJhY2tCdWZmZXJTdXJmYWNlKTsKKworICAgICAgICBpZiAobV9zaGFkZXJQcm9ncmFtKQorICAg
ICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisgICAgICAgIG1fc2hh
ZGVyUHJvZ3JhbSA9IDA7CisKKyAgICAgICAgaWYgKG1fZWdsRGlzcGxheSAmJiBtX2VnbENvbnRl
eHQpCisgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtX2VnbERpc3BsYXksIG1fZWdsQ29u
dGV4dCk7CisgICAgfQorCisgICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKKyAgICB7CisgICAgICAgIGlmICghbWFrZUN1
cnJlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICBkcmF3VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAg
ICAgZ2xGaW5pc2goKTsKKyAgICAgICAgZG9uZUN1cnJlbnQoKTsKKyAgICB9CisKKyAgICBib29s
IG1ha2VDdXJyZW50KCkKKyAgICB7CisgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gZWdsR2V0
Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgbV9kZXRhY2hlZFJlYWRTdXJmYWNlID0gZWdsR2V0
Q3VycmVudFN1cmZhY2UoRUdMX1JFQUQpOworICAgICAgICBtX2RldGFjaGVkRHJhd1N1cmZhY2Ug
PSBlZ2xHZXRDdXJyZW50U3VyZmFjZShFR0xfRFJBVyk7CisKKyAgICAgICAgcmV0dXJuIGVnbE1h
a2VDdXJyZW50KG1fZWdsRGlzcGxheSwgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZSwgbV9lZ2xCYWNr
QnVmZmVyU3VyZmFjZSwgbV9lZ2xDb250ZXh0KTsKKyAgICB9CisKKyAgICBib29sIGRvbmVDdXJy
ZW50KCkKKyAgICB7CisgICAgICAgIGlmICghbV9kZXRhY2hlZENvbnRleHQgfHwgIW1fZGV0YWNo
ZWREcmF3U3VyZmFjZSB8fCAhbV9kZXRhY2hlZFJlYWRTdXJmYWNlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGJvb2wgc3VjY2VzcyA9IGVnbE1ha2VDdXJyZW50KG1fZWds
RGlzcGxheSwgbV9kZXRhY2hlZERyYXdTdXJmYWNlLCBtX2RldGFjaGVkUmVhZFN1cmZhY2UsIG1f
ZGV0YWNoZWRDb250ZXh0KTsKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSAwOworICAgICAg
ICBtX2RldGFjaGVkUmVhZFN1cmZhY2UgPSAwOworICAgICAgICBtX2RldGFjaGVkRHJhd1N1cmZh
Y2UgPSAwOworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdy
YXBoaWNzU3VyZmFjZSBzd2FwQnVmZmVycygpCisgICAgeworICAgICAgICBpZiAobV9mcm9udEJ1
ZmZlclRleHR1cmUpCisgICAgICAgICAgICByZWxlYXNlRnJvbnRCdWZmZXJUZXh0dXJlKCk7Cisg
ICAgICAgIHN0ZDo6c3dhcChtX2VnbEZyb250QnVmZmVyU3VyZmFjZSwgbV9lZ2xCYWNrQnVmZmVy
U3VyZmFjZSk7CisgICAgICAgIHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyU2hhcmVIYW5kbGUsIG1f
YmFja0J1ZmZlclNoYXJlSGFuZGxlKTsKKworICAgICAgICByZXR1cm4gbV9mcm9udEJ1ZmZlclNo
YXJlSGFuZGxlOworICAgIH0KKworICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworICAgIHVpbnQzMl90
IGZyb250QnVmZmVyVGV4dHVyZUlEKCkKKyAgICB7CisgICAgICAgIGlmICghbV9lZ2xGcm9udEJ1
ZmZlclN1cmZhY2UpIHsKKyAgICAgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNlID0gY3Jl
YXRlU3VyZmFjZUZyb21TaGFyZUhhbmRsZShtX3NpemUsIG1fZnJvbnRCdWZmZXJTaGFyZUhhbmRs
ZSk7CisKKyAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fZnJvbnRCdWZmZXJUZXh0dXJl
KTsKKyAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisgICAgICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fZnJvbnRCdWZmZXJUZXh0dXJlKTsKKyAg
ICAgICAgICAgIGVnbEJpbmRUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWdsRnJvbnRCdWZmZXJT
dXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworCisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTElORUFSKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1fZnJvbnRCdWZmZXJUZXh0dXJl
OworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIGluaXRpYWxGcm9udEJ1ZmZl
clNoYXJlSGFuZGxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luaXRpYWxGcm9u
dEJ1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNl
IGZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZnJvbnRCdWZmZXJTaGFyZUhhbmRsZTsKKyAgICB9CisKKyAgICBQbGF0Zm9ybUdyYXBoaWNzU3Vy
ZmFjZSBiYWNrQnVmZmVyU2hhcmVIYW5kbGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYmFja0J1ZmZlclNoYXJlSGFuZGxlOworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZUZyb250
QnVmZmVyVGV4dHVyZSgpCisgICAgeworICAgICAgICBpZiAobV9mcm9udEJ1ZmZlclRleHR1cmUp
IHsKKyAgICAgICAgICAgIGVnbFJlbGVhc2VUZXhJbWFnZShtX2VnbERpc3BsYXksIG1fZWdsRnJv
bnRCdWZmZXJTdXJmYWNlLCBFR0xfQkFDS19CVUZGRVIpOworICAgICAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbV9mcm9udEJ1ZmZlclRleHR1cmUpOworICAgICAgICAgICAgbV9mcm9udEJ1
ZmZlclRleHR1cmUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZWdsRnJvbnRCdWZm
ZXJTdXJmYWNlKQorICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobV9lZ2xEaXNwbGF5LCBt
X2VnbEZyb250QnVmZmVyU3VyZmFjZSk7CisgICAgICAgIG1fZWdsRnJvbnRCdWZmZXJTdXJmYWNl
ID0gMDsKKyAgICB9CisKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fc2l6ZTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGluaXRpYWxpemVT
aGFkZXJQcm9ncmFtKCkKKyAgICB7CisgICAgICAgIGlmIChtX3NoYWRlclByb2dyYW0pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgR0xjaGFyIHZTaGFkZXJTdHJbXSA9CisgICAgICAg
ICAgICBTVFJJTkdJRlkoCisgICAgICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzIgdmVy
dGV4OworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWMyIHRleHR1cmVDb29yZGlu
YXRlczsKKyAgICAgICAgICAgICAgICB2YXJ5aW5nIGhpZ2hwIHZlYzIgdGV4dHVyZUNvb3JkczsK
KyAgICAgICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2ZXJ0ZXgsIDAuMCwgMS4wKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dHVyZUNvb3JkcyA9IHRleHR1cmVDb29yZGluYXRlczsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworCisgICAgICAgIEdMY2hhciBmU2hhZGVy
U3RyW10gPQorICAgICAgICAgICAgU1RSSU5HSUZZKAorICAgICAgICAgICAgICAgIHZhcnlpbmcg
aGlnaHAgdmVjMiB0ZXh0dXJlQ29vcmRzOworICAgICAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxl
cjJEIHRleHR1cmU7CisgICAgICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBoaWdocCB2ZWMzIGNvbG9yID0gdGV4dHVyZTJE
KHRleHR1cmUsIHRleHR1cmVDb29yZHMpLnJnYjsKKyAgICAgICAgICAgICAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNChjbGFtcChjb2xvciwgMC4wLCAxLjApLCAxLjApOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICk7CisKKyAgICAgICAgR0x1aW50IHZlcnRleFNoYWRlcjsKKyAg
ICAgICAgR0x1aW50IGZyYWdtZW50U2hhZGVyOworICAgICAgICBHTGludCBsaW5rZWQ7CisKKyAg
ICAgICAgdmVydGV4U2hhZGVyID0gbG9hZFNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2U2hhZGVy
U3RyKTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX0ZSQUdNRU5UX1NI
QURFUiwgZlNoYWRlclN0cik7CisgICAgICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICFmcmFnbWVu
dFNoYWRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3NoYWRlclByb2dyYW0g
PSBnbENyZWF0ZVByb2dyYW0oKTsKKyAgICAgICAgaWYgKCFtX3NoYWRlclByb2dyYW0pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgZ2xBdHRhY2hTaGFkZXIobV9zaGFkZXJQcm9ncmFt
LCB2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBnbEF0dGFjaFNoYWRlcihtX3NoYWRlclByb2dyYW0s
IGZyYWdtZW50U2hhZGVyKTsKKworICAgICAgICBnbExpbmtQcm9ncmFtKG1fc2hhZGVyUHJvZ3Jh
bSk7CisgICAgICAgIGdsR2V0UHJvZ3JhbWl2KG1fc2hhZGVyUHJvZ3JhbSwgR0xfTElOS19TVEFU
VVMsICZsaW5rZWQpOworICAgICAgICBpZiAoIWxpbmtlZCkgeworICAgICAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbSk7CisgICAgICAgICAgICBtX3NoYWRlclByb2dyYW0g
PSAwOworICAgICAgICB9CisKKyAgICAgICAgbV92ZXJ0ZXhBdHRyID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihtX3NoYWRlclByb2dyYW0sICJ2ZXJ0ZXgiKTsKKyAgICAgICAgbV90ZXh0dXJlQ29vcmRp
bmF0ZXNBdHRyID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtX3NoYWRlclByb2dyYW0sICJ0ZXh0dXJl
Q29vcmRpbmF0ZXMiKTsKKyAgICAgICAgbV90ZXh0dXJlVW5pZm9ybSA9IGdsR2V0QXR0cmliTG9j
YXRpb24obV9zaGFkZXJQcm9ncmFtLCAidGV4dHVyZSIpOworCisgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Cisg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgfQorCisgICAgRUdMU3VyZmFjZSBjcmVhdGVTdXJmYWNlRnJvbVNoYXJlSGFuZGxlKGNv
bnN0IEludFNpemUmIHNpemUsIEhBTkRMRSBzaGFyZUhhbmRsZSkKKyAgICB7CisgICAgICAgIGlm
ICghbV9lZ2xEaXNwbGF5ICB8fCAhbV9lZ2xDb25maWcpIHsKKyAgICAgICAgICAgIG1fZWdsRGlz
cGxheSA9IGVnbEdldEN1cnJlbnREaXNwbGF5KCk7CisKKyNpZiBQTEFURk9STShRVCkKKyAgICAg
ICAgICAgIFFQbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSogbmF0aXZlSW50ZXJmYWNlID0gUUd1aUFw
cGxpY2F0aW9uOjpwbGF0Zm9ybU5hdGl2ZUludGVyZmFjZSgpOworICAgICAgICAgICAgbV9lZ2xD
b25maWcgPSBzdGF0aWNfY2FzdDxFR0xDb25maWc+KG5hdGl2ZUludGVyZmFjZS0+bmF0aXZlUmVz
b3VyY2VGb3JDb250ZXh0KFFCeXRlQXJyYXlMaXRlcmFsKCJlZ2xDb25maWciKSwgUU9wZW5HTENv
bnRleHQ6OmN1cnJlbnRDb250ZXh0KCkpKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAg
RUdMaW50IGF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgIEVHTF9XSURUSCwgc2l6ZS53aWR0
aCgpLAorICAgICAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWlnaHQoKSwKKyAgICAgICAgICAg
IEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdCLAorICAgICAgICAgICAgRUdMX1RF
WFRVUkVfVEFSR0VULCBFR0xfVEVYVFVSRV8yRCwKKyAgICAgICAgICAgIEVHTF9OT05FCisgICAg
ICAgIH07CisKKyAgICAgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIobV9lZ2xEaXNwbGF5LCBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFO
RExFX0FOR0xFLCByZWludGVycHJldF9jYXN0PEVHTENsaWVudEJ1ZmZlcj4oc2hhcmVIYW5kbGUp
LCBtX2VnbENvbmZpZywgYXR0cmlidXRlcyk7CisgICAgICAgIEFTU0VSVChzdXJmYWNlKTsKKwor
ICAgICAgICByZXR1cm4gc3VyZmFjZTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdUZXh0dXJlKHVp
bnQzMl90IHRleHR1cmUpCisgICAgeworICAgICAgICBnbFVzZVByb2dyYW0obV9zaGFkZXJQcm9n
cmFtKTsKKworICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5F
QVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOworCisgICAgICAgIEdMZmxvYXQgYWZWZXJ0aWNlc1tdID0geworICAgICAgICAgICAg
LTEsIC0xLAorICAgICAgICAgICAgIDEsIC0xLAorICAgICAgICAgICAgLTEsICAxLAorICAgICAg
ICAgICAgIDEsICAxCisgICAgICAgIH07CisgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlciht
X3ZlcnRleEF0dHIsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgYWZWZXJ0aWNlcyk7CisKKyAg
ICAgICAgR0xmbG9hdCBhZnRleHR1cmVDb29yZGluYXRlc1tdID0geworICAgICAgICAgICAgMCwg
MSwKKyAgICAgICAgICAgIDEsIDEsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgMSwg
MAorICAgICAgICB9OworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobV90ZXh0dXJlQ29v
cmRpbmF0ZXNBdHRyLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIGFmdGV4dHVyZUNvb3JkaW5h
dGVzKTsKKworICAgICAgICBnbFVuaWZvcm0xaShtX3RleHR1cmVVbmlmb3JtLCAwKTsKKworICAg
ICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fdmVydGV4QXR0cik7CisgICAgICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV90ZXh0dXJlQ29vcmRpbmF0ZXNBdHRyKTsKKworICAg
ICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfU1RSSVAsIDAsIDQpOworCisgICAgICAgIGds
RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fdmVydGV4QXR0cik7CisgICAgICAgIGdsRGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KG1fdGV4dHVyZUNvb3JkaW5hdGVzQXR0cik7CisKKyAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
R3JhcGhpY3NTdXJmYWNlVG9rZW4gbV90b2tlbjsKKyAgICBFR0xDb250ZXh0IG1fZGV0YWNoZWRD
b250ZXh0OworICAgIEVHTFN1cmZhY2UgbV9kZXRhY2hlZFJlYWRTdXJmYWNlOworICAgIEVHTFN1
cmZhY2UgbV9kZXRhY2hlZERyYXdTdXJmYWNlOworICAgIEludFNpemUgbV9zaXplOworICAgIEVH
TERpc3BsYXkgbV9lZ2xEaXNwbGF5OworICAgIEVHTENvbnRleHQgbV9lZ2xDb250ZXh0OworICAg
IEVHTENvbmZpZyBtX2VnbENvbmZpZzsKKyAgICBFR0xTdXJmYWNlIG1fZWdsRnJvbnRCdWZmZXJT
dXJmYWNlOworICAgIEVHTFN1cmZhY2UgbV9lZ2xCYWNrQnVmZmVyU3VyZmFjZTsKKyAgICBQbGF0
Zm9ybUdyYXBoaWNzU3VyZmFjZSBtX2luaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlOworICAg
IFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlIG1fZnJvbnRCdWZmZXJTaGFyZUhhbmRsZTsKKyAgICBQ
bGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBtX2JhY2tCdWZmZXJTaGFyZUhhbmRsZTsKKyAgICBHTHVp
bnQgbV9mcm9udEJ1ZmZlclRleHR1cmU7CisgICAgR0xpbnQgbV9zaGFkZXJQcm9ncmFtOworCisg
ICAgR0x1aW50IG1fdmVydGV4QXR0cjsKKyAgICBHTHVpbnQgbV90ZXh0dXJlQ29vcmRpbmF0ZXNB
dHRyOworICAgIEdMdWludCBtX3RleHR1cmVVbmlmb3JtOworfTsKKworR3JhcGhpY3NTdXJmYWNl
VG9rZW4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+dG9rZW4oKTsKK30KKwordWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bUdldFRleHR1cmVJRCgpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZnJvbnRCdWZmZXJUZXh0
dXJlSUQoKTsKK30KKwordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weVRvR0xUZXh0
dXJlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit7CisgICAgLy8gQ3VycmVudGx5IG5vdCBpbXBs
ZW1lbnRlZC4KK30KKwordm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0
dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAg
bV9wcml2YXRlLT5jb3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291cmNlUmVjdCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBJ
bnRTaXplIHNpemUgPSBtX3ByaXZhdGUtPnNpemUoKTsKKyAgICBGbG9hdFJlY3QgcmVjdE9uQ29u
dGVudHMoRmxvYXRQb2ludDo6emVybygpLCBzaXplKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBhZGp1c3RlZFRyYW5zZm9ybS5t
dWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0T25Db250ZW50cywg
dGFyZ2V0UmVjdCkpOworICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVN
YXBwZXIpLT5kcmF3VGV4dHVyZShwbGF0Zm9ybUdldFRleHR1cmVJRCgpLCAwLCBzaXplLCByZWN0
T25Db250ZW50cywgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOworfQorCit1aW50MzJfdCBH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdAoreworICAgIGlmICht
X3ByaXZhdGUtPmluaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgPT0gbV9wcml2YXRlLT5m
cm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChtX3By
aXZhdGUtPmluaXRpYWxGcm9udEJ1ZmZlclNoYXJlSGFuZGxlKCkgPT0gbV9wcml2YXRlLT5iYWNr
QnVmZmVyU2hhcmVIYW5kbGUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDB4RkZG
RjsKK30KKwordWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBCdWZmZXJzKCkK
K3sKKyAgICBtX3ByaXZhdGUtPnN3YXBCdWZmZXJzKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtRnJv
bnRCdWZmZXIoKTsKK30KKworSW50U2l6ZSBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2l6ZSgpOworfQorCitQYXNzUmVmUHRy
PEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgY29uc3QgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBzaGFyZUNvbnRleHQpCit7CisgICAgLy8gU2luZ2xlIGJ1ZmZlcmVkIEdyYXBoaWNzU3VyZmFj
ZSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KKyAgICBpZiAoZmxhZ3MgJiBTdXBwb3J0c0Nv
cHlUb1RleHR1cmUgfHwgZmxhZ3MgJiBTdXBwb3J0c1NpbmdsZUJ1ZmZlcmVkKQorICAgICAgICBy
ZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7CisKKyAgICBSZWZQdHI8R3JhcGhp
Y3NTdXJmYWNlPiBzdXJmYWNlID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzU3VyZmFjZShzaXplLCBm
bGFncykpOworICAgIHN1cmZhY2UtPm1fcHJpdmF0ZSA9IG5ldyBHcmFwaGljc1N1cmZhY2VQcml2
YXRlKHNoYXJlQ29udGV4dCwgc2l6ZSwgZmxhZ3MpOworCisgICAgaWYgKCFzdXJmYWNlLT5tX3By
aXZhdGUtPmZyb250QnVmZmVyU2hhcmVIYW5kbGUoKSB8fCAhc3VyZmFjZS0+bV9wcml2YXRlLT5i
YWNrQnVmZmVyU2hhcmVIYW5kbGUoKSkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhp
Y3NTdXJmYWNlPigpOworCisgICAgcmV0dXJuIHN1cmZhY2U7Cit9CisKK1Bhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtSW1wb3J0KGNvbnN0IEludFNp
emUmIHNpemUsIEZsYWdzIGZsYWdzLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4p
Cit7CisgICAgLy8gU2luZ2xlIGJ1ZmZlcmVkIEdyYXBoaWNzU3VyZmFjZSBpcyBjdXJyZW50bHkg
bm90IHN1cHBvcnRlZC4KKyAgICBpZiAoZmxhZ3MgJiBTdXBwb3J0c0NvcHlUb1RleHR1cmUgfHwg
ZmxhZ3MgJiBTdXBwb3J0c1NpbmdsZUJ1ZmZlcmVkKQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxHcmFwaGljc1N1cmZhY2U+KCk7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJm
YWNlID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzU3VyZmFjZShzaXplLCBmbGFncykpOworICAgIHN1
cmZhY2UtPm1fcHJpdmF0ZSA9IG5ldyBHcmFwaGljc1N1cmZhY2VQcml2YXRlKHNpemUsIHRva2Vu
KTsKKworICAgIGlmICghc3VyZmFjZS0+bV9wcml2YXRlLT5mcm9udEJ1ZmZlclNoYXJlSGFuZGxl
KCkgfHwgIXN1cmZhY2UtPm1fcHJpdmF0ZS0+YmFja0J1ZmZlclNoYXJlSGFuZGxlKCkpCisgICAg
ICAgIHJldHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKKworICAgIHJldHVybiBz
dXJmYWNlOworfQorCitjaGFyKiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtTG9jayhjb25zdCBJ
bnRSZWN0JiByZWN0LCBpbnQqIG91dHB1dFN0cmlkZSwgTG9ja09wdGlvbnMgbG9ja09wdGlvbnMp
Cit7CisgICAgLy8gR3JhcGhpY3NTdXJmYWNlIGlzIGN1cnJlbnRseSBvbmx5IGJlaW5nIHVzZWQg
Zm9yIFdlYkdMLCB3aGljaCBkb2VzIG5vdCByZXF1aXJlIHRoaXMgbG9ja2luZyBtZWNoYW5pc20u
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVVubG9j
aygpCit7CisgICAgLy8gR3JhcGhpY3NTdXJmYWNlIGlzIGN1cnJlbnRseSBvbmx5IGJlaW5nIHVz
ZWQgZm9yIFdlYkdMLCB3aGljaCBkb2VzIG5vdCByZXF1aXJlIHRoaXMgbG9ja2luZyBtZWNoYW5p
c20uCit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybURlc3Ryb3koKQoreworICAg
IGRlbGV0ZSBtX3ByaXZhdGU7CisgICAgbV9wcml2YXRlID0gMDsKK30KKworfQorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlNzY0ZjVjLi4z
OGI0Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAg
LTYwOSw2ICs2MDksOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVC
YWNraW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFUKSAmJiAhZGVmaW5lZChRVF9OT19EWU5BTUlD
X0NBU1QpCisgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5n
U3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOworI2VuZGlmCiAgICAgVGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7CiAKICAgICBiYWNr
aW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGly
dHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXIuaAppbmRleCA0NTBjZDBlLi5kM2MwNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAg
LTIyLDYgKzIyLDEyIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVT
RShURVhUVVJFX01BUFBFUikKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHFnbG9iYWwu
aD4KKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKSAmJiAhZGVmaW5lZChURVhNQVBfT1BFTkdM
X0VTXzIpCisgICAgI2RlZmluZSBURVhNQVBfT1BFTkdMX0VTXzIKKyNlbmRpZgorI2VuZGlmCiAj
aWYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShOSVgpKSAmJiBV
U0UoT1BFTkdMX0VTXzIpCiAjZGVmaW5lIFRFWE1BUF9PUEVOR0xfRVNfMgogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCmluZGV4IGMzNjkxZDcuLmNhMTAzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2VRdC5oIgorI2VuZGlmCisKICNpZiBVU0UoQ0FJUk8pCiAjaW5jbHVk
ZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMjc5LDYg
KzI4MywxMyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZyhQYWludEZsYWdz
IGZsYWdzKQogICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6
Q1VSUkVOVF9QUk9HUkFNLCAmZGF0YSgpLnByZXZpb3VzUHJvZ3JhbSk7CiAgICAgZGF0YSgpLnBy
ZXZpb3VzU2Npc3NvclN0YXRlID0gbV9jb250ZXh0M0QtPmlzRW5hYmxlZChHcmFwaGljc0NvbnRl
eHQzRDo6U0NJU1NPUl9URVNUKTsKICAgICBkYXRhKCkucHJldmlvdXNEZXB0aFN0YXRlID0gbV9j
b250ZXh0M0QtPmlzRW5hYmxlZChHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfVEVTVCk7CisjaWYg
UExBVEZPUk0oUVQpCisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBRUGFpbnRlciogcGFp
bnRlciA9IG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIHBhaW50ZXItPnNh
dmUoKTsKKyAgICAgICAgcGFpbnRlci0+YmVnaW5OYXRpdmVQYWludGluZygpOworICAgIH0KKyNl
bmRpZgogICAgIG1fY29udGV4dDNELT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9U
RVNUKTsKICAgICBtX2NvbnRleHQzRC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09S
X1RFU1QpOwogICAgIGRhdGEoKS5kaWRNb2RpZnlTdGVuY2lsID0gZmFsc2U7CkBAIC0zMTAsNiAr
MzIxLDE0IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjplbmRQYWludGluZygpCiAgICAgICAgIG1f
Y29udGV4dDNELT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1QpOwogICAgIGVs
c2UKICAgICAgICAgbV9jb250ZXh0M0QtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X1RFU1QpOworCisjaWYgUExBVEZPUk0oUVQpCisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAg
IHJldHVybjsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IG1fY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgcGFpbnRlci0+ZW5kTmF0aXZlUGFpbnRpbmcoKTsKKyAgICBwYWludGVyLT5y
ZXN0b3JlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdCb3JkZXIo
Y29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4KQpAQCAtMzMy
LDggKzM1MSwzMyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0JvcmRlcihjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IHdpZHRoLCBjb25zdCBGbG9hdFJlYwogdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9h
dFBvaW50JiB0YXJnZXRQb2ludCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCkKIHsKICAgICBpbnQgcG9pbnRTaXplID0gODsKKyNpZiBQTEFURk9STShRVCkKKyAg
ICBRU3RyaW5nIGNvdW50ZXJTdHJpbmcgPSBRU3RyaW5nOjpudW1iZXIobnVtYmVyKTsKIAotI2lm
IFVTRShDQUlSTykKKyAgICBRRm9udCBmb250KFFTdHJpbmc6OmZyb21MYXRpbjEoIk1vbm9zcGFj
ZSIpLCBwb2ludFNpemUsIFFGb250OjpCb2xkKTsKKyAgICBmb250LnNldFN0eWxlSGludChRRm9u
dDo6VHlwZVdyaXRlcik7CisKKyAgICBRRm9udE1ldHJpY3MgZm9udE1ldHJpY3MoZm9udCk7Cisg
ICAgaW50IHdpZHRoID0gZm9udE1ldHJpY3Mud2lkdGgoY291bnRlclN0cmluZykgKyA0OworICAg
IGludCBoZWlnaHQgPSBmb250TWV0cmljcy5oZWlnaHQoKTsKKworICAgIEludFNpemUgc2l6ZSh3
aWR0aCwgaGVpZ2h0KTsKKyAgICBJbnRSZWN0IHNvdXJjZVJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
c2l6ZSk7CisgICAgSW50UmVjdCB0YXJnZXRSZWN0KHJvdW5kZWRJbnRQb2ludCh0YXJnZXRQb2lu
dCksIHNpemUpOworCisgICAgUUltYWdlIGltYWdlKHNpemUsIE5hdGl2ZUltYWdlUXQ6OmRlZmF1
bHRGb3JtYXRGb3JBbHBoYUVuYWJsZWRJbWFnZXMoKSk7CisgICAgUVBhaW50ZXIgcGFpbnRlcigm
aW1hZ2UpOworICAgIHBhaW50ZXIuZmlsbFJlY3Qoc291cmNlUmVjdCwgQ29sb3I6OmNyZWF0ZVVu
Y2hlY2tlZChjb2xvci5ibHVlKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLnJlZCgpKSk7IC8vIFNp
bmNlIHdlIHdvbid0IHN3YXAgUitCIHdoZW4gdXBsb2FkaW5nIGEgdGV4dHVyZSwgcGFpbnQgd2l0
aCB0aGUgc3dhcHBlZCBSK0IgY29sb3IuCisgICAgcGFpbnRlci5zZXRGb250KGZvbnQpOworICAg
IHBhaW50ZXIuc2V0UGVuKFF0Ojp3aGl0ZSk7CisgICAgcGFpbnRlci5kcmF3VGV4dCgyLCBoZWln
aHQgKiAwLjg1LCBjb3VudGVyU3RyaW5nKTsKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlID0gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplKTsKKyAgICBjb25zdCB1Y2hhciog
Yml0cyA9IGltYWdlLmJpdHMoKTsKKyAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0
ZXh0dXJlLmdldCgpKS0+dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoYml0cywgc291cmNlUmVjdCwg
SW50UG9pbnQ6Onplcm8oKSwgaW1hZ2UuYnl0ZXNQZXJMaW5lKCkpOworICAgIGRyYXdUZXh0dXJl
KCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIDEuMGYsIEFsbEVkZ2VzKTsK
KworI2VsaWYgVVNFKENBSVJPKQogICAgIENTdHJpbmcgY291bnRlclN0cmluZyA9IFN0cmluZzo6
bnVtYmVyKG51bWJlcikuYXNjaWkoKTsKICAgICAvLyBjYWlyb190ZXh0X2V4dGVudHMoKSByZXF1
aXJlcyBhIGNhaXJvX3QsIHNvIGRpbWVuc2lvbnMgbmVlZCB0byBiZSBndWVzc3RpbWF0ZWQuCiAg
ICAgaW50IHdpZHRoID0gY291bnRlclN0cmluZy5sZW5ndGgoKSAqIHBvaW50U2l6ZSAqIDEuMjsK
QEAgLTg2MSw3ICs5MDUsMTEgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBpbnQgYnl0
ZXNQZXJMaW5lOwogICAgIGNvbnN0IGNoYXIqIGltYWdlRGF0YTsKIAotI2lmIFVTRShDQUlSTykK
KyNpZiBQTEFURk9STShRVCkKKyAgICBRSW1hZ2UgcUltYWdlID0gZnJhbWVJbWFnZS0+dG9JbWFn
ZSgpOworICAgIGltYWdlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHFJbWFn
ZS5jb25zdEJpdHMoKSk7CisgICAgYnl0ZXNQZXJMaW5lID0gcUltYWdlLmJ5dGVzUGVyTGluZSgp
OworI2VsaWYgVVNFKENBSVJPKQogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGZyYW1l
SW1hZ2UuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgYnl0ZXNQZXJM
aW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJ
bWFnZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcAppbmRleCA0MTA0MWY5Li42Nzg5ZmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcApAQCAtMjEsOCArMjEsMTIgQEAK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCIKIAogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVF0Lmgi
CisjZW5kaWYKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCisKICNpZiBVU0UoVEVYVFVS
RV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMwLDcgKzM0LDE1IEBAIHN0YXRp
YyBjb25zdCBpbnQgc19tYXhpbXVtQWxsb3dlZEltYWdlQnVmZmVyRGltZW5zaW9uID0gNDA5NjsK
IAogdm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZv
aWQqIGRhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3Vy
Y2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykKIHsKLSNpZiBQ
TEFURk9STShDQUlSTykKKyNpZiBQTEFURk9STShRVCkKKyAgICBRSW1hZ2UgaW1hZ2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1Y2hhcio+KGRhdGEpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdl
dFJlY3QuaGVpZ2h0KCksIGJ5dGVzUGVyTGluZSwgTmF0aXZlSW1hZ2VRdDo6ZGVmYXVsdEZvcm1h
dEZvckFscGhhRW5hYmxlZEltYWdlcygpKTsKKworICAgIFFQYWludGVyKiBwYWludGVyID0gbV9p
bWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBwYWludGVyLT5zYXZlKCk7
CisgICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfU291cmNlKTsKKyAgICBwYWludGVyLT5kcmF3SW1hZ2UodGFyZ2V0UmVjdCwgaW1hZ2UsIElu
dFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXRSZWN0LnNpemUoKSkpOworICAgIHBhaW50ZXItPnJl
c3RvcmUoKTsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0
YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YSgpKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJh
bnNmb3JtLmgKaW5kZXggNzk2MzkyMy4uNDcwZmY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5oCkBAIC0zNCw2ICszNCw4IEBACiB0eXBlZGVmIHN0cnVjdCBDR0FmZmluZVRyYW5zZm9ybSBD
R0FmZmluZVRyYW5zZm9ybTsKICNlbGlmIFVTRShDQUlSTykKICNpbmNsdWRlIDxjYWlyby5oPgor
I2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xNjYsNiArMTY4LDggQEAgcHVibGljOgogICAgIG9wZXJhdG9y
IENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CiAjZWxpZiBVU0UoQ0FJUk8pCiAgICAgb3BlcmF0
b3IgY2Fpcm9fbWF0cml4X3QoKSBjb25zdDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIG9wZXJh
dG9yIFFUcmFuc2Zvcm0oKSBjb25zdDsKICNlbmRpZgogCiAgICAgc3RhdGljIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2xhdGlvbihkb3VibGUgeCwgZG91YmxlIHkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmgKaW5kZXggMDExY2Q4Ny4uMDEwNDY3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguaApAQCAtMzksOSArMzksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0FU
cmFuc2Zvcm0zRCBDQVRyYW5zZm9ybTNEOwogdHlwZWRlZiBzdHJ1Y3QgQ0dBZmZpbmVUcmFuc2Zv
cm0gQ0dBZmZpbmVUcmFuc2Zvcm07CiAjZWxpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSA8Y2Fpcm8u
aD4KKyNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFNYXRyaXg0eDQ+CisjaW5jbHVkZSA8
UVRyYW5zZm9ybT4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oR1RL
KSAmJiBPUyhXSU5ET1dTKSkKKyNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShHVEspICYm
IE9TKFdJTkRPV1MpKSB8fCAoUExBVEZPUk0oUVQpICYmIE9TKFdJTkRPV1MpKQogI2lmIENPTVBJ
TEVSKE1JTkdXKSAmJiAhQ09NUElMRVIoTUlOR1c2NCkKIHR5cGVkZWYgc3RydWN0IF9YRk9STSBY
Rk9STTsKICNlbHNlCkBAIC04Nyw2ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHNldE1hdHJp
eChtMTEsIG0xMiwgbTEzLCBtMTQsIG0yMSwgbTIyLCBtMjMsIG0yNCwgbTMxLCBtMzIsIG0zMywg
bTM0LCBtNDEsIG00MiwgbTQzLCBtNDQpOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0mKTsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeChjb25zdCBRTWF0cml4NHg0Jik7CisjZW5kaWYKKwogICAgIHZvaWQgc2V0TWF0
cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91
YmxlIGYpCiAgICAgewogICAgICAgICBtX21hdHJpeFswXVswXSA9IGE7IG1fbWF0cml4WzBdWzFd
ID0gYjsgbV9tYXRyaXhbMF1bMl0gPSAwOyBtX21hdHJpeFswXVszXSA9IDA7IApAQCAtMzQxLDkg
KzM0OSwxMiBAQCBwdWJsaWM6CiAgICAgb3BlcmF0b3IgQ0dBZmZpbmVUcmFuc2Zvcm0oKSBjb25z
dDsKICNlbGlmIFVTRShDQUlSTykKICAgICBvcGVyYXRvciBjYWlyb19tYXRyaXhfdCgpIGNvbnN0
OworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgb3BlcmF0b3IgUVRyYW5zZm9ybSgpIGNvbnN0Owor
ICAgIG9wZXJhdG9yIFFNYXRyaXg0eDQoKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
V0lOKSB8fCAoUExBVEZPUk0oR1RLKSAmJiBPUyhXSU5ET1dTKSkKKyNpZiBQTEFURk9STShXSU4p
IHx8IChQTEFURk9STShHVEspICYmIE9TKFdJTkRPV1MpKSB8fCAoUExBVEZPUk0oUVQpICYmIE9T
KFdJTkRPV1MpKQogICAgIG9wZXJhdG9yIFhGT1JNKCkgY29uc3Q7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggYjk2NTY1NS4uMzk2YzFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0yNSw3ICsy
NSwxMiBAQAogI2luY2x1ZGUgIkJNUEltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkdJRkltYWdl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5oIgorI2lmIFBMQVRGT1JNKFFU
KQorI2luY2x1ZGUgIkltYWdlRGVjb2RlclF0LmgiCisjZW5kaWYKKyNpZiAhUExBVEZPUk0oUVQp
IHx8IFVTRShMSUJKUEVHKQogI2luY2x1ZGUgIkpQRUdJbWFnZURlY29kZXIuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2lmIFVTRShXRUJQKQpAQCAtMTA2LDE0ICsxMTEsMTggQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURl
Y29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBo
YU8KICAgICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVy
biBuZXcgR0lGSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CiAKKyNpZiAhUExBVEZPUk0oUVQpIHx8IChQTEFURk9STShRVCkgJiYgVVNFKExJQlBO
RykpCiAgICAgaWYgKG1hdGNoZXNQTkdTaWduYXR1cmUoY29udGVudHMpKQogICAgICAgICByZXR1
cm4gbmV3IFBOR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogCiAgICAgaWYgKG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMpIHx8IG1hdGNo
ZXNDVVJTaWduYXR1cmUoY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3IElDT0ltYWdlRGVj
b2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworI2VuZGlmCiAK
KyNpZiAhUExBVEZPUk0oUVQpIHx8IChQTEFURk9STShRVCkgJiYgVVNFKExJQkpQRUcpKQogICAg
IGlmIChtYXRjaGVzSlBFR1NpZ25hdHVyZShjb250ZW50cykpCiAgICAgICAgIHJldHVybiBuZXcg
SlBFR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworI2VuZGlmCiAKICNpZiBVU0UoV0VCUCkKICAgICBpZiAobWF0Y2hlc1dlYlBTaWduYXR1cmUo
Y29udGVudHMpKQpAQCAtMTIzLDYgKzEzMiw5IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVy
OjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAg
ICAgaWYgKG1hdGNoZXNCTVBTaWduYXR1cmUoY29udGVudHMpKQogICAgICAgICByZXR1cm4gbmV3
IEJNUEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgcmV0dXJuIG5ldyBJbWFnZURlY29kZXJRdChhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworI2VuZGlmCiAgICAgcmV0dXJu
IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDM4ZTE4ZDMuLjQ2
YzBjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTAzLDcgKzEwMywx
MSBAQCB2b2lkIGluaXRfc291cmNlKGpfZGVjb21wcmVzc19wdHIgamQpOwogYm9vbGVhbiBmaWxs
X2lucHV0X2J1ZmZlcihqX2RlY29tcHJlc3NfcHRyIGpkKTsKIHZvaWQgc2tpcF9pbnB1dF9kYXRh
KGpfZGVjb21wcmVzc19wdHIgamQsIGxvbmcgbnVtX2J5dGVzKTsKIHZvaWQgdGVybV9zb3VyY2Uo
al9kZWNvbXByZXNzX3B0ciBqZCk7CisjaWYgUExBVEZPUk0oUVQpCit2b2lkIGVycm9yX2V4aXQo
al9jb21tb25fcHRyKSBOT19SRVRVUk47CisjZWxzZQogdm9pZCBlcnJvcl9leGl0KGpfY29tbW9u
X3B0ciBjaW5mbyk7CisjZW5kaWYKIAogLy8gSW1wbGVtZW50YXRpb24gb2YgYSBKUEVHIHNyYyBv
YmplY3QgdGhhdCB1bmRlcnN0YW5kcyBvdXIgc3RhdGUgbWFjaGluZQogc3RydWN0IGRlY29kZXJf
c291cmNlX21nciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDBjMmIyZDUuLmVj
NWE2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC02Niw2ICs2Niw5IEBAIGNv
bnN0IGRvdWJsZSBjSW52ZXJzZUdhbW1hID0gMC40NTQ1NTsKIGNvbnN0IHVuc2lnbmVkIGxvbmcg
Y01heFBOR1NpemUgPSAxMDAwMDAwVUw7CiAKIC8vIENhbGxlZCBpZiB0aGUgZGVjb2Rpbmcgb2Yg
dGhlIGltYWdlIGZhaWxzLgorI2lmIFBMQVRGT1JNKFFUKQorc3RhdGljIHZvaWQgUE5HQVBJIGRl
Y29kaW5nRmFpbGVkKHBuZ19zdHJ1Y3RwLCBwbmdfY29uc3RfY2hhcnApIE5PX1JFVFVSTjsKKyNl
bmRpZgogc3RhdGljIHZvaWQgUE5HQVBJIGRlY29kaW5nRmFpbGVkKHBuZ19zdHJ1Y3RwIHBuZywg
cG5nX2NvbnN0X2NoYXJwKQogewogICAgIGxvbmdqbXAoSk1QQlVGKHBuZyksIDEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5oCmluZGV4IDMzMjQ3YzkuLjI5MGNjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKQEAgLTQyLDYgKzQyLDEw
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fU0NEeW5hbWljU3RvcmUgKiBTQ0R5bmFtaWNTdG9y
ZVJlZjsKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAorI2VsaWYgUExBVEZPUk0oUVQpCisKKyNp
bmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorCiAjZWxpZiBQTEFURk9STShFRkwpCiAKIHR5cGVk
ZWYgc3RydWN0IF9FY29yZV9GZF9IYW5kbGVyIEVjb3JlX0ZkX0hhbmRsZXI7CkBAIC01MSw2ICs1
NSwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgRWluYV9Cb29sOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKKyNpZiAoUExBVEZPUk0oUVQpICYmICFkZWZpbmVkKFFUX05PX0JFQVJFUk1BTkFH
RU1FTlQpKQorY2xhc3MgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlOworI2VuZGlmCisKIGNs
YXNzIE5ldHdvcmtTdGF0ZU5vdGlmaWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RhdGVOb3RpZmllcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
NjMsNiArNzEsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBvbkxpbmUoKSBjb25zdCB7IHJldHVy
biBtX2lzT25MaW5lOyB9CiAKKyNpZiAoUExBVEZPUk0oUVQpICYmICFkZWZpbmVkKFFUX05PX0JF
QVJFUk1BTkFHRU1FTlQpKQorICAgIHZvaWQgc2V0TmV0d29ya0FjY2Vzc0FsbG93ZWQoYm9vbCk7
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgdm9pZCBuZXR3b3JrU3Rh
dGVDaGFuZ2UoYm9vbCBvbmxpbmUpOwogI2VuZGlmCkBAIC05NywxMCArMTA5LDE0IEBAIHByaXZh
dGU6CiAKICAgICBpbnQgbV9uZXRsaW5rU29ja2V0OwogICAgIEVjb3JlX0ZkX0hhbmRsZXIqIG1f
ZmRIYW5kbGVyOworCisjZWxpZiAoUExBVEZPUk0oUVQpICYmICFkZWZpbmVkKFFUX05PX0JFQVJF
Uk1BTkFHRU1FTlQpKQorICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU3RhdGVOb3RpZmllclByaXZh
dGU7CisgICAgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlKiBwOwogI2VuZGlmCiB9OwogCi0j
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKEJMQUNLQkVS
UlkpICYmICFQTEFURk9STShFRkwpCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJ
TikgJiYgIShQTEFURk9STShRVCkgJiYgIWRlZmluZWQoUVRfTk9fQkVBUkVSTUFOQUdFTUVOVCkp
ICYmICFQTEFURk9STShCTEFDS0JFUlJZKSAmJiAhUExBVEZPUk0oRUZMKQogCiBpbmxpbmUgTmV0
d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKICAgICA6IG1faXNPbkxp
bmUodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a2luZ0NvbnRleHQuaAppbmRleCBkMzZkZmY2Li43M2E2NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCkBAIC0yOCwxMCAr
MjgsMjIgQEAKICNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFFUKQorI2luY2x1ZGUgPHFnbG9iYWwuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
TUFDKQogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUU9iamVjdDsKK2NsYXNzIFFOZXR3b3Jr
QWNjZXNzTWFuYWdlcjsKK2NsYXNzIFFVcmw7CitRVF9FTkRfTkFNRVNQQUNFCisjZW5kaWYKKwog
I2lmIFVTRShTT1VQKQogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwog
I2VuZGlmCkBAIC02MSw2ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShRVCkKKyAgICAvLyBGSVhNRTogV3JhcCBRTmV0d29ya0FjY2Vzc01hbmFnZXIgaW50
byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3Jt
LgorICAgIHZpcnR1YWwgUU9iamVjdCogb3JpZ2luYXRpbmdPYmplY3QoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBtaW1lU25pZmZpbmdFbmFibGVkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCB0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWlzc2lvbihj
b25zdCBRVXJsJikgY29uc3QgPSAwOworI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAgICAg
dmlydHVhbCBTdHJpbmcgdXNlckFnZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IHJlZmVycmVyKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDgzNzI3ODAuLjkxNjc4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTE1OCw3
ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgaW50ZXJuZXRTdGF0
dXNDYWxsYmFjayhISU5URVJORVQsIERXT1JEX1BUUiwgRFdPUkQsIExQVk9JRCwgRFdPUkQpOwog
I2VuZGlmCiAKLSNpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApIHx8IFBMQVRGT1JNKEJMQUNLQkVS
UlkpCisjaWYgUExBVEZPUk0oUVQpIHx8IFVTRShDVVJMKSB8fCBVU0UoU09VUCkgfHwgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBnZXRJbnRlcm5hbCgp
IHsgcmV0dXJuIGQuZ2V0KCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDliOGE4
OWEuLjE1NDY4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC01NCw2ICs1NCwxNSBAQAogY2xhc3Mg
RnJhbWU7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorUVRfQkVHSU5fTkFNRVNQQUNFCitj
bGFzcyBRV2ViTmV0d29ya0pvYjsKK1FUX0VORF9OQU1FU1BBQ0UKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFFOZXR3b3JrUmVwbHlIYW5kbGVyOworfQorI2VuZGlmCisKICNpZiBQTEFURk9S
TShNQUMpCiBPQkpDX0NMQVNTIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBPQkpDX0NM
QVNTIE5TVVJMQ29ubmVjdGlvbjsKQEAgLTExMCw2ICsxMTksOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCiAgICAgICAgICAgICAsIG1fcmVk
aXJlY3RDb3VudCgwKQogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgICAgICAsIG1f
am9iKDApCisjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgICAgICAsIG1fc3RhcnRX
aGVuU2NoZWR1bGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX25lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzKGZhbHNlKQpAQCAtMjA2LDYgKzIxOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgfSBtX2Ny
ZWRlbnRpYWxEYXRhVG9TYXZlSW5QZXJzaXN0ZW50U3RvcmU7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShRVCkKKyAgICAgICAgUU5ldHdvcmtSZXBseUhhbmRsZXIqIG1fam9iOworI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8vIFdlIG5lZWQgdG8ga2VlcCBhIHJlZmVyZW5jZSB0
byB0aGUgb3JpZ2luYWwgY2hhbGxlbmdlIHRvIGJlIGFibGUgdG8gY2FuY2VsIGl0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAKaW5kZXggYzViZGVlZS4uNGVmOWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zMiw3ICsz
Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lm
ICFVU0UoU09VUCkgJiYgKCFQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspKQorI2lmICFV
U0UoU09VUCkgJiYgKCFQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspKSAmJiAhUExBVEZP
Uk0oUVQpCiBkb3VibGUgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c19kZWZhdWx0VGltZW91dEludGVy
dmFsID0gSU5UX01BWDsKICNlbHNlCiAvLyBXaWxsIHVzZSBOU1VSTFJlcXVlc3QgZGVmYXVsdCB0
aW1lb3V0IHVubGVzcyBzZXQgdG8gYSBub24temVybyB2YWx1ZSB3aXRoIHNldERlZmF1bHRUaW1l
b3V0SW50ZXJ2YWwoKS4KQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnVwZGF0ZVJlc291cmNlUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5
KQogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShNQUMpICYmICFVU0UoQ0ZORVRXT1JLKSAmJiAh
VVNFKFNPVVApICYmICFQTEFURk9STShCTEFDS0JFUlJZKQorI2lmICFQTEFURk9STShNQUMpICYm
ICFVU0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRG
T1JNKEJMQUNLQkVSUlkpCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9u
Q291bnRQZXJIb3N0KCkKIHsKICAgICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIGxvYWRlciB0byBj
b250cm9sIHRoZSBudW1iZXIgb2YgaXNzdWVkIHBhcmFsbGVsIGxvYWQgcmVxdWVzdHMuIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVi
YmMwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3F0L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
I2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlX2gKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2xpZW50OworCitj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IHB1YmxpYyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2UgeworcHVibGljOgorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKKyAgICB7
CisgICAgfQorCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlh
bCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKKyAgICAgICAgOiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlLCBwcm9wb3NlZENyZWRlbnRpYWws
IHByZXZpb3VzRmFpbHVyZUNvdW50LCByZXNwb25zZSwgZXJyb3IpCisgICAgeworICAgIH0KKwor
ICAgIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0gLy8gRklYTUU6IEltcGxlbWVudCEKKworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMyNDY1ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3Bw
CkBAIC0wLDAgKzEsMzAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFp
a29zIDxzdGFpa29zQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29va2llSmFyUXQu
aCIKKworI2luY2x1ZGUgIkNvb2tpZS5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKKyNpbmNs
dWRlICJUaGlyZFBhcnR5Q29va2llc1F0LmgiCisjaW5jbHVkZSA8UURhdGVUaW1lPgorI2luY2x1
ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZT4KKyNp
bmNsdWRlIDxRU3FsUXVlcnk+CisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CisjaW5jbHVkZSA8UVZh
cmlhbnQ+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzX3NoYXJlZENvb2tpZUphclF0ID0g
MDsKKwordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29u
dGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tp
ZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIGlmICghamFyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKKyAgICBRVXJsIGZp
cnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7CisgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5
UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0g
UU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhRU3RyaW5nKHZhbHVlKS50b0xhdGluMSgpKTsK
KyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9yIGl0ID0gY29va2llcy5iZWdpbigp
OworICAgIHdoaWxlIChpdCAhPSBjb29raWVzLmVuZCgpKSB7CisgICAgICAgIGlmIChpdC0+aXNI
dHRwT25seSgpKQorICAgICAgICAgICAgaXQgPSBjb29raWVzLmVyYXNlKGl0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgKytpdDsKKyAgICB9CisKKyAgICBqYXItPnNldENvb2tpZXNGcm9t
VXJsKGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOworfQorCitTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwpCit7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIGlmICghamFy
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBRVXJsIHVybEZvckNvb2tpZXModXJs
KTsKKyAgICBRVXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7CisgICAgaWYgKCF0aGlyZFBh
cnR5Q29va2llUG9saWN5UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29va2llcywg
Zmlyc3RQYXJ0eVVybCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFFMaXN0PFFO
ZXR3b3JrQ29va2llPiBjb29raWVzID0gamFyLT5jb29raWVzRm9yVXJsKHVybEZvckNvb2tpZXMp
OworICAgIGlmIChjb29raWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgUVN0cmluZ0xpc3QgcmVzdWx0Q29va2llczsKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0
d29ya0Nvb2tpZSYgbmV0d29ya0Nvb2tpZSwgY29va2llcykgeworICAgICAgICBpZiAobmV0d29y
a0Nvb2tpZS5pc0h0dHBPbmx5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmVz
dWx0Q29va2llcy5hcHBlbmQoUVN0cmluZzo6ZnJvbUxhdGluMShuZXR3b3JrQ29va2llLnRvUmF3
Rm9ybShRTmV0d29ya0Nvb2tpZTo6TmFtZUFuZFZhbHVlT25seSkuY29uc3REYXRhKCkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRpbjFTdHJpbmcoIjsgIikp
OworfQorCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBVUkwmIHVybCkKK3sKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250
ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2ll
SmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgaWYgKCFqYXIpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVz
ID0gamFyLT5jb29raWVzRm9yVXJsKFFVcmwodXJsKSk7CisgICAgaWYgKGNvb2tpZXMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBRU3RyaW5nTGlzdCByZXN1bHRD
b29raWVzOworICAgIGZvcmVhY2ggKFFOZXR3b3JrQ29va2llIG5ldHdvcmtDb29raWUsIGNvb2tp
ZXMpCisgICAgICAgIHJlc3VsdENvb2tpZXMuYXBwZW5kKFFTdHJpbmc6OmZyb21MYXRpbjEobmV0
d29ya0Nvb2tpZS50b1Jhd0Zvcm0oUU5ldHdvcmtDb29raWU6Ok5hbWVBbmRWYWx1ZU9ubHkpLmNv
bnN0RGF0YSgpKSk7CisKKyAgICByZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRpbjFTdHJp
bmcoIjsgIikpOworfQorCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAv
KnVybCovKQoreworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQo
KSA/IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIo
KSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICByZXR1cm4gISFqYXI7Cit9CisK
K2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLywgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCit7CisgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
KyAgICByYXdDb29raWVzLmNsZWFyKCk7CisgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1
ZSB3aGVuIGltcGxlbWVudGVkCit9CisKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK30KKwordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKQoreworICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29udGV4
dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0
aGUgc2hhcmVkIG9uZS4KKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2ll
SmFyUXQ6OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKK30KKwordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQoreworICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29udGV4dCgp
KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUg
c2hhcmVkIG9uZS4KKyAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2llSmFy
UXQ6OnNoYXJlZCgpOworICAgIGlmIChqYXIpCisgICAgICAgIGphci0+ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKGhvc3RuYW1lKTsKK30KKwordm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Np
b24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tp
ZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgU2hhcmVkQ29va2llSmFyUXQq
IGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBpZiAoamFyKQorICAgICAg
ICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKK30KKworU2hhcmVkQ29va2llSmFyUXQqIFNoYXJl
ZENvb2tpZUphclF0OjpzaGFyZWQoKQoreworICAgIHJldHVybiBzX3NoYXJlZENvb2tpZUphclF0
OworfQorCitTaGFyZWRDb29raWVKYXJRdCogU2hhcmVkQ29va2llSmFyUXQ6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpCit7CisgICAgaWYgKCFzX3NoYXJlZENv
b2tpZUphclF0KQorICAgICAgICBzX3NoYXJlZENvb2tpZUphclF0ID0gbmV3IFNoYXJlZENvb2tp
ZUphclF0KGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpOworCisgICAgcmV0dXJuIHNfc2hhcmVkQ29v
a2llSmFyUXQ7Cit9CisKK3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlc3Ryb3koKQoreworICAg
IGRlbGV0ZSBzX3NoYXJlZENvb2tpZUphclF0OworICAgIHNfc2hhcmVkQ29va2llSmFyUXQgPSAw
OworfQorCit2b2lkIFNoYXJlZENvb2tpZUphclF0OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhI
YXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3sKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4g
Y29va2llcyA9IGFsbENvb2tpZXMoKTsKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0d29ya0Nvb2tp
ZSYgbmV0d29ya0Nvb2tpZSwgY29va2llcykKKyAgICAgICAgaG9zdG5hbWVzLmFkZChuZXR3b3Jr
Q29va2llLmRvbWFpbigpKTsKK30KKworYm9vbCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQ29v
a2llKGNvbnN0IFFOZXR3b3JrQ29va2llJiBjb29raWUpCit7CisgICAgaWYgKCFRTmV0d29ya0Nv
b2tpZUphcjo6ZGVsZXRlQ29va2llKGNvb2tpZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUo
UUxhdGluMVN0cmluZygiREVMRVRFIEZST00gY29va2llcyBXSEVSRSBjb29raWVJZD06Y29va2ll
SWR2YWx1ZSIpKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxhdGluMVN0cmluZygiOmNvb2tp
ZUlkdmFsdWUiKSwgY29va2llLmRvbWFpbigpLmFwcGVuZChRTGF0aW4xU3RyaW5nKGNvb2tpZS5u
YW1lKCkpKSk7CisgICAgc3FsUXVlcnkuZXhlYygpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgU2hhcmVkQ29va2llSmFyUXQ6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQoreworICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBhbGxDb29r
aWVzKCk7CisgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+OjpJdGVyYXRvciBpdCA9IGNvb2tpZXMu
YmVnaW4oKTsKKyAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT46Okl0ZXJhdG9yIGVuZCA9IGNvb2tp
ZXMuZW5kKCk7CisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0YWJhc2UpOworICAgIHNxbFF1
ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiREVMRVRFIEZST00gY29va2llcyBXSEVSRSBjb29r
aWVJZD06Y29va2llSWR2YWx1ZSIpKTsKKyAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CisgICAgICAg
IGlmIChpdC0+ZG9tYWluKCkgPT0gUVN0cmluZyhob3N0bmFtZSkpIHsKKyAgICAgICAgICAgIHNx
bFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6Y29va2llSWR2YWx1ZSIpLCBpdC0+ZG9t
YWluKCkuYXBwZW5kKFFMYXRpbjFTdHJpbmcoaXQtPm5hbWUoKSkpKTsKKyAgICAgICAgICAgIHNx
bFF1ZXJ5LmV4ZWMoKTsKKyAgICAgICAgICAgIGl0ID0gY29va2llcy5lcmFzZShpdCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgaXQrKzsKKyAgICB9CisgICAgc2V0QWxsQ29va2llcyhj
b29raWVzKTsKK30KKwordm9pZCBTaGFyZWRDb29raWVKYXJRdDo6ZGVsZXRlQWxsQ29va2llcygp
Cit7CisgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBRU3FsUXVlcnkgc3FsUXVlcnkobV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShR
TGF0aW4xU3RyaW5nKCJERUxFVEUgRlJPTSBjb29raWVzIikpOworICAgIHNxbFF1ZXJ5LmV4ZWMo
KTsKKyAgICBzZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3b3JrQ29va2llPigpKTsKK30KKworU2hh
cmVkQ29va2llSmFyUXQ6OlNoYXJlZENvb2tpZUphclF0KGNvbnN0IFN0cmluZyYgY29va2llU3Rv
cmFnZURpcmVjdG9yeSkKK3sKKyAgICBtX2RhdGFiYXNlID0gUVNxbERhdGFiYXNlOjphZGREYXRh
YmFzZShRTGF0aW4xU3RyaW5nKCJRU1FMSVRFIikpOworICAgIGNvbnN0IFFTdHJpbmcgY29va2ll
U3RvcmFnZVBhdGggPSBjb29raWVTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvbnN0IFFTdHJpbmcg
ZGF0YUJhc2VOYW1lID0gY29va2llU3RvcmFnZVBhdGggKyBRTGF0aW4xU3RyaW5nKCIvY29va2ll
cy5kYiIpOworICAgIG1fZGF0YWJhc2Uuc2V0RGF0YWJhc2VOYW1lKGRhdGFCYXNlTmFtZSk7Cisg
ICAgZW5zdXJlRGF0YWJhc2VUYWJsZSgpOworICAgIGxvYWRDb29raWVzKCk7Cit9CisKK1NoYXJl
ZENvb2tpZUphclF0Ojp+U2hhcmVkQ29va2llSmFyUXQoKQoreworICAgIG1fZGF0YWJhc2UuY2xv
c2UoKTsKK30KKworYm9vbCBTaGFyZWRDb29raWVKYXJRdDo6c2V0Q29va2llc0Zyb21VcmwoY29u
c3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7
CisgICAgaWYgKCFRTmV0d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29va2llTGlz
dCwgdXJsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2RhdGFiYXNlLmlz
T3BlbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRU3FsUXVlcnkgc3FsUXVlcnko
bV9kYXRhYmFzZSk7CisgICAgc3FsUXVlcnkucHJlcGFyZShRTGF0aW4xU3RyaW5nKCJJTlNFUlQg
T1IgUkVQTEFDRSBJTlRPIGNvb2tpZXMgKGNvb2tpZUlkLCBjb29raWUpIFZBTFVFUyAoOmNvb2tp
ZUlkdmFsdWUsIDpjb29raWV2YWx1ZSkiKSk7CisgICAgUVZhcmlhbnRMaXN0IGNvb2tpZXNJZHM7
CisgICAgUVZhcmlhbnRMaXN0IGNvb2tpZXNWYWx1ZXM7CisgICAgZm9yZWFjaCAoY29uc3QgUU5l
dHdvcmtDb29raWUgJmNvb2tpZSwgY29va2llc0ZvclVybCh1cmwpKSB7CisgICAgICAgIGlmIChj
b29raWUuaXNTZXNzaW9uQ29va2llKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
Y29va2llc0lkcy5hcHBlbmQoY29va2llLmRvbWFpbigpLmFwcGVuZChRTGF0aW4xU3RyaW5nKGNv
b2tpZS5uYW1lKCkpKSk7CisgICAgICAgIGNvb2tpZXNWYWx1ZXMuYXBwZW5kKGNvb2tpZS50b1Jh
d0Zvcm0oKSk7CisgICAgfQorICAgIHNxbFF1ZXJ5LmJpbmRWYWx1ZShRTGF0aW4xU3RyaW5nKCI6
Y29va2llSWR2YWx1ZSIpLCBjb29raWVzSWRzKTsKKyAgICBzcWxRdWVyeS5iaW5kVmFsdWUoUUxh
dGluMVN0cmluZygiOmNvb2tpZXZhbHVlIiksIGNvb2tpZXNWYWx1ZXMpOworICAgIHNxbFF1ZXJ5
LmV4ZWNCYXRjaCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNoYXJlZENvb2tpZUph
clF0OjplbnN1cmVEYXRhYmFzZVRhYmxlKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2Uub3Blbigp
KSB7CisgICAgICAgIHFXYXJuaW5nKCJDYW4ndCBvcGVuIGNvb2tpZSBkYXRhYmFzZSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIG1fZGF0YWJhc2UuZXhlYyhRTGF0aW4xU3RyaW5nKCJQ
UkFHTUEgc3luY2hyb25vdXM9T0ZGIikpOworCisgICAgUVNxbFF1ZXJ5IHNxbFF1ZXJ5KG1fZGF0
YWJhc2UpOworICAgIHNxbFF1ZXJ5LnByZXBhcmUoUUxhdGluMVN0cmluZygiQ1JFQVRFIFRBQkxF
IElGIE5PVCBFWElTVFMgY29va2llcyAoY29va2llSWQgVkFSQ0hBUiBQUklNQVJZIEtFWSwgY29v
a2llIEJMT0IpOyIpKTsKKyAgICBzcWxRdWVyeS5leGVjKCk7Cit9CisKK3ZvaWQgU2hhcmVkQ29v
a2llSmFyUXQ6OmxvYWRDb29raWVzKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzOwor
ICAgIFFTcWxRdWVyeSBzcWxRdWVyeShtX2RhdGFiYXNlKTsKKyAgICBzcWxRdWVyeS5wcmVwYXJl
KFFMYXRpbjFTdHJpbmcoIlNFTEVDVCBjb29raWUgRlJPTSBjb29raWVzIikpOworICAgIHNxbFF1
ZXJ5LmV4ZWMoKTsKKyAgICB3aGlsZSAoc3FsUXVlcnkubmV4dCgpKQorICAgICAgICBjb29raWVz
LmFwcGVuZChRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVzKHNxbFF1ZXJ5LnZhbHVlKDApLnRv
Qnl0ZUFycmF5KCkpKTsKKyAgICBzZXRBbGxDb29raWVzKGNvb2tpZXMpOworfQorCisjaW5jbHVk
ZSAibW9jX0Nvb2tpZUphclF0LmNwcCIKKworfQorCisvLyB2aW06IHRzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWZmYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmgKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQ29va2llSmFyUXRfaAorI2Rl
ZmluZSBDb29raWVKYXJRdF9oCisKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRl
IDxRdE5ldHdvcmsvUU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8UXRTcWwvUVNxbERhdGFi
YXNlPgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRDb29raWVKYXJR
dCA6IHB1YmxpYyBRTmV0d29ya0Nvb2tpZUphciB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNoYXJlZCgpOworICAgIHN0YXRpYyBTaGFyZWRD
b29raWVKYXJRdCogY3JlYXRlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZGVzdHJveSgpOwor
CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhIYXNoU2V0PFN0cmluZz4mKTsKKyAg
ICBib29sIGRlbGV0ZUNvb2tpZShjb25zdCBRTmV0d29ya0Nvb2tpZSYpOworICAgIHZvaWQgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZGVsZXRlQWxs
Q29va2llcygpOworICAgIGJvb2wgc2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdv
cmtDb29raWU+JiwgY29uc3QgUVVybCYpOworICAgIHZvaWQgbG9hZENvb2tpZXMoKTsKKworcHJp
dmF0ZToKKyAgICBTaGFyZWRDb29raWVKYXJRdChjb25zdCBTdHJpbmcmKTsKKyAgICB+U2hhcmVk
Q29va2llSmFyUXQoKTsKKyAgICB2b2lkIGVuc3VyZURhdGFiYXNlVGFibGUoKTsKKworICAgIFFT
cWxEYXRhYmFzZSBtX2RhdGFiYXNlOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ3JlZGVudGlhbFN0b3JhZ2VRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0NyZWRlbnRpYWxTdG9yYWdlUXQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0Y2NhZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0NyZWRlbnRpYWxT
dG9yYWdlUXQuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKKworI2luY2x1ZGUgIkNyZWRl
bnRpYWwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDcmVkZW50aWFsIENyZWRlbnRpYWxT
dG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJikK
K3sKKyAgICByZXR1cm4gQ3JlZGVudGlhbCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0ROU1F0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvRE5TUXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYmIxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0ROU1F0LmNwcApAQCAtMCwwICsxLDgx
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICAgICAgICAgICAgKEMpIDIwMTIgRGlnaWEgUGxjLiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKKworI2luY2x1ZGUgPFFIb3N0SW5mbz4KKyNpbmNs
dWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG5zUHJlZmV0Y2hIZWxw
ZXIgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBEbnNQcmVm
ZXRjaEhlbHBlcigpIDogUU9iamVjdCgpIHsgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lk
IGxvb2t1cChRU3RyaW5nIGhvc3RuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKGhvc3RuYW1lLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5kZWNyZW1l
bnRSZXF1ZXN0Q291bnQoKTsKKyAgICAgICAgICAgIHJldHVybjsgLy8gdGhpcyBhY3R1YWxseSBo
YXBwZW5zCisgICAgICAgIH0KKworICAgICAgICBRSG9zdEluZm86Omxvb2t1cEhvc3QoaG9zdG5h
bWUsIHRoaXMsIFNMT1QobG9va2VkVXAoUUhvc3RJbmZvKSkpOworICAgIH0KKworICAgIHZvaWQg
bG9va2VkVXAoY29uc3QgUUhvc3RJbmZvJikKKyAgICB7CisgICAgICAgIC8vIHdlIGRvIG5vdCBj
YWNoZSB0aGUgcmVzdWx0LCB3ZSB0aHJvdyBpdCBhd2F5LgorICAgICAgICAvLyB3ZSBjdXJyZW50
bHkgcmVseSBvbiB0aGUgT1MgdG8gY2FjaGUgdGhlIHJlc3VsdHMuIElmIGl0IGRvZXMgbm90IGRv
IHRoYXQKKyAgICAgICAgLy8gdGhlbiBhdCBsZWFzdCB0aGUgSVNQIG5hbWVzZXJ2ZXIgZGlkIGl0
LgorICAgICAgICAvLyBTaW5jZSBRdCA0LjYuMywgUXQgYWxzbyBoYXMgYSBzbWFsbCBETlMgY2Fj
aGUuCisgICAgICAgIEROU1Jlc29sdmVRdWV1ZTo6c2hhcmVkKCkuZGVjcmVtZW50UmVxdWVzdENv
dW50KCk7CisgICAgfQorfTsKKworLy8gVGhpcyBpcyBjYWxsZWQgb24gbW91c2Ugb3ZlciBhIGhy
ZWYgYW5kIG9uIHBhZ2UgbG9hZGluZy4KK3ZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKK3sKKyAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9zdG5hbWUpOworfQorCitib29s
IEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5j
ZXMoKQoreworICAgIC8vIFF0IGV4cGVjdHMgdGhlIHN5c3RlbSBvciBhIHByb3h5IHRvIGNhY2hl
IHRoZSByZXN1bHQsIGJ1dCBvdGhlciBwbGF0Zm9ybXMgZGlzYWJsZSBXZWJDb3JlIEROUyBwcmVm
ZXRjaGluZyB3aGVuIHByb3hpZXMgYXJlIGVuYWJsZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQor
CisvLyBUaGlzIGlzIGNhbGxlZCBieSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgRE5TUmVzb2x2
ZVF1ZXVlLgordm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQoreworICAgIHN0YXRpYyBEbnNQcmVmZXRjaEhlbHBlciBkbnNQcmVmZXRj
aEhlbHBlcjsKKyAgICBkbnNQcmVmZXRjaEhlbHBlci5sb29rdXAoUVN0cmluZyhob3N0bmFtZSkp
OworfQorCit9IC8vIG5hbWVzcGFjZQorCisjaW5jbHVkZSAiRE5TUXQubW9jIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmll
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvTmV0d29ya1N0
YXRlTm90aWZpZXJQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NWQwMmEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBOZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGVfaAor
I2RlZmluZSBOZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGVfaAorCisjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3Mg
UU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlcjsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JrU3RhdGVOb3RpZmllcjsKKworY2xhc3MgTmV0
d29ya1N0YXRlTm90aWZpZXJQcml2YXRlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNU
CitwdWJsaWM6CisgICAgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlKE5ldHdvcmtTdGF0ZU5v
dGlmaWVyKiBub3RpZmllcik7CisgICAgfk5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZSgpOwor
CisgICAgdm9pZCBzZXROZXR3b3JrQWNjZXNzQWxsb3dlZChib29sKTsKKyAgICBib29sIGVmZmVj
dGl2ZWx5T25saW5lKCkgY29uc3QgeyByZXR1cm4gbV9vbmxpbmUgJiYgbV9uZXR3b3JrQWNjZXNz
QWxsb3dlZDsgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHNldE9ubGluZVN0YXRlKGJv
b2wpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBpbml0aWFsaXplKCk7CisKK3B1Ymxp
YzoKKyAgICBPd25QdHI8UU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlcj4gbV9jb25maWd1cmF0
aW9uTWFuYWdlcjsKKyAgICBib29sIG1fb25saW5lOworICAgIGJvb2wgbV9uZXR3b3JrQWNjZXNz
QWxsb3dlZDsKKyAgICBOZXR3b3JrU3RhdGVOb3RpZmllciogbV9ub3RpZmllcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclF0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWU0ZTZlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3Rp
ZmllclF0LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCisKKyNpZiAo
UExBVEZPUk0oUVQpICYmICFkZWZpbmVkKFFUX05PX0JFQVJFUk1BTkFHRU1FTlQpKQorCisjaW5j
bHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlLmgiCisjaW5jbHVkZSA8UU5ldHdvcmtD
b25maWd1cmF0aW9uTWFuYWdlcj4KKyNpbmNsdWRlIDxRVGltZXI+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RhdGVOb3RpZmll
clByaXZhdGU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZShOZXR3b3JrU3RhdGVOb3RpZmll
ciogbm90aWZpZXIpCisgICAgOiBtX29ubGluZShmYWxzZSkKKyAgICAsIG1fbmV0d29ya0FjY2Vz
c0FsbG93ZWQodHJ1ZSkKKyAgICAsIG1fbm90aWZpZXIobm90aWZpZXIpCit7CisgICAgQVNTRVJU
KG5vdGlmaWVyKTsKKworICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIGRlbGF5ZWQgYmVjYXVzZSBR
TmV0d29ya0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHN0YXJ0cyBhIG5ldyB0aHJlYWQgdGhhdCBjYXVz
ZXMKKyAgICAvLyBkZWFkbG9jayBvbiBNYWMgYmVjYXVzZSBhbGwgdGhlIHN0YXRpYyBpbml0aWFs
aXplcnMgc2hhcmUgdGhlIHNhbWUgbG9jay4gQm90aCBOZXR3b3JrU3RhdGVOb3RpZmllciBhbmQg
UXQgaW50ZXJuYWxzCisgICAgLy8gdHJpZ2dlcmVkIGluIG5ldyB0aHJlYWQgdXNlIHN0YXRpYyBp
bml0aWFsaXplci4gU2VlIGFsc286IGh0dHA6Ly9vcGVucmFkYXIuYXBwc3BvdC5jb20vMTEyMTcx
NTAuCisgICAgUVRpbWVyOjpzaW5nbGVTaG90KDAsIHRoaXMsIFNMT1QoaW5pdGlhbGl6ZSgpKSk7
Cit9CisKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlOjpzZXROZXR3b3JrQWNjZXNz
QWxsb3dlZChib29sIGlzQWxsb3dlZCkKK3sKKyAgICBpZiAoaXNBbGxvd2VkID09IG1fbmV0d29y
a0FjY2Vzc0FsbG93ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbmV0d29ya0FjY2Vzc0Fs
bG93ZWQgPSBpc0FsbG93ZWQ7CisgICAgaWYgKG1fb25saW5lKQorICAgICAgICBtX25vdGlmaWVy
LT51cGRhdGVTdGF0ZSgpOworfQorCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZTo6
c2V0T25saW5lU3RhdGUoYm9vbCBpc09ubGluZSkKK3sKKyAgICBpZiAobV9vbmxpbmUgPT0gaXNP
bmxpbmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb25saW5lID0gaXNPbmxpbmU7CisgICAg
aWYgKG1fbmV0d29ya0FjY2Vzc0FsbG93ZWQpCisgICAgICAgIG1fbm90aWZpZXItPnVwZGF0ZVN0
YXRlKCk7Cit9CisKK3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlOjppbml0aWFsaXpl
KCkKK3sKKyAgICBtX2NvbmZpZ3VyYXRpb25NYW5hZ2VyID0gYWRvcHRQdHIobmV3IFFOZXR3b3Jr
Q29uZmlndXJhdGlvbk1hbmFnZXIoKSk7CisgICAgc2V0T25saW5lU3RhdGUobV9jb25maWd1cmF0
aW9uTWFuYWdlci0+aXNPbmxpbmUoKSk7CisgICAgY29ubmVjdChtX2NvbmZpZ3VyYXRpb25NYW5h
Z2VyLmdldCgpLCBTSUdOQUwob25saW5lU3RhdGVDaGFuZ2VkKGJvb2wpKSwgdGhpcywgU0xPVChz
ZXRPbmxpbmVTdGF0ZShib29sKSkpOworfQorCitOZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGU6
On5OZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUoKQoreworfQorCit2b2lkIE5ldHdvcmtTdGF0
ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZSgpCit7CisgICAgaWYgKG1faXNPbkxpbmUgPT0gcC0+ZWZm
ZWN0aXZlbHlPbmxpbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc09uTGluZSA9IHAt
PmVmZmVjdGl2ZWx5T25saW5lKCk7CisgICAgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKCk7Cit9
CisKK05ldHdvcmtTdGF0ZU5vdGlmaWVyOjpOZXR3b3JrU3RhdGVOb3RpZmllcigpCisgICAgOiBt
X2lzT25MaW5lKHRydWUpCit7CisgICAgcCA9IG5ldyBOZXR3b3JrU3RhdGVOb3RpZmllclByaXZh
dGUodGhpcyk7CisgICAgbV9pc09uTGluZSA9IHAtPmVmZmVjdGl2ZWx5T25saW5lKCk7Cit9CisK
K3ZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OnNldE5ldHdvcmtBY2Nlc3NBbGxvd2VkKGJvb2wg
aXNBbGxvd2VkKQoreworICAgIHAtPnNldE5ldHdvcmtBY2Nlc3NBbGxvd2VkKGlzQWxsb3dlZCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2luY2x1ZGUgIm1vY19OZXR3b3JrU3Rh
dGVOb3RpZmllclByaXZhdGUuY3BwIgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUHJveHlTZXJ2ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2VydmVyUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmFhZTYxN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2VydmVyUXQuY3BwCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJveHlTZXJ2
ZXIuaCIKKworI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0Lmgi
CisKKyNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU5ldHdvcmtQ
cm94eT4KKyNpbmNsdWRlIDxRTmV0d29ya1Byb3h5RmFjdG9yeT4KKyNpbmNsdWRlIDxRTmV0d29y
a1Byb3h5UXVlcnk+CisjaW5jbHVkZSA8UVVybD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitW
ZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgVmVjdG9yPFByb3h5U2VydmVy
PiBzZXJ2ZXJzOworICAgIAorICAgIGNvbnN0IFFOZXR3b3JrQWNjZXNzTWFuYWdlciogYWNjZXNz
TWFuYWdlciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpIDogMDsK
KyAgICBRTmV0d29ya1Byb3h5RmFjdG9yeSogcHJveHlGYWN0b3J5ID0gYWNjZXNzTWFuYWdlciA/
IGFjY2Vzc01hbmFnZXItPnByb3h5RmFjdG9yeSgpIDogMDsKKworICAgIGlmIChwcm94eUZhY3Rv
cnkpIHsKKyAgICAgICAgY29uc3QgUUxpc3Q8UU5ldHdvcmtQcm94eT4gcHJveGllcyA9IHByb3h5
RmFjdG9yeS0+cXVlcnlQcm94eShRTmV0d29ya1Byb3h5UXVlcnkodXJsKSk7CisgICAgICAgIFFf
Rk9SRUFDSChjb25zdCBRTmV0d29ya1Byb3h5JiBwcm94eSwgcHJveGllcykgeworICAgICAgICAg
ICAgUHJveHlTZXJ2ZXI6OlR5cGUgcHJveHlUeXBlOworICAgICAgICAgICAgc3dpdGNoIChwcm94
eS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgUU5ldHdvcmtQcm94eTo6U29ja3M1UHJveHk6
CisgICAgICAgICAgICAgICAgcHJveHlUeXBlID0gUHJveHlTZXJ2ZXI6OlNPQ0tTOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBRTmV0d29ya1Byb3h5OjpIdHRwUHJv
eHk6CisgICAgICAgICAgICBjYXNlIFFOZXR3b3JrUHJveHk6Okh0dHBDYWNoaW5nUHJveHk6Cisg
ICAgICAgICAgICBjYXNlIFFOZXR3b3JrUHJveHk6OkZ0cENhY2hpbmdQcm94eToKKyAgICAgICAg
ICAgICAgICBwcm94eVR5cGUgPSBQcm94eVNlcnZlcjo6SFRUUDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgUU5ldHdvcmtQcm94eTo6RGVmYXVsdFByb3h5OgorICAg
ICAgICAgICAgY2FzZSBRTmV0d29ya1Byb3h5OjpOb1Byb3h5OgorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBwcm94eVR5cGUgPSBQcm94eVNlcnZlcjo6RGlyZWN0OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VydmVycy5h
cHBlbmQoUHJveHlTZXJ2ZXIocHJveHlUeXBlLCBwcm94eS5ob3N0TmFtZSgpLCBwcm94eS5wb3J0
KCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzZXJ2ZXJzOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhiNzkxZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcApAQCAtMCww
ICsxLDgxMCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTIgRGlnaWEgUGxjLiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtv
cyBDb21wdXRpbmcgU2VydmljZXMgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJRTmV0d29ya1JlcGx5SGFuZGxlci5oIgorCisjaW5jbHVkZSAiQmxv
YkRhdGEuaCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgPFFEYXRlVGltZT4KKyNp
bmNsdWRlIDxRRmlsZT4KKyNpbmNsdWRlIDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UU1pbWVEYXRh
YmFzZT4KKyNpbmNsdWRlIDxRTmV0d29ya0Nvb2tpZT4KKyNpbmNsdWRlIDxRTmV0d29ya1JlcGx5
PgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjaW5jbHVkZSA8UUNvcmVBcHBs
aWNhdGlvbj4KKworc3RhdGljIGNvbnN0IGludCBnTWF4UmVkaXJlY3Rpb25zID0gMTA7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRm9ybURhdGFJT0RldmljZTo6Rm9ybURhdGFJT0RldmljZShG
b3JtRGF0YSogZGF0YSkKKyAgICA6IG1fY3VycmVudEZpbGUoMCkKKyAgICAsIG1fY3VycmVudERl
bHRhKDApCisgICAgLCBtX2ZpbGVTaXplKDApCisgICAgLCBtX2RhdGFTaXplKDApCit7CisgICAg
c2V0T3Blbk1vZGUoRm9ybURhdGFJT0RldmljZTo6UmVhZE9ubHkpOworCisgICAgcHJlcGFyZUZv
cm1FbGVtZW50cyhkYXRhKTsKKyAgICBwcmVwYXJlQ3VycmVudEVsZW1lbnQoKTsKKyAgICBjb21w
dXRlU2l6ZSgpOworfQorCitGb3JtRGF0YUlPRGV2aWNlOjp+Rm9ybURhdGFJT0RldmljZSgpCit7
CisgICAgZGVsZXRlIG1fY3VycmVudEZpbGU7Cit9CisKK3ZvaWQgRm9ybURhdGFJT0RldmljZTo6
cHJlcGFyZUZvcm1FbGVtZW50cyhGb3JtRGF0YSogZm9ybURhdGEpCit7CisgICAgaWYgKCFmb3Jt
RGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YVJl
Zihmb3JtRGF0YSk7CisKKyNpZiBFTkFCTEUoQkxPQikKKyAgICBmb3JtRGF0YVJlZiA9IGZvcm1E
YXRhUmVmLT5yZXNvbHZlQmxvYlJlZmVyZW5jZXMoKTsKKyNlbmRpZgorCisgICAgLy8gVGFrZSBh
IGRlZXAgY29weSBvZiB0aGUgRm9ybURhdGFFbGVtZW50cworICAgIG1fZm9ybUVsZW1lbnRzID0g
Zm9ybURhdGFSZWYtPmVsZW1lbnRzKCk7Cit9CisKKworcWludDY0IEZvcm1EYXRhSU9EZXZpY2U6
OmNvbXB1dGVTaXplKCkgCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2Zvcm1FbGVtZW50
cy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQg
PSBtX2Zvcm1FbGVtZW50c1tpXTsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6ZGF0YSkgCisgICAgICAgICAgICBtX2RhdGFTaXplICs9IGVsZW1lbnQubV9k
YXRhLnNpemUoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBRRmlsZUluZm8gZmkoZWxl
bWVudC5tX2ZpbGVuYW1lKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICAgICAgICAgIHFpbnQ2NCBm
aWxlRW5kID0gZmkuc2l6ZSgpOworICAgICAgICAgICAgaWYgKGVsZW1lbnQubV9maWxlTGVuZ3Ro
ICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCisgICAgICAgICAgICAgICAgZmlsZUVuZCA9
IHFNaW48cWludDY0PihmaS5zaXplKCksIGVsZW1lbnQubV9maWxlU3RhcnQgKyBlbGVtZW50Lm1f
ZmlsZUxlbmd0aCk7CisgICAgICAgICAgICBtX2ZpbGVTaXplICs9IHFNYXg8cWludDY0PigwLCBm
aWxlRW5kIC0gZWxlbWVudC5tX2ZpbGVTdGFydCk7CisjZWxzZQorICAgICAgICAgICAgbV9maWxl
U2l6ZSArPSBmaS5zaXplKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bV9kYXRhU2l6ZSArIG1fZmlsZVNpemU7Cit9CisKK3ZvaWQgRm9ybURhdGFJT0RldmljZTo6bW92
ZVRvTmV4dEVsZW1lbnQoKQoreworICAgIGlmIChtX2N1cnJlbnRGaWxlKQorICAgICAgICBtX2N1
cnJlbnRGaWxlLT5jbG9zZSgpOworICAgIG1fY3VycmVudERlbHRhID0gMDsKKworICAgIG1fZm9y
bUVsZW1lbnRzLnJlbW92ZSgwKTsKKworICAgIHByZXBhcmVDdXJyZW50RWxlbWVudCgpOworfQor
Cit2b2lkIEZvcm1EYXRhSU9EZXZpY2U6OnByZXBhcmVDdXJyZW50RWxlbWVudCgpCit7CisgICAg
aWYgKG1fZm9ybUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dp
dGNoIChtX2Zvcm1FbGVtZW50c1swXS5tX3R5cGUpIHsKKyAgICBjYXNlIEZvcm1EYXRhRWxlbWVu
dDo6ZGF0YToKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNv
ZGVkRmlsZToKKyAgICAgICAgb3BlbkZpbGVGb3JDdXJyZW50RWxlbWVudCgpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBBdCB0aGlzIHBvaW50IGVuY29kZWRCbG9i
IHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBoYW5kbGVkLgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRm9ybURhdGFJT0RldmljZTo6b3BlbkZpbGVGb3JD
dXJyZW50RWxlbWVudCgpCit7CisgICAgaWYgKCFtX2N1cnJlbnRGaWxlKQorICAgICAgICBtX2N1
cnJlbnRGaWxlID0gbmV3IFFGaWxlOworCisgICAgbV9jdXJyZW50RmlsZS0+c2V0RmlsZU5hbWUo
bV9mb3JtRWxlbWVudHNbMF0ubV9maWxlbmFtZSk7CisgICAgbV9jdXJyZW50RmlsZS0+b3BlbihR
RmlsZTo6UmVhZE9ubHkpOworI2lmIEVOQUJMRShCTE9CKQorICAgIGlmIChpc1ZhbGlkRmlsZVRp
bWUobV9mb3JtRWxlbWVudHNbMF0ubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkgewor
ICAgICAgICBRRmlsZUluZm8gaW5mbygqbV9jdXJyZW50RmlsZSk7CisgICAgICAgIGlmICghaW5m
by5leGlzdHMoKSB8fCBzdGF0aWNfY2FzdDx0aW1lX3Q+KG1fZm9ybUVsZW1lbnRzWzBdLm1fZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkgPCBpbmZvLmxhc3RNb2RpZmllZCgpLnRvVGltZV90
KCkpIHsKKyAgICAgICAgICAgIG1vdmVUb05leHRFbGVtZW50KCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1fZm9ybUVsZW1lbnRzWzBdLm1fZmlsZVN0
YXJ0KQorICAgICAgICBtX2N1cnJlbnRGaWxlLT5zZWVrKG1fZm9ybUVsZW1lbnRzWzBdLm1fZmls
ZVN0YXJ0KTsKKyNlbmRpZgorfQorCisvLyBtX2Zvcm1FbGVtZW50c1swXSBpcyB0aGUgY3VycmVu
dCBpdGVtLiBJZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyIGlzCisvLyBiaWcgZW5vdWdoIHdlIGFy
ZSBnb2luZyB0byByZWFkIGZyb20gbW9yZSB0aGFuIG9uZSBGb3JtRGF0YUVsZW1lbnQKK3FpbnQ2
NCBGb3JtRGF0YUlPRGV2aWNlOjpyZWFkRGF0YShjaGFyKiBkZXN0aW5hdGlvbiwgcWludDY0IHNp
emUpCit7CisgICAgaWYgKG1fZm9ybUVsZW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IC0xOworCisgICAgcWludDY0IGNvcGllZCA9IDA7CisgICAgd2hpbGUgKGNvcGllZCA8IHNpemUg
JiYgIW1fZm9ybUVsZW1lbnRzLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBGb3JtRGF0YUVs
ZW1lbnQmIGVsZW1lbnQgPSBtX2Zvcm1FbGVtZW50c1swXTsKKyAgICAgICAgY29uc3QgcWludDY0
IGF2YWlsYWJsZSA9IHNpemUtY29waWVkOworCisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9
PSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGEpIHsKKyAgICAgICAgICAgIGNvbnN0IHFpbnQ2NCB0b0Nv
cHkgPSBxTWluPHFpbnQ2ND4oYXZhaWxhYmxlLCBlbGVtZW50Lm1fZGF0YS5zaXplKCkgLSBtX2N1
cnJlbnREZWx0YSk7CisgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24rY29waWVkLCBlbGVt
ZW50Lm1fZGF0YS5kYXRhKCkrbV9jdXJyZW50RGVsdGEsIHRvQ29weSk7IAorICAgICAgICAgICAg
bV9jdXJyZW50RGVsdGEgKz0gdG9Db3B5OworICAgICAgICAgICAgY29waWVkICs9IHRvQ29weTsK
KworICAgICAgICAgICAgaWYgKG1fY3VycmVudERlbHRhID09IGVsZW1lbnQubV9kYXRhLnNpemUo
KSkKKyAgICAgICAgICAgICAgICBtb3ZlVG9OZXh0RWxlbWVudCgpOworICAgICAgICB9IGVsc2Ug
aWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAg
ICAgICAgICAgIHF1aW50NjQgdG9Db3B5ID0gYXZhaWxhYmxlOworI2lmIEVOQUJMRShCTE9CKQor
ICAgICAgICAgICAgaWYgKGVsZW1lbnQubV9maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9F
bmRPZkZpbGUpCisgICAgICAgICAgICAgICAgdG9Db3B5ID0gcU1pbjxxaW50NjQ+KHRvQ29weSwg
ZWxlbWVudC5tX2ZpbGVMZW5ndGggLSBtX2N1cnJlbnREZWx0YSk7CisjZW5kaWYKKyAgICAgICAg
ICAgIGNvbnN0IFFCeXRlQXJyYXkgZGF0YSA9IG1fY3VycmVudEZpbGUtPnJlYWQodG9Db3B5KTsK
KyAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbitjb3BpZWQsIGRhdGEuY29uc3REYXRhKCks
IGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY3VycmVudERlbHRhICs9IGRhdGEuc2l6ZSgp
OworICAgICAgICAgICAgY29waWVkICs9IGRhdGEuc2l6ZSgpOworCisgICAgICAgICAgICBpZiAo
bV9jdXJyZW50RmlsZS0+YXRFbmQoKSB8fCAhbV9jdXJyZW50RmlsZS0+aXNPcGVuKCkpCisgICAg
ICAgICAgICAgICAgbW92ZVRvTmV4dEVsZW1lbnQoKTsKKyNpZiBFTkFCTEUoQkxPQikKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVsZW1lbnQubV9maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9F
bmRPZkZpbGUgJiYgbV9jdXJyZW50RGVsdGEgPT0gZWxlbWVudC5tX2ZpbGVMZW5ndGgpCisgICAg
ICAgICAgICAgICAgbW92ZVRvTmV4dEVsZW1lbnQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIGNvcGllZDsKK30KKworcWludDY0IEZvcm1EYXRhSU9EZXZpY2U6Ondy
aXRlRGF0YShjb25zdCBjaGFyKiwgcWludDY0KQoreworICAgIHJldHVybiAtMTsKK30KKworYm9v
bCBGb3JtRGF0YUlPRGV2aWNlOjppc1NlcXVlbnRpYWwoKSBjb25zdAoreworICAgIHJldHVybiB0
cnVlOworfQorCitRTmV0d29ya1JlcGx5SGFuZGxlckNhbGxRdWV1ZTo6UU5ldHdvcmtSZXBseUhh
bmRsZXJDYWxsUXVldWUoUU5ldHdvcmtSZXBseUhhbmRsZXIqIGhhbmRsZXIsIGJvb2wgZGVmZXJT
aWduYWxzKQorICAgIDogbV9yZXBseUhhbmRsZXIoaGFuZGxlcikKKyAgICAsIG1fbG9ja3MoMCkK
KyAgICAsIG1fZGVmZXJTaWduYWxzKGRlZmVyU2lnbmFscykKKyAgICAsIG1fZmx1c2hpbmcoZmFs
c2UpCit7CisgICAgUV9BU1NFUlQoaGFuZGxlcik7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhh
bmRsZXJDYWxsUXVldWU6OnB1c2goRW5xdWV1ZWRDYWxsIG1ldGhvZCkKK3sKKyAgICBtX2VucXVl
dWVkQ2FsbHMuYXBwZW5kKG1ldGhvZCk7CisgICAgZmx1c2goKTsKK30KKwordm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlckNhbGxRdWV1ZTo6bG9jaygpCit7CisgICAgKyttX2xvY2tzOworfQorCit2
b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyQ2FsbFF1ZXVlOjp1bmxvY2soKQoreworICAgIGlmICgh
bV9sb2NrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLS1tX2xvY2tzOworICAgIGZsdXNoKCk7
Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXJDYWxsUXVldWU6OnNldERlZmVyU2lnbmFs
cyhib29sIGRlZmVyLCBib29sIHN5bmMpCit7CisgICAgbV9kZWZlclNpZ25hbHMgPSBkZWZlcjsK
KyAgICBpZiAoc3luYykKKyAgICAgICAgZmx1c2goKTsKKyAgICBlbHNlCisgICAgICAgIFFNZXRh
T2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImZsdXNoIiwgIFF0OjpRdWV1ZWRDb25uZWN0aW9u
KTsKK30KKwordm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlckNhbGxRdWV1ZTo6Zmx1c2goKQorewor
ICAgIGlmIChtX2ZsdXNoaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZsdXNoaW5nID0g
dHJ1ZTsKKworICAgIHdoaWxlICghbV9kZWZlclNpZ25hbHMgJiYgIW1fbG9ja3MgJiYgIW1fZW5x
dWV1ZWRDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIChtX3JlcGx5SGFuZGxlci0+KihtX2VucXVl
dWVkQ2FsbHMudGFrZUZpcnN0KCkpKSgpOworCisgICAgbV9mbHVzaGluZyA9IGZhbHNlOworfQor
CitjbGFzcyBRdWV1ZUxvY2tlciB7CitwdWJsaWM6CisgICAgUXVldWVMb2NrZXIoUU5ldHdvcmtS
ZXBseUhhbmRsZXJDYWxsUXVldWUqIHF1ZXVlKSA6IG1fcXVldWUocXVldWUpIHsgbV9xdWV1ZS0+
bG9jaygpOyB9CisgICAgflF1ZXVlTG9ja2VyKCkgeyBtX3F1ZXVlLT51bmxvY2soKTsgfQorcHJp
dmF0ZToKKyAgICBRTmV0d29ya1JlcGx5SGFuZGxlckNhbGxRdWV1ZSogbV9xdWV1ZTsKK307CisK
K1FOZXR3b3JrUmVwbHlXcmFwcGVyOjpRTmV0d29ya1JlcGx5V3JhcHBlcihRTmV0d29ya1JlcGx5
SGFuZGxlckNhbGxRdWV1ZSogcXVldWUsIFFOZXR3b3JrUmVwbHkqIHJlcGx5LCBib29sIHNuaWZm
TUlNRVR5cGVzLCBRT2JqZWN0KiBwYXJlbnQpCisgICAgOiBRT2JqZWN0KHBhcmVudCkKKyAgICAs
IG1fcmVwbHkocmVwbHkpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQorICAgICwgbV9yZXNwb25zZUNv
bnRhaW5zRGF0YShmYWxzZSkKKyAgICAsIG1fc25pZmZNSU1FVHlwZXMoc25pZmZNSU1FVHlwZXMp
Cit7CisgICAgUV9BU1NFUlQobV9yZXBseSk7CisKKyAgICAvLyBzZXRGaW5pc2hlZCgpIG11c3Qg
YmUgdGhlIGZpcnN0IHRoYXQgd2UgY29ubmVjdCwgc28gaXNGaW5pc2hlZCgpIGlzIHVwZGF0ZWQg
d2hlbiBydW5uaW5nIG90aGVyIHNsb3RzLgorICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKGZp
bmlzaGVkKCkpLCB0aGlzLCBTTE9UKHNldEZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcmVw
bHksIFNJR05BTChmaW5pc2hlZCgpKSwgdGhpcywgU0xPVChyZWNlaXZlTWV0YURhdGEoKSkpOwor
ICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgdGhpcywgU0xPVChyZWNl
aXZlTWV0YURhdGEoKSkpOworICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKGRlc3Ryb3llZCgp
KSwgdGhpcywgU0xPVChyZXBseURlc3Ryb3llZCgpKSk7Cit9CisKK1FOZXR3b3JrUmVwbHlXcmFw
cGVyOjp+UU5ldHdvcmtSZXBseVdyYXBwZXIoKQoreworICAgIGlmIChtX3JlcGx5KQorICAgICAg
ICBtX3JlcGx5LT5kZWxldGVMYXRlcigpOworICAgIG1fcXVldWUtPmNsZWFyKCk7Cit9CisKK1FO
ZXR3b3JrUmVwbHkqIFFOZXR3b3JrUmVwbHlXcmFwcGVyOjpyZWxlYXNlKCkKK3sKKyAgICBpZiAo
IW1fcmVwbHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9yZXBseS0+ZGlzY29ubmVjdCh0
aGlzKTsKKyAgICBRTmV0d29ya1JlcGx5KiByZXBseSA9IG1fcmVwbHk7CisgICAgbV9yZXBseSA9
IDA7CisgICAgbV9zbmlmZmVyID0gbnVsbHB0cjsKKworICAgIHJldHVybiByZXBseTsKK30KKwor
dm9pZCBRTmV0d29ya1JlcGx5V3JhcHBlcjo6c3luY2hyb25vdXNMb2FkKCkKK3sKKyAgICBzZXRG
aW5pc2hlZCgpOworICAgIHJlY2VpdmVNZXRhRGF0YSgpOworfQorCit2b2lkIFFOZXR3b3JrUmVw
bHlXcmFwcGVyOjpzdG9wRm9yd2FyZGluZygpCit7CisgICAgaWYgKG1fcmVwbHkpIHsKKyAgICAg
ICAgLy8gRGlzY29ubmVjdCBhbGwgY29ubmVjdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhlIFJl
c291cmNlSGFuZGxlQ2xpZW50LgorICAgICAgICBtX3JlcGx5LT5kaXNjb25uZWN0KHRoaXMsIFNM
T1QocmVjZWl2ZU1ldGFEYXRhKCkpKTsKKyAgICAgICAgbV9yZXBseS0+ZGlzY29ubmVjdCh0aGlz
LCBTTE9UKGRpZFJlY2VpdmVGaW5pc2hlZCgpKSk7CisgICAgICAgIG1fcmVwbHktPmRpc2Nvbm5l
Y3QodGhpcywgU0xPVChkaWRSZWNlaXZlUmVhZHlSZWFkKCkpKTsKKyAgICB9CisgICAgUUNvcmVB
cHBsaWNhdGlvbjo6cmVtb3ZlUG9zdGVkRXZlbnRzKHRoaXMsIFFFdmVudDo6TWV0YUNhbGwpOwor
fQorCit2b2lkIFFOZXR3b3JrUmVwbHlXcmFwcGVyOjpyZWNlaXZlTWV0YURhdGEoKQoreworICAg
IC8vIFRoaXMgc2xvdCBpcyBvbmx5IHVzZWQgdG8gcmVjZWl2ZSB0aGUgZmlyc3Qgc2lnbmFsIGZy
b20gdGhlIFFOZXR3b3JrUmVwbHkgb2JqZWN0LgorICAgIHN0b3BGb3J3YXJkaW5nKCk7CisKKyAg
ICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOworICAgIG1fZW5jb2RpbmcgPSBleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOworICAgIG1fYWR2ZXJ0aXNlZE1J
TUVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CisKKyAg
ICBtX3JlZGlyZWN0aW9uVGFyZ2V0VXJsID0gbV9yZXBseS0+YXR0cmlidXRlKFFOZXR3b3JrUmVx
dWVzdDo6UmVkaXJlY3Rpb25UYXJnZXRBdHRyaWJ1dGUpLnRvVXJsKCk7CisgICAgaWYgKG1fcmVk
aXJlY3Rpb25UYXJnZXRVcmwuaXNWYWxpZCgpKSB7CisgICAgICAgIFF1ZXVlTG9ja2VyIGxvY2so
bV9xdWV1ZSk7CisgICAgICAgIG1fcXVldWUtPnB1c2goJlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpz
ZW5kUmVzcG9uc2VJZk5lZWRlZCk7CisgICAgICAgIG1fcXVldWUtPnB1c2goJlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpmaW5pc2gpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFt
X3NuaWZmTUlNRVR5cGVzKSB7CisgICAgICAgIGVtaXRNZXRhRGF0YUNoYW5nZWQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaXNTdXBwb3J0ZWRJbWFnZVR5cGUgPSBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobV9hZHZlcnRpc2VkTUlNRVR5
cGUpOworCisgICAgUV9BU1NFUlQoIW1fc25pZmZlcik7CisKKyAgICBtX3NuaWZmZXIgPSBhZG9w
dFB0cihuZXcgUXRNSU1FVHlwZVNuaWZmZXIobV9yZXBseSwgbV9hZHZlcnRpc2VkTUlNRVR5cGUs
IGlzU3VwcG9ydGVkSW1hZ2VUeXBlKSk7CisKKyAgICBpZiAobV9zbmlmZmVyLT5pc0ZpbmlzaGVk
KCkpIHsKKyAgICAgICAgcmVjZWl2ZVNuaWZmZWRNSU1FVHlwZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY29ubmVjdChtX3NuaWZmZXIuZ2V0KCksIFNJR05BTChmaW5pc2hlZCgp
KSwgdGhpcywgU0xPVChyZWNlaXZlU25pZmZlZE1JTUVUeXBlKCkpKTsKK30KKwordm9pZCBRTmV0
d29ya1JlcGx5V3JhcHBlcjo6cmVjZWl2ZVNuaWZmZWRNSU1FVHlwZSgpCit7CisgICAgUV9BU1NF
UlQobV9zbmlmZmVyKTsKKworICAgIG1fc25pZmZlZE1JTUVUeXBlID0gbV9zbmlmZmVyLT5taW1l
VHlwZSgpOworICAgIG1fc25pZmZlciA9IG51bGxwdHI7CisKKyAgICBlbWl0TWV0YURhdGFDaGFu
Z2VkKCk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseVdyYXBwZXI6OnNldEZpbmlzaGVkKCkKK3sK
KyAgICAvLyBEdWUgdG8gYSBsaW1pdGF0aW9uIG9mIFFOZXR3b3JrUmVwbHkgcHVibGljIEFQSSwg
aXRzIHN1YmNsYXNzZXMgbmV2ZXIgZ2V0IHRoZSBjaGFuY2UgdG8KKyAgICAvLyBjaGFuZ2UgdGhl
IHJlc3VsdCBvZiBRTmV0d29ya1JlcGx5Ojppc0ZpbmlzaGVkKCkgbWV0aG9kLiBTbyB3ZSBuZWVk
IHRvIGtlZXAgdHJhY2sgb2YgdGhlCisgICAgLy8gZmluaXNoZWQgc3RhdGUgb3Vyc2VsdmVzLiBU
aGlzIGxpbWl0YXRpb24gaXMgZml4ZWQgaW4gNC44LCBidXQgd2UnbGwgc3RpbGwgaGF2ZSBhcHBs
aWNhdGlvbnMKKyAgICAvLyB0aGF0IGRvbid0IHVzZSB0aGUgc29sdXRpb24uIFNlZSBodHRwOi8v
YnVncmVwb3J0cy5xdC5ub2tpYS5jb20vYnJvd3NlL1FUQlVHLTExNzM3LgorICAgIFFfQVNTRVJU
KCFpc0ZpbmlzaGVkKCkpOworICAgIG1fcmVwbHktPnNldFByb3BlcnR5KCJfcV9pc0ZpbmlzaGVk
IiwgdHJ1ZSk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseVdyYXBwZXI6OnJlcGx5RGVzdHJveWVk
KCkKK3sKKyAgICBtX3JlcGx5ID0gMDsKKyAgICBtX3NuaWZmZXIgPSBudWxscHRyOworfQorCit2
b2lkIFFOZXR3b3JrUmVwbHlXcmFwcGVyOjplbWl0TWV0YURhdGFDaGFuZ2VkKCkKK3sKKyAgICBR
dWV1ZUxvY2tlciBsb2NrKG1fcXVldWUpOworICAgIG1fcXVldWUtPnB1c2goJlFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCk7CisKKyAgICBpZiAobV9yZXBseS0+Ynl0
ZXNBdmFpbGFibGUoKSkgeworICAgICAgICBtX3Jlc3BvbnNlQ29udGFpbnNEYXRhID0gdHJ1ZTsK
KyAgICAgICAgbV9xdWV1ZS0+cHVzaCgmUU5ldHdvcmtSZXBseUhhbmRsZXI6OmZvcndhcmREYXRh
KTsKKyAgICB9CisKKyAgICBpZiAoaXNGaW5pc2hlZCgpKSB7CisgICAgICAgIG1fcXVldWUtPnB1
c2goJlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmaW5pc2gpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gSWYgbm90IGZpbmlzaGVkLCBjb25uZWN0IHRvIHRoZSBzbG90cyB0aGF0IHdp
bGwgYmUgdXNlZCBmcm9tIHRoaXMgcG9pbnQgb24uCisgICAgY29ubmVjdChtX3JlcGx5LCBTSUdO
QUwocmVhZHlSZWFkKCkpLCB0aGlzLCBTTE9UKGRpZFJlY2VpdmVSZWFkeVJlYWQoKSkpOworICAg
IGNvbm5lY3QobV9yZXBseSwgU0lHTkFMKGZpbmlzaGVkKCkpLCB0aGlzLCBTTE9UKGRpZFJlY2Vp
dmVGaW5pc2hlZCgpKSk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseVdyYXBwZXI6OmRpZFJlY2Vp
dmVSZWFkeVJlYWQoKQoreworICAgIGlmIChtX3JlcGx5LT5ieXRlc0F2YWlsYWJsZSgpKQorICAg
ICAgICBtX3Jlc3BvbnNlQ29udGFpbnNEYXRhID0gdHJ1ZTsKKyAgICBtX3F1ZXVlLT5wdXNoKCZR
TmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEpOworfQorCit2b2lkIFFOZXR3b3JrUmVw
bHlXcmFwcGVyOjpkaWRSZWNlaXZlRmluaXNoZWQoKQoreworICAgIC8vIERpc2Nvbm5lY3Rpbmcg
d2lsbCBtYWtlIHN1cmUgdGhhdCBub3RoaW5nIHdpbGwgaGFwcGVuIGFmdGVyIGVtaXR0aW5nIHRo
ZSBmaW5pc2hlZCBzaWduYWwuCisgICAgc3RvcEZvcndhcmRpbmcoKTsKKyAgICBtX3F1ZXVlLT5w
dXNoKCZRTmV0d29ya1JlcGx5SGFuZGxlcjo6ZmluaXNoKTsKK30KKworU3RyaW5nIFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjpodHRwTWV0aG9kKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fbWV0aG9k
KSB7CisgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkdldE9wZXJhdGlvbjoKKyAgICAg
ICAgcmV0dXJuICJHRVQiOworICAgIGNhc2UgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpIZWFkT3Bl
cmF0aW9uOgorICAgICAgICByZXR1cm4gIkhFQUQiOworICAgIGNhc2UgUU5ldHdvcmtBY2Nlc3NN
YW5hZ2VyOjpQb3N0T3BlcmF0aW9uOgorICAgICAgICByZXR1cm4gIlBPU1QiOworICAgIGNhc2Ug
UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpQdXRPcGVyYXRpb246CisgICAgICAgIHJldHVybiAiUFVU
IjsKKyAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6RGVsZXRlT3BlcmF0aW9uOgorICAg
ICAgICByZXR1cm4gIkRFTEVURSI7CisgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkN1
c3RvbU9wZXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIG1fcmVzb3VyY2VIYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLmh0dHBNZXRob2QoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuICJHRVQiOworICAgIH0KK30KKworUU5ldHdvcmtSZXBs
eUhhbmRsZXI6OlFOZXR3b3JrUmVwbHlIYW5kbGVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIExv
YWRUeXBlIGxvYWRUeXBlLCBib29sIGRlZmVycmVkKQorICAgIDogUU9iamVjdCgwKQorICAgICwg
bV9yZXNvdXJjZUhhbmRsZShoYW5kbGUpCisgICAgLCBtX2xvYWRUeXBlKGxvYWRUeXBlKQorICAg
ICwgbV9yZWRpcmVjdGlvblRyaWVzKGdNYXhSZWRpcmVjdGlvbnMpCisgICAgLCBtX3F1ZXVlKHRo
aXMsIGRlZmVycmVkKQoreworICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCAmciA9IG1fcmVzb3Vy
Y2VIYW5kbGUtPmZpcnN0UmVxdWVzdCgpOworCisgICAgaWYgKHIuaHR0cE1ldGhvZCgpID09ICJH
RVQiKQorICAgICAgICBtX21ldGhvZCA9IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6R2V0T3BlcmF0
aW9uOworICAgIGVsc2UgaWYgKHIuaHR0cE1ldGhvZCgpID09ICJIRUFEIikKKyAgICAgICAgbV9t
ZXRob2QgPSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkhlYWRPcGVyYXRpb247CisgICAgZWxzZSBp
ZiAoci5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQorICAgICAgICBtX21ldGhvZCA9IFFOZXR3b3Jr
QWNjZXNzTWFuYWdlcjo6UG9zdE9wZXJhdGlvbjsKKyAgICBlbHNlIGlmIChyLmh0dHBNZXRob2Qo
KSA9PSAiUFVUIikKKyAgICAgICAgbV9tZXRob2QgPSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OlB1
dE9wZXJhdGlvbjsKKyAgICBlbHNlIGlmIChyLmh0dHBNZXRob2QoKSA9PSAiREVMRVRFIikKKyAg
ICAgICAgbV9tZXRob2QgPSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkRlbGV0ZU9wZXJhdGlvbjsK
KyAgICBlbHNlCisgICAgICAgIG1fbWV0aG9kID0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpDdXN0
b21PcGVyYXRpb247CisKKyAgICBtX3JlcXVlc3QgPSByLnRvTmV0d29ya1JlcXVlc3QobV9yZXNv
dXJjZUhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9jb250ZXh0LmdldCgpKTsKKworICAgIG1fcXVl
dWUucHVzaCgmUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0KTsKK30KKwordm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6YWJvcnQoKQoreworICAgIG1fcmVzb3VyY2VIYW5kbGUgPSAwOworICAg
IGlmIChRTmV0d29ya1JlcGx5KiByZXBseSA9IHJlbGVhc2UoKSkgeworICAgICAgICByZXBseS0+
YWJvcnQoKTsKKyAgICAgICAgcmVwbHktPmRlbGV0ZUxhdGVyKCk7CisgICAgfQorICAgIGRlbGV0
ZUxhdGVyKCk7Cit9CisKK1FOZXR3b3JrUmVwbHkqIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpyZWxl
YXNlKCkKK3sKKyAgICBpZiAoIW1fcmVwbHlXcmFwcGVyKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBRTmV0d29ya1JlcGx5KiByZXBseSA9IG1f
cmVwbHlXcmFwcGVyLT5yZWxlYXNlKCk7CisgICAgbV9yZXBseVdyYXBwZXIgPSBudWxscHRyOwor
ICAgIHJldHVybiByZXBseTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlSHR0cEVycm9y
KFFOZXR3b3JrUmVwbHkqIHJlcGx5LCBib29sIHJlY2VpdmVkRGF0YSkKK3sKKyAgICAvLyBBbiBI
RUFEIFhtbEhUVFBSZXF1ZXN0IHNob3VsZG4ndCBiZSBtYXJrZWQgYXMgZmFpbHVyZSBmb3IgSFRU
UCBlcnJvcnMuCisgICAgaWYgKHJlcGx5LT5vcGVyYXRpb24oKSA9PSBRTmV0d29ya0FjY2Vzc01h
bmFnZXI6OkhlYWRPcGVyYXRpb24pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaW50IGh0
dHBTdGF0dXNDb2RlID0gcmVwbHktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0
dXNDb2RlQXR0cmlidXRlKS50b0ludCgpOworCisgICAgaWYgKGh0dHBTdGF0dXNDb2RlID09IDQw
MSB8fCBodHRwU3RhdHVzQ29kZSA9PSA0MDcpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKHJlY2VpdmVkRGF0YSAmJiAoaHR0cFN0YXR1c0NvZGUgPj0gNDAwICYmIGh0dHBTdGF0dXND
b2RlIDwgNjAwKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OmZpbmlzaCgpCit7CisgICAgQVNTRVJUKG1f
cmVwbHlXcmFwcGVyICYmIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpICYmICF3YXNBYm9ydGVkKCkp
OworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50
KiBjbGllbnQgPSBtX3Jlc291cmNlSGFuZGxlLT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkg
eworICAgICAgICBtX3JlcGx5V3JhcHBlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobV9yZXBseVdyYXBwZXItPndhc1JlZGlyZWN0ZWQoKSkgeworICAgICAg
ICBtX3JlcGx5V3JhcHBlciA9IG51bGxwdHI7CisgICAgICAgIG1fcXVldWUucHVzaCgmUU5ldHdv
cmtSZXBseUhhbmRsZXI6OnN0YXJ0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yKCkgfHwgc2hvdWxkSWdub3JlSHR0cEVy
cm9yKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLCBtX3JlcGx5V3JhcHBlci0+cmVzcG9uc2VDb250
YWluc0RhdGEoKSkpCisgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhtX3Jlc291cmNl
SGFuZGxlLCAwKTsKKyAgICBlbHNlCisgICAgICAgIGNsaWVudC0+ZGlkRmFpbChtX3Jlc291cmNl
SGFuZGxlLCBlcnJvckZvclJlcGx5KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpKSk7CisKKyAgICBt
X3JlcGx5V3JhcHBlciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OnRpbWVvdXQoKQoreworICAgIGlmICghbV9yZXBseVdyYXBwZXIgfHwgd2FzQWJvcnRlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgcmVxdWVzdCBpcyBhbHJlYWR5IGZpbmlzaGVk
LCBidXQgaXMgcHJvYmFibHkganVzdCB3YWl0aW5nIGluIHRoZSBxdWV1ZSB0byBnZXQgcHJvY2Vz
c2VkLgorICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBpZ25vcmUgdGhlIHRpbWVvdXQgYW5kIHByb2Nl
ZWQgYXMgbm9ybWFsLgorICAgIGlmIChtX3JlcGx5V3JhcHBlci0+aXNGaW5pc2hlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNv
dXJjZUhhbmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpIHsKKyAgICAgICAgbV9yZXBs
eVdyYXBwZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCht
X3JlcGx5V3JhcHBlci0+cmVwbHkoKSk7CisKKyAgICBSZXNvdXJjZUVycm9yIHRpbWVvdXRFcnJv
cigiUXROZXR3b3JrIiwgUU5ldHdvcmtSZXBseTo6VGltZW91dEVycm9yLCBtX3JlcGx5V3JhcHBl
ci0+cmVwbHkoKS0+dXJsKCkudG9TdHJpbmcoKSwgIlJlcXVlc3QgdGltZWQgb3V0Iik7CisgICAg
dGltZW91dEVycm9yLnNldElzVGltZW91dCh0cnVlKTsKKyAgICBjbGllbnQtPmRpZEZhaWwobV9y
ZXNvdXJjZUhhbmRsZSwgdGltZW91dEVycm9yKTsKKworICAgIG1fcmVwbHlXcmFwcGVyLmNsZWFy
KCk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnRpbWVyRXZlbnQoUVRpbWVyRXZl
bnQqIHRpbWVyRXZlbnQpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lckV2ZW50LCB0aW1lckV2
ZW50LT50aW1lcklkKCk9PSBtX3RpbWVvdXRUaW1lci50aW1lcklkKCkpOworICAgIG1fdGltZW91
dFRpbWVyLnN0b3AoKTsKKyAgICB0aW1lb3V0KCk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhh
bmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkKK3sKKyAgICBBU1NFUlQobV9yZXBseVdyYXBw
ZXIgJiYgbV9yZXBseVdyYXBwZXItPnJlcGx5KCkgJiYgIXdhc0Fib3J0ZWQoKSk7CisKKyAgICBp
ZiAobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmVycm9yKCkgJiYgbV9yZXBseVdyYXBwZXItPnJl
cGx5KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRl
KS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQq
IGNsaWVudCA9IG1fcmVzb3VyY2VIYW5kbGUtPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IG1fcmVwbHlXcmFw
cGVyLT5taW1lVHlwZSgpOworCisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgeworICAgICAg
ICAvLyBsZXQncyB0cnkgdG8gZ3Vlc3MgZnJvbSB0aGUgZXh0ZW5zaW9uCisgICAgICAgIG1pbWVU
eXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVwbHlXcmFwcGVy
LT5yZXBseSgpLT51cmwoKS5wYXRoKCkpOworICAgIH0KKworICAgIFVSTCB1cmwobV9yZXBseVdy
YXBwZXItPnJlcGx5KCktPnVybCgpKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVy
bCwgbWltZVR5cGUubG93ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVw
bHlXcmFwcGVyLT5yZXBseSgpLT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3Ro
SGVhZGVyKS50b0xvbmdMb25nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Jl
cGx5V3JhcHBlci0+ZW5jb2RpbmcoKSwgU3RyaW5nKCkpOworCisgICAgaWYgKHVybC5pc0xvY2Fs
RmlsZSgpKSB7CisgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVzb3VyY2VI
YW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZSBz
dGF0dXMgY29kZSBpcyBlcXVhbCB0byAwIGZvciBwcm90b2NvbHMgbm90IGluIHRoZSBIVFRQIGZh
bWlseS4KKyAgICBpbnQgc3RhdHVzQ29kZSA9IG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5hdHRy
aWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwU3RhdHVzQ29kZUF0dHJpYnV0ZSkudG9JbnQoKTsK
KworICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CisgICAgICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24o
UVN0cmluZzo6ZnJvbUxhdGluMShtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+cmF3SGVhZGVyKCJD
b250ZW50LURpc3Bvc2l0aW9uIikpKTsKKworICAgICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1
Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVU
eXBlKG1pbWVUeXBlKTsKKyAgICAgICAgICAgIGlmIChleHRlbnNpb25zLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWdnZXN0ZWRGaWxlbmFtZSh1cmwubGFzdFBhdGhD
b21wb25lbnQoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgc3VmZml4IGRvZXNuJ3QgbWF0Y2ggdGhlIE1JTUUgdHlwZSwgY29ycmVjdCB0aGUgc3VmZml4
LgorICAgICAgICAgICAgICAgIFFTdHJpbmcgZmlsZW5hbWUgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgc3VmZml4ID0gUU1pbWVEYXRhYmFz
ZSgpLnN1ZmZpeEZvckZpbGVOYW1lKGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4
dGVuc2lvbnMuY29udGFpbnMoc3VmZml4KSkgeworICAgICAgICAgICAgICAgICAgICBmaWxlbmFt
ZS5jaG9wKHN1ZmZpeC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lICs9
IE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVU
eXBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3Vn
Z2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7CisgICAgICAgIHJl
c3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5hdHRyaWJ1
dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUmVhc29uUGhyYXNlQXR0cmlidXRlKS50b0J5dGVBcnJh
eSgpLmNvbnN0RGF0YSgpKTsKKworICAgICAgICAvLyBBZGQgcmVtYWluaW5nIGhlYWRlcnMuCisg
ICAgICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrUmVwbHk6OlJhd0hlYWRlclBhaXImIHBhaXIs
IG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5yYXdIZWFkZXJQYWlycygpKQorICAgICAgICAgICAg
cmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKFFTdHJpbmc6OmZyb21MYXRpbjEocGFpci5maXJz
dCksIFFTdHJpbmc6OmZyb21MYXRpbjEocGFpci5zZWNvbmQpKTsKKyAgICB9CisKKyAgICBRVXJs
IHJlZGlyZWN0aW9uID0gbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmF0dHJpYnV0ZShRTmV0d29y
a1JlcXVlc3Q6OlJlZGlyZWN0aW9uVGFyZ2V0QXR0cmlidXRlKS50b1VybCgpOworICAgIGlmIChy
ZWRpcmVjdGlvbi5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcmVkaXJlY3QocmVzcG9uc2UsIHJlZGly
ZWN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKG1fcmVzb3VyY2VIYW5kbGUsIHJlc3BvbnNlKTsKK30KKwordm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6cmVkaXJlY3QoUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFFVcmwmIHJlZGlyZWN0aW9uKQoreworICAgIFFVcmwgbmV3VXJsID0gbV9yZXBseVdyYXBwZXIt
PnJlcGx5KCktPnVybCgpLnJlc29sdmVkKHJlZGlyZWN0aW9uKTsKKworICAgIFJlc291cmNlSGFu
ZGxlQ2xpZW50KiBjbGllbnQgPSBtX3Jlc291cmNlSGFuZGxlLT5jbGllbnQoKTsKKyAgICBBU1NF
UlQoY2xpZW50KTsKKworICAgIGludCBzdGF0dXNDb2RlID0gbV9yZXBseVdyYXBwZXItPnJlcGx5
KCktPmF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlKS50
b0ludCgpOworCisgICAgbV9yZWRpcmVjdGlvblRyaWVzLS07CisgICAgaWYgKCFtX3JlZGlyZWN0
aW9uVHJpZXMpIHsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigiSFRUUCIsIDQwMCAvKmJh
ZCByZXF1ZXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VXJsLnRvU3RyaW5n
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJSZWRpcmVjdGlvbiBsaW1pdCByZWFjaGVkIikpOworICAgICAgICBj
bGllbnQtPmRpZEZhaWwobV9yZXNvdXJjZUhhbmRsZSwgZXJyb3IpOworICAgICAgICBtX3JlcGx5
V3JhcHBlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAgU3Rh
dHVzIENvZGUgMzAxIChNb3ZlZCBQZXJtYW5lbnRseSksIDMwMiAoTW92ZWQgVGVtcG9yYXJpbHkp
LCAzMDMgKFNlZSBPdGhlcik6CisgICAgLy8gICAgLSBJZiBvcmlnaW5hbCByZXF1ZXN0IGlzIFBP
U1QgY29udmVydCB0byBHRVQgYW5kIHJlZGlyZWN0IGF1dG9tYXRpY2FsbHkKKyAgICAvLyAgU3Rh
dHVzIENvZGUgMzA3IChUZW1wb3JhcnkgUmVkaXJlY3QpIGFuZCBhbGwgb3RoZXIgcmVkaXJlY3Qg
c3RhdHVzIGNvZGVzOgorICAgIC8vICAgIC0gVXNlIHRoZSBIVFRQIG1ldGhvZCBmcm9tIHRoZSBw
cmV2aW91cyByZXF1ZXN0CisgICAgaWYgKChzdGF0dXNDb2RlID49IDMwMSAmJiBzdGF0dXNDb2Rl
IDw9IDMwMykgJiYgbV9yZXNvdXJjZUhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgp
ID09ICJQT1NUIikKKyAgICAgICAgbV9tZXRob2QgPSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6Okdl
dE9wZXJhdGlvbjsKKworICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gbV9yZXNvdXJj
ZUhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCk7CisgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKGh0
dHBNZXRob2QoKSk7CisgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VXJsKTsKKworICAgIC8vIFNo
b3VsZCBub3Qgc2V0IFJlZmVyZXIgYWZ0ZXIgYSByZWRpcmVjdCBmcm9tIGEgc2VjdXJlIHJlc291
cmNlIHRvIG5vbi1zZWN1cmUgb25lLgorICAgIGlmICghbmV3UmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzKCJodHRwcyIpICYmIHByb3RvY29sSXMobmV3UmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0
dHBzIikgJiYgbV9yZXNvdXJjZUhhbmRsZS0+Y29udGV4dCgpLT5zaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCisgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVm
ZXJyZXIoKTsKKworICAgIGNsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KG1fcmVzb3VyY2VIYW5kbGUs
IG5ld1JlcXVlc3QsIHJlc3BvbnNlKTsKKyAgICBpZiAod2FzQWJvcnRlZCgpKSAvLyBOZXR3b3Jr
IGVycm9yIGNhbmNlbGxlZCB0aGUgcmVxdWVzdC4KKyAgICAgICAgcmV0dXJuOworCisgICAgbV9y
ZXF1ZXN0ID0gbmV3UmVxdWVzdC50b05ldHdvcmtSZXF1ZXN0KG1fcmVzb3VyY2VIYW5kbGUtPmdl
dEludGVybmFsKCktPm1fY29udGV4dC5nZXQoKSk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhh
bmRsZXI6OmZvcndhcmREYXRhKCkKK3sKKyAgICBBU1NFUlQobV9yZXBseVdyYXBwZXIgJiYgbV9y
ZXBseVdyYXBwZXItPnJlcGx5KCkgJiYgIXdhc0Fib3J0ZWQoKSAmJiAhbV9yZXBseVdyYXBwZXIt
Pndhc1JlZGlyZWN0ZWQoKSk7CisKKyAgICBRQnl0ZUFycmF5IGRhdGEgPSBtX3JlcGx5V3JhcHBl
ci0+cmVwbHkoKS0+cmVhZChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+Ynl0ZXNBdmFpbGFibGUo
KSk7CisKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRs
ZS0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKKyAg
ICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBz
aXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKKyAgICAvLyBDb250ZW50LUxlbmd0aCBo
ZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCisgICAgaWYgKCFk
YXRhLmlzRW1wdHkoKSkKKyAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNl
SGFuZGxlLCBkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLmxlbmd0aCgpLCAtMSk7Cit9CisKK3ZvaWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OnVwbG9hZFByb2dyZXNzKHFpbnQ2NCBieXRlc1NlbnQsIHFp
bnQ2NCBieXRlc1RvdGFsKQoreworICAgIGlmICh3YXNBYm9ydGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBtX3Jlc291cmNlSGFuZGxl
LT5jbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFieXRlc1RvdGFsKSB7CisgICAgICAgIC8vIFdoZW4gZmluaXNoZWQgUU5ldHdvcmtSZXBseSBl
bWl0cyBhIHByb2dyZXNzIG9mIDAgYnl0ZXMuCisgICAgICAgIC8vIElnbm9yZSB0aGF0LCB0byBh
dm9pZCBmaXJpbmcgdHdpY2UuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjbGllbnQt
PmRpZFNlbmREYXRhKG1fcmVzb3VyY2VIYW5kbGUsIGJ5dGVzU2VudCwgYnl0ZXNUb3RhbCk7Cit9
CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OmNsZWFyQ29udGVudEhlYWRlcnMoKQorewor
ICAgIC8vIENsZWFyaW5nIENvbnRlbnQtbGVuZ3RoIGFuZCBDb250ZW50LXR5cGUgb2YgdGhlIHJl
cXVlc3RzIHRoYXQgZG8gbm90IGhhdmUgY29udGVudHMuCisgICAgLy8gVGhpcyBpcyBuZWNlc3Nh
cnkgdG8gZW5zdXJlIFBPU1QgcmVxdWVzdHMgcmVkaXJlY3RlZCB0byBHRVRzIGRvIG5vdCBsZWFr
IG1ldGFkYXRhCisgICAgLy8gYWJvdXQgdGhlIFBPU1QgY29udGVudCB0byB0aGUgc2l0ZSB0aGV5
J3ZlIGJlZW4gcmVkaXJlY3RlZCB0by4KKyAgICBtX3JlcXVlc3Quc2V0SGVhZGVyKFFOZXR3b3Jr
UmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIsIFFWYXJpYW50KCkpOworICAgIG1fcmVxdWVzdC5z
ZXRIZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVyLCBRVmFyaWFudCgp
KTsKK30KKworRm9ybURhdGFJT0RldmljZSogUU5ldHdvcmtSZXBseUhhbmRsZXI6OmdldElPRGV2
aWNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBGb3JtRGF0YUlPRGV2
aWNlKiBkZXZpY2UgPSBuZXcgRm9ybURhdGFJT0RldmljZShyZXF1ZXN0Lmh0dHBCb2R5KCkpOwor
ICAgIC8vIFdlIG1heSBiZSB1cGxvYWRpbmcgZmlsZXMgc28gcHJldmVudCBRTlIgZnJvbSBidWZm
ZXJpbmcgZGF0YS4KKyAgICBtX3JlcXVlc3Quc2V0SGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudExlbmd0aEhlYWRlciwgZGV2aWNlLT5nZXRGb3JtRGF0YVNpemUoKSk7CisgICAgbV9yZXF1
ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkRvTm90QnVmZmVyVXBsb2FkRGF0YUF0
dHJpYnV0ZSwgUVZhcmlhbnQodHJ1ZSkpOworICAgIHJldHVybiBkZXZpY2U7Cit9CisKK1FOZXR3
b3JrUmVwbHkqIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTmV0d29ya1JlcXVlc3QoUU5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgaWYgKG1fbG9hZFR5cGUgPT0gU3luY2hyb25vdXNMb2FkKQorICAgICAgICBtX3Jl
cXVlc3Quc2V0QXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6U3luY2hyb25vdXNSZXF1ZXN0QXR0
cmlidXRlLCB0cnVlKTsKKworICAgIGlmICghbWFuYWdlcikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBjb25zdCBRVXJsIHVybCA9IG1fcmVxdWVzdC51cmwoKTsKKworICAgIC8vIFBvc3QgcmVx
dWVzdHMgb24gZmlsZXMgYW5kIGRhdGEgZG9uJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UsIGJ1dCBmb3IK
KyAgICAvLyBmYXN0L2Zvcm1zL2Zvcm0tcG9zdC11cmxlbmNvZGVkLmh0bWwgYW5kIGZvciBmYXN0
L2Zvcm1zL2J1dHRvbi1zdGF0ZS1yZXN0b3JlLmh0bWwKKyAgICAvLyB3ZSBzdGlsbCBuZWVkIHRv
IHJldHJpZXZlIHRoZSBmaWxlL2RhdGEsIHdoaWNoIG1lYW5zIHdlIG1hcCBpdCB0byBhIEdldCBp
bnN0ZWFkLgorICAgIGlmIChtX21ldGhvZCA9PSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OlBvc3RP
cGVyYXRpb24KKyAgICAgICAgJiYgKCF1cmwudG9Mb2NhbEZpbGUoKS5pc0VtcHR5KCkgfHwgdXJs
LnNjaGVtZSgpID09IFFMYXRpbjFTdHJpbmcoImRhdGEiKSkpCisgICAgICAgIG1fbWV0aG9kID0g
UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb247CisKKyAgICBzd2l0Y2ggKG1fbWV0
aG9kKSB7CisgICAgICAgIGNhc2UgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb246
CisgICAgICAgICAgICBjbGVhckNvbnRlbnRIZWFkZXJzKCk7CisgICAgICAgICAgICByZXR1cm4g
bWFuYWdlci0+Z2V0KG1fcmVxdWVzdCk7CisgICAgICAgIGNhc2UgUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyOjpQb3N0T3BlcmF0aW9uOiB7CisgICAgICAgICAgICBGb3JtRGF0YUlPRGV2aWNlKiBwb3N0
RGV2aWNlID0gZ2V0SU9EZXZpY2UocmVxdWVzdCk7CisgICAgICAgICAgICBRTmV0d29ya1JlcGx5
KiByZXN1bHQgPSBtYW5hZ2VyLT5wb3N0KG1fcmVxdWVzdCwgcG9zdERldmljZSk7CisgICAgICAg
ICAgICBwb3N0RGV2aWNlLT5zZXRQYXJlbnQocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6Okhl
YWRPcGVyYXRpb246CisgICAgICAgICAgICBjbGVhckNvbnRlbnRIZWFkZXJzKCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFuYWdlci0+aGVhZChtX3JlcXVlc3QpOworICAgICAgICBjYXNlIFFOZXR3
b3JrQWNjZXNzTWFuYWdlcjo6UHV0T3BlcmF0aW9uOiB7CisgICAgICAgICAgICBGb3JtRGF0YUlP
RGV2aWNlKiBwdXREZXZpY2UgPSBnZXRJT0RldmljZShyZXF1ZXN0KTsKKyAgICAgICAgICAgIFFO
ZXR3b3JrUmVwbHkqIHJlc3VsdCA9IG1hbmFnZXItPnB1dChtX3JlcXVlc3QsIHB1dERldmljZSk7
CisgICAgICAgICAgICBwdXREZXZpY2UtPnNldFBhcmVudChyZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFu
YWdlcjo6RGVsZXRlT3BlcmF0aW9uOiB7CisgICAgICAgICAgICBjbGVhckNvbnRlbnRIZWFkZXJz
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFuYWdlci0+ZGVsZXRlUmVzb3VyY2UobV9yZXF1ZXN0
KTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6Q3VzdG9t
T3BlcmF0aW9uOiB7CisgICAgICAgICAgICBGb3JtRGF0YUlPRGV2aWNlKiBjdXN0b21EZXZpY2Ug
PSBnZXRJT0RldmljZShyZXF1ZXN0KTsKKyAgICAgICAgICAgIFFOZXR3b3JrUmVwbHkqIHJlc3Vs
dCA9IG1hbmFnZXItPnNlbmRDdXN0b21SZXF1ZXN0KG1fcmVxdWVzdCwgbV9yZXNvdXJjZUhhbmRs
ZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpLmxhdGluMSgpLmRhdGEoKSwgY3VzdG9tRGV2
aWNlKTsKKyAgICAgICAgICAgIGN1c3RvbURldmljZS0+c2V0UGFyZW50KHJlc3VsdCk7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGNhc2UgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyOjpVbmtub3duT3BlcmF0aW9uOgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0KCkKK3sKKyAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gbV9yZXNvdXJjZUhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBp
ZiAoIWQgfHwgIWQtPm1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUU5ldHdvcmtS
ZXBseSogcmVwbHkgPSBzZW5kTmV0d29ya1JlcXVlc3QoZC0+bV9jb250ZXh0LT5uZXR3b3JrQWNj
ZXNzTWFuYWdlcigpLCBkLT5tX2ZpcnN0UmVxdWVzdCk7CisgICAgaWYgKCFyZXBseSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9yZXBseVdyYXBwZXIgPSBhZG9wdFB0cihuZXcgUU5ldHdvcmtS
ZXBseVdyYXBwZXIoJm1fcXVldWUsIHJlcGx5LCBtX3Jlc291cmNlSGFuZGxlLT5zaG91bGRDb250
ZW50U25pZmYoKSAmJiBkLT5tX2NvbnRleHQtPm1pbWVTbmlmZmluZ0VuYWJsZWQoKSwgdGhpcykp
OworCisgICAgaWYgKG1fbG9hZFR5cGUgPT0gU3luY2hyb25vdXNMb2FkKSB7CisgICAgICAgIG1f
cmVwbHlXcmFwcGVyLT5zeW5jaHJvbm91c0xvYWQoKTsKKyAgICAgICAgLy8gSWYgc3VwcG9ydGVk
LCBhIHN5bmNocm9ub3VzIHJlcXVlc3Qgd2lsbCBiZSBmaW5pc2hlZCBhdCB0aGlzIHBvaW50LCBu
byBuZWVkIHRvIGhvb2sgdXAgdGhlIHNpZ25hbHMuCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBkb3VibGUgdGltZW91dEluU2Vjb25kcyA9IGQtPm1fZmlyc3RSZXF1ZXN0LnRpbWVvdXRJ
bnRlcnZhbCgpOworICAgIGlmICh0aW1lb3V0SW5TZWNvbmRzID4gMCAmJiB0aW1lb3V0SW5TZWNv
bmRzIDwgKElOVF9NQVggLyAxMDAwKSkKKyAgICAgICAgbV90aW1lb3V0VGltZXIuc3RhcnQodGlt
ZW91dEluU2Vjb25kcyAqIDEwMDAsIHRoaXMpOworCisgICAgaWYgKG1fcmVzb3VyY2VIYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnJlcG9ydFVwbG9hZFByb2dyZXNzKCkpCisgICAgICAgIGNvbm5lY3Qo
bV9yZXBseVdyYXBwZXItPnJlcGx5KCksIFNJR05BTCh1cGxvYWRQcm9ncmVzcyhxaW50NjQsIHFp
bnQ2NCkpLCB0aGlzLCBTTE9UKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSkpOworfQor
CitSZXNvdXJjZUVycm9yIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjplcnJvckZvclJlcGx5KFFOZXR3
b3JrUmVwbHkqIHJlcGx5KQoreworICAgIFFVcmwgdXJsID0gcmVwbHktPnVybCgpOworICAgIGlu
dCBodHRwU3RhdHVzQ29kZSA9IHJlcGx5LT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRw
U3RhdHVzQ29kZUF0dHJpYnV0ZSkudG9JbnQoKTsKKworICAgIGlmIChodHRwU3RhdHVzQ29kZSkK
KyAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIkhUVFAiLCBodHRwU3RhdHVzQ29kZSwgdXJs
LnRvU3RyaW5nKCksIHJlcGx5LT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUmVhc29u
UGhyYXNlQXR0cmlidXRlKS50b1N0cmluZygpKTsKKworICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KCJRdE5ldHdvcmsiLCByZXBseS0+ZXJyb3IoKSwgdXJsLnRvU3RyaW5nKCksIHJlcGx5LT5lcnJv
clN0cmluZygpKTsKK30KKworfQorCisjaW5jbHVkZSAibW9jX1FOZXR3b3JrUmVwbHlIYW5kbGVy
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5l
dHdvcmtSZXBseUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42YmMzNWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworI2lmbmRlZiBRTmV0d29ya1JlcGx5SGFuZGxlcl9oCisjZGVmaW5lIFFOZXR3
b3JrUmVwbHlIYW5kbGVyX2gKKworI2luY2x1ZGUgPFFPYmplY3Q+CisKKyNpbmNsdWRlIDxRTmV0
d29ya0FjY2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXBseT4KKyNpbmNsdWRlIDxR
TmV0d29ya1JlcXVlc3Q+CisjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisKKyNpbmNsdWRlICJGb3Jt
RGF0YS5oIgorI2luY2x1ZGUgIlF0TUlNRVR5cGVTbmlmZmVyLmgiCisKK1FUX0JFR0lOX05BTUVT
UEFDRQorY2xhc3MgUUZpbGU7CitjbGFzcyBRTmV0d29ya1JlcGx5OworUVRfRU5EX05BTUVTUEFD
RQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvcm1EYXRhSU9EZXZpY2U7CitjbGFz
cyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgUU5ldHdvcmtSZXBseUhhbmRs
ZXI7CisKK2NsYXNzIFFOZXR3b3JrUmVwbHlIYW5kbGVyQ2FsbFF1ZXVlIDogcHVibGljIFFPYmpl
Y3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUU5ldHdvcmtSZXBseUhhbmRsZXJDYWxs
UXVldWUoUU5ldHdvcmtSZXBseUhhbmRsZXIqLCBib29sIGRlZmVyU2lnbmFscyk7CisgICAgYm9v
bCBkZWZlclNpZ25hbHMoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyU2lnbmFsczsgfQorICAgIHZv
aWQgc2V0RGVmZXJTaWduYWxzKGJvb2wsIGJvb2wgc3luYyA9IGZhbHNlKTsKKworICAgIHR5cGVk
ZWYgdm9pZCAoUU5ldHdvcmtSZXBseUhhbmRsZXI6OipFbnF1ZXVlZENhbGwpKCk7CisgICAgdm9p
ZCBwdXNoKEVucXVldWVkQ2FsbCBtZXRob2QpOworICAgIHZvaWQgY2xlYXIoKSB7IG1fZW5xdWV1
ZWRDYWxscy5jbGVhcigpOyB9CisKKyAgICB2b2lkIGxvY2soKTsKKyAgICB2b2lkIHVubG9jaygp
OworcHJpdmF0ZToKKyAgICBRTmV0d29ya1JlcGx5SGFuZGxlciogbV9yZXBseUhhbmRsZXI7Cisg
ICAgaW50IG1fbG9ja3M7CisgICAgYm9vbCBtX2RlZmVyU2lnbmFsczsKKyAgICBib29sIG1fZmx1
c2hpbmc7CisgICAgUUxpc3Q8RW5xdWV1ZWRDYWxsPiBtX2VucXVldWVkQ2FsbHM7CisKKyAgICBR
X0lOVk9LQUJMRSB2b2lkIGZsdXNoKCk7Cit9OworCitjbGFzcyBRTmV0d29ya1JlcGx5V3JhcHBl
ciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFFOZXR3b3Jr
UmVwbHlXcmFwcGVyKFFOZXR3b3JrUmVwbHlIYW5kbGVyQ2FsbFF1ZXVlKiwgUU5ldHdvcmtSZXBs
eSosIGJvb2wgc25pZmZNSU1FVHlwZXMsIFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIH5RTmV0
d29ya1JlcGx5V3JhcHBlcigpOworCisgICAgUU5ldHdvcmtSZXBseSogcmVwbHkoKSBjb25zdCB7
IHJldHVybiBtX3JlcGx5OyB9CisgICAgUU5ldHdvcmtSZXBseSogcmVsZWFzZSgpOworCisgICAg
dm9pZCBzeW5jaHJvbm91c0xvYWQoKTsKKworICAgIFFVcmwgcmVkaXJlY3Rpb25UYXJnZXRVcmwo
KSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0aW9uVGFyZ2V0VXJsOyB9CisgICAgUVN0cmluZyBl
bmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2Rpbmc7IH0KKyAgICBRU3RyaW5nIGFkdmVy
dGlzZWRNSU1FVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWR2ZXJ0aXNlZE1JTUVUeXBlOyB9Cisg
ICAgUVN0cmluZyBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc25pZmZlZE1JTUVUeXBlLmlz
RW1wdHkoKSA/IG1fYWR2ZXJ0aXNlZE1JTUVUeXBlIDogbV9zbmlmZmVkTUlNRVR5cGU7IH0KKwor
ICAgIGJvb2wgcmVzcG9uc2VDb250YWluc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
Q29udGFpbnNEYXRhOyB9CisgICAgYm9vbCB3YXNSZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9yZWRpcmVjdGlvblRhcmdldFVybC5pc1ZhbGlkKCk7IH0KKworICAgIC8vIFNlZSBzZXRGaW5p
c2hlZCgpLgorICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbHktPnBy
b3BlcnR5KCJfcV9pc0ZpbmlzaGVkIikudG9Cb29sKCk7IH0KKworcHJpdmF0ZSBRX1NMT1RTOgor
ICAgIHZvaWQgcmVjZWl2ZU1ldGFEYXRhKCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRmluaXNoZWQo
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZWFkeVJlYWQoKTsKKyAgICB2b2lkIHJlY2VpdmVTbmlm
ZmVkTUlNRVR5cGUoKTsKKyAgICB2b2lkIHNldEZpbmlzaGVkKCk7CisgICAgdm9pZCByZXBseURl
c3Ryb3llZCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RvcEZvcndhcmRpbmcoKTsKKyAgICB2
b2lkIGVtaXRNZXRhRGF0YUNoYW5nZWQoKTsKKworICAgIFFOZXR3b3JrUmVwbHkqIG1fcmVwbHk7
CisgICAgUVVybCBtX3JlZGlyZWN0aW9uVGFyZ2V0VXJsOworCisgICAgUVN0cmluZyBtX2VuY29k
aW5nOworICAgIFFOZXR3b3JrUmVwbHlIYW5kbGVyQ2FsbFF1ZXVlKiBtX3F1ZXVlOworICAgIGJv
b2wgbV9yZXNwb25zZUNvbnRhaW5zRGF0YTsKKworICAgIFFTdHJpbmcgbV9hZHZlcnRpc2VkTUlN
RVR5cGU7CisKKyAgICBRU3RyaW5nIG1fc25pZmZlZE1JTUVUeXBlOworICAgIE93blB0cjxRdE1J
TUVUeXBlU25pZmZlcj4gbV9zbmlmZmVyOworICAgIGJvb2wgbV9zbmlmZk1JTUVUeXBlczsKK307
CisKK2NsYXNzIFFOZXR3b3JrUmVwbHlIYW5kbGVyIDogcHVibGljIFFPYmplY3QKK3sKKyAgICBR
X09CSkVDVAorcHVibGljOgorICAgIGVudW0gTG9hZFR5cGUgeworICAgICAgICBBc3luY2hyb25v
dXNMb2FkLAorICAgICAgICBTeW5jaHJvbm91c0xvYWQKKyAgICB9OworCisgICAgUU5ldHdvcmtS
ZXBseUhhbmRsZXIoUmVzb3VyY2VIYW5kbGUqLCBMb2FkVHlwZSwgYm9vbCBkZWZlcnJlZCA9IGZh
bHNlKTsKKyAgICB2b2lkIHNldExvYWRpbmdEZWZlcnJlZChib29sIGRlZmVycmVkKSB7IG1fcXVl
dWUuc2V0RGVmZXJTaWduYWxzKGRlZmVycmVkLCBtX2xvYWRUeXBlID09IFN5bmNocm9ub3VzTG9h
ZCk7IH0KKworICAgIFFOZXR3b3JrUmVwbHkqIHJlcGx5KCkgY29uc3QgeyByZXR1cm4gbV9yZXBs
eVdyYXBwZXIgPyBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKSA6IDA7IH0KKworICAgIHZvaWQgYWJv
cnQoKTsKKworICAgIFFOZXR3b3JrUmVwbHkqIHJlbGVhc2UoKTsKKworICAgIHZvaWQgZmluaXNo
KCk7CisgICAgdm9pZCBmb3J3YXJkRGF0YSgpOworICAgIHZvaWQgc2VuZFJlc3BvbnNlSWZOZWVk
ZWQoKTsKKworICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGVycm9yRm9yUmVwbHkoUU5ldHdvcmtS
ZXBseSopOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCB1cGxvYWRQcm9ncmVzcyhxaW50
NjQgYnl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBz
dGFydCgpOworICAgIFN0cmluZyBodHRwTWV0aG9kKCkgY29uc3Q7CisgICAgdm9pZCByZWRpcmVj
dChSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUVVybCYpOworICAgIGJvb2wgd2FzQWJvcnRlZCgp
IGNvbnN0IHsgcmV0dXJuICFtX3Jlc291cmNlSGFuZGxlOyB9CisgICAgUU5ldHdvcmtSZXBseSog
c2VuZE5ldHdvcmtSZXF1ZXN0KFFOZXR3b3JrQWNjZXNzTWFuYWdlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOworICAgIEZvcm1EYXRhSU9EZXZpY2UqIGdldElPRGV2aWNlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY2xlYXJDb250ZW50SGVhZGVycygpOworICAgIHZpcnR1
YWwgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50KikgT1ZFUlJJREU7CisgICAgdm9pZCB0aW1l
b3V0KCk7CisKKyAgICBPd25QdHI8UU5ldHdvcmtSZXBseVdyYXBwZXI+IG1fcmVwbHlXcmFwcGVy
OworICAgIFJlc291cmNlSGFuZGxlKiBtX3Jlc291cmNlSGFuZGxlOworICAgIExvYWRUeXBlIG1f
bG9hZFR5cGU7CisgICAgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpPcGVyYXRpb24gbV9tZXRob2Q7
CisgICAgUU5ldHdvcmtSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBRQmFzaWNUaW1lciBtX3RpbWVv
dXRUaW1lcjsKKworICAgIC8vIGRlZmVyIHN0YXRlIGhvbGRpbmcKKyAgICBpbnQgbV9yZWRpcmVj
dGlvblRyaWVzOworCisgICAgUU5ldHdvcmtSZXBseUhhbmRsZXJDYWxsUXVldWUgbV9xdWV1ZTsK
K307CisKKy8vIFNlbGYgZGVzdHJ1Y3RpbmcgUUlPRGV2aWNlIGZvciBGb3JtRGF0YQorLy8gIEZv
ciBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OnB1dCB3ZSB3aWxsIGhhdmUgdG8gZ3VyYW50ZWUgdGhh
dCB0aGUKKy8vICBRSU9EZXZpY2UgaXMgdmFsaWQgYXMgbG9uZyBmaW5pc2hlZCgpIG9mIHRoZSBR
TmV0d29ya1JlcGx5IGhhcyBub3QKKy8vICBiZWVuIGVtaXR0ZWQuIFdpdGggdGhlIHByZXNlbmNl
IG9mIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpyZWxlYXNlIEkgZG8KKy8vICBub3Qgd2FudCB0byBn
dXJhbnRlZSB0aGlzLgorY2xhc3MgRm9ybURhdGFJT0RldmljZSA6IHB1YmxpYyBRSU9EZXZpY2Ug
eworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgRm9ybURhdGFJT0RldmljZShGb3JtRGF0YSop
OworICAgIH5Gb3JtRGF0YUlPRGV2aWNlKCk7CisKKyAgICBib29sIGlzU2VxdWVudGlhbCgpIGNv
bnN0OworICAgIHFpbnQ2NCBnZXRGb3JtRGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVT
aXplICsgbV9kYXRhU2l6ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgcWludDY0IHJlYWREYXRhKGNo
YXIqLCBxaW50NjQpOworICAgIHFpbnQ2NCB3cml0ZURhdGEoY29uc3QgY2hhciosIHFpbnQ2NCk7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcmVwYXJlRm9ybUVsZW1lbnRzKEZvcm1EYXRhKik7Cisg
ICAgdm9pZCBtb3ZlVG9OZXh0RWxlbWVudCgpOworICAgIHFpbnQ2NCBjb21wdXRlU2l6ZSgpOwor
ICAgIHZvaWQgb3BlbkZpbGVGb3JDdXJyZW50RWxlbWVudCgpOworICAgIHZvaWQgcHJlcGFyZUN1
cnJlbnRFbGVtZW50KCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4g
bV9mb3JtRWxlbWVudHM7CisgICAgUUZpbGUqIG1fY3VycmVudEZpbGU7CisgICAgcWludDY0IG1f
Y3VycmVudERlbHRhOworICAgIHFpbnQ2NCBtX2ZpbGVTaXplOworICAgIHFpbnQ2NCBtX2RhdGFT
aXplOworfTsKKworfQorCisjZW5kaWYgLy8gUU5ldHdvcmtSZXBseUhhbmRsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RdE1JTUVUeXBlU25pZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1F0TUlNRVR5cGVTbmlm
ZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGFiNzI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RdE1JTUVU
eXBlU25pZmZlci5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0TUlNRVR5cGVTbmlmZmVyLmgiCisKKyNpbmNs
dWRlICJNSU1FU25pZmZpbmcuaCIKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFOZXR3b3JrUmVwbHk+CisKK1F0TUlNRVR5cGVTbmlmZmVyOjpRdE1JTUVUeXBlU25pZmZl
cihRTmV0d29ya1JlcGx5KiByZXBseSwgY29uc3QgUVN0cmluZyYgYWR2ZXJ0aXNlZE1pbWVUeXBl
LCBib29sIGlzU3VwcG9ydGVkSW1hZ2VUeXBlKQorICAgIDogUU9iamVjdCgwKQorICAgICwgbV9y
ZXBseShyZXBseSkKKyAgICAsIG1fbWltZVR5cGUoYWR2ZXJ0aXNlZE1pbWVUeXBlKQorICAgICwg
bV9zbmlmZmVyKGFkdmVydGlzZWRNaW1lVHlwZS50b0xhdGluMSgpLmNvbnN0RGF0YSgpLCBpc1N1
cHBvcnRlZEltYWdlVHlwZSkKKyAgICAsIG1faXNGaW5pc2hlZChmYWxzZSkKK3sKKyAgICBtX2lz
RmluaXNoZWQgPSAhbV9zbmlmZmVyLmlzVmFsaWQoKSB8fCBzbmlmZigpOworICAgIGlmIChtX2lz
RmluaXNoZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbm5lY3QobV9yZXBseSwgU0lHTkFM
KHJlYWR5UmVhZCgpKSwgdGhpcywgU0xPVCh0cnlTbmlmZmluZygpKSk7CisgICAgY29ubmVjdCht
X3JlcGx5LCBTSUdOQUwoZmluaXNoZWQoKSksIHRoaXMsIFNMT1QodHJ5U25pZmZpbmcoKSkpOwor
fQorCitib29sIFF0TUlNRVR5cGVTbmlmZmVyOjpzbmlmZigpCit7CisgICAgLy8gU2VlIFFOZXR3
b3JrUmVwbHlXcmFwcGVyOjpzZXRGaW5pc2hlZCgpLgorICAgIGNvbnN0IGJvb2wgaXNSZXBseUZp
bmlzaGVkID0gbV9yZXBseS0+cHJvcGVydHkoIl9xX2lzRmluaXNoZWQiKS50b0Jvb2woKTsKKwor
ICAgIGlmICghaXNSZXBseUZpbmlzaGVkICYmIG1fcmVwbHktPmJ5dGVzQXZhaWxhYmxlKCkgPCBt
X3NuaWZmZXIuZGF0YVNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUUJ5dGVB
cnJheSBkYXRhID0gbV9yZXBseS0+cGVlayhtX3NuaWZmZXIuZGF0YVNpemUoKSk7CisgICAgY29u
c3QgY2hhciogc25pZmZlZE1pbWVUeXBlID0gbV9zbmlmZmVyLnNuaWZmKGRhdGEuY29uc3REYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICBpZiAoc25pZmZlZE1pbWVUeXBlKQorICAgICAgICBtX21p
bWVUeXBlID0gUVN0cmluZzo6ZnJvbUxhdGluMShzbmlmZmVkTWltZVR5cGUpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFF0TUlNRVR5cGVTbmlmZmVyOjp0cnlTbmlmZmluZygpCit7Cisg
ICAgaWYgKCFzbmlmZigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlcGx5LT5kaXNjb25u
ZWN0KHRoaXMpOworICAgIFFDb3JlQXBwbGljYXRpb246OnJlbW92ZVBvc3RlZEV2ZW50cyh0aGlz
LCBRRXZlbnQ6Ok1ldGFDYWxsKTsKKyAgICBtX2lzRmluaXNoZWQgPSB0cnVlOworICAgIGVtaXQg
ZmluaXNoZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvUXRNSU1FVHlwZVNuaWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvUXRNSU1FVHlwZVNuaWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lNjNlOTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RdE1JTUVUeXBlU25pZmZlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgUXRNSU1FVHlwZVNuaWZmZXJfaAorI2RlZmluZSBRdE1JTUVU
eXBlU25pZmZlcl9oCisKKyNpbmNsdWRlICJNSU1FU25pZmZpbmcuaCIKKyNpbmNsdWRlIDxRT2Jq
ZWN0PgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFOZXR3b3JrUmVwbHk7CitRVF9FTkRf
TkFNRVNQQUNFCisKK2NsYXNzIFF0TUlNRVR5cGVTbmlmZmVyIDogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUXRNSU1FVHlwZVNuaWZmZXIoUU5ldHdvcmtSZXBs
eSosIGNvbnN0IFFTdHJpbmcmIGFkdmVydGlzZWRNaW1lVHlwZSwgYm9vbCBpc1N1cHBvcnRlZElt
YWdlVHlwZSk7CisgICAgUVN0cmluZyBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5
cGU7IH0KKyAgICBib29sIGlzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRmluaXNoZWQ7
IH0KKworUV9TSUdOQUxTOgorICAgIHZvaWQgZmluaXNoZWQoKTsKKworcHJpdmF0ZSBRX1NMT1RT
OgorICAgIHZvaWQgdHJ5U25pZmZpbmcoKTsKKworcHJpdmF0ZToKKyAgICBib29sIHNuaWZmKCk7
CisKKyAgICBRTmV0d29ya1JlcGx5KiBtX3JlcGx5OworICAgIFFTdHJpbmcgbV9taW1lVHlwZTsK
KyAgICBNSU1FU25pZmZlciBtX3NuaWZmZXI7CisgICAgYm9vbCBtX2lzRmluaXNoZWQ7Cit9Owor
CisjZW5kaWYgLy8gUXRNSU1FVHlwZVNuaWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlRXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jYThkMzZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUVycm9yLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKKyNkZWZpbmUgUmVzb3Vy
Y2VFcnJvcl9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJh
c2UKK3sKK3B1YmxpYzoKKyAgICBSZXNvdXJjZUVycm9yKCkKKyAgICB7CisgICAgfQorCisgICAg
UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQor
ICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJM
LCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYg
Ly8gUmVzb3VyY2VFcnJvcl9oXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOTU1Yjg0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKQEAgLTAsMCArMSwxNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorCisjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJRTmV0d29ya1JlcGx5SGFuZGxlci5oIgorI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCisjaW5jbHVkZSA8UUFic3RyYWN0
TmV0d29ya0NhY2hlPgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UU5l
dHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8
UU5ldHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPFFVcmw+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyIDogcHVibGljIFJlc291cmNlSGFuZGxl
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCisgICAgICAgIDogbV9lcnJvcihlcnJvcikKKyAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3Bv
bnNlKQorICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgeyBtX3Jl
c3BvbnNlID0gcmVzcG9uc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQpIHsgbV9kYXRh
LmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pIHt9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgeyBtX2Vycm9yID0gZXJyb3I7IH0KK3ByaXZhdGU6CisgICAgUmVzb3VyY2VFcnJvciYgbV9l
cnJvcjsKKyAgICBSZXNvdXJjZVJlc3BvbnNlJiBtX3Jlc3BvbnNlOworICAgIFZlY3RvcjxjaGFy
PiYgbV9kYXRhOworfTsKKwordm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJlY3RSZXNwb25zZSovKQoreworICAgIC8v
IEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29y
cmVjdGx5IGV2ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4KKyAgICBpZiAoIXByb3RvY29s
SG9zdEFuZFBvcnRBcmVFcXVhbChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0
LnVybCgpKSkgeworICAgICAgICBBU1NFUlQobV9lcnJvci5pc051bGwoKSk7CisgICAgICAgIG1f
ZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQoreworfQorCitSZXNvdXJjZUhhbmRs
ZTo6flJlc291cmNlSGFuZGxlKCkKK3sKKyAgICBpZiAoZC0+bV9qb2IpCisgICAgICAgIGNhbmNl
bCgpOworfQorCitib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCit7CisgICAgLy8gSWYgTmV0
d29ya2luZ0NvbnRleHQgaXMgaW52YWxpZCB0aGVuIHdlIGFyZSBubyBsb25nZXIgYXR0YWNoZWQg
dG8gYSBQYWdlLAorICAgIC8vIHRoaXMgbXVzdCBiZSBhbiBhdHRlbXB0ZWQgbG9hZCBmcm9tIGFu
IHVubG9hZCBldmVudCBoYW5kbGVyLCBzbyBsZXQncyBqdXN0IGJsb2NrIGl0LgorICAgIGlmIChk
LT5tX2NvbnRleHQgJiYgIWQtPm1fY29udGV4dC0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gSWYgY3JlZGVudGlhbHMgd2VyZSBzcGVjaWZpZWQgZm9yIHRo
aXMgcmVxdWVzdCwgYWRkIHRoZW0gdG8gdGhlIHVybCwKKyAgICAgICAgLy8gc28gdGhhdCB0aGV5
IHdpbGwgYmUgcGFzc2VkIHRvIFFOZXR3b3JrUmVxdWVzdC4KKyAgICAgICAgVVJMIHVybFdpdGhD
cmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIHVybFdpdGhDcmVkZW50
aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7CisgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQ
YXNzKGQtPm1fcGFzcyk7CisgICAgICAgIGQtPm1fZmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRo
Q3JlZGVudGlhbHMpOworICAgIH0KKworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwgKmQgPSBn
ZXRJbnRlcm5hbCgpOworICAgIGQtPm1fam9iID0gbmV3IFFOZXR3b3JrUmVwbHlIYW5kbGVyKHRo
aXMsIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpBc3luY2hyb25vdXNMb2FkLCBkLT5tX2RlZmVyc0xv
YWRpbmcpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5j
ZWwoKQoreworICAgIGlmIChkLT5tX2pvYikgeworICAgICAgICBkLT5tX2pvYi0+YWJvcnQoKTsK
KyAgICAgICAgZC0+bV9qb2IgPSAwOworICAgIH0KK30KKworYm9vbCBSZXNvdXJjZUhhbmRsZTo6
bG9hZHNCbG9ja2VkKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVzb3VyY2VI
YW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50
aWFscyAvKnN0b3JlZENyZWRlbnRpYWxzKi8sIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQoreworICAgIFdlYkNvcmVT
eW5jaHJvbm91c0xvYWRlciBzeW5jTG9hZGVyKGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5k
bGUoY29udGV4dCwgcmVxdWVzdCwgJnN5bmNMb2FkZXIsIHRydWUsIGZhbHNlKSk7CisKKyAgICBS
ZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIGlm
ICghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgeworICAgICAg
ICAvLyBJZiBjcmVkZW50aWFscyB3ZXJlIHNwZWNpZmllZCBmb3IgdGhpcyByZXF1ZXN0LCBhZGQg
dGhlbSB0byB0aGUgdXJsLAorICAgICAgICAvLyBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwYXNzZWQg
dG8gUU5ldHdvcmtSZXF1ZXN0LgorICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGQtPm1f
Zmlyc3RSZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIo
ZC0+bV91c2VyKTsKKyAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNz
KTsKKyAgICAgICAgZC0+bV9maXJzdFJlcXVlc3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7
CisgICAgfQorCisgICAgLy8gc3RhcnRpbmcgaW4gZGVmZXJyZWQgbW9kZSBnaXZlcyBkLT5tX2pv
YiB0aGUgY2hhbmNlIG9mIGJlaW5nIHNldCBiZWZvcmUgc2VuZGluZyB0aGUgcmVxdWVzdC4KKyAg
ICBkLT5tX2pvYiA9IG5ldyBRTmV0d29ya1JlcGx5SGFuZGxlcihoYW5kbGUuZ2V0KCksIFFOZXR3
b3JrUmVwbHlIYW5kbGVyOjpTeW5jaHJvbm91c0xvYWQsIHRydWUpOworICAgIGQtPm1fam9iLT5z
ZXRMb2FkaW5nRGVmZXJyZWQoZmFsc2UpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0
Zm9ybVNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCit7CisgICAgaWYgKCFkLT5tX2pvYikK
KyAgICAgICAgcmV0dXJuOworICAgIGQtPm1fam9iLT5zZXRMb2FkaW5nRGVmZXJyZWQoZGVmZXJz
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZWI3Yjc2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTAsMCArMSw4MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vpbmln
IDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3Rf
aAorI2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oIgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFOZXR3b3JrUmVxdWVzdDsKK1FU
X0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTmV0d29ya2luZ0Nv
bnRleHQ7CisKKyAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVzb3VyY2VSZXF1
ZXN0QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiB1cmwpIAorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkgCisgICAgICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQorICAgICAgICB7CisgICAgICAgICAgICBzZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOworICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
KCkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB1cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBk
ZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkgeyAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0
OyB9CisKKyAgICAgICAgUU5ldHdvcmtSZXF1ZXN0IHRvTmV0d29ya1JlcXVlc3QoTmV0d29ya2lu
Z0NvbnRleHQqID0gMCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKKworICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0K
KyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICAgICAgdm9p
ZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KKworICAgICAgICBQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBk
YXRhOyB9CisgICAgICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CisgICAgfTsKKworICAgIHN0cnVjdCBDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhQmFzZSB7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUmVzb3VyY2VSZXF1ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3RRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDYyMjkwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwCkBAIC0wLDAgKzEsMTUx
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNs
dWRlICJUaGlyZFBhcnR5Q29va2llc1F0LmgiCisKKyNpZiBFTkFCTEUoQkxPQikKKyNpbmNsdWRl
ICJCbG9iRGF0YS5oIgorI2luY2x1ZGUgIkJsb2JSZWdpc3RyeUltcGwuaCIKKyNpbmNsdWRlICJC
bG9iU3RvcmFnZURhdGEuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8cWdsb2JhbC5oPgorCisjaW5j
bHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPFFVcmw+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gVGhlIGxpbWl0IGNhbiBiZSBmb3VuZCBpbiBxaHR0cG5ldHdvcmtjb25uZWN0
aW9uLmNwcC4KKy8vIFRvIGFjaGlldmUgdGhlIGJlc3QgcmVzdWx0IHdlIHdhbnQgV2ViS2l0IHRv
IHNjaGVkdWxlIHRoZSBqb2JzIHNvIHdlCisvLyBhcmUgdXNpbmcgdGhlIGxpbWl0IGFzIGZvdW5k
IGluIFF0LiBUbyBhbGxvdyBRdCB0byBmaWxsIGl0cyBxdWV1ZQorLy8gYW5kIHByZXBhcmUgam9i
cyB3ZSB3aWxsIHNjaGVkdWxlIHR3byBtb3JlIGRvd25sb2Fkcy4KKy8vIFBlciBUQ1AgY29ubmVj
dGlvbiB0aGVyZSBpcyAxIGN1cnJlbnQgcHJvY2Vzc2VkLCAzIHBvc3NpYmx5IHBpcGVsaW5lZAor
Ly8gYW5kIDIgcmVhZHkgdG8gcmUtZmlsbCB0aGUgcGlwZWxpbmUuCit1bnNpZ25lZCBpbml0aWFs
aXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKK3sKKyAgICByZXR1cm4gNiAq
ICgxICsgMyArIDIpOworfQorCisjaWYgRU5BQkxFKEJMT0IpCitzdGF0aWMgdm9pZCBhcHBlbmRC
bG9iUmVzb2x2ZWQoUUJ5dGVBcnJheSYgZGF0YSwgY29uc3QgUVVybCYgdXJsLCBRU3RyaW5nKiBj
b250ZW50VHlwZSA9IDApCit7CisgICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gYmxvYkRhdGEg
PSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JE
YXRhRnJvbVVSTCh1cmwpOworICAgIGlmICghYmxvYkRhdGEpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChjb250ZW50VHlwZSkKKyAgICAgICAgKmNvbnRlbnRUeXBlID0gYmxvYkRhdGEtPmNv
bnRlbnRUeXBlKCk7CisKKyAgICBCbG9iRGF0YUl0ZW1MaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGJsb2JEYXRhLT5pdGVtcygpLmJlZ2luKCk7CisgICAgY29uc3QgQmxvYkRhdGFJdGVtTGlzdDo6
Y29uc3RfaXRlcmF0b3IgaXRlbmQgPSBibG9iRGF0YS0+aXRlbXMoKS5lbmQoKTsKKyAgICBmb3Ig
KDsgaXQgIT0gaXRlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgQmxvYkRhdGFJdGVtJiBibG9i
SXRlbSA9ICppdDsKKyAgICAgICAgaWYgKGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpE
YXRhKQorICAgICAgICAgICAgZGF0YS5hcHBlbmQoYmxvYkl0ZW0uZGF0YS0+ZGF0YSgpICsgc3Rh
dGljX2Nhc3Q8aW50PihibG9iSXRlbS5vZmZzZXQpLCBzdGF0aWNfY2FzdDxpbnQ+KGJsb2JJdGVt
Lmxlbmd0aCkpOworICAgICAgICBlbHNlIGlmIChibG9iSXRlbS50eXBlID09IEJsb2JEYXRhSXRl
bTo6QmxvYikKKyAgICAgICAgICAgIGFwcGVuZEJsb2JSZXNvbHZlZChkYXRhLCBibG9iSXRlbS51
cmwpOworICAgICAgICBlbHNlIGlmIChibG9iSXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6Rmls
ZSkgeworICAgICAgICAgICAgLy8gRmlsZSB0eXBlcyBhcmUgbm90IGFsbG93ZWQgaGVyZSwgc28g
anVzdCBpZ25vcmUgaXQuCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCByZXNvbHZlQmxvYlVybChjb25zdCBR
VXJsJiB1cmwsIFFVcmwmIHJlc29sdmVkVXJsKQoreworICAgIFJlZlB0cjxCbG9iU3RvcmFnZURh
dGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3Ry
eSgpKS5nZXRCbG9iRGF0YUZyb21VUkwodXJsKTsKKyAgICBpZiAoIWJsb2JEYXRhKQorICAgICAg
ICByZXR1cm47CisKKyAgICBRQnl0ZUFycmF5IGRhdGE7CisgICAgUVN0cmluZyBjb250ZW50VHlw
ZTsKKyAgICBhcHBlbmRCbG9iUmVzb2x2ZWQoZGF0YSwgdXJsLCAmY29udGVudFR5cGUpOworCisg
ICAgUVN0cmluZyBkYXRhVXJpKFFTdHJpbmdMaXRlcmFsKCJkYXRhOiIpKTsKKyAgICBkYXRhVXJp
LmFwcGVuZChjb250ZW50VHlwZSk7CisgICAgZGF0YVVyaS5hcHBlbmQoUVN0cmluZ0xpdGVyYWwo
IjtiYXNlNjQsIikpOworICAgIGRhdGFVcmkuYXBwZW5kKFFTdHJpbmc6OmZyb21MYXRpbjEoZGF0
YS50b0Jhc2U2NCgpKSk7CisgICAgcmVzb2x2ZWRVcmwgPSBRVXJsKGRhdGFVcmkpOworfQorI2Vu
ZGlmCisKK1FOZXR3b3JrUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVlc3Qo
TmV0d29ya2luZ0NvbnRleHQgKmNvbnRleHQpIGNvbnN0Cit7CisgICAgUU5ldHdvcmtSZXF1ZXN0
IHJlcXVlc3Q7CisgICAgUVVybCBuZXd1cmwgPSB1cmwoKTsKKworI2lmIEVOQUJMRShCTE9CKQor
ICAgIGlmIChuZXd1cmwuc2NoZW1lKCkgPT0gUUxhdGluMVN0cmluZygiYmxvYiIpKQorICAgICAg
ICByZXNvbHZlQmxvYlVybCh1cmwoKSwgbmV3dXJsKTsKKyNlbmRpZgorCisgICAgcmVxdWVzdC5z
ZXRVcmwobmV3dXJsKTsKKyAgICByZXF1ZXN0LnNldE9yaWdpbmF0aW5nT2JqZWN0KGNvbnRleHQg
PyBjb250ZXh0LT5vcmlnaW5hdGluZ09iamVjdCgpIDogMCk7CisKKyAgICBjb25zdCBIVFRQSGVh
ZGVyTWFwICZoZWFkZXJzID0gaHR0cEhlYWRlckZpZWxkcygpOworICAgIGZvciAoSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCksIGVuZCA9IGhlYWRlcnMu
ZW5kKCk7CisgICAgICAgICBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUUJ5dGVBcnJheSBu
YW1lID0gUVN0cmluZyhpdC0+a2V5KS50b0xhdGluMSgpOworICAgICAgICBRQnl0ZUFycmF5IHZh
bHVlID0gUVN0cmluZyhpdC0+dmFsdWUpLnRvTGF0aW4xKCk7CisgICAgICAgIC8vIFFOZXR3b3Jr
UmVxdWVzdDo6c2V0UmF3SGVhZGVyKCkgd291bGQgcmVtb3ZlIHRoZSBoZWFkZXIgaWYgdGhlIHZh
bHVlIGlzIG51bGwKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRvIHNldCBhbiBlbXB0eSBoZWFkZXIg
aW5zdGVhZCBvZiBudWxsIGhlYWRlci4KKyAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAg
ICAgICAgICAgIHJlcXVlc3Quc2V0UmF3SGVhZGVyKG5hbWUsIHZhbHVlKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVxdWVzdC5zZXRSYXdIZWFkZXIobmFtZSwgIiIpOworICAgIH0KKwor
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBhbHdheXMgaGF2ZSBhbiBBY2NlcHQgaGVhZGVyOyBzb21lIHNp
dGVzIHJlcXVpcmUgdGhpcyB0bworICAgIC8vIHNlcnZlIHN1YnJlc291cmNlcworICAgIGlmICgh
cmVxdWVzdC5oYXNSYXdIZWFkZXIoIkFjY2VwdCIpKQorICAgICAgICByZXF1ZXN0LnNldFJhd0hl
YWRlcigiQWNjZXB0IiwgIiovKiIpOworCisgICAgc3dpdGNoIChjYWNoZVBvbGljeSgpKSB7Cisg
ICAgY2FzZSBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YToKKyAgICAgICAgcmVxdWVzdC5zZXRBdHRy
aWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sQXR0cmlidXRlLCBRTmV0d29y
a1JlcXVlc3Q6OkFsd2F5c05ldHdvcmspOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJldHVy
bkNhY2hlRGF0YUVsc2VMb2FkOgorICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29y
a1JlcXVlc3Q6OkNhY2hlTG9hZENvbnRyb2xBdHRyaWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6UHJl
ZmVyQ2FjaGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJldHVybkNhY2hlRGF0YURvbnRM
b2FkOgorICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNhY2hl
TG9hZENvbnRyb2xBdHRyaWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6QWx3YXlzQ2FjaGUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k6CisgICAgICAgIC8v
IFFOZXR3b3JrUmVxdWVzdDo6UHJlZmVyTmV0d29yaworICAgIGRlZmF1bHQ6CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGlmICghYWxsb3dDb29raWVzKCkgfHwgIXRoaXJkUGFydHlDb29r
aWVQb2xpY3lQZXJtaXRzKGNvbnRleHQsIHVybCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcygpKSkg
eworICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNvb2tpZVNh
dmVDb250cm9sQXR0cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6Ok1hbnVhbCk7CisgICAgICAgIHJl
cXVlc3Quc2V0QXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6Q29va2llTG9hZENvbnRyb2xBdHRy
aWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6TWFudWFsKTsKKyAgICB9CisKKyAgICBpZiAoIWFsbG93
Q29va2llcygpKQorICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6
OkF1dGhlbnRpY2F0aW9uUmV1c2VBdHRyaWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6TWFudWFsKTsK
KworICAgIHJldHVybiByZXF1ZXN0OworfQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2RlZmYyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb3VyY2VSZXNwb25zZV9oCisj
ZGVmaW5lIFJlc291cmNlUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJh
c2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDog
cHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKK3B1YmxpYzoKKyAgICBSZXNvdXJjZVJlc3Bv
bnNlKCkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAg
ICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgs
IHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIHBs
YXRmb3JtUmVzcG9uc2VJc1VwVG9EYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CisKKyAgICBQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0
YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIGRhdGE7IH0KKyAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KK307CisKK3N0cnVjdCBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXNw
b25zZURhdGFCYXNlIHsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFJlc291cmNlUmVzcG9uc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9Tb2NrZXRTdHJlYW1FcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9Tb2NrZXRTdHJlYW1FcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQ4M2NjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUVycm9yLmgKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTZW9ranUgS3dvbiAoc2Vva2p1Lmt3b25AZ21haWwuY29t
KQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU29ja2V0U3RyZWFtRXJyb3JfaAorI2RlZmluZSBTb2NrZXRTdHJlYW1FcnJvcl9oCisK
KyNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3IgOiBwdWJsaWMgU29ja2V0U3RyZWFtRXJy
b3JCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNvY2tldFN0cmVhbUVycm9yKCkgeyB9Cisg
ICAgICAgIGV4cGxpY2l0IFNvY2tldFN0cmVhbUVycm9yKGludCBlcnJvckNvZGUpCisgICAgICAg
ICAgICA6IFNvY2tldFN0cmVhbUVycm9yQmFzZShlcnJvckNvZGUpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICBTb2NrZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBRU3Ry
aW5nJiBkZXNjcmlwdGlvbikKKyAgICAgICAgICAgIDogU29ja2V0U3RyZWFtRXJyb3JCYXNlKGVy
cm9yQ29kZSwgU3RyaW5nKCksIGRlc2NyaXB0aW9uKQorICAgICAgICB7CisgICAgICAgIH0KKyAg
ICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFNvY2tldFN0cmVh
bUVycm9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
U29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1NvY2tldFN0cmVhbUhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg3MDA4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvY2tldFN0
cmVhbUhhbmRsZV9oCisjZGVmaW5lIFNvY2tldFN0cmVhbUhhbmRsZV9oCisKKyNpbmNsdWRlICJT
b2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKKyNpZiAhUExBVEZPUk0oUVQpCisjZXJyb3Ig
VGhpcyBzaG91bGQgb25seSBiZSBidWlsdCBvbiBRdAorI2VuZGlmCisKK1FUX0JFR0lOX05BTUVT
UEFDRQorY2xhc3MgUVRjcFNvY2tldDsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgY2xhc3Mg
Q3JlZGVudGlhbDsKKyAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7CisgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTsKKworICAgIGNsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVh
bUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tl
dFN0cmVhbUhhbmRsZT4gY3JlYXRlKFFUY3BTb2NrZXQqIHNvY2tldCwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5k
bGUoc29ja2V0LCBjbGllbnQpKTsgfQorCisgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhh
bmRsZSgpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIGludCBwbGF0Zm9ybVNl
bmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tl
dFN0cmVhbUhhbmRsZShRVGNwU29ja2V0KiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisK
KyAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJv
eHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAg
ICAgIHZvaWQgcmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiwgY29uc3QgQ3JlZGVudGlhbCYpOworICAgICAgICB2b2lkIHJlY2VpdmVkUmVxdWVzdFRvQ29u
dGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwor
ICAgICAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUqIG1fcDsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU7CisgICAgfTsKKworfSAg
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJl
YW1IYW5kbGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Nv
Y2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jMTU2MGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlX2gKKyNkZWZpbmUgU29ja2V0U3RyZWFtSGFu
ZGxlUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgiCisKKyNp
bmNsdWRlIDxRU3NsU29ja2V0PgorI2luY2x1ZGUgPFFUY3BTb2NrZXQ+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CitjbGFzcyBDcmVkZW50
aWFsOworY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OworY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlUHJpdmF0ZTsKKworY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZSA6IHB1Ymxp
YyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFNvY2tldFN0cmVhbUhhbmRs
ZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgVVJMJik7CisgICAgU29ja2V0U3Ry
ZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBRVGNwU29ja2V0Kik7CisgICAg
flNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9p
ZCBzb2NrZXRDb25uZWN0ZWQoKTsKKyAgICB2b2lkIHNvY2tldFJlYWR5UmVhZCgpOworICAgIGlu
dCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pOworICAgIHZvaWQgY2xvc2UoKTsKKyAg
ICB2b2lkIHNvY2tldFNlbnREYXRhKCk7CisgICAgdm9pZCBzb2NrZXRDbG9zZWQoKTsKKyAgICB2
b2lkIHNvY2tldEVycm9yKFFBYnN0cmFjdFNvY2tldDo6U29ja2V0RXJyb3IpOworICAgIHZvaWQg
c29ja2V0Q2xvc2VkQ2FsbGJhY2soKTsKKyAgICB2b2lkIHNvY2tldEVycm9yQ2FsbGJhY2soaW50
KTsKKyNpZm5kZWYgUVRfTk9fT1BFTlNTTAorICAgIHZvaWQgc29ja2V0U3NsRXJyb3JzKGNvbnN0
IFFMaXN0PFFTc2xFcnJvcj4mKTsKKyNlbmRpZgorcHVibGljOgorICAgIHZvaWQgaW5pdENvbm5l
Y3Rpb25zKCk7CisgICAgUVRjcFNvY2tldCogbV9zb2NrZXQ7CisgICAgU29ja2V0U3RyZWFtSGFu
ZGxlKiBtX3N0cmVhbUhhbmRsZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MThhZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVh
bUhhbmRsZVF0LmNwcApAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBOb2tpYSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgorCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU29ja2V0
U3RyZWFtRXJyb3IuaCIKKyNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKKyNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0
ZShTb2NrZXRTdHJlYW1IYW5kbGUqIHN0cmVhbUhhbmRsZSwgY29uc3QgVVJMJiB1cmwpCit7Cisg
ICAgbV9zdHJlYW1IYW5kbGUgPSBzdHJlYW1IYW5kbGU7CisgICAgbV9zb2NrZXQgPSAwOworICAg
IGJvb2wgaXNTZWN1cmUgPSB1cmwucHJvdG9jb2xJcygid3NzIik7CisKKyAgICBpZiAoaXNTZWN1
cmUpIHsKKyNpZm5kZWYgUVRfTk9fT1BFTlNTTAorICAgICAgICBtX3NvY2tldCA9IG5ldyBRU3Ns
U29ja2V0KHRoaXMpOworI2VuZGlmCisgICAgfSBlbHNlCisgICAgICAgIG1fc29ja2V0ID0gbmV3
IFFUY3BTb2NrZXQodGhpcyk7CisKKyAgICBpZiAoIW1fc29ja2V0KQorICAgICAgICByZXR1cm47
CisKKyAgICBpbml0Q29ubmVjdGlvbnMoKTsKKworICAgIHVuc2lnbmVkIGludCBwb3J0ID0gdXJs
Lmhhc1BvcnQoKSA/IHVybC5wb3J0KCkgOiAoaXNTZWN1cmUgPyA0NDMgOiA4MCk7CisKKyAgICBR
U3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpOworICAgIGlmIChpc1NlY3VyZSkgeworI2lmbmRlZiBR
VF9OT19PUEVOU1NMCisgICAgICAgIHN0YXRpY19jYXN0PFFTc2xTb2NrZXQqPihtX3NvY2tldCkt
PmNvbm5lY3RUb0hvc3RFbmNyeXB0ZWQoaG9zdCwgcG9ydCk7CisjZW5kaWYKKyAgICB9IGVsc2UK
KyAgICAgICAgbV9zb2NrZXQtPmNvbm5lY3RUb0hvc3QoaG9zdCwgcG9ydCk7Cit9CisKK1NvY2tl
dFN0cmVhbUhhbmRsZVByaXZhdGU6OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3Ry
ZWFtSGFuZGxlKiBzdHJlYW1IYW5kbGUsIFFUY3BTb2NrZXQqIHNvY2tldCkKK3sKKyAgICBtX3N0
cmVhbUhhbmRsZSA9IHN0cmVhbUhhbmRsZTsKKyAgICBtX3NvY2tldCA9IHNvY2tldDsKKyAgICBp
bml0Q29ubmVjdGlvbnMoKTsKK30KKworU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6flNvY2tl
dFN0cmVhbUhhbmRsZVByaXZhdGUoKQoreworICAgIFFfQVNTRVJUKCEobV9zb2NrZXQgJiYgbV9z
b2NrZXQtPnN0YXRlKCkgPT0gUUFic3RyYWN0U29ja2V0OjpDb25uZWN0ZWRTdGF0ZSkpOworfQor
Cit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OmluaXRDb25uZWN0aW9ucygpCit7Cisg
ICAgY29ubmVjdChtX3NvY2tldCwgU0lHTkFMKGNvbm5lY3RlZCgpKSwgdGhpcywgU0xPVChzb2Nr
ZXRDb25uZWN0ZWQoKSkpOworICAgIGNvbm5lY3QobV9zb2NrZXQsIFNJR05BTChyZWFkeVJlYWQo
KSksIHRoaXMsIFNMT1Qoc29ja2V0UmVhZHlSZWFkKCkpKTsKKyAgICBjb25uZWN0KG1fc29ja2V0
LCBTSUdOQUwoZGlzY29ubmVjdGVkKCkpLCB0aGlzLCBTTE9UKHNvY2tldENsb3NlZCgpKSk7Cisg
ICAgY29ubmVjdChtX3NvY2tldCwgU0lHTkFMKGVycm9yKFFBYnN0cmFjdFNvY2tldDo6U29ja2V0
RXJyb3IpKSwgdGhpcywgU0xPVChzb2NrZXRFcnJvcihRQWJzdHJhY3RTb2NrZXQ6OlNvY2tldEVy
cm9yKSkpOworI2lmbmRlZiBRVF9OT19PUEVOU1NMCisgICAgaWYgKHFvYmplY3RfY2FzdDxRU3Ns
U29ja2V0Kj4obV9zb2NrZXQpKQorICAgICAgICBjb25uZWN0KG1fc29ja2V0LCBTSUdOQUwoc3Ns
RXJyb3JzKGNvbnN0IFFMaXN0PFFTc2xFcnJvcj4mKSksIHRoaXMsIFNMT1Qoc29ja2V0U3NsRXJy
b3JzKGNvbnN0IFFMaXN0PFFTc2xFcnJvcj4mKSkpOworI2VuZGlmCisKKyAgICAvLyBDaGVjayBm
b3IgbWlzc2VkIHNpZ25hbHMgYW5kIGNhbGwgdGhlIHNsb3RzIGFzeW5jaHJvbm91c2x5IHRvIGFs
bG93IGEgY2xpZW50IHRvIGJlIHNldCBmaXJzdC4KKyAgICBpZiAobV9zb2NrZXQtPnN0YXRlKCkg
Pj0gUUFic3RyYWN0U29ja2V0OjpDb25uZWN0ZWRTdGF0ZSkKKyAgICAgICAgUU1ldGFPYmplY3Q6
Omludm9rZU1ldGhvZCh0aGlzLCAic29ja2V0Q29ubmVjdGVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rp
b24pOworICAgIGlmIChtX3NvY2tldC0+Ynl0ZXNBdmFpbGFibGUoKSkKKyAgICAgICAgUU1ldGFP
YmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAic29ja2V0UmVhZHlSZWFkIiwgUXQ6OlF1ZXVlZENv
bm5lY3Rpb24pOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OnNvY2tldENv
bm5lY3RlZCgpCit7CisgICAgaWYgKG1fc3RyZWFtSGFuZGxlICYmIG1fc3RyZWFtSGFuZGxlLT5j
bGllbnQoKSkgeworICAgICAgICBtX3N0cmVhbUhhbmRsZS0+bV9zdGF0ZSA9IFNvY2tldFN0cmVh
bUhhbmRsZUJhc2U6Ok9wZW47CisgICAgICAgIG1fc3RyZWFtSGFuZGxlLT5jbGllbnQoKS0+ZGlk
T3BlblNvY2tldFN0cmVhbShtX3N0cmVhbUhhbmRsZSk7CisgICAgfQorfQorCit2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZVByaXZhdGU6OnNvY2tldFJlYWR5UmVhZCgpCit7CisgICAgaWYgKG1fc3Ry
ZWFtSGFuZGxlICYmIG1fc3RyZWFtSGFuZGxlLT5jbGllbnQoKSkgeworICAgICAgICBRQnl0ZUFy
cmF5IGRhdGEgPSBtX3NvY2tldC0+cmVhZChtX3NvY2tldC0+Ynl0ZXNBdmFpbGFibGUoKSk7Cisg
ICAgICAgIG1fc3RyZWFtSGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURh
dGEobV9zdHJlYW1IYW5kbGUsIGRhdGEuY29uc3REYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICB9
Cit9CisKK2ludCBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlOjpzZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW4pCit7CisgICAgaWYgKCFtX3NvY2tldCB8fCBtX3NvY2tldC0+c3RhdGUoKSAh
PSBRQWJzdHJhY3RTb2NrZXQ6OkNvbm5lY3RlZFN0YXRlKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBxdWludDY0IHNlbnRTaXplID0gbV9zb2NrZXQtPndyaXRlKGRhdGEsIGxlbik7CisgICAgUU1l
dGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAic29ja2V0U2VudERhdGEiLCBRdDo6UXVldWVk
Q29ubmVjdGlvbik7CisgICAgcmV0dXJuIHNlbnRTaXplOworfQorCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZVByaXZhdGU6OmNsb3NlKCkKK3sKKyAgICBpZiAobV9zdHJlYW1IYW5kbGUgJiYgbV9z
dHJlYW1IYW5kbGUtPm1fc3RhdGUgPT0gU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6Q29ubmVjdGlu
ZykgeworICAgICAgICBtX3NvY2tldC0+YWJvcnQoKTsKKyAgICAgICAgbV9zdHJlYW1IYW5kbGUt
PmNsaWVudCgpLT5kaWRDbG9zZVNvY2tldFN0cmVhbShtX3N0cmVhbUhhbmRsZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc29ja2V0ICYmIG1fc29ja2V0LT5zdGF0ZSgpID09
IFFBYnN0cmFjdFNvY2tldDo6Q29ubmVjdGVkU3RhdGUpCisgICAgICAgIG1fc29ja2V0LT5jbG9z
ZSgpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OnNvY2tldFNlbnREYXRh
KCkKK3sKKyAgICBpZiAobV9zdHJlYW1IYW5kbGUpCisgICAgICAgIG1fc3RyZWFtSGFuZGxlLT5z
ZW5kUGVuZGluZ0RhdGEoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlOjpz
b2NrZXRDbG9zZWQoKQoreworICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgInNv
Y2tldENsb3NlZENhbGxiYWNrIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworfQorCit2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZVByaXZhdGU6OnNvY2tldEVycm9yKFFBYnN0cmFjdFNvY2tldDo6U29j
a2V0RXJyb3IgZXJyb3IpCit7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAi
c29ja2V0RXJyb3JDYWxsYmFjayIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLCBRX0FSRyhpbnQsIGVy
cm9yKSk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6c29ja2V0Q2xvc2Vk
Q2FsbGJhY2soKQoreworICAgIGlmIChtX3N0cmVhbUhhbmRsZSAmJiBtX3N0cmVhbUhhbmRsZS0+
Y2xpZW50KCkpIHsKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBzdHJlYW1IYW5kbGUgPSBt
X3N0cmVhbUhhbmRsZTsKKyAgICAgICAgbV9zdHJlYW1IYW5kbGUgPSAwOworICAgICAgICAvLyBU
aGlzIGZvbGxvd2luZyBjYWxsIGRlbGV0ZXMgX3RoaXNfLiBOb3RoaW5nIHNob3VsZCBiZSBhZnRl
ciBpdC4KKyAgICAgICAgc3RyZWFtSGFuZGxlLT5jbGllbnQoKS0+ZGlkQ2xvc2VTb2NrZXRTdHJl
YW0oc3RyZWFtSGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZTo6c29ja2V0RXJyb3JDYWxsYmFjayhpbnQgZXJyb3IpCit7CisgICAgLy8gRklYTUUgLSBp
biB0aGUgZnV0dXJlLCB3ZSBtaWdodCBub3Qgd2FudCB0byB0cmVhdCBhbGwgZXJyb3JzIGFzIGZh
dGFsLgorICAgIGlmIChtX3N0cmVhbUhhbmRsZSAmJiBtX3N0cmVhbUhhbmRsZS0+Y2xpZW50KCkp
IHsKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBzdHJlYW1IYW5kbGUgPSBtX3N0cmVhbUhh
bmRsZTsKKyAgICAgICAgbV9zdHJlYW1IYW5kbGUgPSAwOworCisgICAgICAgIHN0cmVhbUhhbmRs
ZS0+Y2xpZW50KCktPmRpZEZhaWxTb2NrZXRTdHJlYW0oc3RyZWFtSGFuZGxlLCBTb2NrZXRTdHJl
YW1FcnJvcihlcnJvciwgbV9zb2NrZXQtPmVycm9yU3RyaW5nKCkpKTsKKworICAgICAgICAvLyBU
aGlzIGZvbGxvd2luZyBjYWxsIGRlbGV0ZXMgX3RoaXNfLiBOb3RoaW5nIHNob3VsZCBiZSBhZnRl
ciBpdC4KKyAgICAgICAgc3RyZWFtSGFuZGxlLT5jbGllbnQoKS0+ZGlkQ2xvc2VTb2NrZXRTdHJl
YW0oc3RyZWFtSGFuZGxlKTsKKyAgICB9Cit9CisKKyNpZm5kZWYgUVRfTk9fT1BFTlNTTAordm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlOjpzb2NrZXRTc2xFcnJvcnMoY29uc3QgUUxpc3Q8
UVNzbEVycm9yPiYgZXJyb3IpCit7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlz
LCAic29ja2V0RXJyb3JDYWxsYmFjayIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uLCBRX0FSRyhpbnQs
IGVycm9yWzBdLmVycm9yKCkpKTsKK30KKyNlbmRpZgorCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNv
Y2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
KiBjbGllbnQpCisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKHVybCwgY2xpZW50KQorewor
ICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0
aGlzLCBtX2NsaWVudCk7CisgICAgbV9wID0gbmV3IFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUo
dGhpcywgdXJsKTsKK30KKworU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUo
UVRjcFNvY2tldCogc29ja2V0LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKKyAg
ICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoVVJMKCksIGNsaWVudCkKK3sKKyAgICBMT0coTmV0
d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGll
bnQpOworICAgIG1fcCA9IG5ldyBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKHRoaXMsIHNvY2tl
dCk7CisgICAgaWYgKHNvY2tldC0+aXNPcGVuKCkpCisgICAgICAgIG1fc3RhdGUgPSBPcGVuOwor
fQorCitTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQoreworICAgIExP
RyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOworICAgIHNl
dENsaWVudCgwKTsKKyAgICBkZWxldGUgbV9wOworfQorCitpbnQgU29ja2V0U3RyZWFtSGFuZGxl
OjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBMT0coTmV0
d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsKKyAgICBy
ZXR1cm4gbV9wLT5zZW5kKGRhdGEsIGxlbik7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
OjpwbGF0Zm9ybUNsb3NlKCkKK3sKKyAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CisgICAgbV9wLT5jbG9zZSgpOworfQorCit2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlhbCYpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlY2VpdmVkUmVxdWVz
dFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNpbmNsdWRlICJtb2NfU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DdXJzb3JRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTc4NTRkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0N1cnNvclF0LmNwcApAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNiBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2
IENoYXJsZXMgU2FtdWVscyA8Y2hhcmxlc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
VW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3Vyc29yLmgiCisKKyNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI3VuZGVm
IENvcHlDdXJzb3IKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDdXJzb3I6OkN1cnNvcihjb25z
dCBDdXJzb3ImIG90aGVyKQorICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKKyAgICAsIG1faW1h
Z2Uob3RoZXIubV9pbWFnZSkKKyAgICAsIG1faG90U3BvdChvdGhlci5tX2hvdFNwb3QpCisjaWZu
ZGVmIFFUX05PX0NVUlNPUgorICAgICwgbV9wbGF0Zm9ybUN1cnNvcihvdGhlci5tX3BsYXRmb3Jt
Q3Vyc29yID8gbmV3IFFDdXJzb3IoKm90aGVyLm1fcGxhdGZvcm1DdXJzb3IpICA6IDApCisjZW5k
aWYKK3sKK30KKworQ3Vyc29yOjp+Q3Vyc29yKCkKK3sKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisg
ICAgZGVsZXRlIG1fcGxhdGZvcm1DdXJzb3I7CisjZW5kaWYKK30KKworQ3Vyc29yJiBDdXJzb3I6
Om9wZXJhdG9yPShjb25zdCBDdXJzb3ImIG90aGVyKQoreworICAgIG1fdHlwZSA9IG90aGVyLm1f
dHlwZTsKKyAgICBtX2ltYWdlID0gb3RoZXIubV9pbWFnZTsKKyAgICBtX2hvdFNwb3QgPSBvdGhl
ci5tX2hvdFNwb3Q7CisjaWZuZGVmIFFUX05PX0NVUlNPUgorICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBvdGhlci5tX3BsYXRmb3JtQ3Vyc29yID8gbmV3IFFDdXJzb3IoKm90aGVyLm1fcGxhdGZvcm1D
dXJzb3IpICA6IDA7CisjZW5kaWYKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKKyNpZm5kZWYgUVRf
Tk9fQ1VSU09SCitzdGF0aWMgUUN1cnNvciogY3JlYXRlQ3VzdG9tQ3Vyc29yKEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCit7CisgICAgaWYgKCFpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSW50UG9pbnQgZWZm
ZWN0aXZlSG90U3BvdCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3QpOworICAgIHJl
dHVybiBuZXcgUUN1cnNvcigqKGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSwg
ZWZmZWN0aXZlSG90U3BvdC54KCksIGVmZmVjdGl2ZUhvdFNwb3QueSgpKTsKK30KKyNlbmRpZgor
Cit2b2lkIEN1cnNvcjo6ZW5zdXJlUGxhdGZvcm1DdXJzb3IoKSBjb25zdAoreworI2lmbmRlZiBR
VF9OT19DVVJTT1IKKyAgICBpZiAobV9wbGF0Zm9ybUN1cnNvcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFBvaW50ZXI6CisgICAgICAgIG1fcGxh
dGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6QXJyb3dDdXJzb3IpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENyb3NzOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJz
b3IoUXQ6OkNyb3NzQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIYW5kOgorICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlBvaW50aW5nSGFuZEN1cnNv
cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSUJlYW06CisgICAgICAgIG1fcGxhdGZvcm1D
dXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6SUJlYW1DdXJzb3IpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdhaXQ6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6
V2FpdEN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSGVscDoKKyAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpXaGF0c1RoaXNDdXJzb3IpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEVhc3RSZXNpemU6CisgICAgY2FzZSBFYXN0UGFubmluZzoKKyAg
ICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplSG9yQ3Vyc29yKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aFJlc2l6ZToKKyAgICBjYXNlIE5vcnRoUGFu
bmluZzoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplVmVy
Q3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb3J0aEVhc3RSZXNpemU6CisgICAg
Y2FzZSBOb3J0aEVhc3RQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFD
dXJzb3IoUXQ6OlNpemVCRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9y
dGhXZXN0UmVzaXplOgorICAgIGNhc2UgTm9ydGhXZXN0UGFubmluZzoKKyAgICAgICAgbV9wbGF0
Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpTaXplRkRpYWdDdXJzb3IpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNvdXRoUmVzaXplOgorICAgIGNhc2UgU291dGhQYW5uaW5nOgorICAg
ICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVWZXJDdXJzb3IpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoRWFzdFJlc2l6ZToKKyAgICBjYXNlIFNvdXRo
RWFzdFBhbm5pbmc6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6
U2l6ZUZEaWFnQ3Vyc29yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3V0aFdlc3RSZXNp
emU6CisgICAgY2FzZSBTb3V0aFdlc3RQYW5uaW5nOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29y
ID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVCRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV2VzdFJlc2l6ZToKKyAgICBjYXNlIFdlc3RQYW5uaW5nOgorICAgICAgICBtX3BsYXRm
b3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNpemVIb3JDdXJzb3IpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE5vcnRoU291dGhSZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3Ig
PSBuZXcgUUN1cnNvcihRdDo6U2l6ZVZlckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRWFzdFdlc3RSZXNpemU6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNv
cihRdDo6U2l6ZUhvckN1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9ydGhFYXN0
U291dGhXZXN0UmVzaXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3Io
UXQ6OlNpemVCRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9ydGhXZXN0
U291dGhFYXN0UmVzaXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3Io
UXQ6OlNpemVGRGlhZ0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29sdW1uUmVz
aXplOgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNwbGl0SEN1
cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUm93UmVzaXplOgorICAgICAgICBtX3Bs
YXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OlNwbGl0VkN1cnNvcik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWlkZGxlUGFubmluZzoKKyAgICBjYXNlIE1vdmU6CisgICAgICAgIG1f
cGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRdDo6U2l6ZUFsbEN1cnNvcik7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTm9uZToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBR
Q3Vyc29yKFF0OjpCbGFua0N1cnNvcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTm9Ecm9w
OgorICAgIGNhc2UgTm90QWxsb3dlZDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBR
Q3Vyc29yKFF0OjpGb3JiaWRkZW5DdXJzb3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdy
YWI6CisgICAgY2FzZSBHcmFiYmluZzoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAg
ICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFF0OjpBcnJvd0N1cnNvcik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVmVydGljYWxUZXh0OgorICAgICAgICBtX3BsYXRmb3JtQ3Vy
c29yID0gbmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJj
ZXMvdmVydGljYWxUZXh0Q3Vyc29yLnBuZyIpKSwgNywgNyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ2VsbDoKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXht
YXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NlbGxDdXJzb3IucG5nIikpLCA3
LCA3KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb250ZXh0TWVudToKKyAgICAgICAgbV9w
bGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJr
aXQvcmVzb3VyY2VzL2NvbnRleHRNZW51Q3Vyc29yLnBuZyIpKSwgMywgMik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQWxpYXM6CisgICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1
cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJpbmcoIjovd2Via2l0L3Jlc291cmNlcy9hbGlhc0N1cnNv
ci5wbmciKSksIDExLCAzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcm9ncmVzczoKKyAg
ICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5ldyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmlu
ZygiOi93ZWJraXQvcmVzb3VyY2VzL3Byb2dyZXNzQ3Vyc29yLnBuZyIpKSwgMywgMik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ29weToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IG5l
dyBRQ3Vyc29yKFFQaXhtYXAoUUxhdGluMVN0cmluZygiOi93ZWJraXQvcmVzb3VyY2VzL2NvcHlD
dXJzb3IucG5nIikpLCAzLCAyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBab29tSW46Cisg
ICAgICAgIG1fcGxhdGZvcm1DdXJzb3IgPSBuZXcgUUN1cnNvcihRUGl4bWFwKFFMYXRpbjFTdHJp
bmcoIjovd2Via2l0L3Jlc291cmNlcy96b29tSW5DdXJzb3IucG5nIikpLCA3LCA3KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBab29tT3V0OgorICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0g
bmV3IFFDdXJzb3IoUVBpeG1hcChRTGF0aW4xU3RyaW5nKCI6L3dlYmtpdC9yZXNvdXJjZXMvem9v
bU91dEN1cnNvci5wbmciKSksIDcsIDcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEN1c3Rv
bToKKyAgICAgICAgbV9wbGF0Zm9ybUN1cnNvciA9IGNyZWF0ZUN1c3RvbUN1cnNvcihtX2ltYWdl
LmdldCgpLCBtX2hvdFNwb3QpOworICAgICAgICBpZiAoIW1fcGxhdGZvcm1DdXJzb3IpCisgICAg
ICAgICAgICBtX3BsYXRmb3JtQ3Vyc29yID0gbmV3IFFDdXJzb3IoUXQ6OkFycm93Q3Vyc29yKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorI2VuZGlmCit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1MaXN0UXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzNTVhOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1MaXN0
UXQuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmgiCisKKyNpZiBF
TkFCTEUoREFUQV9UUkFOU0ZFUl9JVEVNUykKKworI2luY2x1ZGUgIkNsaXBib2FyZC5oIgorI2lu
Y2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW1RdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0
UXQ+IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OmNyZWF0ZShQYXNzUmVmUHRyPENsaXBib2FyZD4g
b3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0KG93bmVyLCBjb250ZXh0KSk7Cit9CisK
K0RhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6OkRhdGFUcmFuc2Zlckl0ZW1MaXN0UXQoUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IDogbV9vd25lcihjbGlwYm9hcmQpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKwor
c2l6ZV90IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX293bmVyLT5jYW5SZWFkVHlwZXMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gbV9pdGVtcy5zaXplKCk7Cit9CisKK1Bhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbT4gRGF0
YVRyYW5zZmVySXRlbUxpc3RRdDo6aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KQoreworICAgIGlm
ICghbV9vd25lci0+Y2FuUmVhZFR5cGVzKCkgfHwgaW5kZXggPj0gbGVuZ3RoKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIG1faXRlbXNbaW5kZXhdOworfQorCit2b2lkIERhdGFU
cmFuc2Zlckl0ZW1MaXN0UXQ6OmRlbGV0ZUl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0
aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFtX293bmVyLT5jYW5Xcml0ZURhdGEoKSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2l0ZW1z
LnJlbW92ZShpbmRleCk7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6Y2xlYXIo
KQoreworICAgIGlmICghbV9vd25lci0+Y2FuV3JpdGVEYXRhKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faXRlbXMuY2xlYXIoKTsKKworfQorCit2b2lkIERhdGFUcmFuc2Zlckl0ZW1MaXN0
UXQ6OmFkZChjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKCFtX293bmVyLT5jYW5Xcml0ZURhdGEoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gT25seSBvbmUgJ3N0cmluZycgaXRlbSB3aXRoIGEgZ2l2ZW4gdHlw
ZSBpcyBhbGxvd2VkIGluIHRoZSBjb2xsZWN0aW9uLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9pdGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9pdGVtc1tpXS0+dHlwZSgp
ID09IHR5cGUgJiYgbV9pdGVtc1tpXS0+a2luZCgpID09IERhdGFUcmFuc2Zlckl0ZW06OmtpbmRT
dHJpbmcpIHsKKyAgICAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2l0ZW1zLmFwcGVuZChEYXRhVHJh
bnNmZXJJdGVtOjpjcmVhdGUobV9vd25lciwgbV9jb250ZXh0LCBkYXRhLCB0eXBlKSk7Cit9CisK
K3ZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RRdDo6YWRkKFBhc3NSZWZQdHI8RmlsZT4gZmlsZSkK
K3sKKyAgICBpZiAoIW1fb3duZXItPmNhbldyaXRlRGF0YSgpIHx8ICFmaWxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2l0ZW1zLmFwcGVuZChEYXRhVHJhbnNmZXJJdGVtOjpjcmVhdGUobV9v
d25lciwgbV9jb250ZXh0LCBmaWxlKSk7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3RR
dDo6YWRkUGFzdGVib2FyZEl0ZW0oY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIG1faXRlbXMu
YXBwZW5kKERhdGFUcmFuc2Zlckl0ZW1RdDo6Y3JlYXRlRnJvbVBhc3RlYm9hcmQobV9vd25lciwg
bV9jb250ZXh0LCB0eXBlKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvRGF0YVRyYW5zZmVySXRlbUxpc3RRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY1NjhkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtTGlzdFF0LmgKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERhdGFUcmFuc2Zlckl0ZW1MaXN0UXRfaAor
I2RlZmluZSBEYXRhVHJhbnNmZXJJdGVtTGlzdFF0X2gKKworI2lmIEVOQUJMRShEQVRBX1RSQU5T
RkVSX0lURU1TKQorCisjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRlbUxpc3QuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIERhdGFUcmFuc2Zlckl0ZW1RdDsKK2Ns
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIERhdGFUcmFuc2Zlckl0ZW1MaXN0
UXQgOiBwdWJsaWMgRGF0YVRyYW5zZmVySXRlbUxpc3QgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ+IGNyZWF0ZShQYXNzUmVmUHRyPENsaXBi
b2FyZD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIHZpcnR1YWwgc2l6ZV90IGxl
bmd0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBp
dGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJdGVtKHVu
c2lnbmVkIGxvbmcgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xl
YXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGFkZChQYXNzUmVm
UHRyPEZpbGU+KTsKKworCitwcml2YXRlOgorICAgIERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQoUGFz
c1JlZlB0cjxDbGlwYm9hcmQ+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkUGFzdGVib2FyZEl0ZW0oY29uc3QgU3RyaW5nJiB0eXBlKTsKKworICAgIFJl
ZlB0cjxDbGlwYm9hcmQ+IG1fb3duZXI7CisgICAgLy8gSW5kaXJlY3RseSBvd25lZCBieSBvdXIg
cGFyZW50LgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBWZWN0
b3I8UmVmUHRyPERhdGFUcmFuc2Zlckl0ZW0+ID4gbV9pdGVtczsKK307CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTliNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9EYXRhVHJhbnNmZXJJdGVtUXQuY3BwCkBAIC0wLDAgKzEsMTMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRhdGFUcmFuc2Zlckl0ZW1RdC5oIgorCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRF
TVMpCisKKyNpbmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVk
ZSAiRmlsZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU3RyaW5n
Q2FsbGJhY2suaCIKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUNsaXBib2Fy
ZD4KKyNpbmNsdWRlIDxRTWltZURhdGE+CisjaW5jbHVkZSA8UVRleHRDb2RlYz4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1RdD4gRGF0YVRyYW5z
ZmVySXRlbVF0OjpjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFUcmFuc2Zlckl0ZW1R
dChvd25lciwgY29udGV4dCwgRGF0YVRyYW5zZmVySXRlbVF0OjpJbnRlcm5hbFNvdXJjZSwga2lu
ZFN0cmluZywgdHlwZSwgZGF0YSkpOworfQorCitQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1R
dD4gRGF0YVRyYW5zZmVySXRlbVF0OjpjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxGaWxlPiBm
aWxlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YVRyYW5zZmVySXRlbVF0KG93bmVy
LCBjb250ZXh0LCBEYXRhVHJhbnNmZXJJdGVtUXQ6OkludGVybmFsU291cmNlLCBmaWxlKSk7Cit9
CisKK1Bhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRlbVF0PiBEYXRhVHJhbnNmZXJJdGVtUXQ6OmNy
ZWF0ZUZyb21QYXN0ZWJvYXJkKFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gInRleHQvcGxhaW4iIHx8IHR5
cGUgPT0gInRleHQvaHRtbCIpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YVRyYW5z
ZmVySXRlbVF0KG93bmVyLCBjb250ZXh0LCBQYXN0ZWJvYXJkU291cmNlLCBEYXRhVHJhbnNmZXJJ
dGVtOjpraW5kU3RyaW5nLCB0eXBlLCAiIikpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
YXRhVHJhbnNmZXJJdGVtUXQob3duZXIsIGNvbnRleHQsIFBhc3RlYm9hcmRTb3VyY2UsIERhdGFU
cmFuc2Zlckl0ZW06OmtpbmRGaWxlLCB0eXBlLCAiIikpOworfQorCitEYXRhVHJhbnNmZXJJdGVt
UXQ6OkRhdGFUcmFuc2Zlckl0ZW1RdChQYXNzUmVmUHRyPENsaXBib2FyZD4gb3duZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNv
dXJjZSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICA6IG1fb3duZXIob3du
ZXIpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fa2luZChraW5kKQorICAgICwg
bV90eXBlKHR5cGUpCisgICAgLCBtX2RhdGFTb3VyY2Uoc291cmNlKQorICAgICwgbV9kYXRhKGRh
dGEpCit7Cit9CisKK0RhdGFUcmFuc2Zlckl0ZW1RdDo6RGF0YVRyYW5zZmVySXRlbVF0KFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEYXRhU291cmNlIHNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8RmlsZT4gZmlsZSkKKyAgICA6IG1f
b3duZXIob3duZXIpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fa2luZChraW5k
RmlsZSkKKyAgICAsIG1fdHlwZShmaWxlLmdldCgpID8gZmlsZS0+dHlwZSgpIDogIiIpOworICAg
ICwgbV9zb3VyY2Uoc291cmNlKQorICAgICwgbV9maWxlKGZpbGUpCit7Cit9CisKK3ZvaWQgRGF0
YVRyYW5zZmVySXRlbVF0OjpnZXRBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBj
YWxsYmFjaykgY29uc3QKK3sKKyAgICBpZiAoIW93bmVyKCktPnBvbGljeSgpLT5jYW5SZWFkRGF0
YSgpIHx8IGtpbmQoKSAhPSBraW5kU3RyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV9kYXRhU291cmNlID09IEludGVybmFsU291cmNlKSB7CisgICAgICAgIGNhbGxiYWNrLT5zY2hl
ZHVsZUNhbGxiYWNrKG1fY29udGV4dCwgbV9kYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGNvbnN0IFFNaW1lRGF0YSogbWltZURhdGEgPSBRQXBwbGljYXRpb246OmNsaXBib2Fy
ZCgpLT5taW1lRGF0YShRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOworICAgIGlmICghbWltZURhdGEp
CisgICAgICAgIHJldHVybjsKKworICAgIFFTdHJpbmcgZGF0YTsKKyAgICBpZiAodHlwZSgpID09
ICJ0ZXh0L3BsYWluIikKKyAgICAgICAgZGF0YSA9IG1pbWVEYXRhLT50ZXh0KCk7CisgICAgZWxz
ZSBpZiAodHlwZSgpID09ICJ0ZXh0L2h0bWwiKQorICAgICAgICBkYXRhID0gbWltZURhdGEtPmh0
bWwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUUJ5dGVBcnJheSByYXdEYXRhID0gbWltZURhdGEt
PmRhdGEodHlwZSgpKTsKKyAgICAgICAgZGF0YSA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgi
VVRGLTE2IiktPnRvVW5pY29kZShyYXdEYXRhKTsKKyAgICB9CisKKyAgICBjYWxsYmFjay0+c2No
ZWR1bGVDYWxsYmFjayhtX2NvbnRleHQsIGRhdGEpOworfQorCitQYXNzUmVmUHRyPEJsb2I+IERh
dGFUcmFuc2Zlckl0ZW1RdDo6Z2V0QXNGaWxlKCkgY29uc3QKK3sKKyAgICBpZiAoa2luZCgpID09
IGtpbmRGaWxlICYmIG1fZGF0YVNvdXJjZSA9PSBJbnRlcm5hbFNvdXJjZSkKKyAgICAgICAgcmV0
dXJuIG1fZmlsZTsKKworICAgIHJldHVybiAwOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
REFUQV9UUkFOU0ZFUl9JVEVNUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0RhdGFUcmFuc2Zlckl0ZW1RdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGF0
YVRyYW5zZmVySXRlbVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU4
OGI4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RhdGFU
cmFuc2Zlckl0ZW1RdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBEYXRhVHJhbnNmZXJJdGVtUXRfaAorI2RlZmluZSBEYXRhVHJhbnNmZXJJdGVtUXRf
aAorCisjaWYgRU5BQkxFKERBVEFfVFJBTlNGRVJfSVRFTVMpCisKKyNpbmNsdWRlICJEYXRhVHJh
bnNmZXJJdGVtLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENsaXBib2FyZDsKK2NsYXNzIEZpbGU7CitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworCitjbGFzcyBEYXRhVHJhbnNmZXJJdGVtUXQgOiBwdWJsaWMgRGF0YVRyYW5z
ZmVySXRlbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YVRyYW5zZmVySXRl
bVF0PiBjcmVhdGUoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1RdD4gY3JlYXRlKFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RmlsZT4p
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFUcmFuc2Zlckl0ZW1RdD4gY3JlYXRlRnJvbVBh
c3RlYm9hcmQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmKTsKKworICAgIHZpcnR1YWwgU3RyaW5n
IGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgdmlydHVhbCB2b2lkIGdldEFzU3RyaW5n
KFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+KSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8QmxvYj4gZ2V0QXNGaWxlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IERhdGFUcmFuc2Zlckl0ZW1MaXN0UXQ7CisKKyAgICBlbnVtIERhdGFTb3VyY2UgeworICAgICAg
ICBQYXN0ZWJvYXJkU291cmNlLAorICAgICAgICBJbnRlcm5hbFNvdXJjZQorICAgIH07CisKKyAg
ICBEYXRhVHJhbnNmZXJJdGVtUXQoUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IG93bmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRGF0YVNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgRGF0YVRyYW5zZmVySXRlbVF0
KFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosCisgICAgICAgICAgICAgICAgICAgICAgIERhdGFTb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8RmlsZT4pOworCisgICAgY29uc3Qg
UmVmUHRyPENsaXBib2FyZD4gbV9vd25lcjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBt
X2NvbnRleHQ7CisgICAgY29uc3QgU3RyaW5nIG1fa2luZDsKKyAgICBjb25zdCBTdHJpbmcgbV90
eXBlOworICAgIGNvbnN0IERhdGFTb3VyY2UgbV9kYXRhU291cmNlOworICAgIGNvbnN0IFN0cmlu
ZyBtX2RhdGE7CisgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShEQVRBX1RSQU5TRkVSX0lURU1TKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU1vdGlvbkNsaWVudFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU1vdGlvbkNsaWVudFF0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGZmZmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlTW90aW9uQ2xpZW50UXQuY3BwCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGV2aWNlTW90aW9uQ2xpZW50UXQuaCIKKworI2luY2x1ZGUgIkRldmljZU1vdGlvblByb3ZpZGVy
UXQuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitE
ZXZpY2VNb3Rpb25DbGllbnRRdDo6fkRldmljZU1vdGlvbkNsaWVudFF0KCkKK3sKK30KKwordm9p
ZCBEZXZpY2VNb3Rpb25DbGllbnRRdDo6ZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgp
Cit7CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UXQ6OnNl
dENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICAv
LyBJbml0aWFsaXplIGxhemlseS4KKyAgICBpZiAoIW1fcHJvdmlkZXIpCisgICAgICAgIG1fcHJv
dmlkZXIgPSBhZG9wdFB0cihuZXcgRGV2aWNlTW90aW9uUHJvdmlkZXJRdCk7CisKKyAgICBtX3By
b3ZpZGVyLT5zZXRDb250cm9sbGVyKGNvbnRyb2xsZXIpOworfQorCit2b2lkIERldmljZU1vdGlv
bkNsaWVudFF0OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV9wcm92aWRlcikKKyAgICAg
ICAgbV9wcm92aWRlci0+c3RhcnQoKTsKK30KKwordm9pZCBEZXZpY2VNb3Rpb25DbGllbnRRdDo6
c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV9wcm92aWRlcikKKyAgICAgICAgbV9wcm92aWRl
ci0+c3RvcCgpOworfQorCitEZXZpY2VNb3Rpb25EYXRhKiBEZXZpY2VNb3Rpb25DbGllbnRRdDo6
bGFzdE1vdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvdmlkZXItPmxhc3RNb3Rpb24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRGV2aWNlTW90aW9uQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0RldmljZU1vdGlvbkNsaWVudFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uN2NhYjM5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0RldmljZU1vdGlvbkNsaWVudFF0LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50UXRfaAorI2RlZmluZSBEZXZp
Y2VNb3Rpb25DbGllbnRRdF9oCisKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnQuaCIKKyNp
bmNsdWRlICJEZXZpY2VNb3Rpb25EYXRhLmgiCisKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25Qcm92
aWRlclF0LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERldmljZU1vdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBEZXZpY2VNb3Rpb25Qcm92
aWRlclF0OworCitjbGFzcyBEZXZpY2VNb3Rpb25DbGllbnRRdCA6IHB1YmxpYyBEZXZpY2VNb3Rp
b25DbGllbnQgeworcHVibGljOgorICAgIERldmljZU1vdGlvbkNsaWVudFF0KCkgeyB9CisgICAg
dmlydHVhbCB+RGV2aWNlTW90aW9uQ2xpZW50UXQoKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IHZvaWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOworCisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisK
KyAgICB2aXJ0dWFsIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdDsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlvbkNvbnRyb2xsZXIqKTsKKwor
ICAgIE93blB0cjxEZXZpY2VNb3Rpb25Qcm92aWRlclF0PiBtX3Byb3ZpZGVyOworfTsKKworfSAv
LyBuYW1lc3BlY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGV2aWNlTW90aW9uQ2xpZW50UXRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlTW90aW9uUHJvdmlk
ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EZXZpY2VNb3Rpb25Qcm92aWRl
clF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzMzMmI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlTW90aW9uUHJv
dmlkZXJRdC5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25Qcm92aWRlclF0LmgiCisKKyNpbmNs
dWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlclF0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGV2aWNlTW90aW9uUHJv
dmlkZXJRdDo6RGV2aWNlTW90aW9uUHJvdmlkZXJRdCgpCisgICAgOiBtX21vdGlvbihEZXZpY2VN
b3Rpb25EYXRhOjpjcmVhdGUoKSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb24obmV3IERldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJRdCkKKyAgICAsIG1fY29udHJvbGxlcigwKQoreworICAgIG1f
YWNjZWxlcmF0aW9uLmFkZEZpbHRlcih0aGlzKTsKK30KKworRGV2aWNlTW90aW9uUHJvdmlkZXJR
dDo6fkRldmljZU1vdGlvblByb3ZpZGVyUXQoKQoreworICAgIGRlbGV0ZSBtX2RldmljZU9yaWVu
dGF0aW9uOworfQorCit2b2lkIERldmljZU1vdGlvblByb3ZpZGVyUXQ6OnNldENvbnRyb2xsZXIo
RGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlcikKK3sKKyAgICBBU1NFUlQoY29udHJv
bGxlcik7CisgICAgQVNTRVJUKCFtX2NvbnRyb2xsZXIpOworICAgIG1fY29udHJvbGxlciA9IGNv
bnRyb2xsZXI7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uUHJvdmlkZXJRdDo6c3RhcnQoKQorewor
ICAgIG1fYWNjZWxlcmF0aW9uLnN0YXJ0KCk7CisgICAgbV9kZXZpY2VPcmllbnRhdGlvbi0+c3Rh
cnQoKTsKK30KKwordm9pZCBEZXZpY2VNb3Rpb25Qcm92aWRlclF0OjpzdG9wKCkKK3sKKyAgICBt
X2FjY2VsZXJhdGlvbi5zdG9wKCk7CisgICAgbV9kZXZpY2VPcmllbnRhdGlvbi0+c3RvcCgpOwor
fQorCitib29sIERldmljZU1vdGlvblByb3ZpZGVyUXQ6OmZpbHRlcihRQWNjZWxlcm9tZXRlclJl
YWRpbmcqIHJlYWRpbmcpCit7CisgICAgaWYgKCFtX2NvbnRyb2xsZXIpIHsKKyAgICAgICAgLy8g
V2UgYXJlIHRoZSBvbmx5IGZpbHRlci4gTm8gbmVlZCB0byBwcm9wYWdhdGUgZnJvbSBoZXJlLgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUmVmUHRyPERldmljZU1vdGlvbkRh
dGE6OkFjY2VsZXJhdGlvbj4gYWNjZWwgPSBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb246
OmNyZWF0ZSgKKyAgICAgICAgICAgIC8qIHggYXZhaWxhYmxlICovIHRydWUsIHJlYWRpbmctPngo
KSwKKyAgICAgICAgICAgIC8qIHkgYXZhaWxhYmxlICovIHRydWUsIHJlYWRpbmctPnkoKSwKKyAg
ICAgICAgICAgIC8qIHogYXZhaWxhYmxlICovIHRydWUsIHJlYWRpbmctPnooKSk7CisKKyAgICBS
ZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlPiByb3RhdGlvbiA9IERldmljZU1v
dGlvbkRhdGE6OlJvdGF0aW9uUmF0ZTo6Y3JlYXRlKAorICAgICAgICAgICAgbV9kZXZpY2VPcmll
bnRhdGlvbi0+aGFzQWxwaGEoKSwgbV9kZXZpY2VPcmllbnRhdGlvbi0+bGFzdE9yaWVudGF0aW9u
KCktPmFscGhhKCksCisgICAgICAgICAgICAvKiBiZXRhIGF2YWlsYWJsZSAqLyB0cnVlLCBtX2Rl
dmljZU9yaWVudGF0aW9uLT5sYXN0T3JpZW50YXRpb24oKS0+YmV0YSgpLAorICAgICAgICAgICAg
LyogZ2FtbWEgYXZhaWxhYmxlICovIHRydWUsIG1fZGV2aWNlT3JpZW50YXRpb24tPmxhc3RPcmll
bnRhdGlvbigpLT5nYW1tYSgpKTsKKworICAgIG1fbW90aW9uID0gRGV2aWNlTW90aW9uRGF0YTo6
Y3JlYXRlKGFjY2VsLAorICAgICAgICAgICAgYWNjZWwsIC8qIEZJWE1FOiBOZWVkcyB0byBwcm92
aWRlIGFjY2VsZXJhdGlvbiBpbmNsdWRlIGdyYXZpdHkuICovCisgICAgICAgICAgICByb3RhdGlv
biwKKyAgICAgICAgICAgIGZhbHNlLCAwIC8qIFRoZSBpbnRlcnZhbCBpcyB0cmVhdGVkIGludGVy
bmFsbHkgYnkgUXQgbW9iaWxpdHkgKFF0U2Vuc29ycyBpbiBRdDUpICovKTsKKworICAgIG1fY29u
dHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKG1fbW90aW9uLmdldCgpKTsKKworICAgIC8v
IFdlIGFyZSB0aGUgb25seSBmaWx0ZXIuIE5vIG5lZWQgdG8gcHJvcGFnYXRlIGZyb20gaGVyZS4K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU1vdGlvblByb3ZpZGVyUXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU1vdGlvblByb3ZpZGVyUXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDM2MDAzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlTW90aW9uUHJvdmlkZXJRdC5oCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIERldmljZU1vdGlvblBy
b3ZpZGVyUXRfaAorI2RlZmluZSBEZXZpY2VNb3Rpb25Qcm92aWRlclF0X2gKKworI2luY2x1ZGUg
IkRldmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDxRQWNjZWxlcm9tZXRlckZpbHRlcj4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGV2
aWNlTW90aW9uQ29udHJvbGxlcjsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdDsK
KworY2xhc3MgRGV2aWNlTW90aW9uUHJvdmlkZXJRdCA6IHB1YmxpYyBRQWNjZWxlcm9tZXRlckZp
bHRlciB7CitwdWJsaWM6CisgICAgRGV2aWNlTW90aW9uUHJvdmlkZXJRdCgpOworICAgIHZpcnR1
YWwgfkRldmljZU1vdGlvblByb3ZpZGVyUXQoKTsKKworICAgIHZvaWQgc2V0Q29udHJvbGxlcihE
ZXZpY2VNb3Rpb25Db250cm9sbGVyKik7CisKKyAgICBib29sIGZpbHRlcihRQWNjZWxlcm9tZXRl
clJlYWRpbmcqKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKyAgICBE
ZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tb3Rpb24uZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4gbV9tb3Rpb247
CisgICAgUUFjY2VsZXJvbWV0ZXIgbV9hY2NlbGVyYXRpb247CisgICAgRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlclF0KiBtX2RldmljZU9yaWVudGF0aW9uOworICAgIERldmljZU1vdGlvbkNvbnRy
b2xsZXIqIG1fY29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIERldmljZU1vdGlvblByb3ZpZGVyUXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGQ5ZTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdC5jcHAKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdC5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlclF0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFF0OjpkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95
ZWQoKQoreworICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50UXQ6OnNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250cm9s
bGVyKQoreworICAgIC8vIEluaXRpYWxpemUgbGF6aWx5LgorICAgIGlmICghbV9wcm92aWRlcikK
KyAgICAgICAgbV9wcm92aWRlciA9IGFkb3B0UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyUXQpOworCisgICAgbV9wcm92aWRlci0+c2V0Q29udHJvbGxlcihjb250cm9sbGVyKTsKK30K
Kwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAg
ICBpZiAobV9wcm92aWRlcikKKyAgICAgICAgbV9wcm92aWRlci0+c3RhcnQoKTsKK30KKwordm9p
ZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0OjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlmICht
X3Byb3ZpZGVyKQorICAgICAgICBtX3Byb3ZpZGVyLT5zdG9wKCk7Cit9CisKK0RldmljZU9yaWVu
dGF0aW9uRGF0YSogRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdDo6bGFzdE9yaWVudGF0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKG1fcHJvdmlkZXIpID8gbV9wcm92aWRlci0+bGFzdE9yaWVu
dGF0aW9uKCkgOiAwOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50UXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50UXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTJkNWRkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRR
dC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudFF0X2gKKyNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdF9oCisK
KyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uRGF0YS5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
LmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0LmgiCisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0OworCitjbGFzcyBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0IDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAg
IHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0
aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOworCitwcml2YXRlOgorICAgIE93blB0
cjxEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ+IG1fcHJvdmlkZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhj
YzZmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyUXQuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJRdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJRdDo6RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0KCkKKyAgICA6IG1fY29udHJvbGxl
cigwKQoreworICAgIG1fc2Vuc29yLmFkZEZpbHRlcih0aGlzKTsKKyAgICBtX2xhc3RPcmllbnRh
dGlvbiA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKCk7Cit9CisKK0RldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJRdDo6fkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdCgpCit7CisKK30K
Kwordm9pZCBEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6OnNldENvbnRyb2xsZXIoRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQoreworICAgIGlmICghY29udHJvbGxl
cikKKyAgICAgICAgc3RvcCgpOworCisgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKK30K
Kwordm9pZCBEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6OnN0YXJ0KCkKK3sKKyAgICBtX3Nl
bnNvci5zdGFydCgpOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdDo6c3Rv
cCgpCit7CisgICAgbV9zZW5zb3Iuc3RvcCgpOworfQorCitib29sIERldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJRdDo6ZmlsdGVyKFFSb3RhdGlvblJlYWRpbmcqIHJlYWRpbmcpCit7CisgICAgaWYg
KG1fY29udHJvbGxlcikgeworICAgICAgICAvLyBQcm92aWRlIGRldmljZSBvcmllbnRhdGlvbiBk
YXRhIGFjY29yZGluZyBXM0Mgc3BlYzoKKyAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvZ2Vv
L2FwaS9zcGVjLXNvdXJjZS1vcmllbnRhdGlvbi5odG1sCisgICAgICAgIC8vIFF0IG1vYmlsaXR5
IChRdFNlbnNvcnMgaW4gUXQ1KSBwcm92aWRlIHRoZXNlIGRhdGEgdmlhIFFSb3RhdGlvblNlbnNv
cgorICAgICAgICAvLyB1c2luZyB0aGUgUVJvdGF0aW9uUmVhZGluZyBjbGFzczoKKyAgICAgICAg
Ly8gIC0gdGhlIHJvdGF0aW9uIGFyb3VuZCB6IGF4aXMgKGFscGhhKSBpcyBnaXZlbiBhcyB6IGlu
IFFSb3RhdGlvblJlYWRpbmc7CisgICAgICAgIC8vICAtIHRoZSByb3RhdGlvbiBhcm91bmQgeCBh
eGlzIChiZXRhKSBpcyBnaXZlbiBhcyB4IGluIFFSb3RhdGlvblJlYWRpbmc7CisgICAgICAgIC8v
ICAtIHRoZSByb3RhdGlvbiBhcm91bmQgeSBheGlzIChnYW1tYSkgaXMgZ2l2ZW4gYXMgeSBpbiBR
Um90YXRpb25SZWFkaW5nOworICAgICAgICAvLyBTZWU6IGh0dHA6Ly9kb2MucXQubm9raWEuY29t
L3F0bW9iaWxpdHktMS4wL3Fyb3RhdGlvbnJlYWRpbmcuaHRtbAorICAgICAgICAvLyBUaGUgWiAo
YWxwaGEpIHJvdGF0aW9uIGFuZ2xlIGlzIGNoZWNrZWQgdmlhIGhhc0FscGhhKCkgcHJpdmF0ZSBt
ZXRob2QsCisgICAgICAgIC8vIGRlcGVuZGluZyBpZiB0aGUgZGV2aWNlIGlzIGFibGUgZG8gZGV0
ZWN0IHRoZSBhbHBoYSByb3RhdGlvbi4gWCAoYmV0YSkgYW5kCisgICAgICAgIC8vIFkgKGdhbW1h
KSBheGlzIGFyZSBhdmFpbGJsZSBpbiB0aGlzIGNvbnRleHQuCisgICAgICAgIG1fbGFzdE9yaWVu
dGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoaGFzQWxwaGEoKSwgcmVhZGlu
Zy0+eigpLAorICAgICAgICAgICAgICAgIC8qIHggYXZhaWxhYmxlICovIHRydWUsIHJlYWRpbmct
PngoKSwKKyAgICAgICAgICAgICAgICAvKiB5IGF2YWlsYWJsZSAqLyB0cnVlLCByZWFkaW5nLT55
KCkpOworICAgICAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKG1f
bGFzdE9yaWVudGF0aW9uLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyBXZSBhcmUgdGhlIG9ubHkg
ZmlsdGVyLCBzbyBubyBuZWVkIHRvIHByb3BhZ2F0ZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlclF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUw
Mjk4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Rldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJRdC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworI2lmbmRlZiBEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXRfaAorI2RlZmluZSBEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyUXRfaAorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25EYXRhLmgiCisjaW5jbHVkZSA8
UVJvdGF0aW9uRmlsdGVyPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQgOiBwdWJsaWMgUVJv
dGF0aW9uRmlsdGVyIHsKK3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQo
KTsKKyAgICB2aXJ0dWFsIH5EZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQoKTsKKworICAgIHZv
aWQgc2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKTsKKworICAgIGJv
b2wgZmlsdGVyKFFSb3RhdGlvblJlYWRpbmcqKTsKKworICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2
b2lkIHN0b3AoKTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zZW5zb3Iu
aXNBY3RpdmUoKTsgfQorICAgIERldmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0T3JpZW50YXRpb24uZ2V0KCk7IH0KKyAgICBib29sIGhh
c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zZW5zb3IucHJvcGVydHkoImhhc1oiKS50b0Jvb2wo
KTsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IG1fbGFz
dE9yaWVudGF0aW9uOworICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogbV9jb250cm9s
bGVyOworICAgIFFSb3RhdGlvblNlbnNvciBtX3NlbnNvcjsKK307CisKK30KKworI2VuZGlmIC8v
IERldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9EcmFnRGF0YVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0RyYWdEYXRhUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOGFh
MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnRGF0
YVF0LmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRyYWdEYXRhLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCisKKyNpbmNsdWRlIDxRQ29sb3I+
CisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVkZSA8UU1pbWVEYXRhPgorI2luY2x1ZGUgPFFVcmw+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRSZXBsYWNl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zQ29sb3IoKSBjb25zdAoreworICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzQ29sb3Io
KTsKK30KKworYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNGaWxlcygpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3BsYXRmb3JtRHJhZ0RhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBRTGlzdDxR
VXJsPiB1cmxzID0gbV9wbGF0Zm9ybURyYWdEYXRhLT51cmxzKCk7CisgICAgZm9yZWFjaCAoY29u
c3QgUVVybCAmdXJsLCB1cmxzKSB7CisgICAgICAgIGlmICghdXJsLnRvTG9jYWxGaWxlKCkuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwordW5zaWduZWQgRHJhZ0RhdGE6Om51bWJlck9mRmlsZXMoKSBjb25zdAoreworICAg
IHJldHVybiAwOworfQorCit2b2lkIERyYWdEYXRhOjphc0ZpbGVuYW1lcyhWZWN0b3I8U3RyaW5n
PiYgcmVzdWx0KSBjb25zdAoreworICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhKQorICAgICAg
ICByZXR1cm47CisgICAgUUxpc3Q8UVVybD4gdXJscyA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
cygpOworICAgIGZvcmVhY2ggKGNvbnN0IFFVcmwgJnVybCwgdXJscykgeworICAgICAgICBRU3Ry
aW5nIGZpbGUgPSB1cmwudG9Mb2NhbEZpbGUoKTsKKyAgICAgICAgaWYgKCFmaWxlLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZmlsZSk7CisgICAgfQorfQorCitib29sIERy
YWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXRmb3Jt
RHJhZ0RhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURy
YWdEYXRhLT5oYXNUZXh0KCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVcmxzKCk7Cit9CisK
K1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUqIGZyYW1lKSBjb25zdAoreworICAg
IGlmICghbV9wbGF0Zm9ybURyYWdEYXRhKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
U3RyaW5nIHRleHQgPSBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKKyAgICBpZiAoIXRleHQu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdGV4dDsKKworICAgIC8vIEZJWE1FOiBTaG91bGQg
aGFuZGxlIHJpY2ggdGV4dCBoZXJlCisgICAgcmV0dXJuIGFzVVJMKGZyYW1lLCBEb05vdENvbnZl
cnRGaWxlbmFtZXMsIDApOworfQorCitDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEpCisgICAgICAgIHJldHVybiBDb2xvcigpOwor
ICAgIHJldHVybiBxdmFyaWFudF9jYXN0PFFDb2xvcj4obV9wbGF0Zm9ybURyYWdEYXRhLT5jb2xv
ckRhdGEoKSk7Cit9CisKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQo
KSBjb25zdAoreworICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc1VSTCgwKSB8fCBt
X3BsYXRmb3JtRHJhZ0RhdGEtPmhhc0h0bWwoKSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1Rl
eHQoKTsKK30KKworYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFVz
ZSBmaWxlbmFtZVBvbGljeS4KKyAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1VybHMoKTsK
K30KKworU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVXNl
IGZpbGVuYW1lUG9saWN5LgorICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgUUxpc3Q8UVVybD4gdXJscyA9IG1fcGxhdGZvcm1EcmFnRGF0
YS0+dXJscygpOworCisgICAgaWYgKHVybHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICBRQnl0ZUFycmF5IGVuY29kZWRVcmwgPSB1cmxzLmZpcnN0KCkudG9FbmNv
ZGVkKCk7CisgICAgcmV0dXJuIFN0cmluZyhlbmNvZGVkVXJsLmNvbnN0RGF0YSgpLCBlbmNvZGVk
VXJsLmxlbmd0aCgpKTsKK30KKworUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0
YTo6YXNGcmFnbWVudChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29sLCBib29s
JikgY29uc3QKK3sKKyAgICBpZiAobV9wbGF0Zm9ybURyYWdEYXRhICYmIG1fcGxhdGZvcm1EcmFn
RGF0YS0+aGFzSHRtbCgpKQorICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3Vw
KGZyYW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmh0bWwoKSwgIiIsIERpc2Fs
bG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CisKKyAgICByZXR1cm4gMDsKK30KKworfQor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9EcmFnSW1hZ2VRdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg5N2NmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0RyYWdJbWFnZVF0LmNwcApAQCAtMCwwICsxLDc2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKKwor
I2luY2x1ZGUgIkltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50U2l6ZSBkcmFn
SW1hZ2VTaXplKERyYWdJbWFnZVJlZiBpbWFnZSkKK3sKKyAgICBpZiAoIWltYWdlKQorICAgICAg
ICByZXR1cm4gSW50U2l6ZSgpOworCisgICAgcmV0dXJuIGltYWdlLT5zaXplKCk7Cit9CisKK3Zv
aWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSkKK3sKKyAgICBkZWxldGUgaW1h
Z2U7Cit9CisKK0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2Us
IEZsb2F0U2l6ZSBzY2FsZSkKK3sKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGludCBzY2FsZWRXaWR0aCA9IGltYWdlLT53aWR0aCgpICogc2NhbGUud2lkdGgoKTsK
KyAgICBpbnQgc2NhbGVkSGVpZ2h0ID0gaW1hZ2UtPmhlaWdodCgpICogc2NhbGUuaGVpZ2h0KCk7
CisKKyAgICAqaW1hZ2UgPSBpbWFnZS0+c2NhbGVkKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQp
OworICAgIHJldHVybiBpbWFnZTsKK30KKworRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdl
VG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQoreworICAgIHJldHVybiBpbWFn
ZTsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1h
Z2UsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoIWltYWdlIHx8ICFp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gbmV3IFFQaXhtYXAoKmltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKTsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFn
ZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0V2ZW50TG9vcFF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0V2ZW50TG9vcFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zOWJiNTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRXZlbnRMb29wUXQuY3BwCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIK
KworI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBFdmVudExvb3A6OmN5Y2xlKCkKK3sKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpwcm9jZXNz
RXZlbnRzKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjE2ZjRkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9GaWxlU3lzdGVtUXQuY3BwCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q29sbGFib3JhLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgU2VuY2hhLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKworI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgorI2lu
Y2x1ZGUgPFFEYXRlVGltZT4KKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFGaWxlPgorI2lu
Y2x1ZGUgPFFGaWxlSW5mbz4KKyNpbmNsdWRlIDxRVGVtcG9yYXJ5RmlsZT4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNp
ZiAhZGVmaW5lZChRX09TX1dJTikKKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICByZXR1cm4gUUZpbGU6OmV4aXN0cyhwYXRoKTsKK30KKworCitib29sIGRlbGV0
ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBRRmlsZTo6cmVtb3ZlKHBh
dGgpOworfQorCitib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICByZXR1cm4gUURpcjo6cm9vdCgpLnJtZGlyKHBhdGgpOworfQorCitib29sIGdldEZp
bGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgUUZp
bGVJbmZvIGluZm8ocGF0aCk7CisgICAgcmVzdWx0ID0gaW5mby5zaXplKCk7CisgICAgcmV0dXJu
IGluZm8uZXhpc3RzKCk7Cit9CisKK2Jvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK3sKKyAgICBRRmlsZUluZm8gaW5mbyhwYXRo
KTsKKyAgICByZXN1bHQgPSBpbmZvLmxhc3RNb2RpZmllZCgpLnRvVGltZV90KCk7CisgICAgcmV0
dXJuIGluZm8uZXhpc3RzKCk7Cit9CisKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgUUZpbGVJbmZvIGluZm8ocGF0
aCk7CisgICAgaWYgKCFpbmZvLmV4aXN0cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBpbmZvLmxhc3RNb2RpZmllZCgpLnRvVGltZV90KCk7
CisgICAgcmVzdWx0Lmxlbmd0aCA9IGluZm8uc2l6ZSgpOworICAgIHJlc3VsdC50eXBlID0gaW5m
by5pc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpU
eXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVybiBRRGlyOjpyb290KCkubWtwYXRoKHBh
dGgpOworfQorCitTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCit7CisgICAgcmV0dXJuIFFEaXI6OnRvTmF0
aXZlU2VwYXJhdG9ycyhRRGlyKHBhdGgpLmZpbGVQYXRoKGNvbXBvbmVudCkpOworfQorCitTdHJp
bmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBRRGlyOjpob21lUGF0aCgpOwor
fQorCitTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBy
ZXR1cm4gUUZpbGVJbmZvKHBhdGgpLmZpbGVOYW1lKCk7Cit9CisKK1N0cmluZyBkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gUUZpbGVJbmZvKHBhdGgpLmFi
c29sdXRlUGF0aCgpOworfQorCitWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllczsKKworICAgIFFTdHJpbmdMaXN0IG5hbWVGaWx0ZXJzOworICAgIGlmICghZmlsdGVy
LmlzRW1wdHkoKSkKKyAgICAgICAgbmFtZUZpbHRlcnMuYXBwZW5kKGZpbHRlcik7CisgICAgUUZp
bGVJbmZvTGlzdCBmaWxlSW5mb0xpc3QgPSBRRGlyKHBhdGgpLmVudHJ5SW5mb0xpc3QobmFtZUZp
bHRlcnMsIFFEaXI6OkFsbEVudHJpZXMgfCBRRGlyOjpOb0RvdEFuZERvdERvdCk7CisgICAgZm9y
ZWFjaCAoY29uc3QgUUZpbGVJbmZvIGZpbGVJbmZvLCBmaWxlSW5mb0xpc3QpIHsKKyAgICAgICAg
U3RyaW5nIGVudHJ5ID0gU3RyaW5nKGZpbGVJbmZvLmNhbm9uaWNhbEZpbGVQYXRoKCkpOworICAg
ICAgICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgfQorCisgICAgcmV0dXJuIGVudHJpZXM7
Cit9CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit7CisjaWZuZGVmIFFUX05PX1RFTVBPUkFSWUZJTEUK
KyAgICBRVGVtcG9yYXJ5RmlsZSogdGVtcEZpbGUgPSBuZXcgUVRlbXBvcmFyeUZpbGUoUURpcjo6
dGVtcFBhdGgoKSArIFFMYXRpbjFDaGFyKCcvJykgKyBRU3RyaW5nKHByZWZpeCkpOworICAgIHRl
bXBGaWxlLT5zZXRBdXRvUmVtb3ZlKGZhbHNlKTsKKyAgICBRRmlsZSogdGVtcCA9IHRlbXBGaWxl
OworICAgIGlmICh0ZW1wLT5vcGVuKFFJT0RldmljZTo6UmVhZFdyaXRlKSkgeworICAgICAgICBo
YW5kbGUgPSB0ZW1wOworICAgICAgICByZXR1cm4gdGVtcC0+ZmlsZU5hbWUoKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCit7CisgICAgUUlPRGV2aWNlOjpPcGVuTW9kZSBw
bGF0Zm9ybU1vZGU7CisKKyAgICBpZiAobW9kZSA9PSBPcGVuRm9yUmVhZCkKKyAgICAgICAgcGxh
dGZvcm1Nb2RlID0gUUlPRGV2aWNlOjpSZWFkT25seTsKKyAgICBlbHNlIGlmIChtb2RlID09IE9w
ZW5Gb3JXcml0ZSkKKyAgICAgICAgcGxhdGZvcm1Nb2RlID0gKFFJT0RldmljZTo6V3JpdGVPbmx5
IHwgUUlPRGV2aWNlOjpUcnVuY2F0ZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZTsKKworICAgIFFGaWxlKiBmaWxlID0gbmV3IFFGaWxlKHBhdGgp
OworICAgIGlmIChmaWxlLT5vcGVuKHBsYXRmb3JtTW9kZSkpCisgICAgICAgIHJldHVybiBmaWxl
OworCisgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cit9CisKK2ludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK3sKKyAgICBpZiAoaGFuZGxlICYmIGhhbmRsZS0+ZXhpc3RzKCkgJiYgaGFuZGxlLT5pc1Jl
YWRhYmxlKCkpCisgICAgICAgIHJldHVybiBoYW5kbGUtPnJlYWQoZGF0YSwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpCit7CisgICAgaWYgKGhhbmRsZSkgeworICAgICAgICBoYW5kbGUtPmNsb3NlKCk7CisgICAg
ICAgIGRlbGV0ZSBoYW5kbGU7CisgICAgfQorfQorCitsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3Jp
Z2luKQoreworICAgIGlmIChoYW5kbGUpIHsKKyAgICAgICAgbG9uZyBsb25nIGN1cnJlbnQgPSAw
OworCisgICAgICAgIHN3aXRjaCAob3JpZ2luKSB7CisgICAgICAgIGNhc2UgU2Vla0Zyb21CZWdp
bm5pbmc6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWVrRnJvbUN1cnJlbnQ6
CisgICAgICAgICAgICBjdXJyZW50ID0gaGFuZGxlLT5wb3MoKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNlZWtGcm9tRW5kOgorICAgICAgICAgICAgY3VycmVudCA9IGhhbmRs
ZS0+c2l6ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBB
ZGQgdGhlIG9mZnNldCB0byB0aGUgY3VycmVudCBwb3NpdGlvbiBhbmQgc2VlayB0byB0aGUgbmV3
IHBvc2l0aW9uCisgICAgICAgIC8vIFJldHVybiBvdXIgbmV3IHBvc2l0aW9uIGlmIHRoZSBzZWVr
IGlzIHN1Y2Nlc3NmdWwKKyAgICAgICAgY3VycmVudCArPSBvZmZzZXQ7CisgICAgICAgIGlmICho
YW5kbGUtPnNlZWsoY3VycmVudCkpCisgICAgICAgICAgICByZXR1cm4gY3VycmVudDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAtMTsK
K30KKwordWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgp
Cit7CisjaWYgZGVmaW5lZChRX09TX1dJTikKKyAgICBVTEFSR0VfSU5URUdFUiBmcmVlQnl0ZXNU
b0NhbGxlcjsKKyAgICBCT09MIHJlc3VsdCA9IEdldERpc2tGcmVlU3BhY2VFeFcoKExQQ1dTVFIp
cGF0aCwgJmZyZWVCeXRlc1RvQ2FsbGVyLCAwLCAwKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihmcmVlQnl0ZXNU
b0NhbGxlci5RdWFkUGFydCk7CisjZWxzZQorICAgIHN0cnVjdCBzdGF0dmZzIHZvbHVtZUluZm87
CisgICAgaWYgKHN0YXR2ZnMocGF0aCwgJnZvbHVtZUluZm8pKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4odm9sdW1lSW5mby5mX2JhdmFpbCkg
KiBzdGF0aWNfY2FzdDx1aW50NjRfdD4odm9sdW1lSW5mby5mX2Zyc2l6ZSk7CisjZW5kaWYKK30K
KworCitpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAoaGFuZGxlICYmIGhhbmRsZS0+ZXhpc3Rz
KCkgJiYgaGFuZGxlLT5pc1dyaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBoYW5kbGUtPndyaXRl
KGRhdGEsIGxlbmd0aCk7CisKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCB1bmxvYWRNb2R1bGUo
UGxhdGZvcm1Nb2R1bGUgbW9kdWxlKQoreworI2lmIGRlZmluZWQoUV9XU19NQUMpCisgICAgQ0ZS
ZWxlYXNlKG1vZHVsZSk7CisgICAgcmV0dXJuIHRydWU7CisKKyNlbGlmIGRlZmluZWQoUV9PU19X
SU4pCisgICAgcmV0dXJuIDo6RnJlZUxpYnJhcnkobW9kdWxlKTsKKworI2Vsc2UKKyNpZm5kZWYg
UVRfTk9fTElCUkFSWQorICAgIGlmIChtb2R1bGUtPnVubG9hZCgpKSB7CisgICAgICAgIGRlbGV0
ZSBtb2R1bGU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCit9CisKKy8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9HYW1lcGFkc1F0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0dhbWVwYWRzUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmRjNGYxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9HYW1lcGFkc1F0LmNwcApAQCAtMCwwICsxLDIyNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRz
LmgiCisKKyNpbmNsdWRlICJHYW1lcGFkRGV2aWNlTGludXguaCIKKyNpbmNsdWRlICJHYW1lcGFk
TGlzdC5oIgorCisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+
CisKK2V4dGVybiAiQyIgeworI2luY2x1ZGUgPGxpYnVkZXYuaD4KK30KKworI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVwYWREZXZp
Y2VMaW51eFF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBHYW1lcGFkRGV2aWNlTGludXggewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2FtZXBhZERldmlj
ZUxpbnV4UXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUZpbGUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVwYWREZXZpY2VMaW51eFF0KGRldmljZUZpbGUpKTsK
KyAgICB9CisgICAgfkdhbWVwYWREZXZpY2VMaW51eFF0KCk7CisKK3ByaXZhdGU6CisgICAgR2Ft
ZXBhZERldmljZUxpbnV4UXQoY29uc3QgU3RyaW5nJik7CisgICAgUVNvY2tldE5vdGlmaWVyKiBt
X25vdGlmaWVyOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgYm9vbCByZWFkQ2FsbGJhY2soKTsK
K307CisKK0dhbWVwYWREZXZpY2VMaW51eFF0OjpHYW1lcGFkRGV2aWNlTGludXhRdChjb25zdCBT
dHJpbmcmIGRldmljZUZpbGUpCisgICAgOiBRT2JqZWN0KCkKKyAgICAsIEdhbWVwYWREZXZpY2VM
aW51eChkZXZpY2VGaWxlKQoreworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX25vdGlmaWVyID0gbmV3IFFTb2NrZXROb3RpZmllcihtX2Zp
bGVEZXNjcmlwdG9yLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQsIHRoaXMpOworICAgIGNvbm5lY3Qo
bV9ub3RpZmllciwgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChyZWFkQ2FsbGJh
Y2soKSkpOworfQorCitHYW1lcGFkRGV2aWNlTGludXhRdDo6fkdhbWVwYWREZXZpY2VMaW51eFF0
KCkKK3sKK30KKworYm9vbCBHYW1lcGFkRGV2aWNlTGludXhRdDo6cmVhZENhbGxiYWNrKCkKK3sK
KyAgICBqc19ldmVudCBldmVudDsKKyAgICBpbnQgbGVuID0gcmVhZChtX2ZpbGVEZXNjcmlwdG9y
LCAmZXZlbnQsIHNpemVvZihqc19ldmVudCkpOworICAgIGlmIChsZW4gIT0gc2l6ZW9mKGV2ZW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVwZGF0ZUZvckV2ZW50KGV2ZW50KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworY2xhc3MgR2FtZXBhZHNRdCA6IHB1YmxpYyBRT2JqZWN0IHsK
KyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEdhbWVwYWRzUXQodW5zaWduZWQpOworCisgICAg
dm9pZCByZWdpc3RlckRldmljZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJE
ZXZpY2UoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVw
YWRMaXN0Kik7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIG9uR2FtZVBhZENoYW5nZSgp
OworCitwcml2YXRlOgorICAgIH5HYW1lcGFkc1F0KCk7CisgICAgYm9vbCBpc0dhbWVwYWREZXZp
Y2Uoc3RydWN0IHVkZXZfZGV2aWNlKik7CisKKyAgICBWZWN0b3I8T3duUHRyPEdhbWVwYWREZXZp
Y2VMaW51eFF0PiA+IG1fc2xvdHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEdhbWVwYWREZXZpY2VM
aW51eFF0Kj4gbV9kZXZpY2VNYXA7CisKKyAgICBzdHJ1Y3QgdWRldiogbV91ZGV2OworICAgIHN0
cnVjdCB1ZGV2X21vbml0b3IqIG1fZ2FtZXBhZHNNb25pdG9yOworICAgIFFTb2NrZXROb3RpZmll
ciogbV9nYW1lcGFkc05vdGlmaWVyOworfTsKKworR2FtZXBhZHNRdDo6R2FtZXBhZHNRdCh1bnNp
Z25lZCBsZW5ndGgpCisgICAgOiBRT2JqZWN0KCkKKyAgICAsIG1fc2xvdHMobGVuZ3RoKQorewor
ICAgIG1fdWRldiA9IHVkZXZfbmV3KCk7CisgICAgbV9nYW1lcGFkc01vbml0b3IgPSB1ZGV2X21v
bml0b3JfbmV3X2Zyb21fbmV0bGluayhtX3VkZXYsICJ1ZGV2Iik7CisgICAgdWRldl9tb25pdG9y
X2VuYWJsZV9yZWNlaXZpbmcobV9nYW1lcGFkc01vbml0b3IpOworICAgIHVkZXZfbW9uaXRvcl9m
aWx0ZXJfYWRkX21hdGNoX3N1YnN5c3RlbV9kZXZ0eXBlKG1fZ2FtZXBhZHNNb25pdG9yLCAiaW5w
dXQiLCAwKTsKKyAgICBtX2dhbWVwYWRzTm90aWZpZXIgPSBuZXcgUVNvY2tldE5vdGlmaWVyKHVk
ZXZfbW9uaXRvcl9nZXRfZmQobV9nYW1lcGFkc01vbml0b3IpLCBRU29ja2V0Tm90aWZpZXI6OlJl
YWQsIHRoaXMpOworICAgIGNvbm5lY3QobV9nYW1lcGFkc05vdGlmaWVyLCBTSUdOQUwoYWN0aXZh
dGVkKGludCkpLCB0aGlzLCBTTE9UKG9uR2FtZVBhZENoYW5nZSgpKSk7CisKKyAgICBzdHJ1Y3Qg
dWRldl9lbnVtZXJhdGUqIGVudW1lcmF0ZSA9IHVkZXZfZW51bWVyYXRlX25ldyhtX3VkZXYpOwor
ICAgIHVkZXZfZW51bWVyYXRlX2FkZF9tYXRjaF9zdWJzeXN0ZW0oZW51bWVyYXRlLCAiaW5wdXQi
KTsKKyAgICB1ZGV2X2VudW1lcmF0ZV9hZGRfbWF0Y2hfcHJvcGVydHkoZW51bWVyYXRlLCAiSURf
SU5QVVRfSk9ZU1RJQ0siLCAiMSIpOworICAgIHVkZXZfZW51bWVyYXRlX3NjYW5fZGV2aWNlcyhl
bnVtZXJhdGUpOworICAgIHN0cnVjdCB1ZGV2X2xpc3RfZW50cnkqIGN1cjsKKyAgICBzdHJ1Y3Qg
dWRldl9saXN0X2VudHJ5KiBkZXZzID0gdWRldl9lbnVtZXJhdGVfZ2V0X2xpc3RfZW50cnkoZW51
bWVyYXRlKTsKKyAgICB1ZGV2X2xpc3RfZW50cnlfZm9yZWFjaChjdXIsIGRldnMpCisgICAgewor
ICAgICAgICBjb25zdCBjaGFyKiBkZXZuYW1lID0gdWRldl9saXN0X2VudHJ5X2dldF9uYW1lKGN1
cik7CisgICAgICAgIHN0cnVjdCB1ZGV2X2RldmljZSogZGV2aWNlID0gdWRldl9kZXZpY2VfbmV3
X2Zyb21fc3lzcGF0aChtX3VkZXYsIGRldm5hbWUpOworICAgICAgICBpZiAoaXNHYW1lcGFkRGV2
aWNlKGRldmljZSkpCisgICAgICAgICAgICByZWdpc3RlckRldmljZShTdHJpbmc6OmZyb21VVEY4
KHVkZXZfZGV2aWNlX2dldF9kZXZub2RlKGRldmljZSkpKTsKKyAgICAgICAgdWRldl9kZXZpY2Vf
dW5yZWYoZGV2aWNlKTsKKyAgICB9CisgICAgdWRldl9lbnVtZXJhdGVfdW5yZWYoZW51bWVyYXRl
KTsKK30KKworR2FtZXBhZHNRdDo6fkdhbWVwYWRzUXQoKQoreworICAgIHVkZXZfdW5yZWYobV91
ZGV2KTsKKyAgICB1ZGV2X21vbml0b3JfdW5yZWYobV9nYW1lcGFkc01vbml0b3IpOworfQorCiti
b29sIEdhbWVwYWRzUXQ6OmlzR2FtZXBhZERldmljZShzdHJ1Y3QgdWRldl9kZXZpY2UqIGRldmlj
ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBkZXZpY2VGaWxlID0gdWRldl9kZXZpY2VfZ2V0X2Rldm5v
ZGUoZGV2aWNlKTsKKyAgICBjb25zdCBjaGFyKiBzeXNmc1BhdGggPSB1ZGV2X2RldmljZV9nZXRf
c3lzcGF0aChkZXZpY2UpOworICAgIGlmICghZGV2aWNlRmlsZSB8fCAhc3lzZnNQYXRoKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFs
dWUoZGV2aWNlLCAiSURfSU5QVVQiKSB8fCAhdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVl
KGRldmljZSwgIklEX0lOUFVUX0pPWVNUSUNLIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gUUJ5dGVBcnJheShkZXZpY2VGaWxlKS5zdGFydHNXaXRoKCIvZGV2L2lucHV0L2pz
Iik7Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6b25HYW1lUGFkQ2hhbmdlKCkKK3sKKyAgICBzdHJ1
Y3QgdWRldl9kZXZpY2UqIGRldmljZSA9IHVkZXZfbW9uaXRvcl9yZWNlaXZlX2RldmljZShtX2dh
bWVwYWRzTW9uaXRvcik7CisgICAgaWYgKCFpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFFCeXRlQXJyYXkgYWN0aW9uKHVkZXZfZGV2aWNlX2dldF9hY3Rpb24o
ZGV2aWNlKSk7CisgICAgaWYgKGFjdGlvbiA9PSAiYWRkIikKKyAgICAgICAgcmVnaXN0ZXJEZXZp
Y2UodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSk7CisgICAgZWxzZSBpZiAoYWN0aW9u
ID09ICJyZW1vdmUiKQorICAgICAgICB1bnJlZ2lzdGVyRGV2aWNlKHVkZXZfZGV2aWNlX2dldF9k
ZXZub2RlKGRldmljZSkpOworfQorCit2b2lkIEdhbWVwYWRzUXQ6OnJlZ2lzdGVyRGV2aWNlKGNv
bnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQoIW1fZGV2aWNlTWFwLmNvbnRh
aW5zKGRldmljZUZpbGUpKTsKKworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IG1fc2xvdHMuc2l6ZSgpOyBpbmRleCsrKSB7CisgICAgICAgIGlmICghbV9zbG90c1tpbmRleF0p
IHsKKyAgICAgICAgICAgIG1fc2xvdHNbaW5kZXhdID0gR2FtZXBhZERldmljZUxpbnV4UXQ6OmNy
ZWF0ZShkZXZpY2VGaWxlKTsKKyAgICAgICAgICAgIG1fZGV2aWNlTWFwLmFkZChkZXZpY2VGaWxl
LCBtX3Nsb3RzW2luZGV4XS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQobV9kZXZpY2VNYXAuY29udGFpbnMoZGV2aWNl
RmlsZSkpOworCisgICAgR2FtZXBhZERldmljZUxpbnV4UXQqIGdhbWVwYWREZXZpY2UgPSBtX2Rl
dmljZU1hcC50YWtlKGRldmljZUZpbGUpOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9zbG90cy5m
aW5kKGdhbWVwYWREZXZpY2UpOworCisgICAgbV9zbG90c1tpbmRleF0uY2xlYXIoKTsKK30KKwor
dm9pZCBHYW1lcGFkc1F0Ojp1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCogaW50bykKK3sK
KyAgICBBU1NFUlQobV9zbG90cy5zaXplKCkgPT0gaW50by0+bGVuZ3RoKCkpOworCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2xvdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYg
KG1fc2xvdHNbaV0gJiYgbV9zbG90c1tpXS0+Y29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAgIEdh
bWVwYWREZXZpY2VMaW51eFF0KiBnYW1lcGFkRGV2aWNlID0gbV9zbG90c1tpXS5nZXQoKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gaW50by0+aXRlbShpKTsKKyAgICAg
ICAgICAgIGlmICghZ2FtZXBhZCkKKyAgICAgICAgICAgICAgICBnYW1lcGFkID0gR2FtZXBhZDo6
Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOworICAgICAgICAgICAg
Z2FtZXBhZC0+aWQoZ2FtZXBhZERldmljZS0+aWQoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT50
aW1lc3RhbXAoZ2FtZXBhZERldmljZS0+dGltZXN0YW1wKCkpOworICAgICAgICAgICAgZ2FtZXBh
ZC0+YXhlcyhnYW1lcGFkRGV2aWNlLT5heGVzQ291bnQoKSwgZ2FtZXBhZERldmljZS0+YXhlc0Rh
dGEoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT5idXR0b25zKGdhbWVwYWREZXZpY2UtPmJ1dHRv
bnNDb3VudCgpLCBnYW1lcGFkRGV2aWNlLT5idXR0b25zRGF0YSgpKTsKKworICAgICAgICAgICAg
aW50by0+c2V0KGksIGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGludG8t
PnNldChpLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExpc3Qq
IGludG8pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChHYW1lcGFkc1F0LCBnYW1lcGFkc1F0
LCAoaW50by0+bGVuZ3RoKCkpKTsKKyAgICBnYW1lcGFkc1F0LnVwZGF0ZUdhbWVwYWRMaXN0KGlu
dG8pOworfQorCisjaW5jbHVkZSAiR2FtZXBhZHNRdC5tb2MiCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IyZmEzZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwCkBAIC0wLDAgKzEsNDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNu
b2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ikxhbmd1YWdlLmgiCisKKyNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQoreworICAgIFFMb2NhbGUgbG9j
YWxlOworICAgIHJldHVybiBsb2NhbGUubmFtZSgpLnJlcGxhY2UoUUxhdGluMUNoYXIoJ18nKSwg
UUxhdGluMUNoYXIoJy0nKSk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1
YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdl
KCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6ZWRTdHJpbmdzUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemVkU3RyaW5nc1F0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWZlZTIwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9jYWxpemVkU3RyaW5nc1F0LmNwcApAQCAtMCww
ICsxLDgwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuIDxpbmZvQHN0YWlrb3MubmV0PgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5o
IgorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1N0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTdWJtaXQiLCAiU3VibWl0IChpbnB1dCBlbGVt
ZW50KSBhbHQgdGV4dCBmb3IgPGlucHV0PiBlbGVtZW50cyB3aXRoIG5vIGFsdCwgdGl0bGUsIG9y
IHZhbHVlIik7Cit9CisKK1N0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7CisgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVzZXQiLCAi
ZGVmYXVsdCBsYWJlbCBmb3IgUmVzZXQgYnV0dG9ucyBpbiBmb3JtcyBvbiB3ZWIgcGFnZXMiKTsK
K30KKworU3RyaW5nIHNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpCit7CisgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVGhpcyBpcyBhIHNlYXJj
aGFibGUgaW5kZXguIEVudGVyIHNlYXJjaCBrZXl3b3JkczogIiwgInRleHQgdGhhdCBhcHBlYXJz
IGF0IHRoZSBzdGFydCBvZiBuZWFybHktb2Jzb2xldGUgd2ViIHBhZ2VzIGluIHRoZSBmb3JtIG9m
IGEgJ3NlYXJjaGFibGUgaW5kZXgnIik7Cit9CisKK1N0cmluZyBzdWJtaXRCdXR0b25EZWZhdWx0
TGFiZWwoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIlN1Ym1pdCIsICJkZWZhdWx0IGxhYmVsIGZvciBTdWJtaXQgYnV0dG9ucyBpbiBmb3Jt
cyBvbiB3ZWIgcGFnZXMiKTsKK30KKworU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwo
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkNob29zZSBGaWxlIiwgInRpdGxlIGZvciBhIHNpbmdsZSBmaWxlIGNob29zZXIgYnV0dG9uIHVz
ZWQgaW4gSFRNTCBmb3JtcyIpOworfQorCitTdHJpbmcgZmlsZUJ1dHRvbkNob29zZU11bHRpcGxl
RmlsZXNMYWJlbCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiQ2hvb3NlIEZpbGVzIiwgInRpdGxlIGZvciBhIG11bHRpcGxlIGZpbGUgY2hv
b3NlciBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zLiBUaGlzIHRpdGxlIHNob3VsZCBiZSBhcyBz
aG9ydCBhcyBwb3NzaWJsZS4iKTsKK30KKworU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3Rl
ZExhYmVsKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICJObyBmaWxlIHNlbGVjdGVkIiwgInRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRv
biB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBubyBmaWxlIGlzIHNlbGVjdGVkIik7Cit9CisKK1N0
cmluZyBmaWxlQnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKQoreworICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk5vIGZpbGVzIHNlbGVjdGVkIiwg
InRleHQgdG8gZGlzcGxheSBpbiBmaWxlIGJ1dHRvbiB1c2VkIGluIEhUTUwgZm9ybXMgd2hlbiBu
byBmaWxlcyBhcmUgc2VsZWN0ZWQgYW5kIHRoZSBidXR0b24gYWxsb3dzIG11bHRpcGxlIGZpbGVz
IHRvIGJlIHNlbGVjdGVkIik7Cit9CisKK1N0cmluZyBkZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0
KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJEZXRhaWxzIiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0YWlscz4gdGFnIHdoZW4gaXQgaGFz
IG5vIDxzdW1tYXJ5PiBjaGlsZCIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Bl
bkxpbmtJbk5ld1dpbmRvdygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBpbiBOZXcgV2luZG93IiwgIk9wZW4gaW4gTmV3IFdpbmRv
dyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Bl
bkxpbmtJblRoaXNXaW5kb3coKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIk9wZW4gaW4gVGhpcyBXaW5kb3ciLCAiT3BlbiBpbiBUaGlzIFdp
bmRvdyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRMaW5rVG9EaXNrKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJTYXZlIExpbmsuLi4iLCAiRG93bmxvYWQgTGlua2VkIEZpbGUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlM
aW5rVG9DbGlwYm9hcmQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIkNvcHkgTGluayIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCkK
K3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJP
cGVuIEltYWdlIiwgIk9wZW4gSW1hZ2UgaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpCit7
CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2F2
ZSBJbWFnZSIsICJEb3dubG9hZCBJbWFnZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKQoreworICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNvcHkgSW1hZ2UiLCAi
Q29weSBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ29weSBJbWFnZSBBZGRyZXNzIiwgIkNvcHkg
SW1hZ2UgQWRkcmVzcyBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5WaWRlb0luTmV3V2luZG93KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJPcGVuIFZpZGVvIiwgIk9wZW4gVmlkZW8gaW4gTmV3IFdp
bmRvdyIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5k
b3coKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIk9wZW4gQXVkaW8iLCAiT3BlbiBBdWRpbyBpbiBOZXcgV2luZG93Iik7Cit9CisKK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZFZpZGVvVG9EaXNrKCkKK3sKKyAgICByZXR1cm4g
UUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJEb3dubG9hZCBWaWRlbyIs
ICJEb3dubG9hZCBWaWRlbyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRBdWRpb1RvRGlzaygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBw
bGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRG93bmxvYWQgQXVkaW8iLCAiRG93bmxv
YWQgQXVkaW8gY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ29weSBWaWRlbyIsICJDb3B5IFZpZGVvIExp
bmsgTG9jYXRpb24iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xp
bmtUb0NsaXBib2FyZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiQ29weSBBdWRpbyIsICJDb3B5IEF1ZGlvIExpbmsgTG9jYXRpb24iKTsK
K30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKQorewor
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlRvZ2ds
ZSBDb250cm9scyIsICJUb2dnbGUgTWVkaWEgQ29udHJvbHMiKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1Nob3dNZWRpYUNvbnRyb2xzKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTaG93IENvbnRyb2xzIiwgIlNob3cgTWVk
aWEgQ29udHJvbHMiKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0hpZGVNZWRpYUNv
bnRyb2xzKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2Vi
UGFnZSIsICJIaWRlIENvbnRyb2xzIiwgIkhpZGUgTWVkaWEgQ29udHJvbHMiKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVG9nZ2xlIExvb3AiLCAiVG9n
Z2xlIE1lZGlhIExvb3AgUGxheWJhY2siKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0VudGVyVmlkZW9GdWxsc2NyZWVuKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJFbnRlciBGdWxsc2NyZWVuIiwgIlN3aXRjaCBWaWRlbyB0
byBGdWxsc2NyZWVuIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXko
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IlBsYXkiLCAiUGxheSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVz
ZSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2Ui
LCAiUGF1c2UiLCAiUGF1c2UiKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlh
TXV0ZSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiTXV0ZSIsICJNdXRlIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
RnJhbWVJbk5ld1dpbmRvdygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiT3BlbiBGcmFtZSIsICJPcGVuIEZyYW1lIGluIE5ldyBXaW5kb3cg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHko
KQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkNvcHkiLCAiQ29weSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnR29CYWNrKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJHbyBCYWNrIiwgIkJhY2sgY29udGV4dCBtZW51IGl0ZW0iKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiR28gRm9yd2FyZCIsICJGb3J3
YXJkIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
dG9wKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJTdG9wIiwgIlN0b3AgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1JlbG9hZCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVsb2FkIiwgIlJlbG9hZCBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKK3sKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDdXQiLCAiQ3V0IGNvbnRleHQg
bWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpCit7Cisg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUGFzdGUi
LCAiUGFzdGUgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1NlbGVjdEFsbCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiU2VsZWN0IEFsbCIsICJTZWxlY3QgQWxsIGNvbnRleHQgbWVudSBpdGVt
Iik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCit7Cisg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTm8gR3Vl
c3NlcyBGb3VuZCIsICJObyBHdWVzc2VzIEZvdW5kIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisK
K1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCit7CisgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSWdub3JlIiwgIklnbm9y
ZSBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTGVhcm5TcGVsbGluZygpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQWRkIFRvIERpY3Rpb25hcnkiLCAiTGVhcm4gU3BlbGxpbmcg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJj
aFdlYigpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiU2VhcmNoIFRoZSBXZWIiLCAiU2VhcmNoIFRoZSBXZWIgY29udGV4dCBtZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25z
dCBTdHJpbmcmKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIkxvb2sgVXAgSW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25hcnkg
Y29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5M
aW5rKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJPcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKK3sKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJJZ25vcmUiLCAiSWdub3JlIEdy
YW1tYXIgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1NwZWxsaW5nTWVudSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYlBhZ2UiLCAiU3BlbGxpbmciLCAiU3BlbGxpbmcgYW5kIEdyYW1tYXIgY29udGV4dCBz
dWItbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxp
bmdQYW5lbChib29sIHNob3cpCit7CisgICAgcmV0dXJuIHNob3cgPyBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVu
dSBpdGVtIHRpdGxlIikgOgorICAgICAgICAgICAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJIaWRlIFNwZWxsaW5nIGFuZCBHcmFtbWFyIiwgIm1lbnUgaXRl
bSB0aXRsZSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygp
Cit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAi
Q2hlY2sgU3BlbGxpbmciLCAiQ2hlY2sgc3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCit7
CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ2hl
Y2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5nIHdoaWxlIHR5cGluZyBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tH
cmFtbWFyV2l0aFNwZWxsaW5nKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJDaGVjayBHcmFtbWFyIFdpdGggU3BlbGxpbmciLCAiQ2hlY2sg
Z3JhbW1hciB3aXRoIHNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRm9udHMiLCAiRm9udCBjb250ZXh0IHN1Yi1tZW51
IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKQoreworICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkJvbGQiLCAiQm9s
ZCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRh
bGljKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJJdGFsaWMiLCAiSXRhbGljIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVuZGVybGluZSIsICJVbmRlcmxpbmUgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKQor
eworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk91
dGxpbmUiLCAiT3V0bGluZSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQoreworICAgIHJldHVybiBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkRpcmVjdGlvbiIsICJXcml0aW5nIGRp
cmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJUZXh0IERpcmVjdGlvbiIsICJUZXh0IGRpcmVjdGlv
biBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0RlZmF1bHREaXJlY3Rpb24oKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIkRlZmF1bHQiLCAiRGVmYXVsdCB3cml0aW5nIGRpcmVjdGlvbiBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRv
UmlnaHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRlbSIp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQoreworICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJpZ2h0IHRvIExl
ZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkluc3BlY3QiLCAiSW5zcGVjdCBFbGVtZW50
IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFy
Y2hlc1RleHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFX
ZWJQYWdlIiwgIk5vIHJlY2VudCBzZWFyY2hlcyIsICJMYWJlbCBmb3Igb25seSBpdGVtIGluIG1l
bnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNlYXJjaCBmaWVsZCBpbWFnZSwg
d2hlbiBubyBzZWFyY2hlcyBoYXZlIGJlZW4gcGVyZm9ybWVkIik7Cit9CisKK1N0cmluZyBzZWFy
Y2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZWNlbnQgc2VhcmNoZXMiLCAibGFiZWwgZm9yIGZp
cnN0IGl0ZW0gaW4gdGhlIG1lbnUgdGhhdCBhcHBlYXJzIHdoZW4gY2xpY2tpbmcgb24gdGhlIHNl
YXJjaCBmaWVsZCBpbWFnZSwgdXNlZCBhcyBlbWJlZGRlZCBtZW51IHRpdGxlIik7Cit9CisKK1N0
cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkNsZWFyIHJlY2VudCBzZWFy
Y2hlcyIsICJtZW51IGl0ZW0gaW4gUmVjZW50IFNlYXJjaGVzIG1lbnUgdGhhdCBlbXB0aWVzIG1l
bnUncyBjb250ZW50cyIpOworfQorCitTdHJpbmcgQVhXZWJBcmVhVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWExpbmtU
ZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIEFYTGlzdE1hcmtlclRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhJbWFnZU1hcFRleHQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhI
ZWFkaW5nVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBBWERlZmluaXRpb25UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYRGVzY3JpcHRpb25MaXN0
VGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBBWERlc2NyaXB0aW9uTGlzdFRlcm1UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYRGVzY3JpcHRpb25M
aXN0RGV0YWlsVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBBWFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uVGV4dCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBB
WEJ1dHRvbkFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhU
ZXh0RmllbGRBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVy
YigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYTGlua0FjdGlvblZlcmIo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9u
Ojp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIk1pc3NpbmcgUGx1Zy1pbiIsICJMYWJlbCB0ZXh0IHRv
IGJlIHVzZWQgd2hlbiBhIHBsdWctaW4gaXMgbWlzc2luZyIpOworfQorCitTdHJpbmcgY3Jhc2hl
ZFBsdWdpblRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgYmxvY2tlZFBsdWdpbkJ5Q29udGVudFNlY3VyaXR5UG9saWN5VGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBpbnNlY3VyZVBsdWdpblZlcnNpb25UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGluYWN0aXZlUGx1Z2luVGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdW5rbm93bkZpbGVT
aXplVGV4dCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiVW5rbm93biIsICJVbmtub3duIGZpbGVzaXplIEZUUCBkaXJlY3RvcnkgbGlzdGlu
ZyBpdGVtIik7Cit9CisKK1N0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiJTEgKCUyeCUzIHBpeGVscykiLCAiVGl0bGUgc3RyaW5nIGZv
ciBpbWFnZXMiKS5hcmcoZmlsZW5hbWUpLmFyZyhzaXplLndpZHRoKCkpLmFyZyhzaXplLmhlaWdo
dCgpKTsKK30KKworU3RyaW5nIG1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQoreworICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkxvYWRpbmcu
Li4iLCAiTWVkaWEgY29udHJvbGxlciBzdGF0dXMgbWVzc2FnZSB3aGVuIHRoZSBtZWRpYSBpcyBs
b2FkaW5nIik7Cit9CisKK1N0cmluZyBtZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0
KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJMaXZlIEJyb2FkY2FzdCIsICJNZWRpYSBjb250cm9sbGVyIHN0YXR1cyBtZXNzYWdlIHdoZW4g
d2F0Y2hpbmcgYSBsaXZlIGJyb2FkY2FzdCIpOworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitT
dHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkF1ZGlvIEVsZW1lbnQiLCAi
TWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVu
dCIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIlZpZGVvIEVsZW1lbnQiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYg
KG5hbWUgPT0gIk11dGVCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6
dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNdXRlIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVs
ZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiVW5tdXRlIEJ1dHRvbiIs
ICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRv
biIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIlBsYXkgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChu
YW1lID09ICJQYXVzZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0
cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBhdXNlIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVs
ZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJuIFFDb3Jl
QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2xpZGVyIiwgIk1lZGlhIGNvbnRy
b2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCisgICAgICAg
IHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlNsaWRlciBU
aHVtYiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUmV3
aW5kQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi
UVdlYlBhZ2UiLCAiUmV3aW5kIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsK
KyAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1dHRvbiIpCisgICAgICAgIHJldHVy
biBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlJldHVybiB0byBSZWFs
LXRpbWUgQnV0dG9uIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1l
ID09ICJDdXJyZW50VGltZURpc3BsYXkiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJFbGFwc2VkIFRpbWUiLCAiTWVkaWEgY29udHJvbGxl
ciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5IikKKyAg
ICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmVt
YWluaW5nIFRpbWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUg
PT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJTdGF0dXMgRGlzcGxheSIsICJNZWRpYSBjb250cm9sbGVyIGVs
ZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiRW50ZXJGdWxsc2NyZWVuQnV0dG9uIikKKyAgICAg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiRW50ZXJG
dWxsc2NyZWVuIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAo
bmFtZSA9PSAiRXhpdEZ1bGxzY3JlZW5CdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJFeGl0RnVsbHNjcmVlbiBCdXR0b24iLCAi
TWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJk
QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdl
YlBhZ2UiLCAiU2VlayBGb3J3YXJkIEJ1dHRvbiIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQi
KTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0JhY2tCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTZWVrIEJhY2sgQnV0dG9uIiwg
Ik1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikKKyAgICAgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQXVkaW8gZWxlbWVu
dCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3BsYXkiLCAiTWVkaWEgY29udHJvbGxl
ciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVudCIpCisgICAgICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlZpZGVvIGVsZW1l
bnQgcGxheWJhY2sgY29udHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5IiwgIk1lZGlhIGNvbnRyb2xs
ZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJNdXRlQnV0dG9uIikKKyAgICAgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTXV0ZSBhdWRpbyB0
cmFja3MiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlVu
TXV0ZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlVubXV0ZSBhdWRpbyB0cmFja3MiLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJCZWdpbiBwbGF5YmFjayIsICJN
ZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24i
KQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJQYXVzZSBwbGF5YmFjayIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAo
bmFtZSA9PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiTW92aWUgdGltZSBzY3J1YmJlciIsICJNZWRpYSBjb250cm9sbGVy
IGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICByZXR1
cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJNb3ZpZSB0aW1lIHNj
cnViYmVyIHRodW1iIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1l
ID09ICJSZXdpbmRCdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJSZXdpbmQgbW92aWUiLCAiTWVkaWEgY29udHJvbGxlciBlbGVt
ZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQorICAgICAg
ICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJSZXR1cm4g
c3RyZWFtaW5nIG1vdmllIHRvIHJlYWwtdGltZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQi
KTsKKyAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3VycmVudCBtb3ZpZSB0
aW1lIiwgIk1lZGlhIGNvbnRyb2xsZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJUaW1l
UmVtYWluaW5nRGlzcGxheSIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFu
c2xhdGUoIlFXZWJQYWdlIiwgIlJlbWFpbmluZyBtb3ZpZSB0aW1lIiwgIk1lZGlhIGNvbnRyb2xs
ZXIgZWxlbWVudCIpOworICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKKyAgICAgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiQ3VycmVudCBt
b3ZpZSBzdGF0dXMiLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUg
PT0gIkVudGVyRnVsbHNjcmVlbkJ1dHRvbiIpCisgICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0
aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlBsYXkgbW92aWUgaW4gZnVsbC1zY3JlZW4gbW9k
ZSIsICJNZWRpYSBjb250cm9sbGVyIGVsZW1lbnQiKTsKKyAgICBpZiAobmFtZSA9PSAiRXhpdEZ1
bGxzY3JlZW5CdXR0b24iKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJFeGl0IGZ1bGwtc2NyZWVuIG1vZGUiLCAiTWVkaWEgY29udHJvbGxl
ciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKKyAgICAg
ICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VlayBx
dWlja2x5IGJhY2siLCAiTWVkaWEgY29udHJvbGxlciBlbGVtZW50Iik7CisgICAgaWYgKG5hbWUg
PT0gIlNlZWtCYWNrQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2VlayBxdWlja2x5IGZvcndhcmQiLCAiTWVkaWEgY29udHJv
bGxlciBlbGVtZW50Iik7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9h
dCB0aW1lKQoreworICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aW1lKSkKKyAgICAgICAgcmV0dXJu
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSW5kZWZpbml0ZSB0aW1l
IiwgIk1lZGlhIHRpbWUgZGVzY3JpcHRpb24iKTsKKworICAgIGludCBzZWNvbmRzID0gKGludClm
YWJzZih0aW1lKTsKKyAgICBpbnQgZGF5cyA9IHNlY29uZHMgLyAoNjAgKiA2MCAqIDI0KTsKKyAg
ICBpbnQgaG91cnMgPSBzZWNvbmRzIC8gKDYwICogNjApOworICAgIGludCBtaW51dGVzID0gKHNl
Y29uZHMgLyA2MCkgJSA2MDsKKyAgICBzZWNvbmRzICU9IDYwOworCisgICAgaWYgKGRheXMpCisg
ICAgICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIiUx
IGRheXMgJTIgaG91cnMgJTMgbWludXRlcyAlNCBzZWNvbmRzIiwgIk1lZGlhIHRpbWUgZGVzY3Jp
cHRpb24iKS5hcmcoZGF5cykuYXJnKGhvdXJzKS5hcmcobWludXRlcykuYXJnKHNlY29uZHMpOwor
CisgICAgaWYgKGhvdXJzKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICIlMSBob3VycyAlMiBtaW51dGVzICUzIHNlY29uZHMiLCAiTWVkaWEg
dGltZSBkZXNjcmlwdGlvbiIpLmFyZyhob3VycykuYXJnKG1pbnV0ZXMpLmFyZyhzZWNvbmRzKTsK
KworICAgIGlmIChtaW51dGVzKQorICAgICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICIlMSBtaW51dGVzICUyIHNlY29uZHMiLCAiTWVkaWEgdGltZSBk
ZXNjcmlwdGlvbiIpLmFyZyhtaW51dGVzKS5hcmcoc2Vjb25kcyk7CisKKyAgICByZXR1cm4gUUNv
cmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICIlMSBzZWNvbmRzIiwgIk1lZGlh
IHRpbWUgZGVzY3JpcHRpb24iKS5hcmcoc2Vjb25kcyk7Cit9CisKKyNlbHNlIC8vIEVOQUJMRShW
SURFTykKKy8vIEZJWE1FOiAjaWYgRU5BQkxFKFZJREVPKSBzaG91bGQgYmUgaW4gdGhlIGJhc2Ug
Y2xhc3MKKworU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGxvY2Fs
aXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChjb25zdCBTdHJpbmcmIG5hbWUpCit7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3Jp
cHRpb24oZmxvYXQgdGltZSkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU8pCisKKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5n
VGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvckNoZWNrYm94VGV4dCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvckZpbGVUZXh0KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0
aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclJhZGlvVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlz
bWF0Y2hUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yRW1haWxUZXh0
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yTXVsdGlwbGVFbWFpbFRleHQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JVUkxUZXh0KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRv
b0xvbmdUZXh0KGludCB2YWx1ZUxlbmd0aCwgaW50IG1heExlbmd0aCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoY29uc3QgU3RyaW5nJiBtYXhpbXVtKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNvbnN0IFN0cmluZyYgYmFzZSwgY29u
c3QgU3RyaW5nJiBzdGVwKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VCYWRJbnB1dEZvck51bWJlclRl
eHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlVHlwZU1pc21hdGNoVGV4dCgpOworfQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorU3Ry
aW5nIHRleHRUcmFja1N1YnRpdGxlc1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdGV4dFRyYWNrT2ZmTWVudUl0ZW1UZXh0
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIHRleHRUcmFja0F1dG9tYXRpY01lbnVJdGVtVGV4dCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB0ZXh0VHJhY2tOb0xh
YmVsVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisjZW5kaWYKKworU3RyaW5nIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBz
bmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0
IGNoYXIqIGtleSkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChrZXksIHN0cmxlbihr
ZXkpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTG9n
Z2luZ1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xvZ2dpbmdRdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIxNDhkZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xvZ2dpbmdRdC5jcHAKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorCisjaWYgIUxPR19ESVNBQkxFRAorCisjaW5jbHVkZSA8UURlYnVnPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0
cmluZyBsb2dMZXZlbFN0cmluZygpCit7CisgICAgUUJ5dGVBcnJheSBsb2dnaW5nRW52ID0gcWdl
dGVudigiUVRfV0VCS0lUX0xPRyIpOworICAgIGlmIChsb2dnaW5nRW52LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyNpZiBkZWZpbmVkKE5ERUJVRykKKyAgICBx
V2FybmluZygiVGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIFNldHRpbmcgUVRfV0VCS0lUX0xPRyB3
aWxsIGhhdmUgbm8gZWZmZWN0LiIpOworI2Vsc2UKKworICAgIC8vIFRvIGRpc2FibGUgbG9nZ2lu
ZyBub3RJbXBsZW1lbnRlZCBzZXQgdGhlIERJU0FCTEVfTklfV0FSTklORyBlbnZpcm9ubWVudCB2
YXJpYWJsZSB0byAxLgorICAgIFN0cmluZyBsb2dMZXZlbCA9ICJOb3RZZXRJbXBsZW1lbnRlZCwi
OworICAgIGxvZ0xldmVsLmFwcGVuZChRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KGxvZ2dpbmdFbnYp
KTsKKyAgICByZXR1cm4gbG9nTGV2ZWw7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvTUlNRVR5cGVSZWdpc3RyeVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOGQxNjdjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKworI2luY2x1
ZGUgPFFNaW1lRGF0YWJhc2U+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBFeHRl
bnNpb25NYXAgeworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbjsKKyAgICBjb25zdCBjaGFyKiBk
b3RFeHRlbnNpb247CisgICAgY29uc3QgY2hhciogbWltZVR5cGU7Cit9OworCisvLyBUaGlzIGlz
IGEgc2hvcnQgbGlzdCBvZiBleHRlbnNpb25zIHRoYXQgYXJlIGVpdGhlciBub3QgcmVjb2duaXpl
ZCBieSB0aGUgZnJlZWRlc2t0b3Agc2hhcmVkIG1pbWV0eXBlIGRhdGFiYXNlIDEuMCwKKy8vIG9y
IHRvbyBlc3NlbnRpYWwgZm9yIFF0V2ViS2l0IHRoYXQgd2UgY2FuIG5vdCBhbGxvdyBhIHVzZXIg
Y29uZmlndXJhdGlvbiB0byBwb3RlbnRpYWxseSBvdmVycmlkZSBpdC4KKy8vIEFueSBleHRlbnNp
b24gdGhhdCBoYXMgdG8gYmUgcmVjb2duaXplZCBmb3IgdGhlIGxheW91dC10ZXN0cyB0byBydW4g
c2hvdWxkIGJlIGFkZGVkIGhlcmUuCitzdGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFwIGV4dGVuc2lv
bk1hcFtdID0geworICAgIHsgImh0bSIsICIuaHRtIiwgInRleHQvaHRtbCIgfSwKKyAgICB7ICJo
dG1sIiwgIi5odG1sIiwgInRleHQvaHRtbCIgfSwKKyAgICB7ICJqcyIsICIuanMiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfSwKKyAgICB7ICJtaHQiLCAiLm1odCIsICJhcHBsaWNhdGlvbi94
LW1pbWVhcmNoaXZlIiB9LCAvLyBOb3QgaW4gc2hhcmVkIG1pbWV0eXBlIGRhdGFiYXNlCisgICAg
eyAibWh0bWwiLCAiLm1odG1sIiwgImFwcGxpY2F0aW9uL3gtbWltZWFyY2hpdmUiIH0sIC8vIE5v
dCBpbiBzaGFyZWQgbWltZXR5cGUgZGF0YWJhc2UKKyAgICB7ICJzdmciLCAiLnN2ZyIsICJpbWFn
ZS9zdmcreG1sIiB9LAorICAgIHsgInRleHQiLCAiLnRleHQiLCAidGV4dC9wbGFpbiIgfSwgLy8g
Tm90IGluIHNoYXJlZCBtaW1ldHlwZSBkYXRhYmFzZQorICAgIHsgInR4dCIsICIudHh0IiwgInRl
eHQvcGxhaW4ifSwKKyAgICB7ICJ3bWxjIiwgIi53bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAu
d21sYyIgfSwgLy8gTm90IGluIHNoYXJlZCBtaW1ldHlwZSBkYXRhYmFzZQorICAgIHsgInhodCIs
ICIueGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfSwKKyAgICB7ICJ4aHRtbCIsICIueGh0
bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIiB9LAorICAgIHsgInhzbCIsICIueHNsIiwgInRl
eHQveHNsIiB9LAorICAgIHsgMCwgMCwgMCB9Cit9OworCitTdHJpbmcgTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCit7CisgICAgU3Ry
aW5nIHN1ZmZpeCA9IGV4dC5sb3dlcigpOworICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9IGV4
dGVuc2lvbk1hcDsKKyAgICB3aGlsZSAoZS0+ZXh0ZW5zaW9uKSB7CisgICAgICAgIGlmIChzdWZm
aXggPT0gZS0+ZXh0ZW5zaW9uKQorICAgICAgICAgICAgcmV0dXJuIGUtPm1pbWVUeXBlOworICAg
ICAgICArK2U7CisgICAgfQorCisgICAgLy8gUU1pbWVEYXRhYmFzZSBsYWNrcyB0aGUgYWJpbGl0
eSB0byBxdWVyeSBieSBleHRlbnNpb24gYWxvbmUsIHNvIHdlIGNyZWF0ZSBhIGZha2UgZmlsZW5h
bWUgdG8gbG9va3VwLgorICAgIGNvbnN0IFFTdHJpbmcgZmlsZW5hbWUgPSBRU3RyaW5nTGl0ZXJh
bCgiZmlsZW5hbWUuIikgKyBRU3RyaW5nKHN1ZmZpeCk7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGdldCBhbGwgdGhlIG1hdGNoZWQgbWltZXR5cGVzIHdpdGggbWltZVR5cGVzRm9yRmlsZU5h
bWUsIGFuZCBwcmVmZXIgb25lIHdlIHN1cHBvcnQuCisgICAgLy8gQnV0IGluaXRpYWxpemVTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcyB3aWxsIGZpcnN0IGhhdmUgdG8gc3RvcCB1c2luZyBnZXRNSU1F
VHlwZUZvckV4dGVuc2lvbiwgb3Igd2UKKyAgICAvLyB3b3VsZCBiZSBjaGVja2luZyBhZ2FpbnN0
IGFuIHVuaW5pdGlhbGl6ZWQgc2V0IG9mIHN1cHBvcnRlZCBtaW1ldHlwZXMuCisgICAgUU1pbWVU
eXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgpLm1pbWVUeXBlRm9yRmlsZShmaWxlbmFtZSwg
UU1pbWVEYXRhYmFzZTo6TWF0Y2hFeHRlbnNpb24pOworICAgIGlmIChtaW1lVHlwZS5pc1ZhbGlk
KCkgJiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgpKSB7CisgICAgICAgIC8vIGdldE1JTUVUeXBlRm9y
RXh0ZW5zaW9uIGlzIHVzZWQgZm9yIHByZWxvYWQgbWltZXR5cGUgY2hlY2ssIHNvIGltYWdlIGxv
b2tpbmcgZmlsZXMgY2FuIG5vdCBiZSBsb2FkZWQgYXMgYW55dGhpbmcgYnV0IGltYWdlcy4KKyAg
ICAgICAgLy8gU2NyaXB0IGxvb2tpbmcgZmlsZXMgKC5waHApIGFyZSBsb2FkZWQgbm9ybWFsbHkg
YW5kIHdpbGwgaGF2ZSB0aGVpciBtaW1ldHlwZSBkZXRlcm1pbmVkIGxhdGVyLgorICAgICAgICBp
ZiAobWltZVR5cGUuaW5oZXJpdHMoUVN0cmluZ0xpdGVyYWwoImFwcGxpY2F0aW9uL3gtZXhlY3V0
YWJsZSIpKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1p
bWVUeXBlLm5hbWUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KQoreworICAgIGNvbnN0IEV4dGVuc2lvbk1hcCAqZSA9IGV4dGVuc2lvbk1hcDsKKyAgICB3aGls
ZSAoZS0+ZXh0ZW5zaW9uKSB7CisgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKGUtPmRvdEV4dGVu
c2lvbiwgLyogY2FzZVNlbnNpdGl2ZSAqLyBmYWxzZSkpCisgICAgICAgICAgICByZXR1cm4gZS0+
bWltZVR5cGU7CisgICAgICAgICsrZTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogU2VlIGNvbW1l
bnQgaW4gZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24uCisgICAgUU1pbWVUeXBlIHR5cGUgPSBRTWlt
ZURhdGFiYXNlKCkubWltZVR5cGVGb3JGaWxlKHBhdGgsIFFNaW1lRGF0YWJhc2U6Ok1hdGNoRXh0
ZW5zaW9uKTsKKyAgICBpZiAodHlwZS5pc1ZhbGlkKCkgJiYgIXR5cGUuaXNEZWZhdWx0KCkpCisg
ICAgICAgIHJldHVybiB0eXBlLm5hbWUoKTsKKworICAgIHJldHVybiBkZWZhdWx0TUlNRVR5cGUo
KTsKK30KKworVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIFZlY3RvcjxTdHJp
bmc+IGV4dGVuc2lvbnM7CisgICAgUU1pbWVUeXBlIG1pbWVUeXBlID0gUU1pbWVEYXRhYmFzZSgp
Lm1pbWVUeXBlRm9yTmFtZShtaW1lVHlwZU5hbWUpOworICAgIGlmIChtaW1lVHlwZS5pc1ZhbGlk
KCkgJiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgpKSB7CisgICAgICAgIFFfRk9SRUFDSChjb25zdCBR
U3RyaW5nJiBzdWZmaXgsIG1pbWVUeXBlLnN1ZmZpeGVzKCkpIHsKKyAgICAgICAgICAgIGV4dGVu
c2lvbnMuYXBwZW5kKHN1ZmZpeCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZXh0
ZW5zaW9uczsKK30KKworU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVu
c2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIFFNaW1l
VHlwZSBtaW1lVHlwZSA9IFFNaW1lRGF0YWJhc2UoKS5taW1lVHlwZUZvck5hbWUobWltZVR5cGVO
YW1lKTsKKyAgICBpZiAobWltZVR5cGUuaXNWYWxpZCgpICYmICFtaW1lVHlwZS5pc0RlZmF1bHQo
KSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlLnByZWZlcnJlZFN1ZmZpeCgpOworCisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0Tm9ybWFsaXpl
ZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGVOYW1lKQoreworICAgIC8vIFRoaXMgbG9v
a3MgdXAgdGhlIG1pbWUgdHlwZSBvYmplY3QgYnkgcHJlZmVycmVkIG5hbWUgb3IgYWxpYXMsIGFu
ZCByZXR1cm5zIHRoZSBwcmVmZXJyZWQgbmFtZS4KKyAgICBRTWltZVR5cGUgbWltZVR5cGUgPSBR
TWltZURhdGFiYXNlKCkubWltZVR5cGVGb3JOYW1lKG1pbWVUeXBlTmFtZSk7CisgICAgaWYgKG1p
bWVUeXBlLmlzVmFsaWQoKSAmJiAhbWltZVR5cGUuaXNEZWZhdWx0KCkpCisgICAgICAgIHJldHVy
biBtaW1lVHlwZS5uYW1lKCk7CisKKyAgICByZXR1cm4gbWltZVR5cGVOYW1lOworfQorCitib29s
IE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBtaW1lVHlwZS5zdGFydHNXaXRoKCJhcHBsaWNh
dGlvbi94LXF0LXBsdWdpbiIsIGZhbHNlKQorICAgICAgICB8fCBtaW1lVHlwZS5zdGFydHNXaXRo
KCJhcHBsaWNhdGlvbi94LXF0LXN0eWxlZC13aWRnZXQiLCBmYWxzZSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM1NTM3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0wLDAgKzEsMzUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEzIENpc2NvIFN5c3RlbXMsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKKworI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkRyYWdEYXRhLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKKyNpbmNsdWRlICJtYXJrdXAu
aCIKKyNpbmNsdWRlIDxxY2xpcGJvYXJkLmg+CisjaW5jbHVkZSA8cWRlYnVnLmg+CisjaW5jbHVk
ZSA8cWd1aWFwcGxpY2F0aW9uLmg+CisjaW5jbHVkZSA8cW1pbWVkYXRhLmg+CisjaW5jbHVkZSA8
cXRleHRjb2RlYy5oPgorI2luY2x1ZGUgPHF1cmwuaD4KKworI2RlZmluZSBtZXRob2REZWJ1Zygp
IHFEZWJ1ZygpIDw8ICJQYXN0ZWJvYXJkUXQ6ICIgPDwgX19GVU5DVElPTl9fOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIGlzVGV4dE1pbWVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSA9PSAidGV4dC9wbGFpbiIgfHwgdHlwZS5zdGFydHNX
aXRoKCJ0ZXh0L3BsYWluOyIpOworfQorCitzdGF0aWMgYm9vbCBpc0h0bWxNaW1lVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0dXJuIHR5cGUgPT0gInRleHQvaHRtbCIgfHwgdHlw
ZS5zdGFydHNXaXRoKCJ0ZXh0L2h0bWw7Iik7Cit9CisKK1Bhc3NPd25QdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlKGNvbnN0IFFNaW1lRGF0YSogcmVhZGFibGVDbGlwYm9hcmQsIGJv
b2wgaXNGb3JEcmFnQW5kRHJvcCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhc3RlYm9h
cmQocmVhZGFibGVDbGlwYm9hcmQsIGlzRm9yRHJhZ0FuZERyb3ApKTsKK30KKworUGFzc093blB0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQoreworI2lm
bmRlZiBRVF9OT19DTElQQk9BUkQKKyAgICByZXR1cm4gY3JlYXRlKFFHdWlBcHBsaWNhdGlvbjo6
Y2xpcGJvYXJkKCktPm1pbWVEYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gY3JlYXRlKCk7Cisj
ZW5kaWYKK30KKworUGFzc093blB0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JH
bG9iYWxTZWxlY3Rpb24oKQoreworICAgIE93blB0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkID0g
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCk7CisgICAgcGFzdGVib2FyZC0+bV9zZWxlY3Rpb25Nb2Rl
ID0gdHJ1ZTsKKyAgICByZXR1cm4gcGFzdGVib2FyZC5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25Q
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlUHJpdmF0ZSgpCit7CisgICAgcmV0dXJu
IGNyZWF0ZSgpOworfQorCitQYXNzT3duUHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlKDAsIHRydWUpOworfQorCitQ
YXNzT3duUHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKGRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpLCB0cnVlKTsKK30KKworUGFzdGVib2FyZDo6UGFzdGVib2FyZChjb25zdCBR
TWltZURhdGEqIHJlYWRhYmxlQ2xpcGJvYXJkLCBib29sIGlzRm9yRHJhZ0FuZERyb3ApCisgICAg
OiBtX3NlbGVjdGlvbk1vZGUoZmFsc2UpCisgICAgLCBtX3JlYWRhYmxlRGF0YShyZWFkYWJsZUNs
aXBib2FyZCkKKyAgICAsIG1fd3JpdGFibGVEYXRhKDApCisgICAgLCBtX2lzRm9yRHJhZ0FuZERy
b3AoaXNGb3JEcmFnQW5kRHJvcCkKK3sKK30KKworUGFzdGVib2FyZDo6flBhc3RlYm9hcmQoKQor
eworICAgIGlmIChtX3dyaXRhYmxlRGF0YSAmJiBpc0ZvckNvcHlBbmRQYXN0ZSgpKQorICAgICAg
ICBtX3dyaXRhYmxlRGF0YSA9IDA7CisgICAgZWxzZQorICAgICAgICBkZWxldGUgbV93cml0YWJs
ZURhdGE7CisgICAgbV9yZWFkYWJsZURhdGEgPSAwOworfQorCit2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCit7CisgICAgUU1pbWVE
YXRhKiBtZCA9IG5ldyBRTWltZURhdGE7CisgICAgUVN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFs
aXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlw
Ym9hcmQgPyBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CisgICAgdGV4dC5yZXBsYWNlKFFDaGFyKDB4YTAp
LCBRTGF0aW4xQ2hhcignICcpKTsKKyAgICBtZC0+c2V0VGV4dCh0ZXh0KTsKKworICAgIFFTdHJp
bmcgbWFya3VwID0gY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50
ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKTsKKyNpZmRlZiBRX09TX01BQwor
ICAgIG1hcmt1cC5wcmVwZW5kKFFMYXRpbjFTdHJpbmcoIjxodG1sPjxoZWFkPjxtZXRhIGh0dHAt
ZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
XCIgLz48L2hlYWQ+PGJvZHk+IikpOworICAgIG1hcmt1cC5hcHBlbmQoUUxhdGluMVN0cmluZygi
PC9ib2R5PjwvaHRtbD4iKSk7CisgICAgbWQtPnNldERhdGEoUUxhdGluMVN0cmluZygidGV4dC9o
dG1sIiksIG1hcmt1cC50b1V0ZjgoKSk7CisjZWxzZQorICAgIG1kLT5zZXRIdG1sKG1hcmt1cCk7
CisjZW5kaWYKKworICAgIGlmIChjYW5TbWFydENvcHlPckRlbGV0ZSkKKyAgICAgICAgbWQtPnNl
dERhdGEoUUxhdGluMVN0cmluZygiYXBwbGljYXRpb24vdm5kLnF0d2Via2l0LnNtYXJ0cGFzdGUi
KSwgUUJ5dGVBcnJheSgpKTsKKyNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECisgICAgUUd1aUFwcGxp
Y2F0aW9uOjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEobWQsIG1fc2VsZWN0aW9uTW9kZSA/IFFD
bGlwYm9hcmQ6OlNlbGVjdGlvbiA6IFFDbGlwYm9hcmQ6OkNsaXBib2FyZCk7CisjZW5kaWYKK30K
KworYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQoreworI2lmbmRlZiBRVF9OT19D
TElQQk9BUkQKKyAgICBpZiAoUUd1aUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+bWltZURhdGEo
KS0+aGFzRm9ybWF0KChRTGF0aW4xU3RyaW5nKCJhcHBsaWNhdGlvbi92bmQucXR3ZWJraXQuc21h
cnRwYXN0ZSIpKSkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4
dCkKK3sKKyNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECisgICAgdGV4dC50ZXh0ID0gUUd1aUFwcGxp
Y2F0aW9uOjpjbGlwYm9hcmQoKS0+dGV4dChtX3NlbGVjdGlvbk1vZGUgPyBRQ2xpcGJvYXJkOjpT
ZWxlY3Rpb24gOiBRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOworI2VuZGlmCit9CisKK1Bhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFtZSog
ZnJhbWUsIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd1BsYWluVGV4dCwg
Ym9vbCYgY2hvc2VQbGFpblRleHQpCit7CisjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAorICAgIGNv
bnN0IFFNaW1lRGF0YSogbWltZURhdGEgPSBRR3VpQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5t
aW1lRGF0YSgKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uTW9kZSA/IFFDbGlwYm9hcmQ6OlNlbGVj
dGlvbiA6IFFDbGlwYm9hcmQ6OkNsaXBib2FyZCk7CisKKyAgICBjaG9zZVBsYWluVGV4dCA9IGZh
bHNlOworCisgICAgaWYgKG1pbWVEYXRhLT5oYXNIdG1sKCkpIHsKKyAgICAgICAgUVN0cmluZyBo
dG1sID0gbWltZURhdGEtPmh0bWwoKTsKKyAgICAgICAgaWYgKCFodG1sLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGcm9tTWFya3VwKGZyYW1lLT5kb2N1bWVudCgpLCBodG1sLCAiIiwgRGlzYWxsb3dTY3Jp
cHRpbmdBbmRQbHVnaW5Db250ZW50KTsKKyAgICAgICAgICAgIGlmIChmcmFnbWVudCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOworICAgICAgICB9CisgICAgfQor
CisgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYmIG1pbWVEYXRhLT5oYXNUZXh0KCkpIHsKKyAgICAg
ICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOworICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21UZXh0KGNvbnRleHQuZ2V0KCksIG1pbWVE
YXRhLT50ZXh0KCkpOworICAgICAgICBpZiAoZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1cm4g
ZnJhZ21lbnQucmVsZWFzZSgpOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCit2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRS
ZXBsYWNlT3B0aW9uIHNtYXJ0UmVwbGFjZU9wdGlvbikKK3sKKyNpZm5kZWYgUVRfTk9fQ0xJUEJP
QVJECisgICAgUU1pbWVEYXRhKiBtZCA9IG5ldyBRTWltZURhdGE7CisgICAgUVN0cmluZyBxdGV4
dCA9IHRleHQ7CisgICAgcXRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAn
KSk7CisgICAgbWQtPnNldFRleHQocXRleHQpOworICAgIGlmIChzbWFydFJlcGxhY2VPcHRpb24g
PT0gQ2FuU21hcnRSZXBsYWNlKQorICAgICAgICBtZC0+c2V0RGF0YShRTGF0aW4xU3RyaW5nKCJh
cHBsaWNhdGlvbi92bmQucXR3ZWJraXQuc21hcnRwYXN0ZSIpLCBRQnl0ZUFycmF5KCkpOworICAg
IFFHdWlBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1kLCBtX3NlbGVjdGlv
bk1vZGUgPyBRQ2xpcGJvYXJkOjpTZWxlY3Rpb24gOiBRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOwor
I2VuZGlmCit9CisKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYg
cGFzdGVib2FyZFVSTCkKK3sKKyAgICBBU1NFUlQoIXBhc3RlYm9hcmRVUkwudXJsLmlzRW1wdHko
KSk7CisKKyNpZm5kZWYgUVRfTk9fQ0xJUEJPQVJECisgICAgUU1pbWVEYXRhKiBtZCA9IG5ldyBR
TWltZURhdGE7CisgICAgUVN0cmluZyB1cmxTdHJpbmcgPSBwYXN0ZWJvYXJkVVJMLnVybC5zdHJp
bmcoKTsKKyAgICBtZC0+c2V0VGV4dCh1cmxTdHJpbmcpOworICAgIG1kLT5zZXRVcmxzKFFMaXN0
PFFVcmw+KCkgPDwgcGFzdGVib2FyZFVSTC51cmwpOworICAgIFFHdWlBcHBsaWNhdGlvbjo6Y2xp
cGJvYXJkKCktPnNldE1pbWVEYXRhKG1kLCBtX3NlbGVjdGlvbk1vZGUgPyBRQ2xpcGJvYXJkOjpT
ZWxlY3Rpb24gOiBRQ2xpcGJvYXJkOjpDbGlwYm9hcmQpOworI2VuZGlmCit9CisKK3ZvaWQgUGFz
dGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KQoreworICAgIEFTU0VSVChub2RlKTsKKworICAgIGlmICghKG5vZGUtPnJlbmRlcmVyKCkgJiYg
bm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKSkKKyAgICAgICAgcmV0dXJuOworCisjaWZuZGVm
IFFUX05PX0NMSVBCT0FSRAorICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHRvUmVuZGVy
SW1hZ2Uobm9kZS0+cmVuZGVyZXIoKSktPmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCFjYWNoZWRJ
bWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihub2RlLT5y
ZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoaW1hZ2UpOworCisgICAgUVBpeG1hcCogcGl4bWFwID0g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFwaXhtYXApCisg
ICAgICAgIHJldHVybjsKKyAgICBRR3VpQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRQaXht
YXAoKnBpeG1hcCwgUUNsaXBib2FyZDo6Q2xpcGJvYXJkKTsKKyNlbmRpZgorfQorCitjb25zdCBR
TWltZURhdGEqIFBhc3RlYm9hcmQ6OnJlYWREYXRhKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoISht
X3JlYWRhYmxlRGF0YSAmJiBtX3dyaXRhYmxlRGF0YSkpOworICAgIHJldHVybiBtX3JlYWRhYmxl
RGF0YSA/IG1fcmVhZGFibGVEYXRhIDogbV93cml0YWJsZURhdGE7Cit9CisKK2Jvb2wgUGFzdGVi
b2FyZDo6aGFzRGF0YSgpCit7CisgICAgY29uc3QgUU1pbWVEYXRhICpkYXRhID0gcmVhZERhdGEo
KTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZGF0
YS0+Zm9ybWF0cygpLmNvdW50KCkgPiAwOworfQorCit2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNv
bnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBpZiAobV93cml0YWJsZURhdGEpIHsKKyAgICAgICAg
bV93cml0YWJsZURhdGEtPnJlbW92ZUZvcm1hdCh0eXBlKTsKKyAgICAgICAgaWYgKG1fd3JpdGFi
bGVEYXRhLT5mb3JtYXRzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoaXNGb3JEcmFn
QW5kRHJvcCgpKQorICAgICAgICAgICAgICAgIGRlbGV0ZSBtX3dyaXRhYmxlRGF0YTsKKyAgICAg
ICAgICAgIG1fd3JpdGFibGVEYXRhID0gMDsKKyAgICAgICAgfQorICAgIH0KKyNpZm5kZWYgUVRf
Tk9fQ0xJUEJPQVJECisgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkpCisgICAgICAgIFFHdWlB
cHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKG1fd3JpdGFibGVEYXRhKTsKKyNl
bmRpZgorfQorCit2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKK3sKKyNpZm5kZWYgUVRfTk9fQ0xJ
UEJPQVJECisgICAgaWYgKGlzRm9yQ29weUFuZFBhc3RlKCkpCisgICAgICAgIFFHdWlBcHBsaWNh
dGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVEYXRhKDApOworICAgIGVsc2UKKyNlbmRpZgorICAg
IGRlbGV0ZSBtX3dyaXRhYmxlRGF0YTsKKyAgICBtX3dyaXRhYmxlRGF0YSA9IDA7Cit9CisKK1N0
cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBj
b25zdCBRTWltZURhdGEqIGRhdGEgPSByZWFkRGF0YSgpOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGlzSHRtbE1pbWVUeXBlKHR5cGUpICYmIGRh
dGEtPmhhc0h0bWwoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPmh0bWwoKTsKKworICAgIGlmIChp
c1RleHRNaW1lVHlwZSh0eXBlKSAmJiBkYXRhLT5oYXNUZXh0KCkpCisgICAgICAgIHJldHVybiBk
YXRhLT50ZXh0KCk7CisKKyAgICBRQnl0ZUFycmF5IHJhd0RhdGEgPSBkYXRhLT5kYXRhKHR5cGUp
OworICAgIFFTdHJpbmcgc3RyaW5nRGF0YSA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRG
LTE2IiktPnRvVW5pY29kZShyYXdEYXRhKTsKKyAgICByZXR1cm4gc3RyaW5nRGF0YTsKK30KKwor
Ym9vbCBQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSkKK3sKKyAgICBpZiAoIW1fd3JpdGFibGVEYXRhKQorICAgICAgICBtX3dyaXRh
YmxlRGF0YSA9IG5ldyBRTWltZURhdGE7CisKKyAgICBpZiAoaXNUZXh0TWltZVR5cGUodHlwZSkp
CisgICAgICAgIG1fd3JpdGFibGVEYXRhLT5zZXRUZXh0KFFTdHJpbmcoZGF0YSkpOworICAgIGVs
c2UgaWYgKGlzSHRtbE1pbWVUeXBlKHR5cGUpKQorICAgICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0
SHRtbChRU3RyaW5nKGRhdGEpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUUJ5dGVBcnJheSBhcnJh
eShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmNoYXJhY3RlcnMoKSksIGRhdGEu
bGVuZ3RoKCkgKiAyKTsKKyAgICAgICAgbV93cml0YWJsZURhdGEtPnNldERhdGEoUVN0cmluZyh0
eXBlKSwgYXJyYXkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlcygpCit7CisgICAgY29uc3QgUU1pbWVEYXRhKiBkYXRhID0g
cmVhZERhdGEoKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5n
PigpOworCisgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiByZXN1bHQ7CisgICAgUVN0cmluZ0xpc3Qg
Zm9ybWF0cyA9IGRhdGEtPmZvcm1hdHMoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvcm1h
dHMuY291bnQoKTsgKytpKQorICAgICAgICByZXN1bHQuYWRkKGZvcm1hdHMuYXQoaSkpOworICAg
IFZlY3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICBjb3B5VG9WZWN0b3IocmVzdWx0LCB2ZWN0b3Ip
OworICAgIHJldHVybiB2ZWN0b3I7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJl
YWRGaWxlbmFtZXMoKQoreworICAgIGNvbnN0IFFNaW1lRGF0YSogZGF0YSA9IHJlYWREYXRhKCk7
CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKworICAg
IFZlY3RvcjxTdHJpbmc+IGZpbGVMaXN0OworICAgIFFMaXN0PFFVcmw+IHVybHMgPSBkYXRhLT51
cmxzKCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHVybHMuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgUVVybCB1cmwgPSB1cmxzW2ldOworICAgICAgICBpZiAodXJsLnNjaGVtZSgpICE9IFFM
YXRpbjFTdHJpbmcoImZpbGUiKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBmaWxl
TGlzdC5hcHBlbmQodXJsLnRvTG9jYWxGaWxlKCkpOworICAgIH0KKworICAgIHJldHVybiBmaWxl
TGlzdDsKK30KKwordm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBj
b25zdCBJbnRQb2ludCYgaG90U3BvdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkJiBzb3VyY2VQ
YXN0ZWJvYXJkKQoreworI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKKyAgICBRR3VpQXBwbGljYXRp
b246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShzb3VyY2VQYXN0ZWJvYXJkLmNsaXBib2FyZERh
dGEoKSk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGxhdGZvcm1LZXlib2FyZEV2ZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjkxNWMyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAKQEAgLTAsMCArMSw5MDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisK
KyNpbmNsdWRlIDxRS2V5RXZlbnQ+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcga2V5SWRlbnRp
ZmllckZvclF0S2V5Q29kZShpbnQga2V5Q29kZSkKK3sKKyAgICAvLyBCYXNlZCBvbiBodHRwOi8v
d3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2tleS12YWx1ZXMtbGlzdAorICAgIHN3
aXRjaCAoa2V5Q29kZSkgeworICAgIGNhc2UgUXQ6OktleV91bmtub3duOgorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJVbmlkZW50aWZpZWQiKTsKKyAgICBjYXNlIFF0OjpLZXlfQWx0Ogor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJBbHQiKTsKKyAgICBjYXNlIFF0OjpLZXlfQWx0
R3I6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkFsdEdyYXBoIik7CisgICAgY2FzZSBR
dDo6S2V5X0NvbnRyb2w6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNvbnRyb2wiKTsK
KyAgICBjYXNlIFF0OjpLZXlfTWV0YToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTWV0
YSIpOworICAgIGNhc2UgUXQ6OktleV9TaGlmdDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiU2hpZnQiKTsKKyAgICBjYXNlIFF0OjpLZXlfTXVsdGlfa2V5OgorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJDb21wb3NlIik7CisgICAgY2FzZSBRdDo6S2V5X0YxOgorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJGMSIpOworICAgIGNhc2UgUXQ6OktleV9GMjoKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjIiKTsKKyAgICBjYXNlIFF0OjpLZXlfRjM6CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIkYzIik7CisgICAgY2FzZSBRdDo6S2V5X0Y0OgorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGNCIpOworICAgIGNhc2UgUXQ6OktleV9GNToKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjUiKTsKKyAgICBjYXNlIFF0OjpLZXlfRjY6CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkY2Iik7CisgICAgY2FzZSBRdDo6S2V5X0Y3OgorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGNyIpOworICAgIGNhc2UgUXQ6OktleV9GODoKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjgiKTsKKyAgICBjYXNlIFF0OjpLZXlfRjk6Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkY5Iik7CisgICAgY2FzZSBRdDo6S2V5X0YxMDoK
KyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjEwIik7CisgICAgY2FzZSBRdDo6S2V5X0Yx
MToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjExIik7CisgICAgY2FzZSBRdDo6S2V5
X0YxMjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjEyIik7CisgICAgY2FzZSBRdDo6
S2V5X0YxMzoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjEzIik7CisgICAgY2FzZSBR
dDo6S2V5X0YxNDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjE0Iik7CisgICAgY2Fz
ZSBRdDo6S2V5X0YxNToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjE1Iik7CisgICAg
Y2FzZSBRdDo6S2V5X0YxNjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjE2Iik7Cisg
ICAgY2FzZSBRdDo6S2V5X0YxNzoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjE3Iik7
CisgICAgY2FzZSBRdDo6S2V5X0YxODoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRjE4
Iik7CisgICAgY2FzZSBRdDo6S2V5X0YxOToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
RjE5Iik7CisgICAgY2FzZSBRdDo6S2V5X0YyMDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiRjIwIik7CisgICAgY2FzZSBRdDo6S2V5X0YyMToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRjIxIik7CisgICAgY2FzZSBRdDo6S2V5X0YyMjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiRjIyIik7CisgICAgY2FzZSBRdDo6S2V5X0YyMzoKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiRjIzIik7CisgICAgY2FzZSBRdDo6S2V5X0YyNDoKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiRjI0Iik7CisgICAgLy8gJ0xhdW5jaEFwcGxpY2F0aW9uMScKKyAgICAv
LyAnTGF1bmNoQXBwbGljYXRpb24yJworICAgIGNhc2UgUXQ6OktleV9MYXVuY2hNYWlsOgorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJMYXVuY2hNYWlsIik7CisgICAgLy8gJ0xpc3QnCisg
ICAgLy8gJ1Byb3BzJworICAgIC8vICdTb2Z0MScKKyAgICAvLyAnU29mdDInCisgICAgLy8gJ1Nv
ZnQzJworICAgIC8vICdTb2Z0NCcKKyAgICBjYXNlIFF0OjpLZXlfWWVzOgorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJBY2NlcHQiKTsKKyAgICAvLyAnQWdhaW4nCisgICAgY2FzZSBRdDo6
S2V5X1JldHVybjoKKyAgICBjYXNlIFF0OjpLZXlfRW50ZXI6CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIkVudGVyIik7CisgICAgLy8gJ0ZpbmQnCisgICAgY2FzZSBRdDo6S2V5X0hlbHA6
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkhlbHAiKTsKKyAgICAvLyAnSW5mbycKKyAg
ICBjYXNlIFF0OjpLZXlfTWVudToKKyAgICBjYXNlIFF0OjpLZXlfTWVudUtCOgorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJNZW51Iik7CisgICAgY2FzZSBRdDo6S2V5X1BhdXNlOgorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQYXVzZSIpOworICAgIGNhc2UgUXQ6OktleV9QbGF5
OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQbGF5Iik7CisgICAgY2FzZSBRdDo6S2V5
X0V4ZWN1dGU6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkV4ZWN1dGUiKTsKKyAgICBj
YXNlIFF0OjpLZXlfQ2FuY2VsOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJDYW5jZWwi
KTsKKyAgICBjYXNlIFF0OjpLZXlfRXNjYXBlOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJFc2MiKTsKKyAgICAvLyAnRXhpdCcKKyAgICBjYXNlIFF0OjpLZXlfWm9vbToKKyAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiWm9vbSIpOworICAgIGNhc2UgUXQ6OktleV9Db21tYToKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiU2VwZXJhdG9yIik7CisgICAgY2FzZSBRdDo6S2V5
X1BsdXM6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkFkZCIpOworICAgIGNhc2UgUXQ6
OktleV9NaW51czoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiU3VidHJhY3QiKTsKKyAg
ICBjYXNlIFF0OjpLZXlfQXN0ZXJpc2s6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk11
bHRpcGx5Iik7CisgICAgY2FzZSBRdDo6S2V5X1NsYXNoOgorICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJEaXZpZGUiKTsKKyAgICBjYXNlIFF0OjpLZXlfRXF1YWw6CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIkVxdWFscyIpOworICAgIGNhc2UgUXQ6OktleV9QZXJpb2Q6CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkRlY2ltYWwiKTsKKyAgICBjYXNlIFF0OjpLZXlfTW9u
QnJpZ2h0bmVzc0Rvd246CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJyaWdodG5lc3NE
b3duIik7CisgICAgY2FzZSBRdDo6S2V5X01vbkJyaWdodG5lc3NVcDoKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiQnJpZ2h0bmVzc1VwIik7CisgICAgY2FzZSBRdDo6S2V5X0NhbWVyYToK
KyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ2FtZXJhIik7CisgICAgY2FzZSBRdDo6S2V5
X0VqZWN0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJFamVjdCIpOworICAgIGNhc2Ug
UXQ6OktleV9Qb3dlckRvd246CisgICAgY2FzZSBRdDo6S2V5X1Bvd2VyT2ZmOgorICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJQb3dlciIpOworICAgIGNhc2UgUXQ6OktleV9QcmludDoKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUHJpbnRTY3JlZW4iKTsKKyAgICBjYXNlIFF0OjpL
ZXlfRmF2b3JpdGVzOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCcm93c2VyRmF2b3Jp
dGVzIik7CisgICAgY2FzZSBRdDo6S2V5X0hvbWVQYWdlOgorICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJCcm93c2VySG9tZSIpOworICAgIGNhc2UgUXQ6OktleV9SZWZyZXNoOgorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCcm93c2VyUmVmcmVzaCIpOworICAgIGNhc2UgUXQ6Oktl
eV9TZWFyY2g6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkJyb3dzZXJTZWFyY2giKTsK
KyAgICBjYXNlIFF0OjpLZXlfU3RvcDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQnJv
d3NlclN0b3AiKTsKKyAgICBjYXNlIFF0OjpLZXlfQmFjazoKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiQnJvd3NlckJhY2siKTsKKyAgICBjYXNlIFF0OjpLZXlfRm9yd2FyZDoKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQnJvd3NlckZvcndhcmQiKTsKKyAgICBjYXNlIFF0OjpL
ZXlfTGVmdDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTGVmdCIpOworICAgIGNhc2Ug
UXQ6OktleV9QYWdlRG93bjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGFnZURvd24i
KTsKKyAgICBjYXNlIFF0OjpLZXlfUGFnZVVwOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJQYWdlVXAiKTsKKyAgICBjYXNlIFF0OjpLZXlfUmlnaHQ6CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIlJpZ2h0Iik7CisgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJVcCIpOworICAgIC8vICdVcExlZnQnCisgICAgLy8gJ1VwUmlnaHQnCisg
ICAgY2FzZSBRdDo6S2V5X0Rvd246CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkRvd24i
KTsKKyAgICAvLyAnRG93bkxlZnQnCisgICAgLy8gJ0Rvd25SaWdodCcKKyAgICBjYXNlIFF0OjpL
ZXlfSG9tZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSG9tZSIpOworICAgIGNhc2Ug
UXQ6OktleV9FbmQ6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkVuZCIpOworICAgIGNh
c2UgUXQ6OktleV9TZWxlY3Q6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlNlbGVjdCIp
OworICAgIGNhc2UgUXQ6OktleV9DbGVhcjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
Q2xlYXIiKTsKKyAgICBjYXNlIFF0OjpLZXlfQ29weToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiQ29weSIpOworICAgIGNhc2UgUXQ6OktleV9DdXQ6CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIkN1dCIpOworICAgIC8vICdFcmFzZUVvZicKKyAgICBjYXNlIFF0OjpLZXlfSW5z
ZXJ0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJJbnNlcnQiKTsKKyAgICBjYXNlIFF0
OjpLZXlfUGFzdGU6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBhc3RlIik7CisgICAg
Ly8gJ1VuZG8nCisgICAgY2FzZSBRdDo6S2V5X0RlYWRfR3JhdmU6CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIkRlYWRHcmF2ZSIpOworICAgIGNhc2UgUXQ6OktleV9EZWFkX0FjdXRlOgor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJEZWFkQWN1dGUiKTsKKyAgICBjYXNlIFF0OjpL
ZXlfRGVhZF9DaXJjdW1mbGV4OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJEZWFkQ2ly
Y3VtZmxleCIpOworICAgIGNhc2UgUXQ6OktleV9EZWFkX1RpbGRlOgorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJEZWFkVGlsZGUiKTsKKyAgICBjYXNlIFF0OjpLZXlfRGVhZF9NYWNyb246
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkRlYWRNYWNyb24iKTsKKyAgICBjYXNlIFF0
OjpLZXlfRGVhZF9CcmV2ZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRGVhZEJyZXZl
Iik7CisgICAgY2FzZSBRdDo6S2V5X0RlYWRfQWJvdmVkb3Q6CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIkRlYWRBYm92ZURvdCIpOworICAgIGNhc2UgUXQ6OktleV9EZWFkX0RpYWVyZXNp
czoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRGVhZFVtbGF1dCIpOworICAgIGNhc2Ug
UXQ6OktleV9EZWFkX0Fib3ZlcmluZzoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRGVh
ZEFib3ZlUmluZyIpOworICAgIGNhc2UgUXQ6OktleV9EZWFkX0RvdWJsZWFjdXRlOgorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJEZWFkRG91YmxlQWN1dGUiKTsKKyAgICBjYXNlIFF0OjpL
ZXlfRGVhZF9DYXJvbjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRGVhZENhcm9uIik7
CisgICAgY2FzZSBRdDo6S2V5X0RlYWRfQ2VkaWxsYToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRGVhZENlZGlsbGEiKTsKKyAgICBjYXNlIFF0OjpLZXlfRGVhZF9PZ29uZWs6CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkRlYWRPZ29uZWsiKTsKKyAgICBjYXNlIFF0OjpLZXlf
RGVhZF9Jb3RhOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJEZWFkSW90YSIpOworICAg
IGNhc2UgUXQ6OktleV9EZWFkX1ZvaWNlZF9Tb3VuZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiRGVhZFZvaWNlZFNvdW5kIik7CisgICAgY2FzZSBRdDo6S2V5X0RlYWRfU2VtaXZvaWNl
ZF9Tb3VuZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRGVhZFNlbWl2b2ljZWRTb3Vu
ZCIpOworCisgICAgY2FzZSBRdDo6S2V5X011bHRpcGxlQ2FuZGlkYXRlOgorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJBbGxDYW5kaWRhdGUiKTsKKyAgICBjYXNlIFF0OjpLZXlfU2luZ2xl
Q2FuZGlkYXRlOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJOZXh0Q2FuZGlkYXRlIik7
CisgICAgY2FzZSBRdDo6S2V5X1ByZXZpb3VzQ2FuZGlkYXRlOgorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJQcmV2aW91c0NhbmRpZGF0ZSIpOworICAgIGNhc2UgUXQ6OktleV9Db2RlaW5w
dXQ6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNvZGVJbnB1dCIpOworCisgICAgY2Fz
ZSBRdDo6S2V5X01vZGVfc3dpdGNoOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJNb2Rl
Q2hhbmdlIik7CisgICAgY2FzZSBRdDo6S2V5X0hhbmd1bDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiSGFuZ3VsTW9kZSIpOworICAgIGNhc2UgUXQ6OktleV9IYW5ndWxfSGFuamE6Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkhhbmphTW9kZSIpOworICAgIGNhc2UgUXQ6Oktl
eV9IaXJhZ2FuYToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSGlyYWdhbmEiKTsKKyAg
ICBjYXNlIFF0OjpLZXlfS2FuYV9Mb2NrOgorICAgIGNhc2UgUXQ6OktleV9LYW5hX1NoaWZ0Ogor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJLYW5hTW9kZSIpOworICAgIGNhc2UgUXQ6Oktl
eV9LYW5qaToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiS2FuamlNb2RlIik7CisgICAg
Y2FzZSBRdDo6S2V5X0thdGFrYW5hOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJLYXRh
a2FuYSIpOworCisgICAgLy8gJ0F1ZGlvRmFkZXJGcm9udCcKKyAgICAvLyAnQXVkaW9GYWRlclJl
YXInCisgICAgLy8gJ0F1ZGlvQmFsYW5jZUxlZnQnCisgICAgLy8gJ0F1ZGlvQmFsYW5jZVJpZ2h0
JworICAgIGNhc2UgUXQ6OktleV9CYXNzRG93bjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiQXVkaW9CYXNzQm9vc3REb3duIik7CisgICAgY2FzZSBRdDo6S2V5X0Jhc3NVcDoKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQXVkaW9CYXNzQm9vc3RVcCIpOworICAgIGNhc2UgUXQ6
OktleV9Wb2x1bWVNdXRlOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJWb2x1bWVNdXRl
Iik7CisgICAgY2FzZSBRdDo6S2V5X1ZvbHVtZURvd246CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIlZvbHVtZURvd24iKTsKKyAgICBjYXNlIFF0OjpLZXlfVm9sdW1lVXA6CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIlZvbHVtZVVwIik7CisgICAgY2FzZSBRdDo6S2V5X01lZGlh
UGF1c2U6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIk1lZGlhUGF1c2UiKTsKKyAgICBj
YXNlIFF0OjpLZXlfTWVkaWFQbGF5OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJNZWRp
YVBsYXkiKTsKKyAgICAvLyAnTWVkaWFUcmFja0VuZCcKKyAgICBjYXNlIFF0OjpLZXlfTWVkaWFO
ZXh0OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJNZWRpYU5leHRUcmFjayIpOworICAg
IGNhc2UgUXQ6OktleV9NZWRpYVRvZ2dsZVBsYXlQYXVzZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiTWVkaWFQbGF5UGF1c2UiKTsKKyAgICBjYXNlIFF0OjpLZXlfTWVkaWFQcmV2aW91
czoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTWVkaWFQcmV2aW91c1RyYWNrIik7Cisg
ICAgLy8gJ01lZGlhVHJhY2tTa2lwJworICAgIC8vICdNZWRpYVRyYWNrU3RhcnQnCisgICAgY2Fz
ZSBRdDo6S2V5X01lZGlhU3RvcDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTWVkaWFT
dG9wIik7CisgICAgY2FzZSBRdDo6S2V5X0xhdW5jaE1lZGlhOgorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJTZWxlY3RNZWRpYSIpOworCisgICAgY2FzZSBRdDo6S2V5X0F1ZGlvRm9yd2Fy
ZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRmFzdEZ3ZCIpOworICAgIGNhc2UgUXQ6
OktleV9NZWRpYVJlY29yZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiTWVkaWFSZWNv
cmQiKTsKKyAgICBjYXNlIFF0OjpLZXlfQXVkaW9SZXdpbmQ6CisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIk1lZGlhUmV3aW5kIik7CisgICAgY2FzZSBRdDo6S2V5X1N1YnRpdGxlOgorICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJTdWJ0aXRsZSIpOworI2lmIFFUX1ZFUlNJT04gPj0g
UVRfVkVSU0lPTl9DSEVDSyg1LCAyLCAwKQorICAgIGNhc2UgUXQ6OktleV9CbHVlOgorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJCbHVlIik7CisgICAgY2FzZSBRdDo6S2V5X0NoYW5uZWxE
b3duOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJDaGFubmVsRG93biIpOworICAgIGNh
c2UgUXQ6OktleV9DaGFubmVsVXA6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNoYW5u
ZWxVcCIpOworICAgIGNhc2UgUXQ6OktleV9HcmVlbjoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbCgiR3JlZW4iKTsKKyAgICBjYXNlIFF0OjpLZXlfUmVkOgorICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJSZWQiKTsKKyAgICBjYXNlIFF0OjpLZXlfWWVsbG93OgorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJZZWxsb3ciKTsKKyNlbmRpZgorICAgIC8vIEtleXMgd2UgaGF2ZSBy
ZXR1cm5lZCBVK2NoYXJjb2RlIGZvciBpbiB0aGUgcGFzdC4KKyAgICAvLyBGSVhNRTogQ2hhbmdl
IHRoZW0gdG8gY29ycmVjdCBzdGFuZGFyZCB2YWx1ZXMgaWYgb3RoZXJzIGRvLgorICAgIGNhc2Ug
UXQ6OktleV9UYWI6CisgICAgY2FzZSBRdDo6S2V5X0JhY2t0YWI6CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIlUrMDAwOSIpOyAvLyByZXR1cm4gQVNDSUlMaXRlcmFsKCJUYWIiKTsKKyAg
ICBjYXNlIFF0OjpLZXlfQmFja3NwYWNlOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJV
KzAwMDgiKTsgLy8gcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQmFja3NwYWNlIik7CisgICAgY2FzZSBR
dDo6S2V5X0RlbGV0ZToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiVSswMDdGIik7IC8v
IHJldHVybiBBU0NJSUxpdGVyYWwoIkRlbCIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChr
ZXlDb2RlIDwgMTI4KQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJVKyUwNFgi
LCB0b0FTQ0lJVXBwZXIoa2V5Q29kZSkpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorfQorCitpbnQgd2luZG93c0tleUNvZGVGb3JLZXlFdmVudCh1bnNpZ25lZCBpbnQga2V5Y29k
ZSwgYm9vbCBpc0tleXBhZCkKK3sKKyAgICAvLyBEZXRlcm1pbmUgd2hldGVyIHRoZSBldmVudCBj
b21lcyBmcm9tIHRoZSBrZXlwYWQKKyAgICBpZiAoaXNLZXlwYWQpIHsKKyAgICAgICAgc3dpdGNo
IChrZXljb2RlKSB7CisgICAgICAgIGNhc2UgUXQ6OktleV8wOgorICAgICAgICAgICAgcmV0dXJu
IFZLX05VTVBBRDA7IC8vICg2MCkgTnVtZXJpYyBrZXlwYWQgMCBrZXkKKyAgICAgICAgY2FzZSBR
dDo6S2V5XzE6CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFEMTsgLy8gKDYxKSBOdW1lcmlj
IGtleXBhZCAxIGtleQorICAgICAgICBjYXNlIFF0OjpLZXlfMjoKKyAgICAgICAgICAgIHJldHVy
biAgVktfTlVNUEFEMjsgLy8gKDYyKSBOdW1lcmljIGtleXBhZCAyIGtleQorICAgICAgICBjYXNl
IFF0OjpLZXlfMzoKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQzOyAvLyAoNjMpIE51bWVy
aWMga2V5cGFkIDMga2V5CisgICAgICAgIGNhc2UgUXQ6OktleV80OgorICAgICAgICAgICAgcmV0
dXJuIFZLX05VTVBBRDQ7IC8vICg2NCkgTnVtZXJpYyBrZXlwYWQgNCBrZXkKKyAgICAgICAgY2Fz
ZSBRdDo6S2V5XzU6CisgICAgICAgICAgICByZXR1cm4gVktfTlVNUEFENTsgLy8gKDY1KSBOdW1l
cmljIGtleXBhZCA1IGtleQorICAgICAgICBjYXNlIFF0OjpLZXlfNjoKKyAgICAgICAgICAgIHJl
dHVybiBWS19OVU1QQUQ2OyAvLyAoNjYpIE51bWVyaWMga2V5cGFkIDYga2V5CisgICAgICAgIGNh
c2UgUXQ6OktleV83OgorICAgICAgICAgICAgcmV0dXJuIFZLX05VTVBBRDc7IC8vICg2NykgTnVt
ZXJpYyBrZXlwYWQgNyBrZXkKKyAgICAgICAgY2FzZSBRdDo6S2V5Xzg6CisgICAgICAgICAgICBy
ZXR1cm4gVktfTlVNUEFEODsgLy8gKDY4KSBOdW1lcmljIGtleXBhZCA4IGtleQorICAgICAgICBj
YXNlIFF0OjpLZXlfOToKKyAgICAgICAgICAgIHJldHVybiBWS19OVU1QQUQ5OyAvLyAoNjkpIE51
bWVyaWMga2V5cGFkIDkga2V5CisgICAgICAgIGNhc2UgUXQ6OktleV9Bc3RlcmlzazoKKyAgICAg
ICAgICAgIHJldHVybiBWS19NVUxUSVBMWTsgLy8gKDZBKSBNdWx0aXBseSBrZXkKKyAgICAgICAg
Y2FzZSBRdDo6S2V5X1BsdXM6CisgICAgICAgICAgICByZXR1cm4gVktfQUREOyAvLyAoNkIpIEFk
ZCBrZXkKKyAgICAgICAgY2FzZSBRdDo6S2V5X01pbnVzOgorICAgICAgICAgICAgcmV0dXJuIFZL
X1NVQlRSQUNUOyAvLyAoNkQpIFN1YnRyYWN0IGtleQorICAgICAgICBjYXNlIFF0OjpLZXlfUGVy
aW9kOgorICAgICAgICAgICAgcmV0dXJuIFZLX0RFQ0lNQUw7IC8vICg2RSkgRGVjaW1hbCBrZXkK
KyAgICAgICAgY2FzZSBRdDo6S2V5X1NsYXNoOgorICAgICAgICAgICAgcmV0dXJuIFZLX0RJVklE
RTsgLy8gKDZGKSBEaXZpZGUga2V5CisgICAgICAgIGNhc2UgUXQ6OktleV9QYWdlVXA6CisgICAg
ICAgICAgICByZXR1cm4gVktfUFJJT1I7IC8vICgyMSkgUEFHRSBVUCBrZXkKKyAgICAgICAgY2Fz
ZSBRdDo6S2V5X1BhZ2VEb3duOgorICAgICAgICAgICAgcmV0dXJuIFZLX05FWFQ7IC8vICgyMikg
UEFHRSBET1dOIGtleQorICAgICAgICBjYXNlIFF0OjpLZXlfRW5kOgorICAgICAgICAgICAgcmV0
dXJuIFZLX0VORDsgLy8gKDIzKSBFTkQga2V5CisgICAgICAgIGNhc2UgUXQ6OktleV9Ib21lOgor
ICAgICAgICAgICAgcmV0dXJuIFZLX0hPTUU7IC8vICgyNCkgSE9NRSBrZXkKKyAgICAgICAgY2Fz
ZSBRdDo6S2V5X0xlZnQ6CisgICAgICAgICAgICByZXR1cm4gVktfTEVGVDsgLy8gKDI1KSBMRUZU
IEFSUk9XIGtleQorICAgICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICAgICByZXR1cm4g
VktfVVA7IC8vICgyNikgVVAgQVJST1cga2V5CisgICAgICAgIGNhc2UgUXQ6OktleV9SaWdodDoK
KyAgICAgICAgICAgIHJldHVybiBWS19SSUdIVDsgLy8gKDI3KSBSSUdIVCBBUlJPVyBrZXkKKyAg
ICAgICAgY2FzZSBRdDo6S2V5X0Rvd246CisgICAgICAgICAgICByZXR1cm4gVktfRE9XTjsgLy8g
KDI4KSBET1dOIEFSUk9XIGtleQorICAgICAgICBjYXNlIFF0OjpLZXlfRW50ZXI6CisgICAgICAg
IGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgICAgICAgICByZXR1cm4gVktfUkVUVVJOOyAvLyAo
MEQpIFJldHVybiBrZXkKKyAgICAgICAgY2FzZSBRdDo6S2V5X0luc2VydDoKKyAgICAgICAgICAg
IHJldHVybiBWS19JTlNFUlQ7IC8vICgyRCkgSU5TIGtleQorICAgICAgICBjYXNlIFF0OjpLZXlf
RGVsZXRlOgorICAgICAgICAgICAgcmV0dXJuIFZLX0RFTEVURTsgLy8gKDJFKSBERUwga2V5Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAg
fSBlbHNlCisKKyAgICBzd2l0Y2ggKGtleWNvZGUpIHsKKyAgICBjYXNlIFF0OjpLZXlfQmFja3Nw
YWNlOgorICAgICAgICByZXR1cm4gVktfQkFDSzsgLy8gKDA4KSBCQUNLU1BBQ0Uga2V5CisgICAg
Y2FzZSBRdDo6S2V5X0JhY2t0YWI6CisgICAgY2FzZSBRdDo6S2V5X1RhYjoKKyAgICAgICAgcmV0
dXJuIFZLX1RBQjsgLy8gKDA5KSBUQUIga2V5CisgICAgY2FzZSBRdDo6S2V5X0NsZWFyOgorICAg
ICAgICByZXR1cm4gVktfQ0xFQVI7IC8vICgwQykgQ0xFQVIga2V5CisgICAgY2FzZSBRdDo6S2V5
X0VudGVyOgorICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgICAgIHJldHVybiBWS19SRVRV
Uk47IC8vICgwRCkgUmV0dXJuIGtleQorICAgIGNhc2UgUXQ6OktleV9TaGlmdDoKKyAgICAgICAg
cmV0dXJuIFZLX1NISUZUOyAvLyAoMTApIFNISUZUIGtleQorICAgIGNhc2UgUXQ6OktleV9Db250
cm9sOgorICAgICAgICByZXR1cm4gVktfQ09OVFJPTDsgLy8gKDExKSBDVFJMIGtleQorICAgIGNh
c2UgUXQ6OktleV9BbHQ6CisgICAgICAgIHJldHVybiBWS19NRU5VOyAvLyAoMTIpIEFMVCBrZXkK
KworICAgIGNhc2UgUXQ6OktleV9GMToKKyAgICAgICAgcmV0dXJuIFZLX0YxOworICAgIGNhc2Ug
UXQ6OktleV9GMjoKKyAgICAgICAgcmV0dXJuIFZLX0YyOworICAgIGNhc2UgUXQ6OktleV9GMzoK
KyAgICAgICAgcmV0dXJuIFZLX0YzOworICAgIGNhc2UgUXQ6OktleV9GNDoKKyAgICAgICAgcmV0
dXJuIFZLX0Y0OworICAgIGNhc2UgUXQ6OktleV9GNToKKyAgICAgICAgcmV0dXJuIFZLX0Y1Owor
ICAgIGNhc2UgUXQ6OktleV9GNjoKKyAgICAgICAgcmV0dXJuIFZLX0Y2OworICAgIGNhc2UgUXQ6
OktleV9GNzoKKyAgICAgICAgcmV0dXJuIFZLX0Y3OworICAgIGNhc2UgUXQ6OktleV9GODoKKyAg
ICAgICAgcmV0dXJuIFZLX0Y4OworICAgIGNhc2UgUXQ6OktleV9GOToKKyAgICAgICAgcmV0dXJu
IFZLX0Y5OworICAgIGNhc2UgUXQ6OktleV9GMTA6CisgICAgICAgIHJldHVybiBWS19GMTA7Cisg
ICAgY2FzZSBRdDo6S2V5X0YxMToKKyAgICAgICAgcmV0dXJuIFZLX0YxMTsKKyAgICBjYXNlIFF0
OjpLZXlfRjEyOgorICAgICAgICByZXR1cm4gVktfRjEyOworICAgIGNhc2UgUXQ6OktleV9GMTM6
CisgICAgICAgIHJldHVybiBWS19GMTM7CisgICAgY2FzZSBRdDo6S2V5X0YxNDoKKyAgICAgICAg
cmV0dXJuIFZLX0YxNDsKKyAgICBjYXNlIFF0OjpLZXlfRjE1OgorICAgICAgICByZXR1cm4gVktf
RjE1OworICAgIGNhc2UgUXQ6OktleV9GMTY6CisgICAgICAgIHJldHVybiBWS19GMTY7CisgICAg
Y2FzZSBRdDo6S2V5X0YxNzoKKyAgICAgICAgcmV0dXJuIFZLX0YxNzsKKyAgICBjYXNlIFF0OjpL
ZXlfRjE4OgorICAgICAgICByZXR1cm4gVktfRjE4OworICAgIGNhc2UgUXQ6OktleV9GMTk6Cisg
ICAgICAgIHJldHVybiBWS19GMTk7CisgICAgY2FzZSBRdDo6S2V5X0YyMDoKKyAgICAgICAgcmV0
dXJuIFZLX0YyMDsKKyAgICBjYXNlIFF0OjpLZXlfRjIxOgorICAgICAgICByZXR1cm4gVktfRjIx
OworICAgIGNhc2UgUXQ6OktleV9GMjI6CisgICAgICAgIHJldHVybiBWS19GMjI7CisgICAgY2Fz
ZSBRdDo6S2V5X0YyMzoKKyAgICAgICAgcmV0dXJuIFZLX0YyMzsKKyAgICBjYXNlIFF0OjpLZXlf
RjI0OgorICAgICAgICByZXR1cm4gVktfRjI0OworCisgICAgY2FzZSBRdDo6S2V5X1BhdXNlOgor
ICAgICAgICByZXR1cm4gVktfUEFVU0U7IC8vICgxMykgUEFVU0Uga2V5CisgICAgY2FzZSBRdDo6
S2V5X0NhcHNMb2NrOgorICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsgLy8gKDE0KSBDQVBTIExP
Q0sga2V5CisgICAgY2FzZSBRdDo6S2V5X0thbmFfTG9jazoKKyAgICBjYXNlIFF0OjpLZXlfS2Fu
YV9TaGlmdDoKKyAgICAgICAgcmV0dXJuIFZLX0tBTkE7IC8vICgxNSkgSW5wdXQgTWV0aG9kIEVk
aXRvciAoSU1FKSBLYW5hIG1vZGUKKyAgICBjYXNlIFF0OjpLZXlfSGFuZ3VsOgorICAgICAgICBy
ZXR1cm4gVktfSEFOR1VMOyAvLyBWS19IQU5HVUwgKDE1KSBJTUUgSGFuZ3VsIG1vZGUKKyAgICAg
ICAgLy8gVktfSlVOSkEgKDE3KSBJTUUgSnVuamEgbW9kZQorICAgICAgICAvLyBWS19GSU5BTCAo
MTgpIElNRSBmaW5hbCBtb2RlCisgICAgY2FzZSBRdDo6S2V5X0hhbmd1bF9IYW5qYToKKyAgICAg
ICAgcmV0dXJuIFZLX0hBTkpBOyAvLyAoMTkpIElNRSBIYW5qYSBtb2RlCisgICAgY2FzZSBRdDo6
S2V5X0thbmppOgorICAgICAgICByZXR1cm4gVktfS0FOSkk7IC8vICgxOSkgSU1FIEthbmppIG1v
ZGUKKyAgICBjYXNlIFF0OjpLZXlfRXNjYXBlOgorICAgICAgICByZXR1cm4gVktfRVNDQVBFOyAv
LyAoMUIpIEVTQyBrZXkKKyAgICAgICAgLy8gVktfQ09OVkVSVCAoMUMpIElNRSBjb252ZXJ0Cisg
ICAgICAgIC8vIFZLX05PTkNPTlZFUlQgKDFEKSBJTUUgbm9uY29udmVydAorICAgICAgICAvLyBW
S19BQ0NFUFQgKDFFKSBJTUUgYWNjZXB0CisgICAgICAgIC8vIFZLX01PREVDSEFOR0UgKDFGKSBJ
TUUgbW9kZSBjaGFuZ2UgcmVxdWVzdAorICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKyAgICAgICAg
cmV0dXJuIFZLX1NQQUNFOyAvLyAoMjApIFNQQUNFQkFSCisgICAgY2FzZSBRdDo6S2V5X1BhZ2VV
cDoKKyAgICAgICAgcmV0dXJuIFZLX1BSSU9SOyAvLyAoMjEpIFBBR0UgVVAga2V5CisgICAgY2Fz
ZSBRdDo6S2V5X1BhZ2VEb3duOgorICAgICAgICByZXR1cm4gVktfTkVYVDsgLy8gKDIyKSBQQUdF
IERPV04ga2V5CisgICAgY2FzZSBRdDo6S2V5X0VuZDoKKyAgICAgICAgcmV0dXJuIFZLX0VORDsg
Ly8gKDIzKSBFTkQga2V5CisgICAgY2FzZSBRdDo6S2V5X0hvbWU6CisgICAgICAgIHJldHVybiBW
S19IT01FOyAvLyAoMjQpIEhPTUUga2V5CisgICAgY2FzZSBRdDo6S2V5X0xlZnQ6CisgICAgICAg
IHJldHVybiBWS19MRUZUOyAvLyAoMjUpIExFRlQgQVJST1cga2V5CisgICAgY2FzZSBRdDo6S2V5
X1VwOgorICAgICAgICByZXR1cm4gVktfVVA7IC8vICgyNikgVVAgQVJST1cga2V5CisgICAgY2Fz
ZSBRdDo6S2V5X1JpZ2h0OgorICAgICAgICByZXR1cm4gVktfUklHSFQ7IC8vICgyNykgUklHSFQg
QVJST1cga2V5CisgICAgY2FzZSBRdDo6S2V5X0Rvd246CisgICAgICAgIHJldHVybiBWS19ET1dO
OyAvLyAoMjgpIERPV04gQVJST1cga2V5CisgICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKyAgICAg
ICAgcmV0dXJuIFZLX1NFTEVDVDsgLy8gKDI5KSBTRUxFQ1Qga2V5CisgICAgY2FzZSBRdDo6S2V5
X1ByaW50OgorICAgICAgICByZXR1cm4gVktfU05BUFNIT1Q7IC8vICgyQSkgUFJJTlQga2V5Cisg
ICAgY2FzZSBRdDo6S2V5X0V4ZWN1dGU6CisgICAgICAgIHJldHVybiBWS19FWEVDVVRFOyAvLyAo
MkIpIEVYRUNVVEUga2V5CisgICAgY2FzZSBRdDo6S2V5X0luc2VydDoKKyAgICAgICAgcmV0dXJu
IFZLX0lOU0VSVDsgLy8gKDJEKSBJTlMga2V5CisgICAgY2FzZSBRdDo6S2V5X0RlbGV0ZToKKyAg
ICAgICAgcmV0dXJuIFZLX0RFTEVURTsgLy8gKDJFKSBERUwga2V5CisgICAgY2FzZSBRdDo6S2V5
X0hlbHA6CisgICAgICAgIHJldHVybiBWS19IRUxQOyAvLyAoMkYpIEhFTFAga2V5CisgICAgY2Fz
ZSBRdDo6S2V5XzA6CisgICAgY2FzZSBRdDo6S2V5X1BhcmVuTGVmdDoKKyAgICAgICAgcmV0dXJu
IFZLXzA7IC8vICgzMCkgMCkga2V5CisgICAgY2FzZSBRdDo6S2V5XzE6CisgICAgICAgIHJldHVy
biBWS18xOyAvLyAoMzEpIDEgISBrZXkKKyAgICBjYXNlIFF0OjpLZXlfMjoKKyAgICBjYXNlIFF0
OjpLZXlfQXQ6CisgICAgICAgIHJldHVybiBWS18yOyAvLyAoMzIpIDIgJiBrZXkKKyAgICBjYXNl
IFF0OjpLZXlfMzoKKyAgICBjYXNlIFF0OjpLZXlfTnVtYmVyU2lnbjoKKyAgICAgICAgcmV0dXJu
IFZLXzM7IC8vIGNhc2UgJzMnOiBjYXNlICcjJzsKKyAgICBjYXNlIFF0OjpLZXlfNDoKKyAgICBj
YXNlIFF0OjpLZXlfRG9sbGFyOiAvLyAoMzQpIDQga2V5ICckJzsKKyAgICAgICAgcmV0dXJuIFZL
XzQ7CisgICAgY2FzZSBRdDo6S2V5XzU6CisgICAgY2FzZSBRdDo6S2V5X1BlcmNlbnQ6CisgICAg
ICAgIHJldHVybiBWS181OyAvLyAoMzUpIDUga2V5ICAnJScKKyAgICBjYXNlIFF0OjpLZXlfNjoK
KyAgICBjYXNlIFF0OjpLZXlfQXNjaWlDaXJjdW06CisgICAgICAgIHJldHVybiBWS182OyAvLyAo
MzYpIDYga2V5ICAnXicKKyAgICBjYXNlIFF0OjpLZXlfNzoKKyAgICBjYXNlIFF0OjpLZXlfQW1w
ZXJzYW5kOgorICAgICAgICByZXR1cm4gVktfNzsgLy8gKDM3KSA3IGtleSAgY2FzZSAnJicKKyAg
ICBjYXNlIFF0OjpLZXlfODoKKyAgICBjYXNlIFF0OjpLZXlfQXN0ZXJpc2s6CisgICAgICAgIHJl
dHVybiBWS184OyAvLyAoMzgpIDgga2V5ICAnKicKKyAgICBjYXNlIFF0OjpLZXlfOToKKyAgICBj
YXNlIFF0OjpLZXlfUGFyZW5SaWdodDoKKyAgICAgICAgcmV0dXJuIFZLXzk7IC8vICgzOSkgOSBr
ZXkgJygnCisgICAgY2FzZSBRdDo6S2V5X0E6CisgICAgICAgIHJldHVybiBWS19BOyAvLyAoNDEp
IEEga2V5IGNhc2UgJ2EnOiBjYXNlICdBJzogcmV0dXJuIDB4NDE7CisgICAgY2FzZSBRdDo6S2V5
X0I6CisgICAgICAgIHJldHVybiBWS19COyAvLyAoNDIpIEIga2V5IGNhc2UgJ2InOiBjYXNlICdC
JzogcmV0dXJuIDB4NDI7CisgICAgY2FzZSBRdDo6S2V5X0M6CisgICAgICAgIHJldHVybiBWS19D
OyAvLyAoNDMpIEMga2V5IGNhc2UgJ2MnOiBjYXNlICdDJzogcmV0dXJuIDB4NDM7CisgICAgY2Fz
ZSBRdDo6S2V5X0Q6CisgICAgICAgIHJldHVybiBWS19EOyAvLyAoNDQpIEQga2V5IGNhc2UgJ2Qn
OiBjYXNlICdEJzogcmV0dXJuIDB4NDQ7CisgICAgY2FzZSBRdDo6S2V5X0U6CisgICAgICAgIHJl
dHVybiBWS19FOyAvLyAoNDUpIEUga2V5IGNhc2UgJ2UnOiBjYXNlICdFJzogcmV0dXJuIDB4NDU7
CisgICAgY2FzZSBRdDo6S2V5X0Y6CisgICAgICAgIHJldHVybiBWS19GOyAvLyAoNDYpIEYga2V5
IGNhc2UgJ2YnOiBjYXNlICdGJzogcmV0dXJuIDB4NDY7CisgICAgY2FzZSBRdDo6S2V5X0c6Cisg
ICAgICAgIHJldHVybiBWS19HOyAvLyAoNDcpIEcga2V5IGNhc2UgJ2cnOiBjYXNlICdHJzogcmV0
dXJuIDB4NDc7CisgICAgY2FzZSBRdDo6S2V5X0g6CisgICAgICAgIHJldHVybiBWS19IOyAvLyAo
NDgpIEgga2V5IGNhc2UgJ2gnOiBjYXNlICdIJzogcmV0dXJuIDB4NDg7CisgICAgY2FzZSBRdDo6
S2V5X0k6CisgICAgICAgIHJldHVybiBWS19JOyAvLyAoNDkpIEkga2V5IGNhc2UgJ2knOiBjYXNl
ICdJJzogcmV0dXJuIDB4NDk7CisgICAgY2FzZSBRdDo6S2V5X0o6CisgICAgICAgIHJldHVybiBW
S19KOyAvLyAoNEEpIEoga2V5IGNhc2UgJ2onOiBjYXNlICdKJzogcmV0dXJuIDB4NEE7CisgICAg
Y2FzZSBRdDo6S2V5X0s6CisgICAgICAgIHJldHVybiBWS19LOyAvLyAoNEIpIEsga2V5IGNhc2Ug
J2snOiBjYXNlICdLJzogcmV0dXJuIDB4NEI7CisgICAgY2FzZSBRdDo6S2V5X0w6CisgICAgICAg
IHJldHVybiBWS19MOyAvLyAoNEMpIEwga2V5IGNhc2UgJ2wnOiBjYXNlICdMJzogcmV0dXJuIDB4
NEM7CisgICAgY2FzZSBRdDo6S2V5X006CisgICAgICAgIHJldHVybiBWS19NOyAvLyAoNEQpIE0g
a2V5IGNhc2UgJ20nOiBjYXNlICdNJzogcmV0dXJuIDB4NEQ7CisgICAgY2FzZSBRdDo6S2V5X046
CisgICAgICAgIHJldHVybiBWS19OOyAvLyAoNEUpIE4ga2V5IGNhc2UgJ24nOiBjYXNlICdOJzog
cmV0dXJuIDB4NEU7CisgICAgY2FzZSBRdDo6S2V5X086CisgICAgICAgIHJldHVybiBWS19POyAv
LyAoNEYpIE8ga2V5IGNhc2UgJ28nOiBjYXNlICdPJzogcmV0dXJuIDB4NEY7CisgICAgY2FzZSBR
dDo6S2V5X1A6CisgICAgICAgIHJldHVybiBWS19QOyAvLyAoNTApIFAga2V5IGNhc2UgJ3AnOiBj
YXNlICdQJzogcmV0dXJuIDB4NTA7CisgICAgY2FzZSBRdDo6S2V5X1E6CisgICAgICAgIHJldHVy
biBWS19ROyAvLyAoNTEpIFEga2V5IGNhc2UgJ3EnOiBjYXNlICdRJzogcmV0dXJuIDB4NTE7Cisg
ICAgY2FzZSBRdDo6S2V5X1I6CisgICAgICAgIHJldHVybiBWS19SOyAvLyAoNTIpIFIga2V5IGNh
c2UgJ3InOiBjYXNlICdSJzogcmV0dXJuIDB4NTI7CisgICAgY2FzZSBRdDo6S2V5X1M6CisgICAg
ICAgIHJldHVybiBWS19TOyAvLyAoNTMpIFMga2V5IGNhc2UgJ3MnOiBjYXNlICdTJzogcmV0dXJu
IDB4NTM7CisgICAgY2FzZSBRdDo6S2V5X1Q6CisgICAgICAgIHJldHVybiBWS19UOyAvLyAoNTQp
IFQga2V5IGNhc2UgJ3QnOiBjYXNlICdUJzogcmV0dXJuIDB4NTQ7CisgICAgY2FzZSBRdDo6S2V5
X1U6CisgICAgICAgIHJldHVybiBWS19VOyAvLyAoNTUpIFUga2V5IGNhc2UgJ3UnOiBjYXNlICdV
JzogcmV0dXJuIDB4NTU7CisgICAgY2FzZSBRdDo6S2V5X1Y6CisgICAgICAgIHJldHVybiBWS19W
OyAvLyAoNTYpIFYga2V5IGNhc2UgJ3YnOiBjYXNlICdWJzogcmV0dXJuIDB4NTY7CisgICAgY2Fz
ZSBRdDo6S2V5X1c6CisgICAgICAgIHJldHVybiBWS19XOyAvLyAoNTcpIFcga2V5IGNhc2UgJ3cn
OiBjYXNlICdXJzogcmV0dXJuIDB4NTc7CisgICAgY2FzZSBRdDo6S2V5X1g6CisgICAgICAgIHJl
dHVybiBWS19YOyAvLyAoNTgpIFgga2V5IGNhc2UgJ3gnOiBjYXNlICdYJzogcmV0dXJuIDB4NTg7
CisgICAgY2FzZSBRdDo6S2V5X1k6CisgICAgICAgIHJldHVybiBWS19ZOyAvLyAoNTkpIFkga2V5
IGNhc2UgJ3knOiBjYXNlICdZJzogcmV0dXJuIDB4NTk7CisgICAgY2FzZSBRdDo6S2V5X1o6Cisg
ICAgICAgIHJldHVybiBWS19aOyAvLyAoNUEpIFoga2V5IGNhc2UgJ3onOiBjYXNlICdaJzogcmV0
dXJuIDB4NUE7CisgICAgY2FzZSBRdDo6S2V5X01ldGE6CisgICAgICAgIHJldHVybiBWS19MV0lO
OyAvLyAoNUIpIExlZnQgV2luZG93cyBrZXkgKE1pY3Jvc29mdCBOYXR1cmFsIGtleWJvYXJkKQor
ICAgICAgICAvLyBjYXNlIFF0OjpLZXlfTWV0YV9SOiBGSVhNRTogV2hhdCB0byBkbyBoZXJlPwor
ICAgICAgICAvLyAgICByZXR1cm4gVktfUldJTjsgLy8gKDVDKSBSaWdodCBXaW5kb3dzIGtleSAo
TmF0dXJhbCBrZXlib2FyZCkKKyAgICBjYXNlIFF0OjpLZXlfTWVudToKKyAgICAgICAgcmV0dXJu
IFZLX0FQUFM7IC8vICg1RCkgQXBwbGljYXRpb25zIGtleSAoTmF0dXJhbCBrZXlib2FyZCkKKyAg
ICAgICAgLy8gVktfU0xFRVAgKDVGKSBDb21wdXRlciBTbGVlcCBrZXkKKyAgICAgICAgLy8gVktf
U0VQQVJBVE9SICg2QykgU2VwYXJhdG9yIGtleQorICAgICAgICAvLyBWS19TVUJUUkFDVCAoNkQp
IFN1YnRyYWN0IGtleQorICAgICAgICAvLyBWS19ERUNJTUFMICg2RSkgRGVjaW1hbCBrZXkKKyAg
ICAgICAgLy8gVktfRElWSURFICg2RikgRGl2aWRlIGtleQorICAgICAgICAvLyBoYW5kbGVkIGJ5
IGtleSBjb2RlIGFib3ZlCisKKyAgICBjYXNlIFF0OjpLZXlfTnVtTG9jazoKKyAgICAgICAgcmV0
dXJuIFZLX05VTUxPQ0s7IC8vICg5MCkgTlVNIExPQ0sga2V5CisKKyAgICBjYXNlIFF0OjpLZXlf
U2Nyb2xsTG9jazoKKyAgICAgICAgcmV0dXJuIFZLX1NDUk9MTDsgLy8gKDkxKSBTQ1JPTEwgTE9D
SyBrZXkKKworICAgICAgICAvLyBWS19MU0hJRlQgKEEwKSBMZWZ0IFNISUZUIGtleQorICAgICAg
ICAvLyBWS19SU0hJRlQgKEExKSBSaWdodCBTSElGVCBrZXkKKyAgICAgICAgLy8gVktfTENPTlRS
T0wgKEEyKSBMZWZ0IENPTlRST0wga2V5CisgICAgICAgIC8vIFZLX1JDT05UUk9MIChBMykgUmln
aHQgQ09OVFJPTCBrZXkKKyAgICAgICAgLy8gVktfTE1FTlUgKEE0KSBMZWZ0IE1FTlUga2V5Cisg
ICAgICAgIC8vIFZLX1JNRU5VIChBNSkgUmlnaHQgTUVOVSBrZXkKKyAgICAgICAgLy8gVktfQlJP
V1NFUl9CQUNLIChBNikgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIEJhY2sga2V5CisgICAgICAg
IC8vIFZLX0JST1dTRVJfRk9SV0FSRCAoQTcpIFdpbmRvd3MgMjAwMC9YUDogQnJvd3NlciBGb3J3
YXJkIGtleQorICAgICAgICAvLyBWS19CUk9XU0VSX1JFRlJFU0ggKEE4KSBXaW5kb3dzIDIwMDAv
WFA6IEJyb3dzZXIgUmVmcmVzaCBrZXkKKyAgICAgICAgLy8gVktfQlJPV1NFUl9TVE9QIChBOSkg
V2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFN0b3Aga2V5CisgICAgICAgIC8vIFZLX0JST1dTRVJf
U0VBUkNIIChBQSkgV2luZG93cyAyMDAwL1hQOiBCcm93c2VyIFNlYXJjaCBrZXkKKyAgICAgICAg
Ly8gVktfQlJPV1NFUl9GQVZPUklURVMgKEFCKSBXaW5kb3dzIDIwMDAvWFA6IEJyb3dzZXIgRmF2
b3JpdGVzIGtleQorICAgICAgICAvLyBWS19CUk9XU0VSX0hPTUUgKEFDKSBXaW5kb3dzIDIwMDAv
WFA6IEJyb3dzZXIgU3RhcnQgYW5kIEhvbWUga2V5CisKKyAgICBjYXNlIFF0OjpLZXlfVm9sdW1l
TXV0ZToKKyAgICAgICAgcmV0dXJuIFZLX1ZPTFVNRV9NVVRFOyAvLyAoQUQpIFdpbmRvd3MgMjAw
MC9YUDogVm9sdW1lIE11dGUga2V5CisgICAgY2FzZSBRdDo6S2V5X1ZvbHVtZURvd246CisgICAg
ICAgIHJldHVybiBWS19WT0xVTUVfRE9XTjsgLy8gKEFFKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVt
ZSBEb3duIGtleQorICAgIGNhc2UgUXQ6OktleV9Wb2x1bWVVcDoKKyAgICAgICAgcmV0dXJuIFZL
X1ZPTFVNRV9VUDsgLy8gKEFGKSBXaW5kb3dzIDIwMDAvWFA6IFZvbHVtZSBVcCBrZXkKKyAgICBj
YXNlIFF0OjpLZXlfTWVkaWFOZXh0OgorICAgICAgICByZXR1cm4gVktfTUVESUFfTkVYVF9UUkFD
SzsgLy8gKEIwKSBXaW5kb3dzIDIwMDAvWFA6IE5leHQgVHJhY2sga2V5CisgICAgY2FzZSBRdDo6
S2V5X01lZGlhUHJldmlvdXM6CisgICAgICAgIHJldHVybiBWS19NRURJQV9QUkVWX1RSQUNLOyAv
LyAoQjEpIFdpbmRvd3MgMjAwMC9YUDogUHJldmlvdXMgVHJhY2sga2V5CisgICAgY2FzZSBRdDo6
S2V5X01lZGlhU3RvcDoKKyAgICAgICAgcmV0dXJuIFZLX01FRElBX1NUT1A7IC8vIChCMikgV2lu
ZG93cyAyMDAwL1hQOiBTdG9wIE1lZGlhIGtleQorICAgIGNhc2UgUXQ6OktleV9NZWRpYVRvZ2ds
ZVBsYXlQYXVzZToKKyAgICAgICAgcmV0dXJuIFZLX01FRElBX1BMQVlfUEFVU0U7IC8vIChCMykg
V2luZG93cyAyMDAwL1hQOiBQbGF5L1BhdXNlIE1lZGlhIGtleQorCisgICAgICAgIC8vIFZLX0xB
VU5DSF9NQUlMIChCNCkgV2luZG93cyAyMDAwL1hQOiBTdGFydCBNYWlsIGtleQorICAgICAgICAv
LyBWS19MQVVOQ0hfTUVESUFfU0VMRUNUIChCNSkgV2luZG93cyAyMDAwL1hQOiBTZWxlY3QgTWVk
aWEga2V5CisgICAgICAgIC8vIFZLX0xBVU5DSF9BUFAxIChCNikgV2luZG93cyAyMDAwL1hQOiBT
dGFydCBBcHBsaWNhdGlvbiAxIGtleQorICAgICAgICAvLyBWS19MQVVOQ0hfQVBQMiAoQjcpIFdp
bmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBrZXkKKworICAgICAgICAvLyBWS19P
RU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkg
Ynkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2Fy
ZCwgdGhlICc7Oicga2V5CisgICAgY2FzZSBRdDo6S2V5X1NlbWljb2xvbjoKKyAgICBjYXNlIFF0
OjpLZXlfQ29sb246CisgICAgICAgIHJldHVybiBWS19PRU1fMTsgLy8gY2FzZSAnOyc6IGNhc2Ug
JzonOiByZXR1cm4gMHhCQTsKKyAgICAgICAgLy8gVktfT0VNX1BMVVMgKEJCKSBXaW5kb3dzIDIw
MDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdpb24sIHRoZSAnKycga2V5CisgICAgY2FzZSBRdDo6
S2V5X1BsdXM6CisgICAgY2FzZSBRdDo6S2V5X0VxdWFsOgorICAgICAgICByZXR1cm4gVktfT0VN
X1BMVVM7IC8vIGNhc2UgJz0nOiBjYXNlICcrJzogcmV0dXJuIDB4QkI7CisgICAgICAgIC8vIFZL
X09FTV9DT01NQSAoQkMpIFdpbmRvd3MgMjAwMC9YUDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwg
dGhlICcsJyBrZXkKKyAgICBjYXNlIFF0OjpLZXlfQ29tbWE6CisgICAgY2FzZSBRdDo6S2V5X0xl
c3M6CisgICAgICAgIHJldHVybiBWS19PRU1fQ09NTUE7IC8vIGNhc2UgJywnOiBjYXNlICc8Jzog
cmV0dXJuIDB4QkM7CisgICAgICAgIC8vIFZLX09FTV9NSU5VUyAoQkQpIFdpbmRvd3MgMjAwMC9Y
UDogRm9yIGFueSBjb3VudHJ5L3JlZ2lvbiwgdGhlICctJyBrZXkKKyAgICBjYXNlIFF0OjpLZXlf
TWludXM6CisgICAgY2FzZSBRdDo6S2V5X1VuZGVyc2NvcmU6CisgICAgICAgIHJldHVybiBWS19P
RU1fTUlOVVM7IC8vIGNhc2UgJy0nOiBjYXNlICdfJzogcmV0dXJuIDB4QkQ7CisgICAgICAgIC8v
IFZLX09FTV9QRVJJT0QgKEJFKSBXaW5kb3dzIDIwMDAvWFA6IEZvciBhbnkgY291bnRyeS9yZWdp
b24sIHRoZSAnLicga2V5CisgICAgY2FzZSBRdDo6S2V5X1BlcmlvZDoKKyAgICBjYXNlIFF0OjpL
ZXlfR3JlYXRlcjoKKyAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7IC8vIGNhc2UgJy4nOiBj
YXNlICc+JzogcmV0dXJuIDB4QkU7CisgICAgICAgIC8vIFZLX09FTV8yIChCRikgVXNlZCBmb3Ig
bWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93
cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0aGUgJy8/JyBrZXkKKyAg
ICBjYXNlIFF0OjpLZXlfU2xhc2g6CisgICAgY2FzZSBRdDo6S2V5X1F1ZXN0aW9uOgorICAgICAg
ICByZXR1cm4gVktfT0VNXzI7IC8vIGNhc2UgJy8nOiBjYXNlICc/JzogcmV0dXJuIDB4QkY7Cisg
ICAgICAgIC8vIFZLX09FTV8zIChDMCkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJz
OyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0
YW5kYXJkIGtleWJvYXJkLCB0aGUgJ2B+JyBrZXkKKyAgICBjYXNlIFF0OjpLZXlfQXNjaWlUaWxk
ZToKKyAgICBjYXNlIFF0OjpLZXlfUXVvdGVMZWZ0OgorICAgICAgICByZXR1cm4gVktfT0VNXzM7
IC8vIGNhc2UgJ2AnOiBjYXNlICd+JzogcmV0dXJuIDB4QzA7CisgICAgICAgIC8vIFZLX09FTV80
IChEQikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBr
ZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJkIGtleWJvYXJkLCB0
aGUgJ1t7JyBrZXkKKyAgICBjYXNlIFF0OjpLZXlfQnJhY2tldExlZnQ6CisgICAgY2FzZSBRdDo6
S2V5X0JyYWNlTGVmdDoKKyAgICAgICAgcmV0dXJuIFZLX09FTV80OyAvLyBjYXNlICdbJzogY2Fz
ZSAneyc6IHJldHVybiAweERCOworICAgICAgICAvLyBWS19PRU1fNSAoREMpIFVzZWQgZm9yIG1p
c2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3Mg
MjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwgdGhlICdcfCcga2V5CisgICAg
Y2FzZSBRdDo6S2V5X0JhY2tzbGFzaDoKKyAgICBjYXNlIFF0OjpLZXlfQmFyOgorICAgICAgICBy
ZXR1cm4gVktfT0VNXzU7IC8vIGNhc2UgJ1xcJzogY2FzZSAnfCc6IHJldHVybiAweERDOworICAg
ICAgICAvLyBWS19PRU1fNiAoREQpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsg
aXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFu
ZGFyZCBrZXlib2FyZCwgdGhlICddfScga2V5CisgICAgY2FzZSBRdDo6S2V5X0JyYWNrZXRSaWdo
dDoKKyAgICBjYXNlIFF0OjpLZXlfQnJhY2VSaWdodDoKKyAgICAgICAgcmV0dXJuIFZLX09FTV82
OyAvLyBjYXNlICddJzogY2FzZSAnfSc6IHJldHVybiAweEREOworICAgICAgICAvLyBWS19PRU1f
NyAoREUpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkg
a2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBrZXlib2FyZCwg
dGhlICdzaW5nbGUtcXVvdGUvZG91YmxlLXF1b3RlJyBrZXkKKyAgICBjYXNlIFF0OjpLZXlfUXVv
dGVEYmw6CisgICAgICAgIHJldHVybiBWS19PRU1fNzsgLy8gY2FzZSAnXCcnOiBjYXNlICciJzog
cmV0dXJuIDB4REU7CisgICAgICAgIC8vIFZLX09FTV84IChERikgVXNlZCBmb3IgbWlzY2VsbGFu
ZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBrZXlib2FyZC4KKyAgICAgICAgLy8gVktf
T0VNXzEwMiAoRTIpIFdpbmRvd3MgMjAwMC9YUDogRWl0aGVyIHRoZSBhbmdsZSBicmFja2V0IGtl
eSBvciB0aGUgYmFja3NsYXNoIGtleSBvbiB0aGUgUlQgMTAyLWtleSBrZXlib2FyZAorCisgICAg
Y2FzZSBRdDo6S2V5X0F1ZGlvUmV3aW5kOgorICAgICAgICByZXR1cm4gMHhFMzsgLy8gKEUzKSBB
bmRyb2lkL0dvb2dsZVRWOiBSZXdpbmQgbWVkaWEga2V5IChXaW5kb3dzOiBWS19JQ09fSEVMUCBI
ZWxwIGtleSBvbiAxOTg0IE9saXZldHRpIE0yNCBkZWx1eGUga2V5Ym9hcmQpCisgICAgY2FzZSBR
dDo6S2V5X0F1ZGlvRm9yd2FyZDoKKyAgICAgICAgcmV0dXJuIDB4RTQ7IC8vIChFNCkgQW5kcm9p
ZC9Hb29nbGVUVjogRmFzdCBmb3J3YXJkIG1lZGlhIGtleSAgKFdpbmRvd3M6IFZLX0lDT18wMCAn
MDAnIGtleSBvbiAxOTg0IE9saXZldHRpIE0yNCBkZWx1eGUga2V5Ym9hcmQpCisKKyAgICAgICAg
Ly8gVktfUFJPQ0VTU0tFWSAoRTUpIFdpbmRvd3MgOTUvOTgvTWUsIFdpbmRvd3MgTlQgNC4wLCBX
aW5kb3dzIDIwMDAvWFA6IElNRSBQUk9DRVNTIGtleQorICAgICAgICAvLyBWS19QQUNLRVQgKEU3
KSBXaW5kb3dzIDIwMDAvWFA6IFVzZWQgdG8gcGFzcyBVbmljb2RlIGNoYXJhY3RlcnMgYXMgaWYg
dGhleSB3ZXJlIGtleXN0cm9rZXMuIFRoZSBWS19QQUNLRVQga2V5IGlzIHRoZSBsb3cgd29yZCBv
ZiBhIDMyLWJpdCBWaXJ0dWFsIEtleSB2YWx1ZSB1c2VkIGZvciBub24ta2V5Ym9hcmQgaW5wdXQg
bWV0aG9kcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSZW1hcmsgaW4gS0VZQkRJTlBVVCxT
ZW5kSW5wdXQsIFdNX0tFWURPV04sIGFuZCBXTV9LRVlVUAorICAgICAgICAvLyBWS19BVFROIChG
NikgQXR0biBrZXkKKyAgICAgICAgLy8gVktfQ1JTRUwgKEY3KSBDclNlbCBrZXkKKyAgICAgICAg
Ly8gVktfRVhTRUwgKEY4KSBFeFNlbCBrZXkKKyAgICAgICAgLy8gVktfRVJFT0YgKEY5KSBFcmFz
ZSBFT0Yga2V5CisgICAgICAgIC8vIFZLX1BMQVkgKEZBKSBQbGF5IGtleQorICAgICAgICAvLyBW
S19aT09NIChGQikgWm9vbSBrZXkKKyAgICAgICAgLy8gVktfTk9OQU1FIChGQykgUmVzZXJ2ZWQg
Zm9yIGZ1dHVyZSB1c2UKKyAgICAgICAgLy8gVktfUEExIChGRCkgUEExIGtleQorICAgICAgICAv
LyBWS19PRU1fQ0xFQVIgKEZFKSBDbGVhciBrZXkKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVmlydHVhbEtleUNvZGVSZXByZXNlbnRp
bmdDaGFyYWN0ZXIoaW50IGNvZGUpCit7CisgICAgc3dpdGNoIChjb2RlKSB7CisgICAgY2FzZSBW
S19TUEFDRToKKyAgICBjYXNlIFZLXzA6CisgICAgY2FzZSBWS18xOgorICAgIGNhc2UgVktfMjoK
KyAgICBjYXNlIFZLXzM6CisgICAgY2FzZSBWS180OgorICAgIGNhc2UgVktfNToKKyAgICBjYXNl
IFZLXzY6CisgICAgY2FzZSBWS183OgorICAgIGNhc2UgVktfODoKKyAgICBjYXNlIFZLXzk6Cisg
ICAgY2FzZSBWS19BOgorICAgIGNhc2UgVktfQjoKKyAgICBjYXNlIFZLX0M6CisgICAgY2FzZSBW
S19EOgorICAgIGNhc2UgVktfRToKKyAgICBjYXNlIFZLX0Y6CisgICAgY2FzZSBWS19HOgorICAg
IGNhc2UgVktfSDoKKyAgICBjYXNlIFZLX0k6CisgICAgY2FzZSBWS19KOgorICAgIGNhc2UgVktf
SzoKKyAgICBjYXNlIFZLX0w6CisgICAgY2FzZSBWS19NOgorICAgIGNhc2UgVktfTjoKKyAgICBj
YXNlIFZLX086CisgICAgY2FzZSBWS19QOgorICAgIGNhc2UgVktfUToKKyAgICBjYXNlIFZLX1I6
CisgICAgY2FzZSBWS19TOgorICAgIGNhc2UgVktfVDoKKyAgICBjYXNlIFZLX1U6CisgICAgY2Fz
ZSBWS19WOgorICAgIGNhc2UgVktfVzoKKyAgICBjYXNlIFZLX1g6CisgICAgY2FzZSBWS19ZOgor
ICAgIGNhc2UgVktfWjoKKyAgICBjYXNlIFZLX05VTVBBRDA6CisgICAgY2FzZSBWS19OVU1QQUQx
OgorICAgIGNhc2UgVktfTlVNUEFEMjoKKyAgICBjYXNlIFZLX05VTVBBRDM6CisgICAgY2FzZSBW
S19OVU1QQUQ0OgorICAgIGNhc2UgVktfTlVNUEFENToKKyAgICBjYXNlIFZLX05VTVBBRDY6Cisg
ICAgY2FzZSBWS19OVU1QQUQ3OgorICAgIGNhc2UgVktfTlVNUEFEODoKKyAgICBjYXNlIFZLX05V
TVBBRDk6CisgICAgY2FzZSBWS19NVUxUSVBMWToKKyAgICBjYXNlIFZLX0FERDoKKyAgICBjYXNl
IFZLX1NFUEFSQVRPUjoKKyAgICBjYXNlIFZLX1NVQlRSQUNUOgorICAgIGNhc2UgVktfREVDSU1B
TDoKKyAgICBjYXNlIFZLX0RJVklERToKKyAgICBjYXNlIFZLX09FTV8xOgorICAgIGNhc2UgVktf
T0VNX1BMVVM6CisgICAgY2FzZSBWS19PRU1fQ09NTUE6CisgICAgY2FzZSBWS19PRU1fTUlOVVM6
CisgICAgY2FzZSBWS19PRU1fUEVSSU9EOgorICAgIGNhc2UgVktfT0VNXzI6CisgICAgY2FzZSBW
S19PRU1fMzoKKyAgICBjYXNlIFZLX09FTV80OgorICAgIGNhc2UgVktfT0VNXzU6CisgICAgY2Fz
ZSBWS19PRU1fNjoKKyAgICBjYXNlIFZLX09FTV83OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgU3Ry
aW5nIGtleVRleHRGb3JLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqIGV2ZW50KQoreworICAgIHN3
aXRjaCAoZXZlbnQtPmtleSgpKSB7CisgICAgY2FzZSBRdDo6S2V5X1RhYjoKKyAgICBjYXNlIFF0
OjpLZXlfQmFja3RhYjoKKyAgICAgICAgaWYgKGV2ZW50LT50ZXh0KCkuaXNOdWxsKCkpCisgICAg
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJcdCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFF0OjpLZXlfUmV0dXJuOgorICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKyAgICAgICAgaWYg
KGV2ZW50LT50ZXh0KCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJcciIpOworICAgIH0KKyAgICByZXR1cm4gZXZlbnQtPnRleHQoKTsKK30KKworUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCwgYm9v
bCB1c2VOYXRpdmVWaXJ0dWFsS2V5QXNET01LZXkpCit7CisgICAgY29uc3QgaW50IHN0YXRlID0g
ZXZlbnQtPm1vZGlmaWVycygpOworICAgIG1fdHlwZSA9IChldmVudC0+dHlwZSgpID09IFFFdmVu
dDo6S2V5UmVsZWFzZSkgPyBQbGF0Zm9ybUV2ZW50OjpLZXlVcCA6IFBsYXRmb3JtRXZlbnQ6Oktl
eURvd247CisKKyAgICBtX21vZGlmaWVycyA9IDA7CisgICAgaWYgKChzdGF0ZSAmIFF0OjpTaGlm
dE1vZGlmaWVyKSB8fCBldmVudC0+a2V5KCkgPT0gUXQ6OktleV9CYWNrdGFiKSAvLyBTaW11bGF0
ZSBTaGlmdCtUYWIgd2l0aCBLZXlfQmFja3RhYgorICAgICAgICBtX21vZGlmaWVycyB8PSBTaGlm
dEtleTsKKyAgICBpZiAoc3RhdGUgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQorICAgICAgICBtX21v
ZGlmaWVycyB8PSBDdHJsS2V5OworICAgIGlmIChzdGF0ZSAmIFF0OjpBbHRNb2RpZmllcikKKyAg
ICAgICAgbV9tb2RpZmllcnMgfD0gQWx0S2V5OworICAgIGlmIChzdGF0ZSAmIFF0OjpNZXRhTW9k
aWZpZXIpCisgICAgICAgIG1fbW9kaWZpZXJzIHw9IE1ldGFLZXk7CisKKyAgICBtX3VzZU5hdGl2
ZVZpcnR1YWxLZXlBc0RPTUtleSA9IHVzZU5hdGl2ZVZpcnR1YWxLZXlBc0RPTUtleTsKKyAgICBt
X3RleHQgPSBrZXlUZXh0Rm9yS2V5RXZlbnQoZXZlbnQpOworICAgIG1fdW5tb2RpZmllZFRleHQg
PSBtX3RleHQ7IC8vIEZJWE1FOiBub3QgY29ycmVjdAorICAgIG1fa2V5SWRlbnRpZmllciA9IGtl
eUlkZW50aWZpZXJGb3JRdEtleUNvZGUoZXZlbnQtPmtleSgpKTsKKyAgICBtX2F1dG9SZXBlYXQg
PSBldmVudC0+aXNBdXRvUmVwZWF0KCk7CisgICAgbV9pc0tleXBhZCA9IChzdGF0ZSAmIFF0OjpL
ZXlwYWRNb2RpZmllcik7CisgICAgbV9pc1N5c3RlbUtleSA9IGZhbHNlOworICAgIG1fbmF0aXZl
VmlydHVhbEtleUNvZGUgPSBldmVudC0+bmF0aXZlVmlydHVhbEtleSgpOworICAgIC8vIElmIFFL
ZXlFdmVudDo6bmF0aXZlVmlydHVhbEtleSgpIGlzIHZhbGlkICghPTApIGFuZCB1c2VOYXRpdmVW
aXJ0dWFsS2V5QXNET01LZXkgaXMgc2V0LAorICAgIC8vIHRoZW4gaXQgaXMgYSBzcGVjaWFsIGNh
c2UgZGVzaXJlZCBieSBRdFdlYktpdCBlbWJlZGRlciB0byBzZW5kIGRvbWFpbiBzcGVjaWZpYyBr
ZXlzCisgICAgLy8gdG8gV2ViIEFwcGxpY2F0aW9ucyBpbnRlbnRlZCBmb3IgcGxhdGZvcm1zIGxp
a2UgSGJiVFYsQ0UtSFRNTCxPSVBGLC4uZXRjLgorICAgIGlmICh1c2VOYXRpdmVWaXJ0dWFsS2V5
QXNET01LZXkgJiYgbV9uYXRpdmVWaXJ0dWFsS2V5Q29kZSkKKyAgICAgICAgbV93aW5kb3dzVmly
dHVhbEtleUNvZGUgPSBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlOworICAgIGVsc2UKKyAgICAgICAg
bV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSB3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGV2ZW50
LT5rZXkoKSwgbV9pc0tleXBhZCk7CisKKyAgICBtX21hY0NoYXJDb2RlID0gMDsKKyAgICBtX3F0
RXZlbnQgPSBldmVudDsKKyAgICBtX3RpbWVzdGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsKK30K
Kwordm9pZCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChU
eXBlIHR5cGUsIGJvb2wpCit7CisgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJvbSBLZXlE
b3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBmb3Igb3Ro
ZXIgY29udmVyc2lvbnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duKTsKKyAgICBtX3R5cGUgPSB0eXBlOworCisgICAgaWYgKHR5cGUgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikgeworICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgbV91
bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qCisgICAg
ICAgICAgICBXaGVuIHdlIHJlY2VpdmUgc2hvcnRjdXQgZXZlbnRzIGxpa2UgQ3RybCtWIHRoZW4g
dGhlIHRleHQgaW4gdGhlIFFLZXlFdmVudCBpcworICAgICAgICAgICAgZW1wdHkuIElmIHdlJ3Jl
IGFza2VkIHRvIGRpc2FtYmlndWF0ZSB0aGUgZXZlbnQgaW50byBhIENoYXIga2V5Ym9hcmQgZXZl
bnQsCisgICAgICAgICAgICB3ZSB0cnkgdG8gZGV0ZWN0IHRoaXMgc2l0dWF0aW9uIGFuZCBzdGls
bCBzZXQgdGhlIHRleHQsIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgICAgICAgZ2VuZXJhbCBl
dmVudCBoYW5kbGluZyBzZW5kcyBhIGtleSBwcmVzcyBldmVudCBhZnRlciB0aGlzIGRpc2FtYmln
dWF0aW9uLgorICAgICAgICAqLworICAgICAgICBpZiAoIW1fdXNlTmF0aXZlVmlydHVhbEtleUFz
RE9NS2V5ICYmIG1fdGV4dC5pc0VtcHR5KCkgJiYgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgJiYg
aXNWaXJ0dWFsS2V5Q29kZVJlcHJlc2VudGluZ0NoYXJhY3RlcihtX3dpbmRvd3NWaXJ0dWFsS2V5
Q29kZSkpCisgICAgICAgICAgICBtX3RleHQuYXBwZW5kKFVDaGFyKG1fd2luZG93c1ZpcnR1YWxL
ZXlDb2RlKSk7CisKKyAgICAgICAgbV9rZXlJZGVudGlmaWVyID0gU3RyaW5nKCk7CisgICAgICAg
IG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gMDsKKyAgICB9Cit9CisKK2Jvb2wgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShib29sJiBzaGlmdEtleSwgYm9vbCYgY3RybEtleSwg
Ym9vbCYgYWx0S2V5LCBib29sJiBtZXRhS2V5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgc2hpZnRLZXkgPSBmYWxzZTsKKyAgICBjdHJsS2V5ID0gZmFsc2U7CisgICAgYWx0S2V5ID0g
ZmFsc2U7CisgICAgbWV0YUtleSA9IGZhbHNlOworfQorCit1aW50MzJfdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6Om5hdGl2ZU1vZGlmaWVycygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcXRFdmVu
dCk7CisgICAgcmV0dXJuIG1fcXRFdmVudC0+bmF0aXZlTW9kaWZpZXJzKCk7Cit9CisKK3VpbnQz
Ml90IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6bmF0aXZlU2NhbkNvZGUoKSBjb25zdAoreworICAg
IEFTU0VSVChtX3F0RXZlbnQpOworICAgIHJldHVybiBtX3F0RXZlbnQtPm5hdGl2ZVNjYW5Db2Rl
KCk7Cit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1TY3JlZW5RdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uY2U0NWFmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVuUXQuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKKworI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKyNp
bmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UVNjcmVlbj4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgaW50IHNjcmVlbk51bWJlcihXaWRnZXQqIHcpCit7CisgICAg
aWYgKCF3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQg
PSB3LT5yb290KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgcmV0
dXJuIGNsaWVudCA/IGNsaWVudC0+c2NyZWVuTnVtYmVyKCkgOiAwOworfQorCitpbnQgc2NyZWVu
RGVwdGgoV2lkZ2V0KiB3KQoreworICAgIHJldHVybiBRR3VpQXBwbGljYXRpb246OnNjcmVlbnMo
KS52YWx1ZShzY3JlZW5OdW1iZXIodykpLT5kZXB0aCgpOworfQorCitpbnQgc2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQoV2lkZ2V0KiB3KQoreworICAgIGludCBkZXB0aCA9IFFHdWlBcHBsaWNhdGlv
bjo6cHJpbWFyeVNjcmVlbigpLT5kZXB0aCgpOworICAgIC8vIEZJWE1FOiBVc2Ugd2lkZ2V0J3Mg
c2NyZWVuCisgICAgUV9VTlVTRUQodyk7CisgICAgLy8gQW4gaW50ZXJmYWNlIHRvIGVzdGFibGlz
aCB0aGUgYWN0dWFsIG51bWJlciBvZiBiaXRzIHBlciBjb2xvcgorICAgIC8vIGRvZXNuJ3QgZXhp
c3QgaW4gUXQsIG9yIHByb2JhYmx5IGF0IGFsbCwgc28gdXNlIGNvbW1vbi1zZW5zZQorICAgIC8v
IHZhbHVlcyBmb3IgZWFjaCBzY3JlZW4gZGVwdGggYW5kIGFzc3VtZSBSR0IvUkdCQSB3aGVyZSBh
cHByb3ByaWF0ZS4KKyAgICAvLyBQZXIgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1
ZXJpZXMvI2NvbG9yLCAnSWYgZGlmZmVyZW50IGNvbG9yCisgICAgLy8gY29tcG9uZW50cyBhcmUg
cmVwcmVzZW50ZWQgYnkgZGlmZmVyZW50IG51bWJlciBvZiBiaXRzLCB0aGUgc21hbGxlc3QKKyAg
ICAvLyBudW1iZXIgaXMgdXNlZC4nCisgICAgc3dpdGNoIChkZXB0aCkgeworICAgIGNhc2UgODoK
KyAgICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSAzMjoKKyAgICAgICAgcmV0dXJuIDg7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGRlcHRoIC8gMzsKKyAgICB9Cit9CisKK2Jvb2wgc2Ny
ZWVuSXNNb25vY2hyb21lKFdpZGdldCogdykKK3sKKyAgICBRX1VOVVNFRCh3KTsKKyAgICAvLyBG
SVhNRTogSW4gUXQgNSBjb2xvckNvdW50KCkgaXNuJ3QgZXZlbiBpbXBsZW1lbnRlZCBiZXlvbmQg
cmV0dXJuaW5nIDI1NiA6KQorICAgIHJldHVybiBmYWxzZTsKK30KKworRmxvYXRSZWN0IHNjcmVl
blJlY3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgUVJlY3QgciA9IFFHdWlBcHBsaWNhdGlvbjo6
c2NyZWVucygpLnZhbHVlKHNjcmVlbk51bWJlcih3aWRnZXQpKS0+Z2VvbWV0cnkoKTsKKyAgICBy
ZXR1cm4gRmxvYXRSZWN0KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKK30K
KworRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAg
UVJlY3QgciA9IFFHdWlBcHBsaWNhdGlvbjo6c2NyZWVucygpLnZhbHVlKHNjcmVlbk51bWJlcih3
aWRnZXQpKS0+YXZhaWxhYmxlR2VvbWV0cnkoKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KHIueCgp
LCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKK30KKwordm9pZCBzY3JlZW5Db2xvclBy
b2ZpbGUoQ29sb3JQcm9maWxlJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
U3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZDA4ODIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBv
cnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IDIwMDksIDIwMTAsIFRoZSBB
bmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtU3VwcG9y
dF9oCisjZGVmaW5lIFBsYXRmb3JtU3VwcG9ydF9oCisKKyNpbmNsdWRlICJVUkwuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
dHlwZWRlZiBzdHJ1Y3QgTlBPYmplY3QgTlBPYmplY3Q7Cit0eXBlZGVmIHN0cnVjdCBfTlBQIE5Q
UF90OwordHlwZWRlZiBOUFBfdCogTlBQOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdpZGdldDsKKworLy8gVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gY2hyb21pdW0vUGxhdGZvcm1T
dXBwb3J0IGFuZCB0aGUgdHdvIGFyZSBsaWtlbHkgdG8KKy8vIGNvbnZlcmdlIGluIHRoZSBmdXR1
cmUuCitjbGFzcyBQbGF0Zm9ybVN1cHBvcnQgeworcHVibGljOgorICAgIHN0YXRpYyBib29sIHBv
cHVwc0FsbG93ZWQoTlBQIG5wcCk7CisgICAgLy8gUGx1Z2luCisgICAgc3RhdGljIE5QT2JqZWN0
KiBwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdpZGdldCopOworCit9OworCit9CisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydFF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydFF0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzI4MjY0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0UXQuY3BwCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2pl
Y3QuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN1cHBvcnQuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGx1Z2luVmll
dy5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgIm5wYXBpLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBvcHVwc0FsbG93ZWQoTlBQIG5w
cCkKK3sKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICBpZiAobnBwICYmIG5w
cC0+bmRhdGEpCisgICAgICAgIHJldHVybiB0b1BsdWdpblZpZXcobnBwLT5uZGF0YSktPmFyZVBv
cHVwc0FsbG93ZWQoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitOUE9iamVj
dCogUGxhdGZvcm1TdXBwb3J0OjpwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdpZGdldCogd2lkZ2V0
KQoreworICAgIGlmICghd2lkZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghd2lk
Z2V0LT5pc1BsdWdpblZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKKyAgICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gdG9QbHVnaW5W
aWV3KHdpZGdldCk7CisgICAgcmV0dXJuIHBsdWdpblZpZXctPm5wT2JqZWN0KCk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1FTdHlsZUZhY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UVN0eWxlRmFjYWRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjYjQz
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FTdHlsZUZh
Y2FkZS5oCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IHRoZW1lIGltcGxlbWVudGF0aW9uIGZvciBmb3JtIGNvbnRyb2xzIGluIFdlYkNvcmUuCisgKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBRU3R5bGVGYWNhZGVfaAorI2RlZmluZSBR
U3R5bGVGYWNhZGVfaAorCisjaW5jbHVkZSA8UVBhbGV0dGU+CisjaW5jbHVkZSA8UVJlY3Q+CisK
K1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVN0eWxlOworUVRfRU5EX05BTUVTUEFDRQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CitjbGFzcyBRU3R5bGVGYWNhZGVPcHRp
b247CisKK2NsYXNzIFFTdHlsZUZhY2FkZSB7CitwdWJsaWM6CisgICAgZW51bSBCdXR0b25TdWJF
bGVtZW50IHsKKyAgICAgICAgUHVzaEJ1dHRvbkxheW91dEl0ZW0sCisgICAgICAgIFB1c2hCdXR0
b25Db250ZW50cworICAgIH07CisKKyNkZWZpbmUgRk9SX0VBQ0hfTUFQUEVEX1NUQVRFKEYsIFNF
UEFSQVRPUikgXAorICAgIEYoU3RhdGVfTm9uZSwgMHgwMDAwMDAwMCkgU0VQQVJBVE9SIFwKKyAg
ICBGKFN0YXRlX0VuYWJsZWQsIDB4MDAwMDAwMDEpIFNFUEFSQVRPUiBcCisgICAgRihTdGF0ZV9S
YWlzZWQsIDB4MDAwMDAwMDIpIFNFUEFSQVRPUiBcCisgICAgRihTdGF0ZV9TdW5rZW4sIDB4MDAw
MDAwMDQpIFNFUEFSQVRPUiBcCisgICAgRihTdGF0ZV9PZmYsIDB4MDAwMDAwMDgpIFNFUEFSQVRP
UiBcCisgICAgRihTdGF0ZV9Ob0NoYW5nZSwgMHgwMDAwMDAxMCkgU0VQQVJBVE9SIFwKKyAgICBG
KFN0YXRlX09uLCAweDAwMDAwMDIwKSBTRVBBUkFUT1IgXAorICAgIEYoU3RhdGVfRG93bkFycm93
LCAweDAwMDAwMDQwKSBTRVBBUkFUT1IgXAorICAgIEYoU3RhdGVfSG9yaXpvbnRhbCwgMHgwMDAw
MDA4MCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX0hhc0ZvY3VzLCAweDAwMDAwMTAwKSBTRVBB
UkFUT1IgXAorICAgIEYoU3RhdGVfVG9wLCAweDAwMDAwMjAwKSBTRVBBUkFUT1IgXAorICAgIEYo
U3RhdGVfQm90dG9tLCAweDAwMDAwNDAwKSBTRVBBUkFUT1IgXAorICAgIEYoU3RhdGVfRm9jdXNB
dEJvcmRlciwgMHgwMDAwMDgwMCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX0F1dG9SYWlzZSwg
MHgwMDAwMTAwMCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX01vdXNlT3ZlciwgMHgwMDAwMjAw
MCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX1VwQXJyb3csIDB4MDAwMDQwMDApIFNFUEFSQVRP
UiBcCisgICAgRihTdGF0ZV9TZWxlY3RlZCwgMHgwMDAwODAwMCkgU0VQQVJBVE9SIFwKKyAgICBG
KFN0YXRlX0FjdGl2ZSwgMHgwMDAxMDAwMCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX1dpbmRv
dywgMHgwMDAyMDAwMCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX09wZW4sIDB4MDAwNDAwMDAp
IFNFUEFSQVRPUiBcCisgICAgRihTdGF0ZV9DaGlsZHJlbiwgMHgwMDA4MDAwMCkgU0VQQVJBVE9S
IFwKKyAgICBGKFN0YXRlX0l0ZW0sIDB4MDAxMDAwMDApIFNFUEFSQVRPUiBcCisgICAgRihTdGF0
ZV9TaWJsaW5nLCAweDAwMjAwMDAwKSBTRVBBUkFUT1IgXAorICAgIEYoU3RhdGVfRWRpdGluZywg
MHgwMDQwMDAwMCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX0tleWJvYXJkRm9jdXNDaGFuZ2Us
IDB4MDA4MDAwMDApIFNFUEFSQVRPUiBcCisgICAgRihTdGF0ZV9SZWFkT25seSwgMHgwMjAwMDAw
MCkgU0VQQVJBVE9SIFwKKyAgICBGKFN0YXRlX1NtYWxsLCAweDA0MDAwMDAwKSBTRVBBUkFUT1Ig
XAorICAgIEYoU3RhdGVfTWluaSwgMHgwODAwMDAwKQorCisjZGVmaW5lIENPTU1BICwKKyNkZWZp
bmUgU0VNSUNPTE9OIDsKKyNkZWZpbmUgREVGSU5FX01BUFBFRF9TVEFURShOYW1lLCBWYWx1ZSkg
XAorICAgIE5hbWUgPSBWYWx1ZQorCisgICAgLy8gIyMjIFJlbW92ZSB1bnVzZWQgc3RhdGVzLgor
ICAgIGVudW0gU3RhdGVGbGFnIHsKKyAgICAgICAgRk9SX0VBQ0hfTUFQUEVEX1NUQVRFKERFRklO
RV9NQVBQRURfU1RBVEUsIENPTU1BKQorICAgIH07CisgICAgUV9ERUNMQVJFX0ZMQUdTKFN0YXRl
LCBTdGF0ZUZsYWcpCisKKyNkZWZpbmUgRk9SX0VBQ0hfTUFQUEVEX01FVFJJQyhGLCBTRVBBUkFU
T1IpIFwKKyAgICBGKFBNX0J1dHRvbk1hcmdpbikgU0VQQVJBVE9SIFwKKyAgICBGKFBNX0RlZmF1
bHRGcmFtZVdpZHRoKSBTRVBBUkFUT1IgXAorICAgIEYoUE1fSW5kaWNhdG9yV2lkdGgpIFNFUEFS
QVRPUiBcCisgICAgRihQTV9FeGNsdXNpdmVJbmRpY2F0b3JXaWR0aCkgU0VQQVJBVE9SIFwKKyAg
ICBGKFBNX0J1dHRvbkljb25TaXplKQorCisjZGVmaW5lIERFRklORV9NRVRSSUMoRikgRgorCisg
ICAgZW51bSBQaXhlbE1ldHJpYyB7CisgICAgICAgIEZPUl9FQUNIX01BUFBFRF9NRVRSSUMoREVG
SU5FX01FVFJJQywgQ09NTUEpCisgICAgfTsKKworI2RlZmluZSBGT1JfRUFDSF9TVUJDT05UUk9M
KEYsIFNFUEFSQVRPUikgXAorICAgIEYoU0NfTm9uZSwgMHgwMDAwMDAwMCkgU0VQQVJBVE9SIFwK
KyAgICBGKFNDX1Njcm9sbEJhckFkZExpbmUsIDB4MDAwMDAwMDEpIFNFUEFSQVRPUiBcCisgICAg
RihTQ19TY3JvbGxCYXJTdWJMaW5lLCAweDAwMDAwMDAyKSBTRVBBUkFUT1IgXAorICAgIEYoU0Nf
U2Nyb2xsQmFyQWRkUGFnZSwgMHgwMDAwMDAwNCkgU0VQQVJBVE9SIFwKKyAgICBGKFNDX1Njcm9s
bEJhclN1YlBhZ2UsIDB4MDAwMDAwMDgpIFNFUEFSQVRPUiBcCisgICAgRihTQ19TY3JvbGxCYXJG
aXJzdCwgMHgwMDAwMDAxMCkgU0VQQVJBVE9SIFwKKyAgICBGKFNDX1Njcm9sbEJhckxhc3QsIDB4
MDAwMDAwMjApIFNFUEFSQVRPUiBcCisgICAgRihTQ19TY3JvbGxCYXJTbGlkZXIsIDB4MDAwMDAw
NDApIFNFUEFSQVRPUiBcCisgICAgRihTQ19TY3JvbGxCYXJHcm9vdmUsIDB4MDAwMDAwODApCisK
KyNkZWZpbmUgREVGSU5FX1NVQkNPTlRST0woRiwgVmFsdWUpIEYKKworICAgIGVudW0gU3ViQ29u
dHJvbCB7CisgICAgICAgIEZPUl9FQUNIX1NVQkNPTlRST0woREVGSU5FX1NVQkNPTlRST0wsIENP
TU1BKQorICAgIH07CisKKyAgICB2aXJ0dWFsIH5RU3R5bGVGYWNhZGUoKSB7IH0KKworICAgIHZp
cnR1YWwgUVJlY3QgYnV0dG9uU3ViRWxlbWVudFJlY3QoQnV0dG9uU3ViRWxlbWVudCBidXR0b25F
bGVtZW50LCBTdGF0ZSwgY29uc3QgUVJlY3QmIG9yaWdpbmFsUmVjdCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCBpbnQgZmluZEZyYW1lTGluZVdpZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgaW50IHNpbXBsZVBpeGVsTWV0cmljKFBpeGVsTWV0cmljLCBTdGF0ZSA9IFN0YXRlX05vbmUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBidXR0b25NYXJnaW4oU3RhdGUsIGNvbnN0IFFS
ZWN0JiBvcmlnaW5hbFJlY3QpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBzbGlkZXJMZW5n
dGgoUXQ6Ok9yaWVudGF0aW9uKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgc2xpZGVyVGhp
Y2tuZXNzKFF0OjpPcmllbnRhdGlvbikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHByb2dy
ZXNzQmFyQ2h1bmtXaWR0aChjb25zdCBRU2l6ZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0QnV0dG9uTWV0cmljcyhRU3RyaW5nKiBidXR0b25Gb250RmFtaWx5LCBpbnQqIGJ1dHRv
bkZvbnRQaXhlbFNpemUpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUVNpemUgY29tYm9Cb3hT
aXplRnJvbUNvbnRlbnRzKFN0YXRlLCBjb25zdCBRU2l6ZSYgY29udGVudHNTaXplKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBRU2l6ZSBwdXNoQnV0dG9uU2l6ZUZyb21Db250ZW50cyhTdGF0ZSwg
Y29uc3QgUVNpemUmIGNvbnRlbnRzU2l6ZSkgY29uc3QgPSAwOworCisgICAgZW51bSBCdXR0b25U
eXBlIHsKKyAgICAgICAgUHVzaEJ1dHRvbiwKKyAgICAgICAgUmFkaW9CdXR0b24sCisgICAgICAg
IENoZWNrQm94CisgICAgfTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihRUGFpbnRl
ciosIEJ1dHRvblR5cGUsIGNvbnN0IFFTdHlsZUZhY2FkZU9wdGlvbiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQoUVBhaW50ZXIqLCBjb25zdCBRU3R5bGVGYWNhZGVPcHRp
b24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29tYm9Cb3goUVBhaW50ZXIqLCBjb25z
dCBRU3R5bGVGYWNhZGVPcHRpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29tYm9C
b3hBcnJvdyhRUGFpbnRlciosIGNvbnN0IFFTdHlsZUZhY2FkZU9wdGlvbiYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYWludFNsaWRlclRyYWNrKFFQYWludGVyKiwgY29uc3QgUVN0eWxlRmFj
YWRlT3B0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNsaWRlclRodW1iKFFQYWlu
dGVyKiwgY29uc3QgUVN0eWxlRmFjYWRlT3B0aW9uJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
YWludElubmVyU3BpbkJ1dHRvbihRUGFpbnRlciosIGNvbnN0IFFTdHlsZUZhY2FkZU9wdGlvbiYs
IGJvb2wgc3BpbkJveFVwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIo
UVBhaW50ZXIqLCBjb25zdCBRU3R5bGVGYWNhZGVPcHRpb24mLCBkb3VibGUgcHJvZ3Jlc3MsIGRv
dWJsZSBhbmltYXRpb25Qcm9ncmVzcykgPSAwOworCisgICAgdmlydHVhbCBpbnQgc2Nyb2xsQmFy
RXh0ZW50KGJvb2wgbWluaSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxCYXJNaWRkbGVD
bGlja0Fic29sdXRlUG9zaXRpb25TdHlsZUhpbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFFQYWludGVyKiwgY29uc3QgUVJlY3QmKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIFN1YkNvbnRyb2wgaGl0VGVzdFNjcm9sbEJhcihjb25zdCBRU3R5bGVGYWNhZGVP
cHRpb24mLCBjb25zdCBRUG9pbnQmIHBvcykgPSAwOworICAgIHZpcnR1YWwgUVJlY3Qgc2Nyb2xs
QmFyU3ViQ29udHJvbFJlY3QoY29uc3QgUVN0eWxlRmFjYWRlT3B0aW9uJiwgU3ViQ29udHJvbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbEJhcihRUGFpbnRlciosIGNvbnN0IFFT
dHlsZUZhY2FkZU9wdGlvbiYpID0gMDsKKworICAgIHZpcnR1YWwgUU9iamVjdCogd2lkZ2V0Rm9y
UGFpbnRlcihRUGFpbnRlciopID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgPSAwOworfTsKKworUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoUVN0eWxlRmFjYWRl
OjpTdGF0ZSkKKworc3RydWN0IFFTdHlsZUZhY2FkZU9wdGlvbiB7CisgICAgUVN0eWxlRmFjYWRl
T3B0aW9uKCkKKyAgICAgICAgOiBzdGF0ZShRU3R5bGVGYWNhZGU6OlN0YXRlX05vbmUpCisgICAg
ICAgICwgZGlyZWN0aW9uKFF0OjpMYXlvdXREaXJlY3Rpb25BdXRvKQorICAgIHsKKyAgICAgICAg
c2xpZGVyLm9yaWVudGF0aW9uID0gUXQ6Okhvcml6b250YWw7CisgICAgICAgIHNsaWRlci51cHNp
ZGVEb3duID0gZmFsc2U7CisgICAgICAgIHNsaWRlci5taW5pbXVtID0gMDsKKyAgICAgICAgc2xp
ZGVyLm1heGltdW0gPSAwOworICAgICAgICBzbGlkZXIucG9zaXRpb24gPSAwOworICAgICAgICBz
bGlkZXIudmFsdWUgPSAwOworICAgICAgICBzbGlkZXIuc2luZ2xlU3RlcCA9IDA7CisgICAgICAg
IHNsaWRlci5wYWdlU3RlcCA9IDA7CisgICAgICAgIHNsaWRlci5hY3RpdmVTdWJDb250cm9scyA9
IFFTdHlsZUZhY2FkZTo6U0NfTm9uZTsKKyAgICB9CisKKyAgICBRU3R5bGVGYWNhZGU6OlN0YXRl
IHN0YXRlOworICAgIFFSZWN0IHJlY3Q7CisgICAgUXQ6OkxheW91dERpcmVjdGlvbiBkaXJlY3Rp
b247CisgICAgUVBhbGV0dGUgcGFsZXR0ZTsKKworICAgIC8vIFNsaWRlciBmZWF0dXJlcworICAg
IHN0cnVjdCB7CisgICAgICAgIFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKKyAgICAgICAg
Ym9vbCB1cHNpZGVEb3duOworICAgICAgICBpbnQgbWluaW11bTsKKyAgICAgICAgaW50IG1heGlt
dW07CisgICAgICAgIGludCBwb3NpdGlvbjsKKyAgICAgICAgaW50IHZhbHVlOworICAgICAgICBp
bnQgc2luZ2xlU3RlcDsKKyAgICAgICAgaW50IHBhZ2VTdGVwOworICAgICAgICBRU3R5bGVGYWNh
ZGU6OlN1YkNvbnRyb2wgYWN0aXZlU3ViQ29udHJvbHM7CisgICAgfSBzbGlkZXI7Cit9OworCit9
CisKKyNlbmRpZiAvLyBRU3R5bGVGYWNhZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1FXZWJQYWdlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5
ZWYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1FXZWJQ
YWdlQ2xpZW50LmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBRV2ViUGFnZUNsaWVudF9oCisjZGVmaW5lIFFXZWJQYWdlQ2xpZW50X2gKKworI2lmbmRl
ZiBRVF9OT19DVVJTT1IKKyNpbmNsdWRlIDxRQ3Vyc29yPgorI2VuZGlmCisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSA8R3JhcGhpY3NMYXllci5oPgorI2VuZGlm
CisKKyNpZiBVU0UoM0RfR1JBUEhJQ1MpCisjaW5jbHVkZSA8R3JhcGhpY3NDb250ZXh0M0QuaD4K
KyNlbmRpZgorCisjaW5jbHVkZSA8UVBhbGV0dGU+CisjaW5jbHVkZSA8UVJlY3Q+CisKK1FUX0JF
R0lOX05BTUVTUEFDRQorY2xhc3MgUVN0eWxlOworY2xhc3MgUVdpbmRvdzsKK1FUX0VORF9OQU1F
U1BBQ0UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2lkZ2V0OworfQorCitjbGFzcyBR
V2ViUGFnZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdlYlBhZ2VDbGllbnQoKSB7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1FXaWRnZXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbChpbnQgZHgsIGludCBkeSwgY29uc3Qg
UVJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBRUmVjdCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVwYWludFZpZXdwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZEVuYWJsZWQoYm9vbCBlbmFibGUpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaW5wdXRNZXRob2RFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBtYWtl
T3BlbkdMQ29udGV4dEN1cnJlbnRJZkF2YWlsYWJsZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RIaW50cyhRdDo6SW5wdXRNZXRob2RIaW50cyBo
aW50KSA9IDA7CisKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisgICAgaW5saW5lIHZvaWQgcmVzZXRD
dXJzb3IoKQorICAgIHsKKyAgICAgICAgaWYgKCFjdXJzb3IoKS5iaXRtYXAoKSAmJiBjdXJzb3Io
KS5zaGFwZSgpID09IG1fbGFzdEN1cnNvci5zaGFwZSgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB1cGRhdGVDdXJzb3IobV9sYXN0Q3Vyc29yKTsKKyAgICB9CisKKyAgICBpbmxpbmUg
dm9pZCBzZXRDdXJzb3IoY29uc3QgUUN1cnNvciYgY3Vyc29yKQorICAgIHsKKyAgICAgICAgbV9s
YXN0Q3Vyc29yID0gY3Vyc29yOworICAgICAgICBpZiAoIWN1cnNvci5iaXRtYXAoKSAmJiBjdXJz
b3Iuc2hhcGUoKSA9PSB0aGlzLT5jdXJzb3IoKS5zaGFwZSgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB1cGRhdGVDdXJzb3IoY3Vyc29yKTsKKyAgICB9CisjZW5kaWYKKworICAgIHZp
cnR1YWwgUVBhbGV0dGUgcGFsZXR0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBzY3Jl
ZW5OdW1iZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRT2JqZWN0KiBvd25lcldpZGdldCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFSZWN0IGdlb21ldHJ5UmVsYXRpdmVUb093bmVyV2lk
Z2V0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUVBvaW50IG1hcFRvT3duZXJXaW5kb3coY29u
c3QgUVBvaW50JikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBRT2JqZWN0KiBwbHVnaW5QYXJl
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFFTdHlsZSogc3R5bGUoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIFFSZWN0RiBncmFwaGljc0l0ZW1WaXNpYmxlUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIFFSZWN0RigpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdmlld1Jlc2l6ZXNUb0NvbnRl
bnRzRW5hYmxlZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUVJlY3RGIHdpbmRvd1JlY3Qo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lkZ2V0VmlzaWJsZShXZWJDb3Jl
OjpXaWRnZXQqLCBib29sIHZpc2libGUpID0gMDsKKworICAgIHZpcnR1YWwgUVdpbmRvdyogb3du
ZXJXaW5kb3coKSBjb25zdDsKKworcHJvdGVjdGVkOgorI2lmbmRlZiBRVF9OT19DVVJTT1IKKyAg
ICB2aXJ0dWFsIFFDdXJzb3IgY3Vyc29yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDdXJzb3IoY29uc3QgUUN1cnNvciYgY3Vyc29yKSA9IDA7CisjZW5kaWYKKworcHJpdmF0
ZToKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisgICAgUUN1cnNvciBtX2xhc3RDdXJzb3I7CisjZW5k
aWYKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
UXRUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9RdFRlc3RTdXBw
b3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTQ3YTU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRUZXN0U3VwcG9ydC5j
cHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJRdFRlc3RTdXBwb3J0LmgiCisKKyNpbmNsdWRlICJDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKKyNpbmNsdWRlIDxR
Rm9udERhdGFiYXNlPgorCisjaWYgSEFWRShGT05UQ09ORklHKQorI2luY2x1ZGUgPFFCeXRlQXJy
YXk+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4K
KyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3ZvaWQgUXRUZXN0U3VwcG9ydDo6Y2xlYXJNZW1vcnlDYWNoZXMoKQoreworICAgIGlmICgh
bWVtb3J5Q2FjaGUoKS0+ZGlzYWJsZWQoKSkgeworICAgICAgICBtZW1vcnlDYWNoZSgpLT5zZXRE
aXNhYmxlZCh0cnVlKTsKKyAgICAgICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGlzYWJsZWQoZmFsc2Up
OworICAgIH0KKworICAgIGludCBwYWdlQ2FwYWNpdHkgPSBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+
Y2FwYWNpdHkoKTsKKyAgICBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoMCk7Cisg
ICAgV2ViQ29yZTo6cGFnZUNhY2hlKCktPnNldENhcGFjaXR5KHBhZ2VDYXBhY2l0eSk7CisKKyAg
ICBXZWJDb3JlOjpmb250Q2FjaGUoKS0+aW52YWxpZGF0ZSgpOworCisgICAgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2hhcmVkKCkuZW1wdHkoKTsKK30KKwordm9p
ZCBRdFRlc3RTdXBwb3J0Ojppbml0aWFsaXplVGVzdEZvbnRzKCkKK3sKKyNpZiBIQVZFKEZPTlRD
T05GSUcpCisgICAgc3RhdGljIGludCBudW1Gb250cyA9IC0xOworCisgICAgRmNJbml0KCk7CisK
KyAgICAvLyBTb21lIHRlc3QgY2FzZXMgbWF5IGFkZCBvciByZW1vdmUgYXBwbGljYXRpb24gZm9u
dHMgKHZpYSBAZm9udC1mYWNlKS4KKyAgICAvLyBNYWtlIHN1cmUgdG8gcmUtaW5pdGlhbGl6ZSB0
aGUgZm9udCBzZXQgaWYgbmVjZXNzYXJ5LgorICAgIEZjRm9udFNldCogYXBwRm9udFNldCA9IEZj
Q29uZmlnR2V0Rm9udHMoMCwgRmNTZXRBcHBsaWNhdGlvbik7CisgICAgaWYgKGFwcEZvbnRTZXQg
JiYgbnVtRm9udHMgPj0gMCAmJiBhcHBGb250U2V0LT5uZm9udCA9PSBudW1Gb250cykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUUJ5dGVBcnJheSBmb250RGlyID0gZ2V0ZW52KCJXRUJLSVRfVEVT
VEZPTlRTIik7CisgICAgaWYgKGZvbnREaXIuaXNFbXB0eSgpIHx8ICFRRGlyKFFTdHJpbmc6OmZy
b21MYXRpbjEoZm9udERpcikpLmV4aXN0cygpKSB7CisgICAgICAgIHFGYXRhbCgiXG5cbiIKKyAg
ICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCisgICAgICAgICAgICAiV0VCS0lUX1RFU1RGT05U
UyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IGNvcnJlY3RseS5cbiIKKyAgICAgICAg
ICAgICJUaGlzIHZhcmlhYmxlIGhhcyB0byBwb2ludCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5p
bmcgdGhlIGZvbnRzXG4iCisgICAgICAgICAgICAieW91IGNhbiBjbG9uZSBmcm9tIGdpdDovL2dp
dG9yaW91cy5vcmcvcXR3ZWJraXQvdGVzdGZvbnRzLmdpdFxuIgorICAgICAgICAgICAgIi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbiIKKyAgICAgICAgICAgICk7CisgICAgfQorCisgICAgUUJ5dGVBcnJheSBjb25m
aWdGaWxlID0gZm9udERpciArICIvZm9udHMuY29uZiI7CisgICAgRmNDb25maWcqIGNvbmZpZyA9
IEZjQ29uZmlnQ3JlYXRlKCk7CisgICAgaWYgKCFGY0NvbmZpZ1BhcnNlQW5kTG9hZChjb25maWcs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGNvbmZpZ0ZpbGUuY29uc3REYXRhKCkp
LCBGY1RydWUpKQorICAgICAgICBxRmF0YWwoIkNvdWxkbid0IGxvYWQgZm9udCBjb25maWd1cmF0
aW9uIGZpbGUiKTsKKyAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZERpcihjb25maWcsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnREaXIuZGF0YSgpKSkpCisgICAgICAgIHFG
YXRhbCgiQ291bGRuJ3QgYWRkIGZvbnQgZGlyISIpOworICAgIEZjQ29uZmlnU2V0Q3VycmVudChj
b25maWcpOworCisgICAgYXBwRm9udFNldCA9IEZjQ29uZmlnR2V0Rm9udHMoY29uZmlnLCBGY1Nl
dEFwcGxpY2F0aW9uKTsKKyAgICBudW1Gb250cyA9IGFwcEZvbnRTZXQtPm5mb250OworCisgICAg
V2ViQ29yZTo6Zm9udENhY2hlKCktPmludmFsaWRhdGUoKTsKKyAgICBRRm9udERhdGFiYXNlOjpy
ZW1vdmVBbGxBcHBsaWNhdGlvbkZvbnRzKCk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUXRUZXN0U3VwcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUXRUZXN0U3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmRjNDAyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9RdFRlc3RTdXBwb3J0LmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgUXRUZXN0U3VwcG9ydF9oCisjZGVmaW5lIFF0VGVzdFN1cHBv
cnRfaAorCisjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKworI2lmIGRlZmluZWQoQlVJTERJ
TkdfV0VCS0lUKQorI2RlZmluZSBURVNUU1VQUE9SVF9FWFBPUlQgUV9ERUNMX0VYUE9SVAorI2Vs
c2UKKyNkZWZpbmUgVEVTVFNVUFBPUlRfRVhQT1JUIFFfREVDTF9JTVBPUlQKKyNlbmRpZgorCisv
LyBIZWxwZXJzIGZvciB0ZXN0IHJ1bm5lcnMgKER1bXBSZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0
UnVubmVyKS4KKy8vIFRoaXMgaXMgbGl2aW5nIGluIFdlYkNvcmUgZm9yIGJldHRlciBjb2RlIHNo
YXJpbmcsIGFsdGhvdWdoCisvLyB3ZSBleHBvc2UgaXQgYXMgKHByaXZhdGUpIEFQSSwgc28gaXQg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IGxheWVyLgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworbmFt
ZXNwYWNlIFF0VGVzdFN1cHBvcnQgeworCitURVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBjbGVhck1l
bW9yeUNhY2hlcygpOworVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVRlc3RGb250
cygpOworCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjBiZTNiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1JlbmRlclRoZW1lUVN0eWxlLmNwcApAQCAtMCwwICsxLDYxMyBAQAorLyoKKyAqIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogICAg
ICAgICAgICAgICAyMDA2IERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAgICAg
ICAgICAgICAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKgorICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUaGVtZVFTdHlsZS5oIgorCisjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCisjaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWludElu
Zm8uaCIKKyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckJveC5o
IgorI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorI2luY2x1ZGUgIlJlbmRlclByb2dyZXNz
LmgiCisjZW5kaWYKKyNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKKyNpbmNsdWRlICJTY3JvbGxi
YXJUaGVtZVFTdHlsZS5oIgorI2luY2x1ZGUgIlNsaWRlclRodW1iRWxlbWVudC5oIgorI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgor
CisjaW5jbHVkZSA8UVBhaW50ZXI+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKKworUVNoYXJlZFBvaW50ZXI8U3R5bGVQYWludGVyPiBSZW5kZXJU
aGVtZVFTdHlsZTo6Z2V0U3R5bGVQYWludGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvKQor
eworICAgIHJldHVybiBRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+KG5ldyBTdHlsZVBhaW50
ZXJRU3R5bGUodGhpcywgcGFpbnRJbmZvLCAvKlJlbmRlck9iamVjdCovMCkpOworfQorCitTdHls
ZVBhaW50ZXJRU3R5bGU6OlN0eWxlUGFpbnRlclFTdHlsZShSZW5kZXJUaGVtZVFTdHlsZSogdGhl
bWUsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVj
dCkKKyAgICA6IFN0eWxlUGFpbnRlcihwYWludEluZm8uY29udGV4dCkKKyAgICAsIHFTdHlsZSh0
aGVtZS0+cVN0eWxlKCkpCisgICAgLCBhcHBlYXJhbmNlKE5vQ29udHJvbFBhcnQpCit7CisgICAg
c2V0dXBTdHlsZU9wdGlvbigpOworICAgIGlmIChyZW5kZXJPYmplY3QpCisgICAgICAgIGFwcGVh
cmFuY2UgPSB0aGVtZS0+aW5pdGlhbGl6ZUNvbW1vblFTdHlsZU9wdGlvbnMoc3R5bGVPcHRpb24s
IHJlbmRlck9iamVjdCk7Cit9CisKK1N0eWxlUGFpbnRlclFTdHlsZTo6U3R5bGVQYWludGVyUVN0
eWxlKFNjcm9sbGJhclRoZW1lUVN0eWxlKiB0aGVtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorICAgIDogU3R5bGVQYWludGVyKGNvbnRleHQpCisgICAgLCBxU3R5bGUodGhlbWUtPnFTdHls
ZSgpKQorICAgICwgYXBwZWFyYW5jZShOb0NvbnRyb2xQYXJ0KQoreworICAgIHNldHVwU3R5bGVP
cHRpb24oKTsKK30KKwordm9pZCBTdHlsZVBhaW50ZXJRU3R5bGU6OnNldHVwU3R5bGVPcHRpb24o
KQoreworICAgIGlmIChRT2JqZWN0KiB3aWRnZXQgPSBxU3R5bGUtPndpZGdldEZvclBhaW50ZXIo
cGFpbnRlcikpIHsKKyAgICAgICAgc3R5bGVPcHRpb24ucGFsZXR0ZSA9IHdpZGdldC0+cHJvcGVy
dHkoInBhbGV0dGUiKS52YWx1ZTxRUGFsZXR0ZT4oKTsKKyAgICAgICAgc3R5bGVPcHRpb24ucmVj
dCA9IHdpZGdldC0+cHJvcGVydHkoInJlY3QiKS52YWx1ZTxRUmVjdD4oKTsKKyAgICAgICAgc3R5
bGVPcHRpb24uZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8UXQ6OkxheW91dERpcmVjdGlvbj4od2lk
Z2V0LT5wcm9wZXJ0eSgibGF5b3V0RGlyZWN0aW9uIikudG9JbnQoKSk7CisgICAgfQorfQorCitQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZVFTdHlsZTo6Y3JlYXRlKFBhZ2UqIHBh
Z2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZVFTdHlsZShwYWdlKSk7
Cit9CisKK3N0YXRpYyBRdFN0eWxlRmFjdG9yeUZ1bmN0aW9uIHN0eWxlRmFjdG9yeUZ1bmN0aW9u
OworCit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjpzZXRTdHlsZUZhY3RvcnlGdW5jdGlvbihRdFN0
eWxlRmFjdG9yeUZ1bmN0aW9uIGZ1bmN0aW9uKQoreworICAgIHN0eWxlRmFjdG9yeUZ1bmN0aW9u
ID0gZnVuY3Rpb247Cit9CisKK1F0U3R5bGVGYWN0b3J5RnVuY3Rpb24gUmVuZGVyVGhlbWVRU3R5
bGU6OnN0eWxlRmFjdG9yeSgpCit7CisgICAgcmV0dXJuIHN0eWxlRmFjdG9yeUZ1bmN0aW9uOwor
fQorCitSZW5kZXJUaGVtZVFTdHlsZTo6UmVuZGVyVGhlbWVRU3R5bGUoUGFnZSogcGFnZSkKKyAg
ICA6IFJlbmRlclRoZW1lUXQocGFnZSkKKyAgICAsIG1fcVN0eWxlKGFkb3B0UHRyKHN0eWxlRmFj
dG9yeUZ1bmN0aW9uKHBhZ2UpKSkKK3sKKyAgICBpbnQgYnV0dG9uUGl4ZWxTaXplID0gMDsKKyAg
ICBtX3FTdHlsZS0+Z2V0QnV0dG9uTWV0cmljcygmbV9idXR0b25Gb250RmFtaWx5LCAmYnV0dG9u
UGl4ZWxTaXplKTsKKyNpZmRlZiBRX1dTX01BQworICAgIG1fYnV0dG9uRm9udFBpeGVsU2l6ZSA9
IGJ1dHRvblBpeGVsU2l6ZTsKKyNlbmRpZgorfQorCitSZW5kZXJUaGVtZVFTdHlsZTo6flJlbmRl
clRoZW1lUVN0eWxlKCkKK3sKK30KKwordm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6c2V0UGFsZXR0
ZUZyb21QYWdlQ2xpZW50SWZFeGlzdHMoUVBhbGV0dGUmIHBhbGV0dGUpIGNvbnN0Cit7CisgICAg
aWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChRV2ViUGFnZUNsaWVudCog
cGFnZUNsaWVudCA9IG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucGxhdGZvcm1QYWdlQ2xpZW50
KCkpCisgICAgICAgIHBhbGV0dGUgPSBwYWdlQ2xpZW50LT5wYWxldHRlKCk7Cit9CisKK1FSZWN0
IFJlbmRlclRoZW1lUVN0eWxlOjppbmZsYXRlQnV0dG9uUmVjdChjb25zdCBRUmVjdCYgb3JpZ2lu
YWxSZWN0KSBjb25zdAoreworICAgIFFSZWN0IGxheW91dFJlY3QgPSBtX3FTdHlsZS0+YnV0dG9u
U3ViRWxlbWVudFJlY3QoUVN0eWxlRmFjYWRlOjpQdXNoQnV0dG9uTGF5b3V0SXRlbSwgUVN0eWxl
RmFjYWRlOjpTdGF0ZV9TbWFsbCwgb3JpZ2luYWxSZWN0KTsKKyAgICBpZiAoIWxheW91dFJlY3Qu
aXNOdWxsKCkpIHsKKyAgICAgICAgaW50IHBhZGRpbmdMZWZ0ID0gbGF5b3V0UmVjdC5sZWZ0KCkg
LSBvcmlnaW5hbFJlY3QubGVmdCgpOworICAgICAgICBpbnQgcGFkZGluZ1JpZ2h0ID0gb3JpZ2lu
YWxSZWN0LnJpZ2h0KCkgLSBsYXlvdXRSZWN0LnJpZ2h0KCk7CisgICAgICAgIGludCBwYWRkaW5n
VG9wID0gbGF5b3V0UmVjdC50b3AoKSAtIG9yaWdpbmFsUmVjdC50b3AoKTsKKyAgICAgICAgaW50
IHBhZGRpbmdCb3R0b20gPSBvcmlnaW5hbFJlY3QuYm90dG9tKCkgLSBsYXlvdXRSZWN0LmJvdHRv
bSgpOworCisgICAgICAgIHJldHVybiBvcmlnaW5hbFJlY3QuYWRqdXN0ZWQoLXBhZGRpbmdMZWZ0
LCAtcGFkZGluZ1RvcCwgcGFkZGluZ1JpZ2h0LCBwYWRkaW5nQm90dG9tKTsKKyAgICB9CisgICAg
cmV0dXJuIG9yaWdpbmFsUmVjdDsKK30KKwordm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6Y29tcHV0
ZVNpemVCYXNlZE9uU3R5bGUoUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKSBjb25zdAoreworICAg
IFFTaXplIHNpemUoMCwgMCk7CisgICAgY29uc3QgUUZvbnRNZXRyaWNzIGZtKHJlbmRlclN0eWxl
LT5mb250KCkuc3ludGhldGljRm9udCgpKTsKKworICAgIHN3aXRjaCAocmVuZGVyU3R5bGUtPmFw
cGVhcmFuY2UoKSkgeworICAgIGNhc2UgVGV4dEFyZWFQYXJ0OgorICAgIGNhc2UgU2VhcmNoRmll
bGRQYXJ0OgorICAgIGNhc2UgVGV4dEZpZWxkUGFydDogeworICAgICAgICBpbnQgcGFkZGluZyA9
IG1fcVN0eWxlLT5maW5kRnJhbWVMaW5lV2lkdGgoKTsKKyAgICAgICAgcmVuZGVyU3R5bGUtPnNl
dFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOworICAgICAgICByZW5kZXJTdHls
ZS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOworICAgICAgICByZW5k
ZXJTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsKKyAgICAgICAg
cmVuZGVyU3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmcsIEZpeGVkKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVu
IHdlIGhhdmUgbm90aGluZyB0byBkby4KKyAgICBpZiAoIXJlbmRlclN0eWxlLT53aWR0aCgpLmlz
SW50cmluc2ljT3JBdXRvKCkgJiYgIXJlbmRlclN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChyZW5kZXJTdHlsZS0+YXBwZWFyYW5jZSgpKSB7
CisgICAgY2FzZSBDaGVja2JveFBhcnQ6IHsKKyAgICAgICAgaW50IGNoZWNrQm94V2lkdGggPSBt
X3FTdHlsZS0+c2ltcGxlUGl4ZWxNZXRyaWMoUVN0eWxlRmFjYWRlOjpQTV9JbmRpY2F0b3JXaWR0
aCwgUVN0eWxlRmFjYWRlOjpTdGF0ZV9TbWFsbCk7CisgICAgICAgIGNoZWNrQm94V2lkdGggKj0g
cmVuZGVyU3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgc2l6ZSA9IFFTaXplKGNoZWNr
Qm94V2lkdGgsIGNoZWNrQm94V2lkdGgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBSYWRpb1BhcnQ6IHsKKyAgICAgICAgaW50IHJhZGlvV2lkdGggPSBtX3FTdHlsZS0+c2ltcGxl
UGl4ZWxNZXRyaWMoUVN0eWxlRmFjYWRlOjpQTV9FeGNsdXNpdmVJbmRpY2F0b3JXaWR0aCwgUVN0
eWxlRmFjYWRlOjpTdGF0ZV9TbWFsbCk7CisgICAgICAgIHJhZGlvV2lkdGggKj0gcmVuZGVyU3R5
bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgc2l6ZSA9IFFTaXplKHJhZGlvV2lkdGgsIHJh
ZGlvV2lkdGgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQdXNoQnV0dG9uUGFy
dDoKKyAgICBjYXNlIEJ1dHRvblBhcnQ6IHsKKyAgICAgICAgUVNpemUgY29udGVudFNpemUgPSBm
bS5zaXplKFF0OjpUZXh0U2hvd01uZW1vbmljLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJYIikpOwor
ICAgICAgICBRU2l6ZSBwdXNoQnV0dG9uU2l6ZSA9IG1fcVN0eWxlLT5wdXNoQnV0dG9uU2l6ZUZy
b21Db250ZW50cyhRU3R5bGVGYWNhZGU6OlN0YXRlX1NtYWxsLCBjb250ZW50U2l6ZSk7CisgICAg
ICAgIFFSZWN0IGxheW91dFJlY3QgPSBtX3FTdHlsZS0+YnV0dG9uU3ViRWxlbWVudFJlY3QoUVN0
eWxlRmFjYWRlOjpQdXNoQnV0dG9uTGF5b3V0SXRlbSwgUVN0eWxlRmFjYWRlOjpTdGF0ZV9TbWFs
bCwgUVJlY3QoMCwgMCwgcHVzaEJ1dHRvblNpemUud2lkdGgoKSwgcHVzaEJ1dHRvblNpemUuaGVp
Z2h0KCkpKTsKKworICAgICAgICAvLyBJZiB0aGUgc3R5bGUgc3VwcG9ydHMgbGF5b3V0IHJlY3Rz
IHdlIHVzZSB0aGF0LCBhbmQgIGNvbXBlbnNhdGUgYWNjb3JkaW5nbHkKKyAgICAgICAgLy8gaW4g
cGFpbnRCdXR0b24oKSBiZWxvdy4KKyAgICAgICAgaWYgKCFsYXlvdXRSZWN0LmlzTnVsbCgpKQor
ICAgICAgICAgICAgc2l6ZS5zZXRIZWlnaHQobGF5b3V0UmVjdC5oZWlnaHQoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNpemUuc2V0SGVpZ2h0KHB1c2hCdXR0b25TaXplLmhlaWdodCgp
KTsKKworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6IHsKKyAg
ICAgICAgaW50IGNvbnRlbnRIZWlnaHQgPSBxTWF4KGZtLmxpbmVTcGFjaW5nKCksIDE0KSArIDI7
CisgICAgICAgIFFTaXplIG1lbnVMaXN0U2l6ZSA9IG1fcVN0eWxlLT5jb21ib0JveFNpemVGcm9t
Q29udGVudHMoUVN0eWxlRmFjYWRlOjpTdGF0ZV9TbWFsbCwgUVNpemUoMCwgY29udGVudEhlaWdo
dCkpOworICAgICAgICBzaXplLnNldEhlaWdodChtZW51TGlzdFNpemUuaGVpZ2h0KCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgLy8gRklYTUU6IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtlIG1p
bi13aWR0aC9tYXgtd2lkdGggaW50byBhY2NvdW50LgorICAgIGlmIChyZW5kZXJTdHlsZS0+d2lk
dGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIHNpemUud2lkdGgoKSA+IDApCisgICAgICAgIHJl
bmRlclN0eWxlLT5zZXRNaW5XaWR0aChMZW5ndGgoc2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAg
IGlmIChyZW5kZXJTdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkgJiYgc2l6ZS5oZWlnaHQoKSA+IDAp
CisgICAgICAgIHJlbmRlclN0eWxlLT5zZXRNaW5IZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0KCks
IEZpeGVkKSk7Cit9CisKKworCit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqKSBjb25zdAoreworICAgIC8vIERpdGNoIHRoZSBib3JkZXIuCisgICAgc3R5bGUtPnJl
c2V0Qm9yZGVyKCk7CisKKyNpZmRlZiBRX1dTX01BQworICAgIGlmIChzdHlsZS0+YXBwZWFyYW5j
ZSgpID09IFB1c2hCdXR0b25QYXJ0KSB7CisgICAgICAgIC8vIFRoZSBNYWMgcG9ydHMgaWdub3Jl
IHRoZSBzcGVjaWZpZWQgaGVpZ2h0IGZvciA8aW5wdXQgdHlwZT0iYnV0dG9uIj4gZWxlbWVudHMK
KyAgICAgICAgLy8gdW5sZXNzIGEgYm9yZGVyIGFuZC9vciBiYWNrZ3JvdW5kIENTUyBwcm9wZXJ0
eSBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoQXV0
bykpOworICAgIH0KKyNlbmRpZgorCisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0SXNB
YnNvbHV0ZVNpemUodHJ1ZSk7CisKKyNpZmRlZiBRX1dTX01BQyAvLyBVc2UgZml4ZWQgZm9udCBz
aXplIGFuZCBmYW1pbHkgb24gTWFjIChsaWtlIFNhZmFyaSBkb2VzKQorICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fYnV0dG9uRm9udFBpeGVsU2l6ZSk7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShtX2J1dHRvbkZvbnRQaXhlbFNpemUpOworI2Vsc2UK
KyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzdHlsZS0+Zm9udFNpemUoKSk7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShzdHlsZS0+Zm9udFNpemUoKSk7
CisjZW5kaWYKKworICAgIFZlY3RvcjxBdG9taWNTdHJpbmcsIDE+IGZhbWlsaWVzOworICAgIGZh
bWlsaWVzLmFwcGVuZChtX2J1dHRvbkZvbnRGYW1pbHkpOworICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRGYW1pbGllcyhmYW1pbGllcyk7CisgICAgc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pOworICAgIHN0eWxlLT5mb250KCkudXBkYXRlKHN0eWxlUmVzb2x2ZXItPmZv
bnRTZWxlY3RvcigpKTsKKyAgICBzdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVIZWlnaHQoKSk7CisgICAgc2V0QnV0dG9uU2l6ZShzdHlsZSk7CisgICAgc2V0QnV0
dG9uUGFkZGluZyhzdHlsZSk7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OnNldEJ1dHRv
blBhZGRpbmcoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAoreworICAgIC8vIEZha2UgYSBidXR0
b24gcmVjdCBoZXJlLCBzaW5jZSB3ZSdyZSBqdXN0IGNvbXB1dGluZyBkZWx0YXMKKyAgICBRUmVj
dCBvcmlnaW5hbFJlY3QgPSBRUmVjdCgwLCAwLCAxMDAsIDMwKTsKKworICAgIC8vIERlZmF1bHQg
cGFkZGluZyBpcyBiYXNlZCBvbiB0aGUgYnV0dG9uIG1hcmdpbiBwaXhlbCBtZXRyaWMKKyAgICBp
bnQgYnV0dG9uTWFyZ2luID0gbV9xU3R5bGUtPmJ1dHRvbk1hcmdpbihRU3R5bGVGYWNhZGU6OlN0
YXRlX1NtYWxsLCBvcmlnaW5hbFJlY3QpOworICAgIGludCBwYWRkaW5nTGVmdCA9IGJ1dHRvbk1h
cmdpbjsKKyAgICBpbnQgcGFkZGluZ1JpZ2h0ID0gYnV0dG9uTWFyZ2luOworICAgIGludCBwYWRk
aW5nVG9wID0gYnV0dG9uTWFyZ2luOworICAgIGludCBwYWRkaW5nQm90dG9tID0gYnV0dG9uTWFy
Z2luOworCisgICAgLy8gVGhlbiBjaGVjayBpZiB0aGUgc3R5bGUgdXNlcyBsYXlvdXQgbWFyZ2lu
cworICAgIFFSZWN0IGxheW91dFJlY3QgPSBtX3FTdHlsZS0+YnV0dG9uU3ViRWxlbWVudFJlY3Qo
UVN0eWxlRmFjYWRlOjpQdXNoQnV0dG9uTGF5b3V0SXRlbSwgUVN0eWxlRmFjYWRlOjpTdGF0ZV9T
bWFsbCwgb3JpZ2luYWxSZWN0KTsKKyAgICBpZiAoIWxheW91dFJlY3QuaXNOdWxsKCkpIHsKKyAg
ICAgICAgUVJlY3QgY29udGVudHNSZWN0ID0gbV9xU3R5bGUtPmJ1dHRvblN1YkVsZW1lbnRSZWN0
KFFTdHlsZUZhY2FkZTo6UHVzaEJ1dHRvbkNvbnRlbnRzLCBRU3R5bGVGYWNhZGU6OlN0YXRlX1Nt
YWxsLCBvcmlnaW5hbFJlY3QpOworICAgICAgICBwYWRkaW5nTGVmdCA9IGNvbnRlbnRzUmVjdC5s
ZWZ0KCkgLSBsYXlvdXRSZWN0LmxlZnQoKTsKKyAgICAgICAgcGFkZGluZ1JpZ2h0ID0gbGF5b3V0
UmVjdC5yaWdodCgpIC0gY29udGVudHNSZWN0LnJpZ2h0KCk7CisgICAgICAgIHBhZGRpbmdUb3Ag
PSBjb250ZW50c1JlY3QudG9wKCkgLSBsYXlvdXRSZWN0LnRvcCgpOworCisgICAgICAgIC8vIENh
bid0IHVzZSB0aGlzIHJpZ2h0IG5vdyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIGJhc2VsaW5l
IHRvIGNvbXBlbnNhdGUKKyAgICAgICAgLy8gcGFkZGluZ0JvdHRvbSA9IGxheW91dFJlY3QuYm90
dG9tKCkgLSBjb250ZW50c1JlY3QuYm90dG9tKCk7CisgICAgfQorICAgIHN0eWxlLT5zZXRQYWRk
aW5nTGVmdChMZW5ndGgocGFkZGluZ0xlZnQsIEZpeGVkKSk7CisgICAgc3R5bGUtPnNldFBhZGRp
bmdSaWdodChMZW5ndGgocGFkZGluZ1JpZ2h0LCBGaXhlZCkpOworICAgIHN0eWxlLT5zZXRQYWRk
aW5nVG9wKExlbmd0aChwYWRkaW5nVG9wLCBGaXhlZCkpOworICAgIHN0eWxlLT5zZXRQYWRkaW5n
Qm90dG9tKExlbmd0aChwYWRkaW5nQm90dG9tLCBGaXhlZCkpOworfQorCitib29sIFJlbmRlclRo
ZW1lUVN0eWxlOjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
aSwgY29uc3QgSW50UmVjdCYgcikKK3sKKyAgICBTdHlsZVBhaW50ZXJRU3R5bGUgcCh0aGlzLCBp
LCBvKTsKKyAgICBpZiAoIXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHAuc3R5bGVPcHRpb24ucmVjdCA9IHI7CisgICAgcC5zdHlsZU9wdGlvbi5zdGF0ZSB8PSBRU3R5
bGVGYWNhZGU6OlN0YXRlX1NtYWxsOworCisgICAgaWYgKHAuYXBwZWFyYW5jZSA9PSBQdXNoQnV0
dG9uUGFydCB8fCBwLmFwcGVhcmFuY2UgPT0gQnV0dG9uUGFydCkgeworICAgICAgICBwLnN0eWxl
T3B0aW9uLnJlY3QgPSBpbmZsYXRlQnV0dG9uUmVjdChwLnN0eWxlT3B0aW9uLnJlY3QpOworICAg
ICAgICBwLnBhaW50QnV0dG9uKFFTdHlsZUZhY2FkZTo6UHVzaEJ1dHRvbik7CisgICAgfSBlbHNl
IGlmIChwLmFwcGVhcmFuY2UgPT0gUmFkaW9QYXJ0KQorICAgICAgICBwLnBhaW50QnV0dG9uKFFT
dHlsZUZhY2FkZTo6UmFkaW9CdXR0b24pOworICAgIGVsc2UgaWYgKHAuYXBwZWFyYW5jZSA9PSBD
aGVja2JveFBhcnQpCisgICAgICAgIHAucGFpbnRCdXR0b24oUVN0eWxlRmFjYWRlOjpDaGVja0Jv
eCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBh
aW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByKQoreworICAgIFN0eWxlUGFpbnRlclFTdHlsZSBwKHRoaXMsIGksIG8pOworICAg
IGlmICghcC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcC5zdHlsZU9w
dGlvbi5yZWN0ID0gcjsKKyAgICBwLnN0eWxlT3B0aW9uLnN0YXRlIHw9IFFTdHlsZUZhY2FkZTo6
U3RhdGVfU3Vua2VuOworCisgICAgLy8gR2V0IHRoZSBjb3JyZWN0IHRoZW1lIGRhdGEgZm9yIGEg
dGV4dCBmaWVsZAorICAgIGlmIChwLmFwcGVhcmFuY2UgIT0gVGV4dEZpZWxkUGFydAorICAgICAg
ICAmJiBwLmFwcGVhcmFuY2UgIT0gU2VhcmNoRmllbGRQYXJ0CisgICAgICAgICYmIHAuYXBwZWFy
YW5jZSAhPSBUZXh0QXJlYVBhcnQKKyAgICAgICAgJiYgcC5hcHBlYXJhbmNlICE9IExpc3Rib3hQ
YXJ0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIE5vdyBwYWludCB0aGUgdGV4dCBm
aWVsZC4KKyAgICBwLnBhaW50VGV4dEZpZWxkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIq
IHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29u
c3QKK3sKKyAgICBhZGp1c3RUZXh0RmllbGRTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxl
bWVudCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50VGV4dEFyZWEoUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAg
cmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOworfQorCit2b2lkIFJlbmRlclRoZW1lUVN0
eWxlOjpzZXRQb3B1cFBhZGRpbmcoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAoreworICAgIGNv
bnN0IGludCBwYWRkaW5nTGVmdCA9IDQ7CisgICAgY29uc3QgaW50IHBhZGRpbmdSaWdodCA9IHN0
eWxlLT53aWR0aCgpLmlzRml4ZWQoKSB8fCBzdHlsZS0+d2lkdGgoKS5pc1BlcmNlbnQoKSA/IDUg
OiA4OworCisgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nTGVmdCwgRml4
ZWQpKTsKKworICAgIGludCB3ID0gbV9xU3R5bGUtPnNpbXBsZVBpeGVsTWV0cmljKFFTdHlsZUZh
Y2FkZTo6UE1fQnV0dG9uSWNvblNpemUpOworICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQoTGVu
Z3RoKHBhZGRpbmdSaWdodCArIHcsIEZpeGVkKSk7CisKKyAgICBzdHlsZS0+c2V0UGFkZGluZ1Rv
cChMZW5ndGgoMiwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgo
MiwgRml4ZWQpKTsKK30KKworUVBhbGV0dGUgUmVuZGVyVGhlbWVRU3R5bGU6OmNvbG9yUGFsZXR0
ZSgpIGNvbnN0Cit7CisgICAgUVBhbGV0dGUgcGFsZXR0ZSA9IFJlbmRlclRoZW1lUXQ6OmNvbG9y
UGFsZXR0ZSgpOworICAgIHNldFBhbGV0dGVGcm9tUGFnZUNsaWVudElmRXhpc3RzKHBhbGV0dGUp
OworICAgIHJldHVybiBwYWxldHRlOworfQorCitib29sIFJlbmRlclRoZW1lUVN0eWxlOjpwYWlu
dE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByKQoreworICAgIFN0eWxlUGFpbnRlclFTdHlsZSBwKHRoaXMsIGksIG8pOworICAgIGlm
ICghcC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcC5zdHlsZU9wdGlv
bi5yZWN0ID0gcjsKKyAgICBwLnBhaW50Q29tYm9Cb3goKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBl
KSBjb25zdAoreworICAgIC8vIFdPUktBUk9VTkQgYmVjYXVzZSBodG1sLmNzcyBzcGVjaWZpZXMg
LXdlYmtpdC1ib3JkZXItcmFkaXVzIGZvciA8c2VsZWN0PiBzbyB3ZSBvdmVycmlkZSBpdCBoZXJl
CisgICAgLy8gc2VlIGFsc28gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzOTkKKyAgICBzdHlsZS0+cmVzZXRCb3JkZXJSYWRpdXMoKTsKKworICAgIFJlbmRlclRoZW1l
UXQ6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOwor
fQorCitib29sIFJlbmRlclRoZW1lUVN0eWxlOjpwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9i
amVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIFN0
eWxlUGFpbnRlclFTdHlsZSBwKHRoaXMsIGksIG8pOworICAgIGlmICghcC5pc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcC5zdHlsZU9wdGlvbi5yZWN0ID0gcjsKKyAgICBw
LnBhaW50Q29tYm9Cb3hBcnJvdygpOworICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIEVOQUJM
RShQUk9HUkVTU19FTEVNRU5UKQorZG91YmxlIFJlbmRlclRoZW1lUVN0eWxlOjphbmltYXRpb25E
dXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcykgY29u
c3QKK3sKKyAgICBpZiAocmVuZGVyUHJvZ3Jlc3MtPnBvc2l0aW9uKCkgPj0gMCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBJbnRTaXplIHNpemUgPSByZW5kZXJQcm9ncmVzcy0+cGl4ZWxTbmFw
cGVkU2l6ZSgpOworICAgIC8vIEZJWE1FOiBVbnRpbCBodHRwOi8vYnVncmVwb3J0cy5xdC5ub2tp
YS5jb20vYnJvd3NlL1FUQlVHLTkxNzEgaXMgZml4ZWQsCisgICAgLy8gd2Ugc2ltdWxhdGUgb25l
IHNxdWFyZSBhbmltYXRpbmcgYWNyb3NzIHRoZSBwcm9ncmVzcyBiYXIuCisgICAgcmV0dXJuIChz
aXplLndpZHRoKCkgLyBtX3FTdHlsZS0+cHJvZ3Jlc3NCYXJDaHVua1dpZHRoKHNpemUpKSAqIGFu
aW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIocmVuZGVyUHJvZ3Jlc3MpOworfQor
Citib29sIFJlbmRlclRoZW1lUVN0eWxlOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCog
bywgY29uc3QgUGFpbnRJbmZvJiBwaSwgY29uc3QgSW50UmVjdCYgcikKK3sKKyAgICBpZiAoIW8t
PmlzUHJvZ3Jlc3MoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHlsZVBhaW50ZXJR
U3R5bGUgcCh0aGlzLCBwaSwgbyk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBwLnN0eWxlT3B0aW9uLnJlY3QgPSByOworICAgIFJlbmRlclByb2dy
ZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7CisgICAgcC5wYWludFBy
b2dyZXNzQmFyKHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigpLCByZW5kZXJQcm9ncmVzcy0+YW5p
bWF0aW9uUHJvZ3Jlc3MoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK2Jvb2wg
UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIHBpLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIFN0eWxlUGFpbnRlclFT
dHlsZSBwKHRoaXMsIHBpLCBvKTsKKyAgICBpZiAoIXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNvbnN0IFFQb2ludCB0b3BMZWZ0ID0gci5sb2NhdGlvbigpOworICAg
IHAucGFpbnRlci0+dHJhbnNsYXRlKHRvcExlZnQpOworCisgICAgcC5zdHlsZU9wdGlvbi5yZWN0
ID0gcjsKKyAgICBwLnN0eWxlT3B0aW9uLnJlY3QubW92ZVRvKFFQb2ludCgwLCAwKSk7CisKKyAg
ICBpZiAocC5hcHBlYXJhbmNlID09IFNsaWRlclZlcnRpY2FsUGFydCkKKyAgICAgICAgcC5zdHls
ZU9wdGlvbi5zbGlkZXIub3JpZW50YXRpb24gPSBRdDo6VmVydGljYWw7CisKKyAgICBpZiAoaXNQ
cmVzc2VkKG8pKQorICAgICAgICBwLnN0eWxlT3B0aW9uLnN0YXRlIHw9IFFTdHlsZUZhY2FkZTo6
U3RhdGVfU3Vua2VuOworCisgICAgLy8gc29tZSBzdHlsZXMgbmVlZCB0aGlzIHRvIHNob3cgYSBo
aWdobGlnaHQgb24gb25lIHNpZGUgb2YgdGhlIGdyb292ZQorICAgIEhUTUxJbnB1dEVsZW1lbnQq
IHNsaWRlciA9IG8tPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoc2xpZGVyICYm
IHNsaWRlci0+aXNTdGVwcGFibGUoKSkgeworICAgICAgICBwLnN0eWxlT3B0aW9uLnNsaWRlci51
cHNpZGVEb3duID0gKHAuYXBwZWFyYW5jZSA9PSBTbGlkZXJIb3Jpem9udGFsUGFydCkgJiYgIW8t
PnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICAgICAgLy8gVXNlIHRoZSB3
aWR0aCBhcyBhIG11bHRpcGxpZXIgaW4gY2FzZSB0aGUgc2xpZGVyIHZhbHVlcyBhcmUgPD0gMQor
ICAgICAgICBjb25zdCBpbnQgd2lkdGggPSByLndpZHRoKCkgPiAwID8gci53aWR0aCgpIDogMTAw
OworICAgICAgICBwLnN0eWxlT3B0aW9uLnNsaWRlci5tYXhpbXVtID0gc2xpZGVyLT5tYXhpbXVt
KCkgKiB3aWR0aDsKKyAgICAgICAgcC5zdHlsZU9wdGlvbi5zbGlkZXIubWluaW11bSA9IHNsaWRl
ci0+bWluaW11bSgpICogd2lkdGg7CisgICAgICAgIGlmICghcC5zdHlsZU9wdGlvbi5zbGlkZXIu
dXBzaWRlRG93bikKKyAgICAgICAgICAgIHAuc3R5bGVPcHRpb24uc2xpZGVyLnBvc2l0aW9uID0g
c2xpZGVyLT52YWx1ZUFzTnVtYmVyKCkgKiB3aWR0aDsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcC5zdHlsZU9wdGlvbi5zbGlkZXIucG9zaXRpb24gPSBwLnN0eWxlT3B0aW9uLnNsaWRlci5t
aW5pbXVtICsgcC5zdHlsZU9wdGlvbi5zbGlkZXIubWF4aW11bSAtIHNsaWRlci0+dmFsdWVBc051
bWJlcigpICogd2lkdGg7CisgICAgfQorCisgICAgcC5wYWludFNsaWRlclRyYWNrKCk7CisKKyAg
ICBwLnBhaW50ZXItPnRyYW5zbGF0ZSgtdG9wTGVmdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIHN0eWxl
LT5zZXRCb3hTaGFkb3cobnVsbHB0cik7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBh
aW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLCBjb25z
dCBJbnRSZWN0JiByKQoreworICAgIFN0eWxlUGFpbnRlclFTdHlsZSBwKHRoaXMsIHBpLCBvKTsK
KyAgICBpZiAoIXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0
IFFQb2ludCB0b3BMZWZ0ID0gci5sb2NhdGlvbigpOworICAgIHAucGFpbnRlci0+dHJhbnNsYXRl
KHRvcExlZnQpOworCisgICAgcC5zdHlsZU9wdGlvbi5yZWN0ID0gcjsKKyAgICBwLnN0eWxlT3B0
aW9uLnJlY3QubW92ZVRvKFFQb2ludCgwLCAwKSk7CisgICAgcC5zdHlsZU9wdGlvbi5zbGlkZXIu
b3JpZW50YXRpb24gPSBRdDo6SG9yaXpvbnRhbDsKKyAgICBpZiAocC5hcHBlYXJhbmNlID09IFNs
aWRlclRodW1iVmVydGljYWxQYXJ0KQorICAgICAgICBwLnN0eWxlT3B0aW9uLnNsaWRlci5vcmll
bnRhdGlvbiA9IFF0OjpWZXJ0aWNhbDsKKyAgICBpZiAoaXNQcmVzc2VkKG8pKQorICAgICAgICBw
LnN0eWxlT3B0aW9uLnN0YXRlIHw9IFFTdHlsZUZhY2FkZTo6U3RhdGVfU3Vua2VuOworCisgICAg
cC5wYWludFNsaWRlclRodW1iKCk7CisKKyAgICBwLnBhaW50ZXItPnRyYW5zbGF0ZSgtdG9wTGVm
dCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBSZW5kZXJUaGVtZTo6
YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7Cisg
ICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVFT
dHlsZTo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGksIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIHBp
LCByKTsKK30KKwordm9pZCBSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGREZWNv
cmF0aW9uU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBFbGVtZW50KiBlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUmVu
ZGVyVGhlbWU6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKHN0eWxlUmVzb2x2ZXIs
IHN0eWxlLCBlKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVs
ZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLCBjb25zdCBJ
bnRSZWN0JiByKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFJlbmRlclRo
ZW1lOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihvLCBwaSwgcik7Cit9CisKK3ZvaWQgUmVu
ZGVyVGhlbWVRU3R5bGU6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TdHlsZShT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBSZW5kZXJUaGVtZTo6YWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxl
LCBlKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwgY29uc3Qg
SW50UmVjdCYgcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZW5kZXJU
aGVtZTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKG8sIHBpLCByKTsKK30KKwor
I2lmbmRlZiBRVF9OT19TUElOQk9YCisKK2Jvb2wgUmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50SW5u
ZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgU3R5bGVQYWludGVyUVN0eWxlIHAodGhpcywg
cGFpbnRJbmZvLCBvKTsKKyAgICBpZiAoIXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIHAuc3R5bGVPcHRpb24ucmVjdCA9IHJlY3Q7CisgICAgcC5wYWludElubmVyU3Bp
bkJ1dHRvbihpc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKG8pKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisjZW5kaWYKKworQ29udHJvbFBhcnQgUmVuZGVyVGhlbWVRU3R5bGU6OmluaXRpYWxpemVD
b21tb25RU3R5bGVPcHRpb25zKFFTdHlsZUZhY2FkZU9wdGlvbiAmb3B0aW9uLCBSZW5kZXJPYmpl
Y3QqIG8pIGNvbnN0Cit7CisgICAgLy8gRGVmYXVsdCBiaXRzOiBubyBmb2N1cywgbm8gbW91c2Ug
b3ZlciwgZW5hYmxlZAorICAgIG9wdGlvbi5zdGF0ZSAmPSB+KFFTdHlsZUZhY2FkZTo6U3RhdGVf
SGFzRm9jdXMgfCBRU3R5bGVGYWNhZGU6OlN0YXRlX01vdXNlT3Zlcik7CisgICAgb3B0aW9uLnN0
YXRlIHw9IFFTdHlsZUZhY2FkZTo6U3RhdGVfRW5hYmxlZDsKKworICAgIGlmIChpc1JlYWRPbmx5
Q29udHJvbChvKSkKKyAgICAgICAgLy8gUmVhZG9ubHkgaXMgc3VwcG9ydGVkIG9uIHRleHRmaWVs
ZHMuCisgICAgICAgIG9wdGlvbi5zdGF0ZSB8PSBRU3R5bGVGYWNhZGU6OlN0YXRlX1JlYWRPbmx5
OworCisgICAgb3B0aW9uLmRpcmVjdGlvbiA9IFF0OjpMZWZ0VG9SaWdodDsKKworICAgIGlmIChp
c0hvdmVyZWQobykpCisgICAgICAgIG9wdGlvbi5zdGF0ZSB8PSBRU3R5bGVGYWNhZGU6OlN0YXRl
X01vdXNlT3ZlcjsKKworICAgIHNldFBhbGV0dGVGcm9tUGFnZUNsaWVudElmRXhpc3RzKG9wdGlv
bi5wYWxldHRlKTsKKworICAgIGlmICghaXNFbmFibGVkKG8pKSB7CisgICAgICAgIG9wdGlvbi5w
YWxldHRlLnNldEN1cnJlbnRDb2xvckdyb3VwKFFQYWxldHRlOjpEaXNhYmxlZCk7CisgICAgICAg
IG9wdGlvbi5zdGF0ZSAmPSB+UVN0eWxlRmFjYWRlOjpTdGF0ZV9FbmFibGVkOworICAgIH0KKwor
ICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG8tPnN0eWxlKCk7CisgICAgaWYgKCFzdHlsZSkKKyAg
ICAgICAgcmV0dXJuIE5vQ29udHJvbFBhcnQ7CisKKyAgICBDb250cm9sUGFydCByZXN1bHQgPSBz
dHlsZS0+YXBwZWFyYW5jZSgpOworICAgIGlmIChzdXBwb3J0c0ZvY3VzKHJlc3VsdCkgJiYgaXNG
b2N1c2VkKG8pKSB7CisgICAgICAgIG9wdGlvbi5zdGF0ZSB8PSBRU3R5bGVGYWNhZGU6OlN0YXRl
X0hhc0ZvY3VzOworICAgICAgICBvcHRpb24uc3RhdGUgfD0gUVN0eWxlRmFjYWRlOjpTdGF0ZV9L
ZXlib2FyZEZvY3VzQ2hhbmdlOworICAgIH0KKworICAgIGlmIChzdHlsZS0+ZGlyZWN0aW9uKCkg
PT0gV2ViQ29yZTo6UlRMKQorICAgICAgICBvcHRpb24uZGlyZWN0aW9uID0gUXQ6OlJpZ2h0VG9M
ZWZ0OworCisgICAgc3dpdGNoIChyZXN1bHQpIHsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0Ogor
ICAgIGNhc2UgU3F1YXJlQnV0dG9uUGFydDoKKyAgICBjYXNlIEJ1dHRvblBhcnQ6CisgICAgY2Fz
ZSBCdXR0b25CZXZlbFBhcnQ6CisgICAgY2FzZSBMaXN0SXRlbVBhcnQ6CisgICAgY2FzZSBNZW51
bGlzdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgorICAgIGNhc2Ug
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydDoKKyAgICBjYXNlIFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uUGFydDogeworICAgICAgICBpZiAoaXNQcmVzc2VkKG8pKQorICAgICAgICAgICAgb3B0
aW9uLnN0YXRlIHw9IFFTdHlsZUZhY2FkZTo6U3RhdGVfU3Vua2VuOworICAgICAgICBlbHNlIGlm
IChyZXN1bHQgPT0gUHVzaEJ1dHRvblBhcnQgfHwgcmVzdWx0ID09IEJ1dHRvblBhcnQpCisgICAg
ICAgICAgICBvcHRpb24uc3RhdGUgfD0gUVN0eWxlRmFjYWRlOjpTdGF0ZV9SYWlzZWQ7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICBjYXNlIENoZWNrYm94
UGFydDoKKyAgICAgICAgb3B0aW9uLnN0YXRlIHw9IChpc0NoZWNrZWQobykgPyBRU3R5bGVGYWNh
ZGU6OlN0YXRlX09uIDogUVN0eWxlRmFjYWRlOjpTdGF0ZV9PZmYpOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdFNsaWRlclRo
dW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7Cisg
ICAgY29uc3QgQ29udHJvbFBhcnQgcGFydCA9IHN0eWxlLT5hcHBlYXJhbmNlKCk7CisgICAgaWYg
KHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1i
VmVydGljYWxQYXJ0KSB7CisgICAgICAgIFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IFF0
OjpIb3Jpem9udGFsOworICAgICAgICBpZiAocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFy
dCkKKyAgICAgICAgICAgIG9yaWVudGF0aW9uID0gUXQ6OlZlcnRpY2FsOworCisgICAgICAgIGlu
dCBsZW5ndGggPSBtX3FTdHlsZS0+c2xpZGVyTGVuZ3RoKG9yaWVudGF0aW9uKTsKKyAgICAgICAg
aW50IHRoaWNrbmVzcyA9IG1fcVN0eWxlLT5zbGlkZXJUaGlja25lc3Mob3JpZW50YXRpb24pOwor
ICAgICAgICBpZiAob3JpZW50YXRpb24gPT0gUXQ6OlZlcnRpY2FsKSB7CisgICAgICAgICAgICBz
dHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHRoaWNrbmVzcywgRml4ZWQpKTsKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGxlbmd0aCwgRml4ZWQpKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgobGVuZ3RoLCBGaXhlZCkpOworICAg
ICAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgodGhpY2tuZXNzLCBGaXhlZCkpOworICAg
ICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNsaWRlclRo
dW1iU2l6ZShzdHlsZSwgZWxlbWVudCk7Cit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUVN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHlsZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMjdmMTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHlsZS5oCkBAIC0wLDAg
KzEsMTU4IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRoZW1lIGltcGxlbWVu
dGF0aW9uIGZvciBmb3JtIGNvbnRyb2xzIGluIFdlYkNvcmUuCisgKgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisg
Ki8KKyNpZm5kZWYgUmVuZGVyVGhlbWVRU3R5bGVfaAorI2RlZmluZSBSZW5kZXJUaGVtZVFTdHls
ZV9oCisKKyNpbmNsdWRlICJRU3R5bGVGYWNhZGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZVF0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsYmFyVGhlbWVRU3R5bGU7
CisKK2NsYXNzIFBhZ2U7CitjbGFzcyBRU3R5bGVGYWNhZGU7CitzdHJ1Y3QgUVN0eWxlRmFjYWRl
T3B0aW9uOworCit0eXBlZGVmIFFTdHlsZUZhY2FkZSogKCpRdFN0eWxlRmFjdG9yeUZ1bmN0aW9u
KShQYWdlKik7CisKK2NsYXNzIFJlbmRlclRoZW1lUVN0eWxlIDogcHVibGljIFJlbmRlclRoZW1l
UXQgeworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU3R5bGVQYWludGVyUVN0eWxlOworCisg
ICAgUmVuZGVyVGhlbWVRU3R5bGUoUGFnZSopOworICAgIHZpcnR1YWwgflJlbmRlclRoZW1lUVN0
eWxlKCk7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3Jl
YXRlKFBhZ2UqKTsKKworICAgIHN0YXRpYyB2b2lkIHNldFN0eWxlRmFjdG9yeUZ1bmN0aW9uKFF0
U3R5bGVGYWN0b3J5RnVuY3Rpb24pOworICAgIHN0YXRpYyBRdFN0eWxlRmFjdG9yeUZ1bmN0aW9u
IHN0eWxlRmFjdG9yeSgpOworCisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6
ZShSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKworICAgIFFTdHlsZUZhY2FkZSogcVN0
eWxlKCkgeyByZXR1cm4gbV9xU3R5bGUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBF
bGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKworICAgIHZpcnR1YWwgYm9v
bCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCisgICAgdmlydHVhbCBib29sIHBh
aW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKworI2lmIEVOQUJM
RShQUk9HUkVTU19FTEVNRU5UKQorICAgIC8vIFJldHVybnMgdGhlIGR1cmF0aW9uIG9mIHRoZSBh
bmltYXRpb24gZm9yIHRoZSBwcm9ncmVzcyBiYXIuCisgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0
aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKKyNlbmRpZgorCisgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29s
dmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9u
U3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKKworI2lmbmRlZiBRVF9OT19TUElOQk9YCisgICAgdmlydHVhbCBib29s
IHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVTaXplQmFzZWRPblN0eWxlKFJlbmRlclN0eWxlKikgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IFFTaGFyZWRQb2ludGVyPFN0eWxlUGFpbnRlcj4gZ2V0U3R5bGVQYWludGVyKGNvbnN0IFBhaW50
SW5mbyYpOworCisgICAgdmlydHVhbCBRUmVjdCBpbmZsYXRlQnV0dG9uUmVjdChjb25zdCBRUmVj
dCYgb3JpZ2luYWxSZWN0KSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3B1cFBhZGRp
bmcoUmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAgIHZpcnR1YWwgUVBhbGV0dGUgY29sb3JQYWxl
dHRlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgQ29udHJvbFBhcnQgaW5pdGlhbGl6ZUNvbW1v
blFTdHlsZU9wdGlvbnMoUVN0eWxlRmFjYWRlT3B0aW9uJiwgUmVuZGVyT2JqZWN0KikgY29uc3Q7
CisKKyAgICB2b2lkIHNldEJ1dHRvblBhZGRpbmcoUmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAg
IHZvaWQgc2V0UGFsZXR0ZUZyb21QYWdlQ2xpZW50SWZFeGlzdHMoUVBhbGV0dGUmKSBjb25zdDsK
KworI2lmZGVmIFFfT1NfTUFDCisgICAgaW50IG1fYnV0dG9uRm9udFBpeGVsU2l6ZTsKKyNlbmRp
ZgorCisgICAgT3duUHRyPFFTdHlsZUZhY2FkZT4gbV9xU3R5bGU7Cit9OworCitjbGFzcyBTdHls
ZVBhaW50ZXJRU3R5bGUgOiBwdWJsaWMgU3R5bGVQYWludGVyIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBTdHlsZVBhaW50ZXJRU3R5bGUoUmVuZGVyVGhlbWVRU3R5bGUqLCBjb25zdCBQYWludElu
Zm8mLCBSZW5kZXJPYmplY3QqKTsKKyAgICBleHBsaWNpdCBTdHlsZVBhaW50ZXJRU3R5bGUoU2Ny
b2xsYmFyVGhlbWVRU3R5bGUqLCBHcmFwaGljc0NvbnRleHQqKTsKKworICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIHFTdHlsZSAmJiBxU3R5bGUtPmlzVmFsaWQoKSAmJiBTdHlsZVBh
aW50ZXI6OmlzVmFsaWQoKTsgfQorCisgICAgUVN0eWxlRmFjYWRlKiBxU3R5bGU7CisgICAgUVN0
eWxlRmFjYWRlT3B0aW9uIHN0eWxlT3B0aW9uOworICAgIENvbnRyb2xQYXJ0IGFwcGVhcmFuY2U7
CisKKyAgICB2b2lkIHBhaW50QnV0dG9uKFFTdHlsZUZhY2FkZTo6QnV0dG9uVHlwZSB0eXBlKQor
ICAgIHsgcVN0eWxlLT5wYWludEJ1dHRvbihwYWludGVyLCB0eXBlLCBzdHlsZU9wdGlvbik7IH0K
KyAgICB2b2lkIHBhaW50VGV4dEZpZWxkKCkKKyAgICB7IHFTdHlsZS0+cGFpbnRUZXh0RmllbGQo
cGFpbnRlciwgc3R5bGVPcHRpb24pOyB9CisgICAgdm9pZCBwYWludENvbWJvQm94KCkKKyAgICB7
IHFTdHlsZS0+cGFpbnRDb21ib0JveChwYWludGVyLCBzdHlsZU9wdGlvbik7IH0KKyAgICB2b2lk
IHBhaW50Q29tYm9Cb3hBcnJvdygpCisgICAgeyBxU3R5bGUtPnBhaW50Q29tYm9Cb3hBcnJvdyhw
YWludGVyLCBzdHlsZU9wdGlvbik7IH0KKyAgICB2b2lkIHBhaW50U2xpZGVyVHJhY2soKQorICAg
IHsgcVN0eWxlLT5wYWludFNsaWRlclRyYWNrKHBhaW50ZXIsIHN0eWxlT3B0aW9uKTsgfQorICAg
IHZvaWQgcGFpbnRTbGlkZXJUaHVtYigpCisgICAgeyBxU3R5bGUtPnBhaW50U2xpZGVyVGh1bWIo
cGFpbnRlciwgc3R5bGVPcHRpb24pOyB9CisgICAgdm9pZCBwYWludElubmVyU3BpbkJ1dHRvbihi
b29sIHNwaW5Cb3hVcCkKKyAgICB7IHFTdHlsZS0+cGFpbnRJbm5lclNwaW5CdXR0b24ocGFpbnRl
ciwgc3R5bGVPcHRpb24sIHNwaW5Cb3hVcCk7IH0KKyAgICB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIo
ZG91YmxlIHByb2dyZXNzLCBkb3VibGUgYW5pbWF0aW9uUHJvZ3Jlc3MpCisgICAgeyBxU3R5bGUt
PnBhaW50UHJvZ3Jlc3NCYXIocGFpbnRlciwgc3R5bGVPcHRpb24sIHByb2dyZXNzLCBhbmltYXRp
b25Qcm9ncmVzcyk7IH0KKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnN0IFFSZWN0JiBy
ZWN0KQorICAgIHsgcVN0eWxlLT5wYWludFNjcm9sbENvcm5lcihwYWludGVyLCByZWN0KTsgfQor
ICAgIHZvaWQgcGFpbnRTY3JvbGxCYXIoKQorICAgIHsgcVN0eWxlLT5wYWludFNjcm9sbEJhcihw
YWludGVyLCBzdHlsZU9wdGlvbik7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNldHVwU3R5bGVP
cHRpb24oKTsKKworICAgIFFfRElTQUJMRV9DT1BZKFN0eWxlUGFpbnRlclFTdHlsZSkKK307CisK
K30KKworI2VuZGlmIC8vIFJlbmRlclRoZW1lUVN0eWxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYTQ4NmJhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC0wLDAgKzEsOTA0IEBACisvKgorICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0LgorICoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogICAgICAgICAg
ICAgICAyMDA2IERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogICAgICAgICAgICAg
ICAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVt
ZVF0LmgiCisKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJGaWxlTGlzdC5oIgor
I2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFD
b250cm9sRWxlbWVudHMuaCIKKyNlbmRpZgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2luY2x1ZGUgIlJlbmRl
ckJveC5oIgorI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorI2luY2x1ZGUgIlJlbmRlclBy
b2dyZXNzLmgiCisjZW5kaWYKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlJl
bmRlclRoZW1lUXRNb2JpbGUuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1
ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAi
VXNlckFnZW50U3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisKKyNpbmNsdWRlIDxRQ29sb3I+CisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVkZSA8UUZv
bnRNZXRyaWNzPgorI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKworI2luY2x1ZGUgPFFTdHls
ZUhpbnRzPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CisKKy8vIFRoZXNlIHZhbHVlcyBhbGwgbWF0Y2ggU2FmYXJpL1dpbi9DaHJvbWl1bQorc3Rh
dGljIGNvbnN0IGZsb2F0IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IDEzOworc3RhdGlj
IGNvbnN0IGZsb2F0IGRlZmF1bHRDYW5jZWxCdXR0b25TaXplID0gOTsKK3N0YXRpYyBjb25zdCBm
bG9hdCBtaW5DYW5jZWxCdXR0b25TaXplID0gNTsKK3N0YXRpYyBjb25zdCBmbG9hdCBtYXhDYW5j
ZWxCdXR0b25TaXplID0gMjE7CitzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdFNlYXJjaEZpZWxk
UmVzdWx0c0RlY29yYXRpb25TaXplID0gMTM7CitzdGF0aWMgY29uc3QgZmxvYXQgbWluU2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblNpemUgPSA5Oworc3RhdGljIGNvbnN0IGZsb2F0IG1heFNl
YXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25TaXplID0gMzA7CitzdGF0aWMgY29uc3QgZmxvYXQg
ZGVmYXVsdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbldpZHRoID0gMTg7CisKK3N0YXRpYyBRdFRo
ZW1lRmFjdG9yeUZ1bmN0aW9uIHRoZW1lRmFjdG9yeTsKK3N0YXRpYyBTY3JvbGxiYXJUaGVtZSog
c2Nyb2xsYmFyVGhlbWU7CisKK1JlbmRlclRoZW1lUXQ6OlJlbmRlclRoZW1lUXQoUGFnZSogcGFn
ZSkKKyAgICA6IFJlbmRlclRoZW1lKCkKKyAgICAsIG1fcGFnZShwYWdlKQoreworICAgIG1fYnV0
dG9uRm9udEZhbWlseSA9IFFHdWlBcHBsaWNhdGlvbjo6Zm9udCgpLmZhbWlseSgpOworfQorCit2
b2lkIFJlbmRlclRoZW1lUXQ6OnNldEN1c3RvbVRoZW1lKFF0VGhlbWVGYWN0b3J5RnVuY3Rpb24g
ZmFjdG9yeSwgU2Nyb2xsYmFyVGhlbWUqIGN1c3RvbVNjcm9sbGJhclRoZW1lKQoreworICAgIHRo
ZW1lRmFjdG9yeSA9IGZhY3Rvcnk7CisgICAgc2Nyb2xsYmFyVGhlbWUgPSBjdXN0b21TY3JvbGxi
YXJUaGVtZTsKK30KKworU2Nyb2xsYmFyVGhlbWUqIFJlbmRlclRoZW1lUXQ6OmN1c3RvbVNjcm9s
bGJhclRoZW1lKCkKK3sKKyAgICByZXR1cm4gc2Nyb2xsYmFyVGhlbWU7Cit9CisKK3N0YXRpYyBQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGVUaGVtZShQYWdlKiBwYWdlKQoreworICAgIGlm
ICh0aGVtZUZhY3RvcnkpCisgICAgICAgIHJldHVybiB0aGVtZUZhY3RvcnkocGFnZSk7CisgICAg
cmV0dXJuIFJlbmRlclRoZW1lUXRNb2JpbGU6OmNyZWF0ZShwYWdlKTsKK30KKworUGFzc1JlZlB0
cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQorewor
ICAgIGlmIChwYWdlKQorICAgICAgICByZXR1cm4gY3JlYXRlVGhlbWUocGFnZSk7CisgICAgc3Rh
dGljIFJlbmRlclRoZW1lKiBmYWxsYmFjayA9IGNyZWF0ZVRoZW1lKDApLmxlYWtSZWYoKTsKKyAg
ICByZXR1cm4gZmFsbGJhY2s7Cit9CisKKy8vIFJlbW92ZSB0aGlzIHdoZW4gU2VhcmNoRmllbGRQ
YXJ0IGlzIHN0eWxlLWFibGUgaW4gUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZCgpCitib29s
IFJlbmRlclRoZW1lUXQ6OmlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IGNvbnN0IEJvcmRlckRhdGEmIGJvcmRlciwgY29uc3QgRmlsbExheWVyJiBmaWxsLCBjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdAoreworICAgIHN3aXRjaCAoc3R5bGUtPmFwcGVh
cmFuY2UoKSkgeworICAgIGNhc2UgU2VhcmNoRmllbGRQYXJ0OgorICAgICAgICAvLyBUZXN0IHRo
ZSBzdHlsZSB0byBzZWUgaWYgdGhlIFVBIGJvcmRlciBhbmQgYmFja2dyb3VuZCBtYXRjaC4KKyAg
ICAgICAgcmV0dXJuIChzdHlsZS0+Ym9yZGVyKCkgIT0gYm9yZGVyCisgICAgICAgICAgICAgICAg
fHwgKnN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkgIT0gZmlsbAorICAgICAgICAgICAgICAgIHx8
IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
ICE9IGJhY2tncm91bmRDb2xvcik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFJlbmRl
clRoZW1lOjppc0NvbnRyb2xTdHlsZWQoc3R5bGUsIGJvcmRlciwgZmlsbCwgYmFja2dyb3VuZENv
bG9yKTsKKyAgICB9Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZVF0OjpleHRyYURlZmF1bHRTdHls
ZVNoZWV0KCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5k
KFJlbmRlclRoZW1lOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkpOworICAgIC8vIFdoZW4gbm8g
dGhlbWUgZmFjdG9yeSBpcyBwcm92aWRlZCB3ZSBkZWZhdWx0IHRvIHVzaW5nIG91ciBwbGF0Zm9y
bSBpbmRlcGVuZGVudCAiTW9iaWxlIFF0IiB0aGVtZSwKKyAgICAvLyB3aGljaCByZXF1aXJlcyB0
aGUgZm9sbG93aW5nIHN0eWxlc2hlZXRzLgorICAgIGlmICghdGhlbWVGYWN0b3J5KSB7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKHRoZW1lUXROb0xpc3Rib3hlc1VzZXJBZ2VudFN0eWxl
U2hlZXQsIHNpemVvZih0aGVtZVF0Tm9MaXN0Ym94ZXNVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhtb2JpbGVUaGVtZVF0VXNlckFnZW50U3R5bGVT
aGVldCwgc2l6ZW9mKG1vYmlsZVRoZW1lUXRVc2VyQWdlbnRTdHlsZVNoZWV0KSkpOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6
c3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6c3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKSBjb25zdAoreworICAgIHN3aXRjaCAoc3R5bGUtPmFwcGVhcmFuY2Uo
KSkgeworICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgorICAgIGNhc2UgUmFkaW9QYXJ0OgorICAgIGNh
c2UgUHVzaEJ1dHRvblBhcnQ6CisgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgorICAgIGNhc2Ug
QnV0dG9uUGFydDoKKyAgICBjYXNlIEJ1dHRvbkJldmVsUGFydDoKKyAgICBjYXNlIExpc3Rib3hQ
YXJ0OgorICAgIGNhc2UgTGlzdEl0ZW1QYXJ0OgorICAgIGNhc2UgTWVudWxpc3RQYXJ0OgorICAg
IGNhc2UgTWVudWxpc3RCdXR0b25QYXJ0OgorICAgIGNhc2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6
CisgICAgY2FzZSBTbGlkZXJWZXJ0aWNhbFBhcnQ6CisgICAgY2FzZSBTbGlkZXJUaHVtYkhvcml6
b250YWxQYXJ0OgorICAgIGNhc2UgU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQ6CisgICAgY2FzZSBT
ZWFyY2hGaWVsZFBhcnQ6CisgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0Ogor
ICAgIGNhc2UgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0OgorICAgIGNhc2UgVGV4dEZpZWxk
UGFydDoKKyAgICBjYXNlIFRleHRBcmVhUGFydDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW50IFJlbmRlclRo
ZW1lUXQ6OmJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdAorewor
ICAgIGlmICghby0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoby0+c3R5
bGUoKS0+YXBwZWFyYW5jZSgpID09IENoZWNrYm94UGFydCB8fCBvLT5zdHlsZSgpLT5hcHBlYXJh
bmNlKCkgPT0gUmFkaW9QYXJ0KQorICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3gobyktPm1hcmdp
blRvcCgpICsgdG9SZW5kZXJCb3gobyktPmhlaWdodCgpIC0gMjsgLy8gU2FtZSBhcyBpbiBvbGQg
a2h0bWwKKyAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24obyk7Cit9CisK
K2Jvb2wgUmVuZGVyVGhlbWVRdDo6Y29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBvKSBjb25zdAoreworICAgIGlmICghaXNFbmFibGVkKG8pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBDaGVja2JveGVzIG9ubHkgaGF2ZSB0aW50IHdoZW4gY2hlY2tlZC4K
KyAgICBpZiAoby0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IENoZWNrYm94UGFydCkKKyAgICAg
ICAgcmV0dXJuIGlzQ2hlY2tlZChvKTsKKworICAgIC8vIEZvciBub3cgYXNzdW1lIG90aGVyIGNv
bnRyb2xzIGhhdmUgdGludCBpZiBlbmFibGVkLgorICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFJlbmRlclRoZW1lUXQ6OnN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworUVJlY3QgUmVuZGVyVGhlbWVRdDo6aW5mbGF0ZUJ1dHRvblJlY3QoY29u
c3QgUVJlY3QmIG9yaWdpbmFsUmVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4gb3JpZ2luYWxSZWN0
OworfQorCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRl
ck9iamVjdCogbywgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBzd2l0Y2ggKG8tPnN0eWxlKCktPmFw
cGVhcmFuY2UoKSkgeworICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQdXNoQnV0dG9uUGFy
dDoKKyAgICBjYXNlIEJ1dHRvblBhcnQ6IHsKKyAgICAgICAgUVJlY3QgaW5mbGF0ZWRSZWN0ID0g
aW5mbGF0ZUJ1dHRvblJlY3QocmVjdCk7CisgICAgICAgIHJlY3QgPSBJbnRSZWN0KGluZmxhdGVk
UmVjdC54KCksIGluZmxhdGVkUmVjdC55KCksIGluZmxhdGVkUmVjdC53aWR0aCgpLCBpbmZsYXRl
ZFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBNZW51bGlz
dFBhcnQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworQ29sb3IgUmVuZGVyVGhlbWVRdDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvclBhbGV0dGUoKS5icnVzaChR
UGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0KS5jb2xvcigpOworfQorCitDb2xv
ciBSZW5kZXJUaGVtZVF0OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29sb3JQYWxldHRlKCkuYnJ1c2goUVBhbGV0dGU6Oklu
YWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0KS5jb2xvcigpOworfQorCitDb2xvciBSZW5kZXJU
aGVtZVF0OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbG9yUGFsZXR0ZSgpLmJydXNoKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxl
dHRlOjpIaWdobGlnaHRlZFRleHQpLmNvbG9yKCk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lUXQ6
OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAg
IHJldHVybiBjb2xvclBhbGV0dGUoKS5icnVzaChRUGFsZXR0ZTo6SW5hY3RpdmUsIFFQYWxldHRl
OjpIaWdobGlnaHRlZFRleHQpLmNvbG9yKCk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lUXQ6OnBs
YXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvclBhbGV0dGUo
KS5icnVzaChRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0KS5jb2xvcigpOwor
fQorCit2b2lkIFJlbmRlclRoZW1lUXQ6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2Ny
aXB0aW9uJikgY29uc3QKK3sKKyAgICAvLyBuby1vcAorfQorCitDb2xvciBSZW5kZXJUaGVtZVF0
OjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0Cit7CisgICAgUVBhbGV0
dGUgcGFsID0gY29sb3JQYWxldHRlKCk7CisgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CisgICAg
Y2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6CisgICAgICAgIHJldHVybiBwYWwuYnJ1c2goUVBhbGV0
dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkJ1dHRvblRleHQpLmNvbG9yKCk7CisgICAgY2FzZSBDU1NW
YWx1ZUNhcHRpb250ZXh0OgorICAgICAgICByZXR1cm4gcGFsLmJydXNoKFFQYWxldHRlOjpBY3Rp
dmUsIFFQYWxldHRlOjpUZXh0KS5jb2xvcigpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CisgICAgfQorfQorCitpbnQg
UmVuZGVyVGhlbWVRdDo6bWluaW11bU1lbnVMaXN0U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IExhdGVyIHdlIG5lZWQgYSB3YXkgdG8gcXVlcnkgdGhlIFVJIHByb2Nl
c3MgZm9yIHRoZSBkcGkKKyAgICBjb25zdCBRRm9udE1ldHJpY3MgZm0oUUd1aUFwcGxpY2F0aW9u
Ojpmb250KCkpOworICAgIHJldHVybiBmbS53aWR0aChRTGF0aW4xQ2hhcigneCcpKTsKK30KKwor
dm9pZCBSZW5kZXJUaGVtZVF0OjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBj
b25zdAoreworICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKK30KKworYm9vbCBS
ZW5kZXJUaGVtZVF0OjpwYWludENoZWNrYm94KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIHJldHVybiBwYWludEJ1dHRvbihvLCBp
LCByKTsKK30KKwordm9pZCBSZW5kZXJUaGVtZVF0OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUq
IHN0eWxlKSBjb25zdAoreworICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKK30K
KworYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIHJldHVybiBwYWludEJ1dHRv
bihvLCBpLCByKTsKK30KKwordm9pZCBSZW5kZXJUaGVtZVF0OjpzZXRCdXR0b25TaXplKFJlbmRl
clN0eWxlKiBzdHlsZSkgY29uc3QKK3sKKyAgICBjb21wdXRlU2l6ZUJhc2VkT25TdHlsZShzdHls
ZSk7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit7CisgICAgLy8g
UmVzZXR0aW5nIHRoZSBzdHlsZSBsaWtlIHRoaXMgbGVhZHMgdG8gZGlmZmVyZW5jZXMgbGlrZToK
KyAgICAvLyAtIFJlbmRlclRleHRDb250cm9sIHtJTlBVVH0gYXQgKDIsMikgc2l6ZSAxNjh4MjUg
W2JnY29sb3I9I0ZGRkZGRl0gYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgIC8vICsg
UmVuZGVyVGV4dENvbnRyb2wge0lOUFVUfSBhdCAoMiwyKSBzaXplIDE2NngyNgorICAgIC8vIGlu
IGxheW91dCB0ZXN0cyB3aGVuIGEgQ1NTIHN0eWxlIGlzIGFwcGxpZWQgdGhhdCBkb2Vzbid0IGFm
ZmVjdCBiYWNrZ3JvdW5kIGNvbG9yLCBib3JkZXIgb3IKKyAgICAvLyBwYWRkaW5nLiBKdXN0IHdv
cnRoIGtlZXBpbmcgaW4gbWluZCEKKyAgICBzdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CisgICAgc3R5bGUtPnJl
c2V0UGFkZGluZygpOworICAgIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKK30KKwor
dm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxlUmVzb2x2ZXIqIHNl
bGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7Cisg
ICAgYWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKK30KKwor
Ym9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3Qg
UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIHJldHVybiBwYWludFRleHRG
aWVsZChvLCBpLCByKTsKK30KKwordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RNZW51TGlzdFN0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAor
eworICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOworCisgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0
byBhdXRvLgorICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKEF1dG8pKTsKKworICAgIC8vIFdo
aXRlLXNwYWNlIGlzIGxvY2tlZCB0byBwcmUKKyAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUp
OworCisgICAgY29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoc3R5bGUpOworCisgICAgLy8gQWRkIGlu
IHRoZSBwYWRkaW5nIHRoYXQgd2UnZCBsaWtlIHRvIHVzZS4KKyAgICBzZXRQb3B1cFBhZGRpbmco
c3R5bGUpOworfQorCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdE1lbnVMaXN0QnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit7
CisgICAgLy8gSGVpZ2h0IGlzIGxvY2tlZCB0byBhdXRvLgorICAgIHN0eWxlLT5zZXRIZWlnaHQo
TGVuZ3RoKEF1dG8pKTsKKworICAgIC8vIFdoaXRlLXNwYWNlIGlzIGxvY2tlZCB0byBwcmUKKyAg
ICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUpOworCisgICAgY29tcHV0ZVNpemVCYXNlZE9uU3R5
bGUoc3R5bGUpOworCisgICAgLy8gQWRkIGluIHRoZSBwYWRkaW5nIHRoYXQgd2UnZCBsaWtlIHRv
IHVzZS4KKyAgICBzZXRQb3B1cFBhZGRpbmcoc3R5bGUpOworfQorCisjaWYgRU5BQkxFKFBST0dS
RVNTX0VMRU1FTlQpCitkb3VibGUgUmVuZGVyVGhlbWVRdDo6YW5pbWF0aW9uUmVwZWF0SW50ZXJ2
YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MpIGNvbnN0Cit7
CisgICAgaWYgKHJlbmRlclByb2dyZXNzLT5wb3NpdGlvbigpID49IDApCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gRklYTUU6IFVzZSBoYXJkLWNvZGVkIHZhbHVlIHVudGlsIGh0dHA6Ly9i
dWdyZXBvcnRzLnF0Lm5va2lhLmNvbS9icm93c2UvUVRCVUctOTE3MSBpcyBmaXhlZC4KKyAgICAv
LyBVc2UgdGhlIHZhbHVlIGZyb20gd2luZG93cyBzdHlsZSB3aGljaCBpcyAxMCBmcHMuCisgICAg
cmV0dXJuIDAuMTsKK30KKwordm9pZCBSZW5kZXJUaGVtZVF0OjphZGp1c3RQcm9ncmVzc0JhclN0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAor
eworICAgIHN0eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7Cit9CisjZW5kaWYKKwordm9pZCBS
ZW5kZXJUaGVtZVF0OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIHN0eWxlLT5zZXRCb3hTaGFk
b3cobnVsbHB0cik7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVGh1bWJT
dHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRo
dW1iU3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgIHN0eWxlLT5zZXRC
b3hTaGFkb3cobnVsbHB0cik7Cit9CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKK0lu
dFNpemUgUmVuZGVyVGhlbWVRdDo6c2xpZGVyVGlja1NpemUoKSBjb25zdAoreworICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIHNldCB0aGlzIHRvIHRoZSBzaXplIG9mIG9uZSB0aWNrIG1hcmsuCisg
ICAgcmV0dXJuIEludFNpemUoMCwgMCk7Cit9CisKK2ludCBSZW5kZXJUaGVtZVF0OjpzbGlkZXJU
aWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2UgbmVl
ZCB0byBzZXQgdGhpcyB0byB0aGUgcG9zaXRpb24gb2YgdGhlIHRpY2sgbWFya3MuCisgICAgcmV0
dXJuIDA7Cit9CisjZW5kaWYKKworYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludFNlYXJjaEZpZWxk
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiByKQoreworICAgIHJldHVybiBwYWlu
dFRleHRGaWVsZChvLCBwaSwgcik7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2Vh
cmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKK3sKKyAgICAvLyBSZXNldHRpbmcgdGhlIHN0eWxlIGxpa2UgdGhpcyBsZWFkcyB0
byBkaWZmZXJlbmNlcyBsaWtlOgorICAgIC8vIC0gUmVuZGVyVGV4dENvbnRyb2wge0lOUFVUfSBh
dCAoMiwyKSBzaXplIDE2OHgyNSBbYmdjb2xvcj0jRkZGRkZGXSBib3JkZXI6ICgycHggaW5zZXQg
IzAwMDAwMCldCisgICAgLy8gKyBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgyLDIpIHNp
emUgMTY2eDI2CisgICAgLy8gaW4gbGF5b3V0IHRlc3RzIHdoZW4gYSBDU1Mgc3R5bGUgaXMgYXBw
bGllZCB0aGF0IGRvZXNuJ3QgYWZmZWN0IGJhY2tncm91bmQgY29sb3IsIGJvcmRlciBvcgorICAg
IC8vIHBhZGRpbmcuIEp1c3Qgd29ydGgga2VlcGluZyBpbiBtaW5kIQorICAgIHN0eWxlLT5zZXRC
YWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdHlsZS0+cmVzZXRCb3Jk
ZXIoKTsKKyAgICBzdHlsZS0+cmVzZXRQYWRkaW5nKCk7CisgICAgY29tcHV0ZVNpemVCYXNlZE9u
U3R5bGUoc3R5bGUpOworfQorCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCopIGNvbnN0Cit7CisgICAgLy8gTG9naWMgdGFrZW4gZnJvbSBSZW5kZXJUaGVtZUNocm9t
aXVtLmNwcC4KKyAgICAvLyBTY2FsZSB0aGUgYnV0dG9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQg
c2l6ZS4KKyAgICBmbG9hdCBmb250U2NhbGUgPSBzdHlsZS0+Zm9udFNpemUoKSAvIGRlZmF1bHRD
b250cm9sRm9udFBpeGVsU2l6ZTsKKyAgICBpbnQgY2FuY2VsQnV0dG9uU2l6ZSA9IGxyb3VuZGYo
cU1pbihxTWF4KG1pbkNhbmNlbEJ1dHRvblNpemUsIGRlZmF1bHRDYW5jZWxCdXR0b25TaXplICog
Zm9udFNjYWxlKSwgbWF4Q2FuY2VsQnV0dG9uU2l6ZSkpOworICAgIHN0eWxlLT5zZXRXaWR0aChM
ZW5ndGgoY2FuY2VsQnV0dG9uU2l6ZSwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0SGVpZ2h0KExl
bmd0aChjYW5jZWxCdXR0b25TaXplLCBGaXhlZCkpOworfQorCisvLyBGdW5jdGlvbiB0YWtlbiBm
cm9tIFJlbmRlclRoZW1lQ2hyb21pdW0uY3BwCitJbnRSZWN0IFJlbmRlclRoZW1lUXQ6OmNvbnZl
cnRUb1BhaW50aW5nUmVjdChSZW5kZXJPYmplY3QqIGlucHV0UmVuZGVyZXIsIGNvbnN0IFJlbmRl
ck9iamVjdCogcGFydFJlbmRlcmVyLCBJbnRSZWN0IHBhcnRSZWN0LCBjb25zdCBJbnRSZWN0JiBs
b2NhbE9mZnNldCkgY29uc3QKK3sKKyAgICAvLyBDb21wdXRlIGFuIG9mZnNldCBiZXR3ZWVuIHRo
ZSBwYXJ0IHJlbmRlcmVyIGFuZCB0aGUgaW5wdXQgcmVuZGVyZXIuCisgICAgSW50U2l6ZSBvZmZz
ZXRGcm9tSW5wdXRSZW5kZXJlciA9IC1yb3VuZGVkSW50U2l6ZShwYXJ0UmVuZGVyZXItPm9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcihpbnB1dFJlbmRlcmVyKSk7CisgICAgLy8gTW92ZSB0aGUg
cmVjdCBpbnRvIHBhcnRSZW5kZXJlcidzIGNvb3Jkcy4KKyAgICBwYXJ0UmVjdC5tb3ZlKG9mZnNl
dEZyb21JbnB1dFJlbmRlcmVyKTsKKyAgICAvLyBBY2NvdW50IGZvciB0aGUgbG9jYWwgZHJhd2lu
ZyBvZmZzZXQuCisgICAgcGFydFJlY3QubW92ZShsb2NhbE9mZnNldC54KCksIGxvY2FsT2Zmc2V0
LnkoKSk7CisKKyAgICByZXR1cm4gcGFydFJlY3Q7Cit9CisKK1FQYWxldHRlIFJlbmRlclRoZW1l
UXQ6OmNvbG9yUGFsZXR0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFHdWlBcHBsaWNhdGlvbjo6
cGFsZXR0ZSgpOworfQorCitib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50U2VhcmNoRmllbGRDYW5j
ZWxCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHIp
Cit7CisgICAgLy8gTG9naWMgY29waWVkIGZyb20gUmVuZGVyVGhlbWVDaHJvbWl1bS5jcHAuCisK
KyAgICAvLyBHZXQgdGhlIHJlbmRlcmVyIG9mIDxpbnB1dD4gZWxlbWVudC4KKyAgICBOb2RlKiBp
bnB1dCA9IG8tPm5vZGUoKS0+c2hhZG93SG9zdCgpOworICAgIGlmICghaW5wdXQpCisgICAgICAg
IGlucHV0ID0gby0+bm9kZSgpOworICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlzQm94KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBSZW5kZXJCb3gqIGlucHV0UmVuZGVyQm94ID0g
dG9SZW5kZXJCb3goaW5wdXQtPnJlbmRlcmVyKCkpOworICAgIEludFJlY3QgaW5wdXRDb250ZW50
Qm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChpbnB1dFJlbmRlckJveC0+Y29udGVudEJveFJlY3Qo
KSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIHNjYWxlZCBidXR0b24gc3RheXMgc3F1YXJlIGFu
ZCB3aWxsIGZpdCBpbiBpdHMgcGFyZW50J3MgYm94LgorICAgIGludCBjYW5jZWxCdXR0b25TaXpl
ID0gcU1pbihpbnB1dENvbnRlbnRCb3gud2lkdGgoKSwgcU1pbihpbnB1dENvbnRlbnRCb3guaGVp
Z2h0KCksIHIuaGVpZ2h0KCkpKTsKKyAgICAvLyBDYWxjdWxhdGUgY2FuY2VsIGJ1dHRvbidzIGNv
b3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSBpbnB1dCBlbGVtZW50LgorICAgIC8vIENlbnRlciB0
aGUgYnV0dG9uIHZlcnRpY2FsbHkuIFJvdW5kIHVwIHRob3VnaCwgc28gaWYgaXQgaGFzIHRvIGJl
IG9uZSBwaXhlbCBvZmYtY2VudGVyLCBpdCB3aWxsCisgICAgLy8gYmUgb25lIHBpeGVsIGNsb3Nl
ciB0byB0aGUgYm90dG9tIG9mIHRoZSBmaWVsZC4gVGhpcyB0ZW5kcyB0byBsb29rIGJldHRlciB3
aXRoIHRoZSB0ZXh0LgorICAgIEludFJlY3QgY2FuY2VsQnV0dG9uUmVjdChvLT5vZmZzZXRGcm9t
QW5jZXN0b3JDb250YWluZXIoaW5wdXRSZW5kZXJCb3gpLndpZHRoKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlucHV0Q29udGVudEJveC55KCkgKyAoaW5wdXRDb250ZW50Qm94Lmhl
aWdodCgpIC0gY2FuY2VsQnV0dG9uU2l6ZSArIDEpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FuY2VsQnV0dG9uU2l6ZSwgY2FuY2VsQnV0dG9uU2l6ZSk7CisgICAgSW50UmVj
dCBwYWludGluZ1JlY3QgPSBjb252ZXJ0VG9QYWludGluZ1JlY3QoaW5wdXRSZW5kZXJCb3gsIG8s
IGNhbmNlbEJ1dHRvblJlY3QsIHIpOworICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsSW1hZ2UgPSBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbEJ1dHRvbiIpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsQnV0dG9uUHJlc3NlZCIpLmxlYWtSZWYoKTsKKyAg
ICBwaS5jb250ZXh0LT5kcmF3SW1hZ2UoaXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdl
IDogY2FuY2VsSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLT5zdHls
ZSgpLT5jb2xvclNwYWNlKCksIHBhaW50aW5nUmVjdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFJlbmRlclRoZW1lOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZSk7Cit9
CisKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVy
T2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiByKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxkRGVjb3Jh
dGlvbihvLCBwaSwgcik7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6YWRqdXN0U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIFJlbmRlclRoZW1lOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGUpOworfQorCitib29sIFJlbmRlclRoZW1lUXQ6
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgcGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiByKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b24obywgcGksIHIpOworfQorCisjaWZuZGVmIFFUX05PX1NQSU5CT1gKK3ZvaWQgUmVuZGVyVGhl
bWVRdDo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit7CisgICAgLy8gVXNlIHRoZSBzYW1lIHdpZHRo
IGFzIG91ciBuYXRpdmUgc2Nyb2xsYmFyCisgICAgaW50IHdpZHRoID0gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOworICAgIHN0eWxlLT5zZXRXaWR0aChMZW5n
dGgod2lkdGgsIEZpeGVkKSk7CisgICAgc3R5bGUtPnNldE1pbldpZHRoKExlbmd0aCh3aWR0aCwg
Rml4ZWQpKTsKK30KKyNlbmRpZgorCitib29sIFJlbmRlclRoZW1lUXQ6OnN1cHBvcnRzRm9jdXMo
Q29udHJvbFBhcnQgYXBwZWFyYW5jZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGFwcGVhcmFuY2Up
IHsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgorICAgIGNhc2UgQnV0dG9uUGFydDoKKyAgICBj
YXNlIFRleHRGaWVsZFBhcnQ6CisgICAgY2FzZSBUZXh0QXJlYVBhcnQ6CisgICAgY2FzZSBMaXN0
Ym94UGFydDoKKyAgICBjYXNlIE1lbnVsaXN0UGFydDoKKyAgICBjYXNlIFJhZGlvUGFydDoKKyAg
ICBjYXNlIENoZWNrYm94UGFydDoKKyAgICBjYXNlIFNsaWRlckhvcml6b250YWxQYXJ0OgorICAg
IGNhc2UgU2xpZGVyVmVydGljYWxQYXJ0OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZh
dWx0OiAvLyBObyBmb3IgYWxsIG90aGVycy4uLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitTdHJpbmcgUmVuZGVyVGhlbWVRdDo6ZXh0cmFN
ZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCit7CisgICAgU3RyaW5nIHJlc3VsdCA9IFN0cmluZyht
ZWRpYUNvbnRyb2xzUXRVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc1F0
VXNlckFnZW50U3R5bGVTaGVldCkpOworCisgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmNocm9t
ZSgpLnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSkKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcobWVkaWFDb250cm9sc1F0RnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hl
ZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzUXRGdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEhlbHBlciBjbGFzcyB0byB0cmFuc2Zv
cm0gdGhlIHBhaW50ZXIncyB3b3JsZCBtYXRyaXggdG8gdGhlIG9iamVjdCdzIGNvbnRlbnQgYXJl
YSwgc2NhbGVkIHRvIDAsMCwxMDAsMTAwCitjbGFzcyBXb3JsZE1hdHJpeFRyYW5zZm9ybWVyIHsK
K3B1YmxpYzoKKyAgICBXb3JsZE1hdHJpeFRyYW5zZm9ybWVyKFFQYWludGVyKiBwYWludGVyLCBS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgSW50UmVjdCYgcikgOiBtX3BhaW50ZXIo
cGFpbnRlcikKKyAgICB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlck9iamVj
dC0+c3R5bGUoKTsKKyAgICAgICAgbV9vcmlnaW5hbFRyYW5zZm9ybSA9IG1fcGFpbnRlci0+dHJh
bnNmb3JtKCk7CisgICAgICAgIG1fcGFpbnRlci0+dHJhbnNsYXRlKHIueCgpICsgc3R5bGUtPnBh
ZGRpbmdMZWZ0KCkudmFsdWUoKSwgci55KCkgKyBzdHlsZS0+cGFkZGluZ1RvcCgpLnZhbHVlKCkp
OworICAgICAgICBtX3BhaW50ZXItPnNjYWxlKChyLndpZHRoKCkgLSBzdHlsZS0+cGFkZGluZ0xl
ZnQoKS52YWx1ZSgpIC0gc3R5bGUtPnBhZGRpbmdSaWdodCgpLnZhbHVlKCkpIC8gMTAwLjAsCisg
ICAgICAgICAgICAgKHIuaGVpZ2h0KCkgLSBzdHlsZS0+cGFkZGluZ1RvcCgpLnZhbHVlKCkgLSBz
dHlsZS0+cGFkZGluZ0JvdHRvbSgpLnZhbHVlKCkpIC8gMTAwLjApOworICAgIH0KKworICAgIH5X
b3JsZE1hdHJpeFRyYW5zZm9ybWVyKCkgeyBtX3BhaW50ZXItPnNldFRyYW5zZm9ybShtX29yaWdp
bmFsVHJhbnNmb3JtKTsgfQorCitwcml2YXRlOgorICAgIFFQYWludGVyKiBtX3BhaW50ZXI7Cisg
ICAgUVRyYW5zZm9ybSBtX29yaWdpbmFsVHJhbnNmb3JtOworfTsKKworZG91YmxlIFJlbmRlclRo
ZW1lUXQ6Om1lZGlhQ29udHJvbHNCYXNlbGluZU9wYWNpdHkoKSBjb25zdAoreworICAgIHJldHVy
biAwLjQ7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYUJhY2tncm91bmQoUVBh
aW50ZXIqIHBhaW50ZXIsIGNvbnN0IEludFJlY3QmIHIpIGNvbnN0Cit7CisgICAgcGFpbnRlci0+
c2V0UGVuKFF0OjpOb1Blbik7CisgICAgc3RhdGljIFFDb2xvciB0cmFuc3BhcmVudEJsYWNrKDAs
IDAsIDAsIG1lZGlhQ29udHJvbHNCYXNlbGluZU9wYWNpdHkoKSAqIDI1NSk7CisgICAgcGFpbnRl
ci0+c2V0QnJ1c2godHJhbnNwYXJlbnRCbGFjayk7CisgICAgcGFpbnRlci0+ZHJhd1JvdW5kZWRS
ZWN0KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpLCA1LjAsIDUuMCk7Cit9CisK
K3N0YXRpYyBib29sIG1lZGlhRWxlbWVudENhblBsYXkoUmVuZGVyT2JqZWN0KiBvKQoreworICAg
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG8p
OworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbWVkaWFFbGVtZW50LT5yZWFkeVN0YXRlKCkgPiBIVE1MTWVkaWFFbGVtZW50OjpIQVZF
X01FVEFEQVRBCisgICAgICAgICAgIHx8IChtZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBI
VE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcKKyAgICAgICAgICAgICAgICYmIG8tPnN0eWxl
KCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVBsYXlCdXR0b25QYXJ0ICYmIG1lZGlhRWxlbWVudC0+
cHJlbG9hZCgpID09ICJub25lIik7Cit9CisKK1FDb2xvciBSZW5kZXJUaGVtZVF0OjpnZXRNZWRp
YUNvbnRyb2xGb3JlZ3JvdW5kQ29sb3IoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAoreworICAgIFFD
b2xvciBmZ0NvbG9yID0gcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsK
KyAgICBpZiAoIW8pCisgICAgICAgIHJldHVybiBmZ0NvbG9yOworCisgICAgaWYgKG8tPm5vZGUo
KSAmJiBvLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQoby0+bm9kZSgpKS0+
YWN0aXZlKCkpCisgICAgICAgIGZnQ29sb3IgPSBmZ0NvbG9yLmxpZ2h0ZXIoKTsKKworICAgIGlm
ICghbWVkaWFFbGVtZW50Q2FuUGxheShvKSkKKyAgICAgICAgZmdDb2xvciA9IGNvbG9yUGFsZXR0
ZSgpLmJydXNoKFFQYWxldHRlOjpEaXNhYmxlZCwgUVBhbGV0dGU6OlRleHQpLmNvbG9yKCk7CisK
KyAgICByZXR1cm4gZmdDb2xvcjsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlh
RnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG8pOworICAgIGlmICghbWVkaWFFbGVtZW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+
IHAgPSBnZXRTdHlsZVBhaW50ZXIocGFpbnRJbmZvKTsKKyAgICBpZiAocC5pc051bGwoKSB8fCAh
cC0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHAtPnBhaW50ZXItPnNl
dFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisKKyAgICBwYWludE1l
ZGlhQmFja2dyb3VuZChwLT5wYWludGVyLCByKTsKKworICAgIFdvcmxkTWF0cml4VHJhbnNmb3Jt
ZXIgdHJhbnNmb3JtZXIocC0+cGFpbnRlciwgbywgcik7CisgICAgY29uc3QgUVBvaW50RiBhcnJv
d1BvbHlnb25bOV0gPSB7IFFQb2ludEYoMjAsIDApLCBRUG9pbnRGKDEwMCwgMCksIFFQb2ludEYo
MTAwLCA4MCksCisgICAgICAgICAgICBRUG9pbnRGKDgwLCA4MCksIFFQb2ludEYoODAsIDMwKSwg
UVBvaW50RigxMCwgMTAwKSwgUVBvaW50RigwLCA5MCksIFFQb2ludEYoNzAsIDIwKSwgUVBvaW50
RigyMCwgMjApfTsKKworICAgIHAtPnBhaW50ZXItPnNldEJydXNoKGdldE1lZGlhQ29udHJvbEZv
cmVncm91bmRDb2xvcihvKSk7CisgICAgcC0+cGFpbnRlci0+ZHJhd1BvbHlnb24oYXJyb3dQb2x5
Z29uLCA5KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0Ojpw
YWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG8pOworICAgIGlmICghbWVkaWFFbGVtZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50
ZXI+IHAgPSBnZXRTdHlsZVBhaW50ZXIocGFpbnRJbmZvKTsKKyAgICBpZiAocC5pc051bGwoKSB8
fCAhcC0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHAtPnBhaW50ZXIt
PnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisKKyAgICBwYWlu
dE1lZGlhQmFja2dyb3VuZChwLT5wYWludGVyLCByKTsKKworICAgIFdvcmxkTWF0cml4VHJhbnNm
b3JtZXIgdHJhbnNmb3JtZXIocC0+cGFpbnRlciwgbywgcik7CisgICAgY29uc3QgUVBvaW50RiBz
cGVha2VyUG9seWdvbls2XSA9IHsgUVBvaW50RigyMCwgMzApLCBRUG9pbnRGKDUwLCAzMCksIFFQ
b2ludEYoODAsIDApLAorICAgICAgICAgICAgUVBvaW50Rig4MCwgMTAwKSwgUVBvaW50Rig1MCwg
NzApLCBRUG9pbnRGKDIwLCA3MCl9OworCisgICAgcC0+cGFpbnRlci0+c2V0QnJ1c2gobWVkaWFF
bGVtZW50LT5tdXRlZCgpID8gUXQ6OmRhcmtSZWQgOiBnZXRNZWRpYUNvbnRyb2xGb3JlZ3JvdW5k
Q29sb3IobykpOworICAgIHAtPnBhaW50ZXItPmRyYXdQb2x5Z29uKHNwZWFrZXJQb2x5Z29uLCA2
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1l
ZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG8pOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+IHAg
PSBnZXRTdHlsZVBhaW50ZXIocGFpbnRJbmZvKTsKKyAgICBpZiAocC5pc051bGwoKSB8fCAhcC0+
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHAtPnBhaW50ZXItPnNldFJl
bmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisKKyAgICBwYWludE1lZGlh
QmFja2dyb3VuZChwLT5wYWludGVyLCByKTsKKworICAgIFdvcmxkTWF0cml4VHJhbnNmb3JtZXIg
dHJhbnNmb3JtZXIocC0+cGFpbnRlciwgbywgcik7CisgICAgcC0+cGFpbnRlci0+c2V0QnJ1c2go
Z2V0TWVkaWFDb250cm9sRm9yZWdyb3VuZENvbG9yKG8pKTsKKyAgICBpZiAobWVkaWFFbGVtZW50
LT5jYW5QbGF5KCkpIHsKKyAgICAgICAgY29uc3QgUVBvaW50RiBwbGF5UG9seWdvblszXSA9IHsg
UVBvaW50RigwLCAwKSwgUVBvaW50RigxMDAsIDUwKSwgUVBvaW50RigwLCAxMDApfTsKKyAgICAg
ICAgcC0+cGFpbnRlci0+ZHJhd1BvbHlnb24ocGxheVBvbHlnb24sIDMpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHAtPnBhaW50ZXItPmRyYXdSZWN0KDAsIDAsIDMwLCAxMDApOworICAgICAgICBw
LT5wYWludGVyLT5kcmF3UmVjdCg3MCwgMCwgMzAsIDEwMCk7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIFJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikKK3sKKyAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHBhaW50IHRoaXMgYXQgdGhlIG1vbWVudC4KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYVNlZWtGb3J3YXJk
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKQor
eworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQgdGhpcyBhdCB0aGUgbW9tZW50LgorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhQ3VycmVu
dFRpbWUoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcikKK3sKKyAgICBRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+IHAgPSBnZXRT
dHlsZVBhaW50ZXIocGFpbnRJbmZvKTsKKyAgICBpZiAocC5pc051bGwoKSB8fCAhcC0+aXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHAtPnBhaW50ZXItPnNldFJlbmRlckhp
bnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisgICAgcGFpbnRNZWRpYUJhY2tncm91
bmQocC0+cGFpbnRlciwgcik7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBSZW5k
ZXJUaGVtZVF0Ojpmb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUoZmxvYXQgY3VycmVudFRp
bWUsIGZsb2F0IGR1cmF0aW9uKSBjb25zdAoreworICAgIHJldHVybiBmb3JtYXRNZWRpYUNvbnRy
b2xzVGltZShjdXJyZW50VGltZSkgKyAiIC8gIiArIGZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1
cmF0aW9uKTsKK30KKworU3RyaW5nIFJlbmRlclRoZW1lUXQ6OmZvcm1hdE1lZGlhQ29udHJvbHNS
ZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlvbikgY29uc3QKK3sK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRp
YVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCAqbywgY29uc3QgUGFpbnRJbmZvICZwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QgJnIpCit7CisgICAgUVNoYXJlZFBvaW50ZXI8U3R5bGVQYWlu
dGVyPiBwID0gZ2V0U3R5bGVQYWludGVyKHBhaW50SW5mbyk7CisgICAgaWYgKHAuaXNOdWxsKCkg
fHwgIXAtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBwLT5wYWludGVy
LT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIHRydWUpOworCisgICAgcGFp
bnRNZWRpYUJhY2tncm91bmQocC0+cGFpbnRlciwgcik7CisKKyAgICBpZiAoIW8tPmlzU2xpZGVy
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEludFJlY3QgYiA9IHBpeGVsU25hcHBl
ZEludFJlY3QodG9SZW5kZXJCb3gobyktPmNvbnRlbnRCb3hSZWN0KCkpOworCisgICAgLy8gUG9z
aXRpb24gdGhlIG91dGVyIHJlY3RhbmdsZQorICAgIGludCB0b3AgPSByLnkoKSArIGIueSgpOwor
ICAgIGludCBsZWZ0ID0gci54KCkgKyBiLngoKTsKKyAgICBpbnQgd2lkdGggPSBiLndpZHRoKCk7
CisgICAgaW50IGhlaWdodCA9IGIuaGVpZ2h0KCk7CisKKyAgICBRUGFsZXR0ZSBwYWwgPSBjb2xv
clBhbGV0dGUoKTsKKyAgICBjb25zdCBRQ29sb3IgaGlnaGxpZ2h0VGV4dCA9IHBhbC5icnVzaChR
UGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0KS5jb2xvcigpOworICAg
IGNvbnN0IFFDb2xvciBzY2FsZUNvbG9yKGhpZ2hsaWdodFRleHQucmVkKCksIGhpZ2hsaWdodFRl
eHQuZ3JlZW4oKSwgaGlnaGxpZ2h0VGV4dC5ibHVlKCksIG1lZGlhQ29udHJvbHNCYXNlbGluZU9w
YWNpdHkoKSAqIDI1NSk7CisKKyAgICAvLyBEcmF3IHRoZSBvdXRlciByZWN0YW5nbGUKKyAgICBw
LT5wYWludGVyLT5zZXRCcnVzaChzY2FsZUNvbG9yKTsKKyAgICBwLT5wYWludGVyLT5kcmF3UmVj
dChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKCFvLT5ub2RlKCkgfHwgIWlz
SFRNTElucHV0RWxlbWVudChvLT5ub2RlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBIVE1MSW5wdXRFbGVtZW50KiBzbGlkZXIgPSB0b0hUTUxJbnB1dEVsZW1lbnQoby0+bm9kZSgp
KTsKKworICAgIC8vIFBvc2l0aW9uIHRoZSBpbm5lciByZWN0YW5nbGUKKyAgICBoZWlnaHQgPSBo
ZWlnaHQgKiBzbGlkZXItPnZhbHVlQXNOdW1iZXIoKTsKKyAgICB0b3AgKz0gYi5oZWlnaHQoKSAt
IGhlaWdodDsKKworICAgIC8vIERyYXcgdGhlIGlubmVyIHJlY3RhbmdsZQorICAgIHAtPnBhaW50
ZXItPnNldFBlbihRdDo6Tm9QZW4pOworICAgIHAtPnBhaW50ZXItPnNldEJydXNoKGdldE1lZGlh
Q29udHJvbEZvcmVncm91bmRDb2xvcihvKSk7CisgICAgcC0+cGFpbnRlci0+ZHJhd1JlY3QobGVm
dCwgdG9wLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBS
ZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0ICpv
LCBjb25zdCBQYWludEluZm8gJnBhaW50SW5mbywgY29uc3QgSW50UmVjdCAmcikKK3sKKyAgICBR
U2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+IHAgPSBnZXRTdHlsZVBhaW50ZXIocGFpbnRJbmZv
KTsKKyAgICBpZiAocC5pc051bGwoKSB8fCAhcC0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIE5vdGhpbmcgdG8gZHJhdyBoZXJlLCB0aGlzIGlzIGFsbCBkb25lIGlu
IHRoZSB0cmFjaworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0Ojpw
YWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudChvKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUVNoYXJlZFBvaW50ZXI8U3R5bGVQYWlu
dGVyPiBwID0gZ2V0U3R5bGVQYWludGVyKHBhaW50SW5mbyk7CisgICAgaWYgKHAuaXNOdWxsKCkg
fHwgIXAtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBwLT5wYWludGVy
LT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIHRydWUpOworCisgICAgcGFp
bnRNZWRpYUJhY2tncm91bmQocC0+cGFpbnRlciwgcik7CisKKyAgICBpZiAoTWVkaWFQbGF5ZXIq
IHBsYXllciA9IG1lZGlhRWxlbWVudC0+cGxheWVyKCkpIHsKKyAgICAgICAgLy8gR2V0IHRoZSBi
dWZmZXJlZCBwYXJ0cyBvZiB0aGUgbWVkaWEKKyAgICAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1
ZmZlcmVkID0gcGxheWVyLT5idWZmZXJlZCgpOworICAgICAgICBpZiAoYnVmZmVyZWQtPmxlbmd0
aCgpID4gMCAmJiBwbGF5ZXItPmR1cmF0aW9uKCkgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSkgeworICAgICAgICAgICAgLy8gU2V0IHRoZSB0cmFuc2Zvcm0gYW5kIGJy
dXNoCisgICAgICAgICAgICBXb3JsZE1hdHJpeFRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyKHAtPnBh
aW50ZXIsIG8sIHIpOworICAgICAgICAgICAgcC0+cGFpbnRlci0+c2V0QnJ1c2goZ2V0TWVkaWFD
b250cm9sRm9yZWdyb3VuZENvbG9yKCkpOworCisgICAgICAgICAgICAvLyBQYWludCBlYWNoIGJ1
ZmZlcmVkIHNlY3Rpb24KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnVmZmVyZWQt
Pmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBzdGFydFggPSAoYnVmZmVy
ZWQtPnN0YXJ0KGksIElHTk9SRV9FWENFUFRJT04pIC8gcGxheWVyLT5kdXJhdGlvbigpKSAqIDEw
MDsKKyAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCA9ICgoYnVmZmVyZWQtPmVuZChpLCBJR05P
UkVfRVhDRVBUSU9OKSAvIHBsYXllci0+ZHVyYXRpb24oKSkgKiAxMDApIC0gc3RhcnRYOworICAg
ICAgICAgICAgICAgIHAtPnBhaW50ZXItPmRyYXdSZWN0KHN0YXJ0WCwgMzcsIHdpZHRoLCAyNik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgUmVuZGVyVGhlbWVRdDo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCit7Cisg
ICAgQVNTRVJUKG8tPm5vZGUoKSk7CisgICAgTm9kZSogaG9zdE5vZGUgPSBvLT5ub2RlKCktPnNo
YWRvd0hvc3QoKTsKKyAgICBpZiAoIWhvc3ROb2RlKQorICAgICAgICBob3N0Tm9kZSA9IG8tPm5v
ZGUoKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlh
RWxlbWVudChob3N0Tm9kZSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFFTaGFyZWRQb2ludGVyPFN0eWxlUGFpbnRlcj4gcCA9IGdldFN0eWxl
UGFpbnRlcihwYWludEluZm8pOworICAgIGlmIChwLmlzTnVsbCgpIHx8ICFwLT5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcC0+cGFpbnRlci0+c2V0UmVuZGVySGludChR
UGFpbnRlcjo6QW50aWFsaWFzaW5nLCB0cnVlKTsKKworICAgIHAtPnBhaW50ZXItPnNldFBlbihR
dDo6Tm9QZW4pOworICAgIHAtPnBhaW50ZXItPnNldEJydXNoKGdldE1lZGlhQ29udHJvbEZvcmVn
cm91bmRDb2xvcihob3N0Tm9kZS0+cmVuZGVyZXIoKSkpOworICAgIHAtPnBhaW50ZXItPmRyYXdS
ZWN0KHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKKworICAgIHJldHVybiBm
YWxzZTsKK30KKyNlbmRpZgorCit2b2lkIFJlbmRlclRoZW1lUXQ6OmFkanVzdFNsaWRlclRodW1i
U2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIC8vIHRpbWVs
aW5lVGh1bWJIZWlnaHQgc2hvdWxkIG1hdGNoIHRoZSBoZWlnaHQgcHJvcGVydHkgb2YgLXdlYmtp
dC1tZWRpYS1jb250cm9scy10aW1lbGluZSBpbiBtZWRpYUNvbnRyb2xzUXQuY3NzLgorICAgIGNv
bnN0IGludCB0aW1lbGluZVRodW1iSGVpZ2h0ID0gMTI7CisgICAgY29uc3QgaW50IHRpbWVsaW5l
VGh1bWJXaWR0aCA9IHRpbWVsaW5lVGh1bWJIZWlnaHQgLyAzOworICAgIC8vIHZvbHVtZVRodW1i
V2lkdGggc2hvdWxkIG1hdGNoIHRoZSB3aWR0aCBwcm9wZXJ0eSBvZiAtd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXZvbHVtZS1zbGlkZXIgaW4gbWVkaWFDb250cm9sc1F0LmNzcy4KKyAgICBjb25zdCBp
bnQgdm9sdW1lVGh1bWJXaWR0aCA9IDEyOworICAgIGNvbnN0IGludCB2b2x1bWVUaHVtYkhlaWdo
dCA9IHZvbHVtZVRodW1iV2lkdGggLyAzOworICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBzdHlsZS0+
YXBwZWFyYW5jZSgpOworCisgICAgaWYgKHBhcnQgPT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQpIHsK
KyAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aCh0aW1lbGluZVRodW1iV2lkdGgsIEZpeGVk
KSk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHRpbWVsaW5lVGh1bWJIZWlnaHQs
IEZpeGVkKSk7CisgICAgfSBlbHNlIGlmIChwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQ
YXJ0KSB7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHZvbHVtZVRodW1iSGVpZ2h0
LCBGaXhlZCkpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKHZvbHVtZVRodW1iV2lk
dGgsIEZpeGVkKSk7CisgICAgfQorfQorCitkb3VibGUgUmVuZGVyVGhlbWVRdDo6Y2FyZXRCbGlu
a0ludGVydmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UUd1aUFwcGxpY2F0
aW9uKj4ocUFwcCktPnN0eWxlSGludHMoKS0+Y3Vyc29yRmxhc2hUaW1lKCkgLyAxMDAwLjAgLyAy
LjA7Cit9CisKK1N0cmluZyBSZW5kZXJUaGVtZVF0OjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25z
dCBGaWxlTGlzdCogZmlsZUxpc3QsIGNvbnN0IEZvbnQmIGZvbnQsIGludCB3aWR0aCwgYm9vbCBt
dWx0aXBsZUZpbGVzQWxsb3dlZCkgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0obXVsdGlwbGVG
aWxlc0FsbG93ZWQpOworICAgIGlmICh3aWR0aCA8PSAwKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICBTdHJpbmcgc3RyaW5nOworICAgIGlmIChmaWxlTGlzdC0+aXNFbXB0eSgpKQor
ICAgICAgICBzdHJpbmcgPSBmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpOworICAgIGVs
c2UgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIFN0cmluZyBmbmFtZSA9
IGZpbGVMaXN0LT5pdGVtKDApLT5wYXRoKCk7CisgICAgICAgIFFGb250TWV0cmljcyBmbShmb250
LnN5bnRoZXRpY0ZvbnQoKSk7CisgICAgICAgIHN0cmluZyA9IGZtLmVsaWRlZFRleHQoZm5hbWUs
IFF0OjpFbGlkZUxlZnQsIHdpZHRoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgbiA9IGZp
bGVMaXN0LT5sZW5ndGgoKTsKKyAgICAgICAgc3RyaW5nID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICIlbiBmaWxlKHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJudW1iZXIgb2YgY2hvc2VuIGZpbGUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbik7CisgICAgfQorCisgICAgcmV0
dXJuIHN0cmluZzsKK30KKworU3R5bGVQYWludGVyOjpTdHlsZVBhaW50ZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorICAgIDogcGFpbnRlcihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkK
K3sKKyAgICBBU1NFUlQoY29udGV4dCk7CisKKyAgICBpZiAocGFpbnRlcikgeworICAgICAgICAv
LyB0aGUgc3R5bGVzIG9mdGVuIGFzc3VtZSBiZWluZyBjYWxsZWQgd2l0aCBhIHByaXN0aW5lIHBh
aW50ZXIgd2hlcmUgbm8gYnJ1c2ggaXMgc2V0LAorICAgICAgICAvLyBzbyByZXNldCBpdCBtYW51
YWxseQorICAgICAgICBtX3ByZXZpb3VzQnJ1c2ggPSBwYWludGVyLT5icnVzaCgpOworICAgICAg
ICBwYWludGVyLT5zZXRCcnVzaChRdDo6Tm9CcnVzaCk7CisKKyAgICAgICAgLy8gcGFpbnRpbmcg
dGhlIHdpZGdldCB3aXRoIGFudGktYWxpYXNpbmcgd2lsbCBtYWtlIGl0IGJsdXJyeQorICAgICAg
ICAvLyBkaXNhYmxlIGl0IGhlcmUgYW5kIHJlc3RvcmUgaXQgbGF0ZXIKKyAgICAgICAgbV9wcmV2
aW91c0FudGlhbGlhc2luZyA9IHBhaW50ZXItPnRlc3RSZW5kZXJIaW50KFFQYWludGVyOjpBbnRp
YWxpYXNpbmcpOworICAgICAgICBwYWludGVyLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRp
YWxpYXNpbmcsIGZhbHNlKTsKKyAgICB9Cit9CisKK1N0eWxlUGFpbnRlcjo6flN0eWxlUGFpbnRl
cigpCit7CisgICAgaWYgKHBhaW50ZXIpIHsKKyAgICAgICAgcGFpbnRlci0+c2V0QnJ1c2gobV9w
cmV2aW91c0JydXNoKTsKKyAgICAgICAgcGFpbnRlci0+c2V0UmVuZGVySGludHMoUVBhaW50ZXI6
OkFudGlhbGlhc2luZywgbV9wcmV2aW91c0FudGlhbGlhc2luZyk7CisgICAgfQorfQorCit9CisK
Ky8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJU
aGVtZVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg3MmI5NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
aApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0aGVt
ZSBpbXBsZW1lbnRhdGlvbiBmb3IgZm9ybSBjb250cm9scyBpbiBXZWJDb3JlLgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworI2lmbmRlZiBSZW5kZXJUaGVtZVF0X2gKKyNkZWZpbmUgUmVuZGVyVGhlbWVRdF9o
CisKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorCisjaW5jbHVkZSA8UUJydXNoPgorI2luY2x1
ZGUgPFFQYWxldHRlPgorI2luY2x1ZGUgPFFTaGFyZWRQb2ludGVyPgorI2luY2x1ZGUgPFFTdHJp
bmc+CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVBhaW50ZXI7CitRVF9FTkRfTkFNRVNQ
QUNFCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5U
KQorY2xhc3MgUmVuZGVyUHJvZ3Jlc3M7CisjZW5kaWYKK2NsYXNzIFJlbmRlclN0eWxlOworY2xh
c3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFN0eWxlUGFpbnRlcjsKK2NsYXNzIFNjcm9sbGJh
clRoZW1lOworCit0eXBlZGVmIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+ICgqUXRUaGVtZUZhY3Rv
cnlGdW5jdGlvbikoUGFnZSogcGFnZSk7CisKK2NsYXNzIFJlbmRlclRoZW1lUXQgOiBwdWJsaWMg
UmVuZGVyVGhlbWUgeworCitwdWJsaWM6CisgICAgUmVuZGVyVGhlbWVRdChQYWdlKik7CisKKyAg
ICBzdGF0aWMgdm9pZCBzZXRDdXN0b21UaGVtZShRdFRoZW1lRmFjdG9yeUZ1bmN0aW9uLCBTY3Jv
bGxiYXJUaGVtZSogY3VzdG9tU2Nyb2xsYmFyVGhlbWUpOworICAgIHN0YXRpYyBTY3JvbGxiYXJU
aGVtZSogY3VzdG9tU2Nyb2xsYmFyVGhlbWUoKTsKKworICAgIFN0cmluZyBleHRyYURlZmF1bHRT
dHlsZVNoZWV0KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5k
ZXJTdHlsZSopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhjb25z
dCBSZW5kZXJTdHlsZSopIGNvbnN0OworCisgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlv
bihjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKworICAgIC8vIEEgbWV0aG9kIGFza2luZyBp
ZiB0aGUgY29udHJvbCBjaGFuZ2VzIGl0cyB0aW50IHdoZW4gdGhlIHdpbmRvdyBoYXMgZm9jdXMg
b3Igbm90LgorICAgIHZpcnR1YWwgYm9vbCBjb250cm9sU3VwcG9ydHNUaW50cyhjb25zdCBSZW5k
ZXJPYmplY3QqKSBjb25zdDsKKworICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlmIGFu
eSBjb250cm9sIHRpbnRpbmcgaXMgc3VwcG9ydGVkIGF0IGFsbC4KKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RS
ZXBhaW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QqLCBJbnRSZWN0Jik7CisKKyAgICAvLyBUaGUg
cGxhdGZvcm0gc2VsZWN0aW9uIGNvbG9yLgorICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7
CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENv
bG9yKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3Io
KSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnRE
ZXNjcmlwdGlvbiYpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFs
dWVJRCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RTaXplKFJlbmRl
clN0eWxlKikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXpl
KFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworCisjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCisgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNv
bnN0IE9WRVJSSURFOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50
ZXJ2YWwoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBCb3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3Qg
Q29sb3ImKSBjb25zdDsKKworI2lmIEVOQUJMRShWSURFTykKKyAgICB2aXJ0dWFsIFN0cmluZyBl
eHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJl
bmRlclN0eWxlKikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpbyhSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lk
IHNldEJ1dHRvblNpemUoUmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50
KikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGFk
anVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCop
IGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lk
IGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwg
RWxlbWVudCopIGNvbnN0OworCisjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIC8vIFJldHVybnMgdGhlIHJlcGVhdCBpbnRlcnZh
bCBvZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgorICAgIHZpcnR1YWwgZG91
YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3Mq
KSBjb25zdDsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworCisgICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRl
clN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNo
RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoU3R5
bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKKworI2lmbmRlZiBRVF9OT19TUElOQk9YCisgICAgdmlydHVhbCB2b2lkIGFkanVzdElu
bmVyU3BpbkJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQq
KSBjb25zdDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorICAgIHZpcnR1YWwgYm9vbCBw
YWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vl
a0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24oUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1
bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lZGlhQ3VycmVudFRpbWUoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlh
Vm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIo
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50
VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZvcm1hdE1l
ZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlv
bikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0Zv
cihDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBwYWludE1l
ZGlhQmFja2dyb3VuZChRUGFpbnRlciosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBkb3Vi
bGUgbWVkaWFDb250cm9sc0Jhc2VsaW5lT3BhY2l0eSgpIGNvbnN0OworICAgIFFDb2xvciBnZXRN
ZWRpYUNvbnRyb2xGb3JlZ3JvdW5kQ29sb3IoUmVuZGVyT2JqZWN0KiA9IDApIGNvbnN0OworI2Vu
ZGlmCisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVTaXplQmFzZWRPblN0eWxlKFJlbmRlclN0eWxl
KikgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgo
Y29uc3QgRmlsZUxpc3QqLCBjb25zdCBGb250JiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmls
ZXNBbGxvd2VkKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgUVJlY3QgaW5mbGF0ZUJ1
dHRvblJlY3QoY29uc3QgUVJlY3QmIG9yaWdpbmFsUmVjdCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UG9wdXBQYWRkaW5nKFJlbmRlclN0eWxlKikgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+IGdldFN0eWxlUGFpbnRlcihjb25zdCBQ
YWludEluZm8mKSA9IDA7CisKKyAgICBib29sIHN1cHBvcnRzRm9jdXMoQ29udHJvbFBhcnQpIGNv
bnN0OworCisgICAgSW50UmVjdCBjb252ZXJ0VG9QYWludGluZ1JlY3QoUmVuZGVyT2JqZWN0KiBp
bnB1dFJlbmRlcmVyLCBjb25zdCBSZW5kZXJPYmplY3QqIHBhcnRSZW5kZXJlciwgSW50UmVjdCBw
YXJ0UmVjdCwgY29uc3QgSW50UmVjdCYgbG9jYWxPZmZzZXQpIGNvbnN0OworCisgICAgdmlydHVh
bCBRUGFsZXR0ZSBjb2xvclBhbGV0dGUoKSBjb25zdDsKKworICAgIFBhZ2UqIG1fcGFnZTsKKwor
ICAgIFFTdHJpbmcgbV9idXR0b25Gb250RmFtaWx5OworCit9OworCitjbGFzcyBTdHlsZVBhaW50
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgflN0eWxlUGFpbnRlcigpOworCisgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gcGFpbnRlcjsgfQorCisgICAgUVBhaW50ZXIqIHBhaW50
ZXI7CisKK3Byb3RlY3RlZDoKKyAgICBTdHlsZVBhaW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7CisK
K3ByaXZhdGU6CisgICAgUUJydXNoIG1fcHJldmlvdXNCcnVzaDsKKyAgICBib29sIG1fcHJldmlv
dXNBbnRpYWxpYXNpbmc7CisKK307CisKK30KKworI2VuZGlmIC8vIFJlbmRlclRoZW1lUXRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2M4NjhmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5j
cHAKQEAgLTAsMCArMSw5MjEgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IHByb2plY3QuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lUXRNb2JpbGUuaCIKKworI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRm9udC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQYWludEluZm8uaCIKKyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5o
IgorI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQor
I2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCisjZW5kaWYKKyNpbmNsdWRlICJTdHlsZVJlc29s
dmVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCisjaW5jbHVkZSA8UUNvbG9y
PgorI2luY2x1ZGUgPFFGaWxlPgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFFQaXht
YXBDYWNoZT4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOworCisvLyBDb25zdGFudHMgdXNlZCBieSB0aGUgbW9iaWxlIHRoZW1lCitzdGF0aWMgY29u
c3QgaW50IGFycm93Qm94V2lkdGggPSAyNjsKK3N0YXRpYyBjb25zdCBpbnQgZnJhbWVXaWR0aCA9
IDI7CitzdGF0aWMgY29uc3QgaW50IGNoZWNrQm94V2lkdGggPSAyMTsKK3N0YXRpYyBjb25zdCBp
bnQgcmFkaW9XaWR0aCA9IDIxOworc3RhdGljIGNvbnN0IGludCBzbGlkZXJTaXplID0gMjA7Citz
dGF0aWMgY29uc3QgaW50IGJ1dHRvbkhlaWdodFJhdGlvID0gMS41OworCitzdGF0aWMgY29uc3Qg
ZmxvYXQgbXVsdGlwbGVDb21ib0RvdHNPZmZzZXRGYWN0b3IgPSAxLjg7CitzdGF0aWMgY29uc3Qg
ZmxvYXQgYnV0dG9uUGFkZGluZ0xlZnQgPSAxODsKK3N0YXRpYyBjb25zdCBmbG9hdCBidXR0b25Q
YWRkaW5nUmlnaHQgPSAxODsKK3N0YXRpYyBjb25zdCBmbG9hdCBidXR0b25QYWRkaW5nVG9wID0g
MjsKK3N0YXRpYyBjb25zdCBmbG9hdCBidXR0b25QYWRkaW5nQm90dG9tID0gMzsKK3N0YXRpYyBj
b25zdCBmbG9hdCBtZW51TGlzdFBhZGRpbmcgPSA5Oworc3RhdGljIGNvbnN0IGZsb2F0IHRleHRG
aWVsZFBhZGRpbmcgPSAxMDsKK3N0YXRpYyBjb25zdCBmbG9hdCByYWRpdXNGYWN0b3IgPSAwLjM2
Oworc3RhdGljIGNvbnN0IGZsb2F0IHByb2dyZXNzQmFyQ2h1bmtQZXJjZW50YWdlID0gMC4yOwor
I2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorc3RhdGljIGNvbnN0IGludCBwcm9ncmVzc0Fu
aW1hdGlvbkdyYW51bGFyaXR5ID0gMjsKKyNlbmRpZgorc3RhdGljIGNvbnN0IGZsb2F0IHNsaWRl
ckdyb292ZUJvcmRlclJhdGlvID0gMC4yOworc3RhdGljIGNvbnN0IFFDb2xvciBkYXJrQ29sb3Io
NDAsIDQwLCA0MCk7CitzdGF0aWMgY29uc3QgUUNvbG9yIGhpZ2hsaWdodENvbG9yKDE2LCAxMjgs
IDIyMSk7CitzdGF0aWMgY29uc3QgUUNvbG9yIGJ1dHRvbkdyYWRpZW50Qm90dG9tKDI0NSwgMjQ1
LCAyNDUpOworc3RhdGljIGNvbnN0IFFDb2xvciBzaGFkb3dDb2xvcig4MCwgODAsIDgwLCAxNjAp
OworCitzdGF0aWMgUUhhc2g8S2V5SWRlbnRpZmllciwgQ2FjaGVLZXk+IGNhY2hlS2V5czsKKwor
c3RhdGljIHFyZWFsIHBhaW50ZXJTY2FsZShRUGFpbnRlciogcGFpbnRlcikKK3sKKyAgICBpZiAo
IXBhaW50ZXIpCisgICAgICAgIHJldHVybiAxOworCisgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJh
bnNmb3JtID0gcGFpbnRlci0+dHJhbnNmb3JtKCk7CisgICAgcXJlYWwgc2NhbGUgPSAxOworCisg
ICAgaWYgKHRyYW5zZm9ybS50eXBlKCkgPT0gUVRyYW5zZm9ybTo6VHhTY2FsZSkKKyAgICAgICAg
c2NhbGUgPSBxQWJzKHRyYW5zZm9ybS5tMTEoKSk7CisgICAgZWxzZSBpZiAodHJhbnNmb3JtLnR5
cGUoKSA+PSBRVHJhbnNmb3JtOjpUeFJvdGF0ZSkgeworICAgICAgICBjb25zdCBRTGluZUYgbDEo
MCwgMCwgMSwgMCk7CisgICAgICAgIGNvbnN0IFFMaW5lRiBsMiA9IHRyYW5zZm9ybS5tYXAobDEp
OworICAgICAgICBzY2FsZSA9IHFBYnMobDIubGVuZ3RoKCkgLyBsMS5sZW5ndGgoKSk7CisgICAg
fQorICAgIHJldHVybiBzY2FsZTsKK30KKwordWludCBxSGFzaChjb25zdCBLZXlJZGVudGlmaWVy
JiBpZCkKK3sKKyAgICBjb25zdCBxdWludDMyIHZhbHVlID0gaWQudHJhaXQxICsgKGlkLnRyYWl0
MiA8PCAxKSArICh1aW50KGlkLnR5cGUpIDw8IDIpICsgKGlkLmhlaWdodCA8PCA1KSArIChpZC53
aWR0aCA8PCAxNCkgKyAoaWQudHJhaXQzIDw8IDI1KTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFy
KiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oJnZhbHVlKTsKKyAg
ICB1aW50IGhhc2ggPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAg
ICBoYXNoIF49IChoYXNoIDw8IDUpICsgKGhhc2ggPj4gMikgKyBwW2ldOworICAgIHJldHVybiBo
YXNoOworfQorCisvKgorICogVGhlIG9jdGFudHMnIGluZGljZXMgYXJlIGlkZW50aWZpZWQgYmVs
b3csIGZvciBlYWNoIHBvaW50ICh4LHkpCisgKiBpbiB0aGUgZmlyc3Qgb2N0YW50LCB3ZSBjYW4g
cG9wdWxhdGUgdGhlIDcgb3RoZXJzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcKKyAqIHBvaW50Lgor
ICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggfCAgIHhw
b3MgICB8ICAgeXBvcworICogICAgICAgICAgICAgICAgeGQgICAgICAgICAgICAgICAgICAgIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogICAgICA0ICAgICAgfDwtLS0+fCAzICAgICAg
ICAgICAgICAgICAgICAwICB8ICB4ZCArIHggIHwgICAgeQorICogICAgIF9fX19fX19fX19fX19f
X19fXyAgICAgICAgICAgICAgICAgICAxICB8ICB4ZCArIHkgIHwgICAgeAorICogICAgLyAgICAg
ICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAyICB8ICB4ZCArIHkgIHwgICAteAorICog
NSB8ICAgICAgICAgLihjKSAgICAgICB8ICAyICAgICAgICAgICAgICAzICB8ICB4ZCArIHggIHwg
ICAteQorICogNiB8ICAgICAgICAgICAgICAgICAgICB8ICAxICAgICAgICAgICAgICA0ICB8IC14
ZCAtIHggIHwgICAteQorICogICAgXF9fX19fX19fX19fX19fX19fXy8gICAgICAgICAgICAgICAg
ICA1ICB8IC14ZCAtIHkgIHwgICAteAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2ICB8IC14ZCAtIHkgIHwgICAgeAorICogICAgICA3ICAgICAgICAgICAgICAw
ICAgICAgICAgICAgICAgICAgICA3ICB8IC14ZCAtIHggIHwgICAgeQorICoKKyAqKi8KKworc3Rh
dGljIHZvaWQgYWRkUG9pbnRUb09jdGFudHMoUVZlY3RvcjxRUGFpbnRlclBhdGg+JiBvY3RhbnRz
LCBjb25zdCBRUG9pbnRGJiBjZW50ZXIsIHFyZWFsIHgsIHFyZWFsIHkgLCBpbnQgeERlbHRhID0g
MCkKK3sKKyAgICBBU1NFUlQob2N0YW50cy5jb3VudCgpID09IDgpOworCisgICAgZm9yIChzaG9y
dCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBRUGFpbnRlclBhdGgmIG9jdGFudCA9IG9j
dGFudHNbaV07CisgICAgICAgIFFQb2ludEYgcG9zKGNlbnRlcik7CisgICAgICAgIC8vIFRoZSBH
cmF5IGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGUgb2N0YW50J3MgaW5kZXggaGVscHMgZG9pbmcg
dGhlIG1hdGggaW4gYSBtb3JlIGdlbmVyaWMgd2F5LgorICAgICAgICBjb25zdCBzaG9ydCBncmF5
ID0gKGkgPj4gMSkgXiBpOworICAgICAgICBjb25zdCBxcmVhbCB4T2Zmc2V0ID0geERlbHRhICsg
KChncmF5ICYgMSkgPyB5IDogeCk7CisgICAgICAgIHBvcy5yeSgpICs9ICgoZ3JheSAmIDIpPyAt
MSA6IDEpICogKChncmF5ICYgMSkgPyB4IDogeSk7CisgICAgICAgIHBvcy5yeCgpICs9IChpIDwg
NCkgPyB4T2Zmc2V0IDogLXhPZmZzZXQ7CisKKyAgICAgICAgaWYgKG9jdGFudC5lbGVtZW50Q291
bnQoKSkKKyAgICAgICAgICAgIG9jdGFudC5saW5lVG8ocG9zKTsKKyAgICAgICAgZWxzZSAvLyBU
aGUgcGF0aCBpcyBlbXB0eS4gSW5pdGlhbGl6ZSB0aGUgc3RhcnQgcG9pbnQuCisgICAgICAgICAg
ICBvY3RhbnQubW92ZVRvKHBvcyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBkcmF3Q29udHJv
bEJhY2tncm91bmQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFQZW4mIHBlbiwgY29uc3QgUVJl
Y3QmIHJlY3QsIGNvbnN0IFFCcnVzaCYgYnJ1c2gpCit7CisgICAgUVBlbiBvbGRQZW4gPSBwYWlu
dGVyLT5wZW4oKTsKKyAgICBRQnJ1c2ggb2xkQnJ1c2ggPSBwYWludGVyLT5icnVzaCgpOworICAg
IHBhaW50ZXItPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7Cisg
ICAgcGFpbnRlci0+c2V0UGVuKHBlbik7CisgICAgcGFpbnRlci0+c2V0QnJ1c2goYnJ1c2gpOwor
CisgICAgc3RhdGljIGNvbnN0IHFyZWFsIGxpbmUgPSAxLjU7CisgICAgY29uc3QgUVJlY3RGIHBh
ZGRlZFJlY3QgPSByZWN0LmFkanVzdGVkKGxpbmUsIGxpbmUsIC1saW5lLCAtbGluZSk7CisKKyAg
ICBzdGF0aWMgY29uc3QgaW50IG4gPSAzOworICAgIGNvbnN0IHFyZWFsIGludlBvdyA9IDEgLyBk
b3VibGUobik7CisgICAgQVNTRVJUKHBhZGRlZFJlY3Qud2lkdGgoKSA+PSBwYWRkZWRSZWN0Lmhl
aWdodCgpKTsKKyAgICBjb25zdCBpbnQgcmFkaXVzID0gcGFkZGVkUmVjdC5oZWlnaHQoKSAvIDI7
CisgICAgY29uc3QgaW50IHhEZWx0YSA9IHBhZGRlZFJlY3Qud2lkdGgoKSAvIDIgLSByYWRpdXM7
CisgICAgY29uc3QgUVBvaW50RiBjZW50ZXIgPSBwYWRkZWRSZWN0LmNlbnRlcigpOworICAgIHFy
ZWFsIHggPSAwOworICAgIHFyZWFsIHk7CisgICAgUVZlY3RvcjxRUGFpbnRlclBhdGg+IG9jdGFu
dHMoOCk7CisgICAgLy8gU3RheSB3aXRoaW4gcmVhc29uYWJsZSBkaXN0YW5jZSBmcm9tIGVkZ2Ug
dmFsdWVzLCB3aGljaCBjYW4gY2F1c2UgYXJ0aWZhY3RzIGF0IGNlcnRhaW4gem9vbSBsZXZlbHMu
CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGVwc2lsb24gPSAwLjAyOworICAgIGZvciAoeSA9IHJh
ZGl1cyAtIGVwc2lsb247IHkgLSBlcHNpbG9uID4geDsgeSAtPSAwLjUpIHsKKyAgICAgICAgeCA9
IHJhZGl1cyAqIHBvdygxIC0gcG93KHFBYnMoeSkgLyByYWRpdXMgLCBuKSwgaW52UG93KTsKKyAg
ICAgICAgYWRkUG9pbnRUb09jdGFudHMob2N0YW50cywgY2VudGVyLCB4LCB5LCB4RGVsdGEpOwor
ICAgIH0KKworICAgIFFQYWludGVyUGF0aCBwYXRoID0gb2N0YW50cy5maXJzdCgpOworICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgODsgKytpKSB7CisgICAgICAgIC8vIER1ZSB0byB0aGUgb3JpZW50
YXRpb24gb2YgdGhlIGFyY3MsIHdlIG5lZWQgdG8gcmV2ZXJzZSB0aGUgcGF0aHMgd2l0aCBvZGQg
aW5kaWNlcy4KKyAgICAgICAgUVBhaW50ZXJQYXRoIHN1YlBhdGggPSAoaSAlIDIpID8gIG9jdGFu
dHMuYXQoaSkudG9SZXZlcnNlZCgpIDogb2N0YW50cy5hdChpKTsKKyAgICAgICAgcGF0aC5jb25u
ZWN0UGF0aChzdWJQYXRoKTsKKyAgICB9CisgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKKworICAg
IHBhaW50ZXItPmRyYXdQYXRoKHBhdGgpOworICAgIHBhaW50ZXItPnNldFBlbihvbGRQZW4pOwor
ICAgIHBhaW50ZXItPnNldEJydXNoKG9sZEJydXNoKTsKK30KKworc3RhdGljIGlubGluZSBRUmVj
dCBzaHJpbmtSZWN0VG9TcXVhcmUoY29uc3QgUVJlY3QmIHJlY3QpCit7CisgICAgY29uc3QgaW50
IHNpZGUgPSBxTWluKHJlY3QuaGVpZ2h0KCksIHJlY3Qud2lkdGgoKSk7CisgICAgcmV0dXJuIFFS
ZWN0KHJlY3QudG9wTGVmdCgpLCBRU2l6ZShzaWRlLCBzaWRlKSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgUVBlbiBib3JkZXJQZW4oUVBhaW50ZXIqIHBhaW50ZXIgPSAwKQoreworICAgIHJldHVybiBR
UGVuKGRhcmtDb2xvciwgcU1pbigxLjAsIDAuNCAqIHBhaW50ZXJTY2FsZShwYWludGVyKSkpOwor
fQorCitRU2hhcmVkUG9pbnRlcjxTdHlsZVBhaW50ZXI+IFJlbmRlclRoZW1lUXRNb2JpbGU6Omdl
dFN0eWxlUGFpbnRlcihjb25zdCBQYWludEluZm8mIHBpKQoreworICAgIHJldHVybiBRU2hhcmVk
UG9pbnRlcjxTdHlsZVBhaW50ZXI+KG5ldyBTdHlsZVBhaW50ZXJNb2JpbGUodGhpcywgcGkpKTsK
K30KKworUVBhbGV0dGUgUmVuZGVyVGhlbWVRdE1vYmlsZTo6Y29sb3JQYWxldHRlKCkgY29uc3QK
K3sKKyAgICBzdGF0aWMgUVBhbGV0dGUgbGlnaHRHcmF5UGFsZXR0ZShRdDo6bGlnaHRHcmF5KTsK
KyAgICByZXR1cm4gbGlnaHRHcmF5UGFsZXR0ZTsKK30KKworU3R5bGVQYWludGVyTW9iaWxlOjpT
dHlsZVBhaW50ZXJNb2JpbGUoUmVuZGVyVGhlbWVRdE1vYmlsZSogdGhlbWUsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvKQorICAgIDogU3R5bGVQYWludGVyKHBhaW50SW5mby5jb250ZXh0KQor
eworICAgIG1fcHJldmlvdXNTbW9vdGhQaXhtYXBUcmFuc2Zvcm0gPSBwYWludGVyLT50ZXN0UmVu
ZGVySGludChRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNmb3JtKTsKKyAgICBpZiAoIW1fcHJl
dmlvdXNTbW9vdGhQaXhtYXBUcmFuc2Zvcm0pCisgICAgICAgIHBhaW50ZXItPnNldFJlbmRlckhp
bnQoUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9ybSk7Cit9CisKK1N0eWxlUGFpbnRlck1v
YmlsZTo6flN0eWxlUGFpbnRlck1vYmlsZSgpCit7CisgICAgcGFpbnRlci0+c2V0UmVuZGVySGlu
dHMoUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9ybSwgbV9wcmV2aW91c1Ntb290aFBpeG1h
cFRyYW5zZm9ybSk7Cit9CisKK2Jvb2wgU3R5bGVQYWludGVyTW9iaWxlOjpmaW5kQ2FjaGVkQ29u
dHJvbChjb25zdCBLZXlJZGVudGlmaWVyJiBrZXlJZCwgUVBpeG1hcCogcmVzdWx0KQoreworICAg
IHN0YXRpYyBDYWNoZUtleSBlbXB0eUtleTsKKyAgICBDYWNoZUtleSBrZXkgPSBjYWNoZUtleXMu
dmFsdWUoa2V5SWQsIGVtcHR5S2V5KTsKKyAgICBpZiAoa2V5ID09IGVtcHR5S2V5KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgYm9vbCByZXQgPSBRUGl4bWFwQ2FjaGU6OmZpbmQo
a2V5LCByZXN1bHQpOworICAgIGlmICghcmV0KQorICAgICAgICBjYWNoZUtleXMucmVtb3ZlKGtl
eUlkKTsKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkIFN0eWxlUGFpbnRlck1vYmlsZTo6aW5z
ZXJ0SW50b0NhY2hlKGNvbnN0IEtleUlkZW50aWZpZXImIGtleUlkLCBjb25zdCBRUGl4bWFwJiBw
aXhtYXApCit7CisgICAgQVNTRVJUKGtleUlkLnR5cGUpOworICAgIGNvbnN0IGludCBzaXplSW5L
aWxvQnl0ZXMgPSBwaXhtYXAud2lkdGgoKSAqIHBpeG1hcC5oZWlnaHQoKSAqIHBpeG1hcC5kZXB0
aCgpIC8gKDggKiAxMDI0KTsKKyAgICAvLyBEb24ndCBjYWNoZSBwaXhtYXBzIG92ZXIgNTEyIEtC
OworICAgIGlmIChzaXplSW5LaWxvQnl0ZXMgPiA1MTIpCisgICAgICAgIHJldHVybjsKKyAgICBj
YWNoZUtleXMuaW5zZXJ0KGtleUlkLCBRUGl4bWFwQ2FjaGU6Omluc2VydChwaXhtYXApKTsKK30K
Kwordm9pZCBTdHlsZVBhaW50ZXJNb2JpbGU6OmRyYXdDaGVja2FibGVCYWNrZ3JvdW5kKFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRUmVjdCYgcmVjdCwgYm9vbCBjaGVja2VkLCBib29sIGVuYWJs
ZWQpIGNvbnN0Cit7CisgICAgUUJydXNoIGJydXNoOworICAgIFFDb2xvciBjb2xvciA9IFF0Ojpn
cmF5OworICAgIGlmIChjaGVja2VkICYmIGVuYWJsZWQpCisgICAgICAgIGNvbG9yID0gaGlnaGxp
Z2h0Q29sb3I7CisKKyAgICBRTGluZWFyR3JhZGllbnQgZ3JhZGllbnQ7CisgICAgZ3JhZGllbnQu
c2V0U3RhcnQocmVjdC50b3BMZWZ0KCkpOworICAgIGdyYWRpZW50LnNldEZpbmFsU3RvcChyZWN0
LmJvdHRvbUxlZnQoKSk7CisgICAgZ3JhZGllbnQuc2V0Q29sb3JBdCgwLjAsIGNvbG9yKTsKKyAg
ICBncmFkaWVudC5zZXRDb2xvckF0KDEuMCwgY29sb3IubGlnaHRlcigxMzApKTsKKyAgICBicnVz
aCA9IGdyYWRpZW50OworCisgICAgZHJhd0NvbnRyb2xCYWNrZ3JvdW5kKHBhaW50ZXIsIGJvcmRl
clBlbihwYWludGVyKSwgcmVjdCwgYnJ1c2gpOworfQorCitRU2l6ZSBTdHlsZVBhaW50ZXJNb2Jp
bGU6OnNpemVGb3JQYWludGVyU2NhbGUoY29uc3QgUVJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAg
cXJlYWwgc2NhbGUgPSBwYWludGVyU2NhbGUocGFpbnRlcik7CisgICAgUVRyYW5zZm9ybSBzY2Fs
ZVRyYW5zZm9ybSA9IFFUcmFuc2Zvcm06OmZyb21TY2FsZShzY2FsZSwgc2NhbGUpOworCisgICAg
cmV0dXJuIHNjYWxlVHJhbnNmb3JtLm1hcFJlY3QocmVjdCkuc2l6ZSgpOworfQorCit2b2lkIFN0
eWxlUGFpbnRlck1vYmlsZTo6ZHJhd0NoZWNrZXIoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFS
ZWN0JiByZWN0LCBjb25zdCBRQ29sb3ImIGNvbG9yKSBjb25zdAoreworICAgIHBhaW50ZXItPnNl
dFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisgICAgUVBlbiBwZW4o
UXQ6OmRhcmtHcmF5KTsKKyAgICBwZW4uc2V0Q29zbWV0aWModHJ1ZSk7CisgICAgcGFpbnRlci0+
c2V0UGVuKHBlbik7CisgICAgcGFpbnRlci0+c2NhbGUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpKTsKKyAgICBRUGFpbnRlclBhdGggcGF0aDsKKyAgICBwYXRoLm1vdmVUbygwLjE4LCAwLjQ3
KTsKKyAgICBwYXRoLmxpbmVUbygwLjI1LCAwLjQpOworICAgIHBhdGgubGluZVRvKDAuNCwgMC41
NSk7CisgICAgcGF0aC5xdWFkVG8oMC42NCwgMC4yOSwgMC43OCwgMC4yKTsKKyAgICBwYXRoLmxp
bmVUbygwLjgsIDAuMjUpOworICAgIHBhdGgucXVhZFRvKDAuNTMsIDAuNTUsIDAuNDUsIDAuNzUp
OworICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CisgICAgcGFpbnRlci0+c2V0QnJ1c2goY29sb3Ip
OworICAgIHBhaW50ZXItPmRyYXdQYXRoKHBhdGgpOworfQorCitRUGl4bWFwIFN0eWxlUGFpbnRl
ck1vYmlsZTo6ZmluZENoZWNrQm94KGNvbnN0IFFTaXplJiBzaXplLCBib29sIGNoZWNrZWQsIGJv
b2wgZW5hYmxlZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc2l6ZS53aWR0aCgpID09IHNpemUuaGVp
Z2h0KCkpOworICAgIFFQaXhtYXAgcmVzdWx0OworICAgIEtleUlkZW50aWZpZXIgaWQ7CisgICAg
aWQudHlwZSA9IEtleUlkZW50aWZpZXI6OkNoZWNrQm94OworICAgIGlkLmhlaWdodCA9IHNpemUu
aGVpZ2h0KCk7CisgICAgaWQudHJhaXQxID0gZW5hYmxlZDsKKyAgICBpZC50cmFpdDIgPSBjaGVj
a2VkOworICAgIGlmICghZmluZENhY2hlZENvbnRyb2woaWQsICZyZXN1bHQpKSB7CisgICAgICAg
IHJlc3VsdCA9IFFQaXhtYXAoc2l6ZSk7CisgICAgICAgIHJlc3VsdC5maWxsKFF0Ojp0cmFuc3Bh
cmVudCk7CisgICAgICAgIFFQYWludGVyIGNhY2hlUGFpbnRlcigmcmVzdWx0KTsKKyAgICAgICAg
UVJlY3QgcmVjdChRUG9pbnQoMCwgMCksIHNpemUpOworICAgICAgICBkcmF3Q2hlY2thYmxlQmFj
a2dyb3VuZCgmY2FjaGVQYWludGVyLCByZWN0LCBjaGVja2VkLCBlbmFibGVkKTsKKyAgICAgICAg
aWYgKGNoZWNrZWQgfHwgIWVuYWJsZWQpCisgICAgICAgICAgICBkcmF3Q2hlY2tlcigmY2FjaGVQ
YWludGVyLCByZWN0LCBlbmFibGVkID8gUXQ6OndoaXRlIDogUXQ6OmdyYXkpOworICAgICAgICBp
bnNlcnRJbnRvQ2FjaGUoaWQsIHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3ZvaWQgU3R5bGVQYWludGVyTW9iaWxlOjpkcmF3UmFkaW8oUVBhaW50ZXIqIHBhaW50ZXIs
IGNvbnN0IFFTaXplJiBzaXplLCBib29sIGNoZWNrZWQsIGJvb2wgZW5hYmxlZCkgY29uc3QKK3sK
KyAgICBRUmVjdCByZWN0KFFQb2ludCgwLCAwKSwgc2l6ZSk7CisKKyAgICBkcmF3Q2hlY2thYmxl
QmFja2dyb3VuZChwYWludGVyLCByZWN0LCBjaGVja2VkLCBlbmFibGVkKTsKKyAgICBjb25zdCBp
bnQgYm9yZGVyID0gc2l6ZS53aWR0aCgpIC8gNDsKKyAgICByZWN0LmFkanVzdChib3JkZXIsIGJv
cmRlciwgLWJvcmRlciwgLWJvcmRlcik7CisgICAgZHJhd0NvbnRyb2xCYWNrZ3JvdW5kKHBhaW50
ZXIsIGJvcmRlclBlbigpLCByZWN0LCBlbmFibGVkID8gUXQ6OndoaXRlIDogUXQ6OmdyYXkpOwor
fQorCitRUGl4bWFwIFN0eWxlUGFpbnRlck1vYmlsZTo6ZmluZFJhZGlvKGNvbnN0IFFTaXplJiBz
aXplLCBib29sIGNoZWNrZWQsIGJvb2wgZW5hYmxlZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc2l6
ZS53aWR0aCgpID09IHNpemUuaGVpZ2h0KCkpOworICAgIFFQaXhtYXAgcmVzdWx0OworICAgIEtl
eUlkZW50aWZpZXIgaWQ7CisgICAgaWQudHlwZSA9IEtleUlkZW50aWZpZXI6OlJhZGlvOworICAg
IGlkLmhlaWdodCA9IHNpemUuaGVpZ2h0KCk7CisgICAgaWQudHJhaXQxID0gZW5hYmxlZDsKKyAg
ICBpZC50cmFpdDIgPSBjaGVja2VkOworICAgIGlmICghZmluZENhY2hlZENvbnRyb2woaWQsICZy
ZXN1bHQpKSB7CisgICAgICAgIHJlc3VsdCA9IFFQaXhtYXAoc2l6ZSk7CisgICAgICAgIHJlc3Vs
dC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIFFQYWludGVyIGNhY2hlUGFpbnRlcigm
cmVzdWx0KTsKKyAgICAgICAgZHJhd1JhZGlvKCZjYWNoZVBhaW50ZXIsIHNpemUsIGNoZWNrZWQs
IGVuYWJsZWQpOworICAgICAgICBpbnNlcnRJbnRvQ2FjaGUoaWQsIHJlc3VsdCk7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3R5bGVQYWludGVyTW9iaWxlOjpkcmF3TXVs
dGlwbGVDb21ib0J1dHRvbihRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVNpemVGJiBzaXplLCBj
b25zdCBRQ29sb3ImIGNvbG9yKSBjb25zdAoreworICAgIGNvbnN0IHFyZWFsIGRvdERpYW1ldGVy
ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBjb25zdCBxcmVhbCBkb3RSYWRpaSA9IGRvdERpYW1ldGVy
IC8gMjsKKworICAgIHBhaW50ZXItPnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2lu
ZywgdHJ1ZSk7CisgICAgcGFpbnRlci0+c2V0UGVuKGNvbG9yKTsKKyAgICBwYWludGVyLT5zZXRC
cnVzaChjb2xvcik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAg
ICBRUG9pbnRGIGNlbnRlcihkb3RSYWRpaSArIGkgKiBtdWx0aXBsZUNvbWJvRG90c09mZnNldEZh
Y3RvciAqIGRvdERpYW1ldGVyLCBkb3RSYWRpaSk7CisgICAgICAgIHBhaW50ZXItPmRyYXdFbGxp
cHNlKGNlbnRlciwgZG90UmFkaWksIGRvdFJhZGlpKTsKKyAgICB9Cit9CisKK3ZvaWQgU3R5bGVQ
YWludGVyTW9iaWxlOjpkcmF3U2ltcGxlQ29tYm9CdXR0b24oUVBhaW50ZXIqIHBhaW50ZXIsIGNv
bnN0IFFTaXplRiYgc2l6ZSwgY29uc3QgUUNvbG9yJiBjb2xvcikgY29uc3QKK3sKKyAgICBjb25z
dCBxcmVhbCBnYXAgPSBzaXplLmhlaWdodCgpIC8gNS4wOworICAgIGNvbnN0IHFyZWFsIGFycm93
SGVpZ2h0ID0gKHNpemUuaGVpZ2h0KCkgLSBnYXApIC8gMi4wOworICAgIGNvbnN0IHFyZWFsIHJp
Z2h0ID0gYXJyb3dIZWlnaHQgKiAyOworICAgIGNvbnN0IHFyZWFsIGJvdHRvbUJhc2VsaW5lID0g
c2l6ZS5oZWlnaHQoKSAtIGFycm93SGVpZ2h0OworICAgIFFQb2x5Z29uRiB1cEFycm93LCBkb3du
QXJyb3c7CisgICAgdXBBcnJvdyA8PCBRUG9pbnRGKDAsIGFycm93SGVpZ2h0KSA8PCBRUG9pbnRG
KGFycm93SGVpZ2h0LCAwKSA8PCBRUG9pbnRGKHJpZ2h0LCBhcnJvd0hlaWdodCk7CisgICAgZG93
bkFycm93IDw8IFFQb2ludEYoMCwgYm90dG9tQmFzZWxpbmUpIDw8IFFQb2ludEYoYXJyb3dIZWln
aHQsIGJvdHRvbUJhc2VsaW5lICsgYXJyb3dIZWlnaHQpCisgICAgICAgICAgICAgIDw8IFFQb2lu
dEYocmlnaHQsIGJvdHRvbUJhc2VsaW5lKTsKKworICAgIHBhaW50ZXItPnNldFBlbihRdDo6Tm9Q
ZW4pOworICAgIHBhaW50ZXItPnNldEJydXNoKGNvbG9yKTsKKyAgICBwYWludGVyLT5kcmF3UG9s
eWdvbih1cEFycm93KTsKKyAgICBwYWludGVyLT5kcmF3UG9seWdvbihkb3duQXJyb3cpOworfQor
CitRU2l6ZUYgU3R5bGVQYWludGVyTW9iaWxlOjpnZXRCdXR0b25JbWFnZVNpemUoaW50IGJ1dHRv
bkhlaWdodCwgYm9vbCBtdWx0aXBsZSkgY29uc3QKK3sKKyAgICBpZiAobXVsdGlwbGUpCisgICAg
ICAgIHJldHVybiBRU2l6ZUYocXJlYWwoMiArIGJ1dHRvbkhlaWdodCAqIDMgKiBtdWx0aXBsZUNv
bWJvRG90c09mZnNldEZhY3Rvci8gMTAuMCkKKyAgICAgICAgICAgICAgICAgICAgICAsIHFyZWFs
KDIgKyBidXR0b25IZWlnaHQgLyAxMC4wKSk7CisKKyAgICBjb25zdCBxcmVhbCBoZWlnaHQgPSBi
dXR0b25IZWlnaHQgLyAyLjU7CisgICAgY29uc3QgcXJlYWwgd2lkdGggPSA0ICogaGVpZ2h0IC8g
NS4wOworICAgIHJldHVybiBRU2l6ZUYoMiArIHdpZHRoLCAyICsgaGVpZ2h0KTsKK30KKworUVBp
eG1hcCBTdHlsZVBhaW50ZXJNb2JpbGU6OmZpbmRDb21ib0J1dHRvbihjb25zdCBRU2l6ZSYgc2l6
ZSwgYm9vbCBtdWx0aXBsZSwgYm9vbCBlbmFibGVkKSBjb25zdAoreworICAgIGlmIChzaXplLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gUVBpeG1hcCgpOworICAgIFFQaXhtYXAgcmVzdWx0Owor
ICAgIEtleUlkZW50aWZpZXIgaWQ7CisgICAgaWQudHlwZSA9IEtleUlkZW50aWZpZXI6OkNvbWJv
QnV0dG9uOworICAgIGlkLndpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGlkLmhlaWdodCA9IHNp
emUuaGVpZ2h0KCk7CisgICAgaWQudHJhaXQxID0gbXVsdGlwbGU7CisgICAgaWQudHJhaXQyID0g
ZW5hYmxlZDsKKworICAgIGlmICghZmluZENhY2hlZENvbnRyb2woaWQsICZyZXN1bHQpKSB7Cisg
ICAgICAgIHJlc3VsdCA9IFFQaXhtYXAoc2l6ZSk7CisgICAgICAgIGNvbnN0IHFyZWFsIGJvcmRl
ciA9IHBhaW50ZXJTY2FsZShwYWludGVyKTsKKyAgICAgICAgY29uc3QgUVNpemVGIHBhZGRpbmco
MiAqIGJvcmRlciwgMiAqIGJvcmRlcik7CisgICAgICAgIGNvbnN0IFFTaXplRiBpbm5lclNpemUg
PSBzaXplIC0gcGFkZGluZzsKKyAgICAgICAgQVNTRVJUKGlubmVyU2l6ZS5pc1ZhbGlkKCkpOwor
ICAgICAgICByZXN1bHQuZmlsbChRdDo6dHJhbnNwYXJlbnQpOworICAgICAgICBRUGFpbnRlciBj
YWNoZVBhaW50ZXIoJnJlc3VsdCk7CisgICAgICAgIGNhY2hlUGFpbnRlci50cmFuc2xhdGUoYm9y
ZGVyLCBib3JkZXIpOworICAgICAgICBpZiAobXVsdGlwbGUpCisgICAgICAgICAgICBkcmF3TXVs
dGlwbGVDb21ib0J1dHRvbigmY2FjaGVQYWludGVyLCBpbm5lclNpemUsIGVuYWJsZWQgPyBkYXJr
Q29sb3IgOiBRdDo6bGlnaHRHcmF5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHJhd1Np
bXBsZUNvbWJvQnV0dG9uKCZjYWNoZVBhaW50ZXIsIGlubmVyU2l6ZSwgZW5hYmxlZCA/IGRhcmtD
b2xvciA6IFF0OjpsaWdodEdyYXkpOworICAgICAgICBpbnNlcnRJbnRvQ2FjaGUoaWQsIHJlc3Vs
dCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3R5bGVQYWludGVyTW9i
aWxlOjpkcmF3TGluZUVkaXQoY29uc3QgUVJlY3QmIHJlY3QsIGJvb2wgZm9jdXNlZCwgYm9vbCBl
bmFibGVkKQoreworICAgIFFfVU5VU0VEKGVuYWJsZWQpOworICAgIFFQaXhtYXAgbGluZUVkaXQg
PSBmaW5kTGluZUVkaXQoc2l6ZUZvclBhaW50ZXJTY2FsZShyZWN0KSwgZm9jdXNlZCk7CisgICAg
aWYgKGxpbmVFZGl0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgcGFpbnRlci0+ZHJh
d1BpeG1hcChyZWN0LCBsaW5lRWRpdCk7Cit9CisKK1FQaXhtYXAgU3R5bGVQYWludGVyTW9iaWxl
OjpmaW5kTGluZUVkaXQoY29uc3QgUVNpemUgJiBzaXplLCBib29sIGZvY3VzZWQpIGNvbnN0Cit7
CisgICAgUVBpeG1hcCByZXN1bHQ7CisgICAgS2V5SWRlbnRpZmllciBpZDsKKyAgICBpZC50eXBl
ID0gS2V5SWRlbnRpZmllcjo6TGluZUVkaXQ7CisgICAgaWQud2lkdGggPSBzaXplLndpZHRoKCk7
CisgICAgaWQuaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBpZC50cmFpdDEgPSBmb2N1c2Vk
OworCisgICAgaWYgKCFmaW5kQ2FjaGVkQ29udHJvbChpZCwgJnJlc3VsdCkpIHsKKyAgICAgICAg
Y29uc3QgaW50IGZvY3VzRnJhbWUgPSBwYWludGVyU2NhbGUocGFpbnRlcik7CisgICAgICAgIHJl
c3VsdCA9IFFQaXhtYXAoc2l6ZSk7CisgICAgICAgIHJlc3VsdC5maWxsKFF0Ojp0cmFuc3BhcmVu
dCk7CisgICAgICAgIGNvbnN0IFFSZWN0IHJlY3QgPSByZXN1bHQucmVjdCgpLmFkanVzdGVkKGZv
Y3VzRnJhbWUsIGZvY3VzRnJhbWUsIC1mb2N1c0ZyYW1lLCAtZm9jdXNGcmFtZSk7CisgICAgICAg
IFFQYWludGVyIGNhY2hlUGFpbnRlcigmcmVzdWx0KTsKKyAgICAgICAgZHJhd0NvbnRyb2xCYWNr
Z3JvdW5kKCZjYWNoZVBhaW50ZXIsIGJvcmRlclBlbihwYWludGVyKSwgcmVjdCwgUXQ6OndoaXRl
KTsKKworICAgICAgICBpZiAoZm9jdXNlZCkgeworICAgICAgICAgICAgUVBlbiBmb2N1c1Blbiho
aWdobGlnaHRDb2xvciwgMS4yICogcGFpbnRlclNjYWxlKHBhaW50ZXIpLCBRdDo6U29saWRMaW5l
KTsKKyAgICAgICAgICAgIGRyYXdDb250cm9sQmFja2dyb3VuZCgmY2FjaGVQYWludGVyLCBmb2N1
c1BlbiwgcmVjdCwgUXQ6Ok5vQnJ1c2gpOworICAgICAgICB9CisgICAgICAgIGluc2VydEludG9D
YWNoZShpZCwgcmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBT
dHlsZVBhaW50ZXJNb2JpbGU6OmRyYXdDaGVja0JveChjb25zdCBRUmVjdCYgcmVjdCwgYm9vbCBj
aGVja2VkLCBib29sIGVuYWJsZWQpCit7CisgICAgY29uc3QgUVJlY3Qgc3F1YXJlID0gc2hyaW5r
UmVjdFRvU3F1YXJlKHJlY3QpOworICAgIFFQaXhtYXAgY2hlY2tCb3ggPSBmaW5kQ2hlY2tCb3go
c2l6ZUZvclBhaW50ZXJTY2FsZShzcXVhcmUpLCBjaGVja2VkLCBlbmFibGVkKTsKKyAgICBpZiAo
Y2hlY2tCb3guaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwYWludGVyLT5kcmF3UGl4
bWFwKHNxdWFyZSwgY2hlY2tCb3gpOworfQorCit2b2lkIFN0eWxlUGFpbnRlck1vYmlsZTo6ZHJh
d1JhZGlvQnV0dG9uKGNvbnN0IFFSZWN0JiByZWN0LCBib29sIGNoZWNrZWQsIGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBjb25zdCBRUmVjdCBzcXVhcmUgPSBzaHJpbmtSZWN0VG9TcXVhcmUocmVjdCk7
CisgICAgUVBpeG1hcCByYWRpbyA9IGZpbmRSYWRpbyhzaXplRm9yUGFpbnRlclNjYWxlKHNxdWFy
ZSksIGNoZWNrZWQsIGVuYWJsZWQpOworICAgIGlmIChyYWRpby5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIHBhaW50ZXItPmRyYXdQaXhtYXAoc3F1YXJlLCByYWRpbyk7Cit9CisKK3Zv
aWQgU3R5bGVQYWludGVyTW9iaWxlOjpkcmF3UHVzaEJ1dHRvbihjb25zdCBRUmVjdCYgcmVjdCwg
Ym9vbCBzdW5rZW4sIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBRUGl4bWFwIHB1c2hCdXR0b24gPSBm
aW5kUHVzaEJ1dHRvbihzaXplRm9yUGFpbnRlclNjYWxlKHJlY3QpLCBzdW5rZW4sIGVuYWJsZWQp
OworICAgIGlmIChwdXNoQnV0dG9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisgICAgcGFp
bnRlci0+ZHJhd1BpeG1hcChyZWN0LCBwdXNoQnV0dG9uKTsKK30KKworUVBpeG1hcCBTdHlsZVBh
aW50ZXJNb2JpbGU6OmZpbmRQdXNoQnV0dG9uKGNvbnN0IFFTaXplJiBzaXplLCBib29sIHN1bmtl
biwgYm9vbCBlbmFibGVkKSBjb25zdAoreworICAgIFFQaXhtYXAgcmVzdWx0OworICAgIEtleUlk
ZW50aWZpZXIgaWQ7CisgICAgaWQudHlwZSA9IEtleUlkZW50aWZpZXI6OlB1c2hCdXR0b247Cisg
ICAgaWQud2lkdGggPSBzaXplLndpZHRoKCk7CisgICAgaWQuaGVpZ2h0ID0gc2l6ZS5oZWlnaHQo
KTsKKyAgICBpZC50cmFpdDEgPSBzdW5rZW47CisgICAgaWQudHJhaXQyID0gZW5hYmxlZDsKKyAg
ICBpZiAoIWZpbmRDYWNoZWRDb250cm9sKGlkLCAmcmVzdWx0KSkgeworICAgICAgICBjb25zdCBx
cmVhbCBkcm9wU2hhZG93U2l6ZSA9IHBhaW50ZXJTY2FsZShwYWludGVyKTsKKyAgICAgICAgcmVz
dWx0ID0gUVBpeG1hcChzaXplKTsKKyAgICAgICAgcmVzdWx0LmZpbGwoUXQ6OnRyYW5zcGFyZW50
KTsKKyAgICAgICAgY29uc3QgUVJlY3QgcmVjdCA9IFFSZWN0KDAsIDAsIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSAtIGRyb3BTaGFkb3dTaXplKTsKKyAgICAgICAgUVBhaW50ZXIgY2FjaGVQ
YWludGVyKCZyZXN1bHQpOworICAgICAgICBkcmF3Q29udHJvbEJhY2tncm91bmQoJmNhY2hlUGFp
bnRlciwgUXQ6Ok5vUGVuLCByZWN0LmFkanVzdGVkKDAsIGRyb3BTaGFkb3dTaXplLCAwLCBkcm9w
U2hhZG93U2l6ZSksIHNoYWRvd0NvbG9yKTsKKworICAgICAgICBRQnJ1c2ggYnJ1c2g7CisgICAg
ICAgIGlmIChlbmFibGVkICYmICFzdW5rZW4pIHsKKyAgICAgICAgICAgIFFMaW5lYXJHcmFkaWVu
dCBsaW5lYXJHcmFkaWVudDsKKyAgICAgICAgICAgIGxpbmVhckdyYWRpZW50LnNldFN0YXJ0KHJl
Y3QuYm90dG9tTGVmdCgpKTsKKyAgICAgICAgICAgIGxpbmVhckdyYWRpZW50LnNldEZpbmFsU3Rv
cChyZWN0LnRvcExlZnQoKSk7CisgICAgICAgICAgICBsaW5lYXJHcmFkaWVudC5zZXRDb2xvckF0
KDAuMCwgYnV0dG9uR3JhZGllbnRCb3R0b20pOworICAgICAgICAgICAgbGluZWFyR3JhZGllbnQu
c2V0Q29sb3JBdCgxLjAsIFF0Ojp3aGl0ZSk7CisgICAgICAgICAgICBicnVzaCA9IGxpbmVhckdy
YWRpZW50OworICAgICAgICB9IGVsc2UgaWYgKCFlbmFibGVkKQorICAgICAgICAgICAgYnJ1c2gg
PSBRQ29sb3IoMjQxLCAyNDIsIDI0Myk7CisgICAgICAgIGVsc2UgeyAvLyBzdW5rZW4KKyAgICAg
ICAgICAgIFFMaW5lYXJHcmFkaWVudCBsaW5lYXJHcmFkaWVudDsKKyAgICAgICAgICAgIGxpbmVh
ckdyYWRpZW50LnNldFN0YXJ0KHJlY3QuYm90dG9tTGVmdCgpKTsKKyAgICAgICAgICAgIGxpbmVh
ckdyYWRpZW50LnNldEZpbmFsU3RvcChyZWN0LnRvcExlZnQoKSk7CisgICAgICAgICAgICBsaW5l
YXJHcmFkaWVudC5zZXRDb2xvckF0KDAuMCwgaGlnaGxpZ2h0Q29sb3IpOworICAgICAgICAgICAg
bGluZWFyR3JhZGllbnQuc2V0Q29sb3JBdCgxLjAsIGhpZ2hsaWdodENvbG9yLmxpZ2h0ZXIoKSk7
CisgICAgICAgICAgICBicnVzaCA9IGxpbmVhckdyYWRpZW50OworICAgICAgICB9CisgICAgICAg
IGRyYXdDb250cm9sQmFja2dyb3VuZCgmY2FjaGVQYWludGVyLCBib3JkZXJQZW4ocGFpbnRlciks
IHJlY3QsIGJydXNoKTsKKyAgICAgICAgaW5zZXJ0SW50b0NhY2hlKGlkLCByZXN1bHQpOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFN0eWxlUGFpbnRlck1vYmlsZTo6ZHJh
d0NvbWJvQm94KGNvbnN0IFFSZWN0JiByZWN0LCBib29sIG11bHRpcGxlLCBib29sIGVuYWJsZWQp
Cit7CisgICAgUVBpeG1hcCBwdXNoQnV0dG9uID0gZmluZFB1c2hCdXR0b24oc2l6ZUZvclBhaW50
ZXJTY2FsZShyZWN0KSwgLypzdW5rZW4gPSAqL2ZhbHNlLCBlbmFibGVkKTsKKyAgICBpZiAocHVz
aEJ1dHRvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHBhaW50ZXItPmRyYXdQaXht
YXAocmVjdCwgcHVzaEJ1dHRvbik7CisgICAgUVJlY3RGIHRhcmdldFJlY3QoUVBvaW50RigwLCAw
KSwgZ2V0QnV0dG9uSW1hZ2VTaXplKHJlY3QuaGVpZ2h0KCkgLSAxLCBtdWx0aXBsZSkpOworICAg
IGNvbnN0IFFQb2ludEYgYnV0dG9uQ2VudGVyKHJlY3QucmlnaHQoKSAtIGFycm93Qm94V2lkdGgg
LyAyLCByZWN0LnRvcCgpICsgKHJlY3QuaGVpZ2h0KCkgLSAxKSAvIDIpOworICAgIHRhcmdldFJl
Y3QubW92ZUNlbnRlcihidXR0b25DZW50ZXIpOworICAgIFFQaXhtYXAgcGljID0gZmluZENvbWJv
QnV0dG9uKHNpemVGb3JQYWludGVyU2NhbGUodGFyZ2V0UmVjdC50b1JlY3QoKSksIG11bHRpcGxl
LCBlbmFibGVkKTsKKyAgICBpZiAocGljLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBwYWludGVyLT5kcmF3UGl4bWFwKHRhcmdldFJlY3QudG9SZWN0KCksIHBpYyk7Cit9CisKK3Zv
aWQgU3R5bGVQYWludGVyTW9iaWxlOjpkcmF3UHJvZ3Jlc3MoY29uc3QgUVJlY3QmIHJlY3QsIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBsZWZ0VG9SaWdodCwgYm9vbCBhbmltYXRlZCwgYm9vbCB2ZXJ0
aWNhbCkgY29uc3QKK3sKKyAgICBjb25zdCBpbnQgaG9yaXpvbnRhbEJvcmRlciA9ICh2ZXJ0aWNh
bCA/IHJlY3Qud2lkdGgoKSAvIDQgOiAwKTsKKyAgICBjb25zdCBpbnQgdmVydGljYWxCb3JkZXIg
PSAodmVydGljYWwgPyAwIDogcmVjdC5oZWlnaHQoKSAvIDQpOworICAgIGNvbnN0IFFSZWN0IHRh
cmdldFJlY3QgPSByZWN0LmFkanVzdGVkKGhvcml6b250YWxCb3JkZXIsIHZlcnRpY2FsQm9yZGVy
LCAtaG9yaXpvbnRhbEJvcmRlciwgLXZlcnRpY2FsQm9yZGVyKTsKKworICAgIFFQaXhtYXAgcmVz
dWx0OworICAgIFFTaXplIGltYWdlU2l6ZSA9IHNpemVGb3JQYWludGVyU2NhbGUodGFyZ2V0UmVj
dCk7CisgICAgaWYgKHZlcnRpY2FsKQorICAgICAgICBxU3dhcChpbWFnZVNpemUucmhlaWdodCgp
LCBpbWFnZVNpemUucndpZHRoKCkpOworICAgIEtleUlkZW50aWZpZXIgaWQ7CisgICAgaWQudHlw
ZSA9IEtleUlkZW50aWZpZXI6OlByb2dyZXNzOworICAgIGlkLndpZHRoID0gaW1hZ2VTaXplLndp
ZHRoKCk7CisgICAgaWQuaGVpZ2h0ID0gaW1hZ2VTaXplLmhlaWdodCgpOworICAgIGlkLnRyYWl0
MSA9IGFuaW1hdGVkOworICAgIGlkLnRyYWl0MiA9ICghYW5pbWF0ZWQgJiYgIWxlZnRUb1JpZ2h0
KTsKKyAgICBpZC50cmFpdDMgPSBwcm9ncmVzcyAqIDEwMDsKKyAgICBpZiAoIWZpbmRDYWNoZWRD
b250cm9sKGlkLCAmcmVzdWx0KSkgeworICAgICAgICBpZiAoaW1hZ2VTaXplLmlzTnVsbCgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZXN1bHQgPSBRUGl4bWFwKGltYWdlU2l6ZSk7
CisgICAgICAgIHJlc3VsdC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIFFQYWludGVy
IHBhaW50ZXIoJnJlc3VsdCk7CisgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludChRUGFpbnRl
cjo6QW50aWFsaWFzaW5nKTsKKyAgICAgICAgUVJlY3QgcHJvZ3Jlc3NSZWN0KFFQb2ludCgwLCAw
KSwgaW1hZ2VTaXplKTsKKyAgICAgICAgcXJlYWwgcmFkaXVzID0gcmFkaXVzRmFjdG9yICogcHJv
Z3Jlc3NSZWN0LmhlaWdodCgpOworICAgICAgICBwYWludGVyLnNldEJydXNoKFF0OjpOb0JydXNo
KTsKKyAgICAgICAgcGFpbnRlci5zZXRQZW4oYm9yZGVyUGVuKCkpOworICAgICAgICBwcm9ncmVz
c1JlY3QuYWRqdXN0KDEsIDEsIC0xLCAtMSk7CisgICAgICAgIHBhaW50ZXIuZHJhd1JvdW5kZWRS
ZWN0KHByb2dyZXNzUmVjdCwgcmFkaXVzLCByYWRpdXMpOworICAgICAgICBwcm9ncmVzc1JlY3Qu
YWRqdXN0KDEsIDEsIC0xLCAtMSk7CisgICAgICAgIGlmIChhbmltYXRlZCkgeworICAgICAgICAg
ICAgY29uc3QgaW50IHJpZ2h0ID0gcHJvZ3Jlc3NSZWN0LnJpZ2h0KCk7CisgICAgICAgICAgICBj
b25zdCBpbnQgc3RhcnRQb3MgPSByaWdodCAqICgxIC0gcHJvZ3Jlc3NCYXJDaHVua1BlcmNlbnRh
Z2UpICogMiAqIGZhYnMocHJvZ3Jlc3MgLSAwLjUpOworICAgICAgICAgICAgcHJvZ3Jlc3NSZWN0
LnNldFdpZHRoKHByb2dyZXNzQmFyQ2h1bmtQZXJjZW50YWdlICogcmlnaHQpOworICAgICAgICAg
ICAgcHJvZ3Jlc3NSZWN0Lm1vdmVMZWZ0KHN0YXJ0UG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHByb2dyZXNzUmVjdC5zZXRXaWR0aChwcm9ncmVzcyAqIHByb2dyZXNzUmVjdC53
aWR0aCgpKTsKKyAgICAgICAgICAgIGlmICghbGVmdFRvUmlnaHQpCisgICAgICAgICAgICAgICAg
cHJvZ3Jlc3NSZWN0Lm1vdmVSaWdodChpbWFnZVNpemUud2lkdGgoKSAtIDIpOworICAgICAgICB9
CisgICAgICAgIGlmIChwcm9ncmVzc1JlY3Qud2lkdGgoKSA+IDApIHsKKyAgICAgICAgICAgIFFM
aW5lYXJHcmFkaWVudCBncmFkaWVudDsKKyAgICAgICAgICAgIGdyYWRpZW50LnNldFN0YXJ0KHBy
b2dyZXNzUmVjdC5ib3R0b21MZWZ0KCkpOworICAgICAgICAgICAgZ3JhZGllbnQuc2V0RmluYWxT
dG9wKHByb2dyZXNzUmVjdC50b3BMZWZ0KCkpOworICAgICAgICAgICAgZ3JhZGllbnQuc2V0Q29s
b3JBdCgwLjAsIGhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgICAgIGdyYWRpZW50LnNldENvbG9y
QXQoMS4wLCBoaWdobGlnaHRDb2xvci5saWdodGVyKCkpOworICAgICAgICAgICAgcGFpbnRlci5z
ZXRCcnVzaChncmFkaWVudCk7CisgICAgICAgICAgICBwYWludGVyLnNldFBlbihRdDo6Tm9QZW4p
OworICAgICAgICAgICAgcmFkaXVzID0gcmFkaXVzRmFjdG9yICogcHJvZ3Jlc3NSZWN0LmhlaWdo
dCgpOworICAgICAgICAgICAgcGFpbnRlci5kcmF3Um91bmRlZFJlY3QocHJvZ3Jlc3NSZWN0LCBy
YWRpdXMsIHJhZGl1cyk7CisgICAgICAgIH0KKyAgICAgICAgaW5zZXJ0SW50b0NhY2hlKGlkLCBy
ZXN1bHQpOworICAgIH0KKyAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0u
cm90YXRlKC05MCk7CisgICAgcGFpbnRlci0+ZHJhd1BpeG1hcCh0YXJnZXRSZWN0LCB2ZXJ0aWNh
bCA/IHJlc3VsdC50cmFuc2Zvcm1lZCh0cmFuc2Zvcm0pIDogcmVzdWx0KTsKK30KKwordm9pZCBT
dHlsZVBhaW50ZXJNb2JpbGU6OmRyYXdTbGlkZXJUaHVtYihjb25zdCBRUmVjdCAmIHJlY3QsIGJv
b2wgcHJlc3NlZCkgY29uc3QKK3sKKyAgICBRUGl4bWFwIHJlc3VsdDsKKyAgICBjb25zdCBRU2l6
ZSBzaXplID0gc2l6ZUZvclBhaW50ZXJTY2FsZShyZWN0KTsKKyAgICBLZXlJZGVudGlmaWVyIGlk
OworICAgIGlkLnR5cGUgPSBLZXlJZGVudGlmaWVyOjpTbGlkZXJUaHVtYjsKKyAgICBpZC53aWR0
aCA9IHNpemUud2lkdGgoKTsKKyAgICBpZC5oZWlnaHQgPSBzaXplLmhlaWdodCgpOworICAgIGlk
LnRyYWl0MSA9IHByZXNzZWQ7CisgICAgaWYgKCFmaW5kQ2FjaGVkQ29udHJvbChpZCwgJnJlc3Vs
dCkpIHsKKyAgICAgICAgaWYgKHNpemUuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJlc3VsdCA9IFFQaXhtYXAoc2l6ZSk7CisgICAgICAgIHJlc3VsdC5maWxsKFF0Ojp0
cmFuc3BhcmVudCk7CisgICAgICAgIFFQYWludGVyIGNhY2hlUGFpbnRlcigmcmVzdWx0KTsKKyAg
ICAgICAgZHJhd0NvbnRyb2xCYWNrZ3JvdW5kKCZjYWNoZVBhaW50ZXIsIGJvcmRlclBlbihwYWlu
dGVyKSwgUVJlY3QoUVBvaW50KDAsIDApLCBzaXplKSwgcHJlc3NlZD8gUXQ6OmxpZ2h0R3JheSA6
IGJ1dHRvbkdyYWRpZW50Qm90dG9tKTsKKyAgICAgICAgaW5zZXJ0SW50b0NhY2hlKGlkLCByZXN1
bHQpOworICAgIH0KKyAgICBwYWludGVyLT5kcmF3UGl4bWFwKHJlY3QsIHJlc3VsdCk7Cit9CisK
KworUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWVRdE1vYmlsZTo6Y3JlYXRlKFBh
Z2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW5kZXJUaGVtZVF0TW9iaWxl
KHBhZ2UpKTsKK30KKworUmVuZGVyVGhlbWVRdE1vYmlsZTo6UmVuZGVyVGhlbWVRdE1vYmlsZShQ
YWdlKiBwYWdlKQorICAgIDogUmVuZGVyVGhlbWVRdChwYWdlKQoreworfQorCitSZW5kZXJUaGVt
ZVF0TW9iaWxlOjp+UmVuZGVyVGhlbWVRdE1vYmlsZSgpCit7Cit9CisKK2Jvb2wgUmVuZGVyVGhl
bWVRdE1vYmlsZTo6aXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29u
c3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBGaWxsTGF5ZXImIGZpbGwsIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0Cit7CisgICAgc3dpdGNoIChzdHlsZS0+YXBwZWFyYW5j
ZSgpKSB7CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgY2FzZSBSYWRpb1BhcnQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUmVuZGVyVGhl
bWVRdDo6aXNDb250cm9sU3R5bGVkKHN0eWxlLCBib3JkZXIsIGZpbGwsIGJhY2tncm91bmRDb2xv
cik7CisgICAgfQorfQorCitpbnQgUmVuZGVyVGhlbWVRdE1vYmlsZTo6cG9wdXBJbnRlcm5hbFBh
ZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAoreworICAgIHJldHVybiAxOwor
fQorCit2b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxlKFJl
bmRlclN0eWxlKiByZW5kZXJTdHlsZSkgY29uc3QKK3sKKyAgICBRU2l6ZSBzaXplKDAsIDApOwor
CisgICAgc3dpdGNoIChyZW5kZXJTdHlsZS0+YXBwZWFyYW5jZSgpKSB7CisgICAgY2FzZSBUZXh0
QXJlYVBhcnQ6CisgICAgY2FzZSBTZWFyY2hGaWVsZFBhcnQ6CisgICAgY2FzZSBUZXh0RmllbGRQ
YXJ0OiB7CisgICAgICAgIGludCBwYWRkaW5nID0gZnJhbWVXaWR0aDsKKyAgICAgICAgcmVuZGVy
U3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOworICAgICAgICBy
ZW5kZXJTdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aChwYWRkaW5nLCBGaXhlZCkpOworICAg
ICAgICByZW5kZXJTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgocGFkZGluZywgRml4ZWQpKTsK
KyAgICAgICAgcmVuZGVyU3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmcsIEZp
eGVkKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgLy8gSWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lm
aWVkLCB0aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KKyAgICBpZiAoIXJlbmRlclN0eWxlLT53
aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXJlbmRlclN0eWxlLT5oZWlnaHQoKS5pc0F1
dG8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChyZW5kZXJTdHlsZS0+YXBwZWFy
YW5jZSgpKSB7CisgICAgY2FzZSBDaGVja2JveFBhcnQ6IHsKKyAgICAgICAgY29uc3QgaW50IHcg
PSBjaGVja0JveFdpZHRoICogcmVuZGVyU3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAg
c2l6ZSA9IFFTaXplKHcsIHcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSYWRp
b1BhcnQ6IHsKKyAgICAgICAgY29uc3QgaW50IHcgPSByYWRpb1dpZHRoICogcmVuZGVyU3R5bGUt
PmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgc2l6ZSA9IFFTaXplKHcsIHcpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKKyAgICBjYXNlIFNxdWFyZUJ1
dHRvblBhcnQ6CisgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKKyAgICBjYXNlIEJ1dHRvblBh
cnQ6CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6IHsKKyAgICAgICAgY29uc3QgaW50IGhlaWdodCA9
IHJlbmRlclN0eWxlLT5mb250TWV0cmljcygpLmhlaWdodCgpICogYnV0dG9uSGVpZ2h0UmF0aW8g
KiByZW5kZXJTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgICAgICBzaXplID0gUVNpemUocmVu
ZGVyU3R5bGUtPndpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIEZJWE1FOiBD
aGVjayBpcyBmbGF3ZWQsIHNpbmNlIGl0IGRvZXNuJ3QgdGFrZSBtaW4td2lkdGgvbWF4LXdpZHRo
IGludG8gYWNjb3VudC4KKyAgICBpZiAocmVuZGVyU3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSAmJiBzaXplLndpZHRoKCkgPiAwKQorICAgICAgICByZW5kZXJTdHlsZS0+c2V0TWlu
V2lkdGgoTGVuZ3RoKHNpemUud2lkdGgoKSwgRml4ZWQpKTsKKyAgICBpZiAocmVuZGVyU3R5bGUt
PmhlaWdodCgpLmlzQXV0bygpICYmIHNpemUuaGVpZ2h0KCkgPiAwKQorICAgICAgICByZW5kZXJT
dHlsZS0+c2V0TWluSGVpZ2h0KExlbmd0aChzaXplLmhlaWdodCgpLCBGaXhlZCkpOworfQorCit2
b2lkIFJlbmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXIq
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIC8vIERpdGNoIHRo
ZSBib3JkZXIuCisgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CisKKyAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKKworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTcGVjaWZpZWRTaXplKHN0eWxlLT5mb250U2l6ZSgpKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKHN0eWxlLT5mb250U2l6ZSgpKTsKKworICAgIHN0eWxlLT5zZXRM
aW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKKyAgICBzZXRCdXR0
b25TaXplKHN0eWxlKTsKKyAgICBzZXRCdXR0b25QYWRkaW5nKHN0eWxlKTsKK30KKwordm9pZCBS
ZW5kZXJUaGVtZVF0TW9iaWxlOjpzZXRCdXR0b25QYWRkaW5nKFJlbmRlclN0eWxlKiBzdHlsZSkg
Y29uc3QKK3sKKyAgICBpZiAoIXN0eWxlKQorICAgICAgICByZXR1cm47CisgICAgc3R5bGUtPnNl
dFBhZGRpbmdMZWZ0KExlbmd0aChidXR0b25QYWRkaW5nTGVmdCwgRml4ZWQpKTsKKyAgICBzdHls
ZS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aChidXR0b25QYWRkaW5nUmlnaHQsIEZpeGVkKSk7Cisg
ICAgc3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKGJ1dHRvblBhZGRpbmdUb3AsIEZpeGVkKSk7
CisgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKGJ1dHRvblBhZGRpbmdCb3R0b20s
IEZpeGVkKSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVRdE1vYmlsZTo6cGFpbnRCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCit7Cisg
ICAgU3R5bGVQYWludGVyTW9iaWxlIHAodGhpcywgaSk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkK
KyAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UgPSBvLT5z
dHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgaWYgKGFwcGVhcmFuY2UgPT0gUHVzaEJ1dHRvblBh
cnQgfHwgYXBwZWFyYW5jZSA9PSBCdXR0b25QYXJ0KSB7CisgICAgICAgIHAuZHJhd1B1c2hCdXR0
b24ociwgaXNQcmVzc2VkKG8pLCBpc0VuYWJsZWQobykpOworICAgIH0gZWxzZSBpZiAoYXBwZWFy
YW5jZSA9PSBSYWRpb1BhcnQpCisgICAgICAgcC5kcmF3UmFkaW9CdXR0b24ociwgaXNDaGVja2Vk
KG8pLCBpc0VuYWJsZWQobykpOworICAgIGVsc2UgaWYgKGFwcGVhcmFuY2UgPT0gQ2hlY2tib3hQ
YXJ0KQorICAgICAgIHAuZHJhd0NoZWNrQm94KHIsIGlzQ2hlY2tlZChvKSwgaXNFbmFibGVkKG8p
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZVF0TW9iaWxlOjph
ZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50KikgY29uc3QKK3sKKyAgICAvLyBSZXNldHRpbmcgdGhlIHN0eWxlIGxpa2UgdGhpcyBs
ZWFkcyB0byBkaWZmZXJlbmNlcyBsaWtlOgorICAgIC8vIC0gUmVuZGVyVGV4dENvbnRyb2wge0lO
UFVUfSBhdCAoMiwyKSBzaXplIDE2OHgyNSBbYmdjb2xvcj0jRkZGRkZGXSBib3JkZXI6ICgycHgg
aW5zZXQgIzAwMDAwMCldCisgICAgLy8gKyBSZW5kZXJUZXh0Q29udHJvbCB7SU5QVVR9IGF0ICgy
LDIpIHNpemUgMTY2eDI2CisgICAgLy8gaW4gbGF5b3V0IHRlc3RzIHdoZW4gYSBDU1Mgc3R5bGUg
aXMgYXBwbGllZCB0aGF0IGRvZXNuJ3QgYWZmZWN0IGJhY2tncm91bmQgY29sb3IsIGJvcmRlciBv
cgorICAgIC8vIHBhZGRpbmcuIEp1c3Qgd29ydGgga2VlcGluZyBpbiBtaW5kIQorICAgIHN0eWxl
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBzdHlsZS0+cmVz
ZXRCb3JkZXIoKTsKKyAgICBzdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoZnJhbWVXaWR0aCk7Cisg
ICAgc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgoZnJhbWVXaWR0aCk7CisgICAgc3R5bGUtPnNl
dEJvcmRlckJvdHRvbVdpZHRoKGZyYW1lV2lkdGgpOworICAgIHN0eWxlLT5zZXRCb3JkZXJMZWZ0
V2lkdGgoZnJhbWVXaWR0aCk7CisgICAgc3R5bGUtPnJlc2V0UGFkZGluZygpOworICAgIGNvbXB1
dGVTaXplQmFzZWRPblN0eWxlKHN0eWxlKTsKKyAgICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQoTGVu
Z3RoKHRleHRGaWVsZFBhZGRpbmcsIEZpeGVkKSk7CisgICAgc3R5bGUtPnNldFBhZGRpbmdSaWdo
dChMZW5ndGgodGV4dEZpZWxkUGFkZGluZywgRml4ZWQpKTsKK30KKworYm9vbCBSZW5kZXJUaGVt
ZVF0TW9iaWxlOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5m
byYgaSwgY29uc3QgSW50UmVjdCYgcikKK3sKKyAgICBTdHlsZVBhaW50ZXJNb2JpbGUgcCh0aGlz
LCBpKTsKKyAgICBpZiAoIXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAg
aWYgKGFwcGVhcmFuY2UgIT0gVGV4dEZpZWxkUGFydAorICAgICAgICAmJiBhcHBlYXJhbmNlICE9
IFNlYXJjaEZpZWxkUGFydAorICAgICAgICAmJiBhcHBlYXJhbmNlICE9IFRleHRBcmVhUGFydCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBOb3cgcGFpbnQgdGhlIHRleHQgZmllbGQu
CisgICAgaWYgKGFwcGVhcmFuY2UgPT0gVGV4dEFyZWFQYXJ0KSB7CisgICAgICAgIGNvbnN0IGJv
b2wgcHJldmlvdXNBbnRpYWxpYXNpbmcgPSBwLnBhaW50ZXItPnRlc3RSZW5kZXJIaW50KFFQYWlu
dGVyOjpBbnRpYWxpYXNpbmcpOworICAgICAgICBwLnBhaW50ZXItPnNldFJlbmRlckhpbnQoUVBh
aW50ZXI6OkFudGlhbGlhc2luZyk7CisgICAgICAgIHAucGFpbnRlci0+c2V0UGVuKGJvcmRlclBl
bigpKTsKKyAgICAgICAgcC5wYWludGVyLT5zZXRCcnVzaChRdDo6d2hpdGUpOworICAgICAgICBj
b25zdCBpbnQgcmFkaXVzID0gY2hlY2tCb3hXaWR0aCAqIHJhZGl1c0ZhY3RvcjsKKyAgICAgICAg
cC5wYWludGVyLT5kcmF3Um91bmRlZFJlY3QociwgcmFkaXVzLCByYWRpdXMpOworCisgICAgICAg
IGlmIChpc0ZvY3VzZWQobykpIHsKKyAgICAgICAgICAgIFFQZW4gZm9jdXNQZW4oaGlnaGxpZ2h0
Q29sb3IsIDEuMCwgUXQ6OlNvbGlkTGluZSwgUXQ6OlJvdW5kQ2FwLCBRdDo6Um91bmRKb2luKTsK
KyAgICAgICAgICAgIHAucGFpbnRlci0+c2V0UGVuKGZvY3VzUGVuKTsKKyAgICAgICAgICAgIHAu
cGFpbnRlci0+c2V0QnJ1c2goUXQ6Ok5vQnJ1c2gpOworICAgICAgICAgICAgcC5wYWludGVyLT5k
cmF3Um91bmRlZFJlY3QociwgcmFkaXVzLCByYWRpdXMpOworICAgICAgICB9CisgICAgICAgIHAu
cGFpbnRlci0+c2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFsaWFzaW5nLCBwcmV2aW91c0Fu
dGlhbGlhc2luZyk7CisgICAgfSBlbHNlCisgICAgICAgIHAuZHJhd0xpbmVFZGl0KHIsIGlzRm9j
dXNlZChvKSwgaXNFbmFibGVkKG8pKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVu
ZGVyVGhlbWVRdE1vYmlsZTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit7CisgICAg
UmVuZGVyVGhlbWVRdDo6YWRqdXN0TWVudUxpc3RTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwg
ZSk7CisgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aChtZW51TGlzdFBhZGRpbmcsIEZp
eGVkKSk7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVRdE1vYmlsZTo6c2V0UG9wdXBQYWRkaW5nKFJl
bmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK3sKKyAgICBjb25zdCBpbnQgcGFkZGluZ0xlZnQgPSA0
OworICAgIGNvbnN0IGludCBwYWRkaW5nUmlnaHQgPSBzdHlsZS0+d2lkdGgoKS5pc0ZpeGVkKCkg
fHwgc3R5bGUtPndpZHRoKCkuaXNQZXJjZW50KCkgPyA1IDogODsKKworICAgIHN0eWxlLT5zZXRQ
YWRkaW5nTGVmdChMZW5ndGgocGFkZGluZ0xlZnQsIEZpeGVkKSk7CisgICAgc3R5bGUtPnNldFBh
ZGRpbmdSaWdodChMZW5ndGgocGFkZGluZ1JpZ2h0ICsgYXJyb3dCb3hXaWR0aCwgRml4ZWQpKTsK
KworICAgIHN0eWxlLT5zZXRQYWRkaW5nVG9wKExlbmd0aCgyLCBGaXhlZCkpOworICAgIHN0eWxl
LT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCgyLCBGaXhlZCkpOworfQorCitib29sIFJlbmRlclRo
ZW1lUXRNb2JpbGU6OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgU3R5bGVQYWludGVyTW9iaWxlIHAodGhp
cywgaSk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBwLmRyYXdDb21ib0JveChyLCBjaGVja011bHRpcGxlKG8pLCBpc0VuYWJsZWQobykpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0TW9iaWxlOjpwYWludE1lbnVM
aXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAg
U3R5bGVQYWludGVyTW9iaWxlIHAodGhpcywgaSk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBwLmRyYXdDb21ib0JveChyLCBjaGVja011bHRpcGxl
KG8pLCBpc0VuYWJsZWQobykpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxF
KFBST0dSRVNTX0VMRU1FTlQpCitkb3VibGUgUmVuZGVyVGhlbWVRdE1vYmlsZTo6YW5pbWF0aW9u
RHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MpIGNv
bnN0Cit7CisgICAgaWYgKHJlbmRlclByb2dyZXNzLT5pc0RldGVybWluYXRlKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIC8vIE91ciBhbmltYXRpb24gZ29lcyBiYWNrIGFuZCBmb3J0aCBzbyB3
ZSBuZWVkIHRvIG1ha2UgaXQgbGFzdCB0d2ljZSBhcyBsb25nCisgICAgLy8gYW5kIHdlIG5lZWQg
dGhlIG51bWVyYXRvciB0byBiZSBhbiBvZGQgbnVtYmVyIHRvIGVuc3VyZSB3ZSBnZXQgYSBwcm9n
cmVzcyB2YWx1ZSBvZiAwLjUuCisgICAgcmV0dXJuICgyICogcHJvZ3Jlc3NBbmltYXRpb25HcmFu
dWxhcml0eSArMSkgLyBwcm9ncmVzc0JhckNodW5rUGVyY2VudGFnZSAqIGFuaW1hdGlvblJlcGVh
dEludGVydmFsRm9yUHJvZ3Jlc3NCYXIocmVuZGVyUHJvZ3Jlc3MpOworfQorCitib29sIFJlbmRl
clRoZW1lUXRNb2JpbGU6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIHBpLCBjb25zdCBJbnRSZWN0JiByKQoreworICAgIGlmICghby0+aXNQcm9ncmVz
cygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFN0eWxlUGFpbnRlck1vYmlsZSBwKHRo
aXMsIHBpKTsKKyAgICBpZiAoIXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7
CisgICAgY29uc3QgYm9vbCBpc1JUTCA9IChyZW5kZXJQcm9ncmVzcy0+c3R5bGUoKS0+ZGlyZWN0
aW9uKCkgPT0gUlRMKTsKKworICAgIGlmIChyZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgp
KQorICAgICAgICBwLmRyYXdQcm9ncmVzcyhyLCByZW5kZXJQcm9ncmVzcy0+cG9zaXRpb24oKSwg
IWlzUlRMKTsKKyAgICBlbHNlCisgICAgICAgIHAuZHJhd1Byb2dyZXNzKHIsIHJlbmRlclByb2dy
ZXNzLT5hbmltYXRpb25Qcm9ncmVzcygpLCAhaXNSVEwsIHRydWUpOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKK2Jvb2wgUmVuZGVyVGhlbWVRdE1vYmlsZTo6cGFpbnRTbGlkZXJU
cmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgcikKK3sKKyAgICBTdHlsZVBh
aW50ZXJNb2JpbGUgcCh0aGlzLCBwaSk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBzbGlkZXIgPSB0b0hUTUxJbnB1
dEVsZW1lbnQoby0+bm9kZSgpKTsKKworICAgIGNvbnN0IGRvdWJsZSBtaW4gPSBzbGlkZXItPm1p
bmltdW0oKTsKKyAgICBjb25zdCBkb3VibGUgbWF4ID0gc2xpZGVyLT5tYXhpbXVtKCk7CisgICAg
Y29uc3QgZG91YmxlIHByb2dyZXNzID0gKG1heCAtIG1pbiA+IDApID8gKHNsaWRlci0+dmFsdWVB
c051bWJlcigpIC0gbWluKSAvIChtYXggLSBtaW4pIDogMDsKKworICAgIFFSZWN0IHJlY3Qocik7
CisgICAgY29uc3QgYm9vbCB2ZXJ0aWNhbCA9IChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0g
U2xpZGVyVmVydGljYWxQYXJ0KTsKKyAgICBjb25zdCBpbnQgZ3Jvb3ZlUGFkZGluZyA9IHZlcnRp
Y2FsID8gci53aWR0aCgpICogc2xpZGVyR3Jvb3ZlQm9yZGVyUmF0aW8gOiByLmhlaWdodCgpICog
c2xpZGVyR3Jvb3ZlQm9yZGVyUmF0aW87CisgICAgaWYgKHZlcnRpY2FsKSB7CisgICAgICAgIHJl
Y3QuYWRqdXN0KGdyb292ZVBhZGRpbmcsIDAsIC1ncm9vdmVQYWRkaW5nLCAwKTsKKyAgICAgICAg
Ly8gRGlyZWN0aW9uIGlzIGlnbm9yZWQgb24gdmVydGljYWwgc2xpZGVycyBhbmQgd2UgYXNzdW1l
IExUUi4KKyAgICAgICAgcC5kcmF3UHJvZ3Jlc3MocmVjdCwgcHJvZ3Jlc3MsIHRydWUsIC8qYW5p
bWF0ZWQgPSAqLyBmYWxzZSwgdmVydGljYWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlY3Qu
YWRqdXN0KDAsIGdyb292ZVBhZGRpbmcsIDAsIC1ncm9vdmVQYWRkaW5nKTsKKyAgICAgICAgcC5k
cmF3UHJvZ3Jlc3MocmVjdCwgcHJvZ3Jlc3MsIG8tPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSwgLyphbmltYXRlZCA9ICovIGZhbHNlLCB2ZXJ0aWNhbCk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlclRoZW1lUXRNb2JpbGU6OnBhaW50U2xpZGVy
VGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgU3R5bGVQ
YWludGVyTW9iaWxlIHAodGhpcywgcGkpOworICAgIGlmICghcC5pc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgcC5kcmF3U2xpZGVyVGh1bWIociwgaXNQcmVzc2VkKG8pKTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBSZW5kZXJUaGVtZVF0TW9iaWxlOjpjaGVj
a011bHRpcGxlKFJlbmRlck9iamVjdCogbykgY29uc3QKK3sKKyAgICBIVE1MU2VsZWN0RWxlbWVu
dCogc2VsZWN0ID0gbyA/IHRvSFRNTFNlbGVjdEVsZW1lbnQoby0+bm9kZSgpKSA6IDA7CisgICAg
cmV0dXJuIHNlbGVjdCA/IHNlbGVjdC0+bXVsdGlwbGUoKSA6IGZhbHNlOworfQorCit2b2lkIFJl
bmRlclRoZW1lUXRNb2JpbGU6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgY29uc3QgQ29udHJvbFBhcnQgcGFy
dCA9IHN0eWxlLT5hcHBlYXJhbmNlKCk7CisgICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jp
em9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7CisgICAgICAg
IGNvbnN0IGludCBzaXplID0gc2xpZGVyU2l6ZSAqIHN0eWxlLT5lZmZlY3RpdmVab29tKCk7Cisg
ICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6ZSwgRml4ZWQpKTsKKyAgICAgICAgc3R5
bGUtPnNldEhlaWdodChMZW5ndGgoc2l6ZSwgRml4ZWQpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
UmVuZGVyVGhlbWVRdDo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKHN0eWxlLCBlbGVtZW50KTsKK30K
KworfQorCisvLyB2aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmYyY2M5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmgKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgdGhlbWUgaW1wbGVtZW50YXRpb24gZm9yIGZvcm0gY29udHJv
bHMgaW4gV2ViQ29yZS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpZm5kZWYgUmVuZGVyVGhlbWVRdE1v
YmlsZV9oCisjZGVmaW5lIFJlbmRlclRoZW1lUXRNb2JpbGVfaAorCisjaW5jbHVkZSAiUmVuZGVy
VGhlbWVRdC5oIgorCisjaW5jbHVkZSA8UUJydXNoPgorI2luY2x1ZGUgPFFIYXNoPgorI2luY2x1
ZGUgPFFQaXhtYXBDYWNoZT4KKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRQ29sb3I7Citj
bGFzcyBRU2l6ZTsKK1FUX0VORF9OQU1FU1BBQ0UKKwordHlwZWRlZiBRUGl4bWFwQ2FjaGU6Oktl
eSBDYWNoZUtleTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJUaGVtZVF0
TW9iaWxlIDogcHVibGljIFJlbmRlclRoZW1lUXQgeworcHJpdmF0ZToKKyAgICBSZW5kZXJUaGVt
ZVF0TW9iaWxlKFBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVF0TW9iaWxlKCk7CisK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKFBhZ2Uq
KTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNv
bnN0IFJlbmRlclN0eWxlKiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OworCisgICAgdmlydHVhbCBpbnQgcG9w
dXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oUmVuZGVyU3R5bGUqKSBjb25zdDsKKworICAgIHZpcnR1
YWwgYm9vbCBkZWxlZ2F0ZXNNZW51TGlzdFJlbmRlcmluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKworICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIGZvY3VzIHJpbmcgdG8gYmUgZHJhd24gYnkg
dGhlIGdyYXBoaWNzIGNvbnRleHQgc28gd2UKKyAgICAvLyBhbHdheXMgY2xhaW0gdG8gc3VwcG9y
dCBpdCBpbiB0aGUgdGhlbWUuCisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgYSB1c2FiaWxp
dHkgcHJvYmxlbSBpbiB0aGUgY2FzZSBvZiBjb250ZW50ZWRpdGFibGUgZGl2cy4KKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGb2N1c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisKK3Byb3RlY3RlZDoKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0
b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKKworICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChS
ZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHls
ZSosIEVsZW1lbnQqKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKKyNp
ZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKKyAgICAvLyBSZXR1cm5zIHRoZSBkdXJhdGlvbiBv
ZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgorICAgIHZpcnR1YWwgZG91Ymxl
IGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisjZW5kaWYKKworICAgIHZpcnR1YWwgYm9vbCBw
YWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZVNpemVCYXNlZE9uU3R5bGUoUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFFTaGFyZWRQb2ludGVyPFN0eWxlUGFpbnRlcj4gZ2V0U3R5bGVQYWludGVyKGNvbnN0IFBhaW50
SW5mbyYpOworCisgICAgdmlydHVhbCBRUGFsZXR0ZSBjb2xvclBhbGV0dGUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBib29sIGNoZWNrTXVsdGlwbGUoUmVuZGVyT2JqZWN0KikgY29uc3Q7Cisg
ICAgdm9pZCBzZXRCdXR0b25QYWRkaW5nKFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgdm9pZCBz
ZXRQb3B1cFBhZGRpbmcoUmVuZGVyU3R5bGUqKSBjb25zdDsKK307CisKK3N0cnVjdCBLZXlJZGVu
dGlmaWVyIHsKKworICAgIEtleUlkZW50aWZpZXIoKQorICAgICAgICA6IHR5cGUoVW5kZWZpbmVk
KQorICAgICAgICAsIHdpZHRoKDApCisgICAgICAgICwgaGVpZ2h0KDApCisgICAgICAgICwgdHJh
aXQxKDApCisgICAgICAgICwgdHJhaXQyKDApCisgICAgICAgICwgdHJhaXQzKDApCisgICAgewor
ICAgIH0KKworICAgIGVudW0gQ29udHJvbFR5cGUgeworICAgICAgICBVbmRlZmluZWQsCisgICAg
ICAgIENoZWNrQm94LAorICAgICAgICBSYWRpbywKKyAgICAgICAgQ29tYm9CdXR0b24sCisgICAg
ICAgIExpbmVFZGl0LAorICAgICAgICBQdXNoQnV0dG9uLAorICAgICAgICBQcm9ncmVzcywKKyAg
ICAgICAgU2xpZGVyVGh1bWIKKyAgICB9OworCisgICAgQ29udHJvbFR5cGUgdHlwZSA6IDM7Cisg
ICAgdWludCB3aWR0aCA6IDExOworICAgIHVpbnQgaGVpZ2h0IDogOTsKKyAgICB1aW50IHRyYWl0
MSA6IDE7CisgICAgdWludCB0cmFpdDIgOiAxOworICAgIHVpbnQgdHJhaXQzIDogNzsKKworICAg
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5SWRlbnRpZmllciYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gKHR5cGUgPT0gb3RoZXIudHlwZSAmJiB3aWR0aCA9PSBv
dGhlci53aWR0aAorICAgICAgICAgICAgICAgICYmIGhlaWdodCA9PSBvdGhlci5oZWlnaHQgJiYg
dHJhaXQxID09IG90aGVyLnRyYWl0MQorICAgICAgICAgICAgICAgICYmIHRyYWl0MiA9PSBvdGhl
ci50cmFpdDIgJiYgdHJhaXQzID09IG90aGVyLnRyYWl0Myk7CisgICAgfQorfTsKKworY2xhc3Mg
U3R5bGVQYWludGVyTW9iaWxlIDogcHVibGljIFN0eWxlUGFpbnRlciB7CisKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBTdHlsZVBhaW50ZXJNb2JpbGUoUmVuZGVyVGhlbWVRdE1vYmlsZSosIGNvbnN0
IFBhaW50SW5mbyYpOworICAgIH5TdHlsZVBhaW50ZXJNb2JpbGUoKTsKKworICAgIHZvaWQgZHJh
d0xpbmVFZGl0KGNvbnN0IFFSZWN0JiwgYm9vbCBmb2N1c2VkLCBib29sIGVuYWJsZWQgPSB0cnVl
KTsKKyAgICB2b2lkIGRyYXdDaGVja0JveChjb25zdCBRUmVjdCYsIGJvb2wgY2hlY2tlZCwgYm9v
bCBlbmFibGVkID0gdHJ1ZSk7CisgICAgdm9pZCBkcmF3UmFkaW9CdXR0b24oY29uc3QgUVJlY3Qm
LCBib29sIGNoZWNrZWQsIGJvb2wgZW5hYmxlZCA9IHRydWUpOworICAgIHZvaWQgZHJhd1B1c2hC
dXR0b24oY29uc3QgUVJlY3QmLCBib29sIHN1bmtlbiwgYm9vbCBlbmFibGVkID0gdHJ1ZSk7Cisg
ICAgdm9pZCBkcmF3Q29tYm9Cb3goY29uc3QgUVJlY3QmLCBib29sIG11bHRpcGxlLCBib29sIGVu
YWJsZWQgPSB0cnVlKTsKKyAgICB2b2lkIGRyYXdQcm9ncmVzcyhjb25zdCBRUmVjdCYsIGRvdWJs
ZSBwcm9ncmVzcywgYm9vbCBsZWZ0VG9SaWdodCA9IHRydWUsIGJvb2wgYW5pbWF0ZWQgPSBmYWxz
ZSwgYm9vbCB2ZXJ0aWNhbCA9IGZhbHNlKSBjb25zdDsKKyAgICB2b2lkIGRyYXdTbGlkZXJUaHVt
Yihjb25zdCBRUmVjdCYsIGJvb2wgcHJlc3NlZCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBkcmF3Q2hlY2thYmxlQmFja2dyb3VuZChRUGFpbnRlciosIGNvbnN0IFFSZWN0JiwgYm9vbCBj
aGVja2VkLCBib29sIGVuYWJsZWQpIGNvbnN0OworICAgIHZvaWQgZHJhd0NoZWNrZXIoUVBhaW50
ZXIqLCBjb25zdCBRUmVjdCYsIGNvbnN0IFFDb2xvciYpIGNvbnN0OworICAgIFFQaXhtYXAgZmlu
ZENoZWNrQm94KGNvbnN0IFFTaXplJiwgYm9vbCBjaGVja2VkLCBib29sIGVuYWJsZWQpIGNvbnN0
OworCisgICAgdm9pZCBkcmF3UmFkaW8oUVBhaW50ZXIqLCBjb25zdCBRU2l6ZSYsIGJvb2wgY2hl
Y2tlZCwgYm9vbCBlbmFibGVkKSBjb25zdDsKKyAgICBRUGl4bWFwIGZpbmRSYWRpbyhjb25zdCBR
U2l6ZSYsIGJvb2wgY2hlY2tlZCwgYm9vbCBlbmFibGVkKSBjb25zdDsKKworICAgIFFTaXplRiBn
ZXRCdXR0b25JbWFnZVNpemUoaW50ICwgYm9vbCBtdWx0aXBsZSkgY29uc3Q7CisgICAgdm9pZCBk
cmF3U2ltcGxlQ29tYm9CdXR0b24oUVBhaW50ZXIqLCBjb25zdCBRU2l6ZUYmLCBjb25zdCBRQ29s
b3ImKSBjb25zdDsKKyAgICB2b2lkIGRyYXdNdWx0aXBsZUNvbWJvQnV0dG9uKFFQYWludGVyKiwg
Y29uc3QgUVNpemVGJiwgY29uc3QgUUNvbG9yJikgY29uc3Q7CisgICAgUVBpeG1hcCBmaW5kQ29t
Ym9CdXR0b24oY29uc3QgUVNpemUmLCBib29sIG11bHRpcGxlLCBib29sIGVuYWJsZWQpIGNvbnN0
OworCisgICAgUVBpeG1hcCBmaW5kTGluZUVkaXQoY29uc3QgUVNpemUmLCBib29sIGZvY3VzZWQp
IGNvbnN0OworICAgIFFQaXhtYXAgZmluZFB1c2hCdXR0b24oY29uc3QgUVNpemUmLCBib29sIHN1
bmtlbiwgYm9vbCBlbmFibGVkKSBjb25zdDsKKworICAgIFFTaXplIHNpemVGb3JQYWludGVyU2Nh
bGUoY29uc3QgUVJlY3QmKSBjb25zdDsKKworICAgIHN0YXRpYyBib29sIGZpbmRDYWNoZWRDb250
cm9sKGNvbnN0IEtleUlkZW50aWZpZXImLCBRUGl4bWFwKik7CisgICAgc3RhdGljIHZvaWQgaW5z
ZXJ0SW50b0NhY2hlKGNvbnN0IEtleUlkZW50aWZpZXImLCBjb25zdCBRUGl4bWFwJik7CisKKyAg
ICBib29sIG1fcHJldmlvdXNTbW9vdGhQaXhtYXBUcmFuc2Zvcm07CisKKyAgICBRX0RJU0FCTEVf
Q09QWShTdHlsZVBhaW50ZXJNb2JpbGUpCit9OworCit9CisKKyNlbmRpZiAvLyBSZW5kZXJUaGVt
ZVF0TW9iaWxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1J1bkxv
b3BRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SdW5Mb29wUXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMWJkNWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SdW5Mb29wUXQuY3BwCkBAIC0wLDAgKzEsMTY2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJ1bkxvb3AuaCIKKworI2luY2x1ZGUgPFFBYnN0cmFjdEV2ZW50RGlzcGF0Y2hlcj4KKyNp
bmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFNZXRhTWV0aG9kPgorI2luY2x1
ZGUgPFFNZXRhT2JqZWN0PgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVRpbWVyRXZl
bnQ+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUnVuTG9vcDo6VGltZXJPYmplY3Qg
OiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBUaW1lck9iamVj
dChSdW5Mb29wKiBydW5Mb29wKSA6IG1fcnVuTG9vcChydW5Mb29wKQorICAgIHsKKyAgICAgICAg
aW50IG1ldGhvZEluZGV4ID0gbWV0YU9iamVjdCgpLT5pbmRleE9mTWV0aG9kKCJwZXJmb3JtV29y
aygpIik7CisgICAgICAgIG1fbWV0aG9kID0gbWV0YU9iamVjdCgpLT5tZXRob2QobWV0aG9kSW5k
ZXgpOworICAgIH0KKworICAgIFFfU0xPVCB2b2lkIHBlcmZvcm1Xb3JrKCkgeyBtX3J1bkxvb3At
PnBlcmZvcm1Xb3JrKCk7IH0KKyAgICBpbmxpbmUgdm9pZCB3YWtlVXAoKSB7IG1fbWV0aG9kLmlu
dm9rZSh0aGlzLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7IH0KKworcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldmVudCkKKyAgICB7CisgICAgICAg
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZChtX3J1bkxvb3AsIGV2ZW50LT50aW1lcklk
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CisgICAgUU1l
dGFNZXRob2QgbV9tZXRob2Q7Cit9OworCitzdGF0aWMgUUV2ZW50TG9vcCogY3VycmVudEV2ZW50
TG9vcDsKKwordm9pZCBSdW5Mb29wOjpydW4oKQoreworICAgIHN0YXRpYyBib29sIG1haW5FdmVu
dExvb3BJc1J1bm5pbmcgPSBmYWxzZTsKKyAgICBpZiAoIW1haW5FdmVudExvb3BJc1J1bm5pbmcp
IHsKKyAgICAgICAgbWFpbkV2ZW50TG9vcElzUnVubmluZyA9IHRydWU7CisgICAgICAgIFFDb3Jl
QXBwbGljYXRpb246OmV4ZWMoKTsKKyAgICAgICAgbWFpbkV2ZW50TG9vcElzUnVubmluZyA9IGZh
bHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIFFFdmVudExvb3AgZXZlbnRMb29wOworCisgICAg
ICAgIFFFdmVudExvb3AqIHByZXZpb3VzRXZlbnRMb29wID0gY3VycmVudEV2ZW50TG9vcDsKKyAg
ICAgICAgY3VycmVudEV2ZW50TG9vcCA9ICZldmVudExvb3A7CisKKyAgICAgICAgZXZlbnRMb29w
LmV4ZWMoKTsKKworICAgICAgICBjdXJyZW50RXZlbnRMb29wID0gcHJldmlvdXNFdmVudExvb3A7
CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnN0b3AoKQoreworICAgIGlmIChjdXJyZW50RXZl
bnRMb29wKQorICAgICAgICBjdXJyZW50RXZlbnRMb29wLT5leGl0KCk7CisgICAgZWxzZQorICAg
ICAgICBRQ29yZUFwcGxpY2F0aW9uOjpleGl0KCk7Cit9CisKK1J1bkxvb3A6OlJ1bkxvb3AoKQor
ICAgIDogbV90aW1lck9iamVjdChuZXcgVGltZXJPYmplY3QodGhpcykpCit7Cit9CisKK1J1bkxv
b3A6On5SdW5Mb29wKCkKK3sKKyAgICBkZWxldGUgbV90aW1lck9iamVjdDsKK30KKwordm9pZCBS
dW5Mb29wOjp3YWtlVXAoKQoreworICAgIG1fdGltZXJPYmplY3QtPndha2VVcCgpOworfQorCisv
LyBSdW5Mb29wOjpUaW1lcgorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZChS
dW5Mb29wKiBydW5Mb29wLCBpbnQgSUQpCit7CisgICAgVGltZXJNYXA6Oml0ZXJhdG9yIGl0ID0g
cnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuZmluZChJRCk7CisgICAgQVNTRVJUKGl0ICE9IHJ1bkxv
b3AtPm1fYWN0aXZlVGltZXJzLmVuZCgpKTsKKyAgICBUaW1lckJhc2UqIHRpbWVyID0gaXQtPnZh
bHVlOworCisgICAgaWYgKCF0aW1lci0+bV9pc1JlcGVhdGluZykgeworICAgICAgICAvLyBTdG9w
IHRoZSB0aW1lciAoY2FsbGluZyBzdG9wIHdvdWxkIG5lZWQgYW5vdGhlciBoYXNoIHRhYmxlIGxv
b2t1cCkuCisgICAgICAgIHJ1bkxvb3AtPm1fYWN0aXZlVGltZXJzLnJlbW92ZShpdCk7CisgICAg
ICAgIHJ1bkxvb3AtPm1fdGltZXJPYmplY3QtPmtpbGxUaW1lcih0aW1lci0+bV9JRCk7CisgICAg
ICAgIHRpbWVyLT5tX0lEID0gMDsKKyAgICB9CisKKyAgICB0aW1lci0+ZmlyZWQoKTsKK30KKwor
UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCogcnVuTG9vcCkKKyAgICA6IG1f
cnVuTG9vcChydW5Mb29wKQorICAgICwgbV9JRCgwKQorICAgICwgbV9pc1JlcGVhdGluZyhmYWxz
ZSkKK3sKK30KKworUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9w
KCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgbmV4dEZpcmVJ
bnRlcnZhbCwgYm9vbCByZXBlYXQpCit7CisgICAgc3RvcCgpOworICAgIGludCBtaWxsaXMgPSBz
dGF0aWNfY2FzdDxpbnQ+KG5leHRGaXJlSW50ZXJ2YWwgKiAxMDAwKTsKKyAgICBtX2lzUmVwZWF0
aW5nID0gcmVwZWF0OworICAgIG1fSUQgPSBtX3J1bkxvb3AtPm1fdGltZXJPYmplY3QtPnN0YXJ0
VGltZXIobWlsbGlzKTsKKyAgICBBU1NFUlQobV9JRCk7CisgICAgbV9ydW5Mb29wLT5tX2FjdGl2
ZVRpbWVycy5zZXQobV9JRCwgdGhpcyk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpz
dG9wKCkKK3sKKyAgICBpZiAoIW1fSUQpCisgICAgICAgIHJldHVybjsKKyAgICBUaW1lck1hcDo6
aXRlcmF0b3IgaXQgPSBtX3J1bkxvb3AtPm1fYWN0aXZlVGltZXJzLmZpbmQobV9JRCk7CisgICAg
aWYgKGl0ID09IG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcnVuTG9vcC0+bV9hY3RpdmVUaW1lcnMucmVtb3ZlKGl0KTsKKyAgICBtX3J1
bkxvb3AtPm1fdGltZXJPYmplY3QtPmtpbGxUaW1lcihtX0lEKTsKKyAgICBtX0lEID0gMDsKK30K
KworYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9JRDsKK30KKworI2luY2x1ZGUgIlJ1bkxvb3BRdC5tb2MiCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbFZp
ZXdRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZGZkMjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxWaWV3UXQuY3BwCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IERpcmsgTXVlbGxlciA8bXVl
bGxlckBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2Rl
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtQWRkQ2hpbGQoV2lkZ2V0KikKK3sKK30KKwor
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVJlbW92ZUNoaWxkKFdpZGdldCogY2hpbGQpCit7Cisg
ICAgY2hpbGQtPmhpZGUoKTsKK30KKworfQorLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUVN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUVN0eWxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODk5NDU3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRU3R5bGUuY3BwCkBA
IC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENv
bXB1dGluZyBTZXJ2aWNlcyBJbmMuIDxpbmZvQHN0YWlrb3MubmV0PgorICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVRU3R5bGUuaCIKKworI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUg
IlJlbmRlclRoZW1lUVN0eWxlLmgiCisjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUg
IlNjcm9sbGJhci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Njcm9sbGJhclRoZW1lUVN0
eWxlOjpTY3JvbGxiYXJUaGVtZVFTdHlsZSgpCit7CisgICAgbV9xU3R5bGUgPSBhZG9wdFB0cihS
ZW5kZXJUaGVtZVFTdHlsZTo6c3R5bGVGYWN0b3J5KCkoLypwYWdlKi8gMCkpOworfQorCitTY3Jv
bGxiYXJUaGVtZVFTdHlsZTo6flNjcm9sbGJhclRoZW1lUVN0eWxlKCkKK3sKK30KKworc3RhdGlj
IFFTdHlsZUZhY2FkZTo6U3ViQ29udHJvbCBzY1BhcnQoY29uc3QgU2Nyb2xsYmFyUGFydCYgcGFy
dCkKK3sKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIE5vUGFydDoKKyAgICAgICAgcmV0
dXJuIFFTdHlsZUZhY2FkZTo6U0NfTm9uZTsKKyAgICBjYXNlIEJhY2tCdXR0b25TdGFydFBhcnQ6
CisgICAgY2FzZSBCYWNrQnV0dG9uRW5kUGFydDoKKyAgICAgICAgcmV0dXJuIFFTdHlsZUZhY2Fk
ZTo6U0NfU2Nyb2xsQmFyU3ViTGluZTsKKyAgICBjYXNlIEJhY2tUcmFja1BhcnQ6CisgICAgICAg
IHJldHVybiBRU3R5bGVGYWNhZGU6OlNDX1Njcm9sbEJhclN1YlBhZ2U7CisgICAgY2FzZSBUaHVt
YlBhcnQ6CisgICAgICAgIHJldHVybiBRU3R5bGVGYWNhZGU6OlNDX1Njcm9sbEJhclNsaWRlcjsK
KyAgICBjYXNlIEZvcndhcmRUcmFja1BhcnQ6CisgICAgICAgIHJldHVybiBRU3R5bGVGYWNhZGU6
OlNDX1Njcm9sbEJhckFkZFBhZ2U7CisgICAgY2FzZSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0Ogor
ICAgIGNhc2UgRm9yd2FyZEJ1dHRvbkVuZFBhcnQ6CisgICAgICAgIHJldHVybiBRU3R5bGVGYWNh
ZGU6OlNDX1Njcm9sbEJhckFkZExpbmU7CisgICAgfQorCisgICAgcmV0dXJuIFFTdHlsZUZhY2Fk
ZTo6U0NfTm9uZTsKK30KKworc3RhdGljIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFyUGFydChjb25z
dCBRU3R5bGVGYWNhZGU6OlN1YkNvbnRyb2wmIHNjKQoreworICAgIHN3aXRjaCAoc2MpIHsKKyAg
ICBjYXNlIFFTdHlsZUZhY2FkZTo6U0NfTm9uZToKKyAgICAgICAgcmV0dXJuIE5vUGFydDsKKyAg
ICBjYXNlIFFTdHlsZUZhY2FkZTo6U0NfU2Nyb2xsQmFyU3ViTGluZToKKyAgICAgICAgcmV0dXJu
IEJhY2tCdXR0b25TdGFydFBhcnQ7CisgICAgY2FzZSBRU3R5bGVGYWNhZGU6OlNDX1Njcm9sbEJh
clN1YlBhZ2U6CisgICAgICAgIHJldHVybiBCYWNrVHJhY2tQYXJ0OworICAgIGNhc2UgUVN0eWxl
RmFjYWRlOjpTQ19TY3JvbGxCYXJTbGlkZXI6CisgICAgICAgIHJldHVybiBUaHVtYlBhcnQ7Cisg
ICAgY2FzZSBRU3R5bGVGYWNhZGU6OlNDX1Njcm9sbEJhckFkZFBhZ2U6CisgICAgICAgIHJldHVy
biBGb3J3YXJkVHJhY2tQYXJ0OworICAgIGNhc2UgUVN0eWxlRmFjYWRlOjpTQ19TY3JvbGxCYXJB
ZGRMaW5lOgorICAgICAgICByZXR1cm4gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydDsKKyAgICB9Cisg
ICAgcmV0dXJuIE5vUGFydDsKK30KKworc3RhdGljIFFTdHlsZUZhY2FkZU9wdGlvbiBpbml0U2xp
ZGVyU3R5bGVPcHRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgUU9iamVjdCog
d2lkZ2V0ID0gMCkKK3sKKyAgICBRU3R5bGVGYWNhZGVPcHRpb24gb3B0OworICAgIGlmICh3aWRn
ZXQpIHsKKyAgICAgICAgb3B0LnBhbGV0dGUgPSB3aWRnZXQtPnByb3BlcnR5KCJwYWxldHRlIiku
dmFsdWU8UVBhbGV0dGU+KCk7CisgICAgICAgIG9wdC5yZWN0ID0gd2lkZ2V0LT5wcm9wZXJ0eSgi
cmVjdCIpLnZhbHVlPFFSZWN0PigpOworICAgICAgICBvcHQuZGlyZWN0aW9uID0gc3RhdGljX2Nh
c3Q8UXQ6OkxheW91dERpcmVjdGlvbj4od2lkZ2V0LT5wcm9wZXJ0eSgibGF5b3V0RGlyZWN0aW9u
IikudG9JbnQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG9wdC5zdGF0ZSB8PSBRU3R5bGVGYWNh
ZGU6OlN0YXRlX0FjdGl2ZTsKKworICAgIG9wdC5zdGF0ZSAmPSB+UVN0eWxlRmFjYWRlOjpTdGF0
ZV9IYXNGb2N1czsKKworICAgIG9wdC5yZWN0ID0gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKKyAg
ICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpCisgICAgICAgIG9wdC5zdGF0ZSB8PSBRU3R5bGVG
YWNhZGU6OlN0YXRlX0VuYWJsZWQ7CisgICAgaWYgKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSAh
PSBSZWd1bGFyU2Nyb2xsYmFyKQorICAgICAgICBvcHQuc3RhdGUgfD0gUVN0eWxlRmFjYWRlOjpT
dGF0ZV9NaW5pOworICAgIG9wdC5zbGlkZXIub3JpZW50YXRpb24gPSAoc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSA/IFF0OjpWZXJ0aWNhbCA6IFF0OjpIb3Jp
em9udGFsOworCisgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKQorICAgICAgICBvcHQuc3RhdGUgfD0gUVN0eWxlRmFjYWRlOjpTdGF0ZV9Ib3Jp
em9udGFsOworICAgIGVsc2UKKyAgICAgICAgb3B0LnN0YXRlICY9IH5RU3R5bGVGYWNhZGU6OlN0
YXRlX0hvcml6b250YWw7CisKKyAgICBvcHQuc2xpZGVyLnZhbHVlID0gc2Nyb2xsYmFyLT52YWx1
ZSgpOworICAgIG9wdC5zbGlkZXIucG9zaXRpb24gPSBvcHQuc2xpZGVyLnZhbHVlOworICAgIG9w
dC5zbGlkZXIucGFnZVN0ZXAgPSBzY3JvbGxiYXItPnBhZ2VTdGVwKCk7CisgICAgb3B0LnNsaWRl
ci5zaW5nbGVTdGVwID0gc2Nyb2xsYmFyLT5saW5lU3RlcCgpOworICAgIG9wdC5zbGlkZXIubWlu
aW11bSA9IDA7CisgICAgb3B0LnNsaWRlci5tYXhpbXVtID0gcU1heCgwLCBzY3JvbGxiYXItPm1h
eGltdW0oKSk7CisgICAgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCA9IHNjcm9sbGJhci0+cHJl
c3NlZFBhcnQoKTsKKyAgICBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0ID0gc2Nyb2xsYmFyLT5o
b3ZlcmVkUGFydCgpOworICAgIGlmIChwcmVzc2VkUGFydCAhPSBOb1BhcnQpIHsKKyAgICAgICAg
b3B0LnNsaWRlci5hY3RpdmVTdWJDb250cm9scyA9IHNjUGFydChzY3JvbGxiYXItPnByZXNzZWRQ
YXJ0KCkpOworICAgICAgICBpZiAocHJlc3NlZFBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCB8
fCBwcmVzc2VkUGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0CisgICAgICAgICAgICB8fCBw
cmVzc2VkUGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCB8fCBwcmVzc2VkUGFydCA9PSBGb3J3YXJk
QnV0dG9uRW5kUGFydAorICAgICAgICAgICAgfHwgcHJlc3NlZFBhcnQgPT0gVGh1bWJQYXJ0KQor
ICAgICAgICAgICAgb3B0LnN0YXRlIHw9IFFTdHlsZUZhY2FkZTo6U3RhdGVfU3Vua2VuOworICAg
IH0gZWxzZQorICAgICAgICBvcHQuc2xpZGVyLmFjdGl2ZVN1YkNvbnRyb2xzID0gc2NQYXJ0KGhv
dmVyZWRQYXJ0KTsKKyAgICBpZiAoaG92ZXJlZFBhcnQgIT0gTm9QYXJ0KQorICAgICAgICBvcHQu
c3RhdGUgfD0gUVN0eWxlRmFjYWRlOjpTdGF0ZV9Nb3VzZU92ZXI7CisgICAgcmV0dXJuIG9wdDsK
K30KKworYm9vbCBTY3JvbGxiYXJUaGVtZVFTdHlsZTo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkKK3sKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT51cGRhdGluZ0Nv
bnRyb2xUaW50cygpKSB7CisgICAgICAgIHNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QoZGlydHlS
ZWN0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0eWxlUGFpbnRlclFT
dHlsZSBwKHRoaXMsIGdyYXBoaWNzQ29udGV4dCk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBwLnBhaW50ZXItPnNhdmUoKTsKKyAgICBwLnN0eWxl
T3B0aW9uID0gaW5pdFNsaWRlclN0eWxlT3B0aW9uKHNjcm9sbGJhciwgbV9xU3R5bGUtPndpZGdl
dEZvclBhaW50ZXIocC5wYWludGVyKSk7CisKKyAgICBwLnBhaW50ZXItPnNldENsaXBSZWN0KHAu
c3R5bGVPcHRpb24ucmVjdC5pbnRlcnNlY3RlZChkaXJ0eVJlY3QpLCBRdDo6SW50ZXJzZWN0Q2xp
cCk7CisgICAgcC5wYWludFNjcm9sbEJhcigpOworICAgIHAucGFpbnRlci0+cmVzdG9yZSgpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lUVN0eWxl
OjpoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbikKK3sKKyAgICBRU3R5bGVGYWNhZGVPcHRpb24gb3B0ID0gaW5pdFNsaWRlclN0
eWxlT3B0aW9uKHNjcm9sbGJhcik7CisgICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJhci0+
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KHBvc2l0aW9uKTsKKyAgICBvcHQucmVjdC5tb3Zl
VG8oUVBvaW50KDAsIDApKTsKKyAgICBRU3R5bGVGYWNhZGU6OlN1YkNvbnRyb2wgc2MgPSBtX3FT
dHlsZS0+aGl0VGVzdFNjcm9sbEJhcihvcHQsIHBvcyk7CisgICAgcmV0dXJuIHNjcm9sbGJhclBh
cnQoc2MpOworfQorCitib29sIFNjcm9sbGJhclRoZW1lUVN0eWxlOjpzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQp
Cit7CisgICAgLy8gTWlkZGxlIGNsaWNrIGNlbnRlcnMgc2xpZGVyIHRodW1iIChpZiBzdXBwb3J0
ZWQpLgorICAgIHJldHVybiBtX3FTdHlsZS0+c2Nyb2xsQmFyTWlkZGxlQ2xpY2tBYnNvbHV0ZVBv
c2l0aW9uU3R5bGVIaW50KCkgJiYgZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbjsKK30KKwor
dm9pZCBTY3JvbGxiYXJUaGVtZVFTdHlsZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCkKK3sKKyAgICAvLyBGSVhNRTogRG8gbW9y
ZSBwcmVjaXNlIGludmFsaWRhdGlvbi4KKyAgICBzY3JvbGxiYXItPmludmFsaWRhdGUoKTsKK30K
KworaW50IFNjcm9sbGJhclRoZW1lUVN0eWxlOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgY29udHJvbFNpemUpCit7CisgICAgY29uc3QgYm9vbCBtaW5pID0gY29udHJv
bFNpemUgIT0gUmVndWxhclNjcm9sbGJhcjsKKyAgICByZXR1cm4gbV9xU3R5bGUtPnNjcm9sbEJh
ckV4dGVudChtaW5pKTsKK30KKworaW50IFNjcm9sbGJhclRoZW1lUVN0eWxlOjp0aHVtYlBvc2l0
aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCit7CisgICAgaWYgKHNjcm9sbGJh
ci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZsb2F0IHBvcyA9IChmbG9hdClzY3JvbGxiYXItPmN1
cnJlbnRQb3MoKSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xs
YmFyKSkgLyBzY3JvbGxiYXItPm1heGltdW0oKTsKKyAgICAgICAgcmV0dXJuIChwb3MgPCAxICYm
IHBvcyA+IDApID8gMSA6IHBvczsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBTY3Jv
bGxiYXJUaGVtZVFTdHlsZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKK3sKKyAgICBRU3R5bGVGYWNhZGVPcHRpb24gb3B0ID0gaW5pdFNsaWRlclN0eWxlT3B0
aW9uKHNjcm9sbGJhcik7CisgICAgUVJlY3QgdGh1bWIgPSBtX3FTdHlsZS0+c2Nyb2xsQmFyU3Vi
Q29udHJvbFJlY3Qob3B0LCBRU3R5bGVGYWNhZGU6OlNDX1Njcm9sbEJhclNsaWRlcik7CisgICAg
cmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
dGh1bWIud2lkdGgoKSA6IHRodW1iLmhlaWdodCgpOworfQorCitpbnQgU2Nyb2xsYmFyVGhlbWVR
U3R5bGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKK3sK
KyAgICBRU3R5bGVGYWNhZGVPcHRpb24gb3B0ID0gaW5pdFNsaWRlclN0eWxlT3B0aW9uKHNjcm9s
bGJhcik7CisgICAgUVJlY3QgdHJhY2sgPSBtX3FTdHlsZS0+c2Nyb2xsQmFyU3ViQ29udHJvbFJl
Y3Qob3B0LCBRU3R5bGVGYWNhZGU6OlNDX1Njcm9sbEJhckdyb292ZSk7CisgICAgcmV0dXJuIHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdHJhY2sueCgp
IC0gc2Nyb2xsYmFyLT54KCkgOiB0cmFjay55KCkgLSBzY3JvbGxiYXItPnkoKTsKK30KKworaW50
IFNjcm9sbGJhclRoZW1lUVN0eWxlOjp0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQoreworICAgIFFTdHlsZUZhY2FkZU9wdGlvbiBvcHQgPSBpbml0U2xpZGVyU3R5
bGVPcHRpb24oc2Nyb2xsYmFyKTsKKyAgICBRUmVjdCB0cmFjayA9IG1fcVN0eWxlLT5zY3JvbGxC
YXJTdWJDb250cm9sUmVjdChvcHQsIFFTdHlsZUZhY2FkZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlKTsK
KyAgICByZXR1cm4gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIgPyB0cmFjay53aWR0aCgpIDogdHJhY2suaGVpZ2h0KCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVRU3R5bGU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgU3R5bGVQYWludGVyUVN0
eWxlIHAodGhpcywgY29udGV4dCk7CisgICAgaWYgKCFwLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcC5wYWludFNjcm9sbENvcm5lcihyZWN0KTsKK30KKworfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVFTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRU3R5bGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWMyY2Q1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRU3R5bGUuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTY3JvbGxiYXJUaGVtZVFTdHlsZV9oCisjZGVmaW5lIFNjcm9sbGJhclRoZW1lUVN0
eWxlX2gKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisKKyNpbmNsdWRlIDxRdENvcmUv
cWdsb2JhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFFTdHlsZUZhY2FkZTsK
KworY2xhc3MgU2Nyb2xsYmFyVGhlbWVRU3R5bGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewor
cHVibGljOgorICAgIFNjcm9sbGJhclRoZW1lUVN0eWxlKCk7CisgICAgdmlydHVhbCB+U2Nyb2xs
YmFyVGhlbWVRU3R5bGUoKTsKKworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKworICAgIHZpcnR1YWwgU2Nyb2xs
YmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UG9pbnQmKTsK
KworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KTsKKworICAg
IHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2
aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1
YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFs
IGludCB0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworCisgICAgdmlydHVhbCBp
bnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9s
bGJhcik7CisKKyAgICBRU3R5bGVGYWNhZGUqIHFTdHlsZSgpIHsgcmV0dXJuIG1fcVN0eWxlLmdl
dCgpOyB9CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFFTdHlsZUZhY2FkZT4gbV9xU3R5bGU7Cit9
OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Nj
cm9sbGJhclRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFy
VGhlbWVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY1NTc2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4gPGluZm9Ac3RhaWtvcy5uZXQ+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgorCisjaW5jbHVkZSAi
UmVuZGVyVGhlbWVRdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Njcm9sbGJhclRoZW1l
KiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQoreworICAgIHN0YXRpYyBTY3JvbGxiYXJU
aGVtZSogdGhlbWUgPSAwOworICAgIGlmICh0aGVtZSkKKyAgICAgICAgcmV0dXJuIHRoZW1lOwor
ICAgIHRoZW1lID0gUmVuZGVyVGhlbWVRdDo6Y3VzdG9tU2Nyb2xsYmFyVGhlbWUoKTsKKyAgICBp
ZiAoIXRoZW1lKQorICAgICAgICB0aGVtZSA9IG5ldyBTY3JvbGxiYXJUaGVtZSgpOworICAgIHJl
dHVybiB0aGVtZTsKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFy
ZWRCdWZmZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI3Zjlj
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1NoYXJlZEJ1
ZmZlclF0LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgPFFGaWxlPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQoreworICAgIGlmIChm
aWxlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUUZpbGUgZmlsZShm
aWxlTmFtZSk7CisgICAgaWYgKCFmaWxlLmV4aXN0cygpIHx8ICFmaWxlLm9wZW4oUUZpbGU6OlJl
YWRPbmx5KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGZp
bGUuc2l6ZSgpKTsKKyAgICBmaWxlLnJlYWQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3IoYnVmZmVyKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2hhcmVkVGltZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TaGFyZWRU
aW1lclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWNhNDI4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2hhcmVkVGltZXJR
dC5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2Vvcmdl
IFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11
ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyNpbmNsdWRlIDxR
Q29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRUG9pbnRlcj4K
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTaGFyZWRUaW1lclF0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKKyAg
ICBmcmllbmQgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpOwor
cHVibGljOgorICAgIHN0YXRpYyBTaGFyZWRUaW1lclF0KiBpbnN0KCk7CisKKyAgICB2b2lkIHN0
YXJ0KGRvdWJsZSk7CisgICAgdm9pZCBzdG9wKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHRp
bWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2KTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQg
ZGVzdHJveSgpOworCitwcml2YXRlOgorICAgIFNoYXJlZFRpbWVyUXQoKTsKKyAgICB+U2hhcmVk
VGltZXJRdCgpOworICAgIFFCYXNpY1RpbWVyIG1fdGltZXI7CisgICAgdm9pZCAoKm1fdGltZXJG
dW5jdGlvbikoKTsKK307CisKK1NoYXJlZFRpbWVyUXQ6OlNoYXJlZFRpbWVyUXQoKQorICAgIDog
UU9iamVjdCgpCisgICAgLCBtX3RpbWVyRnVuY3Rpb24oMCkKK3t9CisKK1NoYXJlZFRpbWVyUXQ6
On5TaGFyZWRUaW1lclF0KCkKK3sKKyAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKSB7CisgICAg
ICAgIGlmIChtX3RpbWVyRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIChtX3RpbWVyRnVuY3Rpb24p
KCk7CisgICAgICAgICAgICBtX3RpbWVyRnVuY3Rpb24gPSAwOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFNoYXJlZFRpbWVyUXQ6OmRlc3Ryb3koKQoreworICAgIGRlbGV0ZSB0aGlzOwor
fQorCitTaGFyZWRUaW1lclF0KiBTaGFyZWRUaW1lclF0OjppbnN0KCkKK3sKKyAgICBzdGF0aWMg
UVBvaW50ZXI8U2hhcmVkVGltZXJRdD4gdGltZXI7CisgICAgaWYgKCF0aW1lcikgeworICAgICAg
ICB0aW1lciA9IG5ldyBTaGFyZWRUaW1lclF0KCk7CisgICAgICAgIHRpbWVyLmRhdGEoKS0+Y29u
bmVjdChRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLCBTSUdOQUwoYWJvdXRUb1F1aXQoKSks
IFNMT1QoZGVzdHJveSgpKSk7CisgICAgfQorCisgICAgcmV0dXJuIHRpbWVyLmRhdGEoKTsKK30K
Kwordm9pZCBTaGFyZWRUaW1lclF0OjpzdGFydChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgdW5z
aWduZWQgaW50IGludGVydmFsSW5NUyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW50ZXJ2
YWwgKiAxMDAwKTsKKworICAgIG1fdGltZXIuc3RhcnQoaW50ZXJ2YWxJbk1TLCB0aGlzKTsKK30K
Kwordm9pZCBTaGFyZWRUaW1lclF0OjpzdG9wKCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKK30K
Kwordm9pZCBTaGFyZWRUaW1lclF0Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKK3sKKyAg
ICBpZiAoIW1fdGltZXJGdW5jdGlvbiB8fCBldi0+dGltZXJJZCgpICE9IG1fdGltZXIudGltZXJJ
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICAobV90aW1l
ckZ1bmN0aW9uKSgpOworfQorCit2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lk
ICgqZikoKSkKK3sKKyAgICBpZiAoIVFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFNoYXJlZFRpbWVyUXQ6Omluc3QoKS0+bV90aW1lckZ1bmN0aW9u
ID0gZjsKK30KKwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpCit7CisgICAgaWYgKCFRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBTaGFyZWRUaW1lclF0OjppbnN0KCktPnN0YXJ0KGludGVydmFsKTsKK30K
Kwordm9pZCBzdG9wU2hhcmVkVGltZXIoKQoreworICAgIGlmICghUUNvcmVBcHBsaWNhdGlvbjo6
aW5zdGFuY2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcmVkVGltZXJRdDo6aW5zdCgp
LT5zdG9wKCk7Cit9CisKKyNpbmNsdWRlICJTaGFyZWRUaW1lclF0Lm1vYyIKKworfQorCisvLyB2
aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
U291bmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Tb3VuZFF0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTNjOTkxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU291bmRRdC5jcHAKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTb3VuZC5oIgorCisjaW5jbHVkZSA8Tm90SW1wbGVtZW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIHN5c3RlbUJlZXAoKQoreworICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQgaW4gUXQgNSByaWdodCBub3cuIFRoZSBpbXBsZW1l
bnRhdGlvbiBpbiBRQXBwbGljYXRpb246YmVlcCgpCisgICAgLy8gaXMgZW1wdHkuIElmIGFueW9u
ZSBpcyBnb2luZyB0byBib3RoZXIgaW1wbGVtZW50aW5nIHRoaXMgdmlhIFFQbGF0Zm9ybU5hdGl2
ZUludGVyZmFjZSwgdGhlbgorICAgIC8vIHdlIGNvdWxkIHVzZSB0aGF0IGhlcmUuCisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworfQorCisvLyB2aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTVkZmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAKQEAg
LTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVt
bWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0
YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11ZWxs
ZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEsIEx0ZC4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIkNvb2tpZVN0b3Jh
Z2UuaCIKKyNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJETlMuaCIKKyNpbmNsdWRlICJG
VFBEaXJlY3RvcnlEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRl
ICJGb250LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIkljb25Mb2FkZXIuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIlVS
TC5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5o
IgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1
ZGUgIlBhdGguaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKyNpbmNsdWRlICJQ
bHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgorI2luY2x1ZGUgIldpZGdldC5o
IgorCisjaW5jbHVkZSA8ZmxvYXQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0
ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKKyNpZiBkZWZpbmVkKFFfT1NfV0lOQ0UpCitWZWN0b3I8U3RyaW5nPiBQbHVn
aW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworfQorCit2b2lkIFBsdWdpbkRh
dGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRo
cykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFBsdWdpbkRhdGFi
YXNlOjppc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUGFzc1Jl
ZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gUGx1Z2luVmlldzo6YmluZGluZ0luc3RhbmNl
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpzZXRKYXZhU2NyaXB0
UGF1c2VkKGJvb2wpCit7Cit9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lk
IGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQoreworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKwordm9pZCBzZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29s
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgc3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RoaXJkUGFydHlDb29raWVzUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGhpcmRQYXJ0eUNvb2tpZXNRdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyZjU3MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RoaXJkUGFydHlDb29raWVzUXQuY3BwCkBAIC0wLDAg
KzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRA
cm9iZXJ0aG9nYW4ubmV0PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGhpcmRQYXJ0
eUNvb2tpZXNRdC5oIgorCisjaW5jbHVkZSAiQ29va2llLmgiCisjaW5jbHVkZSAiQ29va2llSmFy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgorCisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgor
I2luY2x1ZGUgPFFOZXR3b3JrQ29va2llSmFyPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lu
bGluZSB2b2lkIHJlbW92ZVRvcExldmVsRG9tYWluKFFTdHJpbmcqIGRvbWFpbiwgY29uc3QgUVN0
cmluZyYgdG9wTGV2ZWxEb21haW4pCit7CisgICAgZG9tYWluLT5yZW1vdmUoZG9tYWluLT5sZW5n
dGgoKSAtIHRvcExldmVsRG9tYWluLmxlbmd0aCgpLCB0b3BMZXZlbERvbWFpbi5sZW5ndGgoKSk7
CisgICAgZG9tYWluLT5wcmVwZW5kKFFMYXRpbjFDaGFyKCcuJykpOworfQorCitzdGF0aWMgYm9v
bCB1cmxzU2hhcmVTYW1lRG9tYWluKGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVVybCYgZmlyc3RQ
YXJ0eVVybCkKK3sKKyAgICBRU3RyaW5nIGZpcnN0UGFydHlUTEQgPSBmaXJzdFBhcnR5VXJsLnRv
cExldmVsRG9tYWluKCk7CisgICAgUVN0cmluZyByZXF1ZXN0VExEID0gdXJsLnRvcExldmVsRG9t
YWluKCk7CisKKyAgICBpZiAoZmlyc3RQYXJ0eVRMRCAhPSByZXF1ZXN0VExEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBRU3RyaW5nIGZpcnN0UGFydHlEb21haW4gPSBRU3RyaW5nKGZp
cnN0UGFydHlVcmwuaG9zdCgpLnRvTG93ZXIoKSk7CisgICAgUVN0cmluZyByZXF1ZXN0RG9tYWlu
ID0gUVN0cmluZyh1cmwuaG9zdCgpLnRvTG93ZXIoKSk7CisKKyAgICByZW1vdmVUb3BMZXZlbERv
bWFpbigmZmlyc3RQYXJ0eURvbWFpbiwgZmlyc3RQYXJ0eVRMRCk7CisgICAgcmVtb3ZlVG9wTGV2
ZWxEb21haW4oJnJlcXVlc3REb21haW4sIHJlcXVlc3RUTEQpOworCisgICAgaWYgKGZpcnN0UGFy
dHlEb21haW4uc2VjdGlvbihRTGF0aW4xQ2hhcignLicpLCAtMSkgPT0gcmVxdWVzdERvbWFpbi5z
ZWN0aW9uKFFMYXRpbjFDaGFyKCcuJyksIC0xKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVVybCYg
Zmlyc3RQYXJ0eVVybCkKK3sKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKCFjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKTsKKyAgICBpZiAoIWphcikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBpZiAoZmlyc3RQYXJ0eVVybC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKHVybHNTaGFyZVNhbWVEb21haW4odXJsLCBmaXJzdFBh
cnR5VXJsKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gY29udGV4dC0+dGhp
cmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pc3Npb24odXJsKTsKK30KKworfQorLy8gdmltOiB0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RoaXJkUGFy
dHlDb29raWVzUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RoaXJkUGFydHlDb29r
aWVzUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBiNDBmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGhpcmRQYXJ0eUNvb2tp
ZXNRdC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUm9iZXJ0
IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFRoaXJkUGFydHlDb29raWVz
UXRfaAorI2RlZmluZSBUaGlyZFBhcnR5Q29va2llc1F0X2gKKworUVRfQkVHSU5fTkFNRVNQQUNF
CitjbGFzcyBRTmV0d29ya0Nvb2tpZUphcjsKK2NsYXNzIFFVcmw7CitRVF9FTkRfTkFNRVNQQUNF
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworCitib29s
IHRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
UVVybCYsIGNvbnN0IFFVcmwmIGZpcnN0UGFydHlVcmwpOworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVVJMUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvVVJMUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmY3OGU2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9VUkxRdC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVVJMLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgInF1cmwuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVJMOjpVUkwo
Y29uc3QgUVVybCYgdXJsKQoreworICAgICp0aGlzID0gVVJMKFVSTCgpLCB1cmwudG9FbmNvZGVk
KCkuY29uc3REYXRhKCksIFVURjhFbmNvZGluZygpKTsKK30KKworVVJMOjpvcGVyYXRvciBRVXJs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVVybChtX3N0cmluZyk7Cit9CisKK1N0cmluZyBVUkw6
OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxRVXJsPigqdGhpcykudG9Mb2NhbEZpbGUoKTsKKworICAgIC8vIEEgdmFs
aWQgcXJjIHJlc291cmNlIHBhdGggYmVnaW5zIHdpdGggYSBjb2xvbi4KKyAgICBpZiAocHJvdG9j
b2xJcygicXJjIikpCisgICAgICAgIHJldHVybiAiOiIgKyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMocGF0aCgpKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjNkY2Y4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9Vc2VyQWdlbnRRdC5jcHAKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVXNlckFnZW50UXQuaCIKKworI2luY2x1ZGUgPFFH
dWlBcHBsaWNhdGlvbj4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPFN5c3Rl
bUluZm8uaD4KKyNlbmRpZiAvLyBPUyhXSU5ET1dTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
Ky8qIQorICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSB1c2VyIGFnZW50IGZvciBI
VFRQIHJlcXVlc3RzIGlzIG5lZWRlZC4KKworICAgIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJu
cyB0aGUgZm9sbG93aW5nIHZhbHVlOgorCisgICAgIk1vemlsbGEvNS4wICglUGxhdGZvcm0lJVNl
Y3VyaXR5JSVTdWJwbGF0Zm9ybSUpIEFwcGxlV2ViS2l0LyVXZWJLaXRWZXJzaW9uJSAoS0hUTUws
IGxpa2UgR2Vja28pICVBcHBWZXJzaW9uIFNhZmFyaS8lV2ViS2l0VmVyc2lvbiUiCisKKyAgICBJ
biB0aGlzIHN0cmluZyB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgcmVwbGFjZWQgdGhlIGZpcnN0
IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZDoKKyAgICBcbGlzdAorICAgIFxsaSAlUGxhdGZv
cm0lIGV4cGFuZHMgdG8gdGhlIHdpbmRvd2luZyBzeXN0ZW0gZm9sbG93ZWQgYnkgIjsgIiBpZiBp
dCBpcyBub3QgV2luZG93cyAoZS5nLiAiWDExOyAiKS4KKyAgICBcbGkgJVNlY3VyaXR5JSBleHBh
bmRzIHRvICJOOyAiIGlmIFNTTCBpcyBkaXNhYmxlZC4KKyAgICBcbGkgJVN1YnBsYXRmb3JtJSBl
eHBhbmRzIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24gKGUuZy4gIldpbmRvd3MgTlQg
Ni4xIiBvciAiSW50ZWwgTWFjIE9TIFggMTAuNSIpLgorICAgIFxsaSAlV2ViS2l0VmVyc2lvbiUg
aXMgdGhlIHZlcnNpb24gb2YgV2ViS2l0IHRoZSBhcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgYWdh
aW5zdC4KKyAgICAvZW5kbGlzdAorCisgICAgVGhlIGZvbGxvd2luZyB2YWx1ZSBpcyByZXBsYWNl
ZCBlYWNoIHRpbWUgdGhlIGZ1bmNpdG9uIGlzIGNhbGxlZAorICAgIFxsaXN0CisgICAgXGxpICVB
cHBWZXJzaW9uJSBleHBhbmRzIHRvIFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uTmFtZSgp
L1FDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uVmVyc2lvbigpIGlmIHRoZXkncmUgc2V0OyBv
dGhlcndpc2UgZGVmYXVsdGluZyB0byBRdCBhbmQgdGhlIGN1cnJlbnQgUXQgdmVyc2lvbi4KKyAg
ICBcZW5kbGlzdAorKi8KK1N0cmluZyBVc2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQoY29u
c3QgU3RyaW5nICZhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHVuc2lnbmVkIGludCB3ZWJr
aXRNYWpvclZlcnNpb24sIHVuc2lnbmVkIGludCB3ZWJraXRNaW5vclZlcnNpb24pCit7CisgICAg
c3RhdGljIFFTdHJpbmcgdWE7CisKKyAgICBpZiAodWEuaXNOdWxsKCkpIHsKKworICAgICAgICB1
YSA9IFFMYXRpbjFTdHJpbmcoIk1vemlsbGEvNS4wICglMSUyJTMpIEFwcGxlV2ViS2l0LyU0IChL
SFRNTCwgbGlrZSBHZWNrbykgJTk5IFNhZmFyaS8lNSIpOworCisgICAgICAgIC8vIFBsYXRmb3Jt
LgorICAgICAgICB1YSA9IHVhLmFyZyhRTGF0aW4xU3RyaW5nKAorI2lmIE9TKE1BQ19PU19YKQor
ICAgICAgICAgICAgIk1hY2ludG9zaDsgIgorI2VsaWYgT1MoV0lORE9XUykKKyAgICAgICAgICAg
ICIiCisjZWxzZQorICAgICAgICAgICAgKFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkg
PT0gUUxhdGluMVN0cmluZygieGNiIikpID8gIlgxMTsgIiA6ICJVbmtub3duOyAiCisjZW5kaWYK
KyAgICAgICAgKSk7CisKKworICAgICAgICAvLyBTZWN1cml0eSBzdHJlbmd0aC4KKyAgICAgICAg
UVN0cmluZyBzZWN1cml0eVN0cmVuZ3RoOworI2lmIGRlZmluZWQoUVRfTk9fT1BFTlNTTCkKKyAg
ICAgICAgc2VjdXJpdHlTdHJlbmd0aCA9IFFMYXRpbjFTdHJpbmcoIk47ICIpOworI2VuZGlmCisg
ICAgICAgIHVhID0gdWEuYXJnKHNlY3VyaXR5U3RyZW5ndGgpOworCisgICAgICAgIC8vIE9wZXJh
dGluZyBzeXN0ZW0uCisgICAgICAgIHVhID0gdWEuYXJnKFFMYXRpbjFTdHJpbmcoCisjaWYgT1Mo
QUlYKQorICAgICAgICAgICAgIkFJWCIKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgICAgICAgICB3
aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpCisjZWxpZiBPUyhNQUNf
T1NfWCkKKyNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KQorICAgICAgICAgICAgIkludGVsIE1h
YyBPUyBYIgorI2Vsc2UKKyAgICAgICAgICAgICJQUEMgTWFjIE9TIFgiCisjZW5kaWYKKworI2Vs
aWYgT1MoRlJFRUJTRCkKKyAgICAgICAgICAgICJGcmVlQlNEIgorI2VsaWYgT1MoSFVSRCkKKyAg
ICAgICAgICAgICJHTlUgSHVyZCIKKyNlbGlmIE9TKExJTlVYKQorCisjaWYgQ1BVKFg4Nl82NCkK
KyAgICAgICAgICAgICJMaW51eCB4ODZfNjQiCisjZWxpZiBDUFUoWDg2KQorICAgICAgICAgICAg
IkxpbnV4IGk2ODYiCisjZWxzZQorICAgICAgICAgICAgIkxpbnV4IgorI2VuZGlmCisKKyNlbGlm
IE9TKE5FVEJTRCkKKyAgICAgICAgICAgICJOZXRCU0QiCisjZWxpZiBPUyhPUEVOQlNEKQorICAg
ICAgICAgICAgIk9wZW5CU0QiCisjZWxpZiBPUyhRTlgpCisgICAgICAgICAgICAiUU5YIgorI2Vs
aWYgT1MoU09MQVJJUykKKyAgICAgICAgICAgICJTdW4gU29sYXJpcyIKKyNlbGlmIE9TKFVOSVgp
IC8vIEZJWE1FIExvb2tzIGxpa2UgYWxsIHVuaXggdmFyaWFudHMgYWJvdmUgYXJlIHRoZSBvbmx5
IGNhc2VzIHdoZXJlIE9TX1VOSVggaXMgc2V0LgorICAgICAgICAgICAgIlVOSVggQlNEL1NZU1Yg
c3lzdGVtIgorI2Vsc2UKKyAgICAgICAgICAgICJVbmtub3duIgorI2VuZGlmCisgICAgICAgICkp
OworCisgICAgICAgIC8vIFdlYktpdCB2ZXJzaW9uLgorICAgICAgICBRU3RyaW5nIHZlcnNpb24g
PSBRU3RyaW5nOjpudW1iZXIod2Via2l0TWFqb3JWZXJzaW9uKSArIFFMYXRpbjFDaGFyKCcuJykg
KyBRU3RyaW5nOjpudW1iZXIod2Via2l0TWlub3JWZXJzaW9uKTsKKyAgICAgICAgdWEgPSB1YS5h
cmcodmVyc2lvbiwgdmVyc2lvbik7CisgICAgfQorCisgICAgUVN0cmluZyBhcHBOYW1lOworICAg
IGlmIChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQuaXNFbXB0eSgpKQorICAgICAgICBhcHBO
YW1lID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7CisgICAgZWxzZQorICAg
ICAgICBhcHBOYW1lID0gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OworCisgICAgaWYgKCFh
cHBOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBRU3RyaW5nIGFwcFZlciA9IFFDb3JlQXBwbGlj
YXRpb246OmFwcGxpY2F0aW9uVmVyc2lvbigpOworICAgICAgICBpZiAoIWFwcFZlci5pc0VtcHR5
KCkpCisgICAgICAgICAgICBhcHBOYW1lLmFwcGVuZChRTGF0aW4xQ2hhcignLycpICsgYXBwVmVy
KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBRdCB2ZXJzaW9uLgorICAgICAgICBhcHBOYW1l
ID0gUUxhdGluMVN0cmluZygiUXQvIikgKyBRTGF0aW4xU3RyaW5nKHFWZXJzaW9uKCkpOworICAg
IH0KKworICAgIHJldHVybiB1YS5hcmcoYXBwTmFtZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ0YjRmNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9Vc2VyQWdlbnRRdC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisjaWZu
ZGVmIFVzZXJBZ2VudFF0X2gKKyNkZWZpbmUgVXNlckFnZW50UXRfaAorCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVXNlckFn
ZW50UXQgeworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29u
c3QgU3RyaW5nICZhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHVuc2lnbmVkIGludCB3ZWJr
aXRNYWpvclZlcnNpb24sIHVuc2lnbmVkIGludCB3ZWJraXRNaW5vclZlcnNpb24pOworfTsKKwor
fQorCisjZW5kaWYgLy8gVXNlckFnZW50UXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU4MmE2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
X2gKKyNkZWZpbmUgV2ViQ29yZVN5c3RlbUludGVyZmFjZV9oCisKKyNpbmNsdWRlIDxvYmpjL29i
amMuaD4KKworI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVT
Cit0eXBlZGVmIHN0cnVjdCBDR1BvaW50IE5TUG9pbnQ7Cit0eXBlZGVmIHN0cnVjdCBDR1JlY3Qg
TlNSZWN0OworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IF9OU1BvaW50IE5TUG9pbnQ7Cit0eXBlZGVm
IHN0cnVjdCBfTlNSZWN0IE5TUmVjdDsKKyNlbmRpZgorCisjaWZkZWYgX19PQkpDX18KK0BjbGFz
cyBOU0FycmF5OworQGNsYXNzIE5TQ29udHJvbDsKK0BjbGFzcyBOU1N0cmluZzsKK0BjbGFzcyBO
U1VSTDsKK0BjbGFzcyBOU1ZpZXc7CitAY2xhc3MgTlNXaW5kb3c7CitAY2xhc3MgUVRNb3ZpZTsK
K0BjbGFzcyBRVE1vdmllVmlldzsKKyNlbHNlCitjbGFzcyBOU0FycmF5OworY2xhc3MgTlNDb250
cm9sOworY2xhc3MgTlNTdHJpbmc7CitjbGFzcyBOU1VSTDsKK2NsYXNzIE5TVmlldzsKK2NsYXNz
IE5TV2luZG93OworY2xhc3MgUVRNb3ZpZTsKK2NsYXNzIFFUTW92aWVWaWV3OworI2VuZGlmCisK
K2V4dGVybiAiQyIgeworCisvLyBJbiBhbHBoYWJldGljYWwgb3JkZXIuCitleHRlcm4gTlNWaWV3
ICooKndrQ3JlYXRlTWVkaWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKK2V4dGVybiBOU0NvbnRy
b2wgKigqd2tDcmVhdGVNZWRpYVVJQ29udHJvbCkoaW50KTsKK2V4dGVybiB1bnNpZ25lZCAoKndr
UVRJbmNsdWRlT25seU1vZGVybk1lZGlhRmlsZVR5cGVzKSh2b2lkKTsKK2V4dGVybiBpbnQgKCp3
a1FUTW92aWVEYXRhUmF0ZSkoUVRNb3ZpZSopOworZXh0ZXJuIHZvaWQgKCp3a1FUTW92aWVEaXNh
YmxlQ29tcG9uZW50KSh1aW50MzJfdFs1XSk7CitleHRlcm4gZmxvYXQgKCp3a1FUTW92aWVNYXhU
aW1lTG9hZGVkKShRVE1vdmllKik7CitleHRlcm4gTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGlt
ZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7CitleHRlcm4gZmxvYXQgKCp3a1FUTW92
aWVNYXhUaW1lU2Vla2FibGUpKFFUTW92aWUqKTsKK2V4dGVybiBpbnQgKCp3a1FUTW92aWVHZXRU
eXBlKShRVE1vdmllKik7CitleHRlcm4gQk9PTCAoKndrUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25z
KShRVE1vdmllKik7CitleHRlcm4gTlNVUkwgKigqd2tRVE1vdmllUmVzb2x2ZWRVUkwpKFFUTW92
aWUqKTsKK2V4dGVybiB2b2lkICgqd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zKShRVE1v
dmllKiwgQk9PTCk7CitleHRlcm4gdm9pZCAoKndrUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVy
bmF0ZXMpKFFUTW92aWUqKTsKK2V4dGVybiB2b2lkICgqd2tRVE1vdmllVmlld1NldERyYXdTeW5j
aHJvbm91c2x5KShRVE1vdmllVmlldyosIEJPT0wpOworZXh0ZXJuIE5TQXJyYXkgKigqd2tRVEdl
dFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUpKCk7CitleHRlcm4gdm9pZCAoKndrUVRDbGVhck1l
ZGlhRG93bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKK2V4dGVybiB2b2lkICgq
d2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKSgpOworZXh0ZXJuIHZvaWQgKCp3a1dpbmRvd1Nl
dEFscGhhKShOU1dpbmRvdyAqLCBmbG9hdCk7CitleHRlcm4gdm9pZCAoKndrV2luZG93U2V0U2Nh
bGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVjdCwgTlNSZWN0KTsKKwordHlwZWRlZiBlbnVtIHsK
KyAgICB3a01lZGlhVUlDb250cm9sVGltZWxpbmUsCisgICAgd2tNZWRpYVVJQ29udHJvbFNsaWRl
ciwKKyAgICB3a01lZGlhVUlDb250cm9sUGxheVBhdXNlQnV0dG9uLAorICAgIHdrTWVkaWFVSUNv
bnRyb2xFeGl0RnVsbHNjcmVlbkJ1dHRvbiwKKyAgICB3a01lZGlhVUlDb250cm9sUmV3aW5kQnV0
dG9uLAorICAgIHdrTWVkaWFVSUNvbnRyb2xGYXN0Rm9yd2FyZEJ1dHRvbiwKKyAgICB3a01lZGlh
VUlDb250cm9sVm9sdW1lVXBCdXR0b24sCisgICAgd2tNZWRpYVVJQ29udHJvbFZvbHVtZURvd25C
dXR0b24KK30gd2tNZWRpYVVJQ29udHJvbFR5cGU7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjhjYmQ5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbQpA
QCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNWaWV3ICooKndrQ3JlYXRlTWVk
aWFVSUJhY2tncm91bmRWaWV3KSh2b2lkKTsKK05TQ29udHJvbCAqKCp3a0NyZWF0ZU1lZGlhVUlD
b250cm9sKShpbnQpOwordW5zaWduZWQgKCp3a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZpbGVU
eXBlcykodm9pZCk7CitpbnQgKCp3a1FUTW92aWVEYXRhUmF0ZSkoUVRNb3ZpZSopOwordm9pZCAo
KndrUVRNb3ZpZURpc2FibGVDb21wb25lbnQpKHVpbnQzMl90WzVdKTsKK2Zsb2F0ICgqd2tRVE1v
dmllTWF4VGltZUxvYWRlZCkoUVRNb3ZpZSopOworTlNTdHJpbmcgKigqd2tRVE1vdmllTWF4VGlt
ZUxvYWRlZENoYW5nZU5vdGlmaWNhdGlvbikodm9pZCk7CitmbG9hdCAoKndrUVRNb3ZpZU1heFRp
bWVTZWVrYWJsZSkoUVRNb3ZpZSopOworaW50ICgqd2tRVE1vdmllR2V0VHlwZSkoUVRNb3ZpZSop
OworQk9PTCAoKndrUVRNb3ZpZUhhc0Nsb3NlZENhcHRpb25zKShRVE1vdmllKik7CitOU1VSTCAq
KCp3a1FUTW92aWVSZXNvbHZlZFVSTCkoUVRNb3ZpZSopOwordm9pZCAoKndrUVRNb3ZpZVNldFNo
b3dDbG9zZWRDYXB0aW9ucykoUVRNb3ZpZSosIEJPT0wpOwordm9pZCAoKndrUVRNb3ZpZVNlbGVj
dFByZWZlcnJlZEFsdGVybmF0ZXMpKFFUTW92aWUqKTsKK3ZvaWQgKCp3a1FUTW92aWVWaWV3U2V0
RHJhd1N5bmNocm9ub3VzbHkpKFFUTW92aWVWaWV3KiwgQk9PTCk7CitOU0FycmF5ICooKndrUVRH
ZXRTaXRlc0luTWVkaWFEb3dubG9hZENhY2hlKSgpOwordm9pZCAoKndrUVRDbGVhck1lZGlhRG93
bmxvYWRDYWNoZUZvclNpdGUpKE5TU3RyaW5nICpzaXRlKTsKK3ZvaWQgKCp3a1FUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGUpKCk7Cit2b2lkICgqd2tXaW5kb3dTZXRBbHBoYSkoTlNXaW5kb3cgKiwg
ZmxvYXQpOwordm9pZCAoKndrV2luZG93U2V0U2NhbGVkRnJhbWUpKE5TV2luZG93ICosIE5TUmVj
dCwgTlNSZWN0KTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2lk
Z2V0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvV2lkZ2V0UXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZWU0MzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9XaWRnZXRRdC5jcHAKQEAgLTAsMCArMSwxMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXaWRnZXQuaCIKKworI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkZvbnQuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCisj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiUVdlYlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisKKyNpbmNsdWRl
IDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRUGFpbnRF
bmdpbmU+CisjaW5jbHVkZSA8UVBhaW50ZXI+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2lk
Z2V0OjpXaWRnZXQoUGxhdGZvcm1XaWRnZXQgd2lkZ2V0KQoreworICAgIGluaXQod2lkZ2V0KTsK
K30KKworV2lkZ2V0Ojp+V2lkZ2V0KCkKK3sKKyAgICBRX0FTU0VSVCghcGFyZW50KCkpOworfQor
CitJbnRSZWN0IFdpZGdldDo6ZnJhbWVSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFt
ZTsKK30KKwordm9pZCBXaWRnZXQ6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQor
eworICAgIG1fZnJhbWUgPSByZWN0OworCisgICAgZnJhbWVSZWN0c0NoYW5nZWQoKTsKK30KKwor
dm9pZCBXaWRnZXQ6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkKK3sKK30KKwordm9pZCBXaWRnZXQ6
OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKK3sKKyNpZm5kZWYgUVRfTk9fQ1VSU09S
CisgICAgU2Nyb2xsVmlldyogdmlldyA9IHJvb3QoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAg
IHJldHVybjsKKyAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3IpOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2lkZ2V0OjpzaG93KCkKK3sKKyAgICBzZXRTZWxmVmlzaWJsZSh0cnVl
KTsKKworICAgIGlmICghaXNQYXJlbnRWaXNpYmxlKCkgfHwgIXBsYXRmb3JtV2lkZ2V0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFFXZWJQYWdlQ2xpZW50KiBjbGllbnQgPSByb290KCktPmhv
c3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgaWYgKGNsaWVudCkKKyAgICAg
ICAgY2xpZW50LT5zZXRXaWRnZXRWaXNpYmxlKHRoaXMsIHRydWUpOworfQorCit2b2lkIFdpZGdl
dDo6aGlkZSgpCit7CisgICAgc2V0U2VsZlZpc2libGUoZmFsc2UpOworCisgICAgaWYgKCFpc1Bh
cmVudFZpc2libGUoKSB8fCAhcGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUVdlYlBhZ2VDbGllbnQqIGNsaWVudCA9IHJvb3QoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKTsKKyAgICBpZiAoY2xpZW50KQorICAgICAgICBjbGllbnQtPnNldFdpZGdl
dFZpc2libGUodGhpcywgZmFsc2UpOworfQorCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit7Cit9CisKK3ZvaWQgV2lkZ2V0OjpzZXRJc1NlbGVj
dGVkKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXaWRnZXQ6OnNl
dEJpbmRpbmdPYmplY3QoUU9iamVjdCogb2JqZWN0KQoreworICAgIG1fYmluZGluZ09iamVjdCA9
IG9iamVjdDsKK30KKworUU9iamVjdCogV2lkZ2V0OjpiaW5kaW5nT2JqZWN0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9iaW5kaW5nT2JqZWN0LmRhdGEoKTsKK30KKworfQorCisvLyB2aW06IHRz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Qm91bmRhcmllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFy
aWVzLmNwcAppbmRleCBjMWY5OTJkLi41OTU5NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApAQCAtNjAsNyArNjAsNyBAQCBpbnQgc3Rh
cnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQg
bGVuZ3RoKQogICAgIHJldHVybiAwOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKKyNpZiAhUExB
VEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oUVQpCiAKIGludCBmaW5kTmV4dFdvcmRGcm9tSW5kZXgo
Y29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgbGVuLCBpbnQgcG9zaXRpb24sIGJvb2wgZm9yd2FyZCkK
IHsKQEAgLTEwMiw2ICsxMDIsNiBAQCB2b2lkIGZpbmRXb3JkQm91bmRhcnkoY29uc3QgVUNoYXIq
IGNoYXJzLCBpbnQgbGVuLCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludAogICAgICpzdGFy
dCA9IHRleHRCcmVha1ByZXZpb3VzKGl0KTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShNQUMp
CisjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFFUKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3F0
L1RleHRCb3VuZGFyaWVzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9U
ZXh0Qm91bmRhcmllc1F0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
NjZkNzM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9x
dC9UZXh0Qm91bmRhcmllc1F0LmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0Qm91bmRh
cmllcy5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2luY2x1ZGUgPFFDaGFy
PgorI2luY2x1ZGUgPFFTdHJpbmc+CisKKyNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8c3Rk
aW8uaD4KKworI2luY2x1ZGUgPHF0ZXh0Ym91bmRhcnlmaW5kZXIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitpbnQgZmluZE5leHRXb3JkRnJvbUluZGV4KFVDaGFyIGNvbnN0KiBidWZmZXIs
IGludCBsZW4sIGludCBwb3NpdGlvbiwgYm9vbCBmb3J3YXJkKQoreworICAgIFFTdHJpbmcgc3Ry
KHJlaW50ZXJwcmV0X2Nhc3Q8UUNoYXIgY29uc3QqPihidWZmZXIpLCBsZW4pOworICAgIFFUZXh0
Qm91bmRhcnlGaW5kZXIgaXRlcmF0b3IoUVRleHRCb3VuZGFyeUZpbmRlcjo6V29yZCwgc3RyKTsK
KyAgICBpdGVyYXRvci5zZXRQb3NpdGlvbihwb3NpdGlvbiA+PSBsZW4gPyBsZW4gLSAxIDogcG9z
aXRpb24pOworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGludCBwb3MgPSBpdGVyYXRvci50
b05leHRCb3VuZGFyeSgpOworICAgICAgICB3aGlsZSAocG9zID4gMCkgeworICAgICAgICAgICAg
aWYgKFFDaGFyKGJ1ZmZlcltwb3MtMV0pLmlzTGV0dGVyT3JOdW1iZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcG9zOworICAgICAgICAgICAgcG9zID0gaXRlcmF0b3IudG9OZXh0Qm91bmRh
cnkoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGVuOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGludCBwb3MgPSBpdGVyYXRvci50b1ByZXZpb3VzQm91bmRhcnkoKTsKKyAgICAgICAgd2hp
bGUgKHBvcyA+IDApIHsKKyAgICAgICAgICAgIGlmIChRQ2hhcihidWZmZXJbcG9zXSkuaXNMZXR0
ZXJPck51bWJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBwb3M7CisgICAgICAgICAgICBw
b3MgPSBpdGVyYXRvci50b1ByZXZpb3VzQm91bmRhcnkoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKK3ZvaWQgZmluZFdvcmRCb3VuZGFyeShVQ2hhciBjb25zdCog
YnVmZmVyLCBpbnQgbGVuLCBpbnQgcG9zaXRpb24sIGludCogc3RhcnQsIGludCogZW5kKQorewor
ICAgIFFTdHJpbmcgc3RyKHJlaW50ZXJwcmV0X2Nhc3Q8UUNoYXIgY29uc3QqPihidWZmZXIpLCBs
ZW4pOworICAgIFFUZXh0Qm91bmRhcnlGaW5kZXIgaXRlcmF0b3IoUVRleHRCb3VuZGFyeUZpbmRl
cjo6V29yZCwgc3RyKTsKKyAgICBpdGVyYXRvci5zZXRQb3NpdGlvbihwb3NpdGlvbik7CisgICAg
KnN0YXJ0ID0gcG9zaXRpb24gPiAwID8gaXRlcmF0b3IudG9QcmV2aW91c0JvdW5kYXJ5KCkgOiAw
OworICAgICplbmQgPSBwb3NpdGlvbiA9PSBsZW4gPyBsZW4gOiBpdGVyYXRvci50b05leHRCb3Vu
ZGFyeSgpOworfQorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvcXQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVF0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQ1ZDQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVUXQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEx
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgi
CisKKyNpbmNsdWRlIDxRQnl0ZUFycmF5PgorI2luY2x1ZGUgPFFMb2NhbGU+CisjaW5jbHVkZSA8
UVNjb3BlZFBvaW50ZXI+CisjaW5jbHVkZSA8cWdsb2JhbC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1FfR0xPQkFMX1NUQVRJQ19XSVRIX0FSR1MoUUJ5dGVBcnJheSwgY2FjaGVkU3lzdGVt
TG9jYWxlLCAoUUxvY2FsZTo6c3lzdGVtKCkubmFtZSgpLnRvTGF0aW4xKCkpKQorCitjb25zdCBj
aGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQoreworICAgIHJldHVybiBjYWNoZWRTeXN0ZW1M
b2NhbGUoKS0+Y29uc3REYXRhKCk7IAorfQorCitjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFr
TG9jYWxlSUQoKQoreworICAgIHJldHVybiBjYWNoZWRTeXN0ZW1Mb2NhbGUoKS0+Y29uc3REYXRh
KCk7IAorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ09N
UHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ09NUHRyLmgKaW5kZXggMzE0YTBh
ZS4uYzFhOTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NPTVB0
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DT01QdHIuaApAQCAtMTAxLDEx
ICsxMDEsNiBAQCBwcml2YXRlOgogICAgIFQqIG1fcHRyOwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIENPTVB0cjxUPiBhZG9wdENPTShUICpwdHIpCi17Ci0gICAgcmV0dXJuIENP
TVB0cjxUPihBZG9wdENPTSwgcHRyKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgQ09NUHRyPFQ+OjpjbGVhcigpCiB7CiAgICAgaWYgKFQqIHB0ciA9IG1fcHRyKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGM0YzQ0YjYuLmNj
NjJjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC00
MzgsNiArNDM4LDE0IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1
Z2luRGlyZWN0b3JpZXMoKQogICAgIHBhdGhzLmFwcGVuZCh1c2VyUGx1Z2luUGF0aCk7CiAjZW5k
aWYKIAorICAgIC8vIEFkZCBwYXRocyBzcGVjaWZpYyB0byBlYWNoIHBvcnQKKyNpZiBQTEFURk9S
TShRVCkKKyAgICBWZWN0b3I8U3RyaW5nPiBxdFBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdl
dGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5jb25zdERhdGEoKSk7CisgICAgcXRQYXRoLnNw
bGl0KFVDaGFyKCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBxdFBhdGhzKTsK
KyAgICBwYXRocy5hcHBlbmRWZWN0b3IocXRQYXRocyk7CisjZW5kaWYKKwogICAgIHJldHVybiBw
YXRoczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNr
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXgg
YWE1ZDYxZC4uZTlkMjFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5QYWNrYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2Uu
Y3BwCkBAIC0xOTYsMTEgKzE5NiwxOSBAQCB2b2lkIFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1
aXJrcyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgICAgICBpZiAoY29tcGFyZUZpbGVWZXJz
aW9uKGZsYXNoVGVuVmVyc2lvbikgPj0gMCkgewogICAgICAgICAgICAgLy8gRmxhc2ggMTAuMCBi
MjE4IGRvZXNuJ3QgbGlrZSBoYXZpbmcgYSBOVUxMIHdpbmRvdyBoYW5kbGUKICAgICAgICAgICAg
IG1fcXVpcmtzLmFkZChQbHVnaW5RdWlya0RvbnRTZXROdWxsV2luZG93SGFuZGxlT25EZXN0cm95
KTsKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5RdWly
a1JlcXVpcmVzR3RrVG9vbEtpdCk7CisjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIEZsYXNoIDkgYW5kIG9sZGVyIHJlcXVlc3RzIHdpbmRvd2xlc3MgcGx1Z2lucyBpZiB3
ZSByZXR1cm4gYSBtb3ppbGxhIHVzZXIgYWdlbnQKICAgICAgICAgICAgIG1fcXVpcmtzLmFkZChQ
bHVnaW5RdWlya1dhbnRzTW96aWxsYVVzZXJBZ2VudCk7CiAgICAgICAgIH0KIAorI2lmIFBMQVRG
T1JNKFFUKQorICAgICAgICAvLyBGbGFzaCB3aWxsIGNyYXNoIG9uIHJlcGVhdGVkIGNhbGxzIHRv
IFNldFdpbmRvdyBpbiB3aW5kb3dlZCBtb2RlCisgICAgICAgIG1fcXVpcmtzLmFkZChQbHVnaW5R
dWlya0RvbnRDYWxsU2V0V2luZG93TW9yZVRoYW5PbmNlKTsKKyNlbmRpZgorCiAjaWYgQ1BVKFg4
Nl82NCkKICAgICAgICAgLy8gNjQtYml0IEZsYXNoIGZyZWV6ZXMgaWYgcmlnaHQtY2xpY2sgaXMg
c2VudCBpbiB3aW5kb3dsZXNzIG1vZGUKICAgICAgICAgbV9xdWlya3MuYWRkKFBsdWdpblF1aXJr
SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggZDYwYzg4NS4uMGIyZjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC04MzMsNyArODMzLDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmll
dyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2Uq
IHAKICAgICAsIG1fd21QcmludEhEQygwKQogICAgICwgbV9oYXZlVXBkYXRlZFBsdWdpbldpZGdl
dChmYWxzZSkKICNlbmRpZgotI2lmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKQorI2lm
IChQTEFURk9STShRVCkgJiYgT1MoV0lORE9XUykpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZP
Uk0oTklYKQogICAgICwgbV93aW5kb3coMCkKICNlbmRpZgogI2lmIGRlZmluZWQoWFBfTUFDT1NY
KQpAQCAtODQ2LDYgKzg0Niw5IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoRnJhbWUqIHBhcmVu
dEZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBQbHVnaW5QYWNrYWdlKiBwCiAgICAgLCBtX2Nv
bG9ybWFwKDApCiAgICAgLCBtX3BsdWdpbkRpc3BsYXkoMCkKICNlbmRpZgorI2lmIFBMQVRGT1JN
KFFUKSAmJiBkZWZpbmVkKE1PWl9QTEFURk9STV9NQUVNTykgJiYgKE1PWl9QTEFURk9STV9NQUVN
TyA+PSA1KQorICAgICwgbV9yZW5kZXJUb0ltYWdlKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2xv
YWRNYW51YWxseShsb2FkTWFudWFsbHkpCiAgICAgLCBtX21hbnVhbFN0cmVhbSgwKQogICAgICwg
bV9pc0phdmFTY3JpcHRQYXVzZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IDU2MmUyZGIuLjE2NmE2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5o
CkBAIC00NywxMiArNDcsMjIgQEAKICNpbmNsdWRlICJucHJ1bnRpbWVfaW50ZXJuYWwuaCIKICNl
bmRpZgogCi0jaWYgT1MoV0lORE9XUykgJiYgUExBVEZPUk0oR1RLKQorI2lmIE9TKFdJTkRPV1Mp
ICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSkKIHR5cGVkZWYgc3RydWN0IEhXTkRf
XyogSFdORDsKIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVBsdWdpbldpZGdldDsKICNlbHNlCiB0eXBl
ZGVmIFBsYXRmb3JtV2lkZ2V0IFBsYXRmb3JtUGx1Z2luV2lkZ2V0OwogI2VuZGlmCisjaWYgUExB
VEZPUk0oUVQpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPFFJbWFnZT4KK1FUX0JFR0lO
X05BTUVTUEFDRQorY2xhc3MgUVBhaW50ZXI7CitRVF9FTkRfTkFNRVNQQUNFCisjZW5kaWYKICNp
ZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHN0cnVjdCBfR3RrU29ja2V0IEd0a1NvY2tldDsKICNl
bmRpZgpAQCAtMjM0LDYgKzI0NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAg
ICAgICAgdm9pZCBrZWVwQWxpdmUoKTsKIAorI2lmIFBMQVRGT1JNKFFUKSAmJiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkgJiYgZGVmaW5lZChYUF9VTklYKQorICAgICAgICAvLyBQbHVnaW5W
aWV3UXQgKFgxMSkgbmVlZHMgYSBmZXcgd29ya2Fyb3VuZHMgd2hlbiBydW5uaW5nIHVuZGVyIERS
VAorICAgICAgICBzdGF0aWMgdm9pZCBzZXRJc1J1bm5pbmdVbmRlckRSVChib29sIGZsYWcpIHsg
c19pc1J1bm5pbmdVbmRlckRSVCA9IGZsYWc7IH0KKyNlbmRpZgorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBQbHVn
aW5QYWNrYWdlKiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CiAKQEAgLTM1NCw3ICsz
NjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9oYXZlVXBkYXRlZFBs
dWdpbldpZGdldDsKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKEdUSykgJiYgT1MoV0lORE9XUykp
IHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oTklYKQorI2lmICgoUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShRVCkpICYmIE9TKFdJTkRPV1MpKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKE5JWCkKICAgICAgICAgLy8gT24gTWFjIE9TWCBhbmQgUXQvV2luZG93cyB0aGUgcGx1Z2lu
IGRvZXMgbm90IGhhdmUgaXRzIG93biBuYXRpdmUgd2lkZ2V0LAogICAgICAgICAvLyBidXQgaXMg
dXNpbmcgdGhlIGNvbnRhaW5pbmcgd2luZG93IGFzIGl0cyByZWZlcmVuY2UgZm9yIHBvc2l0aW9u
aW5nL3BhaW50aW5nLgogICAgICAgICBQbGF0Zm9ybVBsdWdpbldpZGdldCBtX3dpbmRvdzsKQEAg
LTM4OCw2ICs0MDMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0WEV2ZW50KFhFdmVu
dCogZXZlbnQpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpZiBkZWZpbmVkKFhQX1VO
SVgpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorICAgICAgICBzdGF0aWMgYm9vbCBz
X2lzUnVubmluZ1VuZGVyRFJUOworICAgICAgICBzdGF0aWMgdm9pZCBzZXRYS2V5RXZlbnRTcGVj
aWZpY0ZpZWxkcyhYRXZlbnQqLCBLZXlib2FyZEV2ZW50Kik7CisgICAgICAgIHZvaWQgcGFpbnRV
c2luZ1hQaXhtYXAoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0ICZleHBvc2VkUmVjdCk7
CisgICAgICAgIFFXZWJQYWdlQ2xpZW50KiBwbGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdDsKKyNl
bmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKFFUKQorCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAg
ICBzdGF0aWMgZ2Jvb2xlYW4gcGx1Z1JlbW92ZWRDYWxsYmFjayhHdGtTb2NrZXQqLCBQbHVnaW5W
aWV3Kik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHBsdWdBZGRlZENhbGxiYWNrKEd0a1NvY2tldCos
IFBsdWdpblZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
Vmlld05vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAK
aW5kZXggYjk2MmMwNi4uNDk4YWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3Tm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5W
aWV3Tm9uZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUZv
Y3VzT3V0RXZlbnQoKQogLy8gcG9ydHMgdXNpbmcgUGx1Z2luVmlldywgYnV0IHVudGlsIHRoZW4s
IGlmIG5ldyBmdW5jdGlvbnMgbGlrZSB0aGlzIGFyZSAKIC8vIGFkZGVkLCBwbGVhc2UgbWFrZSBz
dXJlIHRoZXkgaGF2ZSB0aGUgcHJvcGVyIHBsYXRmb3JtICNpZnMgc28gdGhhdCBjaGFuZ2VzCiAv
LyBkbyBub3QgYnJlYWsgcG9ydHMgd2hvIGNvbXBpbGUgYm90aCB0aGlzIGZpbGUgYW5kIFBsdWdp
blZpZXcuY3BwLiAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKSB8fCBPUyhX
SU5DRSkgfHwgUExBVEZPUk0oTklYKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZM
KSB8fCAoT1MoV0lOQ0UpICYmICFQTEFURk9STShRVCkpIHx8IChQTEFURk9STShRVCkgJiYgIU9T
KFdJTkNFKSkgfHwgUExBVEZPUk0oTklYKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogdm9pZCBQbHVnaW5WaWV3OjprZWVwQWxpdmUoTlBQKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KaW5kZXggOWRmOGYwOS4uYzVmYTQ4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCkBAIC03Miw2ICs3Miwx
MCBAQCB1c2luZyBKU0M6OkpTTG9jazsKIHVzaW5nIEpTQzo6SlNPYmplY3Q7CiB1c2luZyBKU0M6
OkpTVmFsdWU7CiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRUGFpbnRlcj4KKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNTcs
NiArMzYxLDIwIEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgaWYoIWRpc3BhdGNoTlBDb2NvYUV2ZW50
KGNvY29hRXZlbnQpKQogICAgICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6cGFpbnQoKTog
UGFpbnQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCBjb2NvYUV2ZW50LnR5cGUpOworICAg
IAorI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIFBhaW50IHRoZSBpbnRlcm1lZGlhdGUgYml0bWFw
IGludG8gb3VyIGdyYXBoaWNzIGNvbnRleHQuCisgICAgQVNTRVJUKENHQml0bWFwQ29udGV4dEdl
dEJpdG1hcEluZm8obV9jb250ZXh0UmVmKSAmIChrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgQVNTRVJUKENHQml0bWFwQ29u
dGV4dEdldEJpdHNQZXJQaXhlbChtX2NvbnRleHRSZWYpID09IDMyKTsKKyAgICBjb25zdCB1aW50
OF90KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oQ0dCaXRtYXBDb250
ZXh0R2V0RGF0YShtX2NvbnRleHRSZWYpKTsKKyAgICBzaXplX3Qgd2lkdGggPSBDR0JpdG1hcENv
bnRleHRHZXRXaWR0aChtX2NvbnRleHRSZWYpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0JpdG1h
cENvbnRleHRHZXRIZWlnaHQobV9jb250ZXh0UmVmKTsKKyAgICBjb25zdCBRSW1hZ2UgaW1hZ2VG
cm9tQml0bWFwKGRhdGEsIHdpZHRoLCBoZWlnaHQsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVt
dWx0aXBsaWVkKTsKKworICAgIFFQYWludGVyKiBwYWludGVyID0gY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKHRhcmdldFJlY3QueCgpLCB0YXJnZXRS
ZWN0LnkoKSwgaW1hZ2VGcm9tQml0bWFwLAorICAgICAgICB0YXJnZXRSZWN0LngoKSAtIGZyYW1l
UmVjdCgpLngoKSwgdGFyZ2V0UmVjdC55KCkgLSBmcmFtZVJlY3QoKS55KCksIHRhcmdldFJlY3Qu
d2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSk7CisjZW5kaWYKIAogICAgIENHQ29udGV4dFJl
c3RvcmVHU3RhdGUobV9jb250ZXh0UmVmKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvbnBhcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5jcHAKaW5k
ZXggNjc5NDhmMy4uNjYyMzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9u
cGFwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5jcHAKQEAgLTIwMiw3
ICsyMDIsMTMgQEAgTlBFcnJvciBOUE5fR2V0QXV0aGVudGljYXRpb25JbmZvKE5QUCBpbnN0YW5j
ZSwgY29uc3QgY2hhciogcHJvdG9jb2wsIGNvbnN0IGNoYXIKIAogTlBFcnJvciBOUE5fUG9wVXBD
b250ZXh0TWVudShOUFAgaW5zdGFuY2UsIE5QTWVudSogbWVudSkKIHsKKyNpZiBQTEFURk9STShR
VCkgJiYgZGVmaW5lZChYUF9NQUNPU1gpCisgICAgUGx1Z2luVmlldyogcGx1Z2luID0gcGx1Z2lu
Vmlld0Zvckluc3RhbmNlKGluc3RhbmNlKTsKKyAgICBwbHVnaW4tPnBvcFVwQ29udGV4dE1lbnUo
bWVudSk7CisgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oaW5zdGFuY2UpOwogICAgIFVOVVNFRF9QQVJBTShtZW51KTsKICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7CisjZW5kaWYgLy8gUExBVEZPUk0oUVQpICYmIGRlZmluZWQoWFBfTUFDT1NYKQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OTQ4MGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdpblBhY2thZ2VRdC5jcHAKQEAgLTAsMCAr
MSwyMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGx1Z2luUGFja2FnZS5oIgorCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2lu
Y2x1ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKKyNpbmNs
dWRlICJucHJ1bnRpbWVfaW1wbC5oIgorI2luY2x1ZGUgPFFGaWxlSW5mbz4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBQbHVnaW5Q
YWNrYWdlOjpmZXRjaEluZm8oKQoreworICAgIGlmICghbV9tb2R1bGUpIHsKKyAgICAgICAgaWYg
KGlzUGx1Z2luQmxhY2tsaXN0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgbV9tb2R1bGUgPSBuZXcgUUxpYnJhcnkoKFFTdHJpbmcpbV9wYXRoKTsKKyAgICAgICAgbV9t
b2R1bGUtPnNldExvYWRIaW50cyhRTGlicmFyeTo6UmVzb2x2ZUFsbFN5bWJvbHNIaW50KTsKKyAg
ICAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKSB7CisgICAgICAgICAgICBMT0coUGx1Z2lucywg
IiVzIG5vdCBsb2FkZWQgKCVzKSIsIG1fcGF0aC51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAg
ICAgIG1fbW9kdWxlLT5lcnJvclN0cmluZygpLnRvTGF0aW4xKCkuY29uc3REYXRhKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgaXMgdGVj
aG5pY2FsbHkgd3JvbmcgKG5vdCBtYXRjaGVkIGJ5IGEgZGVjcmVtZW50KSwgYnV0CisgICAgICAg
IC8vIGl0IG1hdGNoZXMgdGhlIHByZXZpb3VzIGJlaGF2aW9yIChmZXRjaEluZm8gY2FsbGluZyBs
b2FkKSBhbmQKKyAgICAgICAgLy8gcHJldmVudHMgY3Jhc2hlcyBpbiBmbGFzaCBkdWUgdG8gdW5s
b2FkK2xvYWQuCisgICAgICAgIG1fbG9hZENvdW50Kys7CisgICAgfQorCisgICAgTlBQX0dldFZh
bHVlUHJvY1B0ciBndiA9IChOUFBfR2V0VmFsdWVQcm9jUHRyKW1fbW9kdWxlLT5yZXNvbHZlKCJO
UF9HZXRWYWx1ZSIpOworICAgIE5QX0dldE1JTUVEZXNjcmlwdGlvbkZ1bmNQdHIgZ20gPQorICAg
ICAgICAoTlBfR2V0TUlNRURlc2NyaXB0aW9uRnVuY1B0ciltX21vZHVsZS0+cmVzb2x2ZSgiTlBf
R2V0TUlNRURlc2NyaXB0aW9uIik7CisgICAgaWYgKCFnbSB8fCAhZ3YpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGNoYXIgKmJ1ZiA9IDA7CisgICAgTlBFcnJvciBlcnIgPSBndigwLCBO
UFBWcGx1Z2luTmFtZVN0cmluZywgKHZvaWQqKSAmYnVmKTsKKyAgICBpZiAoZXJyICE9IE5QRVJS
X05PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX25hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KGJ1Zik7CisgICAgZXJyID0gZ3YoMCwgTlBQVnBsdWdpbkRlc2NyaXB0aW9uU3Ry
aW5nLCAodm9pZCopICZidWYpOworICAgIGlmIChlcnIgIT0gTlBFUlJfTk9fRVJST1IpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZGVzY3JpcHRpb24gPSBTdHJpbmc6OmZyb21VVEY4
KGJ1Zik7CisgICAgZGV0ZXJtaW5lTW9kdWxlVmVyc2lvbkZyb21EZXNjcmlwdGlvbigpOworCisg
ICAgc2V0TUlNRURlc2NyaXB0aW9uKFN0cmluZzo6ZnJvbVVURjgoZ20oKSkpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgUGx1Z2luUGFja2FnZTo6c2V0TUlNRURlc2NyaXB0aW9uKGNv
bnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uKQoreworICAgIG1fZnVsbE1JTUVEZXNjcmlwdGlv
biA9IG1pbWVEZXNjcmlwdGlvbi5sb3dlcigpOworCisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CisgICAgbWltZURlc2NyaXB0aW9uLmxvd2VyKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5
cGVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgVmVjdG9yPFN0cmluZz4gbWltZTsKKyAgICAgICAgdHlwZXNbaV0uc3BsaXQoVUNo
YXIoJzonKSwgdHJ1ZSwgbWltZSk7CisgICAgICAgIGlmIChtaW1lLnNpemUoKSA+IDApIHsKKyAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dHM7CisgICAgICAgICAgICBpZiAobWltZS5zaXpl
KCkgPiAxKQorICAgICAgICAgICAgICAgIG1pbWVbMV0uc3BsaXQoVUNoYXIoJywnKSwgZmFsc2Us
IGV4dHMpOworICAgICAgICAgICAgZGV0ZXJtaW5lUXVpcmtzKG1pbWVbMF0pOworICAgICAgICAg
ICAgbV9taW1lVG9FeHRlbnNpb25zLmFkZChtaW1lWzBdLCBleHRzKTsKKyAgICAgICAgICAgIGlm
IChtaW1lLnNpemUoKSA+IDIpCisgICAgICAgICAgICAgICAgbV9taW1lVG9EZXNjcmlwdGlvbnMu
YWRkKG1pbWVbMF0sIG1pbWVbMl0pOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgTlBF
cnJvciBzdGF0aWNQbHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdF9OUE5fR2V0VmFsdWUoTlBQ
IGluc3RhbmNlLCBOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCit7CisgICAgaWYg
KHZhcmlhYmxlID09IE5QTlZUb29sa2l0KSB7CisgICAgICAgICpzdGF0aWNfY2FzdDx1aW50MzJf
dCo+KHZhbHVlKSA9IDI7CisgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKKyAgICB9CisK
KyAgICByZXR1cm4gTlBOX0dldFZhbHVlKGluc3RhbmNlLCB2YXJpYWJsZSwgdmFsdWUpOworfQor
CitzdGF0aWMgdm9pZCBpbml0aWFsaXplR3RrKFFMaWJyYXJ5KiBtb2R1bGUgPSAwKQoreworICAg
IC8vIEVuc3VyZXMgbWlzc2luZyBHdGsgaW5pdGlhbGl6YXRpb24gaW4gc29tZSB2ZXJzaW9ucyBv
ZiBBZG9iZSdzIGZsYXNoIHBsYXllcgorICAgIC8vIHBsdWdpbiBkbyBub3QgY2F1c2UgY3Jhc2hl
cy4gU2VlIEJSIyA0MDU2NywgNDQzMjQsIGFuZCA0NDQwNSBmb3IgZGV0YWlscy4gIAorICAgIGlm
IChtb2R1bGUpIHsKKyAgICAgICAgdHlwZWRlZiB2b2lkICooKmd0a19pbml0X3B0cikoaW50Kiwg
Y2hhcioqKik7CisgICAgICAgIGd0a19pbml0X3B0ciBndGtJbml0ID0gKGd0a19pbml0X3B0cilt
b2R1bGUtPnJlc29sdmUoImd0a19pbml0Iik7CisgICAgICAgIGlmIChndGtJbml0KSB7CisgICAg
ICAgICAgICAvLyBQcmV2ZW50IGd0a19pbml0KCkgZnJvbSByZXBsYWNpbmcgdGhlIFggZXJyb3Ig
aGFuZGxlcnMsIHNpbmNlIHRoZSBHdGsKKyAgICAgICAgICAgIC8vIGhhbmRsZXJzIGFib3J0IHdo
ZW4gdGhleSByZWNlaXZlIGFuIFggZXJyb3IsIHRodXMga2lsbGluZyB0aGUgdmlld2VyLgorI2lm
ZGVmIFFfV1NfWDExCisgICAgICAgICAgICBpbnQgKCpvbGRfZXJyb3JfaGFuZGxlcikoRGlzcGxh
eSosIFhFcnJvckV2ZW50KikgPSBYU2V0RXJyb3JIYW5kbGVyKDApOworICAgICAgICAgICAgaW50
ICgqb2xkX2lvX2Vycm9yX2hhbmRsZXIpKERpc3BsYXkqKSA9IFhTZXRJT0Vycm9ySGFuZGxlcigw
KTsKKyNlbmRpZgorICAgICAgICAgICAgZ3RrSW5pdCgwLCAwKTsKKyNpZmRlZiBRX1dTX1gxMQor
ICAgICAgICAgICAgWFNldEVycm9ySGFuZGxlcihvbGRfZXJyb3JfaGFuZGxlcik7CisgICAgICAg
ICAgICBYU2V0SU9FcnJvckhhbmRsZXIob2xkX2lvX2Vycm9yX2hhbmRsZXIpOworI2VuZGlmCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRTGlicmFyeSBsaWJy
YXJ5KFFMYXRpbjFTdHJpbmcoImxpYmd0ay14MTEtMi4wIiksIDApOworICAgIGlmIChsaWJyYXJ5
LmxvYWQoKSkgeworICAgICAgICB0eXBlZGVmIHZvaWQgKigqZ3RrX2luaXRfY2hlY2tfcHRyKShp
bnQqLCBjaGFyKioqKTsKKyAgICAgICAgZ3RrX2luaXRfY2hlY2tfcHRyIGd0a0luaXRDaGVjayA9
IChndGtfaW5pdF9jaGVja19wdHIpbGlicmFyeS5yZXNvbHZlKCJndGtfaW5pdF9jaGVjayIpOwor
ICAgICAgICAvLyBOT1RFOiBXZSdyZSB1c2luZyBndGtfaW5pdF9jaGVjaygpIHNpbmNlIGd0a19p
bml0KCkgY2FsbHMgZXhpdCgpIG9uIGZhaWx1cmUuCisgICAgICAgIGlmIChndGtJbml0Q2hlY2sp
CisgICAgICAgICAgICAodm9pZCkgZ3RrSW5pdENoZWNrKDAsIDApOworICAgIH0KK30KKworYm9v
bCBQbHVnaW5QYWNrYWdlOjppc1BsdWdpbkJsYWNrbGlzdGVkKCkKK3sKKyAgICAvLyBUT0RPOiBl
bnVtZXJhdGUgYWxsIHBsdWdpbnMgdGhhdCBhcmUgaW5jb21wYXRpYmxlIHdpdGggUXQ1LgorICAg
IGNvbnN0IFFMYXRpbjFTdHJpbmcgcGx1Z2luQmxhY2tsaXN0W10gPSB7CisgICAgICAgIFFMYXRp
bjFTdHJpbmcoInNreXBlYnV0dG9ucyIpCisgICAgfTsKKworICAgIFFTdHJpbmcgYmFzZU5hbWUg
PSBRRmlsZUluZm8oc3RhdGljX2Nhc3Q8UVN0cmluZz4obV9wYXRoKSkuYmFzZU5hbWUoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKHBsdWdpbkJsYWNrbGlzdCkgLyBzaXpl
b2YoUUxhdGluMVN0cmluZyk7ICsraSkgeworICAgICAgICBpZiAoYmFzZU5hbWUgPT0gcGx1Z2lu
QmxhY2tsaXN0W2ldKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKK3sKKyAgICBpZiAobV9p
c0xvYWRlZCkgeworICAgICAgICBtX2xvYWRDb3VudCsrOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAoaXNQbHVnaW5CbGFja2xpc3RlZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIW1fbW9kdWxlKSB7CisgICAgICAgIG1fbW9kdWxlID0gbmV3IFFM
aWJyYXJ5KChRU3RyaW5nKW1fcGF0aCk7CisgICAgICAgIG1fbW9kdWxlLT5zZXRMb2FkSGludHMo
UUxpYnJhcnk6OlJlc29sdmVBbGxTeW1ib2xzSGludCk7CisgICAgICAgIGlmICghbV9tb2R1bGUt
PmxvYWQoKSkgeworICAgICAgICAgICAgTE9HKFBsdWdpbnMsICIlcyBub3QgbG9hZGVkICglcyki
LCBtX3BhdGgudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICBtX21vZHVsZS0+ZXJyb3JT
dHJpbmcoKS50b0xhdGluMSgpLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1faXNMb2FkZWQgPSB0cnVlOworCisgICAgTlBf
SW5pdGlhbGl6ZUZ1bmNQdHIgTlBfSW5pdGlhbGl6ZTsKKyAgICBOUEVycm9yIG5wRXJyOworCisg
ICAgTlBfSW5pdGlhbGl6ZSA9IChOUF9Jbml0aWFsaXplRnVuY1B0ciltX21vZHVsZS0+cmVzb2x2
ZSgiTlBfSW5pdGlhbGl6ZSIpOworICAgIG1fTlBQX1NodXRkb3duID0gKE5QUF9TaHV0ZG93blBy
b2NQdHIpbV9tb2R1bGUtPnJlc29sdmUoIk5QX1NodXRkb3duIik7CisKKyAgICBpZiAoIU5QX0lu
aXRpYWxpemUgfHwgIW1fTlBQX1NodXRkb3duKQorICAgICAgICBnb3RvIGFib3J0OworCisgICAg
bWVtc2V0KCZtX3BsdWdpbkZ1bmNzLCAwLCBzaXplb2YobV9wbHVnaW5GdW5jcykpOworICAgIG1f
cGx1Z2luRnVuY3Muc2l6ZSA9IHNpemVvZihtX3BsdWdpbkZ1bmNzKTsKKworICAgIGluaXRpYWxp
emVCcm93c2VyRnVuY3MoKTsKKworICAgIGlmIChtX3BhdGguY29udGFpbnMoIm5wd3JhcHBlci4i
KSB8fCBtX3BhdGguY29udGFpbnMoImduYXNoIikpIHsKKyAgICAgICAgLy8gbnNwbHVnaW53cmFw
cGVyIHJlbGllcyBvbiB0aGUgdG9vbGtpdCB2YWx1ZSB0byBrbm93IGlmIGdsaWIgaXMgYXZhaWxh
YmxlCisgICAgICAgIC8vIEl0IGRvZXMgc28gaW4gTlBfSW5pdGlhbGl6ZSB3aXRoIGEgbnVsbCBp
bnN0YW5jZSwgdGhlcmVmb3JlIGl0IGlzIGRvbmUgdGhpcyB3YXk6CisgICAgICAgIG1fYnJvd3Nl
ckZ1bmNzLmdldHZhbHVlID0gc3RhdGljUGx1Z2luUXVpcmtSZXF1aXJlc0d0a1Rvb2xLaXRfTlBO
X0dldFZhbHVlOworICAgICAgICAvLyBXb3JrYXJvdW5kIEFkb2JlJ3MgZmFpbHVyZSB0byBwcm9w
ZXJseSBpbml0aWFsaXplIEd0ayBpbiBzb21lIHZlcnNpb25zCisgICAgICAgIC8vIG9mIHRoZWly
IGZsYXNoIHBsYXllciBwbHVnaW4uCisgICAgICAgIGluaXRpYWxpemVHdGsoKTsKKyAgICB9IGVs
c2UgaWYgKG1fcGF0aC5jb250YWlucygiZmxhc2hwbGF5ZXIiKSkgeworICAgICAgICAvLyBXb3Jr
YXJvdW5kIEFkb2JlJ3MgZmFpbHVyZSB0byBwcm9wZXJseSBpbml0aWFsaXplIEd0ayBpbiBzb21l
IHZlcnNpb25zCisgICAgICAgIC8vIG9mIHRoZWlyIGZsYXNoIHBsYXllciBwbHVnaW4uCisgICAg
ICAgIGluaXRpYWxpemVHdGsobV9tb2R1bGUpOworICAgIH0KKworI2lmIGRlZmluZWQoWFBfVU5J
WCkKKyAgICBucEVyciA9IE5QX0luaXRpYWxpemUoJm1fYnJvd3NlckZ1bmNzLCAmbV9wbHVnaW5G
dW5jcyk7CisjZWxzZQorICAgIG5wRXJyID0gTlBfSW5pdGlhbGl6ZSgmbV9icm93c2VyRnVuY3Mp
OworI2VuZGlmCisgICAgaWYgKG5wRXJyICE9IE5QRVJSX05PX0VSUk9SKQorICAgICAgICBnb3Rv
IGFib3J0OworCisgICAgbV9sb2FkQ291bnQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKKworYWJvcnQ6
CisgICAgdW5sb2FkV2l0aG91dFNodXRkb3duKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
aW50MTZfdCBQbHVnaW5QYWNrYWdlOjpOUFZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBO
UF9WRVJTSU9OX01JTk9SOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3F0L1BsdWdpblZpZXdRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1BsdWdp
blZpZXdRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUxNDM1Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUGx1Z2luVmlld1F0
LmNwcApAQCAtMCwwICsxLDc5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IENv
bGxhYm9yYSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R2lyaXNoIFJhbWFrcmlzaG5hbiA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorCisjaW5jbHVkZSAiQnJp
ZGdlSlNDLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNsdWRlICJJRnJhbWVTaGltU3VwcG9ydC5oIgor
I2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAi
SlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbHVnaW5EZWJ1Zy5oIgorI2luY2x1ZGUgIlBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisj
aW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCisjaW5jbHVk
ZSAicnVudGltZV9yb290LmgiCisjaW5jbHVkZSA8UUtleUV2ZW50PgorI2luY2x1ZGUgPFFQYWlu
dGVyPgorI2luY2x1ZGUgPFgxMS9YLmg+CisjaWZuZGVmIFFUX05PX1hSRU5ERVIKKyNkZWZpbmUg
Qm9vbCBpbnQKKyNkZWZpbmUgU3RhdHVzIGludAorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hy
ZW5kZXIuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKKyNpbmNsdWRlICJRdFgxMUltYWdlQ29udmVyc2lvbi5o
IgorI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRV2luZG93PgorI2luY2x1
ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZhY2UuaD4KKwordXNpbmcgSlNDOjpFeGVjU3Rh
dGU7Cit1c2luZyBKU0M6OkludGVycHJldGVyOwordXNpbmcgSlNDOjpKU0xvY2s7Cit1c2luZyBK
U0M6OkpTT2JqZWN0OworCit1c2luZyBzdGQ6Om1pbjsKKwordXNpbmcgbmFtZXNwYWNlIFdURjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFBsdWdpblZpZXc6OnNfaXNSdW5uaW5nVW5k
ZXJEUlQgPSBmYWxzZTsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworc3RydWN0IFgx
MUVudmlyb25tZW50IHsKKyAgICBEaXNwbGF5KiBkaXNwbGF5OworICAgIGludCBzY3JlZW5JRDsK
KyAgICB1bnNpZ25lZCBsb25nIHJvb3RXaW5kb3dJRDsKKyAgICBpbnQgZGlzcGxheURlcHRoOwor
fTsKKworc3RhdGljIFgxMUVudmlyb25tZW50IHgxMUVudmlyb25tZW50ID0geyAwLCAwLCAwLCAw
IH07CisKK3N0YXRpYyBpbmxpbmUgRGlzcGxheSogeDExRGlzcGxheSgpIHsgcmV0dXJuIHgxMUVu
dmlyb25tZW50LmRpc3BsYXk7IH0KK3N0YXRpYyBpbmxpbmUgaW50IHgxMVNjcmVlbigpIHsgcmV0
dXJuIHgxMUVudmlyb25tZW50LnNjcmVlbklEOyB9CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv
bmcgcm9vdFdpbmRvd0lEKCkgeyByZXR1cm4geDExRW52aXJvbm1lbnQucm9vdFdpbmRvd0lEOyB9
CitzdGF0aWMgaW5saW5lIGludCBkaXNwbGF5RGVwdGgoKSB7IHJldHVybiB4MTFFbnZpcm9ubWVu
dC5kaXNwbGF5RGVwdGg7IH0KKworc3RhdGljIGlubGluZSB2b2lkIHN5bmNYKCkKK3sKKyAgICBY
U3luYyh4MTFEaXNwbGF5KCksIGZhbHNlKTsKK30KKworUVdlYlBhZ2VDbGllbnQqIFBsdWdpblZp
ZXc6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9wYXJlbnRGcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IHZpZXctPmhvc3RXaW5kb3coKTsKKyAgICBp
ZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBob3N0V2luZG93
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKK30KKwordm9pZCBQbHVnaW5WaWV3Ojp1cGRhdGVQbHVn
aW5XaWRnZXQoKQoreworICAgIGlmICghcGFyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEFTU0VSVChwYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSB0b0ZyYW1lVmlldyhwYXJlbnQoKSk7CisKKyAgICBJbnRSZWN0IG9sZFdpbmRvd1JlY3Qg
PSBtX3dpbmRvd1JlY3Q7CisgICAgSW50UmVjdCBvbGRDbGlwUmVjdCA9IG1fY2xpcFJlY3Q7CisK
KyAgICBtX3dpbmRvd1JlY3QgPSBJbnRSZWN0KGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhm
cmFtZVJlY3QoKS5sb2NhdGlvbigpKSwgZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKyAgICBtX2NsaXBS
ZWN0ID0gd2luZG93Q2xpcFJlY3QoKTsKKyAgICBtX2NsaXBSZWN0Lm1vdmUoLW1fd2luZG93UmVj
dC54KCksIC1tX3dpbmRvd1JlY3QueSgpKTsKKworICAgIGlmIChtX3dpbmRvd1JlY3QgPT0gb2xk
V2luZG93UmVjdCAmJiBtX2NsaXBSZWN0ID09IG9sZENsaXBSZWN0KQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBUaGUgcGx1Z2luIGhhZCBhIHplcm8gd2lkdGggb3IgaGVpZ2h0IGJlZm9yZSBi
dXQgd2FzIHJlc2l6ZWQsIHdlIG5lZWQgdG8gc2hvdyBpdCBhZ2Fpbi4KKyAgICBpZiAob2xkV2lu
ZG93UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHNob3coKTsKKworICAgIGlmICghbV9pc1dpbmRv
d2VkICYmIG1fd2luZG93UmVjdC5zaXplKCkgIT0gb2xkV2luZG93UmVjdC5zaXplKCkpIHsKKyAg
ICAgICAgaWYgKG1fZHJhd2FibGUpCisgICAgICAgICAgICBYRnJlZVBpeG1hcCh4MTFEaXNwbGF5
KCksIG1fZHJhd2FibGUpOworCisgICAgICAgIG1fZHJhd2FibGUgPSBYQ3JlYXRlUGl4bWFwKHgx
MURpc3BsYXkoKSwgcm9vdFdpbmRvd0lEKCksIG1fd2luZG93UmVjdC53aWR0aCgpLCBtX3dpbmRv
d1JlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTlBT
ZXRXaW5kb3dDYWxsYmFja1N0cnVjdCopbV9ucFdpbmRvdy53c19pbmZvKS0+ZGVwdGgpOworICAg
ICAgICBzeW5jWCgpOyAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmVyIGtub3dzIGFib3V0IHRo
ZSBEcmF3YWJsZQorICAgIH0KKworICAgIC8vIGRvIG5vdCBjYWxsIHNldE5QV2luZG93SWZOZWVk
ZWQgaW1tZWRpYXRlbHksIHdpbGwgYmUgY2FsbGVkIG9uIHBhaW50KCkKKyAgICBtX2hhc1BlbmRp
bmdHZW9tZXRyeUNoYW5nZSA9IHRydWU7CisKKyAgICAvLyAoaSkgaW4gb3JkZXIgdG8gbW92ZS9y
ZXNpemUgdGhlIHBsdWdpbiB3aW5kb3cgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUKKyAgICAvLyBy
ZXN0IG9mIGZyYW1lIGR1cmluZyBlLmcuIHNjcm9sbGluZywgd2Ugc2V0IHRoZSB3aW5kb3cgZ2Vv
bWV0cnkKKyAgICAvLyBpbiB0aGUgcGFpbnQoKSBmdW5jdGlvbiwgYnV0IGFzIHBhaW50KCkgaXNu
J3QgY2FsbGVkIHdoZW4gdGhlCisgICAgLy8gcGx1Z2luIHdpbmRvdyBpcyBvdXRzaWRlIHRoZSBm
cmFtZSB3aGljaCBjYW4gYmUgY2F1c2VkIGJ5IGEKKyAgICAvLyBzY3JvbGwsIHdlIG5lZWQgdG8g
bW92ZS9yZXNpemUgaW1tZWRpYXRlbHkuCisgICAgLy8gKGlpKSBpZiB3ZSBhcmUgcnVubmluZyBs
YXlvdXQgdGVzdHMgZnJvbSBEUlQsIHBhaW50KCkgd29uJ3QgZXZlciBnZXQgY2FsbGVkCisgICAg
Ly8gc28gd2UgbmVlZCB0byBjYWxsIHNldE5QV2luZG93SWZOZWVkZWQoKSBpZiB3aW5kb3cgZ2Vv
bWV0cnkgaGFzIGNoYW5nZWQKKyAgICBpZiAoIW1fd2luZG93UmVjdC5pbnRlcnNlY3RzKGZyYW1l
Vmlldy0+ZnJhbWVSZWN0KCkpCisgICAgICAgIHx8IChzX2lzUnVubmluZ1VuZGVyRFJUICYmIHBs
YXRmb3JtUGx1Z2luV2lkZ2V0KCkgJiYgKG1fd2luZG93UmVjdCAhPSBvbGRXaW5kb3dSZWN0IHx8
IG1fY2xpcFJlY3QgIT0gb2xkQ2xpcFJlY3QpKSkKKyAgICAgICAgc2V0TlBXaW5kb3dJZk5lZWRl
ZCgpOworCisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnNldEZvY3Vz
KGJvb2wgZm9jdXNlZCkKK3sKKyAgICBXaWRnZXQ6OnNldEZvY3VzKGZvY3VzZWQpOworfQorCit2
b2lkIFBsdWdpblZpZXc6OnNob3coKQoreworICAgIFFfQVNTRVJUKHBsYXRmb3JtUGx1Z2luV2lk
Z2V0KCkgPT0gcGxhdGZvcm1XaWRnZXQoKSk7CisgICAgV2lkZ2V0OjpzaG93KCk7Cit9CisKK3Zv
aWQgUGx1Z2luVmlldzo6aGlkZSgpCit7CisgICAgUV9BU1NFUlQocGxhdGZvcm1QbHVnaW5XaWRn
ZXQoKSA9PSBwbGF0Zm9ybVdpZGdldCgpKTsKKyAgICBXaWRnZXQ6OmhpZGUoKTsKK30KKworc3Rh
dGljIHZvaWQgc2V0dXBHcmFwaGljc0V4cG9zZUV2ZW50KFBpeG1hcCBkcmF3YWJsZSwgY29uc3Qg
UVJlY3QmIGV4cG9zZWRSZWN0LCBYRXZlbnQmIHhldmVudCkKK3sKKyAgICBtZW1zZXQoJnhldmVu
dCwgMCwgc2l6ZW9mKFhFdmVudCkpOworICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50JiBleHBvc2VF
dmVudCA9IHhldmVudC54Z3JhcGhpY3NleHBvc2U7CisgICAgZXhwb3NlRXZlbnQudHlwZSA9IEdy
YXBoaWNzRXhwb3NlOworICAgIGV4cG9zZUV2ZW50LmRpc3BsYXkgPSB4MTFEaXNwbGF5KCk7Cisg
ICAgZXhwb3NlRXZlbnQuZHJhd2FibGUgPSBkcmF3YWJsZTsKKyAgICBleHBvc2VFdmVudC54ID0g
ZXhwb3NlZFJlY3QueCgpOworICAgIGV4cG9zZUV2ZW50LnkgPSBleHBvc2VkUmVjdC55KCk7Cisg
ICAgZXhwb3NlRXZlbnQud2lkdGggPSBleHBvc2VkUmVjdC54KCkgKyBleHBvc2VkUmVjdC53aWR0
aCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyB3aWR0aCBpcyB0aGUgcmlnaHQgaW4gdHJhbnNw
YXJlbnQgbW9kZQorICAgIGV4cG9zZUV2ZW50LmhlaWdodCA9IGV4cG9zZWRSZWN0LnkoKSArIGV4
cG9zZWRSZWN0LmhlaWdodCgpOyAvLyBmbGFzaCBidWc/IGl0IHRoaW5rcyBoZWlnaHQgaXMgdGhl
IGJvdHRvbSBpbiB0cmFuc3BhcmVudCBtb2RlCit9CisKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnRV
c2luZ1hQaXhtYXAoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0ICZleHBvc2VkUmVjdCkK
K3sKKyAgICBib29sIHNob3VsZFN5bmNYID0gbV9wbHVnaW5EaXNwbGF5ICYmIG1fcGx1Z2luRGlz
cGxheSAhPSB4MTFEaXNwbGF5KCk7CisgICAgWEV2ZW50IHhldmVudDsKKworICAgIHNldHVwR3Jh
cGhpY3NFeHBvc2VFdmVudChtX2RyYXdhYmxlLCBleHBvc2VkUmVjdCwgeGV2ZW50KTsKKyAgICBk
aXNwYXRjaE5QRXZlbnQoeGV2ZW50KTsKKworICAgIGlmIChzaG91bGRTeW5jWCkKKyAgICAgICAg
WFN5bmMobV9wbHVnaW5EaXNwbGF5LCBmYWxzZSk7IC8vIHN5bmMgY2hhbmdlcyBieSBwbHVnaW4K
KworICAgIFhJbWFnZSogeEltYWdlID0gWEdldEltYWdlKHgxMURpc3BsYXkoKSwgbV9kcmF3YWJs
ZSwgZXhwb3NlZFJlY3QueCgpLCBleHBvc2VkUmVjdC55KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXhwb3NlZFJlY3Qud2lkdGgoKSwgZXhwb3NlZFJlY3QuaGVpZ2h0KCksIFVM
T05HX01BWCwgWlBpeG1hcCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludChleHBvc2Vk
UmVjdC54KCksIGV4cG9zZWRSZWN0LnkoKSksIHFpbWFnZUZyb21YSW1hZ2UoeEltYWdlKSk7Cisg
ICAgWERlc3Ryb3lJbWFnZSh4SW1hZ2UpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAo
IW1faXNTdGFydGVkKSB7CisgICAgICAgIHBhaW50TWlzc2luZ1BsdWdpbkljb24oY29udGV4dCwg
cmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXROUFdpbmRvd0lmTmVlZGVk
KCk7CisKKyAgICBpZiAobV9pc1dpbmRvd2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1fZHJhd2FibGUpCisgICAgICAgIHJldHVybjsKKworICAgIFFQYWludGVyKiBwYWludGVyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgSW50UmVjdCBleHBvc2VkUmVjdChyZWN0
KTsKKyAgICBleHBvc2VkUmVjdC5pbnRlcnNlY3QoZnJhbWVSZWN0KCkpOworICAgIGV4cG9zZWRS
ZWN0Lm1vdmUoLWZyYW1lUmVjdCgpLngoKSwgLWZyYW1lUmVjdCgpLnkoKSk7CisKKyAgICBwYWlu
dGVyLT50cmFuc2xhdGUoZnJhbWVSZWN0KCkueCgpLCBmcmFtZVJlY3QoKS55KCkpOworICAgIHBh
aW50VXNpbmdYUGl4bWFwKHBhaW50ZXIsIGV4cG9zZWRSZWN0KTsKKyAgICBwYWludGVyLT50cmFu
c2xhdGUoLWZyYW1lUmVjdCgpLngoKSwgLWZyYW1lUmVjdCgpLnkoKSk7Cit9CisKKy8vIFRPRE86
IFVuaWZ5IGFjcm9zcyBwb3J0cy4KK2Jvb2wgUGx1Z2luVmlldzo6ZGlzcGF0Y2hOUEV2ZW50KE5Q
RXZlbnQmIGV2ZW50KQoreworICAgIGlmICghbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPmV2ZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHNob3VsZFBvcCA9IGZhbHNlOwor
CisgICAgaWYgKG1fcGx1Z2luLT5wbHVnaW5GdW5jcygpLT52ZXJzaW9uIDwgTlBWRVJTX0hBU19Q
T1BVUFNfRU5BQkxFRF9TVEFURQorICAgICAgICAmJiAoZXZlbnQudHlwZSA9PSBCdXR0b25SZWxl
YXNlIHx8IGV2ZW50LnR5cGUgPT0gMyAvKktleVJlbGVhc2UqLykpIHsKKyAgICAgICAgcHVzaFBv
cHVwc0VuYWJsZWRTdGF0ZSh0cnVlKTsKKyAgICAgICAgc2hvdWxkUG9wID0gdHJ1ZTsKKyAgICB9
CisKKyAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyAgICBKU0M6
OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1v
blZNKCkpOworICAgIHNldENhbGxpbmdQbHVnaW4odHJ1ZSk7CisgICAgYm9vbCBhY2NlcHRlZCA9
ICFtX3BsdWdpbi0+cGx1Z2luRnVuY3MoKS0+ZXZlbnQobV9pbnN0YW5jZSwgJmV2ZW50KTsKKyAg
ICBzZXRDYWxsaW5nUGx1Z2luKGZhbHNlKTsKKyAgICBQbHVnaW5WaWV3OjpzZXRDdXJyZW50UGx1
Z2luVmlldygwKTsKKworICAgIGlmIChzaG91bGRQb3ApCisgICAgICAgIHBvcFBvcHVwc0VuYWJs
ZWRTdGF0ZSgpOworCisgICAgcmV0dXJuIGFjY2VwdGVkOworfQorCit2b2lkIHNldFNoYXJlZFhF
dmVudEZpZWxkcyhYRXZlbnQqIHhFdmVudCwgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQpCit7
CisgICAgeEV2ZW50LT54YW55LnNlcmlhbCA9IDA7IC8vIHdlIGFyZSB1bmF3YXJlIG9mIHRoZSBs
YXN0IHJlcXVlc3QgcHJvY2Vzc2VkIGJ5IFggU2VydmVyCisgICAgeEV2ZW50LT54YW55LnNlbmRf
ZXZlbnQgPSBmYWxzZTsKKyAgICB4RXZlbnQtPnhhbnkuZGlzcGxheSA9IHgxMURpc3BsYXkoKTsK
KyAgICAvLyBOT1RFOiBldmVudC0+eGFueS53aW5kb3cgZG9lc24ndCBhbHdheXMgcmVzcG9uZCB0
byB0aGUgLndpbmRvdyBwcm9wZXJ0eSBvZiBvdGhlciBYRXZlbnQncworICAgIC8vIGJ1dCBkb2Vz
IGluIHRoZSBjYXNlIG9mIEtleVByZXNzLCBLZXlSZWxlYXNlLCBCdXR0b25QcmVzcywgQnV0dG9u
UmVsZWFzZSwgYW5kIE1vdGlvbk5vdGlmeQorICAgIC8vIGV2ZW50czsgdGh1cywgdGhpcyBpcyBy
aWdodDoKKyAgICBRV2luZG93KiB3aW5kb3cgPSBwYWdlQ2xpZW50ID8gcGFnZUNsaWVudC0+b3du
ZXJXaW5kb3coKSA6IDA7CisgICAgeEV2ZW50LT54YW55LndpbmRvdyA9IHdpbmRvdyA/IHdpbmRv
dy0+d2luSWQoKSA6IDA7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6aW5pdFhFdmVudChYRXZlbnQq
IHhFdmVudCkKK3sKKyAgICBtZW1zZXQoeEV2ZW50LCAwLCBzaXplb2YoWEV2ZW50KSk7CisKKyAg
ICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcGxhdGZvcm1QYWdlQ2xpZW50KCk7CisgICAgc2V0
U2hhcmVkWEV2ZW50RmllbGRzKHhFdmVudCwgY2xpZW50KTsKK30KKwordm9pZCBQbHVnaW5WaWV3
OjpzZXRYS2V5RXZlbnRTcGVjaWZpY0ZpZWxkcyhYRXZlbnQqIHhFdmVudCwgS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCit7CisgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXlFdmVudCA9
IGV2ZW50LT5rZXlFdmVudCgpOworCisgICAgeEV2ZW50LT50eXBlID0gKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgPyAyIDogMzsgLy8gaW50cyBhcyBRdCB1bnNl
dHMgS2V5UHJlc3MgYW5kIEtleVJlbGVhc2UKKyAgICB4RXZlbnQtPnhrZXkucm9vdCA9IHJvb3RX
aW5kb3dJRCgpOworICAgIHhFdmVudC0+eGtleS5zdWJ3aW5kb3cgPSAwOyAvLyB3ZSBoYXZlIG5v
IGNoaWxkIHdpbmRvdworICAgIHhFdmVudC0+eGtleS50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgp
OworICAgIHhFdmVudC0+eGtleS5zdGF0ZSA9IGtleUV2ZW50LT5uYXRpdmVNb2RpZmllcnMoKTsK
KyAgICB4RXZlbnQtPnhrZXkua2V5Y29kZSA9IGtleUV2ZW50LT5uYXRpdmVTY2FuQ29kZSgpOwor
CisgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGEgbmF0aXZlU2NhbkNvZGUoKSBpZiB0aGUga2V5IGV2
ZW50IGlzIGZyb20gRFJUJ3MgZXZlbnRzZW5kZXIuIEluIHRoYXQKKyAgICAvLyBjYXNlIGZldGNo
IHRoZSBYRXZlbnQncyBrZXljb2RlIGZyb20gdGhlIGV2ZW50J3MgdGV4dC4gVGhlIG9ubHkKKyAg
ICAvLyBwbGFjZSB0aGlzIGtleWNvZGUgd2lsbCBiZSB1c2VkIGlzIGluIHdlYmtpdF90ZXN0X3Bs
dWdpbl9oYW5kbGVfZXZlbnQoKS4KKyAgICAvLyBGSVhNRTogQ3JlYXRlIFF0IEFQSSBzbyB0aGF0
IHdlIGNhbiBzZXQgdGhlIGFwcHJvcHJpYXRlIGtleWNvZGUgaW4gRFJUIEV2ZW50U2VuZGVyIGlu
c3RlYWQuCisgICAgaWYgKHNfaXNSdW5uaW5nVW5kZXJEUlQgJiYgIXhFdmVudC0+eGtleS5rZXlj
b2RlKSB7CisgICAgICAgIFFLZXlFdmVudCogcUtleUV2ZW50ID0ga2V5RXZlbnQtPnF0RXZlbnQo
KTsKKyAgICAgICAgQVNTRVJUKHFLZXlFdmVudCk7CisgICAgICAgIFFTdHJpbmcga2V5VGV4dCA9
IHFLZXlFdmVudC0+dGV4dCgpLmxlZnQoMSk7CisgICAgICAgIHhFdmVudC0+eGtleS5rZXljb2Rl
ID0gWEtleXN5bVRvS2V5Y29kZSh4MTFEaXNwbGF5KCksIFhTdHJpbmdUb0tleXN5bShrZXlUZXh0
LnRvVXRmOCgpLmNvbnN0RGF0YSgpKSk7CisgICAgfQorCisgICAgeEV2ZW50LT54a2V5LnNhbWVf
c2NyZWVuID0gdHJ1ZTsKKworICAgIC8vIE5PVEU6IEFzIHRoZSBYRXZlbnRzIHNlbnQgdG8gdGhl
IHBsdWctaW4gYXJlIHN5bnRoZXNpemVkIGFuZCB0aGVyZSBpcyBub3QgYSBuYXRpdmUgd2luZG93
CisgICAgLy8gY29ycmVzcG9uZGluZyB0byB0aGUgcGx1Zy1pbiByZWN0YW5nbGUsIHNvbWUgb2Yg
dGhlIG1lbWJlcnMgb2YgdGhlIFhFdmVudCBzdHJ1Y3R1cmVzIGFyZSBub3QKKyAgICAvLyBzZXQg
dG8gdGhlaXIgbm9ybWFsIFhzZXJ2ZXIgdmFsdWVzLiBlLmcuIEtleSBldmVudHMgZG9uJ3QgaGF2
ZSBhIHBvc2l0aW9uLgorICAgIC8vIHNvdXJjZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5v
cmcvZW4vTlBFdmVudAorICAgIHhFdmVudC0+eGtleS54ID0gMDsKKyAgICB4RXZlbnQtPnhrZXku
eSA9IDA7CisgICAgeEV2ZW50LT54a2V5Lnhfcm9vdCA9IDA7CisgICAgeEV2ZW50LT54a2V5Lnlf
cm9vdCA9IDA7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAobV9pc1dpbmRvd2VkKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50
ICYmIGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFhFdmVudCBucEV2ZW50OworICAgIGluaXRYRXZlbnQoJm5wRXZlbnQpOwor
ICAgIHNldFhLZXlFdmVudFNwZWNpZmljRmllbGRzKCZucEV2ZW50LCBldmVudCk7CisKKyAgICBp
ZiAoZGlzcGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBpbnB1dEV2ZW50U3RhdGUoTW91c2VF
dmVudCogZXZlbnQpCit7CisgICAgdW5zaWduZWQgaW50IHN0YXRlID0gMDsKKyAgICBpZiAoZXZl
bnQtPmN0cmxLZXkoKSkKKyAgICAgICAgc3RhdGUgfD0gQ29udHJvbE1hc2s7CisgICAgaWYgKGV2
ZW50LT5zaGlmdEtleSgpKQorICAgICAgICBzdGF0ZSB8PSBTaGlmdE1hc2s7CisgICAgaWYgKGV2
ZW50LT5hbHRLZXkoKSkKKyAgICAgICAgc3RhdGUgfD0gTW9kMU1hc2s7CisgICAgaWYgKGV2ZW50
LT5tZXRhS2V5KCkpCisgICAgICAgIHN0YXRlIHw9IE1vZDRNYXNrOworICAgIHJldHVybiBzdGF0
ZTsKK30KKworc3RhdGljIHZvaWQgc2V0WEJ1dHRvbkV2ZW50U3BlY2lmaWNGaWVsZHMoWEV2ZW50
KiB4RXZlbnQsIE1vdXNlRXZlbnQqIGV2ZW50LCBjb25zdCBJbnRQb2ludCYgcG9zdFpvb21Qb3Mp
Cit7CisgICAgWEJ1dHRvbkV2ZW50JiB4YnV0dG9uID0geEV2ZW50LT54YnV0dG9uOworICAgIHhi
dXR0b24udHlwZSA9IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50
ID8gQnV0dG9uUHJlc3MgOiBCdXR0b25SZWxlYXNlOworICAgIHhidXR0b24ucm9vdCA9IHJvb3RX
aW5kb3dJRCgpOworICAgIHhidXR0b24uc3Vid2luZG93ID0gMDsKKyAgICB4YnV0dG9uLnRpbWUg
PSBldmVudC0+dGltZVN0YW1wKCk7CisgICAgeGJ1dHRvbi54ID0gcG9zdFpvb21Qb3MueCgpOwor
ICAgIHhidXR0b24ueSA9IHBvc3Rab29tUG9zLnkoKTsKKyAgICB4YnV0dG9uLnhfcm9vdCA9IGV2
ZW50LT5zY3JlZW5YKCk7CisgICAgeGJ1dHRvbi55X3Jvb3QgPSBldmVudC0+c2NyZWVuWSgpOwor
ICAgIHhidXR0b24uc3RhdGUgPSBpbnB1dEV2ZW50U3RhdGUoZXZlbnQpOworICAgIHN3aXRjaCAo
ZXZlbnQtPmJ1dHRvbigpKSB7CisgICAgY2FzZSBNaWRkbGVCdXR0b246CisgICAgICAgIHhidXR0
b24uYnV0dG9uID0gQnV0dG9uMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSaWdodEJ1dHRv
bjoKKyAgICAgICAgeGJ1dHRvbi5idXR0b24gPSBCdXR0b24zOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExlZnRCdXR0b246CisgICAgZGVmYXVsdDoKKyAgICAgICAgeGJ1dHRvbi5idXR0b24g
PSBCdXR0b24xOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgeGJ1dHRvbi5zYW1lX3NjcmVl
biA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFhNb3Rpb25FdmVudFNwZWNpZmljRmllbGRz
KFhFdmVudCogeEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgY29uc3QgSW50UG9pbnQmIHBvc3Ra
b29tUG9zKQoreworICAgIFhNb3Rpb25FdmVudCYgeG1vdGlvbiA9IHhFdmVudC0+eG1vdGlvbjsK
KyAgICB4bW90aW9uLnR5cGUgPSBNb3Rpb25Ob3RpZnk7CisgICAgeG1vdGlvbi5yb290ID0gcm9v
dFdpbmRvd0lEKCk7CisgICAgeG1vdGlvbi5zdWJ3aW5kb3cgPSAwOworICAgIHhtb3Rpb24udGlt
ZSA9IGV2ZW50LT50aW1lU3RhbXAoKTsKKyAgICB4bW90aW9uLnggPSBwb3N0Wm9vbVBvcy54KCk7
CisgICAgeG1vdGlvbi55ID0gcG9zdFpvb21Qb3MueSgpOworICAgIHhtb3Rpb24ueF9yb290ID0g
ZXZlbnQtPnNjcmVlblgoKTsKKyAgICB4bW90aW9uLnlfcm9vdCA9IGV2ZW50LT5zY3JlZW5ZKCk7
CisgICAgeG1vdGlvbi5zdGF0ZSA9IGlucHV0RXZlbnRTdGF0ZShldmVudCk7CisgICAgeG1vdGlv
bi5pc19oaW50ID0gTm90aWZ5Tm9ybWFsOworICAgIHhtb3Rpb24uc2FtZV9zY3JlZW4gPSB0cnVl
OworfQorCitzdGF0aWMgdm9pZCBzZXRYQ3Jvc3NpbmdFdmVudFNwZWNpZmljRmllbGRzKFhFdmVu
dCogeEV2ZW50LCBNb3VzZUV2ZW50KiBldmVudCwgY29uc3QgSW50UG9pbnQmIHBvc3Rab29tUG9z
KQoreworICAgIFhDcm9zc2luZ0V2ZW50JiB4Y3Jvc3NpbmcgPSB4RXZlbnQtPnhjcm9zc2luZzsK
KyAgICB4Y3Jvc3NpbmcudHlwZSA9IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNl
b3ZlckV2ZW50ID8gRW50ZXJOb3RpZnkgOiBMZWF2ZU5vdGlmeTsKKyAgICB4Y3Jvc3Npbmcucm9v
dCA9IHJvb3RXaW5kb3dJRCgpOworICAgIHhjcm9zc2luZy5zdWJ3aW5kb3cgPSAwOworICAgIHhj
cm9zc2luZy50aW1lID0gZXZlbnQtPnRpbWVTdGFtcCgpOworICAgIHhjcm9zc2luZy54ID0gcG9z
dFpvb21Qb3MueSgpOworICAgIHhjcm9zc2luZy55ID0gcG9zdFpvb21Qb3MueCgpOworICAgIHhj
cm9zc2luZy54X3Jvb3QgPSBldmVudC0+c2NyZWVuWCgpOworICAgIHhjcm9zc2luZy55X3Jvb3Qg
PSBldmVudC0+c2NyZWVuWSgpOworICAgIHhjcm9zc2luZy5zdGF0ZSA9IGlucHV0RXZlbnRTdGF0
ZShldmVudCk7CisgICAgeGNyb3NzaW5nLm1vZGUgPSBOb3RpZnlOb3JtYWw7CisgICAgeGNyb3Nz
aW5nLmRldGFpbCA9IE5vdGlmeURldGFpbE5vbmU7CisgICAgeGNyb3NzaW5nLnNhbWVfc2NyZWVu
ID0gdHJ1ZTsKKyAgICB4Y3Jvc3NpbmcuZm9jdXMgPSBmYWxzZTsKK30KKwordm9pZCBQbHVnaW5W
aWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChtX2lz
V2luZG93ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChldmVudC0+YnV0dG9uKCkgPT0g
UmlnaHRCdXR0b24gJiYgbV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrSWdu
b3JlUmlnaHRDbGlja0luV2luZG93bGVzc01vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKKyAgICAg
ICAgLy8gR2l2ZSBmb2N1cyB0byB0aGUgcGx1Z2luIG9uIGNsaWNrCisgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuc2V0QWN0aXZlKHRydWUpOworCisgICAgICAgIGZvY3VzUGx1Z2luRWxlbWVu
dCgpOworICAgIH0KKworICAgIFhFdmVudCBucEV2ZW50OworICAgIGluaXRYRXZlbnQoJm5wRXZl
bnQpOworCisgICAgSW50UG9pbnQgcG9zdFpvb21Qb3MgPSByb3VuZGVkSW50UG9pbnQobV9lbGVt
ZW50LT5yZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9jYWwoZXZlbnQtPmFic29sdXRlTG9jYXRpb24o
KSkpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2
ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkKKyAgICAg
ICAgc2V0WEJ1dHRvbkV2ZW50U3BlY2lmaWNGaWVsZHMoJm5wRXZlbnQsIGV2ZW50LCBwb3N0Wm9v
bVBvcyk7CisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vt
b3ZlRXZlbnQpCisgICAgICAgIHNldFhNb3Rpb25FdmVudFNwZWNpZmljRmllbGRzKCZucEV2ZW50
LCBldmVudCwgcG9zdFpvb21Qb3MpOworICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2VvdmVyRXZlbnQpCisgICAgICAgIHNldFhDcm9zc2luZ0V2ZW50U3BlY2lmaWNGaWVsZHMo
Jm5wRXZlbnQsIGV2ZW50LCBwb3N0Wm9vbVBvcyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoZGlzcGF0Y2hOUEV2ZW50KG5wRXZlbnQpKQorICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVGb2N1c0luRXZl
bnQoKQoreworICAgIFhFdmVudCBucEV2ZW50OworICAgIGluaXRYRXZlbnQoJm5wRXZlbnQpOwor
CisgICAgWEZvY3VzQ2hhbmdlRXZlbnQmIGV2ZW50ID0gbnBFdmVudC54Zm9jdXM7CisgICAgZXZl
bnQudHlwZSA9IDk7IC8qIGludCBhcyBRdCB1bnNldHMgRm9jdXNJbiAqLworICAgIGV2ZW50Lm1v
ZGUgPSBOb3RpZnlOb3JtYWw7CisgICAgZXZlbnQuZGV0YWlsID0gTm90aWZ5RGV0YWlsTm9uZTsK
KworICAgIGRpc3BhdGNoTlBFdmVudChucEV2ZW50KTsKK30KKwordm9pZCBQbHVnaW5WaWV3Ojpo
YW5kbGVGb2N1c091dEV2ZW50KCkKK3sKKyAgICBYRXZlbnQgbnBFdmVudDsKKyAgICBpbml0WEV2
ZW50KCZucEV2ZW50KTsKKworICAgIFhGb2N1c0NoYW5nZUV2ZW50JiBldmVudCA9IG5wRXZlbnQu
eGZvY3VzOworICAgIGV2ZW50LnR5cGUgPSAxMDsgLyogaW50IGFzIFF0IHVuc2V0cyBGb2N1c091
dCAqLworICAgIGV2ZW50Lm1vZGUgPSBOb3RpZnlOb3JtYWw7CisgICAgZXZlbnQuZGV0YWlsID0g
Tm90aWZ5RGV0YWlsTm9uZTsKKworICAgIGRpc3BhdGNoTlBFdmVudChucEV2ZW50KTsKK30KKwor
dm9pZCBQbHVnaW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50KQoreworICAgIFdp
ZGdldDo6c2V0UGFyZW50KHBhcmVudCk7CisKKyAgICBpZiAocGFyZW50KQorICAgICAgICBpbml0
KCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dSZWN0KGNvbnN0IEludFJlY3Qm
KQoreworICAgIGlmICghbV9pc1dpbmRvd2VkKQorICAgICAgICBzZXROUFdpbmRvd0lmTmVlZGVk
KCk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCit7CisgICAg
aWYgKCFtX2lzU3RhcnRlZCB8fCAhcGFyZW50KCkgfHwgIW1fcGx1Z2luLT5wbHVnaW5GdW5jcygp
LT5zZXR3aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSBwbHVnaW4gZGlk
bid0IGxvYWQgc3VjZXNzZnVsbHksIG5vIHBvaW50IGluIGNhbGxpbmcgc2V0d2luZG93CisgICAg
aWYgKG1fc3RhdHVzICE9IFBsdWdpblN0YXR1c0xvYWRlZFN1Y2Nlc3NmdWxseSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gT24gVW5peCwgb25seSBjYWxsIHBsdWdpbiBpZiBpdCdzIGZ1bGwt
cGFnZSBvciB3aW5kb3dlZAorICAgIGlmIChtX21vZGUgIT0gTlBfRlVMTCAmJiBtX21vZGUgIT0g
TlBfRU1CRUQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENoZWNrIGlmIHRoZSBwbGF0Zm9y
bVBsdWdpbldpZGdldCBzdGlsbCBleGlzdHMKKyAgICBpZiAobV9pc1dpbmRvd2VkICYmICFwbGF0
Zm9ybVBsdWdpbldpZGdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faGFzUGVu
ZGluZ0dlb21ldHJ5Q2hhbmdlKQorICAgICAgICByZXR1cm47CisgICAgbV9oYXNQZW5kaW5nR2Vv
bWV0cnlDaGFuZ2UgPSBmYWxzZTsKKworICAgIG1fbnBXaW5kb3cueCA9IDA7CisgICAgbV9ucFdp
bmRvdy55ID0gMDsKKworICAgIC8vIElmIHRoZSB3aWR0aCBvciBoZWlnaHQgYXJlIG51bGwsIHNl
dCB0aGUgY2xpcFJlY3QgdG8gbnVsbCwgaW5kaWNhdGluZyB0aGF0CisgICAgLy8gdGhlIHBsdWdp
biBpcyBub3QgdmlzaWJsZS9zY3JvbGxlZCBvdXQuCisgICAgaWYgKCFtX2NsaXBSZWN0LndpZHRo
KCkgfHwgIW1fY2xpcFJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAgbV9ucFdpbmRvdy5jbGlwUmVj
dC5sZWZ0ID0gMDsKKyAgICAgICAgbV9ucFdpbmRvdy5jbGlwUmVjdC5yaWdodCA9IDA7CisgICAg
ICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QudG9wID0gMDsKKyAgICAgICAgbV9ucFdpbmRvdy5jbGlw
UmVjdC5ib3R0b20gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIENsaXBwaW5nIHJlY3Rh
bmdsZSBvZiB0aGUgcGx1Zy1pbjsgdGhlIG9yaWdpbiBpcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9m
IHRoZSBkcmF3YWJsZSBvciB3aW5kb3cuIAorICAgICAgICBtX25wV2luZG93LmNsaXBSZWN0Lmxl
ZnQgPSBtX25wV2luZG93LnggKyBtX2NsaXBSZWN0LngoKTsKKyAgICAgICAgbV9ucFdpbmRvdy5j
bGlwUmVjdC50b3AgPSBtX25wV2luZG93LnkgKyBtX2NsaXBSZWN0LnkoKTsKKyAgICAgICAgbV9u
cFdpbmRvdy5jbGlwUmVjdC5yaWdodCA9IG1fbnBXaW5kb3cueCArIG1fY2xpcFJlY3QueCgpICsg
bV9jbGlwUmVjdC53aWR0aCgpOworICAgICAgICBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRvbSA9
IG1fbnBXaW5kb3cueSArIG1fY2xpcFJlY3QueSgpICsgbV9jbGlwUmVjdC5oZWlnaHQoKTsKKyAg
ICB9CisKKyAgICBpZiAobV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrRG9u
dENhbGxTZXRXaW5kb3dNb3JlVGhhbk9uY2UpKSB7CisgICAgICAgIC8vIEZMQVNIIFdPUktBUk9V
TkQ6IE9ubHkgc2V0IGluaXRpYWxseS4gTXVsdGlwbGUgY2FsbHMgdG8KKyAgICAgICAgLy8gc2V0
TlBXaW5kb3coKSBjYXVzZSB0aGUgcGx1Z2luIHRvIGNyYXNoIGluIHdpbmRvd2VkIG1vZGUuCisg
ICAgICAgIGlmICghbV9pc1dpbmRvd2VkIHx8IG1fbnBXaW5kb3cud2lkdGggPT0gLTEgfHwgbV9u
cFdpbmRvdy5oZWlnaHQgPT0gLTEpIHsKKyAgICAgICAgICAgIG1fbnBXaW5kb3cud2lkdGggPSBt
X3dpbmRvd1JlY3Qud2lkdGgoKTsKKyAgICAgICAgICAgIG1fbnBXaW5kb3cuaGVpZ2h0ID0gbV93
aW5kb3dSZWN0LmhlaWdodCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9u
cFdpbmRvdy53aWR0aCA9IG1fd2luZG93UmVjdC53aWR0aCgpOworICAgICAgICBtX25wV2luZG93
LmhlaWdodCA9IG1fd2luZG93UmVjdC5oZWlnaHQoKTsKKyAgICB9CisKKyAgICBQbHVnaW5WaWV3
OjpzZXRDdXJyZW50UGx1Z2luVmlldyh0aGlzKTsKKyAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExv
Y2tzIGRyb3BBbGxMb2NrcyhKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCkpOworICAgIHNldENh
bGxpbmdQbHVnaW4odHJ1ZSk7CisgICAgbV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnNldHdpbmRv
dyhtX2luc3RhbmNlLCAmbV9ucFdpbmRvdyk7CisgICAgc2V0Q2FsbGluZ1BsdWdpbihmYWxzZSk7
CisgICAgUGx1Z2luVmlldzo6c2V0Q3VycmVudFBsdWdpblZpZXcoMCk7Cit9CisKK3ZvaWQgUGx1
Z2luVmlldzo6c2V0UGFyZW50VmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgaWYgKGlzUGFy
ZW50VmlzaWJsZSgpID09IHZpc2libGUpCisgICAgICAgIHJldHVybjsKKworICAgIFdpZGdldDo6
c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKK30KKworTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5k
bGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29uc3Qg
Y2hhciogYnVmKQoreworICAgIFN0cmluZyBmaWxlbmFtZShidWYsIGxlbik7CisKKyAgICBpZiAo
ZmlsZW5hbWUuc3RhcnRzV2l0aCgiZmlsZTovLy8iKSkKKyAgICAgICAgZmlsZW5hbWUgPSBmaWxl
bmFtZS5zdWJzdHJpbmcoOCk7CisKKyAgICBsb25nIGxvbmcgc2l6ZTsKKyAgICBpZiAoIWdldEZp
bGVTaXplKGZpbGVuYW1lLCBzaXplKSkKKyAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZP
VU5EOworCisgICAgRklMRSogZmlsZUhhbmRsZSA9IGZvcGVuKChmaWxlbmFtZS51dGY4KCkpLmRh
dGEoKSwgInIiKTsKKyAgICBpZiAoIWZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBOUEVSUl9G
SUxFX05PVF9GT1VORDsKKworICAgIGJ1ZmZlci5yZXNpemUoc2l6ZSk7CisgICAgaW50IGJ5dGVz
UmVhZCA9IGZyZWFkKGJ1ZmZlci5kYXRhKCksIDEsIHNpemUsIGZpbGVIYW5kbGUpOworCisgICAg
ZmNsb3NlKGZpbGVIYW5kbGUpOworCisgICAgaWYgKGJ5dGVzUmVhZCA8PSAwKQorICAgICAgICBy
ZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CisKKyAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7
Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1HZXRWYWx1ZVN0YXRpYyhOUE5WYXJpYWJs
ZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJyb3IqIHJlc3VsdCkKK3sKKyAgICBzd2l0Y2gg
KHZhcmlhYmxlKSB7CisgICAgY2FzZSBOUE5WVG9vbGtpdDoKKyAgICAgICAgKnN0YXRpY19jYXN0
PHVpbnQzMl90Kj4odmFsdWUpID0gMDsKKyAgICAgICAgKnJlc3VsdCA9IE5QRVJSX05PX0VSUk9S
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgTlBOVlN1cHBvcnRzWEVtYmVkQm9v
bDoKKyAgICAgICAgKnN0YXRpY19jYXN0PE5QQm9vbCo+KHZhbHVlKSA9IHRydWU7CisgICAgICAg
ICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBj
YXNlIE5QTlZqYXZhc2NyaXB0RW5hYmxlZEJvb2w6CisgICAgICAgICpzdGF0aWNfY2FzdDxOUEJv
b2wqPih2YWx1ZSkgPSB0cnVlOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7Cisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBOUE5WU3VwcG9ydHNXaW5kb3dsZXNzOgor
ICAgICAgICAqc3RhdGljX2Nhc3Q8TlBCb29sKj4odmFsdWUpID0gdHJ1ZTsKKyAgICAgICAgKnJl
c3VsdCA9IE5QRVJSX05PX0VSUk9SOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6
cGxhdGZvcm1HZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUsIE5QRXJy
b3IqIHJlc3VsdCkKK3sKKyAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgY2FzZSBOUE5WeERp
c3BsYXk6CisgICAgICAgICpyZWludGVycHJldF9jYXN0PHZvaWQqKj4odmFsdWUpID0geDExRGlz
cGxheSgpOworICAgICAgICAqcmVzdWx0ID0gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgY2FzZSBOUE5WeHRBcHBDb250ZXh0OgorICAgICAgICAqcmVzdWx0ID0g
TlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIE5Q
TlZuZXRzY2FwZVdpbmRvdzogeworICAgICAgICBRV2ViUGFnZUNsaWVudCogY2xpZW50ID0gcGxh
dGZvcm1QYWdlQ2xpZW50KCk7CisgICAgICAgIFFXaW5kb3cqIHdpbmRvdyA9IGNsaWVudCA/IGNs
aWVudC0+b3duZXJXaW5kb3coKSA6IDA7CisgICAgICAgICpyZWludGVycHJldF9jYXN0PFhJRCo+
KHZhbHVlKSA9IHdpbmRvdyA/IHdpbmRvdy0+d2luSWQoKSA6IDA7CisgICAgICAgICpyZXN1bHQg
PSBOUEVSUl9OT19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgY2Fz
ZSBOUE5WVG9vbGtpdDoKKyAgICAgICAgaWYgKG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQ
bHVnaW5RdWlya1JlcXVpcmVzR3RrVG9vbEtpdCkpIHsKKyAgICAgICAgICAgICooKHVpbnQzMl90
ICopdmFsdWUpID0gMjsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQg
UGx1Z2luVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBp
bnZhbGlkYXRlV2luZG93bGVzc1BsdWdpblJlY3QocmVjdCk7Cit9CisKK3ZvaWQgUGx1Z2luVmll
dzo6aW52YWxpZGF0ZVJlY3QoTlBSZWN0KiByZWN0KQoreworICAgIGlmICghcmVjdCkgeworICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSW50UmVjdCBy
KHJlY3QtPmxlZnQsIHJlY3QtPnRvcCwgcmVjdC0+cmlnaHQgLSByZWN0LT5sZWZ0LCByZWN0LT5i
b3R0b20gLSByZWN0LT50b3ApOworICAgIGludmFsaWRhdGVSZWN0KHIpOworfQorCit2b2lkIFBs
dWdpblZpZXc6OmludmFsaWRhdGVSZWdpb24oTlBSZWdpb24gcmVnaW9uKQoreworICAgIFFfVU5V
U0VEKHJlZ2lvbik7CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFBsdWdpblZpZXc6OmZv
cmNlUmVkcmF3KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKK3N0YXRpYyBEaXNwbGF5ICpn
ZXRQbHVnaW5EaXNwbGF5KCkKK3sKKyAgICAvLyBUaGUgcGx1Z2luIHRvb2xraXQgbWlnaHQgcnVu
IHVzaW5nIGEgZGlmZmVyZW50IFggY29ubmVjdGlvbi4gQXQgdGhlIG1vbWVudCwgd2Ugb25seQor
ICAgIC8vIHN1cHBvcnQgZ2RrIGJhc2VkIHBsdWdpbnMgKGxpa2UgZmxhc2gpIHRoYXQgdXNlIGEg
ZGlmZmVyZW50IFggY29ubmVjdGlvbi4KKyAgICAvLyBUaGUgY29kZSBiZWxvdyBoYXMgdGhlIHNh
bWUgZWZmZWN0IGFzIHRoaXMgb25lOgorICAgIC8vIERpc3BsYXkgKmdka0Rpc3BsYXkgPSBnZGtf
eDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpOworICAg
IFFMaWJyYXJ5IGxpYnJhcnkoUUxhdGluMVN0cmluZygibGliZ2RrLXgxMS0yLjAiKSwgMCk7Cisg
ICAgaWYgKCFsaWJyYXJ5LmxvYWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB0eXBlZGVm
IHZvaWQgKigqZ2RrX2luaXRfY2hlY2tfcHRyKSh2b2lkKiwgdm9pZCopOworICAgIGdka19pbml0
X2NoZWNrX3B0ciBnZGtfaW5pdF9jaGVjayA9IChnZGtfaW5pdF9jaGVja19wdHIpbGlicmFyeS5y
ZXNvbHZlKCJnZGtfaW5pdF9jaGVjayIpOworICAgIGlmICghZ2RrX2luaXRfY2hlY2spCisgICAg
ICAgIHJldHVybiAwOworCisgICAgdHlwZWRlZiB2b2lkICooKmdka19kaXNwbGF5X2dldF9kZWZh
dWx0X3B0cikoKTsKKyAgICBnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9wdHIgZ2RrX2Rpc3BsYXlf
Z2V0X2RlZmF1bHQgPSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfcHRyKWxpYnJhcnkucmVzb2x2
ZSgiZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQiKTsKKyAgICBpZiAoIWdka19kaXNwbGF5X2dldF9k
ZWZhdWx0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHR5cGVkZWYgdm9pZCAqKCpnZGtfeDEx
X2Rpc3BsYXlfZ2V0X3hkaXNwbGF5X3B0cikodm9pZCAqKTsKKyAgICBnZGtfeDExX2Rpc3BsYXlf
Z2V0X3hkaXNwbGF5X3B0ciBnZGtfeDExX2Rpc3BsYXlfZ2V0X3hkaXNwbGF5ID0gKGdka194MTFf
ZGlzcGxheV9nZXRfeGRpc3BsYXlfcHRyKWxpYnJhcnkucmVzb2x2ZSgiZ2RrX3gxMV9kaXNwbGF5
X2dldF94ZGlzcGxheSIpOworICAgIGlmICghZ2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnZGtfaW5pdF9jaGVjaygwLCAwKTsKKyAgICByZXR1
cm4gKERpc3BsYXkqKWdka194MTFfZGlzcGxheV9nZXRfeGRpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0
X2RlZmF1bHQoKSk7Cit9CisKK3N0YXRpYyBib29sIGdldFZpc3VhbEFuZENvbG9ybWFwKGludCBk
ZXB0aCwgVmlzdWFsKiYgdmlzdWFsLCBDb2xvcm1hcCYgY29sb3JtYXAsIGJvb2wgZm9yY2VBUkdC
MzIpCit7CisgICAgQVNTRVJUKGRlcHRoID09IDMyIHx8ICFmb3JjZUFSR0IzMik7CisKKyAgICB2
aXN1YWwgPSAwOworICAgIGNvbG9ybWFwID0gMDsKKworICAgIGlmIChmb3JjZUFSR0IzMikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IG52aTsKKyAgICBYVmlzdWFsSW5mbyB0ZW1w
bDsKKyAgICB0ZW1wbC5zY3JlZW4gID0geDExU2NyZWVuKCk7CisgICAgdGVtcGwuZGVwdGggICA9
IGRlcHRoOworICAgIHRlbXBsLmNfY2xhc3MgPSBUcnVlQ29sb3I7CisgICAgWFZpc3VhbEluZm8q
IHh2aSA9IFhHZXRWaXN1YWxJbmZvKHgxMURpc3BsYXkoKSwgVmlzdWFsU2NyZWVuTWFzayB8IFZp
c3VhbERlcHRoTWFzayB8IFZpc3VhbENsYXNzTWFzaywgJnRlbXBsLCAmbnZpKTsKKyAgICBBU1NF
UlQoeHZpIHx8IGZvcmNlQVJHQjMyKTsKKyAgICBpZiAoIXh2aSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdmlzdWFsID0geHZpWzBdLnZpc3VhbDsKKyAgICBBU1NFUlQodmlzdWFsKTsK
KworICAgIFhGcmVlKHh2aSk7CisKKyAgICBjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcCh4MTFE
aXNwbGF5KCksIHJvb3RXaW5kb3dJRCgpLCB2aXN1YWwsIEFsbG9jTm9uZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6cGxhdGZvcm1TdGFydCgpCit7CisgICAgQVNT
RVJUKG1faXNTdGFydGVkKTsKKyAgICBBU1NFUlQobV9zdGF0dXMgPT0gUGx1Z2luU3RhdHVzTG9h
ZGVkU3VjY2Vzc2Z1bGx5KTsKKworICAgIGlmICgheDExRW52aXJvbm1lbnQuZGlzcGxheSkgewor
ICAgICAgICBEaXNwbGF5KiBkaXNwbGF5OworICAgICAgICBkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
RGlzcGxheSo+KFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYXRpdmVJbnRlcmZhY2UoKS0+bmF0
aXZlUmVzb3VyY2VGb3JXaW5kb3coImRpc3BsYXkiLCAwKSk7CisgICAgICAgIHgxMUVudmlyb25t
ZW50LmRpc3BsYXkgPSBkaXNwbGF5OworICAgICAgICB4MTFFbnZpcm9ubWVudC5zY3JlZW5JRCA9
IFhEZWZhdWx0U2NyZWVuKGRpc3BsYXkpOworICAgICAgICB4MTFFbnZpcm9ubWVudC5kaXNwbGF5
RGVwdGggPSBYRGVmYXVsdERlcHRoKGRpc3BsYXksIHgxMUVudmlyb25tZW50LnNjcmVlbklEKTsK
KyAgICAgICAgeDExRW52aXJvbm1lbnQucm9vdFdpbmRvd0lEID0gWERlZmF1bHRSb290V2luZG93
KGRpc3BsYXkpOworICAgIH0KKworICAgIC8vIFdpbmRvd2VkIG1vZGUgaXMgbm90IHN1cHBvcnRl
ZCB3aXRoIFF0NSB5ZXQuCisgICAgaWYgKG1faXNXaW5kb3dlZCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHNldFBsYXRmb3JtV2lkZ2V0KDApOworICAgIG1fcGx1Z2luRGlzcGxheSA9IGdl
dFBsdWdpbkRpc3BsYXkoKTsKKworICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgdGhlIGhlaWdodCBh
cmUgbm90IHplcm8gd2Ugc2hvdyB0aGUgUGx1Z2luVmlldy4KKyAgICBpZiAoIWZyYW1lUmVjdCgp
LmlzRW1wdHkoKSkKKyAgICAgICAgc2hvdygpOworCisgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0
cnVjdCogd3NpID0gbmV3IE5QU2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3QoKTsKKyAgICB3c2ktPnR5
cGUgPSAwOworCisgICAgaW50IGRlcHRoID0gZGlzcGxheURlcHRoKCk7CisgICAgYm9vbCBmb3Vu
ZCA9IGdldFZpc3VhbEFuZENvbG9ybWFwKGRlcHRoLCBtX3Zpc3VhbCwgbV9jb2xvcm1hcCwgLyog
Zm9yY2VBUkdCMzIgPSAqLyBmYWxzZSk7CisgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQp
OworICAgIHdzaS0+ZGVwdGggPSBkZXB0aDsKKworICAgIHdzaS0+ZGlzcGxheSA9IHgxMURpc3Bs
YXkoKTsKKyAgICB3c2ktPnZpc3VhbCA9IG1fdmlzdWFsOworICAgIHdzaS0+Y29sb3JtYXAgPSBt
X2NvbG9ybWFwOworCisgICAgbV9ucFdpbmRvdy50eXBlID0gTlBXaW5kb3dUeXBlRHJhd2FibGU7
CisgICAgbV9ucFdpbmRvdy53aW5kb3cgPSAwOyAvLyBOb3QgdXNlZD8KKyAgICBtX25wV2luZG93
LnggPSAwOworICAgIG1fbnBXaW5kb3cueSA9IDA7CisgICAgbV9ucFdpbmRvdy53aWR0aCA9IC0x
OworICAgIG1fbnBXaW5kb3cuaGVpZ2h0ID0gLTE7CisKKyAgICBtX25wV2luZG93LndzX2luZm8g
PSB3c2k7CisKKyAgICBpZiAoIShtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVp
cmtEZWZlckZpcnN0U2V0V2luZG93Q2FsbCkpKSB7CisgICAgICAgIHVwZGF0ZVBsdWdpbldpZGdl
dCgpOworICAgICAgICBzZXROUFdpbmRvd0lmTmVlZGVkKCk7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBp
ZiAocGxhdGZvcm1QbHVnaW5XaWRnZXQoKSkKKyAgICAgICAgZGVsZXRlIHBsYXRmb3JtUGx1Z2lu
V2lkZ2V0KCk7CisKKyAgICBpZiAobV9kcmF3YWJsZSkKKyAgICAgICAgWEZyZWVQaXhtYXAoeDEx
RGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKKworICAgIGlmIChtX2NvbG9ybWFwKQorICAgICAgICBY
RnJlZUNvbG9ybWFwKHgxMURpc3BsYXkoKSwgbV9jb2xvcm1hcCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUXRYMTFJ
bWFnZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9RdFgxMUltYWdl
Q29udmVyc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE3NmZl
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUXRYMTFJbWFn
ZUNvbnZlcnNpb24uY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXRYMTFJbWFnZUNvbnZlcnNpb24uaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitRSW1hZ2UgcWltYWdlRnJvbVhJbWFnZShYSW1hZ2UqIHhpKQor
eworICAgIFFJbWFnZTo6Rm9ybWF0IGZvcm1hdCA9IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVt
dWx0aXBsaWVkOworICAgIGlmICh4aS0+ZGVwdGggPT0gMjQpCisgICAgICAgIGZvcm1hdCA9IFFJ
bWFnZTo6Rm9ybWF0X1JHQjMyOworICAgIGVsc2UgaWYgKHhpLT5kZXB0aCA9PSAxNikKKyAgICAg
ICAgZm9ybWF0ID0gUUltYWdlOjpGb3JtYXRfUkdCMTY7CisKKyAgICBRSW1hZ2UgaW1hZ2UgPSBR
SW1hZ2UocmVpbnRlcnByZXRfY2FzdDx1Y2hhcio+KHhpLT5kYXRhKSwgeGktPndpZHRoLCB4aS0+
aGVpZ2h0LCB4aS0+Ynl0ZXNfcGVyX2xpbmUsIGZvcm1hdCkuY29weSgpOworCisgICAgLy8gd2Ug
bWF5IGhhdmUgdG8gc3dhcCB0aGUgYnl0ZSBvcmRlcgorICAgIGlmICgoUVN5c0luZm86OkJ5dGVP
cmRlciA9PSBRU3lzSW5mbzo6TGl0dGxlRW5kaWFuICYmIHhpLT5ieXRlX29yZGVyID09IE1TQkZp
cnN0KQorICAgICAgICB8fCAoUVN5c0luZm86OkJ5dGVPcmRlciA9PSBRU3lzSW5mbzo6QmlnRW5k
aWFuICYmIHhpLT5ieXRlX29yZGVyID09IExTQkZpcnN0KSkgeworCisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgaW1hZ2UuaGVpZ2h0KCk7IGkrKykgeworICAgICAgICAgICAgaWYgKHhpLT5k
ZXB0aCA9PSAxNikgeworICAgICAgICAgICAgICAgIHVzaG9ydCogcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dXNob3J0Kj4oaW1hZ2Uuc2NhbkxpbmUoaSkpOworICAgICAgICAgICAgICAgIHVzaG9ydCog
ZW5kID0gcCArIGltYWdlLndpZHRoKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBlbmQp
IHsKKyAgICAgICAgICAgICAgICAgICAgKnAgPSAoKCpwIDw8IDgpICYgMHhmZjAwKSB8ICgoKnAg
Pj4gOCkgJiAweDAwZmYpOworICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1aW50KiBwID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50Kj4oaW1hZ2Uuc2NhbkxpbmUoaSkpOworICAgICAgICAgICAgICAg
IHVpbnQqIGVuZCA9IHAgKyBpbWFnZS53aWR0aCgpOworICAgICAgICAgICAgICAgIHdoaWxlIChw
IDwgZW5kKSB7CisgICAgICAgICAgICAgICAgICAgICpwID0gKCgqcCA8PCAyNCkgJiAweGZmMDAw
MDAwKSB8ICgoKnAgPDwgOCkgJiAweDAwZmYwMDAwKQorICAgICAgICAgICAgICAgICAgICAgICAg
IHwgKCgqcCA+PiA4KSAmIDB4MDAwMGZmMDApIHwgKCgqcCA+PiAyNCkgJiAweDAwMDAwMGZmKTsK
KyAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGZpeC11cCBhbHBoYSBjaGFubmVsCisgICAg
aWYgKGZvcm1hdCA9PSBRSW1hZ2U6OkZvcm1hdF9SR0IzMikgeworICAgICAgICBRUmdiKiBwID0g
cmVpbnRlcnByZXRfY2FzdDxRUmdiKj4oaW1hZ2UuYml0cygpKTsKKyAgICAgICAgZm9yIChpbnQg
eSA9IDA7IHkgPCB4aS0+aGVpZ2h0OyArK3kpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgeGktPndpZHRoOyArK3gpCisgICAgICAgICAgICAgICAgcFt4XSB8PSAweGZmMDAwMDAw
OworICAgICAgICAgICAgcCArPSB4aS0+Ynl0ZXNfcGVyX2xpbmUgLyA0OworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIGltYWdlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUXRYMTFJbWFnZUNvbnZlcnNpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvcXQvUXRYMTFJbWFnZUNvbnZlcnNpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTk5OWE0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9RdFgxMUltYWdlQ29udmVyc2lvbi5oCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0WDExSW1hZ2VDb252ZXJz
aW9uX2gKKyNkZWZpbmUgUXRYMTFJbWFnZUNvbnZlcnNpb25faAorCisjaW5jbHVkZSA8UUltYWdl
PgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUUltYWdl
IHFpbWFnZUZyb21YSW1hZ2UoWEltYWdlKik7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggNWNkNmQxNC4u
MzY2MGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFi
YXNlV2luLmNwcApAQCAtNDA3LDYgKzQwNywxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTWFj
cm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICNl
bmRpZgogfQogCisjaWYgUExBVEZPUk0oUVQpCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkUXRXZWJL
aXRQbHVnaW5QYXRoKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKK3sKKyAgICBWZWN0b3I8
U3RyaW5nPiBxdFBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdldGVudigiUVRXRUJLSVRfUExV
R0lOX1BBVEgiKS5jb25zdERhdGEoKSk7CisgICAgcXRQYXRoLnNwbGl0KFVDaGFyKCc7JyksIGZh
bHNlLCBxdFBhdGhzKTsKKyAgICBkaXJlY3Rvcmllcy5hcHBlbmRWZWN0b3IocXRQYXRocyk7Cit9
CisjZW5kaWYKKwogVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5E
aXJlY3RvcmllcygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZGlyZWN0b3JpZXM7CkBAIC00MTks
NiArNDI5LDEwIEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2lu
RGlyZWN0b3JpZXMoKQogICAgIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhkaXJlY3Rvcmll
cyk7CiAgICAgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KGRpcmVjdG9yaWVz
KTsKICAgICBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0b3JpZXMpOworI2lm
IFBMQVRGT1JNKFFUKQorICAgIGFkZEphdmFQbHVnaW5EaXJlY3RvcnkoZGlyZWN0b3JpZXMpOwor
ICAgIGFkZFF0V2ViS2l0UGx1Z2luUGF0aChkaXJlY3Rvcmllcyk7CisjZW5kaWYKIAogICAgIHJl
dHVybiBkaXJlY3RvcmllczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
d2luL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2lu
Vmlld1dpbi5jcHAKaW5kZXggZmEzYWQxOC4uMTA1YzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKQEAgLTkwLDYgKzkwLDExIEBACiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJRV2Vi
UGFnZUNsaWVudC5oIgorI2luY2x1ZGUgPFFXaW5kb3c+CisjZW5kaWYKKwogc3RhdGljIGlubGlu
ZSBIV05EIHdpbmRvd0hhbmRsZUZvclBhZ2VDbGllbnQoUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVu
dCkKIHsKICNpZiBQTEFURk9STShHVEspCkBAIC05OCw2ICsxMDMsMTIgQEAgc3RhdGljIGlubGlu
ZSBIV05EIHdpbmRvd0hhbmRsZUZvclBhZ2VDbGllbnQoUGxhdGZvcm1QYWdlQ2xpZW50IGNsaWVu
dCkKICAgICBpZiAoR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coY2xp
ZW50KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhXTkQ+KEdES19XSU5ET1dfSFdORCh3
aW5kb3cpKTsKICAgICByZXR1cm4gMDsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGlmICghY2xp
ZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUVdpbmRvdyogd2luZG93ID0gY2xpZW50
LT5vd25lcldpbmRvdygpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxIV05EPih3
aW5kb3ctPndpbklkKCkpOworICAgIHJldHVybiAwOwogI2Vsc2UKICAgICByZXR1cm4gY2xpZW50
OwogI2VuZGlmCkBAIC0yODAsNyArMjkxLDcgQEAgc3RhdGljIGJvb2wgcmVnaXN0ZXJQbHVnaW5W
aWV3KCkKIAogICAgIGhhdmVSZWdpc3RlcmVkV2luZG93Q2xhc3MgPSB0cnVlOwogCi0jaWYgUExB
VEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCiAgICAgV2ViQ29y
ZTo6c2V0SW5zdGFuY2VIYW5kbGUoKEhJTlNUQU5DRSkoR2V0TW9kdWxlSGFuZGxlKDApKSk7CiAj
ZW5kaWYKIApAQCAtMzM3LDEyICszNDgsMjUgQEAgc3RhdGljIGJvb2wgaXNXaW5kb3dzTWVzc2Fn
ZVVzZXJHZXN0dXJlKFVJTlQgbWVzc2FnZSkKIAogc3RhdGljIGlubGluZSBJbnRQb2ludCBjb250
ZW50c1RvTmF0aXZlV2luZG93KEZyYW1lVmlldyogdmlldywgY29uc3QgSW50UG9pbnQmIHBvaW50
KQogeworI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIE91ciB3ZWIgdmlldydzIFFXaWRnZXQgaXNu
J3QgbmVjZXNzYXJpbHkgYSBuYXRpdmUgd2luZG93IGl0c2VsZi4gTWFwIHRoZSBwb3NpdGlvbgor
ICAgIC8vIGFsbCB0aGUgd2F5IHVwIHRvIHRoZSBRV2lkZ2V0IGFzc29jaWF0ZWQgd2l0aCB0aGUg
SFdORCByZXR1cm5lZCBhcyBOUE5WbmV0c2NhcGVXaW5kb3cuCisgICAgUGxhdGZvcm1QYWdlQ2xp
ZW50IGNsaWVudCA9IHZpZXctPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCk7Cisg
ICAgcmV0dXJuIGNsaWVudC0+bWFwVG9Pd25lcldpbmRvdyh2aWV3LT5jb250ZW50c1RvV2luZG93
KHBvaW50KSk7CisjZWxzZQogICAgIHJldHVybiB2aWV3LT5jb250ZW50c1RvV2luZG93KHBvaW50
KTsKKyNlbmRpZgogfQogCiBzdGF0aWMgaW5saW5lIEludFJlY3QgY29udGVudHNUb05hdGl2ZVdp
bmRvdyhGcmFtZVZpZXcqIHZpZXcsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisjaWYgUExBVEZP
Uk0oUVQpCisgICAgLy8gVGhpcyBvbmx5IGhhbmRsZXMgdHJhbnNsYXRpb24gb2YgdGhlIHJlY3Qu
CisgICAgQVNTRVJUKHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocmVjdCkuc2l6ZSgpID09IHJlY3Qu
c2l6ZSgpKTsKKyAgICByZXR1cm4gSW50UmVjdChjb250ZW50c1RvTmF0aXZlV2luZG93KHZpZXcs
IHJlY3QubG9jYXRpb24oKSksIHJlY3Quc2l6ZSgpKTsKKyNlbHNlCiAgICAgcmV0dXJuIHZpZXct
PmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CisjZW5kaWYKIH0KIAogTFJFU1VMVApAQCAtNjI5LDcg
KzY1Myw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgLy8gSW4gdGhlIEdUSyBhbmQgUXQgcG9ydHMg
d2UgZHJhdyBpbiBhbiBvZmZzY3JlZW4gYnVmZmVyIGFuZCBkb24ndCB3YW50IHRvIHVzZSB0aGUg
d2luZG93CiAgICAgLy8gY29vcmRpbmF0ZXMuCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCiAgICAgSW50UmVjdCByZWN0SW5XaW5kb3cocmVjdCk7
CiAgICAgcmVjdEluV2luZG93LmludGVyc2VjdChmcmFtZVJlY3QoKSk7CiAjZWxzZQpAQCAtNjQx
LDcgKzY2NSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIC8vIG9mIHRoZSB3aW5kb3cgYW5kIHRoZSBw
bHVnaW4gZXhwZWN0cyB0aGF0IHRoZSBwYXNzZWQgaW4gREMgaGFzIHdpbmRvdyBjb29yZGluYXRl
cy4KICAgICAvLyBJbiB0aGUgR1RLIGFuZCBRdCBwb3J0cyB3ZSBhbHdheXMgZHJhdyBpbiBhbiBv
ZmZzY3JlZW4gYnVmZmVyIGFuZCB0aGVyZWZvcmUgbmVlZAogICAgIC8vIHRvIHByZXNlcnZlIHRo
ZSB0cmFuc2xhdGlvbiBzZXQgaW4gZ2V0V2luZG93c0NvbnRleHQuCi0jaWYgIVBMQVRGT1JNKEdU
SykgJiYgIU9TKFdJTkNFKQorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYg
IU9TKFdJTkNFKQogICAgIGlmICghY29udGV4dC0+aXNJblRyYW5zcGFyZW5jeUxheWVyKCkpIHsK
ICAgICAgICAgWEZPUk0gdHJhbnNmb3JtOwogICAgICAgICBHZXRXb3JsZFRyYW5zZm9ybSh3aW5k
b3dzQ29udGV4dC5oZGMoKSwgJnRyYW5zZm9ybSk7CkBAIC03NDksNyArNzczLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogICAgIGlmIChk
aXNwYXRjaE5QRXZlbnQobnBFdmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogCi0jaWYgIVBMQVRGT1JNKEdUSykgJiYgIU9TKFdJTkNFKQorI2lmICFQTEFURk9STShH
VEspICYmICFQTEFURk9STShRVCkgJiYgIU9TKFdJTkNFKQogICAgIC8vIEN1cnJlbnRseSwgV2lk
Z2V0OjpzZXRDdXJzb3IgaXMgYWx3YXlzIGNhbGxlZCBhZnRlciB0aGlzIGZ1bmN0aW9uIGluIEV2
ZW50SGFuZGxlci5jcHAKICAgICAvLyBhbmQgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0aGF0IHdlIHNl
dCBpZ25vcmVOZXh0U2V0Q3Vyc29yIHRvIHRydWUgaGVyZSB0byBwcmV2ZW50IHRoYXQuCiAgICAg
aWdub3JlTmV4dFNldEN1cnNvciA9IHRydWU7CkBAIC04MjAsNyArODQ0LDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpzZXROUFdpbmRvd1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICNlbHNlCiAgICAg
Ly8gSW4gdGhlIEdUSyBhbmQgUXQgcG9ydHMgd2UgZHJhdyBpbiBhbiBvZmZzY3JlZW4gYnVmZmVy
IGFuZCBkb24ndCB3YW50IHRvIHVzZSB0aGUgd2luZG93CiAgICAgLy8gY29vcmRpbmF0ZXMuCi0j
IGlmIFBMQVRGT1JNKEdUSykKKyMgaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAg
ICBJbnRQb2ludCBwID0gcmVjdC5sb2NhdGlvbigpOwogIyBlbHNlCiAgICAgSW50UG9pbnQgcCA9
IHRvRnJhbWVWaWV3KHBhcmVudCgpKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9uKCkp
OwpAQCAtMTAwMCw3ICsxMDI0LDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkK
ICAgICAgICAgSFdORCB3aW5kb3cgPSA6OkNyZWF0ZVdpbmRvd0V4KDAsIGtXZWJQbHVnaW5WaWV3
ZG93Q2xhc3NOYW1lLCAwLCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsIDAsIDAsIDAsIHBhcmVudFdpbmRvd0hhbmRsZSwgMCwgV2ViQ29yZTo6aW5zdGFu
Y2VIYW5kbGUoKSwgMCk7CiAKLSNpZiBPUyhXSU5ET1dTKSAmJiBQTEFURk9STShHVEspCisjaWYg
T1MoV0lORE9XUykgJiYgKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpKQogICAgICAgICBt
X3dpbmRvdyA9IHdpbmRvdzsKICNlbHNlCiAgICAgICAgIHNldFBsYXRmb3JtV2lkZ2V0KHdpbmRv
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAzYmEzNmU3
Li44YzE4NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAg
LTE0OSw4ICsxNDksOCBAQCBwcml2YXRlOgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayhFbGVtZW50
KiBlbGVtZW50LCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKQotICAgIDogUmVuZGVyQm94KGVsZW1l
bnQsIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCbG9ja0ZsYWcpCitSZW5kZXJCbG9jazo6UmVuZGVy
QmxvY2soRWxlbWVudCogZWxlbWVudCkKKyAgICA6IFJlbmRlckJveChlbGVtZW50KQogICAgICwg
bV9saW5lSGVpZ2h0KC0xKQogICAgICwgbV9oYXNNYXJnaW5CZWZvcmVRdWlyayhmYWxzZSkKICAg
ICAsIG1faGFzTWFyZ2luQWZ0ZXJRdWlyayhmYWxzZSkKQEAgLTM5NzEsNiArMzk3MSw2NCBAQCB2
b2lkIFJlbmRlckJsb2NrOjptYXJrU2libGluZ3NXaXRoRmxvYXRzRm9yTGF5b3V0KFJlbmRlckJv
eCogZmxvYXRUb1JlbW92ZSkKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZs
b2F0aW5nT2JqZWN0c1BhaW50aW5nQ29udGFpbmVyKFJlbmRlckJveCogZmxvYXRUb1VwZGF0ZSkK
K3sKKyAgICBib29sIGRpZEZpbmRQYWludENvbnRhaW5lciA9IGZhbHNlOworICAgIHVwZGF0ZUZs
b2F0aW5nT2JqZWN0c1BhaW50aW5nQ29udGFpbmVyKGZsb2F0VG9VcGRhdGUsIGRpZEZpbmRQYWlu
dENvbnRhaW5lcik7CisgICAgQVNTRVJUKGRpZEZpbmRQYWludENvbnRhaW5lciB8fCBmbG9hdFRv
VXBkYXRlLT5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsKK30KKwordm9pZCBSZW5kZXJCbG9jazo6
dXBkYXRlRmxvYXRpbmdPYmplY3RzUGFpbnRpbmdDb250YWluZXIoUmVuZGVyQm94KiBmbG9hdFRv
VXBkYXRlLCBib29sJiBkaWRGaW5kUGFpbnRDb250YWluZXIpCit7CisgICAgaWYgKG5lZWRzTGF5
b3V0KCkpIHsKKyAgICAgICAgLy8gVGhlIGZsb2F0aW5nIG9iamVjdCB1cGRhdGUgc2hvdWxkIG9u
bHkgYmUgcmVxdWlyZWQgYWZ0ZXIgdGhlIGxheW91dCBpcyBhbHJlYWR5IGNvbXBsZXRlLgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoIW1fZmxvYXRpbmdPYmplY3RzKQorICAgICAgICByZXR1cm47CisgICAgdXBkYXRlQWxsRGVz
Y2VuZGFudHNGbG9hdGluZ09iamVjdHNQYWludGluZ0NvbnRhaW5lcihmbG9hdFRvVXBkYXRlLCBk
aWRGaW5kUGFpbnRDb250YWluZXIpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBuZXh0ID0gbmV4
dFNpYmxpbmcoKTsgbmV4dDsgbmV4dCA9IG5leHQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
aWYgKCFuZXh0LT5pc1JlbmRlckJsb2NrKCkgfHwgbmV4dC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93
UG9zaXRpb25lZCgpIHx8IHRvUmVuZGVyQmxvY2sobmV4dCktPmF2b2lkc0Zsb2F0cygpKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIFJlbmRlckJsb2NrKiBuZXh0QmxvY2sgPSB0b1Jl
bmRlckJsb2NrKG5leHQpOworICAgICAgICBpZiAobmV4dEJsb2NrLT5jb250YWluc0Zsb2F0KGZs
b2F0VG9VcGRhdGUpKQorICAgICAgICAgICAgbmV4dEJsb2NrLT51cGRhdGVBbGxEZXNjZW5kYW50
c0Zsb2F0aW5nT2JqZWN0c1BhaW50aW5nQ29udGFpbmVyKGZsb2F0VG9VcGRhdGUsIGRpZEZpbmRQ
YWludENvbnRhaW5lcik7CisgICAgfQorfQorCit2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVMb2Nh
bEZsb2F0aW5nT2JqZWN0c0ZvclBhaW50aW5nQ29udGFpbmVyKFJlbmRlckJveCogZmxvYXRUb1Vw
ZGF0ZSwgYm9vbCYgZm91bmRQYWludENvbnRhaW5lcikKK3sKKyAgICBBU1NFUlQoIW5lZWRzTGF5
b3V0KCkpOworICAgIGlmICghbV9mbG9hdGluZ09iamVjdHMpCisgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmZpbmQ8UmVuZGVyQm94
JiwgRmxvYXRpbmdPYmplY3RIYXNoVHJhbnNsYXRvcj4oKmZsb2F0VG9VcGRhdGUpOworICAgIGlm
IChpdGVyYXRvciAhPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuZW5kKCkpIHsKKyAgICAgICAg
Ym9vbCBzaG91bGRQYWludCA9ICFmb3VuZFBhaW50Q29udGFpbmVyICYmICFmbG9hdFRvVXBkYXRl
LT5oYXNTZWxmUGFpbnRpbmdMYXllcigpICYmIGZsb2F0VG9VcGRhdGUtPmVuY2xvc2luZ0Zsb2F0
UGFpbnRpbmdMYXllcigpID09IGVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpOworICAgICAg
ICBmb3VuZFBhaW50Q29udGFpbmVyIHw9IHNob3VsZFBhaW50OworICAgICAgICAoKml0ZXJhdG9y
KS0+c2V0U2hvdWxkUGFpbnQoc2hvdWxkUGFpbnQpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJC
bG9jazo6dXBkYXRlQWxsRGVzY2VuZGFudHNGbG9hdGluZ09iamVjdHNQYWludGluZ0NvbnRhaW5l
cihSZW5kZXJCb3gqIGZsb2F0VG9VcGRhdGUsIGJvb2wmIGRpZEZpbmRQYWludENvbnRhaW5lcikK
K3sKKyAgICBpZiAobmVlZHNMYXlvdXQoKSkgeworICAgICAgICAvLyBUaGUgZmxvYXRpbmcgb2Jq
ZWN0IHVwZGF0ZSBzaG91bGQgb25seSBiZSByZXF1aXJlZCBhZnRlciB0aGUgbGF5b3V0IGlzIGFs
cmVhZHkgY29tcGxldGUuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHVwZGF0ZUxvY2FsRmxvYXRpbmdPYmplY3RzRm9yUGFpbnRpbmdD
b250YWluZXIoZmxvYXRUb1VwZGF0ZSwgZGlkRmluZFBhaW50Q29udGFpbmVyKTsKKyAgICBpZiAo
Y2hpbGRyZW5JbmxpbmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNSZW5kZXJCbG9jaygpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIFJlbmRlckJsb2NrKiBjaGlsZEJsb2NrID0gdG9SZW5kZXJCbG9j
ayhjaGlsZCk7CisgICAgICAgIGlmIChjaGlsZEJsb2NrLT5jb250YWluc0Zsb2F0KGZsb2F0VG9V
cGRhdGUpKQorICAgICAgICAgICAgY2hpbGRCbG9jay0+dXBkYXRlQWxsRGVzY2VuZGFudHNGbG9h
dGluZ09iamVjdHNQYWludGluZ0NvbnRhaW5lcihmbG9hdFRvVXBkYXRlLCBkaWRGaW5kUGFpbnRD
b250YWluZXIpOworICAgIH0KK30KKwogTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6Z2V0Q2xlYXJE
ZWx0YShSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApCiB7CiAgICAgLy8g
VGhlcmUgaXMgbm8gbmVlZCB0byBjb21wdXRlIGNsZWFyYW5jZSBpZiB3ZSBoYXZlIG5vIGZsb2F0
cy4KQEAgLTU4OTYsNiArNTk1NCw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUZpcnN0TGV0
dGVyKCkKICAgICBpZiAoc3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0gRklSU1RfTEVUVEVSKQogICAg
ICAgICByZXR1cm47CiAKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkZXN0cm95IHRoZSBmaXJz
dC1sZXR0ZXIgb2JqZWN0IGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgZmlyc3QgY2hpbGQuIE5lZWQg
dG8gZmluZAorICAgIC8vIGFuIGVmZmljaWVudCB3YXkgdG8gY2hlY2sgZm9yIHRoYXQgc2l0dWF0
aW9uIHRob3VnaCBiZWZvcmUgaW1wbGVtZW50aW5nIGFueXRoaW5nLgogICAgIFJlbmRlckVsZW1l
bnQqIGZpcnN0TGV0dGVyQmxvY2sgPSBmaW5kRmlyc3RMZXR0ZXJCbG9jayh0aGlzKTsKICAgICBp
ZiAoIWZpcnN0TGV0dGVyQmxvY2spCiAgICAgICAgIHJldHVybjsKQEAgLTU5MjcsMjQgKzU5ODcs
OSBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgaWYgKCFkZXNj
ZW5kYW50KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBJZiB0aGUgY2hpbGQgYWxyZWFkeSBo
YXMgc3R5bGUsIHRoZW4gaXQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLCBzbyB3ZSBqdXN0IHdh
bnQKKyAgICAvLyB0byB1cGRhdGUgaXQuCiAgICAgaWYgKGRlc2NlbmRhbnQtPnBhcmVudCgpLT5z
dHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBGSVJTVF9MRVRURVIpIHsKLSAgICAgICAgLy8gRGVzdHJv
eSB0aGUgZmlyc3QtbGV0dGVyIG9iamVjdCBpZiBpdCBpcyBubyBsb25nZXIgdGhlIGZpcnN0IGNo
aWxkLgotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbWFpbmluZ1RleHQgPSBkZXNjZW5kYW50LT5w
YXJlbnQoKS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgaWYgKHJlbWFpbmluZ1RleHQgJiYgZGVz
Y2VuZGFudC0+bm9kZSgpICE9IHJlbWFpbmluZ1RleHQtPm5vZGUoKSkgewotICAgICAgICAgICAg
aWYgKCFyZW1haW5pbmdUZXh0LT5pc1RleHQoKSB8fCByZW1haW5pbmdUZXh0LT5pc0JSKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBMYXlvdXRTdGF0ZURpc2FibGVy
IGxheW91dFN0YXRlRGlzYWJsZXIoJnZpZXcoKSk7Ci0KLSAgICAgICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIG9sZFJlbWFpbmluZ1RleHQgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGRlc2NlbmRh
bnQtPnBhcmVudCgpKS0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCkpCi0gICAgICAgICAgICAg
ICAgdG9SZW5kZXJUZXh0KG9sZFJlbWFpbmluZ1RleHQpLT5zZXRUZXh0KHRvVGV4dChvbGRSZW1h
aW5pbmdUZXh0LT5ub2RlKCkpLT5kYXRhKCkuaW1wbCgpKTsKLQotICAgICAgICAgICAgY3JlYXRl
Rmlyc3RMZXR0ZXJSZW5kZXJlcihmaXJzdExldHRlckJsb2NrLCB0b1JlbmRlclRleHQocmVtYWlu
aW5nVGV4dCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9ICAgIAotCi0gICAgICAg
IC8vIElmIHRoZSBjaGlsZCBhbHJlYWR5IGhhcyBzdHlsZSwgdGhlbiBpdCBoYXMgYWxyZWFkeSBi
ZWVuIGNyZWF0ZWQsIHNvIHdlIGp1c3Qgd2FudAotICAgICAgICAvLyB0byB1cGRhdGUgaXQuCiAg
ICAgICAgIHVwZGF0ZUZpcnN0TGV0dGVyU3R5bGUoZmlyc3RMZXR0ZXJCbG9jaywgZGVzY2VuZGFu
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCmluZGV4IGNkNzBiODUuLjdiMDQ5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcm90ZWN0
ZWQ6Ci0gICAgZXhwbGljaXQgUmVuZGVyQmxvY2soRWxlbWVudCosIHVuc2lnbmVkIGJhc2VUeXBl
RmxhZ3MpOworICAgIGV4cGxpY2l0IFJlbmRlckJsb2NrKEVsZW1lbnQqKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJCbG9jaygpOwogCiBwdWJsaWM6CkBAIC0xNjIsNiArMTYyLDggQEAgcHVibGljOgog
CiAgICAgYm9vbCBnZW5lcmF0ZXNMaW5lQm94ZXNGb3JJbmxpbmVDaGlsZChSZW5kZXJPYmplY3Qq
KTsKIAorICAgIHZvaWQgdXBkYXRlRmxvYXRpbmdPYmplY3RzUGFpbnRpbmdDb250YWluZXIoUmVu
ZGVyQm94KiBmbG9hdFRvVXBkYXRlKTsKKwogICAgIHZvaWQgbWFya0FsbERlc2NlbmRhbnRzV2l0
aEZsb2F0c0ZvckxheW91dChSZW5kZXJCb3gqIGZsb2F0VG9SZW1vdmUgPSAwLCBib29sIGluTGF5
b3V0ID0gdHJ1ZSk7CiAgICAgdm9pZCBtYXJrU2libGluZ3NXaXRoRmxvYXRzRm9yTGF5b3V0KFJl
bmRlckJveCogZmxvYXRUb1JlbW92ZSA9IDApOwogICAgIHZvaWQgbWFya1Bvc2l0aW9uZWRPYmpl
Y3RzRm9yTGF5b3V0KCk7CkBAIC01NTAsNiArNTUyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFOwogCisgICAgdmlydHVh
bCBib29sIGlzUmVuZGVyQmxvY2soKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkgY29uc3Qg
T1ZFUlJJREUgRklOQUwgeyByZXR1cm4gaXNJbmxpbmUoKSAmJiBpc1JlcGxhY2VkKCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCkBAIC02NjcsNiArNjcwLDExIEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0
IGxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbShGbG9hdGluZ09iamVjdDo6VHlwZSA9IEZsb2F0aW5n
T2JqZWN0OjpGbG9hdExlZnRSaWdodCkgY29uc3Q7IAogICAgIExheW91dFVuaXQgbmV4dEZsb2F0
TG9naWNhbEJvdHRvbUJlbG93KExheW91dFVuaXQsIFNoYXBlT3V0c2lkZUZsb2F0T2Zmc2V0TW9k
ZSA9IFNoYXBlT3V0c2lkZUZsb2F0TWFyZ2luQm94T2Zmc2V0KSBjb25zdDsKKworICAgIHZvaWQg
dXBkYXRlTG9jYWxGbG9hdGluZ09iamVjdHNGb3JQYWludGluZ0NvbnRhaW5lcihSZW5kZXJCb3gq
IGZsb2F0VG9VcGRhdGUsIGJvb2wmIGRpZEZpbmRQYWludENvbnRhaW5lcik7CisgICAgdm9pZCB1
cGRhdGVGbG9hdGluZ09iamVjdHNQYWludGluZ0NvbnRhaW5lcihSZW5kZXJCb3gqIGZsb2F0VG9V
cGRhdGUsIGJvb2wmIGRpZEZpbmRQYWludENvbnRhaW5lcik7CisgICAgdm9pZCB1cGRhdGVBbGxE
ZXNjZW5kYW50c0Zsb2F0aW5nT2JqZWN0c1BhaW50aW5nQ29udGFpbmVyKFJlbmRlckJveCogZmxv
YXRUb1VwZGF0ZSwgYm9vbCYgZGlkRmluZFBhaW50Q29udGFpbmVyKTsKKwogICAgIAogICAgIGJv
b2wgaGl0VGVzdENvbHVtbnMoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgYm9v
bCBoaXRUZXN0Q29udGVudHMoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBhNTViMmE1Li5hODAzZDU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNzYs
NyArNzYsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8oUmVuZGVy
QmxvY2tGbG93KiBibG9jaywgTGF5b3V0VW5pdCBiZWZvcgogfQogCiBSZW5kZXJCbG9ja0Zsb3c6
OlJlbmRlckJsb2NrRmxvdyhFbGVtZW50KiBlbGVtZW50KQotICAgIDogUmVuZGVyQmxvY2soZWxl
bWVudCwgUmVuZGVyQmxvY2tGbG93RmxhZykKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiB7
CiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlckJsb2NrRmxvdzo6TWFyZ2luSW5mbykg
PT0gc2l6ZW9mKFNhbWVTaXplQXNNYXJnaW5JbmZvKSwgTWFyZ2luSW5mb19zaG91bGRfc3RheV9z
bWFsbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5k
ZXggM2IyZGM5OS4uMjBkM2JkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaApAQCAtMzEsNyArMzEsOSBAQCBjbGFzcyBSZW5kZXJCbG9ja0Zsb3cgOiBwdWJs
aWMgUmVuZGVyQmxvY2sgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlckJsb2NrRmxvdyhF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxvY2tGbG93KCk7Ci0gICAgICAgIAorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckJsb2NrRmxvdygpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIHRydWU7IH0KKyAgICAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkg
T1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggMmVhM2RhYy4uNDhmNTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKQEAgLTk1LDggKzk1LDggQEAgc3RhdGljIGJvb2wgc2tpcEJvZHlCYWNrZ3JvdW5k
KGNvbnN0IFJlbmRlckJveCogYm9keUVsZW1lbnRSZW5kZXJlcikKICAgICAgICAgJiYgKGRvY3Vt
ZW50RWxlbWVudFJlbmRlcmVyID09IGJvZHlFbGVtZW50UmVuZGVyZXItPnBhcmVudCgpKTsKIH0K
IAotUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgYmFzZVR5
cGVGbGFncykKLSAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGVsZW1lbnQsIGJhc2VUeXBlRmxh
Z3MpCitSZW5kZXJCb3g6OlJlbmRlckJveChFbGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVy
Qm94TW9kZWxPYmplY3QoZWxlbWVudCkKICAgICAsIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
KC0xKQogICAgICwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX2lubGlu
ZUJveFdyYXBwZXIoMCkKQEAgLTI2MCw2ICsyNjAsMjEgQEAgdm9pZCBSZW5kZXJCb3g6OnJlbW92
ZUZsb2F0aW5nT3JQb3NpdGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cygpCiAgICAgICAgIFJlbmRl
ckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOwogfQogCit2b2lkIFJlbmRlckJv
eDo6dXBkYXRlUGFpbnRpbmdDb250YWluZXJGb3JGbG9hdGluZ09iamVjdCgpCit7CisgICAgQVNT
RVJUKGlzRmxvYXRpbmcoKSk7CisgICAgaWYgKFJlbmRlckJsb2NrKiBwYXJlbnRCbG9jayA9IG91
dGVybW9zdEJsb2NrQ29udGFpbmluZ0Zsb2F0aW5nT2JqZWN0KCkpCisgICAgICAgIHBhcmVudEJs
b2NrLT51cGRhdGVGbG9hdGluZ09iamVjdHNQYWludGluZ0NvbnRhaW5lcih0aGlzKTsKK30KKwor
Ym9vbCBSZW5kZXJCb3g6OnVwZGF0ZUxheWVySWZOZWVkZWQoKQoreworICAgIGJvb2wgZGlkVXBk
YXRlTGF5ZXIgPSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6dXBkYXRlTGF5ZXJJZk5lZWRlZCgpOwor
ICAgIGlmIChkaWRVcGRhdGVMYXllciAmJiBpc0Zsb2F0aW5nKCkpCisgICAgICAgIHVwZGF0ZVBh
aW50aW5nQ29udGFpbmVyRm9yRmxvYXRpbmdPYmplY3QoKTsKKyAgICByZXR1cm4gZGlkVXBkYXRl
TGF5ZXI7Cit9CisKIHZvaWQgUmVuZGVyQm94OjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSkKIHsKICAgICBzX2hhZE92ZXJm
bG93Q2xpcCA9IGhhc092ZXJmbG93Q2xpcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCmluZGV4IGQzMDMzMzYuLjIzYzhjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBTaG91bGRDb21wdXRlUHJlZmVycmVkIHsgQ29t
cHV0ZUFjdHVhbCwgQ29tcHV0ZVByZWZlcnJlZCB9OwogCiBjbGFzcyBSZW5kZXJCb3ggOiBwdWJs
aWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlckJv
eChFbGVtZW50KiwgdW5zaWduZWQgYmFzZVR5cGVGbGFncyk7CisgICAgZXhwbGljaXQgUmVuZGVy
Qm94KEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJCb3goKTsKIAogICAgIC8vIGhhc0F1
dG9aSW5kZXggb25seSByZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1lbnQgaXMgcG9zaXRpb25lZCBv
ciBhIGZsZXgtaXRlbSBzaW5jZQpAQCAtNTA0LDYgKzUwNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jik7
CiAKICAgICBSZW5kZXJCbG9jayogb3V0ZXJtb3N0QmxvY2tDb250YWluaW5nRmxvYXRpbmdPYmpl
Y3QoKTsKKyAgICB2b2lkIHVwZGF0ZVBhaW50aW5nQ29udGFpbmVyRm9yRmxvYXRpbmdPYmplY3Qo
KTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlTGF5ZXJJZk5lZWRlZCgpOwogCiAgICAgdm9pZCBy
ZW1vdmVGbG9hdGluZ09yUG9zaXRpb25lZENoaWxkRnJvbUJsb2NrTGlzdHMoKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmlu
ZGV4IDg3ZjUwNDguLmIyNTEzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTU5LDggKzE1OSw4IEBAIGJvb2wgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgSW1hCiAgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9sbGVyKCku
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBzaXpl
KTsKIH0KIAotUmVuZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KEVsZW1l
bnQqIGVsZW1lbnQsIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpCi0gICAgOiBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KGVsZW1lbnQsIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZs
YWcpCitSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCog
ZWxlbWVudCkKKyAgICA6IFJlbmRlckxheWVyTW9kZWxPYmplY3QoZWxlbWVudCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRl
eCA5MjVlZWFhLi45ZDA2NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM7CiAKIGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0IDogcHVi
bGljIFJlbmRlckxheWVyTW9kZWxPYmplY3QgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRl
ckJveE1vZGVsT2JqZWN0KEVsZW1lbnQqLCB1bnNpZ25lZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJCb3hNb2RlbE9iamVjdChFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVu
ZGVyQm94TW9kZWxPYmplY3QoKTsKICAgICAKICAgICBMYXlvdXRTaXplIHJlbGF0aXZlUG9zaXRp
b25PZmZzZXQoKSBjb25zdDsKQEAgLTMwOSw2ICszMDksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlZENTU1BhZGRpbmcoTGVuZ3RoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNCb3hNb2RlbE9iamVjdCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0
dXJuIHRydWU7IH0KICAgICAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgZnJhbWVSZWN0Rm9yU3Rp
Y2t5UG9zaXRpb25pbmcoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggNWNkYzE2
YS4uODQyOTU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcml2YXRl
OgogfTsKIAogUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3goRWxlbWVudCYgZWxlbWVudCkKLSAgICA6IFJlbmRlckJsb2NrKCZlbGVtZW50LCAw
KQorICAgIDogUmVuZGVyQmxvY2soJmVsZW1lbnQpCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUo
ZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2stbGV2ZWwKICAgICBt
X3N0cmV0Y2hpbmdDaGlsZHJlbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IGNhNWM1MTYuLjg2MTA5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTY0LDkgKzY0LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogYm9vbCBSZW5kZXJFbGVtZW50OjpzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZh
bHNlOwogYm9vbCBSZW5kZXJFbGVtZW50OjpzX25vTG9uZ2VyQWZmZWN0c1BhcmVudEJsb2NrID0g
ZmFsc2U7CiAKLVJlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwg
dW5zaWduZWQgYmFzZVR5cGVGbGFncykKK1JlbmRlckVsZW1lbnQ6OlJlbmRlckVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlck9iamVjdChlbGVtZW50KQotICAgICwgbV9iYXNl
VHlwZUZsYWdzKGJhc2VUeXBlRmxhZ3MpCiAgICAgLCBtX2FuY2VzdG9yTGluZUJveERpcnR5KGZh
bHNlKQogICAgICwgbV9maXJzdENoaWxkKG51bGxwdHIpCiAgICAgLCBtX2xhc3RDaGlsZChudWxs
cHRyKQpAQCAtMjc0LDcgKzI3Myw3IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5kZXJFbGVtZW50Ojph
ZGp1c3RTdHlsZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIHVuc2lnCiAgICAgLy8g
VGhlIGFuc3dlciB0byByZXF1aXJlc0xheWVyKCkgZm9yIHBsdWdpbnMsIGlmcmFtZXMsIGFuZCBj
YW52YXMgY2FuIGNoYW5nZSB3aXRob3V0IHRoZSBhY3R1YWwKICAgICAvLyBzdHlsZSBjaGFuZ2lu
Zywgc2luY2UgaXQgZGVwZW5kcyBvbiB3aGV0aGVyIHdlIGRlY2lkZSB0byBjb21wb3NpdGUgdGhl
c2UgZWxlbWVudHMuIFdoZW4gdGhlCiAgICAgLy8gbGF5ZXIgc3RhdHVzIG9mIG9uZSBvZiB0aGVz
ZSBlbGVtZW50cyBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGZvcmNlIGEgbGF5b3V0LgotICAgIGlmIChk
aWZmID09IFN0eWxlRGlmZmVyZW5jZUVxdWFsICYmIHN0eWxlKCkgJiYgaXNSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KCkpIHsKKyAgICBpZiAoZGlmZiA9PSBTdHlsZURpZmZlcmVuY2VFcXVhbCAmJiBz
dHlsZSgpICYmIGlzTGF5ZXJNb2RlbE9iamVjdCgpKSB7CiAgICAgICAgIGlmIChoYXNMYXllcigp
ICE9IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCh0aGlzKS0+cmVxdWlyZXNMYXllcigpKQogICAg
ICAgICAgICAgZGlmZiA9IFN0eWxlRGlmZmVyZW5jZUxheW91dDsKICAgICB9CkBAIC03ODEsMTMg
Kzc4MCwyMiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXND
aGlsZHJlbihTdHlsZVByb3BhZ2F0aW9uVHlwZSBwcm9wYQogLy8gd2hlbiBzY3JvbGxpbmcgYSBw
YWdlIHdpdGggYSBmaXhlZCBiYWNrZ3JvdW5kIGltYWdlLiBBcyBhbiBvcHRpbWl6YXRpb24sIGFz
c3VtaW5nIHRoZXJlIGFyZQogLy8gbm8gZml4ZWQgcG9zaXRvbmVkIGVsZW1lbnRzIG9uIHRoZSBw
YWdlLCB3ZSBjYW4gYWNjbGVyYXRlIHNjcm9sbGluZyAodmlhIGJsaXR0aW5nKSBpZiB3ZQogLy8g
aWdub3JlIHRoZSBDU1MgcHJvcGVydHkgImJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQiLgot
c3RhdGljIGJvb2wgc2hvdWxkUmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCgpCitzdGF0
aWMgYm9vbCBzaG91bGRSZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKEZyYW1lVmlldyog
ZnJhbWVWaWV3KQogeworI2lmICFFTkFCTEUoRkFTVF9NT0JJTEVfU0NST0xMSU5HKSB8fCAhUExB
VEZPUk0oUVQpCisgICAgVU5VU0VEX1BBUkFNKGZyYW1lVmlldyk7CisjZW5kaWYKKworICAgIGJv
b2wgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IHRydWU7CiAjaWYgRU5BQkxFKEZB
U1RfTU9CSUxFX1NDUk9MTElORykKLSAgICByZXR1cm4gZmFsc2U7CisjaWYgUExBVEZPUk0oUVQp
CisgICAgaWYgKGZyYW1lVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgICAgIHJlcGFp
bnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBmYWxzZTsKICNlbHNlCi0gICAgcmV0dXJuIHRy
dWU7CisgICAgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCA9IGZhbHNlOworI2VuZGlm
CiAjZW5kaWYKKyAgICByZXR1cm4gcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbDsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIHJlbmRlcmVySGFzQmFja2dyb3VuZChjb25zdCBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQpAQCAtODYwLDcgKzg2OCw3IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSog
bmV3CiAgICAgICAgIHNfbm9Mb25nZXJBZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKICAgICB9
CiAKLSAgICBib29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBzaG91bGRSZXBh
aW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKCk7CisgICAgYm9vbCByZXBhaW50Rml4ZWRCYWNr
Z3JvdW5kc09uU2Nyb2xsID0gc2hvdWxkUmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCgm
dmlldygpLmZyYW1lVmlldygpKTsKIAogICAgIGJvb2wgbmV3U3R5bGVTbG93U2Nyb2xsID0gbmV3
U3R5bGUgJiYgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCAmJiBuZXdTdHlsZS0+aGFz
Rml4ZWRCYWNrZ3JvdW5kSW1hZ2UoKTsKICAgICBib29sIG9sZFN0eWxlU2xvd1Njcm9sbCA9IG1f
c3R5bGUgJiYgcmVwYWludEZpeGVkQmFja2dyb3VuZHNPblNjcm9sbCAmJiBtX3N0eWxlLT5oYXNG
aXhlZEJhY2tncm91bmRJbWFnZSgpOwpAQCAtOTc2LDcgKzk4NCw3IEBAIHZvaWQgUmVuZGVyRWxl
bWVudDo6d2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkKICAgICAgICAgcmVtb3ZlTGF5ZXJzKGxheWVy
KTsKICAgICB9CiAKLSAgICBib29sIHJlcGFpbnRGaXhlZEJhY2tncm91bmRzT25TY3JvbGwgPSBz
aG91bGRSZXBhaW50Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsKCk7CisgICAgYm9vbCByZXBhaW50
Rml4ZWRCYWNrZ3JvdW5kc09uU2Nyb2xsID0gc2hvdWxkUmVwYWludEZpeGVkQmFja2dyb3VuZHNP
blNjcm9sbCgmdmlldygpLmZyYW1lVmlldygpKTsKICAgICBpZiAocmVwYWludEZpeGVkQmFja2dy
b3VuZHNPblNjcm9sbCAmJiBtX3N0eWxlICYmIG1fc3R5bGUtPmhhc0ZpeGVkQmFja2dyb3VuZElt
YWdlKCkpCiAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5yZW1vdmVTbG93UmVwYWludE9iamVj
dCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXgg
NWRkMzdiZi4uYmZlNzk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCkBAIC01MCwxNCArNTAsNiBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENo
aWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICAgUmVuZGVyT2JqZWN0KiBs
YXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQogCi0gICAgLy8gRklYTUU6
IE1ha2UgdGhlc2Ugc3RhbmRhbG9uZSBhbmQgbW92ZSB0byByZWxldmFudCBmaWxlcy4KLSAgICBi
b29sIGlzUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCgpIGNvbnN0OwotICAgIGJvb2wgaXNCb3hNb2Rl
bE9iamVjdCgpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJCbG9jaygpIGNvbnN0OwotICAgIGJv
b2wgaXNSZW5kZXJCbG9ja0Zsb3coKSBjb25zdDsKLSAgICBib29sIGlzUmVuZGVyUmVwbGFjZWQo
KSBjb25zdDsKLSAgICBib29sIGlzUmVuZGVySW5saW5lKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
bmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgeyByZXR1cm4gYWRkQ2hpbGQobmV3Q2hpbGQs
IGJlZm9yZUNoaWxkKTsgfQpAQCAtOTQsMTYgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U3R5bGVJbnRlcm5hbChQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkgeyBtX3N0eWxlID0g
c3R5bGU7IH0KIAogcHJvdGVjdGVkOgotICAgIGVudW0gQmFzZVR5cGVGbGFncyB7Ci0gICAgICAg
IFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFnID0gMSA8PCAwLAotICAgICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdEZsYWcgPSAxIDw8IDEsCi0gICAgICAgIFJlbmRlcklubGluZUZsYWcgPSAxIDw8
IDIsCi0gICAgICAgIFJlbmRlclJlcGxhY2VkRmxhZyA9IDEgPDwgMywKLSAgICAgICAgUmVuZGVy
QmxvY2tGbGFnID0gMSA8PCA0LAotICAgICAgICBSZW5kZXJCbG9ja0Zsb3dGbGFnID0gMSA8PCA1
LAotICAgIH07Ci0KLSAgICBleHBsaWNpdCBSZW5kZXJFbGVtZW50KEVsZW1lbnQqLCB1bnNpZ25l
ZCBiYXNlVHlwZUZsYWdzKTsKKyAgICBleHBsaWNpdCBSZW5kZXJFbGVtZW50KEVsZW1lbnQqKTsK
IAogICAgIGJvb2wgbGF5ZXJDcmVhdGlvbkFsbG93ZWRGb3JTdWJ0cmVlKCkgY29uc3Q7CiAKQEAg
LTE0Niw3ICsxMjksNiBAQCBwcml2YXRlOgogICAgIFN0eWxlRGlmZmVyZW5jZSBhZGp1c3RTdHls
ZURpZmZlcmVuY2UoU3R5bGVEaWZmZXJlbmNlLCB1bnNpZ25lZCBjb250ZXh0U2Vuc2l0aXZlUHJv
cGVydGllcykgY29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGNhY2hlZEZpcnN0TGluZVN0eWxlKCkg
Y29uc3Q7CiAKLSAgICB1bnNpZ25lZCBtX2Jhc2VUeXBlRmxhZ3MgOiA2OwogICAgIGJvb2wgbV9h
bmNlc3RvckxpbmVCb3hEaXJ0eSA6IDE7CiAKICAgICBSZW5kZXJPYmplY3QqIG1fZmlyc3RDaGls
ZDsKQEAgLTE4MiwzNiArMTY0LDYgQEAgaW5saW5lIExheW91dFVuaXQgUmVuZGVyRWxlbWVudDo6
bWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXkKICAgICByZXR1
cm4gV2ViQ29yZTo6bWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCAm
dmlldygpLCByb3VuZFBlcmNlbnRhZ2VzKTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVu
dDo6aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYXNl
VHlwZUZsYWdzICYgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWc7Ci19Ci0KLWlubGluZSBib29s
IFJlbmRlckVsZW1lbnQ6OmlzQm94TW9kZWxPYmplY3QoKSBjb25zdAotewotICAgIHJldHVybiBt
X2Jhc2VUeXBlRmxhZ3MgJiBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWc7Ci19Ci0KLWlubGluZSBi
b29sIFJlbmRlckVsZW1lbnQ6OmlzUmVuZGVyQmxvY2soKSBjb25zdAotewotICAgIHJldHVybiBt
X2Jhc2VUeXBlRmxhZ3MgJiBSZW5kZXJCbG9ja0ZsYWc7Ci19Ci0KLWlubGluZSBib29sIFJlbmRl
ckVsZW1lbnQ6OmlzUmVuZGVyQmxvY2tGbG93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYXNl
VHlwZUZsYWdzICYgUmVuZGVyQmxvY2tGbG93RmxhZzsKLX0KLQotaW5saW5lIGJvb2wgUmVuZGVy
RWxlbWVudDo6aXNSZW5kZXJSZXBsYWNlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFzZVR5
cGVGbGFncyAmIFJlbmRlclJlcGxhY2VkRmxhZzsKLX0KLQotaW5saW5lIGJvb2wgUmVuZGVyRWxl
bWVudDo6aXNSZW5kZXJJbmxpbmUoKSBjb25zdAotewotICAgIHJldHVybiBtX2Jhc2VUeXBlRmxh
Z3MgJiBSZW5kZXJJbmxpbmVGbGFnOwotfQotCiBpbmxpbmUgUmVuZGVyRWxlbWVudCYgdG9SZW5k
ZXJFbGVtZW50KFJlbmRlck9iamVjdCYgb2JqZWN0KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKG9iamVjdC5pc1JlbmRlckVsZW1lbnQoKSk7CkBAIC0yNDAsMzYgKzE5
Miw2IEBAIGlubGluZSBjb25zdCBSZW5kZXJFbGVtZW50KiB0b1JlbmRlckVsZW1lbnQoY29uc3Qg
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiB2b2lkIHRvUmVuZGVyRWxlbWVudChjb25zdCBSZW5kZXJF
bGVtZW50Kik7CiB2b2lkIHRvUmVuZGVyRWxlbWVudChjb25zdCBSZW5kZXJFbGVtZW50Jik7CiAK
LWlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gaXNSZW5kZXJFbGVtZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRo
aXMpLT5pc1JlbmRlckxheWVyTW9kZWxPYmplY3QoKTsKLX0KLQotaW5saW5lIGJvb2wgUmVuZGVy
T2JqZWN0Ojppc0JveE1vZGVsT2JqZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNSZW5kZXJF
bGVtZW50KCkgJiYgdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5pc0JveE1vZGVsT2JqZWN0KCk7Ci19
Ci0KLWlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNSZW5kZXJCbG9jaygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlzKS0+aXNS
ZW5kZXJCbG9jaygpOwotfQotCi1pbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzUmVuZGVyQmxv
Y2tGbG93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNSZW5kZXJFbGVtZW50KCkgJiYgdG9SZW5k
ZXJFbGVtZW50KHRoaXMpLT5pc1JlbmRlckJsb2NrRmxvdygpOwotfQotCi1pbmxpbmUgYm9vbCBS
ZW5kZXJPYmplY3Q6OmlzUmVuZGVyUmVwbGFjZWQoKSBjb25zdAotewotICAgIHJldHVybiBpc1Jl
bmRlckVsZW1lbnQoKSAmJiB0b1JlbmRlckVsZW1lbnQodGhpcyktPmlzUmVuZGVyUmVwbGFjZWQo
KTsKLX0KLQotaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc1JlbmRlcklubGluZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGlzUmVuZGVyRWxlbWVudCgpICYmIHRvUmVuZGVyRWxlbWVudCh0aGlz
KS0+aXNSZW5kZXJJbmxpbmUoKTsKLX0KLQogaW5saW5lIFJlbmRlclN0eWxlKiBSZW5kZXJPYmpl
Y3Q6OnN0eWxlKCkgY29uc3QKIHsKICAgICBpZiAoaXNUZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAzM2U5NTRiLi5k
MGFlMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpoYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KEV2ZW50KiBldmVudCkKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgc3Rh
dGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewog
ICAgICAgICBtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IgPSBpc0lu
VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IobW91c2VFdmVudCk7CiAgICAgICAgIGlmIChtX21v
dXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IpIHsKLSAgICAgICAgICAgIGZy
YW1lKCkuZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KCZlbGVt
ZW50KTsKKyAgICAgICAgICAgIGZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91
c2VFdmVudHNOb2RlKCZlbGVtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQuc2V0SXNDYXB0dXJp
bmdNb3VzZUV2ZW50cyh0cnVlKTsKICAgICAgICAgICAgIHNldFVuYXZhaWxhYmxlUGx1Z2luSW5k
aWNhdG9ySXNQcmVzc2VkKHRydWUpOwogICAgICAgICB9CkBAIC02MjMsNyArNjIzLDcgQEAgdm9p
ZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JF
dmVudChFdmVudCogZXZlbnQpCiAgICAgfQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+
YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBpZiAobV91bmF2YWlsYWJsZVBsdWdp
bkluZGljYXRvcklzUHJlc3NlZCkgewotICAgICAgICAgICAgZnJhbWUoKS5ldmVudEhhbmRsZXIo
KS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQobnVsbHB0cik7CisgICAgICAgICAgICBm
cmFtZSgpLmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKICAg
ICAgICAgICAgIGVsZW1lbnQuc2V0SXNDYXB0dXJpbmdNb3VzZUV2ZW50cyhmYWxzZSk7CiAgICAg
ICAgICAgICBzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZChmYWxzZSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCmluZGV4IDk0MGVjMmIuLjkyOTlhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHN0cnVjdCBSZW5k
ZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uIHsKIAogCiBSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVy
RmxleGlibGVCb3goRWxlbWVudCogZWxlbWVudCkKLSAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQs
IDApCisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQogICAgICwgbV9vcmRlckl0ZXJhdG9yKHRo
aXMpCiAgICAgLCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCBjOTVh
N2Q4Li5mMTQ4MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCkBAIC0zMTYsNiArMzE2LDExIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6dXBk
YXRlTGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKCkKICAgICAgICAgaWYgKCFtX2xheWVyVG9SZWdpb25N
YXApCiAgICAgICAgICAgICBtX2xheWVyVG9SZWdpb25NYXAgPSBhZG9wdFB0cihuZXcgTGF5ZXJU
b1JlZ2lvbk1hcCgpKTsKICAgICAgICAgbV9sYXllclRvUmVnaW9uTWFwLT5zd2FwKGxheWVyVG9S
ZWdpb25NYXApOworCisgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRl
ciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytp
dGVyKSB7CisgICAgICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOworICAgICAg
ICAgICAgcmVnaW9uLT5zZXRSZXF1aXJlc0xheWVyRm9yQ29tcG9zaXRpbmcocmVnaW9uVG9MYXll
ckxpc3RNYXAuY29udGFpbnMocmVnaW9uKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBtX2xh
eWVyc1RvUmVnaW9uTWFwcGluZ3NEaXJ0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMWQ0MGJjMy4uZGJlNDkyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlckZyYW1lU2V0OjpSZW5kZXJGcmFtZVNldChI
VE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldCkKLSAgICA6IFJlbmRlckJveCgmZnJhbWVTZXQs
IDApCisgICAgOiBSZW5kZXJCb3goJmZyYW1lU2V0KQogICAgICwgbV9pc1Jlc2l6aW5nKGZhbHNl
KQogICAgICwgbV9pc0NoaWxkUmVzaXppbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggOGFkODliMS4uZmU1M2JkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiB9
OwogCiBSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQmIGVsZW1lbnQpCi0gICAgOiBSZW5k
ZXJCbG9jaygmZWxlbWVudCwgMCkKKyAgICA6IFJlbmRlckJsb2NrKCZlbGVtZW50KQogewogICAg
IC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBiZSBibG9jayBsZXZlbC4KICAgICBzZXRDaGls
ZHJlbklubGluZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IDMzMGI4MTAuLjBiZGM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlcklubGluZTo6UmVuZGVySW5saW5lKEVsZW1lbnQq
IGVsZW1lbnQpCi0gICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBSZW5kZXJJbmxp
bmVGbGFnKQorICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCkKICAgICAsIG1fYWx3
YXlzQ3JlYXRlTGluZUJveGVzKGZhbHNlKQogewogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDQ0MGFhZjcuLjdl
NWY3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTk4LDYg
Kzk4LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcklu
bGluZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBjdWxsZWRJbmxpbmVWaXN1YWxPdmVyZmxvd0JvdW5kaW5n
Qm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IGQ3MTQzYTUuLmMzYzE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xOTA0LDEwICsxOTA0LDYgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldEJsZW5kTW9kZShCbGVuZE1vZGUpCiB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheSgpCiB7CiAgICAgQVNTRVJU
KCFwYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpOwotCi0gICAgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcgPSBvd25pbmdMYXllcigpLT5yZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKLSAg
ICBpZiAobV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllciAmJiBmcmFtZVZpZXcuaXNUcmFja2lu
Z1JlcGFpbnRzKCkpCi0gICAgICAgIGZyYW1lVmlldy5hZGRUcmFja2VkUmVwYWludFJlY3Qob3du
aW5nTGF5ZXIoKS0+YWJzb2x1dGVCb3VuZGluZ0JveCgpKTsKICAgICAKICAgICBpZiAobV9ncmFw
aGljc0xheWVyICYmIG1fZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CkBAIC0xOTMwLDEwICsxOTI2LDYgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICBBU1NFUlQoIXBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0
b3IoKSk7CiAKLSAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IG93bmluZ0xheWVyKCktPnJlbmRl
cmVyKCkudmlldygpLmZyYW1lVmlldygpOwotICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmll
d0xheWVyICYmIGZyYW1lVmlldy5pc1RyYWNraW5nUmVwYWludHMoKSkKLSAgICAgICAgZnJhbWVW
aWV3LmFkZFRyYWNrZWRSZXBhaW50UmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHIpKTsKLQogICAg
IGlmIChtX2dyYXBoaWNzTGF5ZXIgJiYgbV9ncmFwaGljc0xheWVyLT5kcmF3c0NvbnRlbnQoKSkg
ewogICAgICAgICBJbnRSZWN0IGxheWVyRGlydHlSZWN0ID0gcjsKICAgICAgICAgbGF5ZXJEaXJ0
eVJlY3QubW92ZSgtbV9ncmFwaGljc0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKSk7CkBAIC0y
MDk3LDMzICsyMDg5LDYgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzVHJhY2tpbmdSZXBh
aW50cygpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDbGllbnQm
Pihjb21wb3NpdG9yKCkpLmlzVHJhY2tpbmdSZXBhaW50cygpOwogfQogCi1ib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c2hvdWxkU2tpcExheWVySW5EdW1wKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGxh
eWVyKSBjb25zdAotewotICAgIC8vIFNraXAgdGhlIHJvb3QgdGlsZSBjYWNoZSdzIGZsYXR0ZW5p
bmcgbGF5ZXIuCi0gICAgcmV0dXJuIG1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXIgJiYgbGF5
ZXIgJiYgbGF5ZXIgPT0gbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCk7Ci19Ci0KLWJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGREdW1wUHJvcGVydHlGb3JMYXllcihjb25zdCBHcmFw
aGljc0xheWVyKiBsYXllciwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKSBjb25zdAotewotICAg
IC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFdlYktpdDEgYW5kIG90aGVyIHBs
YXRmb3JtcywKLSAgICAvLyBza2lwIHNvbWUgcHJvcGVydGllcyBvbiB0aGUgcm9vdCB0aWxlIGNh
Y2hlLgotICAgIGlmIChtX2lzTWFpbkZyYW1lUmVuZGVyVmlld0xheWVyICYmIGxheWVyID09IG1f
Z3JhcGhpY3NMYXllci5nZXQoKSkgewotICAgICAgICBpZiAoIXN0cmNtcChwcm9wZXJ0eU5hbWUs
ICJkcmF3c0NvbnRlbnQiKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAv
LyBCYWNrZ3JvdW5kIGNvbG9yIGNvdWxkIGJlIG9mIGludGVyZXN0IHRvIHRlc3RzIG9yIG90aGVy
IGR1bXBlcnMgaWYgaXQncyBub24td2hpdGUuCi0gICAgICAgIGlmICghc3RyY21wKHByb3BlcnR5
TmFtZSwgImJhY2tncm91bmRDb2xvciIpICYmIGxheWVyLT5iYWNrZ3JvdW5kQ29sb3IoKSA9PSBD
b2xvcjo6d2hpdGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgLy8gVGhl
IHJvb3QgdGlsZSBjYWNoZSdzIHJlcGFpbnRzIHdpbGwgc2hvdyB1cCBhdCB0aGUgdG9wIHdpdGgg
RnJhbWVWaWV3J3MsCi0gICAgICAgIC8vIHNvIGRvbid0IGR1bXAgdGhlbSB0d2ljZS4KLSAgICAg
ICAgaWYgKCFzdHJjbXAocHJvcGVydHlOYW1lLCAicmVwYWludFJlY3RzIikpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KICNpZm5kZWYg
TkRFQlVHCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dmVyaWZ5Tm90UGFpbnRpbmcoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDIw
Mjk3Y2IuLjg1OThiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKQEAgLTE3MCw4ICsxNzAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGdldEN1cnJlbnRUcmFuc2Zvcm0oY29uc3QgR3JhcGhpY3NMYXllciosIFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUcmFja2luZ1Jl
cGFpbnRzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNraXBMYXll
ckluRHVtcChjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIHNob3VsZER1bXBQcm9wZXJ0eUZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpIGNvbnN0IE9WRVJSSURFOwogCiAjaWZuZGVmIE5ERUJV
RwogICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnlOb3RQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAxNGM0MDU3
OS4uNzM5ZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTY4MCw3ICs2ODAsNyBAQCBib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYgbGF5ZXIsIENvbXBvc2l0aW5nQ2hh
bmdlUgogCiAgICAgICAgICAgICBsYXllci5lbnN1cmVCYWNraW5nKCk7CiAKLSAgICAgICAgICAg
IC8vIEF0IHRoaXMgdGltZSwgdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIG9ubHkgc3VwcG9ydHMg
dGhlIHRvcC1sZXZlbCBmcmFtZS4KKyAgICAgICAgICAgIC8vIEF0IHRoaXMgdGltZSwgdGhlIFNj
cm9sbGluZ0Nvb3JpZG5hdG9yIG9ubHkgc3VwcG9ydHMgdGhlIHRvcC1sZXZlbCBmcmFtZS4KICAg
ICAgICAgICAgIGlmIChsYXllci5pc1Jvb3RMYXllcigpICYmICFtX3JlbmRlclZpZXcuZG9jdW1l
bnQoKS5vd25lckVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGxheWVyLmJhY2tpbmcoKS0+
YXR0YWNoVG9TY3JvbGxpbmdDb29yZGluYXRvcldpdGhQYXJlbnQoMCk7CiAgICAgICAgICAgICAg
ICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMt
PnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCkBAIC0xMzcyLDExICsxMzcyLDYgQEAgU3RyaW5nIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJUcmVlQXNUZXh0KExheWVyVHJlZUZsYWdzIGZsYWdz
KQogICAgIC8vIHNpbWlsYXIgYmV0d2VlbiBwbGF0Zm9ybXMuCiAgICAgU3RyaW5nIGxheWVyVHJl
ZVRleHQgPSBtX3Jvb3RDb250ZW50TGF5ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVCZWhh
dmlvcik7CiAKLSAgICAvLyBEdW1wIGFuIGVtcHR5IGxheWVyIHRyZWUgb25seSBpZiB0aGUgb25s
eSBjb21wb3NpdGVkIGxheWVyIGlzIHRoZSBtYWluIGZyYW1lJ3MgdGlsZWQgYmFja2luZywKLSAg
ICAvLyBzbyB0aGF0IHRlc3RzIGV4cGVjdGluZyB1cyB0byBkcm9wIG91dCBvZiBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZyB3aGVuIHRoZXJlIGFyZSBubyBsYXllcnMgc3VjY2VlZC4KLSAgICBpZiAo
IWhhc0FueUFkZGl0aW9uYWxDb21wb3NpdGVkTGF5ZXJzKHJvb3RSZW5kZXJMYXllcigpKSAmJiBt
YWluRnJhbWVCYWNraW5nSXNUaWxlZCgpICYmICEobGF5ZXJUcmVlQmVoYXZpb3IgJiBMYXllclRy
ZWVBc1RleHRJbmNsdWRlVGlsZUNhY2hlcykpCi0gICAgICAgIGxheWVyVHJlZVRleHQgPSAiIjsK
LQogICAgIC8vIFRoZSB0cnVlIHJvb3QgbGF5ZXIgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBkdW1w
LCBzbyBpZiB3ZSB3YW50IHRvIHJlcG9ydAogICAgIC8vIGl0cyByZXBhaW50IHJlY3RzLCB0aGV5
IG11c3QgYmUgaW5jbHVkZWQgaGVyZS4KICAgICBpZiAoZmxhZ3MgJiBMYXllclRyZWVGbGFnc0lu
Y2x1ZGVSZXBhaW50UmVjdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCBiOTFjZDAwLi45NzM1M2JlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
CkBAIC0zNyw4ICszNyw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c19oYWRMYXll
ciA9IGZhbHNlOwogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2hhZFRyYW5zZm9ybSA9
IGZhbHNlOwogYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzX2xheWVyV2FzU2VsZlBhaW50
aW5nID0gZmFsc2U7CiAKLVJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxP
YmplY3QoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgYmFzZVR5cGVGbGFncykKLSAgICA6IFJl
bmRlckVsZW1lbnQoZWxlbWVudCwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3RGbGFnKQorUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChF
bGVtZW50KiBlbGVtZW50KQorICAgIDogUmVuZGVyRWxlbWVudChlbGVtZW50KQogICAgICwgbV9s
YXllcigwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgKaW5kZXggZDA2NjQ5Yy4uYzIxNTYzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC0zMSw3ICszMSw3
IEBAIGNsYXNzIFJlbmRlckxheWVyOwogCiBjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0IDog
cHVibGljIFJlbmRlckVsZW1lbnQgewogcHVibGljOgotICAgIGV4cGxpY2l0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QoRWxlbWVudCosIHVuc2lnbmVkIGJhc2VUeXBlRmxhZ3MpOworICAgIGV4cGxp
Y2l0IFJlbmRlckxheWVyTW9kZWxPYmplY3QoRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRl
ckxheWVyTW9kZWxPYmplY3QoKTsKIAogICAgIC8vIENhbGxlZCBieSBSZW5kZXJPYmplY3Q6Ondp
bGxCZURlc3Ryb3llZCgpIGFuZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJzIHNob3VsZCBldmVyIGJl
IGRlc3Ryb3llZApAQCAtNTcsNiArNTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgorICAgIHZpcnR1YWwgYm9v
bCBpc0xheWVyTW9kZWxPYmplY3QoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVl
OyB9CisKICAgICBSZW5kZXJMYXllciogbV9sYXllcjsKIAogICAgIC8vIFVzZWQgdG8gc3RvcmUg
c3RhdGUgYmV0d2VlbiBzdHlsZVdpbGxDaGFuZ2UgYW5kIHN0eWxlRGlkQ2hhbmdlCkBAIC02OCwx
MyArNzAsMTMgQEAgcHJpdmF0ZToKIAogaW5saW5lIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHRv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighb2JqZWN0IHx8IG9iamVjdC0+aXNSZW5kZXJM
YXllck1vZGVsT2JqZWN0KCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFvYmplY3QgfHwgb2JqZWN0LT5pc0xheWVyTW9kZWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3QqPihvYmplY3QpOwogfQogCiBpbmxpbmUg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KGNv
bnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFvYmplY3QgfHwgb2JqZWN0LT5pc1JlbmRlckxheWVyTW9kZWxPYmplY3QoKSk7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW9iamVjdCB8fCBvYmplY3Qt
PmlzTGF5ZXJNb2RlbE9iamVjdCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCo+KG9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYjRlODkyNy4uNzA3NmJlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGludCBpbnZhbGlkTGluZUhl
aWdodCA9IC0xOwogCiBSZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayhIVE1MRWxlbWVu
dCYgZWxlbWVudCkKLSAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KCZlbGVtZW50LCAwKQorICAg
IDogUmVuZGVyQm94TW9kZWxPYmplY3QoJmVsZW1lbnQpCiAgICAgLCBtX2lubGluZUJveFdyYXBw
ZXIobnVsbHB0cikKICAgICAsIG1fY2FjaGVkTGluZUhlaWdodChpbnZhbGlkTGluZUhlaWdodCkK
ICAgICAsIG1faXNXQlIoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6d2JyVGFnKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA3M2Vi
OGRmLi5mOGI4N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCkBAIC0xMTE4LDcgKzExMTgsNyBAQCBTdHJpbmcgbGlzdE1hcmtlclRleHQoRUxp
c3RTdHlsZVR5cGUgdHlwZSwgaW50IHZhbHVlKQogfQogCiBSZW5kZXJMaXN0TWFya2VyOjpSZW5k
ZXJMaXN0TWFya2VyKFJlbmRlckxpc3RJdGVtJiBsaXN0SXRlbSkKLSAgICA6IFJlbmRlckJveChu
dWxscHRyLCAwKQorICAgIDogUmVuZGVyQm94KDApCiAgICAgLCBtX2xpc3RJdGVtKGxpc3RJdGVt
KQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKaW5kZXggNjYyMzY0Yi4uMmY0
ODk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmgKQEAgLTExOCwxMCArMTE4LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZv
aWQgcmVwYWludEZsb3dUaHJlYWRDb250ZW50KGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0
LCBib29sIGltbWVkaWF0ZSkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICAvLyBSZW5kZXJNdWx0aUNv
bHVtblNldCBkZXJpdmVzIGZyb20gUmVuZGVyUmVnaW9uLCBidXQgdW5saWtlIHRoZSBDU1MgUmVn
aW9ucyBzcGVjaWZpY2F0aW9uLCB0aGUgTXVsdGktQ29sdW1ucyBDU1MKLSAgICAvLyBzcGVjaWZp
Y2F0aW9uIHN0YXRlcyB0aGF0IHRoZSBjb2x1bW4gYm94ZXMgZG8gbm90IGVzdGFibGlzaCBuZXcg
U3RhY2tpbmcgQ29udGV4dHMuCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25z
dCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBSZW5kZXJCbG9ja0Zsb3c6OnJlcXVpcmVzTGF5ZXIo
KTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RMYXllckZyYWdtZW50cyhMYXllckZyYWdt
ZW50cyYsIGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRpbmdCb3gsIGNvbnN0IExheW91dFJl
Y3QmIGRpcnR5UmVjdCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRl
eCBlNDNjYTA3Li5mOWRiMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCkBAIC0zMDMsMTMgKzMwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHNldWRvRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpOyB9
CiAKICAgICBib29sIGlzUmVuZGVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuICFpc1RleHQoKTsg
fQotICAgIGJvb2wgaXNSZW5kZXJSZXBsYWNlZCgpIGNvbnN0OwotICAgIGJvb2wgaXNCb3hNb2Rl
bE9iamVjdCgpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJCbG9jaygpIGNvbnN0OwotICAgIGJv
b2wgaXNSZW5kZXJCbG9ja0Zsb3coKSBjb25zdDsKLSAgICBib29sIGlzUmVuZGVySW5saW5lKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1JlbmRlckxheWVyTW9kZWxPYmplY3QoKSBjb25zdDsKLQorICAg
IHZpcnR1YWwgYm9vbCBpc0JveE1vZGVsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNRdW90ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTMy
Myw2ICszMTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVTZXQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFi
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xheWVyTW9k
ZWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xp
c3RCb3goKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RJ
dGVtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0TWFy
a2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTMzNSwxMSArMzMwLDE1IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wg
aXNSZW5kZXJCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJTVkdCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbmRlckJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzUmVuZGVySUZyYW1lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzUmVuZGVySW5saW5lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclJlcGxhY2VkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1J1YnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCBjZWUyM2UyLi5h
YzdmZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAt
NTUsNiArNTUsOSBAQCBSZW5kZXJSZWdpb246OlJlbmRlclJlZ2lvbihFbGVtZW50KiBlbGVtZW50
LCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQogICAgICwgbV9pc1ZhbGlkKGZhbHNlKQog
ICAgICwgbV9oYXNDdXN0b21SZWdpb25TdHlsZShmYWxzZSkKICAgICAsIG1faGFzQXV0b0xvZ2lj
YWxIZWlnaHQoZmFsc2UpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICwg
bV9yZXF1aXJlc0xheWVyRm9yQ29tcG9zaXRpbmcoZmFsc2UpCisjZW5kaWYKICAgICAsIG1faGFz
Q29tcHV0ZWRBdXRvSGVpZ2h0KGZhbHNlKQogICAgICwgbV9jb21wdXRlZEF1dG9IZWlnaHQoMCkK
IHsKQEAgLTcxOCw2ICs3MjEsMjQgQEAgdm9pZCBSZW5kZXJSZWdpb246OnVwZGF0ZUxvZ2ljYWxI
ZWlnaHQoKQogICAgIH0KIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3Zv
aWQgUmVuZGVyUmVnaW9uOjpzZXRSZXF1aXJlc0xheWVyRm9yQ29tcG9zaXRpbmcoYm9vbCByZXF1
aXJlc0xheWVyRm9yQ29tcG9zaXRpbmcpCit7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxs
ZWQgd2hlbiB0aGUgcmVnaW9ucyBoYWQgYWxyZWFkeQorICAgIC8vIGJlZW4gbGFpZCBvdXQsIGFm
dGVyIHRoZSBmbG93IHRocmVhZCBkZWNpZGVzIHRoZXJlIGFyZSAKKyAgICAvLyBjb21wb3NpdGVk
IGxheWVycyB0aGF0IHdpbGwgZGlzcGxheSBpbiB0aGlzIHJlZ2lvbi4KKyAgICBBU1NFUlQoIW5l
ZWRzTGF5b3V0KCkpOworICAgIGlmIChtX3JlcXVpcmVzTGF5ZXJGb3JDb21wb3NpdGluZyA9PSBy
ZXF1aXJlc0xheWVyRm9yQ29tcG9zaXRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBi
b29sIHJlcXVpcmVkTGF5ZXIgPSByZXF1aXJlc0xheWVyKCk7CisgICAgbV9yZXF1aXJlc0xheWVy
Rm9yQ29tcG9zaXRpbmcgPSByZXF1aXJlc0xheWVyRm9yQ29tcG9zaXRpbmc7CisKKyAgICBpZiAo
cmVxdWlyZWRMYXllciAhPSByZXF1aXJlc0xheWVyKCkpCisgICAgICAgIHVwZGF0ZUxheWVySWZO
ZWVkZWQoKTsKK30KKyNlbmRpZgorCiBSZW5kZXJPdmVyZmxvdyogUmVuZGVyUmVnaW9uOjplbnN1
cmVPdmVyZmxvd0ZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCkKIHsKICAgICBSZW5kZXJCb3hS
ZWdpb25JbmZvKiBib3hJbmZvID0gcmVuZGVyQm94UmVnaW9uSW5mbyhib3gpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IGEyMzY5NWIuLmQ3MGMxZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTEzOSw4ICsxMzksMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RMYXllckZyYWdtZW50cyhMYXllckZy
YWdtZW50cyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBMYXlvdXRSZWN0JikgeyB9CiAKLSAg
ICAvLyBBbGwgcmVnaW9ucyBjcmVhdGUgc3RhY2tpbmcgY29udGV4dHMsIGFzIHNwZWNpZmllZCBp
biB0aGUgQ1NTIHN0YW5kYXJkLiBEbyB0aGF0IGJ5IGFsbG9jYXRpbmcgYSBzZXBhcmF0ZSBSZW5k
ZXJMYXllciBmb3IgZWFjaC4KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgdm9pZCBzZXRSZXF1aXJlc0xheWVyRm9yQ29tcG9zaXRpbmcoYm9vbCk7CisgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVzTGF5
ZXJGb3JDb21wb3NpdGluZyB8fCBSZW5kZXJCbG9jazo6cmVxdWlyZXNMYXllcigpOyB9CisjZW5k
aWYKIAogICAgIHZvaWQgYWRkTGF5b3V0T3ZlcmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94Kiwg
Y29uc3QgTGF5b3V0UmVjdCYpOwogICAgIHZvaWQgYWRkVmlzdWFsT3ZlcmZsb3dGb3JCb3goY29u
c3QgUmVuZGVyQm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwpAQCAtMjMwLDYgKzIzMiw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgOiAxOwogICAgIGJvb2wgbV9oYXNDdXN0b21SZWdp
b25TdHlsZSA6IDE7CiAgICAgYm9vbCBtX2hhc0F1dG9Mb2dpY2FsSGVpZ2h0IDogMTsKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgYm9vbCBtX3JlcXVpcmVzTGF5ZXJGb3JD
b21wb3NpdGluZyA6IDE7CisjZW5kaWYKICAgICBib29sIG1faGFzQ29tcHV0ZWRBdXRvSGVpZ2h0
IDogMTsKIAogICAgIExheW91dFVuaXQgbV9jb21wdXRlZEF1dG9IZWlnaHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBmM2ViZWFlLi5jY2NiNmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTQz
LDE0ICs0MywxNCBAQCBjb25zdCBpbnQgY0RlZmF1bHRXaWR0aCA9IDMwMDsKIGNvbnN0IGludCBj
RGVmYXVsdEhlaWdodCA9IDE1MDsKIAogUmVuZGVyUmVwbGFjZWQ6OlJlbmRlclJlcGxhY2VkKEVs
ZW1lbnQqIGVsZW1lbnQpCi0gICAgOiBSZW5kZXJCb3goZWxlbWVudCwgUmVuZGVyUmVwbGFjZWRG
bGFnKQorICAgIDogUmVuZGVyQm94KGVsZW1lbnQpCiAgICAgLCBtX2ludHJpbnNpY1NpemUoY0Rl
ZmF1bHRXaWR0aCwgY0RlZmF1bHRIZWlnaHQpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CiB9
CiAKIFJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQotICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFJl
bmRlclJlcGxhY2VkRmxhZykKKyAgICA6IFJlbmRlckJveChlbGVtZW50KQogICAgICwgbV9pbnRy
aW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IGE3YzY1MTYuLjk2MGQ3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC00MSw2
ICs0MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1JlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUmVwbGFjZWQoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKaW5kZXggNzMzMGQ0ZS4uZGJiNzE4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJSZXBsaWNhOjpSZW5kZXJS
ZXBsaWNhKCkKLSAgICA6IFJlbmRlckJveChudWxscHRyLCAwKQorICAgIDogUmVuZGVyQm94KDAp
CiB7CiAgICAgLy8gVGhpcyBpcyBhIGhhY2suIFJlcGxpY2FzIGFyZSBzeW50aGV0aWMsIGFuZCBk
b24ndCBwaWNrIHVwIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZQogICAgIC8vIHJlbmRlcmVycyBiZWlu
ZyByZXBsaWNhdGVkLCBzbyB0aGV5IGFsd2F5cyByZXBvcnQgdGhhdCB0aGV5IGFyZSBpbmxpbmUs
IG5vbi1yZXBsYWNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmNwcAppbmRleCAwMmI0MjdiLi5mMGI5NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCkBAIC0zNyw3ICszNyw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNjcm9s
bGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBhcnQoUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQgcGFydCkKLSAgICA6IFJlbmRlckJsb2NrKG51bGxwdHIsIDApCisgICAg
OiBSZW5kZXJCbG9jaygwKQogICAgICwgbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9w
YXJ0KHBhcnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRl
eCA3NGY4NWJjLi41OWZhZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQqIGVsZW1l
bnQpCi0gICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCAwKQorICAgIDogUmVuZGVyQmxvY2soZWxl
bWVudCkKICAgICAsIG1faGVhZCgwKQogICAgICwgbV9mb290KDApCiAgICAgLCBtX2ZpcnN0Qm9k
eSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5kZXgg
ODI1MTIxOS4uNGE5MmVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDb2wuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlclRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbChFbGVt
ZW50JiBlbGVtZW50KQotICAgIDogUmVuZGVyQm94KCZlbGVtZW50LCAwKQorICAgIDogUmVuZGVy
Qm94KCZlbGVtZW50KQogICAgICwgbV9zcGFuKDEpCiB7CiAgICAgLy8gaW5pdCBSZW5kZXJPYmpl
Y3QgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5j
cHAKaW5kZXggMzE4YjllNC4uMjRlZDY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlclRhYmxlUm93OjpSZW5kZXJUYWJs
ZVJvdyhFbGVtZW50KiBlbGVtZW50KQotICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIDApCisgICAg
OiBSZW5kZXJCb3goZWxlbWVudCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRleCkKIHsK
ICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDFiZGFjNDEuLjcwZjMzNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0
Rm9yQ2VsbChSZW5kZXJUYWJsZVNlY3Rpb246OlJvd1N0cnVjdCYgcm93CiAKIAogUmVuZGVyVGFi
bGVTZWN0aW9uOjpSZW5kZXJUYWJsZVNlY3Rpb24oRWxlbWVudCogZWxlbWVudCkKLSAgICA6IFJl
bmRlckJveChlbGVtZW50LCAwKQorICAgIDogUmVuZGVyQm94KGVsZW1lbnQpCiAgICAgLCBtX2ND
b2woMCkKICAgICAsIG1fY1JvdygwKQogICAgICwgbV9vdXRlckJvcmRlclN0YXJ0KDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCA4ZjBmZmVlLi45
MGY0NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRM
aW5raW5nLmgiCiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgotI2luY2x1ZGUgIlVzZXJBZ2VudFNj
cmlwdHMuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIgogI2luY2x1ZGUgPHd0
Zi93aW4vR0RJT2JqZWN0Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAppbmRleCA5NzkxZDdhLi43OTgwNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC02OSw2ICs2OSwxMCBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkK
KyNpbmNsdWRlIDxRVmFyaWFudD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC00OTksNiArNTAzLDIzIEBAIHZvaWQgUmVuZGVy
VHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworI2lmIFBMQVRG
T1JNKFFUKQorICAgIC8vIFByaW50IGF0dHJpYnV0ZXMgb2YgZW1iZWRkZWQgUVdpZGdldHMuIEUu
Zy4gd2hlbiB0aGUgV2ViQ29yZTo6V2lkZ2V0CisgICAgLy8gaXMgaW52aXNpYmxlIHRoZSBRV2lk
Z2V0IHNob3VsZCBiZSBpbnZpc2libGUgdG9vLgorICAgIGlmIChvLmlzV2lkZ2V0KCkpIHsKKyAg
ICAgICAgY29uc3QgUmVuZGVyV2lkZ2V0KiBwYXJ0ID0gdG9SZW5kZXJXaWRnZXQoY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QqPigmbykpOworICAgICAgICBpZiAocGFydC0+d2lkZ2V0KCkgJiYgcGFy
dC0+d2lkZ2V0KCktPnBsYXRmb3JtV2lkZ2V0KCkpIHsKKyAgICAgICAgICAgIFFPYmplY3QqIHdp
ZCA9IHBhcnQtPndpZGdldCgpLT5wbGF0Zm9ybVdpZGdldCgpOworCisgICAgICAgICAgICB0cyA8
PCAiIFtRVDogIjsKKyAgICAgICAgICAgIHRzIDw8ICJnZW9tZXRyeTogeyIgPDwgd2lkLT5wcm9w
ZXJ0eSgiZ2VvbWV0cnkiKS50b1JlY3QoKSA8PCAifSAiOworICAgICAgICAgICAgdHMgPDwgImlz
SGlkZGVuOiAiIDw8ICF3aWQtPnByb3BlcnR5KCJpc1Zpc2libGUiKS50b0Jvb2woKSA8PCAiICI7
CisgICAgICAgICAgICB0cyA8PCAiaXNTZWxmVmlzaWJsZTogIiA8PCBwYXJ0LT53aWRnZXQoKS0+
aXNTZWxmVmlzaWJsZSgpIDw8ICIgIjsKKyAgICAgICAgICAgIHRzIDw8ICJpc1BhcmVudFZpc2li
bGU6ICIgPDwgcGFydC0+d2lkZ2V0KCktPmlzUGFyZW50VmlzaWJsZSgpIDw8ICIgXSAiOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRlVGV4dFJ1bihUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywgY29uc3QgSW5saW5lVGV4dEJveCYgcnVu
KQpAQCAtNjczLDYgKzY5NCw4IEBAIHN0YXRpYyB2b2lkIHdyaXRlUmVuZGVyUmVnaW9uTGlzdChj
b25zdCBSZW5kZXJSZWdpb25MaXN0JiBmbG93VGhyZWFkUmVnaW9uTGlzdCwKICAgICAgICAgICAg
ICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwgIn0iOwogICAgICAgICAgICAgaWYgKHJlbmRl
clJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKS0+aGFzSUQoKSkKICAgICAgICAgICAgICAgICB0
cyA8PCAiICMiIDw8IHJlbmRlclJlZ2lvbi0+Z2VuZXJhdGluZ0VsZW1lbnQoKS0+aWRGb3JTdHls
ZVJlc29sdXRpb24oKTsKKyAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmhhc0xheWVyKCkp
CisgICAgICAgICAgICAgICAgdHMgPDwgIiBoYXNMYXllciI7CiAgICAgICAgICAgICBpZiAocmVu
ZGVyUmVnaW9uLT5oYXNDdXN0b21SZWdpb25TdHlsZSgpKQogICAgICAgICAgICAgICAgIHRzIDw8
ICIgcmVnaW9uIHN0eWxlOiAxIjsKICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmhhc0F1
dG9Mb2dpY2FsSGVpZ2h0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwCmluZGV4IDg3Y2Q5OGEuLjA3MDU1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC0zNCw2ICszNCw0NSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1hcmdpbkludGVydmFsR2VuZXJhdG9y
IHsKK3B1YmxpYzoKKyAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcih1bnNpZ25lZCByYWRpdXMp
OworICAgIHZvaWQgc2V0KGludCB5LCBpbnQgeDEsIGludCB4Mik7CisgICAgSW50U2hhcGVJbnRl
cnZhbCBpbnRlcnZhbEF0KGludCB5KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8aW50
PiBtX3hJbnRlcmNlcHRzOworICAgIGludCBtX3k7CisgICAgaW50IG1feDE7CisgICAgaW50IG1f
eDI7Cit9OworCitNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0
b3IodW5zaWduZWQgcmFkaXVzKQorICAgIDogbV95KDApCisgICAgLCBtX3gxKDApCisgICAgLCBt
X3gyKDApCit7CisgICAgbV94SW50ZXJjZXB0cy5yZXNpemUocmFkaXVzICsgMSk7CisgICAgdW5z
aWduZWQgcmFkaXVzU3F1YXJlZCA9IHJhZGl1cyAqIHJhZGl1czsKKyAgICBmb3IgKHVuc2lnbmVk
IHkgPSAwOyB5IDw9IHJhZGl1czsgeSsrKQorICAgICAgICBtX3hJbnRlcmNlcHRzW3ldID0gc3Fy
dChzdGF0aWNfY2FzdDxkb3VibGU+KHJhZGl1c1NxdWFyZWQgLSB5ICogeSkpOworfQorCit2b2lk
IE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjpzZXQoaW50IHksIGludCB4MSwgaW50IHgyKQorewor
ICAgIEFTU0VSVCh5ID49IDAgJiYgeDEgPj0gMCAmJiB4MiA+IHgxKTsKKyAgICBtX3kgPSB5Owor
ICAgIG1feDEgPSB4MTsKKyAgICBtX3gyID0geDI7Cit9CisKK0ludFNoYXBlSW50ZXJ2YWwgTWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0Cit7CisgICAgdW5z
aWduZWQgeEludGVyY2VwdHNJbmRleCA9IGFicyh5IC0gbV95KTsKKyAgICBpbnQgZHggPSAoeElu
dGVyY2VwdHNJbmRleCA+PSBtX3hJbnRlcmNlcHRzLnNpemUoKSkgPyAwIDogbV94SW50ZXJjZXB0
c1t4SW50ZXJjZXB0c0luZGV4XTsKKyAgICByZXR1cm4gSW50U2hhcGVJbnRlcnZhbChzdGQ6Om1h
eCgwLCBtX3gxIC0gZHgpLCBtX3gyICsgZHgpOworfQorCiB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2
YWxzOjphcHBlbmRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCiB7CiAgICAgQVNTRVJU
KHkgPj0gMCAmJiB5IDwgc2l6ZSgpICYmIHgxID49IDAgJiYgeDIgPiB4MSAmJiAobV9pbnRlcnZh
bExpc3RzW3ldLmlzRW1wdHkoKSB8fCB4MSA+IG1faW50ZXJ2YWxMaXN0c1t5XS5sYXN0KCkueDIo
KSkpOwpAQCAtNDIsNiArODEsMjAgQEAgdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5k
SW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKQogICAgIG1faW50ZXJ2YWxMaXN0c1t5XS5h
cHBlbmQoSW50U2hhcGVJbnRlcnZhbCh4MSwgeDIpKTsKIH0KIAordm9pZCBSYXN0ZXJTaGFwZUlu
dGVydmFsczo6dW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwgY29uc3QgSW50U2hhcGVJbnRlcnZh
bCYgaW50ZXJ2YWwpCit7CisgICAgQVNTRVJUKG1faW50ZXJ2YWxMaXN0c1t5XS5zaXplKCkgPD0g
MSk7IC8vIEVhY2ggbV9pbnRlcnZhbExpc3RzIGVudHJ5IGhhcyAwIG9yIG9uZSBpbnRlcnZhbC4K
KworICAgIGlmIChtX2ludGVydmFsTGlzdHNbeV0uaXNFbXB0eSgpKQorICAgICAgICBtX2ludGVy
dmFsTGlzdHNbeV0uYXBwZW5kKGludGVydmFsKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSW50U2hh
cGVJbnRlcnZhbCYgcmVzdWx0SW50ZXJ2YWwgPSBtX2ludGVydmFsTGlzdHNbeV1bMF07CisgICAg
ICAgIHJlc3VsdEludGVydmFsLnNldChzdGQ6Om1pbihyZXN1bHRJbnRlcnZhbC54MSgpLCBpbnRl
cnZhbC54MSgpKSwgc3RkOjptYXgocmVzdWx0SW50ZXJ2YWwueDIoKSwgaW50ZXJ2YWwueDIoKSkp
OworICAgIH0KKworICAgIG1fYm91bmRzLnVuaXRlKEludFJlY3QoaW50ZXJ2YWwueDEoKSwgeSwg
aW50ZXJ2YWwud2lkdGgoKSwgMSkpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hhcGVJbnRl
cnZhbHNDb250YWluKGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMsIGNvbnN0IElu
dFNoYXBlSW50ZXJ2YWwmIGludGVydmFsKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBpbnRlcnZhbHMuc2l6ZSgpOyBpKyspIHsKQEAgLTE2NSwxNCArMjE4LDM3IEBAIHZvaWQgUmFz
dGVyU2hhcGVJbnRlcnZhbHM6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJ
bnRTaGFwZUludGVydmFsCiAgICAgfQogfQogCisvLyBDdXJyZW50bHkgbGltaXRlZCB0byBjb21w
dXRpbmcgdGhlIG1hcmdpbiBib3VuZGFyeSBmb3Igc2hhcGUtb3V0c2lkZSBmb3IgZmxvYXRzLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OC4KK1Bhc3NP
d25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRl
U2hhcGVNYXJnaW5JbnRlcnZhbHModW5zaWduZWQgbWFyZ2luKSBjb25zdAoreworICAgIE93blB0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBl
SW50ZXJ2YWxzKHNpemUoKSArIG1hcmdpbikpOworICAgIE1hcmdpbkludGVydmFsR2VuZXJhdG9y
IGludGVydmFsR2VuZXJhdG9yKG1hcmdpbik7CisKKyAgICBmb3IgKGludCB5ID0gYm91bmRzKCku
eSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKKyAgICAgICAgY29uc3QgSW50U2hhcGVJ
bnRlcnZhbHMmIGludGVydmFsc0F0WSA9IGdldEludGVydmFscyh5KTsKKyAgICAgICAgaWYgKGlu
dGVydmFsc0F0WS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW50
IG1hcmdpblkwID0gc3RkOjptYXgoMCwgY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcih5IC0gbWFyZ2lu
KSk7CisgICAgICAgIGludCBtYXJnaW5ZMSA9IHN0ZDo6bWluKHJlc3VsdC0+c2l6ZSgpIC0gMSwg
Y2xhbXBUb1Bvc2l0aXZlSW50ZWdlcih5ICsgbWFyZ2luKSk7CisgICAgICAgIGludGVydmFsR2Vu
ZXJhdG9yLnNldCh5LCBpbnRlcnZhbHNBdFlbMF0ueDEoKSwgaW50ZXJ2YWxzQXRZLmxhc3QoKS54
MigpKTsKKyAgICAgICAgZm9yIChpbnQgbWFyZ2luWSA9IG1hcmdpblkwOyBtYXJnaW5ZIDw9IG1h
cmdpblkxOyArK21hcmdpblkpCisgICAgICAgICAgICByZXN1bHQtPnVuaXRlTWFyZ2luSW50ZXJ2
YWwobWFyZ2luWSwgaW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJnaW5ZKSk7CisgICAg
fQorCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7Cit9CisKIGNvbnN0IFJhc3RlclNoYXBl
SW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKICAgICBpZiAoIXNoYXBlTWFyZ2luKCkpCiAgICAg
ICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CiAKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IG5vbi16ZXJvIG1hcmdpbiwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTYzNDguCi0gICAgcmV0dXJuICptX2ludGVydmFsczsKKyAgICB1bnNpZ25lZCBtYXJn
aW5Cb3VuZGFyeVJhZGl1cyA9IHN0ZDo6bWluKGNsYW1wVG9VbnNpZ25lZChjZWlsKHNoYXBlTWFy
Z2luKCkpKSwgc3RkOjptYXgobV9pbWFnZVNpemUud2lkdGgoKSwgbV9pbWFnZVNpemUuaGVpZ2h0
KCkpKTsKKyAgICBpZiAoIW1fbWFyZ2luSW50ZXJ2YWxzKQorICAgICAgICBtX21hcmdpbkludGVy
dmFscyA9IG1faW50ZXJ2YWxzLT5jb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMobWFyZ2luQm91
bmRhcnlSYWRpdXMpOworCisgICAgcmV0dXJuICptX21hcmdpbkludGVydmFsczsKIH0KIAogY29u
c3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApp
bmRleCBmMTc5YTcwLi5hYTViOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9SYXN0ZXJTaGFwZS5oCkBAIC01MiwyNyArNTIsMzEgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiBy
ZXN1bHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQg
eTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgZmlyc3RJbmNs
dWRlZEludGVydmFsWShpbnQgbWluWSwgY29uc3QgSW50U2l6ZSYgbWluU2l6ZSwgTGF5b3V0VW5p
dCYgcmVzdWx0KSBjb25zdDsKKyAgICBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBj
b21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHModW5zaWduZWQgbWFyZ2luKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxMaXN0cy5zaXpl
KCk7IH0KKwogICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBnZXRJbnRlcnZhbHMoaW50IHkp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoeSA+PSAwICYmIHkgPCBzaXplKCkpOwogICAg
ICAgICByZXR1cm4gbV9pbnRlcnZhbExpc3RzW3ldOwogICAgIH0KKwogICAgIGJvb2wgY29udGFp
bnMoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgZ2V0SW50ZXJ2YWxYMVZhbHVlcyhp
bnQgbWluWSwgaW50IG1heFksIGludCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8aW50PiYgcmVz
dWx0KSBjb25zdDsKLQorICAgIHZvaWQgdW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwgY29uc3Qg
SW50U2hhcGVJbnRlcnZhbCYpOwogICAgIEludFJlY3QgbV9ib3VuZHM7Ci0gICAgVmVjdG9yPElu
dFNoYXBlSW50ZXJ2YWxzID4gbV9pbnRlcnZhbExpc3RzOworICAgIFZlY3RvcjxJbnRTaGFwZUlu
dGVydmFscz4gbV9pbnRlcnZhbExpc3RzOwogfTsKIAogY2xhc3MgUmFzdGVyU2hhcGUgOiBwdWJs
aWMgU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBlKTsKIHB1Ymxp
YzoKLSAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRl
cnZhbHMpCisgICAgUmFzdGVyU2hhcGUoUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4g
aW50ZXJ2YWxzLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUpCiAgICAgICAgIDogU2hhcGUoKQog
ICAgICAgICAsIG1faW50ZXJ2YWxzKGludGVydmFscykKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShp
bWFnZVNpemUpCiAgICAgewogICAgIH0KIApAQCAtODgsNiArOTIsOCBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3Q7CiAK
ICAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxzOworICAgIG11dGFi
bGUgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX21hcmdpbkludGVydmFsczsKKyAgICBJ
bnRTaXplIG1faW1hZ2VTaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRleCBlZGEzYWM4Li4xOTcwNDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMjM5LDcg
KzIzOSw3IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBTdHls
ZUltYWdlKiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNo
YXBlKGludGVydmFscy5yZWxlYXNlKCkpKTsKKyAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3Rl
clNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCksIGlt
YWdlU2l6ZSkpOwogICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7
CiAgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4s
IDApOwogICAgIHJhc3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBh
ZGRpbmcsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUluc2lkZUluZm8uY3BwCmluZGV4IGU1NTJhZTkuLmI4Y2JlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKQEAgLTU5LDMx
ICs1OSw2IEBAIGJvb2wgU2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVy
QmxvY2sqIHJlbmRlcmVyKQogICAgIH0KIH0KIAotYm9vbCBTaGFwZUluc2lkZUluZm86OnVwZGF0
ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRTaXplIGxpbmVPZmZzZXQsIExheW91dFVuaXQgbGluZUhl
aWdodCkKLXsKLSAgICBtX3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKLSAgICBib29sIHJlc3VsdCA9
IHVwZGF0ZVNlZ21lbnRzRm9yTGluZShsaW5lT2Zmc2V0LmhlaWdodCgpLCBsaW5lSGVpZ2h0KTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgbV9zZWdtZW50c1tpXS5sb2dpY2FsTGVmdCAtPSBsaW5lT2Zmc2V0LndpZHRoKCk7Ci0g
ICAgICAgIG1fc2VnbWVudHNbaV0ubG9naWNhbFJpZ2h0IC09IGxpbmVPZmZzZXQud2lkdGgoKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYm9vbCBTaGFwZUluc2lkZUluZm86OnVw
ZGF0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhl
aWdodCkKLXsKLSAgICBBU1NFUlQobGluZUhlaWdodCA+PSAwKTsKLSAgICBtX3NoYXBlTGluZVRv
cCA9IGxpbmVUb3AgLSBsb2dpY2FsVG9wT2Zmc2V0KCk7Ci0gICAgbV9saW5lSGVpZ2h0ID0gbGlu
ZUhlaWdodDsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50UmFuZ2VzLmNs
ZWFyKCk7Ci0KLSAgICBpZiAobGluZU92ZXJsYXBzU2hhcGVCb3VuZHMoKSkKLSAgICAgICAgbV9z
ZWdtZW50cyA9IGNvbXB1dGVTZWdtZW50c0ZvckxpbmUobGluZVRvcCwgbGluZUhlaWdodCk7Ci0K
LSAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7Ci19Ci0KIGJvb2wgU2hhcGVJbnNpZGVJbmZv
OjphZGp1c3RMb2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50V2lkdGgpCiB7CiAgICAgY29u
c3QgU2hhcGUqIHNoYXBlID0gY29tcHV0ZWRTaGFwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmgKaW5kZXggMDVkMDQwYS4uODNjNjM1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lk
ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRl
SW5mby5oCkBAIC02OSw4ICs2OSwzMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0Vu
YWJsZWRGb3IoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRlcmVyKTsKIAotICAgIGJvb2wgdXBkYXRl
U2VnbWVudHNGb3JMaW5lKExheW91dFNpemUgbGluZU9mZnNldCwgTGF5b3V0VW5pdCBsaW5lSGVp
Z2h0KTsKLSAgICBib29sIHVwZGF0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUhlaWdodCk7CisgICAgYm9vbCB1cGRhdGVTZWdtZW50c0ZvckxpbmUo
TGF5b3V0U2l6ZSBsaW5lT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCisgICAgeworICAg
ICAgICBtX3NlZ21lbnRSYW5nZXMuY2xlYXIoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSB1cGRh
dGVTZWdtZW50c0ZvckxpbmUobGluZU9mZnNldC5oZWlnaHQoKSwgbGluZUhlaWdodCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7IGkrKykgeworICAg
ICAgICAgICAgbV9zZWdtZW50c1tpXS5sb2dpY2FsTGVmdCAtPSBsaW5lT2Zmc2V0LndpZHRoKCk7
CisgICAgICAgICAgICBtX3NlZ21lbnRzW2ldLmxvZ2ljYWxSaWdodCAtPSBsaW5lT2Zmc2V0Lndp
ZHRoKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBi
b29sIHVwZGF0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUhlaWdodCkKKyAgICB7CisgICAgICAgIEFTU0VSVChsaW5lSGVpZ2h0ID49IDApOworICAg
ICAgICBtX3NoYXBlTGluZVRvcCA9IGxpbmVUb3AgLSBsb2dpY2FsVG9wT2Zmc2V0KCk7CisgICAg
ICAgIG1fbGluZUhlaWdodCA9IGxpbmVIZWlnaHQ7CisgICAgICAgIG1fc2VnbWVudHMuY2xlYXIo
KTsKKyAgICAgICAgbV9zZWdtZW50UmFuZ2VzLmNsZWFyKCk7CisKKyAgICAgICAgaWYgKGxpbmVP
dmVybGFwc1NoYXBlQm91bmRzKCkpCisgICAgICAgICAgICBtX3NlZ21lbnRzID0gY29tcHV0ZVNl
Z21lbnRzRm9yTGluZShsaW5lVG9wLCBsaW5lSGVpZ2h0KTsKKworICAgICAgICByZXR1cm4gbV9z
ZWdtZW50cy5zaXplKCk7CisgICAgfQogCiAgICAgYm9vbCBoYXNTZWdtZW50cygpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91
dHNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAKaW5kZXggODYzOWY3Ni4uMDc3OTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCkBAIC02NywxNCAr
NjcsMTQgQEAgdm9pZCBTaGFwZU91dHNpZGVJbmZvOjp1cGRhdGVEZWx0YXNGb3JDb250YWluaW5n
QmxvY2tMaW5lKGNvbnN0IFJlbmRlckJsb2NrKiBjb24KICAgICAgICAgaWYgKGxpbmVPdmVybGFw
c1NoYXBlQm91bmRzKCkpIHsKICAgICAgICAgICAgIFNlZ21lbnRMaXN0IHNlZ21lbnRzID0gY29t
cHV0ZVNlZ21lbnRzRm9yTGluZShsaW5lVG9wSW5TaGFwZUNvb3JkaW5hdGVzLCBsaW5lSGVpZ2h0
KTsKICAgICAgICAgICAgIGlmIChzZWdtZW50cy5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBt
X2xlZnRNYXJnaW5Cb3hEZWx0YSA9IHNlZ21lbnRzLmZpcnN0KCkubG9naWNhbExlZnQgKyBjb250
YWluaW5nQmxvY2stPm1hcmdpblN0YXJ0Rm9yQ2hpbGQobV9yZW5kZXJlcik7Ci0gICAgICAgICAg
ICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gc2VnbWVudHMubGFzdCgpLmxvZ2ljYWxSaWdo
dCAtIGNvbnRhaW5pbmdCbG9jay0+bG9naWNhbFdpZHRoRm9yQ2hpbGQobV9yZW5kZXJlcikgLSBj
b250YWluaW5nQmxvY2stPm1hcmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIpOworICAgICAgICAg
ICAgICAgIG1fbGVmdE1hcmdpbkJveERlbHRhID0gc2VnbWVudHNbMF0ubG9naWNhbExlZnQgKyBt
X3JlbmRlcmVyLT5tYXJnaW5TdGFydCgpOworICAgICAgICAgICAgICAgIG1fcmlnaHRNYXJnaW5C
b3hEZWx0YSA9IHNlZ21lbnRzW3NlZ21lbnRzLnNpemUoKS0xXS5sb2dpY2FsUmlnaHQgLSBtX3Jl
bmRlcmVyLT5sb2dpY2FsV2lkdGgoKSAtIG1fcmVuZGVyZXItPm1hcmdpbkVuZCgpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIG1f
bGVmdE1hcmdpbkJveERlbHRhID0gY29udGFpbmluZ0Jsb2NrLT5sb2dpY2FsV2lkdGhGb3JDaGls
ZChtX3JlbmRlcmVyKSArIGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luU3RhcnRGb3JDaGlsZChtX3Jl
bmRlcmVyKTsKLSAgICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gLWNvbnRhaW5pbmdCbG9j
ay0+bG9naWNhbFdpZHRoRm9yQ2hpbGQobV9yZW5kZXJlcikgLSBjb250YWluaW5nQmxvY2stPm1h
cmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIpOworICAgICAgICBtX2xlZnRNYXJnaW5Cb3hEZWx0
YSA9IG1fcmVuZGVyZXItPmxvZ2ljYWxXaWR0aCgpICsgbV9yZW5kZXJlci0+bWFyZ2luU3RhcnQo
KTsKKyAgICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gLW1fcmVuZGVyZXItPmxvZ2ljYWxX
aWR0aCgpIC0gbV9yZW5kZXJlci0+bWFyZ2luRW5kKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGQxYWE1YTguLjkxMTYz
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBA
IC0xNTI5LDE0ICsxNTI5LDYgQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgc2hhcGVNYXJn
aW4oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zaGFwZU1hcmdpbjsg
fQogICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVuZ3RoIHNoYXBlTWFyZ2luKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2hhcGVNYXJnaW4sIHN0ZDo6bW92ZShzaGFwZU1hcmdp
bikpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU2hhcGVNYXJnaW4oKSB7IHJldHVybiBM
ZW5ndGgoMCwgRml4ZWQpOyB9Ci0KLSAgICBmbG9hdCBzaGFwZUltYWdlVGhyZXNob2xkKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVJbWFnZVRocmVzaG9sZDsg
fQotICAgIHZvaWQgc2V0U2hhcGVJbWFnZVRocmVzaG9sZChmbG9hdCBzaGFwZUltYWdlVGhyZXNo
b2xkKSAKLSAgICB7IAotICAgICAgICBmbG9hdCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCA9
IGNsYW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAsIDEpOwotICAgICAgICBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRT
aGFwZUltYWdlVGhyZXNob2xkKTsgCi0gICAgfQotICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsU2hh
cGVJbWFnZVRocmVzaG9sZCgpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXRD
bGlwUGF0aChQYXNzUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBvcGVyYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAKaW5kZXggMTdjN2M2Zi4uNTVkNDQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcApAQCAtNTEsNyArNTEsNiBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICAsIG1fc2hhcGVPdXRzaWRlKFJlbmRlclN0eWxl
Ojppbml0aWFsU2hhcGVPdXRzaWRlKCkpCiAgICAgLCBtX3NoYXBlTWFyZ2luKFJlbmRlclN0eWxl
Ojppbml0aWFsU2hhcGVNYXJnaW4oKSkKICAgICAsIG1fc2hhcGVQYWRkaW5nKFJlbmRlclN0eWxl
Ojppbml0aWFsU2hhcGVQYWRkaW5nKCkpCi0gICAgLCBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxTaGFwZUltYWdlVGhyZXNob2xkKCkpCiAjZW5kaWYKICAgICAsIG1f
Y2xpcFBhdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxDbGlwUGF0aCgpKQogICAgICwgbV92aXNpdGVk
TGlua0JhY2tncm91bmRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tncm91bmRDb2xvcigp
KQpAQCAtMTI5LDcgKzEyOCw2IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkCiAgICAgLCBtX3No
YXBlT3V0c2lkZShvLm1fc2hhcGVPdXRzaWRlKQogICAgICwgbV9zaGFwZU1hcmdpbihvLm1fc2hh
cGVNYXJnaW4pCiAgICAgLCBtX3NoYXBlUGFkZGluZyhvLm1fc2hhcGVQYWRkaW5nKQotICAgICwg
bV9zaGFwZUltYWdlVGhyZXNob2xkKG8ubV9zaGFwZUltYWdlVGhyZXNob2xkKQogI2VuZGlmCiAg
ICAgLCBtX2NsaXBQYXRoKG8ubV9jbGlwUGF0aCkKICNpZiBFTkFCTEUoQ1NTM19URVhUKQpAQCAt
MjIyLDcgKzIyMCw2IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIG1fc2hh
cGVPdXRzaWRlID09IG8ubV9zaGFwZU91dHNpZGUKICAgICAgICAgJiYgbV9zaGFwZU1hcmdpbiA9
PSBvLm1fc2hhcGVNYXJnaW4KICAgICAgICAgJiYgbV9zaGFwZVBhZGRpbmcgPT0gby5tX3NoYXBl
UGFkZGluZwotICAgICAgICAmJiBtX3NoYXBlSW1hZ2VUaHJlc2hvbGQgPT0gby5tX3NoYXBlSW1h
Z2VUaHJlc2hvbGQKICNlbmRpZgogICAgICAgICAmJiBtX2NsaXBQYXRoID09IG8ubV9jbGlwUGF0
aAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCBmNDI2ZTMx
Li5kMGZiMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTE0Myw3ICsxNDMsNiBAQCBwdWJs
aWM6CiAgICAgUmVmUHRyPFNoYXBlVmFsdWU+IG1fc2hhcGVPdXRzaWRlOwogICAgIExlbmd0aCBt
X3NoYXBlTWFyZ2luOwogICAgIExlbmd0aCBtX3NoYXBlUGFkZGluZzsKLSAgICBmbG9hdCBtX3No
YXBlSW1hZ2VUaHJlc2hvbGQ7CiAjZW5kaWYKIAogICAgIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlv
bj4gbV9jbGlwUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcAppbmRleCBkMTNjYzY1Li41MDhiNDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0
b3AuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVz
cGFjZSBTVkdOYW1lczsKIAogUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVu
dFN0b3AoU1ZHU3RvcEVsZW1lbnQqIGVsZW1lbnQpCi0gICAgOiBSZW5kZXJFbGVtZW50KGVsZW1l
bnQsIDApCisgICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5k
ZXggZjZhZjhmYy4uNDA4NjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQpCi0gICAgOiBSZW5kZXJFbGVtZW50KCZlbGVtZW50LCAw
KQorICAgIDogUmVuZGVyRWxlbWVudCgmZWxlbWVudCkKICAgICAsIG1faGFzU1ZHU2hhZG93KGZh
bHNlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAppbmRl
eCA0NGI4M2EwLi43YTJmZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVt
ZW50LmNwcApAQCAtMjUzLDExICsyNTMsMTEgQEAgdm9pZCBTVkdGb250RmFjZUVsZW1lbnQ6OnJl
YnVpbGRGb250RmFjZSgpCiAgICAgaWYgKGRlc2NyaWJlc1BhcmVudEZvbnQpIHsgICAgCiAgICAg
ICAgIC8vIFRyYXZlcnNlIHBhcnNlZCBDU1MgdmFsdWVzIGFuZCBhc3NvY2lhdGUgQ1NTRm9udEZh
Y2VTcmNWYWx1ZSBlbGVtZW50cyB3aXRoIG91cnNlbHZlcy4KICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiBzcmMgPSBtX2ZvbnRGYWNlUnVsZS0+cHJvcGVydGllcygpLmdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlTcmMpOwotICAgICAgICBDU1NWYWx1ZUxpc3QqIHNyY0xpc3QgPSB0b0NT
U1ZhbHVlTGlzdChzcmMuZ2V0KCkpOworICAgICAgICBDU1NWYWx1ZUxpc3QqIHNyY0xpc3QgPSBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihzcmMuZ2V0KCkpOwogCiAgICAgICAgIHVuc2lnbmVk
IHNyY0xlbmd0aCA9IHNyY0xpc3QgPyBzcmNMaXN0LT5sZW5ndGgoKSA6IDA7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmNMZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYg
KENTU0ZvbnRGYWNlU3JjVmFsdWUqIGl0ZW0gPSB0b0NTU0ZvbnRGYWNlU3JjVmFsdWUoc3JjTGlz
dC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSkpCisgICAgICAgICAgICBpZiAoQ1NTRm9udEZh
Y2VTcmNWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PENTU0ZvbnRGYWNlU3JjVmFsdWUqPihzcmNM
aXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSkKICAgICAgICAgICAgICAgICBpdGVtLT5z
ZXRTVkdGb250RmFjZUVsZW1lbnQodGhpcyk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNzA5MzNiMC4uOWZjY2IxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTQ2LDYgKzE0NiwxMSBAQAogI2luY2x1ZGUgIlZp
YnJhdGlvbi5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJOZXR3b3Jr
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNlbmRpZgor
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJNb2NrTWVkaWFTdHJlYW1DZW50
ZXIuaCIKICNlbmRpZgpAQCAtMjcxLDYgKzI3NiwxMyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZShQYWdlKiBwYWdlKQogICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5l
ZGl0b3IoKS50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIGlmIChwYWdlLT5t
YWluRnJhbWUoKS5lZGl0b3IoKS5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpCiAgICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLmVkaXRvcigpLnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisK
KyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBw
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKSB7CisgICAgICAg
IGlmIChRTmV0d29ya0FjY2Vzc01hbmFnZXIqIHFuYW0gPSBjb250ZXh0LT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpKQorICAgICAgICAgICAgcW5hbS0+Y2xlYXJBY2Nlc3NDYWNoZSgpOworICAgIH0K
KyNlbmRpZgogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCogZG9jdW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDEyNzI4YzUuLjkyNDE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00MCwxNSArNDAs
MTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPERlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0
dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgRGVkaWNh
dGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9s
aWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9s
aWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogewotICAgIFJl
ZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwgc3RkOjptb3ZlKHNldHRp
bmdzKSwgdGhyZWFkLCB0b3BPcmlnaW4pKTsKKyAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIHRvcE9yaWdpbikpOwogICAgIGNv
bnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5RnJvbVN0cmluZyhjb250ZW50U2VjdXJp
dHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOwogICAgIHJldHVybiBjb250ZXh0
LnJlbGVhc2UoKTsKIH0KIAotRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
c3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQotICAg
IDogV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHN0ZDo6bW92ZShzZXR0aW5ncyks
IHRocmVhZCwgdG9wT3JpZ2luKQorRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhy
ZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKKyAgICA6
IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCB0b3BP
cmlnaW4pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBkYWU3YzFkLi40M2E1YjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIHN0ZDo6dW5pcXVlX3B0cjxHcm91cFNldHRpbmdzPiwg
RGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+
LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAg
IHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCk7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBzdGQ6OnVuaXF1ZV9wdHI8R3JvdXBTZXR0aW5ncz4sIERlZGljYXRlZFdvcmtl
clRocmVhZCosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CisgICAgICAg
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQq
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcAppbmRleCBmYzgyNzVhLi45MjlmZGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC01NSw5ICs1NSw5
IEBAIERlZGljYXRlZFdvcmtlclRocmVhZDo6fkRlZGljYXRlZFdvcmtlclRocmVhZCgpCiB7CiB9
CiAKLVBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlclRocmVhZDo6
Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBzdGQ6OnVuaXF1ZV9wdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gdG9wT3JpZ2luKQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdG9wT3JpZ2luKQogewotICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTo6Y3JlYXRlKHVybCwgdXNlckFnZW50LCBzdGQ6Om1vdmUoc2V0dGluZ3MpLCB0aGlzLCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdp
bik7CisgICAgcmV0dXJuIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUodXJsLCB1
c2VyQWdlbnQsIHNldHRpbmdzLCB0aGlzLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbik7CiB9CiAKIHZvaWQgRGVkaWNhdGVkV29ya2Vy
VGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgKaW5kZXggOWE5MTRkNC4uMTk5OGZlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCkBAIC00Niw3ICs0Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyVGhy
ZWFkKCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3Jr
ZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIHN0ZDo6dW5pcXVlX3B0cjxHcm91cFNldHRpbmdzPiwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsK
KyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093
blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bkV2ZW50
TG9vcCgpIE9WRVJSSURFOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZTE3N2E3MC4uMWNmNWY4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKQEAgLTUzLDE1ICs1MywxNSBAQCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlQ29ubmVjdEV2ZW50KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBycFBvcnQpCiB9CiAKIC8v
IHN0YXRpYwotUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0dGluZ3M+IHNl
dHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50
U2VjdXJpdHlQb2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4g
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRp
bmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUo
bmFtZSwgdXJsLCB1c2VyQWdlbnQsIHN0ZDo6bW92ZShzZXR0aW5ncyksIHRocmVhZCkpOworICAg
IFJlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY29udGV4dCA9IGFkb3B0UmVmKG5ldyBT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZShuYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRo
cmVhZCkpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5RnJvbVN0cmlu
Zyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOwogICAg
IHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6
OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBzdGQ6OnVuaXF1ZV9wdHI8R3JvdXBTZXR0aW5n
cz4gc2V0dGluZ3MsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQotICAgIDogV29ya2VyR2xv
YmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHN0ZDo6bW92ZShzZXR0aW5ncyksIHRocmVhZCwgMCkK
K1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFz
c093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJl
YWQpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRo
cmVhZCwgMCkKICAgICAsIG1fbmFtZShuYW1lKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDIyNTE2ODEuLmUwMTM2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgV29ya2VyR2xvYmFsU2NvcGUgQmFzZTsKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8R3JvdXBTZXR0aW5ncz4sIFNoYXJlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwg
U2hhcmVkV29ya2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlKTsKICAgICAgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0
dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAgICAgU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgU2hhcmVkV29ya2VyVGhyZWFkKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsKIAog
ICAgICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJUaHJlYWQuY3BwCmluZGV4IDlkNmVhNWMuLjFhYzE0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgU2hh
cmVkV29ya2VyVGhyZWFkOjp+U2hhcmVkV29ya2VyVGhyZWFkKCkKIHsKIH0KIAotUGFzc1JlZlB0
cjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIHN0ZDo6dW5p
cXVlX3B0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2Vj
dXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikKK1Bhc3NSZWZQdHI8
V29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRy
PEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KQogewotICAgIHJldHVybiBTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKG1fbmFtZSwgdXJsLCB1c2VyQWdlbnQsIHN0ZDo6
bW92ZShzZXR0aW5ncyksIHRoaXMsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSk7CisgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVh
dGUobV9uYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRoaXMsIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oCmlu
ZGV4IDkxMGZhY2QuLmNhMDVhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJUaHJlYWQuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlclRocmVhZCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
b3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0
aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3Jr
ZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDI5
Mzc5NzQuLmI3ZTZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCkBAIC04NCwxMCArODQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c0NsZWFudXBUYXNrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotV29ya2VyR2xvYmFs
U2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgc3RkOjp1bmlxdWVfcHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBXb3JrZXJU
aHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQorV29y
a2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgV29y
a2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikK
ICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudCkKLSAgICAsIG1f
Z3JvdXBTZXR0aW5ncyhzdGQ6Om1vdmUoc2V0dGluZ3MpKQorICAgICwgbV9ncm91cFNldHRpbmdz
KHNldHRpbmdzKQogICAgICwgbV9zY3JpcHQoYWRvcHRQdHIobmV3IFdvcmtlclNjcmlwdENvbnRy
b2xsZXIodGhpcykpKQogICAgICwgbV90aHJlYWQodGhyZWFkKQogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggMjlm
MmRlZS4uNzhhZjc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaApAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV90b3BPcmlnaW4uZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgV29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIHN0ZDo6dW5pcXVl
X3B0cjxHcm91cFNldHRpbmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gdG9wT3JpZ2luKTsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFdvcmtl
clRocmVhZCosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAg
IHZvaWQgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklE
RTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgVVJM
IG1fdXJsOwogICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcm91cFNldHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CisgICAgICAgIE93blB0cjxHcm91
cFNldHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CiAKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8V29y
a2VyTG9jYXRpb24+IG1fbG9jYXRpb247CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFdvcmtlck5h
dmlnYXRvcj4gbV9uYXZpZ2F0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKaW5kZXggNjczM2QxNC4uNWU0OTI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICBVUkwgbV9zY3JpcHRV
Ukw7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcm91cFNl
dHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CisgICAgT3duUHRyPEdyb3VwU2V0dGluZ3M+IG1fZ3Jv
dXBTZXR0aW5nczsKICAgICBTdHJpbmcgbV9zb3VyY2VDb2RlOwogICAgIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSBtX3N0YXJ0TW9kZTsKICAgICBTdHJpbmcgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7
CkBAIC05OCw3ICs5OCw3IEBAIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRT
dGFydHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyCiAgICAgaWYgKCFzZXR0
aW5ncykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9ncm91cFNldHRpbmdzID0gc3RkOjptYWtl
X3VuaXF1ZTxHcm91cFNldHRpbmdzPigpOworICAgIG1fZ3JvdXBTZXR0aW5ncyA9IEdyb3VwU2V0
dGluZ3M6OmNyZWF0ZSgpOwogICAgIG1fZ3JvdXBTZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlUXVv
dGFCeXRlcyhzZXR0aW5ncy0+bG9jYWxTdG9yYWdlUXVvdGFCeXRlcygpKTsKICAgICBtX2dyb3Vw
U2V0dGluZ3MtPnNldEluZGV4ZWREQlF1b3RhQnl0ZXMoc2V0dGluZ3MtPmluZGV4ZWREQlF1b3Rh
Qnl0ZXMoKSk7CiAgICAgbV9ncm91cFNldHRpbmdzLT5zZXRJbmRleGVkREJEYXRhYmFzZVBhdGgo
c2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNlUGF0aCgpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTE0
Niw3ICsxNDYsNyBAQCB2b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKIHsKICAgICB7
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICAg
ICAgbV93b3JrZXJHbG9iYWxTY29wZSA9IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKG1fc3RhcnR1
cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwgc3RkOjptb3Zl
KG1fc3RhcnR1cERhdGEtPm1fZ3JvdXBTZXR0aW5ncyksIG1fc3RhcnR1cERhdGEtPm1fY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIG1fc3RhcnR1cERhdGEtPm1fdG9wT3JpZ2luLnJlbGVhc2UoKSk7CisgICAgICAgIG1fd29y
a2VyR2xvYmFsU2NvcGUgPSBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShtX3N0YXJ0dXBEYXRhLT5t
X3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQsIG1fc3RhcnR1cERhdGEtPm1f
Z3JvdXBTZXR0aW5ncy5yZWxlYXNlKCksIG1fc3RhcnR1cERhdGEtPm1fY29udGVudFNlY3VyaXR5
UG9saWN5LCBtX3N0YXJ0dXBEYXRhLT5tX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIG1fc3Rh
cnR1cERhdGEtPm1fdG9wT3JpZ2luLnJlbGVhc2UoKSk7CiAKICAgICAgICAgaWYgKG1fcnVuTG9v
cC50ZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSB3b3JrZXIgd2FzIHRlcm1pbmF0
ZWQgYmVmb3JlIHRoZSB0aHJlYWQgaGFkIGEgY2hhbmNlIHRvIHJ1bi4gU2luY2UgdGhlIGNvbnRl
eHQgZGlkbid0IGV4aXN0IHlldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmlu
ZGV4IGIxZmEyMmUuLmQ1ZGIyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aApAQCAtNzQsNyArNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlclRo
cmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0
aW5ncyosICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29y
a2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAgICAgIC8vIEZhY3Rvcnkg
bWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29udGV4dCBmb3IgdGhlIHRocmVhZC4K
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgc3RkOjp1
bmlxdWVfcHRyPEdyb3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiB0b3BPcmlnaW4pID0gMDsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdv
cmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSA9IDA7CiAKICAgICAg
ICAgLy8gRXhlY3V0ZXMgdGhlIGV2ZW50IGxvb3AgZm9yIHRoZSB3b3JrZXIgdGhyZWFkLiBEZXJp
dmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHRvIHBlcmZvcm0gYWN0aW9ucyBiZWZvcmUvYWZ0ZXIg
ZW50ZXJpbmcgdGhlIGV2ZW50IGxvb3AuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExv
b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggM2Q2OTdkYy4uZjgwNjRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTUxLDcgKzUxLDggQEAgY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVh
ZGFibGVMb2FkZXI7CiAKLWNsYXNzIFhNTEh0dHBSZXF1ZXN0IEZJTkFMIDogcHVibGljIFNjcmlw
dFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKy8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBt
YXJrZWQgRklOQUwgb25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgor
Y2xhc3MgWE1MSHR0cFJlcXVlc3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpA
QCAtODIsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFRpbWVvdXQoKTsK
ICNlbmRpZgogCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIFN0cmluZyBzdGF0dXNUZXh0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKQEAg
LTE1OCw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxYTUxIdHRwUmVx
dWVzdD46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFhNTEh0dHBSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwpAQCAtMTY3LDggKzE2OCw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSB7IGRlcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSBGSU5BTCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0OwogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwpAQCAt
MTc3LDEyICsxNzgsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHVzZXNEYXNoYm9hcmRCYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGlt
ZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGlt
ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogCiAgICAgU3RyaW5nIHJlc3Bv
bnNlTUlNRVR5cGUoKSBjb25zdDsKICAgICBib29sIHJlc3BvbnNlSXNYTUwoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKaW5kZXggOWEzYjRiOS4uNDcx
NGU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2Fk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKQEAgLTQz
LDcgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKLSAgICBjbGFzcyBYTUxIdHRw
UmVxdWVzdFVwbG9hZCBGSU5BTCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsK
KyAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2UgPGh0
dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KKyAgICBjbGFzcyBYTUxIdHRwUmVx
dWVzdFVwbG9hZCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBjcmVh
dGUoWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0KQogICAgICAgICB7CkBAIC01NCw4ICs1
NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkZXJlZigpIHsgbV94bWxI
dHRwUmVxdWVzdC0+ZGVyZWYoKTsgfQogICAgICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3htbEh0dHBSZXF1ZXN0OyB9CiAKLSAgICAgICAgdmly
dHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIFhNTEh0dHBSZXF1ZXN0VXBsb2FkRXZlbnRUYXJnZXRJbnRlcmZhY2VU
eXBlOyB9Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyBy
ZXR1cm4gWE1MSHR0cFJlcXVlc3RVcGxvYWRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAg
ICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV94bWxIdHRwUmVxdWVzdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihhYm9ydCk7CiAgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggN2RkYmEzYi4uYjAyMjVjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDE0MyArMSwzIEBACi0yMDEzLTEwLTAyICBC
cmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KLQotICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzYXZlIGFuZCByZXN0b3JlIHNvdXJjZSBwb3NpdGlvbnMgaW4gYmFjay9mb3J3YXJk
IGhpc3RvcnkKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjA2MgotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAg
ICBQcmV2aW91c2x5LCB0aGUgYmFjay9mb3J3YXJkIGVudHJpZXMgY29tcHJpc2VkIG9mIG9ubHkg
dGhlIGNvbnRlbnQKLSAgICAgICAgdmlld3MsIGJ1dCBub3QgdGhlaXIgcG9zaXRpb25zIGlmIG5h
dmlnYXRlZCB2aWEgaHlwZXJsaW5rIChpLmUuLAotICAgICAgICBoYW5kbGluZyBzY3JpcHQuanM6
NDIpLiAgV2hlbiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHNhbWUKLSAgICAgICAgY29udGVu
dCB2aWV3IGFwcGVhcmVkIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCwgdGhlIG1vc3QgcmVjZW50
Ci0gICAgICAgIG5hdmlnYXRpb24gd2FzIGRpc3BsYXllZCByYXRoZXIgdGhhbiB0aGUgbGlua2Vk
IHBvc2l0aW9uLgotCi0gICAgICAgIFdlIG5vdyBzdG9yZSBjb250ZXh0IG5lY2Vzc2FyeSB0byBy
ZS1uYXZpZ2F0ZSBzdWNoIGh5cGVybGlua3MgYnkKLSAgICAgICAgc3RvcmluZyB2aWV3LSBzcGVj
aWZpYyBkYXRhIGluc2lkZSBhIGNvb2tpZSBvYmplY3QsIGFuZCBpbnZva2UgYQotICAgICAgICBz
dXBwbGllZCBjYWxsYmFjayB0byB0YWtlIGFueSBwb3NpdGlvbiBpbml0aWFsaXphdGlvbiBhY3Rp
b25zLAotICAgICAgICBzdWNoIGFzIGNhbGxpbmcgVGV4dEVkaXRvci5yZXZlYWxQb3NpdGlvbi4g
IFRoaXMgc3RhdGUgaXMKLSAgICAgICAgZW5jYXBzdWxhdGVkIGludG8gQmFja0ZvcndhcmRFbnRy
eSBpbnN0YW5jZXMuCi0KLSAgICAgICAgRnVuY3Rpb25zIHRoYXQgc2F2ZSBhbmQgcmVzdG9yZSBz
Y3JvbGwgcG9zaXRpb25zIGluc2lkZSBjb250ZW50Ci0gICAgICAgIHZpZXdzIGhhdmUgYmVlbiBj
aGFuZ2VkIHRvIHN0b3JlIHN0YXRlIGluIEJhY2tGb3J3YXJkRW50cnkKLSAgICAgICAgaW5zdGFu
Y2VzLCBzbyBtdWx0aXBsZSBzY3JvbGwgcG9zaXRpb25zIGNhbiBiZSBzYXZlZCBmb3IgYSBjb250
ZW50Ci0gICAgICAgIHZpZXcgYXBwZWFyaW5nIGluIHRoZSBuYXZpZ2F0aW9uIGhpc3RvcnkgbW9y
ZSB0aGFuIG9uY2UuCi0KLSAgICAgICAgKiBVc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnku
anM6IEFkZGVkLgotICAgICAgICAoV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkpOgotICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlLmdldCBjb250ZW50
Vmlldyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUu
Z2V0IGNvb2tpZSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90
b3R5cGUucHJlcGFyZVRvU2hvdyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRF
bnRyeS5wcm90b3R5cGUucHJlcGFyZVRvSGlkZSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQmFj
a0ZvcndhcmRFbnRyeS5wcm90b3R5cGUuX3Jlc3RvcmVGcm9tQ29va2llKToKLSAgICAgICAgKFdl
Ykluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZS5fcmVzdG9yZVNjcm9sbFBvc2l0
aW9ucyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUu
X3NhdmVTY3JvbGxQb3NpdGlvbnMpOgotICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEJy
b3dzZXIuanM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBl
LnNob3dDb250ZW50Vmlldyk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlLl91cGRhdGVDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcyk6Ci0gICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLl91cGRhdGVGaW5kQmFubmVyKToK
LSAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzOgotICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5nZXQgY3VycmVu
dENvbnRlbnRWaWV3KToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ci5wcm90b3R5cGUuZ2V0IGN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5KToKLSAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuc2hvd0NvbnRlbnRWaWV3KToK
LSAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuc2hv
d0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleCk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIucHJvdG90eXBlLnJlcGxhY2VDb250ZW50Vmlldyk6Ci0gICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmNsb3NlQWxsQ29udGVu
dFZpZXdzT2ZQcm90b3R5cGUpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyLnByb3RvdHlwZS5jbG9zZUFsbENvbnRlbnRWaWV3cyk6Ci0gICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmdvQmFjayk6Ci0gICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLmdvRm9yd2FyZCk6Ci0g
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLnNob3du
KToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUu
aGlkZGVuKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90
b3R5cGUuX3Nob3dFbnRyeSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIucHJvdG90eXBlLl9oaWRlRW50cnkpOgotICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFp
bi5odG1sOgotICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKLSAgICAgICAgKFdlYklu
c3BlY3Rvci5vcGVuVVJMKToKLSAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJh
clBhbmVsLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5yZXN0b3JlQ2FsbGJhY2spOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93U291cmNlQ29kZSk6Ci0KLTIwMTMtMTAtMDIgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KLQotICAgICAgICBXZWIgSW5zcGVjdG9y
OiBoaWdobGlnaHQgbmV3bHkgYWRkZWQgY29uc29sZSBtZXNzYWdlcyBpbiB0aGUgQWN0aXZpdHkg
Vmlld2VyCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjIwOTMKLQotICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCi0KLSAgICAgICAg
RmFkZSB0aGUgYXBwcm9wcmlhdGUgY29uc29sZSBsb2cgYnV0dG9uIGluIHRoZSBBY3Rpdml0eSBW
aWV3ZXIgZm9yIGEgc2hvcnQgZHVyYXRpb24KLSAgICAgICAgdG8gY2FsbCBhdHRlbnRpb24gdG8g
aXQgd2hlbiBpdHMgY291bnQgaXMgaW5jcmVtZW50ZWQuIFRoZSBhbmltYXRpb24gbWF5IGJlIHJl
c3RhcnRlZAotICAgICAgICBpbi1mbGlnaHQgaWYgdGhlIGNvdW50IGlzIGluY3JlbWVudGVkIGFz
IHdlIHdlcmUgcHVsc2luZyB0aGUgb3BhY2l0eS4KLQotICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
RGFzaGJvYXJkVmlldy5jc3M6Ci0gICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkID4gLml0ZW0u
cHVsc2luZyk6Ci0gICAgICAgIChALXdlYmtpdC1rZXlmcmFtZXMgY29uc29sZS1pdGVtLXB1bHNl
KToKLSAgICAgICAgTmV3IHB1bHNlIGFuaW1hdGlvbiBmb3IgYSBjb25zb2xlIGl0ZW0gaW4gdGhl
IEFjdGl2aXR5IFZpZXdlciwgdGhlIG5ldyAicHVsc2luZyIgQ1NTCi0gICAgICAgIGNsYXNzIGlz
IGFwcGxpZWQgaW4gV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLl9zZXRDb25z
b2xlSXRlbVZhbHVlKCkuCi0KLSAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Rhc2hib2FyZFZpZXcu
anM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuc2V0IGxv
Z3MpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLnNldCBp
c3N1ZXMpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLnNl
dCBlcnJvcnMpOgotICAgICAgICBSZWZhY3RvciBzZXR0ZXJzIHRvIHVzZSB0aGUgbmV3IFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fc2V0Q29uc29sZUl0ZW1WYWx1ZSgpCi0g
ICAgICAgIG1ldGhvZC4KLQotICAgICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJv
dG90eXBlLl9zZXRDb25zb2xlSXRlbVZhbHVlKToKLSAgICAgICAgV2Ugbm93IHNldCB0aGUgaXZh
ciBiYWNraW5nIGNvbnNvbGUgaXRlbSB2YWx1ZXMgaW4gdGhpcyBuZXcgcmVmYWN0b3JlZCBtZXRo
b2QgYW5kIGFkZGl0aW9uYWxseQotICAgICAgICBhcHBseSBhbiBhbmltYXRpb24gdG8gdGhlIERP
TSBlbGVtZW50IGZvciB0aGUgZ2l2ZW4gaXRlbSBpZiBpdHMgdmFsdWUgaXMgaW5jcmVtZW50ZWQg
c3VjaCB0aGF0Ci0gICAgICAgIGl0IHB1bHNlcywgc3VidGx5IGNhbGxpbmcgb3V0IHRoZSBkZXZl
bG9wZXIncyBhdHRlbnRpb24gdG8gaXQuCi0KLSAgICAgICAgKiBVc2VySW50ZXJmYWNlL1V0aWxp
dGllcy5qczoKLSAgICAgICAgTmV3IEVsZW1lbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlU3R5bGVz
KCkgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBoYWNrIHJlcXVpcmVkIHRvIGZvcmNlCi0gICAgICAg
IGEgc3R5bGUgcmVjYWxjIG9uIGEgZ2l2ZW4gZWxlbWVudC4KLQotMjAxMy0xMC0wMSAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgotCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IGV2
YWx1YXRlIGFuZCBzaG93IGEgcG9wb3ZlciBmb3Igc2VsZWN0ZWQgdGV4dCBpbiBKUyBzb3VyY2Ug
d2hlbiBwYXVzZWQKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMjE1MQotCi0gICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KLQotICAg
ICAgICBJZGVudGlmeSBpZiB0aGUgaG92ZXJlZCB0b2tlbiBpcyBjb250YWluZWQgd2l0aGluIHRo
ZSB0ZXh0IHNlbGVjdGlvbiAoaWYgYW55KSBhbmQgdXNlCi0gICAgICAgIHRoZSBzZWxlY3Rpb24g
YXMgdGhlIGhvdmVyZWQgZXhwcmVzc2lvbiB0byBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3QgdGV4
dCBhbmQgaG92ZXIgaXQKLSAgICAgICAgdG8gc2VlIHdoYXQgaXQgZXZhbHVhdGVzIHRvLgotCi0g
ICAgICAgICogVXNlckludGVyZmFjZS9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIu
anM6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9s
bGVyLnByb3RvdHlwZS5oaWdobGlnaHRSYW5nZSk6Ci0gICAgICAgIENoZWNrIHdlJ3JlIHRyeWlu
ZyB0byBoaWdobGlnaHQgYSBkaWZmZXJlbnQgcmFuZ2UgYmVmb3JlIHJlbW92aW5nIHRoZSBoaWdo
bGlnaHQKLSAgICAgICAgYW5kIGFwcGx5aW5nIHRoZSBuZXcgb25lLCB0aGlzIHByZXZlbnRzIHRo
ZSBtYXJrZWQgdGV4dCBmcm9tIGZsYXNoaW5nIGlmIGl0J3MKLSAgICAgICAgYmVpbmcgcmUtaG92
ZXJlZCB3aGljaCB3b3VsZCBlYXNpbHkgaGFwcGVuIHdoZW4gaG92ZXJpbmcgbXVsdGlwbGUgdG9r
ZW5zIHdpdGhpbgotICAgICAgICB0aGUgc2FtZSBzZWxlY3Rpb24uCi0KLSAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIucHJvdG90eXBlLl9wcm9j
ZXNzSmF2YVNjcmlwdEV4cHJlc3Npb24pOgotICAgICAgICBJbiB0aGUgY2FzZSB3aGVyZSB0aGVy
ZSBpcyBzZWxlY3RlZCB0ZXh0LCBjaGVjayB3aGV0aGVyIHRoZSBob3ZlcmVkIHRva2VuIGlzIGF0
IGxlYXN0Ci0gICAgICAgIHBhcnRpYWxseSBjb250YWluZWQgd2l0aGluIHRoZSBzZWxlY3Rpb24s
IGFuZCBpZiBzbyB1c2UgdGhlIHNlbGVjdGlvbiB0ZXh0IGFzIHRoZQotICAgICAgICBob3ZlcmVk
IGV4cHJlc3Npb24gdG8gZXZhbHVhdGUuCi0KLTIwMTMtMTAtMDEgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KLQotICAgICAgICBDb25zb2xlIGJ1dHRvbnMgZG9u4oCZdCBzaG93
IGFmdGVyIHBhZ2UgcmVsb2FkCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTY1MTUKLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQot
ICAgICAgICBUaGUgY29ycmVjdCBkaXNwbGF5IG9mIG5hdmlnYXRpb24gaXRlbXMgaW4gdGhlIENv
bnRlbnRCcm93c2VyIGlzIGNvbnRpbmdlbnQgb24KLSAgICAgICAgdGhlIENvbnRlbnRWaWV3Q29u
dGFpbmVyJ3MgX2JhY2tGb3J3YXJkTGlzdCBiZWluZyB1cC10by1kYXRlIHdoZW4gdGhlIG5hdmln
YXRpb24KLSAgICAgICAgaXRlbXMgYXJlIHJldHJpZXZlZCBmcm9tIGl0LiBIb3dldmVyLCB3aGVu
IHRoZSBtYWluIHJlc291cmNlIGNoYW5nZXMgKGluIHRoaXMgY2FzZQotICAgICAgICB0aGUgdXNl
ciByZWZyZXNoZXMgdGhlIGJyb3dzZXIpLCBjYWxscyBhcmUgbWFkZSB0byBDb250ZW50Vmlld0Nv
bnRhaW5lcidzCi0gICAgICAgIGNsb3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoKSB3aGlj
aCBtYXkgbW9kaWZ5IHRoZSBfYmFja0ZvcndhcmRMaXN0IGJ1dCBkb2Vzbid0Ci0gICAgICAgIG5l
Y2Vzc2FyaWx5IG5vdGlmeSBvZiBhIGNoYW5nZSB0byB0aGUgY3VycmVudENvbnRlbnRWaWV3IHNp
bmNlIHdlIG1heSBiZSBzdGlsbCBzaG93aW5nCi0gICAgICAgIHRoZSBzYW1lIHZpZXcgaW4gY2Fz
ZSBpdCB3YXNuJ3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbWFpbiByZXNvdXJjZSwgZm9yIGlu
c3RhbmNlCi0gICAgICAgIHRoZSBjb25zb2xlIGxvZy4KLQotICAgICAgICBXZSBub3cgY2hlY2sg
aWYgdGhlIF9iYWNrRm9yd2FyZExpc3QgaXMgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBjYWxsaW5n
Ci0gICAgICAgIGNsb3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoKSBhbmQgaW4gdGhhdCBj
YXNlIGFsc28gZGlzcGF0Y2ggdGhlCi0gICAgICAgIEN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZSBldmVudCB3aGljaCB3aWxsIHJlc3RvcmUgdGhlIGNvcnJlY3Qgc3RhdGUKLSAgICAgICAgZm9y
IHRoZSBiYWNrL2ZvcndhcmQgYnV0dG9ucyBhbmQgbmF2aWdhdGlvbiBpdGVtcyBvZiB0aGUgbmF2
aWdhdGlvbiBiYXIuCi0KLSAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFp
bmVyLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3Rv
dHlwZS5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKToKLSAgICAgICAgVHJhY2sgY2hh
bmdlcyB0byB0aGUgX2JhY2tGb3J3YXJkTGlzdCBhbmQgZGlzcGF0Y2ggdGhlIEN1cnJlbnRDb250
ZW50Vmlld0RpZENoYW5nZQotICAgICAgICBldmVudCBpbiBjYXNlIHN1Y2ggY2hhbmdlcyBoYXBw
ZW5lZC4KLQogMjAxMy0wOS0zMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJvd3MgaW4gdGhlIExheWVyIHNpZGViYXIgcGFuZWwg
bWF5IGhhdmUgdGhlIGluY29ycmVjdCBiYWNrZ3JvdW5kIGNvbG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFja0ZvcndhcmRFbnRyeS5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhYjI4YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzCisrKyAvZGV2
L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUwotICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECi0gKiBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKLSAq
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1XZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGZ1bmN0aW9u
KGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKLXsKLSAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0gICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50Vmll
dzsKLSAgICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3aXRoIE9iamVjdC5zaGFsbG93RXF1YWws
IHNvIHNob3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBhcnJheXMuCi0gICAgdGhpcy5fY29va2ll
ID0gY29va2llIHx8IHt9OwotICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IFtdOwotICAgIHRo
aXMuX3Jlc3RvcmVDYWxsYmFjayA9IHJlc3RvcmVDYWxsYmFjazsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5CYWNrRm9yd2FyZEVudHJ5LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkJhY2tGb3J3YXJkRW50cnksCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZSwKLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IGNvbnRlbnRWaWV3KCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50VmlldzsKLSAgICB9LAotCi0gICAg
Z2V0IGNvb2tpZSgpCi0gICAgewotICAgICAgICAvLyBDb29raWVzIGFyZSBpbW11dGFibGU7IHRo
ZXkgcmVwcmVzZW50IGEgc3BlY2lmaWMgbmF2aWdhdGlvbiBhY3Rpb24uCi0gICAgICAgIHJldHVy
biBPYmplY3Quc2hhbGxvd0NvcHkodGhpcy5fY29va2llKTsKLSAgICB9LAotCi0gICAgcHJlcGFy
ZVRvU2hvdzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzdG9yZUZyb21Db29r
aWUoKTsKLQotICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnZpc2libGUgPSB0cnVlOwotICAgICAg
ICB0aGlzLmNvbnRlbnRWaWV3LnNob3duKCk7Ci0gICAgICAgIHRoaXMuY29udGVudFZpZXcudXBk
YXRlTGF5b3V0KCk7Ci0gICAgfSwKLQotICAgIHByZXBhcmVUb0hpZGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuY29udGVudFZpZXcudmlzaWJsZSA9IGZhbHNlOwotICAgICAgICB0
aGlzLmNvbnRlbnRWaWV3LmhpZGRlbigpOwotCi0gICAgICAgIHRoaXMuX3NhdmVTY3JvbGxQb3Np
dGlvbnMoKTsKLSAgICB9LAotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3Jlc3RvcmVGcm9tQ29v
a2llOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9zaXRp
b25zKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3Jlc3RvcmVDYWxsYmFjayAmJiB0eXBlb2YgdGhp
cy5fcmVzdG9yZUNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhpcy5fcmVz
dG9yZUNhbGxiYWNrLmNhbGwobnVsbCwgdGhpcy5jb250ZW50VmlldywgdGhpcy5jb29raWUpOwot
ICAgIH0sCi0KLSAgICBfcmVzdG9yZVNjcm9sbFBvc2l0aW9uczogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgLy8gSWYgbm8gc2Nyb2xsIHBvc2l0aW9ucyBhcmUgc2F2ZWQsIGRvIG5vdGhpbmcu
Ci0gICAgICAgIGlmICghdGhpcy5fc2Nyb2xsUG9zaXRpb25zLmxlbmd0aCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB2YXIgc2Nyb2xsYWJsZUVsZW1lbnRzID0gdGhpcy5jb250ZW50
Vmlldy5zY3JvbGxhYmxlRWxlbWVudHMgfHwgW107Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuX3Njcm9sbFBvc2l0aW9ucy5sZW5ndGggPT09IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGgp
OwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB0aGlzLl9zY3JvbGxQb3NpdGlv
bnNbaV07Ci0gICAgICAgICAgICB2YXIgZWxlbWVudCA9IHNjcm9sbGFibGVFbGVtZW50c1tpXTsK
LSAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUgdG9wIHNjcm9sbCBwb3NpdGlvbiBieSBlaXRoZXIg
c2Nyb2xsaW5nIHRvIHRoZSBib3R0b20gb3IgdG8gdGhlIHNhdmVkIHBvc2l0aW9uLgotICAgICAg
ICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSBwb3NpdGlvbi5pc1Njcm9sbGVkVG9Cb3R0b20gPyBl
bGVtZW50LnNjcm9sbEhlaWdodCA6IHBvc2l0aW9uLnNjcm9sbFRvcDsKLQotICAgICAgICAgICAg
Ly8gRG9uJ3QgcmVzdG9yZSB0aGUgbGVmdCBzY3JvbGwgcG9zaXRpb24gd2hlbiBzY3JvbGxlZCB0
byB0aGUgYm90dG9tLiBUaGlzIHdheSB0aGUgd2hlbiBjb250ZW50IGNoYW5nZXMKLSAgICAgICAg
ICAgIC8vIHRoZSB1c2VyIHdvbid0IGJlIGxlZnQgaW4gYSB3ZWlyZCBob3Jpem9udGFsIHBvc2l0
aW9uLgotICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ID0gcG9zaXRpb24uaXNTY3JvbGxl
ZFRvQm90dG9tID8gMCA6IHBvc2l0aW9uLnNjcm9sbExlZnQ7Ci0gICAgICAgIH0KLSAgICB9LAot
Ci0gICAgX3NhdmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZh
ciBzY3JvbGxhYmxlRWxlbWVudHMgPSB0aGlzLmNvbnRlbnRWaWV3LnNjcm9sbGFibGVFbGVtZW50
cyB8fCBbXTsKLSAgICAgICAgdmFyIHNjcm9sbFBvc2l0aW9ucyA9IFtdOwotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVudHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHsgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcCwgc2Nyb2xsTGVmdDog
ZWxlbWVudC5zY3JvbGxMZWZ0IH07Ci0gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50Vmlldy5z
aG91bGRLZWVwRWxlbWVudHNTY3JvbGxlZFRvQm90dG9tKQotICAgICAgICAgICAgICAgIHBvc2l0
aW9uLmlzU2Nyb2xsZWRUb0JvdHRvbSA9IGVsZW1lbnQuaXNTY3JvbGxlZFRvQm90dG9tKCk7Ci0K
LSAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IHNjcm9sbFBvc2l0aW9uczsKLSAgICB9
Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29k
ZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLmpzCmluZGV4
IGNhOGNiODEuLjJhOTNjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yVG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXIuanMKQEAgLTE1OSwxNCArMTU5LDYgQEAgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JU
b2tlblRyYWNraW5nQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICBoaWdobGlnaHRSYW5n
ZTogZnVuY3Rpb24ocmFuZ2UpCiAgICAgewotICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIGlmIHdl
J3JlIHRyeWluZyB0byBoaWdobGlnaHQgdGhlIHNhbWUgcmFuZ2UuCi0gICAgICAgIGlmICh0aGlz
Ll9jb2RlTWlycm9yTWFya2VkVGV4dCAmJiB0aGlzLl9jb2RlTWlycm9yTWFya2VkVGV4dC5jbGFz
c05hbWUgPT09IHRoaXMuX2NsYXNzTmFtZUZvckhpZ2hsaWdodGVkUmFuZ2UpIHsKLSAgICAgICAg
ICAgIHZhciBoaWdobGlnaHRlZFJhbmdlID0gdGhpcy5fY29kZU1pcnJvck1hcmtlZFRleHQuZmlu
ZCgpOwotICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5jb21wYXJlQ29kZU1pcnJvclBvc2l0
aW9ucyhoaWdobGlnaHRlZFJhbmdlLmZyb20sIHJhbmdlLnN0YXJ0KSA9PT0gMCAmJgotICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jb21wYXJlQ29kZU1pcnJvclBvc2l0aW9ucyhoaWdobGln
aHRlZFJhbmdlLnRvLCByYW5nZS5lbmQpID09PSAwKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCiAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0ZWRSYW5nZSgpOwogCiAg
ICAgICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLl9jbGFzc05hbWVGb3JIaWdobGlnaHRlZFJhbmdl
IHx8ICIiOwpAQCAtMzY4LDMyICszNjAsNiBAQCBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2Vu
VHJhY2tpbmdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX2hvdmVy
ZWRUb2tlbkluZm8ubW9kZU5hbWUgIT09ICJqYXZhc2NyaXB0IikKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogCi0gICAgICAgIHZhciBzdGFydFBvc2l0aW9uID0ge2xpbmU6IHRoaXMuX2hvdmVy
ZWRUb2tlbkluZm8ucG9zaXRpb24ubGluZSwgY2g6IHRoaXMuX2hvdmVyZWRUb2tlbkluZm8udG9r
ZW4uc3RhcnR9OwotICAgICAgICB2YXIgZW5kUG9zaXRpb24gPSB7bGluZTogdGhpcy5faG92ZXJl
ZFRva2VuSW5mby5wb3NpdGlvbi5saW5lLCBjaDogdGhpcy5faG92ZXJlZFRva2VuSW5mby50b2tl
bi5lbmR9OwotCi0gICAgICAgIC8vIElmIHRoZSBob3ZlcmVkIHRva2VuIGlzIHdpdGhpbiBhIHNl
bGVjdGlvbiwgdXNlIHRoZSBzZWxlY3Rpb24gYXMgb3VyIGV4cHJlc3Npb24uCi0gICAgICAgIGlm
ICh0aGlzLl9jb2RlTWlycm9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpIHsKLSAgICAgICAgICAgIHZh
ciBzZWxlY3Rpb25SYW5nZSA9IHsKLSAgICAgICAgICAgICAgICBzdGFydDogdGhpcy5fY29kZU1p
cnJvci5nZXRDdXJzb3IoInN0YXJ0IiksCi0gICAgICAgICAgICAgICAgZW5kOiB0aGlzLl9jb2Rl
TWlycm9yLmdldEN1cnNvcigiZW5kIikKLSAgICAgICAgICAgIH07Ci0gICAgICAgIAotICAgICAg
ICAgICAgZnVuY3Rpb24gdG9rZW5Jc0luUmFuZ2UodG9rZW4sIHJhbmdlKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5saW5lID49IHJhbmdlLnN0YXJ0LmxpbmUg
JiYgdG9rZW4uY2ggPj0gcmFuZ2Uuc3RhcnQuY2ggJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4ubGluZSA8PSByYW5nZS5lbmQubGluZSAmJiB0b2tlbi5jaCA8PSByYW5nZS5lbmQuY2g7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgaWYgKHRva2VuSXNJblJhbmdl
KHN0YXJ0UG9zaXRpb24sIHNlbGVjdGlvblJhbmdlKSB8fCB0b2tlbklzSW5SYW5nZShlbmRQb3Np
dGlvbiwgc2VsZWN0aW9uUmFuZ2UpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICAgICAgaG92ZXJlZFRva2VuOiB0aGlzLl9ob3ZlcmVkVG9rZW5JbmZvLnRva2Vu
LAotICAgICAgICAgICAgICAgICAgICBob3ZlcmVkVG9rZW5SYW5nZTogc2VsZWN0aW9uUmFuZ2Us
Ci0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IHRoaXMuX2NvZGVNaXJyb3IuZ2V0U2Vs
ZWN0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb25SYW5nZTogc2VsZWN0aW9u
UmFuZ2UsCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSAKLQog
ICAgICAgICAvLyBXZSBvbmx5IGhhbmRsZSB2YXJzLCBkZWZpbml0aW9ucywgcHJvcGVydGllcywg
YW5kIHRoZSBrZXl3b3JkICd0aGlzJy4KICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLl9ob3ZlcmVk
VG9rZW5JbmZvLnRva2VuLnR5cGU7CiAgICAgICAgIHZhciBpc1Byb3BlcnR5ID0gdHlwZS5pbmRl
eE9mKCJwcm9wZXJ0eSIpICE9PSAtMTsKQEAgLTQxMyw2ICszNzksOCBAQCBXZWJJbnNwZWN0b3Iu
Q29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
Ly8gV29yayBvdXQgdGhlIGZ1bGwgaG92ZXJlZCBleHByZXNzaW9uLgogICAgICAgICB2YXIgZXhw
cmVzc2lvbiA9IHRoaXMuX2hvdmVyZWRUb2tlbkluZm8udG9rZW4uc3RyaW5nOwogICAgICAgICB2
YXIgZXhwcmVzc2lvblN0YXJ0UG9zaXRpb24gPSB7bGluZTogdGhpcy5faG92ZXJlZFRva2VuSW5m
by5wb3NpdGlvbi5saW5lLCBjaDogdGhpcy5faG92ZXJlZFRva2VuSW5mby50b2tlbi5zdGFydH07
CisgICAgICAgIHZhciBzdGFydFBvc2l0aW9uID0ge2xpbmU6IHRoaXMuX2hvdmVyZWRUb2tlbklu
Zm8ucG9zaXRpb24ubGluZSwgY2g6IHRoaXMuX2hvdmVyZWRUb2tlbkluZm8udG9rZW4uc3RhcnR9
OworICAgICAgICB2YXIgZW5kUG9zaXRpb24gPSB7bGluZTogdGhpcy5faG92ZXJlZFRva2VuSW5m
by5wb3NpdGlvbi5saW5lLCBjaDogdGhpcy5faG92ZXJlZFRva2VuSW5mby50b2tlbi5lbmR9Owog
ICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgdmFyIHRva2VuID0gdGhpcy5fY29k
ZU1pcnJvci5nZXRUb2tlbkF0KGV4cHJlc3Npb25TdGFydFBvc2l0aW9uKTsKICAgICAgICAgICAg
IHZhciBpc0RvdCA9IHRva2VuICYmICF0b2tlbi50eXBlICYmIHRva2VuLnN0cmluZyA9PT0gIi4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVu
dEJyb3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50
QnJvd3Nlci5qcwppbmRleCBkYjk4N2E4Li4zN2Y1MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50QnJvd3Nlci5qcwpAQCAtMTU3LDkg
KzE1Nyw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgfSwKIAotICAgIHNob3dD
b250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNr
KQorICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCiAgICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNv
bnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0aGlz
Ll9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwogICAg
IH0sCiAKICAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXBy
ZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nKQpAQCAtNDExLDcgKzQxMSw3IEBAIFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gR28gdGhyb3Vn
aCBlYWNoIG9mIHRoZSBpdGVtcyBvZiB0aGUgbmV3IGNvbnRlbnQgdmlldyBhbmQgYWRkIGEgZGl2
aWRlciBiZWZvcmUgdGhlbS4KICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3Lm5hdmlnYXRpb25J
dGVtcy5mb3JFYWNoKGZ1bmN0aW9uKG5hdmlnYXRpb25JdGVtLCBpbmRleCkgewotICAgICAgICAg
ICAgLy8gQWRkIGRpdmlkZXJzIGJlZm9yZSBpdGVtcyB1bmxlc3MgaXQncyB0aGUgZmlyc3QgaXRl
bSBhbmQgbm90IGEgYnV0dG9uLgorICAgICAgICAgICAgLy8gQWRkIGRpdmlkZXJzIGJlZm9yZSBp
dGVtcyB1bmxlc3MgaXQncyB0aGUgZmlyc3QgaXRlbSBhbmQgbm90IGEgYnV0dG9uLiAKICAgICAg
ICAgICAgIGlmIChpbmRleCAhPT0gMCB8fCBuYXZpZ2F0aW9uSXRlbSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSkgewogICAgICAgICAgICAgICAgIHZhciBkaXZp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW07CiAgICAgICAgICAg
ICAgICAgbmF2aWdhdGlvbkJhci5pbnNlcnROYXZpZ2F0aW9uSXRlbShkaXZpZGVyLCBpbnNlcnRp
b25JbmRleCsrKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZmluZEJhbm5lci5udW1iZXJPZlJl
c3VsdHMgPSBudWxsOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KKyAgICAgICAg
CiAgICAgICAgIHRoaXMuX2ZpbmRCYW5uZXIudGFyZ2V0RWxlbWVudCA9IGN1cnJlbnRDb250ZW50
Vmlldy5lbGVtZW50OwogICAgICAgICB0aGlzLl9maW5kQmFubmVyLm51bWJlck9mUmVzdWx0cyA9
IGN1cnJlbnRDb250ZW50Vmlldy5oYXNQZXJmb3JtZWRTZWFyY2ggPyBjdXJyZW50Q29udGVudFZp
ZXcubnVtYmVyT2ZTZWFyY2hSZXN1bHRzIDogbnVsbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRhaW5lci5qcwpp
bmRleCA4NTUwZTZhLi42MDgzYjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Vmlld0NvbnRhaW5lci5qcwpAQCAtNjQsMTMg
KzY0LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPCAwIHx8IHRoaXMuX2N1cnJl
bnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKQogICAgICAgICAgICAg
cmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhpcy5f
Y3VycmVudEluZGV4XS5jb250ZW50VmlldzsKLSAgICB9LAotCi0gICAgZ2V0IGN1cnJlbnRCYWNr
Rm9yd2FyZEVudHJ5KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPCAw
IHx8IHRoaXMuX2N1cnJlbnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAx
KQotICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9y
d2FyZExpc3RbdGhpcy5fY3VycmVudEluZGV4XTsKICAgICB9LAogCkBAIC0xMzMsNyArMTI2LDcg
QEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRWaWV3OwogICAgIH0sCiAKLSAgICBzaG93Q29udGVudFZpZXc6IGZ1
bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKKyAgICBzaG93Q29u
dGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOwog
ICAgICAgICBpZiAoIShjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50
VmlldykpCkBAIC0xNDUsMTEgKzEzOCwxMCBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoY29udGVudFZpZXcucGFyZW50Q29udGFp
bmVyICYmIGNvbnRlbnRWaWV3LnBhcmVudENvbnRhaW5lciAhPT0gdGhpcykKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogCi0gICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRC
YWNrRm9yd2FyZEVudHJ5OwotICAgICAgICB2YXIgcHJvdmlzaW9uYWxFbnRyeSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeShjb250ZW50VmlldywgY29va2llLCByZXN0b3JlQ2Fs
bGJhY2spOwotICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSB3b3VsZCBoYXZlIGFk
ZGVkIGFuIGlkZW50aWNhbCBiYWNrL2ZvcndhcmQgbGlzdCBlbnRyeS4KLSAgICAgICAgaWYgKGN1
cnJlbnRFbnRyeSAmJiBjdXJyZW50RW50cnkuY29udGVudFZpZXcgPT09IGNvbnRlbnRWaWV3ICYm
IE9iamVjdC5zaGFsbG93RXF1YWwocHJvdmlzaW9uYWxFbnRyeS5jb29raWUsIGN1cnJlbnRFbnRy
eS5jb29raWUpKQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbnRyeS5jb250ZW50VmlldzsK
KyAgICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIGNvbnRlbnQgdmlldyBpcyBhbHJl
YWR5IHRoZSBjdXJyZW50IGNvbnRlbnQgdmlldy4KKyAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50
VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OworICAgICAgICBpZiAoY3VycmVudENvbnRl
bnRWaWV3ID09PSBjb250ZW50VmlldykKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50VmlldzsK
IAogICAgICAgICAvLyBTaG93aW5nIGEgY29udGVudCB2aWV3IHdpbGwgdHJ1bmNhdGUgdGhlIGJh
Y2svZm9yd2FyZCBsaXN0IGFmdGVyIHRoZSBjdXJyZW50IGluZGV4IGFuZCBpbnNlcnQgdGhlIGNv
bnRlbnQgdmlldwogICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LiBGaW5hbGx5LCB0
aGUgY3VycmVudCBpbmRleCB3aWxsIGJlIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0
aGUgYmFjay9mb3J3YXJkIGxpc3QuCkBAIC0xNTgsMzAgKzE1MCwyOSBAQCBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbmV3SW5kZXgg
PSB0aGlzLl9jdXJyZW50SW5kZXggKyAxOwogCiAgICAgICAgIC8vIEluc2VydCB0aGUgY29udGVu
dCB2aWV3IGF0IHRoZSBuZXcgaW5kZXguIFRoaXMgd2lsbCByZW1vdmUgYW55IGNvbnRlbnQgdmll
d3MgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBpbmRleC4KLSAgICAgICAgdmFyIHJlbW92
ZWRFbnRyaWVzID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0LnNwbGljZShuZXdJbmRleCwgdGhpcy5f
YmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIG5ld0luZGV4LCBwcm92aXNpb25hbEVudHJ5KTsKKyAg
ICAgICAgdmFyIHJlbW92ZWRJdGVtcyA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5zcGxpY2UobmV3
SW5kZXgsIHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSBuZXdJbmRleCwgY29udGVudFZp
ZXcpOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5ld0luZGV4ID09PSB0aGlzLl9iYWNrRm9y
d2FyZExpc3QubGVuZ3RoIC0gMSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2JhY2tG
b3J3YXJkTGlzdFtuZXdJbmRleF0gPT09IHByb3Zpc2lvbmFsRW50cnkpOworICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9iYWNrRm9yd2FyZExpc3RbbmV3SW5kZXhdID09PSBjb250ZW50Vmll
dyk7CiAKICAgICAgICAgLy8gRGlzYXNzb2NpYXRlIHdpdGggdGhlIHJlbW92ZWQgY29udGVudCB2
aWV3cy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1vdmVkRW50cmllcy5sZW5ndGg7
ICsraSkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlbW92ZWRJdGVtcy5sZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgLy8gU2tpcCBkaXNhc3NvY2lhdGlvbiBpZiB0aGlzIGNvbnRl
bnQgdmlldyBpcyBzdGlsbCBpbiB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCi0gICAgICAgICAgICB2
YXIgc2hvdWxkRGlzc29jaWF0ZUNvbnRlbnRWaWV3ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0LnNv
bWUoZnVuY3Rpb24oZXhpc3RpbmdFbnRyeSkgewotICAgICAgICAgICAgICAgIHJldHVybiBleGlz
dGluZ0VudHJ5LmNvbnRlbnRWaWV3ID09PSByZW1vdmVkRW50cmllc1tpXS5jb250ZW50VmlldzsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKHNob3VsZERpc3NvY2lhdGVDb250ZW50
VmlldykKLSAgICAgICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXco
cmVtb3ZlZEVudHJpZXNbaV0pOworICAgICAgICAgICAgaWYgKHRoaXMuX2JhY2tGb3J3YXJkTGlz
dC5jb250YWlucyhyZW1vdmVkSXRlbXNbaV0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZpZXcocmVtb3ZlZEl0
ZW1zW2ldKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFzc29jaWF0ZSB3aXRoIHRoZSBuZXcg
Y29udGVudCB2aWV3LgogICAgICAgICBjb250ZW50Vmlldy5fcGFyZW50Q29udGFpbmVyID0gdGhp
czsKIAotICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgobmV3SW5kZXgp
OworICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5KG5ld0luZGV4KTsKIAogICAgICAg
ICByZXR1cm4gY29udGVudFZpZXc7CiAgICAgfSwKIAotICAgIHNob3dCYWNrRm9yd2FyZEVudHJ5
Rm9ySW5kZXg6IGZ1bmN0aW9uKGluZGV4KQorICAgIHNob3dCYWNrRm9yd2FyZEVudHJ5OiBmdW5j
dGlvbihpbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ID49IDAgJiYg
aW5kZXggPD0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwogICAgICAgICBpZiAo
aW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpCkBA
IC0xOTEsMTUgKzE4MiwxMyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEhpZGUgdGhlIGN1
cnJlbnRseSB2aXNpYmxlIGNvbnRlbnQgdmlldy4KLSAgICAgICAgdmFyIHByZXZpb3VzRW50cnkg
PSB0aGlzLmN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5OwotICAgICAgICBpZiAocHJldmlvdXNFbnRy
eSkKLSAgICAgICAgICAgIHRoaXMuX2hpZGVFbnRyeShwcmV2aW91c0VudHJ5KTsKKyAgICAgICAg
dmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OworICAgICAg
ICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQorICAgICAgICAgICAgdGhpcy5faGlkZUNvbnRlbnRW
aWV3KGN1cnJlbnRDb250ZW50Vmlldyk7CiAKICAgICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0g
aW5kZXg7Ci0gICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9yd2Fy
ZEVudHJ5OwotICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50RW50cnkpOwogCi0gICAgICAg
IHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnkpOworICAgICAgICB0aGlzLl9zaG93Q29udGVu
dFZpZXcodGhpcy5jdXJyZW50Q29udGVudFZpZXcpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5D
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgIH0sCkBAIC0yMjQsNyArMjEzLDcgQEAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB2YXIgY3VycmVudGx5U2hvd2luZyA9ICh0aGlzLmN1cnJlbnRDb250ZW50VmlldyA9PT0gb2xk
Q29udGVudFZpZXcpOwogICAgICAgICBpZiAoY3VycmVudGx5U2hvd2luZykKLSAgICAgICAgICAg
IHRoaXMuX2hpZGVFbnRyeSh0aGlzLmN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5KTsKKyAgICAgICAg
ICAgIHRoaXMuX2hpZGVDb250ZW50VmlldyhvbGRDb250ZW50Vmlldyk7CiAKICAgICAgICAgLy8g
RGlzYXNzb2NpYXRlIHdpdGggdGhlIG9sZCBjb250ZW50IHZpZXcuCiAgICAgICAgIHRoaXMuX2Rp
c2Fzc29jaWF0ZUZyb21Db250ZW50VmlldyhvbGRDb250ZW50Vmlldyk7CkBAIC0yMzQsMTMgKzIy
MywxMiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIC8vIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIG9sZENvbnRlbnRWaWV3IHdp
dGggbmV3Q29udGVudFZpZXcgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgaWYgKHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtpXS5jb250ZW50VmlldyA9PT0gb2xk
Q29udGVudFZpZXcpCi0gICAgICAgICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0W2ldLmNv
bnRlbnRWaWV3ID0gbmV3Q29udGVudFZpZXc7CisgICAgICAgICAgICBpZiAodGhpcy5fYmFja0Zv
cndhcmRMaXN0W2ldID09PSBvbGRDb250ZW50VmlldykKKyAgICAgICAgICAgICAgICB0aGlzLl9i
YWNrRm9yd2FyZExpc3RbaV0gPSBuZXdDb250ZW50VmlldzsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIFJlLXNob3cgdGhlIGN1cnJlbnQgZW50cnksIGJlY2F1c2UgaXRzIGNvbnRlbnQgdmlldyBp
bnN0YW5jZSB3YXMgcmVwbGFjZWQuCiAgICAgICAgIGlmIChjdXJyZW50bHlTaG93aW5nKSB7Ci0g
ICAgICAgICAgICB0aGlzLl9zaG93RW50cnkodGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeSk7
CisgICAgICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXcobmV3Q29udGVudFZpZXcpOwogICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSk7CiAgICAg
ICAgIH0KICAgICB9LApAQCAtMjU2LDcgKzI0NCw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIElmIHRoZXkgYWxsIGFyZSB3ZSBj
YW4gdXNlIHRoZSBxdWlja2VyIGNsb3NlQWxsQ29udGVudFZpZXdzIG1ldGhvZC4KICAgICAgICAg
dmFyIGFsbFNhbWVQcm90b3R5cGUgPSB0cnVlOwogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5f
YmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgICAgICBp
ZiAoISh0aGlzLl9iYWNrRm9yd2FyZExpc3RbaV0uY29udGVudFZpZXcgaW5zdGFuY2VvZiBjb25z
dHJ1Y3RvcikpIHsKKyAgICAgICAgICAgIGlmICghKHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtpXSBp
bnN0YW5jZW9mIGNvbnN0cnVjdG9yKSkgewogICAgICAgICAgICAgICAgIGFsbFNhbWVQcm90b3R5
cGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI2
OSwxNSArMjU3LDE0IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdmFyIG9sZEN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVu
dENvbnRlbnRWaWV3OwogCi0gICAgICAgIHZhciBiYWNrRm9yd2FyZExpc3REaWRDaGFuZ2UgPSBm
YWxzZTsKICAgICAgICAgLy8gSGlkZSBhbmQgZGlzYXNzb2NpYXRlIHdpdGggYWxsIHRoZSBjb250
ZW50IHZpZXdzIHRoYXQgYXJlIGluc3RhbmNlcyBvZiB0aGUgY29uc3RydWN0b3IuCiAgICAgICAg
IGZvciAodmFyIGkgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyAt
LWkpIHsKLSAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdFtpXTsK
LSAgICAgICAgICAgIGlmICghKGVudHJ5LmNvbnRlbnRWaWV3IGluc3RhbmNlb2YgY29uc3RydWN0
b3IpKQorICAgICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0
W2ldOworICAgICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rv
cikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChlbnRyeS5j
b250ZW50VmlldyA9PT0gb2xkQ3VycmVudENvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAgIHRo
aXMuX2hpZGVFbnRyeShlbnRyeSk7CisgICAgICAgICAgICBpZiAoY29udGVudFZpZXcgPT09IG9s
ZEN1cnJlbnRDb250ZW50VmlldykKKyAgICAgICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZp
ZXcoY29udGVudFZpZXcpOwogCiAgICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudEluZGV4ID49
IGkpIHsKICAgICAgICAgICAgICAgICAvLyBEZWNyZW1lbnQgdGhlIGN1cnJlbnRJbmRleCBzaW5j
ZSB3ZSB3aWxsIHJlbW92ZSBhbiBpdGVtIGluIHRoZSBiYWNrL2ZvcndhcmQgYXJyYXkKQEAgLTI4
NSwxOCArMjcyLDE3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgLS10aGlzLl9jdXJyZW50SW5kZXg7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHRoaXMuX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50VmlldyhlbnRy
eS5jb250ZW50Vmlldyk7CisgICAgICAgICAgICB0aGlzLl9kaXNhc3NvY2lhdGVGcm9tQ29udGVu
dFZpZXcoY29udGVudFZpZXcpOwogCiAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGl0ZW0gZnJv
bSB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCiAgICAgICAgICAgICB0aGlzLl9iYWNrRm9yd2FyZExp
c3Quc3BsaWNlKGksIDEpOwotICAgICAgICAgICAgYmFja0ZvcndhcmRMaXN0RGlkQ2hhbmdlID0g
dHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJl
bnRCYWNrRm9yd2FyZEVudHJ5OwotICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50RW50cnkg
fHwgKCFjdXJyZW50RW50cnkgJiYgdGhpcy5fY3VycmVudEluZGV4ID09PSAtMSkpOworICAgICAg
ICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGN1cnJlbnRDb250ZW50VmlldyB8fCAoIWN1cnJlbnRDb250ZW50
VmlldyAmJiB0aGlzLl9jdXJyZW50SW5kZXggPT09IC0xKSk7CiAKLSAgICAgICAgaWYgKGN1cnJl
bnRFbnRyeSAmJiBjdXJyZW50RW50cnkuY29udGVudFZpZXcgIT09IG9sZEN1cnJlbnRDb250ZW50
VmlldyB8fCBiYWNrRm9yd2FyZExpc3REaWRDaGFuZ2UpIHsKLSAgICAgICAgICAgIHRoaXMuX3No
b3dFbnRyeShjdXJyZW50RW50cnkpOworICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3ICYm
IGN1cnJlbnRDb250ZW50VmlldyAhPT0gb2xkQ3VycmVudENvbnRlbnRWaWV3KSB7CisgICAgICAg
ICAgICB0aGlzLl9zaG93Q29udGVudFZpZXcoY3VycmVudENvbnRlbnRWaWV3KTsKICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9
CiAgICAgfSwKQEAgLTMxMCwxMCArMjk2LDEwIEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nv
bnRhaW5lci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gSGlkZSBhbmQgZGlzYXNzb2NpYXRl
IHdpdGggYWxsIHRoZSBjb250ZW50IHZpZXdzLgogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGVu
dHJ5ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0W2ldOworICAgICAgICAgICAgdmFyIGNvbnRlbnRW
aWV3ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0W2ldOwogICAgICAgICAgICAgaWYgKGkgPT09IHRo
aXMuX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICAgICB0aGlzLl9oaWRlRW50cnkoZW50cnkp
OwotICAgICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KGVudHJ5LmNv
bnRlbnRWaWV3KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9oaWRlQ29udGVudFZpZXcoY29udGVu
dFZpZXcpOworICAgICAgICAgICAgdGhpcy5fZGlzYXNzb2NpYXRlRnJvbUNvbnRlbnRWaWV3KGNv
bnRlbnRWaWV3KTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9
IFtdOwpAQCAtMzM2LDMyICszMjIsMzIgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5jYW5Hb0JhY2soKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeUZv
ckluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCAtIDEpOworICAgICAgICB0aGlzLnNob3dCYWNrRm9y
d2FyZEVudHJ5KHRoaXMuX2N1cnJlbnRJbmRleCAtIDEpOwogICAgIH0sCiAKICAgICBnb0Zvcndh
cmQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5jYW5Hb0ZvcndhcmQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeUZv
ckluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCArIDEpOworICAgICAgICB0aGlzLnNob3dCYWNrRm9y
d2FyZEVudHJ5KHRoaXMuX2N1cnJlbnRJbmRleCArIDEpOwogICAgIH0sCiAKICAgICBzaG93bjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGN1cnJlbnRFbnRyeSA9IHRoaXMuY3VycmVu
dEJhY2tGb3J3YXJkRW50cnk7Ci0gICAgICAgIGlmICghY3VycmVudEVudHJ5KQorICAgICAgICB2
YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CisgICAgICAg
IGlmICghY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnkpOworICAgICAgICB0aGlzLl9zaG93Q29udGVu
dFZpZXcoY3VycmVudENvbnRlbnRWaWV3KTsKICAgICB9LAogCiAgICAgaGlkZGVuOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0Zv
cndhcmRFbnRyeTsKLSAgICAgICAgaWYgKCFjdXJyZW50RW50cnkpCisgICAgICAgIHZhciBjdXJy
ZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKKyAgICAgICAgaWYgKCFj
dXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5f
aGlkZUVudHJ5KGN1cnJlbnRFbnRyeSk7CisgICAgICAgIHRoaXMuX2hpZGVDb250ZW50Vmlldyhj
dXJyZW50Q29udGVudFZpZXcpOwogICAgIH0sCiAKICAgICAvLyBQcml2YXRlCkBAIC0zOTMsMjAg
KzM3OSw3MiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0g
ewogICAgICAgICBjb250ZW50Vmlldy5jbG9zZWQoKTsKICAgICB9LAogCi0gICAgX3Nob3dFbnRy
eTogZnVuY3Rpb24oZW50cnkpCisgICAgX3NhdmVTY3JvbGxQb3NpdGlvbnNGb3JDb250ZW50Vmll
dzogZnVuY3Rpb24oY29udGVudFZpZXcpCisgICAgeworICAgICAgICB2YXIgc2Nyb2xsYWJsZUVs
ZW1lbnRzID0gY29udGVudFZpZXcuc2Nyb2xsYWJsZUVsZW1lbnRzIHx8IFtdOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNjcm9sbGFibGVFbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxhYmxlRWxlbWVudHNbaV07CisgICAgICAgICAg
ICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBp
ZiAoY29udGVudFZpZXcuc2hvdWxkS2VlcEVsZW1lbnRzU2Nyb2xsZWRUb0JvdHRvbSkKKyAgICAg
ICAgICAgICAgICBlbGVtZW50Ll9zYXZlZElzU2Nyb2xsZWRUb0JvdHRvbSA9IGVsZW1lbnQuaXNT
Y3JvbGxlZFRvQm90dG9tKCk7CisgICAgICAgICAgICBlbGVtZW50Ll9zYXZlZFNjcm9sbFRvcCA9
IGVsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgZWxlbWVudC5fc2F2ZWRTY3JvbGxMZWZ0
ID0gZWxlbWVudC5zY3JvbGxMZWZ0OworICAgICAgICB9CisgICAgfSwKKworICAgIF9yZXN0b3Jl
U2Nyb2xsUG9zaXRpb25zRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQogICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
QmFja0ZvcndhcmRFbnRyeSk7CisgICAgICAgIHZhciBzY3JvbGxhYmxlRWxlbWVudHMgPSBjb250
ZW50Vmlldy5zY3JvbGxhYmxlRWxlbWVudHMgfHwgW107CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2Nyb2xsYWJsZUVsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
ZWxlbWVudCA9IHNjcm9sbGFibGVFbGVtZW50c1tpXTsKKyAgICAgICAgICAgIGlmICghZWxlbWVu
dCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gUmVzdG9yZSB0
aGUgdG9wIHNjcm9sbCBwb3NpdGlvbiBieSBlaXRoZXIgc2Nyb2xsaW5nIHRvIHRoZSBib3R0b20g
b3IgdG8gdGhlIHNhdmVkIHBvc2l0aW9uLgorICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxUb3Ag
PSBlbGVtZW50Ll9zYXZlZElzU2Nyb2xsZWRUb0JvdHRvbSA/IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0
IDogZWxlbWVudC5fc2F2ZWRTY3JvbGxUb3A7CisKKyAgICAgICAgICAgIC8vIERvbid0IHJlc3Rv
cmUgdGhlIGxlZnQgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbS4g
VGhpcyB3YXkgdGhlIHdoZW4gY29udGVudCBjaGFuZ2VzCisgICAgICAgICAgICAvLyB0aGUgdXNl
ciB3b24ndCBiZSBsZWZ0IGluIGEgd2VpcmQgaG9yaXpvbnRhbCBwb3NpdGlvbi4KKyAgICAgICAg
ICAgIGVsZW1lbnQuc2Nyb2xsTGVmdCA9IGVsZW1lbnQuX3NhdmVkSXNTY3JvbGxlZFRvQm90dG9t
ID8gMCA6IGVsZW1lbnQuX3NhdmVkU2Nyb2xsTGVmdDsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICBfc2hvd0NvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICB7CisgICAgICAg
IGlmIChjb250ZW50Vmlldy52aXNpYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMuX2FkZENvbnRlbnRWaWV3RWxlbWVudChjb250ZW50Vmlldyk7CisKKyAgICAgICAgdGhp
cy5fcHJlcGFyZUNvbnRlbnRWaWV3VG9TaG93KGNvbnRlbnRWaWV3KTsKKyAgICB9LAorCisgICAg
X3ByZXBhcmVDb250ZW50Vmlld1RvU2hvdzogZnVuY3Rpb24oY29udGVudFZpZXcpCisgICAgewor
ICAgICAgICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yQ29udGVudFZpZXcoY29udGVu
dFZpZXcpOworCisgICAgICAgIGNvbnRlbnRWaWV3LnZpc2libGUgPSB0cnVlOworICAgICAgICBj
b250ZW50Vmlldy5zaG93bigpOworICAgICAgICBjb250ZW50Vmlldy51cGRhdGVMYXlvdXQoKTsK
KyAgICB9LAorCisgICAgX2hpZGVDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRlbnRWaWV3LnZpc2libGUpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fcHJlcGFyZUNvbnRlbnRWaWV3VG9IaWRlKGNvbnRlbnRWaWV3
KTsKIAotICAgICAgICB0aGlzLl9hZGRDb250ZW50Vmlld0VsZW1lbnQoZW50cnkuY29udGVudFZp
ZXcpOwotICAgICAgICBlbnRyeS5wcmVwYXJlVG9TaG93KCk7CisgICAgICAgIHRoaXMuX3JlbW92
ZUNvbnRlbnRWaWV3RWxlbWVudChjb250ZW50Vmlldyk7CiAgICAgfSwKIAotICAgIF9oaWRlRW50
cnk6IGZ1bmN0aW9uKGVudHJ5KQorICAgIF9wcmVwYXJlQ29udGVudFZpZXdUb0hpZGU6IGZ1bmN0
aW9uKGNvbnRlbnRWaWV3KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZW50cnkgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSk7CisgICAgICAgIGNvbnRlbnRW
aWV3LnZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgY29udGVudFZpZXcuaGlkZGVuKCk7CiAKLSAg
ICAgICAgZW50cnkucHJlcGFyZVRvSGlkZSgpOwotICAgICAgICB0aGlzLl9yZW1vdmVDb250ZW50
Vmlld0VsZW1lbnQoZW50cnkuY29udGVudFZpZXcpOworICAgICAgICB0aGlzLl9zYXZlU2Nyb2xs
UG9zaXRpb25zRm9yQ29udGVudFZpZXcoY29udGVudFZpZXcpOwogICAgIH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Rhc2hib2FyZFZpZXcu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGFzaGJvYXJkVmlldy5j
c3MKaW5kZXggNTc0MjM1ZS4uNDhkMGM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvRGFzaGJvYXJkVmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRGFzaGJvYXJkVmlldy5jc3MKQEAgLTIyMywxNCArMjIzLDMg
QEAgYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2FyZCB7CiAudG9vbGJhci5u
b3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNoYm9hcmQgPiAuaXRlbSB7
CiAgICAgbWFyZ2luOiA0cHggMDsKIH0KLQotLyogU3R5bGVzIGZvciB0aGUgcHVsc2luZyBhbmlt
YXRlZCBzdGF0ZSBvZiBjb25zb2xlIGl0ZW1zICovCi0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAu
aXRlbS5wdWxzaW5nIHsKLSAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBjb25zb2xlLWl0ZW0t
cHVsc2U7Ci0gICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNzVzOwotfQotCi1ALXdl
YmtpdC1rZXlmcmFtZXMgY29uc29sZS1pdGVtLXB1bHNlIHsKLSAgICA1MCUgeyBvcGFjaXR5OiAw
LjY7IH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Rhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9E
YXNoYm9hcmRWaWV3LmpzCmluZGV4IDY0NTNlNWEuLjA3MDI1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Rhc2hib2FyZFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGFzaGJvYXJkVmlldy5qcwpAQCAtODEs
NyArODEsMTEgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewogCiAg
ICAgc2V0IGxvZ3MobG9ncykKICAgICB7Ci0gICAgICAgIHRoaXMuX3NldENvbnNvbGVJdGVtVmFs
dWUoImxvZ3MiLCBsb2dzKTsKKyAgICAgICAgdGhpcy5fbG9ncyA9IGxvZ3M7CisgICAgICAgIAor
ICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zLmxvZ3M7CisgICAgICAgIGl0ZW0udGV4dCA9
IHRoaXMuX2Zvcm1hdFBvc3NpYmxlTGFyZ2VOdW1iZXIobG9ncyk7CisgICAgICAgIHRoaXMuX3Nl
dEl0ZW1FbmFibGVkKGl0ZW0sIGxvZ3MgPiAwKTsKICAgICB9LAogCiAgICAgZ2V0IGlzc3Vlcygp
CkBAIC05MSw3ICs5NSwxMSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUg
PSB7CiAKICAgICBzZXQgaXNzdWVzKGlzc3VlcykKICAgICB7Ci0gICAgICAgIHRoaXMuX3NldENv
bnNvbGVJdGVtVmFsdWUoImlzc3VlcyIsIGlzc3Vlcyk7CisgICAgICAgIHRoaXMuX2lzc3VlcyA9
IGlzc3VlczsKKworICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zLmlzc3VlczsKKyAgICAg
ICAgaXRlbS50ZXh0ID0gdGhpcy5fZm9ybWF0UG9zc2libGVMYXJnZU51bWJlcihpc3N1ZXMpOwor
ICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChpdGVtLCBpc3N1ZXMgPiAwKTsKICAgICB9LAog
CiAgICAgZ2V0IGVycm9ycygpCkBAIC0xMDEsNyArMTA5LDExIEBAIFdlYkluc3BlY3Rvci5EYXNo
Ym9hcmRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIHNldCBlcnJvcnMoZXJyb3JzKQogICAgIHsK
LSAgICAgICAgdGhpcy5fc2V0Q29uc29sZUl0ZW1WYWx1ZSgiZXJyb3JzIiwgZXJyb3JzKTsKKyAg
ICAgICAgdGhpcy5fZXJyb3JzID0gZXJyb3JzOworCisgICAgICAgIHZhciBpdGVtID0gdGhpcy5f
aXRlbXMuZXJyb3JzOworICAgICAgICBpdGVtLnRleHQgPSB0aGlzLl9mb3JtYXRQb3NzaWJsZUxh
cmdlTnVtYmVyKGVycm9ycyk7CisgICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGl0ZW0sIGVy
cm9ycyA+IDApOwogICAgIH0sCiAKICAgICBzZXQgdGltZSh0aW1lKQpAQCAtMjAwLDQwICsyMTIs
NiBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5zaG93Q29uc29sZVZpZXcoc2NvcGUpOwogICAgIH0sCiAKLSAgICBfc2V0Q29u
c29sZUl0ZW1WYWx1ZTogZnVuY3Rpb24oaXRlbU5hbWUsIG5ld1ZhbHVlKQotICAgIHsKLSAgICAg
ICAgdmFyIGlWYXJOYW1lID0gIl8iICsgaXRlbU5hbWU7Ci0gICAgICAgIHZhciBwcmV2aW91c1Zh
bHVlID0gdGhpc1tpVmFyTmFtZV07Ci0gICAgICAgIHRoaXNbaVZhck5hbWVdID0gbmV3VmFsdWU7
Ci0KLSAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tpdGVtTmFtZV07Ci0gICAgICAgIGl0
ZW0udGV4dCA9IHRoaXMuX2Zvcm1hdFBvc3NpYmxlTGFyZ2VOdW1iZXIobmV3VmFsdWUpOwotICAg
ICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChpdGVtLCBuZXdWYWx1ZSA+IDApOwotCi0gICAgICAg
IGlmIChuZXdWYWx1ZSA8PSBwcmV2aW91c1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHZhciBjb250YWluZXIgPSBpdGVtLmNvbnRhaW5lcjsKLQotICAgICAgICBmdW5jdGlv
biBhbmltYXRpb25FbmRlZChldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGV2ZW50
LnRhcmdldCA9PT0gY29udGFpbmVyKSB7Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNz
TGlzdC5yZW1vdmUoInB1bHNpbmciKTsKLSAgICAgICAgICAgICAgICBjb250YWluZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN0
eWxlIGludmFsaWRhdGlvbiBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbHJlYWR5Ci0gICAgICAgIC8v
IHdlcmUgYW5pbWF0aW5nIHRoaXMgaXRlbSBhZnRlciB3ZSd2ZSByZW1vdmVkIHRoZSBwdWxzaW5n
IENTUyBjbGFzcy4KLSAgICAgICAgaWYgKGNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInB1
bHNpbmciKSkgewotICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInB1bHNp
bmciKTsKLSAgICAgICAgICAgIGNvbnRhaW5lci5yZWNhbGN1bGF0ZVN0eWxlcygpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRB
bmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7Ci0gICAgICAgIAotICAgICAgICBjb250YWlu
ZXIuY2xhc3NMaXN0LmFkZCgicHVsc2luZyIpOwotICAgIH0sCi0KICAgICBfc2V0SXRlbUVuYWJs
ZWQ6IGZ1bmN0aW9uKGl0ZW0sIGVuYWJsZWQpCiAgICAgewogICAgICAgICBpZiAoZW5hYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1
ZjUyYzQ0Li5mNzJhOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sCkBAIC0yMzksNyArMjM5LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVGV4dEVk
aXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkV2ZW50SGFuZGxlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlNvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iQmFja0ZvcndhcmRFbnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRlbnRWaWV3Q29udGFpbmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDbHVz
dGVyQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uanMKaW5kZXggN2U3ZWY2Mi4uNmEwYmJlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCkBAIC01MTEsOCArNTExLDcgQEAgV2Vi
SW5zcGVjdG9yLm9wZW5VUkwgPSBmdW5jdGlvbih1cmwsIGZyYW1lLCBhbHdheXNPcGVuRXh0ZXJu
YWxseSwgbGluZU51bWJlcikKICAgICAvLyBXZWJJbnNwZWN0b3IuRnJhbWUucmVzb3VyY2VGb3JV
UkwgZG9lcyBub3QgY2hlY2sgdGhlIG1haW4gcmVzb3VyY2UsIG9ubHkgc3ViLXJlc291cmNlcy4g
U28gY2hlY2sgYm90aC4KICAgICB2YXIgcmVzb3VyY2UgPSBmcmFtZS51cmwgPT09IHVybCA/IGZy
YW1lLm1haW5SZXNvdXJjZSA6IGZyYW1lLnJlc291cmNlRm9yVVJMKHVybCwgc2VhcmNoQ2hpbGRG
cmFtZXMpOwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICB2YXIgcG9zaXRpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihsaW5lTnVtYmVyLCAwKTsKLSAgICAgICAg
dGhpcy5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZShyZXNvdXJjZSwgcG9zaXRp
b24pOworICAgICAgICB0aGlzLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dTb3VyY2VDb2RlKHJl
c291cmNlLCBsaW5lTnVtYmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGVi
YXJQYW5lbC5qcwppbmRleCBlNjZhZjFiLi4zZjU4NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5q
cwpAQCAtMjQ4LDcgKzI0OCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICBzaG93U291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSwg
cG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCiAg
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghcG9zaXRpb25Ub1JldmVhbCB8fCBwb3NpdGlv
blRvUmV2ZWFsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbiwgcG9z
aXRpb25Ub1JldmVhbCk7CiAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IHNvdXJjZUNv
ZGU7CiAKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlNjcmlwdCkgewpAQCAtMjYwLDIzICsyNTksMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0Lmlz
TWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2Vu
dGVkT2JqZWN0LnBhcmVudEZyYW1lOwogCi0gICAgICAgIHZhciBuZXdDb250ZW50VmlldyA9IFdl
Ykluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgdmFyIGNvb2tpZSA9IHtsaW5lTnVtYmVyOiBw
b3NpdGlvblRvUmV2ZWFsLmxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogcG9zaXRpb25Ub1JldmVh
bC5jb2x1bW5OdW1iZXJ9OworICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3Iu
Y29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCk7CiAKLSAgICAgICAgdmFyIHJlc3RvcmVDYWxsYmFjayA9IGZ1bmN0aW9uKGNvbnRl
bnRWaWV3LCBzYXZlZENvb2tpZSkgewotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzYXZl
ZENvb2tpZS5saW5lTnVtYmVyOwotICAgICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IHNhdmVk
Q29va2llLmNvbHVtbk51bWJlcjsKLSAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0K
LSAgICAgICAgICAgIGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFt
ZUNvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VDb2Rl
KHBvc2l0aW9uKQotICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcpCi0gICAgICAgICAgICAgICAg
Y29udGVudFZpZXcuc2hvd1Jlc3BvbnNlKHBvc2l0aW9uKQotICAgICAgICAgICAgZWxzZSBpZiAo
Y29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcpCi0g
ICAgICAgICAgICAgICAgY29udGVudFZpZXcucmV2ZWFsUG9zaXRpb24ocG9zaXRpb24pCi0gICAg
ICAgIH07CisgICAgICAgIGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZUNvbnRlbnRWaWV3KQorICAgICAgICAgICAgY29udGVudFZpZXcuc2hvd1NvdXJjZUNvZGUo
cG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpOwor
ICAgICAgICBlbHNlIGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50VmlldykKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dSZXNw
b25zZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRl
ZCk7CisgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlNjcmlwdENvbnRlbnRWaWV3KQorICAgICAgICAgICAgY29udGVudFZpZXcucmV2ZWFsUG9zaXRp
b24ocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQp
OwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXco
bmV3Q29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7CiAgICAg
fSwKIAogICAgIHNob3dTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2Nh
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1V0
aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1V0aWxpdGll
cy5qcwppbmRleCBkMWI2NTAyLi4wYTY2YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVXRpbGl0aWVzLmpzCkBAIC00ODYsMTQgKzQ4Niw2IEBAIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgImlzU2Nyb2xsZWRUb0JvdHRvbSIs
CiAgICAgfQogfSk7CiAKLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwg
InJlY2FsY3VsYXRlU3R5bGVzIiwKLXsKLSAgICB2YWx1ZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdGhpcy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGhp
cyk7Ci0gICAgfQotfSk7Ci0KIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEb2N1bWVudEZyYWdtZW50
LnByb3RvdHlwZSwgImNyZWF0ZUNoaWxkIiwKIHsKICAgICB2YWx1ZTogRWxlbWVudC5wcm90b3R5
cGUuY3JlYXRlQ2hpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzg4MmEyYi4uNzVjMzA2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMjcyICsxLDMgQEAKLTIwMTMtMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KLQotICAgICAgICBSZW1vdmUgV2ViS2l0L3F0LgotCi0gICAgICAgIFJ1YmJlci1z
dGFtcGVkIGJ5IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBxdC9BcGkvcWh0dHBoZWFkZXIu
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L0FwaS9xaHR0cGhlYWRlcl9wLmg6IFJlbW92ZWQu
Ci0gICAgICAgICogcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHA6IFJlbW92ZWQuCi0gICAgICAgICog
cXQvQXBpL3F3ZWJkYXRhYmFzZS5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L0FwaS9xd2ViZGF0
YWJhc2VfcC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L0FwaS9xd2ViZWxlbWVudC5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJlbGVtZW50Lmg6IFJlbW92ZWQuCi0gICAgICAg
ICogcXQvQXBpL3F3ZWJlbGVtZW50X3AuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9BcGkvcXdl
Ymhpc3RvcnkuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L0FwaS9xd2ViaGlzdG9yeS5oOiBS
ZW1vdmVkLgotICAgICAgICAqIHF0L0FwaS9xd2ViaGlzdG9yeV9wLmg6IFJlbW92ZWQuCi0gICAg
ICAgICogcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDogUmVtb3ZlZC4KLSAgICAgICAg
KiBxdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9B
cGkvcXdlYmtpdGdsb2JhbC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJraXRn
bG9iYWwuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
Lmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZV9wLmg6IFJlbW92ZWQu
Ci0gICAgICAgICogcXQvQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNwcDogUmVtb3ZlZC4KLSAgICAg
ICAgKiBxdC9BcGkvcXdlYnBsdWdpbmZhY3RvcnkuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9B
cGkvcXdlYnNjcmlwdHdvcmxkLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9BcGkvcXdlYnNj
cmlwdHdvcmxkLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJzY3JpcHR3b3JsZF9w
Lmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW5fcC5oOiBSZW1vdmVkLgotICAgICAg
ICAqIHF0L0FwaS9xd2Vic2V0dGluZ3MuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L0FwaS9x
d2Vic2V0dGluZ3MuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9DaGFuZ2VMb2ctMjAxMS0wMi0x
NjogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudFF0Lmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudFF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xp
ZW50UXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6IFJlbW92ZWQuCi0gICAgICAgICog
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmNwcDogUmVtb3ZlZC4K
LSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuaDog
UmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5j
cHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVv
UXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNs
aWVudFF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2Nh
dGlvbkNsaWVudFF0Lmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvR2Vv
bG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dl
YkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0Lmg6IFJlbW92ZWQuCi0g
ICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50UXQuY3BwOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudFF0Lmg6
IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5oOiBS
ZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNw
cDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRR
dC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZl
clF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JT
ZXJ2ZXJRdC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oOiBSZW1vdmVkLgotICAgICAg
ICAqIHF0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcDogUmVtb3ZlZC4K
LSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5oOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuaDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwOiBS
ZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaDog
UmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9RdFBsdWdpbldpZGdldEFkYXB0
ZXIuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1F0UGx1Z2luV2lk
Z2V0QWRhcHRlci5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1F0UHJp
bnRDb250ZXh0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9RdFBy
aW50Q29udGV4dC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0L1NlYXJj
aFBvcHVwTWVudVF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVRdC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVTdXBwb3J0
L1RleHRDaGVja2VyQ2xpZW50UXQuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dlYkNvcmVT
dXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XZWJD
b3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHA6IFJlbW92ZWQuCi0gICAg
ICAgICogcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuaDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0LmNwcDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0Lmg6IFJlbW92ZWQuCi0g
ICAgICAgICogcXQvV2ViQ29yZVN1cHBvcnQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC9XZWJDb3JlU3VwcG9ydC9XZWJFdmVudENvbnZlcnNpb24uaDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6IFJlbW92
ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuaDogUmVtb3ZlZC4K
LSAgICAgICAgKiBxdC9XaWRnZXRBcGkvcXdlYmZyYW1lLmNwcDogUmVtb3ZlZC4KLSAgICAgICAg
KiBxdC9XaWRnZXRBcGkvcXdlYmZyYW1lLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0
QXBpL3F3ZWJmcmFtZV9wLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0QXBpL3F3ZWJp
bnNwZWN0b3IuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldEFwaS9xd2ViaW5zcGVj
dG9yLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3JfcC5o
OiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldEFwaS9xd2VicGFnZS5jcHA6IFJlbW92ZWQu
Ci0gICAgICAgICogcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmg6IFJlbW92ZWQuCi0gICAgICAgICog
cXQvV2lkZ2V0QXBpL3F3ZWJwYWdlX3AuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XaWRnZXRB
cGkvcXdlYnZpZXcuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldEFwaS9xd2Vidmll
dy5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldEFwaS9xd2Vidmlld2FjY2Vzc2libGUu
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldEFwaS9xd2Vidmlld2FjY2Vzc2libGVf
cC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvRGVmYXVsdEZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQv
RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9X
aWRnZXRTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5jcHA6IFJlbW92ZWQuCi0gICAgICAg
ICogcXQvV2lkZ2V0U3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuaDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBxdC9XaWRnZXRTdXBwb3J0L0luaXRXZWJLaXRRdC5jcHA6IFJlbW92ZWQuCi0gICAg
ICAgICogcXQvV2lkZ2V0U3VwcG9ydC9Jbml0V2ViS2l0UXQuaDogUmVtb3ZlZC4KLSAgICAgICAg
KiBxdC9XaWRnZXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFdlYlBhZ2UuY3BwOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5oOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC9XaWRnZXRTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbC5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0U3VwcG9ydC9RR3JhcGhpY3NXaWRnZXRQbHVn
aW5JbXBsLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0U3VwcG9ydC9RU3R5bGVGYWNh
ZGVJbXAuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvUVN0eWxlRmFj
YWRlSW1wLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0U3VwcG9ydC9RV2ViVW5kb0Nv
bW1hbmQuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvUVdlYlVuZG9D
b21tYW5kLmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0U3VwcG9ydC9RV2lkZ2V0UGx1
Z2luSW1wbC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0U3VwcG9ydC9RV2lkZ2V0
UGx1Z2luSW1wbC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQvUXRGYWxs
YmFja1dlYlBvcHVwLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9XaWRnZXRTdXBwb3J0L1F0
RmFsbGJhY2tXZWJQb3B1cC5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L1dpZGdldFN1cHBvcnQv
UXRXZWJDb21ib0JveC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvV2lkZ2V0U3VwcG9ydC9R
dFdlYkNvbWJvQm94Lmg6IFJlbW92ZWQuCi0gICAgICAgICogcXQvZGVjbGFyYXRpdmUvZGVjbGFy
YXRpdmUucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRh
bC9leHBlcmltZW50YWwucHJpOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RlY2xhcmF0aXZlL2V4
cGVyaW1lbnRhbC9wbHVnaW4uY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RlY2xhcmF0aXZl
L2V4cGVyaW1lbnRhbC9wbHVnaW4uanNvbjogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9kZWNsYXJh
dGl2ZS9leHBlcmltZW50YWwvcW1sZGlyOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RlY2xhcmF0
aXZlL3BsdWdpbi5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvZGVjbGFyYXRpdmUvcGx1Z2lu
Lmpzb246IFJlbW92ZWQuCi0gICAgICAgICogcXQvZGVjbGFyYXRpdmUvcGx1Z2lucy5xbWx0eXBl
czogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9kZWNsYXJhdGl2ZS9wdWJsaWMucHJpOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L2RlY2xhcmF0aXZlL3FtbGRpcjogUmVtb3ZlZC4KLSAgICAgICAgKiBx
dC9kb2NzL3F0d2Via2l0LWJyaWRnZS5xZG9jOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RvY3Mv
cXR3ZWJraXQtZ29lcy1tb2JpbGUucWRvYzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9kb2NzL3F0
d2Via2l0LnFkb2M6IFJlbW92ZWQuCi0gICAgICAgICogcXQvZG9jcy9xd2Vidmlldy1kaWFncmFt
LnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0
X2JyaWRnZV9zbmlwcGV0cy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvZG9jcy93ZWJraXRz
bmlwcGV0cy9xdHdlYmtpdF9idWlsZF9zbmlwcGV0LnFkb2M6IFJlbW92ZWQuCi0gICAgICAgICog
cXQvZG9jcy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9nb2VzX21vYmlsZV9zbmlwcGV0cy5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogcXQvZG9jcy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2Vi
aW5zcGVjdG9yX3NuaXBwZXQuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RvY3Mvd2Via2l0
c25pcHBldHMvcXR3ZWJraXRfcXdlYnZpZXdfc25pcHBldC5jcHA6IFJlbW92ZWQuCi0gICAgICAg
ICogcXQvZG9jcy93ZWJraXRzbmlwcGV0cy9zaW1wbGUvbWFpbi5jcHA6IFJlbW92ZWQuCi0gICAg
ICAgICogcXQvZG9jcy93ZWJraXRzbmlwcGV0cy9zaW1wbGUvc2ltcGxlLnBybzogUmVtb3ZlZC4K
LSAgICAgICAgKiBxdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3dlYmVsZW1lbnQvbWFpbi5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJlbGVtZW50L3dlYmVs
ZW1lbnQucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2RvY3Mvd2Via2l0c25pcHBldHMvd2Vi
cGFnZS9tYWluLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9kb2NzL3dlYmtpdHNuaXBwZXRz
L3dlYnBhZ2Uvd2VicGFnZS5wcm86IFJlbW92ZWQuCi0gICAgICAgICogcXQvZXhhbXBsZXMvZXhh
bXBsZXMucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1JFQURNRTogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9X
ZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2V4YW1w
bGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHA6IFJlbW92
ZWQuCi0gICAgICAgICogcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVn
aW4ucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVT
bmlmZmluZy9NSU1FU25pZmZpbmcucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01J
TUVTbmlmZmluZy9UZXN0RGF0YS5oOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVT
bmlmZmluZy9yZXNvdXJjZXMucXJjOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVT
bmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fYXRvbSt4bWw6IFJlbW92ZWQuCi0gICAgICAg
ICogcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9vZ2c6IFJlbW92
ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlv
bl9wZGY6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNl
cy9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0OiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01J
TUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmRmK3htbDogUmVtb3ZlZC4KLSAgICAg
ICAgKiBxdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3Jzcyt4bWw6
IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hcHBs
aWNhdGlvbl94LWd6aXA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZmaW5n
L3Jlc291cmNlcy9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkOiBSZW1vdmVkLgotICAgICAg
ICAqIHF0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25femlwOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXVkaW9feC13
YXZlOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMv
aW1hZ2VfYm1wOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNv
dXJjZXMvaW1hZ2VfZ2lmOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL01JTUVTbmlmZmlu
Zy9yZXNvdXJjZXMvaW1hZ2VfanBlZzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9NSU1F
U25pZmZpbmcvcmVzb3VyY2VzL2ltYWdlX3BuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0
cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbjogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2ltYWdlX3dlYnA6
IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy90ZXh0
X2h0bWw6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNl
cy90ZXh0X3htbDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVz
b3VyY2VzL3ZpZGVvX3dlYm06IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvTUlNRVNuaWZm
aW5nL3RzdF9NSU1FU25pZmZpbmcuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2Jl
bmNobWFya3MvbG9hZGluZy9sb2FkaW5nLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0
cy9iZW5jaG1hcmtzL2xvYWRpbmcvdHN0X2xvYWRpbmcuY3BwOiBSZW1vdmVkLgotICAgICAgICAq
IHF0L3Rlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvcGFpbnRpbmcucHJvOiBSZW1vdmVkLgotICAg
ICAgICAqIHF0L3Rlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvdHN0X3BhaW50aW5nLmNwcDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmdsLzEwMDAwX3RyaWFuZ2xl
cy5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2JlbmNobWFya3Mvd2ViZ2wvdHN0
X3dlYmdsLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmds
L3RzdF93ZWJnbC5xcmM6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvYmVuY2htYXJrcy93
ZWJnbC93ZWJnbC5wcm86IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvY21ha2UvQ01ha2VM
aXN0cy50eHQ6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvY21ha2UvY21ha2UucHJvOiBS
ZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2h5YnJpZFBpeG1hcC9oeWJyaWRQaXhtYXAucHJv
OiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2h5YnJpZFBpeG1hcC9yZXNvdXJjZXMucXJj
OiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWw6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvaHlicmlkUGl4bWFwL3RzdF9oeWJyaWRQaXhtYXAu
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2h5YnJpZFBpeG1hcC93aWRnZXQuY3Bw
OiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL2h5YnJpZFBpeG1hcC93aWRnZXQuaDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9oeWJyaWRQaXhtYXAvd2lkZ2V0LnVpOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvcWdyYXBoaWNzd2Vidmlldy5w
cm86IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJj
ZXMvZ3JlZW5kaXYuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xZ3JhcGhpY3N3
ZWJ2aWV3L3Jlc291cmNlcy9pbnB1dF90eXBlcy5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIHF0
L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvcmVzb3VyY2VzL3BvaW50aW5nX3JpZ2h0Lmh0bWw6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvcG9p
bnRpbmdfdXAuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2
aWV3L3Jlc291cmNlcy9zY3JvbGx0ZXN0X3BhZ2UuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBx
dC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2
aWV3LnFyYzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3FvYmpl
Y3RicmlkZ2UucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3FvYmplY3RicmlkZ2Uv
dHN0X3FvYmplY3RicmlkZ2UuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJl
bGVtZW50L3F3ZWJlbGVtZW50LnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2Vi
ZWxlbWVudC9yZXNvdXJjZXMvaW1hZ2UucG5nOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3Rz
L3F3ZWJlbGVtZW50L3Jlc291cmNlcy9zdHlsZS5jc3M6IFJlbW92ZWQuCi0gICAgICAgICogcXQv
dGVzdHMvcXdlYmVsZW1lbnQvcmVzb3VyY2VzL3N0eWxlMi5jc3M6IFJlbW92ZWQuCi0gICAgICAg
ICogcXQvdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBxdC90ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQucXJjOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucHJvOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvaW1hZ2UucG5nOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvc3R5bGUuY3NzOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdDEuaHRtbDog
UmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL3Rlc3QyLmh0
bWw6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291cmNlcy90ZXN0
aWZyYW1lLmh0bWw6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291
cmNlcy90ZXN0aWZyYW1lMi5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJm
cmFtZS90c3RfcXdlYmZyYW1lLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2Vi
ZnJhbWUvdHN0X3F3ZWJmcmFtZS5xcmM6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdl
Ymhpc3RvcnkvcXdlYmhpc3RvcnkucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3
ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlMS5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rl
c3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlMi5odG1sOiBSZW1vdmVkLgotICAgICAgICAq
IHF0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlMy5odG1sOiBSZW1vdmVkLgotICAg
ICAgICAqIHF0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlNC5odG1sOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlNS5odG1sOiBS
ZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlNi5o
dG1sOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJoaXN0b3J5L3RzdF9xd2ViaGlz
dG9yeS5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3
ZWJoaXN0b3J5LnFyYzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2ViaGlzdG9yeWlu
dGVyZmFjZS9xd2ViaGlzdG9yeWludGVyZmFjZS5wcm86IFJlbW92ZWQuCi0gICAgICAgICogcXQv
dGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvdHN0X3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDog
UmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2ViaW5zcGVjdG9yL3F3ZWJpbnNwZWN0b3Iu
cHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJpbnNwZWN0b3IvdHN0X3F3ZWJp
bnNwZWN0b3IuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJwYWdlL3F3ZWJw
YWdlLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMv
Y29udGVudC5odG1sOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291
cmNlcy9mcmFtZV9hLmh0bWw6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYnBhZ2Uv
cmVzb3VyY2VzL2ZyYW1lX2MuaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2Vi
cGFnZS9yZXNvdXJjZXMvZnJhbWVkaW5kZXguaHRtbDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90
ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaWZyYW1lLmh0bWw6IFJlbW92ZWQuCi0gICAgICAgICog
cXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2lmcmFtZTIuaHRtbDogUmVtb3ZlZC4KLSAgICAg
ICAgKiBxdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaWZyYW1lMy5odG1sOiBSZW1vdmVkLgot
ICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9pbmRleC5odG1sOiBSZW1vdmVk
LgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9zY3JpcHQuaHRtbDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvdXNlci5jc3M6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UucXJjOiBSZW1v
dmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0
YWJhc2UucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFz
ZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0
cy9xd2Vic2VjdXJpdHlvcmlnaW4vcXdlYnNlY3VyaXR5b3JpZ2luLnBybzogUmVtb3ZlZC4KLSAg
ICAgICAgKiBxdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vcmVzb3VyY2VzL3Rlc3QuaHRtbDog
UmVtb3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vdHN0X3F3ZWJz
ZWN1cml0eW9yaWdpbi5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYnNlY3Vy
aXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4ucXJjOiBSZW1vdmVkLgotICAgICAgICAq
IHF0L3Rlc3RzL3F3ZWJ2aWV3Ly5naXRpZ25vcmU6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVz
dHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3
ZWJ2aWV3L3Jlc291cmNlcy9mcmFtZV9hLmh0bWw6IFJlbW92ZWQuCi0gICAgICAgICogcXQvdGVz
dHMvcXdlYnZpZXcvcmVzb3VyY2VzL2luZGV4Lmh0bWw6IFJlbW92ZWQuCi0gICAgICAgICogcXQv
dGVzdHMvcXdlYnZpZXcvcmVzb3VyY2VzL2lucHV0X3R5cGVzLmh0bWw6IFJlbW92ZWQuCi0gICAg
ICAgICogcXQvdGVzdHMvcXdlYnZpZXcvcmVzb3VyY2VzL3Njcm9sbHRlc3RfcGFnZS5odG1sOiBS
ZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LnFyYzogUmVt
b3ZlZC4KLSAgICAgICAgKiBxdC90ZXN0cy9yZXNvdXJjZXMvaW1hZ2UyLnBuZzogUmVtb3ZlZC4K
LSAgICAgICAgKiBxdC90ZXN0cy9yZXNvdXJjZXMvdGVzdC5zd2Y6IFJlbW92ZWQuCi0gICAgICAg
ICogcXQvdGVzdHMvdGVzdHMucHJpOiBSZW1vdmVkLgotICAgICAgICAqIHF0L3Rlc3RzL3V0aWwu
aDogUmVtb3ZlZC4KLQogMjAxMy0wOS0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIGd1YXJkZWQgYnkgU1RZTEVfU0NP
UEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYzU3YmU0YS4uNjdiMWUwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwpAQCAtMSwxNiArMSwzIEBACi0yMDEzLTEwLTAxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+Ci0KLSAgICAgICAgQ1RURTogRE9NV3JhcHBlcldvcmxkcyBzaG91bGQgYmUgcGFzc2VkIGFy
b3VuZCBieSByZWZlcmVuY2UKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjIwNgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCi0K
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgot
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0
ZWRXb3JsZCk6Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oOgotCiAyMDEzLTA5LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IHRoZSBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CmluZGV4IGM0NDJjMWIuLjllYTUxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAt
NTExLDcgKzUxMSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpldmFsdWF0ZVNj
cmlwdEluSXNvbGF0ZWRXb3JsZChjb25zdCBFdmFzX09iamVjdCoKIAogICAgIC8vIFRoZSBjb2Rl
IGJlbG93IGlzIG9ubHkgdmFsaWQgZm9yIEpTQywgVjggc3BlY2lmaWMgY29kZSBpcyB0byBiZSBh
ZGRlZAogICAgIC8vIHdoZW4gVjggd2lsbCBiZSBzdXBwb3J0ZWQgaW4gRUZMIHBvcnQuIFNlZSBR
dCBpbXBsZW1lbmF0aW9uLgotICAgIHByb3h5LmV4ZWN1dGVTY3JpcHRJbldvcmxkKCpzY3JpcHRX
b3JsZCwgc2NyaXB0LCB0cnVlKTsKKyAgICBwcm94eS5leGVjdXRlU2NyaXB0SW5Xb3JsZChzY3Jp
cHRXb3JsZC5nZXQoKSwgc2NyaXB0LCB0cnVlKTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVmIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Z2xvYmFsQ29udGV4dFJlZkZvckZyYW1lKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCA3OGMzNDNlLi5lNTEy
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC00NTMsOSArNDUzLDkgQEAgU3RyaW5nIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoZXdrX3NldHRpbmdzX2Nzc19tZWRpYV90eXBlX2dldCgpKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29y
bGQpCiB7Ci0gICAgaWYgKCZ3b3JsZCAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCisgICAg
aWYgKHdvcmxkICE9IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gRVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmgKaW5kZXggYjBkNmZjMi4uODQ3MDdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCkBAIC04
MSw3ICs4MSw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5Q
YWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJD
b3JlOjpET01XcmFwcGVyV29ybGQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyAgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDg3ZDMxYTAuLmEzZjgxZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMTQgKzEsMyBAQAotMjAxMy0xMC0wMSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIENUVEU6IERPTVdyYXBwZXJXb3JsZHMgc2hvdWxk
IGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwOgotICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
bGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmg6Ci0KIDIwMTMtMDktMzAgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB0aGUgY29kZSBndWFyZGVkIGJ5IFNU
WUxFX1NDT1BFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDE1OGQ5M2IuLjkxOWFmYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKQEAgLTU3NSw5ICs1NzUsOSBAQCBTdHJpbmcgRnJhbWVMb2FkZXJDbGll
bnQ6Om92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkKQog
ewotICAgIGlmICgmd29ybGQgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQorICAgIGlmICh3
b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gSXMgdGhpcyBvYnNvbGV0ZSBub3c/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBmNTZmYjU0Li43Yjgy
ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6Oldp
ZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkws
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpT
dHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3Js
ZCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
b2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZv
cm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDcwMTc3ZTcu
LmQxY2YwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMzMgKzEsMyBAQAotMjAxMy0xMC0wMSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIENUVEU6IERPTVdyYXBwZXJX
b3JsZHMgc2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKLQotICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgotICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KToKLSAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRQbHVnaW5FbGVtZW50TlBPYmplY3QpOgotICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKToKLSAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgotICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgotICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWUubW06Ci0gICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZzp3aXRoR2xvYmFsT2JqZWN0OmluU2NyaXB0V29ybGQ6XSk6Ci0g
ICAgICAgICgtW1dlYkZyYW1lIF9nbG9iYWxDb250ZXh0Rm9yU2NyaXB0V29ybGQ6XSk6Ci0gICAg
ICAgICgtW1dlYkZyYW1lIGpzV3JhcHBlckZvck5vZGU6aW5TY3JpcHRXb3JsZDpdKToKLSAgICAg
ICAgKiBXZWJWaWV3L1dlYlNjcmlwdFdvcmxkLm1tOgotICAgICAgICAoK1tXZWJTY3JpcHRXb3Js
ZCBzdGFuZGFyZFdvcmxkXSk6Ci0gICAgICAgICgrW1dlYlNjcmlwdFdvcmxkIGZpbmRPckNyZWF0
ZVdvcmxkOl0pOgotICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oOgot
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKLSAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0
T3V0bG9va1F1aXJrc1NjcmlwdF0pOgotICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0
VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9uVGlt
ZTppbmplY3RlZEZyYW1lczpdKToKLSAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hl
ZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3RlZEZy
YW1lczpdKToKLSAgICAgICAgKCtbV2ViVmlldyBfcmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cDp3
b3JsZDp1cmw6XSk6Ci0gICAgICAgICgrW1dlYlZpZXcgX3JlbW92ZVVzZXJTdHlsZVNoZWV0RnJv
bUdyb3VwOndvcmxkOnVybDpdKToKLSAgICAgICAgKCtbV2ViVmlldyBfcmVtb3ZlVXNlclNjcmlw
dHNGcm9tR3JvdXA6d29ybGQ6XSk6Ci0gICAgICAgICgrW1dlYlZpZXcgX3JlbW92ZVVzZXJTdHls
ZVNoZWV0c0Zyb21Hcm91cDp3b3JsZDpdKToKLQogMjAxMy0wOS0zMCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBET01GaWxlU3lzdGVt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNTQxNzIyNC4uYWI0NzI5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODQyLDcgKzg0Miw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRXaW5kb3dOUE9iamVjdCh1aW50MzJfdCYgb2Jq
ZWN0SUQpCiAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICBvYmplY3RJRCA9IDA7CiAgICAgZWxzZQotICAg
ICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KCpwbHVnaW5Xb3JsZCgp
LnZtKCksIGZyYW1lLT5zY3JpcHQoKS53aW5kb3dTaGVsbChwbHVnaW5Xb3JsZCgpKS0+d2luZG93
KCkpOworICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KCpwbHVn
aW5Xb3JsZCgpLT52bSgpLCBmcmFtZS0+c2NyaXB0KCkud2luZG93U2hlbGwocGx1Z2luV29ybGQo
KSktPndpbmRvdygpKTsKICAgICAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04NTQsNyAr
ODU0LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFBsdWdpbkVsZW1l
bnROUE9iamVjdCh1aW50MzJfdCYgb2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS5qc09iamVjdEZv
clBsdWdpbkVsZW1lbnQoW21fcGx1Z2luVmlldyBlbGVtZW50XSkpCi0gICAgICAgIG9iamVjdElE
ID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QoKnBsdWdpbldvcmxkKCkudm0oKSwgb2JqZWN0
KTsKKyAgICAgICAgb2JqZWN0SUQgPSBtX2xvY2FsT2JqZWN0cy5pZEZvck9iamVjdCgqcGx1Z2lu
V29ybGQoKS0+dm0oKSwgb2JqZWN0KTsKICAgICBlbHNlCiAgICAgICAgIG9iamVjdElEID0gMDsK
ICAgICAKQEAgLTg4Myw4ICs4ODMsOCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0cmluZyYgc2NyaQogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHBsdWdpbldvcmxkKCkudm0oKSk7Ci0gICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxP
YmplY3QoKnBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChw
bHVnaW5Xb3JsZCgpKSk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2socGx1Z2luV29ybGQoKS0+dm0o
KSk7CisgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldvcmxk
KCktPnZtKCksIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IERlZmlu
aXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAxYmZkZDE5Li40MjlmMjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNv
cmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9y
bUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4
IDcyYzUyN2MuLjQ2MDY2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xOTM5LDcgKzE5MzksNyBA
QCBTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpIHsK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFt
ZS5nZXQoKSk7CiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBp
bXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bnMod2ViVmlldyk7CkBAIC0xOTUwLDcgKzE5NTAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQm
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoJndvcmxkICE9ICZtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSkKKyAgICBpZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lICpmcmFtZSA9IGNvcmUobV93ZWJGcmFtZS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAyZDMzNThmLi42
YTNmZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEwOTIsOSAr
MTA5Miw2IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gQCIiOwog
Ci0gICAgaWYgKCF3b3JsZCkKLSAgICAgICAgcmV0dXJuIEAiIjsKLQogICAgIC8vIFN0YXJ0IG9m
ZiB3aXRoIHNvbWUgZ3Vlc3MgYXQgYSBmcmFtZSBhbmQgYSBnbG9iYWwgb2JqZWN0LCB3ZSdsbCB0
cnkgdG8gZG8gYmV0dGVyLi4uIQogICAgIEpTRE9NV2luZG93KiBhbnlXb3JsZEdsb2JhbE9iamVj
dCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CiAKQEAgLTExMDgsNyArMTEwNSw3IEBAIHN0YXRpYyBpbmxpbmUgV2Vi
RGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIEFTU0VS
VChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiB3ZWJGcmFtZShr
aXQoZnJhbWUpKTsgLy8gUnVubmluZyBhcmJpdHJhcnkgSmF2YVNjcmlwdCBjYW4gZGVzdHJveSB0
aGUgZnJhbWUuCiAKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLmV4
ZWN1dGVTY3JpcHRJbldvcmxkKCpjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKS5qc1ZhbHVlKCk7
CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS5leGVjdXRlU2NyaXB0
SW5Xb3JsZChjb3JlKHdvcmxkKSwgc3RyaW5nLCB0cnVlKS5qc1ZhbHVlKCk7CiAKICAgICBpZiAo
IXdlYkZyYW1lLT5fcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVt
b3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKQEAgLTEx
MzIsNyArMTEyOSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShE
b2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIERPTVdyYXBwZXJXb3JsZCogY29yZVdvcmxkID0g
Y29yZSh3b3JsZCk7CiAgICAgaWYgKCFjb3JlV29ybGQpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiB0b0dsb2JhbFJlZihjb3JlRnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCgqY29y
ZVdvcmxkKS0+Z2xvYmFsRXhlYygpKTsKKyAgICByZXR1cm4gdG9HbG9iYWxSZWYoY29yZUZyYW1l
LT5zY3JpcHQoKS5nbG9iYWxPYmplY3QoY29yZVdvcmxkKS0+Z2xvYmFsRXhlYygpKTsKIH0KIAog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECkBAIC0xMjYzLDEwICsxMjYwLDcgQEAgc3RhdGljIGlu
bGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCF3b3JsZCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gY29y
ZUZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QoKmNvcmUod29ybGQpKTsKKyAgICBKU0RPTVdp
bmRvdyogZ2xvYmFsT2JqZWN0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QoY29y
ZSh3b3JsZCkpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0V29ybGQubW0KaW5kZXggNzg0OGIyNC4uOTE1ZGI0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHRXb3JsZC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdFdvcmxkLm1tCkBAIC05
Myw3ICs5Myw3IEBAIHN0YXRpYyBXb3JsZE1hcCYgYWxsV29ybGRzKCkKIAogKyAoV2ViU2NyaXB0
V29ybGQgKilzdGFuZGFyZFdvcmxkCiB7Ci0gICAgc3RhdGljIFdlYlNjcmlwdFdvcmxkICp3b3Js
ZCA9IFtbV2ViU2NyaXB0V29ybGQgYWxsb2NdIGluaXRXaXRoV29ybGQ6Jm1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpXTsKKyAgICBzdGF0aWMgV2ViU2NyaXB0V29ybGQgKndvcmxkID0gW1tXZWJTY3Jp
cHRXb3JsZCBhbGxvY10gaW5pdFdpdGhXb3JsZDptYWluVGhyZWFkTm9ybWFsV29ybGQoKV07CiAg
ICAgcmV0dXJuIHdvcmxkOwogfQogCkBAIC0xMjMsMTUgKzEyMywxNyBAQCBET01XcmFwcGVyV29y
bGQqIGNvcmUoV2ViU2NyaXB0V29ybGQgKndvcmxkKQogICAgIHJldHVybiB3b3JsZCA/IHdvcmxk
LT5fcHJpdmF0ZS0+d29ybGQuZ2V0KCkgOiAwOwogfQogCi0rIChXZWJTY3JpcHRXb3JsZCAqKWZp
bmRPckNyZWF0ZVdvcmxkOihET01XcmFwcGVyV29ybGQmKXdvcmxkCisrIChXZWJTY3JpcHRXb3Js
ZCAqKWZpbmRPckNyZWF0ZVdvcmxkOihET01XcmFwcGVyV29ybGQqKSB3b3JsZAogewotICAgIGlm
ICgmd29ybGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQorICAgIEFTU0VSVF9BUkcod29y
bGQsIHdvcmxkKTsKKworICAgIGlmICh3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkK
ICAgICAgICAgcmV0dXJuIFtzZWxmIHN0YW5kYXJkV29ybGRdOwogCi0gICAgaWYgKFdlYlNjcmlw
dFdvcmxkICpleGlzdGluZ1dvcmxkID0gYWxsV29ybGRzKCkuZ2V0KCZ3b3JsZCkpCisgICAgaWYg
KFdlYlNjcmlwdFdvcmxkICpleGlzdGluZ1dvcmxkID0gYWxsV29ybGRzKCkuZ2V0KHdvcmxkKSkK
ICAgICAgICAgcmV0dXJuIGV4aXN0aW5nV29ybGQ7CiAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxv
Y10gaW5pdFdpdGhXb3JsZDomd29ybGRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbc2Vs
ZiBhbGxvY10gaW5pdFdpdGhXb3JsZDp3b3JsZF0gYXV0b3JlbGVhc2VdOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdFdvcmxkSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5o
CmluZGV4IDdmZjUxZjIuLjc4NWQ5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oCkBAIC0zMSw1ICszMSw1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCogY29yZShXZWJTY3JpcHRXb3Js
ZCAqKTsKIAogQGludGVyZmFjZSBXZWJTY3JpcHRXb3JsZCAoV2ViSW50ZXJuYWwpCi0rIChXZWJT
Y3JpcHRXb3JsZCAqKWZpbmRPckNyZWF0ZVdvcmxkOihXZWJDb3JlOjpET01XcmFwcGVyV29ybGQm
KXdvcmxkOworKyAoV2ViU2NyaXB0V29ybGQgKilmaW5kT3JDcmVhdGVXb3JsZDooV2ViQ29yZTo6
RE9NV3JhcHBlcldvcmxkKil3b3JsZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCBhZjY4NzcxLi4wZTA2M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC02ODEsNyArNjgxLDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1
aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NTY3Jp
cHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cyA9
IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7Ci0gICAgY29yZShzZWxmKS0+
Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRd
KSwKKyAgICBjb3JlKHNlbGYpLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dl
YlNjcmlwdFdvcmxkIHdvcmxkXSksCiAgICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50
cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9j
dW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKTsKIH0KIApAQCAtMjY4OCwxMSArMjY4OCw4IEBA
IHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0FycmF5KiBwYXR0ZXJucykK
ICAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKGdyb3VwKTsK
ICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF3b3JsZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU2NyaXB0VG9Xb3JsZCgq
Y29yZSh3b3JsZCksIHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0
cmluZ1ZlY3RvcihibGFja2xpc3QpLAorICAgIAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlw
dFRvV29ybGQoY29yZSh3b3JsZCksIHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxp
c3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8g
SW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxs
RnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CkBA
IC0yNzE1LDEwICsyNzEyLDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9y
KE5TQXJyYXkqIHBhdHRlcm5zKQogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIXdvcmxkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlR3JvdXAtPmFk
ZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZCgqY29yZSh3b3JsZCksIHNvdXJjZSwgdXJsLCB0b1N0cmlu
Z1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZy
YW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0
SW5Ub3BGcmFtZU9ubHkpOworICAgIHBhZ2VHcm91cC0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
KGNvcmUod29ybGQpLCBzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxG
cmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KIAog
KyAodm9pZClfcmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUg
d29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQgdXJsOihOU1VSTCAqKXVybApAQCAtMjczMSwx
MCArMjcyNSw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0FycmF5
KiBwYXR0ZXJucykKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCF3b3JsZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZUdyb3VwLT5yZW1vdmVVc2Vy
U2NyaXB0RnJvbVdvcmxkKCpjb3JlKHdvcmxkKSwgdXJsKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92
ZVVzZXJTY3JpcHRGcm9tV29ybGQoY29yZSh3b3JsZCksIHVybCk7CiB9CiAKICsgKHZvaWQpX3Jl
bW92ZVVzZXJTdHlsZVNoZWV0RnJvbUdyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDoo
V2ViU2NyaXB0V29ybGQgKil3b3JsZCB1cmw6KE5TVVJMICopdXJsCkBAIC0yNzQ3LDEwICsyNzM4
LDcgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkqIHBhdHRl
cm5zKQogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXdv
cmxkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNo
ZWV0RnJvbVdvcmxkKCpjb3JlKHdvcmxkKSwgdXJsKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVz
ZXJTdHlsZVNoZWV0RnJvbVdvcmxkKGNvcmUod29ybGQpLCB1cmwpOwogfQogCiArICh2b2lkKV9y
ZW1vdmVVc2VyU2NyaXB0c0Zyb21Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdl
YlNjcmlwdFdvcmxkICopd29ybGQKQEAgLTI3NjMsMTAgKzI3NTEsNyBAQCBzdGF0aWMgVmVjdG9y
PFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoTlNBcnJheSogcGF0dGVybnMpCiAgICAgaWYgKCFwYWdl
R3JvdXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghd29ybGQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHBhZ2VHcm91cC0+cmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoKmNvcmUod29y
bGQpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxkKGNvcmUod29y
bGQpKTsKIH0KIAogKyAodm9pZClfcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbUdyb3VwOihOU1N0
cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsZApAQCAtMjc3OSwx
MCArMjc2NCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0FycmF5
KiBwYXR0ZXJucykKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCF3b3JsZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGFnZUdyb3VwLT5yZW1vdmVVc2Vy
U3R5bGVTaGVldHNGcm9tV29ybGQoKmNvcmUod29ybGQpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92
ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZChjb3JlKHdvcmxkKSk7CiB9CiAKICsgKHZvaWQpX3Jl
bW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcWh0dHBoZWFkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcWh0dHBoZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmFhYWJiMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xaHR0
cGhlYWRlci5jcHAKQEAgLTAsMCArMSwyNzMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhl
c2Ugd2VyZSBwYXJ0IG9mIHRoZSBRdE5ldHdvcmsgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0Lgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxaHR0cGhlYWRlcl9wLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBRU3RyaW5nIGNvbnRlbnRMZW5ndGhTdHJp
bmcgPSBRTGF0aW4xU3RyaW5nKCJjb250ZW50LWxlbmd0aCIpOworc3RhdGljIFFTdHJpbmcgY29u
dGVudFR5cGVTdHJpbmcgPSBRTGF0aW4xU3RyaW5nKCJjb250ZW50LXR5cGUiKTsKKworUUh0dHBI
ZWFkZXI6OlFIdHRwSGVhZGVyKCkKK3sKKyAgICBzZXRWYWxpZCh0cnVlKTsKK30KKworUUh0dHBI
ZWFkZXI6OlFIdHRwSGVhZGVyKGNvbnN0IFFTdHJpbmcmIHN0cikKK3sKKyAgICBzZXRWYWxpZCh0
cnVlKTsKKyAgICBwYXJzZShzdHIpOworfQorCitRSHR0cEhlYWRlcjo6flFIdHRwSGVhZGVyKCkK
K3sKK30KKworYm9vbCBRSHR0cEhlYWRlcjo6cGFyc2UoY29uc3QgUVN0cmluZyYgc3RyKQorewor
ICAgIFFTdHJpbmdMaXN0IGxzdDsKKyAgICBpbnQgcG9zID0gc3RyLmluZGV4T2YoUUxhdGluMUNo
YXIoJ1xuJykpOworICAgIGlmIChwb3MgPiAwICYmIHN0ci5hdChwb3MgLSAxKSA9PSBRTGF0aW4x
Q2hhcignXHInKSkKKyAgICAgICAgbHN0ID0gc3RyLnRyaW1tZWQoKS5zcGxpdChRTGF0aW4xU3Ry
aW5nKCJcclxuIikpOworICAgIGVsc2UKKyAgICAgICAgbHN0ID0gc3RyLnRyaW1tZWQoKS5zcGxp
dChRTGF0aW4xU3RyaW5nKCJcbiIpKTsKKyAgICBsc3QucmVtb3ZlQWxsKFFTdHJpbmcoKSk7CisK
KyAgICBpZiAobHN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBRU3Ry
aW5nTGlzdCBsaW5lczsKKyAgICBRU3RyaW5nTGlzdDo6SXRlcmF0b3IgaXQgPSBsc3QuYmVnaW4o
KTsKKyAgICBmb3IgKDsgaXQgIT0gbHN0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICghKCpp
dCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoKCppdClbMF0uaXNTcGFjZSgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFsaW5lcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbGluZXMubGFzdCgpICs9IFFMYXRpbjFDaGFyKCcgJyk7CisgICAgICAgICAgICAgICAgICAg
IGxpbmVzLmxhc3QoKSArPSAoKml0KS50cmltbWVkKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCgqaXQpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGludCBudW1iZXIgPSAwOworICAgIGZvciAoaXQgPSBsaW5l
cy5iZWdpbigpOyBpdCAhPSBsaW5lcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoIXBhcnNl
TGluZSgqaXQsIG51bWJlcisrKSkgeworICAgICAgICAgICAgc2V0VmFsaWQoZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCitRU3RyaW5nIFFIdHRwSGVhZGVyOjp2YWx1ZShjb25zdCBRU3RyaW5nJiBrZXkpIGNv
bnN0Cit7CisgICAgUVN0cmluZyBsb3dlcmNhc2VLZXkgPSBrZXkudG9Mb3dlcigpOworICAgIFFM
aXN0PFFQYWlyPFFTdHJpbmcsIFFTdHJpbmc+ID46OkNvbnN0SXRlcmF0b3IgaXQgPSBtX3ZhbHVl
cy5jb25zdEJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1fdmFsdWVzLmNvbnN0RW5kKCkpIHsK
KyAgICAgICAgaWYgKCgqaXQpLmZpcnN0LnRvTG93ZXIoKSA9PSBsb3dlcmNhc2VLZXkpCisgICAg
ICAgICAgICByZXR1cm4gKCppdCkuc2Vjb25kOworICAgICAgICArK2l0OworICAgIH0KKyAgICBy
ZXR1cm4gUVN0cmluZygpOworfQorCitib29sIFFIdHRwSGVhZGVyOjpoYXNLZXkoY29uc3QgUVN0
cmluZyYga2V5KSBjb25zdAoreworICAgIFFTdHJpbmcgbG93ZXJjYXNlS2V5ID0ga2V5LnRvTG93
ZXIoKTsKKyAgICBRTGlzdDxRUGFpcjxRU3RyaW5nLCBRU3RyaW5nPiA+OjpDb25zdEl0ZXJhdG9y
IGl0ID0gbV92YWx1ZXMuY29uc3RCZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtX3ZhbHVlcy5j
b25zdEVuZCgpKSB7CisgICAgICAgIGlmICgoKml0KS5maXJzdC50b0xvd2VyKCkgPT0gbG93ZXJj
YXNlS2V5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICsraXQ7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRSHR0cEhlYWRlcjo6c2V0VmFsdWUoY29uc3Qg
UVN0cmluZyYga2V5LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBRU3RyaW5nIGxvd2Vy
Y2FzZUtleSA9IGtleS50b0xvd2VyKCk7CisgICAgUUxpc3Q8UVBhaXI8UVN0cmluZywgUVN0cmlu
Zz4gPjo6SXRlcmF0b3IgaXQgPSBtX3ZhbHVlcy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBt
X3ZhbHVlcy5lbmQoKSkgeworICAgICAgICBpZiAoKCppdCkuZmlyc3QudG9Mb3dlcigpID09IGxv
d2VyY2FzZUtleSkgeworICAgICAgICAgICAgKCppdCkuc2Vjb25kID0gdmFsdWU7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgKytpdDsKKyAgICB9CisgICAgYWRkVmFs
dWUoa2V5LCB2YWx1ZSk7Cit9CisKK3ZvaWQgUUh0dHBIZWFkZXI6OmFkZFZhbHVlKGNvbnN0IFFT
dHJpbmcmIGtleSwgY29uc3QgUVN0cmluZyYgdmFsdWUpCit7CisgICAgbV92YWx1ZXMuYXBwZW5k
KHFNYWtlUGFpcihrZXksIHZhbHVlKSk7Cit9CisKK2Jvb2wgUUh0dHBIZWFkZXI6OnBhcnNlTGlu
ZShjb25zdCBRU3RyaW5nJiBsaW5lLCBpbnQpCit7CisgICAgaW50IGkgPSBsaW5lLmluZGV4T2Yo
UUxhdGluMUNoYXIoJzonKSk7CisgICAgaWYgKGkgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGFkZFZhbHVlKGxpbmUubGVmdChpKS50cmltbWVkKCksIGxpbmUubWlkKGkgKyAx
KS50cmltbWVkKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitRU3RyaW5nIFFIdHRwSGVhZGVy
Ojp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
biBRTGF0aW4xU3RyaW5nKCIiKTsKKworICAgIFFTdHJpbmcgcmV0ID0gUUxhdGluMVN0cmluZygi
Iik7CisKKyAgICBRTGlzdDxRUGFpcjxRU3RyaW5nLCBRU3RyaW5nPiA+OjpDb25zdEl0ZXJhdG9y
IGl0ID0gbV92YWx1ZXMuY29uc3RCZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtX3ZhbHVlcy5j
b25zdEVuZCgpKSB7CisgICAgICAgIHJldCArPSAoKml0KS5maXJzdCArIFFMYXRpbjFTdHJpbmco
IjogIikgKyAoKml0KS5zZWNvbmQgKyBRTGF0aW4xU3RyaW5nKCJcclxuIik7CisgICAgICAgICsr
aXQ7CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK2Jvb2wgUUh0dHBIZWFkZXI6Omhhc0Nv
bnRlbnRMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBoYXNLZXkoY29udGVudExlbmd0aFN0
cmluZyk7Cit9CisKK3VpbnQgUUh0dHBIZWFkZXI6OmNvbnRlbnRMZW5ndGgoKSBjb25zdAorewor
ICAgIHJldHVybiB2YWx1ZShjb250ZW50TGVuZ3RoU3RyaW5nKS50b1VJbnQoKTsKK30KKwordm9p
ZCBRSHR0cEhlYWRlcjo6c2V0Q29udGVudExlbmd0aChpbnQgbGVuKQoreworICAgIHNldFZhbHVl
KGNvbnRlbnRMZW5ndGhTdHJpbmcsIFFTdHJpbmc6Om51bWJlcihsZW4pKTsKK30KKworYm9vbCBR
SHR0cEhlYWRlcjo6aGFzQ29udGVudFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBoYXNLZXko
Y29udGVudFR5cGVTdHJpbmcpOworfQorCitRU3RyaW5nIFFIdHRwSGVhZGVyOjpjb250ZW50VHlw
ZSgpIGNvbnN0Cit7CisgICAgUVN0cmluZyB0eXBlID0gdmFsdWUoY29udGVudFR5cGVTdHJpbmcp
OworICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKwor
ICAgIGludCBwb3MgPSB0eXBlLmluZGV4T2YoUUxhdGluMUNoYXIoJzsnKSk7CisgICAgaWYgKHBv
cyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHR5cGU7CisKKyAgICByZXR1cm4gdHlwZS5sZWZ0KHBv
cykudHJpbW1lZCgpOworfQorCit2b2lkIFFIdHRwSGVhZGVyOjpzZXRDb250ZW50VHlwZShjb25z
dCBRU3RyaW5nICZ0eXBlKQoreworICAgIHNldFZhbHVlKGNvbnRlbnRUeXBlU3RyaW5nLCB0eXBl
KTsKK30KKworUUh0dHBSZXNwb25zZUhlYWRlcjo6UUh0dHBSZXNwb25zZUhlYWRlcihpbnQgY29k
ZSwgY29uc3QgUVN0cmluZyAmdGV4dCwgaW50IG1ham9yVmVyLCBpbnQgbWlub3JWZXIpCisgICAg
OiBRSHR0cEhlYWRlcigpCisgICAgLCBtX3N0YXR1c0NvZGUoY29kZSkKKyAgICAsIG1fcmVhc29u
UGhyYXNlKHRleHQpCisgICAgLCBtX21ham9yVmVyc2lvbihtYWpvclZlcikKKyAgICAsIG1fbWlu
b3JWZXJzaW9uKG1pbm9yVmVyKQoreworfQorCitib29sIFFIdHRwUmVzcG9uc2VIZWFkZXI6OnBh
cnNlTGluZShjb25zdCBRU3RyaW5nJiBsaW5lLCBpbnQgbnVtYmVyKQoreworICAgIGlmIChudW1i
ZXIpCisgICAgICAgIHJldHVybiBRSHR0cEhlYWRlcjo6cGFyc2VMaW5lKGxpbmUsIG51bWJlcik7
CisKKyAgICBRU3RyaW5nIGwgPSBsaW5lLnNpbXBsaWZpZWQoKTsKKyAgICBpZiAobC5sZW5ndGgo
KSA8IDEwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobC5sZWZ0KDUpID09IFFM
YXRpbjFTdHJpbmcoIkhUVFAvIikgJiYgbFs1XS5pc0RpZ2l0KCkgJiYgbFs2XSA9PSBRTGF0aW4x
Q2hhcignLicpCisgICAgICAgICAgICAmJiBsWzddLmlzRGlnaXQoKSAmJiBsWzhdID09IFFMYXRp
bjFDaGFyKCcgJykgJiYgbFs5XS5pc0RpZ2l0KCkpIHsKKyAgICAgICAgbV9tYWpvclZlcnNpb24g
PSBsWzVdLnRvTGF0aW4xKCkgLSAnMCc7CisgICAgICAgIG1fbWlub3JWZXJzaW9uID0gbFs3XS50
b0xhdGluMSgpIC0gJzAnOworCisgICAgICAgIGludCBwb3MgPSBsLmluZGV4T2YoUUxhdGluMUNo
YXIoJyAnKSwgOSk7CisgICAgICAgIGlmIChwb3MgIT0gLTEpIHsKKyAgICAgICAgICAgIG1fcmVh
c29uUGhyYXNlID0gbC5taWQocG9zICsgMSk7CisgICAgICAgICAgICBtX3N0YXR1c0NvZGUgPSBs
Lm1pZCg5LCBwb3MgLSA5KS50b0ludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bV9zdGF0dXNDb2RlID0gbC5taWQoOSkudG9JbnQoKTsKKyAgICAgICAgICAgIG1fcmVhc29uUGhy
YXNlLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1FTdHJpbmcgUUh0dHBSZXNwb25zZUhlYWRlcjo6
dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN0YXRpYyBRU3RyaW5nIHJldChRTGF0aW4xU3RyaW5n
KCJIVFRQLyUxLiUyICUzICU0XHJcbiU1XHJcbiIpKTsKKyAgICByZXR1cm4gcmV0LmFyZyhtX21h
am9yVmVyc2lvbikuYXJnKG1fbWlub3JWZXJzaW9uKS5hcmcobV9zdGF0dXNDb2RlKS5hcmcobV9y
ZWFzb25QaHJhc2UpLmFyZyhRSHR0cEhlYWRlcjo6dG9TdHJpbmcoKSk7Cit9CisKK1FIdHRwUmVx
dWVzdEhlYWRlcjo6UUh0dHBSZXF1ZXN0SGVhZGVyKCkKKyAgICA6IFFIdHRwSGVhZGVyKCkKK3sK
KyAgICBzZXRWYWxpZChmYWxzZSk7Cit9CisKK1FIdHRwUmVxdWVzdEhlYWRlcjo6UUh0dHBSZXF1
ZXN0SGVhZGVyKGNvbnN0IFFTdHJpbmcmIHN0cikKK3sKKyAgICBwYXJzZShzdHIpOworfQorCiti
b29sIFFIdHRwUmVxdWVzdEhlYWRlcjo6cGFyc2VMaW5lKGNvbnN0IFFTdHJpbmcmIGxpbmUsIGlu
dCBudW1iZXIpCit7CisgICAgaWYgKG51bWJlcikKKyAgICAgICAgcmV0dXJuIFFIdHRwSGVhZGVy
OjpwYXJzZUxpbmUobGluZSwgbnVtYmVyKTsKKworICAgIFFTdHJpbmdMaXN0IGxzdCA9IGxpbmUu
c2ltcGxpZmllZCgpLnNwbGl0KFFMYXRpbjFTdHJpbmcoIiAiKSk7CisgICAgaWYgKGxzdC5jb3Vu
dCgpID4gMCkgeworICAgICAgICBtX21ldGhvZCA9IGxzdFswXTsKKyAgICAgICAgaWYgKGxzdC5j
b3VudCgpID4gMSkgeworICAgICAgICAgICAgbV9wYXRoID0gbHN0WzFdOworICAgICAgICAgICAg
aWYgKGxzdC5jb3VudCgpID4gMikgeworICAgICAgICAgICAgICAgIFFTdHJpbmcgdiA9IGxzdFsy
XTsKKyAgICAgICAgICAgICAgICBpZiAodi5sZW5ndGgoKSA+PSA4ICYmIHYubGVmdCg1KSA9PSBR
TGF0aW4xU3RyaW5nKCJIVFRQLyIpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiB2WzVdLmlz
RGlnaXQoKSAmJiB2WzZdID09IFFMYXRpbjFDaGFyKCcuJykgJiYgdls3XS5pc0RpZ2l0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9tYWpvclZlcnNpb24gPSB2WzVdLnRvTGF0aW4xKCkgLSAn
MCc7CisgICAgICAgICAgICAgICAgICAgIG1fbWlub3JWZXJzaW9uID0gdls3XS50b0xhdGluMSgp
IC0gJzAnOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK1FTdHJpbmcgUUh0dHBSZXF1ZXN0SGVhZGVyOjp0b1N0cmluZygpIGNvbnN0Cit7Cisg
ICAgc3RhdGljIFFTdHJpbmcgZmlyc3QoUUxhdGluMVN0cmluZygiJTEgJTIiKSk7CisgICAgc3Rh
dGljIFFTdHJpbmcgbGFzdChRTGF0aW4xU3RyaW5nKCIgSFRUUC8lMy4lNFxyXG4lNVxyXG4iKSk7
CisgICAgcmV0dXJuIGZpcnN0LmFyZyhtX21ldGhvZCkuYXJnKG1fcGF0aCkgKyBsYXN0LmFyZyht
X21ham9yVmVyc2lvbikuYXJnKG1fbWlub3JWZXJzaW9uKS5hcmcoUUh0dHBIZWFkZXI6OnRvU3Ry
aW5nKCkpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xaHR0cGhlYWRl
cl9wLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xaHR0cGhlYWRlcl9wLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY4Mjk1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3FodHRwaGVhZGVyX3AuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisKKyAgICBUaGVzZSB3ZXJlIHBhcnQgb2YgdGhlIFF0TmV0d29yayBtb2R1bGUg
b2YgdGhlIFF0IFRvb2xraXQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBxaHR0cGhlYWRlcl9wX2gKKyNkZWZpbmUg
cWh0dHBoZWFkZXJfcF9oCisKKyNpbmNsdWRlIDxRUGFpcj4KKyNpbmNsdWRlIDxRU3RyaW5nPgor
I2luY2x1ZGUgPFFTdHJpbmdMaXN0PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUUh0
dHBIZWFkZXIgeworcHVibGljOgorICAgIFFIdHRwSGVhZGVyKCk7CisgICAgUUh0dHBIZWFkZXIo
Y29uc3QgUVN0cmluZyYpOworICAgIHZpcnR1YWwgflFIdHRwSGVhZGVyKCk7CisKKyAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFFTdHJpbmcmIGtleSwgY29uc3QgUVN0cmluZyYgdmFsdWUpOworICAg
IHZvaWQgYWRkVmFsdWUoY29uc3QgUVN0cmluZyYga2V5LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7
CisgICAgUVN0cmluZyB2YWx1ZShjb25zdCBRU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIGJvb2wg
aGFzS2V5KGNvbnN0IFFTdHJpbmcmKSBjb25zdDsKKworICAgIC8vICMjIyBRdCA1OiBjaGFuZ2Ug
dG8gcWludDY0CisgICAgYm9vbCBoYXNDb250ZW50TGVuZ3RoKCkgY29uc3Q7CisgICAgdWludCBj
b250ZW50TGVuZ3RoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb250ZW50TGVuZ3RoKGludCk7CisK
KyAgICBib29sIGhhc0NvbnRlbnRUeXBlKCkgY29uc3Q7CisgICAgUVN0cmluZyBjb250ZW50VHlw
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudFR5cGUoY29uc3QgUVN0cmluZyYpOworCisg
ICAgdmlydHVhbCBRU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV92YWxpZDsgfQorCisgICAgdmlydHVhbCBpbnQgbWFqb3JWZXJzaW9u
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IG1pbm9yVmVyc2lvbigpIGNvbnN0ID0gMDsK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBwYXJzZUxpbmUoY29uc3QgUVN0cmluZyYg
bGluZSwgaW50IG51bWJlcik7CisgICAgYm9vbCBwYXJzZShjb25zdCBRU3RyaW5nJik7CisgICAg
dm9pZCBzZXRWYWxpZChib29sIHYpIHsgbV92YWxpZCA9IHY7IH0KKworcHJpdmF0ZToKKyAgICBi
b29sIG1fdmFsaWQ7CisgICAgUUxpc3Q8UVBhaXI8UVN0cmluZywgUVN0cmluZz4gPiBtX3ZhbHVl
czsKK307CisKK2NsYXNzIFFIdHRwUmVzcG9uc2VIZWFkZXIgOiBwdWJsaWMgUUh0dHBIZWFkZXIg
eworcHVibGljOgorICAgIFFIdHRwUmVzcG9uc2VIZWFkZXIoaW50IGNvZGUsIGNvbnN0IFFTdHJp
bmcmIHRleHQgPSBRU3RyaW5nKCksIGludCBtYWpvclZlciA9IDEsIGludCBtaW5vclZlciA9IDEp
OworCisgICAgaW50IHN0YXR1c0NvZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c0NvZGU7IH0K
KyAgICBRU3RyaW5nIHJlYXNvblBocmFzZSgpIGNvbnN0IHtyZXR1cm4gbV9yZWFzb25QaHJhc2U7
IH0KKyAgICBpbnQgbWFqb3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWpvclZlcnNpb247
IH0KKyAgICBpbnQgbWlub3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9taW5vclZlcnNpb247
IH0KKworICAgIFFTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGJv
b2wgcGFyc2VMaW5lKGNvbnN0IFFTdHJpbmcmIGxpbmUsIGludCBudW1iZXIpOworCitwcml2YXRl
OgorICAgIGludCBtX3N0YXR1c0NvZGU7CisgICAgUVN0cmluZyBtX3JlYXNvblBocmFzZTsKKyAg
ICBpbnQgbV9tYWpvclZlcnNpb247CisgICAgaW50IG1fbWlub3JWZXJzaW9uOworfTsKKworY2xh
c3MgUUh0dHBSZXF1ZXN0SGVhZGVyIDogcHVibGljIFFIdHRwSGVhZGVyIHsKK3B1YmxpYzoKKyAg
ICBRSHR0cFJlcXVlc3RIZWFkZXIoKTsKKyAgICBRSHR0cFJlcXVlc3RIZWFkZXIoY29uc3QgUVN0
cmluZyYpOworCisgICAgUVN0cmluZyBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZDsg
fQorICAgIFFTdHJpbmcgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQorICAgIGludCBt
YWpvclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21ham9yVmVyc2lvbjsgfQorICAgIGludCBt
aW5vclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21pbm9yVmVyc2lvbjsgfQorCisgICAgUVN0
cmluZyB0b1N0cmluZygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBwYXJzZUxpbmUo
Y29uc3QgUVN0cmluZyYgbGluZSwgaW50IG51bWJlcik7CisKK3ByaXZhdGU6CisgICAgUVN0cmlu
ZyBtX21ldGhvZDsKKyAgICBRU3RyaW5nIG1fcGF0aDsKKyAgICBpbnQgbV9tYWpvclZlcnNpb247
CisgICAgaW50IG1fbWlub3JWZXJzaW9uOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2ViZGF0YWJhc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQzM2RhYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0
YWJhc2UuY3BwCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmRhdGFiYXNlLmgiCisKKyNpbmNsdWRlICJxd2Vi
ZGF0YWJhc2VfcC5oIgorI2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbi5oIgorI2luY2x1ZGUg
InF3ZWJzZWN1cml0eW9yaWdpbl9wLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCisj
aW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CisvKiEKKyAgICBcY2xhc3MgUVdlYkRhdGFiYXNlCisgICAgXHNpbmNlIDQuNQorICAgIFxicmll
ZiBUaGUgUVdlYkRhdGFiYXNlIGNsYXNzIHByb3ZpZGVzIGFjY2VzcyB0byBIVE1MIDUgZGF0YWJh
c2VzIGNyZWF0ZWQgd2l0aCBKYXZhU2NyaXB0LgorCisgICAgXGlubW9kdWxlIFF0V2ViS2l0CisK
KyAgICBUaGUgdXBjb21pbmcgSFRNTCA1IHN0YW5kYXJkIGluY2x1ZGVzIHN1cHBvcnQgZm9yIFNR
TCBkYXRhYmFzZXMgdGhhdCB3ZWIgc2l0ZXMgY2FuIGNyZWF0ZSBhbmQKKyAgICBhY2Nlc3Mgb24g
YSBsb2NhbCBjb21wdXRlciB0aHJvdWdoIEphdmFTY3JpcHQuIFFXZWJEYXRhYmFzZSBpcyB0aGUg
QysrIGludGVyZmFjZSB0byB0aGVzZQorICAgIGRhdGFiYXNlcy4KKworICAgIERhdGFiYXNlcyBh
cmUgZ3JvdXBlZCB0b2dldGhlciBpbiBzZWN1cml0eSBvcmlnaW5zLiBUbyBnZXQgYWNjZXNzIHRv
IGFsbCBkYXRhYmFzZXMgZGVmaW5lZCBieQorICAgIGEgc2VjdXJpdHkgb3JpZ2luLCB1c2UgUVdl
YlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZXMoKS4gRWFjaCBkYXRhYmFzZSBoYXMgYW4gaW50ZXJu
YWwgbmFtZSgpLAorICAgIGFzIHdlbGwgYXMgYSB1c2VyLWZyaWVuZGx5IG5hbWUsIHByb3ZpZGVk
IGJ5IGRpc3BsYXlOYW1lKCkuIFRoZXNlIG5hbWVzIGFyZSBzcGVjaWZpZWQgd2hlbgorICAgIGNy
ZWF0aW5nIHRoZSBkYXRhYmFzZSBpbiB0aGUgSmF2YVNjcmlwdCBjb2RlLgorCisgICAgV2ViS2l0
IHVzZXMgU1FMaXRlIHRvIGNyZWF0ZSBhbmQgYWNjZXNzIHRoZSBsb2NhbCBTUUwgZGF0YWJhc2Vz
LiBUaGUgbG9jYXRpb24gb2YgdGhlIGRhdGFiYXNlCisgICAgZmlsZSBpbiB0aGUgbG9jYWwgZmls
ZSBzeXN0ZW0gaXMgcmV0dXJuZWQgYnkgZmlsZU5hbWUoKS4gWW91IGNhbiBhY2Nlc3MgdGhlIGRh
dGFiYXNlIGRpcmVjdGx5CisgICAgdGhyb3VnaCB0aGUgXGx7UXQgU1FMfSBkYXRhYmFzZSBtb2R1
bGUuCisKKyAgICBGb3IgZWFjaCBkYXRhYmFzZSB0aGUgd2ViIHNpdGUgY2FuIGRlZmluZSBhbiBl
eHBlY3RlZFNpemUoKS4gVGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgZGF0YWJhc2UKKyAgICBpbiBi
eXRlcyBpcyByZXR1cm5lZCBieSBzaXplKCkuCisKKyAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBy
ZWZlciB0byB0aGUgXGx7aHR0cDovL2Rldi53My5vcmcvaHRtbDUvd2ViZGF0YWJhc2UvfXtIVE1M
NSBXZWIgU1FMIERhdGFiYXNlIERyYWZ0IFN0YW5kYXJkfS4KKworICAgIFxzYSBRV2ViU2VjdXJp
dHlPcmlnaW4KKyovCisKKy8qIQorICAgIENvbnN0cnVjdHMgYSB3ZWIgZGF0YWJhc2UgZnJvbSBc
YSBvdGhlci4KKyovCitRV2ViRGF0YWJhc2U6OlFXZWJEYXRhYmFzZShjb25zdCBRV2ViRGF0YWJh
c2UmIG90aGVyKQorICAgIDogZChvdGhlci5kKQoreworfQorCisvKiEKKyAgICBBc3NpZ25zIHRo
ZSBcYSBvdGhlciB3ZWIgZGF0YWJhc2UgdG8gdGhpcy4KKyovCitRV2ViRGF0YWJhc2UmIFFXZWJE
YXRhYmFzZTo6b3BlcmF0b3I9KGNvbnN0IFFXZWJEYXRhYmFzZSYgb3RoZXIpCit7CisgICAgZCA9
IG90aGVyLmQ7CisgICAgcmV0dXJuICp0aGlzOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBu
YW1lIG9mIHRoZSBkYXRhYmFzZS4KKyovCitRU3RyaW5nIFFXZWJEYXRhYmFzZTo6bmFtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGQtPm5hbWU7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIG5h
bWUgb2YgdGhlIGRhdGFiYXNlIGluIGEgZm9ybWF0IHRoYXQgaXMgc3VpdGFibGUgZm9yIGRpc3Bs
YXkgdG8gdGhlIHVzZXIuCisqLworUVN0cmluZyBRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKCkg
Y29uc3QKK3sKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIERhdGFiYXNlRGV0YWlscyBk
ZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zvck5hbWVBbmRPcmln
aW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gZGV0YWlscy5kaXNwbGF5
TmFtZSgpOworI2Vsc2UKKyAgICByZXR1cm4gUVN0cmluZygpOworI2VuZGlmCit9CisKKy8qIQor
ICAgIFJldHVybnMgdGhlIGV4cGVjdGVkIHNpemUgb2YgdGhlIGRhdGFiYXNlIGluIGJ5dGVzIGFz
IGRlZmluZWQgYnkgdGhlIHdlYiBhdXRob3IuCisqLworcWludDY0IFFXZWJEYXRhYmFzZTo6ZXhw
ZWN0ZWRTaXplKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIERhdGFi
YXNlRGV0YWlscyBkZXRhaWxzID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuZGV0YWlsc0Zv
ck5hbWVBbmRPcmlnaW4oZC0+bmFtZSwgZC0+b3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gZGV0
YWlscy5leHBlY3RlZFVzYWdlKCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisK
Ky8qIQorICAgIFJldHVybnMgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgZGF0YWJhc2UgaW4gYnl0
ZXMuCisqLworcWludDY0IFFXZWJEYXRhYmFzZTo6c2l6ZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKyAgICBEYXRhYmFzZURldGFpbHMgZGV0YWlscyA9IERhdGFiYXNlTWFu
YWdlcjo6bWFuYWdlcigpLmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGQtPm5hbWUsIGQtPm9yaWdp
bi5nZXQoKSk7CisgICAgcmV0dXJuIGRldGFpbHMuY3VycmVudFVzYWdlKCk7CisjZWxzZQorICAg
IHJldHVybiAwOworI2VuZGlmCit9CisKKy8qIQorICAgIFxpbnRlcm5hbAorKi8KK1FXZWJEYXRh
YmFzZTo6UVdlYkRhdGFiYXNlKFFXZWJEYXRhYmFzZVByaXZhdGUqIHByaXYpCit7CisgICAgZCA9
IHByaXY7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGZpbGUgbmFtZSBvZiB0aGUgd2ViIGRh
dGFiYXNlLgorCisgICAgVGhlIG5hbWUgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBkYXRhYmFz
ZSB0aHJvdWdoIHRoZSBcbHtRdCBTUUx9IGRhdGFiYXNlIG1vZHVsZSwgZm9yIGV4YW1wbGU6Cisg
ICAgXGNvZGUKKyAgICAgIFFXZWJEYXRhYmFzZSB3ZWJkYiA9IC4uLgorICAgICAgUVNxbERhdGFi
YXNlIHNxbGRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZSgiUVNRTElURSIsICJteWNvbm5l
Y3Rpb24iKTsKKyAgICAgIHNxbGRiLnNldERhdGFiYXNlTmFtZSh3ZWJkYi5maWxlTmFtZSgpKTsK
KyAgICAgIGlmIChzcWxkYi5vcGVuKCkpIHsKKyAgICAgICAgICBRU3RyaW5nTGlzdCB0YWJsZXMg
PSBzcWxkYi50YWJsZXMoKTsKKyAgICAgICAgICAuLi4KKyAgICAgIH0KKyAgICBcZW5kY29kZQor
CisgICAgXG5vdGUgQ29uY3VycmVudCBhY2Nlc3MgdG8gYSBkYXRhYmFzZSBmcm9tIG11bHRpcGxl
IHRocmVhZHMgb3IgcHJvY2Vzc2VzCisgICAgaXMgbm90IHZlcnkgZWZmaWNpZW50IGJlY2F1c2Ug
U1FMaXRlIGlzIHVzZWQgYXMgV2ViS2l0J3MgZGF0YWJhc2UgYmFja2VuZC4KKyovCitRU3RyaW5n
IFFXZWJEYXRhYmFzZTo6ZmlsZU5hbWUoKSBjb25zdAoreworI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCisgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmZ1bGxQYXRoRm9yRGF0
YWJhc2UoZC0+b3JpZ2luLmdldCgpLCBkLT5uYW1lLCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVy
biBRU3RyaW5nKCk7CisjZW5kaWYKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgZGF0YWJhc2Vz
J3Mgc2VjdXJpdHkgb3JpZ2luLgorKi8KK1FXZWJTZWN1cml0eU9yaWdpbiBRV2ViRGF0YWJhc2U6
Om9yaWdpbigpIGNvbnN0Cit7CisgICAgUVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSogcHJpdiA9
IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKGQtPm9yaWdpbi5nZXQoKSk7CisgICAgUVdl
YlNlY3VyaXR5T3JpZ2luIG9yaWdpbihwcml2KTsKKyAgICByZXR1cm4gb3JpZ2luOworfQorCisv
KiEKKyAgICBSZW1vdmVzIHRoZSBkYXRhYmFzZSBcYSBkYiBmcm9tIGl0cyBzZWN1cml0eSBvcmln
aW4uIEFsbCBkYXRhIHN0b3JlZCBpbiB0aGUKKyAgICBkYXRhYmFzZSBcYSBkYiB3aWxsIGJlIGRl
c3Ryb3llZC4KKyovCit2b2lkIFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UoY29uc3QgUVdl
YkRhdGFiYXNlJiBkYikKK3sKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIERhdGFiYXNl
TWFuYWdlcjo6bWFuYWdlcigpLmRlbGV0ZURhdGFiYXNlKGRiLmQtPm9yaWdpbi5nZXQoKSwgZGIu
ZC0+bmFtZSk7CisjZW5kaWYKK30KKworLyohCisgIFxzaW5jZSA0LjYKKworICBEZWxldGVzIGFs
bCB3ZWIgZGF0YWJhc2VzIGluIHRoZSBjb25maWd1cmVkIG9mZmxpbmUgc3RvcmFnZSBwYXRoLgor
CisgIFxzYSBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0aCgpCisqLwordm9pZCBR
V2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcygpCit7CisjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKKyAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5kZWxldGVBbGxEYXRhYmFzZXMo
KTsKKyNlbmRpZgorfQorCisvKiEKKyAgICBEZXN0cm95cyB0aGUgd2ViIGRhdGFiYXNlIG9iamVj
dC4gVGhlIGRhdGEgd2l0aGluIHRoaXMgZGF0YWJhc2UgaXMgXGIgbm90IGRlc3Ryb3llZC4KKyov
CitRV2ViRGF0YWJhc2U6On5RV2ViRGF0YWJhc2UoKQoreworfQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJkYXRhYmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NWIyZWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2UuaApA
QCAtMCwwICsxLDU5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2lmbmRlZiBfV0VCREFUQUJBU0Vf
SF8KKyNkZWZpbmUgX1dFQkRBVEFCQVNFX0hfCisKKyNpbmNsdWRlIDxRdENvcmUvcXN0cmluZy5o
PgorI2luY2x1ZGUgPFF0Q29yZS9xc2hhcmVkZGF0YS5oPgorCisjaW5jbHVkZSAicXdlYmtpdGds
b2JhbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgRGF0YWJhc2VEZXRhaWxz
OworfQorCitjbGFzcyBRV2ViRGF0YWJhc2VQcml2YXRlOworY2xhc3MgUVdlYlNlY3VyaXR5T3Jp
Z2luOworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViRGF0YWJhc2UgeworcHVibGljOgorICAg
IFFXZWJEYXRhYmFzZShjb25zdCBRV2ViRGF0YWJhc2UmIG90aGVyKTsKKyAgICBRV2ViRGF0YWJh
c2UgJm9wZXJhdG9yPShjb25zdCBRV2ViRGF0YWJhc2UmIG90aGVyKTsKKyAgICB+UVdlYkRhdGFi
YXNlKCk7CisKKyAgICBRU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIGRpc3BsYXlO
YW1lKCkgY29uc3Q7CisgICAgcWludDY0IGV4cGVjdGVkU2l6ZSgpIGNvbnN0OworICAgIHFpbnQ2
NCBzaXplKCkgY29uc3Q7CisgICAgUVN0cmluZyBmaWxlTmFtZSgpIGNvbnN0OworICAgIFFXZWJT
ZWN1cml0eU9yaWdpbiBvcmlnaW4oKSBjb25zdDsKKworICAgIHN0YXRpYyB2b2lkIHJlbW92ZURh
dGFiYXNlKGNvbnN0IFFXZWJEYXRhYmFzZSYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFsbERh
dGFiYXNlcygpOworCitwcml2YXRlOgorICAgIFFXZWJEYXRhYmFzZShRV2ViRGF0YWJhc2VQcml2
YXRlKiBwcml2KTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlNlY3VyaXR5T3JpZ2luOworCitwcml2
YXRlOgorICAgIFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI8UVdlYkRhdGFiYXNlUHJpdmF0
ZT4gZDsKK307CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZGF0YWJhc2VfcC5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlX3AuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGNiODA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlX3AuaApAQCAtMCwwICsxLDM3
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworI2lmbmRlZiBfV0VCREFUQUJBU0VfUF9IXworI2RlZmlu
ZSBfV0VCREFUQUJBU0VfUF9IXworCisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRdENv
cmUvcXNoYXJlZGRhdGEuaD4KKworI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK2Ns
YXNzIFFXZWJEYXRhYmFzZVByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgeworcHVibGljOgor
ICAgIFdURjo6U3RyaW5nIG5hbWU7CisgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbjsKK307CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVu
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU5MzQ1MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcApAQCAtMCww
ICsxLDIwODcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJxd2ViZWxlbWVudC5oIgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUg
InF3ZWJlbGVtZW50X3AuaCIKKyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aCIKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVk
ZSAiQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgorI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKKyNpbmNsdWRlICJTdHlsZVJ1
bGUuaCIKKyNpbmNsdWRlICJDb21wbGV0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU0hUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgPFFXZWJGcmFtZUFkYXB0ZXIu
aD4KKyNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgorI2luY2x1ZGUgInF0X3J1bnRpbWUu
aCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCisjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
KyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUg
InJ1bnRpbWVfcm9vdC5oIgorI2luY2x1ZGUgPEpTRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisjaW5jbHVkZSA8UVBh
aW50ZXI+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitjbGFzcyBRV2ViRWxlbWVudFBy
aXZhdGUgeworcHVibGljOgorfTsKKworLyohCisgICAgXGNsYXNzIFFXZWJFbGVtZW50CisgICAg
XHNpbmNlIDQuNgorICAgIFxicmllZiBUaGUgUVdlYkVsZW1lbnQgY2xhc3MgcHJvdmlkZXMgY29u
dmVuaWVudCBhY2Nlc3MgdG8gRE9NIGVsZW1lbnRzIGluCisgICAgYSBRV2ViRnJhbWUuCisgICAg
XGlubW9kdWxlIFF0V2ViS2l0CisKKyAgICBBIFFXZWJFbGVtZW50IG9iamVjdCBhbGxvd3MgZWFz
eSBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IG1vZGVsLCByZXByZXNlbnRlZAorICAgIGJ5IGEgdHJl
ZS1saWtlIHN0cnVjdHVyZSBvZiBET00gZWxlbWVudHMuIFRoZSByb290IG9mIHRoZSB0cmVlIGlz
IGNhbGxlZAorICAgIHRoZSBkb2N1bWVudCBlbGVtZW50IGFuZCBjYW4gYmUgYWNjZXNzZWQgdXNp
bmcKKyAgICBRV2ViRnJhbWU6OmRvY3VtZW50RWxlbWVudCgpLgorCisgICAgU3BlY2lmaWMgZWxl
bWVudHMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIGZpbmRBbGwoKSBhbmQgZmluZEZpcnN0KCkuIFRo
ZXNlCisgICAgZWxlbWVudHMgYXJlIGlkZW50aWZpZWQgdXNpbmcgQ1NTIHNlbGVjdG9ycy4gVGhl
IGNvZGUgc25pcHBldCBiZWxvdworICAgIGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mIGZpbmRBbGwo
KS4KKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3dlYmVsZW1lbnQvbWFpbi5jcHAgRmlu
ZEFsbAorCisgICAgVGhlIGZpcnN0IGxpc3QgY29udGFpbnMgYWxsIFxjIHNwYW4gZWxlbWVudHMg
aW4gdGhlIGRvY3VtZW50LiBUaGUgc2Vjb25kCisgICAgbGlzdCBjb250YWlucyBcYyBzcGFuIGVs
ZW1lbnRzIHRoYXQgYXJlIGNoaWxkcmVuIG9mIFxjIHAsIGNsYXNzaWZpZWQgd2l0aAorICAgIFxj
IGludHJvLgorCisgICAgVXNpbmcgZmluZEZpcnN0KCkgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBj
YWxsaW5nIGZpbmRBbGwoKSwgYW5kIGV4dHJhY3RpbmcKKyAgICB0aGUgZmlyc3QgZWxlbWVudCBv
bmx5IGluIHRoZSBsaXN0IHJldHVybmVkLgorCisgICAgQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHRy
YXZlcnNlIHRoZSBkb2N1bWVudCBtYW51YWxseSB1c2luZyBmaXJzdENoaWxkKCkgYW5kCisgICAg
bmV4dFNpYmxpbmcoKToKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3dlYmVsZW1lbnQv
bWFpbi5jcHAgVHJhdmVyc2luZyB3aXRoIFFXZWJFbGVtZW50CisKKyAgICBJbmRpdmlkdWFsIGVs
ZW1lbnRzIGNhbiBiZSBpbnNwZWN0ZWQgb3IgY2hhbmdlZCB1c2luZyBtZXRob2RzIHN1Y2ggYXMg
YXR0cmlidXRlKCkKKyAgICBvciBzZXRBdHRyaWJ1dGUoKS4gRm9yIGV4YW1sZSwgdG8gY2FwdHVy
ZSB0aGUgdXNlcidzIGlucHV0IGluIGEgdGV4dCBmaWVsZCBmb3IgbGF0ZXIKKyAgICB1c2UgKGF1
dG8tY29tcGxldGlvbiksIGEgYnJvd3NlciBjb3VsZCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzOgor
CisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvd2ViZWxlbWVudC9tYWluLmNwcCBhdXRvY29t
cGxldGUxCisKKyAgICBXaGVuIHRoZSBzYW1lIHBhZ2UgaXMgbGF0ZXIgcmV2aXNpdGVkLCB0aGUg
YnJvd3NlciBjYW4gZmlsbCBpbiB0aGUgdGV4dCBmaWVsZCBhdXRvbWF0aWNhbGx5CisgICAgYnkg
bW9kaWZ5aW5nIHRoZSB2YWx1ZSBhdHRyaWJ1dGUgb2YgdGhlIGlucHV0IGVsZW1lbnQ6CisKKyAg
ICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy93ZWJlbGVtZW50L21haW4uY3BwIGF1dG9jb21wbGV0
ZTIKKworICAgIEFub3RoZXIgdXNlIGNhc2UgaXMgdG8gZW11bGF0ZSBhIGNsaWNrIGV2ZW50IG9u
IGFuIGVsZW1lbnQuIFRoZSBmb2xsb3dpbmcKKyAgICBjb2RlIHNuaXBwZXQgZGVtb25zdHJhdGVz
IGhvdyB0byBjYWxsIHRoZSBKYXZhU2NyaXB0IERPTSBtZXRob2QgY2xpY2soKSBvZgorICAgIGEg
c3VibWl0IGJ1dHRvbjoKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3dlYmVsZW1lbnQv
bWFpbi5jcHAgQ2FsbGluZyBhIERPTSBlbGVtZW50IG1ldGhvZAorCisgICAgVGhlIHVuZGVybHlp
bmcgY29udGVudCBvZiBRV2ViRWxlbWVudCBpcyBleHBsaWNpdGx5IHNoYXJlZC4gQ3JlYXRpbmcg
YSBjb3B5CisgICAgb2YgYSBRV2ViRWxlbWVudCBkb2VzIG5vdCBjcmVhdGUgYSBjb3B5IG9mIHRo
ZSBjb250ZW50LiBJbnN0ZWFkLCBib3RoCisgICAgaW5zdGFuY2VzIHBvaW50IHRvIHRoZSBzYW1l
IGVsZW1lbnQuCisKKyAgICBUaGUgY29udGVudHMgb2YgY2hpbGQgZWxlbWVudHMgY2FuIGJlIGNv
bnZlcnRlZCB0byBwbGFpbiB0ZXh0IHdpdGgKKyAgICB0b1BsYWluVGV4dCgpOyB0byBYSFRNTCB1
c2luZyB0b0lubmVyWG1sKCkuIFRvIGluY2x1ZGUgdGhlIGVsZW1lbnQncyB0YWcgaW4KKyAgICB0
aGUgb3V0cHV0LCB1c2UgdG9PdXRlclhtbCgpLgorCisgICAgSXQgaXMgcG9zc2libGUgdG8gcmVw
bGFjZSB0aGUgY29udGVudHMgb2YgY2hpbGQgZWxlbWVudHMgdXNpbmcKKyAgICBzZXRQbGFpblRl
eHQoKSBhbmQgc2V0SW5uZXJYbWwoKS4gVG8gcmVwbGFjZSB0aGUgZWxlbWVudCBpdHNlbGYgYW5k
IGl0cworICAgIGNvbnRlbnRzLCB1c2Ugc2V0T3V0ZXJYbWwoKS4KKworICAgIFxzZWN0aW9uMSBF
eGFtcGxlcworCisgICAgVGhlIFxse0RPTSBUcmF2ZXJzYWwgRXhhbXBsZX0gc2hvd3Mgb25lIHdh
eSB0byB0cmF2ZXJzZSBkb2N1bWVudHMgaW4gYSBydW5uaW5nCisgICAgZXhhbXBsZS4KKworICAg
IFRoZSBcbHtTaW1wbGUgU2VsZWN0b3IgRXhhbXBsZX0gY2FuIGJlIHVzZWQgdG8gZXhwZXJpbWVu
dCB3aXRoIHRoZSBzZWFyY2hpbmcKKyAgICBmZWF0dXJlcyBvZiB0aGlzIGNsYXNzIGFuZCBwcm92
aWRlcyBzYW1wbGUgY29kZSB5b3UgY2FuIHN0YXJ0IHdvcmtpbmcgd2l0aC4KKyovCisKKy8qIQor
ICAgIENvbnN0cnVjdHMgYSBudWxsIHdlYiBlbGVtZW50LgorKi8KK1FXZWJFbGVtZW50OjpRV2Vi
RWxlbWVudCgpCisgICAgOiBkKDApCisgICAgLCBtX2VsZW1lbnQoMCkKK3sKK30KKworLyohCisg
ICAgXGludGVybmFsCisqLworUVdlYkVsZW1lbnQ6OlFXZWJFbGVtZW50KFdlYkNvcmU6OkVsZW1l
bnQqIGRvbUVsZW1lbnQpCisgICAgOiBkKDApCisgICAgLCBtX2VsZW1lbnQoZG9tRWxlbWVudCkK
K3sKKyAgICBpZiAobV9lbGVtZW50KQorICAgICAgICBtX2VsZW1lbnQtPnJlZigpOworfQorCisv
KiEKKyAgICBcaW50ZXJuYWwKKyovCitRV2ViRWxlbWVudDo6UVdlYkVsZW1lbnQoV2ViQ29yZTo6
Tm9kZSogbm9kZSkKKyAgICA6IGQoMCkKKyAgICAsIG1fZWxlbWVudCgwKQoreworICAgIGlmIChu
b2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICBtX2VsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MRWxlbWVudCo+KG5vZGUpOworICAgICAgICBtX2VsZW1lbnQtPnJlZigpOwor
ICAgIH0KK30KKworLyohCisgICAgQ29uc3RydWN0cyBhIGNvcHkgb2YgXGEgb3RoZXIuCisqLwor
UVdlYkVsZW1lbnQ6OlFXZWJFbGVtZW50KGNvbnN0IFFXZWJFbGVtZW50ICZvdGhlcikKKyAgICA6
IGQoMCkKKyAgICAsIG1fZWxlbWVudChvdGhlci5tX2VsZW1lbnQpCit7CisgICAgaWYgKG1fZWxl
bWVudCkKKyAgICAgICAgbV9lbGVtZW50LT5yZWYoKTsKK30KKworLyohCisgICAgQXNzaWducyBc
YSBvdGhlciB0byB0aGlzIGVsZW1lbnQgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhpcyBl
bGVtZW50LgorKi8KK1FXZWJFbGVtZW50ICZRV2ViRWxlbWVudDo6b3BlcmF0b3I9KGNvbnN0IFFX
ZWJFbGVtZW50ICZvdGhlcikKK3sKKyAgICAvLyAjIyMgaGFuZGxlICJkIiBhc3NpZ25tZW50Cisg
ICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIEVsZW1lbnQgKm90aGVyRWxlbWVudCA9
IG90aGVyLm1fZWxlbWVudDsKKyAgICAgICAgaWYgKG90aGVyRWxlbWVudCkKKyAgICAgICAgICAg
IG90aGVyRWxlbWVudC0+cmVmKCk7CisgICAgICAgIGlmIChtX2VsZW1lbnQpCisgICAgICAgICAg
ICBtX2VsZW1lbnQtPmRlcmVmKCk7CisgICAgICAgIG1fZWxlbWVudCA9IG90aGVyRWxlbWVudDsK
KyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCisvKiEKKyAgICBEZXN0cm95cyB0aGUgZWxl
bWVudC4gSG93ZXZlciwgdGhlIHVuZGVybHlpbmcgRE9NIGVsZW1lbnQgaXMgbm90IGRlc3Ryb3ll
ZC4KKyovCitRV2ViRWxlbWVudDo6flFXZWJFbGVtZW50KCkKK3sKKyAgICBkZWxldGUgZDsKKyAg
ICBpZiAobV9lbGVtZW50KQorICAgICAgICBtX2VsZW1lbnQtPmRlcmVmKCk7Cit9CisKK2Jvb2wg
UVdlYkVsZW1lbnQ6Om9wZXJhdG9yPT0oY29uc3QgUVdlYkVsZW1lbnQmIG8pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZWxlbWVudCA9PSBvLm1fZWxlbWVudDsKK30KKworYm9vbCBRV2ViRWxlbWVu
dDo6b3BlcmF0b3IhPShjb25zdCBRV2ViRWxlbWVudCYgbykgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9lbGVtZW50ICE9IG8ubV9lbGVtZW50OworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYg
dGhlIGVsZW1lbnQgaXMgYSBudWxsIGVsZW1lbnQ7IG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgor
Ki8KK2Jvb2wgUVdlYkVsZW1lbnQ6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2Vs
ZW1lbnQ7Cit9CisKKy8qIQorICAgIFJldHVybnMgYSBuZXcgbGlzdCBvZiBjaGlsZCBlbGVtZW50
cyBtYXRjaGluZyB0aGUgZ2l2ZW4gQ1NTIHNlbGVjdG9yCisgICAgXGEgc2VsZWN0b3JRdWVyeS4g
SWYgdGhlcmUgYXJlIG5vIG1hdGNoaW5nIGVsZW1lbnRzLCBhbiBlbXB0eSBsaXN0IGlzCisgICAg
cmV0dXJuZWQuCisKKyAgICBcbHtTdGFuZGFyZCBDU1MyIHNlbGVjdG9yfSBzeW50YXggaXMgdXNl
ZCBmb3IgdGhlIHF1ZXJ5LgorCisgICAgXG5vdGUgVGhpcyBzZWFyY2ggaXMgcGVyZm9ybWVkIHJl
Y3Vyc2l2ZWx5LgorCisgICAgXHNhIGZpbmRGaXJzdCgpCisqLworUVdlYkVsZW1lbnRDb2xsZWN0
aW9uIFFXZWJFbGVtZW50OjpmaW5kQWxsKGNvbnN0IFFTdHJpbmcgJnNlbGVjdG9yUXVlcnkpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFFXZWJFbGVtZW50Q29sbGVjdGlvbigqdGhpcywgc2VsZWN0b3JR
dWVyeSk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgdGhh
dCBtYXRjaGVzIHRoZSBnaXZlbiBDU1Mgc2VsZWN0b3IKKyAgICBcYSBzZWxlY3RvclF1ZXJ5Lgor
CisgICAgXGx7U3RhbmRhcmQgQ1NTMiBzZWxlY3Rvcn0gc3ludGF4IGlzIHVzZWQgZm9yIHRoZSBx
dWVyeS4KKworICAgIFxub3RlIFRoaXMgc2VhcmNoIGlzIHBlcmZvcm1lZCByZWN1cnNpdmVseS4K
KworICAgIFxzYSBmaW5kQWxsKCkKKyovCitRV2ViRWxlbWVudCBRV2ViRWxlbWVudDo6ZmluZEZp
cnN0KGNvbnN0IFFTdHJpbmcgJnNlbGVjdG9yUXVlcnkpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Vs
ZW1lbnQpCisgICAgICAgIHJldHVybiBRV2ViRWxlbWVudCgpOworICAgIEV4Y2VwdGlvbkNvZGUg
ZXhjZXB0aW9uID0gMDsgLy8gIyMjCisgICAgcmV0dXJuIFFXZWJFbGVtZW50KG1fZWxlbWVudC0+
cXVlcnlTZWxlY3RvcihzZWxlY3RvclF1ZXJ5LCBleGNlcHRpb24pLmdldCgpKTsKK30KKworLyoh
CisgICAgUmVwbGFjZXMgdGhlIGV4aXN0aW5nIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50IHdpdGgg
XGEgdGV4dC4KKworICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBzZXR0aW5nIHRoZSBIVE1MIGlu
bmVyVGV4dCBwcm9wZXJ0eS4KKworICAgIFxzYSB0b1BsYWluVGV4dCgpCisqLwordm9pZCBRV2Vi
RWxlbWVudDo6c2V0UGxhaW5UZXh0KGNvbnN0IFFTdHJpbmcgJnRleHQpCit7CisgICAgaWYgKCFt
X2VsZW1lbnQgfHwgIW1fZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQorICAgICAgICByZXR1cm47
CisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOworICAgIHN0YXRpY19jYXN0PEhUTUxF
bGVtZW50Kj4obV9lbGVtZW50KS0+c2V0SW5uZXJUZXh0KHRleHQsIGV4Y2VwdGlvbik7Cit9CisK
Ky8qIQorICAgIFJldHVybnMgdGhlIHRleHQgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIHRoZSBlbmQg
dGFnIG9mIHRoaXMKKyAgICBlbGVtZW50LgorCisgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHJl
YWRpbmcgdGhlIEhUTUwgaW5uZXJUZXh0IHByb3BlcnR5LgorCisgICAgXHNhIHNldFBsYWluVGV4
dCgpCisqLworUVN0cmluZyBRV2ViRWxlbWVudDo6dG9QbGFpblRleHQoKSBjb25zdAoreworICAg
IGlmICghbV9lbGVtZW50IHx8ICFtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPiht
X2VsZW1lbnQpLT5pbm5lclRleHQoKTsKK30KKworLyohCisgICAgUmVwbGFjZXMgdGhlIGNvbnRl
bnRzIG9mIHRoaXMgZWxlbWVudCBhcyB3ZWxsIGFzIGl0cyBvd24gdGFnIHdpdGgKKyAgICBcYSBt
YXJrdXAuIFRoZSBzdHJpbmcgbWF5IGNvbnRhaW4gSFRNTCBvciBYTUwgdGFncywgd2hpY2ggaXMg
cGFyc2VkIGFuZAorICAgIGZvcm1hdHRlZCBiZWZvcmUgaW5zZXJ0aW9uIGludG8gdGhlIGRvY3Vt
ZW50LgorCisgICAgXG5vdGUgVGhpcyBpcyBjdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBmb3Ig
KFgpSFRNTCBlbGVtZW50cy4KKworICAgIFxzYSB0b091dGVyWG1sKCksIHRvSW5uZXJYbWwoKSwg
c2V0SW5uZXJYbWwoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnNldE91dGVyWG1sKGNvbnN0IFFT
dHJpbmcgJm1hcmt1cCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0
aW9uID0gMDsKKworICAgIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obV9lbGVtZW50KS0+c2V0
T3V0ZXJIVE1MKG1hcmt1cCwgZXhjZXB0aW9uKTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGlz
IGVsZW1lbnQgY29udmVydGVkIHRvIFhNTCwgaW5jbHVkaW5nIHRoZSBzdGFydCBhbmQgdGhlIGVu
ZAorICAgIHRhZ3MgYXMgd2VsbCBhcyBpdHMgYXR0cmlidXRlcy4KKworICAgIFxub3RlIFRoaXMg
aXMgY3VycmVudGx5IGltcGxlbWVudGVkIGZvciAoWClIVE1MIGVsZW1lbnRzIG9ubHkuCisKKyAg
ICBcbm90ZSBUaGUgZm9ybWF0IG9mIHRoZSBtYXJrdXAgcmV0dXJuZWQgd2lsbCBvYmV5IHRoZSBu
YW1lc3BhY2Ugb2YgdGhlCisgICAgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgZWxlbWVudC4gVGhp
cyBtZWFucyB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgb2JleSBYTUwKKyAgICBmb3JtYXR0aW5nIHJ1
bGVzLCBzdWNoIGFzIHNlbGYtY2xvc2luZyB0YWdzLCBvbmx5IGlmIHRoZSBkb2N1bWVudCBpcwor
ICAgICd0ZXh0L3hodG1sK3htbCcuCisKKyAgICBcc2Egc2V0T3V0ZXJYbWwoKSwgc2V0SW5uZXJY
bWwoKSwgdG9Jbm5lclhtbCgpCisqLworUVN0cmluZyBRV2ViRWxlbWVudDo6dG9PdXRlclhtbCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIW1fZWxlbWVudC0+aXNIVE1MRWxlbWVu
dCgpKQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxFbGVtZW50Kj4obV9lbGVtZW50KS0+b3V0ZXJIVE1MKCk7Cit9CisKKy8qIQorICAgIFJl
cGxhY2VzIHRoZSBjb250ZW50cyBvZiB0aGlzIGVsZW1lbnQgd2l0aCBcYSBtYXJrdXAuIFRoZSBz
dHJpbmcgbWF5CisgICAgY29udGFpbiBIVE1MIG9yIFhNTCB0YWdzLCB3aGljaCBpcyBwYXJzZWQg
YW5kIGZvcm1hdHRlZCBiZWZvcmUgaW5zZXJ0aW9uCisgICAgaW50byB0aGUgZG9jdW1lbnQuCisK
KyAgICBcbm90ZSBUaGlzIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBmb3IgKFgpSFRNTCBlbGVt
ZW50cyBvbmx5LgorCisgICAgXHNhIHRvSW5uZXJYbWwoKSwgdG9PdXRlclhtbCgpLCBzZXRPdXRl
clhtbCgpCisqLwordm9pZCBRV2ViRWxlbWVudDo6c2V0SW5uZXJYbWwoY29uc3QgUVN0cmluZyAm
bWFya3VwKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFtX2VsZW1lbnQtPmlzSFRNTEVsZW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAw
OworCisgICAgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihtX2VsZW1lbnQpLT5zZXRJbm5lckhU
TUwobWFya3VwLCBleGNlcHRpb24pOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBYTUwgY29u
dGVudCBiZXR3ZWVuIHRoZSBlbGVtZW50J3Mgc3RhcnQgYW5kIGVuZCB0YWdzLgorCisgICAgXG5v
dGUgVGhpcyBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgZm9yIChYKUhUTUwgZWxlbWVudHMgb25s
eS4KKworICAgIFxub3RlIFRoZSBmb3JtYXQgb2YgdGhlIG1hcmt1cCByZXR1cm5lZCB3aWxsIG9i
ZXkgdGhlIG5hbWVzcGFjZSBvZiB0aGUKKyAgICBkb2N1bWVudCBjb250YWluaW5nIHRoZSBlbGVt
ZW50LiBUaGlzIG1lYW5zIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBvYmV5IFhNTAorICAgIGZvcm1h
dHRpbmcgcnVsZXMsIHN1Y2ggYXMgc2VsZi1jbG9zaW5nIHRhZ3MsIG9ubHkgaWYgdGhlIGRvY3Vt
ZW50IGlzCisgICAgJ3RleHQveGh0bWwreG1sJy4KKworICAgIFxzYSBzZXRJbm5lclhtbCgpLCBz
ZXRPdXRlclhtbCgpLCB0b091dGVyWG1sKCkKKyovCitRU3RyaW5nIFFXZWJFbGVtZW50Ojp0b0lu
bmVyWG1sKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihtX2VsZW1lbnQpLT5pbm5lckhUTUwoKTsKK30KKworLyoh
CisgICAgQWRkcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gXGEgbmFtZSBhbmQgXGEgdmFs
dWUuIElmIGFuIGF0dHJpYnV0ZSB3aXRoCisgICAgdGhlIHNhbWUgbmFtZSBleGlzdHMsIGl0cyB2
YWx1ZSBpcyByZXBsYWNlZCBieSBcYSB2YWx1ZS4KKworICAgIFxzYSBhdHRyaWJ1dGUoKSwgYXR0
cmlidXRlTlMoKSwgc2V0QXR0cmlidXRlTlMoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnNldEF0
dHJpYnV0ZShjb25zdCBRU3RyaW5nICZuYW1lLCBjb25zdCBRU3RyaW5nICZ2YWx1ZSkKK3sKKyAg
ICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIEV4Y2VwdGlvbkNvZGUgZXhj
ZXB0aW9uID0gMDsKKyAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgZXhj
ZXB0aW9uKTsKK30KKworLyohCisgICAgQWRkcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4g
XGEgbmFtZSBpbiBcYSBuYW1lc3BhY2VVcmkgd2l0aCBcYSB2YWx1ZS4KKyAgICBJZiBhbiBhdHRy
aWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0cywgaXRzIHZhbHVlIGlzIHJlcGxhY2VkIGJ5
CisgICAgXGEgdmFsdWUuCisKKyAgICBcc2EgYXR0cmlidXRlTlMoKSwgYXR0cmlidXRlKCksIHNl
dEF0dHJpYnV0ZSgpCisqLwordm9pZCBRV2ViRWxlbWVudDo6c2V0QXR0cmlidXRlTlMoY29uc3Qg
UVN0cmluZyAmbmFtZXNwYWNlVXJpLCBjb25zdCBRU3RyaW5nICZuYW1lLCBjb25zdCBRU3RyaW5n
ICZ2YWx1ZSkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBtX2VsZW1lbnQtPnNldEF0
dHJpYnV0ZU5TKG5hbWVzcGFjZVVyaSwgbmFtZSwgdmFsdWUsIGV4Y2VwdGlvbik7Cit9CisKKy8q
IQorICAgIFJldHVybnMgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBcYSBuYW1lLiBJZiB0
aGUgYXR0cmlidXRlIGRvZXMgbm90CisgICAgZXhpc3QsIFxhIGRlZmF1bHRWYWx1ZSBpcyByZXR1
cm5lZC4KKworICAgIFxzYSBzZXRBdHRyaWJ1dGUoKSwgc2V0QXR0cmlidXRlTlMoKSwgYXR0cmli
dXRlTlMoKQorKi8KK1FTdHJpbmcgUVdlYkVsZW1lbnQ6OmF0dHJpYnV0ZShjb25zdCBRU3RyaW5n
ICZuYW1lLCBjb25zdCBRU3RyaW5nICZkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2VsZW1lbnQpCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgaWYgKG1fZWxlbWVudC0+
aGFzQXR0cmlidXRlKG5hbWUpKQorICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1
dGUobmFtZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCisv
KiEKKyAgICBSZXR1cm5zIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gXGEgbmFtZSBpbiBc
YSBuYW1lc3BhY2VVcmkuIElmIHRoZQorICAgIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgXGEg
ZGVmYXVsdFZhbHVlIGlzIHJldHVybmVkLgorCisgICAgXHNhIHNldEF0dHJpYnV0ZU5TKCksIHNl
dEF0dHJpYnV0ZSgpLCBhdHRyaWJ1dGUoKQorKi8KK1FTdHJpbmcgUVdlYkVsZW1lbnQ6OmF0dHJp
YnV0ZU5TKGNvbnN0IFFTdHJpbmcgJm5hbWVzcGFjZVVyaSwgY29uc3QgUVN0cmluZyAmbmFtZSwg
Y29uc3QgUVN0cmluZyAmZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50
KQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIGlmIChtX2VsZW1lbnQtPmhhc0F0dHJp
YnV0ZU5TKG5hbWVzcGFjZVVyaSwgbmFtZSkpCisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmdl
dEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVyaSwgbmFtZSk7CisgICAgZWxzZQorICAgICAgICByZXR1
cm4gZGVmYXVsdFZhbHVlOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhpcyBlbGVt
ZW50IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gXGEgbmFtZTsKKyAgICBvdGhlcndp
c2UgcmV0dXJucyBmYWxzZS4KKworICAgIFxzYSBhdHRyaWJ1dGUoKSwgc2V0QXR0cmlidXRlKCkK
KyovCitib29sIFFXZWJFbGVtZW50OjpoYXNBdHRyaWJ1dGUoY29uc3QgUVN0cmluZyAmbmFtZSkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBtX2VsZW1lbnQtPmhhc0F0dHJpYnV0ZShuYW1lKTsKK30KKworLyohCisgICAgUmV0
dXJucyB0cnVlIGlmIHRoaXMgZWxlbWVudCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVu
IFxhIG5hbWUsIGluCisgICAgXGEgbmFtZXNwYWNlVXJpOyBvdGhlcndpc2UgcmV0dXJucyBmYWxz
ZS4KKworICAgIFxzYSBhdHRyaWJ1dGVOUygpLCBzZXRBdHRyaWJ1dGVOUygpCisqLworYm9vbCBR
V2ViRWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3QgUVN0cmluZyAmbmFtZXNwYWNlVXJpLCBj
b25zdCBRU3RyaW5nICZuYW1lKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+aGFzQXR0cmlidXRlTlMobmFt
ZXNwYWNlVXJpLCBuYW1lKTsKK30KKworLyohCisgICAgUmVtb3ZlcyB0aGUgYXR0cmlidXRlIHdp
dGggdGhlIGdpdmVuIFxhIG5hbWUgZnJvbSB0aGlzIGVsZW1lbnQuCisKKyAgICBcc2EgYXR0cmli
dXRlKCksIHNldEF0dHJpYnV0ZSgpLCBoYXNBdHRyaWJ1dGUoKQorKi8KK3ZvaWQgUVdlYkVsZW1l
bnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRU3RyaW5nICZuYW1lKQoreworICAgIGlmICghbV9l
bGVtZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUo
bmFtZSk7Cit9CisKKy8qIQorICAgIFJlbW92ZXMgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZl
biBcYSBuYW1lLCBpbiBcYSBuYW1lc3BhY2VVcmksIGZyb20gdGhpcworICAgIGVsZW1lbnQuCisK
KyAgICBcc2EgYXR0cmlidXRlTlMoKSwgc2V0QXR0cmlidXRlTlMoKSwgaGFzQXR0cmlidXRlTlMo
KQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFFTdHJpbmcg
Jm5hbWVzcGFjZVVyaSwgY29uc3QgUVN0cmluZyAmbmFtZSkKK3sKKyAgICBpZiAoIW1fZWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlTlMobmFt
ZXNwYWNlVXJpLCBuYW1lKTsKK30KKworLyohCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVt
ZW50IGhhcyBhbnkgYXR0cmlidXRlcyBkZWZpbmVkOyBvdGhlcndpc2UgcmV0dXJucworICAgIGZh
bHNlOworCisgICAgXHNhIGF0dHJpYnV0ZSgpLCBzZXRBdHRyaWJ1dGUoKQorKi8KK2Jvb2wgUVdl
YkVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+aGFzQXR0cmlidXRl
cygpOworfQorCisvKiEKKyAgICBSZXR1cm4gdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgdGhl
IG5hbWVzcGFjZSBnaXZlbiBhcyBcYSBuYW1lc3BhY2VVcmkuCisKKyAgICBcc2EgYXR0cmlidXRl
KCksIHNldEF0dHJpYnV0ZSgpCisqLworUVN0cmluZ0xpc3QgUVdlYkVsZW1lbnQ6OmF0dHJpYnV0
ZU5hbWVzKGNvbnN0IFFTdHJpbmcmIG5hbWVzcGFjZVVyaSkgY29uc3QKK3sKKyAgICBpZiAoIW1f
ZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmdMaXN0KCk7CisKKyAgICBRU3RyaW5nTGlz
dCBhdHRyaWJ1dGVOYW1lTGlzdDsKKyAgICBpZiAobV9lbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkp
IHsKKyAgICAgICAgY29uc3QgU3RyaW5nIG5hbWVzcGFjZVVyaVN0cmluZyhuYW1lc3BhY2VVcmkp
OyAvLyBjb252ZXJ0IFFTdHJpbmcgLT4gU3RyaW5nIG9uY2UKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgYXR0cnNDb3VudCA9IG1fZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJzQ291bnQ7ICsraSkgeworICAgICAgICAgICAgY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZUF0KGkpOworICAg
ICAgICAgICAgaWYgKG5hbWVzcGFjZVVyaVN0cmluZyA9PSBhdHRyaWJ1dGUubmFtZXNwYWNlVVJJ
KCkpCisgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZUxpc3QuYXBwZW5kKGF0dHJpYnV0ZS5s
b2NhbE5hbWUoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWVM
aXN0OworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1lbnQgaGFzIGtleWJv
YXJkIGlucHV0IGZvY3VzOyBvdGhlcndpc2UsIHJldHVybnMgZmFsc2UKKworICAgIFxzYSBzZXRG
b2N1cygpCisqLworYm9vbCBRV2ViRWxlbWVudDo6aGFzRm9jdXMoKSBjb25zdAoreworICAgIGlm
ICghbV9lbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZWxlbWVu
dCA9PSBtX2VsZW1lbnQtPmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKK30KKworLyohCisg
ICAgR2l2ZXMga2V5Ym9hcmQgaW5wdXQgZm9jdXMgdG8gdGhpcyBlbGVtZW50CisKKyAgICBcc2Eg
aGFzRm9jdXMoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnNldEZvY3VzKCkKK3sKKyAgICBpZiAo
IW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2VsZW1lbnQtPmlzRm9jdXNh
YmxlKCkpCisgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5zZXRGb2N1c2VkRWxlbWVudCht
X2VsZW1lbnQpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBnZW9tZXRyeSBvZiB0aGlzIGVs
ZW1lbnQsIHJlbGF0aXZlIHRvIGl0cyBjb250YWluaW5nIGZyYW1lLgorCisgICAgXHNhIHRhZ05h
bWUoKQorKi8KK1FSZWN0IFFXZWJFbGVtZW50OjpnZW9tZXRyeSgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybiBRUmVjdCgpOworICAgIHJldHVybiBtX2VsZW1l
bnQtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhl
IHRhZyBuYW1lIG9mIHRoaXMgZWxlbWVudC4KKworICAgIFxzYSBnZW9tZXRyeSgpCisqLworUVN0
cmluZyBRV2ViRWxlbWVudDo6dGFnTmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2VsZW1lbnQp
CisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+dGFnTmFt
ZSgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBuYW1lc3BhY2UgcHJlZml4IG9mIHRoZSBl
bGVtZW50LiBJZiB0aGUgZWxlbWVudCBoYXMgbm9cCisgICAgbmFtZXNwYWNlIHByZWZpeCwgZW1w
dHkgc3RyaW5nIGlzIHJldHVybmVkLgorKi8KK1FTdHJpbmcgUVdlYkVsZW1lbnQ6OnByZWZpeCgp
IGNvbnN0Cit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1fZWxlbWVudC0+cHJlZml4KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMg
dGhlIGxvY2FsIG5hbWUgb2YgdGhlIGVsZW1lbnQuIElmIHRoZSBlbGVtZW50IGRvZXMgbm90IHVz
ZQorICAgIG5hbWVzcGFjZXMsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KKyovCitRU3Ry
aW5nIFFXZWJFbGVtZW50Ojpsb2NhbE5hbWUoKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50
KQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIHJldHVybiBtX2VsZW1lbnQtPmxvY2Fs
TmFtZSgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBuYW1lc3BhY2UgVVJJIG9mIHRoaXMg
ZWxlbWVudC4gSWYgdGhlIGVsZW1lbnQgaGFzIG5vIG5hbWVzcGFjZQorICAgIFVSSSwgYW4gZW1w
dHkgc3RyaW5nIGlzIHJldHVybmVkLgorKi8KK1FTdHJpbmcgUVdlYkVsZW1lbnQ6Om5hbWVzcGFj
ZVVyaSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybiBRU3Ry
aW5nKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+bmFtZXNwYWNlVVJJKCk7Cit9CisKKy8qIQor
ICAgIFJldHVybnMgdGhlIHBhcmVudCBlbGVtZW50IG9mIHRoaXMgZWxlbWVuLiBJZiB0aGlzIGVs
ZW1lbnQgaXMgdGhlIHJvb3QKKyAgICBkb2N1bWVudCBlbGVtZW50LCBhIG51bGwgZWxlbWVudCBp
cyByZXR1cm5lZC4KKyovCitRV2ViRWxlbWVudCBRV2ViRWxlbWVudDo6cGFyZW50KCkgY29uc3QK
K3sKKyAgICBpZiAobV9lbGVtZW50KQorICAgICAgICByZXR1cm4gUVdlYkVsZW1lbnQobV9lbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpOworICAgIHJldHVybiBRV2ViRWxlbWVudCgpOworfQorCisv
KiEKKyAgICBSZXR1cm5zIHRoZSBlbGVtZW50J3MgZmlyc3QgY2hpbGQuCisKKyAgICBcc2EgbGFz
dENoaWxkKCksIHByZXZpb3VzU2libGluZygpLCBuZXh0U2libGluZygpCisqLworUVdlYkVsZW1l
bnQgUVdlYkVsZW1lbnQ6OmZpcnN0Q2hpbGQoKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50
KQorICAgICAgICByZXR1cm4gUVdlYkVsZW1lbnQoKTsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0g
bV9lbGVtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CisgICAgICAgIGlmICghY2hpbGQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBFbGVtZW50KiBlID0gdG9FbGVtZW50KGNoaWxkKTsKKyAgICAg
ICAgcmV0dXJuIFFXZWJFbGVtZW50KGUpOworICAgIH0KKyAgICByZXR1cm4gUVdlYkVsZW1lbnQo
KTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgZWxlbWVudCdzIGxhc3QgY2hpbGQuCisKKyAg
ICBcc2EgZmlyc3RDaGlsZCgpLCBwcmV2aW91c1NpYmxpbmcoKSwgbmV4dFNpYmxpbmcoKQorKi8K
K1FXZWJFbGVtZW50IFFXZWJFbGVtZW50OjpsYXN0Q2hpbGQoKSBjb25zdAoreworICAgIGlmICgh
bV9lbGVtZW50KQorICAgICAgICByZXR1cm4gUVdlYkVsZW1lbnQoKTsKKyAgICBmb3IgKE5vZGUq
IGNoaWxkID0gbV9lbGVtZW50LT5sYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnBy
ZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGlmICghY2hpbGQtPmlzRWxlbWVudE5vZGUoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBFbGVtZW50KiBlID0gdG9FbGVtZW50KGNo
aWxkKTsKKyAgICAgICAgcmV0dXJuIFFXZWJFbGVtZW50KGUpOworICAgIH0KKyAgICByZXR1cm4g
UVdlYkVsZW1lbnQoKTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgZWxlbWVudCdzIG5leHQg
c2libGluZy4KKworICAgIFxzYSBmaXJzdENoaWxkKCksIHByZXZpb3VzU2libGluZygpLCBsYXN0
Q2hpbGQoKQorKi8KK1FXZWJFbGVtZW50IFFXZWJFbGVtZW50OjpuZXh0U2libGluZygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybiBRV2ViRWxlbWVudCgpOwor
ICAgIGZvciAoTm9kZSogc2liID0gbV9lbGVtZW50LT5uZXh0U2libGluZygpOyBzaWI7IHNpYiA9
IHNpYi0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIXNpYi0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEVsZW1lbnQqIGUgPSB0b0VsZW1lbnQo
c2liKTsKKyAgICAgICAgcmV0dXJuIFFXZWJFbGVtZW50KGUpOworICAgIH0KKyAgICByZXR1cm4g
UVdlYkVsZW1lbnQoKTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgZWxlbWVudCdzIHByZXZp
b3VzIHNpYmxpbmcuCisKKyAgICBcc2EgZmlyc3RDaGlsZCgpLCBuZXh0U2libGluZygpLCBsYXN0
Q2hpbGQoKQorKi8KK1FXZWJFbGVtZW50IFFXZWJFbGVtZW50OjpwcmV2aW91c1NpYmxpbmcoKSBj
b25zdAoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1cm4gUVdlYkVsZW1lbnQo
KTsKKyAgICBmb3IgKE5vZGUqIHNpYiA9IG1fZWxlbWVudC0+cHJldmlvdXNTaWJsaW5nKCk7IHNp
Yjsgc2liID0gc2liLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoIXNpYi0+aXNF
bGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEVsZW1lbnQqIGUg
PSB0b0VsZW1lbnQoc2liKTsKKyAgICAgICAgcmV0dXJuIFFXZWJFbGVtZW50KGUpOworICAgIH0K
KyAgICByZXR1cm4gUVdlYkVsZW1lbnQoKTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgZG9j
dW1lbnQgd2hpY2ggdGhpcyBlbGVtZW50IGJlbG9uZ3MgdG8uCisqLworUVdlYkVsZW1lbnQgUVdl
YkVsZW1lbnQ6OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuIFFXZWJFbGVtZW50KCk7CisgICAgcmV0dXJuIFFXZWJFbGVtZW50KG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSk7Cit9CisKKy8qIQorICAgIFJldHVybnMg
dGhlIHdlYiBmcmFtZSB3aGljaCB0aGlzIGVsZW1lbnQgaXMgYSBwYXJ0IG9mLiBJZiB0aGUgZWxl
bWVudCBpcyBhCisgICAgbnVsbCBlbGVtZW50LCBudWxsIGlzIHJldHVybmVkLgorKi8KK1FXZWJG
cmFtZSAqUVdlYkVsZW1lbnQ6OndlYkZyYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2VsZW1lbnQtPmRv
Y3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBRV2ViRnJhbWVBZGFwdGVyKiBmcmFtZUFkYXB0ZXIgPSBRV2ViRnJhbWVBZGFwdGVyOjpraXQo
ZnJhbWUpOworICAgIHJldHVybiBmcmFtZUFkYXB0ZXItPmFwaUhhbmRsZSgpOworfQorCitzdGF0
aWMgYm9vbCBzZXR1cFNjcmlwdENvbnRleHQoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCwgU2Ny
aXB0U3RhdGUqJiBzdGF0ZSkKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0ZSA9IGZy
YW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9i
YWxFeGVjKCk7CisgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8qIQorICAgIEV4ZWN1dGVzIFxhIHNjcmlwdFNvdXJjZSB3aXRo
IHRoaXMgZWxlbWVudCBhcyBcYyB0aGlzIG9iamVjdC4KKyovCitRVmFyaWFudCBRV2ViRWxlbWVu
dDo6ZXZhbHVhdGVKYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdFNvdXJjZSkKK3sKKyAg
ICBpZiAoc2NyaXB0U291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7
CisKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSAwOworCisgICAgaWYgKCFzZXR1cFNjcmlwdENv
bnRleHQobV9lbGVtZW50LCBzdGF0ZSkpCisgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworCisg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzdGF0ZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHBy
b3RlY3QgPSBtX2VsZW1lbnQ7CisKKyAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gdG9KUyhz
dGF0ZSwgdG9KU0RPTUdsb2JhbE9iamVjdCgmbV9lbGVtZW50LT5kb2N1bWVudCgpLCBzdGF0ZSks
IG1fZWxlbWVudCk7CisgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgIHJldHVybiBRVmFyaWFu
dCgpOworCisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdFNvdXJjZSk7CisK
KyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKKyAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGlvblJlc3VsdCA9IEpTQzo6ZXZhbHVhdGUoc3RhdGUsIHNvdXJjZUNvZGUuanNTb3Vy
Y2VDb2RlKCksIHRoaXNWYWx1ZSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIGlmIChldmFs
dWF0aW9uRXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyAgICBKU1ZhbHVl
UmVmIGV2YWx1YXRpb25SZXN1bHRSZWYgPSB0b1JlZihzdGF0ZSwgZXZhbHVhdGlvblJlc3VsdCk7
CisKKyAgICBpbnQgZGlzdGFuY2UgPSAwOworICAgIEpTVmFsdWVSZWYqIGlnbm9yZWRFeGNlcHRp
b24gPSAwOworICAgIHJldHVybiBKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFsdWVUb1FWYXJpYW50
KHRvUmVmKHN0YXRlKSwgZXZhbHVhdGlvblJlc3VsdFJlZiwgUU1ldGFUeXBlOjpWb2lkLCAmZGlz
dGFuY2UsIGlnbm9yZWRFeGNlcHRpb24pOworfQorCisvKiEKKyAgICBcZW51bSBRV2ViRWxlbWVu
dDo6U3R5bGVSZXNvbHZlU3RyYXRlZ3kKKworICAgIFRoaXMgZW51bSBkZXNjcmliZXMgaG93IFFX
ZWJFbGVtZW50J3Mgc3R5bGVQcm9wZXJ0eSByZXNvbHZlcyB0aGUgZ2l2ZW4KKyAgICBwcm9wZXJ0
eSBuYW1lLgorCisgICAgXHZhbHVlIElubGluZVN0eWxlIFJldHVybiB0aGUgcHJvcGVydHkgdmFs
dWUgYXMgaXQgaXMgZGVmaW5lZCBpbgorICAgICAgICAgICB0aGUgZWxlbWVudCwgd2l0aG91dCBy
ZXNwZWN0aW5nIHN0eWxlIGluaGVyaXRhbmNlIGFuZCBvdGhlciBDU1MKKyAgICAgICAgICAgcnVs
ZXMuCisgICAgXHZhbHVlIENhc2NhZGVkU3R5bGUgVGhlIHByb3BlcnR5J3MgdmFsdWUgaXMgZGV0
ZXJtaW5lZCB1c2luZyB0aGUKKyAgICAgICAgICAgaW5oZXJpdGFuY2UgYW5kIGltcG9ydGFuY2Ug
cnVsZXMgZGVmaW5lZCBpbiB0aGUgZG9jdW1lbnQncworICAgICAgICAgICBzdHlsZXNoZWV0Lgor
ICAgIFx2YWx1ZSBDb21wdXRlZFN0eWxlIFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlzIHRoZSBhYnNv
bHV0ZSB2YWx1ZQorICAgICAgICAgICBvZiB0aGUgc3R5bGUgcHJvcGVydHkgcmVzb2x2ZWQgZnJv
bSB0aGUgZW52aXJvbm1lbnQuCisqLworCisvKiEKKyAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0
aGUgc3R5bGUgd2l0aCB0aGUgZ2l2ZW4gXGEgbmFtZSB1c2luZyB0aGUgc3BlY2lmaWVkCisgICAg
XGEgc3RyYXRlZ3kuIElmIGEgc3R5bGUgd2l0aCBcYSBuYW1lIGRvZXMgbm90IGV4aXN0LCBhbiBl
bXB0eSBzdHJpbmcgaXMKKyAgICByZXR1cm5lZC4KKworICAgIEluIENTUywgdGhlIGNhc2NhZGlu
ZyBwYXJ0IGRlcGVuZHMgb24gd2hpY2ggQ1NTIHJ1bGUgaGFzIHByaW9yaXR5IGFuZCBpcworICAg
IHRodXMgYXBwbGllZC4gR2VuZXJhbGx5LCB0aGUgbGFzdCBkZWZpbmVkIHJ1bGUgaGFzIHByaW9y
aXR5LiBUaHVzLCBhbgorICAgIGlubGluZSBzdHlsZSBydWxlIGhhcyBwcmlvcml0eSBvdmVyIGFu
IGVtYmVkZGVkIGJsb2NrIHN0eWxlIHJ1bGUsIHdoaWNoCisgICAgaW4gcmV0dXJuIGhhcyBwcmlv
cml0eSBvdmVyIGFuIGV4dGVybmFsIHN0eWxlIHJ1bGUuCisKKyAgICBJZiB0aGUgIiFpbXBvcnRh
bnQiIGRlY2xhcmF0aW9uIGlzIHNldCBvbiBvbmUgb2YgdGhvc2UsIHRoZSBkZWNsYXJhdGlvbgor
ICAgIHJlY2VpdmVzIGhpZ2hlc3QgcHJpb3JpdHksIHVubGVzcyBvdGhlciBkZWNsYXJhdGlvbnMg
YWxzbyB1c2UgdGhlCisgICAgIiFpbXBvcnRhbnQiIGRlY2xhcmF0aW9uLiBUaGVuLCB0aGUgbGFz
dCAiIWltcG9ydGFudCIgZGVjbGFyYXRpb24gdGFrZXMKKyAgICBwcmVkZWNlbmNlLgorCisgICAg
XHNhIHNldFN0eWxlUHJvcGVydHkoKQorKi8KKworUVN0cmluZyBRV2ViRWxlbWVudDo6c3R5bGVQ
cm9wZXJ0eShjb25zdCBRU3RyaW5nICZuYW1lLCBTdHlsZVJlc29sdmVTdHJhdGVneSBzdHJhdGVn
eSkgY29uc3QKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc1N0eWxlZEVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKworICAgIENTU1Byb3BlcnR5SUQg
cHJvcElEID0gY3NzUHJvcGVydHlJRChuYW1lKTsKKworICAgIGlmICghcHJvcElEKQorICAgICAg
ICByZXR1cm4gUVN0cmluZygpOworCisgICAgaWYgKHN0cmF0ZWd5ID09IElubGluZVN0eWxlKSB7
CisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlID0gc3RhdGljX2Nhc3Q8U3R5
bGVkRWxlbWVudCo+KG1fZWxlbWVudCktPmlubGluZVN0eWxlKCk7CisgICAgICAgIGlmICghc3R5
bGUpCisgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgICAgICByZXR1cm4gc3R5bGUt
PmdldFByb3BlcnR5VmFsdWUocHJvcElEKTsKKyAgICB9CisKKyAgICBpZiAoc3RyYXRlZ3kgPT0g
Q2FzY2FkZWRTdHlsZSkgeworICAgICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSA9
IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihtX2VsZW1lbnQpLT5pbmxpbmVTdHlsZSgpOwor
ICAgICAgICBpZiAoc3R5bGUgJiYgc3R5bGUtPnByb3BlcnR5SXNJbXBvcnRhbnQocHJvcElEKSkK
KyAgICAgICAgICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wSUQpOworCisg
ICAgICAgIC8vIFdlIGFyZSBnb2luZyB0byByZXNvbHZlIHRoZSBzdHlsZSBwcm9wZXJ0eSBieSB3
YWxraW5nIHRocm91Z2ggdGhlCisgICAgICAgIC8vIGxpc3Qgb2Ygbm9uLWlubGluZSBtYXRjaGVk
IENTUyBydWxlcyBmb3IgdGhlIGVsZW1lbnQsIGxvb2tpbmcgZm9yCisgICAgICAgIC8vIHRoZSBo
aWdoZXN0IHByaW9yaXR5IGRlZmluaXRpb24uCisKKyAgICAgICAgLy8gR2V0IGFuIGFycmF5IG9m
IG1hdGNoZWQgQ1NTIHJ1bGVzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudCBzb3J0ZWQKKyAgICAgICAg
Ly8gYnkgaW1wb3J0YW5jZSBhbmQgaW5oZXJpdGFuY2Ugb3JkZXIuIFRoaXMgaW5jbHVkZSBleHRl
cm5hbCBDU1MKKyAgICAgICAgLy8gZGVjbGFyYXRpb25zLCBhcyB3ZWxsIGFzIGVtYmVkZGVkIGFu
ZCBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb25zLgorCisgICAgICAgIERvY3VtZW50JiBkb2N1bWVu
dCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPiA+IHJ1bGVzID0gZG9jdW1lbnQuZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxlUnVs
ZXNGb3JFbGVtZW50KG1fZWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QXV0aG9yQ1NTUnVsZXMgfCBT
dHlsZVJlc29sdmVyOjpDcm9zc09yaWdpbkNTU1J1bGVzKTsKKyAgICAgICAgZm9yIChpbnQgaSA9
IHJ1bGVzLnNpemUoKTsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgaWYgKCFydWxlc1tpIC0g
MV0tPmlzU3R5bGVSdWxlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBTdHlsZVJ1bGUqIHN0eWxlUnVsZSA9IHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KHJ1bGVzW2kg
LSAxXS5nZXQoKSk7CisKKyAgICAgICAgICAgIGlmIChzdHlsZVJ1bGUtPnByb3BlcnRpZXMoKS5w
cm9wZXJ0eUlzSW1wb3J0YW50KHByb3BJRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxl
UnVsZS0+cHJvcGVydGllcygpLmdldFByb3BlcnR5VmFsdWUocHJvcElEKTsKKworICAgICAgICAg
ICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wSUQpLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBzdHlsZSA9ICZzdHlsZVJ1bGUtPnByb3BlcnRpZXMoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghc3R5bGUpCisgICAgICAgICAgICByZXR1cm4gUVN0cmlu
ZygpOworICAgICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5VmFsdWUocHJvcElEKTsKKyAg
ICB9CisKKyAgICBpZiAoc3RyYXRlZ3kgPT0gQ29tcHV0ZWRTdHlsZSkgeworICAgICAgICBpZiAo
IW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKKyAgICAgICAgICAg
IHJldHVybiBRU3RyaW5nKCk7CisKKyAgICAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShtX2Vs
ZW1lbnQsIHRydWUpOworICAgICAgICBpZiAoIXByb3BJRCB8fCAhc3R5bGUpCisgICAgICAgICAg
ICByZXR1cm4gUVN0cmluZygpOworCisgICAgICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlW
YWx1ZShwcm9wSUQpOworICAgIH0KKworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKKy8qIQor
ICAgIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBpbmxpbmUgc3R5bGUgd2l0aCB0aGUgZ2l2ZW4gXGEg
bmFtZSB0byBcYSB2YWx1ZS4KKworICAgIFNldHRpbmcgYSB2YWx1ZSwgZG9lcyBub3QgbmVjZXNz
YXJpbHkgbWVhbiB0aGF0IGl0IHdpbGwgYmVjb21lIHRoZSBhcHBsaWVkCisgICAgdmFsdWUsIGR1
ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSBzdHlsZSBwcm9wZXJ0eSdzIHZhbHVlIG1pZ2h0IGhhdmUg
YmVlbiBzZXQKKyAgICBlYXJsaWVyIHdpdGggYSBoaWdoZXIgcHJpb3JpdHkgaW4gZXh0ZXJuYWwg
b3IgZW1iZWRkZWQgc3R5bGUgZGVjbGFyYXRpb25zLgorCisgICAgSW4gb3JkZXIgdG8gZW5zdXJl
IHRoYXQgdGhlIHZhbHVlIHdpbGwgYmUgYXBwbGllZCwgeW91IG1heSBoYXZlIHRvIGFwcGVuZAor
ICAgICIhaW1wb3J0YW50IiB0byB0aGUgdmFsdWUuCisqLwordm9pZCBRV2ViRWxlbWVudDo6c2V0
U3R5bGVQcm9wZXJ0eShjb25zdCBRU3RyaW5nICZuYW1lLCBjb25zdCBRU3RyaW5nICZ2YWx1ZSkK
K3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG8gdGhlIHBhcnNpbmcgb2YgdGhlIHRva2VuIG1h
bnVhbGx5IHNpbmNlIFdlYkNvcmUgaXNuJ3QgZG9pbmcgdGhpcyBmb3IgdXMgYW55bW9yZS4KKyAg
ICBjb25zdCBRTGF0aW4xU3RyaW5nIGltcG9ydGFudFRva2VuKCIhaW1wb3J0YW50Iik7CisgICAg
UVN0cmluZyBhZGp1c3RlZFZhbHVlKHZhbHVlKTsKKyAgICBib29sIGltcG9ydGFudCA9IGZhbHNl
OworICAgIGlmIChhZGp1c3RlZFZhbHVlLmNvbnRhaW5zKGltcG9ydGFudFRva2VuKSkgeworICAg
ICAgICBpbXBvcnRhbnQgPSB0cnVlOworICAgICAgICBhZGp1c3RlZFZhbHVlLnJlbW92ZShpbXBv
cnRhbnRUb2tlbik7CisgICAgICAgIGFkanVzdGVkVmFsdWUgPSBhZGp1c3RlZFZhbHVlLnRyaW1t
ZWQoKTsKKyAgICB9CisKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BJRCA9IGNzc1Byb3BlcnR5SUQo
bmFtZSk7CisgICAgc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG1fZWxlbWVudCktPnNldElu
bGluZVN0eWxlUHJvcGVydHkocHJvcElELCBhZGp1c3RlZFZhbHVlLCBpbXBvcnRhbnQpOworfQor
CisvKiEKKyAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIGNsYXNzZXMgb2YgdGhpcyBlbGVtZW50Lgor
Ki8KK1FTdHJpbmdMaXN0IFFXZWJFbGVtZW50OjpjbGFzc2VzKCkgY29uc3QKK3sKKyAgICBpZiAo
IWhhc0F0dHJpYnV0ZShRTGF0aW4xU3RyaW5nKCJjbGFzcyIpKSkKKyAgICAgICAgcmV0dXJuIFFT
dHJpbmdMaXN0KCk7CisKKyAgICBRU3RyaW5nTGlzdCBjbGFzc2VzID0gIGF0dHJpYnV0ZShRTGF0
aW4xU3RyaW5nKCJjbGFzcyIpKS5zaW1wbGlmaWVkKCkuc3BsaXQoUUxhdGluMUNoYXIoJyAnKSwg
UVN0cmluZzo6U2tpcEVtcHR5UGFydHMpOworICAgIGNsYXNzZXMucmVtb3ZlRHVwbGljYXRlcygp
OworICAgIHJldHVybiBjbGFzc2VzOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhp
cyBlbGVtZW50IGhhcyBhIGNsYXNzIHdpdGggdGhlIGdpdmVuIFxhIG5hbWU7IG90aGVyd2lzZQor
ICAgIHJldHVybnMgZmFsc2UuCisqLworYm9vbCBRV2ViRWxlbWVudDo6aGFzQ2xhc3MoY29uc3Qg
UVN0cmluZyAmbmFtZSkgY29uc3QKK3sKKyAgICBRU3RyaW5nTGlzdCBsaXN0ID0gY2xhc3Nlcygp
OworICAgIHJldHVybiBsaXN0LmNvbnRhaW5zKG5hbWUpOworfQorCisvKiEKKyAgICBBZGRzIHRo
ZSBzcGVjaWZpZWQgY2xhc3Mgd2l0aCB0aGUgZ2l2ZW4gXGEgbmFtZSB0byB0aGUgZWxlbWVudC4K
KyovCit2b2lkIFFXZWJFbGVtZW50OjphZGRDbGFzcyhjb25zdCBRU3RyaW5nICZuYW1lKQorewor
ICAgIFFTdHJpbmdMaXN0IGxpc3QgPSBjbGFzc2VzKCk7CisgICAgaWYgKCFsaXN0LmNvbnRhaW5z
KG5hbWUpKSB7CisgICAgICAgIGxpc3QuYXBwZW5kKG5hbWUpOworICAgICAgICBRU3RyaW5nIHZh
bHVlID0gbGlzdC5qb2luKFFMYXRpbjFTdHJpbmcoIiAiKSk7CisgICAgICAgIHNldEF0dHJpYnV0
ZShRTGF0aW4xU3RyaW5nKCJjbGFzcyIpLCB2YWx1ZSk7CisgICAgfQorfQorCisvKiEKKyAgICBS
ZW1vdmVzIHRoZSBzcGVjaWZpZWQgY2xhc3Mgd2l0aCB0aGUgZ2l2ZW4gXGEgbmFtZSBmcm9tIHRo
ZSBlbGVtZW50LgorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnJlbW92ZUNsYXNzKGNvbnN0IFFTdHJp
bmcgJm5hbWUpCit7CisgICAgUVN0cmluZ0xpc3QgbGlzdCA9IGNsYXNzZXMoKTsKKyAgICBpZiAo
bGlzdC5jb250YWlucyhuYW1lKSkgeworICAgICAgICBsaXN0LnJlbW92ZUFsbChuYW1lKTsKKyAg
ICAgICAgUVN0cmluZyB2YWx1ZSA9IGxpc3Quam9pbihRTGF0aW4xU3RyaW5nKCIgIikpOworICAg
ICAgICBzZXRBdHRyaWJ1dGUoUUxhdGluMVN0cmluZygiY2xhc3MiKSwgdmFsdWUpOworICAgIH0K
K30KKworLyohCisgICAgQWRkcyB0aGUgc3BlY2lmaWVkIGNsYXNzIHdpdGggdGhlIGdpdmVuIFxh
IG5hbWUgaWYgaXQgaXMgbm90IHByZXNlbnQuIElmCisgICAgdGhlIGNsYXNzIGlzIGFscmVhZHkg
cHJlc2VudCwgaXQgd2lsbCBiZSByZW1vdmVkLgorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnRvZ2ds
ZUNsYXNzKGNvbnN0IFFTdHJpbmcgJm5hbWUpCit7CisgICAgUVN0cmluZ0xpc3QgbGlzdCA9IGNs
YXNzZXMoKTsKKyAgICBpZiAobGlzdC5jb250YWlucyhuYW1lKSkKKyAgICAgICAgbGlzdC5yZW1v
dmVBbGwobmFtZSk7CisgICAgZWxzZQorICAgICAgICBsaXN0LmFwcGVuZChuYW1lKTsKKworICAg
IFFTdHJpbmcgdmFsdWUgPSBsaXN0LmpvaW4oUUxhdGluMVN0cmluZygiICIpKTsKKyAgICBzZXRB
dHRyaWJ1dGUoUUxhdGluMVN0cmluZygiY2xhc3MiKSwgdmFsdWUpOworfQorCisvKiEKKyAgICBB
cHBlbmRzIHRoZSBnaXZlbiBcYSBlbGVtZW50IGFzIHRoZSBlbGVtZW50J3MgbGFzdCBjaGlsZC4K
KworICAgIElmIFxhIGVsZW1lbnQgaXMgdGhlIGNoaWxkIG9mIGFub3RoZXIgZWxlbWVudCwgaXQg
aXMgcmUtcGFyZW50ZWQgdG8gdGhpcworICAgIGVsZW1lbnQuIElmIFxhIGVsZW1lbnQgaXMgYSBj
aGlsZCBvZiB0aGlzIGVsZW1lbnQsIHRoZW4gaXRzIHBvc2l0aW9uIGluCisgICAgdGhlIGxpc3Qg
b2YgY2hpbGRyZW4gaXMgY2hhbmdlZC4KKworICAgIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBvbiBh
IG51bGwgZWxlbWVudCBkb2VzIG5vdGhpbmcuCisKKyAgICBcc2EgcHJlcGVuZEluc2lkZSgpLCBw
cmVwZW5kT3V0c2lkZSgpLCBhcHBlbmRPdXRzaWRlKCkKKyovCit2b2lkIFFXZWJFbGVtZW50Ojph
cHBlbmRJbnNpZGUoY29uc3QgUVdlYkVsZW1lbnQgJmVsZW1lbnQpCit7CisgICAgaWYgKCFtX2Vs
ZW1lbnQgfHwgZWxlbWVudC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0
aW9uQ29kZSBleGNlcHRpb24gPSAwOworICAgIG1fZWxlbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVu
dC5tX2VsZW1lbnQsIGV4Y2VwdGlvbik7Cit9CisKKy8qIQorICAgIEFwcGVuZHMgdGhlIHJlc3Vs
dCBvZiBwYXJzaW5nIFxhIG1hcmt1cCBhcyB0aGUgZWxlbWVudCdzIGxhc3QgY2hpbGQuCisKKyAg
ICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gb24gYSBudWxsIGVsZW1lbnQgZG9lcyBub3RoaW5nLgor
CisgICAgXHNhIHByZXBlbmRJbnNpZGUoKSwgcHJlcGVuZE91dHNpZGUoKSwgYXBwZW5kT3V0c2lk
ZSgpCisqLwordm9pZCBRV2ViRWxlbWVudDo6YXBwZW5kSW5zaWRlKGNvbnN0IFFTdHJpbmcgJm1h
cmt1cCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhj
ZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9ICBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobWFya3VwLCB0b0hUTUxFbGVtZW50
KG1fZWxlbWVudCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZXhjZXB0aW9uKTsKKworICAgIG1f
ZWxlbWVudC0+YXBwZW5kQ2hpbGQoZnJhZ21lbnQsIGV4Y2VwdGlvbik7Cit9CisKKy8qIQorICAg
IFByZXBlbmRzIFxhIGVsZW1lbnQgYXMgdGhlIGVsZW1lbnQncyBmaXJzdCBjaGlsZC4KKworICAg
IElmIFxhIGVsZW1lbnQgaXMgdGhlIGNoaWxkIG9mIGFub3RoZXIgZWxlbWVudCwgaXQgaXMgcmUt
cGFyZW50ZWQgdG8gdGhpcworICAgIGVsZW1lbnQuIElmIFxhIGVsZW1lbnQgaXMgYSBjaGlsZCBv
ZiB0aGlzIGVsZW1lbnQsIHRoZW4gaXRzIHBvc2l0aW9uIGluCisgICAgdGhlIGxpc3Qgb2YgY2hp
bGRyZW4gaXMgY2hhbmdlZC4KKworICAgIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBvbiBhIG51bGwg
ZWxlbWVudCBkb2VzIG5vdGhpbmcuCisKKyAgICBcc2EgYXBwZW5kSW5zaWRlKCksIHByZXBlbmRP
dXRzaWRlKCksIGFwcGVuZE91dHNpZGUoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnByZXBlbmRJ
bnNpZGUoY29uc3QgUVdlYkVsZW1lbnQgJmVsZW1lbnQpCit7CisgICAgaWYgKCFtX2VsZW1lbnQg
fHwgZWxlbWVudC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29k
ZSBleGNlcHRpb24gPSAwOworCisgICAgaWYgKG1fZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKQor
ICAgICAgICBtX2VsZW1lbnQtPmluc2VydEJlZm9yZShlbGVtZW50Lm1fZWxlbWVudCwgbV9lbGVt
ZW50LT5maXJzdENoaWxkKCksIGV4Y2VwdGlvbik7CisgICAgZWxzZQorICAgICAgICBtX2VsZW1l
bnQtPmFwcGVuZENoaWxkKGVsZW1lbnQubV9lbGVtZW50LCBleGNlcHRpb24pOworfQorCisvKiEK
KyAgICBQcmVwZW5kcyB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgXGEgbWFya3VwIGFzIHRoZSBlbGVt
ZW50J3MgZmlyc3QgY2hpbGQuCisKKyAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gb24gYSBudWxs
IGVsZW1lbnQgZG9lcyBub3RoaW5nLgorCisgICAgXHNhIGFwcGVuZEluc2lkZSgpLCBwcmVwZW5k
T3V0c2lkZSgpLCBhcHBlbmRPdXRzaWRlKCkKKyovCit2b2lkIFFXZWJFbGVtZW50OjpwcmVwZW5k
SW5zaWRlKGNvbnN0IFFTdHJpbmcgJm1hcmt1cCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2VsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOworICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9ICBjcmVhdGVDb250ZXh0dWFsRnJhZ21l
bnQobWFya3VwLCB0b0hUTUxFbGVtZW50KG1fZWxlbWVudCksIEFsbG93U2NyaXB0aW5nQ29udGVu
dCwgZXhjZXB0aW9uKTsKKworICAgIGlmIChtX2VsZW1lbnQtPmhhc0NoaWxkTm9kZXMoKSkKKyAg
ICAgICAgbV9lbGVtZW50LT5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIG1fZWxlbWVudC0+Zmlyc3RD
aGlsZCgpLCBleGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9lbGVtZW50LT5hcHBlbmRD
aGlsZChmcmFnbWVudCwgZXhjZXB0aW9uKTsKK30KKworCisvKiEKKyAgICBJbnNlcnRzIHRoZSBn
aXZlbiBcYSBlbGVtZW50IGJlZm9yZSB0aGlzIGVsZW1lbnQuCisKKyAgICBJZiBcYSBlbGVtZW50
IGlzIHRoZSBjaGlsZCBvZiBhbm90aGVyIGVsZW1lbnQsIGl0IGlzIHJlLXBhcmVudGVkIHRvIHRo
ZQorICAgIHBhcmVudCBvZiB0aGlzIGVsZW1lbnQuCisKKyAgICBDYWxsaW5nIHRoaXMgZnVuY3Rp
b24gb24gYSBudWxsIGVsZW1lbnQgZG9lcyBub3RoaW5nLgorCisgICAgXHNhIGFwcGVuZEluc2lk
ZSgpLCBwcmVwZW5kSW5zaWRlKCksIGFwcGVuZE91dHNpZGUoKQorKi8KK3ZvaWQgUVdlYkVsZW1l
bnQ6OnByZXBlbmRPdXRzaWRlKGNvbnN0IFFXZWJFbGVtZW50ICZlbGVtZW50KQoreworICAgIGlm
ICghbV9lbGVtZW50IHx8IGVsZW1lbnQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghbV9lbGVtZW50LT5wYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4
Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBtX2VsZW1lbnQtPnBhcmVudE5vZGUoKS0+
aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBtX2VsZW1lbnQsIGV4Y2VwdGlvbik7Cit9
CisKKy8qIQorICAgIEluc2VydHMgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIFxhIG1hcmt1cCBiZWZv
cmUgdGhpcyBlbGVtZW50LgorCisgICAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIG9uIGEgbnVsbCBl
bGVtZW50IGRvZXMgbm90aGluZy4KKworICAgIFxzYSBhcHBlbmRJbnNpZGUoKSwgcHJlcGVuZElu
c2lkZSgpLCBhcHBlbmRPdXRzaWRlKCkKKyovCit2b2lkIFFXZWJFbGVtZW50OjpwcmVwZW5kT3V0
c2lkZShjb25zdCBRU3RyaW5nICZtYXJrdXApCit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5vZGUqIHBhcmVudCA9IG1fZWxlbWVudC0+cGFyZW50Tm9kZSgp
OworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXBhcmVudC0+
aXNIVE1MRWxlbWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGNlcHRpb25Db2RlIGV4
Y2VwdGlvbiA9IDA7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3Jl
YXRlQ29udGV4dHVhbEZyYWdtZW50KG1hcmt1cCwgdG9IVE1MRWxlbWVudChwYXJlbnQpLCBBbGxv
d1NjcmlwdGluZ0NvbnRlbnQsIGV4Y2VwdGlvbik7CisKKyAgICBwYXJlbnQtPmluc2VydEJlZm9y
ZShmcmFnbWVudCwgbV9lbGVtZW50LCBleGNlcHRpb24pOworfQorCisvKiEKKyAgICBJbnNlcnRz
IHRoZSBnaXZlbiBcYSBlbGVtZW50IGFmdGVyIHRoaXMgZWxlbWVudC4KKworICAgIElmIFxhIGVs
ZW1lbnQgaXMgdGhlIGNoaWxkIG9mIGFub3RoZXIgZWxlbWVudCwgaXQgaXMgcmUtcGFyZW50ZWQg
dG8gdGhlCisgICAgcGFyZW50IG9mIHRoaXMgZWxlbWVudC4KKworICAgIENhbGxpbmcgdGhpcyBm
dW5jdGlvbiBvbiBhIG51bGwgZWxlbWVudCBkb2VzIG5vdGhpbmcuCisKKyAgICBcc2EgYXBwZW5k
SW5zaWRlKCksIHByZXBlbmRJbnNpZGUoKSwgcHJlcGVuZE91dHNpZGUoKQorKi8KK3ZvaWQgUVdl
YkVsZW1lbnQ6OmFwcGVuZE91dHNpZGUoY29uc3QgUVdlYkVsZW1lbnQgJmVsZW1lbnQpCit7Cisg
ICAgaWYgKCFtX2VsZW1lbnQgfHwgZWxlbWVudC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFtX2VsZW1lbnQtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOworICAgIGlmICghbV9lbGVtZW50LT5uZXh0
U2libGluZygpKQorICAgICAgICBtX2VsZW1lbnQtPnBhcmVudE5vZGUoKS0+YXBwZW5kQ2hpbGQo
ZWxlbWVudC5tX2VsZW1lbnQsIGV4Y2VwdGlvbik7CisgICAgZWxzZQorICAgICAgICBtX2VsZW1l
bnQtPnBhcmVudE5vZGUoKS0+aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBtX2VsZW1l
bnQtPm5leHRTaWJsaW5nKCksIGV4Y2VwdGlvbik7Cit9CisKKy8qIQorICAgIEluc2VydHMgdGhl
IHJlc3VsdCBvZiBwYXJzaW5nIFxhIG1hcmt1cCBhZnRlciB0aGlzIGVsZW1lbnQuCisKKyAgICBD
YWxsaW5nIHRoaXMgZnVuY3Rpb24gb24gYSBudWxsIGVsZW1lbnQgZG9lcyBub3RoaW5nLgorCisg
ICAgXHNhIGFwcGVuZEluc2lkZSgpLCBwcmVwZW5kSW5zaWRlKCksIHByZXBlbmRPdXRzaWRlKCkK
KyovCit2b2lkIFFXZWJFbGVtZW50OjphcHBlbmRPdXRzaWRlKGNvbnN0IFFTdHJpbmcgJm1hcmt1
cCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZSog
cGFyZW50ID0gbV9lbGVtZW50LT5wYXJlbnROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghcGFyZW50LT5pc0hUTUxFbGVtZW50KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQobWFy
a3VwLCB0b0hUTUxFbGVtZW50KHBhcmVudCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZXhjZXB0
aW9uKTsKKworICAgIGlmICghbV9lbGVtZW50LT5uZXh0U2libGluZygpKQorICAgICAgICBwYXJl
bnQtPmFwcGVuZENoaWxkKGZyYWdtZW50LCBleGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAg
cGFyZW50LT5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIG1fZWxlbWVudC0+bmV4dFNpYmxpbmcoKSwg
ZXhjZXB0aW9uKTsKK30KKworLyohCisgICAgUmV0dXJucyBhIGNsb25lIG9mIHRoaXMgZWxlbWVu
dC4KKworICAgIFRoZSBjbG9uZSBtYXkgYmUgaW5zZXJ0ZWQgYXQgYW55IHBvaW50IGluIHRoZSBk
b2N1bWVudC4KKworICAgIFxzYSBhcHBlbmRJbnNpZGUoKSwgcHJlcGVuZEluc2lkZSgpLCBwcmVw
ZW5kT3V0c2lkZSgpLCBhcHBlbmRPdXRzaWRlKCkKKyovCitRV2ViRWxlbWVudCBRV2ViRWxlbWVu
dDo6Y2xvbmUoKSBjb25zdAoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1cm4g
UVdlYkVsZW1lbnQoKTsKKworICAgIHJldHVybiBRV2ViRWxlbWVudChtX2VsZW1lbnQtPmNsb25l
RWxlbWVudFdpdGhDaGlsZHJlbigpLmdldCgpKTsKK30KKworLyohCisgICAgUmVtb3ZlcyB0aGlz
IGVsZW1lbnQgZnJvbSB0aGUgZG9jdW1lbnQgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8gaXQu
CisKKyAgICBUaGUgZWxlbWVudCBpcyBzdGlsbCB2YWxpZCBhZnRlciByZW1vdmFsLCBhbmQgY2Fu
IGJlIGluc2VydGVkIGludG8gb3RoZXIKKyAgICBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQuCisKKyAg
ICBcc2EgcmVtb3ZlQWxsQ2hpbGRyZW4oKSwgcmVtb3ZlRnJvbURvY3VtZW50KCkKKyovCitRV2Vi
RWxlbWVudCAmUVdlYkVsZW1lbnQ6OnRha2VGcm9tRG9jdW1lbnQoKQoreworICAgIGlmICghbV9l
bGVtZW50KQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2Vw
dGlvbiA9IDA7CisgICAgbV9lbGVtZW50LT5yZW1vdmUoZXhjZXB0aW9uKTsKKworICAgIHJldHVy
biAqdGhpczsKK30KKworLyohCisgICAgUmVtb3ZlcyB0aGlzIGVsZW1lbnQgZnJvbSB0aGUgZG9j
dW1lbnQgYW5kIG1ha2VzIGl0IGEgbnVsbCBlbGVtZW50LgorCisgICAgXHNhIHJlbW92ZUFsbENo
aWxkcmVuKCksIHRha2VGcm9tRG9jdW1lbnQoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OnJlbW92
ZUZyb21Eb2N1bWVudCgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBtX2VsZW1lbnQtPnJlbW92
ZShleGNlcHRpb24pOworICAgIG1fZWxlbWVudC0+ZGVyZWYoKTsKKyAgICBtX2VsZW1lbnQgPSAw
OworfQorCisvKiEKKyAgICBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoaXMgZWxlbWVudC4K
KworICAgIFxzYSByZW1vdmVGcm9tRG9jdW1lbnQoKSwgdGFrZUZyb21Eb2N1bWVudCgpCisqLwor
dm9pZCBRV2ViRWxlbWVudDo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQoreworICAgIGlmICghbV9lbGVt
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7
Cit9CisKKy8vIEZJWE1FOiBUaGlzIGNvZGUsIGFuZCBhbGwgY2FsbGVycyBhcmUgd3JvbmcsIGFu
ZCBoYXZlIG5vIHBsYWNlIGluIGEKKy8vIFdlYktpdCBpbXBsZW1lbnRhdGlvbi4gIFRoZXNlIHNo
b3VsZCBiZSByZXBsYWNlZCB3aXRoIFdlYkNvcmUgaW1wbGVtZW50YXRpb25zLgorc3RhdGljIFJl
ZlB0cjxOb2RlPiBmaW5kSW5zZXJ0aW9uUG9pbnQoUGFzc1JlZlB0cjxOb2RlPiByb290KQorewor
ICAgIFJlZlB0cjxOb2RlPiBub2RlID0gcm9vdDsKKworICAgIC8vIEdvIGFzIGZhciBkb3duIHRo
ZSB0cmVlIGFzIHBvc3NpYmxlLgorICAgIHdoaWxlIChub2RlLT5oYXNDaGlsZE5vZGVzKCkgJiYg
bm9kZS0+Zmlyc3RDaGlsZCgpLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIG5vZGUgPSBub2Rl
LT5maXJzdENoaWxkKCk7CisKKyAgICAvLyBUT0RPOiBJbXBsZW1lbnQgU1ZHIHN1cHBvcnQKKyAg
ICBpZiAobm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlLmdldCgpKTsKKworICAgICAgICAv
LyBUaGUgaW5zZXJ0IHBvaW50IGNvdWxkIGJlIGEgbm9uLWVuY2xvc2FibGUgdGFnIGFuZCBpdCBj
YW4gdGh1cworICAgICAgICAvLyBuZXZlciBoYXZlIGNoaWxkcmVuLCBzbyBnbyBvbmUgdXAuIEdl
dCB0aGUgcGFyZW50IGVsZW1lbnQsIGFuZCBub3QKKyAgICAgICAgLy8gbm90ZSBhcyBhIHJvb3Qg
bm90ZSB3aWxsIGFsd2F5cyBleGlzdC4KKyAgICAgICAgaWYgKGVsZW1lbnQtPmllRm9yYmlkc0lu
c2VydEhUTUwoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRFbGVtZW50KCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKy8qIQorICAgIEVuY2xvc2VzIHRoZSBjb250
ZW50cyBvZiB0aGlzIGVsZW1lbnQgd2l0aCBcYSBlbGVtZW50LiBUaGlzIGVsZW1lbnQgYmVjb21l
cworICAgIHRoZSBjaGlsZCBvZiB0aGUgZGVlcGVzdCBkZXNjZW5kYW50IHdpdGhpbiBcYSBlbGVt
ZW50LgorCisgICAgIyMjIGlsbHVzdHJhdGlvbgorCisgICAgXHNhIGVuY2xvc2VXaXRoKCkKKyov
Cit2b2lkIFFXZWJFbGVtZW50OjplbmNsb3NlQ29udGVudHNXaXRoKGNvbnN0IFFXZWJFbGVtZW50
ICZlbGVtZW50KQoreworICAgIGlmICghbV9lbGVtZW50IHx8IGVsZW1lbnQuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxOb2RlPiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJ
bnNlcnRpb25Qb2ludChlbGVtZW50Lm1fZWxlbWVudCk7CisKKyAgICBpZiAoIWluc2VydGlvblBv
aW50KQorICAgICAgICByZXR1cm47CisKKyAgICBFeGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7
CisKKyAgICAvLyByZXBhcmVudCBjaGlsZHJlbgorICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxk
ID0gbV9lbGVtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOykgeworICAgICAgICBSZWZQdHI8Tm9k
ZT4gbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOworICAgICAgICBpbnNlcnRpb25Qb2ludC0+
YXBwZW5kQ2hpbGQoY2hpbGQsIGV4Y2VwdGlvbik7CisgICAgICAgIGNoaWxkID0gbmV4dDsKKyAg
ICB9CisKKyAgICBpZiAobV9lbGVtZW50LT5oYXNDaGlsZE5vZGVzKCkpCisgICAgICAgIG1fZWxl
bWVudC0+aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBtX2VsZW1lbnQtPmZpcnN0Q2hp
bGQoKSwgZXhjZXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG1fZWxlbWVudC0+YXBwZW5kQ2hp
bGQoZWxlbWVudC5tX2VsZW1lbnQsIGV4Y2VwdGlvbik7Cit9CisKKy8qIQorICAgIEVuY2xvc2Vz
IHRoZSBjb250ZW50cyBvZiB0aGlzIGVsZW1lbnQgd2l0aCB0aGUgcmVzdWx0IG9mIHBhcnNpbmcg
XGEgbWFya3VwLgorICAgIFRoaXMgZWxlbWVudCBiZWNvbWVzIHRoZSBjaGlsZCBvZiB0aGUgZGVl
cGVzdCBkZXNjZW5kYW50IHdpdGhpbiBcYSBtYXJrdXAuCisKKyAgICBcc2EgZW5jbG9zZVdpdGgo
KQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OmVuY2xvc2VDb250ZW50c1dpdGgoY29uc3QgUVN0cmlu
ZyAmbWFya3VwKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIW1fZWxlbWVudC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIW1fZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBF
eGNlcHRpb25Db2RlIGV4Y2VwdGlvbiA9IDA7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gIGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtYXJrdXAsIHRvSFRNTEVsZW1l
bnQobV9lbGVtZW50KSwgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBleGNlcHRpb24pOworCisgICAg
aWYgKCFmcmFnbWVudCB8fCAhZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUmVmUHRyPE5vZGU+IGluc2VydGlvblBvaW50ID0gZmluZEluc2VydGlvblBvaW50
KGZyYWdtZW50LT5maXJzdENoaWxkKCkpOworCisgICAgaWYgKCFpbnNlcnRpb25Qb2ludCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gcmVwYXJlbnQgY2hpbGRyZW4KKyAgICBmb3IgKFJlZlB0
cjxOb2RlPiBjaGlsZCA9IG1fZWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDspIHsKKyAgICAg
ICAgUmVmUHRyPE5vZGU+IG5leHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgaW5z
ZXJ0aW9uUG9pbnQtPmFwcGVuZENoaWxkKGNoaWxkLCBleGNlcHRpb24pOworICAgICAgICBjaGls
ZCA9IG5leHQ7CisgICAgfQorCisgICAgaWYgKG1fZWxlbWVudC0+aGFzQ2hpbGROb2RlcygpKQor
ICAgICAgICBtX2VsZW1lbnQtPmluc2VydEJlZm9yZShmcmFnbWVudCwgbV9lbGVtZW50LT5maXJz
dENoaWxkKCksIGV4Y2VwdGlvbik7CisgICAgZWxzZQorICAgICAgICBtX2VsZW1lbnQtPmFwcGVu
ZENoaWxkKGZyYWdtZW50LCBleGNlcHRpb24pOworfQorCisvKiEKKyAgICBFbmNsb3NlcyB0aGlz
IGVsZW1lbnQgd2l0aCBcYSBlbGVtZW50LiBUaGlzIGVsZW1lbnQgYmVjb21lcyB0aGUgY2hpbGQg
b2YKKyAgICB0aGUgZGVlcGVzdCBkZXNjZW5kYW50IHdpdGhpbiBcYSBlbGVtZW50LgorCisgICAg
XHNhIHJlcGxhY2UoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKGNvbnN0IFFX
ZWJFbGVtZW50ICZlbGVtZW50KQoreworICAgIGlmICghbV9lbGVtZW50IHx8IGVsZW1lbnQuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxOb2RlPiBpbnNlcnRpb25Qb2lu
dCA9IGZpbmRJbnNlcnRpb25Qb2ludChlbGVtZW50Lm1fZWxlbWVudCk7CisKKyAgICBpZiAoIWlu
c2VydGlvblBvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBLZWVwIHJlZmVyZW5jZSB0
byB0aGVzZSB0d28gbm9kZXMgYmVmb3JlIHB1bGxpbmcgb3V0IHRoaXMgZWxlbWVudCBhbmQKKyAg
ICAvLyB3cmFwcGluZyBpdCBpbiB0aGUgZnJhZ21lbnQuIFRoZSByZWFzb24gZm9yIGRvaW5nIGl0
IGluIHRoaXMgb3JkZXIgaXMKKyAgICAvLyB0aGF0IG9uY2UgdGhlIGZyYWdtZW50IGhhcyBiZWVu
IGFkZGVkIHRvIHRoZSBkb2N1bWVudCBpdCBpcyBlbXB0eSwgc28KKyAgICAvLyB3ZSBubyBsb25n
ZXIgaGF2ZSBhY2Nlc3MgdG8gdGhlIG5vZGVzIGl0IGNvbnRhaW5lZC4KKyAgICBOb2RlKiBwYXJl
bnQgPSBtX2VsZW1lbnQtPnBhcmVudE5vZGUoKTsKKyAgICBOb2RlKiBzaWJsaW5nTm9kZSA9IG1f
ZWxlbWVudC0+bmV4dFNpYmxpbmcoKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0g
MDsKKyAgICBpbnNlcnRpb25Qb2ludC0+YXBwZW5kQ2hpbGQobV9lbGVtZW50LCBleGNlcHRpb24p
OworCisgICAgaWYgKCFzaWJsaW5nTm9kZSkKKyAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChl
bGVtZW50Lm1fZWxlbWVudCwgZXhjZXB0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIHBhcmVudC0+
aW5zZXJ0QmVmb3JlKGVsZW1lbnQubV9lbGVtZW50LCBzaWJsaW5nTm9kZSwgZXhjZXB0aW9uKTsK
K30KKworLyohCisgICAgRW5jbG9zZXMgdGhpcyBlbGVtZW50IHdpdGggdGhlIHJlc3VsdCBvZiBw
YXJzaW5nIFxhIG1hcmt1cC4gVGhpcyBlbGVtZW50CisgICAgYmVjb21lcyB0aGUgY2hpbGQgb2Yg
dGhlIGRlZXBlc3QgZGVzY2VuZGFudCB3aXRoaW4gXGEgbWFya3VwLgorCisgICAgXHNhIHJlcGxh
Y2UoKQorKi8KK3ZvaWQgUVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKGNvbnN0IFFTdHJpbmcgJm1h
cmt1cCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9k
ZSogcGFyZW50ID0gbV9lbGVtZW50LT5wYXJlbnROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghcGFyZW50LT5pc0hUTUxFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQo
bWFya3VwLCB0b0hUTUxFbGVtZW50KHBhcmVudCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZXhj
ZXB0aW9uKTsKKworICAgIGlmICghZnJhZ21lbnQgfHwgIWZyYWdtZW50LT5maXJzdENoaWxkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxOb2RlPiBpbnNlcnRpb25Qb2ludCA9IGZp
bmRJbnNlcnRpb25Qb2ludChmcmFnbWVudC0+Zmlyc3RDaGlsZCgpKTsKKworICAgIGlmICghaW5z
ZXJ0aW9uUG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEtlZXAgcmVmZXJlbmNlIHRv
IHBhcmVudCAmIHNpYmxpbmdOb2RlIGJlZm9yZSBwdWxsaW5nIG91dCB0aGlzIGVsZW1lbnQgYW5k
CisgICAgLy8gd3JhcHBpbmcgaXQgaW4gdGhlIGZyYWdtZW50LiBUaGUgcmVhc29uIGZvciBkb2lu
ZyBpdCBpbiB0aGlzIG9yZGVyIGlzCisgICAgLy8gdGhhdCBvbmNlIHRoZSBmcmFnbWVudCBoYXMg
YmVlbiBhZGRlZCB0byB0aGUgZG9jdW1lbnQgaXQgaXMgZW1wdHksIHNvCisgICAgLy8gd2Ugbm8g
bG9uZ2VyIGhhdmUgYWNjZXNzIHRvIHRoZSBub2RlcyBpdCBjb250YWluZWQuCisgICAgTm9kZSog
c2libGluZ05vZGUgPSBtX2VsZW1lbnQtPm5leHRTaWJsaW5nKCk7CisKKyAgICBpbnNlcnRpb25Q
b2ludC0+YXBwZW5kQ2hpbGQobV9lbGVtZW50LCBleGNlcHRpb24pOworCisgICAgaWYgKCFzaWJs
aW5nTm9kZSkKKyAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChmcmFnbWVudCwgZXhjZXB0aW9u
KTsKKyAgICBlbHNlCisgICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBzaWJs
aW5nTm9kZSwgZXhjZXB0aW9uKTsKK30KKworLyohCisgICAgUmVwbGFjZXMgdGhpcyBlbGVtZW50
IHdpdGggXGEgZWxlbWVudC4KKworICAgIFRoaXMgbWV0aG9kIHdpbGwgbm90IHJlcGxhY2UgdGhl
IDxodG1sPiwgPGhlYWQ+IG9yIDxib2R5PiBlbGVtZW50cy4KKworICAgIFxzYSBlbmNsb3NlV2l0
aCgpCisqLwordm9pZCBRV2ViRWxlbWVudDo6cmVwbGFjZShjb25zdCBRV2ViRWxlbWVudCAmZWxl
bWVudCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCBlbGVtZW50LmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhcHBlbmRPdXRzaWRlKGVsZW1lbnQpOworICAgIHRha2VGcm9tRG9j
dW1lbnQoKTsKK30KKworLyohCisgICAgUmVwbGFjZXMgdGhpcyBlbGVtZW50IHdpdGggdGhlIHJl
c3VsdCBvZiBwYXJzaW5nIFxhIG1hcmt1cC4KKworICAgIFRoaXMgbWV0aG9kIHdpbGwgbm90IHJl
cGxhY2UgdGhlIDxodG1sPiwgPGhlYWQ+IG9yIDxib2R5PiBlbGVtZW50cy4KKworICAgIFxzYSBl
bmNsb3NlV2l0aCgpCisqLwordm9pZCBRV2ViRWxlbWVudDo6cmVwbGFjZShjb25zdCBRU3RyaW5n
ICZtYXJrdXApCit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGFwcGVuZE91dHNpZGUobWFya3VwKTsKKyAgICB0YWtlRnJvbURvY3VtZW50KCk7Cit9CisKKy8q
IQorICAgIFxpbnRlcm5hbAorICAgIFdhbGsgXGEgbm9kZSdzIHBhcmVudHMgdW50aWwgYSB2YWxp
ZCBRV2ViRWxlbWVudCBpcyBmb3VuZC4KKyAgICBGb3IgZXhhbXBsZSwgYSBXZWJDb3JlOjpUZXh0
IG5vZGUgaXMgbm90IGEgdmFsaWQgSHRtbCBRV2ViRWxlbWVudCwgYnV0IGl0cworICAgIGVuY2xv
c2luZyBwIHRhZyBpcy4KKyovCitRV2ViRWxlbWVudCBRV2ViRWxlbWVudDo6ZW5jbG9zaW5nRWxl
bWVudChXZWJDb3JlOjpOb2RlKiBub2RlKQoreworICAgIFFXZWJFbGVtZW50IGVsZW1lbnQobm9k
ZSk7CisKKyAgICB3aGlsZSAoZWxlbWVudC5pc051bGwoKSAmJiBub2RlKSB7CisgICAgICAgIG5v
ZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIGVsZW1lbnQgPSBRV2ViRWxlbWVudChu
b2RlKTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKKy8qIQorICAgIFxmbiBpbmxp
bmUgYm9vbCBRV2ViRWxlbWVudDo6b3BlcmF0b3I9PShjb25zdCBRV2ViRWxlbWVudCYgbykgY29u
c3Q7CisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhpcyBlbGVtZW50IHBvaW50cyB0byB0aGUgc2Ft
ZSB1bmRlcmx5aW5nIERPTSBvYmplY3QgYXMKKyAgICBcYSBvOyBvdGhlcndpc2UgcmV0dXJucyBm
YWxzZS4KKyovCisKKy8qIQorICAgIFxmbiBpbmxpbmUgYm9vbCBRV2ViRWxlbWVudDo6b3BlcmF0
b3IhPShjb25zdCBRV2ViRWxlbWVudCYgbykgY29uc3Q7CisKKyAgICBSZXR1cm5zIHRydWUgaWYg
dGhpcyBlbGVtZW50IHBvaW50cyB0byBhIGRpZmZlcmVudCB1bmRlcmx5aW5nIERPTSBvYmplY3QK
KyAgICB0aGFuIFxhIG87IG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorKi8KKworCisvKiEgCisg
IFJlbmRlciB0aGUgZWxlbWVudCBpbnRvIFxhIHBhaW50ZXIgLgorKi8KK3ZvaWQgUVdlYkVsZW1l
bnQ6OnJlbmRlcihRUGFpbnRlciogcGFpbnRlcikKK3sKKyAgICByZW5kZXIocGFpbnRlciwgUVJl
Y3QoKSk7Cit9CisKKy8qIQorICBSZW5kZXIgdGhlIGVsZW1lbnQgaW50byBcYSBwYWludGVyIGNs
aXBwaW5nIHRvIFxhIGNsaXAuCisqLwordm9pZCBRV2ViRWxlbWVudDo6cmVuZGVyKFFQYWludGVy
KiBwYWludGVyLCBjb25zdCBRUmVjdCYgY2xpcCkKK3sKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBl
ID0gbV9lbGVtZW50OworICAgIGlmICghZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUq
IGZyYW1lID0gZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT52aWV3KCkgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKworICAgIHZpZXctPnVwZGF0
ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKKworICAgIEludFJlY3QgcmVjdCA9
IGUtPnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCk7CisKKyAgICBpZiAocmVjdC5zaXplKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRUmVjdCBmaW5hbENsaXBSZWN0ID0gcmVj
dDsKKyAgICBpZiAoIWNsaXAuaXNFbXB0eSgpKQorICAgICAgICByZWN0LmludGVyc2VjdChjbGlw
LnRyYW5zbGF0ZWQocmVjdC5sb2NhdGlvbigpKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChwYWludGVyKTsKKworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQudHJhbnNs
YXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICBwYWludGVyLT5zZXRDbGlwUmVjdChmaW5h
bENsaXBSZWN0LCBRdDo6SW50ZXJzZWN0Q2xpcCk7CisgICAgdmlldy0+c2V0Tm9kZVRvRHJhdyhl
KTsKKyAgICB2aWV3LT5wYWludENvbnRlbnRzKCZjb250ZXh0LCBmaW5hbENsaXBSZWN0KTsKKyAg
ICB2aWV3LT5zZXROb2RlVG9EcmF3KDApOworICAgIGNvbnRleHQucmVzdG9yZSgpOworfQorCitj
bGFzcyBRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlIDogcHVibGljIFFTaGFyZWREYXRhCit7
CitwdWJsaWM6CisgICAgc3RhdGljIFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGUqIGNyZWF0
ZShjb25zdCBQYXNzUmVmUHRyPE5vZGU+ICZjb250ZXh0LCBjb25zdCBRU3RyaW5nICZxdWVyeSk7
CisKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1fcmVzdWx0OworCitwcml2YXRlOgorICAgIGlubGlu
ZSBRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlKCkge30KK307CisKK1FXZWJFbGVtZW50Q29s
bGVjdGlvblByaXZhdGUqIFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU6OmNyZWF0ZShjb25z
dCBQYXNzUmVmUHRyPE5vZGU+ICZjb250ZXh0LCBjb25zdCBRU3RyaW5nICZxdWVyeSkKK3sKKyAg
ICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gTGV0IFdlYktpdCBk
byB0aGUgaGFyZCB3b3JrIGhlaGVoZQorICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsg
Ly8gIyMjCisgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlcyA9IGNvbnRleHQtPnF1ZXJ5U2VsZWN0
b3JBbGwocXVlcnksIGV4Y2VwdGlvbik7CisgICAgaWYgKCFub2RlcykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlKiBwcml2ID0gbmV3IFFXZWJF
bGVtZW50Q29sbGVjdGlvblByaXZhdGU7CisgICAgcHJpdi0+bV9yZXN1bHQgPSBub2RlczsKKyAg
ICByZXR1cm4gcHJpdjsKK30KKworLyohCisgICAgXGNsYXNzIFFXZWJFbGVtZW50Q29sbGVjdGlv
bgorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJFbGVtZW50Q29sbGVjdGlvbiBj
bGFzcyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiB3ZWIgZWxlbWVudHMuCisgICAgXHByZWxp
bWluYXJ5CisKKyAgICBFbGVtZW50cyBpbiBhIGRvY3VtZW50IGNhbiBiZSBzZWxlY3RlZCB1c2lu
ZyBRV2ViRWxlbWVudDo6ZmluZEFsbCgpIG9yIHVzaW5nIHRoZQorICAgIFFXZWJFbGVtZW50IGNv
bnN0cnVjdG9yLiBUaGUgY29sbGVjdGlvbiBpcyBjb21wb3NlZCBieSBjaG9vc2luZyBhbGwgZWxl
bWVudHMgaW4gdGhlCisgICAgZG9jdW1lbnQgdGhhdCBtYXRjaCBhIHNwZWNpZmllZCBDU1Mgc2Vs
ZWN0b3IgZXhwcmVzc2lvbi4KKworICAgIFRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMg
aXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgY291bnQoKSBwcm9wZXJ0eS4gSW5kaXZpZHVhbAorICAg
IGVsZW1lbnRzIGNhbiBiZSByZXRyaWV2ZWQgYnkgaW5kZXggdXNpbmcgYXQoKS4KKworICAgIEl0
IGlzIGFsc28gcG9zc2libGUgdG8gaXRlcmF0ZSB0aHJvdWdoIGFsbCBlbGVtZW50cyBpbiB0aGUg
Y29sbGVjdGlvbiB1c2luZyBRdCdzIGZvcmVhY2gKKyAgICBtYWNybzoKKworICAgIFxjb2RlCisg
ICAgICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbiBjb2xsZWN0aW9uID0gZG9jdW1lbnQuZmluZEFs
bCgicCIpOworICAgICAgICBmb3JlYWNoIChRV2ViRWxlbWVudCBwYXJhRWxlbWVudCwgY29sbGVj
dGlvbikgeworICAgICAgICAgICAgLi4uCisgICAgICAgIH0KKyAgICBcZW5kY29kZQorKi8KKwor
LyohCisgICAgQ29uc3RydWN0cyBhbiBlbXB0eSBjb2xsZWN0aW9uLgorKi8KK1FXZWJFbGVtZW50
Q29sbGVjdGlvbjo6UVdlYkVsZW1lbnRDb2xsZWN0aW9uKCkKK3sKK30KKworLyohCisgICAgQ29u
c3RydWN0cyBhIGNvcHkgb2YgXGEgb3RoZXIuCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpR
V2ViRWxlbWVudENvbGxlY3Rpb24oY29uc3QgUVdlYkVsZW1lbnRDb2xsZWN0aW9uICZvdGhlcikK
KyAgICA6IGQob3RoZXIuZCkKK3sKK30KKworLyohCisgICAgQ29uc3RydWN0cyBhIGNvbGxlY3Rp
b24gb2YgZWxlbWVudHMgZnJvbSB0aGUgbGlzdCBvZiBjaGlsZCBlbGVtZW50cyBvZiBcYSBjb250
ZXh0RWxlbWVudCB0aGF0CisgICAgbWF0Y2ggdGhlIHNwZWNpZmllZCBDU1Mgc2VsZWN0b3IgXGEg
cXVlcnkuCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpRV2ViRWxlbWVudENvbGxlY3Rpb24o
Y29uc3QgUVdlYkVsZW1lbnQgJmNvbnRleHRFbGVtZW50LCBjb25zdCBRU3RyaW5nICZxdWVyeSkK
K3sKKyAgICBkID0gUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjxRV2ViRWxlbWVudENvbGxl
Y3Rpb25Qcml2YXRlPihRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlOjpjcmVhdGUoY29udGV4
dEVsZW1lbnQubV9lbGVtZW50LCBxdWVyeSkpOworfQorCisvKiEKKyAgICBBc3NpZ25zIFxhIG90
aGVyIHRvIHRoaXMgY29sbGVjdGlvbiBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGlzIGNv
bGxlY3Rpb24uCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uICZRV2ViRWxlbWVudENvbGxlY3Rp
b246Om9wZXJhdG9yPShjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rpb24gJm90aGVyKQoreworICAg
IGQgPSBvdGhlci5kOworICAgIHJldHVybiAqdGhpczsKK30KKworLyohCisgICAgRGVzdHJveXMg
dGhlIGNvbGxlY3Rpb24uCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjp+UVdlYkVsZW1lbnRD
b2xsZWN0aW9uKCkKK3sKK30KKworLyohIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb24gJlFXZWJF
bGVtZW50Q29sbGVjdGlvbjo6b3BlcmF0b3IrPShjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rpb24g
Jm90aGVyKQorCisgICAgQXBwZW5kcyB0aGUgaXRlbXMgb2YgdGhlIFxhIG90aGVyIGxpc3QgdG8g
dGhpcyBsaXN0IGFuZCByZXR1cm5zIGEKKyAgICByZWZlcmVuY2UgdG8gdGhpcyBsaXN0LgorCisg
ICAgXHNhIG9wZXJhdG9yKygpLCBhcHBlbmQoKQorKi8KKworLyohCisgICAgUmV0dXJucyBhIGNv
bGxlY3Rpb24gdGhhdCBjb250YWlucyBhbGwgdGhlIGVsZW1lbnRzIG9mIHRoaXMgY29sbGVjdGlv
biBmb2xsb3dlZAorICAgIGJ5IGFsbCB0aGUgZWxlbWVudHMgaW4gdGhlIFxhIG90aGVyIGNvbGxl
Y3Rpb24uIER1cGxpY2F0ZXMgbWF5IG9jY3VyIGluIHRoZSByZXN1bHQuCisKKyAgICBcc2Egb3Bl
cmF0b3IrPSgpCisqLworUVdlYkVsZW1lbnRDb2xsZWN0aW9uIFFXZWJFbGVtZW50Q29sbGVjdGlv
bjo6b3BlcmF0b3IrKGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmb3RoZXIpIGNvbnN0Cit7
CisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIG4gPSAqdGhpczsgbi5kLmRldGFjaCgpOyBuICs9
IG90aGVyOyByZXR1cm4gbjsKK30KKworLyohCisgICAgRXh0ZW5kcyB0aGUgY29sbGVjdGlvbiBi
eSBhcHBlbmRpbmcgYWxsIGl0ZW1zIG9mIFxhIG90aGVyLgorCisgICAgVGhlIHJlc3VsdGluZyBj
b2xsZWN0aW9uIG1heSBpbmNsdWRlIGR1cGxpY2F0ZSBlbGVtZW50cy4KKworICAgIFxzYSBvcGVy
YXRvcis9KCkKKyovCit2b2lkIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6YXBwZW5kKGNvbnN0IFFX
ZWJFbGVtZW50Q29sbGVjdGlvbiAmb3RoZXIpCit7CisgICAgaWYgKCFkKSB7CisgICAgICAgICp0
aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFvdGhlci5kKQor
ICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CisgICAgUmVmUHRy
PE5vZGVMaXN0PiByZXN1bHRzW10gPSB7IGQtPm1fcmVzdWx0LCBvdGhlci5kLT5tX3Jlc3VsdCB9
OworICAgIG5vZGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVzdWx0c1swXS0+bGVuZ3RoKCkg
KyByZXN1bHRzWzFdLT5sZW5ndGgoKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsr
aSkgeworICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgIE5vZGUqIG4gPSByZXN1bHRzW2ldLT5p
dGVtKGopOworICAgICAgICB3aGlsZSAobikgeworICAgICAgICAgICAgbm9kZXMuYXBwZW5kKCpu
KTsKKyAgICAgICAgICAgIG4gPSByZXN1bHRzW2ldLT5pdGVtKCsraik7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBkLT5tX3Jlc3VsdCA9IFN0YXRpY05vZGVMaXN0OjphZG9wdChub2Rlcyk7Cit9
CisKKy8qIQorICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgY29sbGVj
dGlvbi4KKyovCitpbnQgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb3VudCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZC0+bV9yZXN1bHQtPmxl
bmd0aCgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBlbGVtZW50IGF0IGluZGV4IHBvc2l0
aW9uIFxhIGkgaW4gdGhlIGNvbGxlY3Rpb24uCisqLworUVdlYkVsZW1lbnQgUVdlYkVsZW1lbnRD
b2xsZWN0aW9uOjphdChpbnQgaSkgY29uc3QKK3sKKyAgICBpZiAoIWQpCisgICAgICAgIHJldHVy
biBRV2ViRWxlbWVudCgpOworICAgIE5vZGUqIG4gPSBkLT5tX3Jlc3VsdC0+aXRlbShpKTsKKyAg
ICByZXR1cm4gUVdlYkVsZW1lbnQodG9FbGVtZW50KG4pKTsKK30KKworLyohCisgICAgXGZuIGNv
bnN0IFFXZWJFbGVtZW50IFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6b3BlcmF0b3JbXShpbnQgcG9z
aXRpb24pIGNvbnN0CisKKyAgICBSZXR1cm5zIHRoZSBlbGVtZW50IGF0IHRoZSBzcGVjaWZpZWQg
XGEgcG9zaXRpb24gaW4gdGhlIGNvbGxlY3Rpb24uCisqLworCisvKiEgXGZuIFFXZWJFbGVtZW50
IFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Zmlyc3QoKSBjb25zdAorCisgICAgUmV0dXJucyB0aGUg
Zmlyc3QgZWxlbWVudCBpbiB0aGUgY29sbGVjdGlvbi4KKworICAgIFxzYSBsYXN0KCksIG9wZXJh
dG9yW10oKSwgYXQoKSwgY291bnQoKQorKi8KKworLyohIFxmbiBRV2ViRWxlbWVudCBRV2ViRWxl
bWVudENvbGxlY3Rpb246Omxhc3QoKSBjb25zdAorCisgICAgUmV0dXJucyB0aGUgbGFzdCBlbGVt
ZW50IGluIHRoZSBjb2xsZWN0aW9uLgorCisgICAgXHNhIGZpcnN0KCksIG9wZXJhdG9yW10oKSwg
YXQoKSwgY291bnQoKQorKi8KKworLyohCisgICAgUmV0dXJucyBhIFFMaXN0IG9iamVjdCB3aXRo
IHRoZSBlbGVtZW50cyBjb250YWluZWQgaW4gdGhpcyBjb2xsZWN0aW9uLgorKi8KK1FMaXN0PFFX
ZWJFbGVtZW50PiBRV2ViRWxlbWVudENvbGxlY3Rpb246OnRvTGlzdCgpIGNvbnN0Cit7CisgICAg
aWYgKCFkKQorICAgICAgICByZXR1cm4gUUxpc3Q8UVdlYkVsZW1lbnQ+KCk7CisgICAgUUxpc3Q8
UVdlYkVsZW1lbnQ+IGVsZW1lbnRzOworICAgIGludCBpID0gMDsKKyAgICBOb2RlKiBuID0gZC0+
bV9yZXN1bHQtPml0ZW0oaSk7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgaWYgKG4tPmlzRWxl
bWVudE5vZGUoKSkKKyAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChRV2ViRWxlbWVudCh0b0Vs
ZW1lbnQobikpKTsKKyAgICAgICAgbiA9IGQtPm1fcmVzdWx0LT5pdGVtKCsraSk7CisgICAgfQor
ICAgIHJldHVybiBlbGVtZW50czsKK30KKworLyohCisgICAgXGZuIFFXZWJFbGVtZW50Q29sbGVj
dGlvbjo6Y29uc3RfaXRlcmF0b3IgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpiZWdpbigpIGNvbnN0
CisKKyAgICBSZXR1cm5zIGFuIFNUTC1zdHlsZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmly
c3QgZWxlbWVudCBpbiB0aGUgY29sbGVjdGlvbi4KKworICAgIFxzYSBlbmQoKQorKi8KKworLyoh
CisgICAgXGZuIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgUVdlYkVsZW1l
bnRDb2xsZWN0aW9uOjplbmQoKSBjb25zdAorCisgICAgUmV0dXJucyBhbiBTVEwtc3R5bGUgaXRl
cmF0b3IgcG9pbnRpbmcgdG8gdGhlIGltYWdpbmFyeSBlbGVtZW50IGFmdGVyIHRoZQorICAgIGxh
c3QgZWxlbWVudCBpbiB0aGUgbGlzdC4KKworICAgIFxzYSBiZWdpbigpCisqLworCisvKiEKKyAg
ICBcY2xhc3MgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvcgorICAgIFxzaW5j
ZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0
b3IgY2xhc3MgcHJvdmlkZXMgYW4gU1RMLXN0eWxlIGNvbnN0IGl0ZXJhdG9yIGZvciBRV2ViRWxl
bWVudENvbGxlY3Rpb24uCisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24gcHJvdmlkZXMgU1RM
IHN0eWxlIGNvbnN0IGl0ZXJhdG9ycyBmb3IgZmFzdCBsb3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBl
bGVtZW50cy4KKworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgYWxs
b3dzIHlvdSB0byBpdGVyYXRlIG92ZXIgYSBRV2ViRWxlbWVudENvbGxlY3Rpb24uCisqLworCisv
KiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvcjo6Y29uc3Rf
aXRlcmF0b3IoY29uc3QgY29uc3RfaXRlcmF0b3IgJm90aGVyKQorCisgICAgQ29uc3RydWN0cyBh
IGNvcHkgb2YgXGEgb3RoZXIuCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0
aW9uOjpjb25zdF9pdGVyYXRvcjo6Y29uc3RfaXRlcmF0b3IoY29uc3QgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uICpjb2xsZWN0aW9uLCBpbnQgaW5kZXgpCisgICAgXGludGVybmFsCisqLworCisvKiEK
KyAgICBcZm4gY29uc3QgUVdlYkVsZW1lbnQgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9p
dGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKKworICAgIFJldHVybnMgdGhlIGN1cnJlbnQgZWxl
bWVudC4KKyovCisKKy8qIQorICAgIFxmbiBib29sIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29u
c3RfaXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3IgJm90aGVyKSBjb25z
dAorCisgICAgUmV0dXJucyB0cnVlIGlmIFxhIG90aGVyIHBvaW50cyB0byB0aGUgc2FtZSBpdGVt
IGFzIHRoaXMgaXRlcmF0b3I7CisgICAgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisKKyAgICBc
c2Egb3BlcmF0b3IhPSgpCisqLworCisvKiEKKyAgICBcZm4gYm9vbCBRV2ViRWxlbWVudENvbGxl
Y3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yICZv
dGhlcikgY29uc3QKKworICAgIFJldHVybnMgdHJ1ZSBpZiBcYSBvdGhlciBwb2ludHMgdG8gYSBk
aWZmZXJlbnQgZWxlbWVudCB0aGFuIHRoaXM7CisgICAgaXRlcmF0b3I7IG90aGVyd2lzZSByZXR1
cm5zIGZhbHNlLgorCisgICAgXHNhIG9wZXJhdG9yPT0oKQorKi8KKworLyohCisgICAgXGZuIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3IgJlFXZWJFbGVtZW50Q29sbGVjdGlv
bjo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yKysoKQorCisgICAgVGhlIHByZWZpeCArKyBvcGVy
YXRvciAoXGN7KytpdH0pIGFkdmFuY2VzIHRoZSBpdGVyYXRvciB0byB0aGUgbmV4dCBlbGVtZW50
IGluIHRoZSBjb2xsZWN0aW9uCisgICAgYW5kIHJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIG5l
dyBjdXJyZW50IGVsZW1lbnQuCisKKyAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gb24gUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uOjplbmQoKSBsZWFkcyB0byB1bmRlZmluZWQgcmVzdWx0cy4KKworICAg
IFxzYSBvcGVyYXRvci0tKCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rp
b246OmNvbnN0X2l0ZXJhdG9yIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6
Om9wZXJhdG9yKysoaW50KQorCisgICAgXG92ZXJsb2FkCisKKyAgICBUaGUgcG9zdGZpeCArKyBv
cGVyYXRvciAoXGN7aXQrK30pIGFkdmFuY2VzIHRoZSBpdGVyYXRvciB0byB0aGUgbmV4dCBlbGVt
ZW50IGluIHRoZSBjb2xsZWN0aW9uCisgICAgYW5kIHJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhl
IHByZXZpb3VzbHkgY3VycmVudCBlbGVtZW50LgorCisgICAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9u
IG9uIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6ZW5kKCkgbGVhZHMgdG8gdW5kZWZpbmVkIHJlc3Vs
dHMuCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVy
YXRvciAmUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3ItLSgp
CisKKyAgICBUaGUgcHJlZml4IC0tIG9wZXJhdG9yIChcY3stLWl0fSkgbWFrZXMgdGhlIHByZWNl
ZGluZyBlbGVtZW50IGN1cnJlbnQgYW5kIHJldHVybnMgYW4KKyAgICBpdGVyYXRvciB0byB0aGUg
bmV3IGN1cnJlbnQgZWxlbWVudC4KKworICAgIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBvbiBRV2Vi
RWxlbWVudENvbGxlY3Rpb246OmJlZ2luKCkgbGVhZHMgdG8gdW5kZWZpbmVkIHJlc3VsdHMuCisK
KyAgICBcc2Egb3BlcmF0b3IrKygpCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uOjpjb25zdF9pdGVyYXRvciBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJh
dG9yOjpvcGVyYXRvci0tKGludCkKKworICAgIFxvdmVybG9hZAorCisgICAgVGhlIHBvc3RmaXgg
LS0gb3BlcmF0b3IgKFxje2l0LS19KSBtYWtlcyB0aGUgcHJlY2VkaW5nIGVsZW1lbnQgY3VycmVu
dCBhbmQgcmV0dXJucworICAgIGFuIGl0ZXJhdG9yIHRvIHRoZSBwcmV2aW91c2x5IGN1cnJlbnQg
ZWxlbWVudC4KKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0
X2l0ZXJhdG9yICZRV2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRv
cis9KGludCBqKQorCisgICAgQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJ5IFxhIGogZWxlbWVudHMu
IElmIFxhIGogaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGJhY2t3YXJkLgorCisgICAg
XHNhIG9wZXJhdG9yLT0oKSwgb3BlcmF0b3IrKCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxl
bWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yICZRV2ViRWxlbWVudENvbGxlY3Rpb246OmNv
bnN0X2l0ZXJhdG9yOjpvcGVyYXRvci09KGludCBqKQorCisgICAgTWFrZXMgdGhlIGl0ZXJhdG9y
IGdvIGJhY2sgYnkgXGEgaiBlbGVtZW50cy4gSWYgXGEgaiBpcyBuZWdhdGl2ZSwgdGhlIGl0ZXJh
dG9yIGdvZXMgZm9yd2FyZC4KKworICAgIFxzYSBvcGVyYXRvcis9KCksIG9wZXJhdG9yLSgpCisq
LworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvciBR
V2ViRWxlbWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvcisoaW50IGopIGNv
bnN0CisKKyAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRvIHRoZSBlbGVtZW50IGF0IFxhIGogcG9z
aXRpb25zIGZvcndhcmQgZnJvbSB0aGlzIGl0ZXJhdG9yLiBJZiBcYSBqCisgICAgaXMgbmVnYXRp
dmUsIHRoZSBpdGVyYXRvciBnb2VzIGJhY2t3YXJkLgorCisgICAgXHNhIG9wZXJhdG9yLSgpLCBv
cGVyYXRvcis9KCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb246OmNv
bnN0X2l0ZXJhdG9yIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6Om9wZXJh
dG9yLShpbnQgaikgY29uc3QKKworICAgIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGVsZW1l
bnQgYXQgXGEgaiBwb3NpdGlvc24gYmFja3dhcmQgZnJvbSB0aGlzIGl0ZXJhdG9yLgorICAgIElm
IFxhIGogaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGZvcndhcmQuCisKKyAgICBcc2Eg
b3BlcmF0b3IrKCksIG9wZXJhdG9yLT0oKQorKi8KKworLyohCisgICAgXGZuIGludCBRV2ViRWxl
bWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvci0oY29uc3RfaXRlcmF0b3Ig
b3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgYmV0d2Vl
biB0aGUgaXRlbSBwb2ludCB0byBieSBcYSBvdGhlcgorICAgIGFuZCB0aGUgZWxlbWVudCBwb2lu
dGVkIHRvIGJ5IHRoaXMgaXRlcmF0b3IuCisqLworCisvKiEKKyAgICBcZm4gYm9vbCBRV2ViRWxl
bWVudENvbGxlY3Rpb246OmNvbnN0X2l0ZXJhdG9yOjpvcGVyYXRvcjwoY29uc3QgY29uc3RfaXRl
cmF0b3IgJm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IHBv
aW50ZWQgdG8gYnkgdGhpcyBpdGVyYXRvciBpcyBsZXNzIHRoYW4gdGhlIGVsZW1lbnQgcG9pbnRl
ZCB0bworICAgIGJ5IHRoZSBcYSBvdGhlciBpdGVyYXRvci4KKyovCisKKy8qIQorICAgIFxmbiBi
b29sIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RfaXRlcmF0b3I6Om9wZXJhdG9yPD0oY29u
c3QgY29uc3RfaXRlcmF0b3IgJm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlmIHRo
ZSBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhpcyBpdGVyYXRvciBpcyBsZXNzIHRoYW4gb3IgZXF1
YWwgdG8gdGhlCisgICAgZWxlbWVudCBwb2ludGVkIHRvIGJ5IHRoZSBcYSBvdGhlciBpdGVyYXRv
ci4KKyovCisKKy8qIQorICAgIFxmbiBib29sIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3Rf
aXRlcmF0b3I6Om9wZXJhdG9yPihjb25zdCBjb25zdF9pdGVyYXRvciAmb3RoZXIpIGNvbnN0CisK
KyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1lbnQgcG9pbnRlZCB0byBieSB0aGlzIGl0ZXJh
dG9yIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVudCBwb2ludGVkIHRvCisgICAgYnkgdGhlIFxh
IG90aGVyIGl0ZXJhdG9yLgorKi8KKworLyohCisgICAgXGZuIGJvb2wgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uOjpjb25zdF9pdGVyYXRvcjo6b3BlcmF0b3I+PShjb25zdCBjb25zdF9pdGVyYXRvciAm
b3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1lbnQgcG9pbnRlZCB0
byBieSB0aGlzIGl0ZXJhdG9yIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUKKyAgICBl
bGVtZW50IHBvaW50ZWQgdG8gYnkgdGhlIFxhIG90aGVyIGl0ZXJhdG9yLgorKi8KKworLyohCisg
ICAgXGZuIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3IgUVdlYkVsZW1lbnRDb2xsZWN0
aW9uOjpiZWdpbigpCisKKyAgICBSZXR1cm5zIGFuIFNUTC1zdHlsZSBpdGVyYXRvciBwb2ludGlu
ZyB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgY29sbGVjdGlvbi4KKworICAgIFxzYSBlbmQo
KQorKi8KKworLyohCisgICAgXGZuIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3IgUVdl
YkVsZW1lbnRDb2xsZWN0aW9uOjplbmQoKQorCisgICAgUmV0dXJucyBhbiBTVEwtc3R5bGUgaXRl
cmF0b3IgcG9pbnRpbmcgdG8gdGhlIGltYWdpbmFyeSBlbGVtZW50IGFmdGVyIHRoZQorICAgIGxh
c3QgZWxlbWVudCBpbiB0aGUgbGlzdC4KKworICAgIFxzYSBiZWdpbigpCisqLworCisvKiEKKyAg
ICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvciBRV2ViRWxlbWVudENv
bGxlY3Rpb246OmNvbnN0QmVnaW4oKSBjb25zdAorCisgICAgUmV0dXJucyBhbiBTVEwtc3R5bGUg
aXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGNvbGxlY3Rpb24u
CisKKyAgICBcc2EgZW5kKCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rp
b246OmNvbnN0X2l0ZXJhdG9yIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6Y29uc3RFbmQoKSBjb25z
dAorCisgICAgUmV0dXJucyBhbiBTVEwtc3R5bGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGlt
YWdpbmFyeSBlbGVtZW50IGFmdGVyIHRoZQorICAgIGxhc3QgZWxlbWVudCBpbiB0aGUgbGlzdC4K
KworICAgIFxzYSBiZWdpbigpCisqLworCisvKiEKKyAgICBcY2xhc3MgUVdlYkVsZW1lbnRDb2xs
ZWN0aW9uOjppdGVyYXRvcgorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJFbGVt
ZW50Q29sbGVjdGlvbjo6aXRlcmF0b3IgY2xhc3MgcHJvdmlkZXMgYW4gU1RMLXN0eWxlIGl0ZXJh
dG9yIGZvciBRV2ViRWxlbWVudENvbGxlY3Rpb24uCisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rp
b24gcHJvdmlkZXMgU1RMIHN0eWxlIGl0ZXJhdG9ycyBmb3IgZmFzdCBsb3ctbGV2ZWwgYWNjZXNz
IHRvIHRoZSBlbGVtZW50cy4KKworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3Ig
YWxsb3dzIHlvdSB0byBpdGVyYXRlIG92ZXIgYSBRV2ViRWxlbWVudENvbGxlY3Rpb24uCisqLwor
CisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvcjo6aXRlcmF0b3Io
Y29uc3QgaXRlcmF0b3IgJm90aGVyKQorCisgICAgQ29uc3RydWN0cyBhIGNvcHkgb2YgXGEgb3Ro
ZXIuCisqLworCisvKiEKKyAgICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvcjo6
aXRlcmF0b3IoY29uc3QgUVdlYkVsZW1lbnRDb2xsZWN0aW9uICpjb2xsZWN0aW9uLCBpbnQgaW5k
ZXgpCisgICAgXGludGVybmFsCisqLworCisvKiEKKyAgICBcZm4gY29uc3QgUVdlYkVsZW1lbnQg
UVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKKworICAg
IFJldHVybnMgdGhlIGN1cnJlbnQgZWxlbWVudC4KKyovCisKKy8qIQorICAgIFxmbiBib29sIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Ig
Jm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlmIFxhIG90aGVyIHBvaW50cyB0byB0
aGUgc2FtZSBpdGVtIGFzIHRoaXMgaXRlcmF0b3I7CisgICAgb3RoZXJ3aXNlIHJldHVybnMgZmFs
c2UuCisKKyAgICBcc2Egb3BlcmF0b3IhPSgpCisqLworCisvKiEKKyAgICBcZm4gYm9vbCBRV2Vi
RWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yICZv
dGhlcikgY29uc3QKKworICAgIFJldHVybnMgdHJ1ZSBpZiBcYSBvdGhlciBwb2ludHMgdG8gYSBk
aWZmZXJlbnQgZWxlbWVudCB0aGFuIHRoaXM7CisgICAgaXRlcmF0b3I7IG90aGVyd2lzZSByZXR1
cm5zIGZhbHNlLgorCisgICAgXHNhIG9wZXJhdG9yPT0oKQorKi8KKworLyohCisgICAgXGZuIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3IgJlFXZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRl
cmF0b3I6Om9wZXJhdG9yKysoKQorCisgICAgVGhlIHByZWZpeCArKyBvcGVyYXRvciAoXGN7Kytp
dH0pIGFkdmFuY2VzIHRoZSBpdGVyYXRvciB0byB0aGUgbmV4dCBlbGVtZW50IGluIHRoZSBjb2xs
ZWN0aW9uCisgICAgYW5kIHJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIG5ldyBjdXJyZW50IGVs
ZW1lbnQuCisKKyAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gb24gUVdlYkVsZW1lbnRDb2xsZWN0
aW9uOjplbmQoKSBsZWFkcyB0byB1bmRlZmluZWQgcmVzdWx0cy4KKworICAgIFxzYSBvcGVyYXRv
ci0tKCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9y
IFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3I6Om9wZXJhdG9yKysoaW50KQorCisgICAg
XG92ZXJsb2FkCisKKyAgICBUaGUgcG9zdGZpeCArKyBvcGVyYXRvciAoXGN7aXQrK30pIGFkdmFu
Y2VzIHRoZSBpdGVyYXRvciB0byB0aGUgbmV4dCBlbGVtZW50IGluIHRoZSBjb2xsZWN0aW9uCisg
ICAgYW5kIHJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIHByZXZpb3VzbHkgY3VycmVudCBlbGVt
ZW50LgorCisgICAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIG9uIFFXZWJFbGVtZW50Q29sbGVjdGlv
bjo6ZW5kKCkgbGVhZHMgdG8gdW5kZWZpbmVkIHJlc3VsdHMuCisqLworCisvKiEKKyAgICBcZm4g
UVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvciAmUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpp
dGVyYXRvcjo6b3BlcmF0b3ItLSgpCisKKyAgICBUaGUgcHJlZml4IC0tIG9wZXJhdG9yIChcY3st
LWl0fSkgbWFrZXMgdGhlIHByZWNlZGluZyBlbGVtZW50IGN1cnJlbnQgYW5kIHJldHVybnMgYW4K
KyAgICBpdGVyYXRvciB0byB0aGUgbmV3IGN1cnJlbnQgZWxlbWVudC4KKworICAgIENhbGxpbmcg
dGhpcyBmdW5jdGlvbiBvbiBRV2ViRWxlbWVudENvbGxlY3Rpb246OmJlZ2luKCkgbGVhZHMgdG8g
dW5kZWZpbmVkIHJlc3VsdHMuCisKKyAgICBcc2Egb3BlcmF0b3IrKygpCisqLworCisvKiEKKyAg
ICBcZm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvciBRV2ViRWxlbWVudENvbGxlY3Rp
b246Oml0ZXJhdG9yOjpvcGVyYXRvci0tKGludCkKKworICAgIFxvdmVybG9hZAorCisgICAgVGhl
IHBvc3RmaXggLS0gb3BlcmF0b3IgKFxje2l0LS19KSBtYWtlcyB0aGUgcHJlY2VkaW5nIGVsZW1l
bnQgY3VycmVudCBhbmQgcmV0dXJucworICAgIGFuIGl0ZXJhdG9yIHRvIHRoZSBwcmV2aW91c2x5
IGN1cnJlbnQgZWxlbWVudC4KKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVudENvbGxlY3Rp
b246Oml0ZXJhdG9yICZRV2ViRWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9yOjpvcGVyYXRvcis9
KGludCBqKQorCisgICAgQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJ5IFxhIGogZWxlbWVudHMuIElm
IFxhIGogaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGJhY2t3YXJkLgorCisgICAgXHNh
IG9wZXJhdG9yLT0oKSwgb3BlcmF0b3IrKCkKKyovCisKKy8qIQorICAgIFxmbiBRV2ViRWxlbWVu
dENvbGxlY3Rpb246Oml0ZXJhdG9yICZRV2ViRWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9yOjpv
cGVyYXRvci09KGludCBqKQorCisgICAgTWFrZXMgdGhlIGl0ZXJhdG9yIGdvIGJhY2sgYnkgXGEg
aiBlbGVtZW50cy4gSWYgXGEgaiBpcyBuZWdhdGl2ZSwgdGhlIGl0ZXJhdG9yIGdvZXMgZm9yd2Fy
ZC4KKworICAgIFxzYSBvcGVyYXRvcis9KCksIG9wZXJhdG9yLSgpCisqLworCisvKiEKKyAgICBc
Zm4gUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvciBRV2ViRWxlbWVudENvbGxlY3Rpb246
Oml0ZXJhdG9yOjpvcGVyYXRvcisoaW50IGopIGNvbnN0CisKKyAgICBSZXR1cm5zIGFuIGl0ZXJh
dG9yIHRvIHRoZSBlbGVtZW50IGF0IFxhIGogcG9zaXRpb25zIGZvcndhcmQgZnJvbSB0aGlzIGl0
ZXJhdG9yLiBJZiBcYSBqCisgICAgaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGJhY2t3
YXJkLgorCisgICAgXHNhIG9wZXJhdG9yLSgpLCBvcGVyYXRvcis9KCkKKyovCisKKy8qIQorICAg
IFxmbiBRV2ViRWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9yIFFXZWJFbGVtZW50Q29sbGVjdGlv
bjo6aXRlcmF0b3I6Om9wZXJhdG9yLShpbnQgaikgY29uc3QKKworICAgIFJldHVybnMgYW4gaXRl
cmF0b3IgdG8gdGhlIGVsZW1lbnQgYXQgXGEgaiBwb3NpdGlvc24gYmFja3dhcmQgZnJvbSB0aGlz
IGl0ZXJhdG9yLgorICAgIElmIFxhIGogaXMgbmVnYXRpdmUsIHRoZSBpdGVyYXRvciBnb2VzIGZv
cndhcmQuCisKKyAgICBcc2Egb3BlcmF0b3IrKCksIG9wZXJhdG9yLT0oKQorKi8KKworLyohCisg
ICAgXGZuIGludCBRV2ViRWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9yOjpvcGVyYXRvci0oaXRl
cmF0b3Igb3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg
YmV0d2VlbiB0aGUgaXRlbSBwb2ludCB0byBieSBcYSBvdGhlcgorICAgIGFuZCB0aGUgZWxlbWVu
dCBwb2ludGVkIHRvIGJ5IHRoaXMgaXRlcmF0b3IuCisqLworCisvKiEKKyAgICBcZm4gYm9vbCBR
V2ViRWxlbWVudENvbGxlY3Rpb246Oml0ZXJhdG9yOjpvcGVyYXRvcjwoY29uc3QgaXRlcmF0b3Ig
Jm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IHBvaW50ZWQg
dG8gYnkgdGhpcyBpdGVyYXRvciBpcyBsZXNzIHRoYW4gdGhlIGVsZW1lbnQgcG9pbnRlZCB0bwor
ICAgIGJ5IHRoZSBcYSBvdGhlciBpdGVyYXRvci4KKyovCisKKy8qIQorICAgIFxmbiBib29sIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3I6Om9wZXJhdG9yPD0oY29uc3QgaXRlcmF0b3Ig
Jm90aGVyKSBjb25zdAorCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IHBvaW50ZWQg
dG8gYnkgdGhpcyBpdGVyYXRvciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCisgICAgZWxl
bWVudCBwb2ludGVkIHRvIGJ5IHRoZSBcYSBvdGhlciBpdGVyYXRvci4KKyovCisKKy8qIQorICAg
IFxmbiBib29sIFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6aXRlcmF0b3I6Om9wZXJhdG9yPihjb25z
dCBpdGVyYXRvciAmb3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVsZW1l
bnQgcG9pbnRlZCB0byBieSB0aGlzIGl0ZXJhdG9yIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVu
dCBwb2ludGVkIHRvCisgICAgYnkgdGhlIFxhIG90aGVyIGl0ZXJhdG9yLgorKi8KKworLyohCisg
ICAgXGZuIGJvb2wgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjppdGVyYXRvcjo6b3BlcmF0b3I+PShj
b25zdCBpdGVyYXRvciAmb3RoZXIpIGNvbnN0CisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVs
ZW1lbnQgcG9pbnRlZCB0byBieSB0aGlzIGl0ZXJhdG9yIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byB0aGUKKyAgICBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhlIFxhIG90aGVyIGl0ZXJhdG9y
LgorKi8KKworUVdlYkVsZW1lbnQgUXRXZWJFbGVtZW50UnVudGltZTo6Y3JlYXRlKEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIFFXZWJFbGVtZW50KGVsZW1lbnQpOworfQorCitFbGVt
ZW50KiBRdFdlYkVsZW1lbnRSdW50aW1lOjpnZXQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIGVsZW1lbnQubV9lbGVtZW50OworfQorCitzdGF0aWMgUVZhcmlhbnQg
Y29udmVydEpTVmFsdWVUb1dlYkVsZW1lbnRWYXJpYW50KEpTQzo6SlNPYmplY3QqIG9iamVjdCwg
aW50ICpkaXN0YW5jZSwgSGFzaFNldDxKU09iamVjdFJlZj4qIHZpc2l0ZWRPYmplY3RzKQorewor
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAwOworICAgIFFWYXJpYW50IHJldDsKKyAgICBpZiAob2Jq
ZWN0ICYmIG9iamVjdC0+aW5oZXJpdHMoSlNFbGVtZW50OjppbmZvKCkpKSB7CisgICAgICAgIGVs
ZW1lbnQgPShzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPihvYmplY3QpKS0+aW1wbCgpOworICAgICAg
ICAqZGlzdGFuY2UgPSAwOworICAgICAgICAvLyBBbGxvdyBvdGhlciBvYmplY3RzIHRvIHJlYWNo
IHRoaXMgb25lLiBUaGlzIHdvbid0IGNhdXNlIG91ciBhbGdvcml0aG0gdG8KKyAgICAgICAgLy8g
bG9vcCBzaW5jZSB3aGVuIHdlIGZpbmQgYW4gRWxlbWVudCB3ZSBkbyBub3QgcmVjdXJzZS4KKyAg
ICAgICAgdmlzaXRlZE9iamVjdHMtPnJlbW92ZSh0b1JlZihvYmplY3QpKTsKKyAgICB9IGVsc2Ug
aWYgKG9iamVjdCAmJiBvYmplY3QtPmluaGVyaXRzKEpTRG9jdW1lbnQ6OmluZm8oKSkpIHsKKyAg
ICAgICAgLy8gVG8gc3VwcG9ydCBUZXN0UnVubmVyUXQ6Om5vZGVzRnJvbVJlY3QoKSwgdXNlZCBp
biBEUlQsIHdlIGRvIGFuIGltcGxpY2l0CisgICAgICAgIC8vIGNvbnZlcnNpb24gZnJvbSAnZG9j
dW1lbnQnIHRvIHRoZSBRV2ViRWxlbWVudCByZXByZXNlbnRpbmcgdGhlICdkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQnLgorICAgICAgICAvLyBXZSBjYW4ndCBzaW1wbHkgdXNlIGEgUVZhcmlhbnRN
YXAgaW4gbm9kZXNGcm9tUmVjdCgpIGJlY2F1c2UgaXQgY3VycmVudGx5IHRpbWVzIG91dAorICAg
ICAgICAvLyB3aGVuIHNlcmlhbGl6aW5nIERPTU1pbWVUeXBlIGFuZCBET01QbHVnaW4sIGV2ZW4g
aWYgd2UgbGltaXQgdGhlIHJlY3Vyc2lvbi4KKyAgICAgICAgZWxlbWVudCA9KHN0YXRpY19jYXN0
PEpTRG9jdW1lbnQqPihvYmplY3QpKS0+aW1wbCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZTxRV2ViRWxlbWVudD4oUXRXZWJFbGVt
ZW50UnVudGltZTo6Y3JlYXRlKGVsZW1lbnQpKTsKK30KKworc3RhdGljIEpTQzo6SlNWYWx1ZSBj
b252ZXJ0V2ViRWxlbWVudFZhcmlhbnRUb0pTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFdl
YkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFFWYXJpYW50JiB2
YXJpYW50KQoreworICAgIHJldHVybiBXZWJDb3JlOjp0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
UXRXZWJFbGVtZW50UnVudGltZTo6Z2V0KHZhcmlhbnQudmFsdWU8UVdlYkVsZW1lbnQ+KCkpKTsK
K30KKwordm9pZCBRdFdlYkVsZW1lbnRSdW50aW1lOjppbml0aWFsaXplKCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpbnQgaWQgPSBxUmVnaXN0
ZXJNZXRhVHlwZTxRV2ViRWxlbWVudD4oKTsKKyAgICBKU0M6OkJpbmRpbmdzOjpyZWdpc3RlckN1
c3RvbVR5cGUoaWQsIGNvbnZlcnRKU1ZhbHVlVG9XZWJFbGVtZW50VmFyaWFudCwgY29udmVydFdl
YkVsZW1lbnRWYXJpYW50VG9KU1ZhbHVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJlbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MDdhNjkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5oCkBAIC0wLDAgKzEsMjY0
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJFTEVNRU5UX0gKKyNkZWZpbmUg
UVdFQkVMRU1FTlRfSAorCisjaW5jbHVkZSA8UXRDb3JlL3FzdHJpbmcuaD4KKyNpbmNsdWRlIDxR
dENvcmUvcXN0cmluZ2xpc3QuaD4KKyNpbmNsdWRlIDxRdENvcmUvcXJlY3QuaD4KKyNpbmNsdWRl
IDxRdENvcmUvcXZhcmlhbnQuaD4KKyNpbmNsdWRlIDxRdENvcmUvcXNoYXJlZGRhdGEuaD4KKwor
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFz
cyBFbGVtZW50OworICAgIGNsYXNzIE5vZGU7Cit9CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xh
c3MgUVBhaW50ZXI7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFXZWJGcmFtZTsKK2NsYXNz
IFFXZWJFbGVtZW50Q29sbGVjdGlvbjsKK2NsYXNzIFFXZWJFbGVtZW50UHJpdmF0ZTsKKworY2xh
c3MgUVdFQktJVF9FWFBPUlQgUVdlYkVsZW1lbnQgeworcHVibGljOgorICAgIFFXZWJFbGVtZW50
KCk7CisgICAgUVdlYkVsZW1lbnQoY29uc3QgUVdlYkVsZW1lbnQmKTsKKyAgICBRV2ViRWxlbWVu
dCAmb3BlcmF0b3I9KGNvbnN0IFFXZWJFbGVtZW50Jik7CisgICAgflFXZWJFbGVtZW50KCk7CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUVdlYkVsZW1lbnQmIG8pIGNvbnN0OworICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBRV2ViRWxlbWVudCYgbykgY29uc3Q7CisKKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0OworCisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIGZpbmRBbGwoY29uc3Qg
UVN0cmluZyAmc2VsZWN0b3JRdWVyeSkgY29uc3Q7CisgICAgUVdlYkVsZW1lbnQgZmluZEZpcnN0
KGNvbnN0IFFTdHJpbmcgJnNlbGVjdG9yUXVlcnkpIGNvbnN0OworCisgICAgdm9pZCBzZXRQbGFp
blRleHQoY29uc3QgUVN0cmluZyYgdGV4dCk7CisgICAgUVN0cmluZyB0b1BsYWluVGV4dCgpIGNv
bnN0OworCisgICAgdm9pZCBzZXRPdXRlclhtbChjb25zdCBRU3RyaW5nJiBtYXJrdXApOworICAg
IFFTdHJpbmcgdG9PdXRlclhtbCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRJbm5lclhtbChjb25z
dCBRU3RyaW5nJiBtYXJrdXApOworICAgIFFTdHJpbmcgdG9Jbm5lclhtbCgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYg
dmFsdWUpOworICAgIHZvaWQgc2V0QXR0cmlidXRlTlMoY29uc3QgUVN0cmluZyYgbmFtZXNwYWNl
VXJpLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CisgICAgUVN0
cmluZyBhdHRyaWJ1dGUoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmluZyYgZGVmYXVs
dFZhbHVlID0gUVN0cmluZygpKSBjb25zdDsKKyAgICBRU3RyaW5nIGF0dHJpYnV0ZU5TKGNvbnN0
IFFTdHJpbmcmIG5hbWVzcGFjZVVyaSwgY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0cmlu
ZyYgZGVmYXVsdFZhbHVlID0gUVN0cmluZygpKSBjb25zdDsKKyAgICBib29sIGhhc0F0dHJpYnV0
ZShjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBib29sIGhhc0F0dHJpYnV0ZU5TKGNv
bnN0IFFTdHJpbmcmIG5hbWVzcGFjZVVyaSwgY29uc3QgUVN0cmluZyYgbmFtZSkgY29uc3Q7Cisg
ICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgUVN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBy
ZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBRU3RyaW5nJiBuYW1lc3BhY2VVcmksIGNvbnN0IFFTdHJp
bmcmIG5hbWUpOworICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0OworICAgIFFTdHJpbmdM
aXN0IGF0dHJpYnV0ZU5hbWVzKGNvbnN0IFFTdHJpbmcmIG5hbWVzcGFjZVVyaSA9IFFTdHJpbmco
KSkgY29uc3Q7CisKKyAgICBRU3RyaW5nTGlzdCBjbGFzc2VzKCkgY29uc3Q7CisgICAgYm9vbCBo
YXNDbGFzcyhjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICB2b2lkIGFkZENsYXNzKGNv
bnN0IFFTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgcmVtb3ZlQ2xhc3MoY29uc3QgUVN0cmluZyYg
bmFtZSk7CisgICAgdm9pZCB0b2dnbGVDbGFzcyhjb25zdCBRU3RyaW5nJiBuYW1lKTsKKworICAg
IGJvb2wgaGFzRm9jdXMoKSBjb25zdDsKKyAgICB2b2lkIHNldEZvY3VzKCk7CisKKyAgICBRUmVj
dCBnZW9tZXRyeSgpIGNvbnN0OworCisgICAgUVN0cmluZyB0YWdOYW1lKCkgY29uc3Q7CisgICAg
UVN0cmluZyBwcmVmaXgoKSBjb25zdDsKKyAgICBRU3RyaW5nIGxvY2FsTmFtZSgpIGNvbnN0Owor
ICAgIFFTdHJpbmcgbmFtZXNwYWNlVXJpKCkgY29uc3Q7CisKKyAgICBRV2ViRWxlbWVudCBwYXJl
bnQoKSBjb25zdDsKKyAgICBRV2ViRWxlbWVudCBmaXJzdENoaWxkKCkgY29uc3Q7CisgICAgUVdl
YkVsZW1lbnQgbGFzdENoaWxkKCkgY29uc3Q7CisgICAgUVdlYkVsZW1lbnQgbmV4dFNpYmxpbmco
KSBjb25zdDsKKyAgICBRV2ViRWxlbWVudCBwcmV2aW91c1NpYmxpbmcoKSBjb25zdDsKKyAgICBR
V2ViRWxlbWVudCBkb2N1bWVudCgpIGNvbnN0OworICAgIFFXZWJGcmFtZSAqd2ViRnJhbWUoKSBj
b25zdDsKKworICAgIC8vIFRPRE86IEFkZCBRV2ViRWxlbWVudENvbGxlY3Rpb24gb3ZlcmxvYWRz
CisgICAgLy8gZG9jcyBuZWVkIGV4YW1wbGUgc25pcHBldAorICAgIHZvaWQgYXBwZW5kSW5zaWRl
KGNvbnN0IFFTdHJpbmcmIG1hcmt1cCk7CisgICAgdm9pZCBhcHBlbmRJbnNpZGUoY29uc3QgUVdl
YkVsZW1lbnQmIGVsZW1lbnQpOworCisgICAgLy8gZG9jcyBuZWVkIGV4YW1wbGUgc25pcHBldAor
ICAgIHZvaWQgcHJlcGVuZEluc2lkZShjb25zdCBRU3RyaW5nJiBtYXJrdXApOworICAgIHZvaWQg
cHJlcGVuZEluc2lkZShjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCk7CisKKyAgICAvLyBkb2Nz
IG5lZWQgZXhhbXBsZSBzbmlwcGV0CisgICAgdm9pZCBhcHBlbmRPdXRzaWRlKGNvbnN0IFFTdHJp
bmcmIG1hcmt1cCk7CisgICAgdm9pZCBhcHBlbmRPdXRzaWRlKGNvbnN0IFFXZWJFbGVtZW50JiBl
bGVtZW50KTsKKworICAgIC8vIGRvY3MgbmVlZCBleGFtcGxlIHNuaXBwZXQKKyAgICB2b2lkIHBy
ZXBlbmRPdXRzaWRlKGNvbnN0IFFTdHJpbmcmIG1hcmt1cCk7CisgICAgdm9pZCBwcmVwZW5kT3V0
c2lkZShjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCk7CisKKyAgICAvLyBkb2NzIG5lZWQgZXhh
bXBsZSBzbmlwcGV0CisgICAgdm9pZCBlbmNsb3NlQ29udGVudHNXaXRoKGNvbnN0IFFXZWJFbGVt
ZW50JiBlbGVtZW50KTsKKyAgICB2b2lkIGVuY2xvc2VDb250ZW50c1dpdGgoY29uc3QgUVN0cmlu
ZyYgbWFya3VwKTsKKyAgICB2b2lkIGVuY2xvc2VXaXRoKGNvbnN0IFFTdHJpbmcmIG1hcmt1cCk7
CisgICAgdm9pZCBlbmNsb3NlV2l0aChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCk7CisKKyAg
ICB2b2lkIHJlcGxhY2UoY29uc3QgUVN0cmluZyYgbWFya3VwKTsKKyAgICB2b2lkIHJlcGxhY2Uo
Y29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQpOworCisgICAgUVdlYkVsZW1lbnQgY2xvbmUoKSBj
b25zdDsKKyAgICBRV2ViRWxlbWVudCYgdGFrZUZyb21Eb2N1bWVudCgpOworICAgIHZvaWQgcmVt
b3ZlRnJvbURvY3VtZW50KCk7CisgICAgdm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOworCisgICAg
UVZhcmlhbnQgZXZhbHVhdGVKYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdFNvdXJjZSk7
CisKKyAgICBlbnVtIFN0eWxlUmVzb2x2ZVN0cmF0ZWd5IHsKKyAgICAgICAgIElubGluZVN0eWxl
LAorICAgICAgICAgQ2FzY2FkZWRTdHlsZSwKKyAgICAgICAgIENvbXB1dGVkU3R5bGUsCisgICAg
fTsKKyAgICBRU3RyaW5nIHN0eWxlUHJvcGVydHkoY29uc3QgUVN0cmluZyYgbmFtZSwgU3R5bGVS
ZXNvbHZlU3RyYXRlZ3kgc3RyYXRlZ3kpIGNvbnN0OworICAgIHZvaWQgc2V0U3R5bGVQcm9wZXJ0
eShjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CisKKyAgICB2b2lk
IHJlbmRlcihRUGFpbnRlciogcGFpbnRlcik7CisgICAgdm9pZCByZW5kZXIoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFSZWN0JiBjbGlwUmVjdCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
UVdlYkVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworICAgIGV4cGxpY2l0IFFXZWJFbGVtZW50
KFdlYkNvcmU6Ok5vZGUqKTsKKworICAgIHN0YXRpYyBRV2ViRWxlbWVudCBlbmNsb3NpbmdFbGVt
ZW50KFdlYkNvcmU6Ok5vZGUqKTsKKworICAgIGZyaWVuZCBjbGFzcyBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lQWRhcHRlcjsKKyAgICBmcmllbmQg
Y2xhc3MgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOworICAgIGZyaWVuZCBjbGFzcyBRV2ViSGl0VGVz
dFJlc3VsdDsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOworICAg
IGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRl
OworICAgIGZyaWVuZCBjbGFzcyBRdFdlYkVsZW1lbnRSdW50aW1lOworCisgICAgUVdlYkVsZW1l
bnRQcml2YXRlKiBkOworICAgIFdlYkNvcmU6OkVsZW1lbnQqIG1fZWxlbWVudDsKK307CisKK2Ns
YXNzIFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JU
IFFXZWJFbGVtZW50Q29sbGVjdGlvbgoreworcHVibGljOgorICAgIFFXZWJFbGVtZW50Q29sbGVj
dGlvbigpOworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbihjb25zdCBRV2ViRWxlbWVudCAmY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFFTdHJpbmcgJnF1ZXJ5KTsKKyAgICBRV2ViRWxlbWVudENvbGxl
Y3Rpb24oY29uc3QgUVdlYkVsZW1lbnRDb2xsZWN0aW9uICYpOworICAgIFFXZWJFbGVtZW50Q29s
bGVjdGlvbiAmb3BlcmF0b3I9KGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmKTsKKyAgICB+
UVdlYkVsZW1lbnRDb2xsZWN0aW9uKCk7CisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24gb3Bl
cmF0b3IrKGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiAmb3RoZXIpIGNvbnN0OworICAgIGlu
bGluZSBRV2ViRWxlbWVudENvbGxlY3Rpb24gJm9wZXJhdG9yKz0oY29uc3QgUVdlYkVsZW1lbnRD
b2xsZWN0aW9uICZvdGhlcikKKyAgICB7CisgICAgICAgIGFwcGVuZChvdGhlcik7IHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rp
b24gJmNvbGxlY3Rpb24pOworCisgICAgaW50IGNvdW50KCkgY29uc3Q7CisgICAgUVdlYkVsZW1l
bnQgYXQoaW50IGkpIGNvbnN0OworICAgIGlubGluZSBRV2ViRWxlbWVudCBvcGVyYXRvcltdKGlu
dCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQorCisgICAgaW5saW5lIFFXZWJFbGVtZW50IGZp
cnN0KCkgY29uc3QgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBpbmxpbmUgUVdlYkVsZW1lbnQgbGFz
dCgpIGNvbnN0IHsgcmV0dXJuIGF0KGNvdW50KCkgLSAxKTsgfQorCisgICAgUUxpc3Q8UVdlYkVs
ZW1lbnQ+IHRvTGlzdCgpIGNvbnN0OworCisgICAgY2xhc3MgY29uc3RfaXRlcmF0b3IgeworICAg
ICAgIHB1YmxpYzoKKyAgICAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yKGNvbnN0IFFXZWJF
bGVtZW50Q29sbGVjdGlvbiogY29sbGVjdGlvbiwgaW50IGluZGV4KSA6IGkoaW5kZXgpLCBjb2xs
ZWN0aW9uKGNvbGxlY3Rpb24pIHt9CisgICAgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvcihj
b25zdCBjb25zdF9pdGVyYXRvciYgbykgOiBpKG8uaSksIGNvbGxlY3Rpb24oby5jb2xsZWN0aW9u
KSB7fQorCisgICAgICAgICAgIGlubGluZSBjb25zdCBRV2ViRWxlbWVudCBvcGVyYXRvciooKSBj
b25zdCB7IHJldHVybiBjb2xsZWN0aW9uLT5hdChpKTsgfQorCisgICAgICAgICAgIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG8pIGNvbnN0IHsgcmV0dXJuIGkg
PT0gby5pICYmIGNvbGxlY3Rpb24gPT0gby5jb2xsZWN0aW9uOyB9CisgICAgICAgICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG8pIGNvbnN0IHsgcmV0dXJu
IGkgIT0gby5pIHx8IGNvbGxlY3Rpb24gIT0gby5jb2xsZWN0aW9uOyB9CisgICAgICAgICAgIGlu
bGluZSBib29sIG9wZXJhdG9yPChjb25zdCBjb25zdF9pdGVyYXRvciYgbykgY29uc3QgeyByZXR1
cm4gaSA8IG8uaTsgfQorICAgICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGNv
bnN0X2l0ZXJhdG9yJiBvKSBjb25zdCB7IHJldHVybiBpIDw9IG8uaTsgfQorICAgICAgICAgICBp
bmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgY29uc3RfaXRlcmF0b3ImIG8pIGNvbnN0IHsgcmV0
dXJuIGkgPiBvLmk7IH0KKyAgICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBj
b25zdF9pdGVyYXRvciYgbykgY29uc3QgeyByZXR1cm4gaSA+PSBvLmk7IH0KKworICAgICAgICAg
ICBpbmxpbmUgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7ICsraTsgcmV0dXJuICp0aGlz
OyB9CisgICAgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgeyBj
b25zdF9pdGVyYXRvciBuKGNvbGxlY3Rpb24sIGkpOyArK2k7IHJldHVybiBuOyB9CisgICAgICAg
ICAgIGlubGluZSBjb25zdF9pdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsgaS0tOyByZXR1cm4gKnRo
aXM7IH0KKyAgICAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7
IGNvbnN0X2l0ZXJhdG9yIG4oY29sbGVjdGlvbiwgaSk7IGktLTsgcmV0dXJuIG47IH0KKyAgICAg
ICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcis9KGludCBqKSB7IGkgKz0gajsg
cmV0dXJuICp0aGlzOyB9CisgICAgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciYgb3BlcmF0
b3ItPShpbnQgaikgeyBpIC09IGo7IHJldHVybiAqdGhpczsgfQorICAgICAgICAgICBpbmxpbmUg
Y29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKGludCBqKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVy
YXRvcihjb2xsZWN0aW9uLCBpICsgaik7IH0KKyAgICAgICAgICAgaW5saW5lIGNvbnN0X2l0ZXJh
dG9yIG9wZXJhdG9yLShpbnQgaikgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoY29sbGVj
dGlvbiwgaSAtIGopOyB9CisgICAgICAgICAgIGlubGluZSBpbnQgb3BlcmF0b3ItKGNvbnN0X2l0
ZXJhdG9yIGopIGNvbnN0IHsgcmV0dXJuIGkgLSBqLmk7IH0KKyAgICAgICBwcml2YXRlOgorICAg
ICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rpb24q
IGNvbnN0IGNvbGxlY3Rpb247CisgICAgfTsKKyAgICBmcmllbmQgY2xhc3MgY29uc3RfaXRlcmF0
b3I7CisKKyAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBj
b25zdEJlZ2luKCk7IH0KKyAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RFbmQoKTsgfQorICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBjb25zdEJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgMCk7IH0KKyAgICBpbmxpbmUg
Y29uc3RfaXRlcmF0b3IgY29uc3RFbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0
aGlzLCBjb3VudCgpKTsgfTsKKworICAgIGNsYXNzIGl0ZXJhdG9yIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIGlubGluZSBpdGVyYXRvcihjb25zdCBRV2ViRWxlbWVudENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIGludCBpbmRleCkgOiBpKGluZGV4KSwgY29sbGVjdGlvbihjb2xsZWN0aW9uKSB7fQor
ICAgICAgICBpbmxpbmUgaXRlcmF0b3IoY29uc3QgaXRlcmF0b3ImIG8pIDogaShvLmkpLCBjb2xs
ZWN0aW9uKG8uY29sbGVjdGlvbikge30KKworICAgICAgICBpbmxpbmUgUVdlYkVsZW1lbnQgb3Bl
cmF0b3IqKCkgY29uc3QgeyByZXR1cm4gY29sbGVjdGlvbi0+YXQoaSk7IH0KKworICAgICAgICBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvKSBjb25zdCB7IHJldHVybiBp
ID09IG8uaSAmJiBjb2xsZWN0aW9uID09IG8uY29sbGVjdGlvbjsgfQorICAgICAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvKSBjb25zdCB7IHJldHVybiBpICE9IG8u
aSB8fCBjb2xsZWN0aW9uICE9IG8uY29sbGVjdGlvbjsgfQorICAgICAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvcjwoY29uc3QgaXRlcmF0b3ImIG8pIGNvbnN0IHsgcmV0dXJuIGkgPCBvLmk7IH0KKyAg
ICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBpdGVyYXRvciYgbykgY29uc3QgeyBy
ZXR1cm4gaSA8PSBvLmk7IH0KKyAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IGl0
ZXJhdG9yJiBvKSBjb25zdCB7IHJldHVybiBpID4gby5pOyB9CisgICAgICAgIGlubGluZSBib29s
IG9wZXJhdG9yPj0oY29uc3QgaXRlcmF0b3ImIG8pIGNvbnN0IHsgcmV0dXJuIGkgPj0gby5pOyB9
CisKKyAgICAgICAgaW5saW5lIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK2k7IHJldHVybiAq
dGhpczsgfQorICAgICAgICBpbmxpbmUgaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsgaXRlcmF0
b3Igbihjb2xsZWN0aW9uLCBpKTsgKytpOyByZXR1cm4gbjsgfQorICAgICAgICBpbmxpbmUgaXRl
cmF0b3ImIG9wZXJhdG9yLS0oKSB7IGktLTsgcmV0dXJuICp0aGlzOyB9CisgICAgICAgIGlubGlu
ZSBpdGVyYXRvciBvcGVyYXRvci0tKGludCkgeyBpdGVyYXRvciBuKGNvbGxlY3Rpb24sIGkpOyBp
LS07IHJldHVybiBuOyB9CisgICAgICAgIGlubGluZSBpdGVyYXRvciYgb3BlcmF0b3IrPShpbnQg
aikgeyBpICs9IGo7IHJldHVybiAqdGhpczsgfQorICAgICAgICBpbmxpbmUgaXRlcmF0b3ImIG9w
ZXJhdG9yLT0oaW50IGopIHsgaSAtPSBqOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgaW5saW5l
IGl0ZXJhdG9yIG9wZXJhdG9yKyhpbnQgaikgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoY29sbGVj
dGlvbiwgaSArIGopOyB9CisgICAgICAgIGlubGluZSBpdGVyYXRvciBvcGVyYXRvci0oaW50IGop
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKGNvbGxlY3Rpb24sIGkgLSBqKTsgfQorICAgICAgICBp
bmxpbmUgaW50IG9wZXJhdG9yLShpdGVyYXRvciBqKSBjb25zdCB7IHJldHVybiBpIC0gai5pOyB9
CisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IGk7CisgICAgICAgIGNvbnN0IFFXZWJFbGVtZW50
Q29sbGVjdGlvbiogY29uc3QgY29sbGVjdGlvbjsKKyAgICB9OworICAgIGZyaWVuZCBjbGFzcyBp
dGVyYXRvcjsKKworICAgIGlubGluZSBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGl0ZXJhdG9y
KHRoaXMsIDApOyB9CisgICAgaW5saW5lIGl0ZXJhdG9yIGVuZCgpICB7IHJldHVybiBpdGVyYXRv
cih0aGlzLCBjb3VudCgpKTsgfQorcHJpdmF0ZToKKyAgICBRRXhwbGljaXRseVNoYXJlZERhdGFQ
b2ludGVyPFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU+IGQ7Cit9OworCitRX0RFQ0xBUkVf
TUVUQVRZUEUoUVdlYkVsZW1lbnQpCisKKyNlbmRpZiAvLyBRV0VCRUxFTUVOVF9ICmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudF9wLmggYi9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2ViZWxlbWVudF9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjA0YTVjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJl
bGVtZW50X3AuaApAQCAtMCwwICsxLDM4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IHF3ZWJlbGVtZW50X3BfaAorI2RlZmluZSBxd2ViZWxlbWVudF9wX2gKKworY2xhc3MgUVdlYkVs
ZW1lbnQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEVsZW1lbnQ7Cit9CisKKy8vIHRo
aXMgaXMgaGVyZSBhcyBhIHByb3h5LCBzbyB3ZSdkIGhhdmUgYSBjbGFzcyB0byBmcmllbmQgaW4g
UVdlYkVsZW1lbnQsCisvLyBhcyBnZXR0aW5nL3NldHRpbmcgYSBXZWJDb3JlIGluIFFXZWJFbGVt
ZW50IGlzIHByaXZhdGUKK2NsYXNzIFF0V2ViRWxlbWVudFJ1bnRpbWUgeworcHVibGljOgorICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKyAgICBzdGF0aWMgUVdlYkVsZW1lbnQgY3JlYXRl
KFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCogZ2V0KGNv
bnN0IFFXZWJFbGVtZW50Jik7Cit9OworCisjZW5kaWYgLy8gcXdlYmVsZW1lbnRfcF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYTdiYzgzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJoaXN0b3J5LmNwcApAQCAtMCwwICsxLDU3MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJoaXN0b3J5LmgiCisjaW5jbHVkZSAicXdl
Ymhpc3RvcnlfcC5oIgorCisjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCisjaW5jbHVkZSAiSW1hZ2Uu
aCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgPFFXZWJQYWdlQWRhcHRlci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaW5jbHVkZSA8UVNoYXJlZERh
dGE+CisjaW5jbHVkZSA8UURlYnVnPgorCitzdGF0aWMgY29uc3QgaW50IEhpc3RvcnlTdHJlYW1W
ZXJzaW9uID0gMjsKKworLyohCisgIFxjbGFzcyBRV2ViSGlzdG9yeUl0ZW0KKyAgXHNpbmNlIDQu
NAorICBcYnJpZWYgVGhlIFFXZWJIaXN0b3J5SXRlbSBjbGFzcyByZXByZXNlbnRzIG9uZSBpdGVt
IGluIHRoZSBoaXN0b3J5IG9mIGEgUVdlYlBhZ2UKKworICBcaW5tb2R1bGUgUXRXZWJLaXQKKwor
ICBFYWNoIFFXZWJIaXN0b3J5SXRlbSBpbnN0YW5jZSByZXByZXNlbnRzIGFuIGVudHJ5IGluIHRo
ZSBoaXN0b3J5IHN0YWNrIG9mIGEgV2ViIHBhZ2UsCisgIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIHBhZ2UsIGl0cyBsb2NhdGlvbiwgYW5kIHdoZW4gaXQgd2FzIGxhc3QgdmlzaXRl
ZC4KKworICBUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBw
YWdlIGhlbGQgYnkgdGhlIGhpc3RvcnkgaXRlbSwgYW5kCisgIHRoZSBmdW5jdGlvbnMgdXNlZCB0
byBhY2Nlc3MgdGhlbS4KKworICBcdGFibGUKKyAgXGhlYWRlciBcbGkgRnVuY3Rpb24gICAgICBc
bGkgRGVzY3JpcHRpb24KKyAgXHJvdyAgICBcbGkgdGl0bGUoKSAgICAgICBcbGkgVGhlIHBhZ2Ug
dGl0bGUuCisgIFxyb3cgICAgXGxpIHVybCgpICAgICAgICAgXGxpIFRoZSBsb2NhdGlvbiBvZiB0
aGUgcGFnZS4KKyAgXHJvdyAgICBcbGkgb3JpZ2luYWxVcmwoKSBcbGkgVGhlIFVSTCB1c2VkIHRv
IGFjY2VzcyB0aGUgcGFnZS4KKyAgXHJvdyAgICBcbGkgbGFzdFZpc2l0ZWQoKSBcbGkgVGhlIGRh
dGUgYW5kIHRpbWUgb2YgdGhlIHVzZXIncyBsYXN0IHZpc2l0IHRvIHRoZSBwYWdlLgorICBccm93
ICAgIFxsaSBpY29uKCkgICAgICAgIFxsaSBUaGUgaWNvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHBh
Z2UgdGhhdCB3YXMgcHJvdmlkZWQgYnkgdGhlIHNlcnZlci4KKyAgXHJvdyAgICBcbGkgdXNlckRh
dGEoKSAgICBcbGkgVGhlIHVzZXIgc3BlY2lmaWMgZGF0YSB0aGF0IHdhcyBzdG9yZWQgd2l0aCB0
aGUgaGlzdG9yeSBpdGVtLgorICBcZW5kdGFibGUKKworICBcbm90ZSBRV2ViSGlzdG9yeUl0ZW0g
b2JqZWN0cyBhcmUgdmFsdWUgYmFzZWQsIGJ1dCBcZXtleHBsaWNpdGx5IHNoYXJlZH0uIENoYW5n
aW5nCisgIGEgUVdlYkhpc3RvcnlJdGVtIGluc3RhbmNlIGJ5IGNhbGxpbmcgc2V0VXNlckRhdGEo
KSB3aWxsIGNoYW5nZSBhbGwgY29waWVzIG9mIHRoYXQKKyAgaW5zdGFuY2UuCisKKyAgXHNhIFFX
ZWJIaXN0b3J5LCBRV2ViUGFnZTo6aGlzdG9yeSgpLCBRV2ViSGlzdG9yeUludGVyZmFjZQorKi8K
KworLyohCisgIENvbnN0cnVjdHMgYSBoaXN0b3J5IGl0ZW0gZnJvbSBcYSBvdGhlci4gVGhlIG5l
dyBpdGVtIGFuZCBcYSBvdGhlcgorICB3aWxsIHNoYXJlIHRoZWlyIGRhdGEsIGFuZCBtb2RpZnlp
bmcgZWl0aGVyIHRoaXMgaXRlbSBvciBcYSBvdGhlciB3aWxsCisgIG1vZGlmeSBib3RoIGluc3Rh
bmNlcy4KKyovCitRV2ViSGlzdG9yeUl0ZW06OlFXZWJIaXN0b3J5SXRlbShjb25zdCBRV2ViSGlz
dG9yeUl0ZW0gJm90aGVyKQorICAgIDogZChvdGhlci5kKQoreworfQorCisvKiEKKyAgQXNzaWdu
cyB0aGUgXGEgb3RoZXIgaGlzdG9yeSBpdGVtIHRvIHRoaXMuIFRoaXMgaXRlbSBhbmQgXGEgb3Ro
ZXIKKyAgd2lsbCBzaGFyZSB0aGVpciBkYXRhLCBhbmQgbW9kaWZ5aW5nIGVpdGhlciB0aGlzIGl0
ZW0gb3IgXGEgb3RoZXIgd2lsbAorICBtb2RpZnkgYm90aCBpbnN0YW5jZXMuCisqLworUVdlYkhp
c3RvcnlJdGVtICZRV2ViSGlzdG9yeUl0ZW06Om9wZXJhdG9yPShjb25zdCBRV2ViSGlzdG9yeUl0
ZW0gJm90aGVyKQoreworICAgIGQgPSBvdGhlci5kOworICAgIHJldHVybiAqdGhpczsKK30KKwor
LyohCisgIERlc3Ryb3lzIHRoZSBoaXN0b3J5IGl0ZW0uCisqLworUVdlYkhpc3RvcnlJdGVtOjp+
UVdlYkhpc3RvcnlJdGVtKCkKK3sKK30KKworLyohCisgUmV0dXJucyB0aGUgb3JpZ2luYWwgVVJM
IGFzc29jaWF0ZWQgd2l0aCB0aGUgaGlzdG9yeSBpdGVtLgorCisgXHNhIHVybCgpCisqLworUVVy
bCBRV2ViSGlzdG9yeUl0ZW06Om9yaWdpbmFsVXJsKCkgY29uc3QKK3sKKyAgICBpZiAoZC0+aXRl
bSkKKyAgICAgICAgcmV0dXJuIGQtPml0ZW0tPm9yaWdpbmFsVVJMKCk7CisgICAgcmV0dXJuIFFV
cmwoKTsKK30KKworCisvKiEKKyBSZXR1cm5zIHRoZSBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBo
aXN0b3J5IGl0ZW0uCisKKyBcc2Egb3JpZ2luYWxVcmwoKSwgdGl0bGUoKSwgbGFzdFZpc2l0ZWQo
KQorKi8KK1FVcmwgUVdlYkhpc3RvcnlJdGVtOjp1cmwoKSBjb25zdAoreworICAgIGlmIChkLT5p
dGVtKQorICAgICAgICByZXR1cm4gZC0+aXRlbS0+dXJsKCk7CisgICAgcmV0dXJuIFFVcmwoKTsK
K30KKworCisvKiEKKyBSZXR1cm5zIHRoZSB0aXRsZSBvZiB0aGUgcGFnZSBhc3NvY2lhdGVkIHdp
dGggdGhlIGhpc3RvcnkgaXRlbS4KKworIFxzYSBpY29uKCksIHVybCgpLCBsYXN0VmlzaXRlZCgp
CisqLworUVN0cmluZyBRV2ViSGlzdG9yeUl0ZW06OnRpdGxlKCkgY29uc3QKK3sKKyAgICBpZiAo
ZC0+aXRlbSkKKyAgICAgICAgcmV0dXJuIGQtPml0ZW0tPnRpdGxlKCk7CisgICAgcmV0dXJuIFFT
dHJpbmcoKTsKK30KKworCisvKiEKKyBSZXR1cm5zIHRoZSBkYXRlIGFuZCB0aW1lIHRoYXQgdGhl
IHBhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtIHdhcyBsYXN0IHZpc2l0ZWQuCisKKyBcc2Eg
dGl0bGUoKSwgaWNvbigpLCB1cmwoKQorKi8KK1FEYXRlVGltZSBRV2ViSGlzdG9yeUl0ZW06Omxh
c3RWaXNpdGVkKCkgY29uc3QKK3sKKyAgICAvL0ZJWE1FIDogdGhpcyB3aWxsIGJlIHdyb25nIHVu
bGVzcyB3ZSBjb3JyZWN0bHkgc2V0IGxhc3RWaXNpdGVkVGltZSBvdXJzZWx2ZXMKKyAgICBpZiAo
ZC0+aXRlbSkKKyAgICAgICAgcmV0dXJuIFFEYXRlVGltZTo6ZnJvbVRpbWVfdCgodWludClkLT5p
dGVtLT5sYXN0VmlzaXRlZFRpbWUoKSk7CisgICAgcmV0dXJuIFFEYXRlVGltZSgpOworfQorCisK
Ky8qIQorIFJldHVybnMgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBoaXN0b3J5IGl0ZW0u
CisKKyBcc2EgdGl0bGUoKSwgdXJsKCksIGxhc3RWaXNpdGVkKCkKKyovCitRSWNvbiBRV2ViSGlz
dG9yeUl0ZW06Omljb24oKSBjb25zdAoreworICAgIGlmIChkLT5pdGVtKQorICAgICAgICByZXR1
cm4gKldlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VV
UkwoZC0+aXRlbS0+dXJsKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CisKKyAgICByZXR1
cm4gUUljb24oKTsKK30KKworLyohCisgIFxzaW5jZSA0LjUKKyAgUmV0dXJucyB0aGUgdXNlciBz
cGVjaWZpYyBkYXRhIHRoYXQgd2FzIHN0b3JlZCB3aXRoIHRoZSBoaXN0b3J5IGl0ZW0uCisKKyAg
XHNhIHNldFVzZXJEYXRhKCkKKyovCitRVmFyaWFudCBRV2ViSGlzdG9yeUl0ZW06OnVzZXJEYXRh
KCkgY29uc3QKK3sKKyAgICBpZiAoZC0+aXRlbSkKKyAgICAgICAgcmV0dXJuIGQtPml0ZW0tPnVz
ZXJEYXRhKCk7CisgICAgcmV0dXJuIFFWYXJpYW50KCk7Cit9CisKKy8qIQorICBcc2luY2UgNC41
CisKKyBTdG9yZXMgdXNlciBzcGVjaWZpYyBkYXRhIFxhIHVzZXJEYXRhIHdpdGggdGhlIGhpc3Rv
cnkgaXRlbS4KKyAKKyBcbm90ZSBBbGwgY29waWVzIG9mIHRoaXMgaXRlbSB3aWxsIGJlIG1vZGlm
aWVkLgorCisgXHNhIHVzZXJEYXRhKCkKKyovCit2b2lkIFFXZWJIaXN0b3J5SXRlbTo6c2V0VXNl
ckRhdGEoY29uc3QgUVZhcmlhbnQmIHVzZXJEYXRhKQoreworICAgIGlmIChkLT5pdGVtKQorICAg
ICAgICBkLT5pdGVtLT5zZXRVc2VyRGF0YSh1c2VyRGF0YSk7Cit9CisKKy8qISoKKyAgXGludGVy
bmFsCisqLworUVdlYkhpc3RvcnlJdGVtOjpRV2ViSGlzdG9yeUl0ZW0oUVdlYkhpc3RvcnlJdGVt
UHJpdmF0ZSAqcHJpdikKK3sKKyAgICBkID0gcHJpdjsKK30KKworLyohCisgICAgXHNpbmNlIDQu
NQorICAgIFJldHVybnMgd2hldGhlciB0aGlzIGlzIGEgdmFsaWQgaGlzdG9yeSBpdGVtLgorKi8K
K2Jvb2wgUVdlYkhpc3RvcnlJdGVtOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
aXRlbTsKK30KKworLyohCisgIFxjbGFzcyBRV2ViSGlzdG9yeQorICBcc2luY2UgNC40CisgIFxi
cmllZiBUaGUgUVdlYkhpc3RvcnkgY2xhc3MgcmVwcmVzZW50cyB0aGUgaGlzdG9yeSBvZiBhIFFX
ZWJQYWdlCisKKyAgXGlubW9kdWxlIFF0V2ViS2l0CisKKyAgRWFjaCBRV2ViUGFnZSBpbnN0YW5j
ZSBjb250YWlucyBhIGhpc3Rvcnkgb2YgdmlzaXRlZCBwYWdlcyB0aGF0IGNhbiBiZSBhY2Nlc3Nl
ZAorICBieSBRV2ViUGFnZTo6aGlzdG9yeSgpLiBRV2ViSGlzdG9yeSByZXByZXNlbnRzIHRoaXMg
aGlzdG9yeSBhbmQgbWFrZXMgaXQgcG9zc2libGUKKyAgdG8gbmF2aWdhdGUgaXQuCisKKyAgVGhl
IGhpc3RvcnkgdXNlcyB0aGUgY29uY2VwdCBvZiBhIFxle2N1cnJlbnQgaXRlbX0sIGRpdmlkaW5n
IHRoZSBwYWdlcyB2aXNpdGVkCisgIGludG8gdGhvc2UgdGhhdCBjYW4gYmUgdmlzaXRlZCBieSBu
YXZpZ2F0aW5nIFxlIGJhY2sgYW5kIFxlIGZvcndhcmQgdXNpbmcgdGhlCisgIGJhY2soKSBhbmQg
Zm9yd2FyZCgpIGZ1bmN0aW9ucy4gVGhlIGN1cnJlbnQgaXRlbSBjYW4gYmUgb2J0YWluZWQgYnkg
Y2FsbGluZworICBjdXJyZW50SXRlbSgpLCBhbmQgYW4gYXJiaXRyYXJ5IGl0ZW0gaW4gdGhlIGhp
c3RvcnkgY2FuIGJlIG1hZGUgdGhlIGN1cnJlbnQKKyAgaXRlbSBieSBwYXNzaW5nIGl0IHRvIGdv
VG9JdGVtKCkuCisKKyAgQSBsaXN0IG9mIGl0ZW1zIGRlc2NyaWJpbmcgdGhlIHBhZ2VzIHRoYXQg
Y2FuIGJlIHZpc2l0ZWQgYnkgZ29pbmcgYmFjayBjYW4gYmUKKyAgb2J0YWluZWQgYnkgY2FsbGlu
ZyB0aGUgYmFja0l0ZW1zKCkgZnVuY3Rpb247IHNpbWlsYXJseSwgaXRlbXMgZGVzY3JpYmluZyB0
aGUKKyAgcGFnZXMgYWhlYWQgb2YgdGhlIGN1cnJlbnQgcGFnZSBjYW4gYmUgb2J0YWluZWQgd2l0
aCB0aGUgZm9yd2FyZEl0ZW1zKCkgZnVuY3Rpb24uCisgIFRoZSB0b3RhbCBsaXN0IG9mIGl0ZW1z
IGlzIG9idGFpbmVkIHdpdGggdGhlIGl0ZW1zKCkgZnVuY3Rpb24uCisKKyAgSnVzdCBhcyB3aXRo
IGNvbnRhaW5lcnMsIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGV4YW1pbmUgdGhlIGhpc3Rv
cnkgaW4gdGVybXMKKyAgb2YgYSBsaXN0LiBBcmJpdHJhcnkgaXRlbXMgaW4gdGhlIGhpc3Rvcnkg
Y2FuIGJlIG9idGFpbmVkIHdpdGggaXRlbUF0KCksIHRoZSB0b3RhbAorICBudW1iZXIgb2YgaXRl
bXMgaXMgZ2l2ZW4gYnkgY291bnQoKSwgYW5kIHRoZSBoaXN0b3J5IGNhbiBiZSBjbGVhcmVkIHdp
dGggdGhlCisgIGNsZWFyKCkgZnVuY3Rpb24uCisKKyAgUVdlYkhpc3RvcnkncyBzdGF0ZSBjYW4g
YmUgc2F2ZWQgdG8gYSBRRGF0YVN0cmVhbSB1c2luZyB0aGUgPj4gb3BlcmF0b3IgYW5kIGxvYWRl
ZAorICBieSB1c2luZyB0aGUgPDwgb3BlcmF0b3IuCisKKyAgXHNhIFFXZWJIaXN0b3J5SXRlbSwg
UVdlYkhpc3RvcnlJbnRlcmZhY2UsIFFXZWJQYWdlCisqLworCisKK1FXZWJIaXN0b3J5OjpRV2Vi
SGlzdG9yeSgpCisgICAgOiBkKDApCit7Cit9CisKK1FXZWJIaXN0b3J5Ojp+UVdlYkhpc3Rvcnko
KQoreworICAgIGRlbGV0ZSBkOworfQorCisvKiEKKyAgQ2xlYXJzIHRoZSBoaXN0b3J5LgorCisg
IFxzYSBjb3VudCgpLCBpdGVtcygpCisqLwordm9pZCBRV2ViSGlzdG9yeTo6Y2xlYXIoKQorewor
ICAgIC8vc2hvcnRjdXQgdG8gcHJpdmF0ZSBCYWNrRm9yd2FyZExpc3QKKyAgICBXZWJDb3JlOjpC
YWNrRm9yd2FyZExpc3QqIGxzdCA9IGQtPmxzdDsKKworICAgIC8vY2xlYXIgdmlzaXRlZCBsaW5r
cworICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3QqPihsc3QpLT5wYWdlKCk7CisgICAgaWYgKHBhZ2UgJiYgcGFnZS0+Z3JvdXBQdHIo
KSkKKyAgICAgICAgcGFnZS0+Z3JvdXBQdHIoKS0+cmVtb3ZlVmlzaXRlZExpbmtzKCk7CisKKyAg
ICAvL2lmIGNvdW50KCkgPT0gMCB0aGVuIGp1c3QgcmV0dXJuCisgICAgaWYgKCFsc3QtPmVudHJp
ZXMoKS5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0
b3J5SXRlbT4gY3VycmVudCA9IGxzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBpbnQgY2FwYWNpdHkg
PSBsc3QtPmNhcGFjaXR5KCk7CisgICAgbHN0LT5zZXRDYXBhY2l0eSgwKTsKKworICAgIGxzdC0+
c2V0Q2FwYWNpdHkoY2FwYWNpdHkpOyAgIC8vcmV2ZXJ0IGNhcGFjaXR5CisgICAgbHN0LT5hZGRJ
dGVtKGN1cnJlbnQuZ2V0KCkpOyAgLy9pbnNlcnQgb2xkIGN1cnJlbnQgaXRlbQorICAgIGxzdC0+
Z29Ub0l0ZW0oY3VycmVudC5nZXQoKSk7IC8vYW5kIHNldCBpdCBhcyBjdXJyZW50IGFnYWluCisK
KyAgICBkLT5wYWdlKCktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7Cit9CisKKy8qIQorICBS
ZXR1cm5zIGEgbGlzdCBvZiBhbGwgaXRlbXMgY3VycmVudGx5IGluIHRoZSBoaXN0b3J5LgorCisg
IFxzYSBjb3VudCgpLCBjbGVhcigpCisqLworUUxpc3Q8UVdlYkhpc3RvcnlJdGVtPiBRV2ViSGlz
dG9yeTo6aXRlbXMoKSBjb25zdAoreworICAgIGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVj
dG9yICZpdGVtcyA9IGQtPmxzdC0+ZW50cmllcygpOworCisgICAgUUxpc3Q8UVdlYkhpc3RvcnlJ
dGVtPiByZXQ7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIFFXZWJIaXN0b3J5SXRlbVByaXZhdGUgKnByaXYgPSBuZXcgUVdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZShpdGVtc1tpXS5nZXQoKSk7CisgICAgICAgIHJldC5hcHBlbmQoUVdlYkhp
c3RvcnlJdGVtKHByaXYpKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworLyohCisgIFJl
dHVybnMgdGhlIGxpc3Qgb2YgaXRlbXMgaW4gdGhlIGJhY2t3YXJkcyBoaXN0b3J5IGxpc3QuCisg
IEF0IG1vc3QgXGEgbWF4SXRlbXMgZW50cmllcyBhcmUgcmV0dXJuZWQuCisKKyAgXHNhIGZvcndh
cmRJdGVtcygpCisqLworUUxpc3Q8UVdlYkhpc3RvcnlJdGVtPiBRV2ViSGlzdG9yeTo6YmFja0l0
ZW1zKGludCBtYXhJdGVtcykgY29uc3QKK3sKKyAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3Rv
ciBpdGVtcyhtYXhJdGVtcyk7CisgICAgZC0+bHN0LT5iYWNrTGlzdFdpdGhMaW1pdChtYXhJdGVt
cywgaXRlbXMpOworCisgICAgUUxpc3Q8UVdlYkhpc3RvcnlJdGVtPiByZXQ7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIFFXZWJIaXN0
b3J5SXRlbVByaXZhdGUgKnByaXYgPSBuZXcgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZShpdGVtc1tp
XS5nZXQoKSk7CisgICAgICAgIHJldC5hcHBlbmQoUVdlYkhpc3RvcnlJdGVtKHByaXYpKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJldDsKK30KKworLyohCisgIFJldHVybnMgdGhlIGxpc3Qgb2YgaXRl
bXMgaW4gdGhlIGZvcndhcmQgaGlzdG9yeSBsaXN0LgorICBBdCBtb3N0IFxhIG1heEl0ZW1zIGVu
dHJpZXMgYXJlIHJldHVybmVkLgorCisgIFxzYSBiYWNrSXRlbXMoKQorKi8KK1FMaXN0PFFXZWJI
aXN0b3J5SXRlbT4gUVdlYkhpc3Rvcnk6OmZvcndhcmRJdGVtcyhpbnQgbWF4SXRlbXMpIGNvbnN0
Cit7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3IgaXRlbXMobWF4SXRlbXMpOworICAg
IGQtPmxzdC0+Zm9yd2FyZExpc3RXaXRoTGltaXQobWF4SXRlbXMsIGl0ZW1zKTsKKworICAgIFFM
aXN0PFFXZWJIaXN0b3J5SXRlbT4gcmV0OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
dGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlICpwcml2
ID0gbmV3IFFXZWJIaXN0b3J5SXRlbVByaXZhdGUoaXRlbXNbaV0uZ2V0KCkpOworICAgICAgICBy
ZXQuYXBwZW5kKFFXZWJIaXN0b3J5SXRlbShwcml2KSk7CisgICAgfQorICAgIHJldHVybiByZXQ7
Cit9CisKKy8qIQorICBSZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgYW4gaXRlbSBwcmVjZWRpbmcg
dGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgaGlzdG9yeTsKKyAgb3RoZXJ3aXNlIHJldHVybnMgZmFs
c2UuCisKKyAgXHNhIGNhbkdvRm9yd2FyZCgpCisqLworYm9vbCBRV2ViSGlzdG9yeTo6Y2FuR29C
YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bHN0LT5iYWNrTGlzdENvdW50KCkgPiAwOwor
fQorCisvKiEKKyAgUmV0dXJucyB0cnVlIGlmIHdlIGhhdmUgYW4gaXRlbSB0byBnbyBmb3J3YXJk
IHRvOyBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KKworICBcc2EgY2FuR29CYWNrKCkKKyovCiti
b29sIFFXZWJIaXN0b3J5OjpjYW5Hb0ZvcndhcmQoKSBjb25zdAoreworICAgIHJldHVybiBkLT5s
c3QtPmZvcndhcmRMaXN0Q291bnQoKSA+IDA7Cit9CisKKy8qIQorICBTZXQgdGhlIGN1cnJlbnQg
aXRlbSB0byBiZSB0aGUgcHJldmlvdXMgaXRlbSBpbiB0aGUgaGlzdG9yeSBhbmQgZ29lcyB0byB0
aGUKKyAgY29ycmVzcG9uZGluZyBwYWdlOyBpLmUuLCBnb2VzIGJhY2sgb25lIGhpc3RvcnkgaXRl
bS4KKworICBcc2EgZm9yd2FyZCgpLCBnb1RvSXRlbSgpCisqLwordm9pZCBRV2ViSGlzdG9yeTo6
YmFjaygpCit7CisgICAgaWYgKGNhbkdvQmFjaygpKSB7CisgICAgICAgIFdlYkNvcmU6OlBhZ2Uq
IHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqPihkLT5sc3QpLT5w
YWdlKCk7CisgICAgICAgIHBhZ2UtPmdvVG9JdGVtKGQtPmxzdC0+YmFja0l0ZW0oKSwgV2ViQ29y
ZTo6RnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CisgICAgfQorfQorCisvKiEKKyAg
U2V0cyB0aGUgY3VycmVudCBpdGVtIHRvIGJlIHRoZSBuZXh0IGl0ZW0gaW4gdGhlIGhpc3Rvcnkg
YW5kIGdvZXMgdG8gdGhlCisgIGNvcnJlc3BvbmRpbmcgcGFnZTsgaS5lLiwgZ29lcyBmb3J3YXJk
IG9uZSBoaXN0b3J5IGl0ZW0uCisKKyAgXHNhIGJhY2soKSwgZ29Ub0l0ZW0oKQorKi8KK3ZvaWQg
UVdlYkhpc3Rvcnk6OmZvcndhcmQoKQoreworICAgIGlmIChjYW5Hb0ZvcndhcmQoKSkgeworICAg
ICAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0Kj4oZC0+bHN0KS0+cGFnZSgpOworICAgICAgICBwYWdlLT5nb1RvSXRlbShkLT5sc3Qt
PmZvcndhcmRJdGVtKCksIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQp
OworICAgIH0KK30KKworLyohCisgIFNldHMgdGhlIGN1cnJlbnQgaXRlbSB0byBiZSB0aGUgc3Bl
Y2lmaWVkIFxhIGl0ZW0gaW4gdGhlIGhpc3RvcnkgYW5kIGdvZXMgdG8gdGhlIHBhZ2UuCisKKyAg
XHNhIGJhY2soKSwgZm9yd2FyZCgpCisqLwordm9pZCBRV2ViSGlzdG9yeTo6Z29Ub0l0ZW0oY29u
c3QgUVdlYkhpc3RvcnlJdGVtICZpdGVtKQoreworICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqPihkLT5sc3QpLT5wYWdlKCk7Cisg
ICAgcGFnZS0+Z29Ub0l0ZW0oaXRlbS5kLT5pdGVtLCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlSW5k
ZXhlZEJhY2tGb3J3YXJkKTsKK30KKworLyohCisgIFJldHVybnMgdGhlIGl0ZW0gYmVmb3JlIHRo
ZSBjdXJyZW50IGl0ZW0gaW4gdGhlIGhpc3RvcnkuCisqLworUVdlYkhpc3RvcnlJdGVtIFFXZWJI
aXN0b3J5OjpiYWNrSXRlbSgpIGNvbnN0Cit7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmkg
PSBkLT5sc3QtPmJhY2tJdGVtKCk7CisgICAgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSAqcHJpdiA9
IG5ldyBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKGkpOworICAgIHJldHVybiBRV2ViSGlzdG9yeUl0
ZW0ocHJpdik7Cit9CisKKy8qIQorICBSZXR1cm5zIHRoZSBjdXJyZW50IGl0ZW0gaW4gdGhlIGhp
c3RvcnkuCisqLworUVdlYkhpc3RvcnlJdGVtIFFXZWJIaXN0b3J5OjpjdXJyZW50SXRlbSgpIGNv
bnN0Cit7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmkgPSBkLT5sc3QtPmN1cnJlbnRJdGVt
KCk7CisgICAgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSAqcHJpdiA9IG5ldyBRV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlKGkpOworICAgIHJldHVybiBRV2ViSGlzdG9yeUl0ZW0ocHJpdik7Cit9CisKKy8q
IQorICBSZXR1cm5zIHRoZSBpdGVtIGFmdGVyIHRoZSBjdXJyZW50IGl0ZW0gaW4gdGhlIGhpc3Rv
cnkuCisqLworUVdlYkhpc3RvcnlJdGVtIFFXZWJIaXN0b3J5Ojpmb3J3YXJkSXRlbSgpIGNvbnN0
Cit7CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKmkgPSBkLT5sc3QtPmZvcndhcmRJdGVtKCk7
CisgICAgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSAqcHJpdiA9IG5ldyBRV2ViSGlzdG9yeUl0ZW1Q
cml2YXRlKGkpOworICAgIHJldHVybiBRV2ViSGlzdG9yeUl0ZW0ocHJpdik7Cit9CisKKy8qIQor
ICBcc2luY2UgNC41CisgIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGl0ZW0gaW4g
aGlzdG9yeS4KKyovCitpbnQgUVdlYkhpc3Rvcnk6OmN1cnJlbnRJdGVtSW5kZXgoKSBjb25zdAor
eworICAgIHJldHVybiBkLT5sc3QtPmJhY2tMaXN0Q291bnQoKTsKK30KKworLyohCisgIFJldHVy
bnMgdGhlIGl0ZW0gYXQgaW5kZXggXGEgaSBpbiB0aGUgaGlzdG9yeS4KKyovCitRV2ViSGlzdG9y
eUl0ZW0gUVdlYkhpc3Rvcnk6Oml0ZW1BdChpbnQgaSkgY29uc3QKK3sKKyAgICBRV2ViSGlzdG9y
eUl0ZW1Qcml2YXRlICpwcml2OworICAgIGlmIChpIDwgMCB8fCBpID49IGNvdW50KCkpCisgICAg
ICAgIHByaXYgPSBuZXcgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSgwKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKml0ZW0gPSBkLT5sc3QtPmVudHJpZXMoKVtpXS5n
ZXQoKTsKKyAgICAgICAgcHJpdiA9IG5ldyBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pOwor
ICAgIH0KKyAgICByZXR1cm4gUVdlYkhpc3RvcnlJdGVtKHByaXYpOworfQorCisvKiEKKyAgICBS
ZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGhpc3RvcnkuCisqLworaW50
IFFXZWJIaXN0b3J5Ojpjb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmxzdC0+ZW50cmll
cygpLnNpemUoKTsKK30KKworLyohCisgIFxzaW5jZSA0LjUKKyAgUmV0dXJucyB0aGUgbWF4aW11
bSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGhpc3RvcnkuCisKKyAgXHNhIHNldE1heGltdW1JdGVt
Q291bnQoKQorKi8KK2ludCBRV2ViSGlzdG9yeTo6bWF4aW11bUl0ZW1Db3VudCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPmxzdC0+Y2FwYWNpdHkoKTsKK30KKworLyohCisgIFxzaW5jZSA0LjUK
KyAgU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGhpc3RvcnkgdG8gXGEg
Y291bnQuCisKKyAgXHNhIG1heGltdW1JdGVtQ291bnQoKQorKi8KK3ZvaWQgUVdlYkhpc3Rvcnk6
OnNldE1heGltdW1JdGVtQ291bnQoaW50IGNvdW50KQoreworICAgIGQtPmxzdC0+c2V0Q2FwYWNp
dHkoY291bnQpOworfQorCisvKiEKKyAgXHNpbmNlIDQuNgorICBcZm4gUURhdGFTdHJlYW0mIG9w
ZXJhdG9yPDwoUURhdGFTdHJlYW0mIHN0cmVhbSwgY29uc3QgUVdlYkhpc3RvcnkmIGhpc3Rvcnkp
CisgIFxyZWxhdGVzIFFXZWJIaXN0b3J5CisKKyAgXGJyaWVmIFRoZSBvcGVyYXRvcjw8IGZ1bmN0
aW9uIHN0cmVhbXMgYSBoaXN0b3J5IGludG8gYSBkYXRhIHN0cmVhbS4KKworICBJdCBzYXZlcyB0
aGUgXGEgaGlzdG9yeSBpbnRvIHRoZSBzcGVjaWZpZWQgXGEgc3RyZWFtLgorKi8KKworUURhdGFT
dHJlYW0mIG9wZXJhdG9yPDwoUURhdGFTdHJlYW0mIHRhcmdldCwgY29uc3QgUVdlYkhpc3Rvcnkm
IGhpc3RvcnkpCit7CisgICAgUVdlYkhpc3RvcnlQcml2YXRlKiBkID0gaGlzdG9yeS5kOworCisg
ICAgaW50IHZlcnNpb24gPSBIaXN0b3J5U3RyZWFtVmVyc2lvbjsKKworICAgIHRhcmdldCA8PCB2
ZXJzaW9uOworICAgIHRhcmdldCA8PCBoaXN0b3J5LmNvdW50KCkgPDwgaGlzdG9yeS5jdXJyZW50
SXRlbUluZGV4KCk7CisKKyAgICBjb25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbVZlY3RvciAmaXRl
bXMgPSBkLT5sc3QtPmVudHJpZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRl
bXMuc2l6ZSgpOyBpKyspCisgICAgICAgIGl0ZW1zW2ldLmdldCgpLT5zYXZlU3RhdGUodGFyZ2V0
LCB2ZXJzaW9uKTsKKworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKy8qIQorICBcZm4gUURhdGFT
dHJlYW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHN0cmVhbSwgUVdlYkhpc3RvcnkmIGhpc3Rv
cnkpCisgIFxyZWxhdGVzIFFXZWJIaXN0b3J5CisgIFxzaW5jZSA0LjYKKworICBcYnJpZWYgVGhl
IG9wZXJhdG9yPj4gZnVuY3Rpb24gbG9hZHMgYSBoaXN0b3J5IGZyb20gYSBkYXRhIHN0cmVhbS4K
KworICBMb2FkcyBhIFFXZWJIaXN0b3J5IGZyb20gdGhlIHNwZWNpZmllZCBcYSBzdHJlYW0gaW50
byB0aGUgZ2l2ZW4gXGEgaGlzdG9yeS4KKyovCisKK1FEYXRhU3RyZWFtJiBvcGVyYXRvcj4+KFFE
YXRhU3RyZWFtJiBzb3VyY2UsIFFXZWJIaXN0b3J5JiBoaXN0b3J5KQoreworICAgIFFXZWJIaXN0
b3J5UHJpdmF0ZSogZCA9IGhpc3RvcnkuZDsKKyAgICAvLyBDbGVhciBmaXJzdCwgdG8gaGF2ZSB0
aGUgc2FtZSBiZWhhdmlvciBpZiBvdXIgdmVyc2lvbiBkb2Vzbid0IG1hdGNoIGFuZCBpZiB0aGUg
SGlzdG9yeUl0ZW0ncyB2ZXJzaW9uIGRvZXNuJ3QuCisgICAgaGlzdG9yeS5jbGVhcigpOworCisg
ICAgLy8gVGhpcyB2ZXJzaW9uIGNvdmVycyBldmVyeSBmaWVsZCB3ZSBzZXJpYWxpemUgaW4gcXdl
Ymhpc3RvcnkuY3BwIGFuZCBIaXN0b3J5SXRlbVF0LmNwcCAobGlrZSB0aGUgSGlzdG9yeUl0ZW06
OnVzZXJEYXRhKCkpLgorICAgIC8vIEhpc3RvcnlJdGVtIGhhcyBpdHMgb3duIHZlcnNpb24gaW4g
dGhlIHN0cmVhbSBjb3ZlcmluZyB0aGUgd29yayBkb25lIGluIGVuY29kZUJhY2tGb3J3YXJkVHJl
ZS4KKyAgICAvLyBJZiBhbnkgb2YgdGhvc2UgdHdvIHN0cmVhbSB2ZXJzaW9uIGNoYW5nZXMsIHRo
ZSBlZmZlY3Qgc2hvdWxkIGJlIHRoZSBzYW1lIGFuZCB0aGUgUVdlYkhpc3Rvcnkgc2hvdWxkIGZh
aWwgdG8gcmVzdG9yZS4KKyAgICBpbnQgdmVyc2lvbjsKKyAgICBzb3VyY2UgPj4gdmVyc2lvbjsK
KyAgICBpZiAodmVyc2lvbiAhPSBIaXN0b3J5U3RyZWFtVmVyc2lvbikgeworICAgICAgICAvLyBX
ZSBkbyBub3QgdHJ5IHRvIGRlY29kZSBwcmV2aW91cyBoaXN0b3J5IHN0cmVhbSB2ZXJzaW9ucy4K
KyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgb3VyIGhpc3RvcnkgaXMgY2xlYXJlZCBhbmQgbWFy
ayB0aGUgcmVzdCBvZiB0aGUgc3RyZWFtIGFzIGludmFsaWQuCisgICAgICAgIEFTU0VSVChoaXN0
b3J5LmNvdW50KCkgPT0gMSk7CisgICAgICAgIHNvdXJjZS5zZXRTdGF0dXMoUURhdGFTdHJlYW06
OlJlYWRDb3JydXB0RGF0YSk7CisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorCisgICAg
aW50IGNvdW50OworICAgIGludCBjdXJyZW50SW5kZXg7CisgICAgc291cmNlID4+IGNvdW50ID4+
IGN1cnJlbnRJbmRleDsKKworICAgIC8vIG9ubHkgaWYgdGhlcmUgYXJlIGVsZW1lbnRzCisgICAg
aWYgKGNvdW50KSB7CisgICAgICAgIC8vIGFmdGVyIGNsZWFyKCkgaXMgbmV3IGNsZWFyIEhpc3Rv
cnlJdGVtIChhdCB0aGUgZW5kIHdlIGhhZCB0byByZW1vdmUgaXQpCisgICAgICAgIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBudWxsSXRlbSA9IGQtPmxzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBXVEY6OlJlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpyZXN0
b3JlU3RhdGUoc291cmNlLCB2ZXJzaW9uKTsKKyAgICAgICAgICAgIGlmICghaXRlbSkgeworICAg
ICAgICAgICAgICAgIC8vIFRoZSBIaXN0b3J5SXRlbSBpbnRlcm5hbCB2ZXJzaW9uIG1pZ2h0IGhh
dmUgY2hhbmdlZCwgZG8gdGhlIHNhbWUgYXMgd2hlbiBvdXIgb3duIHZlcnNpb24gY2hhbmdlLgor
ICAgICAgICAgICAgICAgIGhpc3RvcnkuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBzb3VyY2Uu
c2V0U3RhdHVzKFFEYXRhU3RyZWFtOjpSZWFkQ29ycnVwdERhdGEpOworICAgICAgICAgICAgICAg
IHJldHVybiBzb3VyY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkLT5sc3QtPmFkZEl0
ZW0oaXRlbSk7CisgICAgICAgIH0KKyAgICAgICAgZC0+bHN0LT5yZW1vdmVJdGVtKG51bGxJdGVt
KTsKKyAgICAgICAgaGlzdG9yeS5nb1RvSXRlbShoaXN0b3J5Lml0ZW1BdChjdXJyZW50SW5kZXgp
KTsKKyAgICB9CisKKyAgICBkLT5wYWdlKCktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisK
KyAgICByZXR1cm4gc291cmNlOworfQorCitRV2ViUGFnZUFkYXB0ZXIqIFFXZWJIaXN0b3J5UHJp
dmF0ZTo6cGFnZSgpCit7CisgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6a2l0KHN0YXRpY19j
YXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KGxzdCktPnBhZ2UoKSk7Cit9CisKK1dlYkNv
cmU6Okhpc3RvcnlJdGVtKiBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjpjb3JlKGNvbnN0IFFXZWJI
aXN0b3J5SXRlbSogcSkKK3sKKyAgICByZXR1cm4gcS0+ZC0+aXRlbTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2ViaGlzdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MmY0
MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5o
CkBAIC0wLDAgKzEsMTE2IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJISVNU
T1JZX0gKKyNkZWZpbmUgUVdFQkhJU1RPUllfSAorCisjaW5jbHVkZSA8UXRDb3JlL3F1cmwuaD4K
KyNpbmNsdWRlIDxRdENvcmUvcXN0cmluZy5oPgorI2luY2x1ZGUgPFF0Q29yZS9xZGF0ZXRpbWUu
aD4KKyNpbmNsdWRlIDxRdENvcmUvcXNoYXJlZGRhdGEuaD4KKyNpbmNsdWRlIDxRdEd1aS9xaWNv
bi5oPgorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCitjbGFzcyBRV2ViUGFnZTsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7Cit9CisK
K2NsYXNzIFFXZWJIaXN0b3J5SXRlbVByaXZhdGU7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFX
ZWJIaXN0b3J5SXRlbSB7CitwdWJsaWM6CisgICAgUVdlYkhpc3RvcnlJdGVtKGNvbnN0IFFXZWJI
aXN0b3J5SXRlbSAmb3RoZXIpOworICAgIFFXZWJIaXN0b3J5SXRlbSAmb3BlcmF0b3I9KGNvbnN0
IFFXZWJIaXN0b3J5SXRlbSAmb3RoZXIpOworICAgIH5RV2ViSGlzdG9yeUl0ZW0oKTsKKworICAg
IFFVcmwgb3JpZ2luYWxVcmwoKSBjb25zdDsKKyAgICBRVXJsIHVybCgpIGNvbnN0OworCisgICAg
UVN0cmluZyB0aXRsZSgpIGNvbnN0OworICAgIFFEYXRlVGltZSBsYXN0VmlzaXRlZCgpIGNvbnN0
OworCisgICAgUUljb24gaWNvbigpIGNvbnN0OworCisgICAgUVZhcmlhbnQgdXNlckRhdGEoKSBj
b25zdDsKKyAgICB2b2lkIHNldFVzZXJEYXRhKGNvbnN0IFFWYXJpYW50JiB1c2VyRGF0YSk7CisK
KyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRV2ViSGlzdG9yeUl0
ZW0oUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSAqcHJpdik7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJI
aXN0b3J5OworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKKyAgICBmcmllbmQgY2xhc3MgV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZTsKKyAgICBmcmllbmQgY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7Cisg
ICAgLy9mcmllbmQgUURhdGFTdHJlYW0gJiBvcGVyYXRvcjw8KFFEYXRhU3RyZWFtJiBvdXQsY29u
c3QgUVdlYkhpc3RvcnlJdGVtJiBoaXN0KTsKKyAgICAvL2ZyaWVuZCBRRGF0YVN0cmVhbSAmIG9w
ZXJhdG9yPj4oUURhdGFTdHJlYW0mIGluLFFXZWJIaXN0b3J5SXRlbSYgaGlzdCk7CisgICAgUUV4
cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjxRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlPiBkOworfTsK
KworCitjbGFzcyBRV2ViSGlzdG9yeVByaXZhdGU7CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2Vi
SGlzdG9yeSB7CitwdWJsaWM6CisgICAgdm9pZCBjbGVhcigpOworCisgICAgUUxpc3Q8UVdlYkhp
c3RvcnlJdGVtPiBpdGVtcygpIGNvbnN0OworICAgIFFMaXN0PFFXZWJIaXN0b3J5SXRlbT4gYmFj
a0l0ZW1zKGludCBtYXhJdGVtcykgY29uc3Q7CisgICAgUUxpc3Q8UVdlYkhpc3RvcnlJdGVtPiBm
b3J3YXJkSXRlbXMoaW50IG1heEl0ZW1zKSBjb25zdDsKKworICAgIGJvb2wgY2FuR29CYWNrKCkg
Y29uc3Q7CisgICAgYm9vbCBjYW5Hb0ZvcndhcmQoKSBjb25zdDsKKworICAgIHZvaWQgYmFjaygp
OworICAgIHZvaWQgZm9yd2FyZCgpOworICAgIHZvaWQgZ29Ub0l0ZW0oY29uc3QgUVdlYkhpc3Rv
cnlJdGVtICZpdGVtKTsKKworICAgIFFXZWJIaXN0b3J5SXRlbSBiYWNrSXRlbSgpIGNvbnN0Owor
ICAgIFFXZWJIaXN0b3J5SXRlbSBjdXJyZW50SXRlbSgpIGNvbnN0OworICAgIFFXZWJIaXN0b3J5
SXRlbSBmb3J3YXJkSXRlbSgpIGNvbnN0OworICAgIFFXZWJIaXN0b3J5SXRlbSBpdGVtQXQoaW50
IGkpIGNvbnN0OworCisgICAgaW50IGN1cnJlbnRJdGVtSW5kZXgoKSBjb25zdDsKKworICAgIGlu
dCBjb3VudCgpIGNvbnN0OworCisgICAgaW50IG1heGltdW1JdGVtQ291bnQoKSBjb25zdDsKKyAg
ICB2b2lkIHNldE1heGltdW1JdGVtQ291bnQoaW50IGNvdW50KTsKKworcHJpdmF0ZToKKyAgICBR
V2ViSGlzdG9yeSgpOworICAgIH5RV2ViSGlzdG9yeSgpOworCisgICAgZnJpZW5kIGNsYXNzIFFX
ZWJQYWdlOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZUFkYXB0ZXI7CisgICAgZnJpZW5kIFFX
RUJLSVRfRVhQT1JUIFFEYXRhU3RyZWFtJiBvcGVyYXRvcj4+KFFEYXRhU3RyZWFtJiwgUVdlYkhp
c3RvcnkmKTsKKyAgICBmcmllbmQgUVdFQktJVF9FWFBPUlQgUURhdGFTdHJlYW0mIG9wZXJhdG9y
PDwoUURhdGFTdHJlYW0mLCBjb25zdCBRV2ViSGlzdG9yeSYpOworCisgICAgUV9ESVNBQkxFX0NP
UFkoUVdlYkhpc3RvcnkpCisKKyAgICBRV2ViSGlzdG9yeVByaXZhdGUgKmQ7Cit9OworCitRV0VC
S0lUX0VYUE9SVCBRRGF0YVN0cmVhbSYgb3BlcmF0b3I8PChRRGF0YVN0cmVhbSYgc3RyZWFtLCBj
b25zdCBRV2ViSGlzdG9yeSYgaGlzdG9yeSk7CitRV0VCS0lUX0VYUE9SVCBRRGF0YVN0cmVhbSYg
b3BlcmF0b3I+PihRRGF0YVN0cmVhbSYgc3RyZWFtLCBRV2ViSGlzdG9yeSYgaGlzdG9yeSk7CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnlfcC5o
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnlfcC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmE0ZmMyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViaGlzdG9yeV9wLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBRV0VCSElTVE9SWV9QX0gKKyNkZWZpbmUgUVdFQkhJU1RPUllfUF9I
CisKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5o
IgorI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5o
PgorI2luY2x1ZGUgPFF0Q29yZS9xc2hhcmVkZGF0YS5oPgorCitjbGFzcyBRV2ViUGFnZUFkYXB0
ZXI7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJIaXN0b3J5SXRlbVByaXZhdGUgOiBwdWJs
aWMgUVNoYXJlZERhdGEgeworcHVibGljOgorICAgIHN0YXRpYyBRRXhwbGljaXRseVNoYXJlZERh
dGFQb2ludGVyPFFXZWJIaXN0b3J5SXRlbVByaXZhdGU+IGdldChRV2ViSGlzdG9yeUl0ZW0qIHEp
CisgICAgeworICAgICAgICByZXR1cm4gcS0+ZDsKKyAgICB9CisgICAgUVdlYkhpc3RvcnlJdGVt
UHJpdmF0ZShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaSkKKyAgICB7CisgICAgICAgIGlmIChpKQor
ICAgICAgICAgICAgaS0+cmVmKCk7CisgICAgICAgIGl0ZW0gPSBpOworICAgIH0KKyAgICB+UVdl
Ykhpc3RvcnlJdGVtUHJpdmF0ZSgpCisgICAgeworICAgICAgICBpZiAoaXRlbSkKKyAgICAgICAg
ICAgIGl0ZW0tPmRlcmVmKCk7CisgICAgfQorCisgICAgc3RhdGljIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBjb3JlKGNvbnN0IFFXZWJIaXN0b3J5SXRlbSogcSk7CisKKyAgICBXZWJDb3JlOjpIaXN0
b3J5SXRlbSogaXRlbTsKK307CisKK2NsYXNzIFFXZWJIaXN0b3J5UHJpdmF0ZSA6IHB1YmxpYyBR
U2hhcmVkRGF0YSB7CitwdWJsaWM6CisgICAgUVdlYkhpc3RvcnlQcml2YXRlKFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdCogbCkKKyAgICB7CisgICAgICAgIGwtPnJlZigpOworICAgICAgICBsc3Qg
PSBsOworICAgIH0KKyAgICB+UVdlYkhpc3RvcnlQcml2YXRlKCkKKyAgICB7CisgICAgICAgIGxz
dC0+ZGVyZWYoKTsKKyAgICB9CisKKyAgICBRV2ViUGFnZUFkYXB0ZXIqIHBhZ2UoKTsKKworICAg
IFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogbHN0OworfTsKKworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zMDVmZjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwCkBAIC0wLDAgKzEsMTI3IEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMu
ICA8aW5mb0BzdGFpa29zLm5ldD4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisKKyAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGFsbCBmdW5jdGlv
bmFsaXR5IG5lZWRlZCBmb3IgdHJhY2tpbmcgZ2xvYmFsIGhpc3RvcnkuCisqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmhpc3RvcnlpbnRlcmZhY2UuaCIKKworI2luY2x1
ZGUgPFFDb3JlQXBwbGljYXRpb24+CisKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCitzdGF0aWMgUVdlYkhpc3RvcnlJbnRlcmZhY2Uq
IGRlZmF1bHRfaW50ZXJmYWNlOworCitzdGF0aWMgYm9vbCBnUm91dGluZUFkZGVkOworCitzdGF0
aWMgdm9pZCBnQ2xlYW51cEludGVyZmFjZSgpCit7CisgICAgaWYgKGRlZmF1bHRfaW50ZXJmYWNl
ICYmICFkZWZhdWx0X2ludGVyZmFjZS0+cGFyZW50KCkpCisgICAgICAgIGRlbGV0ZSBkZWZhdWx0
X2ludGVyZmFjZTsKKyAgICBkZWZhdWx0X2ludGVyZmFjZSA9IDA7Cit9CisKKy8qIQorICBTZXRz
IGEgbmV3IGRlZmF1bHQgaW50ZXJmYWNlLCBcYSBkZWZhdWx0SW50ZXJmYWNlLCB0aGF0IHdpbGwg
YmUgdXNlZCBieSBhbGwgb2YgV2ViS2l0CisgIHRvIGtlZXAgdHJhY2sgb2YgdmlzaXRlZCBsaW5r
cy4KKworICBJZiBhbiBpbnRlcmZhY2Ugd2l0aG91dCBhIHBhcmVudCBoYXMgYWxyZWFkeSBiZWVu
IHNldCwgdGhlIG9sZCBpbnRlcmZhY2Ugd2lsbCBiZSBkZWxldGVkLgorICBXaGVuIHRoZSBhcHBs
aWNhdGlvbiBleGlzdHMgUVdlYkhpc3RvcnlJbnRlcmZhY2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGRl
bGV0ZSB0aGUKKyAgXGEgZGVmYXVsdEludGVyZmFjZSBpZiBpdCBkb2VzIG5vdCBoYXZlIGEgcGFy
ZW50LgorKi8KK3ZvaWQgUVdlYkhpc3RvcnlJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2Uo
UVdlYkhpc3RvcnlJbnRlcmZhY2UqIGRlZmF1bHRJbnRlcmZhY2UpCit7CisgICAgaWYgKGRlZmF1
bHRfaW50ZXJmYWNlID09IGRlZmF1bHRJbnRlcmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChkZWZhdWx0X2ludGVyZmFjZSAmJiAhZGVmYXVsdF9pbnRlcmZhY2UtPnBhcmVudCgpKQor
ICAgICAgICBkZWxldGUgZGVmYXVsdF9pbnRlcmZhY2U7CisKKyAgICBkZWZhdWx0X2ludGVyZmFj
ZSA9IGRlZmF1bHRJbnRlcmZhY2U7CisgICAgV2ViQ29yZTo6UGFnZUdyb3VwOjpyZW1vdmVBbGxW
aXNpdGVkTGlua3MoKTsKKworICAgIC8vIyMjIGVuYWJsZSBhZnRlciB0aGUgaW50cm9kdWN0aW9u
IG9mIGEgdmVyc2lvbgorICAgIC8vV2ViQ29yZTo6UGFnZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zp
c2l0ZWRMaW5rcyh0cnVlKTsKKworICAgIGlmICghZ1JvdXRpbmVBZGRlZCkgeworICAgICAgICBx
QWRkUG9zdFJvdXRpbmUoZ0NsZWFudXBJbnRlcmZhY2UpOworICAgICAgICBnUm91dGluZUFkZGVk
ID0gdHJ1ZTsKKyAgICB9Cit9CisKKy8qIQorICBSZXR1cm5zIHRoZSBkZWZhdWx0IGludGVyZmFj
ZSB0aGF0IHdpbGwgYmUgdXNlZCBieSBXZWJLaXQuIElmIG5vIGRlZmF1bHQgaW50ZXJmYWNlIGhh
cyBiZWVuIHNldCwKKyAgV2ViS2l0IHdpbGwgbm90IGtlZXAgdHJhY2sgb2YgdmlzaXRlZCBsaW5r
cyBhbmQgYSBudWxsIHBvaW50ZXIgd2lsbCBiZSByZXR1cm5lZC4KKyAgXHNhIHNldERlZmF1bHRJ
bnRlcmZhY2UoKQorKi8KK1FXZWJIaXN0b3J5SW50ZXJmYWNlKiBRV2ViSGlzdG9yeUludGVyZmFj
ZTo6ZGVmYXVsdEludGVyZmFjZSgpCit7CisgICAgcmV0dXJuIGRlZmF1bHRfaW50ZXJmYWNlOwor
fQorCisvKiEKKyAgXGNsYXNzIFFXZWJIaXN0b3J5SW50ZXJmYWNlCisgIFxzaW5jZSA0LjQKKyAg
XGJyaWVmIFRoZSBRV2ViSGlzdG9yeUludGVyZmFjZSBjbGFzcyBwcm92aWRlcyBhbiBpbnRlcmZh
Y2UgdG8gaW1wbGVtZW50IGxpbmsgaGlzdG9yeS4KKworICBcaW5tb2R1bGUgUXRXZWJLaXQKKwor
ICBUaGUgUVdlYkhpc3RvcnlJbnRlcmZhY2UgaXMgYW4gaW50ZXJmYWNlIHRoYXQgY2FuIGJlIHVz
ZWQgdG8KKyAga2VlcCB0cmFjayBvZiB2aXNpdGVkIGxpbmtzLiBJdCBjb250YWlucyB0d28gcHVy
ZSB2aXJ0dWFsIG1ldGhvZHMgdGhhdAorICBhcmUgY2FsbGVkIGJ5IHRoZSBXZWJLaXQgZW5naW5l
OiBhZGRIaXN0b3J5RW50cnkoKSBpcyB1c2VkIHRvIGFkZAorICB1cmxzIHRoYXQgaGF2ZSBiZWVu
IHZpc2l0ZWQgdG8gdGhlIGludGVyZmFjZSwgd2hpbGUKKyAgaGlzdG9yeUNvbnRhaW5zKCkgaXMg
dXNlZCB0byBxdWVyeSB3aGV0aGVyIHRoZSBnaXZlbiB1cmwgaGFzIGJlZW4KKyAgdmlzaXRlZCBi
eSB0aGUgdXNlci4gQnkgZGVmYXVsdCB0aGUgUVdlYkhpc3RvcnlJbnRlcmZhY2UgaXMgbm90IHNl
dCwgc28gV2ViS2l0IGRvZXMgbm90IGtlZXAKKyAgdHJhY2sgb2YgdmlzaXRlZCBsaW5rcy4KKwor
ICBcbm90ZSBUaGUgaGlzdG9yeSB0cmFja2VkIGJ5IFFXZWJIaXN0b3J5SW50ZXJmYWNlIGlzIG5v
dCBzcGVjaWZpYyB0byBhbiBpbnN0YW5jZSBvZiBRV2ViUGFnZQorICBidXQgYXBwbGllcyB0byBh
bGwgcGFnZXMuCisqLworCisvKiEKKyAgICBDb25zdHJ1Y3RzIGEgbmV3IFFXZWJIaXN0b3J5SW50
ZXJmYWNlIHdpdGggcGFyZW50IFxhIHBhcmVudC4KKyovCitRV2ViSGlzdG9yeUludGVyZmFjZTo6
UVdlYkhpc3RvcnlJbnRlcmZhY2UoUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJl
bnQpCit7Cit9CisKKy8qIQorICAgIERlc3Ryb3lzIHRoZSBpbnRlcmZhY2UuICBJZiB0aGlzIGlz
IGN1cnJlbnRseSB0aGUgZGVmYXVsdCBpbnRlcmZhY2UgaXQgd2lsbCBiZSB1bnNldC4KKyovCitR
V2ViSGlzdG9yeUludGVyZmFjZTo6flFXZWJIaXN0b3J5SW50ZXJmYWNlKCkKK3sKKyAgICBpZiAo
ZGVmYXVsdF9pbnRlcmZhY2UgPT0gdGhpcykKKyAgICAgICAgZGVmYXVsdF9pbnRlcmZhY2UgPSAw
OworfQorCisvKiEKKyAgXGZuIGJvb2wgUVdlYkhpc3RvcnlJbnRlcmZhY2U6Omhpc3RvcnlDb250
YWlucyhjb25zdCBRU3RyaW5nICZ1cmwpIGNvbnN0ID0gMAorCisgIENhbGxlZCBieSB0aGUgV2Vi
S2l0IGVuZ2luZSB0byBxdWVyeSB3aGV0aGVyIGEgY2VydGFpbiBcYSB1cmwgaGFzIGJlZW4gdmlz
aXRlZCBieSB0aGUgdXNlciBhbHJlYWR5LgorICBSZXR1cm5zIHRydWUgaWYgdGhlIFxhIHVybCBp
cyBwYXJ0IG9mIHRoZSBoaXN0b3J5IG9mIHZpc2l0ZWQgbGlua3M7IG90aGVyd2lzZSByZXR1cm5z
IGZhbHNlLgorKi8KKworLyohCisgIFxmbiB2b2lkIFFXZWJIaXN0b3J5SW50ZXJmYWNlOjphZGRI
aXN0b3J5RW50cnkoY29uc3QgUVN0cmluZyAmdXJsKSA9IDAKKworICBDYWxsZWQgYnkgV2ViS2l0
IHRvIGFkZCBhbm90aGVyIFxhIHVybCB0byB0aGUgbGlzdCBvZiB2aXNpdGVkIHBhZ2VzLgorKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0OWM1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzLCBJ
bmMuICA8aW5mb0BzdGFpa29zLm5ldD4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisKKyAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIGFsbCBmdW5j
dGlvbmFsaXR5IG5lZWRlZCBmb3IgdHJhY2tpbmcgZ2xvYmFsIGhpc3RvcnkuCisqLworCisjaWZu
ZGVmIFFXRUJISVNUT1JZSU5URVJGQUNFX0gKKyNkZWZpbmUgUVdFQkhJU1RPUllJTlRFUkZBQ0Vf
SAorCisjaW5jbHVkZSA8UXRDb3JlL3FvYmplY3QuaD4KKworI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYkhpc3RvcnlJbnRlcmZhY2UgOiBwdWJs
aWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViSGlzdG9yeUludGVy
ZmFjZShRT2JqZWN0ICpwYXJlbnQgPSAwKTsKKyAgICB+UVdlYkhpc3RvcnlJbnRlcmZhY2UoKTsK
KworICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRJbnRlcmZhY2UoUVdlYkhpc3RvcnlJbnRlcmZh
Y2UgKmRlZmF1bHRJbnRlcmZhY2UpOworICAgIHN0YXRpYyBRV2ViSGlzdG9yeUludGVyZmFjZSAq
ZGVmYXVsdEludGVyZmFjZSgpOworCisgICAgdmlydHVhbCBib29sIGhpc3RvcnlDb250YWlucyhj
b25zdCBRU3RyaW5nICZ1cmwpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSGlzdG9y
eUVudHJ5KGNvbnN0IFFTdHJpbmcgJnVybCkgPSAwOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Via2l0Z2xvYmFsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJraXRnbG9iYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRhOTU5NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
a2l0Z2xvYmFsLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDkgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxXZWJLaXRW
ZXJzaW9uLmg+CisKKy8qIQorICAgIFxyZWxhdGVzIFFXZWJQYWdlCisgICAgXHNpbmNlIDQuNgor
ICAgIFJldHVybnMgdGhlIHZlcnNpb24gbnVtYmVyIG9mIFdlYktpdCBhdCBydW4tdGltZSBhcyBh
IHN0cmluZyAoZm9yCisgICAgZXhhbXBsZSwgIjUzMS4zIikuCisKKyAgICBUaGlzIHZlcnNpb24g
aXMgY29tbW9ubHkgdXNlZCBpbiBXZWJLaXQgYmFzZWQgYnJvd3NlcnMgYXMgcGFydAorICAgIG9m
IHRoZSB1c2VyIGFnZW50IHN0cmluZy4gV2ViIHNlcnZlcnMgYW5kIEphdmFTY3JpcHQgbWlnaHQg
dXNlCisgICAgaXQgdG8gaWRlbnRpZnkgdGhlIHByZXNlbmNlIG9mIGNlcnRhaW4gV2ViS2l0IGVu
Z2luZSBmZWF0dXJlcworICAgIGFuZCBiZWhhdmlvdXIuCisKKyAgICBUaGUgZXZvbHV0aW9uIG9m
IHRoaXMgdmVyc2lvbiBpcyBib3VuZCB0byB0aGUgcmVsZWFzZXMgb2YgQXBwbGUncworICAgIFNh
ZmFyaSBicm93c2VyLiBGb3IgYSB2ZXJzaW9uIHNwZWNpZmljIHRvIHRoZSBRdCBXZWJLaXQgbW9k
dWxlLAorICAgIHNlZSBRVFdFQktJVF9WRVJTSU9OCisKKyAgICBcc2EgUVdlYlBhZ2U6OnVzZXJB
Z2VudEZvclVybCgpCisqLworUVN0cmluZyBxV2ViS2l0VmVyc2lvbigpCit7CisgICAgcmV0dXJu
IFFTdHJpbmc6OmZyb21MYXRpbjEoIiUxLiUyIikuYXJnKFdFQktJVF9NQUpPUl9WRVJTSU9OKS5h
cmcoV0VCS0lUX01JTk9SX1ZFUlNJT04pOworfQorCisvKiEKKyAgICBccmVsYXRlcyBRV2ViUGFn
ZQorICAgIFxzaW5jZSA0LjYKKyAgICBSZXR1cm5zIHRoZSAnbWFqb3InIHZlcnNpb24gbnVtYmVy
IG9mIFdlYktpdCBhdCBydW4tdGltZSBhcyBhbiBpbnRlZ2VyCisgICAgKGZvciBleGFtcGxlLCA1
MzEpLiBUaGlzIGlzIHRoZSB2ZXJzaW9uIG9mIFdlYktpdCB0aGUgYXBwbGljYXRpb24KKyAgICB3
YXMgY29tcGlsZWQgYWdhaW5zdC4KKworICAgIFxzYSBxV2ViS2l0VmVyc2lvbigpCisqLworaW50
IHFXZWJLaXRNYWpvclZlcnNpb24oKQoreworICAgIHJldHVybiBXRUJLSVRfTUFKT1JfVkVSU0lP
TjsKK30KKworLyohCisgICAgXHJlbGF0ZXMgUVdlYlBhZ2UKKyAgICBcc2luY2UgNC42CisgICAg
UmV0dXJucyB0aGUgJ21pbm9yJyB2ZXJzaW9uIG51bWJlciBvZiBXZWJLaXQgYXQgcnVuLXRpbWUg
YXMgYW4gaW50ZWdlcgorICAgIChmb3IgZXhhbXBsZSwgMykuIFRoaXMgaXMgdGhlIHZlcnNpb24g
b2YgV2ViS2l0IHRoZSBhcHBsaWNhdGlvbgorICAgIHdhcyBjb21waWxlZCBhZ2FpbnN0LgorCisg
ICAgXHNhIHFXZWJLaXRWZXJzaW9uKCkKKyovCitpbnQgcVdlYktpdE1pbm9yVmVyc2lvbigpCit7
CisgICAgcmV0dXJuIFdFQktJVF9NSU5PUl9WRVJTSU9OOworfQorCisvKiEKKyAgICBcbWFjcm8g
UVRXRUJLSVRfVkVSU0lPTgorICAgIFxyZWxhdGVzIFFXZWJQYWdlCisKKyAgICBUaGlzIG1hY3Jv
IGV4cGFuZHMgYSBudW1lcmljIHZhbHVlIG9mIHRoZSBmb3JtIDB4TU1OTlBQIChNTSA9CisgICAg
bWFqb3IsIE5OID0gbWlub3IsIFBQID0gcGF0Y2gpIHRoYXQgc3BlY2lmaWVzIFF0IFdlYktpdCdz
IHZlcnNpb24KKyAgICBudW1iZXIuIEZvciBleGFtcGxlLCBpZiB5b3UgY29tcGlsZSB5b3VyIGFw
cGxpY2F0aW9uIGFnYWluc3QgUXQgV2ViS2l0CisgICAgMi4xLjIsIHRoZSBRVFdFQktJVF9WRVJT
SU9OIG1hY3JvIHdpbGwgZXhwYW5kIHRvIDB4MDIwMTAyLgorCisgICAgWW91IGNhbiB1c2UgUVRX
RUJLSVRfVkVSU0lPTiB0byB1c2UgdGhlIGxhdGVzdCBRdCBXZWJLaXQgQVBJIHdoZXJlCisgICAg
YXZhaWxhYmxlLgorCisgICAgXHNhIFFUX1ZFUlNJT04KKyovCisKKy8qIQorICAgIFxtYWNybyBR
VFdFQktJVF9WRVJTSU9OX1NUUgorICAgIFxyZWxhdGVzIFFXZWJQYWdlCisKKyAgICBUaGlzIG1h
Y3JvIGV4cGFuZHMgdG8gYSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgUXQgV2ViS2l0J3MgdmVyc2lv
biBudW1iZXIKKyAgICAoZm9yIGV4YW1wbGUsICIyLjEuMiIpLiBUaGlzIGlzIHRoZSB2ZXJzaW9u
IGFnYWluc3Qgd2hpY2ggdGhlCisgICAgYXBwbGljYXRpb24gaXMgY29tcGlsZWQuCisKKyAgICBc
c2EgUVRXRUJLSVRfVkVSU0lPTgorKi8KKworLyohCisgICAgXG1hY3JvIFFUV0VCS0lUX1ZFUlNJ
T05fQ0hFQ0sKKyAgICBccmVsYXRlcyBRV2ViUGFnZQorCisgICAgVHVybnMgdGhlIG1ham9yLCBt
aW5vciBhbmQgcGF0Y2ggbnVtYmVycyBvZiBhIHZlcnNpb24gaW50byBhbgorICAgIGludGVnZXIs
IDB4TU1OTlBQIChNTSA9IG1ham9yLCBOTiA9IG1pbm9yLCBQUCA9IHBhdGNoKS4gVGhpcyBjYW4K
KyAgICBiZSBjb21wYXJlZCB3aXRoIGFub3RoZXIgc2ltaWxhcmx5IHByb2Nlc3NlZCB2ZXJzaW9u
IGlkLCBmb3IgZXhhbXBsZQorICAgIGluIGEgcHJlcHJvY2Vzc29yIHN0YXRlbWVudDoKKworICAg
IFxjb2RlCisgICAgI2lmIFFUV0VCS0lUX1ZFUlNJT04gPj0gUVRXRUJLSVRfVkVSU0lPTl9DSEVD
SygyLCAxLCAwKQorICAgIC8vIGNvZGUgdG8gdXNlIEFQSSBuZXcgaW4gUXQgV2ViS2l0IDIuMS4w
CisgICAgI2VuZGlmCisgICAgXGVuZGNvZGUKKyovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Via2l0Z2xvYmFsLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Via2l0Z2xv
YmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlNGQ0NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJraXRnbG9iYWwuaApAQCAtMCww
ICsxLDQ5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgUm9iZXJ0
IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUVdFQktJVEdMT0JB
TF9ICisjZGVmaW5lIFFXRUJLSVRHTE9CQUxfSAorCisjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwu
aD4KKyNpbmNsdWRlIDxRdENvcmUvcXN0cmluZy5oPgorCisjZGVmaW5lIFFUV0VCS0lUX1ZFUlNJ
T05fQ0hFQ0sobWFqb3IsIG1pbm9yLCBwYXRjaCkgKChtYWpvcjw8MTYpfChtaW5vcjw8OCl8KHBh
dGNoKSkKKworI2lmbmRlZiBRVF9TVEFUSUMKKyMgIGlmICFkZWZpbmVkKFFUX0JVSUxEX1dFQktJ
VFdJREdFVFNfTElCKSAmJiBkZWZpbmVkKEJVSUxESU5HX1dFQktJVCkKKyMgICAgICBkZWZpbmUg
UVdFQktJVF9FWFBPUlQgUV9ERUNMX0VYUE9SVAorIyAgZWxzZQorIyAgICAgIGRlZmluZSBRV0VC
S0lUX0VYUE9SVCBRX0RFQ0xfSU1QT1JUCisjICBlbmRpZgorIyAgaWYgZGVmaW5lZChRVF9CVUlM
RF9XRUJLSVRXSURHRVRTX0xJQikKKyMgICAgICBkZWZpbmUgUVdFQktJVFdJREdFVFNfRVhQT1JU
IFFfREVDTF9FWFBPUlQKKyMgIGVsc2UKKyMgICAgICBkZWZpbmUgUVdFQktJVFdJREdFVFNfRVhQ
T1JUIFFfREVDTF9JTVBPUlQKKyMgIGVuZGlmCisjZWxzZQorIyAgZGVmaW5lIFFXRUJLSVRXSURH
RVRTX0VYUE9SVAorIyAgZGVmaW5lIFFXRUJLSVRfRVhQT1JUCisjZW5kaWYKKworUVdFQktJVF9F
WFBPUlQgUVN0cmluZyBxV2ViS2l0VmVyc2lvbigpOworUVdFQktJVF9FWFBPUlQgaW50IHFXZWJL
aXRNYWpvclZlcnNpb24oKTsKK1FXRUJLSVRfRVhQT1JUIGludCBxV2ViS2l0TWlub3JWZXJzaW9u
KCk7CisKKyNlbmRpZiAvLyBRV0VCS0lUR0xPQkFMX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzk4NzA2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJr
aXRwbGF0Zm9ybXBsdWdpbi5oCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICog
Q29weXJpZ2h0IChDKSAyMDEzIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyku
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFFXRUJLSVRQTEFURk9STVBMVUdJTl9ICisjZGVmaW5lIFFXRUJLSVRQTEFU
Rk9STVBMVUdJTl9ICisKKy8qCisgKiAgV2FybmluZzogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmls
ZSBpcyBub3QgIHBhcnQgb2YgdGhlIHB1YmxpYyBRdFdlYktpdCBBUEkKKyAqICBhbmQgbWF5IGJl
IGNoYW5nZWQgZnJvbSB2ZXJzaW9uIHRvIHZlcnNpb24gb3IgZXZlbiBiZSBjb21wbGV0ZWx5IHJl
bW92ZWQuCisqLworCisjaWYgZGVmaW5lZChXVEZfVVNFX1FUX01VTFRJTUVESUEpICYmIFdURl9V
U0VfUVRfTVVMVElNRURJQQorI2luY2x1ZGUgPFFNZWRpYVBsYXllcj4KKyNlbmRpZgorI2luY2x1
ZGUgPFF0Q29yZS9RT2JqZWN0PgorI2luY2x1ZGUgPFF0Q29yZS9RUmVjdD4KKyNpbmNsdWRlIDxR
dENvcmUvUVVybD4KKyNpbmNsdWRlIDxRdEd1aS9RQ29sb3I+CisjaW5jbHVkZSA8UXRHdWkvUUZv
bnQ+CisKK2NsYXNzIFFXZWJTZWxlY3REYXRhIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2Vi
U2VsZWN0RGF0YSgpIHt9CisKKyAgICBlbnVtIEl0ZW1UeXBlIHsgT3B0aW9uLCBHcm91cCwgU2Vw
YXJhdG9yIH07CisKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIGl0ZW1UeXBlKGludCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUVN0cmluZyBpdGVtVGV4dChpbnQgaW5kZXgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRvb2xUaXAoaW50IGluZGV4KSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQoaW50IGluZGV4KSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGl0ZW1Jc1NlbGVjdGVkKGludCBpbmRleCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgaW50IGl0ZW1Db3VudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbXVsdGlwbGUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUUNvbG9yIGZvcmVncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFFDb2xvciBpdGVtQmFja2dyb3VuZENvbG9yKGludCBpbmRleCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUUNvbG9yIGl0ZW1Gb3JlZ3JvdW5kQ29sb3IoaW50IGluZGV4KSBjb25z
dCA9IDA7Cit9OworCitjbGFzcyBRV2ViU2VsZWN0TWV0aG9kIDogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdlYlNlbGVjdE1ldGhvZCgpIHt9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBRV2ViU2VsZWN0RGF0YSYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbWV0cnko
Y29uc3QgUVJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZvbnQoY29uc3QgUUZvbnQm
KSA9IDA7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIHNlbGVjdEl0ZW0oaW50IGluZGV4LCBib29s
IGFsbG93TXVsdGlwbHlTZWxlY3Rpb25zLCBib29sIHNoaWZ0KTsKKyAgICB2b2lkIGRpZEhpZGUo
KTsKK307CisKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25EYXRhIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5RV2ViTm90aWZpY2F0aW9uRGF0YSgpIHt9CisKKyAgICB2aXJ0dWFsIGNvbnN0IFFTdHJp
bmcgdGl0bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBRU3RyaW5nIG1lc3NhZ2Uo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBRVXJsIGljb25VcmwoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCBRVXJsIG9wZW5lclBhZ2VVcmwoKSBjb25zdCA9IDA7Cit9Owor
CitjbGFzcyBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIDogcHVibGljIFFPYmplY3QgeworICAg
IFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9Cisg
ICAgdmlydHVhbCB+UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBRV2ViTm90aWZpY2F0aW9uRGF0YSopID0gMDsK
KyAgICAKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZCgpOworICAgIHZv
aWQgbm90aWZpY2F0aW9uQ2xpY2tlZCgpOworfTsKKworY2xhc3MgUVdlYkhhcHRpY0ZlZWRiYWNr
UGxheWVyOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2Vi
SGFwdGljRmVlZGJhY2tQbGF5ZXIoKSB7fQorICAgIHZpcnR1YWwgflFXZWJIYXB0aWNGZWVkYmFj
a1BsYXllcigpIHt9CisKKyAgICBlbnVtIEhhcHRpY1N0cmVuZ3RoIHsKKyAgICAgICAgTm9uZSwg
V2VhaywgTWVkaXVtLCBTdHJvbmcKKyAgICB9OworCisgICAgZW51bSBIYXB0aWNFdmVudCB7Cisg
ICAgICAgIFByZXNzLCBSZWxlYXNlCisgICAgfTsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF5SGFw
dGljRmVlZGJhY2soY29uc3QgSGFwdGljRXZlbnQsIGNvbnN0IFFTdHJpbmcmIGhhcHRpY1R5cGUs
IGNvbnN0IEhhcHRpY1N0cmVuZ3RoKSA9IDA7Cit9OworCitjbGFzcyBRV2ViVG91Y2hNb2RpZmll
ciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIHZpcnR1YWwg
flFXZWJUb3VjaE1vZGlmaWVyKCkge30KKworICAgIGVudW0gUGFkZGluZ0RpcmVjdGlvbiB7Cisg
ICAgICAgIFVwLCBSaWdodCwgRG93biwgTGVmdAorICAgIH07CisKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGhpdFRlc3RQYWRkaW5nRm9yVG91Y2goY29uc3QgUGFkZGluZ0RpcmVjdGlvbikgY29uc3Qg
PSAwOworfTsKKworI2lmIGRlZmluZWQoV1RGX1VTRV9RVF9NVUxUSU1FRElBKSAmJiBXVEZfVVNF
X1FUX01VTFRJTUVESUEKK2NsYXNzIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGlj
IFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYkZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXIoKSB7fQorICAgIHZpcnR1YWwgflFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkg
e30KKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygp
IGNvbnN0ID0gMDsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgZnVsbFNjcmVlbkNsb3NlZCgpOwor
CitwdWJsaWMgUV9TTE9UUzoKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuKFFNZWRp
YVBsYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSA9IDA7Cit9
OworI2VuZGlmCisKK2NsYXNzIFFXZWJTcGVsbENoZWNrZXIgOiBwdWJsaWMgUU9iamVjdCB7Cisg
ICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgR3JhbW1hckRldGFpbCB7CisgICAgICAg
IGludCBsb2NhdGlvbjsKKyAgICAgICAgaW50IGxlbmd0aDsKKyAgICAgICAgUVN0cmluZ0xpc3Qg
Z3Vlc3NlczsKKyAgICAgICAgUVN0cmluZyB1c2VyRGVzY3JpcHRpb247CisgICAgfTsKKworICAg
IHZpcnR1YWwgYm9vbCBpc0NvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW5vdXNTcGVsbENoZWNraW5nKCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGxlYXJuV29yZChjb25zdCBRU3RyaW5nJiB3b3JkKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgUVN0cmluZyYg
d29yZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
UVN0cmluZyYgd29yZCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5n
TGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCBRU3RyaW5nIGF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZv
ck1pc3NwZWxsZWRXb3JkKGNvbnN0IFFTdHJpbmcmIHdvcmQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ3Vlc3Nlc0ZvcldvcmQoY29uc3QgUVN0cmluZyYgd29yZCwgY29uc3QgUVN0cmluZyYgY29u
dGV4dCwgUVN0cmluZ0xpc3QmIGd1ZXNzZXMpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1t
YXJDaGVja2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmco
Y29uc3QgUVN0cmluZyYsIFFMaXN0PEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9j
YXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOworfTsKKworY2xhc3MgUVdlYktpdFBs
YXRmb3JtUGx1Z2luIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2ViS2l0UGxhdGZvcm1QbHVn
aW4oKSB7fQorCisgICAgZW51bSBFeHRlbnNpb24geworICAgICAgICBNdWx0aXBsZVNlbGVjdGlv
bnMsCisgICAgICAgIE5vdGlmaWNhdGlvbnMsCisgICAgICAgIEhhcHRpY3MsCisgICAgICAgIFRv
dWNoSW50ZXJhY3Rpb24sCisgICAgICAgIEZ1bGxTY3JlZW5WaWRlb1BsYXllciwKKyAgICAgICAg
U3BlbGxDaGVja2VyCisgICAgfTsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lv
bihFeHRlbnNpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFPYmplY3QqIGNyZWF0ZUV4dGVu
c2lvbihFeHRlbnNpb24pIGNvbnN0ID0gMDsKK307CisKK1FUX0JFR0lOX05BTUVTUEFDRQorUV9E
RUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJvcmcucXQtcHJvamVjdC5R
dC5XZWJLaXQuUGxhdGZvcm1QbHVnaW4vMS45Iik7CitRVF9FTkRfTkFNRVNQQUNFCisKKyNlbmRp
ZiAvLyBRV0VCS0lUUExBVEZPUk1QTFVHSU5fSApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJw
bHVnaW5kYXRhYmFzZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUz
MjhjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5k
YXRhYmFzZS5jcHAKQEAgLTAsMCArMSwzOTMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5
IEpha3ViIFdpZWN6b3JlayA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3AuaCIKKworI2luY2x1ZGUgIlBsdWdp
bkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworLyohCisgICAgXGludGVybmFsCisgICAgXHR5cGVkZWYgUVdlYlBsdWdp
bkluZm86Ok1pbWVUeXBlCisgICAgXHNpbmNlIDQuNgorICAgIFxicmllZiBSZXByZXNlbnRzIGEg
c2luZ2xlIE1JTUUgdHlwZSBzdXBwb3J0ZWQgYnkgYSBwbHVnaW4uCisqLworCisvKiEKKyAgICBc
Y2xhc3MgUVdlYlBsdWdpbkluZm8KKyAgICBcaW50ZXJuYWwKKyAgICBcc2luY2UgNC42CisgICAg
XGJyaWVmIFRoZSBRV2ViUGx1Z2luSW5mbyBjbGFzcyByZXByZXNlbnRzIGEgc2luZ2xlIE5ldHNj
YXBlIHBsdWdpbi4KKworICAgIEEgUVdlYlBsdWdpbkluZm8gb2JqZWN0IHJlcHJlc2VudHMgYSBO
ZXRzY2FwZSBwbHVnaW4gcGlja2VkIHVwIGJ5IFdlYktpdAorICAgIGFuZCBpbmNsdWRlZCBpbiB0
aGUgcGx1Z2luIGRhdGFiYXNlLiBUaGlzIGNsYXNzIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0
CisgICAgdGhlIHBsdWdpbiwgc3VjaCBhcyBpdHMgbmFtZSgpLCBkZXNjcmlwdGlvbigpLCBhIGxp
c3Qgb2YgTUlNRSB0eXBlcyB0aGF0IGl0CisgICAgc3VwcG9ydHMgKGNhbiBiZSBhY2Nlc3NlZCB3
aXRoIG1pbWVUeXBlcygpKSBhbmQgdGhlIHBhdGggb2YgdGhlIHBsdWdpbgorICAgIGZpbGUuCisK
KyAgICBQbHVnaW5zIGNhbiBiZSBlbmFibGVkIGFuZCBkaXNhYmxlZCB3aXRoIHNldEVuYWJsZWQo
KS4gSWYgYSBwbHVnaW4gaXMKKyAgICBkaXNhYmxlZCwgaXQgd2lsbCBub3QgYmUgdXNlZCBieSBX
ZWJLaXQgdG8gaGFuZGxlIHN1cHBvcnRlZCBNSU1FIHR5cGVzLiBUbworICAgIGNoZWNrIGlmIGEg
cGx1Z2luIGlzIGVuYWJsZWQgb3Igbm90LCB1c2UgZW5hYmxlZCgpLgorCisgICAgXHNhIFFXZWJQ
bHVnaW5EYXRhYmFzZQorKi8KKworLyohCisgICAgQ29uc3RydWN0cyBhIG51bGwgUVdlYlBsdWdp
bkluZm8uCisqLworUVdlYlBsdWdpbkluZm86OlFXZWJQbHVnaW5JbmZvKCkKKyAgICA6IG1fcGFj
a2FnZSgwKQoreworfQorCitRV2ViUGx1Z2luSW5mbzo6UVdlYlBsdWdpbkluZm8oUGx1Z2luUGFj
a2FnZSogcGFja2FnZSkKKyAgICA6IG1fcGFja2FnZShwYWNrYWdlKQoreworICAgIGlmIChtX3Bh
Y2thZ2UpCisgICAgICAgIG1fcGFja2FnZS0+cmVmKCk7Cit9CisKKy8qIQorICAgIENvbnRydWN0
cyBhIGNvcHkgb2YgXGEgb3RoZXIuCisqLworUVdlYlBsdWdpbkluZm86OlFXZWJQbHVnaW5JbmZv
KGNvbnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikKKyAgICA6IG1fcGFja2FnZShvdGhlci5tX3Bh
Y2thZ2UpCit7CisgICAgaWYgKG1fcGFja2FnZSkKKyAgICAgICAgbV9wYWNrYWdlLT5yZWYoKTsK
K30KKworLyohCisgICAgRGVzdHJveXMgdGhlIHBsdWdpbiBpbmZvLgorKi8KK1FXZWJQbHVnaW5J
bmZvOjp+UVdlYlBsdWdpbkluZm8oKQoreworICAgIGlmIChtX3BhY2thZ2UpCisgICAgICAgIG1f
cGFja2FnZS0+ZGVyZWYoKTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUg
cGx1Z2luLgorCisgICAgXHNhIGRlc2NyaXB0aW9uKCkKKyovCitRU3RyaW5nIFFXZWJQbHVnaW5J
bmZvOjpuYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFja2FnZSkKKyAgICAgICAgcmV0dXJu
IFFTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5uYW1lKCk7Cit9CisKKy8qIQorICAg
IFJldHVybnMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBwbHVnaW4uCisKKyAgICBcc2EgbmFtZSgp
CisqLworUVN0cmluZyBRV2ViUGx1Z2luSW5mbzo6ZGVzY3JpcHRpb24oKSBjb25zdAoreworICAg
IGlmICghbV9wYWNrYWdlKQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIHJldHVybiBt
X3BhY2thZ2UtPmRlc2NyaXB0aW9uKCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgYSBsaXN0IG9m
IE1JTUUgdHlwZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbHVnaW4uCisKKyAgICBcc2Egc3VwcG9ydHNN
aW1lVHlwZSgpCisqLworUUxpc3Q8UVdlYlBsdWdpbkluZm86Ok1pbWVUeXBlPiBRV2ViUGx1Z2lu
SW5mbzo6bWltZVR5cGVzKCkgY29uc3QKK3sKKyAgICBpZiAobV9wYWNrYWdlICYmIG1fbWltZVR5
cGVzLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBNSU1FVG9EZXNjcmlwdGlvbnNNYXAmIG1p
bWVUb0Rlc2NyaXB0aW9ucyA9IG1fcGFja2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7CisgICAg
ICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRvRGVz
Y3JpcHRpb25zLmVuZCgpOworCisgICAgICAgIGZvciAoTUlNRVRvRGVzY3JpcHRpb25zTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1pbWVUb0Rlc2NyaXB0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIE1pbWVUeXBlIG1pbWVUeXBlOworICAgICAgICAgICAgbWlt
ZVR5cGUubmFtZSA9IGl0LT5rZXk7CisgICAgICAgICAgICBtaW1lVHlwZS5kZXNjcmlwdGlvbiA9
IGl0LT52YWx1ZTsKKworICAgICAgICAgICAgUVN0cmluZ0xpc3QgZmlsZUV4dGVuc2lvbnM7Cisg
ICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gbV9wYWNrYWdlLT5taW1lVG9F
eHRlbnNpb25zKCkuZ2V0KG1pbWVUeXBlLm5hbWUpOworCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBm
aWxlRXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uc1tpXSk7CisKKyAgICAgICAgICAgIG1pbWVU
eXBlLmZpbGVFeHRlbnNpb25zID0gZmlsZUV4dGVuc2lvbnM7CisgICAgICAgICAgICBtX21pbWVU
eXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG1f
bWltZVR5cGVzOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHBsdWdpbiBzdXBw
b3J0cyBhIHNwZWNpZmljIFxhIG1pbWVUeXBlOyBvdGhlcndpc2UKKyAgICByZXR1cm5zIGZhbHNl
LgorCisgICAgXHNhIG1pbWVUeXBlcygpCisqLworYm9vbCBRV2ViUGx1Z2luSW5mbzo6c3VwcG9y
dHNNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cGFja2FnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3BhY2thZ2UtPm1p
bWVUb0Rlc2NyaXB0aW9ucygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKK30KKworLyohCisgICAgUmV0
dXJucyBhbiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwbHVnaW4gZmlsZS4KKyovCitRU3RyaW5nIFFX
ZWJQbHVnaW5JbmZvOjpwYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFja2FnZSkKKyAgICAg
ICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5wYXRoKCk7Cit9CisK
Ky8qIQorICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGx1Z2luIGlzIGEgbnVsbCBwbHVnaW47IG90
aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorKi8KK2Jvb2wgUVdlYlBsdWdpbkluZm86OmlzTnVsbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3BhY2thZ2U7Cit9CisKKy8qIQorICAgIEVuYWJsZXMg
b3IgZGlzYWJsZXMgdGhlIHBsdWdpbiwgZGVwZW5kaW5nIG9uIHRoZSBcYSBlbmFibGVkIHBhcmFt
ZXRlci4KKworICAgIERpc2FibGVkIHBsdWdpbnMgd2lsbCBub3QgYmUgcGlja2VkIHVwIGJ5IFdl
YktpdCB3aGVuIGxvb2tpbmcgZm9yIGEgcGx1Z2luCisgICAgc3VwcG9ydGluZyBhIHBhcnRpY3Vs
YXIgTUlNRSB0eXBlLgorCisgICAgXHNhIGlzRW5hYmxlZCgpCisqLwordm9pZCBRV2ViUGx1Z2lu
SW5mbzo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKCFtX3BhY2thZ2UpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3BhY2thZ2UtPnNldEVuYWJsZWQoZW5hYmxlZCk7Cit9CisK
Ky8qIQorICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQ7IG90aGVyd2lz
ZSByZXR1cm5zIGZhbHNlLgorCisgICAgXHNhIHNldEVuYWJsZWQoKQorKi8KK2Jvb2wgUVdlYlBs
dWdpbkluZm86OmlzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BhY2thZ2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wYWNrYWdlLT5pc0VuYWJsZWQoKTsKK30K
KworLyohCisgICAgUmV0dXJucyB0cnVlIGlmIHRoaXMgcGx1Z2luIGluZm8gaXMgdGhlIHNhbWUg
YXMgdGhlIFxhIG90aGVyIHBsdWdpbiBpbmZvLgorKi8KK2Jvb2wgUVdlYlBsdWdpbkluZm86Om9w
ZXJhdG9yPT0oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biBtX3BhY2thZ2UgPT0gb3RoZXIubV9wYWNrYWdlOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRy
dWUgaWYgdGhpcyBwbHVnaW4gaW5mbyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgXGEgb3RoZXIgcGx1
Z2luIGluZm8uCisqLworYm9vbCBRV2ViUGx1Z2luSW5mbzo6b3BlcmF0b3IhPShjb25zdCBRV2Vi
UGx1Z2luSW5mbyYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFja2FnZSAhPSBvdGhl
ci5tX3BhY2thZ2U7Cit9CisKKy8qIQorICAgIEFzc2lnbnMgdGhlIFxhIG90aGVyIHBsdWdpbiBp
bmZvIHRvIHRoaXMgcGx1Z2luIGluZm8sIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlCisgICAgdG8g
dGhpcyBwbHVnaW4gaW5mby4KKyovCitRV2ViUGx1Z2luSW5mbyAmUVdlYlBsdWdpbkluZm86Om9w
ZXJhdG9yPShjb25zdCBRV2ViUGx1Z2luSW5mbyYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgPT0g
Jm90aGVyKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAobV9wYWNrYWdlKQorICAg
ICAgICBtX3BhY2thZ2UtPmRlcmVmKCk7CisgICAgbV9wYWNrYWdlID0gb3RoZXIubV9wYWNrYWdl
OworICAgIGlmIChtX3BhY2thZ2UpCisgICAgICAgIG1fcGFja2FnZS0+cmVmKCk7CisgICAgbV9t
aW1lVHlwZXMgPSBvdGhlci5tX21pbWVUeXBlczsKKworICAgIHJldHVybiAqdGhpczsKK30KKwor
LyohCisgICAgXGNsYXNzIFFXZWJQbHVnaW5EYXRhYmFzZQorICAgIFxpbnRlcm5hbAorICAgIFxz
aW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJQbHVnaW5EYXRhYmFzZSBjbGFzcyBwcm92aWRl
cyBhbiBpbnRlcmZhY2UgZm9yIG1hbmFnaW5nCisgICAgTmV0c2NhcGUgcGx1Z2lucyB1c2VkIGJ5
IFdlYktpdCBpbiBRV2ViUGFnZXMuCisKKyAgICBUaGUgUVdlYlBsdWdpbkRhdGFiYXNlIGNsYXNz
IGlzIGEgZGF0YWJhc2Ugb2YgTmV0c2NhcGUgcGx1Z2lucyB0aGF0IGFyZSB1c2VkCisgICAgYnkg
V2ViS2l0LiBUaGUgcGx1Z2lucyBhcmUgcGlja2VkIHVwIGJ5IFdlYktpdCBieSBsb29raW5nIHVw
IGEgc2V0IG9mIHNlYXJjaCBwYXRocy4KKyAgICBUaGUgZGVmYXVsdCBzZXQgY2FuIGJlIGFjY2Vz
c2VkIHVzaW5nIGRlZmF1bHRTZWFyY2hQYXRocygpLiBUaGUgc2VhcmNoIHBhdGhzCisgICAgY2Fu
IGJlIGNoYW5nZWQsIHNlZSBzZWFyY2hQYXRocygpIGFuZCBzZXRTZWFyY2hQYXRocygpLiBBZGRp
dGlvbmFsIHNlYXJjaCBwYXRocworICAgIGNhbiBhbHNvIGJlIGFkZGVkIHVzaW5nIGFkZFNlYXJj
aFBhdGgoKS4KKworICAgIFRoZSBwbHVnaW5zIHRoYXQgaGF2ZSBiZWVuIGRldGVjdGVkIGFyZSBl
eHBvc2VkIGJ5IHRoZSBwbHVnaW5zKCkgbWV0aG9kLgorICAgIFRoZSBsaXN0IGNvbnRhaW5zIFFX
ZWJQbHVnaW4gb2JqZWN0cyB0aGF0IGhvbGQgYm90aCB0aGUgbWV0YWRhdGEgYW5kIHRoZSBNSU1F
CisgICAgdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHBhcnRpY3VsYXIgcGx1Z2lucy4KKwor
ICAgIFdlYktpdCBzcGVjaWZpZXMgYSBwbHVnaW4gZm9yIGEgTUlNRSB0eXBlIGJ5IGxvb2tpbmcg
Zm9yIHRoZSBmaXJzdCBwbHVnaW4gdGhhdAorICAgIHN1cHBvcnRzIHRoZSBzcGVjaWZpYyBNSU1F
IHR5cGUuIFRvIGdldCBhIHBsdWdpbiwgdGhhdCBpcyB1c2VkIGJ5IFdlYktpdCB0bworICAgIGhh
bmRsZSBhIHNwZWNpZmljIE1JTUUgdHlwZSwgeW91IGNhbiB1c2UgdGhlIHBsdWdpbkZvck1pbWVU
eXBlKCkgZnVuY3Rpb24uCisKKyAgICBUbyBjaGFuZ2UgdGhlIHdheSBvZiByZXNvbHZpbmcgTUlN
RSB0eXBlcyBhbWJpZ3VpdHksIHlvdSBjYW4gZXhwbGljaXRseSBzZXQKKyAgICBhIHByZWZlcnJl
ZCBwbHVnaW4gZm9yIGEgc3BlY2lmaWMgTUlNRSB0eXBlLCB1c2luZyBzZXRQcmVmZXJyZWRQbHVn
aW5Gb3JNaW1lVHlwZSgpLgorCisgICAgXHNhIFFXZWJQbHVnaW5JbmZvLCBRV2ViU2V0dGluZ3M6
OnBsdWdpbkRhdGFiYXNlKCkKKyovCisKK1FXZWJQbHVnaW5EYXRhYmFzZTo6UVdlYlBsdWdpbkRh
dGFiYXNlKFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwgbV9k
YXRhYmFzZShQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpKQoreworfQorCitRV2Vi
UGx1Z2luRGF0YWJhc2U6On5RV2ViUGx1Z2luRGF0YWJhc2UoKQoreworfQorCisvKiEKKyAgICBS
ZXR1cm5zIGEgbGlzdCBvZiBwbHVnaW5zIGluc3RhbGxlZCBpbiB0aGUgc2VhcmNoIHBhdGhzLgor
CisgICAgVGhpcyBsaXN0IHdpbGwgY29udGFpbiBkaXNhYmxlZCBwbHVnaW5zLCBhbHRob3VnaCB0
aGV5IHdpbGwgbm90IGJlIHVzZWQgYnkKKyAgICBXZWJLaXQuCisKKyAgICBcc2EgcGx1Z2luRm9y
TWltZVR5cGUoKQorKi8KK1FMaXN0PFFXZWJQbHVnaW5JbmZvPiBRV2ViUGx1Z2luRGF0YWJhc2U6
OnBsdWdpbnMoKSBjb25zdAoreworICAgIFFMaXN0PFFXZWJQbHVnaW5JbmZvPiBxd2VicGx1Z2lu
czsKKyAgICBjb25zdCBWZWN0b3I8UGx1Z2luUGFja2FnZSo+JiBwbHVnaW5zID0gbV9kYXRhYmFz
ZS0+cGx1Z2lucygpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwbHVnaW5z
LnNpemUoKTsgKytpKSB7CisgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbiA9IHBsdWdpbnNb
aV07CisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkgCisgICAgICAg
IGlmICghcGx1Z2luLT5lbnN1cmVQbHVnaW5Mb2FkZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworI2VuZGlmCisgICAgICAgIHF3ZWJwbHVnaW5zLmFwcGVuZChRV2ViUGx1Z2luSW5mbyhwbHVn
aW4pKTsKKyAgICB9CisKKyAgICByZXR1cm4gcXdlYnBsdWdpbnM7Cit9CisKKy8qIQorICAgIFJl
dHVybnMgYSBkZWZhdWx0IHNldCBvZiBzZWFyY2ggcGF0aHMuCisKKyAgICBcc2Egc2VhcmNoUGF0
aHMoKSwgc2V0U2VhcmNoUGF0aHMoKQorKi8KK1FTdHJpbmdMaXN0IFFXZWJQbHVnaW5EYXRhYmFz
ZTo6ZGVmYXVsdFNlYXJjaFBhdGhzKCkKK3sKKyAgICBRU3RyaW5nTGlzdCBwYXRoczsKKworICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcyA9IFBsdWdpbkRhdGFiYXNlOjpkZWZh
dWx0UGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IGRpcmVjdG9yaWVzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRocy5hcHBlbmQoZGlyZWN0b3Jp
ZXNbaV0pOworCisgICAgcmV0dXJuIHBhdGhzOworfQorCisvKiEKKyAgICBSZXR1cm5zIGEgbGlz
dCBvZiBzZWFyY2ggcGF0aHMgdGhhdCBhcmUgdXNlZCBieSBXZWJLaXQgdG8gbG9vayBmb3IgcGx1
Z2lucy4KKworICAgIFxzYSBkZWZhdWx0U2VhcmNoUGF0aHMoKSwgc2V0U2VhcmNoUGF0aHMoKQor
Ki8KK1FTdHJpbmdMaXN0IFFXZWJQbHVnaW5EYXRhYmFzZTo6c2VhcmNoUGF0aHMoKSBjb25zdAor
eworICAgIFFTdHJpbmdMaXN0IHBhdGhzOworCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRp
cmVjdG9yaWVzID0gbV9kYXRhYmFzZS0+cGx1Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGRpcmVjdG9yaWVzLnNpemUoKTsgKytpKQorICAgICAgICBw
YXRocy5hcHBlbmQoZGlyZWN0b3JpZXNbaV0pOworCisgICAgcmV0dXJuIHBhdGhzOworfQorCisv
KiEKKyAgICBDaGFuZ2VzIHRoZSBzZWFyY2ggcGF0aHMgdG8gXGEgcGF0aHMuCisgICAgVGhlIGRh
dGFiYXNlIGlzIGF1dG9tYXRpY2FsbHkgcmVmcmVzaGVkLgorCisgICAgXHNhIHNlYXJjaFBhdGhz
KCksIGRlZmF1bHRTZWFyY2hQYXRocygpCisqLwordm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OnNl
dFNlYXJjaFBhdGhzKGNvbnN0IFFTdHJpbmdMaXN0JiBwYXRocykKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiBkaXJlY3RvcmllczsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGF0aHMuY291bnQo
KTsgKytpKQorICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQocGF0aHMuYXQoaSkpOworCisgICAg
bV9kYXRhYmFzZS0+c2V0UGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0b3JpZXMpOworICAgIC8vIFBs
dWdpbkRhdGFiYXNlOjpzZXRQbHVnaW5EaXJlY3RvcmllcygpIGRvZXMgbm90IHJlZnJlc2ggdGhl
IGRhdGFiYXNlLgorICAgIG1fZGF0YWJhc2UtPnJlZnJlc2goKTsKK30KKworLyohCisgICAgQWRk
cyBhbiBhZGRpdGlvbmFsIFxhIHBhdGggdG8gdGhlIGN1cnJlbnQgc2V0LgorICAgIFRoZSBkYXRh
YmFzZSBpcyBhdXRvbWF0aWNhbGx5IHJlZnJlc2hlZC4KKworICAgIFxzYSBzZWFyY2hQYXRocygp
LCBzZXRTZWFyY2hQYXRocygpCisqLwordm9pZCBRV2ViUGx1Z2luRGF0YWJhc2U6OmFkZFNlYXJj
aFBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKK3sKKyAgICBtX2RhdGFiYXNlLT5hZGRFeHRyYVBs
dWdpbkRpcmVjdG9yeShwYXRoKTsKKyAgICAvLyBQbHVnaW5EYXRhYmFzZTo6YWRkRXh0cmFQbHVn
aW5EaXJlY3RvcnkoKSBkb2VzIHJlZnJlc2ggdGhlIGRhdGFiYXNlLgorfQorCisvKiEKKyAgICBS
ZWZyZXNoZXMgdGhlIHBsdWdpbiBkYXRhYmFzZSwgYWRkcyBuZXcgcGx1Z2lucyB0aGF0IGhhdmUg
YmVlbiBmb3VuZCBhbmQgcmVtb3ZlcworICAgIHRoZSBvbmVzIHRoYXQgYXJlIG5vIGxvbmdlciBh
dmFpbGFibGUgaW4gdGhlIHNlYXJjaCBwYXRocy4KKworICAgIFlvdSBjYW4gY2FsbCB0aGlzIGZ1
bmN0aW9uIHdoZW4gdGhlIHNldCBvZiBwbHVnaW5zIGluc3RhbGxlZCBpbiB0aGUgc2VhcmNoIHBh
dGhzCisgICAgY2hhbmdlcy4gWW91IGRvIG5vdCBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3
aGVuIGNoYW5naW5nIHNlYXJjaCBwYXRocywKKyAgICBpbiB0aGF0IGNhc2UgV2ViS2l0IGF1dG9t
YXRpY2FsbHkgcmVmcmVzaGVzIHRoZSBkYXRhYmFzZS4KKyovCit2b2lkIFFXZWJQbHVnaW5EYXRh
YmFzZTo6cmVmcmVzaCgpCit7CisgICAgbV9kYXRhYmFzZS0+cmVmcmVzaCgpOworfQorCisvKiEK
KyAgICBSZXR1cm5zIHRoZSBwbHVnaW4gdGhhdCBpcyBjdXJyZW50bHkgdXNlZCBieSBXZWJLaXQg
Zm9yIGEgZ2l2ZW4gXGEgbWltZVR5cGUuCisKKyAgICBcc2Egc2V0UHJlZmVycmVkUGx1Z2luRm9y
TWltZVR5cGUoKQorKi8KK1FXZWJQbHVnaW5JbmZvIFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lu
Rm9yTWltZVR5cGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUpCit7CisgICAgcmV0dXJuIFFXZWJQ
bHVnaW5JbmZvKG1fZGF0YWJhc2UtPnBsdWdpbkZvck1JTUVUeXBlKG1pbWVUeXBlKSk7Cit9CisK
Ky8qIQorICAgIENoYW5nZXMgdGhlIHByZWZlcnJlZCBwbHVnaW4gZm9yIGEgZ2l2ZW4gXGEgbWlt
ZVR5cGUgdG8gXGEgcGx1Z2luLiBUaGUgXGEgcGx1Z2luCisgICAgaGFzIHRvIHN1cHBvcnQgdGhl
IGdpdmVuIFxhIG1pbWVUeXBlLCBvdGhlcndpc2UgdGhlIHNldHRpbmcgd2lsbCBoYXZlIG5vIGVm
ZmVjdC4KKworICAgIENhbGxpbmcgdGhlIGZ1bmN0aW9uIHdpdGggYSBudWxsIFxhIHBsdWdpbiBy
ZXNldHMgdGhlIHNldHRpbmcuCisKKyAgICBcc2EgcGx1Z2luRm9yTWltZVR5cGUoKQorKi8KK3Zv
aWQgUVdlYlBsdWdpbkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZShjb25z
dCBRU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUVdlYlBsdWdpbkluZm8mIHBsdWdpbikKK3sKKyAg
ICBtX2RhdGFiYXNlLT5zZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSwgcGx1
Z2luLm1fcGFja2FnZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
cGx1Z2luZGF0YWJhc2VfcC5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFi
YXNlX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjJjM2RlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3Au
aApAQCAtMCwwICsxLDk4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBKYWt1YiBXaWVj
em9yZWsgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV0VCUExVR0lOREFUQUJBU0Vf
SAorI2RlZmluZSBRV0VCUExVR0lOREFUQUJBU0VfSAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2Jh
bC5oIgorI2luY2x1ZGUgInF3ZWJwbHVnaW5mYWN0b3J5LmgiCisKKyNpbmNsdWRlIDxRdENvcmUv
cW9iamVjdC5oPgorI2luY2x1ZGUgPFF0Q29yZS9xc3RyaW5nbGlzdC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgY2xhc3MgUGx1Z2luRGF0YWJhc2U7CisgICAgY2xhc3MgUGx1Z2luUGFj
a2FnZTsKK30KKworY2xhc3MgUVdlYlBsdWdpbkluZm9Qcml2YXRlOworY2xhc3MgUVdFQktJVF9F
WFBPUlQgUVdlYlBsdWdpbkluZm8geworcHVibGljOgorICAgIFFXZWJQbHVnaW5JbmZvKCk7Cisg
ICAgUVdlYlBsdWdpbkluZm8oY29uc3QgUVdlYlBsdWdpbkluZm8mIG90aGVyKTsKKyAgICBRV2Vi
UGx1Z2luSW5mbyAmb3BlcmF0b3I9KGNvbnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcik7CisgICAg
flFXZWJQbHVnaW5JbmZvKCk7CisKK3ByaXZhdGU6CisgICAgUVdlYlBsdWdpbkluZm8oV2ViQ29y
ZTo6UGx1Z2luUGFja2FnZSogcGFja2FnZSk7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFFXZWJQ
bHVnaW5GYWN0b3J5OjpNaW1lVHlwZSBNaW1lVHlwZTsKKworICAgIFFTdHJpbmcgbmFtZSgpIGNv
bnN0OworICAgIFFTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBRTGlzdDxNaW1lVHlw
ZT4gbWltZVR5cGVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c01pbWVUeXBlKGNvbnN0IFFT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKKyAgICBRU3RyaW5nIHBhdGgoKSBjb25zdDsKKworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KTsKKyAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFFXZWJQbHVnaW5JbmZvJiBvdGhlcikgY29uc3Q7CisKKyAgICBmcmllbmQgY2xhc3MgUVdl
YlBsdWdpbkRhdGFiYXNlOworCitwcml2YXRlOgorICAgIFFXZWJQbHVnaW5JbmZvUHJpdmF0ZSog
ZDsKKyAgICBXZWJDb3JlOjpQbHVnaW5QYWNrYWdlKiBtX3BhY2thZ2U7CisgICAgbXV0YWJsZSBR
TGlzdDxNaW1lVHlwZT4gbV9taW1lVHlwZXM7Cit9OworCitjbGFzcyBRV2ViUGx1Z2luRGF0YWJh
c2VQcml2YXRlOworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlBsdWdpbkRhdGFiYXNlIDogcHVi
bGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3ByaXZhdGU6CisgICAgUVdlYlBsdWdpbkRh
dGFiYXNlKFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIH5RV2ViUGx1Z2luRGF0YWJhc2UoKTsK
KworcHVibGljOgorICAgIFFMaXN0PFFXZWJQbHVnaW5JbmZvPiBwbHVnaW5zKCkgY29uc3Q7CisK
KyAgICBzdGF0aWMgUVN0cmluZ0xpc3QgZGVmYXVsdFNlYXJjaFBhdGhzKCk7CisgICAgUVN0cmlu
Z0xpc3Qgc2VhcmNoUGF0aHMoKSBjb25zdDsKKyAgICB2b2lkIHNldFNlYXJjaFBhdGhzKGNvbnN0
IFFTdHJpbmdMaXN0JiBwYXRocyk7CisgICAgdm9pZCBhZGRTZWFyY2hQYXRoKGNvbnN0IFFTdHJp
bmcmIHBhdGgpOworCisgICAgdm9pZCByZWZyZXNoKCk7CisKKyAgICBRV2ViUGx1Z2luSW5mbyBw
bHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgdm9pZCBzZXRQ
cmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
UVdlYlBsdWdpbkluZm8mIHBsdWdpbik7CisKKyAgICBmcmllbmQgY2xhc3MgUVdlYlNldHRpbmdz
OworCitwcml2YXRlOgorICAgIFFXZWJQbHVnaW5EYXRhYmFzZVByaXZhdGUqIGQ7CisgICAgV2Vi
Q29yZTo6UGx1Z2luRGF0YWJhc2UqIG1fZGF0YWJhc2U7Cit9OworCisjZW5kaWYgLy8gUVdFQlBM
VUdJTkRBVEFCQVNFX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVn
aW5mYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQ3YTYwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwCkBAIC0w
LDAgKzEsMjY0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAicXdlYnBsdWdpbmZhY3RvcnkuaCIKKworLyohCisgICAgXGNsYXNzIFFXZWJQbHVn
aW5GYWN0b3J5CisgICAgXHNpbmNlIDQuNAorICAgIFxicmllZiBUaGUgUVdlYlBsdWdpbkZhY3Rv
cnkgY2xhc3MgaXMgdXNlZCB0byBlbWJlZCBjdXN0b20gZGF0YSB0eXBlcyBpbiB3ZWIgcGFnZXMu
CisKKyAgICBcaW5tb2R1bGUgUXRXZWJLaXQKKworICAgIFRoZSBIVE1MIFxjezxvYmplY3Q+fSB0
YWcgaXMgdXNlZCB0byBlbWJlZCBhcmJpdHJhcnkgY29udGVudCBpbnRvIGEgd2ViIHBhZ2UsCisg
ICAgZm9yIGV4YW1wbGU6CisKKyAgICBcY29kZQorICAgIDxvYmplY3QgdHlwZT0iYXBwbGljYXRp
b24veC1wZGYiIGRhdGE9Imh0dHA6Ly9xdC5ub2tpYS5jb20vZG9jdW1lbnQucGRmIiB3aWR0aD0i
NTAwIiBoZWlnaHQ9IjQwMCI+PC9vYmplY3Q+CisgICAgXGVuZGNvZGUKKworICAgIFF0IFdlYktp
dCB3aWxsIG5hdGl2ZWx5IGhhbmRsZSB0aGUgbW9zdCBiYXNpYyBkYXRhIHR5cGVzIGxpa2UgXGN7
dGV4dC9odG1sfSBhbmQKKyAgICBcY3tpbWFnZS9qcGVnfSwgYnV0IGZvciBhbnkgYWR2YW5jZWQg
b3IgY3VzdG9tIGRhdGEgdHlwZXMgeW91IHdpbGwgbmVlZCB0bworICAgIHByb3ZpZGUgYSBoYW5k
bGVyIHlvdXJzZWxmLgorCisgICAgUVdlYlBsdWdpbkZhY3RvcnkgaXMgYSBmYWN0b3J5IGZvciBj
cmVhdGluZyBwbHVnaW5zIGZvciBRV2ViUGFnZSwgd2hlcmUgZWFjaAorICAgIHBsdWdpbiBwcm92
aWRlcyBzdXBwb3J0IGZvciBvbmUgb3IgbW9yZSBkYXRhIHR5cGVzLiBBIHBsdWdpbiBmYWN0b3J5
IGNhbiBiZQorICAgIGluc3RhbGxlZCBvbiBhIFFXZWJQYWdlIHVzaW5nIFFXZWJQYWdlOjpzZXRQ
bHVnaW5GYWN0b3J5KCkuCisKKyAgICBcbm90ZSBUaGUgcGx1Z2luIGZhY3RvcnkgaXMgb25seSB1
c2VkIGlmIHBsdWdpbnMgYXJlIGVuYWJsZWQgdGhyb3VnaCBRV2ViU2V0dGluZ3MuCisKKyAgICBZ
b3UgcHJvdmlkZSBhIFFXZWJQbHVnaW5GYWN0b3J5IGJ5IGltcGxlbWVudGluZyB0aGUgcGx1Z2lu
cygpIGFuZCB0aGUKKyAgICBjcmVhdGUoKSBtZXRob2RzLiBGb3IgcGx1Z2lucygpIGl0IGlzIG5l
Y2Vzc2FyeSB0byBkZXNjcmliZSB0aGUgcGx1Z2lucyB0aGUKKyAgICBmYWN0b3J5IGNhbiBjcmVh
dGUsIGluY2x1ZGluZyBhIGRlc2NyaXB0aW9uIGFuZCB0aGUgc3VwcG9ydGVkIE1JTUUgdHlwZXMu
CisgICAgVGhlIE1JTUUgdHlwZXMgZWFjaCBwbHVnaW4gY2FuIGhhbmRsZSBzaG91bGQgbWF0Y2gg
dGhlIG9uZXMgc3BlY2lmaWVkIGluCisgICAgaW4gdGhlIEhUTUwgXGN7PG9iamVjdD59IHRhZyBv
ZiB5b3VyIGNvbnRlbnQuCisKKyAgICBUaGUgY3JlYXRlKCkgbWV0aG9kIGlzIGNhbGxlZCBpZiB0
aGUgcmVxdWVzdGVkIE1JTUUgdHlwZSBpcyBzdXBwb3J0ZWQuIFRoZQorICAgIGltcGxlbWVudGF0
aW9uIGhhcyB0byByZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHBsdWdpbiByZXF1ZXN0ZWQg
Zm9yIHRoZQorICAgIGdpdmVuIE1JTUUgdHlwZSBhbmQgdGhlIHNwZWNpZmllZCBVUkwuCisKKyAg
ICBUaGUgcGx1Z2lucyB0aGVtc2VsdmVzIGFyZSBzdWJjbGFzc2VzIG9mIFFPYmplY3QsIGJ1dCBj
dXJyZW50bHkgb25seSBwbHVnaW5zCisgICAgYmFzZWQgb24gZWl0aGVyIFFXaWRnZXQgb3IgUUdy
YXBoaWNzV2lkZ2V0IGFyZSBzdXBwb3J0ZWQuCisKKyovCisKKworLyohCisgICAgXGNsYXNzIFFX
ZWJQbHVnaW5GYWN0b3J5OjpQbHVnaW4KKyAgICBcc2luY2UgNC40CisgICAgXGJyaWVmIFRoZSBR
V2ViUGx1Z2luRmFjdG9yeTo6UGx1Z2luIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIHByb3BlcnRp
ZXMgb2YgYSBwbHVnaW4gYSBRV2ViUGx1Z2luRmFjdG9yeSBjYW4gY3JlYXRlLgorCisgICAgXGlu
bW9kdWxlIFF0V2ViS2l0CisqLworCisvKiEKKyAgICBcdmFyaWFibGUgUVdlYlBsdWdpbkZhY3Rv
cnk6OlBsdWdpbjo6bmFtZQorICAgIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4uCisqLworCisvKiEK
KyAgICBcdmFyaWFibGUgUVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdpbjo6ZGVzY3JpcHRpb24KKyAg
ICBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHBsdWdpbi4KKyovCisKKy8qIQorICAgIFx2YXJpYWJs
ZSBRV2ViUGx1Z2luRmFjdG9yeTo6UGx1Z2luOjptaW1lVHlwZXMKKyAgICBUaGUgbGlzdCBvZiBt
aW1lIHR5cGVzIHN1cHBvcnRlZCBieSB0aGUgcGx1Z2luLgorKi8KKworLyohCisgICAgXGNsYXNz
IFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlwZQorICAgIFxzaW5jZSA0LjQKKyAgICBcYnJpZWYg
VGhlIFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlwZSBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgbWlt
ZSB0eXBlIHN1cHBvcnRlZCBieSBhIHBsdWdpbi4KKworICAgIFxpbm1vZHVsZSBRdFdlYktpdAor
Ki8KKworLyohCisgICAgUmV0dXJucyB0cnVlIGlmIHRoaXMgbWltZXR5cGUgaXMgdGhlIHNhbWUg
YXMgdGhlIFxhIG90aGVyIG1pbWUgdHlwZS4KKyovCitib29sIFFXZWJQbHVnaW5GYWN0b3J5OjpN
aW1lVHlwZTo6b3BlcmF0b3I9PShjb25zdCBNaW1lVHlwZSYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG5hbWUgPT0gb3RoZXIubmFtZQorICAgICAgICAgICAmJiBkZXNjcmlwdGlvbiA9PSBv
dGhlci5kZXNjcmlwdGlvbgorICAgICAgICAgICAmJiBmaWxlRXh0ZW5zaW9ucyA9PSBvdGhlci5m
aWxlRXh0ZW5zaW9uczsKK30KKworLyohCisgICAgXGZuIGJvb2wgUVdlYlBsdWdpbkZhY3Rvcnk6
Ok1pbWVUeXBlOjpvcGVyYXRvciE9KGNvbnN0IE1pbWVUeXBlJiBvdGhlcikgY29uc3QKKworICAg
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIG1pbWV0eXBlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBcYSBv
dGhlciBtaW1lIHR5cGUuCisqLworCisvKiEKKyAgICBcdmFyaWFibGUgUVdlYlBsdWdpbkZhY3Rv
cnk6Ok1pbWVUeXBlOjpuYW1lCisKKyAgICBUaGUgZnVsbCBuYW1lIG9mIHRoZSBNSU1FIHR5cGU7
IGUuZy4sIFxje3RleHQvcGxhaW59IG9yIFxje2ltYWdlL3BuZ30uCisqLworCisvKiEKKyAgICBc
dmFyaWFibGUgUVdlYlBsdWdpbkZhY3Rvcnk6Ok1pbWVUeXBlOjpkZXNjcmlwdGlvbgorICAgIFRo
ZSBkZXNjcmlwdGlvbiBvZiB0aGUgbWltZSB0eXBlLgorKi8KKworLyohCisgICAgXHZhcmlhYmxl
IFFXZWJQbHVnaW5GYWN0b3J5OjpNaW1lVHlwZTo6ZmlsZUV4dGVuc2lvbnMKKyAgICBUaGUgbGlz
dCBvZiBmaWxlIGV4dGVuc2lvbnMgdGhhdCBhcmUgdXNlZCBieSB0aGlzIG1pbWUgdHlwZS4KKwor
ICAgIEZvciBleGFtcGxlLCBhIG1pbWUgdHlwZSBmb3IgUERGIGRvY3VtZW50cyB3b3VsZCByZXR1
cm4gInBkZiIgYXMgaXRzIGZpbGUgZXh0ZW5zaW9uLgorKi8KKworLyohCisgICAgQ29uc3RydWN0
cyBhIFFXZWJQbHVnaW5GYWN0b3J5IHdpdGggcGFyZW50IFxhIHBhcmVudC4KKyovCitRV2ViUGx1
Z2luRmFjdG9yeTo6UVdlYlBsdWdpbkZhY3RvcnkoUU9iamVjdCAqcGFyZW50KQorICAgIDogUU9i
amVjdChwYXJlbnQpCit7Cit9CisKKy8qIQorICAgIERlc3RydWN0b3IuCisqLworUVdlYlBsdWdp
bkZhY3Rvcnk6On5RV2ViUGx1Z2luRmFjdG9yeSgpCit7Cit9CisKKy8qIQorICAgIFxmbiBRTGlz
dDxQbHVnaW4+IFFXZWJQbHVnaW5GYWN0b3J5OjpwbHVnaW5zKCkgY29uc3QgPSAwCisKKyAgICBU
aGlzIGZ1bmN0aW9uIGlzIHJlaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3NlcyB0byByZXR1cm4gYSBs
aXN0IG9mCisgICAgc3VwcG9ydGVkIHBsdWdpbnMgdGhlIGZhY3RvcnkgY2FuIGNyZWF0ZS4KKwor
ICAgIFxub3RlIEN1cnJlbnRseSwgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCB3aGVuIEph
dmFTY3JpcHQgcHJvZ3JhbXMKKyAgICBhY2Nlc3MgdGhlIGdsb2JhbCBcYyBwbHVnaW5zIG9yIFxj
IG1pbWV0eXBlcyBvYmplY3RzLgorKi8KKworLyohCisgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxs
ZWQgdG8gcmVmcmVzaCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgcGx1Z2lucy4gSXQgbWF5IGJlIGNh
bGxlZCBhZnRlciBhIG5ldyBwbHVnaW4KKyAgICBoYXMgYmVlbiBpbnN0YWxsZWQgaW4gdGhlIHN5
c3RlbS4KKyovCit2b2lkIFFXZWJQbHVnaW5GYWN0b3J5OjpyZWZyZXNoUGx1Z2lucygpCit7Cit9
CisKKy8qIQorICAgIFxmbiBRT2JqZWN0ICpRV2ViUGx1Z2luRmFjdG9yeTo6Y3JlYXRlKGNvbnN0
IFFTdHJpbmcgJm1pbWVUeXBlLCBjb25zdCBRVXJsICZ1cmwsCisgICAgY29uc3QgUVN0cmluZ0xp
c3QgJmFyZ3VtZW50TmFtZXMsIGNvbnN0IFFTdHJpbmdMaXN0ICZhcmd1bWVudFZhbHVlcykgY29u
c3QgPSAwCisKKyAgICBJbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzIHRvIGNyZWF0ZSBhIG5ldyBw
bHVnaW4gdGhhdCBjYW4gZGlzcGxheSBjb250ZW50IG9mCisgICAgdGhlIE1JTUUgdHlwZSBnaXZl
biBieSBcYSBtaW1lVHlwZS4gVGhlIFVSTCBvZiB0aGUgY29udGVudCBpcyBwcm92aWRlZCBpbiBc
YSB1cmwuCisgICAgVGhlIHJldHVybmVkIG9iamVjdCBzaG91bGQgYmUgYSBRV2lkZ2V0LgorCisg
ICAgVGhlIEhUTUwgb2JqZWN0IGVsZW1lbnQgY2FuIHByb3ZpZGUgcGFyYW1ldGVycyB0aHJvdWdo
IHRoZSBcY3s8cGFyYW0+fSB0YWcuCisgICAgVGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSBhdHRyaWJ1
dGVzIG9mIHRoZXNlIHRhZ3MgYXJlIHNwZWNpZmllZCBieSB0aGUKKyAgICBcYSBhcmd1bWVudE5h
bWVzIGFuZCBcYSBhcmd1bWVudFZhbHVlcyBzdHJpbmcgbGlzdHMuCisKKyAgICBGb3IgZXhhbXBs
ZToKKworICAgIFxjb2RlCisgICAgPG9iamVjdCB0eXBlPSJhcHBsaWNhdGlvbi94LXBkZiIgZGF0
YT0iaHR0cDovL3F0Lm5va2lhLmNvbS9kb2N1bWVudC5wZGYiIHdpZHRoPSI1MDAiIGhlaWdodD0i
NDAwIj4KKyAgICAgICAgPHBhcmFtIG5hbWU9InNob3dUYWJsZU9mQ29udGVudHMiIHZhbHVlPSJ0
cnVlIiAvPgorICAgICAgICA8cGFyYW0gbmFtZT0iaGlkZVRodW1ibmFpbHMiIHZhbHVlPSJmYWxz
ZSIgLz4KKyAgICA8L29iamVjdD4KKyAgICBcZW5kY29kZQorCisgICAgVGhlIGFib3ZlIG9iamVj
dCBlbGVtZW50IHdpbGwgcmVzdWx0IGluIGEgY2FsbCB0byBjcmVhdGUoKSB3aXRoIHRoZSBmb2xs
b3dpbmcgYXJndW1lbnRzOgorICAgIFx0YWJsZQorICAgIFxoZWFkZXIgXGxpIFBhcmFtZXRlcgor
ICAgICAgICAgICAgXGxpIFZhbHVlCisgICAgXHJvdyAgICBcbGkgbWltZVR5cGUKKyAgICAgICAg
ICAgIFxsaSAiYXBwbGljYXRpb24veC1wZGYiCisgICAgXHJvdyAgICBcbGkgdXJsCisgICAgICAg
ICAgICBcbGkgImh0dHA6Ly9xdC5ub2tpYS5jb20vZG9jdW1lbnQucGRmIgorICAgIFxyb3cgICAg
XGxpIGFyZ3VtZW50TmFtZXMKKyAgICAgICAgICAgIFxsaSAic2hvd1RhYmxlT2ZDb250ZW50cyIg
ImhpZGVUaHVtYm5haWxzIgorICAgIFxyb3cgICAgXGxpIGFyZ3VtZW50VmF1ZXMKKyAgICAgICAg
ICAgIFxsaSAidHJ1ZSIgImZhbHNlIgorICAgIFxlbmR0YWJsZQorCisgICAgXG5vdGUgT3duZXJz
aGlwIG9mIHRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0aGUgY2Fs
bGVyLgorKi8KKworLyohCisgICAgXGVudW0gUVdlYlBsdWdpbkZhY3Rvcnk6OkV4dGVuc2lvbgor
ICAgIFxpbnRlcm5hbAorCisgICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgZXh0
ZW5zaW9ucyB0aGF0IHRoZSBwbHVnaW4gZmFjdG9yeSBjYW4gc3VwcG9ydC4gQmVmb3JlIHVzaW5n
IHRoZXNlIGV4dGVuc2lvbnMsIHlvdQorICAgIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGUgZXh0ZW5z
aW9uIGlzIHN1cHBvcnRlZCBieSBjYWxsaW5nIHN1cHBvcnRzRXh0ZW5zaW9uKCkuCisKKyAgICBD
dXJyZW50bHkgdGhlcmUgYXJlIG5vIGV4dGVuc2lvbnMuCisqLworCisvKiEKKyAgICBcY2xhc3Mg
UVdlYlBsdWdpbkZhY3Rvcnk6OkV4dGVuc2lvbk9wdGlvbgorICAgIFxpbnRlcm5hbAorICAgIFxz
aW5jZSA0LjQKKyAgICBcYnJpZWYgVGhlIEV4dGVuc2lvbk9wdGlvbiBjbGFzcyBwcm92aWRlcyBh
biBleHRlbmRlZCBpbnB1dCBhcmd1bWVudCB0byBRV2ViUGx1Z2luRmFjdG9yeSdzIGV4dGVuc2lv
biBzdXBwb3J0LgorCisgICAgXGlubW9kdWxlIFF0V2ViS2l0CisKKyAgICBcc2EgUVdlYlBsdWdp
bkZhY3Rvcnk6OmV4dGVuc2lvbigpCisqLworCisvKiEKKyAgICBcY2xhc3MgUVdlYlBsdWdpbkZh
Y3Rvcnk6OkV4dGVuc2lvblJldHVybgorICAgIFxpbnRlcm5hbAorICAgIFxzaW5jZSA0LjQKKyAg
ICBcYnJpZWYgVGhlIEV4dGVuc2lvbk9wdGlvbiBjbGFzcyBwcm92aWRlcyBhbiBleHRlbmRlZCBv
dXRwdXQgYXJndW1lbnQgdG8gUVdlYlBsdWdpbkZhY3RvcnkncyBleHRlbnNpb24gc3VwcG9ydC4K
KworICAgIFxpbm1vZHVsZSBRdFdlYktpdAorCisgICAgXHNhIFFXZWJQbHVnaW5GYWN0b3J5Ojpl
eHRlbnNpb24oKQorKi8KKworLyohCisgICAgVGhpcyB2aXJ0dWFsIGZ1bmN0aW9uIGNhbiBiZSBy
ZWltcGxlbWVudGVkIGluIGEgUVdlYlBsdWdpbkZhY3Rvcnkgc3ViY2xhc3MgdG8gcHJvdmlkZSBz
dXBwb3J0IGZvciBleHRlbnNpb25zLiBUaGUgXGEgb3B0aW9uCisgICAgYXJndW1lbnQgaXMgcHJv
dmlkZWQgYXMgaW5wdXQgdG8gdGhlIGV4dGVuc2lvbjsgdGhlIG91dHB1dCByZXN1bHRzIGNhbiBi
ZSBzdG9yZWQgaW4gXGEgb3V0cHV0LgorCisgICAgXGludGVybmFsCisKKyAgICBUaGUgYmVoYXZp
b3VyIG9mIHRoaXMgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSBcYSBleHRlbnNpb24uCisKKyAg
ICBZb3UgY2FuIGNhbGwgc3VwcG9ydHNFeHRlbnNpb24oKSB0byBjaGVjayBpZiBhbiBleHRlbnNp
b24gaXMgc3VwcG9ydGVkIGJ5IHRoZSBmYWN0b3J5LgorCisgICAgQnkgZGVmYXVsdCwgbm8gZXh0
ZW5zaW9ucyBhcmUgc3VwcG9ydGVkLCBhbmQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLgor
CisgICAgXHNhIHN1cHBvcnRzRXh0ZW5zaW9uKCksIEV4dGVuc2lvbgorKi8KK2Jvb2wgUVdlYlBs
dWdpbkZhY3Rvcnk6OmV4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uLCBjb25zdCBFeHRlbnNp
b25PcHRpb24gKm9wdGlvbiwgRXh0ZW5zaW9uUmV0dXJuICpvdXRwdXQpCit7CisgICAgUV9VTlVT
RUQoZXh0ZW5zaW9uKQorICAgIFFfVU5VU0VEKG9wdGlvbikKKyAgICBRX1VOVVNFRChvdXRwdXQp
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiEKKyAgICBUaGlzIHZpcnR1YWwgZnVuY3Rpb24g
cmV0dXJucyB0cnVlIGlmIHRoZSBwbHVnaW4gZmFjdG9yeSBzdXBwb3J0cyBcYSBleHRlbnNpb247
IG90aGVyd2lzZSBmYWxzZSBpcyByZXR1cm5lZC4KKworICAgIFxpbnRlcm5hbAorCisgICAgXHNh
IGV4dGVuc2lvbigpCisqLworYm9vbCBRV2ViUGx1Z2luRmFjdG9yeTo6c3VwcG9ydHNFeHRlbnNp
b24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QKK3sKKyAgICBRX1VOVVNFRChleHRlbnNpb24p
CisgICAgcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnBsdWdpbmZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5mYWN0
b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQwODRmZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmgKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV0VCUExVR0lORkFD
VE9SWV9ICisjZGVmaW5lIFFXRUJQTFVHSU5GQUNUT1JZX0gKKworI2luY2x1ZGUgInF3ZWJraXRn
bG9iYWwuaCIKKworI2luY2x1ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+CisjaW5jbHVkZSA8UXRDb3Jl
L3FzdHJpbmdsaXN0Lmg+CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK2NsYXNz
IFFTdHJpbmc7CitRVF9FTkRfTkFNRVNQQUNFCitjbGFzcyBRV2ViUGx1Z2luRmFjdG9yeVByaXZh
dGU7CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJQbHVnaW5GYWN0b3J5IDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RydWN0IFFXRUJLSVRfRVhQT1JU
IE1pbWVUeXBlIHsKKyAgICAgICAgUVN0cmluZyBuYW1lOworICAgICAgICBRU3RyaW5nIGRlc2Ny
aXB0aW9uOworICAgICAgICBRU3RyaW5nTGlzdCBmaWxlRXh0ZW5zaW9uczsKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1pbWVUeXBlJiBvdGhlcikgY29uc3Q7CisgICAgICAgIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTWltZVR5cGUmIG90aGVyKSBjb25zdCB7IHJldHVybiAh
b3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICB9OworCisgICAgc3RydWN0IFBsdWdpbiB7CisgICAg
ICAgIFFTdHJpbmcgbmFtZTsKKyAgICAgICAgUVN0cmluZyBkZXNjcmlwdGlvbjsKKyAgICAgICAg
UUxpc3Q8TWltZVR5cGU+IG1pbWVUeXBlczsKKyAgICB9OworCisgICAgZXhwbGljaXQgUVdlYlBs
dWdpbkZhY3RvcnkoUU9iamVjdCogcGFyZW50ID0gMCk7CisgICAgdmlydHVhbCB+UVdlYlBsdWdp
bkZhY3RvcnkoKTsKKworICAgIHZpcnR1YWwgUUxpc3Q8UGx1Z2luPiBwbHVnaW5zKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpOworCisgICAgdmlydHVhbCBR
T2JqZWN0ICpjcmVhdGUoY29uc3QgUVN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFFVcmwmLCBjb25z
dCBRU3RyaW5nTGlzdCYgYXJndW1lbnROYW1lcywgY29uc3QgUVN0cmluZ0xpc3QmIGFyZ3VtZW50
VmFsdWVzKSBjb25zdCA9IDA7CisKKyAgICBlbnVtIEV4dGVuc2lvbiB7CisgICAgfTsKKyAgICBj
bGFzcyBFeHRlbnNpb25PcHRpb24KKyAgICB7fTsKKyAgICBjbGFzcyBFeHRlbnNpb25SZXR1cm4K
KyAgICB7fTsKKyAgICB2aXJ0dWFsIGJvb2wgZXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24s
IGNvbnN0IEV4dGVuc2lvbk9wdGlvbiogb3B0aW9uID0gMCwgRXh0ZW5zaW9uUmV0dXJuKiBvdXRw
dXQgPSAwKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4
dGVuc2lvbikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUVdlYlBsdWdpbkZhY3RvcnlQcml2YXRl
KiBkOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
c2NyaXB0d29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlwdHdvcmxkLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWE1ZmI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlwdHdvcmxkLmNwcApAQCAtMCww
ICsxLDYwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVy
dEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3
ZWJzY3JpcHR3b3JsZC5oIgorI2luY2x1ZGUgInF3ZWJzY3JpcHR3b3JsZF9wLmgiCisKKyNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8UVN0
cmluZ0xpc3Q+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvKiEKKyAgICBDb25zdHJ1
Y3RzIGEgc2VjdXJpdHkgb3JpZ2luIGZyb20gXGEgb3RoZXIuCisqLworUVdlYlNjcmlwdFdvcmxk
OjpRV2ViU2NyaXB0V29ybGQoKQoreworICAgIGQgPSBuZXcgUVdlYlNjcmlwdFdvcmxkUHJpdmF0
ZShTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpKTsKK30KKworUVdlYlNjcmlwdFdvcmxk
OjpRV2ViU2NyaXB0V29ybGQoY29uc3QgUVdlYlNjcmlwdFdvcmxkJiBvdGhlcikKKyAgICA6IGQo
b3RoZXIuZCkKK3sKK30KKworUVdlYlNjcmlwdFdvcmxkICZRV2ViU2NyaXB0V29ybGQ6Om9wZXJh
dG9yPShjb25zdCBRV2ViU2NyaXB0V29ybGQmIG90aGVyKQoreworICAgIGQgPSBvdGhlci5kOwor
ICAgIHJldHVybiAqdGhpczsKK30KKworRE9NV3JhcHBlcldvcmxkKiBRV2ViU2NyaXB0V29ybGQ6
OndvcmxkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZCA/IGQtPndvcmxkLmdldCgpIDogMDsKK30K
KworLyohCisgICAgRGVzdHJveXMgdGhlIHNlY3VyaXR5IG9yaWdpbi4KKyovCitRV2ViU2NyaXB0
V29ybGQ6On5RV2ViU2NyaXB0V29ybGQoKQoreworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2Vic2NyaXB0d29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJz
Y3JpcHR3b3JsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMDgzYzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2NyaXB0d29ybGQu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9n
YW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV2ViU2NyaXB0V29ybGRf
aF8KKyNkZWZpbmUgUVdlYlNjcmlwdFdvcmxkX2hfCisKKyNpZiAwCisjcHJhZ21hIHF0X25vX21h
c3Rlcl9pbmNsdWRlCisjZW5kaWYKKworI2luY2x1ZGUgPFF0Q29yZS9xdXJsLmg+CisjaW5jbHVk
ZSA8UXRDb3JlL3FzaGFyZWRkYXRhLmg+CisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7Cit9CisKK2Ns
YXNzIFFXZWJTY3JpcHRXb3JsZFByaXZhdGU7CitjbGFzcyBRV2ViRnJhbWU7CisKK2NsYXNzIFFX
RUJLSVRfRVhQT1JUIFFXZWJTY3JpcHRXb3JsZCB7CitwdWJsaWM6CisgICAgUVdlYlNjcmlwdFdv
cmxkKCk7CisgICAgUVdlYlNjcmlwdFdvcmxkKGNvbnN0IFFXZWJTY3JpcHRXb3JsZCYpOworICAg
IFFXZWJTY3JpcHRXb3JsZCAmb3BlcmF0b3I9KGNvbnN0IFFXZWJTY3JpcHRXb3JsZCYpOworICAg
IH5RV2ViU2NyaXB0V29ybGQoKTsKKworICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCogd29y
bGQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVy
PFFXZWJTY3JpcHRXb3JsZFByaXZhdGU+IGQ7CisKKyAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1l
OworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2Ny
aXB0d29ybGRfcC5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlwdHdvcmxkX3AuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzE4ZTIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlwdHdvcmxkX3AuaApAQCAtMCwwICsx
LDQ0IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEBy
b2JlcnRob2dhbi5uZXQ+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBfUVdFQlNDUklQVFdPUkxEX1BfSF8KKyNkZWZp
bmUgX1FXRUJTQ1JJUFRXT1JMRF9QX0hfCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7Cit9CisKK2NsYXNz
IFFXZWJTY3JpcHRXb3JsZFByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgeworcHVibGljOgor
ICAgIFFXZWJTY3JpcHRXb3JsZFByaXZhdGUoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVdy
YXBwZXJXb3JsZD4gbykKKyAgICB7CisgICAgICAgIFFfQVNTRVJUKG8pOworICAgICAgICB3b3Js
ZCA9IG87CisgICAgfQorCisgICAgflFXZWJTY3JpcHRXb3JsZFByaXZhdGUoKQorICAgIHsKKyAg
ICB9CisKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ+IHdvcmxkOwor
fTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJp
dHlvcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTkzNTBmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcApAQCAt
MCwwICsxLDMwMCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbi5oIgorCisjaW5jbHVkZSAiQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJxd2ViZGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJxd2ViZGF0YWJhc2VfcC5oIgorI2luY2x1ZGUgInF3ZWJzZWN1cml0
eW9yaWdpbl9wLmgiCisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCisvKiEKKyAgICBcY2xhc3MgUVdlYlNlY3VyaXR5T3JpZ2luCisgICAgXHNpbmNl
IDQuNQorICAgIFxicmllZiBUaGUgUVdlYlNlY3VyaXR5T3JpZ2luIGNsYXNzIGRlZmluZXMgYSBz
ZWN1cml0eSBib3VuZGFyeSBmb3Igd2ViIHNpdGVzLgorCisgICAgXGlubW9kdWxlIFF0V2ViS2l0
CisKKyAgICBRV2ViU2VjdXJpdHlPcmlnaW4gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBzZWN1cml0
eSBkb21haW5zIGRlZmluZWQgYnkgd2ViIHNpdGVzLgorICAgIEFuIG9yaWdpbiBjb25zaXN0cyBv
ZiBhIGhvc3QgbmFtZSwgYSBzY2hlbWUsIGFuZCBhIHBvcnQgbnVtYmVyLiBXZWIgc2l0ZXMKKyAg
ICB3aXRoIHRoZSBzYW1lIHNlY3VyaXR5IG9yaWdpbiBjYW4gYWNjZXNzIGVhY2ggb3RoZXIncyBy
ZXNvdXJjZXMgZm9yIGNsaWVudC1zaWRlCisgICAgc2NyaXB0aW5nIG9yIGRhdGFiYXNlcy4KKwor
ICAgIEZvciBleGFtcGxlIHRoZSBzaXRlIFxje2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vbXkvcGFn
ZS5odG1sfSBpcyBhbGxvd2VkIHRvIHNoYXJlIHRoZSBzYW1lCisgICAgZGF0YWJhc2UgYXMgXGN7
aHR0cDovL3d3dy5leGFtcGxlLmNvbS9teS9vdmVydmlldy5odG1sfSwgb3IgYWNjZXNzIGVhY2gg
b3RoZXIncworICAgIGRvY3VtZW50cyB3aGVuIHVzZWQgaW4gSFRNTCBmcmFtZSBzZXRzIGFuZCBK
YXZhU2NyaXB0LiBBdCB0aGUgc2FtZSB0aW1lIGl0IHByZXZlbnRzCisgICAgXGN7aHR0cDovL3d3
dy5tYWxpY2lvdXMuY29tL2V2aWwuaHRtbH0gZnJvbSBhY2Nlc3NpbmcgXGN7aHR0cDovL3d3dy5l
eGFtcGxlLmNvbS99J3MgcmVzb3VyY2VzLAorICAgIGJlY2F1c2UgdGhleSBhcmUgb2YgYSBkaWZm
ZXJlbnQgc2VjdXJpdHkgb3JpZ2luLgorCisgICAgQnkgZGVmYXVsdCBsb2NhbCBzY2hlbWVzIGxp
a2UgXGN7ZmlsZTovL30gYW5kIFxje3FyYzovL30gYXJlIGNvbmNpZGVyZWQgdG8gYmUgaW4gdGhl
IHNhbWUKKyAgICBzZWN1cml0eSBvcmlnaW4sIGFuZCBjYW4gYWNjZXNzIGVhY2ggb3RoZXIncyBy
ZXNvdXJjZXMuIFlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgbG9jYWwgc2NoZW1lcworICAgIGJ5IHVz
aW5nIFFXZWJTZWN1cml0eU9yaWdpbjo6YWRkTG9jYWxTY2hlbWUoKSwgb3Igb3ZlcnJpZGUgdGhl
IGRlZmF1bHQgc2FtZS1vcmlnaW4gYmVoYXZpb3IKKyAgICBieSBzZXR0aW5nIFFXZWJTZXR0aW5n
czo6TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMgdG8gXGN7ZmFsc2V9LgorCisgICAgXG5v
dGUgTG9jYWwgcmVzb3VyY2VzIGFyZSBieSBkZWZhdWx0IHJlc3RyaWN0ZWQgZnJvbSBhY2Nlc3Np
bmcgcmVtb3RlIGNvbnRlbnQsIHdoaWNoCisgICAgbWVhbnMgeW91ciBcY3tmaWxlOi8vfSB3aWxs
IG5vdCBiZSBhYmxlIHRvIGFjY2VzcyBcY3todHRwOi8vZG9tYWluLmNvbS9mb28uaHRtbH0uIFlv
dQorICAgIGNhbiByZWxheCB0aGlzIHJlc3RyaWN0aW9uIGJ5IHNldHRpbmcgUVdlYlNldHRpbmdz
OjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzIHRvCisgICAgXGN7dHJ1ZX0uCisKKyAg
ICBDYWxsIFFXZWJGcmFtZTo6c2VjdXJpdHlPcmlnaW4oKSB0byBnZXQgdGhlIFFXZWJTZWN1cml0
eU9yaWdpbiBmb3IgYSBmcmFtZSBpbiBhCisgICAgd2ViIHBhZ2UsIGFuZCB1c2UgaG9zdCgpLCBz
Y2hlbWUoKSBhbmQgcG9ydCgpIHRvIGlkZW50aWZ5IHRoZSBzZWN1cml0eSBvcmlnaW4uCisKKyAg
ICBVc2UgZGF0YWJhc2VzKCkgdG8gYWNjZXNzIHRoZSBkYXRhYmFzZXMgZGVmaW5lZCB3aXRoaW4g
YSBzZWN1cml0eSBvcmlnaW4uIFRoZQorICAgIGRpc2sgdXNhZ2Ugb2YgdGhlIG9yaWdpbidzIGRh
dGFiYXNlcyBjYW4gYmUgbGltaXRlZCB3aXRoIHNldERhdGFiYXNlUXVvdGEoKS4KKyAgICBkYXRh
YmFzZVF1b3RhKCkgYW5kIGRhdGFiYXNlVXNhZ2UoKSByZXBvcnQgdGhlIGN1cnJlbnQgbGltaXQg
YXMgd2VsbCBhcyB0aGUKKyAgICBjdXJyZW50IHVzYWdlLgorCisgICAgRm9yIG1vcmUgaW5mb3Jt
YXRpb24gcmVmZXIgdG8gdGhlCisgICAgXGx7aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9T
YW1lX29yaWdpbl9wb2xpY3l9eyJTYW1lIG9yaWdpbiBwb2xpY3kiIFdpa2lwZWRpYSBBcnRpY2xl
fS4KKworICAgIFxzYSBRV2ViRnJhbWU6OnNlY3VyaXR5T3JpZ2luKCkKKyovCisKKy8qIQorICAg
IENvbnN0cnVjdHMgYSBzZWN1cml0eSBvcmlnaW4gZnJvbSBcYSBvdGhlci4KKyovCitRV2ViU2Vj
dXJpdHlPcmlnaW46OlFXZWJTZWN1cml0eU9yaWdpbihjb25zdCBRV2ViU2VjdXJpdHlPcmlnaW4m
IG90aGVyKSA6IGQob3RoZXIuZCkKK3sKK30KKworLyohCisgICAgQXNzaWducyB0aGUgXGEgb3Ro
ZXIgc2VjdXJpdHkgb3JpZ2luIHRvIHRoaXMuCisqLworUVdlYlNlY3VyaXR5T3JpZ2luJiBRV2Vi
U2VjdXJpdHlPcmlnaW46Om9wZXJhdG9yPShjb25zdCBRV2ViU2VjdXJpdHlPcmlnaW4mIG90aGVy
KQoreworICAgIGQgPSBvdGhlci5kOworICAgIHJldHVybiAqdGhpczsKK30KKworLyohCisgICAg
UmV0dXJucyB0aGUgc2NoZW1lIGRlZmluaW5nIHRoZSBzZWN1cml0eSBvcmlnaW4uCisqLworUVN0
cmluZyBRV2ViU2VjdXJpdHlPcmlnaW46OnNjaGVtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQt
Pm9yaWdpbi0+cHJvdG9jb2woKTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgaG9zdCBuYW1l
IGRlZmluaW5nIHRoZSBzZWN1cml0eSBvcmlnaW4uCisqLworUVN0cmluZyBRV2ViU2VjdXJpdHlP
cmlnaW46Omhvc3QoKSBjb25zdAoreworICAgIHJldHVybiBkLT5vcmlnaW4tPmhvc3QoKTsKK30K
KworLyohCisgICAgUmV0dXJucyB0aGUgcG9ydCBudW1iZXIgZGVmaW5pbmcgdGhlIHNlY3VyaXR5
IG9yaWdpbi4KKyovCitpbnQgUVdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZC0+b3JpZ2luLT5wb3J0KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIG51
bWJlciBvZiBieXRlcyBhbGwgZGF0YWJhc2VzIGluIHRoZSBzZWN1cml0eSBvcmlnaW4KKyAgICB1
c2Ugb24gdGhlIGRpc2suCisqLworcWludDY0IFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VV
c2FnZSgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKKyAgICByZXR1cm4gRGF0
YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkudXNhZ2VGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworLyohCisgICAgUmV0dXJucyB0aGUg
cXVvdGEgZm9yIHRoZSBkYXRhYmFzZXMgaW4gdGhlIHNlY3VyaXR5IG9yaWdpbi4KKyovCitxaW50
NjQgUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVF1b3RhKCkgY29uc3QKK3sKKyNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQorICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5x
dW90YUZvck9yaWdpbihkLT5vcmlnaW4uZ2V0KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCisvKiEKKyAgICBTZXRzIHRoZSBxdW90YSBmb3IgdGhlIGRhdGFiYXNlcyBpbiB0
aGUgc2VjdXJpdHkgb3JpZ2luIHRvIFxhIHF1b3RhIGJ5dGVzLgorCisgICAgSWYgdGhlIHF1b3Rh
IGlzIHNldCB0byBhIHZhbHVlIGxlc3MgdGhhbiB0aGUgY3VycmVudCB1c2FnZSwgdGhlIHF1b3Rh
IHdpbGwgcmVtYWluCisgICAgYW5kIG5vIGRhdGEgd2lsbCBiZSBwdXJnZWQgdG8gbWVldCB0aGUg
bmV3IHF1b3RhLiBIb3dldmVyLCBubyBuZXcgZGF0YSBjYW4gYmUgYWRkZWQKKyAgICB0byBkYXRh
YmFzZXMgaW4gdGhpcyBvcmlnaW4uCisqLwordm9pZCBRV2ViU2VjdXJpdHlPcmlnaW46OnNldERh
dGFiYXNlUXVvdGEocWludDY0IHF1b3RhKQoreworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisg
ICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuc2V0UXVvdGEoZC0+b3JpZ2luLmdldCgpLCBx
dW90YSk7CisjZW5kaWYKK30KKwordm9pZCBRV2ViU2VjdXJpdHlPcmlnaW46OnNldEFwcGxpY2F0
aW9uQ2FjaGVRdW90YShxaW50NjQgcXVvdGEpCit7CisgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdl
KCkuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oZC0+b3JpZ2luLmdldCgpLCBxdW90YSk7Cit9
CisvKiEKKyAgICBEZXN0cm95cyB0aGUgc2VjdXJpdHkgb3JpZ2luLgorKi8KK1FXZWJTZWN1cml0
eU9yaWdpbjo6flFXZWJTZWN1cml0eU9yaWdpbigpCit7Cit9CisKKy8qIQorICAgIFxpbnRlcm5h
bAorKi8KK1FXZWJTZWN1cml0eU9yaWdpbjo6UVdlYlNlY3VyaXR5T3JpZ2luKFFXZWJTZWN1cml0
eU9yaWdpblByaXZhdGUqIHByaXYpCit7CisgICAgZCA9IHByaXY7Cit9CisKKy8qIQorICAgIFJl
dHVybnMgYSBsaXN0IG9mIGFsbCBzZWN1cml0eSBvcmlnaW5zIHdpdGggYSBkYXRhYmFzZSBxdW90
YSBkZWZpbmVkLgorKi8KK1FMaXN0PFFXZWJTZWN1cml0eU9yaWdpbj4gUVdlYlNlY3VyaXR5T3Jp
Z2luOjphbGxPcmlnaW5zKCkKK3sKKyAgICBRTGlzdDxRV2ViU2VjdXJpdHlPcmlnaW4+IHdlYk9y
aWdpbnM7CisKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIFZlY3RvcjxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+ID4gY29yZU9yaWdpbnM7CisgICAgRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2Vy
KCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y29yZU9yaWdpbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUVdlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZSogcHJpdiA9IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKGNvcmVPcmlnaW5zW2ld
LmdldCgpKTsKKyAgICAgICAgd2ViT3JpZ2lucy5hcHBlbmQocHJpdik7CisgICAgfQorI2VuZGlm
CisKKyAgICByZXR1cm4gd2ViT3JpZ2luczsKK30KKworLyohCisgICAgUmV0dXJucyBhIGxpc3Qg
b2YgYWxsIGRhdGFiYXNlcyBkZWZpbmVkIGluIHRoZSBzZWN1cml0eSBvcmlnaW4uCisqLworUUxp
c3Q8UVdlYkRhdGFiYXNlPiBRV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlcygpIGNvbnN0Cit7
CisgICAgUUxpc3Q8UVdlYkRhdGFiYXNlPiBkYXRhYmFzZXM7CisKKyNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQorICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVWZWN0b3I7CisKKyAgICBpZiAoIURhdGFi
YXNlTWFuYWdlcjo6bWFuYWdlcigpLmRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oZC0+b3JpZ2luLmdl
dCgpLCBuYW1lVmVjdG9yKSkKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlczsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbmFtZVZlY3Rvci5zaXplKCk7ICsraSkgeworICAgICAgICBRV2Vi
RGF0YWJhc2VQcml2YXRlKiBwcml2ID0gbmV3IFFXZWJEYXRhYmFzZVByaXZhdGUoKTsKKyAgICAg
ICAgcHJpdi0+bmFtZSA9IG5hbWVWZWN0b3JbaV07CisgICAgICAgIHByaXYtPm9yaWdpbiA9IHRo
aXMtPmQtPm9yaWdpbjsKKyAgICAgICAgUVdlYkRhdGFiYXNlIHdlYkRhdGFiYXNlKHByaXYpOwor
ICAgICAgICBkYXRhYmFzZXMuYXBwZW5kKHdlYkRhdGFiYXNlKTsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHJldHVybiBkYXRhYmFzZXM7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYKKworICAgIEFk
ZHMgdGhlIGdpdmVuIFxhIHNjaGVtZSB0byB0aGUgbGlzdCBvZiBzY2hlbWVzIHRoYXQgYXJlIGNv
bnNpZGVyZWQgZXF1aXZhbGVudAorICAgIHRvIHRoZSBcYyBmaWxlOiBzY2hlbWUuCisKKyAgICBD
cm9zcyBkb21haW4gcmVzdHJpY3Rpb25zIGRlcGVuZCBvbiB0aGUgdHdvIHdlYiBzZXR0aW5ncyBR
V2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzCisgICAgYW5kIFFXZWJT
ZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMuIEJ5IGRlZmF1bHQgYWxsIGxv
Y2FsIHNjaGVtZXMgYXJlIGNvbmNpZGVyZWQgdG8gYmUKKyAgICBpbiB0aGUgc2FtZSBzZWN1cml0
eSBvcmlnaW4sIGFuZCBsb2NhbCBzY2hlbWVzIGNhbiBub3QgYWNjZXNzIHJlbW90ZSBjb250ZW50
LgorKi8KK3ZvaWQgUVdlYlNlY3VyaXR5T3JpZ2luOjphZGRMb2NhbFNjaGVtZShjb25zdCBRU3Ry
aW5nJiBzY2hlbWUpCit7CisgICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNM
b2NhbChzY2hlbWUpOworfQorCisvKiEKKyAgICBcc2luY2UgNC42CisKKyAgICBSZW1vdmVzIHRo
ZSBnaXZlbiBcYSBzY2hlbWUgZnJvbSB0aGUgbGlzdCBvZiBsb2NhbCBzY2hlbWVzLgorCisgICAg
XG5vdGUgWW91IGNhbiBub3QgcmVtb3ZlIHRoZSBcY3tmaWxlOi8vfSBzY2hlbWUgZnJvbSB0aGUg
bGlzdAorICAgIG9mIGxvY2FsIHNjaGVtZXMuCisKKyAgICBcc2EgYWRkTG9jYWxTY2hlbWUoKQor
Ki8KK3ZvaWQgUVdlYlNlY3VyaXR5T3JpZ2luOjpyZW1vdmVMb2NhbFNjaGVtZShjb25zdCBRU3Ry
aW5nJiBzY2hlbWUpCit7CisgICAgU2NoZW1lUmVnaXN0cnk6OnJlbW92ZVVSTFNjaGVtZVJlZ2lz
dGVyZWRBc0xvY2FsKHNjaGVtZSk7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYKKyAgICBSZXR1
cm5zIGEgbGlzdCBvZiBhbGwgdGhlIHNjaGVtZXMgY29uY2lkZXJlZCB0byBiZSBsb2NhbC4KKwor
ICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBcY3tmaWxlOi8vfSBhbmQgXGN7cXJjOi8vfS4KKworICAg
IFxzYSBhZGRMb2NhbFNjaGVtZSgpLCByZW1vdmVMb2NhbFNjaGVtZSgpCisqLworUVN0cmluZ0xp
c3QgUVdlYlNlY3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMoKQoreworICAgIFFTdHJpbmdMaXN0
IGxpc3Q7CisgICAgY29uc3QgVVJMU2NoZW1lc01hcCYgbWFwID0gU2NoZW1lUmVnaXN0cnk6Omxv
Y2FsU2NoZW1lcygpOworICAgIFVSTFNjaGVtZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1h
cC5lbmQoKTsKKyAgICBmb3IgKFVSTFNjaGVtZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtYXAu
YmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgeworICAgICAgICBjb25zdCBRU3RyaW5nIHNjaGVtZSA9
ICppOworICAgICAgICBsaXN0LmFwcGVuZChzY2hlbWUpOworICAgIH0KKyAgICByZXR1cm4gbGlz
dDsKK30KKworCisvKiEKKyAgICBBbGxvd3MgY29udHJ1Y3Rpb24gb2YgUVdlYlNlY3VyaXR5T3Jp
Z2luKCkgYXMgcGVyIHRoZSBzcGVjaWZpZWQgXGEgdXJsLgorKi8KK1FXZWJTZWN1cml0eU9yaWdp
bjo6UVdlYlNlY3VyaXR5T3JpZ2luKGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBkID0gbmV3IFFX
ZWJTZWN1cml0eU9yaWdpblByaXZhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwodXJsKSkp
OworfQorCisvKiEKKyAgICBBbGxvd3MgdGhlIG9yaWdpbiB0byBhY2Nlc3MgdGhlIHNwZWNpZmll
ZCBcYSBob3N0IHVzaW5nIHRoZSBzcGVjaWZpZWQgXGEgc2NoZW1lLgorICAgIFNwZWNpZnlpbmcg
QWxsb3dTdWJkb21haW5zIGluIFxhIHN1YmRvbWFpblNldHRpbmcgd2lsbCBhbGxvdyB0aGUgc291
cmNlIG9yaWdpbiB0byBhY2Nlc3MKKyAgICB0aGUgXGEgaG9zdCdzIHN1YmRvbWFpbnMgYXMgd2Vs
bCwgd2hlcmVhcyBwYXNzaW5nIERpc2FsbG93U3ViZG9tYWlucyB3b3VsZCBwcmV2ZW50IHRoaXMu
CisgICAgCisgICAgU3VjaCBjcm9zcyBvcmlnaW4gcmVxdWVzdHMgYXJlIG90aGVyd2lzZSByZXN0
cmljdGVkIGFzIHBlciB0aGUgc2FtZS1vcmlnaW4tcG9saWN5LgorKi8KK3ZvaWQgUVdlYlNlY3Vy
aXR5T3JpZ2luOjphZGRBY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBRU3RyaW5nJiBzY2hlbWUs
IGNvbnN0IFFTdHJpbmcmIGhvc3QsIFN1YmRvbWFpblNldHRpbmcgc3ViZG9tYWluU2V0dGluZykK
K3sKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKihk
LT5vcmlnaW4pLCBzY2hlbWUsIGhvc3QsIHN1YmRvbWFpblNldHRpbmcgPT0gQWxsb3dTdWJkb21h
aW5zKTsKK30KKworLyohCisgICAgUmVtb3ZlcyB0aGUgb3JpZ2luJ3Mgd2hpdGVsaXN0ZWQgYWNj
ZXNzIHRvIHRoZSBzcGVjaWZpZWQgXGEgaG9zdCB1c2luZyB0aGUgc3BlY2lmaWVkIFxhIHNjaGVt
ZQorICAgIGFzIHBlciB0aGUgc3BlY2lmaWVkIFxhIHN1YmRvbWFpblNldHRpbmcuCisqLwordm9p
ZCBRV2ViU2VjdXJpdHlPcmlnaW46OnJlbW92ZUFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFT
dHJpbmcmIHNjaGVtZSwgY29uc3QgUVN0cmluZyYgaG9zdCwgU3ViZG9tYWluU2V0dGluZyBzdWJk
b21haW5TZXR0aW5nKQoreworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgqKGQtPm9yaWdpbiksIHNjaGVtZSwgaG9zdCwgc3ViZG9tYWluU2V0dGlu
ZyA9PSBBbGxvd1N1YmRvbWFpbnMpOworfQorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
Y3VyaXR5b3JpZ2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0MmU2
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9y
aWdpbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgX1dF
QlNFQ1VSSVRZT1JJR0lOX0hfCisjZGVmaW5lIF9XRUJTRUNVUklUWU9SSUdJTl9IXworCisjaW5j
bHVkZSA8UXRDb3JlL3F1cmwuaD4KKyNpbmNsdWRlIDxRdENvcmUvcXNoYXJlZGRhdGEuaD4KKwor
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOworICAgIGNsYXNzIENocm9tZUNsaWVudFF0OworfQorCitjbGFz
cyBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlOworY2xhc3MgUVdlYkRhdGFiYXNlOworY2xhc3Mg
UVdlYkZyYW1lOworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViU2VjdXJpdHlPcmlnaW4gewor
cHVibGljOgorICAgIGVudW0gU3ViZG9tYWluU2V0dGluZyB7CisgICAgICAgIEFsbG93U3ViZG9t
YWlucywKKyAgICAgICAgRGlzYWxsb3dTdWJkb21haW5zCisgICAgfTsKKyAgICAKKyAgICBzdGF0
aWMgUUxpc3Q8UVdlYlNlY3VyaXR5T3JpZ2luPiBhbGxPcmlnaW5zKCk7CisgICAgc3RhdGljIHZv
aWQgYWRkTG9jYWxTY2hlbWUoY29uc3QgUVN0cmluZyYgc2NoZW1lKTsKKyAgICBzdGF0aWMgdm9p
ZCByZW1vdmVMb2NhbFNjaGVtZShjb25zdCBRU3RyaW5nJiBzY2hlbWUpOworICAgIHN0YXRpYyBR
U3RyaW5nTGlzdCBsb2NhbFNjaGVtZXMoKTsKKworICAgIHZvaWQgYWRkQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgUVN0cmluZyYgc2NoZW1lLCBjb25zdCBRU3RyaW5nJiBob3N0LCBTdWJkb21h
aW5TZXR0aW5nIHN1YmRvbWFpblNldHRpbmcpOworICAgIHZvaWQgcmVtb3ZlQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgUVN0cmluZyYgc2NoZW1lLCBjb25zdCBRU3RyaW5nJiBob3N0LCBTdWJk
b21haW5TZXR0aW5nIHN1YmRvbWFpblNldHRpbmcpOworCisgICAgZXhwbGljaXQgUVdlYlNlY3Vy
aXR5T3JpZ2luKGNvbnN0IFFVcmwmIHVybCk7CisgICAgflFXZWJTZWN1cml0eU9yaWdpbigpOwor
CisgICAgUVN0cmluZyBzY2hlbWUoKSBjb25zdDsKKyAgICBRU3RyaW5nIGhvc3QoKSBjb25zdDsK
KyAgICBpbnQgcG9ydCgpIGNvbnN0OworCisgICAgcWludDY0IGRhdGFiYXNlVXNhZ2UoKSBjb25z
dDsKKyAgICBxaW50NjQgZGF0YWJhc2VRdW90YSgpIGNvbnN0OworCisgICAgdm9pZCBzZXREYXRh
YmFzZVF1b3RhKHFpbnQ2NCBxdW90YSk7CisgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlUXVv
dGEocWludDY0IHF1b3RhKTsKKworICAgIFFMaXN0PFFXZWJEYXRhYmFzZT4gZGF0YWJhc2VzKCkg
Y29uc3Q7CisKKyAgICBRV2ViU2VjdXJpdHlPcmlnaW4oY29uc3QgUVdlYlNlY3VyaXR5T3JpZ2lu
JiBvdGhlcik7CisgICAgUVdlYlNlY3VyaXR5T3JpZ2luICZvcGVyYXRvcj0oY29uc3QgUVdlYlNl
Y3VyaXR5T3JpZ2luJiBvdGhlcik7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBRV2ViRGF0
YWJhc2U7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZUFkYXB0ZXI7CisgICAgZnJpZW5kIGNs
YXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OworICAgIFFXZWJTZWN1cml0eU9yaWdpbihRV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlKiBwcml2KTsKKworcHJpdmF0ZToKKyAgICBRRXhwbGljaXRs
eVNoYXJlZERhdGFQb2ludGVyPFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGU+IGQ7Cit9OworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdp
bl9wLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW5fcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NTkxZjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW5fcC5oCkBAIC0wLDAgKzEs
MzkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgX1dFQlNFQ1VSSVRZT1JJR0lOX1Bf
SF8KKyNkZWZpbmUgX1dFQlNFQ1VSSVRZT1JJR0lOX1BfSF8KKworI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBRV2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlIDogcHVibGljIFFTaGFyZWREYXRhIHsKK3B1YmxpYzoKKyAgICBRV2ViU2Vj
dXJpdHlPcmlnaW5Qcml2YXRlKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4gbykKKyAgICB7CisgICAgICAgIFFfQVNTRVJUKG8pOworICAgICAgICBvcmlnaW4gPSBvOwor
ICAgIH0KKyAgICB+UVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSgpCisgICAgeworICAgIH0KKyAg
ICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gb3JpZ2luOworfTsKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43MDdiMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMCwwICsxLDEyNTEgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgor
CisjaW5jbHVkZSAicXdlYnBsdWdpbmRhdGFiYXNlX3AuaCIKKworI2luY2x1ZGUgIkFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2lmIEVOQUJM
RShJQ09OREFUQUJBU0UpCisjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQ2xpZW50UXQuaCIKKyNlbmRp
ZgorI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5j
bHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
U3RhdGVOb3RpZmllci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlQ2FjaGUu
aCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VUaHJl
YWQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1
ZGUgPFFGaWxlSW5mbz4KKyNpbmNsdWRlIDxRRm9udD4KKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRp
b24+CisjaW5jbHVkZSA8UUhhc2g+CisjaW5jbHVkZSA8UVNoYXJlZERhdGE+CisjaW5jbHVkZSA8
UVN0YW5kYXJkUGF0aHM+CisjaW5jbHVkZSA8UVVybD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKKworUVdFQktJVF9FWFBP
UlQgdm9pZCBxdF9uZXR3b3JrQWNjZXNzQWxsb3dlZChib29sIGlzQWxsb3dlZCkKK3sKKyNpZm5k
ZWYgUVRfTk9fQkVBUkVSTUFOQUdFTUVOVAorICAgIFdlYkNvcmU6Om5ldHdvcmtTdGF0ZU5vdGlm
aWVyKCkuc2V0TmV0d29ya0FjY2Vzc0FsbG93ZWQoaXNBbGxvd2VkKTsKKyNlbmRpZgorfQorCitj
bGFzcyBRV2ViU2V0dGluZ3NQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBRV2ViU2V0dGluZ3NQcml2
YXRlKFdlYkNvcmU6OlNldHRpbmdzKiB3Y1NldHRpbmdzID0gMCkKKyAgICAgICAgOiBzZXR0aW5n
cyh3Y1NldHRpbmdzKQorICAgIHsKKyAgICB9CisKKyAgICBRSGFzaDxpbnQsIFFTdHJpbmc+IGZv
bnRGYW1pbGllczsKKyAgICBRSGFzaDxpbnQsIGludD4gZm9udFNpemVzOworICAgIFFIYXNoPGlu
dCwgYm9vbD4gYXR0cmlidXRlczsKKyAgICBRVXJsIHVzZXJTdHlsZVNoZWV0TG9jYXRpb247Cisg
ICAgUVN0cmluZyBkZWZhdWx0VGV4dEVuY29kaW5nOworICAgIFFTdHJpbmcgbG9jYWxTdG9yYWdl
UGF0aDsKKyAgICBRU3RyaW5nIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUGF0aDsKKyAgICBR
U3RyaW5nIG1lZGlhVHlwZTsKKyAgICBxaW50NjQgb2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGE7
CisgICAgUVdlYlNldHRpbmdzOjpUaGlyZFBhcnR5Q29va2llUG9saWN5IHRoaXJkUGFydHlDb29r
aWVQb2xpY3k7CisgICAgdm9pZCBhcHBseSgpOworICAgIFdlYkNvcmU6OlNldHRpbmdzKiBzZXR0
aW5nczsKK307CisKK1FfR0xPQkFMX1NUQVRJQyhRTGlzdDxRV2ViU2V0dGluZ3NQcml2YXRlKj4s
IGFsbFNldHRpbmdzKTsKKwordm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCit7Cisg
ICAgaWYgKHNldHRpbmdzKSB7CisgICAgICAgIHNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNp
emFibGUodHJ1ZSk7CisKKyAgICAgICAgUVdlYlNldHRpbmdzUHJpdmF0ZSogZ2xvYmFsID0gUVdl
YlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT5kOworCisgICAgICAgIFFTdHJpbmcgZmFtaWx5
ID0gZm9udEZhbWlsaWVzLnZhbHVlKFFXZWJTZXR0aW5nczo6U3RhbmRhcmRGb250LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmZvbnRGYW1pbGll
cy52YWx1ZShRV2ViU2V0dGluZ3M6OlN0YW5kYXJkRm9udCkpOworICAgICAgICBzZXR0aW5ncy0+
c2V0U3RhbmRhcmRGb250RmFtaWx5KGZhbWlseSk7CisKKyAgICAgICAgZmFtaWx5ID0gZm9udEZh
bWlsaWVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Rml4ZWRGb250LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5mb250RmFtaWxpZXMudmFsdWUoUVdlYlNldHRpbmdz
OjpGaXhlZEZvbnQpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShmYW1p
bHkpOworCisgICAgICAgIGZhbWlseSA9IGZvbnRGYW1pbGllcy52YWx1ZShRV2ViU2V0dGluZ3M6
OlNlcmlmRm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+
Zm9udEZhbWlsaWVzLnZhbHVlKFFXZWJTZXR0aW5nczo6U2VyaWZGb250KSk7CisgICAgICAgIHNl
dHRpbmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoZmFtaWx5KTsKKworICAgICAgICBmYW1pbHkgPSBm
b250RmFtaWxpZXMudmFsdWUoUVdlYlNldHRpbmdzOjpTYW5zU2VyaWZGb250LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5mb250RmFtaWxpZXMudmFsdWUoUVdl
YlNldHRpbmdzOjpTYW5zU2VyaWZGb250KSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRTYW5zU2Vy
aWZGb250RmFtaWx5KGZhbWlseSk7CisKKyAgICAgICAgZmFtaWx5ID0gZm9udEZhbWlsaWVzLnZh
bHVlKFFXZWJTZXR0aW5nczo6Q3Vyc2l2ZUZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbG9iYWwtPmZvbnRGYW1pbGllcy52YWx1ZShRV2ViU2V0dGluZ3M6OkN1cnNp
dmVGb250KSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRDdXJzaXZlRm9udEZhbWlseShmYW1pbHkp
OworCisgICAgICAgIGZhbWlseSA9IGZvbnRGYW1pbGllcy52YWx1ZShRV2ViU2V0dGluZ3M6OkZh
bnRhc3lGb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5m
b250RmFtaWxpZXMudmFsdWUoUVdlYlNldHRpbmdzOjpGYW50YXN5Rm9udCkpOworICAgICAgICBz
ZXR0aW5ncy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFtaWx5KTsKKworICAgICAgICBpbnQgc2l6
ZSA9IGZvbnRTaXplcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5mb250U2l6ZXMudmFsdWUoUVdl
YlNldHRpbmdzOjpNaW5pbXVtRm9udFNpemUpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldE1pbmlt
dW1Gb250U2l6ZShzaXplKTsKKworICAgICAgICBzaXplID0gZm9udFNpemVzLnZhbHVlKFFXZWJT
ZXR0aW5nczo6TWluaW11bUxvZ2ljYWxGb250U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsLT5mb250U2l6ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpNaW5pbXVt
TG9naWNhbEZvbnRTaXplKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtTG9naWNhbEZv
bnRTaXplKHNpemUpOworCisgICAgICAgIHNpemUgPSBmb250U2l6ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpEZWZhdWx0Rm9udFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbC0+Zm9udFNpemVzLnZhbHVlKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXplKSk7
CisgICAgICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rm9udFNpemUoc2l6ZSk7CisKKyAgICAgICAg
c2l6ZSA9IGZvbnRTaXplcy52YWx1ZShRV2ViU2V0dGluZ3M6OkRlZmF1bHRGaXhlZEZvbnRTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmZvbnRTaXplcy52
YWx1ZShRV2ViU2V0dGluZ3M6OkRlZmF1bHRGaXhlZEZvbnRTaXplKSk7CisgICAgICAgIHNldHRp
bmdzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzaXplKTsKKworICAgICAgICBib29sIHZhbHVl
ID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkF1dG9Mb2FkSW1hZ2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUo
UVdlYlNldHRpbmdzOjpBdXRvTG9hZEltYWdlcykpOworICAgICAgICBzZXR0aW5ncy0+c2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHZhbHVlKTsKKworICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpEbnNQcmVmZXRjaEVuYWJsZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdz
OjpEbnNQcmVmZXRjaEVuYWJsZWQpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEROU1ByZWZldGNo
aW5nRW5hYmxlZCh2YWx1ZSk7CisKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFX
ZWJTZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkphdmFz
Y3JpcHRFbmFibGVkKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRTY3JpcHRFbmFibGVkKHZhbHVl
KTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgIHZhbHVlID0gYXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCkpOwor
CisgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh2YWx1
ZSk7CisKKyAgICAgICAgYm9vbCBzaG93RGVidWdWaXN1YWxzID0gcWdldGVudigiV0VCS0lUX1NI
T1dfQ09NUE9TSVRJTkdfREVCVUdfVklTVUFMUyIpID09ICIxIjsKKyAgICAgICAgc2V0dGluZ3Mt
PnNldFNob3dEZWJ1Z0JvcmRlcnMoc2hvd0RlYnVnVmlzdWFscyk7CisgICAgICAgIHNldHRpbmdz
LT5zZXRTaG93UmVwYWludENvdW50ZXIoc2hvd0RlYnVnVmlzdWFscyk7CisjZW5kaWYKKyNpZiBF
TkFCTEUoV0VCR0wpCisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OldlYkdMRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2Jh
bC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OldlYkdMRW5hYmxlZCkpOworCisgICAg
ICAgIHNldHRpbmdzLT5zZXRXZWJHTEVuYWJsZWQodmFsdWUpOworI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKKyAgICAgICAgLy8gRm9yIG5vdywgZW5hYmxlIENTUyBzaGFkZXJzIHdoZW4gV2ViR0wg
aXMgZW5hYmxlZC4KKyAgICAgICAgc2V0dGluZ3MtPnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQo
dmFsdWUpOworI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgICAgICB2
YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpXZWJBdWRpb0VuYWJsZWQsIGds
b2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OldlYkF1ZGlvRW5hYmxlZCkpOwor
ICAgICAgICBzZXR0aW5ncy0+c2V0V2ViQXVkaW9FbmFibGVkKHZhbHVlKTsKKyNlbmRpZgorCisg
ICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1JlZ2lvbnNF
bmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1
dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTUmVnaW9uc0VuYWJsZWQpKTsKKyAgICAgICAgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdp
b25zRW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2Vi
U2V0dGluZ3M6OkNTU0NvbXBvc2l0aW5nRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0NvbXBv
c2l0aW5nRW5hYmxlZCkpOworICAgICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZCh2YWx1ZSk7CisgICAg
ICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0dyaWRMYXlvdXRF
bmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1
dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTR3JpZExheW91dEVuYWJsZWQpKTsKKyAgICAgICAg
c2V0dGluZ3MtPnNldENTU0dyaWRMYXlvdXRFbmFibGVkKHZhbHVlKTsKKworICAgICAgICB2YWx1
ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQpKTsKKworICAgICAg
ICBzZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHZhbHVlKTsKKyAKKyAgICAg
ICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdENhbk9w
ZW5XaW5kb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwt
PmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3Mp
KTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHkodmFsdWUpOworCisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0
dGluZ3M6OkphdmFzY3JpcHRDYW5DbG9zZVdpbmRvd3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Okph
dmFzY3JpcHRDYW5DbG9zZVdpbmRvd3MpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEFsbG93U2Ny
aXB0c1RvQ2xvc2VXaW5kb3dzKHZhbHVlKTsKKworICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6SmF2
YUVuYWJsZWQpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEphdmFFbmFibGVkKHZhbHVlKTsKKwor
ICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5h
YmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRy
aWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQpKTsKKyAgICAgICAgc2V0
dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKHZhbHVlKTsKKworICAgICAgICB2YWx1ZSA9IGF0dHJp
YnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUo
UVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVkKSk7CisgICAgICAgIHNldHRpbmdz
LT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHZhbHVlKTsKKworICAgICAgICB2YWx1ZSA9IGF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52
YWx1ZShRV2ViU2V0dGluZ3M6OlNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCkpOworICAgICAgICBz
ZXR0aW5ncy0+c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHZhbHVlKTsKKworICAgICAgICB2
YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwt
PmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQodmFsdWUpOworICAg
ICAgICBzZXR0aW5ncy0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCh2YWx1ZSk7CisK
KyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCkpOworICAgICAgICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh2YWx1ZSk7
CisKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6RnJhbWVG
bGF0dGVuaW5nRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZCkpOworICAgICAgICBzZXR0aW5ncy0+c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCh2YWx1
ZSk7CisKKyAgICAgICAgUVVybCBsb2NhdGlvbiA9ICF1c2VyU3R5bGVTaGVldExvY2F0aW9uLmlz
RW1wdHkoKSA/IHVzZXJTdHlsZVNoZWV0TG9jYXRpb24gOiBnbG9iYWwtPnVzZXJTdHlsZVNoZWV0
TG9jYXRpb247CisgICAgICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFdl
YkNvcmU6OlVSTChsb2NhdGlvbikpOworCisgICAgICAgIFFTdHJpbmcgZW5jb2RpbmcgPSAhZGVm
YXVsdFRleHRFbmNvZGluZy5pc0VtcHR5KCkgPyBkZWZhdWx0VGV4dEVuY29kaW5nOiBnbG9iYWwt
PmRlZmF1bHRUZXh0RW5jb2Rpbmc7CisgICAgICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZShlbmNvZGluZyk7CisKKyAgICAgICAgUVN0cmluZyBzdG9yYWdlUGF0aCA9ICFs
b2NhbFN0b3JhZ2VQYXRoLmlzRW1wdHkoKSA/IGxvY2FsU3RvcmFnZVBhdGggOiBnbG9iYWwtPmxv
Y2FsU3RvcmFnZVBhdGg7CisgICAgICAgIHNldHRpbmdzLT5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgoc3RvcmFnZVBhdGgpOworCisgICAgICAgIGlmIChtZWRpYVR5cGUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgbWVkaWFUeXBlID0gZ2xvYmFsLT5tZWRpYVR5cGU7CisKKyAgICAgICAgdmFs
dWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UHJpbnRFbGVtZW50QmFja2dyb3Vu
ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlByaW50RWxlbWVudEJhY2tncm91bmRzKSk7CisgICAg
ICAgIHNldHRpbmdzLT5zZXRTaG91bGRQcmludEJhY2tncm91bmRzKHZhbHVlKTsKKworI2lmIEVO
QUJMRShTUUxfREFUQUJBU0UpCisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2Vi
U2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZCkpOworICAgICAgICBXZWJDb3JlOjpE
YXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRJc0F2YWlsYWJsZSh2YWx1ZSk7CisjZW5kaWYK
KworICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCkpOworICAgICAgICBzZXR0aW5ncy0+c2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHZhbHVlKTsKKworICAgICAgICB2YWx1ZSA9IGF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUo
UVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkKSk7CisgICAgICAgIHNldHRpbmdzLT5z
ZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHZhbHVlKTsKKworICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzKSk7Cisg
ICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyh2YWx1
ZSk7CisKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6TG9j
YWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29u
dGVudENhbkFjY2Vzc0ZpbGVVcmxzKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHModmFsdWUpOworCisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52
YWx1ZShRV2ViU2V0dGluZ3M6OlhTU0F1ZGl0aW5nRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6WFNTQXVkaXRpbmdFbmFibGVkKSk7CisgICAgICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9y
RW5hYmxlZCh2YWx1ZSk7CisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICAgICAg
dmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3RvcmVF
bmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQpKTsK
KyAgICAgICAgc2V0dGluZ3MtPnNldFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCh2YWx1ZSk7Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgICAgICB2YWx1ZSA9IGF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpTY3JvbGxBbmltYXRvckVuYWJsZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1
ZShRV2ViU2V0dGluZ3M6OlNjcm9sbEFuaW1hdG9yRW5hYmxlZCkpOworICAgICAgICBzZXR0aW5n
cy0+c2V0U2Nyb2xsQW5pbWF0b3JFbmFibGVkKHZhbHVlKTsKKyNlbmRpZgorCisgICAgICAgIHZh
bHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNhcmV0QnJvd3NpbmdFbmFibGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDYXJldEJyb3dzaW5nRW5hYmxlZCkpOworICAgICAgICBz
ZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFsdWUpOworCisgICAgICAgIHZhbHVl
ID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6Ok5vdGlmaWNhdGlvbnNFbmFibGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMu
dmFsdWUoUVdlYlNldHRpbmdzOjpOb3RpZmljYXRpb25zRW5hYmxlZCkpOworICAgICAgICBzZXR0
aW5ncy0+c2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQodmFsdWUpOworCisgICAgICAgIHZhbHVlID0g
YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlNpdGVTcGVjaWZpY1F1aXJrc0VuYWJsZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRl
cy52YWx1ZShRV2ViU2V0dGluZ3M6OlNpdGVTcGVjaWZpY1F1aXJrc0VuYWJsZWQpKTsKKyAgICAg
ICAgc2V0dGluZ3MtPnNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHZhbHVlKTsKKworICAgICAg
ICBzZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZShXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+Y2FwYWNp
dHkoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUUxpc3Q8UVdlYlNldHRpbmdzUHJpdmF0ZSo+
IHNldHRpbmdzID0gKjo6YWxsU2V0dGluZ3MoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzZXR0aW5ncy5jb3VudCgpOyArK2kpCisgICAgICAgICAgICBzZXR0aW5nc1tpXS0+YXBwbHko
KTsKKyAgICB9Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGdsb2JhbCBzZXR0aW5ncyBvYmpl
Y3QuCisKKyAgICBBbnkgc2V0dGluZyBjaGFuZ2VkIG9uIHRoZSBkZWZhdWx0IG9iamVjdCBpcyBh
dXRvbWF0aWNhbGx5IGFwcGxpZWQgdG8gYWxsCisgICAgUVdlYlBhZ2UgaW5zdGFuY2VzIHdoZXJl
IHRoZSBwYXJ0aWN1bGFyIHNldHRpbmcgaXMgbm90IG92ZXJyaWRlbiBhbHJlYWR5LgorKi8KK1FX
ZWJTZXR0aW5ncyogUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCit7CisgICAgc3RhdGlj
IFFXZWJTZXR0aW5ncyogZ2xvYmFsID0gMDsKKyAgICBpZiAoIWdsb2JhbCkgeworICAgICAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CisgICAgICAgIGdsb2JhbCA9IG5ldyBRV2Vi
U2V0dGluZ3M7CisgICAgfQorICAgIHJldHVybiBnbG9iYWw7Cit9CisKKy8qIQorICAgIFxjbGFz
cyBRV2ViU2V0dGluZ3MKKyAgICBcc2luY2UgNC40CisgICAgXGJyaWVmIFRoZSBRV2ViU2V0dGlu
Z3MgY2xhc3MgcHJvdmlkZXMgYW4gb2JqZWN0IHRvIHN0b3JlIHRoZSBzZXR0aW5ncyB1c2VkCisg
ICAgYnkgUVdlYlBhZ2UgYW5kIFFXZWJGcmFtZS4KKworICAgIFxpbm1vZHVsZSBRdFdlYktpdAor
CisgICAgRWFjaCBRV2ViUGFnZSBvYmplY3QgaGFzIGl0cyBvd24gUVdlYlNldHRpbmdzIG9iamVj
dCwgd2hpY2ggY29uZmlndXJlcyB0aGUKKyAgICBzZXR0aW5ncyBmb3IgdGhhdCBwYWdlLiBJZiBh
IHNldHRpbmcgaXMgbm90IGNvbmZpZ3VyZWQsIHRoZW4gaXQgaXMgbG9va2VkCisgICAgdXAgaW4g
dGhlIGdsb2JhbCBzZXR0aW5ncyBvYmplY3QsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCB1c2luZwor
ICAgIGdsb2JhbFNldHRpbmdzKCkuCisKKyAgICBRV2ViU2V0dGluZ3MgYWxsb3dzIGNvbmZpZ3Vy
YXRpb24gb2YgYnJvd3NlciBwcm9wZXJ0aWVzLCBzdWNoIGFzIGZvbnQgc2l6ZXMgYW5kCisgICAg
ZmFtaWxpZXMsIHRoZSBsb2NhdGlvbiBvZiBhIGN1c3RvbSBzdHlsZSBzaGVldCwgYW5kIGdlbmVy
aWMgYXR0cmlidXRlcyBsaWtlCisgICAgSmF2YVNjcmlwdCBhbmQgcGx1Z2lucy4gSW5kaXZpZHVh
bCBhdHRyaWJ1dGVzIGFyZSBzZXQgdXNpbmcgdGhlIHNldEF0dHJpYnV0ZSgpCisgICAgZnVuY3Rp
b24uIFRoZSBcbHtRV2ViU2V0dGluZ3M6OldlYkF0dHJpYnV0ZX17V2ViQXR0cmlidXRlfSBlbnVt
IGZ1cnRoZXIgZGVzY3JpYmVzCisgICAgZWFjaCBhdHRyaWJ1dGUuCisKKyAgICBRV2ViU2V0dGlu
Z3MgYWxzbyBjb25maWd1cmVzIGdsb2JhbCBwcm9wZXJ0aWVzIHN1Y2ggYXMgdGhlIHdlYiBwYWdl
IG1lbW9yeQorICAgIGNhY2hlLCBpY29uIGRhdGFiYXNlLCBsb2NhbCBkYXRhYmFzZSBzdG9yYWdl
IGFuZCBvZmZsaW5lCisgICAgYXBwbGljYXRpb25zIHN0b3JhZ2UuCisKKyAgICBcc2VjdGlvbjEg
RW5hYmxpbmcgUGx1Z2lucworCisgICAgU3VwcG9ydCBmb3IgYnJvd3NlciBwbHVnaW5zIGNhbiBl
bmFibGVkIGJ5IHNldHRpbmcgdGhlCisgICAgXGx7UVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxl
ZH17UGx1Z2luc0VuYWJsZWR9IGF0dHJpYnV0ZS4gRm9yIG1hbnkgYXBwbGljYXRpb25zLAorICAg
IHRoaXMgYXR0cmlidXRlIGlzIGVuYWJsZWQgZm9yIGFsbCBwYWdlcyBieSBzZXR0aW5nIGl0IG9u
IHRoZQorICAgIFxse2dsb2JhbFNldHRpbmdzKCl9e2dsb2JhbCBzZXR0aW5ncyBvYmplY3R9LiBR
dCBXZWJLaXQgd2lsbCBhbHdheXMgaWdub3JlIHRoaXMgc2V0dGluZworICAgIHdoZW4gcHJvY2Vz
c2luZyBRdCBwbHVnaW5zLiBUaGUgZGVjaXNpb24gdG8gYWxsb3cgYSBRdCBwbHVnaW4gaXMgbWFk
ZSBieSB0aGUgY2xpZW50CisgICAgaW4gaXRzIHJlaW1wbGVtZW50YXRpb24gb2YgUVdlYlBhZ2U6
OmNyZWF0ZVBsdWdpbigpLgorCisgICAgXHNlY3Rpb24xIFdlYiBBcHBsaWNhdGlvbiBTdXBwb3J0
CisKKyAgICBXZWJLaXQgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZmVhdHVyZXMgc3BlY2lmaWVkIGlu
IFxse0hUTUwgNX0gdGhhdCBpbXByb3ZlIHRoZQorICAgIHBlcmZvcm1hbmNlIGFuZCBjYXBhYmls
aXRpZXMgb2YgV2ViIGFwcGxpY2F0aW9ucy4gVGhlc2UgaW5jbHVkZSBjbGllbnQtc2lkZQorICAg
IChvZmZsaW5lKSBzdG9yYWdlIGFuZCB0aGUgdXNlIG9mIGEgV2ViIGFwcGxpY2F0aW9uIGNhY2hl
LgorCisgICAgQ2xpZW50LXNpZGUgKG9mZmxpbmUpIHN0b3JhZ2UgaXMgYW4gaW1wcm92ZW1lbnQg
b3ZlciB0aGUgdXNlIG9mIGNvb2tpZXMgdG8KKyAgICBzdG9yZSBwZXJzaXN0ZW50IGRhdGEgaW4g
V2ViIGFwcGxpY2F0aW9ucy4gQXBwbGljYXRpb25zIGNhbiBjb25maWd1cmUgYW5kCisgICAgZW5h
YmxlIHRoZSB1c2Ugb2YgYW4gb2ZmbGluZSBzdG9yYWdlIGRhdGFiYXNlIGJ5IGNhbGxpbmcgdGhl
CisgICAgc2V0T2ZmbGluZVN0b3JhZ2VQYXRoKCkgd2l0aCBhbiBhcHByb3ByaWF0ZSBmaWxlIHBh
dGgsIGFuZCBjYW4gbGltaXQgdGhlIHF1b3RhCisgICAgZm9yIGVhY2ggYXBwbGljYXRpb24gYnkg
Y2FsbGluZyBzZXRPZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSgpLgorCisgICAgXHNhIFFXZWJQ
YWdlOjpzZXR0aW5ncygpLCBRV2ViVmlldzo6c2V0dGluZ3MoKSwge1dlYiBCcm93c2VyfQorKi8K
KworLyohCisgICAgXGVudW0gUVdlYlNldHRpbmdzOjpGb250RmFtaWx5CisKKyAgICBUaGlzIGVu
dW0gZGVzY3JpYmVzIHRoZSBnZW5lcmljIGZvbnQgZmFtaWxpZXMgZGVmaW5lZCBieSBDU1MgMi4K
KyAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICAgXGx7aHR0cDovL3d3dy53My5v
cmcvVFIvUkVDLUNTUzIvZm9udHMuaHRtbCNnZW5lcmljLWZvbnQtZmFtaWxpZXN9e0NTUyBzdGFu
ZGFyZH0uCisKKyAgICBcdmFsdWUgU3RhbmRhcmRGb250CisgICAgXHZhbHVlIEZpeGVkRm9udAor
ICAgIFx2YWx1ZSBTZXJpZkZvbnQKKyAgICBcdmFsdWUgU2Fuc1NlcmlmRm9udAorICAgIFx2YWx1
ZSBDdXJzaXZlRm9udAorICAgIFx2YWx1ZSBGYW50YXN5Rm9udAorKi8KKworLyohCisgICAgXGVu
dW0gUVdlYlNldHRpbmdzOjpGb250U2l6ZQorCisgICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUg
Zm9udCBzaXplcyBjb25maWd1cmFibGUgdGhyb3VnaCBRV2ViU2V0dGluZ3MuCisKKyAgICBcdmFs
dWUgTWluaW11bUZvbnRTaXplIFRoZSBoYXJkIG1pbmltdW0gZm9udCBzaXplLgorICAgIFx2YWx1
ZSBNaW5pbXVtTG9naWNhbEZvbnRTaXplIFRoZSBtaW5pbXVtIGxvZ2ljYWwgZm9udCBzaXplIHRo
YXQgaXMgYXBwbGllZAorICAgICAgICB3aGVuIHpvb21pbmcgb3V0IHdpdGggUVdlYkZyYW1lOjpz
ZXRUZXh0U2l6ZU11bHRpcGxpZXIoKS4KKyAgICBcdmFsdWUgRGVmYXVsdEZvbnRTaXplIFRoZSBk
ZWZhdWx0IGZvbnQgc2l6ZSBmb3IgcmVndWxhciB0ZXh0LgorICAgIFx2YWx1ZSBEZWZhdWx0Rml4
ZWRGb250U2l6ZSBUaGUgZGVmYXVsdCBmb250IHNpemUgZm9yIGZpeGVkLXBpdGNoIHRleHQuCisq
LworCisvKiEKKyAgICBcZW51bSBRV2ViU2V0dGluZ3M6OlRoaXJkUGFydHlDb29raWVQb2xpY3kK
KworICAgIFRoaXMgZW51bSBkZXNjcmliZXMgdGhlIHBvbGljaWVzIGNvbmZpZ3VyYWJsZSBmb3Ig
YWNjZXB0aW5nIGFuZCBzZW5kaW5nCisgICAgdGhpcmQtcGFydHkgY29va2llcy4gVGhlc2UgYXJl
IGNvb2tpZXMgdGhhdCBhcmUgc2V0IG9yIHJldHJpZXZlZCB3aGVuIGZldGNoaW5nCisgICAgYSBy
ZXNvdXJjZSB0aGF0IGlzIHN0b3JlZCBmb3IgYSBkaWZmZXJlbnQgcmVnaXN0cnktY29udHJvbGxl
ZCBkb21haW4gZnJvbSB0aGUgcGFnZSBjb250YWluaW5nIGl0LgorCisgICAgXHZhbHVlIEFsd2F5
c0FsbG93VGhpcmRQYXJ0eUNvb2tpZXMgQWxsb3cgdGhpcmQtcGFydHkgcmVzb3VyY2VzIHRvIHNl
dCBhbmQgcmV0cmlldmUgY29va2llcy4KKyAgICBcdmFsdWUgQWx3YXlzQmxvY2tUaGlyZFBhcnR5
Q29va2llcyBOZXZlciBhbGxvdyB0aGlyZC1wYXJ0eSByZXNvdXJjZXMgdG8gc2V0IGFuZCByZXRy
aWV2ZSBjb29raWVzLgorICAgIFx2YWx1ZSBBbGxvd1RoaXJkUGFydHlXaXRoRXhpc3RpbmdDb29r
aWVzIElmIHRoZSBjb29raWUgamFyIGFscmVhZHkgY29udGFpbnMgY29va2llcworICAgICAgICBm
cm9tIGEgdGhpcmQtcGFydHksIGFsbG93IGl0IHRvIHNldCBhbmQgcmV0cmlldmUgbmV3IGFuZCBl
eGlzdGluZyBjb29raWVzLgorCisgICAgXHNpbmNlIFF0V2ViS2l0IDIsMworKi8KKworLyohCisg
ICAgXGVudW0gUVdlYlNldHRpbmdzOjpXZWJHcmFwaGljCisKKyAgICBUaGlzIGVudW1zIGRlc2Ny
aWJlcyB0aGUgc3RhbmRhcmQgZ3JhcGhpY2FsIGVsZW1lbnRzIHVzZWQgaW4gd2VicGFnZXMuCisK
KyAgICBcdmFsdWUgTWlzc2luZ0ltYWdlR3JhcGhpYyBUaGUgcmVwbGFjZW1lbnQgZ3JhcGhpYyBz
aG93biB3aGVuIGFuIGltYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuCisgICAgXHZhbHVlIE1pc3Np
bmdQbHVnaW5HcmFwaGljIFRoZSByZXBsYWNlbWVudCBncmFwaGljIHNob3duIHdoZW4gYSBwbHVn
aW4gY291bGQgbm90IGJlIGxvYWRlZC4KKyAgICBcdmFsdWUgRGVmYXVsdEZyYW1lSWNvbkdyYXBo
aWMgVGhlIGRlZmF1bHQgaWNvbiBmb3IgUVdlYkZyYW1lOjppY29uKCkuCisgICAgXHZhbHVlIFRl
eHRBcmVhU2l6ZUdyaXBDb3JuZXJHcmFwaGljIFRoZSBncmFwaGljIHNob3duIGZvciB0aGUgc2l6
ZSBncmlwIG9mIHRleHQgYXJlYXMuCisgICAgXHZhbHVlIERlbGV0ZUJ1dHRvbkdyYXBoaWMgVGhl
IGdyYXBoaWMgc2hvd24gZm9yIHRoZSBXZWJLaXQtRWRpdGluZy1EZWxldGUtQnV0dG9uIGluIERl
bGV0aW9uIFVJLgorICAgIFx2YWx1ZSBJbnB1dFNwZWVjaEJ1dHRvbkdyYXBoaWMgVGhlIGdyYXBo
aWMgc2hvd24gaW4gaW5wdXQgZmllbGRzIHRoYXQgc3VwcG9ydCBzcGVlY2ggcmVjb2duaXRpb24u
CisgICAgXHZhbHVlIFNlYXJjaENhbmNlbEJ1dHRvbkdyYXBoaWMgVGhlIGdyYXBoaWMgc2hvd24g
Zm9yIGNsZWFyaW5nIHRoZSB0ZXh0IGluIGEgc2VhcmNoIGZpZWxkLgorICAgIFx2YWx1ZSBTZWFy
Y2hDYW5jZWxCdXR0b25QcmVzc2VkR3JhcGhpYyBUaGUgZ3JhcGhpYyBzaG93biB3aGVuIFNlYXJj
aENhbmNlbEJ1dHRvbkdyYXBoaWMgaXMgcHJlc3NlZC4KKyovCisKKy8qIQorICAgIFxlbnVtIFFX
ZWJTZXR0aW5nczo6V2ViQXR0cmlidXRlCisKKyAgICBUaGlzIGVudW0gZGVzY3JpYmVzIHZhcmlv
dXMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb25maWd1cmFibGUgdGhyb3VnaCBRV2ViU2V0dGluZ3Mu
CisKKyAgICBcdmFsdWUgQXV0b0xvYWRJbWFnZXMgU3BlY2lmaWVzIHdoZXRoZXIgaW1hZ2VzIGFy
ZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCBpbgorICAgICAgICB3ZWIgcGFnZXMuIFRoaXMgaXMgZW5h
YmxlZCBieSBkZWZhdWx0LgorICAgIFx2YWx1ZSBEbnNQcmVmZXRjaEVuYWJsZWQgU3BlY2lmaWVz
IHdoZXRoZXIgUXQgV2ViS2l0IHdpbGwgdHJ5IHRvIHByZS1mZXRjaCBETlMgZW50cmllcyB0bwor
ICAgICAgICBzcGVlZCB1cCBicm93c2luZy4gVGhpcyBvbmx5IHdvcmtzIGFzIGEgZ2xvYmFsIGF0
dHJpYnV0ZS4gT25seSBmb3IgUXQgNC42IGFuZCBsYXRlci4gVGhpcyBpcyBkaXNhYmxlZCBieSBk
ZWZhdWx0LgorICAgIFx2YWx1ZSBKYXZhc2NyaXB0RW5hYmxlZCBFbmFibGVzIG9yIGRpc2FibGVz
IHRoZSBydW5uaW5nIG9mIEphdmFTY3JpcHQKKyAgICAgICAgcHJvZ3JhbXMuIFRoaXMgaXMgZW5h
YmxlZCBieSBkZWZhdWx0CisgICAgXHZhbHVlIEphdmFFbmFibGVkIEVuYWJsZXMgb3IgZGlzYWJs
ZXMgSmF2YSBhcHBsZXRzLgorICAgICAgICBDdXJyZW50bHkgSmF2YSBhcHBsZXRzIGFyZSBub3Qg
c3VwcG9ydGVkLgorICAgIFx2YWx1ZSBQbHVnaW5zRW5hYmxlZCBFbmFibGVzIG9yIGRpc2FibGVz
IHBsdWdpbnMgaW4gV2ViIHBhZ2VzIChlLmcuIHVzaW5nIE5QQVBJKS4gUXQgcGx1Z2lucworICAg
ICAgICB3aXRoIGEgbWltZXR5cGUgc3VjaCBhcyAiYXBwbGljYXRpb24veC1xdC1wbHVnaW4iIGFy
ZSBub3QgYWZmZWN0ZWQgYnkgdGhpcyBzZXR0aW5nLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQuCisgICAgXHZhbHVlIFByaXZhdGVCcm93c2luZ0VuYWJsZWQgUHJpdmF0ZSBicm93c2luZyBw
cmV2ZW50cyBXZWJLaXQgZnJvbQorICAgICAgICByZWNvcmRpbmcgdmlzaXRlZCBwYWdlcyBpbiB0
aGUgaGlzdG9yeSBhbmQgc3RvcmluZyB3ZWIgcGFnZSBpY29ucy4gVGhpcyBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0LgorICAgIFx2YWx1ZSBKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MgU3BlY2lmaWVz
IHdoZXRoZXIgSmF2YVNjcmlwdCBwcm9ncmFtcworICAgICAgICBjYW4gb3BlbiBuZXcgd2luZG93
cy4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIFx2YWx1ZSBKYXZhc2NyaXB0Q2Fu
Q2xvc2VXaW5kb3dzIFNwZWNpZmllcyB3aGV0aGVyIEphdmFTY3JpcHQgcHJvZ3JhbXMKKyAgICAg
ICAgY2FuIGNsb3NlIHdpbmRvd3MuIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBc
dmFsdWUgSmF2YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCBTcGVjaWZpZXMgd2hldGhlciBKYXZh
U2NyaXB0IHByb2dyYW1zCisgICAgICAgIGNhbiByZWFkIG9yIHdyaXRlIHRvIHRoZSBjbGlwYm9h
cmQuIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBcdmFsdWUgRGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCBFbmFibGVzIGV4dHJhIHRvb2xzIGZvciBXZWIgZGV2ZWxvcGVycy4KKyAgICAg
ICAgQ3VycmVudGx5IHRoaXMgZW5hYmxlcyB0aGUgIkluc3BlY3QiIGVsZW1lbnQgaW4gdGhlIGNv
bnRleHQgbWVudSBhcworICAgICAgICB3ZWxsIGFzIHRoZSB1c2Ugb2YgUVdlYkluc3BlY3RvciB3
aGljaCBjb250cm9scyB0aGUgd2ViIGluc3BlY3RvcgorICAgICAgICBmb3Igd2ViIHNpdGUgZGVi
dWdnaW5nLiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgXHZhbHVlIFNwYXRpYWxO
YXZpZ2F0aW9uRW5hYmxlZCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBTcGF0aWFsIE5hdmlnYXRp
b24KKyAgICAgICAgZmVhdHVyZSwgd2hpY2ggY29uc2lzdHMgaW4gdGhlIGFiaWxpdHkgdG8gbmF2
aWdhdGUgYmV0d2VlbiBmb2N1c2FibGUKKyAgICAgICAgZWxlbWVudHMgaW4gYSBXZWIgcGFnZSwg
c3VjaCBhcyBoeXBlcmxpbmtzIGFuZCBmb3JtIGNvbnRyb2xzLCBieSB1c2luZworICAgICAgICBM
ZWZ0LCBSaWdodCwgVXAgYW5kIERvd24gYXJyb3cga2V5cy4gRm9yIGV4YW1wbGUsIGlmIGEgdXNl
ciBwcmVzc2VzIHRoZQorICAgICAgICBSaWdodCBrZXksIGhldXJpc3RpY3MgZGV0ZXJtaW5lIHdo
ZXRoZXIgdGhlcmUgaXMgYW4gZWxlbWVudCBoZSBtaWdodCBiZQorICAgICAgICB0cnlpbmcgdG8g
cmVhY2ggdG93YXJkcyB0aGUgcmlnaHQgYW5kIHdoaWNoIGVsZW1lbnQgaGUgcHJvYmFibHkgd2Fu
dHMuCisgICAgICAgIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBcdmFsdWUgTGlu
a3NJbmNsdWRlZEluRm9jdXNDaGFpbiBTcGVjaWZpZXMgd2hldGhlciBoeXBlcmxpbmtzIHNob3Vs
ZCBiZQorICAgICAgICBpbmNsdWRlZCBpbiB0aGUga2V5Ym9hcmQgZm9jdXMgY2hhaW4uIFRoaXMg
aXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgIFx2YWx1ZSBab29tVGV4dE9ubHkgU3BlY2lmaWVz
IHdoZXRoZXIgdGhlIHpvb20gZmFjdG9yIG9uIGEgZnJhbWUgYXBwbGllcworICAgICAgICBvbmx5
IHRvIHRoZSB0ZXh0IG9yIHRvIGFsbCBjb250ZW50LiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQuCisgICAgXHZhbHVlIFByaW50RWxlbWVudEJhY2tncm91bmRzIFNwZWNpZmllcyB3aGV0aGVy
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBpbWFnZXMKKyAgICAgICAgYXJlIGFsc28gZHJhd24g
d2hlbiB0aGUgcGFnZSBpcyBwcmludGVkLiBUaGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAg
ICBcdmFsdWUgT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQgU3BlY2lmaWVzIHdoZXRoZXIg
c3VwcG9ydCBmb3IgdGhlIEhUTUwgNQorICAgICAgICBvZmZsaW5lIHN0b3JhZ2UgZmVhdHVyZSBp
cyBlbmFibGVkIG9yIG5vdC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIFx2YWx1
ZSBPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgU3BlY2lmaWVzIHdoZXRoZXIgc3Vw
cG9ydCBmb3IgdGhlIEhUTUwgNQorICAgICAgICB3ZWIgYXBwbGljYXRpb24gY2FjaGUgZmVhdHVy
ZSBpcyBlbmFibGVkIG9yIG5vdC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIFx2
YWx1ZSBMb2NhbFN0b3JhZ2VFbmFibGVkIFNwZWNpZmllcyB3aGV0aGVyIHN1cHBvcnQgZm9yIHRo
ZSBIVE1MIDUKKyAgICAgICAgbG9jYWwgc3RvcmFnZSBmZWF0dXJlIGlzIGVuYWJsZWQgb3Igbm90
LiBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgICAgIChUaGlzIHZhbHVlIHdhcyBp
bnRyb2R1Y2VkIGluIDQuNi4pCisgICAgXHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxl
ZCBcZXtUaGlzIGVudW0gdmFsdWUgaXMgZGVwcmVjYXRlZC59IFVzZQorICAgICAgICBRV2ViU2V0
dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQgaW5zdGVhZC4KKyAgICBcdmFsdWUgTG9jYWxDb250
ZW50Q2FuQWNjZXNzUmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBk
b2N1bWVudHMgYXJlCisgICAgICAgIGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLiBUaGlz
IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIEZvciBtb3JlIGluZm9ybWF0aW9uCisgICAgICAgIGFi
b3V0IHNlY3VyaXR5IG9yaWdpbnMgYW5kIGxvY2FsIHZzLiByZW1vdGUgY29udGVudCBzZWUgUVdl
YlNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoVGhpcyB2YWx1ZSB3YXMgaW50cm9kdWNlZCBpbiA0
LjYuKQorICAgIFx2YWx1ZSBMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscyBTcGVjaWZpZXMg
d2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMgYXJlCisgICAgICAgIGFsbG93ZWQgdG8g
YWNjZXNzIG90aGVyIGxvY2FsIHVybHMuIFRoaXMgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBGb3Ig
bW9yZSBpbmZvcm1hdGlvbgorICAgICAgICBhYm91dCBzZWN1cml0eSBvcmlnaW5zIGFuZCBsb2Nh
bCB2cy4gcmVtb3RlIGNvbnRlbnQgc2VlIFFXZWJTZWN1cml0eU9yaWdpbi4KKyAgICBcdmFsdWUg
WFNTQXVkaXRpbmdFbmFibGVkIFNwZWNpZmllcyB3aGV0aGVyIGxvYWQgcmVxdWVzdHMgc2hvdWxk
IGJlIG1vbml0b3JlZCBmb3IgY3Jvc3Mtc2l0ZQorICAgICAgICBzY3JpcHRpbmcgYXR0ZW1wdHMu
IFN1c3BpY2lvdXMgc2NyaXB0cyB3aWxsIGJlIGJsb2NrZWQgYW5kIHJlcG9ydGVkIGluIHRoZSBp
bnNwZWN0b3IncworICAgICAgICBKYXZhU2NyaXB0IGNvbnNvbGUuIEVuYWJsaW5nIHRoaXMgZmVh
dHVyZSBtaWdodCBoYXZlIGFuIGltcGFjdCBvbiBwZXJmb3JtYW5jZQorICAgICAgICBhbmQgaXQg
aXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBcdmFsdWUgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQgVGhpcyBmZWF0dXJlLCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAorICAg
ICAgICBRR3JhcGhpY3NXZWJWaWV3LCBhY2NlbGVyYXRlcyBhbmltYXRpb25zIG9mIHdlYiBjb250
ZW50LiBDU1MgYW5pbWF0aW9ucyBvZiB0aGUgdHJhbnNmb3JtIGFuZAorICAgICAgICBvcGFjaXR5
IHByb3BlcnRpZXMgd2lsbCBiZSByZW5kZXJlZCBieSBjb21wb3NpbmcgdGhlIGNhY2hlZCBjb250
ZW50IG9mIHRoZSBhbmltYXRlZCBlbGVtZW50cy4KKyAgICAgICAgVGhpcyBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQuCisgICAgXHZhbHVlIFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCBUaGlzIHNldHRp
bmcgZW5hYmxlcyB0aGUgdGlsZWQgYmFja2luZyBzdG9yZSBmZWF0dXJlCisgICAgICAgIGZvciBh
IFFHcmFwaGljc1dlYlZpZXcuIFdpdGggdGhlIHRpbGVkIGJhY2tpbmcgc3RvcmUgZW5hYmxlZCwg
dGhlIHdlYiBwYWdlIGNvbnRlbnRzIGluIGFuZCBhcm91bmQKKyAgICAgICAgdGhlIGN1cnJlbnQg
dmlzaWJsZSBhcmVhIGlzIHNwZWN1bGF0aXZlbHkgY2FjaGVkIHRvIGJpdG1hcCB0aWxlcy4gVGhl
IHRpbGVzIGFyZSBhdXRvbWF0aWNhbGx5IGtlcHQKKyAgICAgICAgaW4gc3luYyB3aXRoIHRoZSB3
ZWIgcGFnZSBhcyBpdCBjaGFuZ2VzLiBFbmFibGluZyB0aWxpbmcgY2FuIHNpZ25pZmljYW50bHkg
c3BlZWQgdXAgcGFpbnRpbmcgaGVhdnkgCisgICAgICAgIG9wZXJhdGlvbnMgbGlrZSBzY3JvbGxp
bmcuIEVuYWJsaW5nIHRoZSBmZWF0dXJlIGluY3JlYXNlcyBtZW1vcnkgY29uc3VtcHRpb24uIEl0
IGRvZXMgbm90IHdvcmsgd2VsbCAKKyAgICAgICAgd2l0aCBjb250ZW50cyB1c2luZyBDU1MgZml4
ZWQgcG9zaXRpb25pbmcgKHNlZSBhbHNvIFxse1FHcmFwaGljc1dlYlZpZXc6On17cmVzaXplc1Rv
Q29udGVudHN9IHByb3BlcnR5KS4KKyAgICAgICAgXGx7UUdyYXBoaWNzV2ViVmlldzo6fXt0aWxl
ZEJhY2tpbmdTdG9yZUZyb3plbn0gcHJvcGVydHkgYWxsb3dzIGFwcGxpY2F0aW9uIHRvIHRlbXBv
cmFyaWx5CisgICAgICAgIGZyZWV6ZSB0aGUgY29udGVudHMgb2YgdGhlIGJhY2tpbmcgc3RvcmUu
IFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBcdmFsdWUgRnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCBXaXRoIHRoaXMgc2V0dGluZyBlYWNoIHN1YmZyYW1lIGlzIGV4cGFuZGVkIHRvIGl0
cyBjb250ZW50cy4KKyAgICAgICAgT24gdG91Y2ggZGV2aWNlcywgaXQgaXMgZGVzaXJlZCB0byBu
b3QgaGF2ZSBhbnkgc2Nyb2xsYWJsZSBzdWIgcGFydHMgb2YgdGhlIHBhZ2UKKyAgICAgICAgYXMg
aXQgcmVzdWx0cyBpbiBhIGNvbmZ1c2luZyB1c2VyIGV4cGVyaWVuY2UsIHdpdGggc2Nyb2xsaW5n
IHNvbWV0aW1lcyBzY3JvbGxpbmcgc3ViIHBhcnRzCisgICAgICAgIGFuZCBhdCBvdGhlciB0aW1l
cyBzY3JvbGxpbmcgdGhlIHBhZ2UgaXRzZWxmLiBGb3IgdGhpcyByZWFzb24gaWZyYW1lcyBhbmQg
ZnJhbWVzZXRzIGFyZQorICAgICAgICBiYXJlbHkgdXNhYmxlIG9uIHRvdWNoIGRldmljZXMuIFRo
aXMgd2lsbCBmbGF0dGVuIGFsbCB0aGUgZnJhbWVzIHRvIGJlY29tZSBvbmUgc2Nyb2xsYWJsZSBw
YWdlLgorICAgICAgICBUaGlzIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgXHZhbHVlIFNp
dGVTcGVjaWZpY1F1aXJrc0VuYWJsZWQgVGhpcyBzZXR0aW5nIGVuYWJsZXMgV2ViS2l0J3Mgd29y
a2Fyb3VuZCBmb3IgYnJva2VuIHNpdGVzLiBJdCBpcworICAgICAgICBlbmFibGVkIGJ5IGRlZmF1
bHQuCisgICAgXHZhbHVlIFNjcm9sbEFuaW1hdG9yRW5hYmxlZCBUaGlzIHNldHRpbmcgZW5hYmxl
cyBhbmltYXRlZCBzY3JvbGxpbmcuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAgXHZh
bHVlIENhcmV0QnJvd3NpbmdFbmFibGVkIFRoaXMgc2V0dGluZyBlbmFibGVzIGNhcmV0IGJyb3dz
aW5nLiBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgIFx2YWx1ZSBOb3RpZmljYXRpb25z
RW5hYmxlZCBTcGVjaWZpZXMgd2hldGhlciBzdXBwb3J0IGZvciB0aGUgSFRNTCA1IHdlYiBub3Rp
ZmljYXRpb25zIGlzIGVuYWJsZWQKKyAgICAgICAgb3Igbm90LiBUaGlzIGlzIGVuYWJsZWQgYnkg
ZGVmYXVsdC4KKyovCisKKy8qIQorICAgIFxpbnRlcm5hbAorKi8KK1FXZWJTZXR0aW5nczo6UVdl
YlNldHRpbmdzKCkKKyAgICA6IGQobmV3IFFXZWJTZXR0aW5nc1ByaXZhdGUpCit7CisgICAgLy8g
SW5pdGlhbGl6ZSBvdXIgZ2xvYmFsIGRlZmF1bHRzCisgICAgZC0+Zm9udFNpemVzLmluc2VydChR
V2ViU2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSwgMCk7CisgICAgZC0+Zm9udFNpemVzLmluc2Vy
dChRV2ViU2V0dGluZ3M6Ok1pbmltdW1Mb2dpY2FsRm9udFNpemUsIDApOworICAgIGQtPmZvbnRT
aXplcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUsIDE2KTsKKyAgICBkLT5m
b250U2l6ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6RGVmYXVsdEZpeGVkRm9udFNpemUsIDEzKTsK
KworICAgIFFGb250IGRlZmF1bHRGb250OworICAgIGRlZmF1bHRGb250LnNldFN0eWxlSGludChR
Rm9udDo6U2VyaWYpOworICAgIGQtPmZvbnRGYW1pbGllcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpT
dGFuZGFyZEZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRGYW1pbHkoKSk7CisgICAgZC0+Zm9udEZh
bWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6OlNlcmlmRm9udCwgZGVmYXVsdEZvbnQuZGVmYXVs
dEZhbWlseSgpKTsKKworICAgIGRlZmF1bHRGb250LnNldFN0eWxlSGludChRRm9udDo6RmFudGFz
eSk7CisgICAgZC0+Zm9udEZhbWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6OkZhbnRhc3lGb250
LCBkZWZhdWx0Rm9udC5kZWZhdWx0RmFtaWx5KCkpOworCisgICAgZGVmYXVsdEZvbnQuc2V0U3R5
bGVIaW50KFFGb250OjpDdXJzaXZlKTsKKyAgICBkLT5mb250RmFtaWxpZXMuaW5zZXJ0KFFXZWJT
ZXR0aW5nczo6Q3Vyc2l2ZUZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRGYW1pbHkoKSk7CisKKyAg
ICBkZWZhdWx0Rm9udC5zZXRTdHlsZUhpbnQoUUZvbnQ6OlNhbnNTZXJpZik7CisgICAgZC0+Zm9u
dEZhbWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6OlNhbnNTZXJpZkZvbnQsIGRlZmF1bHRGb250
LmRlZmF1bHRGYW1pbHkoKSk7CisKKyAgICBkZWZhdWx0Rm9udC5zZXRTdHlsZUhpbnQoUUZvbnQ6
Ok1vbm9zcGFjZSk7CisgICAgZC0+Zm9udEZhbWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6OkZp
eGVkRm9udCwgZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKKworICAgIGQtPmF0dHJpYnV0
ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6QXV0b0xvYWRJbWFnZXMsIHRydWUpOworICAgIGQtPmF0
dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6RG5zUHJlZmV0Y2hFbmFibGVkLCBmYWxzZSk7
CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5hYmxl
ZCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpTcGF0aWFs
TmF2aWdhdGlvbkVuYWJsZWQsIGZhbHNlKTsKKyAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2Vi
U2V0dGluZ3M6OkxpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4sIHRydWUpOworICAgIGQtPmF0dHJp
YnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5LCBmYWxzZSk7CisgICAgZC0+
YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpQcmludEVsZW1lbnRCYWNrZ3JvdW5kcywg
dHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpPZmZsaW5lU3Rv
cmFnZURhdGFiYXNlRW5hYmxlZCwgZmFsc2UpOworICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFX
ZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLCBmYWxzZSk7Cisg
ICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVk
LCBmYWxzZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpMb2NhbENv
bnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBmYWxzZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNl
cnQoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywgdHJ1ZSk7Cisg
ICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpXZWJHTEVuYWJsZWQsIHRydWUpOworICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0
aW5nczo6V2ViQXVkaW9FbmFibGVkLCBmYWxzZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQo
UVdlYlNldHRpbmdzOjpDU1NSZWdpb25zRW5hYmxlZCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRl
cy5pbnNlcnQoUVdlYlNldHRpbmdzOjpDU1NDb21wb3NpdGluZ0VuYWJsZWQsIHRydWUpOworICAg
IGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6Q1NTR3JpZExheW91dEVuYWJsZWQs
IGZhbHNlKTsKKyAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6Okh5cGVybGlu
a0F1ZGl0aW5nRW5hYmxlZCwgZmFsc2UpOworICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJT
ZXR0aW5nczo6VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkLCBmYWxzZSk7CisgICAgZC0+YXR0cmli
dXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBmYWxzZSk7
CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpTaXRlU3BlY2lmaWNRdWly
a3NFbmFibGVkLCB0cnVlKTsKKyAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6
OlNjcm9sbEFuaW1hdG9yRW5hYmxlZCwgZmFsc2UpOworICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0
KFFXZWJTZXR0aW5nczo6Q2FyZXRCcm93c2luZ0VuYWJsZWQsIGZhbHNlKTsKKyAgICBkLT5hdHRy
aWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6Ok5vdGlmaWNhdGlvbnNFbmFibGVkLCB0cnVlKTsK
KyAgICBkLT5vZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKKyAg
ICBkLT5kZWZhdWx0VGV4dEVuY29kaW5nID0gUUxhdGluMVN0cmluZygiaXNvLTg4NTktMSIpOwor
ICAgIGQtPnRoaXJkUGFydHlDb29raWVQb2xpY3kgPSBBbHdheXNBbGxvd1RoaXJkUGFydHlDb29r
aWVzOworfQorCisvKiEKKyAgICBcaW50ZXJuYWwKKyovCitRV2ViU2V0dGluZ3M6OlFXZWJTZXR0
aW5ncyhXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpCisgICAgOiBkKG5ldyBRV2ViU2V0dGlu
Z3NQcml2YXRlKHNldHRpbmdzKSkKK3sKKyAgICBkLT5zZXR0aW5ncyA9IHNldHRpbmdzOworICAg
IGQtPmFwcGx5KCk7CisgICAgYWxsU2V0dGluZ3MoKS0+YXBwZW5kKGQpOworfQorCisvKiEKKyAg
ICBcaW50ZXJuYWwKKyovCitRV2ViU2V0dGluZ3M6On5RV2ViU2V0dGluZ3MoKQoreworICAgIGlm
IChkLT5zZXR0aW5ncykKKyAgICAgICAgYWxsU2V0dGluZ3MoKS0+cmVtb3ZlQWxsKGQpOworCisg
ICAgZGVsZXRlIGQ7Cit9CisKKy8qIQorICAgIFNldHMgdGhlIGZvbnQgc2l6ZSBmb3IgXGEgdHlw
ZSB0byBcYSBzaXplLgorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRGb250U2l6ZShGb250U2l6
ZSB0eXBlLCBpbnQgc2l6ZSkKK3sKKyAgICBkLT5mb250U2l6ZXMuaW5zZXJ0KHR5cGUsIHNpemUp
OworICAgIGQtPmFwcGx5KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGRlZmF1bHQgZm9u
dCBzaXplIGZvciBcYSB0eXBlLgorKi8KK2ludCBRV2ViU2V0dGluZ3M6OmZvbnRTaXplKEZvbnRT
aXplIHR5cGUpIGNvbnN0Cit7CisgICAgaW50IGRlZmF1bHRWYWx1ZSA9IDA7CisgICAgaWYgKGQt
PnNldHRpbmdzKSB7CisgICAgICAgIFFXZWJTZXR0aW5nc1ByaXZhdGUqIGdsb2JhbCA9IFFXZWJT
ZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKS0+ZDsKKyAgICAgICAgZGVmYXVsdFZhbHVlID0gZ2xv
YmFsLT5mb250U2l6ZXMudmFsdWUodHlwZSk7CisgICAgfQorICAgIHJldHVybiBkLT5mb250U2l6
ZXMudmFsdWUodHlwZSwgZGVmYXVsdFZhbHVlKTsKK30KKworLyohCisgICAgUmVzZXRzIHRoZSBm
b250IHNpemUgZm9yIFxhIHR5cGUgdG8gdGhlIHNpemUgc3BlY2lmaWVkIGluIHRoZSBnbG9iYWwK
KyAgICBzZXR0aW5ncyBvYmplY3QuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qg
b24gdGhlIGdsb2JhbCBRV2ViU2V0dGluZ3MgaW5zdGFuY2UuCisqLwordm9pZCBRV2ViU2V0dGlu
Z3M6OnJlc2V0Rm9udFNpemUoRm9udFNpemUgdHlwZSkKK3sKKyAgICBpZiAoZC0+c2V0dGluZ3Mp
IHsKKyAgICAgICAgZC0+Zm9udFNpemVzLnJlbW92ZSh0eXBlKTsKKyAgICAgICAgZC0+YXBwbHko
KTsKKyAgICB9Cit9CisKKy8qIQorICAgIFNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgYSB1c2Vy
IHN0eWxlc2hlZXQgdG8gbG9hZCB3aXRoIGV2ZXJ5IHdlYiBwYWdlLgorCisgICAgVGhlIFxhIGxv
Y2F0aW9uIG11c3QgYmUgZWl0aGVyIGEgcGF0aCBvbiB0aGUgbG9jYWwgZmlsZXN5c3RlbSwgb3Ig
YSBkYXRhIFVSTAorICAgIHdpdGggVVRGLTggYW5kIEJhc2U2NCBlbmNvZGVkIGRhdGEsIHN1Y2gg
YXM6CisKKyAgICAiZGF0YTp0ZXh0L2NzcztjaGFyc2V0PXV0Zi04O2Jhc2U2NCxjQ0I3SUdKaFky
dG5jbTkxYm1RdFkyOXNiM0k2SUhKbFpDQjlPdz09IgorCisgICAgXG5vdGUgSWYgdGhlIGJhc2U2
NCBkYXRhIGlzIG5vdCB2YWxpZCwgdGhlIHN0eWxlIHdpbGwgbm90IGJlIGFwcGxpZWQuCisKKyAg
ICBcc2EgdXNlclN0eWxlU2hlZXRVcmwoKQorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRVc2Vy
U3R5bGVTaGVldFVybChjb25zdCBRVXJsJiBsb2NhdGlvbikKK3sKKyAgICBkLT51c2VyU3R5bGVT
aGVldExvY2F0aW9uID0gbG9jYXRpb247CisgICAgZC0+YXBwbHkoKTsKK30KKworLyohCisgICAg
UmV0dXJucyB0aGUgbG9jYXRpb24gb2YgdGhlIHVzZXIgc3R5bGVzaGVldC4KKworICAgIFxzYSBz
ZXRVc2VyU3R5bGVTaGVldFVybCgpCisqLworUVVybCBRV2ViU2V0dGluZ3M6OnVzZXJTdHlsZVNo
ZWV0VXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbjsK
K30KKworLyohCisgICAgXHNpbmNlIDQuNgorICAgIFNwZWNpZmllcyB0aGUgZGVmYXVsdCB0ZXh0
IGVuY29kaW5nIHN5c3RlbS4KKworICAgIFRoZSBcYSBlbmNvZGluZywgbXVzdCBiZSBhIHN0cmlu
ZyBkZXNjcmliaW5nIGFuIGVuY29kaW5nIHN1Y2ggYXMgInV0Zi04IiwKKyAgICAiaXNvLTg4NTkt
MSIsIGV0Yy4gSWYgbGVmdCBlbXB0eSBhIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkLiBGb3Ig
YSBtb3JlCisgICAgZXh0ZW5zaXZlIGxpc3Qgb2YgZW5jb2RpbmcgbmFtZXMgc2VlIFxse1FUZXh0
Q29kZWN9CisKKyAgICBcc2EgZGVmYXVsdFRleHRFbmNvZGluZygpCisqLwordm9pZCBRV2ViU2V0
dGluZ3M6OnNldERlZmF1bHRUZXh0RW5jb2RpbmcoY29uc3QgUVN0cmluZyYgZW5jb2RpbmcpCit7
CisgICAgZC0+ZGVmYXVsdFRleHRFbmNvZGluZyA9IGVuY29kaW5nOworICAgIGQtPmFwcGx5KCk7
Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYKKyAgICBSZXR1cm5zIHRoZSBkZWZhdWx0IHRleHQg
ZW5jb2RpbmcuCisKKyAgICBcc2Egc2V0RGVmYXVsdFRleHRFbmNvZGluZygpCisqLworUVN0cmlu
ZyBRV2ViU2V0dGluZ3M6OmRlZmF1bHRUZXh0RW5jb2RpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBkLT5kZWZhdWx0VGV4dEVuY29kaW5nOworfQorCisvKiEKKyAgICBTZXRzIHRoZSBwYXRoIG9m
IHRoZSBpY29uIGRhdGFiYXNlIHRvIFxhIHBhdGguIFRoZSBpY29uIGRhdGFiYXNlIGlzIHVzZWQK
KyAgICB0byBzdG9yZSAiZmF2aWNvbnMiIGFzc29jaWF0ZWQgd2l0aCB3ZWIgc2l0ZXMuCisKKyAg
ICBcYSBwYXRoIG11c3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LgorCisgICAgU2V0
dGluZyBhbiBlbXB0eSBwYXRoIGRpc2FibGVzIHRoZSBpY29uIGRhdGFiYXNlLgorCisgICAgXHNh
IGljb25EYXRhYmFzZVBhdGgoKSwgY2xlYXJJY29uRGF0YWJhc2UoKQorKi8KK3ZvaWQgUVdlYlNl
dHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFFTdHJpbmcmIHBhdGgpCit7CisgICAg
V2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworI2lmIEVOQUJMRShJQ09OREFUQUJBU0Up
CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgSWNvbkRhdGFiYXNlQ2xpZW50UXQgaXMgaW5zdGFudGlh
dGVkLgorICAgIFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudFF0OjppbnN0YW5jZSgpOworI2Vu
ZGlmCisKKyAgICBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7
CisKKyAgICBXZWJDb3JlOjpJY29uRGF0YWJhc2VCYXNlJiBkYiA9IFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpOworCisgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBkYi5zZXRFbmFi
bGVkKHRydWUpOworICAgICAgICBpZiAoZGIuaXNPcGVuKCkpCisgICAgICAgICAgICBkYi5jbG9z
ZSgpOworICAgICAgICBRRmlsZUluZm8gaW5mbyhwYXRoKTsKKyAgICAgICAgaWYgKGluZm8uaXNE
aXIoKSAmJiBpbmZvLmlzV3JpdGFibGUoKSkKKyAgICAgICAgICAgIGRiLm9wZW4ocGF0aCwgV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBkYi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgZGIuY2xvc2UoKTsK
KyAgICB9Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIHBhdGggb2YgdGhlIGljb24gZGF0YWJh
c2Ugb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBpY29uCisgICAgZGF0YWJhc2UgaXMgZGlzYWJs
ZWQuCisKKyAgICBcc2Egc2V0SWNvbkRhdGFiYXNlUGF0aCgpLCBjbGVhckljb25EYXRhYmFzZSgp
CisqLworUVN0cmluZyBRV2ViU2V0dGluZ3M6Omljb25EYXRhYmFzZVBhdGgoKQoreworICAgIFdl
YkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKKyAgICBpZiAoV2ViQ29yZTo6aWNvbkRhdGFi
YXNlKCkuaXNFbmFibGVkKCkgJiYgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuaXNPcGVuKCkpCisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5kYXRhYmFzZVBhdGgoKTsKKyAg
ICBlbHNlCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKKy8qIQorICAgIENsZWFycyB0
aGUgaWNvbiBkYXRhYmFzZS4KKyovCit2b2lkIFFXZWJTZXR0aW5nczo6Y2xlYXJJY29uRGF0YWJh
c2UoKQoreworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKKyAgICBpZiAoV2Vi
Q29yZTo6aWNvbkRhdGFiYXNlKCkuaXNFbmFibGVkKCkgJiYgV2ViQ29yZTo6aWNvbkRhdGFiYXNl
KCkuaXNPcGVuKCkpCisgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnJlbW92ZUFsbElj
b25zKCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIHdlYiBzaXRlJ3MgaWNvbiBmb3IgXGEg
dXJsLgorCisgICAgSWYgdGhlIHdlYiBzaXRlIGRvZXMgbm90IHNwZWNpZnkgYW4gaWNvbiBcYiBP
UiBpZiB0aGUgaWNvbiBpcyBub3QgaW4gdGhlCisgICAgZGF0YWJhc2UsIGEgbnVsbCBRSWNvbiBp
cyByZXR1cm5lZC4KKworICAgIFxub3RlIFRoZSByZXR1cm5lZCBpY29uJ3Mgc2l6ZSBpcyBhcmJp
dHJhcnkuCisKKyAgICBcc2Egc2V0SWNvbkRhdGFiYXNlUGF0aCgpCisqLworUUljb24gUVdlYlNl
dHRpbmdzOjppY29uRm9yVXJsKGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBXZWJDb3JlOjppbml0
aWFsaXplV2ViQ29yZVF0KCk7CisgICAgUVBpeG1hcCogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoV2ViQ29yZTo6VVJMKHVybCku
c3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkludFNp
emUoMTYsIDE2KSk7CisgICAgaWYgKCFpY29uKQorICAgICAgICByZXR1cm4gUUljb24oKTsKKwor
ICAgIHJldHVybiogaWNvbjsKK30KKworLyoKKyAgICBSZXR1cm5zIHRoZSBwbHVnaW4gZGF0YWJh
c2Ugb2JqZWN0LgorCitRV2ViUGx1Z2luRGF0YWJhc2UgKlFXZWJTZXR0aW5nczo6cGx1Z2luRGF0
YWJhc2UoKQoreworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKKyAgICBzdGF0
aWMgUVdlYlBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9IDA7CisgICAgaWYgKCFkYXRhYmFzZSkK
KyAgICAgICAgZGF0YWJhc2UgPSBuZXcgUVdlYlBsdWdpbkRhdGFiYXNlKCk7CisgICAgcmV0dXJu
IGRhdGFiYXNlOworfQorKi8KKworc3RhdGljIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZUZvcldl
YkdyYXBoaWMoUVdlYlNldHRpbmdzOjpXZWJHcmFwaGljIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBRV2ViU2V0dGluZ3M6Ok1pc3NpbmdJbWFnZUdyYXBoaWM6IHJldHVy
biAibWlzc2luZ0ltYWdlIjsKKyAgICBjYXNlIFFXZWJTZXR0aW5nczo6TWlzc2luZ1BsdWdpbkdy
YXBoaWM6IHJldHVybiAibnVsbFBsdWdpbiI7CisgICAgY2FzZSBRV2ViU2V0dGluZ3M6OkRlZmF1
bHRGcmFtZUljb25HcmFwaGljOiByZXR1cm4gInVybEljb24iOworICAgIGNhc2UgUVdlYlNldHRp
bmdzOjpUZXh0QXJlYVNpemVHcmlwQ29ybmVyR3JhcGhpYzogcmV0dXJuICJ0ZXh0QXJlYVJlc2l6
ZUNvcm5lciI7CisgICAgY2FzZSBRV2ViU2V0dGluZ3M6OkRlbGV0ZUJ1dHRvbkdyYXBoaWM6IHJl
dHVybiAiZGVsZXRlQnV0dG9uIjsKKyAgICBjYXNlIFFXZWJTZXR0aW5nczo6SW5wdXRTcGVlY2hC
dXR0b25HcmFwaGljOiByZXR1cm4gImlucHV0U3BlZWNoIjsKKyAgICBjYXNlIFFXZWJTZXR0aW5n
czo6U2VhcmNoQ2FuY2VsQnV0dG9uR3JhcGhpYzogcmV0dXJuICJzZWFyY2hDYW5jZWxCdXR0b24i
OworICAgIGNhc2UgUVdlYlNldHRpbmdzOjpTZWFyY2hDYW5jZWxCdXR0b25QcmVzc2VkR3JhcGhp
YzogcmV0dXJuICJzZWFyY2hDYW5jZWxCdXR0b25QcmVzc2VkIjsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKKy8qIQorICAgIFNldHMgXGEgZ3JhcGhpYyB0byBiZSBkcmF3biB3aGVuIFF0IFdl
YktpdCBuZWVkcyB0byBkcmF3IGFuIGltYWdlIG9mIHRoZQorICAgIGdpdmVuIFxhIHR5cGUuCisK
KyAgICBGb3IgZXhhbXBsZSwgd2hlbiBhbiBpbWFnZSBjYW5ub3QgYmUgbG9hZGVkLCB0aGUgcGl4
bWFwIHNwZWNpZmllZCBieQorICAgIFxse1FXZWJTZXR0aW5nczo6V2ViR3JhcGhpY317TWlzc2lu
Z0ltYWdlR3JhcGhpY30gaXMgZHJhd24gaW5zdGVhZC4KKworICAgIFxzYSB3ZWJHcmFwaGljKCkK
KyovCit2b2lkIFFXZWJTZXR0aW5nczo6c2V0V2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUsIGNv
bnN0IFFQaXhtYXAmIGdyYXBoaWMpCit7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVR
dCgpOworICAgIFdlYkNvcmU6OkltYWdlOjpzZXRQbGF0Zm9ybVJlc291cmNlKHJlc291cmNlTmFt
ZUZvcldlYkdyYXBoaWModHlwZSksIGdyYXBoaWMpOworfQorCisvKiEKKyAgICBSZXR1cm5zIGEg
cHJldmlvdXNseSBzZXQgcGl4bWFwIHVzZWQgdG8gZHJhdyByZXBsYWNlbWVudCBncmFwaGljcyBv
ZiB0aGUKKyAgICBzcGVjaWZpZWQgXGEgdHlwZS4KKworICAgIFxzYSBzZXRXZWJHcmFwaGljKCkK
KyovCitRUGl4bWFwIFFXZWJTZXR0aW5nczo6d2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUpCit7
CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZT4gaW1nID0gV2ViQ29yZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHJlc291
cmNlTmFtZUZvcldlYkdyYXBoaWModHlwZSkpOworICAgIGlmICghaW1nKQorICAgICAgICByZXR1
cm4gUVBpeG1hcCgpOworICAgIFFQaXhtYXAqIHBpeG1hcCA9IGltZy0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIXBpeG1hcCkKKyAgICAgICAgcmV0dXJuIFFQaXhtYXAo
KTsKKyAgICByZXR1cm4gKnBpeG1hcDsKK30KKworLyohCisgICAgRnJlZXMgdXAgYXMgbXVjaCBt
ZW1vcnkgYXMgcG9zc2libGUgYnkgY2FsbGluZyB0aGUgSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxl
Y3RvciBhbmQgY2xlYW5pbmcgYWxsIG1lbW9yeSBjYWNoZXMgc3VjaAorICAgIGFzIHBhZ2UsIG9i
amVjdCBhbmQgZm9udCBjYWNoZS4KKworICAgIFxzaW5jZSA0LjYKKyAqLwordm9pZCBRV2ViU2V0
dGluZ3M6OmNsZWFyTWVtb3J5Q2FjaGVzKCkKK3sKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2Vi
Q29yZVF0KCk7CisgICAgLy8gVHVybiB0aGUgY2FjaGUgb24gYW5kIG9mZi4gIERpc2FibGluZyB0
aGUgb2JqZWN0IGNhY2hlIHdpbGwgcmVtb3ZlIGFsbAorICAgIC8vIHJlc291cmNlcyBmcm9tIHRo
ZSBjYWNoZS4gIFRoZXkgbWF5IHN0aWxsIGxpdmUgb24gaWYgdGhleSBhcmUgcmVmZXJlbmNlZAor
ICAgIC8vIGJ5IHNvbWUgV2ViIHBhZ2UgdGhvdWdoLgorICAgIGlmICghV2ViQ29yZTo6bWVtb3J5
Q2FjaGUoKS0+ZGlzYWJsZWQoKSkgeworICAgICAgICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5z
ZXREaXNhYmxlZCh0cnVlKTsKKyAgICAgICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS0+c2V0RGlz
YWJsZWQoZmFsc2UpOworICAgIH0KKworICAgIGludCBwYWdlQ2FwYWNpdHkgPSBXZWJDb3JlOjpw
YWdlQ2FjaGUoKS0+Y2FwYWNpdHkoKTsKKyAgICAvLyBTZXR0aW5nIHNpemUgdG8gMCwgbWFrZXMg
YWxsIHBhZ2VzIGJlIHJlbGVhc2VkLgorICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5zZXRDYXBh
Y2l0eSgwKTsKKyAgICBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkocGFnZUNhcGFj
aXR5KTsKKworICAgIC8vIEludmFsaWRhdGluZyB0aGUgZm9udCBjYWNoZSBhbmQgZnJlZWluZyBh
bGwgaW5hY3RpdmUgZm9udCBkYXRhLgorICAgIFdlYkNvcmU6OmZvbnRDYWNoZSgpLT5pbnZhbGlk
YXRlKCk7CisKKyAgICAvLyBFbXB0eSB0aGUgQ3Jvc3MtT3JpZ2luIFByZWZsaWdodCBjYWNoZQor
ICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpLmVt
cHR5KCk7CisKKyAgICAvLyBEcm9wIEpJVCBjb21waWxlZCBjb2RlIGZyb20gRXhlY3V0YWJsZUFs
bG9jYXRvci4KKyAgICBXZWJDb3JlOjpnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29tcGlsZWRD
b2RlKCk7CisgICAgLy8gR2FyYmFnZSBDb2xsZWN0IHRvIHJlbGVhc2UgdGhlIHJlZmVyZW5jZXMg
b2YgQ2FjaGVkUmVzb3VyY2UgZnJvbSBkZWFkIG9iamVjdHMuCisgICAgV2ViQ29yZTo6Z2NDb250
cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKKworICAgIC8vIEZhc3RNYWxsb2MgaGFzIGxv
Y2stZnJlZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJlZCBm
cm9tIHRoZSB0aHJlYWQgaXRzZWxmLgorICAgIFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OnJlbGVh
c2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworI2lmIEVOQUJMRShXT1JLRVJT
KQorICAgIFdlYkNvcmU6OldvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5
SW5BbGxUaHJlYWRzKCk7CisjZW5kaWYKKyAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeSgpOyAgICAgICAgCit9CisKKy8qIQorICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9m
IHBhZ2VzIHRvIGhvbGQgaW4gdGhlIG1lbW9yeSBwYWdlIGNhY2hlIHRvIFxhIHBhZ2VzLgorCisg
ICAgVGhlIFBhZ2UgQ2FjaGUgYWxsb3dzIGZvciBhIG5pY2VyIHVzZXIgZXhwZXJpZW5jZSB3aGVu
IG5hdmlnYXRpbmcgZm9ydGggb3IgYmFjaworICAgIHRvIHBhZ2VzIGluIHRoZSBmb3J3YXJkL2Jh
Y2sgaGlzdG9yeSwgYnkgcGF1c2luZyBhbmQgcmVzdW1pbmcgdXAgdG8gXGEgcGFnZXMuCisKKyAg
ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmVhdHVyZSwgcGxlYXNlIHJlZmVyIHRv
OgorCisgICAgaHR0cDovL3dlYmtpdC5vcmcvYmxvZy80Mjcvd2Via2l0LXBhZ2UtY2FjaGUtaS10
aGUtYmFzaWNzLworKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hl
KGludCBwYWdlcykKK3sKKyAgICBRV2ViU2V0dGluZ3NQcml2YXRlKiBnbG9iYWwgPSBRV2ViU2V0
dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPmQ7CisgICAgV2ViQ29yZTo6cGFnZUNhY2hlKCktPnNl
dENhcGFjaXR5KHFNYXgoMCwgcGFnZXMpKTsKKyAgICBnbG9iYWwtPmFwcGx5KCk7Cit9CisKKy8q
IQorICAgIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdlYiBwYWdlcyB0aGF0IGFyZSBr
ZXB0IGluIHRoZSBtZW1vcnkgY2FjaGUuCisqLworaW50IFFXZWJTZXR0aW5nczo6bWF4aW11bVBh
Z2VzSW5DYWNoZSgpCit7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworICAg
IHJldHVybiBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+Y2FwYWNpdHkoKTsKK30KKworLyohCisgICBT
cGVjaWZpZXMgdGhlIGNhcGFjaXRpZXMgZm9yIHRoZSBtZW1vcnkgY2FjaGUgZm9yIGRlYWQgb2Jq
ZWN0cyBzdWNoIGFzCisgICBzdHlsZXNoZWV0cyBvciBzY3JpcHRzLgorCisgICBUaGUgXGEgY2Fj
aGVNaW5EZWFkQ2FwYWNpdHkgc3BlY2lmaWVzIHRoZSBcZSBtaW5pbXVtIG51bWJlciBvZiBieXRl
cyB0aGF0CisgICBkZWFkIG9iamVjdHMgc2hvdWxkIGNvbnN1bWUgd2hlbiB0aGUgY2FjaGUgaXMg
dW5kZXIgcHJlc3N1cmUuCisKKyAgIFxhIGNhY2hlTWF4RGVhZCBpcyB0aGUgXGUgbWF4aW11bSBu
dW1iZXIgb2YgYnl0ZXMgdGhhdCBkZWFkIG9iamVjdHMgc2hvdWxkCisgICBjb25zdW1lIHdoZW4g
dGhlIGNhY2hlIGlzIFxiIG5vdCB1bmRlciBwcmVzc3VyZS4KKworICAgXGEgdG90YWxDYXBhY2l0
eSBzcGVjaWZpZXMgdGhlIFxlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgdGhlIGNhY2hl
CisgICBzaG91bGQgY29uc3VtZSBcYiBvdmVyYWxsLgorCisgICBUaGUgY2FjaGUgaXMgZW5hYmxl
ZCBieSBkZWZhdWx0LiBDYWxsaW5nIHNldE9iamVjdENhY2hlQ2FwYWNpdGllcygwLCAwLCAwKQor
ICAgd2lsbCBkaXNhYmxlIHRoZSBjYWNoZS4gQ2FsbGluZyBpdCB3aXRoIG9uZSBub24temVybyBl
bmFibGVzIGl0IGFnYWluLgorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRPYmplY3RDYWNoZUNh
cGFjaXRpZXMoaW50IGNhY2hlTWluRGVhZENhcGFjaXR5LCBpbnQgY2FjaGVNYXhEZWFkLCBpbnQg
dG90YWxDYXBhY2l0eSkKK3sKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7Cisg
ICAgYm9vbCBkaXNhYmxlQ2FjaGUgPSAhY2FjaGVNaW5EZWFkQ2FwYWNpdHkgJiYgIWNhY2hlTWF4
RGVhZCAmJiAhdG90YWxDYXBhY2l0eTsKKyAgICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5zZXRE
aXNhYmxlZChkaXNhYmxlQ2FjaGUpOworCisgICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS0+c2V0
Q2FwYWNpdGllcyhxTWF4KDAsIGNhY2hlTWluRGVhZENhcGFjaXR5KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHFNYXgoMCwgY2FjaGVNYXhEZWFkKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHFNYXgoMCwgdG90YWxDYXBhY2l0eSkpOworICAgIFdl
YkNvcmU6Om1lbW9yeUNhY2hlKCktPnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwo
ZGlzYWJsZUNhY2hlID8gMCA6IDYwKTsKK30KKworLyohCisgICAgU2V0cyB0aGUgdGhpcmQtcGFy
dHkgY29va2llIHBvbGljeSwgdGhlIGRlZmF1bHQgaXMgQWx3YXlzQWxsb3dUaGlyZFBhcnR5Q29v
a2llcy4KKyovCit2b2lkIFFXZWJTZXR0aW5nczo6c2V0VGhpcmRQYXJ0eUNvb2tpZVBvbGljeShU
aGlyZFBhcnR5Q29va2llUG9saWN5IHBvbGljeSkKK3sKKyAgICBkLT50aGlyZFBhcnR5Q29va2ll
UG9saWN5ID0gcG9saWN5OworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSB0aGlyZC1wYXJ0eSBj
b29raWUgcG9saWN5LgorKi8KK1FXZWJTZXR0aW5nczo6VGhpcmRQYXJ0eUNvb2tpZVBvbGljeSBR
V2ViU2V0dGluZ3M6OnRoaXJkUGFydHlDb29raWVQb2xpY3koKSBjb25zdAoreworICAgIHJldHVy
biBkLT50aGlyZFBhcnR5Q29va2llUG9saWN5OworfQorCisvKiEKKyAgICBTZXRzIHRoZSBDU1Mg
bWVkaWEgdHlwZSB0byBcYSB0eXBlLgorICAgIAorICAgIFNldHRpbmcgdGhpcyB3aWxsIG92ZXJy
aWRlIHRoZSBub3JtYWwgdmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4KKyAgICAKKyAg
ICBcbm90ZSBTZXR0aW5nIHRoZSB2YWx1ZSB0byBudWxsIFFTdHJpbmcgd2lsbCByZXN0b3JlIHRo
ZSBkZWZhdWx0IHZhbHVlLgorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRDU1NNZWRpYVR5cGUo
Y29uc3QgUVN0cmluZyYgdHlwZSkKK3sKKyAgICBkLT5tZWRpYVR5cGUgPSB0eXBlOworICAgIGQt
PmFwcGx5KCk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGN1cnJlbnQgQ1NTIG1lZGlhIHR5
cGUuCisgICAgCisgICAgXG5vdGUgSXQgd2lsbCBvbmx5IHJldHVybiB0aGUgdmFsdWUgc2V0IHRo
cm91Z2ggc2V0Q1NTTWVkaWFUeXBlIGFuZCBub3QgdGhlIG9uZSB1c2VkIGludGVybmFsbHkuCisq
LworUVN0cmluZyBRV2ViU2V0dGluZ3M6OmNzc01lZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGQtPm1lZGlhVHlwZTsKK30KKworLyohCisgICAgU2V0cyB0aGUgYWN0dWFsIGZvbnQgZmFt
aWx5IHRvIFxhIGZhbWlseSBmb3IgdGhlIHNwZWNpZmllZCBnZW5lcmljIGZhbWlseSwKKyAgICBc
YSB3aGljaC4KKyovCit2b2lkIFFXZWJTZXR0aW5nczo6c2V0Rm9udEZhbWlseShGb250RmFtaWx5
IHdoaWNoLCBjb25zdCBRU3RyaW5nJiBmYW1pbHkpCit7CisgICAgZC0+Zm9udEZhbWlsaWVzLmlu
c2VydCh3aGljaCwgZmFtaWx5KTsKKyAgICBkLT5hcHBseSgpOworfQorCisvKiEKKyAgICBSZXR1
cm5zIHRoZSBhY3R1YWwgZm9udCBmYW1pbHkgZm9yIHRoZSBzcGVjaWZpZWQgZ2VuZXJpYyBmb250
IGZhbWlseSwKKyAgICBcYSB3aGljaC4KKyovCitRU3RyaW5nIFFXZWJTZXR0aW5nczo6Zm9udEZh
bWlseShGb250RmFtaWx5IHdoaWNoKSBjb25zdAoreworICAgIFFTdHJpbmcgZGVmYXVsdFZhbHVl
OworICAgIGlmIChkLT5zZXR0aW5ncykgeworICAgICAgICBRV2ViU2V0dGluZ3NQcml2YXRlKiBn
bG9iYWwgPSBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPmQ7CisgICAgICAgIGRlZmF1
bHRWYWx1ZSA9IGdsb2JhbC0+Zm9udEZhbWlsaWVzLnZhbHVlKHdoaWNoKTsKKyAgICB9CisgICAg
cmV0dXJuIGQtPmZvbnRGYW1pbGllcy52YWx1ZSh3aGljaCwgZGVmYXVsdFZhbHVlKTsKK30KKwor
LyohCisgICAgUmVzZXRzIHRoZSBhY3R1YWwgZm9udCBmYW1pbHkgc3BlY2lmaWVkIGJ5IFxhIHdo
aWNoIHRvIHRoZSBvbmUgc2V0CisgICAgaW4gdGhlIGdsb2JhbCBRV2ViU2V0dGluZ3MgaW5zdGFu
Y2UuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIGdsb2JhbCBRV2Vi
U2V0dGluZ3MgaW5zdGFuY2UuCisqLwordm9pZCBRV2ViU2V0dGluZ3M6OnJlc2V0Rm9udEZhbWls
eShGb250RmFtaWx5IHdoaWNoKQoreworICAgIGlmIChkLT5zZXR0aW5ncykgeworICAgICAgICBk
LT5mb250RmFtaWxpZXMucmVtb3ZlKHdoaWNoKTsKKyAgICAgICAgZC0+YXBwbHkoKTsKKyAgICB9
Cit9CisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJTZXR0aW5nczo6c2V0QXR0cmlidXRlKFdlYkF0
dHJpYnV0ZSBhdHRyaWJ1dGUsIGJvb2wgb24pCisKKyAgICBFbmFibGVzIG9yIGRpc2FibGVzIHRo
ZSBzcGVjaWZpZWQgXGEgYXR0cmlidXRlIGZlYXR1cmUgZGVwZW5kaW5nIG9uIHRoZQorICAgIHZh
bHVlIG9mIFxhIG9uLgorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRBdHRyaWJ1dGUoV2ViQXR0
cmlidXRlIGF0dHIsIGJvb2wgb24pCit7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoYXR0ciwg
b24pOworICAgIGQtPmFwcGx5KCk7Cit9CisKKy8qIQorICAgIFxmbiBib29sIFFXZWJTZXR0aW5n
czo6dGVzdEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUgYXR0cmlidXRlKSBjb25zdAorCisgICAgUmV0
dXJucyB0cnVlIGlmIFxhIGF0dHJpYnV0ZSBpcyBlbmFibGVkOyBvdGhlcndpc2UgcmV0dXJucyBm
YWxzZS4KKyovCitib29sIFFXZWJTZXR0aW5nczo6dGVzdEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUg
YXR0cikgY29uc3QKK3sKKyAgICBib29sIGRlZmF1bHRWYWx1ZSA9IGZhbHNlOworICAgIGlmIChk
LT5zZXR0aW5ncykgeworICAgICAgICBRV2ViU2V0dGluZ3NQcml2YXRlKiBnbG9iYWwgPSBRV2Vi
U2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPmQ7CisgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGds
b2JhbC0+YXR0cmlidXRlcy52YWx1ZShhdHRyKTsKKyAgICB9CisgICAgcmV0dXJuIGQtPmF0dHJp
YnV0ZXMudmFsdWUoYXR0ciwgZGVmYXVsdFZhbHVlKTsKK30KKworLyohCisgICAgXGZuIHZvaWQg
UVdlYlNldHRpbmdzOjpyZXNldEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUgYXR0cmlidXRlKQorCisg
ICAgUmVzZXRzIHRoZSBzZXR0aW5nIG9mIFxhIGF0dHJpYnV0ZSB0byB0aGUgdmFsdWUgc3BlY2lm
aWVkIGluIHRoZQorICAgIGdsb2JhbCBRV2ViU2V0dGluZ3MgaW5zdGFuY2UuCisKKyAgICBUaGlz
IGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIGdsb2JhbCBRV2ViU2V0dGluZ3MgaW5zdGFu
Y2UuCisKKyAgICBcc2EgZ2xvYmFsU2V0dGluZ3MoKQorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpy
ZXNldEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUgYXR0cikKK3sKKyAgICBpZiAoZC0+c2V0dGluZ3Mp
IHsKKyAgICAgICAgZC0+YXR0cmlidXRlcy5yZW1vdmUoYXR0cik7CisgICAgICAgIGQtPmFwcGx5
KCk7CisgICAgfQorfQorCisvKiEKKyAgICBcc2luY2UgNC41CisKKyAgICBTZXRzIFxhIHBhdGgg
YXMgdGhlIHNhdmUgbG9jYXRpb24gZm9yIEhUTUw1IGNsaWVudC1zaWRlIGRhdGFiYXNlIHN0b3Jh
Z2UgZGF0YS4KKworICAgIFxhIHBhdGggbXVzdCBwb2ludCB0byBhbiBleGlzdGluZyBkaXJlY3Rv
cnkuCisKKyAgICBTZXR0aW5nIGFuIGVtcHR5IHBhdGggZGlzYWJsZXMgdGhlIGZlYXR1cmUuCisK
KyAgICBTdXBwb3J0IGZvciBjbGllbnQtc2lkZSBkYXRhYmFzZXMgY2FuIGVuYWJsZWQgYnkgc2V0
dGluZyB0aGUKKyAgICBcbHtRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFi
bGVkfXtPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZH0gYXR0cmlidXRlLgorCisgICAgXHNh
IG9mZmxpbmVTdG9yYWdlUGF0aCgpCisqLwordm9pZCBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVT
dG9yYWdlUGF0aChjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFdlYkNvcmU6OmluaXRpYWxp
emVXZWJDb3JlUXQoKTsKKyNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIFdlYkNvcmU6OkRh
dGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsK
KyNlbmRpZgorfQorCisvKiEKKyAgICBcc2luY2UgNC41CisKKyAgICBSZXR1cm5zIHRoZSBwYXRo
IG9mIHRoZSBIVE1MNSBjbGllbnQtc2lkZSBkYXRhYmFzZSBzdG9yYWdlIG9yIGFuIGVtcHR5IHN0
cmluZyBpZiB0aGUKKyAgICBmZWF0dXJlIGlzIGRpc2FibGVkLgorCisgICAgXHNhIHNldE9mZmxp
bmVTdG9yYWdlUGF0aCgpCisqLworUVN0cmluZyBRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdl
UGF0aCgpCit7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCisgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworI2Vsc2UKKyAgICByZXR1cm4gUVN0cmlu
ZygpOworI2VuZGlmCit9CisKKy8qIQorICAgIFxzaW5jZSA0LjUKKworICAgIFNldHMgdGhlIHZh
bHVlIG9mIHRoZSBkZWZhdWx0IHF1b3RhIGZvciBuZXcgb2ZmbGluZSBzdG9yYWdlIGRhdGFiYXNl
cworICAgIHRvIFxhIG1heGltdW1TaXplLgorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZs
aW5lU3RvcmFnZURlZmF1bHRRdW90YShxaW50NjQgbWF4aW11bVNpemUpCit7CisgICAgUVdlYlNl
dHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT5kLT5vZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSA9
IG1heGltdW1TaXplOworfQorCisvKiEKKyAgICBcc2luY2UgNC41CisKKyAgICBSZXR1cm5zIHRo
ZSB2YWx1ZSBvZiB0aGUgZGVmYXVsdCBxdW90YSBmb3IgbmV3IG9mZmxpbmUgc3RvcmFnZSBkYXRh
YmFzZXMuCisqLworcWludDY0IFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVv
dGEoKQoreworICAgIHJldHVybiBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPmQtPm9m
ZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhOworfQorCisvKiEKKyAgICBcc2luY2UgNC42CisKKyAg
ICBTZXRzIHRoZSBwYXRoIGZvciBIVE1MNSBvZmZsaW5lIHdlYiBhcHBsaWNhdGlvbiBjYWNoZSBz
dG9yYWdlIHRvIFxhIHBhdGguCisKKyAgICBBbiBhcHBsaWNhdGlvbiBjYWNoZSBhY3RzIGxpa2Ug
YW4gSFRUUCBjYWNoZSBpbiBzb21lIHNlbnNlLiBGb3IgZG9jdW1lbnRzCisgICAgdGhhdCB1c2Ug
dGhlIGFwcGxpY2F0aW9uIGNhY2hlIHZpYSBKYXZhU2NyaXB0LCB0aGUgbG9hZGVyIGVuZ2luZSB3
aWxsCisgICAgZmlyc3QgYXNrIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBmb3IgdGhlIGNvbnRlbnRz
LCBiZWZvcmUgaGl0dGluZyB0aGUKKyAgICBuZXR3b3JrLgorCisgICAgVGhlIGZlYXR1cmUgaXMg
ZGVzY3JpYmVkIGluIGRldGFpbHMgYXQ6CisgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3Bl
Yy9PdmVydmlldy5odG1sI2FwcGNhY2hlCisKKyAgICBcYSBwYXRoIG11c3QgcG9pbnQgdG8gYW4g
ZXhpc3RpbmcgZGlyZWN0b3J5LgorCisgICAgU2V0dGluZyBhbiBlbXB0eSBwYXRoIGRpc2FibGVz
IHRoZSBmZWF0dXJlLgorCisgICAgU3VwcG9ydCBmb3Igb2ZmbGluZSB3ZWIgYXBwbGljYXRpb24g
Y2FjaGUgc3RvcmFnZSBjYW4gZW5hYmxlZCBieSBzZXR0aW5nIHRoZQorICAgIFxse1FXZWJTZXR0
aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkfXtPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWR9IGF0dHJpYnV0ZS4KKworICAgIFxzYSBvZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZVBhdGgoKQorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKK3sKKyAgICBXZWJDb3JlOjpp
bml0aWFsaXplV2ViQ29yZVF0KCk7CisgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuc2V0Q2Fj
aGVEaXJlY3RvcnkocGF0aCk7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYKKworICAgIFJldHVy
bnMgdGhlIHBhdGggb2YgdGhlIEhUTUw1IG9mZmxpbmUgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIHN0
b3JhZ2UKKyAgICBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQu
CisKKyAgICBcc2Egc2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKKyovCitRU3Ry
aW5nIFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKK3sKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNh
Y2hlU3RvcmFnZSgpLmNhY2hlRGlyZWN0b3J5KCk7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYK
KworICAgIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBxdW90YSBmb3IgdGhlIG9mZmxpbmUgd2ViIGFw
cGxpY2F0aW9uIGNhY2hlCisgICAgdG8gXGEgbWF4aW11bVNpemUuCisqLwordm9pZCBRV2ViU2V0
dGluZ3M6OnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEocWludDY0IG1heGltdW1T
aXplKQoreworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKKyAgICBXZWJDb3Jl
OjpjYWNoZVN0b3JhZ2UoKS5lbXB0eSgpOworICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnZh
Y3V1bURhdGFiYXNlRmlsZSgpOworICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnNldE1heGlt
dW1TaXplKG1heGltdW1TaXplKTsKK30KKworLyohCisgICAgXHNpbmNlIDQuNgorCisgICAgUmV0
dXJucyB0aGUgdmFsdWUgb2YgdGhlIHF1b3RhIGZvciB0aGUgb2ZmbGluZSB3ZWIgYXBwbGljYXRp
b24gY2FjaGUuCisqLworcWludDY0IFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVRdW90YSgpCit7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworICAg
IHJldHVybiBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5tYXhpbXVtU2l6ZSgpOworfQorCisvKiEK
KyAgICBcc2luY2UgNC42CisKKyAgICBTZXRzIHRoZSBwYXRoIGZvciBIVE1MNSBsb2NhbCBzdG9y
YWdlIHRvIFxhIHBhdGguCisgICAgCisgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gSFRNTDUg
bG9jYWwgc3RvcmFnZSBzZWUgdGhlCisgICAgXGx7aHR0cDovL3d3dy53My5vcmcvVFIvd2Vic3Rv
cmFnZS8jdGhlLWxvY2Fsc3RvcmFnZS1hdHRyaWJ1dGV9e1dlYiBTdG9yYWdlIHN0YW5kYXJkfS4K
KyAgICAKKyAgICBTdXBwb3J0IGZvciBsb2NhbCBzdG9yYWdlIGNhbiBlbmFibGVkIGJ5IHNldHRp
bmcgdGhlCisgICAgXGx7UVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkfXtMb2NhbFN0
b3JhZ2VFbmFibGVkfSBhdHRyaWJ1dGUuICAgICAKKworICAgIFxzYSBsb2NhbFN0b3JhZ2VQYXRo
KCkKKyovCit2b2lkIFFXZWJTZXR0aW5nczo6c2V0TG9jYWxTdG9yYWdlUGF0aChjb25zdCBRU3Ry
aW5nJiBwYXRoKQoreworICAgIGQtPmxvY2FsU3RvcmFnZVBhdGggPSBwYXRoOworICAgIGQtPmFw
cGx5KCk7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYKKworICAgIFJldHVybnMgdGhlIHBhdGgg
Zm9yIEhUTUw1IGxvY2FsIHN0b3JhZ2UuCisgICAgCisgICAgXHNhIHNldExvY2FsU3RvcmFnZVBh
dGgoKQorKi8KK1FTdHJpbmcgUVdlYlNldHRpbmdzOjpsb2NhbFN0b3JhZ2VQYXRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZC0+bG9jYWxTdG9yYWdlUGF0aDsKK30KKworLyohCisgICAgXHNpbmNl
IDQuNgorCisgICAgRW5hYmxlcyBXZWJLaXQgZGF0YSBwZXJzaXN0ZW5jZSBhbmQgc2V0cyB0aGUg
cGF0aCB0byBcYSBwYXRoLgorICAgIElmIFxhIHBhdGggaXMgZW1wdHksIHRoZSB1c2VyLXNwZWNp
ZmljIGRhdGEgbG9jYXRpb24gc3BlY2lmaWVkIGJ5CisgICAgXGx7UURlc2t0b3BTZXJ2aWNlczo6
RGF0YUxvY2F0aW9ufXtEYXRhTG9jYXRpb259IHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorCisgICAg
VGhpcyBtZXRob2Qgd2lsbCBzaW11bHRhbmVvdXNseSBzZXQgYW5kIGVuYWJsZSB0aGUgaWNvbkRh
dGFiYXNlUGF0aCgpLAorICAgIGxvY2FsU3RvcmFnZVBhdGgoKSwgb2ZmbGluZVN0b3JhZ2VQYXRo
KCkgYW5kIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUGF0aCgpLgorCisgICAgXHNhIGxvY2Fs
U3RvcmFnZVBhdGgoKQorKi8KK3ZvaWQgUVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3Rv
cmFnZShjb25zdCBRU3RyaW5nJiBwYXRoKQoreworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJD
b3JlUXQoKTsKKyNpZm5kZWYgUVRfTk9fREVTS1RPUFNFUlZJQ0VTCisgICAgUVN0cmluZyBzdG9y
YWdlUGF0aDsKKworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworCisgICAgICAgIHN0b3JhZ2VQ
YXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OkRh
dGFMb2NhdGlvbik7CisgICAgICAgIGlmIChzdG9yYWdlUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBzdG9yYWdlUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChRRGly
Ojpob21lUGF0aCgpLCBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHN0b3JhZ2VQYXRoID0gcGF0aDsKKworICAgIFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCk7CisKKyAgICBRV2ViU2V0dGluZ3M6OnNldEljb25E
YXRhYmFzZVBhdGgoc3RvcmFnZVBhdGgpOworICAgIFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVQYXRoKHN0b3JhZ2VQYXRoKTsKKyAgICBRV2ViU2V0dGluZ3M6OnNl
dE9mZmxpbmVTdG9yYWdlUGF0aChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZVBhdGgsICJEYXRhYmFzZXMiKSk7CisgICAgUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5n
cygpLT5zZXRMb2NhbFN0b3JhZ2VQYXRoKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChzdG9yYWdlUGF0aCwgIkxvY2FsU3RvcmFnZSIpKTsKKyAgICBRV2ViU2V0dGluZ3M6Omdsb2Jh
bFNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJs
ZWQsIHRydWUpOworICAgIFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKS0+c2V0QXR0cmli
dXRlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsIHRydWUpOwor
ICAgIFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLCB0cnVlKTsKKworI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCisgICAgLy8gQWxsIGFwcGxpY2F0
aW9ucyBjYW4gc2hhcmUgdGhlIGNvbW1vbiBRdFdlYmtpdCBjYWNoZSBmaWxlKHMpLgorICAgIC8v
IFBhdGggaXMgbm90IGNvbmZpZ3VyYWJsZSBhbmQgdXNlcyBRRGVza3RvcFNlcnZpY2VzOjpDYWNo
ZUxvY2F0aW9uIGJ5IGRlZmF1bHQuCisgICAgUVN0cmluZyBjYWNoZVBhdGggPSBRU3RhbmRhcmRQ
YXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6Q2FjaGVMb2NhdGlvbik7Cisg
ICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlUGF0aCk7CisKKyAgICBRRmlsZUlu
Zm8gaW5mbyhjYWNoZVBhdGgpOworICAgIGlmIChpbmZvLmlzRGlyKCkgJiYgaW5mby5pc1dyaXRh
YmxlKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnNldFBlcnNpc3RlbnRN
ZXRhZGF0YUNhY2hlRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgV2ViQ29yZTo6UGx1Z2luRGF0YWJh
c2U6OnNldFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aChjYWNoZVBhdGgpOworICAgIH0KKyNl
bmRpZgorI2VuZGlmCit9CisKKy8qIQorICAgIFxmbiBRV2ViU2V0dGluZ3NQcml2YXRlKiBRV2Vi
U2V0dGluZ3M6OmhhbmRsZSgpIGNvbnN0CisgICAgXGludGVybmFsCisqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWZm
OTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmgKQEAgLTAsMCArMSwxODYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUVdFQlNF
VFRJTkdTX0gKKyNkZWZpbmUgUVdFQlNFVFRJTkdTX0gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKKworI2luY2x1ZGUgPFF0Q29yZS9xc3RyaW5nLmg+CisjaW5jbHVkZSA8UXRHdWkvcXBp
eG1hcC5oPgorI2luY2x1ZGUgPFF0R3VpL3FpY29uLmg+CisjaW5jbHVkZSA8UXRDb3JlL3FzaGFy
ZWRkYXRhLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBTZXR0aW5nczsKK30K
KworY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViUGx1Z2luRGF0YWJhc2U7CitjbGFzcyBRV2Vi
U2V0dGluZ3NQcml2YXRlOworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRVXJsOworUVRfRU5E
X05BTUVTUEFDRQorCitRV0VCS0lUX0VYUE9SVCB2b2lkIHF0X25ldHdvcmtBY2Nlc3NBbGxvd2Vk
KGJvb2wgaXNBbGxvd2VkKTsKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlNldHRpbmdzIHsK
K3B1YmxpYzoKKyAgICBlbnVtIEZvbnRGYW1pbHkgeworICAgICAgICBTdGFuZGFyZEZvbnQsCisg
ICAgICAgIEZpeGVkRm9udCwKKyAgICAgICAgU2VyaWZGb250LAorICAgICAgICBTYW5zU2VyaWZG
b250LAorICAgICAgICBDdXJzaXZlRm9udCwKKyAgICAgICAgRmFudGFzeUZvbnQKKyAgICB9Owor
ICAgIGVudW0gV2ViQXR0cmlidXRlIHsKKyAgICAgICAgQXV0b0xvYWRJbWFnZXMsCisgICAgICAg
IEphdmFzY3JpcHRFbmFibGVkLAorICAgICAgICBKYXZhRW5hYmxlZCwKKyAgICAgICAgUGx1Z2lu
c0VuYWJsZWQsCisgICAgICAgIFByaXZhdGVCcm93c2luZ0VuYWJsZWQsCisgICAgICAgIEphdmFz
Y3JpcHRDYW5PcGVuV2luZG93cywKKyAgICAgICAgSmF2YXNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZCwKKyAgICAgICAgRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwKKyAgICAgICAgTGlua3NJbmNsdWRl
ZEluRm9jdXNDaGFpbiwKKyAgICAgICAgWm9vbVRleHRPbmx5LAorICAgICAgICBQcmludEVsZW1l
bnRCYWNrZ3JvdW5kcywKKyAgICAgICAgT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQsCisg
ICAgICAgIE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCwKKyAgICAgICAgTG9jYWxT
dG9yYWdlRW5hYmxlZCwKKyNpZiBkZWZpbmVkKFFUX0RFUFJFQ0FURUQpIHx8IGRlZmluZWQocWRv
YykKKyAgICAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9yYWdlRW5h
YmxlZCwKKyNlbmRpZgorICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAor
ICAgICAgICBEbnNQcmVmZXRjaEVuYWJsZWQsCisgICAgICAgIFhTU0F1ZGl0aW5nRW5hYmxlZCwK
KyAgICAgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQsCisgICAgICAgIFNwYXRpYWxO
YXZpZ2F0aW9uRW5hYmxlZCwKKyAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMs
CisgICAgICAgIFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCwKKyAgICAgICAgRnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCwKKyAgICAgICAgU2l0ZVNwZWNpZmljUXVpcmtzRW5hYmxlZCwKKyAgICAgICAg
SmF2YXNjcmlwdENhbkNsb3NlV2luZG93cywKKyAgICAgICAgV2ViR0xFbmFibGVkLAorICAgICAg
ICBDU1NSZWdpb25zRW5hYmxlZCwKKyAgICAgICAgQ1NTQ29tcG9zaXRpbmdFbmFibGVkLAorICAg
ICAgICBIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQsCisgICAgICAgIENTU0dyaWRMYXlvdXRFbmFi
bGVkLAorICAgICAgICBTY3JvbGxBbmltYXRvckVuYWJsZWQsCisgICAgICAgIENhcmV0QnJvd3Np
bmdFbmFibGVkLAorICAgICAgICBOb3RpZmljYXRpb25zRW5hYmxlZCwKKyAgICAgICAgV2ViQXVk
aW9FbmFibGVkCisgICAgfTsKKyAgICBlbnVtIFdlYkdyYXBoaWMgeworICAgICAgICBNaXNzaW5n
SW1hZ2VHcmFwaGljLAorICAgICAgICBNaXNzaW5nUGx1Z2luR3JhcGhpYywKKyAgICAgICAgRGVm
YXVsdEZyYW1lSWNvbkdyYXBoaWMsCisgICAgICAgIFRleHRBcmVhU2l6ZUdyaXBDb3JuZXJHcmFw
aGljLAorICAgICAgICBEZWxldGVCdXR0b25HcmFwaGljLAorICAgICAgICBJbnB1dFNwZWVjaEJ1
dHRvbkdyYXBoaWMsCisgICAgICAgIFNlYXJjaENhbmNlbEJ1dHRvbkdyYXBoaWMsCisgICAgICAg
IFNlYXJjaENhbmNlbEJ1dHRvblByZXNzZWRHcmFwaGljCisgICAgfTsKKyAgICBlbnVtIEZvbnRT
aXplIHsKKyAgICAgICAgTWluaW11bUZvbnRTaXplLAorICAgICAgICBNaW5pbXVtTG9naWNhbEZv
bnRTaXplLAorICAgICAgICBEZWZhdWx0Rm9udFNpemUsCisgICAgICAgIERlZmF1bHRGaXhlZEZv
bnRTaXplCisgICAgfTsKKyAgICBlbnVtIFRoaXJkUGFydHlDb29raWVQb2xpY3kgeworICAgICAg
ICBBbHdheXNBbGxvd1RoaXJkUGFydHlDb29raWVzLAorICAgICAgICBBbHdheXNCbG9ja1RoaXJk
UGFydHlDb29raWVzLAorICAgICAgICBBbGxvd1RoaXJkUGFydHlXaXRoRXhpc3RpbmdDb29raWVz
CisgICAgfTsKKworICAgIHN0YXRpYyBRV2ViU2V0dGluZ3MgKmdsb2JhbFNldHRpbmdzKCk7CisK
KyAgICB2b2lkIHNldEZvbnRGYW1pbHkoRm9udEZhbWlseSB3aGljaCwgY29uc3QgUVN0cmluZyAm
ZmFtaWx5KTsKKyAgICBRU3RyaW5nIGZvbnRGYW1pbHkoRm9udEZhbWlseSB3aGljaCkgY29uc3Q7
CisgICAgdm9pZCByZXNldEZvbnRGYW1pbHkoRm9udEZhbWlseSB3aGljaCk7CisKKyAgICB2b2lk
IHNldEZvbnRTaXplKEZvbnRTaXplIHR5cGUsIGludCBzaXplKTsKKyAgICBpbnQgZm9udFNpemUo
Rm9udFNpemUgdHlwZSkgY29uc3Q7CisgICAgdm9pZCByZXNldEZvbnRTaXplKEZvbnRTaXplIHR5
cGUpOworCisgICAgdm9pZCBzZXRBdHRyaWJ1dGUoV2ViQXR0cmlidXRlIGF0dHIsIGJvb2wgb24p
OworICAgIGJvb2wgdGVzdEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUgYXR0cikgY29uc3Q7CisgICAg
dm9pZCByZXNldEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUgYXR0cik7CisKKyAgICB2b2lkIHNldFVz
ZXJTdHlsZVNoZWV0VXJsKGNvbnN0IFFVcmwgJmxvY2F0aW9uKTsKKyAgICBRVXJsIHVzZXJTdHls
ZVNoZWV0VXJsKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldERlZmF1bHRUZXh0RW5jb2RpbmcoY29u
c3QgUVN0cmluZyAmZW5jb2RpbmcpOworICAgIFFTdHJpbmcgZGVmYXVsdFRleHRFbmNvZGluZygp
IGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgc2V0SWNvbkRhdGFiYXNlUGF0aChjb25zdCBRU3Ry
aW5nICZsb2NhdGlvbik7CisgICAgc3RhdGljIFFTdHJpbmcgaWNvbkRhdGFiYXNlUGF0aCgpOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFySWNvbkRhdGFiYXNlKCk7CisgICAgc3RhdGljIFFJY29uIGlj
b25Gb3JVcmwoY29uc3QgUVVybCAmdXJsKTsKKworICAgIC8vc3RhdGljIFFXZWJQbHVnaW5EYXRh
YmFzZSAqcGx1Z2luRGF0YWJhc2UoKTsKKworICAgIHN0YXRpYyB2b2lkIHNldFdlYkdyYXBoaWMo
V2ViR3JhcGhpYyB0eXBlLCBjb25zdCBRUGl4bWFwICZncmFwaGljKTsKKyAgICBzdGF0aWMgUVBp
eG1hcCB3ZWJHcmFwaGljKFdlYkdyYXBoaWMgdHlwZSk7CisKKyAgICBzdGF0aWMgdm9pZCBzZXRN
YXhpbXVtUGFnZXNJbkNhY2hlKGludCBwYWdlcyk7CisgICAgc3RhdGljIGludCBtYXhpbXVtUGFn
ZXNJbkNhY2hlKCk7CisgICAgc3RhdGljIHZvaWQgc2V0T2JqZWN0Q2FjaGVDYXBhY2l0aWVzKGlu
dCBjYWNoZU1pbkRlYWRDYXBhY2l0eSwgaW50IGNhY2hlTWF4RGVhZCwgaW50IHRvdGFsQ2FwYWNp
dHkpOworCisgICAgc3RhdGljIHZvaWQgc2V0T2ZmbGluZVN0b3JhZ2VQYXRoKGNvbnN0IFFTdHJp
bmcmIHBhdGgpOworICAgIHN0YXRpYyBRU3RyaW5nIG9mZmxpbmVTdG9yYWdlUGF0aCgpOworICAg
IHN0YXRpYyB2b2lkIHNldE9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKHFpbnQ2NCBtYXhpbXVt
U2l6ZSk7CisgICAgc3RhdGljIHFpbnQ2NCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSgpOwor
CisgICAgc3RhdGljIHZvaWQgc2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKGNvbnN0
IFFTdHJpbmcmIHBhdGgpOworICAgIHN0YXRpYyBRU3RyaW5nIG9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlUGF0aCgpOworICAgIHN0YXRpYyB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlUXVvdGEocWludDY0IG1heGltdW1TaXplKTsKKyAgICBzdGF0aWMgcWludDY0IG9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEoKTsKKyAgICAKKyAgICB2b2lkIHNldExvY2FsU3RvcmFn
ZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCk7CisgICAgUVN0cmluZyBsb2NhbFN0b3JhZ2VQYXRo
KCkgY29uc3Q7IAorCisgICAgc3RhdGljIHZvaWQgY2xlYXJNZW1vcnlDYWNoZXMoKTsKKworICAg
IHN0YXRpYyB2b2lkIGVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFFTdHJpbmcmIHBhdGgg
PSBRU3RyaW5nKCkpOworCisgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llUG9saWN5KFRoaXJk
UGFydHlDb29raWVQb2xpY3kpOworICAgIFFXZWJTZXR0aW5nczo6VGhpcmRQYXJ0eUNvb2tpZVBv
bGljeSB0aGlyZFBhcnR5Q29va2llUG9saWN5KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENTU01l
ZGlhVHlwZShjb25zdCBRU3RyaW5nJik7CisgICAgUVN0cmluZyBjc3NNZWRpYVR5cGUoKSBjb25z
dDsKKworICAgIGlubGluZSBRV2ViU2V0dGluZ3NQcml2YXRlKiBoYW5kbGUoKSBjb25zdCB7IHJl
dHVybiBkOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlQWRhcHRlcjsK
KyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV2Vi
U2V0dGluZ3NQcml2YXRlOworCisgICAgUV9ESVNBQkxFX0NPUFkoUVdlYlNldHRpbmdzKQorCisg
ICAgUVdlYlNldHRpbmdzKCk7CisgICAgUVdlYlNldHRpbmdzKFdlYkNvcmU6OlNldHRpbmdzICpz
ZXR0aW5ncyk7CisgICAgflFXZWJTZXR0aW5ncygpOworCisgICAgUVdlYlNldHRpbmdzUHJpdmF0
ZSAqZDsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jN2I1ZjBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTAsMCArMSwxNjY1MyBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5hbWVk
LCB1c2luZyBzY3JpcHQuCisKKzIwMTMtMDktMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBlbXB0eSBNYWluRnJhbWUgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTc3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAq
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwOgorICAgICAgICAqIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgICogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgorICAgICAgICBJbmNsdWRlIE1haW5GcmFtZS5oIGluc3Rl
YWQgb2YgRnJhbWUuaCBhcyBuZWVkZWQuCisKKzIwMTMtMDktMjcgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBGaXggZm9yY2Vf
c3RhdGljX2xpYnNfYXNfc2hhcmVkIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IENz
YWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFk
YXB0ZXIuaDoKKworMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xl
dG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIx
ODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOiBV
c2Ugc2luZ2xldG9uIGFjY2Vzc29yLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKTogRGl0dG8uCisKKzIwMTMtMDktMjUgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBG
aXggYnVpbGQgd2l0aCBRdCA1LjIgUXRQb3NpdGlvbiBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTA4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFF0TG9jYXRpb24gLT4gUXRQb3NpdGlvbmlu
ZworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHA6CisK
KzIwMTMtMDktMjQgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBDcmFzaCB3aGVuIHRyeWluZyB0byBkb3dubG9hZCBibG9iIHVy
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRG8gbm90
IGNyYXNoIGlmIGEgZG93bmxvYWQgd2FzIHRyaWdnZXJlZCBvbiBhIHJlc291cmNlIFdlYkNvcmUg
aGFuZGxlcyBpbnRlcm5hbGx5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorCisyMDEzLTA5LTI0ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0g
UmVwYWludFJlcXVlc3RlZCBzaWduYWwgc29tZXRpbWVzIG5vdCBlbWl0dGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBXZSBzaG91bGQgYWxzbyBlbWl0
IHJlcGFpbnRSZXF1ZXN0ZWQgYWZ0ZXIgY2FsbGluZyBQYWdlQ2xpZW50Ojp1cGRhdGUoKS4KKwor
ICAgICAgICAqIFdpZGdldFN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpyZXBhaW50Vmlld3BvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6cmVwYWludFZpZXdwb3J0KToKKworMjAxMy0w
OS0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENUVEU6IFVzZSBy
ZWZlcmVuY2VzIG1vcmUgaW4gQ29udGFpbmVyTm9kZSwgQ29udGFpbmVyTm9kZUFsZ29yaXRobXMg
YW5kIHJlbGF0ZWQgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxNzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
KworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudENv
bGxlY3Rpb246OmFwcGVuZCk6CisgICAgICAgIFVwZGF0ZSB0byB3b3JrIHdpdGggdGhlIG5ldyBT
dGF0aWNOb2RlTGlzdCBhZG9wdCBmdW5jdGlvbi4KKworMjAxMy0wOS0xOSAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBLZWVwIGNoYXNp
bmcgdGhlIGRlZmluaXRpb24gb2YgUUFjY2Vzc2libGVXaWRnZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTYxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpvY2VseW4gVHVyY290dGUuCisKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXdhY2Nl
c3NpYmxlX3AuaDoKKworMjAxMy0wOS0xNiAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZGlkU2V0U2VsZWN0aW9uVHlw
ZXNGb3JQYXN0ZWJvYXJkIGZyb20gRWRpdG9yQ2xpZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAxMy0w
OS0xMiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRml4IFF0
IGJ1aWxkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RRdWVyeSk6CisKKzIwMTMtMDkt
MTEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBH
ZW5lcmF0ZSBtb3JlIEhUTUwgdHlwZSBjaGVja3MgYW5kIGNhc3RpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTA4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgQ2xlYW4tdXAgcmVtYWluZWQgZnVuY3Rp
b25zIG9mIEhUTUwgZWxlbWVudHMgdXNpbmcgYXV0by1nZW5lcmF0ZWQgaXNGb29FbGVtZW50KCks
CisgICAgICAgIGFuZCByZXBsYWNlIHRvRm9vRWxlbWVudCgpIHdpdGggRUxFTUVOVF9UWVBFX0NB
U1RTKCkgbWFjcm8uCisKKyAgICAgICAgQmVzaWRlcyB0aGlzIHBhdGNoIGNsZWFuLXVwIHVubmVj
ZXNzYXJ5IGNoZWNrcyB3aGljaCBhcmUgYmVpbmcgc3VwcG9ydGVkIGJ5CisgICAgICAgIGF1dG8t
Z2VuZXJhdGVkIGlzRm9vRWxlbWVudCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgorCisyMDEzLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gSW1hZ2VzIHNjYWxlZCBwb29y
bHkgb24gY29tcG9zaXRlZCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMDYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVy
Y290dGUuCisKKyAgICAgICAgRXhwbGljaXRseSBzZXQgYSBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5IG9uIHRoZSBUZXh0dXJlTWFwcGVyLCBiZWNhdXNlCisgICAgICAgIEludGVycG9sYXRpb25E
ZWZhdWx0IG1heSBiZSBpbnRlcnByZXRlZCBkaWZmZXJlbnRseSBieSBuZXN0ZWQgR3JhcGhpY3ND
b250ZXh0cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0OjpyZW5kZXJD
b21wb3NpdGVkTGF5ZXJzKToKKworMjAxMy0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFRpbGVkLWJhY2tpbmcgc3Rv
cmUgbm90IGNsaXBwZWQgdG8gZnJhbWUgb3IgdmlzaWJsZSByZWN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA2MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBKb2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgIENsaXAgcGFpbnRpbmcgZnJvbSB0aGUg
dGlsZWQtYmFja2luZyBzdG9yZSB0byB0aGUgZnJhbWUgcmVjdC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRl
cjo6cmVuZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKToKKworMjAxMy0wOS0wMyAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdW1dL
MV0gUGFnZVZpc2liaWxpdHkgdGVzdHMgYXJlIGZsYWt5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MTgKKworICAgICAgICBSZXZpZXdlZCBieSBK
b2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0
UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisKKzIwMTMtMDgtMjggIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1F0XSBPcHRpb24ga2V5IGNvbWJpbmF0aW9ucyBkbyBub3Qgd29yayBp
biBJbnB1dCBFbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMDQyMworCisgICAgICAgIFFfV1NfTUFDIGlzIG9ic29sZXRlLiBXZSBzaG91
bGQgdXNlIFFfT1NfTUFDIGluc3RlYWQuCisgICAgICAgIFRoaXMgY2F1c2VkIFFUQlVHLTMyMzg4
LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCisyMDEzLTA4LTI4ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBFbGltaW5hdGUgUGFzdGVib2FyZDo6Z2VuZXJh
bFBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYlBhZ2VB
ZGFwdGVyOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgVXNlIGNyZWF0ZUZvckdsb2JhbFNlbGVj
dGlvbiBpbnN0ZWFkIG9mIGdlbmVyYWxQYXN0ZWJvYXJkIGFuZCBzZXRTZWxlY3Rpb25Nb2RlLgor
CisyMDEzLTA4LTI4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTU0NTkzLgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNTQ1OTMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQwMworCisgICAgICAgIENhdXNlZCA1MCsgZmxh
a3kgdGVzdHMgb24gV2ViS2l0MSBib3RzIChSZXF1ZXN0ZWQgYnkgY2FyZXdvbGYKKyAgICAgICAg
b24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6CisKKzIwMTMtMDgtMjcgIEFy
dW5wcmFzYWQgUmFqa3VtYXIgIDxhcnVyYWprdUBjaXNjby5jb20+CisKKyAgICAgICAgW1F0XSBM
ZXQgUGFnZSBjcmVhdGUgdGhlIG1haW4gRnJhbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAzNDkKKworICAgICAgICBBZGp1c3QgdG8gbGF0ZXN0
IGNoYW5nZXMgaW4gV2ViQ29yZTo6UGFnZSB0byBjcmVhdGUgdGhlIG1haW4gZnJhbWUuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZURhdGE6OlFXZWJG
cmFtZURhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6
CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmluaXRpYWxpemVXZWJDb3JlUGFnZSk6CisKKzIw
MTMtMDgtMjYgIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxhcnVyYWprdUBjaXNjby5jb20+CisKKyAg
ICAgICAgW1F0XSBSZW1vdmUgdGhlIGZpeCBpbiBRV2ViUGFnZTo6amF2YVNjcmlwdENvbnNvbGVN
ZXNzYWdlIGludHJvZHVjZWQgYnkgKHI2MTQzMykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTc5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2Vs
eW4gVHVyY290dGUuCisKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6IFJlbW92ZWQgaGFjayBzcGVj
aWZpYyB0byBEUlQsIGludHJvZHVjZWQgYnkKKyAgICAgICAgKHI2MTQzMykuCisKKzIwMTMtMDgt
MjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjp0cmVl
IHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDI1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Y2xlYXJGcmFtZU5hbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHA6CisgICAgICAgIChR
V2ViRnJhbWVEYXRhOjpRV2ViRnJhbWVEYXRhKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6
OmxvYWQpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6dW5pcXVlTmFtZSk6CisgICAgICAg
IChRV2ViRnJhbWVBZGFwdGVyOjpjaGlsZEZyYW1lcyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6ZmluZFRl
eHQpOgorICAgICAgICBVc2UgdHJlZSgpLiBpbnN0ZWFkIG9mIHRyZWUoKS0+LgorCisyMDEzLTA4
LTIzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisg
ICAgICAgIFtRdF0gVXBkYXRlIG91dGRhdGVkIHNvdXJjZS1wYXRocyBpbiBkb2N1bWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBkb2Nz
L3F0d2Via2l0LnFkb2M6CisKKzIwMTMtMDgtMTkgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lA
YXBwbGUuY29tPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMTk5MTg+IEZyYW1l
OjpzZWxlY3Rpb24oKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgbV9zZWxlY3Rpb24gaXMgbmV2ZXIgTlVMTCBz
byByZXR1cm4gYSByZWZlcmVuY2UgZnJvbSBGcmFtZTo6c2VsZWN0aW9uKCkuIEFsc28gcmVtb3Zl
ZCBzb21lCisgICAgICAgIHVubmVjZXNzYXJ5IG51bGwgY2hlY2tzIGFuZCBhc3NlcnQgZGlmZiB0
cyBleHBvc2VkIGFzIGEgcmVzdWx0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFw
dGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aGFzU2VsZWN0aW9uKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRh
cHRlcjo6ZmluZFRleHQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1ldGhvZEV2
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RRdWVyeSk6CisKKzIw
MTMtMDgtMTkgIEFydW5wcmFzYWQgUmFqa3VtYXIgIDxhcnVyYWprdUBjaXNjby5jb20+CisKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExOTkzMz4gW1F0XSBGaXggdHN0X1FPYmplY3RC
cmlkZ2U6OmNvbm5lY3RBbmREaXNjb25uZWN0KCkgZmFpbAorCisgICAgICAgIFJldmlld2VkIGJ5
IEFsbGFuIFNhbmRmZWxkIEplbnNlbi4KKworICAgICAgICBMYXRlc3QgdmVyc2lvbiBvZiBKU0Mg
aGFzIHVucXVvdGVkIHVuZGVmaW5lZCBpbiBleGNlcHRpb24gbWVzc2FnZXMuIFNvIHJlcGxhY2Vk
ICd1bmRlZmluZWQnIHdpdGggdW5kZWZpbmVkLgorCisgICAgICAgICogdGVzdHMvcW9iamVjdGJy
aWRnZS90c3RfcW9iamVjdGJyaWRnZS5jcHA6CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6
Y29ubmVjdEFuZERpc2Nvbm5lY3QpOgorCisyMDEzLTA4LTE3ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5OTQxPiBNYWtl
IFBhZ2U6OmRyYWdDb250cm9sbGVyIHJldHVybiBhIHJlZmVyZW5jZQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisgICAgICAgIChR
V2ViUGFnZUFkYXB0ZXI6OmRyYWdFbnRlcmVkKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6
ZHJhZ0xlYXZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpkcmFnVXBkYXRlZCk6
CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OnBlcmZvcm1EcmFnKToKKyAgICAgICAgVXBkYXRl
ZCBjYWxsIHNpdGVzLgorCisyMDEzLTA4LTE2ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFw
cGxlLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5ODUyPiBGcmFtZTo6
c2NyaXB0Q29udHJvbGxlcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIG1fc2NyaXB0IGlzIG5ldmVyIE5V
TEwgc28gd2UgY2FuIGp1c3QgcmV0dXJuIGEgcmVmZXJlbmNlLiBBbHNvIHJlbW92ZSBzb21lIHBv
aW50bGVzcyBudWxsCisgICAgICAgIGNoZWNrcyBhcyBhIHJlc3VsdCBvZiBkb2luZyB0aGlzLgor
CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHNldHVwU2NyaXB0Q29u
dGV4dCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lQWRhcHRlcjo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAgICAgICAgKFFXZWJG
cmFtZUFkYXB0ZXI6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisKKzIwMTMtMDgtMTUg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTE5ODU5PiBGcmFtZTo6bG9hZGVyKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6Y2xvc2VXaW5kb3dTb29uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2hvdWxkQ2xvc2UpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnJlc3BvbnNlTWltZVR5cGUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNs
ZWFyT3BlbmVyKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp0aGlyZFBhcnR5
Q29va2llUG9saWN5QWxsb3dzKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXRBbHRlcm5hdGVIdG1sKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxQ
b2xpY3lGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVu
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c3RhcnREb3dubG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHA6CisgICAgICAgIChR
V2ViRnJhbWVBZGFwdGVyOjpsb2FkKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNldENv
bnRlbnQpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6c2V0SHRtbCk6CisgICAgICAgIChR
V2ViRnJhbWVBZGFwdGVyOjpraXQpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6dGl0bGUp
OgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6Y2xlYXJDb3JlRnJhbWUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisgICAgICAgIChmcmFtZUxvYWRS
ZXF1ZXN0KToKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAgICAoUVdlYlBhZ2VBZGFw
dGVyOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6Y3VycmVudEZy
YW1lKToKKworMjAxMy0wOC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisg
ICAgICAgIEZvbzo6c19pbmZvIHNob3VsZCBiZSBGb286OmluZm8oKSwgc28gdGhhdCB5b3UgY2Fu
IGNoYW5nZSBob3cgdGhlIHNfaW5mbyBpcyBhY3R1YWxseSBsaW5rZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTc3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE1hcmsgSGFobmVuYmVyZy4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6
CisgICAgICAgIChjb252ZXJ0SlNWYWx1ZVRvV2ViRWxlbWVudFZhcmlhbnQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKGNv
bnZlcnRKU1ZhbHVlVG9Ob2RlVmFyaWFudCk6CisKKzIwMTMtMDgtMTEgIEFuZHJlYXMgS2xpbmcg
IDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2Ugc29tZSB0aGluZ3MgdGhhdCByZXR1
cm4gbmV2ZXItbnVsbCBwb2ludGVycyByZXR1cm4gcmVmZXJlbmNlcyBpbnN0ZWFkLgorICAgICAg
ICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTk2NjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50
dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAo
UVdlYkVsZW1lbnQ6OnN0eWxlUHJvcGVydHkpOgorCisyMDEzLTA4LTA5ICBBcnVucHJhc2FkIFJh
amt1bWFyICA8YXJ1cmFqa3VAY2lzY28uY29tPgorCisgICAgICAgIFtRdF0gUXRXZWJLaXQgc2hv
dWxkIGFsbG93IHNlbmRpbmcgZG9tYWluIHNwZWNpZmljIGtleWNvZGUgdG8gSFRNTCBhcHBsaWNh
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
ODQ0NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsbGFuIFNhbmRmZWxkIEplbnNlbi4KKworICAg
ICAgICBBZGRlZCBBUEkgdGVzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdl
QWRhcHRlci5jcHA6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OlFXZWJQYWdlQWRhcHRlcik6
CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KToK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlS2V5RXZlbnQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRvbWFpblNwZWNpZmlj
S2V5RXZlbnQpOgorCisyMDEzLTA4LTA5ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KKworICAgICAgICBTdHlsZVJ1bGUqOjpwcm9wZXJ0aWVzKCkgc2hvdWxkIHJldHVybiBjb25z
dCByZWZlcmVuY2VzLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTk1OTY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBBcGkvcXdlYmVs
ZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnN0eWxlUHJvcGVydHkpOgorCisyMDEz
LTA4LTA4ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBFbGVt
ZW50OiBNb2Rlcm5pemUgYXR0cmlidXRlIHN0b3JhZ2UgYWNjZXNzb3IgZnVuY3Rpb25zLgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTk1Nzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAg
ICAoUVdlYkVsZW1lbnQ6OmF0dHJpYnV0ZU5hbWVzKToKKworMjAxMy0wOC0wNyAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEJ1
aWxkIGZpeCBhZnRlciByMTUzNzUxCisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCisK
KyAgICAgICAgRml4IGJ1aWxkIHdoZW4gUEFHRV9WSVNJQklMSVRZX0FQSSBpcyBkaXNhYmxlZC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisgICAgICAg
IChRV2ViUGFnZUFkYXB0ZXI6OnZpc2liaWxpdHlTdGF0ZSk6CisKKzIwMTMtMDgtMDYgIEJlbmph
bWluIER1cG9udCAgIDxiZHVwb250QG5kcy5jb20+CisKKyAgICAgICAgW1F0XSBBZGQgUGFnZSBW
aXNpYmlsaXR5IEFQSSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisgICAg
ICAgICh3ZWJQYWdlVmlzaWJpbGl0eVN0YXRlVG9XZWJDb3JlVmlzaWJpbGl0eVN0YXRlKToKKyAg
ICAgICAgKHdlYkNvcmVWaXNpYmlsaXR5U3RhdGVUb1dlYlBhZ2VWaXNpYmlsaXR5U3RhdGUpOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpzZXRWaXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAo
UVdlYlBhZ2VBZGFwdGVyOjp2aXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1FXZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZTo6c2V0VmlzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFFXZWJQ
YWdlOjp2aXNpYmlsaXR5U3RhdGUpOgorICAgICAgICAqIFdpZGdldEFwaS9xd2VicGFnZS5oOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmNoYW5nZVZpc2liaWxpdHlTdGF0ZSk6CisKKzIwMTMtMDctMjcgIE1hcmsgUm93
ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgICBMb2dnaW5nIHNob3VsZCBiZSBjb25maWd1
cmFibGUgdXNpbmcgaHVtYW4tcmVhZGFibGUgY2hhbm5lbCBuYW1lcyByYXRoZXIgdGhhbiBjcmF6
eSBiaXRtYXNrcworICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTkwMzE+CisKKyAgICAg
ICAgSW1wbGVtZW50IHNoYXJlZCBsb2dpYyBmb3IgaW5pdGlhbGl6aW5nIGxvZ2dpbmcgY2hhbm5l
bHMgYmFzZWQgb24gaHVtYW4tcmVhZGFibGUgY2hhbm5lbCBuYW1lcyBpbiBXVEYsCisgICAgICAg
IGFuZCByZXdvcmsgdGhlIFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0MiBsb2dnaW5nIGluaXRp
YWxpemF0aW9uIG9uIHRvcCBvZiBpdC4KKworICAgICAgICBMb2dnaW5nIGNoYW5uZWxzIG1heSBu
b3cgYmUgZW5hYmxlZCBieSBwcm92aWRpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBjaGFu
bmVsIG5hbWVzLCB3aXRoIHRoZSBzcGVjaWFsCisgICAgICAgICJhbGwiIG5hbWUgZW5hYmxpbmcg
YWxsIGNoYW5uZWxzLiBDaGFubmVsIG5hbWVzIHByZWZpeGVkIHdpdGggYSBsZWFkaW5nICItIiB3
aWxsIHJlc3VsdCBpbiB0aGUgbmFtZWQgY2hhbm5lbAorICAgICAgICBiZWluZyBkaXNhYmxlZC4g
Rm9yIGluc3RhbmNlLCBzcGVjaWZ5aW5nICJhbGwsLWhpc3RvcnksLWxvYWRpbmciIHdpbGwgcmVz
dWx0IGluIGFsbCBsb2dnaW5nIGNoYW5uZWxzIGV4Y2VwdAorICAgICAgICBmb3IgaGlzdG9yeSBh
bmQgbG9hZGluZyBiZWluZyBlbmFibGVkLgorCisgICAgICAgIEZvciBPUyBYIGRldmVsb3BlcnMs
IHRoaXMgYWxzbyBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSB1c2VyIGRlZmF1bHRzIHVzZWQgdG8g
ZW5hYmxlIGxvZ2dpbmcuIFRoaXMgaXMgZG9uZSB0byBhbGxvdworICAgICAgICB0aGUgb2xkIHVz
ZXIgZGVmYXVsdHMgdG8gcmVtYWluIHNldCBmb3IgdGhvc2UgcGVvcGxlIHRoYXQgbmVlZCB0byBz
d2l0Y2ggYmV0d2VlbiB2ZXJzaW9uIG9mIFdlYktpdCBiZWZvcmUgYW5kCisgICAgICAgIGFmdGVy
IHRoaXMgY2hhbmdlLiBXaGVyZSB0aGUgb2xkIHVzZXIgZGVmYXVsdCBrZXlzIHdlcmUgV2ViQ29y
ZUxvZ0xldmVsLCBXZWJLaXRMb2dMZXZlbCBhbmQgV2ViS2l0MkxvZ0xldmVsLAorICAgICAgICB0
aGUgbmV3IHVzZXIgZGVmYXVsdCBrZXlzIGFyZSBXZWJDb3JlTG9nZ2luZywgV2ViS2l0TG9nZ2lu
ZyBhbmQgV2ViS2l0MkxvZ2dpbmcuCisKKyAgICAgICAgRm9yIEdUSyBkZXZlbG9wZXJzLCB0aGlz
IGNoYW5nZXMgdGhlIHNlcGFyYXRvciB1c2VkIGluIHRoZSBXRUJLSVRfREVCVUcgZW52aXJvbm1l
bnQgdmFyaWFibGUgdG8gYSBjb21tYSBmb3IKKyAgICAgICAgY29uc2lzdGVuY3kgd2l0aCB0aGUg
b3RoZXIgcGxhdGZvcm1zIGFuZCB0byBlbmFibGUgbW9yZSBjb2RlIHNoYXJpbmcuCisKKyAgICAg
ICAgV2hpbGUgZG9pbmcgdGhpcyB3b3JrIEkndmUgYWxzbyB0YWtlbiB0aGUgb3Bwb3J0dW5pdHkg
dG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIHRvdWNoIG11bHRpcGxlIGZpbGVzIHdoZW4KKyAgICAg
ICAgYWRkaW5nIGEgbmV3IGxvZ2dpbmcgY2hhbm5lbC4gTm93IG9ubHkgdGhlIGhlYWRlciBpbiB0
aGUgcmVsZXZhbnQgcHJvamVjdCBuZWVkcyB0byBiZSB1cGRhdGVkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29y
ZVF0LmNwcDogU3dpdGNoIGZyb20gV2ViQ29yZSdzIEluaXRpYWxpemVMb2dnaW5nLmggdG8gTG9n
Z2luZy5oLgorCisyMDEzLTA3LTMxICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5u
ZXQ+CisKKyAgICAgICAgVXNlIGVtcHR5U3RyaW5nIGluc3RlYWQgb2YgU3RyaW5nKCIiKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MzM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIGVtcHR5U3RyaW5n
KCkgaW5zdGVhZCBvZiBTdHJpbmcoIiIpIGJlY2F1c2UgaXQgaXMgYmV0dGVyIHN0eWxlIGFuZAor
ICAgICAgICBmYXN0ZXIuIFRoaXMgaXMgYSBmb2xsb3d1cCB0byByMTE2OTA4LCByZW1vdmluZyBh
bGwgb2NjdXJyZW5jZXMgb2YKKyAgICAgICAgU3RyaW5nKCIiKSBmcm9tIFdlYktpdC4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKworMjAxMy0wNy0zMSAg
TWljaGFlbCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0BkaWdpYS5jb20+CisKKyAgICAgICAg
W1F0XVtXSzFdIG5hdmlnYXRvci5wbHVnaW5zIHNob3dzIHRvbyBmZXcgZW50cmllcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTMzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVyY290dGUuCisKKyAgICAgICAgQmFzZWQgb24gaW5w
dXQgYnkgQ2hvb24gU2lrIENoby4KKworICAgICAgICBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0
UGx1Z2luSW5mbyB3YXMgdXNpbmcgdGhlCisgICAgICAgIFdURjo6VmVjdG9yOjpyZXNpemUgbWV0
aG9kIHdyb25nbHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjYWxsIHRvIFZl
Y3Rvcjo6cmVzaXplIGFzCisgICAgICAgIFZlY3Rvcjo6YXBwZW5kIHdpbGwgdGFrZSBjYXJlIG9m
IGluY3JlYXNpbmcgY2FwYWNpdHkKKyAgICAgICAgaWYgbmVlZGVkLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmdldFBsdWdpbkluZm8pOgorCisyMDEzLTA3LTMxICBEZWVwanlvdGkgU2Fo
YSAgPGRlZXNhaGFAY2lzY28uY29tPgorCisgICAgICAgIFtRdF0gQWRkIGludGVyZmFjZSBBUEkg
Zm9yIG9yaWdpbiB3aGl0ZWxpc3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzgyMworCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVy
Y290dGUuCisKKyAgICAgICAgQWRkaW5nIGludGVyZmFjZSBBUElzIGluIFFXZWJTZWN1cml0eU9y
aWdpbiB0byBhZGQgYW5kIHJlbW92ZSB3aGl0ZUxpc3QgZW50aXJlcy4KKworICAgICAgICBSZS11
c2VkIG1vc3Qgb2YgdGhlIHRlc3QgY2FzZXMgd3JpdHRlbiBieSBDYXJvbCBTemFibyAgPGNhcm9s
LnN6YWJvQG5va2lhLmNvbT4gCisgICAgICAgIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE4NzUgYW5kIGFkZGVkIHRoZSBzYW1lLgorCisgICAgICAgICogQXBp
L3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmFk
ZEFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6cmVt
b3ZlQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmln
aW4uaDoKKyAgICAgICAgKiB0ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW46IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL3F3ZWJzZWN1cml0eW9yaWdpbi9xd2Vic2VjdXJpdHlvcmlnaW4ucHJvOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vcmVzb3VyY2VzOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vcmVzb3VyY2VzL3Rlc3QuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJp
dHlvcmlnaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKHRzdF9RV2ViU2VjdXJpdHlPcmlnaW46OnRz
dF9RV2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAodHN0X1FXZWJTZWN1cml0eU9yaWdpbjo6
fnRzdF9RV2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAodHN0X1FXZWJTZWN1cml0eU9yaWdp
bjo6aW5pdCk6CisgICAgICAgICh0c3RfUVdlYlNlY3VyaXR5T3JpZ2luOjpjbGVhbnVwKToKKyAg
ICAgICAgKHRzdF9RV2ViU2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdF9kYXRhKToKKyAgICAgICAg
KHRzdF9RV2ViU2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdCk6CisgICAgICAgICogdGVzdHMvcXdl
YnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4ucXJjOiBBZGRlZC4KKworMjAx
My0wNy0yNyAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0BibGFja2JlcnJ5LmNvbT4KKworICAgICAg
ICBSZXBsYWNlIGFsbCB1c2VzIG9mIEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSBmdW5jdGlvbiB3aXRo
IHRoZSBvbmUgdGhhdCB0YWtlcyBhIEdyYXBoaWNzTGF5ZXJGYWN0b3J5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkxODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0
dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJD
bGllbnRRdDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorCisyMDEzLTA3LTI1ICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBDaHJvbWVDbGllbnQ6OmZvY3VzZWRO
b2RlQ2hhbmdlZCgpIHNob3VsZCBiZSBmb2N1c2VkRWxlbWVudENoYW5nZWQoKS4KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTE5MTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpmb2N1c2VkRWxlbWVudENoYW5n
ZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMTMt
MDctMjMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIGRlcHJlY2F0ZWQgYW5kIHVudXNlZCBjb21wb3NpdGluZyBzZXR0aW5n
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5MDE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBSZW1vdmUg
QSBzZXQgb2Ygc2V0dGluZ3MgdG8gY29udHJvbCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyB0aGF0
IGhhdmUgbG9uZyBiZWVuCisgICAgICAgIHJlcGxhY2VkIHdpdGggdHJpZ2dlcnMgcmV0dXJuZWQg
YnkgQ2hyb21lQ2xpZW50LCBidXQgaGF2ZW4ndCBiZWVuIGZ1bGx5IHJlbW92ZWQuCisKKyAgICAg
ICAgVGhleSBhcmUgb25seSBzZXQgYnkgdGhlIFF0IHBvcnQgYnV0IG5vdCByZWFkIGFueXdoZXJl
LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3NQcml2YXRlOjphcHBseSk6CisKKzIwMTMtMDctMTggIEdhYm9yIEFicmFoYW0gIDxhYnJobUBp
bmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgW1F0XVtXSzFdIE1hcmsgZmFpbGluZyBBUEkgdGVz
dHMgYXMgWEZBSUwKKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisK
KyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp3aWRnZXRzUmVuZGVyaW5nVGhyb3Vn
aENhY2hlKToKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp3aW5kb3dSZXNpemVFdmVu
dCk6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViRWxlbWVudDo6YWRkRWxlbWVudFRvSGVhZCk6CisgICAgICAgICogdGVz
dHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6
c2V0SHRtbFdpdGhJbWFnZVJlc291cmNlKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldEh0
bWxXaXRoU3R5bGVzaGVldFJlc291cmNlKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldEh0
bWxXaXRoSlNBbGVydCk6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Z2VvbG9jYXRpb25SZXF1ZXN0SlMpOgorICAgICAg
ICAodHN0X1FXZWJQYWdlOjpwb3B1cEZvcm1TdWJtaXNzaW9uKToKKyAgICAgICAgKHRzdF9RV2Vi
UGFnZTo6b3JpZ2luYXRpbmdPYmplY3RJbk5ldHdvcmtSZXF1ZXN0cyk6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OnRlc3RTdG9wU2NoZWR1bGVkUGFnZVJlZnJlc2gpOgorCisyMDEzLTA3LTE2ICBN
aWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBb
UXRdIFJlcGxhY2UgTm9raWEgcmVmZXJlbmNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExODcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAg
ICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgor
CisyMDEzLTA3LTE0ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgdG9IVE1MVmlkZW9FbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBS
eW9zdWtlIE5pd2EuCisKKyAgICAgICAgVG8gYXZvaWQgZGlyZWN0IHVzZSBvZiBzdGF0aWNfY2Fz
dCwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRvSFRNTFZpZGVvRWxlbWVudC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjptZWRpYUNvbnRlbnRVcmxCeUVsZW1lbnRJZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmV4aXRGdWxsU2NyZWVuRm9yTm9kZSk6CisK
KzIwMTMtMDctMDEgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbnN1bWFibGUgdXNlciBnZXN0dXJlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MjQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uQ2xpY2tlZCk6CisKKzIw
MTMtMDYtMjcgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgorCisgICAgICAg
IEFkb3B0IGlzL3RvSFRNTElucHV0RWxlbWVudCBmb3IgY29kZSBjbGVhbnVwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgxMzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUbyBlbmhhbmNlIHJlYWRhYmls
aXR5LCB0aGlzIHBhdGNoIGFkb3B0cyBpcy90b0hUTUxJbnB1dEVsZW1lbnQuCisgICAgICAgIFRo
aXMgYWxzbyBoZWxwcyBvdXQgdG8gcmVkdWNlIGR1cGxpY2F0ZWQgdXNlIG9mIHN0YXRpY19jYXN0
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisgICAgICAgIChRV2ViUGFn
ZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkpOgorCisyMDEzLTA2LTI2ICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBSZW5hbWUgV29ya2Vy
Q29udGV4dCB0byBXb3JrZXJHbG9iYWxTY29wZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFy
byBIYXJhLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojppc1dvcmtlckNvbnRleHQoKSBhcyBpdCB3YXMKKyAgICAgICAgcmVuYW1lZCB0byBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojppc1dvcmtlckdsb2JhbFNjb3BlKCkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6dG9QYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojp0b0ZyYW1lKToKKworMjAx
My0wNi0yMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTiAocjE1MDY2Myk6IFVzaW5nIHdlYmtpdEF1ZGlvQ29udGV4dCBp
biBJbnNwZWN0b3IgbWFrZXMgaXQgdW5kZWZpbmVkIGV2ZXJ5d2hlcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzgyNQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAgICBVc2UgU2V0dGluZ3MgdG8gZW5hYmxlIFdl
YiBBdWRpbyBpbnN0ZWFkIG9mIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCisKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5
KToKKworMjAxMy0wNi0xNyAgTWljaGFlbCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0BkaWdp
YS5jb20+CisKKyAgICAgICAgW1F0XSBSZW1vdmUgUXQgc3BlY2lmaWMgUVRLSVQgZmxhZ2dlZCBj
b2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3
NjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRHVl
IHRvIGRpc2FibGluZyBRVEtJVCBmb3IgUXQgaW4gcjE1MTU0NiwgdGhlCisgICAgICAgIGNvZGUg
dGhlIGZsYWdzIHRoYXQgYXJlIG5vdCB0YWtlbiBpbnRvIGFjY291bnQKKyAgICAgICAgYW55bW9y
ZSBhbmQgdGhlIGNvZGUgdGhhdCBoYXMgYmVlbiByZW5kZXJlZAorICAgICAgICB1bnJlYWNoYWJs
ZSBieSB0aGlzIGFyZSByZW1vdmVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNs
aWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50
UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnVsbFNjcmVlblZpZGVvUXQ6OkZ1bGxTY3JlZW5WaWRlb1F0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojp+RnVsbFNjcmVlblZpZGVvUXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmVudGVyRnVsbFNjcmVlbkZvck5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmV4aXRGdWxsU2NyZWVuRm9yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6aXNWYWxpZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9Jbml0V2ViQ29yZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVXZWJD
b3JlUXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FUS2l0RnVsbFNjcmVlblZpZGVvSGFu
ZGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FUS2l0RnVsbFNjcmVl
blZpZGVvSGFuZGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJT
eXN0ZW1JbnRlcmZhY2UubW06IFJlbW92ZWQuCisKKzIwMTMtMDYtMDUgIEFsbGFuIFNhbmRmZWxk
IEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBIYW5kbGUg
UmV0dXJuIGtleSB3aXRob3V0IGtleSB0ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTcyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgorCisgICAgICAgIFRlc3QgZm9yIFFLZXlFdmVudChSZXR1cm5fS2V5KSB3aXRob3V0
IGtleSB0ZXh0LgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKToKKworMjAxMy0wNi0wMyAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE1MTEwOS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTUxMTA5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTcxNDUKKworICAgICAgICAiUGx1Z2lucyBpbiBXSzIgYXJlbid0IGltcGxlbWVu
dGVkIHlldC4iIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAganR1cmNvdHRlIG9uICN3ZWJraXQpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OndpbmRvd1Jlc2l6ZXJSZWN0KToKKworMjAxMy0wNS0y
MiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAg
ICAgIFtRdF0gUmUtZW5hYmxlIHBsdWdpbnMgb24gTWFjLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp3aW5kb3dSZXNpemVy
UmVjdCk6CisgICAgICAgICAgLSBBZGQgbWlzc2luZyBwYXJlbnRoZXNlLgorCisyMDEzLTA2LTAy
ICBBcnVucHJhc2FkIFJhamt1bWFyICA8YXJ1cmFqa3VAY2lzY28uY29tPgorCisgICAgICAgIFtR
dF0gTW92ZSBRdCBwb3J0IG9mZiBsZWdhY3kgY2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY0MTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6CisKKzIwMTMt
MDUtMjkgIExpYW5nIFFpICA8bGlhbmcucWlAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gQWRk
IGFsbCBwbHVnaW5zLnFtbHR5cGVzIGZpbGVzIGFuZCB1cGRhdGUgcW1sZGlyIGZpbGVzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgVGhlc2UgYXJlIHJl
cXVpcmVkIGZvciBjb2RlIGNvbXBsZXRpb24gaW4gUXQgQ3JlYXRvci4KKworICAgICAgICAqIGRl
Y2xhcmF0aXZlL3BsdWdpbnMucW1sdHlwZXM6IEFkZGVkLgorICAgICAgICAqIGRlY2xhcmF0aXZl
L3FtbGRpcjoKKworMjAxMy0wNS0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKCkgc2hvdWxkIGJlIHNldEZvY3Vz
ZWRFbGVtZW50KCkuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjg1Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIEFwaS9xd2ViZWxl
bWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6aGFzRm9jdXMpOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OnNldEZvY3VzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFX
ZWJQYWdlQWRhcHRlcjo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKToKKyAgICAgICAgKFFXZWJQ
YWdlQWRhcHRlcjo6aW5wdXRNZXRob2RRdWVyeSk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6
Omhhc0ZvY3VzZWROb2RlKToKKworMjAxMy0wNS0yNyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV2luXSBJbnB1dCBldmVudHMg
YXJlbid0IG1hcHBlZCBwcm9wZXJseSB3aXRoIHdpbmRvd2xlc3MgcGx1Z2lucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjA5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0
L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6
bWFwVG9Pd25lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNz
V2lkZ2V0OjptYWtlT3BlbkdMQ29udGV4dEN1cnJlbnRJZkF2YWlsYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzY3JlZW5OdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6Z2VvbWV0cnlSZWxhdGl2ZVRv
T3duZXJXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdl
dDo6bWFwVG9Pd25lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBo
aWNzV2lkZ2V0OjpncmFwaGljc0l0ZW1WaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpmaXJzdEdyYXBoaWNzVmlldyk6CisgICAgICAgICAg
RXh0cmFjdGVkIHRoaXMgY29tbW9uIGxvZ2ljIGZyb20gbWFrZU9wZW5HTENvbnRleHRDdXJyZW50
SWZBdmFpbGFibGUsCisgICAgICAgICAgc2NyZWVuTnVtYmVyLCBnZW9tZXRyeVJlbGF0aXZlVG9P
d25lcldpZGdldCBhbmQgZ3JhcGhpY3NJdGVtVmlzaWJsZVJlY3QKKyAgICAgICAgICB0byBiZSBh
YmxlIHRvIHVzZSBpdCBpbiBtYXBUb093bmVyV2luZG93LgorICAgICAgICAqIFdpZGdldFN1cHBv
cnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgIChQYWdlQ2xpZW50UVdpZGdldCk6CisgICAgICAg
IChQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0KToKKworMjAxMy0wNS0yNCAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVtb3ZlIGN1c3Rv
bSBjb2RlIGZvciB3ZWJraXRBdWRpb0NvbnRleHQgZ2xvYmFsIGNvbnN0cnVjdG9yIGdldHRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NTMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVXNlIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMgaW5zdGVhZCBvZiBTZXR0aW5ncyB0byB0b2dnbGUgV2ViIEF1ZGlv
IHN1cHBvcnQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFX
ZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKworMjAxMy0wNS0xOSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBDaHJvbWVDbGllbnQ6Ondl
YlZpZXcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE2MDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhp
cyBibGF0YW50bHkgaG9ycmlibGUgbGF5ZXIgdmlvbGF0aW9uIHdhcyBvbmx5IHVzZWQgdG8ga25v
dyBpZiBhIENocm9tZUNsaWVudCBpcyBhbiBlbXB0eQorICAgICAgICBjbGllbnQgb3Igbm90LiBX
ZSBhbHJlYWR5IGhhdmUgYSAoc2xpZ2h0bHkgbGVzcyBob3JyaWJsZSkgd2F5IHRvIGRvIHRoYXQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAo
Q2hyb21lQ2xpZW50UXQpOgorCisyMDEzLTA1LTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lPTihyMTUwMjI3KTogSXQgbWFk
ZSB6aWxsaW9uIHRlc3RzIGNyYXNoIHVuZGVyIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVn
aW5JbmZvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTYyODkKKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAg
ICAgRG9uJ3QgdHJ5IHRvIHN0YXRpYyBjYXN0IHNvbWV0aGluZyB0aGF0IGlzbid0IGEgQ2hyb21l
Q2xpZW50UXQgdG8gQ2hyb21lQ2xpZW50UXQuCisgICAgICAgIEl0J3MgYWN0dWFsbHkgU1ZHSW1h
Z2UncyBFbXB0eUNocm9tZUNsaWVudC1kZXJpdmVkIGNsaWVudCAob3Igb3RoZXIgc3VjaCB0aGlu
Z3MpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3Bw
OgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFBsdWdpbkluZm8pOgorCisyMDEz
LTA1LTE2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IFBERlBsdWdpbnMgZG9uJ3QgbG9hZCB3aGVuIHBsdWdpbnMgYXJlIGRpc2FibGVkLCBidXQgdGhl
eSBzaG91bGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1NzkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTY1MDE5Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAgUHJldmlvdXNseSwgdGhpcyBjYWxsZXIg
ZGVwZW5kZWQgb24gcGx1Z2luRGF0YSgpIHJldHVybmluZyBudWxsIGlmCisgICAgICAgIHBsdWct
aW5zIHdlcmUgZGlzYWJsZWQuIFNpbmNlIHRoYXQgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLCB3ZSBo
YXZlIHRvCisgICAgICAgIGNoZWNrIGlmIHdlIGNhbiB1c2UgcGx1Zy1pbnMsIGFuZCBvdGhlcndp
c2UgaWdub3JlIG5vbi1hcHBsaWNhdGlvbi1wbHVnLWlucy4KKworMjAxMy0wNS0xNiAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hv
dWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2
MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworMjAxMy0wNS0x
MyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1l
OjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRl
Q29yZUNvbW1hbmRCeU5hbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omlz
Q29tbWFuZEVuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVn
aXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVy
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAg
KFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRl
cjo6c2V0Q29udGVudEVkaXRhYmxlKToKKworMjAxMy0wNS0xNSAgSm9jZWx5biBUdXJjb3R0ZSAg
PGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IGEgY3Jhc2gg
dW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0
cm95ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTYwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4uCisKKyAg
ICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FX
ZWJQYWdlOjpuZXR3b3JrUmVwbHlQYXJlbnREaWRudENoYW5nZSk6IENoYW5nZSB0ZXN0IHRvIG1h
dGNoIHRoZSBuZXcgZXhwZWN0YXRpb24uCisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRlc3Ryb3lR
TkFNQmVmb3JlQWJvcnREb2VzbnRDcmFzaCk6CisKKzIwMTMtMDUtMTQgIEpvY2VseW4gVHVyY290
dGUgIDxqb2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBhIGNy
YXNoIHVuZGVyIH5QaW5nTG9hZGVyIHdoZW4gdGhlIFFOQU0gb24gdGhlIHBhZ2UgaGFzIGJlZW4g
ZGVzdHJveWVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE2MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQ
YWdlOjpuZXR3b3JrUmVwbHlQYXJlbnRDaGFuZ2VkKToKKworMjAxMy0wNS0xMiAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHVw
ZGF0aW5nIHRoZSBXZWIgSW5zcGVjdG9yIHRvb2xiYXIgaGVpZ2h0LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU5OTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8gYW5kIEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzZXRUb29sYmFySGVpZ2h0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorCisyMDEzLTA1LTEzICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XSBGaXggYSBjcmFzaCBvbiBzdGFydHVwIGluIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxQb2xp
Y3lGdW5jdGlvbiB3aXRoIE1TVkMKKworICAgICAgICBSZXZpZXdlZCBieSBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4uCisKKyAgICAgICAgSXQncyBub3QgY2xlYXIgd2h5IGl0IGNyYXNoZXMsIGJ1dCBo
ZXJlJ3MgbXkgZ3Vlc3MgYnkgbG9va2luZyBhdCB0aGUgZ2VuZXJhdGVkCisgICAgICAgIGFzc2Vt
Ymx5IGNvZGU6CisgICAgICAgIFNpbmNlIHdlJ3JlIHVzaW5nIGEgbWVtYmVyIGZ1bmN0aW9uIHBv
aW50ZXIgdG8gUG9saWN5Q2hlY2tlciwgdGhlIHJlcHJlc2VudGF0aW9uCisgICAgICAgIGlzIG5v
dCBuZWNlc3NhcmlseSBqdXN0IGEgc2ltcGxlIHBvaW50ZXIgYW5kIG1pZ2h0IGJlIGEgYmlnZ2Vy
IHN0cnVjdHVyZSB1c2VkCisgICAgICAgIHRvIGhhbmRsZSB2aXJ0dWFsIGZ1bmN0aW9ucyByZXNv
bHV0aW9uLgorICAgICAgICBGb3IgYSBmdW5jdGlvbiB0YWtpbmcgc3VjaCBhIGZ1bmN0aW9uICJw
b2ludGVyIiBhcyBwYXJhbWV0ZXIsIHRoZSBjb21waWxlciBkb2Vzbid0CisgICAgICAgIHNlZW0g
dG8gaGF2ZSB0aGUgY2FsbGVyIGFuZCBjYWxsZWUgYWdyZWUgb24gd2hpY2ggY29udmVudGlvbiB0
byB1c2UgaWYgdGhlIGZ1bmN0aW9uCisgICAgICAgIHBvaW50ZXIncyBjbGFzcyBpcyBub24tdmly
dHVhbCBhbmQgb25seSBvbmUgb2YgdGhlIGVuZHMgZG9lc24ndCBrbm93IGFib3V0IGl0LgorCisg
ICAgICAgIEluY2x1ZGluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbWVtYmVyIGZ1bmN0aW9uIHBv
aW50ZXIncyBjbGFzcyBmaXhlcyB0aGUgY3Jhc2guCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKworMjAxMy0wNS0wOSAgQW5kcmVhcyBLbGluZyAg
PGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1F0XVtXSzFdUkVHUkVTU0lPTihyMTQ5NTMy
KSB0c3RfcXdlYmVsZW1lbnQgYW5kIHRzdF9xd2ViZnJhbWUgQVBJIHRlc3RzIGNyYXNoLgorICAg
ICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTU4NTU+CisKKyAgICAgICAgRml4IG9idmlvdXMg
b2ZmLWJ5LW9uZSBtaXN0YWtlLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAg
ICAgICAgKFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5KToKKworMjAxMy0wNS0wNyAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBDcmFz
aCB3aGVuIGNhbGxpbmcgUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzQzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEVuc3VyZSB3ZSBob2xkIHRoZSBK
U0xvY2sgd2hlbiBjb252ZXJ0aW5nIEpTVmFsdWUgdG8gSlNWYWx1ZVJlZi4KKworICAgICAgICAq
IEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChzZXR1cFNjcmlwdENvbnRleHQpOgorICAg
ICAgICAoUVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVy
OjpldmFsdWF0ZUphdmFTY3JpcHQpOgorCisyMDEzLTA1LTAzICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KKworICAgICAgICBTdHlsZVJlc29sdmVyOiBIYXZlICJsaXN0IG9mIG1h
dGNoZWQgcnVsZXMiIEFQSSB2ZW5kIGludGVybmFsIHR5cGVzIGluc3RlYWQgb2YgQ1NTT00gd3Jh
cHBlcnMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNTU2Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5j
cHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c3R5bGVQcm9wZXJ0eSk6CisKKyAgICAgICAgICAg
IFR3ZWFrZWQgZm9yIGNoYW5nZXMgaW4gU3R5bGVSZXNvbHZlciBBUEkuCisKKzIwMTMtMDQtMzAg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGNyZWF0
ZSBTdHlsZVJlc29sdmVycyBqdXN0IHRvIGludmFsaWRhdGUgdGhlbS4KKyAgICAgICAgPGh0dHA6
Ly93ZWJraXQub3JnL2IvMTE1NDM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdh
cmVuLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVt
ZW50OjpzdHlsZVByb3BlcnR5KToKKworMjAxMy0wNC0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVj
b3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVNZXNzYWdl
IHNob3VsZCBpbmNsdWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXIgd2hlcmUgcG9zc2libGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDkyOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oOgorCisyMDEzLTA0LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxh
bi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gQW5pbWF0ZWQgb3BhY2l0eSBkb2Vz
IG5vdCB0cmlnZ2VyIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUxMDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgV2Ugc2hvdWxkIHRyaWdnZXIgY29tcG9zaXRpbmcg
b24gYW5pbWF0ZWQgb3BhY2l0eSBhcyBpdCBpcyBhbHdheXMgZmFzdGVyIG9uIFF0LgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICBWaWRlb1Ry
aWdnZXIgcmVtb3ZlZCBiZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBkaXNhYmxlZCBBQyBmb3Igdmlk
ZW8gaW4gcXdlYnNldHRpbmdzLgorCisyMDEzLTA0LTIzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0sxXSBNZW1vcnlDYWNo
ZSBpcyBub3QgY2xlYW5lZCBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBKb2NlbHlu
IFR1cmNvdHRlLgorCisgICAgICAgIEVuYWJsZSBkZWxldGlvbiBvZiBkZWFkIHJlc291cmNlcyBp
biB0aGUgbWVtb3J5IGNhY2hlIGFzIGxvbmcgYXMgdGhlIE1lbW9yeUNhY2hlIGlzIGVuYWJsZWQu
CisKKyAgICAgICAgVGhpcyBjYW4gYmUgZGlzYWJsZWQgb3IgdHVuZWQgdXNpbmcgdGhlIGR5bmFt
aWMgcHJvcGVydHkgICJfcV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsIi4KKyAgICAg
ICAgVGhlIGRlZmF1bHQgaXMgc2V0IHRvIG1hdGNoIHRoYXQgb2YgbW9zdCBvdGhlciBwb3J0cyBh
bmQgV0syIHdpdGggY2FjaGUgaW4gV2ViQnJvd3NpbmcgbW9kZS4KKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPYmplY3RDYWNoZUNh
cGFjaXRpZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCk6CisKKzIwMTMtMDQtMTcgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWVkIEpTR2xv
YmFsRGF0YSB0byBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE0Nzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbCBQaXpsby4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpqYXZhU2NyaXB0T2JqZWN0c0NvdW50KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJG
cmFtZUFkYXB0ZXI6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisKKzIwMTMtMDQtMTUg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgbW9yZSAjaW5j
bHVkZXMgZnJvbSBGcmFtZS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTQ2NDIKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1FXZWJQYWdlQWRhcHRlci5jcHA6CisKKzIwMTMtMDQtMTEgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBFdmVudEhhbmRsZXIg
c2hvdWxkIGhhbmRsZSBTcGFjZSBhbmQgQmFja1NwYWNlIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0NDI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICBSZW1vdmUgb3VyIG93biBoYW5kbGluZyBvZiBz
cGFjZSBhbmQgYmFja3NwYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VB
ZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU2Nyb2xsaW5nKToK
KyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjprZXlQcmVzc0V2ZW50KToKKworMjAxMy0wNC0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBNYXNzIHJlbW92ZSBhbGwgdGhlIGVtcHR5IGRp
cmVjdG9yaWVzCisKKyAgICAgICAgUnViYmVyc3RhbXBlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlczogUmVtb3ZlZC4KKwor
MjAxMy0wNC0wOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZWQgYml0cm90dGVkIFRpbWVvdXRDaGVja2VyIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDMzNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKworMjAxMy0wNC0xMCAgSm9zZSBMZWppbiBQSiAg
PGpvc2UubGVqaW5AZ21haWwuY29tPgorCisgICAgICAgIFtRdF0gQWRkIEFQSSBpbiBRV2ViU2V0
dGluZ3MgZm9yIHNldHRpbmcgdGhlIENTUyBtZWRpYSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM4NTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBKb2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlKToKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0Q1NTTWVkaWFUeXBlKToKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6Y3NzTWVkaWFUeXBlKToKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvdmVycmlkZU1lZGlh
VHlwZSk6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKHRzdF9RV2ViUGFnZSk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmNzc01lZGlhVHlwZUds
b2JhbFNldHRpbmcpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjc3NNZWRpYVR5cGVQYWdlU2V0
dGluZyk6CisKKzIwMTMtMDQtMDkgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gc2VydmljZVNjcmlwdGVk
QW5pbWF0aW9ucyBleHBlY3RzIHRpbWUgaW4gc2Vjb25kcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KKworICAgICAgICBXZSd2ZSBiZWVuIGV4cG9zaW5nIGRpZmZlcmVudCB0
aW1lIHVuaXQgZm9yIHJlcXVlc3RBbmltYXRpb25GcmFtZSBiZWNhdXNlCisgICAgICAgIG9mIHdy
b25nIGNvbnZlcnNpb24gYmVmb3JlIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMgZnVuY3Rpb24g
Y2FsbHMuCisgICAgICAgIEZpeGVkIGl0IHRvIHVzZSBzZWNvbmRzIGluc3RlYWQgb2YgbWlsbGlz
ZWNvbmRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOiBS
ZW1vdmUgdW5uZWNlc3NhcnkgY29udmVyc2lvbi4KKworMjAxMy0wNC0wOCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEhUTUwgTm90aWZp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTQyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6
Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
Ojpub3RpZmljYXRpb25DbGlja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpyZW1vdmVSZXBsYWNlZE5vdGlmaWNhdGlvbkZyb21RdWV1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZHVtcFJlcGxh
Y2VkSWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0OjpkdW1wU2hvd1RleHQpOgorCisyMDEzLTA0LTA1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFkZSBVU0UoSlNDKSB1bmNvbmRpdGlvbmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQwNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnNj
cmlwdHdvcmxkLmNwcDoKKyAgICAgICAgKFFXZWJTY3JpcHRXb3JsZDo6UVdlYlNjcmlwdFdvcmxk
KToKKworMjAxMy0wNC0wNCAgU3plIEhvd2UgS29oICA8c3plaG93ZS5rb2hAZ21haWwuY29tPgor
CisgICAgICAgIFtRdF0gZG9jczogRml4IG1vZHVsZSBuYW1lIGZvcm1hdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMjA5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICBNYWtlIFFEb2MtZ2VuZXJhdGVk
IGRvY3VtZW50YXRpb24gZm9sbG93IHRoZSBjb252ZW50aW9ucyBhdAorICAgICAgICBodHRwOi8v
cXQtcHJvamVjdC5vcmcvd2lraS9TcGVsbGluZ19Nb2R1bGVfTmFtZXNfaW5fUXRfRG9jdW1lbnRh
dGlvbgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgICogQXBpL3F3
ZWJraXRnbG9iYWwuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5jcHA6Cisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogV2lkZ2V0QXBpL3FncmFw
aGljc3dlYnZpZXcuY3BwOgorICAgICAgICAqIFdpZGdldEFwaS9xd2ViZnJhbWUuY3BwOgorICAg
ICAgICAqIFdpZGdldEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LWJyaWRnZS5xZG9jOgorICAgICAgICAq
IGRvY3MvcXR3ZWJraXQtZ29lcy1tb2JpbGUucWRvYzoKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0
LnFkb2M6CisKKzIwMTMtMDMtMjggIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxl
bmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gU3dpdGNoIENvbnRleHRNZW51IGlt
cGxlbWVudGF0aW9uIHRvIENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNTM1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQWRqdXN0IENvbnRleHRNZW51Q2xp
ZW50UXQgYW5kIFFXZWJQYWdlQWRhcHRlciB0byB1c2UgQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9N
RU5VUworICAgICAgICBVU0UgZmxhZyBieSBpbXBsZW1lbnRpbmcgY3VzdG9taXplTWVudSgpIGlu
c3RlYWQgb2YgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoKQorICAgICAgICBhbmQgYnkg
Y2FsbGluZyBtZW51LT5pdGVtcygpIGluc3RlYWQgb2YgbWVudS0+cGxhdGZvcm1EZXNjcmlwdGlv
bigpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFF0OjpjdXN0b21pemVNZW51KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0Lmg6CisgICAgICAg
IChDb250ZXh0TWVudUNsaWVudFF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFn
ZUFkYXB0ZXIuY3BwOgorICAgICAgICAoZGVzY3JpcHRpb25Gb3JQbGF0Zm9ybU1lbnUpOgorICAg
ICAgICAoUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudE1lbnVBY3Rpb25z
KToKKworMjAxMy0wMy0yNyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRvY2stdG8tcmlnaHQgb2YgdGhlIFdlYiBJbnNwZWN0
b3IgaW4gdGhlIE1hYyBwb3J0LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgdGhpcyByZXF1aXJl
cyBTYWZhcmkgY2hhbmdlcywgc28gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIG5pZ2h0bHkgYnVpbGRz
LgorCisgICAgICAgIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExMzM0MQorICAgICAgICByZGFyOi8v
cHJvYmxlbS8xMDM2ODE1MgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmZyb250ZW5kTG9hZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmF0dGFjaFdpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzZXRBdHRh
Y2hlZFdpbmRvd1dpZHRoKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5oOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdCk6CisKKzIwMTMtMDMt
MjYgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IFNo
YWRvd0NvbnRlbnRzIGluIEhpdFRlc3RzIGJ5IGRlZmF1bHQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMxNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVB
ZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OmhpdFRlc3RDb250ZW50KToK
KworMjAxMy0wMy0yNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEF1dG9nZW5lcmF0ZSB0aGUgc2Nyb2xsQW5pbWF0b3JFbmFibGVkIHNldHRpbmcgaW4gU2V0dGlu
Z3MuaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MzI1MworCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBs
eSk6IFVwZGF0ZSBjYWxsIHRvIFdlYkNvcmUgdG8gdXNlIHNldFNjcm9sbEFuaW1hdG9yRW5hYmxl
ZChib29sKS4KKworMjAxMy0wMy0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFtRdF0gRml4IHRzdF9RV2ViRWxlbWVudDo6cmVuZGVyKCkgQVBJIHRl
c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICBVbm1h
cmsgdGhlIHBhc3NpbmcgcGFydCBvZiB0aGlzIHRlc3RjYXNlLgorCisgICAgICAgICogdGVzdHMv
cXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVu
dDo6cmVuZGVyKToKKworMjAxMy0wMy0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4u
amVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEVuYWJsZSBrZXJuaW5nIGJ5IGRlZmF1
bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcw
NAorCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVyY290dGUuCisKKyAgICAgICAgRW5h
YmxlIGRlZmF1bHQga2VybmluZyB3aGVuIGZhc3Qga2VybmluZyBpcyBhdmFpbGFibGUuCisKKyAg
ICAgICAgVG8gc3VwcG9ydCBsYXlvdXQgdGVzdHMgdGhhdCBkZXBlbmQgb24ga2VybmluZyBiZWlu
ZyBvZmYgYnkgZGVmYXVsdCwKKyAgICAgICAgYSBtZXRob2QgaXMgYWRkZWQgdG8gRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQgdG8gcmVzZXQgdGhlIGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6cmVzZXREZWZhdWx0VHlwZXNldHRpbmdGZWF0dXJlcyk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlh
bGl6ZVdlYktpdFF0KToKKworMjAxMy0wMy0xOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFN1cHBvcnQgLXdlYmtpdC1mb250
LXNtb290aGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA2MDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAg
ICAgICBFeHBvcnQgYW4gaW50ZXJmYWNlIHNvIERSVCBjYW4gYWxzbyBkaXNhYmxlIGZvbnQtc21v
b3RoaW5nIGxpa2UgV1RSIGRvZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
c2V0U2hvdWxkVXNlRm9udFNtb290aGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMy0wMy0xNSAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhpZGUgTWFpblJlc291cmNlTG9hZGVyIGZyb20g
dGhlIG91dHNpZGUgd29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwOTk3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
OgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRRdCk6CisKKzIwMTMtMDMtMTUgIEFiaGlzaGVr
IEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXBsYWNlIHN0YXRpY19j
YXN0cyB3aXRoIHRvKiBoZWxwZXIgZnVuY3Rpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3Rl
cGhlbiBDaGVubmV5LgorCisgICAgICAgIHRvKiBoZWxwZXIgZnVuY3Rpb25zIGFyZSBwcmVmZXJy
ZWQgb3ZlciBzdGF0aWNfY2FzdCBjYWxscyBzaW5jZSB0aGV5CisgICAgICAgIGhlbHAgdG8gY2F0
Y2ggYmFkIGNhc3RzIGVhc2lseSBvbiB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cmVkaXJlY3REYXRhVG9QbHVnaW4pOgorCisy
MDEzLTAzLTE1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29t
PgorCisgICAgICAgIFtRdF0gQnVpbGQgZXJyb3Igd2l0aCBidWlsZGluZyB3aXRoIFF0IDUuMQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDM1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAgICAgUUFjY2Vzc2li
bGVXaWRnZXQgaGFzIG1vdmVkIHRvIHByaXZhdGUuCisKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdl
YnZpZXdhY2Nlc3NpYmxlX3AuaDoKKworMjAxMy0wMy0xNSAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBVbnJldmlld2VkIHRyaXZpYWwg
RFJUIEFTU0VSVCBmaXgKKworICAgICAgICByMTQ1ODA1IGVycm9uZW91c2x5IGFkZGVkIHNldENv
bnRyb2xsZXIgY2FsbHMgZm9yIGRldmljZSBvcmllbnRhdGlvbi9tb3Rpb24KKyAgICAgICAgbW9j
ayBjbGllbnRzLiBUaG9zZSBBU1NFUlQsIHRoZSBjb250cm9sbGVyIGN0b3IgYWxyZWFkeSBjYWxs
cyBzZXRDb250cm9sbGVyCisgICAgICAgIG9uIHRoZSBjbGllbnQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVy
Ojppbml0aWFsaXplV2ViQ29yZVBhZ2UpOgorCisyMDEzLTAzLTE0ICBNYW51ZWwgUmVnbyBDYXNh
c25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEFkZCBzZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkIHNldHRpbmcgdG8gV2ViQ29yZTo6UGFnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBVc2UgbmV3IHNldHRpbmdzIGZvciBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQgYW5kCisgICAgICAgIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVu
YWJsZWQuCisKKyAgICAgICAgUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBEUlQgYXMgaXQgaXMgbm90
IG5lZWRlZCBhbnltb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dG9nZ2xlU21hcnRJbnNl
cnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmlzU2VsZWN0VHJh
aWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6RWRpdG9yQ2xpZW50UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0Lmg6CisgICAgICAgIChFZGl0b3JDbGllbnRRdCk6CisKKzIwMTMtMDMtMTQgIFJpayBDYWJh
bmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KKworICAgICAgICBbUXRdW1dLMV0gUkVHUkVTU0lP
TihyMTQ1Nzg0KTogQmxlbmQgdGVzdHMgYXJlIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjMzMworCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGRlZCBjb2RlIHRvIHBhc3NlZCBjb21wb3NpdGlu
ZyBwcmVmZW5jZSB0byBXZWJDb3JlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisy
MDEzLTAzLTE0ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmVwbGFjZSBzdGF0aWNfY2FzdHMgd2l0aCB0byogaGVscGVyIGZ1bmN0aW9ucy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAgICB0byogaGVscGVyIGZ1bmN0
aW9ucyBhcmUgcHJlZmVycmVkIG92ZXIgc3RhdGljX2Nhc3QgY2FsbHMgc2luY2UgdGhleQorICAg
ICAgICBoZWxwIHRvIGNhdGNoIGJhZCBjYXN0cyBlYXNpbHkgb24gdGhlIHRlc3RpbmcgaW5mcmFz
dHJ1Y3R1cmUuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6Omxhc3RDaGlsZCk6
CisgICAgICAgIChRV2ViRWxlbWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoUVdlYkVsZW1l
bnQ6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246OmF0
KToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6dG9MaXN0KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0
UmVzdWx0UHJpdmF0ZTo6ZWxlbWVudEZvcklubmVyTm9kZSk6CisKKzIwMTMtMDMtMTQgIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gSW1w
cm92ZSB0aGUgaGFuZGxpbmcgb2YgbW9jayBnZW9sb2NhdGlvbiwgZGV2aWNlIG9yaWVudGF0aW9u
IGFuZCBtb3Rpb24gY2xpZW50cworCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Ri
w7guCisKKyAgICAgICAgVGhlIG1vY2sgdmVyc2lvbnMgb2YgdGhlc2Ugd2ViIGZhY2luZyBmZWF0
dXJlcyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIHdoZW4KKyAgICAgICAgcnVubmluZyBpbiBEdW1w
UmVuZGVyVHJlZSBvbmx5LiBJbiBvcmRlciBmb3IgdGhlbSB0byB3b3JrLCBubyBleHRyYSBRdCBt
b2R1bGVzCisgICAgICAgIHN1Y2ggYXMgUXRMb2NhdGlvbiBhcmUgYWN0dWFsbHkgbmVlZGVkLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggZGVjb3VwbGVzIGVuYWJsaW5nIGRldmljZSBvcmllbnRhdGlv
bi9tb3Rpb24gYW5kIGdlb2xvY2F0aW9uIGZyb20KKyAgICAgICAgdGhlIHVuZGVybHlpbmcgUXQg
bW9kdWxlcyBhbmQgbWFrZXMgdGhlbSBhdmFpbGFibGUgaW4gZGV2ZWxvcGVyIGJ1aWxkcworICAg
ICAgICAoIXByb2R1Y3Rpb25fYnVpbGQpIGFuZCBiYWNrZWQgYnkgbW9jayBiYWNrZW5kcyB3aGVu
IHJ1bm5pbmcgaW4gZHJ0LgorCisgICAgICAgIFNvIGlmIHRoZSBRdCA1IG1vZHVsZXMgYXJlIGF2
YWlsYWJsZSwgdGhleSdsbCBiZSB1c2VkICh1bmxlc3MgZHJ0UnVuKS4gRm9yCisgICAgICAgIGRl
dmVsb3BlcnMgdGhlIHdlYiBmYWNpbmcgZmVhdHVyZXMgYXJlIGFsd2F5cyBlbmFibGVkIChhbHRo
b3VnaCByZXF1ZXN0cyB3aWxsCisgICAgICAgIHRpbWUgb3V0KSBhbmQgdGhlIG1vY2sgYmFja2Vu
ZHMgYXJlIGVuYWJsZWQgaW5zaWRlIERSVCwgYWxsb3dpbmcgZm9yIHRoZSBsYXlvdXQKKyAgICAg
ICAgdGVzdHMgdG8gcnVuIHdpdGggbGVzcyBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgSW4gYWRk
aXRpb24gdGhpcyBhbHNvIGVuYWJsZXMgdGhlIG1vY2sgZGV2aWNlIG1vdGlvbiBjbGllbnQsIHdo
aWNoIHdhcworICAgICAgICBwcmV2aW91c2x5IG5ldmVyIGluc3RhbnRpYXRlZC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZy
YW1lQWRhcHRlcjo6X3Ffb3JpZW50YXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RV2ViRnJhbWVBZGFwdGVyLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBh
Z2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNv
cmVQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaDoKKyAg
ICAgICAgKiBXaWRnZXRBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6UVdl
YkZyYW1lKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldEZlYXR1cmVQZXJtaXNzaW9uKToKKworMjAxMy0wMy0xMyAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBQb3J0IFRlc3RS
dW5uZXI6OmZpbmRTdHJpbmcgdG8gc2hhcmVkIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICBBZGQgbmV3IGZpbmQgb3B0aW9ucyB1c2Vk
IGJ5IHRoZSBEUlQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpmaW5kVGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnBhZ2UuaDoKKworMjAxMy0wMy0xMyAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBnZXQgcmlkIG9mIGhpZGRlblBhbmVscyBmaWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjI1MgorCisgICAgICAgIFJldmlld2VkIGJ5IFZz
ZXZvbG9kIFZsYXNvdi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0Lmg6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0KToK
KworMjAxMy0wMy0xMSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZW5hbWUgRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSB0byBEZWZpbml0
ZWx5UHJvY2Vzc2luZ05ld1VzZXJHZXN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorCisyMDEzLTAzLTA4ICBBcnVucHJh
c2FkIFJhamt1bWFyICA8YXJ1bnByYXNhZHJAbmRzLmNvbT4KKworICAgICAgICBbUXRdIFFXZWJT
ZXR0aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMgc2hvdWxkIHJlbGVhc2UgRmFzdE1hbGxvYydzIGZy
ZWUgcGFnZXMgdG8gT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVyY290dGUuCisK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
Y2xlYXJNZW1vcnlDYWNoZXMpOgorCisyMDEzLTAzLTA3ICBBcnVucHJhc2FkIFJhamt1bWFyICA8
YXJ1bnByYXNhZHJAbmRzLmNvbT4KKworICAgICAgICBbUXRdIFFXZWJTZXR0aW5nczo6Y2xlYXJN
ZW1vcnlDYWNoZXMgc2hvdWxkIGNsZWFyIEpTIGdhcmJhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTA5NAorCisgICAgICAgIFJldmlld2VkIGJ5
IEpvY2VseW4gVHVyY290dGUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMpOgorCisyMDEzLTAzLTA2ICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXZWJLaXRU
ZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBs
ZXRlRm9yRWxlbWVudFdpdGhJZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI2OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIw
MTMtMDMtMDYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+
CisKKyAgICAgICAgW1F0XSBJbGxlZ2FsIG5hcnJvd2luZyBpbiB0c3RfcXdlYmhpc3RvcnkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTU2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVyY290dGUuCisKKyAgICAgICAgVGhlIGJ5dGVh
cnJheSBpbiB0c3RfUVdlYkhpc3Rvcnk6OnJlc3RvcmVJbmNvbXBhdGlibGVWZXJzaW9uMSBoYXMg
aW50ZWdlcgorICAgICAgICB2YWx1ZXMgaGlnaGVyIHRoYW4gMTI3IGFzc2lnbmVkIGludG8gYW4g
YXJyYXkgb2Ygc2lnbmVkIGNoYXJzLiBUaGlzIGNhdXNlcworICAgICAgICBjb21waWxlciBlcnJv
cnMgaW4gQysrMTEgc2luY2UgaXQgYXNzaWducyBjb25zdGFudHMgKD4xMjcpIHRoYXQgZG9lcyBu
b3QKKyAgICAgICAgZml0IHRoZSBkZXN0aW5hdGlvbiAoLTEyOCB0byAxMjcpCisKKyAgICAgICAg
KiB0ZXN0cy9xd2ViaGlzdG9yeS90c3RfcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAodHN0X1FX
ZWJIaXN0b3J5OjpyZXN0b3JlSW5jb21wYXRpYmxlVmVyc2lvbjEpOgorCisyMDEzLTAzLTAzICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCBhdHRl
bXB0ZWQgYnVpbGQgZml4LiBBZGRzIGJhY2sgc29tZSBpbmNsdWRlcyByZW1vdmVkIGluCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0NDU2NS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOgorCisyMDEzLTAzLTAzICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCByb2xs
b3V0IG9mIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvcjE0NDUzMAorICAgICAgICBBcyBkZXNjcmli
ZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTE2NyBhbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTAzNSwg
dGhpcyBwYXRjaCBjYXVzZWQgYQorICAgICAgICBsYXJnZSBudW1iZXIgb2YgQVNTRVJUcyBpbiBj
aHJvbWl1bS13aW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFw
dGVyLmNwcDoKKworMjAxMy0wMy0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyBm
cm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Lmg6CisKKzIwMTMtMDItMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVkdWNlIGFtb3VudCBvZiByZWJ1aWxkaW5nIHdoZW4gdG91Y2hpbmcgbmV0d29y
a2luZyBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTEwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAg
ICBBZGRpbmcgaW5jbHVkZXMgdGhhdCBhcmUgbm93IG5lY2Vzc2FyeSBiZWNhdXNlIFdlYkNvcmUg
aGVhZGVycyBkb24ndCBoYXZlIHRoZW0KKyAgICAgICAgYW55IG1vcmUuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKworMjAxMy0wMy0wMSAgSmFz
b24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFpbC5jb20+CisKKyAgICAgICAgTW92ZSBtYXJr
ZXJUZXh0Rm9yTGlzdEl0ZW0gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEzLTAzLTAxICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTQ0NDIyIGFuZCByMTQ0NDI0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xNDQ0MjIKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTQ0NDI0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTExNjcKKworICAgICAgICBDYXVzZWQgb3ZlciAyMCB0ZXN0cyB0byBmYWlsIGFzc2VydGlv
biBvbiBDaHJvbWl1bSBXaW4gcG9ydCBhcworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBtX3Bs
YXRmb3JtUmVxdWVzdFVwZGF0ZWQgKFJlcXVlc3RlZCBieQorICAgICAgICB0b3lvc2hpbSBvbiAj
d2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIu
Y3BwOgorCisyMDEzLTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBhbW91bnQgb2YgcmVidWlsZGluZyB3aGVuIHRvdWNoaW5nIG5ldHdv
cmtpbmcgaGVhZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTExMDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAg
ICAgQWRkaW5nIGluY2x1ZGVzIHRoYXQgYXJlIG5vdyBuZWNlc3NhcnkgYmVjYXVzZSBXZWJDb3Jl
IGhlYWRlcnMgZG9uJ3QgaGF2ZSB0aGVtCisgICAgICAgIGFueSBtb3JlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisKKzIwMTMtMDItMjQgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFN0eWxlZEVsZW1lbnQ6
IERvbid0IGV4cG9zZSBhIG11dGFibGUgZGlyZWN0IGludGVyZmFjZSB0byB0aGUgaW5saW5lIHN0
eWxlLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTA3MTE+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgUVdlYkVsZW1lbnQ6OnN0eWxlUHJv
cGVydHkoKSBpcyBhIHJlYWQtb25seSBtZXRob2QsIHNvIHJld3JpdGUgaXQgdG8gdXNlIFN0eWxl
ZEVsZW1lbnQ6OmlubGluZVN0eWxlKCkuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3Bw
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnN0eWxlUHJvcGVydHkpOgorCisyMDEzLTAyLTIzICBK
YXNvbiBBbmRlcnNzZW4gIDxqYW5kZXJzc2VuQGdtYWlsLmNvbT4KKworICAgICAgICBNb3ZlIHNl
dEF1dG9maWxsZWQgZnJvbSBUZXN0UnVubmVyIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuaDoKKworMjAxMy0wMi0yMSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFJlcGxhY2UgUVdlYlBhZ2VB
ZGFwdG9yOjpUb3VjaEFkanVzdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTAyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVz
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6YWRqdXN0UG9pbnRGb3JDbGlja2luZyk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6CisKKzIwMTMtMDItMTUgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgU2ltcGxp
ZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBKdWxpZW4gQ2hhZmZyYWl4LgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBu
ZXcgQVBJLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FX
ZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6aGl0VGVzdENv
bnRlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2lu
dEZvclRvdWNoKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU29mdHdhcmVJbnB1
dFBhbmVsKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6dXBkYXRlUG9zaXRpb25EZXBlbmRl
bnRNZW51QWN0aW9ucyk6CisKKzIwMTMtMDItMTUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1
c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gUG9ydCBHQ0NvbnRyb2xsZXIgdG8gSlND
IEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDk2OTAKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAg
IEFkZCBob29rcyB0byByZXRyaWV2ZSBKU0NvbnRleHRSZWYgYW5kIHdpbmRvdyBvYmplY3QuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2V0SlNXaW5kb3dPYmplY3QpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTMt
MDItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisK
KyAgICAgICAgW1F0XSB3aW5kb3cub3BlbiBwYXNzZXMgaGVpZ2h0IGFuZCB3aWR0aCBwYXJhbWV0
ZXJzIGV2ZW4gaWYgbm90IGRlZmluZWQgaW4gYSBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBUZXN0IHRoYXQgbWluaW11bSBz
aXplIGlzIGFwcGxpZWQgb25seSB3aGVuIHRoZSByZXF1ZXN0ZWQgc2l6ZSBpcyB0b28gc21hbGws
CisgICAgICAgIG5vdCB3aGVuIGRlZmF1bHQgaXMgcmVxdWVzdGVkLgorCisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZSk6Cisg
ICAgICAgIChUZXN0UGFnZSk6CisgICAgICAgIChUZXN0UGFnZTo6VGVzdFBhZ2UpOgorICAgICAg
ICAoVGVzdFBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChUZXN0UGFnZTo6c2xvdEdlb21l
dHJ5Q2hhbmdlUmVxdWVzdGVkKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6b3BlbldpbmRvd0Rl
ZmF1bHRTaXplKToKKworMjAxMy0wMi0xMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KKworICAgICAgICBbVGV4TWFwXSBBcHBseSBmcmFtZXMtcGVyLXNlY29uZCBk
ZWJ1ZyBjb3VudGVyIHRvIFdLMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTU0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFs
LgorCisgICAgICAgIE1ha2UgVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQgdXNlIFRleHR1cmVN
YXBwZXJGUFNDb3VudGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBl
ckxheWVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6
OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1
cmVNYXBwZXJMYXllckNsaWVudFF0Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdCk6CisKKzIwMTMtMDItMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgRGlzYWJsZSBkZWxldGUgYnV0dG9uIGNvbnRyb2xsZXIgb24gbm9uLU1hYyBwb3J0
cyBhbmQgZGVsZXRlIEVkaXRvckNsaWVudDo6c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKEVkaXRvckNsaWVudFF0
KToKKworMjAxMy0wMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgS2lsbCBUZXN0UnVubmVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDsgaW1w
bGVtZW50IHRoZSBmZWF0dXJlIHdpdGggSW50ZXJuYWxTZXR0aW5ncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MzQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5oOgorCisyMDEzLTAyLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgd29ya2VyVGhyZWFkQ291bnQgZnJvbSBUZXN0UnVu
bmVyIHRvIFdlYkNvcmUgSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkyMzkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgor
CisyMDEzLTAyLTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgcGF1c2VBbmltYXRpb24vcGF1c2VUcmFuc2l0aW9uIGZyb20gVGVzdFJ1bm5l
ciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTEwNworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEz
LTAyLTA0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAg
IEtpbGwgc3VzcGVuZEFuaW1hdGlvbigpLCByZXN1bWVBbmltYXRpb24oKSBhbmQgbnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zKCkgZnJvbSBEUlQvV1RSOyB1c2UgSW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTMtMDItMDQgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNh
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3BlY2lmaWMgRWRpdEFjdGlvbnMgZm9yIEJvbGQg
YW5kIEl0YWxpYyBjb21tYW5kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwODg0Mi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEzMDk4MjUyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1VuZG9TdGVwUXQuY3BwOgorICAgICAgICAodW5kb05hbWVGb3JFZGl0QWN0aW9uKToK
KworMjAxMy0wMi0wNCAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEFkZCBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTiB0byBkZXRlY3QgYmFk
IGNhc3QgaW4gRE9NLCBDU1MsIGV0Yy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODY4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisK
KzIwMTMtMDItMDMgIEt3YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CisKKyAg
ICAgICAgRml4IGJ1aWxkIHdhcm5pbmcgYWZ0ZXIgcjE0MTQ3MworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudGFybyBIYXJhLgorCisgICAgICAgIEZpeCAtV3VudXNlZC1wYXJhbWV0ZXIgYnVpbGQg
d2FybmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKToKKworMjAxMy0wMi0wMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBNYWtlIFFXZWJIaXN0b3J5IHVuaXQgdGVzdHMg
bW9yZSByb2J1c3QKKworICAgICAgICBSZXZpZXdlZCBieSBKb2NlbHluIFR1cmNvdHRlbi4KKwor
ICAgICAgICBUaGUgdGVzdHMgd2VyZSB1c2luZyBhIFFFdmVudExvb3A6OmV4ZWMoKSBjYWxsIHRv
IHZlcmlmeSB0aGUgZW1pc3Npb24KKyAgICAgICAgb2YgdGhlIGxvYWRGaW5pc2hlZCgpIHNpZ25h
bCBhZnRlciBjYWxsaW5nIGZvciBleGFtcGxlIGJhY2soKSBvciBmb3J3YXJkKCkuCisgICAgICAg
IEhvd2V2ZXIgc29tZXRpbWVzIHRoZSBjYWxsIHRvIGJhY2soKSBtYXkgZW1pdCB0aGUgc2lnbmFs
IGltbWVkaWF0ZWx5IGFuZAorICAgICAgICBzb21ldGltZXMgYXN5bmMsIGNhdXNpbmcgaW5zdGFi
aWxpdGllcyBpbiB0ZXN0IHJ1bnMuIFRoZSBjYWxsIHRvIGV4ZWMoKQorICAgICAgICBhbHNvIG1l
YW5zIHRoYXQgaWYgdGhlcmUgd2FzIGEgYnVnIHRoZW4gdGhlIHJlc3Qgd291bGQgaGFuZyBmb3Jl
dmVyIGJlY2F1c2UKKyAgICAgICAgZXhlYygpIGhhcyBubyB0aW1lb3V0LgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW50cm9kdWNlcyBhIHNpbXBsZSBTaWduYWxCYXJyaWVyIGNsYXNzIHRoYXQgc29s
dmVzIGJvdGggaXNzdWVzOgorCisgICAgICAgICgxKSBlbnN1cmVTaWduYWxFbWl0dGVkKCkgc3Vw
cG9ydHMgdGhlIGltbWVkaWF0ZSBzaWduYWwgZW1pc3Npb24gY2FzZSBhcyB3ZWxsCisgICAgICAg
IGFzIHRoZSBhc3luYyBvbmUuCisKKyAgICAgICAgKDIpIFRocm91Z2ggdGhlIHVzZSBvZiBRU2ln
bmFsU3B5J3Mgd2FpdCgpIHRoZXJlJ3MgYW4gYWN0dWFsIHRpbWVvdXQuCisKKyAgICAgICAgKiB0
ZXN0cy9xd2ViaGlzdG9yeS90c3RfcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAodHN0X1FXZWJI
aXN0b3J5Ojppbml0KToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6Y2xlYW51cCk6CisgICAg
ICAgICh0c3RfUVdlYkhpc3Rvcnk6OmJhY2spOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5Ojpm
b3J3YXJkKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6Z29Ub0l0ZW0pOgorICAgICAgICAo
dHN0X1FXZWJIaXN0b3J5OjpzZXJpYWxpemVfMik6CisgICAgICAgICogdGVzdHMvdXRpbC5oOgor
ICAgICAgICAod2FpdEZvclNpZ25hbCk6CisgICAgICAgIChTaWduYWxCYXJyaWVyKToKKyAgICAg
ICAgKFNpZ25hbEJhcnJpZXI6OlNpZ25hbEJhcnJpZXIpOgorICAgICAgICAoU2lnbmFsQmFycmll
cjo6ZW5zdXJlU2lnbmFsRW1pdHRlZCk6CisKKzIwMTMtMDItMDEgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IGhhbmdpbmcgZGVs
ZXRlUVdlYlZpZXdUd2ljZSB0ZXN0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuLgorCisgICAgICAgIERvbid0IHVzZSBRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5j
ZSgpLT5leGVjKCksIGJlY2F1c2UgaW4gY2FzZSBvZiBhIGJ1ZworICAgICAgICB0aGF0IG5ldmVy
IGZpbmlzaGVzLiBJbnN0ZWFkIHVzZSB3YWl0Rm9yU2lnbmFsKCkgd2hpY2ggaGFzIHRoZSBjb25j
ZXB0IG9mCisgICAgICAgIGEgdGltZW91dC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRlbGV0ZVFXZWJWaWV3VHdp
Y2UpOgorCisyMDEzLTAyLTAxICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lh
LmNvbT4KKworICAgICAgICBbUXRdIFNraXAgaGFuZ2luZyBXZWJHTCBzb2Z0d2FyZSBmYWxsYmFj
ayB0ZXN0cworCisgICAgICAgIFJldmlld2VkIGJ5IEFsbGFuIFNhbmRmZWxkIEplbnNlbi4KKwor
ICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA1ODIwLgorCisgICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNz
d2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6d2ViZ2xTb2Z0d2Fy
ZUZhbGxiYWNrVmVydGljYWxPcmllbnRhdGlvbik6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2Vi
Vmlldzo6d2ViZ2xTb2Z0d2FyZUZhbGxiYWNrSG9yaXpvbnRhbE9yaWVudGF0aW9uKToKKworMjAx
My0wMi0wMSAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGRpZ2lhLmNvbT4KKworICAgICAg
ICBbUXRdIHZpc2liaWxpdHkgb2YgZW1iZWRkZWQgd2lkZ2V0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzMjcKKworICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBJbiBvdmVycmlkaW5nIFdpZGdldDo6
aGlkZSBpbiBRdFBsdWdpbldpZGdldCwgd2UgZm9yZ290IHRvIGNhbGwgdGhlCisgICAgICAgIHBh
cmVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYXMgaXQgdHVybnMsIG91dCBkb2VzIHNlbnNpYmxl
IHN0dWZmLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisKKzIwMTMtMDItMDEgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBkaWdpYS5jb20+
CisKKyAgICAgICAgW1F0XSB2aXNpYmlsaXR5IG9mIGVtYmVkZGVkIHdpZGdldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzI3CisKKyAgICAgICAg
UnViYmVyLXN0YW1wZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgSW4gb3ZlcnJpZGlu
ZyBXaWRnZXQ6OnNob3cgaW4gUXRQbHVnaW5XaWRnZXQsIHdlIGZvcmdvdCB0byBjYWxsIHRoZQor
ICAgICAgICBwYXJlbnQgaW1wbGVtZW50YXRpb24sIHdoaWNoIGFzIGl0IHR1cm5zLCBvdXQgZG9l
cyBzZW5zaWJsZSBzdHVmZi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorCisyMDEzLTAxLTMxICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViS2l0MjogcHJvdmlkZSBuZXcgYnVuZGxlIEFQSXMgdG8gYWxs
b3cgYnVuZGxlIGNsaWVudHMgdG8gYmUgbm90aWZpZWQgb2YgcGFzdGVib2FyZCBhY2Nlc3MuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzOTYuCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjkyMDQ2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZHMgc3R1YiBpbXBsZW1lbnRhdGlvbiBm
b3IgV2ViS2l0IG9mIHRoZSBuZXcgRWRpdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRRdDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFF0OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCisyMDEzLTAxLTMw
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAg
ICAgIFtRdF0gRml4IG1pbmltYWwgYnVpbGQgYWZ0ZXIgcjE0MTI1OS4KKworICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVh
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKworMjAxMy0wMS0yNiAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEuCisKKyAgICAgICAgQnVpbGQgZml4ZXMgZm9yIEdTdHJlYW1lciBOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0LiBTb21lCisgICAgICAgIG1vcmUgY2hhbmdlcyB3
aWxsIGJlIG5lZWRlZCB0byB1c2UgdGhlIG5ldworICAgICAgICBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyIHRob3VnaC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpGdWxsU2NyZWVu
VmlkZW9RdCk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6fkZ1bGxTY3Jl
ZW5WaWRlb1F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjplbnRlckZ1
bGxTY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojpl
eGl0RnVsbFNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVv
UXQ6OmlzVmFsaWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb1F0KToKKwor
MjAxMy0wMS0zMCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMV0gU3VwcG9ydCBiZXR0ZXIgdGVzdGluZyBvZiBXZWIgTm90
aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA3Njk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAg
ICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgdGhlIERSVCB0byBjbGVhciBub3RpZmljYXRpb24g
cGVybWlzc2lvbnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdDo6Y2xlYXJDYWNoZWRQZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dC5oOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQpOgorCisyMDEzLTAx
LTMwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAg
IFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1cmVNYXBwZXJMYXllci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzA3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIEluY2x1ZGUgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCB0byB1c2UgdG9UZXh0dXJlTWFwcGVyTGF5ZXIoKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmNw
cDoKKworMjAxMy0wMS0zMCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMV0gUmVtZW1iZXIgZGVuaWVkIHBlcm1pc3Npb24g
Zm9yIG5vdGlmaWNhdGlvbnMgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDc2OTQKKworICAgICAgICBSZXZpZXdlZCBieSBKb2NlbHluIFR1cmNvdHRl
LgorCisgICAgICAgIFN0b3JlIGRlbmllZCBwZXJtaXNzaW9ucy4gQWNjb3JkaW5nIHRvIHRoZSBz
cGVjaWZpY2F0aW9uLCB3ZSBzaG91bGQKKyAgICAgICAgYXNrIHRoZSB1c2VyIGFnYWluIGlmIGhl
IGhhcyBhbHJlYWR5IGdyYW50ZWQgb3IgZGVuaWVkIHBlcm1pc3Npb24uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6cmVxdWVzdFBlcm1pc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnNl
dE5vdGlmaWNhdGlvbnNBbGxvd2VkRm9yRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6CisgICAgICAgIChOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFw
dGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Tm90aWZpY2F0aW9uc0FsbG93
ZWRGb3JGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6
CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpz
ZXRGZWF0dXJlUGVybWlzc2lvbik6CisKKzIwMTMtMDEtMjkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDA5ODMuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE0MDk4
MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mjc3
CisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgdGhpcyBBUEkgaGFzIG9uZSBsYXN0IGNsaWVudCAo
UmVxdWVzdGVkIGJ5CisgICAgICAgIGFiYXJ0aCBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwbGF5Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpj
YW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6OnJlbW92ZVJlcGxhY2VkTm90aWZpY2F0aW9uRnJvbVF1ZXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkdW1wUmVwbGFj
ZWRJZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OmR1bXBTaG93VGV4dCk6CisKKzIwMTMtMDEtMjkgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNo
YWVsLmJydW5pbmdAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0sxXSBGaXggUU9iamVjdCBC
cmlkZ2UgdGVzdHMgZXhwZWN0ZWQgb3V0cHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3ODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
SGF1c21hbm4uCisKKyAgICAgICAgVGhlICJub3QgYSBmdW5jdGlvbiIgVHlwZUVycm9yIG5vdyBp
bmNsdWRlcyB0aGUgY2FsbCB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuCisgICAgICAgIENvcnJlY3Qg
ZXhwZWN0ZWQgdmFsdWVzIGFjY29yZGluZ2x5LgorCisgICAgICAgICogdGVzdHMvcW9iamVjdGJy
aWRnZS90c3RfcW9iamVjdGJyaWRnZS5jcHA6CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6
Y29ubmVjdEFuZERpc2Nvbm5lY3QpOgorCisyMDEzLTAxLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBdIEVuYWJsZSBkZWJ1ZyBi
b3JkZXJzIGFuZCByZXBhaW50IGNvdW50ZXIgdmlhIFNldHRpbmdzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MTk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBJZiBXRUJLSVRfU0hPV19DT01QT1NJ
VElOR19ERUJVR19WSVNVQUxTIGlzIHNldCB0byAxLCBzZXQKKyAgICAgICAgc2hvd0RlYnVnQm9y
ZGVycyBhbmQgc2hvd1JlcGFpbnRDb3VudGVyIGluIFNldHRpbmdzIHRvIHRydWUuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6
OmFwcGx5KToKKworMjAxMy0wMS0yNCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgVGhlcmUgYXJlIGEgZmV3IG9mIHdyb25nIHJlbW92ZUFsbENoaWxkcmVu
KCkgY2FsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3NzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICog
QXBpL3F3ZWJlbGVtZW50LmNwcDogUmVwYWxjZWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKSB3aXRoIHNh
ZmVyIHJlbW92ZUNoaWxkcmVuKCkKKyAgICAgICAgKFFXZWJFbGVtZW50OjpyZW1vdmVBbGxDaGls
ZHJlbik6CisKKzIwMTMtMDEtMjMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIHNoYWRvd0FuY2VzdG9yTm9kZSgpIHNob3VsZCBiZSByZW5hbWVkIHRv
IGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGlt
aXRyaSBHbGF6a292LgorCisgICAgICAgIFNpbmNlIE5vZGU6OnNoYWRvd0FuY2VzdG9yTm9kZSgp
IGlzIGRlcHJlY2F0ZWQsIHdlIHdvdWxkIGxpa2UgdG8gcmVuYW1lIGl0IHRvIHByZXZlbnQgZnJv
bSBmdXJ0aGVyIHVzZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5jcHA6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1ldGhvZFF1ZXJ5KToKKworMjAxMy0wMS0yMiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHBs
YXRmb3JvbSBzdHJhdGVneSBmb3IgbG9jYWwgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KKworICAgICAgICBVcGRhdGUgZm9yIG5ldyBzdG9yYWdlIHN0cmF0ZWd5
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNyZWF0ZVN0b3JhZ2VTdHJhdGVneSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaDoKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc1F0KToKKworMjAxMy0wMS0yMSAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMV0gUGVybWlz
c2lvbiByZXF1ZXN0IGNhbGxiYWNrcyBmb3Igbm9uLWxlZ2FjeSBub3RpZmljYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc0MzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBKb2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgIFRyYWNrcyB0aGUg
bmV3IGNhbGxiYWNrcyB0aGUgc2FtZSB3YXkgbGVnYWN5IGNhbGxiYWNrcyBhcmUgdHJhY2tlZC4K
KworICAgICAgICBObyB0ZXN0IGFmZmVjdGVkIHlldCBhcyB3ZSBhcmUgc3RpbGwgbGFja2luZyBz
dXBwb3J0IGZvciB0ZXN0aW5nCisgICAgICAgIGZlYXR1cmUgcGVybWlzc2lvbiBjYWxsYmFja3Mu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6
cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6OmFsbG93Tm90aWZpY2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6CisgICAgICAgIChOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChDYWxsYmFja3NJbmZvKToKKwor
MjAxMy0wMS0yMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29t
PgorCisgICAgICAgIFtRdF0gVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBzdG9y
YWdlIG9mIGluc3BlY3RvciBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Nzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuLgorCisgICAgICAgIFNpbmNlIHI3Njc3MCwgUVNldHRpbmdzIGlzbid0IHF1
ZXJpZWQgYW55bW9yZSB0byBwZXJzaXN0IGluc3BlY3RvcgorICAgICAgICBzZXR0aW5ncyBsaWtl
IHdoZXRoZXIgb3Igbm90IHRoZSBkZWJ1Z2dlciBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICAg
ICAgIEl0IHN0aWxsIHNlZW1zIHRvIGJlIHVzZWQgZm9yIHRoZSBkZWZhdWx0IGF0dGFjaCBoZWln
aHQuCisKKyAgICAgICAgVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGFjY29yZGluZ2x5LgorCisg
ICAgICAgICogV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3IuY3BwOgorCisyMDEzLTAxLTIxICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQ3Jhc2ggaW4gZ21haWwgb24gZW5hYmxpbmcgZGVza3RvcCBub3RpZmljYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2OTkKKworICAg
ICAgICBQYXRjaCBieSBEYXZpZCBSb3NjYS4KKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBU
dXJjb3R0ZS4KKworICAgICAgICBQcm90ZWN0IGFnYWluc3QgY2FsbGJhY2sgdGhhdCBtYXkgYmUg
bnVsbC4gVGhpcyBhbHNvIG1hdGNoZXMgV2ViS2l0MiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6YWxsb3dOb3RpZmljYXRp
b25Gb3JGcmFtZSk6CisKKzIwMTMtMDEtMTggIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEludHJvZHVjZSBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50IGFuZCB0b0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IGluc3RlYWQgb2YgdG9UZXh0Rm9y
bUNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNzA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIFVw
ZGF0ZWQgY29kZSB0byB1c2UgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCBhbmQgdG9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCBjb21iaW5hdGlvbiBpbnN0ZWFkIG9mCisgICAgICAgIHRv
VGV4dEZvcm1Db250cm9sLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFw
dGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RFdmVudCk6CisK
KzIwMTMtMDEtMTggIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgorCisgICAg
ICAgIEFkZCBleHBsaWNpdCBrZXl3b3JkIHRvIGNvbnN0cnVjdG9ycyBpbiBwbGF0Zm9ybS1zcGVj
aWZpYyBJbnNwZWN0b3JDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNzI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4K
KworICAgICAgICBBZGQgZXhwbGljaXQga2V5d29yZCB0byBjb25zdHJ1Y3RvcnMgdGhhdCB0YWtl
IG9uZSBhcmd1bWVudAorICAgICAgICBpbiBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlv
biBvZiBJbnNwZWN0b3JDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRRdC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50UXQpOgorCisyMDEzLTAxLTE2
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAg
ICAgW1F0XSBVc2UgdGhlIHNoYXJlZCBIaXN0b3J5SXRlbSBzZXJpYWxpemF0aW9uIGZvciBRV2Vi
SGlzdG9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxsYW4gU2FuZGZlbGQgSmVuc2VuLgorCisg
ICAgICAgIEJ1bXAgdGhlIHNlcmlhbGl6YXRpb24gdmVyc2lvbiBhbmQgY2hhbmdlIHRoZSBjb2Rl
IHRvIGFib3J0IHRoZQorICAgICAgICByZXN0b3JlIG9mIGEgcHJldmlvdXMgc3RyZWFtIHZlcnNp
b24gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGtlZXAgdGhlCisgICAgICAgIHN1cHBvcnQgb2YgcmVz
dG9yaW5nIHByZXZpb3VzIHZlcnNpb25zLiBUaGlzIGlzIG1haW5seSB0byBzaW1wbGlmeQorICAg
ICAgICB0aGluZ3MgZ2l2ZW4gdGhhdCBIaXN0b3J5SXRlbSBpdHNlbGYgYWJvcnRzIGluIHRoYXQg
Y2FzZS4KKyAKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAob3BlcmF0
b3I8PCk6CisgICAgICAgIChvcGVyYXRvcj4+KToKKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9y
eS90c3RfcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5OjpzZXJpYWxp
emVfMik6IE1vZGlmeSB0aGUgdGVzdCB0byBjb3ZlciBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb25z
LgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5OjpyZXN0b3JlSW5jb21wYXRpYmxlVmVyc2lvbjEp
OiBBZGQgYSBwcmV2aW91cyB2ZXJzaW9uCisgICAgICAgIGhhcmQtY29kZWQgc3RyZWFtIHRvIHZl
cmlmeSB0aGF0IHRoZSBkZXNlcmlhbGl6YXRpb24gZG9lc24ndCBoYW5nIG9yCisgICAgICAgIGNy
YXNoLgorCisyMDEzLTAxLTE2ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBk
aWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBDcmFzaCBpbiBXZWJDb3JlOjpDYWNoZWRGcmFtZTo6
ZGVzdHJveQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0NTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBSZW1v
dmUgdGhlIGNhbGwgdG8gSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtIHdoaWNoIGlz
IHVsdGltYXRlbHkKKyAgICAgICAgY2F1c2luZyB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBv
ZiBhIHBhZ2UgdG8gYmUgYWRkZWQgdG8gdGhlIHBhZ2UgY2FjaGUuCisKKyAgICAgICAgVGhpcyBy
ZS1pbnRyb2R1Y2UgdGhlIGJ1ZyB0aGF0IHdhcyBmaXhlZCBieSB0aGlzIGxpbmUsIHdoaWNoIHdp
bGwgYmUKKyAgICAgICAgcHJvcGVybHkgZml4ZWQgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAg
ICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAob3BlcmF0b3I+Pik6CisgICAg
ICAgICogdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKHRz
dF9RV2ViSGlzdG9yeTo6c2F2ZUFuZFJlc3RvcmVfY3Jhc2hfNCk6IENvdmVyIHRoZSBjcmFzaC4K
KworMjAxMy0wMS0xMSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KworICAgICAgICBbVGV4TWFwXSBSZW5hbWUgY3VycmVudFtUcmFuc2Zvcm18T3BhY2l0eXxGaWx0
ZXJzXSBpbiBUZXh0dXJlTWFwcGVyTGF5ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJv
c2VudGhhbC4KKworICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCB1c2VzIHNldFRy
YW5zZm9ybSgpIGFuZCBzZXRPcGFjaXR5KCkgaW4KKyAgICAgICAgR3JhcGhpY3NMYXllciBpbnN0
ZWFkIG9mIFRleHR1cmVNYXBwZXJMYXllciBsaWtlIExheWVyVHJlZVJlbmRlcmVyLgorICAgICAg
ICBUaGlzIHJlbW92ZXMgdW5uZWNlc3NhcnkgcHVibGljIEFQSSBmb3IgVGV4dHVyZU1hcHBlckxh
eWVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6OnJlbmRlckNvbXBv
c2l0ZWRMYXllcnMpOgorCisyMDEzLTAxLTExICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxh
bi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0sxXSBXZWIgQXVkaW8gc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICBFeHBv
c2Ugc2V0dGluZyB0byBlbmFibGUgV2ViQXVkaW8gYXQgcnVudGltZS4KKworICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuaDoKKworMjAxMy0wMS0wOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVtb3ZlZCB0aGUgbmVlZCBmb3IgdGhlIFByb3Bvc2VkRGF0YWJhc2Ug
bWVjaGFuaXNtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA2MjkyLgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKENocm9tZUNsaWVudFF0KToKKworMjAx
My0wMS0wNyAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtxdF0g
Rml4IEVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MCBidWlsZHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyNTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBXcmFwIHRoZSBjYWxsIHRvIHNldFNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQgaW4gYW4gaWZkZWYgaW4gb3JkZXIKKyAgICAgICAgdG8gZW5zdXJlIHRoYXQg
aXQncyBvbmx5IGNhbGxlZCB3aGVuIElGUkFNRV9TRUFNTEVTUyBpcyBlbmFibGVkLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgor
CisyMDEzLTAxLTA3ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TWFrZSB0aGUgSUZSQU1FX1NFQU1MRVNTIGZsYWcgcnVudGltZS1lbmFibGVkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MjEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAgICAgQWRkIGEgdG9nZ2xlIGZvciBz
ZWFtbGVzcyBJRnJhbWVzIHRvIFFUJ3MgRFJUU3Vwb3J0LgorCisyMDEzLTAxLTA3ICBNaWNoYWVs
IEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEFw
cGx5IGNvcnJlY3QgcGF0Y2ggZm9yIHRoZSBzY3JvbGxpbmcgaXNzdWUgZnJvbSBidWcgMTA1MDE0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYyMTkK
KworICAgICAgICBDb3JyZWN0IHRoZSBpZiBjb25kaXRpb24gd2hlbiBvdmVyd3JpdGluZyB0aGUg
bGF5b3V0IGRpcmVjdGlvbiBvcHRpb24KKyAgICAgICAgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhl
IGZhY2FkZSBvcHRpb25zIHRvIG9ubHkgb3ZlcndyaXRlIGlmIHRoZSBmYWNhZGUKKyAgICAgICAg
ZGlyZWN0aW9uIGlzIG5vdCBlcXVhbCB0byBMYXlvdXREaXJlY3Rpb25BdXRvLgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsbGFuIFNhbmRmZWxkIEplbnNlbi4KKworICAgICAgICAqIFdpZGdldFN1
cHBvcnQvUVN0eWxlRmFjYWRlSW1wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEdlbmVyaWNT
dHlsZU9wdGlvbik6CisKKzIwMTMtMDEtMDcgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJy
dW5pbmdAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gSG9yaXpvbnRhbCBzY3JvbGxiYXJzIGV2
ZW50cyBhcmUgb2Zmc2V0ZWQgbWFraW5nIHRoZW0gZGlmZmljdWx0IHRvIHVzZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MDE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxsYW4gU2FuZGZlbGQgSmVuc2VuLgorCisgICAgICAgIFBhdGNoIGNvLWF1
dGhvcmVkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIE9ubHkgY29weSB0aGUgbGF5b3V0
IGRpcmVjdGlvbiBmcm9tIHRoZSBmYWNhZGUgb3B0aW9ucyBpZiB0aGUKKyAgICAgICAgY3VycmVu
dCBvcHRpb24gaXMgUXQ6OkxheW91dERpcmVjdGlvbkF1dG8gaW4gb3JkZXIgdG8gcHJldmVudAor
ICAgICAgICBtaXNpbnRlcnByZXRhdGlvbnMgYXMgZGlmZmVyZW50IGxheW91dCBkaXJlY3Rpb24g
d2hlbiBoaXQgdGVzdGluZy4KKworICAgICAgICBUZXN0cyBhZGRlZCB0byB0c3RfcXdlYnZpZXcg
YW5kIHRzdF9xZ3JhcGhpY3N3ZWJ2aWV3IHRvIHZlcmlmeQorICAgICAgICB0aGF0IHRoZSB2aWV3
IGFjdHVhbGx5IGlzIHNjcm9sbGVkIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCisKKyAgICAgICAg
KiBXaWRnZXRTdXBwb3J0L1FTdHlsZUZhY2FkZUltcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Omlu
aXRHZW5lcmljU3R5bGVPcHRpb24pOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcv
cmVzb3VyY2VzL3Njcm9sbHRlc3RfcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9x
Z3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9R
R3JhcGhpY3NXZWJWaWV3KToKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojpob3Jpem9u
dGFsU2Nyb2xsYmFyVGVzdCk6CisgICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3Rf
cWdyYXBoaWNzd2Vidmlldy5xcmM6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvcmVzb3VyY2Vz
L3Njcm9sbHRlc3RfcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90
c3RfcXdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FXZWJWaWV3KToKKyAgICAgICAgKHRzdF9R
V2ViVmlldzo6aG9yaXpvbnRhbFNjcm9sbGJhclRlc3QpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2
aWV3L3RzdF9xd2Vidmlldy5xcmM6CisKKzIwMTItMTItMjMgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODA4Mzc3PiBOZXR3
b3JrIHByb2Nlc3Mgc2hvdWxkIHJlc3BlY3QgY29va2llIGFjY2VwdCBwb2xpY3kKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuaDoKKyAgICAgICAgQ29va2llc1N0cmF0ZWd5IG5vIGxvbmdlciBoYXMgbm90
aWZ5Q29va2llc0NoYW5nZWQoKS4gVGhpcyBwb3J0IGRpZG4ndCB1c2UgaXQgYW55d2F5LgorCisy
MDEyLTEyLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIHNlcGFyYXRlIGNsYXNzIGZvciBuZXR3b3JraW5nIHJlbGF0ZWQgc3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Njc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0
Ojpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpzZXRDb29r
aWVzRnJvbURPTSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJs
ZWQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVz
KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpkZWxldGVDb29raWUpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0Lmg6CisgICAgICAgIENvb2tp
ZSBmdW5jdGlvbnMgbm93IHRha2UgYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24sIG5vdCBhIE5ldHdv
cmtpbmdDb250ZXh0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRl
ci5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAg
ICAgICAgVXBkYXRlZCBmb3IgUmVzb3VyY2VIYW5kbGUgaW5jbHVkZSBjaGFuZ2VzLgorCisyMDEy
LTEyLTE4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlvbnMgZnJvbSBDb29raWVzU3RyYXRlZ3kKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTM2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc1F0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNRdC5oOgorCisyMDEyLTEyLTE3ICBPc3dhbGQgQnVkZGVuaGFnZW4gIDxvc3dh
bGQuYnVkZGVuaGFnZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gcmVtb3ZlIHNvbWUgdW5u
ZWNlc3NhcnkgQ09ORklHIGFkZGl0aW9ucworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIHF0IGlzIGFscmVhZHkgYWRkZWQgYnkgc3BlY19wcmUucHJmLCB3
YXJuX29uIGFuZCBkZXBlbmRfaW5jbHVkZXBhdGggYnkKKyAgICAgICAgZGVmYXVsdF9wcmUucHJm
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5wcmk6
CisgICAgICAgICogZGVjbGFyYXRpdmUvcHVibGljLnByaToKKworMjAxMi0xMi0xNSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBGcmFtZUxv
YWRlckNsaWVudDo6ZG93bmxvYWQgdG8gY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUxMjIK
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFVwZGF0ZSBm
b3IgV2ViQ29yZSBjaGFuZ2VzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
b252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50UXQp
OgorCisyMDEyLTEyLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZS1sYW5kaW5nIHBhdGNoIGZvciAiSW50cm9kdWNpbmcgdGhlIERhdGFiYXNlU3RyYXRlZ3kg
YW5kIGRhdGFiYXNlIHNlcnZlcnMiLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0OTM0LgorCisgICAgICAgIE5vdCByZXZpZXdlZC4KKworICAgICAg
ICBNZXJnZWQgZnJvbSByMTM3NzY3LiBQcmV2aW91c2x5IHJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6Cisg
ICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaDoKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc1F0KToKKworMjAxMi0xMi0xNCAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEzNzc2Ny4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM3
NzY3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUw
NjIKKworICAgICAgICBCcm9rZSBNYWMgYnVpbGRzLiAoUmVxdWVzdGVkIGJ5IG1sYW0gb24gI3dl
YmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaDoKKyAg
ICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0KToKKworMjAxMi0xMi0xNCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIERhdGFiYXNlU3Ry
YXRlZ3kgYW5kIGRhdGFiYXNlIHNlcnZlcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ5MzQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBUaGUgZGF0YWJhc2Ugc2VydmVyIGlzIGN1cnJlbnRseSBhIHBsYWNl
aG9sZGVyIHRoYXQgZG9lcyBub3RoaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNy
ZWF0ZURhdGFiYXNlU3RyYXRlZ3kpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1F0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdCk6CisKKzIwMTIt
MTItMTMgIEplcm9tZSBQYXNpb24gIDxqZXJvbWUucGFzaW9uQGRpZ2lhLmNvbT4KKworICAgICAg
ICBbUXRdIERvYzogRml4aW5nIFF0IFdlYktpdCByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbi4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBGaXhlczoKKyAg
ICAgICAgLWFkZGVkIFxtb2R1bGUgZm9yIEMrKyBjbGFzc2VzIGFuZCBccW1sbW9kdWxlIGZvciBR
TUwgdHlwZXMKKyAgICAgICAgLWFkZGVkIGxpbmtzIHRvIHRoZSBRdCBXZWJLaXQgRXhhbXBsZXMg
cGFnZXMKKyAgICAgICAgLWZpeGVkIHRoZSBxaHAgc2V0dGluZ3MgZm9yIFF0IENyZWF0b3IKKwor
ICAgICAgICBUYXNrLW51bWJlcjogUVRCVUctMjg1ODMKKyAgICAgICAgVGFzay1udW1iZXI6IFFU
QlVHLTI4NDE4CisgICAgICAgIFRhc2stbnVtYmVyOiBRVEJVRy0yNzY0NgorCisgICAgICAgICog
ZG9jcy9xdHdlYmtpdC5xZG9jOgorCisyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJh
c2UgQVBJcyBpbiBEYXRhYmFzZU1hbmFnZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3NDEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBVc2UgRGF0YWJhc2VNYW5hZ2VyIGluc3RlYWQgb2YgYWNjZXNzaW5n
IERhdGFiYXNlVHJhY2tlciwgQWJzdHJhY3REYXRhYmFzZSwKKyAgICAgICAgYW5kIERhdGFiYXNl
Q29udGV4dCBkaXJlY3RseS4gVGhpcyBpcyB0byBwcmVwYXJlIGZvciB1cGNvbWluZyB3ZWJraXQy
CisgICAgICAgIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6
CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFFXZWJEYXRh
YmFzZTo6ZXhwZWN0ZWRTaXplKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6c2l6ZSk6CisgICAg
ICAgIChRV2ViRGF0YWJhc2U6OmZpbGVOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVt
b3ZlRGF0YWJhc2UpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFzZXMp
OgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNl
Y3VyaXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdlKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VRdW90YSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OnNldERhdGFi
YXNlUXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjphbGxPcmlnaW5zKToKKyAg
ICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkvcXdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFX
ZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHA6CisKKzIwMTItMTItMTIgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMT0coKSB3b3JrIGluIFdlYlByb2Nlc3Mg
YW5kIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ3MTgKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6IEluY2x1ZGUgSW5pdGlh
bGl6ZUxvZ2dpbmcuaAorCisyMDEyLTEyLTExICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29sZVR5cGVzIHNob3VsZCBub3QgZXhw
b3NlIE1lc3NhZ2VUeXBlIC0gaXQgc2hvdWxkIGJlIHByaXZhdGUgdG8gaW5zcGVjdG9yLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIERyb3BzIFdlYkNvcmU6
Ok1lc3NhZ2VUeXBlIGZyb20gdGhlIGFkZE1lc3NhZ2VUb0NvbnNvbGUgbWV0aG9kLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChDaHJvbWVDbGllbnRRdCk6CisK
KzIwMTItMTItMTEgIFN0ZXBoZW4gS2VsbHkgIDxzdGVwaGVuLmtlbGx5QGtkYWIuY29tPgorCisg
ICAgICAgIFdlYktpdCB0ZXN0cyBmb3IgdGhlIFF0IEFQSSBzaG91bGQgaW5jbHVkZSB0ZXN0cyBv
ZiBDTWFrZSBjb25maWcgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDAwMworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgorCisgICAgICAgIFRoZSBRdCBXZWJLaXQgQ0kgc3lzdGVtIGlzIG5vdCBnb2luZyB0byBydW4g
dGhpcyB0ZXN0LCBidXQgaXQgY2FuCisgICAgICAgIGJlIHJ1biBsb2NhbGx5IGFuZCB0byB0ZXN0
IHBhY2thZ2VzLgorCisgICAgICAgICogdGVzdHMvY21ha2UvQ01ha2VMaXN0cy50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2NtYWtlL2NtYWtlLnBybzogQWRkZWQuCisKKzIwMTItMTItMTAg
IEFuZHkgU2hhdyAgPGFuZHkuc2hhd0BkaWdpYS5jb20+CisgICAgICAgIAorICAgICAgICBDaGVj
ayB0aGF0IHBsdWdpbiBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgYmVmb3JlIHF1ZXJ5aW5nIHRo
ZSBkYXRhYmFzZSBmb3IgaW5zdGFsbGVkIHBsdWdpbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzY3MQorCisgICAgICAgIFJldmlld2VkIGJ5IEpv
Y2VseW4gVHVyY290dGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVj
dENvbnRlbnRUeXBlKToKKworMjAxMi0xMi0wNyAgU2VyZ2lvIE1hcnRpbnMgIDxzZXJnaW8ubWFy
dGluc0BrZGFiLmNvbT4KKworICAgICAgICBbUXRdW1FueF0gRml4IFFOWCBidWlsZCBieSBhZGRp
bmcgbWlzc2luZyBpbmNsdWRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0MzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0
ZS4KKworICAgICAgICBJdCdzIHdoZXJlIFdFQktJVF9FWFBPUlREQVRBIGlzIGRlZmluZWQsIHNv
IGluY2x1ZGUgaXQuIE5vdCBzdXJlIHdoeSBvdGhlcgorICAgICAgICBwbGF0Zm9ybXMgYXJlbid0
IGZhaWxpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaDoK
KworMjAxMi0xMi0wNiAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbUXRdIFFXZWJWaWV3IHVzZXMgdGhlIG1vYmlsZSBzdHlsZSBhbmQgZG9lc24ndCBm
b2xsb3cgUXQncyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgQW5vdGhlciBpc3N1ZSBpbnRyb2R1Y2VkIGJ5IHIxMzYyMzUuCisgICAgICAgIEZp
eCB0aGUgb3JkZXIgb2YgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHN0eWxlRmFjdG9yeSBhbmQgY3Jl
YXRpb24gb2YgdGhlCisgICAgICAgIFdlYkNvcmUgUGFnZS4gU2luY2UgdGhlIGxhdHRlciBoYXMg
YSBSZW5kZXJUaGVtZSBtZW1iZXIgYW5kIHRoZSBjcmVhdGlvbgorICAgICAgICBvZiB0aGUgYXBw
cm9wcmlhdGUgUmVuZGVyVGhlbWUgdHlwZSAoUVN0eWxlLWJhY2tlZCkgaXMgZGVwZW5kYW50IG9u
IGhhdmluZworICAgICAgICBmaXJzdCBpbml0aWFsaXplZCB0aGUgdGhlbWUgZmFjdG9yeSBmdW5j
dGlvbiwgd2UgbmVlZCB0byBwb3N0cG9uZSB0aGlzIGp1c3QKKyAgICAgICAgYSBsaXR0bGUgYml0
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6aW5pdGlhbGl6ZVdlYkNvcmVQYWdlKTogQWRkZWQuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKTogY2FsbCBp
bml0aWFsaXplV2ViQ29yZVBhZ2Ugb25seSBhZnRlciAKKyAgICAgICAgaGF2aW5nIGluaXRpYWxp
emVkIFdlYktpdFdpZGdldHMgcmVsYXRlZCBsb2dpYyAoUVN0eWxlIGhvb2tzIGluIHRoaXMgY2Fz
ZSkuCisKKzIwMTItMTItMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW1F0XVtNYWNdIFFXZWJWaWV3IGRpc2FwcGVhcnMgd2hlbiB0aGUgc3lzdGVtIHRyaWVz
IHRvIGhpZGUgdGhlIHNjcm9sbGJhcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQxMTYKKworICAgICAgICBUaGlzIGlzIGEgd29ya2Fyb3VuZCBm
b3IgYW4gaXNzdWUgaW4gUXQgdGhhdCB3YXMKKyAgICAgICAgY2F1c2VkIGJ5IENoYW5nZS1JZDog
STIwMDBmYTUwZDQ2YjE1M2U5ODFjZWFmYzEyYTUzOTMyYTE5NjM4MmUKKyAgICAgICAgaW4gcXRi
YXNlLgorICAgICAgICBTaW5jZSB3ZSBhcmUgZHJhd2luZyB0aGUgc2Nyb2xsYmFycyBieSBvdXJz
ZWx2ZXMsIHRoZXJlIGlzIG5vCisgICAgICAgIHdpZGdldCBhdmFpbGFibGUgdGhhdCBuZWVkcyB0
byBiZSBoaWRkZW4gYnkgdGhlIHN0eWxlLgorICAgICAgICBUaGVyZWZvcmUgd2UgaGF2ZSB0byBk
aXNhYmxlIHRyYW5zaWVudCBzY3JvbGxiYXIKKyAgICAgICAgYW5pbWF0aW9ucyBvbiBNYWMuCisK
KyAgICAgICAgUGF0Y2ggYnk6IEotUCBOdXJtaSA8anBudXJtaUBkaWdpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0
L1FTdHlsZUZhY2FkZUltcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6
cGFpbnRTY3JvbGxCYXIpOgorCisyMDEyLTEyLTA0ICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9z
c2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gWWV0IGFub3RoZXIgdW5yZXZpZXdlZCBzcGVj
dWxhdGl2ZSB3aW5kb3dzIGJ1aWxkIGZpeC4gCisKKyAgICAgICAgV2ViS2l0MiByZWxpZXMgb24g
dGhlIFFXRUJLSVRfRVhQT1JUIG1hY3JvIGZyb20gV2ViS2l0MSBhcyB3ZWxsLgorCisgICAgICAg
ICogQXBpL3F3ZWJraXRnbG9iYWwuaDoKKworMjAxMi0xMi0wMyAgUGllcnJlIFJvc3NpICA8cGll
cnJlLnJvc3NpQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFVucmV2aWV3ZWQgc3BlY3VsYXRp
dmUgV2luZG93cyBidWlsZGZpeC4KKworICAgICAgICBTb21laG93IGl0IHNlZW1zIG1lc3Npbmcg
YXJvdW5kIHdpdGggdGhlIGV4cG9ydCBtYWNyb3MgbWFkZSBzb21lIG9sZCBpc3N1ZXMgcmVzdXJm
YWNlLiAKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAocXRfbmV0
d29ya0FjY2Vzc0FsbG93ZWQpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKyAgICAg
ICAgKiBBcGkvcXdlYmtpdGdsb2JhbC5oOiBmaXggYW4gb2J2aW91cyBibHVuZGVyIGZyb20gcjEz
NjM5NC4KKworMjAxMi0xMi0wMyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVA
ZGlnaWEuY29tPgorCisgICAgICAgIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkgZmFp
bHMgdG8gY2FsbCBzZWN1cml0eU9yaWdpbigpLmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnRlc3RTdG9wU2NoZWR1
bGVkUGFnZVJlZnJlc2gpOiBVbm1hcmsgdGhlIGV4cGVjdGVkIGZhaWx1cmUuCisKKzIwMTItMTIt
MDMgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XSBVc2UgYSBzZXBhcmF0ZSBRV0VCS0lUV0lER0VUU19FWFBPUlQgbWFjcm8gZm9yIFdlYktpdFdp
ZGdldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
Mzg0NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIExl
dCdzIGZvbGxvdyB0aGUgY29tbW9uIHByYWN0aWNlIGFuZCBoYXZlIG9uZSBleHBvcnQgbWFjcm8g
cGVyIGxpYnJhcnkuCisgICAgICAgIFdlIGNhbid0IHJlbHkgb24gQlVJTERJTkdfV0VCS0lUIGFu
eW1vcmUgaW4gdGhhdCBjYXNlLCBzbyB3ZSB1c2UgdGhlCisgICAgICAgIHFtYWtlIGRlZmluZXMg
aW5zdGVhZC4KKworICAgICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6IFVwZGF0ZWQgdGhlIGlt
cG9ydC9leHBvcnQgbG9naWMuCisgICAgICAgICogV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcu
aDogcy9RV0VCS0lUL1FXRUJLSVRXSURHRVRTLworICAgICAgICAqIFdpZGdldEFwaS9xd2ViZnJh
bWUuaDogRGl0dG8uCisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3IuaDogRGl0dG8u
CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJwYWdlLmg6IERpdHRvLgorICAgICAgICAqIFdpZGdl
dEFwaS9xd2Vidmlldy5oOiBEaXR0by4KKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L0luaXRXZWJL
aXRRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVXZWJLaXRXaWRnZXRzKTogdXNl
IFFXRUJLSVRXSURHRVRTX0VYUE9SVC4KKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L0luaXRXZWJL
aXRRdC5oOgorICAgICAgICAoV2ViS2l0KTogRGl0dG8uCisKKzIwMTItMTEtMzAgIFBpZXJyZSBS
b3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisKKyAgICAgICAgW1F0XSBJbnRyb2R1Y2Ug
c2V0VGV4dFNpemVNdWx0aXBsaWVyIGluIHRoZSBwYWdlIGFkYXB0ZXIgYXMgd2VsbC4KKworICAg
ICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBcyBpdCB0
dXJucyBvdXQgaXQgdGhlIGJvdHMgZGlkbid0IGxpa2UgdGhlIHByZXZpb3VzIGF0dGVtcHQuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZUFkYXB0ZXI6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5oOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgor
CisyMDEyLTExLTMwICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisg
ICAgICAgIFtRdF0gVW5yZXZpZXdlZCBidWlsZCBmaXguCisKKyAgICAgICAgSW4gdGhlIHNhbWUg
dmVpbiBhcyByMTM2MjQ1LiBJbmNsdWRlIFBsYXRmb3JtRXhwb3J0TWFjcm9zIHByb3Blci4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UHJpbnRDb250ZXh0Lmg6CisKKzIwMTItMTEtMzAg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQgcHJvc3BlY3RpdmUgTUlQUyBidWlsZCBmaXg6CisKKyAgICAgICAgRXhwbGljaXRs
eSBpbmNsdWRlIFBsYXRmb3JtRXhwb3J0TWFjcm9zIGZvciB0aGUgY29ycmVjdCBleHBvcnQgbWFj
cm8gdG8gYmUgZmluZC4KKyAgICAgICAgTm90IHJlYWxseSBNSVBTIHNwZWNpZmljIGJ1dCByYXRo
ZXIgdG8gYSBtaW5pbWFsIGJ1aWxkIGNvbmZpZ3VyYXRpb24gd2l0aCBsZXNzIGltcGxpY2l0Cisg
ICAgICAgIGluY2x1ZGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVW5kb1N0ZXBRdC5o
OgorCisyMDEyLTExLTMwICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgor
CisgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBidWlsZCB1bi1icmVhaworCisgICAgICAgIFJldmVy
dCByMTM2MjQzIGFuZCBob3BlIGl0IHNlcnZlZCBpdHMgcHVycG9zZS4KKworICAgICAgICAqIFdp
ZGdldEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdl
UHJpdmF0ZSk6CisKKzIwMTItMTEtMzAgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1F0XSBVbnJldmlld2VkIGJ1aWxkIGJyZWFrCisKKyAgICAgICAg
UnViYmVyLXN0YW1wZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUG9vciBtYW4ncyB3
YXkgdG8gdHJpZ2dlciBhIGNsZWFuIGJ1aWxkIG9uIGEgYm90LgorCisgICAgICAgICogV2lkZ2V0
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2
YXRlKToKKworMjAxMi0xMS0zMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdp
YS5jb20+CisKKyAgICAgICAgW1F0XSBGaXggUU1MIGltcG9ydCBpbnN0YWxsYXRpb24gd2l0aCBu
ZXdlciBRdAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAg
ICAgVGhlIGltcG9ydCBwYXRoIGhhcyBiZWVuIHNlcGFyYXRlZCBiZXR3ZWVuIFFNTDEgYW5kIFFN
TDIuIFVzZQorICAgICAgICBRVF9JTlNUQUxMX1FNTCBpZiBpdCdzIGF2YWlsYWJsZS4KKworICAg
ICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9leHBlcmltZW50YWwucHJpOgorICAgICAg
ICAqIGRlY2xhcmF0aXZlL3B1YmxpYy5wcmk6CisKKzIwMTItMTEtMzAgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFByb3NwZWN0aXZlIGJ1aWxk
IGZpeCBmb3IgLS1taW5pbWFsIGJ1aWxkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6dHJpZ2dlckFjdGlv
bik6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmNvbnRleHRNZW51SXRlbVRhZ0ZvckFjdGlv
bik6CisKKzIwMTItMTEtMzAgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+
CisKKyAgICAgICAgW1F0XSBGaXggem9vbUluL3pvb21PdXQgcmVsYXRlZCByZWdyZXNzaW9uLgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZvbGxvd2lu
ZyByMTM2MjM1LCBmaXggYSBjYXNlIG9mIHJlZmFjdG9yaW5nIGdvbmUgd3JvbmcuCisgICAgICAg
IEltcGxlbWVudGluZyBzZXRUZXh0U2l6ZU11bHRpcGxpZXIgaW4gdGVybXMgb2YKKyAgICAgICAg
c2V0Wm9vbUZhY3RvciwgYW5kIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAgICAgICAoUVdlYkZyYW1l
QWRhcHRlcjo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisKKzIwMTIt
MTEtMzAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPiwgUGllcnJl
IFJvc3NpICA8cGllcnJlLnJvc3NpQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFNlcGFyYXRl
IFF0IFdlYktpdCBpbnRvIFF0IFdlYktpdCBhbmQgUXQgV2ViS2l0IFdpZGdldHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBUaGlzIGJpZyBjaGFuZ2Ug
c2VwYXJhdGVzIFF0V2ViS2l0IGludG8gUXRXZWJLaXQgYW5kIFF0V2ViS2l0V2lkZ2V0cyBhcwor
ICAgICAgICBzaGFyZWQgbGlicmFyaWVzLgorCisgICAgICAgIEl0J3MgYSBiaWcgcmVmYWN0b3Jp
bmcgdGhhdCBtb3N0bHkgaW52b2x2ZXMgbW92aW5nIFdlYkNvcmUgZGVwZW5kZW50CisgICAgICAg
IGNvZGUgaW50byBRdFdlYktpdCBhbmQgYWNjZXNzaW5nIGl0IHRocm91Z2ggZXhwb3J0ZWQgUVdl
YkZyYW1lQWRhcHRlcgorICAgICAgICBhbmQgUVdlYlBhZ2VBZGFwdGVyIGNsYXNzZXMuCisKKyAg
ICAgICAgVGhlIFF0V2ViS2l0IHZlcnNpb24gbWFjcm9zIGFyZSBub3cgZ2VuZXJhdGVkIGJ5IHN5
bmNxdCBhbmQgdGhlIHZlcnNpb24KKyAgICAgICAgcXVlcnkgZnVuY3Rpb25zIGhhdmUgbW92ZWQg
dG8gcXdlYmtpdGdsb2JhbC5oLCBzaW1pbGFyIHRvIHFWZXJzaW9uKCkgaW4KKyAgICAgICAgcWds
b2JhbC5oLgorCisgICAgICAgIEFQSSB3aXNlIHF3ZWJmcmFtZSBzZWVzIHNvbWUgc21hbGwgY2xl
YW51cHMuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lX3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuaDoKKyAgICAg
ICAgKiBBcGkvcXdlYmtpdGdsb2JhbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Via2l0dmVyc2lvbi5jcHAuCisgICAgICAgIChxV2ViS2l0VmVyc2lvbik6CisgICAg
ICAgIChxV2ViS2l0TWFqb3JWZXJzaW9uKToKKyAgICAgICAgKHFXZWJLaXRNaW5vclZlcnNpb24p
OgorICAgICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6CisgICAgICAgICogQXBpL3F3ZWJraXR2
ZXJzaW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChDaHJvbWVDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmZyYW1lUmVuZGVyVHJlZUR1bXApOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdl
YkNvcmVRdC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpzZXRXZWJL
aXRXaWRnZXRzSW5pdENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU3R5bGVGb3JQ
YWdlKToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVdlYktpdFF0KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0LmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0
ZXI6OlFXZWJGcmFtZUFkYXB0ZXIpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6aGFzVmll
dyk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAgICAgICAgKFFX
ZWJGcmFtZUFkYXB0ZXI6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisgICAgICAgIChR
V2ViRnJhbWVBZGFwdGVyOjp0b0h0bWwpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6dG9Q
bGFpblRleHQpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6c2V0Q29udGVudCk6CisgICAg
ICAgIChRV2ViRnJhbWVBZGFwdGVyOjpzZXRIdG1sKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0
ZXI6Om1ldGFEYXRhKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OmZyYW1lUmVjdCk6CisgICAgICAgIChRV2Vi
RnJhbWVBZGFwdGVyOjpjb250ZW50c1NpemUpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6
c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjp6b29tRmFjdG9yKToK
KyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OmVuc3VyZUFic29sdXRlVXJsKToKKyAgICAgICAg
KFFXZWJGcmFtZUFkYXB0ZXI6OmhpdFRlc3RDb250ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZUFk
YXB0ZXI6OmRvY3VtZW50RWxlbWVudCk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjp0aXRs
ZSk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpjbGVhckNvcmVGcmFtZSk6CisgICAgICAg
IChpc0NvcmVGcmFtZUNsZWFyKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OmJhc2VVcmwp
OgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6cmVuZGVyQ29tcG9zaXRlZExheWVycyk6Cisg
ICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpjb3JlRnJhbWVVcmwpOgorICAgICAgICAoUVdlYkZy
YW1lQWRhcHRlcjo6bGFzdFJlcXVlc3RlZFVybCk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVy
OjpzZWN1cml0eU9yaWdpbik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjp1bmlxdWVOYW1l
KToKKyAgICAgICAgKGNvYWxlc2NlUmVjdHNJZlBvc3NpYmxlKToKKyAgICAgICAgKFFXZWJGcmFt
ZUFkYXB0ZXI6OnJlbmRlclJlbGF0aXZlQ29vcmRzKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0
ZXI6OnJlbmRlckZyYW1lRXh0cmFzKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNldFRp
bGVkQmFja2luZ1N0b3JlRnJvemVuKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnRpbGVk
QmFja2luZ1N0b3JlRnJvemVuKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNldFRpbGVk
QmFja2luZ1N0b3JlQ29udGVudHNTY2FsZSk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpy
ZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6
X3Ffb3JpZW50YXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OmNoaWxk
RnJhbWVzKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6Omhhc0ZvY3VzKToKKyAgICAgICAg
KFFXZWJGcmFtZUFkYXB0ZXI6OnNldEZvY3VzKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6
OnNldFNjcm9sbEJhclBvbGljeSk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpzY3JvbGxU
b0FuY2hvcik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpzY3JvbGxCeSk6CisgICAgICAg
IChRV2ViRnJhbWVBZGFwdGVyOjpzZXRTY3JvbGxCYXJWYWx1ZSk6CisgICAgICAgIChRV2ViRnJh
bWVBZGFwdGVyOjpzY3JvbGxCYXJWYWx1ZSk6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpz
Y3JvbGxCYXJNYXhpbXVtKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNjcm9sbEJhckdl
b21ldHJ5KToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6Omhvcml6b250YWxTY3JvbGxCYXIp
OgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6dmVydGljYWxTY3JvbGxCYXIpOgorICAgICAg
ICAoUVdlYkZyYW1lQWRhcHRlcjo6dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2ZWx5KToKKyAgICAg
ICAgKFFXZWJGcmFtZUFkYXB0ZXI6OmNhbmNlbExvYWQpOgorICAgICAgICAoUVdlYkhpdFRlc3RS
ZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAoUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlOjp+UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAgKFFXZWJIaXRU
ZXN0UmVzdWx0UHJpdmF0ZTo6ZWxlbWVudEZvcklubmVyTm9kZSk6CisgICAgICAgIChRV2ViRnJh
bWVBZGFwdGVyOjpjdXN0b21MYXlvdXRTaXplKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6
OnNldEN1c3RvbUxheW91dFNpemUpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6c2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6c2V0Vmll
d3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNldFBhaW50c0VudGlyZUNv
bnRlbnRzKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnNldERlbGVnYXRlc1Njcm9sbGlu
Zyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNw
cDoKKyAgICAgICAgKGRyb3BBY3Rpb25Ub0RyYWdPcCk6CisgICAgICAgIChkcmFnT3BUb0Ryb3BB
Y3Rpb24pOgorICAgICAgICAoZnJhbWVMb2FkUmVxdWVzdCk6CisgICAgICAgIChvcGVuTmV3V2lu
ZG93KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6flFXZWJQYWdlQWRhcHRlcik6CisgICAgICAgIChRV2ViUGFn
ZUFkYXB0ZXI6OmRlbGV0ZVBhZ2UpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjp2aWV3cG9y
dEFyZ3VtZW50cyk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6Omhhc1NlbGVjdGlvbik6Cisg
ICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OnNlbGVjdGVkVGV4dCk6CisgICAgICAgIChRV2ViUGFn
ZUFkYXB0ZXI6OnNlbGVjdGVkSHRtbCk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmlzQ29u
dGVudEVkaXRhYmxlKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRh
YmxlKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6ZmluZFRleHQpOgorICAgICAgICAoUVdl
YlBhZ2VBZGFwdGVyOjphZGp1c3RQb2ludEZvckNsaWNraW5nKToKKyAgICAgICAgKGhhc01vdXNl
TGlzdGVuZXIpOgorICAgICAgICAoaXNDbGlja2FibGVFbGVtZW50KToKKyAgICAgICAgKGlzVmFs
aWRGcmFtZU93bmVyKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6VG91Y2hBZGp1c3Rlcjo6
VG91Y2hBZGp1c3Rlcik6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OlRvdWNoQWRqdXN0ZXI6
OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6
bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjptb3VzZVByZXNzRXZl
bnQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgor
ICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjptb3VzZVRyaXBsZUNsaWNrRXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZUFkYXB0ZXI6OmhhbmRsZVNvZnR3YXJlSW5wdXRQYW5lbCk6CisgICAgICAgIChRV2ViUGFnZUFk
YXB0ZXI6OndoZWVsRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpkcmFnRW50ZXJl
ZCk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmRyYWdMZWF2ZUV2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlQWRhcHRlcjo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVy
OjpwZXJmb3JtRHJhZyk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kRXZl
bnQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1ldGhvZFF1ZXJ5KToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6ZHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQpOgorICAgICAg
ICAoYWRhcHRlckFjdGlvbkZvckNvbnRleHRNZW51QWN0aW9uKToKKyAgICAgICAgKGRlc2NyaXB0
aW9uRm9yUGxhdGZvcm1NZW51KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6dXBkYXRlUG9z
aXRpb25EZXBlbmRlbnRNZW51QWN0aW9ucyk6CisgICAgICAgIChleHRyYWN0Q29udGVudFR5cGVG
cm9tSGFzaCk6CisgICAgICAgIChleHRyYWN0Q29udGVudFR5cGVGcm9tUGx1Z2luVmVjdG9yKToK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c3VwcG9ydGVkQ29udGVudFR5cGVzKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6X3FfY2xlYW51cExlYWtNZXNzYWdlcyk6CisgICAgICAgIChR
V2ViUGFnZUFkYXB0ZXI6Ol9xX29uTG9hZFByb2dyZXNzQ2hhbmdlZCk6CisgICAgICAgIChRV2Vi
UGFnZUFkYXB0ZXI6OnN1cHBvcnRzQ29udGVudFR5cGUpOgorICAgICAgICAoUVdlYlBhZ2VBZGFw
dGVyOjpkaWRTaG93SW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6ZGlkQ2xv
c2VJbnNwZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVBY3Rpb25JbnRl
cm5hbCk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24pOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjpjb250ZXh0TWVudUl0ZW1UYWdGb3JBY3Rpb24pOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjphbGxvd05vdGlmaWNhdGlvbnNGb3JGcmFtZSk6CisgICAgICAg
IChRV2ViUGFnZUFkYXB0ZXI6OmFkZE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudCk6CisgICAg
ICAgIChRV2ViUGFnZUFkYXB0ZXI6Omhhc1N5c3RlbVRyYXlJY29uKToKKyAgICAgICAgKFFXZWJQ
YWdlQWRhcHRlcjo6c2V0U3lzdGVtVHJheUljb24pOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVy
OjpzZXRHZW9sb2NhdGlvbkVuYWJsZWRGb3JGcmFtZSk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0
ZXI6OmRlZmF1bHRVc2VyQWdlbnRTdHJpbmcpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjp0
cmVhdFNjaGVtZUFzTG9jYWwpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpjdXJyZW50RnJh
bWUpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpoYXNGb2N1c2VkTm9kZSk6CisgICAgICAg
IChRV2ViUGFnZUFkYXB0ZXI6OnZpZXdwb3J0QXR0cmlidXRlc0ZvclNpemUpOgorICAgICAgICAo
UVdlYlBhZ2VBZGFwdGVyOjpoYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0
ZXI6OmhhbmRsZVNjcm9sbGluZyk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmZvY3VzSW5F
dmVudCk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6OmZvY3VzT3V0RXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjpoYW5kbGVTaG9ydGN1dE92ZXJyaWRlRXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRl
cjo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FX
ZWJQYWdlQWRhcHRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUXRQbHVnaW5XaWRnZXRBZGFwdGVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViS2l0UXQuaC4KKyAgICAgICAgKFF0UGx1Z2luV2lk
Z2V0QWRhcHRlcjo6UXRQbHVnaW5XaWRnZXRBZGFwdGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RdFBsdWdpbldpZGdldEFkYXB0ZXIuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9R
dFByaW50Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoUXRQcmludENvbnRleHQ6OlF0UHJp
bnRDb250ZXh0KToKKyAgICAgICAgKFF0UHJpbnRDb250ZXh0Ojp+UXRQcmludENvbnRleHQpOgor
ICAgICAgICAoUXRQcmludENvbnRleHQ6OnBhZ2VDb3VudCk6CisgICAgICAgIChRdFByaW50Q29u
dGV4dDo6c3Bvb2xQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFByaW50Q29udGV4
dC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUVN0eWxlRmFjYWRl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHR1
cmVNYXBwZXJMYXllckNsaWVudFF0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXh0dXJlTWFwcGVy
TGF5ZXJDbGllbnRRdDo6VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQpOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6On5UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCk6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6c3luY1Jvb3RMYXllcik6CisgICAg
ICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6bWFya0ZvclN5bmMpOgorICAgICAgICAo
VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6OnJvb3RMYXllcik6CisgICAgICAgIChUZXh0dXJl
TWFwcGVyTGF5ZXJDbGllbnRRdDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6OnN5bmNMYXllcnMpOgorICAgICAgICAoVGV4dHVyZU1h
cHBlckxheWVyQ2xpZW50UXQ6OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvVW5kb1N0ZXBRdC5oOgorICAgICAgICAqIFdpZGdldEFwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3Fn
cmFwaGljc3dlYnZpZXcuY3BwLgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGUpOgor
ICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OlFHcmFwaGljc1dlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpvdmVybGF5KToKKyAgICAgICAg
KFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpwYWdlQ2xpZW50KToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOjp+UUdyYXBoaWNzV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUUdy
YXBoaWNzV2ViVmlld1ByaXZhdGU6Ol9xX2RvTG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXdQcml2YXRlOjpfcV9wYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOjp1cGRhdGVSZXNpemVzVG9Db250ZW50c0ZvclBhZ2UpOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6Ol9xX2NvbnRlbnRzU2l6ZUNoYW5nZWQpOgorICAg
ICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6Ol9xX3NjYWxlQ2hhbmdlZCk6CisgICAgICAg
IChRR3JhcGhpY3NXZWJWaWV3OjpRR3JhcGhpY3NXZWJWaWV3KToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXc6On5RR3JhcGhpY3NXZWJWaWV3KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OnBhZ2UpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFpbnQpOgorICAgICAgICAoUUdy
YXBoaWNzV2ViVmlldzo6c2NlbmVFdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpp
dGVtQ2hhbmdlKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNpemVIaW50KToKKyAgICAg
ICAgKFFHcmFwaGljc1dlYlZpZXc6OmlucHV0TWV0aG9kUXVlcnkpOgorICAgICAgICAoUUdyYXBo
aWNzV2ViVmlldzo6cmVuZGVySGludHMpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0
UmVuZGVySGludHMpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UmVuZGVySGludCk6
CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpldmVudCk6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBhZ2UpOgorICAgICAgICAoUUdyYXBoaWNzV2Vi
Vmlldzo6c2V0UGFnZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRVcmwpOgorICAg
ICAgICAoUUdyYXBoaWNzV2ViVmlldzo6dXJsKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OnRpdGxlKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6Omljb24pOgorICAgICAgICAoUUdy
YXBoaWNzV2ViVmlldzo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
Ojp6b29tRmFjdG9yKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnVwZGF0ZUdlb21ldHJ5
KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldEdlb21ldHJ5KToKKyAgICAgICAgKFFH
cmFwaGljc1dlYlZpZXc6OnN0b3ApOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6YmFjayk6
CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpmb3J3YXJkKToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXc6OnJlbG9hZCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpsb2FkKToKKyAg
ICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldEh0bWwpOgorICAgICAgICAoUUdyYXBoaWNzV2Vi
Vmlldzo6c2V0Q29udGVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpoaXN0b3J5KToK
KyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmlzTW9kaWZpZWQpOgorICAgICAgICAoUUdyYXBo
aWNzV2ViVmlldzo6c2V0dGluZ3MpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFnZUFj
dGlvbik6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojp0cmlnZ2VyUGFnZUFjdGlvbik6Cisg
ICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpmaW5kVGV4dCk6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3OjpzZXRSZXNpemVzVG9Db250ZW50cyk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
OjpyZXNpemVzVG9Db250ZW50cyk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojppc1RpbGVk
QmFja2luZ1N0b3JlRnJvemVuKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldFRpbGVk
QmFja2luZ1N0b3JlRnJvemVuKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmhvdmVyTW92
ZUV2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmhvdmVyTGVhdmVFdmVudCk6Cisg
ICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRR3Jh
cGhpY3NXZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmll
dzo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6bW91c2VE
b3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmtleVByZXNzRXZl
bnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAg
ICAgKFFHcmFwaGljc1dlYlZpZXc6OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3Ojpmb2N1c091dEV2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OmZvY3Vz
TmV4dFByZXZDaGlsZCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpkcmFnRW50ZXJFdmVu
dCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpkcmFnTGVhdmVFdmVudCk6CisgICAgICAg
IChRR3JhcGhpY3NXZWJWaWV3OjpkcmFnTW92ZUV2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXc6OmRyb3BFdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpjb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OndoZWVsRXZlbnQpOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlldzo6aW5wdXRNZXRob2RFdmVudCk6CisgICAgICAgICogV2lkZ2V0
QXBpL3FncmFwaGljc3dlYnZpZXcuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3FncmFwaGljc3dlYnZpZXcuaC4KKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYmZyYW1lLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAuCisgICAgICAg
IChRV2ViRnJhbWVQcml2YXRlOjpzZXRQYWdlKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6
OmVtaXRVcmxDaGFuZ2VkKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmRpZENsZWFyV2luZG93
T2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmhhbmRsZVByb2dyZXNzRmluaXNo
ZWQpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6ZW1pdEluaXRpYWxMYXlvdXRDb21wbGV0
ZWQpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6ZW1pdEljb25DaGFuZ2VkKToKKyAgICAg
ICAgKFFXZWJGcmFtZVByaXZhdGU6OmVtaXRMb2FkU3RhcnRlZCk6CisgICAgICAgIChRV2ViRnJh
bWVQcml2YXRlOjplbWl0TG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6
OmNyZWF0ZUNoaWxkRnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YXBpSGFuZGxl
KToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmhhbmRsZSk6CisgICAgICAgIChRV2ViRnJh
bWVQcml2YXRlOjpjb250ZW50c1NpemVEaWRDaGFuZ2UpOgorICAgICAgICAoUVdlYkZyYW1lUHJp
dmF0ZTo6c2Nyb2xsQmFyUG9saWN5KToKKyAgICAgICAgKFFXZWJGcmFtZTo6UVdlYkZyYW1lKToK
KyAgICAgICAgKFFXZWJGcmFtZTo6flFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6OmFk
ZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWU6OnRvSHRtbCk6
CisgICAgICAgIChRV2ViRnJhbWU6OnRvUGxhaW5UZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6
dGl0bGUpOgorICAgICAgICAoUVdlYkZyYW1lOjptZXRhRGF0YSk6CisgICAgICAgIChRV2ViRnJh
bWU6OnNldFVybCk6CisgICAgICAgIChRV2ViRnJhbWU6OnVybCk6CisgICAgICAgIChRV2ViRnJh
bWU6OnJlcXVlc3RlZFVybCk6CisgICAgICAgIChRV2ViRnJhbWU6OmJhc2VVcmwpOgorICAgICAg
ICAoUVdlYkZyYW1lOjppY29uKToKKyAgICAgICAgKFFXZWJGcmFtZTo6ZnJhbWVOYW1lKToKKyAg
ICAgICAgKFFXZWJGcmFtZTo6cGFnZSk6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOgorICAg
ICAgICAoUVdlYkZyYW1lOjpzZXRIdG1sKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0Q29udGVu
dCk6CisgICAgICAgIChRV2ViRnJhbWU6OnBhcmVudEZyYW1lKToKKyAgICAgICAgKFFXZWJGcmFt
ZTo6Y2hpbGRGcmFtZXMpOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxCYXJQb2xpY3kpOgor
ICAgICAgICAoUVdlYkZyYW1lOjpzZXRTY3JvbGxCYXJQb2xpY3kpOgorICAgICAgICAoUVdlYkZy
YW1lOjpzZXRTY3JvbGxCYXJWYWx1ZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNjcm9sbEJhclZh
bHVlKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2Nyb2xsQmFyTWF4aW11bSk6CisgICAgICAgIChR
V2ViRnJhbWU6OnNjcm9sbEJhck1pbmltdW0pOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxC
YXJHZW9tZXRyeSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNjcm9sbCk6CisgICAgICAgIChRV2Vi
RnJhbWU6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0U2Nyb2xsUG9z
aXRpb24pOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxUb0FuY2hvcik6CisgICAgICAgIChR
V2ViRnJhbWU6OnJlbmRlcik6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlw
bGllcik6CisgICAgICAgIChRV2ViRnJhbWU6OnRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAg
IChRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IpOgorICAgICAgICAoUVdlYkZyYW1lOjp6b29tRmFj
dG9yKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aGFzRm9jdXMpOgorICAgICAgICAoUVdlYkZyYW1l
OjpzZXRGb2N1cyk6CisgICAgICAgIChRV2ViRnJhbWU6OnBvcyk6CisgICAgICAgIChRV2ViRnJh
bWU6Omdlb21ldHJ5KToKKyAgICAgICAgKFFXZWJGcmFtZTo6Y29udGVudHNTaXplKToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6ZG9jdW1lbnRFbGVtZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6Zmlu
ZEFsbEVsZW1lbnRzKToKKyAgICAgICAgKFFXZWJGcmFtZTo6ZmluZEZpcnN0RWxlbWVudCk6Cisg
ICAgICAgIChRV2ViRnJhbWU6OmhpdFRlc3RDb250ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6
ZXZlbnQpOgorICAgICAgICAoUVdlYkZyYW1lOjpwcmludCk6CisgICAgICAgIChRV2ViRnJhbWU6
OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChRV2ViRnJhbWU6OnNlY3VyaXR5T3JpZ2lu
KToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmtpdCk6CisgICAgICAgIChRV2ViSGl0VGVz
dFJlc3VsdDo6UVdlYkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6
Om9wZXJhdG9yPSk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6flFXZWJIaXRUZXN0UmVz
dWx0KToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0Ojppc051bGwpOgorICAgICAgICAoUVdl
YkhpdFRlc3RSZXN1bHQ6OnBvcyk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6Ym91bmRp
bmdSZWN0KToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0OjplbmNsb3NpbmdCbG9ja0VsZW1l
bnQpOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OnRpdGxlKToKKyAgICAgICAgKFFXZWJI
aXRUZXN0UmVzdWx0OjpsaW5rVGV4dCk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6bGlu
a1VybCk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6bGlua1RpdGxlKToKKyAgICAgICAg
KFFXZWJIaXRUZXN0UmVzdWx0OjpsaW5rRWxlbWVudCk6CisgICAgICAgIChRV2ViSGl0VGVzdFJl
c3VsdDo6bGlua1RhcmdldEZyYW1lKToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0OjphbHRl
cm5hdGVUZXh0KToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0OjppbWFnZVVybCk6CisgICAg
ICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6cGl4bWFwKToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVz
dWx0Ojppc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6aXND
b250ZW50U2VsZWN0ZWQpOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmVsZW1lbnQpOgor
ICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmZyYW1lKToKKyAgICAgICAgKFFXZWJGcmFtZTo6
aGFuZGxlKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYmZyYW1lLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIFdpZGdldEFwaS9xd2ViZnJhbWVfcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRl
OjpRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnBhcmVudEZy
YW1lKToKKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYmluc3BlY3Rvci5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcC4KKyAgICAgICAgKFFXZWJJ
bnNwZWN0b3I6OlFXZWJJbnNwZWN0b3IpOgorICAgICAgICAoUVdlYkluc3BlY3Rvcjo6flFXZWJJ
bnNwZWN0b3IpOgorICAgICAgICAoUVdlYkluc3BlY3Rvcjo6c2V0UGFnZSk6CisgICAgICAgIChR
V2ViSW5zcGVjdG9yOjpwYWdlKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OnNpemVIaW50KToK
KyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OmV2ZW50KToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6
OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OnNob3dFdmVudCk6CisgICAg
ICAgIChRV2ViSW5zcGVjdG9yOjpoaWRlRXZlbnQpOgorICAgICAgICAoUVdlYkluc3BlY3Rvcjo6
Y2xvc2VFdmVudCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yUHJpdmF0ZTo6c2V0RnJvbnRlbmQp
OgorICAgICAgICAoUVdlYkluc3BlY3RvclByaXZhdGU6OmFkanVzdEZyb250ZW5kU2l6ZSk6Cisg
ICAgICAgICogV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3IuaC4KKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYmlu
c3BlY3Rvcl9wLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVj
dG9yX3AuaC4KKyAgICAgICAgKFFXZWJJbnNwZWN0b3JQcml2YXRlKToKKyAgICAgICAgKFFXZWJJ
bnNwZWN0b3JQcml2YXRlOjpRV2ViSW5zcGVjdG9yUHJpdmF0ZSk6CisgICAgICAgICogV2lkZ2V0
QXBpL3F3ZWJwYWdlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcC4KKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OnNob3cpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpzZXRGb2N1cyk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVuZm9jdXMpOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dmlld3Bv
cnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlV2luZG93KToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6amF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpqYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6c2hvdWxkSW50ZXJydXB0
SmF2YVNjcmlwdCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnByaW50UmVxdWVzdGVkKToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZGF0YWJhc2VRdW90YUV4Y2VlZGVkKToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6YXBwbGljYXRpb25DYWNoZVF1b3RhRXhjZWVkZWQpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpzZXRUb29sVGlwKToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6Y3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6Om1haW5GcmFtZUFkYXB0ZXIpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjaG9v
c2VGaWxlcyk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmFjY2VwdE5hdmlnYXRpb25SZXF1
ZXN0KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZW1pdFJlc3RvcmVGcmFtZVN0YXRlUmVx
dWVzdGVkKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZW1pdFNhdmVGcmFtZVN0YXRlUmVx
dWVzdGVkKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZW1pdERvd25sb2FkUmVxdWVzdGVk
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZW1pdEZyYW1lQ3JlYXRlZCk6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmVycm9yUGFnZUV4dGVuc2lvbik6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmFkYXB0
ZXJGb3JXaWRnZXQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVNYWluRnJhbWUp
OgorICAgICAgICAod2ViQWN0aW9uRm9yQWRhcHRlck1lbnVBY3Rpb24pOgorICAgICAgICAoYWRh
cHRlck1lbnVBY3Rpb25Gb3JXZWJBY3Rpb24pOgorICAgICAgICAoY3JlYXRlQ29udGV4dE1lbnUp
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVBbmRTZXRDdXJyZW50Q29udGV4dE1l
bnUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpfcV93ZWJBY3Rpb25UcmlnZ2VyZWQpOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24pOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjp1cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucyk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6Omluc3BlY3RvckhhbmRsZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnNldElu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6c2V0SW5zcGVjdG9y
V2luZG93VGl0bGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVXZWJJbnNwZWN0
b3IpOgorICAgICAgICAoaXRlcmF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6bWVudUFjdGlvbnNBc1RleHQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplbWl0
Vmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp1cGRh
dGVFZGl0b3JBY3Rpb25zKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dGltZXJFdmVudCk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFFX
ZWJQYWdlOjpjcmVhdGVTdGFuZGFyZENvbnRleHRNZW51KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UmVsZWFzZUV2
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ0VudGVyRXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6ZHJvcEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bGVhdmVFdmVudCk6
CisgICAgICAgIChRV2ViUGFnZTo6c2V0UGFsZXR0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6cGFs
ZXR0ZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdmVudCk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZTo6aW5wdXRNZXRob2RRdWVyeSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnNldElu
c3BlY3Rvcik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmdldE9yQ3JlYXRlSW5zcGVjdG9y
KToKKyAgICAgICAgKFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXM6OlZpZXdwb3J0QXR0cmli
dXRlcyk6CisgICAgICAgIChRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzOjp+Vmlld3BvcnRB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXM6Om9wZXJh
dG9yPSk6CisgICAgICAgIChRV2ViUGFnZTo6UVdlYlBhZ2UpOgorICAgICAgICAoUVdlYlBhZ2U6
On5RV2ViUGFnZSk6CisgICAgICAgIChRV2ViUGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFFX
ZWJQYWdlOjpjdXJyZW50RnJhbWUpOgorICAgICAgICAoUVdlYlBhZ2U6OmZyYW1lQXQpOgorICAg
ICAgICAoUVdlYlBhZ2U6Omhpc3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXcpOgor
ICAgICAgICAoUVdlYlBhZ2U6OnZpZXcpOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRD
b25zb2xlTWVzc2FnZSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAg
ICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChRV2ViUGFnZTo6
amF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChRV2ViUGFnZTo6c2hvdWxkSW50ZXJydXB0SmF2
YVNjcmlwdCk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0RmVhdHVyZVBlcm1pc3Npb24pOgorICAg
ICAgICAoUVdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChRV2ViUGFnZTo6Y3JlYXRl
UGx1Z2luKToKKyAgICAgICAgKFFXZWJQYWdlOjpzdXBwb3J0ZWRDb250ZW50VHlwZXMpOgorICAg
ICAgICAoUVdlYlBhZ2U6OnN1cHBvcnRzQ29udGVudFR5cGUpOgorICAgICAgICAoY29sbGVjdENo
aWxkRnJhbWVzKToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6Y29sb3JTZWxlY3Rpb25SZXF1ZXN0ZWQpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpjcmVhdGVTZWxlY3RQb3B1cCk6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OnZpZXdSZWN0UmVsYXRpdmVUb1dpbmRvdyk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
Omdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RlZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6Omdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYW5jZWxsZWQpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpub3RpZmljYXRpb25zUGVybWlzc2lvblJlcXVlc3RlZCk6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6Om5vdGlmaWNhdGlvbnNQZXJtaXNzaW9uUmVxdWVzdENhbmNlbGxl
ZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptaWNyb0ZvY3VzQ2hhbmdlZCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OnRyaWdnZXJDb3B5QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6dHJpZ2dlckFjdGlvbkZvcktleUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6Y2xlYXJVbmRvU3RhY2spOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjYW5VbmRvKToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y2FuUmVkbyk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OnVuZG8pOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpyZWRvKToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlVW5kb1N0ZXApOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjplZGl0b3JDb21tYW5kRm9yS2V5RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdw
b3J0U2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAg
KGdldGludGVudik6CisgICAgICAgIChxdWVyeURldmljZVNpemVGb3JTY3JlZW5Db250YWluaW5n
V2lkZ2V0KToKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKToK
KyAgICAgICAgKFFXZWJQYWdlOjpwcmVmZXJyZWRDb250ZW50c1NpemUpOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldFByZWZlcnJlZENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0
QWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFFXZWJQYWdlOjphY2NlcHROYXZp
Z2F0aW9uUmVxdWVzdCk6CisgICAgICAgIChRV2ViUGFnZTo6aGFzU2VsZWN0aW9uKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpzZWxlY3RlZFRleHQpOgorICAgICAgICAoUVdlYlBhZ2U6OnNlbGVjdGVk
SHRtbCk6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjpp
c01vZGlmaWVkKToKKyAgICAgICAgKFFXZWJQYWdlOjp1bmRvU3RhY2spOgorICAgICAgICAoUVdl
YlBhZ2U6OmV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpmb2N1c05leHRQcmV2Q2hpbGQpOgor
ICAgICAgICAoUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChRV2ViUGFn
ZTo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldEZvcndhcmRVbnN1
cHBvcnRlZENvbnRlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmZvcndhcmRVbnN1cHBvcnRlZENv
bnRlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldExpbmtEZWxlZ2F0aW9uUG9saWN5KToKKyAg
ICAgICAgKFFXZWJQYWdlOjpsaW5rRGVsZWdhdGlvblBvbGljeSk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmhhbmRsZVNjcm9sbGJhckNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OnN3YWxsb3dDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRh
dGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OmV4dGVuc2lv
bik6CisgICAgICAgIChRV2ViUGFnZTo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoUVdl
YlBhZ2U6OmhhbmRsZSk6CisgICAgICAgIChRV2ViUGFnZTo6ZmluZFRleHQpOgorICAgICAgICAo
UVdlYlBhZ2U6OnNldHRpbmdzKToKKyAgICAgICAgKFFXZWJQYWdlOjpjaG9vc2VGaWxlKToKKyAg
ICAgICAgKFFXZWJQYWdlOjpzZXROZXR3b3JrQWNjZXNzTWFuYWdlcik6CisgICAgICAgIChRV2Vi
UGFnZTo6bmV0d29ya0FjY2Vzc01hbmFnZXIpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFBsdWdp
bkZhY3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2U6OnBsdWdpbkZhY3RvcnkpOgorICAgICAgICAo
UVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisgICAgICAgIChRV2ViUGFnZTo6dG90YWxCeXRl
cyk6CisgICAgICAgIChRV2ViUGFnZTo6Ynl0ZXNSZWNlaXZlZCk6CisgICAgICAgICogV2lkZ2V0
QXBpL3F3ZWJwYWdlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogV2lkZ2V0QXBpL3F3ZWJwYWdlX3Au
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoUXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlKToKKyAg
ICAgICAgKFF0Vmlld3BvcnRBdHRyaWJ1dGVzUHJpdmF0ZTo6UXRWaWV3cG9ydEF0dHJpYnV0ZXNQ
cml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogV2lkZ2V0QXBp
L3F3ZWJ2aWV3LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3
LmNwcC4KKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRV2ViVmlld1ByaXZh
dGU6OlFXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRV2ViVmlld1ByaXZhdGU6On5RV2ViVmll
d1ByaXZhdGUpOgorICAgICAgICAoUVdlYlZpZXdQcml2YXRlOjpfcV9wYWdlRGVzdHJveWVkKToK
KyAgICAgICAgKGFjY2Vzc2libGVJbnRlcmZhY2VGYWN0b3J5KToKKyAgICAgICAgKFFXZWJWaWV3
OjpRV2ViVmlldyk6CisgICAgICAgIChRV2ViVmlldzo6flFXZWJWaWV3KToKKyAgICAgICAgKFFX
ZWJWaWV3OjpwYWdlKToKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBh
Z2UpOgorICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAoUVdlYlZpZXc6Omxv
YWQpOgorICAgICAgICAoUVdlYlZpZXc6OnNldEh0bWwpOgorICAgICAgICAoUVdlYlZpZXc6OnNl
dENvbnRlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Omhpc3RvcnkpOgorICAgICAgICAoUVdlYlZp
ZXc6OnNldHRpbmdzKToKKyAgICAgICAgKFFXZWJWaWV3Ojp0aXRsZSk6CisgICAgICAgIChRV2Vi
Vmlldzo6c2V0VXJsKToKKyAgICAgICAgKFFXZWJWaWV3Ojp1cmwpOgorICAgICAgICAoUVdlYlZp
ZXc6Omljb24pOgorICAgICAgICAoUVdlYlZpZXc6Omhhc1NlbGVjdGlvbik6CisgICAgICAgIChR
V2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJWaWV3OjpzZWxlY3RlZEh0bWwp
OgorICAgICAgICAoUVdlYlZpZXc6OnBhZ2VBY3Rpb24pOgorICAgICAgICAoUVdlYlZpZXc6OnRy
aWdnZXJQYWdlQWN0aW9uKToKKyAgICAgICAgKFFXZWJWaWV3Ojppc01vZGlmaWVkKToKKyAgICAg
ICAgKFFXZWJWaWV3OjpzaXplSGludCk6CisgICAgICAgIChRV2ViVmlldzo6c2V0Wm9vbUZhY3Rv
cik6CisgICAgICAgIChRV2ViVmlldzo6em9vbUZhY3Rvcik6CisgICAgICAgIChRV2ViVmlldzo6
c2V0VGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKFFXZWJWaWV3Ojp0ZXh0U2l6ZU11bHRp
cGxpZXIpOgorICAgICAgICAoUVdlYlZpZXc6OnJlbmRlckhpbnRzKToKKyAgICAgICAgKFFXZWJW
aWV3OjpzZXRSZW5kZXJIaW50cyk6CisgICAgICAgIChRV2ViVmlldzo6c2V0UmVuZGVySGludCk6
CisgICAgICAgIChRV2ViVmlldzo6ZmluZFRleHQpOgorICAgICAgICAoUVdlYlZpZXc6OmV2ZW50
KToKKyAgICAgICAgKFFXZWJWaWV3OjpwcmludCk6CisgICAgICAgIChRV2ViVmlldzo6c3RvcCk6
CisgICAgICAgIChRV2ViVmlldzo6YmFjayk6CisgICAgICAgIChRV2ViVmlldzo6Zm9yd2FyZCk6
CisgICAgICAgIChRV2ViVmlldzo6cmVsb2FkKToKKyAgICAgICAgKFFXZWJWaWV3OjpyZXNpemVF
dmVudCk6CisgICAgICAgIChRV2ViVmlldzo6cGFpbnRFdmVudCk6CisgICAgICAgIChRV2ViVmll
dzo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFFXZWJWaWV3Ojptb3VzZU1vdmVFdmVudCk6Cisg
ICAgICAgIChRV2ViVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJWaWV3Ojpt
b3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Om1vdXNlUmVsZWFzZUV2
ZW50KToKKyAgICAgICAgKFFXZWJWaWV3Ojpjb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKFFX
ZWJWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFXZWJWaWV3OjprZXlQcmVzc0V2ZW50KToK
KyAgICAgICAgKFFXZWJWaWV3OjprZXlSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6
OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6Zm9jdXNPdXRFdmVudCk6CisgICAg
ICAgIChRV2ViVmlldzo6ZHJhZ0VudGVyRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmRyYWdM
ZWF2ZUV2ZW50KToKKyAgICAgICAgKFFXZWJWaWV3OjpkcmFnTW92ZUV2ZW50KToKKyAgICAgICAg
KFFXZWJWaWV3Ojpkcm9wRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmZvY3VzTmV4dFByZXZD
aGlsZCk6CisgICAgICAgIChRV2ViVmlldzo6aW5wdXRNZXRob2RRdWVyeSk6CisgICAgICAgIChR
V2ViVmlldzo6aW5wdXRNZXRob2RFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6Y2hhbmdlRXZl
bnQpOgorICAgICAgICAqIFdpZGdldEFwaS9xd2Vidmlldy5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnZpZXcuaC4KKyAgICAgICAgKiBXaWRnZXRBcGkvcXdlYnZpZXdh
Y2Nlc3NpYmxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3
YWNjZXNzaWJsZS5jcHAuCisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpRV2ViRnJhbWVB
Y2Nlc3NpYmxlKToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OmZyYW1lKToKKyAgICAg
ICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nl
c3NpYmxlOjp0ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxkQ291bnQp
OgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdlYkZy
YW1lQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2li
bGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnJvbGUpOgorICAgICAg
ICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6bmF2aWdhdGUpOgorICAgICAgICAoUVdlYlBhZ2VBY2Nl
c3NpYmxlOjpRV2ViUGFnZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxl
OjpwYWdlKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6dGV4dCk6CisgICAgICAgIChR
V2ViUGFnZUFjY2Vzc2libGU6OnBhcmVudCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6
OmNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisgICAg
ICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViUGFn
ZUFjY2Vzc2libGU6Om5hdmlnYXRlKToKKyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cm9s
ZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJW
aWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFXZWJWaWV3QWNj
ZXNzaWJsZTo6dmlldyk6CisgICAgICAgIChRV2ViVmlld0FjY2Vzc2libGU6OmNoaWxkQ291bnQp
OgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlOjpjaGlsZCk6CisgICAgICAgICogV2lkZ2V0
QXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vidmlld2FjY2Vzc2libGVfcC5oLgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJs
ZSk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nl
c3NpYmxlKToKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L0RlZmF1bHRGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuY3BwLgorICAgICAgICAoRGVmYXVsdEZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAg
ICAgKERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjp+RGVmYXVsdEZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXIpOgorICAgICAgICAoRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OnJlcXVp
cmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAoRGVmYXVsdEZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgIChEZWZhdWx0RnVsbFNj
cmVlblZpZGVvSGFuZGxlcjo6ZXhpdEZ1bGxTY3JlZW4pOgorICAgICAgICAqIFdpZGdldFN1cHBv
cnQvRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuaC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxl
cik6CisgICAgICAgICogV2lkZ2V0U3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlk
ZW9XaWRnZXQuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6RnVsbFNj
cmVlblZpZGVvV2lkZ2V0OjpGdWxsU2NyZWVuVmlkZW9XaWRnZXQpOgorICAgICAgICAoV2ViS2l0
OjpGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6On5GdWxsU2NyZWVuVmlkZW9XaWRnZXQpOgorICAgICAg
ICAoV2ViS2l0OjpGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0
OjpGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6OmNsb3NlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpG
dWxsU2NyZWVuVmlkZW9XaWRnZXQ6OmV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6RnVsbFNjcmVl
blZpZGVvV2lkZ2V0OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6RnVsbFNjcmVl
blZpZGVvV2lkZ2V0OjpoaWRlQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6RnVsbFNjcmVlblZp
ZGVvV2lkZ2V0OjpzaG93Q3Vyc29yKToKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1dpZGdldC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChGdWxsU2NyZWVuVmlkZW9XaWRnZXQpOgorICAgICAgICAqIFdpZGdldFN1cHBvcnQvSW5pdFdl
YktpdFF0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5pdFdlYktpdFF0LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Omlu
aXRpYWxpemVXZWJLaXRXaWRnZXRzKToKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L0luaXRXZWJL
aXRRdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0
V2ViS2l0UXQuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2lkZ2V0U3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXZWJQYWdlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5jcHAuCisgICAgICAgIChJbnNw
ZWN0b3JDbGllbnRXZWJQYWdlOjpJbnNwZWN0b3JDbGllbnRXZWJQYWdlKToKKyAgICAgICAgKElu
c3BlY3RvckNsaWVudFdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChJbnNwZWN0b3JD
bGllbnRXZWJQYWdlOjpqYXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgICog
V2lkZ2V0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXZWJQYWdlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdlYlBhZ2UuaC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRXZWJQYWdlKToKKyAgICAg
ICAgKiBXaWRnZXRTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHAuCisgICAgICAgIChRV2Vi
UGFnZUNsaWVudDo6b3duZXJXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRV2lkZ2V0Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFX
aWRnZXQ6OnJlcGFpbnRWaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdp
ZGdldDo6c2V0SW5wdXRNZXRob2RFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGll
bnRRV2lkZ2V0OjppbnB1dE1ldGhvZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNs
aWVudFFXaWRnZXQ6OnNldElucHV0TWV0aG9kSGludHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNsaWVudFFXaWRnZXQ6On5QYWdlQ2xpZW50UVdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlQ2xpZW50UVdpZGdldDo6Y3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRR
V2lkZ2V0Ojp1cGRhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRn
ZXQ6OnBhbGV0dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnNjcmVl
bk51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6b3duZXJXaWRn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6Omdlb21ldHJ5UmVsYXRp
dmVUb093bmVyV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojpw
bHVnaW5QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojp3aW5kb3dSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpzZXRXaWRnZXRWaXNpYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6On5QYWdlQ2xpZW50UUdy
YXBoaWNzV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRn
ZXQ6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0
Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6
cmVwYWludFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NX
aWRnZXQ6Om1ha2VPcGVuR0xDb250ZXh0Q3VycmVudElmQXZhaWxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldElucHV0TWV0aG9kRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjppbnB1dE1ldGhv
ZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6
c2V0SW5wdXRNZXRob2RIaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBo
aWNzV2lkZ2V0OjpjdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGlj
c1dpZGdldDo6dXBkYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3Jh
cGhpY3NXaWRnZXQ6OnBhbGV0dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFw
aGljc1dpZGdldDo6c2NyZWVuTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRR
R3JhcGhpY3NXaWRnZXQ6Om93bmVyV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGll
bnRRR3JhcGhpY3NXaWRnZXQ6Omdlb21ldHJ5UmVsYXRpdmVUb093bmVyV2lkZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OmdyYXBoaWNzSXRlbVZpc2li
bGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnBs
dWdpblBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0
OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojpz
ZXRXaWRnZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NX
aWRnZXQ6OndpbmRvd1JlY3QpOgorICAgICAgICAqIFdpZGdldFN1cHBvcnQvUGFnZUNsaWVudFF0
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGll
bnRRdC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYWdlQ2xpZW50UVdpZGdldCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6UGFnZUNsaWVudFFXaWRnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OmlzUVdpZGdldENsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6dmlld1Jlc2l6ZXNUb0NvbnRl
bnRzRW5hYmxlZCk6CisgICAgICAgIChRR3JhcGhpY3NJdGVtT3ZlcmxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpRR3JhcGhpY3NJdGVtT3ZlcmxheTo6UUdyYXBoaWNzSXRlbU92ZXJsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6UUdyYXBoaWNzSXRlbU92ZXJsYXk6OmJvdW5kaW5nUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpRR3JhcGhpY3NJdGVtT3ZlcmxheTo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UUdyYXBoaWNzSXRlbU92ZXJsYXk6OnByZXBhcmVHcmFwaGljc0l0ZW1HZW9tZXRyeUNo
YW5nZSk6CisgICAgICAgIChQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRn
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6aXNRV2lk
Z2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6
OnZpZXdSZXNpemVzVG9Db250ZW50c0VuYWJsZWQpOgorICAgICAgICAqIFdpZGdldFN1cHBvcnQv
UUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1FHcmFwaGljc1dpZGdldFBsdWdpbkltcGwuY3BwLgorICAgICAg
ICAoUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbDo6flFHcmFwaGljc1dpZGdldFBsdWdpbkltcGwp
OgorICAgICAgICAoUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbDo6dXBkYXRlKToKKyAgICAgICAg
KFFHcmFwaGljc1dpZGdldFBsdWdpbkltcGw6OnNldEdlb21ldHJ5QW5kQ2xpcCk6CisgICAgICAg
IChRR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBsOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFFHcmFw
aGljc1dpZGdldFBsdWdpbkltcGw6OnNldFdpZGdldFBhcmVudCk6CisgICAgICAgIChRR3JhcGhp
Y3NXaWRnZXRQbHVnaW5JbXBsOjpoYW5kbGUpOgorICAgICAgICAqIFdpZGdldFN1cHBvcnQvUUdy
YXBoaWNzV2lkZ2V0UGx1Z2luSW1wbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBsLmguCisgICAgICAgIChRR3Jh
cGhpY3NXaWRnZXRQbHVnaW5JbXBsKToKKyAgICAgICAgKFFHcmFwaGljc1dpZGdldFBsdWdpbklt
cGw6OlFHcmFwaGljc1dpZGdldFBsdWdpbkltcGwpOgorICAgICAgICAqIFdpZGdldFN1cHBvcnQv
UVN0eWxlRmFjYWRlSW1wLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVN0eWxlRmFjYWRlSW1wLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OmNvbnZlcnRUb1FTdHlsZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29udmVy
dFRvUVN0eWxlU3ViQ29udHJvbCk6CisgICAgICAgIChXZWJLaXQ6OmluaXRHZW5lcmljU3R5bGVP
cHRpb24pOgorICAgICAgICAoV2ViS2l0Ojppbml0U3BlY2lmaWNTdHlsZU9wdGlvbik6CisgICAg
ICAgIChNYXBwZWRTdHlsZU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok1hcHBlZFN0eWxlT3B0
aW9uOjpNYXBwZWRTdHlsZU9wdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRQaXhlbE1l
dHJpYyk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1FTdHlsZUZhY2FkZVN1YkNvbnRyb2wp
OgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OlFTdHlsZUZhY2FkZUltcCk6Cisg
ICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6flFTdHlsZUZhY2FkZUltcCk6CisgICAg
ICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6YnV0dG9uU3ViRWxlbWVudFJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OmZpbmRGcmFtZUxpbmVXaWR0aCk6CisgICAg
ICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6c2ltcGxlUGl4ZWxNZXRyaWMpOgorICAgICAg
ICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OmJ1dHRvbk1hcmdpbik6CisgICAgICAgIChXZWJL
aXQ6OlFTdHlsZUZhY2FkZUltcDo6c2xpZGVyTGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6UVN0
eWxlRmFjYWRlSW1wOjpzbGlkZXJUaGlja25lc3MpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVG
YWNhZGVJbXA6OnByb2dyZXNzQmFyQ2h1bmtXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHls
ZUZhY2FkZUltcDo6Z2V0QnV0dG9uTWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZh
Y2FkZUltcDo6Y29tYm9Cb3hTaXplRnJvbUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UVN0
eWxlRmFjYWRlSW1wOjpwdXNoQnV0dG9uU2l6ZUZyb21Db250ZW50cyk6CisgICAgICAgIChXZWJL
aXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViS2l0OjpRU3R5
bGVGYWNhZGVJbXA6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFj
YWRlSW1wOjpwYWludENvbWJvQm94KToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1w
OjpwYWludENvbWJvQm94QXJyb3cpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6
OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnBh
aW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnBhaW50
SW5uZXJTcGluQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwYWlu
dFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpzY3JvbGxC
YXJFeHRlbnQpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnNjcm9sbEJhck1p
ZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvblN0eWxlSGludCk6CisgICAgICAgIChXZWJLaXQ6OlFT
dHlsZUZhY2FkZUltcDo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViS2l0OjpRU3R5
bGVGYWNhZGVJbXA6OmhpdFRlc3RTY3JvbGxCYXIpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVG
YWNhZGVJbXA6OnNjcm9sbEJhclN1YkNvbnRyb2xSZWN0KToKKyAgICAgICAgKFdlYktpdDo6UVN0
eWxlRmFjYWRlSW1wOjpwYWludFNjcm9sbEJhcik6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZh
Y2FkZUltcDo6d2lkZ2V0Rm9yUGFpbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2Fk
ZUltcDo6c3R5bGUpOgorICAgICAgICAqIFdpZGdldFN1cHBvcnQvUVN0eWxlRmFjYWRlSW1wLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FTdHlsZUZhY2Fk
ZUltcC5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFFTdHlsZUZhY2FkZUltcCk6Cisg
ICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UVN0eWxlRmFjYWRlSW1wOjppc1ZhbGlkKToKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L1FX
ZWJVbmRvQ29tbWFuZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJVbmRvQ29tbWFuZC5jcHAuCisgICAgICAgIChRV2ViVW5kb0NvbW1hbmQ6OlFX
ZWJVbmRvQ29tbWFuZCk6CisgICAgICAgIChRV2ViVW5kb0NvbW1hbmQ6OnVuZG8pOgorICAgICAg
ICAoUVdlYlVuZG9Db21tYW5kOjpyZWRvKToKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L1FXZWJV
bmRvQ29tbWFuZC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViVW5kb0NvbW1hbmQuaC4KKyAgICAgICAgKFFXZWJVbmRvQ29tbWFuZCk6CisgICAgICAg
ICogV2lkZ2V0U3VwcG9ydC9RV2lkZ2V0UGx1Z2luSW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXaWRnZXRQbHVnaW5JbXBsLmNwcC4KKyAgICAg
ICAgKFFXaWRnZXRQbHVnaW5JbXBsOjp+UVdpZGdldFBsdWdpbkltcGwpOgorICAgICAgICAoUVdp
ZGdldFBsdWdpbkltcGw6OnVwZGF0ZSk6CisgICAgICAgIChRV2lkZ2V0UGx1Z2luSW1wbDo6c2V0
R2VvbWV0cnlBbmRDbGlwKToKKyAgICAgICAgKFFXaWRnZXRQbHVnaW5JbXBsOjpzZXRWaXNpYmxl
KToKKyAgICAgICAgKFFXaWRnZXRQbHVnaW5JbXBsOjpzZXRTdHlsZVNoZWV0KToKKyAgICAgICAg
KFFXaWRnZXRQbHVnaW5JbXBsOjpzZXRXaWRnZXRQYXJlbnQpOgorICAgICAgICAoUVdpZGdldFBs
dWdpbkltcGw6OmhhbmRsZSk6CisgICAgICAgICogV2lkZ2V0U3VwcG9ydC9RV2lkZ2V0UGx1Z2lu
SW1wbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2lk
Z2V0UGx1Z2luSW1wbC5oLgorICAgICAgICAoUVdpZGdldFBsdWdpbkltcGwpOgorICAgICAgICAo
UVdpZGdldFBsdWdpbkltcGw6OlFXaWRnZXRQbHVnaW5JbXBsKToKKyAgICAgICAgKiBXaWRnZXRT
dXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dl
YlBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJh
Y2tXZWJQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cp
OgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlF0RmFsbGJhY2tXZWJQb3B1cDo6ZGVsZXRlQ29tYm9Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UXRGYWxsYmFja1dlYlBvcHVwOjpwYWdlQ2xpZW50KToKKyAgICAgICAgKiBXaWRnZXRTdXBwb3J0
L1F0RmFsbGJhY2tXZWJQb3B1cC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoUXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tX
ZWJQb3B1cDo6c2V0R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBv
cHVwOjpnZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNl
dEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpmb250KToKKyAg
ICAgICAgKiBXaWRnZXRTdXBwb3J0L1F0V2ViQ29tYm9Cb3guY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94LmNwcC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UXRXZWJDb21ib0JveDo6UXRXZWJDb21ib0Jv
eCk6CisgICAgICAgIChXZWJDb3JlOjpRdFdlYkNvbWJvQm94OjpzaG93UG9wdXBBdEN1cnNvclBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlF0V2ViQ29tYm9Cb3g6OmV2ZW50RmlsdGVyKToK
KyAgICAgICAgKiBXaWRnZXRTdXBwb3J0L1F0V2ViQ29tYm9Cb3guaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRXZWJDb21ib0JveC5oLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChRdFdlYkNvbWJvQm94KToKKyAgICAgICAgKiBkZWNsYXJhdGl2
ZS9leHBlcmltZW50YWwvZXhwZXJpbWVudGFsLnByaToKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9w
dWJsaWMucHJpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisK
KzIwMTItMTEtMzAgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1F0XSBFbmFibGUgV2ViR0wgYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzczMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisKKzIwMTItMTEtMzAgIE1paGFpIE1hZXJlYW4g
IDxtbWFlcmVhbkBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTU1JlZ2lvbnNdIHdoZW4gV2ViS2l0
IHVzZXMgVjgsIHRoZXJlIHNob3VsZCBiZSBhIHNpbmdsZSB2YXJpYWJsZSB0byBzdG9yZSBpZiB0
aGUgQ1NTIFJlZ2lvbnMgZmVhdHVyZSBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDExOTIKKworICAgICAgICBSZXZpZXdlZCBieSBI
YWppbWUgTW9yaXRhLgorCisgICAgICAgIFJlbW92ZWQgdGhlIENTUyBSZWdpb25zIGZsYWcgaW4g
U2V0dGluZ3MgYW5kIHN3aXRjaGVkIHRvIHVzaW5nIHRoZSBuZXcgZmxhZyBJIGhhdmUgYWRkZWQg
aW4gUnVudGltZUVuYWJsZWRGZWF0dXJlcy4KKworICAgICAgICBUZXN0czogTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBBcGkv
cXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToK
KworMjAxMi0xMS0yOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV0syXSBGb3J3YXJkIGNvb2tpZSBqYXIgY2FsbHMgdG8gTmV0d29ya1Byb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQ1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVz
UXQ6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNldENv
b2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRW5h
YmxlZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tp
ZXMpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZSk6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6Cisg
ICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQWxsQ29va2llcyk6CisKKzIwMTIt
MTEtMjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAg
ICAgW1RleG1hcF0gUkVHUkVTU0lPTihyMTM1NjIwKSBRdFRlc3RCcm93c2VyIGNyYXNoZXMgb24g
R29vZ2xlLWdyYXZpdHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDM0MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKwor
ICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6c2V0VGV4dHVyZU1hcHBlcigpIG11
c3QgY2FsbAorICAgICAgICBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkg
b2YgdGhlIHJvb3QgbGF5ZXIuCisKKyAgICAgICAgQ3VycmVudGx5LCBQYWdlQ2xpZW50UUdyYXBo
aWNzV2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXllciBkb2VzIG5vdCBmbHVzaCBsYXllcgorICAg
ICAgICBzdGF0ZXMgb2YgdGhlIHJvb3QgbGF5ZXIgYWZ0ZXIgc2V0dGluZyBUZXh0dXJlTWFwcGVy
IHdoaWxlCisgICAgICAgIFBhZ2VDbGllbnRRV2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXllcigp
IGZsdXNoZXMgdGhlbSBvZiB0aGUgcm9vdCBsYXllci4gIElmCisgICAgICAgIG5vdCBmbHVzaGlu
ZyBzdGF0ZXMsIGRlc2NlbmRhbnQgbGF5ZXJzIGNhbiBub3QgcmVhY2ggdGhlIHJvb3QgbGF5ZXIu
IEl0IG1lYW5zCisgICAgICAgIGRlc2NlbmRhbnQgbGF5ZXJzIGNhbiBub3QgcmVhY2ggdGhlIFRl
eHR1cmVNYXBwZXIgdGhhdCB0aGUgcm9vdCBsYXllciBoYXMuCisKKyAgICAgICAgVGhpcyBpcyBh
bHJlYWR5IHRoZSBiZWhhdmlvciBmb3IgUGFnZUNsaWVudFFXaWRnZXQsIHdoaWNoIHNob3VsZCBi
ZSB0aGUgY2FzZQorICAgICAgICBmb3IgUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCBhcyB3ZWxs
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0OjpzZXRUZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXll
cik6CisKKzIwMTItMTEtMjcgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIENvbnNvbGlkYXRlIEZyYW1lTG9hZGVyOjpsb2FkKCkgaW50byBvbmUgZnVu
Y3Rpb24gdGFraW5nIGEgRnJhbWVMb2FkUmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZy
YW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToKKyAgICAgICAgKFFX
ZWJGcmFtZTo6c2V0SHRtbCk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldENvbnRlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBbHRlcm5hdGVIdG1sKToKKyAgICAgICAg
KHF0X2R1bXBfc2V0X2FjY2VwdHNfZWRpdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKToKKworMjAxMi0xMS0yNyAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEzNTc4Ni4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTM1Nzg2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDMzNzkKKworICAgICAgICBJdCBtYWRlIDMgcGx1Z2luIHRlc3RzIHRpbWVvdXQgb24g
c2V2ZXJhbCBwbGF0Zm9ybXMgKFJlcXVlc3RlZAorICAgICAgICBieSBPc3N5IG9uICN3ZWJraXQp
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNl
dEh0bWwpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRDb250ZW50KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0QWx0ZXJuYXRlSHRtbCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6
OmxvYWQpOgorCisyMDEyLTExLTI2ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9hZCgpIGludG8gb25l
IGZ1bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE1MQorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFX
ZWJGcmFtZTo6UVdlYkZyYW1lKToKKyAgICAgICAgKFFXZWJGcmFtZTo6bG9hZCk6CisgICAgICAg
IChRV2ViRnJhbWU6OnNldEh0bWwpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRDb250ZW50KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QWx0ZXJuYXRlSHRtbCk6CisgICAg
ICAgIChxdF9kdW1wX3NldF9hY2NlcHRzX2VkaXRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVuc2lvbik6CisKKzIwMTItMTEtMjYgIFBpZXJy
ZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisKKyAgICAgICAgW1F0XSBSRUdSRVNT
SU9OKHIxMzU1NzUpOiBJdCBtYWRlIGFsbCB0ZXN0cyBhc3NlcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFRoaXMgZml4ZXMgYW5vdGhlciByZWdyZXNz
aW9uIGludHJvZHVjZWQgaW4gcjEzNTUxNToKKyAgICAgICAgaW5pdGlhbGl6ZVdlYktpdFF0IHNo
b3VsZG4ndCBpbXBsaWNpdGVseSBjYWxsIGluaXRpYWxpemVXZWJDb3JlUXQKKyAgICAgICAgc2lu
Y2UgaXQgY2FuIGJlIGNhbGxlZCBmcm9tIFdlYktpdDIgdG8gaW5pdGlhbGl6ZSBRU3R5bGUgZm9y
IHRlc3RpbmcuCisgICAgICAgIFRoaXMgd291bGQgdGhlbiBsZWFkIHRvIHRoaW5ncyBzdWNoIGFz
IFBsYXRmb3JtU3RyYXRlZ2llcyBiZWluZworICAgICAgICBpbml0aWFsaXplZCB0d2ljZS4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6IEV4cGxpY2l0ZWx5IGNhbGwgaW5pdGlhbGl6ZVdl
YkNvcmVRdCgpLgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojppbml0aWFsaXplV2ViS2l0UXQpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVdl
YkNvcmVRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisKKzIwMTItMTEtMjYgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgW1F0XSBNYWtlIHN1cmUgdGhlIFFHTFdpZGdldCBjb250ZXh0IGlz
IGN1cnJlbnQgd2hlbiBjcmVhdGluZyB0aGUgVGV4dHVyZU1hcHBlci4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzE0MgorCisgICAgICAgIFdoZW4g
Y3JlYXRpbmcgdGhlIFRleHR1cmVNYXBwZXJHTCBmb3IgV0sxIHdlIGhhdmUgdG8gbWFrZSBzdXJl
CisgICAgICAgIHRoYXQgdGhlIEdMIGNvbnRleHQgcHJvdmlkZWQgYnkgdGhlIFFHTFdpZGdldCBp
cyBjdXJyZW50LgorICAgICAgICBPdGhlcndpc2UgdGhlIEdyYXBoaWNzQ29udGV4dDNEUXQgY3Jl
YXRlZCBieSBUZXh0dXJlTWFwcGVyR0wgd2lsbCBwaWNrIHVwCisgICAgICAgIHRoZSB3cm9uZyBw
b2ludGVyIGJ5IGNhbGxpbmcgUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCkuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFw
aGljc1dpZGdldDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorCisyMDEyLTExLTI2ICBNaWNoYWVs
IEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFFT
dHlsZUZhY2FkZUltcCBidWlsZCBicmVhayB3aXRoIGxhdGVzdCBRdCA1CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMxOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBieSBKLVAg
TnVybWkgPGpwbnVybWlAZGlnaWEuY29tPi4KKworICAgICAgICBGaXhlcyBRdFdlYktpdCBidWls
ZCBieSByZXBsYWNpbmcgcW9iamVjdF9jYXN0IHRvCisgICAgICAgIFFNYWNTdHlsZSB3aXRoIGNh
bGxzIHRvIFFPYmplY3Q6OmluaGVyaXRzLiBBbHNvCisgICAgICAgIHJlcGxhY2VzIFFfV1NfTUFD
IHByZXByb2Nlc3NlciBkaXJlY3RpdmVzIHdpdGggUV9PU19NQUMKKyAgICAgICAgZm9yIFF0IDUg
Y29tcGF0aWJpbGl0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FTdHlsZUZhY2FkZUlt
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6Z2V0QnV0dG9uTWV0cmlj
cyk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRDb21ib0JveCk6Cisg
ICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRJbm5lclNwaW5CdXR0b24pOgor
ICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnBhaW50U2Nyb2xsQmFyKToKKworMjAx
Mi0xMS0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNTY0OCBhbmQgcjEzNTY0OS4KKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM1NjQ4CisgICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNTY0OQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMTc2CisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
Y2Fubm90IGJlIGJ1aWx0IHdpdGggYSBxdC1taW5pbWFsIGNvbmZpZ3VyYXRpb24uCisgICAgICAg
IChSZXF1ZXN0ZWQgYnkgemFsYmlzc2VyIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRR
R3JhcGhpY3NXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKToKKworMjAxMi0xMS0yNCAgWmVu
byBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkIFF0IGJ1
aWxkIGZpeDoKKworICAgICAgICBNYWtlIHN1cmUgUUdMV2lkZ2V0IGRlZmluaXRpb24gaXMgYXZh
aWxhYmxlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKwor
MjAxMi0xMS0yNCAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdIE1ha2Ugc3VyZSB0aGUgUUdMV2lkZ2V0IGNvbnRleHQgaXMgY3VycmVudCB3aGVuIGNyZWF0
aW5nIHRoZSBUZXh0dXJlTWFwcGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzMTQyCisKKyAgICAgICAgV2hlbiBjcmVhdGluZyB0aGUgVGV4dHVy
ZU1hcHBlckdMIGZvciBXSzEgd2UgaGF2ZSB0byBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCB0aGUg
R0wgY29udGV4dCBwcm92aWRlZCBieSB0aGUgUUdMV2lkZ2V0IGlzIGN1cnJlbnQuCisgICAgICAg
IE90aGVyd2lzZSB0aGUgR3JhcGhpY3NDb250ZXh0M0RRdCBjcmVhdGVkIGJ5IFRleHR1cmVNYXBw
ZXJHTCB3aWxsIHBpY2sgdXAKKyAgICAgICAgdGhlIHdyb25nIHBvaW50ZXIgYnkgY2FsbGluZyBR
T3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS4KKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bh
Z2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lk
Z2V0OjpzZXRSb290R3JhcGhpY3NMYXllcik6CisKKzIwMTItMTEtMjMgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMzU1NzUuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzEzNTU3NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzMTY5CisKKyAgICAgICAgSXQgbWFkZSBhbGwgdGVzdHMgYXNzZXJ0IChSZXF1ZXN0ZWQgYnkg
T3NzeSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVXZWJL
aXRRdCk6CisKKzIwMTItMTEtMjMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNl
bkBkaWdpYS5jb20+CisKKyAgICAgICAgdHN0X3F3ZWJwYWdlIGZhaWxzIGFmdGVyIFFNaW1lRGF0
YWJhc2UgcGF0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzEyNQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAg
ICAgIFJlcGxhY2UgdGhlIHN0YXRpYyBleHRlbnNpb24tPm1pbWV0eXBlIHRhYmxlIHdpdGggYSBR
TWltZURhdGFiYXNlIGxvb2t1cAorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6ZmluZFRleHQpOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjpzdXBwb3J0ZWRDb250ZW50VHlwZSk6CisKKzIwMTItMTEtMjMgIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gQ29tcGls
aW5nIGFnYWluc3QgUXRXZWJraXQgQVBJIHJlcXVpcmVzIFFUX0RMTCB0byBiZSBkZWZpbmVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5NDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbW92ZSB0
aGUgcmVxdWlyZW1lbnQgb2YgaGF2aW5nIFFUX0RMTCBkZWZpbmVkIGluIG9yZGVyIGZvciB0aGUg
UVdFQktJVF9FWFBPUlQKKyAgICAgICAgbWFjcm8gdG8gYmUgZGVmaW5lZCBhcyBRX0RFQ0xfSU1Q
T1JULiBJbnN0ZWFkIHVuaWZ5IHRoZSBleHBvcnQgbWFjcm8gZGVmaW5pdGlvbgorICAgICAgICB0
byBmb2xsb3cgdGhlIHNhbWUgcnVsZXMgYXMgb3RoZXIgUXQgNSBtb2R1bGVzLCB3aXRoIHRoZSBl
eGNlcHRpb24gdGhhdCBpbnN0ZWFkIG9mCisgICAgICAgIFFUX0JVSUxEX1dFQktJVF9MSUIgd2Ug
Y29udGludWUgdG8gdXNlIEJVSUxESU5HX1dFQktJVCwgYmVjYXVzZSB0aGF0J3MgdXNlZCBhbHNv
CisgICAgICAgIGluIG90aGVyIGNyb3NzLXBsYXRmb3JtIGhlYWRlciBmaWxlcyB0byBkZXRlcm1p
bmUgdGhlIGNvcnJlY3QgbWVhbmluZyBvZiBleHBvcnQKKyAgICAgICAgbWFjcm9zLgorCisgICAg
ICAgICogQXBpL3F3ZWJraXRnbG9iYWwuaDoKKworMjAxMi0xMS0yMyAgU2ltb24gSGF1c21hbm4g
IDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBRV2ViUGFnZTo6c2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCBzaG91bGQgYmUgdmlydHVhbCBpbiBRdCA1CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMxMTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBUaGlz
IGZ1bmN0aW9uIHdhcyBhZGRlZCBhcyBhIHNsb3QgZHVyaW5nIFF0IDQueCB0aW1lcyBiZWNhdXNl
IGFkZGluZworICAgICAgICB2aXJ0dWFsIGZ1bmN0aW9ucyBicmVha3MgYmluYXJ5IGNvbXBhdGli
aWxpdHkuIFRoaXMgY29uc3RyYWludCBpcyBnb25lCisgICAgICAgIHdpdGggdGhlIGluaXRpYWwg
cmVsZWFzZSBvZiBXZWJLaXQgd2l0aCBRdCA1LCBhbmQgdGhlcmVmb3JlIHdlIGNhbgorICAgICAg
ICBtYWtlIGl0IHZpcnR1YWwgbm93LgorCisgICAgICAgIFRoZSBjaGFuZ2UgaXMgZnVsbHkgc291
cmNlIGNvbXBhdGlibGUgYXMgZXhpc3RpbmcgInJlLWltcGxlbWVudGF0aW9ucyIKKyAgICAgICAg
YXMgc2xvdHMgd2lsbCBub3cgYmUgY2FsbGVkIHRocm91Z2ggaXQgYmVpbmcgYSB2aXJ0dWFsIGZ1
bmN0aW9uLiBUaGV5CisgICAgICAgIGJlY29tZSB1bnVzZWQgc2xvdHMuCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpzaG91bGRJbnRlcnJ1
cHRKYXZhU2NyaXB0KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzaG91bGRJbnRlcnJ1cHRKYXZh
U2NyaXB0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaDoKKyAg
ICAgICAgKFFXZWJQYWdlQWRhcHRlcik6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKEpTVGVzdFBhZ2U6OnNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQpOgorICAgICAgICAoSlNUZXN0UGFnZSk6CisKKzIwMTItMTEtMjMgIFBpZXJyZSBSb3NzaSAg
PHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMzU1
MTUpOiAzIGFwcGNhY2hlIHRlc3RzIHN0aWxsIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzA3MworCisgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFub3RoZXIgc25lYWt5IHR5cG8uCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjph
cHBsaWNhdGlvbkNhY2hlUXVvdGFFeGNlZWRlZCk6CisKKzIwMTItMTEtMjIgIFBpZXJyZSBSb3Nz
aSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisKKyAgICAgICAgW1F0XSBBdm9pZCBpbml0aWFs
aXppbmcgUGxhdGZvcm1TdHJhdGVnaWVzIHR3aWNlLgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFRoaXMgZml4ZXMgYW5vdGhlciByZWdyZXNz
aW9uIGludHJvZHVjZWQgaW4gcjEzNTUxNToKKyAgICAgICAgaW5pdGlhbGl6ZVdlYktpdFF0IHNo
b3VsZG4ndCBpbXBsaWNpdGVseSBjYWxsIGluaXRpYWxpemVXZWJDb3JlUXQKKyAgICAgICAgc2lu
Y2UgaXQgY2FuIGJlIGNhbGxlZCBmcm9tIFdlYktpdDIgdG8gaW5pdGlhbGl6ZSBRU3R5bGUgZm9y
IHRlc3RpbmcuCisgICAgICAgIFRoaXMgd291bGQgdGhlbiBsZWFkIHRvIHRoaW5ncyBzdWNoIGFz
IFBsYXRmb3JtU3RyYXRlZ2llcyBiZWluZworICAgICAgICBpbml0aWFsaXplZCB0d2ljZS4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6IEV4cGxpY2l0ZWx5IGNhbGwgaW5pdGlhbGl6ZVdl
YkNvcmVRdCgpLgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojppbml0aWFsaXplV2ViS2l0UXQpOgorCisyMDEyLTExLTIzICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KKworICAgICAgICBVbnJldmlld2VkIHRyaXZpYWwg
UXQvV2luIGJ1aWxkIGZpeDoKKworICAgICAgICBJbmNsdWRlIEZvcm1TdGF0ZS5oL0hUTUxGb3Jt
RWxlbWVudC5oIGluIHRoZSBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBkZWNsYXJhdGlvbiBi
ZWNhdXNlIE1TVkMgbmVlZHMgaXQuIEFsc28gZml4IFFfREVDTF9FWFBPUlQgZGVjbGFyYXRpb25z
CisgICAgICAgIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgZXhwb3J0ZWQu
CisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0
V2ViQ29yZVF0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luaXRXZWJLaXRRdC5oOgorICAgICAgICAoV2ViS2l0KToKKworMjAxMi0xMS0yMiAgUGllcnJl
IFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdIFJFR1JFU1NJ
T04ocjEzNTUxNSk6IEl0IG1hZGUgMy0zIHRlc3RzIGZhaWwgYW5kIGNyYXNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwNzMKKworICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBSZW1vdmluZyB0aGUg
UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIG1lbWJlciBpbiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQK
KyAgICAgICAgd2FzIHJpZ2h0LCBidXQgd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFzIHRvIGhvdyB3
ZSBmZXRjaCBpdCBiYWNrLgorICAgICAgICBTaW5jZSB0aGUgV2ViQ29yZSBQYWdlIGlzIG5vdCBh
bHdheXMgdmFsaWQsIGdldCB0aGUgUU5BTSBpbnN0YW5jZQorICAgICAgICBzdHJhaWdodCBmcm9t
IHRoZSBmcmFtZSBhZGFwdGVyIHRocm91Z2ggaXRzIHBhZ2UgYWRhcHRlciBpbnN0ZWFkLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOiBbU3R5bGUgbml0XSBS
ZW1vdmUgc3RyYXkgZW1pdC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtp
bmdDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4
dFF0OjpuZXR3b3JrQWNjZXNzTWFuYWdlcik6CisKKzIwMTItMTEtMjIgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQgTVNWQyBX
aW5kb3dzIGJ1aWxkIGZpeDogSW5jbHVkZSBoZWFkZXIgZmlsZXMgcmVmZXJlbmNlZCBpbiBSZWZQ
dHIKKyAgICAgICAgaW5zdGFuY2VzLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoK
KworMjAxMi0xMS0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+
LCBQaWVycmUgUm9zc2kgPHBpZXJyZS5yb3NzaUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBT
ZXBhcmF0ZSBRV2lkZ2V0IGRlcGVuZGFudCBjb2RlIGludG8gc2VwYXJhdGUgV2ViS2l0V2lkZ2V0
cyBzdGF0aWMgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAyODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4K
KworICAgICAgICBUaGlzIHBhdGNoIHNlcGFyYXRlcyBjb2RlIHRoYXQgbmVlZHMgdG8gdXNlIFFX
aWRnZXQgcmVsYXRlZCBBUElzIGluCisgICAgICAgIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydCBh
bmQgQXBpIGZyb20gY29kZSB0aGF0IGRvZXNuJ3QuIFRoaXMgbWVhbnMgZm9yCisgICAgICAgIGV4
YW1wbGUgRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgcmVtYWlucyBpbiB0aGUgV2ViS2l0MSBzdGF0
aWMgbGlicmFyeSwKKyAgICAgICAgd2hpbGUgcXdlYnBhZ2UuY3BwIGFuZCBxd2ViZnJhbWUuY3Bw
IGJlY29tZSBwYXJ0IG9mIHRoZSBXZWJLaXRXaWRnZXRzCisgICAgICAgIHN0YXRpYyBsaWJyYXJ5
LiBXZWJLaXQxIGlzIGNvbXBpbGVkIHdpdGhvdXQgUVQgKz0gd2lkZ2V0cyBhbmQgdGhlcmVmb3Jl
CisgICAgICAgIGFueSB3aWRnZXQgcmVsYXRlZCBkZXBlbmRlbmN5IGhhcyBiZWVuIG1vdmVkICJ1
cCIgYW5kIG91dCBvZiBXZWJLaXQxIGludG8KKyAgICAgICAgdGhlIFdlYktpdFdpZGdldHMgbGli
cmFyeS4KKworICAgICAgICBCZXR3ZWVuIHRoZSBjb2RlIGluIFdlYktpdC5hIGFuZCBXZWJLaXRX
aWRnZXRzLmEgbmV3IGFkYXB0ZXJzIGFuZAorICAgICAgICBpbnRlcmZhY2VzIGhhdmUgYmVlbiBp
bnRyb2R1Y2VkLCBzdWNoIGFzIFFXZWJQYWdlQWRhcHRlciBhbmQKKyAgICAgICAgUVdlYkZyYW1l
QWRhcHRlci4gUVdlYlBhZ2VBZGFwdGVyLCB3aGVuIHVzZWQgZnJvbSBXZWJLaXQxLCBpcyBhIHdh
eSB0bworICAgICAgICBjYWxsIG91dCBpbnRvIHRoZSBBUEkgbGF5ZXIsIGltcGxlbWVudGVkIGJ5
IFFXZWJQYWdlIChRV2ViUGFnZVByaXZhdGUpLgorICAgICAgICBUaGUgb3RoZXIgd2F5IGFyb3Vu
ZCBpZiBRV2ViUGFnZSB3YW50cyB0byBhY2Nlc3MgV2ViQ29yZSBvcgorICAgICAgICBXZWJDb3Jl
U3VwcG9ydCByZWxhdGVkIGZ1bmN0aW9uYWxpdHksIGl0IHdpbGwgZ28gdGhyb3VnaAorICAgICAg
ICBRV2ViUGFnZUFkYXBhdGVyIChhcyBiYXNlIGNsYXNzKS4gVGhlIHNlcGFyYXRpb24gaW4gdGhl
IGRpcmVjdGlvbiB1cAorICAgICAgICBpbnRvIHRoZSBBUEkgbGF5ZXIgaXMgY29tcGxldGUgd2l0
aCB0aGlzIHBhdGNoLCBubyBjb2RlIGluIFdlYktpdDEKKyAgICAgICAgZGVwZW5kcyBvbiBRdFdp
ZGdldHMuIFRoZSBzZXBhcmF0aW9uIHRoZSBvdGhlciB3YXkgYXJvdW5kLCBjb2RlIGluIHRoZQor
ICAgICAgICBBUEkgbGF5ZXIgbm90IHVzaW5nIGFueSBXZWJDb3JlIHR5cGVzLCBpcyBub3QgY29t
cGxldGUgeWV0LgorCisgICAgICAgIFNvbWUgY2xhc3NlcyBzdWNoIGFzIFFXZWJTZXR0aW5ncywg
UVdlYkVsZW1lbnQgb3IKKyAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQgcmVtYWluIGlu
IFdlYktpdDEuIFdoaWxlIHRoZXkgYXJlIEFQSSBsYXllciwKKyAgICAgICAgdGhleSBkbyBub3Qg
ZGVwZW5kIG9uIHdpZGdldCByZWxhdGVkIFF0IEFQSXMgYW5kIHRoZXkgbWFrZSBtdWNoIG1vcmUK
KyAgICAgICAgdXNlIG9mIFdlYkNvcmUgaW50ZXJuYWwgQVBJcyBhbmQgdGhlcmVmb3JlIGFyZSBl
YXNpZXIgdG8ga2VlcCBpbgorICAgICAgICBXZWJLaXQxLgorCisgICAgICAgIEluIHRoZSBmdXR1
cmUgd2UgcGxhbiB0byBwbGFjZSBhIHJlYWwgc2hhcmVkIGxpYnJhcnkgYm91bmRhcnkgYmV0d2Vl
bgorICAgICAgICBXZWJLaXQxIGFuZCBXZWJLaXRXaWRnZXRzLCBieSBrZWVwaW5nIHRoZSBXZWJL
aXQxIHN0YXRpYyBsaWJyYXJ5IGFzCisgICAgICAgIHBhcnQgb2YgdGhlIFF0V2ViS2l0IHNoYXJl
ZCBsaWJyYXJ5IGFuZCBieSB0dXJuaW5nIHRoZSBXZWJLaXRXaWRnZXRzCisgICAgICAgIHN0YXRp
YyBsaWJyYXJ5IGludG8gYSBzaGFyZWQgb25lLgorCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNz
d2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6cGFnZUNsaWVu
dCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBhZ2Up
OgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZSk6CisgICAgICAgICogQXBpL3F3
ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50Ojp3ZWJGcmFtZSk6CisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpzZXRQYWdl
KToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmhhbmRsZVByb2dyZXNzRmluaXNoZWQpOgorICAg
ICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6ZW1pdEluaXRpYWxMYXlvdXRDb21wbGV0ZWQpOgorICAg
ICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6ZW1pdEljb25DaGFuZ2VkKToKKyAgICAgICAgKFFXZWJG
cmFtZVByaXZhdGU6OmVtaXRMb2FkU3RhcnRlZCk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRl
OjplbWl0TG9hZEZpbmlzaGVkKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmNyZWF0ZUNo
aWxkRnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YXBpSGFuZGxlKToKKyAgICAg
ICAgKFFXZWJGcmFtZVByaXZhdGU6OmhhbmRsZSk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRl
Ojpjb250ZW50c1NpemVEaWRDaGFuZ2UpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6c2Ny
b2xsQmFyUG9saWN5KToKKyAgICAgICAgKFFXZWJGcmFtZTo6UVdlYkZyYW1lKToKKyAgICAgICAg
KFFXZWJGcmFtZTo6flFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFVybCk6Cisg
ICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxQb3Np
dGlvbik6CisgICAgICAgIChRV2ViRnJhbWU6Omdlb21ldHJ5KToKKyAgICAgICAgKFFXZWJGcmFt
ZVByaXZhdGU6OmtpdCk6CisgICAgICAgIChRV2ViRnJhbWU6OmhhbmRsZSk6CisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAo
UVdlYkZyYW1lUHJpdmF0ZTo6UVdlYkZyYW1lUHJpdmF0ZSk6CisgICAgICAgIChRV2ViRnJhbWVQ
cml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAoUVdlYkhp
c3RvcnlQcml2YXRlOjpwYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnlfcC5oOgorICAg
ICAgICAoUVdlYkhpc3RvcnlQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5j
cHA6CisgICAgICAgIChRV2ViSW5zcGVjdG9yUHJpdmF0ZTo6c2V0RnJvbnRlbmQpOgorICAgICAg
ICAqIEFwaS9xd2ViaW5zcGVjdG9yX3AuaDoKKyAgICAgICAgKFFXZWJJbnNwZWN0b3JQcml2YXRl
KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp+UVdlYlBhZ2VQ
cml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y29yZSk6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OnNob3cpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpzZXRGb2N1cyk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVuZm9jdXMpOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dmlld3Bv
cnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlV2luZG93KToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6amF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpqYXZh
U2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6cHJpbnRSZXF1ZXN0ZWQp
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkYXRhYmFzZVF1b3RhRXhjZWVkZWQpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjphcHBsaWNhdGlvbkNhY2hlUXVvdGFFeGNlZWRlZCk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnNldFRvb2xUaXApOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpjcmVhdGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6bWFpbkZyYW1lQWRhcHRlcik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNo
b29zZUZpbGVzKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6YWNjZXB0TmF2aWdhdGlvblJl
cXVlc3QpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplbWl0UmVzdG9yZUZyYW1lU3RhdGVS
ZXF1ZXN0ZWQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplbWl0U2F2ZUZyYW1lU3RhdGVS
ZXF1ZXN0ZWQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplbWl0RG93bmxvYWRSZXF1ZXN0
ZWQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplbWl0RnJhbWVDcmVhdGVkKToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZXJyb3JQYWdlRXh0ZW5zaW9uKToKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6YWRh
cHRlckZvcldpZGdldCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZU1haW5GcmFt
ZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5zcGVjdG9ySGFuZGxlKToKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6c2V0SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjpzZXRJbnNwZWN0b3JXaW5kb3dUaXRsZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNy
ZWF0ZVdlYkluc3BlY3Rvcik6CisgICAgICAgIChpdGVyYXRlQ29udGV4dE1lbnUpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjptZW51QWN0aW9uc0FzVGV4dCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmVtaXRWaWV3cG9ydENoYW5nZVJlcXVlc3RlZCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91
c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VEb3VibGVDbGlj
a0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VUcmlwbGVDbGlja0V2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaWV3KToKKyAgICAgICAgKFFX
ZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoUVdlYlBhZ2U6Omph
dmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdENvbmZpcm0pOgor
ICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoUVdlYlBhZ2U6
OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldEZlYXR1
cmVQZXJtaXNzaW9uKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y29sb3JTZWxlY3Rpb25S
ZXF1ZXN0ZWQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVTZWxlY3RQb3B1cCk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnZpZXdSZWN0UmVsYXRpdmVUb1dpbmRvdyk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RlZCk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RD
YW5jZWxsZWQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpub3RpZmljYXRpb25zUGVybWlz
c2lvblJlcXVlc3RlZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om5vdGlmaWNhdGlvbnNQ
ZXJtaXNzaW9uUmVxdWVzdENhbmNlbGxlZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cyk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptaWNyb0Zv
Y3VzQ2hhbmdlZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnRyaWdnZXJDb3B5QWN0aW9u
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dHJpZ2dlckFjdGlvbkZvcktleUV2ZW50KToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y2xlYXJVbmRvU3RhY2spOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpjYW5VbmRvKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y2FuUmVk
byk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVuZG8pOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpyZWRvKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlVW5kb1N0ZXAp
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JDb21tYW5kRm9yS2V5RXZlbnQpOgor
ICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0
Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JT
aXplKToKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6ZXh0
ZW5zaW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjpoYW5kbGUpOgorICAgICAgICAoUVdlYlBhZ2U6
OmNob29zZUZpbGUpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
KToKKyAgICAgICAgKFFXZWJQYWdlOjpuZXR3b3JrQWNjZXNzTWFuYWdlcik6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisgICAgICAgICogQXBp
L3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBh
Z2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnVuZm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdp
bmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2hvdyk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRTdGF0dXNiYXJWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRNZW51YmFyVmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2xvc2VXaW5kb3dTb29uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OjpzZXRTdGF0dXNiYXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjprZXlib2FyZFVJTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6d2luZG93UmVzaXplclJlY3QpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChDaHJvbWVDbGllbnRRdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oOgorICAgICAgICAoQ29udGV4dE1l
bnVDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGVmYXVsdEZ1bGxTY3JlZW5W
aWRlb0hhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKERlZmF1bHRGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChEZWZhdWx0
RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToK
KyAgICAgICAgKERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpyZXF1aXJlc0Z1bGxTY3Jl
ZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAgICAgICAgKERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZWZhdWx0
RnVsbFNjcmVlblZpZGVvSGFuZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1F0V2ViQ29tYm9Cb3guaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpEcmFnQ2xpZW50
UXQpOgorICAgICAgICAoRHJhZ0NsaWVudFF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICh0b0dlb2xvY2F0aW9uQ2xpZW50
TW9jayk6CisgICAgICAgICh0b0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0RHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViUGFnZVNldEdyb3VwTmFtZSk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViUGFnZUdyb3VwTmFtZSk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yRXhlY3V0ZVNjcmlwdCk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yU2hvdyk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yQ2xvc2UpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omhhc0RvY3VtZW50RWxlbWVudCk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhdXNlVHJhbnNpdGlvbk9mUHJvcGVydHkpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJGcmFtZU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVz
RW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmZpbmRTdHJpbmcpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQpOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2
aW9yKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp2aWV3cG9ydEFzVGV4dCk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2NhbGVQYWdlQnkpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRHZW9sb2NhdGlvbk1vY2spOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1p
c3Npb24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RzKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzaG91bGRDbG9zZSk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVzZXJTdHlsZVNo
ZWV0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyc0xvYWRp
bmcpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdvQmFjayk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzcG9uc2VNaW1lVHlwZSk6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJPcGVuZXIpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb250ZXh0TWVudSk6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJkUGFydHlDb29raWVQb2xpY3lBbGxvd3Mp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om1lZGlhQ29udGVudFVybEJ5RWxl
bWVudElkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBbHRlcm5hdGVI
dG1sKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb25maXJtQ29tcG9zaXRp
b24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluamVjdEludGVybmFsc09i
amVjdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRJbnRlcm5hbHNP
YmplY3QpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnBhaW50UGFnZXNXaXRo
Qm91bmRhcmllcyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VHJhY2tS
ZXBhaW50UmVjdHMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRyYWNrUmVw
YWludFJlY3RzKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnZXRUcmFja2Vk
UmVwYWludFJlY3RzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKGR1bXBSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6
c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6c2hvdWxkSW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRRdDo6c2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFF0OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dW5kbyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVkbyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6c21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFF0Ojp0b2dnbGVTbWFydEluc2VydERlbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpFZGl0b3JDbGllbnRRdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKEVk
aXRvckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoZHJ0RGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6c2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVk
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBv
c3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmZyYW1lTG9hZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpyZXN0b3JlVmlld1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZyYW1lTG9hZGVyRGVzdHJveWVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFBl
cmZvcm1GaXJzdE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6b25JY29uTG9hZGVkRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzYXZlVmlld1N0YXRlVG9JdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbGxlZEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmJsb2NrZWRFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93VVJMRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
YW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpjaG9vc2VGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2ViRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1pdExvYWRTdGFydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmVtaXRMb2FkRmluaXNoZWQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKEZyYW1lTG9h
ZGVyQ2xpZW50UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0Nv
bnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQ6
OkZyYW1lTmV0d29ya2luZ0NvbnRleHRRdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdv
cmtpbmdDb250ZXh0UXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtp
bmdDb250ZXh0UXQ6Om5ldHdvcmtBY2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuaDoKKyAgICAgICAgKEZyYW1lTmV0d29ya2lu
Z0NvbnRleHRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlk
ZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1F0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xv
Y2F0aW9uQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRR
dDo6R2VvbG9jYXRpb25DbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNs
aWVudFF0Ojpwb3NpdGlvblVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnRRdDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNs
aWVudFF0OjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudFF0OjpjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5oOgorICAgICAgICAoR2VvbG9jYXRpb25DbGllbnRR
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQ6
OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdEZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUGVybWlz
c2lvbkNsaWVudFF0OjpzZXRQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9H
ZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdC5oOgorICAgICAgICAoR2VvbG9jYXRpb25QZXJt
aXNzaW9uQ2xpZW50UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQu
Y3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6c2V0V2ViS2l0V2lkZ2V0
c0luaXRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVXZWJLaXRRdCk6Cisg
ICAgICAgIChXZWJLaXQ6OnNldEltYWdlUGxhdGZvcm1SZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjppbml0aWFsaXplV2ViQ29yZVF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0
V2ViQ29yZVF0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYktpdFF0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplV2ViS2l0V2lkZ2V0cyk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYktpdFF0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRXZWJDb21ib0JveC5oLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpJbnNw
ZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0
OjphdHRhY2hBbmRSZXBsYWNlUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50UXQ6OmRldGFjaFJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Ojp1cGRhdGVXaW5k
b3dUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Ojpk
ZXN0cm95SW5zcGVjdG9yVmlldyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50UXQuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudFF0KToKKyAgICAgICAgKEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFdlYlBhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3RvckNsaWVudFdlYlBh
Z2U6Okluc3BlY3RvckNsaWVudFdlYlBhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50V2Vi
UGFnZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKEluc3BlY3RvckNsaWVudFdlYlBhZ2U6Omph
dmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXZWJQYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLmguCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoSW5zcGVjdG9yQ2xpZW50V2ViUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yU2VydmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVy
UmVxdWVzdEhhbmRsZXJRdDo6dGNwUmVhZHlSZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ6OndlYlNvY2tldFJlYWR5UmVhZCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuaDoKKyAgICAgICAgKEluc3BlY3Rv
clNlcnZlclF0KToKKyAgICAgICAgKEluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6Ok5vdGlmaWNhdGlvbldy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
OmRpc3BsYXlOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmR1bXBT
aG93VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dDo6dG9QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0Ojp0b0ZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6
fk5vdGlmaWNhdGlvbldyYXBwZXIpOgorICAgICAgICAoTm90aWZpY2F0aW9uV3JhcHBlcik6Cisg
ICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6aGFzU3lzdGVtVHJheUljb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnNldFN5c3RlbVRy
YXlJY29uKToKKyAgICAgICAgKENhbGxiYWNrc0luZm8pOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKGNyZWF0
ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0RGcm9tV2lkZ2V0KToKKyAgICAgICAgKFFXZWJQYWdl
Q2xpZW50Ojpvd25lcldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdl
dDo6b3duZXJXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OmNy
ZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNs
aWVudFFHcmFwaGljc1dpZGdldDo6b3duZXJXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNsaWVudFFHcmFwaGljc1dpZGdldDo6Y3JlYXRlUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgIChQYWdl
Q2xpZW50UVdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpRR3JhcGhpY3NJdGVtT3ZlcmxheTo6
UUdyYXBoaWNzSXRlbU92ZXJsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFw
aGljc1dpZGdldDo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisgICAgICAgIChQYWdlQ2xp
ZW50UUdyYXBoaWNzV2lkZ2V0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UGx1Z2lu
SW5mbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwOgorICAgICAg
ICAoU2VsZWN0RGF0YTo6U2VsZWN0RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUUdy
YXBoaWNzV2lkZ2V0UGx1Z2luSW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoUUdyYXBoaWNzV2lk
Z2V0UGx1Z2luSW1wbDo6flFHcmFwaGljc1dpZGdldFBsdWdpbkltcGwpOgorICAgICAgICAoUUdy
YXBoaWNzV2lkZ2V0UGx1Z2luSW1wbDo6dXBkYXRlKToKKyAgICAgICAgKFFHcmFwaGljc1dpZGdl
dFBsdWdpbkltcGw6OnNldEdlb21ldHJ5QW5kQ2xpcCk6CisgICAgICAgIChRR3JhcGhpY3NXaWRn
ZXRQbHVnaW5JbXBsOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFFHcmFwaGljc1dpZGdldFBsdWdp
bkltcGw6OnNldFdpZGdldFBhcmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXaWRnZXRQbHVnaW5J
bXBsOjpoYW5kbGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FHcmFwaGljc1dpZGdldFBs
dWdpbkltcGwuaDogQWRkZWQuCisgICAgICAgIChRR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBsKToK
KyAgICAgICAgKFFHcmFwaGljc1dpZGdldFBsdWdpbkltcGw6OlFHcmFwaGljc1dpZGdldFBsdWdp
bkltcGwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGNhY2hlTG9hZENvbnRyb2xUb0NhY2hlUG9saWN5KToKKyAgICAgICAg
KFFXZWJGcmFtZURhdGE6OlFXZWJGcmFtZURhdGEpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRl
cjo6UVdlYkZyYW1lQWRhcHRlcik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjp+UVdlYkZy
YW1lQWRhcHRlcik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpsb2FkKToKKyAgICAgICAg
KFFXZWJGcmFtZUFkYXB0ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChRV2ViRnJh
bWVBZGFwdGVyOjpzY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpm
cmFtZVJlY3QpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6aW5pdCk6CisgICAgICAgIChR
V2ViRnJhbWVBZGFwdGVyOjpraXQpOgorICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJl
QWJzb2x1dGVVcmwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFFXZWJGcmFtZURhdGEpOgor
ICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcik6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpo
YXNWaWV3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6UVdlYlBhZ2VBZGFwdGVyKToKKyAgICAg
ICAgKFFXZWJQYWdlQWRhcHRlcjo6flFXZWJQYWdlQWRhcHRlcik6CisgICAgICAgIChRV2ViUGFn
ZUFkYXB0ZXI6OmluaXQpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpkZWxldGVQYWdlKToK
KyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6a2l0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRl
cjo6dmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpyZWdpc3Rl
clVuZG9TdGVwKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0TmV0d29ya0FjY2Vzc01h
bmFnZXIpOgorICAgICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpuZXR3b3JrQWNjZXNzTWFuYWdlcik6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXIpOgorICAgICAgICAoRXJy
b3JQYWdlT3B0aW9uKToKKyAgICAgICAgKEVycm9yUGFnZVJldHVybik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUVdlYlVuZG9Db21tYW5kLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94LmguCisgICAgICAgIChRV2ViVW5kb0Nv
bW1hbmQ6OlFXZWJVbmRvQ29tbWFuZCk6CisgICAgICAgIChRV2ViVW5kb0NvbW1hbmQ6OnVuZG8p
OgorICAgICAgICAoUVdlYlVuZG9Db21tYW5kOjpyZWRvKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RV2ViVW5kb0NvbW1hbmQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94LmguCisgICAgICAgIChRV2ViVW5kb0NvbW1hbmQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXaWRnZXRQbHVnaW5JbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChRV2lkZ2V0UGx1Z2luSW1wbDo6flFXaWRnZXRQbHVnaW5JbXBsKToKKyAgICAgICAg
KFFXaWRnZXRQbHVnaW5JbXBsOjp1cGRhdGUpOgorICAgICAgICAoUVdpZGdldFBsdWdpbkltcGw6
OnNldEdlb21ldHJ5QW5kQ2xpcCk6CisgICAgICAgIChRV2lkZ2V0UGx1Z2luSW1wbDo6c2V0Vmlz
aWJsZSk6CisgICAgICAgIChRV2lkZ2V0UGx1Z2luSW1wbDo6c2V0U3R5bGVTaGVldCk6CisgICAg
ICAgIChRV2lkZ2V0UGx1Z2luSW1wbDo6c2V0V2lkZ2V0UGFyZW50KToKKyAgICAgICAgKFFXaWRn
ZXRQbHVnaW5JbXBsOjpoYW5kbGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXaWRnZXRQ
bHVnaW5JbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRXZWJDb21ib0JveC5oLgorICAgICAgICAoUVdpZGdldFBsdWdpbkltcGwpOgorICAgICAgICAo
UVdpZGdldFBsdWdpbkltcGw6OlFXaWRnZXRQbHVnaW5JbXBsKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxs
YmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRG
YWxsYmFja1dlYlBvcHVwOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQ
b3B1cDo6cGFnZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dl
YlBvcHVwLmg6CisgICAgICAgIChRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1F0UGx1Z2luV2lkZ2V0QWRhcHRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0V2ViQ29tYm9Cb3guaC4KKyAgICAgICAgKFF0UGx1Z2lu
V2lkZ2V0QWRhcHRlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRXZWJDb21ib0JveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRdFdlYkNvbWJvQm94OjpzaG93UG9wdXBBdEN1cnNvclBv
c2l0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51UXQuaDoKKyAgICAgICAgKFNlYXJj
aFBvcHVwTWVudVF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0LmNwcDoK
KyAgICAgICAgKFVuZG9TdGVwUXQ6OlVuZG9TdGVwUXQpOgorICAgICAgICAoVW5kb1N0ZXBRdDo6
dGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVW5kb1N0ZXBRdC5oOgorICAgICAgICAo
VW5kb1N0ZXBRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNlRXZlbnRUeXBlQW5kTW91c2VCdXR0b25Gcm9t
UUV2ZW50KToKKyAgICAgICAgKFdlYktpdFBsYXRmb3JtV2hlZWxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRQbGF0Zm9ybVdoZWVsRXZlbnQ6OmFwcGx5RGVsdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0UGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXRQbGF0Zm9ybVdoZWVsRXZl
bnQpOgorICAgICAgICAoV2ViS2l0UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9QbGF0Zm9ybUV2ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V2hlZWxFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0R2VzdHVyZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RXZlbnRDb252ZXJzaW9uLmg6CisgICAgICAgIChRR2VzdHVyZUV2ZW50RmFjYWRlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFj
ZS5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAg
ICh0c3RfUVdlYlBhZ2U6OmxvYWRIdG1sNVZpZGVvKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6
bXVsdGlwbGVQYWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKHRzdF9RV2ViUGFn
ZTo6dGhpcmRQYXJ0eUNvb2tpZVBvbGljeSk6CisKKzIwMTItMTEtMjEgIEFsbGFuIFNhbmRmZWxk
IEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgUG9zaXRpb24gaW4g
UVdlYkhpdFRlc3RSZXN1bHQgZG9lcyBub3QgbWF0Y2ggZG9jdW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTA5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQ29ycmVjdCBkb2N1bWVudGF0
aW9uIGFuZCBzaW1wbGlmeSB1c2luZyB0aGUgbmV3IGlubmVyTm9kZUZyYW1lIG1ldGhvZC4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQ
cml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorCisyMDEyLTExLTIxICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIERpc2Ft
YmlndWF0ZSBpbm5lck5vZGVGcmFtZVBvaW50IGFuZCBtYWluRnJhbWVQb2ludAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgxMzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBKdWxpZW4gQ2hhZmZyYWl4LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0
UHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorCisy
MDEyLTExLTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM1Mjk1LgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzUyOTUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgzNAorCisgICAgICAgIFRoaXMgcGF0Y2ggY2F1
c2VzIGFzc2VydGlvbiB0byBzb21lIGxheW91dCB0ZXN0cyBvbiBjaHJvbWl1bQorICAgICAgICAo
UmVxdWVzdGVkIGJ5IGppYW5saSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAoUVdlYkZy
YW1lOjpsb2FkKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0SHRtbCk6CisgICAgICAgIChRV2Vi
RnJhbWU6OnNldENvbnRlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRB
bHRlcm5hdGVIdG1sKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJv
clBhZ2VFeHRlbnNpb24pOgorCisyMDEyLTExLTIwICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFt
QGNocm9taXVtLm9yZz4KKworICAgICAgICBDb25zb2xpZGF0ZSBGcmFtZUxvYWRlcjo6bG9hZCgp
IGludG8gb25lIGZ1bmN0aW9uIHRha2luZyBhIEZyYW1lTG9hZFJlcXVlc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjE1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJGcmFtZTo6UVdlYkZyYW1lKToKKyAgICAgICAgKFFXZWJGcmFtZTo6bG9hZCk6
CisgICAgICAgIChRV2ViRnJhbWU6OnNldEh0bWwpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRD
b250ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QWx0ZXJuYXRlSHRt
bCk6CisgICAgICAgIChxdF9kdW1wX3NldF9hY2NlcHRzX2VkaXRpbmcpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVuc2lvbik6CisKKzIwMTItMTEt
MTggIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbUXRd
IFJlbW92ZSByZW1haW5pbmcgdHJhY2VzIG9mIHN5bWJpYW4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjYzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFJlbW92ZSBzeW1iaWFuIHJl
bGF0ZWQgcGFydCBmcm9tIHRoZSBBUEkgZG9jdW1lbnRhdGlvbi4KKworICAgICAgICAqIEFwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDEy
LTExLTE2ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgorCisgICAgICAg
IEFkZCBEZXZpY2VDb250cm9sbGVyIGJhc2UtY2xhc3MgdG8gcmVtb3ZlIGR1cGxpY2F0aW9uIG9m
IERldmljZVhYWENvbnRyb2xlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgor
CisgICAgICAgIENoYW5nZSBjbGllbnQoKSB0byBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHRv
IGdldCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCouCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKworMjAxMi0xMS0xNCAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gRml4IHRzdF9R
V2ViRnJhbWU6OnNldFVybFdpdGhQZW5kaW5nTG9hZHMoKSBBUEkgdGVzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyMzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgIFVuY29tbWVudCB0aGlzIEFQSSB0
ZXN0LCBiZWNhdXNlIGl0IHdvcmtzIGZpbmUgbm93LgorCisgICAgICAgICogdGVzdHMvcXdlYmZy
YW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZSk6CisgICAgICAg
ICh0c3RfUVdlYkZyYW1lOjpzZXRVcmxXaXRoUGVuZGluZ0xvYWRzKToKKworMjAxMi0xMS0xNCAg
QW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIFFT
dHlsZUZhY2FkZUltcCBzaG91bGQgdXNlIGEgUVBvaW50ZXIgdG8gc3RvcmUgdGhlIGFwcGxpY2F0
aW9uIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDIwODQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBRU3R5bGVGYWNhZGVJbXAgaW1wbGljaXRseSBjcmVhdGVzIGEgZGVmYXVsdCBzdHlsZSBkdXJp
bmcgdGhlIGZpcnN0CisgICAgICAgIGNhbGwgdG8gUUFwcGxpY2F0aW9uOjpzdHlsZSgpIGluIFFT
dHlsZUZhY2FkZUltcDo6c3R5bGUoKSBidXQgdGhpcworICAgICAgICBzdHlsZSBpcyBkZWxldGVk
IHdoZW4gYSBjdXN0b20gc3R5bGUgaXMgc2V0LCB0aHVzIHRoZSBzdG9yZWQgbV9zdHlsZQorICAg
ICAgICByYXcgcG9pbnRlciBpbiBRU3R5bGVGYWNhZGVJbXAgYmVjb21lcyBkYW5nbGluZy4KKyAg
ICAgICAgVXNlIGEgUVBvaW50ZXIgdG8gY2FjaGUgdGhlIHN0eWxlIGluc3RlYWQgb2YgYSByYXcg
cG9pbnRlci4KKworICAgICAgICBUaGlzIGZpeGVzIHRoZSBzdGFydC11cCBjcmFzaCBpbiB0aGUg
YW5vbWFseSBleGFtcGxlLgorICAgICAgICAoaHR0cHM6Ly9idWdyZXBvcnRzLnF0LXByb2plY3Qu
b3JnL2Jyb3dzZS9RVEJVRy0yNzkyNCkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FTdHls
ZUZhY2FkZUltcC5oOgorICAgICAgICAoUVN0eWxlRmFjYWRlSW1wKToKKworMjAxMi0xMS0xMyAg
QW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBpbmxpbmUg
c3R5bGUgbG9naWMgZnJvbSBFbGVtZW50QXR0cmlidXRlRGF0YSB0byBTdHlsZWRFbGVtZW50Lgor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMDIxMjA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAg
ICAgICAoUVdlYkVsZW1lbnQ6OnN0eWxlUHJvcGVydHkpOgorCisyMDEyLTExLTA5ICBKb2NlbHlu
IFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBG
aXggdHN0X1FXZWJQYWdlOjpmaW5kVGV4dAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIERldGFpbHMgb2YgdGhlIGZhaWx1cmU6CisgICAgICAgIEZBSUwh
ICA6IHRzdF9RV2ViUGFnZTo6ZmluZFRleHQoKSBDb21wYXJlZCB2YWx1ZXMgYXJlIG5vdCB0aGUg
c2FtZQorICAgICAgICAgICBBY3R1YWwgICAobV9wYWdlLT5zZWxlY3RlZEh0bWwoKS50cmltbWVk
KCkucmVwbGFjZShyZWdFeHAsICIiKSk6IDxzcGFuPmZvbzwvc3Bhbj4KKyAgICAgICAgICAgRXhw
ZWN0ZWQgKHN1YlN0cmluZyk6IGZvbworICAgICAgICAgICBMb2M6IFsvaG9tZS9qb2NlL2Rldi93
ZWJraXQvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwKDI5
NjQpXQorCisgICAgICAgIFRoZSBmb3JtYXQgcmV0dXJuZWQgYnkgc2VsZWN0ZWRIdG1sIGNoYW5n
ZWQuCisgICAgICAgIE1ha2UgdGhlIHRlc3QgYSBiaXQgbW9yZSByb2J1c3QgYnkganVzdCBjaGVj
a2luZyB0aGF0IHRoZSBIVE1MCisgICAgICAgIGNvbnRhaW5zIG91ciBzZWFyY2ggdmFsdWUuCisK
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjpmaW5kVGV4dCk6CisKKzIwMTItMTEtMDkgIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYlBh
Z2U6OnRlc3RMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZSBpcyBleHBlY3RlZCB0
byB3b3JrIGZvciBmaWxlIFVSTHMuCisgICAgICAgIEknbSBub3Qgc3VyZSB3aHkgaXQgZGlkIHdv
cmsgd2hlbiB0aGlzIHRlc3Qgd2FzIHdyaXR0ZW4sCisgICAgICAgIGJ1dCBJIGJlbGlldmUgdGhh
dCBpdCBoYWQgdGhlIHdyb25nIGV4cGVjdGVkIHZhbHVlLgorCisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKworMjAxMi0xMS0wOCAgSm9jZWx5biBUdXJjb3R0ZSAg
PGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IHRzdF9RT2Jq
ZWN0QnJpZGdlOjpjYWxsUXRJbnZva2FibGUKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBRX0RFQ0xBUkVfTUVUQVRZUEUgbm93IGNhbGxzIHFSZWdpc3Rl
ck1ldGFUeXBlIHNvIGp1c3QgcHJldmVudAorICAgICAgICB0aGUgdmFsdWUgZnJvbSBiZWluZyB3
cmFwcGVkIGJ5IFFWYXJpYW50IHNpbmNlIHRoaXMgY29kZSBzaG91bGRuJ3QKKyAgICAgICAgYmUg
cmVhY2hlZCBhbnl3YXkuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2Jq
ZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKE15UU9iamVjdDo6bXlJbnZva2FibGVXaXRoQnJ1c2hT
dHlsZUFyZyk6CisKKzIwMTItMTEtMDggIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNv
dHRlQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYlBhZ2U6OmlucHV0TWV0
aG9kcworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIERl
dGFpbHMgb2YgdGhlIGZhaWx1cmU6CisgICAgICAgIEZBSUwhICA6IHRzdF9RV2ViUGFnZTo6aW5w
dXRNZXRob2RzKFFXZWJWaWV3KSBDb21wYXJlZCB2YWx1ZXMgYXJlIG5vdCB0aGUgc2FtZQorICAg
ICAgICAgICBBY3R1YWwgKHBhZ2UtPnNldHRpbmdzKCktPmZvbnRGYW1pbHkoUVdlYlNldHRpbmdz
OjpTZXJpZkZvbnQpKTogRm9vU2VyaWZGb250CisgICAgICAgICAgIEV4cGVjdGVkIChmb250LmZh
bWlseSgpKTogSGVsdmV0aWNhCisgICAgICAgICAgIExvYzogW1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcCgxNjkxKV0KKworICAgICAgICBUaGUgaXNzdWUg
d2FzIHRoYXQgV2ViQ29yZSB3b3VsZG4ndCBmaW5kIEZvb1NlcmlmRm9udCBhbmQgd291bGQgaGF2
ZQorICAgICAgICBSZW5kZXJTdHlsZTo6Zm9udCgpIHJldHVybiB0aGUgZmFsbGJhY2sgZm9udCBp
dCB1c2VkIGluc3RlYWQuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMpOgorCisyMDEyLTExLTA5
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAg
ICAgW1F0XSBGaXggdHN0X1FXZWJQYWdlOjpzaG93TW9kYWxEaWFsb2coKSBBUEkgdGVzdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyNDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIHRlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHA6CisKKzIwMTItMTEtMDkgIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIHRzdF9RV2ViRWxlbWVu
dDo6c3R5bGUoKSBmYWlscyBiZWNhdXNlIFFXZWJFbGVtZW50OjpJbmxpbmVTdHlsZSBub3cgd29y
a3MgYXMgZXhwZWN0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYwMzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgVXBkYXRlIHRoZSBleHBlY3RlZCB2YWx1ZSB0byBmb2xsb3cgdGhpcyBjb21tZW50IGlu
IFN0eWxlUHJvcGVydHlTZXQ6OmFkZFBhcnNlZFByb3BlcnR5OgorICAgICAgICAiT25seSBhZGQg
cHJvcGVydGllcyB0aGF0IGhhdmUgbm8gIWltcG9ydGFudCBjb3VudGVycGFydCBwcmVzZW50Igor
CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAg
ICAgKHRzdF9RV2ViRWxlbWVudDo6c3R5bGUpOgorCisyMDEyLTExLTA5ICBKb2NlbHluIFR1cmNv
dHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSB0c3RfUVdl
YkVsZW1lbnQ6OnN0eWxlKCkgZmFpbHMgYmVjYXVzZSBRV2ViRWxlbWVudDo6Q2FzY2FkZWRTdHls
ZSBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1MjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0Zv
ckVsZW1lbnQgbm93IHRha2VzIGZsYWdzIGFzIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgYm9vbCB0
byBzcGVjaWZ5CisgICAgICAgIHRoYXQgd2Ugd2FudCB0byBleGNsdWRlIFVJIGFuZCB1c2VyIHN0
eWxlIHNoZWV0cy4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChR
V2ViRWxlbWVudDo6c3R5bGVQcm9wZXJ0eSk6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQv
dHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6c3R5bGUpOgor
CisyMDEyLTExLTA5ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBBcHBlbmRpbmcgIiFpbXBvcnRhbnQiIHRvIHRoZSBwcm9wZXJ0
eSB2YWx1ZSBvZiBRV2ViRWxlbWVudDo6c2V0U3R5bGVQcm9wZXJ0eSBpc24ndCB3b3JraW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE3NjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAg
ICBJbiB0aGUgcGFzdFdlYkNvcmUgaGF2ZSBiZWVuIGNvbnNpZGVyaW5nIHRoZSBpbXBvcnRhbnQg
dG9rZW4gb2YgYSBDU1MKKyAgICAgICAgcHJvcGVydHkgdmFsdWUgaWYgaXQgd2FzIGZvbGxvd2Vk
IGJ5ICFpbXBvcnRhbnQgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgaW1wb3J0YW50IHBhcmFtZXRl
ciBvZiBzZXRJbmxpbmVTdHlsZVByb3BlcnR5LCBidXQgbm90IGFueW1vcmUuCisKKyAgICAgICAg
U2luY2Ugd2UgbmVlZCB0byBrZWVwIHRoZSBiZWhhdmlvciBjb21wYXRpYmxlLCBkbyB0aGUgcGFy
c2luZyBvZiB0aGUKKyAgICAgICAgdmFsdWUgYW5kIGV4dHJhY3QgdGhlIHRva2VuIGlmIHByZXNl
bnQuIElkZWFsbHkgdGhpcyB3b3VsZCBiZSBwYXNzZWQKKyAgICAgICAgYXMgYSBwYXJhbWV0ZXIg
dG8gdGhlIGZ1bmN0aW9uIGJ1dCBJIHRoaW5rIGl0J3Mgbm90IHdvcnRoIGRlcHJlY2F0aW5nCisg
ICAgICAgIHRoZSBvbGQgbWVjaGFuaXNtLgorICAgICAgICBUaGUgcGFyc2luZyBpcyBwcmV0dHkg
ZHVtYiwgc28gdGhpcyB3aWxsIGJyZWFrIGFwcGxpY2F0aW9ucyB0aGF0CisgICAgICAgIHBhc3Nl
ZCBhIHZhbHVlIHdpdGggc3BhY2VzIGJldHdlZW4gdGhlICIhIiBhbmQgImltcG9ydGFudCIuCisK
KyAgICAgICAgVGhpcyBmaXhlcyBwYXJ0IG9mIHRzdF9RV2ViRWxlbWVudDo6c3R5bGUKKworICAg
ICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c2V0U3R5
bGVQcm9wZXJ0eSk6CisKKzIwMTItMTEtMDkgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1
cmNvdHRlQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBVUkwgaXNzdWVzIGluIHRzdF9x
d2ViZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTc0MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
ICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoRmFrZVJlcGx5
OjpGYWtlUmVwbHkpOgorICAgICAgICBQcm9wZXJseSBmb3J3YXJkIHRoZSByZXF1ZXN0IFVSTCB0
byBvdXIgY3VzdG9tIHJlcGx5LgorICAgICAgICBUaGlzIHdvdWxkIGNhdXNlIHJlZGlyZWN0aW9u
cyBub3QgdG8gb2NjdXIuIFRoZSByZXF1ZXN0ZWRVcmwgYW5kIHNldFVybFNhbWVVcmwgdGVzdHMK
KyAgICAgICAgd291bGQgZmFpbCBiZWNhdXNlIG9mIHRoaXMuCisKKyAgICAgICAgKHRzdF9RV2Vi
RnJhbWU6OnNldFVybFRvSW52YWxpZCk6CisgICAgICAgIC0gaHR0cDovZXhhbXBsZS5jb20gaXMg
YSB2YWxpZCBVUkwsIGJ1dCBub3QgYSB2YWxpZCBIVFRQIFVSTCwgc28gcmVtb3ZlIHRoaXMgY2hl
Y2suCisgICAgICAgIC0gUUNPTVBBUkUgdXNlcyB0ZXN0bGliJ3MgdG9TdHJpbmcgb24gdGhlIFFV
cmxzIHRvIGNvbXBhcmUgdGhlbSBhbmQgaXQgbm93CisgICAgICAgIGFsc28gb3V0cHV0IHRoZSBl
cnJvciBkZXNjcmlwdGlvbi4gU2luY2Ugd2Ugd2FudCB0byBjb21wYXJlIHRoZSByZXN1bHRpbmcK
KyAgICAgICAgVVJMIGluc3RlYWQsIGNvbXBhcmUgdGhlaXIgdG9FbmNvZGVkKCkgdmFsdWUuCisK
KzIwMTItMTEtMDggIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNv
bT4KKworICAgICAgICBbUXRdIEZpeCBhIGNyYXNoIGluIHRzdF9RV2ViSW5zcGVjdG9yOjphdHRh
Y2hBbmREZXN0cm95CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDE1NzUKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBJdCBjYW4gbm93IGhhcHBlbiB0aGF0IGRlc3Ryb3lJbnNwZWN0b3JWaWV3IGlzIGNhbGxl
ZCB3aGVuIHRoZSBQYWdlCisgICAgICAgIGlzIGRlc3Ryb3llZC4gVGhpcyB3b3VsZCBjYWxsIGdl
dE9yQ3JlYXRlSW5zcGVjdG9yIGFuZCByZS1jcmVhdGUgYQorICAgICAgICBRV2ViSW5zcGVjdG9y
LgorCisgICAgICAgIFNpbmNlIHRoZSBuZXcgaW5zdGFuY2UgaXMgY3JlYXRlZCBhZnRlciBvdXIg
c2V0SW5zcGVjdG9yKDApIGNsZWFudXAKKyAgICAgICAgaW4gflFXZWJQYWdlUHJpdmF0ZSwgdGhp
cyBydW5zIGludG8gdGhlIHNhbWUgY3Jhc2ggdGhhdCB0aGlzIGxpbmUgd2FzCisgICAgICAgIHBy
b3RlY3RpbmcgdXMgYWdhaW5zdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
UXQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KToKKworMjAxMi0xMS0wOCAgSm9jZWx5biBUdXJjb3R0
ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IHRzdF9R
V2ViUGFnZTo6aW5wdXRNZXRob2RzIG9uIFF0NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
SGF1c21hbm4uCisKKyAgICAgICAgUUV2ZW50OjpSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsIGlz
bid0IHBhc3NlZCB0aHJvdWdoIGV2ZW50IGZpbHRlcnMgYW55bW9yZS4KKyAgICAgICAgVXNlIFFJ
bnB1dE1ldGhvZFByaXZhdGU6OnRlc3RDb250ZXh0IGluc3RlYWQgdG8gY2FwdHVyZSBpbnB1dCBt
ZXRob2QgZXZlbnRzLAorICAgICAgICB0aGUgc2FtZSB3YXkgYXMgcXRiYXNlIHRlc3RzIGxpa2Ug
dHN0X1FUZXh0RWRpdCBhcmUgZG9pbmcuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoVGVzdElucHV0Q29udGV4dDo6VGVzdElucHV0Q29udGV4
dCk6CisgICAgICAgIChUZXN0SW5wdXRDb250ZXh0Ojp+VGVzdElucHV0Q29udGV4dCk6CisgICAg
ICAgIChUZXN0SW5wdXRDb250ZXh0KToKKyAgICAgICAgKFRlc3RJbnB1dENvbnRleHQ6OnNob3dJ
bnB1dFBhbmVsKToKKyAgICAgICAgKFRlc3RJbnB1dENvbnRleHQ6OmhpZGVJbnB1dFBhbmVsKToK
KyAgICAgICAgKFRlc3RJbnB1dENvbnRleHQ6OmlzSW5wdXRQYW5lbFZpc2libGUpOgorICAgICAg
ICAodHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMpOgorCisyMDEyLTExLTA5ICBKb2NlbHluIFR1
cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBVbm1h
cmsgbm93IHBhc3NpbmcgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY1NTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29u
w6FjLgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKHRzdF9RV2ViUGFnZTo6dmlld01vZGVzKToKKworMjAxMi0xMS0wNyAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEFQSSB0
ZXN0IHRzdF9xd2ViaW5zcGVjdG9yIGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIERlbGV0ZSB0aGUgaW50ZXJuYWwgaW5zcGVjdG9yIGZyb20g
UVdlYlBhZ2UgZGVzdHJ1Y3RvciwgaW5zdGVhZCBvZiBjYXVzaW5nIHJlY3Vyc2lvbnMKKyAgICAg
ICAgYmV0d2VlbiBRV2ViUGFnZVByaXZhdGU6OnNldEluc3BlY3RvciBhbmQgUVdlYkluc3BlY3Rv
cjo6c2V0UGFnZS4KKworICAgICAgICBBbHNvIHNlcGFyYXRlIHRoZSB0aHJlZSB0ZXN0cyBpbiB0
c3RfUVdlYkluc3BlY3RvciB0byBiZXR0ZXIgdGVsbCB3aGljaCBvbmUgaXMgZmFpbGluZy4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6On5R
V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpzZXRJbnNwZWN0b3Ip
OgorICAgICAgICAqIHRlc3RzL3F3ZWJpbnNwZWN0b3IvdHN0X3F3ZWJpbnNwZWN0b3IuY3BwOgor
ICAgICAgICAodHN0X1FXZWJJbnNwZWN0b3IpOgorICAgICAgICAodHN0X1FXZWJJbnNwZWN0b3I6
OmF0dGFjaEFuZERlc3Ryb3lQYWdlRmlyc3QpOgorICAgICAgICAodHN0X1FXZWJJbnNwZWN0b3I6
OmF0dGFjaEFuZERlc3Ryb3lJbnNwZWN0b3JGaXJzdCk6CisgICAgICAgICh0c3RfUVdlYkluc3Bl
Y3Rvcjo6YXR0YWNoQW5kRGVzdHJveUludGVybmFsSW5zcGVjdG9yKToKKworMjAxMi0xMS0wOCAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAg
ICBbUXRdIE9wZW4gbGluayBpbiB0aGlzIHdpbmRvdyBhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTIyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6IEZp
eCBhZnRlciByMTMzNzYzLCBtb3ZlIHRoZSBpbml0aWFsaXphdGlvbiBvZiBPcGVuTGlua0luVGhp
c1dpbmRvdyB0byB0aGUgcHJvcGVyIHBsYWNlLgorCisyMDEyLTExLTA3ICBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gT3BlbiBs
aW5rIGluIHRoaXMgd2luZG93IGFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCisKKyAgICAgICAgQWRkcyB0aGUgYWN0aW9uIHRvIFF0V2ViS2l0LgorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHdlYkFjdGlvbkZvckNvbnRleHRNZW51QWN0
aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgKFFXZWJQ
YWdlOjphY3Rpb24pOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorCisyMDEyLTExLTAxICBT
dGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzMxNDMuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzEzMzE0MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY4OTQKKworICAgICAgICBDYXVzaW5nIGNvbnRlbnRfYnJvd3NlcnRlc3Rz
IGZhaWx1cmVzCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKToKKworMjAxMi0xMS0wMSAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBz
YW1zdW5nLmNvbT4KKworICAgICAgICBBZGQgRGV2aWNlQ29udHJvbGxlciBiYXNlLWNsYXNzIHRv
IHJlbW92ZSBkdXBsaWNhdGlvbiBvZiBEZXZpY2VYWFhDb250cm9sZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICBDaGFuZ2UgY2xpZW50KCkgdG8gZGV2aWNl
T3JpZW50YXRpb25DbGllbnQoKSB0byBnZXQgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6
CisKKzIwMTItMTAtMzEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzMwMTYuCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzMzAxNgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODU2CisKKyAgICAgICAgYnJva2UgY29t
cGlsZS13ZWJraXQgb24gc2V2ZXJhbCBib3RzIChSZXF1ZXN0ZWQgYnkgcG9kaXZpbG92CisgICAg
ICAgIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbik6CisKKzIwMTItMTAtMzEgIEtpaG9uZyBLd29uICA8a2lob25n
Lmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRkIERldmljZUNvbnRyb2xsZXIgYmFzZS1j
bGFzcyB0byByZW1vdmUgZHVwbGljYXRpb24gb2YgRGV2aWNlWFhYQ29udHJvbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Njg5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCisKKyAgICAgICAgQ2hhbmdlIGNsaWVudCgpIHRv
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgdG8gZ2V0IERldmljZU9yaWVudGF0aW9uQ2xpZW50
Ki4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrRGV2aWNlT3JpZW50
YXRpb24pOgorCisyMDEyLTEwLTMwICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRu
eWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFtRVF1bRFJUXSBSZW1vdmUgdW5uZWVkZWQgdGVz
dFJ1bm5lci5zZXRNZWRpYVR5cGUoKSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lZWRl
ZCB0ZXN0UnVubmVyLnNldE1lZGlhVHlwZSgpIGltcGxlbWVudGF0aW9uLCBhcyB0ZXN0cyB1c2UK
KyAgICAgICAgY3Jvc3MtcGxhdGZvcm0gd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNZWRp
YVR5cGVPdmVycmlkZSBpbnN0ZWFkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTItMTAtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBsb2FkZXIgY3VzdG9taXph
dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MDI3OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlTG9hZGVyU3RyYXRlZ3kpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNRdCk6CisKKzIwMTItMTAtMjMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9yIHNoYXJlZCB3b3JrZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2ll
c1F0OjpjcmVhdGVTaGFyZWRXb3JrZXJTdHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaDoKKworMjAxMi0xMC0yNCAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEV4cG9z
ZSB1c2VmdWwgV2ViQ29yZTo6U2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDIzOQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEV4cG9zZSB0aGUgdHdvIHNldHRpbmdzIENh
cmV0QnJvd3NpbmdFbmFibGVkIGFuZCBOb3RpZmljYXRpb25zRW5hYmxlZC4KKworICAgICAgICAq
IEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBw
bHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMi0xMC0yMyAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJl
Y3NpQGRpZ2lhLmNvbT4KKworICAgICAgICBSZW1vdmUgZGV2aWNlUGl4ZWxSYXRpbyBmcm9tIFZp
ZXdwb3J0QXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTk4NDUKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAg
ICAgIFBhc3MgdGhlIGRldmljZSBwaXhlbCByYXRpbyBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50IHRv
CisgICAgICAgIG1hdGNoIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQpOgorCisyMDEyLTEwLTIz
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KKworICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeCB3aXRoIG5ld2VyIFF0IDUuCisKKyAgICAgICAgUVBsYXN0aXF1
ZVN0eWxlIGhhcyBiZWVuIHJlbW92ZWQsIGJ1dCBhcyBwb2ludGVkIG91dCBieSBKZW5zIGl0J3Mg
YWxzbyBub3QKKyAgICAgICAgbWFpbnRhaW5lZCBhbnltb3JlIGFuZCBoZW5jZSBzYWZlIHRvIHJl
bW92ZS4gV2UgY2FuIGRvIHR3ZWFrcyB3aXRoIHRoZSBuZXcKKyAgICAgICAgZnVzaW9uIHN0eWxl
IGlmIHJlcXVpcmVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVN0eWxlRmFjYWRlSW1w
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwYWludElubmVyU3BpbkJ1
dHRvbik6CisKKzIwMTItMTAtMjIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGln
aWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGhvdXQgUXRXaWRnZXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTk4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgUmVtb3ZlIGRlcGVu
ZGVuY3kgdG8gUXRXaWRnZXRzIHRoYXQgaXMgbm90IG5lZWRlZCBoZXJlIGFueW1vcmUgc2luY2UK
KyAgICAgICAgdGhlIHJlbW92YWwgb2YgdGhlIFF0UXVpY2sxIGNvZGUuCisKKyAgICAgICAgKiBk
ZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvZXhwZXJpbWVudGFsLnByaToKKyAgICAgICAgKiBkZWNs
YXJhdGl2ZS9wdWJsaWMucHJpOgorCisyMDEyLTEwLTIyICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBGaXggIkFTU0VSVElPTiBG
QUlMRUQ6ICFkb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSIgd2hlbiBsb2FkaW5nIGEgcGFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6
IFVzZSBGcmFtZVZpZXc6OmZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0CisgICAgICAgIGluc3RlYWQg
b2YgRnJhbWVWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QgYXMgdGhlIHNvdXJjZSB0byBhbHdheXMg
a2VlcCB0aGUgY29ycmVjdCBzdGF0ZS4KKworMjAxMi0xMC0yMiAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEJhc2ljIGdlc3R1
cmUgZXZlbnQgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgSW1wbGVtZW50IGJhc2ljIGhhbmRsaW5nIG9mIFFHZXN0dXJlRXZlbnQgY29udmVy
dGluZyBhbmQgZm9yd2FyZGluZworICAgICAgICBUYXAgYW5kIFRhcEFuZEhvbGQgZ2VzdHVyZXMg
dG8gV2ViQ29yZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6Omdlc3R1cmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6ZXZlbnQpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXRQbGF0Zm9ybUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6V2ViS2l0UGxhdGZvcm1HZXN0dXJlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udmVydEdlc3R1cmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkV2ZW50Q29udmVyc2lvbi5oOgorCisyMDEyLTEwLTE3ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9y
LmFybmUudmVzdGJvQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIE1vZHVsYXJpemUgZG9jdW1l
bnRhdGlvbiBmb3IgUXRXZWJLaXQKKworICAgICAgICBSdW5uaW5nICdtYWtlIGRvY3MnIHdvdWxk
IGZhaWwgdW5sZXNzICdtYWtlIHFtYWtlX2FsbCcgd2FzIHJhbiBmaXJzdCwKKyAgICAgICAgYnV0
IHFtYWtlX2FsbCBpbnZvbHZlZCBnZW5lcmF0aW5nIGFsbCB0aGUgZGVyaXZlZCBzb3VyY2VzLCB3
aGljaCBzZWVtcworICAgICAgICBvdmVybHkgY29tcGxleCBqdXN0IGZvciBidWlsZGluZyBkb2N1
bWVudGF0aW9uLgorCisgICAgICAgIFdlIHNvbHZlIHRoaXMgYnkgcHJldmVudGluZyBhbGwgc3Vi
ZGlycyBleGNlcHQgUXRXZWJLaXQgZnJvbSBoYXZpbmcgYQorICAgICAgICBkb2NzIHRhcmdldC4g
VGhpcyB3b3VsZCBub3JtYWxseSB3b3JrIGZpbmUgb24gaXRzIG93biwgYnV0IHNpbmNlIHdlCisg
ICAgICAgIHVzZSBDT05GSUcgKz0gb3JkZXJlZCwgdGhlcmUncyBub3cgYSBtaXNzaW5nIGRvYyB0
YXJnZXQgZm9yIHRoZQorICAgICAgICBpbW1lZGlhdGUgZGVwZW5kZW5jeSBvZiB0aGUgUXRXZWJL
aXQgc3ViZGlyLiBXZSBzb2x2ZSB0aGlzIGJ5IGFkZGluZworICAgICAgICBhIGR1bW15LXRhcmdl
dCBvdXJzZWx2ZXMuCisKKyAgICAgICAgRmluYWxseSwgd2UgY2xlYW4gdXAgdGhlIHFkb2Njb25m
IGZpbGUgdG8gbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlIFF0CisgICAgICAgIGRvY3VtZW50YXRpb24g
bW9kdWxhcml6YXRpb24gZWZmb3J0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICAqIGRvY3MvZG9jcy5wcmk6IFJlbW92ZWQuCisgICAgICAgICogZG9j
cy9xdHdlYmtpdC5xZG9jY29uZjogUmVtb3ZlZC4KKworMjAxMi0xMC0xNSAgU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBTZXBhcmF0ZSBR
dCBXZWJLaXQgaW50byBRdCBXZWJLaXQgYW5kIFF0IFdlYktpdCBXaWRnZXRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODE2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFJlbmFtZSB0
aGUgUXRXZWJLaXQgbW9kdWxlIHRvIFF0V2ViS2l0V2lkZ2V0cy4KKworICAgICAgICAqIGRlY2xh
cmF0aXZlL2V4cGVyaW1lbnRhbC9leHBlcmltZW50YWwucHJpOgorICAgICAgICAqIGRlY2xhcmF0
aXZlL3B1YmxpYy5wcmk6CisgICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy9zaW1wbGUvc2lt
cGxlLnBybzoKKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3dlYnBhZ2Uvd2VicGFnZS5w
cm86CisgICAgICAgICogdGVzdHMvdGVzdHMucHJpOgorCisyMDEyLTEwLTEwICBKb24gTGVlICA8
am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBBY3RpdmF0ZSBwbHVnaW5zIHdoZW4g
dXNlciBjbGlja3Mgb24gc25hcHNob3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4MzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjQyNjY4MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpyZWNyZWF0ZVBsdWdpbik6IFN0dWIgaW1wbGVtZW50YXRpb24gb2YgcmVj
cmVhdGVQbHVnaW4oKS4KKworMjAxMi0xMC0xMCAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBUZXN0IGRyaXZlcnMgc2hvdWxkIGhhbmRsZSByZXBh
aW50IHJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFpvbHRhbiBIZXJjemVnLgorCisgICAgICAg
IEFkZGVkIGhlbHBlcnMgdG8gZW5hYmxlIGFuZCBnZXQgdGhlIHJlcGFpbnQgcmVjdHMuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VHJhY2tSZXBhaW50UmVjdHMpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRyYWNrUmVwYWludFJlY3RzKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnZXRUcmFja2VkUmVwYWludFJlY3RzKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEy
LTEwLTA4ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KKworICAg
ICAgICBbUXRdIE1ha2UgUmVuZGVyVGhlbWVRU3R5bGUvU2Nyb2xsYmFyVGhlbWVRU3R5bGUgY29t
cGlsZSB3aXRob3V0IFFTdHlsZS9RdFdpZGdldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBFeHRyYWN0ZWQgUVN0eWxlL1FXaWRnZXQgcmVsYXRlZCBj
b2RlIGludG8gYSBRV2ViU3R5bGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBRU3R5bGVGYWNh
ZGUgaW50ZXJmYWNlLgorCisgICAgICAgIFFTdHlsZUZhY2FkZSBpcyBhIHB1cmUgaW50ZXJmYWNl
IHRoYXQgbGl2ZXMgaW4gV2ViQ29yZS9wbGF0Zm9ybS9xdAorICAgICAgICAobmV4dCB0byBSZW5k
ZXJUaGVtZVFTdHlsZSBhbmQgU2Nyb2xsYmFyVGhlbWVRU3R5bGUpIGFuZCBwcm92aWRlcyBhCisg
ICAgICAgIG1pbmltYWwgaW50ZXJmYWNlIG9mIHdoYXQgd2UgbmVlZCB0byBkcmF3IHdpdGggUVN0
eWxlIGFzIHdlbGwgYXMgYmFzaWMKKyAgICAgICAgaGl0IHRlc3RpbmcgYW5kIG1ldHJpYyByZXRy
aWV2YWwuIEl0IGFsc28gcHJvdmlkZXMgYQorICAgICAgICBRU3R5bGVGYWNhZGVPcHRpb24gY2xh
c3MgdGhhdCBhZ2dyZWdhdGVzIGNvbW1vbiBtZXRhLWRhdGEgZm9yCisgICAgICAgIHJlbmRlcmlu
ZyBwcmltaXRpdmVzLCBzdWNoIGFzIGRpcmVjdGlvbiwgcmVjdGFuZ2xlLCBzdGF0ZSAoc3Vua2Vu
LAorICAgICAgICBlbmFibGVkLCBldGMuKSBvciBwYWxldHRlLiBJdCBhbHNvIHByb3ZpZGVzIHNv
bWUgbW9yZSBzbGlkZXIvc2Nyb2xsYmFyCisgICAgICAgIHNwZWNpZmljIGZpZWxkcyBpbiBhIHNs
aWRlciBzdWItc3RydWN0dXJlLgorCisgICAgICAgIFJlbmRlclRoZW1lUVN0eWxlL1Njcm9sbGJh
clRoZW1lUVN0eWxlIHVzZWQgdG8gaW5zdGFudGlhdGUgc3BlY2lmaWMgUVN0eWxlT3B0aW9uIHN1
Yi1jbGFzc2VzIGFuZCBwb3B1bGF0ZQorICAgICAgICB0aGVtIHdpdGggc3RhdGUgaW5mb3JtYXRp
b24gZnJvbSByZW5kZXIgb2JqZWN0cywgYmVmb3JlIGNhbGxpbmcgc3RyYWlnaHQgdG8gUVN0eWxl
LiBNb3N0IG9mIHRoZSBjb21tb24gY29kZQorICAgICAgICB3YXMgZW5jYXBzdWxhdGVkIGluIFN0
eWxlUGFpbnRlclFTdHlsZS4KKworICAgICAgICBUaGUgbmV3IFJlbmRlclRoZW1lUVN0eWxlL1Nj
cm9sbGxiYXJUaGVtZVFTdHlsZSB1c2VzIGNvbW1vbiBjb2RlIGluCisgICAgICAgIFN0eWxlUGFp
bnRlclFTdHlsZSB0byBwb3B1bGF0ZSBzdGF0ZSBpbnRvIFFTdHlsZUZhY2FkZU9wdGlvbiBiZWZv
cmUKKyAgICAgICAgY2FsbGluZyBpbnRvIFFTdHlsZUZhY2FkZS4KKworICAgICAgICBUaGUgc3R5
bGUgZmFjYWRlIGlzIHRoZW4gaW1wbGVtZW50ZWQgYnkgUVN0eWxlRmFjYWRlSW1wLCB3aGljaCBl
eHRyYWN0cworICAgICAgICBtZXRhLWRhdGEgZnJvbSBRU3R5bGVGYWNhZGVPcHRpb24gYXJndW1l
bnRzLCBwb3B1bGF0ZXMgc3R5bGUKKyAgICAgICAgcHJpbWl0aXZlIHNwZWNpZmljIFFTdHlsZU9w
dGlvbiBvYmplY3RzIGFuZCB0aGVuIGNhbGxzIG9uIFFTdHlsZS4KKworICAgICAgICBSZW5kZXJU
aGVtZVFTdHlsZS9TY3JvbGxiYXJUaGVtZVFTdHlsZSBjYW4gb25seSB1c2UgaW50ZXJmYWNlIG1l
dGhvZHMKKyAgICAgICAgZnJvbSBRU3R5bGVGYWNhZGUuIFFTdHlsZUZhY2FkZUltcCBvbiB0aGUg
b3RoZXIgaGFuZCB3aWxsIGxpdmUgaW4gdGhlCisgICAgICAgIHNlcGFyYXRlIFF0V2ViS2l0V2lk
Z2V0cyBsaWJyYXJ5IGluIHRoZSBmdXR1cmUgYW5kIHRoZXJlZm9yZSBjYW5ub3QgdXNlCisgICAg
ICAgIGFueSBXZWJDb3JlIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdl
YkNvcmVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RU3R5bGVGYWNhZGVJbXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1FTdHlsZVN0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydFRvUVN0eWxlU3ViQ29udHJvbCk6CisgICAgICAgIChXZWJL
aXQ6OmluaXRHZW5lcmljU3R5bGVPcHRpb24pOgorICAgICAgICAoV2ViS2l0Ojppbml0U3BlY2lm
aWNTdHlsZU9wdGlvbik6CisgICAgICAgIChNYXBwZWRTdHlsZU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok1hcHBlZFN0eWxlT3B0aW9uOjpNYXBwZWRTdHlsZU9wdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OmNvbnZlcnRQaXhlbE1ldHJpYyk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1FT
dHlsZUZhY2FkZVN1YkNvbnRyb2wpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6
OlFTdHlsZUZhY2FkZUltcCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6flFT
dHlsZUZhY2FkZUltcCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6YnV0dG9u
U3ViRWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OmZpbmRG
cmFtZUxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6c2ltcGxl
UGl4ZWxNZXRyaWMpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OmJ1dHRvbk1h
cmdpbik6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6c2xpZGVyTGVuZ3RoKToK
KyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpzbGlkZXJUaGlja25lc3MpOgorICAg
ICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnByb2dyZXNzQmFyQ2h1bmtXaWR0aCk6Cisg
ICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6Z2V0QnV0dG9uTWV0cmljcyk6CisgICAg
ICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6c2l6ZUZyb21Db250ZW50cyk6CisgICAgICAg
IChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViS2l0
OjpRU3R5bGVGYWNhZGVJbXA6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYktpdDo6UVN0
eWxlRmFjYWRlSW1wOjpwYWludENvbWJvQm94KToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFj
YWRlSW1wOjpwYWludENvbWJvQm94QXJyb3cpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNh
ZGVJbXA6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJ
bXA6OnBhaW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6
OnBhaW50SW5uZXJTcGluQnV0dG9uKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1w
OjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpz
Y3JvbGxCYXJFeHRlbnQpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnNjcm9s
bEJhck1pZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvblN0eWxlSGludCk6CisgICAgICAgIChXZWJL
aXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViS2l0
OjpRU3R5bGVGYWNhZGVJbXA6OmhpdFRlc3RTY3JvbGxCYXIpOgorICAgICAgICAoV2ViS2l0OjpR
U3R5bGVGYWNhZGVJbXA6OnNjcm9sbEJhclN1YkNvbnRyb2xSZWN0KToKKyAgICAgICAgKFdlYktp
dDo6UVN0eWxlRmFjYWRlSW1wOjpwYWludFNjcm9sbEJhcik6CisgICAgICAgIChXZWJLaXQ6OlFT
dHlsZUZhY2FkZUltcDo6d2lkZ2V0Rm9yUGFpbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlFTdHls
ZUZhY2FkZUltcDo6c3R5bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FTdHlsZUZhY2Fk
ZUltcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFFTdHlsZUZhY2FkZUltcCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUlt
cDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjppc1ZhbGlkKToK
KworMjAxMi0xMC0wOCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbUXRdIHIxMjI3MjAgY2F1c2VzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBEaXJl
Y3RGQiBvbiBBUk12NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTc1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBKb2NlbHluIFR1cmNvdHRlLgorCisg
ICAgICAgIFJldmVydCB0aGUgcmVzdCBvZiByMTIyNzIwLiBUaGlzIGNoYW5nZSBtb2RpZmllcyB0
aGUgTmF0aXZlSW1hZ2VQdHIgZnJvbSBRSW1hZ2UqIHRvIFFQaXhtYXAqLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2
YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAoUVdlYkhpc3Rv
cnlJdGVtOjppY29uKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6aWNvbkZvclVybCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldFdl
YkdyYXBoaWMpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjp3ZWJHcmFwaGljKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NsaWVudFF0OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luaXRXZWJD
b3JlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCk6CisKKzIw
MTItMTAtMDcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFA
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRvIGtleS92YWx1
ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODI3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChleHRyYWN0Q29udGVudFR5
cGVGcm9tUGx1Z2luVmVjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcDoKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKToKKworMjAxMi0xMC0wNSAgU2ltb24gSGF1c21hbm4g
IDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEzMDQ5NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTMwNDk1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODI2OAorCisgICAgICAgIE1hZGUgV0syIHRlc3RzIGNyYXNoLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXpl
V2ViQ29yZVF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RU3R5bGVGYWNhZGVJbXAuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FTdHlsZUZhY2FkZUltcC5oOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUVN0eWxl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdFN0eWxlT3B0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpnZXRTdHlsZVBhaW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQYWludGVyUVN0eWxlOjpTdHlsZVBhaW50ZXJR
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQYWludGVyUVN0eWxlOjppbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OlJlbmRlclRoZW1lUVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjp+UmVuZGVyVGhlbWVRU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmZhbGxiYWNrU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnNldFBhbGV0dGVGcm9tUGFnZUNsaWVudElmRXhpc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpxU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmZpbmRGcmFtZUxpbmVXaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6aW5mbGF0ZUJ1dHRvblJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmNvbXB1dGVTaXplQmFzZWRPblN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RCdXR0b25TdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6c2V0QnV0dG9uUGFkZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50VGV4dEZpZWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpwYWludFRleHRBcmVhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpzZXRQb3B1cFBhZGRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmNvbG9yUGFsZXR0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRNZW51TGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRNZW51TGlzdEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YW5pbWF0aW9uRHVyYXRpb25G
b3JQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFp
bnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFp
bnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRq
dXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHls
ZTo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHls
ZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRJbm5lclNwaW5CdXR0b24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmluaXRpYWxpemVDb21tb25RU3R5bGVPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUaHVtYlNpemUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHlsZS5oLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJUaGVtZVFTdHlsZSk6CisgICAgICAgIChT
dHlsZVBhaW50ZXJRU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQYWludGVyUVN0eWxl
Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGFpbnRlclFTdHlsZTo6ZHJhd1By
aW1pdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBhaW50ZXJRU3R5bGU6OmRyYXdDb250
cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGFpbnRlclFTdHlsZTo6ZHJhd0NvbXBsZXhD
b250cm9sKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TY3JvbGxiYXJUaGVtZVFTdHlsZS5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVt
ZVFTdHlsZS5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lUVN0eWxlOjp+U2Nyb2xsYmFyVGhlbWVRU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2NQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6c3R5bGVPcHRpb25TbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVRU3R5bGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUVN0
eWxlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUVN0eWxlOjpz
aG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUVN0
eWxlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVFT
dHlsZTo6c2Nyb2xsYmFyVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lUVN0eWxlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lUVN0eWxlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVFTdHlsZTo6dHJhY2tQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVFTdHlsZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVR
U3R5bGU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lUVN0eWxlOjpzdHlsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvU2Nyb2xsYmFyVGhl
bWVRU3R5bGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9s
bGJhclRoZW1lUVN0eWxlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcm9sbGJh
clRoZW1lUVN0eWxlKToKKworMjAxMi0xMC0wNSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0XSBNYWtlIFJlbmRlclRoZW1lUVN0eWxlL1Nj
cm9sbGJhclRoZW1lUVN0eWxlIGNvbXBpbGUgd2l0aG91dCBRU3R5bGUvUXRXaWRnZXRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgRXh0cmFjdGVkIFFT
dHlsZS9RV2lkZ2V0IHJlbGF0ZWQgY29kZSBpbnRvIGEgUVdlYlN0eWxlIGNsYXNzIHRoYXQgaW1w
bGVtZW50cyB0aGUgUVN0eWxlRmFjYWRlIGludGVyZmFjZS4KKworICAgICAgICBRU3R5bGVGYWNh
ZGUgaXMgYSBwdXJlIGludGVyZmFjZSB0aGF0IGxpdmVzIGluIFdlYkNvcmUvcGxhdGZvcm0vcXQK
KyAgICAgICAgKG5leHQgdG8gUmVuZGVyVGhlbWVRU3R5bGUgYW5kIFNjcm9sbGJhclRoZW1lUVN0
eWxlKSBhbmQgcHJvdmlkZXMgYQorICAgICAgICBtaW5pbWFsIGludGVyZmFjZSBvZiB3aGF0IHdl
IG5lZWQgdG8gZHJhdyB3aXRoIFFTdHlsZSBhcyB3ZWxsIGFzIGJhc2ljCisgICAgICAgIGhpdCB0
ZXN0aW5nIGFuZCBtZXRyaWMgcmV0cmlldmFsLiBJdCBhbHNvIHByb3ZpZGVzIGEKKyAgICAgICAg
UVN0eWxlRmFjYWRlT3B0aW9uIGNsYXNzIHRoYXQgYWdncmVnYXRlcyBjb21tb24gbWV0YS1kYXRh
IGZvcgorICAgICAgICByZW5kZXJpbmcgcHJpbWl0aXZlcywgc3VjaCBhcyBkaXJlY3Rpb24sIHJl
Y3RhbmdsZSwgc3RhdGUgKHN1bmtlbiwKKyAgICAgICAgZW5hYmxlZCwgZXRjLikgb3IgcGFsZXR0
ZS4gSXQgYWxzbyBwcm92aWRlcyBzb21lIG1vcmUgc2xpZGVyL3Njcm9sbGJhcgorICAgICAgICBz
cGVjaWZpYyBmaWVsZHMgaW4gYSBzbGlkZXIgc3ViLXN0cnVjdHVyZS4KKworICAgICAgICBSZW5k
ZXJUaGVtZVFTdHlsZS9TY3JvbGxiYXJUaGVtZVFTdHlsZSB1c2VkIHRvIGluc3RhbnRpYXRlIHNw
ZWNpZmljIFFTdHlsZU9wdGlvbiBzdWItY2xhc3NlcyBhbmQgcG9wdWxhdGUKKyAgICAgICAgdGhl
bSB3aXRoIHN0YXRlIGluZm9ybWF0aW9uIGZyb20gcmVuZGVyIG9iamVjdHMsIGJlZm9yZSBjYWxs
aW5nIHN0cmFpZ2h0IHRvIFFTdHlsZS4gTW9zdCBvZiB0aGUgY29tbW9uIGNvZGUKKyAgICAgICAg
d2FzIGVuY2Fwc3VsYXRlZCBpbiBTdHlsZVBhaW50ZXJRU3R5bGUuCisKKyAgICAgICAgVGhlIG5l
dyBSZW5kZXJUaGVtZVFTdHlsZS9TY3JvbGxsYmFyVGhlbWVRU3R5bGUgdXNlcyBjb21tb24gY29k
ZSBpbgorICAgICAgICBTdHlsZVBhaW50ZXJRU3R5bGUgdG8gcG9wdWxhdGUgc3RhdGUgaW50byBR
U3R5bGVGYWNhZGVPcHRpb24gYmVmb3JlCisgICAgICAgIGNhbGxpbmcgaW50byBRU3R5bGVGYWNh
ZGUuCisKKyAgICAgICAgVGhlIHN0eWxlIGZhY2FkZSBpcyB0aGVuIGltcGxlbWVudGVkIGJ5IFFT
dHlsZUZhY2FkZUltcCwgd2hpY2ggZXh0cmFjdHMKKyAgICAgICAgbWV0YS1kYXRhIGZyb20gUVN0
eWxlRmFjYWRlT3B0aW9uIGFyZ3VtZW50cywgcG9wdWxhdGVzIHN0eWxlCisgICAgICAgIHByaW1p
dGl2ZSBzcGVjaWZpYyBRU3R5bGVPcHRpb24gb2JqZWN0cyBhbmQgdGhlbiBjYWxscyBvbiBRU3R5
bGUuCisKKyAgICAgICAgUmVuZGVyVGhlbWVRU3R5bGUvU2Nyb2xsYmFyVGhlbWVRU3R5bGUgY2Fu
IG9ubHkgdXNlIGludGVyZmFjZSBtZXRob2RzCisgICAgICAgIGZyb20gUVN0eWxlRmFjYWRlLiBR
U3R5bGVGYWNhZGVJbXAgb24gdGhlIG90aGVyIGhhbmQgd2lsbCBsaXZlIGluIHRoZQorICAgICAg
ICBzZXBhcmF0ZSBRdFdlYktpdFdpZGdldHMgbGlicmFyeSBpbiB0aGUgZnV0dXJlIGFuZCB0aGVy
ZWZvcmUgY2Fubm90IHVzZQorICAgICAgICBhbnkgV2ViQ29yZSB0eXBlcy4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5p
dGlhbGl6ZVdlYkNvcmVRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVN0eWxlRmFjYWRl
SW1wLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpjb252
ZXJ0VG9RU3R5bGVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1FTdHlsZVN1YkNv
bnRyb2wpOgorICAgICAgICAoV2ViS2l0Ojppbml0R2VuZXJpY1N0eWxlT3B0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6aW5pdFNwZWNpZmljU3R5bGVPcHRpb24pOgorICAgICAgICAoTWFwcGVkU3R5
bGVPcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpNYXBwZWRTdHlsZU9wdGlvbjo6TWFwcGVkU3R5
bGVPcHRpb24pOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0UGl4ZWxNZXRyaWMpOgorICAgICAg
ICAoV2ViS2l0Ojpjb252ZXJ0VG9RU3R5bGVGYWNhZGVTdWJDb250cm9sKToKKyAgICAgICAgKFdl
YktpdDo6UVN0eWxlRmFjYWRlSW1wOjpRU3R5bGVGYWNhZGVJbXApOgorICAgICAgICAoV2ViS2l0
OjpRU3R5bGVGYWNhZGVJbXA6On5RU3R5bGVGYWNhZGVJbXApOgorICAgICAgICAoV2ViS2l0OjpR
U3R5bGVGYWNhZGVJbXA6OmJ1dHRvblN1YkVsZW1lbnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6
UVN0eWxlRmFjYWRlSW1wOjpmaW5kRnJhbWVMaW5lV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpR
U3R5bGVGYWNhZGVJbXA6OnNpbXBsZVBpeGVsTWV0cmljKToKKyAgICAgICAgKFdlYktpdDo6UVN0
eWxlRmFjYWRlSW1wOjpidXR0b25NYXJnaW4pOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNh
ZGVJbXA6OnNsaWRlckxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6
c2xpZGVyVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwcm9n
cmVzc0JhckNodW5rV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6Omdl
dEJ1dHRvbk1ldHJpY3MpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnNpemVG
cm9tQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwYWludFRleHRGaWVsZCk6
CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRDb21ib0JveCk6CisgICAg
ICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRDb21ib0JveEFycm93KToKKyAgICAg
ICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwYWludFNsaWRlclRyYWNrKToKKyAgICAgICAg
KFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwYWludFNsaWRlclRodW1iKToKKyAgICAgICAgKFdl
YktpdDo6UVN0eWxlRmFjYWRlSW1wOjpwYWludElubmVyU3BpbkJ1dHRvbik6CisgICAgICAgIChX
ZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJL
aXQ6OlFTdHlsZUZhY2FkZUltcDo6c2Nyb2xsQmFyRXh0ZW50KToKKyAgICAgICAgKFdlYktpdDo6
UVN0eWxlRmFjYWRlSW1wOjpzY3JvbGxCYXJNaWRkbGVDbGlja0Fic29sdXRlUG9zaXRpb25TdHls
ZUhpbnQpOgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnBhaW50U2Nyb2xsQ29y
bmVyKToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpoaXRUZXN0U2Nyb2xsQmFy
KToKKyAgICAgICAgKFdlYktpdDo6UVN0eWxlRmFjYWRlSW1wOjpzY3JvbGxCYXJTdWJDb250cm9s
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlFTdHlsZUZhY2FkZUltcDo6cGFpbnRTY3JvbGxCYXIp
OgorICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OndpZGdldEZvclBhaW50ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OnN0eWxlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9RU3R5bGVGYWNhZGVJbXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRU3R5bGVGYWNhZGVJbXApOgorICAgICAgICAo
V2ViS2l0OjpRU3R5bGVGYWNhZGVJbXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlFTdHls
ZUZhY2FkZUltcDo6aXNWYWxpZCk6CisKKzIwMTItMTAtMDUgIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3ZlIGRlYWQgY29kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0OTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBKb2NlbHluIFR1cmNvdHRlLgorCisgICAgICAgIFRoaXMgY29k
ZSB3YXMgYWRkZWQgbG9uZyB0aW1lIGFnbyBmb3IgYSBTeW1iaWFuIHJlbGF0ZWQgcHJvamVjdCBh
bmQgaXMKKyAgICAgICAgbm90IG5lZWRlZCBhbnltb3JlLgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisKKzIwMTItMTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgRmluYWwgcGFydCBvZiAic3luYyIgdG8gImZsdXNoIiByZW5hbWlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIENoYW5nZSBtZXRo
b2QgbmFtZXMgb24gR3JhcGhpY3NMYXllciBhbmQgR3JhcGhpY3NMYXllckNsaWVudCB0aGF0Cisg
ICAgICAgIHJlZmVyIHRvICJzeW5jIiB0byB1c2UgdGhlIHRlcm0gImZsdXNoIiBpbnN0ZWFkLCB0
byBiZSBjb25zaXN0ZW50CisgICAgICAgIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvZGUuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6OnN5bmNSb290TGF5ZXIpOgorCisyMDEyLTEw
LTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0
YW5kYXJkaXplIG9uICJmbHVzaCIgdGVybWlub2xvZ3kgZm9yIGNvbXBvc2l0aW5nIGxheWVyIGZs
dXNoaW5nL3N5bmNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIFJlbmFtZSBjb21wb3NpdGluZy1yZWxhdGVkIG1ldGhvZHMgdGhhdCByZWZlciB0byAic3lu
Y2luZyIgdG8gaW5zdGVhZAorICAgICAgICByZWZlciB0byAiZmx1c2hpbmciLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50
UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzeW5jTGF5ZXJzKToKKworMjAx
Mi0xMC0wMyAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1F0XSBFbmFibGUgbW9jayBzY3JvbGxiYXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9z
enRyb2dvbsOhYy4KKworICAgICAgICBBZGRlZCBoZWxwZXIgdG8gZW5hYmxlIG1vY2sgc2Nyb2xs
YmFycy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjplbmFibGVNb2NrU2Nyb2xs
YmFycyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
aDoKKworMjAxMi0xMC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHRoZSBTYWZhcmkgMiAtPiBTYWZhcmkgMyBpY29uIGRhdGFiYXNlIGltcG9y
dCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgxMTMKKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KKworICAgICAg
ICBOdWtlIHRoZSBwZXJmb3JtSW1wb3J0KCkgSWNvbkRhdGFiYXNlQ2xpZW50IG1ldGhvZC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRRdC5oOgorICAgICAgICAoSWNv
bkRhdGFiYXNlQ2xpZW50UXQpOgorCisyMDEyLTA5LTI4ICBNaWtoYWlsIFBvemRueWFrb3YgIDxt
aWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIENvZGUgaW5zaWRlIEZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoKSBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIHNo
YXJlZCBhbW9uZyBkaWZmZXJlbnQgV0sgcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KKworICAgICAgICBOZXdseSBhZGRlZCBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpj
YW5TaG93TUlNRVR5cGUoKSBmdW5jdGlvbiBpcyB1c2VkCisgICAgICAgIGluc2lkZSBXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5TaG93TUlNRVR5cGUoKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuU2hvd01JTUVUeXBlKToKKworMjAxMi0wOS0yNyAgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBV
bmlmeSBldmVudCBoYW5kbGluZyBvZiBtaWRkbGUgbW91c2UgYnV0dG9uLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIFJlbW92ZSBwb3J0IHNwZWNpZmljIGhhbmRs
aW5nIG9mIG1pZGRsZSBtb3VzZSBidXR0b24gcHJlc3MuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudCk6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZSk6CisK
KzIwMTItMDktMjYgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgor
CisgICAgICAgIFtRdF0gUmVtb3ZlIFF0IFF1aWNrIDEgc3VwcG9ydAorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEl0IGlzIGJlaW5n
IG1vdmVkIHRvIHRoZSBRdDUgUXRRdWljazEgbW9kdWxlLgorCisgICAgICAgIEEgY2lyY3VsYXIg
ZGVwZW5kZW5jeSBleGlzdHMgb3RoZXJ3aXNlIGluIFF0LCB3aGVyZSBRdFdlYktpdCB3b3VsZCBk
ZXBlbmQgb24gUXRRdWljazEsCisgICAgICAgIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBRdFRv
b2xzIChmb3IgZGVzaWduZXIgcGx1Z2luKSwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIFF0V2Vi
S2l0CisgICAgICAgIChmb3IgYXNzaXN0YW50IGhlbHAgaHRtbCByZW5kZXJpbmcpLgorCisgICAg
ICAgICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFtbFBsdWdpbjo6
cmVnaXN0ZXJUeXBlcyk6CisgICAgICAgICogZGVjbGFyYXRpdmUvcHVibGljLnByaToKKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmV3ZWJ2aWV3X3AuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3FkZWNsYXJhdGl2ZXdlYnZpZXcucHJvOiBS
ZW1vdmVkLgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL2Jh
c2ljLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy9y
ZXNvdXJjZXMvYmFzaWMucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2
ZXdlYnZpZXcvcmVzb3VyY2VzL2Jhc2ljLnFtbDogUmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0cy9x
ZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9lbGVtZW50cy5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL2VsZW1lbnRzLnFtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9m
b3J3YXJkLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmll
dy9yZXNvdXJjZXMvZm9yd2FyZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xh
cmF0aXZld2Vidmlldy9yZXNvdXJjZXMvamF2YVNjcmlwdC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL2phdmFTY3JpcHQucW1sOiBS
ZW1vdmVkLgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL2xv
YWRFcnJvci5xbWw6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmll
dy9yZXNvdXJjZXMvbmV3d2luZG93cy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHRlc3RzL3Fk
ZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL25ld3dpbmRvd3MucW1sOiBSZW1vdmVkLgorICAg
ICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL3Byb3BlcnR5Y2hhbmdl
cy5xbWw6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy9yZXNv
dXJjZXMvc2FtcGxlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZl
d2Vidmlldy9yZXNvdXJjZXMvc2V0aHRtbC5xbWw6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMv
cWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJjZXMvd2Vidmlld2JhY2tncm91bmRjb2xvci5xbWw6
IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJjZXMv
d2Vidmlld3Rlc3QucW1sOiBSZW1vdmVkLgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdl
YnZpZXcvcmVzb3VyY2VzL3dlYnZpZXd0ZXN0ZGVmYXVsdC5xbWw6IFJlbW92ZWQuCisgICAgICAg
ICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xh
cmF0aXZld2Vidmlldy5xcmM6IFJlbW92ZWQuCisKKzIwMTItMDktMjUgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NTM5NworICAgICAgICBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCBhbmQgCisgICAgICAgIGRpZE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dAorICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDc5MTY4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAg
IFJlbW92ZSBkaXNwYXRjaERpZEZpcnN0TGF5b3V0LCAKKyAgICAgICAgZGlzcGF0Y2hEaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQsIGFuZCAKKyAgICAgICAgZGlzcGF0Y2hEaWROZXdGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFRoZWlyIGZ1bmN0aW9uYWxpdHkgCisgICAgICAgIGlz
IG5vdyByZXBsYWNlZCBieSBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxlc3RvbmVPcHRpb25z
KQorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAg
KEZyYW1lTG9hZGVyQ2xpZW50UXQpOgorCisgICAgICAgIEl0IGlzIG5vdyBuZWNlc3NhcnkgdG8g
b3B0IGludG8gZ2V0dGluZyBhbnkgb2YgdGhlIAorICAgICAgICAibGF5b3V0IG1pbGVzdG9uZSIg
bm90aWZpY2F0aW9ucy4KKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDEyLTA5LTI1ICBTaW1vbiBIYXVz
bWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBmYWls
aW5nIGFzc2VydGlvbiB3aGVuIGNhbGxpbmcgUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQ
YXRoIG11bHRpcGxlIHRpbWVzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jZWx5biBUdXJjb3R0
ZS4KKworICAgICAgICBUaGlzIGhhcHBlbnMgaW4gdmFyaW91cyBhdXRvLXRlc3RzLiBXZSBjYW4g
aW1wbGVtZW50IHRoaXMgYnkgY2xvc2luZyB0aGUgZGF0YWJhc2UgYmVmb3JlCisgICAgICAgIG9w
ZW5pbmcgaXQgd2l0aCB0aGUgbmV3IHBhdGguCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6CisKKzIw
MTItMDktMjQgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEy
LTA5LTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1F0XSBFbmFibGUgQ1NTIHJlZ2lvbnMgYnkgZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcxOTYKKworICAgICAgICBSZXZpZXdlZCBieSBE
aXJrIFNjaHVsemUuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKworMjAxMi0wOS0xNyAgQ2FpbyBNYXJjZWxv
IGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF0gVXNlIFVuZG9TdGVwOjplZGl0aW5nQWN0aW9uKCkgdG8gc2V0IHRoZSB0ZXh0IG9m
IHVuZG8vcmVkbyBhY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NjkyMQorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKwor
ICAgICAgICBTZXQgdGhlIHRleHQgb2YgUVVuZG9Db21tYW5kcyB3ZSBjcmVhdGUgZm9yIHVuZG8v
cmVkbyBhY3Rpb25zIGJhc2VkIG9uIHRoZQorICAgICAgICBlZGl0aW5nIGFjdGlvbiBmcm9tIFVu
ZG9TdGVwLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHZpc2libGUgdXNpbmcgUXRUZXN0QnJv
d3NlciwgYW5kIGxvb2tpbmcgYXQgdGhlIEVkaXQgbWVudSBhZnRlcgorICAgICAgICBkb2luZyBI
VE1MIGVkaXRpbmcgY2hhbmdlcy4gSSd2ZSB1c2VkIGh0dHA6Ly9zaW1wbGUtcnRlLnJuaXdhLmNv
bSBmb3IgdGVzdGluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1VuZG9TdGVwUXQuY3Bw
OgorICAgICAgICAodW5kb05hbWVGb3JFZGl0QWN0aW9uKTogVGhpcyBmdW5jdGlvbiByZXR1cm5z
IGEgbG9jYWxpemVkIG5hbWUgb2YgdGhlIGFjdGlvbi4KKyAgICAgICAgKFVuZG9TdGVwUXQ6OlVu
ZG9TdGVwUXQpOiBTZXQgdGhlIHRleHQgYmFzZWQgb24gVW5kb1N0ZXA6OmVkaXRpbmdBY3Rpb24u
CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRz
dF9RV2ViUGFnZSk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnVuZG9BY3Rpb25IYXZlQ3VzdG9t
VGV4dCk6IENyZWF0ZSBhIG5ldyB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoZSB0ZXh0CisgICAgICAg
IGRlc2NyaWJpbmcgdGhlIHVuZG8gYWN0aW9uIGFmdGVyIGluc2VydGluZyBhIHRleHQgYW5kIGlu
ZGVudGluZyB0aGUgdGV4dCBpcyBkaWZmZXJlbnQuCisKKzIwMTItMDktMTcgIExlbyBGcmFuY2hp
ICA8bGZyYW5jaGlAa2RlLm9yZz4KKworICAgICAgICBbUXRdIEluc3BlY3RvciBXZWJTb2NrZXQg
YmFja2VuZCBwcm90b2NvbCB1cGRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3MDMxCisKKyAgICAgICAgQWxzbyBhZGRzIHN1cHBvcnQgZm9yIG11
bHRpLWZyYW1lIG1lc3NhZ2VzIGFuZCBub24tdGV4dCBtZXNzYWdlcy4KKyAgICAgICAgVGhhbmtz
IHRvIEpvY2VseW4gVHVyY290dGUgZm9yIG1vc3Qgb2YgdGhlIFdlYlNvY2tldCB1cGRhdGUgY29k
ZSEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0Ojp0Y3BSZWFk
eVJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJR
dDo6d2ViU29ja2V0U2VuZCk6CisgICAgICAgIChXZWJDb3JlOjphcHBseU1hc2spOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdDo6d2ViU29ja2V0UmVh
ZHlSZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJRdC5oOgor
ICAgICAgICAoSW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdCk6CisKKzIwMTItMDktMTUg
IFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisKKyAgICAgICAgW1F0XSBR
RG9jIGZpeGVzIGZvciBRdCA1IGRvY3VtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgUHJvZHVjZSBmZXdlciB3YXJuaW5ncyBhbmQgYSBiZXR0
ZXIgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgSGF2aW5nIHR3byBRTUwgbW9kdWxlcyBwcm92aWRp
bmcgYSBXZWJWaWV3IGNvbXBvbmVudCBpcyBhIGJpdCB0b28gbXVjaCBmb3IgcG9vciBvbGQgcWRv
YyB0bworICAgICAgICBjb3BlIHdpdGggKG9yIHdvdWxkIHJlcXVpcmUgYSBsb3Qgb2YgcGFpbmZ1
bCBkaXNhbWJpZ3VhdGlvbiBieSBoYW5kKS4gU2luY2UgdGhlIHBsYW4gaXMgdG8gaGF2ZQorICAg
ICAgICBRRGVjbGFyYXRpdmVXZWJWaWV3IGxpdmluZyBpbiB0aGUgcXRxdWljazEgbW9kdWxlLCB3
ZSBjYW4gYWxyZWFkeSB0YWtlIGl0IG91dCBvZiB0aGUgCisgICAgICAgIGRvY3VtZW50YXRpb24g
Z2VuZXJhdGlvbiBmb3Igbm93LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZl
d2Vidmlldy5jcHA6IHMvcW1sY2xhc3MvcW1sdHlwZS8gb3V0IG9mIHByaW5jaXBsZQorICAgICAg
ICAqIGRvY3MvcXR3ZWJraXQucWRvY2NvbmY6IFJlbW92ZSB0aGUgXGkgYWxpYXMgdGhhdCBjYXVz
ZWQgYSB3YXJuaW5nLiBVc2UgKi5oIGFzIGhlYWRlcnMgc3VmZml4LCBub3Qgc291cmNlcy4KKyAg
ICAgICAgQWxzbyByZW1vdmUgUURlY2xhcmF0aXZlV2ViVmlldyBmcm9tIHRoZSBkb2N1bWVudGF0
aW9uLgorCisyMDEyLTA5LTEzICBMYXVybyBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFtRdF1bV0syXSBmYXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVt
ZW50cy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzkxNworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMgd2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29kZWQgTWFj
IE9TIFggaW4gdGhlCisgICAgICAgIFF0IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhpcyBjb21t
aXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1lbnRhdGlvbgorICAgICAgICB0byBhIHNoYXJlZCBvbmUg
dG8gYmUgdXNlZCBieSBib3RoIHZlcnNpb25zLgorCisgICAgICAgIENoYW5nZSBRV2ViUGFnZSB0
byB1c2UgdGhlIHNoYXJlZCB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp1c2VyQWdlbnRGb3JVcmwpOgor
CisyMDEyLTA5LTEzICBPc3dhbGQgQnVkZGVuaGFnZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IHFkb2MgZXhlY3V0YWJsZSBwcmVwYXJhdGlvbgor
CisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgKiBkb2Nz
L2RvY3MucHJpOgorCisyMDEyLTA5LTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3ODc2Lgor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjc4NzYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjAwCisKKyAgICAgICAg
bW91c2UgY2xpY2sgZG9lc24ndCB3b3JrIGZvciBzcGluIGJ1dHRvbiBpZiBzcGluIGJ1dHRvbiBp
bgorICAgICAgICBpZnJhbWUgKFJlcXVlc3RlZCBieSB5b3NpbiBvbiAjd2Via2l0KS4KKworICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpoaXRUZXN0Q29u
dGVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorICAgICAgICAo
UVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorCisyMDEyLTA5LTEyICBSb2xhbmQgVGFrYWNzICA8cnRha2Fjc0BpbmYudS1zemVnZWQu
aHU+CisKKyAgICAgICAgW1F0XSBTZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjbG9zaW5nIFF0VGVz
dEJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
RGVmaW5lZCBhIG5ldyBRT2JqZWN0KiB2YXJpYWJsZSB0aGF0IHBvaW50cyB0byB0aGUgUUdMV2lk
Z2V0IHRoYXQgd2FzIGNyZWF0ZWQKKyAgICAgICAgaW4gJ2NyZWF0ZVBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0RGcm9tV2lkZ2V0Jy4KKyAgICAgICAgSXQgaXMgbmVjY2Vzc2FyeSBmb3IgZGVhbGxv
Y2F0aW5nIGl0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoK
KyAgICAgICAgKGNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0RGcm9tV2lkZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpjcmVhdGVQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6
OmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1BhZ2VDbGllbnRRdC5oOgorICAgICAgICAoUGFnZUNsaWVudFFXaWRnZXQpOgorICAgICAg
ICAoUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKKzIwMTItMDktMTIgIEFuZHJhcyBCZWNz
aSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBBZGQgbW9kdWxlIGlk
ZW50aWZpZXIgZGlyZWN0aXZlIHRvIHRoZSBxbWxkaXIgZmlsZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUXQ1IFFNTCBtb2R1bGVzIG5lZWQgdG8gYmUg
aWRlbnRpZmllZC4gVHlwZSByZWdpc3RyYXRpb25zIGFyZSBvbmx5IHBlcm1pdHRlZAorICAgICAg
ICBpbnRvIHRoZSBuYW1lc3BhY2UgaWRlbnRpZmllZCBpbiB0aGUgcW1sZGlyIGZpbGUncyBtb2R1
bGUgaWRlbnRpZmllciBkaXJlY3RpdmUuCisgICAgICAgIEFkZGl0aW9uYWxseSB0aGlzIGFsc28g
ZmFjaWxpdGF0ZXMgdGhlIHByb3RlY3Rpb24gYWdhaW5zdCBleHRlcm5hbCByZWdpc3RyYXRpb25z
LgorICAgICAgICBUaGlzIHBhdGNoIHN1cHByZXNzZXMgYSB3YXJuaW5nIHdoZW4gaW1wb3J0aW5n
IHRoZSBRdFdlYktpdCBtb2R1bGUuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50
YWwvcW1sZGlyOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FtbGRpcjoKKworMjAxMi0wOS0xMSAg
TWFyY2VsbyBMaXJhICA8bWFyY2Vsby5saXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVz
dG9yZSBvcmlnaW5hbCB2YWx1ZSBvZiBtb2NrIHNjcm9sbGJhcnMgZW5hYmxlZCBpbiBJbnRlcm5h
bFNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzY4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgQWRk
ZWQgYmFja3VwIHN1cHBvcnQgZm9yIG1vY2sgc2Nyb2xsYmFycyBzdGF0ZSBpbgorICAgICAgICBJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXAsIGFuZCByZW1vdmVkIHN1cHBvcnQgZm9yIHRoZXNlCisg
ICAgICAgIGZyb20gUXQncyBEdW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEyLTA5LTExICBUb3IgQXJuZSBWZXN0
YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEFkZCBhIGNv
bmZpZ3VyZSBzdGVwIHRvIHRoZSBRdCBidWlsZCBzeXN0ZW0KKworICAgICAgICBUaGlzIGFsbG93
cyBidWlsZGluZyB0aGUgUXQgcG9ydCB1c2luZyBqdXN0ICdxbWFrZSBXZWJLaXQucHJvJy4gVXNp
bmcKKyAgICAgICAgdGhlIGJ1aWxkLXdlYmtpdCBzY3JpcHQgaXMgc3RpbGwgc3VwcG9ydGVkLCBh
bmQgd2lsbCBhZGQgc2xpZ2h0bHkgbW9yZQorICAgICAgICBsb2dpYyB0byB0aGUgYnVpbGQsIHN1
Y2ggYXMgZGV0ZWN0aW5nIHRoZSBuZWVkIGZvciBjbGVhbiBvciBpbmNyZW1lbnRhbAorICAgICAg
ICBidWlsZHMuCisKKyAgICAgICAgSW50ZXJuYWxseSwgdGhlIGJ1aWxkIHN5c3RlbSBub3cgdXNl
cyBhIG5ldyB2YXJpYWJsZSwgV0VCS0lUX0NPTkZJRywgZm9yCisgICAgICAgIGFsbCB0aGluZ3Mg
cmVsYXRlZCB0byBjb25maWd1cmluZyB0aGUgYnVpbGQsIHN1Y2ggYXMgdXNlL2hhdmUvZW5hYmxl
IGZsYWdzLAorICAgICAgICBhbmQgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgdG8gZGVmaW5lcyBpbiBk
ZWZhdWx0X3Bvc3QuIFByb2plY3QgZmlsZXMgc2hvdWxkCisgICAgICAgIG5vIGxvbmdlciBjaGVj
ayBjb250YWlucyhERUZJTkVTLC4uLikgdG8gZGV0ZWN0IGZlYXR1cmVzLCBidXQgdXNlIHRoZSBu
ZXcKKyAgICAgICAgZW5hYmxlPygpLCB1c2U/KCksIGFuZCBoYXZlPygpIGZ1bmN0aW9ucy4gVGhl
IG5vX3dlYmtpdDEgYW5kIG5vX3dlYmtpdDIKKyAgICAgICAgb3B0aW9ucyBoYXZlIGJlZW4gdHJh
bnNsYXRlZCBpbnRvIFdFQktJVF9DT05GSUcgb3B0aW9ucyBhcyB3ZWxsLCBhbmQgY2FuCisgICAg
ICAgIGJlIGNoZWNrZWQgdXNpbmcgYnVpbGQ/KCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9kZWNsYXJhdGl2ZS5wcm86Cisg
ICAgICAgICogZGVjbGFyYXRpdmUvcHVibGljLnByaToKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhp
Y3N3ZWJ2aWV3L3FncmFwaGljc3dlYnZpZXcucHJvOgorCisyMDEyLTA5LTExICBBbmRyYXMgQmVj
c2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBGaXggdGhl
IGJ1aWxkIHdpdGggcmVjZW50IFF0NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYyODMKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBXZSBzaG91bGQgbm90IHVzZSBkZXByZWNhdGVkIFF0IEFQSSBiZWNhdXNl
IGRvaW5nIHRoYXQgcmVzdWx0cworICAgICAgICBpbiBidWlsZCBmYWlsdXJlIHNpbmNlIGFsbCB0
aGUgZGVwcmVjYXRlZCBBUEkgd2FzIGRpc2FibGVkCisgICAgICAgIGluIHF0YmFzZSAoaHR0cHM6
Ly9jb2RlcmV2aWV3LnF0LXByb2plY3Qub3JnLyNjaGFuZ2UsMjQ4OTApLgorCisgICAgICAgICog
dGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAg
ICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6d2lkZ2V0c1JlbmRlcmluZ1Rocm91Z2hDYWNoZSk6Cisg
ICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFsZXR0ZSk6CisgICAgICAgICh0c3Rf
UUdyYXBoaWNzV2ViVmlldzo6Y29tcGFyZUNhbnZhc1RvSW1hZ2UpOgorICAgICAgICAqIHRlc3Rz
L3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwOgorICAgICAgICAodHN0X1FPYmpl
Y3RCcmlkZ2U6Om93bmVyc2hpcCk6CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6cG9wdXBGb2N1cyk6CisgICAgICAg
ICh0c3RfUVdlYkZyYW1lOjppbnB1dEZpZWxkRm9jdXMpOgorICAgICAgICAodHN0X1FXZWJGcmFt
ZTo6ZXZhbHVhdGVXaWxsQ2F1c2VSZXBhaW50KToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoTmF2aWdhdGlvbik6CisgICAgICAgIChQbHVnaW5D
b3VudGVyUGFnZSk6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKHRzdF9RV2ViVmlldzo6cmV1c2VQYWdlKToKKyAgICAgICAgKHRzdF9RV2ViVmll
dzo6Zm9jdXNJbnB1dFR5cGVzKToKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6c2V0UGFsZXR0ZSk6
CisgICAgICAgICh0c3RfUVdlYlZpZXc6OnJlbmRlcmluZ0FmdGVyTWF4QW5kQmFjayk6CisKKzIw
MTItMDktMDkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
bmFtZSBOb2RlOjpnZXRSZWN0L2dldFBpeGVsU25hcHBlZFJlY3QgYW5kIHJlbW92ZSBDb250YWlu
ZXJOb2RlOjpnZXRSZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAg
ICAgIFVwZGF0ZSBxd2ViZWxlbWVudCBhbmQgcXdlYnBhZ2UgdG8gY2FsbCBwaXhlbFNuYXBwZWRC
b3VuZGluZ0JveC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChR
V2ViRWxlbWVudDo6Z2VvbWV0cnkpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnJlbmRlcik6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91
Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorCisyMDEyLTA5LTA3ICBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAg
IFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBVcGRhdGUgY2FsbHMg
dG8gbmV3IEFQSS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjpoaXRUZXN0Q29udGVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9y
VG91Y2gpOgorICAgICAgICAoUVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9u
cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorCisyMDEyLTA5LTA3ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFgxMSBHbG9iYWwgU2VsZWN0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODIz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgVXNlIG5ldyBl
ZGl0b3IgY29tbWFuZCBmb3IgcGFzdGluZyBnbG9iYWwgc2VsZWN0aW9uLCBhbmQgdXBkYXRlIGl0
IHVzaW5nCisgICAgICAgIHRoZSByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uIGNhbGxiYWNrLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
aGFuZGxlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c3VwcG9ydHNH
bG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
Lmg6CisgICAgICAgIChFZGl0b3JDbGllbnRRdCk6CisKKzIwMTItMDktMDUgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1T
dHJpbmcuaCwgcmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KKworICAgICAgICBSZW1vdmUgUGxhdGZvcm1TdHJpbmcuaAorCisgICAgICAgICog
QXBpL3F3ZWJkYXRhYmFzZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAg
ICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnlpbnRl
cmZhY2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisKKzIw
MTItMDktMDUgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisK
KyAgICAgICAgW0RSVF0gTFRDOjogTW92ZSBwcmludGluZyByZWxhdGVkIEFQSXMgZnJvbSBMYXlv
dXRUZXN0Q29udHJvbGxlciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1l
IE1vcml0YS4KKworICAgICAgICBNb3ZlIG51bWJlck9mUGFnZXMsIHBhZ2VQcm9wZXJ0eSAmIHBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzIGluIEludGVybmFscyBhbmQgcmVtb3ZlIGR1cGxpY2F0
ZWQgY29kZSBmcm9tIER1bXByZW5kZXJUcmVlICYgV2Via2l0VGVzdFJ1bm5lci4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKwor
MjAxMi0wOS0wNCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1F0XSBS
RUdSRVNTSU9OKHIxMjczMjEpOiBJdCBtYWRlIDMgbm90aWZpY2F0aW9uIHRlc3QgdGltZW91dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU2MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAgICAgRGlzcGF0
Y2ggc2hvdyBldmVudCBpbnN0ZWFkIG9mIGRpc3BsYXkgYWZ0ZXIgcjEyNzMyMS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzZW5kRGlzcGxh
eUV2ZW50KToKKworMjAxMi0wOC0zMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBQb3J0IGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQgdG8g
dXNlIHRoZSBKU0MgQyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0Njk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgTWlub3IgYWRhcHRhdGlvbnMgYXJlIG5lZWRlZCBoZXJlIHRv
IGFjY29tb2RhdGUgdGhlIGNoYW5nZWQgc2lnbmF0dXJlIG9mCisgICAgICAgIGNvbnZlcnRWYWx1
ZVRvUVZhcmlhbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAo
UVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChjb252ZXJ0SlNWYWx1
ZVRvV2ViRWxlbWVudFZhcmlhbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAg
ICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKGNvbnZlcnRKU1Zh
bHVlVG9Ob2RlVmFyaWFudCk6CisKKzIwMTItMDgtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugb25lIG9iamVjdCBpbnN0ZWFkIG9mIHR3byBmb3Ig
Y2xvc3VyZXMsIGVsaW1pbmF0aW5nIFNjb3BlQ2hhaW5Ob2RlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IEZpbGlwIFBpemxvLgorCisgICAgICAgIE1lY2hhbmljYWwgY2hhbmdlIHRvIHVwZGF0ZSBmb3Ig
SlNDIGludGVyZmFjZSBjaGFuZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgor
ICAgICAgICAoUVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisKKzIwMTItMDgtMzAg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFj
ZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCisKKyAgICAgICAgUmVwbGFjZSBVU3RyaW5nIGJ5IFN0cmluZy4KKworICAgICAg
ICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZXZhbHVhdGVK
YXZhU2NyaXB0KToKKworMjAxMi0wOC0yOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBGaXggZG9jIGdlbmVyYXRpb24gd2l0aCBtYWtl
IGRvY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
MzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgRml4IGRvYyB0YXJnZXQsIHNpbWlsYXIgdG8gd2hhdCB0aGUgb3RoZXIgUXQgNSBt
b2R1bGVzIGFyZSB1c2luZyBhbmQgY29tbWVudCBvdXQgdGhlIGluZGV4ZXMKKyAgICAgICAgbGlu
ZSwgYmVjYXVzZSBjcm9zcy1yZWZlcmVuY2luZyBkb2Vzbid0IHdvcmsgcmlnaHQgbm93IGFuZCB0
aGUgdXNlIG9mIHRoZSBRVERJUiBlbnZpcm9ubWVudAorICAgICAgICBpcyB3cm9uZywgdG9vLgor
CisgICAgICAgICogZG9jcy9kb2NzLnByaToKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LnFkb2Nj
b25mOgorCisyMDEyLTA4LTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBbUXRdIFJFR1JFU1NJT04ocjEyNTQyOCk6IGZhc3QvcHJvZmlsZXIv
bmVzdGVkLXN0YXJ0LWFuZC1zdG9wLXByb2ZpbGVyLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzODk3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgRml4ZWQgc29tZSB0
ZXN0IGV4cGVjdGF0aW9ucy4KKworICAgICAgICAqIHRlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3Fv
YmplY3RicmlkZ2UuY3BwOgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6Om9iamVjdERlbGV0
ZWQpOiBTaW5jZSBydW50aW1lIG1ldGhvZHMgYXJlIHJlYWwgZnVuY3Rpb24gb2JqZWN0cyBhZ2Fp
biwgd2UKKyAgICAgICAgY2FuIGdvIGJhY2sgdG8gdGVzdGluZyBGdW5jdGlvbi5wcm90b3R5cGUu
Y2FsbCwgYXMgaXQgd2FzIGRvbmUgYmVmb3JlIHIxMjU0MjguCisgICAgICAgICh0c3RfUU9iamVj
dEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kc19kYXRhKTogUmVtb3ZlZCB0ZXN0cyBmb3IgdGhl
IGxlbmd0aCBwcm9wZXJ0eS4KKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjppbnRyb3NwZWN0
UXRNZXRob2RzKTogQ2hhbmdlZCB0ZXN0IGV4cGVjdGF0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzIG9m
CisgICAgICAgIHJ1bi10aW1lIG1ldGhvZHMgYmFjayB0byBiZWluZyBub24tY29uZmlndXJhYmxl
LCBhcyBiZWZvcmUgcjEyNTQyOC4KKworMjAxMi0wOC0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyNjkxNC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2OTE0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTIzOQor
CisgICAgICAgIGl0IGJyZWFrcyBldmVyeXRoaW5nIGFuZCBmaXhlcyBub3RoaW5nIChSZXF1ZXN0
ZWQgYnkgcGl6bG8gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoZXh0cmFjdENvbnRlbnRUeXBlRnJvbVBsdWdpblZlY3Rvcik6Cisg
ICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6CisgICAgICAgIChRV2ViUGx1Z2lu
SW5mbzo6bWltZVR5cGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UGx1Z2luSW5m
byk6CisKKzIwMTItMDgtMjggIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8u
b2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5hbWUgZmlyc3Qvc2Vjb25kIHRv
IGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI3ODQKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChleHRyYWN0
Q29udGVudFR5cGVGcm9tUGx1Z2luVmVjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcDoKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKToKKworMjAxMi0wOC0yNyAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyNjgzNi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTI2ODM2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTE2MworCisgICAgICAgIEJyb2tlIGFsbCBBcHBsZSBwb3J0cywgRUZMLCBhbmQg
UXQuIChSZXF1ZXN0ZWQgYnkgdGtlbnQgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZXh0cmFjdENvbnRlbnRUeXBlRnJvbVBsdWdp
blZlY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6CisgICAgICAg
IChRV2ViUGx1Z2luSW5mbzo6bWltZVR5cGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Z2V0UGx1Z2luSW5mbyk6CisKKzIwMTItMDgtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBG
aWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5hbWUgZmly
c3Qvc2Vjb25kIHRvIGtleS92YWx1ZSBpbiBIYXNoTWFwIGl0ZXJhdG9ycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI3ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChleHRyYWN0Q29udGVudFR5cGVGcm9tUGx1Z2luVmVjdG9yKToKKyAgICAgICAgKiBBcGkv
cXdlYnBsdWdpbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlw
ZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcDoK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKToKKworMjAxMi0w
OC0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNjI4Ny4KKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI2Mjg3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NDcwOAorCisgICAgICAgIEl0IG1hZGUgV0sxIGxheW91dCB0
ZXN0aW5nIDMuN3ggc2xvd2VyICg+MWhvdXJzKSAoUmVxdWVzdGVkIGJ5CisgICAgICAgIG9zc3kg
b24gI3dlYmtpdCkuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0
YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjpvYmplY3REZWxldGVkKToK
KyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjppbnRyb3NwZWN0UXRNZXRob2RzX2RhdGEpOgor
ICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHMpOgorCisyMDEy
LTA4LTIyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgor
CisgICAgICAgIFtRdF0gT3B0aW9uYWxseSBzdXBwb3J0IHNtb290aC1zY3JvbGxpbmcgb24gYWxs
IHBsYXRmb3JtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ5MjYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBFeHBvc2UgdGhlIGVuYWJsZSBzY3JvbGwgYW5pbWF0b3Igc2V0dGluZy4KKworICAgICAgICAq
IEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBw
bHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMi0wOC0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5o
YXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBm
YXN0L3Byb2ZpbGVyL25lc3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAg
IEZpeGVkIHNvbWUgdGVzdCBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0
YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdl
OjpvYmplY3REZWxldGVkKTogU2luY2UgcnVudGltZSBtZXRob2RzIGFyZSByZWFsIGZ1bmN0aW9u
IG9iamVjdHMgYWdhaW4sIHdlCisgICAgICAgIGNhbiBnbyBiYWNrIHRvIHRlc3RpbmcgRnVuY3Rp
b24ucHJvdG90eXBlLmNhbGwsIGFzIGl0IHdhcyBkb25lIGJlZm9yZSByMTI1NDI4LgorICAgICAg
ICAodHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHNfZGF0YSk6IFJlbW92ZWQg
dGVzdHMgZm9yIHRoZSBsZW5ndGggcHJvcGVydHkuCisgICAgICAgICh0c3RfUU9iamVjdEJyaWRn
ZTo6aW50cm9zcGVjdFF0TWV0aG9kcyk6IENoYW5nZWQgdGVzdCBleHBlY3RhdGlvbiBvZiB0aGUg
cHJvcGVydGllcyBvZgorICAgICAgICBydW4tdGltZSBtZXRob2RzIGJhY2sgdG8gYmVpbmcgbm9u
LWNvbmZpZ3VyYWJsZSwgYXMgYmVmb3JlIHIxMjU0MjguCisKKzIwMTItMDgtMjEgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjYxNDYuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzEyNjE0NgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTQ2MDYKKworICAgICAgICBJdCBtYWRlIGFsbCB0ZXN0cyBhc3NlcnQgKFJlcXVlc3Rl
ZCBieSBPc3N5IG9uICN3ZWJraXQpLgorCisgICAgICAgICogdGVzdHMvcW9iamVjdGJyaWRnZS90
c3RfcW9iamVjdGJyaWRnZS5jcHA6CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6b2JqZWN0
RGVsZXRlZCk6CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9k
c19kYXRhKToKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjppbnRyb3NwZWN0UXRNZXRob2Rz
KToKKworMjAxMi0wOC0xNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjU0MjgpOiBmYXN0L3Byb2ZpbGVyL25l
c3RlZC1zdGFydC1hbmQtc3RvcC1wcm9maWxlci5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEZpeGVkIHNvbWUgdGVz
dCBleHBlY3RhdGlvbnMuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2Jq
ZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjpvYmplY3REZWxldGVk
KTogU2luY2UgcnVudGltZSBtZXRob2RzIGFyZSByZWFsIGZ1bmN0aW9uIG9iamVjdHMgYWdhaW4s
IHdlCisgICAgICAgIGNhbiBnbyBiYWNrIHRvIHRlc3RpbmcgRnVuY3Rpb24ucHJvdG90eXBlLmNh
bGwsIGFzIGl0IHdhcyBkb25lIGJlZm9yZSByMTI1NDI4LgorICAgICAgICAodHN0X1FPYmplY3RC
cmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHNfZGF0YSk6IFJlbW92ZWQgdGVzdHMgZm9yIHRoZSBs
ZW5ndGggcHJvcGVydHkuCisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0
TWV0aG9kcyk6IENoYW5nZWQgdGVzdCBleHBlY3RhdGlvbiBvZiB0aGUgcHJvcGVydGllcyBvZgor
ICAgICAgICBydW4tdGltZSBtZXRob2RzIGJhY2sgdG8gYmVpbmcgbm9uLWNvbmZpZ3VyYWJsZSwg
YXMgYmVmb3JlIHIxMjU0MjguCisKKzIwMTItMDgtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIG1hbnVhbCB0ZXN0cyBhbmQgY29tbWVudHMgdG8g
cmVmZXIgdG8gVGVzdFJ1bm5lciBpbnN0ZWFkIG9mIExheW91dFRlc3RDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKyAgICAgICAgKGNvbnZlcnRKU1ZhbHVlVG9XZWJFbGVtZW50VmFyaWFudCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMi0w
OC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIERlbGV0ZSBG
cmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisKKzIwMTItMDgtMTQgIExhdXJv
IE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgQ29udmVydCBzaWdu
YWxzL3Nsb3RzIHRvIFFfKiBtYWNyb3MuCisKKyAgICAgICAgW1F0XSBVc2UgUV9TTE9UUyBhbmQg
UV9TSUdOQUxTIGluc3RlYWQgb2Ygc2xvdHMgYW5kIHNpZ25hbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTk2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgQ2hhbmdlIHVzYWdlIG9m
IGtleXdvcmQtY29uZmxpY3RpbmcgJ3NpZ25hbHMnIGFuZCAnc2xvdHMnIGZvcgorICAgICAgICBR
X1NJR05BTFMgYW5kIFFfU0xPVFMgbWFjcm8uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudFF0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oOgorICAgICAgICAoRnVs
bFNjcmVlblZpZGVvUXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRl
b1dpZGdldC5oOgorICAgICAgICAoRnVsbFNjcmVlblZpZGVvV2lkZ2V0KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRRdC5oOgorICAgICAgICAoSWNvbkRhdGFi
YXNlQ2xpZW50UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudFdlYlBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0Lmg6CisgICAgICAgIChJbnNwZWN0b3JTZXJ2ZXJR
dCk6CisgICAgICAgIChJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5oOgorICAgICAgICAoUG9wdXBNZW51UXQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oOgorICAgICAgICAo
UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Vi
a2l0X2JyaWRnZV9zbmlwcGV0cy5jcHA6CisgICAgICAgICh3cmFwSW5GdW5jdGlvbik6CisgICAg
ICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwOgorICAgICAgICAoVGh1
bWJuYWlsZXIpOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5o
OgorICAgICAgICAoUG9wdXApOgorICAgICAgICAoV2ViUG9wdXApOgorICAgICAgICAqIHRlc3Rz
L2JlbmNobWFya3Mvd2ViZ2wvdHN0X3dlYmdsLmNwcDoKKyAgICAgICAgKHRzdF9XZWJHbFBlcmZv
cm1hbmNlKToKKyAgICAgICAgKiB0ZXN0cy9oeWJyaWRQaXhtYXAvdHN0X2h5YnJpZFBpeG1hcC5j
cHA6CisgICAgICAgICh0c3RfaHlicmlkUGl4bWFwKToKKyAgICAgICAgKiB0ZXN0cy9oeWJyaWRQ
aXhtYXAvd2lkZ2V0Lmg6CisgICAgICAgIChXaWRnZXQpOgorICAgICAgICAqIHRlc3RzL3FkZWNs
YXJhdGl2ZXdlYnZpZXcvdHN0X3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorICAgICAgICAodHN0
X1FEZWNsYXJhdGl2ZVdlYlZpZXcpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcv
dHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXcp
OgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgIChSZXNpemVTcHkpOgorICAgICAgICAqIHRl
c3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwOgorICAgICAgICAoTXlXZWJF
bGVtZW50U2xvdE9ubHlPYmplY3QpOgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2UpOgorICAg
ICAgICAoVGVzdFBsdWdpbldpZGdldCk6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0
X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudCk6CisgICAgICAgICog
dGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFt
ZSk6CisgICAgICAgIChGYWtlUmVwbHkpOgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5L3Rz
dF9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2Uv
dHN0X3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeUlu
dGVyZmFjZSk6CisgICAgICAgICogdGVzdHMvcXdlYmluc3BlY3Rvci90c3RfcXdlYmluc3BlY3Rv
ci5jcHA6CisgICAgICAgICh0c3RfUVdlYkluc3BlY3Rvcik6CisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZSk6CisgICAgICAg
IChKU1Rlc3RQYWdlKToKKyAgICAgICAgKFJlcGFpbnRSZXF1ZXN0ZWRSZW5kZXJlcik6CisgICAg
ICAgIChTcHlGb3JMb2FkU2lnbmFsc09yZGVyKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGx1Z2lu
ZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBs
dWdpbkRhdGFiYXNlKToKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3Bw
OgorICAgICAgICAodHN0X1FXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXdDcmFzaFRlc3QpOgor
CisyMDEyLTA4LTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIEZpeCBmYWlsaW5nIHRzdF9RV2ViUGFnZTo6ZmluZFRleHQgdW5pdCB0
ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzk1
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIEFkanVzdCB0aGUgZXhwZWN0ZWQgdGV4dCwgYXMgdGhlIEhUTUwgZWRpdGluZyBjb2Rl
IGltcHJvdmVkIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHRhZ3MuCisKKyAgICAgICAgKiB0ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpmaW5kVGV4
dCk6CisKKzIwMTItMDgtMTMgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSByZWxlYXNlIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6bV9wbHVnaW5X
aWRnZXQgcmVmcHRyIHVwb24gUGx1Z2luIERvY3VtZW50IGRldGFjaC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMjgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBjbGllbnQgcmVkaXJlY3RE
YXRhVG9QbHVnaW4gbWV0aG9kKHMpIHRvIGV4cGVjdCB0aGUgcG9zc2liaWxpdHkgb2YKKyAgICAg
ICAgYSBOVUxMIGFyZ3VtZW50LCBrZWVwaW5nIGV4aXN0aW5nIGJlaGF2aW91ciBvdGhlcndpc2Uu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2lu
KToKKworMjAxMi0wOC0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgW1F0XSBQb3J0IG1ldGEgbWV0aG9kL3NpZ25hbC9zbG90IGhhbmRsaW5n
IGluIHJ1bi10aW1lIGJyaWRnZSB0byB1c2UgSlNDIEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIENoYW5nZWQgc2VtYW50aWNz
IG9mIHNvbWUgdGVzdCBleHBlY3RhdGlvbnMuIFNpbWlsYXJseSB0byByMTI1MDMyIHdoZW4gZ2Vu
ZXJhdGluZworICAgICAgICBlcnJvciBleGNlcHRpb25zIGZvciBjb25uZWN0L2Rpc2Nvbm5lY3Qs
IHdlIGNhbm5vdCBnZW5lcmF0ZSBleHBsaWNpdCB0eXBlIGVycm9yCisgICAgICAgIGV4Y2VwdGlv
bnMgYnV0IG9ubHkgZ2VuZXJpYyBlcnJvcnMuIEFub3RoZXIgY2hhbmdlIGlzIHRoYXQgdGhlIG1l
dGEtbWV0aG9kIHdyYXBwZXIKKyAgICAgICAgZG9lc24ndCBzdXBwb3J0IHRoZSBjYWxsKCkgdGhy
b3VnaCBGdW5jdGlvbi5wcm90b3R5cGUgYW55bW9yZS4gU2VlIFdlYkNvcmUgY2hhbmdlbG9nCisg
ICAgICAgIGZvciBkZXRhaWxzLgorCisgICAgICAgICogdGVzdHMvcW9iamVjdGJyaWRnZS90c3Rf
cW9iamVjdGJyaWRnZS5jcHA6CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6Y29ubmVjdEFu
ZERpc2Nvbm5lY3QpOgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6Om9iamVjdERlbGV0ZWQp
OgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmludHJvc3BlY3RRdE1ldGhvZHMpOgorCisy
MDEyLTA4LTEzICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CisKKyAgICAg
ICAgW1F0XSBBZGQgZ3Byb2YucHJmIHRvIGJ1aWxkIFdlYktpdCB3aXRoIGdwcm9mIGVuYWJsZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMjgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgKiB0ZXN0cy9NSU1F
U25pZmZpbmcvTUlNRVNuaWZmaW5nLnBybzoKKyAgICAgICAgRG9uJ3QgYnVpbGQgTUlNRVNuaWZm
aW5nLmNwcCBiZWNhdXNlIE1JTUVTbmlmZmluZyB0ZXN0IGxpbmtzCisgICAgICAgIFdlYktpdFF0
IHN0YXRpY2FsbHkgd2hlbiBncHJvZiBpcyBlbmFibGVkLgorCisyMDEyLTA4LTEyICBMb8OvYyBZ
aHVlbCAgPGxvaWMueWh1ZWxAc29mdGF0aG9tZS5jb20+CisKKyAgICAgICAgW1F0XSBNYWtlIGl0
IHBvc3NpYmxlIHRvIGJ1aWxkIHdpdGhvdXQgUXRUZXN0L1F0UHJpbnRTdXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6cHJpbnQpOiBEb2VzIG5vdGhpbmcgaWYgbm8gcHJp
bnRzdXBwb3J0CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3
OjpwcmludCk6IERvZXMgbm90aGluZyBpZiBubyBwcmludHN1cHBvcnQKKworMjAxMi0wOC0xMSAg
UGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciBIVE1MNSBzdGF0ZSBvYmplY3QgaGlzdG9yeSBBUEkgaW4gRnJhbWVMb2Fk
ZXJDbGllbnRRdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHVzaC9yZXBsYWNlL3BvcCBieSBpbXBsZW1l
bnRpbmcgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5QYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGlu
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50UXQpOgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViRnJhbWUpOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0VXJsVXNp
bmdTdGF0ZU9iamVjdCk6IEFkZGVkLiBUZXN0cyB0aGF0IHRoZSB1cmxDaGFuZ2VkIHNpZ25hbCBp
cyBmaXJlZC4KKworMjAxMi0wOC0xMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZW1vdmUgUVJlZ0V4cCA8PiBKUyBSZWdFeHAgY29u
dmVyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTM3MTYKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBSZW1vdmVkIHRlc3RzIHRoYXQgY292ZXIgdGhlIGF1dG9tYXRpYyBRUmVnRXhw
IDw+IEpTIFJlZ0V4cCBjb252ZXJzaW9uLiBTZWUgV2ViQ29yZQorICAgICAgICBDaGFuZ2VMb2cg
Zm9yIGRldGFpbHMuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0
YnJpZGdlLmNwcDoKKyAgICAgICAgKE15UU9iamVjdDo6ZW1pdE15U2lnbmFsV2l0aERhdGVUaW1l
QXJnKToKKyAgICAgICAgKE15UU9iamVjdCk6CisgICAgICAgICh0c3RfUU9iamVjdEJyaWRnZTo6
b3ZlcmxvYWRlZFNsb3RzKToKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjp0eXBlQ29udmVy
c2lvbik6CisKKzIwMTItMDgtMDkgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHN1cHBvcnQgZm9yIF9fcXRfc2VuZGVyX18g
aW4gUU9iamVjdCBicmlkZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkzNjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgU3VwcG9ydCBmb3IgX19xdF9zZW5kZXJfXyBoYXMgYWxzbyBi
ZWVuIHJlbW92ZWQgZnJvbSBRdFNjcmlwdC9RSlNFbmdpbmUuIFRoZSByaWdodAorICAgICAgICBK
YXZhU2NyaXB0IHNvbHV0aW9uIHRvIHRoZSBwcm9ibGVtIGlzIEZ1bmN0aW9uLnByb3RvdHlwZS5i
aW5kLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQ
cml2YXRlOjpkaWRDbGVhcldpbmRvd09iamVjdCk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9w
Lmg6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0
YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdl
Ojpjb25uZWN0QW5kRGlzY29ubmVjdCk6CisKKzIwMTItMDgtMDggIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gUG9ydCBpbnRlcm5hbCBm
aW5kTWV0aG9kSW5kZXggbWV0aG9kIG1hdGNoZXIgdG8gdXNlIEpTQyBDIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBBZGp1c3Qg
dGhlIGV4cGVjdGF0aW9ucyBvZiB0aGUgdW5pdCB0ZXN0IGZvciBzb21lIG9mIHRoZSBleGNlcHRp
b25zIHRoZQorICAgICAgICBtZXRob2QgdGhyb3dzIHdoZW4gc2lnbmFscy9zbG90cyBjYW5ub3Qg
YmUgZm91bmQvbWF0Y2hlZC4gVGhlIEMgQVBJIGRvZXNuJ3QgYWxsb3cKKyAgICAgICAgdXMgdG8g
Y3JlYXRlIHN5bnRheCAodHlwZSkgZXJyb3JzLCBvbmx5IGdlbmVyaWMgZXJyb3IgZXhjZXB0aW9u
cy4KKworICAgICAgICAqIHRlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3Bw
OgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmNhbGxRdEludm9rYWJsZSk6CisKKzIwMTIt
MDgtMDggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFtRdF0gQWRkIHVuaXQgdGVzdCBmb3IgUU9iamVjdCBiaW5kaW5ncyBmb3Igc2NyaXB0YWJs
ZSBwbHVnaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MzQ2MgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIFRoZSBiaW5kaW5ncyBjb2RlIGlzIHN1YmplY3QgdG8gcmVmYWN0b3Jpbmcg
aW4gdGhlIGZ1dHVyZSwgc28gYWRkZWQgYSB1bml0IHRlc3QgdG8gdmVyaWZ5IHRoYXQKKyAgICAg
ICAgYWNjZXNzaW5nIGFuIGVtYmVkZGVkIFFXaWRnZXQgZnJvbSBKYXZhU2NyaXB0IGdvZXMgdGhy
b3VnaCB0aGUgUU9iamVjdCBiaW5kaW5ncy4KKworICAgICAgICAqIHRlc3RzL3FvYmplY3Ricmlk
Z2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwOgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2UpOgor
ICAgICAgICAoVGVzdFBsdWdpbldpZGdldCk6CisgICAgICAgIChUZXN0UGx1Z2luV2lkZ2V0OjpU
ZXN0UGx1Z2luV2lkZ2V0KToKKyAgICAgICAgKFRlc3RQbHVnaW5XaWRnZXQ6OnNsb3RXaXRoUmV0
dXJuVmFsdWUpOgorICAgICAgICAoVGVzdFdlYlBhZ2UpOgorICAgICAgICAoVGVzdFdlYlBhZ2U6
OlRlc3RXZWJQYWdlKToKKyAgICAgICAgKFRlc3RXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorICAg
ICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OnNjcmlwdGFibGVQbHVnaW4pOgorCisyMDEyLTA4LTA3
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBV
bnJldmlld2VkIHRyaXZpYWwgZml4OiBNaXNzZWQgSEFWRV9RVDUgcmVtb3ZhbCBhcyBwYXJ0IG9m
IHIxMjQ4NzkKKworICAgICAgICBGaXhlcyBmYWlsaW5nIGF1dG8tdGVzdC4KKworICAgICAgICAq
IHRlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwOgorICAgICAgICAodHN0
X1FPYmplY3RCcmlkZ2U6OmVudW1lcmF0ZV9kYXRhKToKKworMjAxMi0wOC0wMiAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBSZW1vdmUg
UXQgNCBzcGVjaWZpYyBjb2RlIHBhdGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04ODE2MQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgor
ICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2NlbmVFdmVudCk6CisgICAgICAgICogQXBpL3Fn
cmFwaGljc3dlYnZpZXcuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKiBB
cGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OlFXZWJWaWV3KToKKyAgICAgICAg
KFFXZWJWaWV3OjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OnNldFRvb2xUaXApOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNs
aWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAg
KGNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0RGcm9tV2lkZ2V0KToKKyAgICAgICAgKFFX
ZWJQYWdlQ2xpZW50Ojpvd25lcldpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdFBsYXRmb3JtVG91
Y2hFdmVudDo6V2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBkZWNsYXJhdGl2
ZS9kZWNsYXJhdGl2ZS5wcm86CisgICAgICAgICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAg
ICAgICAgKiBkZWNsYXJhdGl2ZS9wdWJsaWMucHJpOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRm
b3JtcGx1Z2luL1dlYlBsdWdpbi5jcHA6CisgICAgICAgIChXZWJQbHVnaW46OmNyZWF0ZUV4dGVu
c2lvbik6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6Cisg
ICAgICAgIChXZWJQbHVnaW4pOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3Bs
YXRmb3JtcGx1Z2luLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2Jq
ZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjphcnJheU9iamVjdEVu
dW1lcmFibGUpOgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6Om93bmVyc2hpcCk6CisgICAg
ICAgICh0c3RfUU9iamVjdEJyaWRnZTo6cU9iamVjdFdyYXBwZXJXaXRoU2FtZUlkZW50aXR5KToK
KyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6CisgICAgICAgICogdGVzdHMvdXRpbC5oOgorCisy
MDEyLTA4LTAxICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgorCisgICAgICAgIFtR
dF1SRUdSRVNTSU9OKHIxMjM3ODYpOiBJdCBtYWRlIDMgZmFzdC9hbmltYXRpb24gdGVzdHMgZmFp
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDkw
CisKKyAgICAgICAgUUFic3RyYWN0QW5pbWF0aW9uOnN0YXJ0KCkgaXMgaW1wbGljaXRseSBjYWxs
aW5nIHVwZGF0ZVRpbWUKKyAgICAgICAgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBldmVudCBs
b29wLiBUaGlzIHJlc3VsdGVkIGluIGV4ZWN1dGluZworICAgICAgICBzY3JpcHRlZCBhbmltYXRp
b24gY2FsbGJhY2tzIHJpZ2h0IHdoZW4gcmVnaXN0ZXJpbmcgYSBmaXJzdCBjYWxsYmFjay4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZnJlc2hBbmlt
YXRpb246OnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgICAgIEludm9rZSBRQWJzdHJhY3RB
bmltYXRpb246OnN0YXJ0KCkgbWV0aG9kIHRocm91Z2ggdGhlIGV2ZW50IGxvb3AuCisKKzIwMTIt
MDctMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdW1dLMl0gUkVHUkVTU0lPTihyMTE5MTI3KTogcmVzZXR0aW5nIHdpbmRvdy5pbnRlcm5hbHMg
c2V0dGluZ3MgYmV0d2VlbiB0ZXN0cyBkb2Vzbid0IHdvcmsgcHJvcGVybHkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MDY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCisKKyAgICAgICAgQWRkIG1pc3NpbmcgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0
KSBmdW5jdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldEludGVy
bmFsc09iamVjdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuaDoKKworMjAxMi0wNy0yNiAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4K
KworICAgICAgICBVbnJldmlld2VkIFF0IGJ1aWxkZml4IGFmdGVyIHIxMjM3ODYuCisKKyAgICAg
ICAgUXQtbWluaW1hbCBidWlsZHMgd2l0aCBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUU9
MC4KKyAgICAgICAgVGhlcmVmb3JlIGFkZGluZyAjaWZkZWZzIHRvIGFsbG93IGZvciB0aGF0IGNv
bmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50UXQpOgorCisyMDEyLTA3LTI2ICBaZW5v
IEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gcmVxdWVzdEFuaW1h
dGlvbkZyYW1lIHNob3VsZCBvbmx5IHRyaWdnZXIgd2hlbiBhIG5ldyBmcmFtZSBjYW4gYmUgZGlz
cGxheWVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODg2MzgKKworICAgICAgICBEaXNhYmxlIFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSIGZv
ciB0aGUgUXQgcG9ydCBhbmQgdGllCisgICAgICAgIHRoZSBzZXJ2aWNpbmcgb2Ygc2NyaXB0ZWQg
YW5pbWF0aW9ucyB0byB0aGUgcmVuZGVyTmV4dEZyYW1lIGNhbGwgZm9yIFdLMi4KKyAgICAgICAg
Rm9yIFdLMSB3ZSByZWx5IG9uIHRoZSBSZWZyZXNoQW5pbWF0aW9uIHRoYXQgaXMgYmFzZWQgb24g
UUFic3RyYWN0QW5pbWF0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvY2VseW4gVHVyY290
dGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAg
ICAgIChSZWZyZXNoQW5pbWF0aW9uKToKKyAgICAgICAgICAgIEFkZCBhIFJlZnJlc2hBbmltYXRp
b24gdGhhdCBpcyBiYXNlZCBvbiBRQWJzdHJhY3RBbmltYXRpb24KKyAgICAgICAgICAgIGFuZCBk
cml2ZXMgdGhlIHNlcnZpY2luZyBvZiB0aGUgc2NyaXB0ZWQgYW5pbWF0aW9ucyBmb3IgV0sxLgor
ICAgICAgICAoV2ViQ29yZTo6UmVmcmVzaEFuaW1hdGlvbjo6UmVmcmVzaEFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWZyZXNoQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZWZyZXNoQW5pbWF0aW9uOjpzY2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgICAg
ICBTZXQgbV9hbmltYXRpb25TY2hlZHVsZWQgdG8gdHJ1ZSBhbmQgc3RhcnQgdGhlIGFuaW1hdGlv
bgorICAgICAgICAgICAgdGltZXIgaW4gY2FzZSBpdCBpcyBub3QgcnVubmluZyB5ZXQuCisgICAg
ICAgIChXZWJDb3JlOjpSZWZyZXNoQW5pbWF0aW9uOjp1cGRhdGVDdXJyZW50VGltZSk6CisgICAg
ICAgICAgICBDYWxsIHNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMgaWYgbV9hbmltYXRpb25TY2hl
ZHVsZWQgaXMgdHJ1ZS4KKyAgICAgICAgICAgIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCB0aGUg
YW5pbWF0aW9uIHRpbWVyIGNhbiBiZSBzdG9wcGVkLAorICAgICAgICAgICAgYmVjYXVzZSBubyBh
bmltYXRpb24gbmVlZHMgdG8gYmUgc2NoZWR1bGVkIGFueW1vcmUuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY2hlZHVsZUFuaW1hdGlvbik6
CisgICAgICAgICAgICBDcmVhdGUgYW5kIHN0YXJ0IHRoZSBSZWZyZXNoQW5pbWF0aW9uIGluc3Rh
bmNlIHdpdGggdGhlCisgICAgICAgICAgICBmaXJzdCBjYWxsIHRvIHNjaGVkdWxlQW5pbWF0aW9u
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudFF0KToKKworMjAxMi0wNy0yNiAgS2F1c3R1
YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbRFJUXSBM
VEM6OiBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5h
bHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMDkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBNb3ZlIHRoZSBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQgZnJvbSBMYXlvdXRUZXN0Q290cm9sbGVyIHRvIEludGVy
bmFscyBhbmQKKyAgICAgICAgcmVtb3ZlIHRoZSBvbGQgcGxhdGZvcm0gc3BlY2lmaWMgaW1wbGVt
ZW50YXRpb25zIGFzIGl0IGV4Y2x1c2l2ZWx5IHRlc3RzIFdlYkNvcmUgZnVuY3Rpb25hbGl0eS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisy
MDEyLTA3LTI0ICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAg
ICAgIFtRdF1bV0sxXSBjb2xvciBpbnB1dCB0eXBlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgVXNpbmcgUUNvbG9yRGlhbG9nLiBUaGlzIGlz
IHByaXZhdGUgZm9yIG5vdywgYnV0CisgICAgICAgIGl0IGNvdWxkIGJlIGV4cG9zZWQgdmlhIGEg
dmlydHVhbCBmdW5jdGlvbiBpbgorICAgICAgICBRV2ViUGFnZSBhdCBhIGxhdGVyIHBvaW50IGlu
IGEgUXQgNSBtaW5vciByZWxlYXNlCisgICAgICAgIGlmIHRoZXJlIGFyZSByZXF1ZXN0cyBmb3Ig
dGhhdC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OmNvbG9yU2VsZWN0aW9uUmVxdWVzdGVkKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Vf
cC5oOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKToKKworMjAxMi0wNy0yMyAgT3N3YWxkIEJ1ZGRlbmhhZ2VuICA8
b3N3YWxkLmJ1ZGRlbmhhZ2VuQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBjb21waWxh
dGlvbiBhZ2FpbnN0IG5hbWVzcGFjZWQgUXQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQu
aDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaDoKKworMjAx
Mi0wNy0yMyAgUGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKworICAgICAg
ICBVbmlmeSBudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkIGFuZCBuZWVkVG91Y2hFdmVudHMg
aW4gdGhlIGNocm9tZSBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgIFJlbW92ZSBudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkIHN0dWIuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDEyLTA3LTIzICBD
YWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgW1F0XSBSZW5kZXJUaGVtZVF0TW9iaWxlIGhpZ2hsaWdodCBjb2xvcnMg
YXJlIG5vdCBiZWluZyB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnNldFBhbGV0dGVGcm9tUGFnZUNsaWVudElm
RXhpc3RzKTogTW92ZWQgaGVyZSBzaW5jZQorICAgICAgICBpdCdzIHVzZWQgb25seSBieSBSZW5k
ZXJUaGVtZVFTdHlsZS4gUmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrIGZvciBtX3BhZ2UtPmNocm9t
ZSgpLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFT
dHlsZTo6Y29sb3JQYWxldHRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVt
ZVFTdHlsZS5oOgorICAgICAgICAoUmVuZGVyVGhlbWVRU3R5bGUpOgorCisyMDEyLTA3LTIyICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgRU5BQkxF
X01FVEVSX1RBRyBhbmQgRU5BQkxFX1BST0dSRVNTX1RBRyB0byBFTkFCTEVfTUVURVJfRUxFTUVO
VCBhbmQgRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQgcmVzcGVjdGl2ZWx5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTk0MQorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAgICBBIGZsYWcgbmFtZSBmb3IgYW4gZWxtZW1l
bnQgc2hvdWxkIGJlIEVOQUJMRV8qX0VMRU1FTlQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9SZW5kZXJUaGVtZVFTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5oOgorCisyMDEyLTA3LTE5ICBObydhbSBS
b3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBFbmFi
bGUgQ1NTIHNoYWRlcnMgaW4gUXQgKHNvZnR3YXJlIG1vZGUpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTE0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEVuYWJsZSBDU1MgU2hhZGVycyBpbiBzZXR0aW5n
cyB3aGVuIFdlYkdMIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKworMjAxMi0wNy0xOSAg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBSZW1vdmUgc3VwcG9ydCBmb3IgUXQgdmVyc2lvbnMgYmVmb3JlIDQuOC4wCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTczMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFJlbW92ZSBR
dCB2ZXJzaW9uIGNoZWNrICNpZmRlZnMgZm9yIFF0IHZlcnNpb25zIGJlZm9yZSA0LjguMC4KKwor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJp
dmF0ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OnRoaXJkUGFydHlDb29raWVQb2xpY3kpOgorICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dGhpcmRQYXJ0eUNv
b2tpZVBvbGljeUFsbG93cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3RzdF9x
ZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3
KToKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpiYWNrZ3JvdW5kQ29sb3IpOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxlbWVudC5jcHA6CisgICAgICAg
ICh0c3RfUVdlYkVsZW1lbnQ6OnJlbmRlcik6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZSk6CisgICAgICAgICh0c3RfUVdl
YlBhZ2U6OnRoaXJkUGFydHlDb29raWVQb2xpY3kpOgorCisyMDEyLTA3LTE3ICBHYWJvciBCYWxs
YWJhcyAgPGdhYm9yYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgW1F0XVtWOF0gUmVtb3Zl
IHRoZSBWOCByZWxhdGVkIGNvZGVwYXRocyBhbmQgY29uZmlndXJhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6
CisgICAgICAgIChzZXR1cFNjcmlwdENvbnRleHQpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmV2
YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChjb252ZXJ0V2ViRWxlbWVudFZhcmlhbnRUb0pT
VmFsdWUpOgorICAgICAgICAoUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpkaWRD
bGVhcldpbmRvd09iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRl
clRvR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2lu
ZG93T2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChjb252ZXJ0Tm9kZVZhcmlhbnRUb0pTVmFsdWUpOgorICAgICAgICAoUXREUlROb2RlUnVu
dGltZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6amF2
YVNjcmlwdE9iamVjdHNDb3VudCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3QpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRlcm5hbHNPYmplY3Qp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAg
KEZyYW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFkZXJzL3Y4
LWRlYnVnLmg6IFJlbW92ZWQuCisgICAgICAgICogdjgvRm9yd2FyZGluZ0hlYWRlcnMvdjgtcHJl
cGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogdjgvRm9yd2FyZGluZ0hlYWRlcnMvdjgtcHJv
ZmlsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92OC10ZXN0
aW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogdjgvRm9yd2FyZGluZ0hlYWRlcnMvdjguaDogUmVt
b3ZlZC4KKyAgICAgICAgKiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92OHN0ZGludC5oOiBSZW1vdmVk
LgorCisyMDEyLTA3LTE3ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgUmVmYWN0b3Jpbmcg
SW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQK
KyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoQW5kUmVwbGFjZVJlbW90ZUZy
b250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgor
ICAgICAgICAoSW5zcGVjdG9yQ2xpZW50UXQpOgorCisyMDEyLTA3LTE3ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTIyODM0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xMjI4MzQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkxNDkyCisKKyAgICAgICAgaXQgYnJva2UgdGhlIGNocm9taXVtIChSZXF1ZXN0ZWQgYnkga2ty
aXN0b2Ygb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAg
ICAgICAoc2V0dXBTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpldmFsdWF0
ZUphdmFTY3JpcHQpOgorICAgICAgICAoUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRl
OjpkaWRDbGVhcldpbmRvd09iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNj
cmlwdFdpbmRvd09iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3Bw
OgorICAgICAgICAoUXREUlROb2RlUnVudGltZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6amF2YVNjcmlwdE9iamVjdHNDb3VudCk6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3QpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRl
cm5hdGVUaHJlYWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV2YWx1YXRl
U2NyaXB0SW5Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjppbmplY3RJbnRlcm5hbHNPYmplY3QpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAoQmluZGluZ3MpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDcmVhdGVTY3JpcHRD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxSZWxl
YXNlU2NyaXB0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6YWxsb3dTY3Jp
cHRFeHRlbnNpb24pOgorICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFkZXJzL3Y4LWRlYnVnLmg6
IEFkZGVkLgorICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFkZXJzL3Y4LXByZXBhcnNlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92OC1wcm9maWxlci5oOiBBZGRl
ZC4KKyAgICAgICAgKiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92OC10ZXN0aW5nLmg6IEFkZGVkLgor
ICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFkZXJzL3Y4Lmg6IEFkZGVkLgorICAgICAgICAqIHY4
L0ZvcndhcmRpbmdIZWFkZXJzL3Y4c3RkaW50Lmg6IEFkZGVkLgorCisyMDEyLTA3LTE3ICBHYWJv
ciBCYWxsYWJhcyAgPGdhYm9yYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgW1F0XVtWOF0g
UmVtb3ZlIHRoZSBWOCByZWxhdGVkIGNvZGVwYXRocyBhbmQgY29uZmlndXJhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVu
dC5jcHA6CisgICAgICAgIChzZXR1cFNjcmlwdENvbnRleHQpOgorICAgICAgICAoUVdlYkVsZW1l
bnQ6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChjb252ZXJ0V2ViRWxlbWVudFZhcmlh
bnRUb0pTVmFsdWUpOgorICAgICAgICAoUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRl
OjpkaWRDbGVhcldpbmRvd09iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRR
dFNlbmRlclRvR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2Ny
aXB0V2luZG93T2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6
CisgICAgICAgIChjb252ZXJ0Tm9kZVZhcmlhbnRUb0pTVmFsdWUpOgorICAgICAgICAoUXREUlRO
b2RlUnVudGltZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6amF2YVNjcmlwdE9iamVjdHNDb3VudCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3QpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdv
cmxkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRlcm5hbHNP
YmplY3QpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0SW50ZXJuYWxz
T2JqZWN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAg
ICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFk
ZXJzL3Y4LWRlYnVnLmg6IFJlbW92ZWQuCisgICAgICAgICogdjgvRm9yd2FyZGluZ0hlYWRlcnMv
djgtcHJlcGFyc2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogdjgvRm9yd2FyZGluZ0hlYWRlcnMv
djgtcHJvZmlsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92
OC10ZXN0aW5nLmg6IFJlbW92ZWQuCisgICAgICAgICogdjgvRm9yd2FyZGluZ0hlYWRlcnMvdjgu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92OHN0ZGludC5oOiBS
ZW1vdmVkLgorCisyMDEyLTA3LTE2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5v
a2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBpbmNvbnNpc3RlbnQgRExMIGxpbmthZ2Ugb24g
V2luZG93cyB3aXRoIFdlYktpdDEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMzc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4K
KworICAgICAgICBFeHBvcnQgUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSBhcyByZXF1aXJlZCBmb3Ig
dGVzdHMuIFVuZm9ydHVuYXRlbHkgd2UgY2Fubm90IHVzZQorICAgICAgICBRX0FVVE9URVNUX0VY
UE9SVCBvdXRzaWRlIG9mIFF0LgorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5X3AuaDoKKwor
MjAxMi0wNy0xNiAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbUXRdIENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmcm9tIFFQaXhtYXAqIHRvIFFJbWFnZSoKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Nzg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgU2luY2Ugd2UgdXNl
IHJhc3RlciBlbmdpbmUgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIFFQaXhtYXAgYW5k
IFFJbWFnZSwgc28gd2UgYXJlIGdvaW5nCisgICAgICAgIHRvIHVzZSBRSW1hZ2UgZXZlcnl3aGVy
ZSB3aGVyZSBpdCBpcyBwb3NzaWJsZS4gVGhpcyByZWZhY3RvcmluZyBjb250YWlucyB0aGUgY2hh
bmdlIG9mIHRoZQorICAgICAgICBOYXRpdmVJbWFnZVB0ciB0eXBlZGVmIGZyb20gUVBpeG1hcCog
dG8gUUltYWdlKiBhbmQgY292ZXJzIHRoZSByZWxhdGVkIG1vZGlmaWNhdGlvbnMuCisKKyAgICAg
ICAgUGFydCBvZiB0aGUgY2hhbmdlIGlzIHNpbWlsYXIgdG8gVmlhdGNoZXNsYXYgT3N0YXBlbmtv
J3MgaW50ZXJuYWwgd29yay4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJo
aXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6aWNvbik6CisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6d2ViR3JhcGhpYyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6c3RhcnREcmFnKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmluaXRpYWxpemVXZWJDb3JlUXQpOgorCisyMDEyLTA3LTE2ICBGcmVkZXJpayBHbGFkaG9y
biAgPGZyZWRlcmlrLmdsYWRob3JuQG5va2lhLmNvbT4KKworICAgICAgICBBY2Nlc3NpYmxlIFdp
ZGdldCBmb3IgUVdlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMDczCisKKyAgICAgICAgQWRkZWQgY2xhc3NlcyB0aGF0IGFsbG93IG5hdmln
YXRpb24gdG8gdGhlIHdlYiB2aWV3IHdpZGdldC4KKyAgICAgICAgVGhpcyBpcyB0aGUgZ2x1ZSB0
byBsYXRlciBhY2Nlc3Mgd2Via2l0J3MgYWNjZXNzaWJsZSBvYmplY3RzCisgICAgICAgIHRob3Vn
aCB0aGUgUXQgYWNjZXNzaWJpbGl0eSBmcmFtZXdvcmsuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAo
UVdlYlZpZXc6OlFXZWJWaWV3KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNw
cDogQWRkZWQuCisgICAgICAgIChhY2Nlc3NpYmxlSW50ZXJmYWNlRmFjdG9yeSk6CisgICAgICAg
IChRV2ViRnJhbWVBY2Nlc3NpYmxlOjpRV2ViRnJhbWVBY2Nlc3NpYmxlKToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OmZyYW1lKToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6
OnBhcmVudCk6CisgICAgICAgIChRV2ViRnJhbWVBY2Nlc3NpYmxlOjp0ZXh0KToKKyAgICAgICAg
KFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxkQ291bnQpOgorICAgICAgICAoUVdlYkZyYW1lQWNj
ZXNzaWJsZTo6Y2hpbGQpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6aW5kZXhPZkNo
aWxkKToKKyAgICAgICAgKFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFX
ZWJGcmFtZUFjY2Vzc2libGU6OnJvbGUpOgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZTo6
bmF2aWdhdGUpOgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpRV2ViUGFnZUFjY2Vzc2li
bGUpOgorICAgICAgICAoUVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYWdlKToKKyAgICAgICAgKFFXZWJQ
YWdlQWNjZXNzaWJsZTo6dGV4dCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OnBhcmVu
dCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6OmNoaWxkKToKKyAgICAgICAgKFFXZWJQ
YWdlQWNjZXNzaWJsZTo6Y2hpbGRDb3VudCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6
OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChRV2ViUGFnZUFjY2Vzc2libGU6Om5hdmlnYXRlKToK
KyAgICAgICAgKFFXZWJQYWdlQWNjZXNzaWJsZTo6cm9sZSk6CisgICAgICAgIChRV2ViUGFnZUFj
Y2Vzc2libGU6OnN0YXRlKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6UVdlYlZpZXdB
Y2Nlc3NpYmxlKToKKyAgICAgICAgKFFXZWJWaWV3QWNjZXNzaWJsZTo6dmlldyk6CisgICAgICAg
IChRV2ViVmlld0FjY2Vzc2libGU6OmNoaWxkQ291bnQpOgorICAgICAgICAoUVdlYlZpZXdBY2Nl
c3NpYmxlOjpjaGlsZCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3YWNjZXNzaWJsZV9wLmg6IEFk
ZGVkLgorICAgICAgICAoUVdlYkZyYW1lQWNjZXNzaWJsZSk6CisgICAgICAgIChRV2ViUGFnZUFj
Y2Vzc2libGUpOgorICAgICAgICAoUVdlYlZpZXdBY2Nlc3NpYmxlKToKKworMjAxMi0wNy0xMiAg
SHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbUXRd
IEluY3JlYXNlIHRoZSBkcmF3aW5nIHBlcmZvcm1hbmNlIGJ5IG1lcmdpbmcgZGlydHkgcmVjdHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIFFXZWJGcmFt
ZVByaXZhdGUgY2FsbHMgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzIGFzIG1hbnkgYXMgdGhlIG51
bWJlciBvZiBkaXJ0eQorICAgICAgICByZWN0cywgc28gaXQgY2F1c2VzIHRvbyBtYW55IHJlZHVu
ZGFudCByZW5kZXIgdHJlZSB0cmF2ZXJzYWxzLgorICAgICAgICBJIGNoYW5nZWQgaXQgdG8gbWVy
Z2UgZGlydHkgcmVjdHMgYW5kIGNhbGwgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzIG9ubHkgb25j
ZS4KKyAgICAgICAgVGhlIGFsZ29yaXRobSB0byBtZXJnZSByZWN0cyBpcyBjb3BpZWQgZnJvbSBH
VEsuCisKKyAgICAgICAgV2hlbiBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycyBhcmUgaW4gdXNlLCBl
YWNoIGltYWdlIGlzIGluZGVwZW5kZW50bHkgcmVwYWludGVkCisgICAgICAgIHdoZW4gZGVjb2Rp
bmcgaXMgZmluaXNoZWQuIFRoaXMgY3JlYXRlcyBhIGxvdCBieSByZXBhaW50IHJlcXVlc3RzLiBT
byBieSBtZXJnaW5nCisgICAgICAgIHRoZXNlIHJlcGFpbnQgcmVxdWVzdHMsIEkgY291bGQgaW1w
cm92ZSByZW5kZXJpbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIEkgdGVz
dGVkIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzIG9uIHRoZSBsb2NhbGx5IG1pcnJvcmVkIFBpbnRl
cmVzdCBzaXRlLgorICAgICAgICBRV2ViRnJhbWVQcml2YXRlIGNhbGxlZCBGcmFtZVZpZXc6OnBh
aW50Q29udGVudHMgMTY1IHRpbWVzIGFmdGVyIHBhcmFsbGVsIGltYWdlCisgICAgICAgIGRlY29k
ZXJzIGRlY29kZWQgYWxsIHRoZSBpbWFnZXMuIEl0IHRvb2sgYWJvdXQgMTIwbXMgb24gbXkgc2l4
LWNvcmUgSW50ZWwgWGVvbiBtYWNoaW5lLgorICAgICAgICBUaGlzIHBhdGNoIGRlY3JlYXNlcyBw
YWludGluZyB0aW1lIGZyb20gMTIwbXMgdG8gMzBtcy4KKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoY29hbGVzY2VSZWN0c0lmUG9zc2libGUpOgorICAgICAgICAoUVdl
YkZyYW1lUHJpdmF0ZTo6cmVuZGVyUmVsYXRpdmVDb29yZHMpOgorCisyMDEyLTA3LTExICBTdGVm
ZmVuIEltaG9mICA8c3RlZmZlbi5pbWhvZkBiYXN5c2tvbS5jb20+CisKKyAgICAgICAgW1F0XSBN
aWRkbGUgY2xpY2tpbmcgYSBzY3JvbGxiYXIgY2F1c2VzIHRleHQgdG8gYmUgcGFzdGVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NDQKKworICAg
ICAgICBDaGVjayBpZiB0aGUgZXZlbnQgd2FzIGFscmVhZHkgYWNjZXB0ZWQgYmVmb3JlIGhhbmRs
aW5nIHRoZSBjbGlwYm9hcmQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
Ojptb3VzZVJlbGVhc2VFdmVudCk6CisKKzIwMTItMDctMTAgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBXZWJDb3JlOjpTZXR0aW5ncyBmb3IgSGl4aWU3NiBXZWJT
b2NrZXQgcHJvdG9jb2wgZG9lc24ndCBkbyBhbnl0aGluZyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEyLTA3
LTA5ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAg
ICAgU2hhcmVkIGNvZGUgdGhhdCBpcyBndWFyZGVkIHdpdGggRU5BQkxFKFdFQkdMKSBzaG91bGQg
YmUgZ3VhcmRlZCB3aXRoIFVTRSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDUwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNv
bi4KKworICAgICAgICBVcGRhdGVkIG5lY2Vzc2FyeSBwYXJ0cyBvZiBQYWdlQ2xpZW50UXQgdG8g
YmUgZ3VhcmRlZCB3aXRoIFVTRSgzRF9HUkFQSElDUykgaW5zdGVhZCBvZgorICAgICAgICBFTkFC
TEUoV0VCR0wpLiBUaGUgV2ViS2l0MSBnbHVlIHRvIFdlYkdMIHN0aWxsIHJlcXVpcmVzIHRoZSBR
dCBPcGVuR0wgbW9kdWxlLCBzbyBpdCdzCisgICAgICAgIGRpc2FibGUgaWYgUVRfT1BFTkdMX0xJ
QiBpcyBub3QgZGVmaW5lZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRR
dC5jcHA6CisgICAgICAgIChjcmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNERnJvbVdpZGdl
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xp
ZW50UXQuaDoKKyAgICAgICAgKFBhZ2VDbGllbnRRV2lkZ2V0KToKKyAgICAgICAgKFBhZ2VDbGll
bnRRR3JhcGhpY3NXaWRnZXQpOgorCisyMDEyLTA3LTA2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBCdWlsZGZpeCBmb3IgbmV3ZXIgUXQ1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDUxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOiBJbmNsdWRlIFF0R3VpL1FTdGFuZGFyZEl0
ZW1Nb2RlbCBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWQgUVN0YW5kYXJkSXRlbU1vZGVsLgorCisyMDEy
LTA3LTA2ICBPc3dhbGQgQnVkZGVuaGFnZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5Abm9raWEuY29t
PgorCisgICAgICAgIFtRdF0gQWRqdXN0IHRvIGNoYW5nZWQgZ2VuZXJhdGlvbiBvZiBtYXN0ZXIg
aW5jbHVkZSBmaWxlCisKKyAgICAgICAgVGhlIHJlc3BvbnNpYmxpdHkgZm9yIGNyZWF0aW5nIHRo
ZSBtYXN0ZXIgaW5jbHVkZSB3YXMgbW92ZWQgb3V0IG9mIHN5bmNxdC4KKyAgICAgICAgQGlnbm9y
ZV9mb3JfbWFzdGVyX2NvbnRlbnRzIHN0aWxsIHN0YXlzLCBhcyBzeW5jcXQgKGFiLSl1c2VzIHRo
aXMgZm9yCisgICAgICAgIGRldGVybWluaW5nIHdoZXRoZXIgYSBoZWFkZXIgaXMgcHJpdmF0ZS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0NjEK
KworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgICogQXBp
L3F3ZWJzY3JpcHR3b3JsZC5oOgorICAgICAgICAqIHRlc3RzL3V0aWwuaDoKKworMjAxMi0wNy0w
NCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAg
ICAgW1F0XSBHZXQgcmlkIG9mIHVuLW5lZWRlZCBRVCArPSBkZWNsYXJhdGl2ZSBmb3IgUXQgNQor
CisgICAgICAgIFRoZSBkZWNsYXJhdGl2ZSBtb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBxdWlj
azEgaW4gUXQgNSwgYW5kIHRoZQorICAgICAgICBlbmdpbmUtb25seSBtb2R1bGUgZm9yIFF0IDUg
aXMgbmFtZWQgJ3FtbCcuIEZvciBtYW55IG9mIHRoZSBpbnN0YW5jZXMKKyAgICAgICAgd2UgY291
bGQganVzdCByZW1vdmUgJ2RlY2xhcmF0aXZlJywgc2luY2UgdGhlIHByb2plY3QgZmlsZSB3YXMg
b25seQorICAgICAgICB1c2VkIGZvciBRdDUvV2ViS2l0MiBidWlsZHMuIEluIHRoZSBvdGhlciBj
YXNlcyB0aGUgbW9kdWxlIHdhcyB3cmFwcGVkCisgICAgICAgIGluIGEgaGF2ZVF0KDQpIHNjb3Bl
LgorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAq
IGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9leHBlcmltZW50YWwucHJpOgorICAgICAgICAqIGRl
Y2xhcmF0aXZlL3B1YmxpYy5wcmk6CisKKzIwMTItMDctMDMgIFRvciBBcm5lIFZlc3Riw7ggIDx0
b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gTWFrZSB1c2Ugb2YgLnFt
YWtlLmNhY2hlIGZvciBjYWNoaW5nIGZlYXR1cmVzCisKKyAgICAgICAgSW5zdGVhZCBvZiBsb2Fk
aW5nKCkgZmVhdHVyZXMgZnJvbSB0aGUgZmlsZXMgdGhhdCBuZWVkIHRoZW0gKGFuZCByZS1ydW5u
aW5nCisgICAgICAgIGEgYnVuY2ggb2YgY2hlY2tzKSwgd2Ugbm93IHJ1biBmZWF0dXJlIGRldGVj
dGlvbiBhcyBwYXJ0IG9mIGNvbmZpZ3VyZS5wcm8sCisgICAgICAgIGFuZCBoYXZlIGJ1aWxkLXdl
YmtpdCB3cml0ZSB0aGUgY29tcHV0ZWQgZmVhdHVyZS1kZWZpbmVzIGFuZCBDT05GSUcgdG8KKyAg
ICAgICAgLnFtYWtlLmNhY2hlLCB3aGljaCBpcyB0aGVuIGxvYWRlZCBieSBxbWFrZSBfYmVmb3Jl
XyBldmVuIGRlZmF1bHRzX3ByZQorICAgICAgICB3aGVuIGJ1aWxkaW5nIFdlYktpdC5wcm8uCisK
KyAgICAgICAgQXQgc29tZSBwb2ludCB3ZSdsbCBiZSBhYmxlIHRvIHNlbGVjdGl2bHkgcHJldmVu
dCBydW5uaW5nIG9mIGNvbmZpZyB0ZXN0cworICAgICAgICBpbiBjb25maWd1cmUucHJvLCB3aGlj
aCBtZWFucyB3ZSBkb24ndCBuZWVkIGEgc2VwYXJhdGUgY29kZS1wYXRoIGZvcgorICAgICAgICB0
aGUgYnVpbGQtd2Via2l0IC0taGVscCBjYXNlLgorCisgICAgICAgIFdlIHNob3VsZCBhbHNvIG1v
dmUgdGhlIGNvZGUgaW4gYnVpbGQtd2Via2l0IHRoYXQgbm93IHVzZXMgLndlYmtpdC5jb25maWcK
KyAgICAgICAgdG8gZGV0ZWN0IGNsZWFuIGJ1aWxkcywgdG8gdXNlIC5xbWFrZS5jYWNoZSwgc2lu
Y2Ugd2Ugbm93IHN0b3JlIHRoZSBzYW1lCisgICAgICAgIHRoaW5nIHRoZXJlLgorCisgICAgICAg
IE9yaWdpbmFsIHBhdGNoIGJ5IE9zd2FsZCBCdWRkZW5oYWdlbiA8b3N3YWxkLmJ1ZGRlbmhhZ2Vu
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisg
ICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOgorICAgICAgICAqIGRlY2xhcmF0
aXZlL3B1YmxpYy5wcmk6CisgICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9xZ3JhcGhp
Y3N3ZWJ2aWV3LnBybzoKKworMjAxMi0wNy0wMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMTc2
Ni4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTIxNzY2CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQ2NQorCisgICAg
ICAgIEl0IGNhdXNlZCBmbGFrZXkgYnVpbGQgZXJyb3JzIG9uIHRoZSBib3RzIChSZXF1ZXN0ZWQg
YnkgT3NzeQorICAgICAgICBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2Rl
Y2xhcmF0aXZlLnBybzoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wdWJsaWMucHJpOgorICAgICAg
ICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvcWdyYXBoaWNzd2Vidmlldy5wcm86CisKKzIwMTIt
MDctMDMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisg
ICAgICAgIFtRdF0gTWFrZSB1c2Ugb2YgLnFtYWtlLmNhY2hlIGZvciBjYWNoaW5nIGZlYXR1cmVz
CisKKyAgICAgICAgSW5zdGVhZCBvZiBsb2FkaW5nKCkgZmVhdHVyZXMgZnJvbSB0aGUgZmlsZXMg
dGhhdCBuZWVkIHRoZW0gKGFuZCByZS1ydW5uaW5nCisgICAgICAgIGEgYnVuY2ggb2YgY2hlY2tz
KSwgd2Ugbm93IHJ1biBmZWF0dXJlIGRldGVjdGlvbiBhcyBwYXJ0IG9mIGNvbmZpZ3VyZS5wcm8s
CisgICAgICAgIGFuZCBoYXZlIGJ1aWxkLXdlYmtpdCB3cml0ZSB0aGUgY29tcHV0ZWQgZmVhdHVy
ZS1kZWZpbmVzIGFuZCBDT05GSUcgdG8KKyAgICAgICAgLnFtYWtlLmNhY2hlLCB3aGljaCBpcyB0
aGVuIGxvYWRlZCBieSBxbWFrZSBfYmVmb3JlXyBldmVuIGRlZmF1bHRzX3ByZQorICAgICAgICB3
aGVuIGJ1aWxkaW5nIFdlYktpdC5wcm8uCisKKyAgICAgICAgQXQgc29tZSBwb2ludCB3ZSdsbCBi
ZSBhYmxlIHRvIHNlbGVjdGl2bHkgcHJldmVudCBydW5uaW5nIG9mIGNvbmZpZyB0ZXN0cworICAg
ICAgICBpbiBjb25maWd1cmUucHJvLCB3aGljaCBtZWFucyB3ZSBkb24ndCBuZWVkIGEgc2VwYXJh
dGUgY29kZS1wYXRoIGZvcgorICAgICAgICB0aGUgYnVpbGQtd2Via2l0IC0taGVscCBjYXNlLgor
CisgICAgICAgIFdlIHNob3VsZCBhbHNvIG1vdmUgdGhlIGNvZGUgaW4gYnVpbGQtd2Via2l0IHRo
YXQgbm93IHVzZXMgLndlYmtpdC5jb25maWcKKyAgICAgICAgdG8gZGV0ZWN0IGNsZWFuIGJ1aWxk
cywgdG8gdXNlIC5xbWFrZS5jYWNoZSwgc2luY2Ugd2Ugbm93IHN0b3JlIHRoZSBzYW1lCisgICAg
ICAgIHRoaW5nIHRoZXJlLgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGJ5IE9zd2FsZCBCdWRk
ZW5oYWdlbiA8b3N3YWxkLmJ1ZGRlbmhhZ2VuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRp
dmUucHJvOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3B1YmxpYy5wcmk6CisgICAgICAgICogdGVz
dHMvcWdyYXBoaWNzd2Vidmlldy9xZ3JhcGhpY3N3ZWJ2aWV3LnBybzoKKworMjAxMi0wNy0wMiAg
Tm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFtR
dF0gR2V0IHJpZCBvZiBHcmFwaGljc0xheWVyUXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTHVpeiBB
Z29zdGluaS4KKworICAgICAgICBSZW1vdmVkIGFsbCByZWZlcmVuY2VzIHRvIEdyYXBoaWNzTGF5
ZXJRdCwgaW5jbHVkaW5nICNpZmRlZiBjb2RlIHBhdGhzIHRoYXQgb25seSBhcHBseQorICAgICAg
ICB3aGVuIFRFWFRVUkVfTUFQUEVSIGlzIGRpc2FibGVkLgorCisgICAgICAgICogQXBpL3FncmFw
aGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFpbnQpOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6cmVu
ZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJl
bmRlclJlbGF0aXZlQ29vcmRzKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAg
ICAgKFFXZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgorICAgICAgICAoUVdlYkZy
YW1lUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFn
ZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNsaWVudFFHcmFwaGljc1dpZGdldDo6flBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6dXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnN5bmNMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6c2V0Um9vdEdyYXBoaWNz
TGF5ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6UGFnZUNs
aWVudFFXaWRnZXQpOgorICAgICAgICAoUGFnZUNsaWVudFFXaWRnZXQpOgorICAgICAgICAoUGFn
ZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKKzIwMTItMDctMDIgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRG8gbm90IGRvIGFueSBsb2dnaW5nIGlu
aXRpYWxpemF0aW9uIHdoZW4gbG9nZ2luZyBpcyBkaXNhYmxlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAyMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQpOgorCisyMDEyLTA2
LTI5ICBLb25yYWQgUGlhc2NpayAgPGtwaWFzY2lrQHJpbS5jb20+CisKKyAgICAgICAgRG9uJ3Qg
aGFyZGNvZGUgdGFyZ2V0IGRwaSBvZiAxNjAgKGl0IHNob3VsZCBiZSA5NiBvbiBkZXNrdG9wKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgxMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIGNh
bGwgdG8gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcy4KKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRBdHRyaWJ1dGVzRm9yU2l6ZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKworMjAxMi0w
Ni0yOCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtRdF0gaW5zcGVjdG9yL3N0eWxlcy9pbmplY3Qtc3R5bGVzaGVldC5odG1sIG1ha2VzIDQgdGVz
dHMgZmxha2V5IChURVhUIFBBU1MpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dv
bsOhYy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Lmg6CisKKzIwMTItMDYtMjggIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
KworICAgICAgICBbUXRdIFJlc3RvcmUgb3JpZ2luYWwgdmFsdWUgb2YgbW9jayBzY3JvbGxiYXJz
IGJldHdlZW4gdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisy
MDEyLTA2LTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgSlNMb2NrIHNob3VsZCBiZSBwZXItSlNHbG9iYWxEYXRhCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIENoYW5nZWQgYWxsIHNpdGVzIHRoYXQgdXNl
ZCBKU0xvY2sgdG8gaW5zdGVhZCB1c2UgdGhlIG5ldyBKU0xvY2tIb2xkZXIKKyAgICAgICAgYW5k
IHBhc3MgaW4gdGhlIGNvcnJlY3QgSlMgY29udGV4dCB0aGF0IHRoZSBjb2RlIGlzIGFib3V0IHRv
IGludGVyYWN0IHdpdGggdGhhdCAKKyAgICAgICAgbmVlZHMgcHJvdGVjdGlvbi4gQWxzbyBhZGRl
ZCBhIGNvdXBsZSBKU0xvY2tzIHRvIHBsYWNlcyB0aGF0IGRpZG4ndCBhbHJlYWR5IAorICAgICAg
ICBoYXZlIGl0IHRoYXQgbmVlZGVkIGl0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6
CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYmFsT2JqZWN0KToK
KyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldEludGVybmFsc09iamVjdCk6CisKKzIw
MTItMDYtMjcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisg
ICAgICAgIFtRdF0gRml4IGNvbXBpbGF0aW9uIG9mIGV4YW1wbGUgcGxhdGZvcm0gcGx1Z2luIHdp
dGggUXQgNQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFVzZSBRTGF0aW4xU3RyaW5nIHdoZXJlIGFwcHJvcHJpYXRlIGFuZCB1c2UgdGhlIFF0
IDUgcGx1Z2luCisgICAgICAgIHN5c3RlbSB3aXRoIFF0IDUuCisKKyAgICAgICAgKiBleGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwOgorICAgICAgICAoU2luZ2xlU2VsZWN0aW9u
UG9wdXA6OlNpbmdsZVNlbGVjdGlvblBvcHVwKToKKyAgICAgICAgKE11bHRpcGxlSXRlbUxpc3RE
ZWxlZ2F0ZTo6TXVsdGlwbGVJdGVtTGlzdERlbGVnYXRlKToKKyAgICAgICAgKE11bHRpcGxlU2Vs
ZWN0aW9uUG9wdXA6Ok11bHRpcGxlU2VsZWN0aW9uUG9wdXApOgorICAgICAgICAqIGV4YW1wbGVz
L3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oOgorICAgICAgICAoV2ViUGx1Z2luKToKKworMjAx
Mi0wNi0yNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtRdF0g
RW5hYmxlIGdyaWQgbGF5b3V0IExheW91dFRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJh
IE9zenRyb2dvbsOhYy4KKworICAgICAgICBUaGVzZSB0ZXN0cyBwYXNzLCB3ZSBqdXN0IG5lZWQg
dG8gaG9vayB1cCB0aGUgb3ZlcnJpZGVQcmVmZXJlbmNlLgorCisgICAgICAgICogQXBpL3F3ZWJz
ZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0
aW5ncy5oOiBBZGQgZW51bSB2YWx1ZSBmb3IgQ1NTIGdyaWQgbGF5b3V0CisKKzIwMTItMDYtMjUg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4OiBEb24ndCBkbyBRVCArPSB3aWRnZXRzIHdpdGggUXQgNAorCisg
ICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOgorCisy
MDEyLTA2LTIzICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIxMDU4LgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjEwNTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODA5CisKKyAgICAgICAgUGF0Y2ggY2F1c2VzIHBs
dWdpbnMgdGVzdHMgdG8gY3Jhc2ggaW4gR1RLIGRlYnVnIGJ1aWxkcworICAgICAgICAoUmVxdWVz
dGVkIGJ5IHpkb2JlcnNlayBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5kZXJUb0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluamVjdEludGVybmFsc09iamVjdCk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRJbnRlcm5hbHNPYmplY3QpOgor
CisyMDEyLTA2LTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNMb2NrIHNob3VsZCBiZSBwZXItSlNHbG9iYWxEYXRhCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTEyMworCisgICAgICAgIFJldmll
d2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgIENoYW5nZWQgYWxsIHNpdGVzIHRo
YXQgdXNlZCBKU0xvY2sgdG8gaW5zdGVhZCB1c2UgdGhlIG5ldyBKU0xvY2tIb2xkZXIKKyAgICAg
ICAgYW5kIHBhc3MgaW4gdGhlIGNvcnJlY3QgSlMgY29udGV4dCB0aGF0IHRoZSBjb2RlIGlzIGFi
b3V0IHRvIGludGVyYWN0IHdpdGggdGhhdCAKKyAgICAgICAgbmVlZHMgcHJvdGVjdGlvbi4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6
YWRkUXRTZW5kZXJUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2
YVNjcmlwdFdpbmRvd09iamVjdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omlu
amVjdEludGVybmFsc09iamVjdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
cmVzZXRJbnRlcm5hbHNPYmplY3QpOgorCisyMDEyLTA2LTIyICBBbXkgT3VzdGVyaG91dCAgPGFv
dXN0ZXJoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWVkIERldmljZU9yaWVudGF0aW9u
IHRvIERldmljZU9yaWVudGF0aW9uRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODg2NjMKKworICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9j
ay4KKworICAgICAgICBVcGRhdGVkIGZpbGVzIHRvIHVzZSB0aGUgcmVuYW1lZCBEZXZpY2VPcmll
bnRhdGlvbkRhdGEgaW5zdGVhZCBvZiBEZXZpY2VPcmllbnRhdGlvbi4KKyAgICAgICAgVGhpcyBj
aGFuZ2UgbWFrZXMgRGV2aWNlT3JpZW50YXRpb25EYXRhIGNvbnNpc3RlbnQgd2l0aCBEZXZpY2VN
b3Rpb25EYXRhLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgCisyMDEyLTA2LTIxICBUaGlhZ28gTWFy
Y29zIFAuIFNhbnRvcyAgPHRoaWFnby5zYW50b3NAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJd
W1F0XSBDb2xvciBjaG9vc2VyIEFQSSBtaXNzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzc0OQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEFkZGVkIENvbG9yQ2hvb3NlciBBUEkg
c3R1YiB0byBXZWJLaXQuIE90aGVyd2lzZQorICAgICAgICBpdCB3aWxsIGJyZWFrIHRoZSBidWls
ZCBmb3IgUXQgV2ViS2l0MiAodGhhdCBub3cgaGFzCisgICAgICAgIGNvbXBsZXRlIHN1cHBvcnQg
Zm9yIGNvbG9yIGNob29zZXIpIHdoZW4gSU5QVVRfVFlQRV9DT0xPUiBpcyBzZXQuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVDb2xvckNob29zZXIp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgIChD
aHJvbWVDbGllbnRRdCk6CisKKzIwMTItMDYtMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1
c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBidWlsZCBmaXgKKwor
ICAgICAgICBUaGUgcGxhdGZvcm0gcGx1Z2luIGV4YW1wbGUgdXNlcyBRR3JpZExheW91dCBhbmQg
dGh1cyBuZWVkcyBRVCArPSB3aWRnZXRzCisKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86CisKKzIwMTItMDYtMTkgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEJ1aWxkZml4IGZvciBuZXdlciBR
dDUsIHVzZSBRUG9pbnRlciBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkIFFXZWFrUG9pbnRlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NDQ5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lX3AuaDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgIChQYWdlQ2xpZW50UUdyYXBoaWNzV2lk
Z2V0KToKKworMjAxMi0wNi0xOSAgQWxiZXJ0IEFzdGFscyBDaWQgIDxhbGJlcnQuYXN0YWxzQGNh
bm9uaWNhbC5jb20+CisKKyAgICAgICAgW1F0XSBEb2N1bWVudCB0aGUgdmVyc2lvbnMgZW51bXMg
d2hlcmUgYWRkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NDUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisyMDEyLTA2LTE5ICBTZXJnaW8gVmlsbGFyIFNlbmlu
ICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIENhbGxpbmcgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBjYXVzZXMgYXNzZXJ0aW9uIGZhaWx1cmU6IG1fdmVyaWZpZXIuaXNTYWZl
VG9Vc2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njc1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KKworICAgICAgICBVc2Ug
c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTCgpIHRvIHJldHJpZXZlIGZhdmljb25zLgor
CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRl
bTo6aWNvbik6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6Omljb25Gb3JVcmwpOgorCisyMDEyLTA2LTE4ICBBbmRyYXMgQmVjc2kgIDxhbmRy
YXMuYmVjc2lAbm9raWEuY29tPgorCisgICAgICAgIFtRdF0gVXBkYXRlIFFNTCBwbHVnaW5zIHRv
IFF0IDUgc3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5MDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorCisg
ICAgICAgIFNpbmNlIHN1cHBvcnQgZm9yIFF0IDQgc3R5bGUgcGx1Z2lucyB3YXMgcmVtb3ZlZCBm
cm9tIFF0IDUKKyAgICAgICAgd2UgbmVlZCB0byB1cGRhdGUgb3VyIHBsdWdpbnMgdG8gdGhlIG5l
dyBzdHlsZSB0byBiZSBhYmxlCisgICAgICAgIHRvIGJ1aWxkIHdpdGggYSBtb3JlIHJlY2VudCBR
dCA1IGhhc2guCisgICAgICAgIEFkZCBlbXB0eSBwbHVnaW4gZGVzY3JpcHRpb24ganNvbiBmaWxl
cyBmb3Igbm93LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5j
cHA6CisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5qc29uOiBBZGRl
ZC4KKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1s
UGx1Z2luKToKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uanNvbjogQWRkZWQuCisKKzIw
MTItMDYtMTMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisg
ICAgICAgIFtRdF0gUmVtb3ZlIGRlcGVuZGVuY3kgdG8gUXRTY3JpcHQgZm9yIHRoZSBRdCA1IGJ1
aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODk5
MworCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFdoZW4gYnVpbGRpbmcgYWdhaW5zdCBRdCA1LCByZXBsYWNlIHRoZSB1c2Ugb2YgUVNj
cmlwdEVuZ2luZTo6VmFsdWVPd25lcnNoaXAgd2l0aAorICAgICAgICBhIChjb21wYXRpYmxlKSBR
V2ViRnJhbWU6OlZhbHVlT3duZXJzaGlwIGVudW0uCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKHF0U2VuZGVyQ2FsbGJhY2spOgorICAgICAgICAoUVdlYkZyYW1lOjph
ZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoK
KyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjphcnJheU9iamVjdEVudW1lcmFibGUpOgorICAgICAg
ICAodHN0X1FPYmplY3RCcmlkZ2U6Om93bmVyc2hpcCk6CisgICAgICAgICh0c3RfUU9iamVjdEJy
aWRnZTo6cU9iamVjdFdyYXBwZXJXaXRoU2FtZUlkZW50aXR5KToKKworCisyMDEyLTA2LTEyICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtNYWNd
IFVucmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjEyMDA3Ni4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1FUS2l0RnVsbFNjcmVlblZpZGVvSGFuZGxlci5oOgorCisyMDEyLTA2LTExICBLYXVz
dHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgorCisgICAgICAgIFtEUlRd
IExUQzo6IGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKCkgY291bGQgYmUgbW92ZWQgdG8gSW50
ZXJuYWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODQ0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgIE1v
dmUgdGhlIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkIGZyb20gTGF5b3V0VGVzdENvdHJvbGxl
ciB0byBJbnRlcm5hbHMgYW5kCisgICAgICAgIHJlbW92ZSB0aGUgb2xkIHBsYXRmb3JtIHNwZWNp
ZmljIGltcGxlbWVudGF0aW9ucyBhcyBpdCBleGNsdXNpdmVseSB0ZXN0cyBXZWJDb3JlIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaDoKKworMjAxMi0wNi0xMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFtRdF1bV2luXSBBZGQgbWlzc2luZyBpbmNsdWRlcyB0byBmaXggdGhlIGJ1
aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODUz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRRdC5jcHA6CisKKzIwMTIt
MDYtMDggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFVucmV2aWV3ZWQsIGZpeCBmaWxlIHBlcm1pc3Npb25zLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisKKzIwMTItMDYtMDcgIFpvbHRhbiBI
b3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBRdCBEUlQgc2hvdWxk
IGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VzIC0gY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1NjgKKworICAgICAgICBNYWtlIHRoaW5ncyBt
b3JlIHN0cmFpZ2hmb3J3YXJkIHRvIGxvYWQgZXh0ZXJuYWwgVVJMcyBpbiBEUlQuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisKKzIwMTItMDYtMDYgIFpvbHRhbiBI
b3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBRdCBEUlQgLyBXVFIg
c2hvdWxkIGJlIGFibGUgdG8gbG9hZCBleHRlcm5hbCByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzI2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICBBbGxvdyBleHRlcm5hbCByZXNvdXJjZXMg
dG8gYmUgbG9hZGVkIHdoZW4gdGhlIG1haW4gZnJhbWUncyBVUkwgaXMgYWxzbyBhbiBleHRlcm5h
bCByZXNvdXJjZS4KKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgYW5hbG9nb3VzIHRvIHIxMTgyMzEg
Zm9yIE1hYyBwb3J0IGFuZCB0byByMTE5MTUzIENocm9taXVtIHBvcnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJsb2NrUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
TG9jYWxob3N0KToKKyAgICAgICAgKFdlYkNvcmU6Omhvc3RJc1VzZWRCeVNvbWVUZXN0c1RvR2Vu
ZXJhdGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdCk6CisKKzIwMTItMDYtMDUgIE1heCBGZWlsICA8bWZlaWxAcmlt
LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQ29uZGl0aW9uYWxseSBlbmxhcmdlIEhUTUw1
IHZpZGVvIGNvbnRyb2xzIGluIGZ1bGxzY3JlZW4gbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1NTEKKworICAgICAgICBSZXZpZXdlZCBieSBB
bnRvbmlvIEdvbWVzLgorCisgICAgICAgIEFkZCBhIG5ldyBwYXJhbWV0ZXIgdG8gYWRqdXN0U2xp
ZGVyVGh1bWJTaXplKCkgZm9yIEJsYWNrQmVycnkKKyAgICAgICAgcG9ydC4gRml4aW5nIGNvbXBp
bGVzIG9mIG90aGVyIHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhl
bWVRU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmFkanVz
dFNsaWRlclRodW1iU2l6ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVR
U3R5bGUuaDoKKyAgICAgICAgKFJlbmRlclRoZW1lUVN0eWxlKToKKworMjAxMi0wNi0wNCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjExOTM4NC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTE5Mzg0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04ODIyNworCisgICAgICAgIE5lZWQgdG8gdXBkYXRlIHNvbWUgdGVzdHMsIEkn
bGwgcm9sbCBpbiBsYXRlci4gKFJlcXVlc3RlZCBieQorICAgICAgICBab2x0YW4gb24gI3dlYmtp
dCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KToKKworMjAxMi0wNi0wNCAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBbUXRdIFF0IERSVCAvIFdUUiBzaG91bGQgYmUgYWJsZSB0byBsb2FkIGV4
dGVybmFsIHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODczMjYKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgQWxsb3cgZXh0ZXJuYWwgcmVzb3VyY2VzIHRvIGJlIGxvYWRlZCB3aGVuIHRoZSBtYWlu
IGZyYW1lJ3MgVVJMIGlzIGFsc28gYW4gZXh0ZXJuYWwgcmVzb3VyY2UuCisgICAgICAgIFRoaXMg
Y2hhbmdlIGlzIGFuYWxvZ291cyB0byByMTE4MjMxIGZvciBNYWMgcG9ydCBhbmQgdG8gcjExOTE1
MyBDaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9ja1JlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjppc0xvY2FsaG9zdCk6CisgICAgICAgIChXZWJD
b3JlOjpob3N0SXNVc2VkQnlTb21lVGVzdHNUb0dlbmVyYXRlRXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorCisy
MDEyLTA2LTA0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIERvbid0IHVzZSBXZWJLaXQgSEFWRSgpIG1hY3JvIGluIHB1YmxpYyBR
dCBoZWFkZXJzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAqIEFwaS9x
d2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9x
d2Vidmlldy5oOgorCisyMDEyLTA2LTAyICBab2x0YW4gQXJ2YWkgIDx6YXJ2YWlAaW5mLnUtc3pl
Z2VkLmh1PgorCisgICAgICAgIFtRdF0gVXNlICdPaycgYW5kICdDYW5jZWwnIGJ1dHRvbnMgaW4g
SmF2YVNjcmlwdCBjb25maXJtIGJveC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc2MTkwCisgICAgICAgIEJhc2VkIG9uIEpvaGFubmVzIE9iZXJtYXly
cyAoam9oYW5uZXNvYmVybWF5ckBnbXguZGUpIHBhdGNoLgorICAgICAgICBTZWU6IGh0dHA6Ly93
d3cuamF2YXNjcmlwdGVyLm5ldC9mYXEvY29uZmlybS5odG0KKyAgICAgICAgRml4ZXM6IGh0dHBz
Oi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0yODc2MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdENvbmZpcm0pOgorCisyMDEyLTA2LTAxICBDYWlvIE1h
cmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgW1F0XSBGaXggUU9iamVjdCBicmlkZ2UgdGVzdHMgaW4gUXQ1IGFmdGVyIChub3Qg
c28pIHJlY2VudCBRVmFyaWFudCBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9z
ZW50aGFsLgorCisgICAgICAgIFdlIHdlcmUgY2hlY2tpbmcgZm9yIGludmFsaWQgUVZhcmlhbnRz
IGluIGEgdmVyeSBvZGQgd2F5LiBTaW5jZSBpbiBRdDUgdGhlCisgICAgICAgIHVzZXJUeXBlIG9m
IGludmFsaWQgY2hhbmdlZCB0byBub3QgYmUgVm9pZCwgdGhpcyBicm9rZSB0aGUgdGVzdHMgZm9y
IFF0V2ViS2l0CisgICAgICAgIHdpdGggUXQ1LiBSZXBsYWNlIHRob3NlIGNoZWNrcyB3aXRoIFFW
YXJpYW50Ojppc1ZhbGlkKCkgY2FsbHMuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdl
L3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoKKyAgICAgICAgKHRzdF9RT2JqZWN0QnJpZGdlOjpldmFs
SlMpOgorICAgICAgICAodHN0X1FPYmplY3RCcmlkZ2U6OmV2YWxKU1YpOgorCisyMDEyLTA2LTAx
ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgW1F0XSBNb3ZlIFFPYmplY3QgYnJpZGdlIHJlbGF0ZWQgdGVzdHMg
ZnJvbSB0c3RfcXdlYmZyYW1lIHRvIHRzdF9xb2JqZWN0YnJpZGdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODExNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIEZpdmUgdGVzdHMgKGNsYXNzRW51bXMsIGNs
YXNzQ29uc3RydWN0b3IsIHRyYW5zZmVySW52b2thYmxlLCBmaW5kT2JqZWN0IGFuZAorICAgICAg
ICBmaW5kQ2hpbGRyZW4pIHdlcmUgcmVtb3ZlZCBzaW5jZSB0aGV5IGNvbnRhaW5lZCBjb21tZW50
ZWQgY29kZSBzaW5jZSB0aGUgZmlsZSB3YXMKKyAgICAgICAgYWRkZWQgYmFjayBpbiAyMDA4LiBU
aGUgUU9iamVjdCBicmlkZ2UgdGVzdHMgd2VyZSBwcm9iYWJseSBpbnNwaXJlZCBpbiBzaW1pbGFy
CisgICAgICAgIHRlc3RzIGZvciBRdFNjcmlwdCwgc28gbWFueSBmZWF0dXJlcyBub3QgeWV0IGlt
cGxlbWVudGVkIHdlcmUgcHJlc2VudCBpbiBRdFdlYktpdAorICAgICAgICB0ZXN0cyBidXQgY29t
bWVudGVkLgorCisgICAgICAgIE90aGVyIG1pbm9yIGNoYW5nZXM6CisgICAgICAgIC0gTW92ZWQg
TXlFbnVtVGVzdFFPYmplY3QgbmVhciB0aGUgb25seSB0ZXN0IGZ1bmN0aW9uIHRoYXQgdXNlcyBp
dC4KKyAgICAgICAgLSBSZW1vdmVkIHVubmVjZXNzYXJ5IFFfSU5WT0tBQkxFIGZyb20gc2V0QnJ1
c2hQcm9wZXJ0eS4KKyAgICAgICAgLSBSZW1vdmVkIHNvbWUgYml0cyBvZiBkZWFkIC8gY29tbWVu
dGVkIGNvZGUuCisKKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3FvYmplY3RicmlkZ2Uu
cHJvOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJp
ZGdlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHAuCisgICAgICAgIEtlcHQgb25seSB0aGUgdGVzdHMgcmVsYXRlZCB0byBR
T2JqZWN0IGJyaWRnZSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUv
dHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICh0c3RfUVdlYkZyYW1lKToKKyAgICAgICAgKHRz
dF9RV2ViRnJhbWU6OmluaXQpOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6Y2xlYW51cCk6CisK
KzIwMTItMDYtMDEgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRl
bC5jb20+CisKKyAgICAgICAgW1F0XSBSZW1vdmUgZGVwcmVjYXRlZCB0by9mcm9tQXNjaWkoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgwODYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBSZXBsYWNpbmcg
dG8vZnJvbUFzY2lpIHdpdGggdG8vZnJvbUxhdGluMSBzaW5jZSBpdAorICAgICAgICBpcyBkZXBy
ZWNhdGVkIG9uIFF0NS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvclNlcnZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlclJl
cXVlc3RIYW5kbGVyUXQ6OnRjcFJlYWR5UmVhZCk6CisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0
aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUURl
Y2xhcmF0aXZlV2ViVmlldzo6c2V0dGluZ3MpOgorCisyMDEyLTA1LTMxICBIYWppbWUgTW9ycml0
YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjExNzU3Mik6
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbCBjcmFz
aGVzIG9uIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q2hlY2tlckNsaWVudFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKKzIwMTIt
MDUtMzEgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisg
ICAgICAgIFtRdF0gU2ltcGxpZnkgUVRfVkVSU0lPTl9DSEVDS1MgZm9yIFF0NSBieSBpbnRyb2R1
Y2luZyBIQVZFKFFUNSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg3OTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3FncmFwaGlj
c3dlYnZpZXcuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAq
IEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvR2VvbG9jYXRpb25DbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VD
bGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiB0ZXN0cy91dGlsLmg6CisK
KzIwMTItMDUtMjkgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgorCisgICAgICAgIFtRdF0gU3luYyB1cCBmYXZpY29uLWltcGxlbWVudGF0aW9uIHdpdGggV2Vi
VmlldyB1cmwgY2hhbmdlcyBpbiByMTE4MTU4CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MTMzCisKKyAgICAgICAgV2Ugbm93IGJhc2U2NC1lbmNv
ZGUgdGhlIHBhZ2UgdXJsIGluIHRoZSBpbWFnZS1wcm92aWRlciB1cmwsIHNvIHRoYXQgYW55Cisg
ICAgICAgIG5vcm1hbGl6YXRpb24gZG9uZSBieSBRVXJsIHdpbGwgbm90IG1lc3MgdXAgdGhlIHBh
Z2UtdXJsLiBUaGUgbG9naWMgb2YKKyAgICAgICAgY3JlYXRpbmcgYW5kIHBhcnNpbmcgdGhlIHBy
b3ZpZGVyLXVybCBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBpbWFnZQorICAgICAgICBwcm92aWRl
ciwgdG8ga2VlcCBpdCBpbiBvbmUgcGxhY2UuCisKKyAgICAgICAgV2Ugd2VyZSBhbHNvIHJlbGVh
c2luZyBpY29ucyAoZXZlbiBvbmVzIHdlIGhhZG4ndCByZXRhaW5lZCksIHdoaWNoIHdlIGNhbid0
CisgICAgICAgIGRvIHNpbmNlIHdlIGRvbid0IGtub3cgd2hlbiB0aGUgaWNvbiB1cmwgaXMgbm8g
bG9uZ2VyIGluIHVzZS4KKworICAgICAgICBSZXZpZXdlZC1ieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdpbi5jcHA6CisgICAgICAgICogZGVjbGFyYXRpdmUv
cHVibGljLnByaToKKworMjAxMi0wNS0yNSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3Vz
LnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyB0byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLnNldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFJlbW92
ZWQgdW5uZWVkZWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQgZnVuY3Rpb24gZnJvbSBE
UlQgYWZ0ZXIgaXRzCisgICAgICAgIG1vdmUgdG8gd2luZG93cy5pbnRlcm5hbHMuc2V0dGluZ3Mu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKwor
MjAxMi0wNS0yNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgW1F0XSBUcml2aWFsIHVucmV2aWV3ZWQgYnVpbGQgZml4IHdpdGggbmV3ZXIgUXQK
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNj
cmlwdFByb21wdCk6IERvbid0IHVzZSBkZXByZWNhdGVkIFFTdHJpbmcvUUNoYXIgZnVuY3Rpb25z
LgorCisyMDEyLTA1LTI0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAg
ICAgIGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCBhbmQgaW5zZXJ0QWRqYWNlbnRIVE1MIHNob3Vs
ZCB0aHJvdyBzeW50YXggZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg3NDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgUGFzcyBhbiBFeGNlcHRpb25Db2RlIHRvIGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVu
dC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVu
dDo6YXBwZW5kSW5zaWRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpwcmVwZW5kSW5zaWRlKToK
KyAgICAgICAgKFFXZWJFbGVtZW50OjpwcmVwZW5kT3V0c2lkZSk6CisgICAgICAgIChRV2ViRWxl
bWVudDo6YXBwZW5kT3V0c2lkZSk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZW5jbG9zZUNvbnRl
bnRzV2l0aCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgpOgorCisyMDEyLTA1
LTI1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0
XSBCdWlsZGZpeCBmb3IgbmV3ZXIgUXQ1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuaDogUXRXaWRnZXRzL3FpY29u
LmggLT4gUXRHdWkvcWljb24uaCByZW5hbWluZy4KKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6
IFF0V2lkZ2V0cy9xaWNvbi5oIC0+IFF0R3VpL3FpY29uLmggcmVuYW1pbmcuCisgICAgICAgICog
QXBpL3F3ZWJoaXN0b3J5Lmg6IFF0V2lkZ2V0cy9xaWNvbi5oIC0+IFF0R3VpL3FpY29uLmggcmVu
YW1pbmcuCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOiBRdFdpZGdldHMvcWljb24uaCAt
PiBRdEd1aS9xaWNvbi5oIHJlbmFtaW5nLgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOiBRdFdp
ZGdldHMvcWljb24uaCAtPiBRdEd1aS9xaWNvbi5oIHJlbmFtaW5nLgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOiBBZGp1c3QgUUNvcmVBcHBsaWNhdGlv
bjo6dHJhbnNsYXRlKCkgcGFyYW1ldGVyIGxpc3QgdG8gbmV3ZXIgUXQgNS4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93
TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpm
aWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgICogZGVjbGFyYXRpdmUv
ZXhwZXJpbWVudGFsL3BsdWdpbi5jcHA6IFFEZWNsYXJhdGl2ZUV4dGVuc2lvblBsdWdpbiAtPiBR
UW1sRXh0ZW5zaW9uUGx1Z2luIHJlbmFtaW5nLgorICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdp
bi5jcHA6IFFEZWNsYXJhdGl2ZUV4dGVuc2lvblBsdWdpbiAtPiBRUW1sRXh0ZW5zaW9uUGx1Z2lu
IHJlbmFtaW5nLgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luKToKKworMjAxMi0wNS0yNCAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBUaGVyZSBhcmUgdG9vIG1h
bnkgcG9vcmx5IG5hbWVkIGZ1bmN0aW9ucyB0byBjcmVhdGUgYSBmcmFnbWVudCBmcm9tIG1hcmt1
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODczMzkK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBSZXBsYWNlIGNh
bGxzIHRvIFJhbmdlOjpjcmVhdGVEb2N1bWVudEZyYWdtZW50Rm9yRWxlbWVudCBieSBjYWxscyB0
bworICAgICAgICBjcmVhdGVDb250ZXh0dWFsRG9jdW1lbnRGcmFnbWVudC4KKworICAgICAgICAq
IEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6YXBwZW5kSW5zaWRl
KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpwcmVwZW5kSW5zaWRlKToKKyAgICAgICAgKFFXZWJF
bGVtZW50OjpwcmVwZW5kT3V0c2lkZSk6CisgICAgICAgIChRV2ViRWxlbWVudDo6YXBwZW5kT3V0
c2lkZSk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZW5jbG9zZUNvbnRlbnRzV2l0aCk6CisgICAg
ICAgIChRV2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgpOgorCisyMDEyLTA1LTI0ICBHYWJvciBCYWxs
YWJhcyAgPGdhYm9yYkBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgW1F0XSAgRml4IFdlYmtp
dDEgKyBWOCBidWlsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg3MzY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQp
OgorCisyMDEyLTA1LTI0ICBTdGVmZmVuIEltaG9mICA8c3RlZmZlbi5pbWhvZkBiYXN5c2tvbS5j
b20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
MDkzCisgICAgICAgIFtRdF0gRGVmYXVsdCB3aW5kb3cuYWxlcnQgc2hvd3MgSFRNTCBlbnRpdGll
cyBpbiBjZXJ0YWluIGNhc2VzCisKKyAgICAgICAgSW5zdGVhZCBvZiBIVE1MIGVzY2FwaW5nIHRo
ZSB0ZXh0IG9mIEpTIGFsZXJ0cyAod2hpY2ggZG9lcyBub3Qgd29yaworICAgICAgICBjb25zaXN0
ZW50bHkgYmVjYXVzZSBvZiBRdCdzIGF1dG9tYXRpc21zKSwgYnVpbGQgbWVzc2FnZSBib3hlcwor
ICAgICAgICBleHBsaWNpdGx5IHRvIGJlIGFibGUgc2V0IHRoZSB0ZXh0IGZvcm1hdCB0byBwbGFp
biB0ZXh0LgorICAgICAgICBRSW5wdXREaWFsb2cgaXMgYSBiaXQgaGFja3ksIGJlY2F1c2UgdGhl
cmUgaXMgbm8gd2F5IHRvIGFjY2VzcyBvcgorICAgICAgICBjb250cm9sIHRoZSBjb250YWluZWQg
UUxhYmVsLgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQp
OgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFFXZWJQ
YWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKworMjAxMi0wNS0yMSAgQ2FpbyBNYXJjZWxvIGRlIE9s
aXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIE1v
dmUgc2V0RWRpdGluZ0JlaGF2aW9yKCkgZnJvbSBsYXlvdXRUZXN0Q29udHJvbGxlciB0byB3aW5k
b3cuaW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEgYW5kIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldFdpbmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2aW9yKTogUmVkdWNlIHRoZSBqb2IKKyAg
ICAgICAgZG9uZSBieSB0aGlzIGZ1bmN0aW9uIHRvIHRoZSBtaW5pbWFsLgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTItMDUtMTggIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NTE1CisgICAgICAgIFN0YWxlIGZyYW1lIGlu
IFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmZyYW1lV2lsbERl
dGFjaFBhZ2UpOgorCisyMDEyLTA1LTE3ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gTW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2Rl
IGluIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbiB0byB0aGUgV2ViS2l0IGxheWVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjU5MQor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBhZGRzIGEgVGV4dENoZWNrZXJDbGllbnQ6OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdl
U2VsZWN0aW9uCisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBj
b2RlIGZyb20gRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGZ1bmN0
aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudFF0OjpzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNo
YW5nZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0Lmg6CisgICAgICAgIChUZXh0Q2hlY2tlckNsaWVudFF0
KToKKworMjAxMi0wNS0xNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAg
ICAgIFJFR1JFU1NJT04gKHIxMTc0MjgpOiBXZWJLaXQgQVBJL1NQSSB3YXMgcmVtb3ZlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3NDgKKworICAg
ICAgICBSZXZlcnRlZCByMTE3NDI4LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTItMDUtMTcgIFRz
YXJrbyBZYXJvc2xhdiAgPGVyaWt0c2Fya29AZ29vZ2xlbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KKworICAgICAgICBCdWcgNzEyNzE6IFtRdF0gV2Vi
IEluc3BlY3RvcjogbG9jYWwgaW5zcGVjdG9yIGNsaWVudCBVSSBiZWNvbWVzIHVucmVzcG9uc2l2
ZSBvbiBkZWJ1Z2dlciBwYXVzZSBkdXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMjcxCisKKyAgICAgICAgV2ViIEluc3BlY3RvciBzaG91bGQg
bm90IGJlbG9uZyB0byBhbnkgb3RoZXIgcGFnZSBncm91cHMgc2luY2UgaXQgaXMgYSBzcGVjaWFs
aXplZCBkZWJ1Z2dlciB3aW5kb3cuCisgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgY2hhbmdl
IGlzIHdoZW4gZGVidWdnZXIgcGF1c2VzIHdlYiBwYWdlIGl0IHBhdXNlcyBhbGwgdGhlIHBhZ2Vz
IGluIHRoZSBwYWdlIGdyb3VwIG9mIGRlYnVnZ2VlLgorICAgICAgICBUaGlzIGxlYWRzIHRoYXQg
V2ViIEluc3BlY3RvciBmcm9udC1lbmQgaXMgcGF1c2VkIHRvbyBsZWFkaW5nIHRvIGxvY2tlZCBX
ZWIgSW5zcGVjdG9yIEdVSSAoYnVnemlsbGEgdGlja2V0IDcxMjcxKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorCisyMDEyLTA1LTE3ICBH
eXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29udmVy
dCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lIHRvIHVzZSBJbnRlcm5h
bFNldHRpbmdzIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODY3MDQKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKwor
ICAgICAgICBSZW1vdmUgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSBm
dW5jdGlvbnMsIGJlY2F1c2UgaXQgaXMgYWJsZSB0byB3b3JrIGluIHRoZQorICAgICAgICBjcm9z
cy1wb3J0IHdheSB0aHJvdWdoIHRoZSBJbnRlcm5hbFNldHRpbmdzIGludGVyZmFjZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEyLTA1
LTE1ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBbUXRdIEFkZCBpbmZyYSBmb3IgdGVzdGluZyBkb3VibGUtdGFwIHRvIHpvb20gZnVu
Y3Rpb25hbGl0eSBldGMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg2NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgVGhlIFdlYlZpZXdwb3J0SW5mbyBjbGFzcyB3YXMgcmVuYW1lZCB0byBRV2ViS2l0VGVz
dCBpbiBwcmVwYXJhdGlvbgorICAgICAgICBvZiBiZWNvbWluZyBhIHNlcGFyYXRlIG1vZHVsZS4g
QWRhcHQgdGhlIHVzZSBBUEkuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50YWwv
cGx1Z2luLmNwcDoKKworMjAxMi0wNS0xMCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNh
bXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgcmVzdW1lQW5pbWF0aW9ucyB0byB1c2UgSW50ZXJu
YWxzIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODYwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292Lgor
CisgICAgICAgIFJlbW92ZSByZXN1bWVBbmltYXRpb25zIGZ1bmN0aW9ucywgYmVjYXVzZSBpdCBp
cyBhYmxlIHRvIHdvcmsgaW4gdGhlIAorICAgICAgICBjcm9zcy1wb3J0IHdheSB0aHJvdWdoIHRo
ZSBJbnRlcm5hbHMgaW50ZXJmYWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTItMDUtMTAgIE1hcml1cyBTdG9ybS1PbHNlbiAgPG1h
cml1cy5zdG9ybS1vbHNlbkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBGaXggXHNhIHVzYWdl
IGluIGRvY3VtZW50YXRpb24KKworICAgICAgICBFbnN1cmUgY29tbWEgYmV0d2VlbiBlbGVtZW50
cyAoNiBtaXNzaW5nKS4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4Lgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAxMi0wNS0wOSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE1vdmUgc3VzcGVuZEFuaW1h
dGlvbnMgdG8gdXNlIEludGVybmFscyBpbnRlcmZhY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KKworICAgICAgICBSZW1vdmUgc3VzcGVuZEFuaW1hdGlvbnMgZnVuY3Rpb25z
LCBiZWNhdXNlIGl0IGlzIGFibGUgdG8gd29yayBpbiB0aGUgCisgICAgICAgIGNyb3NzLXBvcnQg
d2F5IHRocm91Z2ggdGhlIEludGVybmFscyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMi0wNS0wOCAgQmFsYXpzIEtl
bGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBYMTEgcGx1Z2lucyBu
ZWVkIHRvIGJlIHJld29ya2VkIGZvciBRdDUrV0sxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgQnVpbGQgZml4
IGZvciBRdDUuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4p
OgorICAgICAgICBJbmplY3QgdGhlIHdtb2RlIHBhcmFtZXRlciBmb3IgZmxhc2ggc28gaXQgd2ls
bAorICAgICAgICB3b3JrIGluIHdpbmRvd2xlc3MsIG5vbi10cmFuc3BhcmVudCBtb2RlIHdoaWNo
CisgICAgICAgIGlzIHRoZSBvbmx5IG9uZSB3ZSBzdXBwb3J0IGN1cnJlbnRseS4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpRV2ViUGFnZUNsaWVudDo6b3duZXJXaW5kb3cpOgorICAgICAgICBB
ZGRlZCBhIGdldHRlciBmb3IgdGhlIHRvcCBsZXZlbCB3aW5kb3cgc28gdGhlIFBsdWdpblZpZXcK
KyAgICAgICAgY2FuIGdldCBpdCB3aXRob3V0IGNhbGxpbmcgaW50byBRdFdpZGdldHMgY29kZS4K
KworMjAxMi0wNS0wNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgor
CisgICAgICAgIENvbnZlcnQgaXNQYWdlQm94VmlzaWJsZSB0byB1c2UgSW50ZXJuYWxzIGludGVy
ZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1
NjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVtb3Zl
IGlzUGFnZUJveFZpc2libGUgZnVuY3Rpb25zLCBiZWNhdXNlIGl0IGlzIGFibGUgdG8gd29yayBp
biB0aGUKKyAgICAgICAgY3Jvc3MtcG9ydCB3YXkgdGhyb3VnaCB0aGUgSW50ZXJuYWxzIGludGVy
ZmFjZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorCisyMDEyLTA1LTA0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgRG9uJ3QgcmVxdWlyZSBGcmFtZUxvYWRlckNsaWVudCB0byBtYW51ZmFjdHVyZSBhIGNv
bW1pdERhdGEoKSBjYWxsIGZvciBlbXB0eSBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUzMworCisgICAgICAgIFJldmlld2VkIGJ5
IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OkZyYW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6Om1ha2VSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUpOgorICAgICAg
ICAoRnJhbWVMb2FkZXJDbGllbnRRdCk6CisKKzIwMTItMDUtMDMgIEZhZHkgU2FtdWVsICA8ZnNh
bXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21wdXRlVmll
d3BvcnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3RvciB0byBu
ZXZlciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0QXR0cmlidXRlc0ZvclNpemUpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Ojp2aWV3cG9ydEFzVGV4dCk6CisKKzIwMTItMDQtMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUu
Y29tPgorCisgICAgICAgIE1pZ3JhdGUgcGVybWlzc2lvbiBmdW5jdGlvbnMgdG8gTm90aWZpY2F0
aW9uIGZyb20gTm90aWZpY2F0aW9uQ2VudGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA5NjU0
NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6CisgICAgICAgIChOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdCk6IEFkZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIHJlcXVl
c3RQZXJtaXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKworMjAxMi0wNS0wMiAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjExNTkwNy4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTE1OTA3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTQ1OAorCisgICAgICAgIEl0IGJyb2tlIGFsbCB2aWV3cG9ydCB0ZXN0cyBvbiBRdCBhbmQgb24g
R1RLIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgT3NzeSBvbiAjd2Via2l0KS4KKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRBdHRyaWJ1dGVz
Rm9yU2l6ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKworMjAxMi0wNC0xOCAgSm9uIEhvbmV5Y3V0
dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoKSBzaG91bGQgYmUgZ2l2ZW4gbW9yZQorICAgICAg
ICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybSBiZWluZyBzdWJtaXR0ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mjk3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCk6CisgICAgICAgIFVwZGF0ZWQgbWV0aG9kIGRlY2xh
cmF0aW9uLgorCisyMDEyLTA1LTAyICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJlbW92aW5nIGxpbmUgaW4gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyB0
aGF0IGVuZm9yY2VzIGEgbWluaW11bSBzY2FsZSBmYWN0b3IgdG8gbmV2ZXIgYWxsb3cgem9vbWlu
ZyBvdXQgbW9yZSB0aGFuIHZpZXdwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MDYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKworMjAxMi0wNS0wMiAgTWls
aWFuIFdvbGZmICA8bWlsaWFuLndvbGZmQGtkYWIuY29tPgorCisgICAgICAgIFtRdF0gUGFzcyBw
YWdlLWhlaWdodCB0byBQcmludENvbnRleHQ6OmJlZ2luIHRvIGZpeCBwcmludCBsYXlvdXRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0ODY0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6cHJpbnQpOgorCisyMDEyLTA1LTAyICBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbUXRdIEFkZCBpbml0aWFsIFFNTCBkb2N1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTM3MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgICogZG9jcy9xdHdlYmtpdC5xZG9jY29uZjogQWRk
IFdlYktpdDIgZGlycy4KKworMjAxMi0wNS0wMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gQnVpbGRmaXggYWZ0ZXIgcjExNTgxMiBmb3IgIUVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pIGJ1aWxkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
CisyMDEyLTA0LTI3ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEu
Y29tPgorCisgICAgICAgIE1vdmUgV2ViS2l0MSBzcGVjaWZpYyBjb252ZXJzaW9uIG9mIHRvdWNo
LWV2ZW50cyB0byBXZWJLaXQxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDk1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgorCisgICAgICAgIEZpeCBjb21waWxlIHdoZW4gdG91Y2gtZXZlbnRzIGFyZSBk
aXNhYmxlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFdmVu
dENvbnZlcnNpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCisyMDEyLTA0LTI2ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIE1vdmUg
V2ViS2l0MSBzcGVjaWZpYyBjb252ZXJzaW9uIG9mIHRvdWNoLWV2ZW50cyB0byBXZWJLaXQxLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ5NTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnRvdWNoRXZl
bnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0UGxhdGZv
cm1Ub3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdFBsYXRmb3JtVG91Y2hFdmVu
dDo6V2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdFBs
YXRmb3JtVG91Y2hQb2ludDo6V2ViS2l0UGxhdGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
dmVudENvbnZlcnNpb24uaDoKKworMjAxMi0wNC0yNSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5t
ZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW5hbWUgQ1NTU3R5bGVTZWxlY3RvciBm
aWxlcyB0byBTdHlsZVJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQ4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBSZW5hbWUgQ1NTU3R5bGVTZWxlY3RvciBmaWxlcyB0byBtYXRjaCB0aGUg
bmV3IGNsYXNzIG5hbWUgU3R5bGVSZXNvbHZlci4KKyAgICAgICAgVXBkYXRlIHRoZSBpbmNsdWRl
cyBhbGwgb3ZlciB0aGUgY29kZSBiYXNlIHRvIHRoZSBuZXcgbmFtZS4KKworICAgICAgICAqIEFw
aS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVR
U3R5bGUuY3BwOgorCisyMDEyLTA0LTI1ICBNaWxpYW4gV29sZmYgIDxtaWxpYW4ud29sZmZAa2Rh
Yi5jb20+CisKKyAgICAgICAgW1F0XSBhZGQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFByaW50
aW5nIHN1cHBvcnQgdG8gUXQgdW5pdCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZy
YW1lOjpwYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGFpbnRQYWdlc1dpdGhCb3VuZGFy
aWVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorCisyMDEyLTA0LTI0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFJlcGxhY2Ugb2NjdXJlbmNlcyBvZiBzdHlsZSBzZWxlY3RvciBmcm9t
IHZhcmlhYmxlcyBhbmQgbWV0aG9kcyBuYW1lcyBieSBzdHlsZSByZXNvbHZlci4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NzY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBSZW5hbWUgbWV0aG9kcyBhbmQg
dmFyaWFibGVzIHRvIGZvbGxvdyB0aGUgbmV3IG5hbWUgU3R5bGVSZXNvbHZlci4gSXQgcmVxdWly
ZXMgdG8gdXBkYXRlIHRoZQorICAgICAgICBsb2NhbCB2YXJpYWJsZXMsIG1ldGhvZHMgcGFyYW1l
dGVycywgYW5kIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIHRoZSBuZXcgbmFtZSBhbmQgdG8gcmVt
b3ZlCisgICAgICAgIHRoZSBjb25jZXB0IG9mICJzZWxlY3RvciIgdG8gYXZvaWQgY2xhc2hpbmcg
d2l0aCB0aGUgQ1NTIGNvbmNlcHQuIFRoZSBuZXh0IGFuZCBsYXN0IHBhdGNoCisgICAgICAgIHdp
bGwgYmUgdG8gcmVuYW1lIENTU1N0eWxlU2VsZWN0b3IgZmlsZSBhbmQgdXBkYXRlIHRoZSBpbmNs
dWRlcy4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxl
bWVudDo6c3R5bGVQcm9wZXJ0eSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNl
dE1lZGlhVHlwZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdEJ1dHRvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RUZXh0QXJl
YVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RNZW51
TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjph
ZGp1c3RTbGlkZXJUaHVtYlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0
eWxlOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0
eWxlKToKKworMjAxMi0wNC0yNCAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZW5hbWUgQ1NTU3R5bGVTZWxlY3RvciBjbGFzcyB0byBTdHls
ZVJlc29sdmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ3MzQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFRoZSBuYW1lIENTU1N0eWxlU2VsZWN0b3IgaXMgY29uZnVzaW5nIGFzIGl0IGNvbmZsaWN0cyBh
IGJpdCB3aXRoCisgICAgICAgIHRoZSBDU1MgY29uY2VwdCBvZiBzZWxlY3RvcnMuIE9uZSBjb3Vs
ZCB0aGluayBpdCdzIGFuIGVuY2Fwc3VsYXRpb24KKyAgICAgICAgb2YgdGhlIENTUyBzZWxlY3Rv
cnMgYnV0IGl0J3Mgbm90LCBpbiBmYWN0IHRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUKKyAgICAg
ICAgb2YgZmluZGluZyB0aGUgUmVuZGVyU3R5bGUgZm9yIGEgZ2l2ZW4gZWxlbWVudC4gVGhpcyBp
cyB0aGUgZmlyc3QgcGF0Y2gKKyAgICAgICAgYXMgSSB3aWxsIGxhdGVyIHJlbmFtZSB0aGUgZmls
ZXMsIGFuZCB0aGVuIHJlbmFtZSB0aGUgbG9jYWwgdmFyaWFibGVzLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVRU3R5bGU6OmFkanVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lUVN0eWxlOjphZGp1c3RUZXh0QXJlYVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1c3RTZWFyY2hGaWVs
ZERlY29yYXRpb25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5oOgorICAgICAgICAoUmVuZGVyVGhlbWVRU3R5
bGUpOgorCisyMDEyLTA0LTI0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIE1vdmUgbm90aWZpY2F0aW9uIGljb24gZG93bmxvYWQgb3V0IG9mIFdl
YkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
NzAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUmVt
b3ZlIHRoZSBjb2RlIHRoYXQgaGFuZGxlcyB0aGUgbm90aWZpY2F0aW9uJ3MgaWNvbiBhbmQgdXNl
IHRoZSBpY29uIHVybCBpbnN0ZWFkLgorICAgICAgICBUaGUgImRpc3BsYXkiIGV2ZW50IGhhcyB0
byBiZSBhc3luY2hyb25vdXMsIHNvIGEgdGltZXIgd2FzIGFkZGVkIHRvIGFjaGlldmUgdGhhdC4K
KyAgICAgICAgVGhlIHBsYXRmb3JtIHBsdWdpbiBBUEkgYW5kIGV4YW1wbGUgd2VyZSB1cGRhdGVk
IHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UuCisgICAgICAgIFRoaXMgY2hhbmdlIGRvZXMgbm90IGFk
ZHJlc3MgdGhlIHJlY2VudCBjaGFuZ2VzIGluIHdlYiBub3RpZmljYXRpb25zIHNwZWMuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViTm90aWZp
Y2F0aW9uRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6
Tm90aWZpY2F0aW9uV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25XcmFw
cGVyOjpzZW5kRGlzcGxheUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6aWNvblVybCk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2VuZERpc3BsYXlF
dmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQuaDoKKyAgICAgICAgKE5vdGlmaWNhdGlvbldyYXBwZXIpOgorICAgICAgICAoTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQpOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL1dlYk5vdGlmaWNhdGlvblByZXNlbnRlci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRp
b25XaWRnZXQ6OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3Jt
cGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlv
bkRhdGEpOgorCisyMDEyLTA0LTE4ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgorCisgICAgICAgIENsZWFuLXVwIFdoZWVsRXZlbnQgQ29udmVyc2lvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MjQzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
UGxhdGZvcm1XaGVlbEV2ZW50OjphcHBseURlbHRhKToKKworMjAxMi0wNC0xMyAgVG9yIEFybmUg
VmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBCdWls
ZCBmaXggd2l0aCBRVF9OT19CRUFSRVJNQU5BR0VNRU5UCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Sm9jZWx5biBUdXJjb3R0ZS4KKworICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvbG9hZGluZy90
c3RfbG9hZGluZy5jcHA6CisgICAgICAgICh0c3RfTG9hZGluZyk6CisgICAgICAgICh0c3RfTG9h
ZGluZzo6bG9hZCk6CisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy9wYWludGluZy90c3RfcGFp
bnRpbmcuY3BwOgorICAgICAgICAodHN0X1BhaW50aW5nKToKKyAgICAgICAgKHRzdF9QYWludGlu
Zzo6cGFpbnQpOgorCisyMDEyLTA0LTEzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVz
dGJvQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBidWlsZCBvbiBPUyBYCisKKyAgICAg
ICAgV2Ugd2VyZSBtYW51YWxseSBpbmNsdWRpbmcgdGhlIGRpcmVjdG9yaWVzIG5lZWRlZCBmcm9t
IFdURiwgaW5zdGVhZCBvZgorICAgICAgICB1c2luZyB0aGUgV0VCS0lUIHFtYWtlIHZhcmlhYmxl
IHRvIGFkZCBkZXBlbmRlbmNpZXMsIHdoaWNoIGFsc28gYWRkcworICAgICAgICBvdGhlciB0cmlj
a3MgZnJvbSBXVEYucHJpLCBzdWNoIGFzIHRoZSByaWdodCBpbmNsdWRlIHBhdGhzIGZvciBJQ1Uu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBkZWNs
YXJhdGl2ZS9leHBlcmltZW50YWwvZXhwZXJpbWVudGFsLnByaToKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wdWJsaWMucHJpOgorCisyMDEyLTA0LTEyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNA
d2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEZpeCBXZWJLaXQxIGJ1aWxkIHdpdGggVjgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMzIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRRdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjphbGxvd1NjcmlwdEV4dGVu
c2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6CisKKzIw
MTItMDMtMDUgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW1F0XSBVc2UgUVJhd0ZvbnQgd2hlbiBidWlsZGluZyB3aXRoIFF0IDUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDAxCisKKyAgICAgICAgU2lu
Y2UgUUZvbnQgaXMgbm90IHVzZWQgaW50ZXJuYWxseSwgd2Ugbm93IG5lZWQKKyAgICAgICAgdG8g
cXVlcnkgZm9yIGEgUUZvbnQgdGhhdCBzaG91bGQgYmUgYSBnb29kCisgICAgICAgIGVub3VnaCBt
YXRjaC4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBNZW51UXQ6OnNob3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1JlbmRl
clRoZW1lUVN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpj
b21wdXRlU2l6ZUJhc2VkT25TdHlsZSk6CisKKzIwMTItMDQtMDYgIExldmkgV2VpbnRyYXViICA8
bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENvcnJlY3QgTGF5b3V0VW5pdCB1c2dhZSBp
biBSZW5kZXJUaGVtZVF0IGFuZCBSZW5kZXJUaGVtZVFTdHlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMzNzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBDYWxjdWxhdGluZyB0aGUgcHJvZ3Jlc3MgYW5pbWF0
aW9uIHVzaW5nIHRoZSBwaXhlbC1zbmFwcGVkIFJlbmRlclByb2dyZXNzIHNpemUgaW5zdGVhZAor
ICAgICAgICBvZiB0aGUgaW50ZXJuYWwgc3ViLXBpeGVsIHZlcnNpb24uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9SZW5kZXJUaGVtZVFTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZVFTdHlsZTo6YW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0Jhcik6CisKKzIw
MTItMDQtMDUgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBDb3JyZWN0IDx3dGYvKi5oPiBpbmNsdWRlIHBhdGhzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMyNzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBNb2RpZnkgdGhlICNpbmNsdWRlIGRlY2xlcmF0
aW9ucyBzbyB0aGF0IHRoZQorICAgICAgICB3dGYgdHlwZXMgYXJlIGluY2x1ZGVkIHVzaW5nIHRo
ZSBmdWxsIHBhdGguCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJR
dC5jcHA6CisKKzIwMTItMDQtMDUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbUXRdIEZpeCBpbmNsdWRlcyBhZnRlciBRdERlY2xhcmF0aXZlIC0+IFF0
UU1MIHJlbmFtaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjE5NQorCisgICAgICAgIFJlbGFuZGluZyByMTEyNjUxLCBiZWNhdXNlIFF0NSBpcyB1
cGRhdGVkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50YWwv
cGx1Z2luLmNwcDoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAo
V2ViS2l0UW1sUGx1Z2luOjppbml0aWFsaXplRW5naW5lKToKKworMjAxMi0wNC0wNCAgQW5kcmFz
IEJlY3NpICA8YW5kcmFzLmJlY3NpQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gTWFr
ZSB0aGUgV2ViVmlldyBhIHN1YmNsYXNzIG9mIEZsaWNrYWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBBZGQgbmVlZGVkIGRlcGVu
ZGVuY3kgdG8gcXVpY2stcHJpdmF0ZSBmb3IgcHJvamVjdHMgdGhhdCBpbmNsdWRlIHRoZSBXZWJW
aWV3IGhlYWRlci4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9leHBlcmlt
ZW50YWwucHJpOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3B1YmxpYy5wcmk6CisKKzIwMTItMDQt
MDMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1BhcnQgMl0gV2Ugc2hvdWxkIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVn
ZXJzIHdoZW4gbWFuaXB1bGF0aW5nIENTUyBwcm9wZXJ0eSBpZHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXBkYXRlIHRoZSBjb2RlIHRvIHVzZSBDU1NQ
cm9wZXJ0eUlEIHJhdGhlciB0aGFuIGFuIGludGVnZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYmVs
ZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNldFN0eWxlUHJvcGVydHkpOgorCisy
MDEyLTA0LTAyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIFdlIHNob3VsZCB1c2UgQ1NTUHJvcGVydHlJRCByYXRoZXIgdGhhbiBpbnRlZ2Vy
cyB3aGVuIG1hbmlwdWxhdGluZyBDU1MgcHJvcGVydHkgaWRzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIENTU1Byb3BlcnR5SUQgZW51bSBob2xkcyBhbGwg
dGhlIENTUyBwcm9wZXJ0eSBpZHMgYnV0IG1hbnkgcGFydHMgb2YgV2ViS2l0IHRyZWF0IHRoZSBp
ZHMKKyAgICAgICAgYXMgaW50ZWdlcnMuIFdoaWxlIGl0J3Mgbm90IGluY29ycmVjdCBpdCBpcyBu
aWNlciB0byB1c2UgdGhlIGVudW0gYXMgYSBwYXJhbWV0ZXIgb2YKKyAgICAgICAgZnVuY3Rpb25z
IG1hbmlwdWxhdGluZyBwcm9wZXJ0eSBpZHMsIGFzIHdlIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBw
YXNzZWQgd2lsbCBiZSBhbgorICAgICAgICBleGlzdGluZyB2YWx1ZS4gSXQgd2lsbCBhbHNvIGZl
ZWwgbW9yZSBjb3JyZWN0IGFmdGVyIHRoaXMgcGF0Y2ggdGhhdCBDU1NQcm9wZXJ0eTo6aWQoKQor
ICAgICAgICByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgZW51bSByYXRoZXIgdGhhbiBhbiBpbnRlZ2Vy
LiBBcyB0aGlzIG1vZGlmaWNhdGlvbiBpcyBxdWl0ZSBiaWcgdGhpcworICAgICAgICBpcyB0aGUg
Zmlyc3QgcGFydCBvbmx5IHNvIGl0IHdpbGwgYmUgZWFzaWVyIHRvIHJldmlldy4KKworICAgICAg
ICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c3R5bGVQcm9w
ZXJ0eSk6IEFkYXB0IHRvIHRoZSBBUEkgY2hhbmdlIGFuZCBhbHNvIHJlbW92ZSBhbiB1bmVjZXNz
YXJ5IG5hbWUtPmlkCisgICAgICAgIGNvbnZlcnNpb24uCisKKzIwMTItMDQtMDIgIENhc3BlciB2
YW4gRG9uZGVyZW4gIDxjYXNwZXIudmFuZG9uZGVyZW5Abm9raWEuY29tPgorCisgICAgICAgIFF0
OiBEb2M6IEZpeCB0eXBvIHdoaWNoIG1hcmtzIGRvY3VtZW50IHRvIGJlIHByaW50ZWQgaW4gY29u
c29sZSBmb250LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODI4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBUaGUgcXR3ZWJraXQtYnJpZGdlLnFkb2MgZmlsZSBjb250YWluZWQgYSB0eXBvIHdoZXJlIGEg
XGMge30gd2FzCisgICAgICAgIG1pc3NpbmcgaXRzIGNsb3NpbmcgY3VybHkgYnJhY2tldCwgdGhp
cyBtYXJrZWQgdGhlIHJlc3Qgb2YgdGhlIHBhZ2UgYXMKKyAgICAgICAgdGV4dCB0byBiZSBwcmlu
dGVkIHVzaW5nIHRoZSBjb2RlL2NvbnNvbGUgZm9udC4KKyAgICAgICAgKiBkb2NzL3F0d2Via2l0
LWJyaWRnZS5xZG9jOgorCisyMDEyLTA0LTAyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEyNjUx
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTI2NTEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODg3CisKKyAgICAg
ICAgSXQgZG9lc24ndCB3b3JrIHdpdGggb2xkZXIgUXQ1IChSZXF1ZXN0ZWQgYnkgT3NzeSBvbiAj
d2Via2l0KS4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9wbHVnaW4uY3Bw
OgorICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXRRbWxQ
bHVnaW46OmluaXRpYWxpemVFbmdpbmUpOgorCisyMDEyLTA0LTAxICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgbm90aWZpY2F0aW9uIHByb3BlcnRpZXMgYW5k
IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODA0ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwOTEyNDMyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpzaG93KTogUmVmYWN0b3IgdG8gY2FsbCB0YWcoKS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vdmVSZXBs
YWNlZE5vdGlmaWNhdGlvbkZyb21RdWV1ZSk6IFJlZmFjdG9yIHRvIGNhbGwgdGFnKCkuCisKKzIw
MTItMDMtMzAgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENo
YW5nZSBXZWJLaXQvV2ViS2l0MiBwbGF0Zm9ybSBjb2RlIHRvIHVzZSBwaXhlbCBzbmFwcGVkIHZh
bHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1
NDkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIEFwaS9x
d2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6Z2VvbWV0cnkpOgorICAgICAg
ICBSZXBsYWNlIGdldFJlY3Qgd2l0aCBnZXRQaXhlbFNuYXBwZWRSZWN0IHRvIGF2b2lkIGhhdmlu
ZyB0byBleHBvc2UKKyAgICAgICAgc3VicGl4ZWwgdHlwZXMgdG8gdGhlIHBsYXRmb3JtIGxheWVy
LgorICAgICAgICAKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaCk6Cisg
ICAgICAgIFVzZSBwaXhlbCBzbmFwcGVkIGVsZW1lbnQgcmVjdCB3aGVuIGNvbXBhcmluZyB3aXRo
IHRoZSB0b3VjaCByZWN0IGFzIHRoZQorICAgICAgICB0b3VjaCByZWN0IHVzZSBzY3JlZW4gY29y
ZGluYXRlcyB3aGljaCBhcmUgcmVwcmVzZW50ZWQgd2l0aCBwaXhlbAorICAgICAgICBhY2N1cmFj
eS4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY3JvbGxSZWN0SW50b1ZpZXcpOgor
ICAgICAgICBDaGFuZ2Ugc2Nyb2xsUmVjdEludG9WaWV3IHRvIHRha2UgYSBMYXlvdXRSZWN0IHRv
IG1hdGNoIGJhc2UgY2xhc3MKKyAgICAgICAgaW50ZXJmYWNlLgorCisyMDEyLTAzLTMwICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBHRU9MT0NBVElPTiBz
aG91bGQgYmUgaW1wbGVtZW50ZWQgYXMgUGFnZSBTdXBwbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjIyOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgR2VvbG9jYXRpb24gaXMgbm93IGEgU3VwcGxlbWVu
dCBpbiBQYWdlIHNvIHRoZSBpbnRlcmZhY2UKKyAgICAgICAgaGFzIGNoYW5nZWQgZm9yIHNldHRp
bmcgdXAgdGhlIHBhZ2UncyBnZW9sb2NhdGlvbiBjbGllbnQKKyAgICAgICAgaW5pdGlhbGx5IGFu
ZCBhY2Nlc3NpbmcgdGhlIGNvbnRyb2xsZXIgbGF0ZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldEdlb2xvY2F0aW9uTW9jayk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lv
bik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJP
ZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudFF0Ojpwb3NpdGlvblVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25DbGllbnRRdDo6c3RhcnRVcGRhdGluZyk6CisKKzIwMTItMDMtMjkgIMOBZMOhbSBL
YWxsYWkgIDxrYWRhbUBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgW1F0XSBCdWlsZCBmaXgg
YnkgcmVuYW1laW5nIFF0RGVjbGFyYXRpdmUgdG8gUXRRbWwgaW4gaGVhZGVyIGNhbGxzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxOTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIGRlY2xhcmF0aXZl
L2V4cGVyaW1lbnRhbC9wbHVnaW4uY3BwOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdpbi5j
cHA6CisgICAgICAgIChXZWJLaXRRbWxQbHVnaW46OmluaXRpYWxpemVFbmdpbmUpOgorCisyMDEy
LTAzLTI5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEyNTUzLgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMTI1NTMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjM4CisKKyAgICAgICAgSXQgbWFkZSBhbGwgdGVzdHMg
Y3Jhc2ggb24gUXQgV0syIChSZXF1ZXN0ZWQgYnkgT3NzeV9hd2F5IG9uCisgICAgICAgICN3ZWJr
aXQpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
cmVzZXRHZW9sb2NhdGlvbk1vY2spOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDo6cG9zaXRpb25VcGRh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50UXQ6OnN0YXJ0VXBkYXRp
bmcpOgorCisyMDEyLTAzLTI5ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4K
KworICAgICAgICBHRU9MT0NBVElPTiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYXMgUGFnZSBTdXBw
bGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MjIyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgR2VvbG9j
YXRpb24gaXMgbm93IGEgU3VwcGxlbWVudCBpbiBQYWdlIHNvIHRoZSBpbnRlcmZhY2UKKyAgICAg
ICAgaGFzIGNoYW5nZWQgZm9yIHNldHRpbmcgdXAgdGhlIHBhZ2UncyBnZW9sb2NhdGlvbiBjbGll
bnQKKyAgICAgICAgaW5pdGlhbGx5IGFuZCBhY2Nlc3NpbmcgdGhlIGNvbnRyb2xsZXIgbGF0ZXIu
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNl
dEdlb2xvY2F0aW9uTW9jayk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudFF0Ojpwb3NpdGlvblVwZGF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDo6c3RhcnRVcGRhdGluZyk6
CisKKzIwMTItMDMtMjggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZW1vdmUgZGlzcGF0Y2hEaWRMb2FkTWFpblJlc291cmNlIGNhbGxiYWNrLCBzaW5jZSBu
bworICAgICAgICBwb3J0IGltcGxlbWVudHMgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhl
eSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50UXQpOgor
CisyMDEyLTAzLTIwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBN
b3ZlIHd0Zi9QbGF0Zm9ybS5oIGZyb20gSmF2YVNjcmlwdENvcmUgdG8gU291cmNlL1dURi93dGYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwOTExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBGaXggV1RGIGhlYWRl
ciBpbmNsdWRlIHBhdGhzIHNpbmNlIGFsdGhvdWdoCisgICAgICAgIFNvdXJjZS9XVEYgaXMgaW5j
bHVkZWQsIG5vIGxvbmdlciBhcmUgYWxsIHRoZQorICAgICAgICBzdWJkaXJlY3RvcmllcyAodGh1
cyAiUmVmUHRyLmgiIGNhbid0IHdvcmspLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZV9w
Lmg6CisgICAgICAgICogQXBpL3F3ZWJzY3JpcHR3b3JsZF9wLmg6CisgICAgICAgICogQXBpL3F3
ZWJzZWN1cml0eW9yaWdpbl9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94Lmg6CisgICAgICAgICog
ZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5wcmk6CisgICAgICAgICogZGVj
bGFyYXRpdmUvcHVibGljLnByaToKKyAgICAgICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvTUlNRVNu
aWZmaW5nLnBybzoKKworMjAxMi0wMy0xOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciAibWFnaWMiIGlmcmFtZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXJDbGll
bnQgbWV0aG9kcyB0aGF0IG5vIGxvbmdlciBleGlzdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAoRnJhbWVM
b2FkZXJDbGllbnRRdCk6CisKKzIwMTItMDMtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFttYWMvcXQvY2hyb21pdW1dIENoYW5nZSBwbGF0Zm9ybSBjb2Rl
IHRvIHVzZSBwaXhlbFNuYXBwZWRSZWN0IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6Omdlb21ldHJ5KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpyZW5kZXIpOgorCisy
MDEyLTAzLTE2ICBUZWVtdSBLYXRhamlzdG8gIDx0ZWVtdS5rYXRhamlzdG9AZGlnaWEuY29tPgor
CisgICAgICAgIFtRdF0gUXRXZWJLaXQgZG9jdW1lbnRhdGlvbiBtaXNzaW5nIGEgZmV3IHNpbmNl
IDQuNiBpbmZvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5j
cHA6CisKKzIwMTItMDMtMTUgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW1F0XSBDaGFuZ2UgZGVmYXVsdCBXZWJTb2NrZXQgcHJvdG9jb2wgdG8gdGhlIGxh
dGVzdCBvbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczNjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVBy
aXZhdGUpOgorICAgICAgICBVc2UgUkZDNjQ1NSBXZWJTb2NrZXQgcHJvdG9jb2wgYnkgZGVmYXVs
dC4KKworMjAxMi0wMy0wNyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBOb3RpZmljYXRpb25Db250ZW50cyBpbnRvIE5vdGlmaWNhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0ODcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwOTY1NTE5PgorCisgICAgICAgIFJldmlld2VkIGJ5IEppYW4gTGkuCisKKyAg
ICAgICAgUmVmYWN0b3IgdG8gdXNlIGFjY2Vzc29yIG1ldGhvZHMgb24gTm90aWZpY2F0aW9uLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6OnRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3BsYXlOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNhbmNl
bCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90
aWZpY2F0aW9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6ZHVtcFJlcGxhY2VkSWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkdW1wU2hvd1RleHQpOgorCisyMDEyLTAzLTEzICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBTZXBhcmF0ZSBOT1RJRklDQVRJ
T05TIGFuZCBMRUdBQ1lfTk9USUZJQ0FUSU9OUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA5MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzExMDM1
MDgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEppYW4gTGkuCisKKyAgICAgICAgWW91IGNhbiBp
bmNsdWRlIGVpdGhlciBOT1RJRklDQVRJT05TIG9yIExFR0FDWV9OT1RJRklDQVRJT05TIGFuZCBo
YXZlIGEgY29tcGxldGUgQVBJLgorICAgICAgICBMRUdBQ1lfTk9USUZJQ0FUSU9OUyBzaG91bGQg
Y292ZXIgYWxsIG9mIHRoZSBwcmV2aW91cyBmdW5jdGlvbmFsaXR5LCBhbmQgTk9USUZJQ0FUSU9O
UyB3aWxsIGNvdmVyIHRoZQorICAgICAgICBuZXcgQVBJLiBUaGVyZWZvcmUsIEFQSXMgdGhhdCBh
cmUgY29tbW9uIGJldHdlZW4gdGhlIHR3byB3aWxsIGhhdmU6CisgICAgICAgICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW5pdGlhbGx5IHNldHMgYm90aCB0byBiZSBleGFjdGx5IHRoZSBzYW1lLiBB
cyBvdGhlciBidWdzIHdpdGggcGF0Y2hlcyBiZWdpbiB0byBtaWdyYXRlIHRvCisgICAgICAgIHRo
ZSBuZXcgQVBJLCB0aGUgZGVmaW5lcyB3aWxsIGJlZ2luIHRvIHNwbGl0LiBUaGlzIGFsbG93cyBw
b3J0cyB0byBkZWNpZGUgd2hpY2ggc2V0IG9mIEFQSXMgdG8gaW5jbHVkZS4KKworICAgICAgICBV
cGRhdGUgZXZlcnl0aGluZyB0byBiZSAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjp+UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRGZWF0
dXJlUGVybWlzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBOb3Rp
ZmljYXRpb24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNpbXVsYXRlRGVz
a3RvcE5vdGlmaWNhdGlvbkNsaWNrKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6Ok5vdGlmaWNhdGlvbldyYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uV3JhcHBlcjo6bWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25XcmFwcGVyOjppY29uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25XcmFw
cGVyOjpvcGVuZXJQYWdlVXJsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBw
ZXI6Om5vdGlmaWNhdGlvbkNsaWNrZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
V3JhcHBlcjo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisKKzIw
MTItMDMtMTQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAg
ICBMYXN0IGJ1aWxkZml4IGZvciBRdCBhZnRlciByMTEwNTk1LiA6KQorCisgICAgICAgIFJldmll
d2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuaDoKKworMjAxMi0w
My0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBB
dHRlbXB0IHRvIGZpeCBRdE1pbmltYWwgYm90IGFmdGVyIHIxMTA1OTUKKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZSk6CisKKzIwMTItMDMtMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQW5vdGhlciBhdHRlbXB0IGF0IGZpeGluZyBRdE1pbmltYWwgYm90IGFmdGVy
IHIxMTA1OTUKKworICAgICAgICBCbGluZCBmaXgsIHVucmV2aWV3ZWQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0Lmg6CisKKzIwMTItMDMtMTMgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQXR0ZW1wdCB0byBm
aXggUXRNaW5pbWFsIGJvdCBhZnRlciByMTEwNTk1CisKKyAgICAgICAgQmxpbmQgZml4LCB1bnJl
dmlld2VkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6cmVzZXRHZW9sb2NhdGlvbk1vY2spOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlz
c2lvbkNsaWVudFF0Lmg6CisKKzIwMTItMDMtMTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4gJiYgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAg
ICBBbHdheXMgZW5hYmxlIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg1MworCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAodG9HZW9sb2NhdGlvbkNsaWVu
dE1vY2spOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0R2VvbG9jYXRp
b25Nb2NrKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9j
YXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKworMjAxMi0wMy0xMiAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgor
CisgICAgICAgIENvbnZlcnQgbm9kZXNGcm9tUmVjdCB0ZXN0cyB0byB1c2UgSW50ZXJuYWxzIGlu
dGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgUmVt
b3ZlZCBEUlRTdXBwb3J0UXQ6Om5vZGVzRnJvbVJlY3Qgc3VwcG9ydCwgc2luY2UKKyAgICAgICAg
aXQgY2FuIHdvcmsgaW4gdGhlIGNyb3NzLXBvcnQgd2F5IHRocm91Z2ggdGhlCisgICAgICAgIElu
dGVybmFscyBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuaDoKKworMjAxMi0wMy0wOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIE5vdGlmaWNhdGlvblByZXNlbnRlciB0byBOb3RpZmljYXRpb25D
bGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgw
NDg4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDk2NTU1OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgUmVmYWN0b3IgdG8gdXNlIHJlbmFtZWQgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmFsbG93Tm90aWZpY2F0aW9uRm9yRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0Lmg6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCk6CisKKzIwMTIt
MDMtMDkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBy
b3VuZGVkUG9pbnQgdG8gSGl0VGVzdFJlc3VsdCBhbmQgY2hhbmdlIHBsYXRmb3JtIGNvZGUgdG8g
dXNlIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDcxNQorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgIENo
YW5nZSBwb3J0cyB0byB1c2Ugcm91bmRlZFBvaW50IHRvIGF2b2lkIGV4cG9zaW5nIHN1YnBpeGVs
IHR5cGVzIHRvCisgICAgICAgIHBsYXRmb3JtIGNvZGUuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RS
ZXN1bHRQcml2YXRlKToKKworMjAxMi0wMy0wOSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBQcmVwIGZvciBiODA0
NzI6IFVwZGF0ZSBBUEkgZm9yIFdlYiBOb3RpZmljYXRpb25zCisgICAgICAgICogZXhhbXBsZXMv
cGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOgorCisyMDEyLTAzLTA5ICBDc2FiYSBP
c3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBGaXggY29tcGls
YXRpb24gd2l0aG91dCBRdFF1aWNrMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODA1MDMKKworICAgICAgICBRdCA0LjggQVBJIHRlc3QgZml4IGFmdGVy
IHIxMTAwNTAuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWm9sdGFuIEhlcmN6ZWcuCisKKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9wdWJsaWMucHJpOiBBZGQgbG9hZChmZWF0dXJlcykgdG8gZW5zdXJl
IEhBVkVfUVFVSUNLMT0xIGlzIHNldC4KKworMjAxMi0wMy0wOCAgVG9yIEFybmUgVmVzdGLDuCAg
PHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBVc2UgUXQncyBtb2R1
bGUgc3lzdGVtIGZvciBpbnN0YWxsIHJ1bGVzIGFuZCBkZXBlbmRpbmcgb24gUXRXZWJLaXQKKwor
ICAgICAgICBJbnN0ZWFkIG9mIHJvbGxpbmcgb3VyIG93biBpbnN0YWxsIHJ1bGVzIHdlIG5vdyB1
c2UgdGhlIHNhbWUgYXBwcm9hY2ggYXMKKyAgICAgICAgZXZlcnkgb3RoZXIgUXQgbW9kdWxlLCBi
eSBsb2FkaW5nIHF0X21vZHVsZS5wcmYgYW5kIHF0X21vZHVsZV9jb25maWcucHJmLgorCisgICAg
ICAgIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGZvbGxvdyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhl
IHJlc3Qgb2YgUXQgb24KKyAgICAgICAgd2hhdCBzb3J0IG9mIGNvbmZpZyBvcHRpb25zIGFyZSBl
bmFibGVkIGJ5IGRlZmF1bHQgKGNyZWF0ZV9jbWFrZSBlZy4pLgorICAgICAgICBJdCBhbHNvIGFs
bG93cyB1cyB0byB1c2UgUVQgKz0gd2Via2l0IGluc3RlYWQgb2YgdGhlIHdvcmthcm91bmQgd2Ug
aGFkCisgICAgICAgIHdpdGggQ09ORklHICs9IHF0d2Via2l0LgorCisgICAgICAgIFdlIGRvIGhv
d2V2ZXIgZm9yY2UgUXQgdG8gYWx3YXlzIHRyZWF0IG91ciBidWlsZCBhcyBhIG5vbi1kZXZlbG9w
ZXIgYnVpbGQsCisgICAgICAgIHNvIHRoZSBsaWJyYXJpZXMgd2lsbCBlbmQgdXAgaW4gdGhlIFdl
YktpdCBsaWIgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlCisgICAgICAgIHF0YmFzZSBkaXJlY3Rv
cnkgKGFzIHdpdGggYSBub3JtYWwgZGV2ZWxvcGVyLWJ1aWxkKS4gVGhpcyBhbGxvd3MgdXMgdG8K
KyAgICAgICAga2VlcCB0aGUgd2Via2l0LWJ1aWxkIHNlbGYtY29udGFpbmVkLiBJZiBRdCBpcyBh
IGRldmVsb3BlciBidWlsZCB3ZSBzdGlsbAorICAgICAgICBjb3B5IHRoZSBtb2R1bGUgZmlsZSBt
YW51YWxseSB0byBRdCwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBpbnN0YWxsCisgICAgICAg
IFdlYktpdCB0byBtYWtlIGl0IGF2YWlsYWJsZS4KKworICAgICAgICBGb3Igbm9uLWRldmVsb3Bl
ciBidWlsZHMgb2YgUXQsIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIHVzZSB0aGUgYnVpbHQKKyAg
ICAgICAgV2ViS2l0IGxpYnJhcmllcyB3aXRob3V0IGhhdmluZyB0byBpbnN0YWxsIHRoZW0sIGJ5
IGhhdmluZyB0aGUgdmFyaWFibGUKKyAgICAgICAgUU1BS0VfRVhUUkFfTU9EVUxFX0ZPUldBUkRT
IHNldCBpbiB0aGUgcHJvamVjdCdzIC5xbWFrZS5jYWNoZSBmaWxlLAorICAgICAgICBwb2ludGlu
ZyB0byAkV0VCS0lUT1VUVVRESVIvJENPTkZJR1VSQVRJT04vbW9kdWxlcy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1OTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVy
aW1lbnRhbC9leHBlcmltZW50YWwucHJpOgorICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1l
bnRhbC9wbHVnaW4uY3BwOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdpbi5jcHA6CisgICAg
ICAgICogZGVjbGFyYXRpdmUvcHVibGljLnByaToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6
CisKKzIwMTItMDMtMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDM3MAorICAgICAg
ICBFbmFibGUgbWF0Y2hlZCBkZWNsYXJhdGlvbiBjYWNoaW5nIGZvciBlbGVtZW50cyB3aXRoIGEg
c3R5bGUgYXR0cmlidXRlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZworCisg
ICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzdHls
ZVByb3BlcnR5KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzZXRTdHlsZVByb3BlcnR5KToKKwor
MjAxMi0wMy0wNyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gd2l0aG91dCBRdFF1aWNrMQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1MDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIENvbXBpbGUgYW5kIGVuYWJs
ZSB0aGUgUXRRdWljazEvUU1MMSBwbHVnaW4gYW5kIHdlYnZpZXcKKyAgICAgICAgb25seSBpZiB3
ZSdyZSB1c2luZyBRdCA0IGF0IHRoZSBtb21lbnQuIFFRdWljazEgY2xhc2hlcworICAgICAgICB3
aXRoIFFRdWljazIgcmlnaHQgbm93IGJlY2F1c2UgYm90aCBkZWNsYXJlIFFEZWNsYXJhdGl2ZUVu
Z2luZQorICAgICAgICBhbmQgZnJpZW5kcyBhcyBjbGFzc2VzLgorCisgICAgICAgICogZGVjbGFy
YXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFtbFBsdWdpbjo6cmVnaXN0ZXJUeXBl
cyk6CisgICAgICAgICogZGVjbGFyYXRpdmUvcHVibGljLnByaToKKyAgICAgICAgKiB0ZXN0cy90
ZXN0cy5wcmk6CisKKzIwMTItMDMtMDcgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtEUlRdIFJlbW92ZSBQbGFpblRleHRDb250cm9sbGVyIGltcGxlbWVu
dGF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0YS4KKworICAgICAgICBQ
bGFpblRleHRDb250cm9sbGVyIHVzYWdlcyBpbiBleGlzdGluZyB0ZXN0cyBoYXZlIGJlZW4KKyAg
ICAgICAgcmVwbGFjZWQgYnkgaW50ZXJuYWxzIEFQSSBieSBidWcgNzg1NzAuCisgICAgICAgIFNv
IHRoaXMgcGF0Y2ggd2lsbCByZW1vdmUgUGxhaW5UZXh0Q29udHJvbGxlciBpbXBsZW1lbnRhdGlv
bnMKKyAgICAgICAgdG8gYXZvaWQgZnVydGhlciB1c2FnZSBpbiBuZXcgdGVzdHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMi0wMy0w
NiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gZGlzYWJsZSBHU3RyZWFtZXJHV29ybGQgd2hlbiBidWlsZGluZyBhZ2FpbnN0IDAu
MTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDg4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6
CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3Jl
ZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojppc1ZhbGlk
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisKKzIwMTItMDMtMDMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IHN0YXRpY19saWJzX2FzX3NoYXJlZCBi
dWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAy
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEFk
ZCBoZWxwZXIgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IFdlYlByb2Nlc3MgbWFpbgorICAgICAg
ICB0byBwb3RlbnRpYWxseSBpbml0aWFsaXplIHRoZSBRU3R5bGUgdGhlbWUuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVXZWJLaXQyVGhlbWUpOgorCisyMDEyLTAzLTAyICBD
YXNwZXIgdmFuIERvbmRlcmVuICA8Y2FzcGVyLnZhbmRvbmRlcmVuQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdIERvY3VtZW50YXRpb24gY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAxMzEKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KKworICAgICAgICBRRG9jIHVzZXMgZGlmZmVyZW50IGNvbW1hbmRzIHRvIGRv
IGJvbGQsIGxpc3RzLCBhbmQgaXRhbGljcy4KKyAgICAgICAgVGhpcyBjaGFuZ2UgdXBkYXRlcyB0
aGUgZG9jdW1lbnRhdGlvbiBhY2NvcmRpbmdseS4KKyAgICAgICAgUVRCVUctMjQ1NzgKKworICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6
CisgICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3IuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmV3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LWJyaWRnZS5xZG9jOgorICAgICAg
ICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LnFkb2Njb25m
OgorCisyMDEyLTAzLTAyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdIEJ1aWxkIHN5c3RlbSBjbGVhbnVwCisKKyAgICAgICAgUnViYmVy
LXN0YW1wZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiB0ZXN0cy9NSU1FU25pZmZp
bmcvTUlNRVNuaWZmaW5nLnBybzogRG9uJ3QgbGluayBpbiBXVEZBc3NlcnRpb25zLmNwcCBmb3Ig
QVNTRVJULCBub3cKKyAgICAgICAgdGhhdCB0aGUgc3ltYm9scyBhcmUgcHJvcGVybHkgZXhwb3J0
ZWQgd2l0aCBleHBvcnQgbWFjcm9zIGZyb20gdGhlIERMTC4KKworMjAxMi0wMy0wMiAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBNb3Zl
IFFTdHlsZSB0aGVtaW5nIGNvZGUgb3V0IG9mIFdlYkNvcmUgaW50byBXZWJLaXQxCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEyOAorCisgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIE1vdmVk
IHRoZSBidWxrIG9mIHRoZSBRU3R5bGUgZGVwZW5kYW50IGNvZGUgaGVyZSwgd2hlcmUgaXQncyBv
a2F5IHRvIGRlcGVuZCBvbiBRdFdpZGdldHMvUVN0eWxlLgorICAgICAgICBJbnN0YWxsIHRoZSBR
U3R5bGUgZmFjdG9yeSBmdW5jdGlvbnMgaW4gaW5pdFdlYkNvcmVRdC5jcHAuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnN3YWxsb3dDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1JlbmRlclRoZW1lUVN0eWxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUVN0eWxlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdFN0eWxlT3B0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lUVN0eWxlOjpnZXRTdHlsZVBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQYWludGVyUVN0eWxlOjpTdHlsZVBhaW50ZXJRU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQYWludGVyUVN0eWxlOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
UVN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OlJl
bmRlclRoZW1lUVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjp+
UmVuZGVyVGhlbWVRU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6
OmZhbGxiYWNrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnFT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6ZmluZEZyYW1lTGlu
ZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjppbmZsYXRlQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6Y29tcHV0ZVNp
emVCYXNlZE9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmFk
anVzdEJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpz
ZXRCdXR0b25QYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjpw
YWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRU
ZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmFkanVzdFRl
eHRBcmVhU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50
VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnNldFBvcHVw
UGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRNZW51
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0TWVudUxp
c3RCdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFp
bnRNZW51TGlzdEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6
YW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVFTdHlsZTo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVFTdHlsZTo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2xpZGVyVGh1bWJTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRTZWFyY2hGaWVsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50U2VhcmNoRmll
bGREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVRU3R5bGU6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6cGFpbnRJbm5lclNwaW5CdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5bGU6OmluaXRpYWxpemVDb21tb25R
U3R5bGVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lUVN0eWxlOjphZGp1
c3RTbGlkZXJUaHVtYlNpemUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1JlbmRlclRoZW1l
UVN0eWxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJU
aGVtZVFTdHlsZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJUaGVtZVFT
dHlsZSk6CisgICAgICAgIChTdHlsZVBhaW50ZXJRU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQYWludGVyUVN0eWxlOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGFp
bnRlclFTdHlsZTo6ZHJhd1ByaW1pdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBhaW50
ZXJRU3R5bGU6OmRyYXdDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGFpbnRlclFT
dHlsZTo6ZHJhd0NvbXBsZXhDb250cm9sKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TY3Jv
bGxiYXJUaGVtZVFTdHlsZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1Njcm9sbGJhclRoZW1lUXQuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVFTdHlsZTo6flNjcm9sbGJhclRoZW1lUVN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxiYXJQYXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lUVN0eWxlOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVFTdHlsZTo6aGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVFTdHlsZTo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVFTdHlsZTo6aW52YWxpZGF0ZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVRU3R5bGU6OnNjcm9sbGJhclRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVFTdHlsZTo6dGh1bWJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVFTdHlsZTo6dGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVRU3R5bGU6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVRU3R5bGU6OnRyYWNrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUVN0eWxlOjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVFTdHlsZTo6c3R5bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1Njcm9sbGJhclRoZW1lUVN0eWxlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lUVN0eWxlKToKKworMjAxMi0wMi0yNyAgQ2FpbyBNYXJjZWxvIGRlIE9s
aXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtR
dF0gTW92ZSByZWdpc3RyYXRpb24gb2YgZXhwZXJpbWVudGFsIHR5cGVzIHRvIHRoZSBwcm9wZXIg
cGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAg
KiBkZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2luLmNwcDoKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVz
KToKKworMjAxMi0wMi0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAg
ICAgICAgVHJ5IHRvIGZpeCBidWlsZC4KKworICAgICAgICBOb3QgcmV2aWV3ZWQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnN0eWxlUHJv
cGVydHkpOgorCisyMDEyLTAyLTI2ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIE1vdmUgQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUoKSB0byBD
b250ZXh0TWVudUNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzk0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKENocm9tZUNs
aWVudFF0KToKKworMjAxMi0wMi0yNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAbm9raWEuY29tPgorCisgICAgICAgIFtRdF0gQVBJOiBVbmlmeSB0aGUgbG9hZGluZyBwcm9w
ZXJ0aWVzIGFuZCBzaWduYWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzk0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXRRbWxQ
bHVnaW46OnJlZ2lzdGVyVHlwZXMpOgorCisyMDEyLTAyLTI0ICBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlciAgPGhvbGdlckBtb2lqaS1tb2JpbGUuY29tPgorCisgICAgICAgIFtRdF0gQnVpbGQg
Zml4LiBtYWNybyAiUVNLSVAiIG5vdyBvbmx5IHRha2VzIDEgYXJndW1lbnQgb24gUXQ1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTMyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICBJbnRyb2R1Y2Ug
YW4gYWx0ZXJuYXRpdmUgUVNLSVAgdGhhdCBjYW4gd29yayB3aXRoIGJvdGggUXQ0CisgICAgICAg
IGFuZCBRdDUgd2l0aG91dCBhZGRpbmcgI2lmZGVmIHRvIGVhY2ggdXNhZ2Ugc2l0ZS4KKworICAg
ICAgICAqIHRlc3RzL2JlbmNobWFya3MvbG9hZGluZy90c3RfbG9hZGluZy5jcHA6CisgICAgICAg
ICh0c3RfTG9hZGluZzo6bG9hZCk6CisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy9wYWludGlu
Zy90c3RfcGFpbnRpbmcuY3BwOgorICAgICAgICAodHN0X1BhaW50aW5nOjpwYWludCk6CisgICAg
ICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5j
cHA6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6ZWxlbWVudEFyZWFBdCk6Cisg
ICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0
X1FXZWJGcmFtZTo6c2V0SHRtbFdpdGhCYXNlVVJMKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpnZW9sb2NhdGlvblJl
cXVlc3RKUyk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmxvYWRIdG1sNVZpZGVvKToKKyAgICAg
ICAgKHRzdF9RV2ViUGFnZTo6c2NyZWVuc2hvdCk6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcv
dHN0X3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6cmV1c2VQYWdlKToKKwor
MjAxMi0wMi0yNCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgU3BlbGxDaGVja1JlcXVlc3QgbmVlZHMgdG8ga25vdyB0aGUgY29udGV4dCB3aGVyZSB0
aGUgc3BlbGxjaGVjayBoYXBwZW5lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc5MzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSGFqaW1lIE1vcml0
YS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50UXQ6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKKworMjAxMi0wMi0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CisKKyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdG91Y2ggY2FuY2VsbGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTM0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIEZvcndhcmQgaW5jb21pbmcgdG91Y2ggY2FuY2VsbGF0aW9uIGV2ZW50cyB0byB0aGUgV2Vi
Q29yZQorICAgICAgICBldmVudCBoYW5kbGVyLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dl
YnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2NlbmVFdmVudCk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAg
ICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpldmVudCk6CisKKzIw
MTItMDItMjIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgTk9USUZJQ0FUSU9OUyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYXMgUGFnZVN1cHBsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MDUyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisKKzIw
MTItMDItMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVt
b3ZlIHRoZSByZW1haW5pbmcgdXNlcyBvZiBDU1NTdHlsZURlY2xhcmF0aW9uIGluIEVkaXRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg5MzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBFbnJpY2EgQ2FzdWNjaS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oOgorICAgICAgICAoRWRpdG9yQ2xpZW50UXQpOgorCisyMDEyLTAyLTIyICBNaWhu
ZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lP
TihyMTA4MTA4KTogSXQgbWFkZSAzIGZhc3QvcmVwYWludCB0ZXN0cyBmYWlsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODk2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGlu
Z3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3Mu
aDoKKworMjAxMi0wMi0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgW1F0XSBNb3ZlIFFNZW51IGRlcGVuZGFudCBzY3JvbGxiYXIgY29udGV4
dCBtZW51IGhhbmRsaW5nIG91dCBvZiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTIzMworCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIE1vdmUgc2Nyb2xsYmFyIGNvbnRleHQg
bWVudSBoYW5kbGluZyBoZXJlLCBpdCdzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGl0IGlzCisgICAg
ICAgIHVzZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoaGFuZGxl
U2Nyb2xsYmFyQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6c3dhbGxvd0Nv
bnRleHRNZW51RXZlbnQpOgorCisyMDEyLTAyLTIyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
biAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNZXJnZSBzZXRWaXNpYmxlUmVjdFRy
YWplY3RvcnlWZWN0b3IgYW5kIGFkanVzdFZpc2libGVSZWN0IHRvCisgICAgICAgIHRoZSBtb3Jl
IGRlc2NyaXB0aXZlIGNvdmVyV2l0aFRpbGVzSWZOZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6Cisg
ICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpwYWludCk6CisKKyAgICAgICAgICAgIFVzZSBjb3Zl
cldpdGhUaWxlc0lmTmVlZGVkKCkuCisKKzIwMTItMDItMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHRoZSByZW1haW5pbmcgdXNlcyBvZiBDU1NT
dHlsZURlY2xhcmF0aW9uIGluIEVkaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzg5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBFbnJpY2EgQ2Fz
dWNjaS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoRWRpdG9yQ2xp
ZW50UXQpOgorCisyMDEyLTAyLTIxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1F0XSB0c3RfUVdlYlBhZ2U6OmluZmluaXRlTG9vcEpTKCkgdGltZW91
dHMgd2l0aCBERkcgSklUCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9R
V2ViUGFnZSk6IERpc2FibGUgdHN0X1FXZWJQYWdlOjppbmZpbml0ZUxvb3BKUygpIHVudGlsIHBy
b3BlciBmaXguCisKKzIwMTItMDItMjEgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tp
YS5jb20+CisKKyAgICAgICAgW1F0XSBQcmludCB3YXJuaW5nIHdoZW4gaW1wb3J0aW5nIGV4cGVy
aW1lbnRhbCBXSzIgQVBJcyBpbiBRTUwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc4ODE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2luLmNwcDoKKwor
MjAxMi0wMi0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgR2V0IHJpZCBvZiB0aGUgTG9jYWxpemF0aW9uU3RyYXRlZ3kKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzI0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBNb3ZlIHRoZSBsb2NhbGl6YXRpb24gY29kZSBm
cm9tIFBsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAorICAgICAgICB0byBMb2NhbGl6ZWRTdHJpbmdz
UXQuY3BwLgorCisgICAgICAgIEdldCByaWQgb2YgTG9jYWxpemF0aW9uU3RyYXRlZ3kgZnJvbSBQ
bGF0Zm9ybVN0cmF0ZWdpZXNRdAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc1F0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdCk6CisKKzIwMTItMDItMTYg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQgYnJvd24tcGFwZXIgYmFnIGJ1aWxkIGZpeC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRQ
bGF0Zm9ybVdoZWVsRXZlbnQ6OldlYktpdFBsYXRmb3JtV2hlZWxFdmVudCk6CisKKzIwMTItMDIt
MTYgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAg
IFtRdF0gTW92ZSBldmVudCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBmcm9tIFdlYkNvcmUgdG8gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODc4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIE1vdmUgUXRXaWRnZXRzIGRlcGVuZGVudCBtb3VzZSBldmVudCBjb25zdHJ1Y3RvcnMg
b3V0IG9mIFdlYkNvcmUKKyAgICAgICAgaW50byBXZWJLaXQsIHNpbWlsYXIgdG8gdGhlIHdlYiBl
dmVudCBjb252ZXJzaW9ucyBvZiBXZWJLaXQyLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpt
b3VzZVRyaXBsZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJl
bGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OndoZWVsRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2U6OnN3YWxsb3dDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFdmVudENvbnZlcnNpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bW91c2VFdmVudE1vZGlmaWVyc0Zy
b21RdEtleWJvYXJkTW9kaWZpZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNlRXZlbnRUeXBl
QW5kTW91c2VCdXR0b25Gcm9tUUV2ZW50KToKKyAgICAgICAgKFdlYktpdFBsYXRmb3JtTW91c2VF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRQbGF0Zm9ybU1vdXNlRXZlbnQ6OldlYktp
dFBsYXRmb3JtTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0TW91c2VFdmVu
dCk6CisgICAgICAgIChXZWJLaXRQbGF0Zm9ybVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0UGxhdGZvcm1XaGVlbEV2ZW50OjphcHBseURlbHRhKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdFBsYXRmb3JtV2hlZWxFdmVudDo6V2ViS2l0UGxhdGZvcm1XaGVlbEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXaGVlbEV2ZW50KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFdmVudENvbnZlcnNpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KworMjAxMi0wMi0xNiAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNhbnRpaUBnbWFpbC5j
b20+CisKKyAgICAgICAgW1F0XVtXSzJdIFNwbGl0IFFXZWJQZXJtaXNzaW9uUmVxdWVzdCBpbnRv
IFFXZWJTZWN1cml0eU9yaWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzMyMTUKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KKworICAgICAgICBBZGRpbmcgYSBjbGFzcyB0byBhY2Nlc3Mgc2VjdXJpdHkg
aW5mb3JtYXRpb24gZGF0YQorICAgICAgICAoZS5nLiBwb3J0L3NjaGVtZS9ldGMpLAorICAgICAg
ICB3aGlsZSBhbGxvd2luZyBpdCB0byBiZSBoYW5kbGVkIGluIFFNTCBzaWRlLgorCisgICAgICAg
ICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFtbFBsdWdpbjo6cmVn
aXN0ZXJUeXBlcyk6CisKKzIwMTItMDItMTUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRy
dWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE5vdGlmeSBDaHJvbWVDbGllbnQgd2hlbiB0b3Vj
aC1ldmVudCBoYW5kbGVycyBhcmUgaW5zdGFsbGVkL3JlbW92ZWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzQ0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlciBhbmQgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0
OjpudW1Ub3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKToKKworMjAxMi0wMi0xNSAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCBR
dCA0LnggYnVpbGQgZml4LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0
LmNwcDogRml4IHRoZSBRVF9WRVJTSU9OX0NIRUNLIHByZS1wcm9jZXNzb3IgZm9vLgorCisyMDEy
LTAyLTE1ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdIFJlcGxhY2UgdXNlIG9mIFFHTFdpZGdldC9RR0xDb250ZXh0IHdpdGggUU9wZW5H
TENvbnRleHQgYW5kIFFTdXJmYWNlIGZvciBRdCA1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODY5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0g
Um9zZW50aGFsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoK
KyAgICAgICAgKGNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0RGcm9tV2lkZ2V0KTogUmV0
dXJuIHRoZSBRT3BlbkdMQ29udGV4dCBhbmQgUVN1cmZhY2UKKyAgICAgICAgZnJvbSB0aGUgUUdM
V2lkZ2V0IHdoZW4gY29tcGlsaW5nIHdpdGggUXQgNSwgYXMgdGhhdCdzIHdoYXQgV2ViQ29yZSBl
eHBlY3RzLgorCisyMDEyLTAyLTE1ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5v
a2lhLmNvbT4KKworICAgICAgICBbUXRdIE1vdmUgUXQgcGxhdGZvcm0gc3BlY2lmaWMgR0wgQ29u
dGV4dC9TdXJmYWNlIGNyZWF0aW9uIG91dCBvZiBXZWJDb3JlIGludG8gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODY5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIEltcGxlbWVudCBHTFdpZGdl
dCBhbmQgR0xDb250ZXh0IGNyZWF0aW9uIGZyb20gdGhlIHBhZ2UgY2xpZW50IGludGVyZmFjZS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChj
cmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNERnJvbVdpZGdldCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpjcmVhdGVQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhp
Y3NXaWRnZXQ6OmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorICAgICAgICAoUGFnZUNsaWVudFFXaWRnZXQp
OgorICAgICAgICAoUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKKzIwMTItMDItMTQgIFNp
bW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0g
RWxpbWluYXRlIGZpcnN0IHNldCBvZiBRdFdpZGdldHMgZGVwZW5kZW5jaWVzIGZyb20gV2ViQ29y
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MTEK
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6IEFkZCBtaXNzaW5nIGluY2x1ZGVzLgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDogRGl0dG8uCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6IE1ha2UgaXQgY29t
cGlsZSBieSBjYXN0aW5nCisgICAgICAgIHRoZSBRT2JqZWN0IGJhc2VkIFBsYXRmb3JtV2lkZ2V0
IGJhY2sgdG8gUVdpZGdldCBiZWZvcmUgZG9pbmcgUVdpZGdldAorICAgICAgICBzcGVjaWZpYyBm
dW5jdGlvbiBjYWxscy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQpOiBNb3ZlZCBRU3R5bGUg
c3BlY2lmaWMgd2ViLWdyYXBoaWMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgaGVyZSBmcm9tIFdl
YkNvcmUuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpzZXRXaWRnZXRWaXNpYmxlKTogSW1wbGVt
ZW50IHNob3cvaGlkaW5nIG9mIHdpZGdldHMKKyAgICAgICAgdGhyb3VnaCBkZWxlZ2F0aW9uIHRv
IFFXaWRnZXQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGll
bnRRR3JhcGhpY3NXaWRnZXQ6OnNldFdpZGdldFZpc2libGUpOiBQcm92aWRlIGVtcHR5IHdpZGdl
dAorICAgICAgICBzaG93L2hpZGUgaW1wbGVtZW50YXRpb24sIGFzIGl0IGRvZXNuJ3Qgc2VlbSB0
byBtYWtlIHNlbnNlIGZvciBncmFwaGljc3ZpZXdzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1BhZ2VDbGllbnRRdC5oOgorICAgICAgICAoUGFnZUNsaWVudFFXaWRnZXQpOgorICAgICAgICAo
UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKKzIwMTItMDItMTUgIEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gQmUgc21h
cnRlZCB3aXRoIHRpbGUgdXNhZ2VzIGR1cmluZyB0aWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUmVtb3ZlIGludGVybmFsIEFQSSB1c2VkIGJ5IFN5
bWJpYW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCk6CisKKzIwMTItMDItMTUgIE5vJ2Ft
IFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBbVGV4bWFw
XSBEaXZpZGUgVGV4dHVyZU1hcHBlck5vZGUuY3BwIHRvIDMgZmlsZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjY2MAorCisgICAgICAgIFJlbmFt
ZSBUZXh0dXJlTWFwcGVyTm9kZSB0byBUZXh0dXJlTWFwcGVyTGF5ZXIuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlckNvbXBvc2l0ZWRM
YXllcnMpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChRV2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgKFFXZWJGcmFt
ZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6VGV4dHVyZU1hcHBl
ckxheWVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyQ2xp
ZW50UXQ6OnNldFRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyQ2xpZW50UXQ6On5UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6c3luY1Jvb3RMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6cm9vdExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c3luY0xheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzeW5jTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldFJvb3RHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAg
ICAgKFRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0KToKKyAgICAgICAgKFBhZ2VDbGllbnRRV2lk
Z2V0KToKKyAgICAgICAgKFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQpOgorCisyMDEyLTAyLTEx
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIENv
bnZlcnQgc3ZnL2FuaW1hdGlvbnMgdG8gdXNlIFNNSUwgbWV0aG9kcyBmb3IgZHJpdmluZyB0aGUg
dGltZWxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4NDIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgorCisgICAgICAgIFJl
bW92ZSBTVkcgYW5pbWF0aW9uIHNhbXBsaW5nIGZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgZm9yIERS
VCwgd2hpY2ggbm8gbG9uZ2VyIHVzZXMgaXQuCisgICAgICAgIEluc3RlYWQgd2Ugc3dpdGNoZWQg
dGhlIHN2Zy9hbmltYXRpb25zIHRlc3RzIHRvIHVzZSBTVkdTVkdFbGVtZW50LnNldEN1cnJlbnRU
aW1lLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6
CisKKzIwMTItMDItMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAg
ICAgICBCdWlsZCBmaXguIFVucmV2aWV3ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KToKKworMjAxMi0wMi0xMyAgRW5yaWNhIENhc3VjY2kg
IDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIE1hYyBwbGF0Zm9ybSBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgUGFzdGVib2FyZCBjbGFzcyB0byB1c2UgUGxhdGZvcm0gU3RyYXRl
Z2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
MjgyCisKKyAgICAgICAgQnVpbGQgZml4LiBVbnJldmlld2VkLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3kpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdCk6CisKKzIwMTItMDItMTIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUGFnZSBzaG91bGQgaGF2ZSBsZXNzIGludHJ1c2l2ZSB3YXkgdG8gYXNz
b2NpYXRlIEFQSSBpbXBsZW1lbnRhdGlvbiBvYmplY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwODUKKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKworMjAxMi0wMi0wOSAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBGaXggY29t
cGlsYXRpb24gd2l0aCBuZXdlciBRdDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDogUmVtb3ZlZCB1bm5l
Y2Vzc2FyeSBpbmNsdXNpb24gb2YgcmVtb3ZlZCBoZWFkZXIgZmlsZS4KKyAgICAgICAgKiBkZWNs
YXJhdGl2ZS9wdWJsaWMucHJpOiBVc2UgcXVpY2sxIGluc3RlYWQgb2YgcXRxdWljazEuIEl0J3Mg
bWFuZGF0b3Igd2l0aCBRdCA1LgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaTogRGl0dG8uCisg
ICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlld19wLmg6IEZpeCBpbmNsdWRl
cywganVzdCB1c2UgdGhlIG1vZHVsZS1sZXNzCisgICAgICAgIHZlcnNpb24gdGhhdCB3b3JrcyB3
aXRoIGFsbCBRdCB2ZXJzaW9ucy4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3
L3RzdF9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDogRGl0dG8uCisKKzIwMTItMDItMDggIExlbyBG
cmFuY2hpICA8bGZyYW5jaGlAa2RlLm9yZz4KKworICAgICAgICBSZW1vdGUgd2ViIGluc3BlY3Rv
ciByZWVudHJhbmN5IGZpeGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzAyMgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ6OnRjcFJlYWR5UmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0Ojp3
ZWJTb2NrZXRSZWFkeVJlYWQpOgorCisyMDEyLTAyLTA2ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVp
cmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUHJvdmlk
ZSBtb3JlIGF0dHJpYnV0ZSBtZXRob2RzIGluIEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAg
KFFXZWJFbGVtZW50OjphdHRyaWJ1dGVOYW1lcyk6IGFjY2VzcyBhdHRyaWJ1dGVzIHZpYSBFbGVt
ZW50IGludGVyZmFjZS4KKworMjAxMi0wMi0wMyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4u
dHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRG9uJ3QgdmVyc2lvbiBRdFdlYktp
dC5leHBlcmltZW50YWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzczOQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisK
KyAgICAgICAgV2Ugd29uJ3Qgc3VwcG9ydCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgZXhwZXJp
bWVudGFsIEFQSS4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9wbHVnaW4u
Y3BwOgorCisyMDEyLTAyLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW1vdmUgSlNPYmplY3QgZGVmaW5lR2V0dGVyL2RlZmluZVNldHRl
ciBsb29rdXBHZXR0ZXIvbG9va3VwU2V0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKKyAgICAgICAgVGhlc2UgY2FuIG5vdyBhbGwgYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMg
b2YgZGVmaW5lT3duUHJvcGVydHkgJiBnZXRQcm9wZXJ0eURlc2NyaXB0b3IuCisgICAgICAgIEFs
c28gcmVtb3ZlIGluaXRpYWxpemVHZXR0ZXJTZXR0ZXJQcm9wZXJ0eSwgc2luY2UgdGhpcyBpcyBl
cXVpdmFsZW50IHRvIHB1dERpcmVjdEFjY2Vzc29yLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRvR2xvYmFsT2Jq
ZWN0KToKKworMjAxMi0wMi0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgvLmNwcCB0byBTdHls
ZVByb3BlcnR5U2V0LmgvLmNwcCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorCisyMDEyLTAyLTAzICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3NDAKKyAgICAgICAgU3BsaXQgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24gaW50byBzZXBhcmF0ZSBpbnRlcm5hbCBhbmQgQ1NTT00gdHlwZXMgCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZyBhbmQgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
KiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnN0eWxlUHJvcGVy
dHkpOgorCisyMDEyLTAyLTAzICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tp
YS5jb20+CisKKyAgICAgICAgW1F0XVtUZXhtYXBdIFJlZmFjdG9yIFRleHR1cmVNYXBwZXIgQVBJ
IHRvIHVzZSBJbWFnZUJ1ZmZlcnMgd2hlbiBwb3NzaWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWFydGluIFJvYmluc29uLgorCisgICAgICAgIFVzZSBUZXh0dXJlTWFwcGVyOjpjcmVhdGUgaW5z
dGVhZCBvZiBjcmVhdGluZyBUZXh0dXJlTWFwcGVyR0wvVGV4dHVyZU1hcHBlclF0IGRpcmVjdGx5
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2
YXRlOjpyZW5kZXJDb21wb3NpdGVkTGF5ZXJzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
YWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnNl
dFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhp
Y3NXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKToKKworMjAxMi0wMi0wMiAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEwNjYyMC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTA2NjIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NzcxNgorCisgICAgICAgIEl0IGJyb2tlIG5vbiBFTkFCTEUoM0RfUkVOREVSSU5HKSBi
dWlsZHMgKFJlcXVlc3RlZCBieQorICAgICAgICBPc3N5X21vcm5pbmcgb24gI3dlYmtpdCkuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6
OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c2V0Um9v
dEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dp
ZGdldDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorCisyMDEyLTAyLTAyICBObydhbSBSb3NlbnRo
YWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtUZXhtYXBdIFJl
ZmFjdG9yIFRleHR1cmVNYXBwZXIgQVBJIHRvIHVzZSBJbWFnZUJ1ZmZlcnMgd2hlbiBwb3NzaWJs
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTQ4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgorCisgICAgICAgIFVzZSBU
ZXh0dXJlTWFwcGVyOjpjcmVhdGUgaW5zdGVhZCBvZiBjcmVhdGluZyBUZXh0dXJlTWFwcGVyR0wv
VGV4dHVyZU1hcHBlclF0IGRpcmVjdGx5LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6
CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJDb21wb3NpdGVkTGF5ZXJzKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKToK
KworMjAxMi0wMi0wMSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2
ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEF2b2lkIGNyZWF0aW5nIE5hbWVkTm9kZU1h
cCB1bm5lY2Vzc2FyaWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NzU3NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAg
ICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6YXR0cmli
dXRlTmFtZXMpOiB1c2UgdXBkYXRlQXR0cmlidXRlcygpLgorCisyMDEyLTAyLTAxICBBbGV4aXMg
TWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIENTU1N0eWxl
RGVjbGFyYXRpb24uZ2V0UHJvcGVydHlQcmlvcml0eSgpIGZhaWxzIGZvciBDU1Mgc2hvcnRoYW5k
IHByb3BlcnRpZXMgd2l0aCAnaW1wb3J0YW50JyBwcmlvcml0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwNTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFVwZGF0ZSB0aGUgY29kZSBhcyBnZXRQcm9wZXJ0
eVByaW9yaXR5IGhhcyBiZWVuIHJlbmFtZWQgdG8gcHJvcGVydHlJc0ltcG9ydGFudC4KKworICAg
ICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c3R5bGVQ
cm9wZXJ0eSk6CisKKzIwMTItMDEtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFRyeSB0byBmaXggUXQgYnVpbGQuCisKKyAgICAgICAgTm90IHJldmlld2Vk
LgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50
OjpzdHlsZVByb3BlcnR5KToKKworMjAxMi0wMS0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIG5vbi1DU1NPTSBBUEkgb2YgQ1NTU3R5bGVEZWNs
YXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzcyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICog
QXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5
KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzZXRTdHlsZVByb3BlcnR5KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKToK
KworMjAxMi0wMS0yNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBbUXRdIHB1YmxpYy5wcmkgaXMgbWlzc2luZyBkZXBlbmRlbmN5IHRvIHF1aWNrIG1vZHVsZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDE2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICAqIGRlY2xh
cmF0aXZlL3B1YmxpYy5wcmk6CisKKzIwMTItMDEtMTcgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAg
PG9zdGFwZW5rby52aWF0Y2hlc2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBEZWJ1ZyBi
dWlsZCBmYWlscyB3aXRoIGRlYnVnIHF0NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzY0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBBZGQgUU5ldHdvcmtDb29raWUgaW5jbHVkZSBpbiBvcmRlciB0byBz
YXRpc2Z5IHNpemVvZiBpbiBRVHlwZUluZm8gaW4gZGVidWcgYnVpbGRzLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmNwcDoKKworMjAxMi0wMS0x
MyAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5saXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
W1F0XSBGaXggbWlzc2luZyBzaWduYWwgaW4gcXdlYmZyYW1lIEFQSSB0ZXN0IGZvciBRdDUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAgICAgSW4gUXQ1IFFPYmpl
Y3QgaGFzIGEgbmV3IHNpZ25hbCB3aXRoIHRoaXMgc2lnbmF0dXJlOiAib2JqZWN0TmFtZUNoYW5n
ZWQoUVN0cmluZykiLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6ZW51bWVyYXRlX2RhdGEpOgorCisyMDEyLTAx
LTExICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1h
a2UgZGVmYXVsdCBjb25zb2xlIG1lc3NhZ2VzIGxpbmUgbnVtYmVycyBjb25zaXN0ZW50LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFVuc2V0IGxpbmUgbnVt
YmVycyBhcmUgbm90IHByaW50ZWQgdG8gY29uc29sZSBub3cuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6
CisKKzIwMTItMDEtMTEgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQgdHJpdmlhbCBidWlsZCBmaXg6IFJlbW92ZWQgdW5uZWNl
c3NhcnkgUUh0dHBSZXF1ZXN0SGVhZGVyCisgICAgICAgIGluY2x1c2lvbiAoYW5kIHRoZSBmaWxl
IGlzIHJlbW92ZWQgaW4gbmV3ZXIgUXQgNSB2ZXJzaW9ucykuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorCisyMDEyLTAxLTExICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIEZpeCB0aGUgYnVpbGQgZm9yIG5ld2Vy
IFF0NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGRl
ZCBRSHR0cEhlYWRlciwgUUh0dHBSZXNwb25zZUhlYWRlciBhbmQgUUh0dHBSZXF1ZXN0SGVhZGVy
CisgICAgICAgIHRoYXQgd2VyZSByZW1vdmVkIGZyb20gUXQuIFRoZXkgYXJlIG5vdyBrZXB0IHVu
ZGVyIGEgcHJpdmF0ZSBoZWFkZXIKKyAgICAgICAgYW5kIG9ubHkgdGhlIHJlbGV2YW50IGNvZGUg
aXMgcHJlc2VudC4KKworICAgICAgICAqIEFwaS9xaHR0cGhlYWRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoUUh0dHBIZWFkZXI6OlFIdHRwSGVhZGVyKToKKyAgICAgICAgKFFIdHRwSGVhZGVyOjp+
UUh0dHBIZWFkZXIpOgorICAgICAgICAoUUh0dHBIZWFkZXI6OnBhcnNlKToKKyAgICAgICAgKFFI
dHRwSGVhZGVyOjp2YWx1ZSk6CisgICAgICAgIChRSHR0cEhlYWRlcjo6aGFzS2V5KToKKyAgICAg
ICAgKFFIdHRwSGVhZGVyOjpzZXRWYWx1ZSk6CisgICAgICAgIChRSHR0cEhlYWRlcjo6YWRkVmFs
dWUpOgorICAgICAgICAoUUh0dHBIZWFkZXI6OnBhcnNlTGluZSk6CisgICAgICAgIChRSHR0cEhl
YWRlcjo6dG9TdHJpbmcpOgorICAgICAgICAoUUh0dHBIZWFkZXI6Omhhc0NvbnRlbnRMZW5ndGgp
OgorICAgICAgICAoUUh0dHBIZWFkZXI6OmNvbnRlbnRMZW5ndGgpOgorICAgICAgICAoUUh0dHBI
ZWFkZXI6OnNldENvbnRlbnRMZW5ndGgpOgorICAgICAgICAoUUh0dHBIZWFkZXI6Omhhc0NvbnRl
bnRUeXBlKToKKyAgICAgICAgKFFIdHRwSGVhZGVyOjpjb250ZW50VHlwZSk6CisgICAgICAgIChR
SHR0cEhlYWRlcjo6c2V0Q29udGVudFR5cGUpOgorICAgICAgICAoUUh0dHBSZXNwb25zZUhlYWRl
cjo6UUh0dHBSZXNwb25zZUhlYWRlcik6CisgICAgICAgIChRSHR0cFJlc3BvbnNlSGVhZGVyOjpw
YXJzZUxpbmUpOgorICAgICAgICAoUUh0dHBSZXNwb25zZUhlYWRlcjo6dG9TdHJpbmcpOgorICAg
ICAgICAoUUh0dHBSZXF1ZXN0SGVhZGVyOjpRSHR0cFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAo
UUh0dHBSZXF1ZXN0SGVhZGVyOjpwYXJzZUxpbmUpOgorICAgICAgICAoUUh0dHBSZXF1ZXN0SGVh
ZGVyOjp0b1N0cmluZyk6CisgICAgICAgICogQXBpL3FodHRwaGVhZGVyX3AuaDogQWRkZWQuCisg
ICAgICAgIChRSHR0cEhlYWRlcjo6aXNWYWxpZCk6CisgICAgICAgIChRSHR0cEhlYWRlcjo6c2V0
VmFsaWQpOgorICAgICAgICAoUUh0dHBSZXNwb25zZUhlYWRlcjo6c3RhdHVzQ29kZSk6CisgICAg
ICAgIChRSHR0cFJlc3BvbnNlSGVhZGVyOjpyZWFzb25QaHJhc2UpOgorICAgICAgICAoUUh0dHBS
ZXNwb25zZUhlYWRlcjo6bWFqb3JWZXJzaW9uKToKKyAgICAgICAgKFFIdHRwUmVzcG9uc2VIZWFk
ZXI6Om1pbm9yVmVyc2lvbik6CisgICAgICAgIChRSHR0cFJlcXVlc3RIZWFkZXI6Om1ldGhvZCk6
CisgICAgICAgIChRSHR0cFJlcXVlc3RIZWFkZXI6OnBhdGgpOgorICAgICAgICAoUUh0dHBSZXF1
ZXN0SGVhZGVyOjptYWpvclZlcnNpb24pOgorICAgICAgICAoUUh0dHBSZXF1ZXN0SGVhZGVyOjpt
aW5vclZlcnNpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0
LmNwcDoKKworMjAxMi0wMS0xMCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9r
aWEuY29tPgorCisgICAgICAgIFtRdF0gRW5hYmxlIENTU19GSUxURVJTIGluIFF0IGJ1aWxkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3NworCisg
ICAgICAgIEZvciBub3csIGRpc2FsbG93IGNvbXBvc2l0aW5nIGZvciBmaWx0ZXJzLiBXZSB3aWxs
IGNoYW5nZSB0aGF0IHRyaWdnZXIgd2hlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzggaXMgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6YWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMpOgorCisyMDEyLTAxLTA4ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTA0NDIxLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMDQ0MjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1ODE2CisKKyAgICAgICAgTmVlZCB0byByZWJhc2VsaW5lIHNvbWUgdGVzdHMgb24gTGlu
dXggKFJlcXVlc3RlZCBieSBub2FtciBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjphbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2Vycyk6CisKKzIwMTItMDEtMDgg
IE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdIEVuYWJsZSBDU1NfRklMVEVSUyBpbiBRdCBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NzcKKworICAgICAgICBGb3Igbm93LCBkaXNh
bGxvdyBjb21wb3NpdGluZyBmb3IgZmlsdGVycy4gV2Ugd2lsbCBjaGFuZ2UgdGhhdCB0cmlnZ2Vy
IHdoZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1
Nzc4IGlzIGltcGxlbWVudGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmFsbG93ZWRDb21wb3NpdGlu
Z1RyaWdnZXJzKToKKworMjAxMi0wMS0wOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNDQwMy4K
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA0NDAzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMworCisgICAgICAg
IEl0IGJyb2tlIGFsbCB0ZXN0cyBvbiBRdDUgKFJlcXVlc3RlZCBieSBPc3N5X3dlZWtlbmQgb24K
KyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6YWxsb3dlZENvbXBv
c2l0aW5nVHJpZ2dlcnMpOgorCisyMDEyLTAxLTA4ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJv
c2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBFbmFibGUgQ1NTX0ZJTFRFUlMgaW4g
UXQgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1Nzc3CisKKyAgICAgICAgRm9yIG5vdywgZGlzYWxsb3cgY29tcG9zaXRpbmcgZm9yIGZpbHRl
cnMuIFdlIHdpbGwgY2hhbmdlIHRoYXQgdHJpZ2dlciB3aGVuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3OCBpcyBpbXBsZW1lbnRlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjphbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2Vycyk6CisKKzIwMTItMDEtMDUg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDQyMzEuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzEwNDIzMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzU2NjgKKworICAgICAgICBCcmVha3MgdGhlIFF0IGJ1aWxkIChSZXF1
ZXN0ZWQgYnkgYWJhcnRoIG9uICN3ZWJraXQpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCk6CisKKzIwMTIt
MDEtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1
Y2UgUGxhdGZvcm0gbmFtZXNwYWNlIGZvciBXZWJDb3JlL3BsYXRmb3JtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1MworCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCk6CisKKzIwMTItMDEtMDUgIFpl
bm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxl
bWVudCBjdXN0b20gVVJMIHNjaGVtZXMgZGVmaW5lZCBpbiBRTUwuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDkzMQorCisgICAgICAgIE1ha2UgY2xh
c3NlcyBRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0ZSwgUVF1aWNrTmV0d29ya1JlcXVlc3QKKyAgICAg
ICAgYW5kIFFRdWlja05ldHdvcmtSZXBseSBhY2Nlc3NpYmxlIGZyb20gUU1MLgorCisgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogZGVj
bGFyYXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5wcmk6CisgICAgICAgICogZGVjbGFy
YXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHA6CisgICAgICAgICogZGVjbGFyYXRpdmUvcHVi
bGljLnByaToKKworMjAxMi0wMS0wNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Ri
b0Bub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBJbnRyb2R1Y2UgbmV3IHFtYWtlIHZhcmlhYmxl
ICdXRUJLSVQnIGZvciBzaWduYWxpbmcgZGVwZW5kZW5jaWVzCisKKyAgICAgICAgVGhlIGN1c3Rv
bSBxbWFrZSB2YXJpYWJsZSAnV0VCS0lUJyBpcyB1c2VkIGZvciBzaWduYWxpbmcgdGhhdCBhCisg
ICAgICAgIHRhcmdldCBkZXBlbmRzIGluIHNvbWUgd2F5IG9uIG90aGVyIHN1YnByb2plY3Qgb2Yg
dGhlIFdlYktpdAorICAgICAgICBwcm9qZWN0LiBGb3Igbm93IHRoaXMgaXMgbGltaXRlZCB0byB0
aGUgc2V0IG9mIGludGVybWVkaWF0ZQorICAgICAgICBsaWJyYXJpZXM6IHd0ZiwgamF2YXNjcmlw
dGNvcmUsIHdlYmNvcmUsIGFuZCB3ZWJraXQyLgorCisgICAgICAgIFRoaXMgcmVwbGFjZXMgdGhl
IHByZXZpb3VzIGNvbnZlbnNpb24gb2YgdXNpbmcgbG9hZChmb28pIGZvcgorICAgICAgICBqdXN0
IGluY2x1ZGUgcGF0aHMsIGFuZCBDT05GSUcgKz0gZm9vIHRvIGFsc28gbGluayBhZ2FpbnN0IGZv
by4KKworICAgICAgICBBZGRpbmcgYSBkZXBlbmRlbmN5IHJlc3VsdHMgaW4gYWRkaXRpb25hbCBp
bmNsdWRlIHBhdGhzIGJlaW5nCisgICAgICAgIGF2YWlsYWJsZSwgYW5kIHBvdGVudGlhbGx5IGxp
bmtpbmcgdG8gdGhlIGxpYnJhcnkuIFRoaXMgaXMKKyAgICAgICAgZGVjaWRlZCBieSB0aGUgYnVp
bGQgc3lzdGVtIGJhc2VkIG9uIGNvbmRpdGlvbnMgc3VjaCBhcyB3aGF0CisgICAgICAgIGtpbmQg
b2YgdGFyZ2V0IGlzIGJlaW5nIGJ1aWx0IGFuZCB0aGUgZ2VuZXJhbCBidWlsZCBjb25maWcuCisK
KyAgICAgICAgQW4gYWR2YW50YWdlIHRvIGhpcyBhcHByb2FjaCBpcyB0aGF0IGl0IHNpbXBsaWZp
ZXMgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgZm9vLnByZiBmaWxlcywgZm9yIGV4YW1wbGUgYnkg
YWxsb3dpbmcgdXMgdG8gdXNlIElOQ0xVREVQQVRIICs9CisgICAgICAgIGFuZCBMSUJTICs9IGFz
IG5vcm1hbCBpbnN0ZWFkIG9mIHByZXBlbmRpbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3FncmFwaGlj
c3dlYnZpZXcucHJvOgorCisyMDEyLTAxLTA0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUu
dmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIE1vdmUgdXNlIG9mICQkcXRMaWJyYXJ5
VGFyZ2V0KCkgdG8gYSBzaW5nbGUgcGxhY2UKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRh
bC9leHBlcmltZW50YWwucHJpOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3B1YmxpYy5wcmk6Cisg
ICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOgorCisy
MDEyLTAxLTAzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBMZWFrIG9m
IFdlYk5vdGlmaWNhdGlvbkNsaWVudCB3aGVuIHBhZ2UgaXMgZGVzdHJveWVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDk4MAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTA2MTEyMzE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5v
dGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQpOiBFbXB0eSBpbXBsZW1lbnRhdGlvbiwgYmVj
YXVzZQorICAgICAgICBvd25lcnNoaXAgbW9kZWwgZGlmZmVycy4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oOgorCisyMDExLTEyLTIwICBB
ZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEF2b2lkIHVubmVjZXNz
YXJ5IHdvcmsgd2hlbiByZW1vdmluZyBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQu
Y3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6IFVwZGF0ZWQgYSBj
YWxsZXIgb2YKKyAgICAgICAgV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlIHRvIHJl
bW92ZSBFeGNlcHRpb25Db2RlIGFyZ3VtZW50LgorCisyMDExLTEyLTIwICBSYWZhZWwgQnJhbmRh
byAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBFeHRlbmQgUVF1
aWNrV2Vidmlldzo6bmF2aWdhdGlvblJlcXVlc3RlZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1
Z2luLmNwcDoKKworMjAxMS0xMi0yMCAgSmFycmVkIE5pY2hvbGxzICA8amFycmVkQHNlbmNoYS5j
b20+CisKKyAgICAgICAgW1F0XSBIVFRQIGhlYWRlciBpbmplY3Rpb24gdmlhIFFXZWJQYWdlOjp1
c2VyQWdlbnRGb3JVcmwoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg1NjAKKworICAgICAgICBTdHJpcCBvdXQgbmV3bGluZSBjaGFyYWN0ZXJzIGZy
b20gdGhlIHJlc3VsdCBvZiB1c2VyQWdlbnRGb3JVcmwoKSB0byBwcmV2ZW50IGFkZGl0aW9uYWwK
KyAgICAgICAgSFRUUCBoZWFkZXJzIGluIEhUVFAgcmVxdWVzdHMuCisKKyAgICAgICAgTmV3IFF0
VGVzdCBjYXNlIHRoYXQgdmFsaWRhdGVzIHRoZSB1c2VyIGFnZW50LCBhcyByZXR1cm5lZCBieSBu
YXZpZ2F0b3IudXNlckFnZW50LCBkb2VzIG5vdAorICAgICAgICBjb250YWluIGFueSBuZXdsaW5l
IGNoYXJhY3RlcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVzZXJBZ2VudCk6CisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKEN1c3RvbVVzZXJBZ2VudFdl
YlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnVzZXJBZ2Vu
dE5ld2xpbmVTdHJpcHBpbmcpOgorCisyMDExLTEyLTIwICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFl
bC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIEltcGxlbWVudCBmYXZp
Y29uIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpp
bml0aWFsaXplRW5naW5lKTogU2V0dXAgZm9yIHRoZSBRRGVjbGFyYXRpdmVJbWFnZVByb3ZpZGVy
IHRvIGRpc3BsYXkgZmF2aWNvbnMuCisgICAgICAgIEl0cyBoYW5kbGVzIHRoZSBmb2xsb3dpbmcg
dXJsIGZvcm1hdDogImltYWdlOi8vd2ViaWNvbi88aWNvbklEPiM8cGFnZVVSTD4iLgorCisyMDEx
LTEyLTE5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9yZSBQbGF0
Zm9ybUV2ZW50IGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c3dhbGxvd0Nv
bnRleHRNZW51RXZlbnQpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyBuYW1lcywgYWNjZXNz
IHN0eWxlLgorCisyMDExLTEyLTE5ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFoZkAweDkwLmRrPgor
CisgICAgICAgIFtRdF0gQ2xlYW51cCBRVE1fTkFNRVNQQUNFIHVzYWdlIGluIERldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJRdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzQ4NTMKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Rl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0Lmg6CisKKzIwMTEtMTItMTkgIEFsZXhhbmRlciBG
w6Zyw7h5ICA8YWhmQDB4OTAuZGs+CisKKyAgICAgICAgW1F0XSBDbGVhbnVwIERldmljZU1vdGlv
bkNsaWVudFF0IGFuZCBmcmllbmRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ4NDkKKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFucyB1cCB0aGUg
RGV2aWNlTW90aW9uUXQgY2xhc3MgYW5kIGZyaWVuZHMgYnkgYXBwbHlpbmcKKyAgICAgICAgdGhl
IGZvbGxvd2luZyBjaGFuZ2VzOgorCisgICAgICAgIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IHBvaW50
ZXIgdG8gUVdlYlBhZ2UuIFRoaXMgaXMgbmVlZGVkIHRvIGJlIGFibGUgdG8KKyAgICAgICAgICBy
ZXVzZSB0aGUgY29kZSBmb3IgV2ViS2l0Mi4KKyAgICAgICAgLSBSZW1vdmUgUU9iamVjdCBkZXBl
bmRlbmNpZXMgYW5kIGFsbCBzaWduYWxzL3Nsb3RzLiBJbnN0ZWFkLCB3ZSBjYWxsCisgICAgICAg
ICAgZGlkQ2hhbmdlRGV2aWNlTW90aW9uKCkgb24gdGhlIGNvbnRyb2xsZXIgZGlyZWN0bHkgZnJv
bQorICAgICAgICAgIERldmljZU1vdGlvblByb3ZpZGVyUXQuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0RldmljZU1vdGlvbkNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmlj
ZU1vdGlvbkNsaWVudFF0OjpEZXZpY2VNb3Rpb25DbGllbnRRdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25DbGllbnRRdDo6fkRldmljZU1vdGlvbkNsaWVudFF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudFF0OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0RldmljZU1vdGlvblByb3ZpZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlTW90aW9uUHJvdmlkZXJRdDo6RGV2aWNlTW90aW9uUHJvdmlkZXJRdCk6CisgICAgICAg
IChXZWJDb3JlOjpEZXZpY2VNb3Rpb25Qcm92aWRlclF0OjpzZXRDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRldmljZU1vdGlvblByb3ZpZGVyUXQ6OmZpbHRlcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uUHJvdmlkZXJRdC5oOgorCisyMDExLTEyLTE4ICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZW5h
bWUgRWRpdENvbW1hbmRRdCB0byBVbmRvU3RlcFF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5jcHAuCisgICAgICAgIChV
bmRvU3RlcFF0OjpVbmRvU3RlcFF0KToKKyAgICAgICAgKFVuZG9TdGVwUXQ6On5VbmRvU3RlcFF0
KToKKyAgICAgICAgKFVuZG9TdGVwUXQ6OnJlZG8pOgorICAgICAgICAoVW5kb1N0ZXBRdDo6dW5k
byk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVW5kb1N0ZXBRdC5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmguCisKKzIwMTEt
MTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuYW1l
IHJlZ2lzdGVyQ29tbWFuZEZvcihVbmRvfFJlZG8pIHRvIHJlZ2lzdGVyKFVuZG98UmVkbylTdGVw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OnJlZ2lzdGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0Lmg6CisKKzIwMTEtMTItMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBHaXZlIFBsYXRmb3JtRXZlbnRzIGEgYmFzZSBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ2ODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgQWRkIGEgYmFzZSBjbGFzcyBmb3IgUGxhdGZv
cm1Nb3VzZUV2ZW50LCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQsIFBsYXRmb3JtV2hlZWxFdmVudAor
ICAgICAgICBhbmQgUGxhdGZvcm1HZXN0dXJlRXZlbnQgYW5kIG1vdmUgVHlwZSBlbnVtZXJhdGlv
biBhbmQgbW9kaWZpZXJzIGRvd24gdG8gaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERy
YWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAx
MS0xMi0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBPbmx5
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24gc2hvdWxkIGltcGxlbWVudCB1bmFwcGx5IGFuZCByZWFw
cGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEVkaXRDb21t
YW5kUXQgaXMgdG8gYmUgcmVuYW1lZCB0byBVbmRvU3RlcFF0IGluIGEgZm9sbG93IHVwIHBhdGNo
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5jcHA6CisgICAgICAg
IChFZGl0Q29tbWFuZFF0OjpFZGl0Q29tbWFuZFF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0Q29tbWFuZFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFu
ZEZvclVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29t
bWFuZEZvclJlZG8pOgorCisyMDExLTEyLTE0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUu
dmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEdldCByaWQgb2YgbGF5ZXJpbmcgdmlv
bGF0aW9uIGluIFBsdWdpblZpZXdRdAorCisgICAgICAgIFBsdWdpblZpZXdRdCBoYXMgYSBsYXll
cmluZyB2aW9sYXRpb24gaW4gcmVseWluZyBvbiBRV2ViUGFnZVByaXZhdGUgZm9yCisgICAgICAg
IHRoZSBjaGVjayBpZiBydW5uaW5nIHVuZGVyIERSVC4gV2UgcmVtb3ZlIHRoaXMgYW5kIGFkZCBh
IHNwZWNpZmljIGZsYWcKKyAgICAgICAgaW4gdGhlIFBsdWdpblZpZXcgZm9yIHRoaXMgY2hlY2ss
IGVuYWJsZWQgZnJvbSBEUlRTdXBwb3J0LiBUaGlzIGlzbid0CisgICAgICAgIHByZXR0eSwgYnV0
IGFuIGltcHJvdmVtZW50IG92ZXIgd2hhdCdzIGN1cnJlbnRseSB0aGVyZS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzZXREdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKToKKworMjAxMS0xMi0xNSAgTWljaGFl
bCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgW1FUXVtX
SzJdQWRkIChleHBlcmltZW50YWwpIHZpZXdwb3J0IGluZm8gdmlldyB0byBNaW5pYnJvd3Nlci9x
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBleHRlbmRzIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwgYnkgYSBw
cm9wZXJ0eSBuYW1lZAorICAgICAgICB2aWV3cG9ydEluZm8sIHdoaWNoIGNvbnRhaW5zIHRoZSB2
aWV3cG9ydCBzY2FsYWJpbGl0eSBhbmQKKyAgICAgICAgbGF5b3V0IGFuZCBjb250ZW50cyBzaXpl
IGluZm9ybWF0aW9uLiBUaGlzIHByb3BlcnR5IGlzIGV4cG9zZWQgdG8KKyAgICAgICAgUU1MIHRo
cm91Z2ggdGhlIGV4cGVyaW1lbnRhbCBleHRlbnNpb24gZm9yIFFRdWlja1dlYlZpZXcuCisKKyAg
ICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2luLmNwcDoKKworMjAxMS0xMi0x
NSAgQWxleGFuZGVyIEbDpnLDuHkgIDxhaGZAMHg5MC5kaz4KKworICAgICAgICBbUXRdIFJlbW92
ZSB1bm5lY2Vzc2FyeSBtZXRob2RzIGFuZCBtZW1iZXJzIGZyb20gRGV2aWNlT3JpZW50YXRpb25D
bGllbnRRdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ1ODgKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBS
ZW1vdmUgdGhlIHVudXNlZCBtZXRob2QgY2hhbmdlRGV2aWNlT3JpZW50YXRpb24oKSBmcm9tCisg
ICAgICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50UXQgYW5kIHJlbW92ZSB0aGUgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyCisgICAgICAgIG1lbWJlciBzaW5jZSBpdCBpcyB1bnVzZWQuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UXQ6OkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGll
bnRRdDo6c2V0Q29udHJvbGxlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRRdC5oOgorCisyMDExLTEyLTE0ICBKaW5nIFpoYW8gIDxqaW5nemhhb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgT3BlbmluZyB0d28gcG9wdXAgbWVudXMgYnkgZGlzcGF0
Y2hFdmVudCgpIG1ha2VzIHByb2JsZW1zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpoYXNPcGVuZWRQb3B1cCk6IE5vdCBpbXBsZW1l
bnRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOiBPdmVycmlk
ZXMgaGFzT3BlbmVkUG9wdXAoKS4KKworMjAxMS0xMi0xNCAgSGFqaW1lIE1vcnJpdGEgIDxtb3Jy
aXRhQGNocm9taXVtLm9yZz4KKworICAgICAgICBKU19JTkxJTkUgYW5kIFdURl9JTkxJTkUgc2hv
dWxkIGJlIHZpc2libGUgZnJvbSBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9s
bGl2aWVyLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgYSBJTkNMVURFUEFUSCB0byBtYWtlIEpT
RXhwb3J0TWFjcm9zLmggdmlzaWJsZS4KKworICAgICAgICAqIHRlc3RzL01JTUVTbmlmZmluZy9N
SU1FU25pZmZpbmcucHJvCisKKzIwMTEtMTItMTQgIEFsZXhhbmRlciBGw6Zyw7h5ICA8YWhmQDB4
OTAuZGs+CisKKyAgICAgICAgW1F0XSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0IHNob3VsZCBp
bml0aWFsaXplIG1fY29udHJvbGxlciB0byB6ZXJvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1MjIKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Rldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyUXQ6OkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdCk6CisKKzIwMTEt
MTItMTQgIEFsZXhhbmRlciBGw6Zyw7h5ICA8YWxleGFuZGVyLmZhZXJveUBub2tpYS5jb20+CisK
KyAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gb2YgUXRXZWJLaXQgd2l0aCAtLW9yaWVudGF0
aW9uLWV2ZW50cyB3aXRob3V0IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6Ol9xX29yaWVudGF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNl
TW90aW9uUHJvdmlkZXJRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90
aW9uUHJvdmlkZXJRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0
aW9uUHJvdmlkZXJRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlclF0Lmg6CisKKzIwMTEtMTItMTQgIEFsZXhhbmRlciBGw6Zyw7h5ICA8YWxl
eGFuZGVyLmZhZXJveUBub2tpYS5jb20+CisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIGZvciBR
dCB3aXRoIC0tbWluaW1hbCBvcHRpb24gYWZ0ZXIgcjEwMjc1NS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDExLTEyLTE0
ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFsZXhhbmRlci5mYWVyb3lAbm9raWEuY29tPgorCisgICAg
ICAgIFtRdF0gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrUXQgc2hvdWxkIGJlIHJlbW92ZWQg
aW4gZmF2b3Igb2YgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEJhc2VkIG9uIG9yaWdpbmFsIHBhdGNoIGJ5
IEtlbm5ldGggQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEFscmVhZHkgY292ZXJlZCBieSBjdXJy
ZW50IHRlc3RzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
ZXZpY2VNb3Rpb25Qcm92aWRlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlv
blByb3ZpZGVyUXQ6OkRldmljZU1vdGlvblByb3ZpZGVyUXQpOgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlTW90aW9uUHJvdmlkZXJRdDo6ZmlsdGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EZXZpY2VNb3Rpb25Qcm92aWRlclF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrUXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja1F0Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0OjpEZXZpY2VPcmllbnRhdGlv
bkNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UXQ6
On5EZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uQ2xpZW50UXQ6Omxhc3RPcmllbnRhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6OkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdCk6
CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6OnNldENvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0Ojpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6OnN0
b3ApOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0OjpmaWx0
ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uUHJvdmlkZXJR
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0Ojppc0Fj
dGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6Omxh
c3RPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyUXQ6Omhhc0FscGhhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICh0b0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0RldmljZU9yaWVudGF0
aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorCisyMDExLTEyLTEyICBOw6FuZG9yIEh1c3prYSAgPGh1c3prYS5uYW5kb3JAc3R1ZC51LXN6
ZWdlZC5odT4KKworICAgICAgICBbUXRdIE1pc3NpbmcgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cFdpbGxDYWNoZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDI4NworCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOh
Yy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wV2lsbENhY2hlUmVzcG9u
c2VDYWxsYmFja3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oOgorCisyMDExLTEyLTEyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxl
IGluIFFNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
UmVnaXN0ZXIgUVdlYk5hdmlnYXRpb25IaXN0b3J5IGFuZCBRV2ViTmF2aWdhdGlvbkxpc3RNb2Rl
bCBpbiB0aGUgUU1MIHBsdWdpbi4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1lbnRh
bC9wbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVzKToK
KworMjAxMS0xMi0wOSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSByZXF1ZXN0IHBhcmFtZXRlciBvZiBRUXVpY2tX
ZWJWaWV3OjpuYXZpZ2F0aW9uUmVxdWVzdGVkIGlzIG5vdCBhIHJlZ2lzdGVyZWQgdHlwZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgICogZGVjbGFyYXRp
dmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFtbFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6
IFJlZ2lzdGVyaW5nIFFXZWJOYXZpZ2F0aW9uUmVxdWVzdAorCisyMDExLTEyLTA4ICBQaWVycmUg
Um9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIERyb3AgRU5BQkxFX05P
X0xJU1RCT1hfUkVOREVSSU5HLCBhbmQgbWFrZSBpdCBhIHJ1bnRpbWUgZGVjaXNpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoU2VsZWN0RGF0YTo6bXVsdGlwbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBNZW51UXQ6OnNlbGVjdEl0ZW0pOgorCisyMDExLTEyLTA3ICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBVbnJldmll
d2VkIGJ1aWxkZml4IGFmdGVyIHIxMDIyNjIuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQu
Y3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNldFN0eWxlUHJvcGVydHkpOgorCisyMDExLTEy
LTA3ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgQ2hh
bmdlIGZ1bmN0aW9uIG5hbWUgSW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5IHRv
IGZvbGxvdyBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdl
YkNvcmVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KToKKwor
MjAxMS0xMi0wNiAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdW01hY10gQnVpbGRpbmcgZGVidWcgdmVyc2lvbiBvbmx5IGZhaWxzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4OTUKKworICAgICAgICBXZWJL
aXQgcHJvL3ByaSBmaWxlcyBzaG91bGQgbm90IGV4cGxpY2l0bHkgYWRqdXN0CisgICAgICAgIHRo
ZSBkZWJ1Z19hbmRfcmVsZWFzZSBzZXR0aW5ncy4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL2V4cGVyaW1l
bnRhbC9leHBlcmltZW50YWwucHJpOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3B1YmxpYy5wcmk6
CisKKzIwMTEtMTItMDIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMTc1MSBhbmQgcjEwMTc3NS4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTAxNzUxCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwMTc3NQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxOTEKKworICAgICAgICBicmVha3MgV2lu
ZG93cyBidWlsZAorCisgICAgICAgICogdGVzdHMvTUlNRVNuaWZmaW5nL01JTUVTbmlmZmluZy5w
cm86CisKKzIwMTEtMTItMDEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSlNfSU5MSU5FIGFuZCBXVEZfSU5MSU5FIHNob3VsZCBiZSB2aXNpYmxlIGZy
b20gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzMxOTEKKworICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxpdmllci4KKyAgICAgICAg
CisgICAgICAgIEFkZGVkIGEgSU5DTFVERVBBVEggdG8gbWFrZSBKU0V4cG9ydE1hY3Jvcy5oIHZp
c2libGUuCisKKyAgICAgICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvTUlNRVNuaWZmaW5nLnBybwor
CisyMDExLTExLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBhbiB1bm5lZWRlZCBhcmd1bWVudCBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
b3dubG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzM0ODYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICBVcGRhdGVkIGZvciB0aGUgY2hhbmdl
LgorCisyMDExLTExLTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdIEZpeCBjcmFzaCB3aGVuIHVzaW5nIFF0IERSVCB3aXRoIFY4Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICBBZGQg
bWlzc2luZyBoYW5kbGUgc2NvcGVzIGZvciB0aGUgaGFuZGxlcyByZXR1cm5lZCBieSBtYWluV29y
bGRDb250ZXh0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluamVjdEludGVy
bmFsc09iamVjdCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRJbnRl
cm5hbHNPYmplY3QpOgorCisyMDExLTExLTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCBjcmFzaGluZyBsYXlvdXQgdGVzdHMK
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICBGaXggQVNTRVJUSU9OIEZBSUxFRDogbV9rZXkgIT0gUFRIUkVBRF9LRVlTX01BWCBpbiBU
aHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCg2NSkKKyAgICAgICAgc3RhdGljIFdURjo6
VGhyZWFkSWRlbnRpZmllciBXVEY6OlRocmVhZElkZW50aWZpZXJEYXRhOjppZGVudGlmaWVyKCkK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppbml0aWFsaXplKTogQWRkIG1pc3Np
bmcgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpLgorCisyMDExLTExLTMwICBBbmRyZXcg
V2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQg
UVRocmVhZCB0aHJlYWRpbmcgYmFjay1lbmQgd2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBi
YWNrLWVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
RXh0cmFjdCBXZWJDb3JlIGluaXRpYWxpemF0aW9uIG91dCBvZiBRV2ViUGFnZVByaXZhdGUgaW50
byBhCisgICAgICAgIHNlcGFyYXRlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGFsc28g
bmVlZHMgdG8gYmUgY2FsbGVkCisgICAgICAgIGZyb20gcHVibGljIHN0YXRpYyBRV2ViU2V0dGlu
Z3MgbWV0aG9kcyB0aGF0IGNhbGwgaW50byBXZWJDb3JlLAorICAgICAgICBzaW5jZSB0aG9zZSBj
YW4gYmUgdXNlZCBiZWZvcmUgYSBRV2ViUGFnZSBoYXMgYmVlbiBjb25zdHJ1Y3RlZC4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQ
YWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0
SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omljb25EYXRhYmFzZVBh
dGgpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSk6CisgICAgICAg
IChRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRX
ZWJHcmFwaGljKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6d2ViR3JhcGhpYyk6CisgICAgICAg
IChRV2ViU2V0dGluZ3M6OmNsZWFyTWVtb3J5Q2FjaGVzKToKKyAgICAgICAgKFFXZWJTZXR0aW5n
czo6bWF4aW11bVBhZ2VzSW5DYWNoZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9iamVj
dENhY2hlQ2FwYWNpdGllcyk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9y
YWdlUGF0aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aCk6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUGF0aCk6
CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUGF0aCk6
CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVv
dGEpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luaXRXZWJDb3JlUXQuaDogQWRkZWQuCisKKzIwMTEtMTEtMzAgIEFkZW5pbHNvbiBDYXZh
bGNhbnRpICA8YWRlbmlsc29uLnNpbHZhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtX
SzJdIEltcGxlbWVudCBwZXJtaXNzaW9uIEFQSSBmb3IgUXQgcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkyMDAKKworICAgICAgICBQZXJtaXNz
aW9uIEFQSSBob29rdXAgZm9yIEdlb2xvY2F0aW9uLCBpdCBhbGxvd3MgdG8gcmVjZWl2ZSBpbiBX
ZWJWaWV3CisgICAgICAgIGEgc2lnbmFsIHdoZW4gYSBwZXJtaXNzaW9uIHJlcXVlc3QgaXMgZG9u
ZSAoZS5nLiB0byBncmFudCBwZXJtaXNzaW9uCisgICAgICAgIGZvciBhY2Nlc3NpbmcgZ2VvbG9j
YXRpb24gaW5mb3JtYXRpb24pIGFuZCBzZXQgaXQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVzKToKKworMjAxMS0x
MS0yOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAg
ICAgW1F0XSBNYWtlIFdlYktpdC9xdCBidWlsZCB3aXRoIFY4IGFuZCBRdCA1CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMxNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogQXBpL3F3
ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFF0V2ViRWxlbWVudFJ1bnRpbWU6OmluaXRpYWxpemUp
OiAjaWZkZWYgSlNDIGNvZGUKKyAgICAgICAgcHJvcGVybHkuIFRoZXJlJ3Mgbm8gVjggZXF1aXZh
bGVudCBqdXN0IHlldC4KKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDogR2V0IHJpZCBvZiBv
bGQgVjggY3J1ZnQuCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6IFFTY3JpcHRFbmdpbmUgLT4gUUpT
RW5naW5lLgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgIChRdERSVE5vZGVSdW50aW1lOjppbml0aWFsaXplKTogI2lmZGVmIEpTQyBjb2RlLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ3JlYXRlU2NyaXB0Q29udGV4dCk6
IEFkYXB0IHRvIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIFY4IEFQSSBjaGFuZ2VzIHRoYXQg
aGFwcGVuZWQgbG9uZyB0aW1lIGFnby4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OndpbGxSZWxlYXNlU2NyaXB0Q29udGV4dCk6IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOiBBZGQgbWlzc2luZyBpbmNsdWRlIGZvciBW
OCBidWlsZC4KKworMjAxMS0xMS0yOCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ3JlYXRlIHNrZWxldG9uIGZyYW1ld29yayBmb3Igbm90aWZpY2F0aW9ucyBzdXBwb3J0
IGluIFdLMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMyNTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMzU2OTQzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOiBBZGQgbm90
aWZpY2F0aW9uIGNsaWVudCB0byBwYWdlQ2xpZW50cy4KKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6IFJlbW92ZSBub3RpZmljYXRpb24gY2xpZW50IGZyb20gQ2hyb21lQ2xpZW50IGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQu
Y3BwOiBSZWZhY3RvciB3aXRoIGNoYW5nZSBvZiBOb3RpZmljYXRpb25Db250ZW50cyB0byBzdHJ1
Y3QKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6OnRpdGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3BsYXlOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNhbmNl
bCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90
aWZpY2F0aW9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6ZHVtcFJlcGxhY2VkSWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkdW1wU2hvd1RleHQpOgorCisyMDExLTExLTI4ICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRd
IEJ1aWxkIHN5c3RlbSBmaXhlcyBhZ2FpbnN0IFY4LgorCisgICAgICAgIFJldmlld2VkIGJ5IFRv
ciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgYnVp
bGRpbmcgYWdhaW5zdCBRdCdzIHY4IHdpdGgKKyAgICAgICAgdjggaW5jbHVkZSBzdHlsZS4KKwor
ICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFkZXJzL3Y4LWRlYnVnLmg6IEFkZGVkLgorICAgICAg
ICAqIHY4L0ZvcndhcmRpbmdIZWFkZXJzL3Y4LXByZXBhcnNlci5oOiBBZGRlZC4KKyAgICAgICAg
KiB2OC9Gb3J3YXJkaW5nSGVhZGVycy92OC1wcm9maWxlci5oOiBBZGRlZC4KKyAgICAgICAgKiB2
OC9Gb3J3YXJkaW5nSGVhZGVycy92OC10ZXN0aW5nLmg6IEFkZGVkLgorICAgICAgICAqIHY4L0Zv
cndhcmRpbmdIZWFkZXJzL3Y4Lmg6IEFkZGVkLgorICAgICAgICAqIHY4L0ZvcndhcmRpbmdIZWFk
ZXJzL3Y4c3RkaW50Lmg6IEFkZGVkLgorCisyMDExLTExLTI2ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgZGlzY29u
bmVjdEZyb21CYWNrZW5kIGZyb20gdGhlIHByb3RvY29sLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMjcKKworICAgICAgICBSZXZpZXdlZCBieSBZ
dXJ5IFNlbWlraGF0c2t5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Omluc3BlY3Rv
ckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6Y2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudFF0OjppbnNwZWN0b3JDbGllbnREZXN0cm95ZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKKzIwMTEtMTEtMjYgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMDExOTMuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEw
MTE5MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMx
NTgKKworICAgICAgICBCcmVha3MgV2luZG93cyBhbmQgUXQgbWluaW1hbC4gKFJlcXVlc3RlZCBi
eSBwZmVsZG1hbiBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRRdDo6ZGlzY29ubmVjdEZyb21CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6Omluc3BlY3RvckNsaWVudERlc3Ryb3llZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKworMjAxMS0x
MS0yNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogcmVtb3ZlIGRpc2Nvbm5lY3RGcm9tQmFja2VuZCBmcm9tIHRoZSBwcm90b2Nv
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6aW5zcGVjdG9yQ2xpZW50RGVzdHJveWVk
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorCisyMDEx
LTExLTI1ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFtRdF1bV0syXSBRV2ViRG93bmxvYWRJdGVtIHNob3VsZCBiZSByZWdpc3RlcmVkIGlu
IHRoZSBleHBlcmltZW50YWwgcGx1Z2luLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBNYWtlIHN1cmUgUVdlYkRvd25sb2FkSXRlbSBpcyByZWdpc3RlcmVk
IGluIHRoZSByaWdodCBwbHVnaW4uCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50
YWwvcGx1Z2luLmNwcDoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVzKToKKworMjAxMS0xMS0yMiAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
cmVtb3ZlIEluc3BlY3Rvcjo6YnJpbmdUb0Zyb250IGZyb20gdGhlIHByb3RvY29sLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5MzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oOgorCisyMDExLTEwLTE3ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVz
QHJpbS5jb20+CisKKyAgICAgICAgUGFzcyBhIEZyYW1lKiBwYXJhbWV0ZXIgaW4gRWRpdG9yQ2xp
ZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDI0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDog
TWFrZSB1c2Ugb2YgdGhlIG5ld2x5IGFkZGVkIEZyYW1lKiBwYXJhbWV0ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAxMS0xMS0xOCAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUXRdIEVuYWJsZSBX
ZWJTb2NrZXQgaHliaSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzI2ODcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkZWZhdWx0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCk6CisgICAgICAgIENhbGwgV2ViQ29yZTo6
U2V0dGluZ3M6OnNldFVzZUhpeGllNzZXZWJTb2NrZXRQcm90b2NvbCgpIHRvIHN3aXRjaCBXZWJT
b2NrZXQgcHJvdG9jb2xzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisKKzIwMTEtMTEtMTcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gTGF5ZXIgdmlvbGF0aW9uOiBUaGlyZFBhcnR5
Q29va2llc1F0LmNwcCB1c2VzIFFXZWJTZXR0aW5ncyBpbiB0d28gcGxhY2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU5NworCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEltcGxlbWVu
dGVkIE5ldHdvcmtpbmdDb250ZXh0Ojp0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWlzc2lvbiwg
d2hpY2ggcXVlcmllcworICAgICAgICB0aGUgZ2xvYmFsIFFXZWJTZXR0aW5ncy4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp0aGlyZFBhcnR5Q29va2llUG9saWN5QWxsb3dzKTog
QWRhcHQgdG8gdGhlCisgICAgICAgIGNoYW5nZWQgdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1p
dHMgV2ViQ29yZSBBUEkgdGhhdCBvcGVyYXRlcyBvbiBhIG5ldHdvcmtpbmcgY29udGV4dC4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24pOiBQYXNzIG5ldHdvcmtpbmcKKyAgICAgICAgY29udGV4dCB0byBSZXNvdXJjZVJl
cXVlc3Q6OnRvTmV0d29ya1JlcXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnN0YXJ0RG93bmxvYWQpOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dFF0Ojp0aGlyZFBh
cnR5Q29va2llUG9saWN5UGVybWlzc2lvbik6IEltcGxlbWVudC4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0aGlyZFBhcnR5
Q29va2llUG9saWN5KTogQWRhcHQgdG8gUXREUlRTdXBwb3J0IEFQSSBjaGFuZ2UuCisKKzIwMTEt
MTEtMTcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAg
ICAgIFtRdF0gTGF5ZXIgdmlvbGF0aW9uOiBxdF9ydW50aW1lLmNwcCBhY2Nlc3NlcyBRV2ViRWxl
bWVudCBhbmQgUVREUlROb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgor
CisgICAgICAgIE1vdmUgUVdlYkVsZW1lbnQgYW5kIFF0RFJUTm9kZSBKUyBiaW5kaW5ncyBmcm9t
IFdlYkNvcmUgdG8gV2ViS2l0L3F0LgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDog
QWRkIFFXZWJFbGVtZW50IHRvIEpTVmFsdWUgYW5kIEpTVmFsdWUgdG8gUVdlYkVsZW1lbnQKKyAg
ICAgICAgY29udmVyc2lvbiB0aHJvdWdoIGludGVybWVkaWF0ZSBRVmFyaWFudC4KKyAgICAgICAg
KFF0V2ViRWxlbWVudFJ1bnRpbWU6OmNyZWF0ZSk6CisgICAgICAgIChRdFdlYkVsZW1lbnRSdW50
aW1lOjpnZXQpOgorICAgICAgICAoY29udmVydEpTVmFsdWVUb1dlYkVsZW1lbnRWYXJpYW50KToK
KyAgICAgICAgKGNvbnZlcnRXZWJFbGVtZW50VmFyaWFudFRvSlNWYWx1ZSk6CisgICAgICAgIChR
dFdlYkVsZW1lbnRSdW50aW1lOjppbml0aWFsaXplKTogUmVnaXN0ZXIgY29udmVyc2lvbiBmdW5j
dGlvbnMgZm9yIFFXZWJFbGVtZW50LgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5oOgorICAg
ICAgICAqIEFwaS9xd2ViZWxlbWVudF9wLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6IEluaXRp
YWxpemUgUVdlYkVsZW1lbnQgY29udmVyc2lvbiBmdW5jdGlvbnMgZm9yCisgICAgICAgIHRoZSBK
UyBydW50aW1lLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcDogQWRkIFF0RFJUTm9kZSB0byBKU1ZhbHVlIGFuZCBKU1ZhbHVlIHRvCisgICAgICAg
IFF0RFJUTm9kZSBjb252ZXJzaW9uIHRocm91Z2ggaW50ZXJtZWRpYXRlIFFWYXJpYW50LgorICAg
ICAgICAoUXREUlROb2RlUnVudGltZTo6Y3JlYXRlKToKKyAgICAgICAgKFF0RFJUTm9kZVJ1bnRp
bWU6OmdldCk6CisgICAgICAgIChjb252ZXJ0SlNWYWx1ZVRvTm9kZVZhcmlhbnQpOgorICAgICAg
ICAoY29udmVydE5vZGVWYXJpYW50VG9KU1ZhbHVlKToKKyAgICAgICAgKFF0RFJUTm9kZVJ1bnRp
bWU6OmluaXRpYWxpemUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluaXRp
YWxpemUpOiBSZWdpc3RlciBjb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgUXREUlROb2RlLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEt
MTEtMTcgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XSBUaGUgZXhwZXJpbWVudGFsIHBsdWdpbiBkb2Vzbid0IHdvcmsgYWZ0ZXIgYmVp
bmcgcmVuYW1lZC4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisg
ICAgICAgIEl0IHdhcyByZW5hbWVkIGZyb20gcHJpdmF0ZSB0byBleHBlcmltZW50YWwgYnV0IHRo
ZSBxbWxkaXIgZmlsZQorICAgICAgICB3YXMgZm9yZ290dGVuLgorCisgICAgICAgICogZGVjbGFy
YXRpdmUvZXhwZXJpbWVudGFsL3FtbGRpcjoKKworMjAxMS0xMS0xNyAgU2ltb24gSGF1c21hbm4g
IDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBMYXllciB2aW9sYXRp
b246IFdlYkNvcmU6OmRuc1ByZWZldGNoIHVzZXMgUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5n
cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2
YXRlOjphcHBseSk6IFByb3BhZ2F0ZSB0aGUgRE5TIHByZWZldGNoIHNldHRpbmcgdG8gV2ViQ29y
ZTo6U2V0dGluZ3MuCisKKzIwMTEtMTEtMTcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gTGF5ZXIgdmlvbGF0aW9uOiBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UgdXNlcyBRV2ViU2V0dGluZ3M6OndlYkdyYXBoaWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNTk0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgTW92ZSBy
ZXNvdXJjZSBwaXhtYXAgY2FjaGUgaW50byBJbWFnZVF0LmNwcC4KKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAocmVzb3VyY2VOYW1lRm9yV2ViR3JhcGhpYyk6IEhl
bHBlciBmdW5jdGlvbiB0byB0cmFuc2xhdGUgYmV0d2VlbiBwdWJsaWMgQVBJIGVudW1zIGFuZAor
ICAgICAgICByZXNvdXJjZSBuYW1lcy4KKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0V2ViR3Jh
cGhpYyk6IENhbGwgdGhlIG5ldyBJbWFnZVF0OjpzZXRQbGF0Zm9ybVJlc291cmNlIHNldHRlci4K
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6d2ViR3JhcGhpYyk6IENhbGwgSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlIHRvIHJlYWQgZnJvbSB0aGUgY2FjaGUKKyAgICAgICAgaW4gV2ViQ29yZS4K
KworMjAxMS0xMS0xNyAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5j
b20+CisKKyAgICAgICAgW1F0XSBNb3ZlIFdlYktpdDIgQysrIEFQSXMgdG8gcHJpdmF0ZSBBUEkg
YW5kIGJ1aWxkIFFNTCBleHRlbnNpb24gcGx1Z2luIG9uIHRvcCBvZiB0aGF0CisKKyAgICAgICAg
QSBuZXcgZXh0ZW5zaW9uIG9iamVjdCBoYXMgYmVlbiBhZGRlZCB0byBRUXVpY2tXZWJWaWV3ICh0
aGUgc2FtZSBhcHByb2FjaCBzaG91bGQgYmUgdXNlZAorICAgICAgICBmb3Igb3RoZXIgQVBJIGNs
YXNzZXMgdGhhdCBuZWVkIGV4cGVyaW1lbnRhbCBBUElzKS4gVGhlIFFNTCBleHRlbnNpb24gbWVj
aGFuaXNtIGlzIHRoZW4KKyAgICAgICAgYnVpbHQgb24gdG9wIG9mIHRoZSBleHBlcmltZW50YWwg
b2JqZWN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MjUyMgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
ICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOgorICAgICAgICAqIGRlY2xhcmF0aXZlL2V4
cGVyaW1lbnRhbC9leHBlcmltZW50YWwucHJpOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9x
dC9kZWNsYXJhdGl2ZS9wcml2YXRlL3ByaXZhdGUucHJvLgorICAgICAgICAqIGRlY2xhcmF0aXZl
L2V4cGVyaW1lbnRhbC9wbHVnaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9k
ZWNsYXJhdGl2ZS9wcml2YXRlL3BsdWdpbi5jcHAuCisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsRXh0ZW5zaW9uOjpRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsRXh0ZW5zaW9uKToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWxFeHRlbnNpb246OmV4cGVyaW1lbnRh
bCk6CisgICAgICAgICogZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3FtbGRpcjogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcHJpdmF0ZS9xbWxkaXIuCisgICAgICAg
ICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wdWJsaWMu
cHJpOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2RlY2xhcmF0aXZl
LnByby4KKworMjAxMS0xMS0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMDQ0OC4KKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTAwNDQ4CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjUxMgorCisgICAgICAgIEl0IGNh
dXNlZCBhIHJlZ3Jlc3Npb24gYnJlYWtpbmcgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5n
CisgICAgICAgIC90ZXh0LWNvbnRlbnQtdHlwZS13aXRoLWJpbmFyeS1leHRlbnNpb24uaHRtbCAo
UmVxdWVzdGVkIGJ5CisgICAgICAgIGplZXpfIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpjYW5TaG93TUlNRVR5cGUpOgorCisyMDExLTExLTE2ICBKZXN1
cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhblNob3dNSU1FVHlwZSBzaG91bGQgYWx3
YXlzIHJldHVybiB0cnVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIEN1cnJlbnRseSBGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5TaG93TUlNRVR5cGUgaXMg
Y2FsbGVkIGFmdGVyCisgICAgICAgIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UuIElm
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlIHJldHVybnMKKyAgICAgICAgUG9saWN5VXNlIGFuZCBj
YW5TaG93TUlNRVR5cGUgcmV0dXJucyBmYWxzZSwgdGhlbiB3ZSBoYXZlIGEgYnVnLgorICAgICAg
ICBUaGVyZWZvcmUsIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhblNob3dNSU1FVHlwZSBub3cgd2ls
bCBhbHdheXMKKyAgICAgICAgcmV0dXJuIHRydWUsIGZvbGxvd2luZyB0aGUgaW1wbGVtZW5hdGlv
biBvZiBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5TaG93
TUlNRVR5cGUpOgorCisyMDExLTExLTE1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBh
bnkxMDAubmV0PgorCisgICAgICAgIFtUZXhNYXBdW1F0XSBTdGFydCBQYWdlQ2xpZW50UVtHcmFw
aGljc11XaWRnZXQ6OnN5bmNUaW1lciBvbmx5IHdoZW4gdGhlIHN5bmNUaW1lcgorICAgICAgICBp
cyBpbmFjdGl2ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwNDA3CisKKyAgICAgICAgTWFrZSBzdXJlIHdlIG9ubHkgYWN0aXZhdGUgdGhlIHN5bmNo
cm9uaXphdGlvbiB0aW1lciBpbgorICAgICAgICBQYWdlQ2xpZW50UVdpZGdldC9QYWdlQ2xpZW50
UUdyYXBoaWNzV2lkZ2V0IGlmIGl0J3Mgbm90IGFscmVhZHkgYWN0aXZlLAorICAgICAgICBvdGhl
cndpc2Ugc3luY0xheWVycyBtYXkgYmUgY2FsbGVkIHJlZHVuZGFudGx5LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFn
ZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjptYXJr
Rm9yU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c3luY0xheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzeW5jTGF5
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6Om1hcmtG
b3JTeW5jKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OlBhZ2VDbGllbnRRR3JhcGhp
Y3NXaWRnZXQpOgorCisyMDExLTExLTE1ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBSZWZlcnJlclBvbGljeSB0byBjbGFyaWZ5IGl0cyBt
ZWFuaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjQyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAgICAoUVdlYlBh
Z2U6OnRyaWdnZXJBY3Rpb24pOgorCisyMDExLTExLTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgSG9zdFdpbmRvdyBzY3JlZW5Ub1dpbmRvdy93aW5k
b3dUb1NjcmVlbiBzaG91bGQgYmUgc2NyZWVuVG9Sb290Vmlldy9yb290Vmlld1RvU2NyZWVuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaDoKKworMjAxMS0xMS0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgorCisgICAgICAgIEhvc3RXaW5kb3cgaW52YWxpZGF0aW9uIGZ1bmN0aW9ucyBzaG91bGQgdXNl
IHJvb3QgdmlldyBjb29yZGluYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIzMzgKKworICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWlu
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmludmFsaWRhdGVSb290Vmlldyk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmludmFsaWRhdGVDb250ZW50c0Zv
clNsb3dTY3JvbGwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisKKzIwMTEtMTEtMTEgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CisK
KyAgICAgICAgW1F0XSBSZW1vdmUgdGhlIFFTdHlsZSBkZXBlbmRlbmN5IGluIFF0J3MgbW9iaWxl
IHRoZW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Nzc3MworCisgICAgICAgIFRoaXMgcmVmYWN0b3Jpbmcgc3BsaXRzIHVwIFJlbmRlclRoZW1lUXQg
d2l0aCB0d28KKyAgICAgICAgc3ViY2xhc3NlcywgYSBRU3R5bGUtYmFja2VkIG9uZSwgYW5kIGEg
TW9iaWxlIHZlcnNpb24KKyAgICAgICAgdGhhdCB1c2VzIHRoZSBvbGQgbW9iaWxlIHRoZW1lIGZv
ciBub3cuCisKKyAgICAgICAgUVN0eWxlIGF2YWlsYWJpbGl0eSBpcyBkZXRlY3RlZCBhdCBjb21w
aWxlIHRpbWUsIGFuZAorICAgICAgICBpdHMgdXNlIGlzIGRldGVybWluZWQgYnkgdGhlIFFUX1dF
QktJVF9VU0VfTU9CSUxFX1RIRU1FCisgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzd2FsbG93Q29udGV4dE1lbnVFdmVudCk6Cisg
ICAgICAgICogdGVzdHMvdGVzdHMucHJpOgorCisyMDExLTExLTExICBMdWl6IEFnb3N0aW5pICA8
bHVpei5hZ29zdGluaUBwYWxtLmNvbT4KKworICAgICAgICBbUXRdIFJlbW92aW5nIHVubmVlZGVk
ICNpZmRlZiBmcm9tIFBvcHVwTWVudVF0LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJv
c2VudGhhbC4KKworICAgICAgICBQYXJ0IG9mIFBvcHVwTWVudVF0LmNwcCBjb2RlIGlzIGd1YXJk
ZWQgYnkgI2lmbmRlZiBRVF9OT19DT01CT0JPWCBhbHRob3VnaCB0aGF0CisgICAgICAgIGNvZGUg
aXMgbm90IHJlbGF0ZWQgdG8gdGhlIGNsYXNzIFFDb21ib0JveC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0
OjpzaG93KToKKworMjAxMS0xMS0xMSAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxicnVu
by5hYmluYWRlckBiYXN5c2tvbS5jb20+CisKKyAgICAgICAgW1F0XSBTa2lwIHRlc3RzIHdoZW4g
bm8gbmV0d29yayBpcyBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjAzMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgorCisgICAgICAgIFNvbWUgYmVuY2htYXJrIHRlc3RzIHJlcXVpcmVzIG5ldHdvcmsgY29ubmVj
dGlvbiAodGhleSBmZXRjaCBkYXRhIGZyb20KKyAgICAgICAgZXh0ZXJuYWwgVVJMJ3MpIGFuZCBz
byB0aGV5IGZhaWwgaWYgbm8gbmV0d29yayBpcyBwcmVzZW50LiBUaGVzZSB0ZXN0cworICAgICAg
ICBzaG91bGQgYmUgc2tpcHBlZCBpbnN0ZWFkLgorCisgICAgICAgICogdGVzdHMvYmVuY2htYXJr
cy9sb2FkaW5nL3RzdF9sb2FkaW5nLmNwcDoKKyAgICAgICAgKHRzdF9Mb2FkaW5nOjpsb2FkKTog
U2tpcCB0ZXN0IGlmIG5vIG5ldHdvcmsgaXMgcHJlc2VudC4KKyAgICAgICAgKiB0ZXN0cy9iZW5j
aG1hcmtzL3BhaW50aW5nL3RzdF9wYWludGluZy5jcHA6CisgICAgICAgICh0c3RfUGFpbnRpbmc6
OnBhaW50KTogU2tpcCB0ZXN0IGlmIG5vIG5ldHdvcmsgaXMgcHJlc2VudC4KKworMjAxMS0xMS0x
MSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk5OTY0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85OTk2NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzIxMjQKKworICAgICAgICBCcm9rZSB0b28gbWFueSBRdCB0ZXN0cyAo
UmVxdWVzdGVkIGJ5IHRyb25pY2FsXyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQpOgor
ICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaToKKworMjAxMS0xMS0xMSAgUGllcnJlIFJvc3NpICA8
cGllcnJlLnJvc3NpQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdIFJlbW92ZSB0aGUgUVN0eWxl
IGRlcGVuZGVuY3kgaW4gUXQncyBtb2JpbGUgdGhlbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NzczCisKKyAgICAgICAgVGhpcyByZWZhY3Rvcmlu
ZyBzcGxpdHMgdXAgUmVuZGVyVGhlbWVRdCB3aXRoIHR3bworICAgICAgICBzdWJjbGFzc2VzLCBh
IFFTdHlsZS1iYWNrZWQgb25lLCBhbmQgYSBNb2JpbGUgdmVyc2lvbgorICAgICAgICB0aGF0IHVz
ZXMgdGhlIG9sZCBtb2JpbGUgdGhlbWUgZm9yIG5vdy4KKworICAgICAgICBRU3R5bGUgYXZhaWxh
YmlsaXR5IGlzIGRldGVjdGVkIGF0IGNvbXBpbGUgdGltZSwgYW5kCisgICAgICAgIGl0cyB1c2Ug
aXMgZGV0ZXJtaW5lZCBieSB0aGUgUVRfV0VCS0lUX1VTRV9NT0JJTEVfVEhFTUUKKyAgICAgICAg
ZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnN3
YWxsb3dDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6CisKKzIw
MTEtMTEtMTEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgW1F0XSBBZGQgYSB3YXkgdG8gaGF2ZSBleHBlcmltZW50YWwgZmVhdHVyZXMgaW4g
V2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njc3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBhIG5ldyBtb2R1bGUgZm9yIGFjY2Vzc2lu
ZyBwcml2YXRlCisgICAgICAgIG1ldGhvZCBhbmQgcHJvcGVydHkgZnJvbSB0aGUgdmlldy4gSXQg
cmVxdWlyZXMgYW4gaW1wb3J0CisgICAgICAgIFF0V2ViS2l0LnByaXZhdGUgaW4gUU1MIHRvIGJl
IHVzZWQuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wcml2YXRlL3BsdWdpbi5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0UW1sUGx1Z2luUHJpdmF0ZTo6cmVnaXN0ZXJUeXBlcyk6CisgICAg
ICAgICogZGVjbGFyYXRpdmUvcHJpdmF0ZS9wcml2YXRlLnBybzogQWRkZWQuCisgICAgICAgICog
ZGVjbGFyYXRpdmUvcHJpdmF0ZS9xbWxkaXI6IEFkZGVkLgorCisyMDExLTExLTExICBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0g
UmVtb3ZlIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMTMKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAg
KFdlYktpdFFtbFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6IERvbid0IHJlZ2lzdGVyIFFXZWJOYXZp
Z2F0aW9uQ29udHJvbGxlciB3aXRoIHFtbC4KKworMjAxMS0xMS0wMyAgTHVpeiBBZ29zdGluaSAg
PGx1aXouYWdvc3RpbmlAcGFsbS5jb20+CisKKyAgICAgICAgW1F0XSBBZGRpbmcgbWV0aG9kcyBz
ZXRHZW9tZXRyeSBhbmQgc2V0Rm9udCB0byBRV2ViU2VsZWN0TWV0aG9kIGNsYXNzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE1MzAKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGRpbmcgbWV0aG9kcyBz
ZXRHZW9tZXRyeSBhbmQgc2V0Rm9udCBzbyB0aGF0IHVzZXJzIG9mIHBsYXRmb3JtIHBsdWdpbiBt
YXkgc2hvdyB0aGUKKyAgICAgICAgcG9wdXAgbWVudXMgaW4gcHJvcGVyIHBvc2l0aW9uIGFuZCB1
c2luZyBwcm9wZXIgZm9udC4KKworICAgICAgICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4u
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cE1lbnVRdDo6c2hvdyk6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJQb3B1cDo6c2V0R2VvbWV0cnkpOgorICAg
ICAgICAoV2ViUG9wdXA6OnNldEZvbnQpOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorCisyMDExLTExLTEwICBBbGV4aXMgTWVuYXJk
ICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gTWVyZ2UgUVRv
dWNoV2ViVmlldyBhbmQgUURlc2t0b3BXZWJWaWV3IGludG8gb25lIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFJlZ2lzdGVy
IG9ubHkgUVF1aWNrV2ViVmlldyBhbmQgUVF1aWNrV2ViUGFnZSBpbiB0aGUgcGx1Z2luLgorCisg
ICAgICAgICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFtbFBsdWdp
bjo6cmVnaXN0ZXJUeXBlcyk6CisKKzIwMTEtMTEtMDkgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRW5hYmxlIGV4cG9ydHMgYW5kIGNv
bnN0cnVjdG9yIGZ1bmN0aW9ucyBpbiBzdGF0aWMgbGlicworCisgICAgICAgIFJldmlld2VkIGJ5
IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOiBSZW1vdmUgdW5uZWNlc3Nhcnkg
bWFudWFsIFF0IHJlc291cmNlCisgICAgICAgIGluaXRpYWxpemF0aW9uLgorCisyMDExLTExLTA5
ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByOTk3MDEuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0Lzk5NzAxCisKKyAgICAgICAgQnJlYWtzIFF0IG1hYyBidWlsZAorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKGluaXRSZXNvdXJjZXMpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDExLTExLTA5ICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRd
IEVuYWJsZSBleHBvcnRzIGFuZCBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgaW4gc3RhdGljIGxpYnMK
KworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRl
KTogUmVtb3ZlIHVubmVjZXNzYXJ5IG1hbnVhbCBRdCByZXNvdXJjZQorICAgICAgICBpbml0aWFs
aXphdGlvbi4KKworMjAxMS0xMS0wOSAgRGVlcGFrIFNoZXJ2ZWdoYXIgIDxicHd2NjRAbW90b3Jv
bGEuY29tPgorCisgICAgICAgIFtRdF0gNCBMYXlvdXQgdGVzdCBmYWlsIGR1ZSB0byBuZXR3b3Jr
IGVycm9yIGNvbnN0YW50IHZhbHVlcyBjbGFzaCB3aXRoIFdlYmtpdEVycm9yIGVudW0gdmFsdWVz
IGluIEZyYW1lbG9hZGVyY2xpZW50UXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcxNTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgV2Ugc2hvdWxkIGNoZWNrIHRoZSBlcnJvciBkb21haW4gd2hlbiBjaGVj
a2luZyB0aGUgZXJyb3IgY29kZSBpbiBzaG91bGRGYWxsQmFjaygpCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEZhbGxCYWNrKTogYWRkZWQgZXJyb3IgZG9tYWluIGNo
ZWNrCisKKzIwMTEtMTEtMDggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgorCisgICAgICAgIFtRdF0gUmVwbGFjZSB1c2Ugb2YgUUFwcGxpY2F0aW9uIHdpdGggUUd1
aUFwcGxpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF0V2ViQ29tYm9Cb3g6OnNob3dQb3B1cEF0Q3Vyc29yUG9zaXRpb24pOiBSZXBsYWNlIHVzZSBv
ZiBRQXBwbGljYXRpb24KKyAgICAgICAgd2l0aCBRQ29yZUFwcGxpY2F0aW9uLgorCisyMDExLTEx
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzdGF0
aWMgInBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xp
Y3kuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9y
aWdpbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlV2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKToKKworMjAxMS0xMS0wOCAgTHVpeiBBZ29zdGluaSAg
PGx1aXouYWdvc3RpbmlAcGFsbS5jb20+CisKKyAgICAgICAgW1F0XSBSZW1vdmluZyBxd2Via2l0
Z2xvYmFsLmggaW5jbHVzaW9uIGZyb20gcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgcXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmggbXVzdCBub3QgZGVwZW5kIG9uIHF3ZWJraXRnbG9iYWwuaC4KKworICAgICAgICAqIEFw
aS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKworICAgICAgICBVcGRhdGluZyB0aGUgY29weSBv
ZiBxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCB0aGF0IGlzIHVzZWQgYnkgdGhlIGV4YW1wbGUgcGx1
Z2luLiBUaGUgcHJldmlvdXMKKyAgICAgICAgb25lIHdhcyB2ZXJ5IG91dGRhdGVkLgorCisgICAg
ICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisK
KzIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBN
b3ZlIERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW4gc2NoZW1lIHJlZ2lzdHJ5IHRvIFNjaGVtZVJl
Z2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUpOgorCisyMDExLTExLTA3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgor
CisgICAgICAgIFRvd2FyZHMgOCBCaXQgU3RyaW5nczogVGVtcGxhdGl6ZSBKU0M6OkxleGVyIGNs
YXNzIGJ5IGNoYXJhY3RlciB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTMzMQorCisgICAgICAgIENoYW5nZWQgSWRlbnRpZmllcigpIGNvbnN0
cnVjdG9yIHRvIHVzZSBKU0dsb2JhbERhdGEqLgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisKKzIwMTEtMTEtMDcgIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IGZh
aWxpbmcgaW5zcGVjdG9yIHRlc3RzIGFmdGVyIGJ1aWxkIHN5c3RlbSBjaGFuZ2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTY3NworCisgICAgICAg
IFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgRW5zdXJlIHN5bWJvbHMg
ZnJvbSB0aGUgcXQgcmVzb3VyY2Ugc3lzdGVtIGFyZSByZWZlcmVuY2VkCisgICAgICAgIGZyb20g
b3V0c2lkZSB0aGUgc3RhdGljIHdlYmNvcmUgbGlicmFyeS4gT25lIHdheSBvZiBkb2luZyB0aGF0
IGlzCisgICAgICAgIHRvIGluaXRpYWxpemUgdGhlIHJlc291cmNlcyByaWdodCBhd2F5LCBhcyBl
eHBsYWluZWQgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAgICAgICAgb2YgdGggUXQgcmVzb3VyY2Ug
c3lzdGVtLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKGluaXRSZXNv
dXJjZXMpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisy
MDExLTExLTA0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdIFJlZmFjdG9yIGFuZCBjbGVhbiB1cCB0aGUgcW1ha2UgYnVpbGQgc3lz
dGVtCisKKyAgICAgICAgVGhlIHFtYWtlIGJ1aWxkIHN5c3RlbSBoYXMgYWNjdW11bGF0ZWQgYSBi
aXQgb2YgY3J1ZnQgYW5kIHJlZHVuZGFuY3kKKyAgICAgICAgb3ZlciB0aW1lLiBUaGVyZSdzIGFs
c28gYSBmYWlybHkgdGlnaHQgY291cGxpbmcgYmV0d2VlbiBob3cgdG8gYnVpbGQKKyAgICAgICAg
dGhlIHZhcmlvdXMgdGFyZ2V0cywgYW5kIF93aGF0XyB0byBidWlsZCwgbWFraW5nIGl0IGhhcmRl
ciB0byBhZGQgbmV3CisgICAgICAgIHJ1bGVzIG9yIHNvdXJjZXMuIFRoaXMgcGF0Y2ggYWltcyB0
byBlbGV2YXRlIHRoZXNlIGlzc3VlcyBzb21ld2hhdC4KKworICAgICAgICBUaGlzIGlzIGEgc2hv
cnQtbGlzdCBvZiB0aGUgY2hhbmdlczoKKworICAgICAgICAgICogVGhlIHJ1bGVzIGZvciBob3cg
dG8gYnVpbGQgdGFyZ2V0cyBhcmUgbm93IG1vc3RseSBjb250YWluZWQgYXMKKyAgICAgICAgICAg
IHByZi1maWxlcyBpbiBUb29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzLiBVc2luZyBta3NwZWNz
IGFsc28KKyAgICAgICAgICAgIGFsbG93cyB1cyB0byBkbyBwcmUtIGFuZCBwb3N0LXByb2Nlc3Np
bmcgb2YgZWFjaCBwcm9qZWN0IGZpbGUsCisgICAgICAgICAgICB3aGljaCBoZWxwcyB0byBjbGVh
biB1cCB0aGUgYWN0dWFsIHByb2plY3QgZmlsZXMuCisKKyAgICAgICAgICAqIERlcml2ZWQgc291
cmNlcyBhcmUgbm8gbG9uZ2VyIGdlbmVyYXRlZCBhcyBhIHNlcGFyYXRlIG1ha2Utc3RlcAorICAg
ICAgICAgICAgYnV0IGlzIHBhcnQgb2YgZWFjaCB0YXJnZXQncyBwcm9qZWN0IGZpbGUgYXMgYSBz
dWJkaXIuIE1ha2VmaWxlCisgICAgICAgICAgICBydWxlcyBhcmUgdXNlZCB0byBlbnN1cmUgdGhh
dCB3ZSBydW4gbWFrZSBvbiB0aGUgZGVyaXZlZCBzb3VyY2VzCisgICAgICAgICAgICBiZWZvcmUg
cnVubmluZyBxbWFrZSBvbiB0aGUgYWN0dWFsIHRhcmdldCBtYWtlZmlsZS4gVGhpcyBtYWtlcwor
ICAgICAgICAgICAgaXQgZWFzaWVyIHRvIGtlZXAgYSBwcm9wZXIgZGVwZW5kZW5jeSBiZXR3ZWVu
IGRlcml2ZWQgc291cmNlcworICAgICAgICAgICAgYW5kIHRoZSB0YXJnZXQuCisKKyAgICAgICAg
ICAqIFdlIHVzZSBHTlUgbWFrZSBhbmQgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlIGRlcGVuZGVu
Y2llcyBvbgorICAgICAgICAgICAgVU5JWC1iYXNlZCBzeXN0ZW1zIHJ1bm5pbmcgUXQgNS4gVGhp
cyBhbGxvd3MgdXMgdG8gbGVzc2VuIHRoZQorICAgICAgICAgICAgbmVlZCB0byBydW4gcW1ha2Us
IHdoaWNoIHNob3VsZCByZWR1Y2UgY29tcGlsZSB0aW1lLgorCisgICAgICAgICAgKiBXZWJLaXQy
IGlzIG5vdyBidWlsZCBieSBkZWZhdWx0IGlmIGJ1aWxkaW5nIHdpdGggUXQgNS4gSXQgY2FuCisg
ICAgICAgICAgICBiZSBkaXNhYmxlZCBieSBwYXNzaW5nIC0tbm8td2Via2l0MiB0byBidWlsZC13
ZWJraXQuCisKKyAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGVzZSBjaGFuZ2VzIGFyZSBob3BlZnVs
bHkgYSBjbGVhbmVyIGFuZCBlYXNpZXIKKyAgICAgICAgYnVpbGQgc3lzdGVtIHRvIG1vZGlmeSwg
YW5kIGZhc3RlciBidWlsZCB0aW1lcyBkdWUgdG8gbm8gbG9uZ2VyCisgICAgICAgIHJ1bm5pbmcg
cW1ha2Ugb24gZXZlcnkgc2luZ2xlIGJ1aWxkLiBJdCdzIGFsc28gYSBmaXJzdCBzdGVwCisgICAg
ICAgIHRvd2FyZHMgcG9zc2libHkgZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBzb3VyY2VzIHVzaW5n
IGFub3RoZXIKKyAgICAgICAgYnVpbGQgc3lzdGVtLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTIyMgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgICogQXBpL0Rlcml2ZWRTb3VyY2VzLnBybzogUmVtb3Zl
ZC4KKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6IFJlbW92ZWQuCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToK
KyAgICAgICAgKiBRdFdlYktpdC5wcm86IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOiBSZW5hbWUgZHVlIHRvIG5hbWUgY2xhc2ggd2l0aCBX
SzIgaGVhZGVyCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwLgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmluaXRp
YWxpemUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OlBsYXRmb3JtU3RyYXRlZ2ll
c1F0KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVDb29raWVzU3RyYXRl
Z3kpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5
KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVMb2NhbGl6YXRpb25TdHJh
dGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlVmlzaXRlZExpbmtT
dHJhdGVneSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6bm90aWZ5Q29va2llc0No
YW5nZWQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKToK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc1F0OjppbnB1dEVsZW1lbnRBbHRUZXh0KToKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpyZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCk6CisgICAgICAgIChQ
bGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKToKKyAgICAg
ICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwpOgorICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwpOgor
ICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZp
bGVzTGFiZWwpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmZpbGVCdXR0b25Ob0Zp
bGVTZWxlY3RlZExhYmVsKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpmaWxlQnV0
dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVz
UXQ6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3cpOgorICAgICAgICAoUGxh
dGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk6
CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUxp
bmtUb0NsaXBib2FyZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1l
bnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3cpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVn
aWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spOgorICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJv
YXJkKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdD
b3B5SW1hZ2VVcmxUb0NsaXBib2FyZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Y29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3cpOgorICAgICAgICAoUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KToK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdDb3B5Vmlk
ZW9MaW5rVG9DbGlwYm9hcmQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRl
eHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xpbmtUb0NsaXBib2FyZCk6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scyk6Cisg
ICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVk
aWFMb29wKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1U
YWdFbnRlclZpZGVvRnVsbHNjcmVlbik6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2ll
c1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKToKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUpOgorICAgICAgICAoUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KToK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdDb3B5KToK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2sp
OgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9y
d2FyZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFn
U3RvcCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFn
UmVsb2FkKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1U
YWdDdXQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRh
Z1Bhc3RlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1U
YWdTZWxlY3RBbGwpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51
SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpj
b250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk6CisgICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25h
cnkpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ09w
ZW5MaW5rKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1U
YWdJZ25vcmVHcmFtbWFyKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0
TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKToKKyAgICAgICAgKFBsYXRmb3Jt
U3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKToKKyAgICAgICAg
KFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmcpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRNZW51SXRl
bVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOgorICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ0JvbGQpOgorICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKToKKyAgICAgICAgKFBsYXRm
b3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKToKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVu
dSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbk1lbnUpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvbnRleHRN
ZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24pOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVz
UXQ6OmNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KToKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc1F0Ojpjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCk6CisgICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQpOgorICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4
dCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2VhcmNoTWVudVJlY2VudFNlYXJj
aGVzVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2VhcmNoTWVudUNsZWFy
UmVjZW50U2VhcmNoZXNUZXh0KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpBWFdl
YkFyZWFUZXh0KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpBWExpbmtUZXh0KToK
KyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpBWExpc3RNYXJrZXJUZXh0KToKKyAgICAg
ICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpBWEltYWdlTWFwVGV4dCk6CisgICAgICAgIChQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6QVhIZWFkaW5nVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6QVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KToKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc1F0OjpBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQpOgorICAgICAgICAoUGxh
dGZvcm1TdHJhdGVnaWVzUXQ6OkFYQnV0dG9uQWN0aW9uVmVyYik6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6QVhSYWRpb0J1dHRvbkFjdGlvblZlcmIpOgorICAgICAgICAoUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OkFYVGV4dEZpZWxkQWN0aW9uVmVyYik6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKToKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYik6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6QVhNZW51TGlzdEFjdGlvblZlcmIpOgorICAgICAg
ICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OkFYTGlua0FjdGlvblZlcmIpOgorICAgICAgICAo
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6Om1pc3NpbmdQbHVnaW5UZXh0KToKKyAgICAgICAgKFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpjcmFzaGVkUGx1Z2luVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6dW5rbm93bkZpbGVTaXplVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6bWVk
aWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6bWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCk6CisgICAgICAgIChQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyk6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhl
bHBUZXh0KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpsb2NhbGl6ZWRNZWRpYVRp
bWVEZXNjcmlwdGlvbik6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6dmFsaWRhdGlv
bk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1F0
Ojp2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQpOgorICAgICAgICAoUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OnZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCk6CisgICAg
ICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCk6
CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVu
ZGVyZmxvd1RleHQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCk6CisgICAgICAgIChQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6aXNMaW5rVmlzaXRlZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6YWRkVmlzaXRlZExpbmspOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oLgorICAgICAgICAqIGRlY2xhcmF0aXZlL2RlY2xhcmF0
aXZlLnBybzoKKyAgICAgICAgKiBkb2NzL2RvY3MucHJpOgorICAgICAgICAqIGRvY3Mvd2Via2l0
c25pcHBldHMvd2ViZWxlbWVudC93ZWJlbGVtZW50LnBybzoKKyAgICAgICAgKiB0ZXN0cy9NSU1F
U25pZmZpbmcvTUlNRVNuaWZmaW5nLnBybzoKKyAgICAgICAgKiB0ZXN0cy9iZW5jaG1hcmtzL2xv
YWRpbmcvbG9hZGluZy5wcm86CisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy9wYWludGluZy9w
YWludGluZy5wcm86CisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy93ZWJnbC93ZWJnbC5wcm86
CisgICAgICAgICogdGVzdHMvaHlicmlkUGl4bWFwL2h5YnJpZFBpeG1hcC5wcm86CisgICAgICAg
ICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy9xZGVjbGFyYXRpdmV3ZWJ2aWV3LnBybzoKKyAg
ICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3FncmFwaGljc3dlYnZpZXcucHJvOgorICAg
ICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3F3ZWJlbGVtZW50LnBybzoKKyAgICAgICAgKiB0ZXN0
cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeS9x
d2ViaGlzdG9yeS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvcXdl
Ymhpc3RvcnlpbnRlcmZhY2UucHJvOgorICAgICAgICAqIHRlc3RzL3F3ZWJpbnNwZWN0b3IvcXdl
Ymluc3BlY3Rvci5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvcXdlYnBhZ2UucHJvOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2UucHJv
OgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybzoKKyAgICAgICAgKiB0ZXN0
cy90ZXN0cy5wcmk6CisgICAgICAgICogdGVzdHMvdGVzdHMucHJvOiBSZW1vdmVkLgorCisyMDEx
LTExLTAzICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgRml4IHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpiYXNpY1Byb3BlcnRpZXMoKSBhbmQg
aGlzdG9yeU5hdigpIGF1dG90ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjEwNDIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKyAgICAgICAgCisgICAgICAgIEF0IHNvbWUgcG9pbnRzIHdlIGRpZG4ndCBoYXZlIGFueSBn
dWFyYW50ZWUgdGhhdCBhIGZhdmljb24gaGFzIGJlZW4gbG9hZGVkLCBzbyBub3cKKyAgICAgICAg
aXQgc3RvcHMgdG8gd2FpdCBmb3IgdGhlIEljb25DaGFuZ2VkIHNpZ25hbC4gSXQgYWxzbyBoYWQg
c29tZSBmaWxlIHBhdGhzIGluIHdyb25nIGZvcm1hdCwKKyAgICAgICAgbWFraW5nIHNvbWUgZmls
ZXMgdG8gbm90IGJlIHJlc29sdmVkIGFuZCBjb21wYXJpbmcgbWVhbmluZ2xlc3MgYml0bWFwcy4K
KworICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvdHN0X3FkZWNsYXJhdGl2ZXdl
YnZpZXcuY3BwOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OmluaXRUZXN0Q2Fz
ZSk6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6YmFzaWNQcm9wZXJ0aWVzKToK
KyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpoaXN0b3J5TmF2KToKKworMjAxMS0x
MS0wMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAg
ICAgW1F0XSBSZW1vdmUgTWFlbW8gc3BlY2lmaWMgY29kZSBwYXRocworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0NzYKKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKyAgICAgICAgKiBB
cGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OlFXZWJWaWV3KToKKyAgICAgICAg
KiBRdFdlYktpdC5wcm86CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVw
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1F0TWFlbW9XZWJQb3B1cC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvUXRNYWVtb1dlYlBvcHVwLmg6IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvcWdy
YXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUUdy
YXBoaWNzV2ViVmlldzo6Zm9jdXNJbnB1dFR5cGVzKToKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJh
bWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6Zm9jdXNJbnB1dFR5cGVzKToKKworMjAx
MS0xMS0wMyAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
W1F0XSBRdFdlYktpdCBzaG91bGQgaGF2ZSBkb2N1bWVudGF0aW9uIGNsYXJpZnlpbmcgaXRzIG1v
YmlsZSBmZWF0dXJlcyB1c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE0NjUKKworICAgICAgICBBZGQgIlF0V2ViS2l0IEdvZXMgTW9iaWxlIiBk
b2N1bWVudGF0aW9uCisKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LWdvZXMtbW9iaWxlLnFkb2M6
IEFkZGVkLgorICAgICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzogTGlua2VkIHRvIHF0d2Via2l0
LWdvZXMtbW9iaWxlIGRvY3VtZW50YXRpb24KKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRz
L3F0d2Via2l0X2dvZXNfbW9iaWxlX3NuaXBwZXRzLmNwcDogQWRkZWQuCisKKzIwMTEtMTEtMDMg
IEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3Zpbmcg
bGluZSBpbiBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVt
IHNjYWxlIGZhY3RvciB0byBuZXZlciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3Bv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0QXR0
cmlidXRlc0ZvclNpemUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp2aWV3cG9y
dEFzVGV4dCk6CisKKzIwMTEtMTEtMDMgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5w
YWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBEb3dubG9hZCBzdXBw
b3J0IGFuZCBBUEkgaW4gVUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODk2MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIFJlZ2lzdGVyaW5nIG5ldyBxbWwgdHlwZSBRV2ViRG93bmxvYWRJdGVt
LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFt
bFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6CisKKzIwMTEtMTEtMDIgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgorCisgICAgICAgIEV4cGFuZCBEcmFnQ29udHJvbGxlciB0byBwcm92aWRlIG1v
cmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRyYWdnaW5nIHNlc3Npb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzI0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDM3OTE3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRy
YWdFbnRlckV2ZW50KTogTWlub3IgcmVmYWN0b3JpbmcgYmVjYXVzZSBvcGVyYXRpb24gaXMgc3Rv
cmVkIGluCisgICAgICAgIG5ldyBEcmFnU2Vzc2lvbiBzdHJ1Y3QuCisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmRyYWdNb3ZlRXZlbnQpOiBEaXR0by4KKworMjAxMS0xMS0wMiAgVG9tIFNlcGV6
ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaDoKKworMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5j
b20+CisKKyAgICAgICAgPGlucHV0PWZpbGUgbXVsdGlwbGU+IGRlZmF1bHQgdGV4dCB1c2VzIHNp
bmd1bGFyIGluc3RlYWQgb2YgcGx1cmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTMxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAzNzkwMjE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpmaWxlQnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCisyMDExLTExLTAyICBEZWVw
YWsgU2hlcnZlZ2hhciAgPGJwd3Y2NEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW1F0XSBGYWls
aW5nIHRlc3QgbWVkaWEvdmlkZW8tZG9jdW1lbnQtdHlwZXMuaHRtbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBNYXRjaCB3aGF0IE1hYyBoYXMgYmVlbiBk
b2luZyBzaW5jZSByMzYwMDE6IGNhbmNlbCB0aGUgbWFpbiBsb2FkLAorICAgICAgICBhbmQgaGFu
ZGxlIGZhaWx1cmVzIGNhdXNlZCBieSAnd2lsbCBiZSBoYW5kbGVkIGJ5IHBsdWdpbicgZXJyb3Jz
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpjb21taXR0ZWRMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEZhbGxCYWNrKToKKwor
MjAxMS0xMS0wMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgW1F0XVtXSzJdIEZpeCBidWlsZCBvZiBXZWJLaXRUZXN0UnVubmVyIHdpdGggRUxG
IHN5bWJvbCB2aXNpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisK
KyAgICAgICAgRXhwb3J0IGFuIG92ZXJsb2FkIG9mIFF0RFJUOjppbmplY3RJbnRlcm5hbHNPYmpl
Y3RzIHRoYXQgaXMgdXNlZCBieQorICAgICAgICB0aGUgV0syIGluamVjdGVkIGJ1bmRsZS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRlcm5hbHNPYmplY3QpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIw
MTEtMTEtMDEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZCBRdCBkb2N1bWVudGF0aW9uIGZpeC4KKworICAgICAgICBUaGlz
IHNpZ25hbCBpcyBRdCA0LjggbWF0ZXJpYWwuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorCisyMDExLTEwLTMxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgRGUtdmlydHVhbGl6ZSBKU09iamVjdDo6ZGVmaW5lR2V0dGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZGVkIGRlZmluZUdldHRlciB0
byB0aGUgTWV0aG9kVGFibGUuICBSZXBsYWNlZCBhbGwgdmlydHVhbCB2ZXJzaW9ucyBvZiBkZWZp
bmVHZXR0ZXIKKyAgICAgICAgd2l0aCBzdGF0aWMgdmVyc2lvbnMuICBSZXBsYWNlZCBhbGwgY2Fs
bCBzaXRlcyB3aXRoIGxvb2t1cHMgaW4gdGhlIE1ldGhvZFRhYmxlLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjphZGRRdFNlbmRlclRv
R2xvYmFsT2JqZWN0KToKKworMjAxMS0xMC0yOCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgYSBudW1iZXIgb2YgbWV0aG9kcyBtZW50aW9u
aW5nIEphdmFTY3JpcHQgdG8ganVzdCBTY3JpcHQgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAg
IChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKKzIwMTEtMTAtMjggIFNpbW9uIEhhdXNt
YW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gQWRhcHQgdG8g
UVNHKiB0byBRUXVpY2sqIEFQSSBjaGFuZ2UgaW4gcXRkZWNsYXJhdGl2ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0OTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KKworICAgICAgICBVc2UgUVF1aWNrKiBpbnN0
ZWFkIG9mIFFTRyogYXMgd2VsbCBhcyBRU3RhbmRhcmRQYXRocworICAgICAgICBpbnN0ZWFkIG9m
IFFEZXNrdG9wTG9jYXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOgorCisyMDExLTEw
LTI3ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlci5jb3JyZWlhQHBhbG0uY29tPgorCisgICAgICAg
IFtRdF0gRmFpbHVyZSB0byBidWlsZCB3aGVuIFFUX05PX01FTlUgZGVmaW5lZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIGl0ZXJhdGVDb250ZXh0TWVudSgp
IG11c3QgYmUgd3JhcHBlZCBhcm91bmQgI2lmbmRlZiBRVF9OT19NRU5VLgorCisgICAgICAgIEJ1
aWxkIGZpeCwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorCisyMDExLTEwLTI2ICBaYWxhbiBCdWp0YXMgIDx6YnVq
dGFzQGdtYWlsLmNvbT4KKworICAgICAgICBOYW1lIHZpZXdwb3J0IGNoYW5nZSBldmVudCBjb25z
aXN0ZW50bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MDkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIFVzZSBWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UgdGVybSBjb25zaXN0
ZW50bHkgdGhyb3VnaG91dCBXZWJLaXQuCisgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmRpc3Bh
dGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDExLTEwLTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFo
bmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHB1dFZpcnR1YWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNzQwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgUmVtb3ZlZCBhbGwgZGVjbGFy
YXRpb25zIGFuZCBkZWZpbml0aW9ucyBvZiBwdXRWaXJ0dWFsLgorICAgICAgICBBbHNvIHJlcGxh
Y2VkIGFsbCBjYWxsIHNpdGVzIHRvIHB1dFZpcnR1YWwgd2l0aCBhIAorICAgICAgICBjb3JyZXNw
b25kaW5nIGxvb2t1cCBpbiB0aGUgTWV0aG9kVGFibGUuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0
KToKKworMjAxMS0xMC0yNCAgRGVlcGFrIFNoZXJ2ZWdoYXIgIDxicHd2NjRAbW90b3JvbGEuY29t
PgorCisgICAgICAgIFtRdF0gZmFzdC9ldmVudHMvbWVkaWEtZm9jdXMtaW4tc3RhbmRhbG9uZS1t
ZWRpYS1kb2N1bWVudC5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MDExMAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIFdlIHNob3VsZCBjaGVjayBmb3Igc3VwcG9ydGVkIG1lZGlhIG1pbWUg
dHlwZXMgYXMgd2VsbCBpbiB0aGUgTUlNRVR5cGVSZWdpc3RyeS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6Y2FuU2hvd01JTUVUeXBlKTogY2hlY2sgZm9yIHN1cHBvcnRlZCBt
ZWRpYSBtaW1lIHR5cGUuCisKKzIwMTEtMTAtMjEgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0
aW5pQHBhbG0uY29tPgorCisgICAgICAgIFtRdF0gUmVtb3RlIGRlYnVnZ2luZyBuZWVkcyBRV2Vi
SW5zcGVjdG9yIHRvIHdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwNjUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgUmVtb3ZpbmcgUVdlYkluc3BlY3RvciBkZXBlbmRlbmN5IGZy
b20gcmVtb3RlIGluc3BlY3Rvci4KKworICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDoK
KyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvcl9wLmg6CisgICAgICAgIChRV2ViSW5zcGVjdG9y
UHJpdmF0ZTo6UVdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpJbnNwZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFF0OjphdHRhY2hBbmRSZXBsYWNlUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmRldGFjaFJlbW90ZUZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdDo6dGNwUmVhZHlSZWFkKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJRdC5oOgorCisyMDExLTEwLTIxICBMdWl6IEFn
b3N0aW5pICA8bHVpei5hZ29zdGluaUBwYWxtLmNvbT4KKworICAgICAgICBbUXRdIFdyb25nIHR5
cGUgY29udmVyc2lvbiBpbiBJbnNwZWN0b3JTZXJ2ZXJRdC5jcHAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNjM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAgICAgV3JvbmcgdHlwZSBjb252ZXJzaW9uIGNhdXNl
cyBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWx1cmVzIGZvciB0aGUgcmVtb3RlIGluc3BlY3Rvci4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlV2ViU29ja2V0Q2hhbGxlbmdlTnVtYmVyKToKKworMjAxMS0xMC0y
MSAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgorCisgICAgICAgIFtR
dF0gV2ViS2l0IGJ1aWxkIGRvZXMgbm90IHJlc3BlY3QgUU1BS0VfTUFDX1NESyB2YXJpYWJsZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNTk2CisK
KyAgICAgICAgSW5zdGVhZCBvZiBvbmx5IHJlbHlpbmcgb24gREFSV0lOX01BSk9SX1ZFUlNJT04g
d2UgYWxzbworICAgICAgICBjaGVjayBRTUFLRV9NQUNfU0RLLiBJbiBjYXNlIFFNQUtFX01BQ19T
REsgaXMgbm90IGRlZmluZWQKKyAgICAgICAgd2UgYXJlIHN0aWxsIGZhbGxpbmcgYmFjayB0byBE
QVJXSU5fTUFKT1JfVkVSU0lPTi4KKworICAgICAgICBQYXRjaCBieSBBbmR5IFNoYXcgPGFuZHku
c2hhd0BkaWdpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisK
KyAgICAgICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEtMTAtMjEgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gVHlwbyBmaXguCisKKyAg
ICAgICAgKiB0ZXN0cy91dGlsLmg6CisKKzIwMTEtMTAtMjEgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gQnVpbGRmaXggZm9yIG5ld2Vy
IFF0NS4gUmVtb3ZlIGR1cGxpY2F0ZWQgZGVmaW5lcy4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KKworICAgICAgICAqIHRlc3RzL3V0aWwuaDoKKworMjAxMS0xMC0yMSAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk4MDg1LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85ODA4NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzA1ODkKKworICAgICAgICBJdCBicm9rZSB0aGUgYnVpbGQgKFJlcXVlc3Rl
ZCBieSBPc3N5IG9uICN3ZWJraXQpLgorCisgICAgICAgICogdGVzdHMvdXRpbC5oOgorCisyMDEx
LTEwLTIxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W1F0XVtXSzJdIFVucmV2aWV3ZWQgYnVpbGRmaXggZm9yIG5ld2VyIFF0NS4gUmVtb3ZlIGR1cGxp
Y2F0ZWQgZGVmaW5lcy4KKworICAgICAgICAqIHRlc3RzL3V0aWwuaDoKKyAgICAgICAgKHdhaXRG
b3JTaWduYWwpOgorCisyMDExLTEwLTIwICBDYXJvbCBTemFibyAgPGNhcm9sQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgVGlsZWQgQmFja2luZyBTdG9yZSBkb2VzIG5vdCByZWdlbmVyYXRlIHRpbGVz
IHdoZW4gaXQgc2hvdWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01Nzc5OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIFByb3ZpZGVkIHRlc3QgZm9yIHRoaXMgYnVnLiBDaGFuZ2VkIHRoZSBuYW1lIG9mIHRoZSBy
ZXNvdXJjZSBJIGFkZGVkCisgICAgICAgIGZvciBhIHByZXZpb3VzIHRlc3Qgc28gdGhhdCB0aGUg
bmFtZSBpcyBkZXNjcmlwdGl2ZSBzdWNoIHRoYXQgaXQgY2FuCisgICAgICAgIGJlIHNoYXJlZCBh
Y3Jvc3Mgc2V2ZXJhbCB0ZXN0cy4KKworICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcv
dHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6
OmJ1ZzU3Nzk4KToKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3OjpidWc1NjkyOSk6Cisg
ICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5xcmM6
CisKKzIwMTEtMTAtMTggIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEu
Y29tPgorCisgICAgICAgIFtRdF0gTWVyZ2UgUU1MIHBsdWdpbiBmb3IgV2ViS2l0MiB3aXRoIHRo
ZSBvcmlnaW5hbCBXZWJLaXQxIHBsdWdpbgorCisgICAgICAgIFdlIGRvbid0IG5lZWQgYSBzZXBh
cmF0ZSBwbHVnaW4sIGFzIHdlIG5vIGxvbmdlciBleHBvc2UgdGhlIFdLMgorICAgICAgICBBUElz
IHVuZGVyIFF0V2ViS2l0LmV4cGVyaW1lbnRhbCwgYnV0IG5vdyB1c2UgUXRXZWJLaXQuIFRoZSB2
ZXJzaW9uCisgICAgICAgIHdhcyBhbHNvIGNoYW5nZWQgdG8gMy4wIGluc3RlYWQgb2YgNS4wLCBh
cyB0aGUgb3JpZ2luYWwgcGx1Z2luIHdhcworICAgICAgICB2ZXJzaW9uZWQgMS4wLCBhbmQgYnVt
cGluZyB0byAzLjAgZml0cyB0aGUgc2NoZW1lIHVzZWQgYnkgUXRXZWJLaXQgcmVsZWFzZXMuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIGRlY2xhcmF0
aXZlL2RlY2xhcmF0aXZlLnBybzoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVzKToKKworMjAxMS0xMC0xNSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBFTkFCTEUo
VElMRURfQkFDS0lOR19TVE9SRSkgdG8gVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDE5NAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpfcV9zY2FsZUNoYW5n
ZWQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6UUdyYXBoaWNzV2ViVmlldyk6CisgICAg
ICAgIChRR3JhcGhpY3NXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
Ojppc1RpbGVkQmFja2luZ1N0b3JlRnJvemVuKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OnNldFRpbGVkQmFja2luZ1N0b3JlRnJvemVuKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNw
cDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVu
dCk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3NQcml2YXRlOjphcHBseSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmludmFsaWRhdGVXaW5k
b3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OmNyZWF0ZU9yRGVsZXRlT3ZlcmxheSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgICogdGVzdHMvcWdyYXBo
aWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6CisKKzIwMTEtMTAtMTUgIExhc3ps
byBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFtRdF0gW1N5
bWJpYW5dIFJlbW92ZSBzdXBwb3J0IGZvciB0aGUgU3ltYmlhbiBwbGF0Zm9ybSBmb3IgdGhlIFF0
V2ViS2l0IHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5OTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3Jh
cGhpY3NXZWJWaWV3OjpzZXRQYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6CisgICAgICAgICogUXRXZWJLaXQu
cHJvOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpwb3B1bGF0ZSk6CisgICAgICAgICogZGVjbGFyYXRp
dmUvZGVjbGFyYXRpdmUucHJvOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdl
YnZpZXcuY3BwOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0UGFnZSk6CisgICAg
ICAgICogc3ltYmlhbjogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL2JhY2t1cF9yZWdpc3Ry
YXRpb24ueG1sOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vYndpbnM6IFJlbW92ZWQuCisg
ICAgICAgICogc3ltYmlhbi9id2lucy9RdFdlYktpdHUuZGVmOiBSZW1vdmVkLgorICAgICAgICAq
IHN5bWJpYW4vZWFiaTogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1
LmRlZjogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luOiBSZW1vdmVk
LgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vSFRNTDVWaWRlb1BsdWdpbi5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9IVE1MNVZpZGVvUGx1
Z2luLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9IVE1MNVZp
ZGVvV2lkZ2V0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2lu
L0hUTUw1VmlkZW9XaWRnZXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3Jt
cGx1Z2luL092ZXJsYXlXaWRnZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxh
dGZvcm1wbHVnaW4vT3ZlcmxheVdpZGdldC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4v
cGxhdGZvcm1wbHVnaW4vUGxheWVyQnV0dG9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1i
aWFuL3BsYXRmb3JtcGx1Z2luL1BsYXllckJ1dHRvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHN5
bWJpYW4vcGxhdGZvcm1wbHVnaW4vUGxheWVyTGFiZWwuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vUGxheWVyTGFiZWwuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL2ltYWdlczogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1i
aWFuL3BsYXRmb3JtcGx1Z2luL2ltYWdlcy9idXR0b25fY2Fubm90cGxheS5wbmc6IFJlbW92ZWQu
CisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXMvYnV0dG9uX2Nsb3NlLnBu
ZzogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL2ltYWdlcy9idXR0
b25fcGF1c2UucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4v
aW1hZ2VzL2J1dHRvbl9wbGF5LnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRm
b3JtcGx1Z2luL2ltYWdlcy9idXR0b25fc291bmRfb2ZmLnBuZzogUmVtb3ZlZC4KKyAgICAgICAg
KiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL2ltYWdlcy9idXR0b25fc291bmRfb24ucG5nOiBSZW1v
dmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vaW1hZ2VzL2xvYWRpbmdfYnVm
ZmVyaW5nXzEucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4v
aW1hZ2VzL2xvYWRpbmdfYnVmZmVyaW5nXzIucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJp
YW4vcGxhdGZvcm1wbHVnaW4vaW1hZ2VzL2xvYWRpbmdfYnVmZmVyaW5nXzMucG5nOiBSZW1vdmVk
LgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vaW1hZ2VzL2xvYWRpbmdfYnVmZmVy
aW5nXzQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vcGxh
dGZvcm1wbHVnaW4ucHJvOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVn
aW4vcGxhdGZvcm1wbHVnaW4ucXJjOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZv
cm1wbHVnaW4vcXNzOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4v
cXNzL092ZXJsYXlXaWRnZXQucXNzOiBSZW1vdmVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZv
cm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6IFJlbW92ZWQuCisgICAgICAgICogdGVz
dHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICh0
c3RfUUdyYXBoaWNzV2ViVmlldzo6Zm9jdXNJbnB1dFR5cGVzKToKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZnJhbWUvcXdlYmZyYW1lLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKHRzdF9RV2ViVmlldzo6Zm9jdXNJbnB1dFR5cGVzKToKKyAgICAgICAgKiB0ZXN0
cy90ZXN0cy5wcmk6CisKKzIwMTEtMTAtMTQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgdmlydHVhbCBwdXQgdG8gcHV0VmlydHVhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4NTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW5hbWVkIHZpcnR1
YWwgdmVyc2lvbnMgb2YgcHV0IHRvIHB1dFZpcnR1YWwgaW4gcHJlcHJhdGlvbiBmb3IgCisgICAg
ICAgIGFkZGluZyB0aGUgc3RhdGljIHB1dCB0byB0aGUgTWV0aG9kVGFibGUgaW4gQ2xhc3NJbmZv
IHNpbmNlIHRoZSAKKyAgICAgICAgY29tcGlsZXIgZ2V0cyBtYWQgaWYgdGhlIHZpcnR1YWwgYW5k
IHN0YXRpYyB2ZXJzaW9ucyBoYXZlIHRoZSBzYW1lIAorICAgICAgICBuYW1lLgorCisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlw
dFdpbmRvd09iamVjdCk6CisKKzIwMTEtMTAtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgaW50ZXJmYWNlIG9mIGxvY2F0aW9uQW5kTGVuZ3Ro
RnJvbVJhbmdlIGFuZCByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aCBjb25zaXN0ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTk2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEVucmljYSBDYXN1Y2NpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKworMjAxMS0xMC0xMyAgQWRl
bmlsc29uIENhdmFsY2FudGkgIDxhZGVuaWxzb24uc2lsdmFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBbUXRdIEdlb2xvY2F0aW9uQ2xpZW50IGNsZWFudXBzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTczNworCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFF0NSBoYXMgYSBsb2NhdGlv
biBtb2R1bGUsIHNvIG5vIG5lZWQgdG8gdXNlIGFuIGV4dGVybmFsCisgICAgICAgIGxpYnJhcnkg
bGlrZSBRdCBNb2JpbGl0eS4gVGhpcyBwYXRjaCB3aWxsIGFsbG93IHRoZSBHZW9sb2NhdGlvbkNs
aWVudFF0CisgICAgICAgIHRvIGNvbXBpbGUgd2l0aCBib3RoIFF0NSBhbmQgUXQ0LgorCisgICAg
ICAgICogUXRXZWJLaXQucHJvOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9u
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDo6cG9z
aXRpb25VcGRhdGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVu
dFF0Lmg6CisKKzIwMTEtMTAtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBjdXN0b20gc2Nyb2xsYmFyIHRoZW1lIGZvciB1c2UgaW4gRFJU
LCB0byByZWR1Y2UgcGl4ZWwgZGlmZnMgYmV0d2VlbiBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIFNjcm9sbGJhclRoZW1lTW9jayB3aGVu
IHRoZSBzZXR0aW5nIHRvIHVzZSBtb2NrIHNjcm9sbGJhcnMgaXMgZW5hYmxlZC4KKyAgICAgICAg
CisgICAgICAgIE1ha2UgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkgcHJpdmF0ZSwgYW5k
IGFkZCBhIG5ldyBzdGF0aWMgdGhlbWUoKSBtZXRob2QKKyAgICAgICAgdGhhdCByZWFkcyB0aGUg
c2V0dGluZywgYW5kIHJldHVybnMgdGhlIG1vY2sgdGhlbWUgaWYgc2V0LiBBbGwgY2FsbGVycyBu
b3cgdXNlCisgICAgICAgIHRoZW1lKCkgcnRoZXIgdGhhbiBuYXRpdmVUaGVtZSgpLiBBZGQgdGhl
IG5ldyBTY3JvbGxiYXJUaGVtZS5jcHAgZmlsZSB0byB0aGUgYnVpbGQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6d2luZG93UmVzaXplclJlY3QpOgorCisyMDExLTEwLTExICBUb3IgQXJuZSBW
ZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFJlbW92
ZSBhbGwgcmVmZXJlbmNlcyB0byBRVERJUl9idWlsZCBhbmQgc3RhbmRhbG9uZV9wYWNrYWdlCisK
KyAgICAgICAgUXQgaXMgbm93IG1vZHVsYXJpemVkLCB3aGljaCBtZWFucyB3ZSBubyBsb25nZXIg
aW1wb3J0IFdlYktpdCBpbnRvCisgICAgICAgIHRoZSBRdCBzb3VyY2UgdHJlZS4gSW5zdGVhZCB3
ZSB1c2UgZ2l0IHN1Ym1vZHVsZXMsIGFuZCBidWlsZGluZworICAgICAgICBRdFdlYktpdCBhcyAi
cGFydCBvZiBRdCIgaXMgcmVhbGx5IGJ1aWxkaW5nIFF0V2ViS2l0IGFzIGZyb20gdHJ1bmsuCisK
KyAgICAgICAgVG8gZGVjcmVhc2UgdGhlIG51bWJlciBvZiBidWlsZHN5c3RlbSBjb25maWd1cmF0
aW9ucyB3ZSBhbHNvIHJlbW92ZQorICAgICAgICB0aGUgc3RhbmRhbG9uZV9wYWNrYWdlIGNvZGUt
cGF0aCB1c2VkIHdoZW4gd2Ugd2VyZSBwcm92aWRpbmcgdGFyYmFsbHMKKyAgICAgICAgd2l0aCB0
aGUgZGVyaXZlZCBzb3VyY2VzIHByZS1nZW5lcmF0ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvRGVyaXZlZFNvdXJjZXMucHJvOgorICAg
ICAgICAqIFF0V2ViS2l0LnBybzoKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9kZWNsYXJhdGl2ZS5w
cm86CisgICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJlbGVtZW50L3dlYmVsZW1lbnQu
cHJvOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaToKKworMjAxMS0xMC0wNyAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBjb21waWxlIHRpbWUgZmxhZyBF
TkFCTEVfUEFTU1dPUkRfRUNITworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njk2NDcKKworICAgICAgICBBcyB3ZSBoYXZlIHJ1bnRpbWUgZmxhZyBpbiB0
aGUgcGFnZS9TZXR0aW5ncywgd2Ugc2hvdWxkIHJlbW92ZSB0aGlzIHJlZHVuZGFudCBjb21waWxl
IHRpbWUgZmxhZy4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAg
ICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRl
OjphcHBseSk6CisKKzIwMTEtMTAtMDYgIEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQ29kZSBjbGVhbi11cDogTWFrZSBSZW5kZXJPYmplY3Q6OmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0IGFuZCBhc3NvY2lhdGVkIG1ldGhvZHMgY29uc3QgYW5kIG1ha2UgaXRz
IHBhcmFtZXRlciB1c2VUcmFuc2Zvcm1zIG5vIGxvbmdlciBkZWZhdWx0IHRvIGZhbHNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTAwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGUpOgorCisyMDExLTEwLTA2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1drMl0gRml4IGJ1aWxkIHdpdGggUXQgNSB3aGVu
IFF0U2NyaXB0IGlzIGJ1aWx0IGFzIHN0YW5kYWxvbmUgbW9kdWxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTUyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIFF0V2ViS2l0LnBybzogQ29udmVu
aWVuY2UsIHVzZSBxdDUgc2NvcGUuCisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUu
cHJvOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6IERpdHRvLgorCisyMDExLTEw
LTAzICBQaWVycmUgUm9zc2kgIDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtR
dF0gQnVpbGQgZml4OiBRdDo6ZXNjYXBlIGlzIGRlcHJlY2F0ZWQgaW4gUXQ1CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE2MgorCisgICAgICAgIFVz
ZSBRU3RyaW5nOjp0b0h0bWxFc2NhcGVkIGluIHRoZSBRdDUgY2FzZS4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3Jp
cHRDb25maXJtKToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6c2V0VG9vbFRpcCk6CisKKzIwMTEtMTAtMDEgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI5NjQyMS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvOTY0MjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY5MjA2CisKKyAgICAgICAgSXQgYnJva2UgUXQtV0syIGJ1aWxkIChSZXF1ZXN0ZWQgYnkgb3Nz
eSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0
Q29uZmlybSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OnNldFRvb2xUaXApOgorCisyMDExLTA5LTMwICBQaWVycmUgUm9zc2kg
IDxwaWVycmUucm9zc2lAZ21haWwuY29tPgorCisgICAgICAgIFtRdF0gQnVpbGQgZml4OiBRdDo6
ZXNjYXBlIGlzIGRlcHJlY2F0ZWQgaW4gUXQ1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTE2MgorCisgICAgICAgIFVzZSBRU3RyaW5nOjp0b0h0bWxF
c2NhcGVkIGluIHRoZSBRdDUgY2FzZS4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpq
YXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25maXJtKToK
KyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6c2V0VG9vbFRpcCk6CisKKzIwMTEtMDktMjMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3Iu
YXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIGFnYWluc3Qg
UXQ1IGFmdGVyIHJlZmFjdG9yIG9mIHdpZGdldHMgb3V0IG9mIFF0R1VpCisKKyAgICAgICAgUVdp
ZGdldCBhbmQgZnJpZW5kcyBub3cgbGl2ZSBpbiB0aGUgUXRXaWRnZXRzIGxpYnJhcnkuIFdlIHVw
ZGF0ZQorICAgICAgICBpbmNsdWRlcyBpbiBpbXBsZW1lbnRhdGlvbiBmaWxlcyBhbmQgcHJpdmF0
ZSBoZWFkZXJzIHRvIHVzIHRoZQorICAgICAgICBub24tbW9kdWxlLXByZWZpeGVkIHBhdGgsIGFu
ZCBsZWF2ZSB0aGUgbG9va3VwIGZvciB0aGUgaW5jbHVkZQorICAgICAgICBwYXRoLiBGb3IgcHVi
bGljIGhlYWRlcnMgd2UgaGF2ZSB0byBpZmRlZiB0aGUgaW5jbHVkZXMgYXMgdGhlCisgICAgICAg
IHVzZXIgbWlnaHQgbm93IGhhdmUgdGhlIG1vZHVsZXMgd2UgbmVlZCBpbiBoaXMgUVQgY29uZmln
LgorCisgICAgICAgIEZpbmFsbHksIFFTR0NhbnZhcyBpcyBubyBsb25nZXIgYSBRV2lkZ2V0IGJ1
dCBhIFFXaW5kb3csIHNvIHdlCisgICAgICAgIGhhdmUgdG8gdXBkYXRlIG91ciBjb2RlIGFuZCB1
c2Ugd2luZG93SGFuZGxlKCkgZm9yIHNldHRpbmcgdGhlCisgICAgICAgIHBhcmVudCByZWxhdGlv
bnNoaXBzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODY4NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
KiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZp
ZXcuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJoaXN0
b3J5Lmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0
aW5ncy5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIFF0V2ViS2l0LnBy
bzoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9RdFdlYkNvbWJvQm94Lmg6CisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vi
dmlldy5jcHA6CisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlld19wLmg6
CisgICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwOgorICAgICAg
ICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oOgor
CisyMDExLTA5LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
KworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTYxMDgsIHI5NjExMSwgcjk2MTEz
LCBhbmQgcjk2MTE2LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85
NjEwOAorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85NjExMQorICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85NjExMworICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85NjExNgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg5MTMKKworICAgICAgICBXYWl0IGZvciB3b3Jr
aW5nIFF0NSAoUmVxdWVzdGVkIGJ5IG9zc3kgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBBcGkv
cWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuaDoK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5Lmg6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5o
OgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIFF0V2ViS2l0LnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdFdlYkNvbWJvQm94LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFdl
YkNvbWJvQm94Lmg6CisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOgorICAg
ICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorICAgICAgICAqIGRl
Y2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXdfcC5oOgorICAgICAgICAqIGRvY3Mvd2Via2l0
c25pcHBldHMvd2VicGFnZS9tYWluLmNwcDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaDoKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5w
cmk6CisKKzIwMTEtMDktMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
KworICAgICAgICBbUXRdW1dLMl0gQnVpbGRmaXggYWZ0ZXIgcjk2MTA4LgorCisgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5w
cmk6CisKKzIwMTEtMDktMjcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9r
aWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIG9mIGRlY2xhcmF0aXZlIHBsdWdpbiBh
Z2FpbnN0IFF0NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9kZWNsYXJhdGl2ZS5wcm86CisKKzIwMTEtMDktMjMgIFRvciBBcm5l
IFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRml4
IGJ1aWxkIGFnYWluc3QgUXQ1IGFmdGVyIHJlZmFjdG9yIG9mIHdpZGdldHMgb3V0IG9mIFF0R1Vp
CisKKyAgICAgICAgUVdpZGdldCBhbmQgZnJpZW5kcyBub3cgbGl2ZSBpbiB0aGUgUXRXaWRnZXRz
IGxpYnJhcnkuIFdlIHVwZGF0ZQorICAgICAgICBpbmNsdWRlcyBpbiBpbXBsZW1lbnRhdGlvbiBm
aWxlcyBhbmQgcHJpdmF0ZSBoZWFkZXJzIHRvIHVzIHRoZQorICAgICAgICBub24tbW9kdWxlLXBy
ZWZpeGVkIHBhdGgsIGFuZCBsZWF2ZSB0aGUgbG9va3VwIGZvciB0aGUgaW5jbHVkZQorICAgICAg
ICBwYXRoLiBGb3IgcHVibGljIGhlYWRlcnMgd2UgaGF2ZSB0byBpZmRlZiB0aGUgaW5jbHVkZXMg
YXMgdGhlCisgICAgICAgIHVzZXIgbWlnaHQgbm93IGhhdmUgdGhlIG1vZHVsZXMgd2UgbmVlZCBp
biBoaXMgUVQgY29uZmlnLgorCisgICAgICAgIEZpbmFsbHksIFFTR0NhbnZhcyBpcyBubyBsb25n
ZXIgYSBRV2lkZ2V0IGJ1dCBhIFFXaW5kb3csIHNvIHdlCisgICAgICAgIGhhdmUgdG8gdXBkYXRl
IG91ciBjb2RlIGFuZCB1c2Ugd2luZG93SGFuZGxlKCkgZm9yIHNldHRpbmcgdGhlCisgICAgICAg
IHBhcmVudCByZWxhdGlvbnNoaXBzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODY4NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICogQXBp
L3FncmFwaGljc3dlYnZpZXcuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAg
ICogQXBpL3F3ZWJoaXN0b3J5Lmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAg
ICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAg
ICAqIFF0V2ViS2l0LnBybzoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94LmNwcDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94Lmg6CisgICAgICAgICogZGVjbGFyYXRpdmUv
cWRlY2xhcmF0aXZld2Vidmlldy5jcHA6CisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0
aXZld2Vidmlld19wLmg6CisgICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21h
aW4uY3BwOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlv
blByZXNlbnRlci5oOgorCisyMDExLTA5LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICAqIEFwaS9x
d2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpzZXRB
cHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgor
ICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVR
dW90YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMp
OgorCisyMDExLTA5LTIxICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgor
CisgICAgICAgIFtRdF0gUmVtb3ZlIFF0IHNwZWNpZmljIGNvZGUgZnJvbSBjc3MvU2VsZWN0b3JD
aGVja2VyLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njc3MDIKKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOiBDaGVjayB0
aGUgUXQgZ2xvYmFsIGhpc3RvcnkgaGVyZSwgaW5zdGVhZCBvZiBhIHBsYXRmb3JtIGluZGVwZW5k
ZW50IGZpbGUuCisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCisy
MDExLTA5LTIwICBKYXJyZWQgTmljaG9sbHMgIDxqYXJyZWRAc2VuY2hhLmNvbT4KKworICAgICAg
ICBbUXRdIFBlcm1pdCBxcmMgcmVzb3VyY2VzIHRvIGxvYWQgaW4gUVdlYlNldHRpbmdzOjpzZXRV
c2VyU3R5bGVTaGVldFVybCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MTE1OQorICAgICAgICAKKyAgICAgICAgUGVybWl0IGFueSBVUkwgd2l0aCBh
IGxvY2FsIHNjaGVtZSB0byBzZXQgYSB1c2VyIHN0eWxlIHNoZWV0LiBBbGxvdyBxcmMKKyAgICAg
ICAgcmVzb3VyY2UgVVJMcyBhcyBhcmd1bWVudHMgdG8gUVdlYlNldHRpbmdzOjpzZXRVc2VyU3R5
bGVTaGVldFVybCgpLgorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3QgY2FzZSBtYWtlcyBzdXJl
IGEgcXJjIFVSTCB3aWxsIHByb3Blcmx5IGxvYWQgYSB1c2VyIHN0eWxlc2hlZXQuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisgICAgICAgIAorICAg
ICAgICAodHN0X1FXZWJQYWdlOjp1c2VyU3R5bGVTaGVldEZyb21RcmNVcmwpOgorICAgICAgICAq
IHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5xcmM6CisKKzIwMTEtMDktMjAgIEFkZW5pbHNv
biBDYXZhbGNhbnRpICA8YWRlbmlsc29uLnNpbHZhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
W1F0XSByZXNpemVUb0NvbnRlbnQgc2VlbXMgdG8gdHJpZ2dlciBpbmZpbml0ZSByZXNpemUgb24g
c29tZSBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDM4NTIKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBUZXN0IGJ5IEx1aXogQWdvc3RpbmkuCisKKyAgICAgICAgKiB0ZXN0cy9x
Z3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFJlc2l6
ZVNweTo6cmVjZWl2ZVJlc2l6ZSk6CisgICAgICAgIChSZXNpemVTcHk6OnNpemUpOgorICAgICAg
ICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OndpbmRvd1Jlc2l6ZUV2ZW50KToKKworMjAxMS0wOS0x
NyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KKworICAgICAgICBGcmFt
ZUxvYWRlckNsaWVudCBCYWNrRm9yd2FyZExpc3QtcmVsYXRlZCBtZXRob2RzIGFyZSB1bnN1ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MjkzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVtb3ZlIEZyYW1l
TG9hZGVyQ2xpZW50IG1ldGhvZHMgdGhhdCB3ZXJlIGFkZGVkIGJ5IHI1MTYyOSwgc2luY2Ugb25s
eSAgICAgICAgCisgICAgICAgIHRoZSBvbGQgKHNpbmNlLWRlbGV0ZWQpIEFuZHJvaWQgcG9ydCBu
ZWVkZWQgdGhlbS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KworMjAxMS0wOS0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbmFtZSBFTkFCTEUoREFUQUJBU0UpIHRvIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODIwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5j
cHA6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKFFXZWJE
YXRhYmFzZTo6ZXhwZWN0ZWRTaXplKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6c2l6ZSk6Cisg
ICAgICAgIChRV2ViRGF0YWJhc2U6OmZpbGVOYW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6
cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxEYXRhYmFz
ZXMpOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdl
YlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZVVzYWdlKToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9y
aWdpbjo6ZGF0YWJhc2VRdW90YSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OnNldERh
dGFiYXNlUXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjphbGxPcmlnaW5zKToK
KyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VzKToKKyAgICAgICAgKiBBcGkv
cXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuaDoKKworMjAxMS0wOS0xMyAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJA
bm9raWEuY29tPgorCisgICAgICAgIFtRdF0gRml4IHN0YXRlIG9mIHN0b3AvcmVsb2FkIGFjdGlv
bnMgaW4gUVdlYlBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1OTc3CisKKyAgICAgICAgRnJhbWVMb2FkZXIgZG9lcyBhc2sgaXRzIERvY3VtZW50
TG9hZGVyIHRvIHN0b3AgbG9hZGluZyBzdWJyZXNvdXJjZXMgYmVmb3JlCisgICAgICAgIHNldHRp
bmcgdGhlIHN0YXRlIHRvIEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlLiBCdXQgaXQgZG9lcworICAg
ICAgICBub3QgY2hlY2sgaWYgdGhlIHRoZSBEb2N1bWVudExvYWRlciBhY3R1YWxseSBzdG9wcGVk
IGxvYWRpbmcgYmVmb3JlCisgICAgICAgIGl0IGNoYW5nZXMgdGhlIHN0YXRlLgorICAgICAgICBU
aGVyZWZvcmUgYSBzdWJyZXNvdXJjZUxvYWRlciBjYW4gc3RpbGwgYmUgYWN0aXZlLCB3aGVuIHdl
IHJlY2VpdmUgdGhlCisgICAgICAgIGNhbGwgdG8gZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkuIFRo
aXMgbGVhZHMgdG8gYW4gaW5jb25zaXN0ZW50IGJlaGF2aW9yCisgICAgICAgIG9mIHRoZSBzdG9w
L3JlbG9hZCBhY3Rpb25zIGluIFFXZWJQYWdlLgorICAgICAgICBUaGlzIGNoYW5nZXNldCBmaXhl
cyB0aGUgaW5jb25zaXN0ZW50IHN0YXRlIGJ5IHVwZGF0aW5nIHRoZSBhY3Rpb24gc3RhdGVzCisg
ICAgICAgIGFsc28gd2hlbiBmcmFtZUxvYWRDb21wbGV0ZWQoKSBpcyBjYWxsZWQuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hhbmcgU2h1LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpmcmFtZUxvYWRDb21wbGV0ZWQpOgorCisyMDExLTA5LTEyICBDc2FiYSBPc3p0cm9nb27D
oWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBGaXggIlVubWF0Y2hlZCBwYXJl
bnRoZXNlcyBhcmUgZGVwcmVjYXRlZC4iIHdhcm5pbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFpv
bHRhbiBIZXJjemVnLgorCisgICAgICAgIE1vZGlmeSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8g
c2luZ2xlIGxpbmUgdG8gbWFrZSBxbWFrZSBoYXBwaWVyLgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5oOgorICAgICAgICAqIEFw
aS9xd2Vidmlldy5oOgorCisyMDExLTA5LTEwICBKYXJyZWQgTmljaG9sbHMgIDxqYXJyZWRAc2Vu
Y2hhLmNvbT4KKworICAgICAgICBbUXRdIFFXZWJTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRV
cmwoKSBkb2VzIG5vdCB3b3JrIHdpdGggd2luZG93cyBwYXRocyB0aGF0IGNvbnRhaW4gZHJpdmUg
bGV0dGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ4ODQKKyAgICAgICAgCisgICAgICAgIEtVUkw6OnBhdGgoKSBhbG9uZSBkb2VzIG5vdCBoYW5k
bGUgcmVtb3ZpbmcgdGhlIGxlYWRpbmcgc2xhc2ggZnJvbSBhIHdpbmRvd3MgZmlsZSBwYXRoLgor
ICAgICAgICBVc2luZyBRVXJsOjp0b0xvY2FsRmlsZSgpIHdpbGwgdHVybiBmaWxlOi8vL0M6L3Bh
dGggaW50byBDOi9wYXRoIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIAorICAgICAgICBOZXcgdGVz
dCBjYXNlIHRoYXQgZW5zdXJlcyBhIHVzZXIgc3R5bGVzaGVldCBmcm9tIHRoZSBmaWxlIHN5c3Rl
bSB3aWxsIGxvYWQgY29ycmVjdGx5CisgICAgICAgIG9uIGFsbCBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdl
L3Jlc291cmNlcy91c2VyLmNzczogQWRkZWQuCisgICAgICAgIChwKToKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp1c2Vy
U3R5bGVTaGVldEZyb21GaWxlKToKKworMjAxMS0wOS0wOSAgRmFkeSBTYW11ZWwgIDxmc2FtdWVs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIHBhZ2VTY2FsZUZhY3RvciBjb2RlIGZyb20g
RnJhbWUue2h8Y3BwfSB0byBQYWdlLntofGNwcH0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNjYWxlUGFnZUJ5KToK
KworMjAxMS0wOS0wOSAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgor
CisgICAgICAgIFtRdF0gUVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoIGRvZXNuJ3Qgd29yayBhdCBh
bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNDY0
CisKKyAgICAgICAgRW5jbG9zaW5nIGFuIGVsZW1lbnQgbWVhbnMgd3JhcHBpbmcgc29tZXRoaW5n
IGFyb3VuZCBhbiBlbGVtZW50LAorICAgICAgICBub3QgaW5zZXJ0aW5nIHNvbWV0aGluZyBpbnRv
IGFuIGVsZW1lbnQuIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGNoZWNrCisgICAgICAgIGlmIHRoZSBw
YXJlbnQgb2YgdGhlIGVsZW1lbnQgYWxsb3dzIGluc2VydGlvbiByYXRoZXIgdGhhbiBjaGVja2lu
ZworICAgICAgICB0aGUgZWxlbWVudCBpdHNlbGYuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChR
V2ViRWxlbWVudDo6cHJlcGVuZE91dHNpZGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmFwcGVu
ZE91dHNpZGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKToKKyAgICAgICAg
KiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FX
ZWJFbGVtZW50OjphcHBlbmRBbmRQcmVwZW5kKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6
ZW5jbG9zZVdpdGgpOgorCisyMDExLTA5LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBDb21wbGV0aW9uIG9iamVjdCBmcm9tIEpTQywgSSBoYXZl
IG5ldmVyIGxpa2VkIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Nzc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgor
CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50Ojpl
dmFsdWF0ZUphdmFTY3JpcHQpOgorCisyMDExLTA5LTA1ICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIE1ha2UgVGlsZWRE
cmF3aW5nQXJlYSByZXF1ZXN0IHRpbGVzIG9ubHkgaW4gdGhlIGRpcmVjdGlvbiB0aGUgdmlld3Bv
cnQgaXMgcGFubmVkIHRvLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njc2MDYKKworICAgICAgICBUaWxlZEJhY2tpbmdTdG9yZSBwcmV2aW91c2x5IHVz
ZWQgZGlmZmVyZW50IHZhbHVlcyBmb3IgaG9yaXpvbnRhbCBhbmQgdmVydGlhbCBtdWx0aXBsaWNh
dGlvbgorICAgICAgICB0byBjYWxjdWxhdGUgdGhlIGNvdmVyIGFyZWEuIAorICAgICAgICBUaGlz
IHBhdGNoIHJlcGxhY2VzIHRoaXMgbWVjaGFuaXNtLCB1c2VkIHRvIGdpdmUgYSBiaWdnZXIgcGFu
bmluZyByYW5nZSB0byB2ZXJ0aWNhbCBwYW5uaW5nLAorICAgICAgICB3aXRoIHRoZSBwb3NzaWJp
bGl0eSB0byB1c2UgdGhlIG1vdGlvbiB2ZWN0b3Igb2YgdGhlIHZpZXdwb3J0IHRvIHJlcXVlc3Qg
dGlsZXMgYWhlYWQgaW5zdGVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgZWNvbm9taWVzIG9uIHJl
bmRlcmluZyByZXNvdXJjZXMgYXMgdGlsZXMgd29uJ3QgYmUgcmVuZGVyZWQgYmVzaWRlIHRoZSB0
cmFqZWN0b3J5CisgICAgICAgIG9mIHRoZSB2aWV3cG9ydC4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5n
ZUV2ZW50KToKKworMjAxMS0wOS0wNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjk0NjIwLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisKKzIwMTEtMDktMDYg
IEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
W1F0XSBNb3ZlIGF3YXkgZnJvbSBRUG9pbnRlciBhcyBpdCBpcyBzbG93IGFuZCBpdCBoYXMgYSBy
ZXBsYWNlbWVudCBRV2Vha1BvaW50ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NzY3MworCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5
YXQuCisKKyAgICAgICAgTW92ZSBhd2F5IGZyb20gUVBvaW50ZXIgYXMgUXQgcHJvdmlkZXMgYSBi
ZXR0ZXIgYW5kIGZhc3RlciBzb2x1dGlvbiA6IFFXZWFrUG9pbnRlci4KKworICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmxpbmtUYXJnZXRG
cmFtZSk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6ZnJhbWUpOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6On5RV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjphY2NlcHRO
YXZpZ2F0aW9uUmVxdWVzdCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZU1haW5G
cmFtZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUFjdGlvbik6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VE
b3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VUcmlwbGVD
bGlja0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQp
OgorICAgICAgICAoUVdlYlBhZ2U6OmNyZWF0ZVN0YW5kYXJkQ29udGV4dE1lbnUpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6Zm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRQYWxldHRlKToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6dG91Y2hFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6flFX
ZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjptYWluRnJhbWUpOgorICAgICAgICAoUVdlYlBh
Z2U6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6cHJlZmVycmVkQ29udGVudHNT
aXplKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUpOgorICAgICAgICAo
UVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb250ZXh0TWVudSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6b3duZXJzaGlwKToKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUGx1Z2luQ291
bnRlclBhZ2U6OlBsdWdpbkNvdW50ZXJQYWdlKToKKyAgICAgICAgKFBsdWdpblRyYWNlclBhZ2U6
OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1
Z2luKToKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorICAgICAg
ICAodHN0X1FXZWJWaWV3OjpyZXVzZVBhZ2UpOgorCisyMDExLTA5LTA2ICBBbGV4aXMgTWVuYXJk
ICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gRml4IEFQSSB0
ZXN0IGZhaWx1cmUgYWZ0ZXIgcjkyODIzIGFuZCByOTMwMDEuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIHI5MjgyMyBhbmQgcjkzMDAx
IG1ha2UgV2ViS2l0IG5vIGxvbmdlciBwcm9kdWNlIHdyYXBwaW5nIHN0eWxlIAorICAgICAgICBz
cGFucyBvbiBjb3B5IGFuZCBwYXN0ZSBhbmQgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIGFueW1v
cmUuCisgICAgICAgIE91ciBleHBlY3RhdGlvbnMgbmVlZCB0byBiZSB1cGRhdGVkLgorCisgICAg
ICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2Vi
UGFnZTo6Y3Vyc29yTW92ZW1lbnRzKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6dGV4dFNlbGVj
dGlvbik6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmZpbmRUZXh0KToKKworMjAxMS0wOS0wNiAg
QWRlbWFyIGRlIFNvdXphIFJlaXMgSnIuICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBbUXRdW1N5bWJpYW5dIFJFR1JFU1NJT05bOTQxMDVdIER1bXBSZW5kZXJUcmVlLmV4
ZSBkb2Vzbid0IGJ1aWxkIG9uIFN5bWJpYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY3NjQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6
dHJvZ29uw6FjLgorCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6IGFkZCBt
aXNzaW5nIGVudHJ5IGZvcgorICAgICAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUHJvZ3Jl
c3NGaW5pc2hlZENhbGxiYWNrKGJvb2wpCisKKzIwMTEtMDktMDUgIEthdXN0dWJoIEF0cmF3YWxr
YXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTG9naWMgZnJvbSBIVE1MRWxl
bWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCBtb3ZlZCBpbnRvCisgICAg
ICAgIFJhbmdlOjpjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQgZnVuY3Rpb24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzA1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBDb2RlIFJlZmFjdG9yaW5nIGZvciBk
ZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50LgorCisgICAgICAgICogQXBpL3F3ZWJl
bGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjphcHBlbmRJbnNpZGUpOgorICAgICAg
ICAoUVdlYkVsZW1lbnQ6OnByZXBlbmRJbnNpZGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnBy
ZXBlbmRPdXRzaWRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50OjphcHBlbmRPdXRzaWRlKToKKyAg
ICAgICAgKFFXZWJFbGVtZW50OjplbmNsb3NlQ29udGVudHNXaXRoKToKKyAgICAgICAgKFFXZWJF
bGVtZW50OjplbmNsb3NlV2l0aCk6CisKKzIwMTEtMDktMDMgIExhc3psbyBHb21ib3MgIDxsYXN6
bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4NjI2OCk6IEZp
eCBmb3IgcXRfbmV0d29ya0FjY2Vzc0FsbG93ZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOb2Ft
IFJvc2VudGhhbC4KKworICAgICAgICBSZXBsYWNlIHRoZSBFTkFCTEUoUVRfQkVBUkVSKSBndWFy
ZCB3aXRoCisgICAgICAgICFkZWZpbmVkKFFUX05PX0JFQVJFUk1BTkFHRU1FTlQpIHdoaWNoIGlz
IHRydWUgYnkKKyAgICAgICAgZGVmYXVsdCBpbiBRdCA0Ljcgb3IgbGF0ZXIgdmVyc2lvbnMuCisK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHF0X25ldHdvcmtBY2Nl
c3NBbGxvd2VkKToKKworMjAxMS0wOS0wMiAgSmFkZSBIYW4gIDxqYWRlLmhhbkBub2tpYS5jb20+
CisKKyAgICAgICAgW1F0XVtTeW1iaWFuXSBSRUdSRVNTSU9OKDkzMjM1KSBNaXNzaW5nIC5kZWYg
dXBkYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzMwNworCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgKiBz
eW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMS0wOS0wMSAgQ2FpbyBNYXJjZWxvIGRl
IE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFtRdF0gVHJhbnNmb3JtIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvIGludG8gUXRXZWJDb21ib0Jv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczNDQK
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFJlbmFtZWQg
UXRGYWxsYmFja1dlYlBvcHVwIHRvIFF0V2ViQ29tYm9Cb3ggYW5kIGRlY291cGxlZCBpdCBmcm9t
CisgICAgICAgIFF0RmFsbGJhY2tXZWJQb3B1cC4gVGhlIG5ldyBjbGFzcyBpcyBhIFFDb21ib0Jv
eCB3aXRoIHRoZSBmZWF0dXJlcyB0aGF0CisgICAgICAgIHdlIG5lZWQgZm9yIFF0V2ViS2l0OiB0
cmFja2luZyB3aGVuIHRoZSBwb3B1cCBpcyBoaWRkZW4gKHZpYSB0aGUgZGlkSGlkZSgpCisgICAg
ICAgIHNpZ25hbCkgYW5kIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIHNob3cgaXRzIHBvcHVwIGlu
IHRoZSBjdXJzb3IgcG9zaXRpb24uCisKKyAgICAgICAgQW4gaW1wb3J0YW50IGNoYW5nZSB3YXMg
bWFkZSB0byB0aGUgY29tYm9ib3g6IGluc3RlYWQgb2YgaG9va2luZyBvdXIgYWN0aW9ucyBpbgor
ICAgICAgICBzaG93UG9wdXAoKSBhbmQgaGlkZVBvcHVwKCksIGFzIHdlbGwgYXMgd2F0Y2hpbmcg
Zm9yIHBvcHVwIHZpc2liaWxpdHkgZXZlbnRzLCB3ZQorICAgICAgICBub3cganVzdCB3YXRjaCBm
b3IgdGhlIHZpc2liaWxpdHkgZXZlbnRzLiBUaGlzIGFsbG93ZWQgdXMgdG8gZ2V0IHJpZCBvZgor
ICAgICAgICBtX3BvcHVwVmlzaWJsZSBhbmQgdHJhY2tpbmcgdGhlIFNob3cgZXZlbnQuCisKKyAg
ICAgICAgVGhpcyBjb21taXQgYWxzbyByZW1vdmVkIGEgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZm9j
dXMgYWRkZWQgaW4gcjQwOTcwIGFmdGVyCisgICAgICAgIHJldmlld2VycyByZXF1ZXN0LiBTZWUg
YnVnIHJlcG9ydCBmb3IgZGV0YWlscy4KKworICAgICAgICAqIFF0V2ViS2l0LnBybzoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAo
V2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjp+UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpRdEZhbGxiYWNrV2ViUG9wdXA6OmRlbGV0ZUNvbWJvQm94KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9R
dFdlYkNvbWJvQm94LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpRdFdlYkNvbWJvQm94
OjpRdFdlYkNvbWJvQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlF0V2ViQ29tYm9Cb3g6OnNob3dQ
b3B1cEF0Q3Vyc29yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UXRXZWJDb21ib0JveDo6
ZXZlbnRGaWx0ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0V2ViQ29tYm9Cb3guaDog
QWRkZWQuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgICh0c3RfUVdlYkZyYW1lOjpwb3B1cEZvY3VzKToKKyAgICAgICAgQ2hhbmdlIHRoZSB0
ZXN0IHRvIHVzZSBRT2JqZWN0OjpmaW5kQ2hpbGQoKS4gVGhlIG9sZCBtZXRob2QgY291bGRuJ3Qg
ZmluZCBvdXIKKyAgICAgICAgbmV3IGNsYXNzIGJlY2F1c2Ugd2UgZGVmaW5lZCBhIG5ldyBtZXRh
Y2xhc3MgZm9yIGl0LgorCisyMDExLTA4LTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIE1vdmUgdGV4dCgpIGFuZCB0ZXh0V2l0aEhhcmRMaW5lQnJlYWtzKCkg
ZnJvbSBSZW5kZXJUZXh0Q29udHJvbCB0byBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczMjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDYWxsIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50Ojp2YWx1ZSgpIGluc3RlYWQgb2YgUmVuZGVyVGV4dDo6dGV4dCgpCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0
aG9kUXVlcnkpOgorCisyMDExLTA4LTMxICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8g
IDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBVbnNraXAgQVBJ
IHRlc3QgZm9yIGxvYWQgc2lnbmFscyBvcmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcyODUKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZFNpZ25hbHNPcmRlcik6CisKKzIwMTEtMDgtMzAgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NDE0Miwgcjk0MTQ0LCByOTQxNDUsIGFuZCByOTQxNDguCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzk0MTQyCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzk0MTQ0CisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0Lzk0MTQ1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0Lzk0MTQ4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NzI2MgorCisgICAgICAgIEJyb2tlIGlzaW5kZXggZWxlbWVudCAoUmVxdWVz
dGVkIGJ5IHJuaXdhIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldEF1dG9maWxsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNl
dFZhbHVlRm9yVXNlcik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZWxlbWVu
dERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKToKKworMjAxMS0wOC0zMCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBHZXQgcmlkIG9mIHRvSW5wdXRF
bGVtZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3MTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QXV0b2ZpbGxlZCk6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQpOgorCisy
MDExLTA4LTMwICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJh
QG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgRW1pdCBsYXN0IHByb2dyZXNzIG5vdGlmaWNhdGlv
biBiZWZvcmUgY2FsbGluZyBkaXNwYXRjaERpZEZpbmlzaExvYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gZHVtcCBwcm9n
cmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uIGNhbGxiYWNrIGluIERSVC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAx
MS0wOC0zMCAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KKwor
ICAgICAgICBUaGUgdW51c2VkIFNjcm9sbFZpZXcqIGFyZ3VtZW50IGNhbiBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQgZnJvbQorICAgICAgICBzY3JvbGxSZWN0SW50b1ZpZXcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzExNworCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY3JvbGxSZWN0SW50
b1ZpZXcpOgorCisyMDExLTA4LTI1ICBBZGVtYXIgZGUgU291emEgUmVpcyBKci4gIDxhZGVtYXIu
cmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQucHJvIGZp
eCBmb3Igd2hlbiBidWlsZGluZyBpbnNpZGUgUXQKKworICAgICAgICBQYXRjaCBieSBTaW1vIEbD
pGx0IDxzaW1vLmZhbHRAbm9raWEuY29tPgorCisgICAgICAgIFRoZSBRdFdlYktpdCB2ZXJzaW9u
IHdhcyBiZWluZyBvdmVyd3JpdHRlbiBieSBhIGdsb2JhbCBRdCB2ZXJzaW9uIHdoZW4KKyAgICAg
ICAgUXRXZWJLaXQgd2FzIGJ1aWx0IGluc2lkZSBRdC4gRml4ZWQgYnkgbW92aW5nIHRoZSB2ZXJz
aW9uCisgICAgICAgIGRlZmluaXRpb24gYWZ0ZXIgdGhlIGluY2x1c2lvbiBvZiBxYmFzZS5wcmku
CisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEtMDgtMjUgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI5Mzc4My4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
OTM3ODMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2
OTQzCisKKyAgICAgICAgQ29tbWl0ZWQgd3Jvbmcgc3R1ZmYgYnkgYWNjaWRlbnQuIChSZXF1ZXN0
ZWQgYnkgYWRlbWFyIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogQXBpL3F3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3Ojpsb2FkKToKKyAgICAgICAgKFFXZWJWaWV3Ojpz
ZXRIdG1sKToKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRDb250ZW50KToKKyAgICAgICAgKFFXZWJW
aWV3OjpzZXRVcmwpOgorICAgICAgICAqIFF0V2ViS2l0LnBybzoKKworMjAxMS0wOC0yNSAgQWRl
bWFyIGRlIFNvdXphIFJlaXMgSnIuICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkIFF0V2ViS2l0LnBybyBmaXggZm9yIHdoZW4gYnVpbGRpbmcgaW5zaWRl
IFF0CisKKyAgICAgICAgUGF0Y2ggYnkgU2ltbyBGw6RsdCA8c2ltby5mYWx0QG5va2lhLmNvbT4K
KworICAgICAgICBUaGUgUXRXZWJLaXQgdmVyc2lvbiB3YXMgYmVpbmcgb3ZlcndyaXR0ZW4gYnkg
YSBnbG9iYWwgUXQgdmVyc2lvbiB3aGVuCisgICAgICAgIFF0V2ViS2l0IHdhcyBidWlsdCBpbnNp
ZGUgUXQuIEZpeGVkIGJ5IG1vdmluZyB0aGUgdmVyc2lvbgorICAgICAgICBkZWZpbml0aW9uIGFm
dGVyIHRoZSBpbmNsdXNpb24gb2YgcWJhc2UucHJpLgorCisgICAgICAgICogUXRXZWJLaXQucHJv
OgorCisyMDExLTA4LTIzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lh
LmNvbT4KKworICAgICAgICBbUXRdIEZpeCBidWlsZCBvbiBMaW9uCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzcwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBXZSB3ZXJlIG1pc3Rha2VubHkgcGlja2lu
ZyB1cCBtYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIGluc3RlYWQgb2YKKyAgICAgICAgdGhl
IFF0IG9uZSwgYW5kIGJ1aWxkaW5nIG9uIExpb24gcmV2ZWFsZWQgdGhpcyB3aGVuIGEgdHlwZWRl
ZiBmb3IKKyAgICAgICAgSU9TdXJmYWNlUmVmIHdhcyB3cmFwcGVkIGluIFBMQVRGT1JNKE1BQyku
CisKKyAgICAgICAgRm9yIG5vdyB3ZSBmaXggdGhpcyBieSBpbmNsdWRpbmcgV2ViQ29yZVN5c3Rl
bUludGVyZmFjZSB1c2luZworICAgICAgICBicmFja2V0cywgc28gdGhhdCB3ZSdsbCBwaWNrIHVw
IHRoZSByaWdodCBmaWxlIGJhc2VkIG9uIHRoZQorICAgICAgICBpbmNsdWRlIHBhdGhzLiBUaGlz
IGFsc28gbWVhbnMgZXhwb3NpbmcgYSBmZXcgbWlzc2luZyBlbnVtcworICAgICAgICBpbiBvdXIg
b3duIHZlcnNpb24gb2YgdGhlIGZpbGUsIHNvIHRob3NlIHdlcmUgYWRkZWQuCisKKyAgICAgICAg
TGFzdHksIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IHRoZSByaWdodCBzeXN0ZW0gaW50ZXJmYWNl
IGxpYnJhcnkKKyAgICAgICAgb24gTGlvbi4KKworICAgICAgICAqIFF0V2ViS2l0LnBybzoKKwor
MjAxMS0wOC0yMSAgTGluZHNheSBNYXRoaWVzb24gIDxsaW5kc2F5Lm1hdGhpZXNvbkBnbWFpbC5j
b20+CisKKyAgICAgICAgW1F0XSBGaXhlcyBwcmVtYXR1cmUgcGx1Z2luIHVubG9hZCBidWcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NjI4CisgICAg
ICAgIAorICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFRo
ZSBRdFBsYXRmb3JtUGx1Z2luIHdhcyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrLCBzbyBpdHMgZGVz
dHJ1Y3RvciBpcyB1bmxvYWRpbmcgdGhlCisgICAgICAgIHBsdWdpbiBhdCB0aGUgZW5kIG9mIHRo
ZSBzY29wZS4gVGhpcyBwYXRjaCBtb3ZlcyB0aGUgbG9jYWwgY3JlYXRpb24gb2YgUXRQbGF0Zm9y
bVBsdWdpbgorICAgICAgICB0byBjbGFzcyBtZW1iZXIgKFRleHRDaGVja2VyQ2xpZW50UXQ6Om1f
cGxhdGZvcm1QbHVnaW4pLCBwcmV2ZW50aW5nIHByZW1hdHVyZSB1bmxvYWRpbmcKKyAgICAgICAg
b2YgcGx1Z2luLiAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9UZXh0Q2hlY2tlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2Vy
Q2xpZW50UXQ6OmxvYWRTcGVsbENoZWNrZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1Rl
eHRDaGVja2VyQ2xpZW50UXQuaDoKKworMjAxMS0wOC0xNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXZWJDb3JlIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJl
bnQgZGV2aWNlIHNjYWxlIGZhY3RvcgorCisgICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzY2NDEzPiBXZWJDb3JlIHJlcXVpcmVzIGV2ZXJ5IFdlYktpdCBwb3J0IHRvIGtlZXAgdHJh
Y2sgb2YgdGhlCisgICAgICAgIGRldmljZSBzY2FsZSBmYWN0b3IKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6IFJlbW92ZWQgcGl4ZWxSYXRpby4K
KyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKTogTm93IGNhbGxz
IFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlX3Au
aDogUmVtb3ZlZCBwaXhlbFJhdGlvLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6
CisgICAgICAgIFJlbW92ZWQgZGV2aWNlU2NhbGVGYWN0b3IuCisKKzIwMTEtMDgtMTggIENoYW5n
IFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgc3VwcG9ydCBvZiBzZXRQYXNz
d29yZEVjaG9FbmFibGVkIGFuZCBzZXRQYXNzd29yZEVjaG9EdXJhdGlvbiBmb3IgcGFzc3dvcmQg
ZWNobyBmZWF0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA1MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisK
KyAgICAgICAgRW5hYmxlIHBhc3N3b3JkIGVjaG8gdW5kZXIgdGhlIGJ1aWxkIGZsYWcuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KToKKworMjAxMS0wOC0xNiAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgor
CisgICAgICAgIFN1cHBvcnQgcmVzZXQgaW4gV2ViQ29yZTo6SW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjMwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBBZGRlZCBmcmFtZXdvcmsgY29k
ZSBpbiBXZWJLaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRJbnRl
cm5hbHNPYmplY3QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Lmg6CisKKzIwMTEtMDgtMTYgIExpbmRzYXkgTWF0aGllc29uICAgPGxpbmRzYXkubWF0
aGllc29uQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdIE1pc3Npbmcgc3BlbGwgY2hlY2sgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQx
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIEFk
ZGVkIGEgcGxhdGZvcm0gcGx1Z2luIHRvIGFsbG93IHNwZWxsIGFuZCBncmFtbWFyIGNoZWNrIGlu
IFF0V2ViS2l0LgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAg
ICAgICAqIFF0V2ViS2l0LnBybzoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OmlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50UXQ6OnRvZ2dsZUdyYW1tYXJDaGVja2luZyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0Ojp0ZXh0Q2hlY2tlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBs
dWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpjcmVhdGVTcGVs
bENoZWNrZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmNwcDogQWRkZWQu
CisgICAgICAgIChjb252ZXJ0VG9WZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2VyQ2xpZW50UXQ6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNrZXJDbGllbnRRdDo6bGVhcm5Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDaGVja2VyQ2xpZW50UXQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxs
ZWRXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50UXQ6OmNoZWNrU3Bl
bGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudFF0Ojpj
aGVja0dyYW1tYXJPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVu
dFF0OjpnZXRHdWVzc2VzRm9yV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tlckNs
aWVudFF0Ojppc0NvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2VyQ2xpZW50UXQ6OnRvZ2dsZUNvbnRpbm91c1NwZWxsQ2hlY2tpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnRRdDo6aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50UXQ6OnRvZ2dsZUdy
YW1tYXJDaGVja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudFF0Ojps
b2FkU3BlbGxDaGVja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNs
aWVudFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnRRdDo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCisyMDExLTA4LTE1ICBEbWl0cnkgVGl0b3YgIDxk
aW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2Zl
ckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlIGRvZXMgbm90IGhhdmUgZW5vdWdoIHBhcmFtZXRlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTY1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTEtMDgtMTAgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIENsZWFyIHVwIHNjYWxlIGZh
Y3RvciB0ZXJtaW5vbG9neQorCisgICAgICAgIFdlYktpdCBieSBhbmQgbGFyZ2UgZGVhbHMgd2l0
aCB0d28gc2NhbGUgZmFjdG9yczogb25lIGludHJpbnNpYyB0byB0aGUgZGV2aWNlIG9uIHdoaWNo
IHRoZQorICAgICAgICBzb2Z0d2FyZSBpcyBydW5uaW5nLCBhbmQgb25lIHRoYXQgaXMgcGVyLVBh
Z2UgYW5kIGNhbiBiZSBjb250cm9sbGVkIHZpYSBBUEkgY2FsbHMuIFRoaXMKKyAgICAgICAgcGF0
Y2ggbmFtZXMgdGhlIGZvcm1lciAiZGV2aWNlU2NhbGVGYWN0b3IiIGFuZCB0aGUgbGF0dGVyICJw
YWdlU2NhbGVGYWN0b3IiLCBhbmQgbWFrZXMgdGhlCisgICAgICAgIGNvZGUgdXNlIHRob3NlIG5h
bWVzLiBJdCBzaG91bGQgaW50cm9kdWNlIG5vIGJlaGF2aW9yIGNoYW5nZXMuCisKKyAgICAgICAg
Rml4ZXMgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTU3ODc+IFdlYktpdCB1c2VzIG11bHRpcGxlIGNv
bmZsaWN0aW5nIG5hbWVzIHRvIHJlZmVyIHRvIHRoZQorICAgICAgICBkZXZpY2Ugc2NhbGUgZmFj
dG9yCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMTEtMDgtMTIgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWly
YSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCB0ZXN0IGZvciBjb3JyZWN0IG9yZGVyIG9mIGxvYWQgc2lnbmFscyBpbiBRV2ViUGFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYwMTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIEFkZCBBUEkgdGVz
dCB0byBlbnN1cmUgdGhlIG9yZGVyIG9mIGxvYWQgc2lnbmFsczogbG9hZFN0YXJ0ZWQoKSBuZWVk
cyB0byBiZSBlbWl0dGVkCisgICAgICAgIGZpcnN0LCB0aGVuIGxvYWRQcm9ncmVzcygxMDApLCBm
b2xsb3dlZCBieSBsb2FkRmluaXNoZWQoKS4KKworICAgICAgICBUaGUgdGVzdCBpcyBza2lwcGVk
IHNpbmNlIHRoaXMgcmlnaHQgbm93IGlzIGJyb2tlbiwgdGhlIGJ1ZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NTEgdHJhY2tzIG9uZSBwb3NzaWJs
ZSB3YXkgdG8gZml4LgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFNweUZvckxvYWRTaWduYWxzT3JkZXI6OlNweUZvckxvYWRTaWduYWxzT3Jk
ZXIpOgorICAgICAgICAoU3B5Rm9yTG9hZFNpZ25hbHNPcmRlcjo6aXNGaW5pc2hlZCk6CisgICAg
ICAgIChTcHlGb3JMb2FkU2lnbmFsc09yZGVyOjpvbkxvYWRQcm9ncmVzcyk6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OmxvYWRTaWduYWxzT3JkZXJfZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlBh
Z2U6OmxvYWRTaWduYWxzT3JkZXIpOgorCisyMDExLTA4LTEyICBBbGV4aXMgTWVuYXJkICA8YWxl
eGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gTWFrZSBzdXJlIFF0V2Vi
S2l0IGNvcnJlY3RseSBjb21waWxlcyB3aGVuIGJ1aWxkaW5nIFdlYktpdDIgd2l0aCBRdDUuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gYnVpbGQgY29ycmVjdGx5IHRoZSBRdFF1aWNrMSBwbHVnaW4g
d2UgbmVlZCB0byBleHBsaWNpdGx5CisgICAgICAgIGxpbmsgdG8gdGhlIG5ldyBsaWJyYXJ5IGFk
ZGVkIGluIFF0NSAicXRxdWljazEiLgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOgorCisyMDExLTA4
LTExICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAg
IFJFR1JFU1NJT046IFF0IEphdmFTY3JpcHQgYnJpZGdlIHNpZ25hbCBjb25uZWN0aW9uIGZhaWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjA5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgIFVubWFy
ayB0ZXN0cyBhcyBleHBlY3RlZCBmYWlsdXJlcywgdGhleSBwYXNzIG5vdy4KKworICAgICAgICAq
IHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRnJh
bWU6OmNvbm5lY3RBbmREaXNjb25uZWN0KToKKworMjAxMS0wOC0wOSAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjkyNjgzLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85
MjY4MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU5
MjEKKworICAgICAgICAgIkJyZWFrcyBRdCAtLW1pbmltYWwgYnVpbGQuIFJldmVydCBwZW5kaW5n
IHVwZGF0ZSBvZiB0aGUgUXQKKyAgICAgICAgbWluaW1hbCBjb25maWd1cmF0aW9uIiAoUmVxdWVz
dGVkIGJ5IHNpbWF0aHVyIG9uICN3ZWJraXQpLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKToK
KworMjAxMS0wOC0wOSAgU2lkZGhhcnRoIE1hdGh1ciAgPHNpZGRoYXJ0aC5tYXRodXJAbm9raWEu
Y29tPgorCisgICAgICAgIFtRdF0gU2ltcGxpZnkgY29kZSBieSByZW1vdmluZyBRVF9OT19ERVNL
VE9QU0VSVklDRVMgYW5kIFFUX05PX05FVFdPUktESVNLQ0FDSEUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODgwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBRRGVza3RvcFNlcnZpY2VzIGFuZCBRTmV0d29y
a0Rpc2tDYWNoZSBoYXZlIGJlZW4gYXJvdW5kIGZvciBhIHdoaWxlIG5vdy4gS2lsbCBmbGFncyB3
aGljaCAKKyAgICAgICAgY2hlY2sgZm9yIHRoZWlyIGZlYXR1cmUgZmxhZ3MuIEFzc3VtZSB0aGF0
IGFueSByZWFzb25hYmxlIFF0IGJ1aWxkIHByb3ZpZGVzIHRoZW0uIAorCisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3Rl
bnRTdG9yYWdlKToKKworMjAxMS0wOC0wNSAgRGF3aXQgQWxlbWF5ZWh1ICA8YWRhd2l0QGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBSZXZl
cnRlZCBjb21taXQgcjg3Nzk3LCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84Nzc5
NywgYmVjYXVzZSBpdAorICAgICAgICBjYXVzZXMgdGhlIHJlZ3Jlc3Npb24gcmVwb3J0ZWQgdW5k
ZXIgYnVnIyA2MzU4Mi4KKworICAgICAgICBbUXRdIFJFR1JFU1NJT04ocjg3Nzk3KTogQnJva2Ug
S0RFV2ViS2l0J3MgY3VzdG9tIFFOQU0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzU4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpzZXRGcmFtZSk6CisKKzIwMTEtMDgtMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29n
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtUaW1lbGluZV0gSG92ZXIgb24gcGFp
bnQgZXZlbnRzIGFuZCBzZWUgcmVjdCBvdXRsaW5lIGFyb3VuZCB0aGF0IGFyZWEuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTUxMAorCisgICAgICAg
IFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vcmRzKToK
KworMjAxMS0wOC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgTm9kZSBwYXJhbWV0ZXIgZnJvbSB0aGUgSW5z
cGVjdG9yQ2xpZW50OjpoaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hh
dHNreS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpoaWdobGlnaHQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKKzIwMTEtMDgtMDIgIEty
aXN0w7NmIEtvc3p0ecOzICA8S29zenR5by5LcmlzdG9mQHN0dWQudS1zemVnZWQuaHU+CisKKyAg
ICAgICAgW1F0XSBGaXggdHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OmJhc2ljUHJvcGVydGllcygp
IGFuZCBoaXN0b3J5TmF2KCkgYXV0b3Rlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MTA0MgorICAgICAgICBSZW1vdmUgbWFyayBhcyBleHBlY3Rl
ZCBmYWlsIHdoZXJlIHVuZXhwZWN0ZWQgcGFzcyBhbmQgbWFyayBmYWlsaW5nIHRlc3QgY2FzZSBh
cyBleHBlY3RlZCBmYWlsCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6Fj
LgorCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZl
d2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6YmFzaWNQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpoaXN0b3J5TmF2KToK
KworMjAxMS0wOC0wMiAgS3Jpc3TDs2YgS29zenR5w7MgIDxLb3N6dHlvLktyaXN0b2ZAc3R1ZC51
LXN6ZWdlZC5odT4KKworICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYlBhZ2U6OnZpZXdNb2Rlcygp
IEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTUzMQorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAg
ICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6IE1hcmsgZmFpbGluZyB0ZXN0
IGNhc2UgYXMgZXhwZWN0ZWQgZmFpbAorICAgICAgICAodHN0X1FXZWJQYWdlOjp2aWV3TW9kZXMp
OgorCisyMDExLTA4LTAyICBLcmlzdMOzZiBLb3N6dHnDsyAgPEtvc3p0eW8uS3Jpc3RvZkBzdHVk
LnUtc3plZ2VkLmh1PgorCisgICAgICAgIFtRdF0gRml4IHRzdF9RV2ViRnJhbWU6OmNvbm5lY3RB
bmREaXNjb25uZWN0KCkgQVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1MTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJv
Z29uw6FjLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOiBN
YXJrIGZhaWxpbmcgdGVzdCBjYXNlIGFzIGV4cGVjdGVkIGZhaWwKKyAgICAgICAgKHRzdF9RV2Vi
RnJhbWU6OmNvbm5lY3RBbmREaXNjb25uZWN0KToKKworMjAxMS0wOC0wMiAgS3Jpc3TDs2YgS29z
enR5w7MgIDxLb3N6dHlvLktyaXN0b2ZAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBbUXRd
IEZpeCB0c3RfUVdlYkVsZW1lbnQ6OnJlbmRlcigpIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTI0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3Rz
dF9xd2ViZWxlbWVudC5jcHA6IE1hcmsgZmFpbGluZyB0ZXN0IGNhc2UgYXMgZXhwZWN0ZWQgZmFp
bAorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpyZW5kZXIpOgorCisyMDExLTA4LTAyICBLcmlz
dMOzZiBLb3N6dHnDsyAgPEtvc3p0eW8uS3Jpc3RvZkBzdHVkLnUtc3plZ2VkLmh1PgorCisgICAg
ICAgIFtRdF0gdHN0X1FXZWJFbGVtZW50OjpzdHlsZSgpIGZhaWxzIGJlY2F1c2UgUVdlYkVsZW1l
bnQ6OkNhc2NhZGVkU3R5bGUgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTI0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50
L3RzdF9xd2ViZWxlbWVudC5jcHA6IE1hcmsgZmFpbGluZyB0ZXN0IGNhc2UgYXMgZXhwZWN0ZWQg
ZmFpbAorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpzdHlsZSk6CisKKzIwMTEtMDgtMDEgIEty
aXN0w7NmIEtvc3p0ecOzICA8S29zenR5by5LcmlzdG9mQHN0dWQudS1zemVnZWQuaHU+CisKKyAg
ICAgICAgW1F0XSBGaXggdHN0X1FXZWJQYWdlOjpsb2FkSHRtbDVWaWRlbygpIEFQSSB0ZXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTQ1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICAqIHRlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6IE1hcmsgZmFpbGluZyB0ZXN0IGNhc2UgYXMgZXhw
ZWN0ZWQgZmFpbAorICAgICAgICAodHN0X1FXZWJQYWdlOjpsb2FkSHRtbDVWaWRlbyk6CisKKzIw
MTEtMDctMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGluY2x1c2lvbiBvZiBNYWluVGhyZWFkLmggZnJvbSBUaHJlYWRpbmcuaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUwODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgbWlzc2luZyBpbmNs
dWRlIHN0YXRlbWVudHMgZm9yIE1haW5UaHJlYWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorCisyMDExLTA3LTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBbV0syXVtRdF0gTW92ZSBmcm9tIFFHcmFwaGljc1ZpZXcgdG8gUXQgU2Nl
bmUgR3JhcGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYyOTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBD
by1hdXRob3JlZCB3aXRoIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgorCisgICAgICAgIEFkZCB0aGUgZGVjbGFyYXRpdmUgZGVwZW5kZW5jeSB0byBsaW5rIFdlYktp
dC4KKworICAgICAgICAqIFF0V2ViS2l0LnBybzoKKworMjAxMS0wNy0yNyAgQ2FpbyBNYXJjZWxv
IGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFtRdF0gUXRXZWJraXQgbmV2ZXIgZmluaXNoZXMgbG9hZGluZyBzaXRlcyB3aGVuIHRoZXkg
YXJlIGxvYWRlZCBhZnRlciBhbiBpbml0aWFsIFFVcmwgZmFpbHMgdG8gbG9hZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBDaGFuZ2UgdGhlIGhvb2tzIGlu
IEZyYW1lTG9hZGVyQ2xpZW50IHdlIHVzZSBmb3IgZW1pdHRpbmcgc2lnbmFscy4gSW5zdGVhZCBv
ZgorICAgICAgICBlbWl0dGluZyBzaWduYWxzIGluIHRoZSBwcm9ncmVzcyBub3RpZmljYXRpb24g
ZnVuY3Rpb25zLCB3ZSB1c2UgdGhlCisgICAgICAgIGRpc3BhdGNoRGlke1N0YXJ0LEZpbmlzaCxG
YWlsfSogZnVuY3Rpb25zLiBUaGUgbWFpbiByZWFzb24gYmVoaW5kIHRoaXMgY2hhbmdlIGlzCisg
ICAgICAgIHRoYXQgbG9hZGluZyBjb2RlIGlzIHByZXBhcmVkIHRvIGhhbmRsZSBsb2FkKCkgd2hl
biBpbnNpZGUgdGhvc2UgZnVuY3Rpb25zLgorCisgICAgICAgIFRoZSBjcmFzaCB3YXMgYmVpbmcg
Y2F1c2VkIGJ5IHNldFVybCgpIChhbmQgbG9hZCgpKSBiZWluZyBjYWxsZWQgd2hlbgorICAgICAg
ICBsb2FkRmluaXNoZWQoZmFsc2UpIHdhcyBlbWl0dGVkLiBUaGUgcHJvYmxlbSBoZXJlIGlzIHRo
YXQgd2hlbgorICAgICAgICBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbiB0aGUgRnJh
bWVMb2FkZXIgd2Fzbid0IHJlYWR5IGZvciB0YWtpbmcgYSBsb2FkKCkKKyAgICAgICAgY2FsbCBh
Z2FpbiwgYmVjYXVzZSBpdCB3YXMgc3RpbGwgdGhlIFByb3Zpc2lvbmFsTG9hZFN0YXRlIGJ1dCB3
aXRoIHRoZQorICAgICAgICBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyIGFscmVhZHkgcmVtb3Zl
ZC4KKworICAgICAgICBUbyBlbXVsYXRlIHRoZSBzYW1lIGJlaGF2aW9yIHRoYXQgUXRXZWJLaXQg
aGFkIHdoZW4gdXNpbmcKKyAgICAgICAgcG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24s
IHdlIG5vdyBrZWVwIHRyYWNrIG9mIHRoZSBmcmFtZSBvcmlnaW5hdGluZyB0aGUKKyAgICAgICAg
bG9hZCwgYW5kIGVtaXQgdGhlIHNpZ25hbHMgd2hlbiB0aGlzIGZyYW1lJ3MgY2xpZW50IGlzIGNh
bGxlZC4KKworICAgICAgICBUaGUgcGF0Y2gga2VlcHMgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBm
b3IgUVdlYlBhZ2Ugc2lnbmFscywgYnV0IHdlIG5vdyBlbWl0IHRoZQorICAgICAgICBRV2ViRnJh
bWUgc2lnbmFscyBldmVyeXRpbWUsIG5vdCBvbmx5IHdoZW4gdGhleSBhcmUgdGhlIG9yaWdpbmF0
aW5nIGZyYW1lIGZvcgorICAgICAgICBsb2FkaW5nLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChjbGVhckNvcmVGcmFtZSk6IERvY3VtZW50IG91ciBhc3N1bXB0aW9u
IHRoYXQgYWN0aXZlRG9jdW1lbnRMb2FkZXIgd2lsbCBleGlzdC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDogUmVtb3ZlIG1fbG9hZEVycm9yLCBhZGQg
YSBib29sZWFuIHRvIGtlZXAKKyAgICAgICAgdHJhY2sgd2hldGhlciB0aGUgZnJhbWUgaXMgb3Jp
Z2luYXRpbmcgdGhlIGxvYWQuIFJlbW92ZSB0aGUgc2lnbmFscyBmcm9tCisgICAgICAgIEZyYW1l
TG9hZGVyQ2xpZW50UXQgc2luY2Ugd2Ugd2lsbCBlbWl0IFFXZWJGcmFtZSBhbmQgUVdlYlBhZ2Ug
c2lnbmFscyBkaXJlY3RseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6RnJh
bWVMb2FkZXJDbGllbnRRdCk6IEluaXRpYWxpemUgbV9pc09yaWdpbmF0aW5nTG9hZC4KKworICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RnJhbWUpOiBEbyBub3QgY29u
bmVjdCBRV2ViRnJhbWUgYW5kIFFXZWJQYWdlCisgICAgICAgIHNpZ25hbHMgdG8gb3VyIHNpZ25h
bHMgZm9yIGxvYWQvZmluaXNoZWQsIHNpZ25hbCBlbWlzc2lvbiB3aWxsIGJlIGRvbmUgbWFudWFs
bHkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQpOiBFbWl0CisgICAgICAgIGxvYWRTdGFydGVkKCkgc2lnbmFs
IGFuZCBtYWtlIHRoZSBmaXJzdCBub3RpZmljYXRpb24gb2YgZXN0aW1hdGlvbiBjaGFuZ2UsIHRo
YXQKKyAgICAgICAgUXQgQVBJIHRlc3RzIGV4cGVjdCB0byBleGlzdCBhbmQgbm90aWZ5IDEwJS4K
KworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5p
c2hMb2FkKTogUmVtb3ZlIHJlZmVyZW5jZSB0bworICAgICAgICBtX2xvYWRFcnJvciBhbmQgZW1p
dCBsb2FkRmluaXNoZWQoKSBzaWduYWwuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24pOiBSZW1vdmUgc2lnbmFs
CisgICAgICAgIGVtaXNzaW9uIGFuZCBtYXJrIHRoZSBvcmlnaW5hdGluZyBsb2FkIGFzIHRydWUs
IHNpbmNlIG9ubHkgdGhlIG9yaWdpbmF0aW5nIGZyYW1lCisgICAgICAgIGdldHMgdGhpcyBjYWxs
IGluIGl0cyBjbGllbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKTogUmVtb3ZlIHNpZ25hbAorICAgICAg
ICBlbWlzc2lvbi4KKworICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2Fs
bEVycm9yUGFnZUV4dGVuc2lvbik6IFJldHVybiB3aGV0aGVyIHRoZSBjYWxsCisgICAgICAgIHdh
cyBzdWNjZXNzZnVsIG9yIG5vdC4gVGhpcyB3YXNuJ3QgbmVjZXNzYXJ5IGJlZm9yZSBiZWNhdXNl
IGEgc3VjY2Vzc2Z1bCBjYWxsIGZvcgorICAgICAgICBlcnJvciBwYWdlIHdvdWxkIGxlYWQgdG8g
YSBsb2FkKCksIHRoYXQgY2xlYXJlZCB0aGUgbV9sb2FkRXJyb3IuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOiBS
ZW1vdmUgcmVmZXJlbmNlCisgICAgICAgIHRvIG1fbG9hZEVycm9yIGFuZCBlbWl0IGZpbmlzaGVk
IHNpZ25hbCBpbmRpY2F0aW5nIGVycm9yIGlmIEVycm9yUGFnZSBleHRlbnNpb24KKyAgICAgICAg
ZG9lc24ndCBoYW5kbGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZEZhaWxMb2FkKTogRGl0dG8uCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmVtaXRMb2FkU3RhcnRlZCk6IEVtaXQgdGhlIGxvYWRTdGFydGVkKCkg
c2lnbmFsCisgICAgICAgIGZvciB0aGUgUVdlYkZyYW1lLCBhbmQgaWYgdGhlIG9yaWdpbmF0aW5n
IGxvYWQgYWxzbyBkbyBmb3IgdGhlIFFXZWJQYWdlLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjplbWl0TG9hZEZpbmlzaGVkKTogU2FtZSBhcyBiZWZvcmUgYnV0IGZv
cgorICAgICAgICBsb2FkRmluaXNoZWQoKS4gVGFrZSBjYXJlIHRvIHJlc2V0IHRoZSBvcmlnaW5h
dGluZyBsb2FkIGZsYWcgYmVmb3JlIHRoZSBzaWduYWxzCisgICAgICAgIGFyZSBlbWl0dGVkLCBz
aW5jZSB0aGV5IG1pZ2h0IHdhbnQgdG8gc2V0IGl0IGJhY2sgYWdhaW4uCisKKyAgICAgICAgKiB0
ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChVUkxTZXR0ZXI6OlVS
TFNldHRlcik6IE9iamVjdCB0aGF0IHNldHMgdGhlIHVybCB1c2luZyBlaXRoZXIgbG9hZCgpIG9y
IHNldFVybCgpCisgICAgICAgIHdoZW4gYSBjZXJ0YWluIHNpZ25hbCBpcyBlbWl0dGVkIGluIHRo
ZSBmcmFtZS4KKworICAgICAgICAoVVJMU2V0dGVyOjpleGVjdXRlKToKKyAgICAgICAgKHRzdF9R
V2ViRnJhbWU6OmxvYWRJblNpZ25hbEhhbmRsZXJzX2RhdGEpOgorICAgICAgICAodHN0X1FXZWJG
cmFtZTo6bG9hZEluU2lnbmFsSGFuZGxlcnMpOiBOZXcgdGVzdCBpbnNwaXJlZCBieSB0aGUgYnVn
IHRlc3QgY2FzZS4gVGhpcyB0ZXN0CisgICAgICAgIGNyYXNoZXMgd2l0aG91dCB0aGlzIHBhdGNo
IGFwcGxpZWQuCisKKzIwMTEtMDctMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAg
PGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEZpeCBidWlsZCBp
biBRdCA1IG9mIFFEZWNsYXJhdGl2ZVdlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVh
cyBLbGluZy4KKworICAgICAgICBJbiBRdCA1LCB0aGUgUUdyYXBoaWNzVmlldy1iYXNlZCBjbGFz
c2VzIGZvciBRdFF1aWNrIGFyZSBpbiB0aGUKKyAgICAgICAgcXRxdWljazEgbW9kdWxlLCBpbmNs
dWRpbmcgUURlY2xhcmF0aXZlSXRlbSBhbmQgUURlY2xhcmF0aXZlVmlldy4KKworICAgICAgICAq
IGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXdfcC5oOgorICAgICAgICAqIHRlc3RzL3Fk
ZWNsYXJhdGl2ZXdlYnZpZXcvdHN0X3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorICAgICAgICAq
IHRlc3RzL3Rlc3RzLnByaToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcm86CisKKzIwMTEtMDct
MjYgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBkb3dubG9hZD0nZmlsZW5hbWUnIGF0dHJpYnV0ZSBpbiBhbmNo
b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1
ODAKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTEtMDctMjYgIEFsZXhpcyBNZW5hcmQgIDxh
bGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVh
cyBLbGluZy4KKworICAgICAgICBbUXRdIENoYW5nZSBkZWZhdWx0IGJhY2tlbmQgdG8gdXNlIEdT
dHJlYW1lciBvbiBMaW51eCBhbmQgUXVpY2tUaW1lIG9uIE1hYy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDcyCisKKyAgICAgICAgVXNlIHRoZSBm
bGFnIFdURl9VU0VfUVRLSVQ9MSByYXRoZXIgdGhhbiBVU0VfUVRLSVQ9MSBiZWNhdXNlIHRoYXQg
ZmxhZyBkb2Vzbid0CisgICAgICAgIGV4aXN0IGFueW1vcmUsIGl0J3MgdGhlIGRlZmF1bHQuIERp
dHRvIGZvciBHU3RyZWFtZXIuCisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEtMDct
MjUgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBbUXRdIEFkZCBtb3JlIHRlc3RzIHRvIGNvdmVyIHRoZSBiZWhh
dmlvciBvZiBsb2FkRmluaXNoZWQoKSBzaWduYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFt
aW4gUG91bGFpbi4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNw
cDoKKyAgICAgICAgKEZha2VSZXBseTo6RmFrZVJlcGx5KToKKyAgICAgICAgKEZha2VOZXR3b3Jr
TWFuYWdlcjo6Y3JlYXRlUmVxdWVzdCk6IEFkZCBhIGZha2UgcmVwbHkgdGhhdCBnaXZlcyA0MDQg
ZXJyb3IgY29kZS4KKworICAgICAgICAodHN0X1FXZWJGcmFtZTo6bG9hZEZpbmlzaGVkQWZ0ZXJO
b3RGb3VuZEVycm9yKTogVmVyaWZ5IHRoYXQgd2UgZ2V0IGxvYWRGaW5pc2hlZChmYWxzZSkKKyAg
ICAgICAgYWZ0ZXIgYSA0MDQgZXJyb3Igd2l0aG91dCBjb250ZW50cy4KKworICAgICAgICAqIHRl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmVy
cm9yUGFnZUV4dGVuc2lvbkxvYWRGaW5pc2hlZCk6IFZlcmlmeSBpZiB0aGUgYXJndW1lbnQgb2Yg
bG9hZEZpbmlzaGVkKCkKKyAgICAgICAgaXMgdHJ1ZSB3aGVuIHdlIHVzZSBlcnJvciBwYWdlIGV4
dGVuc2lvbiB0byBwcm9kdWNlIG91ciBvd24gZXJyb3IgcGFnZXMuCisKKzIwMTEtMDctMTkgIENh
aW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBbUXRdIEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBRV2ViVmlldzo6c2V0
UGFnZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgICog
QXBpL3F3ZWJ2aWV3LmNwcDogVXNlIHRoZSB3b3JkICdwYWdlJyB0byByZWZlciB0byBhIFFXZWJQ
YWdlIGluc3RlYWQgb2YgJ2RvY3VtZW50Jy4KKworMjAxMS0wNy0xOSAgQ2FpbyBNYXJjZWxvIGRl
IE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFtRdF0gRml4IGxlYWsgb2YgUVdlYlBhZ2UgaW4gZXJyb3JQYWdlRXh0ZW5zaW9uIHRlc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIFFXZWJWaWV3Ojpz
ZXRQYWdlKCkgZG9lc24ndCB0YWtlIG93bmVyc2hpcCwgc28gdGhlIEVycm9yUGFnZXMgd2VyZSBs
ZWFraW5nLiBTbyBub3cKKyAgICAgICAgYWxsb2NhdGUgdGhlbSBvbiB0aGUgc3RhY2suIFRoaXMg
c2hvdWxkbid0IGNoYW5nZSBhbnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjplcnJvclBhZ2VFeHRl
bnNpb24pOgorICAgICAgICAodHN0X1FXZWJQYWdlOjplcnJvclBhZ2VFeHRlbnNpb25JbklGcmFt
ZXMpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjplcnJvclBhZ2VFeHRlbnNpb25JbkZyYW1lc2V0
KToKKworMjAxMS0wNy0xOCAgSHVpIEh1YW5nICA8aHVpLjIuaHVhbmdAbm9raWEuY29tPgorCisg
ICAgICAgIFtRdF0gQ29tcGlsaW5nIGVycm9yIGluIFNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdl
YmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcCB3aXRoIFF0IDQuNyBvciBvbGRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ1NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJlbGVt
ZW50L3RzdF9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnJlbmRl
cik6CisKKzIwMTEtMDctMTUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OOiBNb3VzZSBjdXJzb3IgZG9lc27igJl0IGhpZGUgd2hlbiBmdWxsIHNj
cmVlbiB2aWRlbyBIVUQgaGlkZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY0NjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMp
OiBBZGRlZCB0aGlzIHN0dWIuCisKKzIwMTEtMDctMTUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04oOTEwNjQpOiBV
cHN0cmVhbSBRdFdlYktpdC9OOSBjaGFuZ2VzIHJlbGF0ZWQgdG92aXNpYmxlQ29udGVudFJlY3QK
KworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIE9ubHkgc2V0
IHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0IHdoZW4gaW4gcmVzaXplc1RvQ29udGVudHMgbW9k
ZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSk6CisKKzIwMTEtMDctMTUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
ICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFVwc3RyZWFtIFF0V2ViS2l0L045IGNo
YW5nZXMgcmVsYXRlZCB0byB2aXNpYmxlQ29udGVudFJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2U6OnNldEFjdHVhbFZpc2libGVDb250ZW50UmVjdCk6CisgICAgICAgIENoYW5nZSB0
byB1c2Ugc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgT25s
eSBzZXQgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QgZm9yIHRoZSBtYWluZnJhbWUuCisgICAgICAg
ICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTEtMDctMTMgIEpvc2VwaCBQZWNv
cmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBJbXByb3ZlIG5hbWVzIG9mIHNv
bWUgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgYWNjZXNzb3IgbWV0aG9kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ0MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICBSZW5hbWVkIG1ldGhv
ZC4KKworMjAxMS0wNy0xMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkg
ZmFpbCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0Lmg6CisgICAgICAgIFBhc3MgdGhlIHNwYWNlTmVlZGVkIHZhbHVlIHRocm91Z2gg
dG8gdGhlIGFwcGxpY2F0aW9uQ2FjaGVRdW90YUV4Y2VlZGVkIHNpZ25hbC4KKworMjAxMS0wNy0x
MSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHNlbGVj
dGlvbiByZWxhdGVkIGNvZGUgZnJvbSBSZW5kZXJUZXh0Q29udHJvbCB0byBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAg
ICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gV2ViQ29yZTo6c2V0U2VsZWN0aW9uUmFuZ2UgYnkgY2Fs
bHMgdG8gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5w
dXRNZXRob2RFdmVudCk6CisKKzIwMTEtMDctMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTA2NjIuCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkwNjYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDIxMAorCisgICAgICAgIEludHJvZHVj
ZWQgcmVncmVzc2lvbnMgaW4gQ2hyb21pdW0gYnJvd3NlciB0ZXN0cyAoUmVxdWVzdGVkIGJ5Cisg
ICAgICAgIHJuaXdhIG9uICN3ZWJraXQpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6CisKKzIwMTEtMDct
MDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzZWxl
Y3Rpb24gcmVsYXRlZCBjb2RlIGZyb20gUmVuZGVyVGV4dENvbnRyb2wgdG8gSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0MTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgorCisg
ICAgICAgIFJlcGxhY2VkIGNhbGxzIHRvIFdlYkNvcmU6OnNldFNlbGVjdGlvblJhbmdlIGJ5IGNh
bGxzIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZS4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omlu
cHV0TWV0aG9kRXZlbnQpOgorCisyMDExLTA3LTA1ICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5s
b2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBGaXggdHN0X1FXZWJGcmFtZTo6c2V0
SHRtbFdpdGhSZXNvdXJjZSgpIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02MzIzNQorCisgICAgICAgIE1vZGlmaWVkIGJhc2VVcmwgdG8g
YmUgYSBsb2NhbCBmaWxlIGluIG9yZGVyIHRvIGdldCBhIHNlY3VyaXR5IG9yaWdpbgorICAgICAg
ICB0aGF0IGlzIGFsbG93ZWQgdG8gcmVxdWVzdCBsb2NhbCByZXNvdXJjZXMuIFJlbW92ZWQgUVNp
Z25hbFNweSBmcm9tIGl0CisgICAgICAgIGFzIGxvYWRGaW5pc2hlZCBhbHdheXMgaGFwcGVucywg
YW5kIHRoZSBvcmlnaW5hbCB0ZXN0IHdhcyBzcGxpdCBpbnRvIHR3by4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3Rz
dF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0SHRtbFdpdGhJbWFn
ZVJlc291cmNlKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldEh0bWxXaXRoU3R5bGVzaGVl
dFJlc291cmNlKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldEh0bWxXaXRoQmFzZVVSTCk6
CisKKzIwMTEtMDQtMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgW1F0XSBTdXBwb3J0
IHRoaXJkLXBhcnR5IGNvb2tpZSBwb2xpY3kgZm9yIFF0IGNsaWVudHMKKworICAgICAgICBUaGlz
IGFkZHMgbmV3IEFQSSB0byBRV2ViU2V0dGluZ3MgdGhhdCBhbGxvd3MgY2xpZW50cyB0bworICAg
ICAgICBzZWxlY3Qgb25lIG9mIHRocmVlIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZyBwb2xp
Y2llczoKKworICAgICAgICAgIEFsd2F5c0FsbG93VGhpcmRQYXJ0eUNvb2tpZXMKKyAgICAgICAg
ICBBbHdheXNCbG9ja1RoaXJkUGFydHlDb29raWVzCisgICAgICAgICAgQWxsb3dUaGlyZFBhcnR5
V2l0aEV4aXN0aW5nQ29va2llcworCisgICAgICAgIFRoZSBmaXJzdCB0d28gYXJlIHNlbGYtZXhw
bGFuYXRvcnksIHRoZSB0aGlyZCBtaW1pY3MgU2FmYXJpJ3MKKyAgICAgICAgZGVmYXVsdCBiZWhh
dmlvdXIgb2YgcGVybWl0dGluZyB0aGlyZC1wYXJ0eSBjb29raWVzIHdoZW4gdGhlIHVzZXIKKyAg
ICAgICAgYWxyZWFkeSBoYXMgY29va2llcyBmcm9tIHRoZSB0aGlyZC1wYXJ0eSBzaXRlLiBUaGlz
IHdhcworICAgICAgICBpbnRyb2R1Y2VkIHRvIGFsbG93IHRoaXJkLXBhcnR5IGNvb2tpZSBibG9j
a2luZyB0byBwbGF5IHdlbGwgd2l0aAorICAgICAgICBmYWNlYm9vayBzaGFyaW5nIGV0Yy4gQWx3
YXlzQWxsb3dUaGlyZFBhcnR5Q29va2llcyBpcyB0aGUgZGVmYXVsdC4KKworICAgICAgICBUaGVy
ZSBpcyBzY29wZSBmb3IgYWRkaW5nIGFuICdleGNlcHRpb25zJyBsaXN0IEFQSSBhbmQgY2xpZW50
cyB3b3VsZAorICAgICAgICBzdHJ1Z2dsZSB0byBpbXBsZW1lbnQgaXQgdGhlbXNlbHZlcyBnaXZl
biB0aGUgcGF1Y2l0eSBvZiBpbmZvcm1hdGlvbgorICAgICAgICBhdmFpbGFibGUgZnJvbSBzZXRD
b29raWVzRm9yVXJsKCkuCisKKyAgICAgICAgU2VlIGFsc286IGh0dHA6Ly9naXRvcmlvdXMub3Jn
L3F0L3F0L21lcmdlX3JlcXVlc3RzLzEyMDUKKyAgICAgICAgICAgICAgICAgICAoY29tbWl0IDE1
NDQwMmY1NmRjZjgzMDNhNmNlNjAxYTUyMjE1MjI2YWY4ZDMxYmEpCisgICAgICAgICAgICAgICAg
ICBodHRwOi8vYnVncmVwb3J0cy5xdC5ub2tpYS5jb20vYnJvd3NlL1FUQlVHLTEzNjAxCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NDU1CisKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdl
YlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0VGhpcmRQYXJ0eUNvb2tpZVBv
bGljeSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnRoaXJkUGFydHlDb29raWVQb2xpY3kpOgor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMS0wNy0wMSAgSmFkZSBIYW4gIDxq
YWRlLmhhbkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtTeW1iaWFuXSBVcGRhdGUgLmRlZiBm
aWxlIGZvciBTeW1iaWFuIHRvIGJ1aWxkIFRvb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3ps
byBHb21ib3MuCisKKyAgICAgICAgQWRkIG5ld2x5IGludHJvZHVjZWQgc3ltYm9scyB0byBmaXgg
YnVpbGRpbmcgdGhlIFRvb2xzIGRpcmVjdG9yeSBmb3IgU3ltYmlhbi4KKworICAgICAgICAqIHN5
bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDExLTA3LTAxICBKYWRlIEhhbiAgPGphZGUu
aGFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisg
ICAgICAgIFtRdF1bU3ltYmlhbl0gVXBkYXRlIC5kZWYgZmlsZSBmb3IgU3ltYmlhbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEyMDAKKworICAgICAg
ICBBZGQgbmV3bHkgaW50cm9kdWNlZCBzeW1ib2xzIHRvIGZpeCB0aGUgU3ltYmlhbiBidWlsZC4K
KworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDExLTA2LTMwICBS
YWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYkZy
YW1lOjpyZW5kZXJHZW9tZXRyeSgpIEFQSSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzIzNgorICAgICAgICAKKyAgICAgICAgVGhpcyB0ZXN0
IHJlcXVpcmVkIGEgc2VjdXJpdHkgb3JpZ2luIHdpdGggZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIHJl
cXVlc3QgbG9jYWwgcmVzb3VyY2VzLgorICAgICAgICBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIGZp
bGVzIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4gU28gbW9kaWZpZWQgYmFzZVVybCB0byBiZSBh
IGxvY2FsIGZpbGUuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgICh0c3RfUVdlYkZyYW1lOjpyZW5kZXJHZW9tZXRyeSk6CisKKzIwMTEtMDYt
MjcgIERpZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFtRdF0gRFJUOiBQcm92aWRlIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXREZWZlcnNMb2FkaW5nIGFuZCA6OmdvQmFjayBzdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzQ4OQorCisg
ICAgICAgIFVuc2tpcHBlZDoKKyAgICAgICAgICAgIGxvYWRlci9uYXZpZ2F0aW9uLXdoaWxlLWRl
ZmVycmluZy1sb2Fkcy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z29CYWNr
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgor
CisyMDExLTA2LTMwICBGYWJyaXppbyBNYWNoYWRvICA8ZmFicml6aW8ubWFjaGFkb0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKyAgICAgICAgCisg
ICAgICAgIFtRdF0gUU1MIFdlYnZpZXcgY2F1c2VzIHBlcmZvcm1hbmNlIGRyb3BzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzU1NAorCisgICAgICAg
IFJlbW92ZSB0aWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQgZnJvbSBRTUwgV2ViVmlldy4KKyAgICAg
ICAgCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6CisgICAg
ICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3OjpzZXRQYWdlKToKKworMjAxMS0wNi0zMCAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQg
VGFtdXJhLgorCisgICAgICAgIENoYW5nZSB0aGUgbGFiZWwgb2YgYW4gSFRNTDUgZmlsZSBjaG9v
c2VyIGJ1dHRvbiB0byAiQ2hvb3NlIEZpbGVzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyNDUKKworICAgICAgICBXZSBzaG91bGQgbm90aWZ5IGNh
cGFiaWxpdHkgb2YgbXVsdGlwbGUgZmlsZXMgdG8gdXNlcnMuCisKKyAgICAgICAgVGVzdDogZmFz
dC9mb3Jtcy9pbnB1dC1maWxlLWxhYmVsLmh0bWwKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwpOiBVcGRhdGVkIHRoZSBkZXNjcmlwdGlvbiBm
b3IgIkNob29zZSBGaWxlIi4KKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1
dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCk6ICBSZXR1cm5zIGEgIkNob29zZSBGaWxlcyIg
bGFiZWwuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisKKzIwMTEtMDYtMjkgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBb
UXRdIEFkZCBRdCBkZXBlbmRlbmNpZXMgaW4gUXRXZWJLaXQncyBtYWluIHBybyBmaWxlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM2MzkKKworICAg
ICAgICBzeW5jcXQsIHRoZSBzY3JpcHQgd2hpY2ggZ2VuZXJhdGVzIHRoZSBoZWFkZXJzIGluc2lk
ZSBRdCBwYXJzZXMKKyAgICAgICAgdGhlIG1haW4gcHJvIGZpbGUgb2YgUXRXZWJLaXQgdG8gY2hl
Y2sgdGhlIFF0IGRlcGVuZGVuY2llcy4gSXQgdXNlZAorICAgICAgICB0byBiZSBXZWJDb3JlLnBy
byBidXQgYWZ0ZXIgdGhlIGJ1aWxkIHJlb3JnYW5pemF0aW9uIFF0V2ViS2l0LnBybyBpcworICAg
ICAgICB0aGUgbmV3IG1haW4gcHJvIGZpbGUgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5ldHdvcmsg
ZGVwZW5kZW5jeSBqdXN0IGxpa2UKKyAgICAgICAgd2UgZGlkIGluIFdlYkNvcmUucHJvLgorCisg
ICAgICAgICogUXRXZWJLaXQucHJvOgorCisyMDExLTA2LTI4ICBJbHlhIFNoZXJtYW4gIDxpc2hl
cm1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKwor
ICAgICAgICBmb3JtLmF1dG9jb21wbGV0ZT0ib2ZmIiBkb2VzIG5vdCB3b3JrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTgyMworCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZCk6IFVwZGF0ZSBjYWxsc2l0ZS4KKworMjAxMS0wNi0yNyAgRGllZ28gR29uemFsZXogIDxk
aWVnb2hjZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRFJUIHN1cHBvcnQgZm9yIHNldEludGVyYWN0
aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MzQ5NgorCisgICAgICAgIFVuc2tpcHBlZDoKKyAgICAgICAgICAg
IGZhc3QvZm9ybXMvaW50ZXJhY3RpdmUtdmFsaWRhdGlvbi1wcmV2ZW50ZWQuaHRtbAorICAgICAg
ICAgICAgZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLWF0dGFjaC1hc3NlcnRpb24u
aHRtbAorICAgICAgICAgICAgZmFzdC9mb3Jtcy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLWFzc2Vy
dGlvbi1ieS12YWxpZGF0ZS10d2ljZS5odG1sCisgICAgICAgICAgICBmYXN0L2Zvcm1zL2ludGVy
YWN0aXZlLXZhbGlkYXRpb24tc2VsZWN0LWNyYXNoLmh0bWwKKyAgICAgICAgICAgIGZhc3QvZm9y
bXMvaW50ZXJhY3RpdmUtdmFsaWRhdGlvbi1jcmFzaC1ieS1zdHlsZS1vdmVycmlkZS5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRh
dGlvbkVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Lmg6CisKKzIwMTEtMDYtMjggIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAg
ICAgICBbUXRdIFVzZSA8UXRYL3guaD4gc3R5bGUgb2YgaGVhZGVycyBmb3IgUXQgdGVzdHMgd2hp
Y2ggcmVseSBvbiBpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYzNTYyCisKKyAgICAgICAgU29tZSBRdCBhdXRvLXRlc3RzIHJlbHkgb24gPFF0WC94
Lmg+IHR5cGVzIG9mIGluY2x1ZGVzLgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBs
dWdpbi5oOgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3Jt
cGx1Z2luLmg6CisKKzIwMTEtMDYtMjggIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAg
ICAgICBbUXRdIFVzZSBRdFF1aWNrIGltcG9ydHMgaW4gQXBpIHRlc3RzIHJhdGhlciB0aGFuIG9s
ZCBkZXByZWNhdGVkIFF0IDQueCBpbXBvcnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1MzMKKworICAgICAgICBXZSBuZWVkIHRvIHVzZSB0aGUg
bmV3IFF0UXVpY2sgMS54IGltcG9ydHMgcmF0aGVyIHRoYW4gdGhlIG9sZCBkZXByZWNhdGVkCisg
ICAgICAgIHZlcnNpb24uCisKKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jl
c291cmNlcy93ZWJ2aWV3YmFja2dyb3VuZGNvbG9yLnFtbDoKKyAgICAgICAgKiB0ZXN0cy9xZGVj
bGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy93ZWJ2aWV3dGVzdC5xbWw6CisgICAgICAgICogdGVz
dHMvcWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJjZXMvd2Vidmlld3Rlc3RkZWZhdWx0LnFtbDoK
KworMjAxMS0wNi0yNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ugc3Bl
Y2lmaWMgaGVhZGVycyBpbmNsdWRlcyByYXRoZXIgdGhhbiBmdWxsIHN5c3RlbSBoZWFkZXJzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM0NzUKKwor
ICAgICAgICBVc2Ugb25seSBuZWVkZWQgaGVhZGVycyByYXRoZXIgdGhhbiBzeXN0ZW0gaGVhZGVy
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FUS2l0RnVsbFNjcmVlblZpZGVvSGFuZGxl
ci5tbToKKworMjAxMS0wNi0yNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbUXRdIFJlbW92ZSBQaG9ub24gTWVkaWFQbGF5ZXIgZnJvbSB0aGUgdHJl
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNDQ4
CisKKyAgICAgICAgUmVtb3ZlIFBob25vbiByZWxhdGVkIHN0dWZmLgorCisgICAgICAgICogZG9j
cy9xdHdlYmtpdC5xZG9jY29uZjoKKyAgICAgICAgKiBxdF93ZWJraXRfdmVyc2lvbi5wcmk6CisK
KzIwMTEtMDYtMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVp
cmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgor
CisgICAgICAgIFtRdF0gdHN0X1FXZWJGcmFtZTo6b3ZlcmxvYWRlZFNsb3RzKCkgZmFpbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MzE5CisKKyAg
ICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYkZyYW1lOjpvdmVybG9hZGVkU2xvdHMpOiBSZW1vdmUgZXhwZWN0ZWQgZmFpbHVyZSBhbmQK
KyAgICAgICAgZml4IHRoZSBjb21tZW50LgorCisyMDExLTA2LTIwICBSb2JlcnQgSG9nYW4gIDxy
b2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgor
CisgICAgICAgIFtRdF0gRHVwbGljYXRlIGVudHJ5IGluIGNvbnRleHQgbWVudQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxMzkKKworICAgICAgICBj
b250ZXh0TWVudUNvbnRyb2xsZXIoKS0+cG9wdWxhdGUoKSBpcyBjYWxsZWQgZnJvbQorICAgICAg
ICBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoKSBzbworICAg
ICAgICBRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKCkgZG9lcyBub3Qg
bmVlZAorICAgICAgICB0byBjYWxsIGl0IGluZGVwZW5kZW50bHkuCisKKyAgICAgICAgUmVsYXRl
ZCBjaGFuZ2VzZXRzOiAKKyAgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzczNTM1CisgICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMjM4OQor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRhdGVQ
b3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmNvbnRleHRNZW51Q29weSk6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OmNvbnRleHRNZW51UG9wdWxhdGVkT25jZSk6CisKKzIwMTEt
MDYtMjQgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBDb252ZXJ0IHNoYWRvdy1E
T00gcmVsYXRlZCB0ZXN0cyB0byB1c2Ugd2luZG93LmludGVybmFscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE2NzEKKworICAgICAgICBSZW1vdmUg
c2hhZG93LURPTSByZWxhdGVkIG1ldGhvZHMgZnJvbSBRdCBEUlQgQVBJLiBUaGVzZSBhcmUgbm90
CisgICAgICAgIHJlcXVpcmVkIGFueSBtb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEtMDYtMjMgIEpvZSBXaWxkICA8am9zZXBo
LndpbGRAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisK
KyAgICAgICAgW1F0XSBUaGUgUXQgV2ViS2l0IFN5bWJpYW4gLmRlZiBmaWxlIG5lZWRzIHRvIGJl
IHVwZGF0ZWQgc28gU3ltYmlhbiB3aWxsIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTIwMAorCisgICAgICAgIFJldmVydCByODcwNjAgYXMg
aXQgYnJva2UgY29tcGF0aWJpbGl0eSB3aXRoIFF0V2ViS2l0IDIuMSByZWxlYXNlCisgICAgICAg
IGFuZCBhZGQgc29tZSBuZXdseSBpbnRyb2R1Y2Ugc3ltYm9scy4KKworICAgICAgICAqIHN5bWJp
YW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDExLTA2LTIzICBBbGV4aXMgTWVuYXJkICA8YWxl
eGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KKworICAgICAgICBbUXRdIEltcGxlbWVudCBmdWxsc2NyZWVuIHN1cHBvcnQgb24gTWFj
IHdpdGggdGhlIFF1aWNrVGltZSBiYWNrZW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3MjgKKworICAgICAgICBJbXBsZW1lbnQgZnVsbHNjcmVl
biBzdXBwb3J0IGZvciBRdCB3aGVuIHVzaW5nIHRoZSBRdWlja1RpbWUgYmFja2VuZC4KKyAgICAg
ICAgV2UgbW9zdGx5IHVzZSB3aGF0IGlzIGFscmVhZHkgZG9uZSBmb3IgdGhlIE1hYyBwb3J0Lgor
CisgICAgICAgICogUXRXZWJLaXQucHJvOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVD
bGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVu
dFF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpGdWxsU2NyZWVuVmlkZW9RdCk6CisgICAgICAgIChXZWJD
b3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6fkZ1bGxTY3JlZW5WaWRlb1F0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjplbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpleGl0RnVsbFNjcmVlbkZvck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNjcmVlbkZv
clZpZGVvUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6Omlz
VmFsaWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVRLaXRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FUS2l0RnVsbFNjcmVlblZpZGVvSGFuZGxl
ci5tbTogQWRkZWQuCisgICAgICAgIChRVEtpdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OlFUS2l0
RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChRVEtpdEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6On5RVEtpdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorICAgICAgICAoUVRLaXRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoUVRLaXRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOjpleGl0RnVsbFNjcmVlbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOgorICAgICAgICAoSW5pdFdlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UpOgorCisyMDExLTA2LTIzICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtR
dF0gW1dLMl0gQWRkIGRyYWcgYW5kIGRyb3Agc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4MzgKKworICAgICAgICBDYWxsIGRyYWdFbmRl
ZCBmcm9tIHRoZSBEcmFnQ2xpZW50IHRvIG1ha2UgV2ViS2l0MSBhbmQgV2ViS2l0MiBjb25zaXN0
ZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6c3RhcnREcmFnKToKKworMjAxMS0wNi0yMyAgSm9l
IFdpbGQgIDxqb3NlcGgud2lsZEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFz
emxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIEV4cG9ydCBmaWxlcyB1bmRlciBTeW1iaWFuIFF0
IFdlYktpdCBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjEyMDcKKworICAgICAgICBFeHBvcnQgZmlsZXMgZm9yIHRoZSBTeW1iaWFuIHBsYXRm
b3JtIGFzIHRoaXMgaXMgbmVlZGVkIGJ5IHRoZQorICAgICAgICBwcm9kdWN0aW9uIGJ1aWxkIHN5
c3RlbS4KKworICAgICAgICBKYW5uZSBLb3NraW5lbiBwcm92aWRlZCB0aGUgc3VnZ2VzdGlvbiB0
byB1c2UgdGFyZ2V0X3ByZWRlcHMsCisgICAgICAgIHdoaWNoIGlzIGFuIGltcHJvdmVtZW50IG92
ZXIgdGhlIG9yaWdpbmFsbHkgc3VnZ2VzdGVkIHBhdGNoLgorCisgICAgICAgICogUXRXZWJLaXQu
cHJvOgorCisyMDExLTA2LTIzICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBb
UXRdIEZpeCB0c3RfUVdlYkZyYW1lOjpzZXRIdG1sV2l0aFJlc291cmNlKCkgQVBJIHRlc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMjM1CisKKyAg
ICAgICAgW1F0XSBGaXggdHN0X1FXZWJGcmFtZTo6cmVuZGVyR2VvbWV0cnkoKSBBUEkgdGVzdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMyMzYKKwor
ICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYkZyYW1lOjpzZXRVcmxXaXRoUGVuZGluZ0xvYWRzKCkg
QVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYzMjM3CisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6IE1h
cmsgZmFpbGluZyB0ZXN0IGNhc2VzIGFzIGV4cGVjdGVkIGZhaWxzIHVudGlsIHJlYWwgZml4Lgor
ICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0SHRtbFdpdGhSZXNvdXJjZSk6CisgICAgICAgICh0
c3RfUVdlYkZyYW1lOjpyZW5kZXJHZW9tZXRyeSk6CisKKzIwMTEtMDYtMjMgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gRml4IHRzdF9RV2ViUGFnZTo6c2hvd01vZGFs
RGlhbG9nKCkgQVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYzMjQ0CisKKyAgICAgICAgW1F0XSBGaXggdHN0X1FXZWJQYWdlOjp0ZXN0U3Rv
cFNjaGVkdWxlZFBhZ2VSZWZyZXNoKCkgQVBJIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMjQ1CisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOiBNYXJrIGZhaWxpbmcgdGVzdCBjYXNlcyBhcyBleHBlY3RlZCBm
YWlscy4KKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAgICAg
KHRzdF9RV2ViUGFnZTo6dGVzdFN0b3BTY2hlZHVsZWRQYWdlUmVmcmVzaCk6CisKKzIwMTEtMDYt
MjIgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyLiAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgorCisgICAgICAgIFtRdF0g
Rml4IFF0IG5hbWVzcGFjZSBvbiBRRGVjbGFyYXRpdmVXZWJWaWV3IGF1dG90ZXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzE0NworCisgICAgICAg
IEFwcGxpY2F0aW9ucyAoc3VjaCBhcyB0aGUgdGVzdCBydW5uZXIpIGFyZSBub3Qgc3VwcG9zZWQg
dG8gYmUgd3JhcHBlZAorICAgICAgICBieSB7UVRfQkVHSU4sUVRfRU5EfV9OQU1FU1BBQ0UgbWFj
cm9zLCBvdGhlcndpc2UgYnVpbGRpbmcgUXQgKG9yCisgICAgICAgIFF0V2ViS2l0KSB3aXRoIGEg
c3BlY2lmaWMgbmFtZXNwYWNlIHdvbid0IHdvcmsgKHdpbGwgcmVzdWx0IGluIG1haW4KKyAgICAg
ICAgYmVpbmcgdW5kZWZpbmVkKS4KKworICAgICAgICBUaGlzIHdhcyB0aGUgb25seSB0ZXN0IHdy
YXBwZWQgYnkgdGhlc2UgbWFjcm9zLCBhbGwgb3RoZXJzIGFyZSBmaW5lLgorCisgICAgICAgICog
dGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6IHJl
bW92ZQorICAgICAgICBuYW1lc3BhY2UgbWFjcm9zLgorCisyMDExLTA2LTIwICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
dCBUYW11cmEuCisKKyAgICAgICAgRmlsZUNob29zZXIgc2hvdWxkIGJlIG9ubHkgY3JlYXRlZCB3
aGVuIHdlIG5lZWQgdG8gY2hvb3NlIGZpbGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMwMzkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5P
cGVuUGFuZWwpOiBDaGFuZ2VkIHRvIHVzZSBzZXR0aW5ncy4KKworMjAxMS0wNi0yMSAgWWFlbCBB
aGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFJlZ3Jlc3Npb24oNjA5NDIpIHdyb25nIGRlZmF1
bHQgYWN0aW9uIGZvciBkcmFnLWFuZC1kcm9wLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMwMDQKKworICAgICAgICBBZGRlZCBzcGVjaWFsIGhhbmRs
aW5nIGZvciB0aGUgY2FzZSB0aGF0IGRyYWdPcGVyYXRpb24gaXMgbm90IGluaXRpYWxpemVkLgor
ICAgICAgICBTYXZlIHRoZSBsYXN0IGRyb3BPcGVyYXRpb24gYW5kIHBhc3MgaXQgdG8gdGhlIGRy
b3BFdmVudCwgc28gdGhhdCBpdCBjYW4gCisgICAgICAgIGJlIGFjY2VwdGVkIGJ5IFFEcmFnLgor
ICAgICAgICBDYWxsIGV2ZW50LT5hY2NlcHRlZCgpIGFuZCBub3QgZXZlbnQtPmFjY2VwdFByb3Bv
c2VkQWN0aW9uKCksIGJlY2F1c2UgdGhlCisgICAgICAgIGxhdGVyIGlnbm9yZXMgdGhlIGRyb3BB
Y3Rpb24gc3BlY2lmaWVkIGluIEphdmFTY3JpcHQuCisKKyAgICAgICAgVGVzdGVkIHdpdGggdGhl
IHRlc3QgcGFnZSBhdHRhY2hlZCB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDA0MDEKKyAgICAgICAgYW5kIGRpZCBub3Qgc2VlIGFueSBpc3N1ZS4KKyAgICAgICAg
QWxzbyBtYW51YWxseSB0ZXN0ZWQgYWxsIGNvbWJpbmF0aW9ucyBvZiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9kcmFnLWFuZC1kcm9wLmh0bWwKKyAgICAgICAgYW5kIHRoZXkgYWxsIHBhc3MuCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZHJvcEFjdGlvblRvRHJhZ09w
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6CisKKzIwMTEtMDYtMjAgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1p
a2hhdHNreS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTk0CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMS0wNi0xOCAgRGltaXRyaSBHbGF6
a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIFNlcGFyYXRlIGNvbmNlcm5zIG9mIGxvYWRpbmcgZmlsZSBpY29u
cyBhbmQgY2hvb3NpbmcgZmlsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjkzMQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmxvYWRJY29uRm9y
RmlsZXMpOiBSZW5hbWVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
Lmg6CisKKzIwMTEtMDYtMTcgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBb
UXRdIEZpeCB3cm9uZyBmcmFtZXdvcmsgZ2VuZXJhdGlvbiBvbiBNYWNPUyB3aGVuIGluc2lkZSBR
dCA0LjguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjgxNQorCisgICAgICAgIFBhcnRpYWxseSByZXZlcnQgcjg1ODcwIHdoaWNoIGFzc3VtZWQgdGhh
dCBRdFdlYktpdCB3aWxsIG5ldmVyIGJlIGJ1aWxkIGluc2lkZSBRdAorICAgICAgICBhbnltb3Jl
LiBFdmVyeXRoaW5nIGluc2lkZSAhUVRESVJfYnVpbGQgY29uZGl0aW9uIGlzIG5vdCBuZWVkZWQg
aW4gdGhlIFF0IHRyZWUgYmVjYXVzZQorICAgICAgICBxYmFzZS5wcmkgaXMgZG9pbmcgdGhlIGpv
YiBmb3IgdXMsIGkuZS4gdXNpbmcgaW5jbHVkZXMgZ2VuZXJhdGVkIGJ5IHN5bmNxdCB0bworICAg
ICAgICBzZXR1cCB0aGUgbWFjIGZyYW1ld29yay4gSXQgYWxzbyB1c2UgYSBjb3JyZWN0IFFNQUtF
X0xGTEFHU19TT05BTUUgbWFraW5nIHBvc3NpYmxlCisgICAgICAgIHRvIGFjdHVhbGx5IHJ1biBh
biBhcHBsaWNhdGlvbiBsaW5rZWQgYWdhaW5zdCBRdFdlYktpdC4KKworICAgICAgICAqIFF0V2Vi
S2l0LnBybzoKKworMjAxMS0wNi0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg4Nzk2LgorICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84ODc5NgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3OTAKKworICAgICAgICBJdCBt
YWRlIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbCB0aW1lIG91dCBvbiBRdCwKKyAg
ICAgICAgNjQtYml0LCBkZWJ1ZyBtb2RlIChSZXF1ZXN0ZWQgYnkgT3NzeSBvbiAjd2Via2l0KS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwbGFpblRleHQpOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisgICAgICAgICogdGVzdHMvcXdl
YmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6b3Zlcmxv
YWRlZFNsb3RzKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OmRvbUN5Y2xlcyk6CisKKzIwMTEt
MDYtMTUgIERpZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIElu
Y29uc2lzdGVudCBiZWhhdmlvciBvbiBhIGZvcm0gc3VibWl0IHJlcXVlc3QuLi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTIzCisKKyAgICAgICAg
VGhlIGluY29uc2lzdGVuY3kgb2NjdXJzIHdoZW4gYSBmb3JtIHN1Ym1pc3Npb24gcmVxdWVzdHMg
YSBuZXcgd2luZG93LgorICAgICAgICBUd28gd2luZG93cyBhcmUgb3BlbmVkIChpbnN0ZWFkIG9m
IG9ubHkgb25lKSBhbmQgdGhlIGZpcnN0IHdpbmRvdyBpcyBvcGVuZWQKKyAgICAgICAgYXMgYSBi
bGFuayBwYWdlLgorCisgICAgICAgIEJ5IGRlZmF1bHQgZWFjaCBwYWdlIGlzIHB1dCBpbnRvIHRo
ZWlyIG93biB1bmlxdWUgcGFnZSBncm91cCwgd2hpY2ggYWZmZWN0cyBwb3B1cCB3aW5kb3dzCisg
ICAgICAgIGFuZCB2aXNpdGVkIGxpbmtzLiBQYWdlIGdyb3VwcyAocGVyIHByb2Nlc3Mgb25seSkg
aXMgYSBmZWF0dXJlIG1ha2luZyBpdCBwb3NzaWJsZSB0byB1c2UKKyAgICAgICAgc2VwYXJhdGUg
c2V0dGluZ3MgZm9yIGVhY2ggZ3JvdXAsIHNvIHRoYXQgZm9yIGluc3RhbmNlIGFuIGludGVncmF0
ZWQgYnJvd3Nlci9lbWFpbCByZWFkZXIKKyAgICAgICAgY2FuIHVzZSBkaWZmZXJlbnQgc2V0dGlu
Z3MgZm9yIGRpc3BsYXlpbmcgSFRNTCBwYWdlcyBhbmQgSFRNTCBlbWFpbC4gVG8gbWFrZSBRdFdl
YktpdCB3b3JrCisgICAgICAgIGFzIGV4cGVjdGVkIG91dCBvZiB0aGUgYm94LCB3ZSB1c2UgYSBk
ZWZhdWx0IGdyb3VwIHNpbWlsYXIgdG8gd2hhdCBvdGhlciBwb3J0cyBhcmUgZG9pbmcuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisyMDExLTA2LTE0ICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIHRzdF9RV2ViRnJhbWU6
Om92ZXJsb2FkZWRTbG90cygpIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzMxOQorCisgICAgICAgIFNpbmNlIHRoZSBpbXBsaWNpdCBjb252
ZXJzaW9uIHdhcyByZW1vdmVkLCBjaGFuZ2Ugc3VwcG9ydCBmdW5jdGlvbnMgb2YgRFJUIHRvCisg
ICAgICAgIGV4cGVjdCBhIFFWYXJpYW50TWFwIGluc3RlYWQgb2YgYSBRV2ViRWxlbWVudC4gVGhp
cyBtYXRjaGVzIHRoZSBleHBvc2VkIGZ1bmN0aW9uCisgICAgICAgIGluIHRoZSBjb250cm9sbGVy
LCB3aGljaCB0YWtlcyAnZG9jdW1lbnQnIGFuZCBub3QgJ2RvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCcuCisKKyAgICAgICAgQW5kIG5vdyB0aGF0IEVsZW1lbnQgLT4gUVdlYkVsZW1lbnQgaXMgYSBw
ZXJmZWN0IG1hdGNoLCB3ZSBtdXN0IHVzZSBRV2ViRWxlbWVudAorICAgICAgICBpbnN0ZWFkIG9m
IFFWYXJpYW50TWFwLCBsaWtlIGluIHBsYWluVGV4dCgpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6cGxhaW5UZXh0KTogRml4IHRvIHVzZSBRV2ViRWxlbWVudCBpbnN0ZWFkIG9mCisg
ICAgICAgIFFWYXJpYW50TWFwIHdoZW4gZ2V0dGluZyB0aGUgc3RhcnRDb250YWluZXIuIEFsc28g
dXNlIFFWYXJpYW50TWFwIGRpcmVjdGx5LAorICAgICAgICBicmlkZ2Ugd2lsbCBkbyBjb252ZXJz
aW9uIGZvciB1cyBub3cuCisKKyAgICAgICAgKGdldENvcmVEb2N1bWVudEZyb21WYXJpYW50TWFw
KTogRXh0cmFjdHMgdGhlIFdlYkNvcmU6OkRvY3VtZW50KiBmcm9tIHRoZQorICAgICAgICBRVmFy
aWFudE1hcCB0aGF0IFF0IGJyaWRnZSBnaXZlcyB1cyB3aGVuICdkb2N1bWVudCcgaXMgcGFzc2Vk
IGZyb20gSlMuCisKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpub2Rlc0Zyb21S
ZWN0KTogVXNlIGhlbHBlciBmdW5jdGlvbi4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90
c3RfcXdlYmZyYW1lLmNwcDogU3BsaXR0ZWQgdGhlIHRlc3QgZG9tQ3ljbGVzKCkgaW50byB0d28K
KyAgICAgICAgZGlmZmVyZW50IHRlc3RzLiBJbiBwcmFjdGljZSwgdGhlIG9yaWdpbmFsIHRlc3Qg
anVzdCBjaGVja2VkIHdoZXRoZXIgd2UgY291bGQKKyAgICAgICAgY3JlYXRlIGEgUVZhcmlhbnRN
YXAgcmVwcmVzZW50aW5nICdkb2N1bWVudCcgd2l0aG91dCBpbmZpbml0ZSBsb29waW5nIGR1ZSB0
bworICAgICAgICBjeWNsZXMgaW4gdGhlIERPTS4gVGhpcyB3YXMgbW9yZSBldmlkZW50IGJlZm9y
ZSBzaW5jZSB3ZSBoYXZlbid0IGEgY29udmVyc2lvbgorICAgICAgICBmcm9tIEpTRWxlbWVudCB0
byBRV2ViRWxlbWVudCwgYnV0IGZyb20gSlNFbGVtZW50IHRvIFFWYXJpYW50TWFwLgorCisgICAg
ICAgICh0c3RfUVdlYkZyYW1lOjpkb2N1bWVudEhhc0RvY3VtZW50RWxlbWVudCk6IEV2YWx1YXRl
cyAnZG9jdW1lbnQnIGFuZCBleHRyYWN0cworICAgICAgICAnZG9jdW1lbnRFbGVtZW50JyBmcm9t
IGl0LiBDb21wYXJlcyB0byBRV2ViRnJhbWU6OmRvY3VtZW50RWxlbWVudCgpLgorCisgICAgICAg
ICh0c3RfUVdlYkZyYW1lOjpkb2N1bWVudEFsbEhhc0RvY3VtZW50RWxlbWVudCk6IExvb2sgaW5z
aWRlICdkb2N1bWVudC5hbGwnIGZvcgorICAgICAgICB0aGUgZG9jdW1lbnRFbGVtZW50LgorCisg
ICAgICAgICh0c3RfUVdlYkZyYW1lOjpvdmVybG9hZGVkU2xvdHMpOiBSZW1vdmUgZXhwZWN0ZWQg
ZmFpbHVyZSBhbmQgZml4IHdyb25nIGNvbW1lbnQuCisKKzIwMTEtMDYtMTQgIEFuZHJlYXMgS2xp
bmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBv
dWxhaW4uCisKKyAgICAgICAgW1F0XSBEb24ndCBpbmNsdWRlIGNvbnZlbmllbmNlICJRV2ViRm9v
IiBoZWFkZXJzIGluIFdlYktpdCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjI2MzIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TmV0d29ya2luZ0NvbnRleHRRdC5jcHA6CisKKzIwMTEtMDYtMTIgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgorCisgICAgICAgIFJlbmFtZSBGcmFtZUxvYWRlckNsaWVudDo6aW50ZXJydXB0Rm9yUG9saWN5
Q2hhbmdlRXJyb3IgdG8gdXNlIHRoZSBwYXN0IHRlbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjUxNgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTEtMDYtMTIgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBBdHRlbXB0IHRvIGZpeCBRdCBi
dWlsZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKToKKworMjAxMS0wNi0x
MiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlcjo6aXNQcm9jZXNzaW5n
VXNlckdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyNTE5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyk6CisKKzIwMTEt
MDYtMTAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgW1F0XSBGaXggJ2hlYWRlcnMnIGF1
dG90ZXN0IHdoZW4gYnVpbGRpbmcgaW5zaWRlIFF0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0NDkKKworICAgICAgICAqIEFwaS9xd2Via2l0cGxh
dGZvcm1wbHVnaW4uaDoKKworMjAxMS0wNi0xMCAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdv
bWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBLZWVwIE9SSUVOVEFUSU9OX0VWRU5UUyBpbmRlcGVu
ZGVudCBmcm9tIERFVklDRV9PUklFTlRBVElPTgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0MjAKKworICAgICAgICBPUklFTlRBVElPTl9FVkVOVFMg
YW5kIERFVklDRV9PUklFTlRBVElPTiBmZWF0dXJlcyBhcmUgdmVyeSBzaW1pbGFyCisgICAgICAg
IGJ1dCB0aGV5IG1lYW50IHRvIGJlIGluZGVwZW5kZW50LgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpfcV9vcmllbnRhdGlvbkNoYW5n
ZWQpOgorICAgICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWVfcC5oOgorCisyMDExLTA2LTA5ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0g
Rml4IHRoZSBpbi10cmVlIGJ1aWxkIG9uIExpbnV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjM3OAorCisgICAgICAgIEluIGNhc2Ugb2YgYW4gaW4t
dHJlZSBidWlsZCBxbWFrZSBnZW5lcmF0ZXMgZGVmZWN0IHBybCBkZXBlbmRlbmNpZXMgZm9yCisg
ICAgICAgIHRoZSBRdFdlYktpdCBsaWJyYXJ5LCBiZWNhdXNlIHRoZSBpbmNsdXNpb24gb2YgcXRi
YXNlLnByaSBhZGRzIGV4cGxpY2l0bGliIHRvIENPTkZJRy4KKworICAgICAgICAqIFF0V2ViS2l0
LnBybzogUmVtb3ZlIGV4cGxpY2l0bGliIGFuZCBzdGF0aWNsaWIgZnJvbSBDT05GSUcuCisKKzIw
MTEtMDYtMDkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVGVhY2ggUXQgYWJvdXQgd2luZG93
LmludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjEwNzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRlcm5h
bHNPYmplY3QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0Lmg6CisKKzIwMTEtMDYtMDggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgW1F0XSBG
cmFtZUxvYWRlckNsaWVudDogQ2hlY2sgVmVjdG9yOjpmaW5kKCkgcmV0dXJuIHZhbHVlIGZvciBX
VEY6Om5vdEZvdW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjIyNzQKKworICAgICAgICBWZWN0b3I6OmZpbmQoKSByZXR1cm5zIHNpemVfdCAod2hp
Y2ggaXMgdW5zaWduZWQpLCBzbyB3ZSBzaG91bGQgY2hlY2sKKyAgICAgICAgZm9yIFdURjo6bm90
Rm91bmQgaW5zdGVhZCBvZiAtMS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
Y3JlYXRlUGx1Z2luKToKKworMjAxMS0wNi0wNyAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2Vu
dGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICBbVGV4bWFwXVtRdF0gRW5hYmxlIFRleHR1cmVNYXBwZXIgYnkgZGVmYXVsdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3NDAKKworICAg
ICAgICBFbmFibGUgVGV4dHVyZU1hcHBlciBvbiBXaW5kb3dzK1N5bWJpYW4sIGRpc2FibGluZyB0
aGUgZGlyZWN0IE9wZW5HTCBwYXRoLiBUaGlzIHdvdWxkIG1lYW4gdGhhdAorICAgICAgICBmb3Ig
bm93IFF0V2ViS2l0IG9uIFdpbmRvd3MvU3ltYmlhbiB3b3VsZCB1c2UgdGhlIFF0IGJhY2tlbmQg
Zm9yIFRleHR1cmVNYXBwZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6c2V0
Um9vdEdyYXBoaWNzTGF5ZXIpOgorCisyMDExLTA2LTA3ICBBcmF2aW5kIEFrZWxsYSAgPGFyYXZp
bmQuYWtlbGxhQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9z
LgorCisgICAgICAgIFtRdF1bU3ltYmlhbl0gQVBJIHRlc3QgZmFpbHVyZSBxZGVjbGFyYXRpdmV3
ZWJ2aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
OTQ4MQorCisgICAgICAgIFFNTCBmaWxlcyBjYW5ub3QgYmUgbG9hZGVkIG9uIFN5bWJpYW4gZHVl
IHRvIGRpZmZlcmVuY2UgCisgICAgICAgIGluIGNhcGFiaWxpdGllcyBiZXR3ZWVuIHFtbHdlYmtp
dHBsdWdpbi5kbGwgYW5kIFF0d2Via2l0LmRsbC4gIAorICAgICAgICBBIFBsYXRTZWMgZXJyb3Ig
dGhhdCBRdHdlYmtpdC5kbGwgaGFzICJEUk0gQWxsRmlsZXMiIGNhcGFiaWxpdGllcyAKKyAgICAg
ICAgbWlzc2luZyBpcyBvYnNlcnZlZCB3aGVuIGR5bmFtaWNhbGx5IGxvYWRpbmcgdGhlIFFNTCBw
bHVnaW4uIAorCisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOiBNYXRjaCBj
YXBhYmlsaXRpZXMgaW4gUXRXZWJLaXQucHJvLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1w
bHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOiBNYXRjaCBjYXBhYmlsaXRpZXMgd2l0aCB0aGUgb3Ro
ZXIgMiBETExzLiAKKyAgICAgICAgQWxzbyByZW1vdmUgVEFSR0VULlZJRCBmcm9tIHBsYXRmb3Jt
cGx1Z2luLCBhcyBpdCdzIG5vdCB1c2VkIGluIGFueSBvdGhlciBRdCBXZWJLaXQgRExMLAorICAg
ICAgICBhbmQgY2F1c2VzIGJ1aWxkIHdhcm5pbmdzIGFib3V0IHVuZGVmaW5lZCBWRU5ET1JfVklE
LiAKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6IEFkZCBXcml0ZURldmljZURhdGEgY2FwYWJp
bGl0eSBmb3IgQVBJIHRlc3RzLiAKKworMjAxMS0wNi0wNCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAg
ICAgICBbUXRdIEZpeCBhbmQgdW5za2lwIGFjaWQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjA4OQorCisgICAgICAgIHNob3VsZEZhbGxCYWNrKCkg
dGVsbHMgdGhlIERPTSBpZiBpdCBzaG91bGQgYXR0ZW1wdCB0byByZW5kZXIKKyAgICAgICAgdGhl
IG5leHQgbmVzdGVkIDxvYmplY3Q+IGlmIGl0cyBwYXJlbnQgZmFpbHMgdG8gbG9hZC4KKworICAg
ICAgICBUaGlzIGZpeCBpcyBvbmx5IHJlcXVpcmVkIGZvciB0aGUgZmFzdC9jc3MgdmVyc2lvbiBv
ZiB0aGUgQUNJRDIKKyAgICAgICAgdGVzdCwgd2hpY2ggbG9hZHMgYSBub24tZXhpc3RlbnQgZmls
ZTovLyB1cmwuIFRoZSBIVFRQIHZlcnNpb24gb2YgdGhlCisgICAgICAgIHRlc3QgYWxyZWFkeSBw
YXNzZXMgYmVjYXVzZSB0aGUgbG9hZGVyIHdpbGwgcmVuZGVyIGZhbGxiYWNrIGNvbnRlbnQKKyAg
ICAgICAgb24gYSBmYWlsZWQgSFRUUCBsb2FkIHdpdGhvdXQgZGVsZWdhdGluZyB0aGUgZGVjaXNp
b24gdG8gdGhlIGNsaWVudAorICAgICAgICAoIHNlZSBNYWluUmVzb3VyY2VMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KS4KKworICAgICAgICBTb21lIHBvcnRzIGFsc28gY2hlY2sg
Zm9yIFdlYktpdEVycm9yUGx1Z2luV2lsbEhhbmRsZUxvYWQgd2hlbiBkZWNpZGluZworICAgICAg
ICB3aGF0IHRvIHJldHVybi4gVGhpcyBlcnJvciBpc24ndCBjdXJyZW50bHkgc2V0IGJ5IFF0IHNv
IHdlIGRvbid0IGNoZWNrCisgICAgICAgIGl0LiAoT3RoZXIgcG9ydHMgc2V0IGl0IHdoZW4gdGhl
IGVycmluZyBkb2N1bWVudCBpcyBhIE1lZGlhRG9jdW1lbnQsIG1heWJlCisgICAgICAgIHdlIHNo
b3VsZCBkbyB0aGF0IHRvbyBhdCBzb21lIHBvaW50KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6c2hvdWxkRmFsbEJhY2spOgorCisyMDExLTA2LTAzICBSYWZhZWwgQnJhbmRh
byAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIEl0IG1hZGUgdHdvIFF0IEFQSSB0ZXN0cyBmYWls
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODg0Nwor
CisgICAgICAgIE1vZGlmaWVkIGZhaWxpbmcgdGVzdCdzIGJhc2UgdXJsIHNvIGl0IGNvdWxkIGdl
dCBhIHZhbGlkIG9yaWdpbgorICAgICAgICBhbmQgbWFrZSB1c2Ugb2YgbG9jYWwgc3RvcmFnZS4g
QWxzbyBhZGRlZCBhbm90aGVyIHRlc3QgdGhhdCBjaGVja3MKKyAgICAgICAgbG9jYWwgc3RvcmFn
ZSB2aXNpYmlsaXR5IGluIGJvdGggc2NlbmFyaW9zLgorCisgICAgICAgICogdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6dGVzdE9wdGlvbmFs
SlNPYmplY3RzKToKKyAgICAgICAgKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSk6CisgICAg
ICAgICh0c3RfUVdlYlBhZ2U6OnRlc3RMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5KToKKworMjAxMS0w
Ni0wMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gV2FybmluZyBm
aXhlcyBvbiBjb21wYXJpc29ucyBiZXR3ZWVuIGEgc2lnbmVkIGFuZCBhbiB1bnNpZ25lZC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlz
aXRlZEluZm8pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om5vZGVzRnJvbVJl
Y3QpOgorCisyMDExLTA2LTAzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
VG8gc3VwcG9ydCBidWlsZGluZyBuYW1lc3BhY2VkIFF0LCB3ZSByZXF1aXJlIHRoYXQgZm9yd2Fy
ZC1kZWNsYXJhdGlvbnMKKyAgICAgICAgb2YgUXQgY2xhc3NlcyBiZSB3cmFwcGVkIGluIFFUX0JF
R0lOX05BTUVTUEFDRSBhbmQgUVRfRU5EX05BTUVTUEFDRS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAxMS0wNi0wMyAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCBhZnRlciByODc5MDIuCisKKyAgICAgICAgVG8gc3VwcG9ydCBidWlsZGluZyBuYW1l
c3BhY2VkIFF0LCB3ZSByZXF1aXJlIHRoYXQgZm9yd2FyZC1kZWNsYXJhdGlvbnMKKyAgICAgICAg
b2YgUXQgY2xhc3NlcyBiZSB3cmFwcGVkIGluIFFUX0JFR0lOX05BTUVTUEFDRSBhbmQgUVRfRU5E
X05BTUVTUEFDRSBidXQKKyAgICAgICAgb25seSBvbiBjbGFzc2VzIGluc2lkZSBRdC4KKyAgICAg
ICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoK
KworMjAxMS0wNi0wMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFNv
bWUgd2FybmluZyBmaXhlcy4gVmFsdWVzIGluIHN3aXRjaCBub3QgaGFuZGxlZCwgYW5kCisgICAg
ICAgIGEgY29tcGFyaXNvbiBiZXR3ZWVuIGEgc2lnbmVkIGFuZCBhbiB1bnNpZ25lZC4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmlucHV0
TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlD
aGFuZ2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToKKworMjAxMS0wNi0wMiAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0
XSBGaXggZW51bSBvcmRlciBpbiBxd2VicGFnZS5oIHB1YmxpYyBBUEkgaGVhZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk1OQorCisgICAgICAg
IFNpbmNlIHF3ZWJwYWdlLmggaXMgYSBwdWJsaWMgaGVhZGVyLCB3ZSBjYW4ndCBjaGFuZ2UgdGhl
IHZhbHVlcyBvZgorICAgICAgICB0aGUgZW51bWVyYXRpb25zLiBUaGlzIHBhdGNoIG1vdmVzIHRo
ZSBuZXcgZW51bWVyYXRpb24gdG8gdGhlIGVuZAorICAgICAgICBvZiB0aGUgbGlzdC4gQXMgYSBi
b251cywgYWRkcyBhIG1pc3NpbmcgZW50cnkgaW4KKyAgICAgICAgZWRpdG9yQ29tbWFuZFdlYkFj
dGlvbnMgdGFibGUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5oOgorCisyMDExLTA2LTAyICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBSZW1vdmUgUXQncyBwcmVjb21waWxlZCBoZWFkZXIgaGFjayBhcyBpdCB3YXMgYnJva2Vu
LCBhbmQgd2FzIG5vdCBldmVuCisgICAgICAgIHVzZWQgdW5sZXNzIGJ1aWxkaW5nIFdlYktpdCBp
bnNpZGUgYSBRdCB0cmVlLgorCisgICAgICAgICogV2ViS2l0X3BjaC5oOiBSZW1vdmVkLgorCisy
MDExLTA2LTAyICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KKworICAgICAgICBUbyBzdXBwb3J0IGJ1aWxkaW5nIG5hbWVz
cGFjZWQgUXQsIHdlIHJlcXVpcmUgdGhhdCBmb3J3YXJkLWRlY2xhcmF0aW9ucworICAgICAgICBv
ZiBRdCBjbGFzc2VzIGJlIHdyYXBwZWQgaW4gUVRfQkVHSU5fTkFNRVNQQUNFIGFuZCBRVF9FTkRf
TkFNRVNQQUNFLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuaDoKKworMjAxMS0wNi0wMSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF1GaXggdHN0X1FXZWJGcmFtZTo6
c2V0VXJsVG9JbnZhbGlkKCkgYXV0b3Rlc3QgYWZ0ZXIgcjg0NzYyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTM0NQorCisgICAgICAgIEtVUkwgYW5k
IFFVcmwgZGlzYWdyZWUgd2hldGhlciBjZXJ0YWluIFVSTHMgYXJlIHZhbGlkIG9yIG5vdC4gVGhl
IHJlZ3Jlc3Npb24gaGVyZQorICAgICAgICB3YXMgY2F1c2VkIGJ5IHRoZSBmYWN0IHRoYXQgbm93
IEtVUkwgYWNjZXB0cyAiaHR0cDovZXhhbXBsZS5jb20iIChub3RlIG9ubHkgb25lCisgICAgICAg
IHNsYXNoKSBhbmQgb3VyIHRlc3QgY2FzZSB1c2VkIGEgc3RyYW5nZSBlZGdlIGNhc2UgdGhhdCdz
IHRyYW5zZm9ybWVkIGludG8gYQorICAgICAgICAib25lLXNsYXNoIiBVUkwgdGhhdCBub3cgS1VS
TCBjYW4gaGFuZGxlLgorCisgICAgICAgIFF0V2ViS2l0IGFwcHJvYWNoIGluIHRoaXMgY2FzZSBp
cyB0byBkbyBhIGJlc3QgZWZmb3J0IGFuZCBhY2NlcHQgdGhlIFFVcmwgaWYgS1VSTAorICAgICAg
ICBjYW4gdW5kZXJzdGFuZCBpdC4gU28gSSd2ZSB1cGRhdGVkIHRoZSB0ZXN0IHRvIHVzZSBhIG1v
cmUgbWVhbmluZ2Z1bCBleGFtcGxlIGFuZAorICAgICAgICBzaG93IHRoYXQgYW4gaW52YWxpZCBV
UkwgZ2V0cyBjb252ZXJ0ZWQgdG8gYSB2YWxpZCBVUkwgaWYgcG9zc2libGUuCisKKyAgICAgICAg
KiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICh0c3RfUVdlYkZy
YW1lOjpzZXRVcmxUb0ludmFsaWQpOgorCisyMDExLTA2LTAxICBBbmRyZWFzIEtsaW5nICA8a2xp
bmdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgor
CisgICAgICAgIFJFR1JFU1NJT046IFtRdF0gUU5ldHdvcmtSZXBseSBkZWxpdmVyZWQgYnkgdGhl
IHVuc3VwcG9ydGVkQ29udGVudCgpIHNpZ25hbCBkb2VzIG5vdCBjb250YWluIGRvd25sb2FkZWQg
ZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk2
NTAKKworICAgICAgICBEZWZlciBlbWlzc2lvbiBvZiBRV2ViUGFnZTo6dW5zdXBwb3J0ZWRDb250
ZW50KCkgdW50aWwgd2UncmUgYmFjayBpbiB0aGUgZXZlbnQgbG9vcC4KKyAgICAgICAgVGhpcyBs
ZXRzIHRoZSBRTkFNIGJhY2tlbmQgZmluaXNoIHdpdGggdGhlIHJlcGx5IHdpdGhvdXQgaGFuZGlu
ZyBvdmVyIG93bmVyc2hpcCB0byB0aGUgdXNlciBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBzaW5jZSB0aGlzIGRvZXNuJ3QgZmFpbCBmb3IgcXJjOi8vIG9yIGZpbGU6Ly8gVVJMcyBhbmQg
b3VyIHRlc3RzIGNhbid0IGRlcGVuZCBvbiBodHRwOi8vIFVSTHMuCisKKyAgICAgICAgVG8gY29y
cmVjdGx5IHNvbHZlIHRoaXMgaXNzdWUsIHdlIG5lZWQgY2hhbmdlcyB0byBRdCwgdHJhY2tlZCBo
ZXJlOgorICAgICAgICBodHRwOi8vYnVncmVwb3J0cy5xdC5ub2tpYS5jb20vYnJvd3NlL1FUQlVH
LTE4NzE4CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRvd25sb2FkKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTEtMDYtMDEgIENh
aW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFtR
dF0gUmV3cml0ZSB0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6bXVsdGlwbGVXaW5kb3dzKCkgdG8g
bm90IGRlcGVuZCBvbiBHcmlkIGludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE3MzkKKworICAgICAgICBUaGUgc2tpcHBlZCB0ZXN0IHdh
cyBpbXBvcnRlZCBmcm9tIFF0IHNvdXJjZSByZXBvc2l0b3J5LCBhbmQgdXNlZCBwcml2YXRlIGhl
YWRlcnMKKyAgICAgICAgdG8gcGVlayBpbiB0aGUgUU1MIEdyaWQgZWxlbWVudC4gVGhpcyBwYXRj
aCBjaGFuZ2VzIHRoZSBRTUwgdXNlZCB0byBleHBvc2UgdGhlCisgICAgICAgIGluZm9ybWF0aW9u
IHdlIHdhbnQgdG8gdGVzdDogbnVtYmVyIG9mIHBhZ2VzIG9wZW5lZCBhbmQgdGhlIGZpcnN0IHBh
Z2Ugb3BlbmVkLgorCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJj
ZXMvbmV3d2luZG93cy5odG1sOgorICAgICAgICBBZGRlZCA8Ym9keT4gdGFncy4gV2UgaGF2ZSBu
byByZWFzb24gdG8gbm90IHVzZSB0aGVtIGluIHRoZSB0ZXN0LgorCisgICAgICAgICogdGVzdHMv
cWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJjZXMvbmV3d2luZG93cy5xbWw6CisgICAgICAgIE1v
dmVkIHRoZSB0aW1lciBvdXQgb2YgdGhlIHBhZ2UgY29tcG9uZW50LCB1c2VkIGFuY2hvcnMgZm9y
IHNldHRpbmcgd2VidmlldyBzaXplLAorICAgICAgICBjaGFuZ2VkIHRoZSB3YXkgd2UgY291bnQg
cGFnZXMgb3BlbmVkLiBBbHNvIGNoYW5nZWQgY29kaW5nIHN0eWxlIGEgYml0LgorCisgICAgICAg
ICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6
CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6bXVsdGlwbGVXaW5kb3dzKToKKyAg
ICAgICAgV2Ugbm93IGxvb2sgZm9yIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5mb3JtYXRpb24gd2Ug
d2FudCBpbiB0aGUgcm9vdEl0ZW06IHBhZ2VzT3BlbmVkIGFuZAorICAgICAgICBmaXJzdFBhZ2VP
cGVuZWQuCisKKzIwMTEtMDUtMzEgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFtRdF0gdHN0X1FXZWJGcmFtZTo6cmVuZGVyKCkgZmFpbGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA4OTMKKyAgICAgICAgCisgICAgICAgIFRo
ZSB0ZXN0IHdhcyBleHBlY3RpbmcgdGhlIGZyYW1lIGNvbnRlbnRzIHRvIGJlIGFscmVhZHkgbG9h
ZGVkCisgICAgICAgIGJlZm9yZSByZW5kZXJpbmcgaXQgaW50byBhIFFQaWN0dXJlLiBSZW5hbWVk
IHRoZSB0ZXN0IHRvIGZpdAorICAgICAgICBpdHMgcmVhbCBwdXJwb3NlIG1vcmUgYWNjb3JkaW5n
bHkuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICh0c3RfUVdlYkZyYW1lOjpyZW5kZXJHZW9tZXRyeSk6CisKKzIwMTEtMDUtMzAgIENhaW8g
TWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gRml4
IHVubmVjZXNzYXJ5IHdhaXQgaW4gQVBJIGF1dG90ZXN0IHRzdF9RV2ViRnJhbWU6OnNjcm9sbGJh
cnNPZmYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYx
NzExCisKKyAgICAgICAgVGhlIGxvYWRGaW5pc2hlZCgpIHNpZ25hbCB3YXMgZW1pdHRlZCBkaXJl
Y3RseSBpbnNpZGUgdGhlIGNhbGwgZm9yIHNldEh0bWwsIHNvCisgICAgICAgIHRoZSB0ZXN0IHdh
cyB3YWl0aW5nIHRoZSBsb2FkRmluaXNoZWQoKSBzaWduYWwgd2l0aCBhIGJpZyB0aW1lb3V0LiBD
aGFuZ2UgdGhpcyBieQorICAgICAgICBhIHZlcnkgc21hbGwgdGltZW91dCBhbmQgYSB2ZXJpZmlj
YXRpb24gd2l0aCBzaWduYWwgc3B5LgorCisgICAgICAgIEluIHByYWN0aWNlLCBzZXRIdG1sKCkg
d2lsbCBlaXRoZXIgZGlyZWN0bHkgY2FsbCBsb2FkRmluaXNoZWQoKSBvciBxdWV1ZSBpdCB0bwor
ICAgICAgICB0aGUgbmV4dCBldmVudCBsb29wIHJ1biwgYW5kIHRlc3Qgd2lsbCB3b3JrIGZvciBi
b3RoIHNpdHVhdGlvbnMuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgICh0c3RfUVdlYkZyYW1lOjpzY3JvbGxiYXJzT2ZmKToKKworMjAxMS0w
NS0zMCAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1Rl
eG1hcF1bUXRdIERpc2FibGUgYWNjZWxlcmF0ZWQgcGx1Z2lucy9tZWRpYSBpbiB1bnRpbCB0aGV5
J3JlIHdvcmtpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MTY4NworCisgICAgICAgIFR1cm4gb2ZmIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZv
ciBtZWRpYSBhbmQgcGx1Z2lucyB3aGVuIGluIHRleHR1cmUtbWFwcGVyLgorCisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBs
eSk6CisKKzIwMTEtMDUtMjggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEF1ZGl0IGFs
bCB1c2VzIG9mIEtVUkw6OnByZXR0eVVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjEyMDEKKworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBwcmV0
dHlVUkwgdG8ganVzdCBjYWxsIHN0cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojptb3Vz
ZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDExLTA1LTI3ICBBbGV4aXMgTWVuYXJkICA8YWxleGlz
Lm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRy
b2dvbsOhYy4KKworICAgICAgICBbUXRdIEZpeCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFs
ZXR0ZShpbmFjdGl2ZUJHKSBhdXRvdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjEwNDQKKworICAgICAgICBNYWtlIHN1cmUgdG8gc2V0IHRoZSBh
Y3RpdmUgd2luZG93IG9uIHRoZSBhcHBsaWNhdGlvbiB0b28uCisKKyAgICAgICAgKiB0ZXN0cy9x
Z3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9R
R3JhcGhpY3NXZWJWaWV3OjpzZXRQYWxldHRlKToKKworMjAxMS0wNS0yNiAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBVbnJldmlld2VkIGJ1
aWxkIGZpeCBmb3IgUXQgYW5kIFF1aWNrVGltZSBiYWNrZW5kLgorCisgICAgICAgIHI4NzMyOCBh
ZGRlZCBhIG5ldyBzeXN0ZW0gaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGFkZCBpdCB0b28uCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW06CisgICAgICAgIChJ
bml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSk6CisKKzIwMTEtMDUtMjUgIENhaW8gTWFyY2VsbyBk
ZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gSlNDIGJyaWRnZTog
aW1wbGVtZW50IF9fcXRfc2VuZGVyX18gd2l0aG91dCB1c2luZyBTY29wZSBDaGFpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNDMKKworICAgICAg
ICBDcmVhdGUgYSAnX19xdF9zZW5kZXJfXycgcHJvcGVydHkgaW4gdGhlIGdsb2JhbCBvYmplY3Qs
IHRoYXQgcmV0dXJucyB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBxdFNlbmRlclN0YWNrLiBUaGlz
IGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZmVhdHVyZSBvZgorICAg
ICAgICBwcm92aWRpbmcgYSB3YXkgZm9yIGEgZnVuY3Rpb24gKGFjdGluZyBhcyBhIFF0ICdzbG90
JykgZGlzY292ZXIgd2hpY2ggb2JqZWN0CisgICAgICAgIGVtaXR0ZWQgdGhlIHNpZ25hbCB0aGF0
IGNhdXNlZCBpdCB0byBiZSBleGVjdXRlZC4KKworICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIGNv
dXBsaW5nIG9mIHRoZSBRdCBicmlkZ2UgYW5kIEpTQyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4g
VGhlCisgICAgICAgIHBhdGNoIHRyaWVzIHRvIHVzZSBhcyBtdWNoIEpTQyBwdWJsaWMgQVBJIGFz
IHBvc3NpYmxlLgorCisgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgY292ZXJlZCBieSB0aGUgdHN0
X1FXZWJGcmFtZTo6Y29ubmVjdEFuZERpc2Nvbm5lY3QoKSBhdXRvIHRlc3QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKToKKyAgICAgICAgSW5zdGVhZCBvZiBlbWl0dGluZyB0aGUgUVdlYlBhZ2U6OmphdmFTY3Jp
cHRXaW5kb3dPYmplY3RDbGVhcmVkKCkgZGlyZWN0bHksIGNhbGxzCisgICAgICAgIGEgUVdlYlBh
Z2VQcml2YXRlIGZ1bmN0aW9uIHRvIGRvIGl0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9w
Lmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2
YXRlOjpkaWRDbGVhcmVkV2luZG93T2JqZWN0KToKKyAgICAgICAgQmVmb3JlIGVtaXR0aW5nIHRo
ZSBzaWduYWwgbWVudGlvbmVkLCBhZGRzIHRoZSAnX19xdF9zZW5kZXJfXycgdG8gdGhlIGZyZXNo
CisgICAgICAgIGdsb2JhbCBvYmplY3QuCisKKyAgICAgICAgKHF0U2VuZGVyQ2FsbGJhY2spOgor
ICAgICAgICBSZXR1cm5zIHRoZSBKU09iamVjdFJlZiBjb3JyZXNwb25kaW5nIHRvIHRoZSB0b3Ag
b2YgcXRTZW5kZXJTdGFjay4KKworICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6YWRkUXRTZW5k
ZXJUb0dsb2JhbE9iamVjdCk6CisgICAgICAgIENyZWF0ZSBhIHByb3BlcnR5IHdpdGggYSBxdFNl
bmRlckNhbGxiYWNrIGFzIGdldHRlciBmdW5jdGlvbiBpbiB0aGUgZ2xvYmFsIG9iamVjdC4KKwor
MjAxMS0wNS0yNSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgW1F0XSBFbmFi
bGUgdXNhZ2Ugb2YgUXVpY2tUaW1lIG1lZGlhcGxheWVyIGZvciB0aGUgUXQgcG9ydCBvbiBNYWMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTI3OQor
CisgICAgICAgIEVuYWJsZSB0aGUgdXNhZ2Ugb2YgUXVpY2tUaW1lIGJhY2tlbmQgZm9yIHRoZSBR
dCBwb3J0LiBJdCBjYW4gYmUgZW5hYmxlZCBieQorICAgICAgICBwYXNzaW5nIERFRklORVMrPVVT
RV9RVEtJVD0xIHdoZW4gY2FsbGluZyBidWlsZC13ZWJraXQuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgor
ICAgICAgICAqIFF0V2ViS2l0LnBybzoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2Ny
ZWVuVmlkZW9RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50
ZXJGdWxsU2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9R
dDo6cmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpGdWxsU2NyZWVuVmlkZW9RdDo6aXNWYWxpZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViU3lzdGVtSW50ZXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbTogQWRkZWQuCisgICAgICAgIChJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSk6CisKKzIwMTEtMDUtMjUgIFFpIFpoYW5nICA8cWkuMi56aGFuZ0Bub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIGZh
c3QvY3NzL2Rpc2FibGVkLWF1dGhvci1zdHlsZXMuaHRtbCBmYWlsZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNDM4CisKKyAgICAgICAgUHJvdmlk
ZWQgQVBJIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIGZvciBEdW1wUmVuZGVyVHJlZS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVz
RW5hYmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaDoKKworMjAxMS0wNS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEFkZCBGSVhNRSBjb21t
ZW50cyBhYm91dCByZW1vdmluZyBGcmFtZUxvYWRlcjo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzk1CisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyk6CisKKzIwMTEtMDUtMjMgIEx1aXog
QWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFdoZW4gb3BlbmluZyBhIGNvbWJv
LWJveCB0aGUgcG9wdXAgcmVuZGVycyBiYWRseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMjg4CisKKyAgICAgICAgUmVtb3ZpbmcgY29tYm9ib3gg
cGFsZXR0ZSBjaGFuZ2VzIGZyb20gUXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KCkgYmVjYXVzZSB0
aGV5CisgICAgICAgIGFyZSBjYXVzaW5nIHJlbmRlcmluZyBwcm9ibGVtcyBmb3Igc29tZSBzdHls
ZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgaW4gcGFsZXR0ZSBhcmUgbm90IG5lZWRlZCBiZWNh
dXNlIHRoZSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kCisgICAgICAgIGNvbG9ycyBhcmUgYWxy
ZWFkeSBzZXQgYnkgUVN0YW5kYXJkSXRlbTo6c2V0QmFja2dyb3VuZCgpIGFuZCBRU3RhbmRhcmRJ
dGVtOjpzZXRGb3JlZ3JvdW5kKCkKKyAgICAgICAgaW4gbWV0aG9kIFF0RmFsbGJhY2tXZWJQb3B1
cDo6cG9wdWxhdGUoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQ
b3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgor
CisyMDExLTA1LTIzICBKb2UgV2lsZCAgPGpvc2VwaC53aWxkQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gVGhlIFF0IFdlYktp
dCBTeW1iaWFuIC5kZWYgZmlsZSBuZWVkcyB0byBiZSB1cGRhdGVkIHNvIFN5bWJpYW4gd2lsbCBi
dWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEy
MDAKKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDExLTA1LTIy
ICBIdWkgSHVhbmcgIDxodWkuMi5odWFuZ0Bub2tpYS5jb20+LCBZaSBTaGVuICA8eWkuNC5zaGVu
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAg
ICAgIFtRdF0gVXBzdHJlYW0gU3ltYmlhbiBwbGF0Zm9ybSBwbHVnaW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NDM1CisKKyAgICAgICAgVXBzdHJl
YW0gU3ltYmlhbiBwbGF0Zm9ybSBwbHVnaW4gd2l0aCBodG1sNSB2aWRlbyBwbGF5ZXIuCisKKyAg
ICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL0hUTUw1VmlkZW9QbHVnaW4uY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEhUTUw1RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6SFRNTDVGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyKToKKyAgICAgICAgKEhUTUw1RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZW50
ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKEhUTUw1RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZXhp
dEZ1bGxTY3JlZW4pOgorICAgICAgICAoSFRNTDVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpvblBs
YXllckVycm9yKToKKyAgICAgICAgKEhUTUw1RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6b25QbGF5
ZXJTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoSFRNTDVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpv
bk1lZGlhU3RhdHVzQ2hhbmdlZCk6CisgICAgICAgIChIVE1MNVZpZGVvUGx1Z2luOjpzdXBwb3J0
c0V4dGVuc2lvbik6CisgICAgICAgIChIVE1MNVZpZGVvUGx1Z2luOjpjcmVhdGVFeHRlbnNpb24p
OgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vSFRNTDVWaWRlb1BsdWdpbi5oOiBB
ZGRlZC4KKyAgICAgICAgKEhUTUw1RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6cmVxdWlyZXNGdWxs
U2NyZWVuRm9yVmlkZW9QbGF5YmFjayk6CisgICAgICAgIChIVE1MNUZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6OmlzRnVsbFNjcmVlbik6CisgICAgICAgIChIVE1MNUZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXI6OnVwZGF0ZVNjcmVlblJlY3QpOgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4v
SFRNTDVWaWRlb1dpZGdldC5jcHA6IEFkZGVkLgorICAgICAgICAoSFRNTDVWaWRlb1dpZGdldDo6
SFRNTDVWaWRlb1dpZGdldCk6CisgICAgICAgIChIVE1MNVZpZGVvV2lkZ2V0OjpzZXREdXJhdGlv
bik6CisgICAgICAgIChIVE1MNVZpZGVvV2lkZ2V0Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAg
ICAoSFRNTDVWaWRlb1dpZGdldDo6b25QbGF5ZXJTdG9wcGVkKToKKyAgICAgICAgKEhUTUw1Vmlk
ZW9XaWRnZXQ6Om9uUGxheWVyRXJyb3IpOgorICAgICAgICAoSFRNTDVWaWRlb1dpZGdldDo6b25F
bmRPZk1lZGlhKToKKyAgICAgICAgKEhUTUw1VmlkZW9XaWRnZXQ6Om9uQnVmZmVyaW5nTWVkaWEp
OgorICAgICAgICAoSFRNTDVWaWRlb1dpZGdldDo6b25CdWZmZXJlZE1lZGlhKToKKyAgICAgICAg
KEhUTUw1VmlkZW9XaWRnZXQ6Om9uQ29udHJvbENsaWNrZWQpOgorICAgICAgICAoSFRNTDVWaWRl
b1dpZGdldDo6b25Qb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoSFRNTDVWaWRlb1dpZGdldDo6
b25TbGlkZXJNb3ZlZCk6CisgICAgICAgIChIVE1MNVZpZGVvV2lkZ2V0OjpvbkNsb3NlQ2xpY2tl
ZCk6CisgICAgICAgIChIVE1MNVZpZGVvV2lkZ2V0OjpzaG93RnVsbFNjcmVlbik6CisgICAgICAg
IChIVE1MNVZpZGVvV2lkZ2V0OjpzZXRWb2x1bWUpOgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZv
cm1wbHVnaW4vSFRNTDVWaWRlb1dpZGdldC5oOiBBZGRlZC4KKyAgICAgICAgKiBzeW1iaWFuL3Bs
YXRmb3JtcGx1Z2luL092ZXJsYXlXaWRnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKE92ZXJsYXlX
aWRnZXQ6Ok92ZXJsYXlXaWRnZXQpOgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6fk92ZXJsYXlX
aWRnZXQpOgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6c2V0RHVyYXRpb24pOgorICAgICAgICAo
T3ZlcmxheVdpZGdldDo6c2V0UG9zaXRpb24pOgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6c2V0
Vm9sdW1lKToKKyAgICAgICAgKE92ZXJsYXlXaWRnZXQ6Om1vdXNlUHJlc3NFdmVudCk6CisgICAg
ICAgIChPdmVybGF5V2lkZ2V0OjpvblBsYXllclN0b3BwZWQpOgorICAgICAgICAoT3ZlcmxheVdp
ZGdldDo6b25QbGF5ZXJFcnJvcik6CisgICAgICAgIChPdmVybGF5V2lkZ2V0OjpvbkVuZE9mTWVk
aWEpOgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6b25CdWZmZXJpbmdNZWRpYSk6CisgICAgICAg
IChPdmVybGF5V2lkZ2V0OjpvbkJ1ZmZlcmVkTWVkaWEpOgorICAgICAgICAoT3ZlcmxheVdpZGdl
dDo6dGltZVRvU3RyaW5nKToKKyAgICAgICAgKE92ZXJsYXlXaWRnZXQ6OmFwcGx5U3R5bGVTaGVl
dCk6CisgICAgICAgIChPdmVybGF5V2lkZ2V0OjpvbkNvbnRyb2xDbGlja2VkKToKKyAgICAgICAg
KE92ZXJsYXlXaWRnZXQ6Om9uU2xpZGVyTW92ZWQpOgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6
b25Tb3VuZENsaWNrZWQpOgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6b25DbG9zZUNsaWNrZWQp
OgorICAgICAgICAoT3ZlcmxheVdpZGdldDo6b25Wb2x1bWVTbGlkZXJSZWxlYXNlZCk6CisgICAg
ICAgIChPdmVybGF5V2lkZ2V0OjpvblZvbHVtZVNsaWRlck1vdmVkKToKKyAgICAgICAgKE92ZXJs
YXlXaWRnZXQ6Om9uVGltZXJUaW1lb3V0KToKKyAgICAgICAgKE92ZXJsYXlXaWRnZXQ6OnNob3dG
dWxsU2NyZWVuKToKKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL092ZXJsYXlXaWRn
ZXQuaDogQWRkZWQuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9QbGF5ZXJCdXR0
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXllckJ1dHRvbjo6UGxheWVyQnV0dG9uKToKKyAg
ICAgICAgKFBsYXllckJ1dHRvbjo6ZXZlbnQpOgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1w
bHVnaW4vUGxheWVyQnV0dG9uLmg6IEFkZGVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1w
bHVnaW4vUGxheWVyTGFiZWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFBsYXllckxhYmVsOjpQbGF5
ZXJMYWJlbCk6CisgICAgICAgIChQbGF5ZXJMYWJlbDo6b25QbGF5ZXJFcnJvcik6CisgICAgICAg
IChQbGF5ZXJMYWJlbDo6c3RhcnRCdWZmZXJpbmdBbmltYXRpb24pOgorICAgICAgICAoUGxheWVy
TGFiZWw6OnN0b3BCdWZmZXJpbmdBbmltYXRpb24pOgorICAgICAgICAoUGxheWVyTGFiZWw6Om9u
QW5pbWF0aW9uVGltZW91dCk6CisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9QbGF5
ZXJMYWJlbC5oOiBBZGRlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL1dlYlBs
dWdpbi5jcHA6CisgICAgICAgIChXZWJQbHVnaW46OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAg
ICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXM6IEFkZGVkLgorICAgICAgICAqIHN5bWJp
YW4vcGxhdGZvcm1wbHVnaW4vaW1hZ2VzL2J1dHRvbl9jYW5ub3RwbGF5LnBuZzogQWRkZWQuCisg
ICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXMvYnV0dG9uX2Nsb3NlLnBuZzog
QWRkZWQuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXMvYnV0dG9uX3Bh
dXNlLnBuZzogQWRkZWQuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXMv
YnV0dG9uX3BsYXkucG5nOiBBZGRlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2lu
L2ltYWdlcy9idXR0b25fc291bmRfb2ZmLnBuZzogQWRkZWQuCisgICAgICAgICogc3ltYmlhbi9w
bGF0Zm9ybXBsdWdpbi9pbWFnZXMvYnV0dG9uX3NvdW5kX29uLnBuZzogQWRkZWQuCisgICAgICAg
ICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXMvbG9hZGluZ19idWZmZXJpbmdfMS5wbmc6
IEFkZGVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vaW1hZ2VzL2xvYWRpbmdf
YnVmZmVyaW5nXzIucG5nOiBBZGRlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2lu
L2ltYWdlcy9sb2FkaW5nX2J1ZmZlcmluZ18zLnBuZzogQWRkZWQuCisgICAgICAgICogc3ltYmlh
bi9wbGF0Zm9ybXBsdWdpbi9pbWFnZXMvbG9hZGluZ19idWZmZXJpbmdfNC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOgorICAg
ICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucXJjOiBBZGRlZC4K
KyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2luL3FzczogQWRkZWQuCisgICAgICAgICog
c3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9xc3MvT3ZlcmxheVdpZGdldC5xc3M6IEFkZGVkLgorCisy
MDExLTA1LTIyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBGaXggcG9s
aWN5RGVsZWdhdGUgaW4gUXQgRFJUCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxMjQ3CisgICAgICAgIAorICAgICAgICBVc2UgdGhlICdwb2xpY3kg
ZGVsZWdhdGUnIGltcGxlbWVudGVkIGluIEZyYW1lTG9hZGVyQ2xpZW50CisgICAgICAgIGZvciBs
YXlvdXQgdGVzdHMuIFRoZSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIGluIER1bXBSZW5kZXJUcmVl
UXQKKyAgICAgICAgaXMgcmVkdW5kYW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCisyMDExLTA1
LTIyICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQg
dG9JbWFnZURhdGEoKSBpbiBRdFdlYktpdCBCcmlkZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwODk3CisKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0
LWJyaWRnZS5xZG9jOgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJp
ZGdlX3NuaXBwZXRzLmNwcDoKKyAgICAgICAgKHdyYXBJbkZ1bmN0aW9uKToKKyAgICAgICAgIERv
Y3VtZW50IFF0IGJyaWRnZSB0b0ltYWdlRGF0YSgpIGZlYXR1cmUuCisgICAgICAgICogdGVzdHMv
aHlicmlkUGl4bWFwL3Rlc3QuaHRtbDoKKyAgICAgICAgKiB0ZXN0cy9oeWJyaWRQaXhtYXAvd2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdpZGdldDo6V2lkZ2V0KToKKyAgICAgICAgKFdpZGdldDo6YWJj
SW1hZ2UpOgorICAgICAgICAqIHRlc3RzL2h5YnJpZFBpeG1hcC93aWRnZXQuaDoKKyAgICAgICAg
IEFkZCB0ZXN0cyBmb3IgUXQgYnJpZGdlIHRvSW1hZ2VEYXRhKCkgZmVhdHVyZS4KKworMjAxMS0w
NS0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIG51bWJlck9mQWN0aXZlQW5pbWF0aW9u
cygpIGNhbiBpbmNsdWRlIGFuaW1hdGlvbnMgZnJvbSBkb2N1bWVudHMgaW4gdGhlIHBhZ2UgY2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjQx
CisKKyAgICAgICAgUGFzcyB0aGUgRnJhbWUncyBkb2N1bWVudCBhcyB0aGUgb25lIHRvIGNvdW50
IGFuaW1hdGlvbnMgb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVy
T2ZBY3RpdmVBbmltYXRpb25zKToKKworMjAxMS0wNS0yMCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4u
CisKKyAgICAgICAgW1F0XSB0c3RfUVdlYkVsZW1lbnQ6OnN0eWxlKCkgZmFpbHMgYmVjYXVzZSBR
V2ViRWxlbWVudDo6SW5saW5lU3R5bGUgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDM3MgorCisgICAgICAg
ICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDogTWFyayBmYWlsaW5nIHRl
c3QgY2FzZSBhcyBleHBlY3RlZCBmYWlsLgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpzdHls
ZSk6CisKKzIwMTEtMDUtMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFtRdF0g
Rml4IHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpiYXNpY1Byb3BlcnRpZXMoKSBhbmQgaGlzdG9y
eU5hdigpIGF1dG90ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjEwNDIKKworICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvdHN0
X3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOiBNYXJrIGZhaWxpbmcgdGVzdCBjYXNlcyBhcyBleHBl
Y3RlZCBmYWlscy4KKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpiYXNpY1Byb3Bl
cnRpZXMpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6Omhpc3RvcnlOYXYpOgor
CisyMDExLTA1LTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBbUXRdIEZpeCB0
c3RfUVdlYlBhZ2U6OnRlc3RPcHRpb25hbEpTT2JqZWN0cygpIGF1dG90ZXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTA0NQorCisgICAgICAgICog
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6
dGVzdE9wdGlvbmFsSlNPYmplY3RzKTogTWFyayBmYWlsaW5nIHRlc3QgY2FzZXMgYXMgZXhwZWN0
ZWQgZmFpbHMuCisKKzIwMTEtMDUtMjAgIFBldGVyIFZhcmdhICA8cHZhcmdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XVtW
OF0gVXNlIHF0c2NyaXB0LXN0YWdpbmcncyBzaGlwcGVkIHZlcnNpb24gb2YgVjggd2hlbiBidWls
ZGluZyB3aXRoIC0tdjgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2NjQ5CisKKyAgICAgICAgVXNlIHRoZSBwcm92aWRlZCBWOCBhbmQgZnVuY3Rpb25h
bGl0eSBvZgorICAgICAgICBodHRwOi8vcXQuZ2l0b3Jpb3VzLm9yZy8rcXQtZGV2ZWxvcGVycy9x
dC9xdHNjcmlwdC1zdGFnaW5nIHRvIGJ1aWxkIFF0V2ViS2l0K1Y4LgorICAgICAgICBCYXNlZCBv
biB0aGUgb3JpZ2luYWwgcGF0Y2ggb2YgQW5kcmFzIEJlY3NpIDxhYmVjc2lAd2Via2l0Lm9yZz4u
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRk
VG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KTogRml4IFFTdHJpbmcgZGVwcmVjYXRlZAorICAgICAg
ICB3YXJuaW5nLgorICAgICAgICAqIFF0V2ViS2l0LnBybzogQWRkaW5nIHRoZSBWOCBsaWJyYXJ5
IHNob3VsZCBoYXBwZW4gaW4gdGhlIGZpbmFsIGJ1aWxkCisgICAgICAgIHN0ZXAuCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOiBBZGQgbWlzc2luZyBoZWFkLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDogRGl0
dG8uCisKKzIwMTEtMDUtMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFtRdF1G
aXggdHN0X1FXZWJGcmFtZTo6c2V0VXJsVG9JbnZhbGlkKCkgYXV0b3Rlc3QgYWZ0ZXIgcjg0NzYy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTM0NQor
CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAo
dHN0X1FXZWJGcmFtZTo6c2V0VXJsVG9JbnZhbGlkKTogTWFyayBmYWlsaW5nIHRlc3QgY2FzZXMg
YXMgZXhwZWN0ZWQgZmFpbHMuCisKKzIwMTEtMDUtMTkgIFpzb2x0IEZlaMOpciAgPGg0OTAyNjdA
c3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27D
oWMuCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDE1CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2NhbGVQYWdlQnkpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEtMDUtMTggIFlp
IFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBFbnRlcmtleSB0byBnbyB0byBOZXdsaW5lIGRvZXMg
bm90IHdvcmsgaW4gdGhlIHRleHQgYXJlYShpbiBIVE1MIGZvcm0pCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE3OQorCisgICAgICAgIFJlbW92ZSB0
aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhhbmRsZUlucHV0TWV0aG9kS2V5ZG93biwgd2hpY2gg
aW50cm9kdWNlcworICAgICAgICBhIHJlZ3Jlc3Npb24ocjgyMjQzKSBvbiBMaW51eC4gQWxzbywg
YWRkIG1vcmUgQXBpIHRlc3RzIGZvciB0aGUgRW50ZXJLZXkgZXZlbnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRRdDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKTogUmVtb3ZlIGltcGxlbWVudGF0
aW9uLgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAg
ICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6IEFkZCBtb3JlIHRlc3RzLgorCisyMDExLTA1
LTE4ICBLcmlzdMOzZiBLb3N6dHnDsyAgPEtvc3p0eW8uS3Jpc3RvZkBzdHVkLnUtc3plZ2VkLmh1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICBb
UXRdIEltcGxlbWVudCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRWYWx1ZUZvclVzZXIoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA5NTYKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEtMDUtMTYg
IFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIHBsdWdpbnMvaW52YWxpZGF0
ZV9yZWN0Lmh0bWwgZmFpbHMgb24gbGludXggcG9ydHMKKworICAgICAgICBBZGQgQ2hyb21lQ2xp
ZW50UXQ6OmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQwNTEKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDExLTA1LTE3ICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFNpbXBsaWZ5IHN5bnRh
eCBpbiB0ZXN0IGNvZGUgdG8gbWFrZSBwcmVwYXJlLUNoYW5nZUxvZyBsZXNzIGNvbmZ1c2VkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDk3OAorCisg
ICAgICAgIEJhY2tzbGFzaCB0byBlc2NhcGUgbmV3bGluZXMgd2FzIGNvbmZ1c2luZyBib3RoIHBy
ZXBhcmUtQ2hhbmdlTG9nIGFuZCB0aGUKKyAgICAgICAgUXRDcmVhdG9yIGhpZ2hsaWdodCBzeXN0
ZW0uCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAg
ICAgICh0c3RfUVdlYkZyYW1lOjpldmFsSlNWKToKKyAgICAgICAgUmVtb3ZlIHVzYWdlIG9mIGJh
Y2tzbGFzaCB0byBlc2NhcGUgbmV3bGluZXMgaW4gc3RyaW5nIGxpdGVyYWwuCisKKzIwMTEtMDUt
MTcgIFlvdW5nIEhhbiBMZWUgIDxqb3licm9AY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorCisgICAgICAgIFtUZXhtYXBdW1F0XSBFbmFi
bGUgc3RyaWN0IFBhc3NPd25QdHIgZm9yIFF0IHdpdGggdGV4bWFwIGVuYWJsZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDk0NworCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRV2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXllcik6CisKKzIwMTEtMDUtMTYgIEpv
biBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBDYW4ndCBob3Jpem9udGFsbHkgc2Nyb2xsIGlmcmFtZXMgYW5kIG92
ZXJmbG93IGJlY2F1c2Ugd2hlZWwgZXZlbnRzIGFyZSBhbHdheXMgYWNjZXB0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzc5CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbik6IERlZmF1bHQgaW1wbCBv
ZiBuZXcgQ2hyb21lQ2xpZW50IG1ldGhvZAorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6Om51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQpOiBEZWZhdWx0IGltcGwgb2YgbmV3IENo
cm9tZUNsaWVudCBtZXRob2QKKworMjAxMS0wNS0xNiAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgUkVHUkVTU0lPTihyODM4MjApOiBbUXRdIEFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIG5vIGxvbmdlciB3b3JrcyBpbiBRR3JhcGhpY3NXZWJWaWV3LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA4OTIKKworICAgICAgICBEb24n
dCBzZXQgdGhlIEl0ZW1DbGlwc0NoaWxkcmVuVG9TaGFwZSBmbGFnIGZvciB0aGUgcm9vdCBwbGF0
Zm9ybSBsYXllciwKKyAgICAgICAgc2luY2UgdGhhdCBpcyBub3cgdGhlIG92ZXJmbG93IGNvbnRy
b2xzIGxheWVyLiBUaGUgY2xpcCBsYXllciwgd2hpY2ggd2FzCisgICAgICAgIHByZXZpb3VzbHkg
dGhlIHJvb3QgcGxhdGZvcm0gbGF5ZXIsIGFscmVhZHkgZ2V0cyB0aGUgZmxhZyBieSB3YXkgb2YK
KyAgICAgICAgdGhlIEdyYXBoaWNzTGF5ZXIgbWFzay10by1ib3VuZHMgZmxhZy4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXllcik6CisKKzIwMTEt
MDUtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBQYXJ0aWFs
IHJldmVydCBvZiByODY1MzcuICBGdWxsU2NyZWVuVmlkZW9RdC5oIGNhbid0IGRlcGVuZCBvbiBP
d25QdHIuaAorICAgICAgICBiZWNhdXNlIG1vY19GdWxsU2NyZWVuVmlkZW9RdC5jcHAgZmFpbHMg
dG8gaW5jbHVkZSBjb25maWcuaC4KKyAgICAgICAgQXBwYXJlbnRseSwgaGF2aW5nIG1vY19GdWxs
U2NyZWVuVmlkZW9RdC5jcHAgcHJvcGVybHkgaW5jbHVkZSBjb25maWcuaAorICAgICAgICBpcyBo
YXJkLCBzbyB3ZSdyZSBnb2luZyBiYWNrIHRvIG1hbnVhbCBuZXcgYW5kIGRlbGV0ZSBmb3IgdGhp
cyBjbGFzcy4KKyAgICAgICAgQmFkIHRpbWVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnVsbFNjcmVlblZpZGVvUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVv
UXQ6OkZ1bGxTY3JlZW5WaWRlb1F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRl
b1F0Ojp+RnVsbFNjcmVlblZpZGVvUXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1F0Lmg6CisKKzIwMTEtMDUtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBTaWdoLiAgVGhpcyBjb2RlIGlzIHNvbWV3aGF0IGNyYXp5LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisKKzIw
MTEtMDUtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBBdHRl
bXB0IHRvIGZpeCBRdCBidWlsZC4gIChTdHJpY3QgUGFzc093blB0ciBmaXguKQorCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVxdWlyZXMgc29tZSBzbGlnaHRseSBmYW5jeSBmb290d29yay4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRRdCk6CisKKzIwMTEtMDUtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBNaXNzaW5nIGluY2x1ZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
b3B1cE1lbnVRdC5oOgorCisyMDExLTA1LTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1F0XSBRdFBsYXRmb3JtUGx1Z2luIGNyZWF0ZSBtZXRob2RzIHNob3Vs
ZCB1c2UgUGFzc093blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjA4NzMKKworICAgICAgICBUaGlzIGNoYW5nZSBpcyBzbGlnaHRseSBtb3JlIHRo
YW4gYSBidWlsZCBmaXggYmVjYXVzZSB0aGUgcGF0Y2gga2luZCBvZgorICAgICAgICBzcGlkZXJl
ZCBhIGJpdCB3aGlsZSBJIHdhcyB0cnlpbmcgdG8gZml4IHRoZSBidWlsZCB0aGUgInJpZ2h0IHdh
eS4iCisgICAgICAgIEhvcGVmdWxseSBub3RoaW5nIGhlcmUgaXMgY29udHJvdmVyc2lhbC4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmFk
anVzdFBvaW50Rm9yQ2xpY2tpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxl
Y3RQb3B1cCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OkZ1bGxTY3JlZW5WaWRlb1F0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojp+RnVsbFNjcmVlblZpZGVv
UXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6Tm90aWZpY2F0aW9uV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlz
cGxheU5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51UXQ6OlBvcHVwTWVudVF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0Ojp+UG9wdXBNZW51UXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51UXQ6OnNob3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVu
dVF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpjcmVhdGVTZWxlY3RJbnB1dE1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpjcmVhdGVOb3RpZmljYXRp
b25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRl
SGFwdGljRmVlZGJhY2tQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdp
bjo6Y3JlYXRlVG91Y2hNb2RpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1
Z2luOjpjcmVhdGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RdFBsYXRmb3JtUGx1Z2luLmg6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1
Z2luOjpRdFBsYXRmb3JtUGx1Z2luKToKKworMjAxMS0wNS0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgorCisgICAgICAgIEF0dGVtcHQgdG8gZml4IHRoZSBRdCBidWlsZC4gIChT
dHJpY3QgUGFzc093blB0ciBmaXguKQorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcu
Y3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OmRldGFjaEN1cnJlbnRQYWdl
KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0Vmlldyk6CisKKzIwMTEtMDUtMTUg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NjUwNC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvODY1MDQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYwODUzCisKKyAgICAgICAgIkJyb2tlIFF0IEV2ZW50U2VuZGVyIGluIGVk
aXRpbmcvc2VsZWN0aW9uIHRlc3RzIiAoUmVxdWVzdGVkCisgICAgICAgIGJ5IG13ZW5nZSBvbiAj
d2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5oOgorCisyMDExLTA1LTEyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFtRdF0gZml4
IGh0dHAvdGVzdHMvcGx1Z2lucy9wbHVnaW4tZG9jdW1lbnQtaGFzLWZvY3VzLmh0bWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzIyCisKKyAgICAg
ICAgUVdlYlBhZ2U6OnNldFZpZXcoKSB3aWxsIGRpc3BsYXkgdGhlIGJyb3dzZXIgd2luZG93LCBz
bworICAgICAgICBpbXBsZW1lbnQgYSBwcml2YXRlIHZlcnNpb24gdGhhdCBkb2VzIGp1c3QgZW5v
dWdoIHRvIAorICAgICAgICBzYXRpc2Z5IEV2ZW50U2VuZGVyJ3MgcmVxdWlyZW1lbnQgdG8gaW5z
dGFsbCBhbiBldmVudAorICAgICAgICBmaWx0ZXIgb24gYSBwYWdlJ3Mgd2ViIHZpZXcuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Vmlldyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMS0wNS0xMyAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjg2NDQ3LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC84NjQ0NworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjA4MDkKKworICAgICAgICAiQnJva2Ugc29tZSB1c2VzIG9mIEV2ZW50U2VuZGVyIG9i
amVjdCBvbiBRdCIgKFJlcXVlc3RlZCBieQorICAgICAgICBtd2VuZ2Ugb24gI3dlYmtpdCkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAx
MS0wNS0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBQcnVuZSAjaW5jbHVkZXMgZnJvbSBGcmFt
ZVZpZXcuaCAoUGFydCAyKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjA3NDgKKworICAgICAgICAtIFVwZGF0ZSBmaWxlcyB0aGF0IHdlcmUgZGVwZW5k
aW5nIG9uIEZyYW1lVmlldy5oICNpbmNsdWRpbmcgRnJhbWUuaCBvcgorICAgICAgICAgIFBhZ2Uu
aC4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisKKzIwMTEtMDUtMTMgIFJvYmVydCBIb2dh
biAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBv
dWxhaW4uCisKKyAgICAgICAgW1F0XSBmaXggaHR0cC90ZXN0cy9wbHVnaW5zL3BsdWdpbi1kb2N1
bWVudC1oYXMtZm9jdXMuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjA3MjIKKworICAgICAgICBRV2ViUGFnZTo6c2V0VmlldygpIHdpbGwgZGlz
cGxheSB0aGUgYnJvd3NlciB3aW5kb3csIHNvCisgICAgICAgIGltcGxlbWVudCBhIHByaXZhdGUg
dmVyc2lvbiB0aGF0IGRvZXMganVzdCBlbm91Z2ggdG8gCisgICAgICAgIHNhdGlzZnkgRXZlbnRT
ZW5kZXIncyByZXF1aXJlbWVudCB0byBpbnN0YWxsIGFuIGV2ZW50CisgICAgICAgIGZpbHRlciBv
biBhIHBhZ2UncyB3ZWIgdmlldy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXRWaWV3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5oOgorCisyMDExLTA1LTExICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgbm9ib2R5LCBidWlsZCBmaXguCisKKyAg
ICAgICAgW1F0XSBGaXggYnVpbGQgb24gTVNWQy4KKworICAgICAgICBxb2JqZWN0X2Nhc3Q8PiBy
ZXF1aXJlcyB0aGUgY2xhc3MgdG8gYmUgZXhwb3J0ZWQgb24gTVNWQywKKyAgICAgICAgcmVtb3Zp
bmcgaXQgc2luY2UgdGhlIGNvZGUgdGhhdCBuZWVkcyBpdCBpcyBjb21tZW50ZWQgb3V0IGZvcgor
ICAgICAgICB0aGUgc2FtZSByZWFzb24uCisKKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3
ZWJ2aWV3L3RzdF9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RRGVjbGFy
YXRpdmVXZWJWaWV3OjplbGVtZW50QXJlYUF0KToKKworMjAxMS0wNS0xMSAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IG5vYm9keSwgYnVpbGQgZml4LgorCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIG9uIE1TVkMgYnkg
b25seSBlbmFibGluZyB0c3RfTUlNRVNuaWZmaW5nIG9uIGxpbnV4LgorCisgICAgICAgICogdGVz
dHMvdGVzdHMucHJvOgorCisyMDExLTA1LTEyICBZb3VuZyBIYW4gTGVlICA8am95YnJvQGNvbXBh
bnkxMDAubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IGxheW91dFRlc3RDb250cm9sbGVyLmxheWVy
VHJlZUFzVGV4dCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MDM2NworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmxheWVyVHJlZUFz
VGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
aDoKKworMjAxMS0wNS0xMSAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgW1RleG1hcF1bUXRdIFVwc3RyZWFtIHRleHR1cmUtbWFwcGVyIGNoYW5nZXMgZnJv
bSBRdCdzIFdlYktpdDIgYnJhbmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MDQzOQorCisgICAgICAgIFBhdGNoIDEwLzEyOiBHbHVlIHRoZSBUZXh0
dXJlTWFwcGVyIHJlZmFjdG9yaW5nIGludG8gV2Via2l0KDEpLgorICAgICAgICAxLiBQYXNzIGEg
R3JhcGhpY3NMYXllciogaW5zdGVhZCBvZiBhIFBsYXRmb3JtTGF5ZXIqIHRvIHRoZSBRV2ViUGFn
ZUNsaWVudC4KKyAgICAgICAgMi4gU2V0IHBhcmFtZXRlcnMgaW4gVGV4dHVyZU1hcHBlci9UZXh0
dXJlTWFwcGVyTm9kZSBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlbSBpbiBhbiBvcHRpb25zIGFyZ3Vt
ZW50LgorICAgICAgICAzLiBSZW5hbWUgUGxhdGZvcm1MYXllclByb3h5UXQgdG8gVGV4dHVyZU1h
cHBlck5vZGVDbGllbnQKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAo
UVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyQ29tcG9zaXRlZExheWVycyk6CisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAoUVdl
YkZyYW1lUHJpdmF0ZTo6UVdlYkZyYW1lUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdl
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGVDbGllbnRR
dDo6VGV4dHVyZU1hcHBlck5vZGVDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTm9kZUNsaWVudFF0OjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlck5vZGVDbGllbnRRdDo6c2V0VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTm9kZUNsaWVudFF0Ojp+VGV4dHVyZU1hcHBlck5vZGVDbGllbnRRdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZUNsaWVudFF0Ojpjb21wdXRlTGFzdE1v
ZGlmaWVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZUNsaWVudFF0
OjpzeW5jUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlQ2xp
ZW50UXQ6OnJvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojpz
ZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdl
dDo6c3luY0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6flBh
Z2VDbGllbnRRV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NX
aWRnZXQ6On5QYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzeW5jTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6Om1hcmtGb3JTeW5jKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRV2lkZ2V0OjpQYWdlQ2xpZW50UVdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnN5bmNMYXllcnNUaW1l
b3V0KToKKworCisyMDExLTA1LTExICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbVGV4bWFwXVtRdF0gVXBzdHJlYW0gdGV4dHVyZS1tYXBwZXIgY2hhbmdl
cyBmcm9tIFF0J3MgV2ViS2l0MiBicmFuY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwNDM5CisKKyAgICAgICAgUGF0Y2ggNC8xMjogVXBkYXRlIHRo
ZSBzZXR0aW5ncyB0byBlbmFibGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIGFsbCB0aGUg
cmVsZXZhbnQgc2V0dGluZ3MKKyAgICAgICAgYXR0cmlidXRlcy4KKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAocXRfbmV0d29ya0FjY2Vzc0FsbG93ZWQpOgorICAg
ICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorCisyMDExLTA1LTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CisKKyAgICAgICAgU3RvcCBpbmNsdWRpbmcgQ29uc29sZS5oIGp1c3QgdG8gZ2V0IENvbnNvbGUg
ZW51bSB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjA2MDcKKworICAgICAgICBNb3ZlIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlIGFuZCBN
ZXNzYWdlTGV2ZWwgaW50byBpdHMgb3duCisgICAgICAgIGhlYWRlciBhbmQgY2xlYW51cCBzdXJy
b3VuZGluZyBjbGFzc2VzLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKworMjAx
MS0wNS0xMCAgQWRlbWFyIGRlIFNvdXphIFJlaXMgSnIuICA8YWRlbWFyLnJlaXNAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAg
ICAgW1F0XSBJbmNyZW1lbnQgUXRXZWJLaXQgdHJ1bmsgdmVyc2lvbiB0byA0LjEwLjAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTQ5CisKKyAgICAg
ICAgUXRXZWJLaXQtMi4yIChicmFuY2hlZCkgd2lsbCBiZSA0LjkuMCwgc28gd2UgbmVlZCB0bwor
ICAgICAgICBpbmNyZWFzZSB0aGUgdHJ1bmsgdmVyc2lvbiBieSAxLgorCisgICAgICAgICogcXRf
d2Via2l0X3ZlcnNpb24ucHJpOgorCisyMDExLTA1LTEwICBBZGVtYXIgZGUgU291emEgUmVpcyBK
ci4gIDxhZGVtYXIucmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IENz
YWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICBbUXRdIHRzdF9RV2ViUGFnZSBjcmVhdGVzIHRl
bXBvcmFyeSBmaWxlcyBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTcKKworICAgICAgICB0c3RfUVdl
YlBhZ2Ugd2FzIHVzaW5nIFFEaXI6OmN1cnJlbnRQYXRoIHdoZW4gY3JlYXRpbmcgdGVtcG9yYXJ5
IGRpcnMKKyAgICAgICAgYW5kIGxlYXZpbmcgdGhlbSBhZnRlciB0aGUgdGVzdCB3YXMgcnVuLiBJ
IGJhc2ljYWxseSBib3Jyb3dlZCB0aGUgZml4CisgICAgICAgIGZyb20gdHN0X1FEZWNsYXJhdGl2
ZVdlYlZpZXcuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAocmVtb3ZlUmVjdXJzaXZlKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6dG1wRGly
UGF0aCk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmNsZWFudXBGaWxlcyk6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OmRhdGFiYXNlKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQ
YWdlR3JvdXBzQW5kTG9jYWxTdG9yYWdlKToKKworMjAxMS0wNS0wOSAgQ2hhbmcgU2h1ICA8Y3No
dUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgorCisgICAgICAgIFtRdF0gRHVtcFJlbmRlclRyZWVRdCBuZWVkcyBhbiBpbXBsZW1l
bnRhdGlvbiBvZiB1bm1hcmtUZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MDQ5OQorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1p
bGFyIHRvIGd0ay4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb25maXJtQ29t
cG9zaXRpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0Lmg6CisKKzIwMTEtMDUtMDcgIEpvZSBNYXNvbiAgPGptYXNvbkByaW0uY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBGcmFtZUxvYWRlcjo6aXNQ
cm9jZXNzaW5nVXNlckdlc3R1cmUgaXMgd3JvbmcgaW4gZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MjIxMQorCisgICAgICAgIER1bXAgaXNVc2VyUHJvY2Vzc2luZ0dlc3R1cmUgaW4gd2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdCBzbyB0aGF0IHRoZSBsYXlvdXQgdGVzdHMgY2FuIGJlIGV4dGVu
ZGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QpOgorCisyMDExLTA1LTA2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAg
ICAgRWxpbWluYXRlIFdlYkNvcmUvZG9tL0lucHV0RWxlbWVudC57Y3BwLGh9CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDI2MgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KToK
KyAgICAgICAgICBSZXBsYWNlIElucHV0RWxlbWVudDo6c19tYXhpbXVtTGVuZ3RoIHdpdGggSFRN
TElucHV0RWxlbWVudDo6bWF4aW11bUxlbmd0aC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0QXV0b2ZpbGxlZCk6CisgICAgICAgICAgRm9sbG93IHRoZSByZXR1cm4gdHlwZSBj
aGFuZ2Ugb2YgTm9kZTo6dG9JbnB1dEVsZW1lbnQoKS4KKworMjAxMS0wNS0wNCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGlt
aXRyaSBHbGF6a292LgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaDoKKworMjAxMS0wNS0wNSAgUHJhc2FudGggVWxsYXR0aWwgIDxwcmFzYW50aC51bGxhdHRp
bEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgSW5zdGFsbCBjb3JyZWN0IGhlYWRlciBmaWxlcyBmb3Igd2Via2l0LgorCisgICAgICAg
IFNpbmNlIFdlYktpdCBpcyBubyBsb25nZXIgaW5zaWRlIFF0LCB3ZSBjYW4gcmVtb3ZlIHRoZSBk
ZXRlY3Rpb24gZm9yCisgICAgICAgIHRoYXQuCisKKyAgICAgICAgW1F0XSBJbnN0YWxsIHRhcmdl
dHMgYXJlIG5vdCB3b3JraW5nIGNvcnJlY3RseSBmb3IgbW9kdWxhcml6ZWQgUXQgYW5kIFF0V2Vi
a2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzYy
MQorCisgICAgICAgICogUXRXZWJLaXQucHJvOgorCisyMDExLTA1LTA1ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgor
CisgICAgICAgIFJlbmFtZSBTZWxlY3Rpb25Db250cm9sbGVyIHRvIEZyYW1lU2VsZWN0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDIzNAorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIwMTEtMDUtMDUgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFJlbmRlclRoZW1lUXQgYW5kIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0IHNob3VsZCB1c2UgbnVsbHB0ciByYXRoZXIgdGhhbiAwLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyMjQKKworICAgICAgICBX
ZSBzaG91bGQgdXNlIG51bGxwdHIgcmF0aGVyIHRoYW4gMC4gbnVsbHB0ciB3aWxsIGJlIGFkZGVk
IGluIHRoZSBuZXcgQysrIHN0YW5kYXJkCisgICAgICAgIGJ1dCBXZWJLaXQgYWxyZWFkeSBoYXMg
YSBudWxscHRyIGNsYXNzIGlmIHRoZXJlIGlzIG5vIGMrKzB4IHN1cHBvcnQuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6YWRkVXNlclN0eWxlU2hlZXQpOgorCisyMDExLTA1LTA0
ICBDcmlzIE5lY2thciAgPGNkbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KKworICAgICAgICBFeHBvc2UgV2ViVmlldyBkaXJlY3RseSB0aHJvdWdoIENo
cm9tZUNsaWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5OTAyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OndlYlZpZXcpOgorCisyMDExLTA1LTA0
ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQgd2FybmluZyBmaXguCisKKyAgICAgICAgVGhlIHZhcmlhYmxlIGlzIGp1c3Qg
dW51c2VkLgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKToKKworMjAxMS0wNS0wNCAgVGFvIEJh
aSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEtpbHplci4KKworICAgICAgICBQb3B1bGF0ZSB0b3VjaC1pY29uIHVybCB0byBGcmFtZUxvYWRl
ckNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkxNDMKKworICAgICAgICBSZXNwZWN0IHRoZSBpbnRlcmZhY2UgY2hhbmdlIGluIEZyYW1lTG9h
ZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0Lmg6CisKKzIwMTEtMDMtMzEgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgW1F0XSBRdCBXZWJLaXQgdXBkYXRlcyB2aWV3IG9uIEhUVFAgMjA0IHJl
c3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjUyOQorCisgICAgICAgIElnbm9yaW5nIGh0dHAgcmVzcG9uc2VzIHdoaWNoIGhhdmUgc3RhdHVz
IGNvZGUgZXF1YWwgdG8gMjA0IChObyBDb250ZW50KQorICAgICAgICBvciAyMDUgKFJlc2V0IENv
bnRlbnQpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKToKKworMjAxMS0wNS0wNCAgQ2FpbyBNYXJjZWxvIGRlIE9saXZl
aXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgW1F0XSBGaXggc2lnbmFscyBlbWl0
dGVkIGluIEZha2VSZXBseSB1c2VkIGluIGF1dG90ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwNDkKKworICAgICAgICBUaGUgc2lnbmFscyBl
bWl0dGVkIGZvciBlYWNoIGNhc2Ugb2YgRmFrZVJlcGx5IHdlcmUgc3dhcHBlZCAoZXJyb3IgY2Fz
ZQorICAgICAgICBlbWl0dGluZyBtZXRhRGF0YUNoYW5nZWQoKSBhbmQgcmVkaXJlY3QgY2FzZSBl
bWl0dGluZyBlcnJvcigpKS4gRW1pdHRpbmcKKyAgICAgICAgcmVhZHlSZWFkKCkgaXMgbm90IG5l
Y2Vzc2FyeS4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKEZha2VSZXBseTo6RmFrZVJlcGx5KToKKyAgICAgICAgQ2hvb3NlIHRoZSBkaWZm
ZXJlbnQgY29udGludWUgZnVuY3Rpb24gZm9yIGVhY2ggY2FzZSBvZiBGYWtlUmVwbHkuIFRoaXMg
cmVtb3ZlcworICAgICAgICB0aGUgbmVlZCBvZiB0aGUgaWYtc3RhdGVtZW50IGluIHRpbWVvdXQo
KSBhbmQgbGV0IHVzIHJlcGxhY2UgdGltZW91dCgpIHdpdGggdHdvCisgICAgICAgIHNpbXBsZXIg
ZnVuY3Rpb25zLgorCisgICAgICAgIChGYWtlUmVwbHk6OmNvbnRpbnVlUmVkaXJlY3QpOgorICAg
ICAgICAoRmFrZVJlcGx5Ojpjb250aW51ZUVycm9yKToKKyAgICAgICAgQ29udGludWF0aW9uIGNh
c2VzLCBlbWl0dGluZyB0aGUgbWluaW1hbCBzZXQgb2Ygc2lnbmFscyBuZWVkZWQgZm9yIGVhY2gg
Y2FzZS4KKworMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1
cm9yYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgorCisgICAg
ICAgIEVsZW1lbnQ6c2hhZG93Um9vdCAmIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3Qgc2hvdWxk
IHJldHVybiBTaGFkb3dSb290KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg3MDMKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzaGFk
b3dSb290KTogQWRkZWQgI2luY2x1ZGUgZm9yIFNoYWRvd1Jvb3QuaC4KKworMjAxMS0wNS0wMyAg
S2VpdGggS3l6aXZhdCAgPGtlaXRoLmt5eml2YXRAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBRdERlY2xhcmF0aXZlIFdlYnZp
ZXcgZWxlbWVudCBoYXMgYSBmaXhlZCB3aGl0ZSBiYWNrZ3JvdW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDkxOAorCisgICAgICAgIFFQcm9wZXJ0
eSBSRVZJU0lPTiBmZWF0dXJlIGlzIG5vdCBwcmVzZW50IGluIGNlcnRhaW4gUXQgVHJ1bmsgY2xv
bmVzLgorICAgICAgICBUaGVzZSBidWlsZHMgcmVwb3J0IHRoZWlyIHZlcnNpb24gYXMgNC44LjAs
IGFuZCB0aGVyZWZvcmUgYnJlYWsgb24gdGhlCisgICAgICAgIHByaW9yICNpZiBRVF9WRVJTSU9O
ID49IDB4MDQwNzA0LiAgVGhlIHByb3BlciBmaXggaXMgdG8gY2hlY2sgYmFzZWQgb24KKyAgICAg
ICAgdGhlIGV4aXN0YW5jZSBvZiBRX1JFVklTSU9OLgorCisgICAgICAgICogZGVjbGFyYXRpdmUv
cGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdFFtbFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6Cisg
ICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6CisgICAgICAgICog
ZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlld19wLmg6CisKKzIwMTEtMDUtMDEgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCisKKyAgICAgICAgUHJ1bmUgc29tZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5ODk1CisKKyAgICAg
ICAgU3RhcnQgZ2V0dGluZyByaWQgb2YgdW5uZWNlc3NhcnkgI2luY2x1ZGVzIGFuZCBmb3J3YXJk
IGRlY2xhcmVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwOgorCisyMDExLTA0LTI5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBFbmFi
bGUgc3RyaWN0IE93blB0ciBmb3IgUXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU5NjY3CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDExLTA0LTI5ICBU
b3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBFTkFCTEUoUVRfQkVBUkVSKSAt
PiBVU0UoUVRfQkVBUkVSKQorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisKKzIw
MTEtMDQtMjkgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEVOQUJMRShR
VF9VU0VSQUdFTlRfREVWSUNFTU9ERUwpIC0+IFVTRShRVF9NT0JJTElUWV9TWVNURU1JTkZPKQor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAxMS0wNC0yOCAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KKworICAgICAgICBSZW1vdmUgZmxhZyBFTkFCTEVfU1lNQklBTl9ESUFMT0dfUFJPVklE
RVIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5NzA0
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaDoKKworMjAxMS0wNC0yNyAgWWkgU2hlbiAg
PHlpLjQuc2hlbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBVcHN0cmVhbSBTeW1iaWFuIHBsYXRmb3Jt
IHBsdWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg0MzUKKworICAgICAgICBVcHN0cmVhbSBTeW1iaWFuIHBsYXRmb3JtIHBsdWdpbi4KKworICAg
ICAgICAqIFF0V2ViS2l0LnBybzogQWRkIHBsYXRmb3JtcGx1Z2luLmRsbCB0byB0aGUgUXRXZWJL
aXQuc2lzLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW46IEFkZGVkLgorICAgICAg
ICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmNwcDogQWRkZWQuCisgICAgICAg
IChJdGVtTGlzdERlbGVnYXRlOjpJdGVtTGlzdERlbGVnYXRlKToKKyAgICAgICAgKEl0ZW1MaXN0
RGVsZWdhdGU6OnBhaW50KToKKyAgICAgICAgKFBvcHVwOjpQb3B1cCk6CisgICAgICAgIChQb3B1
cDo6cmVzaXplRXZlbnQpOgorICAgICAgICAoUG9wdXA6OnBvcHVsYXRlTGlzdCk6CisgICAgICAg
IChQb3B1cDo6b25JdGVtU2VsZWN0ZWQpOgorICAgICAgICAoUG9wdXA6OnVwZGF0ZVNlbGVjdGlv
bnNCZWZvcmVEaWFsb2dDbG9zaW5nKToKKyAgICAgICAgKFBvcHVwOjp1cGRhdGVBbmRDbG9zZSk6
CisgICAgICAgIChXZWJQb3B1cDo6V2ViUG9wdXApOgorICAgICAgICAoV2ViUG9wdXA6On5XZWJQ
b3B1cCk6CisgICAgICAgIChXZWJQb3B1cDo6Y3JlYXRlU2luZ2xlU2VsZWN0aW9uUG9wdXApOgor
ICAgICAgICAoV2ViUG9wdXA6OmNyZWF0ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXApOgorICAgICAg
ICAoV2ViUG9wdXA6OmNyZWF0ZVBvcHVwKToKKyAgICAgICAgKFdlYlBvcHVwOjpzaG93KToKKyAg
ICAgICAgKFdlYlBvcHVwOjpoaWRlKToKKyAgICAgICAgKFdlYlBvcHVwOjpwb3B1cENsb3NlZCk6
CisgICAgICAgIChXZWJQb3B1cDo6aXRlbUNsaWNrZWQpOgorICAgICAgICAoU2luZ2xlU2VsZWN0
aW9uUG9wdXA6OlNpbmdsZVNlbGVjdGlvblBvcHVwKToKKyAgICAgICAgKE11bHRpcGxlU2VsZWN0
aW9uUG9wdXA6Ok11bHRpcGxlU2VsZWN0aW9uUG9wdXApOgorICAgICAgICAoV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYlBsdWdpbjo6c3Vw
cG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViUGx1Z2luOjpjcmVhdGVFeHRlbnNpb24pOgor
ICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6IEFkZGVkLgorICAg
ICAgICAoUG9wdXA6OnByZVNlbGVjdGVkSW5kaWNlcyk6CisgICAgICAgIChQb3B1cDo6bGlzdFdp
ZGdldCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OldlYk5vdGlmaWNhdGlv
blByZXNlbnRlcik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6On5XZWJOb3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vcGxh
dGZvcm1wbHVnaW4ucHJvOiBBZGRlZC4KKyAgICAgICAgKiBzeW1iaWFuL3BsYXRmb3JtcGx1Z2lu
L3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOiBDb3BpZWQgZnJvbSBXZWJLaXQvcXQvQXBpL3F3ZWJr
aXRwbGF0Zm9ybXBsdWdpbi5oLgorICAgICAgICAoUVdlYlNlbGVjdERhdGE6On5RV2ViU2VsZWN0
RGF0YSk6CisgICAgICAgIChRV2ViU2VsZWN0TWV0aG9kOjp+UVdlYlNlbGVjdE1ldGhvZCk6Cisg
ICAgICAgIChRV2ViTm90aWZpY2F0aW9uRGF0YTo6flFXZWJOb3RpZmljYXRpb25EYXRhKToKKyAg
ICAgICAgKFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OlFXZWJOb3RpZmljYXRpb25QcmVzZW50
ZXIpOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6flFXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIpOgorICAgICAgICAoUVdlYlRvdWNoTW9kaWZpZXI6On5RV2ViVG91Y2hNb2Rp
Zmllcik6CisgICAgICAgIChRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6UVdlYkZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIpOgorICAgICAgICAoUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5R
V2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChRV2ViS2l0UGxhdGZvcm1QbHVn
aW46On5RV2ViS2l0UGxhdGZvcm1QbHVnaW4pOgorCisyMDExLTA0LTI2ICBZaSBTaGVuICA8eWku
NC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4
LgorCisgICAgICAgIFtRdF1bU3ltYmlhbl0gRml4IEFwaSB0ZXN0IGZhaWx1cmUgLS0gdHN0X1FX
ZWJGcmFtZTo6c2V0SHRtbFdpdGhCYXNlVVJMICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTQ2CisKKyAgICAgICAgRGVwbG95ZWQgdGhlIG1pc3Np
bmcgcmVzb3VyY2UgZm9yIFN5bWJpYW4gcGxhdGZvcm0uCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvcXdlYmZyYW1lLnBybzoKKworMjAxMS0wNC0yNiAgU2lkZGhhcnRoIE1hdGh1ciAgPHNp
ZGRoYXJ0aC5tYXRodXJAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCisKKyAgICAgICAgW1F0XSBCdWlsZCBmaXg6IFF0RGVjbGFyYXRpdmUgV2VidmlldyBl
bGVtZW50IGhhcyBhIGZpeGVkIHdoaXRlIGJhY2tncm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTE4CisKKyAgICAgICAgTWFjcm8gUV9SRVZJ
U0lPTiBhbmQgYXNzb2NpYXRlZCBxZGVjbGFyYXRpdmVpdGVtLmggc2lnbmFscyBhcmUgbm90IGF2
YWlsYWJsZSBpbiA0LjcuMyBoZWFkZXJzIGluIE5va2lhIFF0IFNESy4KKworICAgICAgICAqIGRl
Y2xhcmF0aXZlL3BsdWdpbi5jcHA6IEJ1bXAgdXAgcmVxdWlyZWQgdmVyc2lvbiB0byA0LjcuNCsK
KyAgICAgICAgKFdlYktpdFFtbFBsdWdpbjo6cmVnaXN0ZXJUeXBlcyk6CisgICAgICAgICogZGVj
bGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6IGRpdHRvCisgICAgICAgICogZGVjbGFy
YXRpdmUvcWRlY2xhcmF0aXZld2Vidmlld19wLmg6IGRpdHRvCisgICAgICAgICogdGVzdHMvcWRl
Y2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6IGRpdHRvCisKKzIw
MTEtMDQtMjYgIEtyaXN0w7NmIEtvc3p0ecOzICA8S29zenR5by5LcmlzdG9mQHN0dWQudS1zemVn
ZWQuaHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorCisgICAg
ICAgIFtRdF0gSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRvZmlsbGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTQzOQorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEF1dG9maWxsZWQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEtMDQtMjIg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NDYyNy4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvODQ2MjcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU5MjcxCisKKyAgICAgICAgSXQgYnJva2UgU3ltYmlhbiBidWlsZCAoUmVx
dWVzdGVkIGJ5IE9zc3kgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86Cisg
ICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6IFJlbW92ZWQuCisg
ICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86IFJlbW92
ZWQuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVn
aW4uaDogUmVtb3ZlZC4KKworMjAxMS0wNC0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZpeCBxdCBidWlsZC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5j
cHA6CisgICAgICAgIChzZXR1cFNjcmlwdENvbnRleHQpOgorCisyMDExLTA0LTIyICBZaSBTaGVu
ICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFVwc3RyZWFtIFN5bWJpYW4gcGxhdGZv
cm0gcGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODQzNQorCisgICAgICAgIFVwc3RyZWFtIFN5bWJpYW4gcGxhdGZvcm0gcGx1Z2luLgorCisg
ICAgICAgICogUXRXZWJLaXQucHJvOiBBZGQgcGxhdGZvcm1wbHVnaW4uZGxsIHRvIHRoZSBRdFdl
YktpdC5zaXMuCisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbjogQWRkZWQuCisgICAg
ICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEl0ZW1MaXN0RGVsZWdhdGU6Okl0ZW1MaXN0RGVsZWdhdGUpOgorICAgICAgICAoSXRlbUxp
c3REZWxlZ2F0ZTo6cGFpbnQpOgorICAgICAgICAoUG9wdXA6OlBvcHVwKToKKyAgICAgICAgKFBv
cHVwOjpyZXNpemVFdmVudCk6CisgICAgICAgIChQb3B1cDo6cG9wdWxhdGVMaXN0KToKKyAgICAg
ICAgKFBvcHVwOjpvbkl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChQb3B1cDo6dXBkYXRlU2VsZWN0
aW9uc0JlZm9yZURpYWxvZ0Nsb3NpbmcpOgorICAgICAgICAoUG9wdXA6OnVwZGF0ZUFuZENsb3Nl
KToKKyAgICAgICAgKFdlYlBvcHVwOjpXZWJQb3B1cCk6CisgICAgICAgIChXZWJQb3B1cDo6fldl
YlBvcHVwKToKKyAgICAgICAgKFdlYlBvcHVwOjpjcmVhdGVTaW5nbGVTZWxlY3Rpb25Qb3B1cCk6
CisgICAgICAgIChXZWJQb3B1cDo6Y3JlYXRlTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAg
ICAgIChXZWJQb3B1cDo6Y3JlYXRlUG9wdXApOgorICAgICAgICAoV2ViUG9wdXA6OnNob3cpOgor
ICAgICAgICAoV2ViUG9wdXA6OmhpZGUpOgorICAgICAgICAoV2ViUG9wdXA6OnBvcHVwQ2xvc2Vk
KToKKyAgICAgICAgKFdlYlBvcHVwOjppdGVtQ2xpY2tlZCk6CisgICAgICAgIChTaW5nbGVTZWxl
Y3Rpb25Qb3B1cDo6U2luZ2xlU2VsZWN0aW9uUG9wdXApOgorICAgICAgICAoTXVsdGlwbGVTZWxl
Y3Rpb25Qb3B1cDo6TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgIChXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViUGx1Z2luOjpz
dXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJQbHVnaW46OmNyZWF0ZUV4dGVuc2lvbik6
CisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaDogQWRkZWQuCisg
ICAgICAgIChQb3B1cDo6cHJlU2VsZWN0ZWRJbmRpY2VzKToKKyAgICAgICAgKFBvcHVwOjpsaXN0
V2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6V2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6fldlYk5v
dGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogc3ltYmlhbi9wbGF0Zm9ybXBsdWdpbi9w
bGF0Zm9ybXBsdWdpbi5wcm86IEFkZGVkLgorICAgICAgICAqIHN5bWJpYW4vcGxhdGZvcm1wbHVn
aW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6IENvcGllZCBmcm9tIFdlYktpdC9xdC9BcGkvcXdl
YmtpdHBsYXRmb3JtcGx1Z2luLmguCisgICAgICAgIChRV2ViU2VsZWN0RGF0YTo6flFXZWJTZWxl
Y3REYXRhKToKKyAgICAgICAgKFFXZWJTZWxlY3RNZXRob2Q6On5RV2ViU2VsZWN0TWV0aG9kKToK
KyAgICAgICAgKFFXZWJOb3RpZmljYXRpb25EYXRhOjp+UVdlYk5vdGlmaWNhdGlvbkRhdGEpOgor
ICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UVdlYk5vdGlmaWNhdGlvblByZXNl
bnRlcik6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjp+UVdlYk5vdGlmaWNh
dGlvblByZXNlbnRlcik6CisgICAgICAgIChRV2ViVG91Y2hNb2RpZmllcjo6flFXZWJUb3VjaE1v
ZGlmaWVyKToKKyAgICAgICAgKFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpRV2ViRnVsbFNj
cmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6
flFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBs
dWdpbjo6flFXZWJLaXRQbGF0Zm9ybVBsdWdpbik6CisKKzIwMTEtMDQtMjEgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
KworICAgICAgICBBZGQgRnJhbWUqIHRvIHRoZSBhcmd1bWVudCBsaXN0cyBvZiBjYW5Db3B5Q3V0
IGFuZCBjYW5QYXN0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTkxNTMKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAxMS0wNC0yMSAgWWkgU2hlbiAgPHlpLjQu
c2hlbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKwor
ICAgICAgICBbUXRdIEZpeCB0aGUgc3R5bGUgaXNzdWUgZm9yIEFwaS9xd2Via2l0cGxhdGZvcm1w
bHVnaW4uaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTkwOTcKKworICAgICAgICBGaXggdGhlIHN0eWxlIGlzc3VlcyBmb3IgQXBpL3F3ZWJraXRwbGF0
Zm9ybXBsdWdpbi5oIGZvdW5kIGJ5IHRoZSB3ZWJraXQtY2hlY2stc3R5bGUuCisKKyAgICAgICAg
KiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisKKzIwMTEtMDQtMjEgIENhaW8gTWFyY2Vs
byBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAgICAgW1F0XSBSRUdS
RVNTSU9OKDg0MDU3KTogSXQgbWFkZSA0IEFQSSB0ZXN0cyBmYWlsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODg0OAorCisgICAgICAgIEFmdGVyIE1J
TUUgc25pZmZpbmcgc3VwcG9ydCB3YXMgYWRkZWQsIHNvbWUgYXV0b3Rlc3RzIGFyZSBmYWlsaW5n
IGJlY2F1c2UKKyAgICAgICAgdGhlIHNuaWZmZXIgZG9lc24ndCByZWNvZ25pemUgb3VyIEhUTUwg
cGFnZXMuCisKKyAgICAgICAgVGhpcyBmaXhlcyB0c3RfUVdlYlBhZ2U6OmJhY2tBY3Rpb25VcGRh
dGUoKSwgdHN0X1FXZWJQYWdlOjplcnJvclBhZ2VFeHRlbnNpb25JbkZyYW1lc2V0KCkKKyAgICAg
ICAgYW5kIHRzdF9RV2ViRnJhbWU6Omhvcml6b250YWxTY3JvbGxBZnRlckJhY2soKS4KKworICAg
ICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdGlmcmFtZS5odG1sOgorICAgICAg
ICAqIHRlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdGlmcmFtZTIuaHRtbDoKKyAgICAgICAg
UmVtb3ZlIHNwdXJpb3VzIDwvaHRtbD4gaW4gYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudC4KKwor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9mcmFtZWRpbmRleC5odG1sOgorICAg
ICAgICAqIHRlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9pbmRleC5odG1sOgorICAgICAgICBBZGQg
PGh0bWw+IChhbmQgPC9odG1sPikgdGFncywgPGZyYW1lc2V0PiBpcyBub3QgcmVjb2duaXplZCBi
eSB0aGUgc25pZmZlciBhcyBhCisgICAgICAgIHBvc3NpYmxlIHN0YXJ0aW5nIHRhZyBmb3IgSFRN
TCBkb2N1bWVudC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6
CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbkluRnJhbWVzZXQpOgor
ICAgICAgICBWZXJpZnkgaWYgd2UgZG8gaGF2ZSBhIG1haW4gZnJhbWUgYW5kIHRoZSBtYWluIGZy
YW1lIGhhcyB0aGUgY2hpbGRyZW4gZnJhbWVzIHdlCisgICAgICAgIGV4cGVjdC4gVGhpcyB3aWxs
IGF2b2lkIGNyYXNoaW5nIGlmIGZvciBzb21lIHJlYXNvbiBjaGlsZHJlbiBmcmFtZXMgYXJlIG5v
dAorICAgICAgICBsb2FkZWQuCisKKzIwMTEtMDQtMjAgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5p
Y2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4K
KworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlciBjYW4gY3JlYXRlIGFuZCBkZXN0cm95IHNo
YWRvdyBET00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU5MDU4CisKKyAgICAgICAgU3VwcG9ydCBmb3IgbmV3IG1ldGhvZHMgaW4gUXQgRFJULgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmVuc3VyZVNoYWRvd1Jvb3QpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEtMDQtMjAg
IEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICBbUXRdIENsZWFudXAgaW5jbHVkZXBh
dGggYWRqdXN0bWVudCBmb3IgZ2VuZXJhdGVkIGZpbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODg2OQorCisgICAgICAgICogUXRXZWJLaXQucHJv
OiBSZXZlcnQgdGhlIGhhY2t5IGZpeCBpbiByODQxNzQuIFJlbW92ZQorICAgICAgICB1bm5lY2Vz
c2FyeSBsb2dpYy4KKworMjAxMS0wNC0xOSAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdW1N5
bWJpYW5dIEZpeCBBcGkgdGVzdCBmYWlsdXJlIC0tIHRzdF9RV2ViVmlldzo6c2V0UGFsZXR0ZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzI1NAor
CisgICAgICAgIFNraXAgdGVzdCBmb3Igc2V0UGFsZXR0ZSgpIHdoaWNoIGRvZXNuJ3Qgd29yayAK
KyAgICAgICAgd2hlbiBXVEZfVVNFX1FUX01PQklMRV9USEVNRSBpcyBkZWZpbmVkLgorCisgICAg
ICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6Cisg
ICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB0ZXN0
cy90ZXN0cy5wcmk6CisKKzIwMTEtMDQtMTkgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XVtT
eW1iaWFuXSBGaXggQXBpIHRlc3QgZmFpbHVyZSAtLSB0c3RfUUdyYXBoaWNzV2ViVmlldzo6d2lk
Z2V0c1JlbmRlcmluZ1Rocm91Z2hDYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTgwNDQKKworICAgICAgICBGaXhpbmcgdGhpcyB0ZXN0IGJ5IGRp
c2FibGluZyB0aGUgc2Nyb2xsYmFycyBvbiB0aGUgZ3JhcGhpY3MgdmlldyAKKyAgICAgICAgc2lu
Y2UgUXRXZWJLaXQgaGFuZGxlcyBzY3JvbGxpbmcgYW5kIHNjcm9sbGJhciBhdXRvbWF0aWNhbGx5
IGFuZCBjb3JyZWN0bHkuCisKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojp3aWRn
ZXRzUmVuZGVyaW5nVGhyb3VnaENhY2hlKToKKworMjAxMS0wNC0xOSAgSWdvciBPbGl2ZWlyYSAg
PGlnb3Iub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gWDExOiBUZXh0IHNlbGVjdGlvbiBpcyBjYXVzaW5n
IG9uY29weSBldmVudCB0byBiZSBjYWxsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4NjU2CisKKyAgICAgICAgQWx3YXlzIHdoZW4gdGV4dCBpcyBz
ZWxlY3RlZCB0aGUgb25jb3B5IGV2ZW50IGlzIGZpcmVkLCB0aGlzIGJlaGF2aW9yIGRvZXMKKyAg
ICAgICAgbm90IGV4aXN0IGluIEZpcmVmb3ggb3IgQ2hyb21lLiBOb3csIHdoZW4gc2VsZWN0aW5n
IGEgdGV4dCwgUXRXZWJLaXQKKyAgICAgICAgaXMgbWFraW5nIG11bHRpIHBhcnQtY29waWVzICh3
aXRoIHJpY2ggdGV4dCBtZXRhZGF0YSksIHRoZSBtdWx0aS1wYXJ0CisgICAgICAgIGRhdGEgY2Fu
IGJlIG9idGFpbmVkIGJ5IGRhdGEgdHJhbnNmZXIgaXRlbXMgaW50ZXJmYWNlIHdoZW4gc3VwcG9y
dGVkIGJ5IFF0V2ViS2l0LgorICAgICAgICBBbHNvLCBjb3BpZXMgdG8gdGhlIGNsaXBib2FyZCBv
ZiBhIHNlbGVjdGVkIGltYWdlLCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENocm9tZSBhbmQKKyAgICAg
ICAgRmlyZWZveCBhbmQgd2FzIHJlbW92ZWQgZnJvbSBRdFdlYktpdC4KKworCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlQ2xpcGJv
YXJkKToKKworMjAxMS0wNC0xOCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFtRdF1bV0syXSBVbnJldmlld2VkIGJ1aWxkZml4IGFmdGVyIHI4NDE3NC4K
KworICAgICAgICAqIFF0V2ViS2l0LnBybzogTWlzc2luZyBpbmNsdWRlcGF0aCBhZGRlZC4KKwor
MjAxMS0wNC0xOCAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdW1N5bWJpYW5dIEZpeCBBcGkg
dGVzdCBmYWlsdXJlIC0tIHRzdF9RV2ViRnJhbWU6OmlucHV0RmllbGRGb2N1cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc1NDYKKworICAgICAgICBE
aXNhYmxlIHRoZSBmdWxsc2NyZWVuIFZLQiB3aGVuIHRlc3RpbmcgaW5wdXRGaWVsZEZvY3VzKCku
CisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMTEt
MDQtMTggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0g
RFJUOiBVbnJldmlld2VkIHRlc3QgZml4IGFmdGVyIHI4NDE2OC4KKyAgICAgICAgCisgICAgICAg
IER1bXAgdGhlIG9yaWdpbmFsIHJlcXVlc3QgS1VSTCBmb3IgYmxvY2tlZCBhY2Nlc3MgYXR0ZW1w
dHMuCisgICAgICAgIFR1cm5zIG91dCBjb252ZXJ0aW5nIGl0IHRvIGEgUVVybCBsb3dlci1jYXNl
cyB0aGUgaG9zdG5hbWUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0KToKKworMjAxMS0wNC0xOCAgWWkgU2hlbiAgPHlpLjQuc2hlbkBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KKworICAgICAg
ICBbUXRdIEZpeCBBcGkgdGVzdHMgZm9yIFFXZWJQYWdlIG9uIFN5bWJpYW4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2OTI0CisKKyAgICAgICAgSWdu
b3JlcyB0aGUgc3R5bGUgYXR0cmlidXRlIHRoYXQgc2VsZWN0ZWRIdG1sKCkgcmV0dXJucy4KKwor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmN1cnNvck1vdmVtZW50cyk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnRleHRT
ZWxlY3Rpb24pOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpmaW5kVGV4dCk6CisKKzIwMTEtMDQt
MTggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjg0MDEwKTogW1F0XSBEUlQ6
IFVuYnJlYWsgcmVkaXJlY3Rpb24gb2YgaHR0cDovIFVSTHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODc3OQorCisgICAgICAgIEtVUkw6Omhvc3Qo
KSBkb2Vzbid0IHJldHVybiB0aGUgaG9zdCBwYXJ0IG9mIFticm9rZW5dIGh0dHA6LyBVUkxzLCBz
byB1c2UKKyAgICAgICAgUVVybCBpbnN0ZWFkIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiBvdGhl
ciBwb3J0cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxs
U2VuZFJlcXVlc3QpOgorCisyMDExLTA0LTE4ICBEb21pbmljIENvb25leSAgPGRvbWluaWNjQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAg
ICAgIEFkZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zaGFkb3dSb290IHRvIFF0IERSVC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NzU5CisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2hhZG93Um9vdCk6IEFkZGVkLgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTEtMDQtMTYg
IENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtR
dF0gQXV0b3Rlc3QgZ290IG1pc3NlZCBpbiB0aGUgaGFuZG92ZXIgb2YgdGhlIFFNTCBXZWJWaWV3
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxNDQ5CisKKyAgICAgICAgSW1wb3J0aW5nIFdlYlZpZXcgUU1MIGVsZW1lbnQgdGVzdCBjYXNl
cyBmcm9tIFF0IHJlcG9zaXRvcnkuIEkgZGlkIHNvbWUKKyAgICAgICAgc3R5bGUgbW9kaWZpY2F0
aW9ucyBhbmQgc2ltcGxpZmljYXRpb25zIGluIHRoZSBvcmlnaW5hbCBjb2RlIGJ1dCBob3BlZnVs
bHkKKyAgICAgICAgd2l0aG91dCBjaGFuZ2luZyB0aGUgYmVoYXZpb3IuCisKKyAgICAgICAgVGVz
dHMgdGhhdCBkbyBub3QgcGFzcyBhcmUgbWFya2VkIHdpdGggUUVYUEVDVF9GQUlMIG9yIFFTS0lQ
LiBUaGUgdHdvIG1ham9yCisgICAgICAgIGlzc3VlcyBjdXJyZW50bHkgYXJlOgorCisgICAgICAg
IC0gcGl4ZWxDYWNoZSgpIHRlc3QgY2hlY2tlZCB0aGUgdXNhZ2Ugb2YgcGl4ZWwgY2FjaGUgYnkg
dXNpbmcgYSBzdWJjbGFzcyBvZgorICAgICAgICAgIFFEZWNsYXJhdGl2ZVdlYlZpZXcuIFdlIGNh
bid0IGRvIHRoYXQgcmlnaHQgbm93IGJlY2F1c2UgdGhpcyBjbGFzcyBpcyBub3QKKyAgICAgICAg
ICBleHBvcnRlZC4gV2UgbWF5IG5lZWQgYSBRX0FVVE9URVNUX0VYUE9SVCB0aGluZyBmb3IgUXRX
ZWJLaXQgaWYgd2Ugd2FudAorICAgICAgICAgIHRoaXMga2luZCBvZiB0ZXN0LgorICAgICAgICAt
IGVsZW1lbnRBdEFyZWEoKSB0ZXN0IHVzZXMgYSBmdW5jdGlvbiB0aGF0IGlzIG5vdCBleHBvcnRl
ZC4gQnV0IGluIHRoaXMgY2FzZQorICAgICAgICAgIEkgdGhpbmsgd2Ugc2hvdWxkIHRlc3QgaXQn
cyB1c2VyLCB0aGUgcHVibGljIG1ldGhvZCAiaGV1cmlzdGljWm9vbSIuCisKKyAgICAgICAgKiB0
ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9iYXNpYy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9iYXNpYy5wbmc6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL2Jhc2lj
LnFtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJj
ZXMvZWxlbWVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vi
dmlldy9yZXNvdXJjZXMvZWxlbWVudHMucW1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVj
bGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9mb3J3YXJkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL2ZvcndhcmQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9qYXZhU2NyaXB0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3Vy
Y2VzL2phdmFTY3JpcHQucW1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3
ZWJ2aWV3L3Jlc291cmNlcy9sb2FkRXJyb3IucW1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9x
ZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9uZXd3aW5kb3dzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL25ld3dpbmRvd3MucW1s
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy9w
cm9wZXJ0eWNoYW5nZXMucW1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3
ZWJ2aWV3L3Jlc291cmNlcy9zZXRodG1sLnFtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcWRl
Y2xhcmF0aXZld2Vidmlldy90c3RfcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6CisgICAgICAgICh0
c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6dG1wRGlyKToKKyAgICAgICAgKHN0cmlwcGVkSHRtbCk6
CisgICAgICAgIChmaWxlQ29udGVudHMpOgorICAgICAgICAocmVtb3ZlUmVjdXJzaXZlKToKKyAg
ICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpjbGVhbnVwVGVzdENhc2UpOgorICAgICAg
ICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OmJhc2ljUHJvcGVydGllcyk6CisgICAgICAgICh0
c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6ZWxlbWVudEFyZWFBdCk6CisgICAgICAgICh0c3RfUURl
Y2xhcmF0aXZlV2ViVmlldzo6aGlzdG9yeU5hdik6CisgICAgICAgIChjYWxsRXZhbHVhdGVKYXZh
U2NyaXB0KToKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpqYXZhU2NyaXB0KToK
KyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3Ojpsb2FkRXJyb3IpOgorICAgICAgICAo
dHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6Om11bHRpcGxlV2luZG93cyk6CisgICAgICAgICh0c3Rf
UURlY2xhcmF0aXZlV2ViVmlldzo6bmV3V2luZG93Q29tcG9uZW50KToKKyAgICAgICAgKHRzdF9R
RGVjbGFyYXRpdmVXZWJWaWV3OjpuZXdXaW5kb3dQYXJlbnQpOgorICAgICAgICAodHN0X1FEZWNs
YXJhdGl2ZVdlYlZpZXc6OnByZXNzR3JhYlRpbWUpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2
ZVdlYlZpZXc6OnJlbmRlcmluZ0VuYWJsZWQpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdl
YlZpZXc6OnNldEh0bWwpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnNldHRp
bmdzKToKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpjaGVja05vRXJyb3JzKToK
KyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3RzdF9xZGVjbGFyYXRpdmV3ZWJ2
aWV3LnFyYzoKKworMjAxMS0wNC0wOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KKworICAgICAgICBbUXRdIFFXZWJQYWdlIE1JTUUgdHlwZSBoYW5kbGluZyBpbmNvbnNp
c3RlbmN5IHdpdGggb3RoZXIgd2ViIGJyb3dzZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njk2OAorCisgICAgICAgIEltcGxlbWVudGluZyBtaW1l
IHR5cGUgc25pZmZpbmcgYmFzZWQgb24KKyAgICAgICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvZHJhZnQtYWJhcnRoLW1pbWUtc25pZmYtMDYuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVOZXR3b3JraW5nQ29udGV4dFF0OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dFF0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dFF0OjpNSU1FU25pZmZpbmdFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuaDoKKyAg
ICAgICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvTUlNRVNuaWZmaW5nLnBybzogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvTUlNRVNuaWZmaW5nL1Rlc3REYXRhLmg6IEFkZGVkLgorICAgICAgICAqIHRl
c3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMucXJjOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9N
SU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX2F0b20reG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX29nZzogQWRkZWQu
CisgICAgICAgICogdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9wZGY6
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRp
b25fcG9zdHNjcmlwdDogQWRkZWQuCisgICAgICAgICogdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291
cmNlcy9hcHBsaWNhdGlvbl9yZGYreG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9NSU1FU25p
ZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3Jzcyt4bWw6IEFkZGVkLgorICAgICAgICAqIHRl
c3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25feC1nemlwOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3gtcmFyLWNv
bXByZXNzZWQ6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMv
YXBwbGljYXRpb25femlwOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvcmVz
b3VyY2VzL2F1ZGlvX3gtd2F2ZTogQWRkZWQuCisgICAgICAgICogdGVzdHMvTUlNRVNuaWZmaW5n
L3Jlc291cmNlcy9pbWFnZV9ibXA6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL01JTUVTbmlmZmlu
Zy9yZXNvdXJjZXMvaW1hZ2VfZ2lmOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9NSU1FU25pZmZp
bmcvcmVzb3VyY2VzL2ltYWdlX2pwZWc6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL01JTUVTbmlm
ZmluZy9yZXNvdXJjZXMvaW1hZ2VfcG5nOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9NSU1FU25p
ZmZpbmcvcmVzb3VyY2VzL2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbjogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9pbWFnZV93ZWJwOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL3RleHRfaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy90ZXh0X3htbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy92aWRlb193ZWJtOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9NSU1FU25pZmZpbmcvdHN0X01JTUVTbmlmZmluZy5jcHA6IEFkZGVkLgor
ICAgICAgICAodHN0X01JTUVTbmlmZmluZzo6dHN0X01JTUVTbmlmZmluZyk6CisgICAgICAgIChl
cnJvclRleHQpOgorICAgICAgICAodHN0X01JTUVTbmlmZmluZzo6dGVzdENhc2UxKToKKyAgICAg
ICAgKiB0ZXN0cy90ZXN0cy5wcm86CisKKzIwMTEtMDQtMTUgIEFuZHJlYXMgS2xpbmcgIDxrbGlu
Z0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAg
ICAgICAgW1F0XSBEUlQ6IEJsb2NrIGFjY2VzcyB0byBleHRlcm5hbCBVUkxzLgorCisgICAgICAg
IEltcGxlbWVudCB0aGUgIkJsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCIgYmVoYXZpb3Ig
Zm9yIFF0J3MgRFJULAorICAgICAgICBiYXNlZCBvbiB3aGF0IG90aGVyIHBvcnRzIGFyZSBkb2lu
Zy4KKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzMwNj4gYW5kIDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzU4NTIzPi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorCisyMDExLTAxLTI2ICBSYWduZXIgTWFnYWxo
YWVzICA8cmFnbmVyLm1hZ2FsaGFlc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgW1F0XSBXZWIgSW5zcGVjdG9yIGRvZXMgbm90
IGhpZ2hsaWdodCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzUxMjUKKworICAgICAgICBBZGp1c3QgV2ViIGluc3BlY3RvciB0byBoaWdo
bGlnaHQgZWxlbWVudHMgb24gdGhlIHBhZ2Ugd2hlbiB0aGUgbW91c2UKKyAgICAgICAgaG92ZXJz
IHRoZSBlbGVtZW50IG9uIERPTSBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vcmRzKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudFF0OjpoaWRlSGlnaGxpZ2h0KToKKworMjAxMS0wNC0xMiAgR2Vv
cmdlIEd1byAgPEdlb3JnZS5HdW9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExh
c3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBPbiBTeW1iaWFuIGdvdCAiVXBkYXRlIEVycm9y
IiB3aGVuIGluc3RhbGxpbmcgUXRXZWJraXQuc2lzCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MTQxCisKKyAgICAgICAgSWYgUXRXZWJLaXQgaXMgYWxy
ZWFkeSBpbiBTeW1iaWFuIFJPTSwgd2UgbmVlZCBwYWNrYWdlIHRvIGJlCisgICAgICAgIGJvdGgg
U0EgYW5kIFJVIHR5cGUKKworICAgICAgICAqIFF0V2ViS2l0LnBybzoKKworMjAxMS0wNC0xMiAg
QWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gUHJpdmF0ZSBRX1NMT1RT
IHZvaWQgb3JpZW50YXRpb25DaGFuZ2VkKCkgY2FuJ3QgYmUgaW4gcXdlYmZyYW1lLmggcHVibGlj
IGhlYWRlciBmaWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTgyNTEKKworICAgICAgICBGaXggYW4gaXNzdWUgd2l0aCBzbG90IG5hbWVzIGFmdGVy
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzgzNTEyLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OlFXZWJGcmFtZSk6CisKKzIwMTEt
MDQtMTEgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBbUXRdIFByaXZh
dGUgUV9TTE9UUyB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZCgpIGNhbid0IGJlIGluIHF3ZWJmcmFt
ZS5oIHB1YmxpYyBoZWFkZXIgZmlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU4MjUxCisKKyAgICAgICAgUXQgY29kaW5nIGNvbnZlbnRpb25zIHN0
YXRlcyB0aGF0IHByaXZhdGUgc2xvdHMgc2hvdWxkIGJlIGxvY2F0ZWQgaW4gcHJpdmF0ZSBpbXBs
ZW1lbnRhdGlvbiBvZgorICAgICAgICB0aGUgY2xhc3MuIFRoaXMgYWxsb3dzIHVzIHRvIHJlbmFt
ZS9kZWxldGUgdGhlIHNsb3RzIGluIHRoZSBmdXR1cmUgd2l0aG91dCBicmVha2luZyBhbnl0aGlu
Zy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYWRkZWQsIGp1c3QgYSBzaW1wbGUgcmVmYWN0b3Jp
bmcuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVBy
aXZhdGU6Ol9xX29yaWVudGF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5o
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorCisyMDExLTA0LTExICBBbGV4aXMgTWVu
YXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gU3ViLUZyYW1lIGNv
bnRlbnQgaXMgbm90IHVwZGF0ZWQgd2hlbiBzY3JvbGxpbmcgaW4gY2VydGFpbiBjaXJjdW1zdGFu
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDM3
MworCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIGJhY2tpbmcgc3Rv
cmUgd2hlbiB1c2luZyBUSUxFRF9CQUNLSU5HX1NUT1JFCisgICAgICAgIGFuZCB0aGUgcGFnZSBj
b250YWlucyBzdWIgZnJhbWVzLiBUaGlzIGJ1ZyBhcHBlYXJzIG9ubHkgd2hlbiBmcmFtZSBmbGF0
dGVuaW5nIGlzCisgICAgICAgIGRpc2FibGVkIGFuZCBzY3JvbGxhYmxlIHN1YmZyYW1lcy4KKwor
ICAgICAgICBPcmlnaW5hbCBwYXRjaCBmcm9tIFRob21hcyBUaHJhaW5lci4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjppbnZhbGlkYXRlV2luZG93KToKKworMjAxMS0wNC0xMSAgQmVuamFtaW4g
UG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBIVE1MNSBEcmFnIGFuZCBEcm9wIGRl
bW9zIG5vdCB3b3JraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjQ4NgorCisgICAgICAgIEhhbmRsaW5nIHRoZSBkcm9wIHdpdGggSmF2YVNjcmlw
dCB3YXMgbm90IHdvcmtpbmcgd2l0aCBRdCBiZWNhdXNlIGlmIHRoZSBhY3Rpb24gaXMgaWdub3Jl
ZAorICAgICAgICBpbiByZXNwb25zZSB0byBEcmFnRW50ZXIsIG5vIGZ1cnRoZXIgZXZlbnRzIGFy
ZSBzZW50IHRvIHRoZSB2aWV3LgorCisgICAgICAgIERyYWcgYW5kIGRyb3AgaXMgZGVmaW5lZCBh
bmQgdXNlZCBkaWZmZXJlbnRseSBieSB3ZWJwYWdlcy4gVGhlIGRyYWcgbW92ZSBldmVudHMgYXJl
IGRldGVybWluaW5nCisgICAgICAgIHdoYXQgYWN0aW9uIHNob3VsZCB0YWtlIHBsYWNlLiBUbyBh
ZG9wdCB0aGlzIGJlaGF2aW9yIGZvciBRdCwgd2UgYWx3YXlzIGFjY2VwdCBkcmFnIGVudGVyIGV2
ZW50cworICAgICAgICBvbiB0aGUgd2lkZ2V0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ0VudGVyRXZlbnQpOgorCisyMDExLTA0
LTExICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lPTig4MzEyMik6IHRz
dF9RV2ViRWxlbWVudDo6c3R5bGUoKSBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgwMzIKKworICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIGRv
Y3VtZW50YXRpb24gb2YgUVdlYkVsZW1lbnQgdGhlIHN0eWxlUHJvcGVydHkgbWV0aG9kIHNob3Vs
ZAorICAgICAgICBub3QgcmVzcGVjdCBzdHlsZSBpbmhlcml0YW5jZSBhbmQgb3RoZXIgQ1NTIHJ1
bGVzIGZvciB0aGUgSW5saW5lU3R5bGUgZW51bS4KKworICAgICAgICByODMxMjIgZml4ZWQgdGhp
cyBiZWhhdmlvdXIuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1l
bnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpzdHlsZSk6IEZpeCB0aGUgZXhwZWN0
ZWQgY29sb3IgZm9yIFFXZWJFbGVtZW50OjpJbmxpbmVTdHlsZS4KKworMjAxMS0wNC0xMSAgQW5k
cmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIEJ1aWxkIGZp
eCBhZnRlciByODM0MzYuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKworMjAxMS0wNC0xMSAgQW5kcmVhcyBLbGluZyAgPGFu
ZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBv
dWxhaW4uCisKKyAgICAgICAgW1F0XSBkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyBzaG91
bGRuJ3Qgc3RyaXAgVVJMIHF1ZXJ5IHN0cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOiBVc2UgS1VSTDo6bGFzdFBhdGhD
b21wb25lbnQoKQorICAgICAgICBmb3IgdGhlIGR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVz
IGRpc3BsYXkgc3RyaW5nIGluc3RlYWQgb2YgUUZpbGVJbmZvOjpmaWxlTmFtZSgpLgorICAgICAg
ICBUaGlzIGlzIGluIGxpbmUgd2l0aCB0aGUgTWFjIHBvcnQuCisKKzIwMTEtMDQtMDggIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI4MzI5NS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvODMyOTUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MTQ0CisKKyAgICAgICAgQnJva2UgNCB0ZXN0cyBpbiBRdFdlYktpdCAoUmVxdWVz
dGVkIGJ5IHRvbmlraXRvbyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpo
YW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorCisyMDExLTA0LTA4ICBZaSBTaGVuICA8eWkuNC5z
aGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisg
ICAgICAgIFtRdF1SRUdSRVNTSU9OKHI4MjI0Myk6IGZhc3QvZXZlbnRzL29uc2VhcmNoLWVudGVy
Lmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU3NDcyCisKKyAgICAgICAgQXZvaWQgdG8gaW5zZXJ0IG5ldyBsaW5lIGZvciBib3RoIGtl
eWRvd24gZXZlbnQgJiBrZXlwcmVzcyBldmVudC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpo
YW5kbGVJbnB1dE1ldGhvZEtleWRvd24pOgorCisyMDExLTA0LTA3ICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBbUXRdIFFXZWJGcmFtZTo6
c2V0VXJsIHdvcmtzIG9ubHkgZnJvbSBzZWNvbmQgdGltZSBpZiB1cmwgZnJhZ21lbnQgaXMgcHJl
c2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3
MjMKKworICAgICAgICBXaGVuIGNsZWFyaW5nIHRoZSBmcmFtZSwgaW5zdGVhZCBvZiB1c2luZyB0
aGUgVVJMIHBhc3NlZCB0byBRV2ViRnJhbWU6OnNldFVybCgpLAorICAgICAgICB1c2UgYW4gaW52
YWxpZCBVUkwgKHRoZSBiZWdpbigpIHdpdGhvdXQgYXJndW1lbnRzKS4gQ2xlYXJpbmcgdGhlIGRv
Y3VtZW50CisgICAgICAgIHdpdGggdGhlIHNhbWUgVVJMIHdhcyBjYXVzaW5nIHByb2JsZW1zIHdo
ZW4gd2UgaGFkIGEgZnJhZ21lbnQgYmVjYXVzZSBpdCBhc3N1bWUgdGhhdAorICAgICAgICBvbmx5
IHNjcm9sbGluZyB3YXMgZW5vdWdoIGFuZCBkaWQgbm90IGxvYWRlZCB0aGUgZG9jdW1lbnQgYWdh
aW4uCisKKyAgICAgICAgV2hlbiBzZXRVcmwoKSBpcyBjYWxsZWQgYnV0IGZhaWxzLCB1cmwoKSBp
cyBleHBlY3RlZCB0byByZXR1cm4gdGhlIHJlcXVlc3RlZCB2YWx1ZS4gVGhlCisgICAgICAgIGJl
Z2luKHVybCkgZ3VhcmFudGVlZCB0aGF0IGJlZm9yZS4gVGhpcyBwYXRjaCBhZGRzIGEgbWVtYmVy
IHRvIHRyYWNrIHRoZSBVUkwsIHdoaWNoIGlzCisgICAgICAgIHVwZGF0ZWQgd2hlbiB0aGUgVVJM
IGNoYW5nZXMgYW5kIGFsc28gd2hlbiBzZXRVcmwoKSBpcyBjYWxsZWQuCisKKyAgICAgICAgS1VS
TCB3YXMgdXNlZCBmb3IgdGhlIG1lbWJlciBzbyB0aGF0IHdoZW4gc2V0VXJsKCkgaXMgY2FsbGVk
LCBhbmQgdGhlbiB1cmwoKSBpcyBjaGVja2VkCisgICAgICAgIGJlZm9yZSB0aGUgcGFnZSBnZXRz
IGxvYWRlZCwgd2UgcGVyZm9ybSB0aGUgc2FtZSBjb252ZXJzaW9uIHRoYXQgd2lsbCBiZSBwZXJm
b3JtZWQgYnkgYQorICAgICAgICBzdWNjZXNzZnVsIGxvYWQsIGUuZy4gYWRkIHRyYWlsaW5nICcv
JyB0byBhbiBhZGRyZXNzLiBUaGlzIGJlaGF2aW9yIGlzIGNoZWNrZWQgYnkKKyAgICAgICAgdHN0
X1FXZWJGcmFtZTo6cmVxdWVzdGVkVXJsKCkgdGVzdC4KKworICAgICAgICBGb3IgdGhlIHJlY29y
ZDogdGhlIHNlY29uZCBRV2ViUGFnZTo6c2V0VXJsKCkgd29ya2VkIGJlY2F1c2UgdGhlIGxvYWQg
d2FzIGNvbnNpZGVyZWQgYQorICAgICAgICBGcmFtZUxvYWRUeXBlU2FtZSwgYW5kIGJlY2F1c2Ug
b2YgdGhhdCwgd2FzIG5vdCBmaXQgZm9yIGp1c3Qgc2Nyb2xsaW5nLCBhIHJlbG9hZCB3YXMKKyAg
ICAgICAgbmVlZGVkLiBTZWUgRnJhbWVMb2FkZXI6OnNob3VsZFNjcm9sbFRvQW5jaG9yKCkgZm9y
IGRldGFpbHMgb24gdGhpcyBjbGFzc2lmaWNhdGlvbi4KKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6ZW1pdFVybENoYW5nZWQpOiB1cGRh
dGUgb3VyIFVSTCBtZW1iZXIgYW5kIGVtaXQgdGhlIHNpZ25hbC4KKyAgICAgICAgKGNsZWFyQ29y
ZUZyYW1lKToKKyAgICAgICAgKGlzQ29yZUZyYW1lQ2xlYXIpOgorICAgICAgICAoUVdlYkZyYW1l
OjpzZXRVcmwpOgorICAgICAgICAoUVdlYkZyYW1lOjp1cmwpOgorICAgICAgICAoUVdlYkZyYW1l
OjpiYXNlVXJsKTogbG9vayBpbiB0aGUgZG9jdW1lbnQgZm9yIHRoZSBiYXNlVVJMIHNpbmNlIGl0
cyBjb250ZW50cyBjYW4gY2hhbmdlCisgICAgICAgIHRoZSBiYXNlVVJMLCBlLmcuIGJ5IHVzaW5n
IHRoZSA8YmFzZT4gdGFnLgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZENvbW1pdExvYWQpOgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0VXJsV2l0aEZyYWdtZW50KTogdW5za2lw
IHRlc3QuCisKKzIwMTEtMDQtMDcgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgQnVpbGQgZml4IHdoZW4gdXNpbmcgUGhvbm9uIGFzIGEgYmFja2VuZCBm
b3IgdGhlIG11bHRpbWVkaWEgc3VwcG9ydC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJv
bWVDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNs
aWVudFF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisy
MDExLTA0LTA2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAg
ICAgICAgW1F0XSBMYXlvdXRUZXN0Q29udHJvbGxlciBuZWVkcyB0byBpbXBsZW1lbnQgbnVtYmVy
T2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg2CisKKyAgICAgICAgQWRkIHRoZSBh
Y2Nlc3NvciBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyB0byBj
YWxsIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6bnVtYmVyT2ZQZW5kaW5nUGVybWlzc2lvblJlcXVl
c3RzKCkKKyAgICAgICAgZnJvbSB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Lmg6CisKKzIwMTEtMDQtMDYgIEFuZGVycyBCYWtrZW4gIDxhZ2Jha2tlbkBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgW1F0XSBGcmFtZUxvYWRlckNsaWVudFF0LmNwcCBoYXMgY29kaW5nLXN0eWxlIGVy
cm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAy
NTQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aGFzV2ViVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRDb3BpZXNPblNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OndpbGxDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZnJhbWVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hp
c3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3Vs
ZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDExLTA0LTA2ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBXZSBzaG91bGQgdXNlIFVTRShRVF9NVUxUSU1FRElB
KSByYXRoZXIgdGhhbiBFTkFCTEUoUVRfTVVMVElNRURJQSkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzk3NAorCisgICAgICAgIFdlIHNob3VsZCB1
c2UgVVNFKFFUX01VTFRJTUVESUEpIHJhdGhlciB0aGFuIEVOQUJMRShRVF9NVUxUSU1FRElBKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLCBqdXN0IGEgY29uZmlnIGZsYWcgcmVuYW1l
LgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6bWVkaWFDb250ZW50VXJsQnlFbGVtZW50SWQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3Jl
ZW5WaWRlb1F0OjpGdWxsU2NyZWVuVmlkZW9RdCk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2Ny
ZWVuVmlkZW9RdDo6fkZ1bGxTY3JlZW5WaWRlb1F0KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxT
Y3JlZW5WaWRlb1F0OjplbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZ1bGxTY3JlZW5WaWRlb1F0OjpleGl0RnVsbFNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmlzVmFsaWQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUXRQbGF0Zm9ybVBsdWdpbi5oOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1dlYlBsdWdpbi5jcHA6CisgICAgICAgIChXZWJQbHVnaW46OnN1cHBvcnRzRXh0ZW5zaW9uKToK
KyAgICAgICAgKFdlYlBsdWdpbjo6Y3JlYXRlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBleGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9y
bXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZEh0bWw1VmlkZW8p
OgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaToKKworMjAxMS0wNC0wNiAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IGZ1bGxzY3JlZW4gcGxheWJh
Y2sgZm9yIHRoZSBHU3RyZWFtZXIgYmFja2VuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2ODI2CisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQg
Zm9yIGZ1bGxzY3JlZW4gcGxheWJhY2sgd2hlbiBidWlsZGluZyB0aGUKKyAgICAgICAgUXQgcG9y
dCB3aXRoIHRoZSBHU3RyZWFtZXIgYmFja2VuZCAoREVGSU5FUys9VVNFX0dTVFJFQU1FUj0xKS4K
KyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGRvbmUgaW4gRnVsbFNjcmVlblZpZGVvUXQg
YWxvbmdzaWRlIHdpdGgKKyAgICAgICAgdGhlIFF0IE11bHRpbWVkaWEgc3VwcG9ydC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBsYXlvdXQgdGVzdHMgY292ZXIgaXQuIFRoZXkgYXJl
IG5vdCB5ZXQgYWN0aXZhdGVkCisgICAgICAgIGJ1dCB3aWxsIGJlIGFueSB0aW1lIHNvb24uCisK
KyAgICAgICAgKiBRdFdlYktpdC5wcm86CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNs
aWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50
UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmVudGVyRnVsbHNjcmVlbkZv
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmV4aXRGdWxsc2NyZWVu
Rm9yTm9kZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpHU3RyZWFtZXJGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5W
aWRlb0hhbmRsZXI6OnNldFZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6d2luZG93Q2xvc2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmV4aXRGdWxs
U2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
OjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGdWxs
U2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgorICAgICAgICAoV2ViQ29yZTo6RnVs
bFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6CisgICAgICAgIChXZWJDb3JlOjpG
dWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3JlZW5Gb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1Bs
YXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0Ojppc1ZhbGlkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkdTdHJlYW1lckZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIpOgorCisyMDExLTA0LTA2ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVp
cmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBJbXByb3Zl
IHRlc3RzIGZvciBRV2ViRnJhbWU6OnVybCgpIGFuZCByZWxhdGVkIG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3ODY1CisKKyAgICAgICAg
KiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChGYWtlUmVwbHk6
OkZha2VSZXBseSk6IG1ha2UgbW9yZSBVUkxzIHJlcGx5IEhvc3ROb3RGb3VuZC4gV2UgbmVlZGVk
IHR3byBkaWZmZXJlbnQgVVJMcyBpbiB0aGUgdGVzdC4KKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6
OnJlcXVlc3RlZFVybEFmdGVyU2V0QW5kTG9hZEZhaWx1cmVzKTogY2hlY2sgdGhlIHByb3BlcnRp
ZXMgYWZ0ZXIgYW4gc2V0VXJsKCkKKyAgICAgICAgdGhhdCBmYWlscyBhbmQgYSBsb2FkKCkgdGhh
dCBmYWlscyAoZm9yIGEgZGlmZmVyZW50IFVSTCkuCisKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6
OnNldFVybFdpdGhGcmFnbWVudF9kYXRhKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldFVy
bFdpdGhGcmFnbWVudCk6IGFkZCBvdGhlciB0ZXN0IGNhc2VzIHNpbWlsYXIgdG8gdGhlIG9yaWdp
bmFsLCBidXQgY2hhbmdpbmcKKyAgICAgICAgdGhlIFVSTCBpbiB0aGUgZnJhbWUgYmVmb3JlIHRo
ZSB0ZXN0IHN0YXJ0cy4KKworICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0VXJsU2FtZVVybCk6
IGRvY3VtZW50IGV4aXN0aW5nIGJlaGF2aW9yIG9mIGNhbGxpbmcgc2V0VXJsKCkgdHdpY2Ugd2l0
aAorICAgICAgICB0aGUgc2FtZSBVUkwgYXMgYXJndW1lbnQuCisKKyAgICAgICAgKGV4dHJhY3RC
YXNlVXJsKToKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldFVybFRoZW5Mb2Fkc19kYXRhKToK
KyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldFVybFRoZW5Mb2Fkcyk6IGNoZWNrIHRoZSBVUkwg
cmVsYXRlZCBwcm9wZXJ0aWVzIG9mIHRoZSBmcmFtZSBhZnRlciBhCisgICAgICAgIHNlcXVlbmNl
IG9mIHNldCBhbmQgbG9hZHMuIFRob3NlIHRlc3RzIGFyZSBpbnRlcmVzdGluZyBiZWNhdXNlIHRo
ZSBwcm9wZXJ0aWVzCisgICAgICAgIHJlYWN0IGRpZmZlcmVudCB0byBzZXRVcmwoKSBhbmQgbG9h
ZCgpOiAncmVxdWVzdGVkVXJsJyBhbHdheXMgY2hhbmdlLCAndXJsJyBvbmx5IHdoZW4gc2V0VXJs
KCkKKyAgICAgICAgaXMgdXNlZCBvciBhZnRlciB0aGUgbG9hZCgpIGlzIGNvbW1pdHRlZCBhbmQg
YmFzZVVybCgpIGlzIHNpbWlsYXIgdG8gdXJsKCkgYnV0IGFsc28gZGVwZW5kcworICAgICAgICBv
biB0aGUgY29udGVudHMgb2YgdGhlIHBhZ2Ugd2hlbiBpdCBsb2Fkcy4KKworMjAxMS0wNC0wNCAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVz
dWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKKzIwMTEtMDQt
MDQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBS
eW9zdWtlIE5pd2EuCisKKyAgICAgICAgc2V0Q29udGVudEVkaXRhYmxlIHdpdGggdHJ1ZS9mYWxz
ZS9pbmhlcml0IHN0cmluZyBpcyBub3Qgd29ya2luZyBwcm9wZXJseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwNTgKKworICAgICAgICBNb3ZlIGlz
Q29udGVudEVkaXRhYmxlIGZyb20gSFRNTEVsZW1lbnQgdG8gTm9kZS4gV2ViS2l0IHNob3VsZCBv
bmx5IGFjY2VzcyBpc0NvbnRlbnRFZGl0YWJsZQorICAgICAgICBhcyByZW5kZXJlcklzRWRpdGFi
bGUgaXMgZm9yIFdlYkNvcmUgaW50ZXJuYWwgdXNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCisyMDExLTA0LTAxICBDYXJvbCBTemFibyAgPGNhcm9s
LnN6YWJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWlu
LgorCisgICAgICAgIENoYW5nZWQgUVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyRnJvbVRpbGVkQmFj
a2luZ1N0b3JlIHRvIGNhbGwgZGlyZWN0bHkgaW50bworICAgICAgICBTY3JvbGxiYXIvUGFuSWNv
biByZW5kZXJpbmcsIGJ5cGFzc2luZyB0aGUgcG90ZW50aWFsIHJlbGF5b3V0IGluIHJlbmRlclJl
bGF0aXZlQ29vcmRzLgorCisgICAgICAgIFRpbGVkIHBhaW50aW5nIHN0aWxsIGNhdXNlcyBzeW5j
aHJvbm91cyBsYXlvdXQgd2hlbgorICAgICAgICBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBhbmQg
dGV4dHVyZSBtYXBwZXIgYXJlIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2OTI5CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJSZWxhdGl2ZUNvb3Jkcyk6CisgICAg
ICAgIChRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJGcmFtZVdpZGdldHMpOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWVfcC5oOgorCisyMDExLTA0LTAxICBOYW5jeSBQaWVkcmEgIDxuYW5jeS5waWVk
cmFAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisK
KyAgICAgICAgW1F0XSBEcmFnQ2xpZW50UXQuaCBoYXMgY29kaW5nLXN0eWxlIGVycm9ycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA0MjUKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oOgorCisyMDExLTAzLTMxICBNYXJp
dXMgU3Rvcm0tT2xzZW4gIDxtYXJpdXMuc3Rvcm0tb2xzZW5Abm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0g
UHJvcGVybHkgZGV0ZWN0IHBob25vbiBpbmNsdWRlLCBhbmQgYXZvaWQgZG91YmxlIHF0TGlicmFy
eVRhcmdldCgpIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MDE3CisKKyAgICAgICAgQnVpbGQgZml4LiBObyBuZXcgdGVzdHMuCisKKyAgICAg
ICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgQW5vdGhlciBidWlsZCBmaXguCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkpOgorCisyMDExLTAzLTMxICBO
YW5jeSBQaWVkcmEgIDxuYW5jeS5waWVkcmFAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgW1F0XSBDaHJvbWVDbGllbnRRdC5oIGhh
cyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDIzOQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY3JvbGxiYXJzTW9k
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6bmVlZFRvdWNo
RXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpmb3JtU3RhdGVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNjcm9sbFJlY3RJbnRv
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0
OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUpOgorCisyMDExLTAz
LTMxICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEJ1aWxkIGZp
eCBmcm9tIHByZXZpb3VzIGNoYW5nZS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lOjp0aXRsZSk6CisKKzIwMTEtMDMtMzEgIEV2YW4gTWFydGluICA8
ZXZhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisK
KyAgICAgICAgPHRpdGxlPiBzaG91bGQgc3VwcG9ydCBkaXIgYXR0cmlidXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDk2MQorCisgICAgICAgIFVw
ZGF0ZSB0byBuZXcgRnJhbWVMb2FkZXJDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDExLTAzLTMwICBZaSBTaGVuICA8
eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdW1N5bWJpYW5dIEZpeCBBcGkgdGVzdCBmYWls
dXJlIC0tIHRzdF9RV2ViVmlldzo6Zm9jdXNJbnB1dFR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzAyMAorCisgICAgICAgIEFkZGVkIGEgbWFj
cm8gJ1ZFUklGWV9JTlBVVE1FVEhPRF9ISU5UUycgdG8gdGVzdCBpbnB1dG1ldGhvZGhpbnRzKCku
CisKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorICAgICAgICAo
dHN0X1FXZWJWaWV3Ojpmb2N1c0lucHV0VHlwZXMpOgorCisyMDExLTAzLTMwICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgorCisgICAgICAgIFtRdF0gRml4IExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgYWZ0
ZXIgcjc1OTY2CisKKyAgICAgICAgQWRkIERSVCBzdXBwb3J0IGZvciBsb2FkaW5nIGFuIGFsdGVy
bmF0ZSBIVE1MIHN0cmluZworICAgICAgICBmb3IgZXJyb3IgcGFnZXMuIFRoaXMgYWxsb3dzIFF0
IHRvIHVuc2tpcAorICAgICAgICBodHRwL3Rlc3RzL25hdmlnYXRpb24vZ28tYmFjay10by1lcnJv
ci1wYWdlLmh0bWwuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUyNjE0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QWx0ZXJu
YXRlSHRtbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaDoKKworMjAxMS0wMy0yOSAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgYnVpbGQtd2Via2l0
IC1taW5pbWFsLgorCisgICAgICAgIEJyZWFrYWdlIGludHJvZHVjZWQgYnkgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvODIyMzguCisgICAgICAgIFRoZSBtaW5pbWFsIG9wdGlvbiBo
YXMgbm8gc3VwcG9ydCBmb3Igc2hvcnRjdXRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUlucHV0TWV0aG9kS2V5ZG93bik6CisKKzIwMTEtMDMtMjkgIEphbm5lIEtvc2tpbmVuICA8
amFubmUucC5rb3NraW5lbkBkaWdpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBFbnRlcmtleSB0byBnbyB0byBO
ZXdsaW5lIGRvZXMgbm90IHdvcmsgaW4gdGhlIHRleHQgYXJlYShpbiBIVE1MIGZvcm0pCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzE3OQorCisgICAg
ICAgIEZpeGVkIG5ld2xpbmUgZ2VuZXJhdGlvbiBmcm9tIFF0OjpLZXlfRW50ZXIgd2hlbiBlZGl0
dGluZyB0ZXh0IGFyZWEgdXNpbmcgSW5wdXRNZXRob2RzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bik6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKToK
KworMjAxMS0wMy0yOSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBGaXggZG9jdW1l
bnRhdGlvbiBmb3IgUVdlYlBhZ2U6OnJlcGFpbnRSZXF1ZXN0ZWQoKQorCisgICAgICAgIFRoaXMg
c2lnbmFsIGlzIGFsd2F5cyBlbWl0dGVkIHdoZW4gdGhlIHBhZ2UgaXMgZGlydGllZCwgc28gcmVt
b3ZlCisgICAgICAgIHJlZmVyZW5jZSB0byBvbGQgYmVoYXZpb3Igd2hlcmUgd2Ugd291bGQgb25s
eSBlbWl0IHRoZSBzaWduYWwgZm9yCisgICAgICAgIGhlYWRsZXNzIFFXZWJQYWdlcy4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisKKzIwMTEtMDMtMjggIEFuZHJlYXMgS2xpbmcgIDxr
bGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4u
CisKKyAgICAgICAgW1F0XSBQYXNzIFFTdHJpbmcoKSBpbnN0ZWFkIG9mIFN0cmluZygpIHdoZW4g
ZW1pdHRpbmcgdGl0bGVDaGFuZ2VkKCkgZm9yIG5ldyBsb2Fkcy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKworMjAxMS0wMy0yOCAg
QW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBbUXRdIENyYXNoIHdoZW4gY2FsbGluZyBRV2Vi
RnJhbWU6OnJlbmRlcigpIGluIHJlc3BvbnNlIHRvIFFXZWJQYWdlOjpyZXBhaW50UmVxdWVzdGVk
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjI5
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kV2luZG93KTog
TWFrZSB0aGUgZW1pc3Npb24gb2YKKyAgICAgICAgUVdlYlBhZ2U6OnJlcGFpbnRSZXF1ZXN0ZWQo
KSB1c2UgYSBRdDo6UXVldWVkQ29ubmVjdGlvbi4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgIChSZXBhaW50UmVxdWVzdGVkUmVuZGVyZXI6OlJl
cGFpbnRSZXF1ZXN0ZWRSZW5kZXJlcik6CisgICAgICAgIChSZXBhaW50UmVxdWVzdGVkUmVuZGVy
ZXI6Om9uUmVwYWludFJlcXVlc3RlZCk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnJlbmRlck9u
UmVwYWludFJlcXVlc3RlZFNob3VsZE5vdFJlY3Vyc2UpOiBUZXN0IHRoYXQgY2FsbGluZworICAg
ICAgICBRV2ViRnJhbWU6OnJlbmRlcigpIGluIGEgc2xvdCBjb25uZWN0ZWQgdG8gdG8gUVdlYlBh
Z2U6OnJlcGFpbnRSZXF1ZXN0ZWQoKQorICAgICAgICBkb2Vzbid0IGNhdXNlIHJlY3Vyc2l2ZSBz
aWduYWwgZW1pc3Npb25zLgorCisyMDExLTAzLTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFt
aW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGlu
Zy4KKworICAgICAgICBbUXRdIFF0V2ViS2l0IHdpbGwgbm90IGNvbXBpbGUgd2l0aCBRVF9BU0NJ
SV9DQVNUX1dBUk5JTkdTIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU3MDg3CisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86IHdlIGNhbiBu
b3cgZW5hYmxlIFFUX0FTQ0lJX0NBU1RfV0FSTklOR1MKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5w
cmk6IHdlIGRvIG5vdCByZXF1aXJlIFFUX0FTQ0lJX0NBU1RfV0FSTklOR1MgZm9yIHRlc3RzCisg
ICAgICAgIHNpbmNlIHRoZXkgYXJlIGFwcGxpY2F0aW9ucywgbm90IGxpYnJhcmllcy4KKworMjAx
MS0wMy0yOCAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ3NhYmEgT3N6dHJvZ29uw6FjLgorCisgICAgICAgIFtRdF0gUXRXZWJLaXQgZG9l
cyBub3QgbGluayB3aXRoIC0tM2QtY2FudmFzIHVzaW5nIE1pbkdXCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzIyNQorCisgICAgICAgICogUXRXZWJL
aXQucHJvOiBBcHBlbmQgdGhlIE9wZW5HTCBsaWJyYXJpZXMgb24gTWluR1cgc28gaXQgY2FuIHJl
c29sdmUgc3ltYm9scy4KKworMjAxMS0wMy0yOCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgUkVHUkVTU0lPTihyNTQ3MTIpOiBbUXRdIEluc3RhbGxlZCBRdFdlYktpdCBoZWFkZXIgZG9l
cyBub3QgY29tcGlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU3MTgzCisKKyAgICAgICAgV2luZG93cyBidWlsZGZpeCBhZnRlciByODIwNjUuCisK
KyAgICAgICAgKiBBcGkvRGVyaXZlZFNvdXJjZXMucHJvOiBSZWFkZGluZyBlc2NhcGluZyBvbiBX
aW5kb3dzIHBsYXRmb3Jtcy4KKworMjAxMS0wMy0yNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgRml4IGJ1aWxkIHdhcm5pbmcgYWJvdXQgSWNvbkRhdGFiYXNl
Q2xpZW50LmggKHdyb25nIHBhdGguKQorCisgICAgICAgICogUXRXZWJLaXQucHJvOgorCisyMDEx
LTAzLTI3ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFN1cHBv
cnQgZm9yIENTUyBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvciBwcm9wZXJ0aWVzIG9uIHNlbGVj
dCBlbGVtZW50J3MgZHJvcGRvd24gbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTE2MjcKKworICAgICAgICBFeHRlbmQgdGhlIFFXZWJTZWxlY3RE
YXRhIGludGVyZmFjZSB3aXRoIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzCisgICAg
ICAgIGZvciB0aGUgd2hvbGUgbWVudSwgYXMgd2VsbCBhcyBwZXItaXRlbS4gSG9vayBpdCB1cCB0
byB0aGUgUG9wdXBNZW51U3R5bGUKKyAgICAgICAgZ2V0dGVycyBpbiBSZW5kZXJNZW51TGlzdC4K
KworICAgICAgICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5jcHA6CisgICAgICAgIChTZWxlY3REYXRhOjpiYWNrZ3Jv
dW5kQ29sb3IpOgorICAgICAgICAoU2VsZWN0RGF0YTo6Zm9yZWdyb3VuZENvbG9yKToKKyAgICAg
ICAgKFNlbGVjdERhdGE6Oml0ZW1CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoU2VsZWN0RGF0
YTo6aXRlbUZvcmVncm91bmRDb2xvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxs
YmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6
c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnBvcHVsYXRlKToK
KworMjAxMS0wMy0yNyAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdW1N5bWJpYW5dIEZpeCBB
cGkgdGVzdCBmYWlsdXJlIC0tIG1pY3JvRm9jdXNDb29yZGluYXRlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxMDgKKworICAgICAgICBTaW5jZSB0
aGUgY2FudmFzIGlzIG5vdCBzZWxmLWNsb3NpbmcgdGFnLCB3ZSBuZWVkIHRvIGFkZCAnPC9jYW52
YXM+Jy4gCisKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3OjptaWNyb0ZvY3VzQ29v
cmRpbmF0ZXMpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6Cisg
ICAgICAgICh0c3RfUVdlYlZpZXc6Om1pY3JvRm9jdXNDb29yZGluYXRlcyk6CisKKzIwMTEtMDMt
MjcgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBbUXRdIEJ1aWxkIGZpeDogRGVmaW5lIFdU
Rl9VU0VfVEVYVFVSRV9NQVBQRVI9MSB3aGVuIENPTkZJRyBjb250YWlucyB0ZXhtYXAuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE0MworCisgICAg
ICAgIFF0IFdlYktpdCB1c2VzIFVTRShURVhUVVJFX01BUFBFUikgZ3VhcmQuIENoZWNrIHRleG1h
cCBpbiBDT05GSUcgYW5kCisgICAgICAgIGRlZmluZSBXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEu
CisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEtMDMtMjcgIEFuZHJlYXMgS2xpbmcg
IDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxh
aW4uCisKKyAgICAgICAgUkVHUkVTU0lPTihyNTQ3MTIpOiBbUXRdIEluc3RhbGxlZCBRdFdlYktp
dCBoZWFkZXIgZG9lcyBub3QgY29tcGlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MTgzCisKKyAgICAgICAgVGhlIGNvbnZlbmllbmNlIDxRdFdl
YktpdD4gaGVhZGVyIHdvdWxkIGluY2x1ZGUgXDxRdE5ldHdvcmsvUXROZXR3b3JrXD4KKyAgICAg
ICAgd2hpY2ggd2FzIGR1ZSB0byB0aGUgb3V0cHV0dGluZyBjb2RlIHByZXZpb3VzbHkgYmVpbmcg
d3JhcHBlZCBpbiBldmFsKCkuCisKKyAgICAgICAgKiBBcGkvRGVyaXZlZFNvdXJjZXMucHJvOgor
CisyMDExLTAzLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRd
IFF0V2ViS2l0IHdpbGwgbm90IGNvbXBpbGUgd2l0aCBRVF9BU0NJSV9DQVNUX1dBUk5JTkdTIGVu
YWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3
MDg3CisKKyAgICAgICAgVXNlIGV4cGxpY2l0IGNvbnZlcnNpb24gZm9yIHN0cmluZyB0byBhdm9p
ZCBkZXBlbmRpbmcgb24gdGhlIGRlZmF1bHQgY29kZWMKKyAgICAgICAgaW5zdGFsbGVkIGJ5IHRo
ZSB1c2VyIGNvZGUuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHZlcnNpb24uY3BwOgorICAgICAg
ICAocVdlYktpdFZlcnNpb24pOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKGNvbnZlcnRUb1By
b3BlcnR5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RWRpdGlu
Z0JlaGF2aW9yKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwbGFpblRleHQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KGR1bXBSYW5nZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpvcGVu
SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNl
cnZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlV2ViU29ja2V0Q2hhbGxlbmdlTnVt
YmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ6
OnRjcFJlYWR5UmVhZCk6CisKKzIwMTEtMDMtMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIFtRdF0gUVdlYkZyYW1lOjppY29uQ2hhbmdlZCgpIG5vdCBlbWl0dGVkIHdo
ZW4gaWNvbiBpcyBjYWNoZWQgYnV0IG5vdCB5ZXQgbG9hZGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NworCisgICAgICAgIEFkZCBhbiBJY29u
RGF0YWJhc2VDbGllbnQgZm9yIHRoZSBRdCBwb3J0IHRvIGVuc3VyZSB0aGF0IFFXZWJGcmFtZTo6
aWNvbkNoYW5nZWQoKQorICAgICAgICBpcyBhbHdheXMgZW1pdHRlZCB3aGVuIGFwcHJvcHJpYXRl
LgorCisgICAgICAgICogUXRXZWJLaXQucHJvOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50UXQuaDogQWRkZWQuCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSWNvbkRhdGFiYXNlQ2xpZW50UXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudFF0OjppbnN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpJY29uRGF0YWJhc2VDbGllbnRRdDo6SWNvbkRhdGFiYXNlQ2xpZW50UXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50UXQ6On5JY29uRGF0YWJhc2VDbGllbnRRdCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnRRdDo6cGVyZm9ybUltcG9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnRRdDo6ZGlkUmVtb3ZlQWxsSWNv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50UXQ6OmRpZEltcG9ydElj
b25VUkxGb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudFF0
OjpkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlQ2xpZW50UXQ6OmRpZENoYW5nZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6Okljb25EYXRhYmFzZUNsaWVudFF0OjpkaWRGaW5pc2hVUkxJbXBvcnQpOgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6cmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9uSWNvbkxvYWRlZEZvclBhZ2VVUkwpOiBO
ZXcgc2xvdCBjb25uZWN0ZWQKKyAgICAgICAgdG8gdGhlIEljb25EYXRhYmFzZUNsaWVudFF0Ojpp
Y29uTG9hZGVkRm9yUGFnZVVSTCgpIHNpZ25hbC4gVGhpcyBlbWl0cyB0aGUKKyAgICAgICAgUVdl
YkZyYW1lOjppY29uQ2hhbmdlZCgpIHNpZ25hbCB3aGVuIHRoZSBJY29uRGF0YWJhc2VzIGZpbmlz
aGVzIGxvYWRpbmcKKyAgICAgICAgYSBjYWNoZWQgZmF2aWNvbiBmb3IgdGhlIGZyYW1lJ3MgVVJM
LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OnNldEljb25EYXRhYmFzZVBhdGgpOiBNYWtlIHN1cmUgdGhhdCBJY29uRGF0YWJhc2VDbGll
bnRRdCBpcworICAgICAgICBpbnN0YW50aWF0ZWQuIEFuIEljb25EYXRhYmFzZUNsaWVudCBoYXMg
dG8gYmUgcmVnaXN0ZXJlZCBiZWZvcmUgdGhlIEljb25EYXRhYmFzZQorICAgICAgICBzcGF3bnMg
aXRzIHJlYWRlciB0aHJlYWQuCisKKzIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgorCisgICAgICAg
IFJFR1JFU1NJT04gKHI3MDc0OCk6IGxhdGVzdCBuaWdodGx5IGJ1aWxkcyBraWxscyBBQ19RdWlj
a1RpbWUuanMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ5MDE2CisKKyAgICAgICAgVXBkYXRlIG9iamVjdENvbnRlbnRUeXBlKCkgaW1wbGVtZW50YXRp
b24gdG8gaGFuZGxlIHRoZQorICAgICAgICBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzIGZs
YWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIw
MTEtMDMtMjUgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgcmVuYW1lIE5vZGU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBhbGwgY2FsbCBzaXRlcyB0byByZW5kZXJlcklzRWRpdGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkwCisKKyAgICAgICAgVGhp
cyBpcyBwYXJ0IG9mIHRoZSBlZmZvcnQgdG8gc2VwYXJhdGUgSlMgQVBJIEhUTUxFbGVtZW50IGlz
Q29udGVudEVkaXRhYmxlIGZyb20KKyAgICAgICAgaW50ZXJuYWwgTm9kZTo6cmVuZGVyZXJJc0Vk
aXRhYmxlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgor
CisyMDExLTAzLTI1ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBU
aGUga2V5Ym9hcmQgc2hvcnRjdXRzIGR1cmluZyBmdWxsc2NyZWVuIHBsYXliYWNrIGRvIG5vdCB3
b3JrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcw
OTUKKworICAgICAgICBXZSBuZWVkIHRvIGV4cGxpY2l0ZWx5IHNldCB0aGUgZm9jdXMgb24gdGhl
IHdpZGdldCBpbiBvcmRlciB0byByZWNlaXZlIHRoZSBrZXlib2FyZCBldmVudHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvV2lkZ2V0OjpzaG93KToKKworMjAxMS0wMy0yNCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjgxOTE2IGFuZCByODE5MTcuCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzgxOTE2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzgxOTE3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzA3MQorCisgICAgICAgIGJyb2tlIGEgdGVzdCBvbiBwbGF0Zm9ybXMgdGhh
dCBkbyBub3QgaGF2ZSBRdWlja1RpbWUgaW5zdGFsbGVkCisgICAgICAgIChSZXF1ZXN0ZWQgYnkg
ZXN0ZXMgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9i
amVjdENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0Lmg6CisKKzIwMTEtMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJFR1JFU1NJT04g
KHI3MDc0OCk6IGxhdGVzdCBuaWdodGx5IGJ1aWxkcyBraWxscyBBQ19RdWlja1RpbWUuanMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDE2CisKKyAg
ICAgICAgVXBkYXRlIG9iamVjdENvbnRlbnRUeXBlKCkgaW1wbGVtZW50YXRpb24gdG8gaGFuZGxl
IHRoZQorICAgICAgICBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzIGZsYWcuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTEtMDMtMjQgIEJl
bmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFdo
ZW4gd2UgcmVuZGVyIFdlYkdMIG9mZnNjcmVlbiwgY29sb3IgY29udmVyc2lvbiBjb3N0IGEgbG90
IG9mIENQVSBjeWNsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwODg0CisKKyAgICAgICAgQWRkIHRlc3RzIGFuZCBiZW5jaG1hcmtzIGZvciB0aGUg
c29mdHdhcmUgZmFsbGJhY2sgb2YgV2ViR0wuCisKKyAgICAgICAgKiB0ZXN0cy9iZW5jaG1hcmtz
L3dlYmdsLzEwMDAwX3RyaWFuZ2xlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9iZW5j
aG1hcmtzL3dlYmdsL3RzdF93ZWJnbC5jcHA6IEFkZGVkLgorICAgICAgICAoR3JhcGhpY3NWaWV3
OjpHcmFwaGljc1ZpZXcpOgorICAgICAgICAoR3JhcGhpY3NWaWV3OjpyZXNpemVFdmVudCk6Cisg
ICAgICAgICh0c3RfV2ViR2xQZXJmb3JtYW5jZTo6aW5pdCk6CisgICAgICAgICh0c3RfV2ViR2xQ
ZXJmb3JtYW5jZTo6Y2xlYW51cCk6CisgICAgICAgICh0c3RfV2ViR2xQZXJmb3JtYW5jZTo6YmVu
Y2hTb2Z0d2FyZUZhbGxiYWNrUmdiMTYpOgorICAgICAgICAodHN0X1dlYkdsUGVyZm9ybWFuY2U6
OmJlbmNoU29mdHdhcmVGYWxsYmFja1JnYjMyKToKKyAgICAgICAgKHRzdF9XZWJHbFBlcmZvcm1h
bmNlOjpiZW5jaFNvZnR3YXJlRmFsbGJhY2tBcmdiMzIpOgorICAgICAgICAodHN0X1dlYkdsUGVy
Zm9ybWFuY2U6OmJlbmNoU29mdHdhcmVGYWxsYmFja0FyZ2IzMlByZW11bHRpcGxpZWQpOgorICAg
ICAgICAodHN0X1dlYkdsUGVyZm9ybWFuY2U6OmJlbmNobWFya0ZyYW1lUmVuZGVyaW5nT25JbWFn
ZSk6CisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy93ZWJnbC90c3Rfd2ViZ2wucXJjOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9iZW5jaG1hcmtzL3dlYmdsL3dlYmdsLnBybzogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9xZ3JhcGhpY3N3ZWJ2aWV3LnBybzoKKyAg
ICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9wb2ludGluZ19yaWdodC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9w
b2ludGluZ191cC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3
L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGNvbXBhcmVJbWFnZXNGdXp6eVBp
eGVsQ291bnQpOgorICAgICAgICAoR3JhcGhpY3NWaWV3OjpHcmFwaGljc1ZpZXcpOgorICAgICAg
ICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OndlYmdsU29mdHdhcmVGYWxsYmFja1ZlcnRpY2FsT3Jp
ZW50YXRpb24pOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OndlYmdsU29mdHdhcmVG
YWxsYmFja0hvcml6b250YWxPcmllbnRhdGlvbik6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2Vi
Vmlldzo6Y29tcGFyZUNhbnZhc1RvSW1hZ2UpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dl
YnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcucXJjOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBy
bzoKKworMjAxMS0wMy0yNCAgS3Jpc3RpYW4gQW1saWUgIDxrcmlzdGlhbi5hbWxpZUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBB
dm9pZGVkIEFTQ0lJLWNhc3Qgd2FybmluZ3MgZm9yIFdlYktpdC4KKworICAgICAgICBOb3JtYWxs
eSB0aGV5IHdvbid0IGJlIGVuYWJsZWQgYW55d2F5LCBidXQgaWYgeW91IGJ1aWxkIHdlYmtpdCBm
cm9tCisgICAgICAgIHdpdGhpbiB0aGUgUXQgbW90aGVyIHJlcG9zaXRvcnkgaXQgd2lsbCBwaWNr
IHVwIFF0J3MgZGVmYXVsdCBidWlsZAorICAgICAgICBzZXR0aW5ncywgd2hpY2ggZG8gZW5hYmxl
IGl0LiBXZSBuZWVkIHRvIGRpc2FibGUgdGhlbSBiZWNhdXNlCisgICAgICAgIHdhcm5pbmdzIGFy
ZSB0cmVhdGVkIGFzIGVycm9ycyBhbmQgdGhlcmUgYXJlIHdheSB0b28gbWFueSBvZiB0aGVtIGlu
CisgICAgICAgIHRoZSBXZWJLaXQgY29kZS4KKworICAgICAgICBbUXRdIEF2b2lkIEFTQ0lJLWNh
c3Qgd2FybmluZ3MgZm9yIFdlYktpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU3MDE2CisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEt
MDMtMjQgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisg
ICAgICAgIFtRdF0gUmVzZXR0aW5nIHRoZSBVUkwgcHJvcGVydHkgb2YgYSBRV2ViVmlldyByZXN1
bHRzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBiZWluZyBzZXQgYXMgZmlsZTo6LXR5cGUgVVJM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTU5NQor
CisgICAgICAgIFF0IERlc2lnbmVyIHJlc2V0cyB0aGUgVVJMIGJ5IHNldHRpbmcgaXQgdG8gUVVy
bCgpLiBUaGUgYnVnIHdhcyBjYXVzZWQgYnkKKyAgICAgICAgZW5zdXJlQWJzb2x1dGVVcmwoKSBo
ZWxwZXIgZnVuY3Rpb24gdHJlYXRpbmcgdGhlIGVtcHR5IFVSTCBhcyBhIHJlbGF0aXZlIFVSTCwg
YW5kCisgICAgICAgIHByZXBlbmRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCisgICAgICAg
IEJ5IGZpeGluZyB0aGlzLCBub3cgd2UgY2FuIHBhc3MgUVVybCgpIGludmFsaWQgYW5kIGVtcHR5
IFVSTHMgdG8gV2ViQ29yZSBsYXllciwgd2hpY2gKKyAgICAgICAgd2lsbCBlbmQgdXAgbG9hZGlu
ZyAiYWJvdXQ6YmxhbmsiLCBidXQga2VlcGluZyBpdCBhcyBhIHJlcXVlc3RlZCBVUkwuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIHNpbXBsaWZpZXMgdGhlIGxvZ2ljIGZvciByZXF1ZXN0ZWRV
cmwoKSwgc2luY2UgbV9sYXN0UmVxdWVzdGVkVXJsCisgICAgICAgIGlzIGZpbGxlZCBmb3IgdGhl
IGxvYWRlZCBVUkxzIGFzIHdlbGwsIHdlIGNhbiB1c2UgaXQgaW4gZXZlcnkgY2FzZS4KKworICAg
ICAgICBUaHJlZSBuZXcgYXV0b3Rlc3RzIHdlcmUgYWRkZWQsIHRvIGJldHRlciBjb3ZlciB0aGUg
ZXhwZWN0ZWQgYmVoYXZpb3Igb2Ygc2V0dGluZworICAgICAgICB0aGUgUVVybCgpIGluIGEgUVdl
YkZyYW1lLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChlbnN1cmVB
YnNvbHV0ZVVybCk6IGRvIG5vdCB0cmVhdCBpbnZhbGlkIFVSTHMgKGVtcHR5IGluY2x1ZGVkKSBh
cyByZWxhdGl2ZS4KKyAgICAgICAgKFFXZWJGcmFtZTo6cmVxdWVzdGVkVXJsKTogYWx3YXlzIHVz
ZSBtX2xhc3RSZXF1ZXN0ZWRVcmwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGlkRmluaXNoTG9hZCk6IGRvIG5vdCBjbGVhciBtX2xhc3RSZXF1ZXN0ZWRVcmwK
KyAgICAgICAgYW55bW9yZSwgc2luY2Ugd2UgYWx3YXlzIHJlbHkgb24gaXQgZXZlbiBmb3IgbG9h
ZGVkIGZyYW1lcy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNw
cDoKKyAgICAgICAgKHRzdF9RV2ViRnJhbWU6OnNldFVybFRvRW1wdHkpOiB2ZXJpZnkgdGhlIGJl
aGF2aW9yIG9mIHNldHRpbmcgZW1wdHkgVVJMcy4gVGhpcyBpbmNsdWRlcworICAgICAgICB0aGUg
cmVkdWN0aW9uIG9mIHRoZSBidWcgcmVwb3J0LgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0
VXJsVG9JbnZhbGlkKTogc2V0dGluZyBpbnZhbGlkLCBidXQgbm90IG5lY2Vzc2FyaWx5IGVtcHR5
LCBVUkxzLgorICAgICAgICAodHN0X1FXZWJGcmFtZTo6c2V0VXJsSGlzdG9yeSk6IHRvIHZlcmlm
eSBob3cgc2V0dGluZyBlbXB0eSBVUkxzIGFmZmVjdCBoaXN0b3J5LgorCisyMDExLTAzLTIzICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBT
YW0gV2VpbmlnLgorCisgICAgICAgIENoYW5nZSBJY29uRGF0YWJhc2Ugb3BlbmluZyB0byBhbGxv
dyBmb3IgYXJiaXRyYXJ5IGZpbGVuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTY5NzcKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQYXRoKToKKworMjAxMS0w
My0yMyAgQXBhcm5hIE5hbmR5YWwgIDxhcGFybmEubmFuZEB3aXByby5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFF0V2ViS2l0IHJlbmRl
cmluZyBwcm9ibGVtIHdoZW4gbWF4aW1pemluZyBhbmQgZG9pbmcgYSBiYWNrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjY2OQorCisgICAgICAgIEFk
ZGVkIGFuIGF1dG8gdGVzdC4KKyAgICAgICAgUGF0Y2ggYnkgQWxleGlzIE1lbmFyZCA8IGFsZXhp
cy5tZW5hcmRAbm9raWEuY29tPiBvbiAyMDExLTAzLTIxCisgCisgICAgICAgICogdGVzdHMvcXdl
YnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6cmVuZGVyaW5n
KToKKworMjAxMS0wMy0yMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFtWOF0gV2Vi
IEluc3BlY3RvcjogY29tcGlsZSBEZWJ1Z2dlclNjcmlwdC5qcyBpbnRvIERlYnVnZ2VyU2NyaXB0
U291cmNlLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2ODQzCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKToKKworMjAxMS0wMy0yMiAgQW5kcmV3IFdhc29uICA8cmVjdGFsb2dpY0ByZWN0YWxvZ2lj
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAg
IFtRdF0gUVdlYlBhZ2Ugd2l0aCBXZWJHTCBjb250ZW50IGNyYXNoZXMgd2hlbiByZW5kZXJpbmcg
aWYgbm8gUVdlYlZpZXcgcGFyZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDEzOAorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKHdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3KToKKyAgICAgICAg
KHRzdF9RV2ViUGFnZTo6YWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0Vmlldyk6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OnVuYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0
Vmlldyk6CisgICAgICAgICBSZW5kZXIgYSBRV2ViUGFnZSAod2l0aCBhbmQgd2l0aG91dCBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZykKKyAgICAgICAgIHdpdGggYSBXZWJHTCBjb250ZXh0IHRoYXQg
aGFzIG5vIG93bmluZyB2aWV3LiAgU2hvdWxkbid0IGNyYXNoLgorCisyMDExLTAzLTIxICBDaGFu
ZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KKworICAgICAgICBSRUdSRVNTSU9OIChyNzk5NTMpOiBDYW4ndCB0eXBlIGlu
IE1TIE91dGxvb2sgMjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTY2NjUKKworICAgICAgICByNzk5NTMgcmVtb3ZlZCB0aGUgV2ViVmlldyBsZXZl
bCBlZGl0YWJsaXR5IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0dGVyIHdoZXRoZXIKKyAgICAg
ICAgdW5kZXJseWluZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdlZCBhbmQgZWRpdGFiaWxpdHkg
Z2V0cyBsb3N0LiBUaGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAgICBzZXQgdGhpcyBXZWJWaWV3
IGVkaXRhYmxlIHZhbHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRzIHRoZSBjYWxsYmFjayBmcm9t
IFdlYkNvcmUgdG8KKyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0aGUgbWFpbiBnb2FsIGluIHI3
OTk1MyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoUVdl
YlBhZ2U6OmlzQ29udGVudEVkaXRhYmxlKToKKworMjAxMS0wMy0xOSAgQW5kcmVhcyBLbGluZyAg
PGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFp
bi4KKworICAgICAgICBbUXRdIFJlbW92ZSBzdXBwb3J0IGZvciBRdCA0LjYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NzEyCisKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6bG9hZCk6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2
YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlv
bkNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50UXQ6OnBv
c2l0aW9uVXBkYXRlZCk6CisKKzIwMTEtMDMtMTkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAg
W1F0XVtEb2NdIFFXZWJQYWdlOjp1bnN1cHBvcnRlZENvbnRlbnQoKSBwYXNzZXMgb3duZXJzaGlw
IG9mIHRoZSBRTmV0d29ya1JlcGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjcxMQorCisgICAgICAgIERvY3VtZW50IHRoZSBmYWN0IHRoYXQgd2hl
biB1bnN1cHBvcnRlZENvbnRlbnQoUU5ldHdvcmtSZXBseSopIGlzIGVtaXR0ZWQsCisgICAgICAg
IG93bmVyc2hpcCBvZiB0aGUgcmVwbHkgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2VpdmluZyBz
bG90LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAxMS0wMy0xNyAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTY0MjUKKyAgICAgICAgTW9yZSBncm91bmR3b3JrIGZvciBXZWJLaXQyIEljb25EYXRhYmFzZQor
CisgICAgICAgIFVwZGF0ZSBhbHJlYWR5LXVzZWQgZnVuY3Rpb24gbmFtZXM6CisgICAgICAgICog
QXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6aWNvbik6Cisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omlj
b25Gb3JVcmwpOgorCisyMDExLTAzLTE4ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisK
KyAgICAgICAgW1F0XSBjb25zb2xlLmxvZyBub3QgYmVpbmcgZXhwb3NlZCB0byBRbWxWaWV3ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NTM2CisK
KyAgICAgICAgVGhlIGRvY3VtZW50YXRpb24gaXMgYm9ndXMgdGhlIGZlYXR1cmUgZG9lcyBub3Qg
ZXhpc3QuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDoK
KworMjAxMS0wMy0xNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0
XSBRTUwgV2ViVmlldyBlbWl0cyBpY29uQ2hhbmdlZCgpIHdoZW4gdGhlIHBhZ2UgdGl0bGUgY2hh
bmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY1
NzAKKworICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorICAg
ICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0UGFnZSk6IERvbid0IGZvcndhcmQgdGhlIGZy
YW1lJ3MgdGl0bGVDaGFuZ2VkCisgICAgICAgIHNpZ25hbCB0byB0aGUgdmlldydzIGljb25DaGFu
Z2VkIHNpZ25hbC4KKworMjAxMS0wMy0xNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRA
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgor
CisgICAgICAgIFtRdF0gVmlkZW9zIGxvb2sgdWdseSB3aGVuIHVzaW5nIFFHcmFwaGljc1dlYlZp
ZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjU4
MAorCisgICAgICAgIFdlIG5lZWQgdG8gc2V0IFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zv
cm0gb24gdGhlIHBhaW50ZXIgZm9yIGEgcHJvcGVyIHJlbmRlcmluZyBvZiB0aGUgdmlkZW8uCisg
ICAgICAgIFFXZWJWaWV3IGRvZXMgaXQgYnV0IG5vdCBRR3JhcGhpY3NXZWJWaWV3IGJlY2F1c2Ug
dGhlIEFQSSBkb2VzIG5vdCBleGlzdC4gVGhpcyBwYXRjaCBpcyBmaXhpbmcgaXQKKyAgICAgICAg
YnkgaW50cm9kdWNpbmcgdGhlIHNhbWUgQVBJIGFzIFFXZWJWaWV3IHRvIGNvbnRyb2wgdGhlIHJl
bmRlckhpbnRzIG9mIHRoZSBpdGVtLiBVbmxpa2UgUVdlYlZpZXcKKyAgICAgICAgUUdyYXBoaWNz
V2ViVmlldyBpbmhlcml0cyB0aGUgcGFpbnRlciBmcm9tIFFHcmFwaGljc1NjZW5lIGFuZCB0aG9z
ZSBmbGFncyBhcmUgbm90IHNldC4gVGhpcyBwYXRjaAorICAgICAgICBlbnN1cmUgdGhhdCBiZWZv
cmUgcmVuZGVyaW5nIHRoZSBpdGVtIHdlIGFkZCBRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNm
b3JtIGFuZCBRUGFpbnRlcjo6VGV4dEFudGlhbGlhc2luZworICAgICAgICBpbiBhZGRpdGlvbiBv
ZiB3aGF0IGNvdWxkIGJlIHNldCBvbiB0aGUgcGFpbnRlci4gSW4gb3JkZXIgdG8gbm90IGJyZWFr
IHRoZSByZW5kZXJpbmcgb2YgYWxsIHRoZSBpdGVtcyBpbiB0aGUKKyAgICAgICAgc2NlbmUgd2Ug
c2V0IGJhY2sgdGhlIHBhaW50ZXIgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIHdoZW4gUUdyYXBoaWNz
V2ViVmlldyBpcyByZW5kZXJlZC4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpRR3JhcGhpY3NXZWJWaWV3UHJp
dmF0ZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChRR3Jh
cGhpY3NXZWJWaWV3OjpyZW5kZXJIaW50cyk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpz
ZXRSZW5kZXJIaW50cyk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRSZW5kZXJIaW50
KToKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAqIHRlc3RzL3Fn
cmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FH
cmFwaGljc1dlYlZpZXc6OnJlbmRlckhpbnRzKToKKworMjAxMS0wMy0xNiAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFZpZXdwb3J0IG5vIGxvbmdlciBhbGxvd3Mg
YW4gYXV0byB2YWx1ZSBmb3IgInVzZXItc2NhbGFibGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTQxNgorCisgICAgICAgIE1ha2UgdGhlIGRlZmF1
bHQgdmFsdWUgZm9yIHVzZXJTY2FsYWJsZSBiZSB0cnVlLgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQpOiB1cGRhdGUg
dGVzdCBvdXRwdXQgdG8gaW5jbHVkZSB1c2VyU2NhbGFibGUuCisKKzIwMTEtMDMtMTUgIEtldmlu
IE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW50cm9kdWNlIFdURl9VU0VfRVhQT1JUX01BQ1JP
Uywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byBwdXQgc2hhcmVkIGxpYnJhcnkgaW1wb3J0L2V4cG9y
dAorICAgICAgICBpbmZvIGludG8gdGhlIGhlYWRlcnMgcmF0aGVyIHRoYW4gaW4gZXhwb3J0IHN5
bWJvbCBkZWZpbml0aW9uIGZpbGVzLCBidXQgZGlzYWJsZSBpdCBvbiAKKyAgICAgICAgYWxsIHBs
YXRmb3JtcyBpbml0aWFsbHkgc28gd2UgY2FuIGRlYWwgd2l0aCBwb3J0IGJ1aWxkIGlzc3VlcyBv
bmUgcG9ydCBhdCBhIHRpbWUuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1NTEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dl
b2xvY2F0aW9uQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVu
dVF0LmNwcDoKKworMjAxMS0wMy0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjMyMAorICAgICAgICBSZW1vdmUg
SGlzdG9yeUl0ZW06Omljb24oKSBhbmQgdGhlIFdlYkNvcmUgZGVwZW5kZW5jeSBvbiAiSWNvbkRh
dGFiYXNlQmFzZTo6ZGVmYXVsdEljb24oKSIKKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5j
cHA6CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW06Omljb24pOiBVc2UgSWNvbkRhdGFiYXNlIGRp
cmVjdGx5LgorCisyMDExLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBhdHRlbXB0IGF0IGJ1aWxkIGZpeCEKKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyMTYKKyAgICAgICAgRml4
IHRoZSBRdCBidWlsZCBmb2xsb3dpbmcgdGhlIHNhbWUgcGF0dGVybiBvZiB0aGUgcGF0Y2guCisK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
c2V0SWNvbkRhdGFiYXNlUGF0aCk6IENhbGwgdGhlIHN0YXRpYyBtZXRob2QgdmlhIEljb25EYXRh
YmFzZTo6IGFuZCBub3QgdmlhIGljb25EYXRhYmFzZSgpCisKKzIwMTEtMDMtMTEgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBbUXRdIEVudGVyaW5nIGZ1bGxzY3JlZW4gYW5k
IGxlYXZpbmcgaXQgbWF5IGhpZGUgdGhlIGN1cnNvciBvZiB0aGUgYXBwbGljYXRpb24uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjE4MQorCisgICAg
ICAgIFdlIG5lZWQgdG8gc3RvcCB0aGUgYXV0byBoaWRlIGN1cnNvciB0aW1lciB3aGVuIGNsb3Np
bmcgdGhlIHdpZGdldCBvdGhlcndpc2UgdGhlIHRpbWVyCisgICAgICAgIG1pZ2h0IGdldCBmaXJl
ZCBhbmQgdGhlcmVmb3JlIGhpZGUgdGhlIGN1cnNvciBldmVuIHdoZW4gdGhlIGZ1bGxzY3JlZW4g
d2lkZ2V0IGlzIGNsb3NlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5W
aWRlb1dpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6
OmNsb3NlRXZlbnQpOgorCisyMDExLTAzLTEwICBEYXZpZCBCb2RkaWUgPGRhdmlkLmJvZGRpZUBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAg
ICBGaXhlZCBhIHFkb2Mgd2FybmluZyBhbmQgdGVybWlub2xvZ3kgKFdlYktpdCBpbnN0ZWFkIG9m
IFdlYmtpdCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NTc1NgorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKworMjAx
MS0wMy0xMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjgwNzc0LgorCisgICAgICAgIFFNTCBwcm9wZXJ0eSB2
ZXJzaW9uaW5nIGlzIGludHJvZHVjZWQgaW4gUXQgNC43LjMsIG5vdCA0LjcuMi4KKyAgICAgICAg
U2VlIGFsc286IGh0dHA6Ly9idWdyZXBvcnRzLnF0Lm5va2lhLmNvbS9icm93c2UvUVRCVUctMTM0
NTEKKworICAgICAgICAqIGRlY2xhcmF0aXZlL3BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXRR
bWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMpOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJh
dGl2ZXdlYnZpZXcuY3BwOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZp
ZXdfcC5oOgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvdHN0X3FkZWNsYXJh
dGl2ZXdlYnZpZXcuY3BwOgorCisyMDExLTAzLTEwICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1l
bmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
CisKKyAgICAgICAgW1F0XSBRdERlY2xhcmF0aXZlIFdlYnZpZXcgZWxlbWVudCBoYXMgYSBmaXhl
ZCB3aGl0ZSBiYWNrZ3JvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDkxOAorCisgICAgICAgIEltcGxlbWVudCBhIHdheSB0byBjaGFuZ2UgdGhl
IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIFdlYlZpZXcgUU1MIGVsZW1lbnQuCisgICAgICAgIFRo
aXMgZmVhdHVyZSBpcyBhY3RpdmF0ZWQgZm9yIFF0V2ViS2l0IDEuMSB2ZXJzaW9uIG9mIHRoZSBw
bHVnaW4uCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9wbHVnaW4uY3BwOgorICAgICAgICAoV2Vi
S2l0UW1sUGx1Z2luOjpyZWdpc3RlclR5cGVzKToKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9xZGVj
bGFyYXRpdmV3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OmJhY2tn
cm91bmRDb2xvcik6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3OjpzZXRCYWNrZ3JvdW5k
Q29sb3IpOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXdfcC5oOgor
ICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL3dlYnZpZXdiYWNr
Z3JvdW5kY29sb3IucW1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2
aWV3L3RzdF9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRp
dmVXZWJWaWV3OjpiYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2
ZXdlYnZpZXcvdHN0X3FkZWNsYXJhdGl2ZXdlYnZpZXcucXJjOgorCisyMDExLTAzLTEwICBTdGFu
aXNsYXYgUGFsdGlzICA8U3RhbmlzbGF2LlBhbHRpc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIE1lbW9yeUNhY2hlIGRlYWRE
ZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgaXMgbm90IGV4cG9zZWQgZm9yIGNsaWVudCdzIHVz
YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTk0
NQorICAgICAgICAKKyAgICAgICAgQWRkZWQgaGFuZGxpbmcgb2YgZHluYW1pYy9ydW50aW1lIHBy
b3BlcnR5IF9xX2RlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgdG8gCisgICAgICAgIHNl
dCBpbnRlcnZhbCB1c2VkIHRvIHRyaWdnZXIgd2hlbiBkZWNvZGVkIGRhdGEgaW4gZGVhZCBsaXN0
IG9mIG9iamVjdCBjYWNoZSB3aWxsIAorICAgICAgICBiZSBwdXJnZWQgZnJvbSBvYmplY3QgY2Fj
aGUuIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6ZHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQpOgorCisyMDExLTAzLTEwICBDYWlvIE1h
cmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBTaW1wbGlmeSBo
b3cgUVdlYkZyYW1lOjpyZXF1ZXN0ZWRVcmwoKSBpcyBvYnRhaW5lZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU4NDIKKworICAgICAgICBXaGVuIGEg
bG9hZCBzdGFydHMsIHN0b3JlIHRoZSByZXF1ZXN0ZWQgVVJMIHVudGlsIHdlIGtub3cgdGhhdCBp
dCdsbCBiZQorICAgICAgICBhdmFpbGFibGUgZm9yIHVzIGluIHRoZSBkb2N1bWVudCBsb2FkZXIg
LS0gYWZ0ZXIgbG9hZCBmaW5pc2hlZC4KKworICAgICAgICBUaGUgZXhpc3RpbmcgYXV0byB0ZXN0
cyBjb3ZlciB0aGUgdGhyZWUgZGlmZmVyZW50IGNvZGUgcGF0aHMgaW4KKyAgICAgICAgcmVxdWVz
dGVkVXJsKCkgYW5kIHRoZSBuZXcgY29kZSBwYXNzZXMgdGhlIGF1dG90ZXN0cy4gSW4gZWFjaCBv
ZiB0aG9zZQorICAgICAgICBjYXNlcywgd2UgbG9va2VkIGZvciB0aGUgaW5mb3JtYXRpb24gaW4g
YSBkaWZmZXJlbnQgcGxhY2UsIGJ1dCBpbiBhbGwKKyAgICAgICAgb2YgdGhlbSwgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCB3YXMgY2FsbGVkLgorCisgICAgICAgIFRoaXMgc2ltcGxp
ZmljYXRpb24gd2lsbCBiZSB1c2VmdWwgdG8gZml4IGJ1ZyAzMjcyMy4gVGhlIHdheSByZXF1ZXN0
ZWRVcmwoKQorICAgICAgICBpcyBpbXBsZW1lbnRlbnQsIHdlIGNhbid0IHVzZSBpdCBhcyBhIGZh
bGxiYWNrIGZvciB1cmwoKSB3aGVuIHRoZSBzZXRVcmwoKQorICAgICAgICB3YXMgY2FsbGVkIHdp
dGggYW4gaW52YWxpZCBVUkwuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZTo6cmVxdWVzdGVkVXJsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpsYXN0UmVxdWVzdGVkVXJsKToKKworMjAxMS0wMy0xMCAg
R3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4K
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICBUaWxlZCBiYWNraW5nIHN0b3JlJ3MgZGVsZWdhdGVkIHNjcm9sbCByZXF1ZXN0IHVzZXMg
aW5jb3JyZWN0IGNvbnZlbnRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MDExCisKKyAgICAgICAgQWRhcHQgaW50ZXJuYWwgQVBJIHRvIG1hdGNo
IHRoZSBjaGFuZ2UgZnJvbSBkZWx0YSB0byBwb2ludCBvbiB0aGUKKyAgICAgICAgV2ViQ29yZSBz
aWRlLCBhbmQgY29udmVydCB0aGUgcG9pbnQgdG8gYSBkZWx0YSBmb3IgdGhlIHB1YmxpYyBBUEku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDExLTAzLTA5ICBQ
ZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBNaWhhaSBQYXJwYXJpdGEuCisKKyAgICAgICAgVW5pZnkgV2luZG93cyB2ZXJzaW9uIGNoZWNr
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1OTc5
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJB
Z2VudEZvclVybCk6CisKKzIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgUmVwbGFj
ZSBXZWJLaXQyJ3MgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUgd2l0aCBkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTU4MjcKKworICAgICAgICBSZW5hbWVkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck1JTUVUeXBlIHRvIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UKKyAg
ICAgICAgYW5kIHBhc3MgdGhlIGVudGlyZSByZXNwb25zZSwgaW5zdGVhZCBvZiBqdXN0IHRoZSBN
SU1FVHlwZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oOgorCisyMDExLTAzLTA1ICBRaSBaaGFuZyAgPHFpLjIuemhhbmdAbm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0
XSBNb2JpbGUgRGV2aWNlcyBzaG91bGQgaW5jbHVkZSBNb2RlbCBhbmQgRmlybXdhcmUgVmVyc2lv
biBpbiBXZWJraXQgR2VuZXJhdGVkIFVzZXIgQWdlbnQgU3RyaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODYzNgorCisgICAgICAgIEFkZCBtb2Rl
bCBpbmZvbWF0aW9uIGludG8gdXNlciBhZ2VudCBzdHJpbmcgd2hlbiBxdG1vYmlsaXR5IGlzIGF2
YWlsYWJsZSwgYnV0IG9ubHkgZm9yIHN5bWJpYW4sIE1hZW1vIGFuZCBNZWVHby4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJs
KToKKworMjAxMS0wMy0wMyAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBbUVRdIEltcGxlbWVudCBtb2NrIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiBm
b3IgbGF5b3V0IHRlc3RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU0MzM0CisKKyAgICAgICAgSW1wbGVtZW50IGxheW91dCB0ZXN0aW5nIGZvciBD
bGllbnQtQmFzZWQgZ2VvbG9jYXRpb24uIElmIGRydF9ydW4gaXMgc2V0IAorICAgICAgICB0aGVu
IGNyZWF0ZSBtb2NrIGdlb2xvY2F0aW9uQ2xpZW50IGFuZCB1cGRhdGUgdGhlIHNhbWUgd2l0aCBj
b250cm9sbGVyLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6bW9ja0dlb2xvY2F0aW9uUmVzZXQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50UXQ6Okdlb2xvY2F0aW9uQ2xpZW50UXQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuaDoKKworMjAxMS0wMy0wMyAgQ2FpbyBN
YXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFtRdF0gUVdlYkZyYW1lOjpzZXRVcmwgd29ya3Mgb25seSBmcm9tIHNlY29uZCB0aW1lIGlm
IHVybCBmcmFnbWVudCBpcyBwcmVzZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjcyMworCisgICAgICAgIENyZWF0ZSBhbiBhdXRvLXRlc3QgZm9y
IFF0IGJhc2VkIG9uIHRoZSBidWcgZGVzY3JpcHRpb24uCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6IGFkZCBzZXRVcmxXaXRoRnJhZ21lbnQoKSB0ZXN0Lgor
CisyMDExLTAzLTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3MjEKKyAgICAgICAgR2xvYmFsIEljb25EYXRhYmFzZSBz
aG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNlLCBub3QgYXMgYSBwb2ludGVyCisKKyAgICAg
ICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0SWNv
bkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omljb25EYXRhYmFzZVBhdGgp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6Omljb25Gb3JVcmwpOgorCisyMDExLTAzLTAzICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92aW5nIGFuIGluY2x1ZGUgb2YgV2Vi
Q29yZUtleWJvYXJkVUlNb2RlLmggdGhhdCBJdmUganVzdCBhZGRlZC4gSXQncyBhbHJlYWR5IGlu
Y2x1ZGVkCisgICAgICAgIHZpYSBDaHJvbWVDbGllbnQuaAorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAxMS0wMy0wMiAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQyKTogVGFiIGtleXMgbm8gbG9uZ2VyIG9ic2VydmUg
RnVsbCBLZXlib2FyZCBBY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU1NjMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84OTYzMDIzPgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6a2V5Ym9hcmRVSU1vZGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0Lmg6CisgICAgICAgIEltcGxlbWVudCBrZXlib2FyZFVJTW9kZSgpIGluc3Rl
YWQgb2YgdGFic1RvTGlua3MoKS4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHksIHNpbmNlCisg
ICAgICAgIHRoaXMgcGxhdGZvcm0gZG9lc24ndCBvYnNlcnZlIG9yIGhhdmUgZnVsbCBrZXlib2Fy
ZCBhY2Nlc3Mgc3RhdGUuCisKKzIwMTEtMDMtMDMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVu
YXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
KworICAgICAgICBbUXRdIFFHcmFwaGljc1dlYlZpZXcgc2hvdWxkIHVzZSB1cGRhdGVNaWNyb0Zv
Y3VzKCkgb2YgUUdyYXBoaWNzSXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTU1NjgKKworICAgICAgICBXZSBzaG91bGQgdXNlIHVwZGF0ZU1pY3Jv
Rm9jdXMoKSBmcm9tIFFHcmFwaGljc0l0ZW0gcmF0aGVyIHRoYW4gdGhlIGltcGxlbWVudGF0aW9u
CisgICAgICAgIGluIFFHcmFwaGljc1dlYlZpZXcuIF9xX3VwZGF0ZU1pY3JvRm9jdXMgd2FzIGFk
ZGVkIHdoZW4gUUdyYXBoaWNzSXRlbSBkaWRuJ3QgaGF2ZSB0aGUgZmVhdHVyZS4KKyAgICAgICAg
SW4gUXQgNC43LCB1cGRhdGVNaWNyb0ZvY3VzIHdhcyBhZGRlZCwgbGV0J3MgdXNlIGl0LCB0aGVu
IHdlIGNhbiBiZW5lZml0IG9mIGFsbCBidWcgZml4aW5nIGRvbmUKKyAgICAgICAgaW4gUUdyYXBo
aWNzSXRlbS4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KFFHcmFwaGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2
aWV3Lmg6CisKKzIwMTEtMDMtMDMgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgIERyb3Ag
cmVkdW5kYW50ICJXaW5kb3dzOyAiIGZyb20gdGhlIFdpbmRvd3Mtc3BlY2lmaWMgVXNlciBBZ2Vu
dCBzdHJpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDU2NworCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
Ojp1c2VyQWdlbnRGb3JVcmwpOgorCisyMDExLTAzLTAxICBCcmlhbiBXZWluc3RlaW4gIDxid2Vp
bnN0ZWluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisg
ICAgICAgIFBhcnQgb2YgV2ViS2l0MjogTmVlZCBhIHdheSB0byBzZW5kIG5vdGlmaWNhdGlvbnMg
dG8gY2xpZW50IHdoZW4gY29va2llcyBjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU1NDI3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDU2
MDI3PgorICAgICAgICAKKyAgICAgICAgQWRkIHN0dWJzIGZvciBDb29raWVzU3RyYXRlZ3kgb24g
UXQgV2ViS2l0MS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUNvb2tpZXNT
dHJhdGVneSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZXND
aGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKworMjAxMS0wMy0wMSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgor
CisgICAgICAgIFVucmV2aWV3ZWQuIFJvbGwgb3V0IHI4MDA2OCBhbmQgcjgwMDczIGR1ZSB0byBi
cmVha2luZyBXZWJLaXQyIFF0IHBvcnQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0QXR0cmlidXRlc0ZvclNpemUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp2aWV3cG9ydEFzVGV4dCk6CisKKzIwMTEtMDMtMDEgIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBWaWV3cG9ydCBXYXJuaW5n
L0Vycm9yIE1lc3NhZ2VzIEFyZSBOb3cgSW5hY2N1cmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MDcKKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRBdHRyaWJ1dGVzRm9yU2l6ZSk6IHBh
c3MgYSBEb2N1bWVudCBpbnRvIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMgZm9yIHdhcm5pbmdz
IHRvIGJlIHJlcG9ydGVkIHRvLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp2aWV3
cG9ydEFzVGV4dCk6IHBhc3MgYSBEb2N1bWVudCBpbnRvIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0
ZXMgZm9yIHdhcm5pbmdzIHRvIGJlIHJlcG9ydGVkIHRvLgorCisyMDExLTAzLTAxICBBbmRyYXMg
QmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBP
c3p0cm9nb27DoWMuCisKKyAgICAgICAgW1F0XSBDbGVhbiB1cCB0aGUgcHJvamVjdCBmaWxlcyBh
bmQgbW92ZSBjb21tb24gb3B0aW9ucyB0byBXZWJLaXQucHJpLgorCisgICAgICAgICogUXRXZWJL
aXQucHJvOiBNb3ZlIGNvbW1vbiBvcHRpb25zIHRvIFdlYktpdC5wcmkuCisKKzIwMTEtMDMtMDEg
IEFwYXJuYSBOYW5keWFsICA8YXBhcm5hLm5hbmRAd2lwcm8uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF10c3RfUVdlYlBhZ2U6OmJhY2tB
Y3Rpb25VcGRhdGUgZmFpbHMgd2hlbiB0aGVyZSBpcyBub3QgbmV0d29yayBjb25uZWN0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTMxOQorCisg
ICAgICAgIFRoZSB0ZXN0IGNhc2UgcmVxdWlyZWQgaW50ZXJuZXQgY29ubmVjdGlvbiB0byBiZSBh
YmxlIHRvIGNvbm5lY3QgdG8KKyAgICAgICAgZ29vZ2xlLmNvbS4gQWRkZWQgbmV3IGh0bWwgZmls
ZSB3aGljaCByZWZlcnMgdG8gbG9jYWwgaHRtbCBmaWxlLgorCisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvcmVzb3VyY2VzL2NvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvcmVzb3VyY2VzL2ZyYW1lX2MuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvcmVzb3VyY2VzL2ZyYW1lZGluZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmJhY2tB
Y3Rpb25VcGRhdGUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5xcmM6
CisKKzIwMTEtMDItMjUgU3RldmUgQmxvY2sgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQnJpZGdlLmggc2hvdWxk
IG5vdCBpbmNsdWRlIEJyaWRnZUpTQy5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NTIxMgorCisgICAgICAgIEluY2x1ZGUgQnJpZGdlSlNDLmggZGly
ZWN0bHkgaW5zdGVhZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorCisyMDExLTAy
LTI4ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Unlvc3VrZSBOaXdhLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXND
b250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUg
V2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uIE1ha2UgV2ViS2l0IHN1cHBvcnQgZGVwZW5kIG9u
IERvY3VtZW50OjppbkRlc2lnbk1vZGUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChRV2ViUGFnZTo6aXNDb250ZW50
RWRpdGFibGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0Lmg6CisKKzIwMTEtMDItMjggIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVu
YXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCisK
KyAgICAgICAgQnVpbGQgZml4IGZvciBRdCBwb3J0IGFmdGVyIEFQSSBjaGFuZ2VzIG9mIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzc5OTA0LgorCisgICAgICAgICogQXBpL3F3ZWJl
bGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpldmFsdWF0ZUphdmFTY3JpcHQpOgor
CisyMDExLTAyLTI4ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XXRz
dF9RRGVjbGFyYXRpdmVXZWJWaWV3IC0gOCB0ZXN0IGNhc2VzIGZhaWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MjE0CisKKyAgICAgICAgRml4IHRo
ZSBBUEkgdGVzdHMgZm9yIHRoZSBRTUwgV2ViVmlldyBlbGVtZW50LiBUaGUgZGVmYXVsdCBzaXpl
IG9mIHRoZSBlbGVtZW50IHNob3VsZCBiZSB0aGUgc2l6ZSBvZiB0aGUgUUdyYXBoaWNzV2ViVmll
dworICAgICAgICBpZiBubyBwcmVmZXJyZWQgd2lkdGggb3IgaGVpZ2h0IGFyZSBwcm92aWRlZCAo
c2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzc5NjcyKS4KKyAgICAgICAgSSBh
bHNvIHJlZmFjdG9yZWQgdGhlIHRlc3RzIHNvIHdlIGRvbid0IHVzZSB0aGUgbmV0d29yayBidXQg
aW5zdGVhZCBhIGxvY2FsIGh0bWwgZmlsZS4KKyAgICAgICAgUU1MIGRvZXNuJ3Qgc3VwcG9ydCBx
cmMgbG9hZGluZyBzbyBJIGhhZCB0byB3b3JrYXJvdW5kIGJ5IHVzaW5nIGEgcHJvcGVydHkgdGhh
dCBJIHVwZGF0ZSBhZnRlcndhcmRzLgorCisgICAgICAgICogdGVzdHMvcWRlY2xhcmF0aXZld2Vi
dmlldy9yZXNvdXJjZXMvc2FtcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3FkZWNs
YXJhdGl2ZXdlYnZpZXcvcmVzb3VyY2VzL3dlYnZpZXd0ZXN0LnFtbDoKKyAgICAgICAgKiB0ZXN0
cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy93ZWJ2aWV3dGVzdGRlZmF1bHQucW1sOgor
ICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvdHN0X3FkZWNsYXJhdGl2ZXdlYnZp
ZXcuY3BwOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnByZWZlcnJlZFdpZHRo
VGVzdCk6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkSGVpZ2h0
VGVzdCk6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkV2lkdGhE
ZWZhdWx0VGVzdCk6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVk
SGVpZ2h0RGVmYXVsdFRlc3QpOgorICAgICAgICAqIHRlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcv
dHN0X3FkZWNsYXJhdGl2ZXdlYnZpZXcucXJjOgorCisyMDExLTAyLTI4ICBWaWF0Y2hlc2xhdiBP
c3RhcGVua28gIDxvc3RhcGVua28udmlhdGNoZXNsYXZAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBBZGQgY2xpcHBlZCB2ZXJz
aW9uIG9mIFFXZWJFbGVtZW50OjpyZW5kZXIgbWV0aG9kLgorICAgICAgICBBbGxvd3MgZmFzdGVy
IHJlbmRlcmluZyBvZiB3ZWIgZWxlbWVudCBwYXJ0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAzMTEKKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVu
dC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6cmVuZGVyKToKKyAgICAgICAgKiBBcGkvcXdl
YmVsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQu
Y3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpyZW5kZXIpOgorCisyMDExLTAyLTI4ICBL
cmlzdGlhbiBBbWxpZSAgPGtyaXN0aWFuLmFtbGllQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIEFkZGVkIGZ1bGwgd2Via2l0IG1vZHVs
ZSBwcm9maWxlIGFuZCBhIHN5bmNxdCBwcm9maWxlLgorCisgICAgICAgIFRoaXMgaXMgZm9yIG1v
ZHVsYXJpemVkIFF0LgorCisgICAgICAgIFtRdF0gV2ViS2l0IHBhdGNoZXMgcmVxdWlyZWQgdG8g
d29yayB3aXRoIGEgbW9kdWxhcml6ZWQgdmVyc2lvbiBvZiBRdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM5MTYKKworICAgICAgICAqIHF0X3dlYmtp
dF92ZXJzaW9uLnByaToKKworMjAxMS0wMi0yNyAgQXBhcm5hIE5hbmR5YWwgIDxhcGFybmEubmFu
ZEB3aXByby5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAg
ICAgICBbUXRdIFF0VGVzdEJyb3dzZXIgLSBIb3Jpem9udGFsIHNjcm9sbGJhciBkaXNhcHBlYXJz
IG9uIG5hdmlnYXRpbmcgcGFnZXMgdXNpbmcgQmFjay9Gb3J3YXJkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzkxNworCisgICAgICAgIEFkZGluZyB0
ZXN0IGNhc2UgdG8gY2hlY2sgdGhlIHNjZW5hcmlvIHRvIGF2b2lkIHJlZ3Jlc3Npb25zIGluIHRo
ZQorICAgICAgICBmdXR1cmUuIAorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2Vi
ZnJhbWUuY3BwOgorCisyMDExLTAyLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91
bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICBbUXRdIFJlZmVyZW5jZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgV2ViS2l0IGJy
aWRnZSBmcm9tIFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MzIyCisKKyAgICAg
ICAgRG9jdW1lbnRhdGlvbiB1cGRhdGUsIGFkZCBhIHJlZmVyZW5jZSB0byB0aGUgUXRXZWJLaXQg
YnJpZGdlIHBhZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKworMjAxMS0wMi0y
NiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIER1bXBSZW5kZXJUcmVlIHNob3VsZCBy
ZXNldCBmcmFtZSBvcGVuZXIgYmV0d2VlbiB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0ODc0CisKKyAgICAgICAgQWRkZWQgY2xlYXJPcGVu
ZXIgbWV0aG9kIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9ydFFULgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmNsZWFyT3BlbmVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDExLTAyLTI2ICBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gdGVzdCB0aGUgdGFy
Z2V0ZGVuc2l0eS1kcGkgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTUxNDIKKworICAgICAgICBUZXN0IHRoZSB2aWV3cG9ydCBtZXRhIHRh
ZyBmZWF0dXJlIHRhcmdldGRlbnNpdHktZHBpIGJ5CisgICAgICAgIGFkZGluZyBleHRyYSBhcmd1
bWVudHMgdG8gZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDExLTAyLTI2ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByNzk3NjQuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
Lzc5NzY0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NTI5NQorCisgICAgICAgICJicm9rZSBDaHJvbWl1bSBidWlsZHMiIChSZXF1ZXN0ZWQgYnkgcm5p
d2Egb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuaDoKKworMjAxMS0wMi0yNiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAg
IER1bXBSZW5kZXJUcmVlIHNob3VsZCByZXNldCBmcmFtZSBvcGVuZXIgYmV0d2VlbiB0ZXN0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0ODc0CisK
KyAgICAgICAgQWRkZWQgY2xlYXJPcGVuZXIgbWV0aG9kIHRvIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFFULgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyT3BlbmVyKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEx
LTAyLTI1ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAgICAgW1F0XSBNYWtlIHRoZSBXZWJL
aXQyIGJ1aWxkIHN5c3RlbSBsZXNzIGNvbmZ1c2luZyBmb3Igbm9uLVF0IGRldmVsb3BlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MjEzCisKKyAg
ICAgICAgKiBRdFdlYktpdC5wcm86IE1vdmUgdGhlIFdlYktpdDIgQVBJIGludG8gYSBwcm9qZWN0
IGluY2x1ZGUgZmlsZQorICAgICAgICBpbiB0aGUgV2ViS2l0MiBkaXJlY3RvcnkgYW5kIGluY2x1
ZGUgdGhlIHByaSBmaWxlIGhlcmUuCisKKzIwMTEtMDItMjUgIEFsZXhpcyBNZW5hcmQgIDxhbGV4
aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgg
Zm9yIEludGVsIElDQyBhbmQgTVNWQy4KKworICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZp
ZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZp
ZXc6OnNldFBhbGV0dGUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5j
cHA6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OnNldFBhbGV0dGUpOgorCisyMDExLTAyLTI1ICBB
bGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gUHJv
cGVybHkgcHJvcGFnYXRlIHRoZSBwYWxldHRlIHRvIFFXZWJQYWdlIGZyb20gUUdyYXBoaWNzV2Vi
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
NDIKKworICAgICAgICBEaXNjb3ZlcmVkIHdoaWxlIGxvb2tpbmcgYXQgMzE3NDIuIFdoZW4gd2Ug
c2V0IGEgcGFsZXR0ZSBvbiB0aGUKKyAgICAgICAgUUdyYXBoaWNzV2ViVmlldyB3ZSBuZWVkIHRv
IHByb3BhZ2F0ZSBpdCB0byB0aGUgcGFnZSBsaWtlIFFXZWJWaWV3LgorICAgICAgICBJIGhhdmUg
YWRkZWQgdGhlIHNhbWUgdGVzdHMgYXMgUVdlYlZpZXcgdG8gYmUgc3VyZSB0byBjYXRjaCBwb3Rl
bnRpYWwKKyAgICAgICAgcmVncmVzc2lvbnMgYXMgd2VsbCBhcyB0d28gZXh0cmFzIFFWRVJJRlkg
dG8gY2hlY2sgdGhlIHBhbGV0dGUgcHJvcGFnYXRpb24uCisKKyAgICAgICAgKiBBcGkvcWdyYXBo
aWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpldmVudCk6CisgICAg
ICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6Cisg
ICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFsZXR0ZV9kYXRhKToKKyAgICAgICAg
KHRzdF9RR3JhcGhpY3NXZWJWaWV3OjpzZXRQYWxldHRlKToKKworMjAxMS0wMi0yNSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGRmaXggYWZ0ZXIgcjc5NjcyLgorCisgICAgICAgIFtRdF0gQnVpbGQgdHN0X3FkZWNsYXJhdGl2
ZXdlYnZpZXcgaWYgUVRfQ09ORklHIGNvbnRhaW5zIGRlY2xhcmF0aXZlLgorCisgICAgICAgICog
dGVzdHMvdGVzdHMucHJpOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoKKworMjAxMS0wMi0y
NSAgR29wYWwgUmFnaGF2YW4gIDxnb3BhbC4xLnJhZ2hhdmFuQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRd
IFFNTCBXZWJWaWV3IGluc2lkZSBhIEZsaWNrYWJsZSBzaG93cyBjaGVja2VycyBwYXR0ZXJuIGF0
IHN0YXJ0dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwMjIyLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGNoZWNrZXJib2FyZCB2aXNp
YmxlIGF0IHN0YXJ0dXAgZXZlbiBpZiBwcmVmZXJyZWRXaWR0aCBhbmQgcHJlZmVycmVkSGVpZ2h0
IGFyZSBub3Qgc2V0LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmll
dy5jcHA6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3Ojppbml0KToKKyAgICAgICAgKiB0
ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFy
YXRpdmV3ZWJ2aWV3L3FkZWNsYXJhdGl2ZXdlYnZpZXcucHJvOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogdGVz
dHMvcWRlY2xhcmF0aXZld2Vidmlldy9yZXNvdXJjZXMvd2Vidmlld3Rlc3QucW1sOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3Jlc291cmNlcy93ZWJ2aWV3dGVz
dGRlZmF1bHQucW1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3
L3RzdF9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDogQWRkZWQuCisgICAgICAgICh0c3RfUURlY2xh
cmF0aXZlV2ViVmlldzo6aW5pdFRlc3RDYXNlKToKKyAgICAgICAgKHRzdF9RRGVjbGFyYXRpdmVX
ZWJWaWV3OjpjbGVhbnVwVGVzdENhc2UpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZp
ZXc6OmluaXQpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OmNsZWFudXApOgor
ICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnByZWZlcnJlZFdpZHRoVGVzdCk6Cisg
ICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkSGVpZ2h0VGVzdCk6Cisg
ICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkV2lkdGhEZWZhdWx0VGVz
dCk6CisgICAgICAgICh0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkSGVpZ2h0RGVm
YXVsdFRlc3QpOgorICAgICAgICAodHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OmNoZWNrTm9FcnJv
cnMpOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5w
cm86CisKKzIwMTEtMDItMjQgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFtRdF0gUmV2ZXJ0IHRoZSBzdXBwb3J0IGZvciBRTkFNIGFmZmluZWQgdG8gYSBkaWZmZXJlbnQg
dGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTUxNDkKKworICAgICAgICBRdCA0Ljggd2lsbCBoYXZlIFFOQU0gdXNlIGl0cyBvd24gdGhyZWFk
IGludGVybmFsbHkgYnkgZGVmYXVsdCwKKyAgICAgICAgbm8gbmVlZCB0byBrZWVwIHRoaXMgY29t
cGxleGl0eSBpbiBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBtYWlubHkgcmV2ZXJ0czoKKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzM3MTAKKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzM3MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZG93bmxvYWQpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2Vi
cGFnZS5jcHA6CisKKzIwMTEtMDItMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBUcnkgdG8gZml4IHRoZSBRdCBidWlsZC4KKworICAgICAgICAqIFF0V2ViS2l0LnBy
bzoKKworMjAxMS0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgRHJvcCB0aGUgIlU7
ICIgZW5jcnlwdGlvbiBsZXZlbCBmcm9tIHRoZSBVc2VyIEFnZW50IHN0cmluZy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0NTY2CisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6
CisKKzIwMTEtMDItMjQgIEFuZHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc5NTcwLgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83OTU3MAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ4NzQKKworICAgICAgICBCcmVha3MgY2hyb21pdW0g
YnVpbGQgYmVjYXVzZSBnbHVlL21vY2tzL21vY2tfd2ViX2ZyYW1lLmgvY2MKKyAgICAgICAgd2Fz
IG5vdCB1cGRhdGVkCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuaDoKKworMjAxMS0wMi0yNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAg
ICAgIER1bXBSZW5kZXJUcmVlIHNob3VsZCByZXNldCBmcmFtZSBvcGVuZXIgYmV0d2VlbiB0ZXN0
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0ODc0
CisKKyAgICAgICAgQWRkZWQgY2xlYXJPcGVuZXIgbWV0aG9kIHRvIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFFULgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyT3BlbmVyKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisy
MDExLTAyLTI0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSB0c3Rf
UVdlYlZpZXc6OnNldFBhbGV0dGUoYWN0aXZlRkcpIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTAyOQorCisgICAgICAgIFRoaXMgdGltZSBp
dCBzaG91bGQgYmUgdGhlIHByb3BlciBmaXguIFRoZSB3aW5kb3cgbmVlZHMgdG8gYmUgc2hvd24g
YmVmb3JlIHdlCisgICAgICAgIGNhbGwgYWN0aXZhdGVXaW5kb3coKSBvdGhlcndpc2UgdGhlcmUg
aXMgbm8gYWN0aXZlIHdpbmRvd3MgZm9yIHRoZSBhcHBsaWNhdGlvbi4KKworICAgICAgICAqIHRl
c3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OnNl
dFBhbGV0dGUpOgorCisyMDExLTAyLTI0ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFtRdF0g
TWluR1cgYnVpbGQgZmFpbHMgdG8gbGluaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTUwNTAKKworICAgICAgICBQcmVwZW5kIHRoZSBsaWJyYXJpZXMg
b2Ygc3ViY29tcG9uZW50cyBpbnN0ZWFkIG9mIGFwcGVuZGluZyB0aGVtCisgICAgICAgIHRvIGZp
eCB0aGUgbGlicmFyeSBvcmRlciBhY2NvcmRpbmcgdG8gdGhlIGRlcGVuZGVuY3kgb2YgdGhlIGxp
YnJhcmllcworCisgICAgICAgICogUXRXZWJLaXQucHJvOiBwcmVwZW5kIGxpYnJhcmllcyBpbiB0
aGUgY29ycmVjdCBvcmRlcgorCisyMDExLTAyLTIzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1l
bmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQu
CisKKyAgICAgICAgW1F0XSB0c3RfUVdlYlZpZXc6OnNldFBhbGV0dGUoYWN0aXZlRkcpIGZhaWxz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTAyOQor
CisgICAgICAgIEF0dGVtcHQgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIHJvYnVzdC4gQnkgaW52ZXN0
aWdhdGluZyB3aXRoIHRoZSBib3QgdmlydHVhbCBtYWNoaW5lCisgICAgICAgIEkgZGlzY292ZXJl
ZCB0aGF0IHRoZSBhY3RpdmF0aW9uIGNhbiB0YWtlIHNvbWUgdGltZS4gSW4gdGhpcyBwYXRjaCB3
ZSBtYWtlIHN1cmUgdGhhdAorICAgICAgICB0aGUgYWN0aXZlIHdpbmRvdyB3ZSB3YW50IHRvIGhh
dmUgaXMgdGhlIHNhbWUgYXMgdGhlIFFBcHBsaWNhdGlvbi4KKworICAgICAgICAqIHRlc3RzL3F3
ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OnNldFBhbGV0
dGUpOgorCisyMDExLTAyLTIzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCisKKyAgICAgICAg
W1F0XVJFR1JFU1NJT04ocjc5MTY3KTogSXQgYnJva2UgMyBRdC1BUEkgdGVzdCBjYXNlcworICAg
ICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83OTE2NyByZWZhY3RvcmVkIHRo
ZSB3YXkgdGhlIGJvdW5kIHNpemUgb2YKKyAgICAgICAgdGhlIGZyYW1lIGlzIGhhbmRsZWQuIEEg
bmV3IEFQSSBzZXRCb3VuZHNTaXplIHdhcyBhZGRlZCwgd2UgbmVlZCB0byBjYWxsIGl0CisgICAg
ICAgIGluIGFkZGl0aW9uIHRvIHNldEZyYW1lUmVjdC4gSSBjb3VsZCBjYWxsIHNldEJvdW5kU2l6
ZSBhZnRlciBzZXRGcmFtZVJlY3QgYnV0CisgICAgICAgIEkgdGhvdWdodCBJdCB3b3VsZCBiZSBt
b3JlIGVsZWdhbnQgdG8gdXNlIHRoZSByZXNpemUgbWV0aG9kLgorCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaWV3cG9ydFNpemUpOgorCisyMDEx
LTAyLTIyICBGYWJyaXppbyBNYWNoYWRvICA8ZmFicml6aW8ubWFjaGFkb0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIERvbid0
IGZhbGwgdGhyb3VnaCBjYXNlIGluIHZhcmlhbnRUb1NldHRpbmcoKSBpZiBxdmFyaWFudC50eXBl
KCkgaXMgQm9vbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTQ5NzYKKworICAgICAgICBUZXN0IG5vdCBuZWVkZWQuCisgICAgICAgIAorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKworMjAxMS0wMi0yMiAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gUVdlYlZpZXcgaWdub3JlcyBh
IHBhbGV0dGUgc2V0IHdpdGggUVdlYlZpZXc6OnNldFBhbGV0dGUoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3NDIKKworICAgICAgICBUZXN0IGNh
c2UgdG8gY2hlY2sgdGhhdCB0aGUgcGFsZXR0ZSBzZXRzIG9uIHRoZSBRV2ViVmlldyBpcyB0YWtl
bgorICAgICAgICBpbnRvIGFjY291bnQuCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3Rf
cXdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FXZWJWaWV3OjpzZXRQYWxldHRlX2RhdGEpOgor
ICAgICAgICAodHN0X1FXZWJWaWV3OjpzZXRQYWxldHRlKToKKworMjAxMS0wMi0yMiAgTGFzemxv
IEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBEcm9wIHRoZSBsYW5ndWFnZSB0YWcg
cGFydCBmcm9tIHRoZSBVc2VyIEFnZW50IHN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ1NjAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKworICAgICAgICAqIHRl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6IFJlbW92ZSB0aGUgdXNlckFnZW50TG9jYWxl
Q2hhbmdlCisgICAgICAgIHRlc3QuCisKKzIwMTEtMDItMjIgIENoYW5nIFNodSAgPGNzaHVAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAg
ICAgICAgW1F0XSBlZGl0aW5nL2RlbGV0aW5nLzU0MDgyNTUuaHRtbCBmYWlscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5NjQKKworICAgICAgICBN
b3ZlIFdlYkNvcmUgcmVzb3VyY2UgZmlsZSB0byBRdFdlYktpdCBzaW5jZSB0aGV5IGFyZSByZWZl
cnJlZCBpbiBXZWJLaXQuCisKKyAgICAgICAgKiBRdFdlYktpdC5wcm86CisKKzIwMTEtMDItMjIg
IEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAgICBbUXRdIFJlZGVzaWduIHRoZSBidWlsZCBz
eXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUx
MzM5CisKKyAgICAgICAgTW92ZSBpbnNwZWN0b3IncyByZXNvdXJjZSBmaWxlcyBpbnRvIHRoZSBm
aW5hbCBidWlsZCBzdGVwIHRvIGZpeCB0aGUgbGF5b3V0IHRlc3QgcmVncmVzc2lvbi4KKworICAg
ICAgICAqIFF0V2ViS2l0LnBybzogQWRkIGluc3BlY3RvcidzIHJlYW91cmNlIGZpbGVzLgorCisy
MDExLTAyLTIyICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBDc2Fi
YSBPc3p0cm9nb27DoWMuCisKKyAgICAgICAgW1F0XSBSZWRlc2lnbiB0aGUgYnVpbGQgc3lzdGVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTMzOQor
CisgICAgICAgIFRoZSBwYXRjaCBsYW5kZWQgaW4gcjc5MzIwIGRpZG4ndCBjb250YWluIHRoZSBj
bGVhbnVwCisgICAgICAgIHdoaWNoIHdhcyBhbHJlYWR5IGFkZHJlc3NlZCBpbiB0aGUgbGFzdCBh
dHRhY2htZW50LgorCisgICAgICAgICogUXRXZWJLaXQucHJvOiBNb3ZlIGNvbW1vbiBMSUIgYW5k
IENPTkZJRyBvcHRpb25zIHRvIFdlYkNvcmUucHJpLgorCisyMDExLTAyLTIyICBBbmRyYXMgQmVj
c2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29t
Ym9zLgorCisgICAgICAgIFtRdF0gUmVkZXNpZ24gdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEzMzkKKworICAgICAgICBQ
YXJ0IDIuCisKKyAgICAgICAgQnVpbGQgV2ViQ29yZSBhcyBhIHN0YXRpYyBsaWJyYXJ5LCBjb21w
aWxlIHRoZSBXZWJLaXQgQVBJIGFuZCBXZWJLaXQyIEFQSQorICAgICAgICBpbiBhIGZpbmFsIHN0
ZXAgYW5kIGxpbmsgdG8gV2ViS2l0MiwgV2ViQ29yZSBhbmQgSlNDIGxpYnJhcmllcyB0byBmaXgK
KyAgICAgICAgbGlua2luZyBpc3N1ZXMgcmVzdWx0aW5nIGZyb20gc3RyaXBwZWQgYXdheSBzeW1i
b2xzLgorCisgICAgICAgICogUXRXZWJLaXQucHJvOiBBZGRlZC4KKyAgICAgICAgUHJvamVjdCBm
aWxlIGZvciB0aGUgZmluYWwgYnVpbGQgc3RlcC4KKworMjAxMS0wMi0xNyAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4K
KworICAgICAgICBSZW5hbWUgUG9zaXRpb246Om5vZGUoKSB0byBQb3NpdGlvbjo6ZGVwcmVjYXRl
ZE5vZGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTQ2MjIKKworICAgICAgICBSZXBsYWNlZCB0aGUgY2FsbCB0byBub2RlKCkgYnkgYSBjYWxsIHRv
IGNvbnRhaW5lck5vZGUoKSBiZWNhdXNlIHRoZSByZXR1cm5lZCBub2RlIGlzCisgICAgICAgIHVz
ZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBzZWxlY3RlZCBjb250ZW50cyBhcmUg
ZWRpdGFibGUgYW5kIHN1Y2ggYSBjaGVjaworICAgICAgICBtdXN0IGJlIGRvbmUgYWdhaW5zdCB0
aGUgY29udGFpbmVyIG5vZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6CisKKzIwMTEtMDItMTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCisKKyAgICAgICAgRW5z
dXJlIGxvYWRpbmcgaGFzIHN0b3BwZWQgaW4gSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDUxNworCisg
ICAgICAgIEFkZCBhIEZyYW1lTG9hZGVyQ2xpZW50IGNhbGxiYWNrIGZvciB3aGV0aGVyIHRvIHN0
b3AgbG9hZGluZyBiZWZvcmUgZ29Ub0l0ZW0uCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL2ZvcndhcmQtdG8tZnJhZ21lbnQtZmlyZXMtb25sb2FkLmh0bWwKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRl
bSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aDoKKworMjAxMS0wMi0xOCAgRmFicml6aW8gTWFjaGFkbyAgPGZhYnJpemlvLm1hY2hhZG9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFJl
bW92ZSByZWR1bnRhbnQgY2hlY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTQ3NjQKKyAgICAgICAgCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6dG9QYWdlKToK
KworMjAxMS0wMi0xOCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgW1F0XSBCdWlsZGZpeCBmb3IgcGxhdGZvcm1z
IHdpdGggZ2VvbG9jYXRpb24gZGlzYWJsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OiBBZGQgdGhlIG1pc3NpbmcgZ3VhcmQuCisKKzIwMTEtMDItMTggIE1haGVzaCBLdWxrYXJuaSAg
PG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgY2xpZW50IGJh
c2VkIGdlb2xvY2F0aW9uIGZvciBxdHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyNjI5CisKKyAgICAgICAgSW1wbGVtZW50cyBjbGllbnQgYmFz
ZWQgZ2VvbG9jYXRpb24gZm9yIHF0d2Via2l0LgorICAgICAgICBOZXcgY2xpZW50IGJhc2VkIGdl
b2xvY2F0aW9uIGNvbnRhaW5zIHBlcm1pc3Npb24gQVBJJ3MgYXMgd2VsbCwKKyAgICAgICAgc28g
cmVtb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBDaHJvbWVDbGllbnRRdC5jcHAuIAorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdl
YlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNhbmNlbEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
R2VvbG9jYXRpb25DbGllbnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnRRdDo6R2VvbG9jYXRpb25DbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbkNsaWVudFF0Ojp+R2VvbG9jYXRpb25DbGllbnRRdCk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudFF0OjpnZW9sb2NhdGlvbkRlc3Ryb3llZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudFF0Ojpwb3NpdGlvblVwZGF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudFF0OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50UXQ6OmNhbmNlbFBlcm1pc3Npb25S
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDo6bGFzdFBvc2l0
aW9uKToKKworMjAxMS0wMi0xMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAgICAgIEhU
TUw1IDxkZXRhaWxzPiBhbmQgPHN1bW1hcnk+OiBsb2NhbGl6ZWQgdGV4dAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyNjAKKworICAgICAgICBUaGUg
bWV0aG9kIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQgd2FzIGFkZGVkIHRvIExvY2FsaXphdGlv
blN0cmF0ZWd5IGNsYXNzLiBJdCBpcyB1c2VkIHRvCisgICAgICAgIHByb3ZpZGUgdGhlIGRlZmF1
bHQgbGFiZWwgdG8gYmUgdXNlZCBieSBhIDxkZXRhaWxzPiB0YWcgdGhhdCBoYXMgbm8gPHN1bW1h
cnk+IGNoaWxkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdERldGFpbHNT
dW1tYXJ5VGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisKKzIwMTEtMDItMTcgIEh1aSBIdWFuZyAgPGh1aS4yLmh1YW5nQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFRoZSBVUkwg
b2YgSFRNTDUgVmlkZW8gRWxlbWVudCBpcyBwZXJjZW50IGVuY29kZWQgYXQgd2Vic2l0ZXMgc3Vj
aCBhcyB5b3V0dWJlLgorICAgICAgICBJdCBpcyBwZXJjZW50IGVuY29kZWQgYWdhaW4gYnkgUVVy
bCBjb25zdHJ1Y3RvciBRVXJsOjpRVXJsKFFTdHJpbmcpLiBUaGlzIGNhdXNlcworICAgICAgICB0
aGUgSFRUUCBHRVQgcmVxdWVzdCBmb3IgdGhlIHZpZGVvIHRvIGJlIHJlamVjdGVkIGJ5IHRoZSBz
ZXJ2aWNlIHByb3ZpZGVyLiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUzOTczLgorCisgICAgICAgIFRoZSBidWcgaXMgZml4ZWQgYnkgY29uc3RydWN0
aW5nIFFVcmwgZnJvbSB0aGUgZW5jb2RlZCBVUkwgaW4gCisgICAgICAgIE1lZGlhUGxheWVyUHJp
dmF0ZVF0Ojpjb21taXRMb2FkLiAKKworICAgICAgICBOZXcgdGVzdCBmdW5jdGlvbiB0c3RfUVdl
YlBhZ2U6OmxvYWRIdG1sNVZpZGVvKCkgaXMgYWRkZWQgdG8gbG9hZCBIVE1MIGNvbnRlbnQgd2l0
aAorICAgICAgICBIVE1MNSBWaWRlbyBlbGVtZW50LiBBIG5ldyBwdWJsaWMgbWV0aG9kIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjptZWRpYUNvbnRlbnRVcmxCeUVsZW1lbnRJZAorICAgICAgICBp
cyBhZGRlZCB0byByZXRyaWV2ZSB0aGUgVVJMIG9mIHRoZSBtZWRpYSBjb250ZW50IGZyb20gV2Vi
Q29yZSBNZWRpYVBsYXllclByaXZhdGVRdC4KKyAgICAgICAgQSBuZXcgbWFjcm8gRU5BQkxFX1FU
X01VTFRJTUVESUEgaXMgaW50cm9kdWNlZCBpbiB0ZXN0cy5wcmkgdG8gbWFrZSBzdXJlIHRoYXQg
dGhlIHRlc3QKKyAgICAgICAgaXMgc2tpcHBlZCBpZiBRdCBNdWx0aW1lZGlhIGlzIG5vdCBhdmFp
bGFibGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bWVkaWFDb250ZW50VXJs
QnlFbGVtZW50SWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Lmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZEh0bWw1VmlkZW8pOgorICAgICAgICAqIHRlc3RzL3Rl
c3RzLnByaToKKworMjAxMS0wMi0xNyAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgW1F0XSBD
cmFzaCB3aGVuIGNhbGxpbmcgUVdlYkZyYW1lOjpzZXRVcmwoKSB3aGlsZSBhIHByZXZpb3VzIGxv
YWQgaGFzIHBlbmRpbmcgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ5MjE2CisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3
ZWJmcmFtZS5jcHA6CisKKz09IFJvbGxlZCBvdmVyIHRvIENoYW5nZUxvZy0yMDExLTAyLTE2ID09
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZy0yMDExLTAyLTE2IGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2ctMjAxMS0wMi0xNgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zYjY2ZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2ctMjAxMS0wMi0xNgpAQCAtMCwwICsxLDI5OTI3IEBACisyMDExLTAyLTE2ICBB
cGFybmEgTmFuZHlhbCAgPGFwYXJuYS5uYW5kQHdpcHJvLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gUVdlYkZyYW1lOiBXaGVuIGEgcmVs
YXRpdmUgdXJsIGlzIGxvYWRlZCB0aGVuIGl0IHdpbGwgbWFrZSBpdCBhYnNvbHV0ZSBpbnRlcm5h
bGx5LCBob3dldmVyIHRoaXMgc3RyaXBzIG91dCBhbnkgcXVlcnkvZnJhZ21lbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTQyNAorCisgICAgICAg
IGVuc3VyZUFic29sdXRlVXJsIGZ1bmN0aW9uIHdhcyBzdHJpcHBpbmcgdGhlIHF1ZXJ5IGFuZCB0
aGUKKyAgICAgICAgZnJhZ21lbnQgcGFydCBvZiB0aGUgdXJsLiBDb3JyZWN0ZWQgdGhpcy4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoZW5zdXJlQWJzb2x1dGVVcmwp
OgorCisyMDExLTAyLTE1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZC4KKworICAgICAgICBbUXRdW1Y4XSBCdWlsZGZpeC4gQWRkIG1p
c3NpbmcgVVNFKEpTQykgZ3VhcmQuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgor
CisyMDExLTAyLTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcg
bWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgIEFk
ZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIG5l
dworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2QuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAx
MS0wMS0yNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IEV4dHJhY3Qg
VGV4dENoZWNrZXJDbGllbnQgZnJvbSBFZGl0b3JDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjEzCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OnRleHRDaGVja2VyKToKKworMjAxMS0wMi0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBF
ZGl0b3JDbGllbnQgY2FsbGJhY2tzIHRvIG92ZXJyaWRlIGlzRE9NUGFzdGVBbGxvd2VkIGFuZCBq
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MjQxNworCisgICAgICAgIEFkZGVkIHR3byBjYWxsYmFjayBm
dW5jdGlvbnMsIGNhbkNvcHlDdXQgYW5kIGNhblBhc3RlIHRvIEVkaXRvckNsaWVudC4gVGhleSBh
cmUgY3VycmVudGx5CisgICAgICAgIG5vdCBpbXBsZW1lbnRlZC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0OjpjYW5Db3B5Q3V0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6Y2FuUGFzdGUpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oOgorCisyMDExLTAyLTE0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAg
ICBbUXRdIENyYXNoIG9uIGFwcGxpY2F0aW9uIGV4aXQgYWZ0ZXIgY29uc3RydWN0aW5nIGFuZCBk
ZXN0cm95aW5nIGEgUVdlYlZpZXcgdHdpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0MDAwCisKKyAgICAgICAgVGVzdCBjYXNlIHRvIGNvdmVyIHRo
ZSBjcmFzaC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OmRlbGV0ZVFXZWJWaWV3VHdpY2UpOgorCisyMDExLTAyLTEx
ICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxvc3RhcGVua28udmlhdGNoZXNsYXZAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgW1F0
XSB3bW9kZSBnZXRzIG92ZXJyaWRkZW4gZXZlbiBpZiBhbHJlYWR5IHdpbmRvd2xlc3MgaW4gUUdy
YXBoaWNzV2ViVmlldworICAgICAgICBEbyBub3Qgb3ZlcnJpZGUgd21vZGUgaWYgaXQgaXMgbm90
IHNldCB0byAid2luZG93Ii4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUwNDk1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0
ZVBsdWdpbik6CisKKzIwMTEtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVwZGF0ZSBj
YWxscyB0byBEb2N1bWVudFdyaXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUwNDg5CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJGcmFtZTo6c2V0VXJsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmZpbmlzaGVkTG9hZGluZyk6CisKKzIwMTEtMDItMTAgIEFkZW1hciBkZSBTb3V6YSBSZWlz
IEpyICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gRW5zdXJlIFdlYlZpZXcgcHJlc3MgZGVsYXkg
dGltZXIgaXMgY2FuY2VsbGVkIHdoZW4gZ3JhYiBpcyB0YWtlbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyNDIKKworICAgICAgICBBcyByZXBvcnRl
ZCBpbjoKKyAgICAgICAgaHR0cDovL2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dzZS9RVEJV
Ry0xNTUyOQorCisgICAgICAgIEZsaWNrYWJsZSBzdGVhbHMgdGhlIGdyYWIsIGJ1dCB0aGUgdGlt
ZXIgd2FzIG5vdCBzdG9wcGVkIGFuZCB0aGUKKyAgICAgICAga2VlcEdyYWIgZmxhZyBpcyBzZXQg
YW5kIHRoZSBtb3VzZSBncmFiYmVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlIFdlYlZpZXcKKyAgICAg
ICAgbm93IGhhcyB0aGUgZ3JhYiBhbmQgc3Vic2VxdWVudCBjbGlja3Mgb24gYW5vdGhlciBlbGVt
ZW50IGFyZSBpZ25vcmVkLgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGZyb20gTWFydGluIEpv
bmVzIDxtYXJ0aW4uam9uZXNAbm9raWEuY29tPgorICAgICAgICByZXZpZXdlZCAodGhlcmUpIGJ5
IEpvb25hIFBldHJlbGwKKyAgICAgICAgNTIwNjhmNTdmOWMzMjA5OGE5MGNjMjE3NzMwYTUzMGY4
NTU5MGY2NQorCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6
CisgICAgICAgIChHcmFwaGljc1dlYlZpZXc6OnNjZW5lRXZlbnQpOgorICAgICAgICAqIGRlY2xh
cmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXdfcC5oOgorCisyMDExLTAyLTEwICBBZGVtYXIgZGUg
U291emEgUmVpcyBKciAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIEZpeCBhc3NlcnQgaW4gUURl
Y2xhcmF0aXZlV2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQyNDAKKworICAgICAgICBBcyByZXBvcnRlZCBpbjoKKyAgICAgICAgaHR0cDov
L2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dzZS9RVEJVRy0xNDI3OAorCisgICAgICAgIElu
c3RhbnRpYXRpbmcgYSBRRGVjbGFyYXRpdmVXZWJWaWV3IHR3aWNlIHdpbGwgdHJpZ2dlciBhbiBh
c3NlcnRpb24KKyAgICAgICAgd2hlbiBpbiBkZWJ1ZyBtb2RlLgorCisgICAgICAgIE9yaWdpbmFs
IHBhdGNoIGZyb20gVGhvbWFzIEhhcnRtYW5uIDxUaG9tYXMuSGFydG1hbm5Abm9raWEuY29tPiwK
KyAgICAgICAgcmV2aWV3ZWQgKHRoZXJlKSBieSBBYXJvbiBLZW5uZWR5CisgICAgICAgIGY1MzI2
NzljYTExOTE0YjQ1M2UyMjM0MmYyYWU1ZTlmNzkwY2U0N2EKKworICAgICAgICAqIGRlY2xhcmF0
aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmll
dzo6aW5pdCk6CisKKzIwMTEtMDItMTAgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyICA8YWRlbWFy
LnJlaXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgorCisgICAgICAgIFtRdF0gTWlzYyBkb2N1bWVudGF0aW9uIGZpeGVzL3VwZGF0ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjM2CisKKyAgICAg
ICAgVGhlcmUgYXJlIGEgZmV3IGNvbW1pdHMgaW4gdGhlIFF0IHJlcG9zaXRvcnkgKG1hc3RlciBh
bmQgNC43IGJyYW5jaGVzKQorICAgICAgICB3aXRoIFF0V2ViS2l0IGRvY3VtZW50YXRpb24gZml4
ZXM6CisKKyAgICAgICAgODRkMjc4NTAxYTE5ZWFjY2Y5YTc3Y2NjZDk1Y2E1ZDE3YTJkY2QyYgor
ICAgICAgICBDbGFyaWZpZWQgZG9jdW1lbnRhdGlvbiBvZiBsb2FkRmluaXNoZWQoKSBzaWduYWwK
KworICAgICAgICBlZWJlMjA1YjMwNmRhYWEzNjc0ZDk3NDZkZTExYTczYmVmNGJkMGRlCisgICAg
ICAgIERvYzogRml4ZWQgUU1MLCB1bmluZGVudGVkIHNuaXBwZXQKKworICAgICAgICBiMGQ2NDcx
N2QyYzU0MTk3NmRjNTUyNGU0MTAwYzYyZjA2MGUyMDZmCisgICAgICAgIGRvYzogQ2hhbmdlZCBh
IHRhYmxlIGludG8gMyB0YWJsZXMgdG8gZWxpbWluYXRlIGEgXHJhdy4KKworICAgICAgICBBcyB0
aGVzZSBhcmUgYWxsIG1pbm9yIGRvYyBjaGFuZ2VzLCBJIGRlY2lkZWQgdG8gZ3JvdXAgdGhlbQor
ICAgICAgICBpbnRvIG9uZSBzaW5nbGUgcGF0Y2guCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorICAg
ICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKworMjAxMS0wMi0xMCAgQWRlbWFyIGRlIFNvdXph
IFJlaXMgSnIgIDxhZGVtYXIucmVpc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBSZW1vdmUgdGhlIHVzZSBvZiBkZXBy
ZWNhdGVkIHFWYXJpYW50KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQyMjkKKworICAgICAgICBUaGlzIHdhcyBhcHBsaWVkIG9uIHRoZSBRdCByZXBv
c2l0b3J5IGFuZCBhZmZlY3RzIFF0V2ViS2l0IHRoZXJlLgorICAgICAgICAoNjMzZjNmNDVlNTQy
MDY2M2NmNGNlYWRlYTc5ZTYyZmVhNDRjZDJlYikKKworICAgICAgICBUaGUgc2lkZSBlZmZlY3Qg
b2YgdGhpcyBjaGFuZ2UgaXMgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGJ1aWxkCisgICAgICAg
IFF0V2ViS2l0IHdpdGggTVNWQyA2LCBhcyBpdCBkb2Vzbid0IHN1cHBvcnQgbWVtYmVyIHRlbXBs
YXRlIGZ1bmN0aW9ucworICAgICAgICAobm90IHN1cmUgaWYgaXQncyBwb3NzaWJsZSB0b2RheSBh
bnl3YXkpLgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGZyb20gT2xpdmllciBHb2ZmYXJ0IDxv
bGl2aWVyLmdvZmZhcnRAbm9raWEuY29tPiwgd2l0aAorICAgICAgICByZXZpZXcgcmVwb3J0ZWQg
YXMgYmVpbmcgZnJvbSB0aGUgbWFpbGluZyBsaXN0LgorCisgICAgICAgIFRoZSBjaGFuZ2VzIGFy
ZSByZXN1bHQgb2YgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKworICAgICAgICAgICAgZ2l0IGdy
ZXAgLU8ic2VkIC1pICdzL3FWYXJpYW50VmFsdWU8L3F2YXJpYW50X2Nhc3Q8LyciIHFWYXJpYW50
VmFsdWUKKyAgICAgICAgICAgIGdpdCBncmVwIC1PInNlZCAtaSAncy9xVmFyaWFudFNldFZhbHVl
KFwoW14mKlwoKSxdKlwpLCAqL1xcMS5zZXRWYWx1ZSgvJyIgcVZhcmlhbnRTZXRWYWx1ZQorICAg
ICAgICAgICAgZ2l0IGdyZXAgLU8ic2VkIC1pICdzL3FWYXJpYW50U2V0VmFsdWUgKjxcKFtePl0q
XCk+ICooXChbXiYqXCgpLF0qXCksICovXFwyLnNldFZhbHVlPFxcMT4oLyciIHFWYXJpYW50U2V0
VmFsdWUKKyAgICAgICAgICAgIGdpdCBncmVwIC1PInNlZCAtaSAncy9xVmFyaWFudENhbkNvbnZl
cnQgKjxcKFtePl0qXCk+ICooXChbXiYqXCgpLF0qXCkpL1xcMi5jYW5Db252ZXJ0PFxcMT4oKS9n
JyIgcVZhcmlhbnRDYW5Db252ZXJ0CisgICAgICAgICAgICBnaXQgZ3JlcCAtTyJzZWQgLWkgJ3Mv
cVZhcmlhbnRDYW5Db252ZXJ0ICo8XChbXj5dKlwpPiAqKFwoW14mKlwoKSxdKihbXiYqXCgpLF0q
KVwpKS9cXDIuY2FuQ29udmVydDxcXDE+KCkvZyciIHFWYXJpYW50Q2FuQ29udmVydAorICAgICAg
ICAgICAgZ2l0IGdyZXAgLU8ic2VkIC1pICdzL3FWYXJpYW50RnJvbVZhbHVlXCggKlsoPF1cKS9R
VmFyaWFudDo6ZnJvbVZhbHVlXFwxLyciIHFWYXJpYW50RnJvbVZhbHVlCisKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChNeVFPYmplY3Q6Om15SW52b2th
YmxlV2l0aFFPYmplY3RMaXN0QXJnKToKKyAgICAgICAgKE15UU9iamVjdDo6bXlJbnZva2FibGVX
aXRoTGlzdE9mSW50QXJnKToKKyAgICAgICAgKE15UU9iamVjdDo6bXlJbnZva2FibGVXaXRoUU9i
amVjdFN0YXJBcmcpOgorICAgICAgICAoTXlRT2JqZWN0OjpteUludm9rYWJsZVdpdGhRQnJ1c2hB
cmcpOgorICAgICAgICAoTXlRT2JqZWN0OjpteUludm9rYWJsZVdpdGhCcnVzaFN0eWxlQXJnKToK
KyAgICAgICAgKE15UU9iamVjdDo6bXlJbnZva2FibGVXaXRoVm9pZFN0YXJBcmcpOgorICAgICAg
ICAoTXlRT2JqZWN0OjpteUludm9rYWJsZVdpdGhBbWJpZ3VvdXNBcmcpOgorICAgICAgICAoTXlR
T2JqZWN0OjpteUludm9rYWJsZVdpdGhEZWZhdWx0QXJncyk6CisgICAgICAgIChNeVFPYmplY3Q6
Om15SW52b2thYmxlV2l0aFBvaW50QXJnKToKKyAgICAgICAgKE15UU9iamVjdDo6bXlPdmVybG9h
ZGVkU2xvdCk6CisKKzIwMTEtMDItMTAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBS
ZXR1cm4gbWVudSBpdGVtcyBmcm9tIGV2ZW50U2VuZGVyLmNvbnRleHRNZW51KCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDM5CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChp
dGVyYXRlQ29udGV4dE1lbnUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNv
bnRleHRNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oOgorCisyMDExLTAyLTEwICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBb
UXRdIEluIHRydW5rIHdpdGggUXQgTXVsdGltZWRpYSB0aGUgZnVsbCBzY3JlZW4gbW9kZSBkb2Vz
bid0IHdvcmsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDIwMQorCisgICAgICAgIEFkZCBhIGRlZmF1bHQgZnVsbHNjcmVlbiBoYW5kbGVyIHdoZW4g
dGhlcmUgaXMgbm8gcGxhZnRmb3JtIHBsdWdpbgorICAgICAgICBpbnN0YWxsZWQuIFRoaXMgaGFu
ZGxlciBjcmVhdGVzIGEgZnVsbHNjcmVlbiBRVmlkZW9XaWRnZXQgYW5kIHBsYXlzCisgICAgICAg
IHRoZSB2aWRlby4gU3BhY2UgcGF1c2UvcmVzdW1lIHRoZSB2aWRlbyBwbGF5YmFjayBhbmQgZXNj
IHF1aXQgdGhlCisgICAgICAgIGZ1bGxzY3JlZW4gbW9kZS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRG
dWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkRlZmF1bHRG
dWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyOjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxT
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6
OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjpG
dWxsU2NyZWVuVmlkZW9RdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZp
ZGVvUXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9XaWRnZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1dpZGdldDo6RnVs
bFNjcmVlblZpZGVvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1dp
ZGdldDo6fkZ1bGxTY3JlZW5WaWRlb1dpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2Ny
ZWVuVmlkZW9XaWRnZXQ6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVv
V2lkZ2V0OjpjbG9zZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1dp
ZGdldDo6ZXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvV2lkZ2V0Ojpr
ZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1dpZGdldDo6
aGlkZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6OnNo
b3dDdXJzb3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdl
dC5oOiBBZGRlZC4KKworMjAxMS0wMi0xMCAga2FzdGh1cmkgIDxrYXN0aHVyaS5uLXNAbm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgW1F0
XSBRV2ViRnJhbWU6OnNldEh0bWwgZG9lc24ndCBlbWl0IGxvYWRGaW5pc2hlZCBzaWduYWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NjM0CisKKyAg
ICAgICAgUVdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldEh0bWwoaHRtbCkgaXMgYWx3
YXlzIGVtaXR0aW5nCisgICAgICAgIHRoZSBsb2FkRmluaXNoZWQoKSBzaWduYWwgZm9yIGFsbCB0
eXBlcyBvZiBodG1sIGZpbGVzLgorICAgICAgICBCdXQgdGhlIHByb3Bvc2VkIHRlc3QgY29udGVu
dCB3YXMgdHJ5aW5nIHRvIGNhdGNoIHRoZSBzaWduYWwgYWZ0ZXIKKyAgICAgICAgY2FsbGluZyBz
ZXRIdG1sKCkgYXBpIGFuZCBiZWN1YXNlIG9mIHRoaXMgdGhlIGVtaXR0ZWQgc2lnbmFsIGZvciBh
IAorICAgICAgICBzaW1wbGUgaHRtbCBwYWdlIGlzIG5ldmVyIGNhdWdodCBhcyBpdHMgZW1pdHRl
ZCBiZWZvcmUgZXZlbiB0aGUgY29ubmVjdAorICAgICAgICBjYWxsIHdhcyBzdWNjZXNzZnVsLgor
CisgICAgICAgIHVwZGF0ZWQgdGhlIHRzdF9RV2ViRnJhbWU6OnNldEh0bWwoKSBpbiB0c3RfcXdl
YmZyYW1lLmNwcCB0byBjaGVjayBmb3IgCisgICAgICAgIHNpZ25hbCB1c2luZyB0aGUgUVNpZ25h
bFNweS4KKyAgICAgICAgIAorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwOgorCisyMDExLTAyLTA5ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCisKKyAgICAgICAgW1F0
XSBSRUdSRVNTSU9OIChyNzM1MzUpOiB0c3RfUVdlYlBhZ2UgZmFpbHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzMxCisKKyAgICAgICAgU2luY2Ug
cjczNTM1IGEgQ29udGV4dE1lbnUgaXMgb25seSBjcmVhdGVkIHdoZW4gYSBjb250ZXh0IG1lbnUK
KyAgICAgICAgZXZlbnQgaXMgcmVjZWl2ZWQsIHNvIFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRl
cGVuZGVudEFjdGlvbnMoKQorICAgICAgICBjYW4ndCBkZXBlbmQgb24gb25lIGJlaW5nIHRoZXJl
IGlmIGl0IGlzIGNhbGxlZCBkaXJlY3RseSBieQorICAgICAgICB0aGUgY2xpZW50LiBRdFdlYktp
dCBpdHNlbGYgb25seSBldmVyIGNhbGxzIHVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucygp
CisgICAgICAgIHdoZW4gYSBjb250ZXh0IG1lbnUgZXZlbnQgaGFzIGJlZW4gcmVjZWl2ZWQuCisK
KyAgICAgICAgVXBkYXRlIHRzdF9RV2ViUGFnZTpjb250ZXh0TWVudUNyYXNoIHRvIGNyZWF0ZSBh
IGNvbnRleHQgbWVudS4KKyAgICAgICAgQWRkIHRzdF9RV2ViUGFnZTp1cGRhdGVQb3NpdGlvbkRl
cGVuZGVudEFjdGlvbnNDcmFzaCB0byB0ZXN0IGZvciB0aGlzIGNyYXNoLgorCisgICAgICAgIFRo
ZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGdvb2QgcmVhc29uIGZvciBjcmVhdGluZyBhIGNvbnRl
eHQgbWVudSBpZgorICAgICAgICBjbGllbnRzIGNhbGwgUVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9u
RGVwZW5kZW50QWN0aW9ucygpIHdoZW4gbm8KKyAgICAgICAgY29udGV4dCBtZW51IGV2ZW50IGhh
cyBldmVyIGJlZW4gcmVjZWl2ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y29u
dGV4dE1lbnVDcmFzaCk6CisKKzIwMTEtMDItMDkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAg
W1F0XSBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWxpbmtzLWFuZC10ZXh0Lmh0bWwgY3Jhc2hlcyBp
biBkZWJ1ZyBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MzkyMQorCisgICAgICAgIFFEUlROb2RlIG5lZWRzIGEgY29weSBjb25zdHJ1Y3RvciBh
bmQgYW4gb3BlcmF0b3I9IGluIG9yZGVyIHRvIGtlZXAKKyAgICAgICAgcHJvcGVyIHJlZmNvdW50
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKDptX25vZGUpOgorICAgICAgICAoUURSVE5vZGU6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMS0wMi0w
OCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFJlbW92ZSBvcnBoYW4gY29kZSBmcm9tIG9sZCBwYXJz
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzOTg0
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDExLTAy
LTA3ICBBcGFybmEgTmFuZHlhbCAgPGFwYXJuYS5uYW5kQHdpcHJvLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gLSBDb250ZXh0IG1lbnUg
bmVlZHMgIkNvcHkiIGFzIHdlbGwgd2hlbiB0aGUgc2VsZWN0ZWQgdGV4dCBpcyBhIGxpbmsuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDk4MworCisg
ICAgICAgIEFkZGVkIGEgdGVzdCBjYXNlIHRvIGNyZWF0ZSBhIGNvbnRleHQgc2Vuc2l0aXZlIG1l
bnUuCisgICAgICAgIEEgY2hlY2sgaXMgbWFkZSBpZiBpdCBoYXMgQ29weSBtZW51IGl0ZW0gd2hl
biB1c2VyCisgICAgICAgIHNlbGVjdHMgYSBsaW5rIGFuZCBvcGVucyBjb250ZXh0IG1lbnUuCisK
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjpjb250ZXh0TWVudUNvcHkpOgorCisyMDExLTAyLTA3ICBCZW5qYW1pbiBQb3Vs
YWluICA8aWtpcG91QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIGNvb2tpZXNFbmFibGVkIGNvdWxkIGNy
ZWF0ZSB0aGUgY29va2llSmFyIG9uIHRoZSB3cm9uZyB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjI4OQorCisgICAgICAgIFRlc3QgaWYg
dGhlIGNvb2tpZSBqYXIgaXMgY3JlYXRlZCBpbiB0aGUgcmlnaHQgdGhyZWFkIHdoZW4gYWNjZXNz
ZWQgZnJvbQorICAgICAgICB0aGUgbmF2aWdhdG9yIG9iamVjdC4KKworICAgICAgICAqIHRlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6Om5hdmln
YXRvckNvb2tpZUVuYWJsZWRGb3JOZXR3b3JrQWNjZXNzTWFuYWdlck9uRGlmZmVyZW50VGhyZWFk
KToKKworMjAxMS0wMi0wNyAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gZW51bSBRV2Vi
UGFnZTo6V2ViQWN0aW9uIGRvZXNuJ3QgaGF2ZSB2YWx1ZSBRV2ViUGFnZTo6Q29weUltYWdlVXJs
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk3NAor
CisgICAgICAgIEFkZCBRV2ViUGFnZTo6Q29weUltYWdlVXJsVG9DbGlwYm9hcmQgaW50byBRV2Vi
UGFnZTo6V2ViQWN0aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KHdlYkFjdGlvbkZvckNvbnRleHRNZW51QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmln
Z2VyQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjphY3Rpb24pOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRh
Z0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKworMjAxMS0wMi0wNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJp
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIEFkYW0gUm9iZW4gYW5kIERhcmluIEFk
bGVyLgorCisgICAgICAgIFdlYktpdDI6IGRyYWcgYW5kIGRyb3Agc3VwcG9ydCBvbiBXaW5kb3dz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3NzUK
KworICAgICAgICBSZW1vdmVkIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsgZnJvbSBEcmFnQ2xpZW50
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaDoKKworMjAxMS0wMi0wNiAgUm9iZXJ0IEhv
Z2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KKworICAgICAgICBbUXRdIFJlbW92ZSB1bm5lY2Vzc2FyeSBRUmVjdCBhc3NpZ25tZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mzg3Mwor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRl
OjpyZW5kZXJSZWxhdGl2ZUNvb3Jkcyk6CisKKzIwMTEtMDItMDYgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisK
KyAgICAgICAgW1F0XSBDbGVhciBwYWdlJ3MgZ3JvdXBOYW1lIGV2ZW4gd2hlbiBub3QgaW4gRFJU
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mzg3NAor
CisgICAgICAgIE1hdGNoZXMgYmVoYXZpb3VyIG9mIG90aGVyIHBvcnRzLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OmNsb3NlV2luZG93U29vbik6CisKKzIwMTEtMDItMDMgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgc2V0dGluZ3MgcmVsYXRl
ZCBtZXRob2RzIGZyb20gSW5zcGVjdG9yQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzY4NgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKworMjAxMS0wMi0wMyAgQWRhbSBMYW5nbGV5
ICA8YWdsQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgor
CisgICAgICAgIFBsdW1iIG1peGVkIHNjcmlwdCBVUkwgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzg0CisKKyAg
ICAgICAgUmVncmVzc2lvbnMgY292ZXJlZCBieSBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29u
dGVudC8qCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJl
Q29udGVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
OgorCisyMDExLTAyLTAxICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZGZpeCBhZnRlciByNzcyODYuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNTIwIAorICAgICAgICBS
ZW1vdmUgdGhlIHBoeXNpY2FsIHRlcm1pbm9sb2d5IGZyb20gSW50UmVjdCBhbmQgRmxvYXRSZWN0
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBNZW51UXQ6OnNob3cpOgorCisyMDExLTAxLTMxICBObydhbSBSb3NlbnRo
YWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBRV2ViRWxlbWVudHMgZXhh
bXBsZSBmcm9tIFF0V2ViS2l0IEJyaWRnZSBkb2N1bWVudGF0aW9uIGRvZXMgbm90IHdvcmsgYXQg
YWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Njc0
OAorCisgICAgICAgIFByb2JsZW0gd2FzIHRoYXQgd2UgbmVlZCB0byByZWdpc3RlciBRV2ViRWxl
bWVudCdzIHZhcmlhbnQtdHlwZSB0byBRdCdzIG1ldGEgdHlwZSBzeXN0ZW0gYXQgc29tZSBwb2lu
dC4KKyAgICAgICAgVGhpcyB3YXNuJ3QgY2F1Z2h0IGJ5IHByZXZpb3VzIHRlc3RzIGluc2lkZSB0
c3RfUVdlYkZyYW1lIGJlY2F1c2UgaXQgb25seSBhcHBlYXJzIHdoZW4gdGhlcmUncyBhbHNvIGEg
UVdlYkVsZW1lbnQgcHJvcGVydHkuCisgICAgICAgIEFkZGVkIGEgcmVncmVzc2lvbiB0ZXN0IHRv
IHRzdF9RV2ViRnJhbWUuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChNeVdlYkVsZW1lbnRTbG90T25seU9iamVjdDo6ZG9Tb21ldGhpbmdX
aXRoV2ViRWxlbWVudCk6CisgICAgICAgIChNeVdlYkVsZW1lbnRTbG90T25seU9iamVjdDo6dGFn
TmFtZSk6CisKKzIwMTEtMDEtMzEgIFNyaWt1bWFyIEJvbmRhICA8c3Jpa3VtYXIuYkBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRd
IENvbnRleHRNZW51Q2xpZW50UXQuY3BwIGhhcyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAg
ICJSZWZDb3VudGVkLmgiIGhlYWRlciBpbmNsdXNpb24gc3R5bGUgY2hhbmdlZCB0byA8d3RmL1Jl
ZkNvdW50ZWQuaD4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDI0MworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRR
dC5jcHA6CisKKzIwMTEtMDEtMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIDxzZWxlY3Q+IGNhbid0
IGRpc3BsYXkgcmlnaHQtdG8tbGVmdCAocnRsKSBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzg1CisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6c2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbik6IEFk
ZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMTEt
MDEtMjcgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVzZSBEb2N1bWVudDo6dXJsKCkgaW5zdGVh
ZCBvZiBGcmFtZUxvYWRlcjo6dXJsKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MTE2NQorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnVybCk6CisKKzIwMTEtMDEtMjcgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFuZHJlYXMgS2xp
bmcuCisKKyAgICAgICAgW1F0XSBTdHlsZSBGaXg6IGNvcnJlY3QgaW5kZW50YXRpb24gaW4gRnJh
bWVMb2FkZUNsaWVudFF0OmNyZWF0ZVBsdWdpbgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDExLTAxLTI0ICBDaHJpcyBNYXJyaW4gIDxjbWFy
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAg
ICAgICBDaGFuZ2UgRU5BQkxFXzNEX0NBTlZBUyB0byBFTkFCTEVfV0VCR0wKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDQxCisKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5
KToKKworMjAxMS0wMS0yNCAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFFXZWJGcmFt
ZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vcmRzKCkgY2FsbHMgUVBhaW50ZXI6OnNhdmUvcmVz
dG9yZSBtb3JlIHRoYW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTkxNQorCisgICAgICAgIEluIHRoZSBmaXJzdCBsb29wIG9mIHJl
bmRlclJlbGF0aXZlQ29vcmRzKCkgdGhlIGNhbGwgb2YgUVBhaW50ZXI6OnNhdmUvcmVzdG9yZSBp
cyB1c2VsZXNzLCBiZWNhdXNlCisgICAgICAgIHRoZSBjb250ZXh0IGlzIHNhdmVkL3N0b3JlZCB3
aXRoaW4gdGhlIGxvb3AuCisgICAgICAgIEluIHRoZSBzZWNvbmQgbG9vcCB0aGUgY2FsbHMgYXJl
IGFsc28gYXZvaWRhYmxlIGJ5IHVzaW5nIGludmVyc2UgdHJhbnNsYXRpb24gb24gY29udGV4dC4K
KworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0
ZTo6cmVuZGVyUmVsYXRpdmVDb29yZHMpOgorCisyMDExLTAxLTI0ICBBbmRyYXMgQmVjc2kgIDxh
YmVjc2lAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27D
oWMuCisKKyAgICAgICAgW1F0XSBNb3ZlIHByb2plY3QgZmlsZXMgaW50byBTb3VyY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyODkxCisKKyAgICAg
ICAgKiBkZWNsYXJhdGl2ZS9kZWNsYXJhdGl2ZS5wcm86CisgICAgICAgICogZG9jcy9kb2NzLnBy
aToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6CisKKzIwMTEtMDEtMjIgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVs
IEZlbGRtYW4uCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogbmV4dCBzdGVwIGluIHNwbGl0dGlu
ZyBJbnNwZWN0b3JDb250cm9sbGVyLgorCisgICAgICAgICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiIHdhcyBhZGRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI5NTUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
clNlcnZlclF0LmNwcDoKKworMjAxMS0wMS0yMiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBb
UXRdIFN1cHBvcnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuYWRkVVJMVG9SZWRpcmVjdCgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjk1NgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVSTFRvUmVkaXJlY3QpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDExLTAxLTIxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uLgorCisgICAgICAgIFBhcnQgMiBvZiAiQ2xlYW51cCBTY3JvbGxiYXIvU2Nyb2xsYmFy
Q2xpZW50IHJlbGF0aW9uc2hpcCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUyNzc5CisKKyAgICAgICAgUmVuYW1lIFNjcm9sbGJhckNsaWVudCAtPiBT
Y3JvbGxhYmxlQXJlYS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAo
UVdlYkZyYW1lOjpzZXRTY3JvbGxCYXJWYWx1ZSk6CisKKzIwMTEtMDEtMjAgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggYnVpbGQuCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0U2Nyb2xsQmFyVmFsdWUpOgor
CisyMDExLTAxLTIwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4
IGJ1aWxkLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OnNldFNjcm9sbEJhclZhbHVlKToKKworMjAxMS0wMS0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCisKKyAgICAgICAg
Q2xlYW51cCBTY3JvbGxiYXIvU2Nyb2xsYmFyQ2xpZW50IHJlbGF0aW9uc2hpcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3NzkKKworICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRTY3JvbGxCYXJWYWx1
ZSk6CisKKzIwMTEtMDEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBHcmFwaGljc0xh
eWVycyBpbiBzdWJmcmFtZXMgY2FuIGdldCBzeW5jJ2QgbXVsdGlwbGUgdGltZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDg5CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNsaWVudFFXaWRnZXQ6OnN5bmNMYXllcnMpOiBzeW5jQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2
ZSgpCisgICAgICAgIHdhcyByZW5hbWVkIHRvIHN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5n
U3ViZnJhbWVzKCkuCisKKzIwMTEtMDEtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zIGFuZCBUb3IgQXJu
ZSBWZXN0YsO4LgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHVubmVjZXNzYXJ5ICIuLi9Tb3VyY2Ui
IGZyb20gcGF0aHMKKyAgICAgICAgYWZ0ZXIgbW92aW5nIHNvdXJjZSBmaWxlcyBpbnRvIFNvdXJj
ZSBpcyBmaW5pc2hlZC4KKworICAgICAgICAqIEFwaS9EZXJpdmVkU291cmNlcy5wcm86CisKKzIw
MTEtMDEtMTggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gaHR0cC90ZXN0cy9pbmNy
ZW1lbnRhbC9zbG93LXV0ZjgtdGV4dC5wbCBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQyODIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpyZXNwb25zZU1pbWVUeXBlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDExLTAxLTE3ICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MjQ5NQorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6IChRV2ViRnJh
bWU6OnByaW50KTogQXZvaWQgYnJlYWtpbmcgdGhlIGJ1aWxkIGR1ZSB0byB0eXBlIG1pc21hdGNo
LgorICAgICAgICBMb25nZXIgdGVybSwgdGhpcyBjb2RlIHNob3VsZCBiZSBjaGFuZ2VkIHRvIHVz
ZSBhbiB1bnNpZ25lZCB0eXBlIGZvciBwYWdlIGNvdW50LgorCisyMDExLTAxLTE3ICBZaSBTaGVu
ICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgIFtRdF0gRXh0ZW5kIHRoZSBQbGF0Zm9ybSBQbHVnaW4gdG8gc3VwcG9y
dCBmdWxsIHNjcmVlbiB2aWRlbyBoYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTI0OQorCisgICAgICAgIEFkZCBhIG5ldyB3ZWJraXQgcGxh
dGZvcm0gcGx1Z2luIGludGVyZmFjZSB0byBzdXBwb3J0IGZ1bGwgc2NyZWVuIHZpZGVvIGhhbmRs
ZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChR
V2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6UVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgor
ICAgICAgICAoUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5RV2ViRnVsbFNjcmVlblZpZGVv
SGFuZGxlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmZ1bGxTY3JlZW5WaWRlbyk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6ZW50ZXJGdWxsc2NyZWVu
Rm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6ZXhpdEZ1bGxzY3Jl
ZW5Gb3JOb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6
CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3Jl
ZW5Gb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjphYm91dFRv
Q2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjptZWRpYVBsYXllckZvck5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNj
cmVlbkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3Jl
ZW5WaWRlb1F0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6
OmlzVmFsaWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5o
OgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHA6CisgICAg
ICAgIChGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6OkZ1bGxTY3JlZW5WaWRlb1dpZGdldCk6CisgICAg
ICAgIChGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6OmV2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5W
aWRlb1dpZGdldDo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyOjpGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXI6On5GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXI6OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAo
RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKEZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYlBsdWdpbjo6
c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViUGx1Z2luOjpjcmVhdGVFeHRlbnNpb24p
OgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oOgorICAgICAg
ICAoRnVsbFNjcmVlblZpZGVvV2lkZ2V0Ojp+RnVsbFNjcmVlblZpZGVvV2lkZ2V0KToKKyAgICAg
ICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAg
ICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAg
ICAgIChRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6UVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRs
ZXIpOgorICAgICAgICAoUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5RV2ViRnVsbFNjcmVl
blZpZGVvSGFuZGxlcik6CisKKzIwMTEtMDEtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAg
ICBNb3ZlIFdlYktpdCBpbnRvIFNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI1MzAKKworICAgICAgICAqIEFwaS9EZXJpdmVkU291cmNlcy5w
cm86CisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOgorICAgICAgICAqIGRv
Y3MvZG9jcy5wcmk6CisgICAgICAgICogdGVzdHMvdGVzdHMucHJpOgorCisyMDExLTAxLTE1ICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByNzU3MDguCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0Lzc1NzA4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MjUyMQorCisgICAgICAgIEJyZWFrcyBRdCBidWlsZCBpZiBtb2JpbGl0eSBp
cyBub3QgaW5zdGFsbGVkLiAoUmVxdWVzdGVkIGJ5CisgICAgICAgIGJlbmphbWlucCBvbiAjd2Vi
a2l0KS4KKworICAgICAgICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9R
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVv
UXQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2lu
LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmg6CisgICAg
ICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAoV2ViUGx1Z2luOjpjcmVhdGVF
eHRlbnNpb24pOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5o
OgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRmb3JtcGx1Z2luLnBybzoK
KyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4u
aDoKKworMjAxMS0wMS0xNSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
W1F0XSBwbHVnaW5zL25vLW1pbWUtd2l0aC12YWxpZC1leHRlbnNpb24uaHRtbCBmYWlscworICAg
ICAgICBDaGVjayBleHRlbnNpb24gb2YgcmVzb3VyY2UgYWdhaW5zdCBpbnN0YWxsZWQKKyAgICAg
ICAgcGx1Z2lucyB3aGVuIGRldGVybWluaW5nIG1pbWUtdHlwZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIyODgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNjU3CisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKworMjAxMS0wMS0xNCAgU2FtIE1h
Z251c29uICA8c21hZ251c29AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gQ29tcGlsZSB3aXRoIFFUX05P
X0dSQVBISUNTVklFVworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDk3NTAKKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZTo6ZXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisKKzIwMTEtMDEtMTQgIFl1em8gRnVqaXNoaW1hICA8eXV6
b0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisg
ICAgICAgIFJlbmFtZSBjYWNoZSgpIHRvIG1lbW9yeUNhY2hlKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDMzCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpfcV9jbGVhbnVwTGVha01lc3Nh
Z2VzKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPYmpl
Y3RDYWNoZUNhcGFjaXRpZXMpOgorCisyMDExLTAxLTE0ICBLb25zdGFudGluIFRva2FyZXYgIDxh
bm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgor
CisgICAgICAgIFtRdF0gRml4ZWQgY29tcGlsYXRpb24gd2hlbiBRVF9OT19TSE9SVENVVCBpcyBk
ZWZpbmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MjQ2MAorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgY29tcGlsYXRpb24gd2hlbiBRVF9OT19T
SE9SVENVVCBpcyBkZWZpbmVkIGluIFF0CisgICAgICAgIGNvbmZpZ3VyYXRpb24uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IEFkZGVkIFFUX05PX1NIT1JU
Q1VUIGd1YXJkcworCisyMDExLTAxLTEzICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxvc3RhcGVu
a28udmlhdGNoZXNsYXZAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIFtRdF0gTmVlZCBhIHdheSB0byBpbmZvcm0gdGhlIGFwcGxpY2F0
aW9uIHdoZW4gYSBOZXRzY2FwZSBwbHVnaW4gaXMgY3JlYXRlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTc5CisKKyAgICAgICAgQWRkZWQgImMi
IHN0eWxlIHN0YXRpYyBtZXRob2QgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBob29rIHVwIGZvcgor
ICAgICAgICByZWNlaXZpbmcgbm90aWZpY2F0aW9ucyB3aGVuIGEgcGx1Z2luIGlzIGNyZWF0ZWQu
CisKKyAgICAgICAgKiBzeW1iaWFuL2J3aW5zL1F0V2ViS2l0dS5kZWY6CisgICAgICAgICogc3lt
Ymlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTEtMDEtMTMgIFlpIFNoZW4gIDx5aS40LnNo
ZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFtRdF0gRXh0ZW5kIHRoZSBQbGF0Zm9ybSBQbHVnaW4gdG8gc3VwcG9ydCBmdWxsIHNj
cmVlbiB2aWRlbyBoYW5kbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MTI0OQorCisgICAgICAgIEFkZCBhIG5ldyB3ZWJraXQgcGxhdGZvcm0gcGx1
Z2luIGludGVyZmFjZSB0byBzdXBwb3J0IGZ1bGwgc2NyZWVuIHZpZGVvIGhhbmRsZXIuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViRnVsbFNj
cmVlblZpZGVvSGFuZGxlcjo6UVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorICAgICAgICAo
UVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5RV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcik6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0Ojp+Q2hyb21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OmZ1bGxTY3JlZW5WaWRlbyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2Rl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6On5GdWxsU2NyZWVuVmlkZW9RdCk6CisgICAgICAg
IChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZW50ZXJGdWxsU2NyZWVuRm9yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuVmlkZW9RdDo6ZXhpdEZ1bGxTY3JlZW5Gb3JOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjphYm91dFRvQ2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5WaWRlb1F0OjptZWRpYVBsYXllckZvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZp
ZGVvUGxheWJhY2spOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlblZpZGVvUXQ6OmlzVmFsaWQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxl
cik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oOgorICAgICAg
ICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHA6CisgICAgICAgIChGdWxs
U2NyZWVuVmlkZW9XaWRnZXQ6OkZ1bGxTY3JlZW5WaWRlb1dpZGdldCk6CisgICAgICAgIChGdWxs
U2NyZWVuVmlkZW9XaWRnZXQ6OmV2ZW50KToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb1dpZGdl
dDo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5G
dWxsU2NyZWVuVmlkZW9IYW5kbGVyKToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6
OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2spOgorICAgICAgICAoRnVsbFNjcmVl
blZpZGVvSGFuZGxlcjo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKEZ1bGxTY3JlZW5WaWRl
b0hhbmRsZXI6OmV4aXRGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYlBsdWdpbjo6c3VwcG9ydHNF
eHRlbnNpb24pOgorICAgICAgICAoV2ViUGx1Z2luOjpjcmVhdGVFeHRlbnNpb24pOgorICAgICAg
ICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oOgorICAgICAgICAoRnVsbFNj
cmVlblZpZGVvV2lkZ2V0Ojp+RnVsbFNjcmVlblZpZGVvV2lkZ2V0KToKKyAgICAgICAgKiBleGFt
cGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAgICogZXhhbXBs
ZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2Vi
RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6UVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIpOgorICAg
ICAgICAoUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5RV2ViRnVsbFNjcmVlblZpZGVvSGFu
ZGxlcik6CisKKzIwMTEtMDEtMTIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFtRdF0gU2VhcmNoIGlucHV0IGZpZWxkIGRvZXNuJ3QgaGF2ZSBjYW5jZWwgYnV0dG9uCisK
KyAgICAgICAgQWRkIGEgY2FuY2VsIGJ1dHRvbiB0byB0aGUgc2VhcmNoIGZpZWxkIGFuZCBtYWtl
IGl0IGN1c3RvbWl6YWJsZQorICAgICAgICBieSB0aGUgY2xpZW50LiBGb3Igbm93LCB1c2UgdGhl
IGNsb3NlIGRpYWxvZyBidXR0b24gYXNzb2NpYXRlZAorICAgICAgICB3aXRoIHRoZSBhcHBsaWNh
dGlvbidzIHN0eWxlIGFzIHRoZSBkZWZhdWx0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg4NworCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChncmFwaGljcyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5o
OgorCisyMDExLTAxLTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNzQzNDQuCisgICAgICAgIGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzc0MzQ0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjI5MAorCisgICAgICAgIGJyb2tlIFFXZWJQ
bHVnaW5GYWN0b3J5IGZvciB1bnVzdWFsIG1pbWUtdHlwZXMgKFJlcXVlc3RlZCBieQorICAgICAg
ICBrbGluZyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
Y3JlYXRlUGx1Z2luKToKKworMjAxMS0wMS0xMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4u
dHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHVzZXMgb2YgUUZ1dHVyZSBzaW5j
ZSBpdCBpc24ndCBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMjA0CisKKyAgICAgICAgKiB0ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUXROQU1UaHJlYWQ6OlF0TkFNVGhy
ZWFkKToKKyAgICAgICAgKFF0TkFNVGhyZWFkOjpuZXR3b3JrQWNjZXNzTWFuYWdlcik6CisgICAg
ICAgIChRdE5BTVRocmVhZDo6cnVuKToKKworMjAxMS0wMS0xMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRml4IHRzdF9RV2ViUGFnZTo6
Z2VvbG9jYXRpb25SZXF1ZXN0SlMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDY4MTQKKworICAgICAgICBTa2lwIHRoZSB0ZXN0IHdoZW4gV2ViS2l0
IGlzIGNvbXBpbGVkIHdpdGhvdXQgZ2VvbG9jYXRpb24uCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpnZW9sb2NhdGlv
blJlcXVlc3RKUyk6CisKKzIwMTEtMDEtMTAgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21i
b3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4K
KworICAgICAgICBbUXRdIEJhc2VsaW5lIHF0X21pbmltYWwgY29uZmlndXJhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEzMTMKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudVF0OjpzaG93KTogQWRkIFFUX05PX0NPTUJPQk9YIGd1YXJkLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOiBBZGQgUVRfTk9fVE9PTFRJUCBndWFyZC4K
KworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDogQWRkIFFUX05P
X0NPTUJPQk9YIGd1YXJkLgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5j
cHA6CisgICAgICAgIChQbHVnaW5QYWdlOjpjcmVhdGVQbHVnaW4pOiBBZGQgUVRfTk9fSU5QVVRE
SUFMT0cgZ3VhcmQuCisKKzIwMTEtMDEtMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbnRyb2R1
Y2UgdGhlIG5vdGlvbiBvZiBhICJkaXNwbGF5LWlzb2xhdGVkIiBVUkwgc2NoZW1lIGZvciB1c2Ug
YnkKKyAgICAgICAgQ2hyb21lLWludGVybmFsIFVSTHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTgyCisKKyAgICAgICAgVXBkYXRlIHRvIG5ldyBm
dW5jdGlvbiBuYW1lLgorCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6Cisg
ICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmxvY2FsU2NoZW1lcyk6CisKKzIwMTEtMDEtMTAg
IEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRd
IE5hdmlnYXRvci5jb29raWVzRW5hYmxlZCByZXR1cm4gdHJ1ZSBmb3IgUXQgZXZlbiBpZiB0aGVy
ZSBpcyBubyBjb29raWUgamFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MjA4MQorCisgICAgICAgIEFkZCBhbiBhdXRvdGVzdCBmb3IgY2hlY2tpbmcg
dGhlIHJlc3VsdCBvZiBOYXZpZ2F0b3IuY29va2llc0VuYWJsZWQgZGVwZW5kaW5nCisgICAgICAg
IG9uIHRoZSBzdGF0dXMgb2YgdGhlIGNvb2tpZSBqYXIuCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpuYXZpZ2F0b3JD
b29raWVFbmFibGVkKToKKworMjAxMS0wMS0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc1MzM3
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83NTMzNworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIxMzcKKworICAgICAg
ICBJdCBtYWRlIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIGNyYXNo
CisgICAgICAgIChSZXF1ZXN0ZWQgYnkgT3NzeSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHRl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisKKzIwMTEtMDEtMDkgIFhpYW56aHUgV2Fu
ZyA8cGhuaXh3eHpAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hl
ci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0
NDEKKyAgICAgICAgY3JlYXRlV2luZG93IG1ldGhvZCBzaG91bGQgb25seSBkbyB3aW5kb3ctY3Jl
YXRpbmcgd2l0aG91dCBVUkwgbmF2aWdhdGlvbgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVh
dGVXaW5kb3cpOgorCisyMDExLTAxLTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91
bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBOYXZpZ2F0b3IuY29va2llc0VuYWJsZWQgcmV0dXJu
IHRydWUgZm9yIFF0IGV2ZW4gaWYgdGhlcmUgaXMgbm8gY29va2llIGphcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwODEKKworICAgICAgICBBZGQg
YW4gYXV0b3Rlc3QgZm9yIGNoZWNraW5nIHRoZSByZXN1bHQgb2YgTmF2aWdhdG9yLmNvb2tpZXNF
bmFibGVkIGRlcGVuZGluZworICAgICAgICBvbiB0aGUgc3RhdHVzIG9mIHRoZSBjb29raWUgamFy
LgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KHRzdF9RV2ViUGFnZTo6bmF2aWdhdG9yQ29va2llRW5hYmxlZCk6CisKKzIwMTEtMDEtMDcgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBNb3ZlIFdlYkNvcmUgdG8gU291cmNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjA1MAorCisgICAgICAg
IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmVyZW5jZSBuZXcgbG9jYXRpb24gb2YgV2ViQ29y
ZS4KKworICAgICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKworMjAxMS0wMS0wNyAgQW5kcmVh
cyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KKworICAgICAgICBbUXRdIEFkZCBzZWxlY3RlZEh0bWwgZnVuY3Rpb24gdG8gUVdlYlZp
ZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDI4
CisKKyAgICAgICAgQWRkIFFXZWJWaWV3OjpzZWxlY3RlZEh0bWwoKSBhbmQgUVdlYlBhZ2U6OnNl
bGVjdGVkSHRtbCgpCisgICAgICAgIHdoaWNoIHJldHVybiB0aGUgY3VycmVudCBzZWxlY3Rpb24g
cmFuZ2UncyBIVE1MIHJlcHJlc2VudGF0aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZWxlY3RlZEh0bWwpOgorICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6
c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJWaWV3OjpzZWxlY3RlZEh0bWwpOgorICAgICAg
ICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFn
ZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmN1cnNvck1vdmVtZW50cyk6CisgICAgICAg
ICh0c3RfUVdlYlBhZ2U6OnRleHRTZWxlY3Rpb24pOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpj
cmFzaFRlc3RzX0xhenlJbml0aWFsaXphdGlvbk9mTWFpbkZyYW1lKToKKyAgICAgICAgKHRzdF9R
V2ViUGFnZTo6ZmluZFRleHQpOgorCisyMDExLTAxLTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAg
ICAgIFtRdF0gSW50cm9kdWNlIFFEUlROb2RlIGZvciBwYXNzaW5nIFdlYkNvcmU6Ok5vZGUgYWNy
b3NzIEpTIGJyaWRnZQorCisgICAgICAgIFRoaXMgYWxsb3dzIExheW91dFRlc3RDb250cm9sbGVy
IHRvIHBhc3MgV2ViQ29yZTo6Tm9kZSBiYWNrIHRvCisgICAgICAgIGxheW91dCB0ZXN0cy4KKwor
ICAgICAgICBBbHNvIGFtZW5kIG5vZGVzRnJvbVJlY3QtbGlua3MtYW5kLXRleHQuaHRtbCBhbmQK
KyAgICAgICAgbm9kZXNGcm9tUmVjdC1pbm5lci1kb2N1bWVudHMuaHRtbCBzbyB0aGF0IHRoZXkg
ZG8gbm90IHByb2R1Y2UKKyAgICAgICAgcGxhdGZvcm0tc3BlY2lmaWMgcmVzdWx0cy4KKworICAg
ICAgICBVbnNraXA6CisgICAgICAgIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QtbGlua3MtYW5kLXRl
eHQuaHRtbAorICAgICAgICBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWlubmVyLWRvY3VtZW50cy5o
dG1sCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4
OTU3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHA6CisgICAgICAgIChRRFJUTm9kZTo6UURSVE5vZGUpOgorICAgICAgICAoUURSVE5vZGU6On5R
RFJUTm9kZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bm9kZXNGcm9tUmVj
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoK
KworMjAxMS0wMS0wNCAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5p
bj4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKyAgICAgICAgQWNrZWQg
YnkgQWFyb24gS2VubmVkeSA8YWFyb24ua2VubmVkeUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBRTUwgV2ViVmlldyBkb2VzIG5vdCB0cmFuc2ZlciBmb2N1cyB0byB1bmRlcmx5aW5nIFFHcmFw
aGljc1dlYlZpZXcKKworICAgICAgICBRTUwgV2ViVmlldyBjcmVhdGVzIFFHcmFwaGljc1dlYlZp
ZXcgYXMgaXQncyBjaGlsZC4gVGhlIFdlYlZpZXcgaXMgbm90CisgICAgICAgIHNldHVwIGFzIGEg
Zm9jdXMgcHJveHkgb2YgdGhlIFFHcmFwaGljc1dlYlZpZXcuIFRodXMsIGV2ZW4gdGhvdWdoIHRo
ZQorICAgICAgICBXZWJWaWV3IGdldHMgZm9jdXMsIHRoZSBRR3JhcGhpY3NXZWJWaWV3IGRvZXMg
bm90IGdldCBmb2N1cy4KKyAgICAgICAgSW4gUU1MLCBmb2N1cyBwcm94aWVzIG9yICJmb2N1cyBz
Y29wZXMiIGFyZSBjcmVhdGVkIHVzaW5nIEZvY3VzU2NvcGUuCisgICAgICAgIFRoaXMgY2hhbmdl
IG1ha2VzIFdlYlZpZXcgYSBGb2N1c1Njb3BlIGFuZCBzZXRzIHRoZSBmb2N1cyBvbiB0aGUKKyAg
ICAgICAgUUdyYXBoaWNzV2ViVmlldy4gCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUxMDk0CisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9xZGVjbGFy
YXRpdmV3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OmluaXQpOgor
CisyMDExLTAxLTA1ICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gU3luYyBxd2Via2l0cGxh
dGZvcm1wbHVnaW4uaCBpbiB0aGUgcGx1Z2luIGV4YW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxODgyCisKKyAgICAgICAgTWFrZSBleGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaCBleGFjdGx5IHRoZSBzYW1l
CisgICAgICAgIGFzIHRoZSBvbmUgaW4gdGhlIEFwaSBmb2xkZXIuCisKKyAgICAgICAgKiBleGFt
cGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKworMjAxMS0wMS0w
NCAgWmhlIFN1ICA8c3V6aGVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUnVzc2VsbC4KKworICAgICAgICBGaXggdGVzdCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9pbWUtY29tcG9zaXRpb24tZXZlbnRzLTAwMS5odG1sLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTY5MworCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6IENh
bGxzIGVkaXRvci0+aW5zZXJ0VGV4dCgpIHRvCisgICAgICAgIGluc2VydCB0aGUgY29tbWl0IHN0
cmluZyB3aGVuIG5vIGNvbXBvc2l0aW9uIHRleHQgaXMgYXZhaWxhYmxlLgorCisyMDExLTAxLTAz
ICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgorCisgICAgICAgIFtRdF0gQWRkIFNlbGVjdEFsbCBvcHRpb24gdG8gdGhlIGNv
bnRleHQgbWVudSBmb3IgdGhlIGVkaXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTAwNDkKKworICAgICAgICBFbmFibGUgU2VsZWN0QWxsIGZvciB0
aGUgUXQgY29udGV4dCBtZW51LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKHdlYkFjdGlvbkZvckNvbnRleHRNZW51QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjph
Y3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ1Nl
bGVjdEFsbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisKKzIwMTEtMDEtMDMgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAg
ICAgICBVbnJldmlld2VkIGNyYXNoIGZpeC4KKworICAgICAgICBGb2xsb3cgdXAgb2Ygcjc0ODkx
OiBwb3RlbnRpYWwgY3Jhc2ggZml4IChib2d1cyBhc3NlcnRpb24pLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdG9y
Q29tbWFuZEZvcktleURvd25FdmVudCk6CisKKzIwMTEtMDEtMDMgIE5vYW0gUm9zZW50aGFsICA8
bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCisKKyAgICAgICAgW1F0XSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCguLi4pIGRvZXNu
J3QgcmV0dXJuIHRoZSByaWdodCBvYmplY3QgaW4gY29tYmluYXRpb24gd2l0aCBRR3JhcGhpY3NX
aWRnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUx
NDY0CisKKyAgICAgICAgQWRkZWQgYSB3YXkgdG8gYmluZCBhbnkgUU9iamVjdCBjcmVhdGVkIGFz
IGEgcGx1Z2luIHRvIEphdmFTY3JpcHQsIAorICAgICAgICBieSBhZGRpbmcgYSBjdXN0b20gbWVt
YmUgdG8gV2ViQ29yZTo6V2lkZ2V0LiAKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRvIG1ha2Ugc3Vy
ZSBwbHVnaW5zIGNyZWF0ZWQgYXMgUUdyYXBoaWNzV2lkZ2V0IGFyZSAKKyAgICAgICAgYWNjZXNz
aWJsZSB0aHJvdWdoIEphdmFTY3JpcHQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUGx1Z2luUGFnZTo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKHRz
dF9RV2ViUGFnZTo6Z3JhcGhpY3NXaWRnZXRQbHVnaW4pOgorCisyMDExLTAxLTAyICBBbnRvbmlv
IEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBSZWZhY3RvciBFZGl0b3JDbGllbnRR
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTEzMDYKKworICAgICAgICBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5
Ym9hcmRFdmVudCByZWxpZXMgb24gUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlF
dmVudCgpCisgICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBh
IFFBY3Rpb24gYXNzb2NpdGVkIHdpdGggaXQuCisgICAgICAgIEluIHByYWN0aWNlLCB0aGF0IGNv
dmVycyBtb3N0IG9mIGVkaXRvciBjb21tYW5kcyAoYXMgb25lIGNhbiBzZWUgaW4gZWRpdG9yQ29t
bWFuZFdlYkFjdGlvbnMsCisgICAgICAgIGluIHF3ZWJwYWdlLmNwcCkuIEhvd2V2ZXIsIHRoZXJl
IGFyZSBzb21lIGtleSBkb3duIGV2ZW50cyB0aGF0IGFyZSBhc3NvY2lhdGVkIHRvIG5vIFFBY3Rp
b24KKyAgICAgICAgb3IgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gZmVhdHVyZXMgbGlrZSBz
cGF0aWFsIG5hdmlnYXRpb24gb3IKKyAgICAgICAgY2FyZXQgYnJvd3NpbmcgYXJlIGVuYWJsZWQu
IEN1cnJlbnRseSwgdGhlc2UgY2FzZXMgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aCBjb25mdXNpbmcK
KyAgICAgICAgYW5kIG5lc3RlZCBpZi9lbHNlIHN3aXRjaCdzIHN0YXRlbWVudHMgaW4gRWRpdG9y
Q2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoKSwKKyAgICAgICAgYW5kIHRoZSBjb2RlIGlz
IGhhcmRseSByZWFkYWJsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBtYXBw
aW5nIGhhc2ggZm9yIHRob3NlIGNhc2VzLCBzaW1wbGlmeWluZyBtdWNoCisgICAgICAgIHRoZSBj
b2RlLiBCYXNpY2FsbHksIG5lc3RlZCBzd2l0Y2hlcyBzdGF0ZW1lbnRzIG1peGVkIHdpdGggaWYv
ZWxzZSdzIHdlcmUKKyAgICAgICAgcmVmYWN0b3JlZCwgYW5kIGVhcmx5IHJldHVybnMgd2VyZSBh
ZGRlZCByaWdodCBhZnRlciBhbiBldmVudCBnZXRzIGNvbnN1bWVkCisgICAgICAgIGJ5IHRoZSBF
ZGl0b3IuCisKKyAgICAgICAgU2luY2UgaXQgaXMgYSByZWZhY3RvciBvbmx5IHBhdGNoLCB0aGVy
ZSBpcyBubyBmdW5jaW9uYWxpdHkgY2hhbmdlIGF0CisgICAgICAgIGFsbCwgYW5kIHRoZW4gbm8g
bmV3IHRlc3RzIGFyZSBiZWluZyBhZGRlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludGVycHJldEtleUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KworMjAxMS0wMS0wMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIE1vdmUgSmF2YVNjcmlwdENvcmUg
dG8gU291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTYwNAorCisgICAgICAgICogV2ViS2l0X3BjaC5oOgorICAgICAgICAqIGRvY3MvcXR3ZWJr
aXQucWRvY2NvbmY6CisgICAgICAgICAgLSBQb2ludCB0byBKYXZhU2NyaXB0Q29yZSBpbiBpdHMg
bmV3IGxvY2F0aW9uLgorCisyMDEwLTEyLTI5ICBLZW50IEhhbnNlbiAgPGtlbnQuaGFuc2VuQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBbUXRdIEZpeCBjb21waWxhdGlvbiB3aXRoIFF0IGluIG5hbWVzcGFjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE3MDEKKworICAgICAgICAqIEFw
aS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JTZXJ2ZXJRdC5oOgorICAgICAgICAqIHRlc3RzL2h5YnJpZFBpeG1hcC93aWRnZXQuaDoK
KworMjAxMC0xMi0yMyAgSmFuIEVyaWsgSGFuc3NlbiAgPGpoYW5zc2VuQHNlbmNoYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBbUXRd
IENvbXBvc2l0aW9uIHRleHQgaXMgbm90IHJlbW92ZWQgZnJvbSB0aGUgZWRpdG9yIHdoZW4gY29t
cG9zaXRpb24gaXMgY2FuY2VsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTM5MQorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSBjb21wb3NpdGlv
biB0ZXh0IGlzIGNsZWFyZWQgd2hlbiBhbiBlbXB0eSBRSW5wdXRNZXRob2RFdmVudAorICAgICAg
ICBpcyByZWNlaXZlZCBhbmQgdGhlIGVkaXRvciBpcyBpbiBjb21wb3NpdGlvbiBtb2RlLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5w
dXRNZXRob2RFdmVudCk6CisKKzIwMTAtMTItMjMgIEphbiBFcmlrIEhhbnNzZW4gIDxqaGFuc3Nl
bkBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAg
ICAgICAgW1F0XSBjb3B5IGFuZCBwYXN0ZSBncmVlayBzeW1ib2xzIHRvIFdvcmQsIFRleHRFZGl0
IHJlc3VsdHMgaW4gPydzIGJlaW5nIHNob3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNTYzNQorCisgICAgICAgIFRlc3QgdGhhdCBRQ2xpcGJvYXJk
IGNvbnRhaW5zIHRoZSBjaGFyc2V0IGluZm9ybWF0aW9uIGFuZCB1bmljb2RlIGRhdGEKKyAgICAg
ICAgYWZ0ZXIgY29weWluZyB1bmljb2RlIHRleHQuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjptYWNDb3B5VW5pY29k
ZVRvQ2xpcGJvYXJkKToKKworMjAxMC0xMi0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlYktpdDIg
bmVlZHMgdG8gbWlycm9yIHRoZSBmcmFtZSB0cmVlIGluIHRoZSBVSVByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNTQ2CisKKyAgICAgICAg
LSBBZGQgY2xpZW50IGZ1bmN0aW9ucyB0byBub3RpZnkgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGFk
ZGVkIG9yCisgICAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlIGNhY2hlLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRTYXZlVG9QYWdlQ2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAxMC0x
Mi0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBFZGl0b3IuaCBkb2Vzbid0IG5lZWQgdG8gaW5j
bHVkZSBTZWxlY3Rpb25Db250cm9sbGVyLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUxNDQxCisKKyAgICAgICAgUmVuYW1lZCBTZWxlY3Rpb25Db250
cm9sbGVyOjpFRGlyZWN0aW9uIHRvIFNlbGVjdGlvbkRpcmVjdGlvbi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAxMC0xMi0yMyAgRGF3aXQgQWxl
bWF5ZWh1ICA8YWRhd2l0QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBBZGQgYSAnaGFzU2VsZWN0aW9uJyBm
dW5jdGlvbiB0byBRV2ViVmlldyBhbmQgUVdlYlBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODcyMgorCisgICAgICAgIFRoaXMgaXMgYSBjb252
ZW5pZW5jZSBBUEkgdGhhdCBvcHRpbWl6ZXMgdGhlIGNhc2Ugd2hlcmUgY2hlY2tpbmcgZm9yCisg
ICAgICAgIHRoZSBwcmVzZW5jZSBvZiBzZWxlY3RlZCBjb250ZW50IGFuZCBhY2Nlc3NpbmcgdGhl
IHNlbGVjdGVkIGNvbnRlbnQKKyAgICAgICAgYXJlIHR3byBzZXBhcmF0ZSBhY3Rpb25zIGluIHRo
ZSBjbGllbnQuIFNlZSBjb21tZW50ICMxMiBpbiB0aGUgYWJvdmUKKyAgICAgICAgYnVnIHJlcG9y
dCBsaW5rIGZvciBkZXRhaWxzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlOjpoYXNTZWxlY3Rpb24pOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgor
ICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6aGFzU2VsZWN0
aW9uKToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0ZXh0U2VsZWN0aW9u
KToKKworMjAxMC0xMi0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
W1F0XSBJbXByb3ZlIHRoZSByZWFkYWJpbGl0eSBvZiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVh
dGVQbHVnaW4oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTEzMzAKKworICAgICAgICBSZWRlZmluZSB0aGUgc2NvcGVzIHRvIGltcHJvdmUgcmVhZGFi
aWxpdHkuIE9iamVjdHMgYXJlIG5vdyBjcmVhdGVkIGluCisgICAgICAgIHRoZSBzY29wZSB0aGV5
IGFyZSB1c2VkIGluLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQ
bHVnaW4pOgorCisyMDEwLTEyLTE3ICBBcml5YSBIaWRheWF0ICA8YXJpeWFAc2VuY2hhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFtRdF0gR3Jh
cGhpY3NDb250ZXh0IHNob3VsZCByZXNwZWN0IFFXZWJWaWV3IHJlbmRlciBoaW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEyMDgKKworICAgICAg
ICBBZGp1c3QgdGhlIHRlc3Qgc2luY2UgU21vb3RoUGl4bWFwVHJhbnNmb3JtIGlzIHNldCBieSBk
ZWZhdWx0LgorCisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViVmlldzo6cmVuZGVySGludHMpOgorCisyMDEwLTEyLTA1ICBBbnRvbmlv
IEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlk
YXlhdC4KKworICAgICAgICBbUXRdIEZpeCBjYXJldCBicm93c2luZyBuYXZpZ2F0aW9uIG1vZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNTM2CisK
KyAgICAgICAgQ2FyZXQgYnJvd3NpbmcgY2FuIGNvbnN1bWUgZWRpdGluZyBjb21tYW5kcyBldmVu
IHdoZW4gdGhlIHN0YXJ0CisgICAgICAgIG9mIGN1cnJlbnQgc2VsZWN0aW9uIGlzIG5vdCBhIGVk
aXRhYmxlIGNvbnRlbnQuIHI2OTU4MiBtaXNzZWQgdGhpcworICAgICAgICBjYXNlIGJlY2F1c2Ug
Y2FyZXQgYnJvd3NpbmcgZmVhdHVyZSB0ZXN0aW5nIGlzIHZlcnkgcG9vciB0b2RheS4KKworICAg
ICAgICBUaGlzIGNvbW1pdCByZWludHJvZHVjZXMgcGFydCBvZiB0aGUgcmVtb3ZlZCBjb2RlIGlu
IHI2OTU4MiBidXQKKyAgICAgICAgZ3VhcmRlZCBieSBhIGlzQ2FyZXRCcm93c2luZ0VuYWJsZWQo
KSBjaGVjay4gTm8gcmVncmVzc2lvbiBmb3VuZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAxMC0xMi0xNyAgWWkgU2hlbiAgPHlpLjQuc2hlbkBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgW1F0XSBRV2ViUGFnZSBzZW5kcyBvdXQgYSBSZXF1ZXN0U29mdHdhcmVJ
bnB1dFBhbmVsIGV2ZW50IAorICAgICAgICBpbmNvcnJlY3RseSBpbiBwYXJ0aWN1bGFyIGNhc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDE5CisK
KyAgICAgICAgQWRkIEhpdFRlc3RSZXN1bHQgY2hlY2sgYmVmb3JlIGZpcmluZyBSZXF1ZXN0U29m
dHdhcmVJbnB1dFBhbmVsIGV2ZW50LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZV9wLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKGNsaWNrT25QYWdlKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRo
b2RzKToKKworMjAxMC0xMi0xNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc0MjI5LgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC83NDIyOQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA1MzYKKworICAgICAgICBCcm9rZW4gb24gU25vdyBMZW9w
YXJkIGFuZCBwb3NzaWJseSBvdGhlciBwbGF0Zm9ybXMKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAxMC0xMi0wNSAgQW50b25pbyBHb21lcyAgPGFn
b21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAg
ICAgICAgW1F0XSBGaXggY2FyZXQgYnJvd3NpbmcgbmF2aWdhdGlvbiBtb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDUzNgorCisgICAgICAgIENh
cmV0IGJyb3dzaW5nIGNhbiBjb25zdW1lIGVkaXRpbmcgY29tbWFuZHMgZXZlbiB3aGVuIHRoZSBz
dGFydAorICAgICAgICBvZiBjdXJyZW50IHNlbGVjdGlvbiBpcyBub3QgYSBlZGl0YWJsZSBjb250
ZW50LiByNjk1ODIgbWlzc2VkIHRoaXMKKyAgICAgICAgY2FzZSBiZWNhdXNlIGNhcmV0IGJyb3dz
aW5nIGZlYXR1cmUgdGVzdGluZyBpcyB2ZXJ5IHBvb3IgdG9kYXkuCisKKyAgICAgICAgVGhpcyBj
b21taXQgcmVpbnRyb2R1Y2VzIHBhcnQgb2YgdGhlIHJlbW92ZWQgY29kZSBpbiByNjk1ODIgYnV0
CisgICAgICAgIGd1YXJkZWQgYnkgYSBpc0NhcmV0QnJvd3NpbmdFbmFibGVkKCkgY2hlY2suIE5v
IHJlZ3Jlc3Npb24gZm91bmQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6CisKKzIwMTAtMTItMTYgIEFyaXlhIEhpZGF5YXQgIDxhcml5YUBzZW5jaGEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBH
cmFwaGljc0NvbnRleHQgc2hvdWxkIHJlc3BlY3QgUVdlYlZpZXcgcmVuZGVyIGhpbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTIwOAorCisgICAg
ICAgIEFkZCBzb21lIGNoZWNrcyB0byBlbnN1cmUgdGhhdCBHcmFwaGljc0NvbnRleHQgKHZpYSBR
V2ViRnJhbWUpCisgICAgICAgIGRvZXMgbm90IGNsb2JiZXIgdGhlIHJlbmRlciBoaW50cy4KKwor
ICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlld1ByaXZhdGU6OlFX
ZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUu
Y3BwOgorCisyMDEwLTEyLTE1ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFtR
dF0gRml4IHRzdF9RV2ViUGFnZTo6Z2VvbG9jYXRpb25SZXF1ZXN0SlMoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4MTQKKworICAgICAgICBDaGFu
Z2UgdGhlIHRlc3QgY2FzZSBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBieQor
ICAgICAgICByNzI2MDMgYW5kIGVuYWJsZSB0aGUgdGVzdCBjYXNlLgorCisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Z2Vv
bG9jYXRpb25SZXF1ZXN0SlMpOgorCisyMDEwLTEyLTE0ICBWaWF0Y2hlc2xhdiBPc3RhcGVua28g
IDxvc3RhcGVua28udmlhdGNoZXNsYXZAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBGbGFzaCBwbHVnaW5zIHNob3VsZCBiZSB3
aW5kb3dsZXNzIG9uIFFHcmFwaGljc1dlYlZpZXcgb24gU3ltYmlhbgorICAgICAgICBSZW1vdmUg
I2lkZWYgU1lNQklBTiBpbnRyb2R1Y2VkIGJ5IHI2OTM5Ni4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDg3CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIwMTAtMTAtMjggIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4K
KworICAgICAgICBzcGVsbGNoZWNrIGRvZXMgbm90IGNoZWNrIHBhc3RlZCB0ZXh0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA5MgorCisgICAgICAg
IEFkZGVkIGEgc3R1YiBpbXBsZW1lbW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKToKKworMjAxMC0xMi0xMSAgWWkgU2hlbiAgPHlpLjQuc2hl
bkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4uCisKKyAgICAgICAgW1F0XSBNZW1vcnkgbGVha3MgZm9yIFFXZWJQYWdlQ2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDI2NworCisg
ICAgICAgIFVzZSBPd25QdHIgdG8gc29sdmUgdGhpcyBtZW1vcnkgbGVhayBpc3N1ZS4KKworICAg
ICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZp
ZXdQcml2YXRlOjpvdmVybGF5KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpR
V2ViVmlld1ByaXZhdGU6OnBhZ2VDbGllbnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1By
aXZhdGU6OnN5bmNMYXllcnMpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnVw
ZGF0ZVJlc2l6ZXNUb0NvbnRlbnRzRm9yUGFnZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
UHJpdmF0ZTo6X3Ffc2NhbGVDaGFuZ2VkKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2
YXRlOjpkZXRhY2hDdXJyZW50UGFnZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXdQcml2YXRlOjpkZXRh
Y2hDdXJyZW50UGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnBsYXRmb3JtUGFnZUNsaWVu
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKworMjAxMC0xMi0xMSAg
SmFuIEVyaWsgSGFuc3NlbiAgPGpoYW5zc2VuQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFFXZWJGcmFtZSBkb2VzIG5vdCBz
dXBwb3J0IFFOZXR3b3JrUmVxdWVzdDo6Q2FjaGVMb2FkQ29udHJvbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU2NzEKKworICAgICAgICBNYWtlIFFX
ZWJGcmFtZSByZXNwZWN0IHRoZSBRTmV0d29ya1JlcXVlc3Q6OkNhY2hlTG9hZENvbnRyb2wgYXR0
cmlidXRlCisgICAgICAgIHNldCBvbiB0aGUgcmVxdWVzdCwgaWYgYW55LgorCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChjYWNoZUxvYWRDb250cm9sVG9DYWNoZVBvbGlj
eSk6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFt
ZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAxMC0xMC0xMSAgRGllZ28gR29uemFsZXogIDxkaWVn
b2hjZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gTW9jayBEZXZpY2VPcmllbnRhdGlvbiBjbGllbnQg
Zm9yIERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc0OTAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9ja1F0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2tRdDo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9ja1F0OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tRdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tRdDo6fkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9ja1F0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9ja1F0OjpzZXRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9ja1F0OjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9ja1F0OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrUXQ6Omxhc3RPcmllbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tRdDo6ZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9ja1F0OjpzZXRPcmllbnRhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrUXQuaDogQWRkZWQuCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdC5jcHA6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdDo6RGV2aWNlT3JpZW50YXRpb25Q
cm92aWRlclF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJR
dDo6fkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvblByb3ZpZGVyUXQ6OmNoYW5nZURldmljZU9yaWVudGF0aW9uKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6YWN0aXZlTW9ja0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVNb2NrRGV2aWNl
T3JpZW50YXRpb24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuaDoKKworMjAxMC0xMi0xMCAgS3JpdGhpZ2Fzc3JlZSBTYW1iYW11cnRoeSAg
PGtyaXRoaWdhc3NyZWUuc2FtYmFtdXJ0aHlAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBCdWcgNDM0NTUgLSBbUXRdOiBJbXBsZW1l
bnQgQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ1NQorCisgICAgICAgIEFkZGVkIG5ldyBzaWduYWwgdG8g
cmVwb3J0IEFwcGxpY2F0aW9uQ2FjaGUgRGF0YWJhc2UKKyAgICAgICAgcXVvdGEuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorCisgICAg
ICAgIEFkZGVkIG5ldyBmdW5jdGlvbnMgdG8gYWNjb21vZGF0ZSBuZXcgYXBwY2FjaGUgbGF5b3V0
CisgICAgICAgIHRlc3Qgb3JpZ2luLXF1b3RhLmh0bWwuCisKKyAgICAgICAgKiBBcGkvcXdlYnNl
Y3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6c2V0QXBwbGlj
YXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVhckFsbEFwcGxpY2F0aW9uQ2Fj
aGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
OgorCisyMDEwLTEyLTEwICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGEgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIGFmZmluZWQg
dG8gYSBkaWZmZXJlbnQgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTAwODAKKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZSB0aHJl
YWQgc2FmZSBwcm94eSBjbGFzc2VzIGZvciBRTmV0d29ya0FjY2Vzc01hbmFnZXIKKyAgICAgICAg
YW5kIFFOZXR3b3JrUmVwbHkuCisgICAgICAgIElmIHJ1biBpbiB0aGUgc2FtZSB0aHJlYWQsIHRo
ZXNlIG9iamVjdHMgd2lsbCBmb3J3YXJkIHRoZSBjYWxscyB3aXRoCisgICAgICAgIFF0OjpEaXJl
Y3RDb25uZWN0aW9uIGJpbmRpbmdzLCB3aGlsZSBpbiB0aGUgb3RoZXIgY2FzZSB0aGV5IHdpbGwg
dXNlCisgICAgICAgIFF0OjpRdWV1ZWRDb25uZWN0aW9uIHRvIGNhcnJ5IHJlcXVlc3RzIGFjY3Jv
c3MgdGhyZWFkcy4KKworICAgICAgICBUaGlzIHBhdGNoIGJhc2ljYWxseToKKyAgICAgICAgLSBN
YWtlcyBzdXJlIHRoYXQgYWxsIGFjY2VzcyBnb2VzIHRocm91Z2ggdGhlc2Ugb2JqZWN0cworICAg
ICAgICAtIFJlb3JkZXJzIHNpZ25hbCBjb25uZWN0aW9ucyB0byBtYWtlIHN1cmUgd2UgYXJlIGNv
bm5lY3RlZCB3aGVuIHRoZQorICAgICAgICAgIHNpZ25hbCBjb21lcworICAgICAgICAtIE1ha2Vz
IHN1cmUgdGhhdCBubyBRT2JqZWN0IGluIHRoZSBXZWJDb3JlIHRocmVhZCBpcyBhIGNoaWxkIG9m
IHRoZQorICAgICAgICAgIHJlcGx5IHdoaWNoIG1pZ2h0IGJlIGluIGEgZGlmZmVyZW50IHRocmVh
ZC4KKyAgICAgICAgLSBGb3J3YXJkIHRoZSBkYXRhIGRpcmVjdGx5IGluIFFCeXRlQXJyYXlzIGlu
IHNpZ25hbHMgaW5zdGVhZCBvZiBjb2xsZWN0aW5nCisgICAgICAgICAgdGhlIGRhdGEgd2hlbiB0
aGUgc2lnbmFsIGlzIGhhbmRsZWQuCisKKyAgICAgICAgTmV3IHRlc3Q6IHRzdF9RV2ViUGFnZTo6
bmV0d29ya0FjY2Vzc01hbmFnZXJPbkRpZmZlcmVudFRocmVhZAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFF0TkFNVGhyZWFkOjpRdE5BTVRocmVhZCk6CisgICAg
ICAgIChRdE5BTVRocmVhZDo6flF0TkFNVGhyZWFkKToKKyAgICAgICAgKFF0TkFNVGhyZWFkOjpu
ZXR3b3JrQWNjZXNzTWFuYWdlcik6CisgICAgICAgIChRdE5BTVRocmVhZDo6cnVuKToKKyAgICAg
ICAgKHRzdF9RV2ViUGFnZTo6bmV0d29ya0FjY2Vzc01hbmFnZXJPbkRpZmZlcmVudFRocmVhZCk6
CisKKzIwMTAtMTItMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MzYzNS4KKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzM2MzUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzc4CisKKyAgICAgICAgJ1NpZGUtZWZmZWN0
cyBvbiAzIGNzcyB0ZXN0cyBuZWVkcyBjbG9zZXIgcmV2aWV3JyAoUmVxdWVzdGVkCisgICAgICAg
IGJ5IG13ZW5nZSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoZ3JhcGhpY3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKwor
MjAxMC0xMi0wOSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFNlYXJjaCBpbnB1dCBm
aWVsZCBkb2Vzbid0IGhhdmUgY2FuY2VsIGJ1dHRvbgorCisgICAgICAgIEFkZCBhIGNhbmNlbCBi
dXR0b24gdG8gdGhlIHNlYXJjaCBmaWVsZCBhbmQgbWFrZSBpdCBjdXN0b21pemFibGUKKyAgICAg
ICAgYnkgdGhlIGNsaWVudC4gRm9yIG5vdywgdXNlIHRoZSBjbG9zZSBkaWFsb2cgYnV0dG9uIGFz
c29jaWF0ZWQKKyAgICAgICAgd2l0aCB0aGUgYXBwbGljYXRpb24ncyBzdHlsZSBhcyB0aGUgZGVm
YXVsdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDI4ODcKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoZ3JhcGhp
Y3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMC0xMi0wOSAgU2lkZGhh
cnRoIE1hdGh1ciAgPHNpZGRoYXJ0aC5tYXRodXJAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgVXNlIEJVSUxESU5HX1dFQktJVCBsaWtl
IG90aGVyIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDcxMworCisgICAgICAgICogQXBpL3F3ZWJraXRnbG9iYWwuaDogY2hhbmdlIEJVSUxE
X1dFQktJVCB0byBCVUlMRElOR19XRUJLSVQKKworMjAxMC0xMi0wOCAgUWkgWmhhbmcgIDxxaS4y
LnpoYW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFN1cHBvcnQgT3JpZW50YXRpb25DaGFuZ2UgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNjg1
CisKKyAgICAgICAgR2V0IE9yaWVudGF0aW9uQ2hhbmdlIGV2ZW50IGZyb20gcXRtb2JpbGl0eSB0
aGVuIHNlbmQgdG8gd2Via2l0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAg
ICAgIChRV2ViRnJhbWU6Om9yaWVudGF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChRV2ViRnJhbWU6
OlFXZWJGcmFtZSk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9x
d2ViZnJhbWVfcC5oOgorCisyMDEwLTEyLTA3ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgorCisgICAg
ICAgIExheWVyaW5nIFZpb2xhdGlvbiBpbiBDb250ZXh0TWVudSAtIG1lbWJlciB2YXJpYWJsZSBv
ZiB0eXBlIEhpdFRlc3RSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwNTg2CisgICAgICAgIAorICAgICAgICBVcGRhdGUgdXNlcnMgb2YgQ29u
dGV4dE1lbnUgYW5kIENvbnRleHRNZW51Q29udHJvbGxlciB0byBtYXRjaCB3aGVyZSB0aGUgbmV3
IGZ1bmN0aW9ucyAKKyAgICAgICAgYXJlIGxvY2F0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb250ZXh0TWVudSk6Cisg
ICAgICAgIChRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKToKKworMjAx
MC0xMi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVHJ5IHRv
IGZpeCBidWlsZC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChmcmFt
ZUxvYWRSZXF1ZXN0KTogQWRkZWQgbWlzc2luZyBwYXJlbnRoZXNlcy4KKworMjAxMC0xMi0wNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KKworICAgICAgICBQYXNzIHNlY3VyaXR5IG9yaWdpbiB0byBtYWtlIGxvY2FsIGZp
bGUgZGVjaXNpb24gY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODYwMworCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKGZyYW1lTG9hZFJlcXVlc3QpOiBQYXNzIHNlY3VyaXR5IG9yaWdpbi4KKworMjAxMC0xMi0w
NyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjczMzkyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC83MzM5MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTA0ODkKKworICAgICAgICBUaGlzIGNvbW1pdCBjYXVzZWQgY3Jhc2hlcyBv
biB0aGUgR1RLKyBib3RzCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZTo6c2V0VXJsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZp
bmlzaGVkTG9hZGluZyk6CisKKzIwMTAtMTItMDYgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVw
ZGF0ZSBjYWxscyB0byBEb2N1bWVudFdyaXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDg5CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNw
cDoKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0VXJsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmZpbmlzaGVkTG9hZGluZyk6CisKKzIwMTAtMTItMDEgIEppYSBQdSAgPGpwdUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
U3VwcG9ydCBtdWx0aXBsZSBjb3JyZWN0aW9uIGNhbmRpZGF0ZXMgcGFuZWwgZm9yIG1pc3NwZWxs
ZWQgd29yZCBvbiBNYWMgT1MgWC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwMTM3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTY4MDU5PgorCisg
ICAgICAgIEFkb3B0ZWQgbmV3IGZ1bmN0aW9uIHNpZ25hdHVyZSBkZWZpbmVkIGluIGJhc2UgY2xh
c3MuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisKKzIwMTAtMTEtMzAgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEltcGxl
bWVudCBsYXlvdXRUZXN0Q29udHJvbGxlci5maW5kU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDIzNgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciB0aGUgbmV3IGFkdmFuY2VkIGZpbmRTdHJpbmcoKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEwLTExLTMwICBPamFuIFZhZmFpICA8b2phbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2ZXJ0IHI3Mjg3Ni4gSXQgY2F1c2VkIGEgfjMwJSBw
ZXJmIHJlZ3Jlc3Npb24gaW4gY2hyb21pdW0ncyBibG9hdC1odHRwIHRlc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMjg4CisKKyAgICAgICAgMjAx
MC0xMS0yOSBBZGFtIEJhcnRoIDxhYmFydGhAd2Via2l0Lm9yZyAoOmFiYXJ0aCkgKHIpPgorICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKyAgICAgICAgSW50cm9kdWNlIHRoZSBub3Rp
b24gb2YgYSAiZGlzcGxheS1pc29sYXRlZCIgVVJMIHNjaGVtZSBmb3IgdXNlIGJ5IENocm9tZS1p
bnRlcm5hbCBVUkxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDE4MgorICAgICAgICBBIGRpc3BsYXktaXNvbGF0ZWQgVVJMIGNhbiBvbmx5IGJlIGRp
c3BsYXllZCAoZS5nLiwgcHV0IGluIGFuIGlmcmFtZSwKKyAgICAgICAgaHlwZXJsaW5rZWQgdG8p
IGJ5IGRvY3VtZW50cyBmcm9tIHRoYXQgc2NoZW1lLiBJbiBhIHNlbnNlLCB0aGlzIGlzIGEKKyAg
ICAgICAgZ2VuZXJhbGl6YXRpb24gb2Ygc29tZSBvZiB0aGUgcHJvdGVjdGlvbnMgd2UgZ2l2ZSBm
aWxlIFVSTHMsIGJ1dAorICAgICAgICBpbnN0ZWFkIG9mIGx1bXBpbmcgdGhlbSBhbGwgdG9nZXRo
ZXIgaW50byBvbmUgImxvY2FsIiBidWNrZXQsIHRoaXMKKyAgICAgICAgcGF0Y2ggY3JlYXRlcyBh
IHNlcGFyYXRlIGJ1Y2tldCBmb3IgZWFjaCBzY2hlbWUuCisgICAgICAgIEZvciBhIHdoaWxlLCBJ
IHRyaWVkIHVzaW5nIGEgc2VwYXJhdGUgYnVja2V0IGZvciBlYWNoIG9yaWdpbi4gVGhhdAorICAg
ICAgICB3b3VsZCBoYXZlIHBsYXllZCBuaWNlbHkgd2l0aCB3aGF0IEJsb2IgVVJMcyBhcmUgdHJ5
aW5nIHRvIGRvLCBidXQgc29tZQorICAgICAgICAiY2hyb21lIiBVUkwgcGFnZXMgcmVseSBvbiBi
ZWluZyBhYmxlIHRvIGRpc3BsYXkgb3RoZXIgY2hyb21lIFVSTAorICAgICAgICBwYWdlcywgZXZl
biBpbiBkaWZmZXJlbnQgb3JpZ2lucy4gRm9yIGV4YW1wbGUsIHRoZSBOZXcgVGFiIFBhZ2Ugc2hv
d3MKKyAgICAgICAgdGh1bWJuYWlscyBmcm9tIHRoZSAidGh1bWJuYWlsIiBob3N0LgorICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gcmVtb3ZlcyBhIGJ1bmNoIG9mIHVudXNlZCBjb2RlLiBJJ3ZlIGFs
c28gcHJvcGFnYXRlZAorICAgICAgICB0aGUgImRlcHJlY2F0ZWQiIHN0YXR1cyBvZiBkZXByZWNh
dGVkQ2FuRGlzcGxheSB0bworICAgICAgICBkZXByZWNhdGVkU2hvdWxkVHJlYXRVUkxBc0xvY2Fs
IGJlY2F1c2UgdGhhdCBtZXRob2QgaGFzIG5vIG90aGVyCisgICAgICAgIGNhbGxlcnMgYW5kIGlz
IHJlYWxseSBhc2tpbmcgZm9yIHVwcGVyY2FzZS9sb3dlcmNhc2UgYnVncy4gSSBkcmVhbSBvZgor
ICAgICAgICBzb21lZGF5IHJlbW92aW5nIHRoZXNlIGZ1bmN0aW9ucy4KKyAgICAgICAgMjAxMC0x
MS0yOSBBZGFtIEJhcnRoIDxhYmFydGhAd2Via2l0Lm9yZyAoOmFiYXJ0aCkgKHIpPgorICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKyAgICAgICAgSW50cm9kdWNlIHRoZSBub3Rpb24g
b2YgYSAiZGlzcGxheS1pc29sYXRlZCIgVVJMIHNjaGVtZSBmb3IgdXNlIGJ5IENocm9tZS1pbnRl
cm5hbCBVUkxzCisgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTAxODIKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgQ2hyb21pdW0gQVBJIGZvciByZWdp
c3RlcmluZyBzY2hlbWVzIGFzCisgICAgICAgIGRpc3BsYXktaXNvbGF0ZWQuIEluIGEgc3Vic2Vx
dWVudCBwYXRjaCwgSSdsbCBjaGFuZ2UgdGhlICJjaHJvbWUiCisgICAgICAgIHNjaGVtZSBpbiBD
aHJvbWUgdG8gYmUgZGlzcGxheSBpc29sYXRlZCBpbnN0ZWFkIG9mIGxvY2FsLiBUaGF0IHdpbGwK
KyAgICAgICAgcHJldmVudCBmaWxlIFVSTHMgZnJvbSBsaW5raW5nIHRvIGNocm9tZSBVUkxzLgor
CisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6CisgICAgICAgIChRV2ViU2Vj
dXJpdHlPcmlnaW46OmxvY2FsU2NoZW1lcyk6CisKKzIwMTAtMTEtMjkgIFZhbmdlbGlzIEtva2tl
dmlzICA8dmFuZ2VsaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICBQcm92aWRlIG1vcmUgZmluZSBncmFpbmVkIGNvbnRyb2wgdG8g
cG9ydHMgb3ZlciB3aGVuIHRvIHR1cm4gb24gYWNjZWxlcmF0ZWQKKyAgICAgICAgY29tcG9zaXRp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTk5
OAorCisgICAgICAgIEFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UsIHRoZSBvbGQgaGFzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZyBtZXRob2Qgb24gdGhlIENocm9tZUNsaWVudAorICAgICAgICBoYXMgbm93
IGJlZW4gcmVwbGFjZWQgYnkgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMgd2hpY2ggcmV0dXJu
cyBhIGJpdGZpZWxkIG9mCisgICAgICAgIGFsbCB0aGUgZmVhdHVyZXMgd2hpY2ggY2FuIHRyaWdn
ZXIgdGhlIGNvbXBvc2l0b3IuCisKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjphbGxvd2VkQ29t
cG9zaXRpbmdUcmlnZ2Vycyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaDoKKworMjAxMC0xMS0zMCAgVGhpYWdvIE1hY2llaXJhICA8dGhpYWdvLm1hY2llaXJhQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFtRdF0gUVdlYkZyYW1lOjpsb2FkKFFOZXR3b3JrUmVxdWVzdCkgc2hvdWxkIHJlc3BlY3QgdGhl
IEN1c3RvbVZlcmJBdHRyaWJ1dGUKKworICAgICAgICBGb3IgQ3VzdG9tT3BlcmF0aW9uIHJlcXVl
c3RzLCBwYXNzIHRoZSBDdXN0b21WZXJiQXR0cmlidXRlIG9uIHRvCisgICAgICAgIHRoZSBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJGcmFtZTo6bG9hZCk6CisKKzIwMTAtMTEtMjUgIE5vcmJlcnQgTGVzZXIgIDxu
b3JiZXJ0Lmxlc2VyQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29t
Ym9zLgorCisgICAgICAgIFVwZGF0ZWQgU3ltYmlhbiBERUYgZmlsZSBmb3IgQVJNIHRhcmdldCBk
dWUgdG8gQVBJIGNoYW5nZXMKKyAgICAgICAgdmlhIGNvbW1pdHRzIHI3MjYwMC03MjYwMyAoc2Vl
IGJ1ZyMgNDY4MTApCisKKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKwor
MjAxMC0xMS0yNSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZyBhbmQgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgW1F0XSBDYWxjdWxhdGUgdGhlIC13ZWJraXQtcGl4ZWwtcmFkaW8gdXNp
bmcgdGhlIGRldmljZSBEUEkuCisgICAgICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvNTAwNTkKKwor
ICAgICAgICBBbHNvLCB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb24gd2hhdCBhIERJUCBpcyBh
bmQgaG93IHRvIG92ZXJyaWRlCisgICAgICAgIHRoZSBkZXZpY2UgRFBJIGluIHRoZSBjYXNlIHRo
ZSBzeXN0ZW0gcmVwb3J0cyB0aGUgd3Jvbmcgb25lICh3aGljaAorICAgICAgICB1bmZvcnR1bmF0
ZWx5IGlzIGNvbW1vbiBvbiBYMTEpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQ
YWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Vf
cC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY2FsZUZhY3Rvcik6CisKKzIwMTAtMTEtMjQg
IEtyaXN0aWFuIEFtbGllICA8a3Jpc3RpYW4uYW1saWVAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgRml4ZWQgaGFuZGxpbmcgb2YgUUlu
cHV0TWV0aG9kRXZlbnRzIHdpdGggbm9uemVybyByZXBsYWNlbWVudExlbmd0aC4KKworICAgICAg
ICBUaGVzZSB0eXBlcyBvZiBldmVudHMgcmVwbGFjZSB0ZXh0IHRoYXQgaXMgYWxyZWFkeSBpbiB0
aGUgd2lkZ2V0LCBidXQKKyAgICAgICAgV2ViS2l0IGRpZCBub3QgY2hlY2sgZm9yIHJlcGxhY2Vt
ZW50TGVuZ3RoIGF0IGFsbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDk3ODcKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAqIHRlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0
aG9kcyk6CisKKzIwMTAtMTEtMjQgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUBpbmYudS1zemVnZWQu
aHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgTWFrZSBXZWJLaXQyIGNvbXBpbGUgd2l0aCAhRU5BQkxFKElOU1BFQ1RPUikuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTk3MworCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFi
bGVkKToKKworMjAxMC0xMS0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcyNjUwLgorICAgICAg
ICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83MjY1MAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAwMTAKKworICAgICAgICBicmVha3Mg
Zm9jdXMgaW4gc2NlbmVzIGZvY3VzIGl0ZW0gb3RoZXIgdGhhbiBncmFwaGljc3dlYml2aWV3Cisg
ICAgICAgIChSZXF1ZXN0ZWQgYnkgdHJvbmljYWxfIG9uICN3ZWJraXQpLgorCisgICAgICAgICog
QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZh
dGU6OlFHcmFwaGljc1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OlFHcmFwaGljc1dlYlZpZXcpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6aXRlbUNoYW5n
ZSk6CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuaDoKKyAgICAgICAgKiB0ZXN0cy9x
Z3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKworMjAxMC0xMS0yNCAg
SmFuIEVyaWsgSGFuc3NlbiAgPGpoYW5zc2VuQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBIdG1sIGF1
dG9mb2N1cyBub3Qgd29ya2luZyB3aXRoIFFHcmFwaGljc1dlYlZpZXcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMTY5CisKKyAgICAgICAgUUdyYXBo
aWNzU2NlbmUgZG9lcyBub3QgcHJvcGFnYXRlIFF0OjpBY3RpdmF0ZVdpbmRvd0ZvY3VzUmVhc29u
IGZvY3VzCisgICAgICAgIGV2ZW50cyB3aGVuIHRoZXJlIGFyZSBubyBhY3RpdmUgaXRlbXMuCisK
KyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3UHJpdmF0ZTo6UUdyYXBoaWNzV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUUdyYXBo
aWNzV2ViVmlldzo6UUdyYXBoaWNzV2ViVmlldyk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
OjpldmVudEZpbHRlcik6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjppdGVtQ2hhbmdlKToK
KyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAqIHRlc3RzL3FncmFw
aGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoRm9jdXNQYWdl
OjpGb2N1c1BhZ2UpOgorICAgICAgICAoRm9jdXNQYWdlOjpldmVudCk6CisgICAgICAgIChGb2N1
c1BhZ2U6OmdvdEZvY3VzKToKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3OjpyZWNlaXZl
c0ZvY3VzSW5PblNob3cpOgorCisyMDEwLTExLTIzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
biAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgIEFkYXB0IHRvIHNldFNob3VsZERlbGVnYXRlU2Nyb2xsaW5nIG5vdCBi
ZWluZyBhIHJlYWwgc2V0dGluZyBhbnltb3JlLgorICAgICAgICBXZSBub3cgc2ltaWxhcmlseSB0
byBzZXRVc2VGaXhlZExheW91dCBhbmQgc2V0UGFpbnRFbnRpcmVDb250ZW50cworICAgICAgICBz
ZXQgaXQgb24gdGhlIEZyYW1lVmlldyB3ZW4gdHJhbnNpdGlvbmluZyB0byBhIG5ldyBwYWdlLgor
CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNz
V2ViVmlld1ByaXZhdGU6OnVwZGF0ZVJlc2l6ZXNUb0NvbnRlbnRzRm9yUGFnZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KToKKworMjAxMC0xMS0yMyAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gd2l0aCAhRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5OTQyCisKKyAg
ICAgICAgQWRkIEVOQUJMRShJTlNQRUNUT1IpIHRvIHRoZSBRdCBzcGVjaWZpYyBmaWxlcyBmb2xs
b3dpbmcgcjcxOTgxLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Omluc3BlY3RvckRl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3Bl
Y3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNl
cnZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5k
bGVyUXQ6OndlYlNvY2tldFJlYWR5UmVhZCk6CisKKzIwMTAtMTEtMjMgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBSZXN0b3JlIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdp
dGggdGhlIFF0V2ViS2l0IDIuMSBicmFuY2gKKworICAgICAgICBSZS1vcmRlciB0aGUgZW51bXMg
YnkgYWRkaW5nIG5ldyBlbnVtIGVudHJpZXMgdG8gdGhlIGVuZC4KKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuaDoKKworMjAxMC0xMS0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4K
KworICAgICAgICBbUXRdIFJldmlldyB0aGUgc2V0VXNlclBlcm1pc3Npb24gJiBmcmllbmRzIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4MTAK
KworICAgICAgICBSZW5hbWVkIHJlcXVlc3RQZXJtaXNzaW9uRnJvbVVzZXIgdG8gZmVhdHVyZVBl
cm1pc3Npb25SZXF1ZXN0ZWQKKyAgICAgICAgYW5kIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lv
biB0byBmZWF0dXJlUGVybWlzc2lvblJlcXVlc3RDYW5jZWxlZC4KKworICAgICAgICAqIEFwaS9x
d2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlzc2lv
bkNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUGVybWlzc2lvbkNs
aWVudFF0OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQ6OmNhbmNlbEdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWxSZXF1ZXN0c0ZvclBl
cm1pc3Npb24pOgorCisyMDEwLTExLTIzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisg
ICAgICAgIFtRdF0gUmV2aWV3IHRoZSBzZXRVc2VyUGVybWlzc2lvbiAmIGZyaWVuZHMgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjgxMAorCisg
ICAgICAgIFJlbmFtZSBzZXRVc2VyUGVybWlzc2lvbiB0byBzZXRGZWF0dXJlUGVybWlzc2lvbgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRGZWF0
dXJlUGVybWlzc2lvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKEpTVGVzdFBhZ2U6OnJlcXVl
c3RQZXJtaXNzaW9uKToKKworMjAxMC0xMS0yMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4K
KworICAgICAgICBbUXRdIFJldmlldyB0aGUgc2V0VXNlclBlcm1pc3Npb24gJiBmcmllbmRzIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY4MTAK
KworICAgICAgICBSZW5hbWUgUGVybWlzc2lvbkRvbWFpbiB0byBGZWF0dXJlLCBOb3RpZmljYXRp
b25zUGVybWlzc2lvbkRvbWFpbiB0byBOb3RpZmljYXRpb25zCisgICAgICAgIGFuZCBHZW9sb2Nh
dGlvblBlcm1pc3Npb25Eb21haW4gdG8gR2VvbG9jYXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFVzZXJQZXJtaXNzaW9uKToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlv
blBlcm1pc3Npb25DbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBl
cm1pc3Npb25DbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0OjpjYW5jZWxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpyZXF1ZXN0UGVybWlzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Y2FuY2VsUmVx
dWVzdHNGb3JQZXJtaXNzaW9uKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoSlNUZXN0UGFnZTo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAg
ICAodHN0X1FXZWJQYWdlOjpnZW9sb2NhdGlvblJlcXVlc3RKUyk6CisKKzIwMTAtMTEtMjMgIFNp
bW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgW1F0XSBSZXZpZXcgdGhlIHNldFVz
ZXJQZXJtaXNzaW9uICYgZnJpZW5kcyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2ODEwCisKKyAgICAgICAgQWRkIGEgQnlVc2VyIHN1ZmZpeCB0
byBQZXJtaXNzaW9uR3JhbnRlZC9EZW5pZWQuIEluIHRoZSBmdXR1cmUKKyAgICAgICAgd2UgY2Fu
IGFkZCBQZXJtaXNzaW9uR3JhbnRlZEJ5RGVmYXVsdC4KKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0VXNlclBlcm1pc3Npb24pOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVy
bWlzc2lvbkNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uUGVybWlz
c2lvbkNsaWVudFF0OjpzZXRQZXJtaXNzaW9uKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoSlNUZXN0UGFnZTo6cmVxdWVzdFBlcm1pc3Npb24p
OgorCisyMDEwLTExLTIyICBKYW4gRXJpayBIYW5zc2VuICA8amhhbnNzZW5Ac2VuY2hhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICBbUXRdIFFXZWJFbGVtZW50OjphcHBlbmRJbnNpZGUoKSBkb2Vzbid0IHdvcmsgb24gaGVh
ZCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDkxNjYKKworICAgICAgICBNYWtlIFFXZWJFbGVtZW50OjphcHBlbmRJbnNpZGUoKSBjYWxs
IAorICAgICAgICBFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KCks
IGJ5cGFzc2luZyB0aGUgY2hlY2sgZm9yCisgICAgICAgIHRoZSBIRUFEIHRhZyBpbiB0aGUgSFRN
TEVsZW1lbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbi4KKworICAgICAgICAqIEFw
aS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6YXBwZW5kSW5zaWRlKToK
KyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAg
ICAodHN0X1FXZWJFbGVtZW50OjphZGRFbGVtZW50VG9IZWFkKToKKworMjAxMC0xMS0yMCAgQW5k
cmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KKworICAgICAgICBbUXRdIERyYWdnaW5nIGEgc2VsZWN0aW9uIHNob3VsZCB1
c2UgYSByZW5kZXJpbmcgb2YgdGhlIHNlbGVjdGlvbiBhcyAiY3Vyc29yIiBmb3IgdGhlIGRyYWcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODcwCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOiBQYXNzIHRoZSBEcmFnSW1hZ2UgdG8gUURy
YWc6OnNldFBpeG1hcCgpCisKKzIwMTAtMTEtMjAgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvQGdt
YWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFtRdF0gY3Jhc2ggd2hlbiBhdHRlbXB0aW5nIHRvIGFkZCBhIEpTIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyODcKKworICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRX
aW5kb3dPYmplY3QpOgorCisgICAgICAgIFRlc3Q6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sCisKKzIwMTAtMTEtMjAgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI3MjQ3MS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
NzI0NzEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
ODY1CisKKyAgICAgICAgYnJva2UgdHdvIElNRSB0ZXN0cyBvbiBRdCAoUmVxdWVzdGVkIGJ5IGts
aW5nIG9uICN3ZWJraXQpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6CisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRo
b2RzKToKKworMjAxMC0xMS0xOSAgS3Jpc3RpYW4gQW1saWUgIDxrcmlzdGlhbi5hbWxpZUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBG
aXhlZCBoYW5kbGluZyBvZiBRSW5wdXRNZXRob2RFdmVudHMgd2l0aCBub256ZXJvIHJlcGxhY2Vt
ZW50TGVuZ3RoLgorCisgICAgICAgIFRoZXNlIHR5cGVzIG9mIGV2ZW50cyByZXBsYWNlIHRleHQg
dGhhdCBpcyBhbHJlYWR5IGluIHRoZSB3aWRnZXQsIGJ1dAorICAgICAgICBXZWJLaXQgZGlkIG5v
dCBjaGVjayBmb3IgcmVwbGFjZW1lbnRMZW5ndGggYXQgYWxsLgorCisgICAgICAgIEFsc28gbWFk
ZSBzdXJlIHRoYXQgdGhlIHByZWVkaXRTdHJpbmcgaXMgYWx3YXlzIHJlc3BlY3RlZCwgZXZlbiBp
ZgorICAgICAgICB0aGVyZSBpcyBjb21taXR0ZWQgdGV4dC4gVGhpcyBpcyBob3cgUUxpbmVFZGl0
IGRvZXMgaXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ5Nzg3CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90
c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMpOgor
CisyMDEwLTExLTE5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgW1F0XSBUcmFuc2l0aW9uIGFuZCBhbmltYXRpb24gZG8gbm90IHdvcmsgd2l0aCBR
V2ViVmlldyBhbnltb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTc5NworCisgICAgICAgIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHNob3VsZCBu
b3QgYmUgZW5hYmxlZCBvbiBRV2ViVmlldyB3aXRob3V0CisgICAgICAgIHRleHR1cmUgbWFwcGVy
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6
CisKKzIwMTAtMTEtMTkgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBNZW1vcnkgbGVhayBp
biBRV2ViSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTc2NQorCisgICAgICAgIERlbGV0ZSBRV2ViSW5zcGVjdG9yUHJpdmF0ZSBpbiB+
UVdlYkluc3BlY3RvcigpCisKKyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5jcHA6CisgICAg
ICAgIChRV2ViSW5zcGVjdG9yOjp+UVdlYkluc3BlY3Rvcik6CisKKzIwMTAtMTEtMTkgIFNhbSBN
YWdudXNvbiAgPHNtYWdudXNvQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gQ29tcGlsZSB3aXRoIFFUX05PX1VORE9DT01NQU5E
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTc1Mgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5jcHA6CisgICAgICAgIChF
ZGl0Q29tbWFuZFF0OjpFZGl0Q29tbWFuZFF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9F
ZGl0Q29tbWFuZFF0Lmg6CisKKzIwMTAtMTEtMTkgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MjAwCisgICAgICAgIFtRdF0g
YnVncyBpbiBDb21wb3NpdGlvbiBtb2RlIGZvciBRV2ViUGFnZTo6aW5wdXRNZXRob2RFdmVudCAm
IGlucHV0TWV0aG9kUXVlcnkoKQorCisgICAgICAgIE1ha2UgUVdlYlBhZ2Ugd29yayBhcyBmb2xs
b3dpbmcgd2hlbiBlZGl0b3IgaXMgaW4gY29tcG9zaXRpb24gbW9kZToKKyAgICAgICAgMS4gYW5j
aG9yIHBvc2l0aW9uIGFuZCBjdXJzb3IgcG9zaXRpb24gYXJlIHRoZSBzYW1lIGFuZCBhbHdheXMg
Pj0gMAorICAgICAgICAyLiBjdXJyZW50IHNlbGVjdGlvbiBpcyBhbHdheXMgbnVsbAorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRN
ZXRob2RFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeSk6CisgICAg
ICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2Vi
UGFnZTo6aW5wdXRNZXRob2RzKToKKworMjAxMC0xMS0xOCAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgQnVpbGQgZml4IC0gdXBkYXRlIGVycm9y
IG1lc3NhZ2VzIGZvbGxsb3dpbmcgcjcyMzYwLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1l
L3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTExLTEyICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCisKKyAgICAgICAgW1F0XSBTdGF0aWMgcGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDcwCisKKyAgICAg
ICAgQWRkaW5nIHN1cHBvcnQgZm9yIHN0YXRpY2FsbHkgbGlua2VkIHBsYXRmb3JtIHBsdWdpbnMu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1QbHVnaW46OmxvYWRTdGF0aWNhbGx5TGlua2VkUGx1Z2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1QbHVnaW46OnBsdWdpbik6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oOgorCisyMDEwLTExLTE3ICBBbmRy
ZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBSZXVzZSB0aGUgc2l6ZSBvZiB0aGUg
YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0IHdoZW4gbG9hZGluZyBhIG5ldyBwYWdlCisgICAgICAg
IG9yIG5hdmlnYXRpbmcgc2Vzc2lvbiBoaXN0b3J5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKworMjAxMC0xMS0x
NyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIENvbnZlcmdlIG1lYW5zIG9mIHF1ZXJ5
aW5nIGEgcGFyZW50IG5vZGUgaW50byBvbmUgd2F5LCB3aGljaCBpcyBOb2RlOjpwYXJlbnROb2Rl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk2ODYK
KworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6
cHJlcGVuZE91dHNpZGUpOiBDaGFuZ2VkIHRvIHVzZSBwYXJlbnROb2RlLgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OmFwcGVuZE91dHNpZGUpOiBEaXR0by4KKyAgICAgICAgKFFXZWJFbGVtZW50Ojpl
bmNsb3NlQ29udGVudHNXaXRoKTogRGl0dG8uCisgICAgICAgIChRV2ViRWxlbWVudDo6ZW5jbG9z
ZVdpdGgpOiBEaXR0by4KKworMjAxMC0xMS0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICBbUXRdIFJlbW92ZSBzeW5jaHJvbm91cyBRV2ViUGFnZTo6Y2hlY2tQZXJtaXNzaW9u
cyBzaWduYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2ODEwCisKKyAgICAgICAgQXMgZGVjaWRlZCBpbiB0aGUgQVBJIHJldmlldywgd2UgcmVtb3Zl
IHRoaXMgc2lnbmFsIGFuZCByZXBsYWNlIGl0cyBvbmx5IHVzZSBjdXJyZW50bHkKKyAgICAgICAg
d2l0aCBjYWNoZWQgY3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2U6OnNldFVzZXJQZXJtaXNzaW9uKTogUGFzcyB0aGUgV2ViQ29yZSBm
cmFtZSBpbnN0ZWFkIG9mIHRoZSBRV2ViRnJhbWUuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNo
ZWNrUGVybWlzc2lvbik6IFJlcGxhY2VkIGV4cGxpY2l0CisgICAgICAgIHNpZ25hbCBlbWlzc2lv
biB3aXRoIGhhc2ggbG9va3VwIG9mIHByZXZpb3VzbHkgZ3JhbnRlZCBwZXJtaXNzaW9uIChvciBu
b3QpLgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNh
bmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbik6IFJlbW92ZQorICAgICAgICBhbnkgcHJldmlvdXNs
eSBjYWNoZWQvZ3JhbnRlZCBwZXJtaXNzaW9uIGZvciB0aGUgZ2l2ZW4gc2NyaXB0IGV4ZWN1dGlv
biBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OmFsbG93Tm90aWZpY2F0aW9uRm9yRnJhbWUpOiBEbyBub3QKKyAgICAgICAgb25seSBzZXJ2
ZSBwZW5kaW5nIHBlcm1pc3Npb24gcmVxdWVzdHMgYnV0IGJlZm9yZSBjYWxsaW5nIHRoZSBKUyBj
YWxsYmFja3MsIHJlbWVtYmVyCisgICAgICAgIHRoZSBwZXJtaXNzaW9uIGZvciBzdWJzZXF1ZW50
IHN5bmNocm9ub3VzIGNoZWNrUGVybWlzc2lvbigpIGNhbGxzLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6IEFkZCBjYWNoZSBmb3IgcGVy
bWlzc2lvbnMuCisKKzIwMTAtMTEtMTUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSBidWlsZCBmaXguCisKKyAg
ICAgICAgRml4IHRlc3QgYnJva2VuIGJ5IGVhcmxpZXIgcGF0Y2guCisKKyAgICAgICAgKiB0ZXN0
cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMTAtMTEtMTUgIFlpIFNoZW4gIDx5
aS40LnNoZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
CisKKyAgICAgICAgW1F0XSBab29tVGV4dE9ubHkgZG9lc24ndCB3b3JrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTU2OAorCisgICAgICAgIENoZWNr
IFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5IGF0dHJpYnV0ZSBiZWZvcmUgYXBwbHlpbmcgem9v
bQorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnRl
eHRTaXplTXVsdGlwbGllcik6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IpOgor
ICAgICAgICAoUVdlYkZyYW1lOjp6b29tRmFjdG9yKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
X3AuaDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgorCisy
MDEwLTExLTE0ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFJFR1JFU1NJT04ocjcxODk1KTog
QVBJIHRlc3QgamF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQgZmFpbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NDY2CisKKyAgICAgICAgQXMg
b2YgcjcxODk1IGVtcHR5IGlubGluZSBzY3JpcHRzIGFyZSBubyBsb25nZXIgZXhlY3V0ZWQgYW5k
IHNvCisgICAgICAgIHRoZSBqYXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpIHNpZ25hbCBp
cyBubyBsb25nZXIgdHJpZ2dlcmVkCisgICAgICAgIGJ5IDxzY3JpcHQ+PC9zY3JpcHQ+LgorCisg
ICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTExLTEy
ICBKYWNvYiBEaW51ICA8ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFVwZGF0ZSAuZGVmIGZpbGUgZm9yIFN5
bWJpYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
NDU2CisKKyAgICAgICAgQWRkZWQgbWlzc2luZyBzeW1ib2xzIGZyb20gcmV2aXNpb25zIHI2OTgy
NSwgcjcwNDcwLCByNzE4MDYKKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVm
OgorCisyMDEwLTExLTEyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBb
UXRdIE5lZWQgdG8gaW1wbGVtZW50IFdlYktpdDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvciBm
b3IgV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDg3NjQKKworICAgICAgICBBZGQgdGhlIG1pc3NpbmcgZXJyb3IuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IpOgorCisyMDEw
LTExLTExICBZaSBTaGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gUVdlYlNjcmlwdFdvcmxkOjp3b3Js
ZCgpIG1heSBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDkzNDIKKworICAgICAgICAqIEFwaS9xd2Vic2NyaXB0d29ybGQuY3BwOgorICAgICAg
ICAoUVdlYlNjcmlwdFdvcmxkOjp3b3JsZCk6CisKKzIwMTAtMTEtMTEgIEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBBZGQgYW4gQVBJIGZvciBvdmVycmlkaW5n
IHRoZSBhY3R1YWwgdmlzaWJsZSBjb250ZW50IHJlY3QgaW4gV2ViQ29yZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkzNzMKKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0QWN0dWFsVmlzaWJsZUNvbnRl
bnRSZWN0KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKworMjAxMC0xMS0xMSAgQW5kcmVh
cyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgRnJhbWVWaWV3OiBEb24ndCBjbGlwIHRv
IHZpc2libGVDb250ZW50UmVjdCBpbiBwYWludEVudGlyZUNvbnRlbnRzIG1vZGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5Mzc1CisKKyAgICAgICAg
VXNlIHBhaW50RW50aXJlQ29udGVudHMgaW4gY29tYmluYXRpb24gd2l0aCB0aWxpbmcsIGFsbG93
aW5nIHRvCisgICAgICAgIGFjdHVhbGx5IHNldCB2aXNpYmxlQ29udGVudFJlY3QgdG8gc29tZXRo
aW5nIGRpZmZlcmVudCBmcm9tCisgICAgICAgIHRoZSBhY3R1YWwgY29udGVudHMgc2l6ZS4KKwor
ICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXdQcml2YXRlOjp1cGRhdGVSZXNpemVzVG9Db250ZW50c0ZvclBhZ2UpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6
CisKKzIwMTAtMTEtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MTczMy4KKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzE3MzMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MzE5CisKKyAgICAgICAgbWFkZSBxdCBib3Qg
Y3Jhc2h5IGFuZCBzYWQgKFJlcXVlc3RlZCBieSBrbGluZyBvbiAjd2Via2l0KS4KKworICAgICAg
ICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQ
cml2YXRlOjp1cGRhdGVSZXNpemVzVG9Db250ZW50c0ZvclBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisKKzIw
MTAtMTEtMTAgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXNlIHBh
aW50RW50aXJlQ29udGVudHMgaW4gY29tYmluYXRpb24gd2l0aCB0aWxpbmcsIGFsbG93aW5nIHRv
CisgICAgICAgIGFjdHVhbGx5IHNldCB2aXNpYmxlQ29udGVudFJlY3QgdG8gc29tZXRoaW5nIGRp
ZmZlcmVudCBmcm9tCisgICAgICAgIHRoZSBhY3R1YWwgY29udGVudHMgc2l6ZS4KKworICAgICAg
ICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQ
cml2YXRlOjp1cGRhdGVSZXNpemVzVG9Db250ZW50c0ZvclBhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisKKzIw
MTAtMTEtMDggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gYnVp
bGQgZXJyb3IgaW4gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgaW4gUXQgNC43LjAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NDI3CisKKyAgICAg
ICAgQWRkIGEgbWlzc2luZyBndWFyZCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNvbXBpbGUgd2hl
bgorICAgICAgICBFTkFCTEUoVE9VQ0hfRVZFTlRTKSBpcyBub3QgZGVmaW5lZC4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnRvdWNoRXZl
bnQpOgorCisyMDEwLTExLTA4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY4NQorICAgICAgICBOb3RpZnkgVUkgcHJv
Y2VzcyBhYm91dCBmb2N1c2VkIGZyYW1lCisKKyAgICAgICAgQWRkZWQgYW4gZW1wdHkgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIG5ldyBDaHJvbWVDbGllbnQgbWV0aG9kLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OmZvY3VzZWROb2RlQ2hhbmdlZCk6IFJlbW92ZWQgdW5uZWVkZWQgbmFtZXNwYWNl
IHByZWZpeC4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpmb2N1c2VkRnJhbWVD
aGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisy
MDEwLTExLTA4ICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAg
ICBbVGV4bWFwXSBbUXRdIFRleHR1cmUgbWFwcGVyIGluaXRpYWwgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDcwCisKKyAg
ICAgICAgUmVvcmdhbml6ZWQgdGhlIHRleHR1cmVNYXBwZXIgdG8gYmUgYSBtZW1iZXIgb2YgUVdl
YkZyYW1lUHJpdmF0ZSwgdG8gaGVscCB3aXRoIG1ha2luZworICAgICAgICBUZXh0dXJlTWFwcGVy
IHRocmVhZC1zYWZlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChR
V2ViRnJhbWVQcml2YXRlOjpyZW5kZXJDb21wb3NpdGVkTGF5ZXJzKToKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1MYXllclByb3h5UXQ6OnNldFRleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1MYXllclByb3h5UXQ6OnRleHR1cmVNYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1MYXllclByb3h5UVdpZGdldDo6UGxhdGZv
cm1MYXllclByb3h5UVdpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUxheWVyUHJv
eHlRR3JhcGhpY3NPYmplY3Q6OlBsYXRmb3JtTGF5ZXJQcm94eVFHcmFwaGljc09iamVjdCk6CisK
KzIwMTAtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBSZW5hbWUgQ2FjaGUgdG8gTWVtb3J5
Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
MTU5CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2Vic2V0
dGluZ3MuY3BwOgorCisyMDEwLTExLTA3ICBDaGFuZyBTaHUgIDxjaGFuZy5zaHVAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgQWRkIGEg
aGVscGVyIGZ1bmN0aW9uIHRvIGF2b2lkIGR1cGxpY2F0ZWQgY29kZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDg1CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKKzIwMTAtMTEtMDUgIENocmlzIE1hcnJp
biAgPGNtYXJyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBNb3ZlIHJlc3VtZUFuaW1hdGlvbnMvc3VzcGVuZEFuaW1hdGlvbnMgZnJv
bSBGcmFtZSB0byBBbmltYXRpb25Db250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwNzMKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6cmVzdW1lQW5pbWF0aW9ucyk6CisKKzIwMTAtMTEtMDMgIEFudG9uaW8gR29tZXMgIDx0
b25pa2l0b29Ad2Via2l0Lm9yZz4sIEFuZHJlIFBlZHJhbGhvICA8YW5kcmUucGVkcmFsaG9AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
IGFuZCBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBbUXRdIE1ha2luZyBlZmZlY3RpdmUgdXNl
IG9mIG5vZGVzRnJvbVJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NDA4OQorCisgICAgICAgIFBhdGNoIGFkZHMgYSBoZWxwZXIgY2xhc3MgKG5h
bWVkIFRvdWNoQWRqdXN0ZXIpIHRvIGltcHJvdmUgdGFwIGFjdGlvbnMKKyAgICAgICAgb24gbW9i
aWxlIHRvdWNoIGRldmljZXMuIFRvdWNoQWRqdXN0ZXIgbWFrZXMgdXNlIG9mIHRoZSBuZXdseSBh
ZGRlZCByZWN0CisgICAgICAgIGJhc2VkIGhpdCB0ZXN0IGV4dGVuc2lvbiB0aHJvdWdoIHRoZSBE
b2N1bWVudDo6bm9kZXNGcm9tUmVjdCBtZXRob2QuCisgICAgICAgIEdpdmVuIGEgcmVjdGFuZ2xl
IGFzIGlucHV0LCBub2Rlc0Zyb21SZWN0IHJldHVybnMgYSB6LWluZGV4IG9yZGVyZWQgbGlzdAor
ICAgICAgICBvZiBub2RlcyB3aG9zZSBib3VuZGFyaWVzIGludGVyc2VjdCB0aGUgcmVjdGFuZ2xl
LgorCisgICAgICAgIEJhc2ljYWxseSB0aGUgVG91Y2hBZGp1c3RlciBjbGFzcyBpbnRlcmNlcHRz
IHRoZSBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQKKyAgICAgICAgcGFzc2VkIHRvIGJvdGggUVdl
YlBhZ2VQcml2YXRlOjptb3VzZXtQcmVzcyxSZWxlYXNlfUV2ZW50IG1ldGhvZHMgYmVmb3JlCisg
ICAgICAgIHRoZXkgYXJlIHBhc3NlZCBkb3duIHRvIFdlYkNvcmUuIFRoZSBnb2FsIGlzIHRvIGlu
ZmVyIHRoZSB0YXJnZXQgY2xpY2sgcG9zaXRpb24uCisgICAgICAgIEZvciB0aGF0LCBhIHJlY3Rh
bmdsZSBpcyBidWlsdCB1cCB1c2luZyB0aGUgZXZlbnQgcG9zaXRpb24gYXMgYSBjZW50ZXIgcG9p
bnQgYW5kCisgICAgICAgIGV4cGFuZGluZyBpdCBiYXNlZCBvbiB0aGUgdmFsdWVzIGFuZCBkaXJl
Y3Rpb25zIHNldCBpbiB0aGUgUGxhdGZvcm0gUGx1Z2luCisgICAgICAgIFFXZWJUb3VjaE1vZGlm
aWVyOjpoaXRUZXN0UGFkZGluZy4KKworICAgICAgICBUb3VjaEFkanVzdGVyIGl0ZXJhdGVzIG92
ZXIgdGhlIGxpc3Qgb2Ygbm9kZXMgcmV0dXJuZWQgYnkgbm9kZXNGcm9tUmVjdCBhbmQKKyAgICAg
ICAgcGlja3MgdGhlIGNsaWNrYWJsZSBvbmUgdGhhdCBoYXMgdGhlIGxhcmdlc3QgaW50ZXJzZWN0
aW9uIGFyZWEgd2l0aCB0aGUgaGl0CisgICAgICAgIHRlc3QgcmVjdGFuZ2xlLiBUaGUgdGFyZ2V0
IHBvc2l0aW9uIGlzIHRoZW4gdGhlIGNlbnRlciBwb2ludCBvZiB0aGlzIGludGVyc2VjdGlvbgor
ICAgICAgICBhcmVhLgorCisgICAgICAgIEluIGNhc2Ugb2Ygbm8gY2xpY2thYmxlIG5vZGUgaW50
ZXJzZWN0cyB0aGUgaGl0IHRlc3QgYXJlYSwgdGhlIGNsaWNrIHBvc2l0aW9uCisgICAgICAgIGlz
IG5vdCBhbHRlcmVkLgorCisgICAgICAgIFRvdWNoQWRqdXN0ZXIgaXMgKm9ubHkqIHdvcmtpbmcg
Zm9yIFFHcmFwaGljc1dlYlZpZXcgYmFzZWQgdmlld3MuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OmFkanVzdFBvaW50Rm9yQ2xpY2tpbmcpOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpUb3VjaEFkanVzdGVyOjpUb3VjaEFkanVzdGVyKToKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorICAg
ICAgICAoaXNDbGlja2FibGVFbGVtZW50KToKKyAgICAgICAgKGhhc01vdXNlTGlzdGVuZXIpOgor
ICAgICAgICAoaXNWYWxpZEZyYW1lT3duZXIpOgorICAgICAgICAobm9kZVRvRWxlbWVudCk6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAxMC0xMC0yMCAgQ2hhbmcgU2h1ICA8Y2hh
bmcuc2h1QG5va2lhLmNvbT4sIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBbUXRdIE1ha2Vz
IDxpbnB1dCB0eXBlPXRleHQ+IGFuZCA8dGV4dGFyZWE+IGZ1bmN0aW9uYWwgd2l0aAorICAgICAg
ICBTcGF0aWFsIE5hdmlnYXRpb24gZW5hYmxlZC4gQmVmb3JlIHRoaXMgcGF0Y2gsIHRoZSBmb2N1
cyBjYW5ub3QKKyAgICAgICAgbW92ZSBhd2F5IGZyb20gaW5wdXQgYm94IG9uY2UgaXQgaXMgaW4u
IFRoaXMgcGF0Y2ggYWxsb3dzIGZvY3VzCisgICAgICAgIG1vdmUgdG8gbmVpZ2hib3Igbm9kZXMg
d2hlbiB0aGUgY2FyZXQgcmVhY2hlcyB0aGUgZWRnZSBvZiB0aGUgdGV4dHMuCisgICAgICAgIFRo
aXMgcGF0Y2ggZG9lcyBub3Qgc3VwcG9ydCB5ZXQgY2FzZXMgd2hlcmUgdGhlIGZvY3VzZWQgPGlu
cHV0PgorICAgICAgICBoYXMgYSBKUyBoYW5kbGVyIGZvciB0aGUgYXJyb3cga2V5cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTUzCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKKzIwMTAtMTEtMDQgIEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAgIERlbGVnYXRlIHNjcm9sbGluZyB2
aWEgYSBzZXBhcmF0ZSBtZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4OTg4CisKKyAgICAgICAgSW1wbGVtZW50IGRlbGVnYXRlZFNjcm9sbFJl
cXVlc3RlZCBhbmQgbWFrZSBpdCBlbWl0IHRoZQorICAgICAgICBzY3JvbGxSZXF1ZXN0ZWQgc2ln
bmFsIGZvciBRdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpkZWxlZ2F0ZWRTY3JvbGxSZXF1
ZXN0ZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIw
MTAtMTEtMDQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgW1F0XSBDbGFyaWZ5IGV4cGVjdGVk
IHJldHVybiB2YWx1ZXMgb2YgaW5uZXJYbWwoKSwgb3V0ZXJYbWwoKQorCisgICAgICAgIElmIHlv
dSBwdXQgSFRNTCBpbiAoZS5nLiB1c2luZyBzZXRIVE1MKCkpIHlvdSB3aWxsIGdldCBIVE1MIG91
dCwKKyAgICAgICAgZXZlbiBpZiB5b3UgbWFya2VkIGl0IHVwIGFzIFhNTC4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4NzYKKworICAgICAgICAq
IEFwaS9xd2ViZWxlbWVudC5jcHA6CisKKzIwMTAtMTEtMDMgIEFuZHJlIFBlZHJhbGhvICA8YW5k
cmUucGVkcmFsaG9AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFVzaW5nIHRoZSBQbGF0Zm9ybSBQbHVnaW4gdG8g
ZGVmaW5lIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIHBhZGRpbmcgb2YgSGl0VGVzdFJlc3Vs
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NDUw
CisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2Vi
VG91Y2hNb2RpZmllcjo6flFXZWJUb3VjaE1vZGlmaWVyKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1Q
bHVnaW46OmNyZWF0ZVRvdWNoTW9kaWZpZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0
UGxhdGZvcm1QbHVnaW4uaDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQ
bHVnaW4uY3BwOgorICAgICAgICAoV2ViUGx1Z2luOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAg
ICAgIChXZWJQbHVnaW46OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAgICogZXhhbXBsZXMvcGxh
dGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6CisgICAgICAgIChUb3VjaE1vZGlmaWVyOjpoaXRUZXN0
UGFkZGluZ0ZvclRvdWNoKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Vi
a2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKFFXZWJUb3VjaE1vZGlmaWVyOjp+UVdlYlRv
dWNoTW9kaWZpZXIpOgorCisyMDEwLTExLTAzICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBbUXRdIFFHV1Y6IEtlZXAgdGhlIHNjcm9sbGluZyBkZWxlZ2F0aW9uIGludGFj
dCB3aGVuIHN3aXRjaGluZyBwYWdlcworCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcu
Y3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVJlc2l6ZXNUb0Nv
bnRlbnRzRm9yUGFnZSk6IFR1cm4gb24vb2ZmCisgICAgICAgIHNjcm9sbGluZyBkZWxlZ2F0aW9u
IGRlcGVuZGluZyBvbiB0aGUgcmVzaXplVG9Db250ZW50cyBtb2RlLgorICAgICAgICAoUUdyYXBo
aWNzV2ViVmlld1ByaXZhdGU6OmRldGFjaEN1cnJlbnRQYWdlKTogVHVybiBvZmYgc2Nyb2xsaW5n
IGRlbGVnYXRpb24uCisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRSZXNpemVzVG9Db250
ZW50cyk6CisKKzIwMTAtMTEtMDMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0
aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAg
ICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBkZWxlZ2F0ZSBzY3JvbGxpbmcgdG8gdGhlIFVJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODkwNworCisg
ICAgICAgIEVuYWJsZSBzY3JvbGxpbmcgZGVsZWdhdGlvbiB3aGVuIHNldFJlc2l6ZXNUb0NvbnRl
bnRzIGlzIGFjdGl2ZS4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldFJlc2l6ZXNUb0NvbnRlbnRzKToKKworMjAxMC0x
MS0wMyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CisKKyAgICAgICAgRm9yIHVubmFt
ZWQgZnJhbWVzLCB3aW5kb3cubmFtZSByZXR1cm5zIGEgZ2VuZXJhdGVkIG5hbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTEKKworICAgICAgICBQ
YXJ0IDEgb2YgMi4KKworICAgICAgICBTdWJzdGl0dXRlIEZyYW1lVHJlZTo6dW5pcXVlTmFtZSgp
IGZvciBGcmFtZVRyZWU6Om5hbWUoKSBpbiB0aGUgUXQgcG9ydC4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpmcmFtZU5hbWUpOgorCisyMDEwLTEx
LTAyICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBTb21l
IHJlZmFjdG9yIGZvciB0ZXhtYXAgdG8gZW5hYmxlIFdlYktpdDI6IHJlbW92ZSBnbG9iYWxzLCBh
bmQgYWxsb3cgVGV4dHVyZU1hcHBlciB0byBleGlzdCB3aXRob3V0IGEgR3JhcGhpY3NDb250ZXh0
LgorICAgICAgICBUaGlzIHdpbGwgYWxsb3cgcmVuZGVyaW5nIHRoZSBUZXh0dXJlTWFwcGVyTm9k
ZSB0cmVlIHdpdGhvdXQgYW4gYWN0aXZlIFFQYWludGVyLCBpbnRvIHRoZSBjdXJyZW50IEdMIGNv
bnRleHQuCisgICAgICAgIE1vc3Qgb2YgdGhlIGNoYW5nZXMgc2ltcGx5IG1vdmUgdGhlIGdsb2Jh
cyBpbiBUZXh0dXJlTWFwcGVyR0wgaW50byBtZW1iZXJzIG9mIHRoYXQgY2xhc3MuCisKKyAgICAg
ICAgW1RleG1hcF0gW1F0XSBUZXh0dXJlIG1hcHBlciBpbml0aWFsIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA3MAorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpy
ZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6
cmVuZGVyQ29tcG9zaXRlZExheWVycyk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpyZW5k
ZXJSZWxhdGl2ZUNvb3Jkcyk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisKKzIwMTAt
MTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDU0
Nz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5OQorICAg
ICAgICBDb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2ViS2l0IDIuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OnNob3dDb250ZXh0TWVudSk6CisKKzIwMTAtMTAtMzEgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisK
KyAgICAgICAgW1F0XSBTdXBwb3J0IG5vZGVzRnJvbVJlY3QgaW4gRFJUCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzE2CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMC0xMC0zMSAgQW5kcmVhcyBL
bGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBTaG9ydC1jaXJjdWl0IFFXZWJQYWdl
OjpzZWxlY3RlZFRleHQoKSBpZiBmcmFtZSBoYXMgbm8gc2VsZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODczNgorCisgICAgICAgIERvIGFu
IGVhcmx5IHJldHVybiBpZiB0aGUgc2VsZWN0aW9uIGlzIGVtcHR5LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgdGhpcyBpcyBjb3ZlcmVkIGJ5IHRzdF9RV2ViUGFnZTo6ZmluZFRleHQoKS4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2VsZWN0ZWRU
ZXh0KToKKworMjAxMC0xMC0zMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBbUXRdIElNOiBE
b24ndCBtYW5pcHVsYXRlIHNlbGVjdGlvbiB2aWEgUmVuZGVyVGV4dENvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzAwCisKKyAgICAgICAg
R28gZGlyZWN0bHkgdGhyb3VnaCB0aGUgRnJhbWUncyBTZWxlY3Rpb25Db250cm9sbGVyIGluc3Rl
YWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGNvdmVyZWQgYnkgdHN0X1FXZWJQ
YWdlOjppbnB1dE1ldGhvZHMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdl
OjppbnB1dE1ldGhvZFF1ZXJ5KToKKworMjAxMC0xMC0yOSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVz
QHJpbS5jb20+CisKKyAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCA3MDk3MS4KKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzA5NzEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTEKKworICAgICAgICBSb2xsaW5n
IG91dCBjaGFuZ2VzZXQgNzA5NzEgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzcw
OTcxPiBzaW5jZQorICAgICAgICBpdCBjYXVzZWQgbGF5b3V0IHRlc3QgZmFpbHVyZXMgb24gYWxs
IGJvdHMuIEluIHBhcnRpY3VsYXIsIHRoZQorICAgICAgICBjaGlsZCBjb3VudCBpbiBhIGdlbmVy
YXRlZCBmcmFtZSBuYW1lIGRpZmZlcnMgYWZ0ZXIgdGhpcyBwYXRjaC4gV2UgbmVlZAorICAgICAg
ICB0byBsb29rIGludG8gdGhpcyBmdXJ0aGVyLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OmZyYW1lTmFtZSk6CisKKzIwMTAtMTAtMjggIEFudG9u
aW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZh
ZmFpLgorCisgICAgICAgIE5lZWRzIGEgIkxpbnV4RWRpdGluZ0JlaGF2aW9yIiwgcGVyaGFwcyB3
aXRoIGEgYmV0dGVyIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2NjI3CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gUXQncyBEUlRTdXBw
b3J0IGNsYXNzIHRvIHRlc3QgdGhlIG5ld2x5IGludHJvZHVjZWQgVW5peCBlZGl0aW5nIGJlaGF2
aW9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEVkaXRpbmdCZWhhdmlv
cik6CisKKzIwMTAtMTAtMjkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgRm9yIHVubmFtZWQgZnJhbWVz
LCB3aW5kb3cubmFtZSByZXR1cm5zIGEgZ2VuZXJhdGVkIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTEKKworICAgICAgICBNb2RpZmllZCBR
dC1wb3J0IHRvIHVzZSBGcmFtZVRyZWU6OnVuaXF1ZU5hbWUoKS4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpmcmFtZU5hbWUpOgorCisyMDEwLTEw
LTI5ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAgIFtRdF0gUVdlYlBhZ2UncyBJbnB1dE1ldGhv
ZCBldmVudCBoYW5kbGluZyBjYWxscyBTaG9ydGN1dE92ZXJyaWRlIGhhbmRsZXIgdG9vCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODY5MgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6IEFkZCBt
aXNzaW5nIGJyZWFrIHN0YXRlbWVudC4KKworMjAxMC0xMC0yOSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBSZW1vdmUgUmVuZGVyVGV4dENvbnRyb2w6OnNldFNlbGVjdGlvblJhbmdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzg3MAorCisgICAgICAg
IENvbnZlcnRlZCBSZW5kZXJUZXh0Q29udHJvbGw6OnNldFNlbGVjdGlvblJhbmdlIHRvIGEgZ2xv
YmFsIGZ1bmN0aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6IENhbGxzIHNldFNlbGVjdGlvblJhbmdl
LgorCisyMDEwLTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIENoYW5nZSBCYWNrRm9yd2FyZExp
c3QgY2xpZW50cyB0byB1c2UgQmFja0ZvcndhcmRMaXN0SW1wbCB0byBwcmVwYXJlIGZvciBmdXJ0
aGVyIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODU3NAorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAg
KFFXZWJIaXN0b3J5OjpjbGVhcik6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5X3AuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2Vi
UGFnZVByaXZhdGUpOgorICAgICAgICBVc2UgQmFja0ZvcndhcmRMaXN0SW1wbC4KKworMjAxMC0x
MC0yOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDg1NzYKKyAgICAgICAgTGV0IFdlYktpdDIgY2xpZW50IGtub3cgd2hl
biBhIGZyYW1lIGlzIGEgZnJhbWVzZXQKKworICAgICAgICBBZGRlZCBhIGJsYW5rIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBuZXcgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldCk6CisKKzIwMTAtMTAtMjkg
IEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gRml4IHRzdF9RV2Vi
RnJhbWUgb24gWFZGQi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ4NjM3CisKKyAgICAgICAgVGhlc2UgdGVzdHMgcmVsaWVkIG9uIGEgd2luZG93IG1h
bmFnZXIgdG8gYWN0aXZhdGUgdGhlIHdpbmRvdy4KKworICAgICAgICBGaXhlczoKKyAgICAgICAg
LSB0c3RfUVdlYkZyYW1lOjpwb3B1cEZvY3VzKCkKKyAgICAgICAgLSB0c3RfUXdlYkZyYW1lOjpp
bnB1dEZpZWxkRm9jdXMoKQorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwOgorCisyMDEwLTEwLTI4ICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAg
IFtUZXhtYXBdIFtRdF0gVGV4dHVyZSBtYXBwZXIgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNzAKKworICAg
ICAgICBCdWlsZCBmaXgsCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1MYXllclByb3h5UUdyYXBoaWNzT2JqZWN0
OjpQbGF0Zm9ybUxheWVyUHJveHlRR3JhcGhpY3NPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6flBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6c2V0Um9vdEdyYXBo
aWNzTGF5ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorCisy
MDEwLTEwLTI4ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFFX
ZWJFbGVtZW50OiBEb24ndCByZXRyaWV2ZSBDU1MgcnVsZXMgdGhyb3VnaCBET01XaW5kb3cuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODUxOQorCisg
ICAgICAgIEphdmFTY3JpcHQgaXMgcHJldmVudGVkIGZyb20gcmV0cmlldmluZyBjcm9zcy1kb21h
aW4gQ1NTIHJ1bGVzIHNpbmNlIHI3MDMzNS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbGxvdyBRV2Vi
RWxlbWVudCB0byByZXRyaXZlIHN0eWxlIHdpdGhvdXQgdGhpcyBsaW1pdGF0aW9uCisgICAgICAg
IGJ5IGFza2luZyB0aGUgRG9jdW1lbnQgZGlyZWN0bHkgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdo
IERPTVdpbmRvdy4KKworICAgICAgICBGaXhlczoKKyAgICAgICAgLSB0c3RfUVdlYkZyYW1lOjpz
ZXRIdG1sV2l0aFJlc291cmNlKCkKKyAgICAgICAgLSB0c3RfUVdlYkVsZW1lbnQ6OnN0eWxlKCkK
KworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6
c3R5bGVQcm9wZXJ0eSk6CisKKzIwMTAtMTAtMjggIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
ICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCisKKyAgICAgICAgTWFrZSBRdCB2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplIG5vdCBhc3Nl
cnQgb24gKDAsIDApIHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4NTI0CisKKyAgICAgICAgV2Ugbm93IHJldHVybiBhbiBpbnZhbGlkIChpc1Zh
bGlkKCkgPT0gZmFsc2UpIFZpZXdwb3J0QXR0cmlidXRlcworICAgICAgICBpbnN0YW5jZSB3aGVu
IHRoZSBzdXBwbGllZCBzaXplIGlzICgwLCAwKS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRBdHRyaWJ1dGVzRm9yU2l6ZSk6CisKKzIw
MTAtMTAtMjcgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICBbUXRdIEZpeCB0c3RfUVdlYkZyYW1lOjpwb3B1cEZvY3VzKCkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODQzMgorCisgICAgICAgIC0gQ2Fs
bCBzZXRGb2N1cygpIGJlZm9yZSBzaG93KCkgdG8gd29yayBhcm91bmQgYSBidXQgaW4gUXQuCisg
ICAgICAgIC0gUmVtb3ZlIHRoZSBjaGVjayBvbiBjb21ibyBhdCB0aGUgZW5kIHNpbmNlIGhpZGVQ
b3B1cCgpIGxlYWRzCisgICAgICAgICAgaW5kaXJlY3RseSB0byBpdHMgZGVzdHJ1Y3Rpb24gYW5k
IHNlZ2ZhdWx0LgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3Bw
OgorCisyMDEwLTEwLTI2ICBKZW5uIEJyYWl0aHdhaXRlICA8amVubmJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERtaXRyeSBUaXRvdi4KKworICAgICAgICBSZXNvdXJjZSB0
cmFja2luZyBmYWlsdXJlIHdoZW4gdHJ5aW5nIHRvIG1vdmUgYSBmcmFtZSBiZXR3ZWVuIGRvY3Vt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3
MTMKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNmZXJMb2FkaW5nUmVz
b3VyY2VGcm9tUGFnZSk6CisgICAgICAgIEVtdHB5IG1ldGhvZC4KKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTAtMTAtMjYgIFlpIFNoZW4gIDx5
aS40LnNoZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
CisKKyAgICAgICAgW1F0XSBTa2lwcGluZyBwb3B1cCBmb2N1cyB0ZXN0IGZvciBzeW1iaWFuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODMyNAorCisg
ICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTEwLTI2
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFVuaXQgdGVzdHM6
IHNldEh0bWwoImRhdGE6dGV4dC9odG1sLC4uLiIpIC0+IGxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0
bWwsLi4uIikpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODMxOQorCisgICAgICAgIFRoZXNlIHRlc3RzIHdlcmUgZmFpbGluZyBzaW5jZSB0aGUgbmV3
IEhUTUwgcGFyc2VyLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNvbnRlbnQgdHlw
ZSBmcm9tIHRoZSBlcnJvciBwYWdlIGFzIHdlbGwuCisKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhp
Y3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RR3JhcGhp
Y3NXZWJWaWV3OjpjcmFzaE9uVmlld2xlc3NXZWJQYWdlcyk6CisgICAgICAgICogdGVzdHMvcXdl
YmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6
ZnJhbWUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAg
ICAgICh0c3RfUVdlYlBhZ2U6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChFcnJvclBhZ2U6OmV4
dGVuc2lvbik6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbik6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbkluSUZyYW1lcyk6CisgICAg
ICAgICh0c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbkluRnJhbWVzZXQpOgorCisyMDEw
LTEwLTI1ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
W1RleG1hcF0gW1F0XSBUZXh0dXJlIG1hcHBlciBpbml0aWFsIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA3MAorCisgICAg
ICAgIEdsdWUgbGF5ZXIgKFdlYkNvcmVTdXBwb3J0KSBjaGFuZ2VzIHRvIGFsbG93IGNvbm5lY3Rp
bmcgVGV4dHVyZU1hcHBlciB0byBhIFF0IFBhZ2VDbGllbnQsIGkuZS4KKyAgICAgICAgYSBRV2Vi
VmlldyBvciBhIFFHcmFwaGljc1dlYlZpZXcuIFRoaXMgZW5hYmxlcyB0aGUgbmV3IHR5cGUsIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLCB0byBiZSByZWNvZ25pemVkIGJvdGggYnkKKyAgICAg
ICAgdGhlIGNvbXBvc2l0b3IgYW5kIGJ5IHRoZSBwYWdlIGNsaWVudC4KKyAgICAgICAgTm90ZSB0
aGF0IHRoaXMgaXMgdGVtcG9yYXJpbHkgYW4gb3B0LWluLCB1bmRlciBVU0UoVEVYVFVSRV9NQVBQ
RVIpCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZV9wLmg6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXcpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTGF5ZXJQcm94eVF0OjpQbGF0Zm9ybUxheWVyUHJveHlRdCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUxheWVyUHJveHlRdDo6flBsYXRmb3JtTGF5ZXJQcm94eVF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXJQcm94eVF0OjpzZXRTaXplQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUxheWVyUHJveHlRV2lkZ2V0OjpQbGF0Zm9ybUxheWVyUHJv
eHlRV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXJQcm94eVFXaWRnZXQ6
OmV2ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXJQcm94eVFXaWRn
ZXQ6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUxheWVyUHJv
eHlRV2lkZ2V0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1MYXllclByb3h5UUdyYXBoaWNzT2JqZWN0OjpQbGF0Zm9ybUxheWVyUHJveHlRR3JhcGhp
Y3NXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1MYXllclByb3h5UUdyYXBoaWNz
T2JqZWN0OjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1MYXll
clByb3h5UUdyYXBoaWNzT2JqZWN0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjptYXJrRm9yU3luYyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c3luY0xheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojp1cGRhdGVDb21wb3NpdGluZ1Njcm9sbFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OmNyZWF0
ZU9yRGVsZXRlT3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNz
V2lkZ2V0OjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UGFnZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6UGFn
ZUNsaWVudFFXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OmFs
bG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVu
dFFHcmFwaGljc1dpZGdldDo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisKKzIwMTAtMTAt
MjUgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUb255IENoYW5nLgorCisgICAgICAgIER1bXAgdGhlIGdlc3R1cmUgc3RhdHVzIG9mIGZyYW1l
IGluIGZyYW1lIGxvYWQgY2FsbGJhY2tzIGluIER1bXBSZW5kZXJUcmVlCisgICAgICAgIGJ5IGFk
ZGluZyBhIG5ldyBtZXRob2QgZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MuCisg
ICAgICAgIE5vdyBvbmx5IGR1bXAgdGhlIGdlc3R1cmUgc3RhdHVzIGluICJEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCIgY2FsbGJhY2suCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00Nzg0OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1
bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0
dXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFBvcFN0YXRl
V2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTAtMTAtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAg
ICAgV2ViS2l0MiBuZWVkcyB0byBwYXNzIHRoZSBjdXJyZW50IGV2ZW50IG1vZGlmaWVyIGZsYWdz
IHdoZW4gcmVxdWVzdGluZyBhIG5ldyB3aW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MTQwCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAob3Blbk5ld1dpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0
ZVdpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICBBZGQg
TmF2aWdhdGlvbkFjdGlvbiBwYXJhbWV0ZXIuCisKKzIwMTAtMTAtMjIgIFlpIFNoZW4gIDx5aS40
LnNoZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisK
KyAgICAgICAgW1F0XSBJbnNwZWN0b3JDbGllbnRRdCBjcmFzaGVzIHdoZW4gZGVsZXRpbmcgYSBx
d2VicGFnZSB3aGljaCBoYXMgYW4gaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODA3OQorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
IChRV2ViUGFnZTo6flFXZWJQYWdlKToKKworMjAxMC0xMC0yMiAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWxsIHdpZGdldHMgYXJlIHJlbmRlcmVkIGluY29y
cmVjdGx5IHdoZW4gcmVuZGVyZWQgdGhyb3VnaCBhIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzc2NworCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IGZvciByZW5kZXJpbmcgd2l0aCB0aWxpbmcuCisKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhp
Y3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RR3JhcGhp
Y3NXZWJWaWV3Ojp3aWRnZXRzUmVuZGVyaW5nVGhyb3VnaENhY2hlKToKKworMjAxMC0xMC0yMSAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBTZW5kaW5nIGEgUUlucHV0TWV0aG9kRXZl
bnQ6OlNlbGVjdGlvbiBldmVudCBmb3JjZXMgdGhlCisgICAgICAgICAgICAgRWRpdG9yIHRvIGdv
IGludG8gQ29tcG9zaXRpb24gbW9kZQorCisgICAgICAgIEltcHJvdmUgUVdlYlBhZ2UgaGFuZGxp
bmcgb2YgaW5wdXQgbWV0aG9kIGV2ZW50czoKKyAgICAgICAgIC0gU2VsZWN0aW9ucyBkb24ndCB0
cmlnZ2VyIGVudGVyaW5nIGNvbXBvc2l0aW9uIG1vZGUuCisgICAgICAgICAtIEhhbmRsZSBtdWx0
aXBsZSBzZWxlY3Rpb25zCisKKyAgICAgICAgQWxzbyByZW1vdmUgcmVkdW5kYW50IGNhbmNlbGxh
dGlvbiBvZiBjb21wb3NpdGlvbiBpbiB0c3RfcXdlYnBhZ2UuCisgICAgICAgIFRoZXJlIGlzIG5v
IGNvbXBvc2l0aW9uIGluIHByb2dyZXNzIGF0IHRoYXQgcG9pbnQuCisKKyAgICAgICAgRmluYWxs
eSwgbW92ZSBpbmZpbml0ZUxvb3BKUygpIHRvIHRoZSBlbmQgb2YgdGhlIHRzdF9xd2VicGFnZSB1
bml0CisgICAgICAgIHRlc3RzIC0gc28geW91IGRvbid0IGhhdmUgdG8gd2FpdCBmb3IgaXQgdG8g
Y29tcGxldGUgd2hlbiBydW5uaW5nCisgICAgICAgIG90aGVyIHRlc3RzLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTYyNQorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RF
dmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeSk6CisgICAgICAgICog
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6
aW5wdXRNZXRob2RzKToKKworMjAxMC0xMC0yMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgor
CisgICAgICAgIFtRdF0gV3JvbmcgbnVsbCBjaGVjayBpbiBQb3B1cE1lbnVRdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NDUKKworICAgICAgICBX
cm9uZyBudWxsIGNoZWNrIGluIFBvcHVwTWVudVF0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51UXQ6OmhpZGUp
OgorCisyMDEwLTEwLTE4ICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxvc3RhcGVua28udmlhdGNo
ZXNsYXZAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisK
KyAgICAgICAgW1F0XSBFeHBvcnQgUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRlcyBjbGFzcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3ODQ1CisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJL
aXR1LmRlZjoKKworMjAxMC0xMC0xOCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogW2NyYXNoXSB3aGVuIEluc3BlY3RvciBPcGVuIGluIENTU1N0eWxlU2VsZWN0
b3I6OmxvYWRQZW5kaW5nSW1hZ2VzKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NjIyNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKKzIwMTAtMTAtMTggIE5vJ2FtIFJvc2VudGhhbCAgPG5v
YW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgIFtRdF0gQUMgcmVuZGVyaW5nIGJ1Z3MKKworICAgICAgICBUaGlzIGZp
eGVzIGEgcmVncmVzc2lvbiB0aGF0IHdhcyBpbnRyb2R1Y2VkIGJ5IG1ha2luZyBzY3JvbGxpbmcg
aW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYXV0b21hdGljLAorICAgICAgICB3aGljaCBtYWRl
IG91ciBleHBsaWNpdCBmdW5jdGlvbiB0byBzY3JvbGwgdGhlIGNvbXBvc2l0aW5nIGxheWVycyBz
dXBlcmZsdW91cywgbWFraW5nIHRoZSBzY3JvbGxpbmcgYmVoYXZpb3IKKyAgICAgICAgd2hlbiBn
cmFwaGljcyBsYXllcnMgYXJlIHByZXNlbnQgaW5jb3JyZWN0LiBUaGUgZml4IHNpbXBseSByZW1v
dmVzIHRob3NlIHJlZHVuZGFudCBmdW5jdGlvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTcxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGlj
c1dpZGdldDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NX
aWRnZXQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lk
Z2V0OjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFn
ZUNsaWVudFF0Lmg6CisKKzIwMTAtMTAtMTggIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1
cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBub2JvZHksIGJ1aWxkIGZp
eC4KKworICAgICAgICBbUXRdIEZpeCB0aGUgYnVpbGQgd2l0aCBNU1ZDLgorCisgICAgICAgIFNw
bGl0dGluZyB0aGUgY29uZGl0aW9uIGluIHR3byB0byBwcmV2ZW50IHFtYWtlIHBhcmVudGhlc2Vz
IGlzc3Vlcy4KKworICAgICAgICAqIEFwaS9EZXJpdmVkU291cmNlcy5wcm86CisKKzIwMTAtMTAt
MTggIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgW1FUXSBVbmFibGUgdG8gbG9hZCBwYWdlcyBvbiBR
dFRlc3RCcm93c2VyIGFmdGVyIGNhbmNlbGluZyBhIHBhZ2UgbG9hZC4gCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzgyNworCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKworMjAx
MC0xMC0xNSAgUWkgWmhhbmcgIDxxaS4yLnpoYW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gd2luZG93LmNsb3NlKCkgZG9l
c24ndCB3b3JrIGluIHF0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NjE4NgorCisgICAgICAgIEludHJvZHVjZSBuZXcgYXR0cmlidXRlIGluIFFXZWJT
ZXR0aW5ncyB0byB0cmlnZ2VyICJzZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93IgorCisgICAg
ICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRl
OjphcHBseSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDEwLTEwLTE1ICBB
bmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFVuYnJlYWsgc2Nyb2xs
aW5nIHRoZSBDb250ZW50c0xheWVyIHdpdGggUVdlYlZpZXcKKworICAgICAgICByNjk3NzcgYnJv
a2Ugc2Nyb2xsaW5nIHRoZSBjb250ZW50cyBsYXllciBpbiBRV2ViVmlldyBieSBub3QgcmVzdG9y
aW5nCisgICAgICAgIHRoZSBwYWludGVyIGNsaXAgYWZ0ZXIgcGFpbnRpbmcgZWFjaCBwYXJ0IG9m
IHRoZSBkaXJ0eSByZWdpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vcmRzKToKKworMjAxMC0wOS0y
NyBEYXdpdCBBbGVtYXllaHUgIDxhZGF3aXRAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gQWRkZWQgZnVuY3Rpb25zIGZvciBvYnRh
aW5pbmcgYW5kIGNoZWNraW5nIHRoZSBzdXBwb3J0ZWQgY29udGVudCB0eXBlcy4KKyAgICAgICAg
aHR0cDovL3dlYmtpdC5vcmcvYi8zNzg4MAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKGV4dHJhY3RDb250ZW50VHlwZUZyb21IYXNoKToKKyAgICAgICAgKGV4dHJhY3RD
b250ZW50VHlwZUZyb21QbHVnaW5WZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2U6OnN1cHBvcnRl
ZENvbnRlbnRUeXBlcyk6CisgICAgICAgIChRV2ViUGFnZTo6c3VwcG9ydHNDb250ZW50VHlwZSk6
CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRz
dF9RV2ViUGFnZTo6c3VwcG9ydGVkQ29udGVudFR5cGUpOgorCisyMDEwLTEwLTE0ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByNjk3OTUuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzY5Nzk1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzY4NworCisgICAgICAgICdTZWUgZGlzY3Vzc2lvbiBhdCB3ZWJraXQub3JnL2IvNDc2
MDknIChSZXF1ZXN0ZWQgYnkgbXdlbmdlIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3kpOgorCisyMDEwLTEwLTE0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFtRdF0gRml4IGh0
dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC10by1leHRlcm5hbC11cmwuaHRtbAorCisgICAgICAgIFN1
cHBvcnQgdGhlIHRlc3QgaW4gRnJhbWVMb2FkZXJDbGllbnRRdCBhbmQgdW5za2lwLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzYwOQorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5IYW5kbGVSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3kpOgorCisyMDEwLTEwLTE0ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgW1RleG1hcF0gW1F0XSBUZXh0dXJlIG1hcHBlciBpbml0aWFsIGltcGxl
bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzA3MAorCisgICAgICAgIEFsbG93IHJlbmRlcmluZyBvZiBhY2NlbGVyYXRlZC1jb21wb3Np
dGluZyB3aXRoIFRleHR1cmVNYXBwZXIsIGluc2lkZSBhIFFXZWJGcmFtZS4gVGhlIGZyYW1lIHdp
bGwgcmVuZGVyIHRoZSByZWd1bGFyIGNvbnRlbnQsCisgICAgICAgIGVpdGhlciBub3JtYWxseSBv
ciB0aHJvdWdoIHRpbGVkIGJhY2tpbmdzdG9yZSwgdGhlbiBsZXQgdGhlIFRleHR1cmVNYXBwZXIg
bGF5ZXIgcmVuZGVyIGl0c2VsZiB0byB0aGUgYWN0aXZlIGNvbnRleHQsIGFuZAorICAgICAgICB0
aGVuIHJlbmRlciB0aGUgc2Nyb2xsYmFyIGFuZCBwYW4gaWNvbi4gVGhpcyBpcyBkaWZmZXJlbnQg
ZnJvbSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggdXNlcyBhZGRpdGlvbmFsIFFH
cmFwaGljc0l0ZW1zIGZvciBBQworICAgICAgICBhbmQgdGhlIHNjcm9sbGJhciBvdmVybGF5Lgor
CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNz
V2ViVmlldzo6cGFpbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAo
UVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vcmRzKToKKworMjAxMC0xMC0xMyAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQzOTg3CisgICAgICAgIFN3aXRjaCBYTUxIdHRwUmVxdWVzdCwgRmls
ZVJlYWRlciwgYW5kIEZpbGVSZWFkZXJTeW5jIHRvIHVzZSBhIFN0cmluZ2J1aWxkZXIKKyAgICAg
ICAgdG8gY29uc3RydWN0IHRoZWlyIGludGVybmFsIHJlc3VsdCBzdHJpbmcuICBSZW1vdmUgU2Ny
aXB0U3RyaW5nICh0aGlzIGlzIG5vdworICAgICAgICByZWR1bmRhbnQpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisKKzIwMTAtMTAtMTMgIERp
bnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIFtRdF0gVXBkYXRlIC5kZWYgZmlsZSBmb3IgU3ltYmlh
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc1NDAK
KworICAgICAgICBVcGRhdGVkIHN5bWJvbHMgZm9yIFN5bWJpYW4gLSBhZGRlZCB2aWV3cG9ydEF0
dHJpYnV0ZXNGb3JTaXplIGFuZAorICAgICAgICBtYWRlIHZpZXdwb3J0Q29uZmlndXJhdGlvbkZv
clNpemUgYWJzZW50IGJhc2VkIG9uIHRoZSBBUEkgY2hhbmdlIGluCisgICAgICAgIDQ3MzI1CisK
KyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0xMC0xMiAgRGF2
aWQgTGVvbmcgIDxkYXZpZC5sZW9uZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIEVuYWJsZSBOZXRzY2FwZSBwbHVnaW4gbWV0
YWRhdGEgY2FjaGluZyBvbiBMaW51eCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ2Mjg3CisgICAgICAgIAorICAgICAgICBRV2ViU2V0dGluZ3M6OmVu
YWJsZVBlcnNpc3RlbnRTdG9yYWdlIHdpbGwgbm93IHN0b3JlIHRoZSBuZXRzY2FwZQorICAgICAg
ICBwbHVnaW4gY2FjaGUgdG8gUURlc2t0b3BTZXJ2aWNlczo6Q2FjaGVMb2NhdGlvbi4KKyAgICAg
ICAgCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKToKKworMjAxMC0xMC0xMiAgWWFlbCBBaGFyb24g
IDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KKworICAgICAgICBbUXRdIEVkaXRpbmcgY29tbWFuZHMgc2hvdWxkIG5vdCBiZSBleGVj
dXRlZCBvbiBub24tZWRpdGFibGUgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NDI2CisKKyAgICAgICAgUmVtb3ZlIGNhbGxzIHRvIGVk
aXRvcigpLT5jb21tYW5kKCkgd2hlbiB3ZSBhcmUgbm90IGluIGVkaXRhYmxlIGNvbnRlbnQuCisg
ICAgICAgIFRoZXJlIGlzIG5vIHZhbHVlIGluIGRvaW5nIHRoYXQsIGFuZCBpbiBzb21lIGNhc2Vz
LCBpdCBwcmV2ZW50cyBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6CisKKzIwMTAtMTAtMDggIEh1aSBIdWFuZyAgPGh1aS4yLmh1YW5nQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBpZmRlZiBvdXQgY29kZSB0aGF0IHJld3JpdGVzIEZsYXNoIFBsdWctaW4gd21vZGUgZm9yIFN5
bWJpYW4gYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzNDg0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdp
bik6CisKKzIwMTAtMTAtMDcgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQVBJOiBW
aWV3cG9ydENvbmZpZ3VyYXRpb24gPT4gVmlld3BvcnRBcmd1bWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MzI1CisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRlczo6Vmll
d3BvcnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXM6
On5WaWV3cG9ydEF0dHJpYnV0ZXMpOgorICAgICAgICAoUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmli
dXRlczo6b3BlcmF0b3I9KToKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNG
b3JTaXplKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2VfcC5oOgorICAgICAgICAoUXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlOjpRdFZpZXdwb3J0
QXR0cmlidXRlc1ByaXZhdGUpOgorCisyMDEwLTEwLTA3ICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEZpeGluZyB2aWV3cG9ydCBtZXRhIHRhZyB1c2Vy
LXNjYWxhYmxlIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NzMzMAorCisgICAgICAgIHVzZXItc2NhbGFibGUgYXR0cmlidXRlIHdhcyBu
b3QgY29uc2lkZXJlZCBpbiB2aWV3cG9ydCBtZXRhIHRhZyBoYW5kbGluZy4KKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0
aW9uRm9yU2l6ZSk6CisKKzIwMTAtMTAtMDUgIERpZWdvIEdvbnphbGV6ICA8ZGllZ29oY2dAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFtRdF0gSG9vayB1cCBhY2NlbGVyb21ldGVyIGRhdGEgdmlhIFF0IERldmljZU1vdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcxMDUKKworICAg
ICAgICBHZXQgYWNjZWxlcm9tZXRlciBuZWNlc3NhcnkgZGF0YSB2aWEgUXQgbW9iaWxpdHkgbGli
cmFyeSB1c2luZyBhCisgICAgICAgIHByb3ZpZGVyIGNsYXNzLiBFbmFibGUsIGFsc28gdGhlIFJv
dGF0aW9uUmF0ZSB1c2luZyB0aGUgY3VycmVudCBkZXZpY2UKKyAgICAgICAgb3JpZW50YXRpb24g
cHJvdmlkZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VNb3Rpb25DbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRRdDo6RGV2aWNlTW90
aW9uQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50UXQ6On5E
ZXZpY2VNb3Rpb25DbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGll
bnRRdDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGll
bnRRdDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVu
dFF0OjpjdXJyZW50RGV2aWNlTW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlv
bkNsaWVudFF0OjpjaGFuZ2VEZXZpY2VNb3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0RldmljZU1vdGlvbkNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNl
TW90aW9uUHJvdmlkZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90
aW9uUHJvdmlkZXJRdDo6RGV2aWNlTW90aW9uUHJvdmlkZXJRdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25Qcm92aWRlclF0Ojp+RGV2aWNlTW90aW9uUHJvdmlkZXJRdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25Qcm92aWRlclF0OjpzdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VNb3Rpb25Qcm92aWRlclF0OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU1vdGlvblByb3ZpZGVyUXQ6OmZpbHRlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRGV2aWNlTW90aW9uUHJvdmlkZXJRdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRl
dmljZU1vdGlvblByb3ZpZGVyUXQ6OmN1cnJlbnREZXZpY2VNb3Rpb24pOgorCisyMDEwLTEwLTA3
ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFNvbWUg
dmlld3BvcnQgbWV0YSB0YWcgYXBpIHJlZmFjdG9yaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMzNAorCisgICAgICAgIFdlYkNvcmU6OmZpbmRD
b25maWd1cmF0aW9uRm9yVmlld3BvcnREYXRhIHJlbmFtZWQgdG8gY29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcy4KKyAgICAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzOjpsYXlvdXRWaWV3
cG9ydCByZW5hbWVkIHRvIGxheW91dFNpemUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkZvclNpemUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp2aWV3cG9ydEFzVGV4dCk6CisKKzIwMTAtMTAt
MDcgIEtlaXRoIEt5eml2YXQgIDxrZWl0aC5reXppdmF0QG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIFVwZGF0ZSAuZGVmIGZp
bGUgZm9yIFN5bWJpYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3MzM2CisgICAgICAgIEZpeCBhbmQgcmUtZnJlZXplIHN5bWJvbHMgZm9yIHN5bWJp
YW4gLSB2aWV3cG9ydENvbmZpZ3VyYXRpb25Gb3JTaXplCisgICAgICAgIEFQSSBjaGFuZ2VkLCBh
bGxvd0dlb2xvY2F0aW9uUmVxdWVzdCByZW1vdmVkIGZyb20gQVBJLCBzZXZlcmFsCisgICAgICAg
IER1bXBSZW5kZXJUcmVlIHN1cHBvcnQgY2FsbHMgYWRkZWQuCisKKyAgICAgICAgKiBzeW1iaWFu
L2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0xMC0wNiAgUmFnbmVyIE1hZ2FsaGFlcyAgPHJh
Z25lci5tYWdhbGhhZXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRv
bmlvIEdvbWVzLgorCisgICAgICAgIFtRdF0gRHVwbGljYXRlZCBjb2RlIGluIFFXZWJQYWdlUHJp
dmF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcx
OTUKKworICAgICAgICBSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGZyb20gUVdlYlBhZ2VQcml2YXRl
IGNsYXNzIGZvciBRR3JhcGhpY3NWaWV3IGFuZCBRV2lkZ2V0J3MgbW91c2UgZXZlbnRzLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91
c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQp
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVRyaXBsZUNsaWNrRXZlbnQpOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OndoZWVsRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnRW50ZXJF
dmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyYWdMZWF2ZUV2ZW50KToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OmRyb3BFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAxMC0x
MC0wNiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBS
ZW5hbWluZyBXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gdG8gV2ViQ29yZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzI2OAorCisgICAgICAgIFJlbmFtaW5nIFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJh
dGlvbiB0byBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMKKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uRm9yU2l6
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3Bw
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKwor
MjAxMC0xMC0wNSAgQW5kcmV3IFdpbHNvbiAgPGF0d2lsc29uQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIE5vdGlmaWNhdGlvbiBv
bmNsaWNrKCkgZXZlbnRzIGRvbid0IGFjdCBsaWtlIHVzZXIgZ2VzdHVyZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTM3CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uQ2xp
Y2tlZCk6CisgICAgICAgIFVzZSBVc2VyR2VzdHVyZUluZGljYXRvciB0byBtYWtlIHN1cmUgY2xp
Y2sgZXZlbnRzIGFyZSB0cmVhdGVkIGxpa2UgdXNlciBnZXN0dXJlcy4KKworMjAxMC0xMC0wNSAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIEZpeCB1cmwgY29udmVyc2lvbiBpbiBRV2Vi
SGlzdG9yeQorCisgICAgICAgIENvbnZlcnRpbmcgZnJvbSBLVVJMIHRvIFdGVDo6U3RyaW5nIHRv
IFFVcmwgZG9lcyBub3QKKyAgICAgICAgcGVybWl0IHByb3BlciBwZXJjZW50IGVuY29kaW5nIGxh
dGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NzA0OAorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0
b3J5SXRlbTo6b3JpZ2luYWxVcmwpOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjp1cmwpOgor
CisyMDEwLTEwLTA1ICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRzQHJpbS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIE1ha2UgYnVp
bGQgd29yayB3aXRoIFFUX05PX0NVUlNPUgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDYwOTcKKworICAgICAgICBBZGQgYSBtaXNzaW5nIHNlbWljb2xv
bi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRDdXJzb3IpOgorCisyMDEwLTEwLTA1ICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeC4KKworICAgICAgICBbU3ltYmlhbl0gRml4IGJ1aWxkIGlzc3VlIGR1
ZSB0byBnYXBzIGluIG9yZGluYWxzIGluIHRoZSBkZWYgZmlsZQorCisgICAgICAgIFJlc3RvcmUg
cHJldmlvdXNseSByZW1vdmVkIHN5bWJvbHMgYW5kIG1hcmsgdGhlbSBhYnNlbnQgaW5zdGVhZC4g
V2UgbXVzdAorICAgICAgICBub3QgcmVtb3ZlIHN5bWJvbHMgZnJvbSB0aGlzIGZpbGUsIGJlY2F1
c2UgaXQgYnJlYWtzIGJpbmFyeSBjb21wYXRpYmlsaXR5CisgICAgICAgICh3aGVuIHJlLWFzc2ln
bmluZyB0aGUgb3JkaW5hbHMgb2YgdGhlIGZvbGxvd2luZyBzeW1ib2xzKSBvciBpdCBjYXVzZXMg
YnVpbGQKKyAgICAgICAgYnJlYWthZ2Ugd2hlbiBpbnN0ZWFkIGhhdmluZyBhIGdhcCBpbiB0aGUg
b3JkaW5hbCBzZXF1ZW5jZS4gSW5zdGVhZCByZW1vdmluZworICAgICAgICBhIHN5bWJvbCBpcyBk
b25lIGJ5IG1hcmtpbmcgaXQgYXMgYWJzZW50LgorCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0
V2ViS2l0dS5kZWY6CisKKzIwMTAtMTAtMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW5hbWUg
UmVkaXJlY3RTY2hlZHVsZXIgdG8gTmF2aWdhdGlvblNjaGVkdWxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwMzcKKworICAgICAgICBVcGRhdGUg
Zm9yIG5hbWUgY2hhbmdlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKworMjAxMC0xMC0wNCAgRGllZ28gR29uemFsZXog
IDxkaWVnb2hjZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gSG9vayB1cCBEZXZpY2VPcmllbnRhdGlv
biBkYXRhIGZvciBRdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzA1MgorCisgICAgICAgIEdldCBEZXZpY2VPcmllbnRhdGlvbiBuZWNl
c3NhcnkgZGF0YSB2aWEgUXQgbW9iaWxpdHkgbGlicmFyeQorICAgICAgICB1c2luZyBhIHByb3Zp
ZGVyIGNsYXNzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25D
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0
OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uQ2xpZW50UXQ6On5EZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UXQ6OnN0YXJ0VXBkYXRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRRdDo6c3RvcFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UXQ6Omxhc3RPcmllbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0OjpjaGFu
Z2VEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb25Qcm92aWRlclF0OjpEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyUXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlclF0Ojp+RGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlclF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJRdDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
clF0OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJR
dDo6ZmlsdGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyUXQ6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJRdDo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlclF0OjpoYXNBbHBoYSk6CisKKzIwMTAtMDktMjggIEx1aXogQWdvc3Rpbmkg
IDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgVmlld3BvcnQgZGF0YSBjaGFuZ2Ug
bm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDY3NTUKKworICAgICAgICBSZWdhcmRpbmcgdmlld3BvcnQgbWV0YSB0YWdzLCB3aGF0
IG1hdHRlcnMgZm9yIGJyb3dzZXIgZGV2ZWxvcGVycyBpcyB0byBrbm93IHdoZW4gdGhlIHZpZXdw
b3J0IGRhdGEgaGFzCisgICAgICAgIGNoYW5nZWQgYW5kIGl0cyBjdXJyZW50IHZhbHVlLiBWaWV3
cG9ydCBkYXRhIGJlbG9uZ3MgdG8gdGhlIGRvY3VtZW50LCBidXQgaXQgaXMgdXNlZnVsIHRvIGtl
ZXAgdGhlIGN1cnJlbnQKKyAgICAgICAgdmlld3BvcnQgZGF0YSBpbiBQYWdlIGFzIGEgcmVmZXJl
bmNlLCB0byBiZSBhYmxlIHRvIHNlbmQgbm90aWZpY2F0aW9ucyBvbmx5IHdoZW4gdGhlIGN1cnJl
bnQgdmlld3BvcnQKKyAgICAgICAgaGFzIGNoYW5nZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp2aWV3cG9ydEFyZ3VtZW50cyk6
CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uRm9yU2l6ZSk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dmlld3BvcnRE
YXRhQ2hhbmdlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQpOgorCisyMDEw
LTEwLTA0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAg
ICAgICBSdWJiZXItc3RhbXBlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFtRdF0g
Rml4IHBsYXRmb3JtIHBsdWdpbiBzdXBwb3J0IGFmdGVyIHI2ODEyOAorCisgICAgICAgIFJlcGxh
Y2VkIHRoZSBxb2JqZWN0X2Nhc3QgZnJvbSB0aGUgUU9iamVjdCBkZXJpdmVkIGV4dGVuc2lvbiB0
byBhCisgICAgICAgIHN0YXRpY19jYXN0LiBxb2JqZWN0X2Nhc3Qgd29ya3MgYnkgY29tcGFyaW5n
IHBvaW50ZXJzIHRvIG1ldGEtb2JqZWN0CisgICAgICAgIGluc3RhbmNlcywgb2Ygd2hpY2ggdGhl
cmUgYXJlIHR3byBlYWNoOiBvbmUgY29tcGlsZWQgaW50byBXZWJLaXQgYW5kCisgICAgICAgIG9u
ZSBjb21waWxlZCBpbnRvIHRoZSBwbHVnaW4uCisKKyAgICAgICAgVGhlIHBsYXRmb3JtIHBsdWdp
biBlbnN1cmVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgaW50ZXJmYWNlIGNvbnRyYWN0CisgICAgICAg
IHRocm91Z2ggaXRzIHZlcnNpb24gYW5kIHRoZSBpbml0aWFsIHNhZmUgcW9iamVjdF9jYXN0IGZy
b20gUU9iamVjdAorICAgICAgICB0byBRV2ViS2l0UGxhdGZvcm1QbHVnaW4uIEFmdGVyIHRoYXQg
aXQgaXMgc2FmZSB0byB1c2Ugc3RhdGljX2Nhc3QsCisgICAgICAgIGFuZCB3aXRoIHRoZSByZWNl
bnQgY2hhbmdlcyBldmVuIHJlcXVpcmVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQ
bGF0Zm9ybVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpj
cmVhdGVTZWxlY3RJbnB1dE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1
Z2luOjpjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXRQ
bGF0Zm9ybVBsdWdpbjo6Y3JlYXRlSGFwdGljRmVlZGJhY2tQbGF5ZXIpOgorCisyMDEwLTEwLTAy
ICBEaWVnbyBHb256YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBQcm92aWRl
IFF0IHN1cHBvcnQgZm9yIERldmljZU1vdGlvbi9PcmllbnRhdGlvbiBjbGllbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA1MQorCisgICAgICAg
IER1bW15IGltcGxlbWVudGF0aW9uIG9mIERldmljZU1vdGlvbi9PcmllbnRhdGlvbiBjbGllbnQg
Y2xhc3NlcworICAgICAgICB0byBtYWtlIHBvc3NpYmxlIHRvIGhvb2sgdXAgbW90aW9uL29yaWVu
dGF0aW9uIGRhdGEKKyAgICAgICAgaW4gZnVydGhlciBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudFF0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRRdDo6RGV2
aWNlTW90aW9uQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50
UXQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50
UXQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50
UXQ6OnN0b3BVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRR
dDo6Y3VycmVudERldmljZU1vdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25D
bGllbnRRdDo6ZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50UXQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZXZpY2VNb3Rpb25DbGllbnRRdDo6fkRldmljZU1vdGlvbkNsaWVudFF0KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0OjpEZXZpY2VPcmll
bnRhdGlvbkNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50UXQ6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnRRdDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbkNsaWVudFF0OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNl
T3JpZW50YXRpb25DbGllbnRRdDo6bGFzdE9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50UXQ6OmRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRl
c3Ryb3llZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGll
bnRRdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50
UXQ6On5EZXZpY2VPcmllbnRhdGlvbkNsaWVudFF0KToKKworMjAxMC0wOS0zMCAgUm9iZXJ0IEhv
Z2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBL
bGluZy4KKworICAgICAgICBbUXRdIFN1cHBvcnQgZm9yIFBsYWluVGV4dENvbnRyb2xsZXIKKwor
ICAgICAgICBVbnNraXAgZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2Jhc2ljLWl0ZXJhdGlvbi5odG1s
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODA1
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGxhaW5UZXh0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEwLTA5LTMw
ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIFY4IHBvcnQ6IFVuYnJl
YWsgYnVpbGQKKworICAgICAgICBBZGQgbWlzc2luZyA8d3RmL3RleHQvQ1N0cmluZy5oPiBpbmNs
dWRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuY3BwOgor
CisyMDEwLTA5LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRd
IENyYXNoIGlmIGFuIHNjZW5lIHdpdGggYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5b3V0IGR1
cmluZyB0aGUgcGFpbnQgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ2ODEyCisKKyAgICAgICAgRGVsYXkgdGhlIGRlbGV0aW9uIG9mIHRoZSBv
dmVybGF5IGFmdGVyIHRoZSBjdXJyZW50IGV2ZW50IGlzIHByb2Nlc3NlZC4KKworICAgICAgICBS
ZW1vdmluZyB0aGUgb3ZlcmxheSBjYW4gc29tZXRpbWVzIGJlIGRvbmUgaW5zaWRlIHRoZSByZW5k
ZXJpbmcgY29kZSBvZgorICAgICAgICB0aGUgb3ZlcmxheSBpdHNlbGYuIFdoZW4gdGhlIHJlbmRl
cmluZyBjb2RlIGlzIHVzaW5nIHRoZSByZWZlcmVuY2UgYWZ0ZXIKKyAgICAgICAgdGhlIGRlbGV0
aW9uIG9mIHRoZSBvdmVybGF5LCBXZWJLaXQgY3Jhc2hlcy4KKworICAgICAgICAqIEFwaS9xZ3Jh
cGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpvdmVy
bGF5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6flBhZ2VDbGllbnRRR3JhcGhp
Y3NXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6
Y3JlYXRlT3JEZWxldGVPdmVybGF5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xp
ZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OlBh
Z2VDbGllbnRRR3JhcGhpY3NXaWRnZXQpOgorCisyMDEwLTA5LTMwICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIEZpeCB0c3RfUVdlYlBhZ2U6Omdlb2xvY2F0aW9u
UmVxdWVzdEpTKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2ODE0CisKKyAgICAgICAgRGlzYWJsZSB0aGUgdGVzdC4gVGhpcyB0ZXN0IGNhbm5vdCBw
YXNzIHdpdGggYQorICAgICAgICBzdGFuZGFyZCBidWlsZCBvZiBXZWJLaXQsIGl0IGlzIGRpc2Fi
bGVkIHVudGlsIHRoZSBBUEkgaXMgZmluaWxpemVkLgorCisgICAgICAgICogdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Z2VvbG9jYXRpb25S
ZXF1ZXN0SlMpOgorCisyMDEwLTA5LTI5ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAg
ICBbUXRdIERvbid0IGtlZXAgbG9jYWwgcmVmZXJlbmNlIHRvIFFHcmFwaGljc0l0ZW1PdmVybGF5
IGluIFFHV1ZQcml2YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NjgxMgorCisgICAgICAgIEdldCB0aGUgUUdyYXBoaWNzSXRlbU92ZXJsYXkqIHZp
YSB0aGUgUVdlYlBhZ2VDbGllbnQgKGQtPnBhZ2UtPmQtPmNsaWVudCkKKyAgICAgICAgaW5zdGVh
ZCBvZiBrZWVwaW5nIGEgbG9jYWwgcG9pbnRlciB0byBpdC4KKworICAgICAgICBUaGlzIGlzIGNs
ZWFudXAgZm9yIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dl
YnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6Om92ZXJsYXkpOgor
ICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFpbnQpOgorICAgICAgICAoUUdyYXBoaWNzV2Vi
Vmlldzo6c2V0UGFnZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojp1cGRhdGVHZW9tZXRy
eSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRHZW9tZXRyeSk6CisKKzIwMTAtMDkt
MjggIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgorCisgICAgICAgIEFkZGVkIG9sZFBhZ2UgcGFyYW0gdG8g
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjY2MworCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
Lmg6CisKKzIwMTAtMDktMjggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKwor
ICAgICAgICBbUXRdIENsZWFuIHVwIFFXZWJQYWdlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb24gQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjczMAor
CisgICAgICAgIC0gUGFzcyBRU2l6ZSBwYXJhbWV0ZXIgYXMgY29uc3QtcmVmZXJlbmNlCisgICAg
ICAgIC0gU3R5bGUgZml4ZXMKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uRm9yU2l6ZSk6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmg6CisKKzIwMTAtMDktMjggIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KKworICAgICAg
ICBVbmRlZmluZWQgcmVmZXJlbmNlIGVycm9ycyB3aGVuIGxpbmtpbmcgZHVlIHRvIGdwZXJmIGFu
ZCBpbmxpbmluZy4KKyAgICAgICAgd2Via2l0Lm9yZy9iLzI5MjQ0CisKKyAgICAgICAgRUZMIENN
YWtlIGNoYW5nZXMgYnkgTGVhbmRybyBQZXJlaXJhIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgor
CisgICAgICAgIFJlZmFjdG9yIGdwZXJmIGNvZGUgZ2VuZXJhdGlvbiBhbmQgdXNhZ2UgdG8gZml4
IHRoZSBkZWJ1ZyBidWlsZCB3aXRoIGdjYz40LjQuCisgICAgICAgIEhpdGhlcnRvIGdwZXJmIGdl
bmVyYXRlZCBDIGNvZGUsIHRoZXNlIGZpbGVzIHdlcmUgaW5jbHVkZWQgaW4gbXVsdGlwbGUgQysr
IGZpbGVzIGFjcm9zcyBXZWJDb3JlCisgICAgICAgIHRvIGFjY2VzcyB0aGUgZnVuY3Rpb25hbGl0
eSBwcm92aWRlZC4gVGhpcyByZXN1bHRlZCBpbiBkZWJ1ZyBidWlsZCBmYWlsdXJlIHdpdGggbmV3
ZXIgZ2NjIHZlcnNpb25zCisgICAgICAgIGJlY2F1c2Ugb2YgYSBiZWhhdmlvdXIgY2hhbmdlIG9m
IGdjYywgd2hpY2ggZGlzYWJsZXMgQyBzdHlsZSBpbmxpbmluZyBpbiBkZWJ1ZyBtb2RlLgorICAg
ICAgICBUaGUgbWFrZS1oYXNoLXRvb2xzLnBsIHNjcmlwdCBsZXRzIGdwZXJmIGdlbmVyYXRlIEMr
KyBjb2RlIGZvciBhbGwgZ3BlcmYgZmlsZXMgbm93LCB3aGljaCBhcmUgY29tcGlsZWQKKyAgICAg
ICAgaW4gdGhlaXIgb3duIGNvbXBpbGF0aW9uIHVuaXQuCisgICAgICAgIFRoZSBmdW5jdGlvbmFs
aXR5IHByb3ZpZGVkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSBpcyB3cmFwcGVkIGJlaGluZCBIYXNo
VG9vbHMuaCwgc28gdGhlcmUgaXMgbm8gbmVlZAorICAgICAgICBmb3IgbXVsdGlwbGUgaW5jbHVz
aW9ucyBvZiBnZW5lcmF0ZWQgQyBmaWxlcyB0byBhY2Nlc3MgdGhlc2UgZnVuY3Rpb25zLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDEwLTA5
LTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFJlbW92ZSBz
dXBwb3J0IGZvciBRdCA0LjUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2NzE4CisKKyAgICAgICAgUmVtb3ZlIHRoZSBjb2RlIGZvciB2ZXJzaW9ucyBv
ZiBRdCBwcmlvciB0byA0LjYuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6
CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlUmVzaXplc1RvQ29udGVu
dHNGb3JQYWdlKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OlFHcmFwaGljc1dlYlZpZXcp
OgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2NlbmVFdmVudCk6CisgICAgICAgIChRR3Jh
cGhpY3NXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBhZ2UpOgorICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUp
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6dG91Y2hFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6aW5wdXRNZXRo
b2RRdWVyeSk6CisgICAgICAgIChRV2ViUGFnZTo6dmlldyk6CisgICAgICAgIChRV2ViUGFnZTo6
ZXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6CisgICAgICAgIChRV2ViVmll
d1ByaXZhdGU6OmRldGFjaEN1cnJlbnRQYWdlKToKKyAgICAgICAgKFFXZWJWaWV3OjpldmVudCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFX
aWRnZXQ6OnNldElucHV0TWV0aG9kSGludHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVu
dFFHcmFwaGljc1dpZGdldDo6c2V0SW5wdXRNZXRob2RFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OmlucHV0TWV0aG9kRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzZXRJbnB1dE1ldGhvZEhp
bnRzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlFHcmFwaGljc0l0ZW1PdmVybGF5OjpwYWdlKToKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzX2RhdGEp
OgorICAgICAgICAoaW5wdXRNZXRob2RIaW50cyk6CisgICAgICAgIChpbnB1dE1ldGhvZEVuYWJs
ZWQpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMpOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjpvcmlnaW5hdGluZ09iamVjdEluTmV0d29ya1JlcXVlc3RzKToKKyAgICAgICAg
KiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FXZWJWaWV3
OjpyZXVzZVBhZ2UpOgorCisyMDEwLTA5LTI4ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUu
dmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICBDbGVhbiB1cCBRV2ViUGFnZSBpbml0aWFsaXphdGlvbgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCisyMDEwLTA5
LTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
W1F0XSB0c3RfUVdlYlBhZ2U6OnRlc3RTdG9wU2NoZWR1bGVkUGFnZVJlZnJlc2goKSBmYWlscyBv
biBNZWVHbyBoYW5kc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NjcwNgorCisgICAgICAgIFRoZSB0ZXN0IHJlcXVpcmUgdGhlIG5ldHdvcmsgdG8g
c3VjY2VlZCBvciBmYWlsIGluIG9yZGVyIHRvIHdvcmsuCisgICAgICAgIE9uIE1lZUdvLCB0aGUg
bmV0d29yayBjYW4gc2ltcGx5IHRpbWVvdXQgdGhlIGJlY2F1c2Ugb2YgdGhlIG5ldHdvcmQgYWNj
ZXNzCisgICAgICAgIG1hbmFnZW1lbnQuIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIHRlc3QgdXNlIGxv
Y2FsIFVSTHMgdG8gYXZvaWQgdGhlCisgICAgICAgIHByb2JsZW0uCisKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoVGVzdE5ldHdvcmtNYW5hZ2Vy
OjpUZXN0TmV0d29ya01hbmFnZXIpOgorCisyMDEwLTA5LTI3ICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBbUXRdIFJlbW92ZSBzZXREZXZp
Y2VTaXplIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2MzQ3CisKKyAgICAgICAgUmVtb3ZlIG91ciBzZXREZXZpY2VIZWlnaHQoKSBBUEkg
YW5kIG9idGFpbiBpdCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlCisgICAgICAgIHN5c3RlbS4gQWxz
byBmb3IgdGVzdGluZyBwdXJwb3NlcywgbWFrZSBpdCBwb3NzaWJsZSB0byBvdmVycmlkZSB0aGUK
KyAgICAgICAgdmFsdWVzIHZpYSB0d28gbmV3bHkgaW50cm9kdWNlZCBlbnZpcm9ubWVudCB2YXJp
YWJsZXMuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICog
QXBpL3FncmFwaGljc3dlYnZpZXcuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoZ2V0aW50ZW52KToKKyAgICAgICAgKHF1ZXJ5RGV2aWNlU2l6ZUZvclNjcmVlbkNvbnRh
aW5pbmdXaWRnZXQpOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkZv
clNpemUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojp3aW5kb3dSZWN0KToKKyAg
ICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wOS0yNyAgR2lyaXNo
IFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIEVuYWJsZSBsb2NhbCByZW5kZXJpbmcgb2Yg
TlBBUEkgcGx1Z2lucyBvbiBNYWVtbzYuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ2NjE4CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIwMTAtMDktMjcgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgIFtRdF0gdHN0X1FXZWJGcmFtZTo6cG9wdXBGb2N1cygpIHJhbmRvbWx5
IGZhaWwgb24gTWVlR28gaGFuZHNldCBiZWNhdXNlIHRoZSBmb2N1cyBpcyBub3Qgc2V0IG9uIHRo
ZSB3aW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2NjE3CisKKyAgICAgICAgVGhpcyBwYXRjaCBhdm9pZCB0aGUgcmFjZSBjb25kaXRpb24gYnkg
d2FpdGluZyBmb3IgdGhlIHdpbmRvdworICAgICAgICB0byBiZSBtYXBwZWQgb24gc2NyZWVuIGJl
Zm9yZSBhdHRlbXB0aW5nIGFueSBhY3Rpb25zLgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1l
L3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTA5LTI0ICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEtlZXAgdmlld3BvcnQgaW5mb3JtYXRpb24gaW4g
RG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2Mzg1CisKKyAgICAgICAgVGhlIHZpZXdwb3J0IG1ldGEgZGF0YSAobGF5b3V0IHZpZXdwb3J0
LCBzY2FsZSkgbmVlZHMgdG8gYmUgc2V0IGFnYWluIHdoZW4gYnJpbmdpbmcKKyAgICAgICAgYmFj
ayBhIHBhZ2UgZnJvbSB0aGUgcGFnZSBjYWNoZS4gQXMgdGhlIHZpZXdwb3J0IG1ldGFkYXRhIGlz
IG9ubHkgcmV0cmlldmVkIHdoaWxlIHBhcnNpbmcKKyAgICAgICAgdGhlIGRvY3VtZW50LCB3ZSBu
ZWVkIHRvIHN0b3JlIGl0IGluIHRoZSBEb2N1bWVudCBjbGFzcy4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6dmlld3BvcnRBcmd1bWVu
dHMpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmlld3BvcnRDb25maWd1cmF0aW9uRm9yU2l6ZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisKKzIwMTAt
MDktMjMgIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKwor
ICAgICAgICBGaXggUVdlYkhhcHRpY0ZlZWRiYWNrUGxheWVyIGV4cG9zdXJlIHZpYSBRV2ViS2l0
UGxhdGZvcm1QbHVnaW4KKworICAgICAgICBbUXRdIFFXZWJIYXB0aWNGZWVkYmFja1BsYXllciBu
ZWVkcyBjb3JyZWN0IGV4cG9zdXJlIHRocm91Z2ggUVdlYktpdFBsYXRmb3JtUGx1Z2luCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjQwMgorCisgICAg
ICAgIFFXZWJIYXB0aWNGZWVkYmFja1BsYXllciBpcyBleHBvcnRlZCB0aHJvdWdoCisgICAgICAg
IFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlRXh0ZW5zaW9uKCksIGJ1dAorICAgICAgICBj
cmVhdGVIYXB0aWNGZWVkYmFja1BsYXllcigpIGFuZCB0aGUgY29ycmVjdAorICAgICAgICBpbmhl
cml0YWdlIGFyZSBtaXNzaW5nLgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdp
bi5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlSGFwdGljRmVlZGJhY2tQbGF5
ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaDoKKworMjAx
MC0wOS0yMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAgICAgICBBZGQgaHlwZXJsaW5rIGF1ZGl0aW5n
IHNldHRpbmdzIChpLmUuLCA8YSBwaW5nPikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDQ1OAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5j
cHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgor
CisyMDEwLTA5LTIzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IFJlZmFjdG9yIFF0V2ViS2l0UGxhdGZvcm1QbHVnaW4gaW50ZXJmYWNlCisKKyAgICAgICAgTWFr
ZSBpdCBlYXNpZXIgdG8ga2VlcCBzb3VyY2UtY29tcGFiaWxpdHkgZm9yIHRoZSAKKyAgICAgICAg
UXRXZWJLaXRQbGF0Zm9ybVBsdWdpbiBpbnRlcmZhY2UsIGFuZCBydW4gcW1ha2UKKyAgICAgICAg
b24gdGhlIGV4YW1wbGUgKGJ1dCBub3QgYnVpbGQpIGZvciBjb252ZW5pZW5jZS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYzNDUKKworICAgICAg
ICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9RdFBsYXRmb3JtUGx1Z2luLmNwcDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdp
bi9SRUFETUU6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmNw
cDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaDoKKyAgICAg
ICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKwor
MjAxMC0wOS0yMiAgQW5kcmFzIEJlY3NpICA8YWJlY3NpQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
U3BlY3VsYXRpdmUgYnVpbGQgZml4IGZvciB0aGUgUXQgV2luZG93cyBib3RzLgorCisgICAgICAg
ICogQXBpL0Rlcml2ZWRTb3VyY2VzLnBybzoKKworMjAxMC0wOS0yMiAgSmFtZXkgSGlja3MgIDxq
YW1leS5oaWNrc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBXZWIgSW5zcGVjdG9yOiBSZW1vdGUgV2Vi
IEluc3BlY3RvciBzdXBwb3J0IGZvciBRdFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5ODgKKworICAgICAgICBSdW5zIGEgd2ViIGRlYnVn
IHNlcnZlciBvbiBwb3J0IHNwZWNpZmllZCBieSBRdFRlc3RCcm93c2VyCisgICAgICAgIGFyZ3Vt
ZW50IC1yZW1vdGUtaW5zcGVjdG9yLXBvcnQuIFByb3BlcnR5CisgICAgICAgIF9xX3dlYkluc3Bl
Y3RvclNlcnZlclBvcnQgb2YgdGhlIFFXZWJQYWdlIGluc3RhbmNlIHdpbGwgYmUgc2V0CisgICAg
ICAgIGFjY29yZGluZyB0byB0aGUgYXJndW1lbnQuIEFsbCBwYWdlcyB3aXRoIHRoYXQgcHJvcGVy
dHkgc2V0IHdpbGwKKyAgICAgICAgYmUgcmVtb3RlbHkgaW5zcGVjdGFibGUuCisKKyAgICAgICAg
VVJMIGZvciByZW1vdGUgaW5zcGVjdGlvbiBvZiBmaXJzdCBRV2ViUGFnZSBpcworICAgICAgICAg
ICAgaHR0cDovL2xvY2FsaG9zdDo5MjIyL3dlYmtpdC9pbnNwZWN0b3IvaW5zcGVjdG9yLmh0bWw/
cGFnZT0xCisgICAgICAgIHdoZXJlIDEgaXMgdGhlIG51bWJlciBvZiB0aGUgUVdlYlBhZ2UgaW5z
dGFuY2UuCisKKyAgICAgICAgVGhlIGJhc2UgVVJMIHlpZWxkcyBhbiBpbmRleCBwYWdlIHdpdGgg
bGlua3MgdG8gdGhlIGluZGl2aWR1YWwgaW5zcGVjdG9yczoKKyAgICAgICAgICAgIGh0dHA6Ly9s
b2NhbGhvc3Q6OTIyMi8KKworICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDoKKyAgICAg
ICAgKFFXZWJJbnNwZWN0b3JQcml2YXRlOjphdHRhY2hBbmRSZXBsYWNlUmVtb3RlRnJvbnRlbmQp
OgorICAgICAgICAoUVdlYkluc3BlY3RvclByaXZhdGU6OmRldGFjaFJlbW90ZUZyb250ZW5kKToK
KyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvcl9wLmg6CisgICAgICAgIChRV2ViSW5zcGVjdG9y
UHJpdmF0ZTo6UVdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5zcGVjdG9yU2VydmVyUG9ydCk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Omluc3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjphdHRhY2hBbmRSZXBsYWNlUmVtb3RlRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmRldGFjaFJlbW90
ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlV2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VXZWJTb2NrZXRDaGFsbGVuZ2VOdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyUXQ6OnNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXJRdDo6SW5zcGVjdG9yU2VydmVyUXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yU2VydmVyUXQ6On5JbnNwZWN0b3JTZXJ2ZXJRdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXJRdDo6bGlzdGVuKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclNlcnZlclF0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
ZXJ2ZXJRdDo6aW5zcGVjdG9yQ2xpZW50Rm9yUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTZXJ2ZXJRdDo6cmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU2VydmVyUXQ6OnVucmVnaXN0ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU2VydmVyUXQ6Om5ld0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U2VydmVyUmVxdWVzdEhhbmRsZXJRdDo6SW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0Ojp+SW5z
cGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0Ojp0Y3BSZWFkeVJlYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdDo6dGNwQ29ubmVjdGlvbkRpc2Nvbm5l
Y3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0
Ojp3ZWJTb2NrZXRTZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclNlcnZlclJlcXVl
c3RIYW5kbGVyUXQ6OndlYlNvY2tldFJlYWR5UmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVGcm9udGVuZENoYW5uZWw6OlJlbW90ZUZyb250ZW5kQ2hhbm5lbCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVGcm9udGVuZENoYW5uZWw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuaDogQWRkZWQuCisKKzIwMTAt
MDktMjIgIEJhbGF6cyBLZWxlbWVuICA8a2JAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gUGx1
Z2luU3RyYXRlZ3kgaW1wbGVtZW50YXRpb24gaXMgYnJva2VuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjA3OAorCisgICAgICAgIFJlbW92ZSB0aGUg
UVdlYlBhZ2UqIG1lbWJlciBmcm9tIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy4KKyAgICAgICAgR2V0
IHRoZSBvcmlnaW5hdG9yIFFXZWJQYWdlIG9mIHRoZSBnZXRQbHVnaW5JbmZvIGNhbGwgdmlhCisg
ICAgICAgIHRoZSBQYWdlKiBhcmd1bWVudC4KKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUpOiAKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIFVzZSB0aGUgQ2hyb21lQ2xpZW50IGZvciBh
Y2Nlc3NpbmcgdGhlIG9yaWdpbmF0b3IgUVdlYlBhZ2UuCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKKzIwMTAtMDktMjIgIMSwc21haWwgRMO2bm1l
eiAgPGlzbWFpbEBuYW10cmFjLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgorCisgICAgICAgIFtRdF0gQnVpbGRmaXggZm9yIFdpbkNFCisKKyAgICAgICAgKiBBcGkv
RGVyaXZlZFNvdXJjZXMucHJvOgorCisyMDEwLTA5LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgW0dUS10gZW5oYW5jZWQgY29udGV4dCBtZW51IGZvciBtZWRpYSBlbGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUwMjEKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2lu
ZG93KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
T3BlbkF1ZGlvSW5OZXdXaW5kb3cpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5rVG9DbGlw
Ym9hcmQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1U
YWdUb2dnbGVNZWRpYUNvbnRyb2xzKQorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3ApCisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKQorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkpCisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1
c2UpCisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ01l
ZGlhTXV0ZSkKKworMjAxMC0wOS0yMCAgSmFjb2IgRGludSAgPGRpbnUuamFjb2JAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgQWRkZWQgYSBu
ZXcgcXdlYnBhZ2UgdGVzdCBmb3IgbG9hZGluZyBhIGNhY2hlZCBwYWdlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE1NQorCisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bG9h
ZENhY2hlZFBhZ2UpOgorCisyMDEwLTA5LTA4ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgW1F0XSBGaXggZm9yd2FyZCBpbmNsdWRlcyBnZW5lcmF0aW9uIGZvciBNU1ZD
IHdoZW4gc2ggaXMgaW4gUEFUSC4KKworICAgICAgICBNU1ZDJ3Mgbm1ha2UgaXNuJ3QgYWZmZWN0
ZWQgYnkgaGF2aW5nIHNoIGluIFBBVEguCisKKyAgICAgICAgKiBBcGkvRGVyaXZlZFNvdXJjZXMu
cHJvOgorCisyMDEwLTA5LTE4ICBBZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFkZW1hci5yZWlz
QG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgRW5hYmxlIFBsYXRmb3JtIFN0cmF0ZWdpZXMgb24gUXQKKwor
ICAgICAgICBbUXRdIFR1cm4gb24gUExBVEZPUk1fU1RSQVRFR0lFUworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4MzEKKworICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6
IEluaXRpYWxpemUgdGhlIFBsYXRmb3JtU3RyYXRlZ3kKKyAgICAgICAgc2luZ2xldG9uLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6IEFkZGVkLCBj
b2RlIHdhcyBtb3ZlZAorICAgICAgICBmcm9tIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3Bw
IGFuZCBwbHVnaW5zL3F0L1BsdWdpbkRhdGFRdC5jcHAKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6aW5pdGlhbGl6ZSk6IGNyZWF0ZSB0aGUgc2luZ2xldG9uLAorICAgICAgICBmb2xs
b3dpbmcgdGhlIHNhbWUgInBhdHRlcm4iIHVzZWQgYnkgTWFjIGFuZCBXaW4gcG9ydHMuCisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcyk6CisgICAg
ICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVBsdWdpblN0cmF0ZWd5KToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTG9jYWxpemF0aW9uU3RyYXRlZ3kpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6aW5wdXRFbGVtZW50QWx0VGV4dCk6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKToKKyAgICAg
ICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmZpbGVCdXR0b25Ob0ZpbGVTZWxlY3Rl
ZExhYmVsKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQpOgor
ICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1h
Z2VJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCk6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3
V2luZG93KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVt
VGFnQ29weSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51SXRl
bVRhZ0dvQmFjayk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRNZW51
SXRlbVRhZ0dvRm9yd2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ1N0b3ApOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250
ZXh0TWVudUl0ZW1UYWdSZWxvYWQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdDdXQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b250ZXh0TWVudUl0ZW1UYWdQYXN0ZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKToK
KyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNo
V2ViKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
TG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29u
dGV4dE1lbnVJdGVtVGFnT3BlbkxpbmspOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUp
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdCb2xk
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnSXRh
bGljKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFn
VW5kZXJsaW5lKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJ
dGVtVGFnT3V0bGluZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb250ZXh0TWVudUl0
ZW1UYWdSaWdodFRvTGVmdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbnRl
eHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNUZXh0KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCk6CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYV2ViQXJlYVRleHQpOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtUZXh0KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6QVhMaXN0TWFya2VyVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OkFYSW1hZ2VNYXBUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6QVhIZWFkaW5nVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFYRGVm
aW5pdGlvbkxpc3RUZXJtVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OkFY
RGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OkFYQnV0dG9uQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAgICAoV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpBWE1lbnVMaXN0QWN0aW9uVmVyYik6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAo
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpBWExpbmtBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6bWlzc2luZ1BsdWdpblRleHQpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjcmFzaGVkUGx1Z2luVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6Om11bHRpcGxlRmlsZVVwbG9hZFRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp1bmtub3duRmlsZVNpemVUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6aW1hZ2VUaXRsZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om1l
ZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjptZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyk6Cisg
ICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1l
bnRIZWxwVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmxvY2FsaXplZE1l
ZGlhVGltZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFs
aWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KToKKyAgICAgICAgKFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0
KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dmFsaWRhdGlvbk1lc3NhZ2VUb29M
b25nVGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNz
YWdlUmFuZ2VVbmRlcmZsb3dUZXh0KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCk6CisgICAgICAg
IChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQpOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjphZGRWaXNpdGVkTGluayk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6IEFkZGVkLCBiYXNlZCBvbiBNYWMgYW5kIFdpbgor
ICAgICAgICB2ZXJzaW9ucy4KKworMjAxMC0wOS0xOCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMu
a2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisK
KyAgICAgICAgW1F0XSBWOCBwb3J0OiBBZGQgRnJhbWVMb2FkZXJDbGllbnRRdDo6YWxsb3dTY3Jp
cHRFeHRlbnNpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDYwMzQKKworICAgICAgICByNjc3NDkgYWRkZWQgRnJhbWVMb2FkZXJDbGllbnQ6OmFs
bG93U2NyaXB0RXh0ZW5zaW9uKCkgKFY4LXNwZWNpZmljKQorICAgICAgICBBZGQgYSBzdHViIGlt
cGxlbWVudGF0aW9uIHRoYXQgc2ltcGx5IHJldHVybnMgZmFsc2UgZm9yIG5vdy4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKworMjAxMC0w
OS0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KKworICAgICAgICBSRUdSRVNTSU9OIChyNjAxMDQpOiBab29tIGxldmVs
IGlzIHVuZXhwZWN0ZWRseSByZXNldCBvbiBwYWdlIHJlbG9hZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4NjMKKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgor
ICAgICAgICAoUVdlYkZyYW1lOjp0ZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAgICAoUVdlYkZy
YW1lOjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKFFXZWJGcmFtZTo6em9vbUZhY3Rvcik6Cisg
ICAgICAgIENhbGwgZnVuY3Rpb25zIG9uIEZyYW1lIGluc3RlYWQgb2YgRnJhbWVWaWV3LgorCisy
MDEwLTA5LTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
YnVpbGQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6IFVw
ZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICBpbiBuYW1lIG9mIGlzVXJsRmllbGQgdG8gaXNVUkxG
aWVsZC4KKworMjAxMC0wOS0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBSZWR1Y2UgdXNlIG9m
IEhUTUxJbnB1dEVsZW1lbnQ6OmlucHV0VHlwZSBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTkwMworCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9y
RWxlbWVudFdpdGhJZCk6CisgICAgICAgIFVzZSBpc1Bhc3N3b3JkRmllbGQuCisKKzIwMTAtMDkt
MTYgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGdsb2JhbGhpc3Rvcnkg
dGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1
Nzc0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cG9wdWxhdGVWaXNpdGVkTGlua3MpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmR1bXBIaXN0b3J5Q2FsbGJhY2tzKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2tzKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcyk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDEwLTA5LTE2
ICBEaWVnbyBHb256YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBSZW1vdmUg
RnJhbWVMb2FkZXJDbGllbnRRdDo6d2ViRnJhbWUoKSB0byB1c2UgTmV0d29ya2luZ0NvbnRleHQg
dG8gZ2V0IHRoZSBXZWJGcmFtZSB0byBhdm9pZCBsYXllcmluZyB2aW9sYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjI5MworCisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmNoaWxkRnJhbWVzKToK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmtpdCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpjdXJyZW50RnJhbWUpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0Ojpjb250ZW50c1NpemVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmNob29zZUZpbGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaDoKKworMjAxMC0wOS0xNSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBVcGRhdGUgdGhlIFN5bWJpYW4gZGVmIGZpbGVz
CisKKyAgICAgICAgUmUtZnJlZXplIHdpdGggdGhlIHZpZXdwb3J0IG1ldGEgdGFnIHVwZGF0ZXMu
CisKKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wOS0xNCAg
QW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gVjggcG9y
dDogR2V0IGluc3BlY3RvciB1cCBhbmQgcnVubmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3NzEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZURlYnVnZ2Vy
U2NyaXB0TG9hZGVkKTogQWRkZWQsIGxvYWRzIERlYnVnZ2VyU2NyaXB0LmpzIGludG8gU2NyaXB0
RGVidWdTZXJ2ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbklu
c3BlY3RvckZyb250ZW5kKTogRW5zdXJlIHRoYXQgRGVidWdnZXJTY3JpcHQuanMgaXMgbG9hZGVk
CisgICAgICAgIGJlZm9yZSBvcGVuaW5nIGFuIGluc3BlY3Rvci4KKworMjAxMC0wOS0xNCAgRW5y
aWNvIFJvcyAgPGVyb3NAY29kZWF1cm9yYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KKworICAgICAgICBbUXRdIFJlc3BlY3QgdGl0bGUgYXR0cmlidXRlIG9uIG9w
dGlvbiBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDUwODQKKworICAgICAgICBTZXQgdGhlIHRvb2x0aXAgaW4gdGhlIGNvbWJvIGJveCBt
b2RlbCwgc28gaXQncyByZWZsZWN0ZWQgaW4gdGhlIHZpZXcuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxs
YmFja1dlYlBvcHVwOjpwb3B1bGF0ZSk6CisKKzIwMTAtMDktMTMgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0ByaW0uY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NTczMgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQuIEkgbWlzc2VkIHRoaXMg
d2hlbiByZXZpZXdpbmcgdGhlIHBhdGNoCisgICAgICAgIGZvciBCdWcgIzQ1NzMyLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKTogQ2hh
bmdlIGVudW0gdmFsdWUgQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0UGF1c2VkIHRvCisgICAg
ICAgIEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkCisKKzIwMTAtMDkt
MTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuaWVsIEJhdGVzLgorCisgICAgICAgIFtRdF0gRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzIG5lZWRzIGEgbmV3IHBhcmFtZXRlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MzIKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6IFBh
c3MgQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0UGF1c2VkCisgICAgICAgIHRvIHN1c3BlbmRB
Y3RpdmVET01PYmplY3RzLgorCisyMDEwLTA5LTEzICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBQ
YXN0ZSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gV2ViQ29yZSBsaWtlIENvcHkgYW5kIEN1dCBm
b3IgTWFjIGFsc28uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NTQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzY2MDUzNz4KKworICAgICAgICBP
biB0aGUgTWFjIHBsYXRmb3JtLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBhc3RlIG9wZXJh
dGlvbiBpcyBhbGwgZG9uZQorICAgICAgICBhdCB0aGUgV2ViS2l0IGxldmVsLiBJbiBvcmRlciB0
byBzdXBwb3J0IGl0IG9uIFdlYktpdDIgaXQgaXMgbmVjZXNzYXJ5IHRvCisgICAgICAgIHJlZmFj
dG9yIHRoZSBjb2RlIGFuZCBtb3ZlIHRoaXMgZnVuY3Rpb25hbGl0eSBhdCB0aGUgbGV2ZWwgb2Yg
V2ViQ29yZSBsaWtlCisgICAgICAgIHdlIGFscmVhZHkgaGF2ZSBvbiBXaW5kb3dzLgorICAgICAg
ICBUaGUgb3JpZ2luYWwgY29kZSByZWxpZXMgb24gc29tZSBpbiBBcHBLaXQgZnVuY3Rpb25zIHRo
YXQgY2FsbCBiYWNrIGludG8KKyAgICAgICAgV2ViS2l0IGNhdXNpbmcgcHJvYmxlbXMgaW4gV2Vi
S2l0Mi4gQWxsIHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBtb3ZlZAorICAgICAgICBhdCB0
aGUgbGV2ZWwgb2YgdGhlIGVkaXRvciBjbGllbnQgd2hlcmUgaXQgY2FuIGJlIGRlYWx0IHdpdGgg
YXBwcm9wcmlhdGVseS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuU2hv
d01JTUVUeXBlQXNIVE1MKTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTAtMDgtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYSBRdCBBUEkgZm9yIHRo
ZSB2aWV3cG9ydCBtZXRhIHRhZyBzdXBwb3J0IGJhc2VkIG9uIHRoZQorICAgICAgICBmb2xsb3dp
bmcgZHJhZnQgc3BlYzoKKworICAgICAgICBodHRwOi8vcGVvcGxlLm9wZXJhLmNvbS9ydW5lL1RS
L0VELWNzcy12aWV3cG9ydC0yMDEwMDgwNi8KKworICAgICAgICBBZGQgY29tbW9uIGhhbmRsaW5n
IG9mIHZpZXdwb3J0IG1ldGEgdGFnIGJhc2VkIG9uIG5ldyBPcGVyYSBzcGVjCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDIwMQorCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQ
cml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6
OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6Vmlld3BvcnRDb25maWd1cmF0aW9uKToKKyAgICAgICAg
KFFXZWJQYWdlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb246On5WaWV3cG9ydENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoUVdlYlBhZ2U6OlZpZXdwb3J0Q29uZmlndXJhdGlvbjo6b3BlcmF0b3I9KToK
KyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydENvbmZpZ3VyYXRpb25Gb3JTaXplKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpzZXRQcmVmZXJyZWRDb250ZW50c1NpemUpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgIChRdFZpZXdw
b3J0Q29uZmlndXJhdGlvblByaXZhdGU6OlF0Vmlld3BvcnRDb25maWd1cmF0aW9uUHJpdmF0ZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnZpZXdwb3J0QXNUZXh0KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQpOgorCisy
MDEwLTA5LTEyICBNYXJ0aW4gU21pdGggIDxtYXJ0aW4uc21pdGhAbm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIGRvYzogQ2hhbmdlZCB0
aGUgdGl0bGUgc28gbGlzdHMgb2YgY29udGVudHMgc29ydCBiZXR0ZXIuCisKKyAgICAgICAgKiBk
b2NzL3F0d2Via2l0LnFkb2M6CisKKzIwMTAtMDktMTIgIERhdmlkIEJvZGRpZSAgPGRhdmlkLmJv
ZGRpZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgRG9jOiBNb3JlIHdvcmsgb24gdGhlIFFNTCBkb2N1bWVudGF0aW9uLgorCisgICAg
ICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlldy5jcHA6CisKKzIwMTAtMDktMTIg
IE1hcnRpbiBKb25lcyAgPG1hcnRpbi5qb25lc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1FtbF0gRW5zdXJlIFdlYlZpZXcgZ2V0
cyBmb2N1cyB3aGVuIGFuIGVkaXRhYmxlIG5vZGUgaXMgY2xpY2tlZCBvbi4KKworICAgICAgICBU
YXNrLW51bWJlcjogUVRCVUctMTMzNDIKKworICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJh
dGl2ZXdlYnZpZXcuY3BwOgorICAgICAgICAoR3JhcGhpY3NXZWJWaWV3Ojptb3VzZVByZXNzRXZl
bnQpOgorCisyMDEwLTA5LTEyICBEYXZpZCBCb2RkaWUgIDxkYXZpZC5ib2RkaWVAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIERvYzog
cWRvYyBmaXhlcy4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcu
Y3BwOgorCisyMDEwLTA5LTEyICBPc3dhbGQgQnVkZGVuaGFnZW4gIDxvc3dhbGQuYnVkZGVuaGFn
ZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFtRdF0gbGV0IFdlYktpdCBpbmplY3QgaXRzZWxmIGludG8gdGhlIHF0IGNvbmZpZ3Vy
YXRpb24KKworICAgICAgICBUYXNrLW51bWJlcjogUVRCVUctMTIzNzkKKworICAgICAgICAqIHF0
X3dlYmtpdF92ZXJzaW9uLnByaTogVXNlIHRoZSBmYXN0ZXIgKyBpbnN0ZWFkIG9mICoKKyAgICAg
ICAgb3BlcmF0b3IgdG8gYWRkIHdlYmtpdCB0byB0aGUgY29uZmlnLgorCisyMDEwLTA5LTEyICBN
YXJ0aW4gU21pdGggIDxtYXJ0aW4uc21pdGhAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4IGdyb3VwIG9mIGRlY2xhcmF0
aXZlIHdlYiB2aWV3IGluIFFNTCBkb2NzLgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xh
cmF0aXZld2Vidmlldy5jcHA6CisKKzIwMTAtMDktMTIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcu
CisKKyAgICAgICAgW1F0XSBQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIFF0IGJyaWRnZSB1c2lu
ZyBWOCBhbmQgUXRTY3JpcHQuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAg
ICAgICAoUVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdCk6IFN0dWIgaXQgb3V0IGZvciBu
b3csCisgICAgICAgIHRvIGNvbXBpbGUsIHVudGlsIHdlIGhhdmUgYSBjb252ZXJzaW9uIHBhdGgg
YmV0d2VlbiB2ODo6T2JqZWN0CisgICAgICAgIGFuZCBRU2NyaXB0VmFsdWUuCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdp
bmRvd09iamVjdCk6IEltcGxlbWVudGVkIHVzaW5nCisgICAgICAgIGZldyBsaW5lcyBvZiBRdFNj
cmlwdCBjb2RlLgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOiBEaXR0
by4KKworMjAxMC0wOS0xMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBGaXgg
dGhlIGJ1aWxkIHdpdGggVjguCisKKyAgICAgICAgVGhpcyBpcyBhIHRlbXBvcmFyeSBrbHVkZ2Ug
dW50aWwgdGhlIHNjcmlwdHdvcmxkIHN0dWZmIGlzIHByb3Blcmx5CisgICAgICAgIHBvcnRlZCwg
YXMgcGFydCBvZiB0aGUgdXBjb21pbmcgRFJUIHdvcmsuCisKKyAgICAgICAgKiBBcGkvcXdlYnNj
cmlwdHdvcmxkLmNwcDoKKyAgICAgICAgKFFXZWJTY3JpcHRXb3JsZDo6UVdlYlNjcmlwdFdvcmxk
KToKKworMjAxMC0wOS0xMSAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0g
VjggcG9ydCBmb3IgUXQgcGxhdGZvcm06IFF0IFdlYkNvcmVTdXBwb3J0IGNoYW5nZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MTQ5CisKKyAgICAg
ICAgT3JpZ2luYWwgcGF0Y2ggYnkgVmxhZCBCdXJsaWsgPHZvbG9kaW1pci5idXJsaWtAbm9raWEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBWOCBzcGVjaWZpY3MgbmVlZGVkIGluIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0IGFuZAorICAgICAgICBGcmFtZUxvYWRlckNsaWVudFF0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xs
ZWN0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnYXJiYWdlQ29sbGVjdG9y
Q29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWRDcmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGVzdHJveVNjcmlwdENvbnRleHRGb3JG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDcmVhdGVJ
c29sYXRlZFNjcmlwdENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAxMC0wOS0xMSAgVmxhZCBCdXJsaWsgIDx2b2xvZGlt
aXIuYnVybGlrQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgorCisgICAgICAgIFtRdF0gVjggcG9ydCBmb3IgUVQgcGxhdGZvcm06IFFUIEFQSSBpbXBsZW1l
bnRhdGlvbiBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NTE0OAorCisgICAgICAgIFY4IEltcGxlbWVudGF0aW9uIG9mIFFXZWJGcmFtZTo6
YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCkKKyAgICAgICAgYW5kIFFXZWJGcmFtZTo6ZXZh
bHVhdGVKYXZhU2NyaXB0KCkKKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAg
ICAgIChzZXR1cFNjcmlwdENvbnRleHQpOiBKU0MgYW5kIFY4IHZhcmlhdGlvbnMKKyAgICAgICAg
KFFXZWJFbGVtZW50OjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAqIEFwaS9xd2ViZWxl
bWVudC5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOiBRT2JqZWN0IGluamVjdGlvbiB0
byBWOCB3b3JsZAorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5kb3dPYmpl
Y3QpOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6IFVzZSBTY3JpcHRDb250cm9sbGVyIHR5cGUgZGVmaW5pdGlvbnMg
aW5zdGVhZCBvZiBkaXJlY3QgcmVmZXJlbmNlcyB0byBKU0Mgb3IgVjgKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKworMjAxMC0wOS0xMCAgeWkgc2hlbiAgPHlp
LjQuc2hlbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4K
KworICAgICAgICBbUXRdIHNlbGVjdGVkIHRleHQgZ2V0cyBkZWxldGVkIHdoZW4gcWdyYXBoaWNz
d2VidmlldyBsb3N0cyBmb2N1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDU1MzkKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAqIHRlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0
aG9kcyk6CisKKzIwMTAtMDktMTAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBGaXggUXQgYnVpbGQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKworMjAxMC0wOS0xMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjb25zdHJhaW50IGluIFdlYkNvcmUgb2Yg
Y2hvb3NpbmcgZWl0aGVyIHRleHQgem9vbSBvciBmdWxsIHBhZ2Ugem9vbS4KKyAgICAgICAgUHJl
Y3Vyc29yIHRvIDxyZGFyOi8vcHJvYmxlbS83NjYwNjU3PgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU1MjIKKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRUZXh0U2l6ZU11bHRpcGxpZXIpOgorICAg
ICAgICAoUVdlYkZyYW1lOjp0ZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAgICAoUVdlYkZyYW1l
OjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKFFXZWJGcmFtZTo6em9vbUZhY3Rvcik6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpRV2Vi
RnJhbWVQcml2YXRlKToKKyAgICAgICAgTW92ZSB0cmFja2luZyBvZiB0ZXh0IG9ubHkgem9vbSBo
ZXJlIGZyb20gV2ViQ29yZS4KKworMjAxMC0wOS0xMCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJv
bkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAg
ICAgICBbUXRdIFN1cHBvcnQgY2xpY2sgZXZlbnQgZm9yIG5vdGlmaWNhdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODM2CisKKyAgICAgICAg
UHJvcGFnYXRlIGNsaWNrIGV2ZW50cyB0byBKYXZhU2NyaXB0IGZyb20gZWl0aGVyIHRoZQorICAg
ICAgICBwbGF0Zm9ybSBwbHVnbiBvciBmcm9tIFFTeXN0ZW1UcmF5SWNvbi4KKyAgICAgICAgQWxz
byBhZGRlZCB0aGUgbWV0aG9kIE5vdGlmaWNhdGlvbldyYXBwZXI6Om9wZW5lclBhZ2VVcmwgc28g
dGhhdAorICAgICAgICBpZiB0aGUgcGxhdGZvcm0gcGx1Z2luIGNhbiByZW9wZW4gdGhlIHBhZ2Ug
dGhhdCBjcmVhdGVkIHRoZQorICAgICAgICBub3RpZmljYXRpb24gZGlyZWN0bHksIHdoZW4gdGhl
IHVzZXIgY2xpY2tzIHRoZSBub3RpZmljYXRpb24uCisKKyAgICAgICAgQWRkZWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrCisgICAgICAg
IGZvciB0ZXN0aW5nIHB1cnBvc2UuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNpbXVsYXRlRGVza3RvcE5v
dGlmaWNhdGlvbkNsaWNrKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6
Om9wZW5lclBhZ2VVcmwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uV3JhcHBlcjo6
bm90aWZpY2F0aW9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uQ2xpY2tlZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaDoKKyAg
ICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIu
Y3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lkZ2V0OjpldmVudCk6CisgICAgICAgICog
ZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmg6CisgICAg
ICAgIChXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlcik6
CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
Lmg6CisKKzIwMTAtMDktMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgZmFpbGlnbiBRdCB0ZXN0cy4gIFRoaXMgcGF0Y2ggYWRh
cHRzIGNvZGUgZnJvbQorICAgICAgICBDaHJvbWl1bS4gIFRoZSBsb25nLXRlcm0gZml4IGlzIHRv
IHJlbW92ZSB0aGUgbmVlZCBmb3IgdGhpcyBjb2RlLCBidXQKKyAgICAgICAgdGhhdCdzIGEgYml0
IHRvbyBjb21wbGljYXRlZCBmb3IgYSBidWlsZGZpeCBwYXRjaC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6RnJhbWVMb2FkZXJDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjptYWtlUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVkTG9hZGluZyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDEwLTA5
LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAgIE1vdmUgY29kZSBmcm9tIFdlYktpdC1sYXllciB0
byBEb2N1bWVudExvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDU1NjkKKworICAgICAgICBUaGlzIGNvZGUgZGlkbid0IGtub3cgdGhhdCBzZXRF
bmNvZGluZyBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpGcmFtZUxvYWRlckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRNYWluRG9jdW1lbnRFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExv
YWRpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KworMjAxMC0wOS0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIE1haW4gcmVzb3VyY2UgYnl0ZXMg
c2hvdWxkbid0IGJvdW5jZSB0aHJvdWdoIEZyYW1lTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTQ5NgorCisgICAgICAgIE5vdyByZXR1cm4g
dGhlIGJ5dGVzIHRvIHRoZSBEb2N1bWVudExvYWRlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZCk6CisKKzIwMTAtMDktMDggIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAg
ICAgICAgTW92ZSBmdW5jdGlvbnMgZnJvbSBGcmFtZSB0byBFZGl0b3IgYXMgcGxhbm5lZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUyMTgKKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2VsZWN0ZWRUZXh0
KToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAg
IENoYW5nZWQgY2FsbCBzaXRlcyB0byB1c2UgZWRpdG9yKCkuCisKKzIwMTAtMDktMDggIFBldGVy
IEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIEh5YXR0LgorCisgICAgICAgIEFkZCBzbW9vdGggc2Nyb2xsaW5nIGZyYW1ld29yaywgYW5k
IGEgV2luZG93cyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyMzU2CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6c2V0U2Nyb2xsQmFyVmFsdWUpOgorCisyMDEwLTA5LTA2ICBE
aWVnbyBHb256YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBbUXRdIFVwZGF0ZSBOZXR3b3JrQWNjZXNzTWFu
YWdlciBpbiBRdCBGcmFtZU5ldHdvcmtpbmdDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTIzMQorCisgICAgICAgIE1ha2UgcG9zc2libGUg
dG8gZ2V0IHRoZSBjdXJyZW50IFFOQU0gd2hlbiBOZXR3b2tpbmdDb250ZXh0IHJlcXVlc3QgaXQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dFF0OjpuZXR3b3JrQWNj
ZXNzTWFuYWdlcik6CisKKzIwMTAtMDktMDYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFRlc3RzIGNyYXNoIG9uIFF0IGJvdHMgcmV2ZWFsZWQgYnkgcjY2NzIw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTI1Ngor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Okluc3BlY3RvckNsaWVudFF0KTogbV9mcm9u
dGVuZENsaWVudCBtdXN0IGJlIGluaXRpYWxpemVkIGJ5IGNvbnN0cnVjdG9yCisKKzIwMTAtMDkt
MDYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVW5y
ZXZpZXdlZC4gQXR0ZW1wdCB0byBmaXggcmFuZG9tIHRlc3QgY3Jhc2hlcyBhZnRlciByNjY3MjAu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Ojp+SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
aDoKKworMjAxMC0wOS0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY2ODAxLgorICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82NjgwMQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUyNDIKKworICAgICAgICAnYnJlYWtzIGVk
aXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC5odG1sJyAoUmVxdWVzdGVkCisgICAg
ICAgIGJ5IG13ZW5nZTQgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6YWRk
TWVzc2FnZVRvQ29uc29sZSk6CisKKzIwMTAtMDktMDUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAg
ICAgW1F0XSB1dGY4IGVuY29kaW5nIG9mIGNvbnNvbGUoKSBtZXNzYWdlcworCisgICAgICAgIGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctbnVsbC1jaGFyLmh0bWwKKyAg
ICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL29iamVjdC1lbWJlZC10YWctbnVs
bC1jaGFyLmh0bWwKKworICAgICAgICBib3RoIGZhaWwgYmVjYXVzZSBDaHJvbWVDbGllbnRRdDo6
YWRkTWVzc2FnZVRvQ29uc29sZSgpIGlzCisgICAgICAgIGNhc3RpbmcgU3RyaW5nIHRvIFFTdHJp
bmcgcmF0aGVyIHRoYW4gU3RyaW5nOjp1dGY4KCkuZGF0YSgpCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MjQwCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisKKzIwMTAtMDktMDMgIEplc3VzIFNhbmNoZXot
UGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBOZXR3b3JraW5nQ29udGV4dCB0byBh
dm9pZCBsYXllciB2aW9sYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MjI5MgorCisgICAgICAgIEFkZCBRdCdzIHNwZWNpZmljIGltcGxlbWVu
dGF0aW9uIG9mIE5ldHdvcmtpbmdDb250ZXh0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpzZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29y
a2luZ0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250
ZXh0UXQ6OkZyYW1lTmV0d29ya2luZ0NvbnRleHRRdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0UXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5l
dHdvcmtpbmdDb250ZXh0UXQ6Om9yaWdpbmF0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTmV0d29ya2luZ0NvbnRleHRRdDo6bmV0d29ya0FjY2Vzc01hbmFnZXIpOgorCisyMDEw
LTA5LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgUkVHUkVTU0lPTjogQ3Jhc2gg
b2NjdXJzIGF0IG9iamNfbXNnU2VuZCB3aGVuIGNsb3NpbmcgYSB3aW5kb3cgdGhhdCBpcyBkaXNw
bGF5aW5nIHRoZSB3ZWIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NDIzMAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Omlu
c3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50UXQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpkZXN0cm95SW5zcGVjdG9yVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjppbnNwZWN0b3JDbGll
bnREZXN0cm95ZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
Lmg6CisKKzIwMTAtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNv
bT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBbUXRdIFJFR1JFU1NJT04ocjYyODk4KTogdHN0X1FXZWJGcmFtZSBjcmFzaGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMwMzkKKworICAgICAg
ICBSb2xsaW5nIG91dCB0aGUgb2ZmZW5kaW5nIGNoYW5nZSA8aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvNjI4OTg+CisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgICh0c3RfUVdlYkZyYW1lOjpldmFsSlNWKToKKworMjAxMC0wOS0w
MSAgTWFoZXNoIEt1bGthcm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFtRdF0gUVdlYlBhZ2U6OmFs
bG93R2VvbG9jYXRpb25SZXF1ZXN0IHNob3VsZCBiZSBhc3luYyBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzY0CisKKyAgICAgICAgUHJvdmlk
ZXMgYSBuZXcgYXN5bmMgQVBJIGZvciBnZW9sb2NhdGlvbiBwZXJtaXNzaW9uLiBVc2luZworICAg
ICAgICBOb3RpZmljYXRpb24gQVBJIGFwcHJvYWNoIGZyb20gcXR3ZWJraXQuIEdlb2xvY2F0aW9u
UGVybWlzc2lvbkNsaWVudFF0IAorICAgICAgICBtYWludGFpbnMgbGlzdCBvZiBwZW5kaW5nIHJl
cXVlc3RzIGZyb20gV2ViQ29yZSBhbmQgaW50aW1hdGVzIHRoZW0KKyAgICAgICAgd2hlbiBjbGll
bnQgZWl0aGVyIGFsbG93ZXMvZGVuaWVzIHRoZSByZXF1ZXN0LiBBbHNvIGltcGxlbWVudHMKKyAg
ICAgICAgQ2hyb21lQ2xpZW50UXQ6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RG
b3JGcmFtZS4gIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlOjpzZXRVc2VyUGVybWlzc2lvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdEZvckZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlzc2lv
bkNsaWVudFF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBlcm1p
c3Npb25DbGllbnRRdDo6Z2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0OjpHZW9sb2NhdGlvblBlcm1pc3Np
b25DbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBlcm1pc3Npb25DbGll
bnRRdDo6fkdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xp
ZW50UXQ6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdDo6c2V0UGVybWlzc2lv
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50
UXQuaDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKEpTVGVzdFBhZ2U6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKHRzdF9R
V2ViUGFnZTo6Z2VvbG9jYXRpb25SZXF1ZXN0SlMpOgorCisyMDEwLTA4LTMxICBEYXZlIEh5YXR0
ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODYzLCBk
aXNlbnRhbmdsZSBzdHlsZSByZWNhbGMgZnJvbSBsYXlvdXQsIHNvIHRoYXQKKyAgICAgICAgdGhl
IGZvcm1lciBjYW4gb2NjdXIgaW4gbW9yZSBwbGFjZXMgd2l0aG91dCBoYXZpbmcgdG8gZG8gdGhl
IGxhdHRlci4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2Vi
RWxlbWVudDo6cmVuZGVyKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJlbGF0aXZlQ29vcmRzKToKKworMjAxMC0wOC0zMSAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0g
dHN0X1FXZWJQYWdlOjpvcmlnaW5hdGluZ09iamVjdEluTmV0d29ya1JlcXVlc3RzKCkgZmFpbHMg
b24gdHJ1bmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ1MDAxCisKKyAgICAgICAgRml4IHRoZSB0ZXN0LCB3ZSBzaG91bGQgbm90IHVzZSBkYXRhIGVu
Y29kZWQgVVJMIHNpbmNlIHdlIGFyZSBub3QKKyAgICAgICAgc2V0dGluZyBhbiBVUkwgYnV0IHNl
dHRpbmcgdGhlIHN1YnN0aXR1dGVEYXRhIGRpcmVjdGx5LgorCisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6b3JpZ2luYXRp
bmdPYmplY3RJbk5ldHdvcmtSZXF1ZXN0cyk6CisKKzIwMTAtMDgtMzEgIEJlbmphbWluIFBvdWxh
aW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBKU0MgVGltZW91dENoZWNrZXI6
OmRpZFRpbWVPdXQgb3ZlcmZsb3dzIG9uIEFSTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg1MzgKKworICAgICAgICBSZS1lbmFibGVkIHRoZSB0ZXN0
IHRoYXQgd2FzIHNraXBwZWQgZm9yIE1hZW1vIDUuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjppbmZpbml0ZUxvb3BK
Uyk6CisKKzIwMTAtMDgtMzAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2NjE5OC4KKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjYxOTgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODU2CisKKyAgICAgICAgSXQgbWFkZSB0
ZXN0cyBjcmFzaCBvbiBRdCBib3QgKFJlcXVlc3RlZCBieSBPc3N5XyBvbiAjd2Via2l0KS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6cmVsZWFzZUZyb250ZW5kUGFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpjbG9zZVdpbmRv
dyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKworMjAx
MC0wOC0yOCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5jb20+CisKKyAgICAgICAgQXR0ZW1w
dCB0byBmaXggdGhlIFF0IFdpbmRvd3MgYW5kIFF0IExpbnV4IFJlbGVhc2UgbWluaW1hbCBidWls
ZHMKKyAgICAgICAgYWZ0ZXIgY2hhbmdlc2V0IDY2Mjk3IDxodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC82NjI5Nz4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lucyk6IFdyYXAgdGhlIGNhbGwg
dG8gUGx1Z2luUGFja2FnZTo6ZW5zdXJlUGx1Z2luTG9hZGVkCisgICAgICAgIGluICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKS4KKworMjAxMC0wOC0yNyAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgW1F0XSB0c3RfUVdlYlZpZXc6OmZvY3Vz
SW5wdXRUeXBlcygpIGZhaWxzIG9uIE1lZUdvIEhhbmRzZXQgd2l0aCBXZWJLaXQgMi4xCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDc2MQorCisgICAg
ICAgIE1ha2UgdGhlIHRlc3QgbW9yZSByb2J1c3QgdG8gY2hhbmdlcyBpbiB0aGUgZXhlY3V0aW9u
IGVudmlyb25tZW50LiBUaGUgY2xpY2sKKyAgICAgICAgYXJlIG5vdyBjb3JyZWN0bHkgc2ltdWxh
dGVkLCBhbmQgdGhlIHBvc2l0aW9uIGFyZSBkZXRlcm1pbmVkIGZyb20gdGhlIGNvbnRlbnQuCisK
KyAgICAgICAgVGhlIHRlc3QgYWxzbyBjcmVhdGUgdGhlIHZpZXcgYW5kIHBhZ2Ugb24gdGhlIHN0
YWNrIHRvIGF2b2lkIHRoZSBsZWFrIHdoZW4gdGhlCisgICAgICAgIHRlc3QgaXMgZmFpbGluZy4K
KworICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgICh0
c3RfUVdlYlZpZXc6OmZvY3VzSW5wdXRUeXBlcyk6CisKKzIwMTAtMDgtMjcgIEtpbW1vIEtpbm51
bmVuICA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBDYWNoZSBwbHVnaW4g
aW5mbyB0byBhIHBlcnNpc3RlbnQgZGF0YWJhc2UKKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxNzkKKworICAgICAgICBJbXBsZW1lbnQgYSBjYWNo
ZSBvZiBOUEFQSSBwbHVnaW4gbWV0YWRhdGEuIFdyaXRlIHRoZSBtZXRhZGF0YSB0byBhYQorICAg
ICAgICBmaWxlIHRoYXQgZ2V0cyByZXdyaXR0ZW4gaWYgYW55IHBsdWdpbiBpcyBhZGRlZCAvIHJl
bW92ZWQuICBDb21waWxhdGlvbgorICAgICAgICBvZiB0aGUgZmVhdHVyZSBpcyBjb250cm9sbGVk
IGJ5ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQorCisgICAgICAg
IEN1cnJlbnRseSBvbmx5IGVuYWJsZWQgZm9yIFF0IFVOSVggZmxhdm9ycy4KKworICAgICAgICAq
IEFwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNl
OjpwbHVnaW5zKTogIE1hdGNoIHByZXZpb3VzIGJlaGF2aW9yOiBlbnN1cmUgYWxsIHJldHVybmVk
IHBsdWdpbnMgYXJlIGxvYWRlZC4KKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOiBTZXQgcGx1Z2lu
IGNhY2hlIHBhdGguCisKKzIwMTAtMDgtMjcgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5w
b3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIHRzdF9RV2ViRnJhbWU6OmlucHV0RmllbGRGb2N1
cygpIGZhaWxzIG9uIE1lZUdvIEhhbmRzZXQgd2l0aCBRdFdlYktpdCAyLjEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzAzCisKKyAgICAgICAgTWFr
ZSB0aGUgdGVzdCBtb3JlIHJvYnVzdCB0byBjaGFuZ2VzIGluIHRoZSBleGVjdXRpb24gZW52aXJv
bm1lbnQuCisgICAgICAgIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbW91c2UgZXZlbnRzIGFyZSBz
ZW50IGlzIG5vdyBjb21wdXRlZCBmcm9tIHRoZSBlbGVtZW50IGdlb21ldHJ5LAorICAgICAgICB0
aGlzIG1ha2UgdGhlIHRlc3QgbGVzcyBkZXBlbmRlbnQgb24gdGhlIGZvbnRzLgorCisgICAgICAg
IFRoZSB0ZXN0IG5vdyBhbHNvIG1ha2Ugc3VyZSB0aGUgd2luZG93IG1hbmFnZXIgbWFwcGVkIHRo
ZSB3aW5kb3cgb24gc2NyZWVuCisgICAgICAgIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHNlbmQgdGhl
IGV2ZW50cy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoK
KworMjAxMC0wOC0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgor
CisgICAgICAgIFtRdF0gdHN0X1FXZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQoKSBmYWlscyBvbiBN
ZWVnbyBIYW5kc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NDcwMQorCisgICAgICAgIE1ha2UgdGhlIHRlc3QgbW9yZSByb2J1c3QuIFRoZSBwb3Np
dGlvbiBvZiB0aGUgdGV4dCBpcyBub3QgcmVseWluZworICAgICAgICBvbiB0aGUgc2l6ZSBvZiB0
aGUgZm9udHMgYW55bW9yZS4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZy
YW1lLmNwcDoKKworMjAxMC0wOC0yNiAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtR
dF0gQWRkIHN1cHBvcnQgZm9yIGF1dG9tYXRpY2FsbHkgY3JlYXRpbmcgbmV3IHdpbmRvd3MgaW4g
UVdlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5ODQ3CisKKyAgICAgICAgSW1wcm92ZWQgdGhlIGRvY3VtZW50YXRpb24gb2YgY3JlYXRlV2lu
ZG93IG1ldGhvZHMgb2YgYm90aCBRV2ViVmlldyBhbmQKKyAgICAgICAgUVdlYlBhZ2UgYnkgbWVu
dGlvbmluZyB0aGF0IGZvciBhbnkgb2YgdGhlbSBiZSBjYWxsZWQsIFFXZWJTZXR0aW5ncycKKyAg
ICAgICAgSmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0
cnVlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZp
ZXcuY3BwOgorCisyMDEwLTA4LTI3ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgUkVH
UkVTU0lPTjogQ3Jhc2ggb2NjdXJzIGF0IG9iamNfbXNnU2VuZCB3aGVuIGNsb3NpbmcgYSB3aW5k
b3cgdGhhdCBpcyBkaXNwbGF5aW5nIHRoZSB3ZWIgaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDIzMAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50UXQ6Omluc3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmRpc2Nvbm5lY3RGcm9tQmFja2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpkZXN0cm95SW5z
cGVjdG9yVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0
OjppbnNwZWN0b3JDbGllbnREZXN0cm95ZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0Lmg6CisKKzIwMTAtMDgtMjYgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxn
aXJpc2hAZm9yd2FyZGJpYXMuaW4+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KKworICAgICAgICBbUXRdIFJlbW92ZSBkZWFkIGNvZGUuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6c3RhdHVzYmFyVmlzaWJsZSk6CisKKzIwMTAtMDgtMjYgIFl1cnkgU2VtaWtoYXRza3kg
IDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZC4gUmV2ZXJ0IHI2NjEw
MyBzaW5jZSBRdCB0ZXN0cyBhcmUgZmFpbGluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oOgorCisyMDEwLTA4LTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAg
ICAgICAgUkVHUkVTU0lPTjogQ3Jhc2ggb2NjdXJzIGF0IG9iamNfbXNnU2VuZCB3aGVuIGNsb3Np
bmcgYSB3aW5kb3cgdGhhdCBpcyBkaXNwbGF5aW5nIHRoZSB3ZWIgaW5zcGVjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDIzMAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6ZGlzY29ubmVjdEZyb21CYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmRlc3Ryb3lJbnNw
ZWN0b3JWaWV3KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5o
OgorCisyMDEwLTA4LTI2ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
W1F0XSB0c3RfUVdlYkZyYW1lOjpwb3B1cEZvY3VzKCkgaGFyZGNvZGUgdGhlIGVsZW1lbnQgcG9z
aXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0
Njc0CisKKyAgICAgICAgVGhpcyBwYXRjaCBkeW5hbWljYWxseSBmaW5kIHRoZSBwb3NpdGlvbiBv
ZiB0aGUgY29tYm8gZWxlbWVudCBpbnN0ZWFkCisgICAgICAgIG9mIGhhcmRjb2RpbmcgYSBwb3Np
dGlvbiB0byBjbGljay4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1l
LmNwcDoKKworMjAxMC0wOC0yNSAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20u
Y24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgSW4g
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUgd2Ugc2hvdWxkIGNhbGwgbG9hZFVSTElu
dG9DaGlsZEZyYW1lCisgICAgICAgIHdpdGggcGFyZW50IGZyYW1lJ3MgbG9hZGVyIGluc3RlYWQg
b2YgY2hpbGQgZnJhbWUncyBsb2FkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzkzMAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpjcmVhdGVGcmFtZSk6CisKKzIwMTAtMDgtMjUgIEdhYm9yIExva2kgIDxsb2tpQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCisKKyAgICAgICAg
QXZvaWQgaW5jcmVhc2luZyByZXF1aXJlZCBhbGlnbm1lbnQgb2YgdGFyZ2V0IHR5cGUgd2Fybmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5NjMK
KworICAgICAgICBGaXggYWxpZ25tZW50IHdhcm5pbmdzIG9uIFF0LgorCisgICAgICAgICogQXBp
L3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpldmFsdWF0ZUphdmFTY3Jp
cHQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjph
ZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOgorCisyMDEwLTA4LTI0ICBBbmRyYXMgQmVjc2kg
IDxhYmVjc2lAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4IHByZWRlY2xhcmVkIHZhcmlhYmxlcyBmb3IgU3lt
YmlhbiB0byBiZSBhYmxlIHRvIGJ1aWxkIFF0V2ViS2l0IGZvciBTeW1iaWFuIG9uIExpbnV4Lgor
CisgICAgICAgICogQXBpL0Rlcml2ZWRTb3VyY2VzLnBybzoKKworMjAxMC0wOC0yMCAgR2lyaXNo
IFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAgIFtRdF0gQWxsb3cgd21vZGU9dHJhbnNwYXJl
bnQgaW4gUVdlYlZpZXcgb24gTWFlbW81IGFmdGVyIHI2NTc3NS4KKyAgICAgICAgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDA0MworCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDEwLTA4LTIyICBN
YXJjIE11dHogIDxtYXJjLm11dHpAa2RhYi5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50
b25pbyBHb21lcy4KKworICAgICAgICBbUXRdIEFjdHVhbGx5IGVtaXQgdGhlIFFXZWJWaWV3Ojpz
ZWxlY3Rpb25DaGFuZ2VkKCkgc2lnbmFsCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0MjUyCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgor
ICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOiBDb25uZWN0IFFXZWJQYWdlOjpzZWxlY3Rpb25D
aGFuZ2VkKCkgdG8gUVdlYlZpZXc6OnNlbGVjdGlvbkNoYW5nZWQoKQorCisyMDEwLTA4LTIwICBB
ZGVtYXIgZGUgU291emEgUmVpcyBKciAgPGFkZW1hci5yZWlzQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBbUXRdIGNvbnN0aWZ5
IGNvcmUoKSBhbmQga2l0KCkgcGFyYW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzNDcKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAg
IChRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjpjb3JlKToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3Rv
cnlfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OmNvcmUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMTAtMDgtMTkg
IEJhbGF6cyBLZWxlbWVuICA8a2JAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgW1F0XSBGaXggY3Vyc29yIGNoYW5nZSBwcm9w
YWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQyNTAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRDdXJzb3IpOiBJbXBsZW1lbnRlZC4g
UHJvcGFnZXRlIHRoZSBjYWxsYmFjayBmb3J3YXJkIHRvIHRoZSBQYWdlQ2xpZW50LgorCisyMDEw
LTA4LTE5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQlVJ
TEQgRklYICMzOiA8aHR0cDovL3dlYmtpdC5vcmcvYi80NDI4NT4gRml4IGNvbXBpbGF0aW9uIHdp
dGggTkVUU0NBUEVfUExVR0lOX0FQSSBkaXNhYmxlZAorCisgICAgICAgIFN0aWxsIHRyeWluZyB0
byBtYWtlIFF0IExpbnV4IFJlbGVhc2UgbWluaW1hbCBidWlsZGJvdCBoYXBweS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKTogV3JhcCBjb2RlIHRoYXQK
KyAgICAgICAgaGFuZGxlcyBOZXRzY2FwZSBwbHVnaW5zIGluICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKKyAgICAgICAgYW5kICNlbmRpZi4KKworMjAxMC0wOC0xOSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEJVSUxEIEZJWDogRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oIHNob3VsZCBpbmNsdWRlIFJlc291cmNlRXJyb3IuaAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOiBJbmNsdWRlIFJlc291cmNlRXJy
b3IuaC4KKworMjAxMC0wOC0xOSAgR2lyaXNoIFJhbWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJk
Ymlhcy5pbj4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KKwor
ICAgICAgICBbUXRdIEluamVjdCB3bW9kZT1vcGFxdWUgZm9yIGJvdGggUVdlYlZpZXcgYW5kIFFH
cmFwaGljc1dlYlZpZXcgb24gTWFlbW81CisgICAgICAgIGFzIEZsYXNoIFhFbWJlZCBzdXBwb3J0
IGlzIGZsYWt5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NDA0MworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVn
aW4pOgorCisyMDEwLTA4LTE4ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCB0cml2aWFsIFN5bWJpYW4gYnVpbGQgZml4Lgor
CisgICAgICAgIFtRdF0gUmVtb3ZlIHVubmVjZXNzYXJ5IFF0R3VpIGluY2x1ZGUgZnJvbSBOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKworMjAxMC0wOC0xNyAgTGFzemxv
IEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBbUXRdIFtTeW1iaWFuXSBDb25zaXN0ZW50bHkg
dXNlIFFfT1NfU1lNQklBTiB0byBndWFyZCBhbGwgU3ltYmlhbiBwbGF0Zm9ybSBkZXBlbmRlbmNp
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI0
CisKKyAgICAgICAgUV9XU19TNjAgaXMgbm90IGRlZmluZWQgZm9yIFN5bWJpYW5eNCBkZXZpY2Vz
IGFzIFFfV1NfUzYwIHVzZWQgdG8gZ3VhcmQKKyAgICAgICAgQXZrb24gVUkgZnJhbWV3b3JrIGRl
cGVuZGVuY2llcy4gVXNlIFFfT1NfU1lNQklBTiBldmVyeXdoZXJlIHRvIG1hcmsKKyAgICAgICAg
U3ltYmlhbiBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxi
YWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpw
b3B1bGF0ZSk6CisKKzIwMTAtMDgtMTcgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5w
YWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIEFkZCBOZXR3b3JraW5nQ29udGV4dCB0byBhdm9pZCBsYXllciB2aW9sYXRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjI5
MgorCisgICAgICAgIFByZXBhcmF0aW9uOiBKdXN0IGFkZCB0aGUgZmlsZXMgdG8gdGhlIGJ1aWxk
IHN5c3RlbS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRl
eHRRdC5jcHA6IEFkZGVkLgorICAgICAgICBFbXB0eSBwbGFjZWhvbGRlciBmb3Igbm93LgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRRdC5oOiBBZGRlZC4K
KyAgICAgICAgUGxhY2Vob2xkZXIgd2l0aCB0ZW50YXRpdmUgY29kZSB0aGF0IG1pZ2h0IGJlIGNo
YW5nZWQgd2hlbiBsYW5kaW5nCisgICAgICAgIHRoZSByZXN0IG9mIGl0LgorCisyMDEwLTA4LTE3
ICBIdWkgSHVhbmcgIDxodWkuMi5odWFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIEZpeCBBUk01IGNvbXBpbGluZyBlcnJv
ciBpbiBGcmFtZUxvYWRlckNsaWVudFF0LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM5MjcKKworICAgICAgICBJbiB0aGUgU3ltYmlhbiBidWls
ZCBjaGFpbiBRVF9VU0VfRkFTVF9PUEVSQVRPUl9QTFVTIGlzIGRlZmluZWQsCisgICAgICAgIHdo
aWNoIG1lYW5zIHRoYXQgdGhlICcrJyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgcGVyZm9ybWVkIGFz
IHRoZQorICAgICAgICBRU3RyaW5nQnVpbGRlciAnJScuIENyZWF0ZSBhIFFTdHJpbmcgZXhwbGlj
aXRseSB0byBtYWtlIHN1cmUgdGhhdAorICAgICAgICB0b0xvY2FsOGJpdCgpIG1lbWJlciBpcyBh
dmFpbGFibGUgdGhhdCB0aGUgcVByaW50YWJsZSBNYWNybyB1c2VzLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorCisyMDEwLTA4LTE2ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KKwor
ICAgICAgICBbUXRdIEltcGxlbWVudCBDaHJvbWVDbGllbnQncyB3aW5kb3dUb1NjcmVlbigpIGFu
ZCBzY3JlZW5Ub1dpbmRvdygpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6CisKKzIwMTAtMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBQcm9wYWdhdGUgbmFtZSBjaGFuZ2UgdG8gUXQuCisKKyAgICAgICAgKiBBcGkv
cXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmFwcGVuZEluc2lkZSk6Cisg
ICAgICAgIChRV2ViRWxlbWVudDo6cHJlcGVuZEluc2lkZSk6CisgICAgICAgIChRV2ViRWxlbWVu
dDo6cHJlcGVuZE91dHNpZGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmFwcGVuZE91dHNpZGUp
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVuY2xvc2VDb250ZW50c1dpdGgpOgorICAgICAgICAo
UVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKToKKworMjAxMC0wOC0xMiAgSmVyZW15IE9ybG93ICA8
am9ybG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZlcnQgZm9yIG5vdworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3OTQgCisKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFw
cGx5KToKKworMjAxMC0wOC0xMSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFNvbWUgc2V0dGlu
Z3MgYXJlIGxpbmtlZCB0byB0aGUgUGFnZUdyb3VwIG5vdCB0aGUgUGFnZS4gIENyZWF0ZSBhIG5l
dyBjbGFzcyBmb3IgdGhvc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00Mzc5NAorCisgICAgICAgIENoYW5nZSBXZWJTZXR0aW5ncyB0byB1c2UgdGhl
IG5ldyBHcm91cFNldHRpbmdzIGNsYXNzIHJhdGhlciB0aGFuIFNldHRpbmdzIGZvciB0aGUKKyAg
ICAgICAgc2V0dGluZ3MgdGhhdCBtb3ZlZC4gIFRoaXMgaXMgc3ViLW9wdGltYWwgc2luY2UgdGhl
IHNldHRpbmdzIGFyZW4ndCByZWFsbHkKKyAgICAgICAgcGVyLXZpZXcsIGJ1dCBJIGRvbid0IHNl
ZSBob3cgd2UgY2FuIGNoYW5nZSB0aGUgQVBJIGF0IHRoaXMgcG9pbnQuCisKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5
KToKKworMjAxMC0wOC0xMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgW1F0XSBVcGRhdGUgdGhlIFN5bWJpYW4gZGVmIGZpbGVzCisKKyAgICAg
ICAgUmUtZnJlZXplIHdpdGggdmFyaW91cyBRR3JhcGhpY3NXZWJWaWV3IGFuZCBEUlQgdXBkYXRl
cy4KKyAgICAgICAgVGhlIHVwcHBlciBwYXJ0IG9mIHRoZSBkaWZmIGlzIGp1c3Qgd2hpdGVzcGFj
ZSwgc28gCisgICAgICAgIGRpZmYgLXcgd2lsbCBzaG93IHRoZSByZWFsIGRpZmYuCisKKyAgICAg
ICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wOC0xMCAgQW5kZXJzIEJh
a2tlbiAgPGFnYmFra2VuQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIERvbid0IGNvbm5lY3QgdG8gbWlj
cm9Gb2N1c0NoYW5nZWQoKSBpZiBfcV91cGRhdGVNaWNyb0ZvY3VzIGlzIGEgbm9vcC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTgwCisKKyAgICAg
ICAgX3FfdXBkYXRlTWljcm9Gb2N1cygpIGlzIGEgbm9vcCB1bmxlc3MgdGhpcyBpZmRlZiBldmFs
dWF0ZXMgdG8gdHJ1ZToKKyAgICAgICAgI2lmICFkZWZpbmVkKFFUX05PX0lNKSAmJiAoZGVmaW5l
ZChRX1dTX1gxMSkgfHwgZGVmaW5lZChRX1dTX1FXUykgfHwgZGVmaW5lZChRX09TX1NZTUJJQU4p
KQorCisgICAgICAgIEluIHN1Y2ggY2FzZXMgdGhlcmUncyBubyBuZWVkIHRvIGNhcnJ5IHRoZSBv
dmVyaGVhZCBvZiB0aGUgZXh0cmEKKyAgICAgICAgc2lnbmFsL3Nsb3QgY29ubmVjdGlvbi4KKwor
ICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXdQcml2YXRlOjpfcV91cGRhdGVNaWNyb0ZvY3VzKToKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXc6OnNldFBhZ2UpOgorCisyMDEwLTA4LTEwICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICBB
ZGQgc3VzcGVuZEFuaW1hdGlvbnMvcmVzdW1lQW5pbWF0aW9uIEFQSSB0byBEUlQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzMzCisgICAgICAgIAor
ICAgICAgICBRdCBzcGVjaWZpYyBBUEkuIE1pc3Npbmcgc3ltYmlhbiBzeW1ib2wgZGVmaW5lcyBp
bjoKKyAgICAgICAgCisgICAgICAgICAgICBXZWJLaXQvcXQvc3ltYmlhbi9id2lucy9RdFdlYktp
dHUuZGVmCisgICAgICAgICAgICBXZWJLaXQvcXQvc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWYK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMC0w
OC0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZworCisgICAgICAgIEJ1ZyA0MzU5NCAtIEFk
ZCBzdHJpbmcgZm9yd2FyZHMgdG8gRm9yd2FyZC5oCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IHJlbW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgdGhlc2UgY2xhc3NlcyBmcm9tCisgICAg
ICAgIFdlYkNvcmUvV2ViS2l0IChhIHN0ZXAgaW4gbW92aW5nIHRoZXNlIGNsYXNzIGZyb20gV2Vi
Q29yZTo6IHRvIFdURjo6KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5o
OgorCisyMDEwLTA4LTA4ICBBcml5YSBIaWRheWF0ICA8YXJpeWFAc2VuY2hhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIEluY29uc2lzdGVudCBR
dCB2ZXJzaW9uIGNoZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDM2OTUKKworICAgICAgICBVc2UgUVRfVkVSU0lPTl9DSEVDSyBtYWNybyBpbnN0
ZWFkIG9mIGVuY29kZWQgaGV4LgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3Bw
OgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6UUdyYXBoaWNzV2ViVmlldyk6CisgICAgICAg
IChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBhZ2UpOgorICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVBy
aXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAg
ICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KToKKyAgICAgICAgKFFXZWJQYWdlOjp2
aWV3KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXdQcml2
YXRlOjpkZXRhY2hDdXJyZW50UGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElucHV0
TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1
Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorCisyMDEwLTA4LTA2ICBKZXNzaWUg
QmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUm9sbCBvdXQgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjQ4MDEsIHdoaWNoIGJyb2tlIHRoZSBTYWZhcmkgV2lu
ZG93cyBCdWlsZC4KKyAgICAgICAgVW5yZXZpZXdlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oOgorCisyMDEwLTA4LTA2ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gTW92ZSBRdCdzIHBvcHVwIG1lbnUgaW1wbGVt
ZW50YXRpb24gZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBsYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM0MjcKKworICAgICAgICBBZnRlciBQb3B1
cE1lbnUgY2hhbmdlcyBpbiBidWcgNDI1OTIgY2xhc3MgUXRBYnN0cmFjdFdlYlBvcHVwIGJlY2Ft
ZSB1bmVjZXNzYXJ5IGFuZAorICAgICAgICB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgYW55IFF0
IHNwZWNpZmljIGNvZGUgZm9yIHBvcHVwIG1lbnVzIGluIFdlYkNvcmUvcGxhdGZvcm0vcXQuCisK
KyAgICAgICAgUG9wdXBNZW51UXQgaGFzIGJlZW4gbW92ZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3Jt
L3F0IHRvIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydCBhbmQKKyAgICAgICAgYXNzdW1lZCB0aGUg
cmVzcG9uc2liaWxpdGllcyBvZiBRdEFic3RyYWN0V2ViUG9wdXAuIFNlYXJjaFBvcHVwTWVudVF0
IGhhcyBiZWVuIG1vdmVkCisgICAgICAgIHRvIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydCBhcyB3
ZWxsLgorCisgICAgICAgIEFsbCBjbGFzc2VzIHRoYXQgcHJldmlvdXNseSBpbmhlcml0ZWQgZnJv
bSBRdEFic3RyYWN0V2ViUG9wdXAgbm93IGluaGVyaXQgZnJvbQorICAgICAgICBRV2ViU2VsZWN0
TWV0aG9kIGFuZCBRdFBsYXRmb3JtUGx1Z2luJ3MgbWV0aG9kIGNyZWF0ZVNlbGVjdElucHV0TWV0
aG9kIG5vdyByZXR1cm5zIGFuCisgICAgICAgIGluc3RhbmNlIG9mIGNsYXNzIFFXZWJTZWxlY3RN
ZXRob2QgaW5zdGVhZCBvZiBRdEFic3RyYWN0V2ViUG9wdXAuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
Y3JlYXRlU2VhcmNoUG9wdXBNZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcDogQWRk
ZWQuCisgICAgICAgIChTZWxlY3REYXRhOjpTZWxlY3REYXRhKToKKyAgICAgICAgKFNlbGVjdERh
dGE6Oml0ZW1UZXh0KToKKyAgICAgICAgKFNlbGVjdERhdGE6Oml0ZW1Ub29sVGlwKToKKyAgICAg
ICAgKFNlbGVjdERhdGE6Oml0ZW1Jc0VuYWJsZWQpOgorICAgICAgICAoU2VsZWN0RGF0YTo6aXRl
bUNvdW50KToKKyAgICAgICAgKFNlbGVjdERhdGE6Oml0ZW1Jc1NlbGVjdGVkKToKKyAgICAgICAg
KFNlbGVjdERhdGE6Om11bHRpcGxlKToKKyAgICAgICAgKFNlbGVjdERhdGE6Oml0ZW1UeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0OjpQb3B1cE1lbnVRdCk6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cE1lbnVRdDo6flBvcHVwTWVudVF0KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudVF0OjpkaXNjb25uZWN0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVu
dVF0OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0OjpkaWRIaWRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVF0OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudVF0Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnVRdDo6c2VsZWN0SXRlbSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51UXQu
aDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpoaWRlUG9wdXAp
OgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9w
dXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpzaG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6cGFnZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmg6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNr
V2ViUG9wdXA6OnNldEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQ
b3B1cDo6Z2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpz
ZXRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6Zm9udCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRNYWVtb1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1hZW1vNVBvcHVwOjpwb3B1bGF0ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UXRN
YWVtb1dlYlBvcHVwOjpRdE1hZW1vV2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRNYWVt
b1dlYlBvcHVwOjpjcmVhdGVTaW5nbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpRdE1hZW1vV2ViUG9wdXA6OmNyZWF0ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpjcmVhdGVQb3B1cCk6CisgICAgICAgIChXZWJD
b3JlOjpRdE1hZW1vV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6UXRNYWVtb1dl
YlBvcHVwOjpwb3B1cENsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6
Oml0ZW1DbGlja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hZW1vNVNpbmdsZVNlbGVjdGlvblBv
cHVwOjpNYWVtbzVTaW5nbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpNYWVt
bzVNdWx0aXBsZVNlbGVjdGlvblBvcHVwOjpNYWVtbzVNdWx0aXBsZVNlbGVjdGlvblBvcHVwKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdE1hZW1vV2ViUG9wdXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1hZW1vNVBvcHVwOjpNYWVtbzVQb3B1cCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1
Z2luOjpjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UXRQbGF0Zm9ybVBsdWdpbi5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVw
TWVudVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVRdDo6
U2VhcmNoUG9wdXBNZW51UXQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51UXQ6
OnBvcHVwTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVRdDo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudVF0Ojpsb2Fk
UmVjZW50U2VhcmNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51UXQ6OmVu
YWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudVF0Lmg6IEFk
ZGVkLgorCisyMDEwLTA4LTA2ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAg
ICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIHRoZSBBbmRyb2lkIHZpZXdwb3J0IG1ldGEgdGFnIGV4
dGVuc2lvbnMuCisgICAgICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvNDM1NjcKKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpkaWRSZWNlaXZlVmlld3Bv
cnRBcmd1bWVudHMpOgorCisyMDEwLTA4LTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCisK
KyAgICAgICAgQnVnIDQzNTk0IC0gQWRkIHN0cmluZyBmb3J3YXJkcyB0byBGb3J3YXJkLmgKKyAg
ICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb25zIGZvciB0
aGVzZSBjbGFzc2VzIGZyb20KKyAgICAgICAgV2ViQ29yZS9XZWJLaXQgKGEgc3RlcCBpbiBtb3Zp
bmcgdGhlc2UgY2xhc3MgZnJvbSBXZWJDb3JlOjogdG8gV1RGOjopLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKKzIwMTAtMDgtMDUgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5l
IFZlc3Riw7guCisKKyAgICAgICAgW1F0XSBDbGVhbiB1cCB0aGUgaW5wdXQgbWV0aG9kIGhhbmRs
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU0
NQorCisgICAgICAgIFJlcGxhY2UgdGhlIHdheSBvZiBpbmRpdmlkdWFsbHkgc2V0dGluZyBpbnB1
dCBtZXRob2QgaGludHMgYnkKKyAgICAgICAgbWFueSBjYWxscyB0byBRV2lkZ2V0OjpzZXRJbnB1
dE1ldGhvZEhpbnRzIHdpdGggb25lIHNpbmdsZSBjYWxsLgorCisgICAgICAgIFRoaXMgaXMgbW9y
ZSBlZmZpY2llbnQgYnkgcmVxdWlyaW5nIGxlc3MgdXBkYXRlcyBpbiB0aGUgaW5wdXQKKyAgICAg
ICAgbWV0aG9kIGhpbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RT
dGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpzZXRJbnB1dE1ldGhvZEhpbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldElucHV0TWV0aG9k
SGludHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOgorCisyMDEw
LTA4LTA1ICBEYXZpZCBMZW9uZyAgPGRhdmlkLmxlb25nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIElucHV0IG1vZGUgc3Rh
dGVzIGFyZSBub3QgcmVzZXQgYWZ0ZXIgZW50ZXJpbmcgYSBwYXNzd29yZCBmaWVsZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM1MzAKKworICAgICAg
ICBJbnB1dCBtb2RlIGhpbnRzIGFyZSBub3QgcmVzZXQgaWYgY2xpY2tpbmcgb24gcGFzc3dvcmQg
PGlucHV0PiBlbGVtZW50cyB0aGVuIAorICAgICAgICBjbGlja2luZyBvbiA8dGV4dGFyZWE+IGVs
ZW1lbnRzCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6Cisg
ICAgICAgICogdGVzdHMvcXdlYnZpZXcvcmVzb3VyY2VzL2lucHV0X3R5cGVzLmh0bWw6CisgICAg
ICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2Vi
Vmlldzo6Zm9jdXNJbnB1dFR5cGVzKToKKworCisyMDEwLTA4LTA0ICBQaWVycmUgUm9zc2kgIDxw
aWVycmUucm9zc2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29t
ZXMuCisKKyAgICAgICAgW1F0XSBRV2ViRnJhbWU6OnNldENvbnRlbnQoKSBkb2VzIG5vdCByZXNw
ZWN0IGNoYXJzZXQgcHJvdmlkZWQgaW4gdGhlIG1pbWVUeXBlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzEyNQorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldENvbnRlbnQpOgorICAgICAgICAqIHRl
c3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAxMC0wOC0wMyAgTm9hbSBSb3Nl
bnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBFZGl0cyB0byBicmlk
Z2UgZG9jdW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDMwMTIKKworICAgICAgICAqIGRvY3MvcXR3ZWJraXQtYnJpZGdlLnFkb2M6Cisg
ICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9icmlkZ2Vfc25pcHBldHMuY3Bw
OgorICAgICAgICAod3JhcEluRnVuY3Rpb24pOgorCisyMDEwLTA4LTAzICBLaW0gR3LDtm5ob2xt
ICA8a2ltLjEuZ3JvbmhvbG1Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gUGxhdGZvcm0gcGx1Z2luIGludGVyZmFjZSBmb3Ig
SGFwdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDMxNDMKKworICAgICAgICBQbGF0Zm9ybSBwbHVnaW4gaW50ZXJmYWNlIGZvciBwbGF5aW5nIGhh
cHRpYyBmZWVkYmFjaworCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgor
ICAgICAgICAoUVdlYkhhcHRpY0ZlZWRiYWNrUGxheWVyOjopOgorICAgICAgICAoUVdlYktpdFBs
YXRmb3JtUGx1Z2luOjopOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBs
dWdpbi5oOgorICAgICAgICAoV2ViUGx1Z2luOjpjcmVhdGVIYXB0aWNGZWVkYmFja1BsYXllcik6
CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
Lmg6CisgICAgICAgIChRV2ViSGFwdGljRmVlZGJhY2tQbGF5ZXI6Oik6CisgICAgICAgIChRV2Vi
S2l0UGxhdGZvcm1QbHVnaW46Oik6CisKKzIwMTAtMDctMjcgIEx1aXogQWdvc3RpbmkgIDxsdWl6
LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlz
aGVyLgorCisgICAgICAgIFBvcHVwTWVudSByZWZhY3RvcmluZyBpbiBwcmVwYXJhdGlvbiB0byBX
ZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjU5MgorCisgICAgICAgIEFzIENocm9tZUNsaWVudCB3YXMgbWFkZSByZXNwb25zaWJsZSBmb3Ig
cHJvdmlkaW5nIFBvcHVwTWVudSBhbmQgU2VhcmNoUG9wdXBNZW51CisgICAgICAgIGluc3RhbmNl
cywgY29uY3JldGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSBDaHJvbWVDbGllbnQgbmVlZGVk
IHRvIGJlIGNoYW5nZWQgdG8KKyAgICAgICAgaW1wbGVtZW50IHRoZSBuZXcgbWV0aG9kcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlUG9wdXBNZW51KToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMTAtMDgt
MDIgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BlY3Vs
YXRpdmUgcmV2ZXJ0IG9mIDY0NDI1IGR1ZSB0byBDaHJvbWl1bSBpbnN0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMzNDcKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDEwLTA3LTI3ICBMdWl6IEFnb3N0aW5pICA8
bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEZpc2hlci4KKworICAgICAgICBQb3B1cE1lbnUgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24g
dG8gV2ViS2l0MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI1OTIKKworICAgICAgICBBcyBDaHJvbWVDbGllbnQgd2FzIG1hZGUgcmVzcG9uc2libGUg
Zm9yIHByb3ZpZGluZyBQb3B1cE1lbnUgYW5kIFNlYXJjaFBvcHVwTWVudQorICAgICAgICBpbnN0
YW5jZXMsIGNvbmNyZXRlIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gQ2hyb21lQ2xpZW50IG5l
ZWRlZCB0byBiZSBjaGFuZ2VkIHRvCisgICAgICAgIGltcGxlbWVudCB0aGUgbmV3IG1ldGhvZHMu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05h
dHVyYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwTWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDEw
LTA3LTMxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjQ0MjIuCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzY0NDIyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MzMwNAorCisgICAgICAgIEJ1aWxkIGZpeGVzIGFyZSBuZWVk
ZWQgZm9yIFNub3cgTGVvcGFyZCBhbmQgV2luZG93cy4KKyAgICAgICAgKFJlcXVlc3RlZCBieSBs
Y2Egb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAx
MC0wNy0yNyAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgUG9wdXBNZW51IHJl
ZmFjdG9yaW5nIGluIHByZXBhcmF0aW9uIHRvIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNTkyCisKKyAgICAgICAgQXMgQ2hyb21lQ2xp
ZW50IHdhcyBtYWRlIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgUG9wdXBNZW51IGFuZCBTZWFy
Y2hQb3B1cE1lbnUKKyAgICAgICAgaW5zdGFuY2VzLCBjb25jcmV0ZSBjbGFzc2VzIHRoYXQgaW5o
ZXJpdCBmcm9tIENocm9tZUNsaWVudCBuZWVkZWQgdG8gYmUgY2hhbmdlZCB0bworICAgICAgICBp
bXBsZW1lbnQgdGhlIG5ldyBtZXRob2RzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNlbGVj
dEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjpjcmVhdGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuaDoKKworMjAxMC0wNy0zMCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CisKKyAgICAgICAgRW5hYmxpbmcgdmlldyBtb2RlcyB0byBhbGwgcGxhdGZvcm1zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUwNQorCisgICAgICAg
IEFzIHZpZXcgbW9kZSBtZWRpYSBmZWF0dXJlIGlzIG5vdyBzdXBwb3J0ZWQgYnkgV2ViQ29yZSB0
aGVyZSBpcyBubyBuZWVkCisgICAgICAgIHRvIGtlZXAgaXRzIGltcGxlbWVudGF0aW9uIGhlcmUu
IFF0V2ViS2l0IG5vdyB1c2VzIFdlYkNvcmUncyB2aWV3IG1vZGUgbWVkaWEgZmVhdHVyZQorICAg
ICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgor
CisyMDEwLTA3LTMwICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgorCisgICAgICAgIExpbWl0IEFwcGxpY2F0
aW9uQ2FjaGUgVG90YWwgYW5kIFBlci1PcmlnaW4gU3RvcmFnZSBDYXBhY2l0eSAoUXVvdGFzKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MjcKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDEwLTA3
LTI5ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKworICAgICAgICBRV2ViRnJhbWUgYW5kIFFXZWJW
aWV3IGRvY3VtZW50YXRpb24gZml4LgorCisgICAgICAgIFRoZSBRV2ViRnJhbWUgYW5kIHRoZSBR
V2ViVmlldyBzZXRIdG1sKCkgbWV0aG9kcyBhcmUgYSBiaXQgY29uZnVzaW5nLgorICAgICAgICBU
aGVyZSBhcmUgYSBmZXcgcmVnaXN0ZXJlZCBidWdzIGluIFdlYmtpdCdzIGJ1Z3ppbGxhIHRoYXQg
c291cmNlIGlzCisgICAgICAgIGluIGEgYmFkIHVzYWdlIG9mIHRoZSBmdW5jdGlvbi4KKyAgICAg
ICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiB3ZXJlIGFkZGVkLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTExNQorCisgICAgICAgICogQXBpL3Fn
cmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMTAtMDctMjggIEtpbSBHcsO2bmhvbG0gIDxraW0u
MS5ncm9uaG9sbUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KKworICAgICAgICBbUXRdIERlY291cGxlIFFUb3VjaEV2ZW50J3MgYWNjZXB0ZWQgZmxhZyBm
cm9tIEpTIHByZXZlbnQgZGVmYXVsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDI4OTIKKworICAgICAgICBBZGRlZCBjb21tZW50cyB0byB0aGUgdG91
Y2ggZXZlbnQgaGFuZGxpbmcgY29kZS4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNjZW5lRXZlbnQpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnRvdWNoRXZlbnQp
OgorICAgICAgICAoUVdlYlBhZ2U6OmV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5o
OgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQp
OgorCisyMDEwLTA3LTI2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgUGFnZSBjbGllbnRz
IHNob3VsZCBiZSBwYXNzZWQgdG8gUGFnZSBjb25zdHJ1Y3RvciB2aWEgc3RydWN0dXJlIG9mIHBv
aW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MjgzNAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKworMjAxMC0wNy0yNyAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUg
VmVzdGLDuC4KKworICAgICAgICBbUXRdIEluY29ycmVjdCBpbnB1dCBtZXRob2QgaGludHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDM3CisKKyAg
ICAgICAgUHJvcGVybHkgc2V0IG9yIHJlc2V0IGFsbCBpbnB1dCBtZXRob2QgaGludHMgd2hlbgor
ICAgICAgICBhY3RpdmF0aW5nIGlucHV0IGZpZWxkcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdl
YnZpZXcuY3BwOgorICAgICAgICAodHN0X1FXZWJWaWV3Ojpmb2N1c0lucHV0VHlwZXMpOiBFeHRl
bmRlZCB1bml0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgd2UKKyAgICAgICAgcmVzZXQgaGludHMuCisK
KzIwMTAtMDctMjcgIEtpbSBHcsO2bmhvbG0gIDxraW0uMS5ncm9uaG9sbUBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBEZWNv
dXBsZSBRVG91Y2hFdmVudCdzIGFjY2VwdGVkIGZsYWcgZnJvbSBKUyBwcmV2ZW50IGRlZmF1bHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODkyCisK
KyAgICAgICAgV2UgbmVlZCB0byBhbHdheXMgYWNjZXB0IHRoZSBRVG91Y2hFdmVudHMgaW4gb3Jk
ZXIgdG8gZ2V0IFRvdWNoVXBkYXRlIGFuZAorICAgICAgICBUb3VjaEVuZCBldmVudHMuIFFXZWJQ
YWdlOjpldmVudCgpIHJldHVybiB2YWx1ZSBpcyB1c2VkIHRvIGluZGljYXRlCisgICAgICAgIHdo
ZXRoZXIgdGhlIGRlZmF1bHQgYWN0aW9uIHdhcyBwcmV2ZW50ZWQgZm9yIHRoZSB0b3VjaCBldmVu
dHMuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3Jh
cGhpY3NXZWJWaWV3OjpzY2VuZUV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp0b3VjaEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdl
OjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OmV2ZW50KToKKworMjAxMC0wNy0yNiAgVG9y
IEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBDaGFuZ2UgZGVmYXVsdCBm
b250IGZyb20gc2Fucy1zZXJpZiB0byBzZXJpZgorCisgICAgICAgIFRoaXMgbWF0Y2hlcyB3aGF0
IG90aGVyIHBvcnRzIGFuZCBicm93c2VyIGVuZ2luZXMgZG8uCisKKyAgICAgICAgV2Ugbm93IGFs
c28gdXNlIFFGb250J3MgZGVmYXVsdEZvbnRGYW1pbHkoKSB0byByZXNvbHZlIHRoZQorICAgICAg
ICBjb3JyZWN0IGZvbnRzIGZvciBlYWNoIHBsYXRmb3JtLiBGb3IgUXQgPj0gNC43IHdlIGNhbiB0
YWtlCisgICAgICAgIGFkdmFudGFnZSBvZiB0aGUgbmV3IGVudW1zIGZvciBnZW5lcmljIGZvbnQg
ZmFtaWxpZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKworMjAwOS0xMC0z
MCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0
XSBVc2UgdGhlIGRlZmF1bHQgdGltZW91dCBpbnRlcnZhbCBmb3IgSlMgYXMgdGhlIEhUTUwgdG9r
ZW5pemVyIGRlbGF5IGZvciBzZXRIdG1sKCkKKworICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCBs
b25nLXJ1bm5pbmcgSmF2YVNjcmlwdCAoZm9yIGV4YW1wbGUgZHVlIHRvIGEgbW9kYWwgYWxlcnQo
KSBkaWFsb2cpLAorICAgICAgICB3aWxsIG5vdCB0cmlnZ2VyIGEgZGVmZXJyZWQgbG9hZCBhZnRl
ciBvbmx5IDUwMG1zICh0aGUgZGVmYXVsdCB0b2tlbml6ZXIgZGVsYXkpIHdoaWxlCisgICAgICAg
IHN0aWxsIGdpdmluZyBhIHJlYXNvbmFibGUgdGltZW91dCAoMTAgc2Vjb25kcykgdG8gcHJldmVu
dCBkZWFkbG9jay4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjkzODEKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOiBEb2N1bWVudCB0aGUg
YmVoYXZpb3VyCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6IHNldCB0aGUgY3VzdG9tIHRva2VuaXplciBkZWxheSBmb3Igc3Vic3RpdHV0ZSBsb2Fkcwor
ICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDogQWRkIHRlc3QKKwor
MjAxMC0wNy0yMyAgRGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIERvYzogRml4ZWQgaW5j
b3JyZWN0IFFNTCBwcm9wZXJ0eSB0eXBlLgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xh
cmF0aXZld2Vidmlldy5jcHA6CisKKzIwMTAtMDctMjMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFtRdF0gQnVpbGQgZml4IGZvciBRdCBhcHBz
CisKKyAgICAgICAgQWRkIHdlYmtpdCB0byBRVF9DT05GSUcuIHFjb25maWcucHJpIHdpbGwgcmVh
ZCBxdF93ZWJraXRfdmVyc2lvbi5wcmkgYW5kCisgICAgICAgIHRoYXQncyBob3cgaXQgd2lsbCBw
aWNrIHVwIHdlYmtpdCBpbiBRVF9DT05GSUcuCisKKyAgICAgICAgKiBxdF93ZWJraXRfdmVyc2lv
bi5wcmk6CisKKzIwMTAtMDctMjIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBR
dFdlYktpdCBuZWVkcyBwdWJsaWMgQVBJIGZvciBOb3RpZmljYXRpb25zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0MTMKKworICAgICAgICBSZW1v
dmUgRHVtcFJlbmRlclRyZWUgcHJpdmF0ZSBBUEkgYW5kIGludHJvZHVjZSBuZXcgQVBJLgorICAg
ICAgICBBbHNvIGFkZCBzdXBwb3J0IGZvciBpbmZvcm1pbmcgdGhlIFVJIHdoZW4gYSBub3RpZmlj
YXRpb24gcmVxdWVzdCBpcyBjYW5jZWxsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2U6OnNldFVzZXJQZXJtaXNzaW9uKToKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjphbGxvd05v
dGlmaWNhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0Ojp0b1BhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6OnRvRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6CisKKzIwMTAtMDctMjIgIEphbWV5IEhpY2tzICA8
amFtZXkuaGlja3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRW5hYmxlIGJpbmRpbmcgb2YgUU9iamVj
dHMgdG8gSmF2YVNjcmlwdCBlbnZpcm9ubWVudCBmb3IgaW5zcGVjdG9yIGZyb250ZW5kCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIFFPYmplY3RzIHRvIGJlIGJvdW5kIHRvIGdsb2JhbCB2
YXJpYWJsZXMgaW4gdGhlCisgICAgICAgIGphdmFzY3JpcHQgZW52aXJvbm1lbnQgb2YgdGhlIGlu
c3BlY3RvciBmcm9udGVuZC4gVGhpcyBpcyB1c2VmdWwKKyAgICAgICAgZm9yIHdyaXRpbmcgYWx0
ZXJuYXRlIGluc3BlY3RvciBmcm9udGVuZHMgaW4gamF2YXNjcmlwdCB3aGljaCBuZWVkCisgICAg
ICAgIGFkZGl0aW9uYWwgbmF0aXZlIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYSBsaWdodGVyLXdlaWdo
dCBhbHRlcm5hdGl2ZQorICAgICAgICB0aGFuIHVzaW5nIGFuIE5QQVBJIHBsdWdpbi4KKyAKKyAg
ICAgICAgVGhlIGNvZGUgd2hpY2ggaW5zdGFudGlhdGVzIFFXZWJJbnNwZWN0b3IgdXNlcyB0aGlz
IGJ5IHNldHRpbmcgdGhlCisgICAgICAgIGR5bmFtaWMgcHJvcGVydHkgInFfaW5zcGVjdG9ySmF2
YVNjcmlwdFdpbmRvd09iamVjdHMiIG9uIHRoZQorICAgICAgICBRV2ViSW5zcGVjdG9yLiBUaGUg
dmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgYQorICAgICAgICBRTWFwPFFTdHJpbmcs
UVZhcmlhbnQ+IG1hcHBpbmcgZ2xvYmFsIHZhcmlhYmxlIG5hbWUgdG8gUU9iamVjdC4KKworICAg
ICAgICBJIGhhdmUgdXNlZCB0aGlzIHRvIGFkZCBzdXBwb3J0IGZvciBlY2xpcHNlL2Nocm9tZSBy
ZW1vdGUKKyAgICAgICAgZGVidWdnaW5nIGluIFF0VGVzdEJyb3dzZXIuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxOTk1CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRXZWJQYWdlOjpJbnNwZWN0b3JDbGllbnRXZWJQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6OmphdmFTY3JpcHRXaW5kb3dPYmplY3RD
bGVhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQpOgorCisyMDEwLTA3LTIyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIExpYnJhcnkgdmVyc2lvbmluZy4KKworICAg
ICAgICAyLjEgaXMgYnJhbmNoZWQsIHRydW5rIHdpbGwgYmVjb21lIDIuMi4KKworICAgICAgICAq
IEFwaS9xd2Via2l0Z2xvYmFsLmg6CisgICAgICAgICogcXRfd2Via2l0X3ZlcnNpb24ucHJpOgor
CisyMDEwLTA3LTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBCcmVhayBvdXQgInNjaGVt
ZSByZWdpc3RyYXRpb24iIGZ1bmN0aW9uYWxpdHkgZnJvbSBTZWN1cml0eU9yaWdpbiB0byBhIFNj
aGVtZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00Mjc4MworCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCk6CisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0
eW9yaWdpbi5jcHA6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmFkZExvY2FsU2NoZW1l
KToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6cmVtb3ZlTG9jYWxTY2hlbWUpOgorICAg
ICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMpOgorCisyMDEwLTA3LTIwICBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgW1F0XSBBZGQgQVBJIHRvIGRlZmluZSBkZXZpY2Utd2lkdGggYW5k
IGhlaWdodCBmb3IgdXNlIHdpdGggdGhlIHZpZXdwb3J0IG1ldGEgdGFnCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU5NworCisgICAgICAgIFJldmll
d2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSBmb3Igc2V0dGlu
ZyB0aGUgZGV2aWNlU2l6ZSBmb3IgdXNlIGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgICAgb3V0
IHZpZXdwb3J0IG1ldGEgdGFnIEFQSS4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldERldmljZVNpemUpOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlldzo6ZGV2aWNlU2l6ZSk6CisgICAgICAgICogQXBpL3FncmFwaGlj
c3dlYnZpZXcuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6d2luZG93UmVjdCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0
KToKKworMjAxMC0wNy0yMCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFtRdF0gRFJUIHNpZGVlZmZlY3QgcmV2ZWFsZWQgYnkgcjYzNjU3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjU3OAorCisgICAgICAgIERv
bid0IHNldCBhbiBhdXRvbWF0aWMgdGltZW91dCBmb3Igbm90aWZpY2F0aW9ucyB3aGVuIHJ1bm5p
bmcgaW4gRFJULgorICAgICAgICBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggY2FuY2VsKCkgbm90
aWZpY2F0aW9ucyBpbiB1bnJlbGF0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlmaWNhdGlvbik6CisKKzIw
MTAtMDctMTggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFtRdF0gdHN0X1FXZWJQ
YWdlIGZhaWxzIGN1cnNvck1vdmVtZW50cyBhbmQgdGV4dFNlbGVjdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1MzEKKworICAgICAgICBDb3Jy
ZWN0IHRoZSBIVE1MIHVzZWQgYnkgdGhlc2UgdGVzdHMuCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjdXJzb3JNb3Zl
bWVudHMpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0ZXh0U2VsZWN0aW9uKToKKyAgICAgICAg
KHRzdF9RV2ViUGFnZTo6dGV4dEVkaXRpbmcpOgorCisyMDEwLTA3LTE4ICBBbmRyZWFzIEtsaW5n
ICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25p
byBHb21lcy4KKworICAgICAgICBbUXRdIHRzdF9RV2ViRWxlbWVudCBmYWlscyBmaXJzdENoaWxk
TmV4dFNpYmxpbmcgYW5kIGxhc3RDaGlsZFByZXZpb3VzU2libGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI1MjcKKworICAgICAgICBDb3JyZWN0
IHRoZSBIVE1MIHVzZWQgYnkgdGhlc2UgdGVzdHMuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxl
bWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpmaXJz
dENoaWxkTmV4dFNpYmxpbmcpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpsYXN0Q2hpbGRQ
cmV2aW91c1NpYmxpbmcpOgorCisyMDEwLTA3LTE2ICBaaGUgU3UgIDxzdXpoZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUkVHUkVT
U0lPTihyNjE0ODQpOiBCcm9rZSBmb2N1cyBiZWhhdmlvdXIgb24gUXQgYW5kIHByb2JhYmx5IG90
aGVyIHBsYXRmb3JtcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDIyNTMKKworICAgICAgICBEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBFZGl0b3JDbGll
bnQ6OndpbGxTZXRJbnB1dE1ldGhvZFN0YXRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Ondp
bGxTZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oOgorCisyMDEwLTA3LTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUGF0Y2ggZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjIzMgorICAgICAgICBNYWtl
IGNoYW5naW5nIEN1cnNvcnMgd29yayBpbiBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnNldEN1cnNvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aDoKKyAgICAgICAgQ2hhbmdlIHByb3RvdHlwZSB0byBtYXRjaCBuZXcgb25lLgorCisyMDEwLTA3
LTA3ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBQcmV2ZW50IGFzc2VydGlv
bi9kdXBsaWNhdGUgbG9hZHMgZm9yIG5vbi1kZWZlcnJlZCBzdWJ0aXR1dGUtZGF0YSBsb2Fkcwor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg3OQor
CisgICAgICAgIE1haW5SZXNvdXJjZUxvYWRlciB1c2VzIHRoZSBtZW1iZXIgbV9pbml0aWFsUmVx
dWVzdCB0byBzdG9yZSByZXF1ZXN0cyBmb3IgZnV0dXJlCisgICAgICAgIGRlZmVycmVkIGxvYWRz
LiBXaGVuIGRvaW5nIHRoZSBhY3R1YWwgbG9hZCBpbiBoYW5kbGVEYXRhTG9hZE5vdygpLCB3ZSB0
aGVyZWZvcmUKKyAgICAgICAgaGF2ZSB0byBjbGVhciB0aGlzIHJlcXVlc3Qgc28gdGhhdCBzdWJz
ZXF1ZW50IGVudHJpZXMgaW50byB0aGUgbG9hZGVyIHdpbGwgbm90CisgICAgICAgIHN0YXJ0IHll
dCBhbm90aGVyIGxvYWQuCisKKyAgICAgICAgVGhpcyBjYW4gaGFwcGVuIGFzIGEgcmVzdWx0IG9m
IGEgUGFnZUdyb3VwTG9hZERlZmVycmVyIGdvaW5nIG91dCBvZiBzY29wZSB3aGVuCisgICAgICAg
IHJldHVybmluZyBmcm9tIENocm9tZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KCksIHdoaWNoIGNhbGxz
IHNldERlZmVycmVkTG9hZGluZyhmYWxzZSksCisgICAgICAgIGJ1dCBvbmx5IGluIHRoZSBjYXNl
IG9mIHVzaW5nIGJvdGggc3Vic3RpdHV0ZS1kYXRhIGFuZCBub24tZGVmZXJyZWQgbWFpbiByZXNv
dXJjZQorICAgICAgICBsb2FkIHRvZ2V0aGVyLiBUaGF0J3Mgd2h5IHR3byBuZXcgRFJUIGZ1bmN0
aW9ucyB3ZXJlIGFkZGVkOgorCisgICAgICAgICAqIHF1ZXVlTG9hZEhUTUxTdHJpbmcoKQorICAg
ICAgICAgKiBzZXREZWZlck1haW5SZXNvdXJjZUxvYWQoKQorCisgICAgICAgIFRoZSBjaGFuZ2Ug
YWRkcyBEUlQgaG9va3MgZm9yIE1hYywgV2luIGFuZCBRdCBmb3IgdGhlc2UgdHdvIGZ1bmN0aW9u
cy4gRm9yIE1hYworICAgICAgICBhbmQgV2luIHRoZSBob29rIHVzZXMgbmV3IFNQSSBpbiBXZWJE
YXRhU291cmNlLiBGb3IgUXQgYSBuZXcgc3RhdGljIG1lbWJlciB3YXMKKyAgICAgICAgYWRkZWQg
dG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50UXQgYW5kIGFjY2Vzc2VkIHRob3VnaCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaDoKKworMjAxMC0wNy0wOSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBO
b3RpZmljYXRpb25QcmVzZW50ZXIgbmVlZHMgYSBjYW5jZWxSZXF1ZXN0UGVybWlzc2lvbiBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxNzgzCisK
KyAgICAgICAgVXBkYXRlZCBOb3RpZmljYXRpb25QcmVzZW50ZXIgQVBJIHRvIHVzZSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGluc3RlYWQgb2Ygb3JpZ2luCisgICAgICAgIGFuZCBhZGRlZCBhIG5l
dyBOb3RpZmljYXRpb25QcmVzZW50ZXI6OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbiBBUEku
CisgICAgICAgIFRoZSBuZXcgQVBJIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4gYSBmb2xsb3d1cCBw
YXRjaC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0OjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdDo6Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24p
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
Lmg6CisKKzIwMTAtMDctMDkgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFtRdF0gU2tpcCB0ZXN0IHRoYXQgbmV2ZXIgdGVybWluYXRlcyBvbiBtYWVtbzUKKworICAg
ICAgICBEdWUgdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NTM4
CisgICAgICAgIHRoZSB0c3RfUVdlYlBhZ2U6OmluZmluaXRlTG9vcEpTKCkgYXV0b3Rlc3QgbmV2
ZXIgdGVybWluYXRlcy4KKyAgICAgICAgU2tpcCB0aGUgdGVzdCBzbyB0aGF0IHRoZSB0ZXN0IGNh
c2UgbWF5IHJ1biB0byBjb21wbGV0aW9uLgorCisgICAgICAgIFBhdGNoIGJ5IERvbWluaWsgSG9s
bGFuZCA8ZG9taW5pay5ob2xsYW5kQG5va2lhLmNvbT4KKworICAgICAgICAqIHRlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmluZmluaXRlTG9v
cEpTKToKKworMjAxMC0wNy0wOSAgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBVbnJldmlld2VkIHRyaXZpYWwgU3ltYmlhbiBidWlsZCBmaXguCisK
KyAgICAgICAgW1F0XSBGaXggdGhlIFN5bWJpYW4gYnVpbGQgd2hlbiBjb21waWxpbmcgd2l0aG91
dCBTNjAKKworICAgICAgICBVc2UgUV9PU19TWU1CSUFOIGluc3RlYWQgb2YgUV9XU19TNjAgZm9y
IHRoZSB1c2VyIGFnZW50CisgICAgICAgIGRldGVybWluYXRpb24uCisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisKKzIw
MTAtMDctMDkgIEtyaXN0aWFuIEFtbGllICA8a3Jpc3RpYW4uYW1saWVAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4ZWQg
UXQgc3ltYmlhbi9saW51eC1hcm1jYyBta3NwZWMgd2hlbiBjb25maWd1cmVkIHdpdGggLXF0bGli
aW5maXguCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9kZWNsYXJhdGl2ZS5wcm86IFVzZSBRVF9M
SUJJTkZJWC4KKworMjAxMC0wNy0wOSAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IFJlbW92ZSBzdXBlcmZsdW91cyBmdW5jdGlvbiBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNTMKKworICAgICAgICBRV2ViRnJhbWU6OnNl
dFVybCgpIGNhbGxzIGVuc3VyZUFic29sdXRlVXJsKCkgdHdpY2UuIEl0J3MgYmV0dGVyIHRvCisg
ICAgICAgIHN0b3JlIGEgbG9jYWwgdmFyaWFibGUgYW5kIHJldXNlIHRoaXMgb25lLgorCisgICAg
ICAgIFFXZWJGcmFtZTo6bG9hZChRVXJsKSBjYWxscyBRV2ViRnJhbWU6OmxvYWQoUU5ldHdvcmtS
ZXF1ZXN0KSB3aGljaCBpbgorICAgICAgICB0dXJuIHdpbGwgZ2V0IHRoZSBRVXJsIGZyb20gdGhl
IHJlcXVlc3QgYW5kIG1ha2Ugc3VyZSBpdCdzIGFic29sdXRlIGJ5CisgICAgICAgIGNhbGxpbmcg
ZW5zdXJlQWJzb2x1dGVVcmwoKSBvbiBpdC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRVcmwpOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2Fk
KToKKworMjAxMC0wNy0wOCAgU2FtIE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gaW5z
dGFuY2Ugb2JqZWN0cyBjcmVhdGVkIGZvciBRT2JqZWN0cyBhcmUgc29tdGltZXMgR0MnZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNTIKKworICAg
ICAgICBJbXByb3ZlZCB0aGUgdGVzdCB0byBjaGVjayBmb3IganNPYmplY3RzIHRoYXQgdGhhdCBh
cmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgICh0c3RfUVdlYkZyYW1lOjopOgorCisyMDEwLTA3LTA4ICBB
YXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgY2hh
bmdlIHRvIGZpeCBxdCBidWlsZCBhZnRlciBjNjI4NzYuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6YWRkVXNlclN0eWxlU2hlZXQpOgorCisyMDEwLTA3LTA3ICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEFkZCBEUlQgc3VwcG9ydCBmb3IgcGFn
ZVByb3BlcnR5IGV0Yy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDE1ODQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc1BhZ2VC
b3hWaXNpYmxlKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYWdlU2l6ZUFu
ZE1hcmdpbnNJblBpeGVscyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGFn
ZVByb3BlcnR5KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjphZGRVc2VyU3R5
bGVTaGVldCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaDoKKworMjAxMC0wNy0wOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBQYXRjaCBmb3IgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODI2CisgICAgICAgIENvbnZl
cnQgQmFja0ZvcndhcmRMaXN0IHRvIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgYW5kIGFkZCBCYWNr
Rm9yd2FyZExpc3RJbXBsCisgICAgICAgIGFzIHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBv
ZiBpdC4KKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgIChRV2ViSGlz
dG9yeTo6Y2xlYXIpOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmJhY2spOgorICAgICAgICAoUVdl
Ykhpc3Rvcnk6OmZvcndhcmQpOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmdvVG9JdGVtKToKKyAg
ICAgICAgKG9wZXJhdG9yPj4pOgorICAgICAgICAoUVdlYkhpc3RvcnlQcml2YXRlOjpwYWdlKToK
KworMjAxMC0wNy0wOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUmVt
b3ZlIHVudXNlZCBXRUJLSVRfVkVSU0lPTiBkZWZpbmUgZnJvbSBxd2VicGFnZS5jcHAKKworICAg
ICAgICBXZSBub3cgdXNlIHFXZWJLaXRWZXJzaW9uKCkKKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisKKzIwMTAtMDctMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgUGF0Y2ggZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTc3MgorICAgICAgICBBZGQg
YmFzaWMgcGlwaW5nIGZvciBCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVBy
aXZhdGUpOgorCisyMDEwLTA3LTA3ICBNYXJjIE11dHogIDxtYXJjLm11dHpAa2RhYi5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBbUXRdIFFXZWJTZXR0
aW5nczogRG9uJ3QgbGVhayBuYXRpdmUgcGl4bWFwcworCisgICAgICAgIFdoZW4gUV9HTE9CQUxf
U1RBVElDIGdldHMgYXJvdW5kIHRvIGRlbGV0aW5nIHRoZSBRSGFzaCB3aXRoIHRoZQorICAgICAg
ICBwaXhtYXBzIGluLCB0aGUgUUFwcGxpY2F0aW9uIGRlc3RydWN0b3IgaGFzIGFscmVhZHkgYmVl
bgorICAgICAgICBjb21wbGV0ZWQuIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSBmb3IgflFQaXht
YXAgdG8gcmV0dXJuIHRoZQorICAgICAgICBuYXRpdmUgcGl4bWFwIHRvIHRoZSBPUywgdGh1cyBs
ZWFraW5nIHRoZW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgcG9zdCByb3V0aW5lIChl
eGVjdXRlZCBhcyBwYXJ0IG9mIH5RQXBwbGljYXRpb24pCisgICAgICAgIHRoYXQgY2xlYXJzIHRo
ZSBoYXNoIHNvIFFfR0xPQkFMX1NUQVRJQydzIGRlc3RydWN0aW9uIGRvZXNuJ3QgaGF2ZQorICAg
ICAgICB0byBleGVjdXRlIH5RUGl4bWFwJ3MgYW55bW9yZS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2NTcKKworICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAoZWFybHlDbGVhckdyYXBoaWNzKTogTmV3LiBDbGVhcnMg
dGhlIHBpeG1hcCBoYXNoLgorICAgICAgICAoZ3JhcGhpY3MpOiBhZGQgZWFybHlDbGVhckdyYXBo
aWNzIGFzIGEgcUFkZFBvc3RSb3V0aW5lKCkKKworMjAxMC0wNy0wNiAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIENsaWVudCBlcnJvcnMgc2hvdWxkIHNl
dCAiV2ViS2l0RXJyb3JEb21haW4iIGRvbWFpbiBpbnN0ZWFkIG9mICJXZWJLaXQiIHRvIG1hdGNo
IE1hYy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6YmxvY2tlZEVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbm5vdFNob3dVUkxFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjppbnRlcnJ1cHRGb3JQ
b2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisKKzIwMTAtMDctMDYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBjcmFzaCBjYXVzZWQgYnkgbXkgZml4IHRv
IHRoZSBRdCBidWlsZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNs
b3NlV2luZG93KTogUmVsZWFzZSBwb2ludGVyIGludG8KKyAgICAgICAgYSBsb2NhbCBPd25QdHIg
aW5zdGVhZCBvZiBjYWxsaW5nIGNsZWFyLiBBbm90aGVyIGZpeCwgcHJvYmFibHkgYmV0dGVyLAor
ICAgICAgICB3b3VsZCBiZSB0byBjaGFuZ2UgT3duUHRyOjpjbGVhciB0byB6ZXJvIG91dCB0aGUg
cG9pbnRlciBiZWZvcmUgZGVsZXRpbmcsCisgICAgICAgIGJ1dCB0aGF0IGFmZmVjdHMgbWFueSBt
b3JlIGNhbGwgc2l0ZXMsIHNvIEkgd2lsbCBkbyB0aGF0IHNlcGFyYXRlbHkuCisKKzIwMTAtMDct
MDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBRdCBidWls
ZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93KTog
Q2FsbCBjbGVhciBpbnN0ZWFkIG9mCisgICAgICAgIGNhbGxpbmcgZGVsZXRlIG9uIHRoZSByZXN1
bHQgb2YgbGVha1B0ci4KKworMjAxMC0wNi0xOSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KKwor
ICAgICAgICBXZWJJbnNwZWN0b3I6IGpzIGZ1bmN0aW9uIG5hbWUgd2FzIGZpeGVkLgorICAgICAg
ICBkaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kIC0+IGRpc3BhdGNoTWVzc2FnZUZyb21CYWNrZW5k
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NzUK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgor
CisyMDEwLTA3LTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRd
IFJldHVybiB1c2FibGUgcHJvcGVydHkgbmFtZXMgZnJvbSBEUlQncyBjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oKQorCisgICAgICAgIE9iamVjdCBwcm9wZXJ0eSBuYW1lcyBzdWNo
IGFzICdiYWNrZ3JvdW5kLWNvbG9yJyBuZWVkIHRvIGJlIHJldHVybmVkIGluIGNhbWVsCisgICAg
ICAgIGNhc2UsIGkuZS4gYmFja2dyb3VuZENvbG9yIHNvIHRoYXQgSlMgY2FuIHJlZmVyZW5jZSB0
aGVtLiBBZGQgc3VwcG9ydCBmb3IgdGhpcworICAgICAgICB0byBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDA0NDUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcDoKKyAgICAgICAgKGNvbnZlcnRUb1Byb3BlcnR5TmFtZSk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKToKKwor
MjAxMC0wNy0wMSAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIGR1
bXAgZnJhbWVzIGluIGFzY2VuZGluZyBhbHBoYWJldGljYWwgb3JkZXIgb2YgdGl0bGUKKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEyNjEKKworICAg
ICAgICBVbnNraXA6CisgICAgICAgIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9tZXRhcmVkaXJlY3Qt
ZnJhbWVzLmh0bWwKKyAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3JlZGlyZWN0MzAyLWZy
YW1lcy5odG1sCisgICAgICAgIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZWRpcmVjdDMwMi1zdWJm
cmFtZWxvYWQuaHRtbAorICAgICAgICBodHRwL3Rlc3RzL25hdmlnYXRpb24vdGltZXJyZWRpcmVj
dC1mcmFtZXMuaHRtbAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldENoaWxk
SGlzdG9yeUl0ZW1zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oOgorCisyMDEwLTA3LTAxICBCZWEgTGFtICA8YmVhLmxhbUBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBEb2Mg
aW1wcm92ZW1lbnRzIGZvciBRRGVjbGFyYXRpdmVXZWJWaWV3CisKKyAgICAgICAgKiBkZWNsYXJh
dGl2ZS9xZGVjbGFyYXRpdmV3ZWJ2aWV3LmNwcDoKKworMjAxMC0wNy0wMSAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gQ3JlYXRlIFFDb21i
b0JveGVzIHdoZW4gY2xpY2tlZCBhbmQgZGVzdHJveSBvbiBoaWRlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE0NTEKKworICAgICAgICBDdXJyZW50
bHkgYSBRQ29tYm9Cb3ggaXMgY3JlYXRlZCBmb3IgZWFjaCBSZW5kZXJNZW51TGlzdCBhbmQKKyAg
ICAgICAgaXQgZ2V0cyBkZXN0cm95ZWQgZWl0aGVyIHdoZW4gdGhlIFJlbmRlck1lbnVMaXN0IG9y
IHRoZQorICAgICAgICBRV2ViVmlldyAoaXRzIFF0IHBhcmVudCkgaXMgZGVzdHJveWVkLiBUaGlz
IGNhdXNlIGEgY3Jhc2gKKyAgICAgICAgd2hlbiB0aGUgUVdlYlZpZXcgaXMgZGVzdHJveWVkIGJl
Zm9yZSB0aGUgcmVuZGVyIHRyZWUgKHdoaWNoCisgICAgICAgIGlzIGtlcHQgaW4gY2FjaGUpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWltIHRvIGRlc3Ryb3kgdGhlIFFDb21ib0JveCBhcyBzb29u
IGFzIGl0cyBwb3B1cAorICAgICAgICBnZXRzIGhpZGRlbiwgYW5kIGxpa2V3aXNlLCBjcmVhdGUg
aXQgb25seSB3aGVuIHRoZSBwb3B1cCBpcworICAgICAgICByZXF1ZXN0ZWQgdG8gYmUgc2hvd24u
CisgICAgICAgIEl0IGFsc28gcmVtb3ZlcyB0aGUgdW5uZWVkZWQgcmVmZXJlbmNlIHRvIHRoZSBR
R3JhcGhpY3NQcm94eVdpZGdldCwKKyAgICAgICAgZGVzdHJveWluZyB0aGUgUUNvbWJvQm94IGF1
dG9tYXRpY2FsbHkgZGVzdHJveXMgaXRzIGJvdW5kCisgICAgICAgIHByb3h5d2lkZ2V0LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpoaWRlUG9wdXApOgorICAgICAgICAo
V2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjp+UXRGYWxsYmFja1dlYlBvcHVwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CisgICAgICAgIChXZWJD
b3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OmhpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxs
YmFja1dlYlBvcHVwOjpkZXN0cm95UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFj
a1dlYlBvcHVwOjpwb3B1bGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFj
a1dlYlBvcHVwLmg6CisKKzIwMTAtMDctMDEgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KKworICAgICAgICBS
ZW5kZXJpbmcgdGhlIHNwZWVjaCBidXR0b24gaW4gaW5wdXQgZWxlbWVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDk4NAorCisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChncmFwaGljcyk6CisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5oOgorCisyMDEwLTA2LTMwICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5
bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBNYWtlIHN1cmUgd2UgY2F0Y2ggY2xvc2Vk
IFFDb21ib0JveCBwb3B1cHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTAxOQorCisgICAgICAgIFRoZSB3YXkgaXQgd29ya3MgY3VycmVudGx5IGlz
IHVzaW5nIHRoZSBRQ29tYm9Cb3g6OnNob3cvaGlkZVBvcHVwCisgICAgICAgIHZpcnR1YWwgbWV0
aG9kIHRvIGNhdGNoIHBvcHVwIHJlcXVlc3RzIGluIHRoZSBtaWRkbGUuIFRoZXJlIGlzCisgICAg
ICAgIHNvbWUgY2FzZXMgaG93ZXZlciB0aGF0IHRoZSBwb3B1cCB3aWRnZXQgZ2V0cyBjbG9zZWQg
d2l0aG91dAorICAgICAgICBnb2luZyB0aHJvdWdoIHRoZSBoaWRlUG9wdXAgbWV0aG9kLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBldmVudCBmaWx0ZXIgdG8gdGhlIHBvcHVwJ3Mgdmll
dyB0byBrbm93IHdoZW4KKyAgICAgICAgaXQgZ2V0cyBjbG9zZWQgYW5kIGNhbGxzIGhpZGVQb3B1
cCB0byBjYWxsIG91ciBoYW5kbGluZyBjb2RlLgorICAgICAgICBUaGlzIG1heSBnZXQgaGlkZVBv
cHVwIGNhbGxlZCB0d2ljZSBidXQgdGhpcyBzaG91bGRuJ3QgaGF2ZSBhbnkKKyAgICAgICAgZWZm
ZWN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpRdEZhbGxiYWNrV2Vi
UG9wdXBDb21ibyk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6
ZXZlbnRGaWx0ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1
cC5oOgorCisyMDEwLTA2LTMwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBVbnJldmlld2VkIFN5bWJpYW4gYnVpbGQgZml4LgorCisgICAgICAg
IFtRdF0gVXBkYXRlIHRoZSBkZWYgZmlsZXMgdG8gbGluayBEdW1wUmVuZGVyVHJlZS4KKworICAg
ICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDEwLTA2LTMwICBTYW11ZWwg
TmV2YWxhICA8c2FtdWVsLm5ldmFsYUBkaWdpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBBdXRvIHRlc3Qgd29udCBjb21waWxlIGZy
b20gXDNyZHBhcnR5XHdlYmtpdFxXZWJLaXRccXRcdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzIwCisgICAgICAgIAorICAgICAgICBMb2Fk
IHF0dGVzdF9wNC5wcmYgdW5kZXIgUVRESVJfYnVpbGQuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0
cy5wcmk6CisKKzIwMTAtMDYtMjkgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFtRdF0gc3VwcG9ydCBkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEyNjAKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTAt
MDYtMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAg
ICAgIFVucmV2aWV3ZWQgU3ltYmlhbiBidWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBVcGRhdGUg
dGhlIGRlZiBmaWxlIGFmdGVyIHI2MTg3OS4KKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdl
YktpdHUuZGVmOgorCisyMDEwLTA2LTI4ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgW1F0XSBRR3JhcGhpY3NXZWJWaWV3IGNyYXNoIHdoZW4gY2FsbGluZyBzZXRTY2FsZSgpIGJl
Zm9yZSBzZXRVcmwoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDAwMDAKKworICAgICAgICBDaGVjayAncGFnZScgYmVmb3JlIGRlcmVmZXJlbmNlIGlu
IF9xX3NjYWxlQ2hhbmdlZCgpCisgICAgICAgIEF1dG90ZXN0IGluY2x1ZGVkLgorCisgICAgICAg
ICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1By
aXZhdGU6Ol9xX3NjYWxlQ2hhbmdlZCk6CisgICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmll
dy90c3RfcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmll
dzo6Y3Jhc2hPblNldFNjYWxlQmVmb3JlU2V0VXJsKToKKworMjAxMC0wNi0yNiAgU2ltb24gSGF1
c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gUHJvc3BlY3RpdmUg
YnVpbGQgZml4IGZvciBNU1ZDCisKKyAgICAgICAgSW4gb3JkZXIgZm9yIHRoZSBmb3J3YXJkIGRl
Y2xhcmF0aW9uIG9mIFFXZWJTY3JpcHRXb3JsZFByaXZhdGUKKyAgICAgICAgdG8gd29yayB3aXRo
IFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXIsIHRoZW4gY29weSBjb25zdHJ1Y3RvcgorICAg
ICAgICBhbmQgYXNzaWdubWVudCBvcGVyYXRvcnMgbXVzdCBub3QgYmUgY29tcGlsZXIgZ2VuZXJh
dGVkLCB0bworICAgICAgICBhdm9pZCB0aGVtIGVuZGluZyB1cCBpbiBwbGFjZXMgd2hlcmUgdGhl
IHByaXZhdGUgY2xhc3MgaXMgbm90CisgICAgICAgIGRlY2xhcmVkLgorCisgICAgICAgICogQXBp
L3F3ZWJzY3JpcHR3b3JsZC5jcHA6CisgICAgICAgIChRV2ViU2NyaXB0V29ybGQ6OlFXZWJTY3Jp
cHRXb3JsZCk6CisgICAgICAgIChRV2ViU2NyaXB0V29ybGQ6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogQXBpL3F3ZWJzY3JpcHR3b3JsZC5oOgorCisyMDEwLTA2LTI2ICBSb2JlcnQgSG9nYW4gIDxy
b2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIERSVCBTdXBwb3J0IGZvciBzZXRDdXN0b21Qb2xp
Y3lEZWxlZ2F0ZQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTU2NAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEN1c3RvbVBv
bGljeURlbGVnYXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6bmF2aWdhdGlvblR5cGVUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KworMjAxMC0wNi0yNSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKwor
ICAgICAgICBbUXRdIFF0V2ViS2l0IGNyYXNoZXMgaWYgPHNlbGVjdD4ncyByZW5kZXIgY2hhbmdl
cyBpbiBpdHMgb25jaGFuZ2UgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxMTY0CisKKyAgICAgICAgUXRXZWJLaXQgY3Jhc2hlcyBpZiA8c2Vs
ZWN0PidzIHJlbmRlcmVyIGNoYW5nZXMgaW4gaXRzIG9uY2hhbmdlIGV2ZW50LgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCk6CisKKzIwMTAtMDYt
MjUgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gU3VwcG9ydCBldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZCgpCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwMDc5CisKKyAgICAgICAgUmVtb3ZlIGV2YWx1YXRlU2NyaXB0SW5Jc29s
YXRlZFdvcmxkKCkgZnJvbSBRdFdlYktpdCBBUEkuCisgICAgICAgIFJlbW92ZSBRV2ViU2NyaXB0
V29ybGQgZnJvbSBleHBvcnRlZCBoZWFkZXJzLgorICAgICAgICBDb25maW5lIHN1cHBvcnQgdG8g
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQgc28gdGhhdCB0aGUgdGVzdHMgY2FuIHBhc3MuCisKKyAg
ICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpjbGVhclNjcmlwdFdvcmxkcyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTAtMDYtMjQgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQgU3ltYmlh
biBidWlsZCBmaXguCisKKyAgICAgICAgVGhlIFFNTCBXZWJLaXQgaW50ZWdyYXRpb24gbmVlZHMg
dG8gYmUgcGFydCBvZiBRdFdlYktpdC5zaXMKKworICAgICAgICAqIGRlY2xhcmF0aXZlL2RlY2xh
cmF0aXZlLnBybzogUmVtb3ZlZCBub24td29ya2luZyBkZXBsb3ltZW50LgorCisyMDEwLTA2LTIz
ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBV
bnJldmlld2VkLCBTeW1iaWFuIGJ1aWxkIGZpeC4KKworICAgICAgICBbUXRdIFVwZGF0ZSB0aGUg
ZGVmIGZpbGUgYWZ0ZXIgcjYxNDc4LgorCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0
dS5kZWY6CisKKzIwMTAtMDYtMjMgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IERvYzogRml4ZWQgZG9jdW1lbnRhdGlvbiBlcnJvcnMuCisKKyAgICAgICAgKiBkb2NzL3F0d2Vi
a2l0LWJyaWRnZS5xZG9jOgorCisyMDEwLTA2LTIzICBBbGVzc2FuZHJvIFBvcnRhbGUgIDxhbGVz
c2FuZHJvLnBvcnRhbGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIFtRdF0gUHJvdmlkZSB0aGUgV2Via2l0IFFtbCBwbHVnaW4gd2l0
aCBhIFVJRDMgb24gU3ltYmlhbgorCisgICAgICAgIC4uLm90aGVyd2lzZSB3ZSBjYW5ub3QgU3lt
YmlhbiBzaWduIGl0LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZGVjbGFyYXRpdmUucHJvOgor
CisyMDEwLTA2LTIzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBVbnJldmlld2VkIFF0IHBhY2thZ2UgYnVpbGQgZml4LgorCisgICAgICAgIFdo
ZW4gYnVpbGRpbmcgd2l0aG91dCBidWlsZC13ZWJraXQsIHNldCBPVVRQVVRfRElSIGlmIG5lY2Vz
c2FyeSwgbGlrZQorICAgICAgICBpbiB0aGUgb3RoZXIgLnBybyBmaWxlcy4KKworICAgICAgICAq
IGRlY2xhcmF0aXZlL2RlY2xhcmF0aXZlLnBybzoKKworMjAxMC0wNi0yMiAgVGFzdWt1IFN1enVr
aSAgPHRhc3VrdS5zdXp1a2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4IGNvbXBpbGF0aW9uIHdpdGggUVRfTk9fQ09N
Qk9CT1guCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9wdXApOgorCisy
MDEwLTA2LTIxICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBb
UXRdIEJ1aWxkIGZpeCBmb3IgUXQgb24gV2luZG93cyBNU1ZDMjAwOAorCisgICAgICAgIFVucmV2
aWV3ZWQsIGJ1aWxkIGZpeC4KKworICAgICAgICBGaXggYnkgSm9jZWx5biBUdXJjb3R0ZS4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTA2LTIxICBKb2NlbHluIFR1cmNv
dHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
bm9ib2R5LCBidWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBGaXggTVNWQyBidWlsZC4KKworICAg
ICAgICBUaGUgbWF4IG1hY3JvIHdhcyByZXBsYWNpbmcgdGhlIG1heCBmdW5jdGlvbiB1c2VkIGlu
IFN0cmluZ0ltcGwuaAorICAgICAgICB3aGVuIGNvbXBpbGluZyBtb2NfTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQuY3BwLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwOgorCisyMDEwLTA2LTIxICBMYXN6bG8gR29tYm9zICA8
bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCBTeW1iaWFu
IGJ1aWxkIGZpeC4KKworICAgICAgICBbUXRdIFVwZGF0ZSB0aGUgZGVmIGZpbGUgd2l0aCByZWNl
bnQgbmV3IGV4cG9ydHMuCisKKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoK
KworMjAxMC0wNi0yMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBGaXggcGFj
a2FnZSBidWlsZHMKKworICAgICAgICBEb24ndCB1c2UgcnBhdGggdW5sZXNzIHdlJ3JlIGJ1aWxk
aW5nIGluc2lkZSB0aGUgdHJ1bmsuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9kZWNsYXJhdGl2
ZS5wcm86CisKKzIwMTAtMDYtMjAgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgVGhlIFFXZWJIaXN0b3J5IHJlZ3Jlc3Npb24gZml4LgorCisgICAgICAgIEFmdGVyIGNoYW5n
ZSByNTE2MjkgYW5kIHI2MTIwNyBRV2ViSGlzdG9yeSdzIGZ1bmN0aW9uIGJhY2soKSwKKyAgICAg
ICAgZm9yd2FyZCgpLCBnb1RvSXRlbSgpIGdvdCBicm9rZW4uCisKKyAgICAgICAgVXNlIHBhZ2Ut
PmdvVG9JdGVtKCkgaW5zdGVhZCBvZiBkaXJlY3QgYWN0aW9ucyBvbiB0aGUgQmFja0ZvcndhcmRM
aXN0LgorCisgICAgICAgIFtRdF0gUkVHUkVTU0lPTihyNjEyMDcpOiBxd2ViaGlzdG9yeSB1bml0
IHRlc3QgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwNjcyCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAoUVdl
Ykhpc3Rvcnk6OmJhY2spOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmZvcndhcmQpOgorICAgICAg
ICAoUVdlYkhpc3Rvcnk6OmdvVG9JdGVtKToKKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeS90
c3RfcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5Ojppbml0KToKKyAg
ICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6YmFjayk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6
OmZvcndhcmQpOgorCisyMDEwLTA2LTE5ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBbUXRdIFBsYXRmb3JtIHBsdWdpbidzIG11bHRpLXNlbGVjdCBkb2VzIG5vdCB0
YWtlIE9wdEdyb3VwIGludG8gYWNjb3VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDA3MTgKKworICAgICAgICBNYWtlIHN1cmUgdGhhdCBTZWxlY3RE
YXRhIGlzIHZhbGlkIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBkaWFsb2cuCisgICAg
ICAgIFRoaXMgaXMgbW9zdGx5IGltcG9ydGFudCBmb3IgdGhlIE9yYnQgYmFzZWQgcGx1Z2luLgor
ICAgICAgICBBZGRlZCB2aXJ0dWFsIGRlc2N0cnVjdG9ycyB3aGVyZSB0aGV5IHdlcmUgbWlzc2lu
Zy4KKworICAgICAgICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKFFX
ZWJTZWxlY3REYXRhOjp+UVdlYlNlbGVjdERhdGEpOgorICAgICAgICAoUVdlYlNlbGVjdE1ldGhv
ZDo6flFXZWJTZWxlY3RNZXRob2QpOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvbkRhdGE6On5R
V2ViTm90aWZpY2F0aW9uRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9y
bVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXI6
OlNlbGVjdElucHV0TWV0aG9kV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RJbnB1
dE1ldGhvZFdyYXBwZXI6On5TZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyOjpzaG93KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmg6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vV2ViUGx1Z2luLmNwcDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9x
d2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKFFXZWJTZWxlY3REYXRhOjp+UVdlYlNl
bGVjdERhdGEpOgorICAgICAgICAoUVdlYlNlbGVjdE1ldGhvZDo6flFXZWJTZWxlY3RNZXRob2Qp
OgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvbkRhdGE6On5RV2ViTm90aWZpY2F0aW9uRGF0YSk6
CisKKzIwMTAtMDYtMTkgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBCcmlk
Z2UgZG9jdW1lbnRhdGlvbjogc29tZSBzbmlwcGV0cyBoYXZlIHRoZSB3cm9uZyBpbmRlbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3MTcK
KworICAgICAgICBGaXhlZCBjb2RlIHNuaXBwZXRzCisKKyAgICAgICAgKiBkb2NzL3dlYmtpdHNu
aXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHA6CisgICAgICAgICh3cmFwSW5GdW5j
dGlvbik6CisKKzIwMTAtMDYtMDIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgW1F0XSBTdXBwb3J0
IGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKCkKKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwNzkKKworICAgICAgICAqIEFwaS9oZWFkZXJz
LnByaToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6
ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
aDoKKyAgICAgICAgKiBBcGkvcXdlYnNjcmlwdHdvcmxkLmNwcDogQWRkZWQuCisgICAgICAgIChR
V2ViU2NyaXB0V29ybGQ6OlFXZWJTY3JpcHRXb3JsZCk6CisgICAgICAgIChRV2ViU2NyaXB0V29y
bGQ6OndvcmxkKToKKyAgICAgICAgKFFXZWJTY3JpcHRXb3JsZDo6flFXZWJTY3JpcHRXb3JsZCk6
CisgICAgICAgICogQXBpL3F3ZWJzY3JpcHR3b3JsZC5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkv
cXdlYnNjcmlwdHdvcmxkX3AuaDogQWRkZWQuCisgICAgICAgIChRV2ViU2NyaXB0V29ybGRQcml2
YXRlOjpRV2ViU2NyaXB0V29ybGRQcml2YXRlKToKKyAgICAgICAgKFFXZWJTY3JpcHRXb3JsZFBy
aXZhdGU6On5RV2ViU2NyaXB0V29ybGRQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMC0wNi0xOSAgT2xpdmllciBHb2ZmYXJ0
ICA8b2xpdmllci5nb2ZmYXJ0QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIENvbXBpbGF0aW9uIGluIFFX
ZWJQYWdlUHJpdmF0ZTo6dGltZXJFdmVudCB3aXRoIGNsYW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDcxNAorCisgICAgICAgIFFPYmplY3Q6OnRp
bWVyRXZlbnQgaXMgcHJvdGVjdGVkIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYnkgUVdlYlBhZ2VQ
cml2YXRlCisgICAgICAgIHdpdGggY2xhbmcKKworICAgICAgICBRV2ViUGFnZVByaXZhdGUgaXMg
YSBmcmllbmQgb2YgUVdlYlBhZ2UgYW5kIHRoZW4gc2hvdWxkIGhhdmUgYWNjZXNzIHRvCisgICAg
ICAgIGFsbCBwcm90ZWN0ZWQgbWVtYmVycyBvZiBwYXJlbnRzIG9mIFFXZWJQYWdlLCBpbmNsdWRp
bmcgUU9iamVjdC4KKyAgICAgICAgQnV0IHRoZSBjbGFuZyB0ZWFtIGRvIG5vdCB3YW50IHRvIGNv
bmZvcm0gdG8gdGhpcyBhc3BlY3Qgb2YgdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgYmVjYXVz
ZSAiSXQgaXMgZWl0aGVyIGEgZHJhZnRpbmcgZXJyb3Igb3IgYSBob3JyaWJsZSBtaXN0YWtlLiIK
KyAgICAgICAgU2VlIGh0dHA6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD02ODQwCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgYmV0dGVyIGJlY2F1c2UgUVdlYlBhZ2UgZG9lcyBub3Qg
cmVpbXBsZW1lbnQgdGhlIHRpbWVyRXZlbnQKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dGlt
ZXJFdmVudCBpcyBjYWxsZWQgZnJvbSBRV2ViUGFnZTo6ZXZlbnQpCisgICAgICAgIFNvIGN1c3Rv
bWVycyB0aGF0IHdvdWxkIHJlaW1wbGVtZW50IHRoZWlyIG93biB0aW1lckV2ZW50CisgICAgICAg
IGZvciB0aGVpciBvd24gdGltZXIgbm93IGdldCBhIGNoYW5jZSB0byBjYXRjaCB0aGVtLgorCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp0
aW1lckV2ZW50KToKKworMjAxMC0wNi0xOSAgTWlya28gRGFtaWFuaSAgPG1pcmtvQGRldmVsZXIu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtR
dF0gQXZvaWQgdHJ1bmNhdGlvbiBvZiB6b29tIGZhY3RvciBpbiBRV2ViRnJhbWUncyBwcmludCBm
dW5jdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQwNjYyCisKKyAgICAgICAgVGhlIHpvb20gZmFjdG9yIGlzIGEgcXJlYWwgbnVtYmVyIGJ1dCBp
dHMgdmFsdWUgaXMgdHJ1bmNhdGVkIHRvIGFuCisgICAgICAgIGludGVnZXIuIFNvIGEgY2FzdCB0
byBxcmVhbCBpcyBuZWVkZWQgdG8gYXZvaWQgdGhpcyBpc3N1ZS4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpwcmludCk6CisKKzIwMTAtMDYtMTgg
IFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gcGFzcyBwbHVnaW5z
L29wZW4tYW5kLWNsb3NlLXdpbmRvdy13aXRoLXBsdWdpbi5odG1sIG9uIFF0CisKKyAgICAgICAg
Q2FwdHVyZSBsb2dEZXN0cm95IG1lc3NhZ2VzIGZyb20gdGhlIHRlc3QgcGx1Z2luLiBEUlQncyBX
ZWJQYWdlCisgICAgICAgIGlzIGFscmVhZHkgZGVzdHJveWVkIGJ5IHRoZSB0aW1lIHRoZXkgYXJl
IGVtaXR0ZWQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMzMzMzCisKKyAgICAgICAgVW5za2lwOgorICAgICAgICBwbHVnaW5zL29wZW4tYW5kLWNs
b3NlLXdpbmRvdy13aXRoLXBsdWdpbi5odG1sCisgICAgICAgIHBsdWdpbnMvZ2V0dXJsbm90aWZ5
LWR1cmluZy1kb2N1bWVudC10ZWFyZG93bi5odG1sCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6CisKKzIw
MTAtMDYtMTggIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEZpeCBkb2N1
bWVudGF0aW9uIGZvciB0aGUgZGVjbGFyYXRpdmUgbW9kdWxlIGltcG9ydC4KKworICAgICAgICAq
IGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOgorCisyMDEwLTA2LTE4ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRml4IGRvY3VtZW50YXRpb24gaXNzdWUgb24g
dGhlIG9uQWxlcnQgaGFuZGxlci4KKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIGlzc3VlIHdpdGgg
UVRfTk9fQUNUSU9OLgorCisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmll
dy5jcHA6CisgICAgICAgICogZGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZld2Vidmlld19wLmg6CisK
KzIwMTAtMDYtMTggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJFR1JFU1NJ
T04ocjYwOTU4KSBbUXRdIHF3ZWJwYWdlOjppbnB1dE1ldGhvZHMgYXV0by10ZXN0IGZhaWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDgzMAorCisg
ICAgICAgIFdoZW4gYWN0aXZhdGluZyBhIHJlZ3VsYXIgaW5wdXQgbWV0aG9kIGZpZWxkLCBhbHdh
eXMgc2V0IG9yIHVuc2V0IHRoZSBJbWhIaWRkZW5UZXh0CisgICAgICAgIGlucHV0IG1ldGhvZCBo
aW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElucHV0TWV0aG9kU3RhdGUpOgorCisy
MDEwLTA2LTE4ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBDaGFuZ2Ug
dGhlIHRhcmdldCBwYXRoIHRvIFF0V2ViS2l0LgorCisgICAgICAgICogZGVjbGFyYXRpdmUvZGVj
bGFyYXRpdmUucHJvOgorCisyMDEwLTA2LTE1ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBN
b3ZlIGlzQXZhaWxhYmxlKCkvc2V0SXNBdmFpbGFibGUoKSBmcm9tIERhdGFiYXNlL0RhdGFiYXNl
U3luYyB0byBBYnN0cmFjdERhdGFiYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzkwNDEKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorCisyMDEwLTA2LTE3ICBS
b2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEJ1aWxkIGZp
eAorCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgUmVtb3ZlIGluY2x1ZGVzIGluIHFk
ZWNsYXJhdGl2ZXdlYnZpZXcqLiogdGhhdCByZWx5IG9uIGFuIGluc3RhbGxhdGlvbgorICAgICAg
ICBvZiBRdFdlYktpdC4KKworICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZp
ZXcuY3BwOgorICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXdfcC5oOgor
CisyMDEwLTA2LTE3ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjEzNDYuCisgICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzYxMzQ2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMzMzMworCisgICAgICAgIEJyb2tlIGluc3BlY3RvciB0ZXN0cyBv
biBRdAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpq
YXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UpOgorCisyMDEwLTA2LTE3ICBSb2JlcnQgSG9nYW4gIDxy
b2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICBbUXRdIHBhc3MgcGx1Z2lucy9vcGVuLWFuZC1jbG9zZS13aW5kb3ctd2l0aC1w
bHVnaW4uaHRtbCBvbiBRdAorCisgICAgICAgIENhcHR1cmUgbG9nRGVzdHJveSBtZXNzYWdlcyBm
cm9tIHRoZSB0ZXN0IHBsdWdpbi4gRFJUJ3MgV2ViUGFnZQorICAgICAgICBpcyBhbHJlYWR5IGRl
c3Ryb3llZCBieSB0aGUgdGltZSB0aGV5IGFyZSBlbWl0dGVkLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzMzMworCisgICAgICAgIFVuc2tpcDoK
KyAgICAgICAgcGx1Z2lucy9vcGVuLWFuZC1jbG9zZS13aW5kb3ctd2l0aC1wbHVnaW4uaHRtbAor
ICAgICAgICBwbHVnaW5zL2dldHVybG5vdGlmeS1kdXJpbmctZG9jdW1lbnQtdGVhcmRvd24uaHRt
bAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZh
U2NyaXB0Q29uc29sZU1lc3NhZ2UpOgorCisyMDEwLTA2LTE3ICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXNAd2Via2l0Lm9yZz4sIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIFtRdF0gUXRXZWJLaXQgZG9lcyBub3Qgc3VwcG9ydCB2aWV3cG9ydCBtZXRhIHRh
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5MDIK
KworICAgICAgICBBZGQgdmlld3BvcnQgbWV0YSB0YWcgc3VwcG9ydCB0byBRdFdlYktpdCBBUEkg
bGF5ZXIuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIGRpZFJlY2VpdmVWaWV3cG9ydEFyZ3Vt
ZW50cyBpbiBvdXIgQ2hyb21lQ2xpZW50UXQKKyAgICAgICAgd2hpY2ggaXMgaG9va2VkIHVwIHdp
dGggUVdlYlBhZ2U6OnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKCkuCisgICAgICAgIFRoaXMgc2ln
bmFsIGRvZXMgbm90IGFmZmVjdCB0aGUgY3VycmVudCBkZWZhdWx0IGJlaGF2aW9yLgorICAgICAg
ICBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgc2lnbmFsIGV4cGxhaW5zIGhvdyB0byBtYWtlIHVz
ZSBvZiB0aGlzIG5ldyBmZWF0dXJlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6Cisg
ICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgU3Rv
cmUgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiBsYWlkIG91dCBv
ciBub3QuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp2
aWV3cG9ydENoYW5nZVJlcXVlc3RlZCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAg
ICAgICAgQWRkZWQgY2xhc3MgUXRWaWV3cG9ydEhpbnRzUHJpdmF0ZS4KKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuaDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRQcmVmZXJyZWRDb250ZW50c1NpemUp
OgorICAgICAgICBJbXByb3ZlZCBkb2N1bWVudGF0aW9uIGFuZCBub3cgb25seSBsYXlvdXQgaWYg
dGhlIHBhZ2UgaGFkIGFscmVhZHkKKyAgICAgICAgcGFzc2VkIGxheW91dCBwaGFzZS4KKyAgICAg
ICAgQWRkZWQgY2xhc3MgUVdlYlBhZ2U6OlZpZXdwb3J0SGludHMuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OndpbmRvd1JlY3QpOgorICAgICAgICBNb2RpZmllZCB0byB3b3JrIGFzIGludGVuZGVk
IGJ5IHRoZSBET00sIGZvciBib3RoIFFXZWJWaWV3CisgICAgICAgIGFuZCBRR3JhcGhpY3NXZWJW
aWV3LgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmRpZFJlY2VpdmVWaWV3cG9y
dEFyZ3VtZW50cyk6CisgICAgICAgIEVtaXRzIHRoZSBzaWduYWwgUVdlYlBhZ2U6OnZpZXdwb3J0
Q2hhbmdlUmVxdWVzdGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExv
YWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRG
aXJzdExheW91dCk6CisgICAgICAgIFVwZGF0ZSBpbmZvcm1hdGlvbiBhYm91dCB3aGV0aGVyIHRo
ZSBwYWdlIGhhcyBiZWVuIGxhaWQgb3V0IG9yIG5vdC4KKyAgICAgICAgSWYgdGhlIHBhZ2UgaGFz
IGJlZW4gbGFpZCBvdXQgd2UgaWdub3JlIGFueSBmdXJ0aGVyIHZpZXdwb3J0IG1ldGEgZGF0YS4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OndpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6d2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpncmFwaGljc0l0ZW1WaXNpYmxlUmVjdCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisgICAgICAgIFRoZSBQYWdl
Q2xpZW50IGlzIG5vdyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZSByaWdodCB3aW5kb3cg
cmVjdC4KKworMjAxMC0wNi0xNyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAbm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgor
CisgICAgICAgIFtRdF0gVXBzdHJlYW0gdGhlIFdlYktpdCBRTUwgaW50ZWdyYXRpb24gcGx1Z2lu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA1MAor
CisgICAgICAgIEFkZCB0byB0aGUgUXQgcG9ydCB0aGUgUU1MIFdlYktpdCBpbnRlZ3JhdGlvbiBw
bHVnaW4uCisgICAgICAgIFFEZWNsYXJhdGl2ZVdlYlZpZXcgaXMgY3JlYXRpbmcgdGhlIGl0ZW0g
YW5kIGV4cG9zZQorICAgICAgICBwcm9wZXJ0aWVzLiBUaGUgQysrIEFQSSBpcyBub3QgcHVibGlj
LCBvbmx5IHRoZQorICAgICAgICBwcm9wZXJ0aWVzIGFyZS4KKworICAgICAgICAqIGRlY2xhcmF0
aXZlL2RlY2xhcmF0aXZlLnBybzogQWRkZWQuCisgICAgICAgICogZGVjbGFyYXRpdmUvcGx1Z2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRRbWxQbHVnaW46OnJlZ2lzdGVyVHlwZXMpOgor
ICAgICAgICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXcuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXdQcml2YXRlOjpRRGVjbGFyYXRpdmVXZWJWaWV3UHJp
dmF0ZSk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3UHJpdmF0ZTo6KToKKyAgICAgICAg
KFFEZWNsYXJhdGl2ZVdlYlZpZXdQcml2YXRlOjp3aW5kb3dPYmplY3RzQXBwZW5kKToKKyAgICAg
ICAgKEdyYXBoaWNzV2ViVmlldzo6R3JhcGhpY3NXZWJWaWV3KToKKyAgICAgICAgKEdyYXBoaWNz
V2ViVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKEdyYXBoaWNzV2ViVmlldzo6bW91
c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoR3JhcGhpY3NXZWJWaWV3Ojptb3VzZURvdWJsZUNs
aWNrRXZlbnQpOgorICAgICAgICAoR3JhcGhpY3NXZWJWaWV3Ojp0aW1lckV2ZW50KToKKyAgICAg
ICAgKEdyYXBoaWNzV2ViVmlldzo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUURlY2xhcmF0
aXZlV2ViVmlldzo6UURlY2xhcmF0aXZlV2ViVmlldyk6CisgICAgICAgIChRRGVjbGFyYXRpdmVX
ZWJWaWV3Ojp+UURlY2xhcmF0aXZlV2ViVmlldyk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJW
aWV3Ojppbml0KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OmNvbXBvbmVudENvbXBs
ZXRlKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnN0YXR1cyk6CisgICAgICAgIChR
RGVjbGFyYXRpdmVXZWJWaWV3Ojpwcm9ncmVzcyk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJW
aWV3Ojpkb0xvYWRTdGFydGVkKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OmRvTG9h
ZFByb2dyZXNzKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnBhZ2VVcmxDaGFuZ2Vk
KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OmRvTG9hZEZpbmlzaGVkKToKKyAgICAg
ICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnVybCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJW
aWV3OjpzZXRVcmwpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkV2lk
dGgpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0UHJlZmVycmVkV2lkdGgpOgor
ICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6cHJlZmVycmVkSGVpZ2h0KToKKyAgICAgICAg
KFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnNldFByZWZlcnJlZEhlaWdodCk6CisgICAgICAgIChRRGVj
bGFyYXRpdmVXZWJWaWV3OjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAoUURlY2xhcmF0
aXZlV2ViVmlldzo6dXBkYXRlRGVjbGFyYXRpdmVXZWJWaWV3U2l6ZSk6CisgICAgICAgIChRRGVj
bGFyYXRpdmVXZWJWaWV3Ojppbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdl
YlZpZXc6OnVwZGF0ZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3
OjpnZW9tZXRyeUNoYW5nZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6amF2YVNj
cmlwdFdpbmRvd09iamVjdHMpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6cW1sQXR0
YWNoZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXdQcml2YXRlOjp1
cGRhdGVXaW5kb3dPYmplY3RzKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnJlbmRl
cmluZ0VuYWJsZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0UmVuZGVyaW5n
RW5hYmxlZCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3OjpoZXVyaXN0aWNab29tKToK
KyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnByZXNzR3JhYlRpbWUpOgorICAgICAgICAo
UURlY2xhcmF0aXZlV2ViVmlldzo6c2V0UHJlc3NHcmFiVGltZSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJWaWV3OjpiYWNrQWN0aW9uKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6
OmZvcndhcmRBY3Rpb24pOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6cmVsb2FkQWN0
aW9uKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnN0b3BBY3Rpb24pOgorICAgICAg
ICAoUURlY2xhcmF0aXZlV2ViVmlldzo6dGl0bGUpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2Vi
Vmlldzo6aWNvbik6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3OjpzZXRTdGF0dXNUZXh0
KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OndpbmRvd09iamVjdENsZWFyZWQpOgor
ICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c3RhdHVzVGV4dCk6CisgICAgICAgIChRRGVj
bGFyYXRpdmVXZWJWaWV3OjpwYWdlKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnNl
dHRpbmdzT2JqZWN0KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnNldFBhZ2UpOgor
ICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6bG9hZCk6CisgICAgICAgIChRRGVjbGFyYXRp
dmVXZWJWaWV3OjpodG1sKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OnNldEh0bWwp
OgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0Q29udGVudCk6CisgICAgICAgIChR
RGVjbGFyYXRpdmVXZWJWaWV3OjpoaXN0b3J5KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZp
ZXc6OnNldHRpbmdzKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6OmNyZWF0ZVdpbmRv
dyk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3OjpuZXdXaW5kb3dDb21wb25lbnQpOgor
ICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0TmV3V2luZG93Q29tcG9uZW50KToKKyAg
ICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXc6Om5ld1dpbmRvd1BhcmVudCk6CisgICAgICAgIChR
RGVjbGFyYXRpdmVXZWJWaWV3OjpzZXROZXdXaW5kb3dQYXJlbnQpOgorICAgICAgICAoUURlY2xh
cmF0aXZlV2ViVmlldzo6Y29udGVudHNTaXplKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZp
ZXc6OmNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViVmlldzo6c2V0Q29u
dGVudHNTY2FsZSk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3OjplbGVtZW50QXJlYUF0
KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlBhZ2U6OlFEZWNsYXJhdGl2ZVdlYlBhZ2UpOgor
ICAgICAgICAoUURlY2xhcmF0aXZlV2ViUGFnZTo6flFEZWNsYXJhdGl2ZVdlYlBhZ2UpOgorICAg
ICAgICAoUURlY2xhcmF0aXZlV2ViUGFnZTo6Y2hvb3NlRmlsZSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2Vi
UGFnZTo6amF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViUGFnZTo6
amF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJQYWdlOjp2aWV3SXRl
bSk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJQYWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAqIGRlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZXdlYnZpZXdfcC5oOiBBZGRlZC4KKyAgICAgICAg
KFFEZWNsYXJhdGl2ZVdlYlZpZXc6Oik6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJWaWV3Ojpp
c0NvbXBvbmVudENvbXBsZXRlUHVibGljKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlZpZXdB
dHRhY2hlZDo6UURlY2xhcmF0aXZlV2ViVmlld0F0dGFjaGVkKToKKyAgICAgICAgKFFEZWNsYXJh
dGl2ZVdlYlZpZXdBdHRhY2hlZDo6d2luZG93T2JqZWN0TmFtZSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJWaWV3QXR0YWNoZWQ6OnNldFdpbmRvd09iamVjdE5hbWUpOgorICAgICAgICAoUURl
Y2xhcmF0aXZlV2ViU2V0dGluZ3M6OlFEZWNsYXJhdGl2ZVdlYlNldHRpbmdzKToKKyAgICAgICAg
KFFEZWNsYXJhdGl2ZVdlYlNldHRpbmdzOjpzdGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAgICAo
UURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6OnNldFN0YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAg
IChRRGVjbGFyYXRpdmVXZWJTZXR0aW5nczo6Zml4ZWRGb250RmFtaWx5KToKKyAgICAgICAgKFFE
ZWNsYXJhdGl2ZVdlYlNldHRpbmdzOjpzZXRGaXhlZEZvbnRGYW1pbHkpOgorICAgICAgICAoUURl
Y2xhcmF0aXZlV2ViU2V0dGluZ3M6OnNlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJTZXR0aW5nczo6c2V0U2VyaWZGb250RmFtaWx5KToKKyAgICAgICAgKFFEZWNsYXJh
dGl2ZVdlYlNldHRpbmdzOjpzYW5zU2VyaWZGb250RmFtaWx5KToKKyAgICAgICAgKFFEZWNsYXJh
dGl2ZVdlYlNldHRpbmdzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KToKKyAgICAgICAgKFFEZWNs
YXJhdGl2ZVdlYlNldHRpbmdzOjpjdXJzaXZlRm9udEZhbWlseSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJTZXR0aW5nczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkpOgorICAgICAgICAoUURlY2xh
cmF0aXZlV2ViU2V0dGluZ3M6OmZhbnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFFEZWNsYXJh
dGl2ZVdlYlNldHRpbmdzOjpzZXRGYW50YXN5Rm9udEZhbWlseSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJTZXR0aW5nczo6bWluaW11bUZvbnRTaXplKToKKyAgICAgICAgKFFEZWNsYXJhdGl2
ZVdlYlNldHRpbmdzOjpzZXRNaW5pbXVtRm9udFNpemUpOgorICAgICAgICAoUURlY2xhcmF0aXZl
V2ViU2V0dGluZ3M6Om1pbmltdW1Mb2dpY2FsRm9udFNpemUpOgorICAgICAgICAoUURlY2xhcmF0
aXZlV2ViU2V0dGluZ3M6OnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUpOgorICAgICAgICAoUURl
Y2xhcmF0aXZlV2ViU2V0dGluZ3M6OmRlZmF1bHRGb250U2l6ZSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJTZXR0aW5nczo6c2V0RGVmYXVsdEZvbnRTaXplKToKKyAgICAgICAgKFFEZWNsYXJh
dGl2ZVdlYlNldHRpbmdzOjpkZWZhdWx0Rml4ZWRGb250U2l6ZSk6CisgICAgICAgIChRRGVjbGFy
YXRpdmVXZWJTZXR0aW5nczo6c2V0RGVmYXVsdEZpeGVkRm9udFNpemUpOgorICAgICAgICAoUURl
Y2xhcmF0aXZlV2ViU2V0dGluZ3M6OmF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFFEZWNsYXJh
dGl2ZVdlYlNldHRpbmdzOjpzZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIChRRGVjbGFyYXRp
dmVXZWJTZXR0aW5nczo6amF2YXNjcmlwdEVuYWJsZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZl
V2ViU2V0dGluZ3M6OnNldEphdmFzY3JpcHRFbmFibGVkKToKKyAgICAgICAgKFFEZWNsYXJhdGl2
ZVdlYlNldHRpbmdzOjpqYXZhRW5hYmxlZCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJTZXR0
aW5nczo6c2V0SmF2YUVuYWJsZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6
OnBsdWdpbnNFbmFibGVkKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlNldHRpbmdzOjpzZXRQ
bHVnaW5zRW5hYmxlZCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJTZXR0aW5nczo6cHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJTZXR0aW5nczo6c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJTZXR0aW5n
czo6amF2YXNjcmlwdENhbk9wZW5XaW5kb3dzKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlNl
dHRpbmdzOjpzZXRKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MpOgorICAgICAgICAoUURlY2xhcmF0
aXZlV2ViU2V0dGluZ3M6OmphdmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpOgorICAgICAgICAo
UURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6OnNldEphdmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQp
OgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6OmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6OnNldERldmVsb3BlckV4dHJh
c0VuYWJsZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6OmxpbmtzSW5jbHVk
ZWRJbkZvY3VzQ2hhaW4pOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6OnNldExp
bmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4pOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGlu
Z3M6Onpvb21UZXh0T25seSk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJTZXR0aW5nczo6c2V0
Wm9vbVRleHRPbmx5KToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlNldHRpbmdzOjpwcmludEVs
ZW1lbnRCYWNrZ3JvdW5kcyk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJTZXR0aW5nczo6c2V0
UHJpbnRFbGVtZW50QmFja2dyb3VuZHMpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGlu
Z3M6Om9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAgKFFEZWNsYXJhdGl2
ZVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZCk6CisgICAgICAg
IChRRGVjbGFyYXRpdmVXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKToKKyAgICAgICAgKFFEZWNsYXJhdGl2ZVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQpOgorICAgICAgICAoUURlY2xhcmF0aXZlV2ViU2V0dGluZ3M6
OmxvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChRRGVjbGFyYXRpdmVXZWJT
ZXR0aW5nczo6c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAgKFFEZWNs
YXJhdGl2ZVdlYlNldHRpbmdzOjpsb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzKToKKyAg
ICAgICAgKFFEZWNsYXJhdGl2ZVdlYlNldHRpbmdzOjpzZXRMb2NhbENvbnRlbnRDYW5BY2Nlc3NS
ZW1vdGVVcmxzKToKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9xbWxkaXI6IEFkZGVkLgorICAgICAg
ICAqIGRvY3MvcXR3ZWJraXQucWRvY2NvbmY6CisKKzIwMTAtMDYtMTcgIE1hcmsgQnJhbmQgIDxt
YWJyYW5kQG1hYnJhbmQubmw+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgW1F0XSB1c2UgIndpbjMyLWcrKyoiIHNjb3BlIHRvIG1hdGNoIGFsbCBNaW5H
VyBtYWtlc3BlY3MKKworICAgICAgICBUaGUgc2NvcGUgIndpbjMyLWcrKyIgY29tZXMgZnJvbSB0
aGUgbmFtZSBvZiB0aGUgbWFrZXNwZWMuIEhvd2V2ZXIsIGl0CisgICAgICAgIGlzIGZyZXF1ZW50
bHkgdXNlZCB0byBjaGVjayBmb3IgTWluR1cuIFRoaXMgd29ya3MgZmluZSBhcyBsb25nIGFzCisg
ICAgICAgIHdpbjMyLWcrKyBpcyB0aGUgb25seSBtYWtlc3BlYyBmb3IgTWluR1cuIE5vdyB3ZSBu
ZWVkIHRoZSB3aWxkY2FyZAorICAgICAgICB0byBjb3ZlciAid2luMzItZysrLWNyb3NzIiBhcyB3
ZWxsLgorCisgICAgICAgICogQXBpL0Rlcml2ZWRTb3VyY2VzLnBybzoKKworMjAxMC0wNS0yOCAg
VmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubiwgQW50dGkgS29pdmlzdG8KKwor
ICAgICAgICBbUXRdIEFkZCBpbnRlcm5hbCBRdCBBcGkgdG8gY29uZmlndXJlIHJlcGFpbnQgdGhy
b3R0bGluZyBwYXJhbWV0ZXJzLiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4NDAxCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCk6CisKKzIwMTAt
MDYtMTYgIEFsZXhpcyBNZW5hcmQgPGFsZXhpcy5tZW5hcmRAbm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4IHRpbGVkIGJh
Y2tpbmcgc3RvcmUgcGFpbnRpbmcgd2hlbiBjYWxsaW5nIFFHcmFwaGljc1dlYlZpZXc6OnNldFBh
Z2UoKSBhZnRlciBzZXRSZXNpemVzVG9Db250ZW50cyh0cnVlKQorCisgICAgICAgIFdoZW4gY2Fs
bGluZyBzZXRQYWdlKCkgYWZ0ZXIgc2V0UmVzaXplc1RvQ29udGVudHMsIHRoZSB2YWx1ZSBvZiB0
aGUgcHJvcGVydHkgd2Fzbid0IHByb3BhZ2F0ZWQKKyAgICAgICAgdG8gdGhlIHBhZ2UgY2xpZW50
LiBUaGVyZWZvcmUgdGhlIHZpc2libGUgcmVjdCBmb3IgdGhlIHRpbGVkIGJhY2tpbmcgc3RvcmUg
d2FzIGluY29ycmVjdC4KKworICAgICAgICBTaW1wbHkgbW92ZSB0aGUgdmFyaWFibGUgYXNzaWdu
bWVudCBpbnRvIHVwZGF0ZVJlc2l6ZXNUb0NvbnRlbnRzRm9yUGFnZSgpLCB3aGljaCBpcyBhbHdh
eXMgY2FsbGVkLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVJlc2l6ZXNUb0NvbnRlbnRzRm9yUGFn
ZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRSZXNpemVzVG9Db250ZW50cyk6CisK
KzIwMTAtMDYtMTYgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgor
CisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAg
U3dhcCBXZWJHTCBhbmQgU2l0ZVNwZWNpZmljUXVpcmtzIGF0dHJpYnV0ZXMgaW4gdGhlIFFXZWJT
ZXR0aW5ncworICAgICAgICBlbnVtLCB0byBhbGxvdyBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkg
d2l0aCBxdHdlYmtpdC0yLjAsIHdoZXJlCisgICAgICAgIFdlYkdMIGlzIG5vdCBpbiB0aGUgc2V0
dGluZ3MgYnV0IFNpdGVTcGVjaWZpY1F1aXJrcyB3aWxsIGJlLgorCisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5oOgorCisyMDEwLTA2LTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggYnVpbGQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2hvdWxkQ2xvc2UpOiBDYWxsIGxvYWRlcigpLT5zaG91bGRDbG9zZSgpLgorCisyMDEwLTA2
LTE1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFJlbmFt
ZSBOb3RpZmljYXRpb0ljb25XcmFwcGVyIHRvIE5vdGlmaWNhdGlvbldyYXBwZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNTcxCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25XcmFwcGVyOjpOb3RpZmljYXRpb25XcmFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbldyYXBwZXI6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbldyYXBwZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uV3JhcHBlcjo6aWNvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
V3JhcHBlcjo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwbGF5Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWwpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvbkZvcldy
YXBwZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25XcmFwcGVyOjp+Tm90aWZp
Y2F0aW9uV3JhcHBlcik6CisKKzIwMTAtMDYtMTUgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5n
b21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIFN5bWJpYW4gYnVpbGQgZml4
LgorCisgICAgICAgIFtRdF0gVXBkYXRlIHRoZSBkZWYgZmlsZSB3aXRoIHJlY2VudCBuZXcgZXhw
b3J0cy4KKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDEwLTA2
LTE1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBVbnJl
dmlld2VkLgorCisgICAgICAgIEZpeCB0eXBvIGluIHJldmlld2VyIG5hbWUgaW4gcjYxMTg3CisK
KzIwMTAtMDYtMTUgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBbUXRdIEJ1aWxkIGZpeCBm
b3IgUXQgbWluaW1hbCBhZnRlciByNjExMjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNjI0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25JY29uV3JhcHBlcjo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjp0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25JY29uV3JhcHBlcjo6bWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25JY29uV3JhcHBlcjo6aWNvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uSWNvbldyYXBwZXI6Om5vdGlmaWNhdGlvbkNsb3NlZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjp+Tm90aWZpY2F0aW9uSWNvbldyYXBwZXIpOgorCisy
MDEwLTA2LTE0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKwor
ICAgICAgICBVbnJldmlld2VkLCBTeW1iaWFuIGJ1aWxkIGZpeC4KKworICAgICAgICBbUXRdIFVw
ZGF0ZSB0aGUgZGVmIGZpbGUgd2l0aCByZWNlbnQgbmV3IGV4cG9ydHMuCisKKyAgICAgICAgKiBz
eW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wNi0xMyAgWWFlbCBBaGFyb24gIDx5
YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBQbGF0Zm9ybSBwbHVnaW4gc3VwcG9ydCBm
b3IgTm90aWZpY2F0aW9ucyBVSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwMDUKKworICAgICAgICBBZGQgYW4gaW50ZXJmYWNlIHRvIHRoZSBwbGF0
Zm9ybSBwbHVnaW4gdG8gZGlzcGxheSBub3RpZmljYXRpb25zLgorICAgICAgICBJbXBsZW1lbnRl
ZCB0aGUgbm90aWZpY2F0aW9uIGluIHRoZSBleGFtcGxlIHBsYXRmb3JtIHBsdWdpbi4gCisgICAg
ICAgIFRoaXMgaW50ZXJmYWNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGNvdWxkIGJlIHR1
cm5lZCBvZmYgd2l0aAorICAgICAgICBhIGJ1aWxkIGZsYWcuIFRoZSBwbGF0Zm9ybSBwbHVnaW4g
c2hvdWxkIGNvbnRyb2wgaXRzIG93biBsaWZlY3ljbGUsCisgICAgICAgIHNvIG5vdyB0aGUgY2xv
c2UgdGltZXIgYXBwbGllcyBvbmx5IHdoZW4gdXNpbmcgdGhlIFFTeXN0ZW1UcmF5SWNvbi4KKyAg
ICAgICAgVGhhdCdzIGJlY2F1c2UgUVN5c3RlbVRyYXlJY29uIGRvZXMgbm90IGluZm9ybSBpdHMg
Y2FsbGVyIHdoZW4gaXQKKyAgICAgICAgaXMgY2xvc2VkLgorCisgICAgICAgIENoYW5nZWQgdGhl
IHdheSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCBpcyBkZWxldGVkIGJlY2F1c2UgaXQK
KyAgICAgICAgaXMgYmVpbmcgYWNjZXNzZWQgd2hlbiBHQyBpcyBkZWxldGluZyB0aGUgTm90aWZp
Y2F0aW9uIG9iamVjdHMuCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0IGlz
IG5vdyBkZXRhY2hpbmcgaXRzZWxmIGZyb20gdGhlCisgICAgICAgIE5vdGlmaWNhdGlvbnMgYmVm
b3JlIGl0IGlzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
Lmg6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpRV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyKToKKyAgICAgICAgKFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6On5RV2ViTm90
aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6Tm90aWZpY2F0
aW9uSWNvbldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uSWNvbldyYXBw
ZXI6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpt
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjppY29u
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6
fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkljb25XcmFwcGVyOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3BsYXlOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNhbmNlbCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZp
Y2F0aW9uRm9yV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6cmVtb3ZlUmVwbGFjZWROb3RpZmljYXRpb25Gcm9tUXVldWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRldGFjaE5vdGlmaWNh
dGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1QbHVnaW46OmNyZWF0ZU5vdGlmaWNhdGlvblBy
ZXNlbnRlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oOgor
ICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblByZXNlbnRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lkZ2V0OjpXZWJOb3RpZmlj
YXRpb25XaWRnZXQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lkZ2V0Ojp+V2ViTm90aWZp
Y2F0aW9uV2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbldpZGdldDo6c2hvd05vdGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25XaWRnZXQ6OmV2ZW50KToKKyAgICAg
ICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OldlYk5vdGlmaWNhdGlv
blByZXNlbnRlcik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6On5XZWJOb3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpz
aG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQ
bHVnaW4uY3BwOgorICAgICAgICAoV2ViUGx1Z2luOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAg
ICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJQ
bHVnaW46OmNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogZXhhbXBsZXMv
cGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOgorICAgICAgICAqIGV4YW1wbGVzL3Bs
YXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAgICAgICAoUVdlYk5vdGlm
aWNhdGlvblByZXNlbnRlcjo6UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChR
V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjp+UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcik6Cisg
ICAgICAgIChRV2ViS2l0UGxhdGZvcm1QbHVnaW46Oik6CisKKzIwMTAtMDYtMTQgIE1haGVzaCBL
dWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIG5hdmlnYXRvci5nZW9sb2NhdGlvbiBz
dXBwb3J0IGZvciBRdCBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTcyNAorCisgICAgICAgIEltcGxlbWVudCBDaHJvbWVDbGllbnRRdDo6cmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKCkgd2hpY2ggZGVsZWdhdGVzIGNhbGwg
dG8gUVdlYlBhZ2U6OmFsbG93R2VvbG9jYXRpb25SZXF1ZXN0CisgICAgICAgIExheW91dCBhbmQg
dW5pdCB0ZXN0IGNhc2VzIGZvciB0aGUgYXJlIGFsc28gYWRkZWQuIAorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjphbGxvd0dlb2xvY2F0aW9uUmVxdWVz
dCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJl
cXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoSlNUZXN0UGFnZTo6c2hvdWxk
SW50ZXJydXB0SmF2YVNjcmlwdCk6CisgICAgICAgIChKU1Rlc3RQYWdlOjphbGxvd0dlb2xvY2F0
aW9uUmVxdWVzdCk6CisgICAgICAgIChKU1Rlc3RQYWdlOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Np
b24pOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpnZW9sb2NhdGlvblJlcXVlc3RKUyk6CisKKzIw
MTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBP
biB0aGUgd2F5IHRvIFJlbW90ZSBEZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20vdGlt
ZWxpbmUvZXRjCisgICAgICAgIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0
b3IgYXMgSlNPTiBzdHJpbmcgdmlhIGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAgc2VyaWFsaXph
dGlvbiB0byBKU09OIHN0cmluZyBpcyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBjbGFz
c2VzLiBUaGlzIHBhdGNoCisgICAgICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kIGZ1bmN0aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAorICAg
ICAgICB1c2VzIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90
aGVyIHRyYW5zcG9ydCBhIGxpdHRsZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6Okluc3BlY3RvckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50UXQ6OnJlbGVhc2VGcm9udGVuZFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50UXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKworMjAxMC0wNi0xMyAgQ2hhcmxlcyBXZWkg
IDxjaGFybGVzLndlaUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgRml4IHRoZSBRdFdlYktpdCB3aGljaCBkb2Vzbid0
IHJlY29nbml6ZSB0aGUgTUlNRSB0eXBlIG9mIEhUTUwvVEVYVCBpbiB1cHBlcmNhc2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDkyCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhblNob3dNSU1FVHlwZSk6CisKKzIwMTAtMDYt
MDggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIGNhbGxTaG91
bGRDbG9zZU9uV2ViVmlldygpIHRvIERSVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMzAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpzaG91bGRDbG9zZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuaDoKKworMjAxMC0wNi0xMiAgRGF3aXQgQWxlbWF5ZWh1ICA8YWRhd2l0QGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgQWRkZWQgYW4gYXR0cmlidXRlIHRvIGVuYWJsZS9kaXNhYmxlIHNpdGUgc3BlY2lm
aWMgcXVpcmtzIG1vZGUgaW4gV2ViS2l0LiAKKyAgICAgICAgVGhlIGF0dHJpYnV0ZSBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMDczCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAg
ICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
UVdlYlNldHRpbmdzKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMTAtMDYt
MTIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRml4IHRzdF9x
d2ViZnJhbWUgcmVncmVzc2lvbiBmcm9tIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzYxMDYyCisKKyAgICAgICAgT25seSB1c2UgY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QoKSBp
ZiB0aGUgb2JqZWN0IGhhcyBRdE93bmVyc2hpcC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1MjcKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOgor
CisyMDEwLTA2LTEzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEZyYW1lTG9hZGVy
OjpjbGVhcigpIGNsZWFycyBKUyBvYmplY3RzIHRoYXQgY2FjaGVkIHBhZ2VzIGxhdGVyIHJlbHkg
b24KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
MjUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjI2
CisKKyAgICAgICAgRml4IHRoZSBmb2xsb3dpbmcgdGVzdHMgZm9yIFF0OgorCisgICAgICAgIGZh
c3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwKKyAgICAgICAg
ZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMu
aHRtbAorICAgICAgICBmYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2gu
aHRtbAorICAgICAgICBmYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24t
YmFjay5odG1sCisgICAgICAgIGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5kb3ctc2l6
ZS5odG1sCisgICAgICAgIGZhc3QvZG9tL2phdmFzY3JpcHQtdXJsLWNyYXNoLWZ1bmN0aW9uLmh0
bWwKKyAgICAgICAgZmFzdC9kb20vbG9jYXRpb24tbmV3LXdpbmRvdy1uby1jcmFzaC5odG1sCisg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC94c3MtQUxMT1dFRC1mcm9t
LWphdmFzY3JpcHQtdXJsLXdpbmRvdy1vcGVuLmh0bWwKKworICAgICAgICB3aGljaCBjdXJyZW50
bHkgZmFpbCBiZWNhdXNlIHRoZSBwYWdlJ3MgUXQtYmluZGluZ3MgcnVudGltZSBvYmplY3RzIGFy
ZQorICAgICAgICBjbGVhcmVkIHdoZW4gbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIHBhZ2UgY29u
dGFpbmluZyB0aGVtLgorCisgICAgICAgIFRyYWNrIFF0LWJpbmRpbmdzIG9iamVjdHMgaW4gYSBz
ZXBhcmF0ZSBTY3JpcHRDb250cm9sbGVyOjpjYWNoZWFibGVSb290QmluZGluZ09iamVjdCgpLgor
ICAgICAgICBSdW50aW1lT2JqZWN0cyB0cmFja2VkIGJ5IHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBu
b3QgZ2V0IGludmFsaWRhdGVkIG9uIHBhZ2UgbmF2aWdhdGlvbnMsCisgICAgICAgIHNvIHRoZXkg
d2lsbCBzdGlsbCBiZSBhdmFpbGFibGUgd2hlbiB0aGUgcGFnZXMgY29udGFpbmluZyB0aGVtIGFy
ZSByZXRyaWV2ZWQgZnJvbSB0aGUKKyAgICAgICAgYi9mIGNhY2hlLgorCisgICAgICAgIFRoaXMg
bWVhbnMgdGhlIFF0IGJpbmRpbmdzIG9iamVjdHMgd2lsbCBvbmx5IGdldCBjbGVhcmVkIG9uIEZy
YW1lOjpwYWdlRGVzdHJveWVkKCkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KToKKworMjAxMC0w
Ni0xMiAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtR
dF0gQWRkIGRvY3VtZW50YXRpb24gdG8gdGhlIFF0V2Via2l0IGJyaWRnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4NjEKKworICAgICAgICBUaGUg
cHJldmlvdXMgYWNjZXB0ZWQgcGF0Y2ggd2FzIGFjdHVhbGx5IGEgZmF1bHR5IG9uZTsgSXQgd2Fz
IGhhcmQgdG8gdHJhY2Ugc2luY2UgaXQncyBqdXN0IGEgZG9jdW1lbnRhdGlvbgorICAgICAgICBj
aGFuZ2UuIFRoZSBuZXcgcGF0Y2ggYW1lbmRzIHRoYXQsIHdpdGggdGhlIGNvcnJlY3Qgc25pcHBl
dHMgYW5kIGdyYW1tYXIgZml4ZXMuCisKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LWJyaWRnZS5x
ZG9jOgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBw
ZXRzLmNwcDoKKyAgICAgICAgKHdyYXBJbkZ1bmN0aW9uKToKKworMjAxMC0wNi0xMiAgUm9iZXJ0
IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBCYWNrLWZvcndhcmQgbGlzdCBk
dW1waW5nIGlzIGluY29ycmVjdAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjM5MgorCisgICAgICAgIFN1cHBvcnQgZHVtcGluZyBjaGlsZCBoaXN0
b3J5IGl0ZW1zIGluIERSVC4KKworICAgICAgICBVbnNraXA6CisKKyAgICAgICAgZmFzdC9sb2Fk
ZXIvZnJhbWUtc3JjLWNoYW5nZS1hZGRlZC10by1oaXN0b3J5Lmh0bWwKKyAgICAgICAgZmFzdC9s
b2FkZXIvZnJhbWUtc3JjLWNoYW5nZS1ub3QtYWRkZWQtdG8taGlzdG9yeS5odG1sCisgICAgICAg
IGZhc3QvbG9hZGVyL2ZyYW1lLWxvY2F0aW9uLWNoYW5nZS1ub3QtYWRkZWQtdG8taGlzdG9yeS5o
dG1sCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAoUVdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZTo6Y29yZSk6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5Lmg6CisgICAg
ICAgICogQXBpL3F3ZWJoaXN0b3J5X3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6aXNUYXJnZXRJdGVtKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpoaXN0
b3J5SXRlbVRhcmdldCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2V0Q2hp
bGRIaXN0b3J5SXRlbXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisKKzIwMTAtMDYtMTEgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1
c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgorCisgICAgICAgIFtRdF0gVHlwbyBlcnJvciBpbiBRV2ViUGx1Z2luRmFjdG9yeSBE
b2N1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDQ5MAorCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNwcDoKKworMjAx
MC0wNi0xMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IG5vYm9keSwgYnVpbGQgZml4LgorCisgICAgICAgIFtRdF0g
U2Vjb25kIGZpeCBhdHRlbXB0IGZvciB0aGUgYnVpbGQgYnJlYWsgaW50cm9kdWNlZCBieSByNjEw
MDIuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDEwLTA2LTExICBKb2NlbHluIFR1cmNvdHRlICA8
am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgbm9ib2R5
LCBidWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBGaXggYnVpbGQgYnJlYWsgaW50cm9kdWNlZCBi
eSByNjEwMDIuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDEwLTA1LTMxICBKb2NlbHluIFR1cmNv
dHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGhlIHNpbXBsZSB0ZXh0
IGNvZGUgcGF0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMDc3CisKKyAgICAgICAgUmVtb3ZlIHRoZSBGT05UX0ZBU1RfUEFUSCBtYWNybyBhbmQg
dXNlIHRoZSBRdCdzCisgICAgICAgIGZhc3QgdGV4dCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9m
IHRoZSBvbmUgb2YgV2ViS2l0LgorCisgICAgICAgIFRoZSBRdDo6VGV4dEJ5cGFzc1NoYXBpbmcg
ZmxhZyBpcyB1c2VkIHRvIHRlbGwgUXQgdG8KKyAgICAgICAgb25seSB1c2UgdGhlIGdseXBoIGFk
dmFuY2VzLgorCisgICAgICAgIFF0IDQuNyBpcyBuZWVkZWQgdG8gZ2V0IHRoaXMgZmxhZyB0aHVz
IHRoZSBjb21wbGV4IHBhdGggaXMgYWx3YXlzCisgICAgICAgIHVzZWQgaWYgUXRXZWJLaXQgaXMg
Y29tcGlsZWQgYWdhaW5zdCBhbiBlYXJsaWVyIHZlcnNpb24uCisKKyAgICAgICAgQ29udHJhcnkg
dG8gdGhlIFdlYktpdCdzIGltcGxlbWVudGF0aW9uLCB0aGUgY29tcGxleCBjb2RlIHBhdGgKKyAg
ICAgICAgaXMgdGFrZW4gaWYgdGhlIHRleHQgaXMgUmlnaHRUb0xlZnQsIGp1c3RpZmllZCBvciBp
cyBmb3JtYXR0ZWQKKyAgICAgICAgd2l0aCBub24temVybyBsZXR0ZXIgb3Igd29yZCBzcGFjaW5n
LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6UVdlYlBhZ2VQcml2YXRlKToKKworMjAxMC0wNi0xMCAgWWFlbCBBaGFyb24gIDx5YWVsLmFo
YXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGZvciBsb2FkaW5nIG5vdGlmaWNhdGlv
biBpY29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAwMDQKKworICAgICAgICBUYWtlIGludG8gdXNlIHRoZSBpY29uIHRoYXQgd2FzIGxvYWRlZCBm
b3IgdGhlIG5vdGlmaWNhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OjpzaG93KToKKworMjAxMC0wNi0xMCAgTWFoZXNoIEt1bGthcm5p
ICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KKworICAgICAgICBbUXRdIE1lbW9yeSBsZWFrIGluIHF3ZWJwYWdlIHVuaXQg
dGVzdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDA0MDUKKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OmluZmluaXRlTG9vcEpTKToKKworMjAxMC0wNi0xMCAgUmFp
bmUgTWFrZWxhaW5lbiAgPHJhaW5lLm1ha2VsYWluZW5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEltcG9zc2li
bGUgdG8gc2V0IGlucHV0IG1ldGhvZCBoaW50cyBiYXNlZCBIVE1MNSBpbnB1dCB0eXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMDcKKworICAg
ICAgICBFZGl0b3JDbGllbnRRdCB0byBzZXQgaW5wdXQgbWV0aG9kIGhpbnRzIGZvciAibnVtYmVy
IiwgInRlbCIsCisgICAgICAgICJlbWFpbCIsIGFuZCAidXJsIiBIVE1MIGlucHV0IGVsZW1lbnRz
LgorCisgICAgICAgIFRlc3RzIGZvciBIVE1MIGlucHV0IGVsZW1lbnRzIGFuZCBpbnB1dCBtZXRo
b2QgaGludHMgYWRkZWQgZm9yCisgICAgICAgIFFHcmFwaGljc1dlYlZpZXcgYW5kIFFXZWJWaWV3
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAg
ICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvcmVzb3VyY2VzL2lucHV0X3R5cGVzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZp
ZXcuY3BwOgorICAgICAgICAoR3JhcGhpY3NXZWJWaWV3OjpHcmFwaGljc1dlYlZpZXcpOgorICAg
ICAgICAoR3JhcGhpY3NXZWJWaWV3OjpmaXJlTW91c2VDbGljayk6CisgICAgICAgICh0c3RfUUdy
YXBoaWNzV2ViVmlldzo6Zm9jdXNJbnB1dFR5cGVzKToKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhp
Y3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LnFyYzogQWRkZWQuCisgICAgICAgICogdGVz
dHMvcXdlYnZpZXcvcmVzb3VyY2VzL2lucHV0X3R5cGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpmaXJl
TW91c2VDbGljayk6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OmZvY3VzSW5wdXRUeXBlcyk6Cisg
ICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3LnFyYzoKKworMjAxMC0wNi0xMCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KKworICAgICAgICBSZWR1Y2UgRnJhbWVWaWV3LmggaW5jbHVkZXMgdG8gc3BlZWQg
dXAgYnVpbGQgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNDA4CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgIC0g
SW5jbHVkZSBSZW5kZXJMYXllci5oIHNpbmNlIGl0J3MgdXNlZCBpbiB0aGlzIGZpbGUuCisKKzIw
MTAtMDYtMTAgIEFuZHkgU2hhdyAgPGFuZHkuc2hhd0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUkVHUkVTU0lPTjogW1F0XSBXaGVu
IGRyYWdnaW5nIG9udG8gYSBwYWdlIHRoYXQgaGFuZGxlcyB0aGUgZHJhZyBpbiBKYXZhc2NyaXB0
IGl0IHdpbGwgYmUgYSBtb3ZlIGFuZCBub3QgYSBjb3B5IGJ5IGRlZmF1bHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNDAxCisKKyAgICAgICAgVGhl
IGNvcnJlY3QgcGF0dGVybiBpbiBRdCBmb3IgRG5kIGV2ZW50cyBpcyB0byB1c2UgYWNjZXB0UHJv
cG9zZWRBY3Rpb24oKSBpbnN0ZWFkCisgICAgICAgIG9mIGFjY2VwdCgpLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ0VudGVyRXZl
bnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnTW92ZUV2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6ZHJvcEV2ZW50KToKKworMjAxMC0wNi0wOSAgUGllcnJlIFJvc3Np
ICA8cGllcnJlLnJvc3NpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBRV2ViUGFnZTo6ZmluZFRleHQoKSBkb2Vz
IG5vdCBjbGVhciBzZWxlY3Rpb24gd2hlbiBwYXNzZWQgZW1wdHkgc3RyaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTc3OQorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpmaW5kVGV4dCk6CisgICAgICAg
ICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFn
ZTo6ZmluZFRleHQpOgorCisyMDEwLTA2LTA5ICBBbmRlcnMgQmFra2VuICA8YWdiYWtrZW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgorCisgICAgICAgIFtR
dF0gUGFnZUNsaWVudFF0LmggaGFzIGNvZGluZy1zdHlsZSBlcnJvcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjU3CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKworMjAxMC0wNi0wOSAgQW5kZXJzIEJha2tlbiAg
PGFnYmFra2VuQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4K
KworICAgICAgICBbUXRdIEluc3BlY3RvckNsaWVudFF0LmNwcCBoYXMgY29kaW5nLXN0eWxlIGVy
cm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAy
NTUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKwor
MjAxMC0wNi0wOSAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KKworICAgICAgICBbUXRdIEZyYW1lTG9hZGVyQ2xp
ZW50UXQuaCBoYXMgY29kaW5nLXN0eWxlIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyNTEKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudCk6CisKKzIwMTAtMDYtMDkgIEFuZGVy
cyBCYWtrZW4gIDxhZ2Jha2tlbkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBFZGl0b3JDbGllbnRRdC5o
IGhhcyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MDI0OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaDoKKworMjAxMC0wNi0wOSAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KKworICAgICAgICBbUXRd
IEVkaXRDb21tYW5kUXQuY3BwL2ggaGF2ZSBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI0OAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5jcHA6CisgICAgICAgIChFZGl0Q29tbWFuZFF0
OjpFZGl0Q29tbWFuZFF0KToKKyAgICAgICAgKEVkaXRDb21tYW5kUXQ6On5FZGl0Q29tbWFuZFF0
KToKKyAgICAgICAgKEVkaXRDb21tYW5kUXQ6OnJlZG8pOgorICAgICAgICAoRWRpdENvbW1hbmRR
dDo6dW5kbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5oOgorCisy
MDEwLTA2LTA5ICBBbmRlcnMgQmFra2VuICA8YWdiYWtrZW5AZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIExldmluLgorCisgICAgICAgIFtRdF0gRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwIGhhcyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI0NworCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKworMjAxMC0wNi0wOSAg
QW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBMZXZpbi4KKworICAgICAgICBbUXRdIERyYWdDbGllbnRRdC5jcHAgaGFzIGNvZGlu
Zy1zdHlsZSBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMjQ2CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgorCisyMDEwLTA2
LTA5ICBBbmRlcnMgQmFra2VuICA8YWdiYWtrZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBDb250ZXh0TWVudUNsaWVudFF0
LmggaGFzIGNvZGluZy1zdHlsZSBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwMjQyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudFF0Lmg6CisKKzIwMTAtMDYtMDkgIEFuZGVycyBCYWtrZW4gIDxhZ2Jha2tl
bkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCisKKyAgICAg
ICAgW1F0XSBDaHJvbWVDbGllbnRRdC5jcHAgaGFzIGNvZGluZy1zdHlsZSBlcnJvcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjQwCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6cGFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpy
dW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
cHJpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmF0dGFjaFJvb3RHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp2aXNpYmxlUmVj
dEZvclRpbGVkQmFja2luZ1N0b3JlKToKKworMjAxMC0wNi0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjYwODg5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82MDg4
OQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNjUK
KworICAgICAgICBndGsgYm90IGhhcyBzb21lIGtpbmQgb2YgbWVtb3J5IGNvcnJ1cHRpb24gKFJl
cXVlc3RlZCBieQorICAgICAgICBsb2lzbG8gb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorCisyMDEw
LTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogT24g
dGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJhbnNmZXIgZG9tL3RpbWVs
aW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVjdG9y
IGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAgICAgIHNlcmlhbGl6YXRp
b24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xhc3Nl
cy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAgICAg
ICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5vdGhl
ciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpJbnNwZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKKzIwMTAtMDYtMDggIEFudG9uaW8gR29tZXMg
IDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFp
IGFuZCBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWZhY3RvciBwbGF0Zm9ybSBkZXBlbmRlbnQg
ZWRpdGluZyBiZWhhdmlvciBjb2RlIG91dCBvZiBTZXR0aW5ncworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NTQKKworICAgICAgICBFZGl0aW5nQmVo
YXZpb3IgZW51bSB3YXMgcmVuYW1lZCB0byBFZGl0aW5nQmVoYXZpb3JUeXBlcyBhbmQgbW92ZWQg
b3V0IGZyb20gU2V0dGluZ3MuaCB0bworICAgICAgICBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIC4g
Q2FsbCBzaXRlcyBpbiBXZWJLaXQvIGFkanVzdGVkIGFjY29yZGluZ2x5LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEVkaXRpbmdCZWhhdmlvcik6CisKKzIwMTAtMDYtMDcg
IEFuZGVycyBCYWtrZW4gIDxhZ2Jha2tlbkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgTGV2aW4uCisKKyAgICAgICAgW1F0XSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdC5jcHAgaGFzIGNvZGluZy1zdHlsZSBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjU2CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hvdyk6CisKKzIwMTAtMDYtMDYgIEFudG9u
aW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4sIExhc3psbyBHb21ib3MgIDxsYXN6bG8u
MS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggQ2hyaXN0
aWFuc2VuLCBFcmljIFNlaWRlbC4KKworICAgICAgICBbUXRdIEV4cG9zZSB0aGUgZWRpdGluZyBi
ZWhhdmlvciBzZXR0aW5nIGluIERSVCB0byB0ZXN0IGFsbCBlZGl0aW5nIGNvZGUgcGF0aHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NjgwCisKKyAg
ICAgICAgTWFrZSBzZXRFZGl0aW5nQmVoYXZpb3IoKSBhIG5vLW9wZXJhdGlvbiBpZiB0aGUgZWRp
dGluZ0JlaGF2aW9yCisgICAgICAgIGFyZ3VtZW50IGlzIG5vdCByZWNvZ25pemVkIHRvIGF2b2lk
IHVzaW5nIGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0RWRpdGluZ0JlaGF2aW9yKToKKworMjAxMC0wNi0wNCAgTGFzemxvIEdv
bWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgU3ltYmlhbiBidWls
ZCBmaXguCisKKyAgICAgICAgW1F0XSBVcGRhdGVkIHRoZSBkZWYgZmlsZSB3aXRoIHJlY2VudCBu
ZXcgZXhwb3J0cy4KKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisy
MDEwLTA2LTAzICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFtRdF0gRG9uJ3Qgc2VuZCBu
b3RpZmljYXRpb25zIGV2ZW50IGFmdGVyIHRoZSBwYWdlIHdhcyBuYXZpZ2F0ZWQgYXdheQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMjcKKworICAg
ICAgICBBZGRlZCBhIGNoZWNrIGJlZm9yZSBzZW5kaW5nIGV2ZW50cyB0byB0aGUgbm90aWZpY2F0
aW9uIGFuZCBiZWZvcmUgbG9nZ2luZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnNlbmRFdmVudCk6CisKKzIwMTAtMDYtMDIgIFRhc3Vr
dSBTdXp1a2kgIDx0YXN1a3Uuc3V6dWtpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaGluaWNoaXJvIEhhbWFqaS4KKworICAgICAgICBbUXRdIEZpeCBjb21waWxhdGlvbiB3aXRo
IFFUX05PX1BST1BFUlRJRVMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MzI0CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2U6OmV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorCisyMDEwLTA2LTAy
ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gU2hhcmVkIHBsYXRm
b3JtIHBsdWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk5NjgKKworICAgICAgICBBbGxvdyBzZXZlcmFsIGluc3RhbmNlcyBvZiBjbGFzcyBRdFBs
YXRmb3JtUGx1Z2luIHRvIHNoYXJlIHRoZSBRV2ViS2l0UGxhdGZvcm1QbHVnaW4KKyAgICAgICAg
b2JqZWN0IHByb3ZpZGVkIGJ5IGEgcGx1Z2luLgorCisgICAgICAgIFVwZGF0ZWQgcGx1Z2luIGlu
dGVyZmFjZSB2ZXJzaW9uIG51bWJlciBkdWUgdG8gQUJJIGJyZWFraW5nIGNoYW5nZS4KKworICAg
ICAgICAqIEFwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKFFXZWJLaXRQbGF0
Zm9ybVBsdWdpbjo6flFXZWJLaXRQbGF0Zm9ybVBsdWdpbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3Jt
UGx1Z2luOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1QbHVnaW46On5RdFBs
YXRmb3JtUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1QbHVnaW46OnBsdWdp
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oOgorICAgICAg
ICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAg
ICAgICAoUVdlYktpdFBsYXRmb3JtUGx1Z2luOjp+UVdlYktpdFBsYXRmb3JtUGx1Z2luKToKKwor
MjAxMC0wNi0wMiAgUmFpbmUgTWFrZWxhaW5lbiAgPHJhaW5lLm1ha2VsYWluZW5Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFtRdF0gT24gTWFlbW82IHBsYXRmb3JtIGF1dG8gdXBwZXIgY2FzZSBhbmQgcHJlZGlj
dGl2ZSB0ZXh0IGlucHV0IG1ldGhvZCBoaW50cyBhcmUgbm90IGRpc2FibGVkIGZvciBwYXNzd29y
ZCBmaWVsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQwMDYyCisgICAgICAgCisgICAgICAgIEludHJvZHVjaW5nIFFfV1NfTUFFTU9fNiBmb3IgTWFl
bW82IHNwZWNpZmljIGNvZGUuIEVuYWJsaW5nIGNvZGUgdGhhdCBzZXRzIGlucHV0IAorICAgICAg
ICBtZXRob2QgaGludHMgUXQ6OkltaE5vQXV0b1VwcGVyY2FzZSBhbmQgUXQ6OkltaE5vUHJlZGlj
dGl2ZVRleHQgdHJ1ZSBmb3IgTWFlbW82LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNldElu
cHV0TWV0aG9kU3RhdGUpOgorCisyMDEwLTA2LTAxICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9u
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KKworICAgICAgICBbUXRdIEZpeCB0aGUgbGlmZWN5Y2xlIG9mIG5vdGlmaWNhdGlvbiBv
YmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDAwMworCisgICAgICAgIE5vdGlmaWNhdGlvbiBvYmplY3RzIGFyZSBub3QgdGlnaHRseSByZWxh
dGVkIHRvIHRoZSBwYWdlIHRoYXQgY3JlYXRlZCB0aGVtLAorICAgICAgICBhbmQgc2hvdWxkIGJl
IGRlY291cGxlZCBmcm9tIHRoZSBwYWdlLgorICAgICAgICBDcmVhdGUgb25lIE5vdGlmaWNhdGlv
blByZXNlbnRlciB0aGF0IGhhbmRsZXMgYWxsIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIEFkZCBy
ZWYvZGVyZWYgdG8gdGhlIG5vdGlmaWNhdGlvbiBvYmplY3RzIHdoZW4gdGhleSBhcmUgYWRkZWQv
cmVtb3ZlZCBmcm9tCisgICAgICAgIHRoZSBxdWV1ZSBvZiBhY3RpdmUgbm90aWZpY2F0aW9ucy4g
VGhlIHNhbWUgdGVjaG5pcXVlIGlzIHVzZWQgZm9yIFhNTEh0dHBSZXF1ZXN0LgorICAgICAgICBJ
bnN0ZWFkIG9mIGRlbGV0aW5nIGFsbCBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHBh
Z2Ugd2hlbiB0aGUgcGFnZSBpcyBuYXZpZ2F0ZWQsCisgICAgICAgIGRlbGV0ZSB0aGVtIG9uIGEg
dGltZXIsIHVzaW5nIHRoZSBzYW1lIHRpbWVvdXQgdGhhdCBRU3lzdGVtVHJheUljb24gaXMgdXNp
bmcuCisgICAgICAgIEJyZWFrIHVwIHRoZSBzaG93KCkgbWV0aG9kIGludG8gc21hbGxlciBtZXRo
b2RzLgorICAgICAgICBVc2UgT3duUHRyIGluc3RlYWQgb2YgcmF3IHBvaW50ZXIgZm9yIFFTeXN0
ZW1UcmF5SWNvbi4KKyAgICAgICAgTW92ZSBjcmVhdGluZyB0aGUgUUljb24gdG8ganVzdCBiZWZv
cmUgc2hvd2luZyBpdCBpbiB0aGUgUVN5ZXRlbVRyYXlJY29uLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBhcyB0aGlzIGlzIGp1c3QgYSByZWZhY3RvcmluZy4gRXhpc3Rpbmcgbm90aWZpY2F0aW9u
cyB0ZXN0IGNvdmVyIHRoZSBjb2RlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3Au
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Tm90aWZpY2F0aW9uc1JlY2VpdmVyKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjphbGxvd05vdGlmaWNhdGlvbkZvck9yaWdp
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkljb25XcmFwcGVyOjpOb3RpZmljYXRpb25JY29uV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6fk5vdGlmaWNhdGlvbkljb25XcmFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpjbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQ6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlmaWNhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Y2FuY2VsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25P
YmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpzZW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlbW92ZVJlcGxhY2VkTm90aWZpY2F0aW9uRnJv
bVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
OjpkdW1wUmVwbGFjZWRJZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6OmR1bXBTaG93VGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0OjphZGRDbGllbnQpOgorCisyMDEwLTA2LTAxICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEFkZCBkb2N1
bWVudGF0aW9uIHRvIHRoZSBRdFdlYmtpdCBicmlkZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODYxCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbmNs
dWRlcyBjb21wcmVoZW5zaXZlIHFkb2MgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFF0V2Via2l0IGJy
aWRnZS4KKworICAgICAgICAqIGRvY3MvcXR3ZWJraXQtYnJpZGdlLnFkb2M6IEFkZGVkLgorICAg
ICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRz
L2RvY19zcmNfcXRzY3JpcHQucWRvYzogQWRkZWQuCisgICAgICAgICogZG9jcy93ZWJraXRzbmlw
cGV0cy9xdHdlYmtpdF9icmlkZ2Vfc25pcHBldHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdyYXBJ
bkZ1bmN0aW9uKToKKworMjAxMC0wNi0wMSAgUmFpbmUgTWFrZWxhaW5lbiAgPHJhaW5lLm1ha2Vs
YWluZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIFtRdF06IFJFR1JFU1NJT04ocjU4NzAzKTogUVdlYlNldHRpbmdzOjpKYXZhc2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIGhhcyB3cm9uZyBjYXNlIGluICJKYXZhc2NyaXB0IiBwYXJ0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4Nzgg
ICAgICAgIAorCisgICAgICAgIFFXZWJTZXR0aW5nczo6SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZCByZXZlcnRlZCBiYWNrIHRvCisgICAgICAgIFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdENh
bkFjY2Vzc0NsaXBib2FyZC4gUVdlYlNldHRpbmdzOjpET01QYXN0ZUFsbG93ZWQgZW51bSByZW1v
dmVkLgorCisgICAgICAgIFZhbHVlIG9mIFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCB0byBzZXRET01QYXN0ZUFsbG93ZWQgYW5kIAorICAgICAgICBzZXRKYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIG9mIFdlYkNvcmU6OlNldHRpbmdzLgorCisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBs
eSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDEwLTA2LTAxICBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFtRdF0gUmVuYW1lIHZlcnNpb25pbmcgLnByaSBm
aWxlIHRvIHdoYXQgUXQncyBta3NwZWNzL2ZlYXR1cmVzL3F0LnByaSBleHBlY3RzLgorCisgICAg
ICAgICogcXRfd2Via2l0X3ZlcnNpb24ucHJpOiBSZW5hbWVkIGZyb20gV2ViS2l0L3F0L3F0d2Vi
a2l0X3ZlcnNpb24ucHJpLgorCisyMDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAgICAgICAgRW51bSB2
YWx1ZSBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlQgYXJlIGNhdXNpbmcgbWFjcm8gY29u
ZmxpY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzU1MzAKKworICAgICAgICBDaGFuZ2UgZW51bSBFQWx0ZXJhdGlvbiBmcm9tIHsgTU9WRSwgRVhU
RU5EIH0gdG8geyBBbHRlcmF0aW9uTW92ZSwgQWx0ZXJhdGlvbkV4dGVuZCB9IGFuZCBlbnVtIEVE
aXJlY3Rpb24geyBGT1JXQVJELCBCQUNLV0FSRCwgUklHSFQsIExFRlR9IHRvIHsgRGlyZWN0aW9u
Rm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVjdGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0
IH0gdG8gYXZvaWQgbWFjcm8gY29uZmxpY3QsIGFuZCBhbHNvIGJldHRlciBjb2Rpbmcgc3R5bGUg
Y29uZm9ybWFuY2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dCk6CisKKzIwMTAtMDUtMzEgIE9zd2FsZCBCdWRkZW5oYWdlbiAgPG9zd2FsZC5idWRkZW5oYWdl
bkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgW1F0XSBFc2NhcGUgYmFja3NsYXNoZXMgaW4gdGhlIC5wcm8gZmlsZXMKKworICAgICAg
ICBxbWFrZSBpbiBRdCA0Ljcgd2FybnMgYWJvdXQgdW5lc2NhcGVkIGJhY2tzcGFjZXMgYW5kIGRl
cHJlY2F0ZXMgdGhlbS4KKworICAgICAgICAqIEFwaS9EZXJpdmVkU291cmNlcy5wcm86CisgICAg
ICAgICogZG9jcy9kb2NzLnByaToKKworMjAxMC0wNS0zMCAgTHlvbiBDaGVuICA8bGlhY2hlbkBy
aW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIFRo
aXMgaXMgYSBjb2Rpbmcgc3R5bGUgY2xlYW51cCBiZWZvcmUgZml4aW5nIHRvIGJ1ZyAzNTUzMC4K
KworICAgICAgICBFbnVtIHZhbHVlIEZPUldBUkQsIEJBQ0tXQVJELCBSSUdIVCwgTEVGVCBhcmUg
Y2F1c2luZyBtYWNybyBjb25mbGljdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTUzMAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVy
Q29tbWFuZEZvclVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQpOgorCisyMDEwLTA1LTI5ICBEYXdpdCBBbGVtYXllaHUgIDxhZGF3aXRA
a2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBBZGRlZCBhIFdlYkFjdGlvbiB0byBzdG9wIGFsbCBwZW5kaW5nIHBhZ2Ug
cmVmcmVzaC9yZWRpcmVjdAorICAgICAgICByZXF1ZXN0cyBzZXQgdGhyb3VnaCB0aGUgPG1ldGEg
aHR0cC1lcXVpdj0icmVmcmVzaCIuLi4+IHRhZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4OTkKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6dGVzdFN0b3BTY2hlZHVsZWRQYWdlUmVmcmVzaCk6CisKKzIw
MTAtMDUtMjggIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorICAgIAorICAgICAgICBBZGQg
YSBtaXNzaW5nICNpZiBFTkFCTEUoKSwgc29tZSBudWxsIGNoZWNraW5nLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHluYW1pY1Byb3Bl
cnR5Q2hhbmdlRXZlbnQpOgorCisyMDEwLTA1LTI4ICBBbnR0aSBLb2l2aXN0byAgPGtvaXZpc3Rv
QGlraS5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4
NzQKKyAgICAgICAgW1F0XSBNYWtlIHRpbGVkIGJhY2tpbmcgc3RvcmUgbW9yZSBjb25maWd1cmFi
bGUKKyAgICAKKyAgICAgICAgTWFrZSB0aWxlIHNpemUsIHRpbGUgY3JlYXRpb24gZGVsYXkgYW5k
IHRpbGluZyBhcmVhIGR5bmFtaWNhbGx5IGNvbmZpZ3VyYWJsZS4KKworICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNo
YW5nZUV2ZW50KToKKworMjAxMC0wNS0yOCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tp
YS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjYwMzQ4LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE5vdGlmaWNhdGlvbnNSZWNlaXZlcik6
CisKKzIwMTAtMDUtMjggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBQYXNzIGFs
bCB3ZWIgbm90aWZpY2F0aW9uIGxheW91dCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkxNDYKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
bXVsdGlwbGUgc2ltdWx0YW5lb3VzIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIEFkZCBhIHByaXZh
dGUgY2FsbGJhY2sgbWVjaGFuaXNtIHRvIHRoZSBjbGllbnQgZm9yIHNlY3VyaXR5IGNoZWNrcy4g
CisgICAgICAgIE5vdGlmaWNhdGlvbnMgYXJlIGRpc2FibGVkIGlmIHRoZSBjbGllbnQgZG9lcyBu
b3Qgc2V0IHRoZSBjYWxsYmFja3MuIAorICAgICAgICBTdXBwb3J0IHJlcGxhY2VJZCBhbmQgY2Fu
Y2VsLgorICAgICAgICBTZW5kIGNsb3NlIGFuZCBkaXNwbGF5IGV2ZW50cyB3aGVuIG5lZWRlZC4g
ICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNl
dE5vdGlmaWNhdGlvbnNSZWNlaXZlcik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6YWxsb3dOb3RpZmljYXRpb25Gb3JPcmlnaW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNldENoZWNrUGVybWlzc2lvbkZ1bmN0aW9uKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZXRSZXF1ZXN0UGVybWlzc2lvbkZ1bmN0aW9uKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpOb3RpZmljYXRpb25JY29u
V3JhcHBlcik6CisgICAgICAgIChOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6fk5vdGlmaWNhdGlv
bkljb25XcmFwcGVyKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdDo6c2hvdyk6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6Y2FuY2VsKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpu
b3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAoTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQ6OmFsbG93Tm90aWZpY2F0aW9uRm9yT3JpZ2luKToKKyAgICAgICAg
KE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjbGVhck5vdGlmaWNhdGlvbnNMaXN0KToK
KyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzZW5kRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6fk5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpzZXRSZWNlaXZlcik6CisKKzIwMTAtMDUtMjcgIEx1aXogQWdvc3Rp
bmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBQbGF0Zm9ybSBwbHVn
aW4gZXhhbXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk0ODkKKworICAgICAgICBBZGRpbmcgYSBRdCBwbGF0Zm9ybSBwbHVnaW4gZXhhbXBsZSB0
byByZXBvc2l0b3J5LgorCisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vUkVBRE1F
OiBBZGRlZC4KKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFBvcHVwOjpwb3B1bGF0ZUxpc3QpOgorICAgICAgICAoUG9wdXA6
Om9uSXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYlBvcHVwOjpXZWJQb3B1cCk6CisgICAgICAg
IChXZWJQb3B1cDo6fldlYlBvcHVwKToKKyAgICAgICAgKFdlYlBvcHVwOjpjcmVhdGVTaW5nbGVT
ZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgIChXZWJQb3B1cDo6Y3JlYXRlTXVsdGlwbGVTZWxlY3Rp
b25Qb3B1cCk6CisgICAgICAgIChXZWJQb3B1cDo6Y3JlYXRlUG9wdXApOgorICAgICAgICAoV2Vi
UG9wdXA6OnNob3cpOgorICAgICAgICAoV2ViUG9wdXA6OmhpZGUpOgorICAgICAgICAoV2ViUG9w
dXA6OnBvcHVwQ2xvc2VkKToKKyAgICAgICAgKFdlYlBvcHVwOjppdGVtQ2xpY2tlZCk6CisgICAg
ICAgIChTaW5nbGVTZWxlY3Rpb25Qb3B1cDo6U2luZ2xlU2VsZWN0aW9uUG9wdXApOgorICAgICAg
ICAoTXVsdGlwbGVJdGVtTGlzdERlbGVnYXRlOjpNdWx0aXBsZUl0ZW1MaXN0RGVsZWdhdGUpOgor
ICAgICAgICAoTXVsdGlwbGVJdGVtTGlzdERlbGVnYXRlOjpwYWludCk6CisgICAgICAgIChNdWx0
aXBsZVNlbGVjdGlvblBvcHVwOjpNdWx0aXBsZVNlbGVjdGlvblBvcHVwKToKKyAgICAgICAgKFdl
YlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3Jt
cGx1Z2luL1dlYlBsdWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKFBvcHVwOjpQb3B1cCk6CisgICAg
ICAgIChXZWJQbHVnaW46OmNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKToKKyAgICAgICAgKiBleGFt
cGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86IEFkZGVkLgorICAgICAgICAq
IGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOiBDb3BpZWQg
ZnJvbSBXZWJLaXQvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oLgorICAgICAgICAoUVdl
YlNlbGVjdERhdGE6On5RV2ViU2VsZWN0RGF0YSk6CisgICAgICAgIChRV2ViU2VsZWN0RGF0YTo6
KToKKyAgICAgICAgKFFXZWJTZWxlY3RNZXRob2Q6On5RV2ViU2VsZWN0TWV0aG9kKToKKyAgICAg
ICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6flFXZWJLaXRQbGF0Zm9ybVBsdWdpbik6CisgICAg
ICAgIChRV2ViS2l0UGxhdGZvcm1QbHVnaW46Oik6CisKKzIwMTAtMDUtMjUgIEFudG9uaW8gR29t
ZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZh
ZmFpLgorCisgICAgICAgIFtRdF0gRXhwb3NlIHRoZSBlZGl0aW5nIGJlaGF2aW9yIHNldHRpbmcg
aW4gRFJUIHRvIHRlc3QgYWxsIGVkaXRpbmcgY29kZSBwYXRocworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk2ODAKKworICAgICAgICBBZGQgc3VwcG9y
dCB0byBRdCdzIERSVCB0byBzZXR0aW5nIHRoZSBlZGl0aW5nIGJlaGF2aW9yLiBQYXRjaCBpcyBh
IGZvbGxvdyB1cCBvZgorICAgICAgICBidWcgMzg2MDMsIHdoaWNoIGp1c3Qgc3R1YmJlZCBvdXQg
dGhlIFF0IGJpdHMgb2YgaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHA6IEltcGxlbWVudGF0aW9uIG9mIGVkaXRpbmcgYmVoYXZpb3IgY29u
dHJvbC4KKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRFZGl0aW5nQmVoYXZp
b3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6
CisKKzIwMTAtMDUtMjQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBEUlQgU3VwcG9y
dCBmb3IgcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkKKworICAgICAgICBVbnNraXBz
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvb3JpZ2luLXdoaXRlbGlzdGluZy1yZW1vdmFsLmh0
bWwKKworICAgICAgICBbUXRdIERSVCBTdXBwb3J0IGZvciByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzk1NjUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVXaGl0ZUxp
c3RBY2Nlc3NGcm9tT3JpZ2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5oOgorCisyMDEwLTA1LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBNb3Zl
IHZpZXctcmVsYXRlZCBmdW5jdGlvbnMgZnJvbSBGcmFtZSB0byBGcmFtZVZpZXcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MzY2CisKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0
aXBsaWVyKTogQ2FsbCBmdW5jdGlvbnMgb24gRnJhbWVWaWV3LgorICAgICAgICAoUVdlYkZyYW1l
Ojp0ZXh0U2l6ZU11bHRpcGxpZXIpOiBEaXR0by4KKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0Wm9v
bUZhY3Rvcik6IERpdHRvLgorICAgICAgICAoUVdlYkZyYW1lOjp6b29tRmFjdG9yKTogRGl0dG8u
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250
ZW50RWRpdGFibGUpOiBSZW1vdmVkIGNhbGwgdG8gZW1wdHkgZnVuY3Rpb24sCisgICAgICAgIHJl
bW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudC4KKworMjAxMC0wNS0yMyAgTm9hbSBSb3Nl
bnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBHcmFwaGljc0xheWVy
OiBUaGUgcm9ja2V0IGFuaW1hdGlvbiBkb2Vzbid0IHNjcm9sbCB0b2dldGhlciB3aXRoIHRoZSBw
YWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTUx
NworCisgICAgICAgIEEgcHJldmlvdXMgZml4IHRvIHRoaXMgaXNzdWUgd2FzIG92ZXJyaWRkZW4g
YnkgdGhlIFBhZ2VDbGllbnRRdCByZWZhY3Rvci4gUmVhcHBseWluZy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xp
ZW50UUdyYXBoaWNzV2lkZ2V0Ojp1cGRhdGUpOgorCisyMDEwLTA1LTIzICBMYXN6bG8gR29tYm9z
ICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFVwZGF0ZSB0aGUgU3ltYmlh
biB2ZXJzaW9uIGZvciB0aGUgdXNlciBhZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgzODkKKworICAgICAgICBGaXhlcyBhIHJlZ3Jlc3Npb24g
aW50cm9kdWNlZCBieSByNTg2NDguIEVuc3VyZSB0aGF0IHRoZSAiU3ltYmlhbiIgc3RyaW5nCisg
ICAgICAgIGlzIG9ubHkgbGlzdGVkIG9uZSB0aW1lIGluIHRoZSBVc2VyIEFnZW50IHN0cmluZy4K
KworICAgICAgICBJbiBhZGRpdGlvbiBtYWtlIGFuIGVmZm9ydCB0byBhbGlnbiB0aGUgVXNlciBB
Z2VudCBzdHJpbmcgdG8gYWxyZWFkeQorICAgICAgICByZWxlYXNlZCBXZWJLaXQgYmFzZWQgcHJv
ZHVjdHMgZm9yIFN5bWJpYW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisKKzIwMTAtMDUtMjEgIFN0ZXZlIEJsb2Nr
ICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KKworICAgICAgICBBZGQgRGV2aWNlT3JpZW50YXRpb24gYW5kIERldmljZU9yaWVudGF0
aW9uQ2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTQ3OQorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKworMjAxMC0wNS0yMSAgU2ltb24gSGF1c21hbm4g
IDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgU3ltYmlhbiBidWlsZCBmaXgu
CisKKyAgICAgICAgW1F0XSBVcGRhdGVkIHRoZSB3aW5zIGRlZiBmaWxlIHdpdGggb25lIG5ldyBl
eHBvcnQuCisKKyAgICAgICAgVGhlIERSVCBzeW1ib2xzIGFyZSBzdGlsbCBtaXNzaW5nLCBidXQg
SSBjYW4ndCBidWlsZCBEUlQgOygKKworICAgICAgICAqIHN5bWJpYW4vYndpbnMvUXRXZWJLaXR1
LmRlZjoKKworMjAxMC0wNS0yMCAgSmFubmUgS29za2luZW4gIDxqYW5uZS5wLmtvc2tpbmVuQGRp
Z2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbUXRdIFdJTlNDVyBjb21waWxlIGZpeCBmb3IgcXdlYmZyYW1lIHRlc3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzIyCisK
KyAgICAgICAgV0lOU0NXIGNhbm5vdCBkZXRlcm1pbmUgdGVtcGxhdGUgdHlwZSB1cCB0aGUgaGll
cmFyY2h5CisgICAgICAgIHRvIGNvbW1vbiBiYXNlIGNsYXNzLgorCisgICAgICAgICogdGVzdHMv
cXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTA1LTIwICBMYXN6bG8gR29tYm9z
ICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBSZW1vdmUgdW51c2VkICJvbGQgc3R5
bGUiIHByaXZhdGUgQVBJcworCisgICAgICAgIFRoZXNlIHN5bWJvbHMgd2VyZSBpbnRyb2R1Y2Vk
IGFmdGVyIFF0V2ViS2l0IHY0LjYKKyAgICAgICAgc28gbm8tb25lIHNob3VsZCBiZSB1c2luZyB0
aGVtCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHA6CisKKzIwMTAtMDUtMjAgIFJhaml2IFJhbWFuYXNhbmthcmFuICA8cmFqaXYucmFtYW5hc2Fu
a2FyYW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
ICAgICAgICAKKyAgICAgICAgW1F0XSBRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeSgpIHJldHVy
bnMgd3JvbmcgdmFsdWVzIGZvciBRdDo6SW1DdXJzb3JQb3NpdGlvbiwgUXQ6OkltQW5jaG9yUG9z
aXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4
Nzc5CisKKyAgICAgICAgVGhlIGVhcmxpZXIgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gd2l0
aCB0aGUgYXNzdW1wdGlvbiB0aGF0IGluIHRoaXMgc2NlbmFyaW8gdGhlIAorICAgICAgICBhbmNo
b3IgcG9zaXRpb24gYWx3YXlzIGNvcnJlc3BvbmRzIHRvIHRoZSBTVEFSVCBpbmRleCBhbmQgdGhh
dCB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24KKyAgICAgICAgYWx3YXlzIGNvcnJlc3BvbmRz
IHRvIHRoZSBFTkQgaW5kZXggaW4gV2ViS2l0LgorCisgICAgICAgIFVwZGF0ZWQgdGhlIGltcGxl
bWVudGF0aW9uIG9mIFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0
aW9uKSBhbmQgCisgICAgICAgIFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hv
clBvc2l0aW9uKSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIEVkaXRvciBpcyBub3QgaW4KKyAgICAg
ICAgY29tcG9zaXRpb24gbW9kZS4gSW4gdGhlIG5vbi1jb21wb3NpdGlvbiBtb2RlLCB0aGUgQW5j
aG9yIGFuZCB0aGUgQ3VycmVudCBjdXJzb3IgcG9zaXRpb25zCisgICAgICAgIGNvcnJlc3BvbmQg
dG8gdGhlIEJhc2UgYW5kIEV4dGVudCBwb3NpdGlvbiBvZmZzZXRzIGluIFdlYktpdC4KKworICAg
ICAgICBBbHNvIGFkZGVkIHRoZSBhdXRvLXRlc3RzIGZvciB0aGUgUklHSFQgdG8gTEVGVCBhbmQg
TEVGVCB0byBSSUdIVCBzZWxlY3Rpb25zLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KTogTm93IHJldHVybmluZyBjb3Jy
ZWN0IHZhbHVlcyBmb3IgUXQ6OkltQ3Vyc29yUG9zaXRpb24gYW5kCisgICAgICAgIFF0OjpJbUFu
Y2hvclBvc2l0aW9uIHdoZW4gdGhlIEVkaXRvciBpcyBub3QgaW4gY29tcG9zaXRpb24gbW9kZS4g
CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRz
dF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKTogQWRkZWQgYXV0by10ZXN0cyBmb3IgUklHSFQgdG8g
TEVGVCBhbmQgTEVGVCB0byBSSUdIVCBzZWxlY3Rpb25zCisKKzIwMTAtMDUtMjAgIEx1aXogQWdv
c3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBTa2lwcGluZyBw
b3B1cCBmb2N1cyB0ZXN0IGZvciBtYWVtbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzkzMTQKKworICAgICAgICBTa2lwcGluZyBwb3B1cCBmb2N1cyB0
ZXN0IGZvciBtYWVtbyBpbiBxd2ViZnJhbWUgYXV0byB0ZXN0LgorCisgICAgICAgIFRoZSB0ZXN0
IG1ldGhvZCB0c3RfUVdlYkZyYW1lOjpwb3B1cEZvY3VzKCkgd2FzIHRlc3RpbmcgcG9wdXAgZm9j
dXMgQU5EIGlucHV0CisgICAgICAgIGZpZWxkIGZvY3VzLiBUaGUgaW5wdXQgZmllbGQgZm9jdXMg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBtZXRob2QgcG9wdXBGb2N1cygpCisgICAgICAgIGFu
ZCBhIG5ldyB0ZXN0IG1ldGhvZCBuYW1lZCBpbnB1dEZpZWxkRm9jdXMoKSBoYXMgYmVlbiBhZGRl
ZC4gRmluYWxseSB0aGUgdGVzdCAKKyAgICAgICAgbWV0aG9kIHBvcHVwRm9jdXMoKSBoYXMgYmVl
biBza2lwcGVkIGZvciBtYWVtby4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdl
YmZyYW1lLmNwcDoKKworMjAxMC0wNS0xOSAgSmVkcnplaiBOb3dhY2tpICA8amVkcnplai5ub3dh
Y2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KKworICAgICAgICBDcmFzaCBmaXggaW4gdGhlIEhpc3RvcnlDb250cm9sbGVyLgor
CisgICAgICAgIFRoZSBwcm9ibGVtIHdhcyBjYXN1ZWQgYnkgYSBkb2N1bWVudGVkIGZlYXR1cmUg
b2YgdGhlIFFXZWJGcmFtZTo6c2V0SHRtbCgpLgorICAgICAgICBUaGUgbWV0aG9kIGRvZXNuJ3Qg
YWZmZWN0IGEgYnJvd3NpbmcgaGlzdG9yeSAoZG9lc24ndCBjcmVhdGUgYSBIaXN0b3J5SXRlbSBp
bnN0YW5jZSksIHNvCisgICAgICAgIG1fY3VycmVudEl0ZW0gYW5kIG1fcHJldmlvdXNJdGVtIGFy
ZSBub3Qgc2V0LgorCisgICAgICAgIEEgbnVsbCBjaGVjayB3YXMgYWRkZWQuCisKKyAgICAgICAg
W1F0XSBUaGUgUVdlYlBhZ2UgY3Jhc2hlcyBvbiBoaXN0b3J5LnB1c2hTdGF0ZSgpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDAKKworICAgICAg
ICAqIHRlc3RzL3F3ZWJoaXN0b3J5L3RzdF9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYkhpc3Rvcnk6OnBvcFB1c2hTdGF0ZV9kYXRhKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9y
eTo6cG9wUHVzaFN0YXRlKToKKworMjAxMC0wNS0xOSAgQW50dGkgS29pdmlzdG8gIDxrb2l2aXN0
b0Bpa2kuZmk+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBUaWxlZEJhY2tpbmdTdG9yZSB1cGRhdGVzIGJyb2tl
biB3aGVuIG5vdCB1c2luZyByZXNpemVzVG9Db250ZW50cyBtb2RlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM1OQorICAgICAgICAKKyAgICAgICAg
UHV0IHRoZSBiYWNrIGxvZ2ljIHRoYXQgd2FzIGxvc3QgaW4gcmVmYWN0b3JpbmcuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6dmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OmdyYXBoaWNzSXRlbVZpc2libGVSZWN0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VDbGllbnRRV2lkZ2V0Ojp2aWV3UmVzaXplc1RvQ29udGVudHNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnZpZXdSZXNpemVzVG9Db250
ZW50c0VuYWJsZWQpOgorCisyMDEwLTA1LTE5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KKworICAgICAgICBTeW1iaWFuIGJ1aWxkIGZpeC4KKworICAgICAgICBb
UXRdIFVwZGF0ZWQgdGhlIGRlZiBmaWxlIHdpdGggZXhwb3J0cyBuZWVkZWQgZm9yIER1bXBSZW5k
ZXJUcmVlLgorCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTAt
MDUtMTkgIERlbmlzIER6eXViZW5rbyA8ZGVuaXMuZHp5dWJlbmtvQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBX
aGVuIGNyZWF0aW5nIHRoZSBVQSwgZG8gbm90IHNhc3NtdWUgdGhlIGxhbmd1YWdlIGNvZGUgaXMg
YQorICAgICAgICB0d28tbGV0dGVyIGlzbzYzOS0xIGNvZGUuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisKKzIwMTAt
MDUtMTggIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZpPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gTW92ZSB2
aXNpYmxlIHJlY3QgY2FsY3VsYXRpb24gZnJvbSBRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZSB0byBQ
YWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTI5NAorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpncmFwaGljc0l0ZW1WaXNpYmxl
UmVjdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6CisKKzIwMTAt
MDUtMTggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAg
ICAgIFN5bWJpYW4gYnVpbGQgZml4LgorCisgICAgICAgIFtRdF0gVXBkYXRlZCB0aGUgZGVmIGZp
bGUgd2l0aCBuZXcgZXhwb3J0cyBhZnRlciByNTkzMzUuCisKKyAgICAgICAgKiBzeW1iaWFuL2Vh
YmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wNS0xOCAgSmVkcnplaiBOb3dhY2tpICA8amVkcnpl
ai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBGaXggUVdlYkhpc3Rvcnkgc2VyaWFsaXphdGlvbi4KKworICAgICAgICBS
ZWdyZXNzaW9uIHdhcyBjYXVzZWQgYnkgYnVnIDMzMjI0LiBUaGUgc3RyZWFtaW5nIGZ1bmN0aW9u
CisgICAgICAgIHNob3VsZCBnZW5lcmF0ZSBhIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIgZm9yIGFs
bCBsb2FkZWQgdmFsdWVzLgorCisgICAgICAgIFtRdF0gdHN0X1FXZWJIaXN0b3J5OjpzZXJpYWxp
emVfMigpIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzMyMgorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKG9w
ZXJhdG9yPj4pOgorCisyMDEwLTA1LTE3ICBUYXN1a3UgU3V6dWtpICA8dGFzdWt1LnN1enVraUBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgW1F0XSBGaXggY29tcGlsYXRpb24gd2l0aCBRVF9OT19DT01CT0JPWAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgzMjQKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVTZWxlY3RQb3B1cCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaDoKKworMjAxMC0wNS0xNyAgQW50dGkgS29pdmlzdG8g
IDxrb2l2aXN0b0Bpa2kuZmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5MjE4CisgICAgICAgIFtRdF0gVGlsZWQgYmFja2luZyBzdG9yZSB0aWxlcyBzb21l
dGltZXMgZmxpY2tlciB3aGVuIGV4aXRpbmcgYSB6b29tIGFuaW1hdGlvbgorICAgICAgICAKKyAg
ICAgICAgVGlsZXMgc29tZXRpbWVzIGZsaWNrZXIgd2hlbiBleGl0aW5nIGEgem9vbSBhbmltYXRp
b24uIFRoaXMgaGFwcGVucyBhcyBhIHJlc3VsdAorICAgICAgICBvZiB0aGUgdmlzaWJsZSByZWN0
YW5nbGUgYmVpbmcgbW9tZW50YXJpbHkgb3V0IG9mIHN5bmMuCisgICAgICAgIAorICAgICAgICBJ
bnN0ZWFkIG9mIHVwZGF0aW5nIHRoZSB2aXNpYmxlIHJlY3QgYnkgZXhwbGljaXRseSBzZXR0aW5n
IGl0LCBwdWxsIGl0IHRocm91Z2gKKyAgICAgICAgdGhlIGNsaWVudCBhbmQgcmVjb21wdXRlIGlu
IFdlYktpdCB0aGUgbGV2ZWwuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6
CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpwYWludCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMTAtMDUtMTYgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gVW5za2lwIGZhc3QvbG9hZGVyL21haW4tZG9jdW1l
bnQtdXJsLWZvci1ub24taHR0cC1sb2Fkcy5odG1sCisKKyAgICAgICAgRml4IEZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwIHRvIHByaW50IHJlbGF0aXZlIGZpbGVuYW1lIHBhdGhzIGNvcnJlY3RseS4K
KworICAgICAgICBNb3ZlIHF0XyogZnVuY3Rpb25zIGluIEZyYW1lTG9hZGVyQ2xpZW50UXQsIEVk
aXRvckNsaWVudFF0LCBhbmQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQKKyAgICAgICAg
dG8gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuIENyZWF0ZSBuZXcgZnVuY3Rpb25zIHRvIHJlcGxh
Y2UgdGhlbSBpbiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC4KKyAgICAgICAgU3VwcG9ydCBmb3Ig
dGhlIG9sZCBmdW5jdGlvbiBuYW1lcyBpcyByZXRhaW5lZCB1bnRpbCBjb25maXJtZWQgdGhhdCBu
byBvbmUgdXNlcyB0aGVtIG91dHNpZGUKKyAgICAgICAgUXRXZWJLaXQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODY3CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEZyYW1lTG9hZGVyKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzUGF0aCk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGxPblJlZGlyZWN0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRX
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKToKKyAgICAgICAgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpkdW1wRWRpdGluZ0NhbGxiYWNrcyk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFNldEFjY2VwdHNFZGl0aW5nKToKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wTm90aWZpY2F0aW9uKToKKyAgICAgICAgKHF0X2R1bXBf
ZnJhbWVfbG9hZGVyKToKKyAgICAgICAgKHF0X2R1bXBfcmVzb3VyY2VfbG9hZF9jYWxsYmFja3Mp
OgorICAgICAgICAocXRfZHVtcF9yZXNvdXJjZV9sb2FkX2NhbGxiYWNrc19wYXRoKToKKyAgICAg
ICAgKHF0X3NldF93aWxsX3NlbmRfcmVxdWVzdF9yZXR1cm5zX251bGxfb25fcmVkaXJlY3QpOgor
ICAgICAgICAocXRfc2V0X3dpbGxfc2VuZF9yZXF1ZXN0X3JldHVybnNfbnVsbCk6CisgICAgICAg
IChxdF9zZXRfd2lsbF9zZW5kX3JlcXVlc3RfY2xlYXJfaGVhZGVycyk6CisgICAgICAgIChxdF9k
dW1wX2VkaXRpbmdfY2FsbGJhY2tzKToKKyAgICAgICAgKHF0X2R1bXBfc2V0X2FjY2VwdHNfZWRp
dGluZyk6CisgICAgICAgIChxdF9kdW1wX25vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6CisKKzIw
MTAtMDUtMTYgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF1VbnNr
aXAgc2VjdXJpdHkvc2V0LWZvcm0tYXV0b2NvbXBsZXRlLWF0dHJpYnV0ZS5odG1sCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0Nv
bXBsZXRlRm9yRWxlbWVudFdpdGhJZCgpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zODg1OQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMC0wNS0xNiAg
U2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0
XSBQcm9zcGVjdGl2ZSBRdC9NYWMgYnVpbGQgZml4LgorCisgICAgICAgIFRoZSBmcmllbmQgZGVj
bGFyYXRpb24gb2YgUUdyYXBoaWNzV2lkZ2V0IGNvbmZ1c2VzIGdjYyBhbmQgdGhpbmtzIHRoYXQg
aXQncyBhbiBpbXBsaWNpdAorICAgICAgICBmb3J3YXJkIGRlY2xhcmF0aW9uLCBtb3ZpbmcgdGhl
IGNsYXNzIGludG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlIChXZWJDb3JlOjpRR3JhcGhpY3NXaWRn
ZXQpLgorCisgICAgICAgIFRoZSBkZWNsYXJhdGlvbiBzZWVtcyB1c2VsZXNzIGFzIG5vIG1ldGhv
ZCBvZiBRR3JhcGhpY3NXaWRnZXQgaXMgZ29pbmcgdG8gY2FsbCBhbnl0aGluZworICAgICAgICBp
biB0aGlzIGNsYXNzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0Lmg6
CisKKzIwMTAtMDUtMTUgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29t
LmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggZml4ZXMgdGhlIGJ1aWxkIGZhaWx1cmUgb2YgV2ViS2l0IG9uIExpbnV4IGZvciBR
dDQuNQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2lnLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzkx
MDgKKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXdQcml2YXRlOjpzeW5jTGF5ZXJzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9RdFBsYXRmb3JtUGx1Z2luLmNwcDoKKworMjAxMC0wNS0xNCAgS2VudCBIYW5zZW4gPGtlbnQu
aGFuc2VuQG5va2lhLmNvbT4sIEpvY2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVAbm9r
aWEuY29tPiwgVG9yIEFybmUgVmVzdGLDuCA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4sIEhl
bnJ5IEhhdmVyaW5lbiA8aGVucnkuaGF2ZXJpbmVuQG5va2lhLmNvbT4sIEplZHJ6ZWogTm93YWNr
aSA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4sIEFuZHJlYXMgS2xpbmcgPGFuZHJlYXMua2xp
bmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFtRdF0gTWVyZ2Ugb3ZlcmhhdWwgb2YgdGhlIFF0V2ViS2l0IEFQSSBkb2N1bWVudGF0
aW9uCisKKyAgICAgICAgTnVtZXJvdXMgaW1wcm92ZW1lbnRzIGluIHdvcmRpbmcsIHFkb2Mgd2Fy
bmluZyBmaXhlcyBhbmQKKyAgICAgICAgY2xhcmlmaWNhdGlvbnMsIGRvbmUgaW4gYSB0ZWFtIHdv
cmsgZWZmb3J0LgorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KKworICAgICAgICAq
IEFwaS9xd2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6Cisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5jcHA6CisgICAgICAgICog
QXBpL3F3ZWJraXR2ZXJzaW9uLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJzZWN1
cml0eW9yaWdpbi5jcHA6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAg
ICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKyAg
ICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBl
dC5jcHA6CisgICAgICAgICh3cmFwSW5GdW5jdGlvbik6CisgICAgICAgICogZG9jcy93ZWJraXRz
bmlwcGV0cy93ZWJlbGVtZW50L21haW4uY3BwOgorICAgICAgICAoZmluZEJ1dHRvbkFuZENsaWNr
KToKKyAgICAgICAgKGF1dG9jb21wbGV0ZTEpOgorICAgICAgICAoYXV0b2NvbXBsZXRlMik6Cisg
ICAgICAgIChtYWluKToKKworMjAxMC0wNS0xNCAgTWFydGluIFNtaXRoICA8bXNtaXRoQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgRG9jdW1lbnRhdGlvbjogRml4IG92ZXJ2aWV3IGdyb3VwaW5nLgorCisgICAgICAgICogZG9j
cy9xdHdlYmtpdC5xZG9jOgorCisyMDEwLTA1LTE0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFt
aW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJv
cy4KKworICAgICAgICBbUVRdIFVwZGF0ZSB0aGUgU3ltYmlhbiB2ZXJzaW9uIGZvciB0aGUgdXNl
ciBhZ2VudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzgzODkKKworICAgICAgICBVcGRhdGUgdGhlIHVzZXIgYWdlbnQgZm9yIFN5bWJpYW5eMiB0byBT
eW1iaWFuXjQKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFn
ZTo6dXNlckFnZW50Rm9yVXJsKToKKworMjAxMC0wNS0xNCAgRGF3aXQgQWxlbWF5ZWh1ICA8YWRh
d2l0QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgSW1wbGVtZW50ZWQgY3JlYXRlSmF2YUFwcGxldFdpZGdldCB0byBhY3RpdmF0ZSBKYXZh
IGFwcGxldCBzdXBwb3J0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzA0NAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KToKKworMjAxMC0wNS0xMyAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFN5bWJpYW4gYnVpbGQgZml4LgorCisgICAgICAg
IFtRdF0gVXBkYXRlZCB0aGUgZGVmIGZpbGUgd2l0aCBuZXcgZXhwb3J0cy4KKworICAgICAgICAq
IHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOiBBZGQgbWlzc2luZyBnYyBzeW1ib2wgZm9yIFF0
TGF1bmNoZXIKKworMjAxMC0wNS0xMyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgU3ltYmlhbiBidWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBV
cGRhdGVkIHRoZSBkZWYgZmlsZSB3aXRoIG5ldyBleHBvcnRzLgorCisgICAgICAgICogc3ltYmlh
bi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTAtMDUtMTEgIERpZWdvIEdvbnphbGV6ICA8ZGll
Z29oY2dAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzIGZh
aWxpbmcgb24gTWFlbW81CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODY4NQorCisgICAgICAgIENoZWNrIGlmIHRoZSBTSVAgKFNvZnR3YXJlIElucHV0
IFBhbmVsKSBpcyB0cmlnZ2VyZWQsIHdoaWNoIG5vcm1hbGx5CisgICAgICAgIGhhcHBlbnMgb24g
bW9iaWxlIHBsYXRmb3Jtcywgd2hlbiBhIHVzZXIgaW5wdXQgZm9ybSByZWNlaXZlcyBhIG1vdXNl
IGNsaWNrLgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKToKKworMjAxMC0wNS0xMSAgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFzemxvIEdvbWJvcy4KKworICAgICAgICBbUXRdIFJFR1JFU1NJT04ocjU4NDk3
KSB0c3RfUUdyYXBoaWNzV2ViVmlldzo6Y3Jhc2hPblZpZXdsZXNzV2ViUGFnZXMoKSBpcyBmYWls
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY1
NQorCisgICAgICAgIEZpeCBkb3VibGUgZnJlZSBieSBtb3ZpbmcgdGhlIGNvbm5lY3QgdGlsbCBh
ZnRlciB0aGUgcmVzaXplLgorCisgICAgICAgIFRoZSBidWcgaXMgY2F1c2VzIGJ5IHRoZSBmYWN0
IHRoYXQgYSByZXNpemUgb2YgYW4gZW1wdHkgcGFnZSBjYXVzZXMgYQorICAgICAgICBsYXlvdXQs
IHRodXMgZGVsZXRpbmcgdGhlIHFncmFwaGljc3dlYnZpZXcgYmVmb3JlIHNldEh0bWwgaXMgY2Fs
bGVkLAorICAgICAgICB3aGljaCB0aGVuIGRlbGV0ZXMgaXQgYWdhaW4sIGNhdXNpbmcgYSBkb3Vi
bGUgZnJlZS4KKworICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGlj
c3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OmNyYXNoT25WaWV3
bGVzc1dlYlBhZ2VzKToKKworMjAxMC0wNS0xMiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4g
IDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFzemxvIEdvbWJv
cy4KKworICAgICAgICBbUXRdIFJlZ3Jlc3Npb24ocjU5MTUyKTogUUdyYXBoaWNzUGFnZUNsaWVu
dCBpcyBub3QgZm9yd2FyZGluZyBzY3JvbGwgYW5kIHVwZGF0ZSBldmVudHMgdG8gdmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkwMTYKKworICAg
ICAgICBTb21lIGZvcndhcmQgY2FsbHMgZ290IGxvc3QgZHVyaW5nIHRoZSByZWZhdG9yeS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzY3JvbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6dXBkYXRlKToKKworMjAxMC0wNS0xMyAgQW50
b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPiwgWWkgU2hlbiA8eWkuNC5zaGVuQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KKwor
ICAgICAgICBbUXRdIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBpbnRlcmZhY2U6IGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NTkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKworMjAxMC0wNS0xMiAgSm9lIExp
Z21hbiAgPGpvc2VwaC5saWdtYW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExh
c3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBOZXN0ZWQgb3ZlcmZsb3cgZGl2IGRvZXMgbm90
IHNjcm9sbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzg2NDEKKworICAgICAgICBNb2RpZnkgcXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xsT3ZlcmZsb3cs
IGlmIHRoZSBjdXJyZW50IG5vZGUncyByZW5kZXIgbGF5ZXIKKyAgICAgICAgZG9lcyBub3Qgc2Ny
b2xsIGl0IHdpbGwgdHJ5IGFuZCBzY3JvbGwgdGhlIHBhcmVudCdzIHJlbmRlciBsYXllci4gQWxz
byBleHBvcnQKKyAgICAgICAgcXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xsT3ZlcmZsb3cgc28gd2Ug
Y2FuIHVzZSBpdCBpbmRlcGVuZGVudGx5IG9mCisgICAgICAgIHF0d2Via2l0X3dlYmZyYW1lX3Nj
cm9sbFJlY3Vyc2l2ZWx5CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbE92ZXJmbG93KToKKyAgICAgICAgKHF0d2Via2l0X3dl
YmZyYW1lX3Njcm9sbFJlY3Vyc2l2ZWx5KToKKworMjAxMC0wNS0xMiAgQW50b25pbyBHb21lcyAg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggQ2hy
aXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHRoZSB1bm5lZWRlZCBjaGVjayBmb3Ig
UVdpZGdldFBhZ2VDbGllbnQgQFFHcmFwaGljc1dlYlZpZXc6OmRldGFjaEN1cnJlbnRQYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODk4OQorCisg
ICAgICAgIFJlYXNvbnM6CisgICAgICAgIC0gVGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3Ig
YSBRV2lkZ2V0UGFnZUNsaWVudC1iYXNlZCBpbiBRR3JhcGhpY3NXZWJWaWV3LgorICAgICAgICAt
IFRoZSBjbGllbnQgaGFzIGFsd2F5cyB0byBiZSBkZWxldGVkIGFueXdheXMuCisKKyAgICAgICAg
KiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJp
dmF0ZTo6ZGV0YWNoUGFnZSk6CisKKzIwMTAtMDUtMTIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3Mu
CisKKyAgICAgICAgQWRkIGEgY29tbWVudCB0byBleHBsYWluIHRoZSB3ZWIgaW5zcGVjdG9yIGR5
bmFtaWMgcHJvcGVydHkgdXJsIGhvb2sKKyAgICAgICAgYW5kIHRoYXQgaXQncyB0aGVyZSBvbiBw
dXJwb3NlIDopCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1MzQwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZy
b250ZW5kKToKKworMjAxMC0wNS0xMSAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFtRdF0gSW1wbGVtZW50IGEgZGV0YWNoQ3VycmVudFBhZ2UgbWV0aG9kIGZvciBRR3JhcGhp
Y3NXZWJWaWV3IGFuZCBRV2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg5MzkKKworICAgICAgICB1bnNldFBhZ2VJZkV4aXN0cyBtZXRob2Qg
d2FzIHJlbmFtZWQgdG8gZGV0YWNoQ3VycmVudFBhZ2UgbWV0aG9kIGFuZCBpcyBub3cgcmVzcG9u
c2libGUKKyAgICAgICAgZm9yIGRvaW5nIGFsbCB0aGUgdW5zZXQgbG9naWMgb2YgcGFnZSBhbmQg
cGFnZUNsaWVudCByZWZlcmVuY2VzIHByZXZpb3VzbHkgZG9uZSBieQorICAgICAgICB0aGUgUXtH
cmFwaGljc31XZWJWaWV3IGRlc3RydWN0b3IocykuCisKKyAgICAgICAgSXQgaXMgYSBjb2RlIGNs
ZWFuIHVwLCBubyBiZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dl
YnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6On5RR3JhcGhpY3NX
ZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojp+UUdyYXBoaWNzV2Vi
Vmlldyk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBh
Z2UpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZSk6CisgICAgICAgICogQXBp
L3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6flFXZWJWaWV3UHJpdmF0
ZSk6CisgICAgICAgIChRV2ViVmlldzo6flFXZWJWaWV3KToKKyAgICAgICAgKFFXZWJWaWV3UHJp
dmF0ZTo6ZGV0YWNoQ3VycmVudFBhZ2UpOgorICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgor
CisyMDEwLTA1LTExICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBl
bWl0IGluaXRpYWxMYXlvdXRDb21wbGV0ZWQgc2lnbmFsIGZyb20gRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTIxCisKKyAgICAgICAgRW1pdCBp
bml0aWFsTGF5b3V0Q29tcGxldGVkIHNpZ25hbCBmcm9tIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0CisgICAgICAgIGluc3RlYWQgb2Yg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCAsIGJlY2F1c2UgdGhl
IGZvcm1lciBlbnN1cmVzIHRoYXQgYQorICAgICAgICB2aXN1YWwgY29udGVudCBsYXllZCBvdXQg
b24gdGhlIGZyYW1lLgorCisgICAgICAgIEl0IG1hdGNoZXMgdG8gUVdlYkZyYW1lOjppbml0aWFs
TGF5b3V0Q29tcGxldGVkIHNpZ25hbCBkb2N1bWVudGF0aW9uIGF0OgorCisgICAgICAgICIuLi4g
VGhpcyBpcyB0aGUgZmlyc3QgdGltZSB5b3Ugd2lsbCBzZWUgY29udGVudHMgZGlzcGxheWVkIG9u
IHRoZSBmcmFtZSAuLi4iCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmlyc3RMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorCisyMDEwLTA1LTEx
ICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXNAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBBZGQgUGFn
ZUNsaWVudFFHcmFwaGljc1dpZGdldCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
UUdyYXBoaWNzV2ViVmlld1ByaXZhdGUgZG9lc24ndCBpbmhlcml0IFFXZWJQYWdlQ2xpZW50IGFu
eW1vcmUKKyAgICAgICAgYW5kIHRoZSBuZWVkZWQgZnVuY3Rpb25zIHdlcmUgbW92ZWQgdG8gdGhp
cyBuZXcgUGFnZUNsaWVudCBjbGFzcywKKyAgICAgICAgaW5jbHVkaW5nIFRpbGluZyBhbmQgQWNj
ZWxlcmF0ZWQgQ29tcG9zaXRlIHNwZWNpZmljIG9uZXMuCisKKyAgICAgICAgW1F0XSBQYWdlQ2xp
ZW50UXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZm9yIFFHcmFwaGljc1dpZGdldAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc4NjYKKworICAgICAg
ICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQ
cml2YXRlOjpRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJW
aWV3UHJpdmF0ZTo6flFHcmFwaGljc1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOjpzeW5jTGF5ZXJzKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQ
cml2YXRlOjpfcV9zY2FsZUNoYW5nZWQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6ZXZl
bnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFnZSk6CisgICAgICAgIChRR3Jh
cGhpY3NXZWJWaWV3Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
OjpzZXRHZW9tZXRyeSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRSZXNpemVzVG9D
b250ZW50cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZUNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6On5QYWdlQ2xpZW50UUdy
YXBoaWNzV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRn
ZXQ6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0
Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6
Y3JlYXRlT3JEZWxldGVPdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3Jh
cGhpY3NXaWRnZXQ6OnN5bmNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFH
cmFwaGljc1dpZGdldDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6bWFya0ZvclN5bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6dXBkYXRlQ29tcG9zaXRpbmdTY3JvbGxQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojp1cGRh
dGVUaWxlZEJhY2tpbmdTdG9yZVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRR
R3JhcGhpY3NXaWRnZXQ6OnNldElucHV0TWV0aG9kRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjppbnB1dE1ldGhvZEVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6c2V0SW5wdXRNZXRob2RIaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OmN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojp1cGRhdGVDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6cGFsZXR0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpzY3JlZW5O
dW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6b3du
ZXJXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6
Z2VvbWV0cnlSZWxhdGl2ZVRvT3duZXJXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNs
aWVudFFHcmFwaGljc1dpZGdldDo6cGx1Z2luUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnN0eWxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QYWdlQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlFHcmFwaGljc0l0ZW1PdmVybGF5
OjpwYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlFHcmFwaGljc0l0ZW1PdmVybGF5Ojpib3VuZGlu
Z1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UUdyYXBoaWNzSXRlbU92ZXJsYXk6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlFHcmFwaGljc0l0ZW1PdmVybGF5OjpwcmVwYXJlR3JhcGhpY3NJ
dGVtR2VvbWV0cnlDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGlj
c1dpZGdldDo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojppc1FXaWRnZXRDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjopOgor
CisyMDEwLTA1LTA5ICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICBbUXRdIENyYXNoIGluIFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjp+UUdyYXBoaWNzV2Vi
Vmlld1ByaXZhdGUgd2hlbiBhbmltYXRpb24gd2VyZSB1c2VkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODU3NAorCisgICAgICAgIFRoZSBmaXggdXNl
cyBhIFFXZWFrUG9pbnRlciBmb3Igcm9vdEdyYXBoaWNzTGF5ZXIsIHByb3RlY3RpbmcgZnJvbSBh
IGNyYXNoIGluIGNhc2UgdGhlIGxheWVyIGlzIGRlbGV0ZWQgYmVmb3JlIHRoZSBRR3JhcGhpY3NX
ZWJWaWV3LgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAo
UUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OlFHcmFwaGljc1dlYlZpZXdQcml2YXRlKToKKyAgICAg
ICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjp+UUdyYXBoaWNzV2ViVmlld1ByaXZhdGUpOgor
ICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnNldFJvb3RHcmFwaGljc0xheWVyKToK
KyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjp1cGRhdGVDb21wb3NpdGluZ1Njcm9s
bFBvc2l0aW9uKToKKworMjAxMC0wNS0wOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlA
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBbUXRdIFBsYXRmb3JtIHBsdWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg0MzgKKworICAgICAgICBTZWxlY3QgcG9wdXBzIGRlbGVn
YXRlIHByaXZhdGUgQVBJLiBUbyBwcm92aWRlIHNlbGVjdCBwb3B1cCBkZWxlZ2F0ZXMKKyAgICAg
ICAgYSBwbHVnaW4gdGhhdCBpbXBsZW1lbnRzIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiBtdXN0IGJl
IGZvdW5kCisgICAgICAgIGluIFFDb3JlQXBwbGljYXRpb246OmxpYnJhcnlQYXRocy4KKworICAg
ICAgICAqIEFwaS9oZWFkZXJzLnByaToKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmg6IEFkZGVkLgorICAgICAgICAoUVdlYlNlbGVjdERhdGE6On5RV2ViU2VsZWN0RGF0YSk6
CisgICAgICAgIChRV2ViU2VsZWN0RGF0YTo6KToKKyAgICAgICAgKFFXZWJTZWxlY3RNZXRob2Q6
On5RV2ViU2VsZWN0TWV0aG9kKToKKyAgICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6flFX
ZWJLaXRQbGF0Zm9ybVBsdWdpbik6CisgICAgICAgIChRV2ViS2l0UGxhdGZvcm1QbHVnaW46Oik6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1F0UGxhdGZvcm1QbHVnaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdERh
dGE6OlNlbGVjdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RGF0YTo6aXRlbVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RGF0YTo6aXRlbVRvb2xUaXApOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0RGF0YTo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3REYXRhOjppdGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RGF0YTo6aXRl
bUlzU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RGF0YTo6bXVsdGlwbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RGF0YTo6aXRlbVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyOjpTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyOjpzaG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdElucHV0TWV0aG9kV3JhcHBlcjo6aGlkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXI6OnNlbGVjdEl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyOjpkaWRIaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFBsdWdpbk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1
Z2luOjp+UXRQbGF0Zm9ybVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1
Z2luOjpwbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRl
U2VsZWN0SW5wdXRNZXRob2QpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1Q
bHVnaW4uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpRdFBs
YXRmb3JtUGx1Z2luKToKKworMjAxMC0wNS0wOCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4u
dHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgorCisgICAgICAgIFtRdF0gRG9jdW1lbnQgYSBsaW1pdGF0aW9uIG9mIFFXZWJQYWdlOjpsaW5r
Q2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzc2OTQKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisKKzIwMTAtMDUtMDIgIFNpbW9u
IEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFVucmV2aWV3
ZWQsIFF0V2ViS2l0IHZlcnNpb25pbmcgZm9yIHRoZSB0cnVuay4KKworICAgICAgICBUaGUgbmV4
dCB2ZXJzaW9uIGlzIGdvaW5nIHRvIGJlIDIuMSwgYmFzZWQgb2ZmIHRoZSB0cnVuay4KKworICAg
ICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6CisKKzIwMTAtMDUtMDcgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFN5bWJpYW4gYnVpbGQgZml4
LgorCisgICAgICAgIFtRdF0gVXBkYXRlZCB0aGUgZGVmIGZpbGUgd2l0aCBhYnNlbnQgZXhwb3J0
cy4KKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdlYktpdHUuZGVmOgorCisyMDEwLTA1LTA2
ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBQYXRjaCB0byBmaXggY29t
cGlsYXRpb24gd2FybmluZ3MgZm9yIFFHcmFwaGljc1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDI4CisKKyAgICAgICAgUGF0Y2ggYnkg
QWxleGlzIE1lbmFyZCA8YWxleGlzLm1lbmFyZEBub2tpYS5jb20+CisKKyAgICAgICAgKiBBcGkv
cWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjppdGVtQ2hh
bmdlKToKKworMjAxMC0wNS0wNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CisKKyAgICAgICAgW1F0XSBSZXBsYWNlIHB1YmxpYyBpbnNwZWN0b3IgdXJsIHdpdGggcHJpdmF0
ZSBwcm9wZXJ0eSBmb3IgUXRMYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzUzNDAKKworICAgICAgICBSZXBsYWNlIHRoZSBwdWJsaWMgQVBJ
IHdpdGggYSBwcml2YXRlIGR5bmFtaWMgcHJvcGVydHkgdW50aWwgdGhpcyBmZWF0dXJlCisgICAg
ICAgIGlzIHJlYWR5LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAg
ICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpvcGVu
SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIHN5bWJpYW4vYndpbnMvUXRXZWJLaXR1LmRl
ZjoKKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wNS0wNCAg
TGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBRV2Vi
UGFnZSB2aWV3TW9kZSBwcm9wZXJ0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzgxMTkKKworICAgICAgICBSZW5hbWUgdGhlIHByb3BlcnR5IGZyb20g
d3J0X3ZpZXdNb2RlIHRvIF9xX3ZpZXdNb2RlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQp
OgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OnZpZXdNb2Rlcyk6CisKKzIwMTAtMDUtMDQgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRv
ciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgW1F0XSBQcmVzZXJ2ZSBiaW5hcnkgY29tcGF0aWJp
bGl0eSB3aXRoIHF0d2Via2l0LTIuMCBicmFuY2gKKworICAgICAgICBNb3ZlZCB0aGUgV2ViR0wg
YXR0cmlidXRlIGluIFFXZWJTZXR0aW5ncyB0byB0aGUgZW5kIG9mIHRoZSBlbnVtLAorICAgICAg
ICB0byBlbnN1cmUgdGhhdCB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlIGVudW0gdmFsdWVzIGZv
bGxvd2luZyBpdAorICAgICAgICBhcmUgdGhlIHNhbWUgYXMgaW4gdGhlIHJlbGVhc2UgYnJhbmNo
LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDEwLTA1LTAzICBMYXN6bG8g
R29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEV4cG9zZSBIVE1MVG9rZW5pemVyIHlp
ZWxkaW5nIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM3MDIzCisKKyAgICAgICAgRW5hYmxlcyB0byBzZXQgVGltZURlbGF5IGFuZCBD
aHVua1NpemUgZm9yIAorICAgICAgICBIVE1MVG9rZW5pemVyLgorCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHluYW1pY1Byb3BlcnR5Q2hh
bmdlRXZlbnQpOgorCisyMDEwLTA1LTAzICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgY29udHJvbGxpbmcgY2xpcGJvYXJkIGFjY2VzcyBmcm9tIGphdmFzY3JpcHQu
CisgICAgICAgIENsaXBib2FyZCBhY2Nlc3MgZnJvbSBqYXZhc2NyaXB0IGlzIGRpc2FibGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzc1MQorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2Vi
U2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgor
CisyMDEwLTA1LTAzICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkICJ3aWxs
U2VuZFN1Ym1pdEV2ZW50IiBob29rIHRvIFdlYkZyYW1lQ2xpZW50IGFuZCBGcmFtZUxvYWRlckNs
aWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzgz
OTcKKworICAgICAgICBObyB0ZXN0cyAoZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkIG9ubHkgdGhy
b3VnaCBuYXRpdmUgV2ViS2l0IEFQSS4pCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQpOgorCisyMDEwLTA1LTAzICBUb3IgQXJuZSBW
ZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIFBydW5lIGRlYWQgY29kZSBpbiBRV2Vi
UGFnZQorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAxMC0wNS0wMiAgVGFzdWt1
IFN1enVraSAgPHRhc3VrdS5zdXp1a2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4IGNvbXBpbGF0aW9uIHdpdGggUVRf
Tk9fQkVBUkVSTUFOQUdFTUVOVAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzgzMjQKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorCisy
MDEwLTA0LTI5ICBKYW5uZSBLb3NraW5lbiAgPGphbm5lLnAua29za2luZW5AZGlnaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gUXRX
ZWJLaXQgdmVyc2lvbmluZyBhZGRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzcyMDcKKworICAgICAgICBRdFdlYmtpdCByZWxlYXNlcyBzZXBhcmF0
ZWQgZnJvbSBRdCByZWxlYXNlIGN5Y2xlLgorCisgICAgICAgICogcXR3ZWJraXRfdmVyc2lvbi5w
cmk6IEFkZGVkLgorCisyMDEwLTA1LTAyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91
bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsIGlzIHRl
cnJpYmxlIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4NzUKKworICAgICAgICBTaW1wbGlmeSB0aGUgY3JlYXRpb24gb2YgdGhlIHVzZXIgYWdl
bnQgc3RyaW5nIHRvIGF2b2lkIHNvbWUKKyAgICAgICAgb3ZlcmhlYWQgZm9yIGVhY2ggbG9hZGVk
IHVybC4KKworICAgICAgICBUaGUgc3RhdGljIHBhcnQgb2YgdGhlIHVzZXIgYWdlbnQgaXMgY2Fj
aGVkIHNvIGl0IG9ubHkgaGF2ZQorICAgICAgICB0byBiZSBtYWRlIG9uY2UuCisgICAgICAgIFRo
aXMgY3JlYXRpb24gaGFzIGJlZW4gbWFkZSBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGUgY29kZS4K
KworICAgICAgICBUaGUgdHdvIHZhcmlhYmxlOiBhcHBsaWNhdGlvbiBuYW1lIGFuZCBjdXJyZW50
IGxhbmd1YWdlIGFyZQorICAgICAgICBzZXQgZHluYW1pY2FsbHkgd2hlbiBuZWVkZWQuCisgICAg
ICAgIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyBub24gbG9uZ2VyIGNyZWF0ZWQgaWYgdGhlIHdpZGdl
dCBsb2NhbGUKKyAgICAgICAgaXMgdXNlZC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKyAgICAgICAgKiB0ZXN0cy9x
d2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp1c2VyQWdl
bnRBcHBsaWNhdGlvbk5hbWUpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp1c2VyQWdlbnRMb2Nh
bGVDaGFuZ2UpOgorCisyMDEwLTA1LTAyICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFs
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KKworICAgICAgICBbUXRdIEdyYXBoaWNzTGF5ZXI6IGFuaW1hdGlvbiBpbmNvcnJlY3Qg
d2hlbiBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4MzcxCisKKyAgICAgICAgVGhpcyBpcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCB3
aXRoIHRoZSBpbnZhbGlkYXRlLW9uLXNjcm9sbCBjb2RlIHBhdGgsIHRoYXQgdXNlcyBRR3JhcGhp
Y3NXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlKCkKKyAgICAgICAgaW5zdGVhZCBvZiBRR3JhcGhpY3NX
ZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsKCkuIFRoZSBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgdGhlIHNj
cm9sbGluZyBwb3NpdGlvbiBpcyBjb3JyZWN0IG9uCisgICAgICAgIGVhY2ggY29udGVudCB1cGRh
dGUgLSB0aGlzIHNob3VsZG4ndCBoYXZlIGEgcGVyZm9ybWFuY2UgaW1wYWN0IC0gdGhlIG9ubHkg
b3ZlcmhlYWQgaXMgYW4gYWRkaXRpb25hbCB2YWx1ZS10ZXN0IG9uIGVhY2ggdXBkYXRlLgorCisg
ICAgICAgIFRlc3RlZCBieSBodHRwOi8vd3d3LnRoZS1hcnQtb2Ytd2ViLmNvbS9jc3MvY3NzLWFu
aW1hdGlvbi8KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjp1cGRhdGUpOgorCisyMDEwLTA1LTAxICBSb2JlcnQg
SG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBzbWFydCBwYXN0ZSBzdXBwb3J0CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTM2CisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUpOiBFbmFibGUgc21hcnQgcGFzdGUgc3VwcG9ydCBieSBkZWZhdWx0LgorCisyMDEw
LTA0LTI5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBb
UXRdIFJlaW5zdGF0ZSBxdF9kcnRfIHN5bWJvbCBleHBvcnRzIGFzIG9mIFF0V2ViS2l0IDQuNiBy
ZWxlYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODMwNAorCisgICAgICAgIFRoaXMgY2hhbmdlIHByb3ZpZGVzIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2l0aCBzb21lIHByZXZpb3VzbHkKKyAgICAgICAgZXhwb3J0ZWQgcHJpdmF0ZSBzeW1ib2xz
LiBObyBuZXcgZnVuY3Rpb25hbGl0eSBpbnRyb2R1Y2VkLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAocXRfcmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChxdF9zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIChxdF9kcnRfY2xlYXJGcmFtZU5hbWUpOgorICAgICAgICAocXRfZHJ0X2dhcmJhZ2VD
b2xsZWN0b3JfY29sbGVjdCk6CisgICAgICAgIChxdF9kcnRfZ2FyYmFnZUNvbGxlY3Rvcl9jb2xs
ZWN0T25BbHRlcm5hdGVUaHJlYWQpOgorICAgICAgICAocXRfZHJ0X2phdmFTY3JpcHRPYmplY3Rz
Q291bnQpOgorICAgICAgICAocXRfZHJ0X251bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAg
ICAgIChxdF9kcnRfb3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAocXRfZHJ0
X3BhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKHF0X2RydF9wYXVzZVRyYW5zaXRpb25PZlByb3Bl
cnR5KToKKyAgICAgICAgKHF0X2RydF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMpOgorICAg
ICAgICAocXRfZHJ0X3J1bik6CisgICAgICAgIChxdF9kcnRfc2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWQpOgorICAgICAgICAocXRfZHJ0X3doaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4pOgor
ICAgICAgICAocXRfd2VicGFnZV9ncm91cE5hbWUpOgorICAgICAgICAocXRfd2VicGFnZV9zZXRH
cm91cE5hbWUpOgorCisyMDEwLTA0LTI5ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91
bGFpbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCisKKyAgICAgICAgR2V0IHJpZCBvZiBmb3JjZUxheW91dCgpIG9uIEZyYW1lVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxOTkK
KworICAgICAgICBUaGUgZnVuY3Rpb24gRnJhbWVWaWV3Ojpmb3JjZUxheW91dCgpIGlzIG1pc3Ns
ZWFkaW5nCisgICAgICAgIGJlY2F1c2UgaXQgZG9lcyBub3QgYWN0dWFsbHkgZm9yY2UgdGhlIGxh
eW91dCwgdGhlIGNhbGwgaXMKKyAgICAgICAgZXF1aXZhbGVudCB0byBsYXlvdXQoKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJlcGxhY2UgdGhlIGNhbGwgdG8gZm9yY2VMYXlvdXQoKSBieSBsYXlv
dXQoKSBpbiBRdAorICAgICAgICB0byBhdm9pZCB0aGUgbWlzdW5kZXJzdGFuZGluZy9pbXByb3Zl
IHJlYWRhYmlsaXR5LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6ZHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldFByZWZlcnJlZENvbnRlbnRzU2l6ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNldE1lZGlhVHlwZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
Ojpmb3JjZUxheW91dCk6CisKKzIwMTAtMDQtMjkgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmts
aW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgY2FsbCB0byBGcmFtZVZpZXc6OmZvcmNlTGF5b3V0
KCkgaW4gc2V0Vmlld3BvcnRTaXplKCkKKyAgICAgICAgVGhpcyBwcmV2ZW50cyBhIGRvdWJsZSBy
ZWxheW91dCBvbiByZXNpemUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM4MTc5CisKKyAgICAgICAgVGhhbmtzIHRvIE5hdGUgV2hldHNlbGwgPG5h
dGhhbi53aGV0c2VsbEBnbWFpbC5jb20+IGZvciBzcG90dGluZyB0aGlzLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaWV3cG9ydFNpemUpOgor
CisyMDEwLTA0LTI5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFtRdF0g
UkVHUkVTU0lPTihyNTc5ODIpOiB0c3RfcXdlYnBhZ2U6OnNob3dNb2RhbERpYWxvZygpIGNyYXNo
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MzE0
CisKKyAgICAgICAgTWFrZSBzdXJlIHRoYXQgdGhlcmUncyBhbHdheXMgYSBtYWluIGZyYW1lIHdo
ZW4gcmV0dXJuaW5nIGZyb20gY3JlYXRlV2luZG93KCkKKyAgICAgICAgdG8gdGhlIGNhbGxlciBp
biBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisKKzIw
MTAtMDQtMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisg
ICAgICAgIFVucmV2aWV3ZWQsIFF0IGJ1aWxkIGZpeC4KKworICAgICAgICBbUXRdIEd1YXJkIHRo
ZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBmb3IKKyAgICAg
ICAgZXhwb3J0ZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OndlYkluc3BlY3RvckNsb3NlKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0Ojp3ZWJJbnNwZWN0b3JTaG93KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpzZXRUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQpOgorCisyMDEwLTA0LTI4ICBBbnRvbmlvIEdv
bWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+LCBZaSBTaGVuIDx5aS40LnNoZW5Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0g
dHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlOjp2aXNpdGVkTGlua3MoKSBmYWlscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczMjMKKworICAgICAgICBQ
YXRjaCBmaXhlcyBzdHlsZVByb3BlcnR5IG1ldGhvZCBvZiBRV2ViRWxlbWVudCB0byBtYWtlIHVz
ZSBvZgorICAgICAgICBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvbXB1dGVkU3R5bGUg
J2FsbG93VmlzaXRlZFN0eWxlJyBwYXJhbWV0ZXIKKyAgICAgICAgYW5kIHRoZSBjb3JyZXNwb25k
aW5nIGZhaWxpbmcgUVdlYkhpc3RvcnlJbnRlcmZhY2U6OnZpc2l0ZWRMaW5rcyBtZXRob2QuCisK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnN0
eWxlUHJvcGVydHkpOgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3RzdF9x
d2ViaGlzdG9yeWludGVyZmFjZS5jcHA6CisgICAgICAgICh0c3RfUVdlYkhpc3RvcnlJbnRlcmZh
Y2U6OnZpc2l0ZWRMaW5rcyk6CisKKzIwMTAtMDQtMjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFn
b3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBRV2ViUGFnZSB2aWV3TW9kZSBwcm9wZXJ0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMTkK
KworICAgICAgICBSZXBsYWNpbmcgbWV0aG9kIHF0X3dydF9zZXRWaWV3TW9kZSBieSB3cnRfdmll
d01vZGUgcHJvcGVydHkuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCk6CisgICAgICAgIChR
V2ViUGFnZTo6ZXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICog
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6
d3J0X3ZpZXdNb2Rlcyk6CisKKzIwMTAtMDQtMjggIEphbm5lIEtvc2tpbmVuICA8amFubmUucC5r
b3NraW5lbkBkaWdpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4g
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFdJTlMgREVGIGZpbGUg
ZnJlZXplCisKKyAgICAgICAgVXBkYXRlZCBXSU5TQ1cgZGVmIGZpbGUgd2l0aCBhZGRlZCBhbmQg
cmVtb3ZlZCBzeW1ib2xzLgorCisgICAgICAgICogc3ltYmlhbi9id2lucy9RdFdlYktpdHUuZGVm
OgorCisyMDEwLTA0LTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCisKKyAgICAgICAgRml4IGZvciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwOTcKKyAgICAgICAgRGlzZW50YW5n
bGUgaW5pdGlhbGl6aW5nIHRoZSBtYWluIHRocmVhZCBmcm9tIGluaXRpYWxpemluZyB0aHJlYWRp
bmcKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OlFXZWJQYWdlUHJpdmF0ZSk6IEFkZCBjYWxsIHRvIGluaXRpYWxpemVNYWluVGhyZWFkLgor
CisyMDEwLTA0LTI2ICBUaGlhZ28gTWFjaWVpcmEgIDx0aGlhZ28ubWFjaWVpcmFAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0g
Rml4IHRoZSBpbmNsdWRlIGhlYWRlciA8cXN0cmluZy5oPiAtPiA8UXRDb3JlL3FzdHJpbmcuaD4K
KworICAgICAgICBUaGUgbW9kdWxlL2hlYWRlci5oIHN0eWxlIGluY2x1c2lvbiByZW1vdmVzIHRo
ZSBuZWVkIHRvIGhhdmUgLUkkUVRESVIvaW5jbHVkZS9kZXBlbmRpbmctbW9kdWxlCisgICAgICAg
IGluIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoIGZvciB0aGUgYXBwbGljYXRpb24uCisKKyAgICAg
ICAgKiBBcGkvcXdlYmtpdHZlcnNpb24uaDoKKworMjAxMC0wNC0yNiAgQnJ1bm8gU2NobWlkdCAg
PGJydW5vLnNjaG1pZHRAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRXhwb3NpbmcgYW4gUVZhcmlhbnRN
YXAgY29udGFpbmluZyBRT2JqZWN0U3RhciB0byBKYXZhc2NyaXB0CisgICAgICAgIGNhdXNlcyBT
ZWdtZW50YXRpb24gRmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM0NzI5CisKKyAgICAgICAgSWYgYW4gUVZhcmlhbnRNYXAgY29udGFpbmluZyBR
T2JqZWN0U3RhciBpcyBhZGRlZCB0byB0aGUgdG8gUXRXZWJraXQKKyAgICAgICAgSmF2YXNjcmlw
dCwgaXQncyB1c2UgY2F1c2VzIFNlZ21lbnRhdGlvbiBGYXVsdC4KKyAgICAgICAgSXQgaGFwcGVu
cyBiZWNhdXNlLCBpbiB0aGUgY2FzZSBRTWV0YVR5cGU6OlFWYXJpYW50TWFwLCB0aGUgInJvb3Qi
CisgICAgICAgIG9iamVjdCB0aGF0IGlzIGluc2lkZSBvZiBhIFBhc3NSZWZQdHIgaXMgcGFzc2Vk
IHJlY3Vyc2l2ZWx5IGluc2lkZSBhCisgICAgICAgIGxvb3AgdG8gcmVjb3ZlciB0aGUgY29udGVu
dCBvZiB0aGUgbWFwLCBidXQgdGhlIFBhc3NSZWZQdHIgc2VtYW50aWNzCisgICAgICAgIHByb2hp
Yml0IGl0cyB1c2UgaW5zaWRlIGEgbG9vcCwgc28gdGhlICJyb290IiBvYmplY3QgbXVzIGJlIHBh
c3NlZAorICAgICAgICB1c2luZyB0aGUgbWV0aG9kICJQYXNzUmVmUHRyOjpnZXQiIGluIG9yZGVy
IHRvIGtlZXAgdGhlIGN1cnJlbnQKKyAgICAgICAgcmVmZXJlbmNlLgorCisgICAgICAgICogdGVz
dHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoTXlRT2JqZWN0OjpNeVFP
YmplY3QpOiBuZXcgcHJvcGVydHkgdmFyaWFudE1hcFByb3BlcnR5CisgICAgICAgIChNeVFPYmpl
Y3Q6OnZhcmlhbnRNYXBQcm9wZXJ0eSk6IHJlYWQgdmFyaWFudE1hcFByb3BlcnR5CisgICAgICAg
IChNeVFPYmplY3Q6OnNldFZhcmlhbnRNYXBQcm9wZXJ0eSk6IHdyaXRlIHZhcmlhbnRNYXBQcm9w
ZXJ0eQorCisyMDEwLTA0LTI1ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0
XSBsYXlvdXRUZXN0Q29udHJvbGxlci5jb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCBjcmFzaGVz
IGZvciBhIG5vbmV4aXN0ZW50IElECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDU3MworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNv
dW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKToKKworMjAxMC0wNC0yMCAgUm9iZXJ0IEhvZ2FuICA8
cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgW1F0XSBBZGQgbW9yZSBzdXBwb3J0IGZvciB0ZXh0SW5wdXRDb250cm9sbGVy
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbGVjdGVkUmFuZ2UoKSwgc2V0TWFya2VkVGV4
dCgpLCBpbnNlcnRUZXh0KCksCisgICAgICAgIGFuZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZSgpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTcwMgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNlbGVjdGVkUmFuZ2UpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFn
ZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKKzIwMTAtMDQt
MjIgIEpvaG4gUGF2YW4gIDxqb2huLnBhdmFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFtRdF0gaW5wdXRNZXRob2RRdWVyeSByZXR1
cm5zIGNvb3JkaW5hdGVzIGluIHdlYiBwYWdlIGNvb3JkaW5hdGVzIHJhdGhlciB0aGFuIGluIGl0
ZW0gY29vcmRpbmF0ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNzE2MworCisKKyAgICAgICAgUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkgaXMg
bW9kaWZpZWQgc28gdGhhdCBpdAorICAgICAgICByZXR1cm5zIGNvb3JkaW5hdGVzIGluIHRoZSB3
aWRnZXQncyBjb29yZGluYXRlIHN5c3RlbS4KKyAgICAgICAgVGVzdHMgYXJlIGFkZGVkIGZvciBR
R3JhcGhpY3NXZWJWaWV3IGFuZCBRV2ViVmlldworICAgICAgICB0byB2ZXJpZnkgdGhhdCB0aGlz
IGJlaGF2aW9yIGlzIGNvcnJlY3QgYWZ0ZXIgdGhlIHdlYnBhZ2UKKyAgICAgICAgaGFzIGJlZW4g
c2Nyb2xsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2U6OmlucHV0TWV0aG9kUXVlcnkpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcv
dHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6
Om1pY3JvRm9jdXNDb29yZGluYXRlcyk6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6bWljcm9Gb2N1c0Nvb3JkaW5hdGVz
KToKKworMjAxMC0wNC0yMiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBGaXggY3Jl
YXRlUGx1Z2luKCkgdGVzdHMgaW4gdHN0X3F3ZWJwYWdlIHRvIG1hdGNoIGJlaGF2aW91ciBvZiBR
dCBwbHVnaW5zCisgICAgICAgICAgICAgd2hlbiBQbHVnaW5zRW5hYmxlZCBpcyBmYWxzZS4KKwor
ICAgICAgICB0c3RfcXdlYnBhZ2Ugc2hvdWxkIGhhdmUgYmVlbiB1cGRhdGVkIGFzIHBhcnQgb2Yg
cjU2NjYyLgorICAgICAgICAoU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMjE5NikKKworICAgICAgICBVcGRhdGVkIGRvY3VtZW50YXRpb24gb2YgUVdlYlBhZ2U6
OmNyZWF0ZVBsdWdpbiBhbmQgUVdlYlNldHRpbmc6OnBsdWdpbnNFbmFibGVkCisgICAgICAgICAg
ICB0byBtYXRjaCB0aGUgbmV3IGJlaGF2aW91ci4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6IFVwZGF0ZSBkb2NzLgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOiBVcGRhdGUg
ZG9jcy4KKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoY3JlYXRlUGx1Z2luKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y3JlYXRlUGx1Z2luV2l0
aFBsdWdpbnNFbmFibGVkKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y3JlYXRlUGx1Z2luV2l0
aFBsdWdpbnNEaXNhYmxlZCk6CisKKzIwMTAtMDQtMjIgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKwor
ICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBh
cmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQg
b2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAg
bm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3
aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFu
Z2VUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
OgorCisyMDEwLTA0LTIyICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CisKKyAgICAgICAgW1F0XSBSZW1vdmUgdHJhbnNsYXRhYmxlIHN0cmluZ3MgZnJvbSB0aGUgaHli
cmlkUGl4bWFwIHRlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNzg2NworCisgICAgICAgICogdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC51aToK
KworMjAxMC0wNC0yMiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgor
CisgICAgICAgIFtRdF0gRml4IGF1dG90ZXN0cyAucXJjIGZpbGUgcGF0aHMgd2hlbiBidWlsdCBp
biBRdC4KKworICAgICAgICBDb21waWxpbmcgYXV0by10ZXN0cyBmcm9tIHF0L3Rlc3RzL2F1dG8v
cXdlYiogcHJvZHVjZWQKKyAgICAgICAgZmFpbGluZyB0ZXN0cyBzaW5jZSB0aGVzZSAucHJvIGZp
bGVzIGluY2x1ZGUgdGhlCisgICAgICAgIG9uZXMgaW4gV2ViS2l0L3F0L3Rlc3RzIGFuZCB0aGUg
LnFyYyBmaWxlIHdhcworICAgICAgICBub3QgYWRkZWQgdG8gUkVTT1VSQ0VTCisKKyAgICAgICAg
KiB0ZXN0cy9iZW5jaG1hcmtzL2xvYWRpbmcvbG9hZGluZy5wcm86CisgICAgICAgICogdGVzdHMv
YmVuY2htYXJrcy9wYWludGluZy9wYWludGluZy5wcm86CisgICAgICAgICogdGVzdHMvcWdyYXBo
aWNzd2Vidmlldy9xZ3JhcGhpY3N3ZWJ2aWV3LnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxl
bWVudC9xd2ViZWxlbWVudC5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3F3ZWJmcmFt
ZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnkvcXdlYmhpc3RvcnkucHJvOgorICAg
ICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLnBy
bzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViaW5zcGVjdG9yL3F3ZWJpbnNwZWN0b3IucHJvOgorICAg
ICAgICAqIHRlc3RzL3F3ZWJwYWdlL3F3ZWJwYWdlLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGx1Z2luZGF0YWJhc2UvcXdlYnBsdWdpbmRhdGFiYXNlLnBybzoKKyAgICAgICAgKiB0ZXN0cy9x
d2Vidmlldy9xd2Vidmlldy5wcm86CisgICAgICAgICogdGVzdHMvdGVzdHMucHJpOgorCisyMDEw
LTA0LTIyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjU4MDY5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC81ODA2OQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc3NTEKKworICAgICAgICBCcm9rZSBjb21waWxlIG9uIFdpbmRvd3MuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMTAtMDQtMjIg
IEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjb250cm9sbGluZyBj
bGlwYm9hcmQgYWNjZXNzIGZyb20gamF2YXNjcmlwdC4KKyAgICAgICAgQ2xpcGJvYXJkIGFjY2Vz
cyBmcm9tIGphdmFzY3JpcHQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NzUxCisKKyAgICAgICAgKiBBcGkv
cXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMTAtMDQtMjEgIEplc3VzIFNhbmNo
ZXotUGFsZW5jaWEgIDxqZXN1c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEFkZCBQYWdlQ2xpZW50UVdpZGdl
dCBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiB0aGUgb2xkCisgICAgICAgIFFXZWJQYWdlV2lkZ2V0
Q2xpZW50IHRvIFBhZ2VDbGllbnRRdCBmaWxlcy4gQWxzbyBmaXgKKyAgICAgICAgUVdlYlBhZ2U6
OnNldFZpZXcoKSB0byB1c2UgUGFnZUNsaWVudFFXaWRnZXQuCisKKyAgICAgICAgW1F0XSBQYWdl
Q2xpZW50UXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZm9yIFFXaWRnZXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3ODU4CisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXcpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xp
ZW50UVdpZGdldDo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0
OjpzZXRJbnB1dE1ldGhvZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFX
aWRnZXQ6OmlucHV0TWV0aG9kRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50
UVdpZGdldDo6c2V0SW5wdXRNZXRob2RIaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGll
bnRRV2lkZ2V0OjpjdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6
OnVwZGF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6cGFs
ZXR0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c2NyZWVuTnVtYmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0Ojpvd25lcldpZGdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6Z2VvbWV0cnlSZWxhdGl2ZVRvT3du
ZXJXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFXaWRnZXQ6OnBsdWdpblBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c3R5bGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDbGllbnRRV2lkZ2V0OjpQYWdlQ2xpZW50UVdpZGdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6aXNRV2lkZ2V0Q2xpZW50KToKKworMjAxMC0wNC0y
MSAgSmFrdWIgV2llY3pvcmVrICA8andpZWN6b3Jla0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIExpc3QgaXRlbSBtYXJrZXJzIGFyZSBu
b3QgYWx3YXlzIHVwZGF0ZWQgYWZ0ZXIgY2hhbmdlcyBpbiB0aGUgRE9NLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwNjAKKworICAgICAgICAqIEFw
aS9xd2ViZWxlbWVudC5oOiBNYWtlIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0IGEgZnJpZW5kIGNs
YXNzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0pOiBBZGQgYSBwcml2YXRlIEFQSSB0byBnZXQgdGhlIG1hcmtlciB0ZXh0IGZvciBhIGxpc3Qg
aXRlbS4KKworMjAxMC0wNC0yMSAgWWkgU2hlbiAgPHlpLjQuc2hlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBDaGVjayB0
aGUgcmVxdWVzdCBlbXB0eSBvciBub3QgaW4gQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdygp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzgyMQor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisKKzIwMTAtMDQtMjEgIFNo
dSBDaGFuZyAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBGaXggU3ltYmlhbiBidWlsZCB3aGVyZSBRVF9O
T19TWVNURU1UUkFZSUNPTiBpcyBkZWZpbmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc0NDIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpzaG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdC5oOgorCisyMDEwLTA0LTIxICBFcmljIFNlaWRlbCAgPGVy
aWNAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNTc5NjMu
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzU3OTYzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc1OQorCisgICAgICAg
IFRocmVlIHRlc3RzIHN0YXJ0ZWQgY3Jhc2hpbmcgb24gdGhlIFF0IGJvdC4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCisyMDEwLTA0LTIxICBZaSBT
aGVuICA8eWkuNC5zaGVuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBpbnRlcmZh
Y2U6IGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NTkKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8pOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTAtMDQt
MjEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgW1F0XSBGaXggb3IgcmVtb3Zl
IHRoZSBydW50aW1lIGZsYWcgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczMTMKKworICAgICAgICBU
aGlzIGxldHMgdGhlIFFXZWJQYWdlQ2xpZW50ICJ2ZXRvIiB0aGUgc2V0dGluZ3MgdmFsdWUgZm9y
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgorICAgICAgICBJbiB0aGlzIGNhc2Ugd2UgYWxsb3cg
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgb25seSBvbiBRR3JhcGhpY3NXZWJWaWV3LgorCisgICAg
ICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmll
d1ByaXZhdGU6OmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OjphbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDEwLTA0LTIwICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0VXJsKToKKwor
MjAxMC0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEZhY3RvciBEb2N1bWVudFdyaXRlciBv
dXQgb2YgRnJhbWVMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM3MTc1CisKKyAgICAgICAgVXBkYXRlIHRoZXNlIGNhbGxzaXRlcyBiZWNhdXNl
IHRoZSBtZXRob2QgbW92ZWQgdG8gRG9jdW1lbnRXcml0ZXIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpzZXRNYWluRG9jdW1lbnRFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgorCisyMDEwLTA0
LTIwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBDaGFuZ2UgYSBwYXJhbWV0ZXIgdHlwZSBvZiBj
aG9vc2VJY29uRm9yRmlsZXMoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzc1MDQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjaG9vc2VJY29uRm9y
RmlsZXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIw
MTAtMDQtMTkgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEZp
eCBjb21waWxhdGlvbiBhZ2FpbnN0IG5hbWVzcGFjZWQgUXQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFs
bGJhY2tXZWJQb3B1cC5oOgorCisyMDEwLTA0LTE4ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBbUXRdIEFkZCBzdXBwb3J0IGZvciBMYXlvdXRUZXN0Q29udHJvbGxlciBjb21tYW5kczoKKyAg
ICAgICAgICAgICAgICAgICBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQKKyAgICAgICAgICAg
ICAgICAgICBzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkCisgICAgICAgICAgICAg
ICAgICAgZXhlY0NvbW1hbmQKKyAgICAgICAgICAgICAgICAgICBpc0NvbW1hbmRFbmFibGVkCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODQ0CisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpR
V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNl
RW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXhlY3V0ZUNvcmVD
b21tYW5kQnlOYW1lKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc0NvbW1h
bmRFbmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnRvZ2dsZVNtYXJ0SW5zZXJ0RGVs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0Lmg6CisKKzIwMTAtMDQtMTUgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFtRdF0gTWFyayBRV2ViRnJhbWU6Om92ZXJsb2FkZWRTbG90cyBhdXRvdGVzdCBhcyBl
eHBlY3RlZCBmYWlsdXJlCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM3MzE5CisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFt
ZS5jcHA6CisKKzIwMTAtMDQtMDkgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbiBhbmQgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBSRUdSRVNTSU9OKHI1NjU1Mik6IEJyb2tlbiBzY3JvbGxi
YXJzIHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2ODUzCisKKyAgICAgICAgVGhlIHJlZ3Jlc3Npb24gd2FzIGNhdXNlZCBieSByNTY1NTIsIHdo
aWNoIGludHJvZHVjZWQgYSBmaXggdG8gYnVnCisgICAgICAgIHdlYmtpdC5vcmcvYi8yMTMwMC4g
VGhlIGJ1ZyBzb2x2ZWQgYW4gaXNzdWUgd2l0aCB0aGUgcmVzaXplIGhhbmRsZSBvbiBtYWMsCisg
ICAgICAgIGJ1dCBkaWQgaXQgaW4gYSB3YXkgdGhhdCBhZmZlY3RlZCBhbGwgUXQgcGxhdGZvcm1z
IGFuZCB0aHVzIGJyb2tlIHRoZSBiZWhhdmlvcgorICAgICAgICBvbiBub24tbWFjIHBsYXRmb3Jt
cy4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBtYWMgc3BlY2lmaWMgY2hhbmdlIGlm
ZGVmJ2VkIGFuZCBvbmx5IGFwcGxpZWQgZm9yIHRoZSBtYWMKKyAgICAgICAgcGxhdGZvcm0uCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6d2luZG93UmVzaXplclJlY3QpOgorCisyMDEwLTA0LTE1
ICBCcnVubyBTY2htaWR0ICA8YnJ1bm8uc2NobWlkdEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBOdWxs
IFFPYmplY3RzIHByb3BlcnRpZXMgY2F1c2UgU2VnbWVudGF0aW9uIEZhdWx0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDczMAorCisgICAgICAgIFFP
YmplY3RzIGV4cG9ydGVkIHRvIHRoZSBRV2Via2l0IGphdmFzY3JpcHQgd2l0aCBwcm9wZXJ0aWVz
IHRoYXQgYXJlCisgICAgICAgIGEgbnVsbCAiUU9iamVjdCoiIGNhdXNlIFNlZ21lbnRhdGlvbiBG
YXVsdC4KKworICAgICAgICBJZiBhbiBRT2JqZWN0IGlzIGFkZGVkIHRvIHRoZSBqYXZhc2NyaXB0
IGNvbnRleHQgYW5kIGl0IGNvbnRhaW5zCisgICAgICAgIHByb3BlcnRpZXMgb2YgdGhlIHR5cGUg
UU9iamVjdCogd2l0aCBOVUxMIHZhbHVlLCBjYWxsaW5nIHRoZSBwcm9wZXJ0eQorICAgICAgICBj
YXVzZXMgU2VnbWVudGF0aW9uIEZhdWx0LgorCisgICAgICAgIEZvbGxvdyB0aGUgdGVzdHMgZm9y
IHRoZSBjb3JyZWN0aW9ucyBkb25lIG92ZXIgV2ViQ29yZS4KKworICAgICAgICAqIHRlc3RzL3F3
ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKE15UU9iamVjdDo6TXlRT2JqZWN0
KTogaW5pdCB0aGUgZmllbGQgbV9vYmplY3RTdGFyCisgICAgICAgIChNeVFPYmplY3Q6Om9iamVj
dFN0YXJQcm9wZXJ0eSk6IHJlYWQgdGhlIE9iamVjdCogcHJvcAorICAgICAgICAoTXlRT2JqZWN0
OjpzZXRPYmplY3RTdGFyUHJvcGVydHkpOiB3cml0ZSB0aGUgT2JqZWN0KiBwcm9wCisgICAgICAg
ICh0c3RfUVdlYkZyYW1lOjpnZXRTZXRTdGF0aWNQcm9wZXJ0eSk6IG5ldyB0ZXN0cyBmb3IgdGhl
IG5ldyBwcm9wCisKKzIwMTAtMDQtMTQgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4uCisKKyAgICAgICAgQ2hhbmdpbmcgdmlldyBtb2RlIG5hbWVzIGR1ZSB0byBzcGVjaWZp
Y2F0aW9uIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3NjE1CisKKyAgICAgICAgdGVzdDogZmFzdC9tZWRpYS9tZWRpYS1mZWF0dXJlLXdn
dC12aWV3LW1vZGUuaHRtbAorCisgICAgICAgIHNwZWNpZmljYXRpb246IGh0dHA6Ly9kZXYudzMu
b3JnLzIwMDYvd2FmL3dpZGdldHMtdm1tZi8KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojppc1dp
bmRvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojppc0Z1bGxzY3JlZW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmlzTWF4aW1pemVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojppc01pbmltaXplZCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAxMC0wNC0xNCAgTHVpeiBBZ29zdGlu
aSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIE1vdmluZyBzZXRWaWV3TW9kZSBmcm9tIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0IHRvIHF3ZWJwYWdlLmNwcAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2MjIKKworICAgICAgICBNZXRob2QgcXRf
d3J0X3NldFZpZXdNb2RlIHdhcyByZW1vdmVkIGZyb20gcXdlYnBhZ2UuY3BwIGJ5IG1pc3Rha2Ug
aW4gcjU3NDMzCisgICAgICAgIChidWcgMzU4NDQpLiBNb3ZpbmcgaXQgYmFjay4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChxdF93cnRfc2V0Vmlld01vZGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNZWRpYVR5cGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKKzIwMTAtMDQtMTQgIEFu
ZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFJlbmRlcmlu
ZyBhcnRpZmFjdHMgb24gUXQgcGx1Z2lucyB3aGVuIHNjcm9sbGluZyB0aGUgcGFnZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxNTIKKworICAgICAg
ICBCZWNhdXNlIHdlIG5vIGxvbmdlciByZXBhaW50IHRoZSBlbnRpcmUgdmlld3BvcnQgb24gc2Ny
b2xsLAorICAgICAgICB3ZSBtdXN0IHRyaWdnZXIgYSByZXBhaW50IG9mIFF0UGx1Z2luV2lkZ2V0
cyB3aGVuIHRoZWlyIGdlb21ldHJ5IGNoYW5nZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKworMjAxMC0wNC0xNCAgQWFyb24gQm9vZG1hbiAg
PGFhQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KKwor
ICAgICAgICBTdXBwb3J0IHJlbGF0aXZlIFVSTHMgZm9yIG5vdGlmaWNhdGlvbnMgb24gQ2hyb21p
dW0uIFRoZXkgd2VyZW4ndCB3b3JraW5nIHByZXZpb3VzbHkgYmVjYXVzZSBXZWJDb3JlIHdhcyBp
bnNlcnRpbmcKKyAgICAgICAgdGhlIHJlbGF0aXZlIFVSTCBpbnRvIGEgS1VSTCBpbnN0YW5jZSwg
YnV0IHdoZW4gS1VSTCBpcyBiYWNrZWQgYnkgR1VSTCBhcyBpdCBpcyBvbiBDaHJvbWl1bSwgcmVs
YXRpdmUgVVJMcyBhcmUKKyAgICAgICAgdW5zdXBwb3J0ZWQuIEZpeGVkIGJ5IHJlc29sdmluZyB0
aGUgcmVsYXRpdmUgVVJMIGZpcnN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNjYyMworCisgICAgICAgIEFkZGluZyB0ZXN0cyBmb3IgdGhpcyBp
cyBkaWZmaWN1bHQgYmVjYXVzZSB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBEUlQgc3VwcG9ydCBm
b3Igbm90aWZpY2F0aW9ucyBvbiBNYWMsIG9ubHkgV2luZG93cy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzaG93KTogUmV0dXJuIHR5cGUgb2YgTm90aWZp
Y2F0aW9uQ29udGVudHM6Omljb25VUkwoKSBjaGFuZ2VkLgorCisyMDEwLTA0LTEzICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2VjdXJpdHlP
cmlnaW46OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4gdG8gYWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkuCisgICAgICAgIEFuZCBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3RzIHRvIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cy4KKworICAgICAgICBTZWN1
cml0eU9yaWdpbiBuZWVkcyBhIHdheSB0byByZW1vdmUgaW5kaXZpZHVhbCBPcmlnaW5BY2Nlc3NF
bnRyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzQ0OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKToKKwor
MjAxMC0wNC0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjU3NDY4LgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC81NzQ2OAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc0MzMKKworICAgICAgICBCcm9rZSB0aGUgd29ybGQu
Li4gIE11c3QgaGF2ZSBhcHBsaWVkIHRoZSBwYXRjaCB3cm9uZworICAgICAgICAoUmVxdWVzdGVk
IGJ5IGFiYXJ0aCBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisKKzIwMTAtMDQtMTEgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KKworICAgICAgICBGYWN0b3IgRG9jdW1lbnRXcml0ZXIgb3V0IG9mIEZyYW1lTG9hZGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3NQorCisg
ICAgICAgIFVwZGF0ZSB0aGVzZSBjYWxsc2l0ZXMgYmVjYXVzZSB0aGUgbWV0aG9kIG1vdmVkIHRv
IERvY3VtZW50V3JpdGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5p
c2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0
TWFpbkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKworMjAxMC0wNC0xMSAgUm9iZXJ0IEhvZ2FuICA8
cm9iZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgW1F0XSBBZGQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwgYW5kIHNl
dFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDEwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKHF0X3NldF93aWxsX3NlbmRfcmVxdWVz
dF9yZXR1cm5zX251bGwpOgorICAgICAgICAocXRfc2V0X3dpbGxfc2VuZF9yZXF1ZXN0X2NsZWFy
X2hlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hXaWxsU2VuZFJlcXVlc3QpOgorCisyMDEwLTA0LTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbi4KKworICAgICAgICBSZWZhY3RvciBRdCBEUlQgc3VwcG9ydCBpbiBRdFdlYktpdAorCisg
ICAgICAgIE1vdmUgYWxsIFFUIERSVCBzdXBwb3J0IGZ1bmN0aW9ucyB0byBhIHN0YXRpYyBjbGFz
cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU4
NDQKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOiBSZW1vdmUgc3RhdGljIGZ1bmN0aW9u
cy4KKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6IE1ha2UgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQgYSBmcmllbmQuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDogUmVtb3ZlIHN0YXRpYyBm
dW5jdGlvbnMuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6IE1ha2UgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQgYSBmcmllbmQuCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6
IFJlbW92ZSBzdGF0aWMgZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDogQWRkZWQuCisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQpOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6On5EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndvcmtlclRocmVhZENvdW50KToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1l
KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJQYWdlR3JvdXBOYW1lKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJJbnNwZWN0b3JFeGVjdXRlU2Ny
aXB0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJJbnNwZWN0b3JDbG9z
ZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yU2hvdyk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VGltZWxpbmVQcm9maWxpbmdF
bmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpoYXNEb2N1bWVudEVs
ZW1lbnQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYXVz
ZUFuaW1hdGlvbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGF1c2VUcmFu
c2l0aW9uT2ZQcm9wZXJ0eSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGF1
c2VTVkdBbmltYXRpb24pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJl
ck9mQWN0aXZlQW5pbWF0aW9ucyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
Y2xlYXJGcmFtZU5hbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmphdmFT
Y3JpcHRPYmplY3RzQ291bnQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omdh
cmJhZ2VDb2xsZWN0b3JDb2xsZWN0KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKToKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndoaXRlTGlzdEFj
Y2Vzc0Zyb21PcmlnaW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSk6CisgICAgICAgIChE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1lZGlhVHlwZSk6CisgICAgICAgIChEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Vmlld01vZGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bXVsdGlwbGVQYWdlR3JvdXBzQW5k
TG9jYWxTdG9yYWdlKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzVGV4dEZv
cm1hdCk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5kaW5nc1J1bnRpbWVPYmpl
Y3RzRnJvbUNvbGxlY3Rvcik6CisKKzIwMTAtMDQtMTEgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAg
ICAgIFtRdF0gVXBkYXRlIGxheW91dFRlc3RDb250cm9sbGVyLkR1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MgdG8gbWF0Y2ggb3RoZXIgcG9ydHMuCisKKyAgICAgICAgVW5za2lwICBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2Fib3J0LXNob3VsZC1jYW5jZWwtbG9hZC5odG1sCisgICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy9taXNjL3dpbGwtc2VuZC1yZXF1ZXN0LXJldHVybnMtbnVsbC1vbi1y
ZWRpcmVjdC5odG1sCisgICAgICAgICAgICAgICAgZmFzdC9sb2FkZXIvdXNlci1zdHlsZS1zaGVl
dC1yZXNvdXJjZS1sb2FkLWNhbGxiYWNrcy5odG1sCisgICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9taXNjL3dpbmRvdy1kb3Qtc3RvcC5odG1sCisgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55LW1ldGEtdGFnLXBhcmVu
dC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCisgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1kZW55Lmh0bWwKKyAgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L1hGcmFtZU9wdGlvbnMveC1mcmFtZS1vcHRpb25zLXBh
cmVudC1zYW1lLW9yaWdpbi1hbGxvdy5odG1sCisgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9YRnJhbWVPcHRpb25zL3gtZnJhbWUtb3B0aW9ucy1wYXJlbnQtc2FtZS1vcmlnaW4t
ZGVueS5odG1sCisgICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9y
dC1zaG91bGQtY2FuY2VsLWxvYWQuaHRtbAorCisgICAgICAgIFFOZXR3b3JrUmVwbHk6Ok9wZXJh
dGlvbkNhbmNlbGVkRXJyb3IgaGFzIGEgdmFsdWUgb2YgNSwgc28gdXBkYXRlIGV4cGVjdGVkIHJl
c3VsdHMgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3MjM3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKHF0X3NldF93aWxsX3NlbmRfcmVxdWVzdF9yZXR1cm5z
X251bGxfb25fcmVkaXJlY3QpOgorICAgICAgICAoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgorCisyMDEw
LTA0LTEwICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBb
UXRdIEltcGxlbWVudCBEZXNrdG9wIE5vdGlmaWNhdGlvbnMgQVBJIGZvciBRdFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU1MDMKKworICAg
ICAgICBNYXAgV2ViS2l0IG5vdGlmaWNhdGlvbnMgdG8gUXQncyBTeXN0ZW1UcmF5IEFQSSBhbmQK
KyAgICAgICAgaW1wbGVtZW50IERSVCB0cmFjaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9l
cyBub3QgaW1wbGVtZW50IHRoZSBzZWN1cml0eSBwYXJ0IG9mCisgICAgICAgIFdlYktpdCBub3Rp
ZmljYXRpb25zLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpub3Rp
ZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHF0X2R1bXBfbm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdCk6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hvdyk6
CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Y2FuY2VsKToKKyAgICAg
ICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25PYmplY3REZXN0
cm95ZWQpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlcXVlc3RQ
ZXJtaXNzaW9uKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjaGVj
a1Blcm1pc3Npb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0Lmg6IEFkZGVkLgorCisyMDEwLTA0LTA5ICBUYXN1a3UgU3V6dWtpICA8dGFz
dWt1LnN1enVraUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgW1F0XUZpeCBjb21waWxlIGVycm9yIHdpdGggUVRfTk9fSU0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTMzCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OmhpZGVQb3B1cCk6CisKKzIwMTAtMDQtMDkg
IFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gdHN0X1FXZWJGcmFtZTo6
cG9wdXBGb2N1cygpIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzMyMAorCisgICAgICAgIFRoZSBRV2ViUG9wdXAgY2xhc3MgaGFzIGJlZW4g
bW92ZWQgJiByZW5hbWVkLCBzbyB0c3RfUVdlYkZyYW1lOjpwb3B1cEZvY3VzKCkgc2hvdWxkIHVz
ZQorICAgICAgICB0aGUgY2xhc3MgbmFtZSAiUUNvbWJvQm94IiwgcmF0aGVyIHRoYW4gIldlYkNv
cmU6OlFXZWJQb3B1cCIgdG8gZmluZCB0aGUgcG9wdXAgbWVudS4KKworICAgICAgICAqIHRlc3Rz
L3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAxMC0wNC0wOSAgQW50b25pbyBHb21l
cyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBG
cmV5dGhlci4KKworICAgICAgICBSZW1vdmluZyB0aGUgdXNlIG9mIHRvcExldmVsV2lkZ2V0IG9m
IFFXaWRnZXQgY2xhc3Mgc2luY2UgaXQgaXMgZGVwcmVjYXRlZC9vYnNvbGV0ZQorICAgICAgICBz
aW5jZSBRdCA0LjUuIHdpbmRvdygpIG1ldGhvZCBpcyBiZWluZyB1c2VkIGluc3RlYWQgbm93Lgor
CisgICAgICAgIFNlZSBodHRwOi8vZG9jLnRyb2xsdGVjaC5jb20vNC41L3F3aWRnZXQtb2Jzb2xl
dGUuaHRtbCN0b3BMZXZlbFdpZGdldCBmb3IgbW9yZSBpbmZvLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OndpbmRvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNo
b3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OndpbmRvd1Jlc2l6ZXJSZWN0
KToKKworMjAxMC0wNC0wOSAgVGFzdWt1IFN1enVraSAgPHRhc3VrdS5zdXp1a2lAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0g
Rml4IGNvbXBpbGUgZXJyb3Igd2l0aCBRVF9OT19BQ1RJT04KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTI5CisKKyAgICAgICAgTWFrZSBzdXJlIFFU
X05PX0FDVElPTiBpcyBub3QgZGVmaW5lZCB0byB1c2UgUUFjdGlvbgorCisgICAgICAgICogQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFnZUFj
dGlvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6dXBkYXRlQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRl
cGVuZGVudEFjdGlvbnMpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFw
aS9xd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisKKzIwMTAtMDQtMDkg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IExhcnMgS25vbGwuCisKKyAgICAgICAgW1F0XSB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2
aWV3IGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzMxNworCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
Ojp1c2VyQWdlbnRGb3JVcmwpOiBEb24ndCBjcmFzaCBpZiB0aGUgb3duZXJXaWRnZXQgaXMgbnVs
bC4KKworMjAxMC0wNC0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
IFtRdF0gV2FybmluZ3Mgd2hlbiBjb21waWxpbmcgSW5zcGVjdG9yQ2xpZW50UXQuY3BwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzI2NgorCisgICAg
ICAgIEFkZCBhIGRlZmF1bHQ6IGZvciB0aGUgc3dpdGNoKCktY2FzZSB0byBhdm9pZAorICAgICAg
ICB3YXJuaW5ncy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhbnRUb1NldHRpbmcpOgorCisyMDEwLTA0LTAx
ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgSHlhdHQuCisKKyAgICAgICAgW1F0XSBSRUdSRVNTSU9OOihyNTA2NjUpIFFX
ZWJGcmFtZTo6c2V0U2Nyb2xsQmFyUG9saWN5KFF0OjpWZXJ0aWNhbCxRdDo6U2Nyb2xsQmFyQWx3
YXlzT2ZmKSBoYXMgbm8gZWZmZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mjk0MzEKKworICAgICAgICBNYWtlIHVzZSBvZiB0aGUgbmV3IGxvY2sg
cGFyYW1ldGVyIG9mIHNldHtWZXJ0aWNhbCxIb3Jpem9udGFsfVNjcm9sbGJhck1vZGUuCisKKyAg
ICAgICAgQWx3YXlzIGFkZGVkIGEgcXQgYXV0byB0ZXN0IGZvciBzZXQgc2Nyb2xsYmFyIHBvbGlj
eSBmZWF0dXJlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWU6OnNldFNjcm9sbEJhclBvbGljeSk6CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3Rz
dF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSk6CisKKzIwMTAtMDQtMDggIEpvZSBMaWdtYW4gIDxqb3NlcGgubGln
bWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBbUXRdIFdlYktpdCBjcmFzaGVzIHdoaWxlIGlucHV0IHRleHQgdGhyb3VnaCBpbnB1
dCBtZXRob2QuCisgICAgICAgIFRoZSBmb3JtYXR0ZWQgdGV4dCB1bmRlcmxpbmUgcGFpbnRpbmcg
Y3Jhc2hlcyB3aGVuIHBhaW50aW5nIHdpdGggaW52YWxpZCBpbmRleGVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY4NzAKKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZl
bnQpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAg
ICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kc1RleHRGb3JtYXRfZGF0YSk6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kc1RleHRGb3JtYXQpOgorCisyMDEwLTA0LTA4ICBKb2Ug
TGlnbWFuICA8am9zZXBoLmxpZ21hbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBxdHdlYmtpdF93ZWJmcmFtZV9zY3JvbGxS
ZWN1cnNpdmVseSBzY3JvbGxzIHdoZW4gYm9keS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2NzQKKworICAg
ICAgICBUaGUgc2Nyb2xsaW5nIGNoZWNrIHdhcyBiYXNlZCBvbiB0aGUgZnJhbWV2aWV3J3Mgc2Ny
b2xsb2Zmc2V0LCBhbmQKKyAgICAgICAgbWF4aW11bVNjcm9sbFBvc2l0aW9uLCB3aGljaCBkb2Vz
IG5vdCBhY2tub3dsZWRnZSB0aGUgb3ZlcmZsb3cgcHJvcGVydGllcy4KKworICAgICAgICBJIGFt
IG5vdyBiYXNpbmcgdGhlIHNjcm9sbGluZyBvZmYgdGhlIHNjcm9sbGJhciBwb3NpdGlvbi4gVGhl
IHNjcm9sbGJhcnMgYXJlCisgICAgICAgIGFmZmVjdGVkIGJ5IHRoZSBvdmVyZmxvdyBwcm9wZXJ0
aWVzIGluZGljYXRpbmcgd2hlbiBub3QgdG8gc2Nyb2xsLiBUaGUgc2Nyb2xsYmFyCisgICAgICAg
IHBvc2l0aW9ucyBhbHNvIGNvbnRpbnVlIHRvIHdvcmsgZm9yIENTUyA6Oi13ZWJraXQtc2Nyb2xs
YmFyIHN0eWxlcy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAocXR3
ZWJraXRfd2ViZnJhbWVfc2Nyb2xsUmVjdXJzaXZlbHkpOgorCisyMDEwLTA0LTA3ICBBbmRyZXkg
S29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVy
eSBTZW1pa2hhdHNreS4KKworICAgICAgICBSZW1vdmVkIHJlZHVuZGFudCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTQ5CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMTAtMDQtMDcgIERhd2l0IEFs
ZW1heWVodSAgPGFkYXdpdEBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjgyNworCisgICAgICAgIFVwZGF0ZWQgdGhlIFdlYkNvcmU6OnNob3VsZFRyZWF0QXNBdHRh
Y2hlbWVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlCisgICAgICAgIG5ldyBtb3JlIGdlbmVyaWMg
cmVwbGFjZW1lbnQgV2ViQ29yZTo6Y29udGVudERpc3Bvc2l0aW9uVHlwZS4KKworICAgICAgICBT
ZWUgY29tbWVudHMgMzktNDIgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2Mzk1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorCisyMDEwLTA0LTA3ICBBbmRyZWFzIEtsaW5nICA8YW5k
cmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgW1F0XSBXaGVuIHByb3ZpZGluZyBhIHdpZGdldCBmb3IgdGhlIFBERiBt
aW1lIHR5cGUgaXQgd2lsbCBjYXVzZSBhIGNyYXNoCisKKyAgICAgICAgbV9wbHVnaW5WaWV3IG1h
eSBhY3R1YWxseSBiZSBhIFdpZGdldCAoZm9yIGVtYmVkZGVkIFF0IHdpZGdldHMpLAorICAgICAg
ICBzbyBhbHdheXMgY2hlY2sgaXNQbHVnaW5WaWV3KCkgYmVmb3JlIGNhbGxpbmcgUGx1Z2luVmll
dyBzcGVjaWZpYyBtZXRob2RzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTQ1MAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
c2V0TWFpbkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6Y29tbWl0dGVkTG9hZCk6CisKKzIwMTAtMDQtMDYgIERpZWdvIEdvbnphbGV6ICA8ZGll
Z28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBtZWNoYW5pc20gdG8gZGV0ZWN0IFF0V2ViS2l0
IDIuMCB2aWEgdGhlIHByZXByb2Nlc3NvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MzgKKworICAgICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6
CisKKzIwMTAtMDQtMDIgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFtRdF0gW1N5bWJpYW5dIFJlYmFzZWxpbmUgU3ltYmlhbiBkZWYgZmlsZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcwMzgKKworICAgICAg
ICBTd2l0Y2ggdGhlIG9yZGluYWwgbnVtYmVycyBmb3IgcXR3ZWJraXRfd2ViZnJhbWVfc2Nyb2xs
UmVjdXJzaXZlbHkKKyAgICAgICAgYW5kIFFXZWJJbnNwZWN0b3I6OmNsb3NlRXZlbnQgdG8gbWF0
Y2ggUXRXZWJraXQgNC42IGJyYW5jaAorCisgICAgICAgIEZpeCB0aGUgc2lnbmF0dXJlIGZvciBx
dF9kcnRfc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZAorICAgICAgICBhZnRlciByNTY3MTguCisK
KyAgICAgICAgQWRkIG5ldyBRdFdlYktpdCBBUEkgc3ltYm9scyBpbnRyb2R1Y2VkIG5vdCBsaXN0
ZWQgaW4gdGhlIGZpbGUgeWV0LgorCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5k
ZWY6CisKKzIwMTAtMDMtMzAgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgorCisgICAgICAgIFN0b3JlZCBmb2N1
c2VkIGZyYW1lIGFuZCBkb2N1bWVudCBpbiBhIHZhcnMsIGluc3RlYWQgb2YgcXVlcnlpbmcgZm9y
IHRoZW0gbWFueSB0aW1lcy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUHJlc3NFdmVudChRRXZlbnQqIGV2KSk6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUHJlc3NFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZl
bnQqIGV2KToKKworMjAxMC0wNC0wMiAgVGFzdWt1IFN1enVraSAgPHRhc3VrdS5zdXp1a2lAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtR
dF1GaXggY29tcGlsZSBlcnJvciB3aXRoIFFUX05PX1NFVFRJTkdTCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUzMworCisgICAgICAgIElmIFFUX05P
X1NFVFRJTkdTIGlzIGRlZmluZWQsIFFTZXR0aW5ncyBpcyBub3QgYXZhaWxhYmxlLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnBvcHVsYXRlU2V0dGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6c3RvcmVTZXR0aW5nKToKKworMjAxMC0wNC0wMiAgTHVp
eiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIE1hZW1v
NSB0aGVtZSAtIGN1c3RvbWl6ZWQgcG9wdXAgZm9yIDxzZWxlY3QgbXVsdGlwbGU+IGVsZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM2OAor
CisgICAgICAgIFVzaW5nIFF0TWFlbW9XZWJQb3B1cCBpbnN0ZWFkIG9mIFF0RmFsbGJhY2tXZWJQ
b3B1cCBmb3IgTWFlbW8uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9w
dXApOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpwb3B1bGF0ZSk6CisKKzIwMTAtMDQtMDEgIEplc3Vz
IFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEFk
ZCBTaW5nbGUgYW5kIE11bHRpcGxlIFNlbGVjdGlvbiBQb3B1cCBmb3IgTWFlbW8gNS4KKworICAg
ICAgICBbUXRdIE1hZW1vNSB0aGVtZSAtIHBvcHVwIGRpYWxvZ3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2Nzg5CisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdE1hZW1vV2ViUG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFlbW81UG9w
dXA6OnBvcHVsYXRlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNYWVtbzVQb3B1cDo6b25JdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpjcmVhdGVTaW5n
bGVTZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6OmNy
ZWF0ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6TWFlbW81U2lu
Z2xlU2VsZWN0aW9uUG9wdXA6Ok1hZW1vNVNpbmdsZVNlbGVjdGlvblBvcHVwKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11bHRpcGxlSXRlbUxpc3REZWxlZ2F0ZTo6TXVsdGlwbGVJdGVtTGlzdERlbGVn
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpcGxlSXRlbUxpc3REZWxlZ2F0ZTo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWFlbW81TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cDo6TWFlbW81
TXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRNYWVt
b1dlYlBvcHVwLmg6CisKKzIwMTAtMDMtMzEgIE1hcmN1cyBCdWxhY2ggIDxidWxhY2hAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBB
ZGRzIEdlb2xvY2F0aW9uIHBhcmFtIGZvciBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Rm9yRnJhbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTAzMQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjYW5jZWxHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0Rm9yRnJhbWUpOgorCisyMDEwLTAzLTMxICBBbnR0aSBLb2l2aXN0byAgPGtv
aXZpc3RvQGlraS5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzY0NDYKKyAgICAgICAgW1F0XSBRV2ViU2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0b3JlRW5h
YmxlZCBhdHRyaWJ1dGUgbGFja3MgZG9jdW1lbnRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZQorCisg
ICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAqIEFwaS9xd2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorCisyMDEw
LTAzLTMwICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAg
ICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjg2NgorICAgICAgICBNb3ZlIENTdHJpbmcg
dG8gV1RGCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorCisyMDEwLTAzLTMwICBK
b2UgTGlnbWFuICA8am9zZXBoLmxpZ21hbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBRR3JhcGhpY3NT
Y2VuZSBtb3VzZVByZXNzRXZlbnQgZG9lcyBub3Qgc2V0IHRoZSBjbGlja0NhdXNlZEZvY3VzIGZs
YWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjU5
CisKKyAgICAgICAgVGhlIGNsaWNrQ2F1c2VkRm9jdXMgZmxhZyBpcyBub3QgYmVpbmcgc2V0IGlu
IG1ldGhvZAorICAgICAgICBtb3VzZVByZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50
KiBldikuIFRoaXMgZmxhZyBpcyB1c2VkIAorICAgICAgICBpbiBjb25qdW5jdGlvbiB3aXRoIFFT
dHlsZTo6UlNJUF9Pbk1vdXNlQ2xpY2tBbmRBbHJlYWR5Rm9jdXNlZCB3aGVuCisgICAgICAgIGRl
Y2lkaW5nIHRvIGxhdW5jaCB0aGUgc29mdHdhcmUgaW5wdXQgcGFuZWwuCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZl
bnQpOgorCisyMDEwLTAzLTMwICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIFtRdF0gTWFlbW81IHRoZW1lIC0gUXRNYWVtb1dlYlBvcHVwIGNsYXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjc5MAorCisg
ICAgICAgIEEgbmV3IFF0QWJzdHJhY3RXZWJQb3B1cCBkZXNjZW5kYW50IGNsYXNzIHRvIGJlIHVz
ZWQgZm9yIG1hZW1vIG1lbnUgbGlzdHMuCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAu
IFRoZSBuZXh0IHN0ZXAgd2lsbCBiZSB0aGUgZGlhbG9ncyBpbXBsZW1lbnRhdGlvbiB0aGF0Cisg
ICAgICAgIHdpbGwgY29tZSBpbiBidWcgMzY3ODkgYW5kIGZpbmFsbHkgdG8gdXNlIFF0TWFlbW9X
ZWJQb3B1cCBpbnN0ZWFkIG9mIFF0RmFsbGJhY2tXZWJQb3B1cAorICAgICAgICB0aGF0IHdpbGwg
Y29tZSBpbiBidWcgMzYzNjguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdE1hZW1vV2Vi
UG9wdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlF0TWFlbW9XZWJQb3B1cDo6UXRN
YWVtb1dlYlBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0TWFlbW9XZWJQb3B1cDo6flF0TWFl
bW9XZWJQb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6OmNyZWF0ZVNp
bmdsZVNlbGVjdGlvblBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0TWFlbW9XZWJQb3B1cDo6
Y3JlYXRlTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1v
V2ViUG9wdXA6OmNyZWF0ZVBvcHVwKToKKyAgICAgICAgKFdlYkNvcmU6OlF0TWFlbW9XZWJQb3B1
cDo6c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6OmhpZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UXRNYWVtb1dlYlBvcHVwOjpwb3B1cENsb3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpRdE1hZW1vV2ViUG9wdXA6Oml0ZW1DbGlja2VkKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdE1hZW1vV2ViUG9wdXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNYWVt
bzVQb3B1cDo6TWFlbW81UG9wdXApOgorCisyMDEwLTAzLTI5ICBEYXdpdCBBbGVtYXllaHUgIDxh
ZGF3aXRAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBbUXRdIEFkZGVkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHRoZSBIVFRQICJDb250ZW50
LURpc3Bvc2l0aW9uIiBoZWFkZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM2Mzk1CisKKyAgICAgICAgV2hlbmV2ZXIgYSBzZXJ2ZXIgcmVzcG9u
c2UgY29udGFpbnMgYSAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudC4uLiIgaGVhZGVy
LCAKKyAgICAgICAgdHJlYXQgdGhlIHJlcXVlc3QgYXMgYSBkb3dubG9hZCBhbmQgZW1pdCB0aGUg
dW5zdXBwb3J0ZWRDb250ZW50IHNpZ25hbC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVU
eXBlKToKKworMjAxMC0wMy0yMiAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRo
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBXaWRnZXRzIDEuMDogVmlldyBNb2RlIE1lZGlhIEZlYXR1cmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1NDQ2CisK
KyAgICAgICAgQWRkIGFuIGludGVybmFsIFF0IEFQSSBmb3IgY2hhbmdpbmcgdGhlIHZpZXcgbW9k
ZSBtZWRpYSBmZWF0dXJlCisgICAgICAgIChodHRwOi8vd3d3LnczLm9yZy9UUi93aWRnZXRzLXZt
bWYvKS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChxdF93cnRfc2V0
Vmlld01vZGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpwcml2KToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojppc0RvY2tlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6aXNGbG9hdGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6aXNBcHBsaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5oOgorCisyMDEwLTAzLTI5ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
biAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KKworICAgICAgICBVc2UgJ01vYmlsZSBTYWZhcmknIGluc3RlYWQgb2YgJ1NhZmFyaScg
b24gbW9iaWxlIFF0IHBsYXRmb3Jtcy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKworMjAxMC0wMy0yOSAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIHVuaXQgdGVzdHMgZG9uJ3QgY29t
cGlsZSBpbnNpZGUgb2YgUXQKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzY3NTYKKworICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaTogRG9uJ3QgZG8g
dGhlIHRhcmdldCBzdWJzdGl0dXRpb24gaW5zaWRlIFF0IGFuZCBmaW5kIHRoZSBzb3VyY2VzCisg
ICAgICAgIHRocm91Z2ggVlBBVEggaW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBsb2NhdGlvbiBv
ZiB0aGUgLnBybyBmaWxlIGV4Y2x1c2l2ZWx5LgorCisyMDEwLTAzLTI2ICBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBDaGFuZ2UgZHVlIHRvIHJlbmFtaW5nIG9mIGZy
YW1lIGZsYXR0ZW5pbmcgc2V0dGluZy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChxdF9kcnRfc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6
CisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTAtMDMtMjggIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgQnVpbGQgZml4LiBJ
bmNsdWRlIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW5zdGVhZCBvZiBLZXlib2FyZENvZGVzLmgu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisKKzIwMTAt
MDMtMjYgIE9saXZpZXIgR29mZmFydCAgPG9nb2ZmYXJ0QHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBDb21waWxlIHdp
dGggUVRfVVNFX0ZBU1RfT1BFUkFUT1JfUExVUworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
UXQ6OnBvcHVsYXRlU2V0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRR
dDo6c3RvcmVTZXR0aW5nKToKKworMjAxMC0wMy0yNiAgRGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFtRdF0gRG9jOiBTaW1wbGlmaWVkIENvbW1lcmNpYWwgRWRpdGlvbnMgZm9yIFF0IDQu
Ny4KKworICAgICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKworMjAxMC0wMy0yNiAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgU3ltYmlhbiBi
dWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBVcGRhdGVkIHRoZSBkZWYgZmlsZSB3aXRoIG5ldyBl
eHBvcnRzIHVzZWQgYnkgUXRMYXVuY2hlci4KKworICAgICAgICAqIHN5bWJpYW4vZWFiaS9RdFdl
YktpdHUuZGVmOgorCisyMDEwLTAzLTI1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBbUXRdIFF0TGF1bmNoZXIgY3Jhc2hlcyBvbiBNYWMgT1MgYW5kIExpbnV4IHdo
ZW4gZXhpdGluZyB3aXRoIFFHcmFwaGljc1ZpZXcgbW9kZSBlbmFibGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI1MQorCisgICAgICAgIEZvbGxv
d2VkIHRoZSB3YXkgUVdlYlZpZXcgcmVnaXN0ZXJzIGZvciB0aGUgc2lnbmFsIFFXZWJQYWdlOjpk
ZXN0cm95ZWQoKSwgdG8gcHJldmVudAorICAgICAgICBRR3JhcGhpY3NXZWJWaWV3IGZyb20gcmVm
ZXJlbmNpbmcgUVdlYlBhZ2UgYWZ0ZXIgaXQgd2FzIGRlbGV0ZWQuICAgICAgICAKKworICAgICAg
ICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQ
cml2YXRlOjpfcV9wYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNl
dFBhZ2UpOgorICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3Lmg6CisKKzIwMTAtMDMtMjUg
IEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gUVdlYkZyYW1lOjpwYWdlQ2hhbmdl
ZCgpIHNpZ25hbCBpcyBub3QgZG9jdW1lbnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY2MDkKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorCisyMDEwLTAzLTI1ICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBb
UXRdIEltcGxlbWVudCBDaHJvbWVDbGllbnQ6OndpbmRvd1Jlc2l6ZXJSZWN0KCkKKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDAKKworICAgICAg
ICBXZSBhc3N1bWUgdGhlIHJlc2l6ZSBjb3JuZXIgdG8gYmUgaW4gdGhlIGxvd2VyIHJpZ2h0IGNv
cm5lciBvZgorICAgICAgICB0aGUgd2luZG93IGFuZCBoYXZpbmcgdGhlIHdpZHRoIGFuZCBoZWln
aHQgb2YgdGhlIHNjcm9sbGJhcnMuCisKKyAgICAgICAgVGhlIGhlbHBlciBmdW5jdGlvbiBnZW9t
ZXRyeVJlbGF0aXZlVG9Pd25lcldpZGdldCgpIGluIHRoZSBwYWdlCisgICAgICAgIGNsaWVudCBp
cyB1c2VkIHRvIGNsaXAgdGhlIHJlc2l6ZSByZWN0IHRvIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUK
KyAgICAgICAgdmlld3BvcnQsIG5vdCB0aGUgc2l6ZSBvZiB0aGUgUUdyYXBoaWNzVmlldy4KKwor
ICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKwor
MjAxMC0wMy0yNSAgU2h1IENoYW5nICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZGVkIGRvY3VtZW50
YXRpb24gZm9yIGRlbGV0ZSBidXR0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMTU2MAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisKKzIwMTAtMDMtMjUgIFRhc3VrdSBTdXp1a2kgIDx0YXN1a3Uuc3V6dWtpQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBbUXRdRml4IGNv
bXBpbGUgZXJyb3Igd2l0aCBRVF9OT19ERVNLVE9QU0VSVklDRVMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTMzCisKKyAgICAgICAgKiBBcGkvcXdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lzdGVudFN0
b3JhZ2UpOgorCisyMDEwLTAzLTI1ICBUYXN1a3UgU3V6dWtpICA8dGFzdWt1LnN1enVraUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgW1F0
XUZpeCBjb21waWxlIGVycm9yIHdpdGggUVRfTk9fREVCVUdfU1RSRUFNCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjUzMworCisgICAgICAgICogQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6
OmdyYXBoaWNzSXRlbVZpc2libGVSZWN0KToKKworMjAxMC0wMy0yNSAgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCisKKyAgICAgICAgTWFrZSBRV2ViUGFnZSBub3QgZGVwZW5kIG9uIHZpZXco
KSBidXQgdXNlIHRoZSBjbGllbnQtPm93bmVyV2lkZ2V0KCkKKyAgICAgICAgaW5zdGVhZC4gQWxz
bywgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIG5vdCBwYWdlIGNsaWVudC4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0
ZUNvbnRleHRNZW51KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudCk6
CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdl
OjpqYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdFByb21w
dCk6CisgICAgICAgIChRV2ViUGFnZTo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCk6CisgICAg
ICAgIChRV2ViUGFnZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFFXZWJQYWdlOjphY3Rpb24p
OgorICAgICAgICAoUVdlYlBhZ2U6OmV4dGVuc2lvbik6CisgICAgICAgIChRV2ViUGFnZTo6Y2hv
b3NlRmlsZSk6CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKworMjAxMC0w
My0yNCAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisK
KyAgICAgICAgQWRkIHRoZSBGcmFtZUZsYXR0ZW5pbmdFbmFibGVkIFdlYkF0dHJpYnV0ZSB0byBR
V2ViU2V0dGluZ3MuCisKKyAgICAgICAgW1F0XSBNaXNzaW5nIFFXZWJTZXR0aW5ncyBmb3IgRnJh
bWUgRmxhdHRlbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzY1NTMKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAo
UVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2Vi
U2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMC0wMy0yNCAg
VmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIEF1dG8tdXBw
ZXJjYXNlIGFuZCBwcmVkaWN0aXZlIHRleHQgbmVlZCB0byBiZSBkaXNhYmxlZCBmb3IgUzYwIChh
cyBmb3IgbWFlbW8pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzE3NgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
OgorCisyMDEwLTAzLTI0ICBLZW50IEhhbnNlbiAgPGtlbnQuaGFuc2VuQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIFJlbmFt
ZSBRV2ViU2V0dGluZ3M6OlhTU0F1ZGl0b3JFbmFibGVkIHRvIFhTU0F1ZGl0aW5nRW5hYmxlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1MjIKKwor
ICAgICAgICBGb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBRV2ViU2V0dGluZ3MgYXR0cmlidXRl
cy4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRp
bmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAx
MC0wMy0yMyAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQ2FsbGlu
ZyBzZXRWaWV3KDApIG9uIGEgUVdlYlBhZ2UgYmVpbmcgc2hvd24gYnkgYSBRR3JhcGhpY3NXZWJW
aWV3LAorICAgICAgICB3b3VsZCB1bmluc3RhbGwgdGhlIHBhZ2UgY2xpZW50LCBkZWxldGluZyB0
aGUgUUdyYXBoaWNzV2ViVmlld1ByaXZhdGUKKyAgICAgICAgaW5zdGFuY2UuIElmIGNhbGxlZCB3
aXRoIGFuIGFyZ3VtZW50LCBpdCB3b3VsZCBkbyBhIHdyb25nIHN0YXRpY19jYXN0CisgICAgICAg
IGFuZCBjcmFzaC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZVdpZGdldENsaWVudDo6UVdlYlBhZ2VXaWRnZXRDbGllbnQpOgorICAgICAgICAoUVdlYlBh
Z2VXaWRnZXRDbGllbnQ6OmlzUVdpZGdldENsaWVudCk6CisgICAgICAgIChRV2ViUGFnZVdpZGdl
dENsaWVudDo6c2NyZWVuTnVtYmVyKToKKyAgICAgICAgKFFXZWJQYWdlOjpRV2ViUGFnZSk6Cisg
ICAgICAgIChRV2ViUGFnZTo6c2V0Vmlldyk6CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZp
ZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnVuc2V0UGFnZUlmRXhp
c3RzKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVdpZGdldENsaWVudDo6aXNRV2lkZ2V0
Q2xpZW50KToKKyAgICAgICAgKFFXZWJQYWdlV2lkZ2V0Q2xpZW50OjpzY3JlZW5OdW1iZXIpOgor
ICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaWV3
KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3Bw
OgorICAgICAgICAoUVdlYlZpZXdQcml2YXRlOjp1bnNldFBhZ2VJZkV4aXN0cyk6CisgICAgICAg
IChRV2ViVmlldzo6c2V0UGFnZSk6CisKKzIwMTAtMDMtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIE1ha2UgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgb3B0aW9uYWwuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTA3MgorCisgICAgICAgIC0g
UmVuYW1lIGljb25Gb3JGaWxlcygpIHRvIGNob29zZUljb25Gb3JGaWxlcygpLgorICAgICAgICAt
IENhbGwgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKCkgZnJvbSBjaG9vc2VJY29uRm9yRmlsZXMo
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjaG9vc2VJY29uRm9yRmlsZXMpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMTAtMDMtMjMgIEx1aXog
QWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgUUdyYXBoaWNzV2Vi
VmlldyBjcmFzaCB3aGVuIGNhbGxpbmcgc2V0VmlldyBvbiB0aGUgUVdlYlBhZ2UuLi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NDM2CisKKyAgICAg
ICAgQ2hlY2tpbmcgZm9yIHBhZ2VDbGllbnQgZXhpc3RhbmNlIGJlZm9yZSBzaG93aW5nIHBvcHVw
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorCisyMDEwLTAzLTIz
ICBBbmRlcnMgQmFra2VuIDxhbmRlcnMuYmFra2VuQG5va2lhLmNvbT4sIEplc3VzIFNhbmNoZXot
UGFsZW5jaWEgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgQ2hlY2sgaWYgcS0+
c2NlbmUoKSBpcyBhdmFpbGFibGUgYmVmb3JlIGFjdHVhbGx5IHVzaW5nIGl0CisgICAgICAgIG9u
IFFHcmFwaGljc1dlYlZpZXdQcml2YXRlLgorCisgICAgICAgIFFHcmFwaGljc1dlYlZpZXcgY3Jh
c2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjcw
CisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhp
Y3NXZWJWaWV3UHJpdmF0ZTo6c2NyZWVuTnVtYmVyKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZp
ZXdQcml2YXRlOjpvd25lcldpZGdldCk6CisKKzIwMTAtMDMtMjMgIERhdmlkIExlb25nICA8ZGF2
aWQubGVvbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3Mu
CisKKyAgICAgICAgQnVpbGQgZml4IGZvciBTeW1iaWFuIERlZiBmaWxlLgorCisgICAgICAgICog
c3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTAtMDMtMjMgIExhc3psbyBHb21ib3Mg
IDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHN1cHBvcnQgZm9y
IFF0IHY0LjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM2Mzg5CisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVs
ZW1lbnQ6OmNsYXNzZXMpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KToKKyAgICAgICAgKFFXZWJQ
YWdlOjp1c2VyQWdlbnRGb3JVcmwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcm86CisKKzIwMTAtMDMtMjIgIEtl
bnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0XSBGaXggcWRvYyB3YXJuaW5ncworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NDcKKworICAgICAg
ICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDogQWRkIG1pc3NpbmcgKCkuCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6IFJlbW92ZSByZWZlcmVuY2UgdG8gbm9uLWV4aXN0ZW50IHBhcmFt
ZXRlciAidXJsIi4KKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDogIERvY3VtZW50IHBh
cmFtZXRlciAibG9jYXRpb24iLgorCisyMDEwLTAzLTIyICBKYWt1YiBXaWVjem9yZWsgIDxqd2ll
Y3pvcmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgW1F0XSBEb24ndCBjb25zdHJ1Y3QgYSBRTGluZUVkaXQgZXZlcnkgdGltZSB3
aGVuIHBhaW50aW5nIGEgdGV4dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzYzNzMKKworICAgICAgICBBZGQgYSBzaW1wbGUgYmVuY2htYXJr
IGNvdmVyaW5nIHRoaXMgYXJlYS4KKworICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvcGFpbnRp
bmcvdHN0X3BhaW50aW5nLmNwcDoKKyAgICAgICAgKHRzdF9QYWludGluZzo6dGV4dEFyZWFzKToK
KworMjAxMC0wMy0yMiAgWWkgU2hlbiAgPHNoZW55aTIwMDZAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTkzMyAgCisgICAgICAgIFtRdF0gW1N5bWJpYW5dIENh
biBub3QgYmFja3dhcmQgc2VsZWN0IChoaWdobGlnaHQpIHRleHQgdXNpbmcgdmlydHVhbCBrZXli
b2FyZAorICAgICAgICBNYWtlIHN1cmUgdGhlIHNlbGVjdGlvbiBzdGFydCBpbmRleCBpcyBzbWFs
bGVyIHRoYW4gdGhlIHNlbGVjdGlvbiBlbmQgaW5kZXguCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAg
ICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FX
ZWJQYWdlOjppbnB1dE1ldGhvZHMpOgorCisyMDEwLTAzLTIxICBLcmlzdGlhbiBBbWxpZSAgPGty
aXN0aWFuLmFtbGllQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBGaXhlZCB1cGRhdGluZyB0aGUgVktCIGRpc3BsYXkgd2hlbiBpbnB1
dHRpbmcgaW50byBRR3JhcGhpY3NXZWJWaWV3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyOTIKKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpfcV91cGRhdGVNaWNy
b0ZvY3VzKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAq
IEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3Lmg6CisKKzIwMTAtMDMtMTkgIExhc3psbyBHb21ib3MgIDxs
YXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAg
ICAgQnVpbGRmaXggZm9yIFF0IHY0LjUuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmll
dy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3T3ZlcmxheTo6cSk6CisKKzIwMTAtMDMt
MTggIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2li
bGUgZm9yIHRoZSBRdCBEUlQgdG8gc2V0IHRoZSBtZWRpYSB0eXBlIGZyb20KKyAgICAgICAgdGhl
IExheW91dFRlc3RDb250cm9sbGVyLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChxdF9kcnRfc2V0TWVkaWFUeXBlKToKKworMjAxMC0wMy0xOCAgSm9lIExpZ21hbiAg
PGpvc2VwaC5saWdtYW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIFtRdF0gTmV3IEFQSSBzY3JvbGxSZWN1cnNpdmVseSBoYXMgc2V2
ZXJhbCBwcm9ibGVtcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1ODczCisKKyAgICAgICAgUmVtb3ZlIHNjcm9sbFJlY3Vyc2l2ZWx5IGZyb20gdGhl
IFF0IDQuNyBBUEkKKyAgICAgICAgVXBkYXRlIHRoZSBpbnRlcm5hbCBBUEkgdG8gYWNjZXB0IGEg
aGl0IHRlc3QgcG9zaXRpb24gCisgICAgICAgIGZvciBuZXN0ZWQgc2Nyb2xsaW5nCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHdlYmZyYW1lX3Njcm9sbE92ZXJmbG93
KToKKyAgICAgICAgKHF0d2Via2l0X3dlYmZyYW1lX3Njcm9sbFJlY3Vyc2l2ZWx5KToKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAg
ICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDEwLTAzLTE4ICBB
bnR0aSBLb2l2aXN0byAgPGtvaXZpc3RvQGlraS5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYxMDIKKyAgICAgICAgW1F0XSBTY2FsaW5nIGNvbnRyb2wg
QVBJIGZvciB0aWxlZCBiYWNraW5nIHN0b3JlCisgICAgICAgIAorICAgICAgICBUaGUgc2NhbGUg
aXMgc2V0IGJ5IHBhc3NpbmcgdGhlIFFHcmFwaGljc1dlYlZpZXcgc2NhbGUgdG8gdGhlIGJhY2tp
bmcgc3RvcmUuIFRoZQorICAgICAgICBvbmx5IG5ldyBBUEkgaXMgdGhlIHRpbGVkQmFja2luZ1N0
b3JlRnJvemVuIHByb3BlcnR5IHdoaWNoIGFsbG93cyBkaXNhYmxpbmcKKyAgICAgICAgYWxsIHVw
ZGF0ZXMgKGZvciBleGFtcGxlIGR1cmluZyB6b29tIGFuaW1hdGlvbikuCisKKyAgICAgICAgKiBB
cGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0
ZTo6X3Ffc2NhbGVDaGFuZ2VkKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjp1
cGRhdGVUaWxlZEJhY2tpbmdTdG9yZVNjYWxlKToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OlFHcmFwaGljc1dlYlZpZXcpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6aXNUaWxlZEJh
Y2tpbmdTdG9yZUZyb3plbik6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRUaWxlZEJh
Y2tpbmdTdG9yZUZyb3plbik6CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoK
KworMjAxMC0wMy0xNyAgQW50dGkgS29pdmlzdG8gIDxrb2l2aXN0b0Bpa2kuZmk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBGaXggUXQgYnVpbGQg
d2l0aCB0aWxlZCBiYWNraW5nIHN0b3JlIGRpc2FibGVkLgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisKKzIwMTAtMDMtMTcgIENo
YW5nIFNodSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFz
emxvIEdvbWJvcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzYxMzkKKyAgICAgICAgW1F0XSBDbGVhbiB1cCBjYWNoZSB3aGlsZSBzZXR0aW5nIGNh
Y2hlIHF1b3RhLiBUaGlzIGJlaGF2aW9yIG1hdGNoZXMgb3RoZXIgcGxhdGZvcm1zLAorICAgICAg
ICBzdWNoIGFzIG1hYyBhbmQgZ3RrLgorCisgICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhKToKKworMjAxMC0wMy0xNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgIFtRdF0gRW5hYmxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJ5IGRlZmF1bHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODY2CisKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdl
YlNldHRpbmdzKToKKworMjAxMC0wMy0xNSAgQW50dGkgS29pdmlzdG8gIDxrb2l2aXN0b0Bpa2ku
Zmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MTIxCisgICAgICAgIFtRdF0g
TWFrZSBXZWJLaXQgc2Nyb2xsYmFycyB3b3JrIHdpdGggdGlsaW5nCisgICAgICAgIAorICAgICAg
ICAtIFVzZSB0aGUgc2Nyb2xsYmFyIG92ZXJsYXkgKGltcGxlbWVudGVkIGZvciBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZykgd2hlbiBpbiB0aWxlZCBtb2RlLiAKKyAgICAgICAgLSBNYWtlIG92ZXJs
YXkgY29tcGlsZSB1bmNvbmRpdGlvbmFsbHksIGVuYWJsZSBvbiBkZW1hbmQuIFRoaXMgcmVtb3Zl
cyBidW5jaCBvZiB1bm5lZWRlZCBpZmRlZnMuCisgICAgICAgIC0gVXBkYXRlIHRoZSBzY3JvbGwg
cG9zaXRpb24gdG8gdGhlIGJhY2tpbmcgc3RvcmUgYXMgbmVlZGVkLgorICAgICAgICAtIFJlbmFt
ZWQgc29tZSBtZXRob2RzLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgor
ICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6Oik6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3UHJpdmF0ZTo6Y3JlYXRlT3JEZWxldGVPdmVybGF5KToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChRR3JhcGhp
Y3NXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlQ29tcG9zaXRpbmdTY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsKToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOjp1cGRhdGUpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZh
dGU6OmdyYXBoaWNzSXRlbVZpc2libGVSZWN0KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OnBhaW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAo
UUdyYXBoaWNzV2ViVmlldzo6dXBkYXRlR2VvbWV0cnkpOgorICAgICAgICAoUUdyYXBoaWNzV2Vi
Vmlldzo6c2V0R2VvbWV0cnkpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyRnJvbVRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKworMjAxMC0wMy0xNSAgUm9iZXJ0IEhvZ2FuICA8cm9i
ZXJ0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgW1F0XSBGaXggY3Jhc2ggaW4gUVdlYlZpZXc6OnNldFBhZ2UoKQorCisgICAgICAg
IHRzdF9xd2VicGFnZSB3YXMgY3Jhc2hpbmcgb24gc2V0UGFnZSgwKQorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjEzNworCisgICAgICAgICogQXBp
L3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRQYWdlKToKKworMjAxMC0wMy0x
NiAgWXVyeSBTZW1pa2hhdHNreSA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgSW50cm9kdWNlIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50IHRoYXQgcHJvdmlkZXMgSW5zcGVjdG9yRnJvbnRlbmQgd2l0aCBhbiBpbnRlcmZh
Y2UgdG8gdGhlIGVtYmVkZGVyLiBJbnNwZWN0b3JDbGllbnQgbm93IHNlcnZlcyBhcyBhIGRlbGVn
YXRlIGZvciBJbnNwZWN0b3JDb250cm9sbGVyIGFuZCBkb2VzIG5vdCBjb250YWluIG1ldGhvZHMg
Zm9yIG1hbmFnaW5nIGluc3BlY3RvciBmcm9udGVuZCB3aW5kb3cuIFRoYXQgYWxsb3dzIHRvIGNy
ZWF0ZSByZW1vdGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgorCisgICAgICAgIEludHJvZHVjZSBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCB0aGF0IHdvdWxkIHByb3ZpZGUgSW5zcGVjdG9yRnJvbnRl
bmQgd2l0aCBhbiBpbnRlcmZhY2UgdG8gdGhlIGVtYmVkZGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTAzNgorCisgICAgICAgICogQXBpL3F3ZWJp
bnNwZWN0b3IuY3BwOgorICAgICAgICAoUVdlYkluc3BlY3Rvcjo6aGlkZUV2ZW50KToKKyAgICAg
ICAgKFFXZWJJbnNwZWN0b3I6OmNsb3NlRXZlbnQpOgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVj
dG9yLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudFF0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmZyb250ZW5kTG9hZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmxvY2FsaXplZFN0cmlu
Z3NVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6aGlk
ZGVuUGFuZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6
OmJyaW5nVG9Gcm9udCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVu
dFF0OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudFF0OjphdHRhY2hXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDo6ZGV0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50UXQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6Omluc3BlY3RlZFVSTENoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6dXBkYXRlV2luZG93VGl0
bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKKzIw
MTAtMDMtMTUgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisg
ICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAgW1F0XSBCdWlsZCBmaXggaWYgVElMRURfQkFD
S0lOR19TVE9SRSBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6cmVuZGVyQ29udGVudHNMYXllckFic29sdXRlQ29v
cmRzKToKKworMjAxMC0wMy0xNCAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIFtTeW1i
aWFuXSBVc2UgU3ltYmlhbiBuYXRpdmUgZGlhbG9nIHByb3ZpZGVycyBmb3IgY29tYm8gcHVwdXBz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5MTkK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzZXRBbmREZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1
cDo6c2hvd1M2MEJyb3dzZXJEaWFsb2cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFs
bGJhY2tXZWJQb3B1cC5oOgorCisyMDEwLTAzLTE0ICBBbnR0aSBLb2l2aXN0byAgPGtvaXZpc3Rv
QGlraS5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUxNDYKKyAgICAgICAg
U3VwcG9ydCB0aWxlZCBiYWNraW5nIHN0b3JlCisKKyAgICAgICAgSW1wbGVtZW50cyBhIGJhc2lj
IHRpbGVkIGJhY2tpbmcgc3RvcmUgbWVjaGFuaXNtLiBUaWxlcyBhcmUgY3JlYXRlZCBhbmQgCisg
ICAgICAgIGRlbGV0ZWQgb24gZGVtYW5kLiBUaGUgcGFnZSBjb250ZW50IGlzIGNhY2hlZCB0byB0
aGUgdGlsZXMuIFRpbGUgY29udGVudAorICAgICAgICBpcyBrZXB0IGluIHN5bmMgd2l0aCB0aGUg
ZG9jdW1lbnQuIFNpbmNlIHRoZSBiYWNraW5nIHN0b3JlIGNvdmVycyBhcmVhCisgICAgICAgIGxh
cmdlciB0aGFuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSB2aWV3cG9ydCwgdGhlIGRvY3VtZW50IGNh
biBiZSBzY3JvbGxlZAorICAgICAgICBxdWlja2x5IHdpdGhvdXQgaGF2aW5nIHRvIGVudGVyIHJl
bmRlcmluZyB0cmVlIHBhaW50aW5nLgorICAgICAgICAKKyAgICAgICAgVGhlIHRpbGUgbWFuYWdl
bWVudCBjb2RlIGlzIHBsYXRmb3JtIGluZGVwZW5kZW50LiBUaGlzIHBhdGNoIGhhcyBzaW1wbGUg
UVBpeG1hcAorICAgICAgICBiYXNlZCB0aWxlIGltcGxlbWVudGF0aW9uIGZvciBRdC4KKyAgICAg
ICAgCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGJlaGluZCBFTkFCTEVfVElMRURfQkFDS0lOR19T
VE9SRSBmbGFnLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnZpc2libGVSZWN0KToKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXc6OnBhaW50KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlckNvbnRlbnRzTGF5ZXJBYnNvbHV0ZUNvb3Jkcyk6
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMC0wMy0xMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0gRW5hYmxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIGJ5IGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1ODY2CisKKyAgICAgICAgVW5yZXZpZXdlZC4gUm9sbC1vdXQgcjU1OTU1LCBiZWNh
dXNlIGl0IGJyb2tlIDMgdGVzdHM6CisgICAgICAgIC0gYW5pbWF0aW9ucy9maWxsLW1vZGUtdHJh
bnNmb3JtLmh0bWwKKyAgICAgICAgLSBhbmltYXRpb25zL3BsYXktc3RhdGUuaHRtbAorICAgICAg
ICAtIGFuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LWxlZnQuaHRtbAorCisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5n
cyk6CisKKzIwMTAtMDMtMTMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgor
CisgICAgICAgIFtRdF0gRW5hYmxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJ5IGRlZmF1bHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1ODY2CisK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
UVdlYlNldHRpbmdzKToKKworMjAxMC0wMy0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAgICAg
IFJlbW92ZSBpbnZhbGlkYXRlQ29udGVudHMsIGl0IGlzbid0IHVzZWQgYW5kIGl0IG5ldmVyIG1h
a2VzIHNlbnNlIHRvIG9ubHkgaW52YWxpZGF0ZSB0aGUgY29udGVudHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAxMC0wMy0xMCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgW1F0XSBBZGQgU3VwcG9ydCBmb3IgV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyB0byBR
dCBEUlQKKworICAgICAgICBVbnNraXAgdGVzdCBmYXN0L2V2ZW50cy9tdWx0aWxpbmUtbGluay1h
cnJvdy1uYXZpZ2F0aW9uLmh0bWwKKyAgICAgICAgRml4IHR5cG8gKHN1cGVyZmx1b3VzIHNwYWNl
KSBpbiBRV2ViU2V0dGluZ3MgZG9jcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzU1OTMKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChxdF9kcnRfZW5hYmxlQ2FyZXRCcm93c2luZyk6CisgICAgICAgICogQXBpL3F3ZWJz
ZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6IGZpeCB0
eXBvIGluIGRvY3MKKworMjAxMC0wMy0wMiAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0uY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCisKKyAgICAgICAgQWRhcHQgdGhlIHF0
IHBvcnQgdG8gdGhlIHJlZmFjdG9yaW5nIG9mIHJlcGFpbnQgbWV0aG9kcy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyMTQKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjppbnZhbGlkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OmludmFsaWRhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OmludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAxMC0wMy0wOCAgRXJp
YyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgorCisgICAgICAgIFJlbW92ZSB0aGUgbm93LXJlZHVuZGFudCBTZXR0aW5ncyBm
aWVsZHMgZm9yIHRoZSBEYXRhYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU3NjMKKworICAgICAgICBObyBuZXcgdGVzdHM7IHRoaXMgY29kZSBp
c24ndCBjYWxsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAg
KFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KTogUmVtb3ZlIHRoZSBjYWxsIGludG8gU2V0dGlu
Z3MuCisKKzIwMTAtMDMtMDggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCisKKyAgICAgICAgW1F0
XSBCaW5hcnkgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gUXQgNC42J3MgV2ViS2l0IGFuZCB0cnVu
ayBpbiBRV2ViU2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM1ODU4CisKKyAgICAgICAgTW92ZWQgdGhlIGVudW0gdmFsdWUgYWRkZWQgaW4g
cjU0ODczIHRvIHRoZSBlbmQgb2YgdGhlIGVudW0sIHRvIHByZXNlcnZlCisgICAgICAgIGJpbmFy
eSBjb21wYXRpYmlsaXR5LiBEbnNQcmVmZXRjaEVuYWJsZWQgd2FzIGluIHRoZSBsYXN0IHJlbGVh
c2UgYW5kIG5lZWRzCisgICAgICAgIHRvIHJlbWFpbiBhZnRlciBMb2NhbENvbnRlbnRDYW5BY2Nl
c3NSZW1vdGVVcmxzLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDEwLTAz
LTA2ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUnViYmVyLXN0YW1w
ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgaW5jbHVkZXMg
b2Ygd3RmL1BsYXRmb3JtLmguICBUaGlzIGlzIGFscmVhZHkgcHVsbGVkIGluIGJ5IHRoZSBwcmVm
aXggaGVhZGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5jcHA6
CisKKzIwMTAtMDMtMDIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKyAgICAgICAgUGF0Y2ggYnkgQW50
b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1F0XSBRV2ViU2V0
dGluZ3MgYXR0cmlidXRlIGZvciB0b2dnbGUgU3BhdGlhbCBOYXZpZ2F0aW9uIG9uL29mZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM3MTQgKFF0IEFQ
SSBwYXJ0KQorCisgICAgICAgIEFkZGVkICdTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQnIGF0dHJp
YnV0ZSB0byBRV2ViU2V0dGluZ3MuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoK
KyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkvcXdl
YnNldHRpbmdzLmg6CisKKzIwMTAtMDMtMDQgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgorCisgICAgICAgIFtRdF0gcXdlYmVsZW1lbnQuaCBkb2VzIG5vdCBpbmNsdWRlIFF0
Q29yZSBoZWFkZXJzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzU3NDgKKworICAgICAgICBUaGUgaGVhZGVyIGZpbGVzIG9mIFF0Q29y
ZSBtdXN0IGJlIGluY2x1ZGVkIGFzIFF0Q29yZS9mb28uaC4KKworICAgICAgICBTZWUgYWxzbyBo
dHRwOi8vYnVncmVwb3J0cy5xdC5ub2tpYS5jb20vYnJvd3NlL1FUQlVHLTg2NjEKKworICAgICAg
ICAqIEFwaS9xd2ViZWxlbWVudC5oOgorCisyMDEwLTAzLTA0ICBKb2NlbHluIFR1cmNvdHRlICA8
am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIE1ha2UgdGhlIE9VVFBVVF9ESVIgdmFyaWFibGUg
aW4gcW1ha2UgcHJvamVjdHMgaW5kZXBlbmRlbnQgb2YgYnVpbGQtd2Via2l0J3MgbG9naWMuCisK
KyAgICAgICAgVGhpcyBhbHNvIGFsbG93cyBzaGFkb3cgYnVpbGRzIHJlbHlpbmcgb25seSBvbiBx
bWFrZSB0byB3b3JrIHByb3Blcmx5LgorCisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy9sb2Fk
aW5nL2xvYWRpbmcucHJvOgorICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvcGFp
bnRpbmcucHJvOgorICAgICAgICAqIHRlc3RzL2h5YnJpZFBpeG1hcC9oeWJyaWRQaXhtYXAucHJv
OgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvcWdyYXBoaWNzd2Vidmlldy5wcm86
CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvcXdlYmVsZW1lbnQucHJvOgorICAgICAgICAq
IHRlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucHJvOgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0
b3J5L3F3ZWJoaXN0b3J5LnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeWludGVyZmFj
ZS9xd2ViaGlzdG9yeWludGVyZmFjZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmluc3BlY3Rv
ci9xd2ViaW5zcGVjdG9yLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS9xd2VicGFnZS5w
cm86CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3F3ZWJwbHVnaW5kYXRhYmFz
ZS5wcm86CisKKzIwMTAtMDMtMDIgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9A
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgorCisgICAgICAgIFtRdF0gRml4IGdlbmVyYXRpb24gb2YgZm9yd2FyZGluZyBoZWFkZXJz
CisKKyAgICAgICAgVGhlIGRlcGVuZGVuY2llcyB3ZXJlIGEgYml0IHdyb25nLCBzbyB3ZSBlbmRl
ZCB1cCBub3QgZ2VuZXJhdGluZworICAgICAgICBmb3J3YXJkaW5nIGhlYWRlcnMgZm9yIHF3ZWJr
aXR2ZXJzaW9uLmggYW5kIHF3ZWJraXRnbG9iYWwuaAorCisgICAgICAgIFRoZSBmb3J3YXJkaW5n
IGhlYWRlcnMgYXJlIG5vdyB0aGUgb25seSB0YXJnZXRzIGRlcGVuZGluZyBvbiB0aGUKKyAgICAg
ICAgcmVhbCBoZWFkZXJzLiBBbGwgb3RoZXIgdGFyZ2V0cyBlaXRoZXIgZGVwZW5kIG9uIHRoZSBn
ZW5lcmF0ZWQKKyAgICAgICAgY2xhc3MgaGVhZGVycywgb3IgdGhlIGZvcndhcmRpbmcgaGVhZGVy
cy4KKworICAgICAgICAqIEFwaS9EZXJpdmVkU291cmNlcy5wcm86CisKKzIwMTAtMDMtMDIgIEVy
aWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXZpZCBMZXZpbi4KKworICAgICAgICBNb3ZlIGRhdGFiYXNlIGVuYWJsZSBiaXQgZnVsbHkgb3V0
IG9mIHNldHRpbmdzCisgICAgICAgIFRoaXMgaXMgc3RhZ2Ugb25lIG9mIGEgdGhyZWUtc3RhZ2Ug
Y29tbWl0IFt3ZWJraXQsIHRoZW4gY2hyb21pdW0sIHRoZW4KKyAgICAgICAgd2Via2l0IGFnYWlu
XS4gIEluIHRoaXMgY2hhbmdlIEknbSBhZGRpbmcgY2FsbHMgdG8KKyAgICAgICAgRGF0YWJhc2U6
OnNldElzQXZhaWxhYmxlIGluc2lkZSBTZXR0aW5nczo6c2V0RGF0YWJhc2VFbmFibGVkIGFuZAor
ICAgICAgICBhbnl3aGVyZSBlbHNlIHRoYXQgY2FsbGVkIGl0LCBhbmQgc3dpdGNoaW5nIHdlYmtp
dCBmdWxseSBvdmVyIHRvIHVzaW5nCisgICAgICAgIHRoYXQgZmxhZyBbYWRkZWQgaW4gYSBwcmV2
aW91cyBjaGVja2luXS4gIFBoYXNlIHR3byB3aWxsIHJlbW92ZQorICAgICAgICBDaHJvbWl1bSdz
IHVzZSBvZiBTZXR0aW5ncyBmb3IgdGhlIERhdGFiYXNlLCBhbmQgcGhhc2UgdGhyZWUgd2lsbCBy
ZW1vdmUKKyAgICAgICAgdGhlIFNldHRpbmcgZm9yIHRoZSBEYXRhYmFzZSBlbmFibGUgZW50aXJl
bHksIGxlYXZpbmcgb25seQorICAgICAgICBEYXRhYmFzZTo6aXNBdmFpbGFibGUvc2V0SXNBdmFp
bGFibGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0ZXN0ZWQgYnkgZXhpc3Rpbmcgc3RvcmFn
ZSB0ZXN0cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzUzMTAKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdl
YlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOiAgQWRkIGEgY2FsbCB0byBEYXRhYmFzZTo6c2V0SXNB
dmFpbGFibGUKKworMjAxMC0wMy0wMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgU3ltYmlhbiBidWlsZCBmaXguCisKKyAgICAgICAgW1F0XSBV
cGRhdGVkIHRoZSBkZWYgZmlsZSB3aXRoIG9uZSBuZXcgZXhwb3J0LCB0byBmaXgKKyAgICAgICAg
UXRMYXVuY2hlciBsaW5rYWdlLgorCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5k
ZWY6CisKKzIwMTAtMDMtMDEgIEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkYXB0IHRvIHRo
ZSBuZXcgWm9vbU1vZGUgZW51bS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM1MzQ3CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKFFXZWJGcmFt
ZTo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAg
ICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKKzIwMTAtMDItMjYgIERpZWdvIEdv
bnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBGaXggZG9jdW1lbnRhdGlvbiBvZiBRV2Vi
U2V0dGluZ3M6OnNldFVzZXJTdHlsZVNoZWV0VXJsIG1ldGhvZAorCisgICAgICAgIFRoZSBiYXNl
IDY0IGRhdGEgaW4gdGhlIGV4ZW1wbGUgc2hvd3MgYSBub3QgdmFsaWQgY29kZS4KKworICAgICAg
ICBSRUdSRVNTSU9OOiBRV2ViU2V0dGluZ3M6OnNldFVzZXJTdHlsZVNoZWV0VXJsIGlzIG5vdCB3
b3JraW5nIHdpdGggYSBkYXRhIFVSTCAoQmFzZTY0KQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ4MDIKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGlu
Z3MuY3BwOgorCisyMDEwLTAyLTI2ICBKYW1leSBIaWNrcyAgPGphbWV5LmhpY2tzQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgorCisgICAgICAgIFtRdF0g
YWRkZWQgUVdlYlNldHRpbmdzOjpzZXRJbnNwZWN0b3JVcmwoKSBhbmQgUVdlYlNldHRpbmdzOjpp
bnNwZWN0b3JVcmwoKQorCisgICAgICAgIEVuYWJsZXMgdGhlIHVzZSBvZiBhbHRlcm5hdGUgV2Vi
IEluc3BlY3RvciBmcm9udGVuZHMgYnkgY2hhbmdpbmcKKyAgICAgICAgdGhlIGxvY2F0aW9uIG9m
IHRoZSBmcm9udGVuZC4KKworICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQgdGhlIFdl
YiBJbnNwZWN0b3IgbWF5IGJlIHJ1biBmcm9tIGFuCisgICAgICAgIGV4dGVybmFsIHByb2Nlc3Mg
b3IgYW4gZXh0ZXJuYWwgdG9vbCBzdWNoIGFzIEVjbGlwc2Ugb3IgQXB0YW5hIG1heQorICAgICAg
ICBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGluLXByb2Nlc3MgV2ViIEluc3BlY3RvciBVSS4KKyAg
ICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTM0MAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldEluc3BlY3Rv
clVybCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omluc3BlY3RvclVybCk6CisgICAgICAgICog
QXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQ
YWdlKToKKworMjAxMC0wMi0yNSAgSmFya2tvIFNha2tpbmVuICA8amFya2tvLnNha2tpbmVuQHRp
ZXRvLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBRdCBXZWJHTCBzdXBwb3J0CisKKyAgICAgICAgQWRkcyBlbmFibGluZyBh
bmQgZGlzYWJsaW5nIG9mIFdlYkdMIHN1cHBvcnQgdG8gUVdlYlNldHRpbmdzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUxNTMKKworICAgICAgICAq
IEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBw
bHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuaDoKKworMjAxMC0wMi0xOSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAg
PGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBSZW1vdmUgUUdWTGF1bmNo
ZXIKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUy
OTIKKworICAgICAgICAqIFFHVkxhdW5jaGVyL1FHVkxhdW5jaGVyLnBybzogUmVtb3ZlZC4KKyAg
ICAgICAgKiBRR1ZMYXVuY2hlci9tYWluLmNwcDogUmVtb3ZlZC4KKworMjAxMC0wMi0yMyAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkcyBDaHJvbWVDbGllbnQ6OmNhbmNlbEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5NjIKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyByZXF1
aXJlZCBzbyB0aGF0IGEgR2VvbG9jYXRpb24gb2JqZWN0IGNhbiBjYW5jZWwgYW4KKyAgICAgICAg
YXN5bmNocm9ub3VzIHBlcm1pc3Npb24gcmVxdWVzdC4gVGhpcyBhbGxvd3MgdGhlIGNocm9tZSBj
bGllbnQgdG8gY2FuY2VsCisgICAgICAgIGFueSBVSSBpdCBpcyBzaG93aW5nIGZvciB0aGUgcGVy
bWlzc2lvbiByZXF1ZXN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjYW5jZWxHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUpOgorCisyMDEwLTAyLTIyICBMYXN6bG8gR29tYm9z
ICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBVbnJldmlld2VkIFN5bWJp
YW4gYnVpbGQgZml4LgorCisgICAgICAgIFtRdF0gVXBkYXRlZCB0aGUgZGVmIGZpbGUgd2l0aCBu
ZXcgZXhwb3J0cyB0byBlbmFibGUKKyAgICAgICAgYnVpbGRpbmcgRHVtcFJlbmRlclRyZWUuCisK
KyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRXZWJLaXR1LmRlZjoKKworMjAxMC0wMi0xOCAgTm9h
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBNaW5vciBp
bXByb3ZlbWVudCB0byBoeWJyaWQgUVBpeG1hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1MDcKKworICAgICAgICAqIHRlc3RzL2h5YnJpZFBpeG1h
cC90ZXN0Lmh0bWw6IHVzZSBhc3NpZ25Ub0hUTUxJbWFnZUVsZW1lbnQgb24gYW4KKyAgICAgICAg
ZXhpc3RpbmcgZWxlbWVudCBpbnN0ZWFkIG9mIHRvSFRNTEltYWdlRWxlbWVudCB3aGljaCBjcmVh
dGVzIGEgbmV3IG9uZQorCisyMDEwLTAyLTE3ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLCBEYXJpbiBGaXNoZXIs
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlz
IG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6
c2V0UGFnZSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkVHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIFRoZSBRV2ViRnJhbWUgY2Fj
aGVzIGEgUVdlYlBhZ2Ugd2hpY2ggc2hvdWxkIGJlIHJlcGxhY2VkIHdoZW4gRnJhbWUgaXMgcmUt
cGFyZW50ZWQuCisgICAgICAgIEFsc28sIHRoZSBRV2ViRnJhbWUgaXMgYSBjaGlsZCAoaW4gUVQg
dGVybXMpIG9mIFFXZWJQYWdlIC0gc28gdXBkYXRlIHRoYXQgcmVsYXRpb25zaGlwIGFzIHdlbGwu
CisgICAgICAgIEVtaXQgYSBzaWduYWwgdGhhdCBRV2ViRnJhbWUgbW92ZWQgdG8gYSBkaWZmZXJl
bnQgUVdlYlBhZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0Lmg6CisKKzIwMTAtMDItMTcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEludHJvZHVjZXMg
bmV3IEljb24gbG9hZGluZyBpbnRlcmZhY2UgaW4gb3JkZXIgdG8gc3VwcG9ydAorICAgICAgICBh
c3luY2hyb25vdXMgbG9hZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMyMDU0CisKKyAgICAgICAgQWRkIGFuIGVtcHR5IGltcGxlbWVudGF0aW9u
IG9mIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6aWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5oOgorCisyMDEwLTAyLTE3ICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAg
ICBNYWtlIHBvc3NpYmxlIFF0IERSVCB0byBnZXQgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIHRvIGJl
IHByaW50ZWQKKworICAgICAgICBMYXlvdXRUZXN0czoKKyAgICAgICAgICAgIHByaW50aW5nL251
bWJlck9mUGFnZXMuaHRtbAorCisgICAgICAgIFtRdF0gRFJUOiBHZXQgdG90YWwgbnVtYmVyIG9m
IHBhZ2VzIHRvIGJlIHByaW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM0OTU1CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKHF0X2RydF9udW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKHF0X2RydF9ldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZCk6CisKKzIwMTAtMDItMTYgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5o
aWRheWF0QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICBbUXRdIEFsbG93IHNjcm9sbGluZyB0byBhbiBhbmNob3IgcHJvZ3JhbW1hdGlj
YWxseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
ODU2CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6
c2Nyb2xsVG9BbmNob3IpOiBOZXcgQVBJIGZ1bmN0aW9uLgorICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6IE5ldyB0
ZXN0cyBmb3Igc2Nyb2xsVG9BbmNob3IoKS4KKworMjAxMC0wMi0xNiAgQXJpeWEgSGlkYXlhdCAg
PGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBH
b21ib3MuCisKKyAgICAgICAgRml4IGJ1aWxkaW5nIHdpdGggUXQgPCA0LjYuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDg4NQorCisgICAgICAgICog
QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZh
dGU6OnVwZGF0ZVJlc2l6ZXNUb0NvbnRlbnRzRm9yUGFnZSk6CisKKzIwMTAtMDItMTYgIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQgU3ltYmlhbiBidWlsZCBmaXguCisKKyAgICAgICAgVXBkYXRlZCB0aGUgZGVmIGZpbGUgd2l0
aCB0d28gbmV3IGV4cG9ydHMgdXNlZCBieSBRdExhdW5jaGVyLgorCisgICAgICAgICogc3ltYmlh
bi9lYWJpL1F0V2ViS2l0dS5kZWY6CisKKzIwMTAtMDItMTYgIElzbWFpbCBEb25tZXogIDxpc21h
aWxAbmFtdHJhYy5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKwor
ICAgICAgICBGaXggY29tcGlsYXRpb24gd2l0aCBpbnNwZWN0b3IgZGlzYWJsZWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjcyNAorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHF0X2RydF93ZWJpbnNwZWN0b3JfZXhlY3V0
ZVNjcmlwdCk6CisgICAgICAgIChxdF9kcnRfd2ViaW5zcGVjdG9yX2Nsb3NlKToKKyAgICAgICAg
KHF0X2RydF93ZWJpbnNwZWN0b3Jfc2hvdyk6CisgICAgICAgIChxdF9kcnRfc2V0VGltZWxpbmVQ
cm9maWxpbmdFbmFibGVkKToKKworMjAxMC0wMi0xNiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW4uCisKKyAgICAgICAgW1F0XSBGaXggaW5jbHVkZSBwYXRocyBmb3IgZm9yd2FyZGluZyBoZWFk
ZXJzIGluIHN0YW5kYWxvbmUgYnVpbGRzLgorCisgICAgICAgICogQXBpL0Rlcml2ZWRTb3VyY2Vz
LnBybzogVXNlIHJlbGF0aXZlIHBhdGhzIGZvciBwYWNrYWdlIGJ1aWxkcyBhbmQgYWRkZWQgc29t
ZQorICAgICAgICBkb2N1bWVudGF0aW9uLgorCisyMDEwLTAyLTE1ICBOb2FtIFJvc2VudGhhbCAg
PG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBbUXRdIFF0V2Via2l0IGJyaWRnZTogZW5hYmxlIHBhc3Npbmcg
YSBRV2ViRWxlbWVudCB0byBhIHNpZ25hbC9zbG90L3Byb3BlcnR5CisgICAgICAgIEFkZCBRX0RF
Q0xBUkVfTUVUQVRZUEUgdG8gUVdlYkVsZW1lbnQsIGFkZCByZWxldmFudCB0ZXN0cyB0bworICAg
ICAgICB0c3RfcXdlYmZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNDkwMQorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6IGRlY2xhcmUg
bWV0YXR5cGUKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChNeVFPYmplY3Q6OndlYkVsZW1lbnRQcm9wZXJ0eSk6IG5ldyB0ZXN0IGZvciBRV2Vi
RWxlbWVudAorICAgICAgICAoTXlRT2JqZWN0OjpzZXRXZWJFbGVtZW50UHJvcGVydHkpOiBuZXcg
dGVzdCBmb3IgUVdlYkVsZW1lbnQKKyAgICAgICAgKE15UU9iamVjdDo6bXlPdmVybG9hZGVkU2xv
dCk6IG5ldyB0ZXN0IGZvciBRV2ViRWxlbWVudAorCisyMDEwLTAyLTE1ICBSb2JlcnQgSG9nYW4g
IDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PiwgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVy
Y290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIFtRdF0gRFJUOiBTdXBwb3J0IGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoKSwgc2V0
VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKCkuCisKKyAgICAgICAgU3VwcG9ydCBMYXlvdXRUZXN0
Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCksIHNldFRpbWVsaW5lUHJvZmlsaW5n
RW5hYmxlZCgpIGluIFF0IERSVC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzMwOTYKKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgZm9sbG93aW5n
IHRlc3RzIHRvIHBhc3M6CisKKyAgICAgICAgaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLmh0bWwKKyAgICAgICAgaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbAorICAgICAg
ICBpbnNwZWN0b3Ivc3ludGF4LWhpZ2hsaWdodC1jc3MuaHRtbAorICAgICAgICBpbnNwZWN0b3Iv
c3ludGF4LWhpZ2hsaWdodC1qYXZhc2NyaXB0Lmh0bWwKKyAgICAgICAgaW5zcGVjdG9yL3RpbWVs
aW5lLWVudW0tc3RhYmlsaXR5Lmh0bWwKKyAgICAgICAgaW5zcGVjdG9yL3RpbWVsaW5lLWxheW91
dC5odG1sCisgICAgICAgIGluc3BlY3Rvci90aW1lbGluZS1tYXJrLXRpbWVsaW5lLmh0bWwKKyAg
ICAgICAgaW5zcGVjdG9yL3RpbWVsaW5lLXBhaW50Lmh0bWwKKyAgICAgICAgaW5zcGVjdG9yL3Rp
bWVsaW5lLXBhcnNlLWh0bWwuaHRtbAorICAgICAgICBpbnNwZWN0b3IvdGltZWxpbmUtcmVjYWxj
dWxhdGUtc3R5bGVzLmh0bWwKKyAgICAgICAgaW5zcGVjdG9yL3RpbWVsaW5lLXNjcmlwdC10YWct
MS5odG1sCisgICAgICAgIGluc3BlY3Rvci90aW1lbGluZS1zY3JpcHQtdGFnLTIuaHRtbAorICAg
ICAgICBpbnNwZWN0b3IvdGltZWxpbmUtdHJpdmlhbC5odG1sCisgICAgICAgIGluc3BlY3Rvci9j
b29raWUtcmVzb3VyY2UtbWF0Y2guaHRtbAorICAgICAgICBpbnNwZWN0b3IvZWxlbWVudHMtaW1n
LXRvb2x0aXAuaHRtbAorICAgICAgICBpbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc2VsZWN0aW9u
LW9uLXJlZnJlc2guaHRtbAorICAgICAgICBpbnNwZWN0b3IvaW5zcGVjdGVkLW9iamVjdHMtbm90
LW92ZXJyaWRlbi5odG1sCisgICAgICAgIGluc3BlY3Rvci90aW1lbGluZS1ldmVudC1kaXNwYXRj
aC5odG1sCisgICAgICAgIGluc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwK
KyAgICAgICAgaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXJld3JpdGUtaHJlZi5odG1sCisgICAg
ICAgIGluc3BlY3Rvci9jb25zb2xlLWRpci5odG1sCisgICAgICAgIGluc3BlY3Rvci9jb25zb2xl
LWRpcnhtbC5odG1sCisgICAgICAgIGluc3BlY3Rvci9jb25zb2xlLWZvcm1hdC5odG1sCisgICAg
ICAgIGluc3BlY3Rvci9jb25zb2xlLXRlc3RzLmh0bWwKKyAgICAgICAgaW5zcGVjdG9yL2VsZW1l
bnRzLXBhbmVsLXN0cnVjdHVyZS5odG1sCisgICAgICAgIGluc3BlY3Rvci9ldmFsdWF0ZS1pbi1m
cm9udGVuZC5odG1sCisgICAgICAgIGluc3BlY3Rvci9jb25zb2xlLWNsZWFyLmh0bWwKKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChxdF9kcnRfd2ViaW5zcGVjdG9yX2V4
ZWN1dGVTY3JpcHQpOgorICAgICAgICAocXRfZHJ0X3dlYmluc3BlY3Rvcl9jbG9zZSk6CisgICAg
ICAgIChxdF9kcnRfd2ViaW5zcGVjdG9yX3Nob3cpOgorICAgICAgICAocXRfZHJ0X3NldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZCk6CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRRdDo6Y3JlYXRlUGFnZSkK
KworMjAxMC0wMi0xMiAgQW50dGkgS29pdmlzdG8gIDxrb2l2aXN0b0Bpa2kuZmk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gYW5kIFNpbW9uIEhhdXNt
YW5uLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0ODg1CisgICAgICAgIEFkZCBhIFFHcmFwaGljc1dlYlZpZXcgbW9kZSB0aGF0IG1h
a2VzIGl0IGF1dG9tYXRpY2FsbHkgcmVzaXplIGl0c2VsZiB0byB0aGUgc2l6ZSBvZiB0aGUgY29u
dGVudC4KKworICAgICAgICBUaGlzIGlzIHVzZWZ1bCBmb3IgY2FzZXMgd2hlcmUgdGhlIGNsaWVu
dCB3YW50cyB0byBpbXBsZW1lbnQgcGFnZSBwYW5uaW5nIGFuZCB6b29taW5nIGJ5IG1hbmlwdWxh
dGluZworICAgICAgICB0aGUgZ3JhcGhpY3MgaXRlbS4KKyAgICAgICAgCisgICAgICAgIEFkZCBh
IG9wdGlvbiB0byBRR1ZMYXVuY2hlciB0byB0ZXN0IHRoaXMgbW9kZS4KKworICAgICAgICAqIEFw
aS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRl
OjpRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJp
dmF0ZTo6dXBkYXRlUmVzaXplc1RvQ29udGVudHNGb3JQYWdlKToKKyAgICAgICAgKFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOjpfcV9jb250ZW50c1NpemVDaGFuZ2VkKToKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UmVz
aXplc1RvQ29udGVudHMpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cmVzaXplc1RvQ29u
dGVudHMpOgorICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3Lmg6CisgICAgICAgICogUUdW
TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAg
KE1haW5WaWV3OjpNYWluVmlldyk6CisgICAgICAgIChNYWluVmlldzo6c2V0TWFpbldpZGdldCk6
CisgICAgICAgIChNYWluVmlldzo6cmVzaXplRXZlbnQpOgorICAgICAgICAobWFpbik6CisKKzIw
MTAtMDItMTIgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAg
ICAgICBRdCBEUlQgbm93IGR1bXAgdGhlIGZyYW1lIGxvYWRlciBjYWxsYmFja3Mgd2hlbiBMYXlv
dXRUZXN0Q29udHJvbGxlcigpCisgICAgICAgIG1ldGhvZCBpcyBjYWxsZWQuCisKKyAgICAgICAg
TGF5b3V0VGVzdHM6CisgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9kYXRhLXVybC1zY3JpcHQtaW4taWZyYW1lLmh0bWwKKyAgICAgICAgICAgIGh0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L2VtcHR5LXVybC1wbHVnaW4taW4tZnJhbWUuaHRtbAorICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtY3NzLWlu
LWlmcmFtZS5odG1sCisgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9pbnNlY3VyZS1pZnJhbWUtaW4taWZyYW1lLmh0bWwKKyAgICAgICAgICAgIGh0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWltYWdlLWluLWlmcmFtZS5odG1sCisgICAg
ICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1wbHVnaW4t
aW4taWZyYW1lLmh0bWwKKyAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250
ZW50L2luc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUuaHRtbAorICAgICAgICAgICAgaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0cC10by1odHRwcy1zY3JpcHQtaW4t
aWZyYW1lLmh0bWwKKyAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50
L3JlZGlyZWN0LWh0dHBzLXRvLWh0dHAtc2NyaXB0LWluLWlmcmFtZS5odG1sCisKKyAgICAgICAg
W1F0XSBNYWtlIHBvc3NpYmxlIFF0IERSVCBkdW1wIGZyYW1lIGxvYWQgY2FsbGJhY2tzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDcwMgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29u
dGVudCk6CisKKzIwMTAtMDItMTAgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRl
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisg
ICAgICAgIFtRdF0gTWFrZSBxdGxhdW5jaGVyIGFuZCBxZ3ZsYXVuY2hlciB1c2UgdGhlIGdlbmVy
YXRlZCBoZWFkZXJzCisgICAgICAgIHBhdGggdG8gbWFrZSBzdXJlIHRoZXkgYXJlIGNvcnJlY3Rs
eSBnZW5lcmF0ZWQuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcmk6CisKKzIwMTAtMDItMTAg
IEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFtRdF0gRW5zdXJlIHJl
bGF0aXZlIHBhdGhzIGluIGdlbmVyYXRlZCAucHJpIGZpbGVzIHRvIGVuc3VyZSB0aGF0CisgICAg
ICAgIGEgc291cmNlIHBhY2thZ2Ugd2l0aCBwcmUtZ2VuZXJhdGVkIGRlcml2ZWQgc291cmNlcyBj
YW4gYmUgY29tcGlsZWQuCisKKyAgICAgICAgLSBSZS1hZGQgYSBzZXBhcmF0ZSBoZWFkZXJzLnBy
aSBmaWxlIGZvciBXRUJLSVRfQVBJX0hFQURFUlMKKyAgICAgICAgLSBSZW5hbWUgdGhlIGdlbmVy
YXRlZCBoZWFkZXJzLnByaSB0byBjbGFzc2hlYWRlcnMucHJpIHRvIGF2b2lkCisgICAgICAgIGNv
bmZ1c2lvbiB3aXRoIHRoZSBvbmUgZ2VuZXJhdGVkIGJ5IHN5bnF0IHNpbmNlIHRoZXkgZG9uJ3Qg
aGF2ZSB0aGUKKyAgICAgICAgc2FtZSBjb250ZW50LgorICAgICAgICAtIFJlbW92ZSBwcml2YXRl
IGhlYWRlcnMgbGlzdCB2YXJpYWJsZSBmcm9tIGNsYXNzaGVhZGVycy5wcmkKKyAgICAgICAgLSBV
c2UgJCRQV0QgaW4gY2xhc3NoZWFkZXJzLnByaQorICAgICAgICAtIFJlbW92ZSBjbGFzc2hlYWRl
cnMucHJpIGZyb20gdGhlIGluc3RhbGxlZCBmaWxlcworCisgICAgICAgICogQXBpL0Rlcml2ZWRT
b3VyY2VzLnBybzoKKworMjAxMC0wMi0xMCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVy
Y290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7gu
CisKKyAgICAgICAgW1F0XSBNaW5vciBmaXhlcyBvbiBRdFdlYktpdCBoZWFkZXJzIGdlbmVyYXRp
b24uCisKKyAgICAgICAgLSBBZGRzIFF0V2ViS2l0IHRvIHRoZSBnZW5lcmF0ZWQgaGVhZGVycyBk
ZXN0aW5hdGlvbiBwYXRoCisgICAgICAgIC0gSW1wcm92ZSBjb21wYXRpYmlsaXR5IHdpdGggTWlu
R1cKKworICAgICAgICAqIEFwaS9EZXJpdmVkU291cmNlcy5wcm86CisKKzIwMTAtMDItMDkgIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBub2JvZHksIGJ1aWxkIGZpeC4KKworICAgICAgICBbUXRdIEZpeCBzdGFuZGFs
b25lIGJ1aWxkIHdpdGggTWluR1cuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC90c3Rf
cXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaToKKworMjAxMC0wMi0x
MCAgRGllZ28gR29uemFsZXogIDxkaWVnby5nb256YWxlekBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIElt
cGxlbWVudCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoKSBtZXRob2QgaW4gUXQgRFJUIExheW91
dFRlc3RDb250cm9sbGVyLAorICAgICAgICB0byBtYWtlIFF0IERSVCBhYmxlIHRvIGdldCBwYWdl
IG51bWJlci4KKworICAgICAgICBMYXlvdXRUZXN0czoKKyAgICAgICAgICAgIHByaW50aW5nL3Bh
Z2UtYnJlYWstYWx3YXlzLmh0bWwKKyAgICAgICAgICAgIHByaW50aW5nL3BhZ2VOdW1lckZvckVs
ZW1lbnRCeUlkLmh0bWwKKyAgICAgICAgICAgIHByaW50aW5nL2NzczIuMS9wYWdlLWJyZWFrLWJl
Zm9yZS0wMDAuaHRtbAorICAgICAgICAgICAgcHJpbnRpbmcvY3NzMi4xL3BhZ2UtYnJlYWstYWZ0
ZXItMDAwLmh0bWwKKyAgICAgICAgICAgIHByaW50aW5nL2NzczIuMS9wYWdlLWJyZWFrLWFmdGVy
LTAwNC5odG1sCisgICAgICAgICAgICBwcmludGluZy9jc3MyLjEvcGFnZS1icmVhay1iZWZvcmUt
MDAxLmh0bWwKKyAgICAgICAgICAgIHByaW50aW5nL2NzczIuMS9wYWdlLWJyZWFrLWFmdGVyLTAw
MS5odG1sCisgICAgICAgICAgICBwcmludGluZy9jc3MyLjEvcGFnZS1icmVhay1hZnRlci0wMDIu
aHRtbAorICAgICAgICAgICAgcHJpbnRpbmcvY3NzMi4xL3BhZ2UtYnJlYWstYmVmb3JlLTAwMi5o
dG1sCisgICAgICAgICAgICBwcmludGluZy9jc3MyLjEvcGFnZS1icmVhay1pbnNpZGUtMDAwLmh0
bWwKKworICAgICAgICBbUXRdIE1ha2UgcG9zc2libGUgUXQgRFJUIGdldCBhIHBhZ2UgbnVtYmVy
IGZvciBlbGVtZW50IGJ5IElECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNDc3NworCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAg
IChxdF9kcnRfcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKworMjAxMC0wMi0wOSAgWWFlbCBB
aGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBCYXJ0aC4KKworICAgICAgICBbUXRdIFVuaXQgdGVzdCBmb3Igd2luZG93LnJ1bk1vZGFsRGlh
bG9nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDc1
NQorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFRlc3RNb2RhbFBhZ2U6OlRlc3RNb2RhbFBhZ2UpOgorICAgICAgICAoVGVzdE1vZGFsUGFnZTo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6c2hvd01vZGFsRGlhbG9nKToK
KworMjAxMC0wMi0wOSAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFtRdF0gU3luYyB3aXRoIEFQSSBjaGFuZ2VzIGluIE1hZW1vIDUga2luZXRpYyBzY3JvbGxp
bmcKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ3
NDcKKworICAgICAgICBUaGlzIGlzIGEgZm9yd2FyZC1wb3J0IG9mIGh0dHA6Ly9xdC5naXRvcmlv
dXMub3JnLytxdC1kZXZlbG9wZXJzL3F0L3gxMS1tYWVtby9jb21taXQvMDg0OTc1NjEKKworICAg
ICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChxdF9zZW5kU3BvbnRhbmVvdXNFdmVu
dCk6CisgICAgICAgIChRV2ViVmlld0tpbmV0aWNTY3JvbGxlcjo6UVdlYlZpZXdLaW5ldGljU2Ny
b2xsZXIpOgorICAgICAgICAoUVdlYlZpZXdLaW5ldGljU2Nyb2xsZXI6OnNldFdpZGdldCk6Cisg
ICAgICAgIChRV2ViVmlld0tpbmV0aWNTY3JvbGxlcjo6ZXZlbnRGaWx0ZXIpOgorICAgICAgICAo
UVdlYlZpZXdLaW5ldGljU2Nyb2xsZXI6OmNhbmNlbExlZnRNb3VzZUJ1dHRvblByZXNzKToKKyAg
ICAgICAgKFFXZWJWaWV3S2luZXRpY1Njcm9sbGVyOjpjdXJyZW50RnJhbWUpOgorICAgICAgICAo
UVdlYlZpZXdLaW5ldGljU2Nyb2xsZXI6OnNjcm9sbGluZ0ZyYW1lQXQpOgorICAgICAgICAoUVdl
YlZpZXdLaW5ldGljU2Nyb2xsZXI6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChR
V2ViVmlld0tpbmV0aWNTY3JvbGxlcjo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoUVdlYlZp
ZXdLaW5ldGljU2Nyb2xsZXI6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRV2ViVmlld0tpbmV0
aWNTY3JvbGxlcjo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoUVdlYlZpZXdLaW5ldGlj
U2Nyb2xsZXI6OnNlbmRFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6UVdlYlZpZXcpOgorCisy
MDEwLTAyLTA5ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRd
IFdlYmtpdCBpbiBRdCBkb2VzIG5vdCBoYXZlIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTg1CisKKyAgICAg
ICAgQ3JlYXRlIGEgbmV3IGV2ZW50bG9vcCB3aGVuIHJ1bk1vZGFsKCkgaXMgY2FsbGVkLgorICAg
ICAgICBBZGRlZCBjb21lbW50IGluIFFXZWJQYWdlOjpjcmVhdGVXaW5kb3cgdGhhdCB0aGUgYXBw
bGljYXRpb24gaXMgcmVzcG9uc2libGUKKyAgICAgICAgZm9yIHNldHRpbmcgdGhlIG1vZGFsaXR5
IG9mIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3cuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6fkNocm9tZUNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpjYW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6cnVuTW9kYWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0Lmg6CisKKzIwMTAtMDEtMTkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0
aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCisKKyAgICAg
ICAgSW1wbGVtZW50IGZsYXR0ZW5pbmcgb2YgZnJhbWVzZXRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjcxNworCisgICAgICAgIFByaXZhdGVseSBl
eHBvcnQgdGhlIHNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQgc2V0dGluZyBmb3IKKyAgICAg
ICAgdXNlIHdpdGggdGhlIFF0IERSVC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChxdF9kcnRfc2V0RnJhbWVTZXRGbGF0dGVuaW5nRW5hYmxlZCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmNvcmUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIw
MTAtMDItMDUgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgor
CisgICAgICAgIFtRdF0gRml4IGJ1aWxkIG9uIFdpbmRvd3MKKworICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBEZXJpdmVkU291cmNlcyBm
b3Igb3VyIEFQSSBoZWFkZXJzIGZhaWxlZCBvbiBXaW5kb3dzLAorICAgICAgICBkdWUgdG8gV2lu
ZG93cyBub3QgYWNjZXB0aW5nIDsgYXMgYSBjb21tYW5kIHNlcGFyYXRvciwKKyAgICAgICAgbm90
IG5lZWRpbmcgcXVvdGVzIGZvciBlY2hvLCBhbmQgbmVlZGluZyA8IGFuZCA+IGVzY2FwZWQuCisK
KyAgICAgICAgV2Ugbm93IGRldGVjdCBXaW5kb3dzIGFuZCBzZXQgdGhlc2UgcXVvdGUgbWFya2Vy
cyBhbmQKKyAgICAgICAgZXNjYXBlIG1hcmtlcnMgYWNjb3JkaW5nbHksIGFzIHdlbGwgYXMgdXNl
ICYmIGZvciBzZXBhcmF0aW5nCisgICAgICAgIGluZGl2aWR1YWwgY29tbWFuZHMuCisKKyAgICAg
ICAgKiBBcGkvRGVyaXZlZFNvdXJjZXMucHJvOgorCisyMDEwLTAyLTA1ICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZl
bGRtYW4uCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBpbm1wb3J0IG9mIFNjcmlwdEZ1bmN0aW9u
Q2FsbC5oCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzNTkyCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorCisyMDEwLTAyLTA1ICBU
b3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEdlbmVyYXRlIGNvbnZl
bmllbmNlIGhlYWRlcnMgKFFXZWJWaWV3LCBldGMpIHVzaW5nIHFtYWtlCisKKyAgICAgICAgSW4g
UXQgdGhpcyBpcyBkb25lIHVzaW5nIHN5bmNxdCwgYnV0IHdlIHVzZSBhIHByby1maWxlIGluc3Rl
YWQKKyAgICAgICAgdGhhdCBnZW5lcmF0ZXMgbWFrZWZpbGUtcnVsZXMgZm9yIGVhY2ggb2YgdGhl
IGV4dHJhIGhlYWRlcnMuCisKKyAgICAgICAgVGhlc2UgZXh0cmEgaGVhZGVycyBhcmUgaW5zdGFs
bGVkIGFsb25nc2lkZSB0aGUgbm9ybWFsIGhlYWRlcnMuCisKKyAgICAgICAgKiBBcGkvRGVyaXZl
ZFNvdXJjZXMucHJvOiBBZGRlZC4gTGlzdCBvZiBoZWFkZXJzICsgcHJvIGZpbGUgbWFnaWMKKyAg
ICAgICAgKiBBcGkvaGVhZGVycy5wcmk6IFJlbW92ZWQsIGxpc3Qgb2YgaGVhZGVycyBpcyBub3cg
aW4gdGhlIGFib3ZlIGZpbGUKKworMjAxMC0wMi0wNCAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5y
b3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQu
CisKKyAgICAgICAgW1F0XSBUdW5pbmcgYW5kIG9wdGltaXphdGlvbnMgdG8gR3JhcGhpY3NMYXll
clF0LiBNYWlubHkgcmVkdWNlZCB1c2FnZQorICAgICAgICBvZiBRVGltZXI6OnNpbmdsZVNob3Qs
IGFuZCBtb3ZlZCBzeW5jTGF5ZXJzKCkgZnJvbSBwYWludCgpIHRvIHVwZGF0ZSgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDA2MgorCisgICAgICAg
ICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1By
aXZhdGU6OnVwZGF0ZSk6IE1vdmVkIHRoZSBzeW5jIG9wZXJhdGlvbiB0byB1cGRhdGUKKyAgICAg
ICAgKFFHcmFwaGljc1dlYlZpZXc6OnBhaW50KTogTW92ZWQgdGhlIHN5bmMgb3BlcmF0aW9uIHRv
IHVwZGF0ZQorCisyMDEwLTAyLTAzICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4K
KworICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KKworICAgICAgICBbUXRdIFJvbGwtb3V0
IHI1NDI4MSBiZWNhdXNlIGl0IGJyb2tlIHRoZSBidWlsZCBvbiB0aGUgUXQgUmVsZWFzZSBib3Qu
CisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhp
Y3NXZWJWaWV3UHJpdmF0ZTo6UUdyYXBoaWNzV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUUdy
YXBoaWNzV2ViVmlld1ByaXZhdGU6Om1hcmtGb3JTeW5jKToKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXdQcml2YXRlOjp1cGRhdGUpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFpbnQp
OgorCisyMDEwLTAyLTAyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAg
IERvIG5vdCB1c2UgYSBwcm94eSB3aWRnZXQgZm9yIHRoZSBRQ29tYm9Cb3ggb24gTWFlbW8gNSwg
YXMgaXQKKyAgICAgICAgaXMgbm90IHdvcmtpbmcgcHJvcGVybHkgYW5kIGl0IGlzIG5vdCBuZWVk
ZWQgYXQgYWxsLCBhcyB0aGUKKyAgICAgICAgY29tYm9ib3hlcyBjb21lcyB1cCBpbiB0aGVpciBm
dWxsIHdpZHRoIG9uIHRoZSBzY3JlZW4gYW5kCisgICAgICAgIGRvIG5vdCBkZXBlbmQgb24gdmll
dy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorCisyMDEwLTAyLTAy
ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlciBT
dGFtcGVkIGJ5IEhvbGdlciBGcmV5dGhlci4KKworICAgICAgICBbUXRdIEZpeCBzdHlsZSBpc3N1
ZSBpZGVudGlmaWVkIGluIGJ1ZzoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM0MzI5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXZWJQYWdlOjpJ
bnNwZWN0b3JDbGllbnRXZWJQYWdlKToKKyAgICAgICAgRml4IGluZGVudGF0aW9uLgorCisyMDEw
LTAyLTAxICBKZXNzaWUgQmVybGluICA8amJlcmxpbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KKworICAgICAgICBbUXRdIEVuYWJsZSBpbnNwZWN0
aW5nIHRoZSBXZWIgSW5zcGVjdG9yIGluIFF0TGF1bmNoZXIKKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzMjkKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFdlYlBhZ2U6Okluc3BlY3RvckNsaWVudFdlYlBhZ2UpOgorICAgICAgICBBbGxvdyB0
aGUgRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCBzZXR0aW5nIHRvIGRlZmF1bHQgdG8gdHJ1ZSBmb3Ig
dGhlIHBhZ2UgY29udGFpbmluZyB0aGUgV2ViIEluc3BlY3Rvci4KKworMjAxMC0wMi0wMiAgQW5k
cmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRGlzcGxheSBI
VE1MIHRhZ3MgdmVyYmF0aW0gaW4gSlMgYWxlcnQvY29uZmlybS9wcm9tcHQgYm94ZXMKKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0MjkKKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdEFs
ZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChR
V2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6CisKKzIwMTAtMDItMDIgIE5vYW0gUm9zZW50aGFs
ICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRW5hYmxlIGEgd2F5IHRvIG1l
YXN1cmUgRlBTIGluIFFHVkxhdW5jaGVyCisgICAgICAgIHJ1biBRR1ZMYXVuY2hlciB3aXRoIC0t
c2hvdy1mcHMgdG8gc2VlIG9uZ29pbmcgZnBzIG1lYXN1cmVtZW50cworICAgICAgICBUaGlzIGlz
IG5vdCBtZWFudCBhcyBhY2N1cmF0ZSBGUFMsIGJ1dCByYXRoZXIgYXMgYSB3YXkgdG8gZmluZAor
ICAgICAgICBpbXByb3ZlbWVudHMvcmVncmVzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NDUwCisKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9t
YWluLmNwcDoKKyAgICAgICAgKE1haW5WaWV3OjpNYWluVmlldyk6IGluaXRpYWxpemUgRlBTIHZh
bHVlcworICAgICAgICAoTWFpblZpZXc6OnBhaW50RXZlbnQpOiBjb3VudCBhIHBhaW50ZWQgZnJh
bWUgaGVyZQorICAgICAgICAoTWFpblZpZXc6OnByaW50RnBzKTogd2UgcHJpbnQgdGhlIGZwcyB3
aXRoIHFEZWJ1ZyBldmVyeSA1IHNlY29uZHMuCisKKzIwMTAtMDEtMjkgIEJlbiBNdXJkb2NoICA8
YmVubUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4K
KworICAgICAgICBbQW5kcm9pZF0gQW5kcm9pZCBuZWVkcyBmdW5jdGlvbmFsaXR5IGluIHRoZSBD
aHJvbWVDbGllbnQgdG8gYmUgaW5mb3JtZWQgd2hlbiB0b3VjaCBldmVudHMgYXJlIGFuZCBhcmUg
bm90IG5lZWRlZCBieSB0aGUgd2VicGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MjE1CisKKyAgICAgICAgQWRkIG5lZWRUb3VjaEV2ZW50cygp
IHRvIHRoZSBDaHJvbWVDbGllbnQgd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIHBhZ2UgZGVjaWRl
cyBpdCBuZWVkcyBvciBubyBsb25nZXIgbmVlZHMgdG8gYmUgaW5mb3JtZWQgb2YgdG91Y2ggZXZl
bnRzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpuZWVkVG91Y2hFdmVudHMpOiBBZGQgYW4gZW1w
dHkgaW1wbGVtZW50YXRpb24uCisKKzIwMTAtMDEtMjkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uCisKKyAgICAgICAgRGlzYWJsZSBhdXRvLXVwcGVyY2FzZSBhbmQgcHJlZGljdGl2ZSB0
ZXh0IG9uIE1hZW1vNSwganVzdCBsaWtlIHRoZQorICAgICAgICBidWlsZC1pbiBNaWNyb0IgQnJv
d3Nlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKwor
MjAxMC0wMS0yOCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAg
IFtRdF0gU3VwcG9ydCBraW5ldGljIHNjcm9sbGluZyBvbiBNYWVtbyA1CisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MjY3CisKKyAgICAgICAgUGF0
Y2ggYnkgUmFsZiBFbmdlbHMgPHJhbGYuZW5nZWxzQG5va2lhLmNvbT4gYW5kCisgICAgICAgIFJv
YmVydCBHcmllYmwgPHJncmllYmxAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICAqIEFwaS9xd2Vi
dmlldy5jcHA6CisgICAgICAgIChRV2ViVmlld0tpbmV0aWNTY3JvbGxlcjo6UVdlYlZpZXdLaW5l
dGljU2Nyb2xsZXIpOgorICAgICAgICAoUVdlYlZpZXdLaW5ldGljU2Nyb2xsZXI6OmV2ZW50Rmls
dGVyKToKKyAgICAgICAgKFFXZWJWaWV3S2luZXRpY1Njcm9sbGVyOjpjdXJyZW50RnJhbWUpOgor
ICAgICAgICAoUVdlYlZpZXdLaW5ldGljU2Nyb2xsZXI6OnNjcm9sbGluZ0ZyYW1lQXQpOgorICAg
ICAgICAoUVdlYlZpZXdLaW5ldGljU2Nyb2xsZXI6OmF0dGFjaFRvV2lkZ2V0KToKKyAgICAgICAg
KFFXZWJWaWV3S2luZXRpY1Njcm9sbGVyOjpyZW1vdmVGcm9tV2lkZ2V0KToKKyAgICAgICAgKFFX
ZWJWaWV3S2luZXRpY1Njcm9sbGVyOjpwb3NpdGlvblJhbmdlKToKKyAgICAgICAgKFFXZWJWaWV3
S2luZXRpY1Njcm9sbGVyOjpwb3NpdGlvbik6CisgICAgICAgIChRV2ViVmlld0tpbmV0aWNTY3Jv
bGxlcjo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJWaWV3S2luZXRpY1Njcm9sbGVyOjpz
ZXRQb3NpdGlvbik6CisgICAgICAgIChRV2ViVmlldzo6UVdlYlZpZXcpOgorCisyMDEwLTAxLTI4
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBEbyBub3Qgc2V0IHRo
ZSBjb21ib2JveCBmb250IG9uIE1hZW1vNSBhbmQgUzYwOyB1c2UgdGhlCisgICAgICAgIGRlZmF1
bHQgaW5zdGVhZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnBvcHVsYXRlKToK
KworMjAxMC0wMS0yOCAgVHJvbmQgS2plcm7DpXNlbiA8dHJvbmRAdHJvbGx0ZWNoLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEZpeCBm
b3IgZW5kbGVzcyBwcmludCBsb29wIHdoZW4gcHJpbnRpbmcgd2ViIHBhZ2VzCisKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6cHJpbnQpOgorCisyMDEw
LTAxLTI3ICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAg
ICAgW1F0XSBEUlQgUHJvdmlkZSB3b3JrZXIgdGhyZWFkIGFiaWxpdHkgdG8gdHJhY2sgY291bnRl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MjIx
CisKKyAgICAgICAgSW1wbGVtZW50IHdvcmtlclRocmVhZENvdW50KCkgaW4gTGF5b3V0VGVzdENv
bnRyb2xsZXIgb2YgUXQgRFJUCisKKyAgICAgICAgVGVzdHM6CisgICAgICAgIGZhc3Qvd29ya2Vy
cy9kZWRpY2F0ZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sCisgICAgICAgIGZhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWZyYW1lLWxpZmVjeWNsZS5odG1sCisgICAgICAgIGZhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sCisgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXIt
bGlmZWN5Y2xlLmh0bWwKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChx
dF9kcnRfd29ya2VyVGhyZWFkQ291bnQpOgorCisyMDEwLTAxLTI3ICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8g
R29tYm9zLgorCisgICAgICAgIFtRdF0gVXBkYXRlIHRoZSAuZGVmIGZpbGVzIHdpdGggZXhwb3J0
ZWQgc3ltYm9scworCisgICAgICAgICogc3ltYmlhbi9lYWJpL1F0V2ViS2l0dS5kZWY6IEFkZCB0
d28gbWFuZ2xlZCBtaXNzaW5nIG5ldyBzeW1ib2xzIGZvciBhcm0gZWFiaS4KKworMjAxMC0wMS0y
NyAgS2VudCBIYW5zZW4gIDxrZW50LmhhbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBNZXRhLW1ldGhvZHMgY2FuJ3Qg
YmUgaW50cm9zcGVjdGVkIHVzaW5nIEVTNSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MDg3CisKKyAgICAgICAgVGVzdCB0aGF0IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgYW5kCisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eU5hbWVzIHdvcmsgd2l0aCBtZXRhLW1ldGhvZHMuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJh
bWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMTAtMDEtMjYgIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gU2hvdyBjb21ib2JveGVzIG9uIE1hZW1v
IDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MDg4
CisKKyAgICAgICAgRG9uJ3QgdHJ5IHRvIHNob3cgdGhlIGNvbWJvYm94IGJ5IHNpbXVsYXRpbmcg
YSBtb3VzZSBldmVudCBmcm9tIFFDdXJzb3I6OnBvcygpIHRvCisgICAgICAgIGdldCB0aGUgY29t
Ym9ib3ggcG9zaXRpb24gcmlnaHQuIFRoZSBwb3NpdGlvbiBvbiBNYWVtbyA1IGlzIGluZGVwZW5k
ZW50IGZyb20gdGhlIG1vdXNlCisgICAgICAgIGFuZCB0aGVyZSdzIG5vIFFDdXJzb3I6OnBvcygp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CisKKzIwMTAtMDEtMjYg
IEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRmlyc3Qgc3RlcHMgb2YgdGhl
IFF0U2NyaXB0IEFQSS4KKyAgICAgICAgCisgICAgICAgIFR3byBuZXcgY2xhc3NlcyB3ZXJlIGNy
ZWF0ZWQ7IFFTY3JpcHRFbmdpbmUgYW5kIFFTY3JpcHRWYWx1ZS4KKyAgICAgICAgVGhlIGZpcnN0
IHNob3VsZCBlbmNhcHN1bGF0ZSBhIGphdmFzY3JpcHQgY29udGV4dCBhbmQgdGhlIHNlY29uZCBh
IHNjcmlwdAorICAgICAgICB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgQVBJIGlzIHN0
aWxsIGluIGRldmVsb3BtZW50LCBzbyBpdCBpc24ndCBjb21waWxlZCBieSBkZWZhdWx0LgorICAg
ICAgICBUbyB0cmlnZ2VyIGNvbXBpbGF0aW9uLCBwYXNzIC0tcW1ha2Vhcmc9IkNPTkZJRys9YnVp
bGQtcXRzY3JpcHQiIHRvCisgICAgICAgIGJ1aWxkLXdlYmtpdC4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI1NjUKKworICAgICAgICAqIGRvY3Mv
cXR3ZWJraXQucWRvY2NvbmY6CisKKzIwMTAtMDEtMjYgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCisKKyAgICAgICAgW1F0XSBKYXZhU2NyaXB0IHByb21wdCBpcyBjdXJyZW50bHkgYnJv
a2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDkx
NAorCisgICAgICAgIEluIHI1MjE1MiBhIHBhdGNoIHdhcyBsYW5kZWQgdG8gY29udmVydCBhIG51
bGwgUVN0cmluZworICAgICAgICB0byBhbiBlbXB0eSBXZWJDb3JlOjpTdHJpbmcgaW4gY2FzZSB0
aGUgcHJvbXB0IHdhcyBhY2NlcHRlZAorICAgICAgICBidXQgdGhlIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24gcmV0dXJuZWQgdGhlIG51bGwgUVN0cmluZy4KKworICAgICAgICBUaGUgcGF0Y2ggdHJp
ZWQgdG8gYXZvaWQgYXNzaWduIHRvIHJlc3VsdCB0d2ljZSBhbmQKKyAgICAgICAgd2FzIG5vdCBj
aGVja2luZyB0aGUgUVN0cmluZyBpZiBpdCBpcyBudWxsIGJ1dCB0aGUgZGVmYXVsdAorICAgICAg
ICB2YWx1ZS4gVGhpcyBsZWFkIHRvIGFsd2F5cyByZXR1cm5pbmcgYW4gZW1wdHkgc3RyaW5nIG9u
CisgICAgICAgIHN1Y2Nlc3NmdWwgcHJvbXB0cy4gRml4IGl0IGJ5IGNoZWNraW5nIHRoZSB2YXJp
YWJsZSAneCcKKyAgICAgICAgZm9yIGlzTnVsbC4KKworICAgICAgICBUaGUgbWFudWFsIHRlc3Qg
Y2FzZSB1c2VkIGRpZG4ndCBjb3ZlciB0aGUgY2FzZSBvZiBub24KKyAgICAgICAgZW1wdHkgaW5w
dXQsIHJlcGxhY2UgaXQgd2l0aCBhbiBhdXRvbWF0aWMgdGVzdCBjYXNlIHRoYXQKKyAgICAgICAg
c2hvdWxkIGNvdmVyIGFsbCBjYXNlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZh
U2NyaXB0UHJvbXB0KTogRml4IHRoZSBidWcuCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDogQWRkIGF1dG9tYXRpYyB0ZXN0IGNhc2UKKyAgICAgICAgKEpTUHJvbXB0
UGFnZTo6SlNQcm9tcHRQYWdlKToKKyAgICAgICAgKEpTUHJvbXB0UGFnZTo6amF2YVNjcmlwdFBy
b21wdCk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnRlc3RKU1Byb21wdCk6CisKKzIwMTAtMDEt
MjUgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEluIFJl
bmRlclRoZW1lUXQgZGV0ZXJtaW5lIHRoZSBRU3R5bGUgZnJvbSB0aGUgcGFnZSBjbGllbnQgaW5z
dGVhZCBvZiB0aGUgcGFnZSdzIHZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM0MDUzCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5j
cHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6c3R5bGUpOiBJbXBsZW1lbnQg
UVdlYlBhZ2VDbGllbnQ6OnN0eWxlKCkgYW5kIHJldHVybiB0aGUgZ3JhcGhpY3MKKyAgICAgICAg
d2lkZ2V0J3Mgc3R5bGUuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlV2lkZ2V0Q2xpZW50OjpzdHlsZSk6IEltcGxlbWVudCBRV2ViUGFnZUNsaWVudDo6c3R5
bGUoKSBhbmQgcmV0dXJuIHRoZSB3aWRnZXQncyBzdHlsZS4KKworMjAxMC0wMS0yNSAgSmFubmUg
S29za2luZW4gIDxqYW5uZS5wLmtvc2tpbmVuQGRpZ2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIFBob25lIGJhY2t1cCBzdXBwb3J0
IGZvciBRdFdlYmtpdCBmb3IgU3ltYmlhbiBkZXZpY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQwNzcKKworICAgICAgICAqIHN5bWJpYW4vYmFj
a3VwX3JlZ2lzdHJhdGlvbi54bWw6IEFkZGVkLgorCisyMDEwLTAxLTIzICBHaXJpc2ggUmFtYWty
aXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gRml4IHBvc2l0aW9uaW5n
IG9mIENvbWJvQm94IHBvcHVwIGluIFFHcmFwaGljc1dlYlZpZXcuCisgICAgICAgIAorICAgICAg
ICBXcmFwIHRoZSBwb3B1cCBpbiBhIFFHcmFwaGljc1Byb3h5V2lkZ2V0LCBzbyB0aGF0IHRoZSBw
b3B1cAorICAgICAgICB0cmFuc2Zvcm1zIHdpdGggdGhlIGl0ZW0uCisgICAgICAgIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4ODcKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oOgorCisyMDEwLTAxLTIyICBQZXRlciBLYXN0aW5n
ICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KKworICAgICAgICBOb3QgcmV2aWV3ZWQsIGJhY2tvdXQu
CisKKyAgICAgICAgQmFjayBvdXQgcjUyNjczLCB3aGljaCBjYXVzZWQgc2V2ZXJhbCByZWdyZXNz
aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMy
NTMzCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OmhpZGVQb3B1cCk6CisK
KzIwMTAtMDEtMjIgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBT
YXZlIHRoZSBRV2ViUGFnZUNsaWVudCBpbnN0ZWFkIG9mIHRoZSBvd25lcldpZGdldCBpbiBRdEFi
c3RyYWN0V2ViUG9wdXAKKyAgICAgICAgCisgICAgICAgIFRoZSBRV2ViUGFnZUNsaWVudCBpcyBy
ZXF1aXJlZCBmb3IgdGhlIFF0RmFsbGJhY2tXZWJQb3B1cC4gUXRGYWxsYmFja1dlYlBvcHVwIHdp
bGwKKyAgICAgICAgbmVlZCBpdCB0byBjcmVhdGUgYSBRR3JhcGhpY3NQcm94eVdpZGdldCAoaW4g
YSBmdXR1cmUgY29tbWl0KSBmb3IgdGhlIAorICAgICAgICBRR3JhcGhpY3NXZWJWaWV3J3Mgd2Vi
IHBvcHVwLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyk6CisKKzIwMTAt
MDEtMjIgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
UVN0YXRlOjpwb2xpc2hlZCgpIHdhcyByZW5hbWVkIHRvIFFTdGF0ZTo6cHJvcGVydGllc0Fzc2ln
bmVkKCkgd2hlbgorICAgICAgICBRdCA0LjYuMCB3YXMgcmVsZWFzZWQuCisKKyAgICAgICAgKiBR
R1ZMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6OmluaXQpOgorCisyMDEw
LTAxLTIxICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAg
ICAgW1F0XSBhZGQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSBpbiBR
dCBEUlQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
OTQ1CisKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKHF0
X2RydF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKToKKworMjAxMC0w
MS0yMSAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50
IEdyYXBoaWNzTGF5ZXIgZm9yIGFjY2VsZXJhdGVkIGxheWVyIGNvbXBvc2l0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzUxNAorCisgICAgICAg
IEhlcmUgd2UgaGF2ZSB0aGUgUUdyYXBoaWNzV2ViVmlldyBzdXBwb3J0IGZvciBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZworCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAg
ICAgICAoUUdyYXBoaWNzV2ViVmlld092ZXJsYXk6OnEpOiBhY2Nlc3MgdG8gY29udGFpbmVyIG9i
amVjdAorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld092ZXJsYXk6OmJvdW5kaW5nUmVjdCk6IG92
ZXJsYXkgaGFzIHNhbWUgcmVjdCBhcyB0aGUKKyAgICAgICAgd2VidmlldworICAgICAgICAoUUdy
YXBoaWNzV2ViVmlld092ZXJsYXk6OnBhaW50KTogcGFpbnQgZXZlcnl0aGluZyBidXQgdGhlIGNv
bnRlbnRzCisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6UUdyYXBoaWNzV2ViVmll
d1ByaXZhdGUpOiBzb21lIHZhcnMgbmVlZGVkCisgICAgICAgIGZvciBhY2NlbGVyYXRlZCBjb21w
b3NpdGluZworICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6Oik6CisgICAgICAgIChR
R3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6flFHcmFwaGljc1dlYlZpZXdQcml2YXRlKToKKyAgICAg
ICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpzZXRSb290R3JhcGhpY3NMYXllcik6IG1ha2Ug
c3VyZSB3ZSBoYXZlIGEKKyAgICAgICAgc2Nyb2xsYmFyIG92ZXJsYXksIGFuZCB0aGF0IHRoZSBu
ZXcgZ3JhcGhpY3MgbGF5ZXIgaXMgcGFyZW50ZWQgYnkgdGhlCisgICAgICAgIHdlYi12aWV3Cisg
ICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6bWFya0ZvclN5bmMpOiBmbHVzaCBjaGFu
Z2VzIGF0IGVhcmxpZXN0CisgICAgICAgIGNvbnZlbmllbmNlIG9yIGR1cmluZyB0aGUgbmV4dCBk
cmF3CisKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjp1cGRhdGVDb21wb3NpdGlu
Z1Njcm9sbFBvc2l0aW9uKTogc3luYyB0aGUKKyAgICAgICAgcG9zaXRpb24gb2YgdGhlIGNvbXBv
c2l0aW5nIGxheWVyIHdpdGggdGhlIHNjcm9sbCBwb3NpdGlvbgorICAgICAgICAoUUdyYXBoaWNz
V2ViVmlld1ByaXZhdGU6OnN5bmNMYXllcnMpOiBmbHVzaCBjaGFuZ2VzIG5vdworICAgICAgICAo
UUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnNjcm9sbCk6IG1ha2Ugc3VyZSB3ZSBhbHNvIG1vdmUg
dGhlCisgICAgICAgIGNvbXBvc2l0aW5nIGxheWVyCisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3
UHJpdmF0ZTo6dXBkYXRlKTogYWxzbyB1cGRhdGUgdGhlIG92ZXJsYXkgaWYgbmVlZGVkCisgICAg
ICAgIChRR3JhcGhpY3NXZWJWaWV3OjpRR3JhcGhpY3NXZWJWaWV3KTogaW5pdGlhbGl6ZSBvdmVy
bGF5IHdpdGggMAorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6cGFpbnQpOiBwYWludCBvbmx5
IGNvbnRlbnRzIGlmIHdlIGhhdmUgYW4gb3ZlcmxheSwKKyAgICAgICAgc3luYyB0aGUgY29tcG9z
aXRpbmcgbGF5ZXJzIG5vdyBpZiBuZWVkZWQKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OnNl
dFBhZ2UpOiBhbHNvIGNsZWFuIHVwIHRoZSBjb21wb3NpdGluZworICAgICAgICAoUUdyYXBoaWNz
V2ViVmlldzo6dXBkYXRlR2VvbWV0cnkpOiBhbHNvIHVwZGF0ZSBvdmVybGF5IGdlbworICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0R2VvbWV0cnkpOiBhbHNvIHVwZGF0ZSBvdmVybGF5IGdl
bworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3Lmg6IHJlaW1wIGNvbXBvc2l0aW5nIHN0
dWZmIGZyb20gUVdlYlBhZ2VDbGllbnQKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDog
aW5pdCBuZXcgc2V0dGluZ3MgZmxhZyBmb3IgY29tcG9zaXRpbmcgYXMKKyAgICAgICAgZmFsc2UK
KyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KTogYXBwbHkgbmV3IHNldHRpbmdz
IGZsYWcgZm9yIGNvbXBvc2l0aW5nCisgICAgICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5n
cyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOiBuZXcgc2V0dGluZ3MgZmxhZyBmb3Ig
Y29tcG9zaXRpbmcKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOiAKKyAgICAgICAgKFFXZWJW
aWV3OjpzZXRQYWdlKTogcXdlYnZpZXcgZG9lc24ndCBzdXBwb3J0IGNvbXBvc2l0aW5nOiBhbHdh
eXMgZmFsc2UKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6OldlYlZpZXcpOiBzb21lIG1vcmUgY21kbGluZSBhcmd1bWVudHMgKyBjb21wb3NpdGluZwor
ICAgICAgICAoTWFpbldpbmRvdzo6aW5pdCk6IHNvbWUgbW9yZSBjbWRsaW5lIGFyZ3VtZW50cwor
ICAgICAgICAobWFpbik6IGRpdHRvCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmF0dGFjaFJvb3RH
cmFwaGljc0xheWVyKTogcmVpbXAgZm9yCisgICAgICAgIGFjY2VsLWNvbXBvc2l0aW5nCisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNo
cm9uaXphdGlvbik6CisgICAgICAgIHJlaW1wIGZvciBhY2NlbCBjb21wb3NpdGluZworICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMp
OiByZWltcCBmb3IKKyAgICAgICAgYWNjZWwgY29tcG9zaXRpbmcKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOiByZWltcHMgZm9yIGFjY2VsIGNvbXBvc2l0aW5nCisK
KzIwMTAtMDEtMjEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IEltcHJvdmUgdGhlIGF1dG90ZXN0cyBvZiBRdFdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIyMTYKKworICAgICAgICBSZW1vdmUgcVdhaXQo
KSBvZiB0aGUgdGVzdCB3aGVuIHBvc3NpYmxlLgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZEZpbmlzaGVkKToK
KyAgICAgICAgKHRzdF9RV2ViUGFnZTo6ZGF0YWJhc2UpOgorICAgICAgICAodHN0X1FXZWJQYWdl
Ojp0ZXN0RW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpl
cnJvclBhZ2VFeHRlbnNpb24pOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpzY3JlZW5zaG90KToK
KworMjAxMC0wMS0yMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CisKKyAgICAgICAgUHJvc3BlY3RpdmUgYnVpbGQgZml4IGZvciB0aGUgUXQgYnVpbGQuCisKKyAg
ICAgICAgRml4IGNvbXBpbGF0aW9uIGFnYWluc3QgUXQgd2l0aG91dCBXZWJLaXQgc3VwcG9ydCBi
eSBub3QgaW5jbHVkaW5nIFF0V2ViS2l0L1FXZWJWaWV3CisgICAgICAgIGJ1dCB3aWRnZXQuaCBp
bnN0ZWFkIGFuZCBpbnN0YW50aWF0aW5nIFFXZWJWaWV3IHRocm91Z2ggYSB0eXBlZGVmLCB0byBl
bnN1cmUgd2UncmUgdXNpbmcKKyAgICAgICAgb3VyIGxvY2FsbHkgYnVpbHQgV2ViS2l0LgorCisg
ICAgICAgICogdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC5oOgorICAgICAgICAqIHRlc3RzL2h5
YnJpZFBpeG1hcC93aWRnZXQudWk6CisKKzIwMTAtMDEtMjEgIE5vJ2FtIFJvc2VudGhhbCAgPG5v
YW0ucm9zZW50aGFsQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBbUXRdIEFkZGluZyBRUGl4bWFwL1FJbWFnZSBzdXBwb3J0IGZvciB0
aGUgUXQgaHlicmlkIGxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMjQ2MQorCisgICAgICAgICogdGVzdHMvaHlicmlkUGl4bWFwOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9oeWJyaWRQaXhtYXAvaHlicmlkUGl4bWFwLnBybzogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvaHlicmlkUGl4bWFwL3Jlc291cmNlcy5xcmM6IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L2h5YnJpZFBpeG1hcC90c3RfaHlicmlkUGl4bWFwLmNwcDogQWRkZWQuCisgICAgICAgICh0c3Rf
aHlicmlkUGl4bWFwOjp0c3RfaHlicmlkUGl4bWFwKTogdGVzdHMgbW9zdCBvZiB0aGUgdXNlIGNh
c2VzIGZvcgorICAgICAgICBoeWJyaWQgcGl4bWFwL2ltYWdlIG1hbmlwdWxhdGlvbiAKKyAgICAg
ICAgKHRzdF9oeWJyaWRQaXhtYXA6OmluaXQpOiBRVGVzdExpYiBpbml0aWFsaXphdGlvbgorICAg
ICAgICAodHN0X2h5YnJpZFBpeG1hcDo6Y2xlYW51cCk6IFFUZXN0TGliIGNsZWFudXAKKyAgICAg
ICAgKHRzdF9oeWJyaWRQaXhtYXA6Omh5YnJpZFBpeG1hcCk6IHJ1biB0aGUgaHRtbCBmaWxlCisg
ICAgICAgICogdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2lkZ2V0OjpXaWRnZXQpOgorICAgICAgICAoV2lkZ2V0OjpyZWZyZXNoSlMpOgorICAgICAgICAo
V2lkZ2V0OjpzdGFydCk6CisgICAgICAgIChXaWRnZXQ6OmNvbXBsZXRlVGVzdCk6CisgICAgICAg
IChXaWRnZXQ6OnNldFBpeG1hcCk6CisgICAgICAgIChXaWRnZXQ6OnBpeG1hcCk6CisgICAgICAg
IChXaWRnZXQ6OnNldEltYWdlKToKKyAgICAgICAgKFdpZGdldDo6aW1hZ2UpOgorICAgICAgICAo
V2lkZ2V0Ojp+V2lkZ2V0KToKKyAgICAgICAgKFdpZGdldDo6Y2hhbmdlRXZlbnQpOgorICAgICAg
ICAoV2lkZ2V0Ojpjb21wYXJlKToKKyAgICAgICAgKFdpZGdldDo6aW1hZ2VTbG90KToKKyAgICAg
ICAgKFdpZGdldDo6cGl4bWFwU2xvdCk6CisgICAgICAgIChXaWRnZXQ6OnJhbmRvbVNsb3QpOgor
ICAgICAgICAqIHRlc3RzL2h5YnJpZFBpeG1hcC93aWRnZXQuaDogQWRkZWQuCisgICAgICAgICog
dGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC51aTogQWRkZWQuCisgICAgICAgICogdGVzdHMvdGVz
dHMucHJvOgorCisyMDEwLTAxLTIxICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgorCisgICAgICAgIFtRdF0gQ3VzdG9tIHNlbGVjdCBwb3B1cHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOAorCisgICAgICAgIEFkanVz
dGluZyBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyB0byB0aGUgY2hhbmdlcyBpbiBXZWJDb3JlIGxh
eWVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVNlbGVjdFBvcHVwKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxi
YWNrV2ViUG9wdXBDb21ibzo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8pOgorICAgICAgICAoV2Vi
Q29yZTo6UXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNob3dQb3B1cCk6CisgICAgICAgIChXZWJD
b3JlOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6aGlkZVBvcHVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6UXRGYWxsYmFja1dlYlBvcHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCk6CisgICAgICAg
IChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6
UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tX
ZWJQb3B1cDo6cG9wdWxhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tX
ZWJQb3B1cC5oOgorCisyMDEwLTAxLTE5ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFJlbmFt
ZXMgV2ViQ29yZS9icmlkZ2UvcnVudGltZS5bY3BwfGhdIHRvIFdlYkNvcmUvYnJpZGdlL0JyaWRn
ZS5bY3BwfGhdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMzgwMQorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIwMTAtMDEtMTQgIEJy
aWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gUm9iZW4uCisKKyAgICAgICAgRHJhZyBhbmQgRHJvcCBzb3VyY2UvZGVzdGluYXRp
b24gY29kZSBuZWVkcyBjbGVhbnVwLgorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzNjkxPi4KKyAgICAgICAgCisgICAgICAgIFVwZGF0ZSB0byBuZXcg
d2F5IG9mIGNhbGxpbmcgc291cmNlT3BlcmF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6c3Rh
cnREcmFnKToKKworMjAxMC0wMS0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAg
ICAgICBbUXRdIFN5bWJpYW4gYnVpbGQgZml4ZXMuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFn
ZS90c3RfcXdlYnBhZ2UuY3BwOiBJbmNsdWRlIHV0aWwuaAorICAgICAgICAqIHRlc3RzL3Rlc3Rz
LnByaTogRG9uJ3QgZGVmaW5lIFRFU1RTX1NPVVJDRV9ESVIsIGl0IGRvZXNuJ3Qgd29yay4KKyAg
ICAgICAgKiB0ZXN0cy91dGlsLmg6IERlZmluZSBURVNUU19TT1VSQ0VfRElSIGhlcmUsIGp1c3Qg
bGlrZSBpdCdzIGRvbmUgaW4gUXQuCisKKzIwMTAtMDEtMTQgIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gVXBkYXRlIFN5bWJpYW4gLmRlZiBzeW1i
b2wgZXhwb3J0IGZpbGVzIGFmdGVyIHByaXZhdGUgQVBJIGFkZGl0aW9ucy4KKworICAgICAgICAq
IHN5bWJpYW4vYndpbnMvUXRXZWJLaXR1LmRlZjoKKyAgICAgICAgKiBzeW1iaWFuL2VhYmkvUXRX
ZWJLaXR1LmRlZjoKKworMjAxMC0wMS0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KKworICAgICAgICBNb3ZlIG1v
cmUgb2YgdGhlIHNlbGVjdGlvbiBhbmQgY2FyZXQgcGFpbnRpbmcgY29kZSBmcm9tIEZyYW1lIHRv
IFNlbGVjdGlvbkNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzYxOQorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudCk6IFNlZW1zIHBvc3NpYmx5IHdy
b25nIHRvIGJlIGRpcmVjdGx5IGludm9raW5nIHRoaXMKKyAgICAgICAgc2V0Q2FyZXRWaXNpYmxl
IGhlcmUsIGJ1dCBJIHVwZGF0ZWQgaXQgdG8gY2FsbCBpdCBpbiBpdHMgbmV3IGxvY2F0aW9uLgor
CisyMDEwLTAxLTExICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgW1F0XSBB
ZGQgcHJpdmF0ZSBBUEkgZm9yIFFXZWJGcmFtZSBzY3JvbGxpbmcsIHRvIG1haW50YWluIGJpbmFy
eSBjb21wYXRpYmlsaXR5IHdpdGggUXQgNC42LgorCisgICAgICAgIFRoaXMgaXMganVzdCBhIHRl
bXBvcmFyeSBhZGRpdGlvbiB1bnRpbCB3ZSBoYXZlIGludHJvZHVjZWQgI2lmZGVmcyB0byBhbGxv
dworICAgICAgICBzYWZlbHkgcmVtb3ZpbmcgdGhlIHByaXZhdGUgQVBJIGFnYWluLgorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChxdHdlYmtpdF93ZWJmcmFtZV9zY3Jv
bGxSZWN1cnNpdmVseSk6CisKKzIwMTAtMDEtMTAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEByb2Jl
cnRob2dhbi5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAg
ICBbUXRdIEFkZCBlbmFibGVYU1NBdWRpdG9yIHN1cHBvcnQgdG8gUVdlYlNldHRpbmdzIGFuZCBE
UlQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
NDE5CisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIw
MTAtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIE5v
IHJldmlldywgcm9sbGluZyBvdXQgcjUzMDQ0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC81MzA0NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzM0MTkKKyAgICAgICAgCisgICAgICAgIFdlIG5lZWQgdG8gbG9vayBpbnRv
IHRoaXMgc29tZSBtb3JlIGJlY2F1c2UgdGhlIFF0CisgICAgICAgIGJvdCBpcyBmYWlsaW5nIHRo
ZSBYU1NBdWRpdG9yIHRlc3RzLiBTZWUgYnVnICMzMzQxOQorICAgICAgICBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5oOgorCisyMDEwLTAxLTA5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxOQorCisgICAgICAgIEFkZHMg
c3VwcG9ydCBmb3IgdGhlIFhTU0F1ZGl0b3IgdG8gdGhlIFF0IERSVC4KKworICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuY3BwOiBVcGRhdGVkIGNvbW1lbnQgdG8gcmVmbGVjdCBhZGRlZCBrZXkg
WFNTQXVkaXRvckVuYWJsZWQuCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOiBBZGRzIHNl
dHRpbmdzIGtleSBYU1NBdWRpdG9yRW5hYmxlZC4KKworMjAxMC0wMS0wOCAgTHVpeiBBZ29zdGlu
aSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIERlbGVnYXRpb24gY2xp
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgy
NgorCisgICAgICAgIEFkZGVkIG1ldGhvZCBjcmVhdGVQb3B1cCB0byBDaHJvbWVDbGllbnRRdCB1
c2VkIHRvIGNyZWF0ZSBwb3B1cHMuCisgICAgICAgIFF0RmFsbGJhY2tXZWJQb3B1cCBtb3ZlZCBm
cm9tIFdlYkNvcmUvcGxhdGZvcm0vcXQgdG8KKyAgICAgICAgV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVBvcHVwKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxs
YmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRG
YWxsYmFja1dlYlBvcHVwOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQ
b3B1cDo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpz
aG93UG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpoaWRlUG9w
dXApOgorICAgICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlF0RmFsbGJhY2tXZWJQb3B1cDo6c2V0UGFyZW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OmhpZGUpOgorCisyMDEwLTAxLTA3ICBZ
YWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEFsbG93IHRoZSBh
cHBsaWNhdGlvbiB0byBvdmVycmlkZSBvbmxpbmUvb2ZmbGluZSBuZXR3b3JrIHN0YXR1cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2ODQKKworICAg
ICAgICBBZGQgYSBzZXR0aW5nIHNvIHRoYXQgYXBwbGljYXRpb25zIGNhbiBvdmVyaWRlIHRoZSBu
ZXR3b3JrIHN0YXR1cy4KKyAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgdXNlIHRoaXMgc2V0dGlu
ZyBzdGlsbCBuZWVkIHRvIGJsb2NrIG5ldHdvcmsgYWNjZXNzCisgICAgICAgIHRocm91Z2ggUU5B
TS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAocXRfbmV0d29y
a0FjY2Vzc0FsbG93ZWQpOgorCisyMDEwLTAxLTA3ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bi56
aGFuZ0Bub2tpYS5jb20+LCBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IG5lZWQgYW4gQVBJIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBhY3RpdmUgSmF2YXNjcmlwdCBET00g
b2JqZWN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNjczCisKKyAgICAgICAgQWRkIHN1c3BlbmQgYW5kIHJlc3VtZSBET00gb2JqZWN0cyBwcml2
YXRlIEFQSSB0byBRV2ViRnJhbWUuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKHF0X3N1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKHF0X3Jlc3VtZUFj
dGl2ZURPTU9iamVjdHMpOgorCisyMDEwLTAxLTA2ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5r
bGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgW1F0XSBSZXR1cm4gYW4gaW52YWxpZCBRdDo6SW1NaWNyb0ZvY3VzIGlmIHF1ZXJp
ZWQgd2hpbGUgdGhlIHZpZXcgbmVlZHMgdG8gbGF5b3V0LgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzIwNAorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KToKKworMjAxMC0w
MS0wNSAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgRHJhZyAmIGRy
b3AgbGF5b3V0IHRlc3RzIGZhaWwgZXZlbiB3aGVuIHJ1biBtYW51YWxseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMwNTUKKworICAgICAgICBObyBu
ZXcgdGVzdHMuIEZpeCAzIGxheW91dCB0ZXN0cyB3aGVuIHJ1biBtYW51YWxseS4KKyAgICAgICAg
ZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisgICAgICAgIGZhc3QvZXZlbnRzL2RyYWct
YW5kLWRyb3AtZGF0YVRyYW5zZmVyLXR5cGVzLW5vY3Jhc2guaHRtbAorICAgICAgICBmYXN0L2V2
ZW50cy9kcmFnLWFuZC1kcm9wLWZpcmUtZHJhZy1kcmFnb3Zlci5odG1sCisgICAgICAgIFJ1bm5p
bmcgdGhlc2UgdGVzdHMgaW4gRFJUIHdpbGwgYmUgZml4ZWQgaW4gMzEzMzIuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZHJvcEFjdGlvblRvRHJhZ09wKToKKyAgICAg
ICAgKGRyYWdPcFRvRHJvcEFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyYWdF
bnRlckV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ01vdmVFdmVudCk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6CisgICAgICAgIEFjY2VwdCBkcmFn
IGV2ZW50cyBldmVuIGlmIHRoZXkgYXJlIG5vdCBvdmVyIGEgZHJvcCB0YXJnZXQuIAorICAgICAg
ICBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGRyYWcgZXZlbnRzIHdpbGwgY29udGludWUgdG8gYmUg
ZGVsaXZlcmVkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJh
dGlvblRvRHJvcEFjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJvcEFjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6Cisg
ICAgICAgIFNlbmQgZHJhZ0VuZCBldmVudC4KKworMjAxMC0wMS0wNCAgRGFuaWVsIEJhdGVzICA8
ZGJhdGVzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMDk3CisK
KyAgICAgICAgQ2xlYW5zIHVwIHRoZSBGaWxlIG1lbnUgdG8gYmV0dGVyIGNvbmZvcm0gdG8gdGhl
IEZpbGUgbWVudSBpbiBTYWZhcmkKKyAgICAgICAgYm90aCBpbiB0ZXJtcyBvZiBvcHRpb25zIGFu
ZCBrZXlib2FyZCBzaG9ydGN1dHMuIEFkZHMgYSAiUXVpdCIgbWVudQorICAgICAgICBvcHRpb25z
IHRvIGNsb3NlIGFsbCBvcGVuIHdpbmRvd3MuCisKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9tYWlu
LmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6OmJ1aWxkVUkpOgorCisyMDA5LTEyLTMxICBMYXN6
bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEVuYWJsZSBh
bGwgSFRNTDUgcGVyc2lzdGVudCBmZWF0dXJlcyBmb3IgUUdWTGF1bmNoZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzMDg2CisKKyAgICAgICAgKiBR
R1ZMYXVuY2hlci9tYWluLmNwcDogQ2FsbCBlbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpCisgICAg
ICAgIChtYWluKToKKworMjAwOS0xMi0zMCAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJv
c0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgW1F0XSBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZGlzYWJsZSBpbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzI0CisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhlIGJ1aWxkIGJyZWFrLiBTb21lIFF0V2ViS2l0IGlu
dGVyZmFjZXMKKyAgICAgICAgd2lsbCBub3QgYmUgZnVsbHkgZnVuY3Rpb25hbCAobW9zdCBub3Rh
YmxlIFFXZWJJbnNwZWN0b3IpIGlmCisgICAgICAgIElOU1BFQ1RPUiBpcyBkaXNhYmxlZC4KKwor
ICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6
OnNob3dFdmVudCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpjbG9zZUV2ZW50KToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAod2ViQWN0aW9uRm9yQ29udGV4dE1lbnVB
Y3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpnZXRPckNyZWF0ZUluc3BlY3Rvcik6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnVwZGF0ZVBv
c2l0aW9uRGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnNo
b3dXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3NlV2lu
ZG93KToKKworMjAwOS0xMi0zMCAgSmFubmUgS29za2luZW4gIDxqYW5uZS5wLmtvc2tpbmVuQGRp
Z2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBVcHN0cmVhbSBTeW1iaWFuIGRlZiBmaWxlcyBmcm9tIFF0IDQuNi4KKworICAgICAgICBUaGVz
ZSBmaWxlcyBkZWZpbmUgdGhlIEFCSSBvZiBRdFdlYktpdCBvbiBTeW1iaWFuLgorCisgICAgICAg
ICogc3ltYmlhbi9id2lucy9RdFdlYktpdHUuZGVmOiBBZGRlZC4KKyAgICAgICAgKiBzeW1iaWFu
L2VhYmkvUXRXZWJLaXR1LmRlZjogQWRkZWQuCisKKzIwMDktMTItMjkgIERhbmllbCBCYXRlcyAg
PGRiYXRlc0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyOTI1
CisKKyAgICAgICAgQWRkcyBhbiBPcGVuIEZpbGUgZGlhbG9nIHRvIG1ha2UgaXQgY29udmVuaWVu
dCB0byBvcGVuIGEgZmlsZQorICAgICAgICB0byB2aWV3IGluIHRoZSBicm93c2VyLgorCisgICAg
ICAgICogUUdWTGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChNYWluV2luZG93Ojpsb2FkKTog
TW9kaWZpZWQgdG8gY2FsbCBsb2FkVVJMLgorICAgICAgICAoTWFpbldpbmRvdzo6b3BlbkZpbGUp
OiBBZGRlZC4KKyAgICAgICAgKE1haW5XaW5kb3c6OmxvYWRVUkwpOiBBZGRlZC4KKyAgICAgICAg
KE1haW5XaW5kb3c6OmJ1aWxkVUkpOiBBZGRlZCBtZW51IGl0ZW0gT3BlbiBGaWxlLgorCisyMDA5
LTEyLTI5ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtRdF0gRml4IGNyYXNoIG9uIExh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2VtcHR5LWVtYmVkLXNyYy1hdHRyaWJ1dGUuaHRtbAorICAg
ICAgICAKKyAgICAgICAgUmVsYXRlZCB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4MDYKKyAgICAgICAgCisgICAgICAgIElmIGFuIGVtYmVkZGVkIGRvY3VtZW50
IGlzIGxvYWRlZCB3aXRoaW4gYSBwYWdlIGFuZCBpdCBoYXMgYW4gZW1wdHkKKyAgICAgICAgVVJM
LCB1c2UgYSBibGFuayBVUkwgZm9yIHRoZSBsb2FkIHJlcXVlc3QuCisgICAgICAgIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMwMTcKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUpOgorCisyMDA5LTEyLTI5ICBM
YXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubiBhbmQgSG9sZ2VyIEZyZXl0aGVyLgorCisgICAg
ICAgIFtRdF0gUmVtb3ZlIFdlYktpdC9xdC9XZWJLaXRQYXJ0IGVtcHR5IGRpcmVjdG9yeQorCisg
ICAgICAgIFRoZSBjb250ZW50IG9mIHRoZSBkaXJlY3RvcnkgaGFzIGJlZW4gcmVtb3ZlZCBieSBy
MzQ4ODguCisKKyAgICAgICAgKiBXZWJLaXRQYXJ0OiBSZW1vdmVkLgorCisyMDA5LTEyLTI5ICBK
YWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtRdF0gRFJUOiBGcmFtZSBsb2FkZXIgY2FsbGJhY2tz
IGRpZmZlciBmcm9tIHRoZSBNYWMgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzI5ODkKKworICAgICAgICBSZW1vdmUgbWVzc2FnZXMgZnJvbSB0
aGUgY2FsbGJhY2tzIHRoYXQgc2hvdWxkIG5vdCBkdW1wIHRoZW0gdG8gbWF0Y2gKKyAgICAgICAg
dGhlIGV4cGVjdGVkIHJlc3VsdHMgZm9yIHRoZSBodHRwL2xvYWRpbmcgdGVzdHMuCisKKyAgICAg
ICAgVW5za2lwIHNvbWUgaHR0cC9sb2FkaW5nIHRlc3RzIHdoaWNoIHN1Y2NlZWQgbm93LgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGlu
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdp
bGxDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZFJlY2VpdmVJY29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToKKworMjAwOS0xMi0yOSAgUm9i
ZXJ0IEhvZ2FuICA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBbUXRdIGZpeCBmYXN0L2RvbS9XaW5kb3cvd2luZG93
LW9uRm9jdXMuaHRtbAorICAgICAgICAKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGxheW91dHRl
c3Rjb250cm9sbGVyLndpbmRvd0lzS2V5IHRvIFF0IERSVCBhbmQgZml4IGlzc3VlIHdoZXJlCisg
ICAgICAgIHdpbmRvdy5vbmJsdXIgd2FzIGdldHRpbmcgZGlzcGF0Y2hlZCB0d2ljZSBmcm9tIFF0
V2ViS2l0LgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyOTkwCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjpmb2N1c091dEV2ZW50KToKKworMjAwOS0xMi0yNCAgR2lyaXNoIFJh
bWFrcmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBHdXN0YXZvIE5vcm9uaGEuCisKKyAgICAgICAgRG9jIDogUUdyYXBoaWNzV2ViVmlldzo6em9v
bUZhY3RvciB3YXMgaW50cm9kdWNlZCBpbiA0LjYuCisgICAgICAgIAorICAgICAgICAqIEFwaS9x
Z3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKworMjAwOS0xMi0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgSG9sZ2Vy
IEZyZXl0aGVyLgorCisgICAgICAgIE1vdmVkIFF0TGF1bmNoZXIgdG8gV2ViS2l0VG9vbHMvCisK
KyAgICAgICAgKiBRdExhdW5jaGVyOiBSZW1vdmVkLgorICAgICAgICAqIFF0TGF1bmNoZXIvUXRM
YXVuY2hlci5wcm86IFJlbW92ZWQuCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDogUmVt
b3ZlZC4KKworMjAwOS0xMi0yMSAgRGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIERvYzog
TWlub3IgZml4ZXMgdG8gbGFuZ3VhZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
CisyMDA5LTEyLTIxICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IENsZWFuIHVwIHRoZSBXZWJLaXQgbGF5ZXIgdW5pdC10ZXN0cworCisgICAgICAgICAgICAtIFVz
ZSB0ZXN0cy5wcmkgZm9yIGNvbW1vbiBvcHRpb25zCisgICAgICAgICAgICAtIFN0YW5kYXJkaXpl
IGZpbGUgbmFtaW5nCisgICAgICAgICAgICAtIE1vdmUgYWxsIHJlc291cmNlcyB0byAncmVzb3Vy
Y2VzJyBzdWJkaXIKKyAgICAgICAgICAgIC0gU3RhbmRhcmRpemUgaG93IFRFU1RTX1NPVVJDRV9E
SVIgaXMgdXNlZAorICAgICAgICAgICAgLSBHZXQgcmlkIG9mIFVJRDMgZm9yIHN5bWJpYW4gKGF1
dG9nZW5lcmF0ZWQpCisgICAgICAgICAgICAtIERvbid0IGJ1aWxkIGFwcCBidW5kbGVzIG9uIE1h
YyBPUyBYCisKKyAgICAgICAgKiB0ZXN0cy9iZW5jaG1hcmtzL2xvYWRpbmcvbG9hZGluZy5wcm86
IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvbG9hZGluZy90c3RfbG9hZGluZy5w
cm86IFJlbW92ZWQuCisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy9wYWludGluZy9wYWludGlu
Zy5wcm86IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvdHN0X3Bh
aW50aW5nLnBybzogUmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Fn
cmFwaGljc3dlYnZpZXcucHJvOgorICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3F3ZWJlbGVt
ZW50LnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC9xd2ViZWxlbWVudC5xcmM6IFJl
bW92ZWQuCisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvcmVzb3VyY2VzL2ltYWdlLnBuZzog
UmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC9pbWFnZS5wbmcuCisgICAg
ICAgICogdGVzdHMvcXdlYmVsZW1lbnQvcmVzb3VyY2VzL3N0eWxlLmNzczogUmVuYW1lZCBmcm9t
IFdlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC9zdHlsZS5jc3MuCisgICAgICAgICogdGVzdHMv
cXdlYmVsZW1lbnQvcmVzb3VyY2VzL3N0eWxlMi5jc3M6IFJlbmFtZWQgZnJvbSBXZWJLaXQvcXQv
dGVzdHMvcXdlYmVsZW1lbnQvc3R5bGUyLmNzcy4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVu
dC90c3RfcXdlYmVsZW1lbnQucXJjOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUv
cXdlYmZyYW1lLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnFyYzog
UmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL2ltYWdlLnBuZzog
UmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvaW1hZ2UucG5nLgorICAgICAg
ICAqIHRlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvc3R5bGUuY3NzOiBSZW5hbWVkIGZyb20gV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9zdHlsZS5jc3MuCisgICAgICAgICogdGVzdHMvcXdlYmZy
YW1lL3Jlc291cmNlcy90ZXN0MS5odG1sOiBSZW5hbWVkIGZyb20gV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJmcmFtZS90ZXN0MS5odG1sLgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMv
dGVzdDIuaHRtbDogUmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdGVzdDIu
aHRtbC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL3Rlc3RpZnJhbWUuaHRt
bDogUmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFtZS5odG1s
LgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdGlmcmFtZTIuaHRtbDog
UmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdGVzdGlmcmFtZTIuaHRtbC4K
KyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICog
dGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUucXJjOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
cy9xd2ViaGlzdG9yeS9xd2ViaGlzdG9yeS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmhpc3Rv
cnkvcmVzb3VyY2VzL3BhZ2UxLmh0bWw6IFJlbmFtZWQgZnJvbSBXZWJLaXQvcXQvdGVzdHMvcXdl
Ymhpc3RvcnkvZGF0YS9wYWdlMS5odG1sLgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5L3Jl
c291cmNlcy9wYWdlMi5odG1sOiBSZW5hbWVkIGZyb20gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0
b3J5L2RhdGEvcGFnZTIuaHRtbC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeS9yZXNvdXJj
ZXMvcGFnZTMuaHRtbDogUmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS9k
YXRhL3BhZ2UzLmh0bWwuCisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnkvcmVzb3VyY2VzL3Bh
Z2U0Lmh0bWw6IFJlbmFtZWQgZnJvbSBXZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvZGF0YS9w
YWdlNC5odG1sLgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlNS5o
dG1sOiBSZW5hbWVkIGZyb20gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L2RhdGEvcGFnZTUu
aHRtbC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeS9yZXNvdXJjZXMvcGFnZTYuaHRtbDog
UmVuYW1lZCBmcm9tIFdlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS9kYXRhL3BhZ2U2Lmh0bWwu
CisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAg
ICAgKHRzdF9RV2ViSGlzdG9yeTo6KToKKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeS90c3Rf
cXdlYmhpc3RvcnkucXJjOgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3
ZWJoaXN0b3J5aW50ZXJmYWNlLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViaW5zcGVjdG9yL3F3
ZWJpbnNwZWN0b3IucHJvOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3F3ZWJwYWdlLnBybzoK
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvZnJhbWVfYS5odG1sOiBSZW5hbWVk
IGZyb20gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVzdC9mcmFtZV9hLmh0bWwuCisg
ICAgICAgICogdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2lmcmFtZS5odG1sOiBSZW5hbWVkIGZy
b20gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVzdC9pZnJhbWUuaHRtbC4KKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaWZyYW1lMi5odG1sOiBSZW5hbWVkIGZyb20g
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVzdC9pZnJhbWUyLmh0bWwuCisgICAgICAg
ICogdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2lmcmFtZTMuaHRtbDogUmVuYW1lZCBmcm9tIFdl
YktpdC9xdC90ZXN0cy9xd2VicGFnZS9mcmFtZXRlc3QvaWZyYW1lMy5odG1sLgorICAgICAgICAq
IHRlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9pbmRleC5odG1sOiBSZW5hbWVkIGZyb20gV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVzdC9pbmRleC5odG1sLgorICAgICAgICAqIHRlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmJhY2tB
Y3Rpb25VcGRhdGUpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpmcmFtZUF0KToKKyAgICAgICAg
KHRzdF9RV2ViUGFnZTo6ZXJyb3JQYWdlRXh0ZW5zaW9uSW5GcmFtZXNldCk6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5xcmM6CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3F3ZWJwbHVn
aW5kYXRhYmFzZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3Jlc291cmNlcy9mcmFtZV9hLmh0bWw6IFJlbmFtZWQg
ZnJvbSBXZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvZGF0YS9mcmFtZV9hLmh0bWwuCisgICAgICAg
ICogdGVzdHMvcXdlYnZpZXcvcmVzb3VyY2VzL2luZGV4Lmh0bWw6IFJlbmFtZWQgZnJvbSBXZWJL
aXQvcXQvdGVzdHMvcXdlYnZpZXcvZGF0YS9pbmRleC5odG1sLgorICAgICAgICAqIHRlc3RzL3F3
ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OnJldXNlUGFn
ZSk6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OmNyYXNoVGVzdHMpOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5xcmM6CisgICAgICAgICogdGVzdHMvcmVzb3VyY2VzL2lt
YWdlMi5wbmc6IFJlbmFtZWQgZnJvbSBXZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291cmNl
cy9pbWFnZTIucG5nLgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnByaTogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvdGVzdHMucHJvOgorCisyMDA5LTEyLTE4ICBBcml5YSBIaWRheWF0ICA8YXJpeWEu
aGlkYXlhdEBnbWFpbC5jb20+CisKKyAgICAgICAgQnVpbGQgZml4LCBub3QgcmV2aWV3ZWQuCisK
KyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6c2V0
VG91Y2hNb2NraW5nKTogTGVhdmUgc2V0VG91Y2hNb2NraW5nIGFzIGFuIGVtcHR5CisgICAgICAg
IGZ1bmN0aW9uIGZvciBRdCA8IDQuNiBzbyB0aGF0IG1vYyBzdGlsbCBjcmVhdGVzIGEgc2xvdCBm
b3IgdGhhdC4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCB3b3VsZCBoYXZlIGdlbmVyYXRlZCBhIGxp
bmtlciBlcnJvci4KKworMjAwOS0xMi0xOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUXQgYnVpbGQgZml4CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOiBB
ZGRlZCAjaW5jbHVkZS4KKworMjAwOS0xMi0xOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUXQgYnVpbGQgZml4CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICBBZGRlZCAjaW5jbHVkZXMuCisKKzIwMDktMTItMTggIEpvZSBMaWdtYW4gIDxq
b3NlcGgubGlnbWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEFkZCBuZXcgQVBJIHRvIFFXZWJGcmFt
ZSB0byBzY3JvbGxSZWN1cnNpdmVseSBzdGFydGluZyB3aXRoIGFueSBjc3Mgb3ZlcmZsb3cgCisg
ICAgICAgIHRoZW4gY2hlY2tpbmcgY3VycmVudCBmcmFtZSBhbmQgdGhlbiBhbmNlc3RvcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjY4CisKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnNj
cm9sbE92ZXJmbG93KToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2Nyb2xsUmVjdXJzaXZlbHkpOgor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoK
KyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnFyYzoKKyAgICAgICAgKiB0ZXN0
cy9xd2ViZnJhbWUvdGVzdGlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvdGVzdGlmcmFtZTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1l
L3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDA5LTEyLTE4ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9u
LmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0
YsO4LgorCisgICAgICAgIFtRdF0gRml4IGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0b3VjaCBtb2Nr
aW5nLgorCisgICAgICAgIERvbid0IHNlbmQgdGhlIGZha2UgdG91Y2ggZXZlbnRzIHRvIHRoZSB2
aWV3LCBhcyB0aGF0J2xsIHRyaWdnZXIgdGhlCisgICAgICAgIGV2ZW50IGZpbHRlciBhZ2Fpbi4K
KworICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChNYWluV2luZG93Ojpz
ZW5kVG91Y2hFdmVudCk6CisKKzIwMDktMTItMTcgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1p
bi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciBtb2NraW5nIHRvdWNoIGV2ZW50cyB3
aXRoIFEoR1YpTGF1bmNoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMyNDM0CisKKyAgICAgICAgVGhlIGV2ZW50IGRlbGl2ZXJ5IHNob3VsZCBnbyB0
aHJvdWdoIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudCgpCisKKyAgICAgICAgKiBRdExhdW5j
aGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6c2VuZFRvdWNoRXZlbnQpOgorCisy
MDA5LTEyLTE3ICBLaW0gR3LDtm5ob2xtICA8a2ltLmdyb25ob2xtQG5vbW92b2suY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWRkIHN1
cHBvcnQgZm9yIHRvdWNoIGV2ZW50cyBpbiBRV2ViVmlldyBhbmQgUUdyYXBoaWNzV2ViVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI0MzIKKwor
ICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXc6OlFHcmFwaGljc1dlYlZpZXcpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2Nl
bmVFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3
OjpRV2ViVmlldyk6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQpOgorCisyMDA5LTEyLTE3ICBL
aW0gR3LDtm5ob2xtICA8a2ltLmdyb25ob2xtQG5vbW92b2suY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIG1v
Y2tpbmcgdG91Y2ggZXZlbnRzIHdpdGggUXRMYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI0MzQKKworICAgICAgICAqIFF0TGF1bmNoZXIv
bWFpbi5jcHA6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKyAgICAgICAgKE1h
aW5XaW5kb3c6OnNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKE1haW5XaW5kb3c6OmV2ZW50Rmls
dGVyKToKKyAgICAgICAgKE1haW5XaW5kb3c6OnNldFRvdWNoTW9ja2luZyk6CisgICAgICAgIChN
YWluV2luZG93OjpzZXR1cFVJKToKKworMjAwOS0xMi0xNCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEZpeCBKYXZhU2NyaXB0IHByb21w
dCBiZWhhdmlvciBmb3IgZW1wdHkvbnVsbCBzdHJpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5MTQKKworICAgICAgICBUaGUgcGF0Y2ggaXMg
YmFzZWQgb24gdGhlIHdvcmsgZG9uZSBieSBHdXB0YSBNYW5pc2guCisKKyAgICAgICAgSW4gdGhl
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEphdmFTY3JpcHQgcHJvbXB0CisgICAgICAg
IHdlIGFyZSB1c2luZyBhIFFJbnB1dERpYWxvZyB0byBnZXQgdGhlIHRleHQgYW5kIHRoaXMgaGFz
CisgICAgICAgIG9uZSBxdWlyayB3aXRoIHJlZ2FyZCB0byBub3QgZW50ZXJpbmcgYW55IHRleHQu
CisKKyAgICAgICAgSW4gb3RoZXIgV2ViS2l0IHBvcnRzIGFuZCBpbiBGaXJlZm94IGFuIGVtcHR5
IHN0cmluZyBpcworICAgICAgICByZXR1cm5lZCBidXQgaW4gdGhlIFF0IGNhc2UgaXQgaXMgYSBu
dWxsIHN0cmluZy4KKworICAgICAgICBDaGFuZ2UgdGhlIEFQSSBkb2N1bWVudGF0aW9uIGluIFFX
ZWJQYWdlIHRvIG1lbnRpb24gd2Ugd2FudCB0bworICAgICAgICBoYXZlIGEgbm9uIG51bGwgc3Ry
aW5nIGJ1dCBkbyB0aGUgZml4dXAgaW4gdGhlIENocm9tZUNsaWVudFF0CisgICAgICAgIHRvIHN1
cHBvcnQgZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6IENoYW5nZSBBUEkgZG9jdW1lbnRhdGlv
bgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0UHJvbXB0KTogRml4dXAgbnVs
bCBRU3RyaW5nCisKKzIwMDktMTEtMjQgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVj
a2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgW1F0XSBEbyBub3QgZGlzYWJsZSB0aGUgaW5zcGVjdG9yIG9uIHNob3cgYW5kIGhp
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODUx
CisKKyAgICAgICAgT24gUXQvWDExIHdpdGggc29tZSB3aW5kb3cgbWFuYWdlcnMgdGhlIHdpbmRv
dyB3aWxsIGJlCisgICAgICAgIGhpZGRlbiB3aGVuIHN3aXRjaGluZyB3aW5kb3dzLiBJbiB0aGlz
IGNhc2UgYWxsIHRoZSByZXN1bHRzCisgICAgICAgIGFyZSBnb25lIHdoZW4gY29taW5nIGJhY2sg
dG8gdGhlIHdpbmRvdy4KKworICAgICAgICBBdHRlbXB0IHRvIHVzZSB0aGUgQ2xvc2VFdmVudCB0
byBmaWd1cmUgb3V0IGlmIHRoZSB3aW5kb3cKKyAgICAgICAgd2FzIGNsb3NlZCBhbmQgd2l0aGRy
YXduIGFzIHRoaXMgaXMgbW9yZSBmcmllbmRseSB0byB0aGUKKyAgICAgICAgdXNlciBvZiB0aGUg
aW5zcGVjdG9yIGNsaWVudC4KKworICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDoKKyAg
ICAgICAgKFFXZWJJbnNwZWN0b3I6OmhpZGVFdmVudCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9y
OjpjbG9zZUV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5oOgorCisyMDA5LTEy
LTE0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
W1F0XSBJbXByb3ZlIHRoZSBhdXRvdGVzdHMgb2YgUXRXZWJraXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMjE2CisKKyAgICAgICAgUmVmYWN0b3Ig
dHN0X3F3ZWJlbGVtZW50IHRvIHJlbW92ZSB0aGUgcVdhaXQoKQorCisgICAgICAgICogdGVzdHMv
cXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVu
dDo6c3R5bGUpOgorCisyMDA5LTEyLTE0ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgRml4IHRoZSBRV2ViUGFnZSBpbnB1dE1ldGhvZHMoKSBhdXRvdGVzdCBhZnRlciByNTE3NTgK
KyAgICAgICAgdG8gY29tcGFyZSB0aGUgUXQ6OkltRm9udCBwcm9wZXJ0eSdzIGZhbWlseSBhZ2Fp
bnN0IGFuIGV4cGxpY2l0bHkKKyAgICAgICAgcHJldmlvdXNseSBjb25maWd1cmVkIGZhbWlseS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI0OTEK
KworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKKzIwMDktMTItMTMgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgorCisg
ICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMy
NDk5CisgICAgICAgIEFkZCBjbGllbnQgYmFzZWQgR2VvbG9jYXRpb24gcHJvdmlkZXIKKworICAg
ICAgICBBZGQgZmlyc3QgY3V0IG9mIGEgY2xpZW50IGJhc2VkIEdlb2xvY2F0aW9uIHByb3ZpZGVy
LiBUaGlzIGlzIGd1YXJkZWQgYnkKKyAgICAgICAgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikgYW5kIGlzIG9mZiBieSBkZWZhdWx0IGZvciBub3cuIFRoaXMgYWRkcyBhCisgICAgICAg
IEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCBpbnRlcmZhY2UgdGhhdCBuby1vbmUgY3VycmVu
dGx5IGltcGxlbWVudHMsCisgICAgICAgIGJ1dCB3aWxsIGluIGEgc3Vic2VxdWVudCBwYXRjaC4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OlFXZWJQYWdlUHJpdmF0ZSk6CisKKzIwMDktMTItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBBZGQgYSB0ZXN0IGluIFF0IGZvciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwMDUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5MDA4CisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0
X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMTItMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCisKKyAg
ICAgICAgW1F0XSBSZS1lbmFibGUgUVdlYlZpZXc6OnJlbmRlckhpbnRzIHByb3BlcnR5IGZvciBR
dCBmb3IgU3ltYmlhbgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODI3MworCisgICAgICAgIFRoZSBidWcgaW4gUXQncyBtb2MgdGhhdCB0cmlnZ2Vy
ZWQgYSBsaW5raW5nIGVycm9yIHdoZW4gZGVjbGFyaW5nIHRoaXMKKyAgICAgICAgcHJvcGVydHkg
aGFzIGJlZW4gZml4ZWQgYW5kIHdlIGNhbiByZW1vdmUgdGhlIHdvcmthcm91bmQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOS0xMi0xMSAgWWFlbCBBaGFyb24gIDx5YWVsLmFo
YXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFF0IHZl
cnNpb25zIDwgNC42LgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAg
ICh0c3RfUVdlYlZpZXc6OnJldXNlUGFnZSk6CisKKzIwMDktMTItMTEgIEdpcmlzaCBSYW1ha3Jp
c2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9y
IEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIFVwZGF0ZWQgUVdlYkVsZW1lbnQgZG9jdW1l
bnRhdGlvbgorICAgICAgICAKKyAgICAgICAgZmluZEFsbCgpIHJldHVybnMgYSBRV2ViRWxlbWVu
dENvbGxlY3Rpb24sIG5vdCBRTGlzdDxRV2ViRWxlbWVudD4uCisKKyAgICAgICAgKiBkb2NzL3dl
YmtpdHNuaXBwZXRzL3dlYmVsZW1lbnQvbWFpbi5jcHA6CisgICAgICAgIChmaW5kQWxsKToKKwor
MjAwOS0xMi0xMSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdy
w7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBGb3J3YXJkIFF0IHRvdWNoIGV2ZW50cyB0byB0
aGUgZXZlbnQgaGFuZGxlciBhcyBwbGF0Zm9ybSB0b3VjaCBldmVudHMuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMTE0CisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp0b3VjaEV2ZW50KToK
KyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoK
KworMjAwOS0xMi0wNyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgor
CisgICAgICAgIFtRdF0gSW1wcm92ZSB0aGUgYXV0b3Rlc3RzIG9mIFF0V2Via2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjIxNgorCisgICAgICAg
IFJlbW92ZSB0aGUgY2FsbHMgdG8gcVdhaXQoKSBvZiB0aGUgYXV0b3Rlc3Qgb2YgUVdlYlZpZXcK
KworICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgICh0
c3RfUVdlYlZpZXc6OnJldXNlUGFnZSk6CisKKzIwMDktMTItMDcgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEltcHJvdmUgdGhlIGF1dG90
ZXN0cyBvZiBRdFdlYmtpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzIyMTYKKworICAgICAgICBSZWZhY3RvciB0c3RfcXdlYmZyYW1lIHRvIHJlbW92
ZSBxV2FpdCgpIGFuZCB1c2UKKyAgICAgICAgdGhlIGZ1bmN0aW9uIHdhaXRGb3JTaWduYWwoKSBm
cm9tIHV0aWwuaAorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3Bw
OgorCisyMDA5LTEyLTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CisKKyAgICAgICAgW1F0XSBJbXByb3ZlIHRoZSBhdXRvdGVzdHMgb2YgUXRXZWJraXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMjE2CisKKyAgICAg
ICAgUmVmYWN0b3IgdGhlIHRlc3Qgb2YgUUdyYXBoaWNzV2ViVmlldzoKKyAgICAgICAgLW1ha2Ug
d2FpdEZvclNpZ25hbCgpIGF2YWlsYWJsZSB0byBhbGwgdGhlIHRlc3RzLgorICAgICAgICAtcmVt
b3ZlIFFUZXN0OjpxV2FpdCgpCisKKyAgICAgICAgKiB0ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Rz
dF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojpj
cmFzaE9uVmlld2xlc3NXZWJQYWdlcyk6CisgICAgICAgICogdGVzdHMvdXRpbC5oOgorICAgICAg
ICAod2FpdEZvclNpZ25hbCk6CisKKzIwMDktMTItMDcgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxn
aXJpc2hAZm9yd2FyZGJpYXMuaW4+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgW1F0XSBQbHVnaW5zOiBGb3JjZSB3aW5kb3dsZXNzIG1vZGUgd2hlbiB0
aGVyZSBpcyBubyBuYXRpdmUgd2luZG93IGhhbmRsZQorICAgICAgICAKKyAgICAgICAgSW5qZWN0
IHdtb2RlPW9wYXF1ZSB3aGlsZSBpbnN0YW50aWF0aW5nIHRoZSBwbHVnaW4gZm9yIHRoZSBjYXNl
IHdoZW4gdGhlCisgICAgICAgIHdlYnBhZ2UgaXMgbm90IGJhY2tlZCBieSBhIG5hdGl2ZSB3aW5k
b3cgaGFuZGxlLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMyMDU5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZVBsdWdpbik6CisKKzIwMDktMTItMDQgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1
cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIENvcnJlY3RzIFF0TGF1bmNoZXIgc3R5bGUKKwor
ICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChXZWJQYWdlOjphY2NlcHRO
YXZpZ2F0aW9uUmVxdWVzdCk6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKyAg
ICAgICAgKE1haW5XaW5kb3c6OndlYlBhZ2UpOgorICAgICAgICAoTWFpbldpbmRvdzo6d2ViVmll
dyk6CisgICAgICAgIChNYWluV2luZG93OjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgIChNYWlu
V2luZG93Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAoTWFpbldpbmRvdzo6c2hvd0xpbmtIb3Zl
cik6CisgICAgICAgIChNYWluV2luZG93Ojp6b29tSW4pOgorICAgICAgICAoTWFpbldpbmRvdzo6
em9vbU91dCk6CisgICAgICAgIChNYWluV2luZG93OjpwcmludCk6CisgICAgICAgIChNYWluV2lu
ZG93OjpzZXRFZGl0YWJsZSk6CisgICAgICAgIChNYWluV2luZG93OjpkdW1wSHRtbCk6CisgICAg
ICAgIChNYWluV2luZG93OjpzZWxlY3RFbGVtZW50cyk6CisgICAgICAgIChNYWluV2luZG93Ojpu
ZXdXaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6c2V0dXBVSSk6CisgICAgICAgIChXZWJQ
YWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToKKyAg
ICAgICAgKG1haW4pOgorCisyMDA5LTEyLTA0ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50
dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBRdExhdW5jaGVyOiBhZGQgYSBtZW51IHRvIHNo
b3cgb3IgaGlkZSB0aGUgd2ViIGluc3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMTQ5CisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4u
Y3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yOjpzaG93RXZlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yOjpoaWRlRXZlbnQp
OgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAgICAgIChNYWluV2luZG93
OjpzZXR1cFVJKToKKworMjAwOS0xMi0wNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxr
ZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8u
CisKKyAgICAgICAgU3BsaXQgb3V0IHRoZSByZW5kZXJQcml2YXRlIGluIHR3byBtZXRob2RzLCBv
bmUgZm9yIHdvcmtpbmcgb24KKyAgICAgICAgcmVsYXRpdmUgY29vcmRpbmF0ZXMgKHJlbGF0aXZl
IHRvIHRoZSB2aWV3cG9ydCkgYW5kIG9uZSBmb3IKKyAgICAgICAgd29ya2luZyBvbiBhYnNvbHV0
ZSBjb29yZGluYXRlcy4gVGhlIGxhdHRlciBpcyBtb3JlIGVmZmVjaWVudAorICAgICAgICBmb3Ig
aW1wbGVtZW50aW5nIHRpbGluZywgYXMgeW91IGRvbid0IG5lZWQgdHJhbnNsYXRlIHRoZSBjb29y
ZHMsCisgICAgICAgIGFuZCBiZWNhdXNlIGl0IGF2b2lkIGNsaXBwaW5nIHRvIHRoZSB2aWV3cG9y
dC4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlcywgc28gbm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpy
ZW5kZXJDb250ZW50c0xheWVyQWJzb2x1dGVDb29yZHMpOgorICAgICAgICAoUVdlYkZyYW1lUHJp
dmF0ZTo6cmVuZGVyUmVsYXRpdmVDb29yZHMpOgorICAgICAgICAoUVdlYkZyYW1lOjpyZW5kZXIp
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorCisyMDA5LTEyLTA0ICBUb3IgQXJuZSBW
ZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFsbG93IHJlbW92aW5nICdxcmMnIGFz
IGEgbG9jYWwgc2VjdXJpdHkgb3JpZ2luIHNjaGVtZQorCisgICAgICAgICogdGVzdHMvcXdlYnBh
Z2UvdHN0X3F3ZWJwYWdlLmNwcDoKKworMjAwOS0xMi0wNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRv
ci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCisKKyAgICAgICAgW1F0XSBDbGVhbiB1cCBhcmd1bWVudCBwYXJzaW5nIGluIHRoZSBR
dExhdW5jaGVyCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorCisyMDA5LTEyLTA0
ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0
XSBQcmV2ZW50IHRoZSBpbnNwZWN0b3IgZnJvbSBjbG9zaW5nIGl0cyB3cmFwcGluZyB3aWRnZXQu
CisgICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhbnltb3JlIHNpbmNlIHdlIG5vdyBoaWRl
IHRoZSBlbWJlZGRlZAorICAgICAgICBjbG9zZSBidXR0b24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjE0OQorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50UXQ6OnNob3dXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
UXQ6OmNsb3NlV2luZG93KToKKworMjAwOS0xMi0wMyAgxLBzbWFpbCBEw7ZubWV6ICA8aXNtYWls
QG5hbXRyYWMub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAg
ICAgIEZpeCBjb21waWxhdGlvbiB3aGVuIFNWRyBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAocXRfZHJ0X3BhdXNlU1ZHQW5pbWF0aW9uKToKKwor
MjAwOS0xMi0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIxNDIz
Nj4gYW5kIGh0dHA6Ly93ZWJraXQub3JnL2IvMzIwNTIgLSBJbXBsZW1lbnQgSFRNTDUgc3RhdGUg
b2JqZWN0IGhpc3RvcnkgQVBJCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhp
blBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoK
KworMjAwOS0xMi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGRoY3AtMTcyLTI4LTE3NC0y
MjAuc3BiLmNvcnAuZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhh
dGNoZXIuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgdGhlIHNldHRpbmdzIHN1
cHBvcnQgaW4gaW5zcGVjdG9yIGNvbnRyb2xsZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMDc2CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRRdDo6cG9wdWxhdGVTZXR0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpzdG9yZVNldHRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dmFyaWFudFRvU2V0dGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpzZXR0aW5nVG9WYXJpYW50KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorCisyMDA5LTEyLTAzICBCZW4gTXVyZG9jaCAg
PGJlbm1AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisK
KyAgICAgICAgW0FuZHJvaWRdIFRoZSBGcmFtZUxvYWRlckNsaWVudCBpcyB1bmF3YXJlIG9mIEJh
Y2tGb3J3YXJkTGlzdCBjaGFuZ2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE5MTQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRBZGRCYWNrRm9yd2FyZEl0ZW0pOiBBZGQgYW4gZW1wdHkgaW1wbGVtZW50YXRp
b24uIE1ldGhvZCBhZGRlZCB0byBGcmFtZUxvYWRlckNsaWVudCBieSBBbmRyb2lkIChzZWUgYnVn
KS4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVt
b3ZlQmFja0ZvcndhcmRJdGVtKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUJhY2tGb3J3YXJkSW5kZXgpOiBkaXR0by4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDktMTIt
MDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAg
Tm90IHJldmlld2VkLiBUcnkgdG8gZml4IFF0IGJ1aWxkLgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgIChxdF9kcnRfcGF1c2VTVkdBbmltYXRpb24pOgorCisyMDA5LTEy
LTAxICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBBZGQgU1ZHIGFuaW1hdGlvbiB0
ZXN0IGZyYW1ld29yayB3aXRoICdzbmFwc2hvdCcgZnVuY3Rpb25hbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4OTcKKworICAgICAgICBBZGQg
QVBJIHVzZWQgYnkgdGhlIG5ldyAnc2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZScg
RFJUIG1ldGhvZCwKKyAgICAgICAgZm9yd2FyZGluZyB0aGUgY2FsbCB0byBTVkdEb2N1bWVudEV4
dGVuc2lvbnMsIGlmIFNWRyBpcyBlbmFibGVkLgorCisgICAgICAgIEltcGxlbWVudGVkIGp1c3Qg
bGlrZSB0aGUgZXhpc3RpbmcgcGF1c2VBbmltYXRpb24qIG1ldGhvZHMgZm9yIENTUyBhbmltYXRp
b25zLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChxdF9kcnRfcGF1
c2VTVkdBbmltYXRpb24pOgorCisyMDA5LTEyLTAxICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4
OTgKKworICAgICAgICBNYWtlcyBRdExhdW5jaGVyIGRlZmF1bHQgdG8gdGhlIGh0dHAgc2NoZW1l
IGZvciBVUkxzLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1h
aW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6Y2hhbmdlTG9jYXRp
b24pOgorICAgICAgICAobWFpbik6CisKKzIwMDktMTEtMzAgIEFiaGluYXYgTWl0aGFsICA8YWJo
aW5hdi5taXRoYWxAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIFtRdF1bU3ltYmlhbl0gUmVwb3J0IFN5bWJpYW5PUyBpbiB1c2VyIGFn
ZW50IHN0cmluZyBmb3IgU3ltYmlhbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzE5NjEKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKworMjAwOS0xMS0zMCAgTGFzemxvIEdv
bWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBGaXggbWlub3Igd2Fu
aW5nIGluIFF0V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTk2MworCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKEVycm9yUGFnZTo6ZXh0ZW5zaW9uKTogUmVtb3ZlIGluZm8gd2FyaWFibGUg
YXMgaXQgaXMKKyAgICAgICAgbm90IHVzZWQuCisKKzIwMDktMTEtMjggIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFtRdF0gU29mdHdhcmVJbnB1dFBhbmVs
UmVxdWVzdCBldmVudCBzZW50IHdoZW4gY2xpY2tpbmcgaW4gbmV3bHkgbG9hZGVkIHBhZ2UKKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0MDEKKwor
ICAgICAgICBEb24ndCBzZXQgdGhlIGV2ZW50IHVubGVzcyB0aGVyZSBpcyBhIGZvY3VzZWQgbm9k
ZSB3ZSBjYW4gdXNlCisgICAgICAgIGZvciBlZGl0aW5nIGFmdGVyd2FyZHMuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0
d2FyZUlucHV0UGFuZWwpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5j
cHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKKzIwMDktMTEtMjYg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IEhvbGdlciBGcmV5dGhlci4KKworICAgICAgICBSZW1vdmVkIHVudXNl
ZCBJQ08gaW1hZ2UgcGx1Z2luIGhhbmRsZXIuCisKKyAgICAgICAgKiBQbHVnaW5zL0lDT0hhbmRs
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsdWdpbnMvSUNPSGFuZGxlci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2lucy5wcm86IFJlbW92ZWQuCisKKzIwMDktMTEtMTIg
IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0
XSBEbyBub3Qgc2hvdyB0aGUgUVdpZGdldCB3aGVuIHRoZSBXZWJDb3JlOjpXaWRnZXQgaXMgaGlk
ZGVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTIw
MworCisgICAgICAgIFRoZSBjbGlwcGluZyBjb2RlIHdhcyBtYWtpbmcgYSBRV2lkZ2V0IHZpc2li
bGUgZXZlbiBpZiB0aGUKKyAgICAgICAgV2ViQ29yZTo6V2lkZ2V0IHdhcyBoaWRkZW4uIEZpeCB0
aGUgYnVnIGJ5IGNhbGxpbmcgc2V0VmlzaWJsZQorICAgICAgICBvbmx5IGlmIHRoZSBXZWJDb3Jl
OjpXaWRnZXQgV2lkZ2V0Ojppc1NlbGZWaXNpYmxlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdFBsdWdpbldp
ZGdldDo6c2hvdyk6IE92ZXJyaWRlIFdlYkNvcmU6OldpZGdldDo6c2hvdyB0byBjYWxsIGhhbmRs
ZVZpc2liaWxpdHkKKyAgICAgICAgKFdlYkNvcmU6OlF0UGx1Z2luV2lkZ2V0OjpoYW5kbGVWaXNp
YmlsaXR5KTogTmV3IG1ldGhvZCB0byBjYWxsIHNldFZpc2libGUgd2hlbiB3ZSBhcmUgdmlzaWJs
ZQorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKTogSGlkZSB0aGUg
UVdpZGdldCBieSBkZWZhdWx0CisKKzIwMDktMTEtMjMgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBVcGRhdGVkIHRoZSBRV2ViRWxlbWVudCBkb2N1bWVudGF0aW9uIHdpdGggbGlua3Mg
dG8gZXhhbXBsZXMgYW5kCisgICAgICAgIGV4dGVybmFsIHJlc291cmNlcy4KKyAgICAgICAgRml4
ZWQgdGhlIHByb2plY3QgZmlsZSBmb3IgdGhlIHdlYmVsZW1lbnQgc25pcHBldCBhbmQgdGlkaWVk
IHVwIHRoZQorICAgICAgICBtYXJrZXJzIHVzZWQgZm9yIHF1b3RpbmcgdGhlIGNvZGUuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBl
dHMvd2ViZWxlbWVudC9tYWluLmNwcDoKKyAgICAgICAgKGZpbmRBbGwpOgorICAgICAgICAqIGRv
Y3Mvd2Via2l0c25pcHBldHMvd2ViZWxlbWVudC93ZWJlbGVtZW50LnBybzoKKworMjAwOS0xMS0y
MyAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBX
cm9uZyBydW50aW1lIGluc3RhbmNlIG9iamVjdHMgb2Ygd3JhcHBlZCBRT2JqZWN0cyBtYXkgYmUg
dXNlZCBpZgorICAgICAgICB0aGUgd3JhcHBlZCBvYmplY3QgZGllZCBiZWZvcmUgdGhlIGdjIHJl
bW92ZWQgdGhlIGluc3RhbmNlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMTY4MQorCisgICAgICAgIEFkZGVkIGEgdW5pdC10ZXN0IHRvIHZlcmlm
eSB0aGF0IHdyYXBwaW5nIGEgUU9iamVjdCB3aXRoIHRoZQorICAgICAgICBzYW1lIGlkZW50aXR5
IGFzIGEgcHJldmlvdXNseSBidXQgbm93IGRlYWQgb2JqZWN0IHdvcmtzLgorCisgICAgICAgICog
dGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDA5LTExLTE5ICBKb2NlbHlu
IFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBBZGQgaW5z
dGFudGlhdGlvbiB0ZXN0cyBmb3IgUVdlYkluc3BlY3Rvci4KKworICAgICAgICAqIHRlc3RzL3F3
ZWJpbnNwZWN0b3IvcXdlYmluc3BlY3Rvci5wcm86IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3
ZWJpbnNwZWN0b3IvdHN0X3F3ZWJpbnNwZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRzdF9R
V2ViSW5zcGVjdG9yOjphdHRhY2hBbmREZXN0cm95KToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5w
cm86CisKKzIwMDktMTEtMTkgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBbUXRdIEZpeCBRV2ViSW5zcGVjdG9yIGRlc3RydWN0aW9uIHByb2JsZW0u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTY2NAor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp+UVdlYlBh
Z2UpOgorCisyMDA5LTExLTE5ICBPbGl2aWVyIEdvZmZhcnQgIDxvZ29mZmFydEB0cm9sbHRlY2gu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtR
dF0gTm9ybWFsaXplIHNpZ25hbCBhbmQgc2xvdCBzaWduYXR1cmVzLgorCisgICAgICAgICogQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0UGFn
ZSk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRQ
YWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldEZyYW1lKToKKyAgICAg
ICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5j
cHA6CisgICAgICAgICh3cmFwSW5GdW5jdGlvbik6CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1l
L3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFn
ZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6Om1vZGlmaWVkKToKKyAgICAgICAgKHRzdF9R
V2ViUGFnZTo6ZGF0YWJhc2UpOgorCisyMDA5LTExLTE4ICBMYXN6bG8gR29tYm9zICA8bGFzemxv
LjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFJlbW92ZSBzdXBwb3J0IGZvciBRdCB2NC4z
IG9yIG9sZGVyIHZlcnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yOTQ2OQorCisgICAgICAgICogQXBpL3Fjb29raWVqYXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIEFwaS9xY29va2llamFyLmg6IFJlbW92ZWQuCisgICAgICAgICogQXBpL3Fn
cmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6ZXZlbnQpOgor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJraXRnbG9iYWwu
aDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIEFw
aS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmg6IFJlbW92ZWQuCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QpOgorICAgICAg
ICAoUVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFFXZWJQYWdl
OjphY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAg
KiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OmxvYWQpOgorICAgICAgICAo
UVdlYlZpZXc6OmV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKyAgICAgICAgKiBR
dExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6cHJpbnQpOgorICAgICAg
ICAoTWFpbldpbmRvdzo6c2V0dXBVSSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIwMDktMTEtMTggIFNodSBDaGFuZyAgPENoYW5nLlNodUBu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAg
W1F0XSBBZGQgc3VwcG9ydCBmb3IgZGlzcGxheWluZyBkZWxldGVCdXR0b24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTU2MAorCisgICAgICAgIFRl
c3Q6IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvNTQwODI1NS5odG1sCisKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKGdyYXBoaWNzKToKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMDktMTEtMTggIFBhdWwgT2xhdiBUdmV0ZSAgPHBhdWwu
dHZldGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIFtRdF0gTWFrZSB0aGUgUVdlYkVsZW1lbnQ6OnJlbmRlcigpIHRlc3QgcGFzcyB3
aGVuIHBpeG1hcHMgYXJlbid0IDMyIGJpdC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50
L3RzdF9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnJlbmRlcik6
CisKKzIwMDktMTEtMTggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgQ2xh
cmlmeSBhbmQgc2ltcGxpZnkgdGhlIGxlZ2FsIHNlY3Rpb24gaW4gdGhlIG92ZXJ2aWV3IGRvY3Vt
ZW50YXRpb24sCisgICAgICAgIGFmdGVyIHJldmlldyB3aXRoIG91ciBsZWdhbCB0ZWFtLgorCisg
ICAgICAgICogZG9jcy9xdHdlYmtpdC5xZG9jOgorCisyMDA5LTExLTE4ICBUb3IgQXJuZSBWZXN0
YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBRdExhdW5jaGVyIHN1cHBvcnQgZm9y
IG9wZW5pbmcgbGlua3MgaW4gdGhlIGRlZmF1bHQgYnJvd3NlcgorCisgICAgICAgIFRoaXMgY2Fu
IGJlIHRyaWdnZXJlZCBieSBlaXRoZXIgdGhlIGNvbnRleHQgbWVudSBvciBieSBjbGlja2luZyBh
IGxpbmsKKyAgICAgICAgd2hpbGUgaG9sZGluZyBkb3duIHRoZSBBbHQga2V5LiBPcGVuaW5nIGEg
bGluayBpbiBhIG5ldyB3aW5kb3dzIGlzCisgICAgICAgIHRyaWdnZXJlZCBieSBob2xkaW5nIGRv
d24gU2hpZnQuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorCisyMDA5LTExLTE3
ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFFHTExhdW5j
aGVyIGRvZXMgbm90IHN1cHBvcnQgZHJhZyZkcm9wIG9mIGxvY2FsIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTA1NworCisgICAgICAgIEVu
YWJsZSBhY2NlcHRpbmcgZmlsZXMgaW4gUUdyYXBoaWNzV2ViVmlldy4KKworICAgICAgICAqIEFw
aS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6OlFHcmFw
aGljc1dlYlZpZXcpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6ZHJhZ0VudGVyRXZlbnQp
OgorCisyMDA5LTExLTE3ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0
XSBiZXR0ZXIgdGVzdCBjb3ZlcmFnZSBmb3IgRXJyb3JQYWdlRXh0ZW5zaW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTU4MworCisgICAgICAgIElt
cHJvdmVkIHRoZSBjb3ZlcmFnZSBvZiBjdXJyZW50IEVycm9yUGFnZUV4dGVuc2lvbiB0ZXN0cyBi
eQorICAgICAgICBhZGRpbmcgYXV0b3Rlc3RzIGludm9sdmluZyBmcmFtZXNldCBhbmQgaWZyYW1l
cy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAg
IChFcnJvclBhZ2U6OmV4dGVuc2lvbik6IE1ha2UgdGhlIEVycm9yUGFnZUV4dGVuc2lvbgorICAg
ICAgICB0byB3b3JrIGZvciBhbGwgZnJhbWVzLCBub3Qgb25seSB0aGUgbWFpbiBmcmFtZS4KKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6ZXJyb3JQYWdlRXh0ZW5zaW9uKTogU3RvcCB1c2luZworICAg
ICAgICB0aGUgJ2ZyYW1lc2V0Lmh0bWwnIHJlc291Y2UgaW4gdGhpcyBtZXRob2Qgc2luY2UKKyAg
ICAgICAgYW4gYXV0b3Rlc3Qgc3BlY2lmaWMgZm9yIGZyYW1lc2V0J3MgaXMgYmVpbmcgYWRkZWQu
CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbkluSUZyYW1lcyk6IEFk
ZGVkLgorICAgICAgICAodHN0X1FXZWJQYWdlOjplcnJvclBhZ2VFeHRlbnNpb25JbkZyYW1lc2V0
KTogQWRkZWQuCisKKzIwMDktMTEtMTYgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgorCisgICAgICAgIEFQSSBkb2N1bWVudGF0aW9uIGZpeGVzLgorCisgICAgICAgICogQXBp
L3FncmFwaGljc3dlYnZpZXcuY3BwOiBSZW1vdmVkIGR1cGxpY2F0ZSBkb2NzLgorICAgICAgICAq
IEFwaS9xd2ViZWxlbWVudC5jcHA6IEFkZGVkIG1pc3NpbmcgZG9jcy4KKyAgICAgICAgKiBBcGkv
cXdlYnNldHRpbmdzLmNwcDogRGl0dG8uCisKKzIwMDktMTEtMTQgIEFudG9uaW8gR29tZXMgIDx0
b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBbUXRdIEJyb2tlbiBiYWNrL2ZvcndhcmQgYWZ0ZXIgdXNpbmcgRXJyb3JQ
YWdlRXh0ZW5zaW9uIHRvIHNldCBlcnJvciBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDU3MworCisgICAgICAgIEltcGxlbWVudGVkIGF1dG90
ZXN0cyBmb3IgY292ZXJpbmcgdGhlIGJhY2svZm9yd2FyZAorICAgICAgICByZXNldCBwcm9ibGVt
IGludm9sdmluZyBlcnJvciBwYWdlcy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbik6
CisKKzIwMDktMTEtMTMgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFVwZGF0ZSBmb3IgY2hhbmdlcyB0byBGcmFtZUxvYWRlckNsaWVudAorCisgICAgICAgIEZpeGVz
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzMxMTI0PiBUZWxsIHRoZSBXZWJGcmFtZUxvYWREZWxlZ2F0
ZSB3aGVuCisgICAgICAgIHdpbmRvdyBvYmplY3RzIGluIGlzb2xhdGVkIHdvcmxkcyBhcmUgY2xl
YXJlZAorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAg
IFJlcGxhY2VkIHdpbmRvd09iamVjdENsZWFyZWQgd2l0aCB0aGlzIGZ1bmN0aW9uLiBEb2VzIG5v
dGhpbmcgaWYgdGhlCisgICAgICAgIHBhc3NlZC1pbiB3b3JsZCBpcyBub3QgdGhlIG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLgorCisyMDA5LTExLTEzICBBbmRyYXMgQmVjc2kgIDxiZWNzaS5hbmRy
YXNAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEVuYWJsZSBQYWdlIENhY2hlIGlmIHNldE1h
eGltdW1QYWdlc0luQ2FjaGUgbmVlZHMgaXQuCisgICAgICAgIFRoaXMgZml4ZXMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjY2LgorCisgICAgICAgICogQXBpL3F3
ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUpOgorCisyMDA5LTEx
LTEzICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAg
W1F0XSBGaXggaW5pdGlhbCBRV2ViVmlldyBmb2N1cyBiZWhhdmlvci4KKworICAgICAgICBmb2N1
c0NvbnRyb2xsZXItPnNldEZvY3VzZWQodHJ1ZSkgd2FzIG5vdCBhbHdheXMgY2FsbGVkLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NjYKKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZvY3Vz
SW5FdmVudCk6CisKKzIwMDktMTEtMTMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0
Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUXQgQVBJCisKKyAgICAgICAgKiBB
cGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA5LTExLTEzICBUb3IgQXJu
ZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBVc2UgY29ycmVjdCBpbnN0YWxsLXBhdGgg
d2hlbiBydW5uaW5nIHFkb2MzCisKKyAgICAgICAgKiBkb2NzL2RvY3MucHJpOgorCisyMDA5LTEx
LTEyICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
biBzaG91bGQgdGFrZSBGcmFtZSBhcyB0aGUgYXJndW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMzkzCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFzIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnJlbmRlclRyZWVEdW1wKToKKworMjAwOS0xMS0x
MiAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEphbiBBbG9uem8uCisKKyAgICAgICAgW1F0XSBWYXJpb3VzIGRvYyBmaXhlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEzNTgKKworICAg
ICAgICBRV2ViUGFnZSdzIGNvbnN0cnVjdG9yIGRvY3MgYXJlIG1lbnRpb25pbmcgIlFXZWJWaWV3
IjoKKyAgICAgICAgIkNvbnN0cnVjdHMgYW4gZW1wdHkgUVdlYlZpZXcgd2l0aCBwYXJlbnQiLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOS0xMS0xMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIEN1c3RvbSBwcmludGluZyBz
aHJpbmsgZmFjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjkwNDIKKworICAgICAgICBUaGlzIHJldmVydHMgY29tbWl0IHI0OTc2OS4gVGhlIHB1
YmxpYyBBUEkgZm9yIHRoaXMgbmVlZHMgdG8gYmUgcmV2aWV3ZWQKKyAgICAgICAgYmVmb3JlIGl0
cyBpbmNsdXNpb24gaW4gUXQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5n
czo6UVdlYlNldHRpbmdzKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMDkt
MTEtMTEgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFZhcmlvdXMg
ZG9jIGZpeGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMTM1OAorCisgICAgICAgIEZpeGVkIHdyb25nIGRvY3VtZW50YXRpb246IGl0ZW0ncyBkaW1l
bnNpb25zIGRvIGZpdCB0byBXZWIgcGFnZQorICAgICAgICBjb250ZW50IGJ5IGRlZmF1bHQuCisK
KyAgICAgICAgS2VubmV0aCBhZ3JlZWQgdG8gbGFuZCB0aGlzIGFzIGEgZm9sbG93dXAgcGF0Y2gg
dG8gdGhlCisgICAgICAgIGp1c3QgbGFuZGVkIGRvY3VtZW50YXRpb24gcGF0Y2guCisKKyAgICAg
ICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisKKzIwMDktMTEtMTEgIERhdmlkIEJvZGRp
ZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIFZhcmlvdXMgZG9jIGZpeGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTMyMworCisgICAgICAg
IEZpeGVkIGFuZCBzeW5jaHJvbml6ZWQgUVdlYlZpZXcgcmVsYXRlZCBkb2N1bWVudGF0aW9uLgor
CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAqIEFwaS9xd2Vi
dmlldy5jcHA6CisKKzIwMDktMTEtMTEgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2Vu
bmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRib3QgZml4LgorCisg
ICAgICAgIEV4cG9ydCBhIG1ldGhvZCB0byB0aGUgRFJUIHRvIGtub3cgaWYgdGhlIGRvY3VtZW50
IGhhcyBhCisgICAgICAgIGRvY3VtZW50IGVsZW1lbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKHF0X2RydF9oYXNEb2N1bWVudEVsZW1lbnQpOgorCisyMDA5LTEx
LTExICBMaWFuZyBRSSAgPGxpYW5nLnFpQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIEZpeCB0
c3RfcXdlYnBhZ2UgYW5kIHRzdF9xd2ViZnJhbWUgY29tcGlsYXRpb24gb24gU3ltYmlhbi4KKwor
ICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucHJvOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS9x
d2VicGFnZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoK
KworMjAwOS0xMS0xMSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
Rml4IGEgY3Jhc2ggaW4gdGhlIGxheW91dCB0ZXN0IHBsdWdpbnMvZG9jdW1lbnQtb3Blbi5odG1s
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6dG9Q
bGFpblRleHQpOgorCisyMDA5LTExLTExICBXYXJ3aWNrIEFsbGlzb24gIDx3YXJ3aWNrLmFsbGlz
b25Abm9raWEuY29tPiwgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRd
IFJlZ3Jlc3Npb246IFByZXNlcnZlIHRoZSBwYXJlbnQgb2YgcGx1Z2luIG9iamVjdHMgd2hlbiB1
c2luZworICAgICAgICBRdFdlYktpdCB3aXRoIG9ubHkgYSBRV2ViUGFnZS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKTogRG9uJ3QgcmVwYXJlbnQKKyAg
ICAgICAgcGx1Z2lucyB0byAwLgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChQbHVnaW5Db3VudGVyUGFnZTo6UGx1Z2luQ291bnRlclBhZ2UpOiBJ
bml0aWFsaXplIG1fcGx1Z2luUGFyZW50IHRvIDAuCisgICAgICAgIChQbHVnaW5Db3VudGVyUGFn
ZTo6flBsdWdpbkNvdW50ZXJQYWdlKTogRGVsZXRlIHRoZSBwbHVnaW4gcGFyZW50IGxhdGVyCisg
ICAgICAgIChhZnRlciB0aGUgcGFnZSkKKyAgICAgICAgKFBsdWdpblRyYWNlclBhZ2U6OmNyZWF0
ZVBsdWdpbik6IEFzc2lnbiBhIGR1bW15IHBhcmVudCB0byB0aGUgcGx1Z2luLgorICAgICAgICAo
UGx1Z2luVHJhY2VyUGFnZTo6UGx1Z2luVHJhY2VyUGFnZSk6IFNldCB1cCB0aGUgcGx1Z2luIHBh
cmVudC4KKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y3JlYXRlVmlld2xlc3NQbHVnaW4pOiBWZXJp
ZnkgdGhhdCBmb3Igdmlld2xlc3MgcGFnZXMgdGhlCisgICAgICAgIHBsdWdpbiBwYXJlbnQgcmVt
YWlucyB1bmNoYW5nZWQuCisKKzIwMDktMTEtMTEgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJv
bGx0ZWNoLmNvbT4KKworICAgICAgICBbUXRdIERvYzogQWRkZWQgaW50ZXJuYWwgb3IgaGlkZGVu
IHBsYWNlaG9sZGVyIGRvY3VtZW50YXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorCisyMDA5LTExLTExICBNYXJ0aW4gU21pdGggIDxtc21pdGhAdHJvbGx0ZWNoLmNvbT4KKwor
ICAgICAgICBbUXRdIGRvYzogQ2hhbmdlZCBUcm9sbHRlY2ggdG8gTm9raWEKKworICAgICAgICAq
IEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDktMTEtMTEgIExhc3psbyBHb21ib3MgIDxsYXN6bG8u
MS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTMyMworICAgICAgICBGaXggYSBmZXcgY29tcGlsZXIgd2FybmluZ3MKKworICAg
ICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDogQWRkIGV4dHJhIGJyYWNr
ZXRzIAorICAgICAgICB0byBtYWtlIGl0IGV4cGxpY2l0IHdoZXJlIHRoZSBlbHNlIGNhc2UgYmVs
b25ncworCisyMDA5LTExLTExICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAg
IEZpeCBlbmFibGluZyBvZiBzb2Z0d2FyZSBpbnB1dCBwYW5lbCB3aGVuIGFjdGl2YXRpbmcgZWRp
dGFibGUgZWxlbWVudHMKKyAgICAgICAgaW4gUUdyYXBoaWNzV2ViVmlldy4KKworICAgICAgICAq
IEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2
YXRlOjppbnB1dE1ldGhvZEVuYWJsZWQpOiBJbXBsZW1lbnQgbWV0aG9kIHRvCisgICAgICAgIHF1
ZXJ5IGZvciBpbnB1dCBtZXRob2Qgc3VwcG9ydC4KKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VXaWRnZXRDbGllbnQ6OmlucHV0TWV0aG9kRW5hYmxlZCk6IERp
dHRvIGZvciBRV2lkZ2V0LgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2Fy
ZUlucHV0UGFuZWwpOiBEb24ndCB1c2UgdmlldygpIHRvCisgICAgICAgIHRlc3QgZm9yIGlucHV0
IG1ldGhvZCBzdXBwb3J0LiBJbnN0ZWFkIHF1ZXJ5IHVzaW5nIFFXZWJQYWdlQ2xpZW50CisgICAg
ICAgIGFuZCBzZW5kIHRoZSBTSVBSIGV2ZW50IHRvIHRoZSBvd25lcldpZGdldCgpIGluc3RlYWQg
b2YgdGhlIHZpZXcoKS4KKyAgICAgICAgVGhlIGxhdHRlciBpcyBudWxsIGZvciBRR3JhcGhpY3NX
ZWJWaWV3LgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChFdmVudFNweTo6RXZlbnRTcHkpOgorICAgICAgICAoRXZlbnRTcHk6OmV2ZW50RmlsdGVy
KToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKTogTW9kaWZ5IHRoZSB0ZXN0
IHRvIHZlcmlmeSB0aGF0IFNJUFIKKyAgICAgICAgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHdoZW4g
YWN0aXZhdGluZyBmb2N1c2FibGUgY29udGVudC4KKworMjAwOS0xMS0xMCAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCBkb2N1bWVudGF0aW9uIGZpeGVzLgorCisgICAgICAgIEFkZGVkIGEgZmV3IGltcHJvdmVtZW50
cyBmcm9tIEpvY2VseW4gVHVyY290dGUgdG8gdGhlCisgICAgICAgIGNyZWF0ZVdpbmRvdyBkb2Nz
LgorCisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKworMjAwOS0xMS0xMCAgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCBkb2N1bWVudGF0aW9uIGZpeC4KKworICAgICAgICBbUXRdIE1ha2UgcXdlYnBhZ2UncyBj
cmVhdGVXaW5kb3cgbm90IHF3ZWJ2aWV3IGRlcGVuZGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNzcxCisKKyAgICAgICAgVXBkYXRlIGRvY3Vt
ZW50YXRpb24gdG8gbWFrZSBpdCBjbGVhciB0aGF0IGEgcmVpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBvZiB0aGUgY3JlYXRlV2luZG93IG1ldGhvZCBvZiB0aGUgYXNzb2NpYXRlZCBRV2ViUGFnZSBj
YW4KKyAgICAgICAgcmVzdWx0IGluIHRoZSBRV2ViVmlldzo6Y3JlYXRlV2luZG93IG1ldGhvZCB0
byBuZXZlciBiZSBjYWxsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA5
LTExLTA5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBb
UXRdIEZldyBjbGFzc2VzIGhhdmUgdmlydHVhbCBmdW5jdGlvbnMgYnV0IG5vbi12aXJ0dWFsIGRl
c3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxMjY5CisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChR
R3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6flFHcmFwaGljc1dlYlZpZXdQcml2YXRlKTogQWRkIHZp
cnR1YWwKKyAgICAgICAgZGVzdHJ1Y3Rvci4KKworMjAwOS0xMS0wOSAgQmVuamFtaW4gUG91bGFp
biAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyOAorICAgICAgICBBZGQgYW4gQVBJIHRvIGdldCBhbGwg
dGhlIGF0dHJpYnV0ZXMgZnJvbSBhIFFXZWJFbGVtZW50LgorCisgICAgICAgICogQXBpL3F3ZWJl
bGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjphdHRyaWJ1dGVzTmFtZSk6CisgICAg
ICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0
X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6bGlzdEF0dHJpYnV0
ZXMpOgorCisyMDA5LTExLTA5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBVc2UgZXhwbGljaXQgcGFyZW50aGVzZXMgdG8gc2lsZW5jZSBnY2MgNC40IC1X
cGFyZW50aGVzZXMgd2FybmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxMDQwCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTY3JvbGxpbmcpOgorCisyMDA5LTExLTA5ICBNYXJr
IE1lbnRvdmFpICA8bWFya0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFu
IEJlcm5zdGVpbi4KKworICAgICAgICBUcmFjayAiY2FuIGhhdmUgc2Nyb2xsYmFyIiBzdGF0ZSB3
aXRoaW4gRnJhbWVWaWV3IGluZGVwZW5kZW50bHkgb2YgdGhlCisgICAgICAgIGluZGl2aWR1YWwg
c2Nyb2xsYmFyIHN0YXRlcyBpbiBTY3JvbGxWaWV3LgorCisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
LzcyMTUxMzIsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE2Nwor
ICAgICAgICBSRUdSRVNTSU9OIChyNDgwNjQpOiBtaW50LmNvbSBsb3NlcyBzY3JvbGxiYXJzIGFm
dGVyIGNvbWluZyBvdXQgb2YKKyAgICAgICAgZWRpdCBtb2RlLgorCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzczMTQ0MjEsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDUxNworICAgICAgICBSRUdSRVNTSU9OIChyNDgwNjQpOiBFeHRyYSBzY3JvbGwgYmFycyBpbiBH
YXJhZ2VCYW5kIExlc3NvbiBTdG9yZS4KKworICAgICAgICBUZXN0OiBmYXN0L292ZXJmbG93L3Nj
cm9sbGJhci1yZXN0b3JlZC5odG1sCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJGcmFtZTo6c2V0U2Nyb2xsQmFyUG9saWN5KToKKworMjAwOS0xMS0wOSAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc3MgorICAgICAgICBBZGQgYSBub24t
Y29uc3QgaXRlcmF0b3IgdG8gUVdlYkVsZW1lbnRDb2xsZWN0aW9uLgorICAgICAgICBNb3ZlIHRo
ZSB0d28gYXR0cmlidXRlcyBvZiB0aGUgaXRlcmF0b3IgdG8gcHJpdmF0ZS4KKworICAgICAgICAq
IEFwaS9xd2ViZWxlbWVudC5oOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6OmJlZ2luKToKKyAg
ICAgICAgKGNvbnN0X2l0ZXJhdG9yOjplbmQpOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6OmNv
bnN0QmVnaW4pOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6OmNvbnN0RW5kKToKKyAgICAgICAg
KGNvbnN0X2l0ZXJhdG9yOjppdGVyYXRvcjo6aXRlcmF0b3IpOgorICAgICAgICAoY29uc3RfaXRl
cmF0b3I6Oml0ZXJhdG9yOjpvcGVyYXRvciopOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6Oml0
ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKGNvbnN0X2l0ZXJhdG9yOjppdGVyYXRvcjo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChjb25zdF9pdGVyYXRvcjo6aXRlcmF0b3I6Om9wZXJhdG9y
PCk6CisgICAgICAgIChjb25zdF9pdGVyYXRvcjo6aXRlcmF0b3I6Om9wZXJhdG9yPD0pOgorICAg
ICAgICAoY29uc3RfaXRlcmF0b3I6Oml0ZXJhdG9yOjpvcGVyYXRvcj4pOgorICAgICAgICAoY29u
c3RfaXRlcmF0b3I6Oml0ZXJhdG9yOjpvcGVyYXRvcj49KToKKyAgICAgICAgKGNvbnN0X2l0ZXJh
dG9yOjppdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChjb25zdF9pdGVyYXRvcjo6aXRl
cmF0b3I6Om9wZXJhdG9yLS0pOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6Oml0ZXJhdG9yOjpv
cGVyYXRvcis9KToKKyAgICAgICAgKGNvbnN0X2l0ZXJhdG9yOjppdGVyYXRvcjo6b3BlcmF0b3It
PSk6CisgICAgICAgIChjb25zdF9pdGVyYXRvcjo6aXRlcmF0b3I6Om9wZXJhdG9yKyk6CisgICAg
ICAgIChjb25zdF9pdGVyYXRvcjo6aXRlcmF0b3I6Om9wZXJhdG9yLSk6CisgICAgICAgICogdGVz
dHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxl
bWVudDo6bm9uQ29uc3RJdGVyYXRvcik6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmNvbnN0
SXRlcmF0b3IpOgorCisyMDA5LTExLTA5ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9z
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4K
KworICAgICAgICBbUXRdIFJlbW92ZSB0aGUgc2Vzc2lvblN0b3JhZ2Ugc2V0dGluZyAocGVyIFBh
Z2UpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTI0
OQorCisgICAgICAgIFRoaXMgc2V0dGluZyBhbGxvd3MgdG8gcnVuIHNlc3Npb25TdG9yYWdlIG9u
L29mZiBvbiBhIHBlciBwYWdlCisgICAgICAgIGJhc2lzLiBSZW1vdmUgdGhpcyBwcmVtYXR1cmVs
eSBleHBvc2VkIEFQSS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAg
ICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpR
V2ViU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6
CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRhdGFiYXNlKToKKyAgICAgICAgKHRzdF9RV2ViUGFn
ZTo6dGVzdE9wdGlvbmFsSlNPYmplY3RzKToKKworMjAwOS0xMS0wOSAgSm9jZWx5biBUdXJjb3R0
ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHRoZSBRV2ViUGFnZTp3ZWJJbnNw
ZWN0b3JUcmlnZ2VyZWQgc2lnbmFsLgorICAgICAgICBVc2VyIGN1c3RvbWl6YXRpb24gb2YgdGhl
IGNvbW11bmljYXRpb24gYmV0d2VlbiBRV2ViUGFnZQorICAgICAgICBhbmQgUVdlYkluc3BlY3Rv
ciB3aWxsIGJlIHByb3Blcmx5IGRlc2lnbmVkIGluIHRoZSBuZXh0IHZlcnNpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc3MworCisgICAgICAg
ICogQXBpL3F3ZWJpbnNwZWN0b3IuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmdldE9yQ3JlYXRlSW5zcGVjdG9yKToKKyAgICAgICAg
KFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAg
ICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldp
bmRvdyk6CisKKzIwMDktMTEtMDUgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEFk
ZGVkIGEgbWlzc2luZyByZS1pbXBsZW1lbnRhdGlvbiBvZiBRR3JhcGhpY3NJdGVtOjppbnB1dE1l
dGhvZFF1ZXJ5KCkuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAg
ICAgIChRR3JhcGhpY3NXZWJWaWV3OjppbnB1dE1ldGhvZFF1ZXJ5KToKKyAgICAgICAgKiBBcGkv
cWdyYXBoaWNzd2Vidmlldy5oOgorCisyMDA5LTExLTA0ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNt
YW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4K
KworICAgICAgICBQcm92aWRlIGEgZHVtbXkgcmUtaW1wbGVtZW50YXRpb24gb2YgUUdyYXBoaWNz
TGF5b3V0SXRlbTo6c2l6ZUhpbnQoKSwKKyAgICAgICAgc2ltaWxhciB0byBRV2ViVmlldy4KKwor
ICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dl
YlZpZXc6OnNpemVIaW50KToKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorCisy
MDA5LTExLTA0ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBSZW1vdmVkIHpvb21G
YWN0b3J5Q2hhbmdlZCgpIHNpZ25hbCBhbmQgYWRkZWQKKyAgICAgICAgbGlua0NsaWNrZWQoKSB0
byBRR3JhcGhpY3NXZWJWaWV3LCBmb3IgY29uc2lzdGVuY3kgd2l0aAorICAgICAgICBRV2ViVmll
dy4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6c2V0Wm9v
bUZhY3Rvcik6CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuaDoKKworMjAwOS0xMS0w
NCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgQWRkZWQgUUdyYXBoaWNzV2ViVmll
dzo6ZmluZFRleHQoKSBmb3IgY29udmVuaWVuY2UgYW5kIGNvbnNpc3RlbmN5CisgICAgICAgIHdp
dGggUVdlYlZpZXcuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAg
ICAgIChRR3JhcGhpY3NXZWJWaWV3OjpmaW5kVGV4dCk6CisgICAgICAgICogQXBpL3FncmFwaGlj
c3dlYnZpZXcuaDoKKworMjAwOS0xMS0wNCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAg
ICAgQWRkZWQgUUdyYXBoaWNzV2ViVmlldzo6cGFnZUFjdGlvbigpIGFuZCB0cmlnZ2VyUGFnZUFj
dGlvbigpLCBmb3IKKyAgICAgICAgY29uc2lzdGVuY3kgd2l0aCBRV2ViVmlldy4KKworICAgICAg
ICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
OnBhZ2VBY3Rpb24pOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6dHJpZ2dlclBhZ2VBY3Rp
b24pOgorICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3Lmg6CisKKzIwMDktMTEtMDQgIFNp
bW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbW92ZWQgUUdyYXBoaWNzV2ViVmlldzo6
dG9IdG1sKCkgYWZ0ZXIgQVBJIHJldmlldy4KKworICAgICAgICBUaGF0J3MgY29uc2lzdGVudCB3
aXRoIFFXZWJWaWV3IGFuZCBhbHNvIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQKKyAgICAg
ICAgdG9IdG1sKCkgaXMgY2FsbGVkIGxlc3MgZnJlcXVlbnRseSB0aGFuIHNldEh0bWwoKS4KKwor
ICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBBcGkvcWdyYXBo
aWNzd2Vidmlldy5oOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFw
aGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnFncmFwaGlj
c3dlYnZpZXcpOgorCisyMDA5LTExLTA0ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAg
ICBSZW1vdmVkIHRoZSBpbnRlcmFjdGl2ZSBwcm9wZXJ0eSBvZiBRR3JhcGhpY3NXZWJWaWV3Lgor
CisgICAgICAgIFRoZXJlIGFyZSBjbGVhcmx5IHVzZS1jYXNlcyBmb3IgdGhpcyBmZWF0dXJlLCBi
dXQgaXQgd2lsbCByZXF1aXJlCisgICAgICAgIG1vcmUgd29yayB0byBtYWtlIHRoaXMgZnVsbHkg
d29yayB3aXRoIGFuIGVudW0gdG8gaGF2ZSBmaW5lLWdyYWluZWQKKyAgICAgICAgY29udHJvbCBv
dmVyIHRoZSBpbnRlcmFjdGl2aXR5IGxldmVscy4gRm9yIG5vdyBpdCBpcyBlYXN5IHRvIGFjaGll
dmUKKyAgICAgICAgaW4gdXNlci1jb2RlIHdoYXQgdGhlIGJvb2xlYW4gcHJvcGVydHkgZGlkLgor
CisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNz
V2ViVmlld1ByaXZhdGU6OlFHcmFwaGljc1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFHcmFw
aGljc1dlYlZpZXc6OmhvdmVyTW92ZUV2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6
Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6Om1vdXNlUHJlc3NF
dmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6Cisg
ICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlldzo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3OjprZXlSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6ZHJh
Z0xlYXZlRXZlbnQpOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6ZHJhZ01vdmVFdmVudCk6
CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpkcm9wRXZlbnQpOgorICAgICAgICAoUUdyYXBo
aWNzV2ViVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjppbnB1
dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAg
ICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAg
ICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnFncmFwaGljc3dlYnZpZXcpOgorCisyMDA5LTEx
LTA0ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBNYWtlIHRoZSBRR3JhcGhpY3NX
ZWJWaWV3IGNvbnN0cnVjdG9yIGV4cGxpY2l0LgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dl
YnZpZXcuaDoKKworMjAwOS0xMS0wNSAgU2h1IENoYW5nICA8Q2hhbmcuU2h1QG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBTaGlmdC1QYWdlVXAgYW5kIFNoaWZ0LVBhZ2VEb3duIGtleSBldmVudHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTE2NgorCisg
ICAgICAgIFRlc3Q6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Nocmluay1zZWxlY3Rp
b24tYWZ0ZXItc2hpZnQtcGFnZWRvd24uaHRtbAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQpOgorCisyMDA5LTExLTA1ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNt
YW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTGFzdCBRdCA0LjUgYnVpbGQgZml4ICgqc2lnaCop
CisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
aW5wdXRNZXRob2RIaW50cyk6IGlucHV0TWV0aG9kSGludHMoKSBpcyBvbmx5IHVzZWQgZm9yIAor
ICAgICAgICBRdCA0LjYsIHNvIGd1YXJkIHRoZSB3aG9sZSBmdW5jdGlvbi4KKworMjAwOS0xMS0w
NSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIEFub3Ro
ZXIgcHJvc3BlY3RpdmUgYnVpbGQgZml4IGFnYWluc3QgUXQgNC41IChidWlsZCBib3QpCisKKyAg
ICAgICAgRG9uJ3QgY29tcGlsZSAmIHJ1biB0aGUgUUdyYXBoaWNzV2ViVmlldyBwb3J0aW9uIG9m
IHRoZQorICAgICAgICBpbnB1dCBtZXRob2RzIGF1dG8gdGVzdCB3aXRoIFF0IDQuNS4KKworICAg
ICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdl
YlBhZ2U6OmlucHV0TWV0aG9kc19kYXRhKToKKyAgICAgICAgKGlucHV0TWV0aG9kSGludHMpOgor
ICAgICAgICAoaW5wdXRNZXRob2RFbmFibGVkKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5w
dXRNZXRob2RzKToKKworMjAwOS0xMS0wNSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFByb3NwZWN0aXZlIGJ1aWxkIGZpeCBhZ2FpbnN0IFF0IDQuNSAo
YnVpbGQgYm90KQorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAg
ICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6OnNldElucHV0TWV0aG9kRW5hYmxlZCk6IEd1YXJk
IHRoZQorICAgICAgICB1c2Ugb2YgUXQgNC42IHNwZWNpZmljIEFQSSB3aXRoICNpZmRlZnMuCisK
KzIwMDktMTEtMDEgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbi4KKworICAgICAgICBbUXRdIEZp
eCBlbmFibGluZyBvZiBpbnB1dCBtZXRob2Qgc3VwcG9ydCBvbiBRR3JhcGhpY3NXZWJWaWV3Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MDUKKwor
ICAgICAgICBJbnN0ZWFkIG9mIHNldHRpbmcgdGhlIHVuc3VwcG9ydGVkIHdpZGdldCBhdHRyaWJ1
dGUgb24gdGhlCisgICAgICAgIFFHcmFwaGljc1dpZGdldCBpbiBzZXRJbnB1dE1ldGhvZEVuYWJs
ZWQoKSBzZXQgdGhlIAorICAgICAgICBJdGVtQWNjZXB0c0lucHV0TWV0aG9kIEdyYXBoaWNzSXRl
bSBmbGFnIGRpcmVjdGx5LgorCisgICAgICAgIENoYW5nZWQgdGhlIGV4aXN0aW5nIGlucHV0IG1l
dGhvZCBhdXRvIHRlc3QgdG8gcnVuIG9uY2UKKyAgICAgICAgb24gYSBRV2ViVmlldyBhbmQgb25j
ZSBvbiBhIFFHcmFwaGljc1dlYlZpZXcuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmll
dy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6c2V0SW5wdXRNZXRob2RF
bmFibGVkKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAodHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHNfZGF0YSk6CisgICAgICAgIChpbnB1dE1l
dGhvZEhpbnRzKToKKyAgICAgICAgKGlucHV0TWV0aG9kRW5hYmxlZCk6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKKzIwMDktMTEtMDQgIFNpbW9uIEhhdXNtYW5uICA8
aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIENocmlz
dGlhbnNlbi4KKworICAgICAgICBBZGRlZCBRR3JhcGhpY3NXZWJWaWV3Ojptb2RpZmllZCBwcm9w
ZXJ0eSwgZm9yIGNvbnNpc3RlbmN5CisgICAgICAgIHdpdGggUVdlYlZpZXcuCisKKyAgICAgICAg
KiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3Ojpp
c01vZGlmaWVkKToKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAq
IHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAg
ICAodHN0X1FHcmFwaGljc1dlYlZpZXc6OnFncmFwaGljc3dlYnZpZXcpOgorCisyMDA5LTExLTA0
ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgUmVtb3ZlZCBzdGF0dXMgYW5k
IHByb2dyZXNzIHByb3BlcnRpZXMgb2YgUUdyYXBoaWNzV2ViVmlldy4KKyAgICAgICAgQWRkZWQg
bG9hZFByb2dyZXNzIGFuZCBzdGF0dXNCYXJNZXNzYWdlIHNpZ25hbHMgaW5zdGVhZCwKKyAgICAg
ICAgYWZ0ZXIgQVBJIHJldmlldy4KKworICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOjpRR3JhcGhpY3NXZWJWaWV3UHJp
dmF0ZSk6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3OjpzZXRQYWdlKToKKyAgICAgICAgKiBB
cGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcv
dHN0X3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FHcmFwaGljc1dlYlZpZXc6
OnFncmFwaGljc3dlYnZpZXcpOgorCisyMDA5LTExLTA0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhh
cm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBbUXRdIFJFR1JFU1NJT046IEFsbG93IGFwcGxpY2F0aW9ucyB0byB1c2UgdGhlaXIg
b3duIFFXaWRnZXQgYnlwYXNzaW5nIFFXZWJWaWV3LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5NzkKKworICAgICAgICBEZWNvdXBsZSBRV2ViVmll
d1ByaXZhdGUgZnJvbSBRV2ViUGFnZUNsaWVudCwgYW5kIGF1dG9tYXRpY2FsbHkgY3JlYXRlCisg
ICAgICAgIFFXZWJQYWdlV2lkZ2V0Q2xpZW50IHdoZW5ldmVyIHRoZSB2aWV3IGlzIFFXaWRnZXQg
YmFzZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VX
aWRnZXRDbGllbnQ6OlFXZWJQYWdlV2lkZ2V0Q2xpZW50KToKKyAgICAgICAgKFFXZWJQYWdlV2lk
Z2V0Q2xpZW50OjpzY3JvbGwpOgorICAgICAgICAoUVdlYlBhZ2VXaWRnZXRDbGllbnQ6OnVwZGF0
ZSk6CisgICAgICAgIChRV2ViUGFnZVdpZGdldENsaWVudDo6c2V0SW5wdXRNZXRob2RFbmFibGVk
KToKKyAgICAgICAgKFFXZWJQYWdlV2lkZ2V0Q2xpZW50OjpzZXRJbnB1dE1ldGhvZEhpbnQpOgor
ICAgICAgICAoUVdlYlBhZ2VXaWRnZXRDbGllbnQ6OmN1cnNvcik6CisgICAgICAgIChRV2ViUGFn
ZVdpZGdldENsaWVudDo6dXBkYXRlQ3Vyc29yKToKKyAgICAgICAgKFFXZWJQYWdlV2lkZ2V0Q2xp
ZW50OjpwYWxldHRlKToKKyAgICAgICAgKFFXZWJQYWdlV2lkZ2V0Q2xpZW50OjpzY3JlZW5OdW1i
ZXIpOgorICAgICAgICAoUVdlYlBhZ2VXaWRnZXRDbGllbnQ6Om93bmVyV2lkZ2V0KToKKyAgICAg
ICAgKFFXZWJQYWdlV2lkZ2V0Q2xpZW50OjpwbHVnaW5QYXJlbnQpOgorICAgICAgICAoUVdlYlBh
Z2U6OnNldFZpZXcpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2Vi
Vmlldzo6flFXZWJWaWV3KToKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRQYWdlKToKKyAgICAgICAg
KFFXZWJWaWV3OjpldmVudCk6CisKKzIwMDktMTEtMDMgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFu
ZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIFtRdF0gRml4IGJ1aWxkIG9mIHVuaXQtdGVzdCBhZnRlciByNTA0NTQu
CisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorCisyMDA5LTEx
LTAzICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBNYWtlIFFXZWJQbHVnaW5EYXRh
YmFzZSBwcml2YXRlIEFQSSBmb3Igbm93LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMDc3NQorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgor
ICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwOgorICAgICAgICAqIEFwaS9xd2Vi
cGx1Z2luZGF0YWJhc2VfcC5oOiBSZW5hbWVkIGZyb20gV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2lu
ZGF0YWJhc2UuaC4KKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAg
ICAgKE1haW5XaW5kb3c6OnNldHVwVUkpOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoKKwor
MjAwOS0xMS0wMyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgT29wcywg
YWxzbyByZW1vdmUgdGhlIEFQSSBkb2NzIG9mIHRoZSByZW1vdmVkIG5ldHdvcmtSZXF1ZXN0U3Rh
cnRlZCgpIHNpZ25hbC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisKKzIwMDktMTEt
MDMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlcGxhY2UgdGhlIFFXZWJQYWdl
OjpuZXR3b3JrUmVxdWVzdFN0YXJ0ZWQoKSBzaWduYWwgd2l0aCB0aGUgb3JpZ2luYXRpbmdPYmpl
Y3QKKyAgICAgICAgcHJvcGVydHkgc2V0IHRvIHRoZSBRV2ViRnJhbWUgdGhhdCBiZWxvbmdzIHRv
IHRoZSByZXF1ZXN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yOTk3NQorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZEZpbmlzaGVkKToKKyAg
ICAgICAgKFRlc3ROZXR3b3JrTWFuYWdlcjo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6Om9yaWdpbmF0aW5nT2JqZWN0SW5OZXR3b3JrUmVxdWVzdHMpOgorCisyMDA5LTEx
LTAyICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgUVdlYlZpZXcgY3Jhc2ggZml4
LgorCisgICAgICAgIFRoZSBRV2ViVmlldyBzaG91bGQgbm90IGNyYXNoIGlmIHRoZSBzdG9wKCkg
bWV0aG9kIGlzIGNhbGxlZCBmcm9tCisgICAgICAgIGEgZnVuY3Rpb24gdHJpZ2dlcmVkIGJ5IHRo
ZSBsb2FkUHJvZ3Jlc3Mgc2lnbmFsLgorCisgICAgICAgIEEgbnVsbCBwb2ludGVyIHByb3RlY3Rp
b24gd2FzIGFkZGVkIGluIHRoZSBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzLgor
CisgICAgICAgIE5ldyBhdXRvdGVzdCB3YXMgY3JlYXRlZC4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk0MjUKKworICAgICAgICAqIHRlc3RzL3F3
ZWJ2aWV3L3RzdF9xd2Vidmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Q3Jhc2hUZXN0OjpXZWJW
aWV3Q3Jhc2hUZXN0KToKKyAgICAgICAgKFdlYlZpZXdDcmFzaFRlc3Q6OmxvYWRpbmcpOgorICAg
ICAgICAodHN0X1FXZWJWaWV3OjpjcmFzaFRlc3RzKToKKworMjAwOS0xMS0wMSAgTGFzemxvIEdv
bWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCisKKyAgICAgICAgVHVybiBvbiB3YXJuaW5ncyBmb3IgUXRXZWJLaXQgZm9y
IGdjYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA5
NTgKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OlFXZWJQYWdlUHJpdmF0ZSk6IFJlb3JkZXIgaW5pdGlhbGl6YXRpb24gbGlzdCAKKyAgICAg
ICAgdG8gZml4IGNvbXBpbGVyIHdhcm5pbmdzLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6RnJhbWVMb2FkZXJDbGllbnRRdCk6IERpdHRvLgorCisyMDA5LTEwLTMwICBFdmFuIFN0
YWRlICA8ZXN0YWRlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBM
ZXZpbi4KKworICAgICAgICBOb3RpZnkgdGhlIGNocm9tZSB3aGVuIHRoZSBmb2N1c2VkIG5vZGUg
aGFzIGNoYW5nZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMDgzMgorCisgICAgICAgIEFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIG5ldyBD
aHJvbWVDbGllbnQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Zm9jdXNlZE5v
ZGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgor
CisyMDA5LTEwLTMwICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBb
UXRdIFJlbW92ZSB0aGUgUVdlYkluc3BlY3Rvcjo6d2luZG93VGl0bGVDaGFuZ2VkIHNpZ25hbCwK
KyAgICAgICAgUUV2ZW50OjpXaW5kb3dUaXRsZUNoYW5nZSBjYW4gYmUgdXNlZCB0byBhY2hpZXZl
IHRoZSBzYW1lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA5MjcKKworICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYmluc3BlY3Rvci5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0Ojp1cGRhdGVX
aW5kb3dUaXRsZSk6CisKKzIwMDktMTAtMjkgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21i
b3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisK
KyAgICAgICAgW1F0XSBJbXBsZW1lbnQgREVMRVRFIEhUVFAgbWV0aG9kIGZvciBYbWxIdHRwUmVx
dWVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA4
OTQKKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFscmVh
ZHkgdGVzdGVkIGJ5IHRoZQorICAgICAgICB4bWxodHRwcmVxdWVzdCBMYXlvdXRUZXN0cy4gQXMg
dGhpcyBwYXRjaCBkZXBlbmRzIG9uIGFuIHVucmVsZWFzZWQKKyAgICAgICAgdmVyc2lvbiBvZiB0
aGUgZGVwZW5kZW50IFF0TmV0d29yayBsaWJyYXJ5IGFuZCB0aGUgdGVzdHMgd2lsbCBiZQorICAg
ICAgICBlbmFibGVkIGxhdGVyIG9uY2UgdGhlIGRlcGVuZGVudCBsaWJyYXJ5IGlzIHJlbGVhc2Vk
IChhbmQgdGhlCisgICAgICAgIGJ1aWxkYm90IGlzIHVwZGF0ZWQpLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOgorCisyMDA5LTEwLTI5
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbW92ZSBRV2Vi
Vmlldzo6Z3Vlc3NVcmxGcm9tU3RyaW5nKCkgYW5kIHJlcGxhY2UgaXRzIHVzZQorICAgICAgICB3
aXRoIHRoZSBuZXcgUVVybDo6ZnJvbVVzZXJJbnB1dCgpIGlmIHVzaW5nIFF0IDQuNiBvciBuZXdl
ci4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3
Lmg6CisgICAgICAgICogUUdWTGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgICh1cmxGcm9tVXNl
cklucHV0KToKKyAgICAgICAgKFdlYlBhZ2U6OmFwcGx5UHJveHkpOgorICAgICAgICAoTWFpbldp
bmRvdzo6bG9hZCk6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKHVy
bEZyb21Vc2VySW5wdXQpOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAg
ICAgIChNYWluV2luZG93OjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgICogdGVzdHMvcXdlYnZp
ZXcvdHN0X3F3ZWJ2aWV3LmNwcDoKKworMjAwOS0xMC0yOCAgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBTZXJpYWxpemUgZGlyZWN0bHkgdG8gdGhlIHN0cmVhbSwg
YW5kIG5vdCBmaXJzdCB0byBhbiBRQnl0ZUFycmF5LAorICAgICAgICB0aGF0IGlzIGxhdGVyIHNl
cmlhbGl6ZWQuIFRoYXQgaXMgc2xvd2VyIGFuZCBhbHNvIHVzZXMgbW9yZSBieXRlcy4KKworICAg
ICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgIChvcGVyYXRvcjw8KToKKyAgICAg
ICAgKG9wZXJhdG9yPj4pOgorCisyMDA5LTEwLTI4ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFq
aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAg
ICAgICAgW1F0XSBXZWJGcmFtZTo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQgbXVzdCBub3Qg
YmUgZXhwb3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzA4ODIKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAocXRfZHJ0
X2NvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6
CisKKzIwMDktMTAtMjcgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBQcm92aWRlIGEg
d2F5IHRvIGdldCBjb3VudGVyIHZhbHVlcyB3aXRoIGxheW91dFRlc3RDb250b2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNTU1CisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6Y291bnRlclZhbHVl
Rm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmZyYW1lKToKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisKKzIwMDktMTAtMjggIEFudG9uaW8gR29tZXMgIDx0
b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXNoaW5nIG1pc3NpbmcgV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvIGRpciBmcm9tIGJ1ZyAyOTI0OC4KKworICAgICAg
ICBbUXRdIFtBUEldIE1ha2UgaXQgcG9zc2libGUgdG8gaGF2ZSAnaW52aXNpYmxlJyBsb2Fkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkyNDgKKwor
ICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvaW1hZ2UyLnBuZzogQ29waWVkIGZy
b20gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L2ltYWdlLnBuZy4KKworMjAwOS0xMC0yOCAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIFFXZWJIaXN0
b3J5OjpzYXZlU3RhdGUoKSBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgUXQgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDcxMAorCisgICAgICAg
IE1ha2UgdGhlIHZlcnNpb25pbmcgaW50ZXJuYWwgYW5kIGVuZm9yY2UgaXQgaW4gdGhlIFdlYkNv
cmUKKyAgICAgICAgcGFydC4gQWRqdXN0IHRoZSBjb21tZW50cywgYXMgd2VsbCBhcyByZW1vdmUg
bm93IGRlYWQgY29kZS4KKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAg
IChvcGVyYXRvcjw8KToKKyAgICAgICAgKG9wZXJhdG9yPj4pOgorICAgICAgICAqIEFwaS9xd2Vi
aGlzdG9yeS5oOgorCisyMDA5LTEwLTI4ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtl
bm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIu
CisKKyAgICAgICAgW1F0XSBRV2ViSGlzdG9yeTo6c2F2ZVN0YXRlKCkgaXMgaW5jb25zaXN0ZW50
IHdpdGggdGhlIFF0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzA3MTAKKworICAgICAgICBSZW1vdmUgdGhlIFFXZWJIaXN0b3J5OjpzYXZlU3Rh
dGUoKSBhbmQgOjpyZXN0b3JlU3RhdGUoKSBhcworICAgICAgICB0aGV5IGFyZSBpbmNvbnNpc3Rl
bnQgd2l0aCB0aGUgUXQgQVBJLgorCisgICAgICAgIFVwZGF0ZSB1bml0dGVzdHMgdG8gcmVmbGVj
dCB0aGUgY2hhbmdlLgorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAg
KG9wZXJhdG9yPDwpOgorICAgICAgICAob3BlcmF0b3I+Pik6CisgICAgICAgICogQXBpL3F3ZWJo
aXN0b3J5Lmg6CisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0b3J5LmNw
cDoKKyAgICAgICAgKHNhdmVIaXN0b3J5KToKKyAgICAgICAgKHJlc3RvcmVIaXN0b3J5KToKKyAg
ICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6c2F2ZUFuZFJlc3RvcmVfY3Jhc2hfMSk6CisgICAgICAg
ICh0c3RfUVdlYkhpc3Rvcnk6OnNhdmVBbmRSZXN0b3JlX2NyYXNoXzIpOgorICAgICAgICAodHN0
X1FXZWJIaXN0b3J5OjpzYXZlQW5kUmVzdG9yZV9jcmFzaF8zKToKKyAgICAgICAgKHRzdF9RV2Vi
SGlzdG9yeTo6Y2xlYXIpOgorCisyMDA5LTEwLTI3ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9v
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgorCisg
ICAgICAgIENvbXBsZW1lbnRhcnkgZml4IHRvIGJ1ZyAzMDc3OS4KKworICAgICAgICBCeSBtaXN0
YWtlIEkgdXNlZCBRV2Vha1BvaW50ZXIncyB0b1N0cm9uZ1JlZigpIG1ldGhvZCB3aGljaCBkb2Nz
CisgICAgICAgIGV4cGxpY2l0bHkgc2F5IHRvIG5vdCBiZSB1c2VkIGluIHRoaXMgc2l0dWF0aW9u
ICh3aGVuIHRoZSB0cmFja2VkCisgICAgICAgIHBvaW50ZXIgaXMgZGV2aXJlZCBmcm9tIFFPYmpl
Y3QpLiBJbnN0ZWFkIFFXZWFrUG9pbnRlcidzIGRhdGEoKQorICAgICAgICBpcyByZWNvbW1lbmRl
ZC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dmll
dyk6CisKKzIwMDktMTAtMjcgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2Vs
ZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IENoYW5nZSBIaXRUZXN0UmVzdWx0IG1ldGhvZHMgdG8gdXNlICgzZCkgdHJhbnNmb3JtYXRpb24g
YXdhcmUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjczNDcKKworICAgICAgICBUaGUgSGl0VGVzdFJlc3VsdDo6Ym91bmRpbmdCb3ggbWV0
aG9kIHdhcyByZW1vdmVkLiBUaGUKKyAgICAgICAgUmVuZGVyT2JqZWN0IG11c3QgYmUgdXNlZCBk
aXJlY3RseS4gSW4gY29udHJhc3QgdG8gdGhlCisgICAgICAgIG9sZCBIaXRUZXN0UmVzdWx0Ojpi
b3VuZGluZ0JveCBtZXRob2QgdGhpcyBjb2RlIG11c3QgdXNlCisgICAgICAgIGEgKDNkKSB0cmFu
c2Zvcm1hdGlvbiBhd2FyZSBtZXRob2QgdG8gbm90IHJ1biBpbnRvIGFuCisgICAgICAgIGFzc2Vy
dCBpbiBTVkdSZW5kZXJCYXNlOjptYXBMb2NhbFRvQ29udGFpbmVyLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJI
aXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisKKzIwMDktMTAtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlcnN0YW1wZWQgYnkg
T2xpdmVyIEh1bnQuCisKKyAgICAgICAgQ2hhbmdlIHR3byBtZXRob2RzIHRvIGJlIGludGVybmFs
IGZvciBEUlQgdXNlIG9ubHkuCisKKyAgICAgICAgUGFydCBvZiBbUXRdIFJldmlldyBhbGwgbmV3
IEFQSSBpbiBRdCA0LjYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI5ODQzI2MxMQorCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6
CisgICAgICAgIChxdF9kcnRfd2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChx
dF9kcnRfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKToKKyAgICAgICAgKFFXZWJTZWN1cml0
eU9yaWdpbjo6bG9jYWxTY2hlbWVzKToKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2lu
Lmg6CisKKzIwMDktMTAtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAg
ICAgICAgTWFrZSBzdXJlIHRoYXQgaW5pdGlhdGluZyBhIHJvdGF0aW9uIHdoaWxlIHJvdGF0aW5n
IHdvbid0IG1ha2UKKyAgICAgICAgaXQgZW5kIHVwIGF0IHJvdGF0aW9uIHBvc2l0aW9ucyB0aGF0
IGFyZSBub3QgYSBtdWx0aXBseSBvZgorICAgICAgICAxODAgZGVncmVlcy4KKworICAgICAgICAq
IFFHVkxhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpblZpZXc6OmFuaW1hdGVkRmxpcCk6
CisKKzIwMDktMTAtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgUXQgYnVpbGQgZml4LgorCisgICAgICAgIFVw
ZGF0ZSB0aGUgdGVzdHMgYXMgd2VsbCB0byB0aGUgbmV3IEFQSSBjaGFuZ2UuCisKKyAgICAgICAg
KiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FX
ZWJFbGVtZW50OjpjbGVhcik6CisKKzIwMDktMTAtMjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlcnN0YW1wZWQgYnkgVG9y
IEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIFFXZWJFbGVtZW50OjpyZW1vdmVDaGlsZHJl
bigpIHNob3VsZCBiZQorICAgICAgICBRV2ViRWxlbWVudDo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MzAKKwor
ICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6cmVt
b3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5oOgorCisyMDA5LTEw
LTI3ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8gYW5kIEhvbGdlciBGcmV5dGhlci4KKworICAgICAgICBN
YWtlIFFXZWJQYWdlUHJpdmF0ZSdzIChRV2lkZ2V0KSB2aWV3IHRvIGJlIGEgUVdlYWtQb2ludGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA3NzkK
KworICAgICAgICBUaGUgZmFjdCB0aGF0IGl0IHdhcyBiZWVuIHNldCBmcm9tIGV4dGVybmFsIG9i
amVjdHMgb2YgcXdlYnBhZ2UKKyAgICAgICAgYW5kIG5vdCBiZWluZyBkZWxldGVkIGludGVybmFs
bHkgY2FuIGxlYWQgdG8gZGFuZ2xpbmcgcmVmZXJlbmNlcy4KKworICAgICAgICAqIEFwaS9xZ3Jh
cGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6On5RR3JhcGhpY3NX
ZWJWaWV3KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVh
dGVDb250ZXh0TWVudSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNvZnR3YXJl
SW5wdXRQYW5lbCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgor
ICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXcpOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXcpOgor
ICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRV2ViUGFnZTo6
amF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRQcm9tcHQp
OgorICAgICAgICAoUVdlYlBhZ2U6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQpOgorICAgICAg
ICAoUVdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChRV2ViUGFnZTo6ZXh0ZW5zaW9u
KToKKyAgICAgICAgKFFXZWJQYWdlOjpjaG9vc2VGaWxlKToKKyAgICAgICAgKFFXZWJQYWdlOjp1
c2VyQWdlbnRGb3JVcmwpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICog
QXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3Ojp+UVdlYlZpZXcpOgorCisyMDA5
LTEwLTI2ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBVbnJldmlld2VkIGRvY3VtZW50YXRpb24gZml4IGZyb20gRGF2aWQgQm9kZGll
IChRdCBEb2MgVGVhbSkKKworICAgICAgICBSZW1vdmVzIHRoZSBjaGVjayBhcm91bmQgdGhlIFJl
bmRlckhpbnRzIHByb3BlcnR5IGRvY3VtZW50YXRpb24KKyAgICAgICAgdGhhdCB3YXMgY2xlYXJs
eSBhZGRlZCB0byBzeW5jaHJvbml6ZSB0aGUgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMKKyAgICAg
ICAgd2hlbiB0aGUgI2lmICFkZWZpbmVkKFFfT1NfU1lNQklBTikgZ3VhcmRzIHdhcyBhZGRlZCB0
byB0aGUKKyAgICAgICAgcHJvcGVydHkuCisKKyAgICAgICAgVGhlIGRvY3VtZW50YXRpb24gaGFz
IGFsc28gYmVlbiB1cGRhdGVkIHRvIGVuc3VyZSB0aGF0IFN5bWJpYW4KKyAgICAgICAgdXNlcnMg
a25vdyB0aGF0IHRoZXJlIGlzIG5vIGFjdHVhbCBSZW5kZXJIaW50cyBwcm9wZXJ0eSBvbiB0aGVp
cgorICAgICAgICBwbGF0Zm9ybS4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIw
MDktMTAtMjYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVucmV2aWV3ZWQgZG9jdW1lbnRhdGlvbiBmaXggZnJvbSBEYXZpZCBCb2Rk
aWUgKFF0IERvYyBUZWFtKQorCisgICAgICAgIEVuc3VyZSB0aGF0IHFkb2Mgd2lsbCBhbHdheXMg
c2VlIHRoZSBSZW5kZXJIaW50cyBwcm9wZXJ0eS4KKworICAgICAgICBUaGUgcHJvcGVydHkgd2Fz
IG9ubHkgZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGZpbGUgaWYgdGhlIFFfT1NfU1lNQklBTgorICAg
ICAgICBzeW1ib2wgd2FzIG5vdCBkZWZpbmVkLCByZXN1bHRpbmcgaW4gdGhlIHByb3BlcnR5IG5v
dCBzaG93aW5nIHVwCisgICAgICAgIGluIHRoZSBRdCBkb2N1bWVudGF0aW9uIGp1c3QgYmVjYXVz
ZSBvbmUgcGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0IGl0LgorCisgICAgICAgIEEgZm9sbG93IHVw
IGNvbW1pdCB3aWxsIGltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwcm9wZXJ0eQor
ICAgICAgICBhbmQgbm90ZSB0aGF0IGl0IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIFN5bWJpYW0g
cGxhdGZvcm0uCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOS0xMC0yNiAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgW1F0XSBSZWludHJvZHVjZSBR
V2ViRWxlbWVudENvbGxlY3Rpb24KKworICAgICAgICBSZXZlcnQgdGhlIHBhdGNoIHRoYXQgaGFz
IHJlcGxhY2VkIFFXZWJFbGVtZW50Q29sbGVjdGlvbiAKKyAgICAgICAgd2l0aCBRTGlzdDxRV2Vi
RWxlbWVudD4uIFVwZGF0ZSB0aGUgdGVzdHMgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBjb25zdG5lc3Mgb2YgdGhlIHJldHVybiB0eXBlIG9mIFFXZWJFbGVtZW50IG9wZXJhdG9y
W10uIAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDc2NworCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVt
ZW50OjpmaW5kQWxsKToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGU6OlFX
ZWJFbGVtZW50Q29sbGVjdGlvblByaXZhdGUpOgorICAgICAgICAoUVdlYkVsZW1lbnRDb2xsZWN0
aW9uUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6UVdl
YkVsZW1lbnRDb2xsZWN0aW9uKToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6flFXZWJFbGVtZW50Q29s
bGVjdGlvbik6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246Om9wZXJhdG9yKyk6Cisg
ICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246OmFwcGVuZCk6CisgICAgICAgIChRV2ViRWxl
bWVudENvbGxlY3Rpb246OmNvdW50KToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6
YXQpOgorICAgICAgICAoUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjp0b0xpc3QpOgorICAgICAgICAq
IEFwaS9xd2ViZWxlbWVudC5oOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6OmJlZ2luKToKKyAg
ICAgICAgKGNvbnN0X2l0ZXJhdG9yOjplbmQpOgorICAgICAgICAoY29uc3RfaXRlcmF0b3I6Om9w
ZXJhdG9yW10pOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZy
YW1lOjpmaW5kQWxsRWxlbWVudHMpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAg
ICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6c2VsZWN0RWxl
bWVudHMpOgorICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxlbWVudC5jcHA6
CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnNpbXBsZUNvbGxlY3Rpb24pOgorICAgICAgICAo
dHN0X1FXZWJFbGVtZW50OjppdGVyYXRpb24pOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50Ojpl
bXB0eUNvbGxlY3Rpb24pOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjphcHBlbmRDb2xsZWN0
aW9uKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6bnVsbFNlbGVjdCk6CisgICAgICAgICh0
c3RfUVdlYkVsZW1lbnQ6Omhhc1NldEZvY3VzKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6
cmVuZGVyKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAodHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMpOgorCisyMDA5LTEwLTI0ICBMYXN6bG8g
R29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgW1F0XSBbU3ltYmlhbl0gU2V0IHRoZSBjYXBh
YmlsaXR5IGFuZCBtZW1vcnkgcmVxdWlyZWQgdG8gcnVuIFF0V2ViS2l0IGZvciBTeW1iaWFuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDQ3NgorCisg
ICAgICAgIEFzc2lnbiBSZWFkVXNlckRhdGEgV3JpdGVVc2VyRGF0YSBOZXR3b3JrU2VydmljZXMg
U3ltYmlhbiBjYXBhYmlsaXRpZXMKKyAgICAgICAgdG8gYWxsIFF0V2Via2l0IGV4ZWN1dGFibGVz
LgorCisgICAgICAgICogUUdWTGF1bmNoZXIvUUdWTGF1bmNoZXIucHJvOgorICAgICAgICAqIFF0
TGF1bmNoZXIvUXRMYXVuY2hlci5wcm86CisgICAgICAgICogdGVzdHMvYmVuY2htYXJrcy9sb2Fk
aW5nL3RzdF9sb2FkaW5nLnBybzoKKyAgICAgICAgKiB0ZXN0cy9iZW5jaG1hcmtzL3BhaW50aW5n
L3RzdF9wYWludGluZy5wcm86CisgICAgICAgICogdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9xZ3Jh
cGhpY3N3ZWJ2aWV3LnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC9xd2ViZWxlbWVu
dC5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3F3ZWJmcmFtZS5wcm86CisgICAgICAg
ICogdGVzdHMvcXdlYmhpc3RvcnkvcXdlYmhpc3RvcnkucHJvOgorICAgICAgICAqIHRlc3RzL3F3
ZWJoaXN0b3J5aW50ZXJmYWNlL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLnBybzoKKyAgICAgICAgKiB0
ZXN0cy9xd2VicGFnZS9xd2VicGFnZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRh
dGFiYXNlL3F3ZWJwbHVnaW5kYXRhYmFzZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcv
cXdlYnZpZXcucHJvOgorCisyMDA5LTEwLTIyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKHNwZWN1bGF0aXZl
IGJ1aWxkIGZpeCAtIHF0IGlzIGN1cnJlbnRseSBhbHJlYWR5IGJyb2tlbiEpCisgICAgICAgIEJ1
aWxkIGZpeCBmb2xsb3dpbmcgYnVnICMzMDY5Ni4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVu
dC5jcHA6CisgICAgICAgIChzZXR1cFNjcmlwdENvbnRleHQpOgorICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorCisy
MDA5LTEwLTIyICBTaHUgQ2hhbmcgIDxDaGFuZy5TaHVAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtRdF0gRW5hYmxlIHRyYWNrIHZpc2l0
ZWQgbGlua3MgaW4gUVdlYlBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwNTc0CisKKyAgICAgICAgVGVzdDogZmFzdC9oaXN0b3J5L2NsaWNrZWQt
bGluay1pcy12aXNpdGVkLmh0bWwKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisKKzIwMDktMTAtMjIgIEdp
cmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgW1F0XSBBZGQgUHJpbnQgU2hvcnRjdXQg
dG8gUXRMYXVuY2hlcgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMDY4MgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAg
KE1haW5XaW5kb3c6OnNldHVwVUkpOgorCisyMDA5LTEwLTIyICBBbnRvbmlvIEdvbWVzICA8dG9u
aWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUnViYmVyc3RhbXBlZCBieSBUb3IgQXJuZSBW
ZXN0YsO4LgorCisgICAgICAgIENvZGUgc3RhbmRhcmxpemF0aW9uIGZvciBRR1ZMYXVuY2hlci4K
KworICAgICAgICAxKSBNYWRlIG1lbWJlciBpbml0aWxpemF0aW9uIGxpc3RzIGluIGNvbnN0cnVj
dG9ycworICAgICAgICAgICB0byBiZSBwZXIgbGluZS4KKyAgICAgICAgMikgTWFkZSBhcHBseVBy
b3h5IG1ldGhvZCBpbmxpbmUgYXMgYWxsIG90aGVyIG1ldGhvZHMgaW4KKyAgICAgICAgICAgV2Vi
UGFnZSBjbGFzcy4KKworICAgICAgICAqIFFHVkxhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAo
V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJQYWdlOjphcHBseVByb3h5KToKKyAgICAg
ICAgKE1haW5WaWV3OjpNYWluVmlldyk6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93
KToKKyAgICAgICAgKE1haW5XaW5kb3c6OmluaXQpOgorCisyMDA5LTEwLTIyICBBbnRvbmlvIEdv
bWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBBZGQgYSBZLUF4aXMgcm90YXRpb24gdG8gUUdWTGF1bmNo
ZXIuCisKKyAgICAgICAgSXQgdXNlcyB0aGUgUVN0YXRlTWFjaGluZSBBUEkgZnJvbSBRdCA0LjYu
CisKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Oldl
YlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6c2V0WVJvdGF0aW9uKToKKyAgICAgICAgKFdlYlZp
ZXc6OnlSb3RhdGlvbik6CisgICAgICAgIChNYWluVmlldzo6ZmxpcCk6CisgICAgICAgIChNYWlu
Vmlldzo6YW5pbWF0ZWRZRmxpcCk6CisgICAgICAgIChTaGFyZWRTY2VuZTo6U2hhcmVkU2NlbmUp
OgorICAgICAgICAoU2hhcmVkU2NlbmU6OndlYlZpZXcpOgorICAgICAgICAoTWFpbldpbmRvdzo6
aW5pdCk6CisgICAgICAgIChNYWluV2luZG93OjphbmltYXRlZFlGbGlwKToKKyAgICAgICAgKE1h
aW5XaW5kb3c6OmJ1aWxkVUkpOgorCisyMDA5LTEwLTIwICBLZW5uZXRoIFJvaGRlIENocmlzdGlh
bnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBCeSBBZGFtIEJh
cnRoLgorCisgICAgICAgIEFkZCBzb21lIGFjdGlvbnMgdG8gdGhlIG1lbnUgZm9yIGN1cnNvciBk
ZWJ1Z2dpbmcuCisKKyAgICAgICAgR3JhcGhpY3NWaWV3IGJhc2VkIGxhdW5jaGVyIG9ubHkuCisK
KyAgICAgICAgKiBRR1ZMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5WaWV3OjpzZXRX
YWl0Q3Vyc29yKToKKyAgICAgICAgKE1haW5WaWV3OjpyZXNldEN1cnNvcik6CisgICAgICAgIChN
YWluVmlldzo6ZmxpcCk6CisgICAgICAgIChNYWluV2luZG93OjpzZXRXYWl0Q3Vyc29yKToKKyAg
ICAgICAgKE1haW5XaW5kb3c6OnJlc2V0Q3Vyc29yKToKKyAgICAgICAgKE1haW5XaW5kb3c6OmJ1
aWxkVUkpOgorCisyMDA5LTEwLTIwICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IEFkYW0gQmFydGguCisK
KyAgICAgICAgUmVtb3ZlIGNsaXBSZW5kZXJUb1ZpZXdwb3J0IGFzIGFncmVlZCB1cG9uIGluCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTg0MworCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6
UVdlYkZyYW1lUHJpdmF0ZSk6CisKKzIwMDktMTAtMjAgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0cyB0byB0ZXN0IHRoZSBuZXcgcmVuZGVyIGZ1
bmN0aW9uYWxpdHksIGFuZCB0YWtlCisgICAgICAgIGludG8gY29uc2lkZXJhdGlvbiB0aGF0IHJl
bmRlcigpIGNsaXBzIHRvIHRoZSBmcmFtZSBpdHNlbGYgYXMgd2VsbAorICAgICAgICBhcyB0aGUg
dmlld3BvcnQuCisKKyAgICAgICAgUVdlYkZyYW1lOjpyZW5kZXIoKSBub3cgYWx3YXlzIGNsaXBz
LCBzbyB0aGUgb2xkIHRlc3RzIHdlcmUgYm9ndXMuCisKKyAgICAgICAgUmVuZGVyaW5nIHB1cmUg
Y29udGVudHMgKG5vIHNjcm9sbGJhcnMgZXRjKSB3aXRob3V0IGNsaXBwaW5nIGNhbiBub3cKKyAg
ICAgICAgYmUgYWNjb21wbGlzaGVkIHVzaW5nIFFXZWJGcmFtZTo6ZG9jdW1lbnRFbGVtZW50KCkt
PnJlbmRlciguLi4pCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgIChR
V2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMTAtMjAgIEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlcnN0YW1wZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBBcyB3ZSBkbyBub3Qgc3VwcG9ydCByZW5kZXJpbmcg
YSBRV2ViRnJhbWUgd2l0aG91dCBpdCBiZWluZyBjbGlwcGVkCisgICAgICAgIHRoZSB0aGUgZnJh
bWUgYXMgd2VsbCBhcyB0aGUgdmlld3BvcnQsIHdlIG5vdyBzZXQgdGhlIHZpZXdwb3J0IHNpemUK
KyAgICAgICAgdG8gdGhlIHNpemUgb2YgdGhlIGNvbnRlbnRzLgorCisgICAgICAgIFJlbmRlcmlu
ZyBwdXJlIGNvbnRlbnRzIChubyBzY3JvbGxiYXJzIGV0Yykgd2l0aG91dCBjbGlwcGluZyBjYW4g
YmUKKyAgICAgICAgYWNvbXBsaXNoZWQgdXNpbmcgUVdlYkZyYW1lOjpkb2N1bWVudEVsZW1lbnQo
KS0+cmVuZGVyKC4uLikKKworICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxl
bWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnJlbmRlcik6CisKKzIwMDktMTAt
MjAgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgQWRkIG1lbnUg
aXRlbSB0byBkdW1wIHRoZSBwbHVnaW4gbGlzdCB0byB0aGUgY29uc29sZSwKKyAgICAgICAgd2hp
Y2ggY2FuIGJlIGhhbmR5IGZvciBkZWJ1Z2dpbmcuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21h
aW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6ZHVtcFBsdWdpbnMpOgorICAgICAgICAoTWFp
bldpbmRvdzo6c2V0dXBVSSk6CisKKzIwMDktMTAtMTkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5l
IFZlc3Riw7guCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyByZW5kZXIgbWV0aG9kIG9uIFFXZWJG
cmFtZSwgd2hpY2ggc3VwcG9ydHMgc3BlY2lmeWluZworICAgICAgICB3aGljaCBsYXllcnMgdG8g
cmVuZGVyIChzY3JvbGxiYXJzLCBjb250ZW50cywgcGFuLWljb24pLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJQcml2YXRl
KToKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVuZGVyKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
Lmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisKKzIwMDktMTAtMTkgIEFudG9uaW8g
R29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5
YSBIaWRheWF0LgorCisgICAgICAgIFtRdF0gSW5maW5pdGUgbG9vcCAobGVhZGluZyB0byBjcmFz
aCkgd2hlbiBzZXR0aW5nIGN1cnNvciBpbiBRR3JhcGhpY3NXZWJWaWV3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDU0OQorCisgICAgICAgIFBhdGNo
IHJlaW1wbGVtZW50cyBRR3JhcGhpY3NJdGVtJ3MgaXRlbUNoYW5nZSBtZXRob2QsIGFuZCBtYWtl
CisgICAgICAgIEN1cnNvckNoYW5nZSBldmVudCB0byBiZSBlbWl0dGVkIGFmdGVyIGN1cnNvciBo
YXMgYWxyZWFkeSBiZWVuCisgICAgICAgIHNldC4KKworICAgICAgICBRV2lkZ2V0OjpzZXRDdXJz
b3Igc2VuZCB0aGUgZXZlbnQganVzdCBhZnRlciBpdCBzZXRzIHRoZSBjdXJzb3IsCisgICAgICAg
IHRoZW4gcGF0Y2ggbWFrZXMgYm90aCBiZWhhdmlvcnMgY29tcGF0aWJsZS4KKworICAgICAgICAq
IEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZpZXc6Oml0
ZW1DaGFuZ2UpOgorICAgICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3Lmg6CisKKzIwMDktMTAt
MTkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBVbnJldmll
d2VkLCBidWlsZCBmaXguCisKKyAgICAgICAgVXBkYXRlIGNhbGwgdG8gRnJhbWVMb2FkZXI6Omxv
YWRGcmFtZVJlcXVlc3QoKS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisKKzIwMDktMTAtMTkgIFZpYXRjaGVzbGF2IE9z
dGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hlc2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBBZGQgUVdlYkVsZW1lbnQ6OnJlbmRl
ciBBUEkgd2hpY2ggYWxsb3dzIHJlbmRlcmluZyBvZiBzaW5nbGUKKyAgICAgICAgZWxlbWVudC4K
KworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6
cmVuZGVyKToKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50
OjpyZW5kZXIpOgorICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3F3ZWJlbGVtZW50LnFyYzoK
KyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC9pbWFnZS5wbmc6IEFkZGVkLgorCisyMDA5LTEw
LTE5ICBNYXJrdXMgR29ldHogPE1hcmt1cy5Hb2V0ekBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBRV2ViUGFnZTogRG9jOiBzZXROZXR3
b3JrQWNjZXNzTWFuYWdlciBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZS4KKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisKKzIwMDktMTAtMTkgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0
b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZS4KKworICAgICAg
ICBXcm9uZyBpZmRlZiBjb21iaW5hdGlvbiBpbiBRR3JhcGhpY3NXZWJWaWV3J3MgZXZlbnQgbWV0
aG9kLgorCisgICAgICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdy
YXBoaWNzV2ViVmlldzo6ZXZlbnQpOgorCisyMDA5LTEwLTE5ICBHaXJpc2ggUmFtYWtyaXNobmFu
ICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBG
cmV5dGhlci4KKworICAgICAgICBbUXRdIFdpbmRvd2VkIFBsdWdpbnM6IERvbid0IGNyYXNoIHdo
ZW4gY2xpZW50IGlzIDAuCisgICAgICAgIAorICAgICAgICBDbGllbnQgaXMgMCB3aGVuIHdlIHVz
ZSBRV2ViUGFnZSB3aXRob3V0IGEgUVdlYlZpZXcgb3IgUUdyYXBoaWNzV2ViVmlldy4KKyAgICAg
ICAgSW4gYWRkaXRpb24sIHNldEZyYW1lUmVjdCgpL3VwZGF0ZVBsdWdpbldpZGdldCgpIGlzIGNh
bGxlZCBldmVuIGlmIHRoZQorICAgICAgICBwbHVnaW4gd2FzIG5vdCBzdWNjZXNmdWxseSBsb2Fk
ZWQuIHVwZGF0ZVBsdWdpbldpZGdldCgpIHVwZGF0ZXMgdGhlCisgICAgICAgIHdpbmRvdyByZWN0
IHdoaWNoIGlzLCBpbiB0aGVvcnksIHVzZWZ1bCB0byBkcmF3IHNvbWV0aGluZyB0aGF0IGluZGlj
YXRlcworICAgICAgICB0aGF0IHdlIGRpZG4ndCBsb2FkIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAg
CisgICAgICAgIFNvLCBhIHN0YXR1cyBjaGVjayBpcyBhZGRlZCB0byBzZXROUFdpbmRvd0lmTmVl
ZGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MDM4MAorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvcXdlYnBhZ2UucHJvOgorICAgICAgICAq
IHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0YWtlU2NyZWVuc2hv
dCk6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnNjcmVlbnNob3RfZGF0YSk6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHRlc3RzL3Jlc291cmNlcy90ZXN0
LnN3ZjogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9yZXNvdXJjZXMvdGVz
dC5zd2YuCisKKzIwMDktMTAtMTkgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2Fy
ZGJpYXMuaW4+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgorCisgICAg
ICAgIFtRdF0gV2luZG93ZWQgUGx1Z2luczogRml4IGNyYXNoIHdoZW4gUVdlYlBhZ2UgaXMgZGVs
ZXRlZCBhZnRlciBRV2ViVmlldy4KKyAgICAgICAgCisgICAgICAgIEZpeGVzIHZhcmlvdXMgc291
cmNlcyBvZiBjcmFzaGVzOgorICAgICAgICAxLiBUaGUgUGx1Z2luQ29udGFpbmVyIGlzIGEgY2hp
bGQgb2YgUVdlYlZpZXcuIFdoZW4gdGhlIHZpZXcgZ2V0cyBkZWxldGVkLAorICAgICAgICB0aGUg
UGx1Z2luVmlldyBpcyBub3Qgbm90aWZpZWQgYWJvdXQgdGhlIGRlbGV0aW9uIG9mIFBsdWdpbkNv
bnRhaW5lci4KKyAgICAgICAgMi4gUVdlYlZpZXcgZGVzdHJ1Y3RvciBkb2VzIG5vdCBzZXQgY2xp
ZW50IHRvIDAuCisgICAgICAgIDMuIFNvbWV0aW1lcyBwZW5kaW5nIHBhaW50IGV2ZW50cyBhcmUg
c2VudCBhZnRlciB0aGUgcGx1Z2luIGhhcyBkaWVkLCBzbyBhZGQKKyAgICAgICAgYSBjaGVjayBp
biBQbHVnaW5WaWV3OjpzZXROUFdpbmRvd0lmTmVlZGVkLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDM1NAorCisgICAgICAgICogQXBpL3F3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3Ojp+UVdlYlZpZXcpOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdl
YnZpZXcuY3BwOgorICAgICAgICAodHN0X1FXZWJWaWV3OjpyZXVzZVBhZ2VfZGF0YSk6CisgICAg
ICAgICh0c3RfUVdlYlZpZXc6OnJldXNlUGFnZSk6CisKKzIwMDktMTAtMTkgIEpha29iIFRydWVs
c2VuICA8YW50aWFsaXplQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
OTA0MgorCisgICAgICAgIEFsbG93IG9uZSB0byBjb3N0dW1pemUgdGhlIG1pbmltYWwgYW5kIG1h
eGltYWwgc2hyaW5rIGZhY3RvcnMsCisgICAgICAgIEFkZGVkIG1ldGhvZHMgc2V0UHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yLCBwcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IsCisgICAgICAg
IHNldFByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvciwgcHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFj
dG9yIHRvIFFXZWJTZXR0aW5ncy4KKworCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldFByaW50aW5n
TWluaW11bVNocmlua0ZhY3Rvcik6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnByaW50aW5nTWlu
aW11bVNocmlua0ZhY3Rvcik6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldFByaW50aW5nTWF4
aW11bVNocmlua0ZhY3Rvcik6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnByaW50aW5nTWF4aW11
bVNocmlua0ZhY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDA5LTEw
LTE4ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBSZW5hbWUgZml4
ZWRDb250ZW50c1NpemUgcHJvcGVydHkgdG8gcHJlZmVycmVkQ29udGVudHNTaXplIGFzCisgICAg
ICAgIGFncmVlZCB1cG9uIHdpdGggU2ltb24gSGF1c21hbm4gYW5kIE1hdHRoaWFzIEV0dHJpY2gu
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnByZWZl
cnJlZENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0UHJlZmVycmVkQ29udGVu
dHNTaXplKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorCisyMDA5LTEw
LTE2ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBRR0xhdW5jaGVyIGxlYWtz
IFdlYlBhZ2Ugb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMDQ2NQorCisgICAgICAgIE1ha2UgJ1NoYXJlZFNjZW5lJyB0byBvd24gJ1dlYlBh
Z2UnIHJlZmVyZW5jZSBhbmQgZGVsZXRlIGl0IGF0IGl0cyBkZXN0cnVjdG9yLgorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3KToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFFHVkxhdW5jaGVyL21haW4uY3BwOgorICAg
ICAgICAoU2hhcmVkU2NlbmU6OlNoYXJlZFNjZW5lKToKKyAgICAgICAgKFNoYXJlZFNjZW5lOjp+
U2hhcmVkU2NlbmUpOgorCisyMDA5LTEwLTE2ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgW1F0XSAiZGFuZ2xpbmciIHBvaW50ZXIgdG8gcXdlYnBhZ2UncyB2aWV3IG9iamVjdCBjYW4g
bGVhZHMgUUdMYXVuY2hlciB0byBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzA0NTkKKworICAgICAgICBSZW1vdmUgYWxsIHNldFZpZXcoZXYt
PndpZGdldCgpKSBjYWxscyBpbiBRV2ViUGFnZSBhbmQgUUdXViBldmVudCBoYW5kbGluZyBtZXRo
b2RzLAorICAgICAgICBzaW5jZSBRV2ViUGFnZUNsaWVudCB3b3VsZCBkbyB0aGUgdHJpY2suCisK
KyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NX
ZWJWaWV3Ojpob3Zlck1vdmVFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpt
b3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJl
bGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OndoZWVsRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmRyYWdMZWF2ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJh
Z01vdmVFdmVudCk6CisKKzIwMDktMTAtMTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52
ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFB1bGwgb3V0IHI0OTY3NiBhcyBpdCBjYXVzZWQg
YnVpbGQgYnJlYWtnZXMgb24gU3ltYmlhbgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KworMjAwOS0xMC0xNiAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIE5lZWQg
YSB3YXkgdG8gaW5mb3JtIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGEgTmV0c2NhcGUgcGx1Z2luIGlz
IGNyZWF0ZWQgb3IgZGVsZXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzAxNzkKKworICAgICAgICBBZGRlZCAiYyIgc3R5bGUgc3RhdGljIG1ldGhv
ZHMgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBob29rIHVwIGZvcgorICAgICAgICByZWNlaXZpbmcg
bm90aWZpY2F0aW9ucyB3aGVuIGEgcGx1Z2luIGlzIGNyZWF0ZWQgb3IgZGVzdHJveWVkLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOS0xMC0xNSAgQW50b25pbyBHb21lcyAg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlcnN0YW1wZWQgYnkgVG9yIEFy
bmUuCisKKyAgICAgICAgTWFrZSBRR0xhdW5jaGVyJ3MgV2ViUGFnZSBjbGFzcyBjb25zdHJ1Y3Rv
ciB0byBnZXQgYSBRT2JqZWN0KiBhcyBwYXJlbnQgKG5vdCBRV2lkZ2V0KikuCisKKyAgICAgICAg
KiBRR1ZMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKFdlYlBhZ2U6OldlYlBhZ2UpOgorCisy
MDA5LTEwLTE1ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUuCisKKyAgICAgICAgW1F0XSBRR0xhdW5jaGVyIGNyYXNo
ZXMgd2hpbGUgY2xvc2luZyBhIHdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzAzODUKKworICAgICAgICBTZXQgcGFnZSdzIHBhZ2VDbGllbnQg
cmVmZXJlbmNlIHRvICcwJyBhdCBRR1dWIGRlbGV0aW9uLgorCisgICAgICAgICogQXBpL3FncmFw
aGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlldzo6flFHcmFwaGljc1dl
YlZpZXcpOgorICAgICAgICAqIHRlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dl
YnZpZXcuY3BwOgorICAgICAgICAoV2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJQYWdl
OjphYm9ydGluZyk6CisgICAgICAgICh0c3RfUUdyYXBoaWNzV2ViVmlldzo6Y3Jhc2hPblZpZXds
ZXNzV2ViUGFnZXMpOgorCisyMDA5LTEwLTEzICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgW1F0XSBNYWtlIGNvbnRleHQgbWVudSB0byB3b3JrIGluIFFHcmFwaGljc1dlYlZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM2CisKKyAg
ICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJW
aWV3OjpldmVudCk6CisKKzIwMDktMTAtMTMgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hA
Zm9yd2FyZGJpYXMuaW4+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgW1F0XSBQbHVnaW5zIDogUmVtb3ZlIGFsbCB0cmFjZXMgb2Ygd2luSWQuIFVzZSBv
d25lcldpZGdldCgpIGluc3RlYWQuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgYnVnIGZv
ciB0d28gcmVhc29uczoKKyAgICAgICAgMS4gRXZlcnl0aW1lIHdlIHVzZSB3aW5JZCgpLCB3ZSBl
bmQgdXAgY3JlYXRpbmcgYSBuYXRpdmUgd2lkZ2V0LiBUaGlzIGNhdXNlcyBhbgorICAgICAgICB1
bm5lY2Vzc2FyeSBjb3B5IG9mIGNvbnRlbnRzIGZyb20gdGhlIGJhY2tpbmcgc3RvcmUgdG8gdGhl
IG5hdGl2ZSB3aWRnZXQuCisgICAgICAgIDIuIE5laXRoZXIgd2luZG93ZWQgbm9yIHdpbmRvd2xl
c3MgcGx1Z2lucyByZXF1aXJlIHRoZSB3aW5JZCBvZiB0aGUgUVdlYlZpZXcgb3IKKyAgICAgICAg
UUdyYXBoaWNzVmlldy4KKyAgICAgICAgCisgICAgICAgIEludHJvZHVjZSBvd25lcldpZGdldCgp
IHdoaWNoIHJldHVybnMgYSBRV2lkZ2V0ICogd2l0aG91dCBjcmVhdGluZyBhIG5hdGl2ZSB3aWRn
ZXQKKyAgICAgICAgKGFzIG9wcG9zZWQgdG8gUVdpZGdldDo6ZmluZCh3aW5JZCkpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE3MAorCisgICAg
ICAgICogQXBpL3FncmFwaGljc3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmll
d1ByaXZhdGU6Om93bmVyV2lkZ2V0KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAg
ICAgICAoUVdlYlZpZXdQcml2YXRlOjpvd25lcldpZGdldCk6CisKKzIwMDktMTAtMTMgIEFudG9u
aW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBzb21lIGluaXRpYWwgYXV0b3Rlc3Rz
IGZvciBRV2ViUGFnZSdzIEVycm9yUGFnZUV4dGVudGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyOTYKKworICAgICAgICAqIHRlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgIChFcnJvclBhZ2U6OkVycm9yUGFnZSk6Cisg
ICAgICAgIChFcnJvclBhZ2U6OnN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKEVycm9yUGFn
ZTo6ZXh0ZW5zaW9uKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6ZXJyb3JQYWdlRXh0ZW5zaW9u
KToKKworMjAwOS0xMC0xMyAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gYmV0
dGVyIGhhbmRsZSBwb3NzaWJsZSBlZGdlIGNhc2VzIG9uIHF3ZWJmcmFtZTo6cmVxdWVzdGVkVXJs
IHVzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAy
MTYKKworICAgICAgICBRV2ViRnJhbWU6OnJlcXVlc3RlZFVybCBjYW4gYmUgY2FsbGVkIGF0IGFu
eSB0aW1lIGR1cmluZyB0aGUgbG9hZAorICAgICAgICBwcm9jZXNzLCBpbmNsdWRpbmc6CisKKyAg
ICAgICAgKiBBbiBlcnJvciBoYW5kbGluZyAod2hlcmVhcyBhbiBhbHRlcm5hdGUgZXJyb3IgcGFn
ZSBmb3IgdW5zdWNjZXNzZnVsCisgICAgICAgICAgbG9hZCBpcyBiZWluZyBzZXQpOworICAgICAg
ICAqIEEgc3NsIGVycm9yIGV4Y2VwdGlvbiBjYWxsOworICAgICAgICAqIER1cmluZyBuYXZpZ2F0
aW9uIG5vdGlmaWNhdGlvbnMvY2FsbGJhY2tzICh0aXRsZUNoYW5nZWQsIHVybENoYW5nZWQsCisg
ICAgICAgICAgcHJvZ3Jlc3NlcywgYWRkSGlzdG9yeUVudHJ5LCBldGMpOworICAgICAgICAqIEFt
b25nIG90aGVycy4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHJlcXVlc3RlZFVybCBjYWxs
cyB0byBmYWxsYmFjayB0byBGcmFtZUxvYWRlckNsaWVudAorICAgICAgICBtX2xvYWRFcnJvcidz
IGZhaWxpbmdVUkwgd2hlbiBhbiBlcnJvciBoYXMgb2NjdXJyZWQsIHVubGVzcyBpdCBpcworICAg
ICAgICBudWxsL2VtcHR5LgorCisgICAgICAgIEFsc28sIG1fbG9hZEVycm9yIGlzIG5vdyBiZWlu
ZyByZXNldCBhdCBlYWNoIHRoZSBtYWluIGZyYW1lIHN0YXJ0cyBhCisgICAgICAgIGxvYWQsIGlu
IG9yZGVyIHRvIGF2b2lkIHByZXZpb3VzIGxvYWQgZXJyb3JzIGZvb3RwcmludHMuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVxdWVzdGVkVXJs
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWRO
b3RpZmljYXRpb24pOgorCisyMDA5LTEwLTEyICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
IFtRdF0gTWlzc2luZyBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZGVmYXVsdCB0ZXh0IGVuY29kaW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMTEK
KworICAgICAgICBRdFdlYktpdCBoYXMgcHJvdmlkZWQgYSBkZWZhdWx0LCBoYXJkY29kZWQgdmFs
dWUgZm9yIGRlZmF1bHQgY2hhcnNldCBidXQgc2luY2UKKyAgICAgICAgdGhlIGFkZGl0aW9uIG9m
IHRoZSBkZWZhdWx0VGV4dEVuY29kaW5nIHNldHRpbmcgaW4gUVdlYlNldHRpbmdzLCB0aGF0IGhh
cmRjb2RlZAorICAgICAgICB2YWx1ZSBoYXMgaGFkIG5vIGVmZmVjdC4KKworICAgICAgICBBZGRl
ZCBhIHJlZ3Jlc3Npb24gdGVzdCBhbmQgdW5za2lwcGVkIGZhc3QvZG9tL0RvY3VtZW50L2RvY3Vt
ZW50LWNoYXJzZXQuaHRtbCwKKyAgICAgICAgd2hpY2ggaXMgcGFzc2luZyBub3cuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmRlZmF1bHRUZXh0RW5jb2Rpbmcp
OgorCisyMDA5LTEwLTEyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBJbXBsZW1lbnQgdGhlIG5ldyBwYWxldHRlKCkgbWV0aG9kcyBvbiB0aGUgcGFnZSBjbGllbnRz
CisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhp
Y3NXZWJWaWV3UHJpdmF0ZTo6cGFsZXR0ZSk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6cGFsZXR0ZSk6CisKKzIwMDktMTAtMTIgIEplZHJ6
ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUVdlYlBhZ2UncyBjcmVhdGVWaWV3bGVz
c1BsdWdpbiBhdXRvdGVzdCBjcmFzaCBmaXguCisgICAgICAgIAorICAgICAgICBJdCBpcyBwb3Nz
aWJsZSB0aGF0IHBsdWdpbnMgdGhhdCBhcmUgUVdpZGdldHMgb3IgUUdyYXBoaWNzV2lkZ2V0cwor
ICAgICAgICBhcmUgY3JlYXRlZCBiZWZvcmUgYSB2aWV3IGhhcyBiZWVuIGFzc2lnbmVkIHRvIGEg
UVdlYlBhZ2UuIFRoZQorICAgICAgICBwbHVnLWlucyB3b24ndCBiZSBmdWxseSBmdW5jdGlvbmFs
LCBhcyBieSBkZXNpZ24sIHRoZXkgc2hvdWxkCisgICAgICAgIHZpc3VhbGlzZSBzb21ldGhpbmcs
IGJ1dCB0aGV5IHdvbid0IGNyYXNoIGFuZCB3aWxsIHN0YXkgaW4gbWVtb3J5LgorCisgICAgICAg
IEFuIGF1dG90ZXN0IHRoYXQgY292ZXJzIHRoaXMgdXNlLWNhc2UsIGlzIGluY2x1ZGVkLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDExOAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAq
IHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgIChQbHVnaW5UcmFja2Vk
UGFnZVdpZGdldDo6UGx1Z2luVHJhY2tlZFBhZ2VXaWRnZXQpOgorICAgICAgICAoUGx1Z2luVHJh
Y2tlZFBhZ2VHcmFwaGljc1dpZGdldDo6UGx1Z2luVHJhY2tlZFBhZ2VHcmFwaGljc1dpZGdldCk6
CisgICAgICAgIChQbHVnaW5UcmFja2VkUGFnZUdyYXBoaWNzV2lkZ2V0OjpjcmVhdGVQbHVnaW4p
OgorICAgICAgICAodHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKToKKyAgICAgICAgKHRzdF9R
V2ViUGFnZTo6Y3JlYXRlVmlld2xlc3NQbHVnaW4pOgorCisyMDA5LTEwLTA5ICBKb2UgTGlnbWFu
ICA8am9zZXBoLmxpZ21hbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
SGF1c21hbm4uCisKKyAgICAgICAgU2V0cyBRdDo6V0FfSW5wdXRNZXRob2RFbmFibGVkIGFuZCBR
dDo6SW1oSGlkZGVuVGV4dCBmb3IgcGFzc3dvcmQgZmllbGRzIGluIEVkaXRvckNsaWVudFF0Cisg
ICAgICAgIHNldElucHV0TWV0aG9kU3RhdGUuIFRoaXMgY2hhbmdlIGlzIG5lZWRlZCBzbyB3aWRn
ZXRzIHN1Y2ggYXMgdGhlIHM2MCBzb2Z0d2FyZSAKKyAgICAgICAgaW5wdXQgcGFuZWwgY2FuIHJl
Y2VpdmUgaW5wdXQgbWV0aG9kIGV2ZW50cyBmb3IgcGFzc3dvcmQgZmllbGRzLgorICAgICAgICBJ
dCdzIHVwIHRvIHRoZSBRdCBwbGF0Zm9ybSB0byBkZXRlcm1pbmUgd2hpY2ggd2lkZ2V0IHdpbGwg
cmVjZWl2ZSBpbnB1dCBtZXRob2QgCisgICAgICAgIGV2ZW50cyB3aGVuIHRoZXNlIGZsYWdzIGFy
ZSBzZXQuCisgICAgICAgIEFsc28gYWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIHNldElucHV0TWV0
aG9kRW5hYmxlZCBhbmQgc2V0SW5wdXRNZXRob2RIaW50IAorICAgICAgICB0byBRR3JhcGhpY3NX
ZWJWaWV3UHJpdmF0ZSBhbmQgUVdlYlZpZXdQcml2YXRlLiBUaGlzIGNoYW5nZSByZW1vdmVzIHRo
ZSBkaXJlY3QKKyAgICAgICAgZGVwZW5kZW5jeSBvbiBRV2ViVmlldyBhbmQgdXNlcyBRV2ViUGFn
ZUNsaWVudC4KKyAgICAgICAgQWRkZWQgYXV0b3Rlc3QgdG8gdHN0X3F3ZWJwYWdlLmNwcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwMjMKKworICAg
ICAgICAqIEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFHcmFwaGljc1dlYlZp
ZXdQcml2YXRlOjpzZXRJbnB1dE1ldGhvZEVuYWJsZWQpOgorICAgICAgICAoUUdyYXBoaWNzV2Vi
Vmlld1ByaXZhdGU6OnNldElucHV0TWV0aG9kSGludCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3
LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6c2V0SW5wdXRNZXRob2RFbmFibGVkKToK
KyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6c2V0SW5wdXRNZXRob2RIaW50KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogdGVzdHMvcXdl
YnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRo
b2RzKToKKworMjAwOS0xMC0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIE1vdmUgZXhlY3V0ZVNj
cmlwdCBmcm9tIEZyYW1lTG9hZGVyIHRvIFNjcmlwdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjAwCisKKyAgICAgICAgVXBkYXRl
IEFQSSBjYWxsLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisKKzIwMDktMTAtMDggIEplZHJ6ZWogTm93YWNr
aSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgUGFydCBvZiB0ZXN0T3B0aW9uYWxKU09iamVjdHMgYXV0
b3Rlc3Qgd2FzIG1hcmtlZCBhcyAiZXhwZWN0IHRvIGZhaWwiLgorCisgICAgICAgIFR3byBwbGFj
ZXMgaW4gdHN0X1FXZWJQYWdlOjp0ZXN0T3B0aW9uYWxKU09iamVjdHMgd2VyZSBtYXJrZWQgYXMK
KyAgICAgICAgZXhwZWN0ZWQgdG8gZmFpbC4gVGhlIHByb2JsZW0gY29uY2VybiBjaGVja2luZyBp
ZiBhIGZlYXR1cmUgaXMgZW5hYmxlZAorICAgICAgICBvciBkaXNhYmxlZC4gQWNjb3JkaW5nIHRv
IGRpc2N1c3Npb24gb24gd2Via2l0IGRldiBtYWlsaW5nIGxpc3QKKyAgICAgICAgYSBkaXNhYmxl
ZCBmZWF0dXJlIHNob3VsZCBiZSBpbnZpc2libGUgZnJvbSBqYXZhIHNjcmlwdCBsZXZlbCwgYnV0
CisgICAgICAgIHRoZXJlIGFyZSBleGNlcHRpb25zIGZyb20gdGhlIHJ1bGUuIFNvIHdlIGRlY2lk
ZWQgdG8gZGlzYWJsZSB0aGUgdGVzdAorICAgICAgICBmb3Igbm93LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTg2NworCisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6dGVz
dE9wdGlvbmFsSlNPYmplY3RzKToKKworMjAwOS0xMC0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IEZhY3RvciBQb2xpY3lDaGVja2VyIG91dCBvZiBGcmFtZUxvYWRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxNTUKKworICAgICAgICBNb3ZlIHRo
ZSBwb2xpY3kgY2FsbGJhY2sgdG8gdGhlIHBvbGljeSBvYmplY3QuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxQb2xpY3lGdW5jdGlvbik6CisKKzIwMDktMTAtMDcgIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEdldCByaWQgb2YgdXNlbGVzcyBsb2Fk
RmFpbGVkIHNpZ25hbCBpbiBRR3JhcGhpY3NXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE2NgorCisgICAgICAgICogQXBpL3FncmFwaGlj
c3dlYnZpZXcuY3BwOgorICAgICAgICAoUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6Ol9xX2RvTG9h
ZEZpbmlzaGVkKToKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vidmlldy5oOgorICAgICAgICAq
IFFHVkxhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6aW5pdCk6CisgICAg
ICAgIChNYWluV2luZG93Ojpsb2FkRmluaXNoZWQpOgorCisyMDA5LTEwLTA3ICBHaXJpc2ggUmFt
YWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSByb3RhdGlvbiBlZmZlY3Qg
dG8gUUdWTGF1bmNoZXIKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzAxNjIKKworICAgICAgICAqIFFHVkxhdW5jaGVyL21haW4uY3BwOgorICAgICAg
ICAoTWFpblZpZXc6OmFuaW1hdGVkRmxpcCk6CisgICAgICAgIChNYWluV2luZG93OjphbmltYXRl
ZEZsaXApOgorICAgICAgICAoTWFpbldpbmRvdzo6YnVpbGRVSSk6CisKKzIwMDktMTAtMDcgIFZv
bGtlciBIaWxzaGVpbWVyICA8dm9sa2VyLmhpbHNoZWltZXJAbm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIERvYzogRG9jdW1lbnQgSFRN
TCBhbmQgc3RhdHVzIGFzIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBBcGkvcWdyYXBoaWNzd2Vi
dmlldy5jcHA6CisKKzIwMDktMTAtMDcgIE1hcnRpbiBTbWl0aCAgPG1zbWl0aEB0cm9sbHRlY2gu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZp
eCBxZG9jIHdhcm5pbmcgYWJvdXQgZGlzYWJsZWQgcmVuZGVySGludHMgcHJvcGVydHkKKyAgICAg
ICAgb24gU3ltYmlhbi4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgICog
QXBpL3F3ZWJ2aWV3Lmg6CisKKzIwMDktMTAtMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBNb3Zl
IHNldExvY2FsTG9hZFBvbGljeSBhbmQgZnJpZW5kcyB0byBTZWN1cml0eU9yaWdpbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxMTAKKworICAgICAg
ICBDYWxsIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKworMjAwOS0xMC0wNiAgQmVu
amFtaW4gQyBNZXllciAgPGJtZXllckByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFy
aXlhIEhpZGF5YXQuCisgICAgICAgIAorICAgICAgICBXaGVuIHRoZSBkcmFnIGRhdGEgY29udGFp
bnMgYW4gaW1hZ2Ugc2V0IGl0IG9uIHRoZSBRRHJhZyBzbyBpdCB3aWxsIGJlIHZpc2libGUgdG8g
dGhlIHVzZXIuCisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6CisKKzIw
MDktMTAtMDYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGNsb3NlIGluc3BlY3RvciBjbGllbnQgdmlldyBvbgorICAgICAgICBJbnNwZWN0b3JDb250cm9s
bGVyOjpjbG9zZSBBUEkgY2FsbC4KKworICAgICAgICBJbiBvcmRlciB0byBydW4gYmF0Y2ggd2Vi
IGluc3BlY3RvciBsYXlvdXQgdGVzdHMgKGFuZCBub3QgYWZmZWN0CisgICAgICAgIHN1YnNlcXVl
bnQgdGVzdHMpIHdlIHNob3VsZCBjbG9zZSBpbnNwZWN0b3IgY2xpZW50J3MgdmlldyB1cG9uCisg
ICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlIEFQSSBjYWxsLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDAwOQorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50UXQ6OmNyZWF0ZVBhZ2UpOgorCisyMDA5LTEwLTA2ICBKYW5uZSBLb3Nr
aW5lbiAgPGphbm5lLnAua29za2luZW5AZGlnaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gZG9uJ3QgZW5hYmxlIGlucHV0IG1ldGhv
ZHMgb24gU3ltYmlhbiBieSBkZWZhdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzAxMTcKKworICAgICAgICBJZiBpbnB1dCBtZXRob2RzIGFyZSBl
bmFibGVkIFN5bWJpYW4gRkVQIHdpbGwgYmUgbGF1bmNoZWQgb24gZXZlcnkKKyAgICAgICAgcG9p
bnRlciBldmVudCBtYWtpbmcgd2VicGFnZSBuYXZpZ2F0aW9uIGltcG9zc2libGUgd2l0aCBRV2Vi
Vmlldy4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6
UVdlYlZpZXcpOgorCisyMDA5LTEwLTA1ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHpl
Y2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIFF0TGF1bmNoZXI6IHByaW50IHRoZSBudW1iZXIgb2YgbG9hZGVkIHVybHMKKyAg
ICAgICAgCisgICAgICAgIFdoZW4gdXNpbmcgdGhlIC1yIG1vZGUgcHJpbnQgdGhlIG51bWJlciBv
ZiBVUkxzIGxvYWRlZCBzbyBmYXIuIFRoaXMKKyAgICAgICAgaXMgZXh0cmVtbHkgdXNlZnVsIHdo
ZW4gb3BlbmluZyB0aGUgc2FtZSBVUkwgb3ZlciBhbmQgb3ZlciBhZ2FpbiBhbmQKKyAgICAgICAg
b25lIHdhbnRzIHRvIHNlZSB0aGUgcHJvZ3Jlc3MuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21h
aW4uY3BwOgorICAgICAgICAoVVJMTG9hZGVyOjpVUkxMb2FkZXIpOgorICAgICAgICAoVVJMTG9h
ZGVyOjpsb2FkTmV4dCk6CisKKzIwMDktMTAtMDUgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJp
c2hAZm9yd2FyZGJpYXMuaW4+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgQWRkIHNjcmVlbnNob3Qgb3B0aW9uIHRvIG1lbnViYXIKKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwNjcKKworICAgICAgICAq
IFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChNYWluV2luZG93OjpzY3JlZW5zaG90KToK
KyAgICAgICAgKE1haW5XaW5kb3c6OnNldHVwVUkpOgorCisyMDA5LTEwLTA1ICBHaXJpc2ggUmFt
YWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFNldHRpbmcgdGhlIGVudiBRVExBVU5DSEVSX1VT
RV9BUkdCX1ZJU1VBTFMgbWFrZXMgUXQgdXNlIFdBX1RyYW5zbHVjZW50V2luZG93LgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA2OAorCisgICAg
ICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5k
b3cpOgorCisyMDA5LTEwLTA1ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIEFkZCBkb2N1bWVudGF0aW9uIHRvIHRoZSBFcnJvclBhZ2VFeHRlbnNpb24uCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisyMDA5LTEwLTAyICBZYWVsIEFoYXJvbiAg
PHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBbUXRdIEluZm9ybSB0aGUgYXBwbGljYXRpb24gd2hlbiBhIG5ldyBy
ZXF1ZXN0IGlzIGNyZWF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI5OTc1CisKKyAgICAgICAgQWRkIGEgc2lnbmFsIHRvIFFXZWJQYWdlLCB0byBp
bmZvcm0gdGhlIGFwcGxpY2F0aW9uIHdoZW4gYSByZXF1ZXN0IGlzIGNyZWF0ZWQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAg
ICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBh
Z2U6OmxvYWRGaW5pc2hlZCk6CisKKzIwMDktMTAtMDUgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIEVycm9yUGFnZUV4dGVuc2lvbjogQWRkIGEgcG9pbnRlciB0byB0
aGUgUVdlYkZyYW1lIHRoYXQgaGFkCisgICAgICAgIGFuIGVycm9yLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYWxsRXJyb3JQ
YWdlRXh0ZW5zaW9uKToKKworMjAwOS0xMC0wNSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4g
IDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KKworICAgICAgICBEbyBub3QgZW1wdHkgdGhlIG9mZmxpbmUgd2ViIGFwcGNhY2hlIHdo
ZW4gY2xlYXJpbmcKKyAgICAgICAgbWVtb3J5IGNhY2hlcy4gVGhhdCBvbmUgaXMgbm90IGluIG1l
bW9yeSwgYnV0IHN0b3JlZAorICAgICAgICBpbiBzcWxpdGUuCisKKyAgICAgICAgKiBBcGkvcXdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMp
OgorCisyMDA5LTEwLTA1ICBKLVAgTnVybWkgIDxqcG51cm1pQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGRlZCBRR3JhcGhpY3NX
aWRnZXQtcGx1Z2lucyBzdXBwb3J0IHRvIEZyYW1lTG9hZGVyQ2xpZW50UXQuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NzEwCisKKyAgICAgICAg
KiBBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHA6CisgICAgICAgIChRR3JhcGhpY3NXZWJWaWV3UHJp
dmF0ZTo6cGx1Z2luUGFyZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAg
ICAoUVdlYlZpZXdQcml2YXRlOjpwbHVnaW5QYXJlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIwMDkt
MTAtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmll
dyBidWlsZCBmaXguICBJIHdpc2ggSSBoYWQgYSB0cnkgc2VydmVyLi4uCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24p
OgorCisyMDA5LTEwLTAyICBOb3JiZXJ0IExlc2VyICA8bm9yYmVydC5sZXNlckBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQ29uZGl0
aW9uYWxseSBndWFyZCBjdXJzb3IgY29kZSAoY3Vyc29yIGFuZCB1cGRhdGVDdXJzb3IgZnVuY3Rp
b25zKSB3aXRoICFRVF9OT19DVVJTT1IuCisgICAgICAgIE90aGVyd2lzZSwgaXQgaXMgaW5jb25z
aXN0ZW50IHdpdGggY2xhc3MgZGVjbGFyYXRpb24gb2YgUUN1cnNvci4KKworICAgICAgICAqIEFw
aS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisy
MDA5LTEwLTAyICBQcmFzYW50aCBVbGxhdHRpbCAgPHByYXNhbnRoLnVsbGF0dGlsQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBGaXgg
Y29tcGlsZXIgd2FybmluZ3MgYWJvdXQgdW51c2VkIGZ1bmN0aW9uIGFyZ3VtZW50cy4KKworICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxCYXJN
aW5pbXVtKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpmb2N1c0luRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpmb2N1c091
dEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bGVhdmVFdmVudCk6CisgICAgICAg
IChRV2ViUGFnZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2Ny
aXB0Q29uZmlybSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6CisgICAg
ICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6YWNjZXB0
TmF2aWdhdGlvblJlcXVlc3QpOgorICAgICAgICAoUVdlYlBhZ2U6OmNob29zZUZpbGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0OjpyZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6cmVhY2hlZE1heEFwcENhY2hlU2l6ZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNsaWVudFF0Ojpkb3dubG9hZFVSTCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpyZXByZXNlbnRhdGlvbkV4aXN0c0Zv
clVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpnZW5l
cmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
Y3JlYXRlSmF2YUFwcGxldFdpZGdldCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpoaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnJl
bW92ZVNldHRpbmcpOgorCisyMDA5LTEwLTAxICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4Lgor
CisgICAgICAgIE1ha2UgU29mdHdhcmUgSW5wdXQgUGFuZWwgcmVxdWVzdHMgd29yayB3aXRoIFFH
cmFwaGljc1dlYlZpZXcKKyAgICAgICAgX2FuZF8gUVdlYlZpZXcgYnkgc2hhcmluZyB0aGUgZXZl
bnQgY29kZSBpbiBoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwoKS4KKworICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUmVsZWFzZUV2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKToK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCisyMDA5LTEwLTAxICBBbGV4aXMgTWVuYXJk
ICA8YWxleGlzLm1lbmFyZEBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBSZW5hbWUgUVdlYkdyYXBoaWNzSXRlbSB0byBRR3JhcGhp
Y3NXZWJWaWV3CisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3BwOiBSZW5hbWVkLgor
ICAgICAgICAqIEFwaS9xd2ViZ3JhcGhpY3NpdGVtLmg6IFJlbmFtZWQuCisgICAgICAgICogV2Vi
S2l0L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoK
KyAgICAgICAgKiB0ZXN0cy9xd2ViZ3JhcGhpY3NpdGVtL3F3ZWJncmFwaGljc2l0ZW0ucHJvOiBS
ZW5hbWVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJncmFwaGljc2l0ZW0vdHN0X3F3ZWJncmFwaGlj
c2l0ZW0uY3BwOiBSZW5hbWVkLgorCisyMDA5LTEwLTAxICBBbnRvbmlvIEdvbWVzICAgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTI0OAor
ICAgICAgICBbUXRdIFtBUEldIE1ha2UgaXQgcG9zc2libGUgdG8gaGF2ZSAnaW52aXNpYmxlJyBs
b2FkcworCisgICAgICAgIE1ha2UgUVdlYkZyYW1lJ3Mgc2V0SHRtbCBhbmQgc2V0Q29udGVudCBt
ZXRob2RzIHRvIG5vdCBjaGFuZ2UKKyAgICAgICAgc2Vzc2lvbiBhbmQgZ2xvYmFsIGhpc3Rvcnkg
YXQgYWxsLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OnNldEh0bWwpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRDb250ZW50KToKKyAgICAgICAg
KiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJh
bWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMTAtMDEgIEtyaXN0aWFuIEFtbGllICA8a3Jp
c3RpYW4uYW1saWVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIEZpeGVkIHNvZnR3YXJlIGlucHV0IHBhbmVsIHN1cHBvcnQgb24gd2Vi
IGlucHV0IGVsZW1lbnRzLgorCisgICAgICAgIFNlbmQgdGhlIFJlcXVlc3RTb2Z0d2FyZUlucHV0
UGFuZWwgZXZlbnQgaWYgdGhlIGVsZW1lbnQgc3VwcG9ydHMgZm9jdXMKKyAgICAgICAgYW5kIHRo
ZSBlbGVtZW50IGlzIGNsaWNrZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpt
b3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwOS0x
MC0wMSAgSm9lIExpZ21hbiAgPGpvc2VwaC5saWdtYW5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIGZvciBR
V2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeSBhbmQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhv
ZEV2ZW50CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5NjgxCisKKyAgICAgICAgU29tZSBhZGRpdGlvbmFsIGNoYW5nZXMgZnJvbSBLcmlzdGlhbiBB
bWxpZSA8a3Jpc3RpYW4uYW1saWVAbm9raWEuY29tPjoKKworICAgICAgICAgICAgKiBGaXhlZCBz
dXJyb3VuZGluZyB0ZXh0IHRvIGV4Y2x1ZGUgcHJlZWRpdCBzdHJpbmcKKyAgICAgICAgICAgICog
QXZvaWQgZW1pc3Npb24gb2YgbWljcm9Gb2N1c0NoYW5nZWQgZHVyaW5nIHNldENvbXBvc2l0aW9u
KCkKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OmlucHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVl
cnkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToK
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMpOgorCisyMDA5LTA5LTMwICBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXZpZCBIeWF0dC4KKworICAgICAgICBBZGQgdGhlIGZhaWxlZCBVUkwgdG8gdGhlIEVycm9yUGFn
ZUV4dGVuc2lvbiwgYXMgaXQgaXMgcXVpdGUKKyAgICAgICAgdXNlZnVsIGZvciBjcmVhdGluZyBl
cnJvciBwYWdlcy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVuc2lvbik6CisKKzIwMDktMDktMjkg
IEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgW1F0XSBEZWZhdWx0IGZv
bnQgc2l6ZSByZWNvbmNpbGlhdGlvbiB0byAxNnB4LzEzcHggdG8gbWF0Y2ggb3RoZXIgcGxhdGZv
cm0ncyBkZS1mYWN0byBzdGFuZGFyZC4KKyAgICAgICAgVGhpcyBmaXhlcyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2NzQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKworMjAw
OS0wOS0yOSAgSmVkcnplaiBOb3dhY2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4NDQKKworICAgICAgICBRV2ViUGFnZSBk
ZXBlbmRlbmN5IGF1dG90ZXN0IGZpeC4KKworICAgICAgICBGaXggZm9yIGRhdGFiYXNlKCkgYXV0
b3Rlc3QuIEFsbCBvcGVuZWQgZGF0YWJhc2VzIHNob3VsZCBiZSByZW1vdmVkIGF0CisgICAgICAg
IGVuZCBvZiB0ZXN0LgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6ZGF0YWJhc2UpOgorCisyMDA5LTA5LTI5ICBKZWRy
emVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFNvbWUgUVdlYkhpc3RvcnkgYW5kIFFX
ZWJQYWdlIGF1dG90ZXN0IGNyYXNoIGZpeGVzLgorCisgICAgICAgIFNvbWUgY2hlY2tpbmcgZm9y
IG1fbWFpbkZyYW1lIHdlcmUgYWRkZWQuIE1haW5GcmFtZSBzaG91bGQgYmUgY3JlYXRlZAorICAg
ICAgICBhdCBzb21lIHBvaW50IG9mIFFXZWJQYWdlIGxpdmUgY2ljbGUuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5ODAzCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6On5RV2ViUGFnZSk6CisgICAgICAg
IChRV2ViUGFnZTo6Y3VycmVudEZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjpoaXN0b3J5KToK
KyAgICAgICAgKFFXZWJQYWdlOjpzZWxlY3RlZFRleHQpOgorICAgICAgICAoUVdlYlBhZ2U6OnVw
ZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y3Jhc2hUZXN0c19MYXp5
SW5pdGlhbGl6YXRpb25PZk1haW5GcmFtZSk6CisKKzIwMDktMDktMjkgIEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uIGFuZCBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEltcGxlbWVu
dCBRV2ViUGFnZSBFeHRlbnNpb24gZm9yIGVycm9yIHBhZ2VzLCBpbmNsLgorICAgICAgICBhbiBl
eGFtcGxlIG9uIGhvdyB0byB1c2UgaXQgaW4gUXRMYXVuY2hlci4KKworICAgICAgICBDb3JyZWN0
IG91ciB1c2Ugb2YgUmVzb3VyY2VFcnJvci4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgor
ICAgICAgICAoRXh0ZW5zaW9uT3B0aW9uOjopOgorICAgICAgICAoRXh0ZW5zaW9uT3B0aW9uOjpF
cnJvclBhZ2VFeHRlbnNpb25SZXR1cm46OkVycm9yUGFnZUV4dGVuc2lvblJldHVybik6CisgICAg
ICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKFdlYlBhZ2U6OnN1cHBvcnRzRXh0
ZW5zaW9uKToKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFp
bldpbmRvdzo6c2VsZWN0RWxlbWVudHMpOgorICAgICAgICAoV2ViUGFnZTo6ZXh0ZW5zaW9uKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbGxlZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aW50ZXJydXB0Rm9yUG9saWN5Q2hh
bmdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2Fubm90
U2hvd01JTUVUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwOS0w
OS0yOCAgQW5kcmUgUG9lbml0eiAgPGFuZHJlLnBvZW5pdHpAdHJvbGx0ZWNoLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBDb21waWxlIGZpeCB3
aXRoIG5hbWVzcGFjZWQgUXQuCisKKyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvcl9wLmg6CisK
KzIwMDktMDktMjcgIEpvZSBMaWdtYW4gIDxqb3NlcGgubGlnbWFuQG1pbmRzcHJpbmcuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWRk
aW5nIEFQSSBzZXRGb2N1cyBhbmQgaGFzRm9jdXMgdG8gUVdlYkVsZW1lbnQuIFRoaXMgQVBJIGlz
IG5lZWRlZCBmb3IKKyAgICAgICAgY2xpZW50cyB0aGF0IHdhbnQgdG8gY2hlY2svc2V0IHRoZSBm
b2N1cyBub2RlIG9mIHRoZSBkb2N1bWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5NjgyCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3Bw
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6Omhhc0ZvY3VzKToKKyAgICAgICAgKFFXZWJFbGVtZW50
OjpzZXRGb2N1cyk6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6CisgICAgICAgICogdGVz
dHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxl
bWVudDo6aGFzU2V0Rm9jdXMpOgorCisyMDA5LTA5LTI1ICBDc2FiYSBPc3p0cm9nb25hYyAgPG9z
emlAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgorCisgICAgICAgIFtRdF0gTWFrZSB0c3RfcXdlYmZyYW1lIHdvcmsgaWYgUXQgYnVpbHQgd2l0
aG91dCBTU0wgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjk3MzUKKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1l
LmNwcDogTWlzc2luZyAjaWZuZGVmIGJsb2NrcyBhZGRlZC4KKworMjAwOS0wOS0yNCAgSm9jZWx5
biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gVXBkYXRlIFFXZWJFbGVtZW50
IEFQSSB0byByZW1vdmUgc2NyaXB0IHJlbGF0ZWQgbWV0aG9kcy4KKyAgICAgICAgUVdlYkVsZW1l
bnQ6OmV2YWx1YXRlU2NyaXB0IGlzIHRoZSBvbmx5IG9uZSBrZXB0LCB0aGVzZSBhcmUKKyAgICAg
ICAgcmVtb3ZlZCB0byBwb3N0cG9uZSBtb3N0IG9mIHRoZSBRdFdlYktpdDwtPkphdmFTY3JpcHQg
QVBJIGRlc2lnbgorICAgICAgICBhZnRlciA0LjYuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTcwOAorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgTWV0aG9kcyByZW1v
dmVkOgorICAgICAgICAtIFFXZWJFbGVtZW50OjpjYWxsRnVuY3Rpb24KKyAgICAgICAgLSBRV2Vi
RWxlbWVudDo6ZnVuY3Rpb25zCisgICAgICAgIC0gUVdlYkVsZW1lbnQ6OnNjcmlwdGFibGVQcm9w
ZXJ0eQorICAgICAgICAtIFFXZWJFbGVtZW50OjpzZXRTY3JpcHRhYmxlUHJvcGVydHkKKyAgICAg
ICAgLSBRV2ViRWxlbWVudDo6c2NyaXB0YWJsZVByb3BlcnRpZXMKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50
OjpldmFsdWF0ZVNjcmlwdCk6CisKKzIwMDktMDktMjUgIEpvY2VseW4gVHVyY290dGUgIDxqb2Nl
bHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVz
bWFubi4KKworICAgICAgICBbUXRdIFJlbmFtZSBRV2ViRWxlbWVudDo6ZXZhbHVhdGVTY3JpcHQK
KyAgICAgICAgdG8gUVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNjcmlwdC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5NzA5CisKKyAgICAgICAgKiBB
cGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmV2YWx1YXRlSmF2YVNj
cmlwdCk6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6CisgICAgICAgICogdGVzdHMvcXdl
YmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6
ZXZhbHVhdGVKYXZhU2NyaXB0KToKKworMjAwOS0wOS0yNSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpv
Y2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgorCisgICAgICAgIFtRdF0gVXBkYXRlIHRoZSBzdHlwZVByb3BlcnR5IEFQSSBvZiBR
V2ViRWxlbWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI5NzExCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OnN0eWxlUHJvcGVydHkpOgorICAgICAgICAtIE1lcmdlIHRoZSBzdHlwZVByb3Bl
cnR5IGFuZCB0aGUgY29tcHV0ZWRTdHlsZVByb3BlcnR5IG1ldGhvZHMKKyAgICAgICAgLSBSZW1v
dmUgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBzdHlsZSByZXNvbHZpbmcgZW51bQorICAgICAg
ICAtIFJlbmFtZSBSZXNvbHZlUnVsZSB0byBTdHlsZVJlc29sdmVTdHJhdGVneQorICAgICAgICAo
UVdlYkVsZW1lbnQ6OnNldFN0eWxlUHJvcGVydHkpOgorICAgICAgICAtIFJlbW92ZSB0aGUgcHJp
b3JpdHkgYXJndW1lbnQgc2luY2UgaXQgaXMgcG9zc2libGUgdG8gY29udHJvbCB0aGUKKyAgICAg
ICAgICBiZWhhdmlvdXIgYnkgYWRkaW5nICFpbXBvcnRhbnQgb3IgcmVtb3ZpbmcgaW4gdGhlIHZh
bHVlLgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJl
bGVtZW50L3RzdF9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnN0
eWxlKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAg
ICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDA5LTA5LTI0ICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxpY2UgTGl1LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgUGFzcyAwIGZvciBuZXcgUGFn
ZSBjb25zdHJ1Y3RvciBhcmd1bWVudC4KKworMjAwOS0wOS0yNCAgTWFydGluIFNtaXRoICA8bXNt
aXRoQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgcWRvYzogQWRkZWQgXGJyaWVmIHRleHRzIHRvIGFsbCB0aGUgc2luY2UgNC42
IGZ1bmN0aW9ucy4KKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisKKzIwMDktMDkt
MjMgIEotUCBOdXJtaSAgPGpwbnVybWlAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFByZXZlbnQgUVdlYlBhZ2U6OnNldFZpZXcoKSBm
cm9tIGNoYW5naW5nIHRoZSB2aWV3cG9ydCBzaXplIG9uIHRoZSBmbHkKKyAgICAgICAgaW4gY2Fz
ZSB0aGUgdmlldyBkb2Vzbid0IGFjdHVhbGx5IGNoYW5nZS4gUVdlYlBhZ2U6OnNldFZpZXcoKSBp
cworICAgICAgICBjYWxsZWQgdXBvbiBldmVyeSBRV2ViR3JhcGhpY3NJdGVtOjpob3Zlck1vdmVF
dmVudCgpLCB3aGljaCBmb3JjZWQKKyAgICAgICAgdGhlIHZpZXdwb3J0IHNpemUgdG8gYmUgZXF1
YWwgdG8gdGhlIHNpemUgb2YgdGhlIHdob2xlIGdyYXBoaWNzIHZpZXcuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5Njc2CisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXcpOgorCisyMDA5LTA5
LTIzICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQ3Jhc2ggZml4
IGluIFFXZWJIaXN0b3J5IGJhY2sgYW5kIGZvcndhcmQgbWV0aG9kcy4KKyAgICAgICAgCisgICAg
ICAgIFFXZWJIaXN0b3J5OjpiYWNrKCkgYW5kIFFXZWJIaXN0b3J5Ojpmb3J3YXJkKCkgd2VyZSBj
cmFzaGluZyBvbgorICAgICAgICBBU1NFUlQgaW4gV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0LiBU
aGUgbWV0aG9kcyBzaG91bGQgY2hlY2sKKyAgICAgICAgY2FuR29CYWNrKCkgYW5kIGNhbkdvRm9y
d2FyZCgpIGF0IHRoZSBiZWdpbm5pbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5Njc1CisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3Bw
OgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmJhY2spOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmZv
cndhcmQpOgorCisyMDA5LTA5LTIzICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lA
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAg
ICAgIFtRdF0gQnVnIGZpeC4gUVdlYkhpc3Rvcnkgc2hvdWxkIGNhbGwgUVdlYlBhZ2U6OnVwZGF0
ZU5hdmlnYXRpb25BY3Rpb25zCisgICAgICAgIAorICAgICAgICBJbiBRV2ViSGlzdG9yeSdzIG1l
dGhvZHMgdGhhdCBjaGFuZ2UgaXRlbSBjb3VudCBvciBjdXJyZW50IGl0ZW0gY2FsbAorICAgICAg
ICB0byBRV2ViUGFnZTo6dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMgc2hvdWxkIGJlIGV4ZWN1dGVk
LgorICAgICAgICBRV2ViSGlzdG9yeTo6Y2xlYXIoKSBhbmQgUVdlYkhpc3Rvcnk6OnJlc3RvclN0
YXRlKCkgd2VyZSBjaGFuZ2VkLgorICAgICAgICBOZXcgaGVscGVyIG1ldGhvZCwgUVdlYlBhZ2VQ
cml2YXRlIGFjY2Vzb3IsIHdlcmUgY3JlYXRlZCBpbgorICAgICAgICBRV2ViSGlzdG9yeVByaXZh
dGUgY2xhc3MuCisgICAgICAgIFR3byBhdXRvdGVzdCB3ZXJlIGRldmVsb3BlZC4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkyNDYKKworICAgICAg
ICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgIChRV2ViSGlzdG9yeTo6Y2xlYXIpOgor
ICAgICAgICAoUVdlYkhpc3Rvcnk6OnJlc3RvcmVTdGF0ZSk6CisgICAgICAgIChRV2ViSGlzdG9y
eVByaXZhdGU6OnBhZ2UpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeV9wLmg6CisgICAgICAg
ICogdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKHRzdF9R
V2ViSGlzdG9yeTo6c2F2ZUFuZFJlc3RvcmVfMSk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6
OmNsZWFyKToKKworMjAwOS0wOS0yMyAgTm9yYmVydCBMZXNlciAgPG5vcmJlcnQubGVzZXJAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAg
ICAgTmVlZCB0byBndWFyZCBRWDExSW5mbyBpbmNsdWRlIHdpdGggUV9XU19YMTEuCisgICAgICAg
IFRoYXQgY2xhc3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgKGluIFFUIDQuNSBmb3IgU3ltYmlhbiwg
Zm9yIGluc3RhbmNlKS4KKyAgICAgICAgQ29tcGxldGVzIGZpeGVzIGluIHI0ODYyNyBhbmQgcjQ4
NjA0LgorCisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3BwOgorICAgICAgICAqIEFw
aS9xd2Vidmlldy5jcHA6CisKKzIwMDktMDktMjIgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHlu
LnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBbUXRdIEFkZCBkZWZhdWx0IHRpbWVvdXQgd2hpbGUgd2FpdGluZyBmb3Ig
c2lnbmFscyBpbiBRV2ViUGFnZSBhdXRvCisgICAgICAgIHRlc3RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2MzcKKworICAgICAgICAqIHRlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh3YWl0Rm9yU2lnbmFsKToKKwor
MjAwOS0wOS0yMiAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+
CisKKyAgICAgICAgUmVpdmV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRml4IHRo
ZSBRdC9NYWMgYnVpbGQgYWZ0ZXIgcjQ4NjA0IChJbXBsZW1lbnQgbmV3IFFXZWJQYWdlQ2xpZW50
IGNsYXNzKQorCisgICAgICAgIFRoZXJlJ3Mgbm8gUVdpZGdldDo6eDExSW5mbygpIG9uIE1hYywg
YW5kIHNldFBsYXRmb3JtUGx1Z2luV2lkZ2V0KCkKKyAgICAgICAgdGFrZXMgYSBRV2lkZ2V0Kiwg
bm90IGEgUVdlYlBhZ2VDbGllbnQqCisKKyAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNzaXRlbS5j
cHA6CisgICAgICAgIChRV2ViR3JhcGhpY3NJdGVtUHJpdmF0ZTo6c2NyZWVuTnVtYmVyKToKKyAg
ICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXdQcml2YXRlOjpzY3Jl
ZW5OdW1iZXIpOgorCisyMDA5LTA5LTIxICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtl
bm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICBGb3IgUXQsIHBsYXRmb3JtUGFnZUNsaWVudCgpIHdpbGwgbm93IHJldHVybiBh
IGNsYXNzIGRlcml2ZWQgZnJvbQorICAgICAgICB0aGUgUVdlYlBhZ2VDbGllbnQsIHNvIHRoZSBw
YXRjaCBhZGFwdHMgb3VyIFF0IGhvb2tzIHRvIGdvIHRob3VnaAorICAgICAgICB0aGlzIGNsYXNz
IGFuZCBub3QgZGVwZW5kIG9uIHRoZSBRV2ViVmlldy4KKworICAgICAgICAqIEFwaS9xd2ViZ3Jh
cGhpY3NpdGVtLmNwcDoKKyAgICAgICAgKFFXZWJHcmFwaGljc0l0ZW1Qcml2YXRlOjpzY3JvbGwp
OgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbVByaXZhdGU6OnVwZGF0ZSk6CisgICAgICAgIChR
V2ViR3JhcGhpY3NJdGVtUHJpdmF0ZTo6Y3Vyc29yKToKKyAgICAgICAgKFFXZWJHcmFwaGljc0l0
ZW1Qcml2YXRlOjp1cGRhdGVDdXJzb3IpOgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbVByaXZh
dGU6OnNjcmVlbk51bWJlcik6CisgICAgICAgIChRV2ViR3JhcGhpY3NJdGVtUHJpdmF0ZTo6d2lu
SWQpOgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbTo6ZXZlbnQpOgorICAgICAgICAoUVdlYkdy
YXBoaWNzSXRlbTo6c2V0UGFnZSk6CisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uaDoK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpR
V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICog
QXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsKToKKyAg
ICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlKToKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0
ZTo6Y3Vyc29yKToKKyAgICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlQ3Vyc29yKToKKyAg
ICAgICAgKFFXZWJWaWV3UHJpdmF0ZTo6c2NyZWVuTnVtYmVyKToKKyAgICAgICAgKFFXZWJWaWV3
UHJpdmF0ZTo6d2luSWQpOgorICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAo
UVdlYlZpZXc6OmV2ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgorCisyMDA5LTA5LTIxICBZYWVs
IEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjk2MDkKKyAgICAgICAgQnVpbGQgZml4IGZvciB3aW5kb3dzIHdoZW4gdXNpbmcg
UXQgNC41LjAuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2U6OnVzZXJBZ2VudEZvclVybCk6CisKKzIwMDktMDktMTkgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjkzNDUKKyAgICAgICAgVGhlIHRlc3RzIG9mIFFXZWJGcmFtZSBkaWQgbm90IHVzZSBRVFJZ
X1ZFUklGWSBmb3IKKyAgICAgICAgdGVzdHMgaW52b2x2aW5nIHRoZSBldmVudCBsb29wLgorCisg
ICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIHRl
c3RzL3V0aWwuaDogQWRkZWQuIENvcHkgb2YgdGVzdHMvc2hhcmVkL3V0aWwuaCBvZiBRdAorCisy
MDA5LTA5LTE5ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWRkIGFuIGF1dG90
ZXN0IHN0dWIgZm9yIFFXZWJHcmFwaGljc0l0ZW0uCisKKyAgICAgICAgSXQganVzdCBjYWxscyBh
bGwgdGhlIGZ1bmN0aW9ucyBhbmQgbWFrZXMgc3VyZSB0aGV5IGRvbid0IGNyYXNoLgorCisgICAg
ICAgICogdGVzdHMvcXdlYmdyYXBoaWNzaXRlbS9xd2ViZ3JhcGhpY3NpdGVtLnBybzogQWRkZWQu
CisgICAgICAgICogdGVzdHMvcXdlYmdyYXBoaWNzaXRlbS90c3RfcXdlYmdyYXBoaWNzaXRlbS5j
cHA6IEFkZGVkLgorICAgICAgICAodHN0X1FXZWJHcmFwaGljc0l0ZW06OnF3ZWJncmFwaGljc2l0
ZW0pOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoKKworMjAwOS0wOS0xOCAgTm9yYmVydCBM
ZXNlciAgPG5vcmJlcnQubGVzZXJAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgorCisgICAgICAgIENvcnJlY3RlZCB0aGUgU3ltYmlhbiBzcGVjaWZpYyBVSUQz
IHZhbHVlcyB0byBiZSBhc3NpZ25lZAorICAgICAgICBmcm9tIHRoZSAidW5wcm90ZWN0ZWQiIHBv
b2wgdGhhdCBwZXJtaXRzIHNlbGYtc2lnbmluZyBvZgorICAgICAgICB0aG9zZSB0ZXN0IGFuZCBk
ZW1vIGV4ZWN1dGFibGVzLiAoQWRkZWQgbmV3IFVJRDMgdmFsdWVzCisgICAgICAgIHdoZXJlIHRo
ZXkgd2VyZSBtaXNzaW5nIGZvciBuZXcgY29tcG9uZW50cy4pCisKKyAgICAgICAgKiBRR1ZMYXVu
Y2hlci9RR1ZMYXVuY2hlci5wcm86CisgICAgICAgICogUXRMYXVuY2hlci9RdExhdW5jaGVyLnBy
bzoKKyAgICAgICAgKiB0ZXN0cy9iZW5jaG1hcmtzL2xvYWRpbmcvdHN0X2xvYWRpbmcucHJvOgor
ICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvdHN0X3BhaW50aW5nLnBybzoKKyAg
ICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC9xd2ViZWxlbWVudC5wcm86CisgICAgICAgICogdGVz
dHMvcXdlYmZyYW1lL3F3ZWJmcmFtZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmhpc3Rvcnkv
cXdlYmhpc3RvcnkucHJvOgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3
ZWJoaXN0b3J5aW50ZXJmYWNlLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS9xd2VicGFn
ZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3F3ZWJwbHVnaW5kYXRh
YmFzZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvOgorCisyMDA5
LTA5LTE3ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBNYWtlIFBs
YXRmb3JtV2luZG93IHJldHVybiBzb21ldGhpbmcgZWxzZSB0aGFuIFBsYXRmb3JtV2lkZ2V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA4NQorCisg
ICAgICAgIFJlZmxlY3QgdGhlIHJlbmFtZSBvZiBwbGF0Zm9ybVdpbmRvdyBhbmQgaXQncyByZXR1
cm4gdHlwZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpwbGF0Zm9ybVBhZ2VDbGllbnQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMDktMDktMTgg
IEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBwZXJzaXN0
ZW5jZSBzdXBwb3J0IGZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gdGhlCisgICAgICAgIGlu
c3BlY3Rvci4KKworICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKiBR
dExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50UXQ6OnBvcHVsYXRlU2V0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnRRdDo6c3RvcmVTZXR0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnZhcmlhbnRUb1NldHRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6c2V0dGluZ1RvVmFyaWFudCk6CisKKzIwMDktMDktMTgg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgRml4ZWQgYSBidW5jaCBvZiBkb2N1
bWVudGF0aW9uIHdhcm5pbmdzLgorCisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3Bw
OgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0YWJhc2UuY3BwOgorICAgICAgICAqIEFwaS9x
d2VicGx1Z2luZmFjdG9yeS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5j
cHA6CisKKzIwMDktMDktMTggIFdhcndpY2sgQWxsaXNvbiAgPHdhcndpY2suYWxsaXNvbkBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAg
QWRkZWQgYSB0ZXN0IHRoYXQgY29uc29sZSBvdXRwdXQgd29ya3MuCisKKyAgICAgICAgKiB0ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoQ29uc29sZVBhZ2U6OkNvbnNv
bGVQYWdlKToKKyAgICAgICAgKENvbnNvbGVQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2Up
OgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjb25zb2xlT3V0cHV0KToKKworMjAwOS0wOS0xNyAg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgSW1wcm92ZSBkb2N1bWVu
dGF0aW9uIGZvciBQYWdlIENhY2hlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisKKzIwMDktMDktMTcgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtR
dF0gVXBkYXRlIFFXZWJTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRVcmwoKSBkb2NzIGFuZCB0
ZXN0CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MDgxCisKKyAgICAgICAgVGhlIGRvY3VtZW50YXRpb24gbm93IHNwZWNpZmllcyB0aGF0IHRoZSBV
UkwgaGFzIHRvIGJlIGEgbG9jYWwgZmlsZQorICAgICAgICBvciBhIGEgZGF0YS1VUkwgKHdpdGgg
dXRmLTggYW5kIGJhc2U2NC1lbmNvZGVkIGRhdGEpLCBhcyB0aGVzZSBhcmUgdGhlCisgICAgICAg
IG9ubHkgdHdvIHNjaGVtZXMgdGhhdCB0aGUgY3VycmVudCBjb2RlIHBhdGggYWNjZXB0cy4KKwor
ICAgICAgICBUaGUgYXV0by10ZXN0IGhhcyBiZWVuIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGlzIGxp
bWl0YXRpb24uCisKKyAgICAgICAgQXQgYSBsYXRlciBwb2ludCB3ZSBzaG91bGQgY29uY2lkZXIg
YWRkaW5nIEFQSSBmb3IgdGhlIG5ldyB3YXkgb2YKKyAgICAgICAgZG9pbmcgYm90aCB1c2VyIGRl
ZmluZWQgc3R5bGVzaGVldHMgYW5kIHNjcmlwdHMuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmNwcDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorCisy
MDA5LTA5LTE3ICBKYW5uZSBLb3NraW5lbiAgPGphbm5lLnAua29za2luZW5AZGlnaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFN5bWJpYW4g
YnVpbGQgZml4LgorCisgICAgICAgIE1vdmVkIHRoZSAjaWZkZWZzIGFyb3VuZCBfcV9jbGVhbnVw
TGVha01lc3NhZ2VzKCkgaW50byB0aGUgZnVuY3Rpb24KKyAgICAgICAgZGVmaW5pdGlvbi4KKwor
ICAgICAgICBRTWFrZSBpcyBub3QgYmVpbmcgYWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHJl
bGVhc2UgYW5kIGRlYnVnIGJ1aWxkcworICAgICAgICBpbiBTeW1iaWFuIGJ1aWxkLiBUaGlzIGlz
IGEgU3ltYmlhbiB0b29sY2hhaW4gaXNzdWUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpfcV9jbGVhbnVwTGVha01lc3NhZ2VzKToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCisy
MDA5LTA5LTE3ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgU21hbGwg
Y29zbWV0aWMgZG9jdW1lbnRhdGlvbiBmaXhsZXQgaW4gdGhlIFFXZWJJbnNwZWN0b3IuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5jcHA6CisKKzIwMDktMDktMTYgIEJlbmphbWluIEMg
TWV5ZXIgIDxiZW5qYW1pbi5tZXllckB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgRGV0ZWN0IGFuZCBhZGQgV2luZG93czcgcHJv
cGVybHkgdG8gdGhlIHVzZXIgYWdlbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisKKzIwMDktMDktMTYgIEFuZHJh
cyBCZWNzaSAgPGFuZHJld2JlY3NpQHlhaG9vLmNvLnVrPgorCisgICAgICAgIFJ1YmJlcnN0YW1w
ZWQgYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgW1F0XSBCdWlsZCBmaXggZm9y
IHByZXZpb3VzIGNoYW5nZXMuCisKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9tYWluLmNwcDoKKyAg
ICAgICAgKE1haW5WaWV3OjpmbGlwKToKKworMjAwOS0wOS0xNiAgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCBwb3Rl
bnRpYWwgUXQgPCA0LjYgYnVpbGQgZml4LgorCisgICAgICAgICogUUdWTGF1bmNoZXIvbWFpbi5j
cHA6CisgICAgICAgIChNYWluVmlldzo6ZmxpcCk6CisKKzIwMDktMDktMTYgIEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBhICJGbGlwIGVmZmVjdCIgdG8gb3Vy
IEdyYXBoaWNzVmlldyBiYXNlZCBsYXVuY2hlci4KKworICAgICAgICAqIFFHVkxhdW5jaGVyL21h
aW4uY3BwOgorICAgICAgICAoTWFpblZpZXc6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKE1haW5W
aWV3OjpmbGlwKToKKyAgICAgICAgKE1haW5XaW5kb3c6OmZsaXApOgorICAgICAgICAoTWFpbldp
bmRvdzo6YnVpbGRVSSk6CisKKzIwMDktMDktMTYgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdA
aW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIFtRdF0gVHlwbyBmaXguIFBhc3MgdGhlIHdpbmRvdyBvYmplY3QgdG8g
dGhlIEZvcm1hdAorICAgICAgICBtZW51LiBJbiB0aGlzIHdheSBRdCBjYW4gZnJlZSBpdHMgaW50
ZXJuYWwgZ3JhcGhpY2FsCisgICAgICAgIG9iamVjdHMgZHVyaW5nIGV4aXQuCisKKyAgICAgICAg
KiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6c2V0dXBVSSk6CisK
KzIwMDktMDktMTYgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFtR
dF0gQnVpbGQgYnJlYWsgZml4IG9uIGdjYyBBUk0uCisKKyAgICAgICAgKiBBcGkvcXdlYmdyYXBo
aWNzaXRlbS5jcHA6CisgICAgICAgIChRV2ViR3JhcGhpY3NJdGVtUHJpdmF0ZTo6X3FfZG9Mb2Fk
UHJvZ3Jlc3MpOgorCisyMDA5LTA5LTE2ICBXYXJ3aWNrIEFsbGlzb24gIDx3YXJ3aWNrLmFsbGlz
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIEZpeCBhIGNyYXNoIGluIFFXZWJGcmFtZTo6aGFzRm9jdXMoKSB3aXRoIGEgc2ltcGxl
IG51bGwgcG9pbnRlciBjaGVjaworICAgICAgICB3aGVuIHRoZSBmb2N1c2VkIGZyYW1lIGlzIG51
bGwuIFdlIGRvIHRoZSBzYW1lIGNoZWNrIGluIG90aGVyIHBsYWNlcworICAgICAgICB3aGVyZSB3
ZSBjYWxsIGtpdCgpLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChR
V2ViRnJhbWU6Omhhc0ZvY3VzKToKKworMjAwOS0wOS0xNiAgSnVyZSBSZXBpbmMgIDxqbHBAaG9s
b2RlY2sxLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBGaXhlZCBhIHR5cG8gZm91bmQgZHVyaW5nIHRyYW5zbGF0aW9uLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjppbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisK
KzIwMDktMDktMTQgIEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBRV2ViR3JhcGhp
Y3NJdGVtIHNob3VsZCBjaGVjayBmb3IgbnVsbCBRV2ViUGFnZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTg1CisKKyAgICAgICAgRG9uJ3QgY3Jh
c2ggaW4gUVdlYkdyYXBoaWNzSXRlbSB3aGVuIHRoZSBwYWdlIGlzIHN0aWxsIG51bGwsIGJ5Cisg
ICAgICAgIGVpdGhlciBjaGVja2luZyBpZiBpdCdzIHRoZSBjYXNlIG9yIGNvbnN0cnVjdGluZyB0
aGUgZGVmYXVsdCBvbmUuCisKKyAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNzaXRlbS5jcHA6Cisg
ICAgICAgIChRV2ViR3JhcGhpY3NJdGVtOjppY29uKToKKyAgICAgICAgKFFXZWJHcmFwaGljc0l0
ZW06OnNldFpvb21GYWN0b3IpOgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbTo6em9vbUZhY3Rv
cik6CisgICAgICAgIChRV2ViR3JhcGhpY3NJdGVtOjpzZXRHZW9tZXRyeSk6CisgICAgICAgIChR
V2ViR3JhcGhpY3NJdGVtOjpsb2FkKToKKyAgICAgICAgKFFXZWJHcmFwaGljc0l0ZW06OnNldEh0
bWwpOgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbTo6dG9IdG1sKToKKyAgICAgICAgKFFXZWJH
cmFwaGljc0l0ZW06OnNldENvbnRlbnQpOgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbTo6aGlz
dG9yeSk6CisgICAgICAgIChRV2ViR3JhcGhpY3NJdGVtOjpzZXR0aW5ncyk6CisKKzIwMDktMDkt
MTEgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBEb2M6IE5vdGUgdGhhdCBOZXRzY2Fw
ZSBwbHVnaW5zIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBkZXNrdG9wIHBsYXRmb3Jtcy4KKworICAg
ICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKworMjAwOS0wOS0xMSAgTWFydGluIFNtaXRoICA8
bXNtaXRoQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgQWRqdXN0IHRoZSBuYW1lIG9mIHRoZSBjb250ZW50c3BhZ2UgZm9yIHRo
ZSBkb2N1bWVudGF0aW9uCisgICAgICAgIHRvIHRoZSBuZXcgbmFtZSB1c2VkIGluIFF0IDQuNi4K
KworICAgICAgICAqIGRvY3MvcXR3ZWJraXQucWRvYzoKKworMjAwOS0wOS0xMSAgQXJpeWEgSGlk
YXlhdCAgPGFyaXlhLmhpZGF5YXRAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIENoYW5nZWQgVVJMcyBmcm9tIHF0c29mdHdhcmUuY29t
IHRvIHF0Lm5va2lhLmNvbSwgYXMgcGFydCBvZiBhIGdlbmVyYWwKKyAgICAgICAgcmVuYW1pbmcu
CisKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwOgorICAgICAgICAqIGRvY3Mv
d2Via2l0c25pcHBldHMvc2ltcGxlL21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwOgorICAgICAgICAobWFpbik6
CisKKzIwMDktMDktMTEgIFZvbGtlciBIaWxzaGVpbWVyICA8dm9sa2VyLmhpbHNoZWltZXJAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
IFJlc3RydWN0dXJlIHRoZSBkb2N1bWVudGF0aW9uLCBib3RoIG9uIGEgZmlsZSBhbmQgb24gYSBj
b250ZW50IGxldmVsLgorCisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAg
ICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeWlu
dGVyZmFjZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkv
cXdlYnBsdWdpbmZhY3RvcnkuY3BwOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4u
Y3BwOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAqIEFwaS9xd2Vi
dmlldy5jcHA6CisgICAgICAgICogZG9jcy9xdHdlYmtpdC5xZG9jOgorCisyMDA5LTA5LTExICBZ
b25nanVuIFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxMzYKKyAgICAgICAgW1F0XSBlbWl0IG1pY3JvRm9j
dXNDaGFuZ2VkKCkgc2lnbmFsIHdoZW4gbm8gUVdpZGdldC1iYXNlZCB2aWV3IGlzIHByZXNlbnQu
CisKKyAgICAgICAgZW1pdCBtaWNyb0ZvY3VzQ2hhbmdlKCkgc2lnbmFsIHJlZ2FyZGxlc3Mgb2Yg
dmlldy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKwor
MjAwOS0wOS0xMSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODgwNgorCisgICAgICAgIFtRdF0g
TWFrZSB0aGUgV2ViSW5zcGVjdG9yIGF2YWlsYWJsZSBhcyBhIFFXaWRnZXQuCisKKyAgICAgICAg
KiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAg
ICAgKFFXZWJFbGVtZW50OjplbmNsb3NpbmdFbGVtZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmVs
ZW1lbnQuaDoKKyAgICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5jcHA6IEFkZGVkLgorICAgICAg
ICAqIEFwaS9xd2ViaW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVj
dG9yX3AuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6c2V0SW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Z2V0T3JDcmVhdGVJ
bnNwZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgKFFXZWJQYWdlOjp+UVdlYlBhZ2UpOgorICAgICAgICAoUVdlYlBhZ2U6OnRy
aWdnZXJBY3Rpb24pOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9x
d2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICog
UXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6Okluc3BlY3RvckNsaWVudFdlYlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6Y3JlYXRlV2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzaG93V2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBldHMv
cXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcDogQWRkZWQuCisKKzIwMDktMDktMTAg
IExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtRdF0gRml4IGNvbXBhcmlzb24gYmV0
d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIgd2FybmluZ3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYyCisKKyAgICAgICAgTm8gZnVu
Y3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAg
ICAoUVdlYkVsZW1lbnQ6OmZpbmRBbGwpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6
CisgICAgICAgIChRV2ViSGlzdG9yeTo6aXRlbXMpOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmJh
Y2tJdGVtcyk6CisgICAgICAgIChRV2ViSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKToKKyAgICAgICAg
KFFXZWJIaXN0b3J5OjpzYXZlU3RhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0YWJh
c2UuY3BwOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpzZXRTZWFyY2hQYXRocyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDA5LTA5LTEwICBTaW1vbiBIYXVzbWFu
biAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQXJp
eWEgSGlkYXlhdC4KKworICAgICAgICBGaXggYSBidW5jaCBvZiBxZG9jIHdhcm5pbmdzOiBJbnZh
bGlkIHJlZmVyZW5jZXMsIG5vbi1zdGFuZGFyZAorICAgICAgICB3b3JkaW5nLCBldGMuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAqIEFwaS9xd2ViZ3JhcGhpY3Np
dGVtLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKworMjAwOS0w
OS0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgRml4IGNvbnRleHQgbWVudSBldmVu
dCBkZWxpdmVyeSB3aXRoIFFXZWJHcmFwaGljc0l0ZW0uCisKKyAgICAgICAgUmUtaW1wbGVtZW50
IHRoZSBjb3JyZWN0IGNvbnRleHQgbWVudSB2aXJ0dWFsIGZ1bmN0aW9uIHVzaW5nCisgICAgICAg
IGEgUUdyYXBoaWNzU2NlbmVDb250ZXh0TWVudUV2ZW50IGFuZCBmb3J3YXJkICYgaGFuZGxlIGl0
IGluCisgICAgICAgIFFXZWJQYWdlLgorCisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0u
Y3BwOgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbTo6Y29udGV4dE1lbnVFdmVudCk6CisgICAg
ICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwOS0w
OS0xMCAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZC4KKworICAgICAgICBCdWlsZCBmaXggZm9yIFF0V2ViS2l0IGZvciBNYWMg
YWZ0ZXIgcjQ4MjE5LgorCisgICAgICAgIHFldmVudCBhbmQgcXN0eWxlb3B0aW9uIGFyZSBRdEd1
aSBpbnRlcmZhY2VzLgorCisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3BwOgorICAg
ICAgICAqIEFwaS9xd2ViZ3JhcGhpY3NpdGVtLmg6CisKKzIwMDktMDktMDkgIFNpbW9uIEhhdXNt
YW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJu
ZSBWZXN0YsO4LgorCisgICAgICAgIENhbGwgdGhlIHJpZ2h0IGJhc2UgY2xhc3MgZnVuY3Rpb24g
UUdyYXBoaWNzV2lkZ2V0OjpldmVudCgpIGluc3RlYWQKKyAgICAgICAgb2Ygc2tpcHBpbmcgaXQg
YW5kIHVzaW5nIFFPYmplY3Q6OmV2ZW50KCkgaW5zdGVhZC4KKworICAgICAgICAqIEFwaS9xd2Vi
Z3JhcGhpY3NpdGVtLmNwcDoKKyAgICAgICAgKFFXZWJHcmFwaGljc0l0ZW06OmV2ZW50KToKKwor
MjAwOS0wOS0wOSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgVW5yZXZpZXdlZC4KKworICAgICAgICBGaXggY29tbWVudCBhdCBUb3Ig
QXJuZSBWZXN0YsO4J3MgcmVxdWVzdC4KKworICAgICAgICAqIEFwaS9xd2ViZ3JhcGhpY3NpdGVt
LmNwcDoKKyAgICAgICAgKFFXZWJHcmFwaGljc0l0ZW06OnNjZW5lRXZlbnQpOgorICAgICAgICAo
UVdlYkdyYXBoaWNzSXRlbTo6ZXZlbnQpOgorCisyMDA5LTA5LTA5ICBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBU
b3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEltcGxlbWVudCBzb21lIHZpcnR1YWwgZXZlbnQg
bWV0aG9kcyBzbyB0aGF0IHdlIGNhbiBmaXgKKyAgICAgICAgZXZlbnQtcmVsYXRlZCBidWdzIGlu
IFF0IHBhdGNoIHJlbGVhc2VzLgorCisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3Bw
OgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbTo6c2NlbmVFdmVudCk6CisgICAgICAgIChRV2Vi
R3JhcGhpY3NJdGVtOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uaDoK
KworMjAwOS0wOS0wOSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+LCBBbnRvbmlvIEdvbWVzICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBhIG5ldyBR
R3JhcGhpY3NXaWRnZXQgYmFzZWQgdmVyc2lvbiBvZiB0aGUgIlFXZWJWaWV3IgorICAgICAgICB1
bmRlciB0aGUgbmFtZSAiUVdlYkdyYXBoaWNzSXRlbSIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODYyCisKKyAgICAgICAgSW5jbHVkZXMgYW4g
YWx0ZXJuYXRpdmUgUXQgbGF1bmNoZXIgdXNpbmcgdGhlIFFHcmFwaGljc1ZpZXcuCisKKyAgICAg
ICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNzaXRlbS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBRR1ZMYXVuY2hlci9RR1ZMYXVuY2hlci5w
cm86IENvcGllZCBmcm9tIFdlYktpdC9xdC9RdExhdW5jaGVyL1F0TGF1bmNoZXIucHJvLgorICAg
ICAgICAqIFFHVkxhdW5jaGVyL21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6cmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKToK
KworMjAwOS0wOS0wOCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCisKKyAgICAgICAgUG90ZW50
aWFsIGJ1aWxkIGZpeCBmb3IgUXQgNC41CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgorCisyMDA5LTA5LTA4
ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDA3CisgICAgICAgIEFkZCBhIHRlc3QgZm9yIHRo
ZSBzaWduYWwgUVdlYkZyYW1lOjpqYXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpCisKKyAg
ICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMDktMDgg
IExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gRml4IHVudXNlZCB2YXJp
YWJsZSB3YXJuaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjkwMTgKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpjcmVhdGVGcmFtZSk6CisKKzIwMDktMDktMDggIExhc3psbyBHb21ib3MgIDxsYXN6bG8u
MS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQu
CisKKyAgICAgICAgW1F0XSBVc2UgdGhlIGRlY2xhcmF0aW9uIG9yZGVyIGluIGluaXRpYWxpemVy
IGxpc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
OTAxNworCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisKKzIwMDktMDktMDggIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBoYW5k
bGluZyBRR3JhcGhpY3NTY2VuZSBldmVudHMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6Om1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1v
dXNlVHJpcGxlQ2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZUNs
aXBib2FyZCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUmVsZWFzZUV2ZW50KToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6d2hlZWxFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmRyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJh
Z0xlYXZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnTW92ZUV2ZW50KToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJvcEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdl
OjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwOS0wOS0wOCAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBNYWtlIGN1cnNvciBz
ZXQgY2xlYW5lciBpbiBRdFdlYktpdCBBcGk6IGVsaW1pbmF0ZSBTZXRDdXJzb3JFdmVudCBoYWNr
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjUK
KworICAgICAgICBDbGVhbiB1cCB0aGUgdW5zZXJDdXJzb3IgaGFjayB0byB1c2UgdGhlIFFDdXJz
b3Igc2V0CisgICAgICAgIGFzIGEgcHJvcGVydHkgb2YgdGhlIFFXaWRnZXQgYnkgV2ViQ29yZTo6
V2lkZ2V0UXQuCisKKyAgICAgICAgUmVtb3ZlIGFsbCBjb2RlIHRoYXQgYXJlIG5vIGxvbmdlciBu
ZWNlc3NhcnkgZm9yIGdldHRpbmcKKyAgICAgICAgY3Vyc29yIGNoYW5nZSBldmVudHMuCisKKyAg
ICAgICAgUGF0Y2ggYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gPGtlbm5ldGhAd2Via2l0
Lm9yZz4gYW5kCisgICAgICAgICAgICAgICAgIEFudG9uaW8gR29tZXMgPGFudG9uaW8uZ29tZXNA
b3BlbmJvc3NhLm9yZz4gb24gMjAwOS0wOS0wNworCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5j
cHA6CisgICAgICAgIChRV2ViVmlld1ByaXZhdGU6OlFXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAg
IChRV2ViVmlldzo6ZXZlbnQpOgorCisyMDA5LTA5LTA4ICBMYXN6bG8gR29tYm9zICA8bGFzemxv
LjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBbUXRdIFF0V2ViS2l0IHNpbmdsZSBBUEkgdG8gZW5hYmxlIHBlcnNpc3Rl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY4
MgorCisgICAgICAgIERpc2FibGUgTG9jYWxTdG9yYWdlLCBBcHBsaWNhdGlvbkNhY2hlLCBIVE1M
NSBvZmZsaW5lIHN0b3JhZ2UgYnkKKyAgICAgICAgZGVmYXVsdC4KKworICAgICAgICBJZiBwZXJz
aXN0ZW5jeSBpcyBlbmFibGVkIHRoZSBkZWZhdWx0IGRpcmVjdG9yeSBmb3IgTG9jYWxTdG9yYWdl
IGFuZAorICAgICAgICBBcHBsaWNhdGlvbkNhY2hlIGlzIG5vdyBiYXNlZCBvbiBRRGVza3RvcFNl
cnZpY2VzOjpEYXRhTG9jYXRpb24gYW5kIG5vdAorICAgICAgICBRRGVza3RvcFNlcnZpY2VzOjpD
YWNoZUxvY2F0aW9uIChhcyBpdCBpcyBleHBlY3RlZCB0byBrZWVwIHRoaXMgZGF0YQorICAgICAg
ICBhcm91bmQgYWZ0ZXIgYSByZWJvb3QpLgorCisgICAgICAgIElmIHBlcnNpc3RlbmN5IGlzIGVu
YWJsZWQgaW5pdGlhbGl6ZSBIVE1MNSBvZmZsaW5lIHN0b3JhZ2UgYXMgd2VsbCAtIHRoaXMKKyAg
ICAgICAgZml4ZWQgb2ZmbGluZSBTdG9yYWdlIGZvciBRdExhdW5jaGVyLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2
YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6ZW5hYmxlUGVyc2lz
dGVudFN0b3JhZ2UpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDogQWRkIGEgbmV3IEFQ
SSBjYWxsZWQgZW5hYmxlUGVyc2lzdGVudFN0b3JhZ2UKKyAgICAgICAgKiBRdExhdW5jaGVyL21h
aW4uY3BwOiBVc2UgdGhlIG5ldyBlbmFibGVQZXJzaXN0ZW50U3RvcmFnZSBBUEkKKyAgICAgICAg
KG1haW4pOgorCisyMDA5LTA5LTA3ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFNwZWVk
IHVwIHRoZSBRV2ViUGx1Z2luSW5mbzo6c3VwcG9ydHNNaW1lVHlwZSgpIGZ1bmN0aW9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKKworICAg
ICAgICBJbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggdGhlIE1JTUUgdHlwZXMgbGlzdCBjb25zdHJ1
Y3RlZCB3aXRoCisgICAgICAgIG1pbWVUeXBlcygpIGZ1bmN0aW9uLCBsb29rIHVwIHRoZSBpbnRl
cm5hbCBtaW1lVG9EZXNjcmlwdGlvbnMgbWFwLgorCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5k
YXRhYmFzZS5jcHA6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6c3VwcG9ydHNNaW1lVHlwZSk6
CisKKzIwMDktMDktMDcgIEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgU3BlZWQgdXAgdGhl
IFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMoKSBmdW5jdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisKKyAgICAgICAgSW5zdGVhZCBv
ZiBjb25zdHJ1Y3RpbmcgYSBsaXN0IG9mIE1JTUUgdHlwZXMgZXZlcnkgdGltZSBpdCBpcyBjYWxs
ZWQsCisgICAgICAgIGRvIHRoaXMgb25seSBvbmNlLgorCisgICAgICAgICogQXBpL3F3ZWJwbHVn
aW5kYXRhYmFzZS5jcHA6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6bWltZVR5cGVzKToKKyAg
ICAgICAgKFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj0pOgorICAgICAgICAqIEFwaS9xd2VicGx1
Z2luZGF0YWJhc2UuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3
ZWJwbHVnaW5kYXRhYmFzZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpv
cGVyYXRvcmFzc2lnbl9kYXRhKToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Om9w
ZXJhdG9yYXNzaWduKToKKworMjAwOS0wOS0wNyAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdt
YWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBSZW1vdmUgdGhlIHByaXZhdGUgY2xhc3NlcyBmcm9tIFFXZWJQbHVnaW5EYXRhYmFzZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NjUxCisKKyAg
ICAgICAgSW5zdGVhZCwgaG9sZCB0aGUgUGx1Z2luRGF0YWJhc2UgYW5kIFBsdWdpblBhY2thZ2Ug
b2JqZWN0cyBhcyBjbGFzcworICAgICAgICBtZW1iZXJzIGFuZCB0YWtlIGNhcmUgb2YgcmVmY291
bnRpbmcgb24gb3VyIG93biBpbnN0ZWFkIG9mIHVzaW5nIFJlZlB0ci4KKworICAgICAgICBUaGlz
IHdheSB3ZSBub3Qgb25seSBtYWRlIHRoZSBjb2RlIGNsZWFuZXIgYnV0IGFsc28gZ290IHJpZCBv
ZgorICAgICAgICByZWR1bmRhbnQgYWxsb2NhdGlvbnMgd2hlbiBjb25zdHJ1Y3RpbmcgbnVsbCBR
V2ViUGx1Z2luSW5mbyBvYmplY3RzLgorCisgICAgICAgIFRoZSBwcml2YXRlIGNsYXNzZXMgaGF2
ZSBiZWVuIGZvcndhcmQtZGVjbGFyZWQgYW5kIHRoZSBkLXBvaW50ZXJzIGxlZnQKKyAgICAgICAg
dG8gYmUgb24gdGhlIHNhZmUgc2lkZS4KKworICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0YWJh
c2UuY3BwOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OlFXZWJQbHVnaW5JbmZvKToKKyAgICAg
ICAgKFFXZWJQbHVnaW5JbmZvOjp+UVdlYlBsdWdpbkluZm8pOgorICAgICAgICAoUVdlYlBsdWdp
bkluZm86Om5hbWUpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMpOgorICAgICAgICAoUVdlYlBsdWdpbklu
Zm86OnBhdGgpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OmlzTnVsbCk6CisgICAgICAgIChR
V2ViUGx1Z2luSW5mbzo6c2V0RW5hYmxlZCk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6aXNF
bmFibGVkKToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjpv
cGVyYXRvcj0pOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpRV2ViUGx1Z2luRGF0YWJh
c2UpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjp+UVdlYlBsdWdpbkRhdGFiYXNlKToK
KyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2lucyk6CisgICAgICAgIChRV2ViUGx1
Z2luRGF0YWJhc2U6OnNlYXJjaFBhdGhzKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6
c2V0U2VhcmNoUGF0aHMpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjphZGRTZWFyY2hQ
YXRoKToKKyAgICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cmVmcmVzaCk6CisgICAgICAgIChR
V2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKToKKyAgICAgICAgKFFXZWJQbHVn
aW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAqIEFw
aS9xd2VicGx1Z2luZGF0YWJhc2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNl
X3AuaDogUmVtb3ZlZC4KKworMjAwOS0wOS0wNSAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdt
YWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBb
UXRdIHI0NzQyNCBicm9rZSBiaW5hcnkgY29tcGF0aWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5OTYKKworICAgICAgICBBcHBlbmQgdGhl
IG5ldyBEbnNQcmVmZXRjaEVuYWJsZWQgYXR0cmlidXRlIGF0IHRoZSBlbmQgb2YgdGhlIGVudW0u
CisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMDktMDktMDQgIE1hcmsgTWVu
dG92YWkgIDxtYXJrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5
YXR0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODYxNAorCisgICAgICAgIEFjY291bnQgZm9yIHNjcm9sbGJhciBzdGF0ZSBjaGFuZ2VzIHRoYXQg
b2NjdXIgZHVyaW5nIGxheW91dC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAg
ICAgICAoUVdlYkZyYW1lOjpzZXRTY3JvbGxCYXJQb2xpY3kpOgorCisgICAgICAgIEVsaW1pbmF0
ZSBkdXBsaWNhdGVkIChhbmQgaW5jb3JyZWN0KSBzY3JvbGxiYXIgbW9kZSB0cmFja2luZyBiZXR3
ZWVuCisgICAgICAgIEZyYW1lVmlldyBhbmQgU2Nyb2xsVmlldy4KKworMjAwOS0wOS0wNCAgTGFz
emxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgW1F0XSBGaXggdHN0X1FXZWJQYWdlOjpkYXRh
YmFzZSBhdXRvdGVzdCBmYWlsdXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yODk2MQorCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSB0ZXN0IGNh
c2UgZW5hYmxlcyB0aGUgZmVhdHVyZSBiZWZvcmUgCisgICAgICAgIHRoZSBmZWF0dXJlIGdldHMg
dGVzdGVkCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAodHN0X1FXZWJQYWdlOjpkYXRhYmFzZSk6CisKKzIwMDktMDktMDQgIEJlbmphbWluIEMg
TWV5ZXIgIDxiZW5qYW1pbi5tZXllckB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCisgICAgICAgIAorICAgICAgICBBbnkgUXRXZWJLaXQgYXBwbGlj
YXRpb24gY3Jhc2hlcyBvbiBleGl0IGlmIHRoZSBpbnNwZWN0b3IgaXMKKyAgICAgICAgdXNlZCBk
dXJpbmcgdGhlIHNlc3Npb24gcmF0aGVyIHRoZW4gZXhpdGluZy4KKyAgICAgICAgCisgICAgICAg
IElmIGEgUVdlYlZpZXcgaGFzIGEgUVdlYlBhZ2UgdGhhdCBpcyBkZXN0cm95ZWQgdGhlIFFXZWJW
aWV3CisgICAgICAgIGRvZXMgbm90IHVwZGF0ZSBpdHMgcG9pbnRlciBhbmQgd2lsbCBjcmFzaCB0
aGUgbmV4dCB0aW1lCisgICAgICAgIGl0IGFjY2VzcyB0aGUgcGFnZSBwb2ludGVycyAoc3VjaCBh
cyBpbiBpdHMgZGVzdHJ1Y3RvcikuCisgICAgICAgIAorICAgICAgICBJbnNwZWN0b3JDbGllbnRW
aWV3IHNob3VsZCBub3QgY2FsbCBkZWxldGVMYXRlciB3aGVuIHRoZSBwYWdlCisgICAgICAgIGlz
IGRlc3Ryb3llZCBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYSBwYXJlbnQgYW5kIGlzIGEgdG9w
CisgICAgICAgIGxldmVsIHdpZGdldC4gIGNsb3NlKCkgbmVlZHMgdG8gYmUgY2FsbGVkIHNvIHRo
YXQgUUFwcGxpY2F0aW9uCisgICAgICAgIGNhbiBleGl0IHRoZSBhcHBsaWNhdGlvbiBpZiBxdWl0
T25MYXN0V2luZG93Q2xvc2VkIGlzIHNldAorICAgICAgICBhbmQgYSBJbnNwZWN0b3JDbGllbnRW
aWV3IGlzIHRoZSBsYXN0IHdpbmRvdywgb3RoZXJ3aXNlCisgICAgICAgIHRoZSBhcHBsaWNhdGlv
biB3aWxsIG5ldmVyIGV4aXQuCisgICAgICAgIAorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6
CisgICAgICAgIChRV2ViVmlld1ByaXZhdGU6Ol9xX3BhZ2VEZXN0cm95ZWQpOgorICAgICAgICAo
UVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFZpZXc6Okluc3BlY3RvckNsaWVudFZpZXcpOgorCisyMDA5LTA5LTAz
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
ZXJpY0B3ZWJraXQub3JnLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDY5NgorCisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb25zIG9mIG1peGVk
IGNvbnRlbnQgbWV0aG9kcyBvZiBGcmFtZUxvYWRlckNsaWVudC4gCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDktMDkt
MDMgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFtRdF0gQWRkIGEgc2V0dGluZyB0
byB0dXJuIFNlc3Npb25TdG9yYWdlIG9uL29mZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4MzYKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoK
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodGVz
dEZsYWcpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp0ZXN0T3B0aW9uYWxKU09iamVjdHMpOgor
CisyMDA5LTA5LTAyICBSaWNoYXJkIE1vb3JlICA8cmljaEBrZGUub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgW1F0XSBNYWtlIHN1cmUgd2Ug
cmVsYXlvdXQgdGhlIHBhZ2UgYWZ0ZXIgZXZhbHVhdGluZyBKUworCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODIzNQorCisgICAgICAgIFF0V2ViS2l0
IGRvZXMgbm90IGFsd2F5cyBzZWVtIHRvIHJlZmxvdyB0aGUgcGFnZSB3aGVuIGV2YWx1YXRpbmcK
KyAgICAgICAgamF2YXNjcmlwdC4gVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSB3YXkgZXZhbHVhdGVK
YXZhU2NyaXB0IHdvcmtzIHRvCisgICAgICAgIHVzZSB0aGUgZnJhbWVsb2FkZXIgd2hpY2ggZW5z
dXJlcyB0aGF0IHRoaXMgaXMgZG9uZSBwcm9wZXJseS4KKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorICAgICAg
ICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAwOS0wOC0yOCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODg5CisgICAgICAgIFtHVEtdIHNjcm9s
bGJhciBwb2xpY3kgZm9yIG1haW4gZnJhbWUgaXMgbm90IGltcGxlbWVudGFibGUKKworICAgICAg
ICBBZGQgZW1wdHkgaW1wbGVtZW50YXRpb24gZm9yIG5ldyBDaHJvbWVDbGllbnQgbWV0aG9kLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY3JvbGxiYXJzTW9kZURpZENoYW5nZSk6CisKKzIwMDkt
MDgtMjcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBRV2ViSGlzdG9yeTo6
Y2xlYXIoKSBtb2RpZmljYXRpb25zLgorCisgICAgICAgIENsZWFyKCkgbWV0aG9kIHdhcyBjaGFu
Z2VkLiBJZiBRV2ViSGlzdG9yeSBpcyBlbXB0eSAodGhlcmUgaXMgbm8KKyAgICAgICAgZWxlbWVu
dHMgZXZlbiBjdXJyZW50KSBjbGVhcigpIGRvIG5vdGhpbmcuIElmIHRoZXJlIGF0IGxlYXN0IG9u
ZQorICAgICAgICBlbGVtZW50IGNsZWFyKCkgd2lsbCBkZWxldGUgZXZlcnl0aGluZyBhcGFydCBv
ZiBjdXJyZW50LgorCisgICAgICAgIE5ldyBhdXRvdGVzdHMgaW4gUVdlYkhpc3RvcnkKKworICAg
ICAgICBOZXcgYXV0b3Rlc3RzIHdlcmUgYWRkZWQgdG8gUVdlYkhpc3RvcnkuIFRoZXkgc2hvdWxk
IGNoZWNrIHNvbWUgY3Jhc2hlcworICAgICAgICBpbiBzYXZlIGFuZCByZXN0b3JlIHN0YXRlIHBy
b2Nlc3MgYW5kIGNsZWFyKCkgbWV0aG9kIGFuZCBnZW5lcmFsCisgICAgICAgIGJlaGF2aW9yIG9u
IHdoZXJlIFFXZWJIaXN0b3J5Ojpjb3VudCgpID09IDAgb3IgUVdlYkhpc3Rvcnk6OmNvdW50KCkg
PT0gMQorCisgICAgICAgIEJ1Z3ppbGxhOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjg3MTEKKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAg
IChRV2ViSGlzdG9yeTo6Y2xlYXIpOgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5L3RzdF9x
d2ViaGlzdG9yeS5jcHA6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6OmJhY2spOgorICAgICAg
ICAodHN0X1FXZWJIaXN0b3J5Ojpmb3J3YXJkKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6
c2F2ZUFuZFJlc3RvcmVfY3Jhc2hfMSk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6OnNhdmVB
bmRSZXN0b3JlX2NyYXNoXzIpOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5OjpzYXZlQW5kUmVz
dG9yZV9jcmFzaF8zKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6Y2xlYXIpOgorCisyMDA5
LTA4LTI3ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgW1F0XSBDbGVhbnVw
LCBvbGQgYW5kIGNvbW1lbnRlZCBwYXJ0IG9mIHNvdXJjZSBjb2RlIHdhcyByZW1vdmVkLgorICAg
ICAgICBGaXggc29tZSBmb3JtYXR0aW5nIHByb2JsZW1zLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcxMgorCisgICAgICAgICogQXBpL3F3ZWJo
aXN0b3J5X3AuaDoKKyAgICAgICAgKFFXZWJIaXN0b3J5UHJpdmF0ZTo6UVdlYkhpc3RvcnlQcml2
YXRlKToKKworMjAwOS0wOC0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgorCisgICAgICAgIERvbid0IGxldCBsb2Nh
bCBmaWxlcyBhY2Nlc3Mgd2ViIFVSTHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4NDgwCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKworMjAwOS0wOC0yNSAgQW50
b25pbyBHb21lcyAgIDxhbnRvbmlvLmdvbWVzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBCdWcgMjg3MDggLSBNYWtlIHBvc3Np
YmxlIHRvIGJldHRlciB1c2UgUmVzb3VyY2VFcnJvciBpbiBGcmFtZUxvYWRlckNsaWVudFF0IGNs
YXNzLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6
OnJlcXVlc3RlZFVybCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpGcmFtZUxv
YWRlckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9h
ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisy
MDA5LTA4LTIyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
ZXJ0IDQ3Njg0LiAgV2UncmUgZ29pbmcgdG8gZG8gdGhpcyBsYXRlciBvbmNlIGNsaWVudHMgaGF2
ZSBoYWQgYQorICAgICAgICBjaGFuY2UgdG8gb3B0IGludG8gdGhlIHNldHRpbmcgdGhleSBsaWtl
LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OlFXZWJTZXR0aW5ncyk6CisKKzIwMDktMDgtMjIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBE
b24ndCBsZXQgbG9jYWwgZmlsZXMgYWNjZXNzIHdlYiBVUkxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODQ4MAorCisgICAgICAgICogQXBpL3F3ZWJz
ZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisKKzIw
MDktMDgtMTkgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Bl
Y3VsYXRpdmUgYnVpbGQgYnJlYWsgZml4IGZvciBxdC4KKworICAgICAgICAqIEFwaS9xd2Vic2Vj
dXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3RB
Y2Nlc3NGcm9tT3JpZ2luKToKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmg6CisK
KzIwMDktMDgtMTkgIEFhcm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI0ODUzOiBQcm92aWRlIGEgd2F5IGZvciBXZWJLaXQgY2xpZW50
cyB0bworICAgICAgICBzcGVjaWZ5IGEgbW9yZSBncmFudWxhciBwb2xpY3kgZm9yIGNyb3NzLW9y
aWdpbiBYSFIgYWNjZXNzLgorCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6
IEFkZCBBUEkgdG8gbWFuaXB1bGF0ZSBvcmlnaW4gYWNjZXNzIHdoaXRlbGlzdHMuCisgICAgICAg
IChRV2ViU2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4pOiBEaXR0by4K
KyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Rz
KTogRGl0dG8uCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oOiBEaXR0by4KKwor
MjAwOS0wOC0xOCAgTWFya3VzIEdvZXR6IDxNYXJrdXMuR29ldHpAbm9raWEuY29tPgorCisgICAg
ICAgIFJldml3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBbUXRdIEZvciBwcmVmZWN0
aEROUywgdGhlIHByZS1mZXRjaGluZyBoYXMgdG8gYmUgZW5hYmxlZCBpbiB0aGUKKyAgICAgICAg
V2ViU2V0dGluZ3MuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
Lmg6CisKKzIwMDktMDgtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFRyeSB0byBmaXggUXQgYnVpbGQgYWdhaW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5jcHA6IE1vdmUgInVzaW5nIG5hbWVzcGFjZSIuCisKKzIwMDktMDgt
MTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRyeSB0byBmaXgg
UXQgYnVpbGQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkU2hvd0RlbGV0ZUludGVy
ZmFjZSk6CisgICAgICAgIFVzZSBnZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSBpbnN0ZWFkIG9mIGNs
YXNzTmFtZSgpIGZ1bmN0aW9uLgorCisyMDA5LTA4LTE0ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1
bi56aGFuZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgUlZDVCBlbGZ0cmFuIGZhaWxzIHRvIHJlc29sdmUgUVBhaW50ZXI6OnN0YXRp
Y01ldGFPYmplY3QgY29taW5nIHdpdGggCisgICAgICAgIFFXZWJWaWV3OjpSZW5kZXJIaW50cyBw
cm9wZXJ0eS4KKworICAgICAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IGZpeCBhbmQgd2lsbCBiZSBy
ZXZlcmV0ZWQgd2hlbiB0aGUgcmlnaHQgc3ltYm9scworICAgICAgICBleHBvcnRlZCBmcm9tIFF0
IGxpYiBpbiBTNjAuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI4MTgxCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOS0wOC0xNCAg
TGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBQdWJsaWMgQVBJIHRvIGNv
bmZpZ3VyZSB0aGUgc3RvcmFnZSBwYXRoIGZvciBIVE1MNSBsb2NhbFN0b3JhZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDM2CisKKyAgICAgICAg
RGlzYWJsZXMgTG9jYWxTdG9yYWdlIGZvciBRdFdlYktpdCBieSBkZWZhdWx0IGJ5IHNldHRpbmcK
KyAgICAgICAgUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkIHRvIGZhbHNlLgorCisg
ICAgICAgIFNldHMgdXAgYSBkZWZhdWx0IGZvciB0aGUgTG9jYWxTdG9yYWdlIHBhdGggc28gdGhh
dCBjbGllbnRzIHdvdWxkIG9ubHkKKyAgICAgICAgbmVlZCB0byBlbmFibGUgdGhlIExvY2FsU3Rv
cmFnZUVuYWJsZWQgc2V0dGluZyB0byB0dXJuIG9uIExvY2FsU3RvcmFncmUKKyAgICAgICAgc3Vw
cG9ydC4KKworICAgICAgICBUdXJuIG9uIExvY2FsU3RvcmFnZSBzdXBwb3J0IGZvciBRdExhdW5j
aGVyIGFuZCB0aGUgcmVsZXZhbnQgdGVzdAorICAgICAgICBzaW5jZSBMb2NhbFN0b3JhZ2UgaXMg
bm93IGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yIFF0V2Via2l0LgorCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKGRlZmF1bHRDYWNoZVBhdGgpOgorICAgICAgICAoaW5pdGlh
bGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRoSWZOZWNlc3NhcnkpOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRMb2NhbFN0
b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6bG9jYWxTdG9yYWdlUGF0aCk6Cisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5j
cHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjptdWx0aXBsZVBhZ2VHcm91cHNBbmRMb2Nh
bFN0b3JhZ2UpOgorCisyMDA5LTA4LTE0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBb
UXRdIEFsbG93IGFwcGxpY2F0aW9ucyB0byByZWdpc3RlciB0aGVpciBvd24gbG9jYWwgVVJMIHNj
aGVtZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MjQwCisKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAgICAgKFFX
ZWJTZWN1cml0eU9yaWdpbjo6YWRkTG9jYWxTY2hlbWUpOgorICAgICAgICAoUVdlYlNlY3VyaXR5
T3JpZ2luOjpyZW1vdmVMb2NhbFNjaGVtZSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46
OmxvY2FsU2NoZW1lcyk6CisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oOgorICAg
ICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdl
YlBhZ2U6OmxvY2FsVVJMU2NoZW1lcyk6CisKKzIwMDktMDgtMTMgIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KKworICAgICAgICBUcnkgYW5kIGZpeCB0aGUgUXQgYnVpbGQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorCisyMDA5LTA4LTEzICBLYXZpbmRyYSBEZXZpIFBh
bGFyYWphICA8a2F2aW5kcmEucGFsYXJhamFAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIERvYyAtIFNvbWUgY2xlYW51cCBvbiB0aGUg
ZG9jdW1lbnRhdGlvbiBvZiBRV2ViRWxlbWVudAorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKworMjAwOS0wOC0xMyAgTm9yYmVydCBMZXNlciAgPG5vcmJlcnQubGVzZXJAbm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFN5
bWJpYW4gdGFyZ2V0IGNvbXBvbmVudHMgKGxpYnJhcnkgYW5kIGV4ZWN1dGFibGUgZmlsZXMpCisg
ICAgICAgIHJlcXVpcmUgVW5pcXVlIElkZW50aWZpZXJzIChpLmUuLCBVSUQzKS4KKyAgICAgICAg
VGhlc2UgaWRlbnRpZmllcnMgYXJlIGRlZmluZWQgaW4gdGhlIHJlc3BlY3RpdmUgcHJvamVjdAor
ICAgICAgICBmaWxlcywgY29uZGl0aW9uYWxseSBmb3IgInN5bWJpYW4iIHBsYXRmb3JtLgorCisg
ICAgICAgICogUXRMYXVuY2hlci9RdExhdW5jaGVyLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZWxlbWVudC9xd2ViZWxlbWVudC5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3F3ZWJm
cmFtZS5wcm86CisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnkvcXdlYmhpc3RvcnkucHJvOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3ZWJoaXN0b3J5aW50ZXJmYWNl
LnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS9xd2VicGFnZS5wcm86CisgICAgICAgICog
dGVzdHMvcXdlYnZpZXcvcXdlYnZpZXcucHJvOgorCisyMDA5LTA4LTEyICBHZW9yZ2UgV3JpZ2h0
ICA8Z2VvcmdlLndyaWdodEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBUcmVhdC4KKworICAgICAgICBJbml0aWFsaXNlIHpvb20gbGV2ZWxzIGluZGVwZW5kZW50
IG9mIHdoZXRoZXIgYSBVUkwgaXMgdmFsaWQgb3Igbm90IHRvCisgICAgICAgIGZpeCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxNjIKKworICAgICAgICAqIFF0TGF1
bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKworMjAw
OS0wOC0xMiAgSm9lcmcgQm9ybmVtYW5uICA8am9lcmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUXRXZWJL
aXQgY29tcGlsZSBmaXggZm9yIFdpbmRvd3MgQ0UKKworICAgICAgICBUaGVyZSdzIG5vIGdldGVu
diBvbiBXaW5kb3dzIENFLCB1c2UgcWdldGVudiBpbnN0ZWFkLgorCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKHF0X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3Rvcmllcyk6
CisKKzIwMDktMDgtMTAgIEthdmluZHJhIFBhbGFyYWphICA8a2F2aW5kcmEucGFsYXJhamFAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
IFZhcmlvdXMgZml4ZXMgYW5kIGltcHJvdmVtZW50cyB0byB0aGUgUVdlYlBsdWdpbkluZm8sIFFX
ZWJQbHVnaW5EYXRhYmFzZSBhbmQgUVdlYlNldHRpbmdzIGRvY3VtZW50YXRpb24uCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmNwcDoKKworMjAwOS0wOC0wOCAgVm9sa2VyIEhpbHNoZWltZXIgIDx2b2xrZXIuaGlsc2hl
aW1lckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgRG9jOiB0aGVyZSBpcyBubyBncm91cCBvZiBleHBsaWNpdGx5IHNoYXJlZCBjbGFz
c2VzLCBvbmx5IG9uZSBjbGFzcyB1c2VzIHRoaXMuCisKKyAgICAgICAgRXhwbGFpbiB0aGUgaW1w
bGljYXRpb25zIGluIHRoZSBRV2ViSGlzdG9yeUl0ZW0gZG9jdW1lbnRhdGlvbiwgYW5kIGdldCBy
aWQKKyAgICAgICAgb2YgdGhlICJncm91cCIuCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3Rvcnku
Y3BwOgorCisyMDA5LTA4LTA1ICBDc2FiYSBPc3p0cm9nb25hYyAgPG9zemlAaW5mLnUtc3plZ2Vk
Lmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtR
dF0gRml4IGJ1aWxkIGVycm9yIGNhdXNlZCBieSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC80Njc2MworCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5mYWN0b3J5Lmg6IEV4cG9ydCBt
YWNybyBhZGRlZC4KKworMjAwOS0wOC0wNCAgQW50b25pbyBHb21lcyAgIDxhbnRvbmlvLmdvbWVz
QG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgW1F0XSBRV2ViRnJhbWU6OnJlcXVlc3RlZFVybCBtZXRob2QgY2FuIG1pcy1iZWhh
dmUgaW4gY2FzZSBvZiB1bmhhbmRsZWQgc3NsRXJyb3JzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4MDQKKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpyZXF1ZXN0ZWRVcmwpOgorICAgICAgICAqIHRl
c3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAwOS0wOC0wNCAgU2ltb24gSGF1
c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBSZW5hbWUgUVdlYlBsdWdpbiB0byBRV2ViUGx1
Z2luSW5mbywgYXMgZGlzY3Vzc2VkIG9uIElSQy4KKworICAgICAgICAqIEFwaS9xd2VicGx1Z2lu
ZGF0YWJhc2UuY3BwOgorICAgICAgICAoUVdlYlBsdWdpbkluZm9Qcml2YXRlOjpRV2ViUGx1Z2lu
SW5mb1ByaXZhdGUpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OlFXZWJQbHVnaW5JbmZvKToK
KyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjp+UVdlYlBsdWdpbkluZm8pOgorICAgICAgICAoUVdl
YlBsdWdpbkluZm86Om5hbWUpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OmRlc2NyaXB0aW9u
KToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjptaW1lVHlwZXMpOgorICAgICAgICAoUVdlYlBs
dWdpbkluZm86OnN1cHBvcnRzTWltZVR5cGUpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OnBh
dGgpOgorICAgICAgICAoUVdlYlBsdWdpbkluZm86OmlzTnVsbCk6CisgICAgICAgIChRV2ViUGx1
Z2luSW5mbzo6c2V0RW5hYmxlZCk6CisgICAgICAgIChRV2ViUGx1Z2luSW5mbzo6aXNFbmFibGVk
KToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFFXZWJQ
bHVnaW5JbmZvOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFFXZWJQbHVnaW5JbmZvOjpvcGVyYXRv
cj0pOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5zKToKKyAgICAgICAgKFFX
ZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAoUVdlYlBsdWdp
bkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZSk6CisgICAgICAgICogQXBp
L3F3ZWJwbHVnaW5kYXRhYmFzZS5oOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZGF0YWJhc2Vf
cC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBs
dWdpbnMpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6c2VhcmNoUGF0aHMpOgor
ICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6bnVsbF9kYXRhKToKKyAgICAgICAgKHRz
dF9RV2ViUGx1Z2luRGF0YWJhc2U6Om51bGwpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRh
YmFzZTo6cGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFz
ZTo6ZW5hYmxlZCk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmVx
dWFsX2RhdGEpOgorICAgICAgICAodHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6b3BlcmF0b3JlcXVh
bCk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpwcmVmZXJyZWRQbHVnaW4pOgor
CisyMDA5LTA4LTA0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgorCisgICAgICAgIFJlcGxhY2UgUVdl
YlBsdWdpbjo6TWltZVR5cGUgd2l0aCBhIHR5cGVkZWYgdG8KKyAgICAgICAgUVdlYlBsdWdpbkZh
Y3Rvcnk6Ok1pbWVUeXBlLgorCisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHA6
CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oOgorICAgICAgICAqIEFwaS9xd2Vi
cGx1Z2luZmFjdG9yeS5jcHA6CisgICAgICAgIChRV2ViUGx1Z2luRmFjdG9yeTo6TWltZVR5cGU6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5oOgorCisyMDA5
LTA4LTA0ICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBRV2ViUGx1Z2luRGF0YWJh
c2UgQVBJIHRvIHRoZSBRdCBBUEkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc2NTEKKworICAgICAgICAqIEFwaS9oZWFkZXJzLnBy
aToKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmRhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAg
IChRV2ViUGx1Z2luUHJpdmF0ZTo6UVdlYlBsdWdpblByaXZhdGUpOgorICAgICAgICAoUVdlYlBs
dWdpbkRhdGFiYXNlUHJpdmF0ZTo6UVdlYlBsdWdpbkRhdGFiYXNlUHJpdmF0ZSk6CisgICAgICAg
IChRV2ViUGx1Z2luOjpNaW1lVHlwZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChRV2ViUGx1Z2lu
OjpRV2ViUGx1Z2luKToKKyAgICAgICAgKFFXZWJQbHVnaW46On5RV2ViUGx1Z2luKToKKyAgICAg
ICAgKFFXZWJQbHVnaW46Om5hbWUpOgorICAgICAgICAoUVdlYlBsdWdpbjo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAoUVdlYlBsdWdpbjo6bWltZVR5cGVzKToKKyAgICAgICAgKFFXZWJQbHVnaW46
OnN1cHBvcnRzTWltZVR5cGUpOgorICAgICAgICAoUVdlYlBsdWdpbjo6cGF0aCk6CisgICAgICAg
IChRV2ViUGx1Z2luOjppc051bGwpOgorICAgICAgICAoUVdlYlBsdWdpbjo6c2V0RW5hYmxlZCk6
CisgICAgICAgIChRV2ViUGx1Z2luOjppc0VuYWJsZWQpOgorICAgICAgICAoUVdlYlBsdWdpbjo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChRV2ViUGx1Z2luOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KFFXZWJQbHVnaW46Om9wZXJhdG9yPSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OlFX
ZWJQbHVnaW5EYXRhYmFzZSk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6On5RV2ViUGx1
Z2luRGF0YWJhc2UpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpwbHVnaW5zKToKKyAg
ICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFNlYXJjaFBhdGhzKToKKyAgICAgICAg
KFFXZWJQbHVnaW5EYXRhYmFzZTo6c2VhcmNoUGF0aHMpOgorICAgICAgICAoUVdlYlBsdWdpbkRh
dGFiYXNlOjpzZXRTZWFyY2hQYXRocyk6CisgICAgICAgIChRV2ViUGx1Z2luRGF0YWJhc2U6OmFk
ZFNlYXJjaFBhdGgpOgorICAgICAgICAoUVdlYlBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKToKKyAg
ICAgICAgKFFXZWJQbHVnaW5EYXRhYmFzZTo6cGx1Z2luRm9yTWltZVR5cGUpOgorICAgICAgICAo
UVdlYlBsdWdpbkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZSk6CisgICAg
ICAgICogQXBpL3F3ZWJwbHVnaW5kYXRhYmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdl
YnBsdWdpbmRhdGFiYXNlX3AuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5j
cHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKToKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3F3
ZWJwbHVnaW5kYXRhYmFzZS5wcm86IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJwbHVnaW5k
YXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAgICh0c3Rf
UVdlYlBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKToKKyAgICAgICAgKHRzdF9RV2Vi
UGx1Z2luRGF0YWJhc2U6OnNlYXJjaFBhdGhzKToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0
YWJhc2U6Om51bGxfZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpudWxs
KToKKyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKToK
KyAgICAgICAgKHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6OmVuYWJsZWQpOgorICAgICAgICAodHN0
X1FXZWJQbHVnaW5EYXRhYmFzZTo6b3BlcmF0b3JlcXVhbF9kYXRhKToKKyAgICAgICAgKHRzdF9R
V2ViUGx1Z2luRGF0YWJhc2U6Om9wZXJhdG9yZXF1YWwpOgorICAgICAgICAodHN0X1FXZWJQbHVn
aW5EYXRhYmFzZTo6cHJlZmVycmVkUGx1Z2luKToKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcm86
CisKKzIwMDktMDgtMDMgIEJhbGF6cyBLZWxlbWVuICA8a2VsZW1lbi5iYWxhenMuM0BzdHVkLnUt
c3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAg
ICAgIERvIG1lbW9yeSBjbGVhbnVwIHdoZW4gcnVubmluZyByb2JvdGl6ZWQgUXRMYXVuY2hlciBp
biBkZWJ1ZyBhcyB3ZWxsLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAg
ICAgKGxhdW5jaGVyTWFpbik6CisgICAgICAgIChtYWluKToKKworMjAwOS0wNy0zMCAgTGFzemxv
IEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBbUXRdIEluaXRpYWxpemUgSFRNTDUgQXBw
bGljYXRpb24gQ2FjaGUgZm9yIFF0V2ViS2l0IHRvIGEgc2Vuc2libGUgZGVmYXVsdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4NjYKKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChpbml0aWFsaXplQXBwbGljYXRpb25DYWNo
ZVBhdGhJZk5lY2Vzc2FyeSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJp
dmF0ZSk6CisKKzIwMDktMDctMzEgIEpha29iIFBldHNvdml0cyAgPGpha29iLnBldHNvdml0c0B0
b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBUcmVhdC4KKworICAg
ICAgICBCdWlsZCBRdFdlYktpdCB3aXRob3V0IGJlbmNobWFyayB0ZXN0cyBmb3IgUXQgPCA0LjUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzg4Ngor
CisgICAgICAgIFRoZSBRQkVOQ0hNQVJLIG1hY3JvIGlzIG9ubHkgYXZhaWxhYmxlIGZyb20gNC41
IG9uLAorICAgICAgICBzbyBidWlsZHMgZm9yIFF0IDwgNC41IHNob3VsZG4ndCB0cnkgdG8gYnVp
bGQgdGhvc2UuCisKKyAgICAgICAgKiB0ZXN0cy90ZXN0cy5wcm86CisKKzIwMDktMDctMzEgIEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAgRml4IHdhcm5pbmcgYnkgbWlncmF0
aW5nIHVzZSBvZiBRU3RyaW5nLnNwcmludGYoLi4uKSB0bworICAgICAgICBRU3RyaW5nLmFyZygp
LmFyZygpLi4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6
CisgICAgICAgIChkdW1wUmFuZ2UpOgorCisyMDA5LTA3LTMxICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3Ig
QXJuZSBWZXN0YsO4LgorCisgICAgICAgIEV4cG9zZSB0aGUgT2ZmbGluZSBXZWIgQXBwbGljYXRp
b24gQ2FjaGUgaW4gdGhlIFF0IEFQSS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3Bw
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAg
ICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDA5LTA3LTMwICBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IFRyZWF0LgorCisgICAgICAgIEFkZCBtaXNzaW5nIFFfT0JKRUNUIHRvIGNsYXNzIGluaGVyaXRp
bmcgZnJvbSBRT2JqZWN0LgorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJh
bWUuY3BwOgorCisyMDA5LTA3LTMwICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgorCisgICAg
ICAgIEZpeCBpbmRlbnRhdGlvbi4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdl
YmZyYW1lLmNwcDoKKworMjAwOS0wNy0zMCAgVm9sa2VyIEhpbHNoZWltZXIgPHZvbGtlci5oaWxz
aGVpbWVyQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICBGaXggZG9jdW1lbnRhdGlvbiBsaW5rcyB0byBleGFtcGxlcy4KKworICAgICAg
ICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDktMDctMzAgIEJhbGF6cyBLZWxlbWVuICA8a2Vs
ZW1lbi5iYWxhenMuM0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFsbG9jYXRlIE1haW5XaW5kb3cgb24gaGVhcCBpbiBy
b2JvdGl6ZWQgUXRMYXVuY2hlciBhcyB3ZWxsLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWlu
LmNwcDoKKyAgICAgICAgKG1haW4pOgorCisyMDA5LTA3LTI5ICBLZXZpbiBNY0N1bGxvdWdoICA8
a21jY3VsbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIEFkZGVkIGZvdW5kYXRpb24gd29yayB0byBhbGxvdyBhIHRlc3RpbmcgaW5m
cmFzdHJ1Y3R1cmUgZm9yIHRoZSBXZWIKKyAgICAgICAgSW5zcGVjdG9yLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2xpZW50UXQ6Omluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKKzIwMDktMDctMjkgIFpv
bHRhbiBIZXJjemVnICA8emhlcmN6ZWdAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gSW4gZGVidWcgbW9kZSwgdGhp
cyBmaXggZnJlZXMgY2FjaGVkIHJlc291cmNlcworICAgICAgICBhbmQgb3RoZXIgdW5yZWZlcmVu
Y2VkIG9iamVjdHMgKGJ5IGNhbGxpbmcgdGhlCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdG9yKSB0
byByZW1vdmUgdGhlIExFQUsgbWVzc2FnZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzc2NworCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6
CisgICAgICAgIChxdF9kcnRfY2FjaGVfY2xlYXIpOgorICAgICAgICAqIFF0TGF1bmNoZXIvbWFp
bi5jcHA6CisgICAgICAgIChtYWluKToKKworMjAwOS0wNy0yOCAgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IHRoZSBRdCBidWls
ZCBieSBhZGFwdGluZyB0byB0aGUgY2hhbmdlcyBvZiBTY3JpcHRPYmplY3QuCisKKyAgICAgICAg
KiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoc2V0dXBTY3JpcHRPYmplY3QpOgorCisy
MDA5LTA3LTI4ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBXZWJLaXQgdmVy
c2lvbiBBUEkgdG8gUXQuCisKKyAgICAgICAgR2V0IHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2Vi
S2l0IGZyb20gV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCisgICAg
ICAgIGF0IGNvbXBpbGUgdGltZSBhbmQgbWFrZSBpdCBhdmFpbGFibGUgdG8gUXQgYXBwbGljYXRp
b25zIHRocm91Z2gKKyAgICAgICAgcVdlYktpdFZlcnNpb24oKS4KKworICAgICAgICBBbHNvIGFt
ZW5kIHRoZSBVc2VyIEFnZW50IHN0cmluZyB0byBwbGFjZSB0aGUgU2FmYXJpIGNsYXVzZSBvdXRz
aWRlCisgICAgICAgIHRoZSBmaW5hbCBicmFja2V0IGFuZCB0byB0aGUgZW5kIG9mIHRoZSBVQSBz
dHJpbmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI3MTU4CisKKyAgICAgICAgTWlub3IgYnVpbGQgdHdlYWsgYnkgU2ltb24gSGF1c21hbm4gKGFk
ZGluZyBleHBvcnQgbWFjcm9zIHRvIG5ldyBmdW5jdGlvbnMpLgorCisgICAgICAgICogQXBpL2hl
YWRlcnMucHJpOgorICAgICAgICAqIEFwaS9xd2Via2l0dmVyc2lvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAod2ViS2l0VmVyc2lvbik6CisgICAgICAgICh3ZWJLaXRNYWpvclZlcnNpb24pOgorICAg
ICAgICAod2ViS2l0TWlub3JWZXJzaW9uKToKKyAgICAgICAgKiBBcGkvcXdlYmtpdHZlcnNpb24u
aDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
Ojp1c2VyQWdlbnRGb3JVcmwpOgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmll
dy5jcHA6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OmdldFdlYktpdFZlcnNpb24pOgorCisyMDA5
LTA3LTI4ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAg
ICAgICBSdWJiZXItc3RhbXBlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAgIEZpeCBjb21w
aWxhdGlvbiB3aXRoIHRoZSBwcmVjb21waWxlZCBoZWFkZXIuCisKKyAgICAgICAgKiBXZWJLaXRf
cGNoLmg6IERvbid0IGluY2x1ZGUgSlNET01CaW5kaW5nLmggYW5kIE1hdGhPYmplY3QuaCwKKyAg
ICAgICAgYXMgdGhleSBpbmNsdWRlIEF0b21pY1N0cmluZy5oLiBBdG9taWNTdHJpbmcuY3BwIG5l
ZWRzIHRvIGVuYWJsZQorICAgICAgICBhICNkZWZpbmUgYmVmb3JlIGluY2x1ZGluZyBBdG9taWNT
dHJpbmcuaCwgd2hpY2ggYnJlYWtzIGlmIHRoZSBQQ0gKKyAgICAgICAgZm9yY2VzIHRoZSBpbmNs
dXNpb24gYmVmb3JlaGFuZC4KKworMjAwOS0wNy0yOCAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhp
ZGF5YXRAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IHNjcm9sbCBwb3NpdGlvbiBjYW4g
YmUgY2hhbmdlZAorICAgICAgICBwcm9ncmFtbWF0aWNhbGx5LCBldmVuIHdoZW4gdGhlIHNjcm9s
bCBiYXIgcG9saWN5IGlzIHNldCB0byBvZmYuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUv
dHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMDctMjggIFRvciBBcm5lIFZlc3Riw7ggIDx0b3Iu
YXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorICAgICAgICAKKyAgICAgICAgRml4IGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzIGlu
IHRoZSBRV2ViRnJhbWUgdGVzdHMuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3
ZWJmcmFtZS5jcHA6CisKKzIwMDktMDctMjggIEFuZHJlIFBlZHJhbGhvICA8YW5kcmUucGVkcmFs
aG9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgIEZpeGVkIHRzdF9RV2ViRnJhbWU6Omhhc1NldEZvY3VzIHRlc3Qgd2hpY2gg
d2FzIHVzaW5nCisgICAgICAgICBhbiB1bmRlZmluZWQgcmVzb3VyY2UuCisgICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc1MTIKKworICAgICAgICAgKiB0
ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMDctMjggIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBwYXNzIHJlbGF0
aXZlIGZpbGUgbmFtZXMgdG8gUXRMYXVuY2hlci4KKworICAgICAgICAqIFF0TGF1bmNoZXIvbWFp
bi5jcHA6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKworMjAwOS0wNy0yNyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3NzM1CisgICAgICAgIEdpdmUgYSBoZWxwZnVsIG5hbWUgdG8gSlNMb2NrIGNv
bnN0cnVjdG9yIGFyZ3VtZW50CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KToKKworMjAwOS0wNy0y
NyAgVm9sa2VyIEhpbHNoZWltZXIgPHZvbGtlci5oaWxzaGVpbWVyQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBRV2ViVmlldydzICJl
bmFibGVkIiBwYXJhbWV0ZXIgc2hvdWxkIGRlZmF1bHQgdG8gdHJ1ZSwgYXMgd2l0aCBRR3JhcGhp
Y3NWaWV3IGFuZAorICAgICAgICBRUGFpbnRlci4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5j
cHA6IEFkZCByZWZlcmVuY2UgdG8gUVBhaW50ZXI6OnJlbmRlckhpbnRzKCkuCisgICAgICAgICog
QXBpL3F3ZWJ2aWV3Lmg6IEFkZCBkZWZhdWx0IGZvciBlbmFibGVkIGFyZ3VtZW50LgorCisyMDA5
LTA3LTI2ICBLYXZpbmRyYSBQYWxhcmFqYSAgPGthdmluZHJhLnBhbGFyYWphQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBNb3JlIGRv
Y3VtZW50YXRpb24gY2xlYW51cHMgaW4gdGhlIFFXZWJFbGVtZW50IGNsYXNzIG92ZXJ2aWV3Lgor
CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKworMjAwOS0wNy0yNiAgS2F2aW5kcmEg
UGFsYXJhamEgIDxrYXZpbmRyYS5wYWxhcmFqYUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQ2xlYW4gdXAgZG9jdW1lbnRhdGlvbiBv
ZiBRV2ViRWxlbWVudCdzIGZpbmRGaXJzdCBhbmQgZmluZEFsbCBmdW5jdGlvbnMsCisgICAgICAg
IGFzIHdlbGwgYXMgdGhlaXIgUVdlYkZyYW1lIGNvdW50ZXJwYXJ0cy4KKworICAgICAgICAqIEFw
aS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIwMDkt
MDctMjYgIEthdmluZHJhIFBhbGFyYWphICA8a2F2aW5kcmEucGFsYXJhamFAbm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFZhcmlvdXMg
ZG9jdW1lbnRhdGlvbiBjbGVhbnVwcworCisgICAgICAgICogRml4ZWQgcWRvYyB3YXJuaW5ncwor
ICAgICAgICAqIEhpZGUgUVdlYk5ldHdvcmtJbnRlcmZhY2UgZnJvbSB0aGUgY2xhc3Mgb3ZlcnZp
ZXcKKyAgICAgICAgKiBNZW50aW9uIFFXZWJFbGVtZW50IGluIHRoZSBtb2R1bGUgb3ZlcnZpZXcK
KyAgICAgICAgKiBNb3JlIGNsZWFudXBzCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAqIEFwaS9x
d2Vidmlldy5jcHA6CisgICAgICAgICogZG9jcy9xdHdlYmtpdC5xZG9jOgorCisyMDA5LTA3LTI2
ICBLYXZpbmRyYSBQYWxhcmFqYSAgPGthdmluZHJhLnBhbGFyYWphQG5va2lhLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGRlZCBtaXNzaW5n
IGNsYXNzIGRpYWdyYW0gcmVmZXJlbmNlZCBmcm9tIHRoZSBkb2NzLCB0YWtlbiBmcm9tIHRoZSBR
dAorICAgICAgICBkb2N1bWVudGF0aW9uLgorCisgICAgICAgICogZG9jcy9xdHdlYmtpdC5xZG9j
Y29uZjogUmVnaXN0ZXIgdGhlIGltYWdlIGRpcmVjdG9yeSB3aXRoCisgICAgICAgIHFkb2MuCisg
ICAgICAgICogZG9jcy9xd2Vidmlldy1kaWFncmFtLnBuZzogQWRkZWQuCisKKzIwMDktMDctMjQg
IEFudG9uaW8gR29tZXMgICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAgQXMgcGVyIGRpc2N1c3Npb24gb24g
SVJDLCBjaGFuZ2VkIG9yaWdpbmFsVXJsIGJ5IHJlcXVlc3RlZFVybC4KKworICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpyZXF1ZXN0ZWRVcmwpOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3
ZWJmcmFtZS5jcHA6CisKKzIwMDktMDctMjQgIEFuZHJlIFBlZHJhbGhvICA8YW5kcmUucGVkcmFs
aG9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0LgorCisg
ICAgICAgIFJlbW92ZWQgdm9pZCBRV2ViRnJhbWU6OnJlbmRlckNvbnRlbnRzKC4uLikgYW5kIGFk
ZGVkIHRoZSBRX1BST1BFUlRZCisgICAgICAgIGNsaXBSZW5kZXJUb1ZpZXdwb3J0IHRvIGNvbnRy
b2wgd2hldGhlciBRV2ViRnJhbWU6OnJlbmRlciB3b3VsZCBjYWxsCisgICAgICAgIEZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyByYXRoZXIgdGhhbiBGcmFtZVZpZXc6OnBhaW50IGFuZCBkbyBub3Qg
Y2xpcAorICAgICAgICB0aGUgZnJhbWUgY29udGVudCB0byB2aWV3cG9ydC4KKworCisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJQ
cml2YXRlKToKKyAgICAgICAgKFFXZWJGcmFtZTo6Y2xpcFJlbmRlclRvVmlld3BvcnQpOgorICAg
ICAgICAoUVdlYkZyYW1lOjpzZXRDbGlwUmVuZGVyVG9WaWV3cG9ydCk6CisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAoUVdl
YkZyYW1lUHJpdmF0ZTo6UVdlYkZyYW1lUHJpdmF0ZSk6CisgICAgICAgICogdGVzdHMvcXdlYmZy
YW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDA5LTA3LTI0ICBBbnRvbmlvIEdvbWVzICAgPGFu
dG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBbUVRdIEltcGxlbWVudCBvcmlnaW5hbFVybCBnZXR0ZXIgbWV0
aG9kIHRvIHRoZSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI1ODY3CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFX
ZWJGcmFtZTo6b3JpZ2luYWxVcmwpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAg
ICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnFyYzoKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvdGVzdDEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3Rlc3Qy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNw
cDoKKworMjAwOS0wNy0yNCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQnVpbGQgZml4IGZvciBRdC4KKworICAgICAgICBGaXggYnVp
bGQgaXNzdWUgaW50cm9kdWNlZCBpbiA0NjM0NAorICAgICAgICAoW0J1ZyAyMjcwMF0gQXBwbGlj
YXRpb25DYWNoZSBzaG91bGQgaGF2ZSBzaXplIGxpbWl0KQorCisgICAgICAgIFJlbW92ZSBtZXRo
b2Qgb25seSBhZGRlZCB0byB0aGUgUXQgQ2hyb21lQ2xpZW50LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwOS0wNy0yNCAgQW5kcmVpIFBvcGVzY3Ug
IDxhbmRyZWlwQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgorCisgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgc2hvdWxkIGhhdmUgc2l6ZSBsaW1pdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3MDAKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKToKKyAgICAgICAg
QWRkcyBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcmVhY2hlZE1heEFwcENhY2hlU2l6ZSBj
YWxsYmFjay4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisy
MDA5LTA3LTIzICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCBz
aW1wbGUgcHJveHkgc3VwcG9ydCBmb3IgUXRMYXVuY2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0OTUKKworICAgICAgICBQaWNrcyB1cCBwcm94
eSBzZXR0aW5ncyBmcm9tIHRoZSBodHRwX3Byb3h5IGVudmlyb25tZW50CisgICAgICAgIHZhcmlh
YmxlLgorCisgICAgICAgICogUXRMYXVuY2hlci9RdExhdW5jaGVyLnBybzogQWRkIFF0TmV0d29y
ayBkZXBlbmRlbmN5IGZvciBhbGwgCisgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBRdExh
dW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisKKzIw
MDktMDctMjMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KKworICAgICAgICBBZGRlZCBhIHRl
c3RjYXNlIHRvIHZlcmlmeSB0aGF0IGNhY2hlZCBtZXRob2RzIGluIHRoZSBRT0JqZWN0IGJpbmRp
bmdzCisgICAgICAgIHJlbWFpbiBhbGlmZSBldmVuIGFmdGVyIGdhcmJhZ2UgY29sbGVjdGlvbi4K
KworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0
c3RfUVdlYlBhZ2U6OnByb3RlY3RCaW5kaW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3Rvcik6
CisKKzIwMDktMDctMjMgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAaW5mLnUtc3plZ2VkLmh1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZpeGlu
ZyB0d28gaXNzdWVzIHJlbGF0ZWQgdG8gUXRMYXVuY2hlcgorICAgICAgICAgIC0gTWFpbldpbmRv
dyBvYmplY3RzIGFyZSBub3QgYWx3YXlzIGZyZWVkIGFmdGVyIGNsb3NlCisgICAgICAgICAgLSBK
YXZhU2NyaXB0IHdpbmRvdy5jbG9zZSgpIHNvbWV0aW1lcyBjcmFzaGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYwMQorCisgICAgICAgICogUXRM
YXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAg
ICAgICAobWFpbik6CisKKzIwMDktMDctMjEgIFZvbGtlciBIaWxzaGVpbWVyIDx2b2xrZXIuaGls
c2hlaW1lckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgVmFyaW91cyBpbXByb3ZlbWVudHMgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9u
LgorCisgICAgICAgICogVXBkYXRlZCBsaW5rIHRvIFczYyBEYXRhYmFzZSBzcGVjCisgICAgICAg
ICogRm9ybWF0dGluZyBmaXhlcywgY2xlYW51cHMKKyAgICAgICAgKiBBZGQgbWlzc2luZyBcc2lu
Y2UgNC42IHRhZ3MgdG8gUVdlYlBhZ2U6OmZyYW1lQXQKKyAgICAgICAgKiBFeHRlbmQgUVdlYkRh
dGFiYXNlIGFuZCBRV2ViU2VjdXJpdHlPcmlnaW4gZG9jcy4KKworICAgICAgICAqIEFwaS9xd2Vi
ZGF0YWJhc2UuY3BwOiAKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFw
aS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisK
KzIwMDktMDctMjEgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAg
IFJlbW92ZSBwcmVsaW1pbmFyeS10YWcgZnJvbSBRV2ViRWxlbWVudAorCisgICAgICAgICogQXBp
L3F3ZWJlbGVtZW50LmNwcDoKKworMjAwOS0wNy0yMCAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCisKKyAgICAgICAgRml4IFF0IGNvZGUgdG8gZm9sbG93IHRoZSBXZWJLaXQgQ29kaW5nIFN0
eWxlLgorCisgICAgICAgICogQXBpL3Fjb29raWVqYXIuY3BwOgorICAgICAgICAoUUNvb2tpZUph
cjo6c2V0Q29va2llSmFyKToKKyAgICAgICAgKFFDb29raWVKYXI6OmNvb2tpZUphcik6CisgICAg
ICAgICogQXBpL3Fjb29raWVqYXIuaDoKKyAgICAgICAgKiBBcGkvcXdlYmRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFFXZWJEYXRhYmFzZTo6UVdlYkRhdGFiYXNlKToKKyAgICAgICAgKFFXZWJEYXRh
YmFzZTo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAqIEFwaS9xd2ViZGF0YWJhc2UuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYmRhdGFiYXNlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQu
aDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6dGl0
bGUpOgorICAgICAgICAoUVdlYkZyYW1lOjpwcmludCk6CisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2ViaGlz
dG9yeS5jcHA6CisgICAgICAgIChRV2ViSGlzdG9yeTo6Y2xlYXIpOgorICAgICAgICAqIEFwaS9x
d2ViaGlzdG9yeS5oOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeV9wLmg6CisgICAgICAgICog
QXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKGdDbGVhbnVwSW50ZXJmYWNl
KToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKToK
KyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKToKKyAgICAg
ICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpRV2ViSGlzdG9yeUludGVyZmFjZSk6CisgICAgICAg
ICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmg6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3Jr
aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6Cisg
ICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKFFXZWJOZXR3
b3JrSW50ZXJmYWNlUHJpdmF0ZTo6cGFyc2VEYXRhVXJsKToKKyAgICAgICAgKFFXZWJOZXR3b3Jr
SW50ZXJmYWNlOjphZGRKb2IpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVzcG9uc2VIZWFk
ZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25SZWFkeVJlYWQpOgorICAgICAg
ICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5oOgorICAgICAgICAqIEFwaS9xd2VibmV0d29y
a2ludGVyZmFjZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQ29tbWFuZEZvcldlYkFjdGlvbnMpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6Zml4ZWRDb250ZW50c1NpemUp
OgorICAgICAgICAoUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChRV2Vi
UGFnZTo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmZpbmRU
ZXh0KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Vf
cC5oOgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5oOgorICAgICAgICAqIEFwaS9x
d2Vic2VjdXJpdHlvcmlnaW4uaDoKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luX3Au
aDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5n
c1ByaXZhdGU6OlFXZWJTZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJp
dmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncyk6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OmZvbnRTaXplKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRV
cmwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXREZWZhdWx0VGV4dEVuY29kaW5nKToKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6Omljb25EYXRhYmFzZVBhdGgpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjppY29u
Rm9yVXJsKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0V2ViR3JhcGhpYyk6CisgICAgICAg
IChRV2ViU2V0dGluZ3M6OnNldEZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpm
b250RmFtaWx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6dGVzdEF0dHJpYnV0ZSk6CisgICAg
ICAgIChxdF93ZWJzZXR0aW5nc19zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOgorICAgICAg
ICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAg
ICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAoUVdlYlZpZXc6OmV2ZW50KToKKyAg
ICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOS0wNy0yMCAgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KKworICAgICAgICBbUXRdIEFkZCB0ZXN0IGZvciBsb2FkaW5nIHdlYnBhZ2Vz
Li4uCisKKyAgICAgICAgUGVyZm9ybWFuY2UgdGVzdCBmb3IgbG9hZGluZyB3ZWJwYWdlcy4gV2Fp
dCBmb3IgdGhlIGxvYWRGaW5pc2hlZAorICAgICAgICBzaWduYWwgdG8gYmUgZmlyZWQuIFRoaXMg
c2hvdWxkIGluY2x1ZGUgYSBub24gZW1wdHkgbGF5b3V0LgorCisgICAgICAgICogdGVzdHMvYmVu
Y2htYXJrcy9sb2FkaW5nL3RzdF9sb2FkaW5nLmNwcDogQWRkZWQuCisgICAgICAgICh3YWl0Rm9y
U2lnbmFsKToKKyAgICAgICAgKHRzdF9Mb2FkaW5nOjppbml0KToKKyAgICAgICAgKHRzdF9Mb2Fk
aW5nOjpjbGVhbnVwKToKKyAgICAgICAgKHRzdF9Mb2FkaW5nOjpsb2FkX2RhdGEpOgorICAgICAg
ICAodHN0X0xvYWRpbmc6OmxvYWQpOgorICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvbG9hZGlu
Zy90c3RfbG9hZGluZy5wcm86IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoKKwor
MjAwOS0wNy0yMCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRd
IEFkZCBhIHRlc3QgY2FzZSBmb3IgZHJhd2luZyBhIHNpbXBsZSB2aWV3cmVjdCB0byBhIFFQaXht
YXAKKworICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvdHN0X3BhaW50aW5nLmNw
cDogQWRkZWQuCisgICAgICAgICh3YWl0Rm9yU2lnbmFsKToKKyAgICAgICAgKHRzdF9QYWludGlu
Zzo6aW5pdCk6CisgICAgICAgICh0c3RfUGFpbnRpbmc6OmNsZWFudXApOgorICAgICAgICAodHN0
X1BhaW50aW5nOjpwYWludF9kYXRhKToKKyAgICAgICAgKHRzdF9QYWludGluZzo6cGFpbnQpOgor
ICAgICAgICAqIHRlc3RzL2JlbmNobWFya3MvcGFpbnRpbmcvdHN0X3BhaW50aW5nLnBybzogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvdGVzdHMucHJvOgorCisyMDA5LTA3LTIwICBMYXN6bG8gR29t
Ym9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBI
b2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgW1F0XSBBZGQgYW4gb3B0aW9uIGZvciBRdExhdW5j
aGVyIHRvIGJ1aWxkIHdpdGhvdXQgUXRVaVRvb2xzIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDM4CisKKyAgICAgICAgQmFzZWQg
b24gTm9yYmVydCBMZXNlcidzIHdvcmsuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3Bw
OgorICAgICAgICAoV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToKKworMjAwOS0wNy0xNyAgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAgQ29kaW5nIHN0
eWxlIGZpeGVzLgorCisgICAgICAgICogQXBpL3Fjb29raWVqYXIuY3BwOgorICAgICAgICAoUUNv
b2tpZUphclByaXZhdGU6OlFDb29raWVKYXJQcml2YXRlKToKKyAgICAgICAgKHFIYXNoKToKKyAg
ICAgICAgKFFDb29raWVKYXI6OmNvb2tpZUphcik6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpmdW5jdGlvbnMpOgorICAgICAgICAoUVdlYkVs
ZW1lbnQ6OnNjcmlwdGFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNw
cDoKKyAgICAgICAgKFFXZWJGcmFtZTo6bWV0YURhdGEpOgorICAgICAgICAoUVdlYkZyYW1lOjpz
Y3JvbGxCYXJWYWx1ZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNjcm9sbCk6CisgICAgICAgIChR
V2ViRnJhbWU6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFFXZWJGcmFtZTo6cHJpbnQpOgor
ICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChkZWNvZGVQ
ZXJjZW50RW5jb2RpbmcpOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6aW5p
dCk6CisgICAgICAgIChRV2ViTmV0d29ya1JlcXVlc3RQcml2YXRlOjpzZXRVUkwpOgorICAgICAg
ICAoUVdlYk5ldHdvcmtSZXF1ZXN0OjpRV2ViTmV0d29ya1JlcXVlc3QpOgorICAgICAgICAoUVdl
Yk5ldHdvcmtSZXF1ZXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0
OjpzZXRVcmwpOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0OjpzZXRIdHRwSGVhZGVyKToK
KyAgICAgICAgKFFXZWJOZXR3b3JrUmVxdWVzdDo6aHR0cEhlYWRlckZpZWxkKToKKyAgICAgICAg
KFFXZWJOZXR3b3JrUmVxdWVzdDo6c2V0SHR0cEhlYWRlckZpZWxkKToKKyAgICAgICAgKFFXZWJO
ZXR3b3JrUmVxdWVzdDo6c2V0UG9zdERhdGEpOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OnNl
dFJlc3BvbnNlKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpmcmFtZSk6CisgICAgICAgIChR
V2ViTmV0d29ya01hbmFnZXI6OmFkZCk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmNh
bmNlbCk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OnN0YXJ0ZWQpOgorICAgICAgICAo
UVdlYk5ldHdvcmtNYW5hZ2VyOjpkYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6
ZmluaXNoZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjphZGRIdHRwSm9iKToKKyAg
ICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6Y2FuY2VsSHR0cEpvYik6CisgICAgICAgIChRV2Vi
TmV0d29ya01hbmFnZXI6Omh0dHBDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFFXZWJOZXR3
b3JrSW50ZXJmYWNlUHJpdmF0ZTo6c2VuZEZpbGVEYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3Jr
SW50ZXJmYWNlUHJpdmF0ZTo6cGFyc2VEYXRhVXJsKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFu
YWdlcjo6ZG9Xb3JrKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpzZXREZWZhdWx0
SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJm
YWNlKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpRV2ViTmV0d29ya0ludGVyZmFj
ZSk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZTo6YWRkSm9iKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrSW50ZXJmYWNlOjpjYW5jZWxKb2IpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Oldl
YkNvcmVIdHRwKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpyZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmVIdHRwOjpzY2hlZHVsZU5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpn
ZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblJlc3BvbnNlSGVhZGVyUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVhZHlSZWFkKToKKyAgICAgICAgKFdl
YkNvcmVIdHRwOjpvblJlcXVlc3RGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25B
dXRoZW50aWNhdGlvblJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblByb3h5QXV0
aGVudGljYXRpb25SZXF1aXJlZCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpp
bnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6c2hvcnRjdXRPdmVy
cmlkZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KToKKyAgICAg
ICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRh
dGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2Vu
dEZvclVybCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Ol9xX29uTG9hZFByb2dyZXNzQ2hh
bmdlZCk6CisgICAgICAgIChRV2ViUGFnZTo6dG90YWxCeXRlcyk6CisgICAgICAgIChRV2ViUGFn
ZTo6Ynl0ZXNSZWNlaXZlZCk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpz
ZXRPYmplY3RDYWNoZUNhcGFjaXRpZXMpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6Cisg
ICAgICAgIChRV2ViVmlldzo6cGFpbnRFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6Y2hhbmdl
RXZlbnQpOgorCisyMDA5LTA3LTE3ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5l
dGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgT3ZlcndyaXRlIHRoZSBwbHVnaW4gZGlyZWN0b3JpZXMg
Zm9yIHRoZSBEUlQuCisgICAgICAgIFBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MjE1CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAocXRfZHJ0X292ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKTogT25seSBzZXQgdGhlIHBsdWdp
biBkaXJlY3RvcmllcworICAgICAgICB0byB0aGUgb25lcyBpbiB0aGUgUVRXRUJLSVRfUExVR0lO
X1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKzIwMDktMDctMTYgIFhpYW9tZWkgSmkgIDx4
amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCisK
KyAgICAgICAgVGhpcyBpcyB0aGUgMm5kIHBhcnQgb2YgZml4aW5nICJSVEw6IHRvb2x0aXAgZG9l
cyBub3QgZ2V0IGl0cyBkaXJlY3Rpb25saXR5IGZyb20gaXRzIGVsZW1lbnQncy4iCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDE4NyAKKworICAgICAg
ICBBZGQgb25lIGV4dHJhIHBhcmFtZXRlciB0byB0aGUgY2FsbGVlIG9mIEhpdFRlc3RSZXN1bHQ6
OnRpdGxlKCkgZHVlIHRvIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorCisgICAgICAgICogQXBpL3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRU
ZXN0UmVzdWx0UHJpdmF0ZSk6IEFkZCBkaXJlY3Rpb24gYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGNh
bGxlZSBvZiBIaXRUZXN0UmVzdWx0Ojp0aXRsZSgpLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpt
b3VzZURpZE1vdmVPdmVyRWxlbWVudCk6IEFkZCBkaXJlY3Rpb24gYXMgYSBwYXJhbWV0ZXIgdG8g
dGhlIGNhbGxlZSBvZiBIaXRUZXN0UmVzdWx0Ojp0aXRsZSgpLgorCisyMDA5LTA3LTE2ICBCZW5q
YW1pbiBDIE1leWVyICA8YmVuamFtaW4ubWV5ZXJAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAgQWRkIG5ldyBhY3Rpb24gdG8gcXdl
YnBhZ2UgdG8gcmVsb2FkIHdpdGhvdXQgY2FjaGUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24pOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucyk6CisgICAgICAgIChRV2Vi
UGFnZTo6dHJpZ2dlckFjdGlvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDkt
MDctMTYgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEZpeCB0b29sdGlwIGRvZXMgbm90IGdldCBpdHMg
ZGlyZWN0aW9uYWxpdHkgZnJvbSBpdHMgZWxlbWVudCdzIGRpcmVjdGlvbmFsaXR5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxODcKKworICAgICAg
ICBQZXIgbWl0eidzIHN1Z2dlc3Rpb24gaW4gY29tbWVudCAjNiwgd2hpbGUgZ2V0dGluZyB0aGUg
cGxhaW4tdGV4dCAKKyAgICAgICAgdGl0bGUsIHdlIGFsc28gZ2V0IHRoZSBkaXJlY3Rpb25hbGl0
eSBvZiB0aGUgdGl0bGUuIEhvdyB0byBoYW5kbGUgCisgICAgICAgIHRoZSBkaXJlY3Rpb25hbGl0
eSBpcyB1cCB0byBjbGllbnRzLiBDbGllbnRzIGNvdWxkIGlnbm9yZSBpdCwgCisgICAgICAgIG9y
IHVzZSBhdHRyaWJ1dGUgb3IgdW5pY29kZSBjb250cm9sIGNoYXJhY3RlcnMgdG8gZGlzcGxheSB0
aGUgdGl0bGUKKyAgICAgICAgYXMgd2hhdCB0aGV5IHdhbnQuCisKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OjpzZXRUb29sVGlwKTogQWRkIGRpcmVjdGlvbmFsaXR5IGFzIDJuZCBwYXJhbWV0ZXIg
dG8gc2V0VG9vcFRpcCgpICh3aXRob3V0IGhhbmRsaW5nIGl0IHlldCkuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDogQWRkIGRpcmVjdGlvbmFsaXR5IGFzIDJuZCBw
YXJhbWV0ZXIgdG8gc2V0VG9vbFRpcCgpLgorCisyMDA5LTA3LTE1ICBZYWVsIEFoYXJvbiAgPHlh
ZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjcy
ODUKKworICAgICAgICBXaGVuIHRoZSB1c2VyIGNsaWNrcyBhIGxpbmsgd2l0aCBhIHRhcmdldCBh
dHRyaWJ1dGUsIHRoZSBuZXdseSBjcmVhdGVkIHdpbmRvdyBzaG91bGQgYmUgdmlzaWJsZS4KKyAg
ICAgICAgTWFrZSBuZXcgd2luZG93cyBjcmVhdGVkIGluIFF0bGF1bmNoZXIgdmlzaWJsZS4KKwor
ICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChXZWJQYWdlOjpjcmVhdGVX
aW5kb3cpOgorCisyMDA5LTA3LTE0ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmls
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjayBSdXNpbi4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5ODMKKworICAgICAgICBUaGUg
ZGVmYXVsdCBjb25zdHJ1Y3RlZCB2YWx1ZXMgZm9yIFFTaXplIGFuZCBXZWJDb3JlOjpJbnRTaXpl
IGFyZSBkaWZmZXJlbnQuICBUaGUgZm9ybWVyCisgICAgICAgIHByb2R1Y2VzIGFuIGludmFsaWQg
c2l6ZSB3aGVyZWFzIHRoZSBsYXR0ZXIgcHJvZHVjZXMgYSBzaXplIG9mIHplcm8uICBUaGlzIHdh
cyBjYXVzaW5nCisgICAgICAgIGEgbGF5b3V0IHRvIGJlIHRyaWdnZXJlZCB3aGVuIGNvbnN0cnVj
dGluZyBhIHZpZXcgYW5kIGFuIGFzc2VydCB0byBiZSBoaXQuICBUaGlzIHBhdGNoIGZpeGVzCisg
ICAgICAgIHRoZSBjcmFzaCBieSB0YWtpbmcgY2FyZSBub3QgdG8gY2F1c2UgYW4gdW5uZWNlc3Nh
cnkgbGF5b3V0IHRyaWdnZXJlZCBieSBTY3JvbGxWaWV3OjpzZXRGaXhlZExheW91dFNpemUuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UpOgorCisyMDA5LTA3LTEzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAg
ICAgIEZpeCBxZG9jIHdhcm5pbmdzIGZvciBRV2ViUGFnZTo6c2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdCgpIGFuZCBtZW50aW9uCisgICAgICAgIGhvdyB0byByZS1pbXBsZW1lbnQgaXQuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisyMDA5LTA3LTEzICBTaW1vbiBIYXVzbWFubiAg
PGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlh
dC4KKworICAgICAgICBGaXggY3Jhc2ggd2l0aCBwbHVnaW5zIHdoZW4gdGhlIHBsdWdpbiBzdHJl
YW0gaXMgY2FuY2VsbGVkLgorCisgICAgICAgIFNpbWlsYXIgdG8gcjI2NjY3IGhhbmRsZSB0aGUg
Y2FzZSB3aGVyZSBkaWRSZWNlaXZlUmVzcG9uc2Ugb24gdGhlCisgICAgICAgIHBsdWdpbiB2aWV3
IHJlc3VsdHMgaW4gZmFpbHVyZSB0byBzZXQgdXAgdGhlIHN0cmVhbSBhbmQKKyAgICAgICAgc2V0
TWFpbkRvY3VtZW50RXJyb3IgYmVpbmcgY2FsbGVkIGluc3RlYWQuIFRoaXMgd2lsbCBzZXQgdGhl
CisgICAgICAgIG1fcGx1Z2luVmlldyBiYWNrIHRvIDAgYW5kIHdlIG5lZWQgY2hlY2sgZm9yIGl0
IGJlZm9yZSBjYWxsaW5nCisgICAgICAgIGRpZFJlY2VpdmVEYXRhLgorCisgICAgICAgIFRoaXMg
d2FzIHRyaWdnZXJlZCBieSBjb25zZWN1dGl2ZSBleGVjdXRpb24gb2YKKyAgICAgICAgTGF5b3V0
VGVzdHMvcGx1Z2lucy9yZXR1cm4tZXJyb3ItZnJvbS1uZXctc3RyZWFtLWNhbGxiYWNrLWluLWZ1
bGwtZnJhbWUtcGx1Z2luLmh0bWwKKyAgICAgICAgZm9sbG93ZWQgYnkgTGF5b3V0VGVzdHMvc2Ny
b2xsYmFycy9zY3JvbGxiYXItY3Jhc2gtb24tcmVmcmVzaC5odG1sCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1pdHRlZExvYWQpOgorCisyMDA5LTA3LTEzICBTaW1vbiBI
YXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJp
eWEgSGlkYXlhdC4KKworICAgICAgICBBZGRlZCBRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFi
YXNlcywgYXMgYSB3YXkgdG8gZGVsZXRlIGFsbAorICAgICAgICBkYXRhYmFzZXMgZnJvbSB0aGUg
b2ZmbGluZSBzdG9yYWdlIHBhdGguCisKKyAgICAgICAgVXNlZCBieSB0aGUgUXQgRFJULgorCisg
ICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OnJl
bW92ZUFsbERhdGFiYXNlcyk6CisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5oOgorCisyMDA5
LTA3LTEzICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBBZGRlZCBsb2FkU3RhcnRlZCgp
IGFuZCBsb2FkRmluaXNoZWQoKSBzaWduYWxzIHRvIFFXZWJGcmFtZSwKKyAgICAgICAgdG8gYWxs
b3cgbG9hZCB0cmFja2luZyBvZiBpbmRpdmlkdWFsIGZyYW1lcywgYXMgb3Bwb3NlZCB0bworICAg
ICAgICBRV2ViUGFnZSdzIGxvYWRTdGFydGVkL2xvYWRGaW5pc2hlZCBzaWduYWxzIHRoYXQgYXJl
IGVtaXR0ZWQKKyAgICAgICAgd2hlbmV2ZXIgX2FueV8gY2hpbGQgZnJhbWUgbG9hZHMvZmluaXNo
ZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDogRG9jdW1lbnQgbmV3IHNpZ25hbHMu
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOiBBZGQgbmV3IHNpZ25hbHMuCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRGcmFtZSk6IENvbm5lY3QgbmV3IHNpZ25hbHMuCisK
KzIwMDktMDctMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAgIEFkZCBob29rcyBmb3Ig
dGhlIEdDQ29udHJvbGxlciBKYXZhU2NyaXB0IGludGVyZmFjZSBuZWVkZWQgYnkgdGhlCisgICAg
ICAgIFF0IERSVC4KKworICAgICAgICBGaXhlZCBzb3J0IG9yZGVyIG9mIGluY2x1ZGVzIGluIHF3
ZWJmcmFtZS5jcHAuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHF0
X2RydF9qYXZhU2NyaXB0T2JqZWN0c0NvdW50KToKKyAgICAgICAgKHF0X2RydF9nYXJiYWdlQ29s
bGVjdG9yX2NvbGxlY3QpOgorICAgICAgICAocXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVj
dE9uQWx0ZXJuYXRlVGhyZWFkKToKKworMjAwOS0wNy0xMyAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisK
KyAgICAgICAgQWRkIGhvb2tzIGZvciB0aGUgR0NDb250cm9sbGVyIEphdmFTY3JpcHQgaW50ZXJm
YWNlIG5lZWRlZCBieSB0aGUKKyAgICAgICAgUXQgRFJULgorCisgICAgICAgIEZpeGVkIHNvcnQg
b3JkZXIgb2YgaW5jbHVkZXMgaW4gcXdlYmZyYW1lLmNwcC4KKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAocXRfZHJ0X2phdmFTY3JpcHRPYmplY3RzQ291bnQpOgorICAg
ICAgICAocXRfZHJ0X2dhcmJhZ2VDb2xsZWN0b3JfY29sbGVjdCk6CisgICAgICAgIChxdF9kcnRf
Z2FyYmFnZUNvbGxlY3Rvcl9jb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQpOgorCisyMDA5LTA3LTEy
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AZ21haWwuY29tPgorCisgICAgICAgIFNwZWN1bGF0
aXZlIGJ1aWxkIGZpeCBhZnRlciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80NTc4
Ni4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDA5LTA3LTEwICBZYWVs
IEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBI
b2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3MTM2CisKKyAgICAgICAgRml4IGEgYnVnIHdoZXJlIHdlYmtpdCBoYW5ncyB3
aGVuIGV4ZWN1dGluZyBpbmZpbml0ZSBKYXZhU2NyaXB0IGxvb3AuCisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNob3VsZEludGVycnVwdEphdmFTY3Jp
cHQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpz
aG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoSlNUZXN0UGFnZTo6SlNUZXN0UGFnZSk6CisgICAgICAg
IChKU1Rlc3RQYWdlOjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KToKKyAgICAgICAgKHRzdF9R
V2ViUGFnZTo6aW5maW5pdGVMb29wSlMpOgorCisyMDA5LTA3LTEwICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIg
RnJleXRoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI3MTA4CisKKyAgICAgICAgRml4IGNyYXNoIHdoZW4gaW4gZnJhbWUgdHJlZSBvZiBhIG5l
dyBmcmFtZSBiZWZvcmUgdGhlIG5ldyBmcmFtZQorICAgICAgICBoYXMgYmVlbiBpbnN0YWxsZWQg
aW4gdGhlIGZyYW1lIHRyZWUsIHNpbWlsYXIgdG8gcjM1MDg4LgorCisgICAgICAgIEFmdGVyIGNh
bGxpbmcgRnJhbWU6OmluaXQoKSB0aGUgZnJhbWUgaXQgbWF5IGhhdmUgYmVlbiByZW1vdmVkIGZy
b20gdGhlCisgICAgICAgIGZyYW1lIHRyZWUgYWdhaW4gdGhyb3VnaCBKYXZhU2NyaXB0LiBEZXRl
Y3QgdGhpcyBieSBjaGVja2luZyB0aGUgcGFnZSgpCisgICAgICAgIGFmdGVyd2FyZHMuCisKKyAg
ICAgICAgVG8gbWFrZSB0aGlzIGNoZWNrIHNhZmUgdGhlIEZyYW1lOjppbml0KCkgY29kZSB3YXMg
bW92ZWQgaW50bworICAgICAgICBRV2ViRnJhbWVEYXRhJ3MgY29uc3RydWN0b3IsIHdoZXJlIGEg
UmVmUHRyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBmcmFtZS4KKyAgICAgICAgQWZ0ZXIgdGhl
IGNoZWNrIGJhY2sgaW4gRnJhbWVMb2FkZXJDbGllbnRRdCB3ZSB3b3VsZCBob2xkIHRoZSBzaW5n
bGUKKyAgICAgICAgcmVmZXJlbmNlIGxlZnQgYW5kIGFmdGVyIHJlbGVhc2UoKSB0aGUgZnJhbWUs
IGl0cyBmcmFtZSBsb2FkZXIsIGl0cworICAgICAgICBjbGllbnQgYXMgd2VsbCBhcyB0aGUgUVdl
YkZyYW1lIHNob3VsZCBoYXZlIGRpc2FwcGVhcmVkIHRoZW4uCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOiBPbmx5IGNhbGwg
RnJhbWU6OmluaXQgaGVyZSwgdGhlIHJlc3QgaXMKKyAgICAgICAgZG9uZSBpbiBRV2ViRnJhbWVE
YXRhJ3MgY29uc3RydWN0b3IuCisgICAgICAgIChRV2ViRnJhbWU6OlFXZWJGcmFtZSk6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6IEFkanVzdCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKFFX
ZWJGcmFtZURhdGE6OlFXZWJGcmFtZURhdGEpOiBDcmVhdGUgdGhlIEZyYW1lIGhlcmUuCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRl
TWFpbkZyYW1lKTogQWRqdXN0IGFuZCBzaW1wbGlmeQorICAgICAgICB0byBuZXcgUVdlYkZyYW1l
IGNvbnN0cnVjdG9yLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJh
bWUpOiBBZGp1c3QgdG8KKyAgICAgICAgbmV3IFFXZWJGcmFtZSBjb25zdHJ1Y3Rpb24gdXNpbmcg
UVdlYkZyYW1lRGF0YSBhbmQgYWRkIHRoZQorICAgICAgICBjaGVjayBsaWtlIGluIHIzNTA4OC4K
KworMjAwOS0wNy0wOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KKworICAgICAgICBNYWtlIFdpZGdldCBSZWZDb3VudGVk
IHRvIGZpeDoKKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAzODgzMT4gUkVHUkVTU0lPTiAo
VE9UKTogSW4gTWFpbCwgYSBjcmFzaCBvY2N1cnMgCisgICAgICAgIGF0IFdlYkNvcmU6OldpZGdl
dDo6YWZ0ZXJNb3VzZURvd24oKSBhZnRlciBjbGlja2luZyBUbyBEbydzIGNsb3NlIAorICAgICAg
ICBib3gKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5Nzg4MDQ+IFdFUiAjMTY6IFJlcHJvIEFj
Y2VzcyBWaW9sYXRpb24gaW4gCisgICAgICAgIFdlYkNvcmU6OlBsdWdpblZpZXc6OmJpbmRpbmdJ
bnN0YW5jZSAoMTMxMDE3ODAyMykKKyAgICAgICAgLWFuZC0KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzY5OTEyNTE+IFdFUiAjMTM6IENyYXNoIGluIFdlYktpdCEKKyAgICAgICAgV2ViQ29yZTo6
UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QrMjAzICgxMzExNDYxMTY5KSAKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwOS0wNy0wOCAgUHJh
ZGVlcHRvIEJoYXR0YWNoYXJ5YSAgPHByYWRlZXB0b0BrZGUub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOiBSZW1vdmVkIHRoZSBzbG90IHNs
b3RDYWxsUG9saWN5RnVuY3Rpb24oKS4KKworMjAwOS0wNy0wOCAgU2ltb24gSGF1c21hbm4gIDxo
YXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Ri
w7guCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3
MDgwCisKKyAgICAgICAgRml4IERSVCBpbnN0YWJpbGl0eSBpc3N1ZXMgd2l0aCBmYXN0L2xvYWRl
ci9zdWJtaXQtZm9ybS13aGlsZS1wYXJzaW5nLTIuaHRtbAorCisgICAgICAgIFdoZW4gdGhlIGZv
cm0gaXMgc3VibWl0dGVkIHdlIGNhbGwgdGhlIHBvbGljeSBmdW5jdGlvbiBpbiB0aGUgZnJhbWUK
KyAgICAgICAgbG9hZGVyIGRlbGF5ZWQgd2l0aCBhIHF1ZXVlZCBjb25uZWN0aW9uLiBUaGF0IHF1
ZXVlZCBjb25uZWN0aW9uCisgICAgICAgIHNvbWV0aW1lcyBpbnRlcmZlcmVzIHdpdGggdGhlIGph
dmFzY3JpcHQgdGltZW91dCBzZXQgaW4gdGhlIHRlc3RjYXNlLgorCisgICAgICAgIEVsaW1pbmF0
ZSB0aGUgZW50aXJlIGRlbGF5ZWQgcG9saWN5IGZ1bmN0aW9uIG1lY2hhbmlzbSBhbmQgaW5zdGVh
ZCBhbHdheXMKKyAgICAgICAgY2FsbCBiYWNrIGRpcmVjdGx5LCBsaWtlIGluIHRoZSBvdGhlciBw
b3J0cy4gSW4gbW9zdCBvdGhlciBwbGFjZXMgd2UgY2FsbGVkCisgICAgICAgIHRoZSBzbG90IGRp
cmVjdGx5IGFueXdheS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6RnJhbWVM
b2FkZXJDbGllbnRRdCk6IFJlbW92ZSBtX3BvbGljeUZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbFBvbGljeUZ1bmN0aW9uKTogQ2FsbCB0aGUgcG9s
aWN5IGZ1bmN0aW9uIGRpcmVjdGx5IGluc3RlYWQKKyAgICAgICAgb2YgZW1pdHRpbmcgdGhlIHF1
ZXVlZCBzaWduYWwuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5j
ZWxQb2xpY3lDaGVjayk6IENhbGwgY2FsbFBvbGljeUZ1bmN0aW9uIGRpcmVjdGx5LgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDogUmVtb3ZlIG1fcG9saWN5RnVuY3Rpb24gYXMg
d2VsbCBhcyB0aGUgYXNzb2NpYXRlZAorICAgICAgICBzaWduYWwuCisKKzIwMDktMDctMDcgIFNp
bW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgQWRkIFF0IERSVCBob29rIGZvciBjbGVhcmlu
ZyB0aGUgZnJhbWUgbmFtZS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAocXRfZHJ0X2NsZWFyRnJhbWVOYW1lKToKKworMjAwOS0wNy0wNSAgU2ltb24gSGF1c21hbm4g
IDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5
dGhlci4KKworICAgICAgICBGaXggdHdvIHFkb2Mgd2FybmluZ3MuCisKKyAgICAgICAgQWRkZWQg
bWlzc2luZyBccHJvcGVydHkgZm9yIFFXZWJGcmFtZTo6aGFzRm9jdXMgYW5kIGFkZGVkIFxhCisg
ICAgICAgIHRhZyBmb3IgcG9zIG9mIFFXZWJQYWdlOjpmcmFtZUF0LgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOS0wNy0w
NCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBVc2UgdGhlIHJlY2Vu
dGx5IGludHJvZHVjZWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkCisKKyAgICAgICAgVXNl
IHRoZSByZWNlbnRseSBpbnRyb2R1Y2VkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZAorICAg
ICAgICBpbiB0aGUgUXQgcGxhdGZvcm0uIFRoZSBTZWxlY3Rpb25Db250cm9sbGVyIHdpbGwgYmUg
dXBkYXRlZAorICAgICAgICBmcm9tIHdpdGhpbiB0aGUgRm9jdXNDb250cm9sbGVyIG5vdy4KKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZv
Y3VzSW5FdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZvY3VzT3V0RXZlbnQpOgor
CisyMDA5LTA3LTAyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAgIEltcHJvdmUg
ZG9jdW1lbnRhdGlvbiBvZiBRV2ViRnJhbWU6OnNldEZvY3VzIGFuZCBoYXNGb2N1cygpCisgICAg
ICAgIEFkZGVkIG1pc3NpbmcgUV9QUk9QRVJUWSBmb3IgUVdlYkZyYW1lOjpoYXNGb2N1cy4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOiBDbGFyaWZ5IHRoZSBkb2NzLgorICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuaDogYWRkIFFfUFJPUEVSVFkoZm9jdXMpLgorCisyMDA5LTA3LTAyICBK
b2UgTGlnbWFuICA8am9zZXBoLmxpZ21hbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQnVnIDI2ODU1OiBbUXRdIE5ldyBtZXRob2Rz
IGZvciBRV2ViRnJhbWUgdG8gY2hlY2sgYW5kIHNldCBmb2N1cy4KKworICAgICAgICBBZGRlZCBu
ZXcgcHVibGljIG1ldGhvZHMgUVdlYkZyYW1lOjpoYXNGb2N1cygpIGFuZCBRV2ViRnJhbWU6OnNl
dEZvY3VzKCkKKyAgICAgICAgQWRkZWQgYXV0byB0ZXN0LgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6Omhhc0ZvY3VzKToKKyAgICAgICAgKFFXZWJG
cmFtZTo6c2V0Rm9jdXMpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiB0
ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMDctMDEgIFJvYmVydCBI
b2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkuCisgICAgICAgIAorICAgICAgICBGaXggUXQgc2VnZmF1bHQgd2hlbiBqYXZhc2NyaXB0IGRp
c2FibGVkLgorICAgICAgICBJZiBjbGllbnRzIGNhbGwgYWRkVG9KYXZhU2NyaXB0V2luZG93T2Jq
ZWN0IGV2ZW4gdGhvdWdoIEphdmFzY3JpcHRFbmFibGVkIGlzIGZhbHNlCisgICAgICAgIHdlYmtp
dCB3aWxsIHNlZ2ZhdWx0IG9uIHRoZSBhc3NlcnQ6CisgICAgICAgICAgQVNTRVJUSU9OIEZBSUxF
RDogX3Jvb3RPYmplY3QKKyAgICAgICAgICAoLi4vLi4vLi4vV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZS5jcHA6NTIKKyAgICAgICAgICBKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6SW5zdGFuY2UoV1RG
OjpQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+KSkKKyAgICAgICAgRml4IGlz
IHRvIGVuc3VyZSBKYXZhU2NyaXB0IGlzIGVuYWJsZWQgd2hlbiBjbGllbnQgY2FsbHMgYWRkVG9K
YXZhU2NyaXB0V2luZG93T2JqZWN0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjkwNgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisKKzIwMDkt
MDctMDEgIEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBNb3ZlIHNvbWUgQVBJIGhl
YWRlcnMgZnJvbSBXZWJDb3JlLnBybyB0byBoZWFkZXJzLnByaSBzbyB0aGF0IHRoZXkKKyAgICAg
ICAgZ2V0IGluc3RhbGxlZCB3aGVuIHJ1bm5pbmcgbWFrZSBpbnN0YWxsIGZyb20gdGhlIGJ1aWxk
IGRpcmVjdG9yeS4KKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToKKworMjAwOS0wNy0wMSAg
QmFsYXpzIEtlbGVtZW4gIDxrZWxlbWVuLmJhbGF6cy4zQHN0dWQudS1zemVnZWQuaHU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRml4ZWQgcm9ib3Rp
emVkIFF0TGF1bmNoZXIgdG8gd29yayB3aGVuIHRoZXJlIGlzIG5vIGluZGV4Lmh0bWwgaW4gdGhl
IHVzZXIncyBob21lLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAg
KG1haW4pOgorCisyMDA5LTA2LTMwICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorICAgICAgICAKKyAgICAg
ICAgUmVuYW1lZCBzY3JvbGxiYXJVbmRlclBvaW50IHRvIHNjcm9sbGJhckF0UG9pbnQgdG8gZm9s
bG93IGNvbnZlbnRpb25zLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlOjpzd2FsbG93Q29udGV4dE1lbnVFdmVudCk6CisKKzIwMDktMDYtMzAgIEpvZSBM
aWdtYW4gIDxqb3NlcGgubGlnbWFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIFRyZWF0LgorCisgICAgICAgIEJ1ZyAyNjQyMjogW1F0XSBRV2ViUGFnZVByaXZhdGU6OmZy
YW1lQXQgY2FsY3VsYXRlcyB3cm9uZyBmcmFtZQorCisgICAgICAgIEFkZGVkIGEgcHVibGljIG1l
dGhvZCBRV2ViUGFnZTo6ZnJhbWVBdAorICAgICAgICBSZW1vdmVkIFFXZWJQYWdlUHJpdmF0ZTo6
ZnJhbWVBdCwgd2hpY2ggY2FsY3VhdGVkIHRoZSB3cm9uZyBmcmFtZQorICAgICAgICBNb2RpZmll
ZCBRV2ViUGFnZTo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQgdG8gdXNlIHRoZSBuZXcgZnJhbWVB
dCBtZXRob2QKKyAgICAgICAgTmV3IHRlc3QgY2FzZSBmb3IgZnJhbWVBdCBhZGRlZCB0byB0c3Rf
cXdlYnBhZ2UuY3BwCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2U6OmZyYW1lQXQpOgorICAgICAgICAoUVdlYlBhZ2U6OnN3YWxsb3dDb250ZXh0TWVudUV2
ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Vf
cC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL2ZyYW1ldGVzdC9pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvZnJhbWV0ZXN0L2lmcmFtZTIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvZnJhbWV0ZXN0L2lmcmFtZTMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KGZyYW1lQXRIZWxwZXIpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpmcmFtZUF0KToKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UucXJjOgorCisyMDA5LTA2LTMwICBKYWt1
YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZCBRV2ViRnJhbWU6OmJhc2VVcmwoKSBmdW5jdGlv
biB0aGF0IGV4cG9zZXMgdGhlIGJhc2UgVVJMIG9mIGEgZnJhbWUuCisgICAgICAgIEF1dG90ZXN0
cyBpbmNsdWRlZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjpiYXNlVXJsKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICog
dGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDA5LTA2LTI5ICBTaW1vbiBI
YXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBGaXggdGhlIFF0
IGJ1aWxkLCBhZGQgbWlzc2luZyBpc1NwZWFraW5nKCkgaW1wbGVtZW50YXRpb24gdG8KKyAgICAg
ICAgQ29udGV4dE1lbnVDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0
TWVudUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6
OmlzU3BlYWtpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
UXQuaDoKKworMjAwOS0wNi0yOCAgU3JpcmFtIFlhZGF2YWxsaSAgPHNyaXJhbS55YWRhdmFsbGlA
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAg
IFtRdF0gRml4IGJ1aWxkIGJyZWFrIGZvciBRdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3NzkKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZTo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQpOgorCisyMDA5LTA2
LTI3ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAg
ICBCdWlsZCBmaXggZm9yIFF0IHVuZGVyIFdpbmRvd3MuCisKKyAgICAgICAgKiBBcGkvcXdlYmhp
c3RvcnkuaDogVXNlIGNvbnNpc3RlbnQgZXhwb3J0IGxpbmthZ2UgZm9yIHRoZSBkYXRhc3RyZWFt
IG9wZXJhdG9ycy4KKworMjAwOS0wNi0yNiAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorICAgICAgICAK
KyAgICAgICAgQ2hhbmdlZCBjYWxsIG9mIHNjcm9sbGJhclVuZGVyTW91c2UgdG8gc2Nyb2xsYmFy
VW5kZXJQb2ludCB0byBtYXRjaCBuZXcgQVBJLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlOjpzd2FsbG93Q29udGV4dE1lbnVFdmVudCk6CisKKzIwMDkt
MDYtMjYgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHNhdmluZyBhbmQgbG9hZGluZyBvZiBRV2ViSGlzdG9yeSB0byBhbmQgZnJvbSBhIFFCeXRl
QXJyYXkuCisKKyAgICAgICAgVGhpcyBpbmNsdWRlcyBzdHJlYW1pbmcgb3BlcmF0b3JzIGZvciBR
V2ViSGlzdG9yeS4gZm9yIGNvbnZlbmllbmNlLgorCisgICAgICAgIE5ldyBhdXRvdGVzdHMgdGhh
dCB0ZXN0IFFXZWJIaXN0b3J5IGFuZCBRV2ViSGlzdG9yeUl0ZW0gc2VyaWFsaXphdGlvbi4KKwor
ICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgIChRV2ViSGlzdG9yeTo6cmVz
dG9yZVN0YXRlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5OjpzYXZlU3RhdGUpOgorICAgICAgICAo
b3BlcmF0b3I8PCk6CisgICAgICAgIChvcGVyYXRvcj4+KToKKyAgICAgICAgKiBBcGkvcXdlYmhp
c3RvcnkuaDoKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnlfcC5oOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJoaXN0b3J5L3RzdF9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgICh0c3RfUVdlYkhpc3Rv
cnk6Oik6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6OmluaXQpOgorICAgICAgICAodHN0X1FX
ZWJIaXN0b3J5Ojp0aXRsZSk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6OmNvdW50KToKKyAg
ICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6YmFjayk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6
OmZvcndhcmQpOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5OjppdGVtQXQpOgorICAgICAgICAo
dHN0X1FXZWJIaXN0b3J5Ojpnb1RvSXRlbSk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6Oml0
ZW1zKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6c2VyaWFsaXplXzEpOgorICAgICAgICAo
dHN0X1FXZWJIaXN0b3J5OjpzZXJpYWxpemVfMik6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6
OnNlcmlhbGl6ZV8zKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6c2F2ZUFuZFJlc3RvcmVf
MSk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6OnNhdmVBbmRSZXN0b3JlXzIpOgorICAgICAg
ICAodHN0X1FXZWJIaXN0b3J5OjpzYXZlQW5kUmVzdG9yZV8zKToKKworMjAwOS0wNi0yNiAgSmVk
cnplaiBOb3dhY2tpICA8amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBGaXggdGhlIGJlaGF2aW91ciBvZiBR
V2ViSGlzdG9yeTo6aXRlbUF0IHRvIGludGVycHJldCB0aGUgc3BlY2lmaWVkIGluZGV4IGFzIGFi
c29sdXRlIGluZGV4LgorCisgICAgICAgIFJldHVybnMgYW4gaW52YWxpZCBRV2ViSGlzdG9yeUl0
ZW0gaWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZS4KKworICAgICAgICAqIEFwaS9xd2ViaGlz
dG9yeS5jcHA6CisgICAgICAgIChRV2ViSGlzdG9yeTo6aXRlbUF0KToKKyAgICAgICAgKiB0ZXN0
cy9xd2ViaGlzdG9yeS90c3RfcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAodHN0X1FXZWJIaXN0
b3J5OjppdGVtQXQpOgorCisyMDA5LTA2LTI2ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5v
d2Fja2lAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgor
CisgICAgICAgIEFkZGVkIGEgZmV3IGF1dG90ZXN0IHRvIFFXZWJIaXN0b3J5LgorCisgICAgICAg
ICogdGVzdHMvcXdlYmhpc3RvcnkvZGF0YS9wYWdlMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9xd2ViaGlzdG9yeS9kYXRhL3BhZ2UyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L3F3ZWJoaXN0b3J5L2RhdGEvcGFnZTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdl
Ymhpc3RvcnkvZGF0YS9wYWdlNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlz
dG9yeS9kYXRhL3BhZ2U1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJoaXN0b3J5
L2RhdGEvcGFnZTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnkvcXdl
Ymhpc3RvcnkucHJvOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2ViaGlzdG9yeS90c3RfcXdl
Ymhpc3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6KToKKyAgICAg
ICAgKHRzdF9RV2ViSGlzdG9yeTo6dHN0X1FXZWJIaXN0b3J5KToKKyAgICAgICAgKHRzdF9RV2Vi
SGlzdG9yeTo6fnRzdF9RV2ViSGlzdG9yeSk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6Omlu
aXQpOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5OjpjbGVhbnVwKToKKyAgICAgICAgKHRzdF9R
V2ViSGlzdG9yeTo6dGl0bGUpOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5Ojpjb3VudCk6Cisg
ICAgICAgICh0c3RfUVdlYkhpc3Rvcnk6OmJhY2spOgorICAgICAgICAodHN0X1FXZWJIaXN0b3J5
Ojpmb3J3YXJkKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeTo6Z29Ub0l0ZW0pOgorICAgICAg
ICAodHN0X1FXZWJIaXN0b3J5OjppdGVtcyk6CisgICAgICAgICogdGVzdHMvcXdlYmhpc3Rvcnkv
dHN0X3F3ZWJoaXN0b3J5LnFyYzogQWRkZWQuCisgICAgICAgICogdGVzdHMvdGVzdHMucHJvOgor
CisyMDA5LTA2LTI2ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZpeCBz
dXBwb3J0IGZvciBkb2N1bWVudGluZyBmdW5jdGlvbnMgcHJlZml4ZWQgd2l0aCBRV0VCS0lUX0VY
UE9SVAorCisgICAgICAgIEFkZCBRV0VCS0lUX0VYUE9SVCB0byB0aGUgbGlzdCBvZiBtYWNyb3Mg
dG8gaWdub3JlIGJ5IHFkb2MuCisKKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LnFkb2Njb25mOgor
CisyMDA5LTA2LTI2ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bi56aGFuZ0Bub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgQnVnIDIwMzAzOiBb
UXRdIEtleSBldmVudHMgYXJlIG5vdCB3b3JraW5nIGluIGZyYW1lcy4KKworICAgICAgICBTZW5k
IHNjcm9sbGluZyBldmVudHMgdG8gY3VycmVudCBmb2N1c2VkIGZyYW1lLCBidWJibGUgdGhlIGV2
ZW50CisgICAgICAgIHVwIHRvIHBhcmVudCBmcmFtZSBpZiBpdCBpcyBub3QgaGFuZGxlZC4gIFVz
ZSBFdmVudEhhbmRsZXIncyBuZXcKKyAgICAgICAgc2hhcmVkIHNjcm9sbGluZyBjb2RlLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5
UHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwOS0wNi0yNSAgSmFrdWIgV2llY3pv
cmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0
LgorCisgICAgICAgIEFkZCBoaWdobGlnaHQgZnVuY3Rpb25hbGl0eSB0byB0aGUgUVdlYlBhZ2U6
OmZpbmRUZXh0KCkgbWV0aG9kLiBJbnRyb2R1Y2VkIGlzCisgICAgICAgIG5ldyBIaWdobGlnaHRB
bGxPY2N1cnJlbmNlcyBmbGFnIHdoaWNoIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gd2lsbCBtYWtl
IGl0IG1hcmsKKyAgICAgICAgYWxsIGV4aXN0aW5nIG9jY3VycmVuY2VzIG9mIHNwZWNpZmllZCBz
dHJpbmcgaW4gdGhlIHBhZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OmZpbmRUZXh0KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA5LTA2LTE5ICBEYW5pZWwgVGVza2UgPHF0LWlu
Zm9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIFJlbW92ZSB3YXJuaW5ncyBmb3IgUVN0cmluZygpIGNvbnN0cnVjdGlvbnMgZnJvbSBj
b25zdCBjaGFyICoKKworICAgICAgICBCeSBleHBsaWNpdGx5IHdyYXBwaW5nIGl0IHdpdGggUUxh
dGluMVN0cmluZygpIC8gUUxhdGluMUNoYXIoKQorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50
LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpjbGFzc2VzKTogVXNlIFFMYXRpbjFTdHJpbmcu
CisgICAgICAgIChRV2ViRWxlbWVudDo6YWRkQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKFFXZWJF
bGVtZW50OjpyZW1vdmVDbGFzcyk6IERpdHRvLgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnRvZ2ds
ZUNsYXNzKTogRGl0dG8uCisKKzIwMDktMDYtMTggIEZyaWVkZW1hbm4gS2xlaW50ICA8RnJpZWRl
bWFubi5LbGVpbnRAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIEZpeGVkIE1pbkdXIGNvbXBpbGF0aW9uLgorCisgICAgICAgICogQXBp
L3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpldmFsdWF0ZVNjcmlwdCk6
CisKKzIwMDktMDYtMTggIE1hcmt1cyBHb2V0eiA8TWFya3VzLkdvZXR6QG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFuLgorCisgICAgICAgIENsYXJpZnkgaW4g
ZG9jcyBob3cgdG8gY29tcGlsZSB3aXRoIGRlYnVnIGluZm9ybWF0aW9uLgorCisgICAgICAgICog
ZG9jcy9xdHdlYmtpdC5xZG9jOgorCisyMDA5LTA2LTE3ICBNYXJrdXMgR29ldHogPE1hcmt1cy5H
b2V0ekBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisK
KyAgICAgICAgUVdlYlBhZ2U6IERvbid0IGNhbGwgc3VwcG9ydHNTc2woKQorCisgICAgICAgIFRo
aXMgc3RvcHMgUVdlYlBhZ2UgZnJvbSBsb2FkaW5nIHRoZSBPcGVuU1NMIGxpYnMsCisgICAgICAg
IGNlcnRpZmljYXRlcyBldGMuIHdoZW4gdGhleSBhcmUgbm90IG5lZWRlZCBmb3IgdGhlIG5vbi1I
VFRQUyBjYXNlLgorCisgICAgICAgIExvYWRpbmcgdGhlIFNTTCBsaWJyYXJpZXMgY2FuIGJlIGEg
dmVyeSBzbG93IG9wZXJhdGlvbi4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKworMjAwOS0wNi0xNiAgRGF2aWQgQm9k
ZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIERvYzogRml4ZWQgUVdlYlBhZ2U6OmZvcndhcmRVbnN1cHBv
cnRlZENvbnRlbnQgZG9jdW1lbnRhdGlvbiBhbmQgYWRkZWQKKyAgICAgICAgbW9yZSBpbmZvcm1h
dGlvbiBhYm91dCBXZWIgcGx1Z2lucy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogZG9jcy9xdHdlYmtpdC5x
ZG9jOgorCisyMDA5LTA2LTE2ICBNb3J0ZW4gRW5ndm9sZHNlbiAgPG1vcnRlbi5lbmd2b2xkc2Vu
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAg
ICAgIENsZWFyaWZ5aW5nIFFXZWJGcmFtZSBkb2NzCisKKyAgICAgICAgQWRkaW5nIGRvY3MgdG8g
dG9IdG1sKCkgYW5kIHRvUGxhaW5UZXh0KCkKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorCisyMDA5LTA2LTE1ICBCZW5qYW1pbiBDIE1leWVyICA8YmVuamFtaW4ubWV5ZXJAdG9yY2ht
b2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAg
U3VwcG9ydCB0aGUgYmFjay9mb3J3YXJkL3N0b3AvcmVmcmVzaCBtdWx0aW1lZGlhIGtleXMgYW5k
IGFjY2VwdCB0aGUKKyAgICAgICAgZXZlbnQgd2hlbiBoYW5kbGluZyBiYWNrc3BhY2UgYW5kIHNo
aWZ0IGJhY2tzcGFjZSBhcyB3ZSBzaG91bGQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjprZXlQcmVzc0V2ZW50KToKKworMjAwOS0wNi0x
NSAgQW5kcmUgUGVkcmFsaG8gIDxhbmRyZS5wZWRyYWxob0BvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MzUxCisgICAgICAgIFJlbW92ZSBib29sIFFXZWJIaXRU
ZXN0UmVzdWx0Ojppc1Njcm9sbEJhcigpIGNvbnN0IGFuZCBtYWtlIHN1cmUgYSBudWxsIFFXZWJI
aXRUZXN0UmVzdWx0IGlzIHJldHVybmVkIGluc3RlYWQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQpOgorICAgICAgICAq
IEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyk6CisKKzIwMDktMDYtMTUg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gVHJlYXQuCisKKyAgICAgICAgRml4IHRoZSBsb2dpYyBmb3IgZGlzYWJs
aW5nIHRoZSBmaXhlZCBsYXlvdXQgZmVhdHVyZSwgd2hlbiBhbiBpbnZhbGlkCisgICAgICAgIFFT
aXplIGlzIHNldC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0Rml4ZWRDb250ZW50c1NpemUpOgorCisyMDA5LTA2LTEzICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQ5Mgor
CisgICAgICAgIE1vdmUgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsIGZyb20gRnJhbWVMb2FkZXIg
dG8gU2VjdXJpdHlPcmlnaW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KToKKworMjAwOS0wNi0xMCAgQW50
b25pbyBHb21lcyAgIDxhbnRvbmlvLmdvbWVzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBEb2N1bWVudGVkIFJlc29sdmVSdWxl
IGFuZCBTdHlsZVByaW9yaXR5IGVudW0gdmFsdWVzIGFzIHdlbGwgYXMgdGhlaXIgdXNlIGluCisg
ICAgICAgIFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5IGFuZCBRV2ViRWxlbWVudDo6c2V0U3R5
bGVQcm9wZXJ0eSBtZXRob2RzLgorCisgICAgICAgIEJhc2VkIG9uIHRoZSB3b3JrIG9mIFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFX
ZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzZXRTdHls
ZVByb3BlcnR5KToKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKworMjAwOS0wNi0wOSAg
QXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAbm9raWEuY29tPgorCisgICAgICAgIFJ1YmJl
ci1zdGFtcGVkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZpeCBxZG9jIHdhcm5pbmcs
IGZ1bmN0aW9uIHBhcmFtZXRlciBzdHJpbmcgbXVzdCBiZSByZWZlcnJlZC4KKworICAgICAgICAq
IEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDktMDYtMDkgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQu
CisKKyAgICAgICAgUmVuYW1lZCBRV2ViU2V0dGluZ3M6OkFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVcmxzIHRvCisgICAgICAgIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsIGFz
IGRpc2N1c3NlZCBpbiB0aGUgQVBJIHJldmlldy4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGlu
Z3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3Mu
aDoKKworMjAwOS0wNi0wOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBNZXJn
ZWQgdXNlRml4ZWRMYXlvdXQgcHJvcGVydHkgd2l0aCBmaXhlZExheW91dFNpemUgYW5kCisgICAg
ICAgIHJlbmFtZWQgdGhlIGxhdHRlciB0byBmaXhlZENvbnRlbnRzU2l6ZS4KKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6Zml4ZWRDb250ZW50c1NpemUp
OgorICAgICAgICAoUVdlYlBhZ2U6OnNldEZpeGVkQ29udGVudHNTaXplKToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorCisyMDA5LTA2LTA5ICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBI
aWRheWF0LgorCisgICAgICAgIFJlbmFtZWQgUVdlYkhpdFRlc3RSZXN1bHQ6OmxpbmtUYXJnZXQg
dG8gbGlua0VsZW1lbnQoKSBhbmQgbWFkZSBpdCByZXR1cm4KKyAgICAgICAgYSBRV2ViRWxlbWVu
dC4gVGhlIGxpbmsgdGFyZ2V0IGl0c2VsZiBpcyBhbHdheXMgdGhlIHRhcmdldCBET00gYXR0cmli
dXRlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVz
dFJlc3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
SGl0VGVzdFJlc3VsdDo6bGlua0VsZW1lbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUv
dHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMDYtMDggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhl
ci4KKworICAgICAgICBSZW5hbWVkIFFXZWJFbGVtZW50OjplbmNsb3NpbmdCbG9jayB0byBlbmNs
b3NpbmdCbG9ja0VsZW1lbnQKKyAgICAgICAgYW5kIGNoYW5nZWQgdGhlIHJldHVybiB0eXBlIHRv
IFFXZWJFbGVtZW50LCBhcyBkaXNjdXNzZWQgaW4KKyAgICAgICAgdGhlIEFQSSByZXZpZXcuIFRo
aXMgQVBJIGlzIG1vcmUgZ2VuZXJpYyBhbmQgdGhyb3VnaAorICAgICAgICBRV2ViRWxlbWVudCdz
IGdlb21ldHJ5KCkgaXQgaXMgcG9zc2libGUgdG8gcmV0cmlldmUgdGhlCisgICAgICAgIHNhbWUg
aW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAo
UVdlYkVsZW1lbnQ6OlFXZWJFbGVtZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0
UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAgKFFXZWJIaXRUZXN0
UmVzdWx0OjplbmNsb3NpbmdCbG9ja0VsZW1lbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
aDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKworMjAwOS0wNi0wNSAgVG9yIEFybmUg
VmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBpbmNsdWRlcyBv
ZiBjb25maWcuaAorCisgICAgICAgICogQXBpL3Fjb29raWVqYXIuY3BwOgorICAgICAgICAqIEFw
aS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9JQ09IYW5kbGVy
LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwOgorCisyMDA5LTA2LTAzICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQWRk
IEFQSSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGNsZWFyIGFsbCBtZW1vcnkgY2FjaGVzIHVzZWQg
YnkKKyAgICAgICAgUXRXZWJLaXQuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6Y2xlYXJNZW1vcnlDYWNoZXMpOgorICAgICAgICAqIEFw
aS9xd2Vic2V0dGluZ3MuaDoKKworMjAwOS0wNi0wMSAgQmVuamFtaW4gQyBNZXllciAgPGJlbmph
bWluLm1leWVyQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBH
dXN0YXZvIE5vcm9uaGEuCisKKyAgICAgICAgQmVmb3JlIGd1ZXNzaW5nIHRoZSB1cmwgdHJpbSB0
aGUgc3RyaW5nIHRvIHJlbW92ZSB3aGl0ZXNwYWNlIGFkZGVkIHRvIHRoZSBzdGFydC9lbmQgYnkg
dGhlIHVzZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZp
ZXc6Omd1ZXNzVXJsRnJvbVN0cmluZyk6CisgICAgICAgICogdGVzdHMvcXdlYnZpZXcvdHN0X3F3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6Z3Vlc3NVcmxGcm9tU3RyaW5nX2Rh
dGEpOgorCisyMDA5LTA2LTAxICBCZW5qYW1pbiBDIE1leWVyICA8YmVuamFtaW4ubWV5ZXJAdG9y
Y2htb2JpbGUuY29tPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEd1c3Rhdm8gTm9yb25o
YS4KKworICAgICAgICBVc2UgUUxhdGluMUNoYXIoKSB0byBjb21waWxlIHdoZW4gUVRfTk9fQ0FT
VF9GUk9NX0FTQ0lJIGFuZCBRVF9OT19DQVNUX1RPX0FTQ0lJIGlzIGRlZmluZWQKKworICAgICAg
ICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6Z3Vlc3NVcmxGcm9tU3Ry
aW5nKToKKworMjAwOS0wNi0wMSAgQmVuamFtaW4gQyBNZXllciAgPGJlbmphbWluLm1leWVyQHRv
cmNobW9iaWxlLmNvbT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBHdXN0YXZvIE5vcm9u
aGEuCisKKyAgICAgICAgQ2xlYW51cCBhdXRvdGVzdCBmaWxlCisgICAgICAgIC0gdXNlIHByb3Bl
ciBpbmNsdWRlcworICAgICAgICAtIHJlbW92ZSB1c2VsZXNzIGNvbnN0cnVjdG9yIGFuZCBkZXN0
cnVjdG9yCisgICAgICAgIC0gYWRkIG1pc3NpbmcgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZSBm
aWxlCisKKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcuY3BwOgorCisyMDA5
LTA2LTAxICBCZW5qYW1pbiBDIE1leWVyICA8YmVuamFtaW4ubWV5ZXJAdG9yY2htb2JpbGUuY29t
PgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KKworICAgICAg
ICBBZGQgYSBtaXNzaW5nIHNwYWNlIGJldHdlZW4gdHdvIHdvcmRzIGluIHRoZSBkb2N1bWVudGF0
aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKworMjAwOS0wNS0yNiAgQmVuamFt
aW4gQyBNZXllciAgPGJlbmphbWluLm1leWVyQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODIzCisKKyAgICAgICAgQWRkIGFuIEFQSSB0byBnZW5l
cmF0ZSBhIFFVcmwgb3V0IG9mIGEgc3RyaW5nIGNvcnJlY3RpbmcgZm9yIGVycm9ycyBhbmQgbWlz
c2luZyBpbmZvcm1hdGlvbi4KKyAgICAgICAgU2VlIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3Ig
bW9yZSBkZXRhaWxzIGFib3V0IHRoZSBmdW5jdGlvbi4KKworICAgICAgICBBdXRvdGVzdHM6IGlu
Y2x1ZGVkCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6
Omd1ZXNzVXJsRnJvbVN0cmluZyk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAg
ICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cp
OgorICAgICAgICAoTWFpbldpbmRvdzo6Y2hhbmdlTG9jYXRpb24pOgorICAgICAgICAqIHRlc3Rz
L3F3ZWJ2aWV3Ly5naXRpZ25vcmU6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJ2aWV3L3F3
ZWJ2aWV3LnBybzoKKyAgICAgICAgKHRzdF9RV2ViVmlldzo6aW5pdFRlc3RDYXNlKToKKyAgICAg
ICAgKHRzdF9RV2ViVmlldzo6Y2xlYW51cFRlc3RDYXNlKToKKyAgICAgICAgKHRzdF9RV2ViVmll
dzo6aW5pdCk6CisgICAgICAgICh0c3RfUVdlYlZpZXc6OmNsZWFudXApOgorICAgICAgICAodHN0
X1FXZWJWaWV3OjpndWVzc1VybEZyb21TdHJpbmdfZGF0YSk6CisgICAgICAgICh0c3RfUVdlYlZp
ZXc6Omd1ZXNzVXJsRnJvbVN0cmluZyk6CisKKzIwMDktMDUtMjMgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBQYXJ0IDIgb2YgMjogQnVnIDI1NDk1OiBJbXBs
ZW1lbnQgUGFzc093blB0ciBhbmQgcmVwbGFjZSB1c2VzIG9mIHN0ZDo6YXV0b19wdHIKKworICAg
ICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDk1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpj
cmVhdGVIVE1MUGFyc2VyUXVpcmtzKTogUmV0dXJuIGEKKyAgICAgICAgUGFzc093blB0cjw+IGlu
c3RlYWQgb2YgYSByYXcgSFRNTFBhcnNlclF1aXJrcyBwb2ludGVyLgorCisyMDA5LTA1LTIzICBK
YWtvYiBUcnVlbHNlbiAgPGFudGlhbGl6ZUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSG9sZ2VyIEZyZXl0aGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNTg2MworCisgICAgICAgIEV4cG9zZSB0aGUgZGVmYXVsdCB0ZXh0IGVu
Y29kaW5nIHByb3BlcnR5IHRvIFF0LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6OnNldERlZmF1bHRUZXh0RW5jb2RpbmcpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpk
ZWZhdWx0VGV4dEVuY29kaW5nKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIw
MDktMDUtMjEgIEFudG9uaW8gR29tZXMgICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gQWRk
aXRpb25hbCB0ZXN0IGZvciByZXNvdXJjZSBsb2FkIChDU1MgZmlsZSkgZm9yIFFXZWJGcmFtZS4K
KworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucXJjOgorICAgICAgICAqIHRl
c3RzL3F3ZWJmcmFtZS9zdHlsZS5jc3M6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFt
ZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAwOS0wNS0yMiAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBmaXgu
CisKKyAgICAgICAgUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBwdXJlIHZpcnR1YWwg
RWRpdG9yQ2xpZW50IG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAwOS0wNS0yMCAgQXJpeWEgSGlkYXlhdCAgPGFyaXlh
LmhpZGF5YXRAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
IGFuZCBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgW1F0XSBBZGQgcmVuZGVySGludHMgcHJv
cGVydHkgdG8gUVdlYlZpZXcuCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAg
ICAoUVdlYlZpZXdQcml2YXRlOjpRV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVdlYlZpZXc6
OnJlbmRlckhpbnRzKToKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRSZW5kZXJIaW50cyk6CisgICAg
ICAgIChRV2ViVmlldzo6c2V0UmVuZGVySGludCk6CisgICAgICAgIChRV2ViVmlldzo6cGFpbnRF
dmVudCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogdGVzdHMvcXdlYnZp
ZXcvcXdlYnZpZXcucHJvOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9xd2Vidmlldy90c3RfcXdl
YnZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRzdF9RV2ViVmlldzo6dHN0X1FXZWJWaWV3KToK
KyAgICAgICAgKHRzdF9RV2ViVmlldzo6fnRzdF9RV2ViVmlldyk6CisgICAgICAgICh0c3RfUVdl
YlZpZXc6OmluaXQpOgorICAgICAgICAodHN0X1FXZWJWaWV3OjpjbGVhbnVwKToKKyAgICAgICAg
KHRzdF9RV2ViVmlldzo6cmVuZGVySGludHMpOgorICAgICAgICAqIHRlc3RzL3Rlc3RzLnBybzoK
KworMjAwOS0wNS0yMCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNo
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MzQKKworICAgICAgICBNYWtl
IENocm9tZUNsaWVudCBhIGludGVyZmFjZSBhZ2FpbgorCisgICAgICAgIFdpdGggcmVjZW50IGFk
ZGl0aW9ucyB0byBDaHJvbWVDbGllbnQuaCBlbXB0eSBkZWZhdWx0cyB3ZXJlCisgICAgICAgIGFk
ZGVkLiBUaGlzIGlzIGJhZCBmb3IgcG9ydGVycyBhcyB0aGVzZSBjaGFuZ2VzIGdvIHVubm90aWNl
ZAorICAgICAgICBhbmQgYXQgcnVudGltZSBubyBub3RJbXBsZW1lbnRlZCB3YXJuaW5nIGlzIGxv
Z2dlZCBhbmQgZ3JlcHBpbmcKKyAgICAgICAgZm9yIG5vdEltcGxlbWVudGVkIHdpbGwgbm90IHNo
b3cgYW55dGhpbmcuIENoYW5nZSB0aGlzIENsaWVudAorICAgICAgICB0byBiZSBsaWtlIHRoZSBv
dGhlciBDbGllbnRzIGFnYWluIGFuZCBhbHdheXMgaGF2ZSBwdXJlIHZpcnR1YWxzCisgICAgICAg
IChidXQgZm9yIHN0dWZmIGluc2lkZSAjaWZkZWYgUExBVEZPUk0oTUFDKSkuCisKKyAgICAgICAg
VXBkYXRlIHRoZSB2YXJpb3VzIFdlYktpdC8qIGltcGxlbWVudGF0aW9ucyB0byBjb21waWxlIGFn
YWluLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldEN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNjcm9sbFJlY3RJbnRvVmlldyk6CisKKzIwMDktMDUt
MTkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBGaXggYSBwbHVnaW4gYnVnIGluIHRoZSBXZWJLaXQgY29kZSwgc2ltaWxhciB0byB0aGUg
b25lIGluIFdlYkNvcmUuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgd2hlbiBhIG5vbiB2aXNp
YmxlIFF0UGx1Z2luV2lkZ2V0IHdvdWxkIHNob3cgaXQgc2VsZgorICAgICAgICBpbiBhIHNpYmxp
bmcgZnJhbWUuIFRoZSBwcm9ibGVtIHdhcyBkdWUgdG8gb3VyIGNsaXBwaW5nLiBJbiBRdCwKKyAg
ICAgICAgaWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0eSBRUmVnaW9uLCBubyBjbGlwcGlu
ZyB3aWxsCisgICAgICAgIGJlIHBlcmZvcm1lZCwgc28gaW4gdGhhdCBjYXNlIHdlIGhpZGUgdGhl
IFBsdWdpbkNvbnRhaW5lcgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCisyMDA5LTA1LTE4ICBab2x0YW4g
SG9ydmF0aCA8aG9ydmF0aC56b2x0YW4uNkBzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgTWFrZXMgUXRMYXVuY2hlciB0byBh
Y2NlcHQgbXVsdGlwbGUgdXJscyBpbiBjb21tYW5kIGxpbmUgYW5kIG9wZW5zIHRoZXNlIGluIHNl
cGFyYXRlIHdpbmRvd3MuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAg
ICAoTWFpbldpbmRvdzo6bmV3V2luZG93KToKKyAgICAgICAgKG1haW4pOgorCisyMDA5LTA1LTE0
ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5i
b3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAg
ICBBZGQgYSBjb21tZW50IHRvIFFXZWJWaWV3OjppY29uQ2hhbmdlZCgpLCBtZW50aW9uaW5nIHRo
YXQgeW91IHdpbGwKKyAgICAgICAgbmVlZCB0byBzZXQgdGhlIGljb24gZGF0YWJhc2UgcGF0aCBm
b3IgaWNvbnMgdG8gYmUgbG9hZGVkLCBhbmQgdGh1cworICAgICAgICByZWNlaXZlIHRoZSBzaWdu
YWwuCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA5LTA1LTE0ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5
YSBIaWRheWF0LgorCisgICAgICAgIEZpeCBzZXRIdG1sIHRlc3QgY2FzZSBieSBhZGRpbmcgPGhl
YWQ+IHRhZyB0byB0aGUgZXhwZWN0ZWQgcmVzdWx0LiBUaGlzIHRhZyBpcyBhdXRvbWF0aWNhbGx5
IGFkZGVkIGJ5IFdlYktpdC4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZy
YW1lLmNwcDoKKworMjAwOS0wNS0xNCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBBZGQg
YSB0ZXN0IGNhc2UgZm9yIHRoZSBzaWduYWwgdXJsQ2hhbmdlZCgpLgorICAgICAgICAqIHRlc3Rz
L3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAwOS0wNS0xMyAgWWFlbCBBaGFyb24g
PHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRh
eWF0LgorCisgICAgICAgIE1vdmUgZW1pdHRpbmcgdGhlIHNpZ25hbCBRV2ViRnJhbWU6OnVybENo
YW5nZWQgdG8gRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkuCisg
ICAgICAgIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdXJsQ2hhbmdlZCgpIGlzIGVtaXR0ZWQgZXZl
biBpZiB0aGUgZnJhbWUgaGFzIG5vIHRpdGxlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorCisyMDA5LTA1LTEzICBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgUnViYmVyc3RhbXBlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAg
ICAgIEZpeCBjb2Rpbmcgc3R5bGU6IEFkZCB7fSB0byBjb250ZW50cyBvZiBpZiwgY29udGFpbmlu
ZyBhIGZvciBsb29wLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAg
KFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5KToKKworMjAwOS0wNS0xMiAgQW50b25pbyBHb21l
cyAgIDxhbnRvbmlvLmdvbWVzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QXJpeWEgSGlkYXlhdC4KKworICAgICAgICBGaXhlZCBhIHBvc3NpYmxlIGNyYXNoIEBzdHlsZVBy
b3BlcnR5IHdoZW4gdGhlcmUgaXMgbm8gZW1iZWRkZWQvZXh0ZXJuYWwgQ1NTIHNldC4KKworICAg
ICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c3R5bGVQ
cm9wZXJ0eSk6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNw
cDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6c3R5bGUpOgorCisyMDA5LTA1LTEyICBBbnRv
bmlvIEdvbWVzICAgPGFudG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAgIEFkZGVkIGV4dGVybmFsIENTUyB0ZXN0
IGNhc2VzIHRvIFFXZWJFbGVtZW50OjpzdHlsZVByb3BlcnR5KCkgbWV0aG9kLgorCisgICAgICAg
IEFsc28gc29tZSA6OnN0eWxlUHJvcGVydHkoKSB0ZXN0cyBjbGVhbnVwLgorCisgICAgICAgICog
dGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2Vi
RWxlbWVudDo6c3R5bGUpOgorCisyMDA5LTA1LTEyICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
biAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAgICAgICBNYW55IG1ldGhvZHMgd2VyZSBub3QgY29u
c2lkZXJpbmcgdGhlIGNhc2Ugb2YgdGhlIGVsZW1lbnQgbm90IGhhdmluZworICAgICAgICBzaWJs
aW5ncyBvciBjaGlsZHJlbiB3aGVuIGluc2VydGluZyBub2RlcywgYW5kIHRodXMgYnJva2UgaW4g
c29tZQorICAgICAgICBzaXR1YXRpb25zLiBUaGlzIHBhdGNoIGZpeGVzIHRoYXQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnByZXBlbmRJ
bnNpZGUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmFwcGVuZE91dHNpZGUpOgorICAgICAgICAo
UVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKToKKworMjAwOS0wNS0wOCAgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlhbnNlbkBvcGVuYm9zc2Eub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgTWFrZSBpcyBwb3NzaWJs
ZSB0byBtYXJrIGEgc3R5bGUgcHJvcGVydHkgYXMgaW1wb3J0YW50IHdoaWxlIHNldHRpbmcKKyAg
ICAgICAgaXQuIEFsc28gc3VwcG9ydCB0aGUgbm9ybWFsIENTUyBwcm9wZXJ0eSBzeW50YXggIiFp
bXBvcnRhbnQiLCB3aGlsZQorICAgICAgICBhY2NlcHRpbmcgc3BhY2VzIGJldHdlZW4gdGhlICEg
YW5kIHRoZSBpbXBvcnRhbnQga2V5d29yZC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5j
cHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c2V0U3R5bGVQcm9wZXJ0eSk6CisgICAgICAgICog
QXBpL3F3ZWJlbGVtZW50Lmg6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJl
bGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6c3R5bGUpOgorCisyMDA5LTA1
LTA4ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKworICAg
ICAgICBXb3JraW5nIHdpdGggQW50b25pbyBHb21lcy4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgZmluZGluZyB0aGUgc3R5bGUgcHJvcGVydHkgYWN0dWFsbHkgYXBwbGllZCB0byB0aGUgZWxl
bWVudC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxl
bWVudDo6c3R5bGVQcm9wZXJ0eSk6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6CisgICAg
ICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRz
dF9RV2ViRWxlbWVudDo6c3R5bGUpOgorCisyMDA5LTA1LTExICBOb3JiZXJ0IExlc2VyICA8bm9y
YmVydC5sZXNlckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgQnVnIDI0NTM4OiBjbGFzcy9zdHJ1Y3QgbWl4dXAgaW4gZm9yd2FyZCBkZWNs
YXJhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI0NTM4CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKworMjAwOS0wNS0xMSAgTGFzemxv
IEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSG9sZ2VyIEZyZXl0aGVyLgorCisgICAgICAgIEZpeCBRdCBidWlsZCB3aGVuIEVOQUJMRV9E
QVRBQkFTRSBpcyB0dXJuZWQgb2ZmCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI1NTg3CisKKyAgICAgICAgKiBBcGkvcXdlYmRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFFXZWJEYXRhYmFzZTo6ZGlzcGxheU5hbWUpOgorICAgICAgICAoUVdlYkRhdGFi
YXNlOjpleHBlY3RlZFNpemUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpzaXplKToKKyAgICAg
ICAgKFFXZWJEYXRhYmFzZTo6ZmlsZU5hbWUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpyZW1v
dmVEYXRhYmFzZSk6CisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZV9wLmg6CisgICAgICAgICog
QXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHA6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46
OmFsbE9yaWdpbnMpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpkYXRhYmFzZXMpOgor
CisyMDA5LTA1LTA1ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0
aWFuc2VuQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgSW1wcm92ZSBiZWhhdmlvdXIgb2YgdGhlIFFXZWJFbGVtZW50IGVuY2xv
c2UqIGZ1bmN0aW9ucywgdG8gd29yaworICAgICAgICBzaW1pbGFyIHRvIHRoZSBqUXVlcnkgd3Jh
cCBmdW5jdGlvbnMuIFdlIG5vdyBlbmNsb3NlIHRoZSBjb250ZW50cworICAgICAgICBvZiB0aGUg
ZWxlbWVudCBpbiB0aGUgY2hpbGQgb2YgdGhlIGRlZXBlc3QgZGVzY2VuZGFudCBlbGVtZW50Cisg
ICAgICAgIHdpdGhpbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBlbmNsb3NlIGVsZW1lbnQgc3RydWN0
dXJlIGdpdmVuLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKGZp
bmRJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZW5jbG9zZUNvbnRlbnRz
V2l0aCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgpOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OnJlcGxhY2UpOgorICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2Vi
ZWxlbWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmVuY2xvc2VDb250ZW50c1dp
dGgpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjplbmNsb3NlV2l0aCk6CisKKzIwMDktMDUt
MDYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3Bl
bmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAg
ICAgICBBZnRlciBjb21taXQgcmV2IEA0MzIxNSwgc2V0SHRtbCgpIHdpdGhvdXQgYSA8aGVhZD4g
dGFnLAorICAgICAgICBhdXRvbWF0aWNhbGx5IGFkZHMgaXQsIHNvIHVwZGF0ZSBvdXIgdGVzdCBj
YXNlIHRvIHJlc3BlY3QgdGhpcy4KKworICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9x
d2ViZWxlbWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnRleHRIdG1sKToKKwor
MjAwOS0wNS0wNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisK
KyAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBmaXguCisKKyAgICAgICAgRG9udCcgdXNlIEVO
QUJMRSgpIGluIFF0IEFQSSBoZWFkZXJzLCBhcyB0aGV5IGFyZSBub3QgYXZhaWxhYmxlIHdoZW4g
YnVpbGRpbmcKKyAgICAgICAgYWdhaW5zdCB0aGUgQVBJLgorCisgICAgICAgICogQXBpL3F3ZWJk
YXRhYmFzZS5oOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uaDoKKworMjAwOS0w
NS0wNSAgQmVuIE11cmRvY2ggIDxiZW5tQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCisgICAgICAgIAorICAgICAgICBBZGQgI2lmIEVOQUJMRShEQVRBQkFT
RSkgZ3VhcmRzIGFyb3VuZCBkYXRhYmFzZSBjb2RlIHNvIHRvZ2dsaW5nIEVOQUJMRV9EQVRBQkFT
RSBvZmYgZG9lcyBub3QgYnJlYWsgYnVpbGRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3NzYKKworICAgICAgICAqIEFwaS9xd2ViZGF0YWJhc2Uu
Y3BwOgorICAgICAgICAqIEFwaS9xd2ViZGF0YWJhc2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYmRh
dGFiYXNlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAgICAg
ICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6ZGF0YWJhc2VVc2FnZSk6CisgICAgICAgIChRV2ViU2Vj
dXJpdHlPcmlnaW46OmRhdGFiYXNlUXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2lu
OjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwOS0wNS0wNSAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBWYXJpb3VzIGltcHJvdmVtZW50cyB0byB0
aGUgY2xhc3MgZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGEgc2ltcGxlIHNuaXBwZXQgZm9yIFFX
ZWJFbGVtZW50LgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3dlYmVsZW1l
bnQvbWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBldHMvd2ViZWxl
bWVudC93ZWJlbGVtZW50LnBybzogQWRkZWQuCisKKzIwMDktMDUtMDUgIFNpbW9uIEhhdXNtYW5u
ICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlh
IEhpZGF5YXQuCisKKyAgICAgICAgU2ltcGxpZnkgdmFyaWFudCBjb252ZXJzaW9uIGJ5IG1vdmlu
ZyB0aGUgbnVsbCBjaGVjayBpbnRvCisgICAgICAgIGNvbnZlcnRWYWx1ZVRvUVZhcmlhbnQuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVh
dGVKYXZhU2NyaXB0KTogTW92ZWQgbnVsbCBjaGVjayBpbnRvIGNvbnZlcnNpb24gZnVuY3Rpb24u
CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorICAgICAgICBB
ZGRlZCB0ZXN0IHRvIHZlcmlmeSB0aGUgY29ycmVjdCBjb252ZXJzaW9uIG9mIG51bGwgdmFsdWVz
IHRvIFFWYXJpYW50LgorCisyMDA5LTA1LTAxICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUnViYmVyIFN0YW1wZWQgYnkgU2FtIFdlaW5pZy4KKyAgICAgICAg
CisgICAgICAgIFJlbmFtZWQgSlNWYWx1ZVB0ciA9PiBKU1ZhbHVlLgorCisgICAgICAgICogQXBp
L3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHNldHVwU2NyaXB0Q29udGV4dCk6CisgICAgICAg
IChzZXR1cFNjcmlwdE9iamVjdCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6ZXZhbHVhdGVTY3Jp
cHQpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmZ1bmN0aW9ucyk6CisgICAgICAgIChRV2ViRWxl
bWVudDo6c2NyaXB0YWJsZVByb3BlcnR5KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzZXRTY3Jp
cHRhYmxlUHJvcGVydHkpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNjcmlwdGFibGVQcm9wZXJ0
aWVzKToKKworMjAwOS0wNS0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQWRk
IGEgRnJhbWVMb2FkZXJDbGllbnQgY2FsbGJhY2sgZm9yIHRoZSBSZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3QuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI1MzQ3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA5LTA0LTMwICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhIG1lY2hhbmlzbSB0byBj
cmVhdGUgYSBxdWlya3MgZGVsZWdhdGUgZm9yIEhUTUxQYXJzZXIKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBIeWF0dC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlSFRNTFBhcnNl
clF1aXJrcyk6IEFkZGVkLiAgVGhlCisgICAgICAgIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2Yg
dGhpcyBmYWN0b3J5IG1ldGhvZCByZXR1cm5zIDAuCisKKzIwMDktMDQtMzAgIEFyaXlhIEhpZGF5
YXQgIDxhcml5YS5oaWRheWF0QG5va2lhLmNvbT4KKworICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeCBhZnRlciByNDMwNzIuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKHF0X2RydF9zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6IEVuY2xvc2Ugd2l0aCBK
QVZBU0NSSVBUX0RFQlVHR0VSLgorCisyMDA5LTA0LTMwICBBcml5YSBIaWRheWF0ICA8YXJpeWEu
aGlkYXlhdEBub2tpYS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIg
cjQzMDYzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMDktMDQtMzAg
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBJbXBsZW1lbnQgZW5jbG9zZUNvbnRlbnRzV2l0aCBhbmQgcmVuYW1lIHdyYXAgdG8gZW5jbG9z
ZVdpdGguCisKKyAgICAgICAgQWxzbyBpbiBlbmNsb3NlV2l0aCwgbWFrZSBzdXJlIHRoYXQgeW91
IGNhbm5vdCBlbmNsb3NlIHdpdGgKKyAgICAgICAgbm9uLWVuY2xvc2FibGUgZWxlbWVudHMuCisK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVu
Y2xvc2VDb250ZW50c1dpdGgpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVuY2xvc2VXaXRoKToK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVu
dC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjplbmNsb3Nl
Q29udGVudHNXaXRoKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6ZW5jbG9zZVdpdGgpOgor
CisyMDA5LTA0LTMwICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoZSBR
dCBBUEkgZXhwb3NlcyBhIGdsb2JhbCBoaXN0b3J5IHBhdGNoIENTU1N0eWxlU2VsZWN0b3IgdG8g
bWFrZSBBUEkgY29uc3VtZXJzIHdvcmsgYWdhaW4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NTIKKworICAgICAgICBUaGUgUXRXZWJLaXQgcG9y
dCBtYWRlIHRoZSBtaXN0YWtlIG9mIGV4cG9zaW5nIGEgZ2xvYmFsIGhpc3RvcnkuIFRoaXMgYnJv
a2UKKyAgICAgICAgd2l0aCB0aGUgYWRkaXRpb24gb2YgUGFnZUdyb3VwIGFuZCBMaW5rSGFzaC4g
VGhpcyBuZWVkcyB0byBiZSByZXBhaXJlZAorICAgICAgICBmb3IgUXQ0LjUuCisKKyAgICAgICAg
QWRkIGEgZnVuY3Rpb24gdG8gTGlua0hhc2guY3BwIHRoYXQgaXMgcmVzb2x2aW5nIGEgVVJMLiBV
c2UgdGhpcworICAgICAgICBmdW5jdGlvbiBmcm9tIHdpdGhpbiBDU1NTdHlsZVNlbGVjdG9yIHRv
IGZvcndhcmQgdGhlIHVybCB0byB0aGUKKyAgICAgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2UgQVBJ
LgorCisgICAgICAgIEl0IGlzIHNhZCB0aGF0IHRoZXJlIGlzIGEgcGF0aCB3aXRoaW4gdmlzaXRl
ZExpbmtIYXNoIHdoaWNoIGlzIG5vdworICAgICAgICBkb2luZyBhIG1lbWNweSwgaXQgaXMgc2Fk
IHRvIGFkZCBhIFBMQVRGT1JNKFFUKSBkZWZpbmUgdG8gQ1NTU3R5bGVTZWxlY3RvcgorICAgICAg
ICBhbmQgdXNpbmcgUXRXZWJLaXQgdHlwZXMgd2l0aGluIFdlYkNvcmUgaXMgYSBsYXllcmluZyB2
aW9sYXRpb24gYXMgd2VsbC4KKworICAgICAgICBQYWdlR3JvdXA6OnNldFNob3VsZFRyYWNrVmlz
aXRlZExpbmtzIGlzIGN1cnJlbnRseSBub3QgZW5hYmxlZC4gRm9yCisgICAgICAgIFF0NC42IGEg
c2Vjb25kIHZlcnNpb24gb2YgdGhlIFFXZWJIaXN0b3J5SW50ZXJmYWNlIGlzIGdvaW5nIHRvIGJl
CisgICAgICAgIGFkZGVkIHdoaWNoIHdpbGwgZml4IHRoaW5ncyB1cC4KKworICAgICAgICAqIEFw
aS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViSGlzdG9yeUludGVyZmFj
ZTo6c2V0RGVmYXVsdEludGVyZmFjZSk6IEFkZCBub3RlIGZvciBRdDQuNgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6IFJlbW92ZSBQYWdlR3JvdXA6OnNldFNob3VsZFRyYWNrVmlzaXRlZExp
bmtzKHRydWUpCisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6Cisg
ICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvcXdlYmhpc3RvcnlpbnRlcmZhY2Uu
cHJvOiBBZGRlZCB1bml0IHRlc3QuCisgICAgICAgICogdGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZh
Y2UvdHN0X3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDogQWRkZWQgdW5pdCB0ZXN0LgorICAgICAg
ICAodHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlOjp0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2UpOgor
ICAgICAgICAodHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlOjp+dHN0X1FXZWJIaXN0b3J5SW50ZXJm
YWNlKToKKyAgICAgICAgKHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZTo6aW5pdCk6CisgICAgICAg
ICh0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmNsZWFudXApOgorICAgICAgICAoRmFrZUhpc3Rv
cnlJbXBsZW1lbnRhdGlvbjo6YWRkSGlzdG9yeUVudHJ5KToKKyAgICAgICAgKEZha2VIaXN0b3J5
SW1wbGVtZW50YXRpb246Omhpc3RvcnlDb250YWlucyk6CisgICAgICAgICh0c3RfUVdlYkhpc3Rv
cnlJbnRlcmZhY2U6OnZpc2l0ZWRMaW5rcyk6IENoZWNrIHRoZSBRdDQuNCBiZWhhdmlvdXIuCisg
ICAgICAgICogdGVzdHMvdGVzdHMucHJvOgorCisyMDA5LTA0LTMwICBBcml5YSBIaWRheWF0ICA8
YXJpeWEuaGlkYXlhdEBub2tpYS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgs
IGFmdGVyIHI0MzAzNS4KKworICAgICAgICBUZW1wb3JhcmlseSB1c2UgUG9zaXRpb246OmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgorCisyMDA5LTAzLTI3ICBCZW5qYW1p
biBDIE1leWVyICA8YmVuamFtaW4ubWV5ZXJAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFVwZGF0ZSB0aGUgcGFnZSBhY3Rp
b25zIHdoZW4gYSBmaW5pc2hpbmcgbG9hZGluZyBldmVuIGlmIHRoZSBmcmFtZSBpcworICAgICAg
ICBub3QgdGhlIHRvcCBmcmFtZSBzdWNoIGFzIHdoZW4gYnJvd3NpbmcgaW5zaWRlIG9mIGEgd2Vi
c2l0ZSB3aXRoIGZyYW1lcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0ODkwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmluaXNoTG9hZCk6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvZnJhbWV0ZXN0L2Zy
YW1lX2EuaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvZnJhbWV0ZXN0L2lu
ZGV4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5j
cHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmJhY2tBY3Rpb25VcGRhdGUpOgorCisyMDA5LTA0
LTI5ICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgSW1wbGVtZW50IFFXZWJFbGVt
ZW50OjpldmFsdWF0ZVNjcmlwdC4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6Cisg
ICAgICAgIChzZXR1cFNjcmlwdENvbnRleHQpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmV2YWx1
YXRlU2NyaXB0KToKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgKiB0ZXN0
cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVt
ZW50OjpldmFsdWF0ZVNjcmlwdCk6CisKKzIwMDktMDQtMjkgIFNpbW9uIEhhdXNtYW5uICA8c2lt
b24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5
YXQuCisKKyAgICAgICAgUmVwbGFjZWQgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIHdpdGggUUxpc3Q8
UVdlYkVsZW1lbnQ+LgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAg
KFFXZWJFbGVtZW50OjpmaW5kQWxsKToKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZmluZEFsbEVs
ZW1lbnRzKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogUXRMYXVuY2hl
ci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6OnNlbGVjdEVsZW1lbnRzKToKKyAgICAg
ICAgKiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0
X1FXZWJFbGVtZW50OjpzaW1wbGVDb2xsZWN0aW9uKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVu
dDo6bmFtZXNwYWNlVVJJKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6bnVsbFNlbGVjdCk6
CisKKzIwMDktMDQtMjggIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgUVdl
YkVsZW1lbnQgQVBJIGNoYW5nZXMgYWZ0ZXIgYW5vdGhlciByb3VuZCBvZiBBUEkgcmV2aWV3Ogor
CisgICAgICAgICogRml4IGFyZ3VtZW50IG5hbWVzIG9mIGZpbmRBbGwvZmluZEZpcnN0CisgICAg
ICAgICogU3BsaXQgdXAgdG9YbWwgaW50byBpbm5lclhtbCBhbmQgb3V0ZXJYbWwKKyAgICAgICAg
KiBSZW1vdmVkIGNvbmZ1c2luZyB0b2dnbGVDbGFzcyBvdmVybG9hZAorICAgICAgICAqIEZpeGVk
IGNhc2luZyBvZiBuYW1lc3BhY2VVcmkgdG8gZm9sbG93IFFYbWxTdHJlYW1SZWFkZXIKKyAgICAg
ICAgKiBSZW1vdmVkIHRhZ05hbWUgZnJvbSBmaXJzdENoaWxkL25leHRTaWJsaW5nL2V0Yy4KKyAg
ICAgICAgKiBSZW5hbWVkIGFwcGVuZC9wcmVwZW5kL2luc2VydEFmdGVyL2luc2VydEJlZm9yZSB0
byBbYXBwZW5kfHByZXBlbmRdW0luc2lkZXxPdXRzaWRlXQorICAgICAgICAqIFJlbmFtZWQgd3Jh
cFdpdGgoKSBiYWNrIHRvIHdyYXAoKQorICAgICAgICAqIE1hZGUgY2xvbmUoKSBjb25zdAorICAg
ICAgICAqIFJlbmFtZWQgcmVtb3ZlKCkgdG8gdGFrZUZyb21Eb2N1bWVudCgpLCBhZGRlZCByZW1v
dmVGcm9tRG9jdW1lbnQoKQorICAgICAgICAqIFJlbmFtZWQgY2xlYXIoKSB0byByZW1vdmVDaGls
ZHJlbigpCisgICAgICAgICogUmVuYW1lZCBzY3JpcHRzRnVuY3Rpb25zL2NhbGxTY3JpcHRGdW5j
dGlvbiB0byBmdW5jdGlvbnMoKS9jYWxsRnVuY3Rpb24oKQorICAgICAgICAqIFJlbmFtZWQgc2Ny
aXB0UHJvcGVydHkgdG8gc2NyaXB0YWJsZVByb3BlcnR5CisKKyAgICAgICAgKiBBcGkvcXdlYmVs
ZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmZpbmRBbGwpOgorICAgICAgICAoUVdl
YkVsZW1lbnQ6OmZpbmRGaXJzdCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6c2V0T3V0ZXJYbWwp
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnRvT3V0ZXJYbWwpOgorICAgICAgICAoUVdlYkVsZW1l
bnQ6OnNldElubmVyWG1sKToKKyAgICAgICAgKFFXZWJFbGVtZW50Ojp0b0lubmVyWG1sKToKKyAg
ICAgICAgKFFXZWJFbGVtZW50OjpuYW1lc3BhY2VVcmkpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6
OmZpcnN0Q2hpbGQpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6Omxhc3RDaGlsZCk6CisgICAgICAg
IChRV2ViRWxlbWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnByZXZp
b3VzU2libGluZyk6CisgICAgICAgIChRV2ViRWxlbWVudDo6Y2FsbEZ1bmN0aW9uKToKKyAgICAg
ICAgKFFXZWJFbGVtZW50OjpmdW5jdGlvbnMpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNjcmlw
dGFibGVQcm9wZXJ0eSk6CisgICAgICAgIChRV2ViRWxlbWVudDo6c2V0U2NyaXB0YWJsZVByb3Bl
cnR5KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpzY3JpcHRhYmxlUHJvcGVydGllcyk6CisgICAg
ICAgIChRV2ViRWxlbWVudDo6YXBwZW5kSW5zaWRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50Ojpw
cmVwZW5kSW5zaWRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpwcmVwZW5kT3V0c2lkZSk6Cisg
ICAgICAgIChRV2ViRWxlbWVudDo6YXBwZW5kT3V0c2lkZSk6CisgICAgICAgIChRV2ViRWxlbWVu
dDo6Y2xvbmUpOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnRha2VGcm9tRG9jdW1lbnQpOgorICAg
ICAgICAoUVdlYkVsZW1lbnQ6OnJlbW92ZUZyb21Eb2N1bWVudCk6CisgICAgICAgIChRV2ViRWxl
bWVudDo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OndyYXApOgorICAg
ICAgICAoUVdlYkVsZW1lbnQ6OnJlcGxhY2UpOgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5o
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpmaW5k
QWxsRWxlbWVudHMpOgorICAgICAgICAoUVdlYkZyYW1lOjpmaW5kRmlyc3RFbGVtZW50KToKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0
X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6dGV4dEh0bWwpOgor
ICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpjbGFzc2VzKToKKyAgICAgICAgKHRzdF9RV2ViRWxl
bWVudDo6bmFtZXNwYWNlVVJJKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6Zm9yZWFjaE1h
bmlwdWxhdGlvbik6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmNhbGxGdW5jdGlvbik6Cisg
ICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmNhbGxGdW5jdGlvblN1Ym1pdEZvcm0pOgorICAgICAg
ICAodHN0X1FXZWJFbGVtZW50OjpmdW5jdGlvbk5hbWVzKToKKyAgICAgICAgKHRzdF9RV2ViRWxl
bWVudDo6cHJvcGVydGllcyk6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmFwcGVuZEFuZFBy
ZXBlbmQpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjppbnNlcnRCZWZvcmVBbmRBZnRlcik6
CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnJlbW92ZSk6CisgICAgICAgICh0c3RfUVdlYkVs
ZW1lbnQ6OmNsZWFyKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6cmVwbGFjZVdpdGgpOgor
CisyMDA5LTA0LTI4ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEZpeCBz
b21lIHFkb2Mgd2FybmluZ3MuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDogRml4IGxp
bmtzLgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6IE1ha2UgZG9jcyBp
bnRlcm5hbC4KKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuaDogRGl0dG8uCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDogRml4IHByb3BlcnR5IG5hbWUgaW4gXHByb3BlcnR5
LgorCisyMDA5LTA0LTI0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBcml5YSBIaWRheWF0LgorCisgICAgICAg
IEZpeCBxZG9jIHdhcm5pbmcgYWJvdXQgbGluayB0byBRQWN0aW9uOjppc0VuYWJsZWQuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisyMDA5LTA0LTI0ICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBI
aWRheWF0LgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgQVBJIGRvY3Mg
aW4gdGhlIFF0IGJ1aWxkIHVzaW5nICJtYWtlIGRvY3MiCisKKyAgICAgICAgQWRkZWQgY29kZSBz
bmlwcGV0cyBhbmQgb3ZlcnZpZXcgZnJvbSB0aGUgUXQgc291cmNlcyByZWZlcmVuY2VzIGluIHRo
ZSBBUEkgZG9jcy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6IEFkanVzdCBwYXRocyB0
byBzbmlwcGV0cy4KKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBkb2NzL2RvY3MucHJpOiBBZGRlZC4KKyAgICAgICAgKiBkb2NzL3F0d2Via2l0LnFkb2M6IEFk
ZGVkLgorICAgICAgICAqIGRvY3MvcXR3ZWJraXQucWRvY2NvbmY6IEFkZGVkLgorICAgICAgICAq
IGRvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnVpbGRfc25pcHBldC5xZG9jOiBBZGRlZC4K
KyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJ2aWV3X3NuaXBwZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3NpbXBsZS9tYWluLmNw
cDogQWRkZWQuCisgICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy9zaW1wbGUvc2ltcGxlLnBy
bzogQWRkZWQuCisgICAgICAgICogZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBkb2NzL3dlYmtpdHNuaXBwZXRzL3dlYnBhZ2Uvd2VicGFnZS5w
cm86IEFkZGVkLgorCisyMDA5LTA0LTIzICBBbnRvbmlvIEdvbWVzICAgPGFudG9uaW8uZ29tZXNA
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgorCisg
ICAgICAgIFtRdF0gQWRkZWQgUVdlYkVsZW1lbnQ6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eSBtZXRo
b2QuCisKKyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1l
bnQ6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6
CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAg
ICAgKHRzdF9RV2ViRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisKKzIwMDktMDQtMjMgIFRvciBB
cm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJ1YmJl
ci1zdGFtcGVkIGJ5IEFyaXlhIEhpZGF5YXQuCisKKyAgICAgICAgW1F0XSBSZW5hbWUgUVdlYkVs
ZW1lbnQgYXJndW1lbnRzIGZyb20gaHRtbCB0byBtYXJrdXAKKworICAgICAgICAqIEFwaS9xd2Vi
ZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6YXBwZW5kKToKKyAgICAgICAgKFFX
ZWJFbGVtZW50OjpwcmVwZW5kKToKKyAgICAgICAgKFFXZWJFbGVtZW50OjppbnNlcnRCZWZvcmUp
OgorICAgICAgICAoUVdlYkVsZW1lbnQ6Omluc2VydEFmdGVyKToKKyAgICAgICAgKiBBcGkvcXdl
YmVsZW1lbnQuaDoKKworMjAwOS0wNC0yMSAgQW50b25pbyBHb21lcyAgIDxhbnRvbmlvLmdvbWVz
QG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KKwor
ICAgICAgICBRV2ViRWxlbWVudFNlbGVjdGlvbiByZW5hbWVkIHRvIFFXZWJFbGVtZW50Q29sbGVj
dGlvbi4KKworICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxl
bWVudDo6ZmluZEFsbCk6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlOjpR
V2ViRWxlbWVudENvbGxlY3Rpb25Qcml2YXRlKToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVj
dGlvblByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246OlFX
ZWJFbGVtZW50Q29sbGVjdGlvbik6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246Om9w
ZXJhdG9yPSk6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246On5RV2ViRWxlbWVudENv
bGxlY3Rpb24pOgorICAgICAgICAoUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpvcGVyYXRvcispOgor
ICAgICAgICAoUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjphcHBlbmQpOgorICAgICAgICAoUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uOjpjb3VudCk6CisgICAgICAgIChRV2ViRWxlbWVudENvbGxlY3Rpb246
OmF0KToKKyAgICAgICAgKFFXZWJFbGVtZW50Q29sbGVjdGlvbjo6dG9MaXN0KToKKyAgICAgICAg
KiBBcGkvcXdlYmVsZW1lbnQuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZTo6ZmluZEFsbEVsZW1lbnRzKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
Lmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6
OnNlbGVjdEVsZW1lbnRzKToKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdlYmVs
ZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpzaW1wbGVDb2xsZWN0aW9uKToK
KyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6aXRlcmF0aW9uKToKKyAgICAgICAgKHRzdF9RV2Vi
RWxlbWVudDo6ZW1wdHlDb2xsZWN0aW9uKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6YXBw
ZW5kQ29sbGVjdGlvbik6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6Om51bGxTZWxlY3QpOgor
CisyMDA5LTA0LTE3ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUyNDIKKworICAgICAgICBSZW1vdmUg
UXRDb3JlIDQuNSBkZXBlbmRlbmN5IGZyb20gUVdlYkVsZW1lbnQgdGVzdAorCisgICAgICAgICog
dGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKHRzdF9RV2Vi
RWxlbWVudDo6aXRlcmF0aW9uKTogVXNlIFFMaXN0Ojpjb3VudCgpIGluc3RlYWQgb2YgUUxpc3Q6
Omxlbmd0aCgpCisKKzIwMDktMDQtMTYgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVj
a2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgTWFrZSB0aGUgb3BlcmF0b3I9PSBhbmQgb3BlcmF0b3IhPSBub24gaW5s
aW5lIHRvCisgICAgICAgIGFsbG93IGxvb2tpbmcgYXQgdGhlIGQtcG9pbnRlciBpbiB0aGUgZnV0
dXJlLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVt
ZW50OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFFXZWJFbGVtZW50OjpvcGVyYXRvciE9KToKKyAg
ICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuaDoKKworMjAwOS0wNC0xNSAgQW50b25pbyBHb21lcyAg
IDxhbnRvbmlvLmdvbWVzQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQXJp
eWEgSGlkYXlhdC4KKworICAgICAgICBSZW5hbWUgZXh0ZW5kKCkgbWV0aG9kIGluIFFXZWJFbGVt
ZW50U2VsZWN0aW9uIHRvIGFwcGVuZCgpLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNw
cDoKKyAgICAgICAgKFFXZWJFbGVtZW50U2VsZWN0aW9uOjphcHBlbmQpOgorICAgICAgICAqIEFw
aS9xd2ViZWxlbWVudC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxl
bWVudC5jcHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmFwcGVuZFNlbGVjdGlvbik6CisK
KzIwMDktMDQtMTUgIEFudG9uaW8gR29tZXMgICA8YW50b25pby5nb21lc0BvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZpeGVk
IG5pdC90eXBvIGluIFFXZWJFbGVtZW50IGRvY3VtZW50YXRpb24uCisKKyAgICAgICAgKiBBcGkv
cXdlYmVsZW1lbnQuY3BwOgorCisyMDA5LTA0LTE0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEu
Z29tYm9zQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ4NDEK
KworICAgICAgICBGaXggbGlua2luZyBhZ2FpbnN0IFF0V2ViS2l0IGZvciBTeW1iaWFuIGFuZCBv
dGhlciBwbGF0Zm9ybXMKKyAgICAgICAgd2hlcmUgdGhlIE9TIEFCSSBkaXN0aW5ndWlzaGVzIGJl
dHdlZW4gYW4gaW1wb3J0IG9yIGFuIGV4cG9ydCBzaXR1YXRpb24uCisKKyAgICAgICAgKiBBcGkv
cXdlYmtpdGdsb2JhbC5oOiBJbnN0ZWFkIG9mIHdoaXRlLWxpc3RpbmcgV2luLCByZW1vdmUgdGhl
IHRlc3QuCisKKzIwMDktMDQtMTQgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0
aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3Ig
QXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbmFtZSBRV2ViRWxlbWVudDo6c2V0SHRtbCBhbmQg
aHRtbCB0byBzZXRYbWwgYW5kIHRvWG1sIHJlc3BlY3RpdmlseS4KKyAgICAgICAgCisgICAgICAg
IEFsc28gYWRkIGEgbWVhbiB0byBkZWZpbmUgdGhlIHNjb3BlIChpbm5lciBvciBvdGhlcikuCisK
KyAgICAgICAgKiBBcGkvcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNl
dFhtbCk6CisgICAgICAgIChRV2ViRWxlbWVudDo6dG9YbWwpOgorICAgICAgICAqIEFwaS9xd2Vi
ZWxlbWVudC5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxlbWVudC5j
cHA6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnRleHRIdG1sKToKKyAgICAgICAgKHRzdF9R
V2ViRWxlbWVudDo6Zm9yZWFjaE1hbmlwdWxhdGlvbik6CisKKzIwMDktMDQtMTQgIEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aC5jaHJpc3RpYW5zZW5Ab3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbmFt
ZSBRV2ViRWxlbWVudDo6c2V0VGV4dCgpIGFuZCB0ZXh0KCkgdG8gOjpzZXRQbGFpblRleHQgYW5k
CisgICAgICAgIDo6dG9QbGFpblRleHQsIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIEFwaS9x
d2ViZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c2V0UGxhaW5UZXh0KToKKyAg
ICAgICAgKFFXZWJFbGVtZW50Ojp0b1BsYWluVGV4dCk6CisgICAgICAgICogQXBpL3F3ZWJlbGVt
ZW50Lmg6CisgICAgICAgICogdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDoK
KyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6dGV4dEh0bWwpOgorICAgICAgICAodHN0X1FXZWJF
bGVtZW50OjpzaW1wbGVTZWxlY3Rpb24pOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjphcHBl
bmRBbmRQcmVwZW5kKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6aW5zZXJ0QmVmb3JlQW5k
QWZ0ZXIpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpyZXBsYWNlV2l0aCk6CisgICAgICAg
ICh0c3RfUVdlYkVsZW1lbnQ6OndyYXApOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpmaXJz
dENoaWxkTmV4dFNpYmxpbmdXaXRoVGFnKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6bGFz
dENoaWxkUHJldmlvdXNTaWJsaW5nV2l0aFRhZyk6CisKKzIwMDktMDQtMDYgIFRvciBBcm5lIFZl
c3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFtRdF0gUmVuYW1lIERPTSBBUEkgc2VsZWN0IGZ1
bmN0aW9uIHRvIGZpbmRGaXJzdCwgZmluZEFsbCwgZXRjLgorCisgICAgICAgICogQXBpL3F3ZWJl
bGVtZW50LmNwcDoKKyAgICAgICAgKFFXZWJFbGVtZW50OjpmaW5kQWxsKToKKyAgICAgICAgKFFX
ZWJFbGVtZW50OjpmaW5kRmlyc3QpOgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5oOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpmaW5kQWxsRWxl
bWVudHMpOgorICAgICAgICAoUVdlYkZyYW1lOjpmaW5kRmlyc3RFbGVtZW50KToKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAg
ICAgKE1haW5XaW5kb3c6OnNlbGVjdEVsZW1lbnRzKToKKyAgICAgICAgKiB0ZXN0cy9xd2ViZWxl
bWVudC90c3RfcXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpzaW1w
bGVTZWxlY3Rpb24pOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjphdHRyaWJ1dGVzTlMpOgor
ICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpjbGFzc2VzKToKKyAgICAgICAgKHRzdF9RV2ViRWxl
bWVudDo6bmFtZXNwYWNlVVJJKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6aXRlcmF0aW9u
KToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6Zm9yZWFjaE1hbmlwdWxhdGlvbik6CisgICAg
ICAgICh0c3RfUVdlYkVsZW1lbnQ6OmNhbGxGdW5jdGlvblN1Ym1pdEZvcm0pOgorICAgICAgICAo
dHN0X1FXZWJFbGVtZW50Ojpkb2N1bWVudEVsZW1lbnQpOgorICAgICAgICAodHN0X1FXZWJFbGVt
ZW50OjpmcmFtZSk6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnN0eWxlKToKKyAgICAgICAg
KHRzdF9RV2ViRWxlbWVudDo6ZXh0ZW5kU2VsZWN0aW9uKToKKyAgICAgICAgKHRzdF9RV2ViRWxl
bWVudDo6cHJvcGVydGllcyk6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmFwcGVuZEFuZFBy
ZXBlbmQpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjppbnNlcnRCZWZvcmVBbmRBZnRlcik6
CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OnJlbW92ZSk6CisgICAgICAgICh0c3RfUVdlYkVs
ZW1lbnQ6OmNsZWFyKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVudDo6cmVwbGFjZVdpdGgpOgor
ICAgICAgICAodHN0X1FXZWJFbGVtZW50Ojp3cmFwKToKKyAgICAgICAgKHRzdF9RV2ViRWxlbWVu
dDo6bnVsbFNlbGVjdCk6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmZpcnN0Q2hpbGROZXh0
U2libGluZyk6CisgICAgICAgICh0c3RfUVdlYkVsZW1lbnQ6OmZpcnN0Q2hpbGROZXh0U2libGlu
Z1dpdGhUYWcpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpsYXN0Q2hpbGRQcmV2aW91c1Np
YmxpbmcpOgorICAgICAgICAodHN0X1FXZWJFbGVtZW50OjpsYXN0Q2hpbGRQcmV2aW91c1NpYmxp
bmdXaXRoVGFnKToKKworMjAwOS0wNC0wNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFu
bkBub2tpYS5jb20+CisgICAgICAgICAgICBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QG5v
a2lhLmNvbT4KKyAgICAgICAgICAgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9A
bm9raWEuY29tPgorICAgICAgICAgICAgR2VuZXZpZXZlIE1hayA8Z2VuQHN0YWlrb3MubmV0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7gsIFNpbW9uIEhhdXNtYW5uCisK
KyAgICAgICAgRmlyc3QgcmV2aXNpb24gb2YgbmV3IEFQSSBpbiB0aGUgUXQgcG9ydCB0byBhY2Nl
c3MgdGhlIERPTS4KKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaTogQWRkZWQgcXdlYmVsZW1l
bnQuaCB0byB0aGUgQVBJIGhlYWRlcnMuCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDog
QWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpkb2N1bWVudEVsZW1lbnQpOiBB
ZGRlZCBhY2Nlc3NvciBmb3IgdGhlIGRvY3VtZW50IGVsZW1lbnQuCisgICAgICAgIChRV2ViRnJh
bWU6OnNlbGVjdEVsZW1lbnRzKTogQWRkZWQgY29udmVuaWVuYyBxdWVyeSBtZXRob2QuCisgICAg
ICAgIChRV2ViRnJhbWU6OnNlbGVjdEVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFFXZWJIaXRU
ZXN0UmVzdWx0OjplbGVtZW50KTogQWRkZWQgYWNjZXNzb3IgZm9yIHVuZGVybHlpbmcgRE9NIGVs
ZW1lbnQuCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIFF0TGF1bmNoZXIv
bWFpbi5jcHA6IFNpbXBsZSB0ZXN0IGd1aSBmb3IgZWxlbWVudCBzZWxlY3Rpb25zLgorICAgICAg
ICAqIHRlc3RzL3F3ZWJlbGVtZW50L3F3ZWJlbGVtZW50LnBybzogQWRkZWQuCisgICAgICAgICog
dGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgICog
dGVzdHMvdGVzdHMucHJvOiBBZGRlZCBRV2ViRWxlbWVudCAmIFFXZWJFbGVtZW50U2VsZWN0aW9u
IHVuaXQgdGVzdHMuCisKKzIwMDktMDQtMDIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5Abm9raWEuY29tPgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQuCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOiBBZGFw
dGVkIGNvZGUgdG8gcmVuYW1lZCBsb2FkRnJhbWVSZXF1ZXN0IGZ1bmN0aW9uLgorCisyMDA5LTA0
LTAyICBUYWt1bWkgQXNha2kgPHRha3VtaS5hc2FraUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRml4IHByZS1lZGl0IGhhbmRsaW5n
IG9mIHRleHQgZmllbGRzIHdpdGggaW5wdXQgbWV0aG9kcy4KKworICAgICAgICBUaGUgaW5wdXQg
bWV0aG9kIHNlbmRzIGFuIGVtcHR5IHByZWVkaXRTdHJpbmcoKSBpZiBhbGwgY2hhcmFjdGVycyBv
ZgorICAgICAgICB0aGUgcHJlZWRpdCBzaG91bGQgYmUgZGVsZXRlZC4gU28gaW5wdXRNZXRob2RF
dmVudCgpIGhhcyB0byB1c2UKKyAgICAgICAgcHJlZWRpdFN0cmluZygpIGlmIGl0J3MgZW1wdHku
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjppbnB1dE1ldGhvZEV2ZW50KToKKworMjAwOS0wMy0zMCAgU2ltb24gSGF1c21hbm4gIDxzaW1v
bi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgVG9yIEFy
bmUgVmVzdGLDuC4KKworICAgICAgICBEb2N1bWVudCB0aGF0IHNldEh0bWwvc2V0Q29udGVudCBs
b2FkcyBvbmx5IHRoZSBodG1sL2RhdGEgaW1tZWRpYXRlbHksIG5vdCBleHRlcm5hbCBvYmplY3Rz
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3
LmNwcDoKKworMjAwOS0wMy0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgVHJ5IHRvIGZpeCBRdCBidWlsZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcDogQWRkZWQgaW5jbHVkZSBvZiBIVE1MRWxlbWVudC5oLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6IEFkZGVkIGluY2x1
ZGUgb2YgRm9ybVN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgUmVtb3ZlZCB1bm5l
ZWRlZCBjYWxsIHRvIGRldGFjaENoaWxkcmVuLCB3aGljaCBpcyBjYWxsZWQgYnkgRnJhbWVMb2Fk
ZXIKKyAgICAgICAgcmlnaHQgYWZ0ZXIgdGhpcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKTogVXNlIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZQorICAg
ICAgICBhcyBvdGhlciBwbGF0Zm9ybXMgZG8gaW4gdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25z
LgorCisyMDA5LTAzLTI3ICBFcmlrIEwuIEJ1bmNlICA8ZWxidW5jZUB4ZW5kb20uY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDg2OQorCisgICAgICAgIEZpeGVzIGFuIGlu
Y29ycmVjdCBjYXNlIGluIHRzdF9xd2VicGFnZS4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmN1cnNvck1vdmVtZW50
cyk6CisKKzIwMDktMDMtMjcgIEVyaWsgTC4gQnVuY2UgIDxlbGJ1bmNlQHhlbmRvbS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NzQ2CisKKyAgICAgICAgQWRkIG5ldyBl
ZGl0aW5nIHJlbGF0ZWQgUVdlYlBhZ2U6OldlYkFjdGlvbnMKKyAgICAgICAgKiBDbGlwYm9hcmQ6
IFBhc3RlQW5kTWF0Y2hTdHlsZQorICAgICAgICAqIEZvcm1hdHRpbmc6IFJlbW92ZUZvcm1hdCwg
VG9nZ2xlU3RyaWtldGhyb3VnaCwgVG9nZ2xlU3Vic2NyaXB0LCBhbmQKKyAgICAgICAgICBUb2dn
bGVTdXBlcnNjcmlwdAorICAgICAgICAqIExpc3QgRWRpdGluZzogSW5zZXJ0VW5vcmRlcmVkTGlz
dCwgSW5zZXJ0T3JkZXJlZExpc3QsIEluZGVudCwgT3V0ZGVudAorICAgICAgICAqIFBhcmFncmFw
aCBKdXN0aWZpY2F0aW9uOiBBbGlnbkNlbnRlciwgQWxpZ25KdXN0aWZpZWQsIEFsaWduTGVmdCwg
QWxpZ25SaWdodCAKKworICAgICAgICBJbXByb3ZlZCBzZWxlY3Rpb24gYW5kIGVkaXRpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjp1cGRhdGVFZGl0b3JBY3Rpb25zKToKKyAgICAgICAgKFFXZWJQYWdlOjphY3Rpb24pOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnRleHRTZWxlY3Rpb24pOgorICAg
ICAgICAodHN0X1FXZWJQYWdlOjp0ZXh0RWRpdGluZyk6CisKKzIwMDktMDMtMjYgIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgRml4IHRoZSBkb2N1bWVudGF0aW9u
IG9mIHRoZSBRTG9jYWxlIHVzYWdlIGluIHVzZXJBZ2VudEZvclVybC4KKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisKKzIwMDktMDMtMjAgIEVyaWsgTC4gQnVuY2UgIDxlbGJ1bmNlQHhl
bmRvbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAg
ICAgRml4IGZvciBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgYW5kIEluc2VydExpbmVTZXBhcmF0
b3Igc28gdGhhdAorICAgICAgICBRV2ViUGFnZTo6YWN0aW9uKCkgY3JlYXRlcyBRQWN0aW9ucyBm
b3IgdGhlbS4gQWxzbyBtYWtlIHN1cmUgdGhleSBnZXQKKyAgICAgICAgdXBkYXRlZCBhcHByb3By
aWF0ZWx5LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6dXBkYXRlRWRpdG9yQWN0aW9ucyk6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9u
KToKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
dHN0X1FXZWJQYWdlOjp0ZXh0RWRpdGluZyk6CisKKzIwMDktMDMtMjAgIEVyaWsgTC4gQnVuY2Ug
IDxlbGJ1bmNlQHhlbmRvbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVz
dGLDuC4KKworICAgICAgICBGaXggUVdlYlBhZ2U6OldlYkFjdGlvbnMgYWN0aW9uIHN0YXRlcyB0
byBtb3JlIGNsb3NlbHkgbWF0Y2ggd2hlbiB0aGV5IGFyZQorICAgICAgICBhY3R1YWxseSBhcHBs
aWNhYmxlIGFuZCByZW1vdmUgZXJyb25lb3VzIGRvY3VtZW50YXRpb24uCisKKyAgICAgICAgKiBN
b3N0IFdlYkFjdGlvbnMgaW1wbGVtZW50ZWQgdXNpbmcgZWRpdG9yIGNvbW1hbmRzIG5vdyB1c2Ug
dGhlCisgICAgICAgICAgRWRpdG9yOjpDb21tYW5kOjppc0VuYWJsZWQoKSB0byBjb250cm9sIHRo
ZWlyIGF2YWlsYWJpbGl0eS4KKyAgICAgICAgKiBTZWxlY3RBbGwgaXMgYWx3YXlzIGVuYWJsZWQg
KHNpbmNlIGl0J3MgZWRpdG9yIGNvbW1hbmQgaXMpLgorICAgICAgICAqIFNldFRleHREaXJlY3Rp
b257fSBmYW1pbHkgb2YgV2ViQWN0aW9ucyBhcmUgYXZhaWxhYmxlIHdoZW4gY2FuRWRpdCgpIGlz
IHRydWUKKyAgICAgICAgICBhbmQgbm90IGp1c3QgY2FuRWRpdFJpY2hseSgpLgorCisgICAgICAg
IEZpeCBhbmQgY2xhcmlmeSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBhdmFpbGFiaWxpdHkgb2Yg
dmFyaW91cyB3ZWIgYWN0aW9ucy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OnVwZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3Rz
dF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OnRleHRTZWxlY3Rpb24pOgor
CisyMDA5LTAzLTE5ICBBcml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRml4ZXMg
cGVkYW50aWMgY29tcGlsYXRpb24gaW4gUXRXZWJLaXQuCisKKyAgICAgICAgVGhlcmUgYXJlIG5v
IHNlbWktY29sb25zIGFmdGVyIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgKiBB
cGkvcXdlYmRhdGFiYXNlLmg6CisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oOgor
CisyMDA5LTAzLTE5ICBEYXZpZCBCb2RkaWUgIDxkYm9kZGllQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRG9jOiBSZW1vdmVk
IG9ic29sZXRlIHdhcm5pbmcgYWJvdXQgRmxhc2ggYW5kIG90aGVyIHBsdWdpbnMuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKworMjAwOS0wMy0xOSAgUGF1bCBPbGF2IFR2ZXRl
ICA8cGF1bC50dmV0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCisKKyAgICAgICAgUHJvcGVybHkgZXNjYXBlIHRvb2x0aXAgdGV4dAorCisgICAgICAg
IE1hbnVhbFRlc3Q6IGh0dHA6Ly94a2NkLmNvbS81NTQvCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6c2V0VG9vbFRpcCk6CisKKzIwMDktMDMtMTAgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRv
cmNobW9iaWxlLmNvbT4KKworICAgICAgICBCdWlsZCBmaXggZm9yIFF0IGFmdGVyIHI0MTU1NS4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6YWNjZXB0
TmF2aWdhdGlvblJlcXVlc3QpOgorCisyMDA5LTAzLTEwICBYYW4gTG9wZXogIDx4bG9wZXpAaWdh
bGlhLmNvbT4KKworICAgICAgICBCdWlsZCBmaXgsIG5vIHJldmlldy4KKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeSk6CisK
KzIwMDktMDMtMDcgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCisKKyAgICAgICAgVGhlc2UgbWV0
aG9kcyBhcmUgY2xlYXJseSByZXR1cm5pbmcgdGhlIHdyb25nIHZhbHVlcyBhcyB0aGUgdHdvIHdl
cmUKKyAgICAgICAgcmV0dXJuaW5nIHN3YXBwZWQgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnRvdGFsQnl0ZXMpOgorICAgICAg
ICAoUVdlYlBhZ2U6OmJ5dGVzUmVjZWl2ZWQpOgorCisyMDA5LTAzLTA1ICBBcml5YSBIaWRheWF0
ICA8YXJpeWEuaGlkYXlhdEBub2tpYS5jb20+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBOUEFQSSBwbHVnaW5zIGFyZSBzdXBwb3J0
ZWQsIGFkanVzdCB0aGUgQVBJIGRvY3VtZW50YXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKworMjAwOS0wMy0wNCAgQWRhbSBCYXJ0aCAgPGFiYXRoQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTYKKworICAgICAgICBG
aXggV2ViS2l0IHN0eWxlIGZvciBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcy4KKwor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJp
dmF0ZTo6YXBwbHkpOgorCisyMDA5LTAzLTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNDAKKworICAgICAg
ICBFeHBvc2UgQWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVybHMgdG8gUXQgY2xpZW50cy4K
KworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdz
UHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAwOS0wMy0wMyAgQXJpeWEgSGlkYXlh
dCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSdWJiZXItc3RhbXBl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIENyZWF0ZSBhbmQgdXBkYXRlIHRo
ZSBhY3Rpb24gZm9yIFNlbGVjdEFsbC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUFjdGlvbik6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OnVwZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OmFjdGlv
bik6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KHRzdF9RV2ViUGFnZTo6dGV4dFNlbGVjdGlvbik6CisKKzIwMDktMDMtMDIgIEFkYW0gVHJlYXQg
IDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KKworICAgICAgICBBZGQgdGhyZWUgbmV3IGRydCBoZWxwZXIgZnVuY3Rpb25zIHRo
YXQgZW5hYmxlIGFsbCBvZiB0aGUgdGVzdHMgaW4KKyAgICAgICAgTGF5b3V0VGVzdHMvYW5pbWF0
aW9uLyogYW5kIExheW91dFRlc3RzL3RyYW5zaXRpb25zLyogdG8gbm93IHBhc3MuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKHF0X2RydF9wYXVzZUFuaW1hdGlvbik6
CisgICAgICAgIChxdF9kcnRfcGF1c2VUcmFuc2l0aW9uT2ZQcm9wZXJ0eSk6CisgICAgICAgIChx
dF9kcnRfbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKworMjAwOS0wMy0wMiAgQmVuamFtaW4g
QyBNZXllciAgPGJlbmphbWluLm1leWVyQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMzAKKyAgICAgICAgT24gWDExIG1hdGNoIHRoZSBiZWhhdmlv
ciBvZiBGaXJlZm94IGFuZCBhbHNvIGNvcHkgdGhlIHVybCB0byB0aGUKKyAgICAgICAgY2xpcGJv
YXJkIHNlbGVjdGlvbiB3aGVuIHRoZSBhY3Rpb24gQ29weSBMaW5rIExvY2F0aW9uIGlzIGV4ZWN1
dGVkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0
cmlnZ2VyQWN0aW9uKToKKworMjAwOS0wMi0yNSAgS2F2aW5kcmEgUGFsYXJhamEgIDxrYXZpbmRy
YS5wYWxhcmFqYUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgRml4IHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbGlua0hvdmVyZWQg
c2lnbmFsLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOS0wMi0yMyAgQWRh
bSBUcmVhdCAgPGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDA5NAorICAgICAgICBNYWtlIHN1cmUgdG8gZW1wdHkgdGhlIGNhY2hlIG9u
IGV4aXQgdG8gZ2V0IHJpZCBvZiBzdXBlcmZsdW91cyBsZWFrIG1lc3NhZ2VzCisgICAgICAgIGZv
ciBDYWNoZWRSZXNvdXJjZSdzIGluIG9yZGVyIHRvIGtlZXAgdGhlIGxlYWsgbWVzc2FnZXMgYWNj
dXJhdGUuICBUaGlzCisgICAgICAgIGlzIGFuYWxhZ291cyB0byB3aGF0IHRoZSBNYWMgcG9ydCBp
cyBkb2luZyBvbiBhcHBsaWNhdGlvbiBleGl0IHdoZW4gYWxsCisgICAgICAgIFdlYlZpZXcncyBo
YXZlIGJlZW4gY2xvc2VkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6X3FfY2xlYW51cExlYWtNZXNzYWdlcyk6CisgICAgICAgIChRV2Vi
UGFnZTo6UVdlYlBhZ2UpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFw
aS9xd2VicGFnZV9wLmg6CisKKzIwMDktMDItMjMgIFRoaWFnbyBNYWNpZWlyYSAgPHRoaWFnby5t
YWNpZWlyYUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4u
CisKKyAgICAgICAgRml4IHRoZSBDb3B5cmlnaHQgbm90aWNlcyBpbiBhIGZldyBmaWxlcworCisg
ICAgICAgICogV2ViS2l0X3BjaC5oOgorCisyMDA5LTAyLTE2ICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBW
ZXN0YsO4LgorCisgICAgICAgIEF2b2lkIGxvYWRpbmcgcGx1Z2lucyB3aGVuIHRoZXkncmUgZGlz
YWJsZWQgaW4gdGhlIHNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpjYW5TaG93TUlNRVR5cGUpOiBEb24ndCBjYWxsIGludG8gdGhlCisgICAgICAgIFBsdWdpbkRh
dGFiYXNlIGlmIHBsdWdpbnMgYXJlIGRpc2FibGVkIGluIHRoZSBzZXR0aW5ncy4KKworMjAwOS0w
Mi0xMyAgQmVuamFtaW4gQyBNZXllciAgPGJlbmphbWluLm1leWVyQHRvcmNobW9iaWxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzM4CisgICAgICAgIEV4cG9z
ZSB0aGUgdXJsIGVsZW1lbnRzIHRhcmdldCBmcmFtZSBzdHJpbmcuICBUaGlzIGlzIHRoZSBzaXN0
ZXIgZnVuY3Rpb24KKyAgICAgICAgdG8gdGhlIGV4aXN0aW5nIGxpbmtUYXJnZXRGcmFtZSB3aGlj
aCByZXR1cm5zIHRoZSBRV2ViRnJhbWUqLiAgV2hlbiB0aGUKKyAgICAgICAgbGlua1RhcmdldEZy
YW1lIGlzIDAgaXQgaXMgdXNlZnVsIHRvIGtub3cgd2hhdCB0aGUgdGFyZ2V0IHdhcyB0byBiZS4K
KworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAoUVdlYkhpdFRl
c3RSZXN1bHQ6OmxpbmtUYXJnZXQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3
ZWJmcmFtZS5jcHA6CisKKzIwMDktMDItMTMgIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0
ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBSZW1vdmVkIGRvY3VtZW50YXRpb24gZm9yIGludGVybmFsIGZ1bmN0aW9ucy4KKworICAgICAg
ICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorCisyMDA5LTAyLTEzICBNYXJ0aW4gU21pdGggIDxt
c21pdGhAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBDb3JyZWN0ZWQgc29tZSBtaW5vciBxZG9jIGVycm9ycy4KKworICAgICAg
ICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorCisyMDA5LTAyLTExICBEaW1pdHJpIER1cHVpcy1s
YXRvdXIgIDxkdXB1aXNsYXRvdXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0dWIgb3V0IEluc3Bl
Y3RvckNsaWVudFF0OjpoaWRkZW5QYW5lbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3Ro
eSBIYXRjaGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmhpZGRlblBhbmVscyk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKworMjAwOS0w
Mi0xMCAgS2Fyc3RlbiBIZWltcmljaCAgPGtoZWltcmljQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRml4ZXMgbWlzc2luZyBu
YXZpZ2F0aW9uL3VybCB1cGRhdGUgd2hpbGUgY2xpY2tpbmcgb24gYW5jaG9yIGluc2lkZQorICAg
ICAgICB3ZWJwYWdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAgICAgIHVwZGF0ZSBhbmQgZW1pdCBp
biBjYXNlIHdlIG5hdmlnYXRlIGluc2lkZSBhIHdlYnBhZ2UKKworMjAwOS0wMi0xMCAgQWRhbSBU
cmVhdCAgPGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIEZpeCB0aGUgUXQg
YnVpbGQgYXMgY2xhc3MgU2VsZWN0aW9uIGlzIG5vdyBWaXNpYmxlU2VsZWN0aW9uLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1
ZXJ5KToKKworMjAwOS0wMi0wNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgor
CisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwOS0wMi0wNiAgS2F2aW5kcmEgUGFsYXJh
amEgIDxrYXZpbmRyYS5wYWxhcmFqYUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRG9jIC0gbWFkZSAyIGZ1bmN0aW9ucyBpbnRlcm5h
bCBhcyB0aGV5IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIGFueW1vcmUgKGFuZCB0aGlzIGZpeGVz
IDIgcWRvYyB3YXJuaW5ncykKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorCisy
MDA5LTAyLTA2ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEFkZGVkIGFu
IG92ZXJsb2FkIG9mIFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0IHRoYXQg
dGFrZXMgYSBRU2NyaXB0RW5naW5lOjpWYWx1ZU93bmVyc2hpcCBwYXJhbWV0ZXIuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2Ny
aXB0V2luZG93T2JqZWN0KTogTmV3IG92ZXJsb2FkLgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
aDoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6IEFkZGVkIHVu
aXQgdGVzdHMgZm9yIG93bmVyc2hpcAorICAgICAgICBtb2RlbHMuCisKKzIwMDktMDItMDYgIEFh
cm9uIEJvb2RtYW4gIDxhYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9s
Z2VyIEZyZXl0aGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGUpOikKKyAgICAgICAgRml4IGNvbXBpbGUgZXJyb3IgaW4gUXQgYnVp
bGQgaW50cm9kdWNlZCBieSB0aGUgYmVsb3cgY2hhbmdlIChyNDA2OTQpLgorCisyMDA5LTAyLTA1
ICBBYXJvbiBCb29kbWFuICA8YWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IERhdmUgSHlhdHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzA4CisgICAgICAgIEFkZHMgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkgY2Fs
bGJhY2sgdG8gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50Ojpkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUpOgorICAgICAgICBTdHViIG91dCBkb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGUoKS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0Lmg6CisgICAgICAgIERpdHRvLgorCisyMDA5LTAyLTA0ICBEYXZpZCBCb2RkaWUg
IDxkYm9kZGllQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCisKKyAgICAgICAgRG9jOiBEb2N1bWVudGVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhl
IGV2YWx1YXRlSmF2YVNjcmlwdCgpIGZ1bmN0aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisKKzIwMDktMDItMDMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAg
ICAgQWRkZWQgYSB1bml0IHRlc3QgdG8gdmVyaWZ5IHRoZSBzdWNjZXNmdWwgY29udmVyc2lvbiBm
cm9tIFFCeXRlQXJyYXkgdG8KKyAgICAgICAgSlNCeXRlQXJyYXkgYW5kIGJhY2sgdG8gUUJ5dGVB
cnJheS4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKwor
MjAwOS0wMi0wMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAg
IEJ1aWxkIGZpeC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToKKyAgICAgICAg
KFFXZWJGcmFtZTo6c2V0SHRtbCk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldENvbnRlbnQpOgor
CisyMDA5LTAyLTAyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQnVpbGQgZml4LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVG
cmFtZSk6CisKKzIwMDktMDItMDIgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFRyYWNrIHJlZGly
ZWN0cyBpbiBnbG9iYWwgaGlzdG9yeS4KKworICAgICAgICBLZWVwIFF0IGJ1aWxkaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yUmVk
aXJlY3RXaXRob3V0SGlzdG9yeUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKworMjAwOS0wMi0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCisKKyAgICAg
ICAgVXBkYXRlIGZvciBjaGFuZ2VzIHRvIFdlYkNvcmUuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDktMDItMDIgIEFkYW0gVHJlYXQgIDxh
ZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFz
IFppbW1lcm1hbm4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNTg3CisgICAgICAgIFJlZmFjdG9yIEhpdFRlc3RSZXF1ZXN0IHRvIGVsaW1pbmF0
ZSBhbGwgdGhlIHVnbHkgYm9vbGVhbiBhcmd1bWVudHMgYW5kCisgICAgICAgIHVzZSBhbiBlbnVt
IGJpdGZsYWcgaW5zdGVhZC4gIENsZWFudXAgYWxsIHRoZSBjb2RlIHRoYXQgY29uc3RydWN0cyB0
aGUKKyAgICAgICAgdmFyaW91cyBIaXRUZXN0UmVxdWVzdHMgdG8gbWFrZSB0aGUgY29kZSBtb3Jl
IHJlYWRhYmxlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWU6OmhpdFRlc3RDb250ZW50KToKKworMjAwOS0wMi0wMiAgQWRhbSBUcmVhdCAgPGFkYW0u
dHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQgdG8gY2Fs
bCBmb3JjZUxheW91dCBvbiB0aGUgdmlldyBpbnN0ZWFkLgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRGaXhlZExheW91dFNpemUpOgorICAgICAg
ICAoUVdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KToKKworMjAwOS0wMi0wMiAgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBNb3ZlIEZyYW1lOjpmb3JjZUxheW91dCwgRnJh
bWU6OmFkanVzdFBhZ2VIZWlnaHQgYW5kIEZyYW1lOjpmb3JjZUxheW91dFdpdGhQYWdlV2lkdGhS
YW5nZSB0byBGcmFtZVZpZXcKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0MjgKKworICAgICAgICBGcmFtZVZpZXc6OmZvcmNlTGF5b3V0IGNvdWxk
IGJlIGtpbGxlZCBidXQgdGhlIGNvbW1lbnQgbWlnaHQKKyAgICAgICAgY29udGFpbiBhIHZhbHVl
IG92ZXIgdGhlIHRoZSBwbGFpbiBGcmFtZVZpZXc6OmxheW91dC4uLgorCisgICAgICAgIEFkanVz
dCB0aGUgV2ViQ29yZS9XZWJLaXQgY29uc3VtZXJzIG9mIHRoZXNlIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXdwb3J0U2l6
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpmb3JjZUxheW91dCk6CisKKzIw
MDktMDEtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBC
dWlsZCBmaXguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1l
KToKKworMjAwOS0wMS0zMCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxm
aXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNTYKKworICAgICAg
ICBLaWxsIEZyYW1lTG9hZGVyQ2xpZW50LmNwcCwgbW92ZSB0aGUgY29kZSBvdmVyIHRvIEZyYW1l
OjpjcmVhdGVWaWV3CisKKyAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQgaXMgc3VwcG9zZWQgdG8g
YmUgYW4gaW50ZXJmYWNlLCBtb3ZlIHRoZQorICAgICAgICB0byBiZSBzaGFyZWQgY29kZSB0byBG
cmFtZSB3aGljaCBpcyBhIGNvbnRyb2xsZXIgYW5kIGlzCisgICAgICAgIGFsbG93ZWQgdG8gY3Jl
YXRlIGEgRnJhbWVWaWV3LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKworMjAwOS0wMS0zMCAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CisKKyAgICAgICAgU3BsaXQgImxvY2tIaXN0b3J5IiBpbnRvICJsb2NrSGlzdG9yeSIgYW5kICJs
b2NrQmFja0ZvcndhcmRMaXN0IiBpbgorICAgICAgICBwcmVwYXJhdGlvbiBmb3Igc2V0dGluZyB0
aGVtIGRpZmZlcmVudGx5IGR1cmluZyBhIHJlZGlyZWN0LgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKworMjAwOS0wMS0z
MCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZworCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlckNsaWVudCBjb2RlIHRo
YXQgaXMgbm93IGhhbmRsZWQgYnkgRnJhbWVMb2FkZXIgaXRzZWxmCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmZyYW1lTG9hZENvbXBsZXRlZCk6CisKKzIwMDktMDEtMzAgIFNp
bW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgSGlkZSB0aGUgT2ZmbGluZSBXZWIg
QXBwbGljYXRpb24gQ2FjaGUgcGF0aCBBUEkgZnJvbSB0aGUgcHVibGljIEFQSQorICAgICAgICBm
b3Igbm93LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChxdF93
ZWJzZXR0aW5nc19zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgpOgorICAgICAgICAo
cXRfd2Vic2V0dGluZ3Nfb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKToKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMDktMDEtMjggIEFkYW0gVHJlYXQgIDxhZGFtLnRy
ZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1l
cm1hbm4gYW5kIEdlb3JnZSBTdGFpa29zLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU1NworICAgICAgICBEbyBub3QgY2xpcCB0aGUgUVdlYkZy
YW1lOjpoaXRUZXN0Q29udGVudCBtZXRob2QgdG8gdGhlIHZpc2libGUgdmlld3BvcnQKKyAgICAg
ICAgYW5kIGFkZCBhIHJlZ3Jlc3Npb24gdGVzdCB0byBtYWtlIHN1cmUgaXQgd29ya3MuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6aGl0VGVzdENv
bnRlbnQpOgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKwor
MjAwOS0wMS0yOCAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4K
KworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBQ
cm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIEphdmFTY3JpcHQgZGlhbG9nIGJveGVz
IGxpa2UgaW4KKyAgICAgICAgbW9zdCB3ZWIgYnJvd3NlcnMsIGkuZS4gaW5kaWNhdGUgdGhhdCBp
cyBmcm9tIEphdmFTY3JpcHQgYW5kIHNob3cgdGhlCisgICAgICAgIGZyYW1lIFVSTC4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdEFs
ZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChR
V2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6CisKKzIwMDktMDEtMjcgIEFyaXlhIEhpZGF5YXQg
IDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4uCisKKyAgICAgICAgaHR0cDovL3F0Lm5va2lhLmNvbS9kZXZlbG9wZXIvdGFz
ay10cmFja2VyL2luZGV4X2h0bWw/aWQ9MjM4MzkxJm1ldGhvZD1lbnRyeQorCisgICAgICAgIFtR
dF0gSWYgUVBhaW50ZXIgZmFpbHMgdG8gc3RhcnQgb24gYSBRUHJpbnRlciBpbnN0YW5jZSwgZG8g
bm90CisgICAgICAgIGNvbnRpbnVlIHByaW50aW5nLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnByaW50KToKKworMjAwOS0wMS0yNyAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJl
cm5zdGVpbgorCisgICAgICAgIFJld29yayBGcmFtZUxvYWRlckNsaWVudCB0byB3b3JrIG9uIGEg
Q2FjaGVkRnJhbWUgYmFzaXMgaW5zdGVhZCBvZiBDYWNoZWRQYWdlCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZy
b21DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oOgorCisyMDA5LTAxLTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0CisgICAgICAgIAorICAgICAg
ICBCYWNrIG91dCByNDAyODUsIGJlY2F1c2UgaXQgd2FzIGNoZWNrZWQgaW4gd2l0aCBubyBidWcg
bnVtYmVyLCBubworICAgICAgICB0ZXN0Y2FzZSwgaXMgcmVuZGVyaW5nIGNoYW5nZSB0aGF0IGRp
ZCBub3QgZ2V0IHRob3JvdWdoIHJldmlldywKKyAgICAgICAgYW5kIGJyb2tlIHRoZSBNYWMgYnVp
bGQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6
aGl0VGVzdENvbnRlbnQpOgorCisyMDA5LTAxLTI2ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0
b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5u
LgorCisgICAgICAgIERvIG5vdCBjbGlwIHRoZSBRV2ViRnJhbWU6OmhpdFRlc3RDb250ZW50IG1l
dGhvZCB0byB0aGUgdmlzaWJsZSB2aWV3cG9ydC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudCk6CisKKzIwMDktMDEtMjYg
IERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBEb2M6IHFkb2MgZml4IGZvciBhIGxpbmsg
dG8gYSBwcm9wZXJ0eSBhbmQgYWRkZWQgYSBiYXNpYyBkZXNjcmlwdGlvbiBvZiB0aGUgb2ZmbGlu
ZSBjYWNoaW5nIGFuZCBzdG9yYWdlIGZlYXR1cmVzIGZyb20gSFRNTCA1LgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKworMjAw
OS0wMS0yNSAgVXJzIFdvbGZlciAgPHV3b2xmZXJAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGQgUVdlYlBhZ2U6OlNlbGVjdEFsbCB0
byBXZWJBY3Rpb24gZW51bSB0byBzZWxlY3QgYWxsIGNvbnRlbnQuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQ2CisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JL
ZXlFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDktMDEtMjUgIERhdmlk
IEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KKworICAgICAgICBEb2M6IEZpeGVkIHRoZSB0ZXJtaW5vbG9neSB1c2Vk
LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOS0wMS0yNSAgVGhpYWdvIE1h
Y2llaXJhICA8dGhpYWdvLm1hY2llaXJhQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBSZW5hbWUgbGlua3MgZnJvbSB0cm9sbHRlY2gu
Y29tIHRvIHF0c29mdHdhcmUuY29tCisKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmZhY3Rvcnku
Y3BwOgorCisyMDA5LTAxLTI1ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBN
YWtlIFFXZWJQYWdlIGF1dG8tdGVzdCBtb3JlIHJvYnVzdCBieSBjbGVhbmluZyB1cCBnZW5lcmF0
ZWQgZmlsZXMKKworICAgICAgICBTb21ldGltZXMgdGhlIGF1dG8tdGVzdCBtYXkgc2VnZmF1bHQs
IGxlYXZpbmcgYmVoaW5kIGZpbGVzIGJlY2F1c2UgdGhlCisgICAgICAgIGNhbGwgdG8gY2xlYW51
cFRlc3RDYXNlKCkgbmV2ZXIgaGFwcGVucywgc28gd2UgYWxzbyBjbGVhbiB1cCB0aGUgZmlsZXMK
KyAgICAgICAgYXQgaW5pdFRlc3RDYXNlKCkganVzdCB0byBtYWtlIHN1cmUgd2UncmUgcnVubmlu
ZyBpbiBhIGNsZWFuIGVudmlyb25tZW50LgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0
X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y2xlYW51cEZpbGVzKToKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6aW5pdFRlc3RDYXNlKToKKyAgICAgICAgKHRzdF9RV2ViUGFn
ZTo6Y2xlYW51cFRlc3RDYXNlKToKKworMjAwOC0xMi0yMCAgVXJzIFdvbGZlciAgPHV3b2xmZXJA
a2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAg
ICBGaXg6IGNvbXBpbGUgcXdlYmhpc3RvcnkuaCB3aXRoIHBlbmRhbnRpYyBjb21pbGVyIGZsYWcu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQ3
CisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuaDoKKworMjAwOS0wMS0yNCAgQWRhbSBUcmVh
dCAgPGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIE9vcHMsIGZpeCB0aGUg
UXQgYnVpbGQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJG
cmFtZTo6cmVuZGVyKToKKworMjAwOS0wMS0yNCAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9y
Y2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4K
KworICAgICAgICBBZGQgUVdlYkZyYW1lOjpyZW5kZXJDb250ZW50cygpIG1ldGhvZCB3aGljaCBh
bGxvd3MgYXJiaXRhcnkgcmVuZGVyaW5nCisgICAgICAgIG9mIGFueSBjb250ZW50IHJlZ2lvbiB3
aXRoaW4gdGhlIFFXZWJGcmFtZS4gIEl0IGFsc28gZG9lcyBub3QgZHJhdyBhbnkKKyAgICAgICAg
c2Nyb2xsYmFycy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjpyZW5kZXJDb250ZW50cyk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorCisy
MDA5LTAxLTIzICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIE1ha2UgdGhl
IHRlc3QgbW9yZSByb2J1c3QgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUgcGxhdGZvcm0tc3Bl
Y2lmaWMKKyAgICAgICAgY3Vyc29yIGZsYXNoaW5nIHRpbWUuCisKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDktMDEtMjAgIEZyaWVkZW1hbm4gS2xl
aW50ICA8RnJpZWRlbWFubi5LbGVpbnRAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZpeCBzcGVsbGluZyBlcnJvciBpbiBRV2ViUGFn
ZQorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjphY3Rp
b24pOgorCisyMDA5LTAxLTE5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAg
IEZpeCBjYWxsaW5nIG9mIG9ua2V5cHJlc3MgZXZlbnQgaGFuZGxlcnMgb24gaW5wdXQgZWxlbWVu
dHMgd2hlbiBwcmVzc2luZyBlbnRlcgorICAgICAgICBhbmQgb3RoZXIgdGV4dCBpbnNlcnRpb24g
Y29tbWFuZHMgaW4gdGhlIFF0IHBvcnQuCisKKyAgICAgICAgU2ltaWxhciB0byB0aGUgd2luIGFu
ZCBtYWMgcG9ydHMgZG9uJ3QgZXhlY3V0ZSB0ZXh0IGluc2VydGluZyBlZGl0b3IKKyAgICAgICAg
Y29tbWFuZHMgb24gUmF3S2V5RG93biBidXQgY29udGludWUgcHJvY2Vzc2luZyB0aGUgZXZlbnQg
Zmlyc3QgaW4KKyAgICAgICAgV2ViQ29yZSwgaS5lLiBhbHNvIGdldCBhIGtleXByZXNzIGV2ZW50
IHNlbnQuIElmIHVuaGFuZGxlZCBpdCB3aWxsCisgICAgICAgIGNvbWUgYmFjayB0byBFZGl0b3JD
bGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCBsYXRlciBhbmQgd2UgZXhlY3V0ZQorICAgICAg
ICBpdCB0aGVuLgorCisgICAgICAgIFRoaXMgYWxzbyBmaXhlcyBzZWFyY2ggYnkgcHJlc3Npbmcg
ZW50ZXIgb24gd3d3LnRyYWZpa2FudGVuLm5vLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQ29tbWFuZEZvcldlYkFjdGlvbnMp
OiBNYWtlIGZ1bmN0aW9uCisgICAgICAgIGFjY2Vzc2libGUgZnJvbSBvdGhlciBmaWxlcy4KKyAg
ICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKTogQWRqdXN0IHRvIG5ldyBmdW5jdGlvbiB2
aXNpYmlsaXR5LgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogRG9uJ3QgZXhlY3V0ZQorICAgICAg
ICB0ZXh0IGluc2VydGluZyBjb21tYW5kcyBvbiBSYXdLZXlQcmVzc0Rvd24uCisKKzIwMDktMDEt
MTYgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUnViYmVyLXN0YW1wZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBJbmNy
ZWFzZSBwb3B1cCBmb2N1cyBkZWxheSB0aW1lIHRvIGEgc2Vuc2libGUgNTAwIG1zLgorCisgICAg
ICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOgorCisyMDA5LTAxLTE2ICBB
cml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIFJvYmVuLgorCisgICAgICAgICBbUXRdIFByZXZlbnQgY3Jhc2ggaWYg
cGx1Z2luIGRhdGEgaXMgTlVMTC4KKworICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcDogTlVMTCBjaGVjay4KKyAgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisKKzIwMDktMDEtMTYgIEFyaXlhIEhp
ZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBQZXItbGluZSBjdXJzb3Ig
bW92ZW1lbnQgdGVzdHMgZGVwZW5kIG9uIHBsYXRmb3JtLXNwZWNpZmljIGZvbnQKKyAgICAgICAg
bWV0cmljcy4gUmVtb3ZlIHRoZW0gdG8gYXZvaWQgdGVzdCBmYWlsdXJlcyBvbiBkaWZmZXJlbnQg
cGxhdGZvcm1zLgorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y3Vyc29yTW92ZW1lbnRzKToKKworMjAwOS0wMS0xNiAg
QXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBodHRwOi8vcXQubm9r
aWEuY29tL2RldmVsb3Blci90YXNrLXRyYWNrZXIvaW5kZXhfaHRtbD9pZD0yMTkzNDQmbWV0aG9k
PWVudHJ5CisKKyAgICAgICAgW1F0XSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgUVdlYlBhZ2U6Oldl
YkFjdGlvbiBlbnVtLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOS0wMS0x
NiAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAg
ICBBbm90aGVyIGF0dGVtcHQgYXQgZml4aW5nIHRoZSBRdCBidWlsZC4KKworICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5k
b3dPYmplY3QpOgorCisyMDA5LTAxLTE0ICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisK
KyAgICAgICAgW1F0XSBVbml0IHRlc3RzIGZvciB0ZXh0IHNlbGVjdGlvbiBhbmQgZWRpdGluZyBh
Y3Rpb25zIG9mIFFXZWJQYWdlLgorICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSB0ZXN0ZWQ6Cisg
ICAgICAgICAgICAtIHRoZSBhY3Rpb25zIGFyZSBub3QgTlVMTAorICAgICAgICAgICAgLSB0aGUg
YWN0aW9ucyBhcmUgZGlzYWJsZWQgd2hlbiBjb250ZW50RWRpdGFibGUgaXMgZmFsc2UKKyAgICAg
ICAgICAgIC0gdGhlIGFjdGlvbnMgYXJlIGVuYWJsZWQgd2hlbiBjb250ZW50RWRpdGFibGUgaXMg
dHJ1ZQorCisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKHRzdF9RV2ViUGFnZTo6dGV4dFNlbGVjdGlvbik6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6
OnRleHRFZGl0aW5nKToKKworMjAwOS0wMS0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4K
KworICAgICAgICBGaXggZmFpbGluZyBhc3NlcnRpb24gd2hlbiBwcmVzc2luZyBhbiBleHRyYSBt
b3VzZSBidXR0b24gb24gYQorICAgICAgICBRV2ViVmlldy4KKworICAgICAgICBNaWNlIHdpdGgg
bW9yZSB0aGFuIHRocmVlIGJ1dHRvbnMgLSBmb3IgZXhhbXBsZSB3aXRoIGEgZGVkaWNhdGVkCisg
ICAgICAgICJiYWNrIiBidXR0b24gLSBjYW4gZ2VuZXJhdGUgUXQ6OlhCdXR0b24xIG9yIEJ1dHRv
bjIuCisgICAgICAgIFdlYkNvcmU6Ok1vdXNlQnV0dG9uIGNvbnRhaW5zIG9ubHkgTGVmdCwgTWlk
ZGxlIGFuZCBSaWdodCwgc28gaW4KKyAgICAgICAgUXQncyBQbGF0Zm9ybU1vdXNlRXZlbnQgd2Ug
bWFwIHRvIE5vQnV0dG9uLCByZXN1bHRpbmcgaW4gYSBtb3VzZQorICAgICAgICBwcmVzcyBvciBy
ZWxlYXNlIGV2ZW4gd2l0aCBubyBidXR0b24gc2V0LiBUaGF0IHRyaWdnZXJzIGFuIGFzc2VydGlv
bgorICAgICAgICBpbiBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudCByZXF1aXJp
bmcgdGhhdCBlaXRoZXIgYSBidXR0b24KKyAgICAgICAgaXMgc2V0IG9yIGl0IGlzIGp1c3QgYSBt
b3VzZSBtb3ZlIGV2ZW50LCB3aGljaCBpcyBjb3JyZWN0LgorCisgICAgICAgIEluIFFXZWJQYWdl
IGRlY2lkZSBub3QgdG8gZGlzcGF0Y2ggc3VjaCBtb3VzZSBldmVudHMgd2hlcmUgd2UgY2Fubm90
CisgICAgICAgIG1hcCB0aGUgbW91c2UgYnV0dG9uIHRvIGEgV2ViQ29yZTo6TW91c2VCdXR0b24u
CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZURvdWJs
ZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVRyaXBsZUNsaWNr
RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudCk6CisK
KzIwMDktMDEtMTQgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgaHR0cDov
L3F0Lm5va2lhLmNvbS9kZXZlbG9wZXIvdGFzay10cmFja2VyL2luZGV4X2h0bWw/aWQ9MjQxMTQ0
Jm1ldGhvZD1lbnRyeQorCisgICAgICAgIFtRdF0gQ3JlYXRlIGFjdGlvbnMgZm9yIHRleHQgc2Vs
ZWN0aW9uIGFuZCBlZGl0aW5nIGZvciBRV2ViUGFnZS4KKyAgICAgICAgQWxzbyBwcm9wZXJseSBk
aXNhYmxlIGFuZCBlbmFibGUgdGhlbSB3aGVuIGNvbnRlbnRFZGl0YWJsZSBpcyB0b2dnbGVkLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
dXBkYXRlQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlRWRpdG9yQWN0
aW9ucyk6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToKKworMjAwOS0wMS0xNCAgQXJpeWEg
SGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBbUXRdIFVuaXQgdGVzdHMgZm9yIGN1cnNv
ciBtb3ZlbWVudHMuIFRoZSBmb2xsb3dpbmcgYXJlIHRlc3RlZDoKKyAgICAgICAgICAgIC0gdGhl
IGFjdGlvbnMgYXJlIG5vdCBOVUxMCisgICAgICAgICAgICAtIHRoZSBhY3Rpb25zIGFyZSBkaXNh
YmxlZCB3aGVuIGNvbnRlbnRFZGl0YWJsZSBpcyBmYWxzZQorICAgICAgICAgICAgLSB0aGUgYWN0
aW9ucyBhcmUgZW5hYmxlZCB3aGVuIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlCisgICAgICAgICAg
ICAtIHRoZSBjdXJzb3IgbW92ZXMgcHJvcGVybHkgd2hlbiB0aGUgYWN0aW9ucyBhcmUgdHJpZ2dl
cmVkCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoQ3Vyc29yVHJhY2tlZFBhZ2U6OkN1cnNvclRyYWNrZWRQYWdlKToKKyAgICAgICAgKEN1cnNv
clRyYWNrZWRQYWdlOjpzZWxlY3RlZFRleHQpOgorICAgICAgICAoQ3Vyc29yVHJhY2tlZFBhZ2U6
OnNlbGVjdGlvblN0YXJ0T2Zmc2V0KToKKyAgICAgICAgKEN1cnNvclRyYWNrZWRQYWdlOjpzZWxl
Y3Rpb25FbmRPZmZzZXQpOgorICAgICAgICAoQ3Vyc29yVHJhY2tlZFBhZ2U6OmlzU2VsZWN0aW9u
Q29sbGFwc2VkKToKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6Y3Vyc29yTW92ZW1lbnRzKToKKwor
MjAwOS0wMS0wOCAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW4uemhhbmdAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE4NworCisgICAgICAgIFVwZGF0ZSB3ZWJ2
aWV3IHdpdGggdGhlIGludGVyc2VjdGVkIHJlY3QuCisKKyAgICAgICAgSW4gQ2hyb21lQ2xpZW50
UXQ6OnJlcGFpbnQsIHZpZXcgc2hvdWxkIGJlIHVwZGF0ZWQgd2l0aCB0aGUKKyAgICAgICAgaW50
ZXJzZWN0ZWQgcmVjdCwgbm90IHRoZSB3aG9sZSB3aW5kb3dSZWN0OworCisgICAgICAgIFRoaXMg
Z2VuZXJhbGx5IGlzIG5vdCBhIHByb2JsZW0gZm9yIG5vcm1hbCB2aWV3cG9ydCBzZXR1cCB3aGVy
ZQorICAgICAgICB2aWV3cG9ydCBzaXplIGlzIHRoZSBzYW1lIGFzIHRoZSBxd2VidmlldyB3aWRn
ZXQgc2l6ZS4gIEhvd2V2ZXIsIGlmIHdlCisgICAgICAgIHNldCB0aGUgdmlld3BvcnQgc2l6ZSBz
bWFsbGVyIHRoYW4gcXdlYmtpdCB3aWRnZXQsIHdlIHdpbGwgc2VlCisgICAgICAgIHVud2FudGVk
IHBhaW50aW5nIG91dHNpZGUgdGhlIHZpZXdwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OnJlcGFpbnQpOgorCisyMDA5LTAxLTEzICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRvciBBcm5lIFZlc3Ri
w7guCisKKyAgICAgICAgW1F0XSBNaXNzaW5nIHBpZWNlIGZyb20gbXkgcHJldmlvdXMgY29tbWl0
OgorICAgICAgICBEaXNhYmxlIGFuZCBlbmFibGUgdGhlIGN1cnNvciBuYXZpZ2F0aW9uIGFjdGlv
bnMgd2hlbiBjb250ZW50RWRpdGFibGUKKyAgICAgICAgaXMgY2hhbmdlZC4KKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUVkaXRv
ckFjdGlvbnMpOgorCisyMDA5LTAxLTEzICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisK
KyAgICAgICAgW1F0XSBDcmVhdGUgYWN0aW9ucyBmb3IgY3Vyc29yIG5hdmlnYXRpb24gZm9yIFFX
ZWJQYWdlLiAKKyAgICAgICAgQWxzbyBwcm9wZXJseSBkaXNhYmxlIGFuZCBlbmFibGUgdGhlbSB3
aGVuIGNvbnRlbnRFZGl0YWJsZSBpcyB0b2dnbGVkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlQWN0aW9uKToKKyAgICAgICAg
KFFXZWJQYWdlOjphY3Rpb24pOgorCisyMDA5LTAxLTEzICBTaW1vbiBIYXVzbWFubiAgPHNpbW9u
LmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0
YsO4LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzE3MQorCisgICAgICAgIEJhc2VkIG9uIHBhdGNoIGJ5IFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIE1ha2UgdGhlIFFXZWJTZXR0aW5ncyBmdW5jdGlvbnMg
Zm9yIHNldHRpbmcgdGhlIHBhdGggZm9yIHRoZSBsb2NhbAorICAgICAgICBzdG9yYWdlIGRhdGFi
YXNlIHByaXZhdGUgUXRXZWJraXQgQVBJLCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkgdG8KKyAgICAg
ICAgYXNzb2NpYXRlZCBhIFFXZWJQYWdlIHdpdGggYSBuYW1lZCBwYWdlIGdyb3VwLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHF0X3dlYnBhZ2Vfc2V0R3JvdXBOYW1l
KTogQWRkZWQuCisgICAgICAgIChxdF93ZWJwYWdlX2dyb3VwTmFtZSk6IEFkZGVkLgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAoRXh0ZW5zaW9uT3B0aW9uOjpoYW5kbGUpOiBB
ZGRlZCBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChxdF93ZWJzZXR0aW5nc19zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGgpOiBNYWRlIHByaXZhdGUgQVBJLgorICAgICAgICAocXRfd2Vic2V0dGluZ3NfbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKTogTWFkZSBwcml2YXRlIEFQSS4KKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKHRzdF9RV2ViUGFnZTo6ZGF0YWJhc2UpOiBTbWFsbCBjbGVhbnVwLgorICAgICAgICAo
dHN0X1FXZWJQYWdlOjptdWx0aXBsZVBhZ2VHcm91cHNBbmRMb2NhbFN0b3JhZ2UpOiBOZXcgdGVz
dCBmb3IgdGhlCisgICAgICAgIHBhZ2UgZ3JvdXAgaGFuZGxpbmcsIHdyaXR0ZW4gYnkgWWFlbC4K
KworMjAwOS0wMS0xMiAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgW1F0XSBF
bnN1cmUgdGhhdCB3ZSdyZSBhbHdheXMgbm90aWZpZWQgb2YgbmF2aWdhdGlvbiBhY3Rpb25zIGZv
ciBsb2NhbCBhbmNob3JzCisgICAgICAgIAorICAgICAgICBGcmFtZUxvYWRlcjo6Y2hlY2tOYXZp
Z2F0aW9uUG9saWN5KCkgZG9lcyBub3Qgbm90aWZ5IHVzIGlmIHRoZSByZXF1ZXN0IGhhcworICAg
ICAgICBiZWVuIGNoZWNrZWQgYmVmb3JlICh3aGljaCBoYXBwZW5zIGZvciBsb2NhbCBhbmNob3Jz
KSwgYnV0IGluIHRoZSBjYXNlIG9mCisgICAgICAgIG91ciBjbGllbnRzIG5vdCBhY2NlcHRpbmcg
dGhlIG5hdmlnYXRpb24gcmVxdWVzdCB3ZSBkbyB3YW50IHRvIGJlIG5vdGlmaWVkCisgICAgICAg
IGFnYWluIGxhdGVyIG9uLCBzbyB3ZSBjbGVhciB0aGUgbGFzdENoZWNrZWRSZXF1ZXN0IGZsYWcu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKzIwMDktMDEt
MTIgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUnViYmVyLXN0YW1wZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBCdWlsZCBm
aXg6IHVzZSBxb2JqZWN0X2Nhc3Qgd2hpY2ggZG9lcyBub3QgcmVseSBvbiBSVFRJLiBUaGlzIGZp
eGVzIHRoZQorICAgICAgICB1bml0IHRlc3Qgd2hlbiBidWlsZGluZyBpdCB3aXRoIGEgdmVyc2lv
biBvZiBRdCAoZS5nLiBRdC9FbWJlZGRlZCkKKyAgICAgICAgY29uZmlndXJlZCB3aXRob3V0IFJU
VEkuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIw
MDktMDEtMTIgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAgV2hl
biB0aGUgUVdlYlZpZXcgaXMgZGlzYWJsZWQgY29udGV4dCBtZW51cyBpbXBsZW1lbnRlZCBpbiBK
YXZhU2NyaXB0IHNob3VsZCBub3QgcG9wIHVwLgorCisgICAgICAgIEp1c3QgbGlrZSBpbiBRV2lk
Z2V0OjpldmVudCgpIHdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoZSBkaXNhYmxlZCBzdGF0ZSBhbmQK
KyAgICAgICAgaWdub3JlIGNvbnRleHQgbWVudSBldmVudHMuCisKKyAgICAgICAgKiBBcGkvcXdl
YnZpZXcuY3BwOgorCisyMDA5LTAxLTEyICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5u
QG5va2lhLmNvbQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAg
ICAgICAgRml4IFFXZWJWaWV3IGFwcGVhcmFuY2Ugd2hlbiBzaG93ZWQgdW5pbml0aWFsaXplZCB3
aXRob3V0IHBhZ2UuCisKKyAgICAgICAgT25seSBzZXQgV0FfT3BhcXVlUGFpbnRFdmVudCBpZiB3
ZSBoYXZlIGEgcGFnZSBzZXQgdGhhdCB3aWxsIGFjdHVhbGx5CisgICAgICAgIHBhaW50IHRoZSBl
bnRpcmUgY29udGVudHMsIG90aGVyd2lzZSB0aGUgb3B0aW1pemF0aW9uIGRvZXMgbm90IGFwcGx5
CisgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIGEgcGFpbnRFdmVudCgpIGltcGxlbWVudGF0aW9u
IGFuZCBRdCBoYXMgdG8gZmlsbCB0aGUKKyAgICAgICAgdmlldyB3aXRoIGl0cyBkZWZhdWx0IGJh
Y2tncm91bmQgaW5zdGVhZC4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAg
IChRV2ViVmlldzo6UVdlYlZpZXcpOgorICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorCisy
MDA5LTAxLTExICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAgICAg
RG8gbm90IGNyZWF0ZSBhIFFWYXJpYW50IGZyb20gUU9iamVjdCogZGlyZWN0bHksIHVzZSB0aGUK
KyAgICAgICAgdGVtcGxhdGUtc3BlY2lhbGl6ZWQgZnVuY3Rpb24uCisKKyAgICAgICAgKiB0ZXN0
cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChNeVFPYmplY3Q6Om15T3Zl
cmxvYWRlZFNsb3QpOgorCisyMDA5LTAxLTA5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNt
YW5uQG5va2lhLmNvbT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBUb3IgQXJuZSBWZXN0
YsO4LgorCisgICAgICAgIERvY3VtZW50YXRpb24gZml4ZXMsIHJlbW92ZSBkdXBsaWNhdGVkIGRv
Y3MsIGRvY3VtZW50IG1pc3NpbmcKKyAgICAgICAgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHZhbHVl
cy4KKworICAgICAgICAqIEFwaS9xd2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisKKzIwMDktMDEtMDkgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAg
ICAgICAgRml4IGxpbmtpbmcgYWdhaW5zdCBRdFdlYktpdCBvbiBXaW5kb3dzLCBieSBkZWZpbmlu
ZyB0aGUgRVhQT1JUIG1hY3JvcworICAgICAgICBfZXhhY3RseV8gdGhlIHNhbWUgd2F5IGFzIGlu
IHFnbG9iYWwuaCwgZGVwZW5kaW5nIG9uIFFUX05PRExMLAorICAgICAgICBRVF9NQUtFRExMIGFu
ZCBRVF9TSEFSRUQuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdGdsb2JhbC5oOgorCisyMDA5LTAx
LTA5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbW92ZSBxd2VibmV0
d29ya2ludGVyZmFjZS5oIGZyb20gV0VCS0lUX0FQSV9IRUFERVJTIGFzIGl0J3Mgbm90CisgICAg
ICAgIHB1YmxpYyBRdCA0LjQvNC41IEFQSS4KKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToK
KworMjAwOS0wMS0wOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+
CisKKyAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBmaXgsIHJlbW92ZSBxY29va2llamFyLmgg
ZnJvbSB0aGUgQVBJIGhlYWRlcnMgYW5kCisgICAgICAgIHRoZXJlZm9yZSBIRUFERVJTLiBJdCdz
IG5vdCBwYXJ0IG9mIHRoZSBBUEkgYW5kIGl0IG1vYyBzaG91bGRuJ3QgYmUKKyAgICAgICAgY2Fs
bGVkIG9uIGl0LgorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgorCisyMDA5LTAxLTA5ICBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBSdWJi
ZXItc3RhbXBlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIFJlbW92ZSBmaWxlcyBu
b3QgcHJlc2VudCBhbnltb3JlIGZyb20gdGhlIFdFQktJVF9BUElfSEVBREVSUyB2YXJpYWJsZS4K
KworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToKKworMjAwOS0wMS0wOCAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIERvbid0IHNldCB0aGUgbWluaW11bUZvbnRTaXplIGFuZCBt
aW5pbXVtTG9naWNhbEZvbnRTaXplIGFzIHRoZXNlIGFyZQorICAgICAgICBqdXN0IGZvciBhY2Nl
c3NpYmlsaXR5IGFuZCBzaG91bGQgYmUgbGVmdCB1cCB0byB0aGUgY2xpZW50IGFwcGxpY2F0aW9u
LgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OlFXZWJTZXR0aW5ncyk6CisKKzIwMDktMDEtMDggIEthdmluZHJhIFBhbGFyYWphICA8a2Rw
YWxhcmFAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBTbWFsbCBmaXhlcyB0byB0aGUgQVBJIGRvY3VtZW50YXRpb24sIG1pc3Np
bmcgNC41IHRhZ3MgYW5kCisgICAgICAgIHVuZG9jdW1lbnRlZCBwYXJhbWV0ZXJzLgorCisgICAg
ICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorCisyMDA5LTAxLTA3ICBBZGFtIFRyZWF0
ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
cmdlIFN0YWlrb3MuCisKKyAgICAgICAgQWRkIFF0IEFQSSB0byBRV2ViSGl0VGVzdFJlc3VsdDo6
aXNTY3JvbGxCYXIgbWV0aG9kCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToK
KyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0Ojppc1Njcm9sbEJhcik6CisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAoUVdl
YkhpdFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorCisyMDA5
LTAxLTA3ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgQWRkIFF0IEFQSSBmb3Ig
UVdlYkZyYW1lOjpzY3JvbGxCYXJHZW9tZXRyeSBtZXRob2QKKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxCYXJHZW9tZXRyeSk6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5oOgorCisyMDA5LTAxLTA3ICBBZGFtIFRyZWF0ICA8YWRhbS50
cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlr
b3MuCisKKyAgICAgICAgRml4IHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncworCisgICAgICAgICog
dGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFRlc3RQYWdlOjpjcmVh
dGVXaW5kb3cpOgorCisyMDA5LTAxLTA3ICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEhhdXNtYW5u
LgorCisgICAgICAgIFF0IGJ1aWxkIGZpeCBhZnRlciByMzk2NzAuCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToK
KworMjAwOS0wMS0wNiAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCisKKyAgICAgICAgQWxs
b3cgYnVpbGRpbmcgUXRXZWJLaXQgc3RhdGljYWxseSAod2l0aGluIFF0KS4KKworICAgICAgICBo
dHRwOi8vdHJvbGx0ZWNoLmNvbS9kZXZlbG9wZXIvdGFzay10cmFja2VyL2luZGV4X2h0bWw/aWQ9
MjExMjczJm1ldGhvZD1lbnRyeQorCisgICAgICAgICogQXBpL3F3ZWJraXRnbG9iYWwuaDoKKwor
MjAwOS0wMS0wNiAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFVwZGF0ZSB0aGUg
ZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHdoZW4gdGhlc2UgQVBJIGNoYW5nZXMgd2lsbCBsYW5k
IGluCisgICAgICAgIHVwc3RyZWFtIFF0CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisyMDA5LTAxLTA1ICBBZGFtIFRyZWF0ICA8
YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vvcmdl
IFN0YWlrb3MuCisKKyAgICAgICAgQWRkIFF0IEFQSSBmb3IgUVdlYkZyYW1lOjpjb250ZW50c1Np
emVDaGFuZ2VkIHNpZ25hbAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpjb250ZW50c1NpemVD
aGFuZ2VkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisy
MDA5LTAxLTA1ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgRml4ZXMgUVdlYkZy
YW1lOjpzZXRTY3JvbGxCYXJQb2xpY3koLi4pIHRvIGFjdHVhbGx5IHdvcmsuICBBbHNvIGhhcHBl
bnMKKyAgICAgICAgdG8gZml4IDE5MiBsYXlvdXQgdGVzdHMgdGhhdCB3ZXJlIHByZXZpb3VzbHkg
ZmFpbGluZyBmb3IgUXQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZTo6c2V0U2Nyb2xsQmFyUG9saWN5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorCisyMDA5LTAxLTA0
ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgQWRkIG5ldyBBUEkgdG8gUVdlYkhp
dFRlc3RSZXN1bHQgdG8gcmV0dXJuIGEgcmVjdCBmb3IgdGhlIHNtYWxsZXN0IGVuY2xvc2luZwor
ICAgICAgICBibG9jayBlbGVtZW50IG9mIHRoZSBoaXQgdGVzdAorCisgICAgICAgICogQXBpL3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGU6OlFXZWJIaXRU
ZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6ZW5jbG9zaW5n
QmxvY2spOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lX3AuaDoKKworMjAwOC0xMi0zMCAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9yY2htb2Jp
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgorCisgICAgICAg
IE1ha2UgdGhlIHF0IHBvcnQgYnVpbGQgYW5kIHdvcmsgd2l0aCB0aGUgbmV3IGZpeGVkTGF5b3V0
U2l6ZSBmZWF0dXJlCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2U6OmZpeGVk
TGF5b3V0U2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0Rml4ZWRMYXlvdXRTaXplKToKKyAg
ICAgICAgKFFXZWJQYWdlOjp1c2VGaXhlZExheW91dCk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0
VXNlRml4ZWRMYXlvdXQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFw
aS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp0cmFuc2l0
aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKworMjAwOC0xMi0xOSAgSmFkZSBIYW4gPGphZGUu
aGFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4Lgor
CisgICAgICAgIFtRdF0gQWxsb3cgY29udmVyc2lvbiBvZiBKYXZhU2NyaXB0IE51bWJlciBhbmQg
Qm9vbGVhbiB0eXBlcyB0byBRdCB0eXBlcworCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4MAorCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3Rz
dF9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoTXlRT2JqZWN0OjpteUludm9rYWJsZVdpdGhCb29s
QXJnKToKKworMjAwOC0xMi0xOCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBXaGVu
IFdlYiBJbnNwZWN0b3IgaXMgbGF1bmNoZWQgd2l0aG91dCBhbiBhc3NvY2lhdGVkIG5vZGUsCisg
ICAgICAgIGNhbGwgc2hvdygpIGluc3RlYWQgb2YgaW5zcGVjdCgpLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKworMjAw
OC0xMi0xOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgLSBzdHViIG91dCBGcmFtZUxvYWRlckNsaWVu
dDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwOC0xMi0xOCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2YW4u
CisKKyAgICAgICAgU3R1YiBvdXQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0KCkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwOC0xMi0xNiAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhv
bGdlciBGcmV5dGhlci4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB1bmxvYWQgZXZlbnQg
Y291bnRpbmcgdG8gdGhlIFF0IERSVC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChxdF9kcnRfcnVuKTogTW92ZWQgZnVuY3Rpb24gaGVyZS4KKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2VfcC5oOiBNb3ZlZCBkcnQgcnVuIGJvb2xlYW4gaGVyZS4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6IE1vdmVkIGRydCBydW4gYm9vbGVhbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNl
KTogVXNlIHRoZSBuZXcgZHJ0CisgICAgICAgIHJ1biB2YXJpYWJsZS4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKTogQWRkIERS
VAorICAgICAgICBvdXRwdXQgZm9yIHVubG9hZCBldmVudCBoYW5kbGVyIGNvdW50aW5nLgorCisy
MDA4LTEyLTE1ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIENoYW5n
ZSB0aGUgb3JkZXIgb2Ygc3ViIGZyYW1lIGluaXRpYWxpc2F0aW9uIHRvIGF2b2lkIGNyYXNoZXMK
KworICAgICAgICBBZGQgdGhlIG5ld2x5IGNyZWF0ZWQgZnJhbWUgdG8gdGhlIEZyYW1lVHJlZSBi
ZWZvcmUgY2FsbGluZworICAgICAgICBXZWJDb3JlOjpGcmFtZTo6aW5pdCB0byBub3Qgc2VnZmF1
bHQgb24KKyAgICAgICAgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZnJhbWUtY3JlYXRpb24tcmVt
b3ZhbC5odG1sLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWVQcml2YXRlOjppbml0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZUZyYW1lKToKKworMjAwOC0xMi0xNSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KKworICAgICAg
ICBJbXBsZW1lbnQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQgaW4gdGhlIFF0IERSVCB0
byBwYXNzIGZhc3QvcHJvZmlsZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKHF0X2RydF9zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk6CisKKzIwMDgtMTIt
MTIgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEZpeCBwcmVzc2luZyByZXR1cm4v
ZW50ZXIgbm90IHRyaWdnZXJpbmcgYW55IGFjdGlvbiBvbiB3ZWIgc2l0ZXMKKyAgICAgICAgdGhh
dCBkZWZpbmUgZXZlbnQgaGFuZGxlcnMsIHN1Y2ggYXMgdGhlIEpTIGNvbnNvbGUgaW4gdGhlIHdl
YgorICAgICAgICBpbnNwZWN0b3IuCisKKyAgICAgICAgUHJvY2VzcyB0aGUga2V5IGV2ZW50cyBp
biB0aGUgRE9NIGZpcnN0IGFuZCBpZiBub3QgaGFuZGxlZCBtYXAgdGhlbQorICAgICAgICB0byBl
ZGl0b3IgYWN0aW9ucy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KTogTWFkZSBhIGNsYXNzIG1l
dGhvZC4KKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudCk6IFBhc3MgdGhl
IGtleSBldmVudCBmaXJzdCB0byB0aGUgRE9NLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5k
bGVLZXlib2FyZEV2ZW50KTogTWFwIHRoZSBrZXkgZXZlbnQgdG8KKyAgICAgICAgYWN0aW9ucyBh
bmQgdHJpZ2dlciB0aGVtLgorCisyMDA4LTEyLTEyICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlk
YXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5u
LgorCisgICAgICAgIENyZWF0ZSB0aGUgcGx1Z2luIHdpZGdldCBldmVuIHRob3VnaCB0aGUgd2Vi
IHBhZ2UgaGFzIG5vIGFzc29jaWF0ZWQKKyAgICAgICAgdmlldy4gVGhpcyBwcmV2ZW50cyB0aGUg
cGx1Z2luIHRvIGJlIHVzZWxlc3NseSBjb25zdHJ1Y3RlZCBtb3JlIHRoYW4gb25jZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiB0
ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpj
cmVhdGVWaWV3bGVzc1BsdWdpbik6CisKKzIwMDgtMTItMTEgIEVucmljbyBSb3MgIDxlbnJpY28u
cm9zQG0zMS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAg
ICAgICAgRml4IHRoZSBicm9rZW4gZm9jdXMgYmVoYXZpb3IgdGhhdCBoYXBwZW5lZCB3aGVuIFFX
ZWJQYWdlIGxvc3QKKyAgICAgICAgZm9jdXMgdG8gYSBwb3B1cCBtZW51LgorCisgICAgICAgIFRo
ZSBwcmV2aW91cyBjb2RlIGRpZG4ndCBub3RpZnkgdGhlIFFXZWJQYWdlIGF0IGFsbCB3aGVuIHRo
ZQorICAgICAgICBmb2N1cyB3YXMgYmFjayBpbiAoYnJlYWtpbmcgZm9jdXMgcmVjdHMsIGNhcmV0
IGJsaW5raW5nLCAuLi4pLgorICAgICAgICBCeSB0aGUgd2F5IHdoZW4gYSBwb3B1cCBpcyBzaG93
LCAyIEZvY3VzT3V0IGV2ZW50cyBhcmUgZGVsaXZlcmVkCisgICAgICAgIHRvIHRoZSBRV2ViUGFn
ZSwgYnV0IHRoaXMgZG9lc24ndCBzZWVtIHRvIGh1cnQuCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0
IHRvIGNoZWNrIHBvcHVwIG9wZW5pbmcsIGNsb3NpbmcgYSBsaW5lZWRpdCBibGlua3MuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpmb2N1
c0luRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpmb2N1c091dEV2ZW50KToKKyAg
ICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYkZyYW1lOjopOgorCisyMDA4LTEyLTExICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlh
dEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7gu
CisKKyAgICAgICAgV2hlbiB0aGUgd2ViIHBhZ2UgaXMgbmF2aWdhdGVkIGF3YXksIGRlbGV0ZSB0
aGUgaW5zdGFuY2UKKyAgICAgICAgb2YgdGhlIG5hdGl2ZSBwbHVnaW4uCisKKyAgICAgICAgaHR0
cDovL3Ryb2xsdGVjaC5jb20vZGV2ZWxvcGVyL3Rhc2stdHJhY2tlci9pbmRleF9odG1sP2lkPTIx
NDk0NiZtZXRob2Q9ZW50cnkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiB0ZXN0cy9xd2Vi
cGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUGx1Z2luVHJhY2tlZFBhZ2U6OlBsdWdp
blRyYWNrZWRQYWdlKToKKyAgICAgICAgKFBsdWdpblRyYWNrZWRQYWdlOjpjcmVhdGVQbHVnaW4p
OgorICAgICAgICAodHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKToKKworMjAwOC0xMi0xMSAg
WWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgQWxsb3cgYXBwbGljYXRpb25zIHRvIHNhdmUg
YW5kIHJlc3RvcmUgdGhlaXIgc3RhdGUgYmV0d2VlbiBsb2Fkcy4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnJlc3RvcmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6c2F2ZVZpZXdTdGF0ZVRvSXRlbSk6CisgICAgICAgICogdGVz
dHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bW9k
aWZpZWQpOgorCisyMDA4LTEyLTA4ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0
ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgSG9sZ2VyIEZy
ZXl0aGVyLgorCisgICAgICAgIE1ha2UgV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpIGFuZCBv
dmVycmlkZXMgbm9uLWNvbnN0CisKKyAgICAgICAgVGhpcyB3aWxsIGhvcGVmdWxseSBhbGxvdyB1
cyB0byBnZXQgcmlkIG9mIHNvbWUgb2YgdGhlIG11dGFibGVzIGluCisgICAgICAgIHRoZSBjbGFz
c2VzIHRoYXQgcmVhY3QgdG8gdGhlIGNhbGxiYWNrIGJ5IGNoYW5naW5nIHRoZWlyIG93biBzdGF0
ZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6KToKKworMjAwOC0xMi0xMCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBI
YXVzbWFubi4KKworICAgICAgICBBUEkgY2hhbmdlcyBkaXNjdXNzZWQgd2l0aCBTaW1vbiBIYXVz
bWFubiwgVG9yIEFybmUKKyAgICAgICAgVmVzdGLDuCwgQXJpeWEgSGlkYXlhdC4uLgorCisgICAg
ICAgICogQXBpL3F3ZWJkYXRhYmFzZS5jcHA6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmZpbGVO
YW1lKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAq
IEFwaS9xd2ViZGF0YWJhc2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2Nyb2xsKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2Nyb2xsUG9zaXRp
b24pOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKToKKyAgICAgICAgKFFXZWJQYWdlOjppc0NvbnRl
bnRFZGl0YWJsZSk6CisgICAgICAgIChRV2ViUGFnZTo6ZXh0ZW5zaW9uKToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDoKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAg
ICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoK
KyAgICAgICAgKE1haW5XaW5kb3c6OnNldEVkaXRhYmxlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc0VkaXRhYmxlKToK
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjpkYXRhYmFzZSk6CisKKzIwMDgtMTItMDkgIEJhbGF6cyBLZWxlbWVuICA8S2Vs
ZW1lbi5CYWxhenMuM0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIEV4dGVuZGVkIFF0TGF1bmNoZXIgc28gbm93IGl0IGNh
biBsb2FkIHBhZ2VzIGZyb20gYW4gdXJsIGxpc3QKKyAgICAgICAgb25lIGJ5IG9uZS4gVGhpcyBj
YW4gYmUgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIChlcS4gbGVhayBodW50aW5nKS4KKyAg
ICAgICAgVGhlIC1yIG9wdGlvbiBhY3RpdmF0ZXMgdGhpcyBmZWF0dXJlLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzMgorCisgICAgICAgICog
UXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6OndlYlBhZ2UpOgorICAg
ICAgICBKdXN0IGEgY29kaW5nIHN0eWxlIHJlcGFpcmluZyAoKiB3cml0dGVuIHdpdGggbm8gc3Bh
Y2UgYmV0d2VlbiB0aGUgcmV0dXJuIHR5cGUgbmFtZSkKKyAgICAgICAgKE1haW5XaW5kb3c6Ondl
YlZpZXcpOgorICAgICAgICBJIG5lZWQgdGhlIHdlYlZpZXcgdG8gY29ubmVjdCBpdCB3aXRoIHRo
ZSBVUkxMb2FkZXIgb2JqZWN0LgorICAgICAgICAoVVJMTG9hZGVyOjpVUkxMb2FkZXIpOgorICAg
ICAgICAoVVJMTG9hZGVyOjpsb2FkTmV4dCk6CisgICAgICAgIChVUkxMb2FkZXI6OmluaXQpOgor
ICAgICAgICAoVVJMTG9hZGVyOjpnZXRVcmwpOgorICAgICAgICAobWFpbik6CisKKzIwMDgtMTIt
MTAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXgg
dGhlIFF0IGJ1aWxkLCBhZGRlZCBjb25zdCB0byBOb2RlKiBwYXJhbWV0ZXIgYWZ0ZXIgY2hhbmdl
CisgICAgICAgIGluIHNpZ25hdHVyZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Zm9ybVN0YXRl
RGlkQ2hhbmdlKToKKworMjAwOC0xMi0wOSAgQnJldHQgV2lsc29uICA8YnJldHR3QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE3NworCisgICAgICAgIEFkZCBh
IGNhbGxiYWNrIG9uIENocm9tZUNsaWVudCB0aGF0IHRoZSBzdGF0ZSBvZiBmb3JtIGVsZW1lbnRz
IG9uCisgICAgICAgIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLiBUaGlzIGlzIHRvIGFsbG93IGNsaWVu
dHMgaW1wbGVtZW50aW5nIHNlc3Npb24KKyAgICAgICAgc2F2aW5nIHRvIGtub3cgd2hlbiB0aGUg
Y3VycmVudCBzdGF0ZSBpcyBkaXJ0eS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Zm9ybVN0YXRl
RGlkQ2hhbmdlKToKKworMjAwOC0xMi0wOSAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBGaXggdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGxvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aCBzZXR0ZXJzL2dldHRlcnMuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoK
KworMjAwOC0xMi0wOCAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBNdWx0
aXBsZSBmaWxlcyBzdXBwb3J0IGZvciB0aGUgZmlsZSBjaG9vc2VyLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpjaG9vc2VGaWxlcyk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbCk6
CisKKzIwMDgtMTItMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dAorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY3MQorCisgICAgICAgIFJlbmRlcmVyOjpjYXJl
dFJlY3QoKSBpcyBub3cgbG9jYWxDYXJldFJlY3QoKSwgd2hpY2ggbmVlZHMKKyAgICAgICAgY29u
dmVydGluZyB0byBhYnNvbHV0ZSBjb29yZGluYXRlcyAodGFraW5nIHRyYW5zZm9ybXMgaW50byBh
Y2NvdW50KS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFn
ZTo6aW5wdXRNZXRob2RRdWVyeSk6CisKKzIwMDgtMTItMDMgIFRvciBBcm5lIFZlc3Riw7ggIDx0
YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIEFsbG93IHBhc3NpbmcganNOdWxsIGFuZCBqc1VuZGVmaW5lZCB0byBR
dCBwbHVnaW5zCisKKyAgICAgICAgQ3VycmVudGx5IGxpbWl0ZWQgdG8gZnVuY3Rpb25zIHdpdGgg
UVN0cmluZyBhbmQgUVZhcmlhbnQgYXJndW1lbnRzLAorICAgICAgICBhbmQgcHJvcGVydGllcyBv
ZiB0aGVzZSB0eXBlcy4gQm90aCBqc051bGwgYW5kIGpzVW5kZWZpbmVkIGVuZHMgdXAKKyAgICAg
ICAgYXMgZGVmYXVsdC1jb25zdHJ1Y3RlZCBRU3RyaW5ncyBhbmQgUVZhcmlhbnRzLCB3aGljaCBt
ZWFucyB5b3UgY2FuCisgICAgICAgIGNoZWNrIGZvciBpc0VtcHR5KCkgYW5kIGlzVmFsaWQoKSBp
biB0aGUgbmF0aXZlIHBsdWdpbiBjb2RlLgorCisgICAgICAgIEJhc2VkIG9uIHBhdGNoZXMgYnkg
SmFkZSBIYW4gPGphZGUuaGFuQG5va2lhLmNvbT4KKworICAgICAgICAqIHRlc3RzL3F3ZWJmcmFt
ZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAwOC0xMi0wMiAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFRvciBBcm5lIFZl
c3Riw7guCisKKyAgICAgICAgSW5pdGlhbCBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgUVdlYkRhdGFi
YXNlLCBRV2ViU2VjdXJpdHlPcmlnaW4gYW5kCisgICAgICAgIFFXZWJGcmFtZTo6c2VjdXJpdHlP
cmlnaW4oKS4KKworICAgICAgICAqIEFwaS9xd2ViZGF0YWJhc2UuY3BwOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwOgor
CisyMDA4LTExLTI3ICBLZW50IEhhbnNlbiAgPGtoYW5zZW5AdHJvbGx0ZWNoLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGRlZCBhdXRvIHRl
c3RzIGZvciBtYWtpbmcgSmF2YVNjcmlwdCBiaW5kaW5ncyBmb3IgUXQgcGx1Z2luIHdpZGdldHMK
KyAgICAgICAgd29yayBhZ2Fpbi4KKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChQbHVnaW5QYWdlOjpQbHVnaW5QYWdlKToKKyAgICAgICAgKFBs
dWdpblBhZ2U6OkNhbGxJbmZvOjpDYWxsSW5mbyk6CisgICAgICAgIChQbHVnaW5QYWdlOjpjcmVh
dGVQbHVnaW4pOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorCisyMDA4
LTExLTI1ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgor
CisgICAgICAgIEJ1aWxkIGZpeC4gVXNlIFdlYkNvcmU6OkZyYW1lOjpsb2FkZXIgaW5zdGVhZCBv
ZiBRV2ViRnJhbWUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xv
YmFsSGlzdG9yeSk6CisKKzIwMDgtMTEtMjQgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBGaXggYnVzdGFnZS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY0MworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Omlz
U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAwOC0xMS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KKworICAgICAg
ICAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ3MAorICAgICAg
ICAgIHJlbW92ZSB1bm5lZWRlZCBVUkwgYXJndW1lbnQgZnJvbSBGcmFtZUxvYWRlckNsaWVudDo6
dXBkYXRlR2xvYmFsSGlzdG9yeQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5KTogR2V0IHRoZSBVUkwgZnJvbSB0aGUKKyAgICAgICAgRG9jdW1l
bnRMb2FkZXIuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
OiBSZW1vdmUgYXJndW1lbnQuCisKKzIwMDgtMTEtMjQgIERhcmluIEZpc2hlciAgPGRhcmluQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBGaXggYnVzdGFnZS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDgKKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorCisy
MDA4LTExLTIwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IFF0
IGJ1aWxkLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisKKzIwMDgtMTEtMTkgIERhcmluIEZpc2hlciAgPGRh
cmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggYnVzdGFnZS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzMKKyAgICAgICAgUG9ydHMg
YnVzdGVkIGJ5IGFkZGl0aW9uIG9mIFNjcmlwdFZhbHVlLntoLGNwcH0KKworICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQp
OgorCisyMDA4LTExLTE5ICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgRml4IGJ1c3RhZ2UuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzczCisgICAgICAgIFBvcnRzIGJ1c3RlZCBieSBhZGRpdGlvbiBvZiBT
Y3JpcHRWYWx1ZS57aCxjcHB9CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKworMjAw
OC0xMS0xOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAg
IEZpeCB0aGUgUXQgYnVpbGQsIHJlbW92ZSBmaWxlIHJlZmVyZW5jZWQgaW4gdGhlIHFyYyBmaWxl
IHRoYXQgZG9lcyBub3QKKyAgICAgICAgZXhpc3QgYW5kIGlzIG5vdCBuZWVkZWQuCisKKyAgICAg
ICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnFyYzoKKworMjAwOC0xMS0xOCAgQXJpeWEg
SGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSdWJiZXIt
c3RhbXBlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIE1pc3NpbmcgZmlsZSBpbiBu
ZXcgdW5pdCB0ZXN0IGZvciBRV2ViRnJhbWUgKHIzODQ5MykuCisKKyAgICAgICAgKiB0ZXN0cy9x
d2ViZnJhbWUvcXdlYmZyYW1lLnBybzoKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZy
YW1lLnFyYzogQWRkZWQuCisKKzIwMDgtMTEtMTggIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Ri
b0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIE1ha2Ugc3VyZSBRV2lkZ2V0IGJhc2VkIHBsdWdpbnMgYXJlIGludmlz
aWJsZSB1bnRpbCBwbGFjZWQgaW50byB0aGUgbGF5b3V0CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIwMDgtMTEtMTggIFRvciBBcm5lIFZlc3Ri
w7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIFJlYWN0IHByb3Blcmx5IHRvIGZyYW1lIHJlY3QgY2hhbmdl
cyBmb3IgUVdpZGdldCBiYXNlZCBwbHVnaW5zCisKKyAgICAgICAgV2Ugbm93IHNldCB0aGUgZ2Vv
bWV0cnkgb2YgdGhlIFFXaWRnZXQgaW4gZnJhbWVSZWN0c0NoYW5nZWQsCisgICAgICAgIGludGVh
ZCBvZiBzZXRGcmFtZVJlY3QsIHdoaWNoIG1lYW5zIHdlIHBpY2sgdXAgdGhlIGNoYW5nZXMgdG8K
KyAgICAgICAgdGhlIGZyYW1lIHJlY3Qgd2hlbiBzY3JvbGxpbmcuIFdlIGFsc28gc2V0IGEgbWFz
ayBvbiB0aGUKKyAgICAgICAgd2lkZ2V0IHRvIGtlZXAgaXQgZnJvbSBwYWludGluZyBvdmVyIHNj
cm9sbGJhcnMgYW5kIHRoZSBsaWtlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisKKzIwMDgtMTEtMTggIEFy
aXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KKworICAgICAgICBGaXggY3Jhc2ggd2hlbiB0cnlp
bmcgdG8gcGljayBhIGZpbGUgdXNpbmcgdGhlIGZpbGUgY2hvb3Nlci4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjpydW5PcGVuUGFuZWwpOgorCisyMDA4LTExLTE4ICBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgorCisgICAgICAgIEF0dGVtcHQgdG8gc2hhcmUgdHJhbnNpdGlvblRvQ29t
bWl0dGVkRm9yTmV3UGFnZSBvZiBGcmFtZUxvYWRlckNsaWVudCB3aXRoIHRoZSBkaWZmZXJlbnQg
cG9ydHMKKworICAgICAgICBBZnRlciBIeWF0dCdzIHdvcmsgb24gV2lkZ2V0IGFuZCBTY3JvbGxW
aWV3IHRoZXJlIGlzIGxpdHRsZSBkaWZmZXJlbmNlCisgICAgICAgIGJldHdlZW4gdGhlIGltcGxl
bWVudGF0aW9uIG9mIFF0LCBHdGsrIGFuZCBXaW4uIEluIGZhY3QgYW55IGtpbmQgb2YKKyAgICAg
ICAgZGlmZmVyZW5jZSBpcyBtb3N0bHkgYSBidWcuIEFscCBoYXMgZml4ZWQgdHdvIG9mIHN1Y2gg
ZXJyb3JzIGZvciB0aGUgR3RrKworICAgICAgICBwb3J0IGFuZCB0aGUgUXQgcG9ydCBoYXMgYXQg
bGVhc3Qgb25lIG9mIHRoZW0gbGVmdC4KKworICAgICAgICBUaGUgb25seSBkaWZmZXJlbmNlIGJl
dHdlZW4gdGhlIGltcGxlbWVudGF0aW9ucyBpcyBpbiBnZXR0aW5nIHRoZSB0aGUKKyAgICAgICAg
SW50U2l6ZSBmb3IgdGhlIG5ldyBGcmFtZVZpZXcsIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJl
IGFwcGxpZWQgYW5kCisgICAgICAgIGV2ZW50dWFsbHkgc29tZSBwb3N0IHByb2Nlc3NpbmcuCisK
KyAgICAgICAgVW5pZnkgdGhlIGltcGxlbWVudGF0aW9ucyBieSBwcm92aWRpbmcgYSBzdGF0aWMg
aGVscGVyIGZ1bmN0aW9uIHRoYXQKKyAgICAgICAgdGFrZXMgYSBGcmFtZSwgSW50U2l6ZSwgY29s
b3IgYW5kIHRyYW5zcGFyZW5jeSBiaXQgYW5kIGNhbGxpbmcgaXQgZnJvbQorICAgICAgICB0aGUg
R3RrKywgdGhlIFF0IGFuZCB0aGUgV2luZG93cyBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRQYWxldHRlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgor
CisyMDA4LTExLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTm90IHJldmlld2VkLgorICAgICAgICAKKyAgICAgICAgVHJ5IHRvIGZpeCBxdCBidWlsZC4K
KworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorCisyMDA4LTExLTE3ICBBcml5YSBIaWRh
eWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvciBBcm5lIFZlc3Riw7ggYW5kIFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEZpeCByZWdy
ZXNzaW9uIHdoZW4gbG9hZGluZyByZXNvdXJjZXMgZnJvbSBRdCByZXNvdXJjZSBzeXN0ZW0gdXNp
bmcgcXJjOi8uCisKKyAgICAgICAgQWRkZWQgYSB1bml0IHRlc3QgdG8gY2F0Y2ggZnV0dXJlIHJl
Z3Jlc3Npb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS9p
bWFnZS5wbmc6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1l
LmNwcDoKKworMjAwOC0xMS0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgLSB0cnkgdG8gZml4IGJ1aWxkCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3Bw
OiBBZGRlZCBpbmNsdWRlIG9mICJLVVJMLmgiLgorCisyMDA4LTEwLTI0ICBZYWVsIEFoYXJvbiA8
eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgorCisgICAgICAgIEFkZGVkIHNvbWUgYmFzaWMgdW5pdCB0ZXN0cyBmb3IgdGhlIHB1Ymxp
YyBkYXRhYmFzZSBBUEkuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjppbml0VGVzdENhc2UpOgorICAgICAgICAodHN0
X1FXZWJQYWdlOjpjbGVhbnVwVGVzdENhc2UpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpkYXRh
YmFzZSk6CisKKzIwMDgtMTEtMTQgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBGaXggdGhlIFF0IGJ1aWxkLCBhZGQgbWlzc2luZyBleHBvcnQgbWFjcm9z
IGZvciB0aGUgbmV3IGNsYXNzZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYmRhdGFiYXNlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5oOgorCisyMDA4LTEwLTI0ICBZYWVsIEFo
YXJvbiA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEhhdXNtYW5uLgorCisgICAgICAgIEFkZGluZyBwdWJsaWMgQVBJIHRvIHByb3ZpZGUgYWNjZXNz
IHRvIHRoZSBzZWN1cml0eSBvcmlnaW4KKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbikgYW5k
IHRoZSBkYXRhYmFzZXMgdXNlZCBmb3IgdGhlIG9mZmxpbmUKKyAgICAgICAgc3RvcmFnZSAoUVdl
YkRhdGFiYXNlKS4KKworICAgICAgICBJbiBhZGRpdGlvbiBRV2ViU2V0dGluZ3MgZ2FpbnMgY29u
ZmlndXJhdGlvbiBmdW5jdGlvbnMgZm9yCisgICAgICAgIGVuYWJsaW5nL2Rpc2FibGluZyBvZmZs
aW5lIHN0b3JhZ2UsIHdlYiBhcHBsaWNhdGlvbiBjYWNoZQorICAgICAgICBhbmQgRE9NIGxvY2Fs
IHN0b3JhZ2UuCisKKyAgICAgICAgVGhpcyBjb21taXRzIGxhbmRzIHRoZSBjb3JlIGZlYXR1cmUo
cyksIHRoZSB1bml0IHRlc3RzIGFuZCB0aGUKKyAgICAgICAgZG9jdW1lbnRhdGlvbiBhcmUgZ29p
bmcgdG8gZm9sbG93IGluIHRoZSBjb21taW5nIGRheXMvd2Vla3MuCisKKyAgICAgICAgTm90ZTog
VGhlIEFQSSBpcyBub3QgZnJvemVuIHlldC4KKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToK
KyAgICAgICAgKiBBcGkvcXdlYmRhdGFiYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChRV2ViRGF0
YWJhc2U6OlFXZWJEYXRhYmFzZSk6CisgICAgICAgIChRV2ViRGF0YWJhc2U6Om9wZXJhdG9yPSk6
CisgICAgICAgIChRV2ViRGF0YWJhc2U6Om5hbWUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjpk
aXNwbGF5TmFtZSk6CisgICAgICAgIChRV2ViRGF0YWJhc2U6OmV4cGVjdGVkU2l6ZSk6CisgICAg
ICAgIChRV2ViRGF0YWJhc2U6OnNpemUpOgorICAgICAgICAoUVdlYkRhdGFiYXNlOjphYnNvbHV0
ZUZpbGVQYXRoKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6b3JpZ2luKToKKyAgICAgICAgKFFX
ZWJEYXRhYmFzZTo6cmVtb3ZlKToKKyAgICAgICAgKFFXZWJEYXRhYmFzZTo6flFXZWJEYXRhYmFz
ZSk6CisgICAgICAgICogQXBpL3F3ZWJkYXRhYmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkv
cXdlYmRhdGFiYXNlX3AuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcDogQWRkZWQuCisgICAg
ICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OlFXZWJTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChR
V2ViU2VjdXJpdHlPcmlnaW46Om9wZXJhdG9yPSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmln
aW46OnNjaGVtZSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46Omhvc3QpOgorICAgICAg
ICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KToKKyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VVc2FnZSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNl
UXVvdGEpOgorICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luOjpzZXREYXRhYmFzZVF1b3RhKToK
KyAgICAgICAgKFFXZWJTZWN1cml0eU9yaWdpbjo6flFXZWJTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChRV2ViU2VjdXJpdHlPcmlnaW46OmFsbE9yaWdpbnMpOgorICAgICAgICAoUVdlYlNlY3Vy
aXR5T3JpZ2luOjpkYXRhYmFzZXMpOgorICAgICAgICAqIEFwaS9xd2Vic2VjdXJpdHlvcmlnaW4u
aDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJzZWN1cml0eW9yaWdpbl9wLmg6IEFkZGVkLgor
ICAgICAgICAoUVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZTo6UVdlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZSk6CisgICAgICAgIChRV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlOjp+UVdlYlNlY3VyaXR5
T3JpZ2luUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAg
IChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OlFX
ZWJTZXR0aW5ncyk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0
aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlUGF0aCk6CisgICAgICAg
IChRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGEpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjpvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjpzZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpsb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOgorICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KToKKworMjAwOC0xMS0xMiAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgorCisg
ICAgICAgIE1lbnRpb24gdGhlIGNvbG9yIHJvbGUgY2hhbmdlIChyMzgzMzEpIGluIHRoZSBBUEkg
ZG9jLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0xMS0xMSAgQXJpeWEg
SGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBUb3IgQXJuZSBWZXN0YsO4IGFuZCBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBVc2Ug
UVBhbGV0dGU6OkJhc2UgKGluc3RlYWQgb2YgUVBhbGV0dGU6OkJhY2tncm91bmQpIGZvciB0aGUg
cGFnZQorICAgICAgICBiYWNrZ3JvdW5kLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6
CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjp1cGRhdGVCYWNrZ3JvdW5kKToKKyAgICAgICAg
KiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OlFXZWJWaWV3KToKKworMjAw
OC0xMS0xMSAgQ2FtZXJvbiBad2FyaWNoICA8endhcmljaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgUmVtb3ZlIHBvaW50bGVzcyBkZXBl
bmRlbmNpZXMgb24gdGhlIG5vdy1kZWxldGVkIGtqcyBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBX
ZWJLaXRfcGNoLmg6CisKKzIwMDgtMTEtMTAgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0
QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgU2ltb24gSGF1c21h
bm4uCisKKyAgICAgICAgVG8gZml0IFF0IEFQSSwgc2Nyb2xsIG9mZnNldCBpcyBhIFFQb2ludCBp
bnN0ZWFkIG9mIGEgUVNpemUuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0U2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisKKzIwMDgtMTEtMTAgIERh
dmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBEb2M6IEZpeGVkIHFkb2Mgd2FybmluZ3MgYnkg
c3VwcGx5aW5nIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA4LTExLTEwICBUb2Jp
YXMgS29lbmlnIDx0b2JpYXMua29lbmlnQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgUmVtb3ZlZCBvbGQgYW5kIHN0YWxlIHBy
ZiBmaWxlIHRoYXQgYnJlYWtzIHRoZSBNaW5nVyBidWlsZC4KKworICAgICAgICAqIEFwaS9xdHdl
YmtpdC5wcmY6IFJlbW92ZWQuCisKKzIwMDgtMTEtMTAgIEthdmluZHJhIFBhbGFyYWphICA8a2Rw
YWxhcmFAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBDbGFyaWZ5IFFXZWJGcmFtZS9WaWV3OjpzZXRIVE1MIGRvY3Mgd2l0aCBy
ZWdhcmRzIHRvIHJlbGF0aXZlIFVSTHMKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDgtMTEtMTAgIEpvZXJnIEJvcm5lbWFu
biAgPGpvZXJnLmJvcm5lbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4KKworICAgICAgICBEb24ndCBkZWZpbmUgX0NSVF9SQU5EX1Mgb24gV2luZG93
cyBDRSBpbiB0aGUgcHJlY29tcGlsZWQKKyAgICAgICAgaGVhZGVyLCB0byBmaXggdGhlIENFIGJ1
aWxkLgorCisgICAgICAgICogV2ViS2l0X3BjaC5oOgorCisyMDA4LTExLTA3ICBBcml5YSBIaWRh
eWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRvciBBcm5lIFZlc3Riw7ggYW5kIFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIEFkZGVkIGFu
IG9wdGlvbiB0byBhbGxvdyBwcmludGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBhbmQgaW1hZ2Vz
LgorICAgICAgICBNb3N0bHkgcmV3b3JrZWQgZnJvbSBhIHBhdGNoIGJ5IEhvbGdlci4KKyAgICAg
ICAgVGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgor
ICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuaDoKKworMjAwOC0xMS0wNiAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCisKKyAgICAg
ICAgQWRkZWQgYSB1bml0IHRlc3RzIGZvciBRV2ViRnJhbWU6Om1ldGFEYXRhKCkuCisKKyAgICAg
ICAgKiB0ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisKKzIwMDgtMTEtMDYgIFNp
bW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBUb3IgQXJuZSBWZXN0YsO4LgorCisgICAgICAgIEltcHJvdmVkIGRvY3VtZW50YXRpb24gZm9y
IFFXZWJGcmFtZTo6bWV0YURhdGEoKS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
CisyMDA4LTExLTA1ICBTcmlyYW0gWWFkYXZhbGxpIDxzcmlyYW0ueWFkYXZhbGxpQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBBZGRl
ZCBRV2ViRnJhbWU6Om1ldGFEYXRhKCkgdG8gcHJvdmlkZSBhIHdheSBpbiB0aGUgcHVibGljIEFQ
SQorICAgICAgICB0byByZXRyaWV2ZSB0aGUgdmFsdWVzIG9mIHRoZSA8bWV0YT4gdGFncy4KKwor
ICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDcx
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6bWV0
YURhdGEpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKworMjAwOC0xMC0yNCAgWWFlbCBB
aGFyb24gPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KKworICAgICAgICBBZGQgdXNlckRhdGEoKSBhbmQgc2V0VXNlckRhdGEoKSB0
byBRV2ViSGlzdG9yeUl0ZW0uCisgICAgICAgIEFkZCBzZXRNYXhpbXVtSXRlbUNvdW50KCkgYW5k
IG1heGltdW1JdGVtQ291bnQoKSB0byBRV2ViSGlzdG9yeS4KKyAgICAgICAgQWRkIGN1cnJlbnRJ
dGVtSW5kZXgoKSB0byBRV2ViSGlzdG9yeS4KKworICAgICAgICBTZWUgYWxzbyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NjQKKworICAgICAgICBTbWFsbCBjbGVh
bnVwIGJ5IFNpbW9uIChkb2NzIGFuZCBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIFFXZWJIaXN0b3J5
SXRlbSBpbiBxd2ViZnJhbWUuaCkKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAg
ICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjp1c2Vy
RGF0YSk6CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW06OnNldFVzZXJEYXRhKToKKyAgICAgICAg
KFFXZWJIaXN0b3J5OjpjdXJyZW50SXRlbUluZGV4KToKKyAgICAgICAgKFFXZWJIaXN0b3J5Ojpt
YXhpbXVtSXRlbUNvdW50KToKKyAgICAgICAgKFFXZWJIaXN0b3J5OjpzZXRNYXhpbXVtSXRlbUNv
dW50KToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnNhdmVWaWV3U3RhdGVUb0l0ZW0pOgorICAgICAgICAqIHRlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6Om1vZGlmaWVkKToK
KworMjAwOC0xMS0wMyAgQ2FtZXJvbiBad2FyaWNoICA8endhcmljaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgUnViYmVyLXN0YW1wZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCisKKyAgICAgICAgTW92
ZSBtb3JlIGZpbGVzIGludG8gdGhlIHJ1bnRpbWUgc3ViZGlyZWN0b3J5IG9mIEphdmFTY3JpcHRD
b3JlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0xMC0yNSAgSmFkZSBI
YW4gIDxqYWRlLmhhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzLiAK
KworICAgICAgICBFbmFibGUgY3VzdG9tIHByb3BlcnRpZXMgZm9yIFF0IHJ1bnRpbWUgb2JqZWN0
cyBpbiBRdFdlYktpdAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTgxMworCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUu
Y3BwOgorCisyMDA4LTEwLTI0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQW5vdGhlciBRdCBidWlsZCBmaXguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHA6CisKKzIwMDgtMTAtMjQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgorCisgICAgICAgIEZpeCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTkKKyAgICAgICAgTGF5
ZXJpbmcgdmlvbGF0aW9uOiBGaWxlQ2hvb3NlciBzaG91bGQgbm90IGRlcGVuZCBvbiBEb2N1bWVu
dC9GcmFtZS9QYWdlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuT3BlblBhbmVsKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDA4LTEwLTI0ICBU
aW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBTdHViIG91dCBu
ZXcgSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVTZXR0aW5nKTog
Tm90IGltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnN0
b3JlU2V0dGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6
OnJlbW92ZVNldHRpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRRdC5oOgorCisyMDA4LTEwLTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICAtIGZpbmlzaCByb2xsaW5nIG91dCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzIKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOiBVc2UgSlNWYWx1ZSogaW5z
dGVhZCBvZiBKU1ZhbHVlUHRyLgorCisyMDA4LTEwLTIzICBZYWVsIEFoYXJvbiA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisg
ICAgICAgIEludmFsaWQgaGlzdG9yeSBlbnRyaWVzIGNvdWxkIGNhdXNlIGEgY3Jhc2ggaW4gUVQg
V2Via2l0CisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAoUVdlYkhp
c3RvcnlJdGVtOjpvcmlnaW5hbFVybCk6CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW06OnVybCk6
CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW06OnRpdGxlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5
SXRlbTo6bGFzdFZpc2l0ZWQpOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjppY29uKToKKyAg
ICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6aXNWYWxpZCk6CisgICAgICAgICogQXBpL3F3ZWJoaXN0
b3J5Lmg6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5X3AuaDoKKyAgICAgICAgKFFXZWJIaXN0
b3J5SXRlbVByaXZhdGU6OlFXZWJIaXN0b3J5SXRlbVByaXZhdGUpOgorICAgICAgICAoUVdlYkhp
c3RvcnlJdGVtUHJpdmF0ZTo6flFXZWJIaXN0b3J5SXRlbVByaXZhdGUpOgorICAgICAgICAqIHRl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6Om1v
ZGlmaWVkKToKKworMjAwOC0xMC0yMiAgWWFlbCBBaGFyb24gPHlhZWwuYWhhcm9uQG5va2lhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKworICAgICAgICBlbWl0
IHNjcm9sbFJlcXVlc3RlZCB1bmNvbmRpdGlvbmFsbHkgd2hlbiBzY3JvbGxpbmcuCisKKyAgICAg
ICAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5MAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNjcm9sbCk6CisKKzIwMDgtMTAtMjMgIFNpbW9uIEhhdXNt
YW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJu
ZS4KKworICAgICAgICBGaXggaGFuZGxpbmcgb2YgbW91c2UgZXZlbnRzIHdoZW4gZW1iZWRkaW5n
IFFXZWJWaWV3IGludG8gdGhlCisgICAgICAgIFFHcmFwaGljc1ZpZXcuCisKKyAgICAgICAgUVdl
YlBhZ2UgYWNjZXB0cyBvciBpZ25vcmVzIGV2ZW50cyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB3
ZWIgcGFnZQorICAgICAgICBoYW5kbGVkIHRoZSBldmVudC4gSG93ZXZlciBmb3IgUVdlYlZpZXcg
dG8gYmVoYXZlIGxpa2UgYSBnb29kIHdpZGdldAorICAgICAgICBpdCBzaG91bGQgYWx3YXlzIGFj
Y2VwdCB0aGUgbW91c2UgZXZlbnRzIHRvIGluZGljYXRlIHRoYXQgaXQgaGFuZGxlZAorICAgICAg
ICB0aGVtIGFuZCB0aGF0IHRoZXkgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIGV2ZW50IHByb3Bh
Z2F0aW9uLgorCisgICAgICAgIFRoZSBncmFwaGljcyB2aWV3IHJlbGllcyBvbiBhY2NlcHRhbmNl
IG9mIHRoZSBpbml0aWFsIG1vdXNlIGNsaWNrIHRvCisgICAgICAgIG1ha2UgdGhlIGVtYmVkZGVk
IHdpZGdldCB0aGUgZm9jdXMgaXRlbS4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6Cisg
ICAgICAgIChRV2ViVmlldzo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Om1v
dXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50
KToKKyAgICAgICAgKFFXZWJWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2Vi
Vmlldzo6Y29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6d2hlZWxFdmVudCk6
CisKKzIwMDgtMTAtMjIgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgRm9y
IHB1YmxpYyBBUEksIHVzZSB0aGUgdGVybSBib3VuZGluZ1JlY3QgaW5zdGVhZCBvZiBib3VuZGlu
Z0JveC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAoUVdl
YkhpdFRlc3RSZXN1bHQ6OmJvdW5kaW5nUmVjdCk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5o
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorCisyMDA4LTA2LTAzICBTaXJhaiBSYXpp
Y2sgIDxzaXJhai5yYXppY2tAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTM3NAorCisgICAgICAgIEV4cG9zZSBib3VuZGluZ0JveCB2YWx1ZSBpbiBR
V2ViSGl0VGVzdFJlc3VsdAorCisgICAgICAgIEFkZCBBUEkgZnVuY3Rpb24gUVJlY3QgUVdlYkhp
dFJlc3VsdDo6Ym91bmRpbmdCb3goKSBjb25zdAorCisgICAgICAgIEFQSSBkb2NzIGJ5IEFyaXlh
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViSGl0VGVzdFJl
c3VsdFByaXZhdGU6OlFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSk6CisgICAgICAgIChRV2ViSGl0
VGVzdFJlc3VsdDo6Ym91bmRpbmdCb3gpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKworMjAwOC0xMC0yMSAgWWFlbCBBaGFyb24gPHlh
ZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFu
bi4KKworICAgICAgICBlbWl0IHJlcGFpbnRSZXF1ZXN0ZWQgdW5jb25kaXRpb25hbGx5IHdoZW4g
cmVwYWludCBpcyByZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cmVwYWludCk6
CisKKzIwMDgtMTAtMjAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCisKKyAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVy
Q2xpZW50OjpkZXRhY2hlZEZyb21QYXJlbnQ0LiAgSXQgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgYW55
IHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIw
MDgtMTAtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgorCisgICAgICAgIC0gbmV4dCBzdGVwIG9mIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczMgorICAgICAgICAgIGltcHJvdmUgcGVy
Zm9ybWFuY2UgYnkgZWxpbWluYXRpbmcgSlNWYWx1ZSBhcyBhIGJhc2UgY2xhc3MgZm9yIEpTQ2Vs
bAorCisgICAgICAgIFJlbW92ZSBtb3N0IHVzZXMgb2YgSlNWYWx1ZSwgd2hpY2ggd2lsbCBiZSBy
ZW1vdmVkIGluIGEgZnV0dXJlIHBhdGNoLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6
CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdCk6IFVzZSBKU1ZhbHVlUHRy
LgorCisyMDA4LTEwLTE0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBDbGlwIHBhaW50ZXIg
dG8gZGlydHkgcmVjdCBiZWZvcmUgcGFzc2luZyBvbiB0byBXZWJLaXQKKyAgICAgICAgCisgICAg
ICAgIFRoaXMgd2FzIHByZXZpb3VzbHkgZG9uZSBpbiBTY3JvbGxWaWV3UXQsIGJ1dCBhZnRlciB0
aGUKKyAgICAgICAgcmVmYWN0b3Jpbmcgb2YgU2Nyb2xsVmlldyB3ZSBuZWVkIHRvIGRvIGl0IGlu
IFFXZWJGcmFtZQorICAgICAgICBpbnN0ZWFkLCBzaW1pbGFyIHRvIFNhZmFyaS9XaW4uCisKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVuZGVyKToK
KworMjAwOC0xMC0wOCAgTWF0dGhpYXMgRXR0cmljaCA8ZXR0cmljaEBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgTWFrZSBRV2ViVmlldyBpZ25vcmUg
Zm9jdXMgY2hhbmdlcyB3aXRoIFBvcHVwRm9jdXNSZWFzb24gdG8gYXZvaWQKKyAgICAgICAgbWFz
c2l2ZSB1cGRhdGVzIHdoZW4gbWVudXMgb3BlbiBhbmQgY2xvc2UuCisKKyAgICAgICAgKiBBcGkv
cXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OmZvY3VzSW5FdmVudCk6CisgICAgICAg
IChRV2ViVmlldzo6Zm9jdXNPdXRFdmVudCk6CisKKzIwMDgtMTAtMDggIEthdmluZHJhIFBhbGFy
YWphICA8a2RwYWxhcmFAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
bi4KKworICAgICAgICBGaXhlZCBhIHFkb2Mgd2FybmluZyBhbmQgYWRqdXN0ZWQgc29tZSBzcGFj
aW5nCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKworMjAwOC0xMC0wOCAgUmh5cyBX
ZWF0aGVybGV5ICA8cmh5cy53ZWF0aGVybGV5QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbi4KKworICAgICAgICBDb21waWxlIGZvciBwbGF0Zm9ybXMgd2l0aG91dCBjb250
ZXh0IG1lbnVzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlOjpjcmVhdGVTdGFuZGFyZENvbnRleHRNZW51KToKKworMjAwOC0xMC0wOCAgQW5kcsOpIFDD
tm5pdHogIDxhcG9lbml0ekB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uLgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbiB3aXRoIFF0IG5hbWVzcGFjZXMuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0Lmg6CisKKzIwMDgtMTAtMDcgIFRv
ciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFF0V2Vi
S2l0IGJ1aWxkIGZpeCBhZnRlciBjaGFuZ2VzIHRvIEZyYW1lTG9hZGVyQ2xpZW50LmggaW4gcjM3
MzcxCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisK
KzIwMDgtMTAtMDcgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5v
cmc+CisKKyAgICAgICAgW3F0XSBCdWlsZCBmaXggYWZ0ZXIgU2Nyb2xsYmFyLmggYW5kIFdpZGdl
dC5oIGNoYW5nZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2U6OnN3YWxsb3dDb250ZXh0TWVudUV2ZW50KToKKworMjAwOC0xMC0wNiAgRGF2aWQgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHZpZXdsZXNzIE1hYyBXZWJL
aXQgdG8gcGFpbnQgc29tZSBiYXNpYyBwYWdlcy4KKyAgICAgICAgCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNp
dGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisKKzIwMDgtMTAtMDMgIERhdmlkIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzY3JvbGwgbWV0aG9kIG9uIFF0LiAgVGhl
IGRlbHRhIHdhcyBzdXBwb3NlZCB0byB1c2UgLndpZHRoKCkvLmhlaWdodCgpIGFuZCBub3QgLngo
KS8ueSgpLgorCisgICAgICAgIEZpeCB0aGUgUXRQbHVnaW5XaWRnZXQgdG8gZG8gYW4gaW52YWxp
ZGF0ZSBwcm9wZXJseS4KKworICAgICAgICBSZXZpZXdlZCBieSBnZ2FyZW4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjpzY3JvbGwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKworMjAwOC0xMC0wMyAgQXJp
eWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBCdWls
ZCBmaXguIFJlbW92ZSBhZGRUb0RpcnR5UmVnaW9uIGZyb20gdGhlIGhlYWRlciBmaWxlLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwOC0xMC0wMyAg
QXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBC
dWlsZCBmaXguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4p
OgorCisyMDA4LTEwLTAzICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgYWRkVG9EaXJ0eVJlZ2lvbi4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5
IE9saXZlciBIdW50CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisKKzIwMDgtMTAtMDIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMxNAorICAgICAg
ICAKKyAgICAgICAgTWFrZSBzY3JvbGxCYWNraW5nU3RvcmUgY3Jvc3MtcGxhdGZvcm0uCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJl
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNjcm9sbCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwOC0xMC0wMSAgRGF2
aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyODIKKyAgICAgICAgCisgICAgICAgIE1h
a2UgY29udGVudHNUb1NjcmVlbi9zY3JlZW5Ub0NvbnRlbnRzIGNyb3NzLXBsYXRmb3JtLiAgT25s
eSBpbXBsZW1lbnRlZCBieSBNYWMvV2luIHJpZ2h0IG5vdy4KKyAgICAgICAgCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp3aW5kb3dUb1Nj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2NyZWVuVG9XaW5kb3cp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMDgtMDkt
MzAgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTAKKyAgICAgICAgCisgICAgICAgIFJlbmFt
ZSB1cGRhdGVDb250ZW50cyB0byByZXBhaW50Q29udGVudFJlY3RhbmdsZSBhbmQgbWFrZSBpdCBj
cm9zcy1wbGF0Zm9ybSBieSBhbHdheXMgc2VuZGluZworICAgICAgICByZXBhaW50cyB1cCB0aHJv
dWdoIHRoZSBDaHJvbWVDbGllbnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpyZXBhaW50KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCisyMDA4LTA5LTI5ICBHdW5uYXIgU2xldHRhICA8Z3Vu
bmFyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24KKworICAgICAg
ICBDb21waWxlIG9uIHdpbmRvd3MgdXNpbmcgTVNWQyAyMDA1CisKKyAgICAgICAgRm9yIHRoZSBQ
Q0ggV2UgbmVlZCB0byBkZWZpbmUgX1dJTjMyX1dJTk5UIGFuZCBpbmNsdWRlIHdpbmRvd3MuaCBl
YXJseSBvbiwKKyAgICAgICAgb3RoZXJ3aXNlIHdlJ2xsIG1pc3Mgc2V2ZXJhbCBmdW5jdGlvbnMu
CisKKyAgICAgICAgKiBXZWJLaXRfcGNoLmg6CisKKzIwMDgtMDktMjkgIFRoaWFnbyBNYWNpZWly
YSAgPHRoaWFnby5tYWNpZWlyYUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgQ2hhbmdlZCBjb3B5cmlnaHQgZnJvbSBUcm9sbHRlY2ggQVNBIHRvIE5v
a2lhLgorICAgICAgICAKKyAgICAgICAgTm9raWEgYWNxdWlyZWQgVHJvbGx0ZWNoIEFTQSwgYXNz
ZXRzIHdlcmUgdHJhbnNmZXJyZWQgb24gU2VwdGVtYmVyIDI2dGggMjAwOC4KKyAgICAgICAgCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5
LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuaDoKKyAgICAgICAgKiBBcGkvcXdlYmhp
c3RvcnlfcC5oOgorICAgICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6CisgICAgICAgICogQXBp
L3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2VfcC5oOgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3Bw
OgorICAgICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5oOgorICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKyAgICAgICAgKiBB
cGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIFBs
dWdpbnMvSUNPSGFuZGxlci5jcHA6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0Lmg6CisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisK
KzIwMDgtMDktMjggIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KKworICAgICAgICBFbnN1cmUgdGhlIG1haW5U
aHJlYWRJZGVudGlmaWVyIGlzIHNldCBhcyB3ZWxsIGFzIG90aGVyIGJpdHMgYW5kIHBpZWNlcyBv
ZgorICAgICAgICB0aGUgdGhyZWFkaW5nIG1hY2hpbmVyeSwgYnkgY2FsbGluZyBKU0M6OmluaXRp
YWxpemVUaHJlYWRpbmcoKS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisKKzIwMDgtMDktMjcgIERhdmlk
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIEZvcmdvdCB0byBsYW5kIHJlbmFt
aW5nIGNoYW5nZXMgaW4gV2ViS2l0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnJlbmRlcik6CisgICAgICAgIChRV2ViRnJhbWU6OnBvcyk6Cisg
ICAgICAgIChRV2ViRnJhbWU6Omdlb21ldHJ5KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6
c2V0Vmlld3BvcnRTaXplKToKKworMjAwOC0wOS0yNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFu
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFF0IGJ1aWxkIGZpeCAtIHVzZSBmcmFtZVJlY3QgaW5z
dGVhZCBvZiBmcmFtZUdlb21ldHJ5LCBhZGFwdAorICAgICAgICB0byByZW5hbWVkIHNjcm9sbGJh
ciBmcmFtZXZpZXcgbWV0aG9kcy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZTo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRWaWV3
cG9ydFNpemUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSk6CisKKzIwMDgtMDktMjcgIEphbiBNaWNoYWVsIEFsb256byAg
PGptYWxvbnpvQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUXQgYnVpbGQgZml4IC0gcmVuYW1lIGZy
YW1lR2VvbWV0cnkgdG8gZnJhbWVSZWN0IHBlciByMzY5OTUuCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVuZGVyKToKKyAgICAgICAgKFFXZWJG
cmFtZTo6cG9zKToKKyAgICAgICAgKFFXZWJGcmFtZTo6Z2VvbWV0cnkpOgorCisyMDA4LTA5LTI2
ICBBcml5YSBIaWRheWF0ICA8YWhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbi4KKworICAgICAgICBGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggd2hlbiBkZWxl
dGluZyBRV2ViVmlldyBpbnN0YW5jZS4KKworICAgICAgICBXaGVuIGRlbGV0aW5nIHRoZSB2aWV3
LCBzZXRzIHRoZSBwYWdlJ3MgdmlldyB0byBOVUxMLgorICAgICAgICBUaGUgcmVhc29uIGlzIHRo
YXQgdGhlIHBhZ2UgaXMgc21hcnQgYW5kIGl0cyBkZXN0cnVjdG9yIG1pZ2h0IGxlYWQgdG8gYSBj
YWxsCisgICAgICAgIHRoYXQgb3BlcmF0ZXMgb24gYSB2aWV3ICh3aGljaCBpcyBpbiB0aGUgcHJv
Y2VzcyBvZiBiZWluZyBkZWxldGVkKS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAg
ICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6flFXZWJWaWV3KToK
KworMjAwOC0wOS0yNiAgQXJpeWEgSGlkYXlhdCAgPGFoaWRheWF0QHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZWQgdXNpbmcgbW9kaWZp
ZXJzIHRvIHR5cGUgc3BlY2lhbCBzeW1ib2xzIChlLmcgJ0AnLCckJykgZG9lcyBub3Qgd29yayBv
biBNYWMgT1MgWC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
KToKKworMjAwOC0wOS0yNiAgSMOldmFyZCBXYWxsICA8aHdhbGxAdHJvbGx0ZWNoLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBGaXggY29tcGlsYXRpb24gd2l0
aCBRVF9OT19NRVNTQUdFQk9YCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNj
cmlwdENvbmZpcm0pOgorCisyMDA4LTA5LTIzICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9A
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBS
ZW1vdmUgZGVwcmVjYXRlZCBKUyBRdCBiaW5kaW5ncyBvYmplY3QgY2FsbC9jb25zdHJ1Y3QgY29k
ZSBhbmQgZml4IGF1dG90ZXN0cworCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2Vi
ZnJhbWUuY3BwOgorCisyMDA4LTA5LTE2ICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KKwor
ICAgICAgICBQcm9zcGVjdGl2ZSBRdCBidWlsZCBmaXguIFNjcm9sbEJhci5oIC0+IFNjcm9sbGJh
ci5oCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorCisyMDA4LTA5LTE1ICBFbGkgRmlkbGVyICA8ZWxpQHN0YWlrb3MubmV0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIFlhaG9vIGFzc3VtZXMgbm9uLVJG
QyBjb21wbGlhbnQgSFRUUCByZWRpcmVjdCBiZWhhdmlvdXIuIFF0V2ViS2l0IGlzIChtb3JlKQor
ICAgICAgICBjb21wbGlhbnQsIHNvIGJyb2tlbi4gSSB0aGluayB0aGUgWWFob28tYXNzdW1lZCBi
ZWhhdmlvdXIgaXMgcmVhbC13b3JsZCBzdGFuZGFyZC4KKworICAgICAgICBCYXNpY2FsbHksIFlh
aG9vJ3MgbG9naW4gcHJvY2VkdXJlIGZvciBmbGlja3IgbG9va3MgbGlrZSB0aGlzOgorICAgICAg
ICAxLiBsb2FkIGZsaWNrci5jb20sIGNsaWNrICJzaWduIGluIgorICAgICAgICAyLiB0aGlzIGlz
IGEgWWFob28gcGFnZSB3aXRoIGEgZm9ybQorICAgICAgICAoaHR0cHM6Ly9sb2dpbi55YWhvby5j
b20vY29uZmlnL2xvZ2luPy5zcmM9ZmxpY2tyLi4uKQorICAgICAgICB3aGVuIHlvdSBjbGljayB0
aGUgIlNpZ24gSW4iIGJ1dHRvbiwgdGhlIGZvcm0gc3VibWl0cyB0byBhIHlhaG9vLmNvbSBQT1NU
IFVSTAorICAgICAgICAzLiBUaGUgUE9TVCByZXR1cm5zIHdpdGggYSAzMDIgKHJlZGlyZWN0KSB0
byBhbm90aGVyIHlhaG9vLmNvbSBVUkwKKyAgICAgICAgNC4gSWYgeW91IFBPU1QgdGhlIHJlZGly
ZWN0ZWQgTG9jYXRpb246LCBpdCBhbGwgYnJlYWtzLiBZYWhvbyBhc3N1bWVzIHlvdSB3aWxsCisg
ICAgICAgIGNvbnZlcnQgdGhlIG1ldGhvZCB0byBHRVQsIHdoaWNoIHdvcmtzIGZpbmUgYnV0IGlz
IGRlZmluaXRlbHkgbm90CisgICAgICAgIFJGQy1jb21wbGlhbnQuIEl0IHdvdWxkIGJlIGNvbXBs
aWFudCBmb3IgMzAzLCBhbmQgdGhlIFJGQyBzYXlzIHRoYXQgbWFueQorICAgICAgICBpbXBsZW1l
bnRhdGlvbnMgdHJlYXQgMzAyIGFuZCAzMDMgdGhlIHNhbWUgd2F5IChmb3IgSFRUUC8xLjAgY29t
cGxpYW5jZSksIGJ1dAorICAgICAgICBjb252ZXJ0aW5nIHRvIEdFVCBpcyBleHBsaWNpdGx5IHdy
b25nIGZvciAzMDIuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKworMjAwOC0wOS0xNSAgVG9y
IEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24uCisKKyAgICAgICAgTWFrZSBRdEluc3RhbmNlOjpjcmVhdGUoKSBwcml2YXRl
IGFuZCBmaXggY2FjaGluZworCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAg
IChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisKKzIwMDgtMDktMTEg
IFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IFNpbW9uLgorCisgICAgICAgIFByZXZlbnQgbGVha2luZyBwYWdlcyBh
bmQgZnJhbWVzIGluIFFXZWJLaXQgYXV0b3Rlc3QKKworICAgICAgICAqIHRlc3RzL3F3ZWJwYWdl
L3RzdF9xd2VicGFnZS5jcHA6CisKKzIwMDgtMDktMTEgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZl
c3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uCisKKyAgICAg
ICAgRml4IFF0V2ViS2l0IGF1dG90ZXN0CisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQYWdlOjp1c2VyU3R5bGVTaGVldCk6CisK
KzIwMDgtMDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9sbHRlY2gu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEFkZGVkIG1pc3Np
bmcgV2ViQ29yZSBwcmVmaXggdG8gUmVzb3VyY2VSZXF1ZXN0CisKKyAgICAgICAgVGhpcyBpcyBu
ZWVkZWQgZm9yIFdpbmRvd3MvQ0UgY29tcGlsYXRpb24gd2hlcmUgdGhlcmUgaXMgYSBjb25mbGlj
dAorICAgICAgICB3aXRoIGEgZ2xvYmFsIFJlc291cmNlUmVxdWVzdCB0eXBlLiBFbHNld2hlcmUg
aW4gdGhpcyBmaWxlIFJlc291cmNlUmVxdWVzdAorICAgICAgICBpcyBhbHNvIHByZWZpeGVkIHdp
dGggV2ViQ29yZTo6CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFX
ZWJGcmFtZTo6UVdlYkZyYW1lKToKKworMjAwOC0wOS0wNyAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6
d2FyaWNoQHV3YXRlcmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hv
d2lhay4KKworICAgICAgICBCdWcgMjA3MDQ6IFJlcGxhY2UgdGhlIEtKUyBuYW1lc3BhY2UKKyAg
ICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcwND4KKwor
ICAgICAgICBSZW5hbWUgdGhlIEtKUyBuYW1lc3BhY2UgdG8gSlNDLgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRv
d09iamVjdCk6CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisKKzIw
MDgtMDktMDQgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uCisKKyAgICAgICAgRml4IHRoZSBRdFdlYktpdCBidWls
ZCB0byBtYXRjaCBjaGFuZ2VzIGluIHIzNjAxNgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisK
KzIwMDgtMDktMDQgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIFJlLWVuYWJsZSBzdXBwb3J0
IGZvciB1c2VyIHN0eWxlc2hlZXRzIGluIFF0V2ViS2l0CisgICAgICAgIAorICAgICAgICBRdFdl
YktpdCBub3cgZm9sbG93cyB0aGUgRlJBTUVfTE9BRFNfVVNFUl9TVFlMRVNIRUVUCisgICAgICAg
IGNvZGUgcGF0aCwgd2hpY2ggYWxsb3dzIHVzIHRvIGtlZXAgQVBJIHN1cHBvcnQgZm9yCisgICAg
ICAgIGxvYWRpbmcgdXNlciBzdHlsZSBzaGVldHMgZnJvbSByZW1vdGUgVVJMcy4KKyAgICAgICAg
CisgICAgICAgIEFzIHBhcnQgb2YgdGhlIGNoYW5nZSBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAv
aCB3YXMKKyAgICAgICAgbW92ZWQgZnJvbSBXZWJDb3JlL2xvYWRlci9tYWMgdG8gV2ViQ29yZS9s
b2FkZXIuCisKKyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAodHN0X1FXZWJQYWdlOjp1c2VyU3R5bGVTaGVldCk6CisKKzIwMDgtMDgtMjkgIEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgW2phbml0b3IvcXRdIFN0YXJ0IHJlcGxh
Y2luZyBwb3J0IHNwZWNpZmljIGdldHRlcnMgd2l0aCB0aGUgZ2VuZXJpYyBuYXRpdmUgZ2V0dGVy
CisgICAgICAgIFRvIGdldCB0aGUgbmF0aXZlIHByZXNlbnRhdGlvbiBvZiBhbiBpbWFnZSB3ZSBj
dXJyZW50bHkgaGF2ZSBwbGF0Zm9ybQorICAgICAgICBzcGVjaWZpYyAjaWZkZWYncyBhbmQgYSBn
ZW5lcmljIGdldHRlciB1c2luZyBOYXRpdmVJbWFnZVB0ci4gVGhpcyBwYXRjaAorICAgICAgICBl
eHRlbmRzIHRoaXMgdG8gdGhlIEltYWdlQnVmZmVyIGFuZCB1cGRhdGVzIHRoZSBRdCBwbGF0Zm9y
bSB0byBnZXQgcmlkCisgICAgICAgIG9mIHRoZSBzcGVjaWFsICNpZmRlZnMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MjI4NjEKKworICAgICAg
ICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRl
OjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6Omljb25Gb3JVcmwpOgorCisyMDA4LTA4LTI5ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
ciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisg
ICAgICAgIENhdGNoIHVwIHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBQYWdlR3JvdXAgaW4gcjMw
ODQwLiBFbmFibGUgdHJhY2tpbmcgb2YKKyAgICAgICAgdmlzaXRlZCBsaW5rcywgZW5hYmxlIHRo
aXMgaW4gUVdlYlBhZ2UgbmV4dCB0byB0aGUgb3RoZXIgV2ViQ29yZSBpbml0IGNhbGwuCisgICAg
ICAgIENhbGxpbmcgdGhpcyBtb3JlIHRoYW4gb25jZSBpcyBubyBpc3N1ZSBhbmQgYSBjaGVhcCBv
cGVyYXRpb24sIHdlIGFsc28gZG8gbm90CisgICAgICAgIHJlc2V0IHRoZSBzdGF0ZS4gV2hlbiBj
bGVhcmluZyB0aGUgaGlzdG9yeSBvZiBhIHBhZ2UsIGNsZWFyIHRoZSBsaW5rIHN0YXRlLgorCisg
ICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5OjpjbGVh
cik6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFX
ZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKToKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUp
OgorCisyMDA4LTA4LTI5ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZp
c2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIFJldmVydCBy
ZXZpc2lvbiAzNDM0OCB3aGljaCByZW1vdmVkIHRoZSBnbG9iYWwgaGlzdG9yeUNvbnRhaW5zKCkg
ZnVuY3Rpb24uCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3YXMgbmVlZGVkIHRvIGltcGxlbWVu
dCB0aGUgcHVibGljIEFQSSBvZiBRV2ViSGlzdG9yeUludGVyZmFjZQorICAgICAgICBhbmQgd2ls
bCBiZSB1c2VkIGFnYWluIGluIHRoZSBuZWFyIGZ1dHVyZS4KKworICAgICAgICAqIEFwaS9xd2Vi
aGlzdG9yeWludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoaXN0b3J5Q29udGFpbnMp
OgorCisyMDA4LTA4LTI3ICBFcmlrIEJ1bmNlICA8ZWxidW5jZUB0aGVoaXZlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMjMKKworICAgICAgICBBZGQgUVdlYlBhZ2U6OmNv
bnRlbnRzQ2hhbmdlZCgpIHNpZ25hbCB0byBub3RpZnkgb2YgY29udGVudCBjaGFuZ2VzLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToKKworMjAwOC0w
OC0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxMzQxMzM+IC0gQ3Jhc2gg
d2hlbiBsb2FkaW5nIGxhcmdlIG1vdmllIGFzIGEgc3RhbmRhbG9uZSBkb2N1bWVudAorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKTog
U3R1YmJlZCBmb3Igbm93CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oOgorCisyMDA4LTA4LTI1ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tl
QHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIFtp
bnNwZWN0b3JdIEVtaXQgc2lnbmFscyBmcm9tIGF0dGFjaFdpbmRvdyBhbmQgZGV0YWNoV2luZG93
IGluIHRoZSBRdCBwbGF0Zm9ybQorICAgICAgICBBbGxvdyB0aGUgdXNlciBvZiB0aGUgQVBJIHRv
IGhvbm9yIHRoZSBhdHRhY2hXaW5kb3cgYW5kIGRldGFjaFdpbmRvdworICAgICAgICByZXF1ZXN0
cyBhbmQgYXR0YWNoIHRoZSBRV2ViUGFnZS9RV2ViVmlldyB3aGVyZXZlciBpdCBpcyB3YW50ZWQu
IFRoaXMgbmVlZHMKKyAgICAgICAgc29tZSBtb3JlIEFQSSBpbiBRV2ViUGFnZSB0byBiZSBwcm9w
ZXJseSBleHBvc2VkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmNyZWF0ZVBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmF0dGFjaFdpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6ZGV0YWNoV2luZG93KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorCisyMDA4LTA4LTE5ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZiBHYXJlbi4KKworICAgICAgICBCcmluZyBiYWNrIHNoYXJlZCBKU0dsb2JhbERhdGEg
YW5kIGltcGxpY2l0IGxvY2tpbmcsIGJlY2F1c2UgdG9vIG1hbnkgY2xpZW50cyByZWx5IG9uIGl0
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFk
ZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6CisKKzIwMDgtMDgtMTUgIEjDpXZhcmQgV2FsbCAg
PGh3YWxsQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAg
ICAgICAgRml4ZXM6IGNvbXBpbGUgd2l0aCBRVF9OT19VTkRPQ09NTUFORC9TVEFDSworICAgICAg
ICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChTZXRDdXJzb3JFdmVu
dDo6U2V0Q3Vyc29yRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb250
ZXh0TWVudSk6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwOgorICAgICAgICAoRWRpdENvbW1hbmRRdDo6RWRpdENv
bW1hbmRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdENvbW1hbmRRdC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKGR1bXBQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc0VkaXRhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRv
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbyk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkSW5zZXJ0
Tm9kZSk6CisKKzIwMDgtMDgtMTUgIEjDpXZhcmQgV2FsbCAgPGh3YWxsQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IGNvbXBpbGUg
d2l0aCBRVF9OT19TVFlMRV9TVFlMRVNIRUVUCisgICAgICAgIAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDA4
LTA4LTE1ICBIw6V2YXJkIFdhbGwgIDxod2FsbEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZpeGVzOiBjb21waWxlIHdpdGggUVRfTk9fU0hP
UlRDVVQKKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ01v
dmVFdmVudCk6CisKKzIwMDgtMDgtMTUgIEjDpXZhcmQgV2FsbCAgPGh3YWxsQHRyb2xsdGVjaC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6ICAgIGNv
bXBpbGUgd2l0aCBRVF9OT19DT05URVhUTUVOVQorICAgICAgICAKKworICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChlZGl0b3JDb21tYW5kRm9yV2ViQWN0aW9ucyk6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmNyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVw
ZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldEVkaXRhYmxlKToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAg
ICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisKKzIw
MDgtMDgtMTUgIEjDpXZhcmQgV2FsbCAgPGh3YWxsQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IGNvbXBpbGUgd2l0aCBRVF9OT19X
SEVFTEVWRU5UCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlRWRpdG9yQWN0aW9ucyk6CisgICAgICAgIChRV2Vi
UGFnZTo6ZXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBp
L3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOC0wOC0xNSAg
SMOldmFyZCBXYWxsICA8aHdhbGxAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbi4KKworICAgICAgICBGaXhlczogY29tcGlsZSB3aXRoIFFUX05PX1BSSU5URVIKKyAg
ICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFt
ZTo6cHJpbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKworMjAwOC0wOC0xNSAgRGF2
aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uLgorCisgICAgICAgIERvYzogQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgZGVmYXVsdCBw
cm9wZXJ0eSB2YWx1ZXMuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZTo6dHJpZ2dlckFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6YWNjZXB0TmF2aWdhdGlv
blJlcXVlc3QpOgorICAgICAgICAoUVdlYlBhZ2U6OmFjdGlvbik6CisgICAgICAgICogQXBpL3F3
ZWJ2aWV3LmNwcDoKKworMjAwOC0wOC0xNSAgRGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRl
Y2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIERvYzogUmVu
YW1lZCBzbmlwcGV0cyB0aGF0IGFwcGVhciBpbiB0aGUgY29kZSBkaXJlY3RvcnkuCisgICAgICAg
IAorCisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpldmVu
dCk6CisgICAgICAgIChRV2ViVmlldzo6cHJpbnQpOgorCisyMDA4LTA4LTEyICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzdHViIGZvciBJbnNw
ZWN0b3JDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50UXQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgQ2FsbCBub3RJ
bXBsZW1lbnRlZCgpLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
Lmg6CisKKzIwMDgtMDgtMTMgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVj
aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgVXNlIGZ1bGwt
cGFnZSB6b29tIGluIFF0TGF1bmNoZXIuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3Bw
OgorICAgICAgICAoTWFpbldpbmRvdzo6em9vbUluKToKKyAgICAgICAgKE1haW5XaW5kb3c6Onpv
b21PdXQpOgorICAgICAgICAoTWFpbldpbmRvdzo6cmVzZXRab29tKToKKyAgICAgICAgKE1haW5X
aW5kb3c6OnNldHVwVUkpOgorCisyMDA4LTA4LTEzICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlk
YXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAg
ICAgIEZpeCBsaW5raW5nIHdpdGggUXRXZWJLaXQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
Lmg6IHJlbW92ZSBub24tZXhpc3RpbmcgZnVuY3Rpb24vcHJvcGVydHkuCisKKzIwMDgtMDgtMTMg
IFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBIb2xnZXIuCisKKyAgICAgICAgQmFzZWQgb24gcGF0Y2ggYnkgU2lyYWogcmF6aWNrIDxz
aXJhai5yYXppY2tAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEyNQorCisgICAgICAgIEFkZGVkIGZ1bmN0aW9ucyB0
byBnZXQvc2V0IHRoZSB6b29tIGZhY3Rvci4KKworICAgICAgICBBZGRlZCBhIFFXZWJGcmFtZS9R
V2ViVmlldzo6em9vbUZhY3RvciBhcyB3ZWxsIGFzIGEgYm9vbGVhbgorICAgICAgICBab29tVGV4
dE9ubHkgYXR0cmlidXRlIGluIFFXZWJTZXR0aW5ncy4KKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRab29tRmFjdG9yKToKKyAgICAgICAgKFFX
ZWJGcmFtZTo6em9vbUZhY3Rvcik6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAg
ICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6
YXBwbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAq
IEFwaS9xd2Vic2V0dGluZ3MuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAg
ICAoUVdlYlZpZXc6OnNldFpvb21GYWN0b3IpOgorICAgICAgICAoUVdlYlZpZXc6Onpvb21GYWN0
b3IpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorCisyMDA4LTA4LTEzICBTaW1vbiBIYXVz
bWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4K
KworICAgICAgICBGaXggUVdlYkZyYW1lOjpzZXRIdG1sKCkgbm90IHNldHRpbmcgdGhlIG5ldyBj
b250ZW50cyBpbW1lZGlhdGVseS4KKworICAgICAgICBBZGRlZCBhIHNldHRlciB0byB0aGUgRG9j
dW1lbnRMb2FkZXIgdG8gdG9nZ2xlIHRoZSBkZWZlcnJlZCBsb2FkaW5nIG9mIHRoZSBtYWluCisg
ICAgICAgIHJlc291cmNlIHdoZW4gaXQgY29tZXMgZnJvbSBzdWJzdGl0dXRlIGRhdGEuCisKKyAg
ICAgICAgRGlzYWJsZSBkZWZlcnJlZCBsb2FkaW5nIG9mIHRoZSBtYWluIHJlc291cmNlIHdoZW4g
d2UgaGF2ZSB2YWxpZCBzdWJzdGl0dXRlIGRhdGEsCisgICAgICAgIGFzIHVzZWQgYnkgUVdlYkZy
YW1lOjpzZXRIdG1sLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9h
ZCk6CisKKzIwMDgtMDgtMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBIb2xnZXIuCisKKyAgICAgICAgRml4IFFXZWJQ
YWdlOjppc01vZGlmaWVkKCkuCisKKyAgICAgICAgaXNNb2RpZmllZCgpIHdvdWxkIHJldHVybiB0
cnVlIGFmdGVyIGxvYWRpbmcgYSBuZXcgcGFnZSBvciBpdCB3b3VsZCBjb250aW51ZSB0bworICAg
ICAgICByZXR1cm4gdHJ1ZSBhZnRlciB1bmRvaW5nIG1vZGlmaWNhdGlvbnMuIEZpeCB0aGlzIGJ5
IGVsaW1pbmF0aW5nIHRoZQorICAgICAgICBRV2ViUGFnZVByaXZhdGU6Om1vZGlmaWVkIHZhcmlh
YmxlIGFuZCB1c2UgdGhlIHVuZG9TdGFjaydzIGNhblVuZG8oKSBwcm9wZXJ0eQorICAgICAgICBp
bnN0ZWFkLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTI1MgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
OjphY3Rpb24pOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyk6CisKKzIwMDgtMDgtMTMgIERhdmlkIEJv
ZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
bi4KKworICAgICAgICBVcGRhdGVkIGRvY3Mgd2l0aCB0aGUgc2lnbmFsIGVtaXNzaW9uIGJlaGF2
aW9yIG9mIHVybENoYW5nZWQoKQorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIw
MDgtMDgtMTMgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4IEN0cmwrWSB0byB3b3Jr
IGFnYWluIHdoZW4gZWRpdGluZyB0ZXh0IGluIGNvbnRleHRFZGl0YWJsZSBtb2RlLgorCisgICAg
ICAgIFRoaXMgZml4ZXMgcmVncmVzc2lvbiBpbiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZW1hY3MtY250bC15LTAwMS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxl
S2V5Ym9hcmRFdmVudCk6CisKKzIwMDgtMDgtMTMgIFRoaWFnbyBNYWNpZWlyYSAgPHRqbWFjaWVp
QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAg
Rml4IGVuY29kaW5nIG9mIFsgYW5kIF0gaW4gdGhlIGhvc3QgcGFydCBvZiB0aGUgVVJMCisKKyAg
ICAgICAgVW50aWwgUVVybCBpcyBmaXhlZCAobWFraW5nIFFVcmwncyB0b2xlcmFudCBwYXJzZXIg
bW9yZSB0b2xlcmFudCksIHdlIGhhdmUgdG8KKyAgICAgICAgYWRkIHRoaXMgd29ya2Fyb3VuZCB0
byB0aGUgUVVybCA8PiBXZWJDb3JlOjpLVVJMIGNvbnZlcnNpb24gb3BlcmF0b3Igc28gdGhhdCBp
dAorICAgICAgICBkb2Vzbid0IGVuY29kZSBbIGFuZCBdIHdoZW4gdGhleSBhcmUgZm91bmQgaW4g
dGhlIGhvc3QgcGFydC4gVGhhdCBpcywgdGhlCisgICAgICAgIGZvbGxvd2luZyBVUkw6CisgICAg
ICAgIGh0dHA6Ly9bOjoxXS8KKyAgICAgICAgaXMgdmFsaWQgYW5kIHNob3VsZCBub3QgYmUgcmVl
bmNvZGVkIHRvOgorICAgICAgICBodHRwOi8vJTViOjoxJTVkLworCisgICAgICAgIFRoaXMgY2hh
bmdlIGFkZHMgdGhlIGF1dG9tYXRpYyB0ZXN0IGZvciBpdC4KKworICAgICAgICAqIHRlc3RzL3F3
ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcDoKKworMjAwOC0wOC0xMiAgVXJzIFdvbGZlciAgPHV3
b2xmZXJAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTcKKworICAgICAgICBG
aXggY3Jhc2ggaW4gUVdlYlBhZ2UgaW4gY2FzZSBjb250ZXh0TWVudUV2ZW50IGhhcyBiZWVuIG92
ZXJ3cml0dGVuCisgICAgICAgIGJlY2F1c2UgY29udGV4dCBtZW51IGhhcyB0aGUgdmlldyBhcyBw
YXJlbnQgYW5kIHRodXMgaXMgZGVsZXRlZCB0b28gZWFybHkuCisKKyAgICAgICAgQWRkIHRlc3Rj
YXNlIGZvciB0aGlzIGNyYXNoLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAg
ICAgKiB0ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwOgorICAgICAgICAodHN0X1FXZWJQ
YWdlOjpjb250ZXh0TWVudUNyYXNoKToKKworMjAwOC0wOC0wNyAgU2ltb24gSGF1c21hbm4gIDxo
YXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IExhcnMuCisK
KyAgICAgICAgQWRkZWQgQVBJIHRlc3RzIGZvciBRV2ViUGFnZS9RV2ViRnJhbWUgYmFzZWQgb24g
UVRlc3RMaWIuCisKKyAgICAgICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnBybzogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiB0ZXN0cy9xd2VicGFnZS9xd2VicGFnZS5wcm86IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L3Rlc3RzLnBybzogQWRkZWQuCisKKzIwMDgtMDgtMDYgIEJlbmphbWluIEMgTWV5ZXIgIDxiZW5A
bWV5ZXJob21lLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBE
dXJpbmcgdGhlIGRyYWcgb3BlcmF0aW9uIG9ubHkgYWNjZXB0IHRoZSBldmVudCBpZiB0aGUgYWN0
aW9uIGlzIG5vdCBpZ25vcmUgYWN0aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ0VudGVyRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpkcmFnTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
ZHJvcEV2ZW50KToKKworMjAwOC0wOC0wNiAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBGaXggdGhlIFF0IGJ1aWxkIGR1ZSB0byByZWNlbnQg
U2NyaXB0Q29udHJvbGxlciByZWZhY3RvcmluZy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOgor
CisyMDA4LTA4LTA1ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0ZWNoLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBNb3ZlIGV2ZW50IGhhbmRs
aW5nIG9mIHRoZSByZXR1cm4ta2V5IGZyb20gRWRpdG9yQ2xpZW50UXQgdG8gUVdlYlBhZ2UuCisg
ICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxOTEKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzdGVwIGluIHJlZmFjdG9y
aW5nIHRoZSBiaWcgc3dpdGNoIGJsb2NrCisgICAgICAgIGluIEVkaXRvckNsaWVudFF0OjpoYW5k
bGVLZXlib2FyZEV2ZW50IHRvIHVzaW5nIFdlYkFjdGlvbnMKKyAgICAgICAgaW5zdGVhZC4KKyAg
ICAgICAgCisgICAgICAgIFRoZSBuZXcgbG9naWMgdXNlcyB0d28gbmV3IFN0YW5kYXJkS2V5cyBm
cm9tIFFLZXlTZXF1ZW5jZToKKyAgICAgICAgCisgICAgICAgIC0gSW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yCisgICAgICAgIC0gSW5zZXJ0TGluZVNlcGFyYXRvcgorICAgICAgICAKKyAgICAgICAg
V2hpY2ggdHJhbnNsYXRlIHRvIHRoZSBjb21tYW5kcyBJbnNlcnROZXdsaW5lIGFuZCBJbnNlcnRM
aW5lQnJlYWsKKyAgICAgICAgcmVzcGVjdGl2bHkuIE9uIFdpbmRvd3MvWDExIHByZXNzaW5nIHRo
ZSBzaGlmdCBtb2RpZmllciB3aWxsIGludm9rZQorICAgICAgICB0aGUgbGF0dGVyIGFjdGlvbi4g
Rm9yIE1hYyB0aGlzIGlzIHRyaWdnZXJlZCBieSBwcmVzc2luZyB0aGUgbWV0YQorICAgICAgICBt
b2RpZmllciAoQ3RybCkuCisgICAgICAgIAorICAgICAgICBJbml0aWFsIHBhdGNoIGJ5OiBFcmlr
IEJ1bmNlCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZWRpdG9yQWN0
aW9uRm9yS2V5RXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAwOC0wOC0wNCAgRXJpayBCdW5j
ZSAgPGVsYnVuY2VAdGhlaGl2ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjIxCisK
KyAgICAgICAgQWRkIHVwZGF0ZUFjdGlvbigpIHN1cHBvcnQgdG8gVG9nZ2xlQm9sZCwgVG9nZ2xl
SXRhbGljLCBhbmQgVG9nZ2xlVW5kZXJsaW5lLgorICAgICAgICBBZGQgbG9va3VwIHRhYmxlIGZv
ciBtYXBwaW5nIHdlYiBhY3Rpb25zIHRvIGVkaXRvciBjb21tYW5kcy4KKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChlZGl0b3JDb21tYW5kRm9yV2ViQWN0aW9ucyk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUFjdGlvbik6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OnVwZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdn
ZXJBY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnNldEVkaXRhYmxlKToKKworMjAwOC0wOC0w
MyAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBBIGJ1bmNoIG9mIGltcHJvdmVtZW50cyB0
byB0aGUgUXRMYXVuY2hlci4KKworICAgICAgICBBbW9uZyBvdGhlcnM6CisgICAgICAgIC0gVW5p
ZnkgYW5kIHVuY2x1dHRlciB0aGUgdG9vbGJhciwgdXNlIG1lbnUgZm9yIGFkZGl0aW9uIGFjdGlv
bnMKKyAgICAgICAgLSBTaW1wbGlmeSBVUkwgZWRpdCwganVzdCB1c2UgUUxpbmVFZGl0IChubyBm
YW5jeSBjbG9zZSBidXR0b24gZXRjKQorICAgICAgICAtIEd1ZXNzIHRoZSBVUkwgZnJvbSB0aGUg
Y29tbWFuZCBsaW5lIHNvIG5vdyB3ZSBjYW4gcnVuIC4vUXRMYXVuY2hlciB3d3cuZ29vZ2xlLmNv
bQorICAgICAgICAtIFNob3J0Y3V0IGtleXMgZm9yIG1vc3QgYWN0aW9ucworICAgICAgICAtIFNp
bXBsZSBhdXRvY29tcGxldGUgZm9yIHRoZSBVUkwgZWRpdAorICAgICAgICAtIEFjdGlvbnMgZm9y
IHpvb21pbmcsIE5ldyBXaW5kb3cgYW5kIENsb3NlIFdpbmRvdworICAgICAgICAtIFNob3cgRm9y
bWF0IG1lbnUgb25seSB3aGVuIHRoZSBjb250ZW50IGlzIHNldCB0byBlZGl0YWJsZQorCisgICAg
ICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5k
b3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6d2ViUGFnZSk6CisgICAgICAgIChNYWluV2luZG93
OjpjaGFuZ2VMb2NhdGlvbik6CisgICAgICAgIChNYWluV2luZG93Ojpsb2FkRmluaXNoZWQpOgor
ICAgICAgICAoTWFpbldpbmRvdzo6c2hvd0xpbmtIb3Zlcik6CisgICAgICAgIChNYWluV2luZG93
OjpuZXdXaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6em9vbUluKToKKyAgICAgICAgKE1h
aW5XaW5kb3c6Onpvb21PdXQpOgorICAgICAgICAoTWFpbldpbmRvdzo6cmVzZXRab29tKToKKyAg
ICAgICAgKE1haW5XaW5kb3c6OnByaW50KToKKyAgICAgICAgKE1haW5XaW5kb3c6OnNldEVkaXRh
YmxlKToKKyAgICAgICAgKE1haW5XaW5kb3c6OmR1bXBIdG1sKToKKyAgICAgICAgKE1haW5XaW5k
b3c6OnNldHVwVUkpOgorICAgICAgICAobWFpbik6CisKKzIwMDgtMDgtMDQgIEVyaWsgQnVuY2Ug
IDxlbGJ1bmNlQHRoZWhpdmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5OAorCisg
ICAgICAgIEFsbG93IENvcHkga2V5IHNlcXVlbmNlIHRvIHdvcmsgaW4gbm9uLWVkaXRhYmxlIGFy
ZWFzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6a2V5UHJlc3NFdmVudCk6CisKKzIwMDgtMDctMzEgIEVyaWsgQnVuY2UgIDxlbGJ1bmNl
QHRoZWhpdmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIE1h
a2Ugc3VyZSBlZGl0IGFjdGlvbnMgZ2V0IHVwZGF0ZWQgd2hlbiB0aGUgY29udGVudHMgY2hhbmdl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyk6CisK
KzIwMDgtMDctMzEgIEVyaWsgQnVuY2UgIDxlbGJ1bmNlQHRoZWhpdmUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEFkZCBzaW1wbGUgZWRpdCB0ZXN0IGFiaWxp
dGllcyB0byBRdExhdW5jaGVyLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAg
ICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6c2V0
RWRpdGFibGUpOgorICAgICAgICAoTWFpbldpbmRvdzo6ZHVtcEh0bWwpOgorCisyMDA4LTA3LTMx
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSdWJiZXIt
c3RhbXBlZCBieSBNYWNpZWouCisKKyAgICAgICAgRWxpbWluYXRlIEpTTG9jayAoaXQgd2FzIGFs
cmVhZHkgZGlzYWJsZWQsIHJlbW92aW5nIHRoZSBzdHViIGltcGxlbWVudGFpb24gYW5kIGFsbAor
ICAgICAgICBjYWxsIHNpdGVzIG5vdykuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KToKKworMjAw
OC0wNy0yNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZp
eCBRdCBidWlsZCBmYWlsdXJlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAg
ICAoUVdlYkZyYW1lOjpzZXRTY3JvbGxPZmZzZXQpOiBNYWtlIGFyZ3VtZW50IGNvbnN0LgorCisy
MDA4LTA3LTI2ICBNYXJjIE9yZGluYXMgaSBMbG9waXMgIDxtYXJjLm9yZGluYXNpbGxvcGlzQGNv
bGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwMTAKKyAg
ICAgICAgW1F0XSBBZGQgQVBJIGFjY2VzcyB0byBzY3JvbGxpbmcKKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOiBBZGRlZCBhY2Nlc3MgdG8gYSBmcmFtZSBzY3JvbGwgb2Zmc2V0LgorICAg
ICAgICAoUVdlYkZyYW1lOjpzY3JvbGwpOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxPZmZz
ZXQpOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuaDoKKworMjAwOC0wNy0yNiAgRGFuaWVsIEphbGt1dCAgPGphbGt1dEByZWQt
c3dlYXRlci5jb20+CisKKyAgICAgICAgQnVpbGQgZml4LiAgQWRqdXN0IHRvIHVwZGF0ZWQgV2Vi
Q29yZSBGcmFtZUxvYWRlciBtZXRob2QgbmFtZXMgJiBzaWduYXR1cmVzLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKToKKworMjAwOC0wNy0y
NSAgSm9lcmcgQm9ybmVtYW5uICA8am9lcmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQ29tcGlsZSB3aXRoIFFUX05PX1BS
SU5URVIuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldp
bmRvdzo6TWFpbldpbmRvdyk6CisKKzIwMDgtMDctMjQgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZl
c3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uCisKKyAgICAg
ICAgRG9uJ3QgaW5zZXJ0IHRleHQgb24ga2V5RG93biBldmVudCBpbiBFZGl0b3JDbGllbnRRdC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAwOC0w
Ny0wNCAgQmVuamFtaW4gQyBNZXllciAgPGJlbkBtZXllcmhvbWUubmV0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIFVwZGF0ZSB0aGUgd2Via2l0IHZlcnNpb24gaW4g
dGhlIFF0V2ViS2l0IHVzZXJhZ2VudCBzdHJpbmcgdG8gbWF0Y2ggdHJ1bmsKKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisKKzIwMDgtMDctMDIgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21h
bm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBCdWlsZCBmaXguCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOiBUaGUgc2lnbmF0
dXJlIG9mIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uCisgICAgICAgIGNoYW5nZWQgdG8gdGFrZSBh
biBlbnVtIGluc3RlYWQgb2YgYSBzdHJpbmcuCisKKzIwMDgtMDctMDEgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIERpc2FibGUgSlNMb2NrIGZvciBwZXItdGhyZWFkIGNvbnRleHRzLgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2
YVNjcmlwdFdpbmRvd09iamVjdCk6CisgICAgICAgIFBhc3MgYSBwYXJhbWV0ZXIgKGZhbHNlKSB0
byBKU0xvY2sgdG8gaW5kaWNhdGUgdGhhdCBXZWJLaXQgZG9lc24ndCBuZWVkIGxvY2tpbmcuCisg
ICAgICAgIEluY2x1ZGUgSlNMb2NrLmgsIGFzIGl0IGlzIG5vIGxvbmdlciBicm91Z2h0IGluIGlt
cGxpY2l0bHkuCisKKzIwMDgtMDctMDEgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9s
bHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIERvbid0
IHNob3cgdGhlIHRvb2x0aXAgaW5zdGFudGx5IGluIHRoZSBRdExhdW5jaGVyLgorICAgICAgICAK
KyAgICAgICAgTGV0IHRoZSBRV2ViVmlldyBoYW5kbGUgdG9vbHRpcHMgYnkgaXRzZWxmLCBzbyB3
ZSBnZXQKKyAgICAgICAgdGhlIGV4cGVjdGVkIGRlbGF5IGFzIGV2ZXJ5d2hlcmUgZWxzZS4KKwor
ICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisKKzIwMDgtMDYtMzAgIFNpbW9uIEhhdXNt
YW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBO
aWtvLgorCisgICAgICAgIFJlbW92ZWQgdGhlIG9ic29sZXRlIGFuZCB1bm1haW50YWluZWQgV2Vi
S2l0UGFydC4gVGhlIGludGVncmF0aW9uIG9mCisgICAgICAgIFF0V2ViS2l0IGludG8gS0RFIGlz
IG5vdyBkb25lIGluIHRoZSB3ZWJraXRrZGUgY29tcG9uZW50IGluc2lkZSBLREUuCisKKyAgICAg
ICAgKiBXZWJLaXRQYXJ0L1dlYktpdEZhY3RvcnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YktpdFBhcnQvV2ViS2l0RmFjdG9yeS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdFBhcnQv
V2ViS2l0UGFydC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0
LmRlc2t0b3A6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0LnJjOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydEJyb3dzZXIucmM6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0QnJvd3NlckV4dGVuc2lvbi5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0QnJvd3NlckV4dGVuc2lvbi5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydENsaWVudC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0Q2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0SW50ZXJmYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRJbnRlcmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJLaXRQYXJ0L29yZy5rZGUuV2ViS2l0UGFydC54bWw6IFJlbW92ZWQuCisKKzIwMDgtMDYtMjQg
IFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggdGhl
IFF0IGJ1aWxkLCBhZGRlZCBtaXNzaW5nIGluY2x1ZGUgZm9yIFJ1bnRpbWVPYmplY3RJbXAuCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKworMjAwOC0wNi0yMyAgQmVuamFtaW4gQyBN
ZXllciAgPGJlbkBtZXllcmhvbWUubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgor
CisgICAgICAgIEFkZCBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgc3RhbmRhcmQgY29udGV4dCBt
ZW51CisKKzIwMDgtMDYtMjAgIE1hcmMgT3JkaW5hcyBpIExsb3BpcyAgPG1hcmMub3JkaW5hc2ls
bG9waXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4MgorICAg
ICAgICBbUXRdIEZ1bGwtcGFnZSBwbHVnaW5zIG5vdCBhY3RpdmF0ZWQKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZCk6IFJlLWNoZWNrIGlmIHRoZXJlJ3Mg
YQorICAgICAgICBwbHVnaW4gcHJlc2VudCwgYXMgaXQgY2FuIGJlIGNyZWF0ZWQgZHVyaW5nIHRo
ZSBmdW5jdGlvbi4KKworMjAwOC0wNi0yMCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNp
b25lQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODIKKyAgICAg
ICAgW1F0XSBGdWxsLXBhZ2UgcGx1Z2lucyBub3QgYWN0aXZhdGVkCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNhblNob3dNSU1FVHlwZSk6IFJldHVybiB0cnVlIGlmIHRoZQor
ICAgICAgICBNSU1FIHR5cGUgaXMgc3VwcG9ydGVkIGJ5IGEgcGx1Z2luLgorCisyMDA4LTA2LTE4
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBQcmVwYXJlIEphdmFTY3JpcHQgaGVhcCBmb3Ig
YmVpbmcgcGVyLXRocmVhZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOiBUcnlpbmcgbm90IHRv
IGJyZWFrIHRoZSBidWlsZC4KKworMjAwOC0wNi0xOCAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBRdCBCdWlsZCBmaXggYWZ0ZXIgcjM0NjI3Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDA4
LTA2LTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICAtIGdpdmUg
RnJhbWUgb2JqZWN0IGZ1bmN0aW9ucyBzaG9ydGVyIG5hbWVzOiBzY3JpcHRQcm94eSgpIC0+IHNj
cmlwdCgpLAorICAgICAgICAgIHNlbGVjdGlvbkNvbnRyb2xsZXIoKSAtPiBzZWxlY3Rpb24oKSwg
YW5pbWF0aW9uQ29udHJvbGxlcigpIC0+IGFuaW1hdGlvbigpCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpmb2N1
c0luRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpmb2N1c091dEV2ZW50KToKKyAg
ICAgICAgKFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKKzIwMDgtMDYtMTUgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIC0gbmV3IG5hbWVzIGZvciBtb3JlIEphdmFTY3JpcHRD
b3JlIGZpbGVzCisKKyAgICAgICAgKiBXZWJLaXRfcGNoLmg6CisKKzIwMDgtMDYtMTUgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIC0gbmV3IG5hbWVzIGZvciBhIGZl
dyBrZXkgSmF2YVNjcmlwdENvcmUgZmlsZXMKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorCisyMDA4LTA2LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBSdWJiZXIgc3RhbXBlZCBieSBTYW0uCisKKyAgICAgICAgLSBuZXcgbmFtZXMgZm9yIGtqc19i
aW5kaW5nLmggYW5kIGtqc19wcm94eS5oCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJL
aXRfcGNoLmg6CisKKzIwMDgtMDYtMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIC0gZml4IGJ1aWxkCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOiBBZGRlZCBhIG1pc3Npbmcgc2VtaWNvbG9u
LgorCisyMDA4LTA2LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0uCisKKyAgICAgICAgLSBtb3JlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI1NworICAgICAgICAgIHN0YXJ0IHJlZiBjb3VudHMgYXQg
MSBpbnN0ZWFkIG9mIDAgZm9yIHNwZWVkCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOiBVc2UgY3JlYXRlIGluc3RlYWQgb2Yg
bmV3LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIpOiBEaXR0by4KKworMjAwOC0wNi0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgLSB0cnkgdG8gZml4IGJ1aWxkCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6IEFkZCBtaXNzaW5nIGFyZ3VtZW50LgorCisyMDA4LTA2
LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBKb2huIFN1bGxpdmFuLgorCisgICAgICAgIC0gdXBkYXRlZCBmb3IgYWRkaXRpb24gb2YgRm9y
bVN0YXRlIGFyZ3VtZW50IHRvIGFjdGlvbiBwb2xpY3kgZnVuY3Rpb25zCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKzIwMDgtMDYtMTEgIEFyaXlhIEhpZGF5
YXQgIDxhcml5YS5oaWRheWF0QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24uCisKKyAgICAgICAgRml4IGxlZnQtY2xpY2sgYW5kIG1pZGRsZS1jbGljayBtb3VzZSBl
dmVudCBhcmUgbm90IHByb3Blcmx5IGFjY2VwdGVkLgorICAgICAgICAKKyAgICAgICAgV2hlbiBj
b3B5aW5nIG9yIHBhc3RpbmcgdGV4dCB1c2luZyBsZWZ0IG9yIG1pZGRsZS1jbGljaywgdGhlIGV2
ZW50IG11c3QgYmUKKyAgICAgICAgYWNjZXB0ZWQgc28gdGhhdCBpdCB3aWxsIG5vdCBiZSBwb3Rl
bnRpYWxseSBwcm9jZXNzZWQgZnVydGhlciBieSB0aGUgcGFyZW50CisgICAgICAgIGFuZC9vciBz
dWItY2xhc3NlZCB3aWRnZXQuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorCisyMDA4
LTA2LTExICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZpeCBpbnB1dCBlbGVtZW50IGRv
ZXMgbm90IGFjY2VwdCBjaGFyYWN0ZXIgdHlwZWQgaW4gdXNpbmcgQWx0R3IuCisKKyAgICAgICAg
RWRpdG9yQ2xpZW50IGlzIG1vZGlmaWVkIHRvIGNhdGNoIEFsdEdyIGFuZCBDdHJsK0FsdCBrZXkg
Y29tYmluYXRpb24uCisgICAgICAgIFRoaXMgZml4ZXMgaHR0cDovL3Ryb2xsdGVjaC5jb20vZGV2
ZWxvcGVyL3Rhc2stdHJhY2tlci9pbmRleF9odG1sP2lkPTIwNzA1MCZtZXRob2Q9ZW50cnkKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAwOC0wNS0y
NiAgSm9uYXRob24gSm9uZ3NtYSAgPGpvbmF0aG9uLmpvbmdzbWFAY29sbGFib3JhLmNvLnVrPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyMworCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBR
V2ViUGFnZTo6ZWRpdGFibGUgcHJvcGVydHkuCisKKyAgICAgICAgU21hbGwgZG9jdW1lbnRhdGlv
biBmaXhlcyBieSBTaW1vbi4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6
c2V0RWRpdGFibGUpOgorICAgICAgICAoUVdlYlBhZ2U6OmlzRWRpdGFibGUpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6IGltcGxlbWVudCB0
aGUgZWRpdGFibGUgcHJvcGVydHkgYW5kIGFkZCBBUEkgc28gdGhhdAorICAgICAgICBhcHBsaWNh
dGlvbnMgY2FuIHN3aXRjaCBlZGl0IG1vZGUgb24gYW5kIG9mZiBmb3IgYSBwYXJ0aWN1bGFyIFFX
ZWJQYWdlCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOiByZXRy
aWV2ZSBlZGl0YWJsZSBwcm9wZXJ0eSBmcm9tIHRoZQorICAgICAgICBRV2ViUGFnZSBpbnN0ZWFk
IG9mIGFsd2F5cyByZXR1cm5pbmcgZmFsc2UKKworMjAwOC0wNi0wOSAgVG9yIEFybmUgVmVzdGLD
uCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24K
KworICAgICAgICBNYWtlIHN1cmUgd2ViIGFjdGlvbiBpbiBjb250ZXh0IG1lbnVzIGhhdmUgdGhl
IHJpZ2h0IGVuYWJsZW1lbnQsCisgICAgICAgIHdoaWxlIG5vdCBtZXNzaW5nIHVwIG90aGVyIHdl
YiBhY3Rpb25zIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWVudS4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51KToK
KyAgICAgICAgKFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMDgtMDYtMDkgIEJlbmphbWluIEMgTWV5ZXIg
IDxiZW5AbWV5ZXJob21lLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbgorCisgICAg
ICAgIEFkZCBTaGlmdC1TcGFjZSBzaG9ydGN1dCB0byBnbyB1cCBvbmUgc2NyZWVuLCB0aGUgb3Bw
b3NpdGUgb2YgU3BhY2UKKyAgICAgICAgd2hpY2ggZ29lcyBkb3duIG9uZSBzY3JlZW4uCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5k
bGVTY3JvbGxpbmcpOgorCisyMDA4LTA2LTA0ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9A
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBG
aXggYSBmYWlsaW5nIGFzc2VydGlvbiB3aGVuIGNhbGxpbmcgUVdlYkZyYW1lOjpldmFsdWF0ZUph
dmFTY3JpcHQuCisKKyAgICAgICAgVGhlIHN0YXJ0aW5nIGxpbmUgbnVtYmVyIGhhcyB0byBiZSAx
IGluc3RlYWQgb2YgMC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAo
UVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorCisyMDA4LTA2LTAzICBKb25hdGhvbiBK
b25nc21hICA8am9uYXRob24uam9uZ3NtYUBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnlpbnRlcmZh
Y2UuY3BwOiBSZW1vdmUgV2ViQ29yZTo6aGlzdG9yeUNvbnRhaW5zKCkuICBUaGlzCisgICAgICAg
IGZ1bmN0aW9uIGlzIG5vdCB1c2VkIGFueXdoZXJlIGludGVybmFsbHkgYW5kIGlzIG9ubHkgYSBj
b252ZW5pZW5jZQorICAgICAgICBmdW5jdGlvbiB0aGF0IGNhbiBzdGlsbCBiZSBhY2NvbXBsaXNo
ZWQgdXNpbmcKKyAgICAgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2U6Omhpc3RvcnlDb250YWlucygp
OworCisyMDA4LTA1LTI5ICBLYXZpbmRyYSBEZXZpIFBhbGFyYWphICA8a2RwYWxhcmFAdHJvbGx0
ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBEb2M6IE1l
bnRpb24gdGhlIHJlcXVpcmVtZW50IG9mIGEgUUFwcGxpY2F0aW9uIHdpdGggUXRXZWJLaXQKKyAg
ICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA4LTA1LTI5ICBEYXZp
ZCBCb2RkaWUgIDxkYm9kZGllQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24uCisKKyAgICAgICAgU29tZSBjbGFyaWZpY2F0aW9ucyBmb3IgdGhlIGRvY3VtZW50YXRp
b24uCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwOgorCisyMDA4LTA1LTI3ICBBcml5YSBIaWRheWF0ICA8
YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
LgorCisgICAgICAgIEZpeCB3ZWIgaW5zcGVjdG9yIGRvZXMgbm90IHJldHVybnMgaXRzIHN0YXRl
IHByb3Blcmx5IGFmdGVyIGl0cyB3aW5kb3cgaXMgbWluaW1pemVkLgorCisgICAgICAgIEFzIGhp
bnRlZCBieSBIb2xnZXIsIEluc3BlY3RvckNsaWVudFZpZXc6OmhpZGVFdmVudCBpcyBub3QgbmVl
ZGVkLgorICAgICAgICBUaGlzIGZpeGVzIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5NjcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcDoKKworMjAwOC0wNS0yMSAgU2lyYWogUmF6aWNrICA8c2lyYWoucmF6aWNrQGNv
bGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBB
ZGQgPHBhcmFtIG5hbWU9ImNsYXNzaWQiLz4gc3VwcG9ydCBmb3IgYXBwbGljYXRpb24veC1xdC1v
YmplY3QgcGx1Z2lucworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQ
bHVnaW4pOgorCisyMDA4LTA1LTEzICBBbmR5IFNoYXcgIDxhbmR5QHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IFFXZWJIaXN0b3J5
Ojpmb3J3YXJkKCkgc2hvdWxkIGdvIGZvcndhcmRzIGFuZCBub3QgYmFjaworCisgICAgICAgICog
QXBpL3F3ZWJoaXN0b3J5LmNwcDoKKworMjAwOC0wNS0xMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUm9sbCBvdXQgcmVjZW50ICB0aHJlYWRpbmcgY2hh
bmdlcyAocjMyODA3LCByMzI4MTAsIHIzMjgxOSwgcjMyODIyKSB0byBzaW1wbGlmeQorICAgICAg
ICBTcXVpcnJlbEZpc2ggbWVyZ2luZy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QpOgorCisyMDA4
LTA1LTA5ICBUaGlhZ28gTWFjaWVpcmEgIDx0am1hY2llaUB0cm9sbHRlY2guY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZpeCBiYWQgaW5jbHVkZXMgaW4gUXRX
ZWJLaXQgcHVibGljIGhlYWRlcnMuCisgICAgICAgIAorICAgICAgICBNYWtlIHN1cmUgdG8gaW5j
bHVkZSBxZ2xvYmFsLmggdXNpbmcgdGhlIFF0Q29yZSBwcmVmaXggc28gdGhhdCBhbiBleHBsaWNp
dAorICAgICAgICBpbmNsdWRlL1F0Q29yZSBpcyBub3QgbmVlZGVkIGluIHRoZSBhcHBsaWNhdGlv
bidzIGJ1aWxkIHN5c3RlbS4gQWxzbyBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBxd2Vic2V0dGlu
Z3MuaCBpbmNsdWRlcyB0aGUgbG9jYWwgcXdlYmtpdGdsb2JhbC5oLgorICAgICAgICAKKworICAg
ICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5o
OgorCisyMDA4LTA1LTA4ICBNYXJjIE9yZGluYXMgaSBMbG9waXMgIDxtYXJjLm9yZGluYXNpbGxv
cGlzQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MzUKKworICAg
ICAgICBCYXNlZCBvbiB3b3JrIGJ5IFNyaXJhbSBOZWVsYWthbmRhbiBmb3IgdGhlIEd0ayBwb3J0
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6IElu
aXRpYWxpemUKKyAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbi4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cmVkaXJlY3REYXRhVG9QbHVnaW4pOgor
CisyMDA4LTA1LTA4ICBXYXJ3aWNrIEFsbGlzb24gIDx3YXJ3aWNrQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IFdlYktpdCBleHBl
Y3RzIGluaXRpYWwgaW5wdXQgbWV0aG9kIHN0YXRlIHRvIGJlICpkaXNhYmxlZCouCisgICAgICAg
IAorICAgICAgICBBdCBsZWFzdCBRV1MgZG9lcyBub3QgbmVlZCB0aGUgaW5pdGlhbCBpbnB1dCBt
ZXRob2Qgc3RhdGUgdG8gYmUgZm9yY2VkIHRvCisgICAgICAgIGVuYWJsZWQsIGJ1dCBvdGhlciBw
bGF0Zm9ybXMgKGVzcC4gWDExKSBkby4gVW50aWwgZml4ZWQvdGVzdGVkIG9uIHRob3NlCisgICAg
ICAgIHBsYXRmb3JtcywgdGhpcyBpcyBzcGVjaWZpYyB0byBRV1MuCisgICAgICAgIAorCisgICAg
ICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6CisK
KzIwMDgtMDUtMDYgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAgRml4IGxvZ2ljIGVycm9yIGluIFFX
ZWJIaXRUZXN0UmVzdWx0Ojppc051bGwoKS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorCisyMDA4LTA1LTAyICBCZW5qYW1pbiBNZXllciAgPGJtZXllckB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIERvYzogTWVudGlvbiB0aGF0
IHlvdSBoYXZlIHRvIGVuYWJsZSBwbHVnaW5zIGluIFFXZWJTZXR0aW5ncyBmb3IgdGhlbSB0byB3
b3JrLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0wNS0wMiAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVp
bGQsIEV4ZWNTdGF0ZSBpcyByZXF1aXJlZCBoZXJlLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCk6
CisKKzIwMDgtMDUtMDEgIE1hcmMgT3JkaW5hcyBpIExsb3BpcyAgPG1hcmMub3JkaW5hc2lsbG9w
aXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KKyAg
ICAgICAgUXQgcGFydHMgT0snZWQgYnkgU2ltb24gSGF1c21hbm4uCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzUwCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIE5QQVBJIHBsdWdpbnMgb24gR3RrIGFuZCBRdC14MTEgcG9ydHMuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5Eb2N1bWVudEVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1pdHRlZExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZGlyZWN0RGF0YVRvUGx1
Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisK
KzIwMDgtMDQtMzAgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUXQgNC4zIGJ1aWxkIGZpeC4KKworICAgICAgICBGaXhlcyBhIGJyYWNlIGVycm9y
IHRoYXQgbWFkZSBRdCA0LjQgYnVpbGQgYnV0IG5vdCBRdCA0LjMuCisgCisgICAgICAgICogQXBp
L3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpldmVudCk6CisKKzIwMDgtMDQtMzAg
IFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEluIGZvY3VzSW4gYW5kIGZvY3VzT3V0IGV2ZW50
IGFsd2F5cyB1cGRhdGUgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUKKyAgICAgICAgZm9jdXMgY29u
dHJvbGxlci4gRml4ZXMgfjQwMCBmYWlsaW5nIGxheW91dCB0ZXN0cyBkdWUgdG8gbWlzc2luZwor
ICAgICAgICBlZGl0aW5nIGNhbGxiYWNrcyB0aGF0IHJlbGllZCBvbiB0aGUgY29ycmVjdCBmb2N1
cy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZvY3VzT3V0RXZl
bnQpOgorCisyMDA4LTA0LTI5ICBMaW5jb2xuIFJhbXNheSAgPGxpbmNvbG4ucmFtc2F5QHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4IGNv
bXBpbGF0aW9uIHdpdGggUVRfTk9fUFJJTlRFUgorICAgICAgICAKKworICAgICAgICAqIEFwaS9x
d2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6cHJpbnQpOgorCisyMDA4LTA0LTI5ICBB
cml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEVuc3VyZSB0aGF0IHJlbGF0aXZlIFVSTCBpcyBj
b252ZXJ0ZWQgdG8gYWJzb2x1dGUgVVJMLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBuZWNl
c3NhcnkgYmVjYXVzZSBsb2FkaW5nIGEgcmVsYXRpdmUgVVJMIGlzIG5vdCByZWFsbHkgc3VwcG9y
dGVkCisgICAgICAgICh0aGUgd2ViIHBhZ2UgbWF5IGxvYWQsIGJ1dCB0aGUgc3Vic2VxdWVudCBV
UkxzIGZvciBpbWFnZXMgYW5kIGxpbmtzIHdpbGwKKyAgICAgICAgbm90IGJlIHJlc29sdmVkIHBy
b3Blcmx5KS4KKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODQ4NAorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAoZW5zdXJlQWJzb2x1dGVVcmwpOgorICAgICAgICAoUVdlYkZyYW1l
OjpzZXRVcmwpOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToKKworMjAwOC0wNC0yOSAgQXJp
eWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbi4KKworICAgICAgICBTaW1wbGlmaWNhdGlvbiBvZiBRdCBMYXVuY2hlciAo
bm8gYW5pbWF0aW9uIGFuZCB1c2Ugc3RhbmRhcmQgcHJvZ3Jlc3MgYmFyIHdpZGdldCkKKyAgICAg
ICAgCisgICAgICAgIFN0YXR1cyBiYXIgc2hvd3MgdGhlIGhvdmVyZWQgbGluayB3aXRob3V0IGFu
eSBhbmltYXRpb24uIFByb2dyZXNzIGJhciBqdXN0IHVzZXMgdGhlIHN0YW5kYXJkIFFQcm9ncmVz
c0JhciAobm8gY3VzdG9tIHdpZGdldCkuIFRoZSBsYXVuY2hlciBpcyBsZWFuZXIgYW5kIGZhc3Rl
ciB0byB1c2UgdW5kZXIgdGhlIGRlYnVnZ2VyIGFuZC9vciB2YWxncmluZC4KKyAgICAgICAgCisK
KyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFp
bldpbmRvdyk6CisKKzIwMDgtMDQtMjkgIEFyaXlhIEhpZGF5YXQgIDxhcml5YS5oaWRheWF0QHRy
b2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgVXBk
YXRlIHRoZSBjdXJzb3Igd2hlbiB0aGUgZnJhbWUvcGFnZSBsb2FkaW5nIGlzIGZpbmlzaGVkLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBmaXhlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg3MTIKKyAgICAgICAgCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5GcmFtZURvY3VtZW50UmVhZHkpOgorCisy
MDA4LTA0LTI5ICBTaW1vbiBIYXVzbWFubiAgPHNoYXVzbWFuQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyLgorCisgICAgICAgIEZpeGVzOiBRV2ViUGFnZTo6YWNj
ZXB0TmF2aWdhdGlvblJlcXVlc3Qgbm90IGJlaW5nIGNhbGxlZCAvIGxpbmtDbGlja2VkKCkgbm90
IGJlaW5nIGVtaXR0ZWQgd2hlbiBjbGlja2luZyBvbiA8YSBocmVmPSIuLi4iIHRhcmdldD0iX2Js
YW5rIj4ga2luZCBvZiBsaW5rcy4KKyAgICAgICAgCisgICAgICAgIENhbGwgUVdlYlBhZ2U6OmFj
Y2VwdE5hdmlnYXRpb25SZXF1ZXN0IHdoZW4gdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHdpbmRvdyB3
aXRoCisgICAgICAgIFVSTCBpcyByZXF1ZXN0ZWQuIFRoZSBmcmFtZSBwb2ludGVyIGlzIHNldCB0
byBudWxsIGluIHRoaXMgY2FzZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKToKKworMjAwOC0wNC0yOSAgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbi4KKworICAgICAgICBVc2UgdGhlIFdlYkNvcmUgZmFjaWxpdHkgdG8gZG8gdGhl
IHNjcm9sbGluZy4gTW92ZSBzb21lIGNvZGUgYXJvdW5kLgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudCk6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OnNob3J0Y3V0T3ZlcnJpZGVFdmVudCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyk6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
X3AuaDoKKworMjAwOC0wNC0yOSAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0
ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBmaXggcG90
ZW50aWFsIGNyYXNoIHdoZW4gbG9hZGluZyBpbWFnZShzKQorCisgICAgICAgIENyYXNoIG1heSBv
Y2N1ci4gSWYgY29tcGlsZWQgd2l0aCA0LjMsIHRoZSB2YXJpYWJsZSBpcyBub3QgaW5pdGlhbGl6
ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorCisyMDA4LTA0LTI5ICBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
LgorCisgICAgICAgIENhbGxpbmcgUVdlYlZpZXc6OnNldEN1cnNvciB3aWxsIG92ZXJyaWRlIHRo
ZSBXZWJDb3JlIEN1cnNvci4KKyAgICAgICAgQ2FsbGluZyBRV2ViVmlldzo6c2V0Q3Vyc29yIHdp
bGwgb3ZlcnJpZGUgdGhlIFdlYkNvcmUgQ3Vyc29yIHVzaW5nCisgICAgICAgIFFXaWRnZXQ6OnVu
c2V0Q3Vyc29yIHdpbGwgcmV2ZXJ0IHRvIHRoZSBXZWJDb3JlIEN1cnNvci4KKworICAgICAgICBG
b3IgZGV0ZWN0aW5nIHRoZSB1bnNldCB3ZSBoYXZlIHRvIGNvbXBhcmUgdGhlIHNoYXBlIG9mIHRo
ZQorICAgICAgICBjdXJzb3IgdG8gdGhlIGRlZmF1bHQgYXJyb3cuIFF0OjpXQV9TZXRDdXJzb3Ig
Y2FuIG5vdCBiZSB1c2VkCisgICAgICAgIGFzIGl0IGlzIHNldCB1bmNvbmRpdGlvbmFsbHkgYnV0
IGNvbmRpdGlvbmFsbHkgcmVtb3ZlZC4KKworICAgICAgICBDYWxsaW5nIFFXaWRnZXQ6OnNldEN1
cnNvciB3aWxsIGltbWVkaWF0ZWx5IHNlbmQgdGhlIEN1cnNvckNoYW5nZQorICAgICAgICBldmVu
dC4gV2UgbGlzdGVuIHRvIHRoaXMgZXZlbnQgdG8gZGVjaWRlIGlmIHdlIGN1cnJlbnRseSB1c2Ug
YQorICAgICAgICBXZWJDb3JlIGN1cnNvciwgZ290IGEgY3Vyc29yIGZyb20gb3V0c2lkZSwgb3Ig
cmV2ZXJ0IHRvIHRoZSBkZWZhdWx0LgorCisgICAgICAgIFRoaXMgc2hvdWxkIGJlIHJhY2UgZnJl
ZSBhbmQgd29yayByZWxpYWJsZSwgdGhlIG1hbnVhbCB0ZXN0IGZvciB0aGlzCisgICAgICAgIGlz
IFdlYkNvcmUvbWFudWFsLXRlc3RzL2N1cnNvci5odG1sCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoU2V0Q3Vyc29yRXZlbnQ6OlNldEN1cnNvckV2ZW50KToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAg
ICAgIChRV2ViVmlld1ByaXZhdGU6OlFXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRV2ViVmll
d1ByaXZhdGU6OnNldEN1cnNvcik6CisgICAgICAgIChRV2ViVmlldzo6UVdlYlZpZXcpOgorICAg
ICAgICAoUVdlYlZpZXc6OmV2ZW50KToKKworMjAwOC0wNC0yOSAgS2F2aW5kcmEgRGV2aSBQYWxh
cmFqYSAgPGtkcGFsYXJhQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgRG9jdW1lbnRhdGlvbiBmaXhlczoKKworICAgICAgICAtIEZpeGVkIGEg
cWRvYyB3YXJuaW5nCisgICAgICAgIC0gTWVudGlvbiB0aGF0IGZhdiBpY29ucyBjYW4gYmUgb2Yg
YXJiaXRyYXJ5IHNpemUKKyAgICAgICAgLSBGaXggc2lnbmF0dXJlIG9mIFFXZWJQYWdlOjphY2Nl
cHROYXZpZ2F0aW9uUmVxdWVzdCBzaG93IGluIHRoZSBkb2N1bWVudGF0aW9uCisKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAg
ICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDgtMDQtMjggIFRvciBBcm5lIFZlc3Riw7gg
IDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgor
CisgICAgICAgIEZpeCBRV2ViVmlldzo6bG9hZEZpbmlzaGVkIGlzbid0IGFsd2F5cyBlbWl0dGVk
CisKKyAgICAgICAgUmVwbGFjZWQgbG9hZERvbmUoKSB3aXRoIGxvYWRGaW5pc2hlZChib29sKSBh
bmQgbW92ZWQgdGhlIHNpZ25hbHMgZm9yIHByb2dyZXNzCisgICAgICAgIHRyYWNraW5nIChzdGFy
dCwgcHJvZ3JlcywgYW5kIGZpbmlzaCkgdG8gdGhlIHBhZ2UgaW5zdGVhZCBvZiB0aGUgZnJhbWUu
IFRoaXMKKyAgICAgICAgZW5zdXJlcyB0aGF0IHdlIGVtaXQgbG9hZEZpbmlzaGVkIGV2ZW4gd2hl
biBhIHN1YmZyYW1lIHN0YXJ0ZWQgdGhlIGFjdHVhbCBsb2FkLgorCisgICAgICAgIFRoaXMgY2F1
c2VzIGEgZmV3IHJlZ3Jlc3Npb25zIGluIHRoZSBsYXlvdXQgdGVzdHMgdGhhdCB3ZSBmb3Igbm93
IGFjY2VwdCBmb3IKKyAgICAgICAgdGhlIHNha2Ugb2YgdGhlIGNvcnJlY3QgQVBJLiBMYXlvdXQg
dGVzdHMgd2UgY2FuIGZpeCBhbnkgdGltZSB0aG91Z2gsIGluY2x1ZGluZworICAgICAgICBwYXRj
aCByZWxlYXNlLCB0aGUgQVBJIGhvd2V2ZXIgd2UgY2FuJ3QgY2hhbmdlIGFueW1vcmUgaW4gcGF0
Y2ggcmVsZWFzZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlOjp0b3RhbEJ5dGVzKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAg
KiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAg
ICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAg
ICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZy
YW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6c2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsQ2hhbmdlVGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZG93bmxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0Lmg6CisKKzIwMDgtMDQtMjggIEthdmluZHJhIERldmkgUGFsYXJhamEgIDxrZHBh
bGFyYUB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAg
ICAgIEFkZGVkIG1vcmUgZG9jdW1lbnRhdGlvbiBmb3IgUVdlYlNldHRpbmdzLCBRV2ViUGx1Z2lu
RmFjdG9yeSBhbmQgUVdlYkZyYW1lCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAg
ICAgICAgKiBBcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwOgorICAgICAgICAqIEFwaS9xd2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAg
ICAoUVdlYlNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldFVybCk6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6Omljb25Gb3JVcmwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjp3ZWJHcmFwaGljKToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6bWF4aW11bVBhZ2VzSW5DYWNoZSk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OnNldEZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpyZXNl
dEZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjp0ZXN0QXR0cmlidXRlKToKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6cmVzZXRBdHRyaWJ1dGUpOgorCisyMDA4LTA0LTI4ICBBcml5
YSBIaWRheWF0ICA8YWhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbi4KKworICAgICAgICBGaXggZG9jdW1lbnQvZnJhbWUgdGl0bGUgbm90IHJlc2V0IHdo
ZW4gbG9hZGluZyBhIG5ldyBVUkkKKyAgICAgICAgCisgICAgICAgIFdlIHNob3VsZCBhc3N1bWUg
Zmlyc3QgdGhlIGZyYW1lIGhhcyBubyB0aXRsZS4gSWYgaXQgaGFzLCB0aGVuIHRoZSBkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZSgpCisgICAgICAgIHdpbGwgYmUgY2FsbGVkIHZlcnkgc29vbiB3aXRo
IHRoZSBjb3JyZWN0IHRpdGxlLgorICAgICAgICBUaGlzIHByb3Blcmx5IHJlc2V0cyB0aGUgdGl0
bGUgd2hlbiB3ZSBuYXZpZ2F0ZSB0byBhIFVSSSB3aXRob3V0IGEgdGl0bGUuCisgICAgICAgIAor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisKKzIw
MDgtMDQtMjggIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBNaW5vciBkb2N1bWVudGF0aW9uIGNoYW5n
ZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA4LTA0LTI4ICBUb3IgQXJu
ZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbi4KKworICAgICAgICBQcmV2ZW50IG1pZGRsZS1jbGljayBmcm9tIHRyaWdnZXJpbmcg
b3BlbiBVUkwgZnJvbSBjbGlwYm9hcmQgd2hlbiB0aGUgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBh
Y2NlcHRlZC4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6Om1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNl
RG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlVHJpcGxl
Q2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUmVsZWFzZUV2ZW50
KToKKworMjAwOC0wNC0yOCAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4IHNjcm9sbGJh
ciBiZWhhdmlvciBpbiBRdFdlYktpdCB0byBtYXRjaCBRU2Nyb2xsQmFyLgorICAgICAgICAKKyAg
ICAgICAgUmlnaHQgY2xpY2sgY29udGV4dCBtZW51IGlzIG5vdyBzdXBwb3J0ZWQsIGFsb25nIHdp
dGgKKyAgICAgICAgbWlkZGxlIGNsaWNrIHRvIGNlbnRlciBzbGlkZXIgdGh1bWIgb3ZlciBtb3Vz
ZSBjdXJzb3IuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlOjpsaW5rRGVsZWdhdGlvblBvbGljeSk6CisKKzIwMDgtMDQtMjggIFRvciBB
cm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgorCisgICAgICAgIEltcGxlbWVudGVkIGNoYW5uZWwtYmFzZWQgbG9nZ2luZyBm
b3IgUXRXZWJLaXQuCisKKyAgICAgICAgQ29tbWEtc2VwYXJhdGVkIGxvZyBjaGFubmVscyBhcmUg
cmVhZCBmcm9tIHRoZSBRVF9XRUJLSVRfTE9HIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAg
ICBXYXJuaW5ncyBmb3Igbm90SW1wbGVtZW50ZWQoKSBpcyBzdGlsbCBvdXRwdXQgYnkgZGVmYXVs
dCwgYnV0IGNhbiBiZSBkaXNhYmxlZAorICAgICAgICBieSBzZXR0aW5nIERJU0FCTEVfTklfV0FS
TklOR1M9MS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisKKzIwMDgtMDQtMjggIFNpbW9uIEhhdXNtYW5u
ICA8c2hhdXNtYW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBM
YXJzCisKKyAgICAgICAgUmVtb3ZlZCBzZXRIdG1sKGNvbnN0IFFCeXRlQXJyYXkgJikgb3Zlcmxv
YWQgYXMgaXQgYnJlYWtzIHRoZSBjb21tb24gdXNlIG9mIHRoZSBzZXRIdG1sKCkgQVBJLgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgor
ICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisK
KzIwMDgtMDQtMjggIEthdmluZHJhIERldmkgUGFsYXJhamEgIDxrZHBhbGFyYUB0cm9sbHRlY2gu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIERvYyAtIGFkZGlu
ZyBtb3JlIGRvY3VtZW50YXRpb24gdG8gUVdlYkZyYW1lLCBRV2ViUGFnZSBhbmQgUVdlYlZpZXcK
KyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2Vi
Vmlldzo6c3RvcCk6CisgICAgICAgIChRV2ViVmlldzo6YmFjayk6CisgICAgICAgIChRV2ViVmll
dzo6Y2hhbmdlRXZlbnQpOgorCisyMDA4LTA0LTI4ICBTaW1vbiBIYXVzbWFubiAgPHNoYXVzbWFu
QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyLgorCisgICAgICAg
IEZpeGVzOiBQb3B1cHMvQ29udGV4dCBtZW51IGluIFdlYktpdCBhcHBlYXJpbmcgYXQgdGhlIHdy
b25nIGxvY2F0aW9uIHdoZW4gZW1iZWRkZWQgaW4gdGhlIGdyYXBoaWNzIHZpZXcgb3IgdXNpbmcg
bXVsdGlwbGUgc2NyZWVucworICAgICAgICAKKyAgICAgICAgR2l2ZSB0aGUgcG9wdXBzIHRoZSBy
aWdodCBwYXJlbnQgd2lkZ2V0IGFuZCB0aGUgcmlnaHQgY29vcmRpbmF0ZXMgcmVsYXRpdmUgd2l0
aGluIHRoZSBwYXJlbnQuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoK
KworMjAwOC0wNC0yOCAgQmVuamFtaW4gTWV5ZXIgIDxibWV5ZXJAdHJvbGx0ZWNoLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBEb2M6IEFkZCBzZWUgYWxzbydz
IChhbmQgYSBmZXcgbWlub3Igd2hpdGVzcGFjZS90eXBvIGNvcnJlY3Rpb25zKQorICAgICAgICAK
KworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjp+UVdl
YkZyYW1lKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0SHRtbCk6CisgICAgICAgIChRV2ViRnJh
bWU6OnNldENvbnRlbnQpOgorICAgICAgICAoUVdlYkZyYW1lOjpwYXJlbnRGcmFtZSk6CisgICAg
ICAgIChRV2ViRnJhbWU6OmNoaWxkRnJhbWVzKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2V0U2Ny
b2xsQmFyVmFsdWUpOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxCYXJWYWx1ZSk6CisgICAg
ICAgIChRV2ViRnJhbWU6OnNjcm9sbEJhck1heGltdW0pOgorICAgICAgICAoUVdlYkZyYW1lOjpz
Y3JvbGxCYXJNaW5pbXVtKToKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVuZGVyKToKKyAgICAgICAg
KFFXZWJGcmFtZTo6cG9zKToKKyAgICAgICAgKFFXZWJGcmFtZTo6Z2VvbWV0cnkpOgorICAgICAg
ICAoUVdlYkZyYW1lOjpwcmludCk6CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNj
cmlwdCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VE
b3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjp+UVdlYlBhZ2UpOgorICAgICAg
ICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAob3Blbk5ld1dpbmRvdyk6
CisgICAgICAgIChRV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdl
OjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCk6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToK
KyAgICAgICAgKFFXZWJQYWdlOjp1c2VyQWdlbnRGb3JVcmwpOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpfcV9vbkxvYWRQcm9ncmVzc0NoYW5nZWQpOgorICAgICAgICAqIEFwaS9xd2Vidmll
dy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6ZXZlbnQpOgorCisyMDA4LTA0LTI4ICBLYXZpbmRy
YSBEZXZpIFBhbGFyYWphICA8a2RwYWxhcmFAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbi4KKworICAgICAgICBTdWJtaXR0aW5nIG1vcmUgZG9jdW1lbnRhdGlvbiBm
b3IgUVdlYlBhZ2UKKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorCisy
MDA4LTA0LTI4ICBMaW5jb2xuIFJhbXNheSAgPGxpbmNvbG4ucmFtc2F5QHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQ29tcGlsZSB3aGVuIFFU
X05PX0NMSVBCT0FSRCBpcyBkZWZpbmVkLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisKKzIwMDgtMDQt
MjggIERhdmlkIEJvZGRpZSAgPGRib2RkaWVAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbi4KKworICAgICAgICBNaW5vciBkb2N1bWVudGF0aW9uIGZpeC4KKyAgICAg
ICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorCisyMDA4LTA0LTI4ICBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEltcGxlbWVudCBRV2ViUGFnZTo6Y3JlYXRlUGx1
Z2luCisgICAgICAgIAorICAgICAgICBUaGUgY29kZSBpcyBjb21pbmcgZnJvbSB0aGUgZGVtbyBi
cm93c2VyIGFuZCBuZWVkZWQgaGVyZQorICAgICAgICBmb3Igc29tZSBtYW51YWwgdGVzdHMuCisg
ICAgICAgIAorCisgICAgICAgICogUXRMYXVuY2hlci9RdExhdW5jaGVyLnBybzoKKyAgICAgICAg
KiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToK
KworMjAwOC0wNC0yOCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFF0L1dpbiBidWlsZCBmaXguIEluY2x1ZGUgY29uZmlnLmggdG8gZ2V0IHRoZSBpbXBs
aWNpdCBNYXRoRXh0cmFzLmgKKyAgICAgICAgaW5jbHVzaW9uIGNvcnJlY3Qgd2l0aCByZWdhcmRz
IHRvIHJhbmRfcy4KKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisKKzIwMDgtMDQt
MjggIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODcxMworCisgICAgICAgIEZpeCBzY3JvbGxiYXIgcGFpbnRpbmcgaXNz
dWVzIGluIFF0V2ViS2l0LgorCisgICAgICAgIEhvdmVyaW5nIGFuZCBjbGljay1kcmFnaW5nIG91
dHNpZGUgb2YgdGhlIHNjcm9sbGJhciB3b3VsZAorICAgICAgICBwcm9kdWNlIHVuZXhwZWN0ZWQg
YW5kIGluY29uY2lzdGVudCByZXN1bHRzLiBXZSBhbHNvIGRpZG4ndAorICAgICAgICBwYXNzIG9u
IGxlYXZlLWV2ZW50cyB0byB0aGUgdW5kZXJseWluZyBXZWJLaXQgY29kZSwgd2hpY2gKKyAgICAg
ICAgd2FzIG5lc3NlY2FyeSB0byBpbXBsZW1lbnQgdGhlIHBhaW50IGZpeC4KKworICAgICAgICBO
b3RlOiBUaGUgZXZlbnQgaGFuZGxpbmcgb2YgdGhlIExlYXZlIGV2ZW50IHNob3VsZCBiZSBtb3Zl
ZAorICAgICAgICBvdXQgb2YgUVdlYlZpZXc6OmV2ZW50KCkgYW5kIGludG8gYSBwcm9wZXIgb3Zl
cnJpZGUgZm9yIDQuNS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OmxlYXZlRXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6
CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpldmVudCk6
CisKKzIwMDgtMDQtMjUgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24sIEhvbGdlci4KKworICAgICAgICBGaXhlZCBmb2N1
cyBoYW5kbGluZyB3aGVuIGEgbm9kZSBpcyBmb2N1c2VkIHdoaWxlIHRoZSBjb3JyZXNwb25kaW5n
IFFXZWJQYWdlIGRvZXMgbm90IGhhdmUgdGhlIGZvY3VzLgorCisgICAgICAgICogQ29ycmVjdGx5
IGRlLSBhbmQgcmVhY3RpdmF0ZSB0aGUgZm9jdXNlZCBmcmFtZSBpbiBmb2N1c091dC9mb2N1c0lu
RXZlbnQKKyAgICAgICAgd2l0aG91dCB0ZWxsaW5nIHRoZSBmb2N1cyBjb250cm9sbGVyLiBXZSBk
b24ndCB3YW50IHRvIGNoYW5nZSB0aGUgZm9jdXNlZCBmcmFtZQorICAgICAgICAtIHRoZSBjb250
cm9sbGVyIGhhcyB0byByZW1lbWJlciBpdCBpbiBmYWN0IC0gYnV0IGluc3RlYWQganVzdCBkZWFj
dGl2YXRlIHRoZQorICAgICAgICBmcmFtZSBmb3IgY29ycmVjdCBwYWludGluZyBhcyBSZW5kZXJU
aGVtZTo6aXNGb2N1c2VkKCkgdXNlcyB0aGUgYWN0aXZhdGlvbgorICAgICAgICBzdGF0ZSBvZiB0
aGUgZnJhbWUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpmb2N1c0luRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpmb2N1
c091dEV2ZW50KToKKworMjAwOC0wNC0yNSAgS2F2aW5kcmEgRGV2aSBQYWxhcmFqYSAgPGtkcGFs
YXJhQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAg
ICAgY29tcGxldGVkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBEZXRhaWxlZCBEZXNjcmlwdGlvbiBz
ZWN0aW9uIGZvciBRV2ViVmlldworICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2Vidmlldy5j
cHA6CisKKzIwMDgtMDQtMjUgIERlbmlzIER6eXViZW5rbyAgPGRlbmlzLmR6eXViZW5rb0B0cm9s
bHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZpeGVk
IHRoZSB3YXkgUVdlYkhpc3Rvcnkgd29ya3MgLSB3aGVuIHlvdSBjYWxsIGJhY2soKSwgZm9yd2Fy
ZCgpIG9yIGdvVG9JdGVtKCkgZnVuY3Rpb25zIGl0IGNoYW5nZXMgdGhlIGN1cnJlbnQgaXRlbSBp
biBoaXN0b3J5ICphbmQqIGxvYWRzIHRoZSBjb3JyZXNwb25kaW5nIHBhZ2UuCisgICAgICAgIAor
CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5Ojpi
YWNrKToKKyAgICAgICAgKFFXZWJIaXN0b3J5Ojpmb3J3YXJkKToKKyAgICAgICAgKFFXZWJIaXN0
b3J5Ojpnb1RvSXRlbSk6CisKKzIwMDgtMDQtMjUgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Ri
b0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAg
IEZpeCByZXN1Ym1pdCBvZiBIVE1MIGZvcm1zIHdoZW4gaW5pdGlhbGx5IGRlbmllZCBieSBRV2Vi
UGFnZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoKS4KKyAgICAgICAgCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKToKKworMjAwOC0wNC0yNSAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhv
bGdlci4KKworICAgICAgICBXaGVuIHByZXNzaW5nIGJhY2tzcGFjZSBpbiBhIGxpbmUgZWRpdCBp
biBhIHdlYnBhZ2Ugd2Ugc2hvdWxkIG5vdCBnbyBiYWNrIHRvIHRoZSBwcmV2aW91cyBwYWdlLgor
ICAgICAgICAKKyAgICAgICAgVGhlIHNob3J0Y3V0IGZvciBiYWNrIG9uIFdpbmRvd3MgaXMgYmFj
a3NwYWNlLiBJbXBsZW1lbnRlZCBzaG9ydGN1dCBvdmVycmlkZQorICAgICAgICBoYW5kbGluZyBp
biBRV2ViVmlldy9RV2ViUGFnZSB0byBwcmV2ZW50IHRoaXMuCisgICAgICAgIAorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6d2hlZWxFdmVu
dCk6CisgICAgICAgIChlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjppbnB1
dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6c2hvcnRjdXRPdmVycmlk
ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6
OmV2ZW50KToKKworMjAwOC0wNC0yNSAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAdHJv
bGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBGaXgg
dHJpcGxlLWNsaWNraW5nIGRvZXMgbm90IHdvcmsgaW4gYSB3ZWIgcGFnZQorICAgICAgICAKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OnVw
ZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp0aW1lckV2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFXZWJQ
YWdlOjp1bmRvU3RhY2spOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMDgtMDQt
MjUgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgV2hlbiBwcmVzc2luZyBDdHJsLVVwIHRoZSBrZXli
b2FyZCBtb2RpZmllcnMgY291bGQgaW5jbHVkZSBvdGhlciBtb2RpZmllcnMKKyAgICAgICAgCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpr
ZXlQcmVzc0V2ZW50KToKKworMjAwOC0wNC0yNSAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJv
QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAg
Rml4IGhhbmRsaW5nIG9mIEphdmFzY3JpcHQncyBjb25maXJtKCkgZnVuY3Rpb24gaW4gUXRXZWJL
aXQuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0wNC0y
NSAgS2F2aW5kcmEgRGV2aSBQYWxhcmFqYSAgPGtkcGFsYXJhQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRG9jIC0gYWRkZWQgYSBzY3JlZW5z
aG90LCBmbG93Y2hhcnQsIGFuZCBhIHNuaXBwZXQgdG8gdGhlIFFXZWJWaWV3IGRvY3VtZW50YXRp
b24gdG8gaW1wcm92ZSBjbGFyaXR5CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJ2aWV3
LmNwcDoKKworMjAwOC0wNC0yNSAgQmVuamFtaW4gTWV5ZXIgIDxibWV5ZXJAdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBRV2ViUGFnZTogbWlz
c2luZyBzaWduYWwgd2hlbiB3aW5kb3cucHJpbnQoKSBpcyByZXF1ZXN0ZWQgZnJvbSBqYXZhc2Ny
aXB0CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisKKzIwMDgtMDQtMjUgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6ICJTYXZlIElt
YWdlIiBhY3Rpb24gd2Fzbid0IGRvaW5nIGFueXRoaW5nLgorICAgICAgICAKKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisK
KzIwMDgtMDQtMjUgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQXBwbHkga2V5IGV2ZW50IGNoYW5n
ZXMgdG8gdGhlIGN1cnJlbnQgZnJhbWUsIG5vdCB0aGUgbWFpbiBmcmFtZS4KKyAgICAgICAgCisg
ICAgICAgIEV4YW1wbGU6IGhpdHRpbmcgc3BhY2UgYmFyIHNob3VsZCBzY3JvbGwgY3VycmVudCBm
cmFtZSwgbm90IHRoZSBtYWluIGZyYW1lCisgICAgICAgIHdoaWNoIGRvZXNuJ3QgZXZlbiBoYXZl
IGEgc2Nyb2xsYmFyLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmtleVByZXNzRXZlbnQpOgorCisyMDA4LTA0LTI1ICBC
ZW5qYW1pbiBNZXllciAgPGJtZXllckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgorCisgICAgICAgIEZpeGVzOiBRV2ViRnJhbWUgY3Jhc2ggd2hlbiBmZXRjaGlu
ZyB0aGUgaWNvbgorCisgICAgICAgIEp1c3QgY2FsbCBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwg
dG8gbm90IGR1cGxpY2F0ZSBjb2RlIGFuZCBvYmV5IHRoZSBtdXRleCBsb2NrLgorCisgICAgICAg
ICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIwMDgtMDQtMjUgIFdhcndpY2sgQWxsaXNvbiAgPHdh
cndpY2tAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAg
ICAgICBGaXhlczogU2Nyb2xsYmFycyBkaWQgbm90IHJlcG9ydCBjb3JyZWN0IG1heGltdW0uCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKworMjAwOC0wNC0yNSAgRGF2aWQgQm9kZGll
IDxkYm9kZGllQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisK
KyAgICAgICAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzIGZvciBzb21lIG9mIHRoZSBRV2ViIGNsYXNz
ZXMKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAqIEFwaS9xd2ViaGlz
dG9yeS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogQXBp
L3F3ZWJ2aWV3LmNwcDoKKworMjAwOC0wNC0yNSAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIg
IDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAg
ICAgICBJbXBsZW1lbnQgZHVtcGluZyBvZiByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcyB0byBwYXNz
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWJvcnQtc2hvdWxkLWNhbmNlbC1sb2FkLmh0bWwK
KyAgICAgICAgCisgICAgICAgIFNpbWlsYXIgdG8gRWRpdGluZyBhbmQgRnJhbWVsb2FkaW5nIHdl
IGRvIHRoZSBkdW1waW5nIHdpdGhpbiBXZWJDb3JlCisgICAgICAgIAorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChxdF9kdW1wX2Zy
YW1lX2xvYWRlcik6CisgICAgICAgIChxdF9kdW1wX3Jlc291cmNlX2xvYWRfY2FsbGJhY2tzKToK
KyAgICAgICAgKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSk6CisKKzIwMDgtMDQtMjQgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTYW0uCisKKyAgICAgICAgQ2hhbmdlIHNvbWUgU3RyaW5nIGFyZ3VtZW50cyB0byBiZSBjb25z
dCByZWZlcmVuY2VzIGluc3RlYWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkSW5z
ZXJ0VGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKwor
MjAwOC0wNC0yNCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBDb3NtZXRpYyBjaGFu
Z2VzIHRvIG1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4KKyAgICAgICAgLUVhcmx5IGV4aXQg
aWYgd2UgZG9uJ3QgaGF2ZSBhIHdlYnZpZXcKKyAgICAgICAgLWhhbmRsZSB0aGUgZW1wdHkgdG9v
bHRpcCBhbmQgbm9uLWVtcHR5IHRvb2x0aXAgY2FzZSBzZXBhcmF0ZWx5CisgICAgICAgIAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFRvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OnByaW50KToKKworMjAwOC0wNC0yNCAgUGF1bCBPbGF2IFR2ZXRlICA8cGF1
bEB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAg
IEF1dG9tYXRpY2FsbHkgd3JhcCB0b29sdGlwIHRleHQgYW5kIGhpZGUgYSBzaG93biB0b29sdGlw
IHdoZW4gaXQgaXMgZW1wdHkuCisKKyAgICAgICAgUVdpZGdldDo6c2V0VG9vbHRpcCgiIikgd2ls
bCBzdGlsbCBzaG93IHRoZSBvbGQgdG9vbHRpcCBmb3IgdXAgdG8gMTAgc2Vjb25kcy4KKyAgICAg
ICAgV29ya2Fyb3VuZCBhcyBkaXNjdXNzZWQgd2l0aCBNYXR0aGlhcy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjpzZXRUb29sVGlwKToKKworMjAwOC0wNC0yNCAgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
bi4KKworICAgICAgICBBbGxvdyB0byBkaXNhYmxlIGNhY2hpbmcgY29tcGxldGVsZXkgYnkgY2Fs
bGluZyBzZXRPYmplY3RDYWNoZUNhcGFjaXRpZXMoMCwgMCwgMCkKKworICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPYmplY3RDYWNoZUNh
cGFjaXRpZXMpOgorCisyMDA4LTA0LTI0ICBCZW5qYW1pbiBNZXllciAgPGJtZXllckB0cm9sbHRl
Y2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEltcHJvdmUg
a2V5Ym9hcmQgc2Nyb2xsaW5nCisgICAgICAgIAorICAgICAgICBNYXRjaCBEb3duL1VwIGtleXMg
c2Nyb2xsIGRpc3RhbmNlIHdpdGggU2FmYXJpIChpLmUuIGZhc3RlcikgYW5kIGFkZCBIb21lIGFu
ZCBFbmQgc2hvcnRjdXRzIHRvIHNjcm9sbCB0byB0aGUgdG9wL2JvdG9tLgorICAgICAgICAKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omtl
eVByZXNzRXZlbnQpOgorCisyMDA4LTA0LTI0ICBPbGl2aWVyIEdvZmZhcnQgIDxvZ29mZmFydEB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZp
eCB2YXJpb3VzIGNvbXBpbGVyIHdhcm5pbmdzIGluIHRoZSBRdCBwb3J0LgorCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnByaW50KToKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKGdyYXBoaWNzKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIwMDgtMDQtMjQgIFRvciBB
cm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgorCisgICAgICAgIENsZWFuZWQgdXAgY29weXJpZ2h0IGhlYWRlcnMgKHJlbW92
ZWQgbWlzcGxhY2VkIGNsYXNzIGRlc2NyaXB0aW9ucyBhbmQKKyAgICAgICAgZml4ZWQgaW5jb25z
aXN0ZW50IHdoaXRlc3BhY2UgYW5kIGluZGVudGF0aW9uKS4KKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAqIEFw
aS9xd2ViaGlzdG9yeS5oOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeV9wLmg6CisgICAgICAg
ICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmhpc3Rv
cnlpbnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYmtpdGdsb2JhbC5oOgorICAgICAgICAq
IEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3Jr
aW50ZXJmYWNlLmg6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlX3AuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5mYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmZhY3RvcnkuaDoKKyAgICAgICAgKiBBcGkv
cXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisgICAgICAg
ICogQXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKworMjAw
OC0wNC0yNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQWRkZWQgYmFzaWMgVVJMIGd1ZXNz
aW5nIHRvIFF0TGF1bmNoZXIgKHNhbWUgYXMgaW4gdGhlIGRlbW8gYnJvd3NlcikuCisgICAgICAg
IAorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6
OmNoYW5nZUxvY2F0aW9uKToKKyAgICAgICAgKE1haW5XaW5kb3c6Omd1ZXNzVXJsRnJvbVN0cmlu
Zyk6CisKKzIwMDgtMDQtMjQgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQHdlYmtpdC5v
cmc+LgorCisgICAgICAgIFByZXZlbnQgZG91YmxlIGRlbGV0aW9ucyBvZiB0aGUgZGVmYXVsdCB3
ZWIgaW50ZXJmYWNlLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeWludGVy
ZmFjZS5jcHA6CisgICAgICAgIChnQ2xlYW51cEludGVyZmFjZSk6CisgICAgICAgIChRV2ViSGlz
dG9yeUludGVyZmFjZTo6UVdlYkhpc3RvcnlJbnRlcmZhY2UpOgorCisyMDA4LTA0LTIzICBTaW1v
biBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IGNvbXBpbGF0
aW9uIGFnYWluc3QgUXQgNC4zCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisgICAgICAgICogUXRMYXVuY2hlci9tYWlu
LmNwcDoKKyAgICAgICAgKG1haW4pOgorCisyMDA4LTA0LTIzICBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
LgorCisgICAgICAgICogTWFrZSBzdXJlIHRoZSAiSW5zcGVjdCBFbGVtZW50IiBpdGVtIGdldHMg
YWRkZWQgdG8gdGhlIENvbnRleHRNZW51LCBhIGNhbGwKKyAgICAgICAgdG8gQ29udGV4dE1lbnU6
OnBvcHVsYXRlKCkgaXMgbm90IGFkZGluZyBpdCwgdGhlIENvbnRleHRNZW51Q29udHJvbGxlciBk
b2VzCisgICAgICAgIGFkZCBpdCBhZnRlciB0aGUgY2FsbCB0byBwb3B1bGF0ZSgpLiBEbyB0aGF0
IGFzIHdlbGwuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgorCisyMDA4LTA0
LTIzICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSG9sZ2VyLgorCisgICAgICAgIEZpeCBjcmFzaGVzIG9uIHdpbmRvdy5jbG9zZSgp
LgorCisgICAgICAgIFdlIHNob3VsZCBub3QgZGVsZXRlIHRoZSBRV2ViUGFnZSBvYmplY3QgaW4g
dGhlIENocm9tZUNsaWVudCBidXQgbGVhdmUgaXQgdXAgdG8KKyAgICAgICAgdGhlIGFwcGxpY2F0
aW9uIHdoZW4gYW5kIHdoZXRoZXIgdG8gZGVsZXRlIGEgYnJvd3NlciB3aW5kb3cuIEZvciB0aGlz
IHdlIG5vdworICAgICAgICBlbWl0IHRoZSB3aW5kb3dDbG9zZVJlcXVlc3RlZCgpIHNpZ25hbC4K
KworICAgICAgICBEb25lIHdpdGggVG9yIEFybmUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFF0TGF1bmNoZXIvbWFp
bi5jcHA6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisKKzIwMDgtMDQtMjMgIFNpbW9uIEhhdXNt
YW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIu
CisKKyAgICAgICAgRml4IHBhcnNpbmcgb2YgZXh0ZXJuYWwgc2NyaXB0cy9zdHlsZXNoZWV0cyB3
aGVuIHVzaW5nIHNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCkuCisKKyAgICAgICAgV2UgdXNl
ZCB0byBwYXNzIHRoZSBodG1sIHN0cmluZyB0byB0aGUgZnJhbWVsb2FkZXIgaW4gdXRmLTE2LCB3
aGljaCBhbHNvIG1lYW50IHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgICAgZW5jb2Rpbmcgb2YgZXh0
ZXJuYWwgc2NyaXB0cy9zdHlsZXNoZWV0cyBiZWNhbWUgdXRmLTE2LiBUaGF0IGRvZXNuJ3QgbWFr
ZSBzZW5zZSwgc28gYXNzdW1lIHV0Zi04CisgICAgICAgIGJ5IGRlZmF1bHQuIFRoaXMgaXMgbm93
IGFsc28gZG9jdW1lbnRlZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lOjpzZXRIdG1sKToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisy
MDA4LTA0LTIzICBCZW5qYW1pbiBNZXllciAgPGJtZXllckB0cm9sbHRlY2guY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZpeGVzIGJhY2tncm91bmQgY29sb3Ig
cHJvcGFnYXRpb24gd2hlbiB1c2luZyBhIGN1c3RvbSBRV2ViUGFnZQorICAgICAgICAKKyAgICAg
ICAgU2V0IHRoZSBwYWxldHRlIGluIHNldFBhZ2UoKSwgbm90IGR1cmluZyB0aGUgY3JlYXRpb24g
b24tZGVtYW5kLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAg
ICAgIChRV2ViVmlldzo6cGFnZSk6CisgICAgICAgIChRV2ViVmlldzo6c2V0UGFnZSk6CisKKzIw
MDgtMDQtMjMgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4IHRoZSB1c2VyIGFnZW50IG9uIHRo
ZSBtYWMgdG8gYmUgQlNENAorICAgICAgICAKKyAgICAgICAgUHV0IFFfT1NfREFSV0lOIGJlZm9y
ZSBRX09TX0JTRDQgc2Vuc2UgdGhleSBhcmUgYm90aCBkZWZpbmVkIG9uIHRoZSBtYWMKKyAgICAg
ICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVz
ZXJBZ2VudEZvclVybCk6CisKKzIwMDgtMDQtMjMgIFNpbW9uIEhhdXNtYW5uICA8c2hhdXNtYW5A
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAg
QWRkZWQgbWlzc2luZyBjb3B5cmlnaHQgbm90aWNlLgorICAgICAgICBTbWFsbCBmaXhlcyB0byB0
aGUgZG9jdW1lbnRhdGlvbi4KKworICAgICAgICAqIEFwaS9xd2VicGx1Z2luZmFjdG9yeS5jcHA6
CisKKzIwMDgtMDQtMjMgIFphY2sgUnVzaW4gIDx6YWNrQHR1bmdzdGVuZ3JhcGhpY3MuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEFkZGVkIGEgY29udGVudHNT
aXplKCkgcHJvcGVydHkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZTo6Y29udGVudHNTaXplKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aGl0VGVzdENv
bnRlbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKworMjAwOC0wNC0yMiAgQmVuamFt
aW4gTWV5ZXIgIDxibWV5ZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbi4KKworICAgICAgICBGaXhlczogUVdlYlBhZ2UncyBRTmV0d29ya01hbmFnZXIncyBjYW4g
YmUgc2hhcmVkIGFtb25nIHdlYnBhZ2VzLgorCisgICAgICAgIERvbid0IGZvcmNlIHRoZSBkZWxl
dGlvbiBvZiB0aGUgb2JqZWN0LCBidXQgbGV0IFFPYmplY3QgdGFrZSBjYXJlIG9mIGl0LgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0wNC0yMiAgU2ltb24gSGF1c21hbm4g
IDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKwor
ICAgICAgICBEb2N1bWVudGF0aW9uIGZvciBRV2ViUGx1Z2luRmFjdG9yeSBhbmQgZG9jdW1lbnRh
dGlvbiB1cGRhdGVzIGZvciBRV2ViUGFnZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZTo6c2V0TGlua0RlbGVnYXRpb25Qb2xpY3kpOgorICAgICAgICAo
UVdlYlBhZ2U6OmxpbmtEZWxlZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFFXZWJQYWdlOjpzd2Fs
bG93Q29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25E
ZXBlbmRlbnRBY3Rpb25zKToKKyAgICAgICAgKFFXZWJQYWdlOjpleHRlbnNpb24pOgorICAgICAg
ICAoUVdlYlBhZ2U6Om5ldHdvcmtBY2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKiBBcGkvcXdlYnBs
dWdpbmZhY3RvcnkuY3BwOgorICAgICAgICAoUVdlYlBsdWdpbkZhY3Rvcnk6OlFXZWJQbHVnaW5G
YWN0b3J5KToKKyAgICAgICAgKFFXZWJQbHVnaW5GYWN0b3J5Ojp+UVdlYlBsdWdpbkZhY3Rvcnkp
OgorICAgICAgICAoUVdlYlBsdWdpbkZhY3Rvcnk6OnJlZnJlc2hQbHVnaW5zKToKKworMjAwOC0w
NC0yMiAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBBZGRlZCBRV2ViUGFnZTo6c3dhbGxvd0NvbnRl
eHRNZW51RXZlbnQgYW5kIFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMu
CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldExpbmtEZWxlZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKFFXZWJQYWdlOjpsaW5rRGVsZWdhdGlvblBvbGljeSk6CisgICAg
ICAgIChRV2ViUGFnZTo6c3dhbGxvd0NvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdlYlBh
Z2U6OnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZp
ZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OmV2ZW50KToKKworMjAwOC0wNC0yMiAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhv
bGdlci4KKworICAgICAgICBBZGRlZCBFeHRlbnNpb24gQVBJcyBmb3IgUVdlYlBhZ2UuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNldExpbmtEZWxl
Z2F0aW9uUG9saWN5KToKKyAgICAgICAgKFFXZWJQYWdlOjpsaW5rRGVsZWdhdGlvblBvbGljeSk6
CisgICAgICAgIChRV2ViUGFnZTo6ZXh0ZW5zaW9uKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiBBcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwOgorICAgICAgICAoUVdlYlBs
dWdpbkZhY3Rvcnk6OmV4dGVuc2lvbik6CisKKzIwMDgtMDQtMjIgIFRvciBBcm5lIFZlc3Riw7gg
IDx0YXZlc3Rib0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgor
CisgICAgICAgIEVtaXQgbG9hZFByb2dyZXNzKCkgc2lnbmFsIG9uIGxvYWRTdGFydGVkKCkuCisg
ICAgICAgIAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NF
c3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24pOgorCisyMDA4LTA0LTIyICBaYWNrIFJ1c2luICA8
emFja0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEZp
eCBiYWNrZ3JvdW5kIHByb3BhZ2F0aW9uIGZyb20gdGhlIFFXZWJWaWV3J3MgcGFsZXR0ZS4KKwor
ICAgICAgICBUaGUgYmFja2dyb3VuZCBicnVzaCBvZiB0aGUgcGFsZXR0ZSBuZWVkcyB0byBiZSBw
cm9wYWdhdGVkIHRvIHRoZSBXZWJDb3JlOjpGcmFtZVZpZXcuCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnVwZGF0ZUJhY2tncm91bmQp
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0UGFsZXR0ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAo
UVdlYlZpZXc6OnBhZ2UpOgorICAgICAgICAoUVdlYlZpZXc6OmNoYW5nZUV2ZW50KToKKyAgICAg
ICAgKiBBcGkvcXdlYnZpZXcuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcDoKKworMjAwOC0wNC0yMiAgQmVuamFtaW4gTWV5ZXIgIDxibWV5ZXJAdHJv
bGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBGaXgg
bWFwcy5nb29nbGUuY29tCisKKyAgICAgICAgV2UgaGF2ZSB0byBpbmNsdWRlIGEgdmVyc2lvbiBp
biB0aGUgU2FmYXJpIHRhZyBpbiB0aGUgdXNlci1hZ2VudC4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKToKKworMjAwOC0w
NC0yMiAgVG9yIEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQWRkIHZpc3VhbCBmb2N1c2luZyBoaW50
IGZvciBjbGVhciBidXR0b24gYW5kCisgICAgICAgIGNoYW5nZSBmb2N1cyB0byB3ZWIgcGFnZSBh
ZnRlciB1c2VyIGVudGVycyBuZXcgVVJMLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNw
cDoKKyAgICAgICAgKENsZWFyQnV0dG9uOjpwYWludEV2ZW50KToKKyAgICAgICAgKE1haW5XaW5k
b3c6OmNoYW5nZUxvY2F0aW9uKToKKworMjAwOC0wNC0yMiAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAg
ICBBZGRlZCBRV2ViRnJhbWU6OmhpdFRlc3RDb250ZW50KCkgYW5kIFFXZWJIaXRUZXN0UmVzdWx0
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6Omhp
dFRlc3RDb250ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZlbnQpOgorICAgICAgICAoUVdl
YkhpdFRlc3RSZXN1bHQ6OlFXZWJIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFFXZWJIaXRUZXN0
UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAgKFFXZWJI
aXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6On5R
V2ViSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6aXNOdWxsKToK
KyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0Ojpwb3MpOgorICAgICAgICAoUVdlYkhpdFRlc3RS
ZXN1bHQ6OnRpdGxlKToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0OjpsaW5rVGV4dCk6Cisg
ICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6bGlua1VybCk6CisgICAgICAgIChRV2ViSGl0VGVz
dFJlc3VsdDo6bGlua1RpdGxlKToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0OjpsaW5rVGFy
Z2V0RnJhbWUpOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmFsdGVybmF0ZVRleHQpOgor
ICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmltYWdlVXJsKToKKyAgICAgICAgKFFXZWJIaXRU
ZXN0UmVzdWx0OjpwaXhtYXApOgorICAgICAgICAoUVdlYkhpdFRlc3RSZXN1bHQ6OmlzQ29udGVu
dEVkaXRhYmxlKToKKyAgICAgICAgKFFXZWJIaXRUZXN0UmVzdWx0Ojppc0NvbnRlbnRTZWxlY3Rl
ZCk6CisgICAgICAgIChRV2ViSGl0VGVzdFJlc3VsdDo6ZnJhbWUpOgorICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFXZWJI
aXRUZXN0UmVzdWx0UHJpdmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCisyMDA4LTA0LTIy
ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSG9sZ2VyLgorCisgICAgICAgIERvbid0IGNyYXNoIGlmIGFuIGlucHV0IG1ldGhvZCBx
dWVyeSBpcyBkb25lIHdpdGhvdXQgYSBwYWdlLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9x
d2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6aW5wdXRNZXRob2RRdWVyeSk6CisKKzIw
MDgtMDQtMjIgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAgQWRkZWQgcmUtaW1wbGVtZW50YXRpb25z
IG9mIFFPYmplY3Q6OmV2ZW50IGZvciBmdXR1cmUgc2FmZXR5LgorICAgICAgICAKKyAgICAgICAg
VGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gZml4IGJ1Z3Mgd2l0aCB0aGUgZXZlbnQgaGFuZGxpbmcg
ZXZlbiBpbiBwYXRjaCByZWxlYXNlcworICAgICAgICBhbmQgaXMgYSBnZW5lcmFsIHN0eWxlIHdl
IGZvbGxvdyBpbiBRdC4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFXZWJWaWV3OjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisK
KzIwMDgtMDQtMjIgIEJlbmphbWluIE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4IGNvbnN0cnVjdGlvbiBvZiB0
aGUgdXNlciBhZ2VudC4KKyAgICAgICAgCisgICAgICAgIFRoZSB1c2VyLWFnZW50IGlzIG5vdyBj
b21wb3NlZCBvZgorICAgICAgICAqIHRoZSBwbGF0Zm9ybSBhbmQgc3VicGxhdGZvcm0KKyAgICAg
ICAgKiB0aGUgUXQgdmVyc2lvbiBvciBhcHBsaWNhdGlvbiBuYW1lIGFuZCB2ZXJzaW9uIChpZiBz
ZXQpCisgICAgICAgICogdGhlIGxvY2FsZQorICAgICAgICAqIHRoZSBTU0wgc2V0dGluZ3MKKyAg
ICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6
Om5ldHdvcmtBY2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRQbHVnaW5GYWN0
b3J5KToKKyAgICAgICAgKFFXZWJQYWdlOjpwbHVnaW5GYWN0b3J5KToKKyAgICAgICAgKFFXZWJQ
YWdlOjp1c2VyQWdlbnRGb3JVcmwpOgorICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisK
KzIwMDgtMDQtMjIgIFRoaWFnbyBNYWNpZWlyYSAgPHRqbWFjaWVpQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IFBlZGFudGljIGNv
bXBpbGF0aW9uIGZpeAorCisgICAgICAgIERvbid0IHB1dCBzZW1pLWNvbG9ucyBhZnRlciBicmFj
ZXMgY2xvc2luZyBuYW1lc3BhY2VzLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgor
CisyMDA4LTA0LTIxICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBDaGFuZ2VkIHRoZSByZXR1cm4gdHlw
ZSBvZiBRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdCBmcm9tIGEgUVN0cmluZyB0byBhIFFW
YXJpYW50LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorCisy
MDA4LTA0LTIxICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSG9sZ2VyLgorCisgICAgICAgIEZpeGVzIHJlZHVuZGFudCAiRm9udHMi
IHN1Ym1lbnUgaW4gZGVmYXVsdCBsaW5lZWRpdHMgdGhhdCBoYXMgb25seSBkaXNhYmxlZCBpdGVt
cy4KKworICAgICAgICBEb24ndCBzaG93IHN1Yi1tZW51cyB0aGF0IGhhdmUgb25seSBhY3Rpb25z
IHRoYXQgYXJlIGRpc2FibGVkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlQ29udGV4dE1lbnUpOgorCisyMDA4LTA0LTIxICBL
YXZpbmRyYSBEZXZpIFBhbGFyYWphIDxrZHBhbGFyYUB0cm9sbHRlY2guY29tPi4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBMb3RzIG9mIGRvY3VtZW50YXRpb24gZml4
ZXMsIGZpeGVkIGFsbCBxZG9jIHdhcm5pbmdzLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6CisgICAgICAg
ICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKGdDbGVhbnVwSW50ZXJm
YWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpRV2ViSGlzdG9yeUludGVyZmFj
ZSk6CisgICAgICAgIChRV2ViSGlzdG9yeUludGVyZmFjZTo6flFXZWJIaXN0b3J5SW50ZXJmYWNl
KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0
TWV0aG9kUXVlcnkpOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXcpOgorICAgICAgICAoUVdlYlBh
Z2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNj
cmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uZmlybSk6CisgICAg
ICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChRV2ViUGFnZTo6dmll
d3BvcnRTaXplKToKKyAgICAgICAgKFFXZWJQYWdlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCk6
CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6
CisgICAgICAgIChRV2ViUGFnZTo6Zm9jdXNOZXh0UHJldkNoaWxkKToKKyAgICAgICAgKFFXZWJQ
YWdlOjpzZXRGb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpz
ZXRMaW5rRGVsZWdhdGlvblBvbGljeSk6CisgICAgICAgIChRV2ViUGFnZTo6ZmluZFRleHQpOgor
ICAgICAgICAoUVdlYlBhZ2U6OnNldHRpbmdzKToKKyAgICAgICAgKFFXZWJQYWdlOjpuZXR3b3Jr
UHJveHkpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKToKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omljb25G
b3JVcmwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpmb250RmFtaWx5KToKKyAgICAgICAgKiBB
cGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OmxvYWQpOgorICAgICAgICAqIEFw
aS9xd2Vidmlldy5oOgorCisyMDA4LTA0LTIxICBNYXJpdXMgQnVnZ2UgTW9uc2VuICA8bW1vbnNl
bkB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAg
IEZpeCBjb21waWxlIGZhaWx1cmUgb24gc29sYXJpcy1jYworCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmg6IFJlbW92ZWQgdHJhaWxpbmcgc2VtaWNvbG9ucyBhbmQgbW92ZWQgdGhlIHByaXZhdGUK
KyAgICAgICAgZC1wb2ludGVyIHRvIG5vdCBjb25mdXNlIHRoZSBjb21waWxlcgorCisyMDA4LTA0
LTIxICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRl
Y2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEJ1aWxkIGZp
eCBmb3IgUXQgNC4zCisKKyAgICAgICAgKiBXaGVuIGJ1aWxkaW5nIFdlYkNvcmUvaW50ZXJuYWwg
bWFrZSBzdXJlIHRoZSBRVF9bQkVHSU4sRU5EXV9OQU1FU1BBQ0UgaXMKKyAgICAgICAgYWx3YXlz
IGRlZmluZWQuIERvIHRoaXMgYnkgYWRkaW5nIGRlZmluZXMgdG8gdGhlIGNvbXBpbGVyIGxpbmUK
KyAgICAgICAgKiBGb3IgdXNlcnMgb2Ygb3VyIEFQSSB0aGlzIGlzIG5vdCBmZWFzaWJsZS4gRXZl
cnkgcHVibGljIGhlYWRlciBmaWxlIHNob3VsZAorICAgICAgICBpbmNsdWRlIHF3ZWJraXRnbG9i
YWwuaC4gRGVmaW5lIHRoZSBRVF9CRUdJTl9OQU1FU1BBQ0UgYW5kIFFUX0VORF9OQU1FU1BBQ0UK
KyAgICAgICAgd2hlbiB3ZSBhcmUgYnVpbGRpbmcgZXZlcnl0aGluZyA8IDQuNC4wIGFuZCBkb24n
dCBoYXZlIHRoZW0gZGVmaW5lZC4KKworICAgICAgICAqIEFwaS9xd2Via2l0Z2xvYmFsLmg6CisK
KzIwMDgtMDQtMjEgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVy
QHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAg
KiBJbml0aWFsaXplIHRoZSBXZWJHcmFwaGljcyB3aXRoIHRoZSBvbmUgZm91bmQgaW4gV2ViQ29y
ZQorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAo
UVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorCisyMDA4LTA0LTIxICBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogQWxsb3cgVGV4dEFyZWFzIHRvIGJlIHJl
c2l6ZWQuCisgICAgICAgICogTm8gUVdlYlNldHRpbmdzIGZvciB0aGlzIGlzIGludHJvZHVjZWQu
CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6CisKKzIwMDgtMDQtMjEgIFNpbW9uIEhhdXNtYW5u
ICA8c2hhdXNtYW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIu
CisKKyAgICAgICAgRml4ZXM6IFFXZWJWaWV3Ojp1cmwgcHJvcGVydHkgYmVoYXZpb3VyIHN0cmFu
Z2UgaW4gZGVzaWduZXIKKworICAgICAgICBBZGRlZCBRV2ViVmlldy9RV2ViRnJhbWU6OnNldFVy
bCwgd2hpY2ggdW5saWtlIGxvYWQoKSBjbGVhcnMgdGhlIHZpZXcgaW1tZWRpYXRlbHksIHNjaGVk
dWxlcyBhIGxvYWQgb2YgdGhlIHVybCBidXQgYWxzbyBtYWtlcyBzdXJlIHVybCgpIHJldHVybnMg
dGhlIHNldCB1cmwuIFRoaXMgc2V0dGVyIGlzIG5vdyBhbHNvIHVzZWQgZm9yIHRoZSB1cmwgcHJv
cGVydHkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFt
ZTo6c2V0VXJsKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRVcmwpOgorICAgICAgICAqIEFwaS9x
d2Vidmlldy5oOgorCisyMDA4LTA0LTIxICBBbmRyZSBQb2VuaXR6ICA8YW5kcmUucG9lbml0ekB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uIDxoYXVz
bWFubkB3ZWJraXQub3JnPi4KKworICAgICAgICBGaXggY29tcGlsYXRpb24gd2l0aCBRdCBuYW1l
c3BhY2VzCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFt
ZTo6cHJpbnQpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorCisyMDA4LTA0LTIxICBTaW1v
biBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SG9sZ2VyLgorCisgICAgICAgIFdoZW4gcHJpbnRpbmcgb24gaGlnaCByZXNvbHV0aW9uIHByaW50
ZXJzIHdlIG5lZWQgdG8gc2NhbGUgdGhlIHBhaW50ZXIgYWNjb3JkaW5nbHkgKGZvciBub3cpLgor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnByaW50
KToKKworMjAwOC0wNC0yMSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBQcm92aWRlIGEgcHJpbnQg
cHJldmlldyBpbiB0aGUgUXRMYXVuY2hlcgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNw
cDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRv
dzo6c2hvd0xpbmtIb3Zlcik6CisgICAgICAgIChNYWluV2luZG93OjpwcmludCk6CisKKzIwMDgt
MDQtMjAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbHAgVG9rZXIuCisKKyAgICAgICAgU2hhcmUgdGhlIHByaW50aW5nIGNvZGUg
YmV0d2VlbiB0aGUgR3RrIGFuZCB0aGUgUXQgcG9ydAorICAgICAgICBhbmQgYWRkZWQgcHJpbnRp
bmcgdG8gdGhlIFF0IFdlYktpdCBBUEkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6cHJpbnQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoK
KyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OnByaW50KToK
KyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOC0wNC0xOSAgSnVsaWVuIENoYWZmcmFp
eCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBRdCBidWlsZCBmaXggKHJlbmRl
cmVyKCkgLT4gY29udGVudFJlbmRlcmVyKCkpLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OnJlbmRlclRyZWVEdW1wKToKKyAgICAgICAgKFFXZWJG
cmFtZTo6cmVuZGVyKToKKworMjAwOC0wNC0xOCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBNYW55
IEFQSSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMgYWZ0ZXIgYSBmdWxsIHJldmlldyB3aXRoIEphc21p
biBCbGFuY2hldHRlIDxqYXNtaW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBUaGUgZGlmZiBp
cyB0b28gYmlnIHRvIG1lbnRpb24gdGhlIGNoYW5nZXMgaW5kaXZpZHVhbGx5LCBidXQgbW9zdCBv
ZiB0aGUgY2hhbmdlcyB3ZXJlIG9mIGNvc21ldGljCisgICAgICAgIG5hdHVyZSB3aGVyZSBtZXRo
b2RzIG9yIGVudW1zIGhhdmUgYmVlbiByZW5hbWVkIG9yIHByZWZpeGVkL3N1ZmZpeGVkIGFjY29y
ZGluZyB0byB0aGUgY29uc2lzdGVuY3kKKyAgICAgICAgcnVsZXMgb2YgdGhlIFF0IEFQSS4KKwor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0ph
dmFTY3JpcHRXaW5kb3dPYmplY3QpOgorICAgICAgICAoUVdlYkZyYW1lOjp0b0h0bWwpOgorICAg
ICAgICAoUVdlYkZyYW1lOjp0b1BsYWluVGV4dCk6CisgICAgICAgIChRV2ViRnJhbWU6Omljb24p
OgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRDb250ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6
c2V0U2Nyb2xsQmFyUG9saWN5KToKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVuZGVyKToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKFFXZWJGcmFt
ZTo6dGV4dFNpemVNdWx0aXBsaWVyKToKKyAgICAgICAgKFFXZWJGcmFtZTo6cG9zKToKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5LmNwcDoKKyAg
ICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjp+UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QpOgorICAgICAgICAod2ViQWN0aW9uRm9yQ29udGV4
dE1lbnVBY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24pOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQ
YWdlOjp2aWV3KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKyAgICAg
ICAgKFFXZWJQYWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJB
Y3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChR
V2ViUGFnZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QpOgorICAgICAgICAoUVdlYlBhZ2U6OmFj
dGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6Zm9jdXNOZXh0UHJldkNoaWxkKToKKyAgICAgICAg
KFFXZWJQYWdlOjpzZXRGb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50KToKKyAgICAgICAgKFFXZWJQ
YWdlOjpmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRM
aW5rRGVsZWdhdGlvblBvbGljeSk6CisgICAgICAgIChRV2ViUGFnZTo6ZmluZFRleHQpOgorICAg
ICAgICAoUVdlYlBhZ2U6Om5ldHdvcmtBY2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKFFXZWJQYWdl
Q29udGV4dDo6aW1hZ2VVcmwpOgorICAgICAgICAoUVdlYlBhZ2VDb250ZXh0OjppbWFnZSk6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZh
dGU6OmFwcGx5KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAg
ICAgKFFXZWJTZXR0aW5nczo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6Omljb25EYXRhYmFzZVBhdGgpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpjbGVhcklj
b25EYXRhYmFzZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwpOgorICAgICAg
ICAoUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
Zm9udEZhbWlseSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldEF0dHJpYnV0ZSk6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6OnRlc3RBdHRyaWJ1dGUpOgorICAgICAgICAoUVdlYlNldHRpbmdz
OjpyZXNldEF0dHJpYnV0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAg
ICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6c2V0UGFnZSk6CisgICAg
ICAgIChRV2ViVmlldzo6aWNvbik6CisgICAgICAgIChRV2ViVmlldzo6c2V0VGV4dFNpemVNdWx0
aXBsaWVyKToKKyAgICAgICAgKFFXZWJWaWV3Ojp0ZXh0U2l6ZU11bHRpcGxpZXIpOgorICAgICAg
ICAoUVdlYlZpZXc6OmZpbmRUZXh0KToKKyAgICAgICAgKFFXZWJWaWV3OjpyZWxvYWQpOgorICAg
ICAgICAoUVdlYlZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcu
aDoKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6
TWFpbldpbmRvdyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Q2hy
b21lQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFdpbmRv
d1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnRvb2xiYXJzVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0U3RhdHVzYmFyVmlzaWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c3RhdHVzYmFyVmlzaWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFJlc2l6YWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0VG9vbFRpcCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnNldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6c2V0TWFpbkRvY3VtZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKworMjAwOC0wNC0xOCAgU2ltb24gSGF1c21h
bm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4K
KworICAgICAgICBBZGRlZCBRV2ViVmlldzo6ZmluZC9RV2ViRnJhbWU6OmZpbmQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmZvY3VzTmV4dFByZXZD
aGlsZCk6CisgICAgICAgIChRV2ViUGFnZTo6ZmluZCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpmaW5k
KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOC0wNC0xNSAgQXJpeWEgSGlkYXlh
dCAgPGFyaXlhLmhpZGF5YXRAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbi4KKworICAgICAgICBmaXggcG90ZW50aWFsIGNyYXNoIHdoZW4gbG9hZGluZyBpbWFnZShz
KQorCisgICAgICAgIENyYXNoIG1heSBvY2N1ci4gSWYgY29tcGlsZWQgd2l0aCA0LjMsIHRoZSB2
YXJpYWJsZSBpcyBub3QgaW5pdGlhbGl6ZWQuCisgICAgICAgIFRoaXMgZml4IHNvbHZlcyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzQKKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZSk6CisKKzIwMDgtMDQtMTUgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAgVXBkYXRlIHRoZSBtaWNy
byBmb2N1cyBmb3IgaW5wdXQgbWV0aG9kcyBhcyBzb29uIGFzIHRoZSBjb21wb3NpdGlvbiBtb2Rl
IGNoYW5nZXMKKyAgICAgICAgb3IgdGhlIGNhcmV0L3NlbGVjdGlvbiBjaGFuZ2VzLgorICAgICAg
ICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3OjpzZXRQ
YWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6
CisKKzIwMDgtMDQtMTUgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAgRG9uJ3QgdXNlIFFEaXIsIFFT
dHJpbmcgb3IgYW55IGxvY2FsZSBzZW5zaXRpdmUgZnVuY3Rpb24gYmVmb3JlIGNvbnN0cnVjdGlu
ZyBRKENvcmUpQXBwbGljYXRpb24sCisgICAgICAgIGl0IHlpZWxkcyB1bmRlZmluZWQgYmVoYXZp
b3VyIG9yIHdyb25nIGRlZmF1bHQgY29kZWMgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIAorCisg
ICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKFdlYlBhZ2U6OmNyZWF0ZVdp
bmRvdyk6CisKKzIwMDgtMDQtMTUgIE9saXZpZXIgR29mZmFydCAgPG9nb2ZmYXJ0QHRyb2xsdGVj
aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IGNv
cHkgdG8gY2xpcGJvYXJkIHdoZW4gc2VsZWN0aW5nLCBhbmQgcGFzdGUgd2hlbiBjbGlja2luZyB3
aXRoIHRoZSBtaWRkbGUgYnV0dG9uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudCk6IElmIHRoZSBjbGlwYm9h
cmQgc3VwcG9ydHMKKyAgICAgICAgc2VsZWN0aW9ucyB0aGVuIHdlIHN1cHBvcnQgY29weSAmIHBh
c3RlIGludG8gdGhlIHNlbGVjdGlvbi4KKworMjAwOC0wNC0xNSAgTWljaGFlbCBCcmFzc2VyICA8
bWljaGFlbC5icmFzc2VyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgQWRkIGJhc2ljIGlucHV0IG1ldGhvZCBzdXBwb3J0LgorICAgICAgICAK
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OmRyb3BFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQp
OgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgorICAgICAgICAoUVdlYlBh
Z2U6OmV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2VfcC5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmll
dzo6UVdlYlZpZXcpOgorICAgICAgICAoUVdlYlZpZXc6OmlucHV0TWV0aG9kUXVlcnkpOgorICAg
ICAgICAoUVdlYlZpZXc6OmlucHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAqIEFwaS9xd2Vidmll
dy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKworMjAw
OC0wNC0xNSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBBZGRlZCAoUVdlYkZyYW1lfFFXZWJWaWV3
KTo6dGV4dFpvb21GYWN0b3IuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFFX
ZWJGcmFtZTo6dGV4dFpvb21GYWN0b3IpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OnNldFRleHRab29t
RmFjdG9yKToKKyAgICAgICAgKFFXZWJWaWV3Ojp0ZXh0Wm9vbUZhY3Rvcik6CisgICAgICAgICog
QXBpL3F3ZWJ2aWV3Lmg6CisKKzIwMDgtMDQtMTUgIE1pY2hhZWwgQnJhc3NlciAgPG1pY2hhZWwu
YnJhc3NlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisg
ICAgICAgIEFkZGVkIHNpbXBsZSBzY3JvbGxpbmcgQVBJIHRvIFFXZWJGcmFtZS4KKyAgICAgICAg
CisgICAgICAgIFRoZSBpbnRlbnQgaXMgdGhhdCBpdCB3b3JrcyBzaW1pbGFyIHRvIFFBYnN0cmFj
dFNjcm9sbEFyZWEuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnNldFNjcm9sbEJhclZhbHVlKToKKyAgICAgICAgKFFXZWJGcmFt
ZTo6c2Nyb2xsQmFyVmFsdWUpOgorICAgICAgICAoUVdlYkZyYW1lOjpzY3JvbGxCYXJNYXhpbXVt
KToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2Nyb2xsQmFyTWluaW11bSk6CisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5oOgorCisyMDA4LTA0LTE1ICBPbGl2aWVyIEdvZmZhcnQgIDxvZ29mZmFydEB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBG
aXhlczogaW1wbGVtZW50IHRoZSBPcGVuRnJhbWVJbk5ld1dpbmRvdyBhY3Rpb24uCisgICAgICAg
IAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0cmln
Z2VyQWN0aW9uKToKKworMjAwOC0wNC0xNSAgQW5kcmUgUG9lbml0eiAgPGFuZHJlLnBvZW5pdHpA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBG
aXggY29tcGlsYXRpb24gd2l0aCBRdCBuYW1lc3BhY2VzCisKKyAgICAgICAgUXQgY2FuIGJlIGNv
bmZpZ3VyZWQgdG8gaGF2ZSBhbGwgb2YgaXRzIGNsYXNzZXMgaW5zaWRlIGEgc3BlY2lmaWVkIG5h
bWVzcGFjZXMuCisgICAgICAgIFRoaXMgaXMgZm9yIGV4YW1wbGUgdXNlZCBpbiBwbHVnaW4vY29t
cG9uZW50IGVudmlyb25tZW50cyBsaWtlIEVjbGlwc2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
bWFrZXMgaXQgcG9zc2libGUgdG8gbGV0IHRoZSBRdCBwb3J0IGNvbXBpbGUgYWdhaW5zdCBhIG5h
bWVzcGFjZWQKKyAgICAgICAgUXQgYnkgdGhlIHVzZSBvZiBtYWNyb3MgUXQgcHJvdmlkZXMgdG8g
cHJvcGVybHkgZm9yd2FyZCBkZWNsYXJlIFF0IGNsYXNzZXMgaW4KKyAgICAgICAgdGhlIG5hbWVz
cGFjZS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGx1
Z2luZmFjdG9yeS5oOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKyAgICAgICAgKiBB
cGkvcXdlYnZpZXcuaDoKKworMjAwOC0wNC0wNSAgT2xpdmllciBHb2ZmYXJ0ICA8b2dvZmZhcnRA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAg
Rml4ZXM6IFJpZ2h0IGNsaWNraW5nIGFuIGltYWdlIGFuZCBjaG9vc2luZyAiY29weSBpbWFnZSIg
ZG9lc250IHB1dCBhbnl0aGluZyBpbiB0aGUgY2xpcGJvYXJkLgorICAgICAgICAKKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6
CisKKzIwMDgtMDQtMDUgIE9saXZpZXIgR29mZmFydCAgPG9nb2ZmYXJ0QHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRml4ZXM6IFJpZ2h0IGNs
aWNrLCBhbmQgIk9wZW4gaW1hZ2UiIG9wZW4gdGhlIGxpbmsgaW5zdGVhZCBvZiB0aGUgaW1hZ2Uu
CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0wNC0wNSAg
QmVuamFtaW4gTWV5ZXIgIDxibWV5ZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbi4KKworICAgICAgICBBZGRlZCBkb2Mgc3R1YiBmb3IgUVdlYlNldHRpbmdzIHNv
IGNsYXNzIGRvY3MgYXJlIGdlbmVyYXRlZAorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorCisy
MDA4LTA0LTA1ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICog
UHJvcG9zZSB0aGUgYWRkaXRpb24gb2YgdXBkYXRlUmVxdWVzdCBhbmQgc2Nyb2xsUmVxdWVzdCB0
byB0aGUgUVdlYlBhZ2UuCisgICAgICAgIAorICAgICAgICAqIFRoZSBxdWVzdGlvbiBpcyBpZiB0
aGVzZSBzaWduYWxzIGJlbG9uZyB0byBRV2ViUGFnZSBvciAgUVdlYkZyYW1lLgorICAgICAgICAt
SXQgaXMgbW9yZSBlYXN5IHRvIGhhdmUgdGhlbSBpbiBRV2ViUGFnZSBiZWNhdXNlIFNjcm9sbFZp
ZXcgaXMgaW52b2tpbmcKKyAgICAgICAgdGhlIENocm9tZUNsaWVudCB3aXRoIHRoZSByaWdodCBj
b29yZGluYXRlcworICAgICAgICAtT24gdGhlIG90aGVyIGhhbmQgc29tZW9uZSB3YW50cyB0byBy
ZW5kZXIgZnJhbWVzIHNlcGFyYXRlbHkuIEJ1dCB0aGlzIGlzIHBhcnRseQorICAgICAgICBkb29t
ZWQgYXMgeW91IGNhbiBoYXZlIG92ZXJsYXBwaW5nIGZyYW1lcyBhbmQgd2hhdCB5b3UgcGFpbnQg
d291bGQgbm90IHJlbGF0ZSB0bworICAgICAgICB3aGF0IHlvdSBub3JtYWxseSBzZWUgb24gd2Vi
cGFnZXMuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2Nyb2xsQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojptb3VzZURpZE1vdmVPdmVy
RWxlbWVudCk6CisKKzIwMDgtMDQtMDMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCisKKyAgICAgICAgUm9sbCBv
dXQgcjMxNTk5IGFuZCByMzE2MDUgYWdhaW4gYWZ0ZXIgZGlzY3Vzc2lvbiB3aXRoIE1hcmsgUm93
ZS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpp
Y29uKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6aWNvbkZvclVybCk6CisKKzIwMDgtMDQtMDMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24uCisKKyAgICAgICAgKiBDaGFuZ2UgSWNvbkRhdGFiYXNlOjppY29uRm9yUGFnZVVS
TCB0byByZXR1cm4gbW9yZSBpbmZvcm1hdGlvbi4gRS5nLiBpZgorICAgICAgICBhbiBpbWFnZSBo
YXMgYmVlbiBmb3VuZCwgb3IgaWYgdGhlIGxvYWRpbmcgb2YgYW4gaW1hZ2UgaGFzIGJlZW4gc2No
ZWR1bGVkLgorICAgICAgICAqIFVwZGF0ZSBGcmFtZUxvYWRlciB0byB1c2UgYW5vdGhlciBtZXRo
b2QgdG8gdHJpZ2dlciByZWFkaW5nIGZyb20gZGlzaworICAgICAgICAqIFVwZGF0ZSB0aGUgUVdl
YkZyYW1lIGFuZCBRV2ViU2V0dGluZ3MKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lOjppY29uKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkZvclVybCk6CisKKzIwMDgtMDQtMDMgIEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBTYWZhcmkgaXMgdXNp
bmcgdGhlIEljb25EYXRhYmFzZSB0aGUgZm9sbG93aW5nIHdheSAoYXNzdW1wdGlvbikuIEJlZm9y
ZSB0aGV5CisgICAgICAgIGNhbGwgaWNvbkRhdGFiYXNlKCktPm9wZW4gdGhleSAicmV0YWluIiBh
bGwgVVJMcyB0aGV5IGFyZSBpbnRlcmVzdGVkIGluLCB0aGVzZQorICAgICAgICBjb3VsZCBjb21l
IGZyb20gdGhlIGhpc3RvcnkuCisgICAgICAgICogV2hlbiBvcGVuaW5nIHRoZSBpY29uRGF0YWJh
c2UoKSBhIHRocmVhZCB3aWxsIGJlIHN0YXJ0ZWQgdGhhdCBpcyBnb2luZyB0byBpbXBvcnQKKyAg
ICAgICAgdGhlIFVSTHMsIGFsbCBub25lIG1hbnVhbGx5IHJldGFpbmVkIFVSTHMgYXJlIHNjaGVk
dWxlZCBmb3IgcmVtb3ZhbC4gVGhlIHJlbW92YWwKKyAgICAgICAgaXMgZ29pbmcgdG8gaGFwcGVu
IHdoZW4gdGhlIG5leHQgaWNvbiBnZXRzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuCisgICAgICAg
ICogV2UgZG8gbm90IGhhdmUgYW55IEljb25EYXRhYmFzZSBjb2RlLCB3ZSBjYW4gbm90IHJldGFp
biB0aGUgVVJMcyBiZWZvcmUgb3BlbmluZyB0aGUKKyAgICAgICAgZGF0YWJhc2UuIFRvIGRpc2Fi
bGUgdGhlIGF1dG9tYXRpYyBwcnVuaW5nIG9mIHRoZSBpY29ucyB3ZSB3aWxsIGFzayB0aGUgSWNv
bkRhdGFiYXNlCisgICAgICAgIHRvIGRlbGF5IHRoaXMgb3BlcmF0aW9uLiBUaGlzIG1lYW5zIG91
ciBJY29uRGF0YWJhc2UsIHdoZW4gdXNlZCwgd2lsbCBncm93LCBzbyB3ZSBzaG91bGQKKyAgICAg
ICAgdHJ5IHRvIGhhdmUgYSBJY29uRGF0YWJhc2UgY2xhc3MgaW4gNC40LgorICAgICAgICAqIFRo
ZSBvbmx5IHdheSB0byBjb3VudGVyIHRoZSBncm93dGggaXMgYSBjYWxsIHRvIFFXZWJTZXR0aW5n
czo6Y2xlYXJJY29uRGF0YWJhc2UKKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6Y2xlYXJJY29uRGF0YWJhc2UpOgorICAg
ICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAwOC0wNC0wMyAgQmVuamFtaW4gTWV5ZXIg
IDxibWV5ZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKwor
ICAgICAgICBBZGQgYSB3YXkgdG8gZ2V0IHRoZSBzaXRlIGljb24gZm9yIGEgdXJsCisgICAgICAg
IHN0YXRpYyBRUGl4bWFwIGljb25Gb3JVcmwoY29uc3QgUVVybCAmdXJsKTsKKyAgICAgICAgCisK
KyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
aWNvbkZvclVybCk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDA4LTA0LTAz
ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2gu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogVXBkYXRlIHRo
ZSBDb3B5cmlnaHQgaW5mbyBpbiBRV2ViU2V0dGluZ3MKKyAgICAgICAgCisKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIw
MDgtMDQtMDMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRy
b2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBU
aGUgaXNFbXB0eSBjaGVjayBpcyBub3QgbmVlZGVkIGFueW1vcmUgd2l0aCB0aGUgZWFybGllciBi
YWNrcG9ydAorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lOjppY29uKToKKworMjAwOC0wNC0wMyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbi4KKworICAgICAgICAqIEZvciB0aGUgaHR0cCB0ZXN0cyB3ZSBuZWVkIHRoZSBv
dXRwdXQgb2YgdGhlIEZyYW1lTG9hZGVyQ2xpZW50LiBUaGUgUXRXZWJLaXQgQVBJCisgICAgICAg
IGlzIG5vdCBleHBvcnRpbmcgZW5vdWdoIHRvIGNyZWF0ZSB0aGUgb3V0cHV0IGluIERSVCBpdHNl
bGYuIFNldHRsZSB3aXRoIHRoZSBhcHByb2FjaAorICAgICAgICBMYXJzIGhhcyB0YWtlbiBmb3Ig
dGhlIEVkaXRpbmcgc3VwcG9ydCBhbmQgYWRkIGJyYW5jaGVzIHRvIG91ciBGcmFtZUxvYWRlckNs
aWVudCBjb2RlLgorICAgICAgICAqIHJ1bi13ZWJraXQtdGVzdHMgaHR0cC90ZXN0cygvbG9hZGlu
ZykgY2FuIG5vdyBiZSBleGVjdXRlZC4KKyAgICAgICAgKiBGb3IgdGVzdHMgaW4gbG9hZGluZy8g
ZGlyZWN0b3JpZXMgd2UgYXJlIGdvaW5nIHRvIHRocm93IGF3YXkgdGhlIGRpcnR5CisgICAgICAg
IFFXZWJQYWdlIHRvIHN0YXJ0IHdpdGggc29tZXRoaW5nIGNsZWFuLgorICAgICAgICAKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAo
cXRfZHVtcF9mcmFtZV9sb2FkZXIpOgorICAgICAgICAoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsQ2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRNYWluRG9j
dW1lbnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCisyMDA4LTA0LTAyICBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogRXhwb3J0IHRoZSBQYWdl
Q2FjaGUgYW5kIENhY2hlIGNhcGFjaXR5IGNhbGwgb25lIHRvIG9uZS4gVGhpcyBpcyBvbmx5IHRo
ZXJlCisgICAgICAgIHRvIGFsbG93IHRoZSBRdExhdW5jaGVyIHRvIHBsYXkgd2l0aCBjYWNoaW5n
LgorICAgICAgICAqIFRPRE86IG1ha2UgQVBJIGRlY2lzaW9ucyBhbmQgY29uc2lkZXIgZm9sbG93
aW5nIHRoZSB3aW5kb3dzIEFwaSB0byBzZXQgYSBXZWJDYWNoZU1vZGVsCisgICAgICAgIGFuZCBk
ZXRlcm1pbmUgY2VydGFpbiB2YWx1ZXMgYXV0b21hdGljYWxseS4KKyAgICAgICAgCisKKyAgICAg
ICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0UGFn
ZUNhY2hlQ2FwYWNpdHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRPYmplY3RDYWNoZUNh
cGFjaXRpZXMpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKyAgICAgICAgKiBRdExh
dW5jaGVyL21haW4uY3BwOgorCisyMDA4LTA0LTAyICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
ciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uLgorCisgICAgICAgIFByZXBhcHJlIGV2ZXJ5dGhpbmcgZm9yIGVuYWJsaW5nIHRoZSBQ
YWdlQ2FjaGUgZm9yIHRoZSBRdCBQbGF0Zm9ybToKKyAgICAgICAgKiBDbGFpbSB0aGF0IHdlIGNh
biBjYWNoZSBwYWdlcworICAgICAgICAqIENyZWF0ZSB0aGUgRnJhbWVWaWV3IEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UgdXNpbmcKKyAgICAgICAg
dGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgdmlld3BvcnQgYW5kIHN0b3AgY3JlYXRpbmcgaXQgaW4g
dGhlIFFXZWJGcmFtZVByaXZhdGU6OmluaXQKKyAgICAgICAgCisgICAgICAgIERpZmZlcmVuY2Vz
IHRvIHRoZSBXaW5kb3dzIHBvcnQ6CisgICAgICAgICogYXR0YWNoVG9XaW5kb3cvZGV0YWNoRnJv
bVdpbmRvdyBpcyBub3QgY2FsbGVkIGFuZCBpcyBub3QgKHlldCkgcGFydAorICAgICAgICBvZiBX
aWRnZXQvU2Nyb2xsVmlldyBvZiB0aGUgUXQgcGxhdGZvcm0uIFdlIG1pZ2h0IG5lZWQgdGhhdCBm
b3IgcGx1Z2luCisgICAgICAgIHN1cHBvcnQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgKiBXZSBz
dG9yZSB0aGUgbWFyZ2luJ3MgYW5kIHNjcm9sbGluZyBmbGFnIGluc2lkZSBRV2ViRnJhbWUgYW5k
IHVzZSBpdCB3aGVuCisgICAgICAgIGNyZWF0aW5nIHRoZSBGcmFtZVZpZXcuCisgICAgICAgIAor
ICAgICAgICBXaGF0IGlzIG1pc3Npbmc6CisgICAgICAgICogQVBJIHRvIGNhbGwgcGFnZUNhY2hl
KCktPnNldENhcGFjaXR5KFhZWik7CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjppbml0KToKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZh
dGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OmNyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmJsb2NrZWRFcnJvcik6CisKKzIwMDgtMDQtMDIgIEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBGb3IgdGhlIFBhZ2VDYWNoZSBzdXBw
b3J0IHdlIGRvIG5vdCB3YW50IHRvIGNyZWF0ZSBhIEZyYW1lVmlldyBpbiB0aGUgY29uc3RydWN0
b3IKKyAgICAgICAgb2YgUVdlYkZyYW1lLiBJbiBRV2VnUGFnZTo6dmlld3BvcnRTaXplKCkgd2Ug
Y3VycmVudGx5IGNhbGwgbWFpbkZyYW1lKCkgYW5kIHRoYXQgd2lsbAorICAgICAgICBjcmVhdGUg
YSBRV2ViRnJhbWUgaWYgbm8gbWFpbkZyYW1lIGlzIHByZXNlbnQgYW5kIHRoaXMgZ2V0cyBjYWxs
ZWQgd2hlbiB3ZSB0cnkgdG8KKyAgICAgICAgY3JlYXRlIGEgRnJhbWVWaWV3Li4uCisgICAgICAg
ICogS2VlcCBhIGNvcHkgb2YgdGhlIGluaXRpYWwgdmlld3BvcnRTaXplIGFyb3VuZCBhbmQgdXNl
IGl0IGlmIHdlIGRvIG5vdCBoYXZlIGEgRnJhbWUKKyAgICAgICAgb3IgRnJhbWVWaWV3LgorICAg
ICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlv
bik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwOC0wNC0wMiAgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAqIEFsd2F5cyByZXR1cm4gdHJ1ZSBp
biBGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0sIGxpa2UgdGhlIHdp
bmRvd3MgcG9ydAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorCisyMDA4LTA0LTAyICBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogQXR0ZW1wdCB0byBtYWtlIHRoZSBtX3dl
YkZyYW1lIG51bGwgcG9pbnRlciBjaGVja2luZyBjb25zaXN0ZW50LiBBbHdheXMgY2hlY2sgZm9y
CisgICAgICAgIG1fd2ViRnJhbWUuIEl0IHNob3VsZCBnZXQgc2V0IGJ5IHRoZSBRV2ViRnJhbWUg
d2l0aCB0aGUgRnJhbWVyTG9hZGVyQ2xpZW50UXQ6OnNldEZyYW1lCisgICAgICAgIGNhbGwgYW5k
IHNob3VsZCBzdGF5IHZhbGlkIHVudGlsIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgUVdlYkZyYW1l
LgorICAgICAgICAqIEN1cnJlbnRseSB0aGUgc2FtZSBjaGVja2luZyBpcyBub3QgbmVlZGVkIGZv
ciBtX2ZyYW1lIGFzIGl0IHdpbGwgb25seSBzZXQgdG8gMCBpbgorICAgICAgICBGcmFtZUxvYWRl
ckNsaWVudFF0OjpmcmFtZUxvYWRlckRlc3Ryb3llZCBhbmQgc2hvdWxkIGJlIG5vdCAwIGJlY2F1
c2Ugb2YgdGhlIHNldEZyYW1lCisgICAgICAgIGluaXRpYWxpc2F0aW9uLgorICAgICAgICAKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0TWFpbkRvY3VtZW50
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDA4LTA0LTAxICBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogR2V0IHRoZSBSZWZDb3VudGluZyBvZiBXZWJD
b3JlOjpGcmFtZSByaWdodCBhbmQgbWFrZSBzdXJlIHRoYXQgYm90aCBRV2ViRnJhbWUKKyAgICAg
ICAgYW5kIFdlYkNvcmU6OkZyYW1lIGdldCBkZXN0cm95ZWQgaWYgd2UgbGVhdmUgc2l0ZSB3aXRo
IHN1YmZyYW1lcyBhbmQgb24gdGhlCisgICAgICAgIGVuZCBvZiB0aGUgYXBwbGljYXRpb24uCisg
ICAgICAgICogVXNlIGFkb3B0UmVmIGluIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1l
IHRvIGdldCB0aGUgcmVmcyByaWdodCBmb3Igc3ViZnJhbWVzLiBXZQorICAgICAgICBkbyBub3Qg
d2FudCB0byBhZGQgYW4gZXh0cmEgcmVmZXJlbmNlLiBXaXRob3V0IHRoaXMgd2UgYXJlIGxlYWtp
bmcgc3ViZnJhbWVzLgorICAgICAgICAqIEFzc3VtZSB0aGF0IHRoZSBsaWZldGltZSBvZiBhIEZy
YW1lIGFuZCBGcmFtZUxvYWRlciBhcmUgdGhlIHNhbWUsIHdoZW4gdGhlIEZyYW1lIGlzIGdvbmUK
KyAgICAgICAgd2Ugd2FudCB0byBkZXN0cm95IHRoZSBRV2ViRnJhbWUgKGUuZy4gb24gYSBwYWdl
IHdpdGggc3ViZnJhbWVzKS4gQWRkIGRlbGV0ZSBtX3dlYkZyYW1lCisgICAgICAgIGluIHRoZSBm
cmFtZUxvYWRlckRlc3Ryb3llZCBtZXRob2QgdG8gZG8gdGhhdC4KKyAgICAgICAgKiBJZiB3ZSBo
YXBwZW4gdG8gZGVsZXRlIHRoZSBRV2ViRnJhbWUgYmVmb3JlIHRoZSBGcmFtZUxvYWRlckNsaWVu
dFF0IHdlIHNldCBtX3dlYkZyYW1lIHRvCisgICAgICAgIHplcm8gaW4gdGhlIEZyYW1lTG9hZGVy
Q2xpZW50UXQgdG8gYXZvaWQgYmFkIHRoaW5ncy4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6flFXZWJGcmFtZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwOC0wNC0w
MSAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAqIERvIG5vdCBz
YXZlIGEgUmVmUHRyIHRvIHRoZSBmcmFtZS4gVGhlIEZyYW1lTG9hZGVyQ2xpZW50LCBGcmFtZSBh
bmQKKyAgICAgICAgUVdlYkZyYW1lIHNob3VsZCBoYXZlIHRoZSBzYW1lIGxpZmV0aW1lIGV2ZXJ5
dGhpbmcgZWxzZSBpcyBhIGxlYWsKKyAgICAgICAgb3IgaXNzdWUuCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOgorICAgICAg
ICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorCisyMDA4LTA0LTAxICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
ciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uLgorCisgICAgICAgICogRG8gbm90IHN0b3JlIHRoZSBRV2ViRnJhbWUgYXNzb2NpYXRl
ZCB3aXRoIGEgU2Nyb2xsVmlldy9GcmFtZVZpZXcKKyAgICAgICAgaW4gdGhlIFdlYkNvcmU6Oldp
ZGdldC4KKyAgICAgICAgKiBJbnN0ZWFkIG9mIGFza2luZyB0aGUgV2lkZ2V0IGZvciB0aGUgUVdl
YkZyYW1lIHVzZSB0aGUgUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZQorICAgICAgICBhbmQgUVdlYkZy
YW1lUHJpdmF0ZTo6a2l0IGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBhbmQgdG8gUVdlYkZyYW1l
LgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lUHJpdmF0ZTo6aW5pdCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKToKKworMjAwOC0wNC0wMSAgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAqIERvIG5vdCBzdG9yZSB0
aGUgRnJhbWVWaWV3IGluIHRoZSBRV2ViRnJhbWUgYW5kIGNvcGUgd2l0aCB0aGUgc2l0dWF0aW9u
IHdoZW4KKyAgICAgICAgYSBXZWJDb3JlOjpGcmFtZSBoYXMgbm8gV2ViQ29yZTo6RnJhbWVWaWV3
LgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lUHJpdmF0ZTo6aW5pdCk6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpob3Jpem9u
dGFsU2Nyb2xsQmFyKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnZlcnRpY2FsU2Nyb2xs
QmFyKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aW5uZXJUZXh0KToKKyAgICAgICAgKFFXZWJGcmFt
ZTo6cmVuZGVyVHJlZUR1bXApOgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRWZXJ0aWNhbFNjcm9s
bEJhclBvbGljeSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldEhvcml6b250YWxTY3JvbGxCYXJQ
b2xpY3kpOgorICAgICAgICAoUVdlYkZyYW1lOjpyZW5kZXIpOgorICAgICAgICAoUVdlYkZyYW1l
OjpsYXlvdXQpOgorICAgICAgICAoUVdlYkZyYW1lOjpwb3MpOgorICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWVfcC5oOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6UVdlYkZyYW1lUHJpdmF0ZSk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
dXBkYXRlRWRpdG9yQWN0aW9ucyk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlTW92
ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VQcmVzc0V2ZW50KToKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6Y29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OndoZWVsRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorCisyMDA4
LTA0LTAxICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9s
bHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogQ2hh
bmdlIHRoZSBvcmRlciBvZiB0aGUgbWV0aG9kcyB0byBtYXRjaCB3aXRoIHRoZSBGcmFtZUxvYWRl
ckNsaWVudC5oIHRvIGVhc2UKKyAgICAgICAgcmVtb3ZpbmcgbWV0aG9kcyBpbiB0aGUgZnV0dXJl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisy
MDA4LTA0LTAxICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICog
UmVtb3ZlIHZpcnR1YWxzIGluIHRoZSBGcmFtZUxvYWRlckNsaWVudFF0IHRoYXQgZG9uJ3QgZXhp
c3QgaW4gdGhlIGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRldGFjaGVkRnJvbVBhcmVudDQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKworMjAwOC0wMy0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4KKworICAgICAgICBSZW1vdmUgbmV3
bHkgb2Jzb2xldGUgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kcworCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA4LTAzLTIyICBNYXJrIFJvd2UgIDxtcm93
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUXQgYnVpbGQgZml4LgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgor
CisyMDA4LTAzLTE4ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyLgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQuIERv
bid0IHJldHVybiB2b2lkIGluIG5vbi12b2lkIGZ1bmN0aW9ucy4KKworICAgICAgICAqIEFwaS9x
d2VicGx1Z2luZmFjdG9yeS5jcHA6CisgICAgICAgIChRV2ViUGx1Z2luRmFjdG9yeTo6ZXh0ZW5z
aW9uKToKKworMjAwOC0wMy0xNiAgVGhpYWdvIE1hY2llaXJhICA8dGhpYWdvLm1hY2llaXJhQHRy
b2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRG9u
J3QgdXNlIFJlZlB0ciBpbiBjbGFzc2VzIHlvdSBoYXZlbid0IHNlZW4gdGhlIGltcGxlbWVudGF0
aW9uIG9mLgorICAgICAgICAKKyAgICAgICAgRm9yd2FyZC1kZWNsYXJhdGlvbiBhbmQgZGVjbGFy
YXRpb24gb2YgUmVmUHRyPEZvbz4gaXMgb2suIEJ1dCB5b3UKKyAgICAgICAgY2Fubm90ICp1c2Uq
IHNhaWQgb2JqZWN0cyB1bnRpbCBGb28gaXMgZGVmaW5lZC4gVGhpcyBpcyB0cnVlIGV2ZW4gZm9y
CisgICAgICAgIGluaXRpYWxpc2F0aW9uIHdpdGggYSAwLgorICAgICAgICAKKyAgICAgICAgU2Vl
bXMgdGhlIEhQIGFDQyBjb21waWxlciBpcyBtb3JlIHN0cmljdCBoZXJlIHRoYW4gZ2NjLgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisKKzIwMDgtMDMtMTQgIFNpbW9uIEhhdXNtYW5u
ICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggdGhlIFF0IGJ1aWxkLgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnNldEh0bWwp
OgorICAgICAgICAoUVdlYkZyYW1lOjpzZXRDb250ZW50KToKKworMjAwOC0wMy0xMyAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVp
bGQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6
YWRkVG9KU1dpbmRvd09iamVjdCk6CisKKzIwMDgtMDMtMTIgIFNpbW9uIEhhdXNtYW5uICA8aGF1
c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggY29tcGlsYXRpb24gYWdhaW5zdCBRdCA0
LjMKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
Lmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwOC0wMy0xMSAgUm9kbmV5IERh
d2VzICA8ZG9iZXlAd2F5b2Z0aGVtb25rZXkuY29tPgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVp
bGQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKEZyYW1lTG9hZGVyQ2xpZW50UXQ6OkNyZWF0ZVBsdWdpbik6CisKKzIwMDgtMDMt
MTEgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXgg
dGhlIFF0IGJ1aWxkIChzaWxseSB0eXBvKS4KKworICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5j
cHA6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKworMjAwOC0wMy0xMSAgVG9y
IEFybmUgVmVzdGLDuCAgPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24uCisKKyAgICAgICAgTW92ZWQgb2JzY3VyaW5nIHByb2dyZXNzIGJhciB0byB0
aGUgbG93ZXIgcmlnaHQgY29ybmVyLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoK
KyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6
cmVzaXplRXZlbnQpOgorCisyMDA4LTAzLTExICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9A
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBB
ZGRlZCByZWxvYWQgYWN0aW9uIGFuZCBncm91cGVkIHN0b3AgYW5kIHJlbG9hZCBhY3Rpb25zIHRv
Z2V0aGVyLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5X
aW5kb3c6Ok1haW5XaW5kb3cpOgorCisyMDA4LTAzLTExICBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgorCisgICAgICAgICogU2V0IGEgSWNvbiBvbiB0aGUgUUFjdGlvbiBpZiB3ZSBo
YXZlIG9uZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFn
ZTo6YWN0aW9uKToKKworMjAwOC0wMy0xMSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQuCisKKyAgICAgICAgKiBBcGkvcXdl
YmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KU1dpbmRvd09iamVjdCk6CisK
KzIwMDgtMDMtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBEb25lIHdpdGggTGFycy4K
KworICAgICAgICBSZXBsYWNlZCB0aGUgUVdlYk9iamVjdFBsdWdpbiBpbnRlcmZhY2VzIHdpdGgg
UVdlYlBsdWdpbkZhY3RvcnkuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjphZGQpOgorICAgICAgICAoUVdlYk5l
dHdvcmtNYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFy
dGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6ZGF0YSk6CisgICAgICAgIChRV2Vi
TmV0d29ya01hbmFnZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRl
cmZhY2VfcC5oOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2JQcml2YXRlOjpRV2ViTmV0d29ya0pv
YlByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbi5oOiBSZW1vdmVkLgorICAgICAgICAqIEFw
aS9xd2Vib2JqZWN0cGx1Z2luX3AuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBBcGkvcXdlYm9iamVj
dHBsdWdpbmNvbm5lY3Rvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogQXBpL3F3ZWJvYmplY3Rw
bHVnaW5jb25uZWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldFBsdWdpbkZhY3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2U6OnBsdWdpbkZhY3Rv
cnkpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9w
Lmg6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5mYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAg
IChRV2ViUGx1Z2luRmFjdG9yeTo6UVdlYlBsdWdpbkZhY3RvcnkpOgorICAgICAgICAoUVdlYlBs
dWdpbkZhY3Rvcnk6On5RV2ViUGx1Z2luRmFjdG9yeSk6CisgICAgICAgIChRV2ViUGx1Z2luRmFj
dG9yeTo6cmVmcmVzaFBsdWdpbnMpOgorICAgICAgICAoUVdlYlBsdWdpbkZhY3Rvcnk6OmV4dGVu
c2lvbik6CisgICAgICAgICogQXBpL3F3ZWJwbHVnaW5mYWN0b3J5Lmg6IEFkZGVkLgorICAgICAg
ICAoTWltZVR5cGU6Oik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RD
b250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVh
dGVQbHVnaW4pOgorCisyMDA4LTAzLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRml4IHRoZSBRdCBidWlsZC4KKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorCisyMDA4LTAzLTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgorCisgICAgICAgIC0gUmVtb3ZlIGFsbCB1
bm5lY2Vzc2FyeSBpbmNsdWRlcyBvZiBKU0RPTVdpbmRvd0Jhc2UuaCwgd2UgcHJlZmVyIGluY2x1
ZGluZworICAgICAgICAgIEpTRE9NV2luZG93LmgKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0pTV2luZG93T2JqZWN0KToKKworMjAwOC0w
My0wNCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAgIEFub3RoZXIgZ28g
YXQgZml4aW5nIHRoZSBRdCBidWlsZC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0pTV2luZG93T2JqZWN0KToKKworMjAwOC0wMi0yNCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
LgorCisgICAgICAgIC0gcmVtb3ZlIHNlcGFyYXRlIGNsaWVudCBjYWxscyBmb3IgInN0YW5kYXJk
IiBhbmQgInJlbG9hZCcgaGlzdG9yeQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0Lmg6CisKKzIwMDgtMDItMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIC0gYW5vdGhlciB0cnkgYXQgZml4aW5nIHRoZSBidWlsZAorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOiBSZXBs
YWNlIG5ldyBGb3JtRGF0YSB3aXRoIEZvcm1EYXRhOjpjcmVhdGUuCisKKzIwMDgtMDItMjIgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggUXQgYnVpbGQuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwOgorCisyMDA4LTAyLTIyICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQWRh
bSBSb2Jlbi4KKworICAgICAgICBSaWQgdGhlIHByb2plY3Qgb2YgdGhlIERldmlsIGtub3duIGFz
IERlcHJlY2F0ZWRTdHJpbmchCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAg
ICAgICAqIEFwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHA6CisKKzIwMDgtMDItMTggIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbS4KKwor
ICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0
d29ya1JlcXVlc3RQcml2YXRlOjppbml0KTogUmVtb3ZlZCB1c2Ugb2YgRGVwcmVjYXRlZFN0cmlu
Zy4KKworMjAwOC0wMS0yNCAgRGF2aWQgQm9kZGllICA8ZGJvZGRpZUB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIERvY3VtZW50YXRpb24gdGlk
eWluZy4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KiBBcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5j
cHA6CisKKzIwMDgtMDEtMjQgIEphcmVrIEtvYnVzICA8amtvYnVzQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgVGV4dCBmb3IgdHJhbnNsYXRp
b25zIHdlcmUgdXNlZCB3cm9uZ2x5IGFzIGNvbW1lbnRzCisgICAgICAgIAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2Fubm90U2hvd1VS
TEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmludGVycnVw
dEZvclBvbGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRGYWxsQmFjayk6CisKKzIwMDgtMDEtMjQgIEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBXZSBoYXZlIGEgS1VS
TC0+UVVybCBjb252ZXJzaW9uIG9uIEtVUkwgaXRzZWxmLCBtYWtlIHVzZSBvZiBpdC4KKyAgICAg
ICAgKiBUaGlzIGNvbnZlcnNpb24gaXMgc3VwcG9zZWQgdG8gYmUgbG9zcy1mcmVlCisgICAgICAg
IAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIwMDgtMDEtMjMgIEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAg
ICAgICAgKiBSdWJiZXIgc3RhbXBlZCBieSBTaW1vbgorCisgICAgICAgICogRml4IGxlYWtpbmcg
b2Ygc3ViIGZyYW1lcyAoV2ViQ29yZTo6RnJhbWUpLiBXZSBrZWVwIG9uZSByZWZlcmVuY2UgdG9v
IG1hbnkuCisgICAgICAgIFRoaXMgd2FzIGZvdW5kIHdoaWxlIHdvcmtpbmcgb24gdGhlIHBhZ2Ut
Y2FjaGUsIG90aGVyIHBvcnRzIGFyZSBub3QgYWZmZWN0ZWQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKToKKworMjAwOC0wMS0yMyAgUm9oYW4gTWNHb3Zl
cm4gIDxyb2hhbi5tY2dvdmVybkB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uIDxoYXVzbWFubkB3ZWJraXQub3JnPi4KKworICAgICAgICBGaXggUXRv
cGlhIGNvbXBpbGF0aW9uIHdpdGggUVRfTk9fVE9PTFRJUAorICAgICAgICAKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjpwcmludCk6CisKKzIwMDgtMDEtMjMgIEdlaXIgVmF0dGVrYXIgIDxndmF0
dGVrYUB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAg
ICAgIERvYzogUmVwbGFjZWQgXGNvZGUgd2l0aCBzbmlwcGV0cyBpbiB0aGUgZG9jcworICAgICAg
ICAKKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDgtMDEtMjMgIEJlbmphbWlu
IE1leWVyICA8Ym1leWVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgVHdlYWsga2V5IHByZXNzZXMgZXZlbiB0byBtYXRjaCBjb21tb25seSBl
eHBlY3RlZCBiZWhhdmlvcgorICAgICAgICAtIHNwYWNlIGtleSA9PSBwYWdlIGRvd24KKyAgICAg
ICAgLSBwYWdlIGRvd24gbW92ZWQgZG93biBub3QgYSBwYWdlLCBidXQgc2xpZ2h0bHkgbGVzcyB0
aGVuIGEgcGFnZSBzbyB5b3UgZG9uJ3QgbG9vc2UgeW91ciBzcG90IHdoZW4gcmVhZGluZy4KKyAg
ICAgICAgLSBVc2UgZm9udCBoZWlnaHQgcmF0aGVyIHRoZW4gYSBoYXJkIGNvZGVkICIxMCIgZm9y
IGxlZnQsIHJpZ2h0LCB1cCwgZG93bgorICAgICAgICAtIEN0cmwtVXAgbW92ZXMgdG8gdGhlIHRv
cCBvZiB0aGUgcGFnZQorICAgICAgICAtIEN0cmwtRG93biBtb3ZlIHRvIHRoZSBib3R0b20gb2Yg
dGhlIHBhZ2UKKyAgICAgICAgLSBCYWNrc3BhY2UgPT0gR29CYWNrCisgICAgICAgIC0gU2hpZnQt
QmFja3NwYWNlID09IEdvRm9yd2FyZAorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChkcm9wQWN0aW9uVG9EcmFnT3ApOgorICAgICAgICAoZHJhZ09wVG9E
cm9wQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudCk6CisK
KzIwMDgtMDEtMjMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEltcGxlbWVudGVkIEZyYW1lTG9hZGVy
Q2xpZW50OjpzdGFydERvd25sb2FkKCkgYW5kIEZyYW1lTG9hZGVyQ2xpZW50Ojpkb3dubG9hZCgp
LgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdHdvIHNpZ25hbHMgdG8gUVdlYlBhZ2UgdG8gaGFu
ZGxlIGRvd25sb2FkaW5nIG9mIGxpbmtzIGFuZCBoYW5kbGluZyBvZgorICAgICAgICB1bnN1cHBv
cnRlZCBjb250ZW50LgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFs
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxVc2VBcmNoaXZlKToKKworMjAw
OC0wMS0yMiAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbi4KKworICAgICAgICBzZXR1cCBhIGZhbWlseSBmb3IgY3Vyc2l2ZSBhbmQg
ZmFudGFzeSBmb250cyBhcyB3ZWxsLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorCisyMDA4
LTAxLTIyICBCZW5qYW1pbiBNZXllciAgPGJtZXllckB0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIEltcGxlbWVudCBDaHJvbWVDbGllbnRRdDo6
c2V0VG9vbFRpcAorICAgICAgICBJbXBsZW1lbnQgQ2hyb21lQ2xpZW50UXQ6Om1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpDaHJvbWVD
bGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Zm9jdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpzZXRUb29sVGlwKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpwcmludCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwOC0wMS0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KKworICAgICAg
ICAtIHVwZGF0ZWQgZm9yIGNoYW5nZXMgdG8gQ2hyb21lQ2xpZW50IGRhdGFiYXNlIGZ1bmN0aW9u
cworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwOC0wMS0yMSAgQmVu
amFtaW4gTWV5ZXIgIDxibWV5ZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBTaW1vbi4KKworICAgICAgICBDaGFuZ2UgUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmFkZEhpc3Rv
cnlFbnRyeSgpIGZyb20gY29uc3QgdG8gbm9uLWNvbnN0CisgICAgICAgIAorCisgICAgICAgICog
QXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmg6CisKKzIwMDgtMDEtMjEgIEFkYW0gVHJlYXQgIDxh
ZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4K
KworICAgICAgICAqIERvbid0IGxlYWsgdGhlIGQtcG9pbnRlciBpbiBRV2ViU2V0dGluZ3MuCisg
ICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6On5RV2ViU2V0dGluZ3MpOgorCisyMDA4LTAxLTIxICBTaW1vbiBIYXVzbWFubiAg
PGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyLgorCisg
ICAgICAgIFVwZGF0ZSB0aGUgV2ViS2l0IHZlcnNpb24gbnVtYmVyIGZyb20gV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL1ZFUlNJT04uCisgICAgICAgIAorICAgICAgICBUaGlzIGhhcyB0aGUgZm9y
dHVuYXRlIHNpZGUtZWZmZWN0IHRoYXQgZ21haWwgc2VuZHMgdXMgc2Vuc2libGUgSFRNTC9KUyBh
Z2FpbiA6KQorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisKKzIwMDgt
MDEtMjEgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAgRml4IGZvY3VzIGNoYWluIGhhbmRsaW5nIGFu
ZCBjeWNsaW5nIHRocm91Z2ggZm9jdXNhYmxlIG9iamVjdHMgKGxpbmtzKSB1c2luZyB0YWIvYmFj
a3RhYi4KKyAgICAgICAgCisgICAgICAgICogRml4IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyB0byBhbHNvIGRyYXcgc2luZ2xlIGZvY3VzIHJlY3RzLgorICAgICAgICAqIEltcGxlbWVu
dGVkIFFXZWJQYWdlOjpmb2N1c05leHRQcmV2Q2hpbGQgYnkgc2VuZGluZyBmYWtlIHRhYi9zaGlm
dC10YWIgZXZlbnRzCisgICAgICAgIGFuZCBtYWtlIHRoZSByZXR1cm4gdmFsdWUgZGVwZW5kIG9u
IHdoZXRoZXIgd2Ugc3VjY2Vzc2Z1bGx5IGRldGVybWluZWQgYSBmb2N1c2FibGUKKyAgICAgICAg
bm9kZSBvciBub3QuCisgICAgICAgICogQ2hhbmdlZCBRV2ViVmlldzo6Zm9jdXNOZXh0UHJldkNo
aWxkKCkgdG8gY2FsbCB0aGUgYmFzZSBRV2lkZ2V0IGltcGxlbWVudGF0aW9uIGNvcnJlY3RseQor
ICAgICAgICBpZiB3ZSBjb3VsZCBub3QgaGFuZGxlIHRoZSBmb2N1cyBjaGFpbiBvdXJzZWx2ZXMu
CisgICAgICAgICogQ2hhbmdlZCB0aGUgZm9jdXMgcG9saWN5IG9mIFFXZWJWaWV3IHRvIGNvcnJl
Y3RseSB1c2UgV2hlZWxGb2N1cyBpbnN0ZWFkIG9mIENsaWNrRm9jdXMuCisgICAgICAgICogTWFk
ZSBDaHJvbWVDbGllbnRRdDo6Y2FuVGFrZUZvY3VzKCkgYW5kIHRha2VGb2N1cygpIGR1bW15IG1l
dGhvZCBzaW5jZSB0aGV5IGFyZSBvbmx5CisgICAgICAgIHVzZWQgdG8gY29udHJvbCB0aGUgc2l0
dWF0aW9uIG9mIHN0ZXBwaW5nIG91dCBvZiB0aGUgZm9jdXMgY2hhaW4gaW5zaWRlIHRoZSBwYWdl
LgorICAgICAgICAqIE1hZGUgaW5jbHVzaW9uIG9mIGxpbmtzIGluIHRoZSBmb2N1cyBjaGFpbiBj
b25maWd1cmFibGUgdGhyb3VnaCBRV2ViU2V0dGluZ3M6OkxpbmtzSW5jbHVkZWRJbkZvY3VzQ2hh
aW4uCisgICAgICAgIFRoZSBsYXlvdXQgdGVzdHMgZXhwZWN0IHRoaXMgdG8gYmUgZGlzYWJsZWQg
YnV0IGZvciB0aGUgdXNlciBpdCBzZWVtcyBzZW5zaWJsZSB0byBoYXZlIGl0CisgICAgICAgIG9u
IGJ5IGRlZmF1bHQsIGhlbmNlIHRoZSBkZWZhdWx0IGluIHF3ZWJzZXR0aW5ncy5jcHAKKyAgICAg
ICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmZv
Y3VzTmV4dFByZXZDaGlsZCk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0
aW5ncy5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6
UVdlYlZpZXcpOgorICAgICAgICAoUVdlYlZpZXc6OmZvY3VzTmV4dFByZXZDaGlsZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OmNhblRha2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6dGFrZUZvY3VzKToKKworMjAwOC0wMS0xOCAgU2ltb24gSGF1c21hbm4gIDxo
YXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKworICAg
ICAgICBDb2Rpbmcgc3R5bGUgZml4ZXMgYW5kIGFkZGVkIGEgY29tbWVudCBhYm91dCB0aGUgaW5j
bHVkZSBvcmRlci4KKworICAgICAgICAqIFdlYktpdF9wY2guaDoKKworMjAwOC0wMS0xOCAgTWFy
aXVzIFN0b3JtLU9sc2VuICA8bWFyaXVzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQHdlYmtpdC5vcmc+LgorCisgICAgICAgIEFk
ZCB1c2Ugb2YgcHJlY29tcGlsZWQgaGVhZGVyLCB3aGVuIGJ1aWxkaW5nIGluc2lkZSBRdC4KKyAg
ICAgICAgCisgICAgICAgIENvbXBpbGluZyBXZWJLaXQgd2FzIHRha2luZyBmb3JldmVyOyAxNyBt
aW51dGVzIG9uIG15IG1hY2hpbmUgZm9yIF9vbmVfIGJ1aWxkISBBZGRpbmcgdGhlIFBDSCBhdCBs
ZWFzdCBicmluZ3MgaXQgZG93biB0byAxMiBtaW51dGVzIGZvciBvbmUgYnVpbGQsIGZvciBtZS4K
KyAgICAgICAgCisKKyAgICAgICAgKiBXZWJLaXRfcGNoLmg6IEFkZGVkLgorCisyMDA4LTAxLTE4
ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2gu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogQXNrIHRoZSBX
ZWJDb3JlOjpJY29uRGF0YWJhc2Ugb25seSBpZiBvdXIgVVJMIGlzIG5vdCBlbXB0eS4gT3RoZXJ3
aXNlCisgICAgICAgIHdlIHdpbGwgc2VlIGEgY3Jhc2ggaW4gYSBIYXNoU2V0LgorICAgICAgICAq
IEl0IGlzIGNyYXNoaW5nIHRoZXJlIGJlY2F1c2UgdGhlIFN0cmluZ0ltcGwgb2YgYW4gZW1wdHkg
U3RyaW5nIGlzIDAuCisgICAgICAgICogV2UgYXZvaWQgdGhpcyBjcmFzaCBieSBjaGVja2luZyBm
b3IgaXNFbXB0eSgpIGluIFdlYktpdCBhcyB0aGVyZSBpcyBubworICAgICAgICB1c2UgdG8gYXNr
IHRoZSBpY29uRGF0YWJhc2UgZm9yIGFuIGVtcHR5IHN0cmluZy4gV2Ugd2lsbCBmYWxsYmFjayB0
byB0aGUKKyAgICAgICAgZGVmYXVsdEljb24uCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3
ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6Omljb24pOgorCisyMDA4LTAxLTE3ICBT
aW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSG9sZ2VyLgorCisgICAgICAgIE1pbm9yIGRvY3VtZW50YXRpb24gZml4ZXMKKyAgICAgICAg
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcu
Y3BwOgorCisyMDA4LTAxLTE3ICBTaW1vbiBIYXVzbWFubiAgPHNoYXVzbWFuQHRyb2xsdGVjaC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBGaXggZm9ybSBlbGVt
ZW50cyBub3QgZm9jdXNpbmcgY29ycmVjdGx5IGFmdGVyIHRoZSBxdCB3aWRnZXQgbG9zdCBpdHMg
Zm9jdXMuCisgICAgICAgIAorICAgICAgICBXaGVuIHJlY2VpdmluZyBhIGZvY3VzIG91dCBldmVu
dCBub3RpZnkgdGhlIGZvY3VzIGNvbnRyb2xsZXIuIE90aGVyd2lzZSBpdHMKKyAgICAgICAgbV9m
b2N1c2VkRnJhbWUgdmFyaWFibGUgcmVtYWlucyB1bmNoYW5nZWQgYW5kIHNldEZvY3VzZWRGcmFt
ZSBvbiBhIGZvY3VzSW4KKyAgICAgICAgZXZlbnQgc2hvcnRjdXRzIGFuZCBkb2Vzbid0IGNhbGwg
c2V0QWN0aXZlKHRydWUpLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisKKzIwMDgtMDEtMTcgIFNpbW9uIEhhdXNtYW5uICA8c2hhdXNtYW5AdHJvbGx0ZWNoLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIuCisKKyAgICAgICAgTG90cyBvZiB1cGRhdGVz
IHRvIHRoZSBkb2N1bWVudGF0aW9uLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJh
bWUuY3BwOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeS5jcHA6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJvcEV2ZW50KToKKyAgICAg
ICAgKFFXZWJQYWdlOjpoaXN0b3J5KToKKyAgICAgICAgKG9wZW5OZXdXaW5kb3cpOgorICAgICAg
ICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXdwb3J0
U2l6ZSk6CisgICAgICAgIChRV2ViUGFnZTo6bmF2aWdhdGlvblJlcXVlc3RlZCk6CisgICAgICAg
IChRV2ViUGFnZTo6YWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAg
IChRV2ViUGFnZUNvbnRleHQ6OnRhcmdldEZyYW1lKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorCisyMDA4LTAxLTE3ICBTaW1vbiBIYXVz
bWFubiAgPHNoYXVzbWFuQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFy
cy4KKworICAgICAgICBBZGRlZCBhIHVybENoYW5nZWQgc2lnbmFscyB0byBRV2ViRnJhbWUgYW5k
IFFXZWJWaWV3LgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAg
ICAgICAoUVdlYlZpZXc6OnNldFBhZ2UpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorCisyMDA4LTAx
LTE3ICBTaW1vbiBIYXVzbWFubiAgPHNoYXVzbWFuQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBGaXhlZCBkb2NzIGFuZCBzYW5pdHkgY2hlY2tz
IGluIFFXZWJTZXR0aW5nczo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZAorICAgICAgICAKKworICAg
ICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRJ
Y29uRGF0YWJhc2VFbmFibGVkKToKKworMjAwOC0wMS0xNyAgU2ltb24gSGF1c21hbm4gIDxzaGF1
c21hbkB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAg
ICAgQWRkZWQgUVdlYlZpZXc6OmNyZWF0ZVdpbmRvdygpIHdoaWNoIGlzIGZvcndhcmRlZCBmcm9t
IFFXZWJQYWdlOjpjcmVhdGVXaW5kb3coKSBmb3IgY29udmVuaWVuY2UuCisgICAgICAgIAorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDoKKworMjAwOC0wMS0xNyAgTGFy
cyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJz
LgorCisgICAgICAgIGFkZCBhIDAgcG9pbnRlciBjaGVjay4KKworICAgICAgICBGaXhlcyBhIGNy
YXNoIGluIHRoZSBkZW1vIHdlYiBicm93c2VyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKworMjAwOC0wMS0xNyAg
U2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEhvbGdlci4KKworICAgICAgICBGaXggUVdlYkZyYW1lOjp0aXRsZSgpLgorICAgICAgICAK
KyAgICAgICAgRm9yIHRoZSB0aXRsZUNoYW5nZWQoKSBzaWduYWwgd2UgdXNlIHRoZSBkb2N1bWVu
dGxvYWRlcidzIHRpdGxlLiBGb3IgdGhlIHByb3BlcnR5IHdlIGhhdmUgdG8gdXNlIHRoZSBzYW1l
CisgICAgICAgIGluc3RlYWQgb2YgRG9jdW1lbnQ6OnRpdGxlKCkgYXMgdGhlIGxhdHRlciBpcyBu
b3QgdHJpbW1lZCBhbmQgbm90IHN1aXRlZCBmb3IgYSB3aW5kb3cgY2FwdGlvbi4KKyAgICAgICAg
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6dGl0
bGUpOgorCisyMDA4LTAxLTE3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLCBMYXJzLCBIb2xnZXIuCisKKyAgICAgICAg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODkKKworICAgICAgICBB
ZGQgYSBkb2N1bWVudCBwYXJhbWV0ZXIgdG8gV2ViQ29yZTo6Y29va2llcywgc2V0Q29va2llcyBh
bmQgY29va2llc0VuYWJsZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6aW5pdCk6CisgICAgICAg
IChRV2ViTmV0d29ya01hbmFnZXI6OnN0YXJ0ZWQpOgorCisyMDA4LTAxLTE3ICBXYXJ3aWNrIEFs
bGlzb24gIDx3YXJ3aWNrQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gSGF1c21hbm4gPGhhdXNtYW5uQHdlYmtpdC5vcmc+LgorCisgICAgICAgIEZvbGxvdyBRV2lk
Z2V0OjprZXlQcmVzc0V2ZW50IGFkdmljZSBhbmQgY2FsbCBwYXJlbnRzLgorICAgICAgICAKKyAg
ICAgICAgV2l0aG91dCB0aGlzLCBCYWNrIGRvZXMgbm90IHdvcmsgaW4gUXRvcGlhLCBmb3IgZXhh
bXBsZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3BwOgorICAgICAgICAo
UVdlYlZpZXc6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmtleVJlbGVhc2VF
dmVudCk6CisKKzIwMDgtMDEtMTcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEZpeCBjb21waWxhdGlv
biBhZ2FpbnN0IFF0IDQuMyBhZnRlciB0aGUgcmVjZW50IEtVUkwgPD4gUVVybCBjb252ZXJzaW9u
IGZpeGVzLgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAg
ICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisKKzIwMDgtMDEtMTcgIFNpbW9uIEhh
dXNtYW5uICA8c2hhdXNtYW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBI
b2xnZXIuCisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9uIGFnYWluc3QgUXQgNC40IHdpdGhvdXQg
ZmlsZXMgdGhhdCBhcmUgc3BlY2lmaWMgZm9yIHRoZSBRdCA0LjMgYnVpbGQuCisgICAgICAgIAor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKwor
MjAwOC0wMS0xNyAgTGluY29sbiBSYW1zYXkgIDxsaW5jb2xuLnJhbXNheUB0cm9sbHRlY2guY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uIDxoYXVzbWFubkB3ZWJraXQu
b3JnPi4KKworICAgICAgICBGaXhlcyBjb21waWxhdGlvbiB3aXRoIFFUX05PX0RSQUdBTkREUk9Q
CisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQ
YWdlOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJW
aWV3OjpkcmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6ZHJhZ0xlYXZlRXZlbnQp
OgorICAgICAgICAoUVdlYlZpZXc6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6
OmRyb3BFdmVudCk6CisKKzIwMDgtMDEtMTcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEZpeCBjb21w
aWxhdGlvbiwgcmVtb3ZlZCBvYnNvbGV0ZSBwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgbWV0aG9k
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisK
KzIwMDgtMDEtMTYgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4gPHNpbW9uLmhhdXNtYW5uQHRyb2xsdGVjaC5jb20+
LgorCisgICAgICAgIFJlbW92ZWQgYSB3aG9sZSBidW5jaCBvZiBub3RJbXBsZW1lbnRlZCgpIHdh
cm5pbmdzLgorICAgICAgICAKKyAgICAgICAgSSBkb24ndCB3YW50IHRvIGhpZGUgdGhlIHJlYWwg
d2FybmluZ3MgaW4gbG90cyBvZiB0aGluZ3MgdGhhdAorICAgICAgICBJIGFtIGJ5IG5vdyBwcmV0
dHkgY2VydGFpbiB3ZSB3b24ndCBuZWVkLgorICAgICAgICAKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5TaG93TUlNRVR5cGUpOgorCisyMDA4LTAxLTE2ICBT
aW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgSG9sZ2VyLgorCisgICAgICAgIEZpeCBjcmFzaCB3aGVuIGJyaW5naW5nIHVwIHRoZSBjb250
ZXh0IG1lbnUgb24gbWFwcy5nb29nbGUuY29tLgorICAgICAgICAKKyAgICAgICAgSWYgdGhlIHdl
YnNpdGUgcHJvdmlkZXMgaXRzIG93biBjb250ZXh0IG1lbnUgdGhlbiB3ZSBkb24ndCBoYXZlIGEg
Q29udGV4dE1lbnUgcG9pbnRlci4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjb250ZXh0TWVudUV2ZW50KToKKworMjAw
OC0wMS0xNiAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBEb24ndCBjcmFzaCB3aGVuIHJlY2Vpdmlu
ZyBhbGwgc29ydHMgb2YgZXZlbnRzIG9uIGEgZGVmYXVsdCBjb25zdHJ1Y3RlZCBRV2ViVmlldyB3
aXRob3V0IGEgcGFnZS4KKworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChR
V2ViVmlldzo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Om1vdXNlUHJlc3NF
dmVudCk6CisgICAgICAgIChRV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAg
ICAgKFFXZWJWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6Y29u
dGV4dE1lbnVFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAg
IChRV2ViVmlldzo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6a2V5UmVsZWFz
ZUV2ZW50KToKKyAgICAgICAgKFFXZWJWaWV3Ojpmb2N1c0luRXZlbnQpOgorICAgICAgICAoUVdl
YlZpZXc6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmRyYWdFbnRlckV2ZW50
KToKKyAgICAgICAgKFFXZWJWaWV3OjpkcmFnTGVhdmVFdmVudCk6CisgICAgICAgIChRV2ViVmll
dzo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6ZHJvcEV2ZW50KToKKyAgICAg
ICAgKFFXZWJWaWV3Ojpmb2N1c05leHRQcmV2Q2hpbGQpOgorCisyMDA4LTAxLTE2ICBTaW1vbiBI
YXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFy
cy4KKworICAgICAgICBNYWRlIHRoZSB1cmwgcHJvcGVydHkgcmVhZC13cml0ZS4KKworICAgICAg
ICAqIEFwaS9xd2Vidmlldy5oOgorCisyMDA4LTAxLTE2ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNt
YW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBE
b24ndCBjcmFzaCB3aGVuIHNob3dpbmcgYSBkZWZhdWx0IGluaXRpYWxpemVkIFFXZWJWaWV3IHRo
YXQgaGFzIG5vIHBhZ2UvZnJhbWUgeWV0LgorCisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFXZWJWaWV3OjpwYWludEV2ZW50KToKKworMjAwOC0wMS0xNiAgSG9sZ2VyIEZy
ZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQ2hhbmdlIGhvdmVyaW5nT3ZlckxpbmsgaW1wbGVtZW50
YXRpb24gdG8gaGF2ZSBsZXNzIGlzc3Vlcy4KKyAgICAgICAgCisgICAgICAgICogQ3VycmVudGx5
IHdlIG9ubHkgY29tcGFyZSBhIHBvaW50ZXIuIEluIHRoZSB3b3JzdCBjYXNlIHdlCisgICAgICAg
IGNvdWxkIGRlbGV0ZSB0aGUgRWxlbWVudCB3ZSBoYXZlIHBvaW50ZWQgdG8gYW5kIGEgbmV3IG9u
ZQorICAgICAgICBnZXRzIHRoZSBzYW1lIGFkZHJlc3MuIEJ1dCBldmVuIGlmIHRoYXQgZG9lc24n
dCBoYXBwZW4gdGhlCisgICAgICAgIFdlYkNvcmU6OkVsZW1lbnQgaXMgbXV0YWJsZSBhbmQgSmF2
YVNjcmlwdCBjb3VsZCBjaGFuZ2UgdGhlCisgICAgICAgIFVSTCwgVGl0bGUgb3IgQ29udGVudC4g
U28gd2UgaGF2ZSB0byBjb21wYXJlIGFsbCB0aGVzZSB0aHJlZQorICAgICAgICBhdHRyaWJ1dGVz
LgorICAgICAgICAqIFRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHBlcmZvcm1hbmNlIGltcGFj
dC4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjptb3VzZU1vdmVFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3Au
aDoKKworMjAwOC0wMS0xNiAgSG9sZ2VyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBNb3Zl
IHRoZSBob3ZlckVsZW1lbnQgZnJvbSBRV2ViRnJhbWUgdG8gUVdlYlBhZ2UuIEFzIGl0IGlzCisg
ICAgICAgIG9ubHkgdXNlZCB0aGVyZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lX3AuaDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1v
dXNlTW92ZUV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCisyMDA4LTAxLTE2
ICBIb2xnZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBFdmVudEhhbmRsZXIgY2hhbmdlcy9m
aXhlcyBpbiBRV2ViUGFnZToKKyAgICAgICAgLW1vdXNle1ByZXNzLE1vdmUsUmVsZWFzZX1FdmVu
dDoKKyAgICAgICAgU2VuZCB0aGUgZXZlbnQgYWx3YXlzIHRvIHRoZSBtYWluRnJhbWUgb2YgdGhl
IFFXZWJQYWdlLgorICAgICAgICAKKyAgICAgICAgLWNvbnRleHRNZW51RXZlbnQsIGtleXtQcmVz
cyxSZWxlYXNlfUV2ZW50OgorICAgICAgICBTZW5kIHRoZSBldmVudCB0byB0aGUgZm9jdXNlZCBm
cmFtZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgZm9sbG93aW5nIHRoZSBXaW5kb3dzIHBv
cnQgYW5kIGZpeGVzIGEgaXNzdWUgd2l0aCB0aGUKKyAgICAgICAgV2ViIEluc3BlY3RvciB3aGVy
ZSB3ZSB3ZXJlIHNlbmRpbmcgdGhlIGV2ZW50cyB0byBhIHdyb25nIGZyYW1lLgorICAgICAgICAK
KyAgICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IHRoZSBtYWluRnJhbWUgd2lsbCBhbHdheXMg
aGF2ZSBhbiBldmVudEhhbmRsZXIKKyAgICAgICAgYW5kIGZyYW1lVmlldyBzZXQuIFRoZXJlIGlz
IG5vIG5lZWQgdG8gY2hlY2sgZm9yIHRoaXMgaW4gUVdlYlBhZ2UuCisgICAgICAgIAorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjppbml0
KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZh
dGU6OlFXZWJGcmFtZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
Om1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlRG91Ymxl
Q2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUmVsZWFzZUV2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y29udGV4dE1lbnVFdmVudCk6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OndoZWVsRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UmVsZWFzZUV2
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Zm9jdXNJbkV2ZW50KToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2VfcC5oOgorCisyMDA4LTAxLTE2ICBIb2xnZXIgRnJleXRoZXIgIDxob2xn
ZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4K
KworICAgICAgICAqIEFkZCBjb3JlIGFuZCBraXQgZnVuY3Rpb25zIHRvIFFXZWJGcmFtZVByaXZh
dGUgdG8gY29udmVydCBmcm9tCisgICAgICAgIFFXZWJGcmFtZSB0byBXZWJDb3JlOjpGcmFtZSBh
bmQgdmljZSB2ZXJzYS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmNvcmUpOgorICAgICAgICAoUVdlYkZyYW1lUHJp
dmF0ZTo6a2l0KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3
ZWJmcmFtZV9wLmg6CisKKzIwMDgtMDEtMTYgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgYWRkIGNvbnZlcnNp
b24gbWV0aG9kcyBmcm9tIGFuZCB0byBRVXJsIHRvIEtVUkwuCisgICAgICAgIAorICAgICAgICBV
c2UgdGhlbSBpbiB0aGUgcGxhY2VzIEkgZm91bmQgYXQgdGhlIG1vbWVudC4gRml4ZXMgYSBidWcK
KyAgICAgICAgd2hlcmUgZm9ybSBkYXRhIHdhcyBlbmNvZGVkIHR3aWNlLgorICAgICAgICBBbHNv
IGZpeCBRV2ViU2V0dGluZ3MgdG8gdGFrZSBhIFFVcmwgZm9yIHRoZSB1c2VyIHN0eWxlIHNoZWV0
CisgICAgICAgIGxvY2F0aW9uLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpsb2FkKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChmcmFtZUxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFw
cGx5KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2hv
dyk6CisKKzIwMDgtMDEtMTYgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZy
ZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAg
ICAgICAqIE1ha2UgdGhlIEluc3BlY3RvckNsaWVudFZpZXcgaW5oZXJpdCBmcm9tIFFXZWJWaWV3
IGluc3RlYWQgb2YgUVdpZGdldC4gVGhpcworICAgICAgICB3YXkgcGFpbnRFdmVudCwgbW91c2V7
UHJlc3MsUmVsZWFzZX1FdmVudCBhbmQgb3RoZXIgZXZlbnRzIGdldCBmb3J3YXJkZWQgdG8KKyAg
ICAgICAgdGhlIFFXZWJQYWdlL1dlYkluc3BlY3RvciBhdXRvbWF0aWNhbGx5LgorICAgICAgICAK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRWaWV3OjpJbnNwZWN0b3JDbGllbnRWaWV3KToK
KworMjAwOC0wMS0xMCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbS4KKworICAgICAgICAtIHJlbW92ZSBTZWN1cml0eU9yaWdpbkRh
dGEgYW5kIGZvbGQgaXRzIGZ1bmN0aW9uYWxpdHkgaW50byBTZWN1cml0eU9yaWdpbgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6OnJlcXVlc3RRdW90YUluY3JlYXNlRm9yTmV3RGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJlcXVlc3RRdW90YUluY3JlYXNlRm9y
RGF0YWJhc2VPcGVyYXRpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dFF0Lmg6CisKKzIwMDgtMDEtMTAgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgZG9jdW1lbnQgUVdlYkhpc3Rv
cnkKKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnkuY3BwOgorICAgICAgICAo
UVdlYkhpc3RvcnlJdGVtOjpRV2ViSGlzdG9yeUl0ZW0pOgorICAgICAgICAoUVdlYkhpc3RvcnlJ
dGVtOjpvcGVyYXRvcj0pOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjp+UVdlYkhpc3RvcnlJ
dGVtKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6b3JpZ2luYWxVcmwpOgorICAgICAgICAo
UVdlYkhpc3RvcnlJdGVtOjpjdXJyZW50VXJsKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6
dGl0bGUpOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjppY29uKToKKyAgICAgICAgKFFXZWJI
aXN0b3J5OjpjYW5Hb0JhY2spOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmNhbkdvRm9yd2FyZCk6
CisgICAgICAgIChRV2ViSGlzdG9yeTo6Z29CYWNrKToKKyAgICAgICAgKFFXZWJIaXN0b3J5Ojpn
b0ZvcndhcmQpOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmdvVG9JdGVtKToKKyAgICAgICAgKiBB
cGkvcXdlYmhpc3RvcnkuaDoKKworMjAwOC0wMS0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFu
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgTWFr
ZSB0aGUgcmVzZXQoKSBmdW5jdGlvbnMgbm90IGRvIGFueXRoaW5nIG9uIHRoZSBkZWZhdWx0IFFX
ZWJTZXR0aW5ncyBvYmplY3QuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnJlc2V0Rm9udFNpemUpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjpyZXNldEZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpj
bGVhckF0dHJpYnV0ZSk6CisKKzIwMDgtMDEtMTAgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVj
aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgcmVuYW1lIFFX
ZWJQYWdlSGlzdG9yeSB0byBRV2ViSGlzdG9yeS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkv
cXdlYmhpc3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6UVdlYkhp
c3RvcnlJdGVtKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKFFXZWJIaXN0b3J5SXRlbTo6flFXZWJIaXN0b3J5SXRlbSk6CisgICAgICAgIChRV2ViSGlz
dG9yeUl0ZW06Om9yaWdpbmFsVXJsKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6Y3VycmVu
dFVybCk6CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW06OnRpdGxlKToKKyAgICAgICAgKFFXZWJI
aXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWQpOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjppY29u
KToKKyAgICAgICAgKFFXZWJIaXN0b3J5OjpRV2ViSGlzdG9yeSk6CisgICAgICAgIChRV2ViSGlz
dG9yeTo6flFXZWJIaXN0b3J5KToKKyAgICAgICAgKFFXZWJIaXN0b3J5OjpjbGVhcik6CisgICAg
ICAgIChRV2ViSGlzdG9yeTo6aXRlbXMpOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmJhY2tJdGVt
cyk6CisgICAgICAgIChRV2ViSGlzdG9yeTo6Zm9yd2FyZEl0ZW1zKToKKyAgICAgICAgKFFXZWJI
aXN0b3J5OjpjYW5Hb0JhY2spOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmNhbkdvRm9yd2FyZCk6
CisgICAgICAgIChRV2ViSGlzdG9yeTo6Z29CYWNrKToKKyAgICAgICAgKFFXZWJIaXN0b3J5Ojpn
b0ZvcndhcmQpOgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmdvVG9JdGVtKToKKyAgICAgICAgKFFX
ZWJIaXN0b3J5OjpiYWNrSXRlbSk6CisgICAgICAgIChRV2ViSGlzdG9yeTo6Y3VycmVudEl0ZW0p
OgorICAgICAgICAoUVdlYkhpc3Rvcnk6OmZvcndhcmRJdGVtKToKKyAgICAgICAgKFFXZWJIaXN0
b3J5OjppdGVtQXRJbmRleCk6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5Lmg6IEFkZGVkLgor
ICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeV9wLmg6IEFkZGVkLgorICAgICAgICAoUVdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZTo6UVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViSGlz
dG9yeUl0ZW1Qcml2YXRlOjp+UVdlYkhpc3RvcnlJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
SGlzdG9yeVByaXZhdGU6OlFXZWJIaXN0b3J5UHJpdmF0ZSk6CisgICAgICAgIChRV2ViSGlzdG9y
eVByaXZhdGU6On5RV2ViSGlzdG9yeVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2VoaXN0b3J5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2VoaXN0b3J5Lmg6IFJlbW92ZWQuCisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeV9wLmg6
IFJlbW92ZWQuCisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiBBcGkvcXdl
YnZpZXcuaDoKKworMjAwOC0wMS0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgRG9jdW1lbnRhdGlv
biBmb3IgUVdlYlNldHRpbmdzCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5n
cy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6On5RV2ViU2V0dGluZ3MpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjpzZXRGb250U2l6ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnJlc2V0
Rm9udFNpemUpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbik6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3M6Omljb25EYXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjp3ZWJHcmFwaGljKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0Rm9udEZh
bWlseSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnJlc2V0Rm9udEZhbWlseSk6CisgICAgICAg
IChRV2ViU2V0dGluZ3M6OnNldEF0dHJpYnV0ZSk6CisKKzIwMDgtMDEtMTAgIExhcnMgS25vbGwg
IDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAg
ICAgICAgRG9jdW1lbnQgUVdlYkhpc3RvcnlJbnRlcmZhY2UuCisgICAgICAgIAorCisgICAgICAg
ICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50
ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNl
Ojp+UVdlYkhpc3RvcnlJbnRlcmZhY2UpOgorCisyMDA4LTAxLTEwICBMYXJzIEtub2xsICA8bGFy
c0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAg
IERvY3VtZW50YXRpb24gZm9yIFFXZWJGcmFtZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6dXJsKToKKyAgICAgICAgKFFXZWJG
cmFtZTo6bmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnBhZ2UpOgorICAgICAgICAoUVdlYkZy
YW1lOjpzZXRIdG1sKToKKyAgICAgICAgKFFXZWJGcmFtZTo6cGFyZW50RnJhbWUpOgorICAgICAg
ICAoUVdlYkZyYW1lOjpyZW5kZXIpOgorICAgICAgICAoUVdlYkZyYW1lOjpwb3MpOgorICAgICAg
ICAoUVdlYkZyYW1lOjpnZW9tZXRyeSk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorCisyMDA4LTAxLTEwICBMYXJzIEtub2xsICA8bGFy
c0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAg
IGZpeCB0aGUgZHJhd2luZyBlcnJvcnMgdGhhdCB3aGVyZSBpbnRyb2R1Y2VkIGR1ZSB0byByZWZh
Y3RvcmluZy4KKyAgICAgICAgCisgICAgICAgIENvcnJlY3RseSBjbGlwIHRvIHRoZSByZWN0YW5n
bGUgd2Ugd2FudCB0byBkcmF3IGluIFNjcm9sbFZpZXc6OnBhaW50KCkuCisgICAgICAgIAorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnJlbmRlcik6
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6
CisgICAgICAgIChRV2ViVmlldzo6cGFpbnRFdmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OnNjcm9sbEJhY2tpbmdTdG9yZSk6CisKKzIwMDgtMDEtMTAgIFNpbW9uIEhhdXNtYW5uICA8aGF1
c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAg
IEFkZGVkIGEgd2hvbGUgYnVuY2ggb2YgZG9jcyBmb3IgUVdlYlBhZ2UgYW5kIGZpeGVkIHNvbWUg
bWlub3IgZG9jIGdsaXRjaGVzIGluIFFXZWJWaWV3LgorICAgICAgICAKKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6Cisg
ICAgICAgIChRV2ViUGFnZTo6UVdlYlBhZ2UpOgorICAgICAgICAoUVdlYlBhZ2U6On5RV2ViUGFn
ZSk6CisgICAgICAgIChRV2ViUGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjpj
dXJyZW50RnJhbWUpOgorICAgICAgICAoUVdlYlBhZ2U6Omhpc3RvcnkpOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldFZpZXcpOgorICAgICAgICAoUVdlYlBhZ2U6OnZpZXcpOgorICAgICAgICAoUVdl
YlBhZ2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2
YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uZmlybSk6Cisg
ICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChRV2ViUGFnZTo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFFXZWJQYWdlOjpjcmVhdGVNb2RhbERpYWxvZyk6Cisg
ICAgICAgIChvcGVuTmV3V2luZG93KToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9u
KToKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAoUVdlYlBhZ2U6
Om5hdmlnYXRpb25SZXF1ZXN0ZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OnNlbGVjdGVkVGV4dCk6
CisgICAgICAgIChRV2ViUGFnZTo6aXNNb2RpZmllZCk6CisgICAgICAgIChRV2ViUGFnZTo6Zm9j
dXNOZXh0UHJldkNoaWxkKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXR0aW5ncyk6CisgICAgICAg
IChRV2ViUGFnZTo6bmV0d29ya1Byb3h5KToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXROZXR3b3Jr
QWNjZXNzTWFuYWdlcik6CisgICAgICAgIChRV2ViUGFnZTo6bmV0d29ya0FjY2Vzc01hbmFnZXIp
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpfcV9vbkxvYWRQcm9ncmVzc0NoYW5nZWQpOgor
ICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisKKzIwMDgtMDEtMDcgIEhvbGdlciBGcmV5dGhl
ciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4K
KworICAgICAgICAqIFF0IGFuZCBHdGsgbXVzdCBrbm93IGlmIGEgQ29udGV4dE1lbnVJdGVtIGlz
IGNoZWNrYWJsZS4gQWRkIGEgbmV3IENvbnRleHRNZW51SXRlbVR5cGUgZm9yIGNoZWNrYWJsZQor
ICAgICAgICBhY3Rpb25zLgorICAgICAgICAqIFVzZSB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBH
dGsgcGxhdGZvcm0gdG8gY3JlYXRlIGEgR3RrQ2hlY2tNZW51SXRlbSB3aGVuIG5lZWRlZC4KKyAg
ICAgICAgKiBVcGRhdGUgdGhlIENvbnRleHRNZW51Q29udHJvbGxlciB0byBhY2NlcHQgQ2hlY2th
YmxlQWN0aW9uVHlwZXMgYXMgd2VsbC4KKyAgICAgICAgKiBDaGFuZ2UgQ29udGV4dE1lbnUuY3Bw
IHRvIHVzZSB0aGUgQ2hlY2thYmxlQWN0aW9uVHlwZS4gVGhlIGluZm9ybWF0aW9uIGlmIGEgaXRl
bSBpcyBjaGVja2FibGUKKyAgICAgICAgd2FzIGV4dHJhY3RlZCBmcm9tIENvbnRleHRNZW51Ojpj
aGVja09yRW5hYmxlSWZOZWVkZWQuCisgICAgICAgICogVXBkYXRlIHRoZSBRdCBhbmQgV2luZG93
cyBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6Y3JlYXRlQ29udGV4dE1lbnUpOgorCisyMDA4LTAxLTA3ICBTaW1vbiBIYXVzbWFu
biAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQnVpbGQgZml4IGZvciB0aGUgV2lu
ZG93cyBidWlsZC4gTVNWQyB3YW50cyB0byBzZWUgdGhlIGZ1bGwKKyAgICAgICAgZGVjbGFyYXRp
b24gb2YgYXJndW1lbnRzIGV2ZW4gd2hlbiBqdXN0IHBhc3NpbmcgdGhlbSB0aHJvdWdoLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKworMjAwOC0wMS0wNyAgU2ltb24gSGF1c21hbm4g
IDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAg
ICAgICAgQWRkZWQgdGhlIG1pc3NpbmcgcGFyYW1ldGVycyB0byBtYWtlIGl0IHBvc3NpYmxlIHRv
IGRvIFBPU1Qgb3BlcmF0aW9ucyBmcm9tIHRoZSBwdWJsaWMgQVBJLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBpcyB1Z2x5IHRob3VnaCBhcyBpdCBhbHNvIHJlcXVpcmVzIGluY2x1ZGluZyBxbmV0
d29ya2FjY2Vzc21hbmFnZXIuaC4gSXQgd291bGQgYmUgbmljZXIgaWYgdGhlCisgICAgICAgIHR3
byBleHRyYSBhcmd1bWVudHMgd2VyZSBpbiBRTmV0d29ya1JlcXVlc3QgOi0vCisgICAgICAgIAor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQp
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuY3Bw
OgorICAgICAgICAoUVdlYlZpZXc6OmxvYWQpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgor
CisyMDA4LTAxLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBQb3J0ZWQgb2YgdGhlIG5ldHdvcmsg
YmFja2VuZCBvZiB0aGUgUXQgcGxhdGZvcm0gdG8gUXQgNC40J3MgbmV3IG5ldHdvcmtpbmcgQVBJ
LgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjpsb2FkKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBp
L3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRl
cmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2VfcC5oOgorICAgICAg
ICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBs
dWdpbi5oOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luX3AuaDoKKyAgICAgICAgKiBB
cGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5jcHA6CisgICAgICAgICogQXBpL3F3ZWJvYmpl
Y3RwbHVnaW5jb25uZWN0b3IuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjp+UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bmF2
aWdhdGlvblJlcXVlc3RlZCk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0TmV0d29ya0ludGVyZmFj
ZSk6CisgICAgICAgIChRV2ViUGFnZTo6bmV0d29ya0ludGVyZmFjZSk6CisgICAgICAgIChRV2Vi
UGFnZTo6c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIpOgorICAgICAgICAoUVdlYlBhZ2U6Om5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgICog
QXBpL3F3ZWJ2aWV3Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKworMjAwOC0wMS0wNyAgSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJAdHJvbGx0ZWNoLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAqIE1vdmUgdGhlIFFXZWJQYWdl
UHJpdmF0ZSBtZXRob2RzIHVwIHRvIHRoZSBvdGhlciBwcml2YXRlIG9uZXMKKworICAgICAgICAq
IEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChkcm9wQWN0aW9uVG9EcmFnT3ApOgorICAgICAg
ICAoZHJhZ09wVG9Ecm9wQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6bW91c2VN
b3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVByZXNzRXZlbnQpOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OmNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp3
aGVlbEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UHJlc3NFdmVudCk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZv
Y3VzT3V0RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnRW50ZXJFdmVudCk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyYWdMZWF2ZUV2ZW50KToKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OmRyb3BFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6Zm9jdXNOZXh0UHJldkNoaWxkKToKKwor
MjAwOC0wMS0wNyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJleXRoZXJA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAq
IEFkZCByZWltcGxlbWVudGVkIGNvbW1lbnRzIGZvciB0aGUgbWV0aG9kcyByZWltcGxlbWVudGVk
IGluIFFXZWJWaWV3IGFuZCBRV2ViUGFnZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoZHJhZ09wVG9Ecm9wQWN0aW9uKToKKyAgICAgICAgKiBBcGkv
cXdlYnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAg
ICAgKFFXZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Om1vdXNl
RG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6bW91c2VSZWxlYXNlRXZlbnQp
OgorICAgICAgICAoUVdlYlZpZXc6OmNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdlYlZp
ZXc6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmtleVJlbGVhc2VFdmVudCk6
CisgICAgICAgIChRV2ViVmlldzo6Zm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFFXZWJWaWV3Ojpm
b2N1c091dEV2ZW50KToKKyAgICAgICAgKFFXZWJWaWV3OjpkcmFnRW50ZXJFdmVudCk6CisgICAg
ICAgIChRV2ViVmlldzo6ZHJhZ0xlYXZlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmRyYWdN
b3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmRyb3BFdmVudCk6CisKKzIwMDgtMDEtMDcg
IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICAqIFRoaXMgbGF5b3V0
IGlzIG5vdCBuZWVkZWQgYW55bW9yZSBhcyBXaWRnZXQ6OmludmFsaWRhdGVSZWN0IHdpbGwgbm90
CisgICAgICAgIGRyYXcgYW55bW9yZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnZp
ZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OnBhaW50RXZlbnQpOgorCisyMDA4LTAxLTA0ICBM
YXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uLgorCisgICAgICAgIFJlbW92ZSBtb3N0IGRlcGVuZGVuY2llcyBvZiBXaWRnZXQvU2Nyb2xs
VmlldyBvbnRvIG5hdGl2ZSBRV2lkZ2V0cy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBi
cmluZ3MgdGhlIGNvZGUgY2xvc2VyIGluIGxpbmUgd2l0aCB0aGUgV2luZG93cyBjb2RlLiBTZWVt
cworICAgICAgICB0byB3b3JrIG5pY2VseSBvbiBmaXJzdCB0cnkgOikKKyAgICAgICAgCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudFF0Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0VG9vbFRpcCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDA4LTAxLTA0ICBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogUmVtb3ZlIHRoZSB0b2RvIGZyb20gUVdl
YlBhZ2UgYW5kIG1vdmUgdGhlIGNvZGUgdG8gUVdlYlZpZXcuCisgICAgICAgIAorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6d2hlZWxFdmVu
dCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZvY3VzSW5FdmVudCk6CisgICAgICAgICog
QXBpL3F3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFXZWJWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAg
ICAgKFFXZWJWaWV3Ojpmb2N1c0luRXZlbnQpOgorCisyMDA4LTAxLTA0ICBIb2xnZXIgSGFucyBQ
ZXRlciBGcmV5dGhlciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogTW92ZSB0aGUgdmFyaW91cyBldmVudCBt
ZXRob2RzIHRvIFFXZWJQYWdlUHJpdmF0ZS4gVGhpcyBpcyBzaW1pbGFyIHRvCisgICAgICAgIFFU
ZXh0Q29udHJvbCBhcyB3ZWxsLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZTo6ZXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
Ojptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUHJlc3NF
dmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6Y29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OndoZWVsRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjprZXlQcmVzc0V2
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6Zm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6Zm9jdXNPdXRFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6Zm9jdXNOZXh0UHJldkNo
aWxkKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ0VudGVyRXZlbnQpOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpkcmFnTGVhdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkcm9wRXZl
bnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9w
Lmg6CisKKzIwMDgtMDEtMDQgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZy
ZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAg
ICAgICAgKiBGb3J3YXJkIHRoZSBldmVudCBmcm9tIFFXZWJWaWV3IHRvIFFXZWJQYWdlIHRocm91
Z2ggUU9iamVjdDo6ZXZlbnQuIFRoaXMKKyAgICAgICAgaXMgc2ltaWxhciB0byB0aGUgd2F5IFFU
ZXh0Q29udHJvbCBpcyB3b3JraW5nLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChkcmFnT3BUb0Ryb3BBY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6
OmV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnZp
ZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFX
ZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Om1vdXNlRG91Ymxl
Q2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAg
ICAgICAoUVdlYlZpZXc6OmNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6Ondo
ZWVsRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAo
UVdlYlZpZXc6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6Zm9jdXNJbkV2
ZW50KToKKyAgICAgICAgKFFXZWJWaWV3Ojpmb2N1c091dEV2ZW50KToKKyAgICAgICAgKFFXZWJW
aWV3OjpkcmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRV2ViVmlldzo6ZHJhZ0xlYXZlRXZlbnQp
OgorICAgICAgICAoUVdlYlZpZXc6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlZpZXc6
OmRyb3BFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisKKzIwMDgtMDEtMDQgIExh
cnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgbWFrZSBRV2ViUGFnZSBhIFFPYmplY3QgYW5kIGdldCB0aGluZ3MgdG8g
Y29tcGlsZS4KKyAgICAgICAgCisgICAgICAgIE5vdGhpbmcgd29ya3MgY3VycmVudGx5IHRob3Vn
aC4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0
ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFp
bkZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjpRV2ViUGFnZSk6CisgICAgICAgIChRV2ViUGFn
ZTo6c2V0Vmlldyk6CisgICAgICAgIChRV2ViUGFnZTo6dmlldyk6CisgICAgICAgIChRV2ViUGFn
ZTo6amF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0
KToKKyAgICAgICAgKGRyYWdPcFRvRHJvcEFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6bW91
c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjptb3VzZURvdWJsZUNsaWNrRXZlbnQp
OgorICAgICAgICAoUVdlYlBhZ2U6Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFXZWJQ
YWdlOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjprZXlQcmVzc0V2ZW50KToKKyAg
ICAgICAgKFFXZWJQYWdlOjpmb2N1c0luRXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5o
OgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKFFXZWJWaWV3OjpRV2ViVmlldyk6CisgICAgICAgIChRV2ViVmlldzo6c2V0
UGFnZSk6CisgICAgICAgIChRV2ViVmlldzo6cmVzaXplRXZlbnQpOgorICAgICAgICAoUVdlYlZp
ZXc6OnBhaW50RXZlbnQpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0
OjpwYWdlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Zm9jdXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnVuZm9jdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNhblRha2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjpjYW5SdW5Nb2RhbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRWaWV3OjpJbnNwZWN0b3JDbGllbnRWaWV3KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudFZpZXc6OnBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50Vmlldzo6aGlkZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFZpZXc6OmNsb3NlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6
OmNsb3NlV2luZG93KToKKworMjAwOC0wMS0wNCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQWRkZWQg
c29tZSBwcmVsaW1pbmFyeSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBRV2ViVmlldywgZml4ZWQg
YSBtaXNzaW5nIGNvbnN0KCkgYW5kIHNvbWUgbWlzc2luZyBRX1BST1BFUlRZcworICAgICAgICAK
KworICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAgIChRV2ViVmlldzo6c2V0SHRt
bCk6CisgICAgICAgIChRV2ViVmlldzo6c2V0Q29udGVudCk6CisgICAgICAgIChRV2ViVmlldzo6
aGlzdG9yeSk6CisgICAgICAgIChRV2ViVmlldzo6c2V0dGluZ3MpOgorICAgICAgICAoUVdlYlZp
ZXc6OmFjdGlvbik6CisgICAgICAgIChRV2ViVmlldzo6dHJpZ2dlckFjdGlvbik6CisgICAgICAg
IChRV2ViVmlldzo6c3RvcCk6CisgICAgICAgIChRV2ViVmlldzo6YmFja3dhcmQpOgorICAgICAg
ICAoUVdlYlZpZXc6OmZvcndhcmQpOgorICAgICAgICAoUVdlYlZpZXc6OnJlbG9hZCk6CisgICAg
ICAgICogQXBpL3F3ZWJ2aWV3Lmg6CisKKzIwMDgtMDEtMDQgIExhcnMgS25vbGwgIDxsYXJzQHRy
b2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgYWRk
IGEgdmlld3BvcnRTaXplIHRvIFFXZWJQYWdlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBy
ZXF1aXJlZCB0byBldmVudHVhbGx5IG1ha2UgaXQgYSBRT2JqZWN0IG9ubHkuCisgICAgICAgIAor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2Vy
QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp2aWV3cG9ydFNpemUpOgorICAgICAgICAoUVdl
YlBhZ2U6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIw
MDgtMDEtMDQgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgdGFrZSBhIFFTdHJpbmcgYXMgaWRlbnRpZmllciBp
biBRV2ViRnJhbWU6OmFkZFRvSlNXaW5kb3dPYmplY3QuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KU1dpbmRvd09iamVjdCk6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5oOgorCisyMDA4LTAxLTA0ICBTaW1vbiBIYXVzbWFubiAgPGhh
dXNtYW5uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAg
ICBDYWxsIHRoZSBmcmFtZSBhcmd1bWVudHMgZm9yIHRoZSBqYXZhc2NyaXB0IGNhbGxiYWNrcyAi
b3JpZ2luYXRpbmdGcmFtZSIKKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoK
KworMjAwOC0wMS0wNCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgTW92ZWQgdGhlIFFXZWJQYWdlOjph
ZGRUb0hpc3Rvcnkgc2lnbmFsIGludG8gUVdlYkhpc3RvcnlJbnRlcmZhY2UKKyAgICAgICAgCisK
KyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhp
c3RvcnlGb3JTdGFuZGFyZExvYWQpOgorCisyMDA4LTAxLTA0ICBMYXJzIEtub2xsICA8bGFyc0B0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIG1v
dmVkIHRpdGxlKCksIHVybCgpLCBpY29uKCkgYW5kIGluaXRpYWxMYXlvdXRDb21wbGV0ZSgpIGZy
b20gUVdlYlBhZ2UgdG8gUVdlYkZyYW1lCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6dXJsKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aWNvbik6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnNldFZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5KToKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAg
KFFXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3Jp
cHRQcm9tcHQpOgorICAgICAgICAoUVdlYlBhZ2U6Om5ldHdvcmtJbnRlcmZhY2UpOgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5jcHA6CisgICAgICAg
IChRV2ViVmlldzo6dGl0bGUpOgorICAgICAgICAoUVdlYlZpZXc6OnVybCk6CisgICAgICAgIChR
V2ViVmlldzo6aWNvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisKKzIwMDgtMDEtMDMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIE1vdmVkIFFXZWJQ
YWdlOjpvcGVuIHRvIFFXZWJGcmFtZTo6bG9hZCBhbmQgYWRkZWQgc2V0SHRtbC4KKyAgICAgICAg
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6bG9h
ZCk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldEh0bWwpOgorICAgICAgICAoUVdlYkZyYW1lOjpz
ZXRDb250ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnZpZXcuY3BwOgorICAgICAgICAoUVdlYlZpZXc6OmxvYWQpOgorICAgICAgICAoUVdlYlZpZXc6
OnNldEh0bWwpOgorICAgICAgICAqIEFwaS9xd2Vidmlldy5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQ
YWdlKToKKworMjAwOC0wMS0wMyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQWRkZWQgdGhlIGZpcnN0
IHJldmlzaW9uIG9mIFFXZWJWaWV3IGFuZCBzdGFydGVkIG1vdmluZyBmdW5jdGlvbmFsaXR5IGZy
b20gUVdlYlBhdmUgb3ZlciB0byBRV2ViVmlldyBhbmQgUVdlYkZyYW1lLgorICAgICAgICAKKwor
ICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3Jl
YXRlTWFpbkZyYW1lKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2VoaXN0b3J5Lmg6CisgICAgICAgICogQXBpL3F3ZWJ2aWV3LmNwcDogQWRkZWQuCisg
ICAgICAgIChRV2ViVmlldzo6UVdlYlZpZXcpOgorICAgICAgICAoUVdlYlZpZXc6On5RV2ViVmll
dyk6CisgICAgICAgIChRV2ViVmlldzo6cGFnZSk6CisgICAgICAgIChRV2ViVmlldzo6c2V0UGFn
ZSk6CisgICAgICAgIChRV2ViVmlldzo6bG9hZCk6CisgICAgICAgIChRV2ViVmlldzo6c2V0SHRt
bCk6CisgICAgICAgIChRV2ViVmlldzo6aGlzdG9yeSk6CisgICAgICAgIChRV2ViVmlldzo6c2V0
dGluZ3MpOgorICAgICAgICAoUVdlYlZpZXc6OnRpdGxlKToKKyAgICAgICAgKFFXZWJWaWV3Ojp1
cmwpOgorICAgICAgICAoUVdlYlZpZXc6Omljb24pOgorICAgICAgICAoUVdlYlZpZXc6OnNlbGVj
dGVkVGV4dCk6CisgICAgICAgIChRV2ViVmlldzo6YWN0aW9uKToKKyAgICAgICAgKFFXZWJWaWV3
Ojp0cmlnZ2VyQWN0aW9uKToKKyAgICAgICAgKFFXZWJWaWV3Ojppc01vZGlmaWVkKToKKyAgICAg
ICAgKFFXZWJWaWV3Ojp0ZXh0SW50ZXJhY3Rpb25GbGFncyk6CisgICAgICAgIChRV2ViVmlldzo6
c2V0VGV4dEludGVyYWN0aW9uRmxhZ3MpOgorICAgICAgICAoUVdlYlZpZXc6OnNpemVIaW50KToK
KyAgICAgICAgKFFXZWJWaWV3OjpzdG9wKToKKyAgICAgICAgKFFXZWJWaWV3OjpiYWNrd2FyZCk6
CisgICAgICAgIChRV2ViVmlldzo6Zm9yd2FyZCk6CisgICAgICAgIChRV2ViVmlldzo6cmVsb2Fk
KToKKyAgICAgICAgKiBBcGkvcXdlYnZpZXcuaDogQWRkZWQuCisgICAgICAgICogUXRMYXVuY2hl
ci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAo
TWFpbldpbmRvdzo6d2ViUGFnZSk6CisgICAgICAgIChNYWluV2luZG93OjpjaGFuZ2VMb2NhdGlv
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRGcmFtZSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTEyLTE0ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnRy
aWdnZXJBY3Rpb24pOiBSZW1vdmVkIHNvbWUgdXNlIG9mIEVkaXRvciBtZW1iZXIgZnVuY3Rpb25z
IHdlIHBsYW4KKyAgICAgICAgdG8gZXZlbnR1YWxseSBlbGltaW5hdGUuIFN3aXRjaCBmcm9tIEVk
aXRvcjo6ZXhlY0NvbW1hbmQgdG8gRWRpdG9yOjpjb21tYW5kLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogRGl0dG8uIEFsc28gdXBkYXRlZCBuYW1lIGZyb20K
KyAgICAgICAgTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQgdG8gTW92ZVBhZ2VVcCBhbmQgZnJv
bSBNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNhcmV0CisgICAgICAgIHRvIE1vdmVQYWdlRG93bi4K
KworMjAwNy0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZworCisgICAgICAgIEFzIHBhcnQgb2YgZG9pbmcgc29t
ZSBDYWNoZWRQYWdlIGFuZCBjbGllbnQgY2xlYW51cCwga2VlcCBRdCBidWlsZGluZworCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZyb21DYWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwNy0xMi0xMiAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFnZW50KToKKworMjAwNy0xMi0xMiAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEJ1aWxkIGZpeC4KKworICAgICAgICAqIEFw
aS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0d29ya1JlcXVlc3RQ
cml2YXRlOjppbml0KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2U6OnVybCk6CisgICAgICAgIChRV2ViUGFnZUNvbnRleHQ6OlFXZWJQYWdlQ29udGV4dCk6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5jcHA6CisgICAgICAgIChRV2ViSGlzdG9y
eUl0ZW06Om9yaWdpbmFsVXJsKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6Y3VycmVudFVy
bCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93VVJMRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aW50ZXJydXB0Rm9yUG9s
aWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisKKzIw
MDctMTItMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTM1
NjM2PgorICAgICAgICBIYXZlIHRvIHByZXNzIDQgdGltZXMgaW5zdGVhZCBvZiAyIHRpbWVzIHRv
IGdldCB0aGUgZXhwZWN0ZWQgcmVzdWx0IG9mIF5eIHdpdGggZ2VybWFuIGtleWJvYXJkLgorCisg
ICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTE2CisgICAg
ICAgIEphdmFTY3JpcHQgZGV0ZWN0cyBUYWIgYXMgYSBjaGFyYWN0ZXIgaW5wdXQgb24gYSB0ZXh0
ZmllbGQgdmFsaWRhdGlvbgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUlucHV0TWV0
aG9kS2V5ZG93bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoK
KyAgICAgICAgVXBkYXRlZCBmb3IgY3Jvc3MtcGxhdGZvcm0gY2hhbmdlcyBhcyBtdWNoIGFzIGl0
IHdhcyBwb3NzaWJsZSB3aXRob3V0IGEgUXQgYnVpbGQgZW52aXJvbm1lbnQuCisKKzIwMDctMTIt
MDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIC0gdHJ5IHRvIGZp
eCBidWlsZAorCisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Omhpc3RvcnlDb250YWlucyk6IFRoZXJlJ3MgYSBXZWJDb3JlIGZ1bmN0aW9u
IGhlcmUgaW4gV2ViS2l0ISBOZWVkcyB0bworICAgICAgICBiZSB1cGRhdGVkLCBzaW5jZSBXZWJD
b3JlIGNoYW5nZWQsIGJ1dCB0aGlzIHNob3VsZCBub3QgYmUgaGVyZS4KKworMjAwNy0xMi0wNCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2V2
aW4gRGVja2VyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6IFJlbW92ZWQgb2Jzb2xldGUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6IERpdHRvLgorCisyMDA3LTEy
LTA0ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVj
aC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBJbXBsZW1l
bnQgdGhlIEluc3BlY3RvckNsaWVudCBmb3IgdGhlIFF0IHBvcnQKKyAgICAgICAgKiBJdCBkb2Vz
IG5vdCBzdXBwb3J0IGhpZ2hsaWdodGluZyBvZiBub2RlcyB5ZXQKKyAgICAgICAgKiBVc2UgUVJD
IHRvIG9wZW4gdGhlIGludGVybmFsIHBhZ2UuIFRoZSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhlCisg
ICAgICAgICcvJyBpbiB0aGUgVVJMIHRvIG1ha2UgV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbXBsZXRl
VVJMIGJlaGF2ZSB0aGUKKyAgICAgICAgd2F5IHdlIHdhbnQuCisgICAgICAgICogVG8gbWFrZSB0
aGUgSW5zcGVjdG9yQ2xpZW50IHdvcmsgd2Ugd2lsbCBoYXZlIHRvIG1hcmsgcXJjIGFzIHNlY3Vy
ZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6aGlkZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpJbnNwZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpzaG93V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnRRdDo6YXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0Lmg6CisKKzIwMDctMTItMDMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9s
Z2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkg
TWFyay4KKworICAgICAgICBBbHdheXMgaW5jbHVkZSBjb25maWcuaCBhdCB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBmaWxlLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisKKzIwMDct
MTItMDMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBBdm9p
ZCBjcmFzaGVzIGJ5IG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgaXMgbGF5b3V0ZWQgYmVmb3JlCisg
ICAgICAgIHdlIHN0YXJ0IHBhaW50aW5nLiBUaGlzIGF2b2lkcyBhIGNyYXNoIGluIFdpZGdldDo6
aW52YWxpZGF0ZVJlY3QKKyAgICAgICAgYmVjYXVzZSBRUGFpbnRlcjo6YmVnaW4gd291bGQgZmFp
bAorICAgICAgICAqIFRoZSBRV2ViRnJhbWU6OmxheW91dCgpIG1ldGhvZHMgYW5kIGNhbGxzIGFy
ZSBsZWZ0IHVudG91Y2hlZCBiZWNhdXNlCisgICAgICAgIHRoaXMgd291bGQgYmUgYW4gQVBJIGRl
Y2lzaW9uLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lOjpsYXlvdXQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgIChRV2ViUGFnZTo6cGFpbnRFdmVudCk6CisKKzIwMDctMTItMDMgIEhvbGdlciBIYW5zIFBl
dGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBTdWJDbGFzcyBRV2ViUGFnZSB0byBoYW5k
bGUgaGlkZSBhbmQgY2xvc2UgZXZlbnRzLgorICAgICAgICAqIEZvcndhcmQgdGhlc2UgZXZlbnRz
IHRvIHRoZSBJbnNwZWN0b3JDb250cm9sbGVyCisgICAgICAgICogVGhlIG90aGVyIG9wdGlvbnMg
d291bGQgaGF2ZSBiZWVuIHVzaW5nIGFuIGV2ZW50RmlsdGVyCisgICAgICAgIG9uIHRoZSB3ZWJw
YWdlIGFuZCBtYWtpbmcgSW5zcGVjdG9yQ2xpZW50IGEgUU9iamVjdCBvcgorICAgICAgICBjcmVh
dGluZyBhIFFPYmplY3QgT2JzZXJ2ZXIuCisgICAgICAgICogUHJvdmlkZSBhIHNpbXBsZSBRV2Vi
UGFnZSogY3JlYXRlV2luZG93IGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIG5lZWRlZAorICAgICAg
ICB0byBtYWtlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSBzdG9wIGNy
YXNoaW5nIGluIHRoZSBjYXNlCisgICAgICAgIG9mIHRoZSBpbnNwZWN0b3IgY2xpZW50LgorICAg
ICAgICAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6Okluc3BlY3RvckNsaWVu
dFdlYlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6Omhp
ZGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXZWJQYWdlOjpjbG9z
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdl
KToKKworMjAwNy0xMi0wMyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJl
eXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAg
ICAgICAqIEFsbG93IGFkZGluZyB0aGUgSW5zcGVjdCBDb250ZXh0TWVudUl0ZW0gdG8gb3VyIE1l
bnUKKyAgICAgICAgKiBPcGVuIHRoZSBJbnNwZWN0b3Igd2hlbiBJbnNwZWN0IHdhcyBhY3RpdmF0
ZWQuIFRoaXMgcmVxdWlyZXMKKyAgICAgICAgdGhhdCB3ZSBrZWVwIHRoZSBpbm5lck5vblNoYXJl
ZE5vZGUgZnJvbSB0aGUgSGl0VGVzdCBhcm91bmQuIFRoaXMKKyAgICAgICAgZm9yY2VzIHVzIHRv
IGluY2x1ZGUgPHd0Zi9SZWZQdHIuaD4gaW4gdGhlIHByaXZhdGUgaGVhZGVyLiBJdCBpcworICAg
ICAgICB0aGUgZmlyc3Qgbm9uIFF0IGhlYWRlciBidXQgc2hvdWxkIGJlIG9rYXkuCisgICAgICAg
IAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHdlYkFjdGlvbkZvckNv
bnRleHRNZW51QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKToKKyAg
ICAgICAgKFFXZWJQYWdlOjphY3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2VDb250ZXh0OjpRV2Vi
UGFnZUNvbnRleHQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9x
d2VicGFnZV9wLmg6CisKKzIwMDctMTItMDMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgKiBBZGQgdGhlIERldmVsb3BlciBFeHRyYXMgdG8gdGhlIFdlYkF0dHJp
YnV0ZSBhbmQgcHJvcGFnYXRlIGl0CisgICAgICAgIHRvIFdlYkNvcmU6OlNldHRpbmdzLiBUaGlz
IHdpbGwgZW5hYmxlIHRoZSBJbnNwZWN0IEVsZW1lbnQgbWVudSBpdGVtCisgICAgICAgICogQ29k
aW5nU3R5bGUgZml4ZXMgaW4gUVdlYlNldHRpbmdzCisgICAgICAgICogRW5hYmxlIHRoZSBEZXZl
bG9wZXIgRXh0cmFzIGluIHRoZSBRdExhdW5jaGVyCisgICAgICAgIAorCisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6
CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICAqIFF0TGF1bmNoZXIvbWFp
bi5jcHA6CisgICAgICAgIChtYWluKToKKworMjAwNy0xMi0wMyAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgYW5kIHBvc3Np
Ymx5IGluY29ycmVjdCAjaW5jbHVkZSBmcm9tIG15IGxhc3QgCisgICAgICAgIGNoZWNrLWluLgor
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisKKzIwMDctMTItMDMgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBRdCBidWlsZCBmaXg6IEdldCBnbG9i
YWxFeGVjKCkgZnJvbSB0aGUgcmlnaHQgcGxhY2UuCisKKzIwMDctMTEtMzAgIEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgKiBTZWxmIGRlc3RydWN0IHRoZSBjbGll
bnRzIGxpa2UgdGhlIG9odGVyIHBvcnRzIGRvCisgICAgICAgIAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgor
CisyMDA3LTExLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBLZWVwIGl0IGJ1aWxkaW5nIHdpdGggbmV3IGNsaWVudCBtZXRob2QKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjpyZXF1ZXN0UXVvdGFJbmNyZWFzZUZvck5ld0RhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpyZXF1ZXN0UXVvdGFJbmNyZWFzZUZvckRhdGFiYXNl
T3BlcmF0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgor
CisyMDA3LTExLTIyICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBUcmVhdC4KKworICAgICAgICBGaXggY29tcGlsYXRpb24g
KGRvbid0IGRlZmluZSBub3RJbXBsZW1lbnRlZCB0d2ljZSkKKworICAgICAgICAqIEFwaS9xd2Vi
bmV0d29ya2ludGVyZmFjZS5jcHA6CisKKzIwMDctMTEtMjIgIFNpbW9uIEhhdXNtYW5uICA8aGF1
c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UuCisKKyAgICAgICAg
VXNlIFFfU0lHTkFMUy9RX1NMT1RTIGluIHRoZSBwdWJsaWMgQVBJCisKKyAgICAgICAgKiBBcGkv
cXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMjIgIFNp
bW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBH
ZW9yZ2UuCisKKyAgICAgICAgRml4ZWQgdGhlIHNpZ25hdHVyZSBvZiB0aGUgUVdlYlBhZ2UgY29u
c3RydWN0b3IgdG8gZm9sbG93IFF0IGd1aWRlbGluZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuaDoKKworMjAwNy0xMS0yMiAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZS4KKworICAgICAgICBVc2UgPFF0TW9kdWxlL2hl
YWRlcmZpbGUuaD4gaW5zdGVhZCBvZiA8Q2xhc3NuYW1lPiBpbiBwdWJsaWMgSEVBREVSIGZpbGVz
LCB0byBub3QgcmVxdWlyZSB0aGUgaW5jbHVkZSBwYXRocyBmb3IgdGhlIG90aGVyIG1vZHVsZXMg
dG8gYmUgcHJlc2VudAorCisgICAgICAgICogQXBpL3Fjb29raWVqYXIuaDoKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmg6Cisg
ICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisgICAgICAgICogQXBpL3F3ZWJv
YmplY3RwbHVnaW4uaDoKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbl9wLmg6CisgICAg
ICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0b3J5Lmg6CisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5oOgorCisyMDA3LTExLTIyICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5u
QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlLgorCisgICAgICAgIFJlbW92
ZWQgaW5saW5lIGNvcHkgb2YgUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlci4gVGhpcyBpcyBu
b3QgbmVlZGVkIGFueW1vcmUgc2luY2Ugd2UgcmVxdWlyZSBRdCA+PSA0LjMuMC4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZWhpc3RvcnkuaDoKKworMjAwNy0xMS0yMiAgR2VvcmdlIFN0YWlrb3Mg
IDxzdGFpa29zQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4g
PGhhdXNtYW5uQGtkZS5vcmc+LgorCisgICAgICAgIEZpeCBsaWNlbnNlIGhlYWRlcnMKKyAgICAg
ICAgCisKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbi5jcHA6CisgICAgICAgICogQXBp
L3F3ZWJvYmplY3RwbHVnaW4uaDoKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5l
Y3Rvci5jcHA6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuaDoKKwor
MjAwNy0xMS0yMiAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+LgorCisgICAgICAg
IEZpeCBzaGFkb3dpbmcgb2YgInBhZ2UiIHZhcmlhYmxlIHRoYXQgaXMgcGFzc2VkIGFzIGFyZ3Vt
ZW50IGFzIHdlbGwgYXMgYSBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIAorICAgICAgICBUaGlz
IGFsc28gZml4ZXMgY29tcGlsYXRpb24gd2l0aCBnY2MgNC4zLgorICAgICAgICAKKworICAgICAg
ICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdCk6
CisKKzIwMDctMTEtMjEgIEFkYW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICAqIENvbm5lY3QgdXAgdGhl
IHNpZ25hbCBmb3IgYWxsIHN1YmZyYW1lcyB0b28uCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
LmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZU1haW5GcmFtZSk6
CisKKzIwMDctMTEtMjAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIFRyZWF0IDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4u
CisKKyAgICAgICAgUmVtb3ZlIHN0YXRpYyBsaW5rYWdlIG9mIFF0V2ViS2l0IGFnYWluc3QgdGhl
IElDTyBpbWFnZSBmb3JtYXQgcGx1Z2luLgorICAgICAgICAKKyAgICAgICAgSW5zdGVhZCBidWls
ZCB0aGUgc3VwcG9ydCBmb3IgdGhlIElDTyBpbWFnZSBmb3JtYXQgYXMgYSBwcm9wZXIgc3RhbmRh
bG9uZSBxdCBpbWFnZSBmb3JtYXQgcGx1Z2luIGFuZCBpbnN0YWxsIGl0LgorICAgICAgICAKKwor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2lucy5wcm86CisKKzIwMDctMTEtMjAgIFNpbW9uIEhhdXNt
YW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3Rh
aWtvcyA8c3RhaWtvc0BrZGUub3JnPi4KKworICAgICAgICBBZGRlZCBhIGRlZmF1bHQgYXJndW1l
bnQgdG8gdGV4dENvbnRlbnQgZm9yIHRoZSBob3ZlcmluZ092ZXJMaW5rIHNpZ25hbCB0byBrZWVw
IGV4aXN0aW5nIHR3by1hcmd1bWVudCBjb25uZWN0aW9ucyB3b3JraW5nCisgICAgICAgIAorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMjAgIEdlb3JnZSBTdGFpa29zICA8
c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uIDxo
YXVzbWFubkBrZGUub3JnPi4KKworICAgICAgICBBZGQgYW4gYXJndW1lbnQgdG8gcGFzcyB0aGUg
bGluayB0ZXh0IGluIHRoZSBob3ZlcmluZyBzaWduYWwKKyAgICAgICAgCisKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjptb3Vz
ZU1vdmVFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMjAgIEFk
YW0gVHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBhbmQgR2VvcmdlLgorCisgICAgICAgICogQmUgcXVpZXQgYW5kIGFsbG93IHN1
cHByZXNzaW9uIG9mIE5vdEltcGxlbWVudGVkIGNhbGxzIGF0IHJ1bnRpbWUuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1l
KToKKworMjAwNy0xMS0xOSAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogRG9uJ3Qgc2VnZmF1
bHQgd2hlbiBldmVudCBwb3MgaXMgb3V0c2lkZSBvZiB0aGUgd2lkZ2V0LgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjptb3VzZU1vdmVFdmVudCk6Cisg
ICAgICAgIChRV2ViUGFnZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpt
b3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6Om1vdXNlUmVsZWFzZUV2
ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpjb250ZXh0TWVudUV2ZW50KToKKworMjAwNy0xMS0x
NyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTWFyayBSb3dlLgorCisgICAgICAgIEJ1ZyAxMzQ3MDogaTE4bjogVGhlIFdlYiBJbnNw
ZWN0b3IgaXMgbm90IGxvY2FsaXphYmxlCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNDcwCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6bG9j
YWxpemVkU3RyaW5nc1VSTCk6IEVtcHR5IHN0dWIuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuaDogQWRkZWQgbG9jYWxpemVkU3RyaW5nc1VSTC4KKworMjAwNy0x
MS0xMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIEJ1aWxk
IGZpeDogY2hhbmdlZCBTaGFyZWQgdG8gUmVmQ291bnRlZC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVD
bGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTEx
LTEwICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTmlrb2xhcy4KKworICAgICAgICBXaGVuIHBvcHVsYXRpbmcgdGhlIGNvbnRleHQgbWVu
dSB3aXRoIHN1Yi1tZW51cyBkb24ndCBhZGQgc3ViLW1lbnVzIGlmIHRoZXkncmUgZW1wdHkuCisg
ICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6Y3JlYXRlQ29udGV4dE1lbnUpOgorCisyMDA3LTExLTEwICBTaW1vbiBIYXVzbWFu
biAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcy4KKwor
ICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgQm9sZC9JdGFsaWMvVW5kZXJsaW5lIHRvZ2ds
ZSBhY3Rpb25zLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAg
ICAgICh3ZWJBY3Rpb25Gb3JDb250ZXh0TWVudUFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6
dHJpZ2dlckFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6YWN0aW9uKToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDoKKworMjAwNy0xMS0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBr
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMuCisKKyAgICAgICAgQmVmb3Jl
IGFkZGluZyBhbiBhY3Rpb24gdG8gdGhlIGNvbnRleHQgbWVudSBjYWxsIGNoZWNrT3JFbmFibGVJ
Zk5lZWRlZCBmb3IgZWFjaCBhY3Rpb24KKyAgICAgICAgdG8gdXBkYXRlIHRoZSBlbmFibGUvY2hl
Y2tlZCBzdGF0ZSBjb3JyZWN0bHkuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlQ29udGV4dE1lbnUpOgorICAg
ICAgICAoUVdlYlBhZ2U6OmNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZV9wLmg6CisKKzIwMDctMTEtMTAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzLgorCisgICAgICAgIE1hcmsgdGhlIHRleHQg
ZGlyZWN0aW9uIGFjdGlvbnMgYXMgY2hlY2thYmxlIGFjdGlvbnMuCisgICAgICAgIAorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjphY3Rpb24pOgorCisy
MDA3LTExLTA5ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSG9sZ2VyLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSB3ZWJjb3JlIGFj
dGlvbnMgZm9yIGNoYW5naW5nIHRoZSB0ZXh0IGRpcmVjdGlvbi4KKyAgICAgICAgCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAod2ViQWN0aW9uRm9yQ29udGV4dE1lbnVB
Y3Rpb24pOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgorICAgICAgICAoUVdl
YlBhZ2U6OmFjdGlvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMDkg
IFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBIb2xnZXIuCisKKyAgICAgICAgRml4IENvbnRleHRNZW51IGFsbG9jYXRpb24gaW4gdGhlIFF0
IHBvcnQuCisgICAgICAgIAorICAgICAgICBTdG9yZSBhbGwgaXRlbXMgYW5kIHN1Ym1lbnVzIHZh
bHVlIGJhc2VkIGluIENvbnRleHRNZW51IGFuZCBDb250ZXh0TWVudUl0ZW0uCisgICAgICAgIFRo
YXQgZml4ZXMgdGhlIGNyYXNoZXMgd2hlbiB0aGUgY29udGV4dCBtZW51IHdhcyBwb3B1bGF0ZWQg
d2l0aCBzdWItbWVudXMgYmVjYXVzZQorICAgICAgICBvZiB0aGUgdXNlIG9mIHRlbXBvcmFyeSBD
b250ZXh0TWVudSBvYmplY3RzIGxpa2UgdGhpczoKKyAgICAgICAgCisgICAgICAgIENvbnRleHRN
ZW51IHN1Yk1lbnUoLi4uKTsKKyAgICAgICAgc3ViTWVudS5hcHBlbmRJdGVtKC4uLik7CisgICAg
ICAgIHN1Yk1lbnUuYXBwZW5kSXRlbSguLi4pOworICAgICAgICAKKyAgICAgICAgc3ViTWVudUl0
ZW0uc2V0U3ViTWVudSgmc3ViTWVudSk7IC8vIHRlbXBvcmFyeSBwb2ludGVyLCBuZWVkIHRvIF9j
b3B5XyBjb250ZW50cworICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZTo6Y29udGV4dE1lbnVFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlX3AuaDoKKworMjAwNy0xMS0wOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlci4KKworICAgICAgICBSZW5hbWVkIFFXZWJQ
YWdlOjpOdW1XZWJBY3Rpb25zIHRvIFFXZWJQYWdlOjpXZWJBY3Rpb25Db3VudCAoZm9yIGNvbnNp
c3RlbmN5KSBhbmQgZml4ZWQgaXRzIHZhbHVlLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9x
d2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMDctMTEtMDggIEtl
dmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtLgorCisgICAgICAgIC0gd2luZG93T2JqZWN0Q2xlYXJlZCgpIGlzIG5vIGxvbmdl
ciBjb25zdC4gIEl0IG5lZWRzIHRvIHNldHVwIHRoZQorICAgICAgICBzY3JpcHQgZGVidWdnZXIg
YW5kIGNhbm5vdCBiZSBjb25zdCB0byBkbyBzby4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6d2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTExLTA4ICBTaW1vbiBIYXVzbWFubiAgPGhh
dXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgbm9ib2R5ICh3ZWxsLCBIb2xn
ZXIga25vd3MgYWJvdXQgaXQpLCBidWlsZCBmaXggZm9yIFF0IDQuMy4KKworICAgICAgICBUaGUg
YnVpbGRib3RzIHVzZSBRdCA0LjQgd2hpY2ggaGFzIHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiwg
YnV0IFF0CisgICAgICAgIDQuMyBkb2Vzbid0IGhhdmUgaXQuIFVzZSByZW1vdmVBbGwoKSBhcyBy
ZXBsYWNlbWVudCBpbnN0ZWFkLCBpdAorICAgICAgICBzaG91bGRuJ3QgbWFrZSBhIGRpZmZlcmVu
Y2UgaW4gcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFFXZWJTZXR0aW5nczo6flFXZWJTZXR0aW5ncyk6CisKKzIwMDctMTEtMDggIEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyICA8aG9sZ2VyLmZyZXl0aGVyQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPi4KKwor
ICAgICAgICBDbGVhbnVwIGNoZWNraW5nIGZvciB0aGUgcmVxdWVzdCBtZXRob2QuCisgICAgICAg
IAorICAgICAgICAqIENoZWNrIHRoZSByZXF1ZXN0IG1ldGhvZCBvbmx5IGluIFFXZWJOZXR3b3Jr
TWFuYWdlcjo6YWRkLgorICAgICAgICAqIEN1cnJlbnRseSBIRUFELCBHRVQsIFBPU1QgYXJlIGFs
bG93ZWQgYW5kIGZvciBldmVyeXRoaW5nIGVsc2UKKyAgICAgICAgUVdlYk5ldHdvcmtNYW5hZ2Vy
OjphZGQgcmV0dXJucyBmYWxzZS4KKyAgICAgICAgKiBSZXR1cm5pbmcgZmFsc2UgaXMgY29tcGF0
aWJsZSB3aXRoIFJlc291cmNlSGFuZGxlOjpzdGFydCBhbmQgaXQKKyAgICAgICAgY2FuIGJlIHVz
ZWQgaW4gUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkgdG8gZ2VuZXJh
dGUKKyAgICAgICAgYSBSZXNvdXJjZUVycm9yCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3
ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6YWRk
KToKKworMjAwNy0xMS0wOCAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDxob2xnZXIuZnJl
eXRoZXJAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzIEtub2xsIDxs
YXJzQHRyb2xsdGVjaC5jb20+LgorCisgICAgICAgIEZpeCBidWcgaW4gdGhlIGltcGxlbWVudGF0
aW9uIG9mIHN5bmNocm9ub3VzIG5ldHdvcmsgam9icy4KKyAgICAgICAgCisgICAgICAgICogR2Vv
cmdlIChwbWF4KSByZXZpZXdlZCB0aGUgbmV0d29ya2luZyBwYXRjaGVzIGFuZCBmb3VuZCB0aGUg
Zm9sbG93aW5nIGJ1ZyAodGhhbmtzIGZvciByZXZpZXdpbmcpCisgICAgICAgIC0gICAgaWYgKGpv
Yk1vZGUgPT0gQXN5bmNocm9ub3VzSm9iKSB7CisgICAgICAgICsgICAgaWYgKGpvYk1vZGUgPT0g
U3luY2hyb25vdXNKb2IpIHsKKyAgICAgICAgYWRkIGpvYiB0byBzeW5jaHJvbm91cyBsaXN0L2hh
c2gKKyAgICAgICAgCisgICAgICAgICogSnVzdCBhcHBseWluZyB0aGUgYWJvdmUgY2hhbmdlIHdp
bGwgbGVhZCB0byBjcmFzaGVzIGJlY2F1c2Ugd2UgY2FuIGZpbmlzaAorICAgICAgICBqb2JzIGJl
Zm9yZSB3ZSBzdGFydGVkIHRoZW0uCisgICAgICAgIAorICAgICAgICAqIEF2b2lkIHRoZXNlIGlz
c3VlcyBieSBzYXZpbmcgYWxsIHdvcmsgKHN0YXJ0aW5nIGEgam9iLCBzZW5kaW5nIGRhdGEgYW5k
CisgICAgICAgIGZpbmlzaGluZyBpdCkgaW5zaWRlIG9uZSBsaXN0LiBKb2JXb3JrIHdpbGwgY29u
dGFpbiBhbnkKKyAgICAgICAgb2YgdGhlIGFib3ZlIHRocmVlIHdvcmsgdHlwZXMgYW5kIGRvV29y
ayB3aWxsIGp1c3Qgd29yayBvbiB0aGlzIGxpc3QKKyAgICAgICAgKG1fcGVuZGluZ1dvcmspLiBB
cyBmb3JlYWNoIHRha2VzIGEgY29weSBvZiB0aGUgbGlzdCBjYWxsaW5nIHN0YXJ0ZWQsIGRhdGEK
KyAgICAgICAgYW5kIGZpbmlzaGVkIHdpbGwgbm90IGFkZCBuZXcgd29yayBhbmQgd2UgZ3VyYW50
ZWUgdGhhdCBpZiB3ZSBoYXZlIEpvYlN0YXJ0ZWQKKyAgICAgICAgaXQgd2lsbCBiZSBpbiB0aGUg
bGlzdCBiZWZvcmUgSm9iRGF0YSBhbmQgSm9iRmluaXNoZWQuCisgICAgICAgIAorICAgICAgICAq
IE9ic2VydmF0aW9uOiBXZSBtaWdodCBqdXN0IGtpbGwgdGhlIGNvZGUgdG8gaGFuZGxlIHN5bmMg
am9icy4KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjphZGQpOgorICAgICAgICAoUVdlYk5ldHdv
cmtNYW5hZ2VyOjpxdWV1ZVN0YXJ0KToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6cXVl
dWVEYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6cXVldWVGaW5pc2hlZCk6Cisg
ICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmRvV29yayk6CisgICAgICAgICogQXBpL3F3ZWJu
ZXR3b3JraW50ZXJmYWNlX3AuaDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6Sm9iV29y
azo6KToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6Sm9iV29yazo6Sm9iV29yayk6CisK
KzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAg
ICBGaXggdGhlIFF0IGJ1aWxkIGJ5IHNldHRpbmcgdXAgV2luZG93RmVhdHVyZXMgYmVmb3JlIGNh
bGxpbmcKKyAgICAgICAgY3JlYXRlV2luZG93IG9uIHRoZSBDaHJvbWUuIFRoaXMgaXMgc2ltaWxh
ciB0byBvcGVuTmV3V2luZG93IGluCisgICAgICAgIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcAorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKG9wZW5OZXdXaW5k
b3cpOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBNYWtlIHRoZSBzZXR0aW5nIG9m
IGxldHRpbmcgSmF2YXNjcmlwdCBhY2Nlc3MgdGhlIGNsaXBib2FyZCBjb25maWd1cmFibGUgdGhy
b3VnaCBRV2ViU2V0dGluZ3MsIHR1cm4gaXQgb2ZmIGJ5IGRlZmF1bHQgYW5kIHR1cm4gaXQgb24g
aW4gRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAg
ICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4g
IDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAg
ICAgQ2hhbmdlZCBRV2ViUGFnZUhpc3Rvcnk6OmdvVG9JdGVtIHRvIHRha2UgYSB2YWx1ZSBpbnN0
ZWFkIG9mIGEgcG9pbnRlci4KKworICAgICAgICAqIEFwaS9xd2VicGFnZWhpc3RvcnkuY3BwOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZWhpc3RvcnkuaDoKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1
c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisK
KyAgICAgICAgUmVtb3ZlZCB1bmltcGxlbWVudGVkIFFXZWJIaXN0b3J5SXRlbTo6Y2hpbGRyZW4o
KSBmdW5jdGlvbgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5oOgorCisyMDA3LTEx
LTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTGFycy4KKworICAgICAgICBDaGFuZ2VkIHRoZSBnZXR0ZXIgZnVuY3Rpb25zIGluIFFX
ZWJTZXR0aW5ncyB0byB0cmFuc3BhcmVudGx5IHJlc29sdmUgYWdhaW5zdCB0aGUgZGVmYXVsdCBz
ZXR0aW5ncy4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjpmb250U2l6ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OmZvbnRGYW1pbHkp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjp0ZXN0QXR0cmlidXRlKToKKworMjAwNy0xMS0wNyAg
U2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IExhcnMuCisKKyAgICAgICAgQWRkZWQgZXhwbGljaXQgZnVuY3Rpb25zIGZvciByZXNldHRpbmcg
dGhlIGZvbnQgc2l6ZXMgYW5kIGZvbnQgZmFtaWxpZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6cmVzZXRGb250U2l6ZSk6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6OnJlc2V0Rm9udEZhbWlseSk6CisgICAgICAgICogQXBpL3F3ZWJz
ZXR0aW5ncy5oOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBDb21iaW5lZCB0aGUg
Zm9udCBzaXplcyBhY2Nlc3NvcnMvc2V0dGVycyB1bmRlciBvbmUgc2V0dGVyL2dldHRlciB3aXRo
IGFuIGVudW0uCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFX
ZWJTZXR0aW5nc1ByaXZhdGU6OlFXZWJTZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzUHJpdmF0ZTo6YXBwbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGlu
Z3MpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRGb250U2l6ZSk6CisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5oOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5u
QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBSZW5hbWVk
IFFXZWJQYWdlOjp1c2VyQWdlbnRTdHJpbmdGb3JVcmwodXJsKSB0byBRV2ViUGFnZTo6dXNlckFn
ZW50Rm9yKHVybCk7CisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFnZW50
KToKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgUmVuYW1lZCBRV2ViUGFnZTo6d2Vi
QWN0aW9uVHJpZ2dlcmVkIHRvIFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpfcV93ZWJBY3Rpb25U
cmlnZ2VyZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZS5oOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5u
QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBDaGFuZ2Vk
IHRoZSB2aXJ0dWFsIFFXZWJQYWdlOjpzZXRXaW5kb3dHZW9tZXRyeSB0byBiZSBhIGdlb21ldHJ5
Q2hhbmdlUmVxdWVzdCBzaWduYWwgaW5zdGVhZC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNl
dFdpbmRvd1JlY3QpOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtk
ZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBSZW5hbWVkIFFX
ZWJQYWdlOjp3ZWJBY3Rpb24oKSB0byBRV2ViUGFnZTo6YWN0aW9uKCkKKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRN
ZW51KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBRdExhdW5jaGVyL21h
aW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisKKzIwMDctMTEtMDcg
IFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBMYXJzLgorCisgICAgICAgIFJlbW92ZWQgYSBidW5jaCBvZiBzbG90cy9mdW5jdGlvbnMgdGhh
dCBhcmUgbm93IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBuZXcgYWN0aW9ucyBBUEkuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorCisyMDA3
LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBBZGRlZCBzb21lIG1vcmUgY29tbWVudHMgdG8gdGhl
IEFQSSBhZnRlciBhbm90aGVyIHJvdW5kIG9mIEFQSSByZXZpZXcgd2l0aCBMYXJzLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1
c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIE1v
dmVkIFFXZWJGcmFtZTo6c2VsZWN0ZWRUZXh0KCkgdG8gUVdlYlBhZ2U6OnNlbGVjdGVkVGV4dCgp
LgorICAgICAgICAKKyAgICAgICAgVGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IGlzIGEgcHJv
cGVydHkgb2YgdGhlIHBhZ2UgYXMgYSB3aG9sZS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnNlbGVjdGVkVGV4dCk6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEltcGxlbWVudGVkIHN1
cHBvcnQgZm9yIHNldHRpbmdzIHByb3BhZ2F0aW9uLgorICAgICAgICAKKyAgICAgICAgSWYgYW4g
aW5kaXZpZHVhbCBzZXR0aW5nIGlzIG5vdCBzZXQgaW4gYSBwYWdlJ3MgUVdlYlNldHRpbmdzIHRo
ZW4gaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGRlZmF1bHQgc2V0dGluZ3MuCisKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OlFX
ZWJTZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkp
OgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjp+UVdlYlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0Rm9udEZh
bWlseSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCisyMDA3LTExLTA3ICBTaW1v
biBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFy
cy4KKworICAgICAgICBSZXdvcmtlZCB0aGUgUVdlYlNldHRpbmdzIEFQSS4KKyAgICAgICAgUVdl
YlBhZ2Ugbm93IHJldHVybnMgYSBwb2ludGVyIHRvIGl0cyBtdXRhYmxlIFFXZWJTZXR0aW5ncyBv
YmplY3QgYW5kIHRoZSBzZXR0aW5ncyBvZiBuZXdseSBjcmVhdGVkIFFXZWJQYWdlT2JqZWN0cyBh
cmUgaW5pdGlhbGl6ZWQgZnJvbSBRV2ViU2V0dGluZ3M6OmRlZmF1bHRTZXR0aW5ncygpLgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdl
YlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0
ZSk6CisgICAgICAgIChRV2ViUGFnZTo6UVdlYlBhZ2UpOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0
aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjpRV2ViU2V0dGluZ3NQcml2
YXRlKToKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFX
ZWJTZXR0aW5nczo6ZGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdl
YlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0TWluaW11bUZvbnRTaXplKToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSk6CisgICAg
ICAgIChRV2ViU2V0dGluZ3M6OnNldERlZmF1bHRGb250U2l6ZSk6CisgICAgICAgIChRV2ViU2V0
dGluZ3M6OnNldERlZmF1bHRGaXhlZEZvbnRTaXplKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldEZv
bnRGYW1pbHkpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpmb250RmFtaWx5KToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
Lmg6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorCisy
MDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBNYWRlIHRoZSBRV2ViU2V0dGluZ3M6OndlYkdy
YXBoaWMgZnVuY3Rpb25zIHN0YXRpYy4gVGhlIGltcGxlbWVudGF0aW9uIHdhcyB1c2luZyBRV2Vi
U2V0dGluZ3M6Omdsb2JhbCgpIGFueXdheS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKToKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21h
bm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIE1vdmVk
IHRoZSBXZWJDb3JlOjpJbWFnZSBzcGVjaWZpYyBmdW5jdGlvbiBsb2FkUmVzb3VyY2VQaXhtYXAg
ZnJvbSBxd2Vic2V0dGluZ3MuY3BwIHRvIEltYWdlUXQuY3BwIGFuZCBtYWRlIGl0IHN0YXRpYy4K
KworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorCisyMDA3LTExLTA3ICBTaW1vbiBI
YXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4K
KworICAgICAgICBDaGFuZ2VkIHRoZSBpY29uZGF0YWJhc2UgYWNjZXNzb3IgdG8gYmUgYSBzdGF0
aWMgZnVuY3Rpb24gYmVjYXVzZSBpdCBkb2Vzbid0IGNoYW5nZSB0aGUgUVdlYlNldHRpbmdzIG9i
amVjdC4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAqIEFwaS9x
d2Vic2V0dGluZ3MuaDoKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBr
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQ2hhbmdlZCB0
aGUgd2ViQWN0aW9uKCkgYWNjZXNzb3IgdG8gbm90IGJlIGEgc2xvdCBidXQganVzdCBhIHB1Ymxp
YyBmdW5jdGlvbi4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorCisyMDA3LTExLTA3ICBT
aW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TGFycy4KKworICAgICAgICBJbXBsZW1lbnRlZCBjcmVhdGVXaW5kb3coKSBpbiBRdExhdW5jaGVy
LgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKFdlYlBhZ2U6Oldl
YlBhZ2UpOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAgICAgIChXZWJQ
YWdlOjpjcmVhdGVXaW5kb3cpOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNt
YW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBJbXBs
ZW1lbnRlZCBvcGVuaW5nIGxpbmtzIGluIG5ldyB3aW5kb3dzCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoZnJhbWVMb2FkUmVxdWVzdCk6CisgICAgICAgIChvcGVuTmV3
V2luZG93KToKKyAgICAgICAgKFFXZWJQYWdlOjp3ZWJBY3Rpb25UcmlnZ2VyZWQpOgorCisyMDA3
LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBBZGRlZCBhbmQgaW1wbGVtZW50ZWQgdGhlICJPcGVu
TGluayIgYWN0aW9uLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHdl
YkFjdGlvbkZvckNvbnRleHRNZW51QWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlOjp3ZWJBY3Rp
b25UcmlnZ2VyZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OndlYkFjdGlvbik6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5A
a2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEFkanVzdCB0
aGUgc3RhdGUgb2YgdGhlIHJlbG9hZCBhY3Rpb24gY29ycmVjdGx5LgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlQWN0aW9uKToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMpOgorCisy
MDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBJbml0aWFsaXplIHRoZSB1bmRvL3JlZG8gYWN0
aW9ucyBmcm9tIFFVbmRvU3RhY2suIFRoYXQgYXV0b21hdGljYWxseSB0YWtlcyBjYXJlIG9mIGVu
YWJsaW5nL2Rpc2FibGluZyB0aGVtIGFzIHdlbGwgYXMgdGhlIGFjdGl2YXRpb24vdHJpZ2dlci4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OnVwZGF0ZUFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6d2ViQWN0aW9uKToKKyAgICAgICAg
KFFXZWJQYWdlOjp1bmRvU3RhY2spOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorCisyMDA3
LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBBZGRlZCB1bmRvL3JlZG8gdG9vbGJhciBidXR0b25z
LCBtb3ZlZCB0aGUgbG9jYXRpb24gbGluZSBlZGl0IGludG8gYSBzZXBhcmF0ZSB0b29sYmFyLgor
CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1h
aW5XaW5kb3cpOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBVcGRhdGUgdGhlIGVk
aXRvciBhY3Rpb25zIHdoZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlQWN0aW9uKToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlRWRpdG9yQWN0aW9ucyk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbik6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5A
a2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEFkZGVkIGN1
dC9jb3B5L3Bhc3RlIGFjdGlvbnMgdG8gdGhlIHRvb2xiYXIgb2YgUXRMYXVuY2hlcgorCisgICAg
ICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5k
b3cpOgorCisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBTdGFydGVkIHdvcmtpbmcgb24g
a2VlcGluZyB0aGUgc3RhdGUgb2YgdGhlIG5hdmlnYXRpb24gYWN0aW9ucyB1cC10by1kYXRlLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
dXBkYXRlQWN0aW9uKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlTmF2aWdhdGlv
bkFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OndlYkFjdGlvbik6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRQZXJmb3JtRmlyc3ROYXZp
Z2F0aW9uKToKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgVXNlIHRoZSBuYXZpZ2F0
aW9uYWwgd2ViIGFjdGlvbnMgaW4gdGhlIHRvb2xiYXIKKworICAgICAgICAqIFF0TGF1bmNoZXIv
bWFpbi5jcHA6CisgICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKworMjAwNy0xMS0w
NyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IExhcnMuCisKKyAgICAgICAgU3RvcmUgYSBidW5jaCBvZiBRQWN0aW9ucyBpbiBRV2ViUGFn
ZVByaXZhdGUsIGNvcnJlc3BvbmRpbmcgdG8gUVdlYlBhZ2U6OldlYkFjdGlvbi4KKyAgICAgICAg
QWRkZWQgUVdlYlBhZ2VDb250ZXh0IHRvIGhvbGQgY29udGV4dCBzZW5zaXRpdmUgaW5mb3JtYXRp
b24gKGZvciBleGFtcGxlIHVzZWQgYnkgdGhlIGNvbnRleHQgbWVudSkuCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZh
dGUpOgorICAgICAgICAod2ViQWN0aW9uRm9yQ29udGV4dE1lbnVBY3Rpb24pOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6Ol9xX3dlYkFjdGlvblRyaWdnZXJlZCk6CisgICAgICAgIChRV2ViUGFnZTo6d2ViQWN0
aW9uVHJpZ2dlcmVkKToKKyAgICAgICAgKFFXZWJQYWdlOjp3ZWJBY3Rpb24pOgorICAgICAgICAo
UVdlYlBhZ2U6OmNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2VDb250ZXh0OjpR
V2ViUGFnZUNvbnRleHQpOgorICAgICAgICAoUVdlYlBhZ2VDb250ZXh0OjpvcGVyYXRvcj0pOgor
ICAgICAgICAoUVdlYlBhZ2VDb250ZXh0Ojp+UVdlYlBhZ2VDb250ZXh0KToKKyAgICAgICAgKFFX
ZWJQYWdlQ29udGV4dDo6cG9zKToKKyAgICAgICAgKFFXZWJQYWdlQ29udGV4dDo6dGV4dCk6Cisg
ICAgICAgIChRV2ViUGFnZUNvbnRleHQ6OmxpbmtVcmwpOgorICAgICAgICAoUVdlYlBhZ2VDb250
ZXh0OjppbWFnZVVybCk6CisgICAgICAgIChRV2ViUGFnZUNvbnRleHQ6OmltYWdlKToKKyAgICAg
ICAgKFFXZWJQYWdlQ29udGV4dDo6dGFyZ2V0RnJhbWUpOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhh
dXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgor
CisgICAgICAgIE1vdmVkIHRoZSBlZGl0aW5nIGFjdGlvbnMgaW1wbGVtZW50ZWQgaW4ga2V5UHJl
c3NFdmVudCBpbnRvIHdlYkFjdGlvblRyaWdnZXJlZC4KKworICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6d2ViQWN0aW9uVHJpZ2dlcmVkKToKKyAgICAgICAg
KFFXZWJQYWdlOjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKwor
MjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgSW50cm9kdWNlZCBhIGNlbnRyYWwgdmlydHVh
bCB2b2lkIHdlYkFjdGlvblRyaWdnZXJlZChXZWJBY3Rpb24gYWN0aW9uKSBtZXRob2QgdGhhdCBp
cyBjYWxsZWQgZnJvbSB2YXJpb3VzCisgICAgICAgIGNvbnZlbmllbmNlIG1ldGhvZHMgc3VjaCBh
cyBjdXQoKS9jb3B5KCkvcGFzdGUoKS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZTo6Z29CYWNrKToKKyAgICAgICAgKFFXZWJQYWdlOjp3ZWJBY3Rpb25U
cmlnZ2VyZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OmN1dCk6CisgICAgICAgIChRV2ViUGFnZTo6
Y29weSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhh
dXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgor
CisgICAgICAgIFJlc3RydWN0dXJlIHRoZSBjb250ZXh0IG1lbnUgY2xhc3NlcyBmb3IgdGhlIFF0
IHBvcnQuIENvbnRleHRNZW51IGFuZCBDb250ZXh0TWVudUl0ZW0gZG9uJ3Qgc3RvcmUKKyAgICAg
ICAgUUFjdGlvbnMvUU1lbnVzIGFueW1vcmUgYnV0IGp1c3Qgc3RvcmUgdGhlIGFjdGlvbiB0eXBl
LCB0YWcsIHRpdGxlIGFuZCBvcHRpb25hbGx5IHN1Ym1lbnUgYXMgY3JlYXRlZAorICAgICAgICBp
biBDb250ZXh0TWVudTo6cG9wdWxhdGUoKS4KKyAgICAgICAgRm9yIHRoZSBhY3R1YWwgUXQgY29u
dGV4dCBtZW51IHdlIHRyYXZlcnNlIHRoaXMgc3RydWN0dXJlIGFmdGVyIHNlbmRDb250ZXh0TWVu
dUV2ZW50IGFuZCBjcmVhdGUgYSBRTWVudQorICAgICAgICBvdXQgb2YgaXQuIFRoYXQgbWVudSBp
cyBjdXJyZW50bHkgbm90IGZ1bmN0aW9uYWwgYW55bW9yZSB0aG91Z2guCisKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb250ZXh0
TWVudSk6CisgICAgICAgIChRV2ViUGFnZTo6Y29udGV4dE1lbnVFdmVudCk6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlX3AuaDoKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFu
bkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQ2hhbmdl
ZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbiBmb3IgdGhlIFF0IHBvcnQgdG8g
bm90IHNob3cgdGhlIHFtZW51IHJpZ2h0IGF3YXkKKyAgICAgICAgYnV0IGluc3RlYWQganVzdCBi
ZWhhdmUgYXMgYSBub3JtYWwgc2V0dGVyIHRoYXQgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBwbGF0
Zm9ybSBtZW51IGRlc2NyaXB0aW9uICh0aGUgcW1lbnUpLgorICAgICAgICBJbnN0ZWFkIG5vdyBR
V2ViUGFnZTo6Y29udGV4dE1lbnVFdmVudCgpIHJldHJpZXZlcyB0aGUgUU1lbnUgYWZ0ZXIgY2Fs
bGluZyBzZW5kQ29udGV4dE1lbnVFdmVudCBhbmQgY2FsbHMgZXhlYygpCisgICAgICAgIG9uIGl0
LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpjb250
ZXh0TWVudUV2ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmdldEN1c3Rv
bU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxo
YXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAg
Q2hhbmdlZCB0byBQbGF0Zm9ybU1vdXNlRXZlbnQgY29uc3RydWN0b3IgdG8gYWxsb3cgY29uc3Ry
dWN0aW9uIGZyb20gYSBRQ29udGV4dE1lbnVFdmVudC4KKyAgICAgICAgQ2FsbCBzZW5kQ29udGV4
dE1lbnVFdmVudCBvbiB0aGUgZXZlbnQgaGFuZGxlciBmcm9tIGEgUVdpZGdldDo6Y29udGV4dE1l
bnVFdmVudCByZS1pbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9mIGluIG1vdXNlUHJlc3NFdmVudC4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6bW91c2VQ
cmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpjb250ZXh0TWVudUV2ZW50KToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuaDoKKworMjAwNy0xMS0wNyAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgVHVy
bmVkIG9uTG9hZFByb2dyZXNzQ2hhbmdlZCBpbnRvIGEgcmVhbCBwcml2YXRlIHNsb3QuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgor
CisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBNYWtlIFFXZWJIaXN0b3J5IGFuIGV4cGxp
Y2l0bHkgc2hhcmVkIG9iamVjdCwgcmV0dXJuZWQgYXMgYSBwb2ludGVyIGJ5IFFXZWJQYWdlOjpo
aXN0b3J5KCkuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9y
eS5jcHA6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OlFXZWJQYWdlSGlzdG9yeSk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5oOgorCisyMDA3LTExLTA3ICBMYXJzIEtub2xsICA8
bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAg
ICAgIGNvbW1lbnRzIG9uIEFQSSBjaGFuZ2VzIHRoYXQgd2UnZCBsaWtlIHRvIGRvLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMTEtMDcgIFNpbW9uIEhhdXNtYW5uICA8aGF1
c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzIEtub2xsIDxsYXJzQHRy
b2xsdGVjaC5jb20+LgorCisgICAgICAgIEFkZCBhIFFXZWJQYWdlOjpmcmFtZUNyZWF0ZWQoKSBz
aWduYWwgYW5kIGZpeCBEUlQKKyAgICAgICAgCisgICAgICAgIFRoZSByZW1vdmFsIG9mIGNyZWF0
ZUZyYW1lIGluIFFXZWJQYWdlIGJyb2tlIHRoZSByZS1pbXBsZW1lbnRhdGlvbgorICAgICAgICBp
biBEdW1wUmVuZGVyVHJlZS4gSW5zdGVhZCBlbWl0IGEgZnJhbWVDcmVhdGVkKCkgc2lnbmFsIGFu
ZAorICAgICAgICBjb25uZWN0IHRvIGl0IGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICAKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNy
ZWF0ZU1haW5GcmFtZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisKKzIwMDctMTEtMDcgIExhcnMgS25v
bGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisK
KyAgICAgICAgUmVtb3ZlIFFXZWJQYWdlOjpjcmVhdGVGcmFtZSgpCisgICAgICAgIAorICAgICAg
ICBub3cgdGhhdCBRV2ViRnJhbWUgZG9lc24ndCBoYXZlIHZpcnR1YWwgbWV0aG9kcyBhbnltb3Jl
LCB0aGVyZQorICAgICAgICBpcyBubyBuZWVkIGZvciBhIGNyZWF0ZUZyYW1lKCkgZmFjdG9yeSBt
ZXRob2QgaW4gUVdlYnBhZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUpOgor
CisyMDA3LTExLTA3ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPi4KKworICAgICAg
ICBNb3ZlZCBhbGwgdGhlIGV2ZW50IGhhbmRsZXJzIGZyb20gUVdlYkZyYW1lIGludG8gUVdlYlBh
Z2UuCisgICAgICAgIAorICAgICAgICBUaGlzIGNsZWFucyB1cCB0aGUgcHVibGljIEFQSSBhbmQg
YWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUKKyAgICAgICAgSGFja1dlYkZyYW1lIGhhY2sgaW4gRHVt
cFJlbmRlclRyZWUuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnBvcyk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAg
ICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmZyYW1lQXQpOgorICAgICAgICAoUVdlYlBhZ2U6Om1v
dXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjptb3VzZVByZXNzRXZlbnQpOgorICAg
ICAgICAoUVdlYlBhZ2U6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OndoZWVsRXZlbnQpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMDctMTEtMDcgIEhvbGdlciBGcmV5dGhl
ciAgPGhvbGdlci5mcmV5dGhlckB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4uCisKKyAgICAgICAgVXNlIGNvcnJlY3Qg
VXNlckFnZW50IHN0cmluZy4KKyAgICAgICAgCisgICAgICAgICogT25seSBoYXZlIG9uZSBVc2Vy
IEFnZW50IFN0cmluZyBhbmQgdGhpcyBwbGFjZSBpcyBRV2ViUGFnZQorICAgICAgICAqIFFXZWJQ
YWdlOjpvcGVuIC0+IFFXZWJOZXR3b3JrUmVxdWVzdCAtPiBRV2ViUGFnZTo6b3BlbiAtPgorICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QgLT4gRnJhbWVMb2FkZXI6OmxvYWQgLT4gUVdlYk5ldHdvcmtS
ZXF1ZXN0CisgICAgICAgICogUmVzb3VyY2VSZXF1ZXN0IGlzICE9IDAgd2hlbiBnZXR0aW5nIGNh
bGxlZCBmcm9tIFdlYkNvcmUsIHdlCisgICAgICAgIHdpbGwgb25seSBkbyByZXF1ZXN0cyB3aGVu
IGNvbWluZyBmcm9tIFdlYkNvcmUgYW5kIHRoZW4gd2UgY2FuCisgICAgICAgIHVzZSB0aGUgVXNl
ci1BZ2VudCBzZXQgd2l0aCB0aGUgaGVscCBvZiB0aGUgRnJhbWVMb2FkZXJDbGllbnQKKyAgICAg
ICAgKiBXZSBtaWdodCB3YW50IHRvIGNoYW5nZSBRV2ViTmV0d29ya1JlcXVlc3QgYSBiaXQKKyAg
ICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoUVdlYk5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6aW5pdCk6CisKKzIwMDctMTEtMDcgIExhcnMg
S25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24u
CisKKyAgICAgICAgcmVtb3ZlIHR3byBub3RJbXBsZW1lbnRlZCgpIHdhcm5pbmdzLCBhcyBJIGJl
bGlldmUgd2UgZG9uJ3QKKyAgICAgICAgaGF2ZSB0byBpbXBsZW1lbnQgdGhlc2UgbWV0aG9kcy4g
QWRkIHNvbWUgKGNvbW1lbnRlZCBvdXQpCisgICAgICAgIGRlYnVnIGNvZGUgaW4gb25lIHBsYWNl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKToKKworMjAwNy0xMS0wNSAgVHJpc3RhbiBPJ1RpZXJuZXkgIDx0cmlzdGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0Lmg6CisgICAgICAgIFJldmlzZWQgdG8gdXNlIG5ldyBXZWJDb3JlIENocm9tZUNs
aWVudCBjcmVhdGVXaW5kb3cgQVBJLgorCisyMDA3LTEwLTMxICBMYXJzIEtub2xsICA8bGFyc0B0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIGZp
eCBtb3N0IG9mIHRoZSBpc3N1ZXMgSSBmb3VuZCB3aXRoIENsaXBib2FyZCBhbmQgRG5ELgorCisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpkcmFnTGVhdmVF
dmVudCk6CisKKzIwMDctMTAtMzEgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgUURyYWcgb2JqZWN0cyBuZWVk
IHRvIGJlIGNyZWF0ZWQgb24gdGhlIGhlYXAuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERy
YWcpOgorCisyMDA3LTEwLTMxICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIGEgZHJhZ0xlYXZlIGV2ZW50IGlz
IG5vdCB0aGUgc2FtZSBhcyBjYW5jZWxsaW5nIGEgZHJhZy4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisKKzIwMDctMTAtMjYgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBCdWlsZCBmaXguICBBZGQgbWlzc2luZyAjaW5jbHVkZSBvZiBQbGF0Zm9ybS5oLgor
CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDoKKworMjAwNy0xMC0yNSAg
SG9sZ2VyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+LgorCisgICAgICAgICogV2UgbmVl
ZCB0byBzZXQgYSAhPSAwIHN0YXR1cyBjb2RlIGZvciB0aGUgZmFzdC9sb2FkZXIveG1saHR0cHJl
cXVlc3QtbWlzc2luZy1maWxlLWV4Y2VwdGlvbi5odG1sCisgICAgICAgICogbGlieG1sMiBoYXMg
dGhlIHNlbWFudGljIHRoYXQgd2hlbiB3cml0aW5nIGFuIGVtcHR5IHN0cmluZyBhbmQgZmluaXNo
aW5nIGl0IHdpbGwgcmVwb3J0IGFuIGVycm9yLiBGb3IgUVhtbFN0cmVhbVJlYWRlciB0aGlzIGlz
IHZhbGlkLgorICAgICAgICAqIFRoaXMgaXMgY2F1c2luZyBzb21lIHJlZ3Jlc3Npb25zLi4uCisg
ICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAg
ICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisgICAgICAgIChRV2ViTmV0d29ya0lu
dGVyZmFjZTo6YWRkSm9iKToKKworMjAwNy0xMC0yNSAgSG9sZ2VyIEZyZXl0aGVyICA8emVja2VA
c2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4gPGhhdXNt
YW5uQGtkZS5vcmc+LgorCisgICAgICAgICogTWFrZSBmYXN0L2xvYWRlci94bWxodHRwcmVxdWVz
dC1iYWQtbWltZXR5cGUuaHRtbCBwYXNzLiBXZSB1c2UgUUh0dHAgdG8gZG93bmxvYWQgbG9jYWwg
ZmlsZXMgYnV0IHdlIG1heSBub3Qgc2V0IHRoZSBIVFRQIHJlc3VsdCBjb2RlIG9uIHRoZSBSZXNv
dXJjZVJlc3BvbnNlLgorICAgICAgICAqIFdlIGNhbiB1c2UgdGhlIGNyb3NzLXBsYXRmb3JtIHJl
c3VsdCBub3cuIFFXZWJOZXR3b3JrSW50ZXJmYWNlL01hbmFnZXIgYmVoYXZlcyB0aGUgc2FtZSBh
cyBtYWMgZm9yIGxvY2FsIGZpbGVzLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VibmV0
d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OnN0YXJ0ZWQp
OgorCisyMDA3LTEwLTI1ICBIb2xnZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4uCisK
KyAgICAgICAgKiBmYXN0L2RvbS9vbmVycm9yLWltZy5odG1sIHJlZ3Jlc3NlZCBkdWUgY2hlY2tp
bmcgdGhlIEpvYlN0YXRlcyBiZWNhdXNlIGluIGNhc2Ugb2YgZXJyb3IgKGUuZy4gbm90IGJlaW5n
IGFibGUgdG8gY29ubmVjdCkgdGhlIGpvYiB3aWxsIG5vIGJlIHN0YXJ0ZWQuCisgICAgICAgICog
VXNlIHRoZSBlcnJvciBtZXNzYWdlIGZyb20gUXQuIEl0IG1pZ2h0IG9yIG1pZ2h0IG5vdCBiZSB0
cmFuc2xhdGVkLgorICAgICAgICAKKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFj
ZS5jcHA6CisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6ZXJyb3JTdHJpbmcpOgorICAgICAgICAo
UVdlYk5ldHdvcmtKb2I6OnNldEVycm9yU3RyaW5nKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFu
YWdlcjo6ZmluaXNoZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpkb1dvcmspOgor
ICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKiBBcGkv
cXdlYm5ldHdvcmtpbnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZh
Y2VfcC5oOgorCisyMDA3LTEwLTI1ICBIb2xnZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9y
Zz4uCisKKyAgICAgICAgKiBVc2UgdGhlIEpvYlN0YXR1cyB0byBtYWtlIHN1cmUgdG8gbm90IGRl
bGl2ZXIgZmluaXNoZWQvZGF0YSBiZWZvcmUgdGhlIGpvYiBoYXMgc3RhcnRlZC4gVGhpcyBpcyB0
aGUgY2FzZSB3aXRoIHRoZSBmYXN0L2RvbS9vbmVycm9yLWltZy5odG1sIHRlc3QgY2FzZS4KKyAg
ICAgICAgKiBXZSBoYXZlIG5vIGlkZWEgaWYgYW55IGRhdGEgd2lsbCBjb21lIHNvIHdlIGNhbiBz
dGlsbCBmaW5pc2ggYW5kIHRoZW4gZ2V0IHBlbmRpbmcgZGF0YS4gVGhpcyBsdWNraWx5IGNhbid0
IGhhcHBlbiBmb3IgdGhlIGxvY2FsIGZpbGUgY2FzZS4KKyAgICAgICAgCisKKyAgICAgICAgKiBB
cGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2Vy
Ojpkb1dvcmspOgorCisyMDA3LTEwLTI1ICBIb2xnZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNo
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2Rl
Lm9yZz4uCisKKyAgICAgICAgKiBObyBuZWVkIHRvIGluaXRpYWxpemUgdmFsdWVzIGluIHRoZSBR
V2ViTmV0d29ya0pvYiBjJ3RvcgorICAgICAgICAqIEFkZCBhIEpvYlN0YXR1cyB0byBRV2ViTmV0
d29ya0pvYiBhbmQgdmVyaWZ5IHRoYXQgdGhlIGpvYnMgYXJlIGhhbmRsZWQgaW4gdGhlIHdheSB3
ZSBleHBlY3QgdGhlbSB0byBiZSBoYW5kbGVkLiBUaGlzIG1lYW5zIG5vIGRhdGEgYWZ0ZXIgdGhl
IGpvYiBoYXMgZmluaXNoZWQsIG5vdCBmaW5pc2hpbmcgYSBqb2IgYmVmb3JlIGl0IGhhcyBiZWVu
IHN0YXJ0ZWQuCisgICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpzdGF0dXMpOgorICAgICAgICAoUVdlYk5l
dHdvcmtKb2I6OnNldFN0YXR1cyk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OnN0YXJ0
ZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpkYXRhKToKKyAgICAgICAgKFFXZWJO
ZXR3b3JrTWFuYWdlcjo6ZmluaXNoZWQpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVy
ZmFjZS5oOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmg6CisgICAgICAg
IChRV2ViTmV0d29ya0pvYlByaXZhdGU6OlFXZWJOZXR3b3JrSm9iUHJpdmF0ZSk6CisKKzIwMDct
MTAtMjUgIEhvbGdlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uIDxoYXVzbWFubkBrZGUub3JnPi4KKworICAgICAgICAq
IENvbnNpc3RlbmN5OiBBbHdheXMgbmFtZSB0aGUgam9icyBqb2IuCisgICAgICAgIAorCisgICAg
ICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmVIdHRw
OjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25SZXF1ZXN0RmluaXNoZWQp
OgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uU3NsRXJyb3JzKToKKyAgICAgICAgKFdlYkNvcmVI
dHRwOjpvbkF1dGhlbnRpY2F0aW9uUmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9u
UHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkKToKKworMjAwNy0xMC0yNSAgSG9sZ2VyIEZyZXl0
aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+LgorCisgICAgICAgICogSW1wbGVtZW50IG91ciBvd24g
cXVldWluZyBvZiBuZXR3b3JrIGpvYnMgdG8gYWxsb3cgc3BlY2lhbCBoYW5kbGluZyBvZiBzeW5j
aHJvbm91cyBqb2JzLiBUaGlzIG1ha2VzIHVzIHBhc3MgdGhlIGZhc3QvZG9tL3htbGh0dHByZXF1
ZXN0LWh0bWwtcmVzcG9uc2UtZW5jb2RpbmcuaHRtbCB0ZXN0IHdpdGhvdXQgYSBjcmFzaC4gU3lu
YyBqb2JzIHdpbGwgZ2V0IGEgc3BlY2lhbCB0cmVhdG1lbnQgb3ZlciB0aGUgbm9ybWFscyBvbmVz
IGFuZCBpbiB0aGVvcnkgbW9yZSB0aGFuIG9uZSBzeW5jIGpvYiBpcyBzdXBwb3J0ZWQuCisgICAg
ICAgICogVGhpcyBzaG91bGQgYmUgdGhyZWFkLXNhZmUgYmVzaWRlcyBRV2ViTmV0d29ya0pvYjo6
e3JlZixkZXJlZn0KKyAgICAgICAgCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6On5RV2ViTmV0d29ya0pvYik6CisgICAg
ICAgIChRV2ViTmV0d29ya01hbmFnZXI6OlFXZWJOZXR3b3JrTWFuYWdlcik6CisgICAgICAgIChR
V2ViTmV0d29ya01hbmFnZXI6OnNlbGYpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjph
ZGQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrTWFuYWdlcjo6ZmluaXNoZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZh
Y2VQcml2YXRlOjpzZW5kRmlsZURhdGEpOgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZhY2VQ
cml2YXRlOjpwYXJzZURhdGFVcmwpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpxdWV1
ZVN0YXJ0KToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6cXVldWVEYXRhKToKKyAgICAg
ICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6cXVldWVGaW5pc2hlZCk6CisgICAgICAgIChRV2ViTmV0
d29ya01hbmFnZXI6OmRvU2NoZWR1bGVXb3JrKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdl
cjo6ZG9Xb3JrKToKKyAgICAgICAgKGdDbGVhbnVwSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJO
ZXR3b3JrSW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJOZXR3
b3JrSW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50
ZXJmYWNlOjpRV2ViTmV0d29ya0ludGVyZmFjZSk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVy
ZmFjZTo6c3RhcnRlZCk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZTo6ZGF0YSk6Cisg
ICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZTo6ZmluaXNoZWQpOgorICAgICAgICAoV2ViQ29y
ZUh0dHA6OnNjaGVkdWxlTmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVz
cG9uc2VIZWFkZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25SZWFkeVJlYWQp
OgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKFdl
YkNvcmVIdHRwOjpjYW5jZWwpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5o
OgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmg6CisgICAgICAgIChRV2Vi
TmV0d29ya01hbmFnZXI6Oik6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OkpvYkRhdGE6
OkpvYkRhdGEpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpKb2JGaW5pc2hlZDo6Sm9i
RmluaXNoZWQpOgorCisyMDA3LTEwLTI1ICBIb2xnZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNo
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2Rl
Lm9yZz4uCisKKyAgICAgICAgKiBEbyB0aGUgcGVyY2VudCByZXBsYWNlbWVudCBvbmx5IHdoZW4g
d2UgYXJlIG5vdCBiYXNlNjQuIFdpdGggYmFzZTY0IHdlIHNob3VsZCBub3QgaGF2ZSBhbnkgJSBp
biBpdCBhbnl3YXkuCisgICAgICAgICogSGF2ZSBhIGN1c3RvbSBkZWNvZGVQZXJjZW50RW5jb2Rp
bmcgbWV0aG9kIHRoYXQgd29ya3Mgd2l0aG91dCBkb2luZyBhbnkgY2hhcnNldCBjb252ZXJzaW9u
LiBXaXRoIGNvbnZlcnRpbmcgYmFjayB0byBsYXRpbjEoKSB3ZSBsb3N0IHNvbWUgaW5mb3JtYXRp
b24uCisgICAgICAgICogV2UgcGFzcyB0aGUgY2hhci1kZWNvZGluZy5odG1sIHRlc3Qgbm93Cisg
ICAgICAgIAorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAg
ICAgKGRlY29kZVBlcmNlbnRFbmNvZGluZyk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFj
ZVByaXZhdGU6OnBhcnNlRGF0YVVybCk6CisKKzIwMDctMTAtMjQgIEhvbGdlciBIYW5zIFBldGVy
IEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFy
cyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPi4KKworICAgICAgICAqIFN0b3AgY3Jhc2hpbmcg
b24gZmFzdC9ldmVudHMvZnJhbWUtdGFiLWZvY3VzLmh0bWwgdGhlIGtleUV2ZW50IGNhbiBiZSAw
LgorICAgICAgICAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlwcmVzcyk6CisK
KzIwMDctMTAtMjQgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgcmVtb3ZlIHNvbWUgbm90SW1wbGVtZW50ZWQo
KSB3YXJuaW5ncy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc0NvbnRpbnVvdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKworMjAwNy0xMC0yNCAgTGFycyBLbm9sbCAgPGxh
cnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAg
ICBhbGxvdyBwYXN0ZSBmcm9tIERPTSBzbyB3ZSBwYXNzIG1vcmUgdGVzdCBjYXNlcy4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0U2V0dGluZ3Mp
OgorCisyMDA3LTEwLTI0ICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIFNpbXBsaWZ5IHRoZSBQbGF0Zm9ybUtl
eUV2ZW50IGNvbnN0cnVjdG9yLiBObyBuZWVkIHRvIGhhdmUgYW4gZXh0cmEgYm9vbGVhbiBmb3Ig
aXNLZXlVcCBpbiB0aGVyZSwgYXMgdGhlIFFLZXlFdmVudCBoYXMgdGhlIGluZm9ybWF0aW9uLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjprZXlQcmVz
c0V2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjprZXlSZWxlYXNlRXZlbnQpOgorCisyMDA3LTEw
LTI0ICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgorCisgICAgICAgIHNvbWUgc21hbGxlciBmaXhlcyB0byB0aGUgZWRpdGluZyBz
dXBwb3J0IGluIERSVC4gTWFrZXMgYW5vdGhlciBmZXcgdGVzdHMgcGFzcy4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKHF0X2R1bXBfZWRp
dGluZ19jYWxsYmFja3MpOgorICAgICAgICAocXRfZHJ0X3J1bik6CisKKzIwMDctMTAtMjQgIExh
cnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgaW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgbW9zdCBlZGl0aW5nIHNob3J0
Y3V0cyB0byBtYWtlIGNvbnRlbnRFZGl0YWJsZSB1c2FibGUuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmtleVByZXNzRXZlbnQpOgorCisyMDA3LTEw
LTI0ICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uLgorCisgICAgICAgIG5vIG5lZWQgdG8gY2FsbCBzZXRJc0FjdGl2ZSBvdXJzZWx2
ZXMgb24gdGhlIGZyYW1lLCBhcyB0aGUgZm9jdXMgY29udHJvbGxlciBkb2VzIGl0IGZvciB1cy4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6Zm9jdXNJ
bkV2ZW50KToKKworMjAwNy0xMC0yNCAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9y
dCBmb3IgdGVzdGluZyBlZGl0aW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuY3BwOgorICAgICAgICAocXRfZHVtcF9lZGl0aW5nX2NhbGxiYWNrcyk6CisgICAg
ICAgIChxdF9kdW1wX3NldF9hY2NlcHRzX2VkaXRpbmcpOgorICAgICAgICAoZHVtcFBhdGgpOgor
ICAgICAgICAoZHVtcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpz
aG91bGREZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hv
dWxkU2hvd0RlbGV0ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzaG91bGRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpz
aG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91
bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojpk
aWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6ZGlkRW5kRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6
c2hvdWxkSW5zZXJ0Tm9kZSk6CisKKzIwMDctMTAtMTkgIEFscCBUb2tlciAgPGFscEBhdG9rZXIu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4KKworICAgICAgICBHVEsrIGJ1aWxk
IGZpeCBlbmFibGluZyB0aGUgbmV3IGxvY2FsIGRhdGFiYXNlIHN0b3JhZ2UgZmVhdHVyZS4KKyAg
ICAgICAgVGhlcmUgaXMgYWxzbyBhIHByb3NwZWN0aXZlIFF0IGJ1aWxkIGZpeC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpydW5EYXRhYmFzZVNpemVMaW1pdFByb21wdCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAwNy0xMC0xOSAgU2ltb24gSGF1
c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIEZpeCB0aGUgUXQvV2luZG93cyBi
dWlsZDogSW5jbHVkZSB0aGUgbW9jIGZpbGUgZnJvbSB0aGUgLmNwcCBmaWxlIHNvCisgICAgICAg
IHRoYXQgY29uZmlnLmggaXMgaW5jbHVkZWQgYmVmb3JlIHd0Zi9NYXRoRXh0cmFzLiBUaGUgZm9y
bWVyIGRlZmluZXMKKyAgICAgICAgdGhlIE1TVkMgZGVmaW5lcyBmb3IgcmFuZF9zLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisKKzIwMDctMTAt
MTkgIFNpbW9uIEhhdXNtYW5uICA8c2hhdXNtYW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEZpeCB0aGUgd2luZG93cy9xdCBidWlsZCBieSBp
bmNsdWRpbmcgY29uZmlnLmggZmlyc3QgdG8gZml4IHd0Zi9NYXRoRXh0cmFzLmggaW5jbHVzaW9u
LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKworMjAwNy0xMC0xMCAgQWxpY2UgTGl1ICA8YWxpY2UubGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBjaGFuZ2VzIHRvIGtl
ZXAgdGhlIGJ1aWxkIGZyb20gYnJlYWtpbmcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6Y3JlYXRlRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaDoKKworMjAwNy0xMC0wOSAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBzZXQgYSBkZWZhdWx0
IGVuY29kaW5nIGZvciBkb2N1bWVudHMuIE1ha2VzIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50
LWNoYXJzZXQuaHRtbCBwYXNzLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlOjpzZXRTZXR0aW5ncyk6CisKKzIwMDctMTAtMDkgIExhcnMgS25vbGwgIDxs
YXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAg
ICAgRG9uJ3QgcmV0dXJuIGEgNDA0IHN0YXR1cyBjb2RlIGZvciBlbXB0eSBkYXRhOiB1cmxzLiBG
aXhlcyBmYXN0L2RvbS9IVE1MSGVhZEVsZW1lbnQvaGVhZC1jaGVjay5odG1sCisKKyAgICAgICAg
KiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5h
Z2VyOjphZGQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpjYW5jZWwpOgorICAgICAg
ICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFu
YWdlcjo6ZGF0YSk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZVByaXZhdGU6OnBhcnNl
RGF0YVVybCk6CisKKzIwMDctMTAtMDkgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgRG9uJ3Qgc2V0IHVwIGNv
bm5lY3Rpb25zIGluc2lkZSBRV2ViUGFnZTo6Y3JlYXRlRnJhbWUsIGFzIHVzZXJzIG1pZ2h0IGJl
IHJlaW1wbGVtZW50aW5nIHRoYXQgbWV0aG9kLiBNYWtlIHN1cmUgd2UgZ2V0IG9ubHkgb25lIHRp
dGxlQ2hhbmdlZCgpIHNpZ25hbCBwZXIgdGl0bGUgY2hhbmdlLCBhbmQgaW1wbGVtZW50IHRoZSBz
dXBwb3J0IGZvciB0ZXN0aW5nIHRoaXMgaW4gRFJULgorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpjcmVhdGVGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTEwLTA5ICBMYXJzIEtub2xsICA8bGFyc0B0
cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgorCisgICAgICAgIGFk
ZCBhIGNsZWFyKCkgbWV0aG9kIHRvIFFXZWJQYWdlSGlzdG9yeS4KKworICAgICAgICAqIEFwaS9x
d2VicGFnZWhpc3RvcnkuY3BwOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5OjpjbGVhcik6Cisg
ICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6Oml0ZW1BdEluZGV4KToKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2VoaXN0b3J5Lmg6CisKKzIwMDctMTAtMDUgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVj
aC5jb20+CisKKyAgICAgICAgYWRkIHByb3BlciBlcnJvciBtZXNzYWdlcyB0byB0aGUgRnJhbWVM
b2FkZXJDbGllbnQuCisgICAgICAgIEltcGxlbWVudCBDaHJvbWVDbGllbnRRdDo6Y2xvc2VXaW5k
b3dTb29uIGFuZAorICAgICAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaENyZWF0ZVBh
Z2UgKHdoaWNoIHNob3VsZCBnbyBhd2F5IElNTykuCisgICAgICAgIFNvbWUgZml4ZXMgaW4gRFJU
IHRvIG1ha2UgaXQgd29yayBjb3JyZWN0bHkgd2l0aCBtdWx0aXBsZSB3aW5kb3dzLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE1hY2llai4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdv
cmtNYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZhY2U6OmFkZEpv
Yik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNsb3NlV2luZG93U29vbik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjopOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6YmxvY2tlZEVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbm5vdFNob3dVUkxF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjppbnRlcnJ1cHRG
b3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaENyZWF0ZVBhZ2UpOgorCisyMDA3LTEwLTAzICBMYXJzIEtu
b2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFNpZ25lZCBvZmYgYnkgT2xsaWVq
LgorCisgICAgICAgIG1vdmUgV2ViS2l0UXQgdG8gV2ViS2l0L3F0IGZvciBjb25zaXN0ZW5jeSB3
aXRoIHRoZSBvdGhlciBwb3J0cy4KKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaTogUmVuYW1l
ZCBmcm9tIFdlYktpdFF0L0FwaS9oZWFkZXJzLnByaS4KKyAgICAgICAgKiBBcGkvcWNvb2tpZWph
ci5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcWNvb2tpZWphci5jcHAuCisgICAgICAg
IChRQ29va2llSmFyUHJpdmF0ZTo6UUNvb2tpZUphclByaXZhdGUpOgorICAgICAgICAocUhhc2gp
OgorICAgICAgICAoUUNvb2tpZUphcjo6UUNvb2tpZUphcik6CisgICAgICAgIChRQ29va2llSmFy
Ojp+UUNvb2tpZUphcik6CisgICAgICAgIChRQ29va2llSmFyOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFFDb29raWVKYXI6OmNvb2tpZXMpOgorICAgICAgICAoUUNvb2tpZUphcjo6aXNFbmFibGVk
KToKKyAgICAgICAgKFFDb29raWVKYXI6OnNldEVuYWJsZWQpOgorICAgICAgICAoZ0NsZWFudXBK
YXIpOgorICAgICAgICAoUUNvb2tpZUphcjo6c2V0Q29va2llSmFyKToKKyAgICAgICAgKFFDb29r
aWVKYXI6OmNvb2tpZUphcik6CisgICAgICAgICogQXBpL3Fjb29raWVqYXIuaDogUmVuYW1lZCBm
cm9tIFdlYktpdFF0L0FwaS9xY29va2llamFyLmguCisgICAgICAgICogQXBpL3F0d2Via2l0LnBy
ZjogUmVuYW1lZCBmcm9tIFdlYktpdFF0L0FwaS9xdHdlYmtpdC5wcmYuCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcXdlYmZyYW1lLmNwcC4K
KyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOgorICAgICAgICAoUVdlYkZyYW1lUHJp
dmF0ZTo6cGFyZW50RnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aG9yaXpvbnRh
bFNjcm9sbEJhcik6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjp2ZXJ0aWNhbFNjcm9sbEJh
cik6CisgICAgICAgIChRV2ViRnJhbWU6OlFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6
On5RV2ViRnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0pTV2luZG93T2JqZWN0KToK
KyAgICAgICAgKFFXZWJGcmFtZTo6bWFya3VwKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aW5uZXJU
ZXh0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVuZGVyVHJlZUR1bXApOgorICAgICAgICAoUVdl
YkZyYW1lOjp0aXRsZSk6CisgICAgICAgIChRV2ViRnJhbWU6Om5hbWUpOgorICAgICAgICAoUVdl
YkZyYW1lOjpwYWdlKToKKyAgICAgICAgKFFXZWJGcmFtZTo6c2VsZWN0ZWRUZXh0KToKKyAgICAg
ICAgKFFXZWJGcmFtZTo6Y2hpbGRGcmFtZXMpOgorICAgICAgICAoUVdlYkZyYW1lOjp2ZXJ0aWNh
bFNjcm9sbEJhclBvbGljeSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldFZlcnRpY2FsU2Nyb2xs
QmFyUG9saWN5KToKKyAgICAgICAgKFFXZWJGcmFtZTo6aG9yaXpvbnRhbFNjcm9sbEJhclBvbGlj
eSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNldEhvcml6b250YWxTY3JvbGxCYXJQb2xpY3kpOgor
ICAgICAgICAoUVdlYkZyYW1lOjpyZW5kZXIpOgorICAgICAgICAoUVdlYkZyYW1lOjpsYXlvdXQp
OgorICAgICAgICAoUVdlYkZyYW1lOjpwb3MpOgorICAgICAgICAoUVdlYkZyYW1lOjpnZW9tZXRy
eSk6CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdCk6CisgICAgICAgIChR
V2ViRnJhbWU6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VQcmVz
c0V2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAg
ICAgICAgKFFXZWJGcmFtZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYkZyYW1l
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6IFJlbmFtZWQgZnJvbSBX
ZWJLaXRRdC9BcGkvcXdlYmZyYW1lLmguCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6IFJl
bmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcXdlYmZyYW1lX3AuaC4KKyAgICAgICAgKFFXZWJGcmFt
ZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeWlu
dGVyZmFjZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZh
Y2UuY3BwLgorICAgICAgICAoV2ViQ29yZTo6aGlzdG9yeUNvbnRhaW5zKToKKyAgICAgICAgKGdD
bGVhbnVwSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZh
dWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50
ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpRV2ViSGlzdG9yeUludGVy
ZmFjZSk6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmg6IFJlbmFtZWQgZnJv
bSBXZWJLaXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaC4KKyAgICAgICAgKiBBcGkvcXdl
YmtpdGdsb2JhbC5oOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvQXBpL3F3ZWJraXRnbG9iYWwuaC4K
KyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOiBSZW5hbWVkIGZyb20gV2Vi
S2l0UXQvQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcC4KKyAgICAgICAgKHFIYXNoKToKKyAg
ICAgICAgKG9wZXJhdG9yPT0pOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6
aW5pdCk6CisgICAgICAgIChRV2ViTmV0d29ya1JlcXVlc3RQcml2YXRlOjpzZXRVUkwpOgorICAg
ICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0OjpRV2ViTmV0d29ya1JlcXVlc3QpOgorICAgICAgICAo
UVdlYk5ldHdvcmtSZXF1ZXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1
ZXN0Ojp+UVdlYk5ldHdvcmtSZXF1ZXN0KToKKyAgICAgICAgKFFXZWJOZXR3b3JrUmVxdWVzdDo6
dXJsKToKKyAgICAgICAgKFFXZWJOZXR3b3JrUmVxdWVzdDo6c2V0VXJsKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrUmVxdWVzdDo6aHR0cEhlYWRlcik6CisgICAgICAgIChRV2ViTmV0d29ya1JlcXVl
c3Q6OnNldEh0dHBIZWFkZXIpOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0OjpodHRwSGVh
ZGVyRmllbGQpOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0OjpzZXRIdHRwSGVhZGVyRmll
bGQpOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0Ojpwb3N0RGF0YSk6CisgICAgICAgIChR
V2ViTmV0d29ya1JlcXVlc3Q6OnNldFBvc3REYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9i
OjpRV2ViTmV0d29ya0pvYik6CisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6flFXZWJOZXR3b3Jr
Sm9iKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjp1cmwpOgorICAgICAgICAoUVdlYk5ldHdv
cmtKb2I6OnBvc3REYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpodHRwSGVhZGVyKToK
KyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpyZXF1ZXN0KToKKyAgICAgICAgKFFXZWJOZXR3b3Jr
Sm9iOjpyZXNwb25zZSk6CisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6c2V0UmVzcG9uc2UpOgor
ICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OmNhbmNlbGxlZCk6CisgICAgICAgIChRV2ViTmV0d29y
a0pvYjo6cmVmKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpkZXJlZik6CisgICAgICAgIChR
V2ViTmV0d29ya0pvYjo6bmV0d29ya0ludGVyZmFjZSk6CisgICAgICAgIChRV2ViTmV0d29ya0pv
Yjo6ZnJhbWUpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpRV2ViTmV0d29ya01hbmFn
ZXIpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzZWxmKToKKyAgICAgICAgKFFXZWJO
ZXR3b3JrTWFuYWdlcjo6YWRkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6Y2FuY2Vs
KToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisgICAgICAgIChRV2Vi
TmV0d29ya01hbmFnZXI6OmRhdGEpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpmaW5p
c2hlZCk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmFkZEh0dHBKb2IpOgorICAgICAg
ICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpjYW5jZWxIdHRwSm9iKToKKyAgICAgICAgKFFXZWJOZXR3
b3JrTWFuYWdlcjo6aHR0cENvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtJ
bnRlcmZhY2VQcml2YXRlOjpzZW5kRmlsZURhdGEpOgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRl
cmZhY2VQcml2YXRlOjpwYXJzZURhdGFVcmwpOgorICAgICAgICAoZ0NsZWFudXBJbnRlcmZhY2Up
OgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2UpOgor
ICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2UpOgorICAgICAg
ICAoUVdlYk5ldHdvcmtJbnRlcmZhY2U6OlFXZWJOZXR3b3JrSW50ZXJmYWNlKToKKyAgICAgICAg
KFFXZWJOZXR3b3JrSW50ZXJmYWNlOjp+UVdlYk5ldHdvcmtJbnRlcmZhY2UpOgorICAgICAgICAo
UVdlYk5ldHdvcmtJbnRlcmZhY2U6OmFkZEpvYik6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVy
ZmFjZTo6Y2FuY2VsSm9iKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpXZWJDb3JlSHR0cCk6Cisg
ICAgICAgIChXZWJDb3JlSHR0cDo6fldlYkNvcmVIdHRwKToKKyAgICAgICAgKFdlYkNvcmVIdHRw
OjpyZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpzY2hlZHVsZU5leHRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmVIdHRwOjpnZXRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmVI
dHRwOjpvblJlc3BvbnNlSGVhZGVyUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9u
UmVhZHlSZWFkKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblJlcXVlc3RGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlSHR0cDo6b25Eb25lKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblN0
YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6Y2FuY2VsKToKKyAgICAgICAgKFdl
YkNvcmVIdHRwOjpvblNzbEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25BdXRoZW50
aWNhdGlvblJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblByb3h5QXV0aGVudGlj
YXRpb25SZXF1aXJlZCk6CisgICAgICAgIChIb3N0SW5mbzo6SG9zdEluZm8pOgorICAgICAgICAq
IEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5oOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvQXBpL3F3
ZWJuZXR3b3JraW50ZXJmYWNlLmguCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNl
X3AuaDogUmVuYW1lZCBmcm9tIFdlYktpdFF0L0FwaS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmgu
CisgICAgICAgIChRV2ViTmV0d29ya0pvYlByaXZhdGU6OlFXZWJOZXR3b3JrSm9iUHJpdmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIb3N0SW5mbzo6SG9zdEluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUh0dHA6Okh0dHBDb25uZWN0aW9uOjpIdHRwQ29ubmVjdGlvbik6CisgICAgICAg
ICogQXBpL3F3ZWJvYmplY3RwbHVnaW4uY3BwOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvQXBpL3F3
ZWJvYmplY3RwbHVnaW4uY3BwLgorICAgICAgICAoUVdlYkZhY3RvcnlMb2FkZXI6OlFXZWJGYWN0
b3J5TG9hZGVyKToKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjpzZWxmKToKKyAgICAgICAg
KFFXZWJGYWN0b3J5TG9hZGVyOjpkZXNjcmlwdGlvbkZvck5hbWUpOgorICAgICAgICAoUVdlYkZh
Y3RvcnlMb2FkZXI6Om1pbWV0eXBlc0Zvck5hbWUpOgorICAgICAgICAoUVdlYkZhY3RvcnlMb2Fk
ZXI6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjpl
eHRlbnNpb25zKToKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjpuYW1lRm9yTWltZXR5cGUp
OgorICAgICAgICAoUVdlYkZhY3RvcnlMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChRV2ViT2Jq
ZWN0UGx1Z2luOjpRV2ViT2JqZWN0UGx1Z2luKToKKyAgICAgICAgKFFXZWJPYmplY3RQbHVnaW46
On5RV2ViT2JqZWN0UGx1Z2luKToKKyAgICAgICAgKFFXZWJPYmplY3RQbHVnaW46OmRlc2NyaXB0
aW9uRm9yS2V5KToKKyAgICAgICAgKFFXZWJPYmplY3RQbHVnaW46Om1pbWV0eXBlc0ZvcktleSk6
CisgICAgICAgIChRV2ViT2JqZWN0UGx1Z2luOjpleHRlbnNpb25zRm9yTWltZXR5cGUpOgorICAg
ICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luLmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkv
cXdlYm9iamVjdHBsdWdpbi5oLgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luX3AuaDog
UmVuYW1lZCBmcm9tIFdlYktpdFF0L0FwaS9xd2Vib2JqZWN0cGx1Z2luX3AuaC4KKyAgICAgICAg
KFFXZWJGYWN0b3J5TG9hZGVyOjpuYW1lcyk6CisgICAgICAgIChRV2ViRmFjdG9yeUxvYWRlcjo6
c3VwcG9ydHNNaW1lVHlwZSk6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0
b3IuY3BwOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0
b3IuY3BwLgorICAgICAgICAoUVdlYk9iamVjdFBsdWdpbkNvbm5lY3Rvcjo6UVdlYk9iamVjdFBs
dWdpbkNvbm5lY3Rvcik6CisgICAgICAgIChRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9yOjpmcmFt
ZSk6CisgICAgICAgIChRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9yOjpwbHVnaW5QYXJlbnRXaWRn
ZXQpOgorICAgICAgICAoUVdlYk9iamVjdFBsdWdpbkNvbm5lY3Rvcjo6cmVxdWVzdFVybCk6Cisg
ICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuaDogUmVuYW1lZCBmcm9tIFdl
YktpdFF0L0FwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9yLmguCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDogUmVuYW1lZCBmcm9tIFdlYktpdFF0L0FwaS9xd2VicGFnZS5jcHAuCisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6On5RV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpu
YXZpZ2F0aW9uUmVxdWVzdGVkKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlTWFp
bkZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjpRV2ViUGFnZSk6CisgICAgICAgIChRV2ViUGFn
ZTo6flFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjpjcmVhdGVGcmFtZSk6CisgICAgICAg
IChRV2ViUGFnZTo6b3Blbik6CisgICAgICAgIChRV2ViUGFnZTo6dXJsKToKKyAgICAgICAgKFFX
ZWJQYWdlOjp0aXRsZSk6CisgICAgICAgIChRV2ViUGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAg
KFFXZWJQYWdlOjpzaXplSGludCk6CisgICAgICAgIChRV2ViUGFnZTo6c3RvcCk6CisgICAgICAg
IChRV2ViUGFnZTo6aGlzdG9yeSk6CisgICAgICAgIChRV2ViUGFnZTo6Z29CYWNrKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpnb0ZvcndhcmQpOgorICAgICAgICAoUVdlYlBhZ2U6OmdvVG9IaXN0b3J5
SXRlbSk6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKToKKyAg
ICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUVdlYlBhZ2U6Omph
dmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToK
KyAgICAgICAgKFFXZWJQYWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoUVdlYlBhZ2U6OmNy
ZWF0ZU1vZGFsRGlhbG9nKToKKyAgICAgICAgKFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorICAg
ICAgICAoUVdlYlBhZ2U6Om5hdmlnYXRpb25SZXF1ZXN0ZWQpOgorICAgICAgICAoUVdlYlBhZ2U6
OnNldFdpbmRvd0dlb21ldHJ5KToKKyAgICAgICAgKFFXZWJQYWdlOjpjYW5DdXQpOgorICAgICAg
ICAoUVdlYlBhZ2U6OmNhbkNvcHkpOgorICAgICAgICAoUVdlYlBhZ2U6OmNhblBhc3RlKToKKyAg
ICAgICAgKFFXZWJQYWdlOjpjdXQpOgorICAgICAgICAoUVdlYlBhZ2U6OmNvcHkpOgorICAgICAg
ICAoUVdlYlBhZ2U6OnBhc3RlKToKKyAgICAgICAgKFFXZWJQYWdlOjppc01vZGlmaWVkKToKKyAg
ICAgICAgKFFXZWJQYWdlOjp1bmRvU3RhY2spOgorICAgICAgICAoZHJvcEFjdGlvblRvRHJhZ09w
KToKKyAgICAgICAgKGRyYWdPcFRvRHJvcEFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6cmVz
aXplRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OnBhaW50RXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjptb3VzZVByZXNzRXZl
bnQpOgorICAgICAgICAoUVdlYlBhZ2U6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAg
IChRV2ViUGFnZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OndoZWVs
RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6Zm9jdXNJbkV2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlOjpmb2N1c091dEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdl
Ojpmb2N1c05leHRQcmV2Q2hpbGQpOgorICAgICAgICAoUVdlYlBhZ2U6OmRyYWdFbnRlckV2ZW50
KToKKyAgICAgICAgKFFXZWJQYWdlOjpkcmFnTGVhdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFn
ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6ZHJvcEV2ZW50KToKKyAgICAg
ICAgKFFXZWJQYWdlOjpzZXROZXR3b3JrSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJQYWdlOjpu
ZXR3b3JrSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJQYWdlOjppY29uKToKKyAgICAgICAgKFFX
ZWJQYWdlOjpzZXRTZXR0aW5ncyk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0dGluZ3MpOgorICAg
ICAgICAoUVdlYlBhZ2U6OmNob29zZUZpbGUpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldE5ldHdv
cmtQcm94eSk6CisgICAgICAgIChRV2ViUGFnZTo6bmV0d29ya1Byb3h5KToKKyAgICAgICAgKFFX
ZWJQYWdlOjp1c2VyQWdlbnRTdHJpbmdGb3JVcmwpOgorICAgICAgICAoUVdlYlBhZ2U6Om9uTG9h
ZFByb2dyZXNzQ2hhbmdlZCk6CisgICAgICAgIChRV2ViUGFnZTo6dG90YWxCeXRlcyk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcXdlYnBhZ2Uu
aC4KKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvQXBp
L3F3ZWJwYWdlX3AuaC4KKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0b3J5LmNwcDogUmVuYW1l
ZCBmcm9tIFdlYktpdFF0L0FwaS9xd2VicGFnZWhpc3RvcnkuY3BwLgorICAgICAgICAoUVdlYkhp
c3RvcnlJdGVtOjpRV2ViSGlzdG9yeUl0ZW0pOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjpv
cGVyYXRvcj0pOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjp+UVdlYkhpc3RvcnlJdGVtKToK
KyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6b3JpZ2luYWxVcmwpOgorICAgICAgICAoUVdlYkhp
c3RvcnlJdGVtOjpjdXJyZW50VXJsKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6dGl0bGUp
OgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjpsYXN0VmlzaXRlZCk6CisgICAgICAgIChRV2Vi
SGlzdG9yeUl0ZW06Omljb24pOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5OjpRV2ViUGFnZUhp
c3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5OjppdGVtQXRJbmRleCk6CisgICAgICAg
IChRV2ViUGFnZUhpc3Rvcnk6Om9wZXJhdG9yPSk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6
On5RV2ViUGFnZUhpc3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5OjppdGVtcyk6Cisg
ICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmJhY2tJdGVtcyk6CisgICAgICAgIChRV2ViUGFnZUhp
c3Rvcnk6OmZvcndhcmRJdGVtcyk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmNhbkdvQmFj
ayk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmNhbkdvRm9yd2FyZCk6CisgICAgICAgIChR
V2ViUGFnZUhpc3Rvcnk6OmdvQmFjayk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmdvRm9y
d2FyZCk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmdvVG9JdGVtKToKKyAgICAgICAgKFFX
ZWJQYWdlSGlzdG9yeTo6YmFja0l0ZW0pOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5OjpjdXJy
ZW50SXRlbSk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmZvcndhcmRJdGVtKToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2VoaXN0b3J5Lmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcXdl
YnBhZ2VoaXN0b3J5LmguCisgICAgICAgIChRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyOjpv
cGVyYXRvciopOgorICAgICAgICAoUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6b3BlcmF0
b3ItPik6CisgICAgICAgIChRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyOjpvcGVyYXRvciBU
ICopOgorICAgICAgICAoUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6b3BlcmF0b3IgY29u
c3QgVCAqKToKKyAgICAgICAgKFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI6OmRhdGEpOgor
ICAgICAgICAoUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6Y29uc3REYXRhKToKKyAgICAg
ICAgKFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
UUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChRRXhw
bGljaXRseVNoYXJlZERhdGFQb2ludGVyOjpRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyKToK
KyAgICAgICAgKFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI6On5RRXhwbGljaXRseVNoYXJl
ZERhdGFQb2ludGVyKToKKyAgICAgICAgKFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyOjpvcGVyYXRv
ciEpOgorICAgICAgICAoOjpRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyKToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2VoaXN0b3J5X3AuaDogUmVuYW1lZCBmcm9tIFdlYktpdFF0L0FwaS9xd2Vi
cGFnZWhpc3RvcnlfcC5oLgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6UVdlYkhp
c3RvcnlJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjp+UVdl
Ykhpc3RvcnlJdGVtUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZUhpc3RvcnlQcml2YXRlOjpR
V2ViUGFnZUhpc3RvcnlQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlSGlzdG9yeVByaXZhdGU6
On5RV2ViUGFnZUhpc3RvcnlQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNw
cDogUmVuYW1lZCBmcm9tIFdlYktpdFF0L0FwaS9xd2Vic2V0dGluZ3MuY3BwLgorICAgICAgICAo
UVdlYlNldHRpbmdzUHJpdmF0ZTo6UVdlYlNldHRpbmdzUHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6On5RV2ViU2V0
dGluZ3MpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRNaW5pbXVtRm9udFNpemUpOgorICAg
ICAgICAoUVdlYlNldHRpbmdzOjptaW5pbXVtRm9udFNpemUpOgorICAgICAgICAoUVdlYlNldHRp
bmdzOjpzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
bWluaW11bUxvZ2ljYWxGb250U2l6ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldERlZmF1
bHRGb250U2l6ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OmRlZmF1bHRGb250U2l6ZSk6Cisg
ICAgICAgIChRV2ViU2V0dGluZ3M6OnNldERlZmF1bHRGaXhlZEZvbnRTaXplKToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6ZGVmYXVsdEZpeGVkRm9udFNpemUpOgorICAgICAgICAoUVdlYlNldHRp
bmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
dXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldEljb25E
YXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjppY29uRGF0YWJhc2VFbmFi
bGVkKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0V2ViR3JhcGhpYyk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OndlYkdyYXBoaWMpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpvcGVyYXRv
cj0pOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRHbG9iYWwpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjpnbG9iYWwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRGb250RmFtaWx5KToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6Zm9udEZhbWlseSk6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnRlc3RBdHRyaWJ1dGUp
OgorICAgICAgICAobG9hZFJlc291cmNlUGl4bWFwKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9BcGkvcXdlYnNldHRpbmdzLmguCisgICAgICAg
ICogQ2hhbmdlTG9nOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvQ2hhbmdlTG9nLgorICAgICAgICAq
IFBsdWdpbnMvSUNPSGFuZGxlci5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9QbHVnaW5zL0lD
T0hhbmRsZXIuY3BwLgorICAgICAgICAoSWNvSGVhZGVyOjpvcGVyYXRvciA+Pik6CisgICAgICAg
IChJY29IZWFkZXI6OkJNUF9JTkZPSERSOjopOgorICAgICAgICAoSWNvSGVhZGVyOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKEljb0hlYWRlcjo6TGVzc0RpZmZlcmVuY2U6Okxlc3NEaWZmZXJlbmNl
KToKKyAgICAgICAgKEljb0hlYWRlcjo6TGVzc0RpZmZlcmVuY2U6Om9wZXJhdG9yICgpKToKKyAg
ICAgICAgKEljb0hlYWRlcjo6bG9hZEZyb21ESUIpOgorICAgICAgICAoSUNPSGFuZGxlcjo6SUNP
SGFuZGxlcik6CisgICAgICAgIChJQ09IYW5kbGVyOjpjYW5SZWFkKToKKyAgICAgICAgKElDT0hh
bmRsZXI6OnJlYWQpOgorICAgICAgICAoSUNPSGFuZGxlcjo6d3JpdGUpOgorICAgICAgICAoSUNP
SGFuZGxlcjo6bmFtZSk6CisgICAgICAgIChJQ09QbHVnaW46OmtleXMpOgorICAgICAgICAoSUNP
UGx1Z2luOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoSUNPUGx1Z2luOjpjcmVhdGUpOgorICAg
ICAgICAqIFBsdWdpbnMvSUNPSGFuZGxlci5oOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvUGx1Z2lu
cy9JQ09IYW5kbGVyLmguCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5zLnBybzogUmVuYW1lZCBm
cm9tIFdlYktpdFF0L1BsdWdpbnMvUGx1Z2lucy5wcm8uCisgICAgICAgICogUXRMYXVuY2hlci9R
dExhdW5jaGVyLnBybzogUmVuYW1lZCBmcm9tIFdlYktpdFF0L1F0TGF1bmNoZXIvUXRMYXVuY2hl
ci5wcm8uCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDogUmVuYW1lZCBmcm9tIFdlYktp
dFF0L1F0TGF1bmNoZXIvbWFpbi5jcHAuCisgICAgICAgIChIb3ZlckxhYmVsOjpIb3ZlckxhYmVs
KToKKyAgICAgICAgKEhvdmVyTGFiZWw6OnNldEhvdmVyTGluayk6CisgICAgICAgIChIb3Zlckxh
YmVsOjpzaXplRm9yRm9udCk6CisgICAgICAgIChIb3ZlckxhYmVsOjpzaXplSGludCk6CisgICAg
ICAgIChIb3ZlckxhYmVsOjp1cGRhdGVTaXplKToKKyAgICAgICAgKEhvdmVyTGFiZWw6OnJlc2V0
QW5pbWF0aW9uKToKKyAgICAgICAgKEhvdmVyTGFiZWw6OnBhaW50RXZlbnQpOgorICAgICAgICAo
SG92ZXJMYWJlbDo6aW50ZXJwb2xhdGUpOgorICAgICAgICAoQ2xlYXJCdXR0b246OkNsZWFyQnV0
dG9uKToKKyAgICAgICAgKENsZWFyQnV0dG9uOjpwYWludEV2ZW50KToKKyAgICAgICAgKFNlYXJj
aEVkaXQ6OlNlYXJjaEVkaXQpOgorICAgICAgICAoU2VhcmNoRWRpdDo6flNlYXJjaEVkaXQpOgor
ICAgICAgICAoU2VhcmNoRWRpdDo6cGFpbnRFdmVudCk6CisgICAgICAgIChTZWFyY2hFZGl0Ojpy
ZXNpemVFdmVudCk6CisgICAgICAgIChTZWFyY2hFZGl0Ojptb3ZlRXZlbnQpOgorICAgICAgICAo
TWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAgICAgIChNYWluV2luZG93OjpjaGFuZ2VMb2Nh
dGlvbik6CisgICAgICAgIChNYWluV2luZG93Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAoTWFp
bldpbmRvdzo6c2hvd0xpbmtIb3Zlcik6CisgICAgICAgIChNYWluV2luZG93OjpyZXNpemVFdmVu
dCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Q2hyb21lQ2xpZW50
UXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6On5DaHJvbWVDbGllbnRRdCk6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0V2luZG93UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6d2luZG93UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6cGFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OnNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0
Ojpmb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dW5mb2N1cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2FuVGFrZUZvY3VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp0YWtlRm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDo6Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNhblJ1bk1v
ZGFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5Nb2RhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0VG9vbGJhcnNWaXNpYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp0b29sYmFyc1Zpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnN0YXR1c2JhclZpc2libGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFNjcm9sbGJhcnNWaXNpYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpzY3JvbGxiYXJzVmlzaWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0TWVudWJhclZpc2libGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50UXQ6Om1lbnViYXJWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjpzZXRSZXNpemFibGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OmNocm9tZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRR
dDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudFF0OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNsb3NlV2luZG93U29vbik6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6c2V0U3RhdHVzYmFyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6dGFic1RvTGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50UXQ6OndpbmRvd1Jlc2l6ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudFF0OjphZGRUb0RpcnR5UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0OjpzY3JvbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xp
ZW50UXQ6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OnNldFRvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6
OnByaW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOiBSZW5h
bWVkIGZyb20gV2ViS2l0UXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaC4KKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmNwcDogUmVuYW1lZCBmcm9t
IFdlYktpdFF0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6Y29udGV4dE1lbnVEZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6Z2V0Q3VzdG9tTWVudUZyb21E
ZWZhdWx0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGll
bnRRdDo6ZG93bmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRR
dDo6bG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50UXQ6OnNwZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OnN0
b3BTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFF0OjpzZWFy
Y2hXaXRoR29vZ2xlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFF0Lmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudFF0LmguCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDogUmVu
YW1lZCBmcm9tIFdlYktpdFF0L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OmFjdGlvbk1hc2tGb3JEcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpkcmFnQ29udHJvbGxlckRlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0Ojp3aWxsUGVyZm9ybURy
YWdTb3VyY2VBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpzdGFydERy
YWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oOiBSZW5hbWVkIGZy
b20gV2ViS2l0UXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmguCisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ2xpZW50UXQ6OkRyYWdDbGllbnRRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdENvbW1hbmRRdC5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJDb3JlU3VwcG9y
dC9FZGl0Q29tbWFuZFF0LmNwcC4KKyAgICAgICAgKEVkaXRDb21tYW5kUXQ6OkVkaXRDb21tYW5k
UXQpOgorICAgICAgICAoRWRpdENvbW1hbmRRdDo6fkVkaXRDb21tYW5kUXQpOgorICAgICAgICAo
RWRpdENvbW1hbmRRdDo6cmVkbyk6CisgICAgICAgIChFZGl0Q29tbWFuZFF0Ojp1bmRvKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0Lmg6IFJlbmFtZWQgZnJvbSBXZWJL
aXRRdC9XZWJDb3JlU3VwcG9ydC9FZGl0Q29tbWFuZFF0LmguCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OnNob3VsZERlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRFbmRFZGl0aW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmRpZEVuZEVkaXRpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpkaWRTZXRTZWxlY3Rp
b25UeXBlc0ZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OnNlbGVjdFdvcmRCZWZvcmVNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OmlzRWRpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJl
Z2lzdGVyQ29tbWFuZEZvclVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OnJlZ2lzdGVyQ29tbWFuZEZvclJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0OjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjYW5S
ZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojp1bmRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0OjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudFF0Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleXByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFF0OjpoYW5kbGVJbnB1dE1ldGhvZEtleXByZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0OjpFZGl0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFF0Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dGV4dFdpbGxCZURlbGV0ZWRJblRl
eHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dGV4dERpZENoYW5n
ZUluVGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Omlnbm9yZVdv
cmRJblNwZWxsRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6Omxl
YXJuV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2hlY2tTcGVsbGlu
Z09mU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpjaGVja0dyYW1t
YXJPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0OjpzaG93U3BlbGxpbmdVSSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6c3BlbGxpbmdVSUlzU2hvd2luZyk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6Z2V0R3Vlc3Nlc0ZvcldvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50UXQ6OmlzRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaDogUmVuYW1lZCBmcm9tIFdlYktpdFF0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmguCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6fkZy
YW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6c2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2Vi
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbFBvbGlj
eUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNsb3RD
YWxsUG9saWN5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6aGFzV2ViVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpo
YXNGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aGFz
QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnJlc2V0QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnByb3Zpc2lvbmFsSXRlbUlzVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tUGFnZUNhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmludmFsaWRhdGVDdXJyZW50SXRlbVBh
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwcml2YXRl
QnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
Om1ha2VEb2N1bWVudFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6bWFrZVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmZvcmNlTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpzZXRDb3BpZXNPblNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0Ojp0b2tlbkZvckxvYWRFcnJvclJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlc2V0QWZ0ZXJMb2FkRXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZG9Ob3RSZXNldEFmdGVyTG9hZEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDbG9zZURvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRldGFjaGVkRnJvbVBhcmVu
dDIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGV0YWNoZWRGcm9t
UGFyZW50Myk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkZXRhY2hl
ZEZyb21QYXJlbnQ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Omxv
YWRlZEZyb21DYWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRp
b25XaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoV2lsbENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1l
bnRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZEZpcnN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoU2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpjYW5jZWxQb2xpY3lDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjbGVhckxvYWRpbmdGcm9tUGFnZUNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmlzTG9hZGluZ0Zyb21QYWdl
Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cmV2ZXJ0VG9Q
cm92aXNpb25hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmNsZWFyVW5hcmNoaXZpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJv
Z3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZmluYWxTZXR1cEZvclJlcGxhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojppc0FyY2hpdmVMb2FkUGVuZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5jZWxQZW5kaW5nQXJjaGl2
ZUxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2xlYXJBcmNo
aXZlZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
YW5TaG93TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
cmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZnJhbWVMb2FkQ29tcGxldGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlc3RvcmVWaWV3U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRUcmVh
dFVSTEFzU2FtZUFzQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjphZGRIaXN0b3J5SXRlbUZvckZyYWdtZW50U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp1c2VyQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxvYWRlckRlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5IYW5kbGVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbmRvd09iamVjdENs
ZWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUGVyZm9y
bUZpcnN0TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpyZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6c2V0RG9jdW1lbnRWaWV3RnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeUZvclN0YW5k
YXJkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5Rm9yUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpzYXZlVmlld1N0YXRlVG9JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVEb2N1bWVudFZpZXdUb0NhY2hlZFBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuQ2FjaGVQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1pdHRlZExvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsbGVkRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6YmxvY2tlZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbm5vdFNob3dVUkxFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjppbnRlcnJ1cHRGb3JQb2xpY3lD
aGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6c2hvdWxkRmFsbEJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnN0YXJ0RG93bmxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbFVzZUFyY2hpdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpyZWRpcmVjdERhdGFUb1BsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6Om92ZXJyaWRlTWVkaWFUeXBlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmguCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50UXQ6Omluc3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDbGllbnRRdDo6Y3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRRdDo6c2hvd1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6
Y2xvc2VXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmF0dGFj
aFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6ZGV0YWNoV2lu
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpoaWdobGlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmhpZGVIaWdobGlnaHQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6IFJlbmFtZWQgZnJvbSBX
ZWJLaXRRdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oLgorICAgICAgICAqIFdl
YktpdFBhcnQvV2ViS2l0RmFjdG9yeS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJLaXRQ
YXJ0L1dlYktpdEZhY3RvcnkuY3BwLgorICAgICAgICAoV2ViS2l0RmFjdG9yeTo6V2ViS2l0RmFj
dG9yeSk6CisgICAgICAgIChXZWJLaXRGYWN0b3J5Ojp+V2ViS2l0RmFjdG9yeSk6CisgICAgICAg
IChXZWJLaXRGYWN0b3J5OjpjcmVhdGVQYXJ0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdEZhY3Rv
cnk6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYktpdEZhY3Rvcnk6OnJlZik6CisgICAgICAgIChX
ZWJLaXRGYWN0b3J5OjpkZXJlZik6CisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRGYWN0b3J5
Lmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJLaXRQYXJ0L1dlYktpdEZhY3RvcnkuaC4KKyAg
ICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnQuY3BwOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQv
V2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcC4KKyAgICAgICAgKFdlYktpdFBhcnQ6OldlYktpdFBh
cnQpOgorICAgICAgICAoV2ViS2l0UGFydDo6fldlYktpdFBhcnQpOgorICAgICAgICAoV2ViS2l0
UGFydDo6b3BlbkZpbGUpOgorICAgICAgICAoV2ViS2l0UGFydDo6b3BlblVybCk6CisgICAgICAg
IChXZWJLaXRQYXJ0OjpjbG9zZVVybCk6CisgICAgICAgIChXZWJLaXRQYXJ0OjpwYXJlbnRQYXJ0
KToKKyAgICAgICAgKFdlYktpdFBhcnQ6OmZyYW1lKToKKyAgICAgICAgKFdlYktpdFBhcnQ6Omlu
aXRWaWV3KToKKyAgICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnQuZGVza3RvcDogUmVuYW1l
ZCBmcm9tIFdlYktpdFF0L1dlYktpdFBhcnQvV2ViS2l0UGFydC5kZXNrdG9wLgorICAgICAgICAq
IFdlYktpdFBhcnQvV2ViS2l0UGFydC5oOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvV2ViS2l0UGFy
dC9XZWJLaXRQYXJ0LmguCisgICAgICAgIChXZWJLaXRQYXJ0OjopOgorICAgICAgICAqIFdlYktp
dFBhcnQvV2ViS2l0UGFydC5yYzogUmVuYW1lZCBmcm9tIFdlYktpdFF0L1dlYktpdFBhcnQvV2Vi
S2l0UGFydC5yYy4KKyAgICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRCcm93c2VyLnJjOiBS
ZW5hbWVkIGZyb20gV2ViS2l0UXQvV2ViS2l0UGFydC9XZWJLaXRQYXJ0QnJvd3Nlci5yYy4KKyAg
ICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRCcm93c2VyRXh0ZW5zaW9uLmNwcDogUmVuYW1l
ZCBmcm9tIFdlYktpdFF0L1dlYktpdFBhcnQvV2ViS2l0UGFydEJyb3dzZXJFeHRlbnNpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0UGFydEJyb3dzZXJFeHRlbnNpb246OldlYktpdFBhcnRCcm93c2Vy
RXh0ZW5zaW9uKToKKyAgICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRCcm93c2VyRXh0ZW5z
aW9uLmg6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJLaXRQYXJ0L1dlYktpdFBhcnRCcm93c2Vy
RXh0ZW5zaW9uLmguCisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0Q2xpZW50LmNwcDog
UmVuYW1lZCBmcm9tIFdlYktpdFF0L1dlYktpdFBhcnQvV2ViS2l0UGFydENsaWVudC5jcHAuCisg
ICAgICAgIChXZWJLaXRQYXJ0Q2xpZW50OjpXZWJLaXRQYXJ0Q2xpZW50KToKKyAgICAgICAgKFdl
YktpdFBhcnRDbGllbnQ6On5XZWJLaXRQYXJ0Q2xpZW50KToKKyAgICAgICAgKiBXZWJLaXRQYXJ0
L1dlYktpdFBhcnRDbGllbnQuaDogUmVuYW1lZCBmcm9tIFdlYktpdFF0L1dlYktpdFBhcnQvV2Vi
S2l0UGFydENsaWVudC5oLgorICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydEludGVyZmFj
ZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJLaXRRdC9XZWJLaXRQYXJ0L1dlYktpdFBhcnRJbnRlcmZh
Y2UuY3BwLgorICAgICAgICAoV2ViS2l0UGFydEludGVyZmFjZTo6V2ViS2l0UGFydEludGVyZmFj
ZSk6CisgICAgICAgIChXZWJLaXRQYXJ0SW50ZXJmYWNlOjp+V2ViS2l0UGFydEludGVyZmFjZSk6
CisgICAgICAgIChXZWJLaXRQYXJ0SW50ZXJmYWNlOjp1cmwpOgorICAgICAgICAqIFdlYktpdFBh
cnQvV2ViS2l0UGFydEludGVyZmFjZS5oOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvV2ViS2l0UGFy
dC9XZWJLaXRQYXJ0SW50ZXJmYWNlLmguCisgICAgICAgICogV2ViS2l0UGFydC9vcmcua2RlLldl
YktpdFBhcnQueG1sOiBSZW5hbWVkIGZyb20gV2ViS2l0UXQvV2ViS2l0UGFydC9vcmcua2RlLldl
YktpdFBhcnQueG1sLgorCisyMDA3LTEwLTAyICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3Jj
aG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAg
ICAgT3BlbiB0aGUgcmVxdWVzdGVkIHVybCBvbiB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cuCisg
ICAgICAgIEltcGxlbWVudCBjcmVhdGVNb2RhbERpYWxvZyBhbmQgcHJvdmlkZSBuZXcgQVBJIGZv
ciB0aGlzLgorICAgICAgICBQYXRjaCBieSBNLiBNZWhkaSBTYWxlbSBOYXJhZ2hpIChtb21lc2Fu
YSkgd2l0aCBhZGRpdGlvbnMgYnkgbWUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2U6OmNyZWF0ZU1vZGFsRGlhbG9nKToKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVNb2RhbERpYWxvZyk6CisKKzIwMDctMTAt
MDIgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgYmRhc2guCisKKyAgICAgICAgQWRkIEFQSSB0byByZXRyaWV2ZSB0aGUgZnJhbWUgbmFtZSBm
cm9tIFFXZWJGcmFtZS4KKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIERSVDo6ZHVtcENo
aWxkcmVuQXNUZXh0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChR
V2ViRnJhbWU6Om5hbWUpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKworMjAwNy0xMC0w
MiAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBiZGFzaC4KKworICAgICAgICBGaXggdGhlIGhhbmRsaW5nIG9mIHRoZSByZXNwb25zZSBoZWFk
ZXIgZm9yIGRhdGEgdXJscy4gTWFrZSBzdXJlIHdlIGFsd2F5cyBwYXNzIGFic29sdXRlIFVSTHMg
dG8gV2ViS2l0IGZyb20gYm90aCBEUlQgYW5kIFF0TGF1bmNoZXIuCisKKyAgICAgICAgKiBBcGkv
cXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpz
dGFydGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6ZGF0YSk6CisgICAgICAgIChR
V2ViTmV0d29ya01hbmFnZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJm
YWNlUHJpdmF0ZTo6c2VuZEZpbGVEYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNl
UHJpdmF0ZTo6cGFyc2VEYXRhVXJsKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpzY2hlZHVsZU5l
eHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblNzbEVycm9ycyk6CisgICAgICAg
ICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorCisyMDA3LTEwLTAxICBM
YXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMuCisKKyAgICAgICAgRml4IGEgd3JvbmcgZXh0ZW5zaW9uIG1hcHBpbmcgaW4gdGhlIE1JTUVU
eXBlUmVnaXN0cnkgYW5kIGlkZW50aWZ5IGFib3V0OiB1cmwncyBhcyBmcmFtZXMgaW4gdGhlIEZy
YW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjptYWtl
RG9jdW1lbnRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisyMDA3LTA5LTMw
ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBRdCBidWlsZCBm
aXggKE9TIFggc3BlY2lmaWMpLgorCisgICAgICAgICogUXRMYXVuY2hlci9RdExhdW5jaGVyLnBy
bzoKKworMjAwNy0wOS0yNiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAg
IFF0IGJ1aWxkIGZpeC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0
Q29udGVudFR5cGUpOiBDaGVjayBmb3IgZW1wdHkgVVJMIGluc3RlYWQgb2YgaW52YWxpZCBVUkwu
CisKKzIwMDctMDktMjUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbS4KKworICAgICAgICAtIEZpeCBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4NQorICAgICAgICAgIExHUEwnZWQgZmlsZXMgY29u
dGFpbiBpbmNvcnJlY3QgRlNGIGFkZHJlc3MKKworICAgICAgICAqIEFwaS9xY29va2llamFyLmNw
cDoKKyAgICAgICAgKiBBcGkvcWNvb2tpZWphci5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
X3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwOgorICAgICAgICAq
IEFwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oOgorICAgICAgICAqIEFwaS9xd2Via2l0Z2xvYmFs
Lmg6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBB
cGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRl
cmZhY2VfcC5oOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luLmNwcDoKKyAgICAgICAg
KiBBcGkvcXdlYm9iamVjdHBsdWdpbi5oOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2lu
Y29ubmVjdG9yLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5o
OgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0
b3J5LmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0b3J5Lmg6CisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRDb21tYW5kUXQuaDoKKworMjAwNy0wOS0yNSAgQWRhbSBUcmVhdCAgPGFkYW0u
dHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIGFuZCBM
YXJzLgorCisgICAgICAgIE1vZGlmaWVzIHRoZSBhZGRUb0pTV2luZG93T2JqZWN0IHRvIGJpbmQg
anMgb2JqZWN0cyB1c2luZyB0aGUgYnVpbHQtaW4KKyAgICAgICAga2pzX3dpbmRvdyBjbGFzcy4g
IE1ha2Ugc3VyZSB0byBwcm90ZWN0IHRoZSBjcmVhdGVkIHJ1bnRpbWUgb2JqZWN0IGZyb20KKyAg
ICAgICAgZ2FyYmFnZSBjb2xsZWN0aW9uLgorCisgICAgICAgIEFkZHMgYSBzaWduYWwgdG8gUVdl
YkZyYW1lIHRvIG5vdGlmeSBjbGllbnRzIG9mIHRoZSBiZWdpbm5pbmcgb2YgYQorICAgICAgICBw
cm92aXNpb25hbCBsb2FkLiAgRFJUIG5lZWRzIHRoaXMuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6YWRkVG9KU1dpbmRvd09iamVjdCk6CisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisKKzIwMDctMDktMTAgIFFpbmcgWmhh
byAgPHFpbmdAc3RhaWtvcy5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlr
b3MuCisKKyAgICAgICAgRG9uJ3QgcmUtZW5jb2RlIHVybHMsIHJlc3VsdGluZyBpbiBkb3VibGUg
ZW5jb2RpbmcuICBGaXhlcyBsb2dpbiB0bworICAgICAgICBHTWFpbC4KKworICAgICAgICAqIEFw
aS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0d29ya1JlcXVlc3RQ
cml2YXRlOjppbml0KToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisK
KzIwMDctMDktMDggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgICBRdCBi
dWlsZCBmaXguICBNb3ZlIHN0dWIgbWV0aG9kIGltcGxlbWVudGF0aW9ucyB0byB0aGUgcmlnaHQg
Y2xhc3MuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFBlcmZvcm1GaXJz
dE5hdmlnYXRpb24pOgorCisyMDA3LTA5LTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBZQUJGIChZZXQgQW5vdGhlciBCdWlsZCBGaXgpCisKKyAgICAgICAg
KiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkRhdGFi
YXNlRW5hYmxlZCk6CisKKzIwMDctMDktMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIEJldHRlciBidWlsZCBmaXgKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTA5LTA4ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBCdWlsZCBmaXgKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnQ6OnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTA5LTA1
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIsIE1hY2llaiBTdGFjaG93aWFrLCBNYXJrIFJvd2UsIFRpbSBIYXRjaGVy
LgorICAgICAgICAKKyAgICAgICAgRml4ZWQgPHJkYXI6Ly9wcm9ibGVtLzUzMjYwMDk+IE1ha2Ug
bm9uLWJyb3dzZXIgV2ViS2l0IGNsaWVudHMgaGF2ZSBubyAKKyAgICAgICAgbWVtb3J5IGNhY2hl
LCBvciBhIHZlcnkgdGlueSBvbmUKKyAgICAgICAgCisgICAgICAgIEtlZXAgdGhlIFF0IGJ1aWxk
IHdvcmtpbmcgd2l0aCBhbiBlbXB0eSBzdHViLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDctMDktMDcgIEdlb3JnZSBT
dGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIEZpeCB0eXBvLgorCisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpvbkxvYWRQcm9ncmVzc0No
YW5nZWQpOgorCisyMDA3LTA5LTA3ICBRaW5nIFpoYW8gIDxxaW5nQHN0YWlrb3MubmV0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBhbmQgR2VvcmdlLgorCisgICAgICAgIEV4cG9ydCBw
YWdlIHNpemUgYW5kIGxvYWQgcHJvZ3Jlc3MgaW4gYnl0ZXMuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQ
YWdlOjpvbkxvYWRQcm9ncmVzc0NoYW5nZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OnRvdGFsQnl0
ZXMpOgorICAgICAgICAoUVdlYlBhZ2U6OmJ5dGVzUmVjZWl2ZWQpOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisKKzIwMDctMDktMDYgIEdl
b3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycy4KKworICAgICAgICBNYWtlIHBvcHVwIHdpbmRvd3Mgd29yayBhZ2Fpbi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24pOgorCisyMDA3LTA5LTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MzQ0ODQ4PiBJTUUgaXMgaW5jb3JyZWN0bHkgdXNlZCBmb3Iga2V5IGV2ZW50cyB3aGVuIG9uIG5v
bi1lZGl0YWJsZSByZWdpb25zCisgCisgICAgICAgIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZSBzdHViCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2V0SW5wdXRNZXRob2RTdGF0
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAwNy0w
OC0zMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFphY2suCisKKyAgICAgICAgVXNlIFFLZXlTZXF1ZW5jZTo6U3RhbmRhcmRLZXkgZm9y
IHRoZSBwYWdlIHdpc2Ugc2Nyb2xsaW5nIHNob3J0Y3V0cy4KKworICAgICAgICAqIEFwaS9xd2Vi
cGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6a2V5UHJlc3NFdmVudCk6CisKKzIwMDctMDgt
MzAgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBaYWNrLgorCisgICAgICAgIFdoZW4gc2Nyb2xsaW5nIHdpdGggdGhlIGtleWJvYXJkIGRv
bid0IGNhbGwgdXBkYXRlKCkgb24gdGhlIGVudGlyZSB3aWRnZXQuCisgICAgICAgIFRoZSBzY3Jv
bGxiYXIvc2Nyb2xsdmlldyBpbXBsZW1lbnRhdGlvbiBpcyBhbHJlYWR5IHNtYXJ0IGVub3VnaCB0
byBzY3JvbGwgd2l0aCBiaXRibHQKKyAgICAgICAgb24gYSB2YWx1ZSBjaGFuZ2UuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmtleVByZXNzRXZlbnQp
OgorCisyMDA3LTA4LTMwICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICBGaXggc2Nyb2xsaW5nIHdpdGggdGhl
IGtleWJvYXJkIGlmIG9ubHkgb25lIG9mIHRoZSB0d28gc2Nyb2xsYmFycyBpcyB2aXNpYmxlLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjprZXlQcmVz
c0V2ZW50KToKKworMjAwNy0wOC0yOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFphY2suCisKKyAgICAgICAgRml4IGNvbXBpbGF0aW9u
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6
CisKKzIwMDctMDgtMTkgIE1pa2UgSG9tbWV5ICA8bWgrd2Via2l0QGdsYW5kaXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKworICAgICAgICBEb24ndCBleHBv
cnQgSUNPIHN5bWJvbHMuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbnMucHJvOgorCisyMDA3
LTA4LTE5ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBGaXgg
Y29tcGlsYXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBs
dWdpbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgor
CisyMDA3LTA4LTEwICBMYXJzIEtub2xsICA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGFuZCBsYW5kZWQgYnkgU2ltb24uCisKKyAgICAgICAgTGltaXQgdGhlIHNldCBv
ZiBwcm9wZXJ0aWVzIGZyb20gdGhlIGNvbXB1dGVkIHN0eWxlIHRvIGFwcGx5IHRvIFF0CisgICAg
ICAgIHBsdWdpbiB3aWRnZXRzLCBhcyBvbmx5IGEgZmV3IG9mIHRoZW0gbWFrZSBzZW5zZS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6KToKKworMjAwNy0wOC0xMCAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAgICAgICBVc2UgPG9iamVj
dD4ncyBjbGFzc2lkIGF0dHJpYnV0ZSBmb3IgY3JlYXRpb24gb2YgcGx1Z2lucyB0aHJvdWdoIFFX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCisy
MDA3LTA4LTEwICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBuZXR3b3JrIGpv
YnMgZnJvbSBRdCByZXNvdXJjZXMgdXNpbmcgdGhlIHFyYyBwcm90b2NvbC4KKworICAgICAgICAq
IEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVy
ZmFjZTo6YWRkSm9iKToKKworMjAwNy0wOC0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBr
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQWRkZWQgc3Vw
cG9ydCBmb3IgImFwcGxpY2F0aW9uL3gtcXQtc3R5bGVkLXdpZGdldCIgdGhhdCBpcyB0cmVhdGVk
IGxpa2UgImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiBidXQgYWxzbworICAgICAgICBnZXRzIGEg
UXQgd2lkZ2V0IHN0eWxlc2hlZXQgc2V0IGZyb20gdGhlIENTUyBjb21wdXRlZCBzdHlsZSBhbmQg
dGhlIGVsZW1lbnQgc3R5bGUgYXR0cmlidXRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKworMjAwNy0w
OC0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IExhcnMuCisKKyAgICAgICAgQWRkZWQgdmlydHVhbCBRV2ViUGFnZTo6Y3JlYXRlUGx1
Z2luIHRoYXQgaXMgY2FsbGVkIGZvciBlbWJlZGRlZCBvYmplY3RzIHdpdGggdGhlIG1pbWUgdHlw
ZSAiYXBwbGljYXRpb24veC1xdC1wbHVnaW4iCisgICAgICAgIGFuZCBmaXhlZCB3aWRnZXQgZW1i
ZWRkaW5nIGJ5IHNldHRpbmcgdGhlIHJpZ2h0IFFXaWRnZXQgcGFyZW50LgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
b2JqZWN0Q29udGVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlUGx1Z2luKToKKworMjAwNy0wOC0wMiAgR2VvcmdlIFN0YWlrb3MgIDxzdGFpa29z
QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCisKKyAgICAgICAgQWRkIGFu
IGludGVyZmFjZSBmb3IgdGhlIHVzZXJhZ2VudCBzdHJpbmcuCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudFN0cmluZ0ZvclVybCk6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
Ojp1c2VyQWdlbnQpOgorCisyMDA3LTA4LTAxICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3Jj
aG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAg
ICAgICAgQWRkIGFuIGludGVyZmFjZSB0byBtYW5hZ2UgZ2xvYmFsIGhpc3RvcnkgZm9yIGNsaWVu
dHMKKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToKKyAgICAgICAgKiBBcGkvcXdlYmhpc3Rv
cnlpbnRlcmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhpc3RvcnlDb250YWlu
cyk6CisgICAgICAgIChnQ2xlYW51cEludGVyZmFjZSk6CisgICAgICAgIChRV2ViSGlzdG9yeUlu
dGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFjZSk6CisgICAgICAgIChRV2ViSGlzdG9yeUludGVy
ZmFjZTo6ZGVmYXVsdEludGVyZmFjZSk6CisgICAgICAgIChRV2ViSGlzdG9yeUludGVyZmFjZTo6
UVdlYkhpc3RvcnlJbnRlcmZhY2UpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeWludGVyZmFj
ZS5oOiBBZGRlZC4KKworMjAwNy0wNy0zMCAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9yY2ht
b2JpbGUuY29tPgorCisgICAgICAgIEZpeCBidWlsZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0
OjpzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuaDoKKworMjAwNy0wNy0zMCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFu
bkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgTGluayBR
dExhdW5jaGVyIGludG8gJCRPVVRQVVRfRElSL2JpbgorCisgICAgICAgICogUXRMYXVuY2hlci9R
dExhdW5jaGVyLnBybzoKKworMjAwNy0wNy0yOSAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9y
Y2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgorCisg
ICAgICAgIENoYW5nZSBRV2ViUGFnZTo6cGFpbnRFdmVudCB0byBkcmF3IHVzaW5nIHRoZSBpbmRp
dmlkdWFsIHJlY3RzIHByb3ZpZGVkCisgICAgICAgIHZpYSB0aGUgUVJlZ2lvbiBhbmQgc2V0IHRo
ZSB3aWRnZXQgdG8gdXNlIG9wYXF1ZSBwYWludCBldmVudHMuCisKKyAgICAgICAgVGhlc2UgY2hh
bmdlcyBncmVhdGx5IHJlZHVjZSB0aGUgY3B1IGxvYWQgYXMgd2UgYXJlIG5vIGxvbmdlciBwYWlu
dGluZyB0aGUKKyAgICAgICAgZW50aXJlIHBhZ2UgZm9yIGVhY2ggMXB4IHNjcm9sbCA6UAorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OnJlbmRlcik6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpRV2ViUGFn
ZSk6CisgICAgICAgIChRV2ViUGFnZTo6cGFpbnRFdmVudCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OmFkZFRvRGlydHlSZWdpb24pOgorCisyMDA3LTA3LTI5ICBBZGFtIFRyZWF0ICA8YWRhbS50
cmVhdEB0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KKworICAgICAgICBSZXNwZWN0IHRoZSBtYXJnaW5zIHdoZW4gY3JlYXRpbmcgZnJh
bWVzLgorICAgICAgICBTZXQgdGhlIHNjcm9sbCBtb2RlIHRvIGFsd2F5cyBvZmYgbGlrZSB3ZSBk
aWQgYmVmb3JlIHRoZSByZW5kZXJlZAorICAgICAgICBmcmFtZXMgcGF0Y2ggYW5kIHRoZSBvdGhl
ciBwb3J0cyBkbyBub3cuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOgorCisyMDA3LTA3LTI3ICBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1h
cmsuCisKKyAgICAgICAgRG9uJ3QgY3JlYXRlIGFuIGFwcCBidW5kbGUgb24gT1NYIHRvIGtlZXAg
V2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIgd29ya2luZy4KKworICAgICAgICAqIFF0
TGF1bmNoZXIvUXRMYXVuY2hlci5wcm86CisKKzIwMDctMDctMjcgIFNpbW9uIEhhdXNtYW5uICA8
aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAg
IEZpeCBjb21waWxhdGlvbiB3aXRoIE1TVkMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0
b3J5LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlSGlzdG9yeTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2VoaXN0b3J5Lmg6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om9wZXJhdG9yPSk6CisgICAgICAgICogQXBpL3F3ZWJz
ZXR0aW5ncy5oOgorCisyMDA3LTA3LTI2ICBRaW5nIFpoYW8gIDxxaW5nQHN0YWlrb3MubmV0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgorCisgICAgICAgIEFkZCBhIHNp
Z25hbCBmb3IgaGlzdG9yeSBub3RpZmljYXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKwor
MjAwNy0wNy0yNCAgQWRhbSBUcmVhdCAgPGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5pa28gYW5kIExhcnMuCisKKyAgICAgICAgVGhlc2UgYXJlIG5v
IGxvbmdlciBuZWNlc3Nhcnkgb3IgdXNlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKworMjAwNy0wNy0yMCAgQWRhbSBUcmVhdCAgPGFkYW1Ac3RhaWtvcy5u
ZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgQWRk
IGEgc2lnbmFsIGZvciBmaXJzdCBsYXlvdXQgYW5kIGFkZCB0aGUgYWN0aW9uIHR5cGUgZm9yIHRo
ZSBwb2xpY3kKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpuYXZpZ2F0aW9uUmVxdWVzdGVkKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpuYXZpZ2F0aW9uUmVxdWVzdGVkKToKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorCisyMDA3LTA3LTE5ICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlLgorCisgICAgICAgIERvIGEgcmVjdXJz
aXZlIGxheW91dCBvbiB0aGUgZnJhbWUncyBjaGlsZHJlbi4gIFRoaXMgZml4ZXMgYQorICAgICAg
ICBzZWdmYXVsdCBmb3VuZCB3aGVuIHJlbmRlcmluZyBzb21lIGZyYW1lc2V0cy4KKworICAgICAg
ICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpyZW5kZXIpOgorICAg
ICAgICAoUVdlYkZyYW1lOjpsYXlvdXQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKwor
MjAwNy0wNy0xOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbS4KKworICAgICAgICBNYWtlIHRoZSBQYWdlIHdpdGggdGhlIG5v
dyByZXF1aXJlZCBJbnNwZWN0b3JDbGllbnQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3Bw
OgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAq
IFdlYktpdFBhcnQvV2ViS2l0UGFydC5jcHA6CisgICAgICAgIChXZWJLaXRQYXJ0Ojppbml0Vmll
dyk6CisKKzIwMDctMDctMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBCdWlsZCBmaXguCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmNhblNob3dNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisKKzIwMDctMDctMTggIExhcnMg
S25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrICYg
U2ltb24KKworICAgICAgICBSZWFsbG93IHNldHRpbmcgb2Ygc2Nyb2xsYmFyIHBvbGljaWVzIG9u
IFFXZWJGcmFtZS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjp2ZXJ0aWNhbFNjcm9sbEJhclBvbGljeSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNl
dFZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5KToKKyAgICAgICAgKFFXZWJGcmFtZTo6aG9yaXpvbnRh
bFNjcm9sbEJhclBvbGljeSk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorCisyMDA3LTA3
LTE3ICBBZGFtIFRyZWF0IDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KKworICAgICAgICBC
dWlsZCBmaXguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1l
KToKKworMjAwNy0wNy0xNyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxm
aXNoLm9yZz4KKworICAgICAgICBCbGluZCBidWlsZCBmaXggZm9yIFF0IGFmdGVyIHIyNDM2NiBi
eSBhZGRpbmcgdGhlIGFkZGl0aW9uYWwKKyAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBwYXJhbWV0ZXIgdG8gdGhlIGRvd25sb2FkIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRRdDo6ZG93bmxvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaDoKKworMjAwNy0wNy0xNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIENvbnRleHRNZW51Q2xpZW50UXQ6OnNob3VsZEluY2x1
ZGVJbnNwZWN0RWxlbWVudEl0ZW0KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0Lmg6CisKKzIwMDctMDctMTYgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgQ2hyb21lQ2xpZW50
UXQgZm9yIENocm9tZUNsaWVudCBjaGFuZ2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnByaW50KTogQWRkZWQgYSBGcmFtZSog
cGFyYW1ldGVyLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6IERp
dHRvLgorCisyMDA3LTA3LTEzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWl0ei4KKworICAgICAgICBCdWlsZCBmaXguICBTdHViIG91dCBDaHJv
bWVDbGllbnRRdDo6cHJpbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cHJpbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMDctMDctMTIgIEdl
b3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFF0IGJ1aWxkIGZpeCBm
b3IgYXNzZXJ0aW9ucy4KKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6
CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmFkZCk6CisKKzIwMDctMDctMTIgIEdlb3Jn
ZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFF0IGJ1aWxkIGZpeC4KKwor
ICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0
d29ya01hbmFnZXI6OmFkZCk6CisKKzIwMDctMDctMTAgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KKworICAgICAgICBRdCBidWlsZCBmaXggYWZ0ZXIgcjI0MTI2LgorCisgICAgICAgICog
QXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlw
dCk6CisKKzIwMDctMDctMTAgIEVsaSBGaWRsZXIgIDxlbGlAc3RhaWtvcy5uZXQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgUHJvcGVybHkgdXJsLWRl
Y29kZSBkYXRhIHVybHMuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZhY2VQcml2YXRlOjpwYXJzZURhdGFVcmwpOgor
CisyMDA3LTA3LTA5ICBBZGFtIFRyZWF0ICA8YWRhbUBzdGFpa29zLm5ldD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKworICAgICAgICBDb252ZXJ0IFFXZWJGcmFtZSBm
cm9tIGEgUUZyYW1lIHRvIGEgcHVyZSBRT2JqZWN0IHRvIGVsaW1pbmF0ZSBhbGwKKyAgICAgICAg
dHJhY2VzIG9mIHdpZGdldHMuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKFFXZWJGcmFtZVByaXZhdGU6OmluaXQpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6
cGFyZW50RnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAo
UVdlYkZyYW1lOjpyZW5kZXIpOgorICAgICAgICAoUVdlYkZyYW1lOjpwb3MpOgorICAgICAgICAo
UVdlYkZyYW1lOjpnZW9tZXRyeSk6CisgICAgICAgIChRV2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNj
cmlwdCk6CisgICAgICAgIChRV2ViRnJhbWU6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VEb3Vi
bGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VSZWxlYXNlRXZlbnQpOgor
ICAgICAgICAoUVdlYkZyYW1lOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
Lmg6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuY3BwOgorICAgICAg
ICAoUVdlYk9iamVjdFBsdWdpbkNvbm5lY3Rvcjo6cGx1Z2luUGFyZW50V2lkZ2V0KToKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVNYWluRnJhbWUpOgor
ICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25maXJtKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKFFXZWJQYWdlOjpyZXNp
emVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6cGFpbnRFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZTo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6Om1vdXNlUHJlc3NFdmVu
dCk6CisgICAgICAgIChRV2ViUGFnZTo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAg
KFFXZWJQYWdlOjptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6d2hlZWxF
dmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZTo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpmb2N1c0luRXZlbnQp
OgorICAgICAgICAoUVdlYlBhZ2U6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6
OmZvY3VzTmV4dFByZXZDaGlsZCk6CisgICAgICAgIChRV2ViUGFnZTo6Y2hvb3NlRmlsZSk6Cisg
ICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnRRdDo6YWRkVG9EaXJ0eVJlZ2lvbik6CisKKzIwMDctMDctMDkgIEdl
b3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIEZpeCBhIG1pbm9yIG1l
bW9yeSBsZWFrIGluIHRoZSBsb2FkZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRl
cmZhY2UuY3BwOgorICAgICAgICAoZ0NsZWFudXBJbnRlcmZhY2UpOgorICAgICAgICAoUVdlYk5l
dHdvcmtJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2UpOgorICAgICAgICAoUVdlYk5ldHdv
cmtJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2UpOgorCisyMDA3LTA3LTA5ICBHZW9yZ2UgU3Rh
aWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBGaXggYSBtYXNzaXZlIG1lbW9yeSBs
ZWFrIGluIHRoZSBsb2FkZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpodHRwQ29ubmVjdGlvbkNsb3NlZCk6
CisgICAgICAgIChXZWJDb3JlSHR0cDo6fldlYkNvcmVIdHRwKToKKworMjAwNy0wNy0wOSAgR2Vv
cmdlIFN0YWlrb3MgIDxzdGFpa29zQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24uCisKKyAgICAgICAgUmV3b3JrIG11Y2ggb2YgdGhlIEhUVFAgc3R1ZmYgdG8gbWFrZSBpdCBt
b3JlIHN0YWJsZSwgYW5kIGFkZCBTU0wgYW5kCisgICAgICAgIHByb3h5IHN1cHBvcnQuICBNYWpv
ciBtZW1vcnkgbGVhayBhbHNvIGRpc2NvdmVyZWQgYnV0IGl0IG5lZWRzIG1vcmUKKyAgICAgICAg
cmVzZWFyY2ggYXMgdGhlIG9idmlvdXMgZml4IGNhdXNlcyBjcmFzaGVzLgorCisgICAgICAgICog
QXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdl
cjo6YWRkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisgICAgICAg
IChRV2ViTmV0d29ya01hbmFnZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZUh0dHA6OldlYkNv
cmVIdHRwKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjp+V2ViQ29yZUh0dHApOgorICAgICAgICAo
V2ViQ29yZUh0dHA6OnJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZUh0dHA6OnNjaGVkdWxlTmV4
dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZUh0dHA6OmdldENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZUh0dHA6Om9uUmVzcG9uc2VIZWFkZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJD
b3JlSHR0cDo6b25SZWFkeVJlYWQpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVxdWVzdEZp
bmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvbkRvbmUpOgorICAgICAgICAoV2ViQ29y
ZUh0dHA6Om9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblNzbEVycm9y
cyk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25BdXRoZW50aWNhdGlvblJlcXVpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmVIdHRwOjpvblByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZCk6CisgICAg
ICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisgICAgICAgICogQXBpL3F3ZWJuZXR3
b3JraW50ZXJmYWNlX3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVIdHRwOjpIdHRwQ29u
bmVjdGlvbjo6SHR0cENvbm5lY3Rpb24pOgorCisyMDA3LTA3LTA2ICBBZGFtIFRyZWF0ICA8YWRh
bUBzdGFpa29zLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKwor
ICAgICAgICBDb252ZXJ0IFFXZWJGcmFtZSB0byBhIFFGcmFtZSBmcm9tIGEgc2Nyb2xsIGFyZWEu
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZh
dGU6OmluaXQpOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6cGFyZW50RnJhbWUpOgorICAg
ICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aG9yaXpvbnRhbFNjcm9sbEJhcik6CisgICAgICAgIChR
V2ViRnJhbWVQcml2YXRlOjp2ZXJ0aWNhbFNjcm9sbEJhcik6CisgICAgICAgIChRV2ViRnJhbWU6
OlFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAg
KFFXZWJGcmFtZTo6c3VwcHJlc3NTY3JvbGxiYXJzKToKKyAgICAgICAgKFFXZWJGcmFtZTo6cGFp
bnRFdmVudCk6CisgICAgICAgIChRV2ViRnJhbWU6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAg
KFFXZWJGcmFtZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VE
b3VibGVDbGlja0V2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VSZWxlYXNlRXZlbnQp
OgorICAgICAgICAoUVdlYkZyYW1lOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6
a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRV2ViRnJhbWU6OmZvY3VzSW5FdmVudCk6CisgICAg
ICAgIChRV2ViRnJhbWU6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFs
dWF0ZUphdmFTY3JpcHQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rv
ci5jcHA6CisgICAgICAgIChRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9yOjpwbHVnaW5QYXJlbnRX
aWRnZXQpOgorCisyMDA3LTA3LTA0ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGRlZCBhIHN0dWIgZm9yIENocm9tZUNsaWVudFF0OjpzZXRUb29sVGlwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FtLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNldFRvb2xU
aXApOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMDct
MDctMDQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZGVkIGEg
c3R1YiBmb3IgQ2hyb21lQ2xpZW50UXQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6Om1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5o
OgorCisyMDA3LTA2LTI4ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICBQcm9wYWdhdGUgbW91c2UgZG91Ymxl
IGNsaWNrIGV2ZW50cyBmcm9tIFF0IHRvIFdlYkNvcmUuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisKKzIwMDctMDYtMjggIFNpbW9uIEhhdXNtYW5uICA8
aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrLgorCisgICAgICAg
IEltcGxlbWVudGVkIGNsaXBib2FyZCBmdW5jdGlvbnMgaW4gUVdlYlBhZ2UsIGluIHBhcnRpY3Vs
YXIgY2FuKEN1dHxDb3B5fFBhc3RlKSwgY3V0L2NvcHkvcGFzdGUgYXMgc2xvdCBhcyB3ZWxsIGFz
IGEgc2VsZWN0aW9uQ2hhbmdlZCgpIHNpZ25hbC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZTo6Y2FuQ3V0KToKKyAgICAgICAgKFFXZWJQYWdlOjpjYW5D
b3B5KToKKyAgICAgICAgKFFXZWJQYWdlOjpjYW5QYXN0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6
Y3V0KToKKyAgICAgICAgKFFXZWJQYWdlOjpjb3B5KToKKyAgICAgICAgKFFXZWJQYWdlOjpwYXN0
ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwOgorCisyMDA3LTA2LTI3ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlr
b3NAa2RlLm9yZz4KKworICAgICAgICBDb21waWxlIHdpdGggdmFyaW91cyBRdCBjb25maWd1cmF0
aW9ucy4KKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlSHR0cDo6c2NoZWR1bGVOZXh0UmVxdWVzdCk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAg
KFFXZWJQYWdlOjpkcmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6ZHJhZ0xlYXZl
RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OmRyb3BFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6Y2hvb3NlRmlsZSk6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgorCisyMDA3LTA2LTI3ICBFbGkgRmlkbGVyICA8ZWxp
QHN0YWlrb3MubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgorCisg
ICAgICAgIENoZWNrIGZvciBRVF9OT19JTUFHRV9URVhUIGFuZCBjb21waWxlIGVpdGhlciB3YXku
CisKKyAgICAgICAgKiBQbHVnaW5zL0lDT0hhbmRsZXIuY3BwOgorICAgICAgICAoSUNPSGFuZGxl
cjo6cmVhZCk6CisKKzIwMDctMDYtMjcgIEVsaSBGaWRsZXIgIDxlbGlAc3RhaWtvcy5uZXQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAgUmVtb3ZlIFFU
M19TVVBQT1JUIGRlcGVuZGVuY3kgaW4gdGhlIElDTyBwbHVnaW4uCisKKyAgICAgICAgKiBQbHVn
aW5zL0lDT0hhbmRsZXIuY3BwOgorICAgICAgICAoSWNvSGVhZGVyOjpsb2FkRnJvbURJQik6CisK
KzIwMDctMDYtMjUgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFphY2suCisKKyAgICAgICAgU3RhcnQgdG8gYWRkIHByb3h5IGFuZCBTU0wg
c3VwcG9ydCB0byBXZWJLaXQgUXQuICBQcm94eSB3b3JrcworICAgICAgICB1bmF1dGhlbnRpY2F0
ZWQuICBBZGRlZCBob29rcyB0byBiZSBhYmxlIHRvIGFkZCBhdXRoZW50aWNhdGlvbi4KKyAgICAg
ICAgQWxzbyBmaXhlcyBzb21lIG5ldHdvcmsgZXJyb3JzLgorCisgICAgICAgICogQXBpL3F3ZWJu
ZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrUmVxdWVzdFByaXZhdGU6
OnNldFVSTCk6CisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6ZnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZUh0dHA6OldlYkNvcmVIdHRwKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpzY2hlZHVsZU5l
eHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblJlcXVlc3RGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlSHR0cDo6b25Eb25lKToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblNz
bEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25BdXRoZW50aWNhdGlvblJlcXVpcmVk
KToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpvblByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZCk6
CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisgICAgICAgICogQXBpL3F3
ZWJuZXR3b3JraW50ZXJmYWNlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAg
ICAgICAoUVdlYlBhZ2U6OnNldE5ldHdvcmtQcm94eSk6CisgICAgICAgIChRV2ViUGFnZTo6bmV0
d29ya1Byb3h5KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2VfcC5oOgorCisyMDA3LTA2LTIxICBBZGFtIFRyZWF0ICA8YWRhbUBzdGFpa29zLm5ldD4K
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKworICAgICAgICBJbXBsZW1l
bnQgdGhlIGRlZmF1bHQgcmVzb3VyY2VzIG9uIFF0LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjppY29uKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRp
bmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0V2ViR3JhcGhpYyk6CisgICAgICAg
IChRV2ViU2V0dGluZ3M6OndlYkdyYXBoaWMpOgorICAgICAgICAobG9hZFJlc291cmNlUGl4bWFw
KToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKKzIwMDctMDYtMTUgIEFkYW0gVHJl
YXQgIDxhZGFtQHN0YWlrb3MubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFp
a29zLgorCisgICAgICAgIEFkZCBJQ08gc3VwcG9ydCB0byB0aGUgUXQgYnVpbGQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6Omljb24pOgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAg
ICAgICAoUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAgKFFX
ZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0
aW5ncy5oOgorICAgICAgICAqIFBsdWdpbnM6IEFkZGVkLgorICAgICAgICAqIFBsdWdpbnMvSUNP
SGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoSWNvSGVhZGVyOjpvcGVyYXRvciA+Pik6Cisg
ICAgICAgIChJY29IZWFkZXI6OkJNUF9JTkZPSERSOjopOgorICAgICAgICAoSWNvSGVhZGVyOjpv
cGVyYXRvcjw8KToKKyAgICAgICAgKEljb0hlYWRlcjo6TGVzc0RpZmZlcmVuY2U6Okxlc3NEaWZm
ZXJlbmNlKToKKyAgICAgICAgKEljb0hlYWRlcjo6TGVzc0RpZmZlcmVuY2U6Om9wZXJhdG9yICgp
KToKKyAgICAgICAgKEljb0hlYWRlcjo6bG9hZEZyb21ESUIpOgorICAgICAgICAoSUNPSGFuZGxl
cjo6SUNPSGFuZGxlcik6CisgICAgICAgIChJQ09IYW5kbGVyOjpjYW5SZWFkKToKKyAgICAgICAg
KElDT0hhbmRsZXI6OnJlYWQpOgorICAgICAgICAoSUNPSGFuZGxlcjo6d3JpdGUpOgorICAgICAg
ICAoSUNPSGFuZGxlcjo6bmFtZSk6CisgICAgICAgIChJQ09QbHVnaW46OmtleXMpOgorICAgICAg
ICAoSUNPUGx1Z2luOjpjYXBhYmlsaXRpZXMpOgorICAgICAgICAoSUNPUGx1Z2luOjpjcmVhdGUp
OgorICAgICAgICAqIFBsdWdpbnMvSUNPSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBQbHVn
aW5zL1BsdWdpbnMucHJvOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGlkUmVjZWl2ZUljb24pOgorCisyMDA3LTA2LTE1ICBHZW9yZ2UgU3RhaWtvcyAg
PHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBGaXhpbmcgdGhlIFF0IGJ1aWxkLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFF0OjpzaG91bGRJbmNsdWRlSW5zcGVjdEVsZW1lbnRJ
dGVtKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0Lmg6CisK
KzIwMDctMDYtMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1v
cmUgc3BlY3VsYXRpdmUgUXQgYnVpbGQgZml4ZXMuCisKKyAgICAgICAgQWRkIGEgc3R1YiBpbXBs
ZW1lbnRhdGlvbiBvZiBJbnNwZWN0b3JDbGllbnRRdC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFF0OjpzaG93V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6
YXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpkZXRh
Y2hXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmhpZ2hsaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6aGlkZUhpZ2hsaWdodCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDogQWRkZWQuCisK
KzIwMDctMDYtMTkgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgorCisgICAgICAgIEFkZCBodHRwcyBzdXBwb3J0Lgor
CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJO
ZXR3b3JrSW50ZXJmYWNlOjphZGRKb2IpOgorICAgICAgICAoUVdlYk5ldHdvcmtJbnRlcmZhY2U6
OmNhbmNlbEpvYik6CisgICAgICAgIChXZWJDb3JlSHR0cDo6V2ViQ29yZUh0dHApOgorCisyMDA3
LTA2LTE0ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBMYXJzLgorCisgICAgICAgIEFkZCBldmFsdWF0ZUphdmFTY3JpcHQoKSBtZXRob2Qu
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZh
bHVhdGVKYXZhU2NyaXB0KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisKKzIwMDctMDYt
MTQgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IExhcnMuCisKKyAgICAgICAgSW1wbGVtZW50IG1vc3Qgb2YgdGhlIGVkaXRpbmcgY29tbWFu
ZHMsIGJldHRlciBmb2N1cyBoYW5kbGluZywgZml4IHNvbWUKKyAgICAgICAga2V5Ym9hcmQgYW5k
IG1vdXNlIGhhbmRsaW5nLCBhbmQgYWRkIGtleWJvYXJkIG5hdmlnYXRpb24uICBNYXkgYmUKKyAg
ICAgICAgcmVmYWN0b3JlZCBsYXRlciBhcyB0aGUga2V5IHN3aXRjaGVzIGFyZSB1Z2x5LgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpp
bml0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFFX
ZWJGcmFtZTo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUVdlYkZyYW1lOjp3aGVlbEV2
ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChRV2Vi
RnJhbWU6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViRnJhbWU6OmZvY3VzSW5FdmVu
dCk6CisgICAgICAgIChRV2ViRnJhbWU6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUVdlYkZy
YW1lOjpmb2N1c05leHRQcmV2Q2hpbGQpOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxl
S2V5cHJlc3MpOgorCisyMDA3LTA2LTE0ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEltcGxlbWVudCBhbGwg
b2YgdGhlIEphdmFzY3JpcHQgZGlhbG9ncyBhbmQgZmlsZSBjaG9vc2VyLgorICAgICAgICBBbHNv
IG1ha2VzIHRoZSBzdGF0dXNiYXIgdmlydHVhbCBpbnRvIGEgc2lnbmFsIGFuZCBzaHVmZmxlcyBz
b21lCisgICAgICAgIHZpcnR1YWxzIGFyb3VuZCBhIGJpdC4gIFRoZSBoZWxwZXIgaW4gRnJhbWVM
b2FkZXJDbGllbnRRdCBtYXkgZ28gYXdheQorICAgICAgICBzaG9ydGx5LgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2
YXRlKToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OmphdmFTY3JpcHRDb25maXJtKToKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0
UHJvbXB0KToKKyAgICAgICAgKFFXZWJQYWdlOjpjaG9vc2VGaWxlKToKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1
bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVu
SmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1
bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNl
dFN0YXR1c2JhclRleHQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2hvb3Nl
RmlsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgor
CisyMDA3LTA2LTE0ICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICBSZW1vdmVkIFFXZWJIaXN0b3J5SXRlbTo6
cGFyZW50KCkgYXMgaXQgaXMgbm90IGltcGxlbWVudGVkIGFuZCBXZWJDb3JlJ3MKKworICAgICAg
ICBIaXN0b3J5SXRlbSBpdHNlbGYgZG9lc24ndCBzZWVtIHRvIGhhdmUgYSBwYXJlbnQgcG9pbnRl
ciBlaXRoZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0b3J5Lmg6CisKKzIwMDctMDYt
MTQgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBaYWNrLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gY29weSBRV2ViSGlzdG9y
eUl0ZW0gb2JqZWN0cy4KKworICAgICAgICAqIEFwaS9xd2VicGFnZWhpc3RvcnkuY3BwOgorICAg
ICAgICAqIEFwaS9xd2VicGFnZWhpc3RvcnkuaDoKKworMjAwNy0wNi0xNCAgTGFycyBLbm9sbCA8
bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZQorCisgICAg
ICAgIEZpeCBhIGNyYXNoIHdoZW4gYSByZXF1ZXN0IGZyb20gdGhlIHBsdWdpbiByZXN1bHRlZAor
ICAgICAgICBpbiBhIEhUVFAgcmVkaXJlY3QuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtp
bnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKwor
MjAwNy0wNi0xNCAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdlb3JnZS4KKworICAgICAgICBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBRdCdzIFFI
dHRwIGltcGxlbWVudGF0aW9uIGFuZAorICAgICAgICBnZXQgd2ViIHBhZ2VzIHRvIGxvYWQgYWdh
aW4uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6Om9w
ZW4pOgorCisyMDA3LTA2LTEzICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBBZGRlZCBhIG1ha2UgaW5zdGFs
bCB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGUgUXQgcG9ydCBhbmQgcmVuYW1lZAorICAgICAgICBX
ZWJLaXRRdCB0byBRdFdlYktpdAorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOiBBZGRlZC4K
KyAgICAgICAgKiBBcGkvcXR3ZWJraXQucHJmOiBBZGRlZC4KKworMjAwNy0wNi0xMyAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMu
CisKKyAgICAgICAgQWRkZWQgaHR0cEhlYWRlckZpZWxkIHNldHRlci9nZXR0ZXIgdG8gUVdlYk5l
dHdvcmtSZXF1ZXN0IGZvciBjb252ZW5pZW5jZS4KKworICAgICAgICAqIEFwaS9xd2VibmV0d29y
a2ludGVyZmFjZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisK
KzIwMDctMDYtMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIENoYW5nZWQgUVdlYk9iamVjdFBsdWdpbkNv
bm5lY3Rvcjo6cmVxdWVzdFVybCB0byB0YWtlIGEgUVdlYk5ldHdvcmtSZXF1ZXN0IGFzIGFyZ3Vt
ZW50LgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisgICAgICAgICog
QXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuY3BwOgorICAgICAgICAoUVdlYk9iamVjdFBs
dWdpbkNvbm5lY3Rvcjo6cmVxdWVzdFVybCk6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVn
aW5jb25uZWN0b3IuaDoKKworMjAwNy0wNi0xMyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBr
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQWRkZWQgYSBR
V2ViTmV0d29ya1JlcXVlc3QgY29udmVuaWVuY2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBB
cGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2lu
dGVyZmFjZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFn
ZTo6b3Blbik6CisKKzIwMDctMDYtMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIENoYW5nZWQgdGhlIFFX
ZWJQYWdlOjpvcGVuKGNvbnN0IFFVcmwgJnVybCwgY29uc3QgUUh0dHBSZXF1ZXN0SGVhZGVyICZo
dHRwSGVhZGVyLCBjb25zdCBRQnl0ZUFycmF5ICZwb3N0RGF0YSkKKyAgICAgICAgb3ZlcmxvYWQg
dG8gdGFrZSBhIFFXZWJOZXR3b3JrUmVxdWVzdCBpbnN0ZWFkLgorCisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpvcGVuKToKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuaDoKKworMjAwNy0wNi0xMyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgSW4gUVdlYlBhZ2U6Om9w
ZW4oY29uc3QgUVVybCAmLCBjb25zdCBRSHR0cFJlcXVlc3RIZWFkZXIgJiwgLi4uKSBkb24ndCBt
YWtlIHRoZSBwb3B1bGF0aW9uCisgICAgICAgIG9mIHRoZSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgZGVwZW5kIG9uIHRoZSB2YWxpZGl0eSBvZiB0aGUgUUh0dHBSZXF1ZXN0SGVhZGVyIGJ1dCBq
dXN0CisgICAgICAgIHBpY2sgdGhlIGluZGl2aWR1YWwgZmllbGRzIGlmIHdlIGNhbiB1c2UgdGhl
bS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6b3Bl
bik6CisKKzIwMDctMDYtMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIE1pbm9yIFFXZWJOZXR3b3JrUmVx
dWV0IEFQSSBmaXhsZXQKKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6
CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisKKzIwMDctMDYtMTMgIFNp
bW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBM
YXJzLgorCisgICAgICAgIFVzZSBRV2ViTmV0d29ya1JlcXVlc3QgZm9yIFFXZWJQYWdlOjpuYXZp
Z2F0aW9uUmVxdWVzdGVkLgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNw
cDoKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpuYXZpZ2F0aW9uUmVxdWVz
dGVkKToKKyAgICAgICAgKFFXZWJQYWdlOjpuYXZpZ2F0aW9uUmVxdWVzdGVkKToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKToKKworMjAwNy0wNi0xMyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgU29tZSBkb2NzIGZvciBR
V2ViTmV0d29ya1JlcXVlc3QKKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5j
cHA6CisgICAgICAgIChRV2ViTmV0d29ya1JlcXVlc3Q6OlFXZWJOZXR3b3JrUmVxdWVzdCk6Cisg
ICAgICAgIChRV2ViTmV0d29ya1JlcXVlc3Q6On5RV2ViTmV0d29ya1JlcXVlc3QpOgorCisyMDA3
LTA2LTEzICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBNb3ZlZCBRV2ViTmV0d29ya0pvYjo6TWV0aG9kIGVu
dW0gaW50byBRV2ViTmV0d29ya1JlcXVlc3QuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtp
bnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5jcHA6
CisgICAgICAgIChRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9yOjpyZXF1ZXN0VXJsKToKKyAgICAg
ICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5oOgorCisyMDA3LTA2LTEzICBTaW1v
biBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFy
cy4KKworICAgICAgICBSZW5hbWUgUVdlYk5ldHdvcmtKb2I6OnJlcXVlc3QoKSBpbnRvIFFXZWJO
ZXR3b3JrSm9iOjpodHRwSGVhZGVyKCkgYW5kIGFkZGVkCisKKyAgICAgICAgKiBBcGkvcXdlYm5l
dHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OnBvc3REYXRhKToK
KyAgICAgICAgKFdlYkNvcmVIdHRwOjpXZWJDb3JlSHR0cCk6CisgICAgICAgIChXZWJDb3JlSHR0
cDo6c2NoZWR1bGVOZXh0UmVxdWVzdCk6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJm
YWNlLmg6CisKKzIwMDctMDYtMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIEludHJvZHVjZSBRV2ViTmV0
d29ya1JlcXVlc3QgaW4gdGhlIHB1YmxpYyBBUEkuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdv
cmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0UHJpdmF0ZTo6aW5p
dCk6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisgICAgICAgICogQXBp
L3F3ZWJuZXR3b3JraW50ZXJmYWNlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKKzIwMDctMDYt
MTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBMYXJzLgorCisgICAgICAgIENoYW5nZWQgUVdlYk5ldHdvcmtKb2JQcml2YXRlIHRvIGFn
Z3JlZ2F0ZSBhIFFXZWJOZXR3b3JrUmVxdWVzdCBpbnN0ZWFkIG9mIGluaGVyaXRpbmcgZnJvbSBp
dC4KKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChR
V2ViTmV0d29ya01hbmFnZXI6OmFkZCk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OnN0
YXJ0ZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpkYXRhKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrTWFuYWdlcjo6ZmluaXNoZWQpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2lu
dGVyZmFjZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuY3Bw
OgorICAgICAgICAoUVdlYk9iamVjdFBsdWdpbkNvbm5lY3Rvcjo6cmVxdWVzdFVybCk6CisKKzIw
MDctMDYtMTMgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIFJlbmFtZSBRV2ViTmV0d29ya1JlcXVlc3Q6OnJl
cXVlc3QgaW50byBRV2ViTmV0d29ya1JlcXVlc3Q6Omh0dHBIZWFkZXIuCisKKyAgICAgICAgKiBB
cGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0
Ojppbml0KToKKyAgICAgICAgKFFXZWJOZXR3b3JrUmVxdWVzdDo6c2V0VVJMKToKKyAgICAgICAg
KFFXZWJOZXR3b3JrTWFuYWdlcjo6YWRkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6
c3RhcnRlZCk6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlX3AuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisKKzIwMDctMDYtMTIgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKworICAgICAgICBSZW1v
dmUgZHVwbGljYXRlIHN5bWJvbHMuCisKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbl9w
Lmg6CisKKzIwMDctMDYtMTMgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOaWtvLgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbiwgYW5kIHJl
bW92ZSBkZXBlbmRlbmN5IG9uIFF0CisgICAgICAgIHByaXZhdGUgaGVhZGVyLgorCisgICAgICAg
ICogQXBpL3F3ZWJvYmplY3RwbHVnaW5fcC5oOgorICAgICAgICAoUVdlYkZhY3RvcnlMb2FkZXI6
OnN1cHBvcnRzTWltZVR5cGUpOgorCisyMDA3LTA2LTEzICBMYXJzIEtub2xsIDxsYXJzQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmlrby4KKworICAgICAgICBQYXJ0cyBv
ZiB0aGUgcGF0Y2ggZG9uZSBieSBaYWNrLgorICAgICAgICBGaXggdXAgc29tZSBwYXJ0cyBpbiB0
aGUgaW1wbGVtZW50YXRpb24gb2YgUVdlYk5ldHdvcmtJbnRlcmZhY2UKKyAgICAgICAgc28gaXQg
Y2FuIGJlIHVzZWQgYnkgcGx1Z2lucy4KKyAgICAgICAgQ2hhbmdlIHRoZSBwbHVnaW4gQVBJIHNv
IHdlIGNhbiBhY3R1YWxseSBnZXQgYWxsIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICByZXF1aXJl
ZCBieSB0aGUgSlMgYnJpZGdlIGZyb20gdGhlbSBhcyB3ZWxsLgorCisgICAgICAgICogQXBpL3F3
ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpjYW5jZWxs
ZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoUVdl
Yk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6
ZmluaXNoZWQpOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luLmNwcDoKKyAgICAgICAg
KFFXZWJGYWN0b3J5TG9hZGVyOjpRV2ViRmFjdG9yeUxvYWRlcik6CisgICAgICAgIChRV2ViRmFj
dG9yeUxvYWRlcjo6ZGVzY3JpcHRpb25Gb3JOYW1lKToKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9h
ZGVyOjptaW1ldHlwZXNGb3JOYW1lKToKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjptaW1l
VHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChRV2ViRmFjdG9yeUxvYWRlcjo6ZXh0ZW5zaW9u
cyk6CisgICAgICAgIChRV2ViRmFjdG9yeUxvYWRlcjo6bmFtZUZvck1pbWV0eXBlKToKKyAgICAg
ICAgKFFXZWJGYWN0b3J5TG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAoUVdlYk9iamVjdFBsdWdp
bjo6ZGVzY3JpcHRpb25Gb3JLZXkpOgorICAgICAgICAoUVdlYk9iamVjdFBsdWdpbjo6bWltZXR5
cGVzRm9yS2V5KToKKyAgICAgICAgKiBBcGkvcXdlYm9iamVjdHBsdWdpbi5oOgorICAgICAgICAq
IEFwaS9xd2Vib2JqZWN0cGx1Z2luX3AuaDoKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjpu
YW1lcyk6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuY3BwOgorICAg
ICAgICAoUVdlYk9iamVjdFBsdWdpbkNvbm5lY3Rvcjo6cmVxdWVzdFVybCk6CisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpuZXR3b3JrSW50ZXJmYWNlKToK
KworMjAwNy0wNi0xMSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgQWRkZWQgYSBRV2ViUGFnZTo6b3BlbiBv
dmVybG9hZCB0byBhbGxvdyBzcGVjaWZ5aW5nIHRoZSBodHRwIGhlYWRlciBhbmQgcG9zdCBkYXRh
LgorICAgICAgICAoaXQncyBhbiBvdmVybG9hZCBpbnN0ZWFkIG9mIGEgbWVyZ2VkIG9wZW5Vcmwg
dG8gYXZvaWQgaW5jbHVkaW5nIHFodHRwLmggaW4gcXdlYnBhZ2UuaCwKKyAgICAgICAgd2hpY2gg
d291bGQgaW1wbHkgdGhhdCBvbmUgaGFzIHRvIGhhdmUgUVQgKz0gbmV0d29yayBpbiB0aGUgLnBy
byBmaWxlIGZvciB1c2luZyBXZWJLaXRRdCkKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisKKzIwMDctMDYtMTEgIFNpbW9uIEhhdXNtYW5u
ICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAg
ICAgIEFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBpbnRlcmNlcHQgdXJsIHJlcXVlc3RzIHRocm91
Z2ggUVdlYlBhZ2U6Om5hdmlnYXRpb25SZXF1ZXN0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAg
ICAgICAoUVdlYlBhZ2U6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorCisyMDA3LTA2LTExICBTaW1vbiBIYXVzbWFubiAgPGhh
dXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBB
ZGRlZCBhIFFXZWJOZXR3b3JrUmVxdWVzdDo6aW5pdCBvdmVybG9hZCB0aGF0IHRha2VzIGEgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0LAorICAgICAgICB0byBiZSBjYWxsZWQgZnJvbSBGcmFtZUxv
YWRlckNsaWVudFF0IGluIHRoZSBuZWFyIGZ1dHVyZS4KKworICAgICAgICAqIEFwaS9xd2VibmV0
d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmFkZCk6Cisg
ICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlX3AuaDoKKworMjAwNy0wNi0xMSAgU2lt
b24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExh
cnMuCisKKyAgICAgICAgTW92ZWQgdGhlIHBvc3REYXRhIHNldHVwIGludG8gUVdlYk5ldHdvcmtS
ZXF1ZXN0Ojppbml0LgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoK
KyAgICAgICAgKFFXZWJOZXR3b3JrUmVxdWVzdDo6aW5pdCk6CisgICAgICAgIChRV2ViTmV0d29y
a01hbmFnZXI6OmFkZCk6CisKKzIwMDctMDYtMTEgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5A
a2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzLgorCisgICAgICAgIE1vdmVkIEhU
VFAgaGVhZGVyIGZpZWxkIHByb3BhZ2F0aW9uIHRvIFFXZWJOZXR3b3JrUmVxdWVzdDo6aW5pdC4K
KworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChRV2Vi
TmV0d29ya1JlcXVlc3Q6OmluaXQpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjphZGQp
OgorCisyMDA3LTA2LTExICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTGFycy4KKworICAgICAgICBTdGFydGVkIG1vdmluZyB0aGUgY29k
ZSB0byBzZXBhcmF0ZSBhIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBpbnRvIGEgUVVybCwgcG9z
dERhdGEKKyAgICAgICAgYW5kIFFIdHRwUmVxdWVzdEhlYWRlciBpbnRvIGEgc2VwYXJhdGUgbGl0
dGxlIFFXZWJOZXR3b3JrUmVxdWVzdCBzdHJ1Y3QuCisKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdv
cmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtSZXF1ZXN0Ojppbml0KToKKyAg
ICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6YWRkKToKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdv
cmtpbnRlcmZhY2VfcC5oOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9y
LmNwcDoKKyAgICAgICAgKFFXZWJPYmplY3RQbHVnaW5Db25uZWN0b3I6OnJlcXVlc3RVcmwpOgor
CisyMDA3LTA2LTExICBaYWNrIFJ1c2luIDx6cnVzaW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBMYXJzCisKKyAgICAgICAgRm9yZ290IHRvIGV4cG9ydCB0aGUgcGx1Z2lu
IGNvbm5lY3Rvci4KKworICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9yLmgK
KworMjAwNy0wNi0wOCAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFphY2suCisKKyAgICAgICAgQWRkIGEgUVdlYk9iamVjdFBsdWdpbkNvbm5l
Y3RvciBjbGFzcy4gVGhlIGNsYXNzIHdpbGwKKyAgICAgICAgZmFjaWxpdHkgY29tbXVuaWNhdGlv
biBiZXR3ZWVuIHRoZSBwbHVnaW4gYW5kIFdlYktpdC4KKyAgICAgICAgQ3VycmVudGx5IGl0J3Mg
dXNlZCB0byBtYWtlIHRoZSBwbHVnaW4gbmV0d29yayBjYXBhYmxlLgorCisgICAgICAgICogQXBp
L3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrSm9iUHJpdmF0
ZTo6c2V0RGVmYXVsdHMpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjphZGQpOgorICAg
ICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpzdGFydGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3Jr
TWFuYWdlcjo6ZGF0YSk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmZpbmlzaGVkKToK
KyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuaDoKKyAgICAgICAgKiBBcGkvcXdl
Ym5ldHdvcmtpbnRlcmZhY2VfcC5oOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2JQcml2YXRlOjpR
V2ViTmV0d29ya0pvYlByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luLmNw
cDoKKyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIEFwaS9x
d2Vib2JqZWN0cGx1Z2luLmg6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5fcC5oOgor
ICAgICAgICAqIEFwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9yOjpRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9y
KToKKyAgICAgICAgKFFXZWJPYmplY3RQbHVnaW5Db25uZWN0b3I6OmZyYW1lKToKKyAgICAgICAg
KFFXZWJPYmplY3RQbHVnaW5Db25uZWN0b3I6OnBsdWdpblBhcmVudFdpZGdldCk6CisgICAgICAg
IChRV2ViT2JqZWN0UGx1Z2luQ29ubmVjdG9yOjpyZXF1ZXN0VXJsKToKKyAgICAgICAgKiBBcGkv
cXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKFFXZWJPYmplY3RQ
bHVnaW5Db25uZWN0b3I6Oik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVh
dGVQbHVnaW4pOgorCisyMDA3LTA2LTA2ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjaworCisgICAgICAgIEFkZCBhbiBBUEkgdG8gY3Jl
YXRlIGFuZCBsb2FkIHBsdWdpbnMuCisgICAgICAgIERvbid0IGluY2x1ZGUgbW9jIGZpbGVzIGJ5
IGhhbmQgYW55bW9yZSwgcmF0aGVyIGxldAorICAgICAgICBxbWFrZSBoYW5kbGUgdGhlbS4KKwor
ICAgICAgICAqIEFwaS9xY29va2llamFyLmNwcDoKKyAgICAgICAgKFFDb29raWVKYXI6OmNvb2tp
ZUphcik6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6
OnNjcm9sbENvbnRlbnRzQnkpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFFXZWJGYWN0b3J5TG9hZGVyOjpRV2ViRmFjdG9yeUxvYWRlcik6CisgICAgICAgIChRV2ViRmFj
dG9yeUxvYWRlcjo6c2VsZik6CisgICAgICAgIChRV2ViRmFjdG9yeUxvYWRlcjo6bWltZVR5cGVG
b3JFeHRlbnNpb24pOgorICAgICAgICAoUVdlYkZhY3RvcnlMb2FkZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChRV2ViT2JqZWN0UGx1Z2luOjpRV2ViT2JqZWN0UGx1Z2luKToKKyAgICAgICAgKFFXZWJP
YmplY3RQbHVnaW46On5RV2ViT2JqZWN0UGx1Z2luKToKKyAgICAgICAgKFFXZWJPYmplY3RQbHVn
aW46OmV4dGVuc2lvbnNGb3JNaW1ldHlwZSk6CisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVn
aW4uaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJvYmplY3RwbHVnaW5fcC5oOiBBZGRlZC4K
KyAgICAgICAgKFFXZWJGYWN0b3J5TG9hZGVyOjptaW1lVHlwZXMpOgorICAgICAgICAoUVdlYkZh
Y3RvcnlMb2FkZXI6OmV4dGVuc2lvbnMpOgorICAgICAgICAoUVdlYkZhY3RvcnlMb2FkZXI6OnN1
cHBvcnRzTWltZVR5cGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChR
V2ViUGFnZTo6c2V0dGluZ3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbik6CisK
KzIwMDctMDUtMjggIFphY2sgUnVzaW4gIDx6cnVzaW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBhbmRlcnNjYSBhbmQgc2ltb24KKworICAgICAgICBBZGRpbmcgcHVibGlj
IHNldHRpbmdzIEFwaSB0byB0aGUgUXQgcG9ydC4KKyAgICAgICAgUVdlYlNldHRpbmcncyBpcyBh
IHZhbHVlIGJhc2VkIHNldHRpbmdzCisgICAgICAgIG9iamVjdCBzZXR0YWJsZSBvbiB0aGUgUVdl
YlBhZ2UuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQ
cml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdlKToK
KyAgICAgICAgKFFXZWJQYWdlOjpzZXRTZXR0aW5ncyk6CisgICAgICAgIChRV2ViUGFnZTo6c2V0
dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2Vic2V0
dGluZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OlFXZWJTZXR0
aW5nc1ByaXZhdGUpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MpOgorICAg
ICAgICAoUVdlYlNldHRpbmdzOjp+UVdlYlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJTZXR0aW5n
czo6c2V0TWluaW11bUZvbnRTaXplKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6bWluaW11bUZv
bnRTaXplKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0TWluaW11bUxvZ2ljYWxGb250U2l6
ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6Om1pbmltdW1Mb2dpY2FsRm9udFNpemUpOgorICAg
ICAgICAoUVdlYlNldHRpbmdzOjpzZXREZWZhdWx0Rm9udFNpemUpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjpkZWZhdWx0Rm9udFNpemUpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXREZWZh
dWx0Rml4ZWRGb250U2l6ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OmRlZmF1bHRGaXhlZEZv
bnRTaXplKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bik6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAg
ICAgICAoUVdlYlNldHRpbmdzOjpzZXRHbG9iYWwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpn
bG9iYWwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRGb250RmFtaWx5KToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6Zm9udEZhbWlseSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldEF0
dHJpYnV0ZSk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnRlc3RBdHRyaWJ1dGUpOgorICAgICAg
ICAqIEFwaS9xd2Vic2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogUXRMYXVuY2hlci9tYWlu
LmNwcDoKKyAgICAgICAgKG1haW4pOgorMjAwNy0wNS0yNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZp
bm9AdGhlb2xsaXZpZXJzLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgor
ICAgICAgICAKKyAgICAgICAgQ29uc29saWRhdGUgYWxsIG5vdEltcGxlbWVudGVkKCkgbWFjcm8g
ZGVmaW5pdGlvbnMgaW50bworICAgICAgICBvbmUgaGVhZGVyIGZpbGUgZm9yIGFsbCBwbGF0Zm9y
bXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorCisyMDA3LTA1LTI1ICBHZW9yZ2UgU3RhaWtv
cyAgPHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KKworICAg
ICAgICBUaGUgaHR0cCBsb2FkZXIgc2hvdWxkIG9ubHkgYXNrIGZvciAuLi4uIGh0dHAgY29va2ll
cyEKKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5jcHA6CisgICAgICAgIChR
V2ViTmV0d29ya01hbmFnZXI6OmFkZCk6CisKKzIwMDctMDUtMjQgIFNpbW9uIEhhdXNtYW5uICA8
aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrLgorCisgICAgICAg
IEZpeCBtdWx0aXBhcnQvZm9ybS1kYXRhIEhUVFAgUE9TVHMuIFRoZSBjb250ZW50LXR5cGUgd2Fz
bid0IHNldAorICAgICAgICBjb3JyZWN0bHkuIEZvcnR1bmF0ZWx5IFdlYkNvcmUgZG9lcyBpdCBh
bHJlYWR5LCBzbyB0aGVyZSdzIG5vIG5lZWQKKyAgICAgICAgZm9yIHVzIHRvIGRvIGl0IHNpbmNl
IHdlIGFscmVhZHkgdHJhbnNmZXIgYWxsIEhUVFAgaGVhZGVyIGZpZWxkcyA6KQorCisgICAgICAg
ICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFu
YWdlcjo6YWRkKToKKworMjAwNy0wNS0yMyAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFphY2ssIGlkZWEgZnJvbSBMYXJzLgorCisgICAg
ICAgIFNoYXJlIFdlYkNvcmVIdHRwIGFuZCB0aGVyZWZvcmUgSFRUUCBjb25uZWN0aW9ucyBhbW9u
ZyBtdWx0aXBsZQorICAgICAgICBRV2ViTmV0d29ya0ludGVyZmFjZSBpbnN0YW5jZXMgYnkgbW92
aW5nIHRoZSBjb2RlIGludG8KKyAgICAgICAgUVdlYk5ldHdvcmtNYW5hZ2VyLgorCisgICAgICAg
ICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFu
YWdlcjo6YWRkSHR0cEpvYik6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmNhbmNlbEh0
dHBKb2IpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpodHRwQ29ubmVjdGlvbkNsb3Nl
ZCk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZTo6YWRkSm9iKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrSW50ZXJmYWNlOjpjYW5jZWxKb2IpOgorICAgICAgICAoV2ViQ29yZUh0dHA6OnNj
aGVkdWxlTmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVzcG9uc2VIZWFk
ZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25SZWFkeVJlYWQpOgorICAgICAg
ICAoV2ViQ29yZUh0dHA6Om9uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmVIdHRw
OjpjYW5jZWwpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5oOgorICAgICAg
ICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmg6CisKKzIwMDctMDUtMjMgIFNpbW9uIEhh
dXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrLCBk
aXNjdXNzZWQgYWxzbyB3aXRoIExhcnMuCisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBz
cGVjaWZ5IGEgcGVyLVFXZWJQYWdlIG5ldHdvcmsgaW50ZXJmYWNlIChuZWVkZWQKKyAgICAgICAg
Zm9yIHRoZSBLREUgS0lPIGludGVncmF0aW9uKS4KKworICAgICAgICBNZXJnZWQgdGhlIGZpbGUg
YW5kIHRoZSBuZXR3b3JrIGxvYWRlciBpbnRvCisgICAgICAgIFFXZWJOZXR3b3JrSW50ZXJmYWNl
KFByaXZhdGUpLCB3aGljaCBzaW1wbGlmaWVzIHRoZSBsb2FkaW5nIGNvZGUuCisKKyAgICAgICAg
V2hlbiByZWNlaXZpbmcgYSByZWRpcmVjdGlvbiBkb24ndCBlbWl0IHRoZSBkYXRhIG9mIHRoZSBy
ZWRpcmVjdGVkIGpvYgorICAgICAgICB0byB0aGUgZG9jdW1lbnQuIChvdGhlcndpc2UgdGhlIGtp
bmQgb2YgIlRoaXMgcGFnZSBoYXMgbW92ZWQiIHRleHQKKyAgICAgICAgYXBwZWFycyByaWdodCBv
biB0b3Agb2YgdGhlIHJlYWwgcGFnZSBjb250ZW50KQorCisgICAgICAgICogQXBpL3F3ZWJuZXR3
b3JraW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKHFIYXNoKToKKyAgICAgICAgKG9wZXJhdG9yPT0p
OgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OlFXZWJOZXR3b3JrSm9iKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrSm9iOjpuZXR3b3JrSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFu
YWdlcjo6YWRkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6Y2FuY2VsKToKKyAgICAg
ICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6ZGF0YSk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFn
ZXI6OmZpbmlzaGVkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlUHJpdmF0ZTo6c2Vu
ZEZpbGVEYXRhKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlUHJpdmF0ZTo6cGFyc2VE
YXRhVXJsKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlUHJpdmF0ZTo6YWRkSHR0cEpv
Yik6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZVByaXZhdGU6Omh0dHBDb25uZWN0aW9u
Q2xvc2VkKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJm
YWNlKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpRV2ViTmV0d29ya0ludGVyZmFj
ZSk6CisgICAgICAgIChRV2ViTmV0d29ya0ludGVyZmFjZTo6YWRkSm9iKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrSW50ZXJmYWNlOjpjYW5jZWxKb2IpOgorICAgICAgICAoV2ViQ29yZUh0dHA6OnNj
aGVkdWxlTmV4dFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uUmVzcG9uc2VIZWFk
ZXJSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25SZWFkeVJlYWQpOgorICAgICAg
ICAoV2ViQ29yZUh0dHA6Om9uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmVIdHRw
OjpjYW5jZWwpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZS5oOgorICAgICAg
ICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAg
ICAgKFFXZWJQYWdlOjpzZXROZXR3b3JrSW50ZXJmYWNlKToKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorCisyMDA3LTA1LTIzICBMYXJzIEtu
b2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjaworCisg
ICAgICAgIERvbid0IGRvIEhUVFAgZG93bmxvYWRzIGluIGEgc2Vjb25kIHRocmVhZC4gU2ltcGxp
ZmllcworICAgICAgICB0aGUgY29kZSBzaWduaWZpY2FudGx5IGFuZCBmaXhlcyBjcmFzaGVzIG9u
IHNvbWUKKyAgICAgICAgV2ViIHBhZ2VzLgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6YWRkKToKKyAgICAgICAg
KFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpRV2ViTmV0d29ya0ludGVyZmFjZSk6CisgICAgICAgIChR
V2ViTmV0d29ya0ludGVyZmFjZTo6YWRkSm9iKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJm
YWNlOjpjYW5jZWxKb2IpOgorICAgICAgICAoTG9hZGVyVGhyZWFkOjpMb2FkZXJUaHJlYWQpOgor
ICAgICAgICAoTG9hZGVyVGhyZWFkOjpydW4pOgorICAgICAgICAoV2ViQ29yZUh0dHA6OmNhbmNl
bCk6CisgICAgICAgIChOZXR3b3JrTG9hZGVyOjpOZXR3b3JrTG9hZGVyKToKKyAgICAgICAgKE5l
dHdvcmtMb2FkZXI6OnJlcXVlc3QpOgorICAgICAgICAoTmV0d29ya0xvYWRlcjo6Y2FuY2VsKToK
KyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2VfcC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKworMjAw
Ny0wNS0yMyAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uLgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNwcDoK
KyAgICAgICAgKFFXZWJOZXR3b3JrSm9iUHJpdmF0ZTo6c2V0VVJMKToKKyAgICAgICAgKFFXZWJO
ZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisgICAgICAgICAgICBGaXggSG9zdDogbGluZSBpbiBI
VFRQIGhlYWRlcnMgYW5kIHJlc29sdmluZyBvZiByZWxhdGl2ZSBVUkxzCisgICAgICAgICAgICB3
aGVuIHJlZGlyZWN0aW5nLgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFjZV9wLmg6
CisgICAgICAgICAgICBDbGVhbiB1cCBxSGFzaCBmb3J3YXJkIGRlY2xhcmF0aW9uIGEgYml0Lgor
CisyMDA3LTA1LTIzICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6Cisg
ICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KTogRml4IGxvYWRpbmcgcHJvZ3Jlc3Mgc2ln
bmFsL3Nsb3QgY29ubmVjdGlvbi4KKworMjAwNy0wNS0yMiAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMuCisKKyAgICAgICAgKiBB
cGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuY3BwOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2Vy
OjphZGQpOiBGaXggaHR0cCBoZWFkZXJzIGZvciBQT1NULgorCisyMDA3LTA1LTIxICBMYXJzIEtu
b2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24KKwor
ICAgICAgICBSZW1vdmUgdGhlIHVzZXJIYW5kbGUgbWV0aG9kcyBmcm9tIFFXZWJuZXR3b3JrSm9i
IGFnYWluLgorICAgICAgICBUaGV5IGRvbid0IHJlYWxseSBnaXZlIHVzIGFueXRoaW5nIGFuZCBq
dXN0IGNsdXR0ZXIgdGhlIEFQSS4KKworICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFj
ZS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmg6CisgICAgICAgICog
QXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlX3AuaDoKKworMjAwNy0wNS0yMSAgU2ltb24gSGF1c21h
bm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFphY2suCisKKyAg
ICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuaDogRXhwb3J0IHRoZSBuZXQgQVBJLgor
CisyMDA3LTA1LTIxICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICBBZGQgYW4gQVBJIGxheWVyIGZvciBuZXR3b3Jr
IGRvd25sb2Fkcy4gQmFzaWNhbGx5IFFXZWJuZXR3b3JrSW50ZXJmYWNlCisgICAgICAgIGlzIGFu
IGludGVyZmFjZSBjbGFzcyBmb3IgZG93bmxvYWRpbmcgcmVzb3VyY2VzLiBRV2VibmV0d29ya0pv
YiBkZXNjcmliZXMKKyAgICAgICAgdGhlIGFjdHVhbCBvYmplY3QgdG8gZG93bmxvYWQuCisKKyAg
ICAgICAgUVdlYk5ldHdvcmtJbnRlcmZhY2UgaGFzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB0
aGF0IHJlcGxhY2VzIHRoZQorICAgICAgICBvbGQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyIGNsYXNz
IGluIHRoZSBRdCBwb3J0LgorCisgICAgICAgICogQXBpL3F3ZWJuZXR3b3JraW50ZXJmYWNlLmNw
cDogQWRkZWQuCisgICAgICAgIChRV2ViTmV0d29ya0pvYlByaXZhdGU6OnNldFVSTCk6CisgICAg
ICAgIChRV2ViTmV0d29ya0pvYjo6UVdlYk5ldHdvcmtKb2IpOgorICAgICAgICAoUVdlYk5ldHdv
cmtKb2I6On5RV2ViTmV0d29ya0pvYik6CisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6dXJsKToK
KyAgICAgICAgKFFXZWJOZXR3b3JrSm9iOjpwb3N0RGF0YSk6CisgICAgICAgIChRV2ViTmV0d29y
a0pvYjo6cmVxdWVzdCk6CisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6cmVzcG9uc2UpOgorICAg
ICAgICAoUVdlYk5ldHdvcmtKb2I6OnNldFJlc3BvbnNlKToKKyAgICAgICAgKFFXZWJOZXR3b3Jr
Sm9iOjpjYW5jZWxsZWQpOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OnJlZik6CisgICAgICAg
IChRV2ViTmV0d29ya0pvYjo6ZGVyZWYpOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OnNldFVz
ZXJIYW5kbGUpOgorICAgICAgICAoUVdlYk5ldHdvcmtKb2I6OnVzZXJIYW5kbGUpOgorICAgICAg
ICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpRV2ViTmV0d29ya01hbmFnZXIpOgorICAgICAgICAoUVdl
Yk5ldHdvcmtNYW5hZ2VyOjpzZWxmKToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6YWRk
KToKKyAgICAgICAgKFFXZWJOZXR3b3JrTWFuYWdlcjo6Y2FuY2VsKToKKyAgICAgICAgKFFXZWJO
ZXR3b3JrTWFuYWdlcjo6c3RhcnRlZCk6CisgICAgICAgIChRV2ViTmV0d29ya01hbmFnZXI6OmRh
dGEpOgorICAgICAgICAoUVdlYk5ldHdvcmtNYW5hZ2VyOjpmaW5pc2hlZCk6CisgICAgICAgIChR
V2ViTmV0d29ya0ludGVyZmFjZTo6c2V0RGVmYXVsdEludGVyZmFjZSk6CisgICAgICAgIChRV2Vi
TmV0d29ya0ludGVyZmFjZTo6ZGVmYXVsdEludGVyZmFjZSk6CisgICAgICAgIChRV2ViTmV0d29y
a0ludGVyZmFjZTo6UVdlYk5ldHdvcmtJbnRlcmZhY2UpOgorICAgICAgICAoUVdlYk5ldHdvcmtJ
bnRlcmZhY2U6On5RV2ViTmV0d29ya0ludGVyZmFjZSk6CisgICAgICAgIChRV2ViTmV0d29ya0lu
dGVyZmFjZTo6YWRkSm9iKToKKyAgICAgICAgKFFXZWJOZXR3b3JrSW50ZXJmYWNlOjpjYW5jZWxK
b2IpOgorICAgICAgICAoTG9hZGVyVGhyZWFkOjpMb2FkZXJUaHJlYWQpOgorICAgICAgICAoTG9h
ZGVyVGhyZWFkOjpydW4pOgorICAgICAgICAoRmlsZUxvYWRlcjo6RmlsZUxvYWRlcik6CisgICAg
ICAgIChGaWxlTG9hZGVyOjpyZXF1ZXN0KToKKyAgICAgICAgKEZpbGVMb2FkZXI6OnNlbmREYXRh
KToKKyAgICAgICAgKEZpbGVMb2FkZXI6OnBhcnNlRGF0YVVybCk6CisgICAgICAgIChXZWJDb3Jl
SHR0cDo6V2ViQ29yZUh0dHApOgorICAgICAgICAoV2ViQ29yZUh0dHA6On5XZWJDb3JlSHR0cCk6
CisgICAgICAgIChXZWJDb3JlSHR0cDo6cmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6
c2NoZWR1bGVOZXh0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6Z2V0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlSHR0cDo6b25SZXNwb25zZUhlYWRlclJlY2VpdmVkKToKKyAg
ICAgICAgKFdlYkNvcmVIdHRwOjpvblJlYWR5UmVhZCk6CisgICAgICAgIChXZWJDb3JlSHR0cDo6
b25SZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZUh0dHA6Om9uU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmVIdHRwOjpjYW5jZWwpOgorICAgICAgICAoSG9zdEluZm86Okhv
c3RJbmZvKToKKyAgICAgICAgKHFIYXNoKToKKyAgICAgICAgKG9wZXJhdG9yPT0pOgorICAgICAg
ICAoTmV0d29ya0xvYWRlcjo6TmV0d29ya0xvYWRlcik6CisgICAgICAgIChOZXR3b3JrTG9hZGVy
Ojp+TmV0d29ya0xvYWRlcik6CisgICAgICAgIChOZXR3b3JrTG9hZGVyOjpyZXF1ZXN0KToKKyAg
ICAgICAgKE5ldHdvcmtMb2FkZXI6OmNvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoTmV0d29y
a0xvYWRlcjo6Y2FuY2VsKToKKyAgICAgICAgKiBBcGkvcXdlYm5ldHdvcmtpbnRlcmZhY2UuaDog
QWRkZWQuCisgICAgICAgIChRV2ViTmV0d29ya0pvYjo6c2V0SGFuZGxlKToKKyAgICAgICAgKFFX
ZWJOZXR3b3JrSm9iOjpoYW5kbGUpOgorICAgICAgICAqIEFwaS9xd2VibmV0d29ya2ludGVyZmFj
ZV9wLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyVGhyZWFkOjopOgorICAgICAg
ICAoV2ViQ29yZTo6TG9hZGVyVGhyZWFkOjp3YWl0Rm9yU2V0dXApOgorICAgICAgICAoV2ViQ29y
ZTo6SG9zdEluZm86Okhvc3RJbmZvKToKKworMjAwNy0wNS0xOCAgU2ltb24gSGF1c21hbm4gIDxo
YXVzbWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMuCisKKyAgICAg
ICAgKiBBcGkvcXdlYnBhZ2UuaDogQ2hhbmdlZCB0aGUgbG9hZFByb2dyZXNzQ2hhbmdlZCBBUEkg
dG8gdXNlIGFuCisgICAgICAgIHBlcmNlbnQgaW50ZWdlciBpbnN0ZWFkIG9mIGEgZG91YmxlIHBy
ZWNpc2lvbiBmbG9hdGluZyBwb2ludGVyIG51bWJlci4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnNldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTA1LTE4ICBNYXJp
dXMgQnVnZ2UgTW9uc2VuICA8bWJtQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWmFjayBSdXNpbi4KKworICAgICAgICBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RlZCBLZXlib2Fy
ZEV2ZW50IGhhcworICAgICAgICBubyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5cHJlc3MpOgorCisyMDA3LTA1LTE3ICBBZGFtIFRyZWF0
IDxhZGFtQHN0YWlrb3MubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29z
LgorCisgICAgICAgIC0gSW1wbGVtZW50IGZyYW1lTG9hZENvbXBsZXRlZAorICAgICAgICAtIEZp
eCBidWlsZCAoYnkgR2VvcmdlKQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpm
cmFtZUxvYWRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlRnJhbWUpOgorCisyMDA3LTA1LTE3ICBBZGFtIFRyZWF0ICA8YWRhbUBzdGFpa29z
Lm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KKworICAgICAgICBJ
bXBsZW1lbnQgY2FuU2hvd01JTUVUeXBlCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNhblNob3dNSU1FVHlwZSk6CisKKzIwMDctMDUtMTYgIExhcnMgS25vbGwgPGxhcnNAdHJv
bGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrCisKKyAgICAgICAgcGFzcyB0
aGUgbW91c2UgZXZlbnRzIHRvIHRoZSBldmVudCBoYW5kbGVyLCBub3QgdGhlIGZyYW1ldmlldy4K
KworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjptb3Vz
ZU1vdmVFdmVudCk6CisgICAgICAgIChRV2ViRnJhbWU6Om1vdXNlUmVsZWFzZUV2ZW50KToKKwor
MjAwNy0wNS0xNCAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFphY2sKKworICAgICAgICBVcGRhdGVzIGFmdGVyIE1hY2llaidzIGZyYW1lIGNo
YW5nZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6
c3RvcCk6CisgICAgICAgICAgICAgIENhbGwgc3RvcEZvclVzZXJDYW5jZWwoKSBpbnN0ZWFkIG9m
IHN0b3BBbGxMb2FkZXJzKCkKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnNldE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgICAgICAgQ2FsbCBRV2ViRnJhbWU6Omxv
YWREb25lKCkgZnJvbSB0aGUgcGxhY2VzIGl0J3Mgc3VwcG9zZWQgdG8gYmUKKyAgICAgICAgICAg
ICAgY2FsbGVkIGZyb20uCisKKzIwMDctMDUtMTIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBSb2IgQnVpcy4KKyAgICAgICAgCisgICAg
ICAgIC0gY2FsbCBGcmFtZTo6aW5pdCBhcyBuZWVkZWQgLSB0aGlzIHByZXZlbnRzIGNyYXNoZXMg
YnV0IHBhZ2VzIGRvbid0IGFwcGVhci4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgor
ICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdCk6CisgICAgICAgICogV2ViS2l0UGFydC9X
ZWJLaXRQYXJ0LmNwcDoKKyAgICAgICAgKFdlYktpdFBhcnQ6OmluaXRWaWV3KToKKworMjAwNy0w
NS0wOCAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYS4KKyAgICAgICAgCisgICAgICAgIFNsaWdodCBtb2RpZmljYXRpb24gdG8g
bGFzdCBlZGl0b3IgbWV0aG9kIGZpeC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojp1cGRhdGVT
cGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0Lmg6CisKKzIwMDctMDUtMDMgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2Vu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCisKKyAgICAgICAgQWRk
IG1pc3NpbmcgdXNlciBkZXNjcmlwdGlvbiBwYXJhbWV0ZXIgdG8gc3BlbGxpbmctcmVsYXRlZCBl
ZGl0b3IgY2xpZW50IG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0Lmg6CisKKzIwMDctMDQtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrLgorCisgICAgICAgIFRpZSBRVCBkcmFnIGV2
ZW50cyB0byB0aGUgRHJhZ0NvbnRyb2xsZXIgbG9naWMKKyAgICAgICAgdG8gYWxsb3cgZHJhZyBh
bmQgZHJvcCBldmVudHMgdG8gYmUgaGFuZGxlZCBieQorICAgICAgICB3ZWJraXQuCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBh
Z2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlOjpRV2ViUGFnZSk6CisgICAgICAgIChkcm9w
QWN0aW9uVG9EcmFnT3ApOgorICAgICAgICAoZHJhZ09wVG9Ecm9wQWN0aW9uKToKKyAgICAgICAg
KFFXZWJQYWdlOjpkcmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRV2ViUGFnZTo6ZHJhZ0xlYXZl
RXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OmRyb3BFdmVudCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
bGllbnRRdDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6RHJhZ0NsaWVudFF0KToKKwor
MjAwNy0wNC0yNyAgSG9sZ2VyIEZyZXl0aGVyIDxmcmV5dGhlckBrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE1hY2llai4KKworICAgICAgICBSZW1vdmUgdW5tYWludGFpbmVkIENNYWtl
IGJ1aWxkIHN5c3RlbS4KKworICAgICAgICAqIFF0TGF1bmNoZXIvQ01ha2VMaXN0cy50eHQ6IFJl
bW92ZWQuCisgICAgICAgICogV2ViS2l0UGFydC9DTWFrZUxpc3RzLnR4dDogUmVtb3ZlZC4KKwor
MjAwNy0wNC0yNSAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0uCisgICAgICAgIAorICAgICAgICBGaXggc3BlbGxpbmcgZXJy
b3IgaW4gc3BlbGxpbmcgbWV0aG9kIG5hbWUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dXBk
YXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5oOgorCisyMDA3LTA0LTI0ICBTdGV2ZSBGYWxrZW5idXJnICA8c2Zh
bGtlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgorICAgICAgICAK
KyAgICAgICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgc3R1YnMKKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0OjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OjpsZWFybldvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OmNoZWNrU3BlbGxpbmdPZlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OnVkcGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvd1NwZWxsaW5nVUkpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNwZWxsaW5nVUlJc1Nob3dpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmdldEd1ZXNzZXNGb3JXb3JkKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCisyMDA3LTA0LTExICBNb3JnYW5M
ICA8bW9yZ2FubC53ZWJraXRAeWFob28uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hY2ll
ai4KKworICAgICAgICBBZGQgYSBGcmFtZSBwb2ludGVyIHRvIENocm9tZUNsaWVudCBtZXRob2Rz
OgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyNwor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnRRdDo6Y3JlYXRlTW9kYWxEaWFsb2cpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisKKzIwMDctMDQtMTIgIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KKworICAgICAgICBTZWNvbmQgcGFydCBvZiBRdCBidWlsZCBmaXguCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmxvYWRlZEZyb21DYWNoZWRQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldERvY3VtZW50Vmlld0Zyb21D
YWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVE
b2N1bWVudFZpZXdUb0NhY2hlZFBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaDoKKworMjAwNy0wMy0yNyAgWmFjayBSdXNpbiAgPHpydXNpbkB0cm9s
bHRlY2guY29tPgorCisgICAgICAgIEZpeCB0aGUgcmVuZGVyaW5nIGNyYXNoZXMgZHVlIHRyaWdn
ZXJlZAorICAgICAgICBhc3NlcnRzLiBJbXByb3ZlIGEgYml0IHRoZSBsYXlvdXQKKyAgICAgICAg
c2NoZWR1bGluZy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdl
YkZyYW1lOjpyZXNpemVFdmVudCk6CisgICAgICAgIChRV2ViRnJhbWU6OnBhaW50RXZlbnQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Zm9yY2VMYXlvdXQpOgorCisyMDA3LTAz
LTE2ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgRml4IHRoZSBR
dCBidWlsZCBvbmNlIGFnYWluLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleXBy
ZXNzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmJsb2NrZWRFcnJvcik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTAz
LTEzICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvcmdlLgorCisgICAgICAgIERvbid0IHRyeSB0byBsb2FkIDxvYmplY3Q+IHRhZ3Mgd2l0
aCBhbiBpbnZhbGlkIHVybC4KKyAgICAgICAgRml4ZXMgTGF5b3V0VGVzdHMvZmFzdC9kb20vb2Jq
ZWN0LXBsdWdpbi1oaWRlcy1wcm9wZXJ0aWVzLmh0bWwKKyAgICAgICAgd2hpY2ggaGl0IGFuIGFz
c2VydGlvbiBpbiB0aGUgZnJhbWVsb2FkZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKToKKworMjAwNy0wMy0xMyAgTGFycyBLbm9sbCA8bGFy
c0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycy4KKworICAgICAg
ICBGaXggc29tZSBjcmFzaGVzIGluIHRoZSBRdCBidWlsZC4KKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjptYXJrdXApOgorICAgICAgICAgICAgQ2hl
Y2sgZm9yIG51bGwgcG9pbnRlcgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgICAgIERvbid0
IHVzZSBhbiBhc3luYyBjYWxsYmFjayBpbnRvIHRoZSBGcmFtZUxvYWRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKToKKworMjAwNy0wMy0xMSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFk
ZWxlLgorCisgICAgICAgIFN0dWIgZm9yIEVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2Vk
U2VsZWN0aW9uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAw
Ny0wMy0wNyAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgV2ViS2l0UVQgcGFydCBvZiBmaXggZm9y
OgorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3MQor
ICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3NworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDgyMzEyOT4gUkVHUkVTU0lPTjogSU1FIGtleSBldmVudHMg
ZGlmZmVyZW50IGluIG5pZ2h0bHkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NTk1NjM+IFJF
R1JFU1NJT046IFJldHVybiBrZXkgaXMgYWx3YXlzIHNlbnQgd2hlbiB5b3UgY29uZmlybSBhIGNs
YXVzZSBpbiBrb3RvZXJpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5cHJlc3Mp
OiBDaGFuZ2VkIGhhbmRsZUtleVByZXNzIHRvIGhhbmRsZUtleXByZXNzLgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5cHJlc3MpOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCisyMDA3LTAzLTA3
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDogT29wcywgZm9yZ290IHRoZSBoZWFkZXIuCisKKzIw
MDctMDMtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6IChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0Ojp1c2VyQWdlbnQpOgorICAgICAgICBUcnkgdG8gZml4IHRoZSBidWlsZCBieSBj
b3JyZWN0aW5nIHRoZSBwYXJhbWV0ZXIgaGVyZS4KKworMjAwNy0wMy0wMiAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycy4KKworICAgICAg
ICBUcnkgdG8gZml4IHRoZSBRdCBidWlsZAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJh
Z0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGllbnRRdDo6d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0
OjpkcmFnQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50
UXQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorCisyMDA3LTAyLTI2ICBNYWNpZWogU3RhY2hv
d2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gTWNDdWxs
b3VnaC4KKworICAgICAgICAtIGZpeCBRdCBidWlsZCBmb3IgZWFybGllciBTVkcgY2hhbmdlcy4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwOgorCisyMDA3LTAy
LTI0ICBaYWNrIFJ1c2luICA8enJ1c2luQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgQWRqdXN0
IHRoZSBhbmltYXRpb24gYSBsaXR0bGUgYml0IHRvIG1ha2UgaXQgbW9yZSBuYXR1cmFsLgorCisg
ICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKEhvdmVyTGFiZWw6OnBhaW50
RXZlbnQpOgorCisyMDA3LTAyLTIzICBaYWNrIFJ1c2luICA8enJ1c2luQHRyb2xsdGVjaC5jb20+
CisKKyAgICAgICAgQWRkaW5nIGEgbGl0dGxlIGJpdCBvZiBleWUtY2FuZHkgdG8gdGhlIGxhc3QK
KyAgICAgICAgY29tbWl0IChhbmltYXRpb25zIG9uIGhvdmVyIGV2ZW50cykKKworICAgICAgICAq
IFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChIb3ZlckxhYmVsOjpIb3ZlckxhYmVsKToK
KyAgICAgICAgKEhvdmVyTGFiZWw6OnNldEhvdmVyTGluayk6CisgICAgICAgIChIb3ZlckxhYmVs
OjpzaXplRm9yRm9udCk6CisgICAgICAgIChIb3ZlckxhYmVsOjpzaXplSGludCk6CisgICAgICAg
IChIb3ZlckxhYmVsOjpyZXNldEFuaW1hdGlvbik6CisgICAgICAgIChIb3ZlckxhYmVsOjpwYWlu
dEV2ZW50KToKKyAgICAgICAgKEhvdmVyTGFiZWw6OmludGVycG9sYXRlKToKKyAgICAgICAgKFNl
YXJjaEVkaXQ6OnJlc2l6ZUV2ZW50KToKKworMjAwNy0wMi0yMyAgWmFjayBSdXNpbiAgPHpydXNp
bkB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMKKworICAgICAgICBB
ZGRpbmcgQVBJIGFuZCBjb2RlIGZvciBub3RpZmljYXRpb24gb2Ygd2hlbiB0aGUKKyAgICAgICAg
bW91c2UgaXMgaG92ZXJpbmcgb3ZlciBhIGxpbmsgYW5kIGFkZGluZyBjb2RlIHRvCisgICAgICAg
IHRoZSBzYW1wbGUgYXBwIHRvIHNob3djYXNlIGl0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKiBB
cGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgIChR
V2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuaDoKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoSG92
ZXJMYWJlbDo6SG92ZXJMYWJlbCk6CisgICAgICAgIChIb3ZlckxhYmVsOjpzZXRIb3Zlckxpbmsp
OgorICAgICAgICAoSG92ZXJMYWJlbDo6c2l6ZUhpbnQpOgorICAgICAgICAoSG92ZXJMYWJlbDo6
dXBkYXRlU2l6ZSk6CisgICAgICAgIChIb3ZlckxhYmVsOjpwYWludEV2ZW50KToKKyAgICAgICAg
KENsZWFyQnV0dG9uOjpDbGVhckJ1dHRvbik6CisgICAgICAgIChDbGVhckJ1dHRvbjo6cGFpbnRF
dmVudCk6CisgICAgICAgIChTZWFyY2hFZGl0OjpTZWFyY2hFZGl0KToKKyAgICAgICAgKFNlYXJj
aEVkaXQ6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFNlYXJjaEVkaXQ6Om1vdmVFdmVudCk6Cisg
ICAgICAgIChNYWluV2luZG93OjpNYWluV2luZG93KToKKyAgICAgICAgKE1haW5XaW5kb3c6OnNo
b3dMaW5rSG92ZXIpOgorICAgICAgICAoTWFpbldpbmRvdzo6cmVzaXplRXZlbnQpOgorCisyMDA3
LTAyLTIyICBaYWNrIFJ1c2luICA8enJ1c2luQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTGFycworCisgICAgICAgIEZpeGluZyB0aGUgZGVmYXVsdCBzY3JvbGwgb2Zmc2V0
LCBjbGVhbmluZworICAgICAgICB1cCBwcml2YXRlIG1ldGhvZHMgYW5kIG1ha2luZyB0aGUgZGVm
YXVsdAorICAgICAgICBsb29rIG5vdCB1c2UgYW55IGZyYW1lcy4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdCk6CisgICAgICAg
IChRV2ViRnJhbWVQcml2YXRlOjpfcV9oYW5kbGVLZXlFdmVudCk6CisgICAgICAgIChRV2ViRnJh
bWU6OlFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6OndoZWVsRXZlbnQpOgorICAgICAg
ICAoUVdlYkZyYW1lOjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6a2V5UmVs
ZWFzZUV2ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3
ZWJmcmFtZV9wLmg6CisKKzIwMDctMDItMjIgIFphY2sgUnVzaW4gIDx6cnVzaW5AdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzCisKKyAgICAgICAgTWFrZSB0aGUgcXdl
YmZyYW1lIGFjdCBhcyBhIHByb3BlciBjYW52YXMuCisgICAgICAgIEltcGxlbWVudCBpdCBvbiB0
b3Agb2YgUUFic3RyYWN0U2Nyb2xsQXJlYS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lUHJpdmF0ZTo6aW5pdCk6CisgICAgICAgIChRV2ViRnJhbWVQ
cml2YXRlOjpfcV9hZGp1c3RTY3JvbGxiYXJzKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aW5pdCk6
CisgICAgICAgIChRV2ViRnJhbWU6OlFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnJl
c2l6ZUV2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6Y2hpbGRGcmFtZXMpOgorICAgICAgICAo
UVdlYkZyYW1lOjpwYWludEV2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6bW91c2VNb3ZlRXZl
bnQpOgorICAgICAgICAoUVdlYkZyYW1lOjptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUVdl
YkZyYW1lOjptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChRV2ViRnJhbWU6OndoZWVsRXZl
bnQpOgorICAgICAgICAoUVdlYkZyYW1lOjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFXZWJG
cmFtZTo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFXZWJGcmFtZTo6ZHJhZ0VudGVyRXZl
bnQpOgorICAgICAgICAoUVdlYkZyYW1lOjpkcmFnTGVhdmVFdmVudCk6CisgICAgICAgIChRV2Vi
RnJhbWU6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUVdlYkZyYW1lOjpoYW5kbGVLZXlFdmVu
dCk6CisgICAgICAgIChRV2ViRnJhbWU6OnNjcm9sbENvbnRlbnRzQnkpOgorICAgICAgICAqIEFw
aS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFX
ZWJGcmFtZVByaXZhdGU6OlFXZWJGcmFtZVByaXZhdGUpOgorCisyMDA3LTAyLTIxICBHZW9yZ2Ug
U3RhaWtvcyAgPHN0YWlrb3NAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrLgor
CisgICAgICAgIEFkZCBtb3JlIGVkaXRpbmcgc3VwcG9ydCwgYW5kIHVuZG8vcmVkby4gIFJlcXVp
cmVzIHNvbWUgbmFzdHkgZXZpbAorICAgICAgICBoYWNrcyB0aGF0IGhhdmUgdG8gYmUgc29ydGVk
IG91dCBpbiBXZWJDb3JlL2VkaXRvci4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6On5RV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2U6OnVuZG9T
dGFjayk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdl
X3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpkaWRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0Ojppc0VkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudFF0OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRRdDo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dW5k
byk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVkbyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5UHJlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OkVkaXRvckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvckNsaWVudFF0Ojp0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OmlzRWRpdGluZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAwNy0wMi0yMSAgWmFjayBSdXNpbiAgPHpydXNpbkB0
cm9sbHRlY2guY29tPgorCisgICAgICAgIEZpeCBjb21waWxhdGlvbi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaDoKKworMjAwNy0wMi0yMSAgR2VvcmdlIFN0YWlr
b3MgIDxzdGFpa29zQGtkZS5vcmc+CisKKyAgICAgICAgRml4IGNvbXBpbGUuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnN0b3ApOgorCisyMDA3LTAy
LTIwICBaYWNrIFJ1c2luICA8enJ1c2luQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTGFycworCisgICAgICAgIE1ha2UgZWRpdGluZyBvZiBmb3JtcyB3b3JrIHBsdXMgbWFr
ZSBzdXJlIHRoYXQgbm9uLXZvaWQgbWV0aG9kcworICAgICAgICBhbHdheXMgcmV0dXJuIHNvbWV0
aGluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuSmF2
YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bkph
dmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNob3Vs
ZEludGVycnVwdEphdmFTY3JpcHQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGREZWxl
dGVSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkQmVnaW5F
ZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRFbmRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRBcHBseVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2Rl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisKKzIwMDctMDItMTcgIExhcnMgS25vbGwgPGxhcnNA
dHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCisKKyAgICAgICAg
QWRkaXRpb25hbCBjb2RpbmcgYnkgTWFjaWVqLCBhZGRpdGlvbmFsIHJldmlldyBieSBPbGl2ZXIu
CisKKyAgICAgICAgQWRkIHN0dWJzIGZvciB0aGUgbmV3IG1ldGhvZHMgaW4gQ2hvcm1lQ2xpZW50
IGFuZCBFZGl0b3JDbGllbnQsCisgICAgICAgIHJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBGcmFt
ZVF0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6
OlFXZWJGcmFtZSk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2hvdWxkSW50ZXJydXB0SmF2
YVNjcmlwdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnNldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Ondl
YkZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6
CisKKzIwMDctMDItMTggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBCdWlsZCBmaXggLS0gYWRkaW5nIERyYWdDbGllbnRRdCBtZXRob2Qgc3R1YnMKKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ2xpZW50UXQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xp
ZW50UXQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0RyYWdDbGllbnRRdC5oOgorCisyMDA3LTAyLTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtCisKKyAgICAgICAgTW92ZWQgc2Ny
b2xsIHN0YXRlIGRvd24gaW50byB0aGUgY3Jvc3MgcGxhdGZvcm0gRnJhbWVMb2FkZXIgLSAKKyAg
ICAgICAgQmxpbmQgYXR0ZW1wdCBhdCBrZWVwaW5nIFF0IGJ1aWxkaW5nCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlc3RvcmVWaWV3U3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2F2ZVZpZXdTdGF0ZVRvSXRlbSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTAyLTA3ICBBbmRl
cnMgQ2FybHNzb24gIDxhY2FybHNzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRyeSBmaXhpbmcg
dGhlIFF0IGJ1aWxkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnNob3VsZEludGVycnVwdEph
dmFTY3JpcHQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0Lmg6CisK
KzIwMDctMDItMDIgIFphY2sgUnVzaW4gIDx6cnVzaW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAg
ICBDb21waWxhdGlvbiBmaXg6IGZvcndhcmQgZGVjbGFyZSBkLXB0ci4KKworICAgICAgICAqIEFw
aS9xY29va2llamFyLmg6CisKKzIwMDctMDItMDIgIFphY2sgUnVzaW4gIDx6cnVzaW5AdHJvbGx0
ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzCisKKyAgICAgICAgTWFrZSB0aGUg
ZnJhbWVzIHdoaXRlIGJ5IGRlZmF1bHQgYW5kIGdldCB0aGUKKyAgICAgICAgZmlsZXMgdGhhdCBX
ZWJDb3JlIGNhbiBoYW5kbGUgcmVuZGVyIGluc2lkZQorICAgICAgICB0aGUgZnJhbWVzLgorCisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OlFXZWJGcmFt
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisK
KzIwMDctMDItMDEgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IFphY2sgYW5kIExhcnMuCisKKyAgICAgICAgQWRkIGEgY29va2llIGludGVy
ZmFjZSBmb3IgdGhlIFF0IGJ1aWxkLgorCisgICAgICAgICogQXBpL3Fjb29raWVqYXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFFDb29raWVKYXJQcml2YXRlOjpRQ29va2llSmFyUHJpdmF0ZSk6Cisg
ICAgICAgIChxSGFzaCk6CisgICAgICAgIChRQ29va2llSmFyOjpRQ29va2llSmFyKToKKyAgICAg
ICAgKFFDb29raWVKYXI6On5RQ29va2llSmFyKToKKyAgICAgICAgKFFDb29raWVKYXI6OnNldENv
b2tpZXMpOgorICAgICAgICAoUUNvb2tpZUphcjo6Y29va2llcyk6CisgICAgICAgIChRQ29va2ll
SmFyOjppc0VuYWJsZWQpOgorICAgICAgICAoUUNvb2tpZUphcjo6c2V0RW5hYmxlZCk6CisgICAg
ICAgIChnQ2xlYW51cEphcik6CisgICAgICAgIChRQ29va2llSmFyOjpzZXRDb29raWVKYXIpOgor
ICAgICAgICAoUUNvb2tpZUphcjo6Y29va2llSmFyKToKKyAgICAgICAgKiBBcGkvcWNvb2tpZWph
ci5oOiBBZGRlZC4KKworMjAwNy0wMi0wMSAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0uCisKKyAgICAgICAgRml4IGZvcm0gbG9hZGlu
ZyBmb3IgdGhlIFF0IGJ1aWxkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
YWxsUG9saWN5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6c2xvdENhbGxQb2xpY3lGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKworMjAwNy0wMS0z
MSAgWmFjayBSdXNpbiAgPHpydXNpbkB0cm9sbHRlY2guY29tPgorCisgICAgICAgIEV4cG9zZSB0
aGUgZmFjdCB0aGF0IHRoZSBmb3JtIGhhcyBiZWVuIGVkaXRlZAorICAgICAgICBpbiB0aGUgcHVi
bGljIGFwaS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFn
ZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZTo6aXNNb2RpZmll
ZCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3Au
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc0VkaXRhYmxlKToKKworMjAwNy0wMS0z
MSAgWmFjayBSdXNpbiAgPHpydXNpbkB0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IExhcnMKKworICAgICAgICBQcm9wZXJseSBwcm9wYWdhdGUga2V5IGV2ZW50cy4KKworICAg
ICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjphZGRUb0pTV2lu
ZG93T2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6aW5uZXJUZXh0KToKKyAgICAgICAgKFFX
ZWJGcmFtZTo6cmVuZGVyVHJlZUR1bXApOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnBhZ2VEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleVByZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpFZGl0b3JDbGllbnRRdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKworMjAwNy0wMS0zMSAgR2VvcmdlIFN0YWlr
b3MgIDxzdGFpa29zQGtkZS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGZvY3VzRnJhbWUoKSAtIG1p
c2d1aWRlZCAtIGFuZCBhZGQgY2hpbGRGcmFtZXMoKS4gIEZpeCBhIGNyYXNoCisgICAgICAgIG9u
IGV4aXQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICAqIEFwaS9xd2Vi
ZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpyZXNpemVFdmVudCk6CisgICAgICAgIChR
V2ViRnJhbWU6OmNoaWxkRnJhbWVzKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndlYkZyYW1lKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDctMDEtMzAgIFphY2sgUnVzaW4g
IDx6cnVzaW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBJbXByb3ZlIFF0TGF1bmNoZXIgdG8g
bWFrZSBpdCBtb3JlIHVzZWZ1bCBhcyBhIHRlc3RpbmcgdG9vbC4KKworICAgICAgICAqIFF0TGF1
bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChDbGVhckJ1dHRvbjo6Q2xlYXJCdXR0b24pOgorICAg
ICAgICAoQ2xlYXJCdXR0b246OnBhaW50RXZlbnQpOgorICAgICAgICAoU2VhcmNoRWRpdDo6U2Vh
cmNoRWRpdCk6CisgICAgICAgIChTZWFyY2hFZGl0Ojp+U2VhcmNoRWRpdCk6CisgICAgICAgIChT
ZWFyY2hFZGl0OjpwYWludEV2ZW50KToKKyAgICAgICAgKFNlYXJjaEVkaXQ6OnJlc2l6ZUV2ZW50
KToKKyAgICAgICAgKFNlYXJjaEVkaXQ6Om1vdmVFdmVudCk6CisgICAgICAgIChNYWluV2luZG93
OjpNYWluV2luZG93KToKKyAgICAgICAgKE1haW5XaW5kb3c6OmNoYW5nZUxvY2F0aW9uKToKKyAg
ICAgICAgKE1haW5XaW5kb3c6OmxvYWRGaW5pc2hlZCk6CisKKzIwMDctMDEtMzAgIFNpbW9uIEhh
dXNtYW5uICA8aGF1c21hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrLgor
CisgICAgICAgIEFkZGVkIGltcG9ydC9leHBvcnQgbWFjcm9zIG5lZWRlZCBmb3IgYnVpbGQgd2l0
aCBFTEYgdmlzaWJpbGl0eSBhbmQKKyAgICAgICAgZm9yIGEgYnVpbGQgb24gV2luZG93cyAoaW4g
dGhlIGZ1dHVyZSkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBp
L3F3ZWJraXRnbG9iYWwuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAg
ICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5oOgorCisyMDA3LTAxLTMwICBaYWNrIFJ1c2luICA8
emFja0BrZGUub3JnPgorCisgICAgICAgIENoYW5nZSB0aGUgc2lnbmF0dXJlIG9mIGhhbmRsZUtl
eVByZXNzCisgICAgICAgIChtYWtlIGl0IGNvbXBpbGUpCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6aGFuZGxlS2V5UHJlc3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0Lmg6CisKKzIwMDctMDEtMjkgIFphY2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTGFycworCisgICAgICAgIFNldCB0aGUgYWxsb3dzLXNjcm9sbGluZyBw
cm9wZXJ0eSBvbiB0aGUgdmlldy4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAg
ICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorCisyMDA3LTAxLTI5ICBPbGl2ZXIgSHVudCAg
PG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbS4KKworICAgICAg
ICBTdHViIGZvciBuZXcgRHJhZ0NsaWVudCBtZXRob2QKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0RyYWdDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OmRy
YWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Ry
YWdDbGllbnRRdC5oOgorCisyMDA3LTAxLTI5ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyay4KKworICAgICAgICAtIHVwZGF0ZWQg
Zm9yIGNyb3NzLXBsYXRmb3JtIGRhdGEgbG9hZGluZyBzdXBwb3J0CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDctMDEtMjkgIEdlb3JnZSBT
dGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIE1ha2Ugd2luZG93IHJlc2l6aW5n
IHdvcmsuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6
OnNldFdpbmRvd0dlb21ldHJ5KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6c2V0V2luZG93UmVjdCk6CisKKzIwMDctMDEtMjkgIEdlb3JnZSBTdGFp
a29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIE1ha2UgcG9wdXAgd2luZG93cyB3b3Jr
LgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpjcmVh
dGVXaW5kb3cpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dFF0OjpjcmVhdGVXaW5kb3cpOgorCisyMDA3LTAxLTI5ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xs
dGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjaworCisgICAgICAgIEZpeCB0aGUg
d2F5IHdlIGhhbmRsZSBuYXRpdmUgd2lkZ2V0cyAoUVdpZGdldCkgaW5zaWRlCisgICAgICAgIFdl
YkNvcmUuIE5vdyBXZWJDb3JlOjpXaWRnZXQgb3ducyB0aGUgUVdpZGdldCBpbiBhbGwKKyAgICAg
ICAgY2FzZXMuIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGdldCB3ZWxsIGRlZmluZWQgc2VtYW50
aWNzCisgICAgICAgIGZvciBhbGwgdGVoIG5hdGl2ZSB3aWRnZXRzIHdlIGhhdmUgKGN1cnJlbnRs
eSBTY3JvbGxWaWV3CisgICAgICAgIGFuZCBTY3JvbGxCYXIsIGJ1dCBwbHVnaW5zIHdpbGwgZm9s
bG93KS4KKworICAgICAgICBUaGlzIGhhcyB0aGUgc2lkZSBlZmZlY3QgdGhhdCBvbmUgY2Fubm90
IHJlbHkgb24gYSBkZWZpbmVkIAorICAgICAgICBsaWZldGltZSBvZiBhIFFXZWJGcmFtZSB3aGVu
IHVzaW5nIHRoZSBBUEkuIAorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAg
IChRV2ViRnJhbWU6On5RV2ViRnJhbWUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZTo6flFXZWJQYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkZXRhY2hlZEZyb21QYXJl
bnQ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZyYW1lTG9hZGVy
RGVzdHJveWVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
Lmg6CisKKzIwMDctMDEtMjkgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFphY2suCisKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgZnVuY3Rp
b25zCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6Omph
dmFTY3JpcHRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChRV2ViUGFnZTo6c3RhdHVzVGV4dENo
YW5nZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAg
ICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmNhbkdvQmFjayk6CisgICAgICAgIChRV2ViUGFnZUhp
c3Rvcnk6OmNhbkdvRm9yd2FyZCk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKToKKworMjAwNy0wMS0y
NiAgR2VvcmdlIFN0YWlrb3MgIDxzdGFpa29zQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWmFjay4KKworICAgICAgICBRdCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAo
UVdlYkZyYW1lOjp0aXRsZSk6CisgICAgICAgIChRV2ViRnJhbWU6OnNlbGVjdGVkVGV4dCk6Cisg
ICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6Y3JlYXRlRnJh
bWUpOgorICAgICAgICAoUVdlYlBhZ2U6Om9wZW4pOgorICAgICAgICAoUVdlYlBhZ2U6OnVybCk6
CisgICAgICAgIChRV2ViUGFnZTo6dGl0bGUpOgorICAgICAgICAoUVdlYlBhZ2U6OmZvY3VzRnJh
bWUpOgorICAgICAgICAoUVdlYlBhZ2U6OnN0b3ApOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGV0YWNoRnJhbWVMb2FkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKworMjAwNy0wMS0y
NiAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIE1ha2UgaXQgY29t
cGlsZSBhZ2FpbiB3aXRoIFF0IDQuMiBhbmQgYWRkIHRoZSBjb3B5cmlnaHQKKyAgICAgICAgaGVh
ZGVycyB3aGVyZSBmb3Jnb3R0ZW4gaW4gdGhlIGxhc3Qgc3VibWl0LgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlaGlzdG9yeS5jcHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5oOgor
ICAgICAgICAoUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6b3BlcmF0b3IqKToKKyAgICAg
ICAgKFFFeHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI6Om9wZXJhdG9yLT4pOgorICAgICAgICAo
UUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6b3BlcmF0b3IgVCAqKToKKyAgICAgICAgKFFF
eHBsaWNpdGx5U2hhcmVkRGF0YVBvaW50ZXI6Om9wZXJhdG9yIGNvbnN0IFQgKik6CisgICAgICAg
IChRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyOjpkYXRhKToKKyAgICAgICAgKFFFeHBsaWNp
dGx5U2hhcmVkRGF0YVBvaW50ZXI6OmNvbnN0RGF0YSk6CisgICAgICAgIChRRXhwbGljaXRseVNo
YXJlZERhdGFQb2ludGVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFFFeHBsaWNpdGx5U2hhcmVk
RGF0YVBvaW50ZXI6Om9wZXJhdG9yIT0pOgorICAgICAgICAoUUV4cGxpY2l0bHlTaGFyZWREYXRh
UG9pbnRlcjo6UUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcik6CisgICAgICAgIChRRXhwbGlj
aXRseVNoYXJlZERhdGFQb2ludGVyOjp+UUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcik6Cisg
ICAgICAgIChRRXhwbGljaXRseVNoYXJlZERhdGFQb2ludGVyOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoUUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcjo6b3BlcmF0b3IhKToKKyAgICAgICAgKDo6
UUV4cGxpY2l0bHlTaGFyZWREYXRhUG9pbnRlcik6CisKKzIwMDctMDEtMjYgIFphY2sgUnVzaW4g
IDx6cnVzaW5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBMYXJzCisKKyAg
ICAgICAgSW1wbGVtZW50IGhpc3Rvcnkgc3VwcG9ydCBvbiBwbGF0Zm9ybSBRdC4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6aGlzdG9yeSk6CisgICAg
ICAgIChRV2ViUGFnZTo6Z29CYWNrKToKKyAgICAgICAgKFFXZWJQYWdlOjpnb0ZvcndhcmQpOgor
ICAgICAgICAoUVdlYlBhZ2U6OmdvVG9IaXN0b3J5SXRlbSk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlaGlzdG9yeS5jcHA6IEFkZGVkLgorICAgICAg
ICAoUVdlYkhpc3RvcnlJdGVtOjp+UVdlYkhpc3RvcnlJdGVtKToKKyAgICAgICAgKFFXZWJIaXN0
b3J5SXRlbTo6b3JpZ2luYWxVcmwpOgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjpjdXJyZW50
VXJsKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SXRlbTo6dGl0bGUpOgorICAgICAgICAoUVdlYkhp
c3RvcnlJdGVtOjpsYXN0VmlzaXRlZCk6CisgICAgICAgIChRV2ViSGlzdG9yeUl0ZW06Omljb24p
OgorICAgICAgICAoUVdlYkhpc3RvcnlJdGVtOjpRV2ViSGlzdG9yeUl0ZW0pOgorICAgICAgICAo
UVdlYlBhZ2VIaXN0b3J5OjpRV2ViUGFnZUhpc3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2VIaXN0
b3J5OjppdGVtQXRJbmRleCk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6On5RV2ViUGFnZUhp
c3RvcnkpOgorICAgICAgICAoUVdlYlBhZ2VIaXN0b3J5OjppdGVtcyk6CisgICAgICAgIChRV2Vi
UGFnZUhpc3Rvcnk6OmJhY2tJdGVtcyk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmZvcndh
cmRJdGVtcyk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6OmdvQmFjayk6CisgICAgICAgIChR
V2ViUGFnZUhpc3Rvcnk6OmdvRm9yd2FyZCk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6Omdv
VG9JdGVtKToKKyAgICAgICAgKFFXZWJQYWdlSGlzdG9yeTo6YmFja0l0ZW0pOgorICAgICAgICAo
UVdlYlBhZ2VIaXN0b3J5OjpjdXJyZW50SXRlbSk6CisgICAgICAgIChRV2ViUGFnZUhpc3Rvcnk6
OmZvcndhcmRJdGVtKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VoaXN0b3J5Lmg6IEFkZGVkLgor
ICAgICAgICAqIEFwaS9xd2VicGFnZWhpc3RvcnlfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFXZWJI
aXN0b3J5SXRlbVByaXZhdGU6OlFXZWJIaXN0b3J5SXRlbVByaXZhdGUpOgorICAgICAgICAoUVdl
Ykhpc3RvcnlJdGVtUHJpdmF0ZTo6flFXZWJIaXN0b3J5SXRlbVByaXZhdGUpOgorICAgICAgICAo
UVdlYlBhZ2VIaXN0b3J5UHJpdmF0ZTo6UVdlYlBhZ2VIaXN0b3J5UHJpdmF0ZSk6CisgICAgICAg
IChRV2ViUGFnZUhpc3RvcnlQcml2YXRlOjp+UVdlYlBhZ2VIaXN0b3J5UHJpdmF0ZSk6CisKKzIw
MDctMDEtMjYgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBHZXQg
cmlkIG9mIEZyYW1lUXRDbGllbnQuIEl0J3MgdW51c2VkIHNpbmNlIHdlIG1vdmVkIG92ZXIKKyAg
ICAgICAgdG8gdGhlIGxvYWRlci4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAg
ICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorCisyMDA3LTAxLTI2ICBaYWNrIFJ1c2luICA8
emFja0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMKKworICAgICAgICBDb3Jy
ZWN0bHkgcG9zaXRpb24gY2hpbGQgZnJhbWVzIHdpdGhpbiB0aGUgCisgICAgICAgIHRvcGxldmVs
IGZyYW1lLiBXZSB3ZXJlIHBsYWNlZCBpdCBvbiB0aGUgd2lkZ2V0CisgICAgICAgIGl0c2VsZiBp
bnN0ZWFkIG9mIHRoZSB2aWV3ZXBvcnQuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6UVdlYkZyYW1lKToKKworMjAwNy0wMS0yNiAgTGFycyBLbm9s
bCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFphY2sKKworICAg
ICAgICBNYWtlIHN1cmUgd2UgcmVzaXplIHRoZSBIVE1MIHdoZW4gcmVzaXppbmcgYSAKKyAgICAg
ICAgUVdlYkZyYW1lLiBBbHNvIGVuc3VyZSB0aGF0IHRoZSByZW5kZXIgdHJlZQorICAgICAgICBp
cyB1cCB0byBkYXRlIGJlZm9yZSBkdW1waW5nIGl0LgorCisgICAgICAgICogQXBpL3F3ZWJmcmFt
ZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmlubmVyVGV4dCk6CisgICAgICAgIChRV2ViRnJh
bWU6OnJlbmRlclRyZWVEdW1wKToKKyAgICAgICAgKFFXZWJGcmFtZTo6cmVzaXplRXZlbnQpOgor
ICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpjcmVhdGVNYWluRnJhbWUpOgorCisyMDA3LTAxLTI2
ICBaYWNrIFJ1c2luICA8emFja0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IExhcnMK
KworICAgICAgICBEaXNwbGF5IHBhZ2VzIGluc2lkZSBhIG1haW53aW5kb3cgaW5zdGVhZAorICAg
ICAgICBvZiBhIGN1c3RvbSBxd2lkZ2V0LgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNw
cDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAobWFpbik6CisK
KzIwMDctMDEtMjUgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBaYWNrCisKKyAgICAgICAgRW1pdCB0aGUgbG9hZERvbmUoKSBzaWduYWwgZnJv
bSB0ZWggb25sb2FkIGV2ZW50IGNhbGxiYWNrCisgICAgICAgIGFnYWluLiBUaGlzIGhhbmdzIG9u
IG9uZSBvciB0d28gdGVzdCBjYXNlcywgYnV0IHJlbW92ZXMKKyAgICAgICAgaHVuZHJlZHMgb2Yg
ZmFpbHVyZXMgZWxzZXdoZXJlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaExvYWQpOgorCisyMDA3LTAxLTI0ICBMYXJz
IEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjawor
CisgICAgICAgIEltcGxlbWVudCBzb21lIGJpdHMgYW5kIHBpZWNlcyByZXF1aXJlZCBieSB0aGUg
bG9hZGVyLgorICAgICAgICBGaXhlcyBxdWl0ZSBhIGZldyBjcmFzaGVzIGFuZCBoYW5ncyBpbiB0
aGUgbHlvdXQgdGVzdHMKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0TWFpbkRvY3Vt
ZW50RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y29tbWl0
dGVkTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUpOgorCisyMDA3
LTAxLTI0ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgRml4IGNv
bXBpbGF0aW9uIGFnYWluLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleVByZXNz
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCisyMDA3LTAx
LTIzICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWmFjaworCisgICAgICAgIEZpeCByZWZjb3VudGluZyBvZiBGcmFtZVZpZXdzICh0aGV5IGdl
dCBjcmVhdGVkIHdpdGggYQorICAgICAgICByZWZjb3VudCBvZiAxKSBhbmQgYWRkIGEgZmV3IHNh
ZmV0eSBjaGVja3MgdG8gdGhlIAorICAgICAgICBGcmFtZUxvYWRlckNsaWVudFF0LgorCisgICAg
ICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OlFXZWJGcmFtZSk6
CisgICAgICAgIChRV2ViRnJhbWU6On5RV2ViRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkZXRhY2hlZEZyb21QYXJlbnQ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWRO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cG9z
dFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZyYW1lTG9hZGVyRGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbmRvd09iamVj
dENsZWFyZWQpOgorCisyMDA3LTAxLTIzICBaYWNrIFJ1c2luICA8emFja0BrZGUub3JnPgorCisg
ICAgICAgIEFkanVzdCB0aGUgRHJhZ0NsaWVudFF0IHRvIGxhdGVzdCBjaGFuZ2VzLgorCisgICAg
ICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBh
Z2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjpkcmFnQ29udHJvbGxlckRlc3Ryb3llZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0Lmg6CisKKzIwMDctMDEtMjMg
IFphY2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CisKKyAgICAgICAgRml4IHRoZSBRdCBidWlsZAor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDbGllbnRRdDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24pOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5oOgorCisyMDA3LTAxLTIzICBM
YXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEZyYW1lcyB0byB0aGUgUXQgYnVpbGQgYW5k
IGZpeCBzb21lIGlzc3VlcworICAgICAgICBpbiB0aGUgQVBJIGNsYXNzZXMuCisKKyAgICAgICAg
KiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6UVdlYkZyYW1lKToKKyAg
ICAgICAgKFFXZWJGcmFtZTo6flFXZWJGcmFtZSk6CisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5o
OgorICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZU1haW5GcmFtZSk6CisgICAgICAgIChRV2ViUGFnZTo6
Y3JlYXRlRnJhbWUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlckNsaWVudFF0OjpkZXRhY2hlZEZyb21QYXJlbnQ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbFBvbGljeUNoZWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbmRvd09iamVjdENsZWFyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6b3ZlcnJpZGVN
ZWRpYVR5cGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aDoKKworMjAwNy0wMS0yMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0uCisKKyAgICAgICAgUXQgYnVpbGQgc3R1YnMgZm9yIERyb3Ag
bG9naWMKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRRdC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaWVudFF0OjphY3Rpb25NYXNrRm9yRHJhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50UXQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuaDogQWRkZWQu
CisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcDoKKyAgICAgICAgKFdlYktpdFBh
cnQ6OmluaXRWaWV3KToKKworMjAwNy0wMS0xOSAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGRlZCBzdHVicyBmb3IgbmV3IGNhbGxiYWNrcywgdG8gdHJ5
IHRvIGF2b2lkIGJyZWFraW5nIHRoZSBRdCBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTAxLTE5ICBBbmRlcnMg
Q2FybHNzb24gIDxhY2FybHNzb25AYXBwbGUuY29tPgorCisgICAgICAgIFRyeSBmaXhpbmcgdGhl
IFFUIGJ1aWxkLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuSmF2YVNjcmlw
dEFsZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0
Q29uZmlybSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cnVuSmF2YVNjcmlw
dFByb21wdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2V0U3RhdHVzYmFy
VGV4dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKworMjAw
Ny0wMS0xOCAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBMYXJzLgorCisgICAgICAgIEltcGxlbWVudGluZyBhIGxpdHRsZSBiaXQgb2YgbG9hZCBwcm9n
cmVzcyB0cmFja2luZyBpbiB0aGUgUXQgcG9ydC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUu
Y3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpRV2ViRnJhbWUpOgorICAgICAgICAoUVdlYkZyYW1l
OjpwYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJm
cmFtZV9wLmg6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpRV2ViRnJhbWVQcml2YXRlKToK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3Bw
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkZXRhY2hGcmFt
ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJv
Z3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oOgorCisyMDA3LTAxLTE3ICBBbGljZSBMaXUgIDxhbGljZS5saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZGVkIHRoZXNlIHN0dWJzIHRvIGtlZXAgdGhlIFF0IGJ1aWxkIGZyb20gZmFpbGlu
Zy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisKKzIw
MDctMDEtMTcgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBaYWNrCisKKyAgICAgICAgUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBmcm9tIFNoYXJl
ZDxYeHhDbGllbnQ+IGluIHRoZQorICAgICAgICBjbGllbnQgY2xhc3Nlcy4KKworICAgICAgICBB
bnN3ZXIgYXN5bmNocm9ub3VzbHkgdG8gbW9zdCBvZiB0aGUgUG9saWN5IGNoZWNraW5nIG1ldGhv
ZHMKKyAgICAgICAgaW4gRnJhbWVMb2FkZXJDbGllbnRRdCB0byBhdm9pZCBzb21lIGNyYXNoZXMg
aW4gdGhlIGxvYWRlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVy
Q2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbFBv
bGljeUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNs
b3RDYWxsUG9saWN5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6Y2FuY2VsUG9saWN5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCisyMDA3LTAxLTE3ICBMYXJzIEtu
b2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjaworCisg
ICAgICAgIGNoYW5nZSBhbGwgbm90SW1wbGVtZW50ZWQoKSBtYWNyb3MgdG8gdXNlIHFEZWJ1Zwor
ICAgICAgICBpbnN0ZWFkIG9mIGZwcmludGYoc3RkZXIsIC4uLikKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHA6CisKKzIwMDctMDEtMTYgIEFsaWNlIExpdSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkZWQgdGhlc2Ugc3R1YnMgdG8ga2VlcCB0aGUgUXQgYnVpbGQgZnJvbSBmYWls
aW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCisyMDA3
LTAxLTE2ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWmFjaworCisgICAgICAgIEFkZGVkIHRoZSBzdGFydCBvZiBhIHB1YmxpYyBBUEkgdG8g
dGhlIFF0IGJ1aWxkCisgICAgICAgIG9mIFdlYktpdC4gQ3VycmVudGx5IHdlIGhhdmUgUVdlYlBh
Z2UgYW5kIFFXZWJGcmFtZQorICAgICAgICB3aXRoIGEgZmV3IHNtYWxsIG1ldGhvZHMuCisKKyAg
ICAgICAgQ29udmVydGVkIHRoZSBRdExhdW5jaGVyIHRvIHVzZSB0aGUgbmV3IHB1YmxpYyBBUEku
CisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChRV2ViRnJh
bWU6OlFXZWJGcmFtZSk6CisgICAgICAgIChRV2ViRnJhbWU6On5RV2ViRnJhbWUpOgorICAgICAg
ICAoUVdlYkZyYW1lOjphZGRUb0pTV2luZG93T2JqZWN0KToKKyAgICAgICAgKFFXZWJGcmFtZTo6
bWFya3VwKToKKyAgICAgICAgKFFXZWJGcmFtZTo6aW5uZXJUZXh0KToKKyAgICAgICAgKFFXZWJG
cmFtZTo6cmVuZGVyVHJlZUR1bXApOgorICAgICAgICAqIEFwaS9xd2ViZnJhbWUuaDogQWRkZWQu
CisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6IEFkZGVkLgorICAgICAgICAoUVdlYkZyYW1l
UHJpdmF0ZTo6UVdlYkZyYW1lUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDog
QWRkZWQuCisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAg
ICAgIChRV2ViUGFnZVByaXZhdGU6On5RV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpjcmVhdGVNYWluRnJhbWUpOgorICAgICAgICAoUVdlYlBhZ2U6OlFXZWJQYWdl
KToKKyAgICAgICAgKFFXZWJQYWdlOjp+UVdlYlBhZ2UpOgorICAgICAgICAoUVdlYlBhZ2U6OmNy
ZWF0ZUZyYW1lKToKKyAgICAgICAgKFFXZWJQYWdlOjpvcGVuKToKKyAgICAgICAgKFFXZWJQYWdl
OjptYWluRnJhbWUpOgorICAgICAgICAoUVdlYlBhZ2U6OnNpemVIaW50KToKKyAgICAgICAgKiBB
cGkvcXdlYnBhZ2UuaDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDogQWRkZWQu
CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnRRdDo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnRRdDo6d2luZG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6cGFn
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmZvY3VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojp1bmZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpjYW5UYWtlRm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVN
b2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6c2hvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2hyb21lRGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2xvc2VXaW5k
b3dTb29uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGV0YWNoRnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cGFydENsZWFyZWRJbkJl
Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisK
KzIwMDctMDEtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgRml4IGJ1aWxkLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVz
c0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0Lmg6CisKKzIwMDctMDEtMTMgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBDb21waWxlIGFnYWluIGFmdGVyIHllc3RlcmRheXMgY2hhbmdlcy4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6YXNzaWduSWRlbnRpZmllclRvSW5p
dGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmluY3JlbWVu
dFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbXBs
ZXRlUHJvZ3Jlc3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaDoKKworMjAwNy0wMS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgS2VlcCB0aGUgZmFuY3kgbmV3IEZyYW1lTG9hZGVyQ2xpZW50UXQgYnVpbGRpbmcg
d2l0aCBhIHNtYWxsIGFwaSBjaGFuZ2UgaW4gV2ViQ29yZQorICAgICAgICBZYXkgZm9yIHRoZSBs
b2FkZXIgb24gUVQhCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwor
MjAwNy0wMS0xMSAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluCisKKyAgICAgICAgU3RhcnQgdXNpbmcgdGhlIGxvYWRlciBpbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChtYWlu
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6fkZyYW1lTG9hZGVyQ2xp
ZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGV0YWNoRnJhbWVMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6bWFrZURvY3VtZW50
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjptYWtlUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0Q29w
aWVzT25TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpjYW5jZWxQb2xpY3lDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnByb2dyZXNzU3RhcnRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpwcm9ncmVzc0NvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNsZWFyQXJjaGl2ZWRSZXNv
dXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuU2hvd01J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlcHJlc2Vu
dGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxvYWRlckRlc3Ryb3llZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5IYW5kbGVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEdvVG9IaXN0
b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5DYWNo
ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y29tbWl0dGVk
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5jZWxsZWRF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93
VVJMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6aW50ZXJy
dXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXJDbGllbnRRdDo6ZmlsZURvZXNOb3RFeGlzdEVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEZhbGxCYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OndpbGxVc2VBcmNoaXZlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0Lmg6CisKKzIwMDctMDEtMTEgIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUu
b3JnPgorCisgICAgICAgIEZpeCBRdCBCdWlsZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVD
bGllbnRRdDo6c2VhcmNoV2l0aEdvb2dsZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRRdC5oOgorCisyMDA3LTAxLTA2ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlr
b3NAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeS4KKworICAgICAgICBNYWtl
IGl0IGxpbmsuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5Eb2N1
bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1p
dHRlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2Vs
bGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2Fubm90
U2hvd1VSTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Omlu
dGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmNhbm5vdFNob3dNSU1FVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRGYWxsQmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck1JTUVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmluY3JlbWVudFBy
b2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbXBsZXRl
UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c3RhcnRE
b3dubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsVXNl
QXJjaGl2ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
OgorCisyMDA3LTAxLTA1ICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgTWFrZSB0aGUgUXQgYnVpbGQgY29tcGlsZSBhZ2FpbgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50
UXQ6OmNhblRha2VGb2N1cyk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6dGFr
ZUZvY3VzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRl
bXMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaDoKKwor
MjAwNy0wMS0wMyAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIEZp
eCB0aGUgUXQgYnVpbGQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RG9j
dW1lbnRWaWV3RnJvbVBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hpc3Rv
cnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVTY3Jv
bGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpzYXZlRG9jdW1lbnRWaWV3VG9QYWdlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuQ2FjaGVQYWdlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKKzIwMDYtMTItMjkgIEdlb3JnZSBT
dGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIEFkZCBtaXNzaW5nIG5vdGltcGxl
bWVudGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxvYWRlckRl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5IYW5k
bGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBhcnRD
bGVhcmVkSW5CZWdpbik6CisKKzIwMDYtMTItMjEgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNo
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWNrCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6Omhhc1dlYlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6aGFzRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmlyc3RMYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cGFydENsZWFyZWRJbkJlZ2luKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisgICAgICAgICAgICAgICAgIFJl
bW92ZSBzb21lIHJ1bnRpbXcgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgQWRkIHBhcnRDbGVh
cmVkSW5CZWdpbiBmb3J3YXJkaW5nIGNhbGwsIHNvCisgICAgICAgICAgICAgICAgIEkgY2FuIGNh
dGNoIHRoaXMgaW4gdGhlIGxheW91dCB0ZXN0cy4KKworMjAwNi0xMi0xOSAgTGFycyBLbm9sbCA8
bGFyc0B0cm9sbHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJvYi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFF0OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6Y2xvc2VXaW5kb3dTb29uKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorICAgICAgICAgICAgICAg
IE1ha2UgaXQgY29tcGlsZS4KKworMjAwNi0xMi0xNiAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9y
Zz4KKworICAgICAgICBBZGp1c3QgdGhlIGNsaWVudCB0byB0aGUgbW9zdCByZWNlbnQgaW50ZXJm
YWNlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFF0Ojpjb250ZXh0TWVudURlc3Ry
b3llZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudFF0OjphZGRDdXN0b21D
b250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6
OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
Q2xpZW50UXQ6OmRvd25sb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50UXQ6OmNvcHlJbWFnZVRvQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51Q2xpZW50UXQ6Omxvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRRdC5oOgorCisyMDA2LTEyLTE0ICBTaW1vbiBIYXVzbWFubiAg
PGhhdXNtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAg
ICAqIFF0TGF1bmNoZXIvUXRMYXVuY2hlci5wcm86IExpbmsgdGhpcyBsaXR0bGUgdGVzdCBwcm9n
cmFtCisgICAgICAgIHdpdGggcnBhdGgsIGZvciBjb252ZW5pZW5jZS4gKFRoaXMgaXMgbmV2ZXIg
Z29pbmcgdG8gZ2V0IGluc3RhbGxlZAorICAgICAgICBhbnl3YXkpCisKKzIwMDYtMTItMTIgIEdl
b3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleS4KKworICAgICAgICBGaXggdGhlIFF0IGJ1aWxkIGFnYWluLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0TWVudUNsaWVudFF0OjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVu
dUNsaWVudFF0OjpzdG9wU3BlYWtpbmcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dG9nZ2xlQ29udGludW91
c1NwZWxsQ2hlY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnRvZ2ds
ZUdyYW1tYXJDaGVja2luZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuaDoKKworMjAwNi0xMi0xMCAgR2VvcmdlIFN0YWlrb3MgIDxzdGFpa29zQGtkZS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWmFjay4KKworICAgICAgICBBZGQgYSBkZWZhdWx0IHVzZXIg
YWdlbnQgZm9yIG5vdy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFn
ZW50KToKKworMjAwNi0xMi0xMCAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFphY2sKKworICAgICAgICBDb21tZW50IG91dCBhIG5vdEltcGxl
bWVudGVkKCkgd2FybmluZworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKworMjAwNi0xMi0xMCAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KKwor
ICAgICAgICBQcmludCBvdXQgdGhlIG1ldGhvZCBuYW1lIGlmIGl0J3MgdW5pbXBsZW1lbnRlZC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorCisy
MDA2LTEyLTEwICBaYWNrIFJ1c2luICA8emFja0BrZGUub3JnPgorCisgICAgICAgIE1vdmluZyB0
aGUgY2xpZW50cyBmcm9tIHBsYXRmb3JtIHRvIHRoZWlyIGZpbmFsIGxvY2F0aW9uLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDogQWRkZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmNwcDogQWRkZWQuCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6IEFkZGVkLgorCisyMDA2LTEyLTEwICBaYWNrIFJ1c2lu
ICA8emFja0BrZGUub3JnPgorCisgICAgICAgIEFkanVzdGluZyB0byB0aGUgY2hhbmdlcyBpbiBw
bGF0Zm9ybS9xdC4KKworICAgICAgICAqIFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgICht
YWluKToKKworMjAwNi0xMi0wOSAgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFphY2sKKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1
aWxkIFdlYktpdCB3aXRoIHFtYWtlLgorCisgICAgICAgICogUXRMYXVuY2hlci9RdExhdW5jaGVy
LnBybzogQWRkZWQuCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKworMjAwNi0xMi0w
OCAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBNYWNp
ZWouCisKKyAgICAgICAgRml4IHRoZSBidWlsZCBhZnRlciB0aGUgcmVjZW50IGNoYW5nZXMuCisK
KyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcDoKKyAgICAgICAgKFdlYktpdFBhcnQ6OmluaXRW
aWV3KToKKworMjAwNi0xMS0xOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFphY2suCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NDkKKyAgICAgICAgRml4IFF0LW9ubHkgYnVpbGQKKwor
ICAgICAgICAqIFF0TGF1bmNoZXIvQ01ha2VMaXN0cy50eHQ6CisKKzIwMDYtMTEtMTcgIFphY2sg
UnVzaW4gIDx6YWNrQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWl0ei4gTGFuZGVk
IGJ5IE5pa28uCisKKyAgICAgICAgQWRqdXN0aW5nIHRvIHRoZSBuZXcgYXBpLgorCisgICAgICAg
ICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFdlYktp
dFBhcnQvV2ViS2l0UGFydC5jcHA6CisgICAgICAgIChXZWJLaXRQYXJ0Ojppbml0Vmlldyk6CisK
KzIwMDYtMTEtMTAgIFphY2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYW5kIGxhbmRlZCBieSBBbmRlcnMuCisKKyAgICAgICAgQWRqdXN0aW5nIHRvIHRoZSByZWNl
bnQgbG9hZGVyIGNoYW5nZXMsIG1ha2luZyBpdCBjb21waWxlCisgICAgICAgIGFuZCB3b3JrLgor
CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5jcHA6CisgICAgICAgIChXZWJLaXRQYXJ0OjpjbG9z
ZVVybCk6CisgICAgICAgIChXZWJLaXRQYXJ0Ojppbml0Vmlldyk6CisKKzIwMDYtMTEtMDMgIFph
Y2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgor
CisgICAgICAgIEZpeGluZyBjb21waWxlIG9uIGJvdGggUXQgYW5kIEtERSBwbGF0Zm9ybXMuCisK
KyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAobWFpbik6IHVybCBoYXMg
YWxyZWFkeSBiZWVuIGRlZmluZWQKKyAgICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRCcm93
c2VyRXh0ZW5zaW9uLmNwcDogcmVtb3ZpbmcKKyAgICAgICAgZHVwbGljYXRlIGltcGxlbWVudGF0
aW9uIG9mIHRoaXMgY2xhc3MKKworMjAwNi0xMC0zMSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFu
bkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiwgbGFuZGVkIGJ5IEFuZGVy
cy4KKworICAgICAgICAqIFF0TGF1bmNoZXIvQ01ha2VMaXN0cy50eHQ6IE1ha2UgbGlua2FnZSBh
Z2FpbnN0IGtkZSBsaWJyYXJpZXMKKyAgICAgICAgICBvcHRpb25hbAorICAgICAgICAqIFF0TGF1
bmNoZXIvbWFpbi5jcHA6IE1ha2UgaXQgY29tcGlsZSB3aXRob3V0IEtERS4KKyAgICAgICAgKG1h
aW4pOgorCisyMDA2LTExLTAyICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5uQGtkZS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLCBsYW5kZWQgYnkgQW5kZXJzLgorCisgICAgICAg
ICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOiBEZWNsYXJlIG91ciBmcmFt
ZSBhcyBtYWluIGZyYW1lIHRvIHRoZSBQYWdlIG9iamVjdC4KKyAgICAgICAgRml4ZXMgY3Jhc2hl
cyBvbiB2YXJpb3VzIHdlYiBzaXRlcworCisyMDA2LTEwLTMxICBaYWNrIFJ1c2luICA8emFja0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1pdHouCisKKyAgICAgICAgRml4IHRoZSBR
dCBidWlsZCBhZnRlciBsYXN0IG5pZ2h0cyBjaGFuZ2VzLgorCisgICAgICAgICogUXRMYXVuY2hl
ci9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJLaXRQYXJ0L0NNYWtlTGlzdHMudHh0Ogor
CisyMDA2LTEwLTI2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRml4IFF0L0xpbnV4
IGJ1aWxkLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5jcHA6CisgICAgICAgIChXZWJLaXRQ
YXJ0OjpvcGVuVXJsKToKKworMjAwNi0xMC0yNCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8emltbWVy
bWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KKworICAgICAgICBG
aXggUXQvTGludXggYnVpbGQuCisKKyAgICAgICAgLSBSZW1vdmUgQnJvd3NlckV4dGVuc2lvblF0
LCBtb3ZlIGl0J3MgbWV0aG9kcyB0byBQYWdlL0ZyYW1lUXQuCisgICAgICAgIC0gRml4IENNYWtl
TGlzdHMudHh0IHRvIGluY2x1ZGUgcGxhdGZvcm0vbmV0d29yay4KKworICAgICAgICAqIFF0TGF1
bmNoZXIvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViS2l0UGFydC9DTWFrZUxpc3RzLnR4
dDoKKworMjAwNi0xMC0yNCAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkBrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogUXRMYXVuY2hlci9D
TWFrZUxpc3RzLnR4dCwgV2ViS2l0UGFydC9DTWFrZUxpc3RzLnR4dDogQWRkZWQgcHJvamVjdCBu
YW1lIHRvCisgICAgICAgICAga2RlNF9hdXRvbW9jIG1hY3JvLCBhcyByZXF1aXJlZCBieSB0aGUg
bGF0ZXN0IEtERTQgY21ha2UgbW9kdWxlLgorCisyMDA2LTEwLTIwICBOaWtvbGFzIFppbW1lcm1h
bm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYW5kIGxhbmRlZCBi
eSBBbmRlcnMuCisKKyAgICAgICAgQWRhcHQgdG8gRnJhbWVRdENsaWVudCBjaGFuZ2VzLCBhbmQg
cHJvdmlkZSBzb21lIGtpbmQgb2Ygc3RhdHVzCisgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSBL
UGFydCB3aGV0ZXIgd2UncmUgbG9hZGluZyBvciBub3QgKHN0YXJ0ZWQvY29tcGxldGVkIHNpZ25h
bGluZykuCisKKyAgICAgICAgKiBXZWJLaXRQYXJ0L0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYktpdFBhcnQvV2ViS2l0UGFydC5jcHA6CisgICAgICAgIChXZWJLaXRQYXJ0OjpXZWJLaXRQ
YXJ0KToKKyAgICAgICAgKFdlYktpdFBhcnQ6On5XZWJLaXRQYXJ0KToKKyAgICAgICAgKFdlYktp
dFBhcnQ6Om9wZW5VcmwpOgorICAgICAgICAoV2ViS2l0UGFydDo6aW5pdFZpZXcpOgorICAgICAg
ICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5oOgorICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0
UGFydEJyb3dzZXJFeHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFBhcnRCcm93
c2VyRXh0ZW5zaW9uOjpXZWJLaXRQYXJ0QnJvd3NlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJL
aXRQYXJ0QnJvd3NlckV4dGVuc2lvbjo6fldlYktpdFBhcnRCcm93c2VyRXh0ZW5zaW9uKToKKyAg
ICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRCcm93c2VyRXh0ZW5zaW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydENsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXRQYXJ0Q2xpZW50OjpXZWJLaXRQYXJ0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdFBhcnRDbGll
bnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0Q2xpZW50
Lmg6CisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0SW50ZXJmYWNlLmg6CisKKzIwMDYt
MTAtMDIgIE5pa29sYXMgWmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBlc2VpZGVsLiAgTGFuZGVkIGJ5IGVzZWlkZWwuCisKKyAgICAgICAgRml4
IGxhc3QgcmVtYWluaW5nIGlzc3VlIFF0L0xpbnV4IGJ1aWxkIHdpdGggZ2NjMy4KKworICAgICAg
ICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5oOiBSZW1vdmUgUV9QUk9QRVJUWSB1c2FnZSwgd2hp
Y2ggaXMgbm90IG5lZWRlZCBhbmQgbWFkZSBwcm9ibGVtcy4KKworMjAwNi0wOS0xMCAgTmlrb2xh
cyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGFu
ZCBsYW5kZWQgYnkgYXAuCisKKyAgICAgICAgRml4IFF0TGF1bmNoZXIgLSBpdCBpcyBzdXBwb3Nl
ZCB0byBjcmVhdGUgYSBGcmFtZVZpZXcgb24gaXRzIG93biBub3dhZGF5cy4KKworICAgICAgICAq
IFF0TGF1bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKworMjAwNi0wOS0wNCAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBILgorCisgICAgICAgIEZpeGVzIGxhc3QgcGFydCBvZjogaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDQKKyAgICAgICAgTW92ZSBRdExhdW5jaGVyIGRv
d24gdG8gV2ViS2l0UXQuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL0NNYWtlTGlzdHMudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKG1h
aW4pOgorCisyMDA2LTA5LTA0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuIEZpbmFsIHBvbGlzaCBieSBT
YW0uCisKKyAgICAgICAgRml4ZXMgcGFydHMgb2Y6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNjQ0CisgICAgICAgIEFkZCBXZWJLaXRQYXJ0LCBhbiBlbWJlZGRhYmxl
IEtQYXJ0IGZvciB0aGUgS0RFIHBsYXRmb3JtLgorCisgICAgICAgICogV2ViS2l0UGFydC9DTWFr
ZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRGYWN0b3J5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXRGYWN0b3J5OjpXZWJLaXRGYWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdEZhY3Rvcnk6On5XZWJLaXRGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdEZhY3Rv
cnk6OmNyZWF0ZVBhcnRPYmplY3QpOgorICAgICAgICAoV2ViS2l0RmFjdG9yeTo6aW5zdGFuY2Up
OgorICAgICAgICAoV2ViS2l0RmFjdG9yeTo6cmVmKToKKyAgICAgICAgKFdlYktpdEZhY3Rvcnk6
OmRlcmVmKToKKyAgICAgICAgKGluaXRfbGliV2ViS2l0UGFydCk6CisgICAgICAgICogV2ViS2l0
UGFydC9XZWJLaXRGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0
UGFydC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0UGFydDo6V2ViS2l0UGFydCk6CisgICAg
ICAgIChXZWJLaXRQYXJ0Ojp+V2ViS2l0UGFydCk6CisgICAgICAgIChXZWJLaXRQYXJ0OjpvcGVu
RmlsZSk6CisgICAgICAgIChXZWJLaXRQYXJ0OjpvcGVuVXJsKToKKyAgICAgICAgKFdlYktpdFBh
cnQ6OmNsb3NlVXJsKToKKyAgICAgICAgKFdlYktpdFBhcnQ6OnBhcmVudFBhcnQpOgorICAgICAg
ICAoV2ViS2l0UGFydDo6ZnJhbWUpOgorICAgICAgICAoV2ViS2l0UGFydDo6aW5pdFZpZXcpOgor
ICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5kZXNrdG9wOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJLaXRQYXJ0L1dlYktpdFBhcnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXRQYXJ0Ojop
OgorICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5yYzogQWRkZWQuCisgICAgICAgICog
V2ViS2l0UGFydC9XZWJLaXRQYXJ0QnJvd3Nlci5yYzogQWRkZWQuCisgICAgICAgICogV2ViS2l0
UGFydC9XZWJLaXRQYXJ0Q2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXRQYXJ0Q2xp
ZW50OjpXZWJLaXRQYXJ0Q2xpZW50KToKKyAgICAgICAgKFdlYktpdFBhcnRDbGllbnQ6On5XZWJL
aXRQYXJ0Q2xpZW50KToKKyAgICAgICAgKiBXZWJLaXRQYXJ0L1dlYktpdFBhcnRDbGllbnQuaDog
QWRkZWQuCisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0SW50ZXJmYWNlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXRQYXJ0SW50ZXJmYWNlOjpXZWJLaXRQYXJ0SW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYktpdFBhcnRJbnRlcmZhY2U6On5XZWJLaXRQYXJ0SW50ZXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdFBhcnRJbnRlcmZhY2U6OnVybCk6CisgICAgICAgIChXZWJLaXRQYXJ0SW50
ZXJmYWNlOjpjbG9zZVVSTCk6CisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0SW50ZXJm
YWNlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFBhcnQvb3JnLmtkZS5XZWJLaXRQYXJ0Lnht
bDogQWRkZWQuCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwMDUw
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCkBAIC0wLDAgKzEsNzgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKKworI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCisjaW5jbHVkZSAiQ29sb3JDaG9vc2Vy
Q2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJGaWxlQ2hvb3Nlci5oIgorI2luY2x1ZGUgIkZpbGVJY29uTG9hZGVy
LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRRdC5oIgorI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50
LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkljb24uaCIKKyNpbmNs
dWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCisjaW5jbHVk
ZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVRdC5oIgorI2luY2x1ZGUgIlFXZWJG
cmFtZUFkYXB0ZXIuaCIKKyNpbmNsdWRlICJRV2ViUGFnZUFkYXB0ZXIuaCIKKyNpbmNsdWRlICJR
V2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAi
U2VhcmNoUG9wdXBNZW51UXQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmgiCisjaW5jbHVkZSAiVGlsZWRCYWNraW5n
U3RvcmUuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCisjaW5jbHVk
ZSAicXdlYnNlY3VyaXR5b3JpZ2luLmgiCisjaW5jbHVkZSAicXdlYnNlY3VyaXR5b3JpZ2luX3Au
aCIKKyNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKKyNpbmNsdWRlIDxxYWJzdHJhY3RhbmltYXRp
b24uaD4KKyNpbmNsdWRlIDxxZGVidWcuaD4KKyNpbmNsdWRlIDxxZXZlbnRsb29wLmg+CisjaW5j
bHVkZSA8cXdpbmRvdy5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykgJiYgKChV
U0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pKSB8fCBVU0UoUVRf
TVVMVElNRURJQSkpCisjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVvUXQuaCIKKyNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TFZpZGVvRWxlbWVudC5oIgorI2lmIFVTRShRVF9NVUxUSU1FRElBKQorI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZVF0LmgiCisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmICFVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfVElNRVIpCitjbGFzcyBSZWZyZXNoQW5pbWF0aW9uIDogcHVibGljIFFB
YnN0cmFjdEFuaW1hdGlvbiB7CitwdWJsaWM6CisgICAgUmVmcmVzaEFuaW1hdGlvbihDaHJvbWVD
bGllbnRRdCogY2hyb21lQ2xpZW50KQorICAgICAgICA6IFFBYnN0cmFjdEFuaW1hdGlvbigpCisg
ICAgICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQorICAgICAgICAsIG1fYW5pbWF0
aW9uU2NoZWR1bGVkKGZhbHNlKQorICAgIHsgfQorCisgICAgdmlydHVhbCBpbnQgZHVyYXRpb24o
KSBjb25zdCB7IHJldHVybiAtMTsgfQorCisgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpCisg
ICAgeworICAgICAgICBtX2FuaW1hdGlvblNjaGVkdWxlZCA9IHRydWU7CisgICAgICAgIGlmIChz
dGF0ZSgpICE9IFFBYnN0cmFjdEFuaW1hdGlvbjo6UnVubmluZykKKyAgICAgICAgICAgIFFNZXRh
T2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgInN0YXJ0IiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24p
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXJyZW50VGlt
ZShpbnQgY3VycmVudFRpbWUpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0oY3VycmVudFRp
bWUpOworICAgICAgICBpZiAobV9hbmltYXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgICAgIG1f
YW5pbWF0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisgICAgICAgICAgICBtX2Nocm9tZUNsaWVudC0+
c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucygpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHN0b3AoKTsKKyAgICB9Citwcml2YXRlOgorICAgIENocm9tZUNsaWVudFF0KiBtX2Nocm9tZUNs
aWVudDsKKyAgICBib29sIG1fYW5pbWF0aW9uU2NoZWR1bGVkOworfTsKKyNlbmRpZgorCitib29s
IENocm9tZUNsaWVudFF0OjpkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2tzID0gZmFsc2U7CisKK0No
cm9tZUNsaWVudFF0OjpDaHJvbWVDbGllbnRRdChRV2ViUGFnZUFkYXB0ZXIqIHdlYlBhZ2VBZGFw
dGVyKQorICAgIDogbV93ZWJQYWdlKHdlYlBhZ2VBZGFwdGVyKQorICAgICwgbV9ldmVudExvb3Ao
MCkKKyNpZiBFTkFCTEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKSkgfHwgVVNFKFFUX01VTFRJTUVESUEpKQorICAgICwgbV9mdWxsU2Ny
ZWVuVmlkZW8oMCkKKyNlbmRpZgoreworICAgIHRvb2xCYXJzVmlzaWJsZSA9IHN0YXR1c0JhclZp
c2libGUgPSBtZW51QmFyVmlzaWJsZSA9IHRydWU7Cit9CisKK0Nocm9tZUNsaWVudFF0Ojp+Q2hy
b21lQ2xpZW50UXQoKQoreworICAgIGlmIChtX2V2ZW50TG9vcCkKKyAgICAgICAgbV9ldmVudExv
b3AtPmV4aXQoKTsKKworI2lmIEVOQUJMRShWSURFTykgJiYgKChVU0UoR1NUUkVBTUVSKSAmJiBV
U0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pKSB8fCBVU0UoUVRfTVVMVElNRURJQSkpCisgICAg
ZGVsZXRlIG1fZnVsbFNjcmVlblZpZGVvOworI2VuZGlmCit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50
UXQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgIGlmICghbV93
ZWJQYWdlKQorICAgICAgICByZXR1cm47CisgICAgbV93ZWJQYWdlLT5zZXRXaW5kb3dSZWN0KFFS
ZWN0KHFSb3VuZChyZWN0LngoKSksIHFSb3VuZChyZWN0LnkoKSksIHFSb3VuZChyZWN0LndpZHRo
KCkpLCBxUm91bmQocmVjdC5oZWlnaHQoKSkpKTsKK30KKworLyohCisgICAgd2luZG93UmVjdCBy
ZXByZXNlbnRzIHRoZSByZWN0IG9mIHRoZSBXaW5kb3csIGluY2x1ZGluZyBhbGwgaW50ZXJmYWNl
IGVsZW1lbnRzCisgICAgbGlrZSB0b29sYmFycy9zY3JvbGxiYXJzIGV0Yy4gSXQgaXMgdXNlZCBi
eSB0aGUgdmlld3BvcnQgbWV0YSB0YWcgYXMgd2VsbCBhcworICAgIGJ5IHRoZSBET00gV2luZG93
IG9iamVjdDogb3V0ZXJIZWlnaHQoKSwgb3V0ZXJXaWR0aCgpLCBzY3JlZW5YKCksIHNjcmVlblko
KS4KKyovCitGbG9hdFJlY3QgQ2hyb21lQ2xpZW50UXQ6OndpbmRvd1JlY3QoKQoreworICAgIGlm
ICghcGxhdGZvcm1QYWdlQ2xpZW50KCkpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKyAg
ICByZXR1cm4gcGxhdGZvcm1QYWdlQ2xpZW50KCktPndpbmRvd1JlY3QoKTsKK30KKworYm9vbCBD
aHJvbWVDbGllbnRRdDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFwbGF0Zm9ybVBhZ2VDbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK0Zsb2F0UmVjdCBDaHJvbWVDbGllbnRRdDo6
cGFnZVJlY3QoKQoreworICAgIGlmICghbV93ZWJQYWdlKQorICAgICAgICByZXR1cm4gRmxvYXRS
ZWN0KCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdChRUmVjdEYoUVBvaW50RigwLCAwKSwgbV93ZWJQ
YWdlLT52aWV3cG9ydFNpemUoKSkpOworfQorCit2b2lkIENocm9tZUNsaWVudFF0Ojpmb2N1cygp
Cit7CisgICAgaWYgKCFtX3dlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYlBhZ2Ut
PnNldEZvY3VzKCk7Cit9CisKKwordm9pZCBDaHJvbWVDbGllbnRRdDo6dW5mb2N1cygpCit7Cisg
ICAgaWYgKCFtX3dlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dlYlBhZ2UtPnVuZm9j
dXMoKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRRdDo6Y2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0
aW9uKQoreworICAgIC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gY3ljbGluZyB0aHJvdWdoIGxpbmtz
L2ZvY3VzYWJsZSBvYmplY3RzIGFuZCB3ZQorICAgIC8vIHJlYWNoIHRoZSBsYXN0IGZvY3VzYWJs
ZSBvYmplY3QuIFRoZW4gd2Ugd2FudCB0byBjbGFpbSB0aGF0IHdlIGNhbgorICAgIC8vIHRha2Ug
dGhlIGZvY3VzIHRvIGF2b2lkIHdyYXBwaW5nLgorICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IENocm9tZUNsaWVudFF0Ojp0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pCit7CisgICAgLy8gZG9u
J3QgZG8gYW55dGhpbmcuIFRoaXMgaXMgb25seSBjYWxsZWQgd2hlbiBjeWNsaW5nIHRvIGxpbmtz
L2ZvY3VzYWJsZSBvYmplY3RzLAorICAgIC8vIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20g
Zm9jdXNOZXh0UHJldkNoaWxkLiBXZSBsZXQgZm9jdXNOZXh0UHJldkNoaWxkCisgICAgLy8gY2Fs
bCBRV2lkZ2V0Ojpmb2N1c05leHRQcmV2Q2hpbGQgYWNjb3JkaW5nbHksIHNvIHRoZXJlIGlzIG5v
IG5lZWQgdG8gZG8gYW55dGhpbmcKKyAgICAvLyBoZXJlLgorfQorCisKK3ZvaWQgQ2hyb21lQ2xp
ZW50UXQ6OmZvY3VzZWRFbGVtZW50Q2hhbmdlZChFbGVtZW50KikKK3sKK30KKwordm9pZCBDaHJv
bWVDbGllbnRRdDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopCit7Cit9CisKK1BhZ2UqIENo
cm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mKQoreworICAgIFFXZWJQYWdlQWRhcHRlciogbmV3UGFnZSA9IG1fd2ViUGFnZS0+
Y3JlYXRlV2luZG93KGZlYXR1cmVzLmRpYWxvZyk7CisgICAgaWYgKCFuZXdQYWdlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBuZXdQYWdlLT5wYWdlOworfQorCit2b2lkIENocm9t
ZUNsaWVudFF0OjpzaG93KCkKK3sKKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fd2ViUGFnZS0+c2hvdygpOworfQorCisKK2Jvb2wgQ2hyb21lQ2xpZW50UXQ6OmNh
blJ1bk1vZGFsKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCit2b2lkIENocm9tZUNsaWVu
dFF0OjpydW5Nb2RhbCgpCit7CisgICAgbV9ldmVudExvb3AgPSBuZXcgUUV2ZW50TG9vcCgpOwor
ICAgIFFFdmVudExvb3AqIGV2ZW50TG9vcCA9IG1fZXZlbnRMb29wOworICAgIG1fZXZlbnRMb29w
LT5leGVjKCk7CisgICAgZGVsZXRlIGV2ZW50TG9vcDsKK30KKworCit2b2lkIENocm9tZUNsaWVu
dFF0OjpzZXRUb29sYmFyc1Zpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIHRvb2xCYXJzVmlz
aWJsZSA9IHZpc2libGU7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChtX3dlYlBhZ2Ut
PmhhbmRsZSgpLCAidG9vbEJhclZpc2liaWxpdHlDaGFuZ2VSZXF1ZXN0ZWQiLCBRX0FSRyhib29s
LCB2aXNpYmxlKSk7Cit9CisKKworYm9vbCBDaHJvbWVDbGllbnRRdDo6dG9vbGJhcnNWaXNpYmxl
KCkKK3sKKyAgICByZXR1cm4gdG9vbEJhcnNWaXNpYmxlOworfQorCisKK3ZvaWQgQ2hyb21lQ2xp
ZW50UXQ6OnNldFN0YXR1c2JhclZpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIFFNZXRhT2Jq
ZWN0OjppbnZva2VNZXRob2QobV93ZWJQYWdlLT5oYW5kbGUoKSwgInN0YXR1c0JhclZpc2liaWxp
dHlDaGFuZ2VSZXF1ZXN0ZWQiLCBRX0FSRyhib29sLCB2aXNpYmxlKSk7CisgICAgc3RhdHVzQmFy
VmlzaWJsZSA9IHZpc2libGU7Cit9CisKKworYm9vbCBDaHJvbWVDbGllbnRRdDo6c3RhdHVzYmFy
VmlzaWJsZSgpCit7CisgICAgcmV0dXJuIHN0YXR1c0JhclZpc2libGU7Cit9CisKKwordm9pZCBD
aHJvbWVDbGllbnRRdDo6c2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9vbCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCisKK2Jvb2wgQ2hyb21lQ2xpZW50UXQ6OnNjcm9sbGJhcnNWaXNpYmxl
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCisKK3Zv
aWQgQ2hyb21lQ2xpZW50UXQ6OnNldE1lbnViYXJWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAg
ICBtZW51QmFyVmlzaWJsZSA9IHZpc2libGU7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhv
ZChtX3dlYlBhZ2UtPmhhbmRsZSgpLCAibWVudUJhclZpc2liaWxpdHlDaGFuZ2VSZXF1ZXN0ZWQi
LCBRX0FSRyhib29sLCB2aXNpYmxlKSk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50UXQ6Om1lbnVi
YXJWaXNpYmxlKCkKK3sKKyAgICByZXR1cm4gbWVudUJhclZpc2libGU7Cit9CisKK3ZvaWQgQ2hy
b21lQ2xpZW50UXQ6OnNldFJlc2l6YWJsZShib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKK3sK
KyAgICBRU3RyaW5nIHggPSBtZXNzYWdlOworICAgIFFTdHJpbmcgeSA9IHNvdXJjZUlEOworICAg
IFVOVVNFRF9QQVJBTShjb2x1bW5OdW1iZXIpOworICAgIG1fd2ViUGFnZS0+amF2YVNjcmlwdENv
bnNvbGVNZXNzYWdlKHgsIGxpbmVOdW1iZXIsIHkpOworfQorCit2b2lkIENocm9tZUNsaWVudFF0
OjpjaHJvbWVEZXN0cm95ZWQoKQoreworICAgIGRlbGV0ZSB0aGlzOworfQorCitib29sIENocm9t
ZUNsaWVudFF0OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIENocm9tZUNsaWVudFF0OjpydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBGcmFtZSogZnJhbWUpCit7CisgICAgcmV0dXJu
IHJ1bkphdmFTY3JpcHRDb25maXJtKGZyYW1lLCBtZXNzYWdlKTsKK30KKwordm9pZCBDaHJvbWVD
bGllbnRRdDo6Y2xvc2VXaW5kb3dTb29uKCkKK3sKKyAgICBtX3dlYlBhZ2UtPnBhZ2UtPnNldEdy
b3VwTmFtZShTdHJpbmcoKSk7CisgICAgbV93ZWJQYWdlLT5wYWdlLT5tYWluRnJhbWUoKS5sb2Fk
ZXIoKS5zdG9wQWxsTG9hZGVycygpOworICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QobV93
ZWJQYWdlLT5oYW5kbGUoKSwgIndpbmRvd0Nsb3NlUmVxdWVzdGVkIik7Cit9CisKK3ZvaWQgQ2hy
b21lQ2xpZW50UXQ6OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZiwgY29uc3QgU3RyaW5nJiBt
c2cpCit7CisgICAgbV93ZWJQYWdlLT5qYXZhU2NyaXB0QWxlcnQoUVdlYkZyYW1lQWRhcHRlcjo6
a2l0KGYpLCBtc2cpOworfQorCitib29sIENocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0Q29u
ZmlybShGcmFtZSogZiwgY29uc3QgU3RyaW5nJiBtc2cpCit7CisgICAgcmV0dXJuIG1fd2ViUGFn
ZS0+amF2YVNjcmlwdENvbmZpcm0oUVdlYkZyYW1lQWRhcHRlcjo6a2l0KGYpLCBtc2cpOworfQor
Citib29sIENocm9tZUNsaWVudFF0OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lKiBmLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBTdHJpbmcmIHJl
c3VsdCkKK3sKKyAgICBRU3RyaW5nIHggPSByZXN1bHQ7CisgICAgUVdlYkZyYW1lQWRhcHRlciog
d2ViRnJhbWUgPSBRV2ViRnJhbWVBZGFwdGVyOjpraXQoZik7CisgICAgYm9vbCByYyA9IG1fd2Vi
UGFnZS0+amF2YVNjcmlwdFByb21wdCh3ZWJGcmFtZSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCAm
eCk7CisKKyAgICAvLyBGaXggdXAgYSBxdWlyayBpbiB0aGUgUUlucHV0RGlhbG9nIGNsYXNzLiBJ
ZiBubyBpbnB1dCBoYXBwZW5lZCB0aGUgc3RyaW5nIHNob3VsZCBiZSBlbXB0eQorICAgIC8vIGJ1
dCBpdCBpcyBudWxsLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwOTE0LgorICAgIGlmIChyYyAmJiB4LmlzTnVsbCgpKQorICAgICAgICByZXN1bHQgPSBlbXB0
eVN0cmluZygpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0geDsKKworICAgIHJldHVybiBy
YzsKK30KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJp
bmcmIG1zZykKK3sKKyAgICBRU3RyaW5nIHggPSBtc2c7CisgICAgUU1ldGFPYmplY3Q6Omludm9r
ZU1ldGhvZChtX3dlYlBhZ2UtPmhhbmRsZSgpLCAic3RhdHVzQmFyTWVzc2FnZSIsIFFfQVJHKFFT
dHJpbmcsIHgpKTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRRdDo6c2hvdWxkSW50ZXJydXB0SmF2
YVNjcmlwdCgpCit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+c2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdCgpOworfQorCitLZXlib2FyZFVJTW9kZSBDaHJvbWVDbGllbnRRdDo6a2V5Ym9hcmRVSU1v
ZGUoKQoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPnNldHRpbmdzLT50ZXN0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6TGlua3NJbmNsdWRlZEluRm9jdXNDaGFpbikKKyAgICAgICAgPyBLZXlib2Fy
ZEFjY2Vzc1RhYnNUb0xpbmtzIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0OworfQorCitJbnRSZWN0
IENocm9tZUNsaWVudFF0Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0Cit7CisjaWYgZGVmaW5l
ZChRX1dTX01BQykKKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuIEludFJlY3Qo
KTsKKworICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gcGxhdGZvcm1QYWdlQ2xpZW50
KCk7CisgICAgaWYgKCFwYWdlQ2xpZW50KQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisg
ICAgUVdpbmRvdyogdG9wTGV2ZWxXaWRnZXQgPSBwYWdlQ2xpZW50LT5vd25lcldpbmRvdygpOwor
ICAgIGlmICghdG9wTGV2ZWxXaWRnZXQpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAg
ICBRUmVjdCB0b3BMZXZlbEdlb21ldHJ5KHRvcExldmVsV2lkZ2V0LT5nZW9tZXRyeSgpKTsKKwor
ICAgIC8vIFRoZXJlJ3Mgbm8gQVBJIGluIFF0IHRvIHF1ZXJ5IGZvciB0aGUgc2l6ZSBvZiB0aGUg
cmVzaXplciwgc28gd2UgYXNzdW1lCisgICAgLy8gaXQgaGFzIHRoZSBzYW1lIHdpZHRoIGFuZCBo
ZWlnaHQgYXMgdGhlIHNjcm9sbGJhciB0aGlja25lc3MuCisgICAgaW50IHNjb2xsYmFyVGhpY2tu
ZXNzID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOworCisg
ICAgLy8gVGhlcmUncyBubyBBUEkgaW4gUXQgdG8gcXVlcnkgZm9yIHRoZSBwb3NpdGlvbiBvZiB0
aGUgcmVzaXplci4gU29tZXRpbWVzCisgICAgLy8gaXQncyBkcmF3biBieSB0aGUgc3lzdGVtLCBh
bmQgc29tZXRpbWVzIGl0J3MgYSBRU2l6ZUdyaXAuIEZvciBSVEwgbG9jYWxlcworICAgIC8vIGl0
IG1pZ2h0IGV2ZW4gYmUgb24gdGhlIGxvd2VyIGxlZnQgc2lkZSBvZiB0aGUgd2luZG93LCBidXQg
aW4gV2ViS2l0IHdlCisgICAgLy8gYWx3YXlzIGRyYXcgc2Nyb2xsYmFycyBvbiB0aGUgcmlnaHQg
aGFuZCBzaWRlLCBzbyB3ZSBhc3N1bWUgdGhpcyB0byBiZSB0aGUKKyAgICAvLyBsb2NhdGlvbiB3
aGVuIGNvbXB1dGluZyB0aGUgcmVzaXplIHJlY3QgdG8gcmVzZXJ2ZSBmb3IgV2ViS2l0LgorICAg
IFFQb2ludCByZXNpemVDb3JuZXJUb3BMZWZ0ID0gUVBvaW50KHRvcExldmVsR2VvbWV0cnkud2lk
dGgoKSwgdG9wTGV2ZWxHZW9tZXRyeS5oZWlnaHQoKSkKKyAgICAgICAgLSBRUG9pbnQoc2NvbGxi
YXJUaGlja25lc3MsIHNjb2xsYmFyVGhpY2tuZXNzKSkKKyAgICAgICAgLSBtX3dlYlBhZ2UtPnZp
ZXdSZWN0UmVsYXRpdmVUb1dpbmRvdygpLnRvcExlZnQoKTsKKworICAgIFFSZWN0IHJlc2l6ZUNv
cm5lclJlY3QgPSBRUmVjdChyZXNpemVDb3JuZXJUb3BMZWZ0LCBRU2l6ZShzY29sbGJhclRoaWNr
bmVzcywgc2NvbGxiYXJUaGlja25lc3MpKTsKKyAgICByZXR1cm4gcmVzaXplQ29ybmVyUmVjdC5p
bnRlcnNlY3RlZChwYWdlQ2xpZW50LT5nZW9tZXRyeVJlbGF0aXZlVG9Pd25lcldpZGdldCgpKTsK
KworI2Vsc2UKKyAgICByZXR1cm4gSW50UmVjdCgpOworI2VuZGlmCit9CisKK3ZvaWQgQ2hyb21l
Q2xpZW50UXQ6OmludmFsaWRhdGVSb290Vmlldyhjb25zdCBJbnRSZWN0JiB3aW5kb3dSZWN0LCBi
b29sKQoreworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIGlmIChwbGF0Zm9ybVBh
Z2VDbGllbnQoKSkgeworICAgICAgICBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlID0gbV93ZWJQYWdlLT5tYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lLT50aWxlZEJhY2tp
bmdTdG9yZSgpOworICAgICAgICBpZiAoIWJhY2tpbmdTdG9yZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgYmFja2luZ1N0b3JlLT5pbnZhbGlkYXRlKHdpbmRvd1JlY3QpOworICAgIH0K
KyNlbHNlCisgICAgUV9VTlVTRUQod2luZG93UmVjdCk7CisjZW5kaWYKK30KKwordm9pZCBDaHJv
bWVDbGllbnRRdDo6aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYg
d2luZG93UmVjdCwgYm9vbCkKK3sKKyAgICAvLyBObyBkb3VibGUgYnVmZmVyLCBzbyBvbmx5IHVw
ZGF0ZSB0aGUgUVdpZGdldCBpZiBjb250ZW50IGNoYW5nZWQuCisgICAgaWYgKHBsYXRmb3JtUGFn
ZUNsaWVudCgpKSB7CisgICAgICAgIFFSZWN0IHJlY3Qod2luZG93UmVjdCk7CisgICAgICAgIHJl
Y3QgPSByZWN0LmludGVyc2VjdGVkKFFSZWN0KFFQb2ludCgwLCAwKSwgbV93ZWJQYWdlLT52aWV3
cG9ydFNpemUoKSkpOworICAgICAgICBpZiAoIXJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cGxhdGZvcm1QYWdlQ2xpZW50KCktPnVwZGF0ZShyZWN0KTsKKyAgICB9CisgICAgUU1ldGFPYmpl
Y3Q6Omludm9rZU1ldGhvZChtX3dlYlBhZ2UtPmhhbmRsZSgpLCAicmVwYWludFJlcXVlc3RlZCIs
IFF0OjpRdWV1ZWRDb25uZWN0aW9uLCBRX0FSRyhRUmVjdCwgd2luZG93UmVjdCkpOworCisgICAg
Ly8gRklYTUU6IFRoZXJlIGlzIG5vICJpbW1lZGlhdGUiIHN1cHBvcnQgZm9yIHdpbmRvdyBwYWlu
dGluZy4gVGhpcyBzaG91bGQgYmUgZG9uZSBhbHdheXMgd2hlbmV2ZXIgdGhlIGZsYWcKKyAgICAv
LyBpcyBzZXQuCit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OmludmFsaWRhdGVDb250ZW50c0Zv
clNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYgd2luZG93UmVjdCwgYm9vbCBpbW1lZGlhdGUpCit7
CisgICAgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcod2luZG93UmVjdCwgaW1tZWRpYXRl
KTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6c2Nyb2xsKGNvbnN0IEludFNpemUmIGRlbHRh
LCBjb25zdCBJbnRSZWN0JiBzY3JvbGxWaWV3UmVjdCwgY29uc3QgSW50UmVjdCYpCit7CisgICAg
aWYgKHBsYXRmb3JtUGFnZUNsaWVudCgpKQorICAgICAgICBwbGF0Zm9ybVBhZ2VDbGllbnQoKS0+
c2Nyb2xsKGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdodCgpLCBzY3JvbGxWaWV3UmVjdCk7Cisg
ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChtX3dlYlBhZ2UtPmhhbmRsZSgpLCAic2Nyb2xs
UmVxdWVzdGVkIiwgUV9BUkcoaW50LCBkZWx0YS53aWR0aCgpKSwgUV9BUkcoaW50LCBkZWx0YS5o
ZWlnaHQoKSksIFFfQVJHKFFSZWN0LCBzY3JvbGxWaWV3UmVjdCkpOworfQorCisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCit2b2lkIENocm9tZUNsaWVudFF0OjpkZWxlZ2F0ZWRTY3JvbGxS
ZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmIHBvaW50KQoreworCisgICAgY29uc3QgUVBvaW50IG9m
cyA9IG1fd2ViUGFnZS0+bWFpbkZyYW1lQWRhcHRlcigpLT5zY3JvbGxQb3NpdGlvbigpOworICAg
IEludFNpemUgY3VycmVudFBvc2l0aW9uKG9mcy54KCksIG9mcy55KCkpOworICAgIGludCB4ID0g
cG9pbnQueCgpIC0gY3VycmVudFBvc2l0aW9uLndpZHRoKCk7CisgICAgaW50IHkgPSBwb2ludC55
KCkgLSBjdXJyZW50UG9zaXRpb24uaGVpZ2h0KCk7CisgICAgY29uc3QgUVJlY3QgcmVjdChRUG9p
bnQoMCwgMCksIG1fd2ViUGFnZS0+dmlld3BvcnRTaXplKCkpOworICAgIFFNZXRhT2JqZWN0Ojpp
bnZva2VNZXRob2QobV93ZWJQYWdlLT5oYW5kbGUoKSwgInNjcm9sbFJlcXVlc3RlZCIsIFFfQVJH
KGludCwgeCksIFFfQVJHKGludCwgeSksIFFfQVJHKFFSZWN0LCByZWN0KSk7Cit9CisjZW5kaWYK
KworSW50UmVjdCBDaHJvbWVDbGllbnRRdDo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAoreworICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gcGxhdGZv
cm1QYWdlQ2xpZW50KCk7CisgICAgaWYgKCFwYWdlQ2xpZW50KQorICAgICAgICByZXR1cm4gcmVj
dDsKKworICAgIFFXaW5kb3cqIG93bmVyV2luZG93ID0gcGFnZUNsaWVudC0+b3duZXJXaW5kb3co
KTsKKyAgICBpZiAoIW93bmVyV2luZG93KQorICAgICAgICByZXR1cm4gcmVjdDsKKworICAgIFFS
ZWN0IHNjcmVlblJlY3QocmVjdCk7CisgICAgc2NyZWVuUmVjdC50cmFuc2xhdGUob3duZXJXaW5k
b3ctPm1hcFRvR2xvYmFsKG1fd2ViUGFnZS0+dmlld1JlY3RSZWxhdGl2ZVRvV2luZG93KCkudG9w
TGVmdCgpKSk7CisKKyAgICByZXR1cm4gc2NyZWVuUmVjdDsKK30KKworSW50UG9pbnQgQ2hyb21l
Q2xpZW50UXQ6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAor
eworICAgIFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gcGxhdGZvcm1QYWdlQ2xpZW50KCk7
CisgICAgaWYgKCFwYWdlQ2xpZW50KQorICAgICAgICByZXR1cm4gcG9pbnQ7CisKKyAgICBRV2lu
ZG93KiBvd25lcldpbmRvdyA9IHBhZ2VDbGllbnQtPm93bmVyV2luZG93KCk7CisgICAgaWYgKCFv
d25lcldpbmRvdykKKyAgICAgICAgcmV0dXJuIHBvaW50OworCisgICAgcmV0dXJuIG93bmVyV2lu
ZG93LT5tYXBGcm9tR2xvYmFsKHBvaW50KSAtIG1fd2ViUGFnZS0+dmlld1JlY3RSZWxhdGl2ZVRv
V2luZG93KCkudG9wTGVmdCgpOworfQorCitQbGF0Zm9ybVBhZ2VDbGllbnQgQ2hyb21lQ2xpZW50
UXQ6OnBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+
Y2xpZW50LmRhdGEoKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6Y29udGVudHNTaXplQ2hh
bmdlZChGcmFtZSogZnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgaWYg
KGZyYW1lLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29udGV4dCgpKQorICAgICAgICBRV2ViRnJhbWVB
ZGFwdGVyOjpraXQoZnJhbWUpLT5jb250ZW50c1NpemVEaWRDaGFuZ2Uoc2l6ZSk7Cit9CisKK3Zv
aWQgQ2hyb21lQ2xpZW50UXQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQpCit7CisgICAgVGV4dERpcmVjdGlvbiBkaXI7CisgICAg
aWYgKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSAhPSBsYXN0SG92ZXJVUkwKKyAgICAgICAgfHwg
cmVzdWx0LnRpdGxlKGRpcikgIT0gbGFzdEhvdmVyVGl0bGUKKyAgICAgICAgfHwgcmVzdWx0LnRl
eHRDb250ZW50KCkgIT0gbGFzdEhvdmVyQ29udGVudCkgeworICAgICAgICBsYXN0SG92ZXJVUkwg
PSByZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgICAgIGxhc3RIb3ZlclRpdGxlID0gcmVz
dWx0LnRpdGxlKGRpcik7CisgICAgICAgIGxhc3RIb3ZlckNvbnRlbnQgPSByZXN1bHQudGV4dENv
bnRlbnQoKTsKKyAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChtX3dlYlBhZ2UtPmhh
bmRsZSgpLCAibGlua0hvdmVyZWQiLCBRX0FSRyhRU3RyaW5nLCBsYXN0SG92ZXJVUkwuc3RyaW5n
KCkpLAorICAgICAgICAgICAgUV9BUkcoUVN0cmluZywgbGFzdEhvdmVyVGl0bGUpLCBRX0FSRyhR
U3RyaW5nLCBsYXN0SG92ZXJDb250ZW50KSk7CisgICAgfQorfQorCit2b2lkIENocm9tZUNsaWVu
dFF0OjpzZXRUb29sVGlwKGNvbnN0IFN0cmluZyAmdGlwLCBUZXh0RGlyZWN0aW9uKQoreworICAg
IG1fd2ViUGFnZS0+c2V0VG9vbFRpcCh0aXApOworfQorCit2b2lkIENocm9tZUNsaWVudFF0Ojpw
cmludChGcmFtZSogZnJhbWUpCit7CisgICAgZW1pdCBtX3dlYlBhZ2UtPnByaW50UmVxdWVzdGVk
KFFXZWJGcmFtZUFkYXB0ZXI6OmtpdChmcmFtZSkpOworfQorCisjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBEYXRhYmFzZURldGFpbHMpCit7Cisg
ICAgcXVpbnQ2NCBxdW90YSA9IFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVv
dGEoKTsKKworICAgIGlmICghRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFzRW50cnlGb3JP
cmlnaW4oZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICBEYXRh
YmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5zZXRRdW90YShmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgcXVvdGEpOworCisgICAgbV93ZWJQYWdlLT5kYXRhYmFzZVF1b3RhRXhjZWVk
ZWQoUVdlYkZyYW1lQWRhcHRlcjo6a2l0KGZyYW1lKSwgZGF0YWJhc2VOYW1lKTsKK30KKyNlbmRp
ZgorCit2b2lkIENocm9tZUNsaWVudFF0OjpyZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qp
Cit7CisgICAgLy8gRklYTUU6IEZyZWUgc29tZSBzcGFjZS4KKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIENocm9tZUNsaWVudFF0OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCkK
K3sKKyAgICBpbnQ2NF90IHF1b3RhOworICAgIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1b3RhID0g
V2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuZGVmYXVsdE9yaWdpblF1b3RhKCk7CisKKyAgICBRV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlKiBwcml2ID0gbmV3IFFXZWJTZWN1cml0eU9yaWdpblByaXZh
dGUob3JpZ2luKTsKKyAgICBRV2ViU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luID0gbmV3
IFFXZWJTZWN1cml0eU9yaWdpbihwcml2KTsKKworICAgIGlmICghV2ViQ29yZTo6Y2FjaGVTdG9y
YWdlKCkuY2FsY3VsYXRlUXVvdGFGb3JPcmlnaW4ob3JpZ2luLCBxdW90YSkpCisgICAgICAgIFdl
YkNvcmU6OmNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKG9yaWdpbiwg
ZGVmYXVsdE9yaWdpblF1b3RhKTsKKworICAgIG1fd2ViUGFnZS0+YXBwbGljYXRpb25DYWNoZVF1
b3RhRXhjZWVkZWQoc2VjdXJpdHlPcmlnaW4sIGRlZmF1bHRPcmlnaW5RdW90YSwgc3RhdGljX2Nh
c3Q8cXVpbnQ2ND4odG90YWxTcGFjZU5lZWRlZCkpOworfQorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCitQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50UXQ6OmNyZWF0
ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIGNvbnN0IFFDb2xvciBzZWxlY3RlZENvbG9yID0gbV93ZWJQYWdlLT5jb2xv
clNlbGVjdGlvblJlcXVlc3RlZChRQ29sb3IoY29sb3IpKTsKKyAgICBjbGllbnQtPmRpZENob29z
ZUNvbG9yKHNlbGVjdGVkQ29sb3IpOworICAgIGNsaWVudC0+ZGlkRW5kQ2hvb3NlcigpOworICAg
IHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJ1bk9w
ZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9v
c2VyKQoreworICAgIFJlZlB0cjxGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIgPSBwcnBGaWxlQ2hv
b3NlcjsKKworICAgIFFTdHJpbmdMaXN0IHN1Z2dlc3RlZEZpbGVOYW1lczsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZmlsZUNob29zZXItPnNldHRpbmdzKCkuc2VsZWN0ZWRGaWxlcy5z
aXplKCk7ICsraSkKKyAgICAgICAgc3VnZ2VzdGVkRmlsZU5hbWVzICs9IGZpbGVDaG9vc2VyLT5z
ZXR0aW5ncygpLnNlbGVjdGVkRmlsZXNbaV07CisKKyAgICBjb25zdCBib29sIGFsbG93TXVsdGlw
bGUgPSBmaWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hbGxvd3NNdWx0aXBsZUZpbGVzOworCisgICAg
UVN0cmluZ0xpc3QgcmVzdWx0ID0gbV93ZWJQYWdlLT5jaG9vc2VGaWxlcyhRV2ViRnJhbWVBZGFw
dGVyOjpraXQoZnJhbWUpLCBhbGxvd011bHRpcGxlLCBzdWdnZXN0ZWRGaWxlTmFtZXMpOworICAg
IGlmICghcmVzdWx0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYWxsb3dNdWx0aXBsZSkgewor
ICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CisgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IHJlc3VsdC5jb3VudCgpOyArK2kpCisgICAgICAgICAgICAgICAgbmFtZXMuYXBw
ZW5kKHJlc3VsdC5hdChpKSk7CisgICAgICAgICAgICBmaWxlQ2hvb3Nlci0+Y2hvb3NlRmlsZXMo
bmFtZXMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGZpbGVDaG9vc2VyLT5jaG9vc2VG
aWxlKHJlc3VsdC5maXJzdCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6Omxv
YWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRmlsZUljb25M
b2FkZXIqIGxvYWRlcikKK3sKKyAgICBsb2FkZXItPm5vdGlmeUZpbmlzaGVkKEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0
Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQoreworI2lmbmRlZiBRVF9OT19DVVJTT1IKKyAg
ICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCA9IHBsYXRmb3JtUGFnZUNsaWVudCgpOworICAg
IGlmICghcGFnZUNsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHBhZ2VDbGllbnQtPnNldEN1
cnNvcigqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
Y3Vyc29yKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQordm9pZCBDaHJvbWVDbGll
bnRRdDo6c2NoZWR1bGVBbmltYXRpb24oKQoreworICAgIGlmICghbV9yZWZyZXNoQW5pbWF0aW9u
KQorICAgICAgICBtX3JlZnJlc2hBbmltYXRpb24gPSBhZG9wdFB0cihuZXcgUmVmcmVzaEFuaW1h
dGlvbih0aGlzKSk7CisgICAgbV9yZWZyZXNoQW5pbWF0aW9uLT5zY2hlZHVsZUFuaW1hdGlvbigp
OworfQorCit2b2lkIENocm9tZUNsaWVudFF0OjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKCkK
K3sKKyAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZUFkYXB0ZXIoKS0+ZnJhbWUtPnZpZXcoKS0+c2Vy
dmljZVNjcmlwdGVkQW5pbWF0aW9ucyhjdXJyZW50VGltZSgpKTsKK30KKyNlbmRpZgorCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBDaHJvbWVDbGllbnRRdDo6YXR0YWNo
Um9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyKQoreworICAgIGlmICghbV90ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnQpCisgICAgICAgIG1f
dGV4dHVyZU1hcHBlckxheWVyQ2xpZW50ID0gYWRvcHRQdHIobmV3IFRleHR1cmVNYXBwZXJMYXll
ckNsaWVudFF0KG1fd2ViUGFnZS0+bWFpbkZyYW1lQWRhcHRlcigpKSk7CisgICAgbV90ZXh0dXJl
TWFwcGVyTGF5ZXJDbGllbnQtPnNldFJvb3RHcmFwaGljc0xheWVyKGdyYXBoaWNzTGF5ZXIpOwor
fQorCit2b2lkIENocm9tZUNsaWVudFF0OjpzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCkKK3sKKyAgICAvLyB3ZSB3YW50IHRoZSBsYXllcnMgdG8gc3luY2hyb25pemUgbmV4
dCB0aW1lIHdlIHVwZGF0ZSB0aGUgc2NyZWVuIGFueXdheQorICAgIGlmIChtX3RleHR1cmVNYXBw
ZXJMYXllckNsaWVudCkKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnQtPm1hcmtG
b3JTeW5jKGZhbHNlKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6c2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKQoreworICAgIC8vIHdlIHdhbnQgdGhlIGxheWVycyB0byBzeW5jaHJv
bml6ZSBBU0FQCisgICAgaWYgKG1fdGV4dHVyZU1hcHBlckxheWVyQ2xpZW50KQorICAgICAgICBt
X3RleHR1cmVNYXBwZXJMYXllckNsaWVudC0+bWFya0ZvclN5bmModHJ1ZSk7Cit9CisKK0Nocm9t
ZUNsaWVudDo6Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgQ2hyb21lQ2xpZW50UXQ6OmFsbG93ZWRD
b21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3QKK3sKKyAgICBpZiAoYWxsb3dzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZygpKQorICAgICAgICByZXR1cm4gVGhyZWVEVHJhbnNmb3JtVHJpZ2dlciB8IENh
bnZhc1RyaWdnZXIgfCBBbmltYXRpb25UcmlnZ2VyIHwgQW5pbWF0ZWRPcGFjaXR5VHJpZ2dlcjsK
KworICAgIHJldHVybiAwOworfQorCisjZW5kaWYKKworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQorSW50UmVjdCBDaHJvbWVDbGllbnRRdDo6dmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdT
dG9yZSgpIGNvbnN0Cit7CisgICAgaWYgKCFwbGF0Zm9ybVBhZ2VDbGllbnQoKSB8fCAhbV93ZWJQ
YWdlKQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgaWYgKCFwbGF0Zm9ybVBhZ2VD
bGllbnQoKS0+dmlld1Jlc2l6ZXNUb0NvbnRlbnRzRW5hYmxlZCgpKSB7CisgICAgICAgIGNvbnN0
IFFQb2ludCBvZnMgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZUFkYXB0ZXIoKS0+c2Nyb2xsUG9zaXRp
b24oKTsKKyAgICAgICAgSW50U2l6ZSBvZmZzZXQob2ZzLngoKSwgb2ZzLnkoKSk7CisgICAgICAg
IHJldHVybiBRUmVjdChRUG9pbnQob2Zmc2V0LndpZHRoKCksIG9mZnNldC5oZWlnaHQoKSksIG1f
d2ViUGFnZS0+bWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZVJlY3QoKS5zaXplKCkpOworICAgIH0K
KworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChwbGF0Zm9ybVBhZ2VDbGll
bnQoKS0+Z3JhcGhpY3NJdGVtVmlzaWJsZVJlY3QoKSkpOworfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoVklERU8pICYmICgoVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKSkgfHwgVVNFKFFUX01VTFRJTUVESUEpKQorRnVsbFNjcmVlblZpZGVvUXQqIENocm9tZUNs
aWVudFF0OjpmdWxsU2NyZWVuVmlkZW8oKQoreworICAgIGlmICghbV9mdWxsU2NyZWVuVmlkZW8p
CisgICAgICAgIG1fZnVsbFNjcmVlblZpZGVvID0gbmV3IEZ1bGxTY3JlZW5WaWRlb1F0KHRoaXMp
OworICAgIHJldHVybiBtX2Z1bGxTY3JlZW5WaWRlbzsKK30KKworYm9vbCBDaHJvbWVDbGllbnRR
dDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFT
U0VSVChub2RlKTsKKyAgICByZXR1cm4gaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpICYmIGZ1bGxT
Y3JlZW5WaWRlbygpLT5pc1ZhbGlkKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50UXQ6OnJlcXVp
cmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKQoreworICAgIHJldHVybiBmdWxsU2NyZWVu
VmlkZW8oKS0+cmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOworfQorCit2b2lk
IENocm9tZUNsaWVudFF0OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKG5vZGUgJiYgaXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpKTsKKworICAgIGZ1bGxT
Y3JlZW5WaWRlbygpLT5lbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKG5vZGUpOworfQorCit2b2lkIENo
cm9tZUNsaWVudFF0OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQobm9kZSAmJiBpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSkpOworCisgICAgZnVsbFNjcmVl
blZpZGVvKCktPmV4aXRGdWxsU2NyZWVuRm9yTm9kZShub2RlKTsKK30gCisjZW5kaWYKKworUGFz
c093blB0cjxRV2ViU2VsZWN0TWV0aG9kPiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VsZWN0UG9w
dXAoKSBjb25zdAoreworICAgIE93blB0cjxRV2ViU2VsZWN0TWV0aG9kPiByZXN1bHQgPSBtX3Bs
YXRmb3JtUGx1Z2luLmNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKCk7CisgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisKKyNpZiAhZGVmaW5lZChRVF9OT19D
T01CT0JPWCkKKyAgICByZXR1cm4gYWRvcHRQdHIobV93ZWJQYWdlLT5jcmVhdGVTZWxlY3RQb3B1
cCgpKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBDaHJv
bWVDbGllbnRRdDo6ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgVmll
d3BvcnRBcmd1bWVudHMmKSBjb25zdAoreworICAgIG1fd2ViUGFnZS0+ZW1pdFZpZXdwb3J0Q2hh
bmdlUmVxdWVzdGVkKCk7Cit9CisKKyNpZiBVU0UoUVRfTVVMVElNRURJQSkKK1FXZWJGdWxsU2Ny
ZWVuVmlkZW9IYW5kbGVyKiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlRnVsbFNjcmVlblZpZGVvSGFu
ZGxlcigpCit7CisgICAgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIqIGhhbmRsZXIgPSBtX3Bs
YXRmb3JtUGx1Z2luLmNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKS5sZWFrUHRyKCk7Cisg
ICAgaWYgKCFoYW5kbGVyKQorICAgICAgICBoYW5kbGVyID0gbV93ZWJQYWdlLT5jcmVhdGVGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyKCk7CisgICAgcmV0dXJuIGhhbmRsZXI7Cit9CisjZW5kaWYKKwor
Ym9vbCBDaHJvbWVDbGllbnRRdDo6c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwo
KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDaHJvbWVDbGllbnRRdDo6c2VsZWN0
SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIENocm9tZUNsaWVudFF0OjpoYXNPcGVuZWRQb3B1cCgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NS
ZWZQdHI8UG9wdXBNZW51PiBDaHJvbWVDbGllbnRRdDo6Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVu
dUNsaWVudCogY2xpZW50KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wdXBN
ZW51UXQoY2xpZW50LCB0aGlzKSk7Cit9CisKK1Bhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBD
aHJvbWVDbGllbnRRdDo6Y3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCogY2xp
ZW50KSBjb25zdAoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51UXQo
Y3JlYXRlUG9wdXBNZW51KGNsaWVudCkpKTsKK30KKwordm9pZCBDaHJvbWVDbGllbnRRdDo6cG9w
dWxhdGVWaXNpdGVkTGlua3MoKQoreworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhp
bmcgaGVyZSBiZWNhdXNlIGhpc3RvcnkgaXMgdGllZCB0byBRV2ViUGFnZSByYXRoZXIgdGhhbiBz
dG9yZWQKKyAgICAvLyBpbiBhIHNlcGFyYXRlIGRhdGFiYXNlCisgICAgaWYgKGR1bXBWaXNpdGVk
TGlua3NDYWxsYmFja3MpIHsKKyAgICAgICAgcHJpbnRmKCJBc2tlZCB0byBwb3B1bGF0ZSB2aXNp
dGVkIGxpbmtzIGZvciBXZWJWaWV3IFwiJXNcIlxuIiwKKyAgICAgICAgICAgIHFQcmludGFibGUo
UVVybChtX3dlYlBhZ2UtPm1haW5GcmFtZUFkYXB0ZXIoKS0+dXJsKS50b1N0cmluZygpKSk7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjU0OWYyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMCwwICsxLDIzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDaHJvbWVDbGll
bnRRdF9oCisjZGVmaW5lIENocm9tZUNsaWVudFF0X2gKKworI2luY2x1ZGUgIkNocm9tZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
IlF0UGxhdGZvcm1QbHVnaW4uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUUV2ZW50TG9vcDsKK1FUX0VORF9OQU1FU1BBQ0UK
KworY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViUGFnZUFkYXB0ZXI7CitjbGFzcyBRV2ViRnVs
bFNjcmVlblZpZGVvSGFuZGxlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWxl
Q2hvb3NlcjsKK2NsYXNzIEZpbGVJY29uTG9hZGVyOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3Mg
UGFnZTsKK2NsYXNzIFJlZnJlc2hBbmltYXRpb247CitzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsK
K2NsYXNzIFF0QWJzdHJhY3RXZWJQb3B1cDsKK3N0cnVjdCBWaWV3cG9ydEFyZ3VtZW50czsKKyNp
ZiBFTkFCTEUoVklERU8pCitjbGFzcyBGdWxsU2NyZWVuVmlkZW9RdDsKKyNlbmRpZgorY2xhc3Mg
VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ7CisKK2NsYXNzIENocm9tZUNsaWVudFF0IDogcHVi
bGljIENocm9tZUNsaWVudCB7CitwdWJsaWM6CisgICAgQ2hyb21lQ2xpZW50UXQoUVdlYlBhZ2VB
ZGFwdGVyKik7CisgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50UXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hyb21lRGVzdHJveWVkKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCB3aW5kb3dSZWN0KCk7CisK
KyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwYWdlUmVjdCgpOworCisgICAgdmlydHVhbCB2b2lkIGZv
Y3VzKCk7CisgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoKTsKKworICAgIHZpcnR1YWwgYm9vbCBj
YW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMo
Rm9jdXNEaXJlY3Rpb24pOworCisgICAgdmlydHVhbCB2b2lkIGZvY3VzZWRFbGVtZW50Q2hhbmdl
ZChFbGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoRnJhbWUq
KTsKKworICAgIHZpcnR1YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYpOworICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUnVu
TW9kYWwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRUb29sYmFyc1Zpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIHRvb2xiYXJzVmlz
aWJsZSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclZpc2libGUoYm9vbCk7Cisg
ICAgdmlydHVhbCBib29sIHN0YXR1c2JhclZpc2libGUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyc1Zp
c2libGUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgbWVudWJhclZpc2libGUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRS
ZXNpemFibGUoYm9vbCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWdu
ZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUlEKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwo
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgRnJhbWUqKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nv
b24oKTsKKworICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oRnJhbWUq
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChG
cmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUs
IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNj
cmlwdCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5n
Jik7CisKKyAgICB2aXJ0dWFsIEtleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCk7CisgICAg
dmlydHVhbCBJbnRSZWN0IHdpbmRvd1Jlc2l6ZXJSZWN0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmLCBib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYsIGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNv
bnN0IEludFJlY3QmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KTsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2lu
dCk7CisjZW5kaWYKKworICAgIHZpcnR1YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0OworICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvU2NyZWVu
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBw
bGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXpl
Q2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9k
aWZpZXJGbGFncyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcm
LCBUZXh0RGlyZWN0aW9uKTsKKworICAgIHZpcnR1YWwgdm9pZCBwcmludChGcmFtZSopOworI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgdmlydHVhbCB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VR
dW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYsIERhdGFiYXNlRGV0YWlscyk7CisjZW5kaWYKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShT
ZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7CisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLy8gVGhpcyBpcyBhIGhvb2sgZm9yIFdlYkNvcmUg
dG8gdGVsbCB1cyB3aGF0IHdlIG5lZWQgdG8gZG8gd2l0aCB0aGUgR3JhcGhpY3NMYXllcnMuCisg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NM
YXllciopOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNo
KCk7CisgICAgdmlydHVhbCBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRp
bmdUcmlnZ2VycygpIGNvbnN0OworI2VuZGlmCisgICAgdmlydHVhbCBib29sIGFsbG93c0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdDsKKworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkg
Y29uc3Q7CisjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCB2
b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSB7IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVP
KSAmJiAoKFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykpIHx8
IFVTRShRVF9NVUxUSU1FRElBKSkKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVu
Rm9yTm9kZShjb25zdCBOb2RlKik7CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZv
ck5vZGUoTm9kZSopOworICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9k
ZSopOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNr
KCk7CisgICAgRnVsbFNjcmVlblZpZGVvUXQqIGZ1bGxTY3JlZW5WaWRlbygpOworI2VuZGlmCisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29s
b3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3Qg
Q29sb3ImKTsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IE5vZGUqKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1
cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSB7IH0KKworI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikK
KyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucygpOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IExheW91dFJlY3QpIGNvbnN0IHsgfQorCisgICAgdmly
dHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7CisgICAgdmly
dHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24o
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2Vh
cmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVZpc2l0ZWRMaW5rcygpOworCisgICAgUGFzc093blB0cjxRV2ViU2VsZWN0TWV0aG9k
PiBjcmVhdGVTZWxlY3RQb3B1cCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
Vmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBudW1XaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSB7IH0KKworICAgIFFX
ZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBjcmVhdGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCk7
CisKKyAgICBRV2ViUGFnZUFkYXB0ZXIqIG1fd2ViUGFnZTsKKyAgICBVUkwgbGFzdEhvdmVyVVJM
OworICAgIFN0cmluZyBsYXN0SG92ZXJUaXRsZTsKKyAgICBTdHJpbmcgbGFzdEhvdmVyQ29udGVu
dDsKKworICAgIGJvb2wgdG9vbEJhcnNWaXNpYmxlOworICAgIGJvb2wgc3RhdHVzQmFyVmlzaWJs
ZTsKKyAgICBib29sIG1lbnVCYXJWaXNpYmxlOworICAgIFFFdmVudExvb3AqIG1fZXZlbnRMb29w
OworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9USU1FUikKKyAgICBPd25QdHI8UmVmcmVzaEFuaW1hdGlvbj4gbV9yZWZy
ZXNoQW5pbWF0aW9uOworI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pICYmIChVU0UoR1NUUkVB
TUVSKSB8fCBVU0UoUVRfTVVMVElNRURJQSkpCisgICAgRnVsbFNjcmVlblZpZGVvUXQqIG1fZnVs
bFNjcmVlblZpZGVvOworI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBkdW1wVmlzaXRlZExpbmtz
Q2FsbGJhY2tzOworCisgICAgbXV0YWJsZSBRdFBsYXRmb3JtUGx1Z2luIG1fcGxhdGZvcm1QbHVn
aW47CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgT3duUHRyPFRleHR1
cmVNYXBwZXJMYXllckNsaWVudFF0PiBtX3RleHR1cmVNYXBwZXJMYXllckNsaWVudDsKKyNlbmRp
ZgorfTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4wODk3NWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmNwcApAQCAtMCwwICsxLDg1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgor
CisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisj
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3ZvaWQgQ29u
dGV4dE1lbnVDbGllbnRRdDo6Y29udGV4dE1lbnVEZXN0cm95ZWQoKQoreworICAgIGRlbGV0ZSB0
aGlzOworfQorCitQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNsaWVudFF0Ojpj
dXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IG1lbnUpCit7CisgICAgcmV0dXJu
IG1lbnU7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRRdDo6Y29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRRdDo6ZG93bmxvYWRVUkwo
Y29uc3QgVVJMJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRleHRN
ZW51Q2xpZW50UXQ6Omxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudFF0OjpzcGVhayhjb25zdCBTdHJp
bmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgQ29udGV4dE1lbnVDbGll
bnRRdDo6aXNTcGVha2luZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRRdDo6c3RvcFNwZWFraW5nKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OnNl
YXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTky
MWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudFF0LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb250ZXh0
TWVudUNsaWVudFF0X2gKKyNkZWZpbmUgQ29udGV4dE1lbnVDbGllbnRRdF9oCisKKyNpbmNsdWRl
ICJDb250ZXh0TWVudUNsaWVudC5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGV4dE1lbnU7CisKK2NsYXNzIENvbnRleHRN
ZW51Q2xpZW50UXQgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpOworCisgICAgdmlydHVhbCBQYXNzT3du
UHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4dE1lbnU+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVt
KiwgY29uc3QgQ29udGV4dE1lbnUqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKik7
CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBpc1NwZWFraW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpOworICAgIHZp
cnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKik7Cit9OworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVu
dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudFF0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmE0ODJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3Bw
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEcmFnQ2xpZW50UXQuaCIKKworI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1
ZGUgIkNsaXBib2FyZC5oIgorI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
RXZlbnRIYW5kbGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiUGFzdGVib2FyZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgor
CisjaW5jbHVkZSA8UURyYWc+CisjaW5jbHVkZSA8UU1pbWVEYXRhPgorI2luY2x1ZGUgPFFXZWJQ
YWdlQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBRdDo6
RHJvcEFjdGlvbnMgZHJhZ09wZXJhdGlvbnNUb0Ryb3BBY3Rpb25zKHVuc2lnbmVkIG9wKQorewor
ICAgIFF0OjpEcm9wQWN0aW9ucyByZXN1bHQgPSBRdDo6SWdub3JlQWN0aW9uOworICAgIGlmIChv
cCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBRdDo6Q29weUFjdGlvbjsK
KyAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0IHw9IFF0OjpN
b3ZlQWN0aW9uOworICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICBy
ZXN1bHQgfD0gUXQ6Ok1vdmVBY3Rpb247CisgICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkxpbmsp
CisgICAgICAgIHJlc3VsdCB8PSBRdDo6TGlua0FjdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitzdGF0aWMgaW5saW5lIERyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlv
bihRdDo6RHJvcEFjdGlvbnMgYWN0aW9uKQoreworICAgIERyYWdPcGVyYXRpb24gcmVzdWx0ID0g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgaWYgKGFjdGlvbiAmIFF0OjpDb3B5QWN0aW9uKQorICAg
ICAgICByZXN1bHQgPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBpZiAoYWN0aW9uICYgUXQ6Okxp
bmtBY3Rpb24pCisgICAgICAgIHJlc3VsdCA9IERyYWdPcGVyYXRpb25MaW5rOworICAgIGlmIChh
Y3Rpb24gJiBRdDo6TW92ZUFjdGlvbikKKyAgICAgICAgcmVzdWx0ID0gRHJhZ09wZXJhdGlvbk1v
dmU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdD
bGllbnRRdDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGEqKQoreworICAgIHJldHVybiBEcmFn
RGVzdGluYXRpb25BY3Rpb25Bbnk7Cit9CisKK3ZvaWQgRHJhZ0NsaWVudFF0Ojp3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdEYXRhKikK
K3sKK30KKwordm9pZCBEcmFnQ2xpZW50UXQ6OmRyYWdDb250cm9sbGVyRGVzdHJveWVkKCkKK3sK
KyAgICBkZWxldGUgdGhpczsKK30KKworRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ2xpZW50UXQ6OmRy
YWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQoreworICAgIHJldHVy
biBEcmFnU291cmNlQWN0aW9uQW55OworfQorCit2b2lkIERyYWdDbGllbnRRdDo6d2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgQ2xp
cGJvYXJkKikKK3sKK30KKwordm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VS
ZWYgZHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSwgYm9vbCkKK3sKKyNpZm5kZWYgUVRfTk9fRFJBR0FO
RERST1AKKyAgICBRTWltZURhdGEqIGNsaXBib2FyZERhdGEgPSBjbGlwYm9hcmQtPnBhc3RlYm9h
cmQoKS5jbGlwYm9hcmREYXRhKCk7CisgICAgY2xpcGJvYXJkLT5wYXN0ZWJvYXJkKCkuaW52YWxp
ZGF0ZVdyaXRhYmxlRGF0YSgpOworICAgIFFPYmplY3QqIHZpZXcgPSBtX2Nocm9tZUNsaWVudC0+
cGxhdGZvcm1QYWdlQ2xpZW50KCktPm93bmVyV2lkZ2V0KCk7CisgICAgaWYgKHZpZXcpIHsKKyAg
ICAgICAgUURyYWcqIGRyYWcgPSBuZXcgUURyYWcodmlldyk7CisgICAgICAgIGlmIChkcmFnSW1h
Z2UpCisgICAgICAgICAgICBkcmFnLT5zZXRQaXhtYXAoKmRyYWdJbWFnZSk7CisgICAgICAgIGVs
c2UgaWYgKGNsaXBib2FyZERhdGEgJiYgY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKKyAgICAg
ICAgICAgIGRyYWctPnNldFBpeG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNsaXBib2FyZERh
dGEtPmltYWdlRGF0YSgpKSk7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1h
c2sgPSBjbGlwYm9hcmQtPnNvdXJjZU9wZXJhdGlvbigpOworICAgICAgICBkcmFnLT5zZXRNaW1l
RGF0YShjbGlwYm9hcmREYXRhKTsKKyAgICAgICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFsRHJvcEFj
dGlvbiA9IGRyYWctPmV4ZWMoZHJhZ09wZXJhdGlvbnNUb0Ryb3BBY3Rpb25zKGRyYWdPcGVyYXRp
b25NYXNrKSk7CisKKyAgICAgICAgLy8gU2VuZCBkcmFnRW5kIGV2ZW50CisgICAgICAgIFBsYXRm
b3JtTW91c2VFdmVudCBtZShtX2Nocm9tZUNsaWVudC0+c2NyZWVuVG9Sb290VmlldyhRQ3Vyc29y
Ojpwb3MoKSksIFFDdXJzb3I6OnBvcygpLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CisgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChtZSwgZHJvcEFjdGlvblRvRHJhZ09w
ZXJhdGlvbihhY3R1YWxEcm9wQWN0aW9uKSk7CisgICAgfQorICAgIGZyYW1lLT5wYWdlKCktPmRy
YWdDb250cm9sbGVyKCkuZHJhZ0VuZGVkKCk7CisjZW5kaWYKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Ry
YWdDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYThiODA4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQu
aApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRHJhZ0NsaWVudFF0X2gKKyNk
ZWZpbmUgRHJhZ0NsaWVudFF0X2gKKworI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDaHJvbWVDbGllbnQ7CisKK2NsYXNzIERyYWdDbGllbnRR
dCA6IHB1YmxpYyBEcmFnQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEcmFnQ2xpZW50UXQoQ2hyb21l
Q2xpZW50KiBjaHJvbWVDbGllbnQpIDogbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KSB7IH07
CisgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0RhdGEqKTsKKyAgICB2aXJ0dWFsIERyYWdEZXN0aW5hdGlv
bkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSopOworICAgIHZpcnR1YWwgdm9pZCBk
cmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBk
cmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25z
dCBJbnRQb2ludCYsIENsaXBib2FyZCopOyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50
UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wgbGlua0RyYWcgPSBmYWxz
ZSk7Citwcml2YXRlOgorICAgIENocm9tZUNsaWVudCogbV9jaHJvbWVDbGllbnQ7Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43YTRjNzgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTAsMCArMSw5MTEg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVy
dGhvZ2FuLm5ldD4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAw
NyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKKworI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNp
bmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVu
dFF0LmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51
LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgorI2luY2x1ZGUgIkNvbnRleHRN
ZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
IgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5j
bHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKKyNpbmNsdWRlICJF
bGVtZW50LmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRm9udC5o
IgorI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNs
aWVudFF0LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVy
LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlv
bkNsaWVudE1vY2suaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJHZW9sb2NhdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNp
bmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1
ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgorI2luY2x1ZGUg
IlBvc2l0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJQcmludENvbnRleHQuaCIKKyNpbmNsdWRlICJR
V2ViRnJhbWVBZGFwdGVyLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJj
ZUNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRoaXJkUGFydHlDb29raWVz
UXQuaCIKKyNpbmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbmNsdWRlICJxdF9ydW50
aW1lLmgiCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKyNpbmNsdWRlICJxd2ViaGlzdG9yeS5o
IgorI2luY2x1ZGUgInF3ZWJoaXN0b3J5X3AuaCIKKyNpbmNsdWRlICJxd2Vic2NyaXB0d29ybGQu
aCIKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKFFUX01VTFRJTUVESUEpCisjaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVF0LmgiCisj
ZW5kaWYKKworI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUU1hcDxpbnQsIFFXZWJTY3JpcHRXb3Js
ZCo+IG1fd29ybGRNYXA7CisKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCitHZW9sb2NhdGlvbkNs
aWVudE1vY2sqIHRvR2VvbG9jYXRpb25DbGllbnRNb2NrKEdlb2xvY2F0aW9uQ2xpZW50KiBjbGll
bnQpCit7CisgICAgQVNTRVJUKFFXZWJQYWdlQWRhcHRlcjo6ZHJ0UnVuKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oY2xpZW50KTsKK30KKyNlbmRpZgor
CisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jayogdG9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50YXRpb25DbGll
bnQqIGNsaWVudCkKK3sKKyAgICBBU1NFUlQoUVdlYlBhZ2VBZGFwdGVyOjpkcnRSdW4pOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqPihjbGllbnQp
OworfQorI2VuZGlmCisKK1FEUlROb2RlOjpRRFJUTm9kZSgpCisgICAgOiBtX25vZGUoMCkKK3sK
K30KKworUURSVE5vZGU6OlFEUlROb2RlKFdlYkNvcmU6Ok5vZGUqIG5vZGUpCisgICAgOiBtX25v
ZGUoMCkKK3sKKyAgICBpZiAobm9kZSkgeworICAgICAgICBtX25vZGUgPSBub2RlOworICAgICAg
ICBtX25vZGUtPnJlZigpOworICAgIH0KK30KKworUURSVE5vZGU6On5RRFJUTm9kZSgpCit7Cisg
ICAgaWYgKG1fbm9kZSkKKyAgICAgICAgbV9ub2RlLT5kZXJlZigpOworfQorCitRRFJUTm9kZTo6
UURSVE5vZGUoY29uc3QgUURSVE5vZGUmIG90aGVyKQorICAgIDptX25vZGUob3RoZXIubV9ub2Rl
KQoreworICAgIGlmIChtX25vZGUpCisgICAgICAgIG1fbm9kZS0+cmVmKCk7Cit9CisKK1FEUlRO
b2RlJiBRRFJUTm9kZTo6b3BlcmF0b3I9KGNvbnN0IFFEUlROb2RlJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgTm9kZSogb3RoZXJOb2RlID0gb3RoZXIubV9u
b2RlOworICAgICAgICBpZiAob3RoZXJOb2RlKQorICAgICAgICAgICAgb3RoZXJOb2RlLT5yZWYo
KTsKKyAgICAgICAgaWYgKG1fbm9kZSkKKyAgICAgICAgICAgIG1fbm9kZS0+ZGVyZWYoKTsKKyAg
ICAgICAgbV9ub2RlID0gb3RoZXJOb2RlOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K1FEUlROb2RlIFF0RFJUTm9kZVJ1bnRpbWU6OmNyZWF0ZShXZWJDb3JlOjpOb2RlKiBub2RlKQor
eworICAgIHJldHVybiBRRFJUTm9kZShub2RlKTsKK30KKworV2ViQ29yZTo6Tm9kZSogUXREUlRO
b2RlUnVudGltZTo6Z2V0KGNvbnN0IFFEUlROb2RlJiBub2RlKQoreworICAgIHJldHVybiBub2Rl
Lm1fbm9kZTsKK30KKworc3RhdGljIFFWYXJpYW50IGNvbnZlcnRKU1ZhbHVlVG9Ob2RlVmFyaWFu
dChKU0M6OkpTT2JqZWN0KiBvYmplY3QsIGludCAqZGlzdGFuY2UsIEhhc2hTZXQ8SlNPYmplY3RS
ZWY+KikKK3sKKyAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LT5pbmhlcml0cyhKU05vZGU6Omlu
Zm8oKSkpCisgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworICAgIHJldHVybiBRVmFyaWFudDo6
ZnJvbVZhbHVlPFFEUlROb2RlPihRdERSVE5vZGVSdW50aW1lOjpjcmVhdGUoKHN0YXRpY19jYXN0
PEpTTm9kZSo+KG9iamVjdCkpLT5pbXBsKCkpKTsKK30KKworc3RhdGljIEpTQzo6SlNWYWx1ZSBj
b252ZXJ0Tm9kZVZhcmlhbnRUb0pTVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFdlYkNvcmU6
OkpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFFWYXJpYW50JiB2YXJpYW50
KQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgUXREUlROb2RlUnVudGlt
ZTo6Z2V0KHZhcmlhbnQudmFsdWU8UURSVE5vZGU+KCkpKTsKK30KKwordm9pZCBRdERSVE5vZGVS
dW50aW1lOjppbml0aWFsaXplKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZh
bHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKKyAgICBpbnQgaWQgPSBxUmVnaXN0ZXJNZXRhVHlwZTxRRFJUTm9kZT4oKTsK
KyAgICBKU0M6OkJpbmRpbmdzOjpyZWdpc3RlckN1c3RvbVR5cGUoaWQsIGNvbnZlcnRKU1ZhbHVl
VG9Ob2RlVmFyaWFudCwgY29udmVydE5vZGVWYXJpYW50VG9KU1ZhbHVlKTsKK30KKworRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0KCkKK3sKK30KKworRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6On5EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdCgpCit7Cit9CisK
K3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluaXRpYWxpemUoKQoreworICAgIFF0RFJU
Tm9kZVJ1bnRpbWU6OmluaXRpYWxpemUoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6b3ZlcndyaXRlUGx1Z2luRGlyZWN0b3JpZXMoKQoreworICAgIFBsdWdpbkRhdGFiYXNl
KiBkYiA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQbHVnaW5zKC8qIHBvcHVsYXRlICovIGZh
bHNlKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOworICAgIFN0cmluZyBxdFBhdGgocWdl
dGVudigiUVRXRUJLSVRfUExVR0lOX1BBVEgiKS5kYXRhKCkpOworICAgIHF0UGF0aC5zcGxpdChV
Q2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmllcyAqLyBmYWxzZSwgcGF0aHMpOworCisgICAg
ZGItPnNldFBsdWdpbkRpcmVjdG9yaWVzKHBhdGhzKTsKKyAgICBkYi0+cmVmcmVzaCgpOworfQor
Cit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREdW1wUmVuZGVyVHJlZU1vZGVFbmFi
bGVkKGJvb2wgYikKK3sKKyAgICBRV2ViUGFnZUFkYXB0ZXI6OmRydFJ1biA9IGI7CisjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYmIGRlZmluZWQoWFBfVU5JWCkKKyAgICAvLyBQbHVn
aW5WaWV3UXQgKFgxMSkgbmVlZHMgYSBmZXcgd29ya2Fyb3VuZHMgd2hlbiBydW5uaW5nIHVuZGVy
IERSVAorICAgIFBsdWdpblZpZXc6OnNldElzUnVubmluZ1VuZGVyRFJUKGIpOworI2VuZGlmCit9
CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEZyYW1lRmxhdHRlbmluZ0VuYWJs
ZWQoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyLCBib29sIGVuYWJsZWQpCit7CisgICAgYWRhcHRl
ci0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGVuYWJsZWQpOwor
fQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKFFX
ZWJQYWdlQWRhcHRlciAqYWRhcHRlciwgY29uc3QgUVN0cmluZyYgZ3JvdXBOYW1lKQoreworICAg
IGFkYXB0ZXItPnBhZ2UtPnNldEdyb3VwTmFtZShncm91cE5hbWUpOworfQorCitRU3RyaW5nIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJQYWdlR3JvdXBOYW1lKFFXZWJQYWdlQWRhcHRlciog
YWRhcHRlcikKK3sKKyAgICByZXR1cm4gYWRhcHRlci0+cGFnZS0+Z3JvdXBOYW1lKCk7Cit9CisK
K3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYkluc3BlY3RvckV4ZWN1dGVTY3JpcHQo
UVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2Ny
aXB0KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKCFhZGFwdGVyLT5wYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBhZGFwdGVyLT5wYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY2FsbElk
LCBzY3JpcHQpOworI2VuZGlmCit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Ondl
Ykluc3BlY3RvclNob3coUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyKQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKCFhZGFwdGVyLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBhZGFwdGVyLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNob3coKTsKKyNlbmRpZgorfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3
ZWJJbnNwZWN0b3JDbG9zZShRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0ZXIpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoIWFkYXB0ZXItPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGFkYXB0ZXItPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+Y2xvc2UoKTsKKyNlbmRpZgorfQorCitib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpoYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlcikKK3sKKyAgICBy
ZXR1cm4gYWRhcHRlci0+ZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworfQor
Cit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRWYWx1ZUZvclVzZXIoY29uc3QgUVdl
YkVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQoreworICAgIFdlYkNvcmU6
OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxlbWVudDsKKyAgICBpZiAoIXdlYkVs
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQgPSB3ZWJFbGVtZW50LT50b0lucHV0RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcih2
YWx1ZSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyRnJhbWVOYW1l
KFFXZWJGcmFtZUFkYXB0ZXIgKmFkYXB0ZXIpCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGFk
YXB0ZXItPmZyYW1lOworICAgIGNvcmVGcmFtZS0+dHJlZSgpLmNsZWFyTmFtZSgpOworfQorCitp
bnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKQorewor
ICAgIHJldHVybiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCktPmhlYXAuZ2xvYmFsT2JqZWN0
Q291bnQoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2FyYmFnZUNvbGxl
Y3RvckNvbGxlY3QoKQoreworICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7
Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdhcmJhZ2VDb2xsZWN0b3JDb2xs
ZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKQoreworICAgIGdjQ29udHJv
bGxlcigpLmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcod2FpdFVu
dGlsRG9uZSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndoaXRlTGlzdEFj
Y2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5n
JiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6cmVtb3ZlV2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
K3sKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
KlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlTGlzdHMoKQoreworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RG9tYWluUmVs
YXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmlu
ZyYgc2NoZW1lKQoreworICAgIFNjaGVtZVJlZ2lzdHJ5OjpzZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lKGZvcmJpZGRlbiwgc2NoZW1lKTsKK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoUVdlYlBhZ2VBZGFwdGVy
KiBhZGFwdGVyLCBib29sIHZhbHVlKQoreworICAgIGFkYXB0ZXItPnBhZ2UtPnNldHRpbmdzKCku
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQodmFsdWUpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIq
IGFkYXB0ZXIsIGJvb2wgdmFsdWUpCit7CisgICAgYWRhcHRlci0+cGFnZS0+c2V0dGluZ3MoKS5z
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCh2YWx1ZSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZUFkYXB0ZXIq
IGFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQorewor
ICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7Cit9CisKK2Jvb2wgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQoUVdlYlBhZ2VBZGFwdGVyICphZGFw
dGVyLCBjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBhZGFwdGVyLT5wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKG5h
bWUpLmlzRW5hYmxlZCgpOworfQorCitRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNlbGVjdGVkUmFuZ2UoUVdlYlBhZ2VBZGFwdGVyICphZGFwdGVyKQoreworICAgIFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSA9IGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIFFWYXJpYW50TGlzdCBzZWxlY3RlZFJhbmdlOworICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpOworCisgICAgRWxlbWVudCogc2VsZWN0aW9uUm9vdCA9IGZyYW1lLnNlbGVjdGlvbigp
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBzY29wZSA9IHNlbGVjdGlvblJv
b3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7
CisKKyAgICBSZWZQdHI8UmFuZ2U+IHRlc3RSYW5nZSA9IFJhbmdlOjpjcmVhdGUoJnNjb3BlLT5k
b2N1bWVudCgpLCBzY29wZSwgMCwgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFy
dE9mZnNldCgpKTsKKyAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNj
b3BlKTsKKyAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
dGVzdFJhbmdlLmdldCgpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgdGVzdFJhbmdl
LT5zZXRFbmQocmFuZ2UtPmVuZENvbnRhaW5lcigpLCByYW5nZS0+ZW5kT2Zmc2V0KCksIGVjKTsK
KyAgICBBU1NFUlQodGVzdFJhbmdlLT5zdGFydENvbnRhaW5lcigpID09IHNjb3BlKTsKKyAgICBp
bnQgZW5kUG9zaXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQo
KSk7CisKKyAgICBzZWxlY3RlZFJhbmdlIDw8IHN0YXJ0UG9zaXRpb24gPDwgKGVuZFBvc2l0aW9u
IC0gc3RhcnRQb3NpdGlvbik7CisKKyAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZTsKKworfQorCitR
VmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlciwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3Ro
KQoreworICAgIFdlYkNvcmU6OkZyYW1lJiBmcmFtZSA9IGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFFWYXJpYW50TGlzdCByZWN0Owor
CisgICAgaWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBs
ZW5ndGgpKQorICAgICAgICBsZW5ndGggPSAwOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUuc2VsZWN0aW9u
KCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIGxvY2F0aW9uLCBsZW5n
dGgpOworCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50TGlzdCgpOwor
CisgICAgUVJlY3QgcmVzdWx0UmVjdCA9IGZyYW1lLmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdl
KHJhbmdlLmdldCgpKTsKKyAgICByZWN0IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3VsdFJlY3Qu
eSgpIDw8IHJlc3VsdFJlY3Qud2lkdGgoKSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOworICAgIHJl
dHVybiByZWN0OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaW5kb3dz
QmVoYXZpb3JBc0VkaXRpbmdCZWhhdmlvcihRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0ZXIpCit7Cisg
ICAgUGFnZSogY29yZVBhZ2UgPSBhZGFwdGVyLT5wYWdlOworICAgIGlmICghY29yZVBhZ2UpCisg
ICAgICAgIHJldHVybjsKKyAgICBjb3JlUGFnZS0+c2V0dGluZ3MoKS5zZXRFZGl0aW5nQmVoYXZp
b3JUeXBlKEVkaXRpbmdXaW5kb3dzQmVoYXZpb3IpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKCkKK3sKKyAgICBXZWJDb3JlOjpj
YWNoZVN0b3JhZ2UoKS5lbXB0eSgpOworICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnZhY3V1
bURhdGFiYXNlRmlsZSgpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1w
RnJhbWVMb2FkZXIoYm9vbCBiKQoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcyA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCBiKQoreworICAgIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2sgPSBiOworfQorCit2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyKGJvb2wg
YikKK3sKKyAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9h
ZGVyQ2FsbGJhY2tzID0gYjsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcyhib29sIGIpCit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoKGNvbnN0IFFTdHJpbmcm
IHBhdGgpCit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxi
YWNrc1BhdGggPSBwYXRoOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyhib29sIGIpCit7CisgICAgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMgPSBiOworfQorCit2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFja3MoYm9vbCBi
KQoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxi
YWNrcyA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5k
UmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChib29sIGIpCit7CisgICAgRnJhbWVMb2FkZXJD
bGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QgPSBiOworfQorCit2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChi
b29sIGIpCit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVs
bCA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5kUmVx
dWVzdENsZWFySGVhZGVycyhjb25zdCBRU3RyaW5nTGlzdCYgaGVhZGVycykKK3sKKyAgICBGcmFt
ZUxvYWRlckNsaWVudFF0OjpzZW5kUmVxdWVzdENsZWFySGVhZGVycyA9IGhlYWRlcnM7Cit9CisK
K3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQoYm9vbCBiKQoreworICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQgPSBiOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRDdXN0
b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKK3sKKyAgICBG
cmFtZUxvYWRlckNsaWVudFF0Ojpwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQgPSBlbmFibGVkOworICAg
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvbGljeURlbGVnYXRlUGVybWlzc2l2ZSA9IHBlcm1pc3Np
dmU7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBIaXN0b3J5Q2FsbGJh
Y2tzKGJvb2wgYikKK3sKKyAgICBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wSGlzdG9yeUNhbGxi
YWNrcyA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBWaXNpdGVk
TGlua3NDYWxsYmFja3MoYm9vbCBiKQoreworICAgIENocm9tZUNsaWVudFF0OjpkdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2tzID0gYjsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
ZHVtcEVkaXRpbmdDYWxsYmFja3MoYm9vbCBiKQoreworICAgIEVkaXRvckNsaWVudFF0OjpkdW1w
RWRpdGluZ0NhbGxiYWNrcyA9IGI7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmR1bXBTZXRBY2NlcHRzRWRpdGluZyhib29sIGIpCit7CisgICAgRWRpdG9yQ2xpZW50UXQ6OmFj
Y2VwdHNFZGl0aW5nID0gYjsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVt
cE5vdGlmaWNhdGlvbihib29sIGIpCit7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6ZHVtcE5vdGlmaWNhdGlvbiA9IGI7CisjZW5kaWYKK30KKworUVN0cmluZyBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6dmlld3BvcnRBc1RleHQoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVy
LCBpbnQgZGV2aWNlRFBJLCBjb25zdCBRU2l6ZSYgZGV2aWNlU2l6ZSwgY29uc3QgUVNpemUmIGF2
YWlsYWJsZVNpemUpCit7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMgYXJncyA9IGFk
YXB0ZXItPnZpZXdwb3J0QXJndW1lbnRzKCk7CisKKyAgICBmbG9hdCBkZXZpY2VQaXhlbFJhdGlv
ID0gZGV2aWNlRFBJIC8gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OmRlcHJlY2F0ZWRUYXJn
ZXREUEk7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGNvbmYgPSBXZWJDb3JlOjpj
b21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKGFyZ3MsCisgICAgICAgIC8qIGRlc2t0b3Atd2lkdGgg
ICAgKi85ODAsCisgICAgICAgIC8qIGRldmljZS13aWR0aCAgICAgKi9kZXZpY2VTaXplLndpZHRo
KCksCisgICAgICAgIC8qIGRldmljZS1oZWlnaHQgICAgKi9kZXZpY2VTaXplLmhlaWdodCgpLAor
ICAgICAgICBkZXZpY2VQaXhlbFJhdGlvLAorICAgICAgICBhdmFpbGFibGVTaXplKTsKKyAgICBX
ZWJDb3JlOjpyZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplKGNvbmYsIGF2
YWlsYWJsZVNpemUsIGRldmljZVBpeGVsUmF0aW8pOworICAgIFdlYkNvcmU6OnJlc3RyaWN0U2Nh
bGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGNvbmYpOworCisgICAgUVN0
cmluZyByZXM7CisgICAgcmVzID0gcmVzLnNwcmludGYoInZpZXdwb3J0IHNpemUgJWR4JWQgc2Nh
bGUgJWYgd2l0aCBsaW1pdHMgWyVmLCAlZl0gYW5kIHVzZXJTY2FsYWJsZSAlZlxuIiwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50Pihjb25mLmxheW91dFNpemUud2lkdGgoKSksCisgICAgICAgIHN0
YXRpY19jYXN0PGludD4oY29uZi5sYXlvdXRTaXplLmhlaWdodCgpKSwKKyAgICAgICAgY29uZi5p
bml0aWFsU2NhbGUsCisgICAgICAgIGNvbmYubWluaW11bVNjYWxlLAorICAgICAgICBjb25mLm1h
eGltdW1TY2FsZSwKKyAgICAgICAgY29uZi51c2VyU2NhbGFibGUpOworCisgICAgcmV0dXJuIHJl
czsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2NhbGVQYWdlQnkoUVdlYkZy
YW1lQWRhcHRlciogYWRhcHRlciwgZmxvYXQgc2NhbGVmYWN0b3IsIGNvbnN0IFFQb2ludCYgb3Jp
Z2luKQoreworICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsK
KyAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmVGcmFtZS0+cGFnZSgpKQorICAgICAgICBwYWdlLT5z
ZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVmYWN0b3IsIG9yaWdpbik7Cit9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihRV2ViUGFnZUFkYXB0
ZXIqIGFkYXB0ZXIsIGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2Fu
UHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdh
bW1hKQoreworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgUGFnZSogY29yZVBh
Z2UgPSBhZGFwdGVyLT5wYWdlOworICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogbW9j
a0NsaWVudCA9IHRvRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKERldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcjo6ZnJvbShjb3JlUGFnZSktPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkpOwor
ICAgIG1vY2tDbGllbnQtPnNldE9yaWVudGF0aW9uKERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3Jl
YXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92
aWRlR2FtbWEsIGdhbW1hKSk7CisjZW5kaWYKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6cmVzZXRHZW9sb2NhdGlvbk1vY2soUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyKQorewor
I2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBQYWdlKiBjb3JlUGFnZSA9IGFkYXB0ZXItPnBh
Z2U7CisgICAgR2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0gdG9HZW9sb2NhdGlv
bkNsaWVudE1vY2soR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKGNvcmVQYWdlKS0+Y2xpZW50
KCkpOworICAgIG1vY2tDbGllbnQtPnJlc2V0KCk7CisjZW5kaWYKK30KKwordm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihRV2ViUGFnZUFk
YXB0ZXIqIGFkYXB0ZXIsIGJvb2wgYWxsb3dlZCkKK3sKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04p
CisgICAgUGFnZSogY29yZVBhZ2UgPSBhZGFwdGVyLT5wYWdlOworICAgIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jayogbW9ja0NsaWVudCA9IHRvR2VvbG9jYXRpb25DbGllbnRNb2NrKEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6ZnJvbShjb3JlUGFnZSktPmNsaWVudCgpKTsKKyAgICBtb2NrQ2xpZW50LT5z
ZXRQZXJtaXNzaW9uKGFsbG93ZWQpOworI2VuZGlmCit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFFXZWJQYWdlQWRhcHRlciogYWRh
cHRlciwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kp
Cit7CisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIFBhZ2UqIGNvcmVQYWdlID0gYWRhcHRl
ci0+cGFnZTsKKyAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSB0b0dlb2xv
Y2F0aW9uQ2xpZW50TW9jayhHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2UpLT5j
bGllbnQoKSk7CisgICAgbW9ja0NsaWVudC0+c2V0UG9zaXRpb24oR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlKGN1cnJlbnRUaW1lKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KSk7
CisjZW5kaWYKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFFXZWJQYWdlQWRhcHRlciogYWRhcHRlciwg
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSkKK3sKKyNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCisgICAg
UGFnZSogY29yZVBhZ2UgPSBhZGFwdGVyLT5wYWdlOworICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9j
ayogbW9ja0NsaWVudCA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6ZnJvbShjb3JlUGFnZSktPmNsaWVudCgpKTsKKyAgICBtb2NrQ2xp
ZW50LT5zZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2FnZSk7CisjZW5kaWYKK30KKwor
aW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0cyhRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0ZXIpCit7CisjaWYgRU5BQkxF
KEdFT0xPQ0FUSU9OKQorICAgIFBhZ2UqIGNvcmVQYWdlID0gYWRhcHRlci0+cGFnZTsKKyAgICBH
ZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSB0b0dlb2xvY2F0aW9uQ2xpZW50TW9j
ayhHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2UpLT5jbGllbnQoKSk7CisgICAg
cmV0dXJuIG1vY2tDbGllbnQtPm51bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpOwor
I2Vsc2UKKyAgICByZXR1cm4gLTE7CisjZW5kaWYKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6aXNUYXJnZXRJdGVtKGNvbnN0IFFXZWJIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0p
Cit7CisgICAgUVdlYkhpc3RvcnlJdGVtIGl0ID0gaGlzdG9yeUl0ZW07CisgICAgaWYgKFFXZWJI
aXN0b3J5SXRlbVByaXZhdGU6OmNvcmUoJml0KS0+aXNUYXJnZXRJdGVtKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworUVN0cmluZyBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6aGlzdG9yeUl0ZW1UYXJnZXQoY29uc3QgUVdlYkhpc3RvcnlJdGVtJiBoaXN0
b3J5SXRlbSkKK3sKKyAgICBRV2ViSGlzdG9yeUl0ZW0gaXQgPSBoaXN0b3J5SXRlbTsKKyAgICBy
ZXR1cm4gKFFXZWJIaXN0b3J5SXRlbVByaXZhdGU6OmNvcmUoJml0KS0+dGFyZ2V0KCkpOworfQor
CitRTWFwPFFTdHJpbmcsIFFXZWJIaXN0b3J5SXRlbT4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmdldENoaWxkSGlzdG9yeUl0ZW1zKGNvbnN0IFFXZWJIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0p
Cit7CisgICAgUVdlYkhpc3RvcnlJdGVtIGl0ID0gaGlzdG9yeUl0ZW07CisgICAgSGlzdG9yeUl0
ZW0qIGl0ZW0gPSBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjpjb3JlKCZpdCk7CisgICAgY29uc3Qg
V2ViQ29yZTo6SGlzdG9yeUl0ZW1WZWN0b3ImIGNoaWxkcmVuID0gaXRlbS0+Y2hpbGRyZW4oKTsK
KworICAgIHVuc2lnbmVkIHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgUU1hcDxRU3RyaW5n
LCBRV2ViSGlzdG9yeUl0ZW0+IGtpZHM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgeworICAgICAgICBRV2ViSGlzdG9yeUl0ZW0ga2lkKG5ldyBRV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlKGNoaWxkcmVuW2ldLmdldCgpKSk7CisgICAgICAgIGtpZHMuaW5zZXJ0KER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpoaXN0b3J5SXRlbVRhcmdldChraWQpLCBraWQpOworICAgIH0K
KyAgICByZXR1cm4ga2lkczsKK30KKworYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2hv
dWxkQ2xvc2UoUVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlcikKK3sKKyAgICBXZWJDb3JlOjpGcmFt
ZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+bG9h
ZGVyKCkuc2hvdWxkQ2xvc2UoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
Y2xlYXJTY3JpcHRXb3JsZHMoKQoreworICAgIG1fd29ybGRNYXAuY2xlYXIoKTsKK30KKwordm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQo
UVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlciwgaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNj
cmlwdCkKK3sKKyAgICBRV2ViU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkOworICAgIGlmICghd29y
bGRJRCkgeworICAgICAgICBzY3JpcHRXb3JsZCA9IG5ldyBRV2ViU2NyaXB0V29ybGQoKTsKKyAg
ICB9IGVsc2UgaWYgKCFtX3dvcmxkTWFwLmNvbnRhaW5zKHdvcmxkSUQpKSB7CisgICAgICAgIHNj
cmlwdFdvcmxkID0gbmV3IFFXZWJTY3JpcHRXb3JsZCgpOworICAgICAgICBtX3dvcmxkTWFwLmlu
c2VydCh3b3JsZElELCBzY3JpcHRXb3JsZCk7CisgICAgfSBlbHNlCisgICAgICAgIHNjcmlwdFdv
cmxkID0gbV93b3JsZE1hcC52YWx1ZSh3b3JsZElEKTsKKworICAgIFdlYkNvcmU6OkZyYW1lKiBj
b3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsKKworICAgIFNjcmlwdENvbnRyb2xsZXImIHByb3h5
ID0gY29yZUZyYW1lLT5zY3JpcHQoKTsKKyAgICBwcm94eS5leGVjdXRlU2NyaXB0SW5Xb3JsZChz
Y3JpcHRXb3JsZC0+d29ybGQoKSwgc2NyaXB0LCB0cnVlKTsKK30KKwordm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6YWRkVXNlclN0eWxlU2hlZXQoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVy
LCBjb25zdCBRU3RyaW5nJiBzb3VyY2VDb2RlKQoreworICAgIGFkYXB0ZXItPnBhZ2UtPmdyb3Vw
KCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3Vy
Y2VDb2RlLCBRVXJsKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRzKFFXZWJQYWdlQWRhcHRlciogYWRhcHRlcikKK3sKKyAg
ICBhZGFwdGVyLT5wYWdlLT5ncm91cCgpLnJlbW92ZVVzZXJTdHlsZVNoZWV0c0Zyb21Xb3JsZCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrKGNvbnN0IFFTdHJpbmcmIHRpdGxl
KQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNB
VElPTlMpCisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblBy
ZXNlbnRlcigpLT5ub3RpZmljYXRpb25DbGlja2VkKHRpdGxlKTsKKyNlbmRpZgorfQorCit2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREZWZlcnNMb2FkaW5nKFFXZWJQYWdlQWRhcHRl
ciogYWRhcHRlciwgYm9vbCBmbGFnKQoreworICAgIFBhZ2UqIGNvcmVQYWdlID0gYWRhcHRlci0+
cGFnZTsKKyAgICBpZiAoY29yZVBhZ2UpCisgICAgICAgIGNvcmVQYWdlLT5zZXREZWZlcnNMb2Fk
aW5nKGZsYWcpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpnb0JhY2soUVdl
YlBhZ2VBZGFwdGVyKiBhZGFwdGVyKQoreworICAgIFBhZ2UqIGNvcmVQYWdlID0gYWRhcHRlci0+
cGFnZTsKKyAgICBpZiAoY29yZVBhZ2UpCisgICAgICAgIGNvcmVQYWdlLT5nb0JhY2soKTsKK30K
KworLy8gQVBJIENhbmRpZGF0ZT8KK1FTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJl
c3BvbnNlTWltZVR5cGUoUVdlYkZyYW1lQWRhcHRlciogYWRhcHRlcikKK3sKKyAgICBXZWJDb3Jl
OjpGcmFtZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7CisgICAgV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqIGRvY0xvYWRlciA9IGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KTsKKyAgICByZXR1cm4gZG9jTG9hZGVyLT5yZXNwb25zZU1JTUVUeXBlKCk7Cit9CisKK3ZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNsZWFyT3BlbmVyKFFXZWJGcmFtZUFkYXB0ZXIqIGFk
YXB0ZXIpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IGFkYXB0ZXItPmZyYW1l
OworICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkuc2V0T3BlbmVyKDApOworfQorCit2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjphZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9yaWdp
biwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgRnJhbWVMb2FkZXJDbGllbnRR
dDo6VVJMc1RvUmVkaXJlY3Rbb3JpZ2luXSA9IGRlc3RpbmF0aW9uOworfQorCit2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChR
V2ViUGFnZUFkYXB0ZXIqIGFkYXB0ZXIsIGJvb2wgZW5hYmxlKQoreworICAgIFBhZ2UqIGNvcmVQ
YWdlID0gYWRhcHRlci0+cGFnZTsKKyAgICBpZiAoY29yZVBhZ2UpCisgICAgICAgIGNvcmVQYWdl
LT5zZXR0aW5ncygpLnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGVuYWJsZSk7
Cit9CisKK1FTdHJpbmdMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb250ZXh0TWVudShR
V2ViUGFnZUFkYXB0ZXIqIHBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2UtPm1lbnVBY3Rpb25zQXNU
ZXh0KCk7Cit9CisKK2Jvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJkUGFydHlDb29r
aWVQb2xpY3lBbGxvd3MoUVdlYlBhZ2VBZGFwdGVyICphZGFwdGVyLCBjb25zdCBRVXJsJiB1cmws
IGNvbnN0IFFVcmwmIGZpcnN0UGFydHlVcmwpCit7CisgICAgUGFnZSogY29yZVBhZ2UgPSBhZGFw
dGVyLT5wYWdlOworICAgIHJldHVybiB0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhjb3Jl
UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSwgdXJsLCBmaXJz
dFBhcnR5VXJsKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZW5hYmxlTW9j
a1Njcm9sbGJhcnMoKQoreworICAgIFNldHRpbmdzOjpzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQo
dHJ1ZSk7Cit9CisKK1FVcmwgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om1lZGlhQ29udGVudFVy
bEJ5RWxlbWVudElkKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIGVs
ZW1lbnRJZCkKK3sKKyAgICBRVXJsIHJlczsKKworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKFFU
X01VTFRJTUVESUEpCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGFkYXB0ZXItPmZyYW1lOworICAg
IGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gcmVzOworCisgICAgRG9jdW1lbnQqIGRv
YyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAgICAgcmV0dXJu
IHJlczsKKworICAgIE5vZGUqIGNvcmVOb2RlID0gZG9jLT5nZXRFbGVtZW50QnlJZChlbGVtZW50
SWQpOworICAgIGlmICghY29yZU5vZGUpCisgICAgICAgIHJldHVybiByZXM7CisKKyAgICBIVE1M
VmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQgPSB0b0hUTUxWaWRlb0VsZW1lbnQoY29yZU5vZGUp
OworICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSA9IHZpZGVvRWxlbWVudC0+cGxhdGZv
cm1NZWRpYSgpOworICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6
UXRNZWRpYVBsYXllclR5cGUpCisgICAgICAgIHJldHVybiByZXM7CisKKyAgICBNZWRpYVBsYXll
clByaXZhdGVRdCogbWVkaWFQbGF5ZXJRdCA9IHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0
ZVF0Kj4ocGxhdGZvcm1NZWRpYS5tZWRpYS5xdE1lZGlhUGxheWVyKTsKKyAgICBpZiAobWVkaWFQ
bGF5ZXJRdCAmJiBtZWRpYVBsYXllclF0LT5tZWRpYVBsYXllcigpKQorICAgICAgICByZXMgPSBt
ZWRpYVBsYXllclF0LT5tZWRpYVBsYXllcigpLT5tZWRpYSgpLmNhbm9uaWNhbFVybCgpOworI2Vu
ZGlmCisKKyAgICByZXR1cm4gcmVzOworfQorCisvLyBBUEkgQ2FuZGlkYXRlPwordm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QWx0ZXJuYXRlSHRtbChRV2ViRnJhbWVBZGFwdGVyKiBh
ZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsLCBjb25zdCBR
VXJsJiBmYWlsaW5nVXJsKQoreworICAgIFVSTCBrdXJsKGJhc2VVcmwpOworICAgIFdlYkNvcmU6
OkZyYW1lKiBjb3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChrdXJsKTsKKyAgICBjb25zdCBRQnl0ZUFycmF5IHV0ZjggPSBodG1s
LnRvVXRmOCgpOworICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguY29uc3REYXRhKCksIHV0ZjgubGVu
Z3RoKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGRhdGEs
IFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpTdHJpbmcoInV0Zi04IiksIGZhaWxpbmdV
cmwpOworICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1
ZXN0KGNvcmVGcmFtZSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpKTsKK30KKwordm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29uZmlybUNvbXBvc2l0aW9uKFFXZWJQYWdlQWRhcHRlciAq
YWRhcHRlciwgY29uc3QgY2hhciogdGV4dCkKK3sKKyAgICBGcmFtZSYgZnJhbWUgPSBhZGFwdGVy
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgIEVk
aXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9z
aXRpb24oKSAmJiAhdGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVkaXRvci5oYXND
b21wb3NpdGlvbigpKSB7CisgICAgICAgIGlmICh0ZXh0KQorICAgICAgICAgICAgZWRpdG9yLmNv
bmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRleHQpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIH0gZWxzZQorICAg
ICAgICBlZGl0b3IuaW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKK30KKwor
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KFFXZWJG
cmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9
IGFkYXB0ZXItPmZyYW1lOworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93
KGNvcmVGcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIFFfQVNTRVJUKHdpbmRv
dyk7CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOwor
ICAgIFFfQVNTRVJUKGV4ZWMpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisK
KyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IHRvUmVmKGV4ZWMpOworICAgIFdlYkNvcmVUZXN0
U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOworfQorCit2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoSlNDb250ZXh0UmVmIGNv
bnRleHQpCit7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjppbmplY3RJbnRlcm5hbHNPYmplY3Qo
Y29udGV4dCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0SW50ZXJu
YWxzT2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCit7CisgICAgV2ViQ29yZTo6RnJh
bWUqIGNvcmVGcmFtZSA9IGFkYXB0ZXItPmZyYW1lOworICAgIEpTRE9NV2luZG93KiB3aW5kb3cg
PSB0b0pTRE9NV2luZG93KGNvcmVGcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAg
IFFfQVNTRVJUKHdpbmRvdyk7CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+
Z2xvYmFsRXhlYygpOworICAgIFFfQVNTRVJUKGV4ZWMpOworICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CisKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IHRvUmVmKGV4ZWMpOwor
ICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6cmVzZXRJbnRlcm5hbHNPYmplY3QoY29udGV4dCk7Cit9
CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0KEpT
Q29udGV4dFJlZiBjb250ZXh0KQoreworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6cmVzZXRJbnRl
cm5hbHNPYmplY3QoY29udGV4dCk7Cit9CisKK1FJbWFnZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6cGFpbnRQYWdlc1dpdGhCb3VuZGFyaWVzKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCit7
CisgICAgRnJhbWUqIGZyYW1lID0gYWRhcHRlci0+ZnJhbWU7CisgICAgUHJpbnRDb250ZXh0IHBy
aW50Q29udGV4dChmcmFtZSk7CisKKyAgICBRUmVjdCByZWN0ID0gZnJhbWUtPnZpZXcoKS0+ZnJh
bWVSZWN0KCk7CisKKyAgICBJbnRSZWN0IHBhZ2VSZWN0KDAsIDAsIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CisKKyAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSwg
cGFnZVJlY3QuaGVpZ2h0KCkpOworICAgIGZsb2F0IHBhZ2VIZWlnaHQgPSAwOworICAgIHByaW50
Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzKHBhZ2VSZWN0LCAvKiBoZWFkZXJIZWlnaHQgKi8gMCwg
LyogZm9vdGVySGVpZ2h0ICovIDAsIC8qIHVzZXJTY2FsZUZhY3RvciAqLyAxLjAsIHBhZ2VIZWln
aHQpOworCisgICAgUVBhaW50ZXIgcGFpbnRlcjsKKyAgICBpbnQgcGFnZUNvdW50ID0gcHJpbnRD
b250ZXh0LnBhZ2VDb3VudCgpOworICAgIC8vIHBhZ2VzICogcGFnZUhlaWdodCBhbmQgMXB4IGxp
bmUgYmV0d2VlbiBlYWNoIHBhZ2UKKyAgICBpbnQgdG90YWxIZWlnaHQgPSBwYWdlQ291bnQgKiAo
cGFnZVJlY3QuaGVpZ2h0KCkgKyAxKSAtIDE7CisgICAgUUltYWdlIGltYWdlKHBhZ2VSZWN0Lndp
ZHRoKCksIHRvdGFsSGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIGltYWdlLmZp
bGwoUXQ6OndoaXRlKTsKKyAgICBwYWludGVyLmJlZ2luKCZpbWFnZSk7CisKKyAgICBHcmFwaGlj
c0NvbnRleHQgY3R4KCZwYWludGVyKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHByaW50Q29u
dGV4dC5wYWdlQ291bnQoKTsgKytpKSB7CisgICAgICAgIHByaW50Q29udGV4dC5zcG9vbFBhZ2Uo
Y3R4LCBpLCBwYWdlUmVjdC53aWR0aCgpKTsKKyAgICAgICAgLy8gdHJhbnNsYXRlIHRvIG5leHQg
cGFnZSBjb29yZGluYXRlcworICAgICAgICBjdHgudHJhbnNsYXRlKDAsIHBhZ2VSZWN0LmhlaWdo
dCgpICsgMSk7CisKKyAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBuZXh0IHBhZ2UsIGRyYXcgYSBi
bHVlIGxpbmUgYmV0d2VlbiB0aGVzZSB0d28KKyAgICAgICAgaWYgKGkgKyAxIDwgcHJpbnRDb250
ZXh0LnBhZ2VDb3VudCgpKSB7CisgICAgICAgICAgICBjdHguc2F2ZSgpOworICAgICAgICAgICAg
Y3R4LnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDAsIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgY3R4LnNldEZpbGxDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGN0eC5kcmF3TGluZShJbnRQb2ludCgwLCAtMSks
IEludFBvaW50KHBhZ2VSZWN0LndpZHRoKCksIC0xKSk7CisgICAgICAgICAgICBjdHgucmVzdG9y
ZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcGFpbnRlci5lbmQoKTsKKyAgICBwcmludENv
bnRleHQuZW5kKCk7CisKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldFRyYWNrUmVwYWludFJlY3RzKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0
ZXIsIGJvb2wgZW5hYmxlKQoreworICAgIGFkYXB0ZXItPmZyYW1lLT52aWV3KCktPnNldFRyYWNr
c1JlcGFpbnRzKGVuYWJsZSk7Cit9CisKK2Jvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRy
YWNrUmVwYWludFJlY3RzKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCit7CisgICAgcmV0dXJu
IGFkYXB0ZXItPmZyYW1lLT52aWV3KCktPmlzVHJhY2tpbmdSZXBhaW50cygpOworfQorCit2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnZXRUcmFja2VkUmVwYWludFJlY3RzKFFXZWJGcmFt
ZUFkYXB0ZXIqIGFkYXB0ZXIsIFFWZWN0b3I8UVJlY3Q+JiByZXN1bHQpCit7CisgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGFkYXB0ZXItPmZyYW1lOworICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
cmVjdHMgPSBjb3JlRnJhbWUtPnZpZXcoKS0+dHJhY2tlZFJlcGFpbnRSZWN0cygpOworICAgIHJl
c3VsdC5yZXNpemUocmVjdHMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
Y3RzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RzW2ldKTsKK30KKwor
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChi
b29sIGVuYWJsZWQpCit7CisjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKKyAgICBXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQoZW5hYmxlZCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
KyNlbmRpZgorfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTaG91bGRVc2VG
b250U21vb3RoaW5nKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBXZWJDb3JlOjpGb250OjpzZXRTaG91
bGRVc2VTbW9vdGhpbmcoZW5hYmxlZCk7Cit9CisKK1FTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmZyYW1lUmVuZGVyVHJlZUR1bXAoUVdlYkZyYW1lQWRhcHRlciogYWRhcHRlcikKK3sK
KyAgICBpZiAoYWRhcHRlci0+ZnJhbWUtPnZpZXcoKSAmJiBhZGFwdGVyLT5mcmFtZS0+dmlldygp
LT5sYXlvdXRQZW5kaW5nKCkpCisgICAgICAgIGFkYXB0ZXItPmZyYW1lLT52aWV3KCktPmxheW91
dCgpOworCisgICAgcmV0dXJuIGV4dGVybmFsUmVwcmVzZW50YXRpb24oYWRhcHRlci0+ZnJhbWUp
OworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVhck5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKCkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+Y2xlYXJDYWNoZWRQZXJtaXNzaW9ucygpOwor
I2VuZGlmCit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRpc2FibGVEZWZhdWx0
VHlwZXNldHRpbmdGZWF0dXJlcygpCit7CisgICAgV2ViQ29yZTo6Rm9udDo6c2V0RGVmYXVsdFR5
cGVzZXR0aW5nRmVhdHVyZXMoMCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnJlc2V0UGFnZVZpc2liaWxpdHkoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyKQoreworI2lmIEVO
QUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQorICAgIC8vIFNldCB2aXNpYmlsaXR5IHdpdGhvdXQg
ZW1pdHRpbmcgYW4gZXZlbnQuCisgICAgYWRhcHRlci0+cGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRl
KFBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLCB0cnVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGFkYXB0ZXIpOworI2VuZGlmCit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmdldEpTV2luZG93T2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIEpTQ29udGV4dFJl
ZiogY29udGV4dCwgSlNPYmplY3RSZWYqIG9iamVjdCkKK3sKKyAgICBKU0RPTVdpbmRvdyogd2lu
ZG93ID0gdG9KU0RPTVdpbmRvdyhhZGFwdGVyLT5mcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpOworICAgICpvYmplY3QgPSB0b1JlZih3aW5kb3cpOworICAgICpjb250ZXh0ID0gdG9SZWYo
d2luZG93LT5nbG9iYWxFeGVjKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzhkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTAs
MCArMSwyMTMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9i
ZXJ0QHJvYmVydGhvZ2FuLm5ldD4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdo
dCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0X2gKKyNkZWZpbmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXRfaAorCisjaW5jbHVkZSAi
cXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llSmFyPgorI2luY2x1ZGUg
PFFWYXJpYW50PgorI2luY2x1ZGUgPFFWZWN0b3I+CisKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNWYWx1
ZSogSlNPYmplY3RSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHQ7CitjbGFz
cyBOb2RlOworfQorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBCaW5kaW5ncyB7CitjbGFz
cyBRdERSVE5vZGVSdW50aW1lOworfQorfQorCitjbGFzcyBRV2ViRWxlbWVudDsKK2NsYXNzIFFX
ZWJGcmFtZTsKK2NsYXNzIFFXZWJGcmFtZUFkYXB0ZXI7CitjbGFzcyBRV2ViUGFnZUFkYXB0ZXI7
CitjbGFzcyBRV2ViSGlzdG9yeUl0ZW07CitjbGFzcyBRV2ViU2NyaXB0V29ybGQ7CisKK1FUX0JF
R0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK1FUX0VORF9OQU1FU1BBQ0UKKworZXh0ZXJuIFFN
YXA8aW50LCBRV2ViU2NyaXB0V29ybGQqPiBtX3dvcmxkTWFwOworCisvLyBVc2VkIHRvIHBhc3Mg
V2ViQ29yZTo6Tm9kZSdzIHRvIGxheW91dCB0ZXN0cyB1c2luZyBUZXN0UnVubmVyCitjbGFzcyBR
V0VCS0lUX0VYUE9SVCBRRFJUTm9kZSB7CitwdWJsaWM6CisgICAgUURSVE5vZGUoKTsKKyAgICBR
RFJUTm9kZShjb25zdCBRRFJUTm9kZSYpOworICAgIFFEUlROb2RlICZvcGVyYXRvcj0oY29uc3Qg
UURSVE5vZGUmKTsKKyAgICB+UURSVE5vZGUoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBR
RFJUTm9kZShXZWJDb3JlOjpOb2RlKik7CisKKyAgICBmcmllbmQgY2xhc3MgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ7CisKKyAgICBmcmllbmQgY2xhc3MgUXREUlROb2RlUnVudGltZTsKKworICAg
IFdlYkNvcmU6Ok5vZGUqIG1fbm9kZTsKK307CisKK1FfREVDTEFSRV9NRVRBVFlQRShRRFJUTm9k
ZSkKKworY2xhc3MgUXREUlROb2RlUnVudGltZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFFEUlRO
b2RlIGNyZWF0ZShXZWJDb3JlOjpOb2RlKik7CisgICAgc3RhdGljIFdlYkNvcmU6Ok5vZGUqIGdl
dChjb25zdCBRRFJUTm9kZSYpOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKK307CisK
K2NsYXNzIFFXRUJLSVRfRVhQT1JUIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0IHsKKworcHVibGlj
OgorCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQoKTsKKyAgICB+RHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQoKTsKKworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKworICAgIHN0YXRp
YyB2b2lkIGV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShRV2ViUGFnZUFkYXB0ZXIqLCBjb25zdCBR
U3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CisgICAgc3RhdGljIGJvb2wgaXND
b21tYW5kRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIqLCBjb25zdCBRU3RyaW5nJiBuYW1lKTsKKyAg
ICBzdGF0aWMgUVZhcmlhbnRMaXN0IHNlbGVjdGVkUmFuZ2UoUVdlYlBhZ2VBZGFwdGVyKik7Cisg
ICAgc3RhdGljIFFWYXJpYW50TGlzdCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShRV2ViUGFn
ZUFkYXB0ZXIqLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGNv
bmZpcm1Db21wb3NpdGlvbihRV2ViUGFnZUFkYXB0ZXIqLCBjb25zdCBjaGFyKiB0ZXh0KTsKKwor
ICAgIHN0YXRpYyB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUo
Ym9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSk7CisgICAgc3RhdGljIHZvaWQg
c2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIqLCBib29sKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIqLCBib29s
IHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChR
V2ViUGFnZUFkYXB0ZXIqLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXREdW1wUmVuZGVyVHJl
ZU1vZGVFbmFibGVkKGJvb2wpOworCisgICAgc3RhdGljIHZvaWQgZ2FyYmFnZUNvbGxlY3RvckNv
bGxlY3QoKTsKKyAgICBzdGF0aWMgdm9pZCBnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJu
YXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSk7CisgICAgc3RhdGljIHZvaWQgc2V0VmFsdWVG
b3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOworICAgIHN0
YXRpYyBpbnQgamF2YVNjcmlwdE9iamVjdHNDb3VudCgpOworICAgIHN0YXRpYyB2b2lkIGNsZWFy
U2NyaXB0V29ybGRzKCk7CisgICAgc3RhdGljIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQoUVdlYkZyYW1lQWRhcHRlciosIGludCB3b3JsZElELCBjb25zdCBRU3RyaW5nJiBzY3Jp
cHQpOworCisgICAgc3RhdGljIHZvaWQgd2ViSW5zcGVjdG9yRXhlY3V0ZVNjcmlwdChRV2ViUGFn
ZUFkYXB0ZXIqLCBsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICBzdGF0
aWMgdm9pZCB3ZWJJbnNwZWN0b3JTaG93KFFXZWJQYWdlQWRhcHRlciopOworICAgIHN0YXRpYyB2
b2lkIHdlYkluc3BlY3RvckNsb3NlKFFXZWJQYWdlQWRhcHRlciopOworCisgICAgc3RhdGljIFFT
dHJpbmcgd2ViUGFnZUdyb3VwTmFtZShRV2ViUGFnZUFkYXB0ZXIqKTsKKyAgICBzdGF0aWMgdm9p
ZCB3ZWJQYWdlU2V0R3JvdXBOYW1lKFFXZWJQYWdlQWRhcHRlciosIGNvbnN0IFFTdHJpbmcmIGdy
b3VwTmFtZSk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lQWRhcHRl
ciopOworICAgIHN0YXRpYyB2b2lkIG92ZXJ3cml0ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CisgICAg
c3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFFXZWJGcmFtZUFkYXB0ZXIqKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRXaW5kb3dzQmVoYXZpb3JBc0VkaXRpbmdCZWhhdmlvcihRV2ViUGFnZUFk
YXB0ZXIqKTsKKworICAgIHN0YXRpYyB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMoKTsK
KworICAgIHN0YXRpYyB2b2lkIHdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmlu
ZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29u
c3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3Rv
Y29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0
cygpOworCisgICAgc3RhdGljIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKFFXZWJQYWdl
QWRhcHRlciosIGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJv
dmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1h
KTsKKworICAgIHN0YXRpYyB2b2lkIHJlc2V0R2VvbG9jYXRpb25Nb2NrKFFXZWJQYWdlQWRhcHRl
ciopOworICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oUVdlYlBh
Z2VBZGFwdGVyKiwgYm9vbCBhbGxvd2VkKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbihRV2ViUGFnZUFkYXB0ZXIqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFFXZWJQYWdlQWRhcHRlciosIGNvbnN0IFFT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMoUVdlYlBhZ2VBZGFwdGVyKik7CisKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wRnJhbWVMb2FkZXIoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgZHVtcFByb2dyZXNzRmlu
aXNoZWRDYWxsYmFjayhib29sKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wVXNlckdlc3R1cmVJbkZy
YW1lTG9hZGVyKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoYm9vbCk7CisgICAgc3RhdGljIHZvaWQgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMo
Ym9vbCk7CisgICAgc3RhdGljIHZvaWQgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc1BhdGgoY29u
c3QgUVN0cmluZyYgcGF0aCk7CisgICAgc3RhdGljIHZvaWQgZHVtcFdpbGxDYWNoZVJlc3BvbnNl
Q2FsbGJhY2tzKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsT25SZWRpcmVjdChib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChib29sKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcnMoY29uc3QgUVN0cmluZ0xpc3QmKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wSGlz
dG9yeUNhbGxiYWNrcyhib29sKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2tzKGJvb2wpOworCisgICAgc3RhdGljIHZvaWQgc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRh
TG9hZChib29sKTsKKworICAgIHN0YXRpYyB2b2lkIGR1bXBFZGl0aW5nQ2FsbGJhY2tzKGJvb2wp
OworICAgIHN0YXRpYyB2b2lkIGR1bXBTZXRBY2NlcHRzRWRpdGluZyhib29sKTsKKworICAgIHN0
YXRpYyB2b2lkIGR1bXBOb3RpZmljYXRpb24oYm9vbCk7CisgICAgc3RhdGljIFFTdHJpbmcgdmll
d3BvcnRBc1RleHQoUVdlYlBhZ2VBZGFwdGVyKiwgaW50IGRldmljZURQSSwgY29uc3QgUVNpemUm
IGRldmljZVNpemUsIGNvbnN0IFFTaXplJiBhdmFpbGFibGVTaXplKTsKKworICAgIHN0YXRpYyBR
TWFwPFFTdHJpbmcsIFFXZWJIaXN0b3J5SXRlbT4gZ2V0Q2hpbGRIaXN0b3J5SXRlbXMoY29uc3Qg
UVdlYkhpc3RvcnlJdGVtJik7CisgICAgc3RhdGljIGJvb2wgaXNUYXJnZXRJdGVtKGNvbnN0IFFX
ZWJIaXN0b3J5SXRlbSYpOworICAgIHN0YXRpYyBRU3RyaW5nIGhpc3RvcnlJdGVtVGFyZ2V0KGNv
bnN0IFFXZWJIaXN0b3J5SXRlbSYpOworCisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ2xvc2UoUVdl
YkZyYW1lQWRhcHRlciopOworCisgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tUG9saWN5RGVsZWdh
dGUoYm9vbCBlbmFibGVkLCBib29sIHBlcm1pc3NpdmUpOworCisgICAgc3RhdGljIHZvaWQgYWRk
VXNlclN0eWxlU2hlZXQoUVdlYlBhZ2VBZGFwdGVyKiwgY29uc3QgUVN0cmluZyYgc291cmNlQ29k
ZSk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKFFXZWJQYWdlQWRhcHRl
ciopOworICAgIHN0YXRpYyB2b2lkIHNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrKGNv
bnN0IFFTdHJpbmcmIHRpdGxlKTsKKworICAgIHN0YXRpYyB2b2lkIHNjYWxlUGFnZUJ5KFFXZWJG
cmFtZUFkYXB0ZXIqLCBmbG9hdCBzY2FsZSwgY29uc3QgUVBvaW50JiBvcmlnaW4pOworCisgICAg
c3RhdGljIFFTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZShRV2ViRnJhbWVBZGFwdGVyKik7CisgICAg
c3RhdGljIHZvaWQgY2xlYXJPcGVuZXIoUVdlYkZyYW1lQWRhcHRlciopOworICAgIHN0YXRpYyB2
b2lkIGFkZFVSTFRvUmVkaXJlY3QoY29uc3QgUVN0cmluZyYgb3JpZ2luLCBjb25zdCBRU3RyaW5n
JiBkZXN0aW5hdGlvbik7CisgICAgc3RhdGljIFFTdHJpbmdMaXN0IGNvbnRleHRNZW51KFFXZWJQ
YWdlQWRhcHRlciopOworCisgICAgc3RhdGljIFFVcmwgbWVkaWFDb250ZW50VXJsQnlFbGVtZW50
SWQoUVdlYkZyYW1lQWRhcHRlciosIGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7CisgICAgc3Rh
dGljIHZvaWQgc2V0QWx0ZXJuYXRlSHRtbChRV2ViRnJhbWVBZGFwdGVyKiwgY29uc3QgUVN0cmlu
ZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCwgY29uc3QgUVVybCYgZmFpbGluZ1VybCk7CisK
KyAgICBzdGF0aWMgdm9pZCBpbmplY3RJbnRlcm5hbHNPYmplY3QoUVdlYkZyYW1lQWRhcHRlciop
OworICAgIHN0YXRpYyB2b2lkIGluamVjdEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYpOwor
ICAgIHN0YXRpYyB2b2lkIHJlc2V0SW50ZXJuYWxzT2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqKTsK
KyAgICBzdGF0aWMgdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYpOworCisg
ICAgc3RhdGljIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoUVdlYlBh
Z2VBZGFwdGVyKiwgYm9vbCk7CisKKyAgICBzdGF0aWMgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFFX
ZWJQYWdlQWRhcHRlciosIGJvb2wgZmxhZyk7CisgICAgc3RhdGljIHZvaWQgZ29CYWNrKFFXZWJQ
YWdlQWRhcHRlciopOworCisgICAgc3RhdGljIGJvb2wgdGhpcmRQYXJ0eUNvb2tpZVBvbGljeUFs
bG93cyhRV2ViUGFnZUFkYXB0ZXIqLCBjb25zdCBRVXJsJiwgY29uc3QgUVVybCYgZmlyc3RQYXJ0
eVVybCk7CisKKyAgICBzdGF0aWMgdm9pZCBlbmFibGVNb2NrU2Nyb2xsYmFycygpOworCisgICAg
c3RhdGljIFFJbWFnZSBwYWludFBhZ2VzV2l0aEJvdW5kYXJpZXMoUVdlYkZyYW1lQWRhcHRlciop
OworCisgICAgc3RhdGljIHZvaWQgc2V0VHJhY2tSZXBhaW50UmVjdHMoUVdlYkZyYW1lQWRhcHRl
ciosIGJvb2wgZW5hYmxlKTsKKyAgICBzdGF0aWMgYm9vbCB0cmFja1JlcGFpbnRSZWN0cyhRV2Vi
RnJhbWVBZGFwdGVyKik7CisgICAgc3RhdGljIHZvaWQgZ2V0VHJhY2tlZFJlcGFpbnRSZWN0cyhR
V2ViRnJhbWVBZGFwdGVyKiwgUVZlY3RvcjxRUmVjdD4mIHJlc3VsdCk7CisKKyAgICBzdGF0aWMg
dm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wpOworICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCk7CisKKyAgICBzdGF0aWMgUVN0cmluZyBmcmFt
ZVJlbmRlclRyZWVEdW1wKFFXZWJGcmFtZUFkYXB0ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVh
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CisKKyAgICBzdGF0aWMgdm9pZCBkaXNhYmxlRGVm
YXVsdFR5cGVzZXR0aW5nRmVhdHVyZXMoKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldFBhZ2VWaXNp
YmlsaXR5KFFXZWJQYWdlQWRhcHRlciopOworCisgICAgc3RhdGljIHZvaWQgZ2V0SlNXaW5kb3dP
YmplY3QoUVdlYkZyYW1lQWRhcHRlciosIEpTQ29udGV4dFJlZiosIEpTT2JqZWN0UmVmKik7Cit9
OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjliNDM5
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwCkBAIC0wLDAgKzEsNjUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGFzdGVib2FyZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorI2lu
Y2x1ZGUgIlFXZWJQYWdlQWRhcHRlci5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisj
aW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNwYXRp
YWxOYXZpZ2F0aW9uLmgiCisjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgorI2luY2x1ZGUg
IldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisjaW5jbHVkZSAicWd1aWFwcGxpY2F0aW9uLmgiCisK
KyNpbmNsdWRlIDxRQ2xpcGJvYXJkPgorI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNpbmNsdWRlIDxR
S2V5U2VxdWVuY2U+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisKKworc3RhdGljIFFTdHJpbmcgZHVtcFBhdGgoV2ViQ29yZTo6Tm9kZSAqbm9kZSkKK3sKKyAg
ICBRU3RyaW5nIHN0ciA9IG5vZGUtPm5vZGVOYW1lKCk7CisKKyAgICBXZWJDb3JlOjpOb2RlICpw
YXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgd2hpbGUgKHBhcmVudCkgeworICAgICAg
ICBzdHIuYXBwZW5kKFFMYXRpbjFTdHJpbmcoIiA+ICIpKTsKKyAgICAgICAgc3RyLmFwcGVuZChw
YXJlbnQtPm5vZGVOYW1lKCkpOworICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUo
KTsKKyAgICB9CisgICAgcmV0dXJuIHN0cjsKK30KKworc3RhdGljIFFTdHJpbmcgZHVtcFJhbmdl
KFdlYkNvcmU6OlJhbmdlICpyYW5nZSkKK3sKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1
cm4gUUxhdGluMVN0cmluZygiKG51bGwpIik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBj
b2RlOworCisgICAgUVN0cmluZyBzdHIgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJyYW5nZSBmcm9t
ICUxIG9mICUyIHRvICUzIG9mICU0IikKKyAgICAgICAgLmFyZyhyYW5nZS0+c3RhcnRPZmZzZXQo
Y29kZSkpLmFyZyhkdW1wUGF0aChyYW5nZS0+c3RhcnRDb250YWluZXIoY29kZSkpKQorICAgICAg
ICAuYXJnKHJhbmdlLT5lbmRPZmZzZXQoY29kZSkpLmFyZyhkdW1wUGF0aChyYW5nZS0+ZW5kQ29u
dGFpbmVyKGNvZGUpKSk7CisKKyAgICByZXR1cm4gc3RyOworfQorCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBFZGl0b3JDbGllbnRRdDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MgPSBmYWxz
ZTsKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmFjY2VwdHNFZGl0aW5nID0gdHJ1ZTsKKwordXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKKworYm9vbCBFZGl0b3JDbGllbnRRdDo6c2hvdWxkRGVsZXRl
UmFuZ2UoUmFuZ2UqIHJhbmdlKQoreworICAgIGlmIChkdW1wRWRpdGluZ0NhbGxiYWNrcykKKyAg
ICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTolc1xu
IiwgZHVtcFJhbmdlKHJhbmdlKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKQoreworICAgIHJldHVybiBtX3RleHRDaGVja2VyQ2xpZW50LmlzQ29udGlub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gbV90ZXh0Q2hlY2tlckNsaWVudC5p
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKK30KKworaW50IEVkaXRvckNsaWVudFF0OjpzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgRWRpdG9y
Q2xpZW50UXQ6OnNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCit7Cisg
ICAgaWYgKGR1bXBFZGl0aW5nQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIkVESVRJTkcgREVM
RUdBVEU6IHNob3VsZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6JXNcbiIsIGR1bXBSYW5nZShyYW5n
ZSkudG9VdGY4KCkuY29uc3REYXRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVk
aXRvckNsaWVudFF0OjpzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdlKiByYW5nZSkKK3sK
KyAgICBpZiAoZHVtcEVkaXRpbmdDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiRURJVElORyBE
RUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFuZ2U6JXNcbiIsIGR1bXBSYW5nZShyYW5n
ZSkudG9VdGY4KCkuY29uc3REYXRhKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEVk
aXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBSYW5n
ZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCit7CisgICAgaWYgKGR1bXBFZGl0
aW5nQ2FsbGJhY2tzKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICppbnNlcnRhY3Rpb25z
dHJpbmdbXSA9IHsKKyAgICAgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uVHlwZWQiLAorICAg
ICAgICAgICAgIldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQiLAorICAgICAgICAgICAgIldlYlZp
ZXdJbnNlcnRBY3Rpb25Ecm9wcGVkIiwKKyAgICAgICAgfTsKKworICAgICAgICBwcmludGYoIkVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6JXMgcmVwbGFjaW5nRE9NUmFuZ2U6JXMg
Z2l2ZW5BY3Rpb246JXNcbiIsCisgICAgICAgICAgICBRU3RyaW5nKHN0cmluZykudG9VdGY4KCku
Y29uc3REYXRhKCksIGR1bXBSYW5nZShyYW5nZSkudG9VdGY4KCkuY29uc3REYXRhKCksIGluc2Vy
dGFjdGlvbnN0cmluZ1thY3Rpb25dKTsKKyAgICB9CisgICAgcmV0dXJuIGFjY2VwdHNFZGl0aW5n
OworfQorCitib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFJh
bmdlKiBjdXJyZW50UmFuZ2UsIFJhbmdlKiBwcm9wb3NlZFJhbmdlLCBFQWZmaW5pdHkgc2VsZWN0
aW9uQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpCit7CisgICAgaWYgKGR1bXBFZGl0aW5n
Q2FsbGJhY2tzKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICphZmZpbml0eXN0cmluZ1td
ID0geworICAgICAgICAgICAgIk5TU2VsZWN0aW9uQWZmaW5pdHlVcHN0cmVhbSIsCisgICAgICAg
ICAgICAiTlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0iCisgICAgICAgIH07CisgICAgICAg
IHN0YXRpYyBjb25zdCBjaGFyICpib29sc3RyaW5nW10gPSB7CisgICAgICAgICAgICAiRkFMU0Ui
LAorICAgICAgICAgICAgIlRSVUUiCisgICAgICAgIH07CisKKyAgICAgICAgcHJpbnRmKCJFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOiVzIHRvRE9NUmFuZ2U6
JXMgYWZmaW5pdHk6JXMgc3RpbGxTZWxlY3Rpbmc6JXNcbiIsCisgICAgICAgICAgICBkdW1wUmFu
Z2UoY3VycmVudFJhbmdlKS50b1V0ZjgoKS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgIGR1bXBS
YW5nZShwcm9wb3NlZFJhbmdlKS50b1V0ZjgoKS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgIGFm
ZmluaXR5c3RyaW5nW3NlbGVjdGlvbkFmZmluaXR5XSwgYm9vbHN0cmluZ1tzdGlsbFNlbGVjdGlu
Z10pOworICAgIH0KKyAgICByZXR1cm4gYWNjZXB0c0VkaXRpbmc7Cit9CisKK2Jvb2wgRWRpdG9y
Q2xpZW50UXQ6OnNob3VsZEFwcGx5U3R5bGUoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUsIFdlYkNvcmU6OlJhbmdlKiByYW5nZSkKK3sKKyAgICBpZiAoZHVtcEVkaXRpbmdDYWxsYmFj
a3MpCisgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTol
cyB0b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiwKKyAgICAgICAgICAgIFFTdHJpbmcoc3R5bGUt
PmFzVGV4dCgpKS50b1V0ZjgoKS5jb25zdERhdGEoKSwgZHVtcFJhbmdlKHJhbmdlKS50b1V0Zjgo
KS5jb25zdERhdGEoKSk7CisgICAgcmV0dXJuIGFjY2VwdHNFZGl0aW5nOworfQorCitib29sIEVk
aXRvckNsaWVudFF0OjpzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSos
IFdlYkNvcmU6OlJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpkaWRCZWdpbkVkaXRpbmcoKQoreworICAg
IGlmIChkdW1wRWRpdGluZ0NhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmlj
YXRpb25cbiIpOworICAgIG1fZWRpdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50
UXQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpCit7CisgICAgaWYgKGR1bXBFZGl0aW5nQ2Fs
bGJhY2tzKQorICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvblxuIik7CisKKyAgICBtX3BhZ2UtPnJlc3Bv
bmRUb0NoYW5nZWRDb250ZW50cygpOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoZHVtcEVkaXRpbmdD
YWxsYmFja3MpCisgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uXG4iKTsK
Ky8vICAgICBjb25zdCBTZWxlY3Rpb24gJnNlbGVjdGlvbiA9IG1fcGFnZS0+ZC0+cGFnZS0+c2Vs
ZWN0aW9uKCk7CisvLyAgICAgY2hhciBidWZmZXJbMTAyNF07CisvLyAgICAgc2VsZWN0aW9uLmZv
cm1hdEZvckRlYnVnZ2VyKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworLy8gICAgIHByaW50Zigi
JXNcbiIsIGJ1ZmZlcik7CisKKyAgICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBm
cmFtZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JHbG9iYWxTZWxlY3Rpb24oKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZyYW1lLT5lZGl0b3IoKS5jYW5TbWFydENvcHlPckRl
bGV0ZSgpLCBmcmFtZSk7CisKKyAgICBtX3BhZ2UtPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24o
KTsKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNo
YW5nZSgpKQorICAgICAgICBlbWl0IG1fcGFnZS0+bWljcm9Gb2N1c0NoYW5nZWQoKTsKK30KKwor
dm9pZCBFZGl0b3JDbGllbnRRdDo6ZGlkRW5kRWRpdGluZygpCit7CisgICAgaWYgKGR1bXBFZGl0
aW5nQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIkVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uXG4iKTsKKyAgICBt
X2VkaXRpbmcgPSBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6ZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKQoreworfQorCit2b2lkIEVkaXRvckNsaWVudFF0Ojp3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKQoreworfQorCit2b2lkIEVkaXRvckNsaWVu
dFF0OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdlKiwgVmVjdG9yPFN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYpCit7Cit9CisKK2Jvb2wgRWRpdG9y
Q2xpZW50UXQ6OnNlbGVjdFdvcmRCZWZvcmVNZW51RXZlbnQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdp
c3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKK3sK
KyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAobV9pblVu
ZG9SZWRvIHx8ICFmcmFtZS5lZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9u
J3QgcmVjcmVhdGUgdW5kb3MgKi8pCisgICAgICAgIHJldHVybjsKKyAgICBtX3BhZ2UtPnJlZ2lz
dGVyVW5kb1N0ZXAoc3RlcCk7CisjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCit9CisKK3ZvaWQg
RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlVuZG9TdGVwPikKK3sKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKQoreworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICByZXR1cm4gbV9wYWdl
LT5jbGVhclVuZG9TdGFjaygpOworI2VuZGlmCit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmNh
bkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCitib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0
ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVy
biBkZWZhdWx0VmFsdWU7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8oKSBjb25z
dAoreworI2lmZGVmIFFUX05PX1VORE9TVEFDSworICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisg
ICAgcmV0dXJuIG1fcGFnZS0+Y2FuVW5kbygpOworI2VuZGlmCit9CisKK2Jvb2wgRWRpdG9yQ2xp
ZW50UXQ6OmNhblJlZG8oKSBjb25zdAoreworI2lmZGVmIFFUX05PX1VORE9TVEFDSworICAgIHJl
dHVybiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIG1fcGFnZS0+Y2FuUmVkbygpOworI2VuZGlm
Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVuZG8oKQoreworI2lmbmRlZiBRVF9OT19VTkRP
U1RBQ0sKKyAgICBtX2luVW5kb1JlZG8gPSB0cnVlOworICAgIG1fcGFnZS0+dW5kbygpOworICAg
IG1faW5VbmRvUmVkbyA9IGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6
OnJlZG8oKQoreworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBtX2luVW5kb1JlZG8gPSB0
cnVlOworICAgIG1fcGFnZS0+cmVkbygpOworICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworI2Vu
ZGlmCit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9k
ZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQoreworICAgIGlmIChk
dW1wRWRpdGluZ0NhbGxiYWNrcykgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqaW5zZXJ0
YWN0aW9uc3RyaW5nW10gPSB7CisgICAgICAgICAgICAiV2ViVmlld0luc2VydEFjdGlvblR5cGVk
IiwKKyAgICAgICAgICAgICJXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkIiwKKyAgICAgICAgICAg
ICJXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZCIsCisgICAgICAgIH07CisKKyAgICAgICAgcHJp
bnRmKCJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiVzIHJlcGxhY2luZ0RPTVJh
bmdlOiVzIGdpdmVuQWN0aW9uOiVzXG4iLCBkdW1wUGF0aChub2RlKS50b1V0ZjgoKS5jb25zdERh
dGEoKSwKKyAgICAgICAgICAgIGR1bXBSYW5nZShyYW5nZSkudG9VdGY4KCkuY29uc3REYXRhKCks
IGluc2VydGFjdGlvbnN0cmluZ1thY3Rpb25dKTsKKyAgICB9CisgICAgcmV0dXJuIGFjY2VwdHNF
ZGl0aW5nOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpwYWdlRGVzdHJveWVkKCkKK3sKKyAg
ICBkZWxldGUgdGhpczsKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6c21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9wYWdlLT5wYWdlOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0Ojp0
b2dnbGVTbWFydEluc2VydERlbGV0ZSgpCit7CisgICAgUGFnZSogcGFnZSA9IG1fcGFnZS0+cGFn
ZTsKKyAgICBpZiAocGFnZSkgeworICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCghcGFnZS0+c2V0dGluZ3MoKS5zbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKSk7CisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNw
YWNlRW5hYmxlZCghcGFnZS0+c2V0dGluZ3MoKS5zZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFi
bGVkKCkpOworICAgIH0KK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gbV9wYWdlLT5wYWdlOwor
ICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBwYWdlLT5z
ZXR0aW5ncygpLnNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKK30KKwordm9pZCBF
ZGl0b3JDbGllbnRRdDo6dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKQoreworICAgIG1f
dGV4dENoZWNrZXJDbGllbnQudG9nZ2xlQ29udGlub3VzU3BlbGxDaGVja2luZygpOworfQorCit2
b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKQoreworICAgIHJldHVy
biBtX3RleHRDaGVja2VyQ2xpZW50LnRvZ2dsZUdyYW1tYXJDaGVja2luZygpOworfQorCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8
IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7Cisg
ICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIGVkaXRvckNvbW1hbmQ7Cit9
OworCisvLyBIYW5kbGUgaGVyZSBrZXkgZG93biBldmVudHMgdGhhdCBhcmUgbmVlZGVkIGZvciBz
cGF0aWFsIG5hdmlnYXRpb24gYW5kIGNhcmV0IGJyb3dzaW5nLCBvcgorLy8gYXJlIG5vdCBoYW5k
bGVkIGJ5IFFXZWJQYWdlLgorc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50cmll
c1tdID0geworICAgIC8vIE9uZXMgdGhhdCBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIFFBY3Rp
b246CisgICAgeyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQi
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAg
ICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFD
SywgICAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgLy8gT25lcyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2FyZXQg
YnJvd3Npbmc6CisgICAgeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdl
VXAiICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICB9LAorICAgIHsg
VktfTkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19ORVhULCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVQ
YWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgfSwKKyAgICAvLyBPbmVzIHRoYXQgbmVlZCBz
cGVjaWFsIGhhbmRsaW5nIGZvciBzcGF0aWFsIG5hdmlnYXRpb246CisgICAgeyBWS19MRUZULCAg
IDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ET1dO
LCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKK307CisKK2NvbnN0IGNoYXIqIGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQoY29u
c3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCkKKyAgICAgICAgcmV0dXJuICIiOworCisgICAgc3RhdGlj
IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4ga2V5RG93bkNvbW1hbmRzTWFwOworICAgIGlmIChr
ZXlEb3duQ29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7CisKKyAgICAgICAgdW5zaWduZWQgbnVtRW50
cmllcyA9IHNpemVvZihrZXlEb3duRW50cmllcykgLyBzaXplb2YoKGtleURvd25FbnRyaWVzKVsw
XSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyBpKyspCisg
ICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAuc2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlm
aWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVz
W2ldLmVkaXRvckNvbW1hbmQpOworICAgIH0KKworICAgIHVuc2lnbmVkIG1vZGlmaWVycyA9IDA7
CisgICAgaWYgKGV2ZW50LT5zaGlmdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gU2hpZnRL
ZXk7CisgICAgaWYgKGV2ZW50LT5hbHRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEFsdEtl
eTsKKyAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IEN0cmxL
ZXk7CisKKyAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZlbnQtPmtleUNvZGUo
KTsKKyAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRzTWFwLmdldChtYXBLZXkpIDog
MDsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2Fy
ZEV2ZW50KiBldmVudCkKK3sKKyAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworCisgICAgY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KiBrZXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsKKyAgICBpZiAoIWtldmVu
dCB8fCBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpLZXlVcCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgTm9kZSogc3RhcnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5zdGFydCgpLmNvbnRh
aW5lck5vZGUoKTsKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogcmVmYWN0b3IgYWxsIG9mIHRoaXMgdG8gdXNlIEFjdGlvbnMgb3Igc29tZXRoaW5nIGxp
a2UgdGhlbQorICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUoKSkgeworICAgICAgICBi
b29sIGRvU3BhdGlhbE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICAgICAgaWYgKGlzU3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkKCZmcmFtZSkpIHsKKyAgICAgICAgICAgIGlmICgha2V2ZW50LT5tb2Rp
ZmllcnMoKSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVh
bEtleUNvZGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgVktfTEVGVDoKKyAgICAgICAgICAg
ICAgICBjYXNlIFZLX1JJR0hUOgorICAgICAgICAgICAgICAgIGNhc2UgVktfVVA6CisgICAgICAg
ICAgICAgICAgY2FzZSBWS19ET1dOOgorICAgICAgICAgICAgICAgICAgICBkb1NwYXRpYWxOYXZp
Z2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworI2lmbmRlZiBRVF9OT19TSE9SVENVVAorICAgICAgICBjb25zdCBjaGFyKiBjbWQgPSBt
X3BhZ2UtPmVkaXRvckNvbW1hbmRGb3JLZXlFdmVudChrZXZlbnQtPnF0RXZlbnQoKSk7CisgICAg
ICAgIGlmIChjbWQgJiYgIWRvU3BhdGlhbE5hdmlnYXRpb24pIHsKKyAgICAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKKyAgICAgICAgICAgIC8vIHNvIHdlIGxlYXZlIGl0IHVwb24g
V2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkgKGUuZy4gVGFiIHRoYXQg
Y2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUgZ2VuZXJhdGVkCisgICAg
ICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50
ZXIpLgorICAgICAgICAgICAgaWYgKGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoY21kKS5pc1RleHRJ
bnNlcnRpb24oKQorICAgICAgICAgICAgICAgICYmIGtldmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6OlJhd0tleURvd24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb25Gb3JLZXlFdmVudChrZXZlbnQtPnF0RXZlbnQoKSk7Cisg
ICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQo
ZXZlbnQpOworICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoZnJhbWUuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0
ZSgpKSAvLyBFdmVudCBoYW5kbGVkLgorICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpID09IFZLX1RB
QikgeworICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUgVEFCIHRleHQgaW5zZXJ0aW9u
IGhlcmUuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUZXh0IGluc2VydGlvbi4KKyAgICAgICAgICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4
dCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtRXZl
bnQ6OktleURvd24gJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworCisgICAgICAgICAg
ICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChr
ZXZlbnQtPmFsdEtleSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5zZXJ0VGV4
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyNpZm5kZWYgUV9PU19NQUMKKyAg
ICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGV4Y2x1ZGUgY2hlY2tpbmcgZm9yIEFsdCBiZWNh
dXNlIGl0IGlzIGp1c3QgYSBkaWZmZXJlbnQgU2hpZnQKKyAgICAgICAgICAgICAgICBpZiAoIWtl
dmVudC0+YWx0S2V5KCkpCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5zZXJ0
VGV4dCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KSB7CisgICAgICAgICAgICAgICAgZnJhbWUuZWRp
dG9yKCkuaW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEV2ZW50IG5vdCBoYW5kbGVkLgor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTm9uIGVkaXRhYmxlIGNvbnRlbnQuCisg
ICAgaWYgKG1fcGFnZS0+cGFnZS0+c2V0dGluZ3MoKS5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKSB7
CisgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgeworICAg
ICAgICBjYXNlIFZLX0xFRlQ6CisgICAgICAgIGNhc2UgVktfUklHSFQ6CisgICAgICAgIGNhc2Ug
VktfVVA6CisgICAgICAgIGNhc2UgVktfRE9XTjoKKyAgICAgICAgY2FzZSBWS19IT01FOgorICAg
ICAgICBjYXNlIFZLX0VORDoKKyAgICAgICAgICAgIHsKKyNpZm5kZWYgUVRfTk9fU0hPUlRDVVQK
KyAgICAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb25Gb3JLZXlFdmVudChrZXZlbnQt
PnF0RXZlbnQoKSk7CisgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
IGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAorICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VE
b3duCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0g
ZWRpdG9yQ29tbWFuZEZvcktleURvd25FdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgICAgIGZyYW1lLmVkaXRv
cigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKKyAgICBp
ZiAoa2V2ZW50LT5xdEV2ZW50KCkgPT0gUUtleVNlcXVlbmNlOjpDb3B5KSB7CisgICAgICAgIG1f
cGFnZS0+dHJpZ2dlckNvcHlBY3Rpb24oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQK
K30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqKQoreworfQorCitFZGl0b3JDbGllbnRRdDo6RWRpdG9yQ2xpZW50UXQoUVdlYlBh
Z2VBZGFwdGVyKiBwYWdlQWRhcHRlcikKKyAgICA6IG1fcGFnZShwYWdlQWRhcHRlcikKKyAgICAs
IG1fZWRpdGluZyhmYWxzZSkKKyAgICAsIG1faW5VbmRvUmVkbyhmYWxzZSkKK3sKK30KKwordm9p
ZCBFZGl0b3JDbGllbnRRdDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKQorewor
ICAgIG1fZWRpdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnRleHRGaWVs
ZERpZEVuZEVkaXRpbmcoRWxlbWVudCopCit7CisgICAgbV9lZGl0aW5nID0gZmFsc2U7Cit9CisK
K3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChFbGVtZW50KikK
K3sKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50
KEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50KikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgRWRpdG9yQ2xpZW50UXQ6OnRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoRWxlbWVudCop
Cit7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVs
ZW1lbnQqKQoreworfQorCit2b2lkIEVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0
aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6dXBkYXRlU3Bl
bGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnNob3dTcGVsbGluZ1VJKGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6c3Bl
bGxpbmdVSUlzU2hvd2luZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmlzRWRpdGluZygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZWRpdGluZzsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6d2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKQoreworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpzZXRJbnB1dE1l
dGhvZFN0YXRlKGJvb2wgYWN0aXZlKQoreworICAgIFFXZWJQYWdlQ2xpZW50KiB3ZWJQYWdlQ2xp
ZW50ID0gbV9wYWdlLT5jbGllbnQuZGF0YSgpOworICAgIGlmICh3ZWJQYWdlQ2xpZW50KSB7Cisg
ICAgICAgIFF0OjpJbnB1dE1ldGhvZEhpbnRzIGhpbnRzOworCisgICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IDA7CisgICAgICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgICAgIGlm
IChmcmFtZS5kb2N1bWVudCgpICYmIGZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkp
CisgICAgICAgICAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KGZyYW1lLmRvY3VtZW50KCktPmZv
Y3VzZWRFbGVtZW50KCkpKQorICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudCA9IHRvSFRNTElu
cHV0RWxlbWVudChmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpKTsKKworICAgICAg
ICBpZiAoaW5wdXRFbGVtZW50KSB7CisgICAgICAgICAgICAvLyBTZXQgaW5wdXQgbWV0aG9kIGhp
bnRzIGZvciAibnVtYmVyIiwgInRlbCIsICJlbWFpbCIsICJ1cmwiIGFuZCAicGFzc3dvcmQiIGlu
cHV0IGVsZW1lbnRzLgorICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNUZWxlcGhvbmVG
aWVsZCgpKQorICAgICAgICAgICAgICAgIGhpbnRzIHw9IFF0OjpJbWhEaWFsYWJsZUNoYXJhY3Rl
cnNPbmx5OworICAgICAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNOdW1iZXJGaWVsZCgpKQor
ICAgICAgICAgICAgICAgIGhpbnRzIHw9IFF0OjpJbWhEaWdpdHNPbmx5OworICAgICAgICAgICAg
aWYgKGlucHV0RWxlbWVudC0+aXNFbWFpbEZpZWxkKCkpCisgICAgICAgICAgICAgICAgaGludHMg
fD0gUXQ6OkltaEVtYWlsQ2hhcmFjdGVyc09ubHk7CisgICAgICAgICAgICBpZiAoaW5wdXRFbGVt
ZW50LT5pc1VSTEZpZWxkKCkpCisgICAgICAgICAgICAgICAgaGludHMgfD0gUXQ6OkltaFVybENo
YXJhY3RlcnNPbmx5OworICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgUXQ6OldBX0lucHV0TWV0
aG9kRW5hYmxlZCBhdHRyaWJ1dGUgdHJ1ZSBhbmQgUXQ6OkltaEhpZGRlblRleHQgZmxhZworICAg
ICAgICAgICAgLy8gZm9yIHBhc3N3b3JkIGZpZWxkcy4gVGhlIFF0IHBsYXRmb3JtIGlzIHJlc3Bv
bnNpYmxlIGZvciBkZXRlcm1pbmluZyB3aGljaCB3aWRnZXQKKyAgICAgICAgICAgIC8vIHdpbGwg
cmVjZWl2ZSBpbnB1dCBtZXRob2QgZXZlbnRzIGZvciBwYXNzd29yZCBmaWVsZHMuCisgICAgICAg
ICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSkgeworICAgICAgICAgICAg
ICAgIGFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaGludHMgfD0gUXQ6OkltaEhpZGRl
blRleHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3ZWJQYWdlQ2xpZW50
LT5zZXRJbnB1dE1ldGhvZEhpbnRzKGhpbnRzKTsKKyAgICAgICAgd2ViUGFnZUNsaWVudC0+c2V0
SW5wdXRNZXRob2RFbmFibGVkKGFjdGl2ZSk7CisgICAgfQorICAgIGVtaXQgbV9wYWdlLT5taWNy
b0ZvY3VzQ2hhbmdlZCgpOworfQorCitib29sIEVkaXRvckNsaWVudFF0OjpzdXBwb3J0c0dsb2Jh
bFNlbGVjdGlvbigpCit7CisjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAorICAgIHJldHVybiBxQXBw
LT5jbGlwYm9hcmQoKS0+c3VwcG9ydHNTZWxlY3Rpb24oKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCit9CisKK30KKworLy8gdmltOiB0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2FlY2VmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC0wLDAgKzEsMTI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2Rl
Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFZGl0b3JDbGllbnRRdF9oCisj
ZGVmaW5lIEVkaXRvckNsaWVudFF0X2gKKworI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2lu
Y2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50UXQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK2NsYXNzIFFXZWJQYWdlOworY2xhc3MgUVdl
YlBhZ2VBZGFwdGVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVkaXRvckNsaWVu
dFF0IDogcHVibGljIEVkaXRvckNsaWVudCB7CitwdWJsaWM6CisgICAgRWRpdG9yQ2xpZW50UXQo
UVdlYlBhZ2VBZGFwdGVyKik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQo
KTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7IAorICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsgCisgICAgdmlydHVhbCBib29sIGlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRp
bnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5n
RW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKKyAg
ICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOworICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QmVnaW5FZGl0aW5nKFJhbmdlKik7CisgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmco
UmFuZ2UqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2Uq
LCBFZGl0b3JJbnNlcnRBY3Rpb24pOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRUZXh0
KGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSog
dG9SYW5nZSwgRUFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBSYW5nZSopOworCisgICAg
dmlydHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFuZ2UqKTsK
KworICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24oRnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygp
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2Uq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSosIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0YSk7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0
KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5Q
YXN0ZShGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuVW5kbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAg
CisgICAgdmlydHVhbCB2b2lkIHVuZG8oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVkbygpOworCisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopOwor
CisgICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50Kik7Cisg
ICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCopOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVudCopOworICAgIHZpcnR1
YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVt
ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQq
KTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmco
Y29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYpOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpOworICAgIHZp
cnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpOworICAgIHZpcnR1YWwgYm9vbCBz
cGVsbGluZ1VJSXNTaG93aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFi
bGVkKTsKKyAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0
dXJuICZtX3RleHRDaGVja2VyQ2xpZW50OyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNH
bG9iYWxTZWxlY3Rpb24oKSBPVkVSUklERTsKKworICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7
CisKKyAgICBzdGF0aWMgYm9vbCBkdW1wRWRpdGluZ0NhbGxiYWNrczsKKyAgICBzdGF0aWMgYm9v
bCBhY2NlcHRzRWRpdGluZzsKKworcHJpdmF0ZToKKyAgICBUZXh0Q2hlY2tlckNsaWVudFF0IG1f
dGV4dENoZWNrZXJDbGllbnQ7CisgICAgUVdlYlBhZ2VBZGFwdGVyKiBtX3BhZ2U7CisgICAgYm9v
bCBtX2VkaXRpbmc7CisgICAgYm9vbCBtX2luVW5kb1JlZG87IC8vIG91ciB1bmRvIHN0YWNrIHdv
cmtzIGRpZmZlcmVudGx5IC0gZG9uJ3QgcmUtZW50ZXIhCit9OworCit9CisKKyNlbmRpZgorCisv
LyB2aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmYzMmFjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTAsMCArMSwxNjE1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENveXByaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgorICogQ295cHJpZ2h0IChDKSAyMDA5LCAyMDEwIEdpcmlzaCBSYW1ha3Jpc2huYW4g
PGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0Lmgi
CisKKyNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRl
ICJFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJGb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJGcmFt
ZUxvYWRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmgiCisj
aW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SFRNTEFwcGxldEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5j
bHVkZSAiSFRUUFN0YXR1c0NvZGVzLmgiCisjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKKyNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1
ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbHVn
aW5EYXRhLmgiCisjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJQb2xpY3lD
aGVja2VyLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5jbHVkZSAiUU5ldHdv
cmtSZXBseUhhbmRsZXIuaCIKKyNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisjaW5jbHVk
ZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIKKyNpbmNs
dWRlICJRdFBsdWdpbldpZGdldEFkYXB0ZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIlZpZXdw
b3J0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVk
ZSAicXdlYmhpc3RvcnkuaCIKKyNpbmNsdWRlICJxd2ViaGlzdG9yeV9wLmgiCisjaW5jbHVkZSAi
cXdlYmhpc3RvcnlpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJxd2VicGx1Z2luZmFjdG9yeS5oIgor
I2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Cisj
aW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFGaWxlSW5mbz4KKyNpbmNsdWRlIDxRTW91c2VF
dmVudD4KKyNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVz
dD4KKyNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjaWYgRU5BQkxFKElDT05EQVRBQkFT
RSkKKyNpbmNsdWRlICJJY29uRGF0YWJhc2VDbGllbnRRdC5oIgorI2VuZGlmCisKK3N0YXRpYyBR
TWFwPHVuc2lnbmVkIGxvbmcsIFFTdHJpbmc+IGR1bXBBc3NpZ25lZFVybHM7CisKKy8vIENvbXBh
cmUgd2l0aCB0aGUgZmlsZSAiV2ViS2l0L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxv
YWREZWxlZ2F0ZS5tbSIuCitzdGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChXZWJDb3JlOjpGcmFtZSogd2ViQ29yZUZyYW1lKQoreworICAgIFFXZWJGcmFt
ZUFkYXB0ZXIqIGZyYW1lID0gUVdlYkZyYW1lQWRhcHRlcjo6a2l0KHdlYkNvcmVGcmFtZSk7Cisg
ICAgUVN0cmluZyBuYW1lID0gd2ViQ29yZUZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpOworCisg
ICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lID09IGZyYW1lLT5wYWdlQWRhcHRlci0+bWFpbkZy
YW1lQWRhcHRlcigpOworICAgIGlmIChpc01haW5GcmFtZSkgeworICAgICAgICBpZiAoIW5hbWUu
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIm1haW4g
ZnJhbWUgXCIlMVwiIikuYXJnKG5hbWUpOworICAgICAgICByZXR1cm4gUUxhdGluMVN0cmluZygi
bWFpbiBmcmFtZSIpOworICAgIH0KKyAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgiZnJhbWUgXCIlMVwiIikuYXJnKG5hbWUpOworICAg
IHJldHVybiBRTGF0aW4xU3RyaW5nKCJmcmFtZSAoYW5vbnltb3VzKSIpOworfQorCitzdGF0aWMg
UVN0cmluZyBkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0dXMoV2ViQ29yZTo6RnJhbWUqIGZy
YW1lKQoreworICAgIGlmIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKSkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdp
dGggdXNlciBnZXN0dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4xU3RyaW5nKCJ0cnVlIikpOworICAg
IHJldHVybiBRU3RyaW5nOjpmcm9tTGF0aW4xKCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVyZSBcIiUx
XCIiKS5hcmcoUUxhdGluMVN0cmluZygiZmFsc2UiKSk7Cit9CisKK3N0YXRpYyBRU3RyaW5nIGRy
dERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OlVSTCYga3Vy
bCkKK3sKKyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNMb2NhbEZpbGUoKSkKKyAg
ICAgICAgcmV0dXJuIGt1cmwuc3RyaW5nKCk7CisgICAgLy8gUmVtb3ZlIHRoZSBsZWFkaW5nIHBh
dGggZnJvbSBmaWxlIHVybHMuCisgICAgcmV0dXJuIFFTdHJpbmcoa3VybC5zdHJpbmcoKSkucmVt
b3ZlKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3NQYXRoKS5taWQoMSk7Cit9CisKK3N0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQorewor
ICAgIFFTdHJpbmcgZmFpbGluZ1VSTCA9IGVycm9yLmZhaWxpbmdVUkwoKTsKKyAgICByZXR1cm4g
UVN0cmluZzo6ZnJvbUxhdGluMSgiPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNv
ZGUgJTEsIGZhaWxpbmcgVVJMIFwiJTJcIj4iKS5hcmcoZXJyb3IuZXJyb3JDb2RlKCkpLmFyZyhm
YWlsaW5nVVJMKTsKK30KKworc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorewor
ICAgIFFTdHJpbmcgdXJsID0gZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVx
dWVzdC51cmwoKSk7CisgICAgUVN0cmluZyBodHRwTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9k
KCk7CisgICAgUVN0cmluZyBtYWluRG9jdW1lbnRVcmwgPSBkcnREZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOworICAgIHJldHVy
biBRU3RyaW5nOjpmcm9tTGF0aW4xKCI8TlNVUkxSZXF1ZXN0IFVSTCAlMSwgbWFpbiBkb2N1bWVu
dCBVUkwgJTIsIGh0dHAgbWV0aG9kICUzPiIpLmFyZyh1cmwpLmFyZyhtYWluRG9jdW1lbnRVcmwp
LmFyZyhodHRwTWV0aG9kKTsKK30KKworc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCit7CisgICAgUVN0cmluZyB1cmwgPSBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChyZXNwb25zZS51cmwoKSk7CisgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKTsKKyAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgiPE5TVVJM
UmVzcG9uc2UgJTEsIGh0dHAgc3RhdHVzIGNvZGUgJTI+IikuYXJnKHVybCkuYXJnKGh0dHBTdGF0
dXNDb2RlKTsKK30KKworc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQoY29uc3QgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG5vZGUsIGludCBleGNlcHRpb24p
Cit7CisgICAgUVN0cmluZyByZXN1bHQ7CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBy
ZXN1bHQuYXBwZW5kKFFMYXRpbjFTdHJpbmcoIkVSUk9SIikpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChRTGF0
aW4xU3RyaW5nKCJOVUxMIikpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBy
ZXN1bHQuYXBwZW5kKG5vZGUtPm5vZGVOYW1lKCkpOworICAgIFJlZlB0cjxXZWJDb3JlOjpOb2Rl
PiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgaWYgKHBhcmVudCkgeworICAgICAg
ICByZXN1bHQuYXBwZW5kKFFMYXRpbjFTdHJpbmcoIiA+ICIpKTsKKyAgICAgICAgcmVzdWx0LmFw
cGVuZChkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChwYXJlbnQsIDApKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNlOwor
Ym9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrID0g
ZmFsc2U7Citib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkZXJDYWxsYmFja3MgPSBmYWxzZTsKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFdp
bGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2tzID0gZmFsc2U7Citib29sIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBmYWxzZTsKK2Jvb2wgRnJhbWVMb2FkZXJD
bGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QgPSBmYWxzZTsKK2Jvb2wg
RnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IGZhbHNlOworYm9v
bCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyA9IGZh
bHNlOworYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
ID0gdHJ1ZTsKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcEhpc3RvcnlDYWxsYmFja3Mg
PSBmYWxzZTsKKworUVN0cmluZ0xpc3QgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2VuZFJlcXVlc3RD
bGVhckhlYWRlcnM7CitRU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxv
YWRDYWxsYmFja3NQYXRoOworYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb2xpY3lEZWxlZ2F0
ZUVuYWJsZWQgPSBmYWxzZTsKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6cG9saWN5RGVsZWdh
dGVQZXJtaXNzaXZlID0gZmFsc2U7CitRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OlVSTHNUb1JlZGlyZWN0ID0gUU1hcDxRU3RyaW5nLCBRU3RyaW5nPigpOworCisv
LyBUYWtlbiBmcm9tIHRoZSBmaWxlICJXZWJLaXQvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwIi4KK3N0YXRpYyBjb25zdCBjaGFyKiBuYXZpZ2F0aW9uVHlwZVRv
U3RyaW5nKE5hdmlnYXRpb25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkOgorICAgICAgICByZXR1cm4gImxpbmsgY2xp
Y2tlZCI7CisgICAgY2FzZSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQ6CisgICAgICAgIHJl
dHVybiAiZm9ybSBzdWJtaXR0ZWQiOworICAgIGNhc2UgTmF2aWdhdGlvblR5cGVCYWNrRm9yd2Fy
ZDoKKyAgICAgICAgcmV0dXJuICJiYWNrL2ZvcndhcmQiOworICAgIGNhc2UgTmF2aWdhdGlvblR5
cGVSZWxvYWQ6CisgICAgICAgIHJldHVybiAicmVsb2FkIjsKKyAgICBjYXNlIE5hdmlnYXRpb25U
eXBlRm9ybVJlc3VibWl0dGVkOgorICAgICAgICByZXR1cm4gImZvcm0gcmVzdWJtaXR0ZWQiOwor
ICAgIGNhc2UgTmF2aWdhdGlvblR5cGVPdGhlcjoKKyAgICAgICAgcmV0dXJuICJvdGhlciI7Cisg
ICAgfQorICAgIHJldHVybiAiaWxsZWdhbCB2YWx1ZSI7Cit9CisKK0ZyYW1lTG9hZGVyQ2xpZW50
UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQoKQorICAgIDogbV9mcmFtZSgwKQorICAgICwgbV93ZWJG
cmFtZSgwKQorICAgICwgbV9wbHVnaW5WaWV3KDApCisgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luKGZhbHNlKQorICAgICwgbV9pc09yaWdpbmF0aW5nTG9hZChmYWxzZSkKK3sKK30KKwor
CitGcmFtZUxvYWRlckNsaWVudFF0Ojp+RnJhbWVMb2FkZXJDbGllbnRRdCgpCit7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RnJhbWUoUVdlYkZyYW1lQWRhcHRlciogd2ViRnJh
bWUsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBtX3dlYkZyYW1lID0gd2ViRnJhbWU7CisgICAgbV9m
cmFtZSA9IGZyYW1lOworCisgICAgaWYgKCFtX3dlYkZyYW1lIHx8ICFtX3dlYkZyYW1lLT5wYWdl
QWRhcHRlcikgeworICAgICAgICBxV2FybmluZygiRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0RnJh
bWUgZnJhbWUgd2l0aG91dCBQYWdlISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y29ubmVjdCh0aGlzLCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpLAorICAgICAgICBtX3dlYkZy
YW1lLT5wYWdlQWRhcHRlci0+aGFuZGxlKCksIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSkpOwor
CisgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwodW5zdXBwb3J0ZWRDb250ZW50KFFOZXR3b3JrUmVw
bHkqKSksCisgICAgICAgIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5oYW5kbGUoKSwgU0lHTkFM
KHVuc3VwcG9ydGVkQ29udGVudChRTmV0d29ya1JlcGx5KikpKTsKKworICAgIGNvbm5lY3QodGhp
cywgU0lHTkFMKHRpdGxlQ2hhbmdlZChRU3RyaW5nKSksCisgICAgICAgIG1fd2ViRnJhbWUtPmhh
bmRsZSgpLCBTSUdOQUwodGl0bGVDaGFuZ2VkKFFTdHJpbmcpKSk7Cit9CisKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6Y2FsbFBvbGljeUZ1bmN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIFBvbGljeUFjdGlvbiBhY3Rpb24pCit7CisgICAgKG1fZnJhbWUtPmxvYWRlcigpLnBv
bGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKGFjdGlvbik7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJD
bGllbnRRdDo6aGFzV2ViVmlldygpIGNvbnN0Cit7CisgICAgLy8gbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKK3sKKyAgICBBU1NF
UlQobV9mcmFtZSk7CisgICAgQVNTRVJUKG1fd2ViRnJhbWUpOworCisgICAgUU9iamVjdCogcVdl
YlBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+aGFuZGxlKCk7CisgICAgUUJydXNoIGJy
dXNoID0gcVdlYlBhZ2UtPnByb3BlcnR5KCJwYWxldHRlIikudmFsdWU8UVBhbGV0dGU+KCkuYnJ1
c2goUVBhbGV0dGU6OkJhc2UpOworICAgIFFDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBicnVzaC5z
dHlsZSgpID09IFF0OjpTb2xpZFBhdHRlcm4gPyBicnVzaC5jb2xvcigpIDogUUNvbG9yKCk7CisK
KyAgICBjb25zdCBRU2l6ZSBwcmVmZXJyZWRMYXlvdXRTaXplID0gcVdlYlBhZ2UtPnByb3BlcnR5
KCJwcmVmZXJyZWRDb250ZW50c1NpemUiKS50b1NpemUoKTsKKworICAgIFNjcm9sbGJhck1vZGUg
aFNjcm9sbGJhciA9IChTY3JvbGxiYXJNb2RlKSBtX3dlYkZyYW1lLT5zY3JvbGxCYXJQb2xpY3ko
UXQ6Okhvcml6b250YWwpOworICAgIFNjcm9sbGJhck1vZGUgdlNjcm9sbGJhciA9IChTY3JvbGxi
YXJNb2RlKSBtX3dlYkZyYW1lLT5zY3JvbGxCYXJQb2xpY3koUXQ6OlZlcnRpY2FsKTsKKyAgICBi
b29sIGhMb2NrID0gaFNjcm9sbGJhciAhPSBTY3JvbGxiYXJBdXRvOworICAgIGJvb2wgdkxvY2sg
PSB2U2Nyb2xsYmFyICE9IFNjcm9sbGJhckF1dG87CisKKyAgICAvLyBUaGUgSGlzdG9yeUNvbnRy
b2xsZXIgd2lsbCB1cGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiBsYXRlciBpZiBuZWVkZWQuCisg
ICAgSW50UmVjdCBjdXJyZW50VmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+dmlldygpID8g
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2ZyYW1lLT52aWV3KCktPmZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0KCkuc2l6ZSgpKSA6IEludFJlY3QoKTsKKworICAgIG1fZnJhbWUtPmNyZWF0ZVZp
ZXcocVdlYlBhZ2UtPnByb3BlcnR5KCJ2aWV3cG9ydFNpemUiKS50b1NpemUoKSwKKyAgICAgICAg
YmFja2dyb3VuZENvbG9yLCAhYmFja2dyb3VuZENvbG9yLmFscGhhKCksCisgICAgICAgIHByZWZl
cnJlZExheW91dFNpemUuaXNWYWxpZCgpID8gSW50U2l6ZShwcmVmZXJyZWRMYXlvdXRTaXplKSA6
IEludFNpemUoKSwKKyAgICAgICAgY3VycmVudFZpc2libGVDb250ZW50UmVjdCwKKyAgICAgICAg
cHJlZmVycmVkTGF5b3V0U2l6ZS5pc1ZhbGlkKCksCisgICAgICAgIGhTY3JvbGxiYXIsIGhMb2Nr
LAorICAgICAgICB2U2Nyb2xsYmFyLCB2TG9jayk7CisKKyAgICBib29sIGlzTWFpbkZyYW1lID0g
bV9mcmFtZSA9PSAmbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoaXNNYWlu
RnJhbWUgJiZtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+Y2xpZW50KSB7CisgICAgICAgIGJvb2wg
cmVzaXplc1RvQ29udGVudHMgPSBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+Y2xpZW50LT52aWV3
UmVzaXplc1RvQ29udGVudHNFbmFibGVkKCk7CisKKyAgICAgICAgbV9mcmFtZS0+dmlldygpLT5z
ZXRQYWludHNFbnRpcmVDb250ZW50cyhyZXNpemVzVG9Db250ZW50cyk7CisgICAgICAgIG1fZnJh
bWUtPnZpZXcoKS0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHJlc2l6ZXNUb0NvbnRlbnRzKTsKKyAg
ICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkU2F2ZVRvUGFnZUNhY2hlKCkK
K3sKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSZXN0b3JlRnJvbVBhZ2VDYWNo
ZSgpCit7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRCZWNvbWVG
cmFtZXNldChib29sKQoreworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6Zm9yY2VM
YXlvdXQoKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBp
ZiAodmlldykKKyAgICAgICAgdmlldy0+bGF5b3V0KHRydWUpOworfQorCisKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkKK3sKK30KKworCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnNldENvcGllc09uU2Nyb2xsKCkKK3sKKyAgICAvLyBBcHBhcmVu
dGx5IHRoaXMgaXMgbWFjIHNwZWNpZmljLgorfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCit7Cit9CisKKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKK3sKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCit7CisgICAgLy8gRG9uJ3QgbmVl
ZCB0aGlzIG9uZS4KKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBw
cmludGYoIiVzIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVcbiIsIHFQcmludGFibGUo
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKK30KKworCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tz
KQorICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYo
IiVzIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCit7
CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAt
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJXMgXG4iLCBxUHJpbnRhYmxlKGRydERl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKSk7CisKKyAgICBpZiAoZHVtcFVz
ZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGlu
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RcbiIsIHFQcmludGFibGUoZHJ0UHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzKG1fZnJhbWUpKSk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5QYWdl
KCkKK3sKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1l
TG9hZGVyJiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAgICBib29sIGxvYWRlckNvbXBs
ZXRlZCA9ICEobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgJiYgbG9hZGVyLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSk7CisKKyAgICBpZiAoIWxvYWRl
ckNvbXBsZXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CisgICAgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKQoreworICAgIGlm
IChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBkaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgaWYgKCFtX3dlYkZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYkZyYW1lLT5lbWl0VXJsQ2hhbmdlZCgpOwor
ICAgIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOwor
fQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRo
aW5QYWdlKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBw
cmludGYoIiVzIC0gZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlXG4iLCBxUHJpbnRhYmxl
KGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CisKKyAgICBk
aXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpCit7CisgICAgaWYgKGR1
bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpc3BhdGNoRGlk
UmVwbGFjZVN0YXRlV2l0aGluUGFnZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdp
dGhpblBhZ2UoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFBv
cFN0YXRlV2l0aGluUGFnZSgpCit7CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykK
KyAgICAgICAgcHJpbnRmKCIlcyAtIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlXG4iLCBx
UHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7
CisKKyAgICAvLyBObyBuZWVkIHRvIGNhbGwgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2Ug
aGVyZSwgaXQncyBhbHJlYWR5IGJlZW4gZG9uZSBpbiBsb2FkSW5TYW1lRG9jdW1lbnQoKS4KK30K
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxDbG9zZSgpCit7Cit9CisK
Kwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJsZShk
cnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgaWYg
KGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50Zigi
JXMgLSBpbiBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lXG4iLCBxUHJpbnRhYmxlKGRy
dFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhtX2ZyYW1lKSkpOworCisgICAgbV9sYXN0UmVx
dWVzdGVkVXJsID0gbV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+cmVx
dWVzdFVSTCgpOworCisgICAgaWYgKCFtX3dlYkZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
ZW1pdExvYWRTdGFydGVkKCk7CisgICAgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZp
Y2F0aW9uKCk7CisgICAgbV93ZWJGcmFtZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKK30K
KworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQoreworICAgIC8vIEZJWE1FOiBVc2UgZGly
ZWN0aW9uIG9mIHRpdGxlLgorICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAg
ICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVzXG4iLCBxUHJpbnRhYmxlKGRydERl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwgcVByaW50YWJsZShRU3Ry
aW5nKHRpdGxlLnN0cmluZygpKSkpOworCisgICAgaWYgKCFtX3dlYkZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBlbWl0IHRpdGxlQ2hhbmdlZCh0aXRsZS5zdHJpbmcoKSk7Cit9CisKKwor
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6
Okljb25UeXBlKQoreworICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAg
IHByaW50ZigiJXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgaWYgKCFtX3dlYkZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogSW4gb3JkZXIgdG8gZ2V0IG5vdGlm
aWVkIG9mIGljb24gVVJMUycgY2hhbmdlcywgYWRkIGEgbm90aWZpY2F0aW9uLgorICAgIC8vIGVt
aXQgaWNvbnNDaGFuZ2VkKCk7Cit9CisKKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZENvbW1pdExvYWQoKQoreworICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3Mp
CisgICAgICAgIHByaW50ZigiJXMgLSBkaWRDb21taXRMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFi
bGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAg
IGlmIChtX2ZyYW1lLT50cmVlKCkucGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fd2ViRnJhbWUtPmVtaXRVcmxDaGFuZ2VkKCk7CisgICAgbV93ZWJGcmFt
ZS0+cGFnZUFkYXB0ZXItPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisKKyAgICAvLyBXZSBz
aG91bGQgYXNzdW1lIGZpcnN0IHRoZSBmcmFtZSBoYXMgbm8gdGl0bGUuIElmIGl0IGhhcywgdGhl
biB0aGUgYWJvdmUgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoKQorICAgIC8vIHdpbGwgYmUgY2Fs
bGVkIHZlcnkgc29vbiB3aXRoIHRoZSBjb3JyZWN0IHRpdGxlLgorICAgIC8vIFRoaXMgcHJvcGVy
bHkgcmVzZXRzIHRoZSB0aXRsZSB3aGVuIHdlIG5hdmlnYXRlIHRvIGEgVVJJIHdpdGhvdXQgYSB0
aXRsZS4KKyAgICBlbWl0IHRpdGxlQ2hhbmdlZChRU3RyaW5nKCkpOworCisgICAgYm9vbCBpc01h
aW5GcmFtZSA9IChtX2ZyYW1lID09ICZtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpKTsKKyAg
ICBpZiAoIWlzTWFpbkZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBlbWl0IG1fd2ViRnJh
bWUtPnBhZ2VBZGFwdGVyLT5lbWl0Vmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoKTsKK30KKworCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkK
K3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVz
IC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAgIGlmIChRV2ViUGFn
ZUFkYXB0ZXI6OmRydFJ1bikgeworICAgICAgICBpbnQgdW5sb2FkRXZlbnRDb3VudCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMo
KTsKKyAgICAgICAgaWYgKHVubG9hZEV2ZW50Q291bnQpCisgICAgICAgICAgICBwcmludGYoIiVz
IC0gaGFzICV1IG9udW5sb2FkIGhhbmRsZXIocylcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCB1bmxvYWRFdmVudENvdW50KTsKKyAg
ICB9CisKKyAgICBpZiAobV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpIHx8ICFtX3dlYkZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+dXBkYXRlTmF2
aWdhdGlvbkFjdGlvbnMoKTsKK30KKworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkRmluaXNoTG9hZCgpCit7CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykK
KyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZVxuIiwgcVByaW50YWJs
ZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAg
aWYgKCFtX3dlYkZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYkZyYW1lLT5wYWdl
QWRhcHRlci0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICBlbWl0TG9hZEZpbmlzaGVk
KHRydWUpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkTGF5b3V0
KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3sKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0KQorICAgICAgICBtX3dlYkZyYW1lLT5lbWl0SW5pdGlhbExheW91dENvbXBs
ZXRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoU2hvdygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmNhbmNlbFBvbGljeUNoZWNrKCkKK3sKKyAgICAvLyBxRGVidWcoKSA8PCAiRnJhbWVMb2FkZXJD
bGllbnRRdDo6Y2FuY2VsUG9saWN5Q2hlY2siOworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9u
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBzdXJlbHkgdG9vIHNpbXBsZS4KKyAgICBjYWxsUG9saWN5RnVuY3Rp
b24oZnVuY3Rpb24sIFBvbGljeVVzZSk7Cit9CisKKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCkKK3sKKyAgICBpZiAobV93ZWJGcmFt
ZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIG1faXNPcmlnaW5hdGluZ0xvYWQgPSB0cnVl
OworICAgIGlmIChtX2ZyYW1lLT50cmVlKCkucGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+dXBkYXRlTmF2aWdhdGlv
bkFjdGlvbnMoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NF
c3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKQoreworICAgIGlmIChtX3dlYkZyYW1lICYmIG1f
ZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgZW1pdCBsb2FkUHJvZ3Jlc3MocVJvdW5kKG1fZnJhbWUt
PnBhZ2UoKS0+cHJvZ3Jlc3MoKS5lc3RpbWF0ZWRQcm9ncmVzcygpICogMTAwKSk7Cit9CisKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24o
KQoreworICAgIGlmIChkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKQorICAgICAgICBwcmlu
dGYoInBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uXG4iKTsKKworICAgIC8vIFNlbmQg
YSBtb3VzZW1vdmUgZXZlbnQgdG86CisgICAgLy8gKDEpIHVwZGF0ZSB0aGUgY3Vyc29yIHRvIGNo
YW5nZSBhY2NvcmRpbmcgdG8gd2hhdGV2ZXIgaXMgdW5kZXJuZWF0aCB0aGUgbW91c2UgY3Vyc29y
IHJpZ2h0IG5vdzsKKyAgICAvLyAoMikgZGlzcGxheSB0aGUgdG9vbCB0aXAgaWYgdGhlIG1vdXNl
IGhvdmVycyBhIG5vZGUgd2hpY2ggaGFzIGEgdG9vbCB0aXAuCisgICAgaWYgKG1fZnJhbWUgJiYg
bV93ZWJGcmFtZSkgeworICAgICAgICBRUG9pbnQgbG9jYWxQb3M7CisgICAgICAgIGlmIChtX3dl
YkZyYW1lLT5oYW5kbGVQcm9ncmVzc0ZpbmlzaGVkKCZsb2NhbFBvcykpIHsKKyAgICAgICAgICAg
IFFNb3VzZUV2ZW50IGV2ZW50KFFFdmVudDo6TW91c2VNb3ZlLCBsb2NhbFBvcywgUXQ6Ok5vQnV0
dG9uLCBRdDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICAgICAgICAgIG1fZnJhbWUt
PmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQoY29udmVydE1vdXNlRXZlbnQoJmV2ZW50LCAwKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0TWFp
bkZyYW1lRG9jdW1lbnRSZWFkeShib29sKQoreworICAgIC8vIFRoaXMgaXMgb25seSBpbnRlcmVz
dGluZyBvbmNlIHdlIHByb3ZpZGUgYW4gZXh0ZXJuYWwgQVBJIGZvciB0aGUgRE9NLgorfQorCisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVy
KikKK3sKKyAgICAvLyBObyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhl
IHJpZ2h0IGNhbGxiYWNrLgorfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIC8vIE5vIG5lZWQgZm9yLCBkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2suCit9CisKKwordm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKQoreworICAg
IGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGx1Z2luVmll
dy0+aXNQbHVnaW5WaWV3KCkpCisgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmluaXNoTG9hZGlu
ZygpOworICAgIG1fcGx1Z2luVmlldyA9IDA7CisgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdp
biA9IGZhbHNlOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhblNob3dNSU1FVHlw
ZUFzSFRNTChjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAorYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3QKK3sKKyAg
ICBTdHJpbmcgdHlwZSA9IE1JTUVUeXBlOworICAgIHR5cGUubWFrZUxvd2VyKCk7CisgICAgaWYg
KE1JTUVUeXBlUmVnaXN0cnk6OmNhblNob3dNSU1FVHlwZSh0eXBlKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLmFyZVBsdWdp
bnNFbmFibGVkKCkKKyAgICAgICAgJiYgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMo
KS0+aXNNSU1FVHlwZVJlZ2lzdGVyZWQodHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlcHJlc2Vu
dGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCisKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0OjpnZW5lcmF0ZWRN
SU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKK3sKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBj
YW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgorICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT51cGRhdGVOYXZpZ2F0aW9u
QWN0aW9ucygpOworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cmVzdG9yZVZpZXdT
dGF0ZSgpCit7CisgICAgaWYgKCFtX3dlYkZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgbV93
ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPmVtaXRSZXN0b3JlRnJhbWVTdGF0ZVJlcXVlc3RlZChtX3dl
YkZyYW1lKTsKK30KKworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnByb3Zpc2lvbmFsTG9h
ZFN0YXJ0ZWQoKQoreworICAgIC8vIERvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZS4KK30K
KworCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZEZpbmlzaExvYWQoKQoreworICAgIC8v
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpwcmVw
YXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKK3sKK30KKwordm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3Qg
VVJMJiB1cmwpCit7CisgICAgLy8gVXNlZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0
aXRsZSBvZiBhbiBleGlzdGluZyBoaXN0b3J5IGl0ZW0uCisgICAgLy8gUXRXZWJLaXQgZG9lc24n
dCBhY2NvbW9kYXRlIHRoaXMgb24gaGlzdG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2VzLAorICAg
IC8vIGl0IHNob3VsZCBiZSBwcml2YXRlQnJvd3NpbmctYXdhcmUuIEZvciBub3csIHdlIGFyZSBq
dXN0IHBhc3NpbmcKKyAgICAvLyBnbG9iYWxoaXN0b3J5IGxheW91dCB0ZXN0cy4KKyAgICAvLyBG
SVhNRTogVXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICBpZiAoZHVtcEhpc3RvcnlDYWxsYmFj
a3MpIHsKKyAgICAgICAgcHJpbnRmKCJXZWJWaWV3IHVwZGF0ZWQgdGhlIHRpdGxlIGZvciBoaXN0
b3J5IFVSTCBcIiVzXCIgdG8gXCIlc1wiLlxuIiwKKyAgICAgICAgICAgIHFQcmludGFibGUoZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSksCisgICAgICAgICAgICBxUHJp
bnRhYmxlKFFTdHJpbmcodGl0bGUuc3RyaW5nKCkpKSk7CisgICAgfQorfQorCisKK1N0cmluZyBG
cmFtZUxvYWRlckNsaWVudFF0Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCit7CisgICAgaWYg
KG1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybiBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+dXNl
ckFnZW50Rm9yVXJsKHVybCkucmVtb3ZlKFFMYXRpbjFDaGFyKCdcbicpKS5yZW1vdmUoUUxhdGlu
MUNoYXIoJ1xyJykpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkKK3sKKyAgICBpZiAobV93ZWJGcmFt
ZSkKKyAgICAgICAgbV93ZWJGcmFtZS0+ZW1pdEljb25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQoreworICAgIC8vIERlbGV0
ZSBRV2ViRnJhbWUgKGhhbmRsZSgpKSwgd2hpY2ggb3ducyBRV2ViRnJhbWVQcml2YXRlLCB3aGlj
aAorICAgIC8vIF9pc18gYSBRV2ViRnJhbWVBZGFwdGVyLgorICAgIGlmIChtX3dlYkZyYW1lKQor
ICAgICAgICBkZWxldGUgbV93ZWJGcmFtZS0+aGFuZGxlKCk7CisgICAgbV9mcmFtZSA9IDA7Cisg
ICAgbV93ZWJGcmFtZSA9IDA7CisKKyAgICBkZWxldGUgdGhpczsKK30KKworYm9vbCBGcmFtZUxv
YWRlckNsaWVudFF0OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCkKK3sKKyAgICBpZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3dlYkZyYW1lKQorICAgICAgICBtX3dlYkZy
YW1lLT5kaWRDbGVhcldpbmRvd09iamVjdCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpCit7CisgICAgcmV0dXJuOworfQorCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdAor
eworICAgIGlmIChtX2ZyYW1lLT50cmVlKCkucGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+dXBkYXRlTmF2aWdhdGlv
bkFjdGlvbnMoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpyZWdpc3RlckZvcklj
b25Ob3RpZmljYXRpb24oYm9vbCBzaG91bGRSZWdpc3RlcikKK3sKKyNpZiBFTkFCTEUoSUNPTkRB
VEFCQVNFKQorICAgIGlmIChzaG91bGRSZWdpc3RlcikKKyAgICAgICAgY29ubmVjdChJY29uRGF0
YWJhc2VDbGllbnRRdDo6aW5zdGFuY2UoKSwgU0lHTkFMKGljb25Mb2FkZWRGb3JQYWdlVVJMKFFT
dHJpbmcpKSwgdGhpcywgU0xPVChvbkljb25Mb2FkZWRGb3JQYWdlVVJMKFFTdHJpbmcpKSwgUXQ6
OlVuaXF1ZUNvbm5lY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgZGlzY29ubmVjdChJY29uRGF0
YWJhc2VDbGllbnRRdDo6aW5zdGFuY2UoKSwgU0lHTkFMKGljb25Mb2FkZWRGb3JQYWdlVVJMKFFT
dHJpbmcpKSwgdGhpcywgU0xPVChvbkljb25Mb2FkZWRGb3JQYWdlVVJMKFFTdHJpbmcpKSk7Cisj
ZW5kaWYKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpvbkljb25Mb2FkZWRGb3JQYWdl
VVJMKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQorICAg
IGlmIChtX3dlYkZyYW1lICYmIG1fd2ViRnJhbWUtPnVybCA9PSB1cmwpCisgICAgICAgIG1fd2Vi
RnJhbWUtPmVtaXRJY29uQ2hhbmdlZCgpOworI2VuZGlmCit9CisKKwordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKK3sKKyAgICBRV2ViSGlzdG9yeUludGVy
ZmFjZSogaGlzdG9yeSA9IFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7
CisgICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CisgICAgaWYgKGhpc3RvcnkpCisgICAgICAgIGhpc3RvcnktPmFk
ZEhpc3RvcnlFbnRyeShsb2FkZXItPnVybEZvckhpc3RvcnkoKS5zdHJpbmcoKSk7CisKKyAgICBp
ZiAoZHVtcEhpc3RvcnlDYWxsYmFja3MpIHsKKyAgICAgICAgcHJpbnRmKCJXZWJWaWV3IG5hdmln
YXRlZCB0byB1cmwgXCIlc1wiIHdpdGggdGl0bGUgXCIlc1wiIHdpdGggSFRUUCBlcXVpdmFsZW50
IG1ldGhvZCBcIiVzXCIuICBUaGUgbmF2aWdhdGlvbiB3YXMgJXMgYW5kIHdhcyAlcyVzLlxuIiwK
KyAgICAgICAgICAgIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQobG9hZGVyLT51cmxGb3JIaXN0b3J5KCkpKSwKKyAgICAgICAgICAgIHFQcmludGFibGUoUVN0
cmluZyhsb2FkZXItPnRpdGxlKCkuc3RyaW5nKCkpKSwKKyAgICAgICAgICAgIHFQcmludGFibGUo
UVN0cmluZyhsb2FkZXItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpKSwKKyAgICAgICAgICAgICgo
bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSB8fCAobG9hZGVyLT5yZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSkgPyAiYSBmYWlsdXJlIiA6ICJzdWNjZXNzZnVsIiks
CisgICAgICAgICAgICAoKCFsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgp
LmlzRW1wdHkoKSkgPyAiYSBjbGllbnQgcmVkaXJlY3QgZnJvbSAiIDogIm5vdCBhIGNsaWVudCBy
ZWRpcmVjdCIpLAorICAgICAgICAgICAgKCFsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeSgpLmlzRW1wdHkoKSkgPyBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KGxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpKSA6
ICIiKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFs
SGlzdG9yeVJlZGlyZWN0TGlua3MoKQoreworICAgIC8vIEFwcGxlIFdlYktpdCBpcyB0aGUgb25s
eSBwb3J0IHRoYXQgbWFrZXMgdXNlIG9mIHRoaXMgY2FsbGJhY2suIEl0IGNhbGxzCisgICAgLy8g
V2ViQ29yZTo6SGlzdG9yeUl0ZW06OmFkZFJlZGlyZWN0VVJMKCkgd2l0aCB0aGUgY29udGVudHMg
b2YKKyAgICAvLyBsb2FkZXItPltzZXJ2ZXJ8Y2xpZW50XVJlZGlyZWN0RGVzdGluYXRpb25Gb3JI
aXN0b3J5KCkuCisgICAgLy8gV2ViQ29yZSBjYW4gYXNzb2NpYXRlIGEgYnVuY2ggb2YgcmVkaXJl
Y3QgVVJMcyB3aXRoIGEgcGFydGljdWxhcgorICAgIC8vIGl0ZW0gaW4gdGhlIGhpc3RvcnksIHBy
ZXN1bWFibHkgdGhpcyBhbGxvd3MgU2FmYXJpIHRvIHNraXAgdGhlIHJlZGlyZWN0aW9ucworICAg
IC8vIHdoZW4gbmF2aWdhdGluZyB0byB0aGF0IGhpc3RvcnkgaXRlbS4gVGhhdCBtaWdodCBiZSBh
IGZlYXR1cmUgUXQgd2FudHMgdG8KKyAgICAvLyBvZmZlciB0aHJvdWdoIFFXZWJIaXN0b3J5SW50
ZXJmYWNlIGluIHRoZSBmdXR1cmUuIEZvciBub3csIHdlJ3JlIGp1c3QKKyAgICAvLyBwYXNzaW5n
IHRlc3RzIGluIExheW91dFRlc3RzL2h0dHAvdGVzdHMvZ2xvYmFsaGlzdG9yeS4KKyAgICBXZWJD
b3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKTsKKworICAgIGlmICghbG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rv
cnkoKS5pc051bGwoKSkgeworICAgICAgICBpZiAoZHVtcEhpc3RvcnlDYWxsYmFja3MpIHsKKyAg
ICAgICAgICAgIHByaW50ZigiV2ViVmlldyBwZXJmb3JtZWQgYSBjbGllbnQgcmVkaXJlY3QgZnJv
bSBcIiVzXCIgdG8gXCIlc1wiLlxuIiwKKyAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJp
bmcobG9hZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSkpLAorICAgICAgICAg
ICAgICAgIHFQcmludGFibGUoUVN0cmluZyhsb2FkZXItPmNsaWVudFJlZGlyZWN0RGVzdGluYXRp
b25Gb3JIaXN0b3J5KCkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWxvYWRlci0+
c2VydmVyUmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYg
KGR1bXBIaXN0b3J5Q2FsbGJhY2tzKSB7CisgICAgICAgICAgICBwcmludGYoIldlYlZpZXcgcGVy
Zm9ybWVkIGEgc2VydmVyIHJlZGlyZWN0IGZyb20gXCIlc1wiIHRvIFwiJXNcIi5cbiIsCisgICAg
ICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nKGxvYWRlci0+c2VydmVyUmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCkpKSwKKyAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKFFTdHJpbmcobG9h
ZGVyLT5zZXJ2ZXJSZWRpcmVjdERlc3RpbmF0aW9uRm9ySGlzdG9yeSgpKSkpOworICAgICAgICB9
CisgICAgfQorfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEdvVG9IaXN0b3J5
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
Cit7CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCJk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50XG4iKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9h
ZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoImRpZFJ1bkluc2VjdXJlQ29udGVudFxuIik7
CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQoreworICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiZGlkRGV0ZWN0WFNTXG4iKTsKKworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2F2ZVZpZXdT
dGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBRV2ViSGlzdG9y
eUl0ZW0gaGlzdG9yeUl0ZW0obmV3IFFXZWJIaXN0b3J5SXRlbVByaXZhdGUoaXRlbSkpOworICAg
IG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5lbWl0U2F2ZUZyYW1lU3RhdGVSZXF1ZXN0ZWQobV93
ZWJGcmFtZSwgJmhpc3RvcnlJdGVtKTsKK30KKworYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
YW5DYWNoZVBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAg
IGlmICghbV9wbHVnaW5WaWV3KQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcGx1Z2luVmll
dy0+aXNQbHVnaW5WaWV3KCkpCisgICAgICAgIG1fcGx1Z2luVmlldy0+ZGlkRmFpbChlcnJvcik7
CisgICAgbV9wbHVnaW5WaWV3ID0gMDsKKyAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0g
ZmFsc2U7Cit9CisKKy8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBtb3ZlZCBpbnRv
IFdlYkNvcmUuCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1pdHRlZExvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
K3sKKyAgICBpZiAoIW1fcGx1Z2luVmlldykKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRh
dGEsIGxlbmd0aCk7CisKKyAgICAvLyBJZiB3ZSBhcmUgc2VuZGluZyBkYXRhIHRvIE1lZGlhRG9j
dW1lbnQsIHdlIHNob3VsZCBzdG9wIGhlcmUgYW5kIGNhbmNlbCB0aGUgcmVxdWVzdC4KKyAgICBp
ZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNNZWRpYURvY3VtZW50KCkpCisgICAgICAgIGxvYWRl
ci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGxvYWRl
ci0+cmVzcG9uc2UoKSkpOworCisgICAgLy8gV2UgcmUtY2hlY2sgaGVyZSBhcyB0aGUgcGx1Z2lu
IGNhbiBoYXZlIGJlZW4gY3JlYXRlZC4KKyAgICBpZiAobV9wbHVnaW5WaWV3ICYmIG1fcGx1Z2lu
Vmlldy0+aXNQbHVnaW5WaWV3KCkpIHsKKyAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luKSB7CisgICAgICAgICAgICBtX3BsdWdpblZpZXctPmRpZFJlY2VpdmVSZXNwb25zZShs
b2FkZXItPnJlc3BvbnNlKCkpOworICAgICAgICAgICAgLy8gVGhlIGZ1bmN0aW9uIGRpZFJlY2Vp
dmVSZXNwb25zZSBzZXRzIHVwIGEgbmV3IHN0cmVhbSB0byB0aGUgcGx1Zy1pbi4KKyAgICAgICAg
ICAgIC8vIE9uIGEgZnVsbC1wYWdlIHBsdWctaW4sIGEgZmFpbHVyZSBpbiBzZXR0aW5nIHVwIHRo
aXMgc3RyZWFtIGNhbiBjYXVzZSB0aGUKKyAgICAgICAgICAgIC8vIG1haW4gZG9jdW1lbnQgbG9h
ZCB0byBiZSBjYW5jZWxsZWQsIHNldHRpbmcgbV9wbHVnaW5WaWV3IHRvIG51bGwuCisgICAgICAg
ICAgICBpZiAoIW1fcGx1Z2luVmlldykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBtX3BsdWdpblZpZXctPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgfQorfQor
CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbGxlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBSZXNv
dXJjZUVycm9yIGVycm9yID0gUmVzb3VyY2VFcnJvcigiUXROZXR3b3JrIiwgUU5ldHdvcmtSZXBs
eTo6T3BlcmF0aW9uQ2FuY2VsZWRFcnJvciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwKKyAgICAg
ICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViRnJhbWUiLCAiUmVxdWVzdCBjYW5j
ZWxsZWQiLCAwKSk7CisgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgcmV0
dXJuIGVycm9yOworfQorCisvLyBUaGlzIHdhcyBjb3BpZWQgZnJvbSBmaWxlICJXZWJLaXQvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRFcnJvcnMuaCIuCitlbnVtIHsKKyAgICBXZWJLaXRF
cnJvckNhbm5vdFNob3dNSU1FVHlwZSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAs
CisgICAgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMID0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAxLAorICAgIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZSA9ICAgICAgICAgICAgIDEwMiwKKyAgICBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3Ry
aWN0ZWRQb3J0ID0gICAgICAgICAgICAgICAgICAgICAgICAxMDMsCisgICAgV2ViS2l0RXJyb3JD
YW5ub3RGaW5kUGx1Z0luID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwLAorICAg
IFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbiA9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIwMSwKKyAgICBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSA9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyMDIsCisgICAgV2ViS2l0RXJyb3JQbHVnaW5XaWxsSGFuZGxlTG9h
ZCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAzCit9OworCitXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIldl
YktpdEVycm9yRG9tYWluIiwgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwKKyAgICAgICAgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRV2ViRnJhbWUiLCAiUmVxdWVzdCBibG9ja2VkIiwgMCkpOworfQorCisKK1dlYkNvcmU6OlJl
c291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiV2ViS2l0RXJyb3JEb21haW4iLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksCisgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0
ZSgiUVdlYkZyYW1lIiwgIkNhbm5vdCBzaG93IFVSTCIsIDApKTsKK30KKworV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudFF0OjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5n
ZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcigiV2ViS2l0RXJyb3JEb21haW4iLCBXZWJLaXRFcnJvckZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksCisg
ICAgICAgIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYkZyYW1lIiwgIkZyYW1lIGxv
YWQgaW50ZXJydXB0ZWQgYnkgcG9saWN5IGNoYW5nZSIsIDApKTsKK30KKworV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcigiV2ViS2l0RXJyb3JEb21haW4iLCBXZWJLaXRFcnJvckNhbm5vdFNob3dN
SU1FVHlwZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksCisgICAgICAgIFFDb3JlQXBwbGljYXRp
b246OnRyYW5zbGF0ZSgiUVdlYkZyYW1lIiwgIkNhbm5vdCBzaG93IG1pbWV0eXBlIiwgMCkpOwor
fQorCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbGVEb2Vz
Tm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiUXROZXR3b3JrIiwgUU5ldHdvcmtSZXBseTo6
Q29udGVudE5vdEZvdW5kRXJyb3IsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAorICAgICAgICBR
Q29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJGcmFtZSIsICJGaWxlIGRvZXMgbm90IGV4
aXN0IiwgMCkpOworfQorCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoIldlYktpdCIsIFdl
YktpdEVycm9yUGx1Z2luV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLAor
ICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJGcmFtZSIsICJMb2FkaW5n
IGlzIGhhbmRsZWQgYnkgdGhlIG1lZGlhIGVuZ2luZSIsIDApKTsKK30KKworYm9vbCBGcmFtZUxv
YWRlckNsaWVudFF0OjpzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFJlc291cmNlRXJyb3Is
IGNhbmNlbGxlZEVycm9yLCAodGhpcy0+Y2FuY2VsbGVkRXJyb3IoUmVzb3VyY2VSZXF1ZXN0KCkp
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBSZXNvdXJjZUVycm9yLCBwbHVnaW5X
aWxsSGFuZGxlTG9hZEVycm9yLCAodGhpcy0+cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihSZXNv
dXJjZVJlc3BvbnNlKCkpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBSZXNvdXJj
ZUVycm9yLCBlcnJvckludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlLCAodGhpcy0+aW50ZXJydXB0
ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihSZXNvdXJjZVJlcXVlc3QoKSkpKTsKKworICAgIGlmIChl
cnJvci5lcnJvckNvZGUoKSA9PSBjYW5jZWxsZWRFcnJvci5lcnJvckNvZGUoKSAmJiBlcnJvci5k
b21haW4oKSA9PSBjYW5jZWxsZWRFcnJvci5kb21haW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGVycm9yLmVycm9yQ29kZSgpID09IGVycm9ySW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2UuZXJyb3JDb2RlKCkgJiYgZXJyb3IuZG9tYWluKCkgPT0gZXJyb3JJbnRlcnJ1cHRl
ZEZvclBvbGljeUNoYW5nZS5kb21haW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGVycm9yLmVycm9yQ29kZSgpID09IHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IuZXJyb3JD
b2RlKCkgJiYgZXJyb3IuZG9tYWluKCkgPT0gcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvci5kb21h
aW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1dU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVl
c3QsIHN1YnN0aXR1dGVEYXRhKTsKKyAgICBpZiAoIWRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQg
fHwgc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgICAgICBsb2FkZXItPnNldERlZmVyTWFp
blJlc291cmNlRGF0YUxvYWQoZmFsc2UpOworICAgIGVsc2UKKyAgICAgICAgbV9mcmFtZS0+cGFn
ZSgpLT5zZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KC0xKTsKKyAgICByZXR1cm4gbG9h
ZGVyLnJlbGVhc2UoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKQoreworICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUU5ldHdvcmtSZXBseUhhbmRsZXIqIGhhbmRsZXIgPSBkb2N1bWVu
dExvYWRlci0+bWFpblJlc291cmNlTG9hZGVyKCktPmhhbmRsZSgpLT5nZXRJbnRlcm5hbCgpLT5t
X2pvYjsKKyAgICBpZiAoIWhhbmRsZXIpIHsKKyAgICAgICAgcVdhcm5pbmcoIkF0dGVtcHRlZCB0
byBkb3dubG9hZCB1bnN1cHBvcnRlZCBVUkwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmNo
YXJhY3RlcnM4KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUU5ldHdvcmtSZXBs
eSogcmVwbHkgPSBoYW5kbGVyLT5yZWxlYXNlKCk7CisgICAgaWYgKHJlcGx5KSB7CisgICAgICAg
IGlmIChtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+Zm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudCkK
KyAgICAgICAgICAgIGVtaXQgdW5zdXBwb3J0ZWRDb250ZW50KHJlcGx5KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmVwbHktPmFib3J0KCk7CisgICAgfQorfQorCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKGR1bXBSZXNvdXJjZUxvYWRDYWxs
YmFja3MpCisgICAgICAgIGR1bXBBc3NpZ25lZFVybHNbaWRlbnRpZmllcl0gPSBkcnREZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LnVybCgpKTsKK30KKworc3RhdGljIHZv
aWQgYmxvY2tSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAg
ICByZXF1ZXN0LnNldFVSTChRVXJsKCkpOworfQorCitzdGF0aWMgYm9vbCBpc0xvY2FsaG9zdChj
b25zdCBRU3RyaW5nJiBob3N0KQoreworICAgIHJldHVybiBob3N0ID09IFFMYXRpbjFTdHJpbmco
IjEyNy4wLjAuMSIpIHx8IGhvc3QgPT0gUUxhdGluMVN0cmluZygibG9jYWxob3N0Iik7Cit9CisK
K3N0YXRpYyBib29sIGhvc3RJc1VzZWRCeVNvbWVUZXN0c1RvR2VuZXJhdGVFcnJvcihjb25zdCBR
U3RyaW5nJiBob3N0KQoreworICAgIHJldHVybiBob3N0ID09IFFMYXRpbjFTdHJpbmcoIjI1NS4y
NTUuMjU1LjI1NSIpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2ls
bFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit7CisgICAgaWYgKGR1bXBS
ZXNvdXJjZUxvYWRDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSB3aWxsU2VuZFJlcXVl
c3QgJXMgcmVkaXJlY3RSZXNwb25zZSAlc1xuIiwKKyAgICAgICAgICAgIHFQcmludGFibGUoZHVt
cEFzc2lnbmVkVXJsc1tpZGVudGlmaWVyXSksCisgICAgICAgICAgICBxUHJpbnRhYmxlKGRydERl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG5ld1JlcXVlc3QpKSwKKyAgICAgICAgICAg
IChyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSA/ICIobnVsbCkiIDogcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZWRpcmVjdFJlc3BvbnNlKSkpOworCisg
ICAgaWYgKHNlbmRSZXF1ZXN0UmV0dXJuc051bGwpIHsKKyAgICAgICAgYmxvY2tSZXF1ZXN0KG5l
d1JlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNlbmRSZXF1ZXN0
UmV0dXJuc051bGxPblJlZGlyZWN0ICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7Cisg
ICAgICAgIHByaW50ZigiUmV0dXJuaW5nIG51bGwgZm9yIHRoaXMgcmVkaXJlY3RcbiIpOworICAg
ICAgICBibG9ja1JlcXVlc3QobmV3UmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBRVXJsIHVybCA9IG5ld1JlcXVlc3QudXJsKCk7CisgICAgUVN0cmluZyBob3N0ID0gdXJs
Lmhvc3QoKTsKKyAgICBRU3RyaW5nIHVybFNjaGVtZSA9IHVybC5zY2hlbWUoKS50b0xvd2VyKCk7
CisKKyAgICBpZiAoUVdlYlBhZ2VBZGFwdGVyOjpkcnRSdW4KKyAgICAgICAgJiYgIWhvc3QuaXNF
bXB0eSgpCisgICAgICAgICYmICh1cmxTY2hlbWUgPT0gUUxhdGluMVN0cmluZygiaHR0cCIpIHx8
IHVybFNjaGVtZSA9PSBRTGF0aW4xU3RyaW5nKCJodHRwcyIpKSkgeworCisgICAgICAgIFFVcmwg
dGVzdFVSTCA9IG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5tYWluRnJhbWVBZGFwdGVyKCktPmZy
YW1lTG9hZGVyQ2xpZW50LT5sYXN0UmVxdWVzdGVkVXJsKCk7CisgICAgICAgIFFTdHJpbmcgdGVz
dEhvc3QgPSB0ZXN0VVJMLmhvc3QoKTsKKyAgICAgICAgUVN0cmluZyB0ZXN0VVJMU2NoZW1lID0g
dGVzdFVSTC5zY2hlbWUoKS50b0xvd2VyKCk7CisKKyAgICAgICAgaWYgKCFpc0xvY2FsaG9zdCho
b3N0KQorICAgICAgICAgICAgJiYgIWhvc3RJc1VzZWRCeVNvbWVUZXN0c1RvR2VuZXJhdGVFcnJv
cihob3N0KQorICAgICAgICAgICAgJiYgKCh0ZXN0VVJMU2NoZW1lICE9IFFMYXRpbjFTdHJpbmco
Imh0dHAiKSAmJiB0ZXN0VVJMU2NoZW1lICE9IFFMYXRpbjFTdHJpbmcoImh0dHBzIikpIHx8IGlz
TG9jYWxob3N0KHRlc3RIb3N0KSkpIHsKKyAgICAgICAgICAgIHByaW50ZigiQmxvY2tlZCBhY2Nl
c3MgdG8gZXh0ZXJuYWwgVVJMICVzXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KG5ld1JlcXVlc3QudXJsKCkpKSk7CisgICAgICAgICAgICBibG9ja1Jl
cXVlc3QobmV3UmVxdWVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzLnNpemUo
KTsgKytpKQorICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChzZW5kUmVxdWVz
dENsZWFySGVhZGVycy5hdChpKS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpLCBRU3RyaW5nKCkp
OworCisgICAgaWYgKFFXZWJQYWdlQWRhcHRlcjo6ZHJ0UnVuKSB7CisgICAgICAgIFFNYXA8UVN0
cmluZywgUVN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gVVJMc1RvUmVkaXJlY3QuY29uc3RG
aW5kKHVybC50b1N0cmluZygpKTsKKyAgICAgICAgaWYgKGl0ICE9IFVSTHNUb1JlZGlyZWN0LmNv
bnN0RW5kKCkpCisgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChRVXJsKGl0LnZhbHVlKCkp
KTsKKyAgICB9CisgICAgLy8gU2VlbXMgbGlrZSB0aGUgTWFjIGNvZGUgZG9lc24ndCBkbyBhbnl0
aGluZyBoZXJlIGJ5IGRlZmF1bHQgbmVpdGhlci4KKyAgICAvLyBxRGVidWcoKSA8PCAiRnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QiIDw8IHJlcXVlc3QuaXNOdWxs
KCkgPDwgdXJsOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
Cit7CisKKyAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CisgICAgaWYgKGR1bXBXaWxsQ2FjaGVS
ZXNwb25zZUNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIHdpbGxDYWNoZVJlc3BvbnNl
OiBjYWxsZWRcbiIsCisgICAgICAgICAgICBxUHJpbnRhYmxlKGR1bXBBc3NpZ25lZFVybHNbaWRl
bnRpZmllcl0pKTsKKworICAgIGlmIChkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQorICAgICAg
ICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVJlc3BvbnNlICVzXG4iLAorICAgICAgICAgICAgcVBy
aW50YWJsZShkdW1wQXNzaWduZWRVcmxzW2lkZW50aWZpZXJdKSwKKyAgICAgICAgICAgIHFQcmlu
dGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UpKSk7CisK
KyAgICBpZiAoZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMpIHsKKyAgICAgICAgcHJpbnRm
KCIlcyBoYXMgTUlNRSB0eXBlICVzXG4iLAorICAgICAgICAgICAgcVByaW50YWJsZShRU3RyaW5n
KHJlc3BvbnNlLnVybCgpLmxhc3RQYXRoQ29tcG9uZW50KCkpKSwKKyAgICAgICAgICAgIHFQcmlu
dGFibGUoUVN0cmluZyhyZXNwb25zZS5taW1lVHlwZSgpKSkpOworICAgIH0KK30KKwordm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgaW50KQoreworfQorCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZpbmlzaExvYWRp
bmdcbiIsCisgICAgICAgICAgICAoZHVtcEFzc2lnbmVkVXJscy5jb250YWlucyhpZGVudGlmaWVy
KSA/IHFQcmludGFibGUoZHVtcEFzc2lnbmVkVXJsc1tpZGVudGlmaWVyXSkgOiAiPHVua25vd24+
IikpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZhaWxMb2Fk
aW5nV2l0aEVycm9yOiAlc1xuIiwKKyAgICAgICAgICAgIChkdW1wQXNzaWduZWRVcmxzLmNvbnRh
aW5zKGlkZW50aWZpZXIpID8gcVByaW50YWJsZShkdW1wQXNzaWduZWRVcmxzW2lkZW50aWZpZXJd
KSA6ICI8dW5rbm93bj4iKSwKKyAgICAgICAgICAgIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoZXJyb3IpKSk7Cit9CisKK2Jvb2wgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJv
clBhZ2VFeHRlbnNpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7Cisg
ICAgUVdlYlBhZ2VBZGFwdGVyKiBwYWdlID0gbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXI7CisgICAg
aWYgKCFwYWdlLT5zdXBwb3J0c0Vycm9yUGFnZUV4dGVuc2lvbigpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgUVdlYlBhZ2VBZGFwdGVyOjpFcnJvclBhZ2VPcHRpb24gb3B0aW9uOworICAg
IG9wdGlvbi51cmwgPSBRVXJsKGVycm9yLmZhaWxpbmdVUkwoKSk7CisgICAgb3B0aW9uLmZyYW1l
ID0gbV93ZWJGcmFtZTsKKyAgICBvcHRpb24uZG9tYWluID0gZXJyb3IuZG9tYWluKCk7CisgICAg
b3B0aW9uLmVycm9yID0gZXJyb3IuZXJyb3JDb2RlKCk7CisgICAgb3B0aW9uLmVycm9yU3RyaW5n
ID0gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKKworICAgIFFXZWJQYWdlQWRhcHRlcjo6
RXJyb3JQYWdlUmV0dXJuIG91dHB1dDsKKworICAgIGlmICghcGFnZS0+ZXJyb3JQYWdlRXh0ZW5z
aW9uKCZvcHRpb24sICZvdXRwdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBVUkwg
YmFzZVVybChvdXRwdXQuYmFzZVVybCk7CisgICAgVVJMIGZhaWxpbmdVcmwob3B0aW9uLnVybCk7
CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlVXJsKTsKKyAgICBX
VEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG91dHB1dC5jb250ZW50LmNvbnN0RGF0YSgpLCBvdXRwdXQuY29udGVu
dC5sZW5ndGgoKSk7CisgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEo
YnVmZmVyLCBvdXRwdXQuY29udGVudFR5cGUsIG91dHB1dC5lbmNvZGluZywgZmFpbGluZ1VybCk7
CisgICAgbV9mcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KG1f
ZnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmIChkdW1wRnJh
bWVMb2FkZXJDYWxsYmFja3MpCisgICAgICAgIHByaW50ZigiJXMgLSBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KG1fZnJhbWUpKSk7CisKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICFlcnJv
ci5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAgIGlmIChjYWxsRXJyb3JQYWdlRXh0ZW5zaW9u
KGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV93ZWJGcmFt
ZSkKKyAgICAgICAgZW1pdExvYWRGaW5pc2hlZChmYWxzZSk7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAg
ICBwcmludGYoIiVzIC0gZGlkRmFpbExvYWRXaXRoRXJyb3JcbiIsIHFQcmludGFibGUoZHJ0RGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAgIGlmICghZXJy
b3IuaXNOdWxsKCkgJiYgIWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICAgICAgaWYgKGNh
bGxFcnJvclBhZ2VFeHRlbnNpb24oZXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3dlYkZyYW1lKQorICAgICAgICBlbWl0TG9hZEZpbmlzaGVkKGZhbHNlKTsK
K30KKworV2ViQ29yZTo6RnJhbWUqIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikKK3sKKyAgICBpZiAoIW1fd2Vi
RnJhbWUpCisgICAgICAgIHJldHVybiAwOworICAgIFFXZWJQYWdlQWRhcHRlciogbmV3UGFnZSA9
IG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5jcmVhdGVXaW5kb3coLyogbW9kYWxEaWFsb2cgPSAq
LyBmYWxzZSk7CisgICAgaWYgKCFuZXdQYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbmV3UGFnZS0+bWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZTsKK30KKwordm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5
RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKQoreworICAgIC8vIFdlIG5lZWQg
dG8gY2FsbCBkaXJlY3RseSBoZXJlLgorICAgIHN3aXRjaCAocmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSkgeworICAgIGNhc2UgSFRUUFJlc2V0Q29udGVudDoKKyAgICAgICAgLy8gRklYTUU6IGEg
MjA1IHJlc3BvbnNlIHJlcXVpcmVzIHRoYXQgdGhlIHJlcXVlc3RlciByZXNldCB0aGUgZG9jdW1l
bnQgdmlldy4KKyAgICAgICAgLy8gRmFsbHRocm91Z2gKKyAgICBjYXNlIEhUVFBOb0NvbnRlbnQ6
CisgICAgICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5SWdub3JlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXZWJDb3JlOjpjb250ZW50RGlzcG9zaXRp
b25UeXBlKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSA9
PSBXZWJDb3JlOjpDb250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50KQorICAgICAgICBjYWxsUG9s
aWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeURvd25sb2FkKTsKKyAgICBlbHNlIGlmIChjYW5T
aG93TUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpCisgICAgICAgIGNhbGxQb2xpY3lGdW5j
dGlvbihmdW5jdGlvbiwgUG9saWN5VXNlKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxQb2xpY3lG
dW5jdGlvbihmdW5jdGlvbiwgUG9saWN5RG93bmxvYWQpOworfQorCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9s
aWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJikKK3sKKyAgICBRX0FTU0VS
VChtX3dlYkZyYW1lKTsKKyAgICBRTmV0d29ya1JlcXVlc3QgcihyZXF1ZXN0LnRvTmV0d29ya1Jl
cXVlc3QobV9mcmFtZS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSkpOworCisgICAgaWYg
KCFtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoMCwgciwg
KGludClhY3Rpb24udHlwZSgpKSkgeworICAgICAgICBpZiAoYWN0aW9uLnR5cGUoKSA9PSBOYXZp
Z2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQgfHwgYWN0aW9uLnR5cGUoKSA9PSBOYXZpZ2F0aW9uVHlw
ZUZvcm1SZXN1Ym1pdHRlZCkKKyAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLnJlc2V0TXVs
dGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24oKTsKKworICAgICAgICBpZiAoYWN0aW9uLnR5
cGUoKSA9PSBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkICYmIHIudXJsKCkuaGFzRnJhZ21lbnQo
KSkgeworICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGVtcHR5UmVxdWVzdDsKKyAgICAgICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnNldExhc3RDaGVj
a2VkUmVxdWVzdChlbXB0eVJlcXVlc3QpOworICAgICAgICB9CisKKyAgICAgICAgY2FsbFBvbGlj
eUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5VXNlKTsKK30KKwordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikKK3sKKyAgICBRX0FTU0VSVChtX3dl
YkZyYW1lKTsKKyAgICBRTmV0d29ya1JlcXVlc3QgcihyZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3Qo
bV9mcmFtZS0+bG9hZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSkpOworICAgIFBvbGljeUFjdGlv
biByZXN1bHQ7CisKKyAgICAvLyBDdXJyZW50bHksIHRoaXMgaXMgb25seSBlbmFibGVkIGJ5IERS
VC4KKyAgICBpZiAocG9saWN5RGVsZWdhdGVFbmFibGVkKSB7CisgICAgICAgIFJlZlB0cjxOb2Rl
PiBub2RlOworICAgICAgICBmb3IgKGNvbnN0IEV2ZW50KiBldmVudCA9IGFjdGlvbi5ldmVudCgp
OyBldmVudDsgZXZlbnQgPSBldmVudC0+dW5kZXJseWluZ0V2ZW50KCkpIHsKKyAgICAgICAgICAg
IGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBNb3Vz
ZUV2ZW50KiBtb3VzZUV2ZW50ID0gIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVu
dCk7CisgICAgICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkp
LmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpbnRmKCJQb2xpY3kgZGVsZWdhdGU6IGF0dGVt
cHQgdG8gbG9hZCAlcyB3aXRoIG5hdmlnYXRpb24gdHlwZSAnJXMnJXNcbiIsCisgICAgICAgICAg
ICBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3Qu
dXJsKCkpKSwgbmF2aWdhdGlvblR5cGVUb1N0cmluZyhhY3Rpb24udHlwZSgpKSwKKyAgICAgICAg
ICAgIChub2RlKSA/IHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiIG9yaWdpbmF0aW5n
IGZyb20gIikgKyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChub2RlLCAwKSkg
OiAiIik7CisKKyAgICAgICAgaWYgKHBvbGljeURlbGVnYXRlUGVybWlzc2l2ZSkKKyAgICAgICAg
ICAgIHJlc3VsdCA9IFBvbGljeVVzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0
ID0gUG9saWN5SWdub3JlOworCisgICAgICAgIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5hY2Nl
cHROYXZpZ2F0aW9uUmVxdWVzdChtX3dlYkZyYW1lLCByLCAoaW50KWFjdGlvbi50eXBlKCkpOwor
ICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5hY2NlcHRO
YXZpZ2F0aW9uUmVxdWVzdChtX3dlYkZyYW1lLCByLCAoaW50KWFjdGlvbi50eXBlKCkpKSB7Cisg
ICAgICAgIGlmIChhY3Rpb24udHlwZSgpID09IE5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZCB8
fCBhY3Rpb24udHlwZSgpID09IE5hdmlnYXRpb25UeXBlRm9ybVJlc3VibWl0dGVkKQorICAgICAg
ICAgICAgbV9mcmFtZS0+bG9hZGVyKCkucmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNzaW9uUHJvdGVj
dGlvbigpOworCisgICAgICAgIGlmIChhY3Rpb24udHlwZSgpID09IE5hdmlnYXRpb25UeXBlTGlu
a0NsaWNrZWQgJiYgci51cmwoKS5oYXNGcmFnbWVudCgpKSB7CisgICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgZW1wdHlSZXF1ZXN0OworICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KGVtcHR5UmVxdWVzdCk7
CisgICAgICAgIH0KKworICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGlj
eUlnbm9yZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FsbFBvbGljeUZ1bmN0aW9u
KGZ1bmN0aW9uLCBQb2xpY3lVc2UpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiAvKiBzdWdnZXN0ZWROYW1lICovKQoreworICAgIGlmICghbV93ZWJG
cmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPmVt
aXREb3dubG9hZFJlcXVlc3RlZChyZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QobV9mcmFtZS0+bG9h
ZGVyKCkubmV0d29ya2luZ0NvbnRleHQoKSkpOworfQorCitQYXNzUmVmUHRyPEZyYW1lPiBGcmFt
ZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1h
cmdpbkhlaWdodCkKK3sKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgUVdlYkZyYW1lRGF0YSBmcmFtZURhdGEobV9mcmFtZS0+cGFnZSgpLCBtX2ZyYW1lLCBv
d25lckVsZW1lbnQsIG5hbWUpOworCisgICAgZnJhbWVEYXRhLnJlZmVycmVyID0gcmVmZXJyZXI7
CisgICAgZnJhbWVEYXRhLmFsbG93c1Njcm9sbGluZyA9IGFsbG93c1Njcm9sbGluZzsKKyAgICBm
cmFtZURhdGEubWFyZ2luV2lkdGggPSBtYXJnaW5XaWR0aDsKKyAgICBmcmFtZURhdGEubWFyZ2lu
SGVpZ2h0ID0gbWFyZ2luSGVpZ2h0OworCisgICAgUVdlYkZyYW1lQWRhcHRlciogY2hpbGRXZWJG
cmFtZSA9IG1fd2ViRnJhbWUtPmNyZWF0ZUNoaWxkRnJhbWUoJmZyYW1lRGF0YSk7CisgICAgLy8g
VGhlIGNyZWF0aW9uIG9mIHRoZSBmcmFtZSBtYXkgaGF2ZSBydW4gYXJiaXRyYXJ5IEphdmFTY3Jp
cHQgdGhhdCByZW1vdmVkIGl0IGZyb20gdGhlIHBhZ2UgYWxyZWFkeS4KKyAgICBpZiAoIWNoaWxk
V2ViRnJhbWUtPmZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgUVBvaW50ZXI8UU9iamVjdD4gcVdl
YkZyYW1lID0gY2hpbGRXZWJGcmFtZS0+aGFuZGxlKCk7CisgICAgICAgIGZyYW1lRGF0YS5mcmFt
ZS5yZWxlYXNlKCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocVdlYkZyYW1lLCAhcVdlYkZyYW1l
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbV93ZWJGcmFtZS0+cGFnZUFkYXB0
ZXItPmVtaXRGcmFtZUNyZWF0ZWQoY2hpbGRXZWJGcmFtZSk7CisKKyAgICAvLyBGSVhNRTogU2V0
IG92ZXJyaWRlIGVuY29kaW5nIGlmIHdlIGhhdmUgb25lLgorCisgICAgVVJMIHVybFRvTG9hZCA9
IHVybDsKKyAgICBpZiAodXJsVG9Mb2FkLmlzRW1wdHkoKSkKKyAgICAgICAgdXJsVG9Mb2FkID0g
YmxhbmtVUkwoKTsKKworICAgIG1fZnJhbWUtPmxvYWRlcigpLmxvYWRVUkxJbnRvQ2hpbGRGcmFt
ZSh1cmxUb0xvYWQsIGZyYW1lRGF0YS5yZWZlcnJlciwgZnJhbWVEYXRhLmZyYW1lLmdldCgpKTsK
KworICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQg
ZnJvbSB0aGUgZG9jdW1lbnQuCisgICAgaWYgKCFmcmFtZURhdGEuZnJhbWUtPnRyZWUoKS5wYXJl
bnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZnJhbWVEYXRhLmZyYW1lLnJl
bGVhc2UoKTsKK30KKworT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6b2Jq
ZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQoreworICAgIC8vIHFEZWJ1ZygpPDwi
ICsrKysrKysrKysrKysrKysgdXJsIGlzICI8PHVybC5zdHJpbmcoKTw8IiwgbWltZSA9ICI8PG1p
bWVUeXBlSW47CisgICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOworICAgIFN0cmluZyBleHRl
bnNpb24gPSBmaS5zdWZmaXgoKTsKKyAgICBpZiAobWltZVR5cGVJbiA9PSAiYXBwbGljYXRpb24v
eC1xdC1wbHVnaW4iIHx8IG1pbWVUeXBlSW4gPT0gImFwcGxpY2F0aW9uL3gtcXQtc3R5bGVkLXdp
ZGdldCIpCisgICAgICAgIHJldHVybiBPYmplY3RDb250ZW50T3RoZXJQbHVnaW47CisKKyAgICBp
ZiAodXJsLmlzRW1wdHkoKSAmJiAhbWltZVR5cGVJbi5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IE9iamVjdENvbnRlbnROb25lOworCisgICAgU3RyaW5nIG1pbWVUeXBlID0gbWltZVR5cGVJbjsK
KyAgICBpZiAoIW1pbWVUeXBlLmxlbmd0aCgpKQorICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisKKyAgICBib29s
IGFyZVBsdWdpbnNFbmFibGVkID0gKG1fZnJhbWUgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS5hcmVQ
bHVnaW5zRW5hYmxlZCgpKTsKKyAgICBpZiAoYXJlUGx1Z2luc0VuYWJsZWQgJiYgIW1pbWVUeXBl
Lmxlbmd0aCgpKQorICAgICAgICBtaW1lVHlwZSA9IFBsdWdpbkRhdGFiYXNlOjppbnN0YWxsZWRQ
bHVnaW5zKCktPk1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisKKyAgICBpZiAoIW1p
bWVUeXBlLmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudEZyYW1lOworCisg
ICAgT2JqZWN0Q29udGVudFR5cGUgcGx1Z0luVHlwZSA9IE9iamVjdENvbnRlbnROb25lOworICAg
IGlmIChhcmVQbHVnaW5zRW5hYmxlZCAmJiBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lu
cygpLT5pc01JTUVUeXBlUmVnaXN0ZXJlZChtaW1lVHlwZSkpCisgICAgICAgIHBsdWdJblR5cGUg
PSBPYmplY3RDb250ZW50TmV0c2NhcGVQbHVnaW47CisgICAgZWxzZSBpZiAobV9mcmFtZS0+cGFn
ZSgpKSB7CisgICAgICAgIGJvb2wgYWxsb3dQbHVnaW5zID0gbV9mcmFtZS0+bG9hZGVyKCkuc3Vi
ZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKTsK
KyAgICAgICAgaWYgKChtX2ZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS5zdXBwb3J0c01pbWVU
eXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBhbGxvd1BsdWdpbnMpCisg
ICAgICAgICAgICB8fCBtX2ZyYW1lLT5wYWdlKCktPnBsdWdpbkRhdGEoKS5zdXBwb3J0c01pbWVU
eXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKSkKKyAgICAg
ICAgICAgICAgICBwbHVnSW5UeXBlID0gT2JqZWN0Q29udGVudE90aGVyUGx1Z2luOworICAgIH0K
KworICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpKQorICAgICAgICByZXR1cm4gc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyAmJiBw
bHVnSW5UeXBlICE9IE9iamVjdENvbnRlbnROb25lID8gcGx1Z0luVHlwZSA6IE9iamVjdENvbnRl
bnRJbWFnZTsKKyAgICAKKyAgICBpZiAocGx1Z0luVHlwZSAhPSBPYmplY3RDb250ZW50Tm9uZSkK
KyAgICAgICAgcmV0dXJuIHBsdWdJblR5cGU7CisKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIE9i
amVjdENvbnRlbnRGcmFtZTsKKworICAgIGlmICh1cmwucHJvdG9jb2woKSA9PSAiYWJvdXQiKQor
ICAgICAgICByZXR1cm4gT2JqZWN0Q29udGVudEZyYW1lOworCisgICAgcmV0dXJuIE9iamVjdENv
bnRlbnROb25lOworfQorCitzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBxc3R5bGVTaGVldFBy
b3BlcnRpZXNbXSA9IHsKKyAgICBDU1NQcm9wZXJ0eUNvbG9yLAorICAgIENTU1Byb3BlcnR5Rm9u
dEZhbWlseSwKKyAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAorICAgIENTU1Byb3BlcnR5Rm9udFN0
eWxlLAorICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodAorfTsKKworY29uc3QgdW5zaWduZWQgbnVt
cVN0eWxlU2hlZXRQcm9wZXJ0aWVzID0gc2l6ZW9mKHFzdHlsZVNoZWV0UHJvcGVydGllcykgLyBz
aXplb2YocXN0eWxlU2hlZXRQcm9wZXJ0aWVzWzBdKTsKKworY2xhc3MgUXRQbHVnaW5XaWRnZXQ6
IHB1YmxpYyBXaWRnZXQgeworcHVibGljOgorICAgIFF0UGx1Z2luV2lkZ2V0KFF0UGx1Z2luV2lk
Z2V0QWRhcHRlciogdykKKyAgICAgICAgOiBXaWRnZXQody0+aGFuZGxlKCkpCisgICAgICAgICwg
bV9hZGFwdGVyKHcpCisgICAgeworICAgICAgICBzZXRCaW5kaW5nT2JqZWN0KHctPmhhbmRsZSgp
KTsKKyAgICB9CisKKyAgICB+UXRQbHVnaW5XaWRnZXQoKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IG1fYWRhcHRlcjsKKyAgICB9CisKKyAgICBpbmxpbmUgUXRQbHVnaW5XaWRnZXRBZGFwdGVyKiB3
aWRnZXRBZGFwdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FkYXB0ZXI7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIHIp
CisgICAgeyAKKyAgICAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAgICAgICB3aWRn
ZXRBZGFwdGVyKCktPnVwZGF0ZShyKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGZyYW1lUmVj
dHNDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIFF0UGx1Z2luV2lkZ2V0QWRhcHRlciogd2lkZ2V0
ID0gd2lkZ2V0QWRhcHRlcigpOworICAgICAgICBpZiAoIXdpZGdldCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgUVJlY3Qgd2luZG93UmVjdCA9IGNvbnZlcnRUb0NvbnRhaW5pbmdXaW5k
b3coSW50UmVjdCgwLCAwLCBmcmFtZVJlY3QoKS53aWR0aCgpLCBmcmFtZVJlY3QoKS5oZWlnaHQo
KSkpOworCisgICAgICAgIFNjcm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBwYXJlbnQoKTsK
KyAgICAgICAgUVJlY3QgY2xpcFJlY3Q7CisgICAgICAgIGlmIChwYXJlbnRTY3JvbGxWaWV3KSB7
CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwYXJlbnRTY3Jv
bGxWaWV3LT5pc0ZyYW1lVmlldygpKTsKKyAgICAgICAgICAgIGNsaXBSZWN0ID0gdG9GcmFtZVZp
ZXcocGFyZW50U2Nyb2xsVmlldyktPndpbmRvd0NsaXBSZWN0KCk7CisgICAgICAgICAgICBjbGlw
UmVjdC50cmFuc2xhdGUoLXdpbmRvd1JlY3QueCgpLCAtd2luZG93UmVjdC55KCkpOworICAgICAg
ICB9CisgICAgICAgIHdpZGdldC0+c2V0R2VvbWV0cnlBbmRDbGlwKHdpbmRvd1JlY3QsIGNsaXBS
ZWN0LCBpc1Zpc2libGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNob3coKQorICAg
IHsKKyAgICAgICAgV2lkZ2V0OjpzaG93KCk7CisgICAgICAgIGhhbmRsZVZpc2liaWxpdHkoKTsK
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKQorICAgIHsKKyAgICAgICAgV2lkZ2V0Ojpo
aWRlKCk7CisgICAgICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICAgICAgd2lkZ2V0
QWRhcHRlcigpLT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUXRQ
bHVnaW5XaWRnZXRBZGFwdGVyKiBtX2FkYXB0ZXI7CisKKyAgICB2b2lkIGhhbmRsZVZpc2liaWxp
dHkoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc1Zpc2libGUoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgd2lkZ2V0QWRhcHRlcigpLT5zZXRWaXNpYmxlKHRydWUpOworICAgIH0KK307
CisKKworUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdp
bihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
bG9hZE1hbnVhbGx5KQoreworICAgIC8vIHFEZWJ1ZygpPDwiLS0tLS0tIENyZWF0aW5nIHBsdWdp
biBpbiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4gZm9yICI8PHVybC5zdHJpbmco
KSA8PCBtaW1lVHlwZTsKKyAgICAvLyBxRGVidWcoKTw8Ii0tLS0tLVx0IHVybCA9ICI8PHVybC5z
dHJpbmcoKTsKKworICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBRU3RyaW5nTGlzdCBwYXJhbXM7CisgICAgUVN0cmluZ0xpc3QgdmFsdWVzOworICAgIFFTdHJp
bmcgY2xhc3NpZChlbGVtZW50LT5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKSk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1OYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICBw
YXJhbXMuYXBwZW5kKHBhcmFtTmFtZXNbaV0pOworICAgICAgICBpZiAocGFyYW1OYW1lc1tpXSA9
PSAiY2xhc3NpZCIpCisgICAgICAgICAgICBjbGFzc2lkID0gcGFyYW1WYWx1ZXNbaV07CisgICAg
fQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbVZhbHVlcy5zaXplKCk7ICsraSkK
KyAgICAgICAgdmFsdWVzLmFwcGVuZChwYXJhbVZhbHVlc1tpXSk7CisKKyAgICBRU3RyaW5nIHVy
bFN0cih1cmwuc3RyaW5nKCkpOworICAgIFFVcmwgcXVybCA9IHVybFN0cjsKKworICAgIFFPYmpl
Y3QqIHBsdWdpbkFkYXB0ZXIgPSAwOworCisgICAgaWYgKG1pbWVUeXBlID09ICJhcHBsaWNhdGlv
bi94LXF0LXBsdWdpbiIgfHwgbWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3gtcXQtc3R5bGVkLXdp
ZGdldCIpIHsKKyAgICAgICAgcGx1Z2luQWRhcHRlciA9IG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVy
LT5jcmVhdGVQbHVnaW4oY2xhc3NpZCwgcXVybCwgcGFyYW1zLCB2YWx1ZXMpOworI2lmbmRlZiBR
VF9OT19TVFlMRV9TVFlMRVNIRUVUCisgICAgICAgIFF0UGx1Z2luV2lkZ2V0QWRhcHRlciogd2lk
Z2V0ID0gcW9iamVjdF9jYXN0PFF0UGx1Z2luV2lkZ2V0QWRhcHRlcio+KHBsdWdpbkFkYXB0ZXIp
OworICAgICAgICBpZiAod2lkZ2V0ICYmIG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi94LXF0LXN0
eWxlZC13aWRnZXQiKSB7CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3R5bGVTaGVldDsK
KyAgICAgICAgICAgIHN0eWxlU2hlZXQuYXBwZW5kKGVsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5
bGUiKSk7CisgICAgICAgICAgICBpZiAoIXN0eWxlU2hlZXQuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgIHN0eWxlU2hlZXQuYXBwZW5kKCc7Jyk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1xU3R5bGVTaGVldFByb3BlcnRpZXM7ICsraSkgeworICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBxc3R5bGVTaGVldFByb3BlcnRpZXNbaV07
CisKKyAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmFwcGVuZChnZXRQcm9wZXJ0eU5hbWUocHJv
cGVydHkpKTsKKyAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmFwcGVuZCgnOicpOworICAgICAg
ICAgICAgICAgIHN0eWxlU2hlZXQuYXBwZW5kKENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKGVsZW1lbnQpLT5nZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5KSk7CisgICAgICAgICAg
ICAgICAgc3R5bGVTaGVldC5hcHBlbmQoJzsnKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgd2lkZ2V0LT5zZXRTdHlsZVNoZWV0KHN0eWxlU2hlZXQudG9TdHJpbmcoKSk7CisgICAgICAg
IH0KKyNlbmRpZiAvLyBRVF9OT19TVFlMRV9TVFlMRVNIRUVUCisgICAgfQorCisgICAgaWYgKCFw
bHVnaW5BZGFwdGVyKSB7CisgICAgICAgIFFXZWJQbHVnaW5GYWN0b3J5KiBmYWN0b3J5ID0gbV93
ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPnBsdWdpbkZhY3Rvcnk7CisgICAgICAgIGlmIChmYWN0b3J5
KQorICAgICAgICAgICAgcGx1Z2luQWRhcHRlciA9IG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5h
ZGFwdGVyRm9yV2lkZ2V0KGZhY3RvcnktPmNyZWF0ZShtaW1lVHlwZSwgcXVybCwgcGFyYW1zLCB2
YWx1ZXMpKTsKKyAgICB9CisgICAgaWYgKHBsdWdpbkFkYXB0ZXIpIHsKKyAgICAgICAgUXRQbHVn
aW5XaWRnZXRBZGFwdGVyKiB3aWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UXRQbHVnaW5XaWRnZXRBZGFw
dGVyKj4ocGx1Z2luQWRhcHRlcik7CisgICAgICAgIGlmICh3aWRnZXQpIHsKKyAgICAgICAgICAg
IFFPYmplY3QqIHBhcmVudFdpZGdldCA9IDA7CisgICAgICAgICAgICBpZiAobV93ZWJGcmFtZS0+
cGFnZUFkYXB0ZXItPmNsaWVudCkKKyAgICAgICAgICAgICAgICBwYXJlbnRXaWRnZXQgPSBtX3dl
YkZyYW1lLT5wYWdlQWRhcHRlci0+Y2xpZW50LT5wbHVnaW5QYXJlbnQoKTsKKyAgICAgICAgICAg
IGlmIChwYXJlbnRXaWRnZXQpIC8vIERvbid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGkuZS4ga2Vl
cCB3aGF0ZXZlciBwYXJlbnQgUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgorICAgICAg
ICAgICAgICAgIHdpZGdldC0+c2V0V2lkZ2V0UGFyZW50KHBhcmVudFdpZGdldCk7CisgICAgICAg
ICAgICB3aWRnZXQtPnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgUmVmUHRyPFF0UGx1
Z2luV2lkZ2V0PiB3ID0gYWRvcHRSZWYobmV3IFF0UGx1Z2luV2lkZ2V0KHdpZGdldCkpOworICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIGl0J3MgaW52aXNpYmxlIHVudGlsIHByb3Blcmx5IHBsYWNl
ZCBpbnRvIHRoZSBsYXlvdXQuCisgICAgICAgICAgICB3LT5zZXRGcmFtZVJlY3QoSW50UmVjdCgw
LCAwLCAwLCAwKSk7CisgICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEZJWE1FOiBNYWtlIHRoaW5ncyB3b3JrIGZvciB3aWRnZXRsZXNzIHBsdWdpbnMgYXMgd2Vs
bC4KKyAgICAgICAgZGVsZXRlIHBsdWdpbkFkYXB0ZXI7CisgICAgfQorI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQorICAgIGVsc2UgeyAvLyBOUEFQSSBQbHVnaW5zCisgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHBhcmFtcyA9IHBhcmFtTmFtZXM7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHZhbHVlcyA9IHBhcmFtVmFsdWVzOworICAgICAgICBpZiAobWltZVR5cGUgPT0gImFwcGxpY2F0
aW9uL3gtc2hvY2t3YXZlLWZsYXNoIikgeworICAgICAgICAgICAgLy8gSW5qZWN0IHdtb2RlPW9w
YXF1ZSB3aGVuIHRoZXJlIGlzIG5vIGNsaWVudCBvciB0aGUgY2xpZW50IGlzIG5vdCBhIFFXZWJW
aWV3LgorICAgICAgICAgICAgc2l6ZV90IHdtb2RlSW5kZXggPSBwYXJhbXMuZmluZCgid21vZGUi
KTsKKyAgICAgICAgICAgIGlmICh3bW9kZUluZGV4ID09IFdURjo6bm90Rm91bmQpIHsKKyAgICAg
ICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCJ3bW9kZSIpOworICAgICAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQoIm9wYXF1ZSIpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZXNbd21vZGVJbmRleF0sICJ3aW5kb3ciKSkKKyAgICAgICAgICAgICAgICB2YWx1
ZXNbd21vZGVJbmRleF0gPSAib3BhcXVlIjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxQ
bHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3JlYXRlKG1fZnJhbWUsIHBsdWdp
blNpemUsIGVsZW1lbnQsIHVybCwKKyAgICAgICAgICAgIHBhcmFtcywgdmFsdWVzLCBtaW1lVHlw
ZSwgbG9hZE1hbnVhbGx5KTsKKyAgICAgICAgcmV0dXJuIHBsdWdpblZpZXc7CisgICAgfQorI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQorCisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBw
bHVnaW5XaWRnZXQpCit7CisgICAgbV9wbHVnaW5WaWV3ID0gdG9QbHVnaW5WaWV3KHBsdWdpbldp
ZGdldCk7CisgICAgaWYgKHBsdWdpbldpZGdldCkKKyAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VU
b1BsdWdpbiA9IGZhbHNlOworfQorCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGll
bnRRdDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBI
VE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCit7
CisgICAgcmV0dXJuIGNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCIsIHRydWUpOwor
fQorCitTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRRdDo6b3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25z
dAoreworICAgIGlmIChtX3dlYkZyYW1lICYmIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyICYmIG1f
d2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5zZXR0aW5ncykKKyAgICAgICAgcmV0dXJuIG1fd2ViRnJh
bWUtPnBhZ2VBZGFwdGVyLT5zZXR0aW5ncy0+Y3NzTWVkaWFUeXBlKCk7CisKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1FTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2hvb3NlRmlsZShj
b25zdCBRU3RyaW5nJiBvbGRGaWxlKQoreworICAgIFFTdHJpbmdMaXN0IHJlc3VsdCA9IG1fd2Vi
RnJhbWUtPnBhZ2VBZGFwdGVyLT5jaG9vc2VGaWxlcyhtX3dlYkZyYW1lLCAvKmFsbG93TXVsdGkq
LyBmYWxzZSwgKFFTdHJpbmdMaXN0KCkgPDwgb2xkRmlsZSkpOworICAgIHJldHVybiByZXN1bHQu
aXNFbXB0eSgpID8gUVN0cmluZygpIDogcmVzdWx0LmZpcnN0KCk7Cit9CisKK1Bhc3NSZWZQdHI8
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlTmV0d29y
a2luZ0NvbnRleHQoKQoreworICAgIFFWYXJpYW50IHZhbHVlID0gbV93ZWJGcmFtZS0+cGFnZUFk
YXB0ZXItPmhhbmRsZSgpLT5wcm9wZXJ0eSgiX3FfTUlNRVNuaWZmaW5nRGlzYWJsZWQiKTsKKyAg
ICBib29sIE1JTUVTbmlmZmluZ0Rpc2FibGVkID0gdmFsdWUuaXNWYWxpZCgpICYmIHZhbHVlLnRv
Qm9vbCgpOworCisgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRRdDo6Y3JlYXRlKG1f
ZnJhbWUsIG1fd2ViRnJhbWUtPmhhbmRsZSgpLCAhTUlNRVNuaWZmaW5nRGlzYWJsZWQpOworfQor
CitRV2ViRnJhbWVBZGFwdGVyKiBGcmFtZUxvYWRlckNsaWVudFF0Ojp3ZWJGcmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViRnJhbWU7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZW1pdExvYWRTdGFydGVkKCkKK3sKKyAgICBtX3dlYkZyYW1lLT5lbWl0TG9hZFN0YXJ0ZWQo
bV9pc09yaWdpbmF0aW5nTG9hZCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZW1p
dExvYWRGaW5pc2hlZChib29sIG9rKQoreworICAgIC8vIFNpZ25hbCBoYW5kbGVycyBjYW4gbGVh
ZCB0byBhIG5ldyBsb2FkLCB0aGF0IHdpbGwgdXNlIHRoZSBtZW1iZXIgYWdhaW4uCisgICAgY29u
c3QgYm9vbCB3YXNPcmlnaW5hdGluZ0xvYWQgPSBtX2lzT3JpZ2luYXRpbmdMb2FkOworICAgIG1f
aXNPcmlnaW5hdGluZ0xvYWQgPSBmYWxzZTsKKworICAgIG1fd2ViRnJhbWUtPmVtaXRMb2FkRmlu
aXNoZWQod2FzT3JpZ2luYXRpbmdMb2FkLCBvayk7Cit9CisKK30KKworI2luY2x1ZGUgIm1vY19G
cmFtZUxvYWRlckNsaWVudFF0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNGU1NmM4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0wLDAgKzEsMjcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIEZy
YW1lTG9hZGVyQ2xpZW50UXRfaAorI2RlZmluZSBGcmFtZUxvYWRlckNsaWVudFF0X2gKKworI2lu
Y2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuaCIKKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgPHFvYmplY3QuaD4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFOZXR3
b3JrUmVwbHk7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFXZWJGcmFtZTsKK2NsYXNzIFFX
ZWJGcmFtZUFkYXB0ZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CitjbGFzcyBEb2N1bWVudExvYWRlcjsKK2NsYXNzIEVsZW1lbnQ7Citj
bGFzcyBGb3JtU3RhdGU7CitjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOworY2xhc3MgRnJhbWVOZXR3
b3JraW5nQ29udGV4dDsKK2NsYXNzIFJlc291cmNlTG9hZGVyOworCitzdHJ1Y3QgTG9hZEVycm9y
UmVzZXRUb2tlbjsKKworY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRRdCA6IHB1YmxpYyBRT2JqZWN0
LCBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgeworICAgIFFfT0JKRUNUCisKKyAgICBmcmllbmQg
Y2xhc3MgOjpRV2ViRnJhbWVBZGFwdGVyOworICAgIHZvaWQgY2FsbFBvbGljeUZ1bmN0aW9uKEZy
YW1lUG9saWN5RnVuY3Rpb24sIFBvbGljeUFjdGlvbik7CisgICAgYm9vbCBjYWxsRXJyb3JQYWdl
RXh0ZW5zaW9uKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQg
bG9hZFByb2dyZXNzKGludCBkKTsKKyAgICB2b2lkIHRpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5n
JiB0aXRsZSk7CisgICAgdm9pZCB1bnN1cHBvcnRlZENvbnRlbnQoUU5ldHdvcmtSZXBseSopOwor
CitwdWJsaWM6CisgICAgRnJhbWVMb2FkZXJDbGllbnRRdCgpOworICAgIH5GcmFtZUxvYWRlckNs
aWVudFF0KCk7CisgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCk7CisKKyAg
ICB2b2lkIHNldEZyYW1lKFFXZWJGcmFtZUFkYXB0ZXIqLCBGcmFtZSopOworCisgICAgdmlydHVh
bCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCisKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCk7CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5
b3V0Rm9yTm9uSFRNTCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpOworICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRl
bnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCk7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1v
cnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQpOworCisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CisgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxDbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNv
cmU6Okljb25UeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaERvY3VtZW50TG9hZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlz
aExvYWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lcyk7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xp
Y3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpOworCisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJt
aXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3Vt
ZW50TG9hZGVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworCisgICAgdmlydHVhbCB2b2lk
IHBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CisgICAgdmlydHVhbCB2b2lk
IHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKTsKKworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CisgICAgdmlydHVhbCB2b2lk
IGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopOworCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9y
eVJlZGlyZWN0TGlua3MoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVt
KEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5n
Rm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKworICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOworICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGlu
dGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisK
KyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05v
dEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9y
Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93
TUlNRVR5cGVBc0hUTUwoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJM
U2NoZW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVS
TFNjaGVtZShjb25zdCBTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3RhdGVU
b0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZp
ZXdTdGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOworCisgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7
CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBj
b25zdCBVUkwmKTsKKworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFt
ZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9D
b21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpOworCisgICAgdmlydHVh
bCB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3Jl
RnJvbVBhZ2VDYWNoZSgpOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJh
bWVzZXQoYm9vbCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
cmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5F
bGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0
ZVBsdWdpbihXaWRnZXQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVn
aW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdl
dD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1l
bnQqLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOworCisgICAgdmlydHVhbCBPYmpl
Y3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgdmly
dHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCk7CisKKyAgICBRU3RyaW5nIGNo
b29zZUZpbGUoY29uc3QgUVN0cmluZyYgb2xkRmlsZSk7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKwor
ICAgIGNvbnN0IFVSTCYgbGFzdFJlcXVlc3RlZFVybCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJl
cXVlc3RlZFVybDsgfQorCisgICAgUVdlYkZyYW1lQWRhcHRlciogd2ViRnJhbWUoKSBjb25zdDsK
KworICAgIHN0YXRpYyBib29sIGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrczsKKyAgICBzdGF0aWMg
Ym9vbCBkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrOworICAgIHN0YXRpYyBib29sIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFja3M7CisgICAgc3RhdGljIGJvb2wgZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrczsKKyAgICBzdGF0aWMgYm9vbCBkdW1wUmVzb3VyY2VSZXNwb25z
ZU1JTUVUeXBlczsKKyAgICBzdGF0aWMgYm9vbCBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFj
a3M7CisgICAgc3RhdGljIFFTdHJpbmcgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc1BhdGg7Cisg
ICAgc3RhdGljIGJvb2wgc2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3Q7CisgICAgc3Rh
dGljIGJvb2wgc2VuZFJlcXVlc3RSZXR1cm5zTnVsbDsKKyAgICBzdGF0aWMgUVN0cmluZ0xpc3Qg
c2VuZFJlcXVlc3RDbGVhckhlYWRlcnM7CisgICAgc3RhdGljIGJvb2wgcG9saWN5RGVsZWdhdGVF
bmFibGVkOworICAgIHN0YXRpYyBib29sIHBvbGljeURlbGVnYXRlUGVybWlzc2l2ZTsKKyAgICBz
dGF0aWMgYm9vbCBkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOworICAgIHN0YXRpYyBib29sIGR1
bXBIaXN0b3J5Q2FsbGJhY2tzOworICAgIHN0YXRpYyBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IFVS
THNUb1JlZGlyZWN0OworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBvbkljb25Mb2FkZWRG
b3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGVtaXRMb2Fk
U3RhcnRlZCgpOworICAgIHZvaWQgZW1pdExvYWRGaW5pc2hlZChib29sIG9rKTsKKworICAgIEZy
YW1lICptX2ZyYW1lOworICAgIFFXZWJGcmFtZUFkYXB0ZXIgKm1fd2ViRnJhbWU7CisgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworCisgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJl
Y3QgZGF0YSB0bworICAgIFdlYkNvcmU6OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKKyAgICBi
b29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW47CisKKyAgICBVUkwgbV9sYXN0UmVxdWVzdGVk
VXJsOworICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKK307CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0
d29ya2luZ0NvbnRleHRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NWU2NjUzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dFF0LmgiCisKKyNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisjaW5jbHVk
ZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisKKyNpbmNs
dWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+Cisj
aW5jbHVkZSA8UU5ldHdvcmtDb29raWVKYXI+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRnJh
bWVOZXR3b3JraW5nQ29udGV4dFF0OjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQoRnJhbWUqIGZy
YW1lLCBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCwgYm9vbCBtaW1lU25pZmZpbmdFbmFibGVk
KQorICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkKKyAgICAsIG1fb3JpZ2luYXRp
bmdPYmplY3Qob3JpZ2luYXRpbmdPYmplY3QpCisgICAgLCBtX21pbWVTbmlmZmluZ0VuYWJsZWQo
bWltZVNuaWZmaW5nRW5hYmxlZCkKK3sKK30KKworUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdD
b250ZXh0UXQ+IEZyYW1lTmV0d29ya2luZ0NvbnRleHRRdDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwg
UU9iamVjdCogb3JpZ2luYXRpbmdPYmplY3QsIGJvb2wgbWltZVNuaWZmaW5nRW5hYmxlZCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZyYW1lTmV0d29ya2luZ0NvbnRleHRRdChmcmFtZSwg
b3JpZ2luYXRpbmdPYmplY3QsIG1pbWVTbmlmZmluZ0VuYWJsZWQpKTsKK30KKworUU9iamVjdCog
RnJhbWVOZXR3b3JraW5nQ29udGV4dFF0OjpvcmlnaW5hdGluZ09iamVjdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fb3JpZ2luYXRpbmdPYmplY3Q7Cit9CisKK1FOZXR3b3JrQWNjZXNzTWFuYWdl
ciogRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0OjpuZXR3b3JrQWNjZXNzTWFuYWdlcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFFXZWJGcmFtZUFkYXB0ZXI6OmtpdChmcmFtZSgpKS0+cGFnZUFkYXB0
ZXItPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCk7Cit9CisKK2Jvb2wgRnJhbWVOZXR3b3JraW5nQ29u
dGV4dFF0OjptaW1lU25pZmZpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9taW1l
U25pZmZpbmdFbmFibGVkOworfQorCitib29sIEZyYW1lTmV0d29ya2luZ0NvbnRleHRRdDo6dGhp
cmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pc3Npb24oY29uc3QgUVVybCYgdXJsKSBjb25zdAorewor
ICAgIHN3aXRjaCAoUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT50aGlyZFBhcnR5Q29v
a2llUG9saWN5KCkpIHsKKyAgICBjYXNlIFFXZWJTZXR0aW5nczo6QWx3YXlzQWxsb3dUaGlyZFBh
cnR5Q29va2llczoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBRV2ViU2V0dGluZ3M6
OkFsd2F5c0Jsb2NrVGhpcmRQYXJ0eUNvb2tpZXM6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBjYXNlIFFXZWJTZXR0aW5nczo6QWxsb3dUaGlyZFBhcnR5V2l0aEV4aXN0aW5nQ29va2llczog
eworICAgICAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llcyA9IG5ldHdvcmtBY2Nlc3NN
YW5hZ2VyKCktPmNvb2tpZUphcigpLT5jb29raWVzRm9yVXJsKHVybCk7CisgICAgICAgIHJldHVy
biAhY29va2llcy5pc0VtcHR5KCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuaCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4YWJlNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29u
dGV4dFF0LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBG
cmFtZU5ldHdvcmtpbmdDb250ZXh0UXRfaAorI2RlZmluZSBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
UXRfaAorCisjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lTmV0d29ya2luZ0NvbnRleHRRdCA6IHB1YmxpYyBGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0UXQ+IGNyZWF0ZShGcmFtZSosIFFPYmplY3QqIG9yaWdpbmF0aW5n
T2JqZWN0LCBib29sIG1pbWVTbmlmZmluZ0VuYWJsZWQpOworCitwcml2YXRlOgorICAgIEZyYW1l
TmV0d29ya2luZ0NvbnRleHRRdChGcmFtZSosIFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0LCBi
b29sIG1pbWVTbmlmZmluZ0VuYWJsZWQpOworCisgICAgdmlydHVhbCBRT2JqZWN0KiBvcmlnaW5h
dGluZ09iamVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKiBu
ZXR3b3JrQWNjZXNzTWFuYWdlcigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBtaW1lU25pZmZp
bmdFbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHRoaXJkUGFydHlDb29raWVQb2xp
Y3lQZXJtaXNzaW9uKGNvbnN0IFFVcmwmKSBjb25zdDsKKworICAgIFFPYmplY3QqIG1fb3JpZ2lu
YXRpbmdPYmplY3Q7CisgICAgYm9vbCBtX21pbWVTbmlmZmluZ0VuYWJsZWQ7Cit9OworCit9CisK
KyNlbmRpZiAvLyBGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Z1bGxTY3JlZW5WaWRlb1F0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDU3OGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5jcHAKQEAgLTAs
MCArMSwyMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRnVsbFNjcmVlblZpZGVvUXQuaCIKKworI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0Lmgi
CisjaWYgVVNFKFFUX01VTFRJTUVESUEpCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUXQu
aCIKKyNlbmRpZgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0Vs
ZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1
ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3dQcml2
YXRlLmgiCisjZW5kaWYKKworI2lmIFVTRShRVF9NVUxUSU1FRElBKQorI2luY2x1ZGUgPFFNZWRp
YVBsYXllcj4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoR1NUUkVB
TUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCitHU3RyZWFtZXJGdWxsU2NyZWVu
VmlkZW9IYW5kbGVyOjpHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKKyAgICA6IG1f
dmlkZW9FbGVtZW50KDApCisgICAgLCBtX2Z1bGxTY3JlZW5XaWRnZXQoMCkKK3sKK30KKwordm9p
ZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZp
ZGVvRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBtX3ZpZGVvRWxlbWVudCA9IGVsZW1lbnQ7Cit9
CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZW50ZXJGdWxsU2NyZWVu
KCkKK3sKKyAgICBpZiAobV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlICE9IFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdXb3JsZFR5cGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIEdTdHJlYW1lckdXb3JsZCogZ3N0cmVhbWVyR1dvcmxkID0gbV92aWRlb0VsZW1l
bnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29ybGQ7CisKKyAgICBpZiAoIWdz
dHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZnVsbFNjcmVlbldpZGdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVsbFNjcmVlblZpZGVvV2lu
ZG93Kj4oZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9ybVZpZGVvV2luZG93KCktPndpbmRvdygpKTsK
KyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNldFZpZGVvRWxlbWVudChtX3ZpZGVvRWxlbWVudCk7
CisgICAgY29ubmVjdChtX2Z1bGxTY3JlZW5XaWRnZXQsIFNJR05BTChjbG9zZWQoKSksIHRoaXMs
IFNMT1Qod2luZG93Q2xvc2VkKCkpKTsKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPnNob3dGdWxs
U2NyZWVuKCk7Cit9CisKK3ZvaWQgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6d2lu
ZG93Q2xvc2VkKCkKK3sKKyAgICBtX3ZpZGVvRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKK30K
Kwordm9pZCBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpleGl0RnVsbFNjcmVlbigp
Cit7CisgICAgaWYgKG1fdmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQorICAgICAgICBtX3ZpZGVv
RWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1bGxz
Y3JlZW4oKTsKKworICAgIG1fZnVsbFNjcmVlbldpZGdldC0+c2V0VmlkZW9FbGVtZW50KDApOwor
ICAgIG1fZnVsbFNjcmVlbldpZGdldC0+Y2xvc2UoKTsKK30KKyNlbmRpZgorCitGdWxsU2NyZWVu
VmlkZW9RdDo6RnVsbFNjcmVlblZpZGVvUXQoQ2hyb21lQ2xpZW50UXQqIGNocm9tZUNsaWVudCkK
KyAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKKyAgICAsIG1fdmlkZW9FbGVtZW50
KDApCit7CisgICAgUV9BU1NFUlQobV9jaHJvbWVDbGllbnQpOworCisjaWYgVVNFKFFUX01VTFRJ
TUVESUEpCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyID0gbV9jaHJvbWVDbGllbnQtPmNy
ZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKKyAgICBpZiAobV9GdWxsU2NyZWVuVmlkZW9I
YW5kbGVyKQorICAgICAgICBjb25uZWN0KG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlciwgU0lHTkFM
KGZ1bGxTY3JlZW5DbG9zZWQoKSksIHRoaXMsIFNMT1QoYWJvdXRUb0Nsb3NlKCkpKTsKKyNlbmRp
ZgorCisjaWYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQor
ICAgIG1fRnVsbFNjcmVlblZpZGVvSGFuZGxlckdTdHJlYW1lciA9IG5ldyBHU3RyZWFtZXJGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyOworI2VuZGlmCit9CisKK0Z1bGxTY3JlZW5WaWRlb1F0Ojp+RnVs
bFNjcmVlblZpZGVvUXQoKQoreworI2lmIFVTRShRVF9NVUxUSU1FRElBKQorICAgIGRlbGV0ZSBt
X0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI7CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBV
U0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgZGVsZXRlIG1fRnVsbFNjcmVlblZpZGVv
SGFuZGxlckdTdHJlYW1lcjsKKyNlbmRpZgorfQorCit2b2lkIEZ1bGxTY3JlZW5WaWRlb1F0Ojpl
bnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgUV9BU1NFUlQobm9kZSk7
CisgICAgbV92aWRlb0VsZW1lbnQgPSB0b0hUTUxWaWRlb0VsZW1lbnQobm9kZSk7CisKKyNpZiBV
U0UoUVRfTVVMVElNRURJQSkKKyAgICBRX0FTU0VSVChtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXIp
OworICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHRvSFRNTFZpZGVvRWxlbWVu
dChub2RlKTsKKyAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEgPSB2aWRlb0VsZW1lbnQt
PnBsYXRmb3JtTWVkaWEoKTsKKworICAgIEFTU0VSVChwbGF0Zm9ybU1lZGlhLnR5cGUgPT0gUGxh
dGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpOworICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5
cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXllclR5cGUpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQbGF5ZXJRdCA9IG1lZGlhUGxheWVyKCk7
CisgICAgbWVkaWFQbGF5ZXJRdC0+cmVtb3ZlVmlkZW9JdGVtKCk7CisgICAgbV9GdWxsU2NyZWVu
VmlkZW9IYW5kbGVyLT5lbnRlckZ1bGxTY3JlZW4obWVkaWFQbGF5ZXJRdC0+bWVkaWFQbGF5ZXIo
KSk7CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKKyAgICBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXItPnNldFZpZGVv
RWxlbWVudChtX3ZpZGVvRWxlbWVudCk7CisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0
cmVhbWVyLT5lbnRlckZ1bGxTY3JlZW4oKTsKKyNlbmRpZgorfQorCit2b2lkIEZ1bGxTY3JlZW5W
aWRlb1F0OjpleGl0RnVsbFNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBRX0FTU0VS
VChub2RlKTsKKworI2lmIFVTRShRVF9NVUxUSU1FRElBKQorICAgIEhUTUxWaWRlb0VsZW1lbnQq
IHZpZGVvRWxlbWVudCA9IHRvSFRNTFZpZGVvRWxlbWVudChub2RlKTsKKyAgICBQbGF0Zm9ybU1l
ZGlhIHBsYXRmb3JtTWVkaWEgPSB2aWRlb0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKKworICAg
IEFTU0VSVChwbGF0Zm9ybU1lZGlhLnR5cGUgPT0gUGxhdGZvcm1NZWRpYTo6UXRNZWRpYVBsYXll
clR5cGUpOworICAgIGlmIChwbGF0Zm9ybU1lZGlhLnR5cGUgIT0gUGxhdGZvcm1NZWRpYTo6UXRN
ZWRpYVBsYXllclR5cGUpCisgICAgICAgIHJldHVybjsKKworICAgIFFfQVNTRVJUKG1fRnVsbFNj
cmVlblZpZGVvSGFuZGxlcik7CisKKyAgICBpZiAoIW1fRnVsbFNjcmVlblZpZGVvSGFuZGxlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyLT5leGl0RnVs
bFNjcmVlbigpOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVF0KiBtZWRpYVBsYXllclF0ID0gbWVk
aWFQbGF5ZXIoKTsKKyAgICBtZWRpYVBsYXllclF0LT5yZXN0b3JlVmlkZW9JdGVtKCk7CisjZW5k
aWYKKyNpZiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisg
ICAgbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVhbWVyLT5leGl0RnVsbFNjcmVlbigpOwor
I2VuZGlmCit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvUXQ6OmFib3V0VG9DbG9zZSgpCit7Cisg
ICAgUV9BU1NFUlQobV92aWRlb0VsZW1lbnQpOworICAgIG1fdmlkZW9FbGVtZW50LT5leGl0RnVs
bHNjcmVlbigpOworfQorCisjaWYgVVNFKFFUX01VTFRJTUVESUEpCitNZWRpYVBsYXllclByaXZh
dGVRdCogRnVsbFNjcmVlblZpZGVvUXQ6Om1lZGlhUGxheWVyKCkKK3sKKyAgICBRX0FTU0VSVCht
X3ZpZGVvRWxlbWVudCk7CisgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhID0gbV92aWRl
b0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFQ
bGF5ZXJQcml2YXRlUXQqPihwbGF0Zm9ybU1lZGlhLm1lZGlhLnF0TWVkaWFQbGF5ZXIpOworfQor
I2VuZGlmCisKK2Jvb2wgRnVsbFNjcmVlblZpZGVvUXQ6OnJlcXVpcmVzRnVsbFNjcmVlbkZvclZp
ZGVvUGxheWJhY2soKQoreworI2lmIFVTRShRVF9NVUxUSU1FRElBKQorICAgIHJldHVybiBtX0Z1
bGxTY3JlZW5WaWRlb0hhbmRsZXIgPyBtX0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXItPnJlcXVpcmVz
RnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2soKSA6IGZhbHNlOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBGdWxsU2NyZWVuVmlkZW9RdDo6aXNWYWxpZCgpIGNv
bnN0Cit7CisjaWYgVVNFKFFUX01VTFRJTUVESUEpCisgICAgcmV0dXJuIG1fRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcjsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKKyAgICByZXR1cm4gbV9GdWxsU2NyZWVuVmlkZW9IYW5kbGVyR1N0cmVh
bWVyOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnVsbFNjcmVlblZpZGVvUXQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWJhMDc5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9RdC5oCkBAIC0w
LDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEZ1bGxTY3JlZW5WaWRlb1F0X2gK
KyNkZWZpbmUgRnVsbFNjcmVlblZpZGVvUXRfaAorCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3Jt
cGx1Z2luLmgiCisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRR3JhcGhpY3NWaWRlb0l0ZW07CitjbGFzcyBR
TWVkaWFQbGF5ZXI7CitRVF9FTkRfTkFNRVNQQUNFCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ2hyb21lQ2xpZW50UXQ7CitjbGFzcyBGdWxsU2NyZWVuVmlkZW9XaWRnZXQ7CitjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OworY2xhc3MgTm9kZTsKKyNpZiBVU0UoUVRfTVVMVElNRURJQSkK
K2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZVF0OworI2VuZGlmCisKKy8vIFdlIGRvIG5vdCB1c2Ug
RU5BQkxFIG9yIFVTRSBiZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2UgbWFjcm9zLgor
I2lmIGRlZmluZWQoV1RGX1VTRV9HU1RSRUFNRVIpICYmIFdURl9VU0VfR1NUUkVBTUVSICYmIGRl
ZmluZWQoV1RGX1VTRV9OQVRJVkVfRlVMTFNDUkVFTl9WSURFTykgJiYgV1RGX1VTRV9OQVRJVkVf
RlVMTFNDUkVFTl9WSURFTworY2xhc3MgRnVsbFNjcmVlblZpZGVvV2luZG93OworCitjbGFzcyBH
U3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFf
T0JKRUNUCitwdWJsaWM6CisgICAgR1N0cmVhbWVyRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOwor
ICAgIH5HU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkgeyB9CisgICAgdm9pZCBzZXRW
aWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOworCisgICAgdm9pZCBlbnRlckZ1bGxTY3Jl
ZW4oKTsKKyAgICB2b2lkIGV4aXRGdWxsU2NyZWVuKCk7CisKK3B1YmxpYyBRX1NMT1RTOgorICAg
IHZvaWQgd2luZG93Q2xvc2VkKCk7CisKK3ByaXZhdGU6CisgICAgSFRNTFZpZGVvRWxlbWVudCog
bV92aWRlb0VsZW1lbnQ7CisgICAgRnVsbFNjcmVlblZpZGVvV2luZG93KiBtX2Z1bGxTY3JlZW5X
aWRnZXQ7Cit9OworI2VuZGlmCisKK2NsYXNzIEZ1bGxTY3JlZW5WaWRlb1F0IDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgRnVsbFNjcmVlblZpZGVvUXQoQ2hy
b21lQ2xpZW50UXQqKTsKKyAgICB+RnVsbFNjcmVlblZpZGVvUXQoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhp
dEZ1bGxTY3JlZW5Gb3JOb2RlKE5vZGUqKTsKKyAgICBib29sIHJlcXVpcmVzRnVsbFNjcmVlbkZv
clZpZGVvUGxheWJhY2soKTsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKKworcHJpdmF0ZToK
KyNpZiBVU0UoUVRfTVVMVElNRURJQSkKKyAgICBNZWRpYVBsYXllclByaXZhdGVRdCogbWVkaWFQ
bGF5ZXIoKTsKKyNlbmRpZgorCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBhYm91dFRvQ2xv
c2UoKTsKKworcHJpdmF0ZToKKyAgICBDaHJvbWVDbGllbnRRdCogbV9jaHJvbWVDbGllbnQ7Cisg
ICAgSFRNTFZpZGVvRWxlbWVudCogbV92aWRlb0VsZW1lbnQ7CisjaWYgVVNFKFFUX01VTFRJTUVE
SUEpCisgICAgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIqIG1fRnVsbFNjcmVlblZpZGVvSGFu
ZGxlcjsKKyNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTykKKyAgICBHU3RyZWFtZXJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBtX0Z1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXJHU3RyZWFtZXI7CisjZW5kaWYKK307CisKK30KKworI2VuZGlmIC8vIEZ1
bGxTY3JlZW5WaWRlb1F0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmI0YzUxODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xpZW50UXQuaCIK
KworI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Db250cm9s
bGVyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25FcnJvci5oIgorI2luY2x1ZGUgIkdlb2xvY2F0
aW9uUGVybWlzc2lvbkNsaWVudFF0LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisK
KyNpbmNsdWRlIDxRdFBvc2l0aW9uaW5nL1FHZW9Qb3NpdGlvbkluZm9Tb3VyY2U+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGNoYXIgZmFpbGVkVG9TdGFydFNlcnZpY2VF
cnJvck1lc3NhZ2VbXSA9ICJGYWlsZWQgdG8gc3RhcnQgR2VvbG9jYXRpb24gc2VydmljZSI7CisK
K0dlb2xvY2F0aW9uQ2xpZW50UXQ6Okdlb2xvY2F0aW9uQ2xpZW50UXQoY29uc3QgUVdlYlBhZ2VB
ZGFwdGVyKiBwYWdlKQorICAgIDogbV93ZWJQYWdlKHBhZ2UpCisgICAgLCBtX2xhc3RQb3NpdGlv
bigwKQorICAgICwgbV9sb2NhdGlvbigwKQoreworfQorCitHZW9sb2NhdGlvbkNsaWVudFF0Ojp+
R2VvbG9jYXRpb25DbGllbnRRdCgpCit7CisgICAgZGVsZXRlIG1fbG9jYXRpb247Cit9CisKK3Zv
aWQgR2VvbG9jYXRpb25DbGllbnRRdDo6Z2VvbG9jYXRpb25EZXN0cm95ZWQoKQoreworICAgIGRl
bGV0ZSB0aGlzOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UXQ6OnBvc2l0aW9uVXBkYXRl
ZChjb25zdCBRR2VvUG9zaXRpb25JbmZvJiBnZW9Qb3NpdGlvbikKK3sKKyAgICBpZiAoIWdlb1Bv
c2l0aW9uLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUUdlb0Nvb3JkaW5hdGUg
Y29vcmQgPSBnZW9Qb3NpdGlvbi5jb29yZGluYXRlKCk7CisgICAgZG91YmxlIGxhdGl0dWRlID0g
Y29vcmQubGF0aXR1ZGUoKTsKKyAgICBkb3VibGUgbG9uZ2l0dWRlID0gY29vcmQubG9uZ2l0dWRl
KCk7CisgICAgYm9vbCBwcm92aWRlc0FsdGl0dWRlID0gKGdlb1Bvc2l0aW9uLmNvb3JkaW5hdGUo
KS50eXBlKCkgPT0gUUdlb0Nvb3JkaW5hdGU6OkNvb3JkaW5hdGUzRCk7CisgICAgZG91YmxlIGFs
dGl0dWRlID0gY29vcmQuYWx0aXR1ZGUoKTsKKworICAgIGRvdWJsZSBhY2N1cmFjeSA9IGdlb1Bv
c2l0aW9uLmF0dHJpYnV0ZShRR2VvUG9zaXRpb25JbmZvOjpIb3Jpem9udGFsQWNjdXJhY3kpOwor
CisgICAgYm9vbCBwcm92aWRlc0FsdGl0dWRlQWNjdXJhY3kgPSBnZW9Qb3NpdGlvbi5oYXNBdHRy
aWJ1dGUoUUdlb1Bvc2l0aW9uSW5mbzo6VmVydGljYWxBY2N1cmFjeSk7CisgICAgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3kgPSBnZW9Qb3NpdGlvbi5hdHRyaWJ1dGUoUUdlb1Bvc2l0aW9uSW5mbzo6
VmVydGljYWxBY2N1cmFjeSk7CisKKyAgICBib29sIHByb3ZpZGVzSGVhZGluZyA9ICBnZW9Qb3Np
dGlvbi5oYXNBdHRyaWJ1dGUoUUdlb1Bvc2l0aW9uSW5mbzo6RGlyZWN0aW9uKTsKKyAgICBkb3Vi
bGUgaGVhZGluZyA9IGdlb1Bvc2l0aW9uLmF0dHJpYnV0ZShRR2VvUG9zaXRpb25JbmZvOjpEaXJl
Y3Rpb24pOworCisgICAgYm9vbCBwcm92aWRlc1NwZWVkID0gZ2VvUG9zaXRpb24uaGFzQXR0cmli
dXRlKFFHZW9Qb3NpdGlvbkluZm86Okdyb3VuZFNwZWVkKTsKKyAgICBkb3VibGUgc3BlZWQgPSBn
ZW9Qb3NpdGlvbi5hdHRyaWJ1dGUoUUdlb1Bvc2l0aW9uSW5mbzo6R3JvdW5kU3BlZWQpOworCisg
ICAgZG91YmxlIHRpbWVTdGFtcEluU2Vjb25kcyA9IGdlb1Bvc2l0aW9uLnRpbWVzdGFtcCgpLnRv
TVNlY3NTaW5jZUVwb2NoKCkgLyAxMDAwOworCisgICAgbV9sYXN0UG9zaXRpb24gPSBHZW9sb2Nh
dGlvblBvc2l0aW9uOjpjcmVhdGUodGltZVN0YW1wSW5TZWNvbmRzLCBsYXRpdHVkZSwgbG9uZ2l0
dWRlLCBhY2N1cmFjeSwgcHJvdmlkZXNBbHRpdHVkZSwgYWx0aXR1ZGUsIHByb3ZpZGVzQWx0aXR1
ZGVBY2N1cmFjeSwgYWx0aXR1ZGVBY2N1cmFjeSwgcHJvdmlkZXNIZWFkaW5nLCBoZWFkaW5nLCBw
cm92aWRlc1NwZWVkLCBzcGVlZCk7CisKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0gbV93ZWJQ
YWdlLT5wYWdlOworICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+cG9zaXRp
b25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbkNs
aWVudFF0OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1fbG9jYXRpb24gJiYgKG1fbG9j
YXRpb24gPSBRR2VvUG9zaXRpb25JbmZvU291cmNlOjpjcmVhdGVEZWZhdWx0U291cmNlKHRoaXMp
KSkKKyAgICAgICAgY29ubmVjdChtX2xvY2F0aW9uLCBTSUdOQUwocG9zaXRpb25VcGRhdGVkKFFH
ZW9Qb3NpdGlvbkluZm8pKSwgdGhpcywgU0xPVChwb3NpdGlvblVwZGF0ZWQoUUdlb1Bvc2l0aW9u
SW5mbykpKTsKKworICAgIGlmICghbV9sb2NhdGlvbikgeworICAgICAgICBXZWJDb3JlOjpQYWdl
KiBwYWdlID0gbV93ZWJQYWdlLT5wYWdlOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6R2VvbG9j
YXRpb25FcnJvcj4gZXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25F
cnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3Nh
Z2UpOworICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmVycm9yT2Nj
dXJyZWQoZXJyb3IuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sb2Nh
dGlvbi0+c3RhcnRVcGRhdGVzKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25DbGllbnRRdDo6c3Rv
cFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV9sb2NhdGlvbikKKyAgICAgICAgbV9sb2NhdGlvbi0+
c3RvcFVwZGF0ZXMoKTsKK30KKworCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UXQ6OnNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sKQoreworICAgIC8vIHF0bW9iaWxpdHkgMS4wIHN1cHBvcnRzIG9u
bHkgR1BTIGFzIG9mIG5vdyBzbyBoaWdoIGFjY3VyYWN5IGlzIGVuYWJsZWQgYnkgZGVmYXVsdAor
fQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0
aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAgICBBU1NFUlQoZ2VvbG9jYXRpb24pOworICAgIFFXZWJG
cmFtZUFkYXB0ZXIqIHdlYkZyYW1lID0gUVdlYkZyYW1lQWRhcHRlcjo6a2l0KGdlb2xvY2F0aW9u
LT5mcmFtZSgpKTsKKyAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdDo6Z2VvbG9jYXRp
b25QZXJtaXNzaW9uQ2xpZW50KCktPnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFt
ZSh3ZWJGcmFtZSwgZ2VvbG9jYXRpb24pOworfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50UXQ6
OmNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikKK3sKKyAg
ICBBU1NFUlQoZ2VvbG9jYXRpb24pOworICAgIFFXZWJGcmFtZUFkYXB0ZXIqIHdlYkZyYW1lID0g
UVdlYkZyYW1lQWRhcHRlcjo6a2l0KGdlb2xvY2F0aW9uLT5mcmFtZSgpKTsKKyAgICBHZW9sb2Nh
dGlvblBlcm1pc3Npb25DbGllbnRRdDo6Z2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50KCktPmNh
bmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZSh3ZWJGcmFtZSwgZ2VvbG9j
YXRpb24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNpbmNsdWRlICJtb2NfR2Vv
bG9jYXRpb25DbGllbnRRdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmMyMjg3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuaApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEdlb2xvY2F0aW9uQ2xpZW50UXRfaAorI2RlZmluZSBHZW9sb2NhdGlvbkNsaWVudFF0
X2gKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ2xpZW50LmgiCisKKyNpbmNsdWRlIDxRR2VvUG9z
aXRpb25JbmZvPgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFHZW9Qb3NpdGlvbkluZm9Tb3VyY2U7CitRVF9F
TkRfTkFNRVNQQUNFCisKKworY2xhc3MgUVdlYlBhZ2VBZGFwdGVyOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKy8vIFRoaXMgY2xhc3MgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBH
ZW9sb2NhdGlvbkNsaWVudCBmb3IgUXRXZWJraXQuCitjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFF0
IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgUV9PQkpF
Q1QKKworcHVibGljOgorICAgIEdlb2xvY2F0aW9uQ2xpZW50UXQoY29uc3QgUVdlYlBhZ2VBZGFw
dGVyKik7CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25DbGllbnRRdCgpOworCisgICAgdmlydHVh
bCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBk
YXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKKyAgICB2b2lkIHNl
dEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsKKyAgICB2aXJ0dWFsIEdlb2xvY2F0aW9uUG9zaXRp
b24qIGxhc3RQb3NpdGlvbigpIHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoR2VvbG9jYXRpb24qKTsKKworcHJpdmF0
ZSBRX1NMT1RTOgorICAgIHZvaWQgcG9zaXRpb25VcGRhdGVkKGNvbnN0IFFHZW9Qb3NpdGlvbklu
Zm8mKTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBRV2ViUGFnZUFkYXB0ZXIqIG1fd2ViUGFnZTsK
KyAgICBSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CisgICAgUUdl
b1Bvc2l0aW9uSW5mb1NvdXJjZSogbV9sb2NhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uQ2xpZW50UXRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlz
c2lvbkNsaWVudFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGU0
NzY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9H
ZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdC5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25QZXJtaXNzaW9u
Q2xpZW50UXQuaCIKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiUVdlYkZy
YW1lQWRhcHRlci5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQWRhcHRlci5oIgorI2luY2x1ZGUgInF3
ZWJraXRnbG9iYWwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQorCitzdGF0aWMgR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQqIHNfZ2VvbG9j
YXRpb25QZXJtaXNzaW9uOworCitHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdCogR2VvbG9j
YXRpb25QZXJtaXNzaW9uQ2xpZW50UXQ6Omdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudCgpCit7
CisgICAgaWYgKHNfZ2VvbG9jYXRpb25QZXJtaXNzaW9uKQorICAgICAgICByZXR1cm4gc19nZW9s
b2NhdGlvblBlcm1pc3Npb247CisKKyAgICBzX2dlb2xvY2F0aW9uUGVybWlzc2lvbiA9IG5ldyBH
ZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdCgpOworICAgIHJldHVybiBzX2dlb2xvY2F0aW9u
UGVybWlzc2lvbjsKK30KKworR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQ6Okdlb2xvY2F0
aW9uUGVybWlzc2lvbkNsaWVudFF0KCkKK3sKK30KKworR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xp
ZW50UXQ6On5HZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdCgpCit7Cit9CisKK3ZvaWQgR2Vv
bG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQ6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZShRV2ViRnJhbWVBZGFwdGVyKiB3ZWJGcmFtZSwgR2VvbG9jYXRpb24qIGxpc3RlbmVy
KQoreworICAgIG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5pbnNlcnQod2ViRnJhbWUsIGxp
c3RlbmVyKTsKKworICAgIFFXZWJQYWdlQWRhcHRlciogcGFnZSA9IFFXZWJQYWdlQWRhcHRlcjo6
a2l0KHdlYkZyYW1lLT5mcmFtZS0+cGFnZSgpKTsKKyAgICBwYWdlLT5nZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0ZWQod2ViRnJhbWUpOworfQorCisKK3ZvaWQgR2VvbG9jYXRpb25QZXJtaXNz
aW9uQ2xpZW50UXQ6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShR
V2ViRnJhbWVBZGFwdGVyKiB3ZWJGcmFtZSwgR2VvbG9jYXRpb24qIGxpc3RlbmVyKQoreworICAg
IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5yZW1vdmUod2ViRnJhbWUpOworCisgICAgUVdl
YlBhZ2VBZGFwdGVyKiBwYWdlID0gUVdlYlBhZ2VBZGFwdGVyOjpraXQod2ViRnJhbWUtPmZyYW1l
LT5wYWdlKCkpOworICAgIHBhZ2UtPmdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYW5jZWxs
ZWQod2ViRnJhbWUpOworfQorCit2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0Ojpz
ZXRQZXJtaXNzaW9uKFFXZWJGcmFtZUFkYXB0ZXIqIHdlYkZyYW1lLCBib29sIGdyYW50ZWQpCit7
ICAKKyAgICBpZiAoIW1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5jb250YWlucyh3ZWJGcmFt
ZSkpIAorICAgICAgICByZXR1cm47CisKKyAgICBHZW9sb2NhdGlvbiogbGlzdGVuZXIgPSBtX3Bl
bmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMudmFsdWUod2ViRnJhbWUpOworICAgIGxpc3RlbmVyLT5z
ZXRJc0FsbG93ZWQoZ3JhbnRlZCk7CisKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMu
cmVtb3ZlKHdlYkZyYW1lKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvR2Vv
bG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43MTE4M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9HZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdC5oCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdF9oCisj
ZGVmaW5lIEdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0X2gKKworI2lmIEVOQUJMRShHRU9M
T0NBVElPTikKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisKKyNpbmNsdWRlIDxRSGFzaD4K
KworY2xhc3MgUVdlYkZyYW1lQWRhcHRlcjsKK2NsYXNzIFFXZWJQYWdlQWRhcHRlcjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdCB7
CitwdWJsaWM6CisgICAgR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQoKTsKKyAgICB+R2Vv
bG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQoKTsKKworICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKFFXZWJGcmFtZUFkYXB0ZXIqLCBHZW9sb2NhdGlvbiopOwor
ICAgIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFFXZWJG
cmFtZUFkYXB0ZXIqLCBHZW9sb2NhdGlvbiopOworICAgIHZvaWQgc2V0UGVybWlzc2lvbihRV2Vi
RnJhbWVBZGFwdGVyKiwgYm9vbCAvKmdyYW50ZWQqLyk7CisKKyAgICBzdGF0aWMgR2VvbG9jYXRp
b25QZXJtaXNzaW9uQ2xpZW50UXQqIGdlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudCgpOworcHJp
dmF0ZToKKyAgICBRSGFzaDxRV2ViRnJhbWVBZGFwdGVyKiwgR2VvbG9jYXRpb24qPiBtX3BlbmRp
bmdQZXJtaXNzaW9uUmVxdWVzdHM7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoR0VPTE9D
QVRJT04pCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9JY29uRGF0YWJhc2VDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4wMWQ5ZmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9JY29uRGF0YWJhc2VDbGllbnRRdC5jcHAKQEAgLTAsMCArMSw3OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRyZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3Jn
PgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudFF0LmgiCisKKyNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudFF0LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCisjaW5jbHVkZSAi
SWNvbkRhdGFiYXNlQmFzZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitJY29uRGF0YWJhc2VDbGllbnRRdCogSWNvbkRhdGFiYXNlQ2xp
ZW50UXQ6Omluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgSWNvbkRhdGFiYXNlQ2xpZW50UXQqIGNs
aWVudCA9IDA7CisgICAgaWYgKCFjbGllbnQpIHsKKyAgICAgICAgY2xpZW50ID0gbmV3IEljb25E
YXRhYmFzZUNsaWVudFF0OworICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRDbGllbnQoY2xpZW50
KTsKKyAgICB9CisgICAgcmV0dXJuIGNsaWVudDsKK30KKworSWNvbkRhdGFiYXNlQ2xpZW50UXQ6
Okljb25EYXRhYmFzZUNsaWVudFF0KCkKK3sKK30KKworSWNvbkRhdGFiYXNlQ2xpZW50UXQ6On5J
Y29uRGF0YWJhc2VDbGllbnRRdCgpCit7Cit9CisKK3ZvaWQgSWNvbkRhdGFiYXNlQ2xpZW50UXQ6
OmRpZFJlbW92ZUFsbEljb25zKCkKK3sKK30KKwordm9pZCBJY29uRGF0YWJhc2VDbGllbnRRdDo6
ZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7Cit9CisKK3Zv
aWQgSWNvbkRhdGFiYXNlQ2xpZW50UXQ6OmRpZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHVybCkKK3sKKyAgICBlbWl0IGljb25Mb2FkZWRGb3JQYWdlVVJMKHVybCk7Cit9
CisKK3ZvaWQgSWNvbkRhdGFiYXNlQ2xpZW50UXQ6OmRpZENoYW5nZUljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgdXJsKQoreworfQorCit2b2lkIEljb25EYXRhYmFzZUNsaWVudFF0OjpkaWRG
aW5pc2hVUkxJbXBvcnQoKQoreworfQorCit9CisKKyNpbmNsdWRlICJtb2NfSWNvbkRhdGFiYXNl
Q2xpZW50UXQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9JY29uRGF0YWJhc2VDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9JY29uRGF0YWJhc2VDbGllbnRRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjZhYzIxMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ljb25EYXRhYmFzZUNsaWVudFF0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBbmRyZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3JnPgorICoKKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJY29uRGF0YWJhc2VDbGllbnRR
dF9oCisjZGVmaW5lIEljb25EYXRhYmFzZUNsaWVudFF0X2gKKworI2luY2x1ZGUgIkljb25EYXRh
YmFzZUNsaWVudC5oIgorI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEljb25EYXRhYmFzZUNsaWVudFF0IDogcHVibGljIFFPYmplY3QsIHB1
YmxpYyBJY29uRGF0YWJhc2VDbGllbnQgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3Rh
dGljIEljb25EYXRhYmFzZUNsaWVudFF0KiBpbnN0YW5jZSgpOworCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlbW92ZUFsbEljb25zKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25VUkxG
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRJbXBvcnRJY29u
RGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hVUkxJbXBvcnQoKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgaWNvbkxvYWRlZEZvclBhZ2VV
UkwoY29uc3QgUVN0cmluZyYpOworCitwcml2YXRlOgorICAgIEljb25EYXRhYmFzZUNsaWVudFF0
KCk7CisgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50UXQoKTsKK307CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJD
b3JlUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODlmMTBlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0
LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDExIEhld2xldHQtUGFj
a2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBIZXdsZXR0LVBhY2thcmQg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKKworI2luY2x1
ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCisjaW5jbHVkZSAiRm9u
dC5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzUXQuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUaGVtZVFTdHlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJTY3JvbGxiYXJUaGVtZVFTdHlsZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCisK
KyNpbmNsdWRlICJxd2ViZWxlbWVudF9wLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBRdFN0eWxlRmFjYWRlRmFjdG9yeUZ1bmN0
aW9uIGluaXRDYWxsYmFjayA9IDA7CisKK1FfREVDTF9FWFBPUlQgdm9pZCBzZXRXZWJLaXRXaWRn
ZXRzSW5pdENhbGxiYWNrKFF0U3R5bGVGYWNhZGVGYWN0b3J5RnVuY3Rpb24gY2FsbGJhY2spCit7
CisgICAgaW5pdENhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK3N0YXRpYyBXZWJDb3JlOjpRU3R5
bGVGYWNhZGUqIGNyZWF0ZVN0eWxlRm9yUGFnZShXZWJDb3JlOjpQYWdlKiBwYWdlKQoreworICAg
IFFXZWJQYWdlQWRhcHRlciogcGFnZUFkYXB0ZXIgPSAwOworICAgIGlmIChwYWdlKQorICAgICAg
ICBwYWdlQWRhcHRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Jj4ocGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkpLm1fd2ViUGFnZTsKKyAgICByZXR1cm4gaW5pdENhbGxiYWNr
KHBhZ2VBZGFwdGVyKTsKK30KKworLy8gQ2FsbGVkIGFsc28gZnJvbSBXZWJLaXQyJ3MgV2ViUHJv
Y2VzcworUV9ERUNMX0VYUE9SVCB2b2lkIGluaXRpYWxpemVXZWJLaXRRdCgpCit7CisgICAgaWYg
KGluaXRDYWxsYmFjaykgeworICAgICAgICBXZWJDb3JlOjpSZW5kZXJUaGVtZVFTdHlsZTo6c2V0
U3R5bGVGYWN0b3J5RnVuY3Rpb24oY3JlYXRlU3R5bGVGb3JQYWdlKTsKKyAgICAgICAgV2ViQ29y
ZTo6UmVuZGVyVGhlbWVRdDo6c2V0Q3VzdG9tVGhlbWUoV2ViQ29yZTo6UmVuZGVyVGhlbWVRU3R5
bGU6OmNyZWF0ZSwgbmV3IFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUVN0eWxlKTsKKyNpZiBRVF9W
RVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNSwgMSwgMCkKKyAgICAgICAgLy8gT25seSBlbmFi
bGUga2VybmluZyBieSBkZWZhdWx0IGluIFF0IDUuMSB3aGVyZSBpdCBjYW4gdXNlIHRoZSBmYXN0
IGZvbnQgcGF0aC4KKyAgICAgICAgLy8gSW4gUXQgNS4wIHRoaXMgd291bGQgaGF2ZSBmb3JjZWQg
dGhlIGNvbXBsZXggZm9udCBwYXRoLgorICAgICAgICBXZWJDb3JlOjpGb250OjpzZXREZWZhdWx0
VHlwZXNldHRpbmdGZWF0dXJlcyhXZWJDb3JlOjpLZXJuaW5nKTsKKyNlbmRpZgorICAgIH0KK30K
KworUV9ERUNMX0VYUE9SVCB2b2lkIHNldEltYWdlUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBRUGl4bWFwJiBwaXhtYXApCit7CisgICAgV2ViQ29yZTo6SW1hZ2U6OnNl
dFBsYXRmb3JtUmVzb3VyY2UobmFtZSwgcGl4bWFwKTsKK30KKworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1FfREVDTF9FWFBPUlQgdm9pZCBpbml0aWFsaXplV2ViQ29yZVF0KCkKK3sKKyAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkK
KyAgICAgICAgcmV0dXJuOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIFdlYkNvcmU6OmluaXRp
YWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOworI2VuZGlmIC8vICFMT0dfRElTQUJM
RUQKKyAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5Ojpz
ZXRMb2NhbExvYWRQb2xpY3koV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxMb2Fk
c0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEpOworCisgICAgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmluaXRpYWxpemUoKTsKKyAgICBRdFdlYkVsZW1lbnRSdW50aW1lOjppbml0aWFsaXplKCk7CisK
KyAgICBpZiAoIVdlYkNvcmU6Om1lbW9yeUNhY2hlKCktPmRpc2FibGVkKCkpCisgICAgICAgIFdl
YkNvcmU6Om1lbW9yeUNhY2hlKCktPnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwo
NjApOworCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuaCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjU5MTM5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IDIwMTEgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwu
UC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEhld2xldHQtUGFja2FyZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluaXRXZWJDb3JlUXRfaAorI2Rl
ZmluZSBJbml0V2ViQ29yZVF0X2gKKworI2luY2x1ZGUgInFpbWFnZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBQYWdlOworY2xhc3MgUVN0eWxlRmFjYWRlOworfQorY2xhc3MgUVdl
YlBhZ2VBZGFwdGVyOworCit0eXBlZGVmIFdlYkNvcmU6OlFTdHlsZUZhY2FkZSogKCpRdFN0eWxl
RmFjYWRlRmFjdG9yeUZ1bmN0aW9uKShRV2ViUGFnZUFkYXB0ZXIqKTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1FfREVDTF9FWFBPUlQgdm9pZCBzZXRXZWJLaXRXaWRnZXRzSW5pdENhbGxiYWNr
KFF0U3R5bGVGYWNhZGVGYWN0b3J5RnVuY3Rpb24pOworUV9ERUNMX0VYUE9SVCB2b2lkIGluaXRp
YWxpemVXZWJLaXRRdCgpOworUV9ERUNMX0VYUE9SVCB2b2lkIHNldEltYWdlUGxhdGZvcm1SZXNv
dXJjZShjb25zdCBjaGFyKiAvKiBuYW1lICovLCBjb25zdCBRUGl4bWFwJik7CisKK30KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitRX0RFQ0xfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVdlYkNvcmVR
dCgpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42N2M2ODIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAgLTAsMCArMSwzODUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
cgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRRdC5oIgor
CisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU2Vy
dmVyUXQuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisj
aW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFGaWxlPgorI2luY2x1
ZGUgPFFOZXR3b3JrUmVxdWVzdD4KKyNpbmNsdWRlIDxRU2V0dGluZ3M+CisjaW5jbHVkZSA8UVVy
bD4KKyNpbmNsdWRlIDxRVmFyaWFudD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFFMYXRpbjFTdHJpbmcgc2V0dGlu
Z1N0b3JhZ2VQcmVmaXgoIlF0L1F0V2ViS2l0L1FXZWJJbnNwZWN0b3IvIik7CitzdGF0aWMgY29u
c3QgUUxhdGluMVN0cmluZyBzZXR0aW5nU3RvcmFnZVR5cGVTdWZmaXgoIi50eXBlIik7CisKK25h
bWVzcGFjZSB7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRTZXR0aW5nc1F0IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRp
bmdzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzUXQo
KSB7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgeworI2lmZGVmIFFUX05PX1NFVFRJTkdTCisgICAgICAgIFFfVU5VU0VEKG5hbWUpCisg
ICAgICAgIFFfVU5VU0VEKHZhbHVlKQorICAgICAgICBxV2FybmluZygiUVdlYkluc3BlY3Rvcjog
UVNldHRpbmdzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgUXQuIik7CisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyNlbHNlCisgICAgICAgIFFTZXR0aW5ncyBxc2V0dGluZ3M7CisgICAgICAgIGlmIChx
c2V0dGluZ3Muc3RhdHVzKCkgPT0gUVNldHRpbmdzOjpBY2Nlc3NFcnJvcikgeworICAgICAgICAg
ICAgLy8gUUNvcmVBcHBsaWNhdGlvbjo6c2V0T3JnYW5pemF0aW9uTmFtZSBhbmQgUUNvcmVBcHBs
aWNhdGlvbjo6c2V0QXBwbGljYXRpb25OYW1lIGhhdmVuJ3QgYmVlbiBjYWxsZWQKKyAgICAgICAg
ICAgIHFXYXJuaW5nKCJRV2ViSW5zcGVjdG9yOiBRU2V0dGluZ3MgY291bGRuJ3QgcmVhZCBjb25m
aWd1cmF0aW9uIHNldHRpbmcgWyVzXS4iLAorICAgICAgICAgICAgICAgIHFQcmludGFibGUoc3Rh
dGljX2Nhc3Q8UVN0cmluZz4obmFtZSkpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICAgICAgfQorCisgICAgICAgIFFTdHJpbmcgc2V0dGluZ0tleShzZXR0aW5nU3RvcmFnZVBy
ZWZpeCArIFFTdHJpbmcobmFtZSkpOworICAgICAgICBRU3RyaW5nIHN0b3JlZFZhbHVlVHlwZSA9
IHFzZXR0aW5ncy52YWx1ZShzZXR0aW5nS2V5ICsgc2V0dGluZ1N0b3JhZ2VUeXBlU3VmZml4KS50
b1N0cmluZygpOworICAgICAgICBRVmFyaWFudCBzdG9yZWRWYWx1ZSA9IHFzZXR0aW5ncy52YWx1
ZShzZXR0aW5nS2V5KTsKKyAgICAgICAgc3RvcmVkVmFsdWUuY29udmVydChRVmFyaWFudDo6bmFt
ZVRvVHlwZShzdG9yZWRWYWx1ZVR5cGUudG9MYXRpbjEoKS5kYXRhKCkpKTsKKyAgICAgICAgcmV0
dXJuIHZhcmlhbnRUb1NldHRpbmcoc3RvcmVkVmFsdWUpOworI2VuZGlmIC8vIFFUX05PX1NFVFRJ
TkdTCisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisjaWZkZWYgUVRfTk9fU0VUVElOR1MK
KyAgICAgICAgUV9VTlVTRUQobmFtZSkKKyAgICAgICAgUV9VTlVTRUQodmFsdWUpCisgICAgICAg
IHFXYXJuaW5nKCJRV2ViSW5zcGVjdG9yOiBRU2V0dGluZ3MgaXMgbm90IHN1cHBvcnRlZCBieSBR
dC4iKTsKKyNlbHNlCisgICAgICAgIFFTZXR0aW5ncyBxc2V0dGluZ3M7CisgICAgICAgIGlmIChx
c2V0dGluZ3Muc3RhdHVzKCkgPT0gUVNldHRpbmdzOjpBY2Nlc3NFcnJvcikgeworICAgICAgICAg
ICAgcVdhcm5pbmcoIlFXZWJJbnNwZWN0b3I6IFFTZXR0aW5ncyBjb3VsZG4ndCBwZXJzaXN0IGNv
bmZpZ3VyYXRpb24gc2V0dGluZyBbJXNdLiIsCisgICAgICAgICAgICAgICAgcVByaW50YWJsZShz
dGF0aWNfY2FzdDxRU3RyaW5nPihuYW1lKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgUVZhcmlhbnQgdmFsdWVUb1N0b3JlID0gc2V0dGluZ1RvVmFyaWFudCh2
YWx1ZSk7CisgICAgICAgIFFTdHJpbmcgc2V0dGluZ0tleShzZXR0aW5nU3RvcmFnZVByZWZpeCAr
IFFTdHJpbmcobmFtZSkpOworICAgICAgICBxc2V0dGluZ3Muc2V0VmFsdWUoc2V0dGluZ0tleSwg
dmFsdWVUb1N0b3JlKTsKKyAgICAgICAgcXNldHRpbmdzLnNldFZhbHVlKHNldHRpbmdLZXkgKyBz
ZXR0aW5nU3RvcmFnZVR5cGVTdWZmaXgsIFFMYXRpbjFTdHJpbmcoUVZhcmlhbnQ6OnR5cGVUb05h
bWUodmFsdWVUb1N0b3JlLnR5cGUoKSkpKTsKKyNlbmRpZiAvLyBRVF9OT19TRVRUSU5HUworICAg
IH0KKworcHJpdmF0ZToKKyAgICBzdGF0aWMgU3RyaW5nIHZhcmlhbnRUb1NldHRpbmcoY29uc3Qg
UVZhcmlhbnQmIHF2YXJpYW50KQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJldFZhbDsKKworICAg
ICAgICBzd2l0Y2ggKHF2YXJpYW50LnR5cGUoKSkgeworICAgICAgICBjYXNlIFFWYXJpYW50OjpC
b29sOgorICAgICAgICAgICAgcmV0VmFsID0gcXZhcmlhbnQudG9Cb29sKCkgPyAidHJ1ZSIgOiAi
ZmFsc2UiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUVZhcmlhbnQ6OlN0cmlu
ZzoKKyAgICAgICAgICAgIHJldFZhbCA9IHF2YXJpYW50LnRvU3RyaW5nKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHJldFZhbDsKKyAgICB9CisKKyAgICBzdGF0aWMgUVZhcmlhbnQg
c2V0dGluZ1RvVmFyaWFudChjb25zdCBTdHJpbmcmIHNldHRpbmcpCisgICAgeworICAgICAgICBR
VmFyaWFudCByZXRWYWw7CisgICAgICAgIHJldFZhbC5zZXRWYWx1ZShzdGF0aWNfY2FzdDxRU3Ry
aW5nPihzZXR0aW5nKSk7CisgICAgICAgIHJldHVybiByZXRWYWw7CisgICAgfQorfTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCit9CisKK0luc3BlY3RvckNsaWVudFF0OjpJbnNwZWN0
b3JDbGllbnRRdChRV2ViUGFnZUFkYXB0ZXIqIHBhZ2UpCisgICAgOiBtX2luc3BlY3RlZFdlYlBh
Z2UocGFnZSkKKyAgICAsIG1fZnJvbnRlbmRXZWJQYWdlKDApCisgICAgLCBtX2Zyb250ZW5kQ2xp
ZW50KDApCisgICAgLCBtX3JlbW90ZUZyb250RW5kQ2hhbm5lbCgwKQoreworICAgIEluc3BlY3Rv
clNlcnZlclF0KiB3ZWJJbnNwZWN0b3JTZXJ2ZXIgPSBJbnNwZWN0b3JTZXJ2ZXJRdDo6c2VydmVy
KCk7CisgICAgaWYgKHdlYkluc3BlY3RvclNlcnZlcikKKyAgICAgICAgd2ViSW5zcGVjdG9yU2Vy
dmVyLT5yZWdpc3RlckNsaWVudCh0aGlzKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6
aW5zcGVjdG9yRGVzdHJveWVkKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKKworICAgIEluc3BlY3RvclNlcnZlclF0KiB3ZWJJbnNwZWN0
b3JTZXJ2ZXIgPSBJbnNwZWN0b3JTZXJ2ZXJRdDo6c2VydmVyKCk7CisgICAgaWYgKHdlYkluc3Bl
Y3RvclNlcnZlcikKKyAgICAgICAgd2ViSW5zcGVjdG9yU2VydmVyLT51bnJlZ2lzdGVyQ2xpZW50
KHRoaXMpOworCisgICAgZGVsZXRlIHRoaXM7CisjZW5kaWYKK30KKworICAgIAorV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3Rv
ckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIpCit7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENo
YW5uZWwgPSAwOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgUU9iamVjdCogdmlldyA9IDA7
CisgICAgUVdlYlBhZ2VBZGFwdGVyKiBpbnNwZWN0b3JQYWdlID0gMDsKKyAgICBtX2luc3BlY3Rl
ZFdlYlBhZ2UtPmNyZWF0ZVdlYkluc3BlY3RvcigmdmlldywgJmluc3BlY3RvclBhZ2UpOworICAg
IE93blB0cjxRT2JqZWN0PiBpbnNwZWN0b3JWaWV3ID0gYWRvcHRQdHIodmlldyk7CisKKyAgICBR
T2JqZWN0KiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFdlYlBhZ2UtPmluc3BlY3RvckhhbmRsZSgp
OworICAgIC8vIFJlbW90ZSBmcm9udGVuZCB3YXMgYXR0YWNoZWQuCisgICAgaWYgKG1fcmVtb3Rl
RnJvbnRFbmRDaGFubmVsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoaXMgaXMgYSBr
bm93biBob29rIHRoYXQgYWxsb3dzIGNoYW5naW5nIHRoZSBkZWZhdWx0IFVSTCBmb3IgdGhlCisg
ICAgLy8gV2ViIGluc3BlY3Rvci4gVGhpcyBpcyB1c2VkIGZvciBTREsgcHVycG9zZXMuIFBsZWFz
ZSBrZWVwIHRoaXMgaG9vaworICAgIC8vIGFyb3VuZCBhbmQgZG9uJ3QgcmVtb3ZlIGl0LgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTM0MAorICAgIFFV
cmwgaW5zcGVjdG9yVXJsOworI2lmbmRlZiBRVF9OT19QUk9QRVJUSUVTCisgICAgaW5zcGVjdG9y
VXJsID0gaW5zcGVjdG9yLT5wcm9wZXJ0eSgiX3FfaW5zcGVjdG9yVXJsIikudG9VcmwoKTsKKyNl
bmRpZgorICAgIGlmICghaW5zcGVjdG9yVXJsLmlzVmFsaWQoKSkKKyAgICAgICAgaW5zcGVjdG9y
VXJsID0gUVVybChRTGF0aW4xU3RyaW5nKCJxcmM6L3dlYmtpdC9pbnNwZWN0b3IvaW5zcGVjdG9y
Lmh0bWwiKSk7CisKKyNpZm5kZWYgUVRfTk9fUFJPUEVSVElFUworICAgIFFWYXJpYW50IGluc3Bl
Y3RvckphdmFTY3JpcHRXaW5kb3dPYmplY3RzID0gaW5zcGVjdG9yLT5wcm9wZXJ0eSgiX3FfaW5z
cGVjdG9ySmF2YVNjcmlwdFdpbmRvd09iamVjdHMiKTsKKyAgICBpZiAoaW5zcGVjdG9ySmF2YVNj
cmlwdFdpbmRvd09iamVjdHMuaXNWYWxpZCgpKQorICAgICAgICBpbnNwZWN0b3JQYWdlLT5oYW5k
bGUoKS0+c2V0UHJvcGVydHkoIl9xX2luc3BlY3RvckphdmFTY3JpcHRXaW5kb3dPYmplY3RzIiwg
aW5zcGVjdG9ySmF2YVNjcmlwdFdpbmRvd09iamVjdHMpOworI2VuZGlmCisgICAgaW5zcGVjdG9y
UGFnZS0+bWFpbkZyYW1lQWRhcHRlcigpLT5sb2FkKFFOZXR3b3JrUmVxdWVzdChpbnNwZWN0b3JV
cmwpKTsKKyAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPnNldEluc3BlY3RvckZyb250ZW5kKGluc3Bl
Y3RvclZpZXcuZ2V0KCkpOworCisgICAgLy8gSXMgJ2NvbnRyb2xsZXInIHRoZSBzYW1lIG9iamVj
dCBhcyAnaW5zcGVjdG9yQ29udHJvbGxlcicgKHdoaWNoIGFwcGVhcnMgdG8gYmUgdW51c2VkKT8K
KyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gaW5zcGVjdG9yUGFnZS0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudFF0PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZENs
aWVudFF0KG1faW5zcGVjdGVkV2ViUGFnZSwgaW5zcGVjdG9yVmlldy5yZWxlYXNlKCksIGluc3Bl
Y3RvclBhZ2UtPnBhZ2UsIHRoaXMpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRD
bGllbnQuZ2V0KCk7CisgICAgY29udHJvbGxlci0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
ZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICBtX2Zyb250ZW5kV2ViUGFnZSA9IGluc3Bl
Y3RvclBhZ2U7CisKKyAgICAvLyBXZWIgSW5zcGVjdG9yIHNob3VsZCBub3QgYmVsb25nIHRvIGFu
eSBvdGhlciBwYWdlIGdyb3VwcyBzaW5jZSBpdCBpcyBhIHNwZWNpYWxpemVkIGRlYnVnZ2VyIHdp
bmRvdy4KKyAgICBtX2Zyb250ZW5kV2ViUGFnZS0+cGFnZS0+c2V0R3JvdXBOYW1lKCJfX1dlYklu
c3BlY3RvclBhZ2VHcm91cF9fIik7CisgICAgZnJvbnRlbmRDaGFubmVsID0gdGhpczsKKyNlbmRp
ZgorICAgIHJldHVybiBmcm9udGVuZENoYW5uZWw7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50
UXQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisg
ICAgaWYgKG1fZnJvbnRlbmRDbGllbnQpCisgICAgICAgIG1fZnJvbnRlbmRDbGllbnQtPmluc3Bl
Y3RvckNsaWVudERlc3Ryb3llZCgpOworI2VuZGlmCit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50
UXQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
IG1fZnJvbnRlbmRDbGllbnQtPmJyaW5nVG9Gcm9udCgpOworI2VuZGlmCit9CisKK3ZvaWQgSW5z
cGVjdG9yQ2xpZW50UXQ6OnJlbGVhc2VGcm9udGVuZFBhZ2UoKQoreworICAgIG1fZnJvbnRlbmRX
ZWJQYWdlID0gMDsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKK30KKwordm9pZCBJbnNwZWN0
b3JDbGllbnRRdDo6YXR0YWNoQW5kUmVwbGFjZVJlbW90ZUZyb250ZW5kKEluc3BlY3RvclNlcnZl
clJlcXVlc3RIYW5kbGVyUXQqIGNoYW5uZWwpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBtX3JlbW90ZUZyb250RW5kQ2hhbm5lbCA9IGNoYW5uZWw7CisgICAgbV9pbnNwZWN0ZWRXZWJQ
YWdlLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCh0aGlzKTsK
KyNlbmRpZgorfQorCit2b2lkIEluc3BlY3RvckNsaWVudFF0OjpkZXRhY2hSZW1vdGVGcm9udGVu
ZCgpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBtX3JlbW90ZUZyb250RW5kQ2hhbm5l
bCA9IDA7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworI2VuZGlmCit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xp
ZW50UXQ6OmhpZ2hsaWdodCgpCit7CisgICAgaGlkZUhpZ2hsaWdodCgpOworfQorCit2b2lkIElu
c3BlY3RvckNsaWVudFF0OjpoaWRlSGlnaGxpZ2h0KCkKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSYg
ZnJhbWUgPSBtX2luc3BlY3RlZFdlYlBhZ2UtPnBhZ2UtPm1haW5GcmFtZSgpOworICAgIFFSZWN0
IHJlY3QgPSBtX2luc3BlY3RlZFdlYlBhZ2UtPm1haW5GcmFtZUFkYXB0ZXIoKS0+ZnJhbWVSZWN0
KCk7CisgICAgaWYgKCFyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgZnJhbWUudmlldygpLT5pbnZh
bGlkYXRlUmVjdChyZWN0KTsKK30KKworYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGlmIChtX3JlbW90ZUZyb250RW5kQ2hhbm5lbCkgeworICAgICAgICBXVEY6OkNT
dHJpbmcgbXNnID0gbWVzc2FnZS51dGY4KCk7CisgICAgICAgIG1fcmVtb3RlRnJvbnRFbmRDaGFu
bmVsLT53ZWJTb2NrZXRTZW5kKG1zZy5kYXRhKCksIG1zZy5sZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoIW1fZnJvbnRlbmRXZWJQYWdlKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBtX2Zyb250ZW5kV2ViUGFn
ZS0+cGFnZTsKKyAgICByZXR1cm4gZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShmcm9u
dGVuZFBhZ2UsIG1lc3NhZ2UpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCitJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudFF0KFFXZWJQYWdlQWRhcHRlciogaW5zcGVjdGVkV2ViUGFnZSwg
UGFzc093blB0cjxRT2JqZWN0PiBpbnNwZWN0b3JWaWV3LCBXZWJDb3JlOjpQYWdlKiBpbnNwZWN0
b3JQYWdlLCBJbnNwZWN0b3JDbGllbnRRdCogaW5zcGVjdG9yQ2xpZW50KQorICAgIDogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbChpbnNwZWN0ZWRXZWJQYWdlLT5wYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UsIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzUXQoKSkpCisgICAgLCBtX2luc3BlY3RlZFdlYlBhZ2UoaW5zcGVjdGVkV2ViUGFn
ZSkKKyAgICAsIG1faW5zcGVjdG9yVmlldyhpbnNwZWN0b3JWaWV3KQorICAgICwgbV9kZXN0cm95
aW5nSW5zcGVjdG9yVmlldyhmYWxzZSkKKyAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3Rv
ckNsaWVudCkKK3sKK30KKworSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6fkluc3BlY3RvckZy
b250ZW5kQ2xpZW50UXQoKQoreworICAgIEFTU0VSVChtX2Rlc3Ryb3lpbmdJbnNwZWN0b3JWaWV3
KTsKKyAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQpCisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50
LT5yZWxlYXNlRnJvbnRlbmRQYWdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRRdDo6ZnJvbnRlbmRMb2FkZWQoKQoreworICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OmZyb250ZW5kTG9hZGVkKCk7CisgICAgc2V0QXR0YWNoZWRXaW5kb3coRE9DS0VEX1RPX0JP
VFRPTSk7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Ojpsb2NhbGl6ZWRT
dHJpbmdzVVJMKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpicmluZ1RvRnJvbnQoKQor
eworICAgIHVwZGF0ZVdpbmRvd1RpdGxlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRRdDo6Y2xvc2VXaW5kb3coKQoreworICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KHRydWUp
OworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmF0dGFjaFdpbmRvdyhEb2Nr
U2lkZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50UXQ6OmRldGFjaFdpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50UXQ6OnNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0
OjpzZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChj
b25zdCBTdHJpbmcmIG5ld1VSTCkKK3sKKyAgICBtX2luc3BlY3RlZFVSTCA9IG5ld1VSTDsKKyAg
ICB1cGRhdGVXaW5kb3dUaXRsZSgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKK3sKKyAgICBRU3RyaW5nIGNhcHRpb24gPSBRQ29yZUFw
cGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIldlYiBJbnNwZWN0b3IgLSAlMiIpLmFy
ZyhtX2luc3BlY3RlZFVSTCk7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5zZXRJbnNwZWN0b3JX
aW5kb3dUaXRsZShjYXB0aW9uKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0
OjpkZXN0cm95SW5zcGVjdG9yVmlldyhib29sIG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpCit7
CisgICAgaWYgKG1fZGVzdHJveWluZ0luc3BlY3RvclZpZXcpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2Rlc3Ryb3lpbmdJbnNwZWN0b3JWaWV3ID0gdHJ1ZTsKKworICAgIC8vIEluc3BlY3RlZCBw
YWdlIG1heSBoYXZlIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQuCisgICAgaWYgKG1faW5zcGVjdGVk
V2ViUGFnZSkgeworICAgICAgICAvLyBDbGVhciByZWZlcmVuY2UgZnJvbSBRV2ViSW5zcGVjdG9y
IHRvIHRoZSBmcm9udGVuZCB2aWV3LgorICAgICAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPnNldElu
c3BlY3RvckZyb250ZW5kKDApOworICAgIH0KKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKG5vdGlmeUluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdGVkV2ViUGFn
ZS0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyNl
bmRpZgorICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgbV9pbnNwZWN0b3JDbGll
bnQtPnJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKKworICAgIC8vIENsZWFyIHBvaW50ZXIgYmVmb3Jl
IGRlbGV0aW5nIFdlYlZpZXcgdG8gYXZvaWQgcmVjdXJzaXZlIGNhbGxzIHRvIGl0cyBkZXN0cnVj
dG9yLgorICAgIE93blB0cjxRT2JqZWN0PiBpbnNwZWN0b3JWaWV3ID0gbV9pbnNwZWN0b3JWaWV3
LnJlbGVhc2UoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjppbnNwZWN0
b3JDbGllbnREZXN0cm95ZWQoKQoreworICAgIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KGZhbHNlKTsK
KyAgICBtX2luc3BlY3RvckNsaWVudCA9IDA7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdlID0gMDsK
K30KKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTZiMmEzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50UXRfaAorI2RlZmluZSBJbnNwZWN0b3JDbGllbnRRdF9o
CisKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgi
CisKKyNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKworY2xhc3MgUVdlYlBhZ2VBZGFwdGVyOworY2xhc3MgUVdlYlBhZ2U7CitjbGFz
cyBRV2ViVmlldzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRRdDsKK2NsYXNzIEluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ7CitjbGFz
cyBQYWdlOworCitjbGFzcyBJbnNwZWN0b3JDbGllbnRRdCA6IHB1YmxpYyBJbnNwZWN0b3JDbGll
bnQsIHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IEluc3BlY3RvckNsaWVudFF0KFFXZWJQYWdlQWRhcHRlciopOworCisgICAgdmlydHVhbCB2
b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKKworICAgIHZpcnR1
YWwgdm9pZCBoaWdobGlnaHQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwor
CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsK
KworICAgIHZvaWQgcmVsZWFzZUZyb250ZW5kUGFnZSgpOworCisgICAgdm9pZCBhdHRhY2hBbmRS
ZXBsYWNlUmVtb3RlRnJvbnRlbmQoSW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdCAqY2hh
bm5lbCk7CisgICAgdm9pZCBkZXRhY2hSZW1vdGVGcm9udGVuZCgpOworCitwcml2YXRlOgorICAg
IFFXZWJQYWdlQWRhcHRlciogbV9pbnNwZWN0ZWRXZWJQYWdlOworICAgIFFXZWJQYWdlQWRhcHRl
ciogbV9mcm9udGVuZFdlYlBhZ2U7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdCogbV9m
cm9udGVuZENsaWVudDsKKyAgICBib29sIG1fcmVtb3RlSW5zcGVjdG9yOworICAgIEluc3BlY3Rv
clNlcnZlclJlcXVlc3RIYW5kbGVyUXQqIG1fcmVtb3RlRnJvbnRFbmRDaGFubmVsOworCisgICAg
ZnJpZW5kIGNsYXNzIEluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ7Cit9OworCitjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwgeworcHVibGljOgorICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBh
Z2VBZGFwdGVyKiBpbnNwZWN0ZWRXZWJQYWdlLCBQYXNzT3duUHRyPFFPYmplY3Q+IGluc3BlY3Rv
clZpZXcsIFdlYkNvcmU6OlBhZ2UqIGluc3BlY3RvclBhZ2UsIEluc3BlY3RvckNsaWVudFF0Kik7
CisgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdCgpOworCisgICAgdmlydHVh
bCB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZWRT
dHJpbmdzVVJMKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CisgICAgdmly
dHVhbCB2b2lkIGNsb3NlV2luZG93KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93
KERvY2tTaWRlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQg
aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIG5ld1VSTCk7CisKKyAgICB2b2lkIGlu
c3BlY3RvckNsaWVudERlc3Ryb3llZCgpOworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlV2lu
ZG93VGl0bGUoKTsKKyAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5z
cGVjdG9yQ29udHJvbGxlcik7CisgICAgUVdlYlBhZ2VBZGFwdGVyKiBtX2luc3BlY3RlZFdlYlBh
Z2U7CisgICAgT3duUHRyPFFPYmplY3Q+IG1faW5zcGVjdG9yVmlldzsKKyAgICBRU3RyaW5nIG1f
aW5zcGVjdGVkVVJMOworICAgIGJvb2wgbV9kZXN0cm95aW5nSW5zcGVjdG9yVmlldzsKKyAgICBJ
bnNwZWN0b3JDbGllbnRRdCogbV9pbnNwZWN0b3JDbGllbnQ7Cit9OworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVy
UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJR
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhM2RhZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2Vy
dmVyUXQuY3BwCkBAIC0wLDAgKzEsMzY3IEBACisvKgorICBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklu
c3BlY3RvclNlcnZlclF0LmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRRdC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUVdlYkZyYW1lQWRhcHRlci5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQWRhcHRlci5oIgorI2lu
Y2x1ZGUgInFodHRwaGVhZGVyX3AuaCIKKyNpbmNsdWRlIDxRRmlsZT4KKyNpbmNsdWRlIDxRU3Ry
aW5nPgorI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgorI2luY2x1ZGUgPFFUY3BTZXJ2ZXI+CisjaW5j
bHVkZSA8UVRjcFNvY2tldD4KKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgPHFlbmRpYW4uaD4K
KyNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiEK
KyAgICBDb21wdXRlcyB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZSBnaXZlbiB0aGUg
aW5wdXQga2V5CisgKi8KK3N0YXRpYyBRQnl0ZUFycmF5IGdlbmVyYXRlV2ViU29ja2V0Q2hhbGxl
bmdlUmVzcG9uc2UoY29uc3QgUUJ5dGVBcnJheSYga2V5KQoreworICAgIFNIQTEgc2hhMTsKKyAg
ICBWZWN0b3I8dWludDhfdCwgMjA+IGRpZ2VzdDsKKyAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZDsK
KyAgICBRQnl0ZUFycmF5IHRvSGFzaCgiMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1
QjExIik7CisgICAgdG9IYXNoLnByZXBlbmQoa2V5KTsKKyAgICBzaGExLmFkZEJ5dGVzKCh1aW50
OF90Kil0b0hhc2guZGF0YSgpLCB0b0hhc2guc2l6ZSgpKTsKKyAgICBzaGExLmNvbXB1dGVIYXNo
KGRpZ2VzdCk7CisgICAgYmFzZTY0RW5jb2RlKChjaGFyKilkaWdlc3QuZGF0YSgpLCBkaWdlc3Qu
c2l6ZSgpLCBlbmNvZGVkKTsKKyAgICByZXR1cm4gUUJ5dGVBcnJheShlbmNvZGVkLmRhdGEoKSwg
ZW5jb2RlZC5zaXplKCkpOworfQorCitzdGF0aWMgSW5zcGVjdG9yU2VydmVyUXQqIHNfaW5zcGVj
dG9yU2VydmVyOworCitJbnNwZWN0b3JTZXJ2ZXJRdCogSW5zcGVjdG9yU2VydmVyUXQ6OnNlcnZl
cigpCit7CisgICAgLy8gc19pbnNwZWN0b3JTZXJ2ZXIgaXMgZGVsZXRlZCBpbiB1bnJlZ2lzdGVy
Q2xpZW50KCkgd2hlbiB0aGUgbGFzdCBjbGllbnQgaXMgdW5yZWdpc3RlcmVkLgorICAgIGlmICgh
c19pbnNwZWN0b3JTZXJ2ZXIpCisgICAgICAgIHNfaW5zcGVjdG9yU2VydmVyID0gbmV3IEluc3Bl
Y3RvclNlcnZlclF0KCk7CisKKyAgICByZXR1cm4gc19pbnNwZWN0b3JTZXJ2ZXI7Cit9CisKK0lu
c3BlY3RvclNlcnZlclF0OjpJbnNwZWN0b3JTZXJ2ZXJRdCgpCisgICAgOiBRT2JqZWN0KCkKKyAg
ICAsIG1fdGNwU2VydmVyKDApCisgICAgLCBtX3BhZ2VOdW1iZXIoMSkKK3sKK30KKworSW5zcGVj
dG9yU2VydmVyUXQ6On5JbnNwZWN0b3JTZXJ2ZXJRdCgpCit7CisgICAgY2xvc2UoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JTZXJ2ZXJRdDo6bGlzdGVuKHF1aW50MTYgcG9ydCkKK3sKKyAgICBpZiAo
bV90Y3BTZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGNwU2VydmVyID0gbmV3IFFU
Y3BTZXJ2ZXIoKTsKKyAgICBtX3RjcFNlcnZlci0+bGlzdGVuKFFIb3N0QWRkcmVzczo6QW55LCBw
b3J0KTsKKyAgICBjb25uZWN0KG1fdGNwU2VydmVyLCBTSUdOQUwobmV3Q29ubmVjdGlvbigpKSwg
U0xPVChuZXdDb25uZWN0aW9uKCkpKTsKK30KKwordm9pZCBJbnNwZWN0b3JTZXJ2ZXJRdDo6Y2xv
c2UoKQoreworICAgIGlmIChtX3RjcFNlcnZlcikgeworICAgICAgICBtX3RjcFNlcnZlci0+Y2xv
c2UoKTsKKyAgICAgICAgZGVsZXRlIG1fdGNwU2VydmVyOworICAgIH0KKyAgICBtX3RjcFNlcnZl
ciA9IDA7Cit9CisKK0luc3BlY3RvckNsaWVudFF0KiBJbnNwZWN0b3JTZXJ2ZXJRdDo6aW5zcGVj
dG9yQ2xpZW50Rm9yUGFnZShpbnQgcGFnZU51bSkKK3sKKyAgICBJbnNwZWN0b3JDbGllbnRRdCog
Y2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLnZhbHVlKHBhZ2VOdW0pOworICAgIHJldHVybiBj
bGllbnQ7Cit9CisKK3ZvaWQgSW5zcGVjdG9yU2VydmVyUXQ6OnJlZ2lzdGVyQ2xpZW50KEluc3Bl
Y3RvckNsaWVudFF0KiBjbGllbnQpCit7CisgICAgaWYgKCFtX2luc3BlY3RvckNsaWVudHMua2V5
KGNsaWVudCkpCisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50cy5pbnNlcnQobV9wYWdlTnVtYmVy
KyssIGNsaWVudCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yU2VydmVyUXQ6OnVucmVnaXN0ZXJDbGll
bnQoSW5zcGVjdG9yQ2xpZW50UXQqIGNsaWVudCkKK3sKKyAgICBpbnQgcGFnZU51bSA9IG1faW5z
cGVjdG9yQ2xpZW50cy5rZXkoY2xpZW50LCAtMSk7CisgICAgaWYgKHBhZ2VOdW0gPj0gMCkKKyAg
ICAgICAgbV9pbnNwZWN0b3JDbGllbnRzLnJlbW92ZShwYWdlTnVtKTsKKyAgICBpZiAoIW1faW5z
cGVjdG9yQ2xpZW50cy5zaXplKCkpIHsKKyAgICAgICAgLy8gc19pbnNwZWN0b3JTZXJ2ZXIgcG9p
bnRzIHRvIHRoaXMuCisgICAgICAgIHNfaW5zcGVjdG9yU2VydmVyID0gMDsKKyAgICAgICAgY2xv
c2UoKTsKKyAgICAgICAgZGVsZXRlTGF0ZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9y
U2VydmVyUXQ6Om5ld0Nvbm5lY3Rpb24oKQoreworICAgIFFUY3BTb2NrZXQqIHRjcENvbm5lY3Rp
b24gPSBtX3RjcFNlcnZlci0+bmV4dFBlbmRpbmdDb25uZWN0aW9uKCk7CisgICAgSW5zcGVjdG9y
U2VydmVyUmVxdWVzdEhhbmRsZXJRdCogaGFuZGxlciA9IG5ldyBJbnNwZWN0b3JTZXJ2ZXJSZXF1
ZXN0SGFuZGxlclF0KHRjcENvbm5lY3Rpb24sIHRoaXMpOworICAgIGhhbmRsZXItPnNldFBhcmVu
dCh0aGlzKTsKK30KKworSW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdDo6SW5zcGVjdG9y
U2VydmVyUmVxdWVzdEhhbmRsZXJRdChRVGNwU29ja2V0KiB0Y3BDb25uZWN0aW9uLCBJbnNwZWN0
b3JTZXJ2ZXJRdCogc2VydmVyKQorICAgIDogUU9iamVjdChzZXJ2ZXIpCisgICAgLCBtX3RjcENv
bm5lY3Rpb24odGNwQ29ubmVjdGlvbikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1f
aW5zcGVjdG9yQ2xpZW50KDApCit7CisgICAgbV9lbmRPZkhlYWRlcnMgPSBmYWxzZTsgICAgCisg
ICAgbV9jb250ZW50TGVuZ3RoID0gMDsKKworICAgIGNvbm5lY3QobV90Y3BDb25uZWN0aW9uLCBT
SUdOQUwocmVhZHlSZWFkKCkpLCBTTE9UKHRjcFJlYWR5UmVhZCgpKSk7CisgICAgY29ubmVjdCht
X3RjcENvbm5lY3Rpb24sIFNJR05BTChkaXNjb25uZWN0ZWQoKSksIFNMT1QodGNwQ29ubmVjdGlv
bkRpc2Nvbm5lY3RlZCgpKSk7Cit9CisKK0luc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ6
On5JbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0KCkKK3sKK30KKwordm9pZCBJbnNwZWN0
b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0Ojp0Y3BSZWFkeVJlYWQoKQoreworICAgIFdlYktpdDo6
UUh0dHBSZXF1ZXN0SGVhZGVyIGhlYWRlcjsKKyAgICBib29sIGlzV2ViU29ja2V0ID0gZmFsc2U7
CisgICAgaWYgKCFtX3RjcENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
bV9lbmRPZkhlYWRlcnMpIHsKKyAgICAgICAgd2hpbGUgKG1fdGNwQ29ubmVjdGlvbi0+Ynl0ZXNB
dmFpbGFibGUoKSAmJiAhbV9lbmRPZkhlYWRlcnMpIHsKKyAgICAgICAgICAgIFFCeXRlQXJyYXkg
bGluZSA9IG1fdGNwQ29ubmVjdGlvbi0+cmVhZExpbmUoKTsKKyAgICAgICAgICAgIG1fZGF0YS5h
cHBlbmQobGluZSk7CisgICAgICAgICAgICBpZiAobGluZSA9PSAiXHJcbiIpCisgICAgICAgICAg
ICAgICAgbV9lbmRPZkhlYWRlcnMgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Vu
ZE9mSGVhZGVycykgeworICAgICAgICAgICAgaGVhZGVyID0gV2ViS2l0OjpRSHR0cFJlcXVlc3RI
ZWFkZXIoUVN0cmluZzo6ZnJvbUxhdGluMShtX2RhdGEpKTsKKyAgICAgICAgICAgIGlmIChoZWFk
ZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgbV9wYXRoID0gaGVhZGVyLnBhdGgoKTsK
KyAgICAgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gaGVhZGVyLmNvbnRlbnRUeXBlKCkudG9M
YXRpbjEoKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRlbnRMZW5ndGggPSBoZWFkZXIuY29udGVu
dExlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChoZWFkZXIuaGFzS2V5KFFMYXRpbjFTdHJp
bmcoIlVwZ3JhZGUiKSkgJiYgKGhlYWRlci52YWx1ZShRTGF0aW4xU3RyaW5nKCJVcGdyYWRlIikp
ID09IFFMYXRpbjFTdHJpbmcoIndlYnNvY2tldCIpKSkKKyAgICAgICAgICAgICAgICAgICAgaXNX
ZWJTb2NrZXQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV9lbmRPZkhlYWRlcnMpIHsK
KyAgICAgICAgUVN0cmluZ0xpc3QgcGF0aEFuZFF1ZXJ5ID0gbV9wYXRoLnNwbGl0KFFMYXRpbjFD
aGFyKCc/JykpOworICAgICAgICBtX3BhdGggPSBwYXRoQW5kUXVlcnlbMF07CisgICAgICAgIFFT
dHJpbmdMaXN0IHdvcmRzID0gbV9wYXRoLnNwbGl0KFFMYXRpbjFDaGFyKCcvJykpOworCisgICAg
ICAgIGlmIChpc1dlYlNvY2tldCkgeworICAgICAgICAgICAgLy8gc3dpdGNoIHRvIHdlYnNvY2tl
dC1zdHlsZSBXZWJTb2NrZXRTZXJ2aWNlIG1lc3NhZ2luZworICAgICAgICAgICAgaWYgKG1fdGNw
Q29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgIG1fdGNwQ29ubmVjdGlvbi0+ZGlzY29ubmVj
dChTSUdOQUwocmVhZHlSZWFkKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0KG1fdGNwQ29u
bmVjdGlvbiwgU0lHTkFMKHJlYWR5UmVhZCgpKSwgU0xPVCh3ZWJTb2NrZXRSZWFkeVJlYWQoKSks
IFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKworICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkga2V5
ID0gaGVhZGVyLnZhbHVlKFFMYXRpbjFTdHJpbmcoIlNlYy1XZWJTb2NrZXQtS2V5IikpLnRvTGF0
aW4xKCk7CisgICAgICAgICAgICAgICAgUVN0cmluZyBhY2NlcHQgPSBRU3RyaW5nOjpmcm9tTGF0
aW4xKGdlbmVyYXRlV2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2Uoa2V5KSk7CisKKyAgICAgICAg
ICAgICAgICBXZWJLaXQ6OlFIdHRwUmVzcG9uc2VIZWFkZXIgcmVzcG9uc2VIZWFkZXIoMTAxLCBR
TGF0aW4xU3RyaW5nKCJXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlIiksIDEsIDEpOworICAg
ICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyLnNldFZhbHVlKFFMYXRpbjFTdHJpbmcoIlVwZ3Jh
ZGUiKSwgaGVhZGVyLnZhbHVlKFFMYXRpbjFTdHJpbmcoIlVwZ3JhZGUiKSkpOworICAgICAgICAg
ICAgICAgIHJlc3BvbnNlSGVhZGVyLnNldFZhbHVlKFFMYXRpbjFTdHJpbmcoIkNvbm5lY3Rpb24i
KSwgaGVhZGVyLnZhbHVlKFFMYXRpbjFTdHJpbmcoIkNvbm5lY3Rpb24iKSkpOworICAgICAgICAg
ICAgICAgIHJlc3BvbnNlSGVhZGVyLnNldFZhbHVlKFFMYXRpbjFTdHJpbmcoIlNlYy1XZWJTb2Nr
ZXQtQWNjZXB0IiksIGFjY2VwdCk7CisgICAgICAgICAgICAgICAgbV90Y3BDb25uZWN0aW9uLT53
cml0ZShyZXNwb25zZUhlYWRlci50b1N0cmluZygpLnRvTGF0aW4xKCkpOworICAgICAgICAgICAg
ICAgIG1fdGNwQ29ubmVjdGlvbi0+Zmx1c2goKTsKKworICAgICAgICAgICAgICAgIGlmICgod29y
ZHMuc2l6ZSgpID09IDQpCisgICAgICAgICAgICAgICAgICAgICYmICh3b3Jkc1sxXSA9PSBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCJkZXZ0b29scyIpKQorICAgICAgICAgICAgICAgICAgICAmJiAod29y
ZHNbMl0gPT0gUVN0cmluZzo6ZnJvbUxhdGluMSgicGFnZSIpKSkgeworICAgICAgICAgICAgICAg
ICAgICBpbnQgcGFnZU51bSA9IHdvcmRzWzNdLnRvSW50KCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtX3NlcnZlci0+aW5zcGVjdG9yQ2xpZW50Rm9yUGFnZShw
YWdlTnVtKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXR0YWNoIHJlbW90ZUZyb250ZW5kQ2hh
bm5lbCB0byBpbnNwZWN0b3IsIGFsc28gdHJhbnNmZXJyaW5nIG93bmVyc2hpcC4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmF0dGFjaEFuZFJlcGxhY2VSZW1vdGVGcm9udGVuZCh0aGlz
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX2NvbnRlbnRMZW5ndGggJiYgKG1fdGNwQ29u
bmVjdGlvbi0+Ynl0ZXNBdmFpbGFibGUoKSA8IG1fY29udGVudExlbmd0aCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgUUJ5dGVBcnJheSBjb250ZW50ID0gbV90Y3BDb25uZWN0aW9u
LT5yZWFkKG1fY29udGVudExlbmd0aCk7CisgICAgICAgIG1fZW5kT2ZIZWFkZXJzID0gZmFsc2U7
CisKKyAgICAgICAgUUJ5dGVBcnJheSByZXNwb25zZTsKKyAgICAgICAgaW50IGNvZGUgPSAyMDA7
CisgICAgICAgIFFTdHJpbmcgdGV4dCA9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk9LIik7CisKKyAg
ICAgICAgLy8gSWYgbm8gcGF0aCBpcyBzcGVjaWZpZWQsIGdlbmVyYXRlIGFuIGluZGV4IHBhZ2Uu
CisgICAgICAgIGlmIChtX3BhdGguaXNFbXB0eSgpIHx8IChtX3BhdGggPT0gUVN0cmluZyhRTGF0
aW4xQ2hhcignLycpKSkpIHsKKyAgICAgICAgICAgIFFTdHJpbmcgaW5kZXhIdG1sID0gUUxhdGlu
MVN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPlJlbW90ZSBXZWIgSW5zcGVjdG9yPC90aXRsZT48
L2hlYWQ+PGJvZHk+PHVsPlxuIik7CisgICAgICAgICAgICBmb3IgKFFNYXA8aW50LCBJbnNwZWN0
b3JDbGllbnRRdCogPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NlcnZlci0+bV9pbnNwZWN0b3JD
bGllbnRzLmJlZ2luKCk7IGl0ICE9IG1fc2VydmVyLT5tX2luc3BlY3RvckNsaWVudHMuZW5kKCk7
ICsraXQpIHsKKworICAgICAgICAgICAgICAgIGluZGV4SHRtbC5hcHBlbmQoUVN0cmluZzo6ZnJv
bUxhdGluMSgiPGxpPjxhIGhyZWY9XCIvd2Via2l0L2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbD9w
YWdlPSUxXCI+JTI8L2xpPlxuIikKKyAgICAgICAgICAgICAgICAgICAgLmFyZyhpdC5rZXkoKSkK
KyAgICAgICAgICAgICAgICAgICAgLmFyZyhRVXJsKGl0LnZhbHVlKCktPm1faW5zcGVjdGVkV2Vi
UGFnZS0+bWFpbkZyYW1lQWRhcHRlcigpLT51cmwpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGluZGV4SHRtbC5hcHBlbmQoUUxhdGluMVN0cmluZygiPC91bD48L2Jv
ZHk+PC9odG1sPiIpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gaW5kZXhIdG1sLnRvTGF0aW4x
KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCI6JTEiKS5hcmcobV9wYXRoKTsKKyAgICAgICAgICAgIFFGaWxlIGZpbGUo
cGF0aCk7CisgICAgICAgICAgICAvLyBJdCBzZWVtcyB0aGF0IHRoZXJlIHNob3VsZCBiZSBhbiBl
bnVtIG9yIGRlZmluZSBmb3IgdGhlc2Ugc3RhdHVzIGNvZGVzIHNvbWV3aGVyZSBpbiBRdCBvciBX
ZWJLaXQsCisgICAgICAgICAgICAvLyBidXQgZ3JlcCBmYWlscyB0byB0dXJuIG9uZSB1cC4KKyAg
ICAgICAgICAgIC8vIFFOZXR3b3JrIHVzZXMgdGhlIG51bWVyaWMgdmFsdWVzIGRpcmVjdGx5Lgor
ICAgICAgICAgICAgaWYgKGZpbGUuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgICAgICBmaWxlLm9w
ZW4oUUlPRGV2aWNlOjpSZWFkT25seSk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBmaWxl
LnJlYWRBbGwoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29kZSA9
IDQwNDsKKyAgICAgICAgICAgICAgICB0ZXh0ID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTm90IE9L
Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBXZWJLaXQ6OlFIdHRwUmVz
cG9uc2VIZWFkZXIgcmVzcG9uc2VIZWFkZXIoY29kZSwgdGV4dCwgMSwgMCk7CisgICAgICAgIHJl
c3BvbnNlSGVhZGVyLnNldENvbnRlbnRMZW5ndGgocmVzcG9uc2Uuc2l6ZSgpKTsKKyAgICAgICAg
aWYgKCFtX2NvbnRlbnRUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVy
LnNldENvbnRlbnRUeXBlKFFTdHJpbmc6OmZyb21MYXRpbjEobV9jb250ZW50VHlwZSkpOworCisg
ICAgICAgIFFCeXRlQXJyYXkgYXNjaWlIZWFkZXIgPSByZXNwb25zZUhlYWRlci50b1N0cmluZygp
LnRvTGF0aW4xKCk7CisgICAgICAgIG1fdGNwQ29ubmVjdGlvbi0+d3JpdGUoYXNjaWlIZWFkZXIp
OworCisgICAgICAgIG1fdGNwQ29ubmVjdGlvbi0+d3JpdGUocmVzcG9uc2UpOworICAgICAgICBt
X3RjcENvbm5lY3Rpb24tPmZsdXNoKCk7CisgICAgICAgIG1fdGNwQ29ubmVjdGlvbi0+Y2xvc2Uo
KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvclNlcnZlclJl
cXVlc3RIYW5kbGVyUXQ6OnRjcENvbm5lY3Rpb25EaXNjb25uZWN0ZWQoKQoreworICAgIGlmICht
X2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmRldGFjaFJlbW90
ZUZyb250ZW5kKCk7CisgICAgbV90Y3BDb25uZWN0aW9uLT5kZWxldGVMYXRlcigpOworICAgIG1f
dGNwQ29ubmVjdGlvbiA9IDA7Cit9CisKK2ludCBJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxl
clF0Ojp3ZWJTb2NrZXRTZW5kKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgUUJ5dGVB
cnJheSBwYXlsb2FkID0gbWVzc2FnZS50b1V0ZjgoKTsKKyAgICByZXR1cm4gd2ViU29ja2V0U2Vu
ZChwYXlsb2FkLmRhdGEoKSwgcGF5bG9hZC5zaXplKCkpOworfQorCitpbnQgSW5zcGVjdG9yU2Vy
dmVyUmVxdWVzdEhhbmRsZXJRdDo6d2ViU29ja2V0U2VuZChjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIFFfQVNTRVJUKG1fdGNwQ29ubmVjdGlvbik7CisgICAgbV90Y3BD
b25uZWN0aW9uLT5wdXRDaGFyKDB4ODEpOworICAgIGlmIChsZW5ndGggPD0gMTI1KQorICAgICAg
ICBtX3RjcENvbm5lY3Rpb24tPnB1dENoYXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obGVuZ3RoKSk7
CisgICAgZWxzZSBpZiAobGVuZ3RoIDw9IHBvdygyLCAxNikpIHsKKyAgICAgICAgbV90Y3BDb25u
ZWN0aW9uLT5wdXRDaGFyKDEyNik7CisgICAgICAgIHF1aW50MTYgbGVuZ3RoMTYgPSBxVG9CaWdF
bmRpYW48cXVpbnQxNj4oc3RhdGljX2Nhc3Q8cXVpbnQxNj4obGVuZ3RoKSk7CisgICAgICAgIG1f
dGNwQ29ubmVjdGlvbi0+d3JpdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmxlbmd0aDE2KSwg
Mik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV90Y3BDb25uZWN0aW9uLT5wdXRDaGFyKDEyNyk7
CisgICAgICAgIHF1aW50NjQgbGVuZ3RoNjQgPSBxVG9CaWdFbmRpYW48cXVpbnQ2ND4oc3RhdGlj
X2Nhc3Q8cXVpbnQ2ND4obGVuZ3RoKSk7CisgICAgICAgIG1fdGNwQ29ubmVjdGlvbi0+d3JpdGUo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmxlbmd0aDY0KSwgOCk7CisgICAgfQorICAgIGludCBu
Qnl0ZXMgPSBtX3RjcENvbm5lY3Rpb24tPndyaXRlKGRhdGEsIGxlbmd0aCk7CisgICAgbV90Y3BD
b25uZWN0aW9uLT5mbHVzaCgpOworICAgIHJldHVybiBuQnl0ZXM7Cit9CisKK3N0YXRpYyBRQnl0
ZUFycmF5IGFwcGx5TWFzayhjb25zdCBRQnl0ZUFycmF5JiBwYXlsb2FkLCBjb25zdCBRQnl0ZUFy
cmF5JiBtYXNraW5nS2V5KQoreworICAgIFFfQVNTRVJUKG1hc2tpbmdLZXkuc2l6ZSgpID09IDQp
OworICAgIFFCeXRlQXJyYXkgdW5tYXNrZWRQYXlsb2FkOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcGF5bG9hZC5zaXplKCk7ICsraSkgeworICAgICAgICBjaGFyIHVubWFza2VkQnl0ZSA9IHBh
eWxvYWRbaV0gXiBtYXNraW5nS2V5W2kgJSA0XTsKKyAgICAgICAgdW5tYXNrZWRQYXlsb2FkLmFw
cGVuZCh1bm1hc2tlZEJ5dGUpOworICAgIH0KKyAgICByZXR1cm4gdW5tYXNrZWRQYXlsb2FkOwor
fQorCit2b2lkIEluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQ6OndlYlNvY2tldFJlYWR5
UmVhZCgpCit7CisgICAgUV9BU1NFUlQobV90Y3BDb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fdGNw
Q29ubmVjdGlvbi0+Ynl0ZXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFFCeXRl
QXJyYXkgY29udGVudCA9IG1fdGNwQ29ubmVjdGlvbi0+cmVhZChtX3RjcENvbm5lY3Rpb24tPmJ5
dGVzQXZhaWxhYmxlKCkpOworICAgIG1fZGF0YS5hcHBlbmQoY29udGVudCk7CisgICAgd2hpbGUg
KG1fZGF0YS5zaXplKCkgPiAwKSB7ICAgICAgICAKKyAgICAgICAgY29uc3QgYm9vbCBpc01hc2tl
ZCA9IG1fZGF0YVsxXSAmIDB4ODA7CisgICAgICAgIHF1aW50NjQgcGF5bG9hZExlbiA9IG1fZGF0
YVsxXSAmIDB4N0Y7CisgICAgICAgIGludCBwb3MgPSAyOworICAgICAgICAKKyAgICAgICAgaWYg
KHBheWxvYWRMZW4gPT0gMTI2KSB7CisgICAgICAgICAgICBwYXlsb2FkTGVuID0gcUZyb21CaWdF
bmRpYW48cXVpbnQxNj4oKnJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQxNio+KG1fZGF0YS5taWQocG9z
LCAyKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIHBvcyA9IDQ7CisgICAgICAgIH0gZWxzZSBpZiAo
cGF5bG9hZExlbiA9PSAxMjcpIHsKKyAgICAgICAgICAgIHBheWxvYWRMZW4gPSBxRnJvbUJpZ0Vu
ZGlhbjxxdWludDY0PigqcmVpbnRlcnByZXRfY2FzdDxxdWludDY0Kj4obV9kYXRhLm1pZChwb3Ms
IDgpLmRhdGEoKSkpOworICAgICAgICAgICAgcG9zID0gODsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgUUJ5dGVBcnJheSBwYXlsb2FkOworICAgICAgICBpZiAoaXNNYXNrZWQpIHsKKyAg
ICAgICAgICAgIFFCeXRlQXJyYXkgbWFza2luZ0tleSA9IG1fZGF0YS5taWQocG9zLCA0KTsKKyAg
ICAgICAgICAgIHBvcyArPSA0OworICAgICAgICAgICAgcGF5bG9hZCA9IGFwcGx5TWFzayhtX2Rh
dGEubWlkKHBvcywgcGF5bG9hZExlbiksIG1hc2tpbmdLZXkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHBheWxvYWQgPSBtX2RhdGEubWlkKHBvcywgcGF5bG9hZExlbik7CisgICAgICAg
IAorICAgICAgICAvLyBIYW5kbGUgZnJhZ21lbnRhdGlvbgorICAgICAgICBpZiAoIShtX2RhdGFb
MF0gJiAweDgwKSkgeyAvLyBOb24tbGFzdCBmcmFnbWVudGVkIHBheWxvYWQKKyAgICAgICAgICAg
IG1fZnJhZ21lbnRlZFBheWxvYWQuYXBwZW5kKHBheWxvYWQpOyAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBtX2RhdGEgPSBtX2RhdGEubWlkKHBvcyArIHBheWxvYWRMZW4pOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghKG1fZGF0
YVswXSAmIDB4MEYpKSB7IC8vIExhc3QgZnJhZ21lbnQKKyAgICAgICAgICAgIG1fZnJhZ21lbnRl
ZFBheWxvYWQuYXBwZW5kKHBheWxvYWQpOyAgIAorICAgICAgICAgICAgcGF5bG9hZCA9IG1fZnJh
Z21lbnRlZFBheWxvYWQ7CisgICAgICAgICAgICBtX2ZyYWdtZW50ZWRQYXlsb2FkLmNsZWFyKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFJlbW92ZSB0aGlzIFdlYlNvY2tldCBt
ZXNzYWdlIGZyb20gbV9kYXRhIChwYXlsb2FkLCBzdGFydC1vZi1mcmFtZSBieXRlLCBlbmQtb2Yt
ZnJhbWUgYnl0ZSkuCisgICAgICAgIC8vIFRydW5jYXRlIGRhdGEgYmVmb3JlIGRlbGl2ZXJpbmcg
bWVzc2FnZSBpbiBjYXNlIG9mIHJlLWVudHJhbmN5LgorICAgICAgICBtX2RhdGEgPSBtX2RhdGEu
bWlkKHBvcyArIHBheWxvYWRMZW4pOworICAgICAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQpIHsKKyAgICAgICAgICAgIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBtX2luc3BlY3RvckNsaWVudC0+bV9pbnNw
ZWN0ZWRXZWJQYWdlLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgICAgICAgICBp
bnNwZWN0b3JDb250cm9sbGVyLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoUVN0cmluZzo6
ZnJvbVV0ZjgocGF5bG9hZCkpOworICAgICAgICB9CisjZW5kaWYKKworICAgIH0KK30KKworfQor
CisjaW5jbHVkZSAibW9jX0luc3BlY3RvclNlcnZlclF0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuaCBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU0YjU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJRdC5oCkBAIC0wLDAgKzEs
MTAyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEluc3BlY3RvclNlcnZlclF0X2gK
KyNkZWZpbmUgSW5zcGVjdG9yU2VydmVyUXRfaAorCisjaW5jbHVkZSA8UUxpc3Q+CisjaW5jbHVk
ZSA8UU1hcD4KKyNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFQYWlyPgorI2luY2x1ZGUg
PFFTdHJpbmc+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworUVRfQkVHSU5fTkFNRVNQQUNF
CitjbGFzcyBRVGNwU2VydmVyOworY2xhc3MgUVRjcFNvY2tldDsKK1FUX0VORF9OQU1FU1BBQ0UK
K2NsYXNzIFFXZWJQYWdlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbnNwZWN0b3JT
ZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0OworY2xhc3MgSW5zcGVjdG9yQ2xpZW50UXQ7CisKK2NsYXNz
IEluc3BlY3RvclNlcnZlclF0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJs
aWM6CisKKyAgICBzdGF0aWMgSW5zcGVjdG9yU2VydmVyUXQqIHNlcnZlcigpOworCisgICAgdm9p
ZCBsaXN0ZW4ocXVpbnQxNiBwb3J0KTsKKworICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoSW5zcGVj
dG9yQ2xpZW50UXQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoSW5zcGVjdG9yQ2xpZW50
UXQqKTsKKworICAgIHZvaWQgY2xvc2UoKTsKKyAgICBJbnNwZWN0b3JDbGllbnRRdCogaW5zcGVj
dG9yQ2xpZW50Rm9yUGFnZShpbnQgcGFnZU51bSk7CisKK3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0
b3JTZXJ2ZXJRdCgpOworICAgIHZpcnR1YWwgfkluc3BlY3RvclNlcnZlclF0KCk7CisKK3ByaXZh
dGUgUV9TTE9UUzoKKyAgICB2b2lkIG5ld0Nvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBR
VGNwU2VydmVyKiBtX3RjcFNlcnZlcjsKKyAgICBRTWFwPGludCwgSW5zcGVjdG9yQ2xpZW50UXQq
PiBtX2luc3BlY3RvckNsaWVudHM7CisgICAgaW50IG1fcGFnZU51bWJlcjsKKworICAgIGZyaWVu
ZCBjbGFzcyBJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0OworfTsKKworY2xhc3MgSW5z
cGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09C
SkVDVAorcHVibGljOgorCisgICAgSW5zcGVjdG9yU2VydmVyUmVxdWVzdEhhbmRsZXJRdChRVGNw
U29ja2V0KiB0Y3BDb25uZWN0aW9uLCBJbnNwZWN0b3JTZXJ2ZXJRdCopOworICAgIHZpcnR1YWwg
fkluc3BlY3RvclNlcnZlclJlcXVlc3RIYW5kbGVyUXQoKTsKKyAgICB2aXJ0dWFsIGludCB3ZWJT
b2NrZXRTZW5kKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgaW50IHdlYlNv
Y2tldFNlbmQoY29uc3QgY2hhciAqcGF5bG9hZCwgc2l6ZV90IGxlbmd0aCk7CisKK3ByaXZhdGUg
UV9TTE9UUzoKKyAgICB2b2lkIHRjcFJlYWR5UmVhZCgpOworICAgIHZvaWQgdGNwQ29ubmVjdGlv
bkRpc2Nvbm5lY3RlZCgpOworICAgIHZvaWQgd2ViU29ja2V0UmVhZHlSZWFkKCk7CisKK3ByaXZh
dGU6CisgICAgUVRjcFNvY2tldCogbV90Y3BDb25uZWN0aW9uOworICAgIEluc3BlY3RvclNlcnZl
clF0KiBtX3NlcnZlcjsKKworICAgIFFTdHJpbmcgbV9wYXRoOworICAgIFFCeXRlQXJyYXkgbV9j
b250ZW50VHlwZTsKKyAgICBpbnQgbV9jb250ZW50TGVuZ3RoOworICAgIGJvb2wgbV9lbmRPZkhl
YWRlcnM7CisgICAgUUJ5dGVBcnJheSBtX2RhdGE7CisgICAgUUJ5dGVBcnJheSBtX2ZyYWdtZW50
ZWRQYXlsb2FkOworICAgIEluc3BlY3RvckNsaWVudFF0KiBtX2luc3BlY3RvckNsaWVudDsKKwor
ICAgIHZvaWQgaGFuZGxlSW5zcGVjdG9yUmVxdWVzdChRU3RyaW5nTGlzdCB3b3Jkcyk7CisgICAg
dm9pZCBoYW5kbGVGcm9tRnJvbnRlbmRSZXF1ZXN0KCk7CisgICAgdm9pZCBoYW5kbGVSZXNvdXJj
ZVJlcXVlc3QoUVN0cmluZ0xpc3Qgd29yZHMpOworCit9OworCit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTAxYjA2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCkBAIC0wLDAgKzEsNTA4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisjaW5jbHVk
ZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
Citjb25zdCBkb3VibGUgbm90aWZpY2F0aW9uVGltZW91dCA9IDEwLjA7CisKK2Jvb2wgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmR1bXBOb3RpZmljYXRpb24gPSBmYWxzZTsKKworTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQqIHNfbm90aWZpY2F0aW9uUHJlc2VudGVyID0gMDsK
KworTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQqIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKQoreworICAgIGlmIChzX25vdGlmaWNhdGlv
blByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIHNfbm90aWZpY2F0aW9uUHJlc2VudGVyOworCisg
ICAgc19ub3RpZmljYXRpb25QcmVzZW50ZXIgPSBuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQoKTsKKyAgICByZXR1cm4gc19ub3RpZmljYXRpb25QcmVzZW50ZXI7Cit9CisKKyNlbmRp
ZgorCitOb3RpZmljYXRpb25XcmFwcGVyOjpOb3RpZmljYXRpb25XcmFwcGVyKCkKKyAgICA6IG1f
Y2xvc2VUaW1lcih0aGlzLCAmTm90aWZpY2F0aW9uV3JhcHBlcjo6Y2xvc2UpCisgICAgLCBtX2Rp
c3BsYXlFdmVudFRpbWVyKHRoaXMsICZOb3RpZmljYXRpb25XcmFwcGVyOjpzZW5kRGlzcGxheUV2
ZW50KQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElG
SUNBVElPTlMpCisgICAgbV9wcmVzZW50ZXIgPSBudWxscHRyOworI2VuZGlmCit9CisKK3ZvaWQg
Tm90aWZpY2F0aW9uV3JhcHBlcjo6Y2xvc2UoVGltZXI8Tm90aWZpY2F0aW9uV3JhcHBlcj4qKQor
eworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElP
TlMpCisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNl
bnRlcigpLT5jYW5jZWwodGhpcyk7CisjZW5kaWYKK30KKwordm9pZCBOb3RpZmljYXRpb25XcmFw
cGVyOjpzZW5kRGlzcGxheUV2ZW50KFRpbWVyPE5vdGlmaWNhdGlvbldyYXBwZXI+KikKK3sKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQor
ICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIo
KS0+c2VuZERpc3BsYXlFdmVudCh0aGlzKTsKKyNlbmRpZgorfQorCitjb25zdCBRU3RyaW5nIE5v
dGlmaWNhdGlvbldyYXBwZXI6OnRpdGxlKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uID0gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlv
blByZXNlbnRlcigpLT5ub3RpZmljYXRpb25Gb3JXcmFwcGVyKHRoaXMpOworICAgIGlmIChub3Rp
ZmljYXRpb24pCisgICAgICAgIHJldHVybiBub3RpZmljYXRpb24tPnRpdGxlKCk7CisjZW5kaWYK
KyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitjb25zdCBRU3RyaW5nIE5vdGlmaWNhdGlvbldy
YXBwZXI6Om1lc3NhZ2UoKSBjb25zdAoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBF
TkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24gPSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVy
KCktPm5vdGlmaWNhdGlvbkZvcldyYXBwZXIodGhpcyk7CisgICAgaWYgKG5vdGlmaWNhdGlvbikK
KyAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi0+Ym9keSgpOworI2VuZGlmCisgICAgcmV0dXJu
IFFTdHJpbmcoKTsKK30KKworY29uc3QgUVVybCBOb3RpZmljYXRpb25XcmFwcGVyOjppY29uVXJs
KCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5ub3RpZmljYXRp
b25Gb3JXcmFwcGVyKHRoaXMpOworICAgIGlmIChub3RpZmljYXRpb24pCisgICAgICAgIHJldHVy
biBub3RpZmljYXRpb24tPmljb25VUkwoKTsKKyNlbmRpZgorICAgIHJldHVybiBRVXJsKCk7Cit9
CisKK2NvbnN0IFFVcmwgTm90aWZpY2F0aW9uV3JhcHBlcjo6b3BlbmVyUGFnZVVybCgpIGNvbnN0
Cit7CisgICAgUVVybCB1cmw7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+bm90
aWZpY2F0aW9uRm9yV3JhcHBlcih0aGlzKTsKKyAgICBpZiAobm90aWZpY2F0aW9uKSB7CisgICAg
ICAgIGlmIChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgCisgICAgICAg
ICAgICB1cmwgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKS0+cGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51cmwoKTsK
KyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gdXJsOworfQorCit2b2lkIE5vdGlmaWNhdGlvbldy
YXBwZXI6Om5vdGlmaWNhdGlvbkNsaWNrZWQoKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5ub3RpZmljYXRpb25DbGlja2Vk
KHRoaXMpOworI2VuZGlmCit9CisKK3ZvaWQgTm90aWZpY2F0aW9uV3JhcHBlcjo6bm90aWZpY2F0
aW9uQ2xvc2VkKCkKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3Rp
ZmljYXRpb25QcmVzZW50ZXIoKS0+Y2FuY2VsKHRoaXMpOworI2VuZGlmCit9CisKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorCitOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQo
KSA6IG1fY2xpZW50Q291bnQoMCkKK3sKK30KKworTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpCit7CisgICAgd2hpbGUgKCFtX25v
dGlmaWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5vdGlmaWNhdGlvbnNRdWV1ZTo6SXRl
cmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOworICAgICAgICBkZXRhY2hOb3Rp
ZmljYXRpb24oaXRlci5rZXkoKSk7CisgICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0OjpyZW1vdmVDbGllbnQoKQoreworICAgIG1fY2xpZW50Q291bnQtLTsKKyAg
ICBpZiAoIW1fY2xpZW50Q291bnQpIHsKKyAgICAgICAgc19ub3RpZmljYXRpb25QcmVzZW50ZXIg
PSAwOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9Cit9CisKK2Jvb2wgTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7Cisg
ICAgLy8gRklYTUU6IHdvcmtlcnMgYmFzZWQgbm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRl
ZCB5ZXQuCisgICAgaWYgKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBub3RpZmlj
YXRpb24tPnNldFBlbmRpbmdBY3Rpdml0eShub3RpZmljYXRpb24pOworICAgIGlmICghbm90aWZp
Y2F0aW9uLT50YWcoKS5pc0VtcHR5KCkpCisgICAgICAgIHJlbW92ZVJlcGxhY2VkTm90aWZpY2F0
aW9uRnJvbVF1ZXVlKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKGR1bXBOb3RpZmljYXRpb24pCisg
ICAgICAgIGR1bXBTaG93VGV4dChub3RpZmljYXRpb24pOworICAgIGRpc3BsYXlOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3sKKyAgICBOb3RpZmljYXRpb25XcmFwcGVyKiB3cmFwcGVyID0gbmV3IE5v
dGlmaWNhdGlvbldyYXBwZXIoKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuaW5zZXJ0KG5vdGlmaWNh
dGlvbiwgd3JhcHBlcik7CisgICAgUVN0cmluZyB0aXRsZSA9IG5vdGlmaWNhdGlvbi0+dGl0bGUo
KTsKKyAgICBRU3RyaW5nIG1lc3NhZ2UgPSBub3RpZmljYXRpb24tPmJvZHkoKTsKKworICAgIGlm
IChtX3BsYXRmb3JtUGx1Z2luLnBsdWdpbigpICYmIG1fcGxhdGZvcm1QbHVnaW4ucGx1Z2luKCkt
PnN1cHBvcnRzRXh0ZW5zaW9uKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6Tm90aWZpY2F0aW9ucykp
CisgICAgICAgIHdyYXBwZXItPm1fcHJlc2VudGVyID0gbV9wbGF0Zm9ybVBsdWdpbi5jcmVhdGVO
b3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKworICAgIGlmICghd3JhcHBlci0+bV9wcmVzZW50ZXIp
IHsKKyNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAgICAgICAgaWYgKCFkdW1wTm90aWZp
Y2F0aW9uKQorICAgICAgICAgICAgd3JhcHBlci0+bV9jbG9zZVRpbWVyLnN0YXJ0T25lU2hvdChu
b3RpZmljYXRpb25UaW1lb3V0KTsKKyNlbmRpZgorICAgIH0KKworICAgIHdyYXBwZXItPm1fZGlz
cGxheUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBu
b3RpZmljYXRpb24gd2FzIG5vdCBjYW5jZWxsZWQgZHVyaW5nIGhhbmRsaW5nIHRoZSBkaXNwbGF5
IGV2ZW50CisgICAgaWYgKG1fbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbikgPT0gbV9u
b3RpZmljYXRpb25zLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAod3JhcHBlci0+
bV9wcmVzZW50ZXIpIHsKKyAgICAgICAgd3JhcHBlci0+Y29ubmVjdCh3cmFwcGVyLT5tX3ByZXNl
bnRlci5nZXQoKSwgU0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZCgpKSwgd3JhcHBlciwgU0xPVChu
b3RpZmljYXRpb25DbG9zZWQoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgd3Jh
cHBlci0+Y29ubmVjdCh3cmFwcGVyLT5tX3ByZXNlbnRlci5nZXQoKSwgU0lHTkFMKG5vdGlmaWNh
dGlvbkNsaWNrZWQoKSksIHdyYXBwZXIsIFNMT1Qobm90aWZpY2F0aW9uQ2xpY2tlZCgpKSk7Cisg
ICAgICAgIHdyYXBwZXItPm1fcHJlc2VudGVyLT5zaG93Tm90aWZpY2F0aW9uKHdyYXBwZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisjaWZuZGVmIFFUX05PX1NZU1RFTVRSQVlJQ09OCisg
ICAgd3JhcHBlci0+Y29ubmVjdChtX3N5c3RlbVRyYXlJY29uLmRhdGEoKSwgU0lHTkFMKG1lc3Nh
Z2VDbGlja2VkKCkpLCB3cmFwcGVyLCBTTE9UKG5vdGlmaWNhdGlvbkNsaWNrZWQoKSkpOworICAg
IFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QobV9zeXN0ZW1UcmF5SWNvbi5kYXRhKCksICJzaG93
Iik7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChtX3N5c3RlbVRyYXlJY29uLmRhdGEo
KSwgInNob3dNZXNzYWdlIiwgUV9BUkcoUVN0cmluZywgbm90aWZpY2F0aW9uLT50aXRsZSgpKSwg
UV9BUkcoUVN0cmluZywgbm90aWZpY2F0aW9uLT5ib2R5KCkpKTsKKyNlbmRpZgorfQorCit2b2lk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24pCit7CisgICAgaWYgKGR1bXBOb3RpZmljYXRpb24gJiYgbm90aWZpY2F0aW9uLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHByaW50ZigiREVTS1RPUCBOT1RJRklD
QVRJT04gQ0xPU0VEOiAlc1xuIiwgUVN0cmluZyhub3RpZmljYXRpb24tPnRpdGxlKCkpLnRvVXRm
OCgpLmNvbnN0RGF0YSgpKTsKKworICAgIE5vdGlmaWNhdGlvbnNRdWV1ZTo6SXRlcmF0b3IgaXRl
ciA9IG1fbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKGl0ZXIgIT0g
bV9ub3RpZmljYXRpb25zLmVuZCgpKSB7CisgICAgICAgIHNlbmRFdmVudChub3RpZmljYXRpb24s
IGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50KTsKKyAgICAgICAgZGV0YWNoTm90aWZpY2F0aW9uKG5v
dGlmaWNhdGlvbik7CisgICAgfQorfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0OjpjYW5jZWwoTm90aWZpY2F0aW9uV3JhcHBlciogd3JhcHBlcikKK3sKKyAgICBOb3RpZmlj
YXRpb24qIG5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbkZvcldyYXBwZXIod3JhcHBlcik7Cisg
ICAgaWYgKG5vdGlmaWNhdGlvbikKKyAgICAgICAgY2FuY2VsKG5vdGlmaWNhdGlvbik7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvbkNsaWNrZWQo
Tm90aWZpY2F0aW9uV3JhcHBlciogd3JhcHBlcikKK3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbiA9ICBub3RpZmljYXRpb25Gb3JXcmFwcGVyKHdyYXBwZXIpOworICAgIGlmIChub3Rp
ZmljYXRpb24pIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIGNsaWNrcyBvbiBub3RpZmljYXRpb25z
IGFyZSB0cmVhdGVkIGFzIHVzZXIgZ2VzdHVyZXMuCisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Cisg
ICAgICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsK
KyAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNh
dGlvbkNsaWNrZWQoY29uc3QgUVN0cmluZyYgdGl0bGUpCit7CisgICAgaWYgKCFkdW1wTm90aWZp
Y2F0aW9uKQorICAgICAgICByZXR1cm47CisgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpDb25zdEl0
ZXJhdG9yIGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsKKyAgICBOb3RpZmljYXRpb25zUXVl
dWU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOworICAgIE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gMDsKKyAgICB3aGlsZSAoaXRlciAhPSBlbmQpIHsK
KyAgICAgICAgbm90aWZpY2F0aW9uID0gaXRlci5rZXkoKTsKKyAgICAgICAgUVN0cmluZyBub3Rp
ZmljYXRpb25UaXRsZSA9IG5vdGlmaWNhdGlvbi0+dGl0bGUoKTsKKyAgICAgICAgaWYgKG5vdGlm
aWNhdGlvblRpdGxlID09IHRpdGxlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGl0ZXIr
KzsKKyAgICB9CisgICAgaWYgKG5vdGlmaWNhdGlvbikKKyAgICAgICAgc2VuZEV2ZW50KG5vdGlm
aWNhdGlvbiwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpOworfQorCitOb3RpZmljYXRpb24qIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25Gb3JXcmFwcGVyKGNvbnN0
IE5vdGlmaWNhdGlvbldyYXBwZXIqIHdyYXBwZXIpIGNvbnN0Cit7CisgICAgTm90aWZpY2F0aW9u
c1F1ZXVlOjpDb25zdEl0ZXJhdG9yIGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsKKyAgICBO
b3RpZmljYXRpb25zUXVldWU6OkNvbnN0SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5i
ZWdpbigpOworICAgIHdoaWxlIChpdGVyICE9IGVuZCAmJiBpdGVyLnZhbHVlKCkgIT0gd3JhcHBl
cikKKyAgICAgICAgaXRlcisrOworICAgIGlmIChpdGVyICE9IGVuZCkKKyAgICAgICAgcmV0dXJu
IGl0ZXIua2V5KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3sKKyAgICAvLyBDYWxsZWQgZnJvbSB+Tm90aWZpY2F0aW9uKCksIFJlbW92
ZSB0aGUgZW50cnkgZnJvbSB0aGUgbm90aWZpY2F0aW9ucyBsaXN0IGFuZCBkZWxldGUgdGhlIGlj
b24uCisgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpJdGVyYXRvciBpdGVyID0gbV9ub3RpZmljYXRp
b25zLmZpbmQobm90aWZpY2F0aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbnMu
ZW5kKCkpCisgICAgICAgIGRlbGV0ZSBtX25vdGlmaWNhdGlvbnMudGFrZShub3RpZmljYXRpb24p
OworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkKK3sKK30KKworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FU
SU9OUykKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBjYWxsYmFjaykKK3sgIAorICAgIGlmIChkdW1wTm90aWZpY2F0aW9uKQorICAgICAgICBw
cmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1JU1NJT04gUkVRVUVTVEVEOiAlc1xuIiwg
UVN0cmluZyhjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKS50b1V0ZjgoKS5j
b25zdERhdGEoKSk7CisKKyAgICBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcGVybWlz
c2lvbiA9IGNoZWNrUGVybWlzc2lvbihjb250ZXh0KTsKKyAgICBpZiAocGVybWlzc2lvbiAhPSBO
b3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25Ob3RBbGxvd2VkKSB7CisgICAgICAgIGlmIChj
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUUhhc2g8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIENhbGxi
YWNrc0luZm8gPjo6aXRlcmF0b3IgaXRlciA9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cy5m
aW5kKGNvbnRleHQpOworICAgIGlmIChpdGVyICE9IG1fcGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0
cy5lbmQoKSkKKyAgICAgICAgaXRlci52YWx1ZSgpLm1fdm9pZENhbGxiYWNrcy5hcHBlbmQoY2Fs
bGJhY2spOworICAgIGVsc2UgeworICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYiA9IGNh
bGxiYWNrOworICAgICAgICBDYWxsYmFja3NJbmZvIGluZm87CisgICAgICAgIGluZm8ubV9mcmFt
ZSA9IHRvRnJhbWUoY29udGV4dCk7CisgICAgICAgIGluZm8ubV92b2lkQ2FsbGJhY2tzLmFwcGVu
ZChjYik7CisKKyAgICAgICAgaWYgKHRvUGFnZShjb250ZXh0KSAmJiB0b0ZyYW1lKGNvbnRleHQp
KSB7CisgICAgICAgICAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuaW5zZXJ0KGNvbnRl
eHQsIGluZm8pOworICAgICAgICAgICAgdG9QYWdlKGNvbnRleHQpLT5ub3RpZmljYXRpb25zUGVy
bWlzc2lvblJlcXVlc3RlZCh0b0ZyYW1lKGNvbnRleHQpKTsKKyAgICAgICAgfQorICAgIH0KK30K
KyNlbmRpZgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCit2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2Fs
bGJhY2spCit7CisgICAgaWYgKGR1bXBOb3RpZmljYXRpb24pCisgICAgICAgIHByaW50ZigiREVT
S1RPUCBOT1RJRklDQVRJT04gUEVSTUlTU0lPTiBSRVFVRVNURUQ6ICVzXG4iLCBRU3RyaW5nKGNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgp
KTsKKworICAgIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwZXJtaXNzaW9uID0gY2hl
Y2tQZXJtaXNzaW9uKGNvbnRleHQpOworICAgIGlmIChwZXJtaXNzaW9uICE9IE5vdGlmaWNhdGlv
bkNsaWVudDo6UGVybWlzc2lvbk5vdEFsbG93ZWQpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQor
ICAgICAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KE5vdGlmaWNhdGlvbjo6cGVybWlzc2lv
blN0cmluZyhwZXJtaXNzaW9uKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRSGFz
aDxTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQ2FsbGJhY2tzSW5mbyA+OjppdGVyYXRvciBpdGVy
ID0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmZpbmQoY29udGV4dCk7CisgICAgaWYgKGl0
ZXIgIT0gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLmVuZCgpKQorICAgICAgICBpdGVyLnZh
bHVlKCkubV9jYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
UmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4gY2IgPSBjYWxsYmFjazsKKyAg
ICAgICAgQ2FsbGJhY2tzSW5mbyBpbmZvOworICAgICAgICBpbmZvLm1fZnJhbWUgPSB0b0ZyYW1l
KGNvbnRleHQpOworICAgICAgICBpbmZvLm1fY2FsbGJhY2tzLmFwcGVuZChjYik7CisKKyAgICAg
ICAgaWYgKHRvUGFnZShjb250ZXh0KSAmJiB0b0ZyYW1lKGNvbnRleHQpKSB7CisgICAgICAgICAg
ICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuaW5zZXJ0KGNvbnRleHQsIGluZm8pOworICAg
ICAgICAgICAgdG9QYWdlKGNvbnRleHQpLT5ub3RpZmljYXRpb25zUGVybWlzc2lvblJlcXVlc3Rl
ZCh0b0ZyYW1lKGNvbnRleHQpKTsKKyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZgorCitOb3Rp
ZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAg
IHJldHVybiBtX2NhY2hlZFBlcm1pc3Npb25zLnZhbHVlKGNvbnRleHQsIE5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbk5vdEFsbG93ZWQpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0OjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBtX2NhY2hlZFBlcm1pc3Npb25zLnJlbW92ZShjb250
ZXh0KTsKKworICAgIFFIYXNoPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBDYWxsYmFja3NJbmZv
ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZmluZChjb250
ZXh0KTsKKyAgICBpZiAoaXRlciA9PSBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFFXZWJGcmFtZUFkYXB0ZXIqIGZyYW1lID0gaXRlci52
YWx1ZSgpLm1fZnJhbWU7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFFX
ZWJQYWdlQWRhcHRlciogcGFnZSA9IFFXZWJQYWdlQWRhcHRlcjo6a2l0KGZyYW1lLT5mcmFtZS0+
cGFnZSgpKTsKKyAgICBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZXJhc2UoaXRlcik7CisK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkdW1wTm90aWZpY2F0
aW9uKQorICAgICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIFBFUk1JU1NJT04gUkVR
VUVTVCBDQU5DRUxMRUQ6ICVzXG4iLCBRU3RyaW5nKGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKworICAgIHBhZ2UtPm5vdGlmaWNh
dGlvbnNQZXJtaXNzaW9uUmVxdWVzdENhbmNlbGxlZChmcmFtZSk7Cit9CisKK3ZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnNldE5vdGlmaWNhdGlvbnNBbGxvd2VkRm9yRnJhbWUo
RnJhbWUqIGZyYW1lLCBib29sIGFsbG93ZWQpCit7CisgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVu
dCgpKTsKKyAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gcGVybWlzc2lvbiA9IGFsbG93ZWQgPyBO
b3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb25BbGxvd2VkIDogTm90aWZpY2F0aW9uQ2xpZW50
OjpQZXJtaXNzaW9uRGVuaWVkOworICAgIG1fY2FjaGVkUGVybWlzc2lvbnMuaW5zZXJ0KGZyYW1l
LT5kb2N1bWVudCgpLCBwZXJtaXNzaW9uKTsKKworICAgIFFIYXNoPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCAgQ2FsbGJhY2tzSW5mbz46Oml0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXRlciAhPSBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHMuZW5kKCkpIHsKKyAgICAgICAgaWYgKGl0ZXIua2V5KCkgPT0gZnJhbWUtPmRv
Y3VtZW50KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaXRlciA9PSBt
X3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworI2lm
IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBRTGlzdDxSZWZQdHI8Vm9pZENhbGxi
YWNrPiA+JiB2b2lkQ2FsbGJhY2tzID0gaXRlci52YWx1ZSgpLm1fdm9pZENhbGxiYWNrczsKKyAg
ICBRX0ZPUkVBQ0goY29uc3QgUmVmUHRyPFZvaWRDYWxsYmFjaz4mIGNhbGxiYWNrLCB2b2lkQ2Fs
bGJhY2tzKSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5o
YW5kbGVFdmVudCgpOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQor
ICAgIFFMaXN0PFJlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+ID4mIGNhbGxi
YWNrcyA9IGl0ZXIudmFsdWUoKS5tX2NhbGxiYWNrczsKKyAgICBRX0ZPUkVBQ0goY29uc3QgUmVm
UHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4mIGNhbGxiYWNrLCBjYWxsYmFja3Mp
IHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2
ZW50KE5vdGlmaWNhdGlvbjo6cGVybWlzc2lvblN0cmluZyhwZXJtaXNzaW9uKSk7CisgICAgfQor
I2VuZGlmCisgICAgbV9wZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzLnJlbW92ZShpdGVyLmtleSgp
KTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2VuZERpc3BsYXlF
dmVudChOb3RpZmljYXRpb25XcmFwcGVyKiB3cmFwcGVyKQoreworICAgIE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uRm9yV3JhcHBlcih3cmFwcGVyKTsKKyAgICBpZiAo
bm90aWZpY2F0aW9uKQorICAgICAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCAic2hvdyIpOwor
fQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzZW5kRXZlbnQoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQorewor
ICAgIGlmIChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAg
bm90aWZpY2F0aW9uLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxz
ZSwgdHJ1ZSkpOworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjbGVh
ckNhY2hlZFBlcm1pc3Npb25zKCkKK3sKKyAgICBtX2NhY2hlZFBlcm1pc3Npb25zLmNsZWFyKCk7
Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlbW92ZVJlcGxhY2Vk
Tm90aWZpY2F0aW9uRnJvbVF1ZXVlKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAg
IE5vdGlmaWNhdGlvbiogb2xkTm90aWZpY2F0aW9uID0gMDsKKyAgICBOb3RpZmljYXRpb25zUXVl
dWU6Okl0ZXJhdG9yIGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsKKyAgICBOb3RpZmljYXRp
b25zUXVldWU6Okl0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKTsKKworICAg
IHdoaWxlIChpdGVyICE9IGVuZCkgeworICAgICAgICBOb3RpZmljYXRpb24qIGV4aXN0aW5nTm90
aWZpY2F0aW9uID0gaXRlci5rZXkoKTsKKyAgICAgICAgaWYgKGV4aXN0aW5nTm90aWZpY2F0aW9u
LT50YWcoKSA9PSBub3RpZmljYXRpb24tPnRhZygpKSB7CisgICAgICAgICAgICBvbGROb3RpZmlj
YXRpb24gPSBpdGVyLmtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgaXRlcisrOworICAgIH0KKworICAgIGlmIChvbGROb3RpZmljYXRpb24pIHsKKyAgICAgICAg
aWYgKGR1bXBOb3RpZmljYXRpb24pCisgICAgICAgICAgICBkdW1wUmVwbGFjZWRJZFRleHQob2xk
Tm90aWZpY2F0aW9uKTsKKyAgICAgICAgc2VuZEV2ZW50KG9sZE5vdGlmaWNhdGlvbiwgZXZlbnRO
YW1lcygpLmNsb3NlRXZlbnQpOworICAgICAgICBkZXRhY2hOb3RpZmljYXRpb24ob2xkTm90aWZp
Y2F0aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
OmRldGFjaE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBk
ZWxldGUgbV9ub3RpZmljYXRpb25zLnRha2Uobm90aWZpY2F0aW9uKTsKKyAgICBub3RpZmljYXRp
b24tPmRldGFjaFByZXNlbnRlcigpOworICAgIG5vdGlmaWNhdGlvbi0+dW5zZXRQZW5kaW5nQWN0
aXZpdHkobm90aWZpY2F0aW9uKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6ZHVtcFJlcGxhY2VkSWRUZXh0KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQorewor
ICAgIGlmIChub3RpZmljYXRpb24pCisgICAgICAgIHByaW50ZigiUkVQTEFDSU5HIE5PVElGSUNB
VElPTiAlc1xuIiwgUVN0cmluZyhub3RpZmljYXRpb24tPnRpdGxlKCkpLnRvVXRmOCgpLmNvbnN0
RGF0YSgpKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZHVtcFNo
b3dUZXh0KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIHByaW50ZigiREVTS1RP
UCBOT1RJRklDQVRJT046JXMgaWNvbiAlcywgdGl0bGUgJXMsIHRleHQgJXNcbiIsCisgICAgICAg
IG5vdGlmaWNhdGlvbi0+ZGlyKCkgPT0gInJ0bCIgPyAiKFJUTCkiIDogIiIsCisgICAgICAgIFFT
dHJpbmcobm90aWZpY2F0aW9uLT5pY29uVVJMKCkuc3RyaW5nKCkpLnRvVXRmOCgpLmNvbnN0RGF0
YSgpLCBRU3RyaW5nKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSkudG9VdGY4KCkuY29uc3REYXRhKCks
CisgICAgICAgIFFTdHJpbmcobm90aWZpY2F0aW9uLT5ib2R5KCkpLnRvVXRmOCgpLmNvbnN0RGF0
YSgpKTsKK30KKworUVdlYlBhZ2VBZGFwdGVyKiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dDo6dG9QYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgaWYgKCFj
b250ZXh0IHx8IGNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNv
bnRleHQpOworCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6Omtp
dChwYWdlKTsKK30KKworUVdlYkZyYW1lQWRhcHRlciogTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQ6OnRvRnJhbWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBp
ZiAoIWNvbnRleHQgfHwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oY29udGV4dCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFFXZWJGcmFtZUFkYXB0ZXI6OmtpdChkb2N1
bWVudC0+ZnJhbWUoKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorfQorCisjaW5jbHVkZSAibW9jX05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDgzZWQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5oCkBAIC0wLDAgKzEsMTU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdF9oCisjZGVmaW5lIE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0X2gKKworI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1QbHVnaW4uaCIKKyNpbmNsdWRlICJU
aW1lci5oIgorI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgorCisjaW5jbHVkZSA8
UU11bHRpSGFzaD4KKyNpbmNsdWRlIDxRU2NvcGVkUG9pbnRlcj4KKworY2xhc3MgUVdlYkZyYW1l
QWRhcHRlcjsKK2NsYXNzIFFXZWJQYWdlQWRhcHRlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEZyYW1lOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKKworY2xhc3MgTm90aWZpY2F0aW9uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0LCBwdWJs
aWMgUVdlYk5vdGlmaWNhdGlvbkRhdGEgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgTm90
aWZpY2F0aW9uV3JhcHBlcigpOworICAgIH5Ob3RpZmljYXRpb25XcmFwcGVyKCkgeyB9CisKKyAg
ICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjbG9zZShUaW1lcjxOb3RpZmljYXRpb25XcmFwcGVy
PiopOworICAgIHZvaWQgc2VuZERpc3BsYXlFdmVudChUaW1lcjxOb3RpZmljYXRpb25XcmFwcGVy
PiopOworICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUoKSBjb25zdDsKKyAgICBjb25zdCBRU3RyaW5n
IG1lc3NhZ2UoKSBjb25zdDsKKyAgICBjb25zdCBRVXJsIGljb25VcmwoKSBjb25zdDsKKyAgICBj
b25zdCBRVXJsIG9wZW5lclBhZ2VVcmwoKSBjb25zdDsKKworcHVibGljIFFfU0xPVFM6CisgICAg
dm9pZCBub3RpZmljYXRpb25DbG9zZWQoKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQo
KTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcj4gbV9w
cmVzZW50ZXI7CisgICAgVGltZXI8Tm90aWZpY2F0aW9uV3JhcHBlcj4gbV9jbG9zZVRpbWVyOwor
ICAgIFRpbWVyPE5vdGlmaWNhdGlvbldyYXBwZXI+IG1fZGlzcGxheUV2ZW50VGltZXI7CisKKyAg
ICBmcmllbmQgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ7Cit9OworCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKwor
dHlwZWRlZiBRSGFzaCA8Tm90aWZpY2F0aW9uKiwgTm90aWZpY2F0aW9uV3JhcHBlcio+IE5vdGlm
aWNhdGlvbnNRdWV1ZTsKKworY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQgOiBw
dWJsaWMgTm90aWZpY2F0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdCgpOworICAgIH5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpOwor
CisgICAgLyogV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IGludGVyZmFjZSAqLworICAgIHZp
cnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwo
Tm90aWZpY2F0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ry
b3llZChOb3RpZmljYXRpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJv
bGxlckRlc3Ryb3llZCgpOworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7CisjZW5k
aWYKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1p
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxS
ZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgdm9p
ZCBjYW5jZWwoTm90aWZpY2F0aW9uV3JhcHBlciopOworCisgICAgdm9pZCBzZXROb3RpZmljYXRp
b25zQWxsb3dlZEZvckZyYW1lKEZyYW1lKiwgYm9vbCBhbGxvd2VkKTsKKworICAgIHN0YXRpYyBi
b29sIGR1bXBOb3RpZmljYXRpb247CisKKyAgICB2b2lkIGFkZENsaWVudCgpIHsgbV9jbGllbnRD
b3VudCsrOyB9CisjaWZuZGVmIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgICAgYm9vbCBoYXNTeXN0
ZW1UcmF5SWNvbigpIGNvbnN0IHsgcmV0dXJuICFtX3N5c3RlbVRyYXlJY29uLmlzTnVsbCgpOyB9
CisgICAgdm9pZCBzZXRTeXN0ZW1UcmF5SWNvbihRT2JqZWN0KiBpY29uKSB7IG1fc3lzdGVtVHJh
eUljb24ucmVzZXQoaWNvbik7IH0KKyNlbmRpZgorICAgIHZvaWQgcmVtb3ZlQ2xpZW50KCk7Cisg
ICAgc3RhdGljIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KiBub3RpZmljYXRpb25QcmVz
ZW50ZXIoKTsKKworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uRm9yV3JhcHBlcihjb25z
dCBOb3RpZmljYXRpb25XcmFwcGVyKikgY29uc3Q7CisgICAgdm9pZCBub3RpZmljYXRpb25DbGlj
a2VkKE5vdGlmaWNhdGlvbldyYXBwZXIqKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQo
Y29uc3QgUVN0cmluZyYgdGl0bGUpOworICAgIHZvaWQgc2VuZERpc3BsYXlFdmVudChOb3RpZmlj
YXRpb25XcmFwcGVyKik7CisKKyAgICB2b2lkIGNsZWFyQ2FjaGVkUGVybWlzc2lvbnMoKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHNlbmRFdmVudChOb3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBkaXNwbGF5Tm90aWZpY2F0aW9uKE5vdGlmaWNh
dGlvbiopOworICAgIHZvaWQgcmVtb3ZlUmVwbGFjZWROb3RpZmljYXRpb25Gcm9tUXVldWUoTm90
aWZpY2F0aW9uKik7CisgICAgdm9pZCBkZXRhY2hOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKik7
CisgICAgdm9pZCBkdW1wUmVwbGFjZWRJZFRleHQoTm90aWZpY2F0aW9uKik7CisgICAgdm9pZCBk
dW1wU2hvd1RleHQoTm90aWZpY2F0aW9uKik7CisgICAgUVdlYlBhZ2VBZGFwdGVyKiB0b1BhZ2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFFXZWJGcmFtZUFkYXB0ZXIqIHRvRnJhbWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgaW50IG1fY2xpZW50Q291bnQ7CisgICAg
c3RydWN0IENhbGxiYWNrc0luZm8geworICAgICAgICBRV2ViRnJhbWVBZGFwdGVyKiBtX2ZyYW1l
OworI2lmIEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICAgICAgUUxpc3Q8UmVmUHRy
PFZvaWRDYWxsYmFjaz4gPiBtX3ZvaWRDYWxsYmFja3M7CisjZW5kaWYKKyNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKKyAgICAgICAgUUxpc3Q8UmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKKyNlbmRpZgorICAgIH07CisgICAgUUhhc2g8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosICBDYWxsYmFja3NJbmZvID4gbV9wZW5kaW5nUGVybWlzc2lvblJl
cXVlc3RzOworICAgIFFIYXNoPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb3RpZmljYXRpb25D
bGllbnQ6OlBlcm1pc3Npb24+IG1fY2FjaGVkUGVybWlzc2lvbnM7CisKKyAgICBOb3RpZmljYXRp
b25zUXVldWUgbV9ub3RpZmljYXRpb25zOworICAgIFF0UGxhdGZvcm1QbHVnaW4gbV9wbGF0Zm9y
bVBsdWdpbjsKKyNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAgICBRU2NvcGVkUG9pbnRl
cjxRT2JqZWN0PiBtX3N5c3RlbVRyYXlJY29uOworI2VuZGlmCit9OworCisjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworfQor
CisjZW5kaWYgLy8gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDFkMjZmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNRdC5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU3Rh
aWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLiA8aW5mb0BzdGFpa29zLm5ldD4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25v
bG9naWEKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llc1F0LmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVD
bGllbnRRdC5oIgorI2luY2x1ZGUgIlFXZWJQYWdlQWRhcHRlci5oIgorI2luY2x1ZGUgInF3ZWJo
aXN0b3J5aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicXdlYnBsdWdpbmZhY3RvcnkuaCIKKworI2lu
Y2x1ZGUgPEludFNpemUuaD4KKyNpbmNsdWRlIDxOb3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFBhZ2UuaD4KKyNpbmNsdWRlIDxQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxQbGF0Zm9ybUNvb2tp
ZUphci5oPgorI2luY2x1ZGUgPFBsdWdpbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8UUNvcmVBcHBs
aWNhdGlvbj4KKyNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0
Ojppbml0aWFsaXplKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsYXRmb3JtU3RyYXRl
Z2llc1F0LCBwbGF0Zm9ybVN0cmF0ZWdpZXMsICgpKTsKKyAgICBRX1VOVVNFRChwbGF0Zm9ybVN0
cmF0ZWdpZXMpOworfQorCitQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6UGxhdGZvcm1TdHJhdGVnaWVz
UXQoKQoreworICAgIHNldFBsYXRmb3JtU3RyYXRlZ2llcyh0aGlzKTsKK30KKworCitDb29raWVz
U3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVDb29raWVzU3RyYXRlZ3koKQor
eworICAgIHJldHVybiB0aGlzOworfQorCitEYXRhYmFzZVN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9
CisKK0xvYWRlclN0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlTG9hZGVyU3Ry
YXRlZ3koKQoreworICAgIHJldHVybiB0aGlzOworfQorCitQYXN0ZWJvYXJkU3RyYXRlZ3kqIFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKQoreworICAgIHJl
dHVybiAwOworfQorCitQbHVnaW5TdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNyZWF0
ZVBsdWdpblN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworU2hhcmVkV29ya2Vy
U3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVTaGFyZWRXb3JrZXJTdHJhdGVn
eSgpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1N0b3JhZ2VTdHJhdGVneSogUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmNyZWF0ZVN0b3JhZ2VTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIHRoaXM7
Cit9CisKK1Zpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVW
aXNpdGVkTGlua1N0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKK3sK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOworfQorCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKK30KKworYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsKQoreworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxl
ZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOworfQorCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
K3sKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKK30KKworYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQoreworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgcmF3Q29va2llcyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit7CisgICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKCkKK3sKKyAgICBQbHVnaW5EYXRhYmFzZTo6aW5z
dGFsbGVkUGx1Z2lucygpLT5yZWZyZXNoKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVz
UXQ6OmdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSogcGFnZSwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+JiBvdXRQbHVnaW5zKQoreworICAgIFFXZWJQYWdlQWRhcHRlciogcVBh
Z2UgPSAwOworICAgIGlmICghcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaXNFbXB0eUNocm9tZUNs
aWVudCgpKQorICAgICAgICBxUGFnZSA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0Jj4ocGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkpLm1fd2ViUGFnZTsKKworICAgIFFXZWJQbHVnaW5GYWN0b3J5
KiBmYWN0b3J5OworICAgIGlmIChxUGFnZSAmJiAoZmFjdG9yeSA9IHFQYWdlLT5wbHVnaW5GYWN0
b3J5KSkgeworCisgICAgICAgIFFMaXN0PFFXZWJQbHVnaW5GYWN0b3J5OjpQbHVnaW4+IHFwbHVn
aW5zID0gZmFjdG9yeS0+cGx1Z2lucygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHFw
bHVnaW5zLmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgUVdlYlBsdWdpbkZhY3Rv
cnk6OlBsdWdpbiYgcXBsdWdpbiA9IHFwbHVnaW5zLmF0KGkpOworICAgICAgICAgICAgUGx1Z2lu
SW5mbyBpbmZvOworICAgICAgICAgICAgaW5mby5uYW1lID0gcXBsdWdpbi5uYW1lOworICAgICAg
ICAgICAgaW5mby5kZXNjID0gcXBsdWdpbi5kZXNjcmlwdGlvbjsKKworICAgICAgICAgICAgZm9y
IChpbnQgaiA9IDA7IGogPCBxcGx1Z2luLm1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBRV2ViUGx1Z2luRmFjdG9yeTo6TWltZVR5cGUmIG1pbWVUeXBlID0g
cXBsdWdpbi5taW1lVHlwZXMuYXQoaik7CisKKyAgICAgICAgICAgICAgICBNaW1lQ2xhc3NJbmZv
IG1pbWVJbmZvOworICAgICAgICAgICAgICAgIG1pbWVJbmZvLnR5cGUgPSBtaW1lVHlwZS5uYW1l
OworICAgICAgICAgICAgICAgIG1pbWVJbmZvLmRlc2MgPSBtaW1lVHlwZS5kZXNjcmlwdGlvbjsK
KyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IG1pbWVUeXBlLmZpbGVFeHRlbnNp
b25zLmNvdW50KCk7ICsraykKKyAgICAgICAgICAgICAgICAgICAgbWltZUluZm8uZXh0ZW5zaW9u
cy5hcHBlbmQobWltZVR5cGUuZmlsZUV4dGVuc2lvbnMuYXQoaykpOworCisgICAgICAgICAgICAg
ICAgaW5mby5taW1lcy5hcHBlbmQobWltZUluZm8pOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgb3V0UGx1Z2lucy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQbHVn
aW5EYXRhYmFzZSogZGIgPSBQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpOworICAg
IGNvbnN0IFZlY3RvcjxQbHVnaW5QYWNrYWdlKj4gJnBsdWdpbnMgPSBkYi0+cGx1Z2lucygpOwor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IFBsdWdpbkluZm8gaW5mbzsKKyAgICAgICAgUGx1Z2luUGFja2FnZSogcGFja2FnZSA9IHBsdWdp
bnNbaV07CisKKyAgICAgICAgaW5mby5uYW1lID0gcGFja2FnZS0+bmFtZSgpOworICAgICAgICBp
bmZvLmZpbGUgPSBwYWNrYWdlLT5maWxlTmFtZSgpOworICAgICAgICBpbmZvLmRlc2MgPSBwYWNr
YWdlLT5kZXNjcmlwdGlvbigpOworCisgICAgICAgIGNvbnN0IE1JTUVUb0Rlc2NyaXB0aW9uc01h
cCYgbWltZVRvRGVzY3JpcHRpb25zID0gcGFja2FnZS0+bWltZVRvRGVzY3JpcHRpb25zKCk7Cisg
ICAgICAgIE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWltZVRv
RGVzY3JpcHRpb25zLmVuZCgpOworICAgICAgICBmb3IgKE1JTUVUb0Rlc2NyaXB0aW9uc01hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtaW1lVG9EZXNjcmlwdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWU7CisKKyAgICAgICAgICAg
IG1pbWUudHlwZSA9IGl0LT5rZXk7CisgICAgICAgICAgICBtaW1lLmRlc2MgPSBpdC0+dmFsdWU7
CisgICAgICAgICAgICBtaW1lLmV4dGVuc2lvbnMgPSBwYWNrYWdlLT5taW1lVG9FeHRlbnNpb25z
KCkuZ2V0KG1pbWUudHlwZSk7CisKKyAgICAgICAgICAgIGluZm8ubWltZXMuYXBwZW5kKG1pbWUp
OworICAgICAgICB9CisKKyAgICAgICAgb3V0UGx1Z2lucy5hcHBlbmQoaW5mbyk7CisgICAgfQor
Cit9CisKKy8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKKworYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKQoreworICAgIEFTU0VSVCho
YXNoKTsKKworICAgIFZlY3RvcjxVQ2hhciwgNTEyPiB1cmw7CisgICAgdmlzaXRlZFVSTChiYXNl
VVJMLCBhdHRyaWJ1dGVVUkwsIHVybCk7CisKKyAgICAvLyBJZiB0aGUgUXQ0LjQgaW50ZXJmYWNl
IGZvciB0aGUgaGlzdG9yeSBpcyB1c2VkLCB3ZSB3aWxsIGhhdmUgdG8gZmFsbGJhY2sKKyAgICAv
LyB0byB0aGUgb2xkIGdsb2JhbCBoaXN0b3J5LgorICAgIFFXZWJIaXN0b3J5SW50ZXJmYWNlKiBp
ZmFjZSA9IFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7CisgICAgaWYg
KGlmYWNlKQorICAgICAgICByZXR1cm4gaWZhY2UtPmhpc3RvcnlDb250YWlucyhRU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8UUNoYXIqPih1cmwuZGF0YSgpKSwgdXJsLnNpemUoKSkpOworCisgICAg
cmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKK30KKwordm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6YWRkVmlzaXRlZExpbmsoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFz
aCkKK3sKKyAgICBwYWdlLT5ncm91cCgpLmFkZFZpc2l0ZWRMaW5rSGFzaChoYXNoKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzkxZTY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNRdC5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBsYXRmb3JtU3RyYXRlZ2llc1F0X2gKKyNkZWZpbmUgUGxhdGZvcm1T
dHJhdGVnaWVzUXRfaAorCisjaW5jbHVkZSA8Q29va2llc1N0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8
RGF0YWJhc2VTdHJhdGVneS5oPgorI2luY2x1ZGUgPExvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVk
ZSA8UGxhdGZvcm1TdHJhdGVnaWVzLmg+CisjaW5jbHVkZSA8UGx1Z2luU3RyYXRlZ3kuaD4KKyNp
bmNsdWRlIDxTaGFyZWRXb3JrZXJTdHJhdGVneS5oPgorI2luY2x1ZGUgPFN0b3JhZ2VTdHJhdGVn
eS5oPgorI2luY2x1ZGUgPFZpc2l0ZWRMaW5rU3RyYXRlZ3kuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OworfQorCitjbGFzcyBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2Vi
Q29yZTo6Q29va2llc1N0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ks
IHByaXZhdGUgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGx1Z2lu
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6U2hhcmVkV29ya2VyU3RyYXRlZ3ksIHByaXZhdGUg
V2ViQ29yZTo6U3RvcmFnZVN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKKworcHJpdmF0
ZToKKyAgICBQbGF0Zm9ybVN0cmF0ZWdpZXNRdCgpOworCisgICAgLy8gV2ViQ29yZTo6UGxhdGZv
cm1TdHJhdGVnaWVzCisgICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0
ZUNvb2tpZXNTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVn
eSogY3JlYXRlRGF0YWJhc2VTdHJhdGVneSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJTdHJhdGVneSogY3JlYXRlU2hhcmVkV29ya2Vy
U3RyYXRlZ3koKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0b3JhZ2VTdHJhdGVneSogY3JlYXRl
U3RvcmFnZVN0cmF0ZWd5KCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0
ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CisgICAgCisgICAgLy8gV2ViQ29yZTo6
Q29va2llc1N0cmF0ZWd5CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYp
OworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBi
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CisgICAg
Ly8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCisgICAgLy8gV2ViQ29yZTo6UGx1
Z2luU3RyYXRlZ3kKKyAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+Jik7CisKKyAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWlj
U3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhX
ZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOworfTsKKworI2VuZGlmIC8vIFBsYXRm
b3JtU3RyYXRlZ2llc1F0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUG9wdXBNZW51UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Q
b3B1cE1lbnVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJkMDgz
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9w
dXBNZW51UXQuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIHBvcHVwIG1lbnUgaW1wbGVtZW50YXRpb24gZm9yIDxzZWxlY3Q+IGVsZW1lbnRzIGlu
IFdlYkNvcmUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBF
bW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQ295cHJpZ2h0IChDKSAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBvcHVwTWVudVF0LmgiCisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgorI2lu
Y2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgorCitjbGFzcyBTZWxlY3REYXRhIDogcHVi
bGljIFFXZWJTZWxlY3REYXRhIHsKK3B1YmxpYzoKKyAgICBTZWxlY3REYXRhKFdlYkNvcmU6OlBv
cHVwTWVudUNsaWVudComIGRhdGEpIDogZChkYXRhKSB7IH0KKworICAgIHZpcnR1YWwgSXRlbVR5
cGUgaXRlbVR5cGUoaW50KSBjb25zdDsKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRleHQoaW50
IGlkeCkgY29uc3QgeyByZXR1cm4gUVN0cmluZyhkID8gZC0+aXRlbVRleHQoaWR4KSA6ICIiKTsg
fQorICAgIHZpcnR1YWwgUVN0cmluZyBpdGVtVG9vbFRpcChpbnQgaWR4KSBjb25zdCB7IHJldHVy
biBRU3RyaW5nKGQgPyBkLT5pdGVtVG9vbFRpcChpZHgpIDogIiIpOyB9CisgICAgdmlydHVhbCBi
b29sIGl0ZW1Jc0VuYWJsZWQoaW50IGlkeCkgY29uc3QgeyByZXR1cm4gZCA/IGQtPml0ZW1Jc0Vu
YWJsZWQoaWR4KSA6IGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgaXRlbUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gZCA/IGQtPmxpc3RTaXplKCkgOiAwOyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1J
c1NlbGVjdGVkKGludCBpZHgpIGNvbnN0IHsgcmV0dXJuIGQgPyBkLT5pdGVtSXNTZWxlY3RlZChp
ZHgpIDogZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbXVsdGlwbGUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFFDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBkID8gUUNvbG9y
KGQtPm1lbnVTdHlsZSgpLmJhY2tncm91bmRDb2xvcigpKSA6IFFDb2xvcigpOyB9CisgICAgdmly
dHVhbCBRQ29sb3IgZm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gZCA/IFFDb2xvcihk
LT5tZW51U3R5bGUoKS5mb3JlZ3JvdW5kQ29sb3IoKSkgOiBRQ29sb3IoKTsgfQorICAgIHZpcnR1
YWwgUUNvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3IoaW50IGlkeCkgY29uc3QgeyByZXR1cm4gZCA/
IFFDb2xvcihkLT5pdGVtU3R5bGUoaWR4KS5iYWNrZ3JvdW5kQ29sb3IoKSkgOiBRQ29sb3IoKTsg
fQorICAgIHZpcnR1YWwgUUNvbG9yIGl0ZW1Gb3JlZ3JvdW5kQ29sb3IoaW50IGlkeCkgY29uc3Qg
eyByZXR1cm4gZCA/IFFDb2xvcihkLT5pdGVtU3R5bGUoaWR4KS5mb3JlZ3JvdW5kQ29sb3IoKSkg
OiBRQ29sb3IoKTsgfQorCitwcml2YXRlOgorICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCom
IGQ7Cit9OworCitib29sIFNlbGVjdERhdGE6Om11bHRpcGxlKCkgY29uc3QKK3sKKyAgICBpZiAo
IWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBkLT5tdWx0aXBsZSgpOwor
fQorCitTZWxlY3REYXRhOjpJdGVtVHlwZSBTZWxlY3REYXRhOjppdGVtVHlwZShpbnQgaWR4KSBj
b25zdAoreworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIFNlbGVjdERhdGE6Ok9wdGlvbjsK
KworICAgIGlmIChkLT5pdGVtSXNTZXBhcmF0b3IoaWR4KSkKKyAgICAgICAgcmV0dXJuIFNlbGVj
dERhdGE6OlNlcGFyYXRvcjsKKyAgICBpZiAoZC0+aXRlbUlzTGFiZWwoaWR4KSkKKyAgICAgICAg
cmV0dXJuIFNlbGVjdERhdGE6Okdyb3VwOworICAgIHJldHVybiBTZWxlY3REYXRhOjpPcHRpb247
Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUG9wdXBNZW51UXQ6OlBvcHVwTWVudVF0KFBv
cHVwTWVudUNsaWVudCogY2xpZW50LCBjb25zdCBDaHJvbWVDbGllbnRRdCogY2hyb21lQ2xpZW50
KQorICAgIDogbV9wb3B1cENsaWVudChjbGllbnQpCisgICAgLCBtX2Nocm9tZUNsaWVudChjaHJv
bWVDbGllbnQpCit7Cit9CisKK1BvcHVwTWVudVF0Ojp+UG9wdXBNZW51UXQoKQoreworfQorCit2
b2lkIFBvcHVwTWVudVF0OjpkaXNjb25uZWN0Q2xpZW50KCkKK3sKKyAgICBtX3BvcHVwQ2xpZW50
ID0gMDsKK30KKwordm9pZCBQb3B1cE1lbnVRdDo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBG
cmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKK3sKKyAgICBpZiAoIW1fcG9wdXBDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9wb3B1cCkgeworICAgICAgICBtX3BvcHVwID0g
bV9jaHJvbWVDbGllbnQtPmNyZWF0ZVNlbGVjdFBvcHVwKCk7CisgICAgICAgIGNvbm5lY3QobV9w
b3B1cC5nZXQoKSwgU0lHTkFMKGRpZEhpZGUoKSksIHRoaXMsIFNMT1QoZGlkSGlkZSgpKSk7Cisg
ICAgICAgIGNvbm5lY3QobV9wb3B1cC5nZXQoKSwgU0lHTkFMKHNlbGVjdEl0ZW0oaW50LCBib29s
LCBib29sKSksIHRoaXMsIFNMT1Qoc2VsZWN0SXRlbShpbnQsIGJvb2wsIGJvb2wpKSk7CisgICAg
fQorCisgICAgUVJlY3QgZ2VvbWV0cnkocmVjdCk7CisgICAgZ2VvbWV0cnkubW92ZVRvcExlZnQo
dmlldy0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9uKCkpKTsKKyAgICBtX3BvcHVwLT5z
ZXRHZW9tZXRyeShnZW9tZXRyeSk7CisgICAgbV9wb3B1cC0+c2V0Rm9udChtX3BvcHVwQ2xpZW50
LT5tZW51U3R5bGUoKS5mb250KCkuc3ludGhldGljRm9udCgpKTsKKworICAgIG1fc2VsZWN0RGF0
YSA9IGFkb3B0UHRyKG5ldyBTZWxlY3REYXRhKG1fcG9wdXBDbGllbnQpKTsKKyAgICBtX3BvcHVw
LT5zaG93KCptX3NlbGVjdERhdGEuZ2V0KCkpOworfQorCit2b2lkIFBvcHVwTWVudVF0OjpkaWRI
aWRlKCkKK3sKKyAgICBpZiAobV9wb3B1cENsaWVudCkKKyAgICAgICAgbV9wb3B1cENsaWVudC0+
cG9wdXBEaWRIaWRlKCk7Cit9CisKK3ZvaWQgUG9wdXBNZW51UXQ6OmhpZGUoKQoreworICAgIGlm
IChtX3BvcHVwKQorICAgICAgICBtX3BvcHVwLT5oaWRlKCk7Cit9CisKK3ZvaWQgUG9wdXBNZW51
UXQ6OnVwZGF0ZUZyb21FbGVtZW50KCkKK3sKKyAgICBpZiAobV9wb3B1cENsaWVudCkKKyAgICAg
ICAgbV9wb3B1cENsaWVudC0+c2V0VGV4dEZyb21JdGVtKG1fcG9wdXBDbGllbnQtPnNlbGVjdGVk
SW5kZXgoKSk7Cit9CisKK3ZvaWQgUG9wdXBNZW51UXQ6OnNlbGVjdEl0ZW0oaW50IGluZGV4LCBi
b29sIGN0cmwsIGJvb2wgc2hpZnQpCit7CisgICAgaWYgKCFtX3BvcHVwQ2xpZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3BvcHVwQ2xpZW50LT5saXN0Qm94U2VsZWN0SXRlbShpbmRleCwg
Y3RybCwgc2hpZnQpOworICAgIHJldHVybjsKKworICAgIG1fcG9wdXBDbGllbnQtPnZhbHVlQ2hh
bmdlZChpbmRleCk7Cit9CisKK30KKworI2luY2x1ZGUgIm1vY19Qb3B1cE1lbnVRdC5jcHAiCisK
Ky8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1BvcHVwTWVudVF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BvcHVwTWVudVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU3NjUx
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUG9w
dXBNZW51UXQuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBQb3B1
cE1lbnVRdF9oCisjZGVmaW5lIFBvcHVwTWVudVF0X2gKKworI2luY2x1ZGUgIlBvcHVwTWVudS5o
IgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIFFXZWJTZWxlY3REYXRhOworY2xhc3MgUVdlYlNl
bGVjdE1ldGhvZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDaHJvbWVDbGllbnRR
dDsKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIFBvcHVwTWVudUNsaWVudDsKKworY2xhc3MgUG9w
dXBNZW51UXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFBvcHVwTWVudSB7CisgICAgUV9PQkpF
Q1QKK3B1YmxpYzoKKyAgICBQb3B1cE1lbnVRdChQb3B1cE1lbnVDbGllbnQqLCBjb25zdCBDaHJv
bWVDbGllbnRRdCopOworICAgIH5Qb3B1cE1lbnVRdCgpOworCisgICAgdmlydHVhbCB2b2lkIHNo
b3coY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIGludCBpbmRleCk7CisgICAgdmlydHVhbCB2
b2lkIGhpZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAg
dm9pZCBkaWRIaWRlKCk7CisgICAgdm9pZCBzZWxlY3RJdGVtKGludCBpbmRleCwgYm9vbCBjdHJs
LCBib29sIHNoaWZ0KTsKKworcHJpdmF0ZToKKyAgICBQb3B1cE1lbnVDbGllbnQqIG1fcG9wdXBD
bGllbnQ7CisgICAgT3duUHRyPFFXZWJTZWxlY3RNZXRob2Q+IG1fcG9wdXA7CisgICAgT3duUHRy
PFFXZWJTZWxlY3REYXRhPiBtX3NlbGVjdERhdGE7CisgICAgY29uc3QgQ2hyb21lQ2xpZW50UXQq
IG1fY2hyb21lQ2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8gUG9wdXBNZW51UXRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEwN2U3MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRl
ci5jcHAKQEAgLTAsMCArMSw5OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEg
UGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisKKyNpbmNsdWRlICJBUElDYXN0LmgiCisj
aW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgorI2luY2x1ZGUg
IkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudFF0LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5j
bHVkZSAiSFRNTE1ldGFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNs
dWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2lu
Y2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlFXZWJQYWdlQWRhcHRlci5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgorI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0LmgiCisjaW5jbHVkZSAiVGlsZWRCYWNraW5n
U3RvcmUuaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2lu
Y2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgInF0X3J1bnRpbWUuaCIKKyNpbmNsdWRlICJxd2Vi
c2VjdXJpdHlvcmlnaW4uaCIKKyNpbmNsdWRlICJxd2Vic2VjdXJpdHlvcmlnaW5fcC5oIgorI2lu
Y2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgorI2luY2x1ZGUgPEludFJlY3QuaD4KKyNpbmNsdWRlIDxJ
bnRTaXplLmg+CisjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVz
dD4KKworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1
cmVFdmVudC5oIgorI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5oIgorI2VuZGlmCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgaW5saW5lIFJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IGNhY2hlTG9hZENvbnRyb2xUb0NhY2hlUG9saWN5KHVpbnQgY2FjaGVMb2FkQ29u
dHJvbCkKK3sKKyAgICBzd2l0Y2ggKGNhY2hlTG9hZENvbnRyb2wpIHsKKyAgICBjYXNlIFFOZXR3
b3JrUmVxdWVzdDo6QWx3YXlzTmV0d29yazoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlJlbG9h
ZElnbm9yaW5nQ2FjaGVEYXRhOworICAgIGNhc2UgUU5ldHdvcmtSZXF1ZXN0OjpQcmVmZXJDYWNo
ZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlJldHVybkNhY2hlRGF0YUVsc2VMb2FkOworICAg
IGNhc2UgUU5ldHdvcmtSZXF1ZXN0OjpBbHdheXNDYWNoZToKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlJldHVybkNhY2hlRGF0YURvbnRMb2FkOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gV2ViQ29yZTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKK30K
KworUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1lRGF0YShXZWJDb3JlOjpQYWdlKiBwYXJlbnRQYWdl
LCBXZWJDb3JlOjpGcmFtZSogcGFyZW50RnJhbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXJGcmFtZUVsZW1lbnQsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCisg
ICAgOiBuYW1lKGZyYW1lTmFtZSkKKyAgICAsIG93bmVyRWxlbWVudChvd25lckZyYW1lRWxlbWVu
dCkKKyAgICAsIHBhZ2UocGFyZW50UGFnZSkKKyAgICAsIGFsbG93c1Njcm9sbGluZyh0cnVlKQor
ICAgICwgbWFyZ2luV2lkdGgoMCkKKyAgICAsIG1hcmdpbkhlaWdodCgwKQoreworICAgIC8vIG1h
aW5mcmFtZSBpcyBhbHJlYWR5IGNyZWF0ZWQgaW4gV2ViQ29yZTo6UGFnZSwganVzdCB1c2UgaXQu
CisgICAgaWYgKCFwYXJlbnRGcmFtZSB8fCAhb3duZXJFbGVtZW50KSB7CisgICAgICAgIGZyYW1l
ID0gJnBhcmVudFBhZ2UtPm1haW5GcmFtZSgpOworICAgICAgICBmcmFtZUxvYWRlckNsaWVudCA9
IHN0YXRpY19jYXN0PEZyYW1lTG9hZGVyQ2xpZW50UXQqPigmZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmcmFtZUxvYWRlckNsaWVudCA9IG5ldyBGcmFt
ZUxvYWRlckNsaWVudFF0KCk7CisgICAgICAgIGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCBv
d25lckVsZW1lbnQsIGZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTog
QWxsIG9mIHRoZSBiZWxvdyBzaG91bGQgcHJvYmFibHkgYmUgbW92ZWQgb3ZlciBpbnRvIFdlYkNv
cmUKKyAgICBmcmFtZS0+dHJlZSgpLnNldE5hbWUobmFtZSk7CisgICAgaWYgKHBhcmVudEZyYW1l
KQorICAgICAgICBwYXJlbnRGcmFtZS0+dHJlZSgpLmFwcGVuZENoaWxkKGZyYW1lKTsKK30KKwor
UVdlYkZyYW1lQWRhcHRlcjo6UVdlYkZyYW1lQWRhcHRlcigpCisgICAgOiBwYWdlQWRhcHRlcigw
KQorICAgICwgYWxsb3dzU2Nyb2xsaW5nKHRydWUpCisgICAgLCBtYXJnaW5XaWR0aCgtMSkKKyAg
ICAsIG1hcmdpbkhlaWdodCgtMSkKKyAgICAsIGhvcml6b250YWxTY3JvbGxCYXJQb2xpY3koUXQ6
OlNjcm9sbEJhckFzTmVlZGVkKQorICAgICwgdmVydGljYWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNj
cm9sbEJhckFzTmVlZGVkKQorICAgICwgZnJhbWUoMCkKKyAgICAsIGZyYW1lTG9hZGVyQ2xpZW50
KDApCit7Cit9CisKK1FXZWJGcmFtZUFkYXB0ZXI6On5RV2ViRnJhbWVBZGFwdGVyKCkKK3sKKyAg
ICBpZiAoZnJhbWVMb2FkZXJDbGllbnQpCisgICAgICAgIGZyYW1lTG9hZGVyQ2xpZW50LT5tX3dl
YkZyYW1lID0gMDsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpsb2FkKGNvbnN0IFFOZXR3
b3JrUmVxdWVzdCYgcmVxLCBRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBvcGVyYXRp
b24sIGNvbnN0IFFCeXRlQXJyYXkmIGJvZHkpCit7CisgICAgaWYgKGZyYW1lLT50cmVlKCkucGFy
ZW50KCkpCisgICAgICAgIHBhZ2VBZGFwdGVyLT5pbnNpZGVPcGVuQ2FsbCA9IHRydWU7CisKKyAg
ICBRVXJsIHVybCA9IGVuc3VyZUFic29sdXRlVXJsKHJlcS51cmwoKSk7CisKKyAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOworCisgICAgc3dpdGNoIChvcGVyYXRpb24p
IHsKKyAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6SGVhZE9wZXJhdGlvbjoKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJIRUFEIik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb246CisgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyOjpQdXRPcGVyYXRpb246CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhv
ZCgiUFVUIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
OjpQb3N0T3BlcmF0aW9uOgorICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIlBPU1QiKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkRlbGV0ZU9w
ZXJhdGlvbjoKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJERUxFVEUiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkN1c3RvbU9wZXJhdGlv
bjoKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHJlcS5hdHRyaWJ1dGUoUU5ldHdvcmtS
ZXF1ZXN0OjpDdXN0b21WZXJiQXR0cmlidXRlKS50b0J5dGVBcnJheSgpLmNvbnN0RGF0YSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OlVua25vd25P
cGVyYXRpb246CisgICAgICAgIC8vIGVoPworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBR
VmFyaWFudCBjYWNoZUxvYWQgPSByZXEuYXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6Q2FjaGVM
b2FkQ29udHJvbEF0dHJpYnV0ZSk7CisgICAgaWYgKGNhY2hlTG9hZC5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgYm9vbCBvazsKKyAgICAgICAgdWludCBjYWNoZUxvYWRWYWx1ZSA9IGNhY2hlTG9hZC50
b1VJbnQoJm9rKTsKKyAgICAgICAgaWYgKG9rKQorICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNo
ZVBvbGljeShjYWNoZUxvYWRDb250cm9sVG9DYWNoZVBvbGljeShjYWNoZUxvYWRWYWx1ZSkpOwor
ICAgIH0KKworICAgIFFMaXN0PFFCeXRlQXJyYXk+IGh0dHBIZWFkZXJzID0gcmVxLnJhd0hlYWRl
ckxpc3QoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGh0dHBIZWFkZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJmhlYWRlck5hbWUgPSBodHRwSGVhZGVycy5h
dChpKTsKKyAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoUVN0cmluZzo6ZnJvbUxh
dGluMShoZWFkZXJOYW1lKSwgUVN0cmluZzo6ZnJvbUxhdGluMShyZXEucmF3SGVhZGVyKGhlYWRl
ck5hbWUpKSk7CisgICAgfQorCisgICAgaWYgKCFib2R5LmlzRW1wdHkoKSkKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQQm9keShXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKGJvZHkuY29uc3REYXRh
KCksIGJvZHkuc2l6ZSgpKSk7CisKKyAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0KSk7CisKKyAgICBpZiAoZnJhbWUtPnRyZWUo
KS5wYXJlbnQoKSkKKyAgICAgICAgcGFnZUFkYXB0ZXItPmluc2lkZU9wZW5DYWxsID0gZmFsc2U7
Cit9CisKK2Jvb2wgUVdlYkZyYW1lQWRhcHRlcjo6aGFzVmlldygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZyYW1lICYmIGZyYW1lLT52aWV3KCk7Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVO
VFMpCit2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OmhhbmRsZUdlc3R1cmVFdmVudChRR2VzdHVyZUV2
ZW50RmFjYWRlKiBnZXN0dXJlRXZlbnQpCit7CisgICAgQVNTRVJUKGZyYW1lICYmIGZyYW1lLT52
aWV3KCkpOworICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LT50eXBlKSB7CisgICAgY2FzZSBRdDo6
VGFwR2VzdHVyZToKKyAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZUdlc3R1cmVF
dmVudChjb252ZXJ0R2VzdHVyZShnZXN0dXJlRXZlbnQpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBRdDo6VGFwQW5kSG9sZEdlc3R1cmU6CisgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS5zZW5kQ29udGV4dE1lbnVFdmVudEZvckdlc3R1cmUoY29udmVydEdlc3R1cmUoZ2VzdHVyZUV2
ZW50KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK30KKyNlbmRpZgorCitRVmFyaWFudCBRV2ViRnJhbWVBZGFwdGVy
OjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyAmc2NyaXB0U291cmNlKQoreworICAg
IFNjcmlwdENvbnRyb2xsZXImIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Cisg
ICAgUVZhcmlhbnQgcmM7CisgICAgaW50IGRpc3RhbmNlID0gMDsKKyAgICBTY3JpcHRWYWx1ZSB2
YWx1ZSA9IHNjcmlwdENvbnRyb2xsZXIuZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNj
cmlwdFNvdXJjZSkpOworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gc2NyaXB0Q29udHJvbGxl
ci5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5nbG9iYWxFeGVjKCk7Cisg
ICAgSlNWYWx1ZVJlZiogaWdub3JlZEV4Y2VwdGlvbiA9IDA7CisgICAgZXhlYy0+dm0oKS5hcGlM
b2NrKCkubG9jaygpOworICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSB0b1JlZihleGVjLCB2YWx1
ZS5qc1ZhbHVlKCkpOworICAgIGV4ZWMtPnZtKCkuYXBpTG9jaygpLnVubG9jaygpOworICAgIHJj
ID0gSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9RVmFyaWFudCh0b1JlZihleGVjKSwgdmFs
dWVSZWYsIFFNZXRhVHlwZTo6Vm9pZCwgJmRpc3RhbmNlLCBpZ25vcmVkRXhjZXB0aW9uKTsKKyAg
ICByZXR1cm4gcmM7Cit9CisKK3ZvaWQgUVdlYkZyYW1lQWRhcHRlcjo6YWRkVG9KYXZhU2NyaXB0
V2luZG93T2JqZWN0KGNvbnN0IFFTdHJpbmcmIG5hbWUsIFFPYmplY3QqIG9iamVjdCwgVmFsdWVP
d25lcnNoaXAgb3duZXJzaGlwKQoreworICAgIGlmICghcGFnZUFkYXB0ZXItPnNldHRpbmdzLT50
ZXN0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJsZWQpKQorICAgICAgICBy
ZXR1cm47CisgICAgSlNDOjpCaW5kaW5nczo6UXRJbnN0YW5jZTo6VmFsdWVPd25lcnNoaXAgdmFs
dWVPd25lcnNoaXAgPSBzdGF0aWNfY2FzdDxKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNlOjpWYWx1
ZU93bmVyc2hpcD4ob3duZXJzaGlwKTsKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RP
TVdpbmRvdyhmcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3QqIHJvb3Q7CisgICAgaWYgKHZhbHVlT3duZXJzaGlwID09IEpTQzo6Qmlu
ZGluZ3M6OlF0SW5zdGFuY2U6OlF0T3duZXJzaGlwKQorICAgICAgICByb290ID0gZnJhbWUtPnNj
cmlwdCgpLmNhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0KCk7CisgICAgZWxzZQorICAgICAgICBy
b290ID0gZnJhbWUtPnNjcmlwdCgpLmJpbmRpbmdSb290T2JqZWN0KCk7CisKKyAgICBpZiAoIXdp
bmRvdykgeworICAgICAgICBxRGVidWcoKSA8PCAiV2FybmluZzogY291bGRuJ3QgZ2V0IHdpbmRv
dyBvYmplY3QiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghcm9vdCkgeworICAg
ICAgICBxRGVidWcoKSA8PCAiV2FybmluZzogY291bGRuJ3QgZ2V0IHJvb3Qgb2JqZWN0IjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gd2luZG93
LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKworICAg
IEpTQzo6SlNPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBKU0M6OkJpbmRpbmdzOjpRdEluc3RhbmNl
OjpnZXRRdEluc3RhbmNlKG9iamVjdCwgcm9vdCwgdmFsdWVPd25lcnNoaXApLT5jcmVhdGVSdW50
aW1lT2JqZWN0KGV4ZWMpOworCisgICAgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICB3
aW5kb3ctPm1ldGhvZFRhYmxlKCktPnB1dCh3aW5kb3csIGV4ZWMsIEpTQzo6SWRlbnRpZmllcigm
ZXhlYy0+dm0oKSwgcmVpbnRlcnByZXRfY2FzdF9wdHI8Y29uc3QgVUNoYXIqPihuYW1lLmNvbnN0
RGF0YSgpKSwgbmFtZS5sZW5ndGgoKSksIHJ1bnRpbWVPYmplY3QsIHNsb3QpOworfQorCitRU3Ry
aW5nIFFXZWJGcmFtZUFkYXB0ZXI6OnRvSHRtbCgpIGNvbnN0Cit7CisgICAgaWYgKCFmcmFtZS0+
ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gY3JlYXRl
TWFya3VwKGZyYW1lLT5kb2N1bWVudCgpKTsKK30KKworUVN0cmluZyBRV2ViRnJhbWVBZGFwdGVy
Ojp0b1BsYWluVGV4dCgpIGNvbnN0Cit7CisgICAgaWYgKGZyYW1lLT52aWV3KCkgJiYgZnJhbWUt
PnZpZXcoKS0+bGF5b3V0UGVuZGluZygpKQorICAgICAgICBmcmFtZS0+dmlldygpLT5sYXlvdXQo
KTsKKworICAgIEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5k
b2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAoZG9jdW1lbnRFbGVtZW50KQorICAgICAgICByZXR1
cm4gZG9jdW1lbnRFbGVtZW50LT5pbm5lclRleHQoKTsKKyAgICByZXR1cm4gUVN0cmluZygpOwor
fQorCit2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAm
ZGF0YSwgY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGNvbnN0IFFVcmwgJmJhc2VVcmwpCit7Cisg
ICAgVVJMIGt1cmwoYmFzZVVybCk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3Qoa3VybCk7CisgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLmxl
bmd0aCgpKTsKKyAgICBRU3RyaW5nIGFjdHVhbE1pbWVUeXBlOworICAgIFdURjo6U3RyaW5nIGVu
Y29kaW5nOworICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIGFjdHVhbE1pbWVU
eXBlID0gUUxhdGluMVN0cmluZygidGV4dC9odG1sIik7CisgICAgZWxzZSB7CisgICAgICAgIGFj
dHVhbE1pbWVUeXBlID0gZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7Cisg
ICAgICAgIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1pbWVUeXBlKTsK
KyAgICB9CisgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoYnVmZmVy
LCBXVEY6OlN0cmluZyhhY3R1YWxNaW1lVHlwZSksIGVuY29kaW5nLCBVUkwoKSk7CisgICAgZnJh
bWUtPmxvYWRlcigpLmxvYWQoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdChmcmFtZSwgcmVxdWVz
dCwgc3Vic3RpdHV0ZURhdGEpKTsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRIdG1s
KGNvbnN0IFFTdHJpbmcgJmh0bWwsIGNvbnN0IFFVcmwgJmJhc2VVcmwpCit7CisgICAgVVJMIGt1
cmwoYmFzZVVybCk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7
CisgICAgY29uc3QgUUJ5dGVBcnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKKyAgICBXVEY6OlJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh1dGY4LmNvbnN0RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1s
IiksIFdURjo6U3RyaW5nKCJ1dGYtOCIpLCBVUkwoKSk7CisgICAgZnJhbWUtPmxvYWRlcigpLmxv
YWQoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdChmcmFtZSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURh
dGEpKTsKK30KKworUU11bHRpTWFwPFFTdHJpbmcsIFFTdHJpbmc+IFFXZWJGcmFtZUFkYXB0ZXI6
Om1ldGFEYXRhKCkgY29uc3QKK3sKKyAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAg
ICByZXR1cm4gUU1hcDxRU3RyaW5nLCBRU3RyaW5nPigpOworCisgICAgUU11bHRpTWFwPFFTdHJp
bmcsIFFTdHJpbmc+IG1hcDsKKyAgICBEb2N1bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgUmVmUHRyPE5vZGVMaXN0PiBsaXN0ID0gZG9jLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bWV0YSIpOworICAgIHVuc2lnbmVkIGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBIVE1MTWV0YUVsZW1lbnQqIG1l
dGEgPSBzdGF0aWNfY2FzdDxIVE1MTWV0YUVsZW1lbnQqPihsaXN0LT5pdGVtKGkpKTsKKyAgICAg
ICAgbWFwLmluc2VydChtZXRhLT5uYW1lKCksIG1ldGEtPmNvbnRlbnQoKSk7CisgICAgfQorICAg
IHJldHVybiBtYXA7Cit9CisKK1FQb2ludCBRV2ViRnJhbWVBZGFwdGVyOjpzY3JvbGxQb3NpdGlv
bigpIGNvbnN0Cit7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAgICAgICAg
cmV0dXJuIFFQb2ludCgpOworICAgIEludFNpemUgb2ZzID0gZnJhbWUtPnZpZXcoKS0+c2Nyb2xs
T2Zmc2V0KCk7CisgICAgcmV0dXJuIFFQb2ludChvZnMud2lkdGgoKSwgb2ZzLmhlaWdodCgpKTsK
K30KKworUVJlY3QgUVdlYkZyYW1lQWRhcHRlcjo6ZnJhbWVSZWN0KCkgY29uc3QKK3sKKyAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+dmlldygpKQorICAgICAgICByZXR1cm4gUVJlY3QoKTsKKyAg
ICByZXR1cm4gUVJlY3QoZnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0KCkpOworfQorCitRU2l6ZSBR
V2ViRnJhbWVBZGFwdGVyOjpjb250ZW50c1NpemUoKSBjb25zdAoreworICAgIEZyYW1lVmlldyog
dmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gUVNp
emUoKTsKKyAgICByZXR1cm4gUVNpemUodmlldy0+Y29udGVudHNXaWR0aCgpLCB2aWV3LT5jb250
ZW50c0hlaWdodCgpKTsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRab29tRmFjdG9y
KHFyZWFsIGZhY3RvcikKK3sKKyAgICBpZiAocGFnZUFkYXB0ZXItPnNldHRpbmdzLT50ZXN0QXR0
cmlidXRlKFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5KSkKKyAgICAgICAgZnJhbWUtPnNldFRl
eHRab29tRmFjdG9yKGZhY3Rvcik7CisgICAgZWxzZQorICAgICAgICBmcmFtZS0+c2V0UGFnZVpv
b21GYWN0b3IoZmFjdG9yKTsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRUZXh0U2l6
ZU11bHRpcGxpZXIocXJlYWwgZmFjdG9yKQoreworICAgIHBhZ2VBZGFwdGVyLT5zZXR0aW5ncy0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5LCB0cnVlKTsKKyAgICBmcmFt
ZS0+c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycygxLCBmYWN0b3IpOworfQorCitxcmVhbCBRV2Vi
RnJhbWVBZGFwdGVyOjp6b29tRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZUFkYXB0
ZXItPnNldHRpbmdzLT50ZXN0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5KSA/
IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpIDogZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Cit9CisK
K3ZvaWQgUVdlYkZyYW1lQWRhcHRlcjo6aW5pdChRV2ViUGFnZUFkYXB0ZXIqIHBhZ2VBZGFwdGVy
KQoreworICAgIFFXZWJGcmFtZURhdGEgZnJhbWVEYXRhKHBhZ2VBZGFwdGVyLT5wYWdlKTsKKyAg
ICBpbml0KHBhZ2VBZGFwdGVyLCAmZnJhbWVEYXRhKTsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFw
dGVyOjppbml0KFFXZWJQYWdlQWRhcHRlciogcGFnZUFkYXB0ZXIsIFFXZWJGcmFtZURhdGEqIGZy
YW1lRGF0YSkKK3sKKyAgICB0aGlzLT5wYWdlQWRhcHRlciA9IHBhZ2VBZGFwdGVyOworICAgIGFs
bG93c1Njcm9sbGluZyA9IGZyYW1lRGF0YS0+YWxsb3dzU2Nyb2xsaW5nOworICAgIG1hcmdpbldp
ZHRoID0gZnJhbWVEYXRhLT5tYXJnaW5XaWR0aDsKKyAgICBtYXJnaW5IZWlnaHQgPSBmcmFtZURh
dGEtPm1hcmdpbkhlaWdodDsKKyAgICBmcmFtZSA9IGZyYW1lRGF0YS0+ZnJhbWUuZ2V0KCk7Cisg
ICAgZnJhbWVMb2FkZXJDbGllbnQgPSBmcmFtZURhdGEtPmZyYW1lTG9hZGVyQ2xpZW50OworICAg
IGZyYW1lTG9hZGVyQ2xpZW50LT5zZXRGcmFtZSh0aGlzLCBmcmFtZSk7CisKKyAgICBmcmFtZS0+
aW5pdCgpOworfQorCitRV2ViRnJhbWVBZGFwdGVyKiBRV2ViRnJhbWVBZGFwdGVyOjpraXQoY29u
c3QgRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlckNs
aWVudFF0Jj4oZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKS53ZWJGcmFtZSgpOworfQorCitRVXJs
IFFXZWJGcmFtZUFkYXB0ZXI6OmVuc3VyZUFic29sdXRlVXJsKGNvbnN0IFFVcmwmIHVybCkKK3sK
KyAgICAvLyBGSVhNRTogaXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBhdm9pZCBkb2luZyB0
aGlzLgorICAgIC8vIENvbnZlcnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQg
YmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFV
cmwgdmFsaWRhdGVkVXJsID0gVVJMKHVybCk7CisKKyAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1Zh
bGlkKCkgfHwgIXZhbGlkYXRlZFVybC5pc1JlbGF0aXZlKCkpCisgICAgICAgIHJldHVybiB2YWxp
ZGF0ZWRVcmw7CisKKyAgICAvLyBUaGlzIGNvbnRhaW5zIHRoZSBVUkwgd2l0aCBhYnNvbHV0ZSBw
YXRoIGJ1dCB3aXRob3V0CisgICAgLy8gdGhlIHF1ZXJ5IGFuZCB0aGUgZnJhZ21lbnQgcGFydC4K
KyAgICBRVXJsIGJhc2VVcmwgPSBRVXJsOjpmcm9tTG9jYWxGaWxlKFFGaWxlSW5mbyh2YWxpZGF0
ZWRVcmwudG9Mb2NhbEZpbGUoKSkuYWJzb2x1dGVGaWxlUGF0aCgpKTsKKworICAgIC8vIFRoZSBw
YXRoIGlzIHJlbW92ZWQgc28gdGhlIHF1ZXJ5IGFuZCB0aGUgZnJhZ21lbnQgcGFydHMgYXJlIHRo
ZXJlLgorICAgIFFTdHJpbmcgcGF0aFJlbW92ZWQgPSB2YWxpZGF0ZWRVcmwudG9TdHJpbmcoUVVy
bDo6UmVtb3ZlUGF0aCk7CisgICAgUVVybCB0b1Jlc29sdmUocGF0aFJlbW92ZWQpOworCisgICAg
cmV0dXJuIGJhc2VVcmwucmVzb2x2ZWQodG9SZXNvbHZlKTsKK30KKworUVdlYkhpdFRlc3RSZXN1
bHRQcml2YXRlKiBRV2ViRnJhbWVBZGFwdGVyOjpoaXRUZXN0Q29udGVudChjb25zdCBRUG9pbnQm
IHBvcykgY29uc3QKK3sKKyAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBI
aXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKKworICAgIGlmIChyZXN1bHQu
c2Nyb2xsYmFyKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgUVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlKHJlc3VsdCk7Cit9CisKK1FXZWJFbGVtZW50IFFXZWJGcmFtZUFkYXB0
ZXI6OmRvY3VtZW50RWxlbWVudCgpIGNvbnN0Cit7CisgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1l
LT5kb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4gUVdlYkVsZW1lbnQo
KTsKKyAgICByZXR1cm4gUVdlYkVsZW1lbnQoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSk7Cit9CisK
K1FTdHJpbmcgUVdlYkZyYW1lQWRhcHRlcjo6dGl0bGUoKSBjb25zdAoreworICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT50aXRsZSgpLnN0cmluZygpOworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK3Zv
aWQgUVdlYkZyYW1lQWRhcHRlcjo6Y2xlYXJDb3JlRnJhbWUoKQoreworICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpOworICAgIFFfQVNTRVJUKGRvY3VtZW50TG9hZGVyKTsKKyAgICBkb2N1bWVudExvYWRlci0+
d3JpdGVyKCktPmJlZ2luKCk7CisgICAgZG9jdW1lbnRMb2FkZXItPndyaXRlcigpLT5lbmQoKTsK
K30KKworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDb3JlRnJhbWVDbGVhcihXZWJDb3JlOjpGcmFt
ZSogZnJhbWUpCit7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5
KCk7Cit9CisKK1FVcmwgUVdlYkZyYW1lQWRhcHRlcjo6YmFzZVVybCgpIGNvbnN0Cit7CisgICAg
aWYgKGlzQ29yZUZyYW1lQ2xlYXIoZnJhbWUpKQorICAgICAgICByZXR1cm4gdXJsLnJlc29sdmVk
KFFVcmwoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7Cit9CisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6
OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwKQoreworICAgIFdlYkNvcmU6OlBhZ2UqIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hy
b21lQ2xpZW50UXQmPihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSkubV90ZXh0dXJlTWFwcGVyTGF5
ZXJDbGllbnQuZ2V0KCkpCisgICAgICAgIGNsaWVudC0+cmVuZGVyQ29tcG9zaXRlZExheWVycyhj
b250ZXh0LCBjbGlwKTsKK30KKyNlbmRpZgorLy8gRklYTUU6IHRoaXMgbWlnaHQgbm90IGJlIG5l
Y2Vzc2FyeSwgYnV0IGZvciB0aGUgc2FrZSBvZiBub3QgYnJlYWtpbmcgdGhpbmdzLCB3ZSdsbCB1
c2UgdGhhdCBmb3Igbm93LgorUVVybCBRV2ViRnJhbWVBZGFwdGVyOjpjb3JlRnJhbWVVcmwoKSBj
b25zdAoreworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Cit9CisKK1FVcmwg
UVdlYkZyYW1lQWRhcHRlcjo6bGFzdFJlcXVlc3RlZFVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZyYW1lTG9hZGVyQ2xpZW50LT5sYXN0UmVxdWVzdGVkVXJsKCk7Cit9CisKK1FXZWJTZWN1cml0
eU9yaWdpbiBRV2ViRnJhbWVBZGFwdGVyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAg
UVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSogcHJpdiA9IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW5Q
cml2YXRlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4g
UVdlYlNlY3VyaXR5T3JpZ2luKHByaXYpOworfQorCitRU3RyaW5nIFFXZWJGcmFtZUFkYXB0ZXI6
OnVuaXF1ZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZS0+dHJlZSgpLnVuaXF1ZU5h
bWUoKTsKK30KKworLy8gVGhpcyBjb2RlIGlzIGNvcGllZCBmcm9tIENocm9tZUNsaWVudEd0ay5j
cHAuCitzdGF0aWMgdm9pZCBjb2FsZXNjZVJlY3RzSWZQb3NzaWJsZShjb25zdCBRUmVjdCYgY2xp
cFJlY3QsIFFWZWN0b3I8UVJlY3Q+JiByZWN0cykKK3sKKyAgICBjb25zdCB1bnNpZ25lZCByZWN0
VGhyZXNob2xkID0gMTA7CisgICAgY29uc3QgZmxvYXQgd2FzdGVkU3BhY2VUaHJlc2hvbGQgPSAw
Ljc1ZjsKKyAgICBib29sIHVzZVVuaW9uZWRSZWN0ID0gKHJlY3RzLnNpemUoKSA8PSAxKSB8fCAo
cmVjdHMuc2l6ZSgpID4gcmVjdFRocmVzaG9sZCk7CisgICAgaWYgKCF1c2VVbmlvbmVkUmVjdCkg
eworICAgICAgICAvLyBBdHRlbXB0IHRvIGd1ZXNzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCB1
c2UgdGhlIHVuaW9uZWQgcmVjdCBvciB0aGUgaW5kaXZpZHVhbCByZWN0cy4KKyAgICAgICAgLy8g
V2UgZG8gdGhpcyBieSBjb21wdXRpbmcgdGhlIHBlcmNlbnRhZ2Ugb2YgIndhc3RlZCBzcGFjZSIg
aW4gdGhlIHVuaW9uLiBJZiB0aGF0IHdhc3RlZCBzcGFjZQorICAgICAgICAvLyBpcyB0b28gbGFy
Z2UsIHRoZW4gd2Ugd2lsbCBkbyBpbmRpdmlkdWFsIHJlY3QgcGFpbnRpbmcgaW5zdGVhZC4KKyAg
ICAgICAgZmxvYXQgdW5pb25QaXhlbHMgPSAoY2xpcFJlY3Qud2lkdGgoKSAqIGNsaXBSZWN0Lmhl
aWdodCgpKTsKKyAgICAgICAgZmxvYXQgc2luZ2xlUGl4ZWxzID0gMDsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpbmdsZVBp
eGVscyArPSByZWN0c1tpXS53aWR0aCgpICogcmVjdHNbaV0uaGVpZ2h0KCk7CisgICAgICAgIGZs
b2F0IHdhc3RlZFNwYWNlID0gMSAtIChzaW5nbGVQaXhlbHMgLyB1bmlvblBpeGVscyk7CisgICAg
ICAgIGlmICh3YXN0ZWRTcGFjZSA8PSB3YXN0ZWRTcGFjZVRocmVzaG9sZCkKKyAgICAgICAgICAg
IHVzZVVuaW9uZWRSZWN0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIXVzZVVuaW9uZWRSZWN0
KQorICAgICAgICByZXR1cm47CisKKyAgICByZWN0cy5jbGVhcigpOworICAgIHJlY3RzLmFwcGVu
ZChjbGlwUmVjdCk7Cit9CisKK3ZvaWQgUVdlYkZyYW1lQWRhcHRlcjo6cmVuZGVyUmVsYXRpdmVD
b29yZHMoUVBhaW50ZXIqIHBhaW50ZXIsIGludCBsYXllcnMsIGNvbnN0IFFSZWdpb24mIGNsaXAp
Cit7CisgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQocGFpbnRlcik7CisgICAgaWYgKGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBRVmVjdG9yPFFSZWN0PiB2
ZWN0b3IgPSBjbGlwLnJlY3RzKCk7CisgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7
CisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisg
ICAgaWYgKGxheWVycyAmIENvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgUVJlY3QgY2xpcEJvdW5k
aW5nUmVjdCA9IGNsaXAuYm91bmRpbmdSZWN0KCk7CisgICAgICAgIGNvYWxlc2NlUmVjdHNJZlBv
c3NpYmxlKGNsaXBCb3VuZGluZ1JlY3QsIHZlY3Rvcik7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgdmVjdG9yLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBRUmVjdCYgY2xp
cFJlY3QgPSB2ZWN0b3IuYXQoaSk7CisKKyAgICAgICAgICAgIFFSZWN0IHJlY3QgPSBjbGlwUmVj
dC5pbnRlcnNlY3RlZCh2aWV3LT5mcmFtZVJlY3QoKSk7CisKKyAgICAgICAgICAgIGNvbnRleHQu
c2F2ZSgpOworICAgICAgICAgICAgcGFpbnRlci0+c2V0Q2xpcFJlY3QoY2xpcFJlY3QsIFF0OjpJ
bnRlcnNlY3RDbGlwKTsKKworICAgICAgICAgICAgaW50IHggPSB2aWV3LT54KCk7CisgICAgICAg
ICAgICBpbnQgeSA9IHZpZXctPnkoKTsKKworICAgICAgICAgICAgaW50IHNjcm9sbFggPSB2aWV3
LT5zY3JvbGxYKCk7CisgICAgICAgICAgICBpbnQgc2Nyb2xsWSA9IHZpZXctPnNjcm9sbFkoKTsK
KworICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7CisgICAgICAgICAgICByZWN0
LnRyYW5zbGF0ZSgteCwgLXkpOworICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9s
bFgsIC1zY3JvbGxZKTsKKyAgICAgICAgICAgIHJlY3QudHJhbnNsYXRlKHNjcm9sbFgsIHNjcm9s
bFkpOworICAgICAgICAgICAgY29udGV4dC5jbGlwKHZpZXctPnZpc2libGVDb250ZW50UmVjdCgp
KTsKKworICAgICAgICAgICAgdmlldy0+cGFpbnRDb250ZW50cygmY29udGV4dCwgcmVjdCk7CisK
KyAgICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOworICAgICAgICB9CisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICByZW5kZXJDb21wb3NpdGVkTGF5ZXJzKCZjb250
ZXh0LCBJbnRSZWN0KGNsaXBCb3VuZGluZ1JlY3QpKTsKKyNlbmRpZgorICAgIH0KKyAgICByZW5k
ZXJGcmFtZUV4dHJhcygmY29udGV4dCwgbGF5ZXJzLCBjbGlwKTsKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGlmIChmcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmhpZ2hs
aWdodGVkTm9kZSgpKSB7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBmcmFtZS0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRyYXdIaWdobGlnaHQoY29udGV4dCk7Cisg
ICAgICAgIGNvbnRleHQucmVzdG9yZSgpOworICAgIH0KKyNlbmRpZgorfQorCit2b2lkIFFXZWJG
cmFtZUFkYXB0ZXI6OnJlbmRlckZyYW1lRXh0cmFzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgaW50IGxheWVycywgY29uc3QgUVJlZ2lvbiYgY2xpcCkKK3sKKyAgICBpZiAoIShs
YXllcnMgJiAoUGFuSWNvbkxheWVyIHwgU2Nyb2xsQmFyTGF5ZXIpKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFFQYWludGVyKiBwYWludGVyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBRVmVjdG9y
PFFSZWN0PiB2ZWN0b3IgPSBjbGlwLnJlY3RzKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2
ZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgUVJlY3QmIGNsaXBSZWN0ID0gdmVj
dG9yLmF0KGkpOworCisgICAgICAgIFFSZWN0IGludGVyc2VjdGVkUmVjdCA9IGNsaXBSZWN0Lmlu
dGVyc2VjdGVkKHZpZXctPmZyYW1lUmVjdCgpKTsKKworICAgICAgICBwYWludGVyLT5zYXZlKCk7
CisgICAgICAgIHBhaW50ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0LCBRdDo6SW50ZXJzZWN0Q2xp
cCk7CisKKyAgICAgICAgaW50IHggPSB2aWV3LT54KCk7CisgICAgICAgIGludCB5ID0gdmlldy0+
eSgpOworCisgICAgICAgIGlmIChsYXllcnMgJiBTY3JvbGxCYXJMYXllcgorICAgICAgICAgICAg
JiYgIXZpZXctPnNjcm9sbGJhcnNTdXBwcmVzc2VkKCkKKyAgICAgICAgICAgICYmICh2aWV3LT5o
b3Jpem9udGFsU2Nyb2xsYmFyKCkgfHwgdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSkpIHsKKwor
ICAgICAgICAgICAgUVJlY3QgcmVjdCA9IGludGVyc2VjdGVkUmVjdDsKKyAgICAgICAgICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSh4LCB5KTsKKyAgICAgICAgICAgIHJlY3QudHJhbnNsYXRlKC14LCAt
eSk7CisgICAgICAgICAgICB2aWV3LT5wYWludFNjcm9sbGJhcnMoY29udGV4dCwgcmVjdCk7Cisg
ICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXgsIC15KTsKKyAgICAgICAgfQorCisjaWYg
RU5BQkxFKFBBTl9TQ1JPTExJTkcpCisgICAgICAgIGlmIChsYXllcnMgJiBQYW5JY29uTGF5ZXIp
CisgICAgICAgICAgICB2aWV3LT5wYWludFBhblNjcm9sbEljb24oY29udGV4dCk7CisjZW5kaWYK
KworICAgICAgICBwYWludGVyLT5yZXN0b3JlKCk7CisgICAgfQorfQorCisjaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCit2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldFRpbGVkQmFja2luZ1N0
b3JlRnJvemVuKGJvb2wgZnJvemVuKQoreworICAgIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUgPSBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKTsKKyAgICBpZiAoIWJh
Y2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJuOworICAgIGJhY2tpbmdTdG9yZS0+c2V0Q29udGVu
dHNGcm96ZW4oZnJvemVuKTsKK30KKworYm9vbCBRV2ViRnJhbWVBZGFwdGVyOjp0aWxlZEJhY2tp
bmdTdG9yZUZyb3plbigpIGNvbnN0Cit7CisgICAgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSA9IGZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpOworICAgIGlmICghYmFj
a2luZ1N0b3JlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGJhY2tpbmdTdG9y
ZS0+Y29udGVudHNGcm96ZW4oKTsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRUaWxl
ZEJhY2tpbmdTdG9yZUNvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCit7CisgICAgV2ViQ29yZTo6
VGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGZyYW1lLT50aWxlZEJhY2tpbmdTdG9y
ZSgpOworICAgIGlmICghYmFja2luZ1N0b3JlKQorICAgICAgICByZXR1cm47CisgICAgYmFja2lu
Z1N0b3JlLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKK30KKworYm9vbCBRV2ViRnJhbWVBZGFw
dGVyOjpyZW5kZXJGcm9tVGlsZWRCYWNraW5nU3RvcmUoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0
IFFSZWdpb24mIGNsaXApCit7CisgICAgLy8gTm8gdGlsZWQgYmFja2luZyBzdG9yZT8gVGVsbCB0
aGUgY2FsbGVyIHRvIGZhbGwgYmFjayB0byByZWd1bGFyIHJlbmRlcmluZy4KKyAgICBpZiAoIWZy
YW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHNldCB0aGUgYmFja2luZyBzdG9yZSB2aWV3cG9ydCBlYXJsaWVy
IHRoYW4gaW4gcGFpbnQKKyAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Y292ZXJXaXRo
VGlsZXNJZk5lZWRlZCgpOworCisgICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUVZlY3RvcjxRUmVj
dD4gdmVjdG9yID0gY2xpcC5yZWN0cygpOworICAgIGlmICh2ZWN0b3IuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHBhaW50ZXIp
OworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKworICAg
IGludCBzY3JvbGxYID0gdmlldy0+c2Nyb2xsWCgpOworICAgIGludCBzY3JvbGxZID0gdmlldy0+
c2Nyb2xsWSgpOworICAgIFFSZWN0IGZyYW1lUmVjdCA9IHZpZXctPmZyYW1lUmVjdCgpOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgUVJlY3QmIGNsaXBSZWN0ID0gdmVjdG9yLmF0KGkpOworCisgICAgICAgIGNvbnRleHQuc2F2
ZSgpOworICAgICAgICBRUmVjdCByZWN0ID0gY2xpcFJlY3QuaW50ZXJzZWN0ZWQoZnJhbWVSZWN0
KTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbFgsIC1zY3JvbGxZKTsKKyAgICAg
ICAgcmVjdC50cmFuc2xhdGUoc2Nyb2xsWCwgc2Nyb2xsWSk7CisgICAgICAgIGNvbnRleHQuY2xp
cChyZWN0KTsKKworICAgICAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+cGFpbnQoJmNv
bnRleHQsIHJlY3QpOworCisgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOworICAgIH0KKworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICByZW5kZXJDb21wb3NpdGVkTGF5ZXJz
KCZjb250ZXh0LCBJbnRSZWN0KGNsaXAuYm91bmRpbmdSZWN0KCkpKTsKKyAgICByZW5kZXJGcmFt
ZUV4dHJhcygmY29udGV4dCwgUVdlYkZyYW1lQWRhcHRlcjo6U2Nyb2xsQmFyTGF5ZXIgfCBRV2Vi
RnJhbWVBZGFwdGVyOjpQYW5JY29uTGF5ZXIsIGNsaXApOworI2VuZGlmCisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpfcV9vcmllbnRhdGlvbkNo
YW5nZWQoKQoreworI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpICYmIEhBVkUoUVRTRU5T
T1JTKQorICAgIGludCBvcmllbnRhdGlvbjsKKworICAgIHN3aXRjaCAobV9vcmllbnRhdGlvbi5y
ZWFkaW5nKCktPm9yaWVudGF0aW9uKCkpIHsKKyAgICBjYXNlIFFPcmllbnRhdGlvblJlYWRpbmc6
OlRvcFVwOgorICAgICAgICBvcmllbnRhdGlvbiA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUU9yaWVudGF0aW9uUmVhZGluZzo6VG9wRG93bjoKKyAgICAgICAgb3JpZW50YXRpb24gPSAx
ODA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUU9yaWVudGF0aW9uUmVhZGluZzo6TGVmdFVw
OgorICAgICAgICBvcmllbnRhdGlvbiA9IC05MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBR
T3JpZW50YXRpb25SZWFkaW5nOjpSaWdodFVwOgorICAgICAgICBvcmllbnRhdGlvbiA9IDkwOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFFPcmllbnRhdGlvblJlYWRpbmc6OkZhY2VVcDoKKyAg
ICBjYXNlIFFPcmllbnRhdGlvblJlYWRpbmc6OkZhY2VEb3duOgorICAgICAgICAvLyBXZWJDb3Jl
IHVuYWJsZSB0byBoYW5kbGUgaXQKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGZyYW1lLT5zZW5kT3JpZW50YXRpb25DaGFuZ2VFdmVudChvcmllbnRhdGlvbik7Cisj
ZW5kaWYKK30KKworUUxpc3Q8UU9iamVjdCo+IFFXZWJGcmFtZUFkYXB0ZXI6OmNoaWxkRnJhbWVz
KCkgY29uc3QKK3sKKyAgICBRTGlzdDxRT2JqZWN0Kj4gb3JpZ2luYXRpbmdPYmplY3RzOworICAg
IGlmIChmcmFtZSkgeworICAgICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCku
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBjaGlsZC0+bG9hZGVyKCk7Cisg
ICAgICAgICAgICBvcmlnaW5hdGluZ09iamVjdHMuYXBwZW5kKGxvYWRlci5uZXR3b3JraW5nQ29u
dGV4dCgpLT5vcmlnaW5hdGluZ09iamVjdCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gb3JpZ2luYXRpbmdPYmplY3RzOworfQorCitib29sIFFXZWJGcmFtZUFkYXB0ZXI6Omhhc0Zv
Y3VzKCkgY29uc3QKK3sKKyAgICBGcmFtZSogZmYgPSBmcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkRnJhbWUoKTsKKyAgICByZXR1cm4gZmYgJiYgUVdlYkZyYW1lQWRhcHRl
cjo6a2l0KGZmKSA9PSB0aGlzOworfQorCit2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldEZvY3Vz
KCkKK3sKKyAgICBmcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJh
bWUoZnJhbWUpOworfQorCit2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldFNjcm9sbEJhclBvbGlj
eShRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24sIFF0OjpTY3JvbGxCYXJQb2xpY3kgcG9saWN5
KQoreworICAgIFFfQVNTRVJUKChpbnQpU2Nyb2xsYmFyQXV0byA9PSAoaW50KVF0OjpTY3JvbGxC
YXJBc05lZWRlZCk7CisgICAgUV9BU1NFUlQoKGludClTY3JvbGxiYXJBbHdheXNPZmYgPT0gKGlu
dClRdDo6U2Nyb2xsQmFyQWx3YXlzT2ZmKTsKKyAgICBRX0FTU0VSVCgoaW50KVNjcm9sbGJhckFs
d2F5c09uID09IChpbnQpUXQ6OlNjcm9sbEJhckFsd2F5c09uKTsKKworICAgIGlmIChvcmllbnRh
dGlvbiA9PSBRdDo6SG9yaXpvbnRhbCkgeworICAgICAgICBob3Jpem9udGFsU2Nyb2xsQmFyUG9s
aWN5ID0gcG9saWN5OworICAgICAgICBpZiAoZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAg
ZnJhbWUtPnZpZXcoKS0+c2V0SG9yaXpvbnRhbFNjcm9sbGJhck1vZGUoKFNjcm9sbGJhck1vZGUp
cG9saWN5LCBwb2xpY3kgIT0gUXQ6OlNjcm9sbEJhckFzTmVlZGVkIC8qIGxvY2sgKi8pOworICAg
ICAgICAgICAgZnJhbWUtPnZpZXcoKS0+dXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnMoKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5ID0gcG9s
aWN5OworICAgICAgICBpZiAoZnJhbWUtPnZpZXcoKSkgeworICAgICAgICAgICAgZnJhbWUtPnZp
ZXcoKS0+c2V0VmVydGljYWxTY3JvbGxiYXJNb2RlKChTY3JvbGxiYXJNb2RlKXBvbGljeSwgcG9s
aWN5ICE9IFF0OjpTY3JvbGxCYXJBc05lZWRlZCAvKiBsb2NrICovKTsKKyAgICAgICAgICAgIGZy
YW1lLT52aWV3KCktPnVwZGF0ZUNhbkhhdmVTY3JvbGxiYXJzKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgUVdlYkZyYW1lQWRhcHRlcjo6c2Nyb2xsVG9BbmNob3IoY29uc3QgUVN0cmlu
ZyAmYW5jaG9yKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAg
aWYgKHZpZXcpCisgICAgICAgIHZpZXctPnNjcm9sbFRvQW5jaG9yKGFuY2hvcik7Cit9CisKK3Zv
aWQgUVdlYkZyYW1lQWRhcHRlcjo6c2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkpCit7CisgICAgaWYg
KCFmcmFtZS0+dmlldygpKQorICAgICAgICByZXR1cm47CisgICAgZnJhbWUtPnZpZXcoKS0+c2Ny
b2xsQnkoSW50U2l6ZShkeCwgZHkpKTsKK30KKwordm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRT
Y3JvbGxCYXJWYWx1ZShRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24sIGludCB2YWx1ZSkKK3sK
KyAgICBTY3JvbGxiYXIqIHNiOworICAgIHNiID0gKG9yaWVudGF0aW9uID09IFF0OjpIb3Jpem9u
dGFsKSA/IGhvcml6b250YWxTY3JvbGxCYXIoKSA6IHZlcnRpY2FsU2Nyb2xsQmFyKCk7CisgICAg
aWYgKHNiKSB7CisgICAgICAgIGlmICh2YWx1ZSA8IDApCisgICAgICAgICAgICB2YWx1ZSA9IDA7
CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gc2Nyb2xsQmFyTWF4aW11bShvcmllbnRhdGlvbikp
CisgICAgICAgICAgICB2YWx1ZSA9IHNjcm9sbEJhck1heGltdW0ob3JpZW50YXRpb24pOworICAg
ICAgICBzYi0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9u
KG9yaWVudGF0aW9uID09IFF0OjpIb3Jpem9udGFsID8gSG9yaXpvbnRhbFNjcm9sbGJhciA6IFZl
cnRpY2FsU2Nyb2xsYmFyLCB2YWx1ZSk7CisgICAgfQorfQorCitpbnQgUVdlYkZyYW1lQWRhcHRl
cjo6c2Nyb2xsQmFyVmFsdWUoUXQ6Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdAorewor
ICAgIFNjcm9sbGJhciogc2I7CisgICAgc2IgPSAob3JpZW50YXRpb24gPT0gUXQ6Okhvcml6b250
YWwpID8gaG9yaXpvbnRhbFNjcm9sbEJhcigpIDogdmVydGljYWxTY3JvbGxCYXIoKTsKKyAgICBp
ZiAoc2IpCisgICAgICAgIHJldHVybiBzYi0+dmFsdWUoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
aW50IFFXZWJGcmFtZUFkYXB0ZXI6OnNjcm9sbEJhck1heGltdW0oUXQ6Ok9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSBjb25zdAoreworICAgIFNjcm9sbGJhciogc2I7CisgICAgc2IgPSAob3JpZW50
YXRpb24gPT0gUXQ6Okhvcml6b250YWwpID8gaG9yaXpvbnRhbFNjcm9sbEJhcigpIDogdmVydGlj
YWxTY3JvbGxCYXIoKTsKKyAgICBpZiAoc2IpCisgICAgICAgIHJldHVybiBzYi0+bWF4aW11bSgp
OworICAgIHJldHVybiAwOworfQorCitRUmVjdCBRV2ViRnJhbWVBZGFwdGVyOjpzY3JvbGxCYXJH
ZW9tZXRyeShRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0Cit7CisgICAgU2Nyb2xs
YmFyKiBzYjsKKyAgICBzYiA9IChvcmllbnRhdGlvbiA9PSBRdDo6SG9yaXpvbnRhbCkgPyBob3Jp
em9udGFsU2Nyb2xsQmFyKCkgOiB2ZXJ0aWNhbFNjcm9sbEJhcigpOworICAgIGlmIChzYikKKyAg
ICAgICAgcmV0dXJuIHNiLT5mcmFtZVJlY3QoKTsKKyAgICByZXR1cm4gUVJlY3QoKTsKK30KKwor
V2ViQ29yZTo6U2Nyb2xsYmFyKiBRV2ViRnJhbWVBZGFwdGVyOjpob3Jpem9udGFsU2Nyb2xsQmFy
KCkgY29uc3QKK3sKKyAgICBpZiAoIWZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7Cit9CisKK1dl
YkNvcmU6OlNjcm9sbGJhciogUVdlYkZyYW1lQWRhcHRlcjo6dmVydGljYWxTY3JvbGxCYXIoKSBj
b25zdAoreworICAgIGlmICghZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGZyYW1lLT52aWV3KCktPnZlcnRpY2FsU2Nyb2xsYmFyKCk7Cit9CisKKwordm9pZCBR
V2ViRnJhbWVBZGFwdGVyOjp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgUUNvbG9y
JiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgQVNTRVJUKGZyYW1lLT52aWV3KCkpOworICAgIGZy
YW1lLT52aWV3KCktPnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShiYWNrZ3JvdW5kQ29sb3Is
IC8qdHJhbnNwYXJlbnQqLyAhYmFja2dyb3VuZENvbG9yLmFscGhhKCkpOworfQorCit2b2lkIFFX
ZWJGcmFtZUFkYXB0ZXI6OmNhbmNlbExvYWQoKQoreworICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2No
ZWR1bGVyKCkuY2FuY2VsKCk7Cit9CisKKy8vID09PT09PT09PT0gUVdlYkhpdFRlc3RSZXN1bHRQ
cml2YXRlIGltcGxlbWVudGF0aW9uID09PT09PT09PT09CisKK1FXZWJIaXRUZXN0UmVzdWx0UHJp
dmF0ZTo6UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQgJmhpdFRlc3QpCisgICAgOiBpc0NvbnRlbnRFZGl0YWJsZShmYWxzZSkKKyAgICAsIGlzQ29u
dGVudFNlbGVjdGVkKGZhbHNlKQorICAgICwgaXNTY3JvbGxCYXIoZmFsc2UpCisgICAgLCB3ZWJD
b3JlRnJhbWUoMCkKK3sKKyAgICBpZiAoIWhpdFRlc3QuaW5uZXJOb2RlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBwb3MgPSBoaXRUZXN0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKTsK
KyAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcjsKKyAgICB0aXRsZSA9IGhpdFRlc3QudGl0
bGUoZGlyKTsKKyAgICBsaW5rVGV4dCA9IGhpdFRlc3QudGV4dENvbnRlbnQoKTsKKyAgICBsaW5r
VXJsID0gaGl0VGVzdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBsaW5rVGl0bGUgPSBoaXRUZXN0
LnRpdGxlRGlzcGxheVN0cmluZygpOworICAgIGFsdGVybmF0ZVRleHQgPSBoaXRUZXN0LmFsdERp
c3BsYXlTdHJpbmcoKTsKKyAgICBpbWFnZVVybCA9IGhpdFRlc3QuYWJzb2x1dGVJbWFnZVVSTCgp
OworICAgIGlubmVyTm9kZSA9IGhpdFRlc3QuaW5uZXJOb2RlKCk7CisgICAgaW5uZXJOb2RlLT5y
ZWYoKTsKKyAgICBpbm5lck5vblNoYXJlZE5vZGUgPSBoaXRUZXN0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpOworICAgIGlubmVyTm9uU2hhcmVkTm9kZS0+cmVmKCk7CisgICAgYm91bmRpbmdSZWN0ID0g
aW5uZXJOb25TaGFyZWROb2RlID8gaW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdCgpIDogSW50UmVjdCgpOworICAgIFdlYkNvcmU6OkltYWdlICpp
bWcgPSBoaXRUZXN0LmltYWdlKCk7CisgICAgaWYgKGltZykgeworICAgICAgICBRUGl4bWFwKiBw
aXggPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGlmIChwaXgp
CisgICAgICAgICAgICBwaXhtYXAgPSAqcGl4OworICAgIH0KKyAgICBXZWJDb3JlOjpGcmFtZSAq
d2ZyYW1lID0gaGl0VGVzdC50YXJnZXRGcmFtZSgpOworICAgIGlmICh3ZnJhbWUpIHsKKyAgICAg
ICAgbGlua1RhcmdldEZyYW1lID0gUVdlYkZyYW1lQWRhcHRlcjo6a2l0KHdmcmFtZSktPmhhbmRs
ZSgpOworICAgICAgICB3ZWJDb3JlRnJhbWUgPSB3ZnJhbWU7CisgICAgICAgIHdlYkNvcmVGcmFt
ZS0+cmVmKCk7CisgICAgfQorICAgIGxpbmtFbGVtZW50ID0gUVdlYkVsZW1lbnQoaGl0VGVzdC5V
UkxFbGVtZW50KCkpOworCisgICAgaXNDb250ZW50RWRpdGFibGUgPSBoaXRUZXN0LmlzQ29udGVu
dEVkaXRhYmxlKCk7CisgICAgaXNDb250ZW50U2VsZWN0ZWQgPSBoaXRUZXN0LmlzU2VsZWN0ZWQo
KTsKKyAgICBpc1Njcm9sbEJhciA9IGhpdFRlc3Quc2Nyb2xsYmFyKCk7CisKKyAgICBXZWJDb3Jl
OjpGcmFtZSAqaW5uZXJOb2RlRnJhbWUgPSBoaXRUZXN0LmlubmVyTm9kZUZyYW1lKCk7CisgICAg
aWYgKGlubmVyTm9kZUZyYW1lKQorICAgICAgICBmcmFtZSA9IFFXZWJGcmFtZUFkYXB0ZXI6Omtp
dChpbm5lck5vZGVGcmFtZSktPmhhbmRsZSgpOworCisgICAgZW5jbG9zaW5nQmxvY2sgPSBRV2Vi
RWxlbWVudChXZWJDb3JlOjplbmNsb3NpbmdCbG9jayhpbm5lck5vZGUpKTsKK30KKworUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlOjpRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUoY29uc3QgUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlJiBvdGhlcikKK3sKKyAgICBpbm5lck5vZGUgPSAwOworICAgIGlu
bmVyTm9uU2hhcmVkTm9kZSA9IDA7CisgICAgd2ViQ29yZUZyYW1lID0gMDsKKyAgICAqdGhpcyA9
IG90aGVyOworfQorCitRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUmIFFXZWJIaXRUZXN0UmVzdWx0
UHJpdmF0ZTo6b3BlcmF0b3I9KGNvbnN0IFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSYgb3RoZXIp
Cit7CisgICAgcG9zID0gb3RoZXIucG9zOworICAgIGJvdW5kaW5nUmVjdCA9IG90aGVyLmJvdW5k
aW5nUmVjdDsKKyAgICBlbmNsb3NpbmdCbG9jayA9IG90aGVyLmVuY2xvc2luZ0Jsb2NrOworICAg
IHRpdGxlID0gb3RoZXIudGl0bGU7CisgICAgbGlua1RleHQgPSBvdGhlci5saW5rVGV4dDsKKyAg
ICBsaW5rVXJsID0gb3RoZXIubGlua1VybDsKKyAgICBsaW5rVGl0bGUgPSBvdGhlci5saW5rVGl0
bGU7CisgICAgbGlua1RhcmdldEZyYW1lID0gb3RoZXIubGlua1RhcmdldEZyYW1lOworICAgIGxp
bmtFbGVtZW50ID0gb3RoZXIubGlua0VsZW1lbnQ7CisgICAgYWx0ZXJuYXRlVGV4dCA9IG90aGVy
LmFsdGVybmF0ZVRleHQ7CisgICAgaW1hZ2VVcmwgPSBvdGhlci5pbWFnZVVybDsKKyAgICBwaXht
YXAgPSBvdGhlci5waXhtYXA7CisgICAgaXNDb250ZW50RWRpdGFibGUgPSBvdGhlci5pc0NvbnRl
bnRFZGl0YWJsZTsKKyAgICBpc0NvbnRlbnRTZWxlY3RlZCA9IG90aGVyLmlzQ29udGVudFNlbGVj
dGVkOworICAgIGlzU2Nyb2xsQmFyID0gb3RoZXIuaXNTY3JvbGxCYXI7CisgICAgZnJhbWUgPSBv
dGhlci5mcmFtZTsKKworICAgIGlmIChpbm5lck5vZGUpCisgICAgICAgIGlubmVyTm9kZS0+ZGVy
ZWYoKTsKKyAgICBpbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGU7CisgICAgaWYgKGlubmVyTm9k
ZSkKKyAgICAgICAgaW5uZXJOb2RlLT5yZWYoKTsKKworICAgIGlmIChpbm5lck5vblNoYXJlZE5v
ZGUpCisgICAgICAgIGlubmVyTm9uU2hhcmVkTm9kZS0+ZGVyZWYoKTsKKyAgICBpbm5lck5vblNo
YXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGU7CisgICAgaWYgKGlubmVyTm9uU2hh
cmVkTm9kZSkKKyAgICAgICAgaW5uZXJOb25TaGFyZWROb2RlLT5yZWYoKTsKKworICAgIGlmICh3
ZWJDb3JlRnJhbWUpCisgICAgICAgIHdlYkNvcmVGcmFtZS0+ZGVyZWYoKTsKKyAgICB3ZWJDb3Jl
RnJhbWUgPSBvdGhlci53ZWJDb3JlRnJhbWU7CisgICAgaWYgKHdlYkNvcmVGcmFtZSkKKyAgICAg
ICAgd2ViQ29yZUZyYW1lLT5yZWYoKTsKKworICAgIHJldHVybiAqdGhpczsKK30KKworUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlOjp+UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKCkKK3sKKyAgICBp
ZiAoaW5uZXJOb2RlKQorICAgICAgICBpbm5lck5vZGUtPmRlcmVmKCk7CisgICAgaWYgKGlubmVy
Tm9uU2hhcmVkTm9kZSkKKyAgICAgICAgaW5uZXJOb25TaGFyZWROb2RlLT5kZXJlZigpOworICAg
IGlmICh3ZWJDb3JlRnJhbWUpCisgICAgICAgIHdlYkNvcmVGcmFtZS0+ZGVyZWYoKTsKK30KKwor
UVdlYkVsZW1lbnQgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOjplbGVtZW50Rm9ySW5uZXJOb2Rl
KCkgY29uc3QKK3sKKyAgICBpZiAoIWlubmVyTm9uU2hhcmVkTm9kZSB8fCAhaW5uZXJOb25TaGFy
ZWROb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBRV2ViRWxlbWVudCgpOwor
ICAgIHJldHVybiBRV2ViRWxlbWVudCh0b0VsZW1lbnQoaW5uZXJOb25TaGFyZWROb2RlKSk7Cit9
CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorCitRU2l6ZSBRV2ViRnJhbWVBZGFwdGVyOjpjdXN0b21MYXlvdXRTaXplKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQocGFnZUFkYXB0ZXItPm1haW5GcmFtZUFkYXB0ZXIoKSA9PSB0aGlzKTsK
KyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIEFTU0VSVCh2aWV3KTsK
KyAgICBpZiAodmlldy0+dXNlRml4ZWRMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIHZpZXctPmZp
eGVkTGF5b3V0U2l6ZSgpOworICAgIHJldHVybiBRU2l6ZSgpOworfQorCit2b2lkIFFXZWJGcmFt
ZUFkYXB0ZXI6OnNldEN1c3RvbUxheW91dFNpemUoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAg
QVNTRVJUKHBhZ2VBZGFwdGVyLT5tYWluRnJhbWVBZGFwdGVyKCkgPT0gdGhpcyk7CisgICAgRnJh
bWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBBU1NFUlQodmlldyk7CisKKyAgICBp
ZiAoc2l6ZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgdmlldy0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1
ZSk7CisgICAgICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShzaXplKTsKKyAgICB9IGVsc2Ug
aWYgKHZpZXctPnVzZUZpeGVkTGF5b3V0KCkpCisgICAgICAgIHZpZXctPnNldFVzZUZpeGVkTGF5
b3V0KGZhbHNlKTsKKworICAgIHZpZXctPmxheW91dCgpOworfQorCit2b2lkIFFXZWJGcmFtZUFk
YXB0ZXI6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IFFSZWN0JiByZWN0KQorewor
ICAgIEFTU0VSVChwYWdlQWRhcHRlci0+bWFpbkZyYW1lQWRhcHRlcigpID09IHRoaXMpOworICAg
IEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgQVNTRVJUKHZpZXcpOworICAg
IHZpZXctPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpOworfQorCit2b2lkIFFXZWJG
cmFtZUFkYXB0ZXI6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBB
U1NFUlQocGFnZUFkYXB0ZXItPm1haW5GcmFtZUFkYXB0ZXIoKSA9PSB0aGlzKTsKKyAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIEFTU0VSVCh2aWV3KTsKKyAgICB2aWV3
LT5yZXNpemUoc2l6ZSk7CisgICAgdmlldy0+YWRqdXN0Vmlld1NpemUoKTsKK30KKworCit2b2lk
IFFXZWJGcmFtZUFkYXB0ZXI6OnNldFBhaW50c0VudGlyZUNvbnRlbnRzKGJvb2wgcmVzaXplc1Rv
Q29udGVudHMpCit7CisgICAgQVNTRVJUKHBhZ2VBZGFwdGVyLT5tYWluRnJhbWVBZGFwdGVyKCkg
PT0gdGhpcyk7CisgICAgQVNTRVJUKGZyYW1lLT52aWV3KCkpOworICAgIGZyYW1lLT52aWV3KCkt
PnNldFBhaW50c0VudGlyZUNvbnRlbnRzKHJlc2l6ZXNUb0NvbnRlbnRzKTsKK30KKwordm9pZCBR
V2ViRnJhbWVBZGFwdGVyOjpzZXREZWxlZ2F0ZXNTY3JvbGxpbmcoYm9vbCByZXNpemVzVG9Db250
ZW50cykKK3sKKyAgICBBU1NFUlQocGFnZUFkYXB0ZXItPm1haW5GcmFtZUFkYXB0ZXIoKSA9PSB0
aGlzKTsKKyAgICBBU1NFUlQoZnJhbWUtPnZpZXcoKSk7CisgICAgZnJhbWUtPnZpZXcoKS0+c2V0
RGVsZWdhdGVzU2Nyb2xsaW5nKHJlc2l6ZXNUb0NvbnRlbnRzKTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5oIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ3YjZkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5oCkBAIC0wLDAgKzEs
MjUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBRV2ViRnJhbWVBZGFwdGVyX2gKKyNkZWZpbmUgUVdl
YkZyYW1lQWRhcHRlcl9oCisKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0LmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1FdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgi
CisjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykgJiYgSEFWRShRVFNFTlNPUlMpCisjaW5j
bHVkZSAicW9yaWVudGF0aW9uc2Vuc29yLmgiCisjZW5kaWYgLy8gRU5BQkxFKE9SSUVOVEFUSU9O
X0VWRU5UUykuCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKworI2luY2x1ZGUgPFFMaXN0Pgor
I2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KKyNpbmNsdWRlIDxRUmVjdD4KKyNpbmNs
dWRlIDxRU2l6ZT4KKyNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3Mu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKK30KKwor
UVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRUG9pbnQ7CitRVF9FTkRfTkFNRVNQQUNFCisKKyNp
ZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBRR2VzdHVyZUV2ZW50RmFjYWRlOworI2Vu
ZGlmCitjbGFzcyBRV2ViRnJhbWU7CitjbGFzcyBRV2ViUGFnZUFkYXB0ZXI7CitjbGFzcyBRV2Vi
U2VjdXJpdHlPcmlnaW47CisKK2NsYXNzIFdFQktJVF9FWFBPUlREQVRBIFFXZWJIaXRUZXN0UmVz
dWx0UHJpdmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKCkKKyAg
ICAgICAgOiBpc0NvbnRlbnRFZGl0YWJsZShmYWxzZSkKKyAgICAgICAgLCBpc0NvbnRlbnRTZWxl
Y3RlZChmYWxzZSksIGlzU2Nyb2xsQmFyKGZhbHNlKQorICAgICAgICAsIGlubmVyTm9kZSgwKQor
ICAgICAgICAsIGlubmVyTm9uU2hhcmVkTm9kZSgwKQorICAgICAgICAsIHdlYkNvcmVGcmFtZSgw
KQorICAgIHsgfQorICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0ICYpOworICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZShjb25zdCBRV2Vi
SGl0VGVzdFJlc3VsdFByaXZhdGUmKTsKKyAgICBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUmIG9w
ZXJhdG9yPShjb25zdCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUmKTsKKyAgICB+UVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlKCk7CisKKyAgICBRV2ViRWxlbWVudCBlbGVtZW50Rm9ySW5uZXJOb2Rl
KCkgY29uc3Q7CisKKyAgICBRUG9pbnQgcG9zOworICAgIFFSZWN0IGJvdW5kaW5nUmVjdDsKKyAg
ICBRV2ViRWxlbWVudCBlbmNsb3NpbmdCbG9jazsKKyAgICBRU3RyaW5nIHRpdGxlOworICAgIFFT
dHJpbmcgbGlua1RleHQ7CisgICAgUVVybCBsaW5rVXJsOworICAgIFFTdHJpbmcgbGlua1RpdGxl
OworICAgIFFQb2ludGVyPFFPYmplY3Q+IGxpbmtUYXJnZXRGcmFtZTsKKyAgICBRV2ViRWxlbWVu
dCBsaW5rRWxlbWVudDsKKyAgICBRU3RyaW5nIGFsdGVybmF0ZVRleHQ7CisgICAgUVVybCBpbWFn
ZVVybDsKKyAgICBRUGl4bWFwIHBpeG1hcDsKKyAgICBib29sIGlzQ29udGVudEVkaXRhYmxlOwor
ICAgIGJvb2wgaXNDb250ZW50U2VsZWN0ZWQ7CisgICAgYm9vbCBpc1Njcm9sbEJhcjsKKyAgICBR
UG9pbnRlcjxRT2JqZWN0PiBmcmFtZTsKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6Tm9kZSogaW5u
ZXJOb2RlOworICAgIFdlYkNvcmU6Ok5vZGUqIGlubmVyTm9uU2hhcmVkTm9kZTsKKyAgICBXZWJD
b3JlOjpGcmFtZSogd2ViQ29yZUZyYW1lOworICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWVBZGFw
dGVyOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZUFkYXB0ZXI7Cit9OworCitjbGFzcyBRV2Vi
RnJhbWVEYXRhIHsKK3B1YmxpYzoKKyAgICBRV2ViRnJhbWVEYXRhKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpGcmFtZSogcGFyZW50RnJhbWUgPSAwLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQqID0gMCwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSA9IFdURjo6U3RyaW5nKCkp
OworCisgICAgV1RGOjpTdHJpbmcgbmFtZTsKKyAgICBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudDsKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gZnJhbWU7CisgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dCogZnJhbWVMb2FkZXJDbGllbnQ7CisKKyAgICBXVEY6OlN0cmluZyByZWZlcnJlcjsKKyAgICBi
b29sIGFsbG93c1Njcm9sbGluZzsKKyAgICBpbnQgbWFyZ2luV2lkdGg7CisgICAgaW50IG1hcmdp
bkhlaWdodDsKK307CisKK2NsYXNzIFdFQktJVF9FWFBPUlREQVRBIFFXZWJGcmFtZUFkYXB0ZXIg
eworcHVibGljOgorICAgIGVudW0gVmFsdWVPd25lcnNoaXAgeworICAgICAgICBRdE93bmVyc2hp
cCwKKyAgICAgICAgU2NyaXB0T3duZXJzaGlwLAorICAgICAgICBBdXRvT3duZXJzaGlwCisgICAg
fTsKKworICAgIGVudW0gUmVuZGVyTGF5ZXJzIHsKKyAgICAgICAgQ29udGVudHNMYXllciA9IDB4
MTAsCisgICAgICAgIFNjcm9sbEJhckxheWVyID0gMHgyMCwKKyAgICAgICAgUGFuSWNvbkxheWVy
ID0gMHg0MCwKKworICAgICAgICBBbGxMYXllcnMgPSAweGZmCisgICAgfTsKKworICAgIHN0YXRp
YyBRVXJsIGVuc3VyZUFic29sdXRlVXJsKGNvbnN0IFFVcmwmKTsKKworICAgIFFXZWJGcmFtZUFk
YXB0ZXIoKTsKKyAgICB2aXJ0dWFsIH5RV2ViRnJhbWVBZGFwdGVyKCk7CisKKyAgICB2aXJ0dWFs
IFFXZWJGcmFtZSogYXBpSGFuZGxlKCkgPSAwOworICAgIHZpcnR1YWwgUU9iamVjdCogaGFuZGxl
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVEaWRDaGFuZ2UoY29uc3QgUVNp
emUmKSA9IDA7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsQmFyUG9saWN5KFF0OjpPcmllbnRhdGlv
bikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbWl0VXJsQ2hhbmdlZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVQcm9ncmVzc0ZpbmlzaGVkKFFQb2ludCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW1pdElu
aXRpYWxMYXlvdXRDb21wbGV0ZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVtaXRJY29uQ2hh
bmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW1pdExvYWRTdGFydGVkKGJvb2wgb3JpZ2lu
YXRpbmdMb2FkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVtaXRMb2FkRmluaXNoZWQoYm9vbCBv
cmlnaW5hdGluZ0xvYWQsIGJvb2wgb2spID0gMDsKKyAgICB2aXJ0dWFsIFFXZWJGcmFtZUFkYXB0
ZXIqIGNyZWF0ZUNoaWxkRnJhbWUoUVdlYkZyYW1lRGF0YSopID0gMDsKKworICAgIHZvaWQgbG9h
ZChjb25zdCBRTmV0d29ya1JlcXVlc3QmLCBRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlv
biA9IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6R2V0T3BlcmF0aW9uLCBjb25zdCBRQnl0ZUFycmF5
JiBib2R5ID0gUUJ5dGVBcnJheSgpKTsKKyAgICBib29sIGhhc1ZpZXcoKSBjb25zdDsKKyNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdm9pZCBoYW5kbGVHZXN0dXJlRXZlbnQoUUdlc3R1
cmVFdmVudEZhY2FkZSopOworI2VuZGlmCisgICAgUVdlYkZyYW1lQWRhcHRlciogY3JlYXRlRnJh
bWUoUVdlYkZyYW1lRGF0YSopOworCisgICAgUVZhcmlhbnQgZXZhbHVhdGVKYXZhU2NyaXB0KGNv
bnN0IFFTdHJpbmcmIHNjcmlwdFNvdXJjZSk7CisgICAgdm9pZCBhZGRUb0phdmFTY3JpcHRXaW5k
b3dPYmplY3QoY29uc3QgUVN0cmluZyYgbmFtZSwgUU9iamVjdCosIFZhbHVlT3duZXJzaGlwKTsK
KworICAgIFFTdHJpbmcgdG9IdG1sKCkgY29uc3Q7CisgICAgUVN0cmluZyB0b1BsYWluVGV4dCgp
IGNvbnN0OworCisgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFFCeXRlQXJyYXkmIGRhdGEsIGNv
bnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBRVXJsJiBiYXNlVXJsKTsKKyAgICB2b2lkIHNl
dEh0bWwoY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCk7CisKKyAgICBR
TXVsdGlNYXA8UVN0cmluZywgUVN0cmluZz4gbWV0YURhdGEoKSBjb25zdDsKKworICAgIFFXZWJI
aXRUZXN0UmVzdWx0UHJpdmF0ZSogaGl0VGVzdENvbnRlbnQoY29uc3QgUVBvaW50JikgY29uc3Q7
CisgICAgUVdlYkVsZW1lbnQgZG9jdW1lbnRFbGVtZW50KCkgY29uc3Q7CisgICAgUVN0cmluZyB0
aXRsZSgpIGNvbnN0OworICAgIHZvaWQgY2xlYXJDb3JlRnJhbWUoKTsKKyAgICBRVXJsIGJhc2VV
cmwoKSBjb25zdDsKKyAgICBRVXJsIGNvcmVGcmFtZVVybCgpIGNvbnN0OworICAgIFFVcmwgbGFz
dFJlcXVlc3RlZFVybCgpIGNvbnN0OworICAgIFFXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0OworICAgIFFTdHJpbmcgdW5pcXVlTmFtZSgpIGNvbnN0OworCisgICAgdm9p
ZCByZW5kZXJSZWxhdGl2ZUNvb3JkcyhRUGFpbnRlciosIGludCBsYXllcnMsIGNvbnN0IFFSZWdp
b24mIGNsaXApOworICAgIHZvaWQgcmVuZGVyRnJhbWVFeHRyYXMoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0KiwgaW50IGxheWVycywgY29uc3QgUVJlZ2lvbiYgY2xpcCk7CisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHZvaWQgcmVuZGVyQ29tcG9zaXRlZExheWVycyhXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwKTsKKyNl
bmRpZgorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIHZvaWQgc2V0VGlsZWRCYWNr
aW5nU3RvcmVGcm96ZW4oYm9vbCk7CisgICAgYm9vbCB0aWxlZEJhY2tpbmdTdG9yZUZyb3plbigp
IGNvbnN0OworICAgIHZvaWQgc2V0VGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1NjYWxlKGZsb2F0
KTsKKyAgICBib29sIHJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9yZShRUGFpbnRlciosIGNvbnN0
IFFSZWdpb24mIGNsaXApOworI2VuZGlmCisKKyAgICAvLyBDYWxsZWQgZnJvbSBRV2ViRnJhbWUg
YXMgYSBwcml2YXRlIHNsb3Q6CisgICAgdm9pZCBfcV9vcmllbnRhdGlvbkNoYW5nZWQoKTsKKwor
ICAgIFFMaXN0PFFPYmplY3QqPiBjaGlsZEZyYW1lcygpIGNvbnN0OworICAgIGJvb2wgaGFzRm9j
dXMoKSBjb25zdDsKKyAgICB2b2lkIHNldEZvY3VzKCk7CisKKyAgICB2b2lkIHNldFNjcm9sbEJh
clBvbGljeShRdDo6T3JpZW50YXRpb24sIFF0OjpTY3JvbGxCYXJQb2xpY3kpOworICAgIHZvaWQg
c2Nyb2xsVG9BbmNob3IoY29uc3QgUVN0cmluZyYpOworICAgIHZvaWQgc2Nyb2xsQnkoaW50LCBp
bnQpOworICAgIHZvaWQgc2V0U2Nyb2xsQmFyVmFsdWUoUXQ6Ok9yaWVudGF0aW9uLCBpbnQpOwor
ICAgIGludCBzY3JvbGxCYXJWYWx1ZShRdDo6T3JpZW50YXRpb24pIGNvbnN0OworICAgIGludCBz
Y3JvbGxCYXJNYXhpbXVtKFF0OjpPcmllbnRhdGlvbikgY29uc3Q7CisgICAgUVJlY3Qgc2Nyb2xs
QmFyR2VvbWV0cnkoUXQ6Ok9yaWVudGF0aW9uKSBjb25zdDsKKworICAgIFFQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0OworICAgIFFSZWN0IGZyYW1lUmVjdCgpIGNvbnN0OworICAgIFFTaXpl
IGNvbnRlbnRzU2l6ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRab29tRmFjdG9yKHFyZWFsKTsK
KyAgICB2b2lkIHNldFRleHRTaXplTXVsdGlwbGllcihxcmVhbCk7CisgICAgcXJlYWwgem9vbUZh
Y3RvcigpIGNvbnN0OworCisgICAgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29u
c3QgUUNvbG9yJik7CisKKyAgICB2b2lkIGNhbmNlbExvYWQoKTsKKworICAgIC8vIEZyYW1lVmll
dyByZWxhdGVkIGZ1bmN0aW9ucworICAgIFFTaXplIGN1c3RvbUxheW91dFNpemUoKSBjb25zdDsK
KyAgICB2b2lkIHNldEN1c3RvbUxheW91dFNpemUoY29uc3QgUVNpemUmKTsKKyAgICB2b2lkIHNl
dEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IFFSZWN0Jik7CisgICAgdm9pZCBzZXRWaWV3
cG9ydFNpemUoY29uc3QgUVNpemUmKTsKKyAgICB2b2lkIHNldFBhaW50c0VudGlyZUNvbnRlbnRz
KGJvb2wgLypyZXNpemVzVG9Db250ZW50cyovKTsKKyAgICB2b2lkIHNldERlbGVnYXRlc1Njcm9s
bGluZyhib29sIC8qcmVzaXplc1RvQ29udGVudHMqLyk7CisKKyAgICBRV2ViUGFnZUFkYXB0ZXIq
IHBhZ2VBZGFwdGVyOworCisvLyBwcm90ZWN0ZWQ6CisgICAgYm9vbCBhbGxvd3NTY3JvbGxpbmc7
CisgICAgaW50IG1hcmdpbldpZHRoOworICAgIGludCBtYXJnaW5IZWlnaHQ7CisgICAgUXQ6OlNj
cm9sbEJhclBvbGljeSBob3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5OworICAgIFF0OjpTY3JvbGxC
YXJQb2xpY3kgdmVydGljYWxTY3JvbGxCYXJQb2xpY3k7CisjaWYgRU5BQkxFKE9SSUVOVEFUSU9O
X0VWRU5UUykgJiYgSEFWRShRVFNFTlNPUlMpCisgICAgUU9yaWVudGF0aW9uU2Vuc29yIG1fb3Jp
ZW50YXRpb247CisjZW5kaWYgLy8gRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykuCisKKy8vIHBy
aXZhdGU6CisgICAgdm9pZCBpbml0KFFXZWJQYWdlQWRhcHRlciopOworICAgIHZvaWQgaW5pdChR
V2ViUGFnZUFkYXB0ZXIqLCBRV2ViRnJhbWVEYXRhKik7CisgICAgV2ViQ29yZTo6U2Nyb2xsYmFy
KiBob3Jpem9udGFsU2Nyb2xsQmFyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2
ZXJ0aWNhbFNjcm9sbEJhcigpIGNvbnN0OworCisgICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lOwor
ICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQgKmZyYW1lTG9hZGVyQ2xpZW50OworICAg
IFFVcmwgdXJsOworCisgICAgc3RhdGljIFFXZWJGcmFtZUFkYXB0ZXIqIGtpdChjb25zdCBXZWJD
b3JlOjpGcmFtZSopOworCisvLyAgICBmcmllbmQgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7Cit9Owor
CisjZW5kaWYgLy8gUVdlYkZyYW1lQWRhcHRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDg0MTRjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMCwwICsxLDE0NTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRV2ViUGFnZUFkYXB0
ZXIuaCIKKworI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1
ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNs
aWVudFF0LmgiCisjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51
LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgorI2luY2x1ZGUgIkNvbnRleHRN
ZW51Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAi
RHJhZ0NsaWVudFF0LmgiCisjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJE
cmFnRGF0YS5oIgorI2luY2x1ZGUgIkRyYWdTZXNzaW9uLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgi
CisjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIK
KyNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
KyNpbmNsdWRlICJHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdC5oIgorI2luY2x1ZGUgIkhU
TUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5pdFdlYkNvcmVRdC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudFF0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkluc3BlY3RvclNlcnZlclF0LmgiCisjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKKyNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhYmFz
ZS5oIgorI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKKyNpbmNsdWRlICJQcm9ncmVzc1RyYWNr
ZXIuaCIKKyNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4
dENvbnRyb2wuaCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNjcm9s
bGJhci5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJVbmRvU3RlcFF0LmgiCisjaW5jbHVkZSAiVXNlckFnZW50UXQuaCIKKyNp
bmNsdWRlICJXZWJFdmVudENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgi
CisjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJxd2ViaGlzdG9yeV9wLmgi
CisjaW5jbHVkZSAicXdlYnBsdWdpbmZhY3RvcnkuaCIKKyNpbmNsdWRlICJxd2Vic2V0dGluZ3Mu
aCIKKyNpbmNsdWRlIDxQYWdlLmg+CisjaW5jbHVkZSA8UUJpdEFycmF5PgorI2luY2x1ZGUgPFFH
dWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRTWltZURhdGE+CisjaW5jbHVkZSA8UU1vdXNlRXZl
bnQ+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFFTdHlsZUhp
bnRzPgorI2luY2x1ZGUgPFFUZXh0Q2hhckZvcm1hdD4KKyNpbmNsdWRlIDxRVG91Y2hFdmVudD4K
KyNpbmNsdWRlIDxRV2hlZWxFdmVudD4KKworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
CisjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oIgorI2luY2x1ZGUgIkRldmljZU1v
dGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpZiBIQVZFKFFU
U0VOU09SUykKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnRRdC5oIgorI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50UXQuaCIKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBFTkFCTEUo
R0VPTE9DQVRJT04pCisjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCisjaW5jbHVk
ZSAiR2VvbG9jYXRpb25Db250cm9sbGVyLmgiCisjaWYgSEFWRShRVExPQ0FUSU9OKQorI2luY2x1
ZGUgIkdlb2xvY2F0aW9uQ2xpZW50UXQuaCIKKyNlbmRpZgorI2VuZGlmCisKKy8vIGZyb20gdGV4
dC9xZm9udC5jcHAKK1FUX0JFR0lOX05BTUVTUEFDRQorZXh0ZXJuIFFfR1VJX0VYUE9SVCBpbnQg
cXRfZGVmYXVsdERwaSgpOworUVRfRU5EX05BTUVTUEFDRQorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmRydFJ1biA9IGZhbHNlOworCit0eXBlZGVm
IFFXZWJQYWdlQWRhcHRlcjo6TWVudUl0ZW1EZXNjcmlwdGlvbiBNZW51SXRlbTsKKworc3RhdGlj
IGlubGluZSBEcmFnT3BlcmF0aW9uIGRyb3BBY3Rpb25Ub0RyYWdPcChRdDo6RHJvcEFjdGlvbnMg
YWN0aW9ucykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAgIGlmIChhY3Rpb25zICYg
UXQ6OkNvcHlBY3Rpb24pCisgICAgICAgIHJlc3VsdCB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAg
ICAvLyBEcmFnT3BlcmF0aW9uZ2VuZXJpYyByZXByZXNlbnRzIEludGVybmV0RXhwbG9yZXIncyBl
cXVpdmFsZW50IG9mIE1vdmUgb3BlcmF0aW9uLAorICAgIC8vIGhlbmNlIGl0IHNob3VsZCBiZSBj
b25zaWRlcmVkIGFzICJtb3ZlIgorICAgIGlmIChhY3Rpb25zICYgUXQ6Ok1vdmVBY3Rpb24pCisg
ICAgICAgIHJlc3VsdCB8PSAoRHJhZ09wZXJhdGlvbk1vdmUgfCBEcmFnT3BlcmF0aW9uR2VuZXJp
Yyk7CisgICAgaWYgKGFjdGlvbnMgJiBRdDo6TGlua0FjdGlvbikKKyAgICAgICAgcmVzdWx0IHw9
IERyYWdPcGVyYXRpb25MaW5rOworICAgIGlmIChyZXN1bHQgPT0gKERyYWdPcGVyYXRpb25Db3B5
IHwgRHJhZ09wZXJhdGlvbk1vdmUgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25MaW5rKSkKKyAgICAgICAgcmVzdWx0ID0gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgIHJldHVy
biAoRHJhZ09wZXJhdGlvbilyZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rp
b24gZHJhZ09wVG9Ecm9wQWN0aW9uKHVuc2lnbmVkIGFjdGlvbnMpCit7CisgICAgUXQ6OkRyb3BB
Y3Rpb24gcmVzdWx0ID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyAgICBpZiAoYWN0aW9ucyAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBRdDo6Q29weUFjdGlvbjsKKyAgICBlbHNl
IGlmIChhY3Rpb25zICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9IFF0OjpN
b3ZlQWN0aW9uOworICAgIC8vIERyYWdPcGVyYXRpb25nZW5lcmljIHJlcHJlc2VudHMgSW50ZXJu
ZXRFeHBsb3JlcidzIGVxdWl2YWxlbnQgb2YgTW92ZSBvcGVyYXRpb24sCisgICAgLy8gaGVuY2Ug
aXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgIm1vdmUiCisgICAgZWxzZSBpZiAoYWN0aW9ucyAm
IERyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBRdDo6TW92ZUFjdGlvbjsK
KyAgICBlbHNlIGlmIChhY3Rpb25zICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3Vs
dCA9IFF0OjpMaW5rQWN0aW9uOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxp
bmUgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSB3ZWJQYWdlVmlzaWJpbGl0eVN0YXRlVG9X
ZWJDb3JlVmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlIHN0
YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6
VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZVZp
c2liaWxpdHlTdGF0ZVByZXJlbmRlcjsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJp
bGl0eVN0YXRlVW5sb2FkZWQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0
eVN0YXRlVW5sb2FkZWQ7CisgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0
ZVZpc2libGU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlz
aWJsZTsKKyAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuOgor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
UGFnZVZpc2liaWxpdHlTdGF0ZUhpZGRlbjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgUVdl
YlBhZ2VBZGFwdGVyOjpWaXNpYmlsaXR5U3RhdGUgd2ViQ29yZVZpc2liaWxpdHlTdGF0ZVRvV2Vi
UGFnZVZpc2liaWxpdHlTdGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQor
eworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5
U3RhdGVQcmVyZW5kZXI6CisgICAgICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxp
dHlTdGF0ZVByZXJlbmRlcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVV
bmxvYWRlZDoKKyAgICAgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRl
VW5sb2FkZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZToK
KyAgICAgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZTsK
KyAgICBjYXNlIFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVIaWRkZW46CisgICAgICAgIHJl
dHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZUhpZGRlbjsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAgICByZXR1cm4gUVdlYlBhZ2VBZGFwdGVy
OjpWaXNpYmlsaXR5U3RhdGVIaWRkZW47CisgICAgfQorfQorCitzdGF0aWMgV2ViQ29yZTo6RnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KGNvbnN0IFFVcmwgJnVybCwgV2ViQ29yZTo6
RnJhbWUgKmZyYW1lKQoreworICAgIHJldHVybiBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KGZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLAorICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QodXJsLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7Cit9
CisKK3N0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgUVVybCYgdXJsLCBGcmFtZSogZnJh
bWUpCit7CisgICAgaWYgKFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAg
IFdpbmRvd0ZlYXR1cmVzIGZlYXR1cmVzOworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlv
bjsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0ID0gZnJhbWVMb2FkUmVxdWVzdCh1
cmwsIGZyYW1lKTsKKyAgICAgICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUo
KS5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIGZlYXR1cmVzLCBhY3Rpb24pKSB7CisgICAg
ICAgICAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KHJl
cXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICAg
ICAgbmV3UGFnZS0+Y2hyb21lKCkuc2hvdygpOworICAgICAgICB9CisgICAgfQorfQorCitRV2Vi
UGFnZUFkYXB0ZXI6OlFXZWJQYWdlQWRhcHRlcigpCisgICAgOiBzZXR0aW5ncygwKQorICAgICwg
cGFnZSgwKQorICAgICwgcGx1Z2luRmFjdG9yeSgwKQorICAgICwgZm9yd2FyZFVuc3VwcG9ydGVk
Q29udGVudChmYWxzZSkKKyAgICAsIGluc2lkZU9wZW5DYWxsKGZhbHNlKQorICAgICwgY2xpY2tD
YXVzZWRGb2N1cyhmYWxzZSkKKyAgICAsIG1fdXNlTmF0aXZlVmlydHVhbEtleUFzRE9NS2V5KGZh
bHNlKQorICAgICwgbV90b3RhbEJ5dGVzKDApCisgICAgLCBtX2J5dGVzUmVjZWl2ZWQoKQorICAg
ICwgbmV0d29ya01hbmFnZXIoMCkKK3sKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0
KCk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVBhZ2UoKQor
eworI2lmIEVOQUJMRShHRU9MT0NBVElPTikgfHwgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
KyAgICBjb25zdCBib29sIHVzZU1vY2sgPSBRV2ViUGFnZUFkYXB0ZXI6OmRydFJ1bjsKKyNlbmRp
ZgorICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOworICAgIHBhZ2VDbGllbnRzLmNo
cm9tZUNsaWVudCA9IG5ldyBDaHJvbWVDbGllbnRRdCh0aGlzKTsKKyAgICBwYWdlQ2xpZW50cy5j
b250ZXh0TWVudUNsaWVudCA9IG5ldyBDb250ZXh0TWVudUNsaWVudFF0KCk7CisgICAgcGFnZUNs
aWVudHMuZWRpdG9yQ2xpZW50ID0gbmV3IEVkaXRvckNsaWVudFF0KHRoaXMpOworICAgIHBhZ2VD
bGllbnRzLmRyYWdDbGllbnQgPSBuZXcgRHJhZ0NsaWVudFF0KHBhZ2VDbGllbnRzLmNocm9tZUNs
aWVudCk7CisgICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gbmV3IEluc3BlY3RvckNs
aWVudFF0KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9
IG5ldyBGcmFtZUxvYWRlckNsaWVudFF0KCk7CisgICAgcGFnZSA9IG5ldyBQYWdlKHBhZ2VDbGll
bnRzKTsKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAodXNlTW9jaykgeworICAg
ICAgICAvLyBJbiBjYXNlIHJ1bm5pbmcgaW4gRHVtcFJlbmRlclRyZWUgbW9kZSBzZXQgdGhlIGNv
bnRyb2xsZXIgdG8gbW9jayBwcm92aWRlci4KKyAgICAgICAgR2VvbG9jYXRpb25DbGllbnRNb2Nr
KiBtb2NrID0gbmV3IEdlb2xvY2F0aW9uQ2xpZW50TW9jazsKKyAgICAgICAgV2ViQ29yZTo6cHJv
dmlkZUdlb2xvY2F0aW9uVG8ocGFnZSwgbW9jayk7CisgICAgICAgIG1vY2stPnNldENvbnRyb2xs
ZXIoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpKTsKKyAgICB9Cisj
aWYgSEFWRShRVExPQ0FUSU9OKQorICAgIGVsc2UKKyAgICAgICAgV2ViQ29yZTo6cHJvdmlkZUdl
b2xvY2F0aW9uVG8ocGFnZSwgbmV3IEdlb2xvY2F0aW9uQ2xpZW50UXQodGhpcykpOworI2VuZGlm
CisjZW5kaWYKKworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgaWYgKHVzZU1v
Y2spIHsKKyAgICAgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBtb2NrT3JpZW50YXRp
b25DbGllbnQgPSBuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOworICAgICAgICBXZWJD
b3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhwYWdlLCBtb2NrT3JpZW50YXRpb25DbGll
bnQpOworCisgICAgICAgIERldmljZU1vdGlvbkNsaWVudE1vY2sqIG1vY2tNb3Rpb25DbGllbnQ9
IG5ldyBEZXZpY2VNb3Rpb25DbGllbnRNb2NrOworICAgICAgICBXZWJDb3JlOjpwcm92aWRlRGV2
aWNlTW90aW9uVG8ocGFnZSwgbW9ja01vdGlvbkNsaWVudCk7CisgICAgfQorI2lmIEhBVkUoUVRT
RU5TT1JTKQorICAgIGVsc2UgeworICAgICAgICBXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50
YXRpb25UbyhwYWdlLCBuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRRdCk7CisgICAgICAgIFdl
YkNvcmU6OnByb3ZpZGVEZXZpY2VNb3Rpb25UbyhwYWdlLCBuZXcgRGV2aWNlTW90aW9uQ2xpZW50
UXQpOworICAgIH0KKyNlbmRpZgorI2VuZGlmCisKKyAgICAvLyBCeSBkZWZhdWx0IGVhY2ggcGFn
ZSBpcyBwdXQgaW50byB0aGVpciBvd24gdW5pcXVlIHBhZ2UgZ3JvdXAsIHdoaWNoIGFmZmVjdHMg
cG9wdXAgd2luZG93cworICAgIC8vIGFuZCB2aXNpdGVkIGxpbmtzLiBQYWdlIGdyb3VwcyAocGVy
IHByb2Nlc3Mgb25seSkgaXMgYSBmZWF0dXJlIG1ha2luZyBpdCBwb3NzaWJsZSB0byB1c2UKKyAg
ICAvLyBzZXBhcmF0ZSBzZXR0aW5ncyBmb3IgZWFjaCBncm91cCwgc28gdGhhdCBmb3IgaW5zdGFu
Y2UgYW4gaW50ZWdyYXRlZCBicm93c2VyL2VtYWlsIHJlYWRlcgorICAgIC8vIGNhbiB1c2UgZGlm
ZmVyZW50IHNldHRpbmdzIGZvciBkaXNwbGF5aW5nIEhUTUwgcGFnZXMgYW5kIEhUTUwgZW1haWwu
IFRvIG1ha2UgUXRXZWJLaXQgd29yaworICAgIC8vIGFzIGV4cGVjdGVkIG91dCBvZiB0aGUgYm94
LCB3ZSB1c2UgYSBkZWZhdWx0IGdyb3VwIHNpbWlsYXIgdG8gd2hhdCBvdGhlciBwb3J0cyBhcmUg
ZG9pbmcuCisgICAgcGFnZS0+c2V0R3JvdXBOYW1lKCJEZWZhdWx0IEdyb3VwIik7CisKKyAgICBw
YWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7
CisKKyAgICBzZXR0aW5ncyA9IG5ldyBRV2ViU2V0dGluZ3MoJnBhZ2UtPnNldHRpbmdzKCkpOwor
CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9O
UykKKyAgICBXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9uKHBhZ2UsIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKSk7CisjZW5kaWYKKworICAg
IGhpc3RvcnkuZCA9IG5ldyBRV2ViSGlzdG9yeVByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0Kj4ocGFnZS0+YmFja0ZvcndhcmRDbGllbnQoKSkpOworCisgICAgUGFn
ZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyh0cnVlKTsKK30KKworUVdlYlBhZ2VB
ZGFwdGVyOjp+UVdlYlBhZ2VBZGFwdGVyKCkKK3sKKyAgICBkZWxldGUgcGFnZTsKKyAgICBkZWxl
dGUgc2V0dGluZ3M7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3Rp
ZmljYXRpb25QcmVzZW50ZXIoKS0+cmVtb3ZlQ2xpZW50KCk7CisjZW5kaWYKK30KKwordm9pZCBR
V2ViUGFnZUFkYXB0ZXI6OmRlbGV0ZVBhZ2UoKQoreworICAgIC8vIEJlZm9yZSB3ZSBkZWxldGUg
dGhlIHBhZ2UsIGRldGFjaCB0aGUgbWFpbmZyYW1lJ3MgbG9hZGVyCisgICAgRnJhbWVMb2FkZXIm
IGxvYWRlciA9IG1haW5GcmFtZUFkYXB0ZXIoKS0+ZnJhbWUtPmxvYWRlcigpOworICAgIGxvYWRl
ci5kZXRhY2hGcm9tUGFyZW50KCk7CisgICAgZGVsZXRlIHBhZ2U7CisgICAgcGFnZSA9IDA7Cit9
CisKK1FXZWJQYWdlQWRhcHRlciogUVdlYlBhZ2VBZGFwdGVyOjpraXQoUGFnZSogcGFnZSkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQmPihwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKSkubV93ZWJQYWdlOworfQorCitWaWV3cG9ydEFyZ3VtZW50cyBRV2ViUGFnZUFkYXB0
ZXI6OnZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2Ut
PnZpZXdwb3J0QXJndW1lbnRzKCkgOiBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cygpOworfQor
CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKK3sKKyAgICBjcmVhdGVVbmRvU3RlcChRU2hhcmVk
UG9pbnRlcjxVbmRvU3RlcFF0PihuZXcgVW5kb1N0ZXBRdChzdGVwKSkpOworfQorCit2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6c2V0VmlzaWJpbGl0eVN0YXRlKFZpc2liaWxpdHlTdGF0ZSBzdGF0ZSkK
K3sKKyNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKyAgICBwYWdlLT5zZXRWaXNpYmlsaXR5U3RhdGUod2ViUGFnZVZpc2liaWxp
dHlTdGF0ZVRvV2ViQ29yZVZpc2liaWxpdHlTdGF0ZShzdGF0ZSksIGZhbHNlKTsKKyNlbHNlCisg
ICAgUV9VTlVTRUQoc3RhdGUpOworI2VuZGlmCit9CisKK1FXZWJQYWdlQWRhcHRlcjo6VmlzaWJp
bGl0eVN0YXRlIFFXZWJQYWdlQWRhcHRlcjo6dmlzaWJpbGl0eVN0YXRlKCkgY29uc3QKK3sKKyNp
ZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKKyAgICByZXR1cm4gd2ViQ29yZVZpc2liaWxp
dHlTdGF0ZVRvV2ViUGFnZVZpc2liaWxpdHlTdGF0ZShwYWdlLT52aXNpYmlsaXR5U3RhdGUoKSk7
CisjZWxzZQorICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZVZpc2li
bGU7CisjZW5kaWYKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnNldE5ldHdvcmtBY2Nlc3NN
YW5hZ2VyKFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbWFuYWdlcikKK3sKKyAgICBpZiAobWFuYWdl
ciA9PSBuZXR3b3JrTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChuZXR3b3JrTWFu
YWdlciAmJiBuZXR3b3JrTWFuYWdlci0+cGFyZW50KCkgPT0gaGFuZGxlKCkpCisgICAgICAgIGRl
bGV0ZSBuZXR3b3JrTWFuYWdlcjsKKyAgICBuZXR3b3JrTWFuYWdlciA9IG1hbmFnZXI7Cit9CisK
K1FOZXR3b3JrQWNjZXNzTWFuYWdlciogUVdlYlBhZ2VBZGFwdGVyOjpuZXR3b3JrQWNjZXNzTWFu
YWdlcigpCit7CisgICAgaWYgKCFuZXR3b3JrTWFuYWdlcikKKyAgICAgICAgbmV0d29ya01hbmFn
ZXIgPSBuZXcgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKGhhbmRsZSgpKTsKKyAgICByZXR1cm4gbmV0
d29ya01hbmFnZXI7Cit9CisKK2Jvb2wgUVdlYlBhZ2VBZGFwdGVyOjpoYXNTZWxlY3Rpb24oKSBj
b25zdAoreworICAgIEZyYW1lJiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIHJldHVybiBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb25UeXBlKCkgIT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb247Cit9CisK
K1FTdHJpbmcgUVdlYlBhZ2VBZGFwdGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAoreworICAgIEZy
YW1lJiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OworICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkg
PT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24pCisgICAgICAgIHJldHVybiBRU3RyaW5n
KCk7CisgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOworfQorCitRU3Ry
aW5nIFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0ZWRIdG1sKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuc2Vs
ZWN0ZWRSYW5nZSgpLT50b0hUTUwoKTsKK30KKworYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmlzQ29u
dGVudEVkaXRhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZS0+aXNFZGl0YWJsZSgpOwor
fQorCit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZWRpdGFi
bGUpCit7CisgICAgcGFnZS0+c2V0RWRpdGFibGUoZWRpdGFibGUpOworICAgIHBhZ2UtPnNldFRh
YktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZWRpdGFibGUpOworCisgICAgRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZTsKKyAgICBpZiAoZWRpdGFibGUpIHsKKyAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAg
ICAgICAvLyBGSVhNRTogbWFjIHBvcnQgY2FsbHMgdGhpcyBpZiB0aGVyZSBpcyBubyBzZWxlY3Rl
ZERPTVJhbmdlCisgICAgICAgIC8vIGZyYW1lLT5zZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOworICAg
IH0KKworfQorCitib29sIFFXZWJQYWdlQWRhcHRlcjo6ZmluZFRleHQoY29uc3QgUVN0cmluZyYg
c3ViU3RyaW5nLCBGaW5kRmxhZyBvcHRpb25zKQoreworICAgIDo6V2ViQ29yZTo6RmluZE9wdGlv
bnMgd2ViQ29yZUZpbmRPcHRpb25zID0gMDsKKworICAgIGlmICghKG9wdGlvbnMgJiBGaW5kQ2Fz
ZVNlbnNpdGl2ZWx5KSkKKyAgICAgICAgd2ViQ29yZUZpbmRPcHRpb25zIHw9IFdlYkNvcmU6OkNh
c2VJbnNlbnNpdGl2ZTsKKworICAgIGlmIChvcHRpb25zICYgRmluZEJhY2t3YXJkKQorICAgICAg
ICB3ZWJDb3JlRmluZE9wdGlvbnMgfD0gV2ViQ29yZTo6QmFja3dhcmRzOworCisgICAgaWYgKG9w
dGlvbnMgJiBGaW5kV3JhcHNBcm91bmREb2N1bWVudCkKKyAgICAgICAgd2ViQ29yZUZpbmRPcHRp
b25zIHw9IFdlYkNvcmU6OldyYXBBcm91bmQ7CisKKyAgICBpZiAob3B0aW9ucyAmIEZpbmRBdFdv
cmRCZWdpbm5pbmdzT25seSkKKyAgICAgICAgd2ViQ29yZUZpbmRPcHRpb25zIHw9IFdlYkNvcmU6
OkF0V29yZFN0YXJ0czsKKworICAgIGlmIChvcHRpb25zICYgVHJlYXRNZWRpYWxDYXBpdGFsQXNX
b3JkQmVnaW5uaW5nKQorICAgICAgICB3ZWJDb3JlRmluZE9wdGlvbnMgfD0gV2ViQ29yZTo6VHJl
YXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQ7CisKKyAgICBpZiAob3B0aW9ucyAmIEZpbmRCZWdp
bnNJblNlbGVjdGlvbikKKyAgICAgICAgd2ViQ29yZUZpbmRPcHRpb25zIHw9IFdlYkNvcmU6OlN0
YXJ0SW5TZWxlY3Rpb247CisKKyAgICBpZiAob3B0aW9ucyAmIEhpZ2hsaWdodEFsbE9jY3VycmVu
Y2VzKSB7CisgICAgICAgIGlmIChzdWJTdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBw
YWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhZ2UtPm1hcmtBbGxNYXRjaGVzRm9yVGV4dChzdWJT
dHJpbmcsIHdlYkNvcmVGaW5kT3B0aW9ucywgLypzaG91bGRIaWdobGlnaHQqLyB0cnVlLCAvKmxp
bWl0Ki8gMCk7CisgICAgfQorCisgICAgaWYgKHN1YlN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcGFnZS0+bWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuY2xlYXIoKTsKKyAgICAgICAgRnJhbWUq
IGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCkudHJlZSgpLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAg
d2hpbGUgKGZyYW1lKSB7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuY2xlYXIoKTsK
KyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHRXaXRoV3JhcChm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcGFnZS0+ZmluZFN0cmluZyhz
dWJTdHJpbmcsIHdlYkNvcmVGaW5kT3B0aW9ucyk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVy
OjphZGp1c3RQb2ludEZvckNsaWNraW5nKFFNb3VzZUV2ZW50KiBldikKK3sKKyNpZiBFTkFCTEUo
VE9VQ0hfQURKVVNUTUVOVCkKKyAgICBRdFBsYXRmb3JtUGx1Z2luIHBsYXRmb3JtUGx1Z2luOwor
ICAgIE93blB0cjxRV2ViVG91Y2hNb2RpZmllcj4gdG91Y2hNb2RpZmllciA9IHBsYXRmb3JtUGx1
Z2luLmNyZWF0ZVRvdWNoTW9kaWZpZXIoKTsKKyAgICBpZiAoIXRvdWNoTW9kaWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcgPSB0b3VjaE1vZGlmaWVyLT5o
aXRUZXN0UGFkZGluZ0ZvclRvdWNoKFFXZWJUb3VjaE1vZGlmaWVyOjpVcCk7CisgICAgdW5zaWdu
ZWQgcmlnaHRQYWRkaW5nID0gdG91Y2hNb2RpZmllci0+aGl0VGVzdFBhZGRpbmdGb3JUb3VjaChR
V2ViVG91Y2hNb2RpZmllcjo6UmlnaHQpOworICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcgPSB0
b3VjaE1vZGlmaWVyLT5oaXRUZXN0UGFkZGluZ0ZvclRvdWNoKFFXZWJUb3VjaE1vZGlmaWVyOjpE
b3duKTsKKyAgICB1bnNpZ25lZCBsZWZ0UGFkZGluZyA9IHRvdWNoTW9kaWZpZXItPmhpdFRlc3RQ
YWRkaW5nRm9yVG91Y2goUVdlYlRvdWNoTW9kaWZpZXI6OkxlZnQpOworCisgICAgdG91Y2hNb2Rp
ZmllciA9IG51bGxwdHI7CisKKyAgICBpZiAoIXRvcFBhZGRpbmcgJiYgIXJpZ2h0UGFkZGluZyAm
JiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IEludFJlY3QgdG91Y2hSZWN0KGV2LT5wb3MoKS54KCkgLSBsZWZ0UGFkZGluZywgZXYtPnBvcygp
LnkoKSAtIHRvcFBhZGRpbmcsIGxlZnRQYWRkaW5nICsgcmlnaHRQYWRkaW5nLCB0b3BQYWRkaW5n
ICsgYm90dG9tUGFkZGluZyk7CisgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludDsKKyAgICBOb2Rl
KiBhZGp1c3RlZE5vZGU7CisgICAgYm9vbCBmb3VuZENsaWNrYWJsZU5vZGUgPSBwYWdlLT5tYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS5iZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQodG91
Y2hSZWN0LmNlbnRlcigpLCB0b3VjaFJlY3Quc2l6ZSgpLCBhZGp1c3RlZFBvaW50LCBhZGp1c3Rl
ZE5vZGUpOworICAgIGlmICghZm91bmRDbGlja2FibGVOb2RlKQorICAgICAgICByZXR1cm47CisK
KyAgICBRTW91c2VFdmVudCogcmV0ID0gbmV3IFFNb3VzZUV2ZW50KGV2LT50eXBlKCksIFFQb2lu
dChhZGp1c3RlZFBvaW50KSwgZXYtPmdsb2JhbFBvcygpLCBldi0+YnV0dG9uKCksIGV2LT5idXR0
b25zKCksIGV2LT5tb2RpZmllcnMoKSk7CisgICAgZGVsZXRlIGV2OworICAgIGV2ID0gcmV0Owor
I2Vsc2UKKyAgICBRX1VOVVNFRChldik7CisjZW5kaWYKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0
ZXI6Om1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50KiBldikKK3sKKyAgICBXZWJDb3JlOjpGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lOworICAgIGlmICghZnJhbWUtPnZp
ZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBhY2NlcHRlZCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS5tb3VzZU1vdmVkKGNvbnZlcnRNb3VzZUV2ZW50KGV2LCAwKSk7CisgICAgZXYt
PnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6Om1vdXNl
UHJlc3NFdmVudChRTW91c2VFdmVudCogZXYpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZTsKKyAgICBpZiAoIWZyYW1lLT52aWV3KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBvbGROb2RlOworICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJh
bWUoKTsKKyAgICBpZiAoRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IGZvY3VzZWRGcmFtZSA/
IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKSA6IDApCisgICAgICAgIG9sZE5vZGUgPSBmb2N1c2Vk
RG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCk7CisKKyAgICBpZiAodHJpcGxlQ2xpY2tUaW1lci5p
c0FjdGl2ZSgpCisgICAgICAgICYmIChldi0+cG9zKCkgLSB0cmlwbGVDbGljaykubWFuaGF0dGFu
TGVuZ3RoKCkgPCBxR3VpQXBwLT5zdHlsZUhpbnRzKCktPnN0YXJ0RHJhZ0Rpc3RhbmNlKCkpIHsK
KyAgICAgICAgbW91c2VUcmlwbGVDbGlja0V2ZW50KGV2KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGJvb2wgYWNjZXB0ZWQgPSBmYWxzZTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
bWV2ID0gY29udmVydE1vdXNlRXZlbnQoZXYsIDEpOworICAgIC8vIGlnbm9yZSB0aGUgZXZlbnQg
aWYgd2UgY2FuJ3QgbWFwIFF0J3MgbW91c2UgYnV0dG9ucyB0byBXZWJDb3JlOjpNb3VzZUJ1dHRv
bgorICAgIGlmIChtZXYuYnV0dG9uKCkgIT0gTm9CdXR0b24pCisgICAgICAgIGFjY2VwdGVkID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChtZXYpOworICAgIGV2
LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbmV3
Tm9kZTsKKyAgICBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
RnJhbWUoKTsKKyAgICBpZiAoRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IGZvY3VzZWRGcmFt
ZSA/IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKSA6IDApCisgICAgICAgIG5ld05vZGUgPSBmb2N1
c2VkRG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50KCk7CisKKyAgICBpZiAobmV3Tm9kZSAmJiBvbGRO
b2RlICE9IG5ld05vZGUpCisgICAgICAgIGNsaWNrQ2F1c2VkRm9jdXMgPSB0cnVlOworfQorCit2
b2lkIFFXZWJQYWdlQWRhcHRlcjo6bW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50ICpl
dikKK3sKKyAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZy
YW1lOworICAgIGlmICghZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9v
bCBhY2NlcHRlZCA9IGZhbHNlOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBtZXYgPSBjb252ZXJ0
TW91c2VFdmVudChldiwgMik7CisgICAgLy8gaWdub3JlIHRoZSBldmVudCBpZiB3ZSBjYW4ndCBt
YXAgUXQncyBtb3VzZSBidXR0b25zIHRvIFdlYkNvcmU6Ok1vdXNlQnV0dG9uCisgICAgaWYgKG1l
di5idXR0b24oKSAhPSBOb0J1dHRvbikKKyAgICAgICAgYWNjZXB0ZWQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1ldik7CisgICAgZXYtPnNldEFjY2VwdGVk
KGFjY2VwdGVkKTsKKworICAgIHRyaXBsZUNsaWNrVGltZXIuc3RhcnQocUd1aUFwcC0+c3R5bGVI
aW50cygpLT5tb3VzZURvdWJsZUNsaWNrSW50ZXJ2YWwoKSwgaGFuZGxlKCkpOworICAgIHRyaXBs
ZUNsaWNrID0gUVBvaW50Rihldi0+cG9zKCkpLnRvUG9pbnQoKTsKK30KKwordm9pZCBRV2ViUGFn
ZUFkYXB0ZXI6Om1vdXNlVHJpcGxlQ2xpY2tFdmVudChRTW91c2VFdmVudCAqZXYpCit7CisgICAg
V2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZTsKKyAgICBp
ZiAoIWZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgYWNjZXB0ZWQg
PSBmYWxzZTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWV2ID0gY29udmVydE1vdXNlRXZlbnQo
ZXYsIDMpOworICAgIC8vIGlnbm9yZSB0aGUgZXZlbnQgaWYgd2UgY2FuJ3QgbWFwIFF0J3MgbW91
c2UgYnV0dG9ucyB0byBXZWJDb3JlOjpNb3VzZUJ1dHRvbgorICAgIGlmIChtZXYuYnV0dG9uKCkg
IT0gTm9CdXR0b24pCisgICAgICAgIGFjY2VwdGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUHJlc3NFdmVudChtZXYpOworICAgIGV2LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7
Cit9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjptb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVu
dCAqZXYpCit7CisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lQWRhcHRlcigp
LT5mcmFtZTsKKyAgICBpZiAoIWZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGJvb2wgYWNjZXB0ZWQgPSBmYWxzZTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWV2ID0gY29u
dmVydE1vdXNlRXZlbnQoZXYsIDApOworICAgIC8vIGlnbm9yZSB0aGUgZXZlbnQgaWYgd2UgY2Fu
J3QgbWFwIFF0J3MgbW91c2UgYnV0dG9ucyB0byBXZWJDb3JlOjpNb3VzZUJ1dHRvbgorICAgIGlm
IChtZXYuYnV0dG9uKCkgIT0gTm9CdXR0b24pCisgICAgICAgIGFjY2VwdGVkID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1ldik7CisgICAgZXYtPnNldEFj
Y2VwdGVkKGFjY2VwdGVkKTsKKworICAgIGhhbmRsZVNvZnR3YXJlSW5wdXRQYW5lbChldi0+YnV0
dG9uKCksIFFQb2ludEYoZXYtPnBvcygpKS50b1BvaW50KCkpOworfQorCit2b2lkIFFXZWJQYWdl
QWRhcHRlcjo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRvbiBidXR0b24s
IGNvbnN0IFFQb2ludCYgcG9zKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChjbGllbnQgJiYgY2xpZW50LT5pbnB1dE1ldGhvZEVuYWJsZWQoKQorICAg
ICAgICAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKQorICAgICAgICAgICAg
JiYgYnV0dG9uID09IFF0OjpMZWZ0QnV0dG9uICYmIHFHdWlBcHAtPnByb3BlcnR5KCJhdXRvU2lw
RW5hYmxlZCIpLnRvQm9vbCgpKSB7CisgICAgICAgIGlmICghY2xpY2tDYXVzZWRGb2N1cyB8fCBy
ZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKCkpIHsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1l
LT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0
LmlzQ29udGVudEVkaXRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICBRRXZlbnQgZXZlbnQoUUV2
ZW50OjpSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKTsKKyAgICAgICAgICAgICAgICBRR3VpQXBw
bGljYXRpb246OnNlbmRFdmVudChjbGllbnQtPm93bmVyV2lkZ2V0KCksICZldmVudCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGlja0NhdXNlZEZvY3VzID0gZmFs
c2U7Cit9CisKKyNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVAordm9pZCBRV2ViUGFnZUFkYXB0ZXI6
OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQgKmV2LCBpbnQgd2hlZWxTY3JvbGxMaW5lcykKK3sKKyAg
ICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lOworICAg
IGlmICghZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGxhdGZvcm1XaGVl
bEV2ZW50IHBldiA9IGNvbnZlcnRXaGVlbEV2ZW50KGV2LCB3aGVlbFNjcm9sbExpbmVzKTsKKyAg
ICBib29sIGFjY2VwdGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZVdoZWVsRXZlbnQo
cGV2KTsKKyAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOworfQorI2VuZGlmIC8vIFFUX05P
X1dIRUVMRVZFTlQKKworI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAorCitRdDo6RHJvcEFjdGlv
biBRV2ViUGFnZUFkYXB0ZXI6OmRyYWdFbnRlcmVkKGNvbnN0IFFNaW1lRGF0YSAqZGF0YSwgY29u
c3QgUVBvaW50ICZwb3MsIFF0OjpEcm9wQWN0aW9ucyBwb3NzaWJsZUFjdGlvbnMpCit7CisgICAg
RHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YSwgcG9zLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRv
RHJhZ09wKHBvc3NpYmxlQWN0aW9ucykpOworICAgIHJldHVybiBkcmFnT3BUb0Ryb3BBY3Rpb24o
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZCgmZHJhZ0RhdGEpLm9wZXJhdGlvbik7
Cit9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpkcmFnTGVhdmVFdmVudCgpCit7CisgICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoMCwgSW50UG9pbnQoKSwgUUN1cnNvcjo6cG9zKCksIERyYWdPcGVyYXRp
b25Ob25lKTsKKyAgICBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoJmRyYWdEYXRh
KTsKK30KKworUXQ6OkRyb3BBY3Rpb24gUVdlYlBhZ2VBZGFwdGVyOjpkcmFnVXBkYXRlZChjb25z
dCBRTWltZURhdGEgKmRhdGEsIGNvbnN0IFFQb2ludCAmcG9zLCBRdDo6RHJvcEFjdGlvbnMgcG9z
c2libGVBY3Rpb25zKQoreworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRhdGEsIHBvcywgUUN1cnNv
cjo6cG9zKCksIGRyb3BBY3Rpb25Ub0RyYWdPcChwb3NzaWJsZUFjdGlvbnMpKTsKKyAgICByZXR1
cm4gZHJhZ09wVG9Ecm9wQWN0aW9uKHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQo
JmRyYWdEYXRhKS5vcGVyYXRpb24pOworfQorCitib29sIFFXZWJQYWdlQWRhcHRlcjo6cGVyZm9y
bURyYWcoY29uc3QgUU1pbWVEYXRhICpkYXRhLCBjb25zdCBRUG9pbnQgJnBvcywgUXQ6OkRyb3BB
Y3Rpb25zIHBvc3NpYmxlQWN0aW9ucykKK3sKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShkYXRhLCBw
b3MsIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3AocG9zc2libGVBY3Rpb25zKSk7
CisgICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkucGVyZm9ybURyYWcoJmRyYWdEYXRh
KTsKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0
aG9kRXZlbnQgKmV2KQoreworICAgIFdlYkNvcmU6OkZyYW1lJiBmcmFtZSA9IHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYkNvcmU6OkVkaXRvciYg
ZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CisKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpIHsK
KyAgICAgICAgZXYtPmlnbm9yZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTm9k
ZSogbm9kZSA9IDA7CisgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKSkKKyAgICAgICAgbm9kZSA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1l
bnQoKS0+ZGVwcmVjYXRlZFNoYWRvd0FuY2VzdG9yTm9kZSgpOworCisgICAgVmVjdG9yPENvbXBv
c2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOworICAgIGJvb2wgaGFzU2VsZWN0aW9uID0gZmFs
c2U7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2LT5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgY29uc3QgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSYgYSA9IGV2
LT5hdHRyaWJ1dGVzKCkuYXQoaSk7CisgICAgICAgIHN3aXRjaCAoYS50eXBlKSB7CisgICAgICAg
IGNhc2UgUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQ6IHsKKyAgICAgICAgICAgIFFUZXh0
Q2hhckZvcm1hdCB0ZXh0Q2hhckZvcm1hdCA9IGEudmFsdWUudmFsdWU8UVRleHRGb3JtYXQ+KCku
dG9DaGFyRm9ybWF0KCk7CisgICAgICAgICAgICBRQ29sb3IgcWNvbG9yID0gdGV4dENoYXJGb3Jt
YXQudW5kZXJsaW5lQ29sb3IoKTsKKyAgICAgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBv
c2l0aW9uVW5kZXJsaW5lKHFNaW4oYS5zdGFydCwgKGEuc3RhcnQgKyBhLmxlbmd0aCkpLCBxTWF4
KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSwgQ29sb3IobWFrZVJHQkEocWNvbG9yLnJl
ZCgpLCBxY29sb3IuZ3JlZW4oKSwgcWNvbG9yLmJsdWUoKSwgcWNvbG9yLmFscGhhKCkpKSwgZmFs
c2UpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUUlucHV0
TWV0aG9kRXZlbnQ6OkN1cnNvcjogeworICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0
Q2FyZXRWaXNpYmxlKGEubGVuZ3RoKTsgLy8gaWYgbGVuZ3RoIGlzIDAgY3Vyc29yIGlzIGludmlz
aWJsZQorICAgICAgICAgICAgaWYgKGEubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIFJl
bmRlck9iamVjdCogY2FyZXRSZW5kZXJlciA9IGZyYW1lLnNlbGVjdGlvbigpLmNhcmV0UmVuZGVy
ZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FyZXRSZW5kZXJlcikgeworICAgICAgICAgICAg
ICAgICAgICBRQ29sb3IgcWNvbG9yID0gYS52YWx1ZS52YWx1ZTxRQ29sb3I+KCk7CisgICAgICAg
ICAgICAgICAgICAgIGNhcmV0UmVuZGVyZXItPnN0eWxlKCktPnNldENvbG9yKENvbG9yKG1ha2VS
R0JBKHFjb2xvci5yZWQoKSwgcWNvbG9yLmdyZWVuKCksIHFjb2xvci5ibHVlKCksIHFjb2xvci5h
bHBoYSgpKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVj
dGlvbjogeworICAgICAgICAgICAgaGFzU2VsZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIC8v
IEEgc2VsZWN0aW9uIGluIHRoZSBpbnB1dE1ldGhvZEV2ZW50IGlzIGFsd2F5cyByZWZsZWN0ZWQg
aW4gdGhlIHZpc2libGUgdGV4dAorICAgICAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKSkKKyAgICAgICAgICAg
ICAgICAgICAgdG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKS0+c2V0U2VsZWN0aW9u
UmFuZ2UocU1pbihhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgoYS5zdGFydCwg
KGEuc3RhcnQgKyBhLmxlbmd0aCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KCFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBlZGl0b3Iu
c2V0Q29tcG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJsaW5lcywgcU1pbihhLnN0
YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgoYS5zdGFydCwgKGEuc3RhcnQgKyBhLmxl
bmd0aCkpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGFy
ZSBpbiB0aGUgbWlkZGxlIG9mIGEgY29tcG9zaXRpb24sIGFuIGVtcHR5IHByZS1lZGl0IHN0cmlu
ZyBhbmQgYSBzZWxlY3Rpb24gb2YgemVybworICAgICAgICAgICAgICAgIC8vIGNhbmNlbHMgdGhl
IGN1cnJlbnQgY29tcG9zaXRpb24KKyAgICAgICAgICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBv
c2l0aW9uKCkgJiYgIShhLnN0YXJ0ICsgYS5sZW5ndGgpKQorICAgICAgICAgICAgICAgICAgICBl
ZGl0b3Iuc2V0Q29tcG9zaXRpb24oUVN0cmluZygpLCB1bmRlcmxpbmVzLCAwLCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChub2RlICYm
IGV2LT5yZXBsYWNlbWVudExlbmd0aCgpID4gMCkgeworICAgICAgICBpbnQgY3Vyc29yUG9zID0g
ZnJhbWUuc2VsZWN0aW9uKCkuZXh0ZW50KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CisgICAg
ICAgIGludCBzdGFydCA9IGN1cnNvclBvcyArIGV2LT5yZXBsYWNlbWVudFN0YXJ0KCk7CisgICAg
ICAgIGlmIChpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KG5vZGUpKQorICAgICAgICAgICAg
dG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKS0+c2V0U2VsZWN0aW9uUmFuZ2Uoc3Rh
cnQsIHN0YXJ0ICsgZXYtPnJlcGxhY2VtZW50TGVuZ3RoKCkpOworICAgICAgICAvLyBDb21taXQg
cmVnYXJkbGVzcyBvZiB3aGV0aGVyIGNvbW1pdFN0cmluZyBpcyBlbXB0eSwgdG8gZ2V0IHJpZCBv
ZiBzZWxlY3Rpb24uCisgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oZXYtPmNvbW1p
dFN0cmluZygpKTsKKyAgICB9IGVsc2UgaWYgKCFldi0+Y29tbWl0U3RyaW5nKCkuaXNFbXB0eSgp
KSB7CisgICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAgIGVk
aXRvci5jb25maXJtQ29tcG9zaXRpb24oZXYtPmNvbW1pdFN0cmluZygpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZWRpdG9yLmluc2VydFRleHQoZXYtPmNvbW1pdFN0cmluZygpLCAwKTsK
KyAgICB9IGVsc2UgaWYgKCFoYXNTZWxlY3Rpb24gJiYgIWV2LT5wcmVlZGl0U3RyaW5nKCkuaXNF
bXB0eSgpKQorICAgICAgICBlZGl0b3Iuc2V0Q29tcG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmco
KSwgdW5kZXJsaW5lcywgMCwgMCk7CisgICAgZWxzZSBpZiAoZXYtPnByZWVkaXRTdHJpbmcoKS5p
c0VtcHR5KCkgJiYgZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCisgICAgICAgIGVkaXRvci5jb25m
aXJtQ29tcG9zaXRpb24oU3RyaW5nKCkpOworCisgICAgZXYtPmFjY2VwdCgpOworfQorCitRVmFy
aWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVl
cnkgcHJvcGVydHkpIGNvbnN0Cit7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IFFWYXJpYW50KCk7CisKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0
b3IoKTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAwOworICAgIFJlbmRlclRleHRD
b250cm9sKiByZW5kZXJUZXh0Q29udHJvbCA9IDA7CisKKyAgICBpZiAoZnJhbWUtPnNlbGVjdGlv
bigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKKyAgICAgICAgcmVuZGVyZXIgPSBmcmFtZS0+c2Vs
ZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpLT5kZXByZWNhdGVkU2hhZG93QW5jZXN0b3JO
b2RlKCktPnJlbmRlcmVyKCk7CisKKyAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzVGV4
dENvbnRyb2woKSkKKyAgICAgICAgcmVuZGVyVGV4dENvbnRyb2wgPSB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKTsKKworICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBjYXNlIFF0OjpJ
bU1pY3JvRm9jdXM6IHsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUt
PnZpZXcoKTsKKyAgICAgICAgaWYgKHZpZXcgJiYgdmlldy0+bmVlZHNMYXlvdXQoKSkgeworICAg
ICAgICAgICAgLy8gV2UgY2FuJ3QgYWNjZXNzIGFic29sdXRlQ2FyZXRCb3VuZHMoKSB3aGlsZSB0
aGUgdmlldyBuZWVkcyB0byBsYXlvdXQuCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gUVZhcmlhbnQodmlldy0+Y29udGVudHNUb1dpbmRv
dyhmcmFtZS0+c2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygpKSk7CisgICAgfQorICAg
IGNhc2UgUXQ6OkltRm9udDogeworICAgICAgICBpZiAocmVuZGVyVGV4dENvbnRyb2wpIHsKKyAg
ICAgICAgICAgIFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSA9IHJlbmRlclRleHRDb250cm9sLT5z
dHlsZSgpOworICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50KFFGb250KHJlbmRlclN0eWxlLT5m
b250KCkuc3ludGhldGljRm9udCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFFWYXJp
YW50KFFGb250KCkpOworICAgIH0KKyAgICBjYXNlIFF0OjpJbUN1cnNvclBvc2l0aW9uOiB7Cisg
ICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBR
VmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCkuZW5kKCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCkp
OworICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLmV4dGVudCgpLm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICB9CisgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGlu
Z1RleHQ6IHsKKyAgICAgICAgaWYgKHJlbmRlclRleHRDb250cm9sKSB7CisgICAgICAgICAgICBR
U3RyaW5nIHRleHQgPSByZW5kZXJUZXh0Q29udHJvbC0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgp
LnZhbHVlKCk7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLmNvbXBv
c2l0aW9uUmFuZ2UoKTsKKyAgICAgICAgICAgIGlmIChyYW5nZSkKKyAgICAgICAgICAgICAgICB0
ZXh0LnJlbW92ZShyYW5nZS0+c3RhcnRQb3NpdGlvbigpLm9mZnNldEluQ29udGFpbmVyTm9kZSgp
LCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQodGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFFWYXJpYW50
KCk7CisgICAgfQorICAgIGNhc2UgUXQ6OkltQ3VycmVudFNlbGVjdGlvbjogeworICAgICAgICBp
ZiAoIWVkaXRvci5oYXNDb21wb3NpdGlvbigpICYmIHJlbmRlclRleHRDb250cm9sKSB7CisgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc3RhcnQoKS5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBmcmFtZS0+c2VsZWN0aW9uKCku
ZW5kKCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CisgICAgICAgICAgICBpZiAoZW5kID4gc3Rh
cnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50KFFTdHJpbmcocmVuZGVyVGV4dENv
bnRyb2wtPnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS52YWx1ZSgpKS5taWQoc3RhcnQsIGVuZCAt
IHN0YXJ0KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisKKyAgICB9
CisgICAgY2FzZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogeworICAgICAgICBpZiAoZWRpdG9yLmhh
c0NvbXBvc2l0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVj
dGlvbigpLnN0YXJ0KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICByZXR1cm4g
UVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLmJhc2UoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUo
KSk7CisgICAgfQorICAgIGNhc2UgUXQ6OkltTWF4aW11bVRleHRMZW5ndGg6IHsKKyAgICAgICAg
aWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAgICAgICAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWRFbGVt
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNIVE1MSW5wdXRFbGVtZW50KGZyYW1lLT5k
b2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpKSkgeworICAgICAgICAgICAgICAgICAgICBIVE1M
SW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoZnJhbWUtPmRv
Y3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UVZhcmlhbnQoaW5wdXRFbGVtZW50LT5tYXhMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50KEhUTUxJbnB1dEVsZW1l
bnQ6Om1heGltdW1MZW5ndGgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBRVmFyaWFudCgw
KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgICAg
fQorfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBkb3Vi
bGUgZGVmZXJyZWRSZXBhaW50RGVsYXk7CisgICAgZG91YmxlIGluaXRpYWxEZWZlcnJlZFJlcGFp
bnREZWxheUR1cmluZ0xvYWRpbmc7CisgICAgZG91YmxlIG1heERlZmVycmVkUmVwYWludERlbGF5
RHVyaW5nTG9hZGluZzsKKyAgICBkb3VibGUgZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnRE
dXJpbmdMb2FkaW5nOworfSBRUmVwYWludFRocm90dGxpbmdQcmVzZXQ7CisKK3ZvaWQgUVdlYlBh
Z2VBZGFwdGVyOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudChRT2JqZWN0KiBvYmosIFFEeW5h
bWljUHJvcGVydHlDaGFuZ2VFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5wcm9wZXJ0
eU5hbWUoKSA9PSAiX3Ffdmlld01vZGUiKSB7CisgICAgICAgIHBhZ2UtPnNldFZpZXdNb2RlKFBh
Z2U6OnN0cmluZ1RvVmlld01vZGUob2JqLT5wcm9wZXJ0eSgiX3Ffdmlld01vZGUiKS50b1N0cmlu
ZygpKSk7CisgICAgfSBlbHNlIGlmIChldmVudC0+cHJvcGVydHlOYW1lKCkgPT0gIl9xX0hUTUxU
b2tlbml6ZXJDaHVua1NpemUiKSB7CisgICAgICAgIGludCBjaHVua1NpemUgPSBvYmotPnByb3Bl
cnR5KCJfcV9IVE1MVG9rZW5pemVyQ2h1bmtTaXplIikudG9JbnQoKTsKKyAgICAgICAgcGFnZS0+
c2V0Q3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZShjaHVua1NpemUpOworICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnByb3BlcnR5TmFtZSgpID09ICJfcV9IVE1MVG9rZW5pemVyVGltZURlbGF5Iikg
eworICAgICAgICBkb3VibGUgdGltZURlbGF5ID0gb2JqLT5wcm9wZXJ0eSgiX3FfSFRNTFRva2Vu
aXplclRpbWVEZWxheSIpLnRvRG91YmxlKCk7CisgICAgICAgIHBhZ2UtPnNldEN1c3RvbUhUTUxU
b2tlbml6ZXJUaW1lRGVsYXkodGltZURlbGF5KTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5wcm9w
ZXJ0eU5hbWUoKSA9PSAiX3FfUmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheSIp
IHsKKyAgICAgICAgZG91YmxlIHAgPSBvYmotPnByb3BlcnR5KCJfcV9SZXBhaW50VGhyb3R0bGlu
Z0RlZmVycmVkUmVwYWludERlbGF5IikudG9Eb3VibGUoKTsKKyAgICAgICAgRnJhbWVWaWV3Ojpz
ZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVycmVkUmVwYWludERlbGF5KHApOworICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnByb3BlcnR5TmFtZSgpID09ICJfcV9SZXBhaW50VGhyb3R0bGluZ25Jbml0aWFs
RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nIikgeworICAgICAgICBkb3VibGUgcCA9
IG9iai0+cHJvcGVydHkoIl9xX1JlcGFpbnRUaHJvdHRsaW5nbkluaXRpYWxEZWZlcnJlZFJlcGFp
bnREZWxheUR1cmluZ0xvYWRpbmciKS50b0RvdWJsZSgpOworICAgICAgICBGcmFtZVZpZXc6OnNl
dFJlcGFpbnRUaHJvdHRsaW5nbkluaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRp
bmcocCk7CisgICAgfSBlbHNlIGlmIChldmVudC0+cHJvcGVydHlOYW1lKCkgPT0gIl9xX1JlcGFp
bnRUaHJvdHRsaW5nTWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nIikgeworICAg
ICAgICBkb3VibGUgcCA9IG9iai0+cHJvcGVydHkoIl9xX1JlcGFpbnRUaHJvdHRsaW5nTWF4RGVm
ZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nIikudG9Eb3VibGUoKTsKKyAgICAgICAgRnJh
bWVWaWV3OjpzZXRSZXBhaW50VGhyb3R0bGluZ01heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5n
TG9hZGluZyhwKTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5wcm9wZXJ0eU5hbWUoKSA9PSAiX3Ff
UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xvYWRp
bmciKSB7CisgICAgICAgIGRvdWJsZSBwID0gb2JqLT5wcm9wZXJ0eSgiX3FfUmVwYWludFRocm90
dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmciKS50b0RvdWJs
ZSgpOworICAgICAgICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBh
aW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKHApOworICAgIH0gZWxzZSBpZiAoZXZlbnQt
PnByb3BlcnR5TmFtZSgpID09ICJfcV9SZXBhaW50VGhyb3R0bGluZ1ByZXNldCIpIHsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IFFSZXBhaW50VGhyb3R0bGluZ1ByZXNldCBwcmVzZXRzW10gPSB7Cisg
ICAgICAgICAgICB7ICAgIk5vVGhyb3R0bGluZyIsICAgICAwLCAgICAgIDAsICAgICAgMCwgICAg
ICAwIH0sCisgICAgICAgICAgICB7ICAgIkxlZ2FjeSIsICAgICAgIDAuMDI1LCAgICAgIDAsICAg
IDIuNSwgICAgMC41IH0sCisgICAgICAgICAgICB7ICAgIk1pbmltYWwiLCAgICAgICAwLjAxLCAg
ICAgIDAsICAgICAgMSwgICAgMC4yIH0sCisgICAgICAgICAgICB7ICAgIk1lZGl1bSIsICAgICAg
IDAuMDI1LCAgICAgIDEsICAgICAgNSwgICAgMC41IH0sCisgICAgICAgICAgICB7ICAgIkhlYXZ5
IiwgICAgICAgICAgMC4xLCAgICAgIDIsICAgICAxMCwgICAgICAxIH0KKyAgICAgICAgfTsKKwor
ICAgICAgICBRU3RyaW5nIHAgPSBvYmotPnByb3BlcnR5KCJfcV9SZXBhaW50VGhyb3R0bGluZ1By
ZXNldCIpLnRvU3RyaW5nKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9m
KHByZXNldHMpIC8gc2l6ZW9mKHByZXNldHNbMF0pOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChw
ID09IFFMYXRpbjFTdHJpbmcocHJlc2V0c1tpXS5uYW1lKSkgeworICAgICAgICAgICAgICAgIEZy
YW1lVmlldzo6c2V0UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheShwcmVzZXRz
W2ldLmRlZmVycmVkUmVwYWludERlbGF5KTsKKyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnNl
dFJlcGFpbnRUaHJvdHRsaW5nbkluaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRp
bmcocHJlc2V0c1tpXS5pbml0aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nKTsK
KyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nTWF4RGVmZXJy
ZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nKHByZXNldHNbaV0ubWF4RGVmZXJyZWRSZXBhaW50
RGVsYXlEdXJpbmdMb2FkaW5nKTsKKyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnNldFJlcGFp
bnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKHBy
ZXNldHNbaV0uZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxz
ZSBpZiAoZXZlbnQtPnByb3BlcnR5TmFtZSgpID09ICJfcV93ZWJJbnNwZWN0b3JTZXJ2ZXJQb3J0
IikgeworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIFFWYXJpYW50IHBvcnQgPSBvYmot
PnByb3BlcnR5KCJfcV93ZWJJbnNwZWN0b3JTZXJ2ZXJQb3J0Iik7CisgICAgICAgIGlmIChwb3J0
LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgSW5zcGVjdG9yU2VydmVyUXQqIGluc3BlY3RvclNl
cnZlciA9IEluc3BlY3RvclNlcnZlclF0OjpzZXJ2ZXIoKTsKKyAgICAgICAgICAgIGluc3BlY3Rv
clNlcnZlci0+bGlzdGVuKHBvcnQudG9JbnQoKSk7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnByb3BlcnR5TmFtZSgpID09ICJfcV9kZWFkRGVjb2RlZERhdGFEZWxl
dGlvbkludGVydmFsIikgeworICAgICAgICBkb3VibGUgaW50ZXJ2YWwgPSBvYmotPnByb3BlcnR5
KCJfcV9kZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsIikudG9Eb3VibGUoKTsKKyAgICAg
ICAgbWVtb3J5Q2FjaGUoKS0+c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChpbnRl
cnZhbCk7CisgICAgfSAgZWxzZSBpZiAoZXZlbnQtPnByb3BlcnR5TmFtZSgpID09ICJfcV91c2VO
YXRpdmVWaXJ0dWFsS2V5QXNET01LZXkiKSB7CisgICAgICAgIG1fdXNlTmF0aXZlVmlydHVhbEtl
eUFzRE9NS2V5ID0gb2JqLT5wcm9wZXJ0eSgiX3FfdXNlTmF0aXZlVmlydHVhbEtleUFzRE9NS2V5
IikudG9Cb29sKCk7CisgICAgfQorfQorCisjZW5kaWYgLy8gUVRfTk9fRFJBR0FORERST1AKKwor
I2RlZmluZSBNQVBfQUNUSU9OX0ZST01fVkFMVUUoTmFtZSwgVmFsdWUpIFwKKyAgICBjYXNlIFZh
bHVlOiByZXR1cm4gUVdlYlBhZ2VBZGFwdGVyOjpOYW1lCisKK3N0YXRpYyBRV2ViUGFnZUFkYXB0
ZXI6Ok1lbnVBY3Rpb24gYWRhcHRlckFjdGlvbkZvckNvbnRleHRNZW51QWN0aW9uKFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAg
ICAgICBGT1JfRUFDSF9NQVBQRURfTUVOVV9BQ1RJT04oTUFQX0FDVElPTl9GUk9NX1ZBTFVFLCBT
RU1JQ09MT05fU0VQQVJBVE9SKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6CisgICAgICAgIHJldHVybiBR
V2ViUGFnZUFkYXB0ZXI6Okluc3BlY3RFbGVtZW50OworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6Ok5vQWN0aW9u
OworfQorCitRTGlzdDxNZW51SXRlbT4gZGVzY3JpcHRpb25Gb3JQbGF0Zm9ybU1lbnUoY29uc3Qg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zLCBQYWdlKiBwYWdlKQoreworICAgIFFMaXN0
PE1lbnVJdGVtPiBpdGVtRGVzY3JpcHRpb25zOworICAgIGlmICghaXRlbXMuc2l6ZSgpKQorICAg
ICAgICByZXR1cm4gaXRlbURlc2NyaXB0aW9uczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0
ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IENvbnRleHRNZW51SXRlbSAmaXRlbSA9
IGl0ZW1zLmF0KGkpOworICAgICAgICBNZW51SXRlbSBkZXNjcmlwdGlvbjsKKyAgICAgICAgc3dp
dGNoIChpdGVtLnR5cGUoKSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlv
blR5cGU6IC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBjYXNlIFdlYkNvcmU6OkFjdGlvblR5
cGU6IHsKKyAgICAgICAgICAgIFFXZWJQYWdlQWRhcHRlcjo6TWVudUFjdGlvbiBhY3Rpb24gPSBh
ZGFwdGVyQWN0aW9uRm9yQ29udGV4dE1lbnVBY3Rpb24oaXRlbS5hY3Rpb24oKSk7CisgICAgICAg
ICAgICBpZiAoYWN0aW9uID4gUVdlYlBhZ2VBZGFwdGVyOjpOb0FjdGlvbikgeworICAgICAgICAg
ICAgICAgIGRlc2NyaXB0aW9uLnR5cGUgPSBNZW51SXRlbTo6QWN0aW9uOworICAgICAgICAgICAg
ICAgIGRlc2NyaXB0aW9uLmFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgICAgICAgICBDb250ZXh0
TWVudUl0ZW0gaXQoaXRlbSk7CisgICAgICAgICAgICAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCkuY2hlY2tPckVuYWJsZUlmTmVlZGVkKGl0KTsKKyAgICAgICAgICAgICAgICBpZiAo
aXQuZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi50cmFpdHMgfD0g
TWVudUl0ZW06OkVuYWJsZWQ7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdl
YkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzY3Jp
cHRpb24udHJhaXRzIHw9IE1lbnVJdGVtOjpDaGVja2FibGU7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpdC5jaGVja2VkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi50
cmFpdHMgfD0gTWVudUl0ZW06OkNoZWNrZWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpTZXBhcmF0b3JUeXBlOgorICAgICAgICAgICAgZGVzY3JpcHRpb24udHlwZSA9IE1lbnVJdGVt
OjpTZXBhcmF0b3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpT
dWJtZW51VHlwZTogeworICAgICAgICAgICAgZGVzY3JpcHRpb24udHlwZSA9IE1lbnVJdGVtOjpT
dWJNZW51OworICAgICAgICAgICAgZGVzY3JpcHRpb24uc3ViTWVudSA9IGRlc2NyaXB0aW9uRm9y
UGxhdGZvcm1NZW51KGl0ZW0uc3ViTWVudUl0ZW1zKCksIHBhZ2UpOworICAgICAgICAgICAgZGVz
Y3JpcHRpb24uc3ViTWVudVRpdGxlID0gaXRlbS50aXRsZSgpOworICAgICAgICAgICAgLy8gRG9u
J3QgYXBwZW5kIGVtcHR5IHN1Ym1lbnUgZGVzY3JpcHRpb25zLgorICAgICAgICAgICAgaWYgKGRl
c2NyaXB0aW9uLnN1Yk1lbnUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPiBNZW51
SXRlbTo6Tm9UeXBlKQorICAgICAgICAgICAgaXRlbURlc2NyaXB0aW9ucy5hcHBlbmQoZGVzY3Jp
cHRpb24pOworICAgIH0KKyAgICByZXR1cm4gaXRlbURlc2NyaXB0aW9uczsKK30KKworUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlKiBRV2ViUGFnZUFkYXB0ZXI6OnVwZGF0ZVBvc2l0aW9uRGVwZW5k
ZW50TWVudUFjdGlvbnMoY29uc3QgUVBvaW50JiBwb3MsIFFCaXRBcnJheSogdmlzaXRlZFdlYkFj
dGlvbnMpCit7CisgICAgQVNTRVJUKHZpc2l0ZWRXZWJBY3Rpb25zKTsKKyAgICBXZWJDb3JlOjpG
cmFtZSYgZm9jdXNlZEZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmb2N1c2VkRnJhbWUuZXZlbnRI
YW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQoZm9jdXNlZEZyYW1lLnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhwb3MpKTsKKyAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5zZXRI
aXRUZXN0UmVzdWx0KHJlc3VsdCk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChw
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmVuYWJsZWQoKSkKKyAgICAgICAgcGFnZS0+Y29u
dGV4dE1lbnVDb250cm9sbGVyKCkuYWRkSW5zcGVjdEVsZW1lbnRJdGVtKCk7CisjZW5kaWYKKwor
ICAgIFdlYkNvcmU6OkNvbnRleHRNZW51KiB3ZWJjb3JlTWVudSA9IHBhZ2UtPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLmNvbnRleHRNZW51KCk7CisgICAgUUxpc3Q8TWVudUl0ZW0+IGl0ZW1EZXNj
cmlwdGlvbnM7CisgICAgaWYgKGNsaWVudCAmJiB3ZWJjb3JlTWVudSkKKyAgICAgICAgaXRlbURl
c2NyaXB0aW9ucyA9IGRlc2NyaXB0aW9uRm9yUGxhdGZvcm1NZW51KHdlYmNvcmVNZW51LT5pdGVt
cygpLCBwYWdlKTsKKyAgICBjcmVhdGVBbmRTZXRDdXJyZW50Q29udGV4dE1lbnUoaXRlbURlc2Ny
aXB0aW9ucywgdmlzaXRlZFdlYkFjdGlvbnMpOworICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgUVdlYkhpdFRlc3RSZXN1bHRQcml2
YXRlKHJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4dHJhY3RDb250ZW50VHlwZUZyb21IYXNo
KGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMsIFFTdHJpbmdMaXN0KiBsaXN0KQoreworICAg
IGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSGFzaFNldDxTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBlbmRJdCA9IHR5cGVzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHR5cGVzLmJlZ2luKCk7IGl0ICE9IGVuZEl0OyArK2l0KQor
ICAgICAgICAqbGlzdCA8PCAqaXQ7Cit9CisKK3N0YXRpYyB2b2lkIGV4dHJhY3RDb250ZW50VHlw
ZUZyb21QbHVnaW5WZWN0b3IoY29uc3QgVmVjdG9yPFBsdWdpblBhY2thZ2UqPiYgcGx1Z2lucywg
UVN0cmluZ0xpc3QqIGxpc3QpCit7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm47CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkgeworICAg
ICAgICBNSU1FVG9EZXNjcmlwdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGx1Z2luc1tp
XS0+bWltZVRvRGVzY3JpcHRpb25zKCkuYmVnaW4oKTsKKyAgICAgICAgTUlNRVRvRGVzY3JpcHRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBwbHVnaW5zW2ldLT5taW1lVG9EZXNjcmlwdGlv
bnMoKS5lbmQoKTsKKyAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAg
ICpsaXN0IDw8IGl0LT5rZXk7CisgICAgfQorfQorCitRU3RyaW5nTGlzdCBRV2ViUGFnZUFkYXB0
ZXI6OnN1cHBvcnRlZENvbnRlbnRUeXBlcygpIGNvbnN0Cit7CisgICAgUVN0cmluZ0xpc3QgbWlt
ZVR5cGVzOworCisgICAgZXh0cmFjdENvbnRlbnRUeXBlRnJvbUhhc2goTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSwgJm1pbWVUeXBlcyk7CisgICAgZXh0cmFj
dENvbnRlbnRUeXBlRnJvbUhhc2goTUlNRVR5cGVSZWdpc3RyeTo6Z2V0U3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMoKSwgJm1pbWVUeXBlcyk7CisgICAgaWYgKHBhZ2UtPnNldHRpbmdzKCkuYXJl
UGx1Z2luc0VuYWJsZWQoKSkKKyAgICAgICAgZXh0cmFjdENvbnRlbnRUeXBlRnJvbVBsdWdpblZl
Y3RvcihQbHVnaW5EYXRhYmFzZTo6aW5zdGFsbGVkUGx1Z2lucygpLT5wbHVnaW5zKCksICZtaW1l
VHlwZXMpOworCisgICAgcmV0dXJuIG1pbWVUeXBlczsKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0
ZXI6Ol9xX2NsZWFudXBMZWFrTWVzc2FnZXMoKQoreworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBO
ZWVkIHRoaXMgdG8gbWFrZSBsZWFrIG1lc3NhZ2VzIGFjY3VyYXRlLgorICAgIG1lbW9yeUNhY2hl
KCktPnNldENhcGFjaXRpZXMoMCwgMCwgMCk7CisjZW5kaWYKK30KKwordm9pZCBRV2ViUGFnZUFk
YXB0ZXI6Ol9xX29uTG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpCit7CisgICAgbV90b3RhbEJ5dGVz
ID0gcGFnZS0+cHJvZ3Jlc3MoKS50b3RhbFBhZ2VBbmRSZXNvdXJjZUJ5dGVzVG9Mb2FkKCk7Cisg
ICAgbV9ieXRlc1JlY2VpdmVkID0gcGFnZS0+cHJvZ3Jlc3MoKS50b3RhbEJ5dGVzUmVjZWl2ZWQo
KTsKK30KKworYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OnN1cHBvcnRzQ29udGVudFR5cGUoY29uc3Qg
UVN0cmluZyYgbWltZVR5cGUpIGNvbnN0Cit7CisgICAgY29uc3QgU3RyaW5nIHR5cGUgPSBtaW1l
VHlwZS50b0xvd2VyKCk7CisgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZSh0eXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlKHR5cGUpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChwYWdlLT5zZXR0aW5ncygpLmFyZVBsdWdpbnNFbmFibGVk
KCkKKyAgICAgICAgJiYgUGx1Z2luRGF0YWJhc2U6Omluc3RhbGxlZFBsdWdpbnMoKS0+aXNNSU1F
VHlwZVJlZ2lzdGVyZWQodHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6ZGlkU2hvd0luc3BlY3RvcigpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnNob3coKTsKKyNlbmRpZgorfQorCit2b2lkIFFXZWJQYWdlQWRhcHRlcjo6ZGlkQ2xvc2VJbnNw
ZWN0b3IoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5jbG9zZSgpOworI2VuZGlmCit9CisKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjp1
cGRhdGVBY3Rpb25JbnRlcm5hbChRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBj
b25zdCBjaGFyKiBjb21tYW5kTmFtZSwgYm9vbCogZW5hYmxlZCwgYm9vbCogY2hlY2tlZCkKK3sK
KyAgICBXZWJDb3JlOjpGcmFtZUxvYWRlciYgbG9hZGVyID0gbWFpbkZyYW1lQWRhcHRlcigpLT5m
cmFtZS0+bG9hZGVyKCk7CisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBwYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKTsKKworICAgIHN3aXRj
aCAoYWN0aW9uKSB7CisgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OkJhY2s6CisgICAgICAgICpl
bmFibGVkID0gcGFnZS0+Y2FuR29CYWNrT3JGb3J3YXJkKC0xKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OkZvcndhcmQ6CisgICAgICAgICplbmFibGVkID0gcGFn
ZS0+Y2FuR29CYWNrT3JGb3J3YXJkKDEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFXZWJQ
YWdlQWRhcHRlcjo6U3RvcDoKKyAgICAgICAgKmVuYWJsZWQgPSBsb2FkZXIuaXNMb2FkaW5nKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpSZWxvYWQ6CisgICAg
ICAgICplbmFibGVkID0gIWxvYWRlci5pc0xvYWRpbmcoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBRV2ViUGFnZUFkYXB0ZXI6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0OgorICAgIGNhc2Ug
UVdlYlBhZ2VBZGFwdGVyOjpTZXRUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6CisgICAgY2FzZSBR
V2ViUGFnZUFkYXB0ZXI6OlNldFRleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKKyAgICAgICAgKmVu
YWJsZWQgPSBlZGl0b3IuY2FuRWRpdCgpOworICAgICAgICAqY2hlY2tlZCA9IGZhbHNlOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OiB7CisKKyAgICAgICAgLy8gaWYgaXQncyBhbiBlZGl0
b3IgY29tbWFuZCwgbGV0IGl0cyBsb2dpYyBkZXRlcm1pbmUgc3RhdGUKKyAgICAgICAgaWYgKGNv
bW1hbmROYW1lKSB7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGVkaXRv
ci5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAgICAgICAgICAgICplbmFibGVkID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKKyAgICAgICAgICAgIGlmICgqZW5hYmxlZCkKKyAgICAgICAgICAgICAgICAq
Y2hlY2tlZCA9IGNvbW1hbmQuc3RhdGUoKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICpjaGVja2VkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIH0KK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdn
ZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFRlc3RS
ZXN1bHRQcml2YXRlKiBoaXRUZXN0UmVzdWx0LCBjb25zdCBjaGFyKiBjb21tYW5kTmFtZSwgYm9v
bCBlbmRUb0VuZFJlbG9hZCkKK3sKKyAgICBGcmFtZSYgZnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1l
LmVkaXRvcigpOworCisgICAgLy8gQ29udmVuaWVuY2UKKyAgICBRV2ViSGl0VGVzdFJlc3VsdFBy
aXZhdGUgaGl0VGVzdDsKKyAgICBpZiAoIWhpdFRlc3RSZXN1bHQpCisgICAgICAgIGhpdFRlc3RS
ZXN1bHQgPSAmaGl0VGVzdDsKKworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBPcGVu
TGluazoKKyAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IGhpdFRlc3RSZXN1bHQtPndl
YkNvcmVGcmFtZSkgeworICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLmxvYWRGcmFt
ZVJlcXVlc3QoZnJhbWVMb2FkUmVxdWVzdChoaXRUZXN0UmVzdWx0LT5saW5rVXJsLCB0YXJnZXRG
cmFtZSksIC8qbG9ja0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0ZvcndhcmRMaXN0Ki8gZmFs
c2UsIC8qZXZlbnQqLyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8vIGZhbGwgdGhyb3VnaAorICAg
IGNhc2UgT3BlbkxpbmtJbk5ld1dpbmRvdzoKKyAgICAgICAgb3Blbk5ld1dpbmRvdyhoaXRUZXN0
UmVzdWx0LT5saW5rVXJsLCAmZnJhbWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wZW5M
aW5rSW5UaGlzV2luZG93OgorICAgICAgICBmcmFtZS5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0
KGZyYW1lTG9hZFJlcXVlc3QoaGl0VGVzdFJlc3VsdC0+bGlua1VybCwgJmZyYW1lKSwgLypsb2Nr
SGlzdG9yeSovIGZhbHNlLCAvKmxvY2tCYWNrRm9yd2FyZExpc3QqLyBmYWxzZSwgLypldmVudCov
IDAsIC8qRm9ybVN0YXRlKi8gMCwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE9wZW5GcmFtZUluTmV3V2luZG93OiB7CisgICAgICAgIFVSTCB1cmwgPSBmcmFt
ZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpOworICAgICAgICBp
ZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnVybCgpOworICAgICAgICBvcGVuTmV3V2luZG93KHVybCwgJmZyYW1lKTsK
KyAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICBjYXNlIENvcHlMaW5rVG9DbGlwYm9hcmQ6
CisjaWYgZGVmaW5lZChRX1dTX1gxMSkKKyAgICAgICAgZWRpdG9yLmNvcHlVUkwoaGl0VGVzdFJl
c3VsdC0+bGlua1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQsICpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JHbG9iYWxTZWxlY3Rpb24oKSk7CisjZW5kaWYKKyAgICAgICAgZWRpdG9yLmNvcHlVUkwo
aGl0VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE9wZW5JbWFnZUluTmV3V2luZG93OgorICAgICAgICBvcGVuTmV3
V2luZG93KGhpdFRlc3RSZXN1bHQtPmltYWdlVXJsLCAmZnJhbWUpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIERvd25sb2FkSW1hZ2VUb0Rpc2s6CisgICAgICAgIGZyYW1lLmxvYWRlcigpLmNs
aWVudCgpLnN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KGhpdFRlc3RSZXN1
bHQtPmltYWdlVXJsLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBEb3dubG9hZExpbmtUb0Rpc2s6CisgICAgICAgIGZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KGhp
dFRlc3RSZXN1bHQtPmxpbmtVcmwsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJhY2s6CisgICAgICAgIHBhZ2UtPmdvQmFjaygp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcndhcmQ6CisgICAgICAgIHBhZ2UtPmdvRm9y
d2FyZCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0b3A6CisgICAgICAgIG1haW5GcmFt
ZUFkYXB0ZXIoKS0+ZnJhbWUtPmxvYWRlcigpLnN0b3BGb3JVc2VyQ2FuY2VsKCk7CisgICAgICAg
IHVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVs
b2FkOgorICAgICAgICBtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lLT5sb2FkZXIoKS5yZWxvYWQo
ZW5kVG9FbmRSZWxvYWQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU2V0VGV4dERpcmVj
dGlvbkRlZmF1bHQ6CisgICAgICAgIGVkaXRvci5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0VGV4dERp
cmVjdGlvbkxlZnRUb1JpZ2h0OgorICAgICAgICBlZGl0b3Iuc2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6CisgICAgICAgIGVkaXRvci5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBicmVh
azsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6IHsKKyAg
ICAgICAgQVNTRVJUKGhpdFRlc3RSZXN1bHQgIT0gJmhpdFRlc3QpOworICAgICAgICBwYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmluc3BlY3QoaGl0VGVzdFJlc3VsdC0+aW5uZXJOb25TaGFy
ZWROb2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgaWYgKGNvbW1hbmROYW1lKQorICAgICAgICAgICAgZWRpdG9yLmNvbW1hbmQoY29tbWFu
ZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK1FTdHJpbmcg
UVdlYlBhZ2VBZGFwdGVyOjpjb250ZXh0TWVudUl0ZW1UYWdGb3JBY3Rpb24oUVdlYlBhZ2VBZGFw
dGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgYm9vbCogY2hlY2thYmxlKSBjb25zdAoreworICAgIEFT
U0VSVChjaGVja2FibGUpOworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBPcGVuTGlu
azoKKyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCk7CisgICAgY2Fz
ZSBPcGVuTGlua0luTmV3V2luZG93OgorICAgICAgICByZXR1cm4gY29udGV4dE1lbnVJdGVtVGFn
T3BlbkxpbmtJbk5ld1dpbmRvdygpOworICAgIGNhc2UgT3BlbkZyYW1lSW5OZXdXaW5kb3c6Cisg
ICAgICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpOwor
ICAgIGNhc2UgT3BlbkxpbmtJblRoaXNXaW5kb3c6CisgICAgICAgIHJldHVybiBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGlua0luVGhpc1dpbmRvdygpOworCisgICAgY2FzZSBEb3dubG9hZExpbmtU
b0Rpc2s6CisgICAgICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rp
c2soKTsKKyAgICBjYXNlIENvcHlMaW5rVG9DbGlwYm9hcmQ6CisgICAgICAgIHJldHVybiBjb250
ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCk7CisKKyAgICBjYXNlIE9wZW5JbWFn
ZUluTmV3V2luZG93OgorICAgICAgICByZXR1cm4gY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdl
SW5OZXdXaW5kb3coKTsKKyAgICBjYXNlIERvd25sb2FkSW1hZ2VUb0Rpc2s6CisgICAgICAgIHJl
dHVybiBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCk7CisgICAgY2FzZSBD
b3B5SW1hZ2VUb0NsaXBib2FyZDoKKyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51SXRlbVRhZ0Nv
cHlJbWFnZVRvQ2xpcGJvYXJkKCk7CisgICAgY2FzZSBDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZDoK
KyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJk
KCk7CisKKyAgICBjYXNlIEN1dDoKKyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51SXRlbVRhZ0N1
dCgpOworICAgIGNhc2UgQ29weToKKyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51SXRlbVRhZ0Nv
cHkoKTsKKyAgICBjYXNlIFBhc3RlOgorICAgICAgICByZXR1cm4gY29udGV4dE1lbnVJdGVtVGFn
UGFzdGUoKTsKKyAgICBjYXNlIFNlbGVjdEFsbDoKKyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51
SXRlbVRhZ1NlbGVjdEFsbCgpOworCisgICAgY2FzZSBCYWNrOgorICAgICAgICByZXR1cm4gY29u
dGV4dE1lbnVJdGVtVGFnR29CYWNrKCk7CisgICAgY2FzZSBGb3J3YXJkOgorICAgICAgICByZXR1
cm4gY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCk7CisgICAgY2FzZSBSZWxvYWQ6CisgICAg
ICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKTsKKyAgICBjYXNlIFN0b3A6Cisg
ICAgICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCk7CisKKyAgICBjYXNlIFNldFRl
eHREaXJlY3Rpb25EZWZhdWx0OgorICAgICAgICByZXR1cm4gY29udGV4dE1lbnVJdGVtVGFnRGVm
YXVsdERpcmVjdGlvbigpOworICAgIGNhc2UgU2V0VGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0Ogor
ICAgICAgICAqY2hlY2thYmxlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHRNZW51SXRl
bVRhZ0xlZnRUb1JpZ2h0KCk7CisgICAgY2FzZSBTZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6
CisgICAgICAgICpjaGVja2FibGUgPSB0cnVlOworICAgICAgICByZXR1cm4gY29udGV4dE1lbnVJ
dGVtVGFnUmlnaHRUb0xlZnQoKTsKKworICAgIGNhc2UgVG9nZ2xlQm9sZDoKKyAgICAgICAgKmNo
ZWNrYWJsZSA9IHRydWU7CisgICAgICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCk7
CisgICAgY2FzZSBUb2dnbGVJdGFsaWM6CisgICAgICAgICpjaGVja2FibGUgPSB0cnVlOworICAg
ICAgICByZXR1cm4gY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCk7CisgICAgY2FzZSBUb2dnbGVV
bmRlcmxpbmU6CisgICAgICAgICpjaGVja2FibGUgPSB0cnVlOworICAgICAgICByZXR1cm4gY29u
dGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAg
IGNhc2UgSW5zcGVjdEVsZW1lbnQ6CisgICAgICAgIHJldHVybiBjb250ZXh0TWVudUl0ZW1UYWdJ
bnNwZWN0RWxlbWVudCgpOworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgfQorfQorCisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK3Zv
aWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXROb3RpZmljYXRpb25zQWxsb3dlZEZvckZyYW1lKFFXZWJG
cmFtZUFkYXB0ZXIqIGZyYW1lLCBib29sIGFsbG93ZWQpCit7CisgICAgTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5zZXROb3RpZmljYXRpb25z
QWxsb3dlZEZvckZyYW1lKGZyYW1lLT5mcmFtZSwgYWxsb3dlZCk7Cit9CisKK3ZvaWQgUVdlYlBh
Z2VBZGFwdGVyOjphZGROb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnQoKQoreworICAgIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+YWRkQ2xp
ZW50KCk7Cit9CisKKyNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KK2Jvb2wgUVdlYlBhZ2VB
ZGFwdGVyOjpoYXNTeXN0ZW1UcmF5SWNvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+aGFzU3lzdGVt
VHJheUljb24oKTsKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnNldFN5c3RlbVRyYXlJY29u
KFFPYmplY3QgKmljb24pCit7CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5v
dGlmaWNhdGlvblByZXNlbnRlcigpLT5zZXRTeXN0ZW1UcmF5SWNvbihpY29uKTsKK30KKyNlbmRp
ZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05T
KSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisKKyNpZiBFTkFCTEUoR0VPTE9DQVRJ
T04pICYmIEhBVkUoUVRMT0NBVElPTikKK3ZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXRHZW9sb2Nh
dGlvbkVuYWJsZWRGb3JGcmFtZShRV2ViRnJhbWVBZGFwdGVyKiBmcmFtZSwgYm9vbCBvbikKK3sK
KyAgICBHZW9sb2NhdGlvblBlcm1pc3Npb25DbGllbnRRdDo6Z2VvbG9jYXRpb25QZXJtaXNzaW9u
Q2xpZW50KCktPnNldFBlcm1pc3Npb24oZnJhbWUsIG9uKTsKK30KKyNlbmRpZgorCisKK1FTdHJp
bmcgUVdlYlBhZ2VBZGFwdGVyOjpkZWZhdWx0VXNlckFnZW50U3RyaW5nKCkKK3sKKyAgICByZXR1
cm4gVXNlckFnZW50UXQ6OnN0YW5kYXJkVXNlckFnZW50KCIiLCBXRUJLSVRfTUFKT1JfVkVSU0lP
TiwgV0VCS0lUX01JTk9SX1ZFUlNJT04pOworfQorCitib29sIFFXZWJQYWdlQWRhcHRlcjo6dHJl
YXRTY2hlbWVBc0xvY2FsKGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICByZXR1cm4gV2Vi
Q29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChzY2hlbWUp
OworfQorCitRT2JqZWN0KiBRV2ViUGFnZUFkYXB0ZXI6OmN1cnJlbnRGcmFtZSgpIGNvbnN0Cit7
CisgICAgRnJhbWUmIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCkt
Pm9yaWdpbmF0aW5nT2JqZWN0KCk7Cit9CisKK2Jvb2wgUVdlYlBhZ2VBZGFwdGVyOjpoYXNGb2N1
c2VkTm9kZSgpIGNvbnN0Cit7CisgICAgYm9vbCBoYXNGb2N1cyA9IGZhbHNlOworICAgIEZyYW1l
KiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRGcmFtZSgpOworICAgIGlm
IChmcmFtZSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICAgICAgaGFzRm9jdXMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+Zm9jdXNlZEVsZW1l
bnQoKTsKKyAgICB9CisgICAgcmV0dXJuIGhhc0ZvY3VzOworfQorCitRV2ViUGFnZUFkYXB0ZXI6
OlZpZXdwb3J0QXR0cmlidXRlcyBRV2ViUGFnZUFkYXB0ZXI6OnZpZXdwb3J0QXR0cmlidXRlc0Zv
clNpemUoY29uc3QgUVNpemUgJmF2YWlsYWJsZVNpemUsIGNvbnN0IFFTaXplICZkZXZpY2VTaXpl
KSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBpbnQgZGVza3RvcFdpZHRoID0gOTgwOworCisg
ICAgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbyA9IHF0X2RlZmF1bHREcGkoKSAvIFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzOjpkZXByZWNhdGVkVGFyZ2V0RFBJOworCisgICAgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzIGNvbmYgPSBXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVz
KHZpZXdwb3J0QXJndW1lbnRzKCksIGRlc2t0b3BXaWR0aCwgZGV2aWNlU2l6ZS53aWR0aCgpLCBk
ZXZpY2VTaXplLmhlaWdodCgpLCBkZXZpY2VQaXhlbFJhdGlvLCBhdmFpbGFibGVTaXplKTsKKyAg
ICBXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplKGNvbmYs
IGF2YWlsYWJsZVNpemUsIGRldmljZVBpeGVsUmF0aW8pOworICAgIFdlYkNvcmU6OnJlc3RyaWN0
U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKGNvbmYpOworCisgICAg
cGFnZS0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlUGl4ZWxSYXRpbyk7CisgICAgUVdlYlBh
Z2VBZGFwdGVyOjpWaWV3cG9ydEF0dHJpYnV0ZXMgcmVzdWx0OworCisgICAgcmVzdWx0LnNpemUg
PSBRU2l6ZUYoY29uZi5sYXlvdXRTaXplLndpZHRoKCksIGNvbmYubGF5b3V0U2l6ZS5oZWlnaHQo
KSk7CisgICAgcmVzdWx0LmluaXRpYWxTY2FsZUZhY3RvciA9IGNvbmYuaW5pdGlhbFNjYWxlOwor
ICAgIHJlc3VsdC5taW5pbXVtU2NhbGVGYWN0b3IgPSBjb25mLm1pbmltdW1TY2FsZTsKKyAgICBy
ZXN1bHQubWF4aW11bVNjYWxlRmFjdG9yID0gY29uZi5tYXhpbXVtU2NhbGU7CisgICAgcmVzdWx0
LmRldmljZVBpeGVsUmF0aW8gPSBkZXZpY2VQaXhlbFJhdGlvOworICAgIHJlc3VsdC5pc1VzZXJT
Y2FsYWJsZSA9IHN0YXRpY19jYXN0PGJvb2w+KGNvbmYudXNlclNjYWxhYmxlKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKworYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmhhbmRsZUtleUV2ZW50
KFFLZXlFdmVudCAqZXYpCit7CisgICAgRnJhbWUmIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLmV2ZW50SGFuZGxl
cigpLmtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudChldiwgbV91c2VOYXRpdmVWaXJ0dWFs
S2V5QXNET01LZXkpKTsKK30KKworYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmhhbmRsZVNjcm9sbGlu
ZyhRS2V5RXZlbnQgKmV2KQoreworICAgIEZyYW1lJiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlv
biBkaXJlY3Rpb247CisgICAgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7
CisKKyNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKKyAgICBpZiAoZXYgPT0gUUtleVNlcXVlbmNlOjpN
b3ZlVG9OZXh0UGFnZSkgeworICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5
UGFnZTsKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsRG93bjsKKyAgICB9IGVs
c2UgaWYgKGV2ID09IFFLZXlTZXF1ZW5jZTo6TW92ZVRvUHJldmlvdXNQYWdlKSB7CisgICAgICAg
IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlQYWdlOworICAgICAgICBkaXJlY3Rpb24g
PSBXZWJDb3JlOjpTY3JvbGxVcDsKKyAgICB9IGVsc2UKKyNlbmRpZiAvLyBRVF9OT19TSE9SVENV
VAorICAgIGlmICgoZXYtPmtleSgpID09IFF0OjpLZXlfVXAgJiYgZXYtPm1vZGlmaWVycygpICYg
UXQ6OkNvbnRyb2xNb2RpZmllcikgfHwgZXYtPmtleSgpID09IFF0OjpLZXlfSG9tZSkgeworICAg
ICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgICAgIGRp
cmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVwOworICAgIH0gZWxzZSBpZiAoKGV2LT5rZXkoKSA9
PSBRdDo6S2V5X0Rvd24gJiYgZXYtPm1vZGlmaWVycygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcikg
fHwgZXYtPmtleSgpID09IFF0OjpLZXlfRW5kKSB7CisgICAgICAgIGdyYW51bGFyaXR5ID0gV2Vi
Q29yZTo6U2Nyb2xsQnlEb2N1bWVudDsKKyAgICAgICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Ny
b2xsRG93bjsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKGV2LT5rZXkoKSkgeworICAg
ICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6
OlNjcm9sbEJ5TGluZTsKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IFdlYkNvcmU6OlNjcm9sbFVw
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUXQ6OktleV9Eb3duOgorICAgICAg
ICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpTY3JvbGxCeUxpbmU7CisgICAgICAgICAgICBk
aXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxEb3duOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUXQ6OktleV9MZWZ0OgorICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3Jl
OjpTY3JvbGxCeUxpbmU7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSBXZWJDb3JlOjpTY3JvbGxM
ZWZ0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUXQ6OktleV9SaWdodDoKKyAg
ICAgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6U2Nyb2xsQnlMaW5lOworICAgICAgICAg
ICAgZGlyZWN0aW9uID0gV2ViQ29yZTo6U2Nyb2xsUmlnaHQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBmcmFtZS5ldmVudEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVs
eShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmZv
Y3VzSW5FdmVudChRRm9jdXNFdmVudCAqKQoreworICAgIEZvY3VzQ29udHJvbGxlciYgZm9jdXND
b250cm9sbGVyID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCk7CisgICAgZm9jdXNDb250cm9sbGVy
LnNldEFjdGl2ZSh0cnVlKTsKKyAgICBmb2N1c0NvbnRyb2xsZXIuc2V0Rm9jdXNlZCh0cnVlKTsK
KyAgICBpZiAoIWZvY3VzQ29udHJvbGxlci5mb2N1c2VkRnJhbWUoKSkKKyAgICAgICAgZm9jdXND
b250cm9sbGVyLnNldEZvY3VzZWRGcmFtZShtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lKTsKK30K
Kwordm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQgKikKK3sK
KyAgICAvLyBvbmx5IHNldCB0aGUgZm9jdXNlZCBmcmFtZSBpbmFjdGl2ZSBzbyB0aGF0IHdlIHN0
b3AgcGFpbnRpbmcgdGhlIGNhcmV0CisgICAgLy8gYW5kIHRoZSBmb2N1cyBmcmFtZS4gQnV0IGRv
bid0IHRlbGwgdGhlIGZvY3VzIGNvbnRyb2xsZXIgc28gdGhhdCB1cG9uCisgICAgLy8gZm9jdXNJ
bkV2ZW50KCkgd2UgY2FuIHJlLWFjdGl2YXRlIHRoZSBmcmFtZS4KKyAgICBGb2N1c0NvbnRyb2xs
ZXImIGZvY3VzQ29udHJvbGxlciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpOworICAgIC8vIENh
bGwgc2V0Rm9jdXNlZCBmaXJzdCBzbyB0aGF0IHdpbmRvdy5vbmJsdXIgZG9lc24ndCBnZXQgY2Fs
bGVkIHR3aWNlCisgICAgZm9jdXNDb250cm9sbGVyLnNldEZvY3VzZWQoZmFsc2UpOworICAgIGZv
Y3VzQ29udHJvbGxlci5zZXRBY3RpdmUoZmFsc2UpOworfQorCitib29sIFFXZWJQYWdlQWRhcHRl
cjo6aGFuZGxlU2hvcnRjdXRPdmVycmlkZUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAg
V2ViQ29yZTo6RnJhbWUmIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3Io
KTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoZXZlbnQtPm1vZGlmaWVycygpID09IFF0OjpOb01vZGlmaWVyCisgICAgICAgIHx8IGV2
ZW50LT5tb2RpZmllcnMoKSA9PSBRdDo6U2hpZnRNb2RpZmllcgorICAgICAgICB8fCBldmVudC0+
bW9kaWZpZXJzKCkgPT0gUXQ6OktleXBhZE1vZGlmaWVyKSB7CisgICAgICAgIGlmIChldmVudC0+
a2V5KCkgPCBRdDo6S2V5X0VzY2FwZSkKKyAgICAgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LT5rZXkoKSkgeworICAgICAg
ICAgICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKyAgICAgICAgICAgIGNhc2UgUXQ6OktleV9FbnRl
cjoKKyAgICAgICAgICAgIGNhc2UgUXQ6OktleV9EZWxldGU6CisgICAgICAgICAgICBjYXNlIFF0
OjpLZXlfSG9tZToKKyAgICAgICAgICAgIGNhc2UgUXQ6OktleV9FbmQ6CisgICAgICAgICAgICBj
YXNlIFF0OjpLZXlfQmFja3NwYWNlOgorICAgICAgICAgICAgY2FzZSBRdDo6S2V5X0xlZnQ6Cisg
ICAgICAgICAgICBjYXNlIFF0OjpLZXlfUmlnaHQ6CisgICAgICAgICAgICBjYXNlIFF0OjpLZXlf
VXA6CisgICAgICAgICAgICBjYXNlIFF0OjpLZXlfRG93bjoKKyAgICAgICAgICAgIGNhc2UgUXQ6
OktleV9UYWI6CisgICAgICAgICAgICAgICAgZXZlbnQtPmFjY2VwdCgpOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OnRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZTsKKyAgICBpZiAo
IWZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEFsd2F5cyBh
Y2NlcHQgdGhlIFFUb3VjaEV2ZW50IHNvIHRoYXQgd2UnbGwgcmVjZWl2ZSBhbHNvIFRvdWNoVXBk
YXRlIGFuZCBUb3VjaEVuZCBldmVudHMKKyAgICBldmVudC0+c2V0QWNjZXB0ZWQodHJ1ZSk7CisK
KyAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgZGVmYXVsdCBhY3Rpb24gd2FzIGNhbmNlbGxlZCBp
biB0aGUgSlMgZXZlbnQgaGFuZGxlcgorICAgIHJldHVybiBmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
aGFuZGxlVG91Y2hFdmVudChjb252ZXJ0VG91Y2hFdmVudChldmVudCkpOworI2Vsc2UKKyAgICBl
dmVudC0+aWdub3JlKCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wgUVdl
YlBhZ2VBZGFwdGVyOjpzd2FsbG93Q29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCAq
ZXZlbnQsIFFXZWJGcmFtZUFkYXB0ZXIgKndlYkZyYW1lKQoreworICAgIC8vIENoZWNrIHRoZSBm
aXJzdCBhbmQgbGFzdCBlbnVtIHZhbHVlcyBtYXRjaCBhdCBsZWFzdCwgc2luY2Ugd2UgY2FzdC4K
KyAgICBBU1NFUlQoaW50KFFXZWJQYWdlQWRhcHRlcjo6U2Nyb2xsVXApID09IGludChXZWJDb3Jl
OjpTY3JvbGxVcCkpOworICAgIEFTU0VSVChpbnQoUVdlYlBhZ2VBZGFwdGVyOjpTY3JvbGxSaWdo
dCkgPT0gaW50KFdlYkNvcmU6OlNjcm9sbFJpZ2h0KSk7CisgICAgQVNTRVJUKGludChRV2ViUGFn
ZUFkYXB0ZXI6OlNjcm9sbEJ5TGluZSkgPT0gaW50KFdlYkNvcmU6OlNjcm9sbEJ5TGluZSkpOwor
ICAgIEFTU0VSVChpbnQoUVdlYlBhZ2VBZGFwdGVyOjpTY3JvbGxCeURvY3VtZW50KSA9PSBpbnQo
V2ViQ29yZTo6U2Nyb2xsQnlEb2N1bWVudCkpOworCisgICAgcGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCkuY2xlYXJDb250ZXh0TWVudSgpOworCisgICAgaWYgKHdlYkZyYW1lKSB7CisgICAg
ICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lLT5mcmFtZTsKKyAgICAgICAgaWYgKFNjcm9sbGJh
ciogc2Nyb2xsQmFyID0gZnJhbWUtPnZpZXcoKS0+c2Nyb2xsYmFyQXRQb2ludChjb252ZXJ0TW91
c2VFdmVudChldmVudCwgMSkucG9zaXRpb24oKSkpIHsKKyAgICAgICAgICAgIGJvb2wgaG9yaXpv
bnRhbCA9IChzY3JvbGxCYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcik7
CisgICAgICAgICAgICBRV2ViUGFnZUFkYXB0ZXI6OlNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24g
PSBRV2ViUGFnZUFkYXB0ZXI6OkludmFsaWRTY3JvbGxEaXJlY3Rpb247CisgICAgICAgICAgICBR
V2ViUGFnZUFkYXB0ZXI6OlNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gUVdlYlBhZ2VB
ZGFwdGVyOjpJbnZhbGlkU2Nyb2xsR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBib29sIHNjcm9s
bCA9IGhhbmRsZVNjcm9sbGJhckNvbnRleHRNZW51RXZlbnQoZXZlbnQsIGhvcml6b250YWwsICZk
aXJlY3Rpb24sICZncmFudWxhcml0eSk7CisgICAgICAgICAgICBpZiAoIXNjcm9sbCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gUVdl
YlBhZ2VBZGFwdGVyOjpJbnZhbGlkU2Nyb2xsRGlyZWN0aW9uIHx8IGdyYW51bGFyaXR5ID09IFFX
ZWJQYWdlQWRhcHRlcjo6SW52YWxpZFNjcm9sbEdyYW51bGFyaXR5KSB7CisgICAgICAgICAgICAg
ICAgU2Nyb2xsYmFyVGhlbWUqIHRoZW1lID0gc2Nyb2xsQmFyLT50aGVtZSgpOworICAgICAgICAg
ICAgICAgIC8vIFNldCB0aGUgcHJlc3NlZCBwb3NpdGlvbiB0byB0aGUgbWlkZGxlIG9mIHRoZSB0
aHVtYiBzbyB0aGF0IHdoZW4gd2UKKyAgICAgICAgICAgICAgICAvLyBkbyBtb3ZlLCB0aGUgZGVs
dGEgd2lsbCBiZSBmcm9tIHRoZSBjdXJyZW50IHBpeGVsIHBvc2l0aW9uIG9mIHRoZQorICAgICAg
ICAgICAgICAgIC8vIHRodW1iIHRvIHRoZSBuZXcgcG9zaXRpb24KKyAgICAgICAgICAgICAgICBp
bnQgcG9zaXRpb24gPSB0aGVtZS0+dHJhY2tQb3NpdGlvbihzY3JvbGxCYXIpICsgdGhlbWUtPnRo
dW1iUG9zaXRpb24oc2Nyb2xsQmFyKSArIHRoZW1lLT50aHVtYkxlbmd0aChzY3JvbGxCYXIpIC8g
MjsKKyAgICAgICAgICAgICAgICBzY3JvbGxCYXItPnNldFByZXNzZWRQb3MocG9zaXRpb24pOwor
ICAgICAgICAgICAgICAgIGNvbnN0IFFQb2ludCBwb3MgPSBzY3JvbGxCYXItPmNvbnZlcnRGcm9t
Q29udGFpbmluZ1dpbmRvdyhldmVudC0+cG9zKCkpOworICAgICAgICAgICAgICAgIHNjcm9sbEJh
ci0+bW92ZVRodW1iKGhvcml6b250YWwgPyBwb3MueCgpIDogcG9zLnkoKSk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzY3JvbGxCYXItPnNjcm9sbGFibGVBcmVhKCktPnNj
cm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24oZGlyZWN0aW9uKSwgV2ViQ29yZTo6U2Nyb2xs
R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgV2ViQ29yZTo6RnJhbWUmIGZvY3VzZWRGcmFtZSA9IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGZvY3VzZWRGcmFt
ZS5ldmVudEhhbmRsZXIoKS5zZW5kQ29udGV4dE1lbnVFdmVudChjb252ZXJ0TW91c2VFdmVudChl
dmVudCwgMSkpOworICAgIENvbnRleHRNZW51KiBtZW51ID0gcGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCkuY29udGV4dE1lbnUoKTsKKyAgICAvLyBJZiB0aGUgd2Vic2l0ZSBkZWZpbmVzIGl0
cyBvd24gaGFuZGxlciB0aGVuIHNlbmRDb250ZXh0TWVudUV2ZW50IHRha2VzIGNhcmUgb2YKKyAg
ICAvLyBjYWxsaW5nL3Nob3dpbmcgaXQgYW5kIHRoZSBjb250ZXh0IG1lbnUgcG9pbnRlciB3aWxs
IGJlIHplcm8uIFRoaXMgaXMgdGhlIGNhc2UKKyAgICAvLyBvbiBtYXBzLmdvb2dsZS5jb20gZm9y
IGV4YW1wbGUuCisKKyAgICByZXR1cm4gIW1lbnU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5oIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40MTQxMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuaApAQCAtMCwwICsxLDM3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKyNpZm5kZWYgUVdlYlBhZ2VBZGFwdGVyX2gKKyNkZWZpbmUgUVdlYlBhZ2VBZGFwdGVy
X2gKKworI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCisjaW5jbHVkZSAiUVdlYlBh
Z2VDbGllbnQuaCIKKyNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgInF3
ZWJoaXN0b3J5LmgiCisKKyNpbmNsdWRlIDxxYmFzaWN0aW1lci5oPgorI2luY2x1ZGUgPHFldmVu
dC5oPgorI2luY2x1ZGUgPHFuZXR3b3JrcmVxdWVzdC5oPgorI2luY2x1ZGUgPHFyZWN0Lmg+Cisj
aW5jbHVkZSA8cXNjb3BlZHBvaW50ZXIuaD4KKyNpbmNsdWRlIDxxc2hhcmVkcG9pbnRlci5oPgor
I2luY2x1ZGUgPHFzdHJpbmcuaD4KKyNpbmNsdWRlIDxxdXJsLmg+CisjaW5jbHVkZSA8d3RmL0V4
cG9ydE1hY3Jvcy5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFCaXRBcnJheTsKK2Ns
YXNzIFFLZXlFdmVudDsKK2NsYXNzIFFNaW1lRGF0YTsKK2NsYXNzIFFNb3VzZUV2ZW50OworY2xh
c3MgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOworY2xhc3MgUVdoZWVsRXZlbnQ7CitjbGFzcyBRSW5w
dXRNZXRob2RFdmVudDsKK1FUX0VORF9OQU1FU1BBQ0UKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQ2hyb21lQ2xpZW50UXQ7CitjbGFzcyBHZW9sb2NhdGlvbkNsaWVudFF0OworY2xhc3Mg
UGFnZTsKK2NsYXNzIFVuZG9TdGVwOworfQorCitjbGFzcyBRdFBsdWdpbldpZGdldEFkYXB0ZXI7
CitjbGFzcyBRV2ViRnJhbWVBZGFwdGVyOworY2xhc3MgUVdlYkhpc3RvcnlJdGVtOworY2xhc3Mg
UVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOworY2xhc3MgUVdlYlBhZ2VDbGllbnQ7CitjbGFzcyBR
V2ViUGx1Z2luRmFjdG9yeTsKK2NsYXNzIFFXZWJTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFFXZWJT
ZWxlY3RNZXRob2Q7CitjbGFzcyBRV2ViU2V0dGluZ3M7CitjbGFzcyBRV2ViRnVsbFNjcmVlblZp
ZGVvSGFuZGxlcjsKK2NsYXNzIFVuZG9TdGVwUXQ7CisKK2NsYXNzIFdFQktJVF9FWFBPUlREQVRB
IFFXZWJQYWdlQWRhcHRlciB7CitwdWJsaWM6CisKKyNkZWZpbmUgRk9SX0VBQ0hfTUFQUEVEX01F
TlVfQUNUSU9OKEYsIFNFUEFSQVRPUikgXAorICAgIEYoT3BlbkxpbmssIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ09wZW5MaW5rKSBTRVBBUkFUT1IgXAorICAgIEYoT3BlbkxpbmtJbk5ld1dp
bmRvdywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdykgU0VQ
QVJBVE9SIFwKKyAgICBGKE9wZW5MaW5rSW5UaGlzV2luZG93LCBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGlua0luVGhpc1dpbmRvdykgU0VQQVJBVE9SIFwKKyAgICBGKERvd25sb2Fk
TGlua1RvRGlzaywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNr
KSBTRVBBUkFUT1IgXAorICAgIEYoQ29weUxpbmtUb0NsaXBib2FyZCwgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCkgU0VQQVJBVE9SIFwKKyAgICBGKE9wZW5J
bWFnZUluTmV3V2luZG93LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5l
d1dpbmRvdykgU0VQQVJBVE9SIFwKKyAgICBGKERvd25sb2FkSW1hZ2VUb0Rpc2ssIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spIFNFUEFSQVRPUiBcCisgICAg
RihDb3B5SW1hZ2VUb0NsaXBib2FyZCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUlt
YWdlVG9DbGlwYm9hcmQpIFNFUEFSQVRPUiBcCisgICAgRihDb3B5SW1hZ2VVcmxUb0NsaXBib2Fy
ZCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQpIFNF
UEFSQVRPUiBcCisgICAgRihPcGVuRnJhbWVJbk5ld1dpbmRvdywgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3cpIFNFUEFSQVRPUiBcCisgICAgRihDb3B5LCBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5KSBTRVBBUkFUT1IgXAorICAgIEYoQmFjaywg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrKSBTRVBBUkFUT1IgXAorICAgIEYoRm9y
d2FyZCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKSBTRVBBUkFUT1IgXAor
ICAgIEYoU3RvcCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RvcCkgU0VQQVJBVE9SIFwK
KyAgICBGKFJlbG9hZCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKSBTRVBBUkFU
T1IgXAorICAgIEYoQ3V0LCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQpIFNFUEFSQVRP
UiBcCisgICAgRihQYXN0ZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUGFzdGUpIFNFUEFS
QVRPUiBcCisgICAgRihTZXRUZXh0RGlyZWN0aW9uRGVmYXVsdCwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbikgU0VQQVJBVE9SIFwKKyAgICBGKFNldFRleHREaXJl
Y3Rpb25MZWZ0VG9SaWdodCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQp
IFNFUEFSQVRPUiBcCisgICAgRihTZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQsIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KSBTRVBBUkFUT1IgXAorICAgIEYoVG9nZ2xl
Qm9sZCwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQm9sZCkgU0VQQVJBVE9SIFwKKyAgICBG
KFRvZ2dsZUl0YWxpYywgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljKSBTRVBBUkFU
T1IgXAorICAgIEYoVG9nZ2xlVW5kZXJsaW5lLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdV
bmRlcmxpbmUpIFNFUEFSQVRPUiBcCisgICAgRihTZWxlY3RBbGwsIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1NlbGVjdEFsbCkKKyNkZWZpbmUgQ09NTUFfU0VQQVJBVE9SICwKKyNkZWZpbmUg
U0VNSUNPTE9OX1NFUEFSQVRPUiA7CisjZGVmaW5lIERFRklORV9BQ1RJT04oTmFtZSwgVmFsdWUp
IFwKKyAgICBOYW1lCisKKyAgICBlbnVtIE1lbnVBY3Rpb24geworICAgICAgICBOb0FjdGlvbiA9
IC0gMSwKKyAgICAgICAgRk9SX0VBQ0hfTUFQUEVEX01FTlVfQUNUSU9OKERFRklORV9BQ1RJT04s
IENPTU1BX1NFUEFSQVRPUikKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICAsIEluc3Bl
Y3RFbGVtZW50CisjZW5kaWYKKyAgICAgICAgLCBBY3Rpb25Db3VudAorICAgIH07CisKKyAgICAv
LyBEdXBsaWNhdGVkIGZyb20gcXdlYnBhZ2UuaAorICAgIGVudW0gRmluZEZsYWcgeworICAgICAg
ICBGaW5kQmFja3dhcmQgPSAxLAorICAgICAgICBGaW5kQ2FzZVNlbnNpdGl2ZWx5ID0gMiwKKyAg
ICAgICAgRmluZFdyYXBzQXJvdW5kRG9jdW1lbnQgPSA0LAorICAgICAgICBIaWdobGlnaHRBbGxP
Y2N1cnJlbmNlcyA9IDgsCisgICAgICAgIEZpbmRBdFdvcmRCZWdpbm5pbmdzT25seSA9IDE2LAor
ICAgICAgICBUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRCZWdpbm5pbmcgPSAzMiwKKyAgICAgICAg
RmluZEJlZ2luc0luU2VsZWN0aW9uID0gNjQKKyAgICB9OworCisgICAgLy8gdmFsaWQgdmFsdWVz
IG1hdGNoaW5nIHRob3NlIGZyb20gU2Nyb2xsVHlwZXMuaAorICAgIGVudW0gU2Nyb2xsRGlyZWN0
aW9uIHsKKyAgICAgICAgSW52YWxpZFNjcm9sbERpcmVjdGlvbiA9IC0xLAorICAgICAgICBTY3Jv
bGxVcCwKKyAgICAgICAgU2Nyb2xsRG93biwKKyAgICAgICAgU2Nyb2xsTGVmdCwKKyAgICAgICAg
U2Nyb2xsUmlnaHQKKyAgICB9OworICAgIC8vIHNhbWUgaGVyZQorICAgIGVudW0gU2Nyb2xsR3Jh
bnVsYXJpdHkgeworICAgICAgICBJbnZhbGlkU2Nyb2xsR3JhbnVsYXJpdHkgPSAtMSwKKyAgICAg
ICAgU2Nyb2xsQnlMaW5lLAorICAgICAgICBTY3JvbGxCeVBhZ2UsCisgICAgICAgIFNjcm9sbEJ5
RG9jdW1lbnQKKyAgICB9OworCisgICAgLy8gTXVzdCBtYXRjaCB3aXRoIHZhbHVlcyBvZiBRV2Vi
UGFnZTo6VmlzaWJpbGl0eVN0YXRlIGVudW0uCisgICAgZW51bSBWaXNpYmlsaXR5U3RhdGUgewor
ICAgICAgICBWaXNpYmlsaXR5U3RhdGVWaXNpYmxlLAorICAgICAgICBWaXNpYmlsaXR5U3RhdGVI
aWRkZW4sCisgICAgICAgIFZpc2liaWxpdHlTdGF0ZVByZXJlbmRlciwKKyAgICAgICAgVmlzaWJp
bGl0eVN0YXRlVW5sb2FkZWQKKyAgICB9OworCisgICAgUVdlYlBhZ2VBZGFwdGVyKCk7CisgICAg
dmlydHVhbCB+UVdlYlBhZ2VBZGFwdGVyKCk7CisKKyAgICAvLyBDYWxsZWQgbWFudWFsbHkgZnJv
bSB+UVdlYlBhZ2UgZGVzdHJ1Y3RvciB0byBlbnN1cmUgdGhhdAorICAgIC8vIHRoZSBRV2ViUGFn
ZUFkYXB0ZXIgYW5kIHRoZSBRV2ViUGFnZVByaXZhdGUgYXJlIGludGFjdCB3aGVuCisgICAgLy8g
dmFyaW91cyBkZXN0cnVjdGlvbiBjYWxsYmFja3MgZnJvbSBXZWJDb3JlOjpQYWdlOjp+UGFnZSgp
IGhpdCB1cy4KKyAgICB2b2lkIGRlbGV0ZVBhZ2UoKTsKKyAgICAvLyBGb3Igc2ltaWxhciByZWFz
b25zLCB3ZSBkb24ndCB3YW50IHRvIGNyZWF0ZSB0aGUgV2ViQ29yZSBQYWdlIGJlZm9yZQorICAg
IC8vIHdlIHByb3Blcmx5IGluaXRpYWxpemVkIHRoZSBzdHlsZSBmYWN0b3J5IGNhbGxiYWNrcy4K
KyAgICB2b2lkIGluaXRpYWxpemVXZWJDb3JlUGFnZSgpOworCisgICAgdmlydHVhbCB2b2lkIHNo
b3coKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bmZvY3VzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0
IFFSZWN0JikgPSAwOworICAgIHZpcnR1YWwgUVNpemUgdmlld3BvcnRTaXplKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUVdlYlBhZ2VBZGFwdGVyKiBjcmVhdGVXaW5kb3coYm9vbCAvKmRpYWxv
ZyovKSA9IDA7CisgICAgdmlydHVhbCBRT2JqZWN0KiBoYW5kbGUoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGphdmFTY3JpcHRDb25zb2xlTWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBp
bnQgbGluZU51bWJlciwgY29uc3QgUVN0cmluZyYgc291cmNlSUQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgamF2YVNjcmlwdEFsZXJ0KFFXZWJGcmFtZUFkYXB0ZXIqLCBjb25zdCBRU3RyaW5nJiBt
c2cpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgamF2YVNjcmlwdENvbmZpcm0oUVdlYkZyYW1lQWRh
cHRlciosIGNvbnN0IFFTdHJpbmcmIG1zZykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBqYXZhU2Ny
aXB0UHJvbXB0KFFXZWJGcmFtZUFkYXB0ZXIqLCBjb25zdCBRU3RyaW5nJiBtc2csIGNvbnN0IFFT
dHJpbmcmIGRlZmF1bHRWYWx1ZSwgUVN0cmluZyogcmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBy
aW50UmVxdWVzdGVkKFFXZWJGcmFtZUFkYXB0ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRh
dGFiYXNlUXVvdGFFeGNlZWRlZChRV2ViRnJhbWVBZGFwdGVyKiwgY29uc3QgUVN0cmluZyYgZGF0
YWJhc2VOYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uQ2FjaGVRdW90YUV4
Y2VlZGVkKFFXZWJTZWN1cml0eU9yaWdpbiosIHF1aW50NjQgZGVmYXVsdE9yaWdpblF1b3RhLCBx
dWludDY0IHRvdGFsU3BhY2VOZWVkZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRp
cChjb25zdCBRU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgUVN0cmluZ0xpc3QgY2hvb3NlRmls
ZXMoUVdlYkZyYW1lQWRhcHRlciosIGJvb2wgYWxsb3dNdWx0aXBsZSwgY29uc3QgUVN0cmluZ0xp
c3QmIHN1Z2dlc3RlZEZpbGVOYW1lcykgPSAwOworICAgIHZpcnR1YWwgUUNvbG9yIGNvbG9yU2Vs
ZWN0aW9uUmVxdWVzdGVkKGNvbnN0IFFDb2xvciYgc2VsZWN0ZWRDb2xvcikgPSAwOworICAgIHZp
cnR1YWwgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2VsZWN0UG9wdXAoKSA9IDA7CisgICAgdmly
dHVhbCBRUmVjdCB2aWV3UmVjdFJlbGF0aXZlVG9XaW5kb3coKSA9IDA7CisKKyNpZiBVU0UoUVRf
TVVMVElNRURJQSkKKyAgICB2aXJ0dWFsIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKiBjcmVh
dGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkgPSAwOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lk
IGdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RlZChRV2ViRnJhbWVBZGFwdGVyKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Q2FuY2VsbGVkKFFX
ZWJGcmFtZUFkYXB0ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbnNQZXJt
aXNzaW9uUmVxdWVzdGVkKFFXZWJGcmFtZUFkYXB0ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmaWNhdGlvbnNQZXJtaXNzaW9uUmVxdWVzdENhbmNlbGxlZChRV2ViRnJhbWVBZGFwdGVy
KikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWljcm9Gb2N1c0NoYW5nZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHRyaWdnZXJDb3B5QWN0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmlnZ2VyQWN0aW9u
Rm9yS2V5RXZlbnQoUUtleUV2ZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9T
dGFjaygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuUmVkbygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5kbygp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVkbygpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIGVkaXRvckNvbW1hbmRGb3JLZXlFdmVudChRS2V5RXZlbnQqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVVuZG9TdGVwKFFTaGFyZWRQb2ludGVyPFVuZG9TdGVwUXQ+KSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIFFXZWJGcmFtZUFkYXB0ZXIqIG1haW5GcmFtZUFkYXB0ZXIoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIFFPYmplY3QqIGluc3BlY3RvckhhbmRsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5zcGVjdG9yRnJvbnRlbmQoUU9iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5zcGVjdG9yV2luZG93VGl0bGUoY29uc3QgUVN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlV2ViSW5zcGVjdG9yKFFPYmplY3QqKiBpbnNwZWN0b3JWaWV3LCBRV2ViUGFnZUFk
YXB0ZXIqKiBpbnNwZWN0b3JQYWdlKSA9IDA7CisgICAgdmlydHVhbCBRU3RyaW5nTGlzdCBtZW51
QWN0aW9uc0FzVGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW1pdFZpZXdwb3J0Q2hhbmdl
UmVxdWVzdGVkKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhY2NlcHROYXZpZ2F0aW9uUmVxdWVz
dChRV2ViRnJhbWVBZGFwdGVyKiwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0JiwgaW50IHR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZW1pdFJlc3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFXZWJG
cmFtZUFkYXB0ZXIgKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbWl0U2F2ZUZyYW1lU3RhdGVS
ZXF1ZXN0ZWQoUVdlYkZyYW1lQWRhcHRlciAqLCBRV2ViSGlzdG9yeUl0ZW0qKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGVtaXREb3dubG9hZFJlcXVlc3RlZChjb25zdCBRTmV0d29ya1JlcXVlc3Qm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVtaXRGcmFtZUNyZWF0ZWQoUVdlYkZyYW1lQWRhcHRl
ciopID0gMDsKKyAgICB2aXJ0dWFsIFFTdHJpbmcgdXNlckFnZW50Rm9yVXJsKGNvbnN0IFFVcmwm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXJyb3JQYWdlRXh0ZW5zaW9u
KCkgY29uc3QgPSAwOworICAgIHN0cnVjdCBFcnJvclBhZ2VPcHRpb24geworICAgICAgICBRVXJs
IHVybDsKKyAgICAgICAgUVdlYkZyYW1lQWRhcHRlciogZnJhbWU7CisgICAgICAgIFFTdHJpbmcg
ZG9tYWluOworICAgICAgICBpbnQgZXJyb3I7CisgICAgICAgIFFTdHJpbmcgZXJyb3JTdHJpbmc7
CisgICAgfTsKKyAgICBzdHJ1Y3QgRXJyb3JQYWdlUmV0dXJuIHsKKyAgICAgICAgUVN0cmluZyBj
b250ZW50VHlwZTsKKyAgICAgICAgUVN0cmluZyBlbmNvZGluZzsKKyAgICAgICAgUVVybCBiYXNl
VXJsOworICAgICAgICBRQnl0ZUFycmF5IGNvbnRlbnQ7CisgICAgfTsKKyAgICB2aXJ0dWFsIGJv
b2wgZXJyb3JQYWdlRXh0ZW5zaW9uKEVycm9yUGFnZU9wdGlvbiosIEVycm9yUGFnZVJldHVybiop
ID0gMDsKKyAgICB2aXJ0dWFsIFF0UGx1Z2luV2lkZ2V0QWRhcHRlciogY3JlYXRlUGx1Z2luKGNv
bnN0IFFTdHJpbmcmLCBjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZ0xpc3QmLCBjb25zdCBRU3Ry
aW5nTGlzdCYpID0gMDsKKyAgICB2aXJ0dWFsIFF0UGx1Z2luV2lkZ2V0QWRhcHRlciogYWRhcHRl
ckZvcldpZGdldChRT2JqZWN0KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0
U29mdHdhcmVJbnB1dFBhbmVsKCkgY29uc3QgPSAwOworICAgIHN0cnVjdCBNZW51SXRlbURlc2Ny
aXB0aW9uIHsKKyAgICAgICAgTWVudUl0ZW1EZXNjcmlwdGlvbigpCisgICAgICAgICAgICA6IHR5
cGUoTm9UeXBlKQorICAgICAgICAgICAgLCBhY3Rpb24oTm9BY3Rpb24pCisgICAgICAgICAgICAs
IHRyYWl0cyhOb25lKQorICAgICAgICB7IH0KKyAgICAgICAgZW51bSBUeXBlIHsKKyAgICAgICAg
ICAgIE5vVHlwZSwKKyAgICAgICAgICAgIEFjdGlvbiwKKyAgICAgICAgICAgIFNlcGFyYXRvciwK
KyAgICAgICAgICAgIFN1Yk1lbnUKKyAgICAgICAgfSB0eXBlOworICAgICAgICBNZW51QWN0aW9u
IGFjdGlvbjsKKyAgICAgICAgZW51bSBUcmFpdCB7CisgICAgICAgICAgICBOb25lID0gMCwKKyAg
ICAgICAgICAgIEVuYWJsZWQgPSAxLAorICAgICAgICAgICAgQ2hlY2thYmxlID0gMiwKKyAgICAg
ICAgICAgIENoZWNrZWQgPSA0CisgICAgICAgIH07CisgICAgICAgIFFfREVDTEFSRV9GTEFHUyhU
cmFpdHMsIFRyYWl0KTsKKyAgICAgICAgVHJhaXRzIHRyYWl0czsKKyAgICAgICAgUUxpc3Q8TWVu
dUl0ZW1EZXNjcmlwdGlvbj4gc3ViTWVudTsKKyAgICAgICAgUVN0cmluZyBzdWJNZW51VGl0bGU7
CisgICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5kU2V0Q3VycmVudENvbnRleHRNZW51
KGNvbnN0IFFMaXN0PE1lbnVJdGVtRGVzY3JpcHRpb24+JiwgUUJpdEFycmF5KikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGxiYXJDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVu
dUV2ZW50KiwgYm9vbCwgU2Nyb2xsRGlyZWN0aW9uKiwgU2Nyb2xsR3JhbnVsYXJpdHkqKSA9IDA7
CisKKyAgICB2b2lkIHNldFZpc2liaWxpdHlTdGF0ZShWaXNpYmlsaXR5U3RhdGUpOworICAgIFZp
c2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKKworICAgIHN0YXRpYyBRV2Vi
UGFnZUFkYXB0ZXIqIGtpdChXZWJDb3JlOjpQYWdlKik7CisgICAgV2ViQ29yZTo6Vmlld3BvcnRB
cmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdDsKKyAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPik7CisKKyAgICB2b2lkIHNl
dE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKFFOZXR3b3JrQWNjZXNzTWFuYWdlciopOworICAgIFFOZXR3
b3JrQWNjZXNzTWFuYWdlciogbmV0d29ya0FjY2Vzc01hbmFnZXIoKTsKKworICAgIGJvb2wgaGFz
U2VsZWN0aW9uKCkgY29uc3Q7CisgICAgUVN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdDsKKyAg
ICBRU3RyaW5nIHNlbGVjdGVkSHRtbCgpIGNvbnN0OworCisgICAgYm9vbCBpc0NvbnRlbnRFZGl0
YWJsZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q29udGVudEVkaXRhYmxlKGJvb2wpOworCisgICAg
Ym9vbCBmaW5kVGV4dChjb25zdCBRU3RyaW5nJiBzdWJTdHJpbmcsIEZpbmRGbGFnIG9wdGlvbnMp
OworCisgICAgdm9pZCBhZGp1c3RQb2ludEZvckNsaWNraW5nKFFNb3VzZUV2ZW50Kik7CisKKyAg
ICB2b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50Kik7CisgICAgdm9pZCBtb3VzZVByZXNz
RXZlbnQoUU1vdXNlRXZlbnQqKTsKKyAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91
c2VFdmVudCopOworICAgIHZvaWQgbW91c2VUcmlwbGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50Kik7
CisgICAgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCopOworICAgIHZvaWQgaGFu
ZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRvbiwgY29uc3QgUVBvaW50Jik7Cisj
aWZuZGVmIFFUX05PX1dIRUVMRVZFTlQKKyAgICB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQq
LCBpbnQgd2hlZWxTY3JvbGxMaW5lcyk7CisjZW5kaWYKKyNpZm5kZWYgUVRfTk9fRFJBR0FORERS
T1AKKyAgICBRdDo6RHJvcEFjdGlvbiBkcmFnRW50ZXJlZChjb25zdCBRTWltZURhdGEqLCBjb25z
dCBRUG9pbnQmLCBRdDo6RHJvcEFjdGlvbnMpOworICAgIHZvaWQgZHJhZ0xlYXZlRXZlbnQoKTsK
KyAgICBRdDo6RHJvcEFjdGlvbiBkcmFnVXBkYXRlZChjb25zdCBRTWltZURhdGEqLCBjb25zdCBR
UG9pbnQmLCBRdDo6RHJvcEFjdGlvbnMpOworICAgIGJvb2wgcGVyZm9ybURyYWcoY29uc3QgUU1p
bWVEYXRhKiwgY29uc3QgUVBvaW50JiwgUXQ6OkRyb3BBY3Rpb25zKTsKKyNlbmRpZgorICAgIHZv
aWQgaW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCopOworICAgIFFWYXJpYW50IGlu
cHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0OworICAg
IHZvaWQgZHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQoUU9iamVjdCosIFFEeW5hbWljUHJvcGVy
dHlDaGFuZ2VFdmVudCopOworICAgIGJvb2wgaGFuZGxlS2V5RXZlbnQoUUtleUV2ZW50Kik7Cisg
ICAgYm9vbCBoYW5kbGVTY3JvbGxpbmcoUUtleUV2ZW50Kik7CisgICAgdm9pZCBmb2N1c0luRXZl
bnQoUUZvY3VzRXZlbnQqKTsKKyAgICB2b2lkIGZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqKTsK
KyAgICBib29sIGhhbmRsZVNob3J0Y3V0T3ZlcnJpZGVFdmVudChRS2V5RXZlbnQqKTsKKyAgICAv
LyBSZXR1cm5zIHdoZXRoZXIgdGhlIGRlZmF1bHQgYWN0aW9uIHdhcyBjYW5jZWxsZWQgaW4gdGhl
IEpTIGV2ZW50IGhhbmRsZXIKKyAgICBib29sIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKyAg
ICBib29sIHN3YWxsb3dDb250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVudUV2ZW50ICosIFFXZWJG
cmFtZUFkYXB0ZXIqKTsKKworICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSogdXBkYXRlUG9z
aXRpb25EZXBlbmRlbnRNZW51QWN0aW9ucyhjb25zdCBRUG9pbnQmLCBRQml0QXJyYXkqKTsKKyAg
ICB2b2lkIHVwZGF0ZUFjdGlvbkludGVybmFsKE1lbnVBY3Rpb24sIGNvbnN0IGNoYXIqIGNvbW1h
bmROYW1lLCBib29sKiBlbmFibGVkLCBib29sKiBjaGVja2VkKTsKKyAgICB2b2lkIHRyaWdnZXJB
Y3Rpb24oTWVudUFjdGlvbiwgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKiwgY29uc3QgY2hhciog
Y29tbWFuZE5hbWUsIGJvb2wgZW5kVG9FbmRSZWxvYWQpOworICAgIFFTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnRm9yQWN0aW9uKE1lbnVBY3Rpb24sIGJvb2wqIGNoZWNrYWJsZSkgY29uc3Q7CisK
KyAgICBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRDb250ZW50VHlwZXMoKSBjb25zdDsKKyNpZiBFTkFC
TEUoR0VPTE9DQVRJT04pICYmIEhBVkUoUVRMT0NBVElPTikKKyAgICB2b2lkIHNldEdlb2xvY2F0
aW9uRW5hYmxlZEZvckZyYW1lKFFXZWJGcmFtZUFkYXB0ZXIqLCBib29sKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCisg
ICAgdm9pZCBzZXROb3RpZmljYXRpb25zQWxsb3dlZEZvckZyYW1lKFFXZWJGcmFtZUFkYXB0ZXIq
LCBib29sIGFsbG93ZWQpOworICAgIHZvaWQgYWRkTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
KCk7CisjaWZuZGVmIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgICAgYm9vbCBoYXNTeXN0ZW1UcmF5
SWNvbigpIGNvbnN0OworICAgIHZvaWQgc2V0U3lzdGVtVHJheUljb24oUU9iamVjdCopOworI2Vu
ZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKworICAgIC8vIENhbGxlZCBmcm9t
IFFXZWJQYWdlIGFzIHByaXZhdGUgc2xvdHMuCisgICAgdm9pZCBfcV9jbGVhbnVwTGVha01lc3Nh
Z2VzKCk7CisgICAgdm9pZCBfcV9vbkxvYWRQcm9ncmVzc0NoYW5nZWQoaW50KTsKKworICAgIGJv
b2wgc3VwcG9ydHNDb250ZW50VHlwZShjb25zdCBRU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CisK
KyAgICB2b2lkIGRpZFNob3dJbnNwZWN0b3IoKTsKKyAgICB2b2lkIGRpZENsb3NlSW5zcGVjdG9y
KCk7CisKKyAgICBzdGF0aWMgUVN0cmluZyBkZWZhdWx0VXNlckFnZW50U3RyaW5nKCk7CisgICAg
c3RhdGljIGJvb2wgdHJlYXRTY2hlbWVBc0xvY2FsKGNvbnN0IFFTdHJpbmcmKTsKKworICAgIFFP
YmplY3QqIGN1cnJlbnRGcmFtZSgpIGNvbnN0OworICAgIGJvb2wgaGFzRm9jdXNlZE5vZGUoKSBj
b25zdDsKKyAgICBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzIHsKKyAgICAgICAgcXJlYWwgaW5p
dGlhbFNjYWxlRmFjdG9yOworICAgICAgICBxcmVhbCBtaW5pbXVtU2NhbGVGYWN0b3I7CisgICAg
ICAgIHFyZWFsIG1heGltdW1TY2FsZUZhY3RvcjsKKyAgICAgICAgcXJlYWwgZGV2aWNlUGl4ZWxS
YXRpbzsKKyAgICAgICAgYm9vbCBpc1VzZXJTY2FsYWJsZTsKKyAgICAgICAgUVNpemVGIHNpemU7
CisgICAgfTsKKworICAgIFZpZXdwb3J0QXR0cmlidXRlcyB2aWV3cG9ydEF0dHJpYnV0ZXNGb3JT
aXplKGNvbnN0IFFTaXplJiBhdmFpbGFibGVTaXplLCBjb25zdCBRU2l6ZSYgZGV2aWNlU2l6ZSkg
Y29uc3Q7CisKKyAgICBRV2ViU2V0dGluZ3MgKnNldHRpbmdzOworCisgICAgV2ViQ29yZTo6UGFn
ZSAqcGFnZTsKKyAgICBRU2NvcGVkUG9pbnRlcjxRV2ViUGFnZUNsaWVudD4gY2xpZW50OworCisg
ICAgUVdlYlBsdWdpbkZhY3RvcnkgKnBsdWdpbkZhY3Rvcnk7CisKKyAgICBib29sIGZvcndhcmRV
bnN1cHBvcnRlZENvbnRlbnQ7CisgICAgYm9vbCBpbnNpZGVPcGVuQ2FsbDsKKyAgICBRUG9pbnQg
dHJpcGxlQ2xpY2s7CisgICAgUUJhc2ljVGltZXIgdHJpcGxlQ2xpY2tUaW1lcjsKKworICAgIGJv
b2wgY2xpY2tDYXVzZWRGb2N1czsKKyAgICBib29sIG1fdXNlTmF0aXZlVmlydHVhbEtleUFzRE9N
S2V5OworICAgIHF1aW50NjQgbV90b3RhbEJ5dGVzOworICAgIHF1aW50NjQgbV9ieXRlc1JlY2Vp
dmVkOworICAgIFFXZWJIaXN0b3J5IGhpc3Rvcnk7CisKK3ByaXZhdGU6CisgICAgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyICpuZXR3b3JrTWFuYWdlcjsKKworcHVibGljOgorICAgIHN0YXRpYyBib29s
IGRydFJ1bjsKKworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDsKKyAg
ICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRRdDsKK307CisKKyNlbmRp
ZiAvLyBRV2ViUGFnZUFkYXB0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uN2Q4Njg4YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1Q
bHVnaW4uaCIKKworI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgorCisjaW5jbHVk
ZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGlyPgorI2luY2x1ZGUgPFFQbHVnaW5M
b2FkZXI+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBRdFBsYXRmb3JtUGx1Z2luOjps
b2FkKGNvbnN0IFFTdHJpbmcmIGZpbGUpCit7CisgICAgbV9sb2FkZXIuc2V0RmlsZU5hbWUoZmls
ZSk7CisgICAgaWYgKCFtX2xvYWRlci5sb2FkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFFPYmplY3QqIG9iaiA9IG1fbG9hZGVyLmluc3RhbmNlKCk7CisgICAgaWYgKG9iaikgewor
ICAgICAgICBtX3BsdWdpbiA9IHFvYmplY3RfY2FzdDxRV2ViS2l0UGxhdGZvcm1QbHVnaW4qPihv
YmopOworICAgICAgICBpZiAobV9wbHVnaW4pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBtX2xvYWRlci51bmxvYWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgUXRQbGF0Zm9ybVBsdWdpbjo6bG9hZCgpCit7CisgICAgY29uc3QgUUxhdGluMVN0cmluZyBz
dWZmaXgoIi93ZWJraXQvIik7CisgICAgY29uc3QgUVN0cmluZ0xpc3QgcGF0aHMgPSBRQ29yZUFw
cGxpY2F0aW9uOjpsaWJyYXJ5UGF0aHMoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGF0
aHMuY291bnQoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFFEaXIgZGlyKHBhdGhzW2ldICsgc3Vm
Zml4KTsKKyAgICAgICAgaWYgKCFkaXIuZXhpc3RzKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgY29uc3QgUVN0cmluZ0xpc3QgZmlsZXMgPSBkaXIuZW50cnlMaXN0KFFEaXI6OkZp
bGVzKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBmaWxlcy5jb3VudCgpOyArK2opIHsK
KyAgICAgICAgICAgIGlmIChsb2FkKGRpci5hYnNvbHV0ZUZpbGVQYXRoKGZpbGVzLmF0KGopKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitRdFBsYXRmb3JtUGx1Z2luOjp+UXRQbGF0Zm9ybVBsdWdpbigpCit7
CisgICAgbV9sb2FkZXIudW5sb2FkKCk7Cit9CisKK2Jvb2wgUXRQbGF0Zm9ybVBsdWdpbjo6bG9h
ZFN0YXRpY2FsbHlMaW5rZWRQbHVnaW4oKQoreworICAgIFFPYmplY3RMaXN0IG9ianMgPSBRUGx1
Z2luTG9hZGVyOjpzdGF0aWNJbnN0YW5jZXMoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG9i
anMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgbV9wbHVnaW4gPSBxb2JqZWN0X2Nhc3Q8UVdlYktp
dFBsYXRmb3JtUGx1Z2luKj4ob2Jqc1tpXSk7CisgICAgICAgIGlmIChtX3BsdWdpbikKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1FXZWJL
aXRQbGF0Zm9ybVBsdWdpbiogUXRQbGF0Zm9ybVBsdWdpbjo6cGx1Z2luKCkKK3sKKyAgICBpZiAo
bV9sb2FkZWQpCisgICAgICAgIHJldHVybiBtX3BsdWdpbjsKKyAgICBtX2xvYWRlZCA9IHRydWU7
CisKKyAgICBpZiAobG9hZFN0YXRpY2FsbHlMaW5rZWRQbHVnaW4oKSkKKyAgICAgICAgcmV0dXJu
IG1fcGx1Z2luOworCisgICAgLy8gUGx1Z2luIHBhdGggaXMgc3RvcmVkIGluIGEgc3RhdGljIHZh
cmlhYmxlIHRvIGF2b2lkIHNlYXJjaGluZyBmb3IgdGhlIHBsdWdpbgorICAgIC8vIG1vcmUgdGhl
biBvbmNlLgorICAgIHN0YXRpYyBRU3RyaW5nIHBsdWdpblBhdGg7CisKKyAgICBpZiAocGx1Z2lu
UGF0aC5pc051bGwoKSkgeworICAgICAgICBpZiAobG9hZCgpKQorICAgICAgICAgICAgcGx1Z2lu
UGF0aCA9IG1fbG9hZGVyLmZpbGVOYW1lKCk7CisgICAgfSBlbHNlCisgICAgICAgIGxvYWQocGx1
Z2luUGF0aCk7CisKKyAgICByZXR1cm4gbV9wbHVnaW47Cit9CisKK1Bhc3NPd25QdHI8UVdlYlNl
bGVjdE1ldGhvZD4gUXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKQor
eworICAgIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiogcCA9IHBsdWdpbigpOworICAgIHJldHVybiBh
ZG9wdFB0cihwID8gc3RhdGljX2Nhc3Q8UVdlYlNlbGVjdE1ldGhvZCo+KHAtPmNyZWF0ZUV4dGVu
c2lvbihRV2ViS2l0UGxhdGZvcm1QbHVnaW46Ok11bHRpcGxlU2VsZWN0aW9ucykpIDogMCk7Cit9
CisKK1Bhc3NPd25QdHI8UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcj4gUXRQbGF0Zm9ybVBsdWdp
bjo6Y3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKK3sKKyAgICBRV2ViS2l0UGxhdGZvcm1Q
bHVnaW4qIHAgPSBwbHVnaW4oKTsKKyAgICByZXR1cm4gYWRvcHRQdHIocCA/IHN0YXRpY19jYXN0
PFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqPihwLT5jcmVhdGVFeHRlbnNpb24oUVdlYktpdFBs
YXRmb3JtUGx1Z2luOjpOb3RpZmljYXRpb25zKSkgOiAwKTsKK30KKworUGFzc093blB0cjxRV2Vi
SGFwdGljRmVlZGJhY2tQbGF5ZXI+IFF0UGxhdGZvcm1QbHVnaW46OmNyZWF0ZUhhcHRpY0ZlZWRi
YWNrUGxheWVyKCkKK3sKKyAgICBRV2ViS2l0UGxhdGZvcm1QbHVnaW4qIHAgPSBwbHVnaW4oKTsK
KyAgICByZXR1cm4gYWRvcHRQdHIocCA/IHN0YXRpY19jYXN0PFFXZWJIYXB0aWNGZWVkYmFja1Bs
YXllcio+KHAtPmNyZWF0ZUV4dGVuc2lvbihRV2ViS2l0UGxhdGZvcm1QbHVnaW46OkhhcHRpY3Mp
KSA6IDApOworfQorCitQYXNzT3duUHRyPFFXZWJUb3VjaE1vZGlmaWVyPiBRdFBsYXRmb3JtUGx1
Z2luOjpjcmVhdGVUb3VjaE1vZGlmaWVyKCkKK3sKKyAgICBRV2ViS2l0UGxhdGZvcm1QbHVnaW4q
IHAgPSBwbHVnaW4oKTsKKyAgICByZXR1cm4gYWRvcHRQdHIocCA/IHN0YXRpY19jYXN0PFFXZWJU
b3VjaE1vZGlmaWVyKj4ocC0+Y3JlYXRlRXh0ZW5zaW9uKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6
VG91Y2hJbnRlcmFjdGlvbikpIDogMCk7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShR
VF9NVUxUSU1FRElBKQorUGFzc093blB0cjxRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcj4gUXRQ
bGF0Zm9ybVBsdWdpbjo6Y3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCit7CisgICAgUVdl
YktpdFBsYXRmb3JtUGx1Z2luKiBwID0gcGx1Z2luKCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKHAg
PyBzdGF0aWNfY2FzdDxRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcio+KHAtPmNyZWF0ZUV4dGVu
c2lvbihRV2ViS2l0UGxhdGZvcm1QbHVnaW46OkZ1bGxTY3JlZW5WaWRlb1BsYXllcikpIDogMCk7
Cit9CisjZW5kaWYKKworUGFzc093blB0cjxRV2ViU3BlbGxDaGVja2VyPiBRdFBsYXRmb3JtUGx1
Z2luOjpjcmVhdGVTcGVsbENoZWNrZXIoKQoreworICAgIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiog
cCA9IHBsdWdpbigpOworICAgIHJldHVybiBhZG9wdFB0cihwID8gc3RhdGljX2Nhc3Q8UVdlYlNw
ZWxsQ2hlY2tlcio+KHAtPmNyZWF0ZUV4dGVuc2lvbihRV2ViS2l0UGxhdGZvcm1QbHVnaW46OlNw
ZWxsQ2hlY2tlcikpIDogMCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWY4YTc2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaWZuZGVmIFF0UGxhdGZvcm1QbHVnaW5faAorI2RlZmluZSBRdFBsYXRmb3Jt
UGx1Z2luX2gKKworI2luY2x1ZGUgPFFQbHVnaW5Mb2FkZXI+CisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKworY2xhc3MgUVdlYlNlbGVjdE1ldGhvZDsKK2NsYXNzIFFXZWJLaXRQbGF0Zm9y
bVBsdWdpbjsKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7CitjbGFzcyBRV2ViSGFw
dGljRmVlZGJhY2tQbGF5ZXI7CitjbGFzcyBRV2ViU2VsZWN0RGF0YTsKK2NsYXNzIFFXZWJUb3Vj
aE1vZGlmaWVyOworI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKFFUX01VTFRJTUVESUEpCitjbGFz
cyBRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcjsKKyNlbmRpZgorY2xhc3MgUVdlYlNwZWxsQ2hl
Y2tlcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBRdFBsYXRmb3JtUGx1Z2luIHsK
K3B1YmxpYzoKKyAgICBRdFBsYXRmb3JtUGx1Z2luKCkKKyAgICAgICAgOiBtX2xvYWRlZChmYWxz
ZSkKKyAgICAgICAgLCBtX3BsdWdpbigwKQorICAgIHsKKyAgICB9CisKKyAgICB+UXRQbGF0Zm9y
bVBsdWdpbigpOworCisgICAgUGFzc093blB0cjxRV2ViU2VsZWN0TWV0aG9kPiBjcmVhdGVTZWxl
Y3RJbnB1dE1ldGhvZCgpOworICAgIFBhc3NPd25QdHI8UVdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cj4gY3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CisgICAgUGFzc093blB0cjxRV2ViSGFw
dGljRmVlZGJhY2tQbGF5ZXI+IGNyZWF0ZUhhcHRpY0ZlZWRiYWNrUGxheWVyKCk7CisgICAgUGFz
c093blB0cjxRV2ViVG91Y2hNb2RpZmllcj4gY3JlYXRlVG91Y2hNb2RpZmllcigpOworI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKFFUX01VTFRJTUVESUEpCisgICAgUGFzc093blB0cjxRV2ViRnVs
bFNjcmVlblZpZGVvSGFuZGxlcj4gY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOworI2Vu
ZGlmCisgICAgUGFzc093blB0cjxRV2ViU3BlbGxDaGVja2VyPiBjcmVhdGVTcGVsbENoZWNrZXIo
KTsKKworICAgIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiogcGx1Z2luKCk7CisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBtX2xvYWRlZDsKKyAgICBRV2ViS2l0UGxhdGZvcm1QbHVnaW4qIG1fcGx1Z2luOwor
ICAgIFFQbHVnaW5Mb2FkZXIgbV9sb2FkZXI7CisgICAgYm9vbCBsb2FkKCk7CisgICAgYm9vbCBs
b2FkKGNvbnN0IFFTdHJpbmcmIGZpbGUpOworICAgIGJvb2wgbG9hZFN0YXRpY2FsbHlMaW5rZWRQ
bHVnaW4oKTsKK307CisKK30KKworI2VuZGlmIC8vIFF0UGxhdGZvcm1QbHVnaW5faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsdWdpbldpZGdldEFkYXB0
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsdWdpbldpZGdldEFk
YXB0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTRhNWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGx1Z2lu
V2lkZ2V0QWRhcHRlci5jcHAKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0UGx1Z2luV2lkZ2V0QWRhcHRlci5oIgorCitRdFBsdWdp
bldpZGdldEFkYXB0ZXI6OlF0UGx1Z2luV2lkZ2V0QWRhcHRlcigpCit7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGx1Z2luV2lkZ2V0QWRhcHRlci5o
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsdWdpbldpZGdldEFkYXB0ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjRkZTc4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsdWdpbldpZGdldEFk
YXB0ZXIuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lh
IFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBRdFBsdWdpbldpZGdl
dEFkYXB0ZXJfaAorI2RlZmluZSBRdFBsdWdpbldpZGdldEFkYXB0ZXJfaAorCisjaW5jbHVkZSA8
UGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFS
ZWN0PgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8cXdlYmtpdGdsb2JhbC5oPgorCitj
bGFzcyBXRUJLSVRfRVhQT1JUREFUQSBRdFBsdWdpbldpZGdldEFkYXB0ZXIgOiBwdWJsaWMgUU9i
amVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRdFBsdWdpbldpZGdldEFkYXB0ZXIo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFFSZWN0JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRHZW9tZXRyeUFuZENsaXAoY29uc3QgUVJlY3QmLCBjb25zdCBRUmVjdCYsIGJv
b2wgaXNWaXNpYmxlID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShi
b29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hlZXQoY29uc3QgUVN0cmluZyYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0V2lkZ2V0UGFyZW50KFFPYmplY3QqKSA9IDA7Cisg
ICAgdmlydHVhbCBRT2JqZWN0KiBoYW5kbGUoKSBjb25zdCA9IDA7Cit9OworCisjZW5kaWYgLy8g
UXRQbHVnaW5XaWRnZXRBZGFwdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvUXRQcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RdFByaW50Q29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMzc4ZWMyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUXRQcmludENvbnRleHQuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdFByaW50Q29udGV4dC5oIgorCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
IlByaW50Q29udGV4dC5oIgorI2luY2x1ZGUgIlFXZWJGcmFtZUFkYXB0ZXIuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK1F0UHJpbnRDb250ZXh0OjpRdFByaW50Q29udGV4dChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIHBhZ2VSZWN0LCBRV2ViRnJhbWVBZGFwdGVyKiBm
cmFtZUFkYXB0ZXIpCisgICAgOiBtX2dyYXBoaWNzQ29udGV4dChuZXcgR3JhcGhpY3NDb250ZXh0
KHBhaW50ZXIpKQorICAgICwgbV9wcmludENvbnRleHQobmV3IFByaW50Q29udGV4dChmcmFtZUFk
YXB0ZXItPmZyYW1lKSkKK3sKKyAgICBtX3ByaW50Q29udGV4dC0+YmVnaW4ocGFnZVJlY3Qud2lk
dGgoKSwgcGFnZVJlY3QuaGVpZ2h0KCkpOworCisgICAgZmxvYXQgcGFnZUhlaWdodCA9IDA7Cisg
ICAgbV9wcmludENvbnRleHQtPmNvbXB1dGVQYWdlUmVjdHMoSW50UmVjdChwYWdlUmVjdCksIC8q
IGhlYWRlckhlaWdodCAqLyAwLCAvKiBmb290ZXJIZWlnaHQgKi8gMCwgLyogdXNlclNjYWxlRmFj
dG9yICovIDEuMCwgcGFnZUhlaWdodCk7Cit9CisKK1F0UHJpbnRDb250ZXh0Ojp+UXRQcmludENv
bnRleHQoKQoreworICAgIG1fcHJpbnRDb250ZXh0LT5lbmQoKTsKKyAgICBkZWxldGUgbV9ncmFw
aGljc0NvbnRleHQ7CisgICAgZGVsZXRlIG1fcHJpbnRDb250ZXh0OworfQorCitpbnQgUXRQcmlu
dENvbnRleHQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpbnRDb250ZXh0
LT5wYWdlQ291bnQoKTsKK30KKwordm9pZCBRdFByaW50Q29udGV4dDo6c3Bvb2xQYWdlKGludCBw
YWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKK3sKKyAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xQYWdl
KCptX2dyYXBoaWNzQ29udGV4dCwgcGFnZU51bWJlciwgd2lkdGgpOworfQorCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQcmludENvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQcmludENvbnRleHQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQ5ZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFByaW50Q29udGV4dC5oCkBAIC0wLDAgKzEs
NDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisjaWZuZGVmIFF0UHJpbnRDb250ZXh0X2gKKyNkZWZpbmUgUXRQcmlu
dENvbnRleHRfaAorCisjaW5jbHVkZSA8UGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRl
IDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxxd2Via2l0Z2xvYmFsLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFByaW50Q29udGV4dDsKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dDsKK30KKworY2xhc3MgUVdlYkZyYW1lQWRhcHRlcjsKKworY2xhc3MgV0VCS0lU
X0VYUE9SVERBVEEgUXRQcmludENvbnRleHQgeworcHVibGljOgorICAgIFF0UHJpbnRDb250ZXh0
KFFQYWludGVyKiwgY29uc3QgUVJlY3QmIHBhZ2VSZWN0LCBRV2ViRnJhbWVBZGFwdGVyKik7Cisg
ICAgflF0UHJpbnRDb250ZXh0KCk7CisKKyAgICBpbnQgcGFnZUNvdW50KCkgY29uc3Q7CisgICAg
dm9pZCBzcG9vbFBhZ2UoaW50IHBhZ2VOdW1iZXIsIGZsb2F0IHdpZHRoKTsKKworcHJpdmF0ZToK
KyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIG1fZ3JhcGhpY3NDb250ZXh0OworICAgIFdl
YkNvcmU6OlByaW50Q29udGV4dCogbV9wcmludENvbnRleHQ7Cit9OworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0MzdjZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51
UXQuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgQyAyMDA2IFphY2sgUnVz
aW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnVRdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NlYXJj
aFBvcHVwTWVudVF0OjpTZWFyY2hQb3B1cE1lbnVRdChQYXNzUmVmUHRyPFBvcHVwTWVudT4gcG9w
dXApCisgICAgOiBtX3BvcHVwKHBvcHVwKQoreworfQorCitQb3B1cE1lbnUqIFNlYXJjaFBvcHVw
TWVudVF0Ojpwb3B1cE1lbnUoKQoreworICAgIHJldHVybiBtX3BvcHVwLmdldCgpOworfQorCit2
b2lkIFNlYXJjaFBvcHVwTWVudVF0OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQoreworfQorCit2b2lkIFNlYXJjaFBvcHVwTWVu
dVF0Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPFN0cmlu
Zz4mKQoreworfQorCitib29sIFNlYXJjaFBvcHVwTWVudVF0OjplbmFibGVkKCkKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjRhZTg1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1NlYXJjaFBvcHVwTWVudVF0LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIFNlYXJjaFBvcHVwTWVudVF0X2gKKyNkZWZpbmUgU2VhcmNoUG9wdXBN
ZW51UXRfaAorCisjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU2VhcmNoUG9wdXBNZW51UXQgOiBwdWJsaWMgU2VhcmNoUG9wdXBNZW51
IHsKK3B1YmxpYzoKKyAgICBTZWFyY2hQb3B1cE1lbnVRdChQYXNzUmVmUHRyPFBvcHVwTWVudT4p
OworCisgICAgdmlydHVhbCBQb3B1cE1lbnUqIHBvcHVwTWVudSgpOworICAgIHZpcnR1YWwgdm9p
ZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRl
bXMpOworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRy
PFBvcHVwTWVudT4gbV9wb3B1cDsKK307CisKK30KKworI2VuZGlmIC8vIFNlYXJjaFBvcHVwTWVu
dVF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dENo
ZWNrZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1RleHRD
aGVja2VyQ2xpZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMw
MDYyM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1RleHRDaGVja2VyQ2xpZW50UXQuY3BwCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIExpbmRzYXkgTWF0aGllc29uIDxsaW5kc2F5Lm1hdGhpZXNvbkBnbWFpbC5j
b20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRGF3aXQgQWxlbWF5ZWh1ICA8YWRhd2l0QGtkZS5v
cmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnRRdC5oIgorCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJRdFBsYXRmb3JtUGx1Z2luLmgiCisKKyNpbmNsdWRlIDxR
U3RyaW5nTGlzdD4KKyNpbmNsdWRlIDxRVmVjdG9yPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisKK3N0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3Rvckxpc3QoY29uc3QgUVN0cmlu
Z0xpc3QmIGxpc3QsIFZlY3RvcjxTdHJpbmc+JiB2TGlzdCkKK3sKKyAgICBjb25zdCBpbnQgY291
bnQgPSBsaXN0LmNvdW50KCk7CisgICAgdkxpc3QucmVzaXplKGNvdW50KTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIHZMaXN0LmFwcGVuZChsaXN0LmF0KGkp
KTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIFRleHRDaGVja2VyQ2xpZW50UXQ6
OnNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVGV4dENoZWNrZXJDbGllbnRR
dDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHdvcmQpCit7CisgICAg
aWYgKCFsb2FkU3BlbGxDaGVja2VyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3BlbGxD
aGVja2VyLT5pZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KHdvcmQpOworfQorCit2b2lkIFRleHRD
aGVja2VyQ2xpZW50UXQ6OmxlYXJuV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCit7CisgICAgaWYg
KCFsb2FkU3BlbGxDaGVja2VyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3BlbGxDaGVj
a2VyLT5sZWFybldvcmQod29yZCk7Cit9CisKK1N0cmluZyBUZXh0Q2hlY2tlckNsaWVudFF0Ojpn
ZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1p
c3NwZWxsZWRXb3JkKQoreworICAgIGlmICghbG9hZFNwZWxsQ2hlY2tlcigpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9zcGVsbENoZWNrZXItPmF1dG9Db3JyZWN0
U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRXb3JkKTsKK30KKwordm9pZCBU
ZXh0Q2hlY2tlckNsaWVudFF0OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIGJ1
ZmZlciwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxs
aW5nTGVuZ3RoKQoreworICAgIGlmICghbG9hZFNwZWxsQ2hlY2tlcigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBjb25zdCBRU3RyaW5nIHRleHQgPSBRU3RyaW5nOjpmcm9tUmF3RGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oYnVmZmVyKSwgbGVuZ3RoKTsKKyAgICBtX3NwZWxs
Q2hlY2tlci0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKHRleHQsIG1pc3NwZWxsaW5nTG9jYXRpb24s
IG1pc3NwZWxsaW5nTGVuZ3RoKTsKK30KKwordm9pZCBUZXh0Q2hlY2tlckNsaWVudFF0OjpjaGVj
a0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoLCBWZWN0b3I8
R3JhbW1hckRldGFpbD4mIGRldGFpbHMsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJh
ZEdyYW1tYXJMZW5ndGgpCit7CisgICAgaWYgKCFsb2FkU3BlbGxDaGVja2VyKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGNvbnN0IFFTdHJpbmcgdGV4dCA9IFFTdHJpbmc6OmZyb21SYXdEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihidWZmZXIpLCBsZW5ndGgpOworCisgICAg
Ly8gRG8gR3JhbW1lciBjaGVjay4KKyAgICBRTGlzdDxRV2ViU3BlbGxDaGVja2VyOjpHcmFtbWFy
RGV0YWlsPiBxR3JhbW1hckRldGFpbHM7CisgICAgbV9zcGVsbENoZWNrZXItPmNoZWNrR3JhbW1h
ck9mU3RyaW5nKHRleHQsIHFHcmFtbWFyRGV0YWlscywgYmFkR3JhbW1hckxvY2F0aW9uLCBiYWRH
cmFtbWFyTGVuZ3RoKTsKKworICAgIC8vIENvcHkgdGhlIGdyYW1tYXIgZGV0YWlsIGZyb20gdGhl
IFF0IHBsdWdpbiB0byB0aGUgd2Via2l0IHN0cnVjdHVyZS4KKyAgICBjb25zdCBpbnQgY291bnQg
PSBxR3JhbW1hckRldGFpbHMuY291bnQoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgY29uc3QgUVdlYlNwZWxsQ2hlY2tlcjo6R3JhbW1hckRldGFpbCBx
R3JhbW1hckRldGFpbCA9IHFHcmFtbWFyRGV0YWlscy5hdChpKTsKKyAgICAgICAgR3JhbW1hckRl
dGFpbCB3ZWJraXRHcmFtbWFyRGV0YWlsOworICAgICAgICB3ZWJraXRHcmFtbWFyRGV0YWlsLmxv
Y2F0aW9uID0gcUdyYW1tYXJEZXRhaWwubG9jYXRpb247CisgICAgICAgIHdlYmtpdEdyYW1tYXJE
ZXRhaWwubGVuZ3RoID0gcUdyYW1tYXJEZXRhaWwubGVuZ3RoOworICAgICAgICAvLyBDb3B5IGd1
ZXNzZXMgc3RyaW5ncy4KKyAgICAgICAgY29udmVydFRvVmVjdG9yTGlzdChxR3JhbW1hckRldGFp
bC5ndWVzc2VzLCB3ZWJraXRHcmFtbWFyRGV0YWlsLmd1ZXNzZXMpOworICAgICAgICB3ZWJraXRH
cmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9IHFHcmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlw
dGlvbjsKKyAgICAgICAgZGV0YWlscy5hcHBlbmQod2Via2l0R3JhbW1hckRldGFpbCk7CisgICAg
fQorfQorCit2b2lkIFRleHRDaGVja2VyQ2xpZW50UXQ6OmdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0
IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vl
c3NlcykKK3sKKyAgICBpZiAoIWxvYWRTcGVsbENoZWNrZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUVN0cmluZ0xpc3QgZ3Vlc3Nlc0xpc3Q7CisgICAgbV9zcGVsbENoZWNrZXItPmd1ZXNz
ZXNGb3JXb3JkKHdvcmQsIGNvbnRleHQsIGd1ZXNzZXNMaXN0KTsKKyAgICBjb252ZXJ0VG9WZWN0
b3JMaXN0KGd1ZXNzZXNMaXN0LCBndWVzc2VzKTsKK30KKworYm9vbCBUZXh0Q2hlY2tlckNsaWVu
dFF0Ojppc0NvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyAgICBpZiAoIWxvYWRT
cGVsbENoZWNrZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fc3Bl
bGxDaGVja2VyLT5pc0NvbnRpbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7Cit9CisKK3ZvaWQg
VGV4dENoZWNrZXJDbGllbnRRdDo6dG9nZ2xlQ29udGlub3VzU3BlbGxDaGVja2luZygpCit7Cisg
ICAgaWYgKCFsb2FkU3BlbGxDaGVja2VyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Bl
bGxDaGVja2VyLT50b2dnbGVDb250aW5vdXNTcGVsbENoZWNraW5nKCk7Cit9CisKK2Jvb2wgVGV4
dENoZWNrZXJDbGllbnRRdDo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyAgICBpZiAo
IWxvYWRTcGVsbENoZWNrZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IG1fc3BlbGxDaGVja2VyLT5pc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKTsKK30KKwordm9pZCBU
ZXh0Q2hlY2tlckNsaWVudFF0Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKQoreworICAgIGlmICgh
bG9hZFNwZWxsQ2hlY2tlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NwZWxsQ2hlY2tl
ci0+dG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7Cit9CisKK2Jvb2wgVGV4dENoZWNrZXJDbGllbnRR
dDo6bG9hZFNwZWxsQ2hlY2tlcigpCit7CisgICAgaWYgKG1fc3BlbGxDaGVja2VyKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICgobV9zcGVsbENoZWNrZXIgPSBtX3BsYXRmb3JtUGx1
Z2luLmNyZWF0ZVNwZWxsQ2hlY2tlcigpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYmY5ZGVkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRRdC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgTGluZHNheSBNYXRoaWVzb24gPGxpbmRzYXkubWF0aGllc29u
QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBEYXdpdCBBbGVtYXllaHUgIDxhZGF3
aXRAa2RlLm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VGV4dENoZWNrZXJDbGllbnRRdF9oCisjZGVmaW5lIFRleHRDaGVja2VyQ2xpZW50UXRfaAorCisj
aW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgorI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCisKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFRleHRDaGVja2VyQ2xpZW50UXQgOiBwdWJsaWMgVGV4dENoZWNrZXJDbGll
bnQgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNo
YW5nZVNlbGVjdGlvbihUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbGVhcm5Xb3JkKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxs
aW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9j
YXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpOworICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1
dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3Bl
bGxlZFdvcmQpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1h
ckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwg
VmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4p
IHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ29udGlub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGlub3VzU3BlbGxDaGVja2luZygpOworCisg
ICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpOworICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKKworcHJpdmF0ZToKKyAgICBib29sIGxvYWRT
cGVsbENoZWNrZXIoKTsKKworcHJpdmF0ZToKKyAgICBRdFBsYXRmb3JtUGx1Z2luIG1fcGxhdGZv
cm1QbHVnaW47CisgICAgT3duUHRyPFFXZWJTcGVsbENoZWNrZXI+IG1fc3BlbGxDaGVja2VyOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFjMzliNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuY3Bw
CkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEy
IERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5oIgorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJRV2ViRnJhbWVB
ZGFwdGVyLmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckxheWVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitUZXh0dXJlTWFw
cGVyTGF5ZXJDbGllbnRRdDo6VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQoUVdlYkZyYW1lQWRh
cHRlciogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9zeW5jVGltZXIodGhp
cywgJlRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0OjpzeW5jTGF5ZXJzKQorICAgICwgbV9yb290
VGV4dHVyZU1hcHBlckxheWVyKDApCit7Cit9CisKK1RleHR1cmVNYXBwZXJMYXllckNsaWVudFF0
Ojp+VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQoKQoreworICAgIG1fcm9vdFRleHR1cmVNYXBw
ZXJMYXllciA9IDA7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ6OnN5bmNS
b290TGF5ZXIoKQoreworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdDo6bWFya0ZvclN5bmMoYm9vbCBzY2hlZHVsZVN5bmMpCit7CisgICAgaWYgKG1fc3luY1Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N5bmNUaW1lci5zdGFydE9u
ZVNob3QoMCk7Cit9CisKK1RleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyQ2xp
ZW50UXQ6OnJvb3RMYXllcigpCit7CisgICAgcmV0dXJuIHRvVGV4dHVyZU1hcHBlckxheWVyKG1f
cm9vdEdyYXBoaWNzTGF5ZXIuZ2V0KCkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllckNs
aWVudFF0OjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAg
ICBpZiAobGF5ZXIpIHsKKyAgICAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZSgwLCAwKTsKKyAgICAgICAgbV9yb290VGV4dHVyZU1hcHBlckxheWVyID0gdG9U
ZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290R3JhcGhpY3NMYXllci5nZXQoKSk7CisgICAgICAgIG1f
cm9vdEdyYXBoaWNzTGF5ZXItPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgbV9yb290R3JhcGhp
Y3NMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICAgICAgbV9yb290R3JhcGhpY3NM
YXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5
ZXItPnNldFNpemUoSW50U2l6ZSgxLCAxKSk7CisgICAgICAgIFRleHR1cmVNYXBwZXI6OkFjY2Vs
ZXJhdGlvbk1vZGUgbW9kZSA9IFRleHR1cmVNYXBwZXI6OlNvZnR3YXJlTW9kZTsKKyAgICAgICAg
aWYgKG1fZnJhbWUtPnBhZ2VBZGFwdGVyLT5jbGllbnQtPm1ha2VPcGVuR0xDb250ZXh0Q3VycmVu
dElmQXZhaWxhYmxlKCkpCisgICAgICAgICAgICBtb2RlID0gVGV4dHVyZU1hcHBlcjo6T3BlbkdM
TW9kZTsKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKG1v
ZGUpOworICAgICAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTGF5ZXItPnNldFRleHR1cmVNYXBwZXIo
bV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICAgICAgc3luY1Jvb3RMYXllcigpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBudWxscHRyOworICAgICAgICBt
X3Jvb3RUZXh0dXJlTWFwcGVyTGF5ZXIgPSAwOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXJDbGllbnRRdDo6c3luY0xheWVycyhUaW1lcjxUZXh0dXJlTWFwcGVyTGF5ZXJDbGll
bnRRdD4qKQoreworICAgIGlmIChtX3Jvb3RHcmFwaGljc0xheWVyKQorICAgICAgICBzeW5jUm9v
dExheWVyKCk7CisKKyAgICBtX2ZyYW1lLT5mcmFtZS0+dmlldygpLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKworICAgIGlmICghbV9yb290R3JhcGhpY3NMYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHJvb3RMYXllcigpLT5kZXNjZW5kYW50c09y
U2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpICYmICFtX3N5bmNUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX3N5bmNUaW1lci5zdGFydE9uZVNob3QoMS4wIC8gNjAuMCk7CisKKyAgICBtX2Zy
YW1lLT5wYWdlQWRhcHRlci0+Y2xpZW50LT5yZXBhaW50Vmlld3BvcnQoKTsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdDo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNsaXApCit7CisgICAgaWYgKCFtX3Jv
b3RUZXh0dXJlTWFwcGVyTGF5ZXIgfHwgIW1fdGV4dHVyZU1hcHBlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV90ZXh0dXJlTWFwcGVyLT5zZXRHcmFwaGljc0NvbnRleHQoY29udGV4dCk7Cisg
ICAgLy8gR3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5IGlzIGFsd2F5
cyBJbnRlcnBvbGF0aW9uRGVmYXVsdCBoZXJlLAorICAgIC8vIGJ1dCAnZGVmYXVsdCcgbWF5IGJl
IGludGVycHJldGVkIGRpZmZlcmVudGx5IGR1ZSB0byBhIGRpZmZlcmVudCBiYWNrZW5kIFFQYWlu
dGVyLAorICAgIC8vIHNvIHdlIG5lZWQgdG8gc2V0IGFuIGV4cGxpY2l0IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkuCisgICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5yZW5kZXJI
aW50cygpICYgUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9ybSkKKyAgICAgICAgbV90ZXh0
dXJlTWFwcGVyLT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KFdlYkNvcmU6OkludGVycG9s
YXRpb25NZWRpdW0pOworICAgIGVsc2UKKyAgICAgICAgbV90ZXh0dXJlTWFwcGVyLT5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KFdlYkNvcmU6OkludGVycG9sYXRpb25Ob25lKTsKKworICAg
IG1fdGV4dHVyZU1hcHBlci0+c2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQtPnRleHREcmF3aW5n
TW9kZSgpKTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpOworICAgIGNvbnN0IFFUcmFuc2Zvcm0gdHJhbnNmb3JtID0gcGFpbnRlci0+d29ybGRUcmFu
c2Zvcm0oKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgoCisgICAgICAg
IHRyYW5zZm9ybS5tMTEoKSwgdHJhbnNmb3JtLm0xMigpLCAwLCB0cmFuc2Zvcm0ubTEzKCksCisg
ICAgICAgIHRyYW5zZm9ybS5tMjEoKSwgdHJhbnNmb3JtLm0yMigpLCAwLCB0cmFuc2Zvcm0ubTIz
KCksCisgICAgICAgIDAsIDAsIDEsIDAsCisgICAgICAgIHRyYW5zZm9ybS5tMzEoKSwgdHJhbnNm
b3JtLm0zMigpLCAwLCB0cmFuc2Zvcm0ubTMzKCkKKyAgICAgICAgKTsKKyAgICBpZiAobV9yb290
R3JhcGhpY3NMYXllci0+b3BhY2l0eSgpICE9IHBhaW50ZXItPm9wYWNpdHkoKSB8fCBtX3Jvb3RH
cmFwaGljc0xheWVyLT50cmFuc2Zvcm0oKSAhPSBtYXRyaXgpIHsKKyAgICAgICAgbV9yb290R3Jh
cGhpY3NMYXllci0+c2V0T3BhY2l0eShwYWludGVyLT5vcGFjaXR5KCkpOworICAgICAgICBtX3Jv
b3RHcmFwaGljc0xheWVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKKyAgICAgICAgbV9yb290R3Jh
cGhpY3NMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworICAg
IH0KKyAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKKyAgICBtX3RleHR1cmVN
YXBwZXItPmJlZ2luQ2xpcChtYXRyaXgsIGNsaXApOworICAgIG1fcm9vdFRleHR1cmVNYXBwZXJM
YXllci0+cGFpbnQoKTsKKyAgICBtX2Zwc0NvdW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheShtX3Rl
eHR1cmVNYXBwZXIuZ2V0KCksIEludFBvaW50Ojp6ZXJvKCksIG1hdHJpeCk7CisgICAgbV90ZXh0
dXJlTWFwcGVyLT5lbmRDbGlwKCk7CisgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygp
OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi45YWM1ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5oCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxj
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpZm5kZWYgVGV4dHVyZU1hcHBlckxheWVy
Q2xpZW50UXRfaAorI2RlZmluZSBUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdF9oCisKK2NsYXNz
IFFXZWJGcmFtZUFkYXB0ZXI7CisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJGUFNDb3VudGVyLmgi
CisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOworCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQgewor
cHVibGljOgorICAgIFRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0KFFXZWJGcmFtZUFkYXB0ZXIq
KTsKKyAgICB+VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQoKTsKKyAgICB2b2lkIHN5bmNSb290
TGF5ZXIoKTsKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpOworCisgICAgdm9p
ZCBtYXJrRm9yU3luYyhib29sIHNjaGVkdWxlU3luYyk7CisKKyAgICB2b2lkIHNldFJvb3RHcmFw
aGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKKworICAgIHZvaWQgc3luY0xheWVycyhUaW1lcjxU
ZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdD4qKTsKKworICAgIHZvaWQgcmVuZGVyQ29tcG9zaXRl
ZExheWVycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjbGlwKTsKK3ByaXZhdGU6
CisgICAgUVdlYkZyYW1lQWRhcHRlciogbV9mcmFtZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NMYXllcj4gbV9yb290R3JhcGhpY3NMYXllcjsKKyAgICBUaW1lcjxUZXh0dXJlTWFwcGVy
TGF5ZXJDbGllbnRRdD4gbV9zeW5jVGltZXI7CisgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyKiBtX3Jvb3RUZXh0dXJlTWFwcGVyTGF5ZXI7CisgICAgT3duUHRyPFdlYkNvcmU6OlRleHR1
cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyRlBT
Q291bnRlciBtX2Zwc0NvdW50ZXI7Cit9OworI2VuZGlmCisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1VuZG9TdGVwUXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzMyZjllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0LmNwcApAQCAtMCwwICsxLDE0OCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMg
SW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmRvU3RlcFF0LmgiCisK
KyNpbmNsdWRlIDxxb2JqZWN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0
aWMgUVN0cmluZyB1bmRvTmFtZUZvckVkaXRBY3Rpb24oY29uc3QgRWRpdEFjdGlvbiBlZGl0QWN0
aW9uKQoreworICAgIHN3aXRjaCAoZWRpdEFjdGlvbikgeworICAgIGNhc2UgRWRpdEFjdGlvblVu
c3BlY2lmaWVkOgorICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIGNhc2UgRWRpdEFjdGlv
blNldENvbG9yOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIlNldCBDb2xvciIpOworICAg
IGNhc2UgRWRpdEFjdGlvblNldEJhY2tncm91bmRDb2xvcjoKKyAgICAgICAgcmV0dXJuIFFPYmpl
Y3Q6OnRyKCJTZXQgQmFja2dyb3VuZCBDb2xvciIpOworICAgIGNhc2UgRWRpdEFjdGlvblR1cm5P
ZmZLZXJuaW5nOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIlR1cm4gT2ZmIEtlcm5pbmci
KTsKKyAgICBjYXNlIEVkaXRBY3Rpb25UaWdodGVuS2VybmluZzoKKyAgICAgICAgcmV0dXJuIFFP
YmplY3Q6OnRyKCJUaWdodGVuIEtlcm5pbmciKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25Mb29zZW5L
ZXJuaW5nOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIkxvb3NlbiBLZXJuaW5nIik7Cisg
ICAgY2FzZSBFZGl0QWN0aW9uVXNlU3RhbmRhcmRLZXJuaW5nOgorICAgICAgICByZXR1cm4gUU9i
amVjdDo6dHIoIlVzZSBTdGFuZGFyZCBLZXJuaW5nIik7CisgICAgY2FzZSBFZGl0QWN0aW9uVHVy
bk9mZkxpZ2F0dXJlczoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJUdXJuIE9mZiBMaWdh
dHVyZXMiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25Vc2VTdGFuZGFyZExpZ2F0dXJlczoKKyAgICAg
ICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJVc2UgU3RhbmRhcmQgTGlnYXR1cmVzIik7CisgICAgY2Fz
ZSBFZGl0QWN0aW9uVXNlQWxsTGlnYXR1cmVzOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIo
IlVzZSBBbGwgTGlnYXR1cmVzIik7CisgICAgY2FzZSBFZGl0QWN0aW9uUmFpc2VCYXNlbGluZToK
KyAgICAgICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJSYWlzZSBCYXNlbGluZSIpOworICAgIGNhc2Ug
RWRpdEFjdGlvbkxvd2VyQmFzZWxpbmU6CisgICAgICAgIHJldHVybiBRT2JqZWN0Ojp0cigiTG93
ZXIgQmFzZWxpbmUiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25TZXRUcmFkaXRpb25hbENoYXJhY3Rl
clNoYXBlOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIlNldCBUcmFkaXRpb25hbCBDaGFy
YWN0ZXIgU2hhcGUiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25TZXRGb250OgorICAgICAgICByZXR1
cm4gUU9iamVjdDo6dHIoIlNldCBGb250Iik7CisgICAgY2FzZSBFZGl0QWN0aW9uQ2hhbmdlQXR0
cmlidXRlczoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJDaGFuZ2UgQXR0cmlidXRlcyIp
OworICAgIGNhc2UgRWRpdEFjdGlvbkFsaWduTGVmdDoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6
OnRyKCJBbGlnbiBMZWZ0Iik7CisgICAgY2FzZSBFZGl0QWN0aW9uQWxpZ25SaWdodDoKKyAgICAg
ICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJBbGlnbiBSaWdodCIpOworICAgIGNhc2UgRWRpdEFjdGlv
bkNlbnRlcjoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJDZW50ZXIiKTsKKyAgICBjYXNl
IEVkaXRBY3Rpb25KdXN0aWZ5OgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIkp1c3RpZnki
KTsKKyAgICBjYXNlIEVkaXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uOgorICAgICAgICByZXR1
cm4gUU9iamVjdDo6dHIoIlNldCBXcml0aW5nIERpcmVjdGlvbiIpOworICAgIGNhc2UgRWRpdEFj
dGlvblN1YnNjcmlwdDoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJTdWJzY3JpcHQiKTsK
KyAgICBjYXNlIEVkaXRBY3Rpb25Cb2xkOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIkJv
bGQiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb25JdGFsaWNzOgorICAgICAgICByZXR1cm4gUU9iamVj
dDo6dHIoIkl0YWxpYyIpOworICAgIGNhc2UgRWRpdEFjdGlvblN1cGVyc2NyaXB0OgorICAgICAg
ICByZXR1cm4gUU9iamVjdDo6dHIoIlN1cGVyc2NyaXB0Iik7CisgICAgY2FzZSBFZGl0QWN0aW9u
VW5kZXJsaW5lOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIlVuZGVybGluZSIpOworICAg
IGNhc2UgRWRpdEFjdGlvbk91dGxpbmU6CisgICAgICAgIHJldHVybiBRT2JqZWN0Ojp0cigiT3V0
bGluZSIpOworICAgIGNhc2UgRWRpdEFjdGlvblVuc2NyaXB0OgorICAgICAgICByZXR1cm4gUU9i
amVjdDo6dHIoIlVuc2NyaXB0Iik7CisgICAgY2FzZSBFZGl0QWN0aW9uRHJhZzoKKyAgICAgICAg
cmV0dXJuIFFPYmplY3Q6OnRyKCJEcmFnIik7CisgICAgY2FzZSBFZGl0QWN0aW9uQ3V0OgorICAg
ICAgICByZXR1cm4gUU9iamVjdDo6dHIoIkN1dCIpOworICAgIGNhc2UgRWRpdEFjdGlvblBhc3Rl
OgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIlBhc3RlIik7CisgICAgY2FzZSBFZGl0QWN0
aW9uUGFzdGVGb250OgorICAgICAgICByZXR1cm4gUU9iamVjdDo6dHIoIlBhc3RlIEZvbnQiKTsK
KyAgICBjYXNlIEVkaXRBY3Rpb25QYXN0ZVJ1bGVyOgorICAgICAgICByZXR1cm4gUU9iamVjdDo6
dHIoIlBhc3RlIFJ1bGVyIik7CisgICAgY2FzZSBFZGl0QWN0aW9uVHlwaW5nOgorICAgICAgICBy
ZXR1cm4gUU9iamVjdDo6dHIoIlR5cGluZyIpOworICAgIGNhc2UgRWRpdEFjdGlvbkNyZWF0ZUxp
bms6CisgICAgICAgIHJldHVybiBRT2JqZWN0Ojp0cigiQ3JlYXRlIExpbmsiKTsKKyAgICBjYXNl
IEVkaXRBY3Rpb25Vbmxpbms6CisgICAgICAgIHJldHVybiBRT2JqZWN0Ojp0cigiVW5saW5rIik7
CisgICAgY2FzZSBFZGl0QWN0aW9uSW5zZXJ0TGlzdDoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6
OnRyKCJJbnNlcnQgTGlzdCIpOworICAgIGNhc2UgRWRpdEFjdGlvbkZvcm1hdEJsb2NrOgorICAg
ICAgICByZXR1cm4gUU9iamVjdDo6dHIoIkZvcm1hdHRpbmciKTsKKyAgICBjYXNlIEVkaXRBY3Rp
b25JbmRlbnQ6CisgICAgICAgIHJldHVybiBRT2JqZWN0Ojp0cigiSW5kZW50Iik7CisgICAgY2Fz
ZSBFZGl0QWN0aW9uT3V0ZGVudDoKKyAgICAgICAgcmV0dXJuIFFPYmplY3Q6OnRyKCJPdXRkZW50
Iik7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFFTdHJp
bmcoKTsKK30KKworVW5kb1N0ZXBRdDo6VW5kb1N0ZXBRdChXVEY6OlJlZlB0cjxVbmRvU3RlcD4g
c3RlcCkKKyAgICA6IG1fc3RlcChzdGVwKQorICAgICwgbV9maXJzdCh0cnVlKQoreworICAgIG1f
dGV4dCA9IHVuZG9OYW1lRm9yRWRpdEFjdGlvbihzdGVwLT5lZGl0aW5nQWN0aW9uKCkpOworfQor
CisKK1VuZG9TdGVwUXQ6On5VbmRvU3RlcFF0KCkKK3sKK30KKwordm9pZCBVbmRvU3RlcFF0Ojpy
ZWRvKCkKK3sKKyAgICBpZiAobV9maXJzdCkgeworICAgICAgICBtX2ZpcnN0ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc3RlcCkKKyAgICAgICAgbV9zdGVwLT5y
ZWFwcGx5KCk7Cit9CisKKwordm9pZCBVbmRvU3RlcFF0Ojp1bmRvKCkKK3sKKyAgICBpZiAobV9z
dGVwKQorICAgICAgICBtX3N0ZXAtPnVuYXBwbHkoKTsKK30KKworUVN0cmluZyBVbmRvU3RlcFF0
Ojp0ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90ZXh0OworfQorCisvLyB2aW06IHRzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9VbmRv
U3RlcFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1VuZG9TdGVwUXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTU2ZjI2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9VbmRvU3RlcFF0LmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcg
U2VydmljZXMgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVW5kb1N0ZXBRdF9oCisjZGVmaW5lIFVuZG9TdGVw
UXRfaAorCisjaW5jbHVkZSA8UGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDxVbmRv
U3RlcC5oPgorI2luY2x1ZGUgPHFzdHJpbmcuaD4KKyNpbmNsdWRlIDxxd2Via2l0Z2xvYmFsLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitjbGFzcyBXRUJLSVRfRVhQT1JUREFUQSBVbmRv
U3RlcFF0ICB7CisgICAgcHVibGljOgorICAgICAgICB+VW5kb1N0ZXBRdCgpOworCisgICAgICAg
IHZvaWQgcmVkbygpOworICAgICAgICB2b2lkIHVuZG8oKTsKKyAgICAgICAgUVN0cmluZyB0ZXh0
KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBVbmRvU3RlcFF0KFdURjo6UmVmUHRy
PFdlYkNvcmU6OlVuZG9TdGVwPik7CisKKyAgICAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+IG1fc3RlcDsKKyAgICAgICAgYm9vbCBtX2ZpcnN0OworICAgICAgICBRU3RyaW5nIG1f
dGV4dDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlQWRhcHRlcjsKK307CisKKyNlbmRp
ZgorCisvLyB2aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9XZWJFdmVudENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9XZWJFdmVudENvbnZlcnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQ0NDljMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTAsMCArMSwyOTAg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6
YWNrQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFdmVudENvbnZl
cnNpb24uaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1Ub3VjaFBvaW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CisjaW5jbHVkZSA8UVdoZWVsRXZlbnQ+Cisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIHZvaWQgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKFF0OjpL
ZXlib2FyZE1vZGlmaWVycyBrZXlib2FyZE1vZGlmaWVycywgdW5zaWduZWQmIG1vZGlmaWVycykK
K3sKKyAgICBtb2RpZmllcnMgPSAwOworICAgIGlmIChrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpT
aGlmdE1vZGlmaWVyKQorICAgICAgICBtb2RpZmllcnMgfD0gUGxhdGZvcm1FdmVudDo6U2hpZnRL
ZXk7CisgICAgaWYgKGtleWJvYXJkTW9kaWZpZXJzICYgUXQ6OkNvbnRyb2xNb2RpZmllcikKKyAg
ICAgICAgbW9kaWZpZXJzIHw9IFBsYXRmb3JtRXZlbnQ6OkN0cmxLZXk7CisgICAgaWYgKGtleWJv
YXJkTW9kaWZpZXJzICYgUXQ6OkFsdE1vZGlmaWVyKQorICAgICAgICBtb2RpZmllcnMgfD0gUGxh
dGZvcm1FdmVudDo6QWx0S2V5OworICAgIGlmIChrZXlib2FyZE1vZGlmaWVycyAmIFF0OjpNZXRh
TW9kaWZpZXIpCisgICAgICAgIG1vZGlmaWVycyB8PSBQbGF0Zm9ybUV2ZW50OjpNZXRhS2V5Owor
fQorCitzdGF0aWMgdm9pZCBtb3VzZUV2ZW50VHlwZUFuZE1vdXNlQnV0dG9uRnJvbVFFdmVudChj
b25zdCBRRXZlbnQqIGV2ZW50LCBQbGF0Zm9ybUV2ZW50OjpUeXBlJiBtb3VzZUV2ZW50VHlwZSwg
TW91c2VCdXR0b24mIG1vdXNlQnV0dG9uKQoreworICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUoKSkg
eworICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrOgorICAgIGNhc2UgUUV2ZW50
OjpNb3VzZUJ1dHRvblByZXNzOgorICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlUHJlc3NlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNl
QnV0dG9uUmVsZWFzZToKKyAgICAgICAgbW91c2VFdmVudFR5cGUgPSBQbGF0Zm9ybUV2ZW50OjpN
b3VzZVJlbGVhc2VkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6TW91c2VNb3Zl
OgorICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBtb3VzZUV2ZW50VHlwZSA9IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFF0OjpNb3VzZUJ1dHRvbnMgbW91c2VCdXR0b25z
OworCisgICAgY29uc3QgUU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxjb25z
dCBRTW91c2VFdmVudCo+KGV2ZW50KTsKKyAgICBtb3VzZUJ1dHRvbnMgPSBtb3VzZUV2ZW50VHlw
ZSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkID8gbW91c2VFdmVudC0+YnV0dG9ucygpIDog
bW91c2VFdmVudC0+YnV0dG9uKCk7CisKKworICAgIGlmIChtb3VzZUJ1dHRvbnMgJiBRdDo6TGVm
dEJ1dHRvbikKKyAgICAgICAgbW91c2VCdXR0b24gPSBMZWZ0QnV0dG9uOworICAgIGVsc2UgaWYg
KG1vdXNlQnV0dG9ucyAmIFF0OjpSaWdodEJ1dHRvbikKKyAgICAgICAgbW91c2VCdXR0b24gPSBS
aWdodEJ1dHRvbjsKKyAgICBlbHNlIGlmIChtb3VzZUJ1dHRvbnMgJiBRdDo6TWlkQnV0dG9uKQor
ICAgICAgICBtb3VzZUJ1dHRvbiA9IE1pZGRsZUJ1dHRvbjsKKyAgICBlbHNlCisgICAgICAgIG1v
dXNlQnV0dG9uID0gTm9CdXR0b247Cit9CisKK2NsYXNzIFdlYktpdFBsYXRmb3JtTW91c2VFdmVu
dCA6IHB1YmxpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgeworcHVibGljOgorICAgIFdlYktpdFBsYXRm
b3JtTW91c2VFdmVudChRSW5wdXRFdmVudCosIGludCBjbGlja0NvdW50KTsKK307CisKK1dlYktp
dFBsYXRmb3JtTW91c2VFdmVudDo6V2ViS2l0UGxhdGZvcm1Nb3VzZUV2ZW50KFFJbnB1dEV2ZW50
KiBldmVudCwgaW50IGNsaWNrQ291bnQpCit7CisgICAgbV90aW1lc3RhbXAgPSBXVEY6OmN1cnJl
bnRUaW1lKCk7CisKKyAgICBib29sIGlzQ29udGV4dE1lbnVFdmVudCA9IGZhbHNlOworI2lmbmRl
ZiBRVF9OT19DT05URVhUTUVOVQorICAgIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6Q29u
dGV4dE1lbnUpIHsKKyAgICAgICAgaXNDb250ZXh0TWVudUV2ZW50ID0gdHJ1ZTsKKyAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOworICAgICAgICBRQ29udGV4dE1l
bnVFdmVudCogY2UgPSBzdGF0aWNfY2FzdDxRQ29udGV4dE1lbnVFdmVudCo+KGV2ZW50KTsKKyAg
ICAgICAgbV9wb3NpdGlvbiA9IEludFBvaW50KGNlLT5wb3MoKSk7CisgICAgICAgIG1fZ2xvYmFs
UG9zaXRpb24gPSBJbnRQb2ludChjZS0+Z2xvYmFsUG9zKCkpOworICAgICAgICBtX2J1dHRvbiA9
IFJpZ2h0QnV0dG9uOworICAgIH0KKyNlbmRpZgorICAgIGlmICghaXNDb250ZXh0TWVudUV2ZW50
KSB7CisgICAgICAgIFBsYXRmb3JtRXZlbnQ6OlR5cGUgdHlwZTsKKyAgICAgICAgbW91c2VFdmVu
dFR5cGVBbmRNb3VzZUJ1dHRvbkZyb21RRXZlbnQoZXZlbnQsIHR5cGUsIG1fYnV0dG9uKTsKKyAg
ICAgICAgUU1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxRTW91c2VFdmVudCo+
KGV2ZW50KTsKKworICAgICAgICBtX3R5cGUgPSB0eXBlOworICAgICAgICBtX3Bvc2l0aW9uID0g
SW50UG9pbnQobW91c2VFdmVudC0+cG9zKCkpOworICAgICAgICBtX2dsb2JhbFBvc2l0aW9uID0g
SW50UG9pbnQobW91c2VFdmVudC0+Z2xvYmFsUG9zKCkpOworICAgIH0KKworICAgIG1fY2xpY2tD
b3VudCA9IGNsaWNrQ291bnQ7CisgICAgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJk
TW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMoKSwgbV9tb2RpZmllcnMpOworfQorCitQbGF0Zm9y
bU1vdXNlRXZlbnQgY29udmVydE1vdXNlRXZlbnQoUUlucHV0RXZlbnQqIGV2ZW50LCBpbnQgY2xp
Y2tDb3VudCkKK3sKKyAgICByZXR1cm4gV2ViS2l0UGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBj
bGlja0NvdW50KTsKK30KKworY2xhc3MgV2ViS2l0UGxhdGZvcm1XaGVlbEV2ZW50IDogcHVibGlj
IFBsYXRmb3JtV2hlZWxFdmVudCB7CitwdWJsaWM6CisgICAgV2ViS2l0UGxhdGZvcm1XaGVlbEV2
ZW50KFFXaGVlbEV2ZW50KiwgaW50IHdoZWVsU2Nyb2xsTGluZXMpOworCitwcml2YXRlOgorICAg
IHZvaWQgYXBwbHlEZWx0YShpbnQgZGVsdGEsIFF0OjpPcmllbnRhdGlvbiwgaW50IHdoZWVsU2Ny
b2xsTGluZXMpOworfTsKKwordm9pZCBXZWJLaXRQbGF0Zm9ybVdoZWVsRXZlbnQ6OmFwcGx5RGVs
dGEoaW50IGRlbHRhLCBRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24sIGludCB3aGVlbFNjcm9s
bExpbmVzKQoreworICAgIGlmIChvcmllbnRhdGlvbiA9PSBRdDo6SG9yaXpvbnRhbCkgeworICAg
ICAgICBtX2RlbHRhWCA9IGRlbHRhOworICAgICAgICBtX2RlbHRhWSA9IDA7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kZWx0YVggPSAwOworICAgICAgICBtX2RlbHRhWSA9IGRlbHRhOworICAg
IH0KKyAgICBtX3doZWVsVGlja3NYID0gbV9kZWx0YVggLyAxMjAuMGY7CisgICAgbV93aGVlbFRp
Y2tzWSA9IG1fZGVsdGFZIC8gMTIwLjBmOworCisgICAgLy8gU2luY2Ugd2UgcmVxdWVzdCB0aGUg
c2Nyb2xsIGRlbHRhIGJ5IHRoZSBwaXhlbCwgY29udmVydCB0aGUgd2hlZWwgZGVsdGEgdG8gcGl4
ZWwgZGVsdGEgdXNpbmcgdGhlIHN0YW5kYXJkIHNjcm9sbCBzdGVwLgorICAgIC8vIFVzZSB0aGUg
c2FtZSBzaW5nbGUgc2Nyb2xsIHN0ZXAgYXMgUVRleHRFZGl0IChpbiBRVGV4dEVkaXRQcml2YXRl
Ojppbml0IFtoLHZdYmFyLT5zZXRTaW5nbGVTdGVwKQorICAgIHN0YXRpYyBjb25zdCBmbG9hdCBj
RGVmYXVsdFF0U2Nyb2xsU3RlcCA9IDIwLmY7CisgICAgbV9kZWx0YVggPSBtX3doZWVsVGlja3NY
ICogd2hlZWxTY3JvbGxMaW5lcyAqIGNEZWZhdWx0UXRTY3JvbGxTdGVwOworICAgIG1fZGVsdGFZ
ID0gbV93aGVlbFRpY2tzWSAqIHdoZWVsU2Nyb2xsTGluZXMgKiBjRGVmYXVsdFF0U2Nyb2xsU3Rl
cDsKK30KKworV2ViS2l0UGxhdGZvcm1XaGVlbEV2ZW50OjpXZWJLaXRQbGF0Zm9ybVdoZWVsRXZl
bnQoUVdoZWVsRXZlbnQqIGUsIGludCB3aGVlbFNjcm9sbExpbmVzKQoreworICAgIG1fdGltZXN0
YW1wID0gV1RGOjpjdXJyZW50VGltZSgpOworICAgIG1vdXNlRXZlbnRNb2RpZmllcnNGcm9tUXRL
ZXlib2FyZE1vZGlmaWVycyhlLT5tb2RpZmllcnMoKSwgbV9tb2RpZmllcnMpOworICAgIG1fcG9z
aXRpb24gPSBlLT5wb3MoKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0gZS0+Z2xvYmFsUG9zKCk7
CisgICAgbV9ncmFudWxhcml0eSA9IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50OworICAgIG1fZGly
ZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gZmFsc2U7CisgICAgYXBwbHlEZWx0YShlLT5kZWx0
YSgpLCBlLT5vcmllbnRhdGlvbigpLCB3aGVlbFNjcm9sbExpbmVzKTsKK30KKworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCitjbGFzcyBXZWJLaXRQbGF0Zm9ybVRvdWNoRXZlbnQgOiBwdWJsaWMg
UGxhdGZvcm1Ub3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBXZWJLaXRQbGF0Zm9ybVRvdWNoRXZl
bnQoUVRvdWNoRXZlbnQqKTsKK307CisKK2NsYXNzIFdlYktpdFBsYXRmb3JtVG91Y2hQb2ludCA6
IHB1YmxpYyBQbGF0Zm9ybVRvdWNoUG9pbnQgeworcHVibGljOgorICAgIFdlYktpdFBsYXRmb3Jt
VG91Y2hQb2ludChjb25zdCBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCYsIFN0YXRlKTsKK307CisK
K1dlYktpdFBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0UGxhdGZvcm1Ub3VjaEV2ZW50KFFUb3Vj
aEV2ZW50KiBldmVudCkKK3sKKyAgICBzd2l0Y2ggKGV2ZW50LT50eXBlKCkpIHsKKyAgICBjYXNl
IFFFdmVudDo6VG91Y2hCZWdpbjoKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6VG91
Y2hTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoVXBkYXRlOgor
ICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpUb3VjaE1vdmU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1F
dmVudDo6VG91Y2hFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUUV2ZW50OjpUb3VjaENh
bmNlbDoKKyAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6VG91Y2hDYW5jZWw7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNvbnN0IFFMaXN0PFFUb3VjaEV2ZW50OjpUb3VjaFBv
aW50PiYgcG9pbnRzID0gZXZlbnQtPnRvdWNoUG9pbnRzKCk7CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBwb2ludHMuY291bnQoKTsgKytpKSB7CisgICAgICAgIFBsYXRmb3JtVG91Y2hQb2ludDo6
U3RhdGUgc3RhdGUgPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGVFbmQ7CisKKyAgICAg
ICAgc3dpdGNoIChwb2ludHMuYXQoaSkuc3RhdGUoKSkgeworICAgICAgICBjYXNlIFF0OjpUb3Vj
aFBvaW50UmVsZWFzZWQ6CisgICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hSZWxlYXNlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFF0OjpUb3Vj
aFBvaW50TW92ZWQ6CisgICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hNb3ZlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFF0OjpUb3VjaFBvaW50
UHJlc3NlZDoKKyAgICAgICAgICAgIHN0YXRlID0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBy
ZXNzZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBRdDo6VG91Y2hQb2ludFN0
YXRpb25hcnk6CisgICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hT
dGF0aW9uYXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBR
dCBkb2VzIG5vdCBoYXZlIGEgUXQ6OlRvdWNoUG9pbnRDYW5jZWxsZWQgcG9pbnQgc3RhdGUsIHNv
IGlmIHdlIHJlY2VpdmUgYSB0b3VjaCBjYW5jZWwgZXZlbnQsCisgICAgICAgIC8vIHNpbXBseSBj
YW5jZWwgYWxsIHRvdWNoIHBvaW50cyBoZXJlLgorICAgICAgICBpZiAobV90eXBlID09IFBsYXRm
b3JtRXZlbnQ6OlRvdWNoQ2FuY2VsKQorICAgICAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOworCisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFdl
YktpdFBsYXRmb3JtVG91Y2hQb2ludChwb2ludHMuYXQoaSksIHN0YXRlKSk7CisgICAgfQorCisg
ICAgbW91c2VFdmVudE1vZGlmaWVyc0Zyb21RdEtleWJvYXJkTW9kaWZpZXJzKGV2ZW50LT5tb2Rp
ZmllcnMoKSwgbV9tb2RpZmllcnMpOworCisgICAgbV90aW1lc3RhbXAgPSBXVEY6OmN1cnJlbnRU
aW1lKCk7Cit9CisKK1dlYktpdFBsYXRmb3JtVG91Y2hQb2ludDo6V2ViS2l0UGxhdGZvcm1Ub3Vj
aFBvaW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiBwb2ludCwgU3RhdGUgc3RhdGUp
Cit7CisgICAgLy8gVGhlIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50IEFQSSBzdGF0ZXMgdGhhdCBp
ZHMgd2lsbCBiZSA+PSAwLgorICAgIG1faWQgPSBwb2ludC5pZCgpOworICAgIG1fc3RhdGUgPSBz
dGF0ZTsKKyAgICBtX3NjcmVlblBvcyA9IHBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQoKTsKKyAg
ICBtX3BvcyA9IHBvaW50LnBvcygpLnRvUG9pbnQoKTsKKyAgICAvLyBRdCByZXBvcnRzIHRvdWNo
IHBvaW50IHNpemUgYXMgcmVjdGFuZ2xlcywgYnV0IHdlIHdpbGwgcHJldGVuZCBpdCBpcyBhbiBv
dmFsLgorICAgIFFSZWN0IHRvdWNoUmVjdCA9IHBvaW50LnJlY3QoKS50b0FsaWduZWRSZWN0KCk7
CisgICAgaWYgKHRvdWNoUmVjdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9yYWRpdXNYID0gcG9p
bnQucmVjdCgpLndpZHRoKCkgLyAyOworICAgICAgICBtX3JhZGl1c1kgPSBwb2ludC5yZWN0KCku
aGVpZ2h0KCkgLyAyOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGh0dHA6Ly93d3cudzMub3Jn
L1RSLzIwMTEvV0QtdG91Y2gtZXZlbnRzLTIwMTEwNTA1OiAxIGlmIG5vIHZhbHVlIGlzIGtub3du
LgorICAgICAgICBtX3JhZGl1c1ggPSAxOworICAgICAgICBtX3JhZGl1c1kgPSAxOworICAgIH0K
KyAgICBtX2ZvcmNlID0gcG9pbnQucHJlc3N1cmUoKTsKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBt
X3JvdGF0aW9uQW5nbGUgaWYgUVRvdWNoRXZlbnQgYXQgc29tZSBwb2ludCBzdXBwb3J0cyBpdC4K
K30KKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgV2ViS2l0UGxh
dGZvcm1HZXN0dXJlRXZlbnQgOiBwdWJsaWMgUGxhdGZvcm1HZXN0dXJlRXZlbnQgeworcHVibGlj
OgorICAgIFdlYktpdFBsYXRmb3JtR2VzdHVyZUV2ZW50KFFHZXN0dXJlRXZlbnRGYWNhZGUqKTsK
K307CisKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1FdmVudDo6VHlwZSB0b1BsYXRmb3JtRXZlbnRU
eXBlKFF0OjpHZXN0dXJlVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgUXQ6OlRhcEdlc3R1cmU6CisgICAgICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJl
VGFwOworICAgIGNhc2UgUXQ6OlRhcEFuZEhvbGRHZXN0dXJlOgorICAgICAgICByZXR1cm4gUGxh
dGZvcm1FdmVudDo6R2VzdHVyZUxvbmdQcmVzczsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtRXZlbnQ6Ok5vVHlwZTsK
KyAgICB9Cit9CisKK1dlYktpdFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpXZWJLaXRQbGF0Zm9ybUdl
c3R1cmVFdmVudChRR2VzdHVyZUV2ZW50RmFjYWRlKiBldmVudCkKK3sKKyAgICBtX3R5cGUgPSB0
b1BsYXRmb3JtRXZlbnRUeXBlKGV2ZW50LT50eXBlKTsKKyAgICBtX2dsb2JhbFBvc2l0aW9uID0g
ZXZlbnQtPmdsb2JhbFBvczsKKyAgICBtX3Bvc2l0aW9uID0gZXZlbnQtPnBvczsKKyAgICBtX3Rp
bWVzdGFtcCA9IFdURjo6Y3VycmVudFRpbWUoKTsKK30KKworI2VuZGlmCisKK1BsYXRmb3JtV2hl
ZWxFdmVudCBjb252ZXJ0V2hlZWxFdmVudChRV2hlZWxFdmVudCogZXZlbnQsIGludCB3aGVlbFNj
cm9sbExpbmVzKQoreworICAgIHJldHVybiBXZWJLaXRQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQs
IHdoZWVsU2Nyb2xsTGluZXMpOworfQorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK1BsYXRm
b3JtVG91Y2hFdmVudCBjb252ZXJ0VG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7Cisg
ICAgcmV0dXJuIFdlYktpdFBsYXRmb3JtVG91Y2hFdmVudChldmVudCk7Cit9CisjZW5kaWYKKwor
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK1BsYXRmb3JtR2VzdHVyZUV2ZW50IGNvbnZlcnRH
ZXN0dXJlKFFHZXN0dXJlRXZlbnRGYWNhZGUqIGV2ZW50KQoreworICAgIHJldHVybiBXZWJLaXRQ
bGF0Zm9ybUdlc3R1cmVFdmVudChldmVudCk7Cit9CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvV2ViRXZlbnRDb252ZXJzaW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZjhjZDgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1dlYkV2ZW50Q29udmVyc2lvbi5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNiBaYWNr
IFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDExIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV2ViRXZlbnRDb252ZXJzaW9uX2gKKyNkZWZp
bmUgV2ViRXZlbnRDb252ZXJzaW9uX2gKKworI2luY2x1ZGUgPFFQb2ludD4KKworUVRfQkVHSU5f
TkFNRVNQQUNFCitjbGFzcyBRSW5wdXRFdmVudDsKK2NsYXNzIFFXaGVlbEV2ZW50OworY2xhc3Mg
UVRvdWNoRXZlbnQ7CitRVF9FTkRfTkFNRVNQQUNFCisKK3N0cnVjdCBRR2VzdHVyZUV2ZW50RmFj
YWRlIHsKKyAgICBRdDo6R2VzdHVyZVR5cGUgdHlwZTsKKyAgICBRUG9pbnQgZ2xvYmFsUG9zOwor
ICAgIFFQb2ludCBwb3M7Cit9OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRm
b3JtTW91c2VFdmVudDsKK2NsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKKworUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGNvbnZlcnRNb3VzZUV2ZW50KFFJbnB1dEV2ZW50KiwgaW50IGNsaWNrQ291bnQpOwor
UGxhdGZvcm1XaGVlbEV2ZW50IGNvbnZlcnRXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiwgaW50IHdo
ZWVsU2Nyb2xsTGluZXMpOworCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFBsYXRm
b3JtVG91Y2hFdmVudDsKK1BsYXRmb3JtVG91Y2hFdmVudCBjb252ZXJ0VG91Y2hFdmVudChRVG91
Y2hFdmVudCopOworI2VuZGlmCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCitjbGFzcyBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDsKK1BsYXRmb3JtR2VzdHVyZUV2ZW50IGNvbnZlcnRHZXN0dXJl
KFFHZXN0dXJlRXZlbnRGYWNhZGUqKTsKKyNlbmRpZgorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjkxMzhkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3FncmFwaGljc3dlYnZpZXcuY3BwCkBAIC0wLDAgKzEsMTE2NyBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IEdpcmlzaCBSYW1ha3Jp
c2huYW4gPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAicWdyYXBoaWNzd2Vidmlldy5oIgorCisjaWYgIWRlZmluZWQoUVRfTk9fR1JBUEhJ
Q1NWSUVXKQorCisjaW5jbHVkZSAiUGFnZUNsaWVudFF0LmgiCisjaW5jbHVkZSAicXdlYmZyYW1l
LmgiCisjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKKyNpbmNsdWRlICJxd2VicGFnZS5oIgorI2lu
Y2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpbmNsdWRlIDxxYXBwbGljYXRpb24uaD4KKyNpbmNsdWRl
IDxxZ3JhcGhpY3NzY2VuZS5oPgorI2luY2x1ZGUgPHFncmFwaGljc3NjZW5lZXZlbnQuaD4KKyNp
bmNsdWRlIDxxZ3JhcGhpY3N2aWV3Lmg+CisjaW5jbHVkZSA8cW1ldGFvYmplY3QuaD4KKyNpbmNs
dWRlIDxxcGl4bWFwY2FjaGUuaD4KKyNpbmNsdWRlIDxxc2Nyb2xsYmFyLmg+CisjaW5jbHVkZSA8
cXNoYXJlZHBvaW50ZXIuaD4KKyNpbmNsdWRlIDxxc3R5bGVvcHRpb24uaD4KKyNpbmNsdWRlIDxx
dGltZXIuaD4KKworI2lmIGRlZmluZWQoUV9XU19YMTEpCisjaW5jbHVkZSA8UVgxMUluZm8+Cisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2NsYXNzIFFHcmFwaGljc1dlYlZp
ZXdQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZShRR3JhcGhp
Y3NXZWJWaWV3KiBwYXJlbnQpCisgICAgICAgIDogcShwYXJlbnQpCisgICAgICAgICwgcGFnZSgw
KQorICAgICAgICAsIHJlc2l6ZXNUb0NvbnRlbnRzKGZhbHNlKQorICAgICAgICAsIHJlbmRlckhp
bnRzKFFQYWludGVyOjpUZXh0QW50aWFsaWFzaW5nIHwgUVBhaW50ZXI6OlNtb290aFBpeG1hcFRy
YW5zZm9ybSkKKyAgICB7IH0KKworICAgIHZpcnR1YWwgflFHcmFwaGljc1dlYlZpZXdQcml2YXRl
KCk7CisKKyAgICB2b2lkIHVwZGF0ZVJlc2l6ZXNUb0NvbnRlbnRzRm9yUGFnZSgpOworCisgICAg
dm9pZCBkZXRhY2hDdXJyZW50UGFnZSgpOworCisgICAgdm9pZCBfcV9kb0xvYWRGaW5pc2hlZChi
b29sIHN1Y2Nlc3MpOworICAgIHZvaWQgX3FfY29udGVudHNTaXplQ2hhbmdlZChjb25zdCBRU2l6
ZSYpOworICAgIHZvaWQgX3Ffc2NhbGVDaGFuZ2VkKCk7CisKKyAgICB2b2lkIF9xX3BhZ2VEZXN0
cm95ZWQoKTsKKworICAgIFFHcmFwaGljc1dlYlZpZXcqIHE7CisgICAgUVdlYlBhZ2UqIHBhZ2U7
CisgICAgYm9vbCByZXNpemVzVG9Db250ZW50czsKKyAgICBRUGFpbnRlcjo6UmVuZGVySGludHMg
cmVuZGVySGludHM7CisKKyAgICBRR3JhcGhpY3NJdGVtT3ZlcmxheSogb3ZlcmxheSgpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmQtPmNsaWVudCkKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gcGFnZUNsaWVudCgpLT5vdmVybGF5OworICAg
IH0KKworICAgIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQqIHBhZ2VDbGllbnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OlBhZ2VDbGllbnRRR3Jh
cGhpY3NXaWRnZXQqPiAocGFnZS0+ZC0+Y2xpZW50LmRhdGEoKSk7CisgICAgfSAKK307CisKK1FH
cmFwaGljc1dlYlZpZXdQcml2YXRlOjp+UUdyYXBoaWNzV2ViVmlld1ByaXZhdGUoKQoreworICAg
IGRldGFjaEN1cnJlbnRQYWdlKCk7Cit9CisKK3ZvaWQgUUdyYXBoaWNzV2ViVmlld1ByaXZhdGU6
Ol9xX2RvTG9hZEZpbmlzaGVkKGJvb2wgc3VjY2VzcykKK3sKKyAgICAvLyBJZiB0aGUgcGFnZSBo
YWQgbm8gdGl0bGUsIHN0aWxsIG1ha2Ugc3VyZSBpdCBnZXRzIHRoZSBzaWduYWwKKyAgICBpZiAo
cS0+dGl0bGUoKS5pc0VtcHR5KCkpCisgICAgICAgIGVtaXQgcS0+dXJsQ2hhbmdlZChxLT51cmwo
KSk7CisKKyAgICBlbWl0IHEtPmxvYWRGaW5pc2hlZChzdWNjZXNzKTsKK30KKwordm9pZCBRR3Jh
cGhpY3NXZWJWaWV3UHJpdmF0ZTo6X3FfcGFnZURlc3Ryb3llZCgpCit7CisgICAgcGFnZSA9IDA7
CisgICAgcS0+c2V0UGFnZSgwKTsKK30KKwordm9pZCBRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6
dXBkYXRlUmVzaXplc1RvQ29udGVudHNGb3JQYWdlKCkKK3sKKyAgICBBU1NFUlQocGFnZSk7Cisg
ICAgcGFnZUNsaWVudCgpLT52aWV3UmVzaXplc1RvQ29udGVudHMgPSByZXNpemVzVG9Db250ZW50
czsKKyAgICBpZiAocmVzaXplc1RvQ29udGVudHMpIHsKKyAgICAgICAgLy8gcmVzaXplcyB0byBj
b250ZW50cyBtb2RlIHJlcXVpcmVzIHByZWZlcnJlZCBjb250ZW50cyBzaXplIHRvIGJlIHNldAor
ICAgICAgICBpZiAoIXBhZ2UtPnByZWZlcnJlZENvbnRlbnRzU2l6ZSgpLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgIHBhZ2UtPnNldFByZWZlcnJlZENvbnRlbnRzU2l6ZShRU2l6ZSg5NjAsIDgwMCkp
OworCisgICAgICAgIFFPYmplY3Q6OmNvbm5lY3QocGFnZS0+bWFpbkZyYW1lKCksIFNJR05BTChj
b250ZW50c1NpemVDaGFuZ2VkKFFTaXplKSksCisgICAgICAgICAgICBxLCBTTE9UKF9xX2NvbnRl
bnRzU2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSksIFF0OjpVbmlxdWVDb25uZWN0aW9uKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KHBhZ2UtPm1haW5GcmFtZSgp
LCBTSUdOQUwoY29udGVudHNTaXplQ2hhbmdlZChRU2l6ZSkpLAorICAgICAgICAgICAgcSwgU0xP
VChfcV9jb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikpKTsKKyAgICB9CisgICAgcGFn
ZS0+ZC0+bWFpbkZyYW1lQWRhcHRlcigpLT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhyZXNpemVz
VG9Db250ZW50cyk7CisgICAgcGFnZS0+ZC0+bWFpbkZyYW1lQWRhcHRlcigpLT5zZXREZWxlZ2F0
ZXNTY3JvbGxpbmcocmVzaXplc1RvQ29udGVudHMpOworfQorCit2b2lkIFFHcmFwaGljc1dlYlZp
ZXdQcml2YXRlOjpfcV9jb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFFTaXplJiBzaXplKQorewor
ICAgIGlmICghcmVzaXplc1RvQ29udGVudHMpCisgICAgICAgIHJldHVybjsKKyAgICBxLT5zZXRH
ZW9tZXRyeShRUmVjdEYocS0+Z2VvbWV0cnkoKS50b3BMZWZ0KCksIHNpemUpKTsKK30KKwordm9p
ZCBRR3JhcGhpY3NXZWJWaWV3UHJpdmF0ZTo6X3Ffc2NhbGVDaGFuZ2VkKCkKK3sKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICBwYWdlLT5kLT5tYWluRnJhbWVBZGFwdGVyKCktPnNldFRpbGVkQmFja2luZ1N0b3JlQ29udGVu
dHNTY2FsZShxLT5zY2FsZSgpKTsKKyNlbmRpZgorfQorCisvKiEKKyAgICBcY2xhc3MgUUdyYXBo
aWNzV2ViVmlldworICAgIFxicmllZiBUaGUgUUdyYXBoaWNzV2ViVmlldyBjbGFzcyBhbGxvd3Mg
V2ViIGNvbnRlbnQgdG8gYmUgYWRkZWQgdG8gYSBHcmFwaGljc1ZpZXcuCisgICAgXHNpbmNlIDQu
NgorCisgICAgQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyByZW5kZXJzIFdlYiBjb250ZW50IGZy
b20gYSBVUkwgb3Igc3VwcGxpZWQgYXMgZGF0YSwgdXNpbmcKKyAgICBmZWF0dXJlcyBvZiB0aGUg
UXQgV2ViS2l0IG1vZHVsZS4KKworICAgIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBp
dGVtIGFyZSBub3Qgc2V0LCB0aGV5IHdpbGwgZGVmYXVsdCB0byA4MDAgYW5kIDYwMCwKKyAgICBy
ZXNwZWN0aXZlbHkuIElmIHRoZSBXZWIgcGFnZSBjb250ZW50cyBpcyBsYXJnZXIgdGhhbiB0aGF0
LCBzY3JvbGxiYXJzIHdpbGwgYmUgc2hvd24KKyAgICBpZiBub3QgZGlzYWJsZWQgZXhwbGljaXRs
eS4KKworICAgIFxzZWN0aW9uMSBCcm93c2VyIEZlYXR1cmVzCisKKyAgICBNYW55IG9mIHRoZSBm
dW5jdGlvbnMsIHNpZ25hbHMgYW5kIHByb3BlcnRpZXMgcHJvdmlkZWQgYnkgUVdlYlZpZXcgYXJl
IGFsc28gYXZhaWxhYmxlCisgICAgZm9yIHRoaXMgaXRlbSwgbWFraW5nIGl0IHNpbXBsZSB0byBh
ZGFwdCBleGlzdGluZyBjb2RlIHRvIHVzZSBRR3JhcGhpY3NXZWJWaWV3IGluc3RlYWQKKyAgICBv
ZiBRV2ViVmlldy4KKworICAgIFRoZSBpdGVtIHVzZXMgYSBRV2ViUGFnZSBvYmplY3QgdG8gcGVy
Zm9ybSB0aGUgcmVuZGVyaW5nIG9mIFdlYiBjb250ZW50LCBhbmQgdGhpcyBjYW4KKyAgICBiZSBv
YnRhaW5lZCB3aXRoIHRoZSBwYWdlKCkgZnVuY3Rpb24sIGVuYWJsaW5nIHRoZSBkb2N1bWVudCBp
dHNlbGYgdG8gYmUgYWNjZXNzZWQgYW5kCisgICAgbW9kaWZpZWQuCisKKyAgICBBcyB3aXRoIFFX
ZWJWaWV3LCB0aGUgaXRlbSByZWNvcmRzIHRoZSBicm93c2luZyBoaXN0b3J5IHVzaW5nIGEgUVdl
Ykhpc3Rvcnkgb2JqZWN0LAorICAgIGFjY2Vzc2libGUgdXNpbmcgdGhlIGhpc3RvcnkoKSBmdW5j
dGlvbi4gVGhlIFFXZWJTZXR0aW5ncyBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZQorICAgIGNvbmZp
Z3VyYXRpb24gb2YgdGhlIGJyb3dzZXIgY2FuIGJlIG9idGFpbmVkIHdpdGggdGhlIHNldHRpbmdz
KCkgZnVuY3Rpb24sIGVuYWJsaW5nCisgICAgZmVhdHVyZXMgbGlrZSBwbHVnaW4gc3VwcG9ydCB0
byBiZSBjdXN0b21pemVkIGZvciBlYWNoIGl0ZW0uCisKKyAgICBcc2EgUVdlYlZpZXcsIFFHcmFw
aGljc1RleHRJdGVtCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojp0
aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyAmdGl0bGUpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBl
bWl0dGVkIHdoZW5ldmVyIHRoZSBcYSB0aXRsZSBvZiB0aGUgbWFpbiBmcmFtZSBjaGFuZ2VzLgor
CisgICAgXHNhIHRpdGxlKCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFHcmFwaGljc1dlYlZp
ZXc6OnVybENoYW5nZWQoY29uc3QgUVVybCAmdXJsKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1p
dHRlZCB3aGVuIHRoZSBcYSB1cmwgb2YgdGhlIHZpZXcgY2hhbmdlcy4KKworICAgIFxzYSB1cmwo
KSwgbG9hZCgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRR3JhcGhpY3NXZWJWaWV3OjppY29u
Q2hhbmdlZCgpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRoZSBpY29u
IG9mIHRoZSBwYWdlIGlzIGxvYWRlZCBvciBjaGFuZ2VzLgorCisgICAgSW4gb3JkZXIgZm9yIGlj
b25zIHRvIGJlIGxvYWRlZCwgeW91IHdpbGwgbmVlZCB0byBzZXQgYW4gaWNvbiBkYXRhYmFzZSBw
YXRoCisgICAgdXNpbmcgUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQYXRoKCkuCisKKyAg
ICBcc2EgaWNvbigpLCBRV2ViU2V0dGluZ3M6OnNldEljb25EYXRhYmFzZVBhdGgoKQorKi8KKwor
LyohCisgICAgXGZuIHZvaWQgUUdyYXBoaWNzV2ViVmlldzo6bG9hZFN0YXJ0ZWQoKQorCisgICAg
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgbmV3IGxvYWQgb2YgdGhlIHBhZ2UgaXMgc3Rh
cnRlZC4KKworICAgIFxzYSBsb2FkUHJvZ3Jlc3MoKSwgbG9hZEZpbmlzaGVkKCkKKyovCisKKy8q
IQorICAgIFxmbiB2b2lkIFFHcmFwaGljc1dlYlZpZXc6OmxvYWRGaW5pc2hlZChib29sIG9rKQor
CisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgbG9hZCBvZiB0aGUgcGFnZSBpcyBm
aW5pc2hlZC4KKyAgICBcYSBvayB3aWxsIGluZGljYXRlIHdoZXRoZXIgdGhlIGxvYWQgd2FzIHN1
Y2Nlc3NmdWwgb3IgYW55IGVycm9yIG9jY3VycmVkLgorCisgICAgXHNhIGxvYWRTdGFydGVkKCkK
KyovCisKKy8qIQorICAgIENvbnN0cnVjdHMgYW4gZW1wdHkgUUdyYXBoaWNzV2ViVmlldyB3aXRo
IHBhcmVudCBcYSBwYXJlbnQuCisKKyAgICBcc2EgbG9hZCgpCisqLworUUdyYXBoaWNzV2ViVmll
dzo6UUdyYXBoaWNzV2ViVmlldyhRR3JhcGhpY3NJdGVtKiBwYXJlbnQpCisgICAgOiBRR3JhcGhp
Y3NXaWRnZXQocGFyZW50KQorICAgICwgZChuZXcgUUdyYXBoaWNzV2ViVmlld1ByaXZhdGUodGhp
cykpCit7CisgICAgc2V0RmxhZyhRR3JhcGhpY3NJdGVtOjpJdGVtVXNlc0V4dGVuZGVkU3R5bGVP
cHRpb24sIHRydWUpOworICAgIHNldEFjY2VwdERyb3BzKHRydWUpOworICAgIHNldEFjY2VwdEhv
dmVyRXZlbnRzKHRydWUpOworICAgIHNldEFjY2VwdFRvdWNoRXZlbnRzKHRydWUpOworICAgIHNl
dEZvY3VzUG9saWN5KFF0OjpTdHJvbmdGb2N1cyk7CisgICAgc2V0RmxhZyhRR3JhcGhpY3NJdGVt
OjpJdGVtQ2xpcHNDaGlsZHJlblRvU2hhcGUsIHRydWUpOworI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQorICAgIFFPYmplY3Q6OmNvbm5lY3QodGhpcywgU0lHTkFMKHNjYWxlQ2hhbmdlZCgp
KSwgdGhpcywgU0xPVChfcV9zY2FsZUNoYW5nZWQoKSkpOworI2VuZGlmCit9CisKKy8qIQorICAg
IERlc3Ryb3lzIHRoZSBpdGVtLgorKi8KK1FHcmFwaGljc1dlYlZpZXc6On5RR3JhcGhpY3NXZWJW
aWV3KCkKK3sKKyAgICBkZWxldGUgZDsKK30KKworLyohCisgICAgUmV0dXJucyBhIHBvaW50ZXIg
dG8gdGhlIHVuZGVybHlpbmcgd2ViIHBhZ2UuCisKKyAgICBcc2Egc2V0UGFnZSgpCisqLworUVdl
YlBhZ2UqIFFHcmFwaGljc1dlYlZpZXc6OnBhZ2UoKSBjb25zdAoreworICAgIGlmICghZC0+cGFn
ZSkgeworICAgICAgICBRR3JhcGhpY3NXZWJWaWV3KiB0aGF0ID0gY29uc3RfY2FzdDxRR3JhcGhp
Y3NXZWJWaWV3Kj4odGhpcyk7CisgICAgICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdl
KHRoYXQpOworCisgICAgICAgIC8vIERlZmF1bHQgdG8gbm90IGhhdmluZyBhIGJhY2tncm91bmQs
IGluIHRoZSBjYXNlCisgICAgICAgIC8vIHRoZSBwYWdlIGRvZXNuJ3QgcHJvdmlkZSBvbmUuCisg
ICAgICAgIFFQYWxldHRlIHBhbGV0dGUgPSBRQXBwbGljYXRpb246OnBhbGV0dGUoKTsKKyAgICAg
ICAgcGFsZXR0ZS5zZXRCcnVzaChRUGFsZXR0ZTo6QmFzZSwgUUNvbG9yOjpmcm9tUmdiRigwLCAw
LCAwLCAwKSk7CisgICAgICAgIHBhZ2UtPnNldFBhbGV0dGUocGFsZXR0ZSk7CisKKyAgICAgICAg
dGhhdC0+c2V0UGFnZShwYWdlKTsKKyAgICB9CisKKyAgICByZXR1cm4gZC0+cGFnZTsKK30KKwor
LyohIFxyZWltcAorKi8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6cGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KikK
K3sKKyAgICBRUGFpbnRlcjo6UmVuZGVySGludHMgb2xkSGludHMgPSBwYWludGVyLT5yZW5kZXJI
aW50cygpOworICAgIHBhaW50ZXItPnNldFJlbmRlckhpbnRzKG9sZEhpbnRzIHwgZC0+cmVuZGVy
SGludHMpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIC8vIFFXZWJGcmFtZTo6
cmVuZGVyIGlzIGEgcHVibGljIEFQSSwgYnlwYXNzIGl0IGZvciB0aWxlZCByZW5kZXJpbmcgc28g
YmVoYXZpb3IgZG9lcyBub3QgbmVlZCB0byBjaGFuZ2UuCisgICAgaWYgKHBhZ2UoKS0+bWFpbkZy
YW1lKCktPmQtPnJlbmRlckZyb21UaWxlZEJhY2tpbmdTdG9yZShwYWludGVyLCBvcHRpb24tPmV4
cG9zZWRSZWN0LnRvQWxpZ25lZFJlY3QoKSkpIHsKKyAgICAgICAgcGFpbnRlci0+c2V0UmVuZGVy
SGludHMob2xkSGludHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgcGFn
ZSgpLT5tYWluRnJhbWUoKS0+cmVuZGVyKHBhaW50ZXIsIFFXZWJGcmFtZTo6QWxsTGF5ZXJzLCBv
cHRpb24tPmV4cG9zZWRSZWN0LnRvUmVjdCgpKTsKKyAgICBwYWludGVyLT5zZXRSZW5kZXJIaW50
cyhvbGRIaW50cyk7Cit9CisKKy8qISBccmVpbXAKKyovCitib29sIFFHcmFwaGljc1dlYlZpZXc6
OnNjZW5lRXZlbnQoUUV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBSZS1pbXBsZW1lbnRlZCBpbiBv
cmRlciB0byBhbGxvd3MgZml4aW5nIGV2ZW50LXJlbGF0ZWQgYnVncyBpbiBwYXRjaCByZWxlYXNl
cy4KKworICAgIGlmIChkLT5wYWdlICYmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6VG91Y2hC
ZWdpbgorICAgICAgICB8fCBldmVudC0+dHlwZSgpID09IFFFdmVudDo6VG91Y2hFbmQKKyAgICAg
ICAgfHwgZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoVXBkYXRlCisgICAgICAgIHx8IGV2
ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpUb3VjaENhbmNlbCkpIHsKKyAgICAgICAgZC0+cGFnZS0+
ZXZlbnQoZXZlbnQpOworCisgICAgICAgIC8vIEFsd2F5cyByZXR1cm4gdHJ1ZSBzbyB0aGF0IHdl
J2xsIHJlY2VpdmUgYWxzbyBUb3VjaFVwZGF0ZSBhbmQgVG91Y2hFbmQgZXZlbnRzCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBRR3JhcGhpY3NXaWRnZXQ6OnNjZW5l
RXZlbnQoZXZlbnQpOworfQorCisvKiEgXHJlaW1wCisqLworUVZhcmlhbnQgUUdyYXBoaWNzV2Vi
Vmlldzo6aXRlbUNoYW5nZShHcmFwaGljc0l0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBRVmFyaWFu
dCYgdmFsdWUpCit7CisgICAgc3dpdGNoIChjaGFuZ2UpIHsKKyAgICAvLyBEaWZmZXJlbnRseSBm
cm9tIFFXZWJWaWV3LCBpdCBpcyBpbnRlcmVzdGluZyB0byBRR3JhcGhpY3NXZWJWaWV3IHRvIGhh
bmRsZQorICAgIC8vIHBvc3QgbW91c2UgY3Vyc29yIGNoYW5nZSBub3RpZmljYXRpb25zLiBSZWFz
b246ICdJdGVtQ3Vyc29yQ2hhbmdlJyBpcyBzZW50CisgICAgLy8gYXMgdGhlIGZpcnN0IGFjdGlv
biBpbiBRR3JhcGhpY3NJdGVtOjpzZXRDdXJzb3IgaW1wbGVtZW50YXRpb24sIGFuZCBhdCB0aGF0
CisgICAgLy8gaXRlbSB3aWRnZXQncyBjdXJzb3IgaGFzIG5vdCBiZWVuIGVmZmVjdGl2ZWx5IGNo
YW5nZWQgeWV0LgorICAgIC8vIEFmdGVyIGN1cnNvciBpcyBwcm9wZXJseSBzZXQgKGF0ICdJdGVt
Q3Vyc29ySGFzQ2hhbmdlZCcgZW1pc3Npb24gdGltZSksIHdlCisgICAgLy8gZmlyZSAnQ3Vyc29y
Q2hhbmdlJy4KKyAgICBjYXNlIEl0ZW1DdXJzb3JDaGFuZ2U6CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICBjYXNlIEl0ZW1DdXJzb3JIYXNDaGFuZ2VkOiB7CisgICAgICAgIFFFdmVudCBldmVu
dChRRXZlbnQ6OkN1cnNvckNoYW5nZSk7CisgICAgICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50
KHRoaXMsICZldmVudCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFFHcmFwaGljc1dpZGdldDo6
aXRlbUNoYW5nZShjaGFuZ2UsIHZhbHVlKTsKK30KKworLyohIFxyZWltcAorKi8KK1FTaXplRiBR
R3JhcGhpY3NXZWJWaWV3OjpzaXplSGludChRdDo6U2l6ZUhpbnQgd2hpY2gsIGNvbnN0IFFTaXpl
RiYgY29uc3RyYWludCkgY29uc3QKK3sKKyAgICBpZiAod2hpY2ggPT0gUXQ6OlByZWZlcnJlZFNp
emUpCisgICAgICAgIHJldHVybiBRU2l6ZUYoODAwLCA2MDApOyAvLyAjIyMKKyAgICByZXR1cm4g
UUdyYXBoaWNzV2lkZ2V0OjpzaXplSGludCh3aGljaCwgY29uc3RyYWludCk7Cit9CisKKy8qISBc
cmVpbXAKKyovCitRVmFyaWFudCBRR3JhcGhpY3NXZWJWaWV3OjppbnB1dE1ldGhvZFF1ZXJ5KFF0
OjpJbnB1dE1ldGhvZFF1ZXJ5IHF1ZXJ5KSBjb25zdAoreworICAgIGlmIChkLT5wYWdlKQorICAg
ICAgICByZXR1cm4gZC0+cGFnZS0+aW5wdXRNZXRob2RRdWVyeShxdWVyeSk7CisgICAgcmV0dXJu
IFFWYXJpYW50KCk7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRR3JhcGhpY3NXZWJWaWV3Ojpy
ZW5kZXJIaW50cworICAgIFxzaW5jZSA0LjgKKyAgICBcYnJpZWYgdGhlIGRlZmF1bHQgcmVuZGVy
IGhpbnRzIGZvciB0aGUgdmlldworCisgICAgVGhlc2UgaGludHMgYXJlIHVzZWQgdG8gaW5pdGlh
bGl6ZSBRUGFpbnRlciBiZWZvcmUgcGFpbnRpbmcgdGhlIFdlYiBwYWdlLgorCisgICAgUVBhaW50
ZXI6OlRleHRBbnRpYWxpYXNpbmcgYW5kIFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0g
YXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQgd2lsbCBiZQorICAgIHVzZWQgdG8gcmVuZGVyIHRo
ZSBpdGVtIGluIGFkZGl0aW9uIG9mIHdoYXQgaGFzIGJlZW4gc2V0IG9uIHRoZSBwYWludGVyIGdp
dmVuIGJ5IFFHcmFwaGljc1NjZW5lLgorCisgICAgXHNhIFFQYWludGVyOjpyZW5kZXJIaW50cygp
CisqLworCisvKiEKKyAgICBcc2luY2UgNC44CisgICAgUmV0dXJucyB0aGUgcmVuZGVyIGhpbnRz
IHVzZWQgYnkgdGhlIHZpZXcgdG8gcmVuZGVyIGNvbnRlbnQuCisKKyAgICBcc2EgUVBhaW50ZXI6
OnJlbmRlckhpbnRzKCkKKyovCitRUGFpbnRlcjo6UmVuZGVySGludHMgUUdyYXBoaWNzV2ViVmll
dzo6cmVuZGVySGludHMoKSBjb25zdAoreworICAgIHJldHVybiBkLT5yZW5kZXJIaW50czsKK30K
KworLyohCisgICAgXHNpbmNlIDQuOAorICAgIFNldHMgdGhlIHJlbmRlciBoaW50cyB1c2VkIGJ5
IHRoZSB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgXGEgaGludHMuCisKKyAgICBcc2EgUVBhaW50ZXI6
OnNldFJlbmRlckhpbnRzKCkKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OnNldFJlbmRlckhp
bnRzKFFQYWludGVyOjpSZW5kZXJIaW50cyBoaW50cykKK3sKKyAgICBpZiAoaGludHMgPT0gZC0+
cmVuZGVySGludHMpCisgICAgICAgIHJldHVybjsKKyAgICBkLT5yZW5kZXJIaW50cyA9IGhpbnRz
OworICAgIHVwZGF0ZSgpOworfQorCisvKiEKKyAgICBcc2luY2UgNC44CisgICAgSWYgXGEgZW5h
YmxlZCBpcyB0cnVlLCBlbmFibGVzIHRoZSBzcGVjaWZpZWQgcmVuZGVyIFxhIGhpbnQ7IG90aGVy
d2lzZQorICAgIGRpc2FibGVzIGl0LgorCisgICAgXHNhIHJlbmRlckhpbnRzLCBRUGFpbnRlcjo6
cmVuZGVySGludHMoKQorKi8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c2V0UmVuZGVySGludChR
UGFpbnRlcjo6UmVuZGVySGludCBoaW50LCBib29sIGVuYWJsZWQpCit7CisgICAgUVBhaW50ZXI6
OlJlbmRlckhpbnRzIG9sZEhpbnRzID0gZC0+cmVuZGVySGludHM7CisgICAgaWYgKGVuYWJsZWQp
CisgICAgICAgIGQtPnJlbmRlckhpbnRzIHw9IGhpbnQ7CisgICAgZWxzZQorICAgICAgICBkLT5y
ZW5kZXJIaW50cyAmPSB+aGludDsKKyAgICBpZiAob2xkSGludHMgIT0gZC0+cmVuZGVySGludHMp
CisgICAgICAgIHVwZGF0ZSgpOworfQorCisvKiEgXHJlaW1wCisqLworYm9vbCBRR3JhcGhpY3NX
ZWJWaWV3OjpldmVudChRRXZlbnQqIGV2ZW50KQoreworICAgIC8vIFJlLWltcGxlbWVudGVkIGlu
IG9yZGVyIHRvIGFsbG93cyBmaXhpbmcgZXZlbnQtcmVsYXRlZCBidWdzIGluIHBhdGNoIHJlbGVh
c2VzLgorCisgICAgaWYgKGQtPnBhZ2UpIHsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
UUV2ZW50OjpQYWxldHRlQ2hhbmdlKQorICAgICAgICAgICAgZC0+cGFnZS0+c2V0UGFsZXR0ZShw
YWxldHRlKCkpOworI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQorICAgICAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVDb250ZXh0TWVudSkgeworICAgICAgICAg
ICAgaWYgKCFpc0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgICAgIFFHcmFwaGljc1NjZW5lQ29udGV4dE1lbnVFdmVudCogZXYgPSBzdGF0aWNfY2Fz
dDxRR3JhcGhpY3NTY2VuZUNvbnRleHRNZW51RXZlbnQqPihldmVudCk7CisgICAgICAgICAgICBR
Q29udGV4dE1lbnVFdmVudCBmYWtlRXZlbnQoUUNvbnRleHRNZW51RXZlbnQ6OlJlYXNvbihldi0+
cmVhc29uKCkpLCBldi0+cG9zKCkudG9Qb2ludCgpKTsKKyAgICAgICAgICAgIGlmIChkLT5wYWdl
LT5zd2FsbG93Q29udGV4dE1lbnVFdmVudCgmZmFrZUV2ZW50KSkgeworICAgICAgICAgICAgICAg
IGV2ZW50LT5hY2NlcHQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGQtPnBhZ2UtPnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9u
cyhmYWtlRXZlbnQucG9zKCkpOworICAgICAgICB9IGVsc2UKKyNlbmRpZiAvLyBRVF9OT19DT05U
RVhUTUVOVQorICAgICAgICB7CisjaWZuZGVmIFFUX05PX0NVUlNPUgorICAgICAgICAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpDdXJzb3JDaGFuZ2UpIHsKKyAgICAgICAgICAgICAg
ICAvLyBBbiB1bnNldEN1cnNvciB3aWxsIHNldCB0aGUgY3Vyc29yIHRvIFF0OjpBcnJvd0N1cnNv
ci4KKyAgICAgICAgICAgICAgICAvLyBUaHVzIHRoaXMgY3Vyc29yIGNoYW5nZSBtaWdodCBiZSBh
IFFXaWRnZXQ6OnVuc2V0Q3Vyc29yKCkKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIG5v
dCB0aGUgY2FzZSBhbmQgaXQgY2FtZSBmcm9tIFdlYkNvcmUsIHRoZQorICAgICAgICAgICAgICAg
IC8vIFFXZWJQYWdlQ2xpZW50IGFscmVhZHkgaGFzIHNldCBpdHMgY3Vyc29yIGludGVybmFsbHkK
KyAgICAgICAgICAgICAgICAvLyB0byBRdDo6QXJyb3dDdXJzb3IsIHNvIHVwZGF0aW5nIHRoZSBj
dXJzb3IgaXMgYWx3YXlzCisgICAgICAgICAgICAgICAgLy8gcmlnaHQsIGFzIGl0IGZhbGxzIGJh
Y2sgdG8gdGhlIGxhc3QgY3Vyc29yIHNldCBieQorICAgICAgICAgICAgICAgIC8vIFdlYkNvcmUu
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhIFFFdmVudDo6Q3Vyc29yVW5zZXQgb3Ig
c2ltaWxhciB0byBRdC4KKyAgICAgICAgICAgICAgICBpZiAoY3Vyc29yKCkuc2hhcGUoKSA9PSBR
dDo6QXJyb3dDdXJzb3IpCisgICAgICAgICAgICAgICAgICAgIGQtPnBhZ2UtPmQtPmNsaWVudC0+
cmVzZXRDdXJzb3IoKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBRR3JhcGhpY3NXaWRnZXQ6OmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRR3Jh
cGhpY3NXZWJWaWV3UHJpdmF0ZTo6ZGV0YWNoQ3VycmVudFBhZ2UoKQoreworICAgIGlmICghcGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+ZC0+dmlldyA9IDA7CisgICAgcGFnZS0+
ZC0+Y2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBpZiB0aGUgcGFnZSB3YXMgY3JlYXRlZCBieSB1
cywgd2Ugb3duIGl0IGFuZCBuZWVkIHRvCisgICAgLy8gZGVzdHJveSBpdCBhcyB3ZWxsLgorCisg
ICAgaWYgKHBhZ2UtPnBhcmVudCgpID09IHEpCisgICAgICAgIGRlbGV0ZSBwYWdlOworICAgIGVs
c2UKKyAgICAgICAgcGFnZS0+ZGlzY29ubmVjdChxKTsKKworICAgIHBhZ2UgPSAwOworfQorCisv
KiEKKyAgICBNYWtlcyBcYSBwYWdlIHRoZSBuZXcgd2ViIHBhZ2Ugb2YgdGhlIHdlYiBncmFwaGlj
c2l0ZW0uCisKKyAgICBUaGUgcGFyZW50IFFPYmplY3Qgb2YgdGhlIHByb3ZpZGVkIHBhZ2UgcmVt
YWlucyB0aGUgb3duZXIKKyAgICBvZiB0aGUgb2JqZWN0LiBJZiB0aGUgY3VycmVudCBkb2N1bWVu
dCBpcyBhIGNoaWxkIG9mIHRoZSB3ZWIKKyAgICB2aWV3LCBpdCB3aWxsIGJlIGRlbGV0ZWQuCisK
KyAgICBcc2EgcGFnZSgpCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3OjpzZXRQYWdlKFFXZWJQ
YWdlKiBwYWdlKQoreworICAgIGlmIChkLT5wYWdlID09IHBhZ2UpCisgICAgICAgIHJldHVybjsK
KworICAgIGQtPmRldGFjaEN1cnJlbnRQYWdlKCk7CisgICAgZC0+cGFnZSA9IHBhZ2U7CisKKyAg
ICBpZiAoIWQtPnBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGQtPnBhZ2UtPmQtPmNsaWVu
dC5yZXNldChuZXcgUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldCh0aGlzLCBwYWdlKSk7CisKKyAg
ICBpZiAoZC0+b3ZlcmxheSgpKQorICAgICAgICBkLT5vdmVybGF5KCktPnByZXBhcmVHcmFwaGlj
c0l0ZW1HZW9tZXRyeUNoYW5nZSgpOworCisgICAgUVNpemUgc2l6ZSA9IGdlb21ldHJ5KCkuc2l6
ZSgpLnRvU2l6ZSgpOworICAgIHBhZ2UtPnNldFZpZXdwb3J0U2l6ZShzaXplKTsKKworICAgIGlm
IChkLT5yZXNpemVzVG9Db250ZW50cykKKyAgICAgICAgZC0+dXBkYXRlUmVzaXplc1RvQ29udGVu
dHNGb3JQYWdlKCk7CisKKyAgICBRV2ViRnJhbWUqIG1haW5GcmFtZSA9IGQtPnBhZ2UtPm1haW5G
cmFtZSgpOworCisgICAgY29ubmVjdChtYWluRnJhbWUsIFNJR05BTCh0aXRsZUNoYW5nZWQoUVN0
cmluZykpLAorICAgICAgICB0aGlzLCBTSUdOQUwodGl0bGVDaGFuZ2VkKFFTdHJpbmcpKSk7Cisg
ICAgY29ubmVjdChtYWluRnJhbWUsIFNJR05BTChpY29uQ2hhbmdlZCgpKSwKKyAgICAgICAgdGhp
cywgU0lHTkFMKGljb25DaGFuZ2VkKCkpKTsKKyAgICBjb25uZWN0KG1haW5GcmFtZSwgU0lHTkFM
KHVybENoYW5nZWQoUVVybCkpLAorICAgICAgICB0aGlzLCBTSUdOQUwodXJsQ2hhbmdlZChRVXJs
KSkpOworICAgIGNvbm5lY3QoZC0+cGFnZSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLAorICAgICAg
ICB0aGlzLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSkpOworICAgIGNvbm5lY3QoZC0+cGFnZSwgU0lH
TkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwKKyAgICAgICAgdGhpcywgU0lHTkFMKGxvYWRQcm9ncmVz
cyhpbnQpKSk7CisgICAgY29ubmVjdChkLT5wYWdlLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wp
KSwKKyAgICAgICAgdGhpcywgU0xPVChfcV9kb0xvYWRGaW5pc2hlZChib29sKSkpOworICAgIGNv
bm5lY3QoZC0+cGFnZSwgU0lHTkFMKHN0YXR1c0Jhck1lc3NhZ2UoUVN0cmluZykpLAorICAgICAg
ICB0aGlzLCBTSUdOQUwoc3RhdHVzQmFyTWVzc2FnZShRU3RyaW5nKSkpOworICAgIGNvbm5lY3Qo
ZC0+cGFnZSwgU0lHTkFMKGxpbmtDbGlja2VkKFFVcmwpKSwKKyAgICAgICAgdGhpcywgU0lHTkFM
KGxpbmtDbGlja2VkKFFVcmwpKSk7CisgICAgY29ubmVjdChkLT5wYWdlLCBTSUdOQUwoZGVzdHJv
eWVkKCkpLAorICAgICAgICB0aGlzLCBTTE9UKF9xX3BhZ2VEZXN0cm95ZWQoKSkpOworI2lmICFk
ZWZpbmVkKFFUX05PX0lNKSAmJiAoZGVmaW5lZChRX1dTX1gxMSkgfHwgZGVmaW5lZChRX1dTX1FX
UykpCisgICAgY29ubmVjdChkLT5wYWdlLCBTSUdOQUwobWljcm9Gb2N1c0NoYW5nZWQoKSksCisg
ICAgICAgIHRoaXMsIFNMT1QodXBkYXRlTWljcm9Gb2N1cygpKSk7CisjZW5kaWYKK30KKworLyoh
CisgICAgXHByb3BlcnR5IFFHcmFwaGljc1dlYlZpZXc6OnVybAorICAgIFxicmllZiB0aGUgdXJs
IG9mIHRoZSB3ZWIgcGFnZSBjdXJyZW50bHkgdmlld2VkCisKKyAgICBTZXR0aW5nIHRoaXMgcHJv
cGVydHkgY2xlYXJzIHRoZSB2aWV3IGFuZCBsb2FkcyB0aGUgVVJMLgorCisgICAgQnkgZGVmYXVs
dCwgdGhpcyBwcm9wZXJ0eSBjb250YWlucyBhbiBlbXB0eSwgaW52YWxpZCBVUkwuCisKKyAgICBc
c2EgbG9hZCgpLCB1cmxDaGFuZ2VkKCkKKyovCisKK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c2V0
VXJsKGNvbnN0IFFVcmwgJnVybCkKK3sKKyAgICBwYWdlKCktPm1haW5GcmFtZSgpLT5zZXRVcmwo
dXJsKTsKK30KKworUVVybCBRR3JhcGhpY3NXZWJWaWV3Ojp1cmwoKSBjb25zdAoreworICAgIGlm
IChkLT5wYWdlKQorICAgICAgICByZXR1cm4gZC0+cGFnZS0+bWFpbkZyYW1lKCktPnVybCgpOwor
CisgICAgcmV0dXJuIFFVcmwoKTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFHcmFwaGljc1dl
YlZpZXc6OnRpdGxlCisgICAgXGJyaWVmIHRoZSB0aXRsZSBvZiB0aGUgd2ViIHBhZ2UgY3VycmVu
dGx5IHZpZXdlZAorCisgICAgQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBjb250YWlucyBhbiBl
bXB0eSBzdHJpbmcuCisKKyAgICBcc2EgdGl0bGVDaGFuZ2VkKCkKKyovCitRU3RyaW5nIFFHcmFw
aGljc1dlYlZpZXc6OnRpdGxlKCkgY29uc3QKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAg
cmV0dXJuIGQtPnBhZ2UtPm1haW5GcmFtZSgpLT50aXRsZSgpOworCisgICAgcmV0dXJuIFFTdHJp
bmcoKTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFHcmFwaGljc1dlYlZpZXc6Omljb24KKyAg
ICBcYnJpZWYgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgcGFnZSBjdXJyZW50bHkg
dmlld2VkCisKKyAgICBCeSBkZWZhdWx0LCB0aGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgbnVsbCBp
Y29uLgorCisgICAgXHNhIGljb25DaGFuZ2VkKCksIFFXZWJTZXR0aW5nczo6aWNvbkZvclVybCgp
CisqLworUUljb24gUUdyYXBoaWNzV2ViVmlldzo6aWNvbigpIGNvbnN0Cit7CisgICAgaWYgKGQt
PnBhZ2UpCisgICAgICAgIHJldHVybiBkLT5wYWdlLT5tYWluRnJhbWUoKS0+aWNvbigpOworCisg
ICAgcmV0dXJuIFFJY29uKCk7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRR3JhcGhpY3NXZWJW
aWV3Ojp6b29tRmFjdG9yCisgICAgXGJyaWVmIHRoZSB6b29tIGZhY3RvciBmb3IgdGhlIHZpZXcK
KyovCisKK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c2V0Wm9vbUZhY3RvcihxcmVhbCBmYWN0b3Ip
Cit7CisgICAgaWYgKGZhY3RvciA9PSBwYWdlKCktPm1haW5GcmFtZSgpLT56b29tRmFjdG9yKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldFpvb21GYWN0
b3IoZmFjdG9yKTsKK30KKworcXJlYWwgUUdyYXBoaWNzV2ViVmlldzo6em9vbUZhY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnpvb21GYWN0b3IoKTsKK30K
KworLyohIFxyZWltcAorKi8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6dXBkYXRlR2VvbWV0cnko
KQoreworICAgIGlmIChkLT5vdmVybGF5KCkpCisgICAgICAgIGQtPm92ZXJsYXkoKS0+cHJlcGFy
ZUdyYXBoaWNzSXRlbUdlb21ldHJ5Q2hhbmdlKCk7CisKKyAgICBRR3JhcGhpY3NXaWRnZXQ6OnVw
ZGF0ZUdlb21ldHJ5KCk7CisKKyAgICBpZiAoIWQtPnBhZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFFTaXplIHNpemUgPSBnZW9tZXRyeSgpLnNpemUoKS50b1NpemUoKTsKKyAgICBkLT5wYWdl
LT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFHcmFw
aGljc1dlYlZpZXc6OnNldEdlb21ldHJ5KGNvbnN0IFFSZWN0RiYgcmVjdCkKK3sKKyAgICBRR3Jh
cGhpY3NXaWRnZXQ6OnNldEdlb21ldHJ5KHJlY3QpOworCisgICAgaWYgKGQtPm92ZXJsYXkoKSkK
KyAgICAgICAgZC0+b3ZlcmxheSgpLT5wcmVwYXJlR3JhcGhpY3NJdGVtR2VvbWV0cnlDaGFuZ2Uo
KTsKKworICAgIGlmICghZC0+cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTk9URTog
Y2FsbCBnZW9tZXRyeSgpIGFzIHNldEdlb21ldHJ5IGVuc3VyZXMgdGhhdAorICAgIC8vIHRoZSBn
ZW9tZXRyeSBpcyB3aXRoaW4gbGVnYWwgYm91bmRzIChtaW5pbXVtU2l6ZSwgbWF4aW11bVNpemUp
CisgICAgUVNpemUgc2l6ZSA9IGdlb21ldHJ5KCkuc2l6ZSgpLnRvU2l6ZSgpOworICAgIGQtPnBh
Z2UtPnNldFZpZXdwb3J0U2l6ZShzaXplKTsKK30KKworLyohCisgICAgQ29udmVuaWVuY2Ugc2xv
dCB0aGF0IHN0b3BzIGxvYWRpbmcgdGhlIGRvY3VtZW50LgorCisgICAgXHNhIHJlbG9hZCgpLCBs
b2FkRmluaXNoZWQoKQorKi8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c3RvcCgpCit7CisgICAg
aWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlN0
b3ApOworfQorCisvKiEKKyAgICBDb252ZW5pZW5jZSBzbG90IHRoYXQgbG9hZHMgdGhlIHByZXZp
b3VzIGRvY3VtZW50IGluIHRoZSBsaXN0IG9mIGRvY3VtZW50cworICAgIGJ1aWx0IGJ5IG5hdmln
YXRpbmcgbGlua3MuIERvZXMgbm90aGluZyBpZiB0aGVyZSBpcyBubyBwcmV2aW91cyBkb2N1bWVu
dC4KKworICAgIFxzYSBmb3J3YXJkKCkKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OmJhY2so
KQoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT50cmlnZ2VyQWN0aW9uKFFX
ZWJQYWdlOjpCYWNrKTsKK30KKworLyohCisgICAgQ29udmVuaWVuY2Ugc2xvdCB0aGF0IGxvYWRz
IHRoZSBuZXh0IGRvY3VtZW50IGluIHRoZSBsaXN0IG9mIGRvY3VtZW50cworICAgIGJ1aWx0IGJ5
IG5hdmlnYXRpbmcgbGlua3MuIERvZXMgbm90aGluZyBpZiB0aGVyZSBpcyBubyBuZXh0IGRvY3Vt
ZW50LgorCisgICAgXHNhIGJhY2soKQorKi8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6Zm9yd2Fy
ZCgpCit7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2U6OkZvcndhcmQpOworfQorCisvKiEKKyAgICBSZWxvYWRzIHRoZSBjdXJyZW50IGRv
Y3VtZW50LgorCisgICAgXHNhIHN0b3AoKSwgbG9hZFN0YXJ0ZWQoKQorKi8KK3ZvaWQgUUdyYXBo
aWNzV2ViVmlldzo6cmVsb2FkKCkKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFn
ZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6UmVsb2FkKTsKK30KKworLyohCisgICAgTG9hZHMg
dGhlIHNwZWNpZmllZCBcYSB1cmwgYW5kIGRpc3BsYXlzIGl0LgorCisgICAgXG5vdGUgVGhlIHZp
ZXcgcmVtYWlucyB0aGUgc2FtZSB1bnRpbCBlbm91Z2ggZGF0YSBoYXMgYXJyaXZlZCB0byBkaXNw
bGF5IHRoZSBuZXcgXGEgdXJsLgorCisgICAgXHNhIHNldFVybCgpLCB1cmwoKSwgdXJsQ2hhbmdl
ZCgpCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojpsb2FkKGNvbnN0IFFVcmwmIHVybCkKK3sK
KyAgICBwYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkKHVybCk7Cit9CisKKy8qIQorICAgIFxmbiB2
b2lkIFFHcmFwaGljc1dlYlZpZXc6OmxvYWQoY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0
LCBRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFFCeXRl
QXJyYXkgJmJvZHkpCisKKyAgICBMb2FkcyBhIG5ldHdvcmsgcmVxdWVzdCwgXGEgcmVxdWVzdCwg
dXNpbmcgdGhlIG1ldGhvZCBzcGVjaWZpZWQgaW4gXGEgb3BlcmF0aW9uLgorCisgICAgXGEgYm9k
eSBpcyBvcHRpb25hbCBhbmQgaXMgb25seSB1c2VkIGZvciBQT1NUIG9wZXJhdGlvbnMuCisKKyAg
ICBcbm90ZSBUaGUgdmlldyByZW1haW5zIHRoZSBzYW1lIHVudGlsIGVub3VnaCBkYXRhIGhhcyBh
cnJpdmVkIHRvIGRpc3BsYXkgdGhlIG5ldyB1cmwuCisKKyAgICBcc2EgdXJsKCksIHVybENoYW5n
ZWQoKQorKi8KKwordm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojpsb2FkKGNvbnN0IFFOZXR3b3JrUmVx
dWVzdCYgcmVxdWVzdCwgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpPcGVyYXRpb24gb3BlcmF0aW9u
LCBjb25zdCBRQnl0ZUFycmF5JiBib2R5KQoreworICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPmxv
YWQocmVxdWVzdCwgb3BlcmF0aW9uLCBib2R5KTsKK30KKworLyohCisgICAgU2V0cyB0aGUgY29u
dGVudCBvZiB0aGUgd2ViIHZpZXcgdG8gdGhlIHNwZWNpZmllZCBcYSBodG1sLgorCisgICAgRXh0
ZXJuYWwgb2JqZWN0cyBzdWNoIGFzIHN0eWxlc2hlZXRzIG9yIGltYWdlcyByZWZlcmVuY2VkIGlu
IHRoZSBIVE1MCisgICAgZG9jdW1lbnQgYXJlIGxvY2F0ZWQgcmVsYXRpdmUgdG8gXGEgYmFzZVVy
bC4KKworICAgIFRoZSBcYSBodG1sIGlzIGxvYWRlZCBpbW1lZGlhdGVseTsgZXh0ZXJuYWwgb2Jq
ZWN0cyBhcmUgbG9hZGVkIGFzeW5jaHJvbm91c2x5LgorCisgICAgV2hlbiB1c2luZyB0aGlzIG1l
dGhvZCwgV2ViS2l0IGFzc3VtZXMgdGhhdCBleHRlcm5hbCByZXNvdXJjZXMgc3VjaCBhcworICAg
IEphdmFTY3JpcHQgcHJvZ3JhbXMgb3Igc3R5bGUgc2hlZXRzIGFyZSBlbmNvZGVkIGluIFVURi04
IHVubGVzcyBvdGhlcndpc2UKKyAgICBzcGVjaWZpZWQuIEZvciBleGFtcGxlLCB0aGUgZW5jb2Rp
bmcgb2YgYW4gZXh0ZXJuYWwgc2NyaXB0IGNhbiBiZSBzcGVjaWZpZWQKKyAgICB0aHJvdWdoIHRo
ZSBjaGFyc2V0IGF0dHJpYnV0ZSBvZiB0aGUgSFRNTCBzY3JpcHQgdGFnLiBBbHRlcm5hdGl2ZWx5
LCB0aGUKKyAgICBlbmNvZGluZyBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgYnkgdGhlIHdlYiBzZXJ2
ZXIuCisKKyAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZXF1aXZhbGVudCB0byBz
ZXRDb250ZW50KGh0bWwsICJ0ZXh0L2h0bWwiLCBiYXNlVXJsKS4KKworICAgIFx3YXJuaW5nIFRo
aXMgZnVuY3Rpb24gd29ya3Mgb25seSBmb3IgSFRNTCwgZm9yIG90aGVyIG1pbWUgdHlwZXMgKGku
ZS4gWEhUTUwsIFNWRykKKyAgICBzZXRDb250ZW50KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4K
KworICAgIFxzYSBsb2FkKCksIHNldENvbnRlbnQoKSwgUVdlYkZyYW1lOjp0b0h0bWwoKSwgUVdl
YkZyYW1lOjpzZXRDb250ZW50KCkKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OnNldEh0bWwo
Y29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCkKK3sKKyAgICBwYWdlKCkt
Pm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0bWwsIGJhc2VVcmwpOworfQorCisvKiEKKyAgICBTZXRz
IHRoZSBjb250ZW50IG9mIHRoZSB3ZWIgZ3JhcGhpY3NpdGVtIHRvIHRoZSBzcGVjaWZpZWQgY29u
dGVudCBcYSBkYXRhLiBJZiB0aGUgXGEgbWltZVR5cGUgYXJndW1lbnQKKyAgICBpcyBlbXB0eSBp
dCBpcyBjdXJyZW50bHkgYXNzdW1lZCB0aGF0IHRoZSBjb250ZW50IGlzIEhUTUwgYnV0IGluIGZ1
dHVyZSB2ZXJzaW9ucyB3ZSBtYXkgaW50cm9kdWNlCisgICAgYXV0by1kZXRlY3Rpb24uCisKKyAg
ICBFeHRlcm5hbCBvYmplY3RzIHJlZmVyZW5jZWQgaW4gdGhlIGNvbnRlbnQgYXJlIGxvY2F0ZWQg
cmVsYXRpdmUgdG8gXGEgYmFzZVVybC4KKworICAgIFRoZSBcYSBkYXRhIGlzIGxvYWRlZCBpbW1l
ZGlhdGVseTsgZXh0ZXJuYWwgb2JqZWN0cyBhcmUgbG9hZGVkIGFzeW5jaHJvbm91c2x5LgorCisg
ICAgXHNhIGxvYWQoKSwgc2V0SHRtbCgpLCBRV2ViRnJhbWU6OnRvSHRtbCgpCisqLwordm9pZCBR
R3JhcGhpY3NXZWJWaWV3OjpzZXRDb250ZW50KGNvbnN0IFFCeXRlQXJyYXkmIGRhdGEsIGNvbnN0
IFFTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBRVXJsJiBiYXNlVXJsKQoreworICAgIHBhZ2UoKS0+
bWFpbkZyYW1lKCktPnNldENvbnRlbnQoZGF0YSwgbWltZVR5cGUsIGJhc2VVcmwpOworfQorCisv
KiEKKyAgICBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmlldydzIGhpc3Rvcnkgb2YgbmF2aWdh
dGVkIHdlYiBwYWdlcy4KKworICAgIEl0IGlzIGVxdWl2YWxlbnQgdG8KKworICAgIFxzbmlwcGV0
IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJ2aWV3X3NuaXBwZXQuY3BwIDAKKyovCitRV2Vi
SGlzdG9yeSogUUdyYXBoaWNzV2ViVmlldzo6aGlzdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHBhZ2UoKS0+aGlzdG9yeSgpOworfQorCisvKiEKKyAgICBccHJvcGVydHkgUUdyYXBoaWNzV2Vi
Vmlldzo6bW9kaWZpZWQKKyAgICBcYnJpZWYgd2hldGhlciB0aGUgZG9jdW1lbnQgd2FzIG1vZGlm
aWVkIGJ5IHRoZSB1c2VyCisKKyAgICBQYXJ0cyBvZiBIVE1MIGRvY3VtZW50cyBjYW4gYmUgZWRp
dGFibGUgZm9yIGV4YW1wbGUgdGhyb3VnaCB0aGUKKyAgICBcY3tjb250ZW50ZWRpdGFibGV9IGF0
dHJpYnV0ZSBvbiBIVE1MIGVsZW1lbnRzLgorCisgICAgQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0
eSBpcyBmYWxzZS4KKyovCitib29sIFFHcmFwaGljc1dlYlZpZXc6OmlzTW9kaWZpZWQoKSBjb25z
dAoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICByZXR1cm4gZC0+cGFnZS0+aXNNb2RpZmll
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLyohCisgICAgUmV0dXJucyBhIHBvaW50ZXIg
dG8gdGhlIHZpZXcvcGFnZSBzcGVjaWZpYyBzZXR0aW5ncyBvYmplY3QuCisKKyAgICBJdCBpcyBl
cXVpdmFsZW50IHRvCisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2Vi
dmlld19zbmlwcGV0LmNwcCAxCisKKyAgICBcc2EgUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5n
cygpCisqLworUVdlYlNldHRpbmdzKiBRR3JhcGhpY3NXZWJWaWV3OjpzZXR0aW5ncygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHBhZ2UoKS0+c2V0dGluZ3MoKTsKK30KKworLyohCisgICAgUmV0dXJu
cyBhIHBvaW50ZXIgdG8gYSBRQWN0aW9uIHRoYXQgZW5jYXBzdWxhdGVzIHRoZSBzcGVjaWZpZWQg
d2ViIGFjdGlvbiBcYSBhY3Rpb24uCisqLworUUFjdGlvbiAqUUdyYXBoaWNzV2ViVmlldzo6cGFn
ZUFjdGlvbihRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlvbikgY29uc3QKK3sKKyNpZmRlZiBRVF9O
T19BQ1RJT04KKyAgICBRX1VOVVNFRChhY3Rpb24pCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAg
IHJldHVybiBwYWdlKCktPmFjdGlvbihhY3Rpb24pOworI2VuZGlmCit9CisKKy8qIQorICAgIFRy
aWdnZXJzIHRoZSBzcGVjaWZpZWQgXGEgYWN0aW9uLiBJZiBpdCBpcyBhIGNoZWNrYWJsZSBhY3Rp
b24gdGhlIHNwZWNpZmllZAorICAgIFxhIGNoZWNrZWQgc3RhdGUgaXMgYXNzdW1lZC4KKworICAg
IFxzYSBwYWdlQWN0aW9uKCkKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OnRyaWdnZXJQYWdl
QWN0aW9uKFFXZWJQYWdlOjpXZWJBY3Rpb24gYWN0aW9uLCBib29sIGNoZWNrZWQpCit7CisgICAg
cGFnZSgpLT50cmlnZ2VyQWN0aW9uKGFjdGlvbiwgY2hlY2tlZCk7Cit9CisKKy8qIQorICAgIEZp
bmRzIHRoZSBzcGVjaWZpZWQgc3RyaW5nLCBcYSBzdWJTdHJpbmcsIGluIHRoZSBwYWdlLCB1c2lu
ZyB0aGUgZ2l2ZW4gXGEgb3B0aW9ucy4KKworICAgIElmIHRoZSBIaWdobGlnaHRBbGxPY2N1cnJl
bmNlcyBmbGFnIGlzIHBhc3NlZCwgdGhlIGZ1bmN0aW9uIHdpbGwgaGlnaGxpZ2h0IGFsbCBvY2N1
cnJlbmNlcworICAgIHRoYXQgZXhpc3QgaW4gdGhlIHBhZ2UuIEFsbCBzdWJzZXF1ZW50IGNhbGxz
IHdpbGwgZXh0ZW5kIHRoZSBoaWdobGlnaHQsIHJhdGhlciB0aGFuCisgICAgcmVwbGFjZSBpdCwg
d2l0aCBvY2N1cnJlbmNlcyBvZiB0aGUgbmV3IHN0cmluZy4KKworICAgIElmIHRoZSBIaWdobGln
aHRBbGxPY2N1cnJlbmNlcyBmbGFnIGlzIG5vdCBwYXNzZWQsIHRoZSBmdW5jdGlvbiB3aWxsIHNl
bGVjdCBhbiBvY2N1cnJlbmNlCisgICAgYW5kIGFsbCBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgcmVw
bGFjZSB0aGUgY3VycmVudCBvY2N1cnJlbmNlIHdpdGggdGhlIG5leHQgb25lLgorCisgICAgVG8g
Y2xlYXIgdGhlIHNlbGVjdGlvbiwganVzdCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KKworICAgIFJl
dHVybnMgdHJ1ZSBpZiBcYSBzdWJTdHJpbmcgd2FzIGZvdW5kOyBvdGhlcndpc2UgcmV0dXJucyBm
YWxzZS4KKworICAgIFxzYSBRV2ViUGFnZTo6c2VsZWN0ZWRUZXh0KCksIFFXZWJQYWdlOjpzZWxl
Y3Rpb25DaGFuZ2VkKCkKKyovCitib29sIFFHcmFwaGljc1dlYlZpZXc6OmZpbmRUZXh0KGNvbnN0
IFFTdHJpbmcgJnN1YlN0cmluZywgUVdlYlBhZ2U6OkZpbmRGbGFncyBvcHRpb25zKQoreworICAg
IGlmIChkLT5wYWdlKQorICAgICAgICByZXR1cm4gZC0+cGFnZS0+ZmluZFRleHQoc3ViU3RyaW5n
LCBvcHRpb25zKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBR
R3JhcGhpY3NXZWJWaWV3OjpyZXNpemVzVG9Db250ZW50cworICAgIFxicmllZiB3aGV0aGVyIHRo
ZSBzaXplIG9mIHRoZSBRR3JhcGhpY3NXZWJWaWV3IGFuZCBpdHMgdmlld3BvcnQgY2hhbmdlcyB0
byBtYXRjaCB0aGUgY29udGVudHMgc2l6ZQorICAgIFxzaW5jZSA0LjcgCisKKyAgICBJZiB0aGlz
IHByb3BlcnR5IGlzIHNldCwgdGhlIFFHcmFwaGljc1dlYlZpZXcgd2lsbCBhdXRvbWF0aWNhbGx5
IGNoYW5nZSBpdHMKKyAgICBzaXplIHRvIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBtYWluIGZyYW1l
IGNvbnRlbnRzLiBBcyBhIHJlc3VsdCB0aGUgdG9wIGxldmVsIGZyYW1lCisgICAgd2lsbCBuZXZl
ciBoYXZlIHNjcm9sbGJhcnMuIEl0IHdpbGwgYWxzbyBtYWtlIENTUyBmaXhlZCBwb3NpdGlvbmlu
ZyB0byBiZWhhdmUgbGlrZSBhYnNvbHV0ZSBwb3NpdGlvbmluZworICAgIHdpdGggZWxlbWVudHMg
cG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgZG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgdmlld3Bv
cnQuCisKKyAgICBUaGlzIHByb3BlcnR5IHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdp
dGggdGhlIFFXZWJQYWdlOjpwcmVmZXJyZWRDb250ZW50c1NpemUgcHJvcGVydHkuCisgICAgSWYg
bm90IGV4cGxpY2l0bHkgc2V0LCB0aGUgcHJlZmVycmVkQ29udGVudHNTaXplIGlzIGF1dG9tYXRp
Y2FsbHkgc2V0IHRvIGEgcmVhc29uYWJsZSB2YWx1ZS4KKworICAgIFxzYSBRV2ViUGFnZTo6c2V0
UHJlZmVycmVkQ29udGVudHNTaXplKCkKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OnNldFJl
c2l6ZXNUb0NvbnRlbnRzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoZC0+cmVzaXplc1RvQ29u
dGVudHMgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGQtPnJlc2l6ZXNUb0NvbnRl
bnRzID0gZW5hYmxlZDsKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+dXBkYXRlUmVzaXpl
c1RvQ29udGVudHNGb3JQYWdlKCk7Cit9CisKK2Jvb2wgUUdyYXBoaWNzV2ViVmlldzo6cmVzaXpl
c1RvQ29udGVudHMoKSBjb25zdAoreworICAgIHJldHVybiBkLT5yZXNpemVzVG9Db250ZW50czsK
K30KKworLyohCisgICAgXHByb3BlcnR5IFFHcmFwaGljc1dlYlZpZXc6OnRpbGVkQmFja2luZ1N0
b3JlRnJvemVuCisgICAgXGJyaWVmIHdoZXRoZXIgdGhlIHRpbGVkIGJhY2tpbmcgc3RvcmUgdXBk
YXRlcyBpdHMgY29udGVudHMKKyAgICBcc2luY2UgNC43IAorCisgICAgSWYgdGhlIHRpbGVkIGJh
Y2tpbmcgc3RvcmUgaXMgZW5hYmxlZCB1c2luZyBRV2ViU2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0
b3JlRW5hYmxlZCBhdHRyaWJ1dGUsIHRoaXMgcHJvcGVydHkKKyAgICBjYW4gYmUgdXNlZCB0byBk
aXNhYmxlIGJhY2tpbmcgc3RvcmUgdXBkYXRlcyB0ZW1wb3JhcmlseS4gVGhpcyBjYW4gYmUgdXNl
ZnVsIGZvciBleGFtcGxlIGZvciBydW5uaW5nCisgICAgYSBzbW9vdGggYW5pbWF0aW9uIHRoYXQg
Y2hhbmdlcyB0aGUgc2NhbGUgb2YgdGhlIFFHcmFwaGljc1dlYlZpZXcuCisgCisgICAgV2hlbiB0
aGUgYmFja2luZyBzdG9yZSBpcyB1bmZyb3plbiwgaXRzIGNvbnRlbnRzIHdpbGwgYmUgYXV0b21h
dGljYWxseSB1cGRhdGVkIHRvIG1hdGNoIHRoZSBjdXJyZW50CisgICAgc3RhdGUgb2YgdGhlIGRv
Y3VtZW50LiBJZiB0aGUgUUdyYXBoaWNzV2ViVmlldyBzY2FsZSB3YXMgY2hhbmdlZCwgdGhlIGJh
Y2tpbmcgc3RvcmUgaXMgYWxzbworICAgIHJlLXJlbmRlcmVkIHVzaW5nIHRoZSBuZXcgc2NhbGUu
CisgCisgICAgSWYgdGhlIHRpbGVkIGJhY2tpbmcgc3RvcmUgaXMgbm90IGVuYWJsZWQsIHRoaXMg
cHJvcGVydHkgZG9lcyBub3RoaW5nLgorCisgICAgXHNhIFFXZWJTZXR0aW5nczo6VGlsZWRCYWNr
aW5nU3RvcmVFbmFibGVkCisgICAgXHNhIFFHcmFwaGljc09iamVjdDo6c2NhbGUKKyovCitib29s
IFFHcmFwaGljc1dlYlZpZXc6OmlzVGlsZWRCYWNraW5nU3RvcmVGcm96ZW4oKSBjb25zdAorewor
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIHJldHVybiBwYWdlKCktPmQtPm1haW5G
cmFtZUFkYXB0ZXIoKS0+dGlsZWRCYWNraW5nU3RvcmVGcm96ZW4oKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c2V0VGlsZWRC
YWNraW5nU3RvcmVGcm96ZW4oYm9vbCBmcm96ZW4pCit7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisgICAgcGFnZSgpLT5kLT5tYWluRnJhbWVBZGFwdGVyKCktPnNldFRpbGVkQmFja2lu
Z1N0b3JlRnJvemVuKGZyb3plbik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmcm96ZW4pOwor
I2VuZGlmCit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OmhvdmVy
TW92ZUV2ZW50KFFHcmFwaGljc1NjZW5lSG92ZXJFdmVudCogZXYpCit7CisgICAgaWYgKGQtPnBh
Z2UpIHsKKyAgICAgICAgY29uc3QgYm9vbCBhY2NlcHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7Cisg
ICAgICAgIFFNb3VzZUV2ZW50IG1lID0gUU1vdXNlRXZlbnQoUUV2ZW50OjpNb3VzZU1vdmUsIGV2
LT5wb3MoKS50b1BvaW50KCksIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vQnV0dG9uLCBRdDo6Tm9Nb2Rp
Zmllcik7CisgICAgICAgIGQtPnBhZ2UtPmV2ZW50KCZtZSk7CisgICAgICAgIGV2LT5zZXRBY2Nl
cHRlZChhY2NlcHRlZCk7CisgICAgfQorCisgICAgaWYgKCFldi0+aXNBY2NlcHRlZCgpKQorICAg
ICAgICBRR3JhcGhpY3NJdGVtOjpob3Zlck1vdmVFdmVudChldik7Cit9CisKKy8qISBccmVpbXAK
KyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OmhvdmVyTGVhdmVFdmVudChRR3JhcGhpY3NTY2Vu
ZUhvdmVyRXZlbnQqIGV2KQoreworICAgIFFfVU5VU0VEKGV2KTsKK30KKworLyohIFxyZWltcAor
Ki8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6bW91c2VNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVN
b3VzZUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkgeworICAgICAgICBjb25zdCBib29s
IGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKKyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYp
OworICAgICAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOworICAgIH0KKworICAgIGlmICgh
ZXYtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgUUdyYXBoaWNzSXRlbTo6bW91c2VNb3ZlRXZlbnQo
ZXYpOworfQorCisvKiEgXHJlaW1wCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojptb3VzZVBy
ZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFn
ZSkgeworICAgICAgICBjb25zdCBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKKyAg
ICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOworICAgICAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0
ZWQpOworICAgIH0KKworICAgIGlmICghZXYtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgUUdyYXBo
aWNzSXRlbTo6bW91c2VQcmVzc0V2ZW50KGV2KTsKK30KKworLyohIFxyZWltcAorKi8KK3ZvaWQg
UUdyYXBoaWNzV2ViVmlldzo6bW91c2VSZWxlYXNlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkgeworICAgICAgICBjb25zdCBib29sIGFjY2Vw
dGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKKyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOworICAg
ICAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOworICAgIH0KKworICAgIGlmICghZXYtPmlz
QWNjZXB0ZWQoKSkKKyAgICAgICAgUUdyYXBoaWNzSXRlbTo6bW91c2VSZWxlYXNlRXZlbnQoZXYp
OworfQorCisvKiEgXHJlaW1wCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojptb3VzZURvdWJs
ZUNsaWNrRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+
cGFnZSkgeworICAgICAgICBjb25zdCBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsK
KyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOworICAgICAgICBldi0+c2V0QWNjZXB0ZWQoYWNj
ZXB0ZWQpOworICAgIH0KKworICAgIGlmICghZXYtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgUUdy
YXBoaWNzSXRlbTo6bW91c2VEb3VibGVDbGlja0V2ZW50KGV2KTsKK30KKworLyohIFxyZWltcAor
Ki8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2KQor
eworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5ldmVudChldik7CisKKyAgICBp
ZiAoIWV2LT5pc0FjY2VwdGVkKCkpCisgICAgICAgIFFHcmFwaGljc0l0ZW06OmtleVByZXNzRXZl
bnQoZXYpOworfQorCisvKiEgXHJlaW1wCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3OjprZXlS
ZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAg
ZC0+cGFnZS0+ZXZlbnQoZXYpOworCisgICAgaWYgKCFldi0+aXNBY2NlcHRlZCgpKQorICAgICAg
ICBRR3JhcGhpY3NJdGVtOjprZXlSZWxlYXNlRXZlbnQoZXYpOworfQorCisvKiEgXHJlaW1wCisq
Lwordm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojpmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqIGV2KQor
eworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5ldmVudChldik7CisgICAgZWxz
ZQorICAgICAgICBRR3JhcGhpY3NJdGVtOjpmb2N1c0luRXZlbnQoZXYpOworfQorCisvKiEgXHJl
aW1wCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3Ojpmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50
KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOwor
ICAgIGVsc2UKKyAgICAgICAgUUdyYXBoaWNzSXRlbTo6Zm9jdXNPdXRFdmVudChldik7Cit9CisK
Ky8qISBccmVpbXAKKyovCitib29sIFFHcmFwaGljc1dlYlZpZXc6OmZvY3VzTmV4dFByZXZDaGls
ZChib29sIG5leHQpCit7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIHJldHVybiBkLT5wYWdl
LT5mb2N1c05leHRQcmV2Q2hpbGQobmV4dCk7CisKKyAgICByZXR1cm4gUUdyYXBoaWNzV2lkZ2V0
Ojpmb2N1c05leHRQcmV2Q2hpbGQobmV4dCk7Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFH
cmFwaGljc1dlYlZpZXc6OmRyYWdFbnRlckV2ZW50KFFHcmFwaGljc1NjZW5lRHJhZ0Ryb3BFdmVu
dCogZXYpCit7CisjaWZuZGVmIFFUX05PX0RSQUdBTkREUk9QCisgICAgaWYgKGQtPnBhZ2UpCisg
ICAgICAgIGQtPnBhZ2UtPmV2ZW50KGV2KTsKKyNlbHNlCisgICAgUV9VTlVTRUQoZXYpOworI2Vu
ZGlmCit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OmRyYWdMZWF2
ZUV2ZW50KFFHcmFwaGljc1NjZW5lRHJhZ0Ryb3BFdmVudCogZXYpCit7CisjaWZuZGVmIFFUX05P
X0RSQUdBTkREUk9QCisgICAgaWYgKGQtPnBhZ2UpIHsKKyAgICAgICAgY29uc3QgYm9vbCBhY2Nl
cHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7CisgICAgICAgIGQtPnBhZ2UtPmV2ZW50KGV2KTsKKyAg
ICAgICAgZXYtPnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKKyAgICB9CisKKyAgICBpZiAoIWV2LT5p
c0FjY2VwdGVkKCkpCisgICAgICAgIFFHcmFwaGljc1dpZGdldDo6ZHJhZ0xlYXZlRXZlbnQoZXYp
OworI2Vsc2UKKyAgICBRX1VOVVNFRChldik7CisjZW5kaWYKK30KKworLyohIFxyZWltcAorKi8K
K3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6ZHJhZ01vdmVFdmVudChRR3JhcGhpY3NTY2VuZURyYWdE
cm9wRXZlbnQqIGV2KQoreworI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAorICAgIGlmIChkLT5w
YWdlKSB7CisgICAgICAgIGNvbnN0IGJvb2wgYWNjZXB0ZWQgPSBldi0+aXNBY2NlcHRlZCgpOwor
ICAgICAgICBkLT5wYWdlLT5ldmVudChldik7CisgICAgICAgIGV2LT5zZXRBY2NlcHRlZChhY2Nl
cHRlZCk7CisgICAgfQorCisgICAgaWYgKCFldi0+aXNBY2NlcHRlZCgpKQorICAgICAgICBRR3Jh
cGhpY3NXaWRnZXQ6OmRyYWdNb3ZlRXZlbnQoZXYpOworI2Vsc2UKKyAgICBRX1VOVVNFRChldik7
CisjZW5kaWYKK30KKworLyohIFxyZWltcAorKi8KK3ZvaWQgUUdyYXBoaWNzV2ViVmlldzo6ZHJv
cEV2ZW50KFFHcmFwaGljc1NjZW5lRHJhZ0Ryb3BFdmVudCogZXYpCit7CisjaWZuZGVmIFFUX05P
X0RSQUdBTkREUk9QCisgICAgaWYgKGQtPnBhZ2UpIHsKKyAgICAgICAgY29uc3QgYm9vbCBhY2Nl
cHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7CisgICAgICAgIGQtPnBhZ2UtPmV2ZW50KGV2KTsKKyAg
ICAgICAgZXYtPnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKKyAgICB9CisKKyAgICBpZiAoIWV2LT5p
c0FjY2VwdGVkKCkpCisgICAgICAgIFFHcmFwaGljc1dpZGdldDo6ZHJvcEV2ZW50KGV2KTsKKyNl
bHNlCisgICAgUV9VTlVTRUQoZXYpOworI2VuZGlmCit9CisKKyNpZm5kZWYgUVRfTk9fQ09OVEVY
VE1FTlUKKy8qISBccmVpbXAKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6OmNvbnRleHRNZW51
RXZlbnQoUUdyYXBoaWNzU2NlbmVDb250ZXh0TWVudUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+
cGFnZSkgeworICAgICAgICBjb25zdCBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsK
KyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOworICAgICAgICBldi0+c2V0QWNjZXB0ZWQoYWNj
ZXB0ZWQpOworICAgIH0KK30KKyNlbmRpZiAvLyBRVF9OT19DT05URVhUTUVOVQorCisjaWZuZGVm
IFFUX05PX1dIRUVMRVZFTlQKKy8qISBccmVpbXAKKyovCit2b2lkIFFHcmFwaGljc1dlYlZpZXc6
OndoZWVsRXZlbnQoUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+
cGFnZSkgeworICAgICAgICBjb25zdCBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsK
KyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOworICAgICAgICBldi0+c2V0QWNjZXB0ZWQoYWNj
ZXB0ZWQpOworICAgIH0KKworICAgIGlmICghZXYtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgUUdy
YXBoaWNzSXRlbTo6d2hlZWxFdmVudChldik7Cit9CisjZW5kaWYgLy8gUVRfTk9fV0hFRUxFVkVO
VAorCisvKiEgXHJlaW1wCisqLwordm9pZCBRR3JhcGhpY3NXZWJWaWV3OjppbnB1dE1ldGhvZEV2
ZW50KFFJbnB1dE1ldGhvZEV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAg
ZC0+cGFnZS0+ZXZlbnQoZXYpOworCisgICAgaWYgKCFldi0+aXNBY2NlcHRlZCgpKQorICAgICAg
ICBRR3JhcGhpY3NJdGVtOjppbnB1dE1ldGhvZEV2ZW50KGV2KTsKK30KKworLyohCisgICAgXGZu
IHZvaWQgUUdyYXBoaWNzV2ViVmlldzo6c3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJiB0
ZXh0KQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSBzdGF0dXNiYXIgXGEg
dGV4dCBpcyBjaGFuZ2VkIGJ5IHRoZSBwYWdlLgorKi8KKworLyohCisgICAgXGZuIHZvaWQgUUdy
YXBoaWNzV2ViVmlldzo6bG9hZFByb2dyZXNzKGludCBwcm9ncmVzcykKKworICAgIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgZXZlcnkgdGltZSBhbiBlbGVtZW50IGluIHRoZSB3ZWIgcGFnZQorICAg
IGNvbXBsZXRlcyBsb2FkaW5nIGFuZCB0aGUgb3ZlcmFsbCBsb2FkaW5nIHByb2dyZXNzIGFkdmFu
Y2VzLgorCisgICAgVGhpcyBzaWduYWwgdHJhY2tzIHRoZSBwcm9ncmVzcyBvZiBhbGwgY2hpbGQg
ZnJhbWVzLgorCisgICAgVGhlIGN1cnJlbnQgdmFsdWUgaXMgcHJvdmlkZWQgYnkgXGEgcHJvZ3Jl
c3MgYW5kIHNjYWxlcyBmcm9tIDAgdG8gMTAwLAorICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHJh
bmdlIG9mIFFQcm9ncmVzc0Jhci4KKworICAgIFxzYSBsb2FkU3RhcnRlZCgpLCBsb2FkRmluaXNo
ZWQoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQgUUdyYXBoaWNzV2ViVmlldzo6bGlua0NsaWNr
ZWQoY29uc3QgUVVybCAmdXJsKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuZXZl
ciB0aGUgdXNlciBjbGlja3Mgb24gYSBsaW5rIGFuZCB0aGUgcGFnZSdzIGxpbmtEZWxlZ2F0aW9u
UG9saWN5CisgICAgcHJvcGVydHkgaXMgc2V0IHRvIGRlbGVnYXRlIHRoZSBsaW5rIGhhbmRsaW5n
IGZvciB0aGUgc3BlY2lmaWVkIFxhIHVybC4KKworICAgIFxzYSBRV2ViUGFnZTo6bGlua0RlbGVn
YXRpb25Qb2xpY3koKQorKi8KKworI2VuZGlmIC8vIFFUX05PX0dSQVBISUNTVklFVworCisjaW5j
bHVkZSAibW9jX3FncmFwaGljc3dlYnZpZXcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5oIGIvU291cmNlL1dlYktpdC9xdC9XaWRn
ZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmM5ZTYxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFw
aS9xZ3JhcGhpY3N3ZWJ2aWV3LmgKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgUUdyYXBoaWNzV2ViVmlld19oCisjZGVmaW5lIFFHcmFwaGljc1dlYlZpZXdf
aAorCisjaW5jbHVkZSA8UXRXZWJLaXQvcXdlYmtpdGdsb2JhbC5oPgorI2luY2x1ZGUgPFF0V2Vi
S2l0V2lkZ2V0cy9xd2VicGFnZS5oPgorI2luY2x1ZGUgPFF0Q29yZS9xdXJsLmg+CisjaW5jbHVk
ZSA8UXRHdWkvcWV2ZW50Lmg+CisjaW5jbHVkZSA8UXRHdWkvcWljb24uaD4KKyNpbmNsdWRlIDxR
dEd1aS9xcGFpbnRlci5oPgorI2luY2x1ZGUgPFF0TmV0d29yay9xbmV0d29ya2FjY2Vzc21hbmFn
ZXIuaD4KKyNpbmNsdWRlIDxRdFdpZGdldHMvcWdyYXBoaWNzd2lkZ2V0Lmg+CisKKyNpZiAhZGVm
aW5lZChRVF9OT19HUkFQSElDU1ZJRVcpCisKK2NsYXNzIFFXZWJQYWdlOworY2xhc3MgUVdlYkhp
c3Rvcnk7CitjbGFzcyBRV2ViU2V0dGluZ3M7CisKK2NsYXNzIFFHcmFwaGljc1dlYlZpZXdQcml2
YXRlOworCitjbGFzcyBRV0VCS0lUV0lER0VUU19FWFBPUlQgUUdyYXBoaWNzV2ViVmlldyA6IHB1
YmxpYyBRR3JhcGhpY3NXaWRnZXQgeworICAgIFFfT0JKRUNUCisKKyAgICBRX1BST1BFUlRZKFFT
dHJpbmcgdGl0bGUgUkVBRCB0aXRsZSBOT1RJRlkgdGl0bGVDaGFuZ2VkKQorICAgIFFfUFJPUEVS
VFkoUUljb24gaWNvbiBSRUFEIGljb24gTk9USUZZIGljb25DaGFuZ2VkKQorICAgIFFfUFJPUEVS
VFkocXJlYWwgem9vbUZhY3RvciBSRUFEIHpvb21GYWN0b3IgV1JJVEUgc2V0Wm9vbUZhY3RvcikK
KworICAgIFFfUFJPUEVSVFkoUVVybCB1cmwgUkVBRCB1cmwgV1JJVEUgc2V0VXJsIE5PVElGWSB1
cmxDaGFuZ2VkKQorCisgICAgUV9QUk9QRVJUWShib29sIG1vZGlmaWVkIFJFQUQgaXNNb2RpZmll
ZCkKKyAgICBRX1BST1BFUlRZKGJvb2wgcmVzaXplc1RvQ29udGVudHMgUkVBRCByZXNpemVzVG9D
b250ZW50cyBXUklURSBzZXRSZXNpemVzVG9Db250ZW50cykKKyAgICBRX1BST1BFUlRZKGJvb2wg
dGlsZWRCYWNraW5nU3RvcmVGcm96ZW4gUkVBRCBpc1RpbGVkQmFja2luZ1N0b3JlRnJvemVuIFdS
SVRFIHNldFRpbGVkQmFja2luZ1N0b3JlRnJvemVuKQorCisgICAgUV9QUk9QRVJUWShRUGFpbnRl
cjo6UmVuZGVySGludHMgcmVuZGVySGludHMgUkVBRCByZW5kZXJIaW50cyBXUklURSBzZXRSZW5k
ZXJIaW50cykKKyAgICBRX0ZMQUdTKFFQYWludGVyOjpSZW5kZXJIaW50cykKKworcHVibGljOgor
ICAgIGV4cGxpY2l0IFFHcmFwaGljc1dlYlZpZXcoUUdyYXBoaWNzSXRlbSogcGFyZW50ID0gMCk7
CisgICAgflFHcmFwaGljc1dlYlZpZXcoKTsKKworICAgIFFXZWJQYWdlKiBwYWdlKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdlKik7CisKKyAgICBRVXJsIHVybCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0VXJsKGNvbnN0IFFVcmwmKTsKKworICAgIFFTdHJpbmcgdGl0bGUoKSBjb25z
dDsKKyAgICBRSWNvbiBpY29uKCkgY29uc3Q7CisKKyAgICBxcmVhbCB6b29tRmFjdG9yKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRab29tRmFjdG9yKHFyZWFsKTsKKworICAgIGJvb2wgaXNNb2RpZmll
ZCgpIGNvbnN0OworCisgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwmIHVybCk7CisgICAgdm9pZCBs
b2FkKGNvbnN0IFFOZXR3b3JrUmVxdWVzdCYgcmVxdWVzdCwgUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
OjpPcGVyYXRpb24gb3BlcmF0aW9uID0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRp
b24sIGNvbnN0IFFCeXRlQXJyYXkmIGJvZHkgPSBRQnl0ZUFycmF5KCkpOworCisgICAgdm9pZCBz
ZXRIdG1sKGNvbnN0IFFTdHJpbmcmIGh0bWwsIGNvbnN0IFFVcmwmIGJhc2VVcmwgPSBRVXJsKCkp
OworICAgIC8vIEZJWE1FOiBDb25zaWRlciByZW5hbWUgdG8gc2V0SHRtbD8KKyAgICB2b2lkIHNl
dENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSYgZGF0YSwgY29uc3QgUVN0cmluZyYgbWltZVR5cGUg
PSBRU3RyaW5nKCksIGNvbnN0IFFVcmwmIGJhc2VVcmwgPSBRVXJsKCkpOworCisgICAgUVdlYkhp
c3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKKyAgICBRV2ViU2V0dGluZ3MqIHNldHRpbmdzKCkgY29u
c3Q7CisKKyAgICBRQWN0aW9uKiBwYWdlQWN0aW9uKFFXZWJQYWdlOjpXZWJBY3Rpb24gYWN0aW9u
KSBjb25zdDsKKyAgICB2b2lkIHRyaWdnZXJQYWdlQWN0aW9uKFFXZWJQYWdlOjpXZWJBY3Rpb24g
YWN0aW9uLCBib29sIGNoZWNrZWQgPSBmYWxzZSk7CisKKyAgICBib29sIGZpbmRUZXh0KGNvbnN0
IFFTdHJpbmcmIHN1YlN0cmluZywgUVdlYlBhZ2U6OkZpbmRGbGFncyBvcHRpb25zID0gMCk7CisK
KyAgICBib29sIHJlc2l6ZXNUb0NvbnRlbnRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZXNpemVz
VG9Db250ZW50cyhib29sIGVuYWJsZWQpOworICAgIAorICAgIGJvb2wgaXNUaWxlZEJhY2tpbmdT
dG9yZUZyb3plbigpIGNvbnN0OworICAgIHZvaWQgc2V0VGlsZWRCYWNraW5nU3RvcmVGcm96ZW4o
Ym9vbCBmcm96ZW4pOworCisgICAgdmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IFFSZWN0
RiYgcmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdlb21ldHJ5KCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBv
cHRpb25zLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKTsKKyAgICB2aXJ0dWFsIFFWYXJpYW50IGl0ZW1D
aGFuZ2UoR3JhcGhpY3NJdGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZXZlbnQoUUV2ZW50Kik7CisKKyAgICB2aXJ0dWFsIFFTaXplRiBz
aXplSGludChRdDo6U2l6ZUhpbnQgd2hpY2gsIGNvbnN0IFFTaXplRiYgY29uc3RyYWludCkgY29u
c3Q7CisKKyAgICB2aXJ0dWFsIFFWYXJpYW50IGlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0
aG9kUXVlcnkgcXVlcnkpIGNvbnN0OworCisgICAgUVBhaW50ZXI6OlJlbmRlckhpbnRzIHJlbmRl
ckhpbnRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZW5kZXJIaW50cyhRUGFpbnRlcjo6UmVuZGVy
SGludHMpOworICAgIHZvaWQgc2V0UmVuZGVySGludChRUGFpbnRlcjo6UmVuZGVySGludCwgYm9v
bCBlbmFibGVkID0gdHJ1ZSk7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgc3RvcCgpOwor
ICAgIHZvaWQgYmFjaygpOworICAgIHZvaWQgZm9yd2FyZCgpOworICAgIHZvaWQgcmVsb2FkKCk7
CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIGxvYWRTdGFydGVkKCk7CisgICAgdm9pZCBsb2FkRmlu
aXNoZWQoYm9vbCk7CisKKyAgICB2b2lkIGxvYWRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpOworICAg
IHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJik7CisgICAgdm9pZCB0aXRsZUNoYW5nZWQoY29u
c3QgUVN0cmluZyYpOworICAgIHZvaWQgaWNvbkNoYW5nZWQoKTsKKyAgICB2b2lkIHN0YXR1c0Jh
ck1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBsaW5rQ2xpY2tlZChj
b25zdCBRVXJsJik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2
ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZURv
dWJsZUNsaWNrRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIG1vdXNlUmVsZWFzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVIb3ZlckV2ZW50Kik7
CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTGVhdmVFdmVudChRR3JhcGhpY3NTY2VuZUhvdmVyRXZl
bnQqKTsKKyNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVAorICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2
ZW50KFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCopOworI2VuZGlmCisgICAgdmlydHVhbCB2b2lk
IGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VF
dmVudChRS2V5RXZlbnQqKTsKKyNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKKyAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dE1lbnVFdmVudChRR3JhcGhpY3NTY2VuZUNvbnRleHRNZW51RXZlbnQqKTsK
KyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkcmFnRW50ZXJFdmVudChRR3JhcGhpY3NTY2VuZURy
YWdEcm9wRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ0xlYXZlRXZlbnQoUUdyYXBoaWNz
U2NlbmVEcmFnRHJvcEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRyYWdNb3ZlRXZlbnQoUUdy
YXBoaWNzU2NlbmVEcmFnRHJvcEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRyb3BFdmVudChR
R3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNJbkV2
ZW50KFFGb2N1c0V2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0RXZlbnQoUUZvY3Vz
RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RF
dmVudCopOworICAgIHZpcnR1YWwgYm9vbCBmb2N1c05leHRQcmV2Q2hpbGQoYm9vbCBuZXh0KTsK
KworICAgIHZpcnR1YWwgYm9vbCBzY2VuZUV2ZW50KFFFdmVudCopOworCitwcml2YXRlOgorICAg
IFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3FfZG9Mb2FkRmluaXNoZWQoYm9vbCBzdWNjZXNzKSkK
KyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3BhZ2VEZXN0cm95ZWQoKSkKKyAgICBRX1BS
SVZBVEVfU0xPVChkLCB2b2lkIF9xX2NvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSkK
KyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3NjYWxlQ2hhbmdlZCgpKQorCisgICAgUUdy
YXBoaWNzV2ViVmlld1ByaXZhdGUqIGNvbnN0IGQ7CisgICAgZnJpZW5kIGNsYXNzIFFHcmFwaGlj
c1dlYlZpZXdQcml2YXRlOworfTsKKworI2VuZGlmIC8vIFFUX05PX0dSQVBISUNTVklFVworCisj
ZW5kaWYgLy8gUUdyYXBoaWNzV2ViVmlld19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dpZGdldEFwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YmZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2U1NjNjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYmZyYW1lLmNw
cApAQCAtMCwwICsxLDEyODAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDkgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0
IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmZyYW1lLmgiCisKKyNpbmNsdWRlICJRdFByaW50Q29u
dGV4dC5oIgorI2luY2x1ZGUgInF3ZWJlbGVtZW50LmgiCisjaW5jbHVkZSAicXdlYmZyYW1lX3Au
aCIKKyNpbmNsdWRlICJxd2VicGFnZS5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpbmNs
dWRlICJxd2Vic2NyaXB0d29ybGQuaCIKKyNpbmNsdWRlICJxd2Vic2NyaXB0d29ybGRfcC5oIgor
I2luY2x1ZGUgInF3ZWJzZWN1cml0eW9yaWdpbi5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3Js
ZC5oIgorI2luY2x1ZGUgPFFNdWx0aU1hcD4KKyNpbmNsdWRlIDxxZGVidWcuaD4KKyNpbmNsdWRl
IDxxZXZlbnQuaD4KKyNpbmNsdWRlIDxxZmlsZWluZm8uaD4KKyNpbmNsdWRlIDxxcGFpbnRlci5o
PgorI2lmIEhBVkUoUVRQUklOVFNVUFBPUlQpCisjaW5jbHVkZSA8cXByaW50ZXIuaD4KKyNlbmRp
ZgorI2luY2x1ZGUgPHFuZXR3b3JrcmVxdWVzdC5oPgorI2luY2x1ZGUgPHFyZWdpb24uaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8vIGZyb20gdGV4dC9xZm9udC5jcHAKK1FUX0JF
R0lOX05BTUVTUEFDRQorZXh0ZXJuIFFfR1VJX0VYUE9SVCBpbnQgcXRfZGVmYXVsdERwaSgpOwor
UVRfRU5EX05BTUVTUEFDRQorCit2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnNldFBhZ2UoUVdlYlBh
Z2UqIG5ld1BhZ2UpCit7CisgICAgaWYgKHBhZ2UgPT0gbmV3UGFnZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gVGhlIFFXZWJGcmFtZSBpcyBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgUVdlYlBh
Z2Ugb3IgYSBwYXJlbnQgUVdlYkZyYW1lLgorICAgIC8vIFRoYXQgYWRkcyBpdCB0byBRT2JqZWN0
J3MgaW50ZXJuYWwgY2hpbGRyZW4gbGlzdCBhbmQgZW5zdXJlcyBpdCB3aWxsIGJlCisgICAgLy8g
ZGVsZXRlZCB3aGVuIHBhcmVudCBRV2ViUGFnZSBpcyBkZWxldGVkLiBSZXBhcmVudCBpZiBuZWVk
ZWQuCisgICAgaWYgKHEtPnBhcmVudCgpID09IHFvYmplY3RfY2FzdDxRT2JqZWN0Kj4ocGFnZSkp
CisgICAgICAgIHEtPnNldFBhcmVudChuZXdQYWdlKTsKKworICAgIHBhZ2UgPSBuZXdQYWdlOwor
ICAgIHBhZ2VBZGFwdGVyID0gbmV3UGFnZS0+aGFuZGxlKCk7CisgICAgZW1pdCBxLT5wYWdlQ2hh
bmdlZCgpOworfQorCit2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmVtaXRVcmxDaGFuZ2VkKCkKK3sK
KyAgICB1cmwgPSBjb3JlRnJhbWVVcmwoKTsKKyAgICBlbWl0IHEtPnVybENoYW5nZWQodXJsKTsK
K30KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCit7
CisgICAgZW1pdCBxLT5wcm92aXNpb25hbExvYWQoKTsKK30KKwordm9pZCBRV2ViRnJhbWVQcml2
YXRlOjpkaWRDbGVhcldpbmRvd09iamVjdCgpCit7CisgICAgZW1pdCBxLT5qYXZhU2NyaXB0V2lu
ZG93T2JqZWN0Q2xlYXJlZCgpOworfQorCitib29sIFFXZWJGcmFtZVByaXZhdGU6OmhhbmRsZVBy
b2dyZXNzRmluaXNoZWQoUVBvaW50ICpsb2NhbFBvcykKK3sKKyAgICBRV2lkZ2V0ICp2aWV3ID0g
cS0+cGFnZSgpLT52aWV3KCk7CisgICAgaWYgKCF2aWV3IHx8ICFsb2NhbFBvcykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICpsb2NhbFBvcyA9IHZpZXctPm1hcEZyb21HbG9iYWwoUUN1cnNv
cjo6cG9zKCkpOworICAgIHJldHVybiB2aWV3LT5oYXNGb2N1cygpICYmIHZpZXctPnJlY3QoKS5j
b250YWlucygqbG9jYWxQb3MpOworfQorCit2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmVtaXRJbml0
aWFsTGF5b3V0Q29tcGxldGVkKCkKK3sKKyAgICBlbWl0IHEtPmluaXRpYWxMYXlvdXRDb21wbGV0
ZWQoKTsKK30KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjplbWl0SWNvbkNoYW5nZWQoKQorewor
ICAgIGVtaXQgcS0+aWNvbkNoYW5nZWQoKTsKK30KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjpl
bWl0TG9hZFN0YXJ0ZWQoYm9vbCBvcmlnaW5hdGluZ0xvYWQpCit7CisgICAgaWYgKHBhZ2UgJiYg
b3JpZ2luYXRpbmdMb2FkKQorICAgICAgICBlbWl0IHBhZ2UtPmxvYWRTdGFydGVkKCk7CisgICAg
ZW1pdCBxLT5sb2FkU3RhcnRlZCgpOworfQorCit2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmVtaXRM
b2FkRmluaXNoZWQoYm9vbCBvcmlnaW5hdGluZ0xvYWQsIGJvb2wgb2spCit7CisgICAgaWYgKHBh
Z2UgJiYgb3JpZ2luYXRpbmdMb2FkKQorICAgICAgICBlbWl0IHBhZ2UtPmxvYWRGaW5pc2hlZChv
ayk7CisgICAgZW1pdCBxLT5sb2FkRmluaXNoZWQob2spOworfQorCitRV2ViRnJhbWVBZGFwdGVy
KiBRV2ViRnJhbWVQcml2YXRlOjpjcmVhdGVDaGlsZEZyYW1lKFFXZWJGcmFtZURhdGEqIGZyYW1l
RGF0YSkKK3sKKyAgICBRV2ViRnJhbWUqIG5ld0ZyYW1lID0gbmV3IFFXZWJGcmFtZSgvKnBhcmVu
dCBmcmFtZSovcSwgZnJhbWVEYXRhKTsKKyAgICByZXR1cm4gbmV3RnJhbWUtPmQ7Cit9CisKK1FX
ZWJGcmFtZSAqUVdlYkZyYW1lUHJpdmF0ZTo6YXBpSGFuZGxlKCkKK3sKKyAgICByZXR1cm4gcTsK
K30KKworUU9iamVjdCAqUVdlYkZyYW1lUHJpdmF0ZTo6aGFuZGxlKCkKK3sKKyAgICByZXR1cm4g
cTsKK30KKwordm9pZCBRV2ViRnJhbWVQcml2YXRlOjpjb250ZW50c1NpemVEaWRDaGFuZ2UoY29u
c3QgUVNpemUgJnNpemUpCit7CisgICAgZW1pdCBxLT5jb250ZW50c1NpemVDaGFuZ2VkKHNpemUp
OworfQorCitpbnQgUVdlYkZyYW1lUHJpdmF0ZTo6c2Nyb2xsQmFyUG9saWN5KFF0OjpPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gKGludCkgcS0+c2Nyb2xsQmFy
UG9saWN5KG9yaWVudGF0aW9uKTsKK30KKworLyohCisgICAgXGNsYXNzIFFXZWJGcmFtZQorICAg
IFxzaW5jZSA0LjQKKyAgICBcYnJpZWYgVGhlIFFXZWJGcmFtZSBjbGFzcyByZXByZXNlbnRzIGEg
ZnJhbWUgaW4gYSB3ZWIgcGFnZS4KKworICAgIFxpbm1vZHVsZSBRdFdlYktpdAorCisgICAgUVdl
YkZyYW1lIHJlcHJlc2VudHMgYSBmcmFtZSBpbnNpZGUgYSB3ZWIgcGFnZS4gRWFjaCBRV2ViUGFn
ZQorICAgIG9iamVjdCBjb250YWlucyBhdCBsZWFzdCBvbmUgZnJhbWUsIHRoZSBtYWluIGZyYW1l
LCBvYnRhaW5lZCB1c2luZworICAgIFFXZWJQYWdlOjptYWluRnJhbWUoKS4gQWRkaXRpb25hbCBm
cmFtZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBIVE1MCisgICAgXGN7PGZyYW1lPn0gb3IgXGN7PGlm
cmFtZT59IGVsZW1lbnRzLgorCisgICAgQSBmcmFtZSBjYW4gYmUgbG9hZGVkIHVzaW5nIGxvYWQo
KSBvciBzZXRVcmwoKS4gQWx0ZXJuYXRpdmVseSwgaWYgeW91IGhhdmUKKyAgICB0aGUgSFRNTCBj
b250ZW50IHJlYWRpbHkgYXZhaWxhYmxlLCB5b3UgY2FuIHVzZSBzZXRIdG1sKCkgaW5zdGVhZC4K
KworICAgIFRoZSBwYWdlKCkgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHdlYiBw
YWdlIG9iamVjdC4gU2VlCisgICAgXGx7UVdlYlZpZXd9e0VsZW1lbnRzIG9mIFFXZWJWaWV3fSBm
b3IgYW4gZXhwbGFuYXRpb24gb2YgaG93IHdlYgorICAgIGZyYW1lcyBhcmUgcmVsYXRlZCB0byBh
IHdlYiBwYWdlIGFuZCB3ZWIgdmlldy4KKworICAgIFRoZSBRV2ViRnJhbWUgY2xhc3MgYWxzbyBv
ZmZlcnMgbWV0aG9kcyB0byByZXRyaWV2ZSBib3RoIHRoZSBVUkwgY3VycmVudGx5CisgICAgbG9h
ZGVkIGJ5IHRoZSBmcmFtZSAoc2VlIHVybCgpKSBhcyB3ZWxsIGFzIHRoZSBVUkwgb3JpZ2luYWxs
eSByZXF1ZXN0ZWQKKyAgICB0byBiZSBsb2FkZWQgKHNlZSByZXF1ZXN0ZWRVcmwoKSkuIFRoZXNl
IG1ldGhvZHMgbWFrZSBwb3NzaWJsZSB0aGUgcmV0cmlldmFsCisgICAgb2YgdGhlIFVSTCBiZWZv
cmUgYW5kIGFmdGVyIGEgRE5TIHJlc29sdXRpb24gb3IgYSByZWRpcmVjdGlvbiBvY2N1cnMgZHVy
aW5nCisgICAgdGhlIGxvYWQgcHJvY2Vzcy4gVGhlIHJlcXVlc3RlZFVybCgpIGFsc28gbWF0Y2hl
cyB0byB0aGUgVVJMIGFkZGVkIHRvIHRoZQorICAgIGZyYW1lIGhpc3RvcnkgKFxse1FXZWJIaXN0
b3J5fSkgaWYgbG9hZCBpcyBzdWNjZXNzZnVsLgorCisgICAgVGhlIHRpdGxlIG9mIGFuIEhUTUwg
ZnJhbWUgY2FuIGJlIGFjY2Vzc2VkIHdpdGggdGhlIHRpdGxlKCkgcHJvcGVydHkuCisgICAgQWRk
aXRpb25hbGx5LCBhIGZyYW1lIG1heSBhbHNvIHNwZWNpZnkgYW4gaWNvbiwgd2hpY2ggY2FuIGJl
IGFjY2Vzc2VkCisgICAgdXNpbmcgdGhlIGljb24oKSBwcm9wZXJ0eS4gSWYgdGhlIHRpdGxlIG9y
IHRoZSBpY29uIGNoYW5nZXMsIHRoZQorICAgIGNvcnJlc3BvbmRpbmcgdGl0bGVDaGFuZ2VkKCkg
YW5kIGljb25DaGFuZ2VkKCkgc2lnbmFscyB3aWxsIGJlIGVtaXR0ZWQuCisgICAgVGhlIHpvb21G
YWN0b3IoKSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIG92ZXJhbGwgc2l6ZQor
ICAgIG9mIHRoZSBjb250ZW50IGRpc3BsYXllZCBpbiB0aGUgZnJhbWUuCisKKyAgICBRV2ViRnJh
bWUgb2JqZWN0cyBhcmUgY3JlYXRlZCBhbmQgY29udHJvbGxlZCBieSB0aGUgd2ViIHBhZ2UuIFlv
dQorICAgIGNhbiBjb25uZWN0IHRvIHRoZSB3ZWIgcGFnZSdzIFxse1FXZWJQYWdlOjp9e2ZyYW1l
Q3JlYXRlZCgpfSBzaWduYWwKKyAgICB0byBiZSBub3RpZmllZCB3aGVuIGEgbmV3IGZyYW1lIGlz
IGNyZWF0ZWQuCisKKyAgICBUaGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0byBwcm9ncmFtbWF0aWNh
bGx5IGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGEgZnJhbWUuCisgICAgVGhlIGhpdFRlc3RDb250
ZW50KCkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZmluZCBlbGVtZW50cyBieSBjb29yZGluYXRl
LgorICAgIEZvciBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgRE9NIHRyZWUsIHRoZXJlIGlzIGRv
Y3VtZW50RWxlbWVudCgpLAorICAgIGZpbmRBbGxFbGVtZW50cygpIGFuZCBmaW5kRmlyc3RFbGVt
ZW50KCkuCisKKyAgICBBIFFXZWJGcmFtZSBjYW4gYmUgcHJpbnRlZCBvbnRvIGEgUVByaW50ZXIg
dXNpbmcgdGhlIHByaW50KCkgZnVuY3Rpb24uCisgICAgVGhpcyBmdW5jdGlvbiBpcyBtYXJrZWQg
YXMgYSBzbG90IGFuZCBjYW4gYmUgY29udmVuaWVudGx5IGNvbm5lY3RlZCB0bworICAgIFxse1FQ
cmludFByZXZpZXdEaWFsb2d9J3MgXGx7UVByaW50UHJldmlld0RpYWxvZzo6fXtwYWludFJlcXVl
c3RlZCgpfQorICAgIHNpZ25hbC4KKworICAgIFxzYSBRV2ViUGFnZQorKi8KKworLyohCisgICAg
XGVudW0gUVdlYkZyYW1lOjpSZW5kZXJMYXllcgorCisgICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0
aGUgbGF5ZXJzIGF2YWlsYWJsZSBmb3IgcmVuZGVyaW5nIHVzaW5nIFxse1FXZWJGcmFtZTo6fXty
ZW5kZXIoKX0uCisgICAgVGhlIGxheWVycyBjYW4gYmUgT1ItZWQgdG9nZXRoZXIgZnJvbSB0aGUg
Zm9sbG93aW5nIGxpc3Q6CisKKyAgICBcdmFsdWUgQ29udGVudHNMYXllciBUaGUgd2ViIGNvbnRl
bnQgb2YgdGhlIGZyYW1lCisgICAgXHZhbHVlIFNjcm9sbEJhckxheWVyIFRoZSBzY3JvbGxiYXJz
IG9mIHRoZSBmcmFtZQorICAgIFx2YWx1ZSBQYW5JY29uTGF5ZXIgVGhlIGljb24gdXNlZCB3aGVu
IHBhbm5pbmcgdGhlIGZyYW1lCisKKyAgICBcdmFsdWUgQWxsTGF5ZXJzIEluY2x1ZGVzIGFsbCB0
aGUgYWJvdmUgbGF5ZXJzCisqLworCitRV2ViRnJhbWU6OlFXZWJGcmFtZShRV2ViUGFnZSAqcGFy
ZW50UGFnZSkKKyAgICA6IFFPYmplY3QocGFyZW50UGFnZSkKKyAgICAsIGQobmV3IFFXZWJGcmFt
ZVByaXZhdGUpCit7CisgICAgZC0+cGFnZSA9IHBhcmVudFBhZ2U7CisgICAgZC0+cSA9IHRoaXM7
CisgICAgZC0+aW5pdCgvKnBhZ2UgYWRhcHRlciovIHBhcmVudFBhZ2UtPmhhbmRsZSgpKTsKKwor
I2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpICYmIEhBVkUoUVRTRU5TT1JTKQorICAgIGNv
bm5lY3QoJmQtPm1fb3JpZW50YXRpb24sIFNJR05BTChyZWFkaW5nQ2hhbmdlZCgpKSwgdGhpcywg
U0xPVChfcV9vcmllbnRhdGlvbkNoYW5nZWQoKSkpOworICAgIGQtPm1fb3JpZW50YXRpb24uc3Rh
cnQoKTsKKyNlbmRpZgorfQorCitRV2ViRnJhbWU6OlFXZWJGcmFtZShRV2ViRnJhbWUqIHBhcmVu
dCwgUVdlYkZyYW1lRGF0YSogZnJhbWVEYXRhKQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAg
LCBkKG5ldyBRV2ViRnJhbWVQcml2YXRlKQoreworICAgIGQtPnBhZ2UgPSBwYXJlbnQtPmQtPnBh
Z2U7CisgICAgZC0+cSA9IHRoaXM7CisgICAgZC0+aW5pdChwYXJlbnQtPmQtPnBhZ2VBZGFwdGVy
LCBmcmFtZURhdGEpOworI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpICYmIEhBVkUoUVRT
RU5TT1JTKQorICAgIGNvbm5lY3QoJmQtPm1fb3JpZW50YXRpb24sIFNJR05BTChyZWFkaW5nQ2hh
bmdlZCgpKSwgdGhpcywgU0xPVChfcV9vcmllbnRhdGlvbkNoYW5nZWQoKSkpOworICAgIGQtPm1f
b3JpZW50YXRpb24uc3RhcnQoKTsKKyNlbmRpZgorfQorCitRV2ViRnJhbWU6On5RV2ViRnJhbWUo
KQoreworICAgIGRlbGV0ZSBkOworfQorCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViRnJhbWU6OmFk
ZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdChjb25zdCBRU3RyaW5nICZuYW1lLCBRT2JqZWN0ICpv
YmplY3QsIFZhbHVlT3duZXJzaGlwIG93bikKKworICAgIE1ha2UgXGEgb2JqZWN0IGF2YWlsYWJs
ZSB1bmRlciBcYSBuYW1lIGZyb20gd2l0aGluIHRoZSBmcmFtZSdzIEphdmFTY3JpcHQKKyAgICBj
b250ZXh0LiBUaGUgXGEgb2JqZWN0IHdpbGwgYmUgaW5zZXJ0ZWQgYXMgYSBjaGlsZCBvZiB0aGUg
ZnJhbWUncyB3aW5kb3cKKyAgICBvYmplY3QuCisKKyAgICBRdCBwcm9wZXJ0aWVzIHdpbGwgYmUg
ZXhwb3NlZCBhcyBKYXZhU2NyaXB0IHByb3BlcnRpZXMgYW5kIHNsb3RzIGFzCisgICAgSmF2YVNj
cmlwdCBtZXRob2RzLgorICAgIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIEMrKyBhbmQgSmF2YVNj
cmlwdCBpcyBleHBsYWluZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFxse1RoZSBRdCBX
ZWJLaXQgQnJpZGdlfXtRdCBXZWJLaXQgYnJpZGdlfS4KKworICAgIElmIHlvdSB3YW50IHRvIGVu
c3VyZSB0aGF0IHlvdXIgUU9iamVjdHMgcmVtYWluIGFjY2Vzc2libGUgYWZ0ZXIgbG9hZGluZyBh
CisgICAgbmV3IFVSTCwgeW91IHNob3VsZCBhZGQgdGhlbSBpbiBhIHNsb3QgY29ubmVjdGVkIHRv
IHRoZQorICAgIGphdmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKCkgc2lnbmFsLgorCisgICAg
SWYgSmF2YXNjcmlwdCBpcyBub3QgZW5hYmxlZCBmb3IgdGhpcyBwYWdlLCB0aGVuIHRoaXMgbWV0
aG9kIGRvZXMgbm90aGluZy4KKworICAgIFRoZSBvd25lcnNoaXAgb2YgXGEgb2JqZWN0IGlzIHNw
ZWNpZmllZCB1c2luZyBcYSBvd24uCisqLwordm9pZCBRV2ViRnJhbWU6OmFkZFRvSmF2YVNjcmlw
dFdpbmRvd09iamVjdChjb25zdCBRU3RyaW5nICZuYW1lLCBRT2JqZWN0ICpvYmplY3QsIFZhbHVl
T3duZXJzaGlwIG93bmVyc2hpcCkKK3sKKyAgICBkLT5hZGRUb0phdmFTY3JpcHRXaW5kb3dPYmpl
Y3QobmFtZSwgb2JqZWN0LCBzdGF0aWNfY2FzdDxRV2ViRnJhbWVBZGFwdGVyOjpWYWx1ZU93bmVy
c2hpcD4ob3duZXJzaGlwKSk7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIGZyYW1lJ3MgY29u
dGVudCBhcyBIVE1MLCBlbmNsb3NlZCBpbiBIVE1MIGFuZCBCT0RZIHRhZ3MuCisKKyAgICBcc2Eg
c2V0SHRtbCgpLCB0b1BsYWluVGV4dCgpCisqLworUVN0cmluZyBRV2ViRnJhbWU6OnRvSHRtbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnRvSHRtbCgpOworfQorCisvKiEKKyAgICBSZXR1cm5z
IHRoZSBjb250ZW50IG9mIHRoaXMgZnJhbWUgY29udmVydGVkIHRvIHBsYWluIHRleHQsIGNvbXBs
ZXRlbHkKKyAgICBzdHJpcHBlZCBvZiBhbGwgSFRNTCBmb3JtYXR0aW5nLgorCisgICAgXHNhIHRv
SHRtbCgpCisqLworUVN0cmluZyBRV2ViRnJhbWU6OnRvUGxhaW5UZXh0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZC0+dG9QbGFpblRleHQoKTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFXZWJG
cmFtZTo6dGl0bGUKKyAgICBcYnJpZWYgdGhlIHRpdGxlIG9mIHRoZSBmcmFtZSBhcyBkZWZpbmVk
IGJ5IHRoZSBIVE1MICZsdDt0aXRsZSZndDsgZWxlbWVudAorCisgICAgXHNhIHRpdGxlQ2hhbmdl
ZCgpCisqLworCitRU3RyaW5nIFFXZWJGcmFtZTo6dGl0bGUoKSBjb25zdAoreworICAgIHJldHVy
biBkLT50aXRsZSgpOworfQorCisvKiEKKyAgICBcc2luY2UgNC41CisgICAgXGJyaWVmIFJldHVy
bnMgdGhlIG1ldGEgZGF0YSBpbiB0aGlzIGZyYW1lIGFzIGEgUU11bHRpTWFwCisKKyAgICBUaGUg
bWV0YSBkYXRhIGNvbnNpc3RzIG9mIHRoZSBuYW1lIGFuZCBjb250ZW50IGF0dHJpYnV0ZXMgb2Yg
dGhlCisgICAgb2YgdGhlIFxjezxtZXRhPn0gdGFncyBpbiB0aGUgSFRNTCBkb2N1bWVudC4KKwor
ICAgIEZvciBleGFtcGxlOgorCisgICAgXGNvZGUKKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+
CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iVGhpcyBkb2N1
bWVudCBpcyBhIHR1dG9yaWFsIGFib3V0IFF0IGRldmVsb3BtZW50Ij4KKyAgICAgICAgICAgIDxt
ZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJRdCwgV2ViS2l0LCBQcm9ncmFtbWluZyI+Cisg
ICAgICAgIDwvaGVhZD4KKyAgICAgICAgLi4uCisgICAgPC9odG1sPgorICAgIFxlbmRjb2RlCisK
KyAgICBHaXZlbiB0aGUgYWJvdmUgSFRNTCBjb2RlIHRoZSBtZXRhRGF0YSgpIGZ1bmN0aW9uIHdp
bGwgcmV0dXJuIGEgbWFwIHdpdGggdHdvIGVudHJpZXM6CisgICAgXHRhYmxlCisgICAgXGhlYWRl
ciBcbGkgS2V5CisgICAgICAgICAgICBcbGkgVmFsdWUKKyAgICBccm93ICAgIFxsaSAiZGVzY3Jp
cHRpb24iCisgICAgICAgICAgICBcbGkgIlRoaXMgZG9jdW1lbnQgaXMgYSB0dXRvcmlhbCBhYm91
dCBRdCBkZXZlbG9wbWVudCIKKyAgICBccm93ICAgIFxsaSAia2V5d29yZHMiCisgICAgICAgICAg
ICBcbGkgIlF0LCBXZWJLaXQsIFByb2dyYW1taW5nIgorICAgIFxlbmR0YWJsZQorCisgICAgVGhp
cyBmdW5jdGlvbiByZXR1cm5zIGEgbXVsdGkgbWFwIHRvIHN1cHBvcnQgbXVsdGlwbGUgbWV0YSB0
YWdzIHdpdGggdGhlIHNhbWUgYXR0cmlidXRlIG5hbWUuCisqLworUU11bHRpTWFwPFFTdHJpbmcs
IFFTdHJpbmc+IFFXZWJGcmFtZTo6bWV0YURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBkLT5t
ZXRhRGF0YSgpOworfQorCisvKiEKKyAgICBccHJvcGVydHkgUVdlYkZyYW1lOjp1cmwKKyAgICBc
YnJpZWYgdGhlIHVybCBvZiB0aGUgZnJhbWUgY3VycmVudGx5IHZpZXdlZAorCisgICAgU2V0dGlu
ZyB0aGlzIHByb3BlcnR5IGNsZWFycyB0aGUgdmlldyBhbmQgbG9hZHMgdGhlIFVSTC4KKworICAg
IEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgYW4gZW1wdHksIGludmFsaWQgVVJM
LgorCisgICAgXHNhIHVybENoYW5nZWQoKQorKi8KKwordm9pZCBRV2ViRnJhbWU6OnNldFVybChj
b25zdCBRVXJsICZ1cmwpCit7CisgICAgZC0+Y2xlYXJDb3JlRnJhbWUoKTsKKyAgICBjb25zdCBR
VXJsIGFic29sdXRlID0gUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJzb2x1dGVVcmwodXJsKTsK
KyAgICBkLT51cmwgPSBhYnNvbHV0ZTsKKyAgICBsb2FkKGFic29sdXRlKTsKK30KKworUVVybCBR
V2ViRnJhbWU6OnVybCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnVybDsKK30KKworLyohCisg
ICAgXHNpbmNlIDQuNgorICAgIFxwcm9wZXJ0eSBRV2ViRnJhbWU6OnJlcXVlc3RlZFVybAorCisg
ICAgVGhlIFVSTCByZXF1ZXN0ZWQgdG8gbG9hZGVkIGJ5IHRoZSBmcmFtZSBjdXJyZW50bHkgdmll
d2VkLiBUaGUgVVJMIG1heSBkaWZmZXIgZnJvbQorICAgIHRoZSBvbmUgcmV0dXJuZWQgYnkgdXJs
KCkgaWYgYSBETlMgcmVzb2x1dGlvbiBvciBhIHJlZGlyZWN0aW9uIG9jY3Vycy4KKworICAgIFxz
YSB1cmwoKSwgc2V0VXJsKCkKKyovCitRVXJsIFFXZWJGcmFtZTo6cmVxdWVzdGVkVXJsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZC0+bGFzdFJlcXVlc3RlZFVybCgpOworfQorLyohCisgICAgXHNp
bmNlIDQuNgorICAgIFxwcm9wZXJ0eSBRV2ViRnJhbWU6OmJhc2VVcmwKKyAgICBcYnJpZWYgdGhl
IGJhc2UgVVJMIG9mIHRoZSBmcmFtZSwgY2FuIGJlIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBV
UkxzCisgICAgXHNpbmNlIDQuNgorKi8KKworUVVybCBRV2ViRnJhbWU6OmJhc2VVcmwoKSBjb25z
dAoreworICAgIHJldHVybiBkLT5iYXNlVXJsKCk7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBR
V2ViRnJhbWU6Omljb24KKyAgICBcYnJpZWYgdGhlIGljb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMg
ZnJhbWUKKworICAgIFxzYSBpY29uQ2hhbmdlZCgpLCBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwo
KQorKi8KKworUUljb24gUVdlYkZyYW1lOjppY29uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVdl
YlNldHRpbmdzOjppY29uRm9yVXJsKGQtPmNvcmVGcmFtZVVybCgpKTsKK30KKworLyohCisgIFRo
ZSBuYW1lIG9mIHRoaXMgZnJhbWUgYXMgZGVmaW5lZCBieSB0aGUgcGFyZW50IGZyYW1lLgorKi8K
K1FTdHJpbmcgUVdlYkZyYW1lOjpmcmFtZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBkLT51
bmlxdWVOYW1lKCk7Cit9CisKKy8qIQorICBUaGUgd2ViIHBhZ2UgdGhhdCBjb250YWlucyB0aGlz
IGZyYW1lLgorCisgIFxzYSBwYWdlQ2hhbmdlZCgpCisqLworUVdlYlBhZ2UgKlFXZWJGcmFtZTo6
cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnBhZ2U7Cit9CisKKy8qIQorICBMb2FkcyBc
YSB1cmwgaW50byB0aGlzIGZyYW1lLgorCisgIFxub3RlIFRoZSB2aWV3IHJlbWFpbnMgdGhlIHNh
bWUgdW50aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2ZWQgdG8gZGlzcGxheSB0aGUgbmV3IFxhIHVy
bC4KKworICBcc2Egc2V0VXJsKCksIHNldEh0bWwoKSwgc2V0Q29udGVudCgpCisqLwordm9pZCBR
V2ViRnJhbWU6OmxvYWQoY29uc3QgUVVybCAmdXJsKQoreworICAgIC8vIFRoZSBsb2FkKCkgb3Zl
cmxvYWQgZW5zdXJlcyB0aGF0IHRoZSB1cmwgaXMgYWJzb2x1dGUuCisgICAgbG9hZChRTmV0d29y
a1JlcXVlc3QodXJsKSk7Cit9CisKKy8qIQorICBMb2FkcyBhIG5ldHdvcmsgcmVxdWVzdCwgXGEg
cmVxLCBpbnRvIHRoaXMgZnJhbWUsIHVzaW5nIHRoZSBtZXRob2Qgc3BlY2lmaWVkIGluIFxhCisg
IG9wZXJhdGlvbi4KKworICBcYSBib2R5IGlzIG9wdGlvbmFsIGFuZCBpcyBvbmx5IHVzZWQgZm9y
IFBPU1Qgb3BlcmF0aW9ucy4KKworICBcbm90ZSBUaGUgdmlldyByZW1haW5zIHRoZSBzYW1lIHVu
dGlsIGVub3VnaCBkYXRhIGhhcyBhcnJpdmVkIHRvIGRpc3BsYXkgdGhlIG5ldyBjb250ZW50Lgor
CisgIFxzYSBzZXRVcmwoKQorKi8KK3ZvaWQgUVdlYkZyYW1lOjpsb2FkKGNvbnN0IFFOZXR3b3Jr
UmVxdWVzdCAmcmVxLCBRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBvcGVyYXRpb24s
IGNvbnN0IFFCeXRlQXJyYXkgJmJvZHkpCit7CisgICAgZC0+bG9hZChyZXEsIG9wZXJhdGlvbiwg
Ym9keSk7Cit9CisKKy8qIQorICBTZXRzIHRoZSBjb250ZW50IG9mIHRoaXMgZnJhbWUgdG8gXGEg
aHRtbC4gXGEgYmFzZVVybCBpcyBvcHRpb25hbCBhbmQgdXNlZCB0byByZXNvbHZlIHJlbGF0aXZl
CisgIFVSTHMgaW4gdGhlIGRvY3VtZW50LCBzdWNoIGFzIHJlZmVyZW5jZWQgaW1hZ2VzIG9yIHN0
eWxlc2hlZXRzLgorCisgIFRoZSBcYSBodG1sIGlzIGxvYWRlZCBpbW1lZGlhdGVseTsgZXh0ZXJu
YWwgb2JqZWN0cyBhcmUgbG9hZGVkIGFzeW5jaHJvbm91c2x5LgorCisgIElmIGEgc2NyaXB0IGlu
IHRoZSBcYSBodG1sIHJ1bnMgbG9uZ2VyIHRoYW4gdGhlIGRlZmF1bHQgc2NyaXB0IHRpbWVvdXQg
KGN1cnJlbnRseSAxMCBzZWNvbmRzKSwKKyAgZm9yIGV4YW1wbGUgZHVlIHRvIGJlaW5nIGJsb2Nr
ZWQgYnkgYSBtb2RhbCBKYXZhU2NyaXB0IGFsZXJ0IGRpYWxvZywgdGhpcyBtZXRob2Qgd2lsbCBy
ZXR1cm4KKyAgYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciB0aGUgdGltZW91dCBhbmQgYW55IHN1
YnNlcXVlbnQgXGEgaHRtbCB3aWxsIGJlIGxvYWRlZCBhc3luY2hyb25vdXNseS4KKworICBXaGVu
IHVzaW5nIHRoaXMgbWV0aG9kIFdlYktpdCBhc3N1bWVzIHRoYXQgZXh0ZXJuYWwgcmVzb3VyY2Vz
IHN1Y2ggYXMgSmF2YVNjcmlwdCBwcm9ncmFtcyBvciBzdHlsZQorICBzaGVldHMgYXJlIGVuY29k
ZWQgaW4gVVRGLTggdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIEZvciBleGFtcGxlLCB0aGUg
ZW5jb2Rpbmcgb2YgYW4gZXh0ZXJuYWwKKyAgc2NyaXB0IGNhbiBiZSBzcGVjaWZpZWQgdGhyb3Vn
aCB0aGUgY2hhcnNldCBhdHRyaWJ1dGUgb2YgdGhlIEhUTUwgc2NyaXB0IHRhZy4gSXQgaXMgYWxz
byBwb3NzaWJsZQorICBmb3IgdGhlIGVuY29kaW5nIHRvIGJlIHNwZWNpZmllZCBieSB3ZWIgc2Vy
dmVyLgorCisgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBlcXVpdmFsZW50IHRvIHNl
dENvbnRlbnQoaHRtbCwgInRleHQvaHRtbCIsIGJhc2VVcmwpLgorCisgIFxub3RlIFRoaXMgbWV0
aG9kIHdpbGwgbm90IGFmZmVjdCBzZXNzaW9uIG9yIGdsb2JhbCBoaXN0b3J5IGZvciB0aGUgZnJh
bWUuCisKKyAgXHdhcm5pbmcgVGhpcyBmdW5jdGlvbiB3b3JrcyBvbmx5IGZvciBIVE1MLCBmb3Ig
b3RoZXIgbWltZSB0eXBlcyAoaS5lLiBYSFRNTCwgU1ZHKQorICBzZXRDb250ZW50KCkgc2hvdWxk
IGJlIHVzZWQgaW5zdGVhZC4KKworICBcc2EgdG9IdG1sKCksIHNldENvbnRlbnQoKSwgbG9hZCgp
CisqLwordm9pZCBRV2ViRnJhbWU6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3Qg
UVVybCAmYmFzZVVybCkKK3sKKyAgICBkLT5zZXRIdG1sKGh0bWwsIGJhc2VVcmwpOworfQorCisv
KiEKKyAgU2V0cyB0aGUgY29udGVudCBvZiB0aGlzIGZyYW1lIHRvIHRoZSBzcGVjaWZpZWQgY29u
dGVudCBcYSBkYXRhLiBJZiB0aGUgXGEgbWltZVR5cGUgYXJndW1lbnQKKyAgaXMgZW1wdHkgaXQg
aXMgY3VycmVudGx5IGFzc3VtZWQgdGhhdCB0aGUgY29udGVudCBpcyBIVE1MIGJ1dCBpbiBmdXR1
cmUgdmVyc2lvbnMgd2UgbWF5IGludHJvZHVjZQorICBhdXRvLWRldGVjdGlvbi4KKworICBFeHRl
cm5hbCBvYmplY3RzIHJlZmVyZW5jZWQgaW4gdGhlIGNvbnRlbnQgYXJlIGxvY2F0ZWQgcmVsYXRp
dmUgdG8gXGEgYmFzZVVybC4KKworICBUaGUgXGEgZGF0YSBpcyBsb2FkZWQgaW1tZWRpYXRlbHk7
IGV4dGVybmFsIG9iamVjdHMgYXJlIGxvYWRlZCBhc3luY2hyb25vdXNseS4KKworICBcbm90ZSBU
aGlzIG1ldGhvZCB3aWxsIG5vdCBhZmZlY3Qgc2Vzc2lvbiBvciBnbG9iYWwgaGlzdG9yeSBmb3Ig
dGhlIGZyYW1lLgorCisgIFxzYSB0b0h0bWwoKSwgc2V0SHRtbCgpCisqLwordm9pZCBRV2ViRnJh
bWU6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSwgY29uc3QgUVN0cmluZyAmbWlt
ZVR5cGUsIGNvbnN0IFFVcmwgJmJhc2VVcmwpCit7CisgICAgZC0+c2V0Q29udGVudChkYXRhLCBt
aW1lVHlwZSwgYmFzZVVybCk7Cit9CisKKy8qIQorICBSZXR1cm5zIHRoZSBwYXJlbnQgZnJhbWUg
b2YgdGhpcyBmcmFtZSwgb3IgMCBpZiB0aGUgZnJhbWUgaXMgdGhlIHdlYiBwYWdlcworICBtYWlu
IGZyYW1lLgorCisgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1l
Kj4oZnJhbWUtPnBhcmVudCgpKS4KKworICBcc2EgY2hpbGRGcmFtZXMoKQorKi8KK1FXZWJGcmFt
ZSAqUVdlYkZyYW1lOjpwYXJlbnRGcmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnBhcmVu
dEZyYW1lKCk7Cit9CisKKy8qIQorICBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgZnJhbWVzIHRoYXQg
YXJlIGRpcmVjdCBjaGlsZHJlbiBvZiB0aGlzIGZyYW1lLgorCisgIFxzYSBwYXJlbnRGcmFtZSgp
CisqLworUUxpc3Q8UVdlYkZyYW1lKj4gUVdlYkZyYW1lOjpjaGlsZEZyYW1lcygpIGNvbnN0Cit7
CisgICAgUUxpc3Q8UU9iamVjdCo+IG9iamVjdHMgPSBkLT5jaGlsZEZyYW1lcygpOworICAgIFFM
aXN0PFFXZWJGcmFtZSo+IHJjOworICAgIHJjLnJlc2VydmUob2JqZWN0cy5zaXplKCkpOworICAg
IFFfRk9SRUFDSChRT2JqZWN0KiBvYmplY3QsIG9iamVjdHMpIHsKKyAgICAgICAgaWYgKFFXZWJG
cmFtZSogZnJhbWUgPSBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4ob2JqZWN0KSkKKyAgICAgICAg
ICAgIHJjLmFwcGVuZChmcmFtZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCisvKiEK
KyAgICBSZXR1cm5zIHRoZSBzY3JvbGxiYXIgcG9saWN5IGZvciB0aGUgc2Nyb2xsYmFyIGRlZmlu
ZWQgYnkgXGEgb3JpZW50YXRpb24uCisqLworUXQ6OlNjcm9sbEJhclBvbGljeSBRV2ViRnJhbWU6
OnNjcm9sbEJhclBvbGljeShRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0Cit7Cisg
ICAgaWYgKG9yaWVudGF0aW9uID09IFF0OjpIb3Jpem9udGFsKQorICAgICAgICByZXR1cm4gZC0+
aG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeTsKKyAgICByZXR1cm4gZC0+dmVydGljYWxTY3JvbGxC
YXJQb2xpY3k7Cit9CisKKy8qIQorICAgIFNldHMgdGhlIHNjcm9sbGJhciBwb2xpY3kgZm9yIHRo
ZSBzY3JvbGxiYXIgZGVmaW5lZCBieSBcYSBvcmllbnRhdGlvbiB0byBcYSBwb2xpY3kuCisqLwor
dm9pZCBRV2ViRnJhbWU6OnNldFNjcm9sbEJhclBvbGljeShRdDo6T3JpZW50YXRpb24gb3JpZW50
YXRpb24sIFF0OjpTY3JvbGxCYXJQb2xpY3kgcG9saWN5KQoreworICAgIGQtPnNldFNjcm9sbEJh
clBvbGljeShvcmllbnRhdGlvbiwgcG9saWN5KTsKK30KKworLyohCisgIFNldHMgdGhlIGN1cnJl
bnQgXGEgdmFsdWUgZm9yIHRoZSBzY3JvbGxiYXIgd2l0aCBvcmllbnRhdGlvbiBcYSBvcmllbnRh
dGlvbi4KKworICBUaGUgc2Nyb2xsYmFyIGZvcmNlcyB0aGUgXGEgdmFsdWUgdG8gYmUgd2l0aGlu
IHRoZSBsZWdhbCByYW5nZTogbWluaW11bSA8PSB2YWx1ZSA8PSBtYXhpbXVtLgorCisgIENoYW5n
aW5nIHRoZSB2YWx1ZSBhbHNvIHVwZGF0ZXMgdGhlIHRodW1iIHBvc2l0aW9uLgorCisgIFxzYSBz
Y3JvbGxCYXJNaW5pbXVtKCksIHNjcm9sbEJhck1heGltdW0oKQorKi8KK3ZvaWQgUVdlYkZyYW1l
OjpzZXRTY3JvbGxCYXJWYWx1ZShRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24sIGludCB2YWx1
ZSkKK3sKKyAgICBkLT5zZXRTY3JvbGxCYXJWYWx1ZShvcmllbnRhdGlvbiwgdmFsdWUpOworfQor
CisvKiEKKyAgUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgdGhlIHNjcm9sbGJhciB3aXRo
IG9yaWVudGF0aW9uIFxhIG9yaWVudGF0aW9uLCBvciAwCisgIGlmIG5vIHNjcm9sbGJhciBpcyBm
b3VuZCBmb3IgXGEgb3JpZW50YXRpb24uCisKKyAgXHNhIHNjcm9sbEJhck1pbmltdW0oKSwgc2Ny
b2xsQmFyTWF4aW11bSgpCisqLworaW50IFFXZWJGcmFtZTo6c2Nyb2xsQmFyVmFsdWUoUXQ6Ok9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdAoreworICAgIHJldHVybiBkLT5zY3JvbGxCYXJW
YWx1ZShvcmllbnRhdGlvbik7Cit9CisKKy8qIQorICBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVl
IGZvciB0aGUgc2Nyb2xsYmFyIHdpdGggb3JpZW50YXRpb24gXGEgb3JpZW50YXRpb24sIG9yIDAK
KyAgaWYgbm8gc2Nyb2xsYmFyIGlzIGZvdW5kIGZvciBcYSBvcmllbnRhdGlvbi4KKworICBcc2Eg
c2Nyb2xsQmFyTWluaW11bSgpCisqLworaW50IFFXZWJGcmFtZTo6c2Nyb2xsQmFyTWF4aW11bShR
dDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnNjcm9s
bEJhck1heGltdW0ob3JpZW50YXRpb24pOworfQorCisvKiEKKyAgUmV0dXJucyB0aGUgbWluaW11
bSB2YWx1ZSBmb3IgdGhlIHNjcm9sbGJhciB3aXRoIG9yaWVudGF0aW9uIFxhIG9yaWVudGF0aW9u
LgorCisgIFRoZSBtaW5pbXVtIHZhbHVlIGlzIGFsd2F5cyAwLgorCisgIFxzYSBzY3JvbGxCYXJN
YXhpbXVtKCkKKyovCitpbnQgUVdlYkZyYW1lOjpzY3JvbGxCYXJNaW5pbXVtKFF0OjpPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBRX1VOVVNFRChvcmllbnRhdGlvbik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8qIQorICBcc2luY2UgNC42CisgIFJldHVybnMgdGhlIGdlb21l
dHJ5IGZvciB0aGUgc2Nyb2xsYmFyIHdpdGggb3JpZW50YXRpb24gXGEgb3JpZW50YXRpb24uCisK
KyAgSWYgdGhlIHNjcm9sbGJhciBkb2VzIG5vdCBleGlzdCBhbiBlbXB0eSByZWN0IGlzIHJldHVy
bmVkLgorKi8KK1FSZWN0IFFXZWJGcmFtZTo6c2Nyb2xsQmFyR2VvbWV0cnkoUXQ6Ok9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKSBjb25zdAoreworICAgIHJldHVybiBkLT5zY3JvbGxCYXJHZW9tZXRy
eShvcmllbnRhdGlvbik7Cit9CisKKy8qIQorICBcc2luY2UgNC41CisgIFNjcm9sbHMgdGhlIGZy
YW1lIFxhIGR4IHBpeGVscyB0byB0aGUgcmlnaHQgYW5kIFxhIGR5IHBpeGVscyBkb3dud2FyZC4g
Qm90aAorICBcYSBkeCBhbmQgXGEgZHkgbWF5IGJlIG5lZ2F0aXZlLgorCisgIFxzYSBRV2ViRnJh
bWU6OnNjcm9sbFBvc2l0aW9uCisqLworCit2b2lkIFFXZWJGcmFtZTo6c2Nyb2xsKGludCBkeCwg
aW50IGR5KQoreworICAgIGQtPnNjcm9sbEJ5KGR4LCBkeSk7Cit9CisKKy8qIQorICBccHJvcGVy
dHkgUVdlYkZyYW1lOjpzY3JvbGxQb3NpdGlvbgorICBcc2luY2UgNC41CisgIFxicmllZiB0aGUg
cG9zaXRpb24gdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBzY3JvbGxlZCB0by4KKyovCisKK1FQb2lu
dCBRV2ViRnJhbWU6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+c2Ny
b2xsUG9zaXRpb24oKTsKK30KKwordm9pZCBRV2ViRnJhbWU6OnNldFNjcm9sbFBvc2l0aW9uKGNv
bnN0IFFQb2ludCAmcG9zKQoreworICAgIFFQb2ludCBjdXJyZW50ID0gc2Nyb2xsUG9zaXRpb24o
KTsKKyAgICBpbnQgZHggPSBwb3MueCgpIC0gY3VycmVudC54KCk7CisgICAgaW50IGR5ID0gcG9z
LnkoKSAtIGN1cnJlbnQueSgpOworICAgIHNjcm9sbChkeCwgZHkpOworfQorCisvKiEKKyAgXHNp
bmNlIDQuNworICBTY3JvbGxzIHRoZSBmcmFtZSB0byB0aGUgZ2l2ZW4gXGEgYW5jaG9yIG5hbWUu
CisqLwordm9pZCBRV2ViRnJhbWU6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFFTdHJpbmcmIGFuY2hv
cikKK3sKKyAgICBkLT5zY3JvbGxUb0FuY2hvcihhbmNob3IpOworfQorCisvKiEKKyAgXHNpbmNl
IDQuNgorICBSZW5kZXIgdGhlIFxhIGxheWVyIG9mIHRoZSBmcmFtZSB1c2luZyBcYSBwYWludGVy
IGNsaXBwaW5nIHRvIFxhIGNsaXAuCisKKyAgXHNhIHByaW50KCkKKyovCisKK3ZvaWQgUVdlYkZy
YW1lOjpyZW5kZXIoUVBhaW50ZXIqIHBhaW50ZXIsIFJlbmRlckxheWVycyBsYXllciwgY29uc3Qg
UVJlZ2lvbiYgY2xpcCkKK3sKKyAgICBpZiAoIWNsaXAuaXNFbXB0eSgpKQorICAgICAgICBkLT5y
ZW5kZXJSZWxhdGl2ZUNvb3JkcyhwYWludGVyLCBsYXllciwgY2xpcCk7CisgICAgZWxzZSBpZiAo
ZC0+aGFzVmlldygpKQorICAgICAgICBkLT5yZW5kZXJSZWxhdGl2ZUNvb3JkcyhwYWludGVyLCBs
YXllciwgUVJlZ2lvbihkLT5mcmFtZVJlY3QoKSkpOworfQorCisvKiEKKyAgUmVuZGVyIHRoZSBm
cmFtZSBpbnRvIFxhIHBhaW50ZXIgY2xpcHBpbmcgdG8gXGEgY2xpcC4KKyovCit2b2lkIFFXZWJG
cmFtZTo6cmVuZGVyKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVnaW9uJiBjbGlwKQorewor
ICAgIHJlbmRlcihwYWludGVyLCBBbGxMYXllcnMsIGNsaXApOworfQorCisvKiEKKyAgICBccHJv
cGVydHkgUVdlYkZyYW1lOjp0ZXh0U2l6ZU11bHRpcGxpZXIKKyAgICBcYnJpZWYgdGhlIHNjYWxp
bmcgZmFjdG9yIGZvciBhbGwgdGV4dCBpbiB0aGUgZnJhbWUKKyAgICBcb2Jzb2xldGUKKworICAg
IFVzZSBzZXRab29tRmFjdG9yIGluc3RlYWQsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIFpvb21U
ZXh0T25seSBhdHRyaWJ1dGUgaW4KKyAgICBRV2ViU2V0dGluZ3MuCisKKyAgICBcbm90ZSBTZXR0
aW5nIHRoaXMgcHJvcGVydHkgYWxzbyBlbmFibGVzIHRoZSBab29tVGV4dE9ubHkgYXR0cmlidXRl
IGluCisgICAgUVdlYlNldHRpbmdzLgorKi8KKworLyohCisgICAgU2V0cyB0aGUgdmFsdWUgb2Yg
dGhlIG11bHRpcGxpZXIgdXNlZCB0byBzY2FsZSB0aGUgdGV4dCBpbiBhIFdlYiBmcmFtZSB0bwor
ICAgIHRoZSBcYSBmYWN0b3Igc3BlY2lmaWVkLgorKi8KK3ZvaWQgUVdlYkZyYW1lOjpzZXRUZXh0
U2l6ZU11bHRpcGxpZXIocXJlYWwgZmFjdG9yKQoreworICAgIGQtPnNldFRleHRTaXplTXVsdGlw
bGllcihmYWN0b3IpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgbXVs
dGlwbGllciB1c2VkIHRvIHNjYWxlIHRoZSB0ZXh0IGluIGEgV2ViIGZyYW1lLgorKi8KK3FyZWFs
IFFXZWJGcmFtZTo6dGV4dFNpemVNdWx0aXBsaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
em9vbUZhY3RvcigpOworfQorCisvKiEKKyAgICBccHJvcGVydHkgUVdlYkZyYW1lOjp6b29tRmFj
dG9yCisgICAgXHNpbmNlIDQuNQorICAgIFxicmllZiB0aGUgem9vbSBmYWN0b3IgZm9yIHRoZSBm
cmFtZQorKi8KKwordm9pZCBRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IocXJlYWwgZmFjdG9yKQor
eworICAgIGQtPnNldFpvb21GYWN0b3IoZmFjdG9yKTsKK30KKworcXJlYWwgUVdlYkZyYW1lOjp6
b29tRmFjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+em9vbUZhY3RvcigpOworfQorCisv
KiEKKyAgICBccHJvcGVydHkgUVdlYkZyYW1lOjpmb2N1cworICAgIFxzaW5jZSA0LjYKKworICAg
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGZyYW1lIGhhcyBrZXlib2FyZCBpbnB1dCBmb2N1czsgb3Ro
ZXJ3aXNlLCByZXR1cm5zIGZhbHNlLgorKi8KK2Jvb2wgUVdlYkZyYW1lOjpoYXNGb2N1cygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGQtPmhhc0ZvY3VzKCk7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0
LjYKKworICAgIEdpdmVzIGtleWJvYXJkIGlucHV0IGZvY3VzIHRvIHRoaXMgZnJhbWUuCisqLwor
dm9pZCBRV2ViRnJhbWU6OnNldEZvY3VzKCkKK3sKKyAgICBkLT5zZXRGb2N1cygpOworfQorCisv
KiEKKyAgICBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgZnJhbWUgcmVsYXRpdmUgdG8gaXQn
cyBwYXJlbnQgZnJhbWUuCisqLworUVBvaW50IFFXZWJGcmFtZTo6cG9zKCkgY29uc3QKK3sKKyAg
ICBpZiAoIWQtPmhhc1ZpZXcoKSkKKyAgICAgICAgcmV0dXJuIFFQb2ludCgpOworCisgICAgcmV0
dXJuIGQtPmZyYW1lUmVjdCgpLnRvcExlZnQoKTsKK30KKworLyohCisgICAgUmV0dXJuIHRoZSBn
ZW9tZXRyeSBvZiB0aGUgZnJhbWUgcmVsYXRpdmUgdG8gaXQncyBwYXJlbnQgZnJhbWUuCisqLwor
UVJlY3QgUVdlYkZyYW1lOjpnZW9tZXRyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZyYW1l
UmVjdCgpOworfQorCisvKiEKKyAgICBccHJvcGVydHkgUVdlYkZyYW1lOjpjb250ZW50c1NpemUK
KyAgICBcYnJpZWYgdGhlIHNpemUgb2YgdGhlIGNvbnRlbnRzIGluIHRoaXMgZnJhbWUKKworICAg
IFxzYSBjb250ZW50c1NpemVDaGFuZ2VkKCkKKyovCitRU2l6ZSBRV2ViRnJhbWU6OmNvbnRlbnRz
U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmNvbnRlbnRzU2l6ZSgpOworfQorCisvKiEK
KyAgICBcc2luY2UgNC42CisKKyAgICBSZXR1cm5zIHRoZSBkb2N1bWVudCBlbGVtZW50IG9mIHRo
aXMgZnJhbWUuCisKKyAgICBUaGUgZG9jdW1lbnQgZWxlbWVudCBwcm92aWRlcyBhY2Nlc3MgdG8g
dGhlIGVudGlyZSBzdHJ1Y3R1cmVkCisgICAgY29udGVudCBvZiB0aGUgZnJhbWUuCisqLworUVdl
YkVsZW1lbnQgUVdlYkZyYW1lOjpkb2N1bWVudEVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVy
biBkLT5kb2N1bWVudEVsZW1lbnQoKTsKK30KKworLyohCisgICAgXHNpbmNlIDQuNgorICAgIFJl
dHVybnMgYSBuZXcgbGlzdCBvZiBlbGVtZW50cyBtYXRjaGluZyB0aGUgZ2l2ZW4gQ1NTIHNlbGVj
dG9yIFxhIHNlbGVjdG9yUXVlcnkuCisgICAgSWYgdGhlcmUgYXJlIG5vIG1hdGNoaW5nIGVsZW1l
bnRzLCBhbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkLgorCisgICAgXGx7aHR0cDovL3d3dy53My5v
cmcvVFIvUkVDLUNTUzIvc2VsZWN0b3IuaHRtbCNxMX17U3RhbmRhcmQgQ1NTMiBzZWxlY3Rvcn0g
c3ludGF4IGlzCisgICAgdXNlZCBmb3IgdGhlIHF1ZXJ5LgorCisgICAgXHNhIFFXZWJFbGVtZW50
OjpmaW5kQWxsKCkKKyovCitRV2ViRWxlbWVudENvbGxlY3Rpb24gUVdlYkZyYW1lOjpmaW5kQWxs
RWxlbWVudHMoY29uc3QgUVN0cmluZyAmc2VsZWN0b3JRdWVyeSkgY29uc3QKK3sKKyAgICByZXR1
cm4gZG9jdW1lbnRFbGVtZW50KCkuZmluZEFsbChzZWxlY3RvclF1ZXJ5KTsKK30KKworLyohCisg
ICAgXHNpbmNlIDQuNgorICAgIFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIGZyYW1l
J3MgZG9jdW1lbnQgdGhhdCBtYXRjaGVzIHRoZQorICAgIGdpdmVuIENTUyBzZWxlY3RvciBcYSBz
ZWxlY3RvclF1ZXJ5LiBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBlbGVtZW50LCBhCisgICAgbnVs
bCBlbGVtZW50IGlzIHJldHVybmVkLgorCisgICAgXGx7aHR0cDovL3d3dy53My5vcmcvVFIvUkVD
LUNTUzIvc2VsZWN0b3IuaHRtbCNxMX17U3RhbmRhcmQgQ1NTMiBzZWxlY3Rvcn0gc3ludGF4IGlz
CisgICAgdXNlZCBmb3IgdGhlIHF1ZXJ5LgorCisgICAgXHNhIFFXZWJFbGVtZW50OjpmaW5kRmly
c3QoKQorKi8KK1FXZWJFbGVtZW50IFFXZWJGcmFtZTo6ZmluZEZpcnN0RWxlbWVudChjb25zdCBR
U3RyaW5nICZzZWxlY3RvclF1ZXJ5KSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudEVsZW1l
bnQoKS5maW5kRmlyc3Qoc2VsZWN0b3JRdWVyeSk7Cit9CisKKy8qIQorICAgIFBlcmZvcm1zIGEg
aGl0IHRlc3Qgb24gdGhlIGZyYW1lIGNvbnRlbnRzIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBcYSBw
b3MgYW5kIHJldHVybnMgdGhlIGhpdCB0ZXN0IHJlc3VsdC4KKyovCitRV2ViSGl0VGVzdFJlc3Vs
dCBRV2ViRnJhbWU6OmhpdFRlc3RDb250ZW50KGNvbnN0IFFQb2ludCAmcG9zKSBjb25zdAorewor
ICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSogcmVzdWx0ID0gZC0+aGl0VGVzdENvbnRlbnQo
cG9zKTsKKworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gUVdlYkhpdFRlc3RSZXN1
bHQoKTsKKworICAgIHJldHVybiBRV2ViSGl0VGVzdFJlc3VsdChyZXN1bHQpOworfQorCisvKiEg
XHJlaW1wCisqLworYm9vbCBRV2ViRnJhbWU6OmV2ZW50KFFFdmVudCAqZSkKK3sKKyAgICByZXR1
cm4gUU9iamVjdDo6ZXZlbnQoZSk7Cit9CisKKyNpZm5kZWYgUVRfTk9fUFJJTlRFUgorLyohCisg
ICAgUHJpbnRzIHRoZSBmcmFtZSB0byB0aGUgZ2l2ZW4gXGEgcHJpbnRlci4KKworICAgIFxzYSBy
ZW5kZXIoKQorKi8KK3ZvaWQgUVdlYkZyYW1lOjpwcmludChRUHJpbnRlciAqcHJpbnRlcikgY29u
c3QKK3sKKyNpZiBIQVZFKFFUUFJJTlRTVVBQT1JUKQorICAgIFFQYWludGVyIHBhaW50ZXI7Cisg
ICAgaWYgKCFwYWludGVyLmJlZ2luKHByaW50ZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b25zdCBxcmVhbCB6b29tRmFjdG9yWCA9IChxcmVhbClwcmludGVyLT5sb2dpY2FsRHBpWCgpIC8g
cXRfZGVmYXVsdERwaSgpOworICAgIGNvbnN0IHFyZWFsIHpvb21GYWN0b3JZID0gKHFyZWFsKXBy
aW50ZXItPmxvZ2ljYWxEcGlZKCkgLyBxdF9kZWZhdWx0RHBpKCk7CisKKyAgICBRUmVjdCBxcHJp
bnRlclJlY3QgPSBwcmludGVyLT5wYWdlUmVjdCgpOworCisgICAgUVJlY3QgcGFnZVJlY3QoMCwg
MCwgaW50KHFwcmludGVyUmVjdC53aWR0aCgpIC8gem9vbUZhY3RvclgpLCBpbnQocXByaW50ZXJS
ZWN0LmhlaWdodCgpIC8gem9vbUZhY3RvclkpKTsKKworICAgIFF0UHJpbnRDb250ZXh0IHByaW50
Q29udGV4dCgmcGFpbnRlciwgcGFnZVJlY3QsIGQpOworCisgICAgaW50IGRvY0NvcGllczsKKyAg
ICBpbnQgcGFnZUNvcGllczsKKyAgICBpZiAocHJpbnRlci0+Y29sbGF0ZUNvcGllcygpKSB7Cisg
ICAgICAgIGRvY0NvcGllcyA9IDE7CisgICAgICAgIHBhZ2VDb3BpZXMgPSBwcmludGVyLT5udW1D
b3BpZXMoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkb2NDb3BpZXMgPSBwcmludGVyLT5udW1D
b3BpZXMoKTsKKyAgICAgICAgcGFnZUNvcGllcyA9IDE7CisgICAgfQorCisgICAgaW50IGZyb21Q
YWdlID0gcHJpbnRlci0+ZnJvbVBhZ2UoKTsKKyAgICBpbnQgdG9QYWdlID0gcHJpbnRlci0+dG9Q
YWdlKCk7CisgICAgYm9vbCBhc2NlbmRpbmcgPSB0cnVlOworCisgICAgaWYgKCFmcm9tUGFnZSAm
JiAhdG9QYWdlKSB7CisgICAgICAgIGZyb21QYWdlID0gMTsKKyAgICAgICAgdG9QYWdlID0gcHJp
bnRDb250ZXh0LnBhZ2VDb3VudCgpOworICAgIH0KKyAgICAvLyBwYXJhbm9pYSBjaGVjaworICAg
IGZyb21QYWdlID0gcU1heCgxLCBmcm9tUGFnZSk7CisgICAgdG9QYWdlID0gcU1pbihzdGF0aWNf
Y2FzdDxpbnQ+KHByaW50Q29udGV4dC5wYWdlQ291bnQoKSksIHRvUGFnZSk7CisgICAgaWYgKHRv
UGFnZSA8IGZyb21QYWdlKSB7CisgICAgICAgIC8vIGlmIHRoZSB1c2VyIGVudGVyZWQgYSBwYWdl
IHJhbmdlIG91dHNpZGUgdGhlIGFjdHVhbCBudW1iZXIKKyAgICAgICAgLy8gb2YgcHJpbnRhYmxl
IHBhZ2VzLCBqdXN0IHJldHVybgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHBy
aW50ZXItPnBhZ2VPcmRlcigpID09IFFQcmludGVyOjpMYXN0UGFnZUZpcnN0KSB7CisgICAgICAg
IGludCB0bXAgPSBmcm9tUGFnZTsKKyAgICAgICAgZnJvbVBhZ2UgPSB0b1BhZ2U7CisgICAgICAg
IHRvUGFnZSA9IHRtcDsKKyAgICAgICAgYXNjZW5kaW5nID0gZmFsc2U7CisgICAgfQorCisgICAg
cGFpbnRlci5zY2FsZSh6b29tRmFjdG9yWCwgem9vbUZhY3RvclkpOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBkb2NDb3BpZXM7ICsraSkgeworICAgICAgICBpbnQgcGFnZSA9IGZyb21QYWdl
OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBwYWdlQ29waWVzOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAocHJpbnRlci0+cHJpbnRl
clN0YXRlKCkgPT0gUVByaW50ZXI6OkFib3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgfHwgcHJp
bnRlci0+cHJpbnRlclN0YXRlKCkgPT0gUVByaW50ZXI6OkVycm9yKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJpbnRD
b250ZXh0LnNwb29sUGFnZShwYWdlIC0gMSwgcGFnZVJlY3Qud2lkdGgoKSk7CisgICAgICAgICAg
ICAgICAgaWYgKGogPCBwYWdlQ29waWVzIC0gMSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRl
ci0+bmV3UGFnZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocGFnZSA9PSB0
b1BhZ2UpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGlmIChhc2NlbmRp
bmcpCisgICAgICAgICAgICAgICAgKytwYWdlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIC0tcGFnZTsKKworICAgICAgICAgICAgcHJpbnRlci0+bmV3UGFnZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGkgPCBkb2NDb3BpZXMgLSAxKQorICAgICAgICAgICAgcHJpbnRl
ci0+bmV3UGFnZSgpOworICAgIH0KKyNlbmRpZiAvLyBIQVZFKFBSSU5UU1VQUE9SVCkKK30KKyNl
bmRpZiAvLyBRVF9OT19QUklOVEVSCisKKy8qIQorICAgIEV2YWx1YXRlcyB0aGUgSmF2YVNjcmlw
dCBkZWZpbmVkIGJ5IFxhIHNjcmlwdFNvdXJjZSB1c2luZyB0aGlzIGZyYW1lIGFzIGNvbnRleHQK
KyAgICBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGV4ZWN1dGVkIHN0YXRlbWVu
dC4KKworICAgIFxzYSBhZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QoKSwgamF2YVNjcmlwdFdp
bmRvd09iamVjdENsZWFyZWQoKQorKi8KK1FWYXJpYW50IFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZh
U2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdFNvdXJjZSkKK3sKKyAgICByZXR1cm4gZC0+ZXZh
bHVhdGVKYXZhU2NyaXB0KHNjcmlwdFNvdXJjZSk7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjUK
KworICAgIFJldHVybnMgdGhlIGZyYW1lJ3Mgc2VjdXJpdHkgb3JpZ2luLgorKi8KK1FXZWJTZWN1
cml0eU9yaWdpbiBRV2ViRnJhbWU6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+c2VjdXJpdHlPcmlnaW4oKTsKK30KKworUVdlYkZyYW1lICpRV2ViRnJhbWVQcml2YXRl
OjpraXQoY29uc3QgUVdlYkZyYW1lQWRhcHRlciogZnJhbWVBZGFwdGVyKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBRV2ViRnJhbWVQcml2YXRlKj4oZnJhbWVBZGFwdGVyKS0+cTsK
K30KKworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViRnJhbWU6OmphdmFTY3JpcHRXaW5kb3dPYmpl
Y3RDbGVhcmVkKCkKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbmV2ZXIgdGhlIGds
b2JhbCB3aW5kb3cgb2JqZWN0IG9mIHRoZSBKYXZhU2NyaXB0CisgICAgZW52aXJvbm1lbnQgaXMg
Y2xlYXJlZCwgZS5nLiwgYmVmb3JlIHN0YXJ0aW5nIGEgbmV3IGxvYWQuCisKKyAgICBJZiB5b3Ug
aW50ZW5kIHRvIGFkZCBRT2JqZWN0cyB0byBhIFFXZWJGcmFtZSB1c2luZworICAgIGFkZFRvSmF2
YVNjcmlwdFdpbmRvd09iamVjdCgpLCB5b3Ugc2hvdWxkIGFkZCB0aGVtIGluIGEgc2xvdCBjb25u
ZWN0ZWQKKyAgICB0byB0aGlzIHNpZ25hbC4gVGhpcyBlbnN1cmVzIHRoYXQgeW91ciBvYmplY3Rz
IHJlbWFpbiBhY2Nlc3NpYmxlIHdoZW4KKyAgICBsb2FkaW5nIG5ldyBVUkxzLgorKi8KKworLyoh
CisgICAgXGZuIHZvaWQgUVdlYkZyYW1lOjpwcm92aXNpb25hbExvYWQoKQorICAgIFxpbnRlcm5h
bAorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYkZyYW1lOjp0aXRsZUNoYW5nZWQoY29uc3Qg
UVN0cmluZyAmdGl0bGUpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRo
ZSB0aXRsZSBvZiB0aGUgZnJhbWUgY2hhbmdlcy4KKyAgICBUaGUgXGEgdGl0bGUgc3RyaW5nIHNw
ZWNpZmllcyB0aGUgbmV3IHRpdGxlLgorCisgICAgXHNhIHRpdGxlKCkKKyovCisKKy8qIQorICAg
IFxmbiB2b2lkIFFXZWJGcmFtZTo6dXJsQ2hhbmdlZChjb25zdCBRVXJsICZ1cmwpCisKKyAgICBU
aGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdpdGggdGhlIFVSTCBvZiB0aGUgZnJhbWUgd2hlbiB0aGUg
ZnJhbWUncyB0aXRsZSBpcworICAgIHJlY2VpdmVkLiBUaGUgbmV3IFVSTCBpcyBzcGVjaWZpZWQg
YnkgXGEgdXJsLgorCisgICAgXHNhIHVybCgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2Vi
RnJhbWU6OmluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1p
dHRlZCB3aGVuIHRoZSBmcmFtZSBpcyBsYWlkIG91dCB0aGUgZmlyc3QgdGltZS4KKyAgICBUaGlz
IGlzIHRoZSBmaXJzdCB0aW1lIHlvdSB3aWxsIHNlZSBjb250ZW50cyBkaXNwbGF5ZWQgb24gdGhl
IGZyYW1lLgorCisgICAgXG5vdGUgQSBmcmFtZSBjYW4gYmUgbGFpZCBvdXQgbXVsdGlwbGUgdGlt
ZXMuCisqLworCisvKiEKKyAgXGZuIHZvaWQgUVdlYkZyYW1lOjppY29uQ2hhbmdlZCgpCisKKyAg
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSBpY29uICgiZmF2aWNvbiIpIGFzc29jaWF0
ZWQgd2l0aCB0aGUgZnJhbWUKKyAgaGFzIGJlZW4gbG9hZGVkLgorCisgIFxzYSBpY29uKCkKKyov
CisKKy8qIQorICBcZm4gdm9pZCBRV2ViRnJhbWU6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3Qg
UVNpemUgJnNpemUpCisgIFxzaW5jZSA0LjYKKworICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gdGhlIGZyYW1lJ3MgY29udGVudHMgc2l6ZSBjaGFuZ2VzCisgIHRvIFxhIHNpemUuCisKKyAg
XHNhIGNvbnRlbnRzU2l6ZSgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViRnJhbWU6Omxv
YWRTdGFydGVkKCkKKyAgICBcc2luY2UgNC42CisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVk
IHdoZW4gYSBuZXcgbG9hZCBvZiB0aGlzIGZyYW1lIGlzIHN0YXJ0ZWQuCisKKyAgICBcc2EgbG9h
ZEZpbmlzaGVkKCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJGcmFtZTo6bG9hZEZpbmlz
aGVkKGJvb2wgb2spCisgICAgXHNpbmNlIDQuNgorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRl
ZCB3aGVuIGEgbG9hZCBvZiB0aGlzIGZyYW1lIGlzIGZpbmlzaGVkLgorICAgIFxhIG9rIHdpbGwg
aW5kaWNhdGUgd2hldGhlciB0aGUgbG9hZCB3YXMgc3VjY2Vzc2Z1bCBvciBhbnkgZXJyb3Igb2Nj
dXJyZWQuCisKKyAgICBcc2EgbG9hZFN0YXJ0ZWQoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQg
UVdlYkZyYW1lOjpwYWdlQ2hhbmdlZCgpCisgICAgXHNpbmNlIDQuNworCisgICAgVGhpcyBzaWdu
YWwgaXMgZW1pdHRlZCB3aGVuIHRoaXMgZnJhbWUgaGFzIGJlZW4gbW92ZWQgdG8gYSBkaWZmZXJl
bnQgUVdlYlBhZ2UuCisKKyAgICBcc2EgcGFnZSgpCisqLworCisvKiEKKyAgICBcY2xhc3MgUVdl
YkhpdFRlc3RSZXN1bHQKKyAgICBcc2luY2UgNC40CisgICAgXGJyaWVmIFRoZSBRV2ViSGl0VGVz
dFJlc3VsdCBjbGFzcyBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2ViCisgICAgcGFn
ZSBjb250ZW50IGFmdGVyIGEgaGl0IHRlc3QuCisKKyAgICBcaW5tb2R1bGUgUXRXZWJLaXQKKwor
ICAgIFFXZWJIaXRUZXN0UmVzdWx0IGlzIHJldHVybmVkIGJ5IFFXZWJGcmFtZTo6aGl0VGVzdENv
bnRlbnQoKSB0byBwcm92aWRlCisgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRlbnQgb2Yg
dGhlIHdlYiBwYWdlIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCisqLworCisvKiEKKyAgICBc
aW50ZXJuYWwKKyovCitRV2ViSGl0VGVzdFJlc3VsdDo6UVdlYkhpdFRlc3RSZXN1bHQoUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlICpwcml2KQorICAgIDogZChwcml2KQoreworfQorCisvKiEKKyAg
ICBDb25zdHJ1Y3RzIGEgbnVsbCBoaXQgdGVzdCByZXN1bHQuCisqLworUVdlYkhpdFRlc3RSZXN1
bHQ6OlFXZWJIaXRUZXN0UmVzdWx0KCkKKyAgICA6IGQoMCkKK3sKK30KKworLyohCisgICAgQ29u
c3RydWN0cyBhIGhpdCB0ZXN0IHJlc3VsdCBmcm9tIFxhIG90aGVyLgorKi8KK1FXZWJIaXRUZXN0
UmVzdWx0OjpRV2ViSGl0VGVzdFJlc3VsdChjb25zdCBRV2ViSGl0VGVzdFJlc3VsdCAmb3RoZXIp
CisgICAgOiBkKDApCit7CisgICAgaWYgKG90aGVyLmQpCisgICAgICAgIGQgPSBuZXcgUVdlYkhp
dFRlc3RSZXN1bHRQcml2YXRlKCpvdGhlci5kKTsKK30KKworLyohCisgICAgQXNzaWducyB0aGUg
XGEgb3RoZXIgaGl0IHRlc3QgcmVzdWx0IHRvIHRoaXMuCisqLworUVdlYkhpdFRlc3RSZXN1bHQg
JlFXZWJIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgUVdlYkhpdFRlc3RSZXN1bHQgJm90
aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICBpZiAob3RoZXIuZCkg
eworICAgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgICAgIGQgPSBuZXcgUVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlOworICAgICAgICAgICAgKmQgPSAqb3RoZXIuZDsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGRlbGV0ZSBkOworICAgICAgICAgICAgZCA9IDA7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCisvKiEKKyAgICBEZXN0cnVjdG9yLgor
Ki8KK1FXZWJIaXRUZXN0UmVzdWx0Ojp+UVdlYkhpdFRlc3RSZXN1bHQoKQoreworICAgIGRlbGV0
ZSBkOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGhpdCB0ZXN0IHJlc3VsdCBp
cyBudWxsOyBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KKyovCitib29sIFFXZWJIaXRUZXN0UmVz
dWx0Ojppc051bGwoKSBjb25zdAoreworICAgIHJldHVybiAhZDsKK30KKworLyohCisgICAgUmV0
dXJucyB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGhpdCB0ZXN0IG9jY3VyZWQgaW4gdGhlIGNvb3Jk
aW5hdGVzIG9mIGZyYW1lIGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQgaGl0LgorCisgICAgXHNhIGZy
YW1lKCkKKyovCitRUG9pbnQgUVdlYkhpdFRlc3RSZXN1bHQ6OnBvcygpIGNvbnN0Cit7CisgICAg
aWYgKCFkKQorICAgICAgICByZXR1cm4gUVBvaW50KCk7CisgICAgcmV0dXJuIGQtPnBvczsKK30K
KworLyohCisgICAgXHNpbmNlIDQuNQorICAgIFJldHVybnMgdGhlIGJvdW5kaW5nIHJlY3Qgb2Yg
dGhlIGVsZW1lbnQuCisqLworUVJlY3QgUVdlYkhpdFRlc3RSZXN1bHQ6OmJvdW5kaW5nUmVjdCgp
IGNvbnN0Cit7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gUVJlY3QoKTsKKyAgICByZXR1
cm4gZC0+Ym91bmRpbmdSZWN0OworfQorCisvKiEKKyAgICBcc2luY2UgNC42CisgICAgUmV0dXJu
cyB0aGUgYmxvY2sgZWxlbWVudCB0aGF0IGVuY2xvc2VzIHRoZSBlbGVtZW50IGhpdC4KKworICAg
IEEgYmxvY2sgZWxlbWVudCBpcyBhbiBlbGVtZW50IHRoYXQgaXMgcmVuZGVyZWQgdXNpbmcgdGhl
CisgICAgQ1NTICJibG9jayIgc3R5bGUuIFRoaXMgaW5jbHVkZXMgZm9yIGV4YW1wbGUgdGV4dAor
ICAgIHBhcmFncmFwaHMuCisqLworUVdlYkVsZW1lbnQgUVdlYkhpdFRlc3RSZXN1bHQ6OmVuY2xv
c2luZ0Jsb2NrRWxlbWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4g
UVdlYkVsZW1lbnQoKTsKKyAgICByZXR1cm4gZC0+ZW5jbG9zaW5nQmxvY2s7Cit9CisKKy8qIQor
ICAgIFJldHVybnMgdGhlIHRpdGxlIG9mIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBIVE1MIGVsZW1l
bnQuCisqLworUVN0cmluZyBRV2ViSGl0VGVzdFJlc3VsdDo6dGl0bGUoKSBjb25zdAoreworICAg
IGlmICghZCkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gZC0+dGl0bGU7
Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIHRleHQgb2YgdGhlIGxpbmsuCisqLworUVN0cmlu
ZyBRV2ViSGl0VGVzdFJlc3VsdDo6bGlua1RleHQoKSBjb25zdAoreworICAgIGlmICghZCkKKyAg
ICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gZC0+bGlua1RleHQ7Cit9CisKKy8q
IQorICAgIFJldHVybnMgdGhlIHVybCB0byB3aGljaCB0aGUgbGluayBwb2ludHMgdG8uCisqLwor
UVVybCBRV2ViSGl0VGVzdFJlc3VsdDo6bGlua1VybCgpIGNvbnN0Cit7CisgICAgaWYgKCFkKQor
ICAgICAgICByZXR1cm4gUVVybCgpOworICAgIHJldHVybiBkLT5saW5rVXJsOworfQorCisvKiEK
KyAgICBSZXR1cm5zIHRoZSB0aXRsZSBvZiB0aGUgbGluay4KKyovCitRVXJsIFFXZWJIaXRUZXN0
UmVzdWx0OjpsaW5rVGl0bGUoKSBjb25zdAoreworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJu
IFFVcmwoKTsKKyAgICByZXR1cm4gZC0+bGlua1RpdGxlOworfQorCisvKiEKKyAgXHNpbmNlIDQu
NgorICBSZXR1cm5zIHRoZSBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgbGluay4KKworICBc
c2EgbGlua1RhcmdldEZyYW1lKCkKKyovCitRV2ViRWxlbWVudCBRV2ViSGl0VGVzdFJlc3VsdDo6
bGlua0VsZW1lbnQoKSBjb25zdAoreworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIFFXZWJF
bGVtZW50KCk7CisgICAgcmV0dXJuIGQtPmxpbmtFbGVtZW50OworfQorCisvKiEKKyAgICBSZXR1
cm5zIHRoZSBmcmFtZSB0aGF0IHdpbGwgbG9hZCB0aGUgbGluayBpZiBpdCBpcyBhY3RpdmF0ZWQu
CisKKyAgICBcc2EgbGlua0VsZW1lbnQoKQorKi8KK1FXZWJGcmFtZSAqUVdlYkhpdFRlc3RSZXN1
bHQ6OmxpbmtUYXJnZXRGcmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJGcmFtZSo+KGQtPmxpbmtUYXJnZXRG
cmFtZS5kYXRhKCkpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBhbHRlcm5hdGUgdGV4dCBv
ZiB0aGUgZWxlbWVudC4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgSFRNTCBhbHQgYXR0cmlidXRl
LgorKi8KK1FTdHJpbmcgUVdlYkhpdFRlc3RSZXN1bHQ6OmFsdGVybmF0ZVRleHQoKSBjb25zdAor
eworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gZC0+
YWx0ZXJuYXRlVGV4dDsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgdXJsIG9mIHRoZSBpbWFn
ZS4KKyovCitRVXJsIFFXZWJIaXRUZXN0UmVzdWx0OjppbWFnZVVybCgpIGNvbnN0Cit7CisgICAg
aWYgKCFkKQorICAgICAgICByZXR1cm4gUVVybCgpOworICAgIHJldHVybiBkLT5pbWFnZVVybDsK
K30KKworLyohCisgICAgUmV0dXJucyBhIFFQaXhtYXAgY29udGFpbmluZyB0aGUgaW1hZ2UuIEEg
bnVsbCBwaXhtYXAgaXMgcmV0dXJuZWQgaWYgdGhlCisgICAgZWxlbWVudCBiZWluZyB0ZXN0ZWQg
aXMgbm90IGFuIGltYWdlLgorKi8KK1FQaXhtYXAgUVdlYkhpdFRlc3RSZXN1bHQ6OnBpeG1hcCgp
IGNvbnN0Cit7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gUVBpeG1hcCgpOworICAgIHJl
dHVybiBkLT5waXhtYXA7Cit9CisKKy8qIQorICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29udGVu
dCBpcyBlZGl0YWJsZSBieSB0aGUgdXNlcjsgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisqLwor
Ym9vbCBRV2ViSGl0VGVzdFJlc3VsdDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAoreworICAg
IGlmICghZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkLT5pc0NvbnRlbnRF
ZGl0YWJsZTsKK30KKworLyohCisgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBjb250ZW50IHRlc3Rl
ZCBpcyBwYXJ0IG9mIHRoZSBzZWxlY3Rpb247IG90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorKi8K
K2Jvb2wgUVdlYkhpdFRlc3RSZXN1bHQ6OmlzQ29udGVudFNlbGVjdGVkKCkgY29uc3QKK3sKKyAg
ICBpZiAoIWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZC0+aXNDb250ZW50
U2VsZWN0ZWQ7Cit9CisKKy8qIQorICAgIFxzaW5jZSA0LjYKKyAgICBSZXR1cm5zIHRoZSB1bmRl
cmx5aW5nIERPTSBlbGVtZW50IGFzIFFXZWJFbGVtZW50LgorKi8KK1FXZWJFbGVtZW50IFFXZWJI
aXRUZXN0UmVzdWx0OjplbGVtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWQpCisgICAgICAgIHJl
dHVybiBRV2ViRWxlbWVudCgpOworCisgICAgcmV0dXJuIGQtPmVsZW1lbnRGb3JJbm5lck5vZGUo
KTsKK30KKworLyohCisgICAgUmV0dXJucyB0aGUgZnJhbWUgb2YgdGhlIGVsZW1lbnQgaGl0Lgor
Ki8KK1FXZWJGcmFtZSAqUVdlYkhpdFRlc3RSZXN1bHQ6OmZyYW1lKCkgY29uc3QKK3sKKyAgICBp
ZiAoIWQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYkZy
YW1lKj4oZC0+ZnJhbWUuZGF0YSgpKTsKK30KKworLyohCisgKiBcaW50ZXJuYWwKKyAqLworUVdl
YkZyYW1lQWRhcHRlciAqUVdlYkZyYW1lOjpoYW5kbGUoKSBjb25zdAoreworICAgIHJldHVybiBk
OworfQorCisjaW5jbHVkZSAibW9jX3F3ZWJmcmFtZS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xd2ViZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0
QXBpL3F3ZWJmcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MWQw
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2ViZnJh
bWUuaApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYg
UVdFQkZSQU1FX0gKKyNkZWZpbmUgUVdFQkZSQU1FX0gKKworI2luY2x1ZGUgPFF0Q29yZS9xb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8UXRDb3JlL3F1cmwuaD4KKyNpbmNsdWRlIDxRdENvcmUvcXZhcmlh
bnQuaD4KKyNpbmNsdWRlIDxRdEd1aS9xaWNvbi5oPgorI2luY2x1ZGUgPFF0TmV0d29yay9xbmV0
d29ya2FjY2Vzc21hbmFnZXIuaD4KKyNpbmNsdWRlIDxRdFdlYktpdC9xd2Via2l0Z2xvYmFsLmg+
CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVJlY3Q7CitjbGFzcyBRUG9pbnQ7CitjbGFz
cyBRUGFpbnRlcjsKK2NsYXNzIFFQaXhtYXA7CitjbGFzcyBRTW91c2VFdmVudDsKK2NsYXNzIFFX
aGVlbEV2ZW50OworY2xhc3MgUU5ldHdvcmtSZXF1ZXN0OworY2xhc3MgUVJlZ2lvbjsKK2NsYXNz
IFFQcmludGVyOworUVRfRU5EX05BTUVTUEFDRQorCitjbGFzcyBRV2ViTmV0d29ya1JlcXVlc3Q7
CitjbGFzcyBRV2ViRnJhbWVBZGFwdGVyOworY2xhc3MgUVdlYkZyYW1lUHJpdmF0ZTsKK2NsYXNz
IFFXZWJQYWdlOworY2xhc3MgUVdlYlBhZ2VBZGFwdGVyOworY2xhc3MgUVdlYkhpdFRlc3RSZXN1
bHQ7CitjbGFzcyBRV2ViSGlzdG9yeUl0ZW07CitjbGFzcyBRV2ViU2VjdXJpdHlPcmlnaW47Citj
bGFzcyBRV2ViRWxlbWVudDsKK2NsYXNzIFFXZWJFbGVtZW50Q29sbGVjdGlvbjsKK2NsYXNzIFFX
ZWJTY3JpcHRXb3JsZDsKKworY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7CituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgY2xhc3MgV2lkZ2V0UHJpdmF0ZTsKKyAgICBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudFF0OworICAgIGNsYXNzIENocm9tZUNsaWVudFF0OworICAgIGNsYXNzIFRleHR1
cmVNYXBwZXJMYXllckNsaWVudFF0OworfQorY2xhc3MgUVdlYkZyYW1lRGF0YTsKK2NsYXNzIFFX
ZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTsKK2NsYXNzIFFXZWJGcmFtZTsKKworY2xhc3MgUVdFQktJ
VFdJREdFVFNfRVhQT1JUIFFXZWJIaXRUZXN0UmVzdWx0IHsKK3B1YmxpYzoKKyAgICBRV2ViSGl0
VGVzdFJlc3VsdCgpOworICAgIFFXZWJIaXRUZXN0UmVzdWx0KGNvbnN0IFFXZWJIaXRUZXN0UmVz
dWx0ICZvdGhlcik7CisgICAgUVdlYkhpdFRlc3RSZXN1bHQgJm9wZXJhdG9yPShjb25zdCBRV2Vi
SGl0VGVzdFJlc3VsdCAmb3RoZXIpOworICAgIH5RV2ViSGl0VGVzdFJlc3VsdCgpOworCisgICAg
Ym9vbCBpc051bGwoKSBjb25zdDsKKworICAgIFFQb2ludCBwb3MoKSBjb25zdDsKKyAgICBRUmVj
dCBib3VuZGluZ1JlY3QoKSBjb25zdDsKKyAgICBRV2ViRWxlbWVudCBlbmNsb3NpbmdCbG9ja0Vs
ZW1lbnQoKSBjb25zdDsKKyAgICBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7CisKKyAgICBRU3RyaW5n
IGxpbmtUZXh0KCkgY29uc3Q7CisgICAgUVVybCBsaW5rVXJsKCkgY29uc3Q7CisgICAgUVVybCBs
aW5rVGl0bGUoKSBjb25zdDsKKyAgICBRV2ViRnJhbWUgKmxpbmtUYXJnZXRGcmFtZSgpIGNvbnN0
OworICAgIFFXZWJFbGVtZW50IGxpbmtFbGVtZW50KCkgY29uc3Q7CisKKyAgICBRU3RyaW5nIGFs
dGVybmF0ZVRleHQoKSBjb25zdDsgLy8gZm9yIGltZywgYXJlYSwgaW5wdXQgYW5kIGFwcGxldAor
CisgICAgUVVybCBpbWFnZVVybCgpIGNvbnN0OworICAgIFFQaXhtYXAgcGl4bWFwKCkgY29uc3Q7
CisKKyAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7CisgICAgYm9vbCBpc0NvbnRl
bnRTZWxlY3RlZCgpIGNvbnN0OworCisgICAgUVdlYkVsZW1lbnQgZWxlbWVudCgpIGNvbnN0Owor
CisgICAgUVdlYkZyYW1lICpmcmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFFXZWJIaXRU
ZXN0UmVzdWx0KFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSAqcHJpdik7CisgICAgUVdlYkhpdFRl
c3RSZXN1bHRQcml2YXRlICpkOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZTsKKyAgICBm
cmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsK
K307CisKK2NsYXNzIFFXRUJLSVRXSURHRVRTX0VYUE9SVCBRV2ViRnJhbWUgOiBwdWJsaWMgUU9i
amVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKHFyZWFsIHRleHRTaXplTXVsdGlw
bGllciBSRUFEIHRleHRTaXplTXVsdGlwbGllciBXUklURSBzZXRUZXh0U2l6ZU11bHRpcGxpZXIg
REVTSUdOQUJMRSBmYWxzZSkKKyAgICBRX1BST1BFUlRZKHFyZWFsIHpvb21GYWN0b3IgUkVBRCB6
b29tRmFjdG9yIFdSSVRFIHNldFpvb21GYWN0b3IpCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHRp
dGxlIFJFQUQgdGl0bGUpCisgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVybCBXUklURSBz
ZXRVcmwpCisgICAgUV9QUk9QRVJUWShRVXJsIHJlcXVlc3RlZFVybCBSRUFEIHJlcXVlc3RlZFVy
bCkKKyAgICBRX1BST1BFUlRZKFFVcmwgYmFzZVVybCBSRUFEIGJhc2VVcmwpCisgICAgUV9QUk9Q
RVJUWShRSWNvbiBpY29uIFJFQUQgaWNvbikKKyAgICBRX1BST1BFUlRZKFFTaXplIGNvbnRlbnRz
U2l6ZSBSRUFEIGNvbnRlbnRzU2l6ZSkKKyAgICBRX1BST1BFUlRZKFFQb2ludCBzY3JvbGxQb3Np
dGlvbiBSRUFEIHNjcm9sbFBvc2l0aW9uIFdSSVRFIHNldFNjcm9sbFBvc2l0aW9uKQorICAgIFFf
UFJPUEVSVFkoYm9vbCBmb2N1cyBSRUFEIGhhc0ZvY3VzKQorcHJpdmF0ZToKKyAgICBRV2ViRnJh
bWUoUVdlYlBhZ2UgKnBhcmVudFBhZ2UpOworICAgIFFXZWJGcmFtZShRV2ViRnJhbWUqIHBhcmVu
dCwgUVdlYkZyYW1lRGF0YSopOworICAgIH5RV2ViRnJhbWUoKTsKKworcHVibGljOgorICAgIGVu
dW0gVmFsdWVPd25lcnNoaXAgeworICAgICAgICBRdE93bmVyc2hpcCwKKyAgICAgICAgU2NyaXB0
T3duZXJzaGlwLAorICAgICAgICBBdXRvT3duZXJzaGlwCisgICAgfTsKKworICAgIFFXZWJQYWdl
ICpwYWdlKCkgY29uc3Q7CisKKyAgICB2b2lkIGxvYWQoY29uc3QgUVVybCAmdXJsKTsKKyAgICB2
b2lkIGxvYWQoY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRTmV0d29ya0FjY2Vzc01h
bmFnZXI6Ok9wZXJhdGlvbiBvcGVyYXRpb24gPSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkdldE9w
ZXJhdGlvbiwgY29uc3QgUUJ5dGVBcnJheSAmYm9keSA9IFFCeXRlQXJyYXkoKSk7CisgICAgdm9p
ZCBzZXRIdG1sKGNvbnN0IFFTdHJpbmcgJmh0bWwsIGNvbnN0IFFVcmwgJmJhc2VVcmwgPSBRVXJs
KCkpOworICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBRQnl0ZUFycmF5ICZkYXRhLCBjb25zdCBR
U3RyaW5nICZtaW1lVHlwZSA9IFFTdHJpbmcoKSwgY29uc3QgUVVybCAmYmFzZVVybCA9IFFVcmwo
KSk7CisKKyAgICB2b2lkIGFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdChjb25zdCBRU3RyaW5n
ICZuYW1lLCBRT2JqZWN0ICpvYmplY3QsIFZhbHVlT3duZXJzaGlwIG93bmVyc2hpcCA9IFF0T3du
ZXJzaGlwKTsKKyAgICBRU3RyaW5nIHRvSHRtbCgpIGNvbnN0OworICAgIFFTdHJpbmcgdG9QbGFp
blRleHQoKSBjb25zdDsKKworICAgIFFTdHJpbmcgdGl0bGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFVybChjb25zdCBRVXJsICZ1cmwpOworICAgIFFVcmwgdXJsKCkgY29uc3Q7CisgICAgUVVybCBy
ZXF1ZXN0ZWRVcmwoKSBjb25zdDsKKyAgICBRVXJsIGJhc2VVcmwoKSBjb25zdDsKKyAgICBRSWNv
biBpY29uKCkgY29uc3Q7CisgICAgUU11bHRpTWFwPFFTdHJpbmcsIFFTdHJpbmc+IG1ldGFEYXRh
KCkgY29uc3Q7CisKKyAgICBRU3RyaW5nIGZyYW1lTmFtZSgpIGNvbnN0OworCisgICAgUVdlYkZy
YW1lICpwYXJlbnRGcmFtZSgpIGNvbnN0OworICAgIFFMaXN0PFFXZWJGcmFtZSo+IGNoaWxkRnJh
bWVzKCkgY29uc3Q7CisKKyAgICBRdDo6U2Nyb2xsQmFyUG9saWN5IHNjcm9sbEJhclBvbGljeShR
dDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0OworICAgIHZvaWQgc2V0U2Nyb2xsQmFy
UG9saWN5KFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgUXQ6OlNjcm9sbEJhclBvbGljeSBw
b2xpY3kpOworCisgICAgdm9pZCBzZXRTY3JvbGxCYXJWYWx1ZShRdDo6T3JpZW50YXRpb24gb3Jp
ZW50YXRpb24sIGludCB2YWx1ZSk7CisgICAgaW50IHNjcm9sbEJhclZhbHVlKFF0OjpPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgY29uc3Q7CisgICAgaW50IHNjcm9sbEJhck1pbmltdW0oUXQ6Ok9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSBjb25zdDsKKyAgICBpbnQgc2Nyb2xsQmFyTWF4aW11bShR
dDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0OworICAgIFFSZWN0IHNjcm9sbEJhckdl
b21ldHJ5KFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29uc3Q7CisKKyAgICB2b2lkIHNj
cm9sbChpbnQsIGludCk7CisgICAgUVBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBRUG9pbnQgJnBvcyk7CisKKyAgICB2b2lkIHNj
cm9sbFRvQW5jaG9yKGNvbnN0IFFTdHJpbmcmIGFuY2hvcik7CisKKyAgICBlbnVtIFJlbmRlckxh
eWVyIHsKKyAgICAgICAgQ29udGVudHNMYXllciA9IDB4MTAsCisgICAgICAgIFNjcm9sbEJhckxh
eWVyID0gMHgyMCwKKyAgICAgICAgUGFuSWNvbkxheWVyID0gMHg0MCwKKworICAgICAgICBBbGxM
YXllcnMgPSAweGZmCisgICAgfTsKKyAgICBRX0RFQ0xBUkVfRkxBR1MoUmVuZGVyTGF5ZXJzLCBS
ZW5kZXJMYXllcikKKworICAgIHZvaWQgcmVuZGVyKFFQYWludGVyKiwgY29uc3QgUVJlZ2lvbiYg
Y2xpcCA9IFFSZWdpb24oKSk7CisgICAgdm9pZCByZW5kZXIoUVBhaW50ZXIqLCBSZW5kZXJMYXll
cnMgbGF5ZXIsIGNvbnN0IFFSZWdpb24mIGNsaXAgPSBRUmVnaW9uKCkpOworCisgICAgdm9pZCBz
ZXRUZXh0U2l6ZU11bHRpcGxpZXIocXJlYWwgZmFjdG9yKTsKKyAgICBxcmVhbCB0ZXh0U2l6ZU11
bHRpcGxpZXIoKSBjb25zdDsKKworICAgIHFyZWFsIHpvb21GYWN0b3IoKSBjb25zdDsKKyAgICB2
b2lkIHNldFpvb21GYWN0b3IocXJlYWwgZmFjdG9yKTsKKworICAgIGJvb2wgaGFzRm9jdXMoKSBj
b25zdDsKKyAgICB2b2lkIHNldEZvY3VzKCk7CisKKyAgICBRUG9pbnQgcG9zKCkgY29uc3Q7Cisg
ICAgUVJlY3QgZ2VvbWV0cnkoKSBjb25zdDsKKyAgICBRU2l6ZSBjb250ZW50c1NpemUoKSBjb25z
dDsKKworICAgIFFXZWJFbGVtZW50IGRvY3VtZW50RWxlbWVudCgpIGNvbnN0OworICAgIFFXZWJF
bGVtZW50Q29sbGVjdGlvbiBmaW5kQWxsRWxlbWVudHMoY29uc3QgUVN0cmluZyAmc2VsZWN0b3JR
dWVyeSkgY29uc3Q7CisgICAgUVdlYkVsZW1lbnQgZmluZEZpcnN0RWxlbWVudChjb25zdCBRU3Ry
aW5nICZzZWxlY3RvclF1ZXJ5KSBjb25zdDsKKworICAgIFFXZWJIaXRUZXN0UmVzdWx0IGhpdFRl
c3RDb250ZW50KGNvbnN0IFFQb2ludCAmcG9zKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBl
dmVudChRRXZlbnQgKik7CisKKyAgICBRV2ViU2VjdXJpdHlPcmlnaW4gc2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKKyAgICBRV2ViRnJhbWVBZGFwdGVyKiBoYW5kbGUoKSBjb25zdDsKKworcHVibGlj
IFFfU0xPVFM6CisgICAgUVZhcmlhbnQgZXZhbHVhdGVKYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcm
IHNjcmlwdFNvdXJjZSk7CisjaWZuZGVmIFFUX05PX1BSSU5URVIKKyAgICB2b2lkIHByaW50KFFQ
cmludGVyICpwcmludGVyKSBjb25zdDsKKyNlbmRpZgorCitRX1NJR05BTFM6CisgICAgdm9pZCBq
YXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpOworCisgICAgdm9pZCBwcm92aXNpb25hbExv
YWQoKTsKKyAgICB2b2lkIHRpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5nICZ0aXRsZSk7CisgICAg
dm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwgJnVybCk7CisKKyAgICB2b2lkIGluaXRpYWxMYXlv
dXRDb21wbGV0ZWQoKTsKKworICAgIHZvaWQgaWNvbkNoYW5nZWQoKTsKKworICAgIHZvaWQgY29u
dGVudHNTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSAmc2l6ZSk7CisKKyAgICB2b2lkIGxvYWRTdGFy
dGVkKCk7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoYm9vbCBvayk7CisKKyAgICB2b2lkIHBhZ2VD
aGFuZ2VkKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFFHcmFwaGljc1dlYlZpZXc7
CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZVBy
aXZhdGU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZVByaXZhdGU7CisgICAgZnJpZW5kIGNs
YXNzIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpX
aWRnZXRQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDsKKyAgICBmcmll
bmQgY2xhc3MgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQ7CisgICAgUVdlYkZy
YW1lUHJpdmF0ZSAqZDsKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX29yaWVudGF0aW9u
Q2hhbmdlZCgpKQorfTsKKworUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoUVdlYkZyYW1l
OjpSZW5kZXJMYXllcnMpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
aWRnZXRBcGkvcXdlYmZyYW1lX3AuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJm
cmFtZV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmExYzIwMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJmcmFtZV9wLmgK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3
IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIHF3ZWJmcmFtZV9w
X2gKKyNkZWZpbmUgcXdlYmZyYW1lX3BfaAorCisjaW5jbHVkZSAiUVdlYkZyYW1lQWRhcHRlci5o
IgorCisjaW5jbHVkZSAicXdlYmZyYW1lLmgiCisjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgorCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CitjbGFzcyBG
cmFtZVZpZXc7CitjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CitjbGFzcyBTY3JvbGxiYXI7
CitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7Cit9CitjbGFzcyBRV2ViUGFnZTsKKworY2xhc3Mg
UVdlYkZyYW1lUHJpdmF0ZSA6IHB1YmxpYyBRV2ViRnJhbWVBZGFwdGVyIHsKK3B1YmxpYzoKKyAg
ICBRV2ViRnJhbWVQcml2YXRlKCkKKyAgICAgICAgOiBxKDApCisgICAgICAgICwgcGFnZSgwKQor
ICAgIHsgfQorICAgIHZvaWQgc2V0UGFnZShRV2ViUGFnZSopOworCisgICAgaW5saW5lIFFXZWJG
cmFtZSAqcGFyZW50RnJhbWUoKSB7IHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4ocS0+
cGFyZW50KCkpOyB9CisKKyAgICBzdGF0aWMgUVdlYkZyYW1lKiBraXQoY29uc3QgUVdlYkZyYW1l
QWRhcHRlciopOworCisgICAgLy8gQWRhcHRlciBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwg
UVdlYkZyYW1lKiBhcGlIYW5kbGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFFPYmplY3QqIGhh
bmRsZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVEaWRDaGFuZ2Uo
Y29uc3QgUVNpemUgJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsQmFyUG9saWN5
KFF0OjpPcmllbnRhdGlvbikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVtaXRV
cmxDaGFuZ2VkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhbmRsZVByb2dyZXNzRmluaXNoZWQoUVBv
aW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVtaXRJbml0aWFsTGF5b3V0Q29tcGxl
dGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVtaXRJY29uQ2hhbmdlZCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBlbWl0TG9hZFN0YXJ0ZWQoYm9vbCBvcmlnaW5hdGluZ0xv
YWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbWl0TG9hZEZpbmlzaGVkKGJvb2wgb3Jp
Z2luYXRpbmdMb2FkLCBib29sIG9rKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFFXZWJGcmFtZUFk
YXB0ZXIqIGNyZWF0ZUNoaWxkRnJhbWUoUVdlYkZyYW1lRGF0YSopIE9WRVJSSURFOworCisgICAg
UVdlYkZyYW1lICpxOworICAgIFFXZWJQYWdlICpwYWdlOworCit9OworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYmluc3BlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWUzZjgyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjA2IEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmlu
c3BlY3Rvci5oIgorCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKyNpbmNsdWRlICJxd2ViaW5z
cGVjdG9yX3AuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisKKyNpbmNsdWRlIDxRUmVzaXpl
RXZlbnQ+CisKKy8qIQorICAgIFxjbGFzcyBRV2ViSW5zcGVjdG9yCisgICAgXHNpbmNlIDQuNgor
ICAgIFxpbm1vZHVsZSBRdFdlYktpdAorICAgIFxicmllZiBUaGUgUVdlYkluc3BlY3RvciBjbGFz
cyBhbGxvd3MgdGhlIHBsYWNlbWVudCBhbmQgY29udHJvbCBvZiBhCisgICAgUVdlYlBhZ2UncyBp
bnNwZWN0b3IuCisgICAgVGhlIGluc3BlY3RvciBjYW4gZGlzcGxheSBhIHBhZ2UncyBoaWVyYXJj
aHksIGl0cyBsb2FkaW5nIHN0YXRpc3RpY3MgYW5kCisgICAgdGhlIGN1cnJlbnQgc3RhdGUgb2Yg
aXRzIGluZGl2aWR1YWwgZWxlbWVudHMuIEl0IGlzIG1vc3RseSB1c2VkIGJ5IHdlYgorICAgIGRl
dmVsb3BlcnMuCisKKyAgICBUaGUgUVdlYlBhZ2UgdG8gYmUgaW5zcGVjdGVkIG11c3QgYmUgc3Bl
Y2lmaWVkIHVzaW5nIHRoZSBzZXRQYWdlKCkgbWV0aG9kLgorCisgICAgQSB0eXBpY2FsIHVzZSBv
ZiBRV2ViSW5zcGVjdG9yIGZvbGxvd3M6CisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9x
dHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3BwIDAKKworICAgIEEgUVdlYkluc3BlY3Rv
ciBjYW4gYmUgbWFkZSB2aXNpYmxlIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IHVzaW5nCisgICAg
c2V0VmlzaWJsZSgpLCBvciBieSB0aGUgdXNlciB0aHJvdWdoIHRoZSBhdHRhY2hlZCBRV2ViUGFn
ZSdzIGNvbnRleHQKKyAgICBtZW51LgorCisgICAgXG5vdGUgQSBRV2ViSW5zcGVjdG9yIHdpbGwg
ZGlzcGxheSBhIGJsYW5rIHdpZGdldCBpZiBlaXRoZXI6CisgICAgXGxpc3QKKyAgICAgICAgXGxp
IHBhZ2UoKSBpcyBudWxsCisgICAgICAgIFxsaSBRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJh
c0VuYWJsZWQgaXMgZmFsc2UKKyAgICBcZW5kbGlzdAorCisgICAgXHNlY3Rpb24xIFJlc291cmNl
cworCisgICAgVGhpcyBjbGFzcyBhY3RzIG1vc3RseSBhcyBhIGNvbnRhaW5lciBhbmQgYSBjb250
cm9sbGVyIGZvciB0aGUgaW5zcGVjdG9yLgorICAgIE1vc3Qgb2YgdGhlIHJlc291cmNlcyBuZWVk
ZWQgYnkgdGhlIGluc3BlY3RvciBhcmUgb3duZWQgYnkgdGhlIGFzc29jaWF0ZWQKKyAgICBRV2Vi
UGFnZSBhbmQgYXJlIGFsbG9jYXRlZCB0aGUgZmlyc3QgdGltZSB0aGF0OgorICAgIFxsaXN0Cisg
ICAgICAgIFxsaSBhbiBlbGVtZW50IGlzIGluc3BlY3RlZAorICAgICAgICBcbGkgdGhlIFFXZWJJ
bnNwZWN0b3IgaXMgc2hvd24uCisgICAgXGVuZGxpc3QKKworICAgIFxzZWN0aW9uMSBJbnNwZWN0
b3IgY29uZmlndXJhdGlvbiBwZXJzaXN0ZW5jZQorCisgICAgVGhlIGluc3BlY3RvciBhbGxvd3Mg
dGhlIHVzZXIgdG8gY29uZmlndXJlIHNvbWUgb3B0aW9ucyB0aHJvdWdoIGl0cworICAgIHVzZXIg
aW50ZXJmYWNlIChlLmcuIHRoZSByZXNvdXJjZSB0cmFja2luZyAiQWx3YXlzIGVuYWJsZSIgb3B0
aW9uKS4KKyAgICBUaGUgaW5zcGVjdG9yIFVJIGlzIGl0c2VsZiBhIHdlYiBwYWdlIGFuZCBpcyB1
c2luZyBIVE1MIGxvY2FsIHN0b3JhZ2UKKyAgICB0byBwZXJzaXN0IHRob3NlIHNldHRpbmdzLgor
ICAgIFNpbmNlIHRoZSBpbnRlcm5hbCBRV2ViUGFnZSB1c2VkIGJ5IHRoZSBpbnNwZWN0b3IgaXNu
J3QgZXhwb3NlZCBpbiB0aGUgQVBJLAorICAgIHRoZSBvbmx5IHdheSB0byBlbmFibGUgdGhvc2Ug
c2V0dGluZ3MgdG8gYmUgcGVyc2lzdGVkIGlzIGN1cnJlbnRseSB0byBlbmFibGUKKyAgICBsb2Nh
bCBzdG9yYWdlIGdsb2JhbGx5IHRocm91Z2ggUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygp
LgorCisgICAgXHNhIFFXZWJTZXR0aW5nczo6bG9jYWxTdG9yYWdlUGF0aCgpLCBRV2ViU2V0dGlu
Z3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQKKyovCisKKy8qIQorICAgIENvbnN0cnVjdHMgYW4gdW5i
b3VuZCBRV2ViSW5zcGVjdG9yIHdpdGggXGEgcGFyZW50IGFzIGl0cyBwYXJlbnQuCisqLworUVdl
Ykluc3BlY3Rvcjo6UVdlYkluc3BlY3RvcihRV2lkZ2V0KiBwYXJlbnQpCisgICAgOiBRV2lkZ2V0
KHBhcmVudCkKKyAgICAsIGQobmV3IFFXZWJJbnNwZWN0b3JQcml2YXRlKHRoaXMpKQoreworfQor
CisvKiEKKyAgICBEZXN0cm95cyB0aGUgaW5zcGVjdG9yLgorKi8KK1FXZWJJbnNwZWN0b3I6On5R
V2ViSW5zcGVjdG9yKCkKK3sKKyAgICAvLyBSZW1vdmUgYXNzb2NpYXRpb24gcHJpbmNpcGFsbHkg
dG8gcHJldmVudCBkZWxldGluZyBhIGNoaWxkIGZyb250ZW5kCisgICAgc2V0UGFnZSgwKTsKKyAg
ICBkZWxldGUgZDsKKyAgICBkID0gMDsKK30KKworLyohCisgICAgQmluZCB0aGlzIGluc3BlY3Rv
ciB0byB0aGUgUVdlYlBhZ2UgdG8gYmUgaW5zcGVjdGVkLgorCisgICAgXGIge05vdGVzOn0KKyAg
ICBcbGlzdAorICAgICAgICBcbGkgVGhlcmUgY2FuIG9ubHkgYmUgb25lIFFXZWJJbnNwZWN0b3Ig
YXNzb2NpYXRlZCB3aXRoIGEgUVdlYlBhZ2UKKyAgICAgICAgICAgYW5kIHZpY2UgdmVyc2EuCisg
ICAgICAgIFxsaSBDYWxsaW5nIHRoaXMgbWV0aG9kIHdpdGggYSBudWxsIFxhIHBhZ2Ugd2lsbCBi
cmVhayB0aGUgY3VycmVudCBhc3NvY2lhdGlvbiwgaWYgYW55LgorICAgICAgICBcbGkgSWYgXGEg
cGFnZSBpcyBhbHJlYWR5IGFzc29jaWF0ZWQgdG8gYW5vdGhlciBRV2ViSW5zcGVjdG9yLCB0aGUg
YXNzb2NpYXRpb24KKyAgICAgICAgICAgd2lsbCBiZSByZXBsYWNlZCBhbmQgdGhlIHByZXZpb3Vz
IFFXZWJJbnNwZWN0b3Igd2lsbCBiZWNvbWUgdW5ib3VuZAorICAgIFxlbmRsaXN0CisKKyAgICBc
c2EgcGFnZSgpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpzZXRQYWdlKFFXZWJQYWdlKiBwYWdl
KQoreworICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIC8vIEJyZWFrIGN1cnJlbnRQYWdlLS0+
dGhpcworICAgICAgICBkLT5wYWdlLT5kLT5zZXRJbnNwZWN0b3IoMCk7CisgICAgfQorICAgIGlm
IChwYWdlICYmIHBhZ2UtPmQtPmluc3BlY3RvciAmJiBwYWdlLT5kLT5pbnNwZWN0b3IgIT0gdGhp
cykgeworICAgICAgICAvLyBCcmVhayBuZXdQYWdlPC0+bmV3UGFnZUN1cnJlbnRJbnNwZWN0b3IK
KyAgICAgICAgcGFnZS0+ZC0+aW5zcGVjdG9yLT5zZXRQYWdlKDApOworICAgIH0KKworICAgIGQt
PnBhZ2UgPSBwYWdlOworCisgICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgLy8gU2V0dXAgdGhlIHJl
Y2lwcm9jYWwgYXNzb2NpYXRpb24KKyAgICAgICAgcGFnZS0+ZC0+c2V0SW5zcGVjdG9yKHRoaXMp
OworICAgIH0KK30KKworLyohCisgICAgUmV0dXJucyB0aGUgaW5zcGVjdGVkIFFXZWJQYWdlLgor
ICAgIElmIG5vIHdlYiBwYWdlIGlzIGN1cnJlbnRseSBhc3NvY2lhdGVkLCBhIG51bGwgcG9pbnRl
ciBpcyByZXR1cm5lZC4KKyovCitRV2ViUGFnZSogUVdlYkluc3BlY3Rvcjo6cGFnZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGQtPnBhZ2U7Cit9CisKKy8qISBccmVpbXAgKi8KK1FTaXplIFFXZWJJ
bnNwZWN0b3I6OnNpemVIaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVNpemUoNDUwLCAzMDAp
OworfQorCisvKiEgXHJlaW1wICovCitib29sIFFXZWJJbnNwZWN0b3I6OmV2ZW50KFFFdmVudCog
ZXYpCit7CisgICAgcmV0dXJuIFFXaWRnZXQ6OmV2ZW50KGV2KTsKK30KKworLyohIFxyZWltcCAq
Lwordm9pZCBRV2ViSW5zcGVjdG9yOjpyZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KQor
eworICAgIGQtPmFkanVzdEZyb250ZW5kU2l6ZShldmVudC0+c2l6ZSgpKTsKK30KKworLyohIFxy
ZWltcCAqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpzaG93RXZlbnQoUVNob3dFdmVudCogZXZlbnQp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAvLyBBbGxvd3MgUVdlYkluc3BlY3Rvcjo6
c2hvdygpIHRvIGluaXQgdGhlIGluc3BlY3Rvci4KKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAg
ZC0+cGFnZS0+ZC0+ZGlkU2hvd0luc3BlY3RvcigpOworI2VuZGlmCit9CisKKy8qISBccmVpbXAg
Ki8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6aGlkZUV2ZW50KFFIaWRlRXZlbnQqIGV2ZW50KQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2Ut
PmQtPmRpZENsb3NlSW5zcGVjdG9yKCk7CisjZW5kaWYKK30KKworLyohIFxyZWltcCAqLwordm9p
ZCBRV2ViSW5zcGVjdG9yOjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBldmVudCkKK3sKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5kLT5k
aWRDbG9zZUluc3BlY3RvcigpOworI2VuZGlmCit9CisKKy8qISBcaW50ZXJuYWwgKi8KK3ZvaWQg
UVdlYkluc3BlY3RvclByaXZhdGU6OnNldEZyb250ZW5kKFFPYmplY3QqIG5ld0Zyb250ZW5kKQor
eworICAgIGlmIChmcm9udGVuZCkKKyAgICAgICAgZnJvbnRlbmQtPnNldFBhcmVudCgwKTsKKwor
ICAgIGZyb250ZW5kID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPihuZXdGcm9udGVuZCk7CisKKyAg
ICBpZiAoZnJvbnRlbmQpIHsKKyAgICAgICAgZnJvbnRlbmQtPnNldFBhcmVudChxKTsKKyAgICAg
ICAgZnJvbnRlbmQtPnNob3coKTsKKyAgICAgICAgYWRqdXN0RnJvbnRlbmRTaXplKHEtPnNpemUo
KSk7CisgICAgfQorfQorCit2b2lkIFFXZWJJbnNwZWN0b3JQcml2YXRlOjphZGp1c3RGcm9udGVu
ZFNpemUoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAgaWYgKGZyb250ZW5kKQorICAgICAgICBm
cm9udGVuZC0+cmVzaXplKHNpemUpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dpZGdldEFwaS9xd2ViaW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9x
d2ViaW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzM2Zh
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJpbnNw
ZWN0b3IuaApAQCAtMCwwICsxLDU3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFX
RUJJTlNQRUNUT1JfSAorI2RlZmluZSBRV0VCSU5TUEVDVE9SX0gKKworI2luY2x1ZGUgPFF0V2Vi
S2l0L3F3ZWJraXRnbG9iYWwuaD4KKyNpbmNsdWRlIDxRdFdlYktpdFdpZGdldHMvcXdlYnBhZ2Uu
aD4KKworI2luY2x1ZGUgPFF0V2ViS2l0V2lkZ2V0cy9xd2Vidmlldy5oPgorCitjbGFzcyBRV2Vi
SW5zcGVjdG9yUHJpdmF0ZTsKKworY2xhc3MgUVdFQktJVFdJREdFVFNfRVhQT1JUIFFXZWJJbnNw
ZWN0b3IgOiBwdWJsaWMgUVdpZGdldCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2Vi
SW5zcGVjdG9yKFFXaWRnZXQqIHBhcmVudCA9IDApOworICAgIH5RV2ViSW5zcGVjdG9yKCk7CisK
KyAgICB2b2lkIHNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2UpOworICAgIFFXZWJQYWdlKiBwYWdlKCkg
Y29uc3Q7CisKKyAgICBRU2l6ZSBzaXplSGludCgpIGNvbnN0OworICAgIGJvb2wgZXZlbnQoUUV2
ZW50Kik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCog
ZXZlbnQpOworICAgIHZvaWQgc2hvd0V2ZW50KFFTaG93RXZlbnQqIGV2ZW50KTsKKyAgICB2b2lk
IGhpZGVFdmVudChRSGlkZUV2ZW50KiBldmVudCk7CisgICAgdm9pZCBjbG9zZUV2ZW50KFFDbG9z
ZUV2ZW50KiBldmVudCk7CisKK3ByaXZhdGU6CisgICAgUVdlYkluc3BlY3RvclByaXZhdGUqIGQ7
CisKKyAgICBmcmllbmQgY2xhc3MgUVdlYkluc3BlY3RvclByaXZhdGU7CisgICAgZnJpZW5kIGNs
YXNzIFFXZWJQYWdlOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZVByaXZhdGU7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OworICAgIGZyaWVuZCBjbGFzcyBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OworfTsKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYmluc3BlY3Rvcl9wLmggYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dpZGdldEFwaS9xd2ViaW5zcGVjdG9yX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zNjRlZWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYmluc3BlY3Rvcl9wLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBxd2ViaW5zcGVjdG9yX3BfaAorI2RlZmluZSBx
d2ViaW5zcGVjdG9yX3BfaAorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFTaXplOworY2xh
c3MgUVdpZGdldDsKK1FUX0VORF9OQU1FU1BBQ0UKK2NsYXNzIFFXZWJJbnNwZWN0b3I7CitjbGFz
cyBRV2ViUGFnZTsKKworY2xhc3MgUVdlYkluc3BlY3RvclByaXZhdGUgeworcHVibGljOgorICAg
IFFXZWJJbnNwZWN0b3JQcml2YXRlKFFXZWJJbnNwZWN0b3IqIHFxKQorICAgIDogcShxcSkKKyAg
ICAsIHBhZ2UoMCkKKyAgICAsIGZyb250ZW5kKDApCisgICAgeyB9CisKKyAgICB2b2lkIHNldEZy
b250ZW5kKFFPYmplY3QqIG5ld0Zyb250ZW5kKTsKKyAgICB2b2lkIGFkanVzdEZyb250ZW5kU2l6
ZShjb25zdCBRU2l6ZSYpOworCisgICAgUVdlYkluc3BlY3RvciogcTsKKyAgICBRV2ViUGFnZSog
cGFnZTsKKyAgICBRV2lkZ2V0KiBmcm9udGVuZDsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9x
dC9XaWRnZXRBcGkvcXdlYnBhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjBmM2YxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFw
aS9xd2VicGFnZS5jcHAKQEAgLTAsMCArMSwzNDI1IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMg
SW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgInF3ZWJwYWdlLmgiCisKKyNpbmNsdWRlICJEZWZhdWx0RnVsbFNj
cmVlblZpZGVvSGFuZGxlci5oIgorI2luY2x1ZGUgIkluaXRXZWJLaXRRdC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudFF0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5o
IgorI2luY2x1ZGUgIkluc3BlY3RvclNlcnZlclF0LmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudFF0
LmgiCisjaW5jbHVkZSAiUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbC5oIgorI2luY2x1ZGUgIlFX
ZWJVbmRvQ29tbWFuZC5oIgorI2luY2x1ZGUgIlFXaWRnZXRQbHVnaW5JbXBsLmgiCisjaW5jbHVk
ZSAiUXRGYWxsYmFja1dlYlBvcHVwLmgiCisjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgor
I2luY2x1ZGUgIlVuZG9TdGVwUXQuaCIKKyNpbmNsdWRlICJXZWJFdmVudENvbnZlcnNpb24uaCIK
KworI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5j
bHVkZSAicXdlYmhpc3RvcnkuaCIKKyNpbmNsdWRlICJxd2ViaW5zcGVjdG9yLmgiCisjaW5jbHVk
ZSAicXdlYmluc3BlY3Rvcl9wLmgiCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgi
CisjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgorI2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgInF3ZWJ2aWV3LmgiCisKKyNpbmNsdWRlIDxRQWN0aW9uPgorI2luY2x1ZGUgPFFBcHBs
aWNhdGlvbj4KKyNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyNpbmNsdWRlIDxRQml0QXJyYXk+Cisj
aW5jbHVkZSA8UUNsaXBib2FyZD4KKyNpbmNsdWRlIDxRQ29sb3JEaWFsb2c+CisjaW5jbHVkZSA8
UURlYnVnPgorI2luY2x1ZGUgPFFEZXNrdG9wV2lkZ2V0PgorI2luY2x1ZGUgPFFEcmFnRW50ZXJF
dmVudD4KKyNpbmNsdWRlIDxRRHJhZ0xlYXZlRXZlbnQ+CisjaW5jbHVkZSA8UURyYWdNb3ZlRXZl
bnQ+CisjaW5jbHVkZSA8UURyb3BFdmVudD4KKyNpbmNsdWRlIDxRRmlsZURpYWxvZz4KKyNpbmNs
dWRlIDxRR2VzdHVyZUV2ZW50PgorI2luY2x1ZGUgPFFJbnB1dERpYWxvZz4KKyNpbmNsdWRlIDxR
TGFiZWw+CisjaW5jbHVkZSA8UU1lbnU+CisjaW5jbHVkZSA8UU1lc3NhZ2VCb3g+CisjaW5jbHVk
ZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFFOZXR3b3JrUHJveHk+CisjaW5j
bHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFFT
c2xTb2NrZXQ+CisjaW5jbHVkZSA8UVN0eWxlPgorI2luY2x1ZGUgPFFTeXNJbmZvPgorI2lmIFVT
RShRVF9NT0JJTElUWV9TWVNURU1JTkZPKQorI2luY2x1ZGUgPHFzeXN0ZW1pbmZvLmg+CisjZW5k
aWYKKyNpbmNsdWRlIDxRU3lzdGVtVHJheUljb24+CisjaW5jbHVkZSA8UVRleHRDaGFyRm9ybWF0
PgorI2luY2x1ZGUgPFFUb29sVGlwPgorI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgorI2luY2x1ZGUg
PFFVbmRvU3RhY2s+CisjaW5jbHVkZSA8UVVybD4KKyNpZiBkZWZpbmVkKFFfV1NfWDExKQorI2lu
Y2x1ZGUgPFFYMTFJbmZvPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisv
LyBMb29rdXAgdGFibGUgbWFwcGluZyBRV2ViUGFnZTo6V2ViQWN0aW9ucyB0byB0aGUgYXNzb2Np
YXRlZCBFZGl0b3IgY29tbWFuZHMKK3N0YXRpYyBjb25zdCBjaGFyKiBlZGl0b3JDb21tYW5kV2Vi
QWN0aW9uc1tdID0KK3sKKyAgICAwLCAvLyBPcGVuTGluaywKKworICAgIDAsIC8vIE9wZW5MaW5r
SW5OZXdXaW5kb3csCisgICAgMCwgLy8gT3BlbkZyYW1lSW5OZXdXaW5kb3csCisKKyAgICAwLCAv
LyBEb3dubG9hZExpbmtUb0Rpc2ssCisgICAgMCwgLy8gQ29weUxpbmtUb0NsaXBib2FyZCwKKwor
ICAgIDAsIC8vIE9wZW5JbWFnZUluTmV3V2luZG93LAorICAgIDAsIC8vIERvd25sb2FkSW1hZ2VU
b0Rpc2ssCisgICAgMCwgLy8gQ29weUltYWdlVG9DbGlwYm9hcmQsCisKKyAgICAwLCAvLyBCYWNr
LAorICAgIDAsIC8vIEZvcndhcmQsCisgICAgMCwgLy8gU3RvcCwKKyAgICAwLCAvLyBSZWxvYWQs
CisKKyAgICAiQ3V0IiwgLy8gQ3V0LAorICAgICJDb3B5IiwgLy8gQ29weSwKKyAgICAiUGFzdGUi
LCAvLyBQYXN0ZSwKKworICAgICJVbmRvIiwgLy8gVW5kbywKKyAgICAiUmVkbyIsIC8vIFJlZG8s
CisgICAgIk1vdmVGb3J3YXJkIiwgLy8gTW92ZVRvTmV4dENoYXIsCisgICAgIk1vdmVCYWNrd2Fy
ZCIsIC8vIE1vdmVUb1ByZXZpb3VzQ2hhciwKKyAgICAiTW92ZVdvcmRGb3J3YXJkIiwgLy8gTW92
ZVRvTmV4dFdvcmQsCisgICAgIk1vdmVXb3JkQmFja3dhcmQiLCAvLyBNb3ZlVG9QcmV2aW91c1dv
cmQsCisgICAgIk1vdmVEb3duIiwgLy8gTW92ZVRvTmV4dExpbmUsCisgICAgIk1vdmVVcCIsIC8v
IE1vdmVUb1ByZXZpb3VzTGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgLy8gTW92
ZVRvU3RhcnRPZkxpbmUsCisgICAgIk1vdmVUb0VuZE9mTGluZSIsIC8vIE1vdmVUb0VuZE9mTGlu
ZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAvLyBNb3ZlVG9TdGFydE9mQmxv
Y2ssCisgICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBoIiwgLy8gTW92ZVRvRW5kT2ZCbG9jaywKKyAg
ICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIsIC8vIE1vdmVUb1N0YXJ0T2ZEb2N1bWVudCwK
KyAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsIC8vIE1vdmVUb0VuZE9mRG9jdW1lbnQsCisgICAg
Ik1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0TmV4dENoYXIsCisgICAg
Ik1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsIC8vIFNlbGVjdFByZXZpb3VzQ2hhciwK
KyAgICAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0TmV4dFdv
cmQsCisgICAgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAvLyBTZWxlY3RQ
cmV2aW91c1dvcmQsCisgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0
TmV4dExpbmUsCisgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIsIC8vIFNlbGVjdFByZXZp
b3VzTGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiwg
Ly8gU2VsZWN0U3RhcnRPZkxpbmUsCisgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVj
dGlvbiIsIC8vIFNlbGVjdEVuZE9mTGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3Jh
cGhBbmRNb2RpZnlTZWxlY3Rpb24iLCAvLyBTZWxlY3RTdGFydE9mQmxvY2ssCisgICAgIk1vdmVU
b0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0RW5kT2ZCbG9jaywK
KyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsIC8vIFNl
bGVjdFN0YXJ0T2ZEb2N1bWVudCwKKyAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNl
bGVjdGlvbiIsIC8vIFNlbGVjdEVuZE9mRG9jdW1lbnQsCisgICAgIkRlbGV0ZVdvcmRCYWNrd2Fy
ZCIsIC8vIERlbGV0ZVN0YXJ0T2ZXb3JkLAorICAgICJEZWxldGVXb3JkRm9yd2FyZCIsIC8vIERl
bGV0ZUVuZE9mV29yZCwKKworICAgIDAsIC8vIFNldFRleHREaXJlY3Rpb25EZWZhdWx0LAorICAg
IDAsIC8vIFNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCwKKyAgICAwLCAvLyBTZXRUZXh0RGly
ZWN0aW9uUmlnaHRUb0xlZnQsCisKKyAgICAiVG9nZ2xlQm9sZCIsIC8vIFRvZ2dsZUJvbGQsCisg
ICAgIlRvZ2dsZUl0YWxpYyIsIC8vIFRvZ2dsZUl0YWxpYywKKyAgICAiVG9nZ2xlVW5kZXJsaW5l
IiwgLy8gVG9nZ2xlVW5kZXJsaW5lLAorCisgICAgMCwgLy8gSW5zcGVjdEVsZW1lbnQsCisKKyAg
ICAiSW5zZXJ0TmV3bGluZSIsIC8vIEluc2VydFBhcmFncmFwaFNlcGFyYXRvcgorICAgICJJbnNl
cnRMaW5lQnJlYWsiLCAvLyBJbnNlcnRMaW5lU2VwYXJhdG9yCisKKyAgICAiU2VsZWN0QWxsIiwg
Ly8gU2VsZWN0QWxsCisgICAgMCwgLy8gUmVsb2FkQW5kQnlwYXNzQ2FjaGUsCisKKyAgICAiUGFz
dGVBbmRNYXRjaFN0eWxlIiwgLy8gUGFzdGVBbmRNYXRjaFN0eWxlCisgICAgIlJlbW92ZUZvcm1h
dCIsIC8vIFJlbW92ZUZvcm1hdAorICAgICJTdHJpa2V0aHJvdWdoIiwgLy8gVG9nZ2xlU3RyaWtl
dGhyb3VnaCwKKyAgICAiU3Vic2NyaXB0IiwgLy8gVG9nZ2xlU3Vic2NyaXB0CisgICAgIlN1cGVy
c2NyaXB0IiwgLy8gVG9nZ2xlU3VwZXJzY3JpcHQKKyAgICAiSW5zZXJ0VW5vcmRlcmVkTGlzdCIs
IC8vIEluc2VydFVub3JkZXJlZExpc3QKKyAgICAiSW5zZXJ0T3JkZXJlZExpc3QiLCAvLyBJbnNl
cnRPcmRlcmVkTGlzdAorICAgICJJbmRlbnQiLCAvLyBJbmRlbnQKKyAgICAiT3V0ZGVudCIsIC8v
IE91dGRlbnQsCisKKyAgICAiQWxpZ25DZW50ZXIiLCAvLyBBbGlnbkNlbnRlciwKKyAgICAiQWxp
Z25KdXN0aWZpZWQiLCAvLyBBbGlnbkp1c3RpZmllZCwKKyAgICAiQWxpZ25MZWZ0IiwgLy8gQWxp
Z25MZWZ0LAorICAgICJBbGlnblJpZ2h0IiwgLy8gQWxpZ25SaWdodCwKKworICAgIDAsIC8vIFN0
b3BTY2hlZHVsZWRQYWdlUmVmcmVzaCwKKworICAgIDAsIC8vIENvcHlJbWFnZVVybFRvQ2xpcGJv
YXJkLAorCisgICAgMCwgLy8gT3BlbkxpbmtJblRoaXNXaW5kb3csCisKKyAgICAwIC8vIFdlYkFj
dGlvbkNvdW50Cit9OworCisvLyBMb29rdXAgdGhlIGFwcHJvcHJpYXRlIGVkaXRvciBjb21tYW5k
IHRvIHVzZSBmb3IgV2ViQWN0aW9uIFxhIGFjdGlvbgorY29uc3QgY2hhciogUVdlYlBhZ2VQcml2
YXRlOjplZGl0b3JDb21tYW5kRm9yV2ViQWN0aW9ucyhRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlv
bikKK3sKKyAgICBpZiAoKGFjdGlvbiA+IFFXZWJQYWdlOjpOb1dlYkFjdGlvbikgJiYgKGFjdGlv
biA8IGludChzaXplb2YoZWRpdG9yQ29tbWFuZFdlYkFjdGlvbnMpIC8gc2l6ZW9mKGNvbnN0IGNo
YXIqKSkpKQorICAgICAgICByZXR1cm4gZWRpdG9yQ29tbWFuZFdlYkFjdGlvbnNbYWN0aW9uXTsK
KyAgICByZXR1cm4gMDsKK30KKworUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdl
YlBhZ2UgKnFxKQorICAgIDogcShxcSkKKyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgLCB1
bmRvU3RhY2soMCkKKyNlbmRpZgorICAgICwgbGlua1BvbGljeShRV2ViUGFnZTo6RG9udERlbGVn
YXRlTGlua3MpCisgICAgLCBtX3ZpZXdwb3J0U2l6ZShRU2l6ZSgwLCAwKSkKKyAgICAsIHVzZUZp
eGVkTGF5b3V0KGZhbHNlKQorICAgICwgaW5zcGVjdG9yRnJvbnRlbmQoMCkKKyAgICAsIGluc3Bl
Y3RvcigwKQorICAgICwgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkoZmFsc2UpCisgICAgLCBtX2xh
c3REcm9wQWN0aW9uKFF0OjpJZ25vcmVBY3Rpb24pCit7CisgICAgV2ViS2l0Ojppbml0aWFsaXpl
V2ViS2l0V2lkZ2V0cygpOworICAgIGluaXRpYWxpemVXZWJDb3JlUGFnZSgpOworICAgIG1lbXNl
dChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9ucykpOworCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKKyAgICBhZGROb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnQoKTsKKyNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAgICBpZiAo
IWhhc1N5c3RlbVRyYXlJY29uKCkpCisgICAgICAgIHNldFN5c3RlbVRyYXlJY29uKG5ldyBRU3lz
dGVtVHJheUljb24pOworI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisjZW5kaWYgLy8g
RU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKK30K
KworUVdlYlBhZ2VQcml2YXRlOjp+UVdlYlBhZ2VQcml2YXRlKCkKK3sKKyNpZm5kZWYgUVRfTk9f
Q09OVEVYVE1FTlUKKyAgICBkZWxldGUgY3VycmVudENvbnRleHRNZW51LmRhdGEoKTsKKyNlbmRp
ZgorI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBkZWxldGUgdW5kb1N0YWNrOworICAgIHVu
ZG9TdGFjayA9IDA7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoaW5zcGVjdG9yKSB7CisgICAgICAg
IC8vIElmIHRoZSBpbnNwZWN0b3IgaXMgb3VycywgZGVsZXRlIGl0LCBvdGhlcndpc2UganVzdCBk
ZXRhY2ggZnJvbSBpdC4KKyAgICAgICAgaWYgKGluc3BlY3RvcklzSW50ZXJuYWxPbmx5KQorICAg
ICAgICAgICAgZGVsZXRlIGluc3BlY3RvcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5z
cGVjdG9yLT5zZXRQYWdlKDApOworICAgIH0KKyAgICAvLyBFeHBsaWNpdGx5IGRlc3RydWN0IHRo
ZSBXZWJDb3JlIHBhZ2UgYXQgdGhpcyBwb2ludCB3aGVuIHRoZQorICAgIC8vIFFXZWJQYWdlUHJp
dmF0ZSAvIFFXZWJQYWdlQWRhcGF0ZXIgdnRhYmxlcyBhcmUgc3RpbGwgaW50YWN0LAorICAgIC8v
IGluIG9yZGVyIGZvciB2YXJpb3VzIGRlc3RydWN0aW9uIGNhbGxiYWNrcyBvdXQgb2YgV2ViQ29y
ZSB0bworICAgIC8vIHdvcmsuCisgICAgZGVsZXRlUGFnZSgpOworfQorCit2b2lkIFFXZWJQYWdl
UHJpdmF0ZTo6c2hvdygpCit7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAg
dmlldy0+d2luZG93KCktPnNob3coKTsKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OnNldEZv
Y3VzKCkKK3sKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICB2aWV3LT5zZXRG
b2N1cygpOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6dW5mb2N1cygpCit7CisgICAgaWYg
KCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgdmlldy0+Y2xlYXJGb2N1cygpOworfQorCit2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6c2V0V2luZG93UmVjdChjb25zdCBRUmVjdCAmcmVjdCkKK3sK
KyAgICBlbWl0IHEtPmdlb21ldHJ5Q2hhbmdlUmVxdWVzdGVkKHJlY3QpOworfQorCitRU2l6ZSBR
V2ViUGFnZVByaXZhdGU6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHEtPnZp
ZXdwb3J0U2l6ZSgpOworfQorCitRV2ViUGFnZUFkYXB0ZXIgKlFXZWJQYWdlUHJpdmF0ZTo6Y3Jl
YXRlV2luZG93KGJvb2wgZGlhbG9nKQoreworICAgIFFXZWJQYWdlICpuZXdQYWdlID0gcS0+Y3Jl
YXRlV2luZG93KGRpYWxvZyA/IFFXZWJQYWdlOjpXZWJNb2RhbERpYWxvZyA6IFFXZWJQYWdlOjpX
ZWJCcm93c2VyV2luZG93KTsKKyAgICBpZiAoIW5ld1BhZ2UpCisgICAgICAgIHJldHVybiAwOwor
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgbWFpbiBmcmFtZSBleGlzdHMsIGFzIFdlYkNvcmUgZXhwZWN0
cyBpdCB3aGVuIHJldHVybmluZyBmcm9tIHRoaXMgQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
KQorICAgIG5ld1BhZ2UtPmQtPmNyZWF0ZU1haW5GcmFtZSgpOworICAgIHJldHVybiBuZXdQYWdl
LT5kOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdl
KGNvbnN0IFFTdHJpbmcgJm1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBRU3RyaW5nICZz
b3VyY2VJRCkKK3sKKyAgICBxLT5qYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UobWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlSUQpOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlw
dEFsZXJ0KFFXZWJGcmFtZUFkYXB0ZXIqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBtc2cpCit7Cisg
ICAgcS0+amF2YVNjcmlwdEFsZXJ0KFFXZWJGcmFtZVByaXZhdGU6OmtpdChmcmFtZSksIG1zZyk7
Cit9CisKK2Jvb2wgUVdlYlBhZ2VQcml2YXRlOjpqYXZhU2NyaXB0Q29uZmlybShRV2ViRnJhbWVB
ZGFwdGVyKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnKQoreworICAgIHJldHVybiBxLT5qYXZh
U2NyaXB0Q29uZmlybShRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUpLCBtc2cpOworfQorCiti
b29sIFFXZWJQYWdlUHJpdmF0ZTo6amF2YVNjcmlwdFByb21wdChRV2ViRnJhbWVBZGFwdGVyICpm
cmFtZSwgY29uc3QgUVN0cmluZyAmbXNnLCBjb25zdCBRU3RyaW5nICZkZWZhdWx0VmFsdWUsIFFT
dHJpbmcgKnJlc3VsdCkKK3sKKyAgICByZXR1cm4gcS0+amF2YVNjcmlwdFByb21wdChRV2ViRnJh
bWVQcml2YXRlOjpraXQoZnJhbWUpLCBtc2csIGRlZmF1bHRWYWx1ZSwgcmVzdWx0KTsKK30KKwor
Ym9vbCBRV2ViUGFnZVByaXZhdGU6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKQoreworICAg
IHJldHVybiBxLT5zaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7Cit9CisKK3ZvaWQgUVdlYlBh
Z2VQcml2YXRlOjpwcmludFJlcXVlc3RlZChRV2ViRnJhbWVBZGFwdGVyICpmcmFtZSkKK3sKKyAg
ICBlbWl0IHEtPnByaW50UmVxdWVzdGVkKFFXZWJGcmFtZVByaXZhdGU6OmtpdChmcmFtZSkpOwor
fQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6ZGF0YWJhc2VRdW90YUV4Y2VlZGVkKFFXZWJGcmFt
ZUFkYXB0ZXIqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBkYXRhYmFzZU5hbWUpCit7CisgICAgZW1p
dCBxLT5kYXRhYmFzZVF1b3RhRXhjZWVkZWQoUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KGZyYW1lKSwg
ZGF0YWJhc2VOYW1lKTsKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OmFwcGxpY2F0aW9uQ2Fj
aGVRdW90YUV4Y2VlZGVkKFFXZWJTZWN1cml0eU9yaWdpbiAqb3JpZ2luLCBxdWludDY0IGRlZmF1
bHRPcmlnaW5RdW90YSwgcXVpbnQ2NCBjKQoreworICAgIGVtaXQgcS0+YXBwbGljYXRpb25DYWNo
ZVF1b3RhRXhjZWVkZWQob3JpZ2luLCBkZWZhdWx0T3JpZ2luUXVvdGEsIGMpOworfQorCit2b2lk
IFFXZWJQYWdlUHJpdmF0ZTo6c2V0VG9vbFRpcChjb25zdCBRU3RyaW5nICZ0aXApCit7CisjaWZu
ZGVmIFFUX05PX1RPT0xUSVAKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICh0aXAuaXNFbXB0eSgpKSB7CisgICAgICAgIHZpZXctPnNldFRvb2xUaXAoUVN0cmluZygp
KTsKKyAgICAgICAgUVRvb2xUaXA6OmhpZGVUZXh0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
UVN0cmluZyBkdGlwID0gUUxhdGluMVN0cmluZygiPHA+IikgKyBRU3RyaW5nKHRpcCkudG9IdG1s
RXNjYXBlZCgpICsgUUxhdGluMVN0cmluZygiPC9wPiIpOworICAgICAgICB2aWV3LT5zZXRUb29s
VGlwKGR0aXApOworICAgIH0KKyNlbHNlCisgICAgUV9VTlVTRUQodGlwKTsKKyNlbmRpZgorfQor
CisjaWYgVVNFKFFUX01VTFRJTUVESUEpCitRV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlciAqUVdl
YlBhZ2VQcml2YXRlOjpjcmVhdGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkKK3sKKyAgICByZXR1
cm4gbmV3IFdlYktpdDo6RGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI7Cit9CisjZW5kaWYK
KworUVdlYkZyYW1lQWRhcHRlciAqUVdlYlBhZ2VQcml2YXRlOjptYWluRnJhbWVBZGFwdGVyKCkK
K3sKKyAgICByZXR1cm4gcS0+bWFpbkZyYW1lKCktPmQ7Cit9CisKK1FTdHJpbmdMaXN0IFFXZWJQ
YWdlUHJpdmF0ZTo6Y2hvb3NlRmlsZXMoUVdlYkZyYW1lQWRhcHRlciAqZnJhbWUsIGJvb2wgYWxs
b3dNdWx0aXBsZSwgY29uc3QgUVN0cmluZ0xpc3QgJnN1Z2dlc3RlZEZpbGVOYW1lcykKK3sKKyAg
ICBpZiAoYWxsb3dNdWx0aXBsZSAmJiBxLT5zdXBwb3J0c0V4dGVuc2lvbihRV2ViUGFnZTo6Q2hv
b3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lvbikpIHsKKyAgICAgICAgUVdlYlBhZ2U6OkNob29zZU11
bHRpcGxlRmlsZXNFeHRlbnNpb25PcHRpb24gb3B0aW9uOworICAgICAgICBvcHRpb24ucGFyZW50
RnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUpOworICAgICAgICBvcHRpb24uc3Vn
Z2VzdGVkRmlsZU5hbWVzID0gc3VnZ2VzdGVkRmlsZU5hbWVzOworCisgICAgICAgIFFXZWJQYWdl
OjpDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uUmV0dXJuIG91dHB1dDsKKyAgICAgICAgcS0+
ZXh0ZW5zaW9uKFFXZWJQYWdlOjpDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uLCAmb3B0aW9u
LCAmb3V0cHV0KTsKKworICAgICAgICByZXR1cm4gb3V0cHV0LmZpbGVOYW1lczsKKyAgICB9Cisg
ICAgLy8gU2luZ2xlIGZpbGUKKyAgICBRU3RyaW5nTGlzdCByZXN1bHQ7CisgICAgUVN0cmluZyBz
dWdnZXN0ZWRGaWxlOworICAgIGlmICghc3VnZ2VzdGVkRmlsZU5hbWVzLmlzRW1wdHkoKSkKKyAg
ICAgICAgc3VnZ2VzdGVkRmlsZSA9IHN1Z2dlc3RlZEZpbGVOYW1lcy5maXJzdCgpOworICAgIFFT
dHJpbmcgZmlsZSA9IHEtPmNob29zZUZpbGUoUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KGZyYW1lKSwg
c3VnZ2VzdGVkRmlsZSk7CisgICAgaWYgKCFmaWxlLmlzRW1wdHkoKSkKKyAgICAgICAgcmVzdWx0
IDw8IGZpbGU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBRV2ViUGFnZVByaXZhdGU6
OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KFFXZWJGcmFtZUFkYXB0ZXIgKmZyYW1lQWRhcHRlciwg
Y29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBpbnQgdHlwZSkKK3sKKyAgICBRV2ViRnJh
bWUgKmZyYW1lID0gZnJhbWVBZGFwdGVyID8gUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KGZyYW1lQWRh
cHRlcik6IDA7CisgICAgaWYgKGluc2lkZU9wZW5DYWxsCisgICAgICAgICYmIGZyYW1lID09IG1h
aW5GcmFtZS5kYXRhKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBxLT5hY2Nl
cHROYXZpZ2F0aW9uUmVxdWVzdChmcmFtZSwgcmVxdWVzdCwgUVdlYlBhZ2U6Ok5hdmlnYXRpb25U
eXBlKHR5cGUpKTsKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OmVtaXRSZXN0b3JlRnJhbWVT
dGF0ZVJlcXVlc3RlZChRV2ViRnJhbWVBZGFwdGVyICpmcmFtZSkKK3sKKyAgICBlbWl0IHEtPnJl
c3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFXZWJGcmFtZVByaXZhdGU6OmtpdChmcmFtZSkpOwor
fQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6ZW1pdFNhdmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFX
ZWJGcmFtZUFkYXB0ZXIgKmZyYW1lLCBRV2ViSGlzdG9yeUl0ZW0gKml0ZW0pCit7CisgICAgZW1p
dCBxLT5zYXZlRnJhbWVTdGF0ZVJlcXVlc3RlZChRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUp
LCBpdGVtKTsKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OmVtaXREb3dubG9hZFJlcXVlc3Rl
ZChjb25zdCBRTmV0d29ya1JlcXVlc3QgJnJlcXVlc3QpCit7CisgICAgZW1pdCBxLT5kb3dubG9h
ZFJlcXVlc3RlZChyZXF1ZXN0KTsKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OmVtaXRGcmFt
ZUNyZWF0ZWQoUVdlYkZyYW1lQWRhcHRlciAqZnJhbWUpCit7CisgICAgZW1pdCBxLT5mcmFtZUNy
ZWF0ZWQoUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KGZyYW1lKSk7Cit9CisKK2Jvb2wgUVdlYlBhZ2VQ
cml2YXRlOjplcnJvclBhZ2VFeHRlbnNpb24oUVdlYlBhZ2VBZGFwdGVyOjpFcnJvclBhZ2VPcHRp
b24gKm9wdCwgUVdlYlBhZ2VBZGFwdGVyOjpFcnJvclBhZ2VSZXR1cm4gKm91dCkKK3sKKyAgICBR
V2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9uIG9wdGlvbjsKKyAgICBpZiAob3B0LT5k
b21haW4gPT0gUUxhdGluMVN0cmluZygiUXROZXR3b3JrIikpCisgICAgICAgIG9wdGlvbi5kb21h
aW4gPSBRV2ViUGFnZTo6UXROZXR3b3JrOworICAgIGVsc2UgaWYgKG9wdC0+ZG9tYWluID09IFFM
YXRpbjFTdHJpbmcoIkhUVFAiKSkKKyAgICAgICAgb3B0aW9uLmRvbWFpbiA9IFFXZWJQYWdlOjpI
dHRwOworICAgIGVsc2UgaWYgKG9wdC0+ZG9tYWluID09IFFMYXRpbjFTdHJpbmcoIldlYktpdCIp
KQorICAgICAgICBvcHRpb24uZG9tYWluID0gUVdlYlBhZ2U6OldlYktpdDsKKyAgICBlbHNlCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBvcHRpb24udXJsID0gb3B0LT51cmw7CisgICAgb3B0
aW9uLmZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KG9wdC0+ZnJhbWUpOworICAgIG9wdGlv
bi5lcnJvciA9IG9wdC0+ZXJyb3I7CisgICAgb3B0aW9uLmVycm9yU3RyaW5nID0gb3B0LT5lcnJv
clN0cmluZzsKKyAgICBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uUmV0dXJuIG91dHB1dDsK
KyAgICBpZiAoIXEtPmV4dGVuc2lvbihRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uLCAmb3B0
aW9uLCAmb3V0cHV0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG91dC0+YmFzZVVybCA9
IG91dHB1dC5iYXNlVXJsOworICAgIG91dC0+Y29udGVudCA9IG91dHB1dC5jb250ZW50OworICAg
IG91dC0+Y29udGVudFR5cGUgPSBvdXRwdXQuY29udGVudFR5cGU7CisgICAgb3V0LT5lbmNvZGlu
ZyA9IG91dHB1dC5lbmNvZGluZzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUXRQbHVnaW5XaWRn
ZXRBZGFwdGVyICpRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZVBsdWdpbihjb25zdCBRU3RyaW5nICZj
bGFzc2lkLCBjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFTdHJpbmdMaXN0ICZwYXJhbU5hbWVzLCBj
b25zdCBRU3RyaW5nTGlzdCAmcGFyYW1WYWx1ZXMpCit7CisgICAgUU9iamVjdCAqd2lkZ2V0ID0g
cS0+Y3JlYXRlUGx1Z2luKGNsYXNzaWQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMpOwor
ICAgIHJldHVybiBhZGFwdGVyRm9yV2lkZ2V0KHdpZGdldCk7Cit9CisKK1F0UGx1Z2luV2lkZ2V0
QWRhcHRlciAqUVdlYlBhZ2VQcml2YXRlOjphZGFwdGVyRm9yV2lkZ2V0KFFPYmplY3QgKm9iamVj
dCkgY29uc3QKK3sKKyAgICBpZiAoUVdpZGdldCAqd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRn
ZXQqPihvYmplY3QpKQorICAgICAgICByZXR1cm4gbmV3IFFXaWRnZXRQbHVnaW5JbXBsKHdpZGdl
dCk7CisgICAgaWYgKFFHcmFwaGljc1dpZGdldCAqd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFHcmFw
aGljc1dpZGdldCo+KG9iamVjdCkpCisgICAgICAgIHJldHVybiBuZXcgUUdyYXBoaWNzV2lkZ2V0
UGx1Z2luSW1wbCh3aWRnZXQpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFFXZWJQYWdlUHJp
dmF0ZTo6Y3JlYXRlTWFpbkZyYW1lKCkKK3sKKyAgICBpZiAoIW1haW5GcmFtZSkgeworICAgICAg
ICBtYWluRnJhbWUgPSBuZXcgUVdlYkZyYW1lKHEpOworICAgICAgICBlbWl0IHEtPmZyYW1lQ3Jl
YXRlZChtYWluRnJhbWUuZGF0YSgpKTsKKyAgICB9Cit9CisKKyNkZWZpbmUgTUFQX1dFQl9BQ1RJ
T05fRlJPTV9BREFQVEVSX0VRVUlWQUxFTlQoTmFtZSwgVmFsdWUpIFwKKyAgICBjYXNlIFFXZWJQ
YWdlQWRhcHRlcjo6TmFtZTogcmV0dXJuIFFXZWJQYWdlOjpOYW1lCisKK3N0YXRpYyBRV2ViUGFn
ZTo6V2ViQWN0aW9uIHdlYkFjdGlvbkZvckFkYXB0ZXJNZW51QWN0aW9uKFFXZWJQYWdlQWRhcHRl
cjo6TWVudUFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAg
Rk9SX0VBQ0hfTUFQUEVEX01FTlVfQUNUSU9OKE1BUF9XRUJfQUNUSU9OX0ZST01fQURBUFRFUl9F
UVVJVkFMRU5ULCBTRU1JQ09MT05fU0VQQVJBVE9SKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpJbnNwZWN0RWxlbWVudDogcmV0dXJuIFFXZWJQYWdl
OjpJbnNwZWN0RWxlbWVudDsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFFXZWJQYWdl
OjpOb1dlYkFjdGlvbjsKK30KKworI2RlZmluZSBNQVBfQURBUFRFUl9BQ1RJT05fRlJPTV9XRUJB
Q1RJT05fRVFVSVZBTEVOVChOYW1lLCBWYWx1ZSkgXAorICAgIGNhc2UgUVdlYlBhZ2U6Ok5hbWU6
IHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6Ok5hbWUKKworc3RhdGljIFFXZWJQYWdlQWRhcHRlcjo6
TWVudUFjdGlvbiBhZGFwdGVyTWVudUFjdGlvbkZvcldlYkFjdGlvbihRV2ViUGFnZTo6V2ViQWN0
aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAgICBGT1JfRUFDSF9N
QVBQRURfTUVOVV9BQ1RJT04oTUFQX0FEQVBURVJfQUNUSU9OX0ZST01fV0VCQUNUSU9OX0VRVUlW
QUxFTlQsIFNFTUlDT0xPTl9TRVBBUkFUT1IpOworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
Y2FzZSBRV2ViUGFnZTo6SW5zcGVjdEVsZW1lbnQ6IHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6Oklu
c3BlY3RFbGVtZW50OworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gUVdlYlBhZ2VBZGFw
dGVyOjpOb0FjdGlvbjsKK30KKworI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQordHlwZWRlZiBR
V2ViUGFnZUFkYXB0ZXI6Ok1lbnVJdGVtRGVzY3JpcHRpb24gTWVudUl0ZW07CitRTWVudSAqY3Jl
YXRlQ29udGV4dE1lbnUoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFMaXN0PE1lbnVJdGVtPiYgaXRl
bXMsIFFCaXRBcnJheSAqdmlzaXRlZFdlYkFjdGlvbnMpCit7CisgICAgaWYgKGl0ZW1zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBRTWVudSogbWVudSA9IG5ldyBRTWVudShw
YWdlLT52aWV3KCkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMuY291bnQoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IE1lbnVJdGVtICZpdGVtID0gaXRlbXMuYXQoaSk7CisgICAgICAg
IHN3aXRjaCAoaXRlbS50eXBlKSB7CisgICAgICAgIGNhc2UgTWVudUl0ZW06OkFjdGlvbjogewor
ICAgICAgICAgICAgUVdlYlBhZ2U6OldlYkFjdGlvbiBhY3Rpb24gPSB3ZWJBY3Rpb25Gb3JBZGFw
dGVyTWVudUFjdGlvbihpdGVtLmFjdGlvbik7CisgICAgICAgICAgICBRQWN0aW9uICphID0gcGFn
ZS0+YWN0aW9uKGFjdGlvbik7CisgICAgICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgICAg
IGEtPnNldEVuYWJsZWQoaXRlbS50cmFpdHMgJiBNZW51SXRlbTo6RW5hYmxlZCk7CisgICAgICAg
ICAgICAgICAgYS0+c2V0Q2hlY2thYmxlKGl0ZW0udHJhaXRzICYgTWVudUl0ZW06OkNoZWNrYWJs
ZSk7CisgICAgICAgICAgICAgICAgYS0+c2V0Q2hlY2tlZChpdGVtLnRyYWl0cyAmIE1lbnVJdGVt
OjpDaGVja2VkKTsKKworICAgICAgICAgICAgICAgIG1lbnUtPmFkZEFjdGlvbihhKTsKKyAgICAg
ICAgICAgICAgICB2aXNpdGVkV2ViQWN0aW9ucy0+c2V0Qml0KGFjdGlvbik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIE1lbnVJdGVt
OjpTZXBhcmF0b3I6CisgICAgICAgICAgICBtZW51LT5hZGRTZXBhcmF0b3IoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE1lbnVJdGVtOjpTdWJNZW51OiB7CisgICAgICAgICAg
ICBRTWVudSAqc3ViTWVudSA9IGNyZWF0ZUNvbnRleHRNZW51KHBhZ2UsIGl0ZW0uc3ViTWVudSwg
dmlzaXRlZFdlYkFjdGlvbnMpOworICAgICAgICAgICAgUV9BU1NFUlQoc3ViTWVudSk7CisKKyAg
ICAgICAgICAgIGJvb2wgYW55RW5hYmxlZEFjdGlvbiA9IGZhbHNlOworCisgICAgICAgICAgICBR
TGlzdDxRQWN0aW9uICo+IGFjdGlvbnMgPSBzdWJNZW51LT5hY3Rpb25zKCk7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFjdGlvbnMuY291bnQoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGFjdGlvbnMuYXQoaSktPmlzVmlzaWJsZSgpKQorICAgICAgICAgICAgICAgICAg
ICBhbnlFbmFibGVkQWN0aW9uIHw9IGFjdGlvbnMuYXQoaSktPmlzRW5hYmxlZCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBkb24ndCBzaG93IHN1Yi1tZW51cyB3aXRoIGp1c3Qg
ZGlzYWJsZWQgYWN0aW9ucworICAgICAgICAgICAgaWYgKGFueUVuYWJsZWRBY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBzdWJNZW51LT5zZXRUaXRsZShpdGVtLnN1Yk1lbnVUaXRsZSk7CisgICAg
ICAgICAgICAgICAgbWVudS0+YWRkQWN0aW9uKHN1Yk1lbnUtPm1lbnVBY3Rpb24oKSk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBkZWxldGUgc3ViTWVudTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1lbnU7
Cit9CisjZW5kaWYgLy8gUVRfTk9fQ09OVEVYVE1FTlUKKwordm9pZCBRV2ViUGFnZVByaXZhdGU6
OmNyZWF0ZUFuZFNldEN1cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRlbURlc2Ny
aXB0aW9uPiYgaXRlbXMsIFFCaXRBcnJheSogdmlzaXRlZFdlYkFjdGlvbnMpCit7CisjaWZuZGVm
IFFUX05PX0NPTlRFWFRNRU5VCisgICAgZGVsZXRlIGN1cnJlbnRDb250ZXh0TWVudS5kYXRhKCk7
CisKKyAgICBjdXJyZW50Q29udGV4dE1lbnUgPSBjcmVhdGVDb250ZXh0TWVudShxLCBpdGVtcywg
dmlzaXRlZFdlYkFjdGlvbnMpOworI2Vsc2UKKyAgICBRX1VOVVNFRChtZW51RGVzY3JpcHRpb24p
OworICAgIFFfVU5VU0VEKHZpc2l0ZWRXZWJBY3Rpb25zKTsKKyNlbmRpZiAvLyBRVF9OT19DT05U
RVhUTUVOVQorfQorCisjaWZuZGVmIFFUX05PX0FDVElPTgordm9pZCBRV2ViUGFnZVByaXZhdGU6
Ol9xX3dlYkFjdGlvblRyaWdnZXJlZChib29sIGNoZWNrZWQpCit7CisgICAgUUFjdGlvbiAqYSA9
IHFvYmplY3RfY2FzdDxRQWN0aW9uICo+KHEtPnNlbmRlcigpKTsKKyAgICBpZiAoIWEpCisgICAg
ICAgIHJldHVybjsKKyAgICBRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0
PFFXZWJQYWdlOjpXZWJBY3Rpb24+KGEtPmRhdGEoKS50b0ludCgpKTsKKyAgICBxLT50cmlnZ2Vy
QWN0aW9uKGFjdGlvbiwgY2hlY2tlZCk7Cit9CisjZW5kaWYgLy8gUVRfTk9fQUNUSU9OCisKK3Zv
aWQgUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OldlYkFjdGlvbiBhY3Rp
b24pCit7CisjaWZkZWYgUVRfTk9fQUNUSU9OCisgICAgUV9VTlVTRUQoYWN0aW9uKQorI2Vsc2UK
KyAgICBRQWN0aW9uICphID0gYWN0aW9uc1thY3Rpb25dOworICAgIGlmICghYSB8fCAhbWFpbkZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGVuYWJsZWQgPSBhLT5pc0VuYWJsZWQo
KTsKKyAgICBib29sIGNoZWNrZWQgPSBhLT5pc0NoZWNrZWQoKTsKKworICAgIFFXZWJQYWdlQWRh
cHRlcjo6TWVudUFjdGlvbiBtYXBwZWRBY3Rpb24gPSBRV2ViUGFnZUFkYXB0ZXI6Ok5vQWN0aW9u
OworICAgIGNvbnN0IGNoYXIqIGNvbW1hbmROYW1lID0gMDsKKworICAgIHN3aXRjaCAoYWN0aW9u
KSB7CisgICAgY2FzZSBRV2ViUGFnZTo6QmFjazoKKyAgICBjYXNlIFFXZWJQYWdlOjpGb3J3YXJk
OgorICAgIGNhc2UgUVdlYlBhZ2U6OlN0b3A6CisgICAgY2FzZSBRV2ViUGFnZTo6UmVsb2FkOgor
ICAgIGNhc2UgUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0OgorICAgIGNhc2UgUVdl
YlBhZ2U6OlNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKKyAgICBjYXNlIFFXZWJQYWdlOjpT
ZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6CisgICAgICAgIG1hcHBlZEFjdGlvbiA9IGFkYXB0
ZXJNZW51QWN0aW9uRm9yV2ViQWN0aW9uKGFjdGlvbik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUVdlYlBhZ2U6OlJlbG9hZEFuZEJ5cGFzc0NhY2hlOiAvLyBNYW51YWwgbWFwcGluZworICAg
ICAgICBtYXBwZWRBY3Rpb24gPSBRV2ViUGFnZUFkYXB0ZXI6OlJlbG9hZDsKKyAgICAgICAgYnJl
YWs7CisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgIGNhc2UgUVdlYlBhZ2U6OlVuZG86Cisg
ICAgY2FzZSBRV2ViUGFnZTo6UmVkbzoKKyAgICAgICAgLy8gdGhvc2UgdHdvIGFyZSBoYW5kbGVk
IGJ5IFFVbmRvU3RhY2sKKyAgICAgICAgYnJlYWs7CisjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNL
CisgICAgY2FzZSBRV2ViUGFnZTo6U2VsZWN0QWxsOiAvLyBlZGl0b3IgY29tbWFuZCBpcyBhbHdh
eXMgZW5hYmxlZAorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIC8vIHNl
ZSBpZiBpdCdzIGFuIGVkaXRvciBjb21tYW5kCisgICAgICAgIGNvbW1hbmROYW1lID0gZWRpdG9y
Q29tbWFuZEZvcldlYkFjdGlvbnMoYWN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IH0KKyAgICBpZiAobWFwcGVkQWN0aW9uICE9IFFXZWJQYWdlQWRhcHRlcjo6Tm9BY3Rpb24gfHwg
Y29tbWFuZE5hbWUpCisgICAgICAgIHVwZGF0ZUFjdGlvbkludGVybmFsKG1hcHBlZEFjdGlvbiwg
Y29tbWFuZE5hbWUsICZlbmFibGVkLCAmY2hlY2tlZCk7CisKKyAgICBhLT5zZXRFbmFibGVkKGVu
YWJsZWQpOworCisgICAgaWYgKGEtPmlzQ2hlY2thYmxlKCkpCisgICAgICAgIGEtPnNldENoZWNr
ZWQoY2hlY2tlZCk7CisjZW5kaWYgLy8gUVRfTk9fQUNUSU9OCit9CisKK3ZvaWQgUVdlYlBhZ2VQ
cml2YXRlOjp1cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpCit7CisgICAgdXBkYXRlQWN0aW9uKFFX
ZWJQYWdlOjpCYWNrKTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OkZvcndhcmQpOworICAg
IHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6U3RvcCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdl
OjpSZWxvYWQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6UmVsb2FkQW5kQnlwYXNzQ2Fj
aGUpOworfQorCitRT2JqZWN0ICpRV2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckhhbmRsZSgpCit7
CisgICAgcmV0dXJuIGdldE9yQ3JlYXRlSW5zcGVjdG9yKCk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VQ
cml2YXRlOjpzZXRJbnNwZWN0b3JGcm9udGVuZChRT2JqZWN0KiBmcm9udGVuZCkKK3sKKyAgICBp
bnNwZWN0b3JGcm9udGVuZCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4oZnJvbnRlbmQpOworICAg
IGlmIChpbnNwZWN0b3IpCisgICAgICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoZnJvbnRl
bmQpOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6c2V0SW5zcGVjdG9yV2luZG93VGl0bGUo
Y29uc3QgUVN0cmluZyYgdGl0bGUpCit7CisgICAgaWYgKGluc3BlY3RvcikKKyAgICAgICAgaW5z
cGVjdG9yLT5zZXRXaW5kb3dUaXRsZSh0aXRsZSk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRl
OjpjcmVhdGVXZWJJbnNwZWN0b3IoUU9iamVjdCoqIGluc3BlY3RvclZpZXcsIFFXZWJQYWdlQWRh
cHRlcioqIGluc3BlY3RvclBhZ2UpCit7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgV2ViS2l0
OjpJbnNwZWN0b3JDbGllbnRXZWJQYWdlOworICAgICppbnNwZWN0b3JWaWV3ID0gcGFnZS0+dmll
dygpOworICAgICppbnNwZWN0b3JQYWdlID0gcGFnZS0+ZDsKK30KKworI2lmbmRlZiBRVF9OT19N
RU5VCitzdGF0aWMgUVN0cmluZ0xpc3QgaXRlcmF0ZUNvbnRleHRNZW51KFFNZW51KiBtZW51KQor
eworICAgIGlmICghbWVudSkKKyAgICAgICAgcmV0dXJuIFFTdHJpbmdMaXN0KCk7CisKKyAgICBR
U3RyaW5nTGlzdCBpdGVtczsKKyAgICBRTGlzdDxRQWN0aW9uICo+IGFjdGlvbnMgPSBtZW51LT5h
Y3Rpb25zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhY3Rpb25zLmNvdW50KCk7ICsraSkg
eworICAgICAgICBpZiAoYWN0aW9ucy5hdChpKS0+aXNTZXBhcmF0b3IoKSkKKyAgICAgICAgICAg
IGl0ZW1zIDw8IFFMYXRpbjFTdHJpbmcoIjxzZXBhcmF0b3I+Iik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGl0ZW1zIDw8IGFjdGlvbnMuYXQoaSktPnRleHQoKTsKKyAgICAgICAgaWYgKGFj
dGlvbnMuYXQoaSktPm1lbnUoKSkKKyAgICAgICAgICAgIGl0ZW1zIDw8IGl0ZXJhdGVDb250ZXh0
TWVudShhY3Rpb25zLmF0KGkpLT5tZW51KCkpOworICAgIH0KKyAgICByZXR1cm4gaXRlbXM7Cit9
CisjZW5kaWYKKworUVN0cmluZ0xpc3QgUVdlYlBhZ2VQcml2YXRlOjptZW51QWN0aW9uc0FzVGV4
dCgpCit7CisjaWZuZGVmIFFUX05PX01FTlUKKyAgICByZXR1cm4gaXRlcmF0ZUNvbnRleHRNZW51
KGN1cnJlbnRDb250ZXh0TWVudS5kYXRhKCkpOworI2Vsc2UKKyAgICByZXR1cm4gUVN0cmluZ0xp
c3QoKTsKKyNlbmRpZgorfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6ZW1pdFZpZXdwb3J0Q2hh
bmdlUmVxdWVzdGVkKCkKK3sKKyAgICBlbWl0IHEtPnZpZXdwb3J0Q2hhbmdlUmVxdWVzdGVkKCk7
Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVFZGl0b3JBY3Rpb25zKCkKK3sKKyAg
ICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OkN1dCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdl
OjpDb3B5KTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OlBhc3RlKTsKKyAgICB1cGRhdGVB
Y3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb05leHRDaGFyKTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBh
Z2U6Ok1vdmVUb1ByZXZpb3VzQ2hhcik7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpNb3Zl
VG9OZXh0V29yZCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9QcmV2aW91c1dv
cmQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dExpbmUpOworICAgIHVw
ZGF0ZUFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJldmlvdXNMaW5lKTsKKyAgICB1cGRhdGVBY3Rp
b24oUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZMaW5lKTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBh
Z2U6Ok1vdmVUb0VuZE9mTGluZSk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9T
dGFydE9mQmxvY2spOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6TW92ZVRvRW5kT2ZCbG9j
ayk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9TdGFydE9mRG9jdW1lbnQpOwor
ICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6TW92ZVRvRW5kT2ZEb2N1bWVudCk7CisgICAgdXBk
YXRlQWN0aW9uKFFXZWJQYWdlOjpTZWxlY3ROZXh0Q2hhcik7CisgICAgdXBkYXRlQWN0aW9uKFFX
ZWJQYWdlOjpTZWxlY3RQcmV2aW91c0NoYXIpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6
U2VsZWN0TmV4dFdvcmQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6U2VsZWN0UHJldmlv
dXNXb3JkKTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdE5leHRMaW5lKTsKKyAg
ICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzTGluZSk7CisgICAgdXBkYXRl
QWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RTdGFydE9mTGluZSk7CisgICAgdXBkYXRlQWN0aW9uKFFX
ZWJQYWdlOjpTZWxlY3RFbmRPZkxpbmUpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6U2Vs
ZWN0U3RhcnRPZkJsb2NrKTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEVuZE9m
QmxvY2spOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6U2VsZWN0U3RhcnRPZkRvY3VtZW50
KTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEVuZE9mRG9jdW1lbnQpOworICAg
IHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6RGVsZXRlU3RhcnRPZldvcmQpOworICAgIHVwZGF0ZUFj
dGlvbihRV2ViUGFnZTo6RGVsZXRlRW5kT2ZXb3JkKTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBh
Z2U6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0KTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6
OlNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdl
OjpTZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFn
ZTo6VG9nZ2xlQm9sZCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVJdGFsaWMp
OworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlVW5kZXJsaW5lKTsKKyAgICB1cGRh
dGVBY3Rpb24oUVdlYlBhZ2U6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcik7CisgICAgdXBkYXRl
QWN0aW9uKFFXZWJQYWdlOjpJbnNlcnRMaW5lU2VwYXJhdG9yKTsKKyAgICB1cGRhdGVBY3Rpb24o
UVdlYlBhZ2U6OlBhc3RlQW5kTWF0Y2hTdHlsZSk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdl
OjpSZW1vdmVGb3JtYXQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlU3RyaWtl
dGhyb3VnaCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVTdWJzY3JpcHQpOwor
ICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlU3VwZXJzY3JpcHQpOworICAgIHVwZGF0
ZUFjdGlvbihRV2ViUGFnZTo6SW5zZXJ0VW5vcmRlcmVkTGlzdCk7CisgICAgdXBkYXRlQWN0aW9u
KFFXZWJQYWdlOjpJbnNlcnRPcmRlcmVkTGlzdCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdl
OjpJbmRlbnQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6T3V0ZGVudCk7CisgICAgdXBk
YXRlQWN0aW9uKFFXZWJQYWdlOjpBbGlnbkNlbnRlcik7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQ
YWdlOjpBbGlnbkp1c3RpZmllZCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpBbGlnbkxl
ZnQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6QWxpZ25SaWdodCk7Cit9CisKK3ZvaWQg
UVdlYlBhZ2VQcml2YXRlOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50ICpldikKK3sKKyAgICBpbnQg
dGltZXJJZCA9IGV2LT50aW1lcklkKCk7CisgICAgaWYgKHRpbWVySWQgPT0gdHJpcGxlQ2xpY2tU
aW1lci50aW1lcklkKCkpCisgICAgICAgIHRyaXBsZUNsaWNrVGltZXIuc3RvcCgpOworICAgIGVs
c2UKKyAgICAgICAgcS0+dGltZXJFdmVudChldik7Cit9CisKK2Jvb2wgUVdlYlBhZ2VQcml2YXRl
OjpyZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVN0eWxl
OjpSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKGNsaWVudC0+c3R5bGUoKS0+c3R5bGVIaW50KFFT
dHlsZTo6U0hfUmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5lbCkpID09IFFTdHlsZTo6UlNJUF9Pbk1v
dXNlQ2xpY2s7Cit9CisKKyNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKK3ZvaWQgUVdlYlBhZ2VQ
cml2YXRlOjpjb250ZXh0TWVudUV2ZW50KGNvbnN0IFFQb2ludCYgZ2xvYmFsUG9zKQoreworICAg
IFFNZW51ICptZW51ID0gcS0+Y3JlYXRlU3RhbmRhcmRDb250ZXh0TWVudSgpOworICAgIGlmICht
ZW51KSB7CisgICAgICAgIG1lbnUtPmV4ZWMoZ2xvYmFsUG9zKTsKKyAgICAgICAgZGVsZXRlIG1l
bnU7CisgICAgfQorfQorI2VuZGlmIC8vIFFUX05PX0NPTlRFWFRNRU5VCisKKy8qIQorICAgIFxz
aW5jZSA0LjUKKyAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhlIHN0YW5kYXJkIGNvbnRleHQg
bWVudSB3aGljaCBpcyBzaG93biB3aGVuCisgICAgdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSB3ZWIg
cGFnZSB3aXRoIHRoZSByaWdodCBtb3VzZSBidXR0b24uIEl0IGlzCisgICAgY2FsbGVkIGZyb20g
dGhlIGRlZmF1bHQgY29udGV4dE1lbnVFdmVudCgpIGhhbmRsZXIuIFRoZSBwb3B1cCBtZW51J3MK
KyAgICBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGNhbGxlci4KKyAqLworUU1lbnUg
KlFXZWJQYWdlOjpjcmVhdGVTdGFuZGFyZENvbnRleHRNZW51KCkKK3sKKyNpZm5kZWYgUVRfTk9f
Q09OVEVYVE1FTlUKKyAgICBRTWVudSogbWVudSA9IGQtPmN1cnJlbnRDb250ZXh0TWVudS5kYXRh
KCk7CisgICAgZC0+Y3VycmVudENvbnRleHRNZW51ID0gMDsKKyAgICByZXR1cm4gbWVudTsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworI2lmbmRlZiBRVF9OT19TSE9SVENVVAor
UVdlYlBhZ2U6OldlYkFjdGlvbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2
ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgc3RhdGljIHN0cnVjdCB7CisgICAgICAgIFFL
ZXlTZXF1ZW5jZTo6U3RhbmRhcmRLZXkgc3RhbmRhcmRLZXk7CisgICAgICAgIFFXZWJQYWdlOjpX
ZWJBY3Rpb24gYWN0aW9uOworICAgIH0gZWRpdG9yQWN0aW9uc1tdID0geworICAgICAgICB7IFFL
ZXlTZXF1ZW5jZTo6Q3V0LCBRV2ViUGFnZTo6Q3V0IH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNl
OjpDb3B5LCBRV2ViUGFnZTo6Q29weSB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6UGFzdGUs
IFFXZWJQYWdlOjpQYXN0ZSB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6VW5kbywgUVdlYlBh
Z2U6OlVuZG8gfSwKKyAgICAgICAgeyBRS2V5U2VxdWVuY2U6OlJlZG8sIFFXZWJQYWdlOjpSZWRv
IH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNlOjpNb3ZlVG9OZXh0Q2hhciwgUVdlYlBhZ2U6Ok1v
dmVUb05leHRDaGFyIH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNlOjpNb3ZlVG9QcmV2aW91c0No
YXIsIFFXZWJQYWdlOjpNb3ZlVG9QcmV2aW91c0NoYXIgfSwKKyAgICAgICAgeyBRS2V5U2VxdWVu
Y2U6Ok1vdmVUb05leHRXb3JkLCBRV2ViUGFnZTo6TW92ZVRvTmV4dFdvcmQgfSwKKyAgICAgICAg
eyBRS2V5U2VxdWVuY2U6Ok1vdmVUb1ByZXZpb3VzV29yZCwgUVdlYlBhZ2U6Ok1vdmVUb1ByZXZp
b3VzV29yZCB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6TW92ZVRvTmV4dExpbmUsIFFXZWJQ
YWdlOjpNb3ZlVG9OZXh0TGluZSB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6TW92ZVRvUHJl
dmlvdXNMaW5lLCBRV2ViUGFnZTo6TW92ZVRvUHJldmlvdXNMaW5lIH0sCisgICAgICAgIHsgUUtl
eVNlcXVlbmNlOjpNb3ZlVG9TdGFydE9mTGluZSwgUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZMaW5l
IH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNlOjpNb3ZlVG9FbmRPZkxpbmUsIFFXZWJQYWdlOjpN
b3ZlVG9FbmRPZkxpbmUgfSwKKyAgICAgICAgeyBRS2V5U2VxdWVuY2U6Ok1vdmVUb1N0YXJ0T2ZC
bG9jaywgUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZCbG9jayB9LAorICAgICAgICB7IFFLZXlTZXF1
ZW5jZTo6TW92ZVRvRW5kT2ZCbG9jaywgUVdlYlBhZ2U6Ok1vdmVUb0VuZE9mQmxvY2sgfSwKKyAg
ICAgICAgeyBRS2V5U2VxdWVuY2U6Ok1vdmVUb1N0YXJ0T2ZEb2N1bWVudCwgUVdlYlBhZ2U6Ok1v
dmVUb1N0YXJ0T2ZEb2N1bWVudCB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6TW92ZVRvRW5k
T2ZEb2N1bWVudCwgUVdlYlBhZ2U6Ok1vdmVUb0VuZE9mRG9jdW1lbnQgfSwKKyAgICAgICAgeyBR
S2V5U2VxdWVuY2U6OlNlbGVjdE5leHRDaGFyLCBRV2ViUGFnZTo6U2VsZWN0TmV4dENoYXIgfSwK
KyAgICAgICAgeyBRS2V5U2VxdWVuY2U6OlNlbGVjdFByZXZpb3VzQ2hhciwgUVdlYlBhZ2U6OlNl
bGVjdFByZXZpb3VzQ2hhciB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6U2VsZWN0TmV4dFdv
cmQsIFFXZWJQYWdlOjpTZWxlY3ROZXh0V29yZCB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6
U2VsZWN0UHJldmlvdXNXb3JkLCBRV2ViUGFnZTo6U2VsZWN0UHJldmlvdXNXb3JkIH0sCisgICAg
ICAgIHsgUUtleVNlcXVlbmNlOjpTZWxlY3ROZXh0TGluZSwgUVdlYlBhZ2U6OlNlbGVjdE5leHRM
aW5lIH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNlOjpTZWxlY3RQcmV2aW91c0xpbmUsIFFXZWJQ
YWdlOjpTZWxlY3RQcmV2aW91c0xpbmUgfSwKKyAgICAgICAgeyBRS2V5U2VxdWVuY2U6OlNlbGVj
dFN0YXJ0T2ZMaW5lLCBRV2ViUGFnZTo6U2VsZWN0U3RhcnRPZkxpbmUgfSwKKyAgICAgICAgeyBR
S2V5U2VxdWVuY2U6OlNlbGVjdEVuZE9mTGluZSwgUVdlYlBhZ2U6OlNlbGVjdEVuZE9mTGluZSB9
LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6U2VsZWN0U3RhcnRPZkJsb2NrLCBRV2ViUGFnZTo6
U2VsZWN0U3RhcnRPZkJsb2NrIH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNlOjpTZWxlY3RFbmRP
ZkJsb2NrLCAgUVdlYlBhZ2U6OlNlbGVjdEVuZE9mQmxvY2sgfSwKKyAgICAgICAgeyBRS2V5U2Vx
dWVuY2U6OlNlbGVjdFN0YXJ0T2ZEb2N1bWVudCwgUVdlYlBhZ2U6OlNlbGVjdFN0YXJ0T2ZEb2N1
bWVudCB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6U2VsZWN0RW5kT2ZEb2N1bWVudCwgUVdl
YlBhZ2U6OlNlbGVjdEVuZE9mRG9jdW1lbnQgfSwKKyAgICAgICAgeyBRS2V5U2VxdWVuY2U6OkRl
bGV0ZVN0YXJ0T2ZXb3JkLCBRV2ViUGFnZTo6RGVsZXRlU3RhcnRPZldvcmQgfSwKKyAgICAgICAg
eyBRS2V5U2VxdWVuY2U6OkRlbGV0ZUVuZE9mV29yZCwgUVdlYlBhZ2U6OkRlbGV0ZUVuZE9mV29y
ZCB9LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yLCBR
V2ViUGFnZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yIH0sCisgICAgICAgIHsgUUtleVNlcXVl
bmNlOjpJbnNlcnRMaW5lU2VwYXJhdG9yLCBRV2ViUGFnZTo6SW5zZXJ0TGluZVNlcGFyYXRvciB9
LAorICAgICAgICB7IFFLZXlTZXF1ZW5jZTo6U2VsZWN0QWxsLCBRV2ViUGFnZTo6U2VsZWN0QWxs
IH0sCisgICAgICAgIHsgUUtleVNlcXVlbmNlOjpVbmtub3duS2V5LCBRV2ViUGFnZTo6Tm9XZWJB
Y3Rpb24gfQorICAgIH07CisKKyAgICBmb3IgKGludCBpID0gMDsgZWRpdG9yQWN0aW9uc1tpXS5z
dGFuZGFyZEtleSAhPSBRS2V5U2VxdWVuY2U6OlVua25vd25LZXk7ICsraSkKKyAgICAgICAgaWYg
KGV2ZW50ID09IGVkaXRvckFjdGlvbnNbaV0uc3RhbmRhcmRLZXkpCisgICAgICAgICAgICByZXR1
cm4gZWRpdG9yQWN0aW9uc1tpXS5hY3Rpb247CisKKyAgICByZXR1cm4gUVdlYlBhZ2U6Ok5vV2Vi
QWN0aW9uOworfQorI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCisKK3ZvaWQgUVdlYlBhZ2VQcml2
YXRlOjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZXYpCit7CisgICAgLy8gd2UgZm9yd2FyZCB0
aGUga2V5IGV2ZW50IHRvIFdlYkNvcmUgZmlyc3QgdG8gaGFuZGxlIHBvdGVudGlhbCBET00KKyAg
ICAvLyBkZWZpbmVkIGV2ZW50IGhhbmRsZXJzIGFuZCBsYXRlciBvbiBlbmQgdXAgaW4gRWRpdG9y
Q2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKKyAgICAvLyB0byB0cmlnZ2VyIGVkaXRvciBj
b21tYW5kcyB2aWEgdHJpZ2dlckFjdGlvbigpLgorICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZUtl
eUV2ZW50KGV2KTsKKworICAgIGlmICghaGFuZGxlZCkKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRs
ZVNjcm9sbGluZyhldik7CisKKyAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgaGFuZGxlZCA9
IHRydWU7CisgICAgICAgIHN3aXRjaCAoZXYtPmtleSgpKSB7CisgICAgICAgIGNhc2UgUXQ6Oktl
eV9CYWNrOgorICAgICAgICAgICAgcS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6QmFjayk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBRdDo6S2V5X0ZvcndhcmQ6CisgICAgICAg
ICAgICBxLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpGb3J3YXJkKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFF0OjpLZXlfU3RvcDoKKyAgICAgICAgICAgIHEtPnRyaWdnZXJB
Y3Rpb24oUVdlYlBhZ2U6OlN0b3ApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
UXQ6OktleV9SZWZyZXNoOgorICAgICAgICAgICAgcS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6
UmVsb2FkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgaGFuZGxlZCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBldi0+c2V0QWNjZXB0ZWQoaGFuZGxlZCk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2
YXRlOjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50ICpldikKK3sKKyAgICBpZiAoZXYtPmlzQXV0
b1JlcGVhdCgpKSB7CisgICAgICAgIGV2LT5zZXRBY2NlcHRlZCh0cnVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZUtleUV2ZW50KGV2KTsKKyAg
ICBldi0+c2V0QWNjZXB0ZWQoaGFuZGxlZCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQ+Cit2b2lk
IFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ0VudGVyRXZlbnQoVCogZXYpCit7CisjaWZuZGVmIFFUX05P
X0RSQUdBTkREUk9QCisgICAgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uID0gZHJhZ0VudGVyZWQoZXYt
Pm1pbWVEYXRhKCksIFFQb2ludEYoZXYtPnBvcygpKS50b1BvaW50KCksIGV2LT5wb3NzaWJsZUFj
dGlvbnMoKSk7CisgICAgZXYtPnNldERyb3BBY3Rpb24oYWN0aW9uKTsKKyAgICBldi0+YWNjZXB0
UHJvcG9zZWRBY3Rpb24oKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgordm9pZCBR
V2ViUGFnZVByaXZhdGU6OmRyYWdNb3ZlRXZlbnQoVCAqZXYpCit7CisjaWZuZGVmIFFUX05PX0RS
QUdBTkREUk9QCisgICAgbV9sYXN0RHJvcEFjdGlvbiA9IGRyYWdVcGRhdGVkKGV2LT5taW1lRGF0
YSgpLCBRUG9pbnRGKGV2LT5wb3MoKSkudG9Qb2ludCgpLCBldi0+cG9zc2libGVBY3Rpb25zKCkp
OworICAgIGV2LT5zZXREcm9wQWN0aW9uKG1fbGFzdERyb3BBY3Rpb24pOworICAgIGlmIChtX2xh
c3REcm9wQWN0aW9uICE9IFF0OjpJZ25vcmVBY3Rpb24pCisgICAgICAgIGV2LT5hY2NlcHQoKTsK
KyNlbmRpZgorfQorCit0ZW1wbGF0ZTxjbGFzcyBUPgordm9pZCBRV2ViUGFnZVByaXZhdGU6OmRy
b3BFdmVudChUICpldikKK3sKKyNpZm5kZWYgUVRfTk9fRFJBR0FORERST1AKKyAgICBpZiAocGVy
Zm9ybURyYWcoZXYtPm1pbWVEYXRhKCksIFFQb2ludEYoZXYtPnBvcygpKS50b1BvaW50KCksIGV2
LT5wb3NzaWJsZUFjdGlvbnMoKSkpIHsKKyAgICAgICAgZXYtPnNldERyb3BBY3Rpb24obV9sYXN0
RHJvcEFjdGlvbik7CisgICAgICAgIGV2LT5hY2NlcHQoKTsKKyAgICB9CisjZW5kaWYKK30KKwor
dm9pZCBRV2ViUGFnZVByaXZhdGU6OmxlYXZlRXZlbnQoUUV2ZW50KikKK3sKKyAgICAvLyBGYWtl
IGEgbW91c2UgbW92ZSBldmVudCBqdXN0IG91dHNpZGUgb2YgdGhlIHdpZGdldCwgc2luY2UgYWxs
CisgICAgLy8gdGhlIGludGVyZXN0aW5nIG1vdXNlLW91dCBiZWhhdmlvciBsaWtlIGludmFsaWRh
dGluZyBzY3JvbGxiYXJzCisgICAgLy8gaXMgaGFuZGxlZCBieSB0aGUgV2ViS2l0IGV2ZW50IGhh
bmRsZXIncyBtb3VzZU1vdmVkIGZ1bmN0aW9uLgorICAgIFFNb3VzZUV2ZW50IGZha2VFdmVudChR
RXZlbnQ6Ok1vdXNlTW92ZSwgUUN1cnNvcjo6cG9zKCksIFF0OjpOb0J1dHRvbiwgUXQ6Ok5vQnV0
dG9uLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgbW91c2VNb3ZlRXZlbnQoJmZha2VFdmVudCk7Cit9
CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRV2ViUGFnZTo6cGFsZXR0ZQorICAgIFxicmllZiB0aGUg
cGFnZSdzIHBhbGV0dGUKKworICAgIFRoZSBiYXNlIGJydXNoIG9mIHRoZSBwYWxldHRlIGlzIHVz
ZWQgdG8gZHJhdyB0aGUgYmFja2dyb3VuZCBvZiB0aGUgbWFpbiBmcmFtZS4KKworICAgIEJ5IGRl
ZmF1bHQsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgdGhlIGFwcGxpY2F0aW9uJ3MgZGVmYXVsdCBw
YWxldHRlLgorKi8KK3ZvaWQgUVdlYlBhZ2U6OnNldFBhbGV0dGUoY29uc3QgUVBhbGV0dGUgJnBh
bCkKK3sKKyAgICBkLT5wYWxldHRlID0gcGFsOworICAgIGlmICghZC0+bWFpbkZyYW1lIHx8ICFk
LT5tYWluRnJhbWUuZGF0YSgpLT5kLT5oYXNWaWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFFCcnVzaCBicnVzaCA9IHBhbC5icnVzaChRUGFsZXR0ZTo6QmFzZSk7CisgICAgUUNvbG9yIGJh
Y2tncm91bmRDb2xvciA9IGJydXNoLnN0eWxlKCkgPT0gUXQ6OlNvbGlkUGF0dGVybiA/IGJydXNo
LmNvbG9yKCkgOiBRQ29sb3IoKTsKKyAgICBkLT5tYWluRnJhbWUuZGF0YSgpLT5kLT51cGRhdGVC
YWNrZ3JvdW5kUmVjdXJzaXZlbHkoYmFja2dyb3VuZENvbG9yKTsKK30KKworUVBhbGV0dGUgUVdl
YlBhZ2U6OnBhbGV0dGUoKSBjb25zdAoreworICAgIHJldHVybiBkLT5wYWxldHRlOworfQorCit2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6c2hvcnRjdXRPdmVycmlkZUV2ZW50KFFLZXlFdmVudCogZXZl
bnQpCit7CisgICAgaWYgKGhhbmRsZVNob3J0Y3V0T3ZlcnJpZGVFdmVudChldmVudCkpCisgICAg
ICAgIHJldHVybjsKKyNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKKyAgICBpZiAoZWRpdG9yQWN0aW9u
Rm9yS2V5RXZlbnQoZXZlbnQpICE9IFFXZWJQYWdlOjpOb1dlYkFjdGlvbikKKyAgICAgICAgZXZl
bnQtPmFjY2VwdCgpOworI2VuZGlmCisKK30KKworYm9vbCBRV2ViUGFnZVByaXZhdGU6Omdlc3R1
cmVFdmVudChRR2VzdHVyZUV2ZW50KiBldmVudCkKK3sKKyAgICBRV2ViRnJhbWVBZGFwdGVyKiBm
cmFtZSA9IG1haW5GcmFtZS5kYXRhKCktPmQ7CisgICAgaWYgKCFmcmFtZS0+aGFzVmlldygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gUUdlc3R1cmVFdmVudHMgY2FuIGNvbnRhaW4g
dXBkYXRlcyBmb3IgbXVsdGlwbGUgZ2VzdHVyZXMuCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7
CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIC8vIFFHZXN0dXJlRXZlbnQgbGl2ZXMg
aW4gV2lkZ2V0cywgd2UnbGwgbmVlZCBhIGR1bW15IHN0cnVjdCB0byBtdWxlIHRoZSBpbmZvIGl0
IGNvbnRhaW5zIHRvIHRoZSAib3RoZXIgc2lkZSIKKyAgICBRR2VzdHVyZUV2ZW50RmFjYWRlIGdl
c3R1cmVGYWNhZGU7CisKKyAgICBRR2VzdHVyZSogZ2VzdHVyZSA9IGV2ZW50LT5nZXN0dXJlKFF0
OjpUYXBHZXN0dXJlKTsKKyAgICAvLyBCZXdhcmUgdGhhdCBnZXN0dXJlcyBzZW5kIGJ5IER1bXBS
ZW5kZXJUcmVlIHdpbGwgaGF2ZSBzdGF0ZSBRdDo6Tm9HZXN0dXJlLAorICAgIC8vIGR1ZSB0byBu
b3Qgb3JpZ2luYXRpbmcgZnJvbSBhIEdlc3R1cmVSZWNvZ25pemVyLgorICAgIGlmIChnZXN0dXJl
ICYmIChnZXN0dXJlLT5zdGF0ZSgpID09IFF0OjpHZXN0dXJlU3RhcnRlZCB8fCBnZXN0dXJlLT5z
dGF0ZSgpID09IFF0OjpOb0dlc3R1cmUpKSB7CisgICAgICAgIGdlc3R1cmVGYWNhZGUudHlwZSA9
IFF0OjpUYXBHZXN0dXJlOworICAgICAgICBRUG9pbnRGIGdsb2JhbFBvcyA9IHN0YXRpY19jYXN0
PGNvbnN0IFFUYXBHZXN0dXJlKj4oZ2VzdHVyZSktPnBvc2l0aW9uKCk7CisgICAgICAgIGdlc3R1
cmVGYWNhZGUuZ2xvYmFsUG9zID0gZ2xvYmFsUG9zLnRvUG9pbnQoKTsKKyAgICAgICAgZ2VzdHVy
ZUZhY2FkZS5wb3MgPSBldmVudC0+d2lkZ2V0KCktPm1hcEZyb21HbG9iYWwoZ2xvYmFsUG9zLnRv
UG9pbnQoKSk7CisgICAgICAgIGZyYW1lLT5oYW5kbGVHZXN0dXJlRXZlbnQoJmdlc3R1cmVGYWNh
ZGUpOworICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgZ2VzdHVyZSA9IGV2ZW50
LT5nZXN0dXJlKFF0OjpUYXBBbmRIb2xkR2VzdHVyZSk7CisgICAgaWYgKGdlc3R1cmUgJiYgKGdl
c3R1cmUtPnN0YXRlKCkgPT0gUXQ6Okdlc3R1cmVTdGFydGVkIHx8IGdlc3R1cmUtPnN0YXRlKCkg
PT0gUXQ6Ok5vR2VzdHVyZSkpIHsKKyAgICAgICAgZ2VzdHVyZUZhY2FkZS50eXBlID0gUXQ6OlRh
cEFuZEhvbGRHZXN0dXJlOworICAgICAgICBRUG9pbnRGIGdsb2JhbFBvcyA9IHN0YXRpY19jYXN0
PGNvbnN0IFFUYXBBbmRIb2xkR2VzdHVyZSo+KGdlc3R1cmUpLT5wb3NpdGlvbigpOworICAgICAg
ICBnZXN0dXJlRmFjYWRlLmdsb2JhbFBvcyA9IGdsb2JhbFBvcy50b1BvaW50KCk7CisgICAgICAg
IGdlc3R1cmVGYWNhZGUucG9zID0gZXZlbnQtPndpZGdldCgpLT5tYXBGcm9tR2xvYmFsKGdsb2Jh
bFBvcy50b1BvaW50KCkpOworICAgICAgICBmcmFtZS0+aGFuZGxlR2VzdHVyZUV2ZW50KCZnZXN0
dXJlRmFjYWRlKTsKKyAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKKworICAgIGV2ZW50LT5zZXRBY2NlcHRlZChoYW5kbGVkKTsK
KyAgICByZXR1cm4gaGFuZGxlZDsKK30KKworLyohCisgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkg
dGhlIGlucHV0IG1ldGhvZCB0byBxdWVyeSBhIHNldCBvZiBwcm9wZXJ0aWVzIG9mIHRoZSBwYWdl
CisgIHRvIGJlIGFibGUgdG8gc3VwcG9ydCBjb21wbGV4IGlucHV0IG1ldGhvZCBvcGVyYXRpb25z
IGFzIHN1cHBvcnQgZm9yIHN1cnJvdW5kaW5nCisgIHRleHQgYW5kIHJlY29udmVyc2lvbnMuCisK
KyAgXGEgcHJvcGVydHkgc3BlY2lmaWVzIHdoaWNoIHByb3BlcnR5IGlzIHF1ZXJpZWQuCisKKyAg
XHNhIFFXaWRnZXQ6OmlucHV0TWV0aG9kRXZlbnQoKSwgUUlucHV0TWV0aG9kRXZlbnQsIFFJbnB1
dENvbnRleHQKKyovCitRVmFyaWFudCBRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeShRdDo6SW5w
dXRNZXRob2RRdWVyeSBwcm9wZXJ0eSkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+aW5wdXRNZXRo
b2RRdWVyeShwcm9wZXJ0eSk7Cit9CisKKy8qIQorICAgIFxpbnRlcm5hbAorKi8KK3ZvaWQgUVdl
YlBhZ2VQcml2YXRlOjpzZXRJbnNwZWN0b3IoUVdlYkluc3BlY3RvciogaW5zcCkKK3sKKyAgICBp
ZiAoaW5zcGVjdG9yKQorICAgICAgICBpbnNwZWN0b3ItPmQtPnNldEZyb250ZW5kKDApOworCisg
ICAgaW5zcGVjdG9yID0gaW5zcDsKKworICAgIC8vIEdpdmUgaW5zcGVjdG9yIGZyb250ZW5kIHdl
YiB2aWV3IGlmIHByZXZpb3VzbHkgY3JlYXRlZAorICAgIGlmIChpbnNwZWN0b3IgJiYgaW5zcGVj
dG9yRnJvbnRlbmQpCisgICAgICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoaW5zcGVjdG9y
RnJvbnRlbmQpOworfQorCisvKiEKKyAgICBcaW50ZXJuYWwKKyAgICBSZXR1cm5zIHRoZSBpbnNw
ZWN0b3IgYW5kIGNyZWF0ZXMgaXQgaWYgaXQgd2Fzbid0IGNyZWF0ZWQgeWV0LgorICAgIFRoZSBp
bnN0YW5jZSBjcmVhdGVkIGhlcmUgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHRocm91Z2ggUVdlYlBh
Z2UncyBBUEkuCisqLworUVdlYkluc3BlY3RvciogUVdlYlBhZ2VQcml2YXRlOjpnZXRPckNyZWF0
ZUluc3BlY3RvcigpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoIWluc3BlY3Rv
cikgeworICAgICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwID0gbmV3IFFXZWJJbnNwZWN0b3I7Cisg
ICAgICAgIGluc3AtPnNldFBhZ2UocSk7CisgICAgICAgIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5
ID0gdHJ1ZTsKKworICAgICAgICBRX0FTU0VSVChpbnNwZWN0b3IpOyAvLyBBc3NvY2lhdGVkIHRo
cm91Z2ggUVdlYkluc3BlY3Rvcjo6c2V0UGFnZShxKQorICAgIH0KKyNlbmRpZgorICAgIHJldHVy
biBpbnNwZWN0b3I7Cit9CisKKy8qIQorICAgXGVudW0gUVdlYlBhZ2U6OkZpbmRGbGFnCisKKyAg
IFRoaXMgZW51bSBkZXNjcmliZXMgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIHRoZSBmaW5kVGV4
dCgpIGZ1bmN0aW9uLiBUaGUgb3B0aW9ucworICAgY2FuIGJlIE9SLWVkIHRvZ2V0aGVyIGZyb20g
dGhlIGZvbGxvd2luZyBsaXN0OgorCisgICBcdmFsdWUgRmluZEJhY2t3YXJkIFNlYXJjaGVzIGJh
Y2t3YXJkcyBpbnN0ZWFkIG9mIGZvcndhcmRzLgorICAgXHZhbHVlIEZpbmRDYXNlU2Vuc2l0aXZl
bHkgQnkgZGVmYXVsdCBmaW5kVGV4dCgpIHdvcmtzIGNhc2UgaW5zZW5zaXRpdmUuIFNwZWNpZnlp
bmcgdGhpcyBvcHRpb24KKyAgIGNoYW5nZXMgdGhlIGJlaGF2aW91ciB0byBhIGNhc2Ugc2Vuc2l0
aXZlIGZpbmQgb3BlcmF0aW9uLgorICAgXHZhbHVlIEZpbmRXcmFwc0Fyb3VuZERvY3VtZW50IE1h
a2VzIGZpbmRUZXh0KCkgcmVzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50
IGlmIHRoZSBlbmQKKyAgIHdhcyByZWFjaGVkIGFuZCB0aGUgdGV4dCB3YXMgbm90IGZvdW5kLgor
ICAgXHZhbHVlIEhpZ2hsaWdodEFsbE9jY3VycmVuY2VzIEhpZ2hsaWdodHMgYWxsIGV4aXN0aW5n
IG9jY3VycmVuY2VzIG9mIGEgc3BlY2lmaWMgc3RyaW5nLgorICAgICAgIChUaGlzIHZhbHVlIHdh
cyBpbnRyb2R1Y2VkIGluIDQuNi4pCisgICBcdmFsdWUgRmluZEF0V29yZEJlZ2lubmluZ3NPbmx5
IFNlYXJjaGVzIGZvciB0aGUgc3ViLXN0cmluZyBvbmx5IGF0IHRoZSBiZWdpbm5pbmdzIG9mIHdv
cmRzLgorICAgICAgIChUaGlzIHZhbHVlIHdhcyBpbnRyb2R1Y2VkIGluIDUuMi4pCisgICBcdmFs
dWUgVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkQmVnaW5uaW5nIFRyZWF0cyBhIGNhcGl0YWwgbGV0
dGVyIG9jY3VycmluZyBhbnl3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZAorICAgYXMgdGhl
IGJlZ2lubmluZyBvZiBhIG5ldyB3b3JkLgorICAgICAgIChUaGlzIHZhbHVlIHdhcyBpbnRyb2R1
Y2VkIGluIDUuMi4pCisgICBcdmFsdWUgRmluZEJlZ2luc0luU2VsZWN0aW9uIEJlZ2luIHNlYXJj
aGluZyBpbnNpZGUgdGhlIHRleHQgc2VsZWN0aW9uIGZpcnN0LgorICAgICAgIChUaGlzIHZhbHVl
IHdhcyBpbnRyb2R1Y2VkIGluIDUuMi4pCisqLworCisvKiEKKyAgICBcZW51bSBRV2ViUGFnZTo6
VmlzaWJpbGl0eVN0YXRlCisKKyAgICBUaGlzIGVudW0gZGVmaW5lcyB2aXNpYmlsaXR5IHN0YXRl
cyB0aGF0IGEgd2VicGFnZSBjYW4gdGFrZS4KKworICAgIFx2YWx1ZSBWaXNpYmlsaXR5U3RhdGVW
aXNpYmxlIFRoZSB3ZWJwYWdlIGlzIGF0IGxlYXN0IHBhcnRpYWxseSB2aXNpYmxlIGF0IG9uIGF0
IGxlYXN0IG9uZSBzY3JlZW4uCisgICAgXHZhbHVlIFZpc2liaWxpdHlTdGF0ZUhpZGRlbiBUaGUg
d2VicGFnZSBpcyBub3QgdmlzaWJsZSBhdCBhbGwgb24gYW55IHNjcmVlbi4KKyAgICBcdmFsdWUg
VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyIFRoZSB3ZWJwYWdlIGlzIGxvYWRlZCBvZmYtc2NyZWVu
IGFuZCBpcyBub3QgdmlzaWJsZS4KKyAgICBcdmFsdWUgVmlzaWJpbGl0eVN0YXRlVW5sb2FkZWQg
VGhlIHdlYnBhZ2UgaXMgdW5sb2FkaW5nIGl0cyBjb250ZW50LgorICAgIE1vcmUgaW5mb3JtYXRp
b24gYWJvdXQgdGhpcyB2YWx1ZXMgY2FuIGJlIGZvdW5kIGF0IFxseyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9wYWdlLXZpc2liaWxpdHkvI2RvbS1kb2N1bWVudC12aXNpYmlsaXR5c3RhdGV9e1czQyBS
ZWNvbW1lbmRhdGlvbjogUGFnZSBWaXNpYmlsaXR5OiB2aXNpYmlsaXR5U3RhdGUgYXR0cmlidXRl
fS4KKworICAgIFxzYSBRV2ViUGFnZTo6dmlzaWJpbGl0eVN0YXRlCisqLworCisvKiEKKyAgICBc
ZW51bSBRV2ViUGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kKKworICAgIFRoaXMgZW51bSBkZWZp
bmVzIHRoZSBkZWxlZ2F0aW9uIHBvbGljaWVzIGEgd2VicGFnZSBjYW4gaGF2ZSB3aGVuIGFjdGl2
YXRpbmcgbGlua3MgYW5kIGVtaXR0aW5nCisgICAgdGhlIGxpbmtDbGlja2VkKCkgc2lnbmFsLgor
CisgICAgXHZhbHVlIERvbnREZWxlZ2F0ZUxpbmtzIE5vIGxpbmtzIGFyZSBkZWxlZ2F0ZWQuIElu
c3RlYWQsIFFXZWJQYWdlIHRyaWVzIHRvIGhhbmRsZSB0aGVtIGFsbC4KKyAgICBcdmFsdWUgRGVs
ZWdhdGVFeHRlcm5hbExpbmtzIFdoZW4gYWN0aXZhdGluZyBsaW5rcyB0aGF0IHBvaW50IHRvIGRv
Y3VtZW50cyBub3Qgc3RvcmVkIG9uIHRoZQorICAgIGxvY2FsIGZpbGVzeXN0ZW0gb3IgYW4gZXF1
aXZhbGVudCAtIHN1Y2ggYXMgdGhlIFF0IHJlc291cmNlIHN5c3RlbSAtIHRoZW4gbGlua0NsaWNr
ZWQoKSBpcyBlbWl0dGVkLgorICAgIFx2YWx1ZSBEZWxlZ2F0ZUFsbExpbmtzIFdoZW5ldmVyIGEg
bGluayBpcyBhY3RpdmF0ZWQgdGhlIGxpbmtDbGlja2VkKCkgc2lnbmFsIGlzIGVtaXR0ZWQuCisK
KyAgICBcc2EgUVdlYlBhZ2U6OmxpbmtEZWxlZ2F0aW9uUG9saWN5CisqLworCisvKiEKKyAgICBc
ZW51bSBRV2ViUGFnZTo6TmF2aWdhdGlvblR5cGUKKworICAgIFRoaXMgZW51bSBkZXNjcmliZXMg
dGhlIHR5cGVzIG9mIG5hdmlnYXRpb24gYXZhaWxhYmxlIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBo
eXBlcmxpbmtlZAorICAgIGRvY3VtZW50cy4KKworICAgIFx2YWx1ZSBOYXZpZ2F0aW9uVHlwZUxp
bmtDbGlja2VkIFRoZSB1c2VyIGNsaWNrZWQgb24gYSBsaW5rIG9yIHByZXNzZWQgcmV0dXJuIG9u
IGEgZm9jdXNlZCBsaW5rLgorICAgIFx2YWx1ZSBOYXZpZ2F0aW9uVHlwZUZvcm1TdWJtaXR0ZWQg
VGhlIHVzZXIgYWN0aXZhdGVkIGEgc3VibWl0IGJ1dHRvbiBmb3IgYW4gSFRNTCBmb3JtLgorICAg
IFx2YWx1ZSBOYXZpZ2F0aW9uVHlwZUJhY2tPckZvcndhcmQgTmF2aWdhdGlvbiB0byBhIHByZXZp
b3VzbHkgc2hvd24gZG9jdW1lbnQgaW4gdGhlIGJhY2sgb3IgZm9yd2FyZCBoaXN0b3J5IGlzIHJl
cXVlc3RlZC4KKyAgICBcdmFsdWUgTmF2aWdhdGlvblR5cGVSZWxvYWQgVGhlIHVzZXIgYWN0aXZh
dGVkIHRoZSByZWxvYWQgYWN0aW9uLgorICAgIFx2YWx1ZSBOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1
Ym1pdHRlZCBBbiBIVE1MIGZvcm0gd2FzIHN1Ym1pdHRlZCBhIHNlY29uZCB0aW1lLgorICAgIFx2
YWx1ZSBOYXZpZ2F0aW9uVHlwZU90aGVyIEEgbmF2aWdhdGlvbiB0byBhbm90aGVyIGRvY3VtZW50
IHVzaW5nIGEgbWV0aG9kIG5vdCBsaXN0ZWQgYWJvdmUuCisKKyAgICBcc2EgYWNjZXB0TmF2aWdh
dGlvblJlcXVlc3QoKQorKi8KKworLyohCisgICAgXGVudW0gUVdlYlBhZ2U6OldlYkFjdGlvbgor
CisgICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgYWN0aW9uIHdoaWNoIGNhbiBi
ZSBwZXJmb3JtZWQgb24gdGhlIHdlYiBwYWdlLgorCisgICAgQWN0aW9ucyBvbmx5IGhhdmUgYW4g
ZWZmZWN0IHdoZW4gdGhleSBhcmUgYXBwbGljYWJsZS4gVGhlIGF2YWlsYWJpbGl0eSBvZgorICAg
IGFjdGlvbnMgY2FuIGJlIGJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgXGx7UUFjdGlvbjo6fXtp
c0VuYWJsZWQoKX0gb24gdGhlCisgICAgYWN0aW9uIHJldHVybmVkIGJ5IGFjdGlvbigpLgorCisg
ICAgT25lIG1ldGhvZCBvZiBlbmFibGluZyB0aGUgdGV4dCBlZGl0aW5nLCBjdXJzb3IgbW92ZW1l
bnQsIGFuZCB0ZXh0IHNlbGVjdGlvbiBhY3Rpb25zCisgICAgaXMgYnkgc2V0dGluZyBcbCBjb250
ZW50RWRpdGFibGUgdG8gdHJ1ZS4KKworICAgIFx2YWx1ZSBOb1dlYkFjdGlvbiBObyBhY3Rpb24g
aXMgdHJpZ2dlcmVkLgorICAgIFx2YWx1ZSBPcGVuTGluayBPcGVuIHRoZSBjdXJyZW50IGxpbmsu
CisgICAgXHZhbHVlIE9wZW5MaW5rSW5OZXdXaW5kb3cgT3BlbiB0aGUgY3VycmVudCBsaW5rIGlu
IGEgbmV3IHdpbmRvdy4KKyAgICBcdmFsdWUgT3BlbkxpbmtJblRoaXNXaW5kb3cgT3BlbiB0aGUg
Y3VycmVudCBsaW5rIHdpdGhvdXQgb3BlbmluZyBhIG5ldyB3aW5kb3cuIFVzZWQgb24gbGlua3Mg
dGhhdCB3b3VsZCBkZWZhdWx0IHRvIG9wZW5pbmcgaW4gYW5vdGhlciBmcmFtZSBvciBhIG5ldyB3
aW5kb3cuIChBZGRlZCBpbiBRdCA1LjApCisgICAgXHZhbHVlIE9wZW5GcmFtZUluTmV3V2luZG93
IFJlcGxpY2F0ZSB0aGUgY3VycmVudCBmcmFtZSBpbiBhIG5ldyB3aW5kb3cuCisgICAgXHZhbHVl
IERvd25sb2FkTGlua1RvRGlzayBEb3dubG9hZCB0aGUgY3VycmVudCBsaW5rIHRvIHRoZSBkaXNr
LgorICAgIFx2YWx1ZSBDb3B5TGlua1RvQ2xpcGJvYXJkIENvcHkgdGhlIGN1cnJlbnQgbGluayB0
byB0aGUgY2xpcGJvYXJkLgorICAgIFx2YWx1ZSBPcGVuSW1hZ2VJbk5ld1dpbmRvdyBPcGVuIHRo
ZSBoaWdobGlnaHRlZCBpbWFnZSBpbiBhIG5ldyB3aW5kb3cuCisgICAgXHZhbHVlIERvd25sb2Fk
SW1hZ2VUb0Rpc2sgRG93bmxvYWQgdGhlIGhpZ2hsaWdodGVkIGltYWdlIHRvIHRoZSBkaXNrLgor
ICAgIFx2YWx1ZSBDb3B5SW1hZ2VUb0NsaXBib2FyZCBDb3B5IHRoZSBoaWdobGlnaHRlZCBpbWFn
ZSB0byB0aGUgY2xpcGJvYXJkLiAgKEFkZGVkIGluIFF0IDQuOCkKKyAgICBcdmFsdWUgQ29weUlt
YWdlVXJsVG9DbGlwYm9hcmQgQ29weSB0aGUgaGlnaGxpZ2h0ZWQgaW1hZ2UncyBVUkwgdG8gdGhl
IGNsaXBib2FyZC4KKyAgICBcdmFsdWUgQmFjayBOYXZpZ2F0ZSBiYWNrIGluIHRoZSBoaXN0b3J5
IG9mIG5hdmlnYXRlZCBsaW5rcy4KKyAgICBcdmFsdWUgRm9yd2FyZCBOYXZpZ2F0ZSBmb3J3YXJk
IGluIHRoZSBoaXN0b3J5IG9mIG5hdmlnYXRlZCBsaW5rcy4KKyAgICBcdmFsdWUgU3RvcCBTdG9w
IGxvYWRpbmcgdGhlIGN1cnJlbnQgcGFnZS4KKyAgICBcdmFsdWUgU3RvcFNjaGVkdWxlZFBhZ2VS
ZWZyZXNoIFN0b3AgYWxsIHBlbmRpbmcgcGFnZSByZWZyZXNoL3JlZGlyZWN0IHJlcXVlc3RzLiAg
KEFkZGVkIGluIFF0IDQuNykKKyAgICBcdmFsdWUgUmVsb2FkIFJlbG9hZCB0aGUgY3VycmVudCBw
YWdlLgorICAgIFx2YWx1ZSBSZWxvYWRBbmRCeXBhc3NDYWNoZSBSZWxvYWQgdGhlIGN1cnJlbnQg
cGFnZSwgYnV0IGRvIG5vdCB1c2UgYW55IGxvY2FsIGNhY2hlLiAoQWRkZWQgaW4gUXQgNC42KQor
ICAgIFx2YWx1ZSBDdXQgQ3V0IHRoZSBjb250ZW50IGN1cnJlbnRseSBzZWxlY3RlZCBpbnRvIHRo
ZSBjbGlwYm9hcmQuCisgICAgXHZhbHVlIENvcHkgQ29weSB0aGUgY29udGVudCBjdXJyZW50bHkg
c2VsZWN0ZWQgaW50byB0aGUgY2xpcGJvYXJkLgorICAgIFx2YWx1ZSBQYXN0ZSBQYXN0ZSBjb250
ZW50IGZyb20gdGhlIGNsaXBib2FyZC4KKyAgICBcdmFsdWUgVW5kbyBVbmRvIHRoZSBsYXN0IGVk
aXRpbmcgYWN0aW9uLgorICAgIFx2YWx1ZSBSZWRvIFJlZG8gdGhlIGxhc3QgZWRpdGluZyBhY3Rp
b24uCisgICAgXHZhbHVlIE1vdmVUb05leHRDaGFyIE1vdmUgdGhlIGN1cnNvciB0byB0aGUgbmV4
dCBjaGFyYWN0ZXIuCisgICAgXHZhbHVlIE1vdmVUb1ByZXZpb3VzQ2hhciBNb3ZlIHRoZSBjdXJz
b3IgdG8gdGhlIHByZXZpb3VzIGNoYXJhY3Rlci4KKyAgICBcdmFsdWUgTW92ZVRvTmV4dFdvcmQg
TW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBuZXh0IHdvcmQuCisgICAgXHZhbHVlIE1vdmVUb1ByZXZp
b3VzV29yZCBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIHByZXZpb3VzIHdvcmQuCisgICAgXHZhbHVl
IE1vdmVUb05leHRMaW5lIE1vdmUgdGhlIGN1cnNvciB0byB0aGUgbmV4dCBsaW5lLgorICAgIFx2
YWx1ZSBNb3ZlVG9QcmV2aW91c0xpbmUgTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBwcmV2aW91cyBs
aW5lLgorICAgIFx2YWx1ZSBNb3ZlVG9TdGFydE9mTGluZSBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhl
IHN0YXJ0IG9mIHRoZSBsaW5lLgorICAgIFx2YWx1ZSBNb3ZlVG9FbmRPZkxpbmUgTW92ZSB0aGUg
Y3Vyc29yIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgXHZhbHVlIE1vdmVUb1N0YXJ0T2ZC
bG9jayBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIHN0YXJ0IG9mIHRoZSBibG9jay4KKyAgICBcdmFs
dWUgTW92ZVRvRW5kT2ZCbG9jayBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIGVuZCBvZiB0aGUgYmxv
Y2suCisgICAgXHZhbHVlIE1vdmVUb1N0YXJ0T2ZEb2N1bWVudCBNb3ZlIHRoZSBjdXJzb3IgdG8g
dGhlIHN0YXJ0IG9mIHRoZSBkb2N1bWVudC4KKyAgICBcdmFsdWUgTW92ZVRvRW5kT2ZEb2N1bWVu
dCBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCisgICAgXHZhbHVl
IFNlbGVjdE5leHRDaGFyIFNlbGVjdCB0byB0aGUgbmV4dCBjaGFyYWN0ZXIuCisgICAgXHZhbHVl
IFNlbGVjdFByZXZpb3VzQ2hhciBTZWxlY3QgdG8gdGhlIHByZXZpb3VzIGNoYXJhY3Rlci4KKyAg
ICBcdmFsdWUgU2VsZWN0TmV4dFdvcmQgU2VsZWN0IHRvIHRoZSBuZXh0IHdvcmQuCisgICAgXHZh
bHVlIFNlbGVjdFByZXZpb3VzV29yZCBTZWxlY3QgdG8gdGhlIHByZXZpb3VzIHdvcmQuCisgICAg
XHZhbHVlIFNlbGVjdE5leHRMaW5lIFNlbGVjdCB0byB0aGUgbmV4dCBsaW5lLgorICAgIFx2YWx1
ZSBTZWxlY3RQcmV2aW91c0xpbmUgU2VsZWN0IHRvIHRoZSBwcmV2aW91cyBsaW5lLgorICAgIFx2
YWx1ZSBTZWxlY3RTdGFydE9mTGluZSBTZWxlY3QgdG8gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLgor
ICAgIFx2YWx1ZSBTZWxlY3RFbmRPZkxpbmUgU2VsZWN0IHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUu
CisgICAgXHZhbHVlIFNlbGVjdFN0YXJ0T2ZCbG9jayBTZWxlY3QgdG8gdGhlIHN0YXJ0IG9mIHRo
ZSBibG9jay4KKyAgICBcdmFsdWUgU2VsZWN0RW5kT2ZCbG9jayBTZWxlY3QgdG8gdGhlIGVuZCBv
ZiB0aGUgYmxvY2suCisgICAgXHZhbHVlIFNlbGVjdFN0YXJ0T2ZEb2N1bWVudCBTZWxlY3QgdG8g
dGhlIHN0YXJ0IG9mIHRoZSBkb2N1bWVudC4KKyAgICBcdmFsdWUgU2VsZWN0RW5kT2ZEb2N1bWVu
dCBTZWxlY3QgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCisgICAgXHZhbHVlIERlbGV0ZVN0
YXJ0T2ZXb3JkIERlbGV0ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHdvcmQuCisgICAgXHZhbHVlIERl
bGV0ZUVuZE9mV29yZCBEZWxldGUgdG8gdGhlIGVuZCBvZiB0aGUgd29yZC4KKyAgICBcdmFsdWUg
U2V0VGV4dERpcmVjdGlvbkRlZmF1bHQgU2V0IHRoZSB0ZXh0IGRpcmVjdGlvbiB0byB0aGUgZGVm
YXVsdCBkaXJlY3Rpb24uCisgICAgXHZhbHVlIFNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCBT
ZXQgdGhlIHRleHQgZGlyZWN0aW9uIHRvIGxlZnQtdG8tcmlnaHQuCisgICAgXHZhbHVlIFNldFRl
eHREaXJlY3Rpb25SaWdodFRvTGVmdCBTZXQgdGhlIHRleHQgZGlyZWN0aW9uIHRvIHJpZ2h0LXRv
LWxlZnQuCisgICAgXHZhbHVlIFRvZ2dsZUJvbGQgVG9nZ2xlIHRoZSBmb3JtYXR0aW5nIGJldHdl
ZW4gYm9sZCBhbmQgbm9ybWFsIHdlaWdodC4KKyAgICBcdmFsdWUgVG9nZ2xlSXRhbGljIFRvZ2ds
ZSB0aGUgZm9ybWF0dGluZyBiZXR3ZWVuIGl0YWxpYyBhbmQgbm9ybWFsIHN0eWxlLgorICAgIFx2
YWx1ZSBUb2dnbGVVbmRlcmxpbmUgVG9nZ2xlIHVuZGVybGluaW5nLgorICAgIFx2YWx1ZSBJbnNw
ZWN0RWxlbWVudCBTaG93IHRoZSBXZWIgSW5zcGVjdG9yIHdpdGggdGhlIGN1cnJlbnRseSBoaWdo
bGlnaHRlZCBIVE1MIGVsZW1lbnQuCisgICAgXHZhbHVlIEluc2VydFBhcmFncmFwaFNlcGFyYXRv
ciBJbnNlcnQgYSBuZXcgcGFyYWdyYXBoLgorICAgIFx2YWx1ZSBJbnNlcnRMaW5lU2VwYXJhdG9y
IEluc2VydCBhIG5ldyBsaW5lLgorICAgIFx2YWx1ZSBTZWxlY3RBbGwgU2VsZWN0cyBhbGwgY29u
dGVudC4KKyAgICBcdmFsdWUgUGFzdGVBbmRNYXRjaFN0eWxlIFBhc3RlIGNvbnRlbnQgZnJvbSB0
aGUgY2xpcGJvYXJkIHdpdGggY3VycmVudCBzdHlsZS4gKEFkZGVkIGluIFF0IDQuNikKKyAgICBc
dmFsdWUgUmVtb3ZlRm9ybWF0IFJlbW92ZXMgZm9ybWF0dGluZyBhbmQgc3R5bGUuIChBZGRlZCBp
biBRdCA0LjYpCisgICAgXHZhbHVlIFRvZ2dsZVN0cmlrZXRocm91Z2ggVG9nZ2xlIHRoZSBmb3Jt
YXR0aW5nIGJldHdlZW4gc3RyaWtldGhyb3VnaCBhbmQgbm9ybWFsIHN0eWxlLiAoQWRkZWQgaW4g
UXQgNC42KQorICAgIFx2YWx1ZSBUb2dnbGVTdWJzY3JpcHQgVG9nZ2xlIHRoZSBmb3JtYXR0aW5n
IGJldHdlZW4gc3Vic2NyaXB0IGFuZCBiYXNlbGluZS4gKEFkZGVkIGluIFF0IDQuNikKKyAgICBc
dmFsdWUgVG9nZ2xlU3VwZXJzY3JpcHQgVG9nZ2xlIHRoZSBmb3JtYXR0aW5nIGJldHdlZW4gc3Vw
ZXJjcmlwdCBhbmQgYmFzZWxpbmUuIChBZGRlZCBpbiBRdCA0LjYpCisgICAgXHZhbHVlIEluc2Vy
dFVub3JkZXJlZExpc3QgVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIGJldHdlZW4gYW4gb3JkZXJlZCBs
aXN0IGFuZCBhIG5vcm1hbCBibG9jay4gKEFkZGVkIGluIFF0IDQuNikKKyAgICBcdmFsdWUgSW5z
ZXJ0T3JkZXJlZExpc3QgVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIGJldHdlZW4gYW4gb3JkZXJlZCBs
aXN0IGFuZCBhIG5vcm1hbCBibG9jay4gKEFkZGVkIGluIFF0IDQuNikKKyAgICBcdmFsdWUgSW5k
ZW50IEluY3JlYXNlcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBm
b3JtYXQgYmxvY2sgYnkgb25lIGluY3JlbWVudC4gKEFkZGVkIGluIFF0IDQuNikKKyAgICBcdmFs
dWUgT3V0ZGVudCBEZWNyZWFzZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50bHkgc2Vs
ZWN0ZWQgZm9ybWF0IGJsb2NrIGJ5IG9uZSBpbmNyZW1lbnQuIChBZGRlZCBpbiBRdCA0LjYpCisg
ICAgXHZhbHVlIEFsaWduQ2VudGVyIEFwcGxpZXMgY2VudGVyIGFsaWdubWVudCB0byBjb250ZW50
LiAoQWRkZWQgaW4gUXQgNC42KQorICAgIFx2YWx1ZSBBbGlnbkp1c3RpZmllZCBBcHBsaWVzIGZ1
bGwganVzdGlmaWNhdGlvbiB0byBjb250ZW50LiAoQWRkZWQgaW4gUXQgNC42KQorICAgIFx2YWx1
ZSBBbGlnbkxlZnQgQXBwbGllcyBsZWZ0IGp1c3RpZmljYXRpb24gdG8gY29udGVudC4gKEFkZGVk
IGluIFF0IDQuNikKKyAgICBcdmFsdWUgQWxpZ25SaWdodCBBcHBsaWVzIHJpZ2h0IGp1c3RpZmlj
YXRpb24gdG8gY29udGVudC4gKEFkZGVkIGluIFF0IDQuNikKKworCisgICAgXG9taXR2YWx1ZSBX
ZWJBY3Rpb25Db3VudAorCisqLworCisvKiEKKyAgICBcZW51bSBRV2ViUGFnZTo6V2ViV2luZG93
VHlwZQorCisgICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgdHlwZXMgb2Ygd2luZG93IHRoYXQg
Y2FuIGJlIGNyZWF0ZWQgYnkgdGhlIGNyZWF0ZVdpbmRvdygpIGZ1bmN0aW9uLgorCisgICAgXHZh
bHVlIFdlYkJyb3dzZXJXaW5kb3cgVGhlIHdpbmRvdyBpcyBhIHJlZ3VsYXIgd2ViIGJyb3dzZXIg
d2luZG93LgorICAgIFx2YWx1ZSBXZWJNb2RhbERpYWxvZyBUaGUgd2luZG93IGFjdHMgYXMgbW9k
YWwgZGlhbG9nLgorKi8KKworCisvKiEKKyAgICBcY2xhc3MgUVdlYlBhZ2U6OlZpZXdwb3J0QXR0
cmlidXRlcworICAgIFxzaW5jZSA0LjcKKyAgICBcYnJpZWYgVGhlIFFXZWJQYWdlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgY2xhc3MgZGVzY3JpYmVzIGhpbnRzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8g
YSB2aWV3cG9ydC4KKworICAgIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgcHJvdmlkZXMg
YSBkZXNjcmlwdGlvbiBvZiBhIHZpZXdwb3J0LCBzdWNoIGFzIHZpZXdwb3J0IGdlb21ldHJ5LAor
ICAgIGluaXRpYWwgc2NhbGUgZmFjdG9yIHdpdGggbGltaXRzLCBwbHVzIGluZm9ybWF0aW9uIGFi
b3V0IHdoZXRoZXIgYSB1c2VyIHNob3VsZCBiZSBhYmxlCisgICAgdG8gc2NhbGUgdGhlIGNvbnRl
bnRzIGluIHRoZSB2aWV3cG9ydCBvciBub3QsIGllLiBieSB6b29taW5nLgorCisgICAgVmlld3Bv
cnRBdHRyaWJ1dGVzIGNhbiBiZSBzZXQgYnkgYSB3ZWIgYXV0aG9yIHVzaW5nIHRoZSB2aWV3cG9y
dCBtZXRhIHRhZyBleHRlbnNpb24sIGRvY3VtZW50ZWQKKyAgICBhdCBcbHtodHRwOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9zYWZhcmkvbGlicmFyeS9kb2N1bWVudGF0aW9uL2FwcGxlYXBwbGljYXRp
b25zL3JlZmVyZW5jZS9zYWZhcml3ZWJjb250ZW50L3VzaW5ndGhldmlld3BvcnQvdXNpbmd0aGV2
aWV3cG9ydC5odG1sfXtTYWZhcmkgUmVmZXJlbmNlIExpYnJhcnk6IFVzaW5nIHRoZSBWaWV3cG9y
dCBNZXRhIFRhZ30uCisKKyAgICBBbGwgdmFsdWVzIG1pZ2h0IG5vdCBiZSBzZXQsIGFzIHN1Y2gg
d2hlbiBkZWFsaW5nIHdpdGggdGhlIGhpbnRzLCB0aGUgZGV2ZWxvcGVyIG5lZWRzIHRvCisgICAg
Y2hlY2sgd2hldGhlciB0aGUgdmFsdWVzIGFyZSB2YWxpZC4gTmVnYXRpdmUgdmFsdWVzIGRlbm90
ZSBhbiBpbnZhbGlkIHFyZWFsIHZhbHVlLgorCisgICAgXGlubW9kdWxlIFF0V2ViS2l0CisqLwor
CisvKiEKKyAgICBDb25zdHJ1Y3RzIGFuIGVtcHR5IFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMuCisqLworUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRlczo6Vmlld3BvcnRBdHRyaWJ1dGVz
KCkKKyAgICA6IGQoMCkKKyAgICAsIG1faW5pdGlhbFNjYWxlRmFjdG9yKC0xLjApCisgICAgLCBt
X21pbmltdW1TY2FsZUZhY3RvcigtMS4wKQorICAgICwgbV9tYXhpbXVtU2NhbGVGYWN0b3IoLTEu
MCkKKyAgICAsIG1fZGV2aWNlUGl4ZWxSYXRpbygtMS4wKQorICAgICwgbV9pc1VzZXJTY2FsYWJs
ZSh0cnVlKQorICAgICwgbV9pc1ZhbGlkKGZhbHNlKQoreworCit9CisKKy8qIQorICAgIENvbnN0
cnVjdHMgYSBRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIHdoaWNoIGlzIGEgY29weSBmcm9t
IFxhIG90aGVyIC4KKyovCitRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzOjpWaWV3cG9ydEF0
dHJpYnV0ZXMoY29uc3QgUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRlcyYgb3RoZXIpCisgICAg
OiBkKG90aGVyLmQpCisgICAgLCBtX2luaXRpYWxTY2FsZUZhY3RvcihvdGhlci5tX2luaXRpYWxT
Y2FsZUZhY3RvcikKKyAgICAsIG1fbWluaW11bVNjYWxlRmFjdG9yKG90aGVyLm1fbWluaW11bVNj
YWxlRmFjdG9yKQorICAgICwgbV9tYXhpbXVtU2NhbGVGYWN0b3Iob3RoZXIubV9tYXhpbXVtU2Nh
bGVGYWN0b3IpCisgICAgLCBtX2RldmljZVBpeGVsUmF0aW8ob3RoZXIubV9kZXZpY2VQaXhlbFJh
dGlvKQorICAgICwgbV9pc1VzZXJTY2FsYWJsZShvdGhlci5tX2lzVXNlclNjYWxhYmxlKQorICAg
ICwgbV9pc1ZhbGlkKG90aGVyLm1faXNWYWxpZCkKKyAgICAsIG1fc2l6ZShvdGhlci5tX3NpemUp
Cit7CisKK30KKworLyohCisgICAgRGVzdHJveXMgdGhlIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJp
YnV0ZXMuCisqLworUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRlczo6flZpZXdwb3J0QXR0cmli
dXRlcygpCit7CisKK30KKworLyohCisgICAgQXNzaWducyB0aGUgZ2l2ZW4gUVdlYlBhZ2U6OlZp
ZXdwb3J0QXR0cmlidXRlcyB0byB0aGlzIHZpZXdwb3J0IGhpbnRzIGFuZCByZXR1cm5zIGEKKyAg
ICByZWZlcmVuY2UgdG8gdGhpcy4KKyovCitRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBR
V2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzOjpvcGVyYXRvcj0oY29uc3QgUVdlYlBhZ2U6OlZp
ZXdwb3J0QXR0cmlidXRlcyYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7Cisg
ICAgICAgIGQgPSBvdGhlci5kOworICAgICAgICBtX2luaXRpYWxTY2FsZUZhY3RvciA9IG90aGVy
Lm1faW5pdGlhbFNjYWxlRmFjdG9yOworICAgICAgICBtX21pbmltdW1TY2FsZUZhY3RvciA9IG90
aGVyLm1fbWluaW11bVNjYWxlRmFjdG9yOworICAgICAgICBtX21heGltdW1TY2FsZUZhY3RvciA9
IG90aGVyLm1fbWF4aW11bVNjYWxlRmFjdG9yOworICAgICAgICBtX2lzVXNlclNjYWxhYmxlID0g
b3RoZXIubV9pc1VzZXJTY2FsYWJsZTsKKyAgICAgICAgbV9pc1ZhbGlkID0gb3RoZXIubV9pc1Zh
bGlkOworICAgICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CisgICAgfQorCisgICAgcmV0dXJu
ICp0aGlzOworfQorCisvKiEgXGZuIGlubGluZSBib29sIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJp
YnV0ZXM6OmlzVmFsaWQoKSBjb25zdAorICAgIFJldHVybnMgd2hldGhlciB0aGlzIGlzIGEgdmFs
aWQgVmlld3BvcnRBdHRyaWJ1dGVzIG9yIG5vdC4KKworICAgIEFuIGludmFsaWQgVmlld3BvcnRB
dHRyaWJ1dGVzIHdpbGwgaGF2ZSBhbiBlbXB0eSBRU2l6ZSwgbmVnYXRpdmUgdmFsdWVzIGZvciBz
Y2FsZSBmYWN0b3JzIGFuZAorICAgIHRydWUgZm9yIHRoZSBib29sZWFuIGlzVXNlclNjYWxhYmxl
LgorKi8KKworLyohIFxmbiBpbmxpbmUgUVNpemUgUVdlYlBhZ2U6OlZpZXdwb3J0QXR0cmlidXRl
czo6c2l6ZSgpIGNvbnN0CisgICAgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgdmlld3BvcnQuCisq
LworCisvKiEgXGZuIGlubGluZSBxcmVhbCBRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzOjpp
bml0aWFsU2NhbGVGYWN0b3IoKSBjb25zdAorICAgIFJldHVybnMgdGhlIGluaXRpYWwgc2NhbGUg
b2YgdGhlIHZpZXdwb3J0IGFzIGEgbXVsdGlwbGllci4KKyovCisKKy8qISBcZm4gaW5saW5lIHFy
ZWFsIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXM6Om1pbmltdW1TY2FsZUZhY3RvcigpIGNv
bnN0CisgICAgUmV0dXJucyB0aGUgbWluaW11bSBzY2FsZSB2YWx1ZSBvZiB0aGUgdmlld3BvcnQg
YXMgYSBtdWx0aXBsaWVyLgorKi8KKworLyohIFxmbiBpbmxpbmUgcXJlYWwgUVdlYlBhZ2U6OlZp
ZXdwb3J0QXR0cmlidXRlczo6bWF4aW11bVNjYWxlRmFjdG9yKCkgY29uc3QKKyAgICBSZXR1cm5z
IHRoZSBtYXhpbXVtIHNjYWxlIHZhbHVlIG9mIHRoZSB2aWV3cG9ydCBhcyBhIG11bHRpcGxpZXIu
CisqLworCisvKiEgXGZuIGlubGluZSBib29sIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXM6
OmlzVXNlclNjYWxhYmxlKCkgY29uc3QKKyAgICBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRo
ZSBzY2FsZSBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIHVzZXIuCisqLworCisKKy8qIQorICAgIFxj
bGFzcyBRV2ViUGFnZQorICAgIFxzaW5jZSA0LjQKKyAgICBcYnJpZWYgVGhlIFFXZWJQYWdlIGNs
YXNzIHByb3ZpZGVzIGFuIG9iamVjdCB0byB2aWV3IGFuZCBlZGl0IHdlYiBkb2N1bWVudHMuCisK
KyAgICBcaW5tb2R1bGUgUXRXZWJLaXQKKworICAgIFFXZWJQYWdlIGhvbGRzIGEgbWFpbiBmcmFt
ZSByZXNwb25zaWJsZSBmb3Igd2ViIGNvbnRlbnQsIHNldHRpbmdzLCB0aGUgaGlzdG9yeQorICAg
IG9mIG5hdmlnYXRlZCBsaW5rcyBhbmQgYWN0aW9ucy4gVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCwg
dG9nZXRoZXIgd2l0aCBRV2ViRnJhbWUsCisgICAgdG8gcHJvdmlkZSBmdW5jdGlvbmFsaXR5IGxp
a2UgUVdlYlZpZXcgaW4gYSB3aWRnZXQtbGVzcyBlbnZpcm9ubWVudC4KKworICAgIFFXZWJQYWdl
J3MgQVBJIGlzIHZlcnkgc2ltaWxhciB0byBRV2ViVmlldywgYXMgeW91IGFyZSBzdGlsbCBwcm92
aWRlZCB3aXRoCisgICAgY29tbW9uIGZ1bmN0aW9ucyBsaWtlIGFjdGlvbigpIChrbm93biBhcwor
ICAgIFxse1FXZWJWaWV3OjpwYWdlQWN0aW9uKCl9e3BhZ2VBY3Rpb259KCkgaW4gUVdlYlZpZXcp
LCB0cmlnZ2VyQWN0aW9uKCksCisgICAgZmluZFRleHQoKSBhbmQgc2V0dGluZ3MoKS4gTW9yZSBR
V2ViVmlldy1saWtlIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlCisgICAgbWFpbiBmcmFt
ZSBvZiBRV2ViUGFnZSwgb2J0YWluZWQgdmlhIHRoZSBtYWluRnJhbWUoKSBmdW5jdGlvbi4gRm9y
IGV4YW1wbGUsCisgICAgdGhlIFxse1FXZWJGcmFtZTo6bG9hZCgpfXtsb2FkfSgpLCBcbHtRV2Vi
RnJhbWU6OnNldFVybCgpfXtzZXRVcmx9KCkgYW5kCisgICAgXGx7UVdlYkZyYW1lOjpzZXRIdG1s
KCl9e3NldEh0bWx9KCkgZnVuY3Rpb25zIGZvciBRV2ViUGFnZSBjYW4gYmUgYWNjZXNzZWQKKyAg
ICB1c2luZyBRV2ViRnJhbWUuCisKKyAgICBUaGUgbG9hZFN0YXJ0ZWQoKSBzaWduYWwgaXMgZW1p
dHRlZCB3aGVuIHRoZSBwYWdlIGJlZ2lucyB0byBsb2FkLlRoZQorICAgIGxvYWRQcm9ncmVzcygp
IHNpZ25hbCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGVtaXR0ZWQgd2hlbmV2ZXIgYW4gZWxlbWVu
dAorICAgIG9mIHRoZSB3ZWIgcGFnZSBjb21wbGV0ZXMgbG9hZGluZywgc3VjaCBhcyBhbiBlbWJl
ZGRlZCBpbWFnZSwgYSBzY3JpcHQsCisgICAgZXRjLiBGaW5hbGx5LCB0aGUgbG9hZEZpbmlzaGVk
KCkgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgcGFnZSBjb250ZW50cworICAgIGFyZSBsb2Fk
ZWQgY29tcGxldGVseSwgaW5kZXBlbmRlbnQgb2Ygc2NyaXB0IGV4ZWN1dGlvbiBvciBwYWdlIHJl
bmRlcmluZy4KKyAgICBJdHMgYXJndW1lbnQsIGVpdGhlciB0cnVlIG9yIGZhbHNlLCBpbmRpY2F0
ZXMgd2hldGhlciBvciBub3QgdGhlIGxvYWQKKyAgICBvcGVyYXRpb24gc3VjY2VlZGVkLgorCisg
ICAgXHNlY3Rpb24xIFVzaW5nIFFXZWJQYWdlIGluIGEgV2lkZ2V0LWxlc3MgRW52aXJvbm1lbnQK
KworICAgIEJlZm9yZSB5b3UgYmVnaW4gcGFpbnRpbmcgYSBRV2ViUGFnZSBvYmplY3QsIHlvdSBu
ZWVkIHRvIHNldCB0aGUgc2l6ZSBvZgorICAgIHRoZSB2aWV3cG9ydCBieSBjYWxsaW5nIHNldFZp
ZXdwb3J0U2l6ZSgpLiBUaGVuLCB5b3UgaW52b2tlIHRoZSBtYWluCisgICAgZnJhbWUncyByZW5k
ZXIgZnVuY3Rpb24gKFFXZWJGcmFtZTo6cmVuZGVyKCkpLiBBbiBleGFtcGxlIG9mIHRoaXMKKyAg
ICBpcyBzaG93biBpbiB0aGUgY29kZSBzbmlwcGV0IGJlbG93LgorCisgICAgU3VwcG9zZSB3ZSBo
YXZlIGEgXGMgVGh1bWJuYWlsIGNsYXNzIGFzIGZvbGxvd3M6CisKKyAgICBcc25pcHBldCB3ZWJr
aXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwIDAKKworICAgIFRoZSBcYyBUaHVtYm5haWwncyBj
b25zdHJ1Y3RvciB0YWtlcyBpbiBhIFxhIHVybC4gV2UgY29ubmVjdCBvdXIgUVdlYlBhZ2UKKyAg
ICBvYmplY3QncyBcbHtRV2ViUGFnZTo6fXtsb2FkRmluaXNoZWQoKX0gc2lnbmFsIHRvIG91ciBw
cml2YXRlIHNsb3QsCisgICAgXGMgcmVuZGVyKCkuCisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlw
cGV0cy93ZWJwYWdlL21haW4uY3BwIDEKKworICAgIFRoZSBcYyByZW5kZXIoKSBmdW5jdGlvbiBz
aG93cyBob3cgd2UgY2FuIHBhaW50IGEgdGh1bWJuYWlsIHVzaW5nIGEKKyAgICBRV2ViUGFnZSBv
YmplY3QuCisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwIDIK
KworICAgIFdlIGJlZ2luIGJ5IHNldHRpbmcgdGhlIFxse1FXZWJQYWdlOjp2aWV3cG9ydFNpemUo
KX17dmlld3BvcnRTaXplfSBhbmQKKyAgICB0aGVuIHdlIGluc3RhbnRpYXRlIGEgUUltYWdlIG9i
amVjdCwgXGMgaW1hZ2UsIHdpdGggdGhlIHNhbWUgc2l6ZSBhcyBvdXIKKyAgICBcbHtRV2ViUGFn
ZTo6dmlld3BvcnRTaXplKCl9e3ZpZXdwb3J0U2l6ZX0uIFRoaXMgaW1hZ2UgaXMgdGhlbiBzZW50
CisgICAgYXMgYSBwYXJhbWV0ZXIgdG8gXGMgcGFpbnRlci4gTmV4dCwgd2UgcmVuZGVyIHRoZSBj
b250ZW50cyBvZiB0aGUgbWFpbgorICAgIGZyYW1lIGFuZCBpdHMgc3ViZnJhbWVzIGludG8gXGMg
cGFpbnRlci4gRmluYWxseSwgd2Ugc2F2ZSB0aGUgc2NhbGVkIGltYWdlLgorCisgICAgXHNhIFFX
ZWJGcmFtZQorKi8KKworLyohCisgICAgQ29uc3RydWN0cyBhbiBlbXB0eSBRV2ViUGFnZSB3aXRo
IHBhcmVudCBcYSBwYXJlbnQuCisqLworUVdlYlBhZ2U6OlFXZWJQYWdlKFFPYmplY3QgKnBhcmVu
dCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwgZChuZXcgUVdlYlBhZ2VQcml2YXRlKHRo
aXMpKQoreworICAgIHNldFZpZXcocW9iamVjdF9jYXN0PFFXaWRnZXQqPihwYXJlbnQpKTsKKwor
ICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwgdGhpcywgU0xPVChf
cV9vbkxvYWRQcm9ncmVzc0NoYW5nZWQoaW50KSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBjb25u
ZWN0KFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCksIFNJR05BTChhYm91dFRvUXVpdCgpKSwg
dGhpcywgU0xPVChfcV9jbGVhbnVwTGVha01lc3NhZ2VzKCkpKTsKKyNlbmRpZgorfQorCisvKiEK
KyAgICBEZXN0cm95cyB0aGUgd2ViIHBhZ2UuCisqLworUVdlYlBhZ2U6On5RV2ViUGFnZSgpCit7
CisgICAgZGVsZXRlIGQ7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIG1haW4gZnJhbWUgb2Yg
dGhlIHBhZ2UuCisKKyAgICBUaGUgbWFpbiBmcmFtZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGhp
ZXJhcmNoeSBvZiBzdWItZnJhbWVzIGFuZCBpcyBhbHNvIG5lZWRlZCBpZiB5b3UKKyAgICB3YW50
IHRvIGV4cGxpY2l0bHkgcmVuZGVyIGEgd2ViIHBhZ2UgaW50byBhIGdpdmVuIHBhaW50ZXIuCisK
KyAgICBcc2EgY3VycmVudEZyYW1lKCkKKyovCitRV2ViRnJhbWUgKlFXZWJQYWdlOjptYWluRnJh
bWUoKSBjb25zdAoreworICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOworICAgIHJldHVybiBkLT5t
YWluRnJhbWUuZGF0YSgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBmcmFtZSBjdXJyZW50
bHkgYWN0aXZlLgorCisgICAgXHNhIG1haW5GcmFtZSgpLCBmcmFtZUNyZWF0ZWQoKQorKi8KK1FX
ZWJGcmFtZSAqUVdlYlBhZ2U6OmN1cnJlbnRGcmFtZSgpIGNvbnN0Cit7CisgICAgZC0+Y3JlYXRl
TWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2ViRnJhbWUqPihkLT5jdXJy
ZW50RnJhbWUoKSk7Cit9CisKKworLyohCisgICAgXHNpbmNlIDQuNgorCisgICAgUmV0dXJucyB0
aGUgZnJhbWUgYXQgdGhlIGdpdmVuIHBvaW50IFxhIHBvcywgb3IgMCBpZiB0aGVyZSBpcyBubyBm
cmFtZSBhdAorICAgIHRoYXQgcG9zaXRpb24uCisKKyAgICBcc2EgbWFpbkZyYW1lKCksIGN1cnJl
bnRGcmFtZSgpCisqLworUVdlYkZyYW1lKiBRV2ViUGFnZTo6ZnJhbWVBdChjb25zdCBRUG9pbnQm
IHBvcykgY29uc3QKK3sKKyAgICBRV2ViRnJhbWUqIHdlYkZyYW1lID0gbWFpbkZyYW1lKCk7Cisg
ICAgaWYgKCF3ZWJGcmFtZS0+Z2VvbWV0cnkoKS5jb250YWlucyhwb3MpKQorICAgICAgICByZXR1
cm4gMDsKKyAgICBRV2ViSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gd2ViRnJhbWUtPmhp
dFRlc3RDb250ZW50KHBvcyk7CisgICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQuZnJhbWUoKTsKK30K
KworLyohCisgICAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZpZXcncyBoaXN0b3J5IG9mIG5h
dmlnYXRlZCB3ZWIgcGFnZXMuCisqLworUVdlYkhpc3RvcnkgKlFXZWJQYWdlOjpoaXN0b3J5KCkg
Y29uc3QKK3sKKyAgICBkLT5jcmVhdGVNYWluRnJhbWUoKTsKKyAgICByZXR1cm4gJmQtPmhpc3Rv
cnk7Cit9CisKKy8qIQorICAgIFNldHMgdGhlIFxhIHZpZXcgdGhhdCBpcyBhc3NvY2lhdGVkIHdp
dGggdGhlIHdlYiBwYWdlLgorCisgICAgXHNhIHZpZXcoKQorKi8KK3ZvaWQgUVdlYlBhZ2U6OnNl
dFZpZXcoUVdpZGdldCogdmlldykKK3sKKyAgICBpZiAodGhpcy0+dmlldygpID09IHZpZXcpCisg
ICAgICAgIHJldHVybjsKKworICAgIGQtPnZpZXcgPSB2aWV3OworICAgIHNldFZpZXdwb3J0U2l6
ZSh2aWV3ID8gdmlldy0+c2l6ZSgpIDogUVNpemUoMCwgMCkpOworCisgICAgLy8gSWYgd2UgaGF2
ZSBubyBjbGllbnQsIHdlIGluc3RhbGwgYSBzcGVjaWFsIGNsaWVudCBkZWxlZ2F0aW5nCisgICAg
Ly8gdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHRoZSBRV2lkZ2V0LiBUaGlzIGlzIHRoZSBjb2RlIHBh
dGgKKyAgICAvLyBoYW5kbGluZyBhLm8uIHRoZSAibGVnYWN5IiBRV2ViVmlldy4KKyAgICAvLwor
ICAgIC8vIElmIHN1Y2ggYSBzcGVjaWFsIGRlbGVnYXRlIGFscmVhZHkgZXhpc3QsIHdlIHN1YnN0
aXR1dGUgdGhlIHZpZXcuCisKKyAgICBpZiAoZC0+Y2xpZW50KSB7CisgICAgICAgIGlmIChkLT5j
bGllbnQtPmlzUVdpZGdldENsaWVudCgpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UGFnZUNs
aWVudFFXaWRnZXQqPihkLT5jbGllbnQuZGF0YSgpKS0+dmlldyA9IHZpZXc7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAodmlldykKKyAgICAgICAgZC0+Y2xpZW50LnJlc2V0KG5l
dyBQYWdlQ2xpZW50UVdpZGdldCh2aWV3LCB0aGlzKSk7Cit9CisKKy8qIQorICAgIFJldHVybnMg
dGhlIHZpZXcgd2lkZ2V0IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgcGFnZS4KKwor
ICAgIFxzYSBzZXRWaWV3KCkKKyovCitRV2lkZ2V0ICpRV2ViUGFnZTo6dmlldygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPnZpZXcuZGF0YSgpOworfQorCisvKiEKKyAgICBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCB3aGVuZXZlciBhIEphdmFTY3JpcHQgcHJvZ3JhbSB0cmllcyB0byBwcmludCBh
IFxhIG1lc3NhZ2UgdG8gdGhlIHdlYiBicm93c2VyJ3MgY29uc29sZS4KKworICAgIEZvciBleGFt
cGxlIGluIGNhc2Ugb2YgZXZhbHVhdGlvbiBlcnJvcnMgdGhlIHNvdXJjZSBVUkwgbWF5IGJlIHBy
b3ZpZGVkIGluIFxhIHNvdXJjZUlEIGFzIHdlbGwgYXMgdGhlIFxhIGxpbmVOdW1iZXIuCisKKyAg
ICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBwcmludHMgbm90aGluZy4KKyovCit2b2lkIFFX
ZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKQoreworICAgIFFfVU5VU0VE
KHNvdXJjZUlEKTsKKworICAgIC8vIENhdGNoIHBsdWdpbiBsb2dEZXN0cm95IG1lc3NhZ2UgZm9y
IExheW91dFRlc3RzL3BsdWdpbnMvb3Blbi1hbmQtY2xvc2Utd2luZG93LXdpdGgtcGx1Z2luLmh0
bWwKKyAgICAvLyBBdCB0aGlzIHBvaW50IERSVCdzIFdlYlBhZ2UgaGFzIGFscmVhZHkgYmVlbiBk
ZXN0cm95ZWQKKyAgICBpZiAoUVdlYlBhZ2VBZGFwdGVyOjpkcnRSdW4pIHsKKyAgICAgICAgaWYg
KG1lc3NhZ2UgPT0gUUxhdGluMVN0cmluZygiUExVR0lOOiBOUFBfRGVzdHJveSIpKSB7CisgICAg
ICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTogIik7CisgICAgICAgICAg
ICBpZiAobGluZU51bWJlcikKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImxpbmUg
JWQ6ICIsIGxpbmVOdW1iZXIpOworICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwg
bWVzc2FnZS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8q
IQorICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGEgSmF2YVNjcmlwdCBwcm9n
cmFtIHJ1bm5pbmcgaW5zaWRlIFxhIGZyYW1lIGNhbGxzIHRoZSBhbGVydCgpIGZ1bmN0aW9uIHdp
dGgKKyAgICB0aGUgbWVzc2FnZSBcYSBtc2cuCisKKyAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbiBzaG93cyB0aGUgbWVzc2FnZSwgXGEgbXNnLCB3aXRoIFFNZXNzYWdlQm94OjppbmZvcm1h
dGlvbi4KKyovCit2b2lkIFFXZWJQYWdlOjpqYXZhU2NyaXB0QWxlcnQoUVdlYkZyYW1lICpmcmFt
ZSwgY29uc3QgUVN0cmluZyYgbXNnKQoreworICAgIFFfVU5VU0VEKGZyYW1lKTsKKyNpZm5kZWYg
UVRfTk9fTUVTU0FHRUJPWAorICAgIFFNZXNzYWdlQm94IGJveCh2aWV3KCkpOworICAgIGJveC5z
ZXRXaW5kb3dUaXRsZSh0cigiSmF2YVNjcmlwdCBBbGVydCAtICUxIikuYXJnKG1haW5GcmFtZSgp
LT51cmwoKS5ob3N0KCkpKTsKKyAgICBib3guc2V0VGV4dEZvcm1hdChRdDo6UGxhaW5UZXh0KTsK
KyAgICBib3guc2V0VGV4dChtc2cpOworICAgIGJveC5zZXRTdGFuZGFyZEJ1dHRvbnMoUU1lc3Nh
Z2VCb3g6Ok9rKTsKKyAgICBib3guZXhlYygpOworI2VuZGlmCit9CisKKy8qIQorICAgIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGEgSmF2YVNjcmlwdCBwcm9ncmFtIHJ1bm5pbmcg
aW5zaWRlIFxhIGZyYW1lIGNhbGxzIHRoZSBjb25maXJtKCkgZnVuY3Rpb24KKyAgICB3aXRoIHRo
ZSBtZXNzYWdlLCBcYSBtc2cuIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtcyB0aGUg
bWVzc2FnZTsgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisKKyAgICBUaGUgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbiBleGVjdXRlcyB0aGUgcXVlcnkgdXNpbmcgUU1lc3NhZ2VCb3g6OmluZm9ybWF0
aW9uIHdpdGggUU1lc3NhZ2VCb3g6Ok9rIGFuZCBRTWVzc2FnZUJveDo6Q2FuY2VsIGJ1dHRvbnMu
CisqLworYm9vbCBRV2ViUGFnZTo6amF2YVNjcmlwdENvbmZpcm0oUVdlYkZyYW1lICpmcmFtZSwg
Y29uc3QgUVN0cmluZyYgbXNnKQoreworICAgIFFfVU5VU0VEKGZyYW1lKTsKKyNpZmRlZiBRVF9O
T19NRVNTQUdFQk9YCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFFNZXNzYWdlQm94IGJv
eCh2aWV3KCkpOworICAgIGJveC5zZXRXaW5kb3dUaXRsZSh0cigiSmF2YVNjcmlwdCBDb25maXJt
IC0gJTEiKS5hcmcobWFpbkZyYW1lKCktPnVybCgpLmhvc3QoKSkpOworICAgIGJveC5zZXRUZXh0
Rm9ybWF0KFF0OjpQbGFpblRleHQpOworICAgIGJveC5zZXRUZXh0KG1zZyk7CisgICAgYm94LnNl
dFN0YW5kYXJkQnV0dG9ucyhRTWVzc2FnZUJveDo6T2sgfCBRTWVzc2FnZUJveDo6Q2FuY2VsKTsK
KyAgICByZXR1cm4gUU1lc3NhZ2VCb3g6Ok9rID09IGJveC5leGVjKCk7CisjZW5kaWYKK30KKwor
LyohCisgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBKYXZhU2NyaXB0IHBy
b2dyYW0gcnVubmluZyBpbnNpZGUgXGEgZnJhbWUgdHJpZXMgdG8gcHJvbXB0IHRoZSB1c2VyIGZv
ciBpbnB1dC4KKyAgICBUaGUgcHJvZ3JhbSBtYXkgcHJvdmlkZSBhbiBvcHRpb25hbCBtZXNzYWdl
LCBcYSBtc2csIGFzIHdlbGwgYXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgaW5wdXQgaW4gXGEg
ZGVmYXVsdFZhbHVlLgorCisgICAgSWYgdGhlIHByb21wdCB3YXMgY2FuY2VsbGVkIGJ5IHRoZSB1
c2VyIHRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgcmV0dXJuIGZhbHNlOyBvdGhlcndpc2UgdGhl
CisgICAgcmVzdWx0IHNob3VsZCBiZSB3cml0dGVuIHRvIFxhIHJlc3VsdCBhbmQgdHJ1ZSBzaG91
bGQgYmUgcmV0dXJuZWQuIElmIHRoZSBwcm9tcHQgd2FzIG5vdCBjYW5jZWxsZWQgYnkgdGhlCisg
ICAgdXNlciwgdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCByZXR1cm4gdHJ1ZSBhbmQgdGhlIHJl
c3VsdCBzdHJpbmcgbXVzdCBub3QgYmUgbnVsbC4KKworICAgIFRoZSBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uIHVzZXMgUUlucHV0RGlhbG9nOjpnZXRUZXh0KCkuCisqLworYm9vbCBRV2ViUGFnZTo6
amF2YVNjcmlwdFByb21wdChRV2ViRnJhbWUgKmZyYW1lLCBjb25zdCBRU3RyaW5nJiBtc2csIGNv
bnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgUVN0cmluZyogcmVzdWx0KQoreworICAgIFFfVU5V
U0VEKGZyYW1lKTsKKyAgICBib29sIG9rID0gZmFsc2U7CisjaWZuZGVmIFFUX05PX0lOUFVURElB
TE9HCisKKyAgICBRSW5wdXREaWFsb2cgZGxnKHZpZXcoKSk7CisgICAgZGxnLnNldFdpbmRvd1Rp
dGxlKHRyKCJKYXZhU2NyaXB0IFByb21wdCAtICUxIikuYXJnKG1haW5GcmFtZSgpLT51cmwoKS5o
b3N0KCkpKTsKKworICAgIC8vIEhhY2sgdG8gZm9yY2UgdGhlIGRpYWxvZydzIFFMYWJlbCBpbnRv
IHBsYWluIHRleHQgbW9kZQorICAgIC8vIHByZXZlbnRzIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDQyOQorICAgIFFMYWJlbCogbGFiZWwgPSBkbGcuZmluZENoaWxk
PFFMYWJlbCo+KCk7CisgICAgaWYgKGxhYmVsKQorICAgICAgICBsYWJlbC0+c2V0VGV4dEZvcm1h
dChRdDo6UGxhaW5UZXh0KTsKKworICAgIC8vIGRvdWJsZSB0aGUgJidzIGJlY2F1c2Ugc2luZ2xl
ICYgd2lsbCB1bmRlcmxpbmUgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXIKKyAgICAvLyAoQWNjZWxl
cmF0b3IgbW5lbW9uaWNzKQorICAgIFFTdHJpbmcgZXNjTXNnKG1zZyk7CisgICAgZXNjTXNnLnJl
cGxhY2UoUUNoYXI6OmZyb21MYXRpbjEoJyYnKSwgUUxhdGluMVN0cmluZygiJiYiKSk7CisgICAg
ZGxnLnNldExhYmVsVGV4dChlc2NNc2cpOworCisgICAgZGxnLnNldFRleHRFY2hvTW9kZShRTGlu
ZUVkaXQ6Ok5vcm1hbCk7CisgICAgZGxnLnNldFRleHRWYWx1ZShkZWZhdWx0VmFsdWUpOworCisg
ICAgb2sgPSAhIWRsZy5leGVjKCk7CisKKyAgICBpZiAob2sgJiYgcmVzdWx0KQorICAgICAgICAq
cmVzdWx0ID0gZGxnLnRleHRWYWx1ZSgpOworI2VuZGlmCisgICAgcmV0dXJuIG9rOworfQorCisv
KiEKKyAgICBcZm4gYm9vbCBRV2ViUGFnZTo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpCisg
ICAgXHNpbmNlIDQuNgorICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSBKYXZhU2Ny
aXB0IHByb2dyYW0gaXMgcnVubmluZyBmb3IgYSBsb25nIHBlcmlvZCBvZiB0aW1lLgorCisgICAg
SWYgdGhlIHVzZXIgd2FudGVkIHRvIHN0b3AgdGhlIEphdmFTY3JpcHQgdGhlIGltcGxlbWVudGF0
aW9uIHNob3VsZCByZXR1cm4gdHJ1ZTsgb3RoZXJ3aXNlIGZhbHNlLgorCisgICAgVGhlIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24gZXhlY3V0ZXMgdGhlIHF1ZXJ5IHVzaW5nIFFNZXNzYWdlQm94Ojpp
bmZvcm1hdGlvbiB3aXRoIFFNZXNzYWdlQm94OjpZZXMgYW5kIFFNZXNzYWdlQm94OjpObyBidXR0
b25zLgorKi8KK2Jvb2wgUVdlYlBhZ2U6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKQorewor
I2lmZGVmIFFUX05PX01FU1NBR0VCT1gKKyAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIHJl
dHVybiBRTWVzc2FnZUJveDo6WWVzID09IFFNZXNzYWdlQm94OjppbmZvcm1hdGlvbih2aWV3KCks
IHRyKCJKYXZhU2NyaXB0IFByb2JsZW0gLSAlMSIpLmFyZyhtYWluRnJhbWUoKS0+dXJsKCkuaG9z
dCgpKSwgdHIoIlRoZSBzY3JpcHQgb24gdGhpcyBwYWdlIGFwcGVhcnMgdG8gaGF2ZSBhIHByb2Js
ZW0uIERvIHlvdSB3YW50IHRvIHN0b3AgdGhlIHNjcmlwdD8iKSwgUU1lc3NhZ2VCb3g6Olllcywg
UU1lc3NhZ2VCb3g6Ok5vKTsKKyNlbmRpZgorfQorCit2b2lkIFFXZWJQYWdlOjpzZXRGZWF0dXJl
UGVybWlzc2lvbihRV2ViRnJhbWUqIGZyYW1lLCBGZWF0dXJlIGZlYXR1cmUsIFBlcm1pc3Npb25Q
b2xpY3kgcG9saWN5KQoreworI2lmICFFTkFCTEUoTk9USUZJQ0FUSU9OUykgJiYgIUVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykgJiYgIUVOQUJMRShHRU9MT0NBVElPTikKKyAgICBRX1VOVVNF
RChmcmFtZSk7CisgICAgUV9VTlVTRUQocG9saWN5KTsKKyNlbmRpZgorICAgIHN3aXRjaCAoZmVh
dHVyZSkgeworICAgIGNhc2UgTm90aWZpY2F0aW9uczoKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQorICAgICAgICBpZiAocG9saWN5ICE9
IFBlcm1pc3Npb25Vbmtub3duKQorICAgICAgICAgICAgZC0+c2V0Tm90aWZpY2F0aW9uc0FsbG93
ZWRGb3JGcmFtZShmcmFtZS0+ZCwgKHBvbGljeSA9PSBQZXJtaXNzaW9uR3JhbnRlZEJ5VXNlcikp
OworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2VvbG9jYXRpb246CisjaWYgRU5B
QkxFKEdFT0xPQ0FUSU9OKSAmJiBIQVZFKFFUTE9DQVRJT04pCisgICAgICAgIGlmIChwb2xpY3kg
IT0gUGVybWlzc2lvblVua25vd24pCisgICAgICAgICAgICBkLT5zZXRHZW9sb2NhdGlvbkVuYWJs
ZWRGb3JGcmFtZShmcmFtZS0+ZCwgKHBvbGljeSA9PSBQZXJtaXNzaW9uR3JhbnRlZEJ5VXNlcikp
OworI2VuZGlmCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCisvKiEKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciBX
ZWJLaXQgd2FudHMgdG8gY3JlYXRlIGEgbmV3IHdpbmRvdyBvZiB0aGUgZ2l2ZW4gXGEgdHlwZSwg
Zm9yCisgICAgZXhhbXBsZSB3aGVuIGEgSmF2YVNjcmlwdCBwcm9ncmFtIHJlcXVlc3RzIHRvIG9w
ZW4gYSBkb2N1bWVudCBpbiBhIG5ldyB3aW5kb3cuCisKKyAgICBJZiB0aGUgbmV3IHdpbmRvdyBj
YW4gYmUgY3JlYXRlZCwgdGhlIG5ldyB3aW5kb3cncyBRV2ViUGFnZSBpcyByZXR1cm5lZDsgb3Ro
ZXJ3aXNlIGEgbnVsbCBwb2ludGVyIGlzIHJldHVybmVkLgorCisgICAgSWYgdGhlIHZpZXcgYXNz
b2NpYXRlZCB3aXRoIHRoZSB3ZWIgcGFnZSBpcyBhIFFXZWJWaWV3IG9iamVjdCwgdGhlbiB0aGUg
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3J3YXJkcworICAgIHRoZSByZXF1ZXN0IHRvIFFXZWJW
aWV3J3MgY3JlYXRlV2luZG93KCkgZnVuY3Rpb247IG90aGVyd2lzZSBpdCByZXR1cm5zIGEgbnVs
bCBwb2ludGVyLgorCisgICAgSWYgXGEgdHlwZSBpcyBXZWJNb2RhbERpYWxvZywgdGhlIGFwcGxp
Y2F0aW9uIG11c3QgY2FsbCBzZXRXaW5kb3dNb2RhbGl0eShRdDo6QXBwbGljYXRpb25Nb2RhbCkg
b24gdGhlIG5ldyB3aW5kb3cuCisKKyAgICBcbm90ZSBJbiB0aGUgY2FzZXMgd2hlbiB0aGUgd2lu
ZG93IGNyZWF0aW9uIGlzIGJlaW5nIHRyaWdnZXJlZCBieSBKYXZhU2NyaXB0LCBhcGFydCBmcm9t
CisgICAgcmVpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYXBwbGljYXRpb24gbXVzdCBhbHNvIHNl
dCB0aGUgSmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzIGF0dHJpYnV0ZQorICAgIG9mIFFXZWJTZXR0
aW5ncyB0byB0cnVlIGluIG9yZGVyIGZvciBpdCB0byBnZXQgY2FsbGVkLgorCisgICAgXHNhIGFj
Y2VwdE5hdmlnYXRpb25SZXF1ZXN0KCksIFFXZWJWaWV3OjpjcmVhdGVXaW5kb3coKQorKi8KK1FX
ZWJQYWdlICpRV2ViUGFnZTo6Y3JlYXRlV2luZG93KFdlYldpbmRvd1R5cGUgdHlwZSkKK3sKKyAg
ICBRV2ViVmlldyAqd2ViVmlldyA9IHFvYmplY3RfY2FzdDxRV2ViVmlldyo+KHZpZXcoKSk7Cisg
ICAgaWYgKHdlYlZpZXcpIHsKKyAgICAgICAgUVdlYlZpZXcgKm5ld1ZpZXcgPSB3ZWJWaWV3LT5j
cmVhdGVXaW5kb3codHlwZSk7CisgICAgICAgIGlmIChuZXdWaWV3KQorICAgICAgICAgICAgcmV0
dXJuIG5ld1ZpZXctPnBhZ2UoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIQorICAg
IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIFdlYktpdCBlbmNvdW50ZXJzIGEgSFRN
TCBvYmplY3QgZWxlbWVudCB3aXRoIHR5cGUgImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIi4gSXQg
aXMKKyAgICBjYWxsZWQgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgUVdlYlNldHRpbmdzOjpQ
bHVnaW5zRW5hYmxlZC4gVGhlIFxhIGNsYXNzaWQsIFxhIHVybCwgXGEgcGFyYW1OYW1lcyBhbmQg
XGEgcGFyYW1WYWx1ZXMKKyAgICBjb3JyZXNwb25kIHRvIHRoZSBIVE1MIG9iamVjdCBlbGVtZW50
IGF0dHJpYnV0ZXMgYW5kIGNoaWxkIGVsZW1lbnRzIHRvIGNvbmZpZ3VyZSB0aGUgZW1iZWRkYWJs
ZSBvYmplY3QuCisqLworUU9iamVjdCAqUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihjb25zdCBRU3Ry
aW5nICZjbGFzc2lkLCBjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFTdHJpbmdMaXN0ICZwYXJhbU5h
bWVzLCBjb25zdCBRU3RyaW5nTGlzdCAmcGFyYW1WYWx1ZXMpCit7CisgICAgUV9VTlVTRUQoY2xh
c3NpZCk7CisgICAgUV9VTlVTRUQodXJsKTsKKyAgICBRX1VOVVNFRChwYXJhbU5hbWVzKTsKKyAg
ICBRX1VOVVNFRChwYXJhbVZhbHVlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIQorICogIFJl
dHVybnMgdGhlIGxpc3Qgb2YgYWxsIGNvbnRlbnQgdHlwZXMgc3VwcG9ydGVkIGJ5IFFXZWJQYWdl
LgorICovCitRU3RyaW5nTGlzdCBRV2ViUGFnZTo6c3VwcG9ydGVkQ29udGVudFR5cGVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZC0+c3VwcG9ydGVkQ29udGVudFR5cGVzKCk7Cit9CisKKy8qIQor
ICogIFJldHVybnMgdHJ1ZSBpZiBRV2ViUGFnZSBjYW4gaGFuZGxlIHRoZSBnaXZlbiBcYSBtaW1l
VHlwZTsgb3RoZXJ3aXNlLCByZXR1cm5zIGZhbHNlLgorICovCitib29sIFFXZWJQYWdlOjpzdXBw
b3J0c0NvbnRlbnRUeXBlKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAoreworICAgIHJl
dHVybiBkLT5zdXBwb3J0c0NvbnRlbnRUeXBlKG1pbWVUeXBlKTsKK30KKworc3RhdGljIHZvaWQg
Y29sbGVjdENoaWxkRnJhbWVzKFFXZWJGcmFtZSogZnJhbWUsIFFMaXN0PFFXZWJGcmFtZSo+JiBs
aXN0KQoreworICAgIGxpc3QgPDwgZnJhbWUtPmNoaWxkRnJhbWVzKCk7CisgICAgUUxpc3RJdGVy
YXRvcjxRV2ViRnJhbWUqPiBpdChmcmFtZS0+Y2hpbGRGcmFtZXMoKSk7CisgICAgd2hpbGUgKGl0
Lmhhc05leHQoKSkKKyAgICAgICAgY29sbGVjdENoaWxkRnJhbWVzKGl0Lm5leHQoKSwgbGlzdCk7
Cit9CisKKy8qIQorICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB0byB0cmlnZ2VyIHRo
ZSBzcGVjaWZpZWQgXGEgYWN0aW9uLgorICAgIEl0IGlzIGFsc28gY2FsbGVkIGJ5IFF0IFdlYktp
dCBpZiB0aGUgdXNlciB0cmlnZ2VycyB0aGUgYWN0aW9uLCBmb3IgZXhhbXBsZQorICAgIHRocm91
Z2ggYSBjb250ZXh0IG1lbnUgaXRlbS4KKworICAgIElmIFxhIGFjdGlvbiBpcyBhIGNoZWNrYWJs
ZSBhY3Rpb24gdGhlbiBcYSBjaGVja2VkIHNwZWNpZmllZCB3aGV0aGVyIHRoZSBhY3Rpb24KKyAg
ICBpcyB0b2dnbGVkIG9yIG5vdC4KKworICAgIFxzYSBhY3Rpb24oKQorKi8KK3ZvaWQgUVdlYlBh
Z2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwgYm9vbCkKK3sKKyAgICBjb25zdCBj
aGFyICpjb21tYW5kID0gMDsKKyAgICBRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gbWFwcGVk
QWN0aW9uID0gUVdlYlBhZ2VBZGFwdGVyOjpOb0FjdGlvbjsKKyAgICBRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGUqIGhpdFRlc3RSZXN1bHQgPSBkLT5oaXRUZXN0UmVzdWx0LmQ7CisKKyAgICBzd2l0
Y2ggKGFjdGlvbikgeworICAgIGNhc2UgT3Blbkxpbms6CisgICAgY2FzZSBPcGVuTGlua0luTmV3
V2luZG93OgorICAgIGNhc2UgT3BlbkxpbmtJblRoaXNXaW5kb3c6CisgICAgY2FzZSBPcGVuRnJh
bWVJbk5ld1dpbmRvdzoKKyAgICBjYXNlIENvcHlMaW5rVG9DbGlwYm9hcmQ6CisgICAgY2FzZSBP
cGVuSW1hZ2VJbk5ld1dpbmRvdzoKKyAgICBjYXNlIERvd25sb2FkSW1hZ2VUb0Rpc2s6CisgICAg
Y2FzZSBEb3dubG9hZExpbmtUb0Rpc2s6CisgICAgY2FzZSBCYWNrOgorICAgIGNhc2UgRm9yd2Fy
ZDoKKyAgICBjYXNlIFN0b3A6CisgICAgY2FzZSBSZWxvYWQ6CisgICAgY2FzZSBTZXRUZXh0RGly
ZWN0aW9uRGVmYXVsdDoKKyAgICBjYXNlIFNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKKyAg
ICBjYXNlIFNldFRleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKKyAgICAgICAgbWFwcGVkQWN0aW9u
ID0gYWRhcHRlck1lbnVBY3Rpb25Gb3JXZWJBY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBSZWxvYWRBbmRCeXBhc3NDYWNoZTogLy8gTWFudWFsIG1hcHBpbmcKKyAgICAg
ICAgbWFwcGVkQWN0aW9uID0gUVdlYlBhZ2VBZGFwdGVyOjpSZWxvYWQ7CisgICAgICAgIGJyZWFr
OworI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKKyAgICBjYXNlIENvcHlJbWFnZVRvQ2xpcGJvYXJk
OgorICAgICAgICBRQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRQaXhtYXAoZC0+aGl0VGVz
dFJlc3VsdC5waXhtYXAoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29weUltYWdlVXJs
VG9DbGlwYm9hcmQ6CisgICAgICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldFRleHQo
ZC0+aGl0VGVzdFJlc3VsdC5pbWFnZVVybCgpLnRvU3RyaW5nKCkpOworICAgICAgICBicmVhazsK
KyNlbmRpZgorICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6IHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgICAgICBpZiAoIWQtPmhpdFRlc3RSZXN1bHQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IGQtPmdldE9yQ3JlYXRlSW5zcGVjdG9yKCk7IC8vIE1ha2Ugc3VyZSB0aGUgaW5zcGVjdG9yIGlz
IGNyZWF0ZWQKKyAgICAgICAgICAgIGQtPmluc3BlY3Rvci0+c2hvdygpOyAvLyBUaGUgaW5zcGVj
dG9yIGlzIGV4cGVjdGVkIHRvIGJlIHNob3duIG9uIGluc3BlY3Rpb24KKyAgICAgICAgICAgIG1h
cHBlZEFjdGlvbiA9IFFXZWJQYWdlQWRhcHRlcjo6SW5zcGVjdEVsZW1lbnQ7CisgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTdG9wU2NoZWR1bGVkUGFn
ZVJlZnJlc2g6IHsKKyAgICAgICAgUVdlYkZyYW1lKiB0b3BGcmFtZSA9IG1haW5GcmFtZSgpOwor
ICAgICAgICB0b3BGcmFtZS0+ZC0+Y2FuY2VsTG9hZCgpOworICAgICAgICBRTGlzdDxRV2ViRnJh
bWUqPiBjaGlsZEZyYW1lczsKKyAgICAgICAgY29sbGVjdENoaWxkRnJhbWVzKHRvcEZyYW1lLCBj
aGlsZEZyYW1lcyk7CisgICAgICAgIFFMaXN0SXRlcmF0b3I8UVdlYkZyYW1lKj4gaXQoY2hpbGRG
cmFtZXMpOworICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKQorICAgICAgICAgICAgaXQubmV4
dCgpLT5kLT5jYW5jZWxMb2FkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0
OgorICAgICAgICBjb21tYW5kID0gUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JDb21tYW5kRm9yV2Vi
QWN0aW9ucyhhY3Rpb24pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGNvbW1hbmQg
fHwgbWFwcGVkQWN0aW9uICE9IFFXZWJQYWdlQWRhcHRlcjo6Tm9BY3Rpb24pCisgICAgICAgIGQt
PnRyaWdnZXJBY3Rpb24obWFwcGVkQWN0aW9uLCBoaXRUZXN0UmVzdWx0LCBjb21tYW5kLCAvKmVu
ZFRvRW5kUmVsb2FkKi8gYWN0aW9uID09IFJlbG9hZEFuZEJ5cGFzc0NhY2hlKTsKK30KKworCitR
Q29sb3IgUVdlYlBhZ2VQcml2YXRlOjpjb2xvclNlbGVjdGlvblJlcXVlc3RlZChjb25zdCBRQ29s
b3IgJnNlbGVjdGVkQ29sb3IpCit7CisgICAgUUNvbG9yIHJldCA9IHNlbGVjdGVkQ29sb3I7Cisj
aWZuZGVmIFFUX05PX0NPTE9SRElBTE9HCisgICAgcmV0ID0gUUNvbG9yRGlhbG9nOjpnZXRDb2xv
cihzZWxlY3RlZENvbG9yLCBxLT52aWV3KCkpOworICAgIGlmICghcmV0LmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0ID0gc2VsZWN0ZWRDb2xvcjsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisK
K1FXZWJTZWxlY3RNZXRob2QgKlFXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlU2VsZWN0UG9wdXAoKQor
eworICAgIHJldHVybiBuZXcgUXRGYWxsYmFja1dlYlBvcHVwKHRoaXMpOworfQorCitRUmVjdCBR
V2ViUGFnZVByaXZhdGU6OnZpZXdSZWN0UmVsYXRpdmVUb1dpbmRvdygpCit7CisKKyAgICBRV2lk
Z2V0KiBvd25lcldpZGdldD0gY2xpZW50LmlzTnVsbCgpID8gMCA6IHFvYmplY3RfY2FzdDxRV2lk
Z2V0Kj4oY2xpZW50LT5vd25lcldpZGdldCgpKTsKKyAgICBpZiAoIW93bmVyV2lkZ2V0KQorICAg
ICAgICByZXR1cm4gUVJlY3QoKTsKKyAgICBRV2lkZ2V0KiB0b3BMZXZlbFdpZGdldCA9IG93bmVy
V2lkZ2V0LT53aW5kb3coKTsKKworICAgIFFQb2ludCB0b3BMZWZ0Q29ybmVyID0gb3duZXJXaWRn
ZXQtPm1hcEZyb20odG9wTGV2ZWxXaWRnZXQsIFFQb2ludCgwLCAwKSk7CisgICAgcmV0dXJuIFFS
ZWN0KHRvcExlZnRDb3JuZXIsIG93bmVyV2lkZ2V0LT5zaXplKCkpOworfQorCit2b2lkIFFXZWJQ
YWdlUHJpdmF0ZTo6Z2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdGVkKFFXZWJGcmFtZUFkYXB0
ZXIqIGZyYW1lKQoreworICAgIGVtaXQgcS0+ZmVhdHVyZVBlcm1pc3Npb25SZXF1ZXN0ZWQoUVdl
YkZyYW1lUHJpdmF0ZTo6a2l0KGZyYW1lKSwgUVdlYlBhZ2U6Okdlb2xvY2F0aW9uKTsKK30KKwor
dm9pZCBRV2ViUGFnZVByaXZhdGU6Omdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDYW5jZWxs
ZWQoUVdlYkZyYW1lQWRhcHRlciogZnJhbWUpCit7CisgICAgZW1pdCBxLT5mZWF0dXJlUGVybWlz
c2lvblJlcXVlc3RDYW5jZWxlZChRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUpLCBRV2ViUGFn
ZTo6R2VvbG9jYXRpb24pOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6bm90aWZpY2F0aW9u
c1Blcm1pc3Npb25SZXF1ZXN0ZWQoUVdlYkZyYW1lQWRhcHRlciogZnJhbWUpCit7CisgICAgZW1p
dCBxLT5mZWF0dXJlUGVybWlzc2lvblJlcXVlc3RlZChRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJh
bWUpLCBRV2ViUGFnZTo6Tm90aWZpY2F0aW9ucyk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRl
Ojpub3RpZmljYXRpb25zUGVybWlzc2lvblJlcXVlc3RDYW5jZWxsZWQoUVdlYkZyYW1lQWRhcHRl
ciogZnJhbWUpCit7CisgICAgZW1pdCBxLT5mZWF0dXJlUGVybWlzc2lvblJlcXVlc3RDYW5jZWxl
ZChRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUpLCBRV2ViUGFnZTo6Tm90aWZpY2F0aW9ucyk7
Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQor
eworICAgIHVwZGF0ZUVkaXRvckFjdGlvbnMoKTsKKworICAgIGVtaXQgcS0+Y29udGVudHNDaGFu
Z2VkKCk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKCkKK3sKKyAgICB1cGRhdGVFZGl0b3JBY3Rpb25zKCk7CisgICAgZW1pdCBxLT5zZWxlY3Rp
b25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjptaWNyb0ZvY3VzQ2hhbmdl
ZCgpCit7CisgICAgZW1pdCBxLT5taWNyb0ZvY3VzQ2hhbmdlZCgpOworfQorCit2b2lkIFFXZWJQ
YWdlUHJpdmF0ZTo6dHJpZ2dlckNvcHlBY3Rpb24oKQoreworICAgIHEtPnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2U6OkNvcHkpOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6dHJpZ2dlckFjdGlv
bkZvcktleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgUVdlYlBhZ2U6OldlYkFjdGlv
biBhY3Rpb24gPSBlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudChldmVudCk7CisgICAgcS0+dHJpZ2dl
ckFjdGlvbihhY3Rpb24pOworfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6Y2xlYXJVbmRvU3Rh
Y2soKQoreworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBpZiAodW5kb1N0YWNrKQorICAg
ICAgICB1bmRvU3RhY2stPmNsZWFyKCk7CisjZW5kaWYKK30KKworYm9vbCBRV2ViUGFnZVByaXZh
dGU6OmNhblVuZG8oKSBjb25zdAoreworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBpZiAo
IXVuZG9TdGFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB1bmRvU3RhY2st
PmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wg
UVdlYlBhZ2VQcml2YXRlOjpjYW5SZWRvKCkgY29uc3QKK3sKKyNpZm5kZWYgUVRfTk9fVU5ET1NU
QUNLCisgICAgaWYgKCF1bmRvU3RhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdW5kb1N0YWNrLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQorCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6dW5kbygpCit7CisjaWZuZGVmIFFUX05PX1VO
RE9TVEFDSworICAgIGlmICh1bmRvU3RhY2spCisgICAgICAgIHVuZG9TdGFjay0+dW5kbygpOwor
I2VuZGlmCit9CisKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjpyZWRvKCkKK3sKKyNpZm5kZWYgUVRf
Tk9fVU5ET1NUQUNLCisgICAgaWYgKHVuZG9TdGFjaykKKyAgICAgICAgdW5kb1N0YWNrLT5yZWRv
KCk7CisjZW5kaWYKK30KKwordm9pZCBRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZVVuZG9TdGVwKFFT
aGFyZWRQb2ludGVyPFVuZG9TdGVwUXQ+IHN0ZXApCit7CisjaWZuZGVmIFFUX05PX1VORE9TVEFD
SworICAgIC8vIENhbGwgdW5kb1N0YWNrKCkgZ2V0dGVyIGZpcnN0IHRvIGVuc3VyZSBzdGFjayBp
cyBjcmVhdGVkCisgICAgLy8gaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuCisgICAgcS0+dW5kb1N0
YWNrKCktPnB1c2gobmV3IFFXZWJVbmRvQ29tbWFuZChzdGVwKSk7CisjZW5kaWYKK30KKworY29u
c3QgY2hhciAqUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JDb21tYW5kRm9yS2V5RXZlbnQoUUtleUV2
ZW50KiBldmVudCkKK3sKKyAgICBRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlvbiA9IGVkaXRvckFj
dGlvbkZvcktleUV2ZW50KGV2ZW50KTsKKyAgICByZXR1cm4gZWRpdG9yQ29tbWFuZEZvcldlYkFj
dGlvbnMoYWN0aW9uKTsKK30KKworUVNpemUgUVdlYlBhZ2U6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0
Cit7CisgICAgaWYgKGQtPm1haW5GcmFtZSAmJiBkLT5tYWluRnJhbWUuZGF0YSgpLT5kLT5oYXNW
aWV3KCkpCisgICAgICAgIHJldHVybiBkLT5tYWluRnJhbWUuZGF0YSgpLT5kLT5mcmFtZVJlY3Qo
KS5zaXplKCk7CisKKyAgICByZXR1cm4gZC0+bV92aWV3cG9ydFNpemU7Cit9CisKKy8qIQorICAg
IFxwcm9wZXJ0eSBRV2ViUGFnZTo6dmlld3BvcnRTaXplCisgICAgXGJyaWVmIHRoZSBzaXplIG9m
IHRoZSB2aWV3cG9ydAorCisgICAgVGhlIHNpemUgYWZmZWN0cyBmb3IgZXhhbXBsZSB0aGUgdmlz
aWJpbGl0eSBvZiBzY3JvbGxiYXJzCisgICAgaWYgdGhlIGRvY3VtZW50IGlzIGxhcmdlciB0aGFu
IHRoZSB2aWV3cG9ydC4KKworICAgIEJ5IGRlZmF1bHQsIGZvciBhIG5ld2x5LWNyZWF0ZWQgV2Vi
IHBhZ2UsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBzaXplIHdpdGgKKyAgICB6ZXJvIHdpZHRo
IGFuZCBoZWlnaHQuCisKKyAgICBcc2EgUVdlYkZyYW1lOjpyZW5kZXIoKSwgcHJlZmVycmVkQ29u
dGVudHNTaXplCisqLwordm9pZCBRV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IFFTaXpl
ICZzaXplKSBjb25zdAoreworICAgIGQtPm1fdmlld3BvcnRTaXplID0gc2l6ZTsKKworICAgIFFX
ZWJGcmFtZUFkYXB0ZXIqIG1haW5GcmFtZSA9IGQtPm1haW5GcmFtZUFkYXB0ZXIoKTsKKyAgICBp
ZiAoIW1haW5GcmFtZS0+aGFzVmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYWluRnJh
bWUtPnNldFZpZXdwb3J0U2l6ZShzaXplKTsKK30KKworc3RhdGljIGludCBnZXRpbnRlbnYoY29u
c3QgY2hhciogdmFyaWFibGUpCit7CisgICAgYm9vbCBvazsKKyAgICBpbnQgdmFsdWUgPSBxZ2V0
ZW52KHZhcmlhYmxlKS50b0ludCgmb2spOworICAgIHJldHVybiAob2spID8gdmFsdWUgOiAtMTsK
K30KKworc3RhdGljIFFTaXplIHF1ZXJ5RGV2aWNlU2l6ZUZvclNjcmVlbkNvbnRhaW5pbmdXaWRn
ZXQoY29uc3QgUVdpZGdldCogd2lkZ2V0KQoreworICAgIFFEZXNrdG9wV2lkZ2V0KiBkZXNrdG9w
ID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCk7CisgICAgaWYgKCFkZXNrdG9wKQorICAgICAgICBy
ZXR1cm4gUVNpemUoKTsKKworICAgIFFTaXplIHNpemU7CisKKyAgICBpZiAod2lkZ2V0KSB7Cisg
ICAgICAgIC8vIFJldHVybnMgdGhlIGF2YWlsYWJsZSBnZW9tZXRyeSBvZiB0aGUgc2NyZWVuIHdo
aWNoIGNvbnRhaW5zIHdpZGdldC4KKyAgICAgICAgLy8gTk9URTogdGhpcyBtdXN0IGJlIHRoZSB0
aGUgZnVsbCBzY3JlZW4gc2l6ZSBpbmNsdWRpbmcgYW55IGZpeGVkIHN0YXR1cyBhcmVhcyBldGMu
CisgICAgICAgIHNpemUgPSBkZXNrdG9wLT5hdmFpbGFibGVHZW9tZXRyeSh3aWRnZXQpLnNpemUo
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2l6ZSA9IGRlc2t0b3AtPmF2YWlsYWJsZUdlb21ldHJ5
KCkuc2l6ZSgpOworCisgICAgLy8gVGhpcyBtdXN0IGJlIGluIHBvcnRyYWl0IG1vZGUsIGFkanVz
dCBpZiBub3QuCisgICAgaWYgKHNpemUud2lkdGgoKSA+IHNpemUuaGVpZ2h0KCkpIHsKKyAgICAg
ICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgICAgICBzaXplLnNldFdpZHRoKHNpemUu
aGVpZ2h0KCkpOworICAgICAgICBzaXplLnNldEhlaWdodCh3aWR0aCk7CisgICAgfQorCisgICAg
cmV0dXJuIHNpemU7Cit9CisKKy8qIQorICAgIENvbXB1dGVzIHRoZSBvcHRpbWFsIHZpZXdwb3J0
IGNvbmZpZ3VyYXRpb24gZ2l2ZW4gdGhlIFxhIGF2YWlsYWJsZVNpemUsIHdoZW4KKyAgICB1c2Vy
IGludGVyZmFjZSBjb21wb25lbnRzIGFyZSBkaXNyZWdhcmRlZC4KKworICAgIFRoZSBjb25maWd1
cmF0aW9uIGlzIGFsc28gZGVwZW5kZW50IG9uIHRoZSBkZXZpY2Ugc2NyZWVuIHNpemUgd2hpY2gg
aXMgb2J0YWluZWQKKyAgICBhdXRvbWF0aWNhbGx5LiBGb3IgdGVzdGluZyBwdXJwb3NlcyB0aGUg
c2l6ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHR3bworICAgIGVudmlyb25tZW50IHZh
cmlhYmxlcyBRVFdFQktJVF9ERVZJQ0VfV0lEVEggYW5kIFFUV0VCS0lUX0RFVklDRV9IRUlHSFQs
IHdoaWNoCisgICAgYm90aCBuZWVkcyB0byBiZSBzZXQuCisKKyAgICBUaGUgVmlld3BvcnRBdHRy
aWJ1dGVzIGluY2x1ZGVzIGEgcGl4ZWwgZGVuc2l0eSByYXRpbywgd2hpY2ggd2lsbCBhbHNvIGJl
IGV4cG9zZWQgdG8KKyAgICB0aGUgd2ViIGF1dGhvciB0aG91Z2ggdGhlIC13ZWJraXQtcGl4ZWwt
cmF0aW8gbWVkaWEgZmVhdHVyZS4gVGhpcyBpcyB0aGUgcmF0aW8KKyAgICBiZXR3ZWVuIDEgZGVu
c2l0eS1pbmRlcGVuZGVudCBwaXhlbCAoRFBJKSBhbmQgcGh5c2ljYWwgcGl4ZWxzLgorCisgICAg
QSBkZW5zaXR5LWluZGVwZW5kZW50IHBpeGVsIGlzIGVxdWl2YWxlbnQgdG8gb25lIHBoeXNpY2Fs
IHBpeGVsIG9uIGEgMTYwIERQSSBzY3JlZW4sCisgICAgc28gb24gb3VyIHBsYXRmb3JtIGFzc3Vt
ZXMgdGhhdCBhcyB0aGUgYmFzZWxpbmUgZGVuc2l0eS4KKworICAgIFRoZSBjb252ZXJzaW9uIG9m
IERJUCB1bml0cyB0byBzY3JlZW4gcGl4ZWxzIGlzIHF1aXRlIHNpbXBsZToKKworICAgIHBpeGVs
cyA9IERJUHMgKiAoZGVuc2l0eSAvIDE2MCkuCisKKyAgICBUaHVzLCBvbiBhIDI0MCBEUEkgc2Ny
ZWVuLCAxIERJUHMgd291bGQgZXF1YWwgMS41IHBoeXNpY2FsIHBpeGVscy4KKworICAgIEFuIGlu
dmFsaWQgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZCBpbiB0aGUgY2FzZSBhbiBlbXB0eSBzaXpl
IGlzIHBhc3NlZCB0byB0aGUKKyAgICBtZXRob2QuCisKKyAgICBcbm90ZSBUaGUgZGVuc2l0eSBp
cyBhdXRvbWF0aWNhbGx5IG9idGFpbmVkIGZyb20gdGhlIERQSSBvZiB0aGUgc2NyZWVuIHdoZXJl
IHRoZSBwYWdlCisgICAgaXMgYmVpbmcgc2hvd24sIGJ1dCBhcyBtYW55IFgxMSBzZXJ2ZXJzIGFy
ZSByZXBvcnRpbmcgd3JvbmcgRFBJLCBpdCBpcyBwb3NzaWJsZSB0bworICAgIG92ZXJyaWRlIGl0
IHVzaW5nIFFYMTFJbmZvOjpzZXRBcHBEcGlZKCkuCisqLworCitRV2ViUGFnZTo6Vmlld3BvcnRB
dHRyaWJ1dGVzIFFXZWJQYWdlOjp2aWV3cG9ydEF0dHJpYnV0ZXNGb3JTaXplKGNvbnN0IFFTaXpl
JiBhdmFpbGFibGVTaXplKSBjb25zdAoreworICAgIFZpZXdwb3J0QXR0cmlidXRlcyByZXN1bHQ7
CisKKyAgICBpZiAoYXZhaWxhYmxlU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiByZXN1
bHQ7IC8vIFJldHVybnMgYW4gaW52YWxpZCBpbnN0YW5jZS4KKworICAgIFFTaXplIGRldmljZVNp
emUoZ2V0aW50ZW52KCJRVFdFQktJVF9ERVZJQ0VfV0lEVEgiKSwgZ2V0aW50ZW52KCJRVFdFQktJ
VF9ERVZJQ0VfSEVJR0hUIikpOworCisgICAgLy8gQm90aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMg
bmVlZCB0byBiZSBzZXQgLSBvciB0aGV5IHdpbGwgYmUgaWdub3JlZC4KKyAgICBpZiAoZGV2aWNl
U2l6ZS5pc051bGwoKSkKKyAgICAgICAgZGV2aWNlU2l6ZSA9IHF1ZXJ5RGV2aWNlU2l6ZUZvclNj
cmVlbkNvbnRhaW5pbmdXaWRnZXQodmlldygpKTsKKyAgICBRV2ViUGFnZUFkYXB0ZXI6OlZpZXdw
b3J0QXR0cmlidXRlcyBhdHRyID0gZC0+dmlld3BvcnRBdHRyaWJ1dGVzRm9yU2l6ZShhdmFpbGFi
bGVTaXplLCBkZXZpY2VTaXplKTsKKworICAgIHJlc3VsdC5tX2lzVmFsaWQgPSB0cnVlOworICAg
IHJlc3VsdC5tX3NpemUgPSBhdHRyLnNpemU7CisgICAgcmVzdWx0Lm1faW5pdGlhbFNjYWxlRmFj
dG9yID0gYXR0ci5pbml0aWFsU2NhbGVGYWN0b3I7CisgICAgcmVzdWx0Lm1fbWluaW11bVNjYWxl
RmFjdG9yID0gYXR0ci5taW5pbXVtU2NhbGVGYWN0b3I7CisgICAgcmVzdWx0Lm1fbWF4aW11bVNj
YWxlRmFjdG9yID0gYXR0ci5tYXhpbXVtU2NhbGVGYWN0b3I7CisgICAgcmVzdWx0Lm1fZGV2aWNl
UGl4ZWxSYXRpbyA9IGF0dHIuZGV2aWNlUGl4ZWxSYXRpbzsKKyAgICByZXN1bHQubV9pc1VzZXJT
Y2FsYWJsZSA9IGF0dHIuaXNVc2VyU2NhbGFibGU7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitRU2l6ZSBRV2ViUGFnZTo6cHJlZmVycmVkQ29udGVudHNTaXplKCkgY29uc3QKK3sKKyAgICBR
V2ViRnJhbWVBZGFwdGVyKiBtYWluRnJhbWUgPSBkLT5tYWluRnJhbWUgPyBkLT5tYWluRnJhbWUt
PmQgOiAwOworICAgIFFTaXplIGN1c3RvbVNpemU7CisgICAgaWYgKG1haW5GcmFtZSAmJiBtYWlu
RnJhbWUtPmhhc1ZpZXcoKSkKKyAgICAgICAgY3VzdG9tU2l6ZSA9IG1haW5GcmFtZS0+Y3VzdG9t
TGF5b3V0U2l6ZSgpOworCisgICAgcmV0dXJuIGN1c3RvbVNpemUuaXNOdWxsKCkgPyBkLT5maXhl
ZExheW91dFNpemUgOiBjdXN0b21TaXplOworfQorCisvKiEKKyAgICBccHJvcGVydHkgUVdlYlBh
Z2U6OnByZWZlcnJlZENvbnRlbnRzU2l6ZQorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgYSBj
dXN0b20gc2l6ZSB1c2VkIGZvciBsYXlpbmcgb3V0IHRoZSBwYWdlIGNvbnRlbnRzLgorCisgICAg
QnkgZGVmYXVsdCBhbGwgcGFnZXMgYXJlIGxhaWQgb3V0IHVzaW5nIHRoZSB2aWV3cG9ydCBvZiB0
aGUgcGFnZSBhcyB0aGUgYmFzZS4KKworICAgIEFzIHBhZ2VzIG1vc3RseSBhcmUgZGVzaWduZWQg
Zm9yIGRlc2t0b3AgdXNhZ2UsIHRoZXkgb2Z0ZW4gZG8gbm90IGxheW91dCBwcm9wZXJseQorICAg
IG9uIHNtYWxsIGRldmljZXMgYXMgdGhlIGNvbnRlbnRzIHJlcXVpcmUgYSBjZXJ0YWluIHZpZXcg
d2lkdGguIEZvciB0aGlzIHJlYXNvbgorICAgIGl0IGlzIGNvbW1vbiB0byB1c2UgYSBkaWZmZXJl
bnQgbGF5b3V0IHNpemUgYW5kIHRoZW4gc2NhbGUgdGhlIGNvbnRlbnRzIHRvIGZpdAorICAgIHdp
dGhpbiB0aGUgYWN0dWFsIHZpZXcuCisKKyAgICBJZiB0aGlzIHByb3BlcnR5IGlzIHNldCB0byBh
IHZhbGlkIHNpemUsIHRoaXMgc2l6ZSBpcyB1c2VkIGZvciBhbGwgbGF5b3V0IG5lZWRzCisgICAg
aW5zdGVhZCBvZiB0aGUgc2l6ZSBvZiB0aGUgdmlld3BvcnQuCisKKyAgICBTZXR0aW5nIGFuIGlu
dmFsaWQgc2l6ZSwgbWFrZXMgdGhlIHBhZ2UgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSB2aWV3cG9y
dCBzaXplIGZvciBsYXlvdXQuCisKKyAgICBcc2Egdmlld3BvcnRTaXplCisqLwordm9pZCBRV2Vi
UGFnZTo6c2V0UHJlZmVycmVkQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBzaXplKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBtZXRob2QgdG8gc2V0Q3VzdG9tTGF5b3V0U2l6
ZQorCisgICAgZC0+Zml4ZWRMYXlvdXRTaXplID0gc2l6ZTsKKworICAgIFFXZWJGcmFtZUFkYXB0
ZXIqIG1haW5GcmFtZSA9IGQtPm1haW5GcmFtZUFkYXB0ZXIoKTsKKyAgICBpZiAoIW1haW5GcmFt
ZS0+aGFzVmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYWluRnJhbWUtPnNldEN1c3Rv
bUxheW91dFNpemUoc2l6ZSk7Cit9CisKKy8qCisgICAgVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBj
YWxsZWQgYWZ0ZXIgYW55IChhbmltYXRlZCkgc2Nyb2xsL3BhbiBoYXMgZW5kZWQsIGluIHRoZSBj
YXNlIHRoZSBhcHBsaWNhdGlvbiBoYW5kbGVzIHRoZQorICAgIHNjcm9sbGluZy9wYW5uaW5nIG9m
IHRoZSB3ZWIgY29udGVudHMuIFRoaXMgaXMgY29tbW9ubHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3
aXRoIHRpbGluZyB3aGVyZSBpcyBpdCBjb21tb24gZm9yCisgICAgdGhlIGFwcGxpY2F0aW9uIHRv
IHBhbiB0aGUgYWN0dWFsIHZpZXcsIHdoaWNoIHRoZW4gcmVzaXplcyBpdHNlbGYgdG8gdGhlIHNp
emUgb2YgdGhlIGNvbnRlbnRzLgorCisgICAgXG5vdGUgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIG1h
a2VzIFdlYktpdCBzdG9wIHRyeWluZyB0byBjYWxjdWxhdGUgdGhlIHZpc2libGVDb250ZW50UmVj
dC4gVG8gdHVybiB0aGF0IG9uCisgICAgYWdhaW4sIGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhbiBl
bXB0eSByZWN0LgorCisgICAgXHNhIFFHcmFwaGljc1dlYlZpZXc6OnJlc2l6ZXNUb0NvbnRlbnRz
LCBRV2ViU2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZAorKi8KK3ZvaWQgUVdlYlBh
Z2U6OnNldEFjdHVhbFZpc2libGVDb250ZW50UmVjdChjb25zdCBRUmVjdCYgcmVjdCkgY29uc3QK
K3sKKyAgICBRV2ViRnJhbWVBZGFwdGVyKiBtYWluRnJhbWUgPSBkLT5tYWluRnJhbWVBZGFwdGVy
KCk7CisgICAgaWYgKCFtYWluRnJhbWUtPmhhc1ZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbWFpbkZyYW1lLT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyZWN0KTsKK30KKworLyoh
CisgICAgXGZuIGJvb2wgUVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KFFXZWJGcmFt
ZSAqZnJhbWUsIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxdWVzdCwgUVdlYlBhZ2U6Ok5hdmln
YXRpb25UeXBlIHR5cGUpCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciBX
ZWJLaXQgcmVxdWVzdHMgdG8gbmF2aWdhdGUgXGEgZnJhbWUgdG8gdGhlIHJlc291cmNlIHNwZWNp
ZmllZCBieSBcYSByZXF1ZXN0IGJ5IG1lYW5zIG9mCisgICAgdGhlIHNwZWNpZmllZCBuYXZpZ2F0
aW9uIHR5cGUgXGEgdHlwZS4KKworICAgIElmIFxhIGZyYW1lIGlzIGEgbnVsbCBwb2ludGVyIHRo
ZW4gbmF2aWdhdGlvbiB0byBhIG5ldyB3aW5kb3cgaXMgcmVxdWVzdGVkLiBJZiB0aGUgcmVxdWVz
dCBpcworICAgIGFjY2VwdGVkIGNyZWF0ZVdpbmRvdygpIHdpbGwgYmUgY2FsbGVkLgorCisgICAg
VGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW50ZXJwcmV0cyB0aGUgcGFnZSdzIGxpbmtEZWxl
Z2F0aW9uUG9saWN5IGFuZCBlbWl0cyBsaW5rQ2xpY2tlZCBhY2NvcmRpbmdseSBvciByZXR1cm5z
IHRydWUKKyAgICB0byBsZXQgUVdlYlBhZ2UgaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIGl0c2VsZi4K
KworICAgIFxzYSBjcmVhdGVXaW5kb3coKQorKi8KK2Jvb2wgUVdlYlBhZ2U6OmFjY2VwdE5hdmln
YXRpb25SZXF1ZXN0KFFXZWJGcmFtZSAqZnJhbWUsIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVx
dWVzdCwgUVdlYlBhZ2U6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCit7CisgICAgUV9VTlVTRUQoZnJh
bWUpOworICAgIGlmICh0eXBlID09IE5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQpIHsKKyAgICAg
ICAgc3dpdGNoIChkLT5saW5rUG9saWN5KSB7CisgICAgICAgIGNhc2UgRG9udERlbGVnYXRlTGlu
a3M6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlIERlbGVnYXRlRXh0
ZXJuYWxMaW5rczoKKyAgICAgICAgICAgIGlmIChRV2ViUGFnZUFkYXB0ZXI6OnRyZWF0U2NoZW1l
QXNMb2NhbChyZXF1ZXN0LnVybCgpLnNjaGVtZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIGVtaXQgbGlua0NsaWNrZWQocmVxdWVzdC51cmwoKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY2FzZSBEZWxlZ2F0ZUFsbExpbmtzOgor
ICAgICAgICAgICAgZW1pdCBsaW5rQ2xpY2tlZChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
LyohCisgICAgXHByb3BlcnR5IFFXZWJQYWdlOjpoYXNTZWxlY3Rpb24KKyAgICBcYnJpZWYgd2hl
dGhlciB0aGlzIHBhZ2UgY29udGFpbnMgc2VsZWN0ZWQgY29udGVudCBvciBub3QuCisKKyAgICBc
c2Egc2VsZWN0aW9uQ2hhbmdlZCgpCisqLworYm9vbCBRV2ViUGFnZTo6aGFzU2VsZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICBkLT5jcmVhdGVNYWluRnJhbWUoKTsKKyAgICByZXR1cm4gZC0+aGFzU2Vs
ZWN0aW9uKCk7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRV2ViUGFnZTo6c2VsZWN0ZWRUZXh0
CisgICAgXGJyaWVmIHRoZSB0ZXh0IGN1cnJlbnRseSBzZWxlY3RlZAorCisgICAgQnkgZGVmYXVs
dCwgdGhpcyBwcm9wZXJ0eSBjb250YWlucyBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICBcc2Egc2Vs
ZWN0aW9uQ2hhbmdlZCgpLCBzZWxlY3RlZEh0bWwoKQorKi8KK1FTdHJpbmcgUVdlYlBhZ2U6OnNl
bGVjdGVkVGV4dCgpIGNvbnN0Cit7CisgICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CisgICAgcmV0
dXJuIGQtPnNlbGVjdGVkVGV4dCgpOworfQorCisvKiEKKyAgICBcc2luY2UgNC44CisgICAgXHBy
b3BlcnR5IFFXZWJQYWdlOjpzZWxlY3RlZEh0bWwKKyAgICBcYnJpZWYgdGhlIEhUTUwgY3VycmVu
dGx5IHNlbGVjdGVkCisKKyAgICBCeSBkZWZhdWx0LCB0aGlzIHByb3BlcnR5IGNvbnRhaW5zIGFu
IGVtcHR5IHN0cmluZy4KKworICAgIFxzYSBzZWxlY3Rpb25DaGFuZ2VkKCksIHNlbGVjdGVkVGV4
dCgpCisqLworUVN0cmluZyBRV2ViUGFnZTo6c2VsZWN0ZWRIdG1sKCkgY29uc3QKK3sKKyAgICBk
LT5jcmVhdGVNYWluRnJhbWUoKTsKKyAgICByZXR1cm4gZC0+c2VsZWN0ZWRIdG1sKCk7Cit9CisK
KyNpZm5kZWYgUVRfTk9fQUNUSU9OCisvKiEKKyAgIFJldHVybnMgYSBRQWN0aW9uIGZvciB0aGUg
c3BlY2lmaWVkIFdlYkFjdGlvbiBcYSBhY3Rpb24uCisKKyAgIFRoZSBhY3Rpb24gaXMgb3duZWQg
YnkgdGhlIFFXZWJQYWdlIGJ1dCB5b3UgY2FuIGN1c3RvbWl6ZSB0aGUgbG9vayBieQorICAgY2hh
bmdpbmcgaXRzIHByb3BlcnRpZXMuCisKKyAgIFFXZWJQYWdlIGFsc28gdGFrZXMgY2FyZSBvZiBp
bXBsZW1lbnRpbmcgdGhlIGFjdGlvbiwgc28gdGhhdCB1cG9uCisgICB0cmlnZ2VyaW5nIHRoZSBj
b3JyZXNwb25kaW5nIGFjdGlvbiBpcyBwZXJmb3JtZWQgb24gdGhlIHBhZ2UuCisKKyAgIFxzYSB0
cmlnZ2VyQWN0aW9uKCkKKyovCitRQWN0aW9uICpRV2ViUGFnZTo6YWN0aW9uKFdlYkFjdGlvbiBh
Y3Rpb24pIGNvbnN0Cit7CisgICAgaWYgKGFjdGlvbiA9PSBRV2ViUGFnZTo6Tm9XZWJBY3Rpb24p
CisgICAgICAgIHJldHVybiAwOworICAgIGlmIChkLT5hY3Rpb25zW2FjdGlvbl0pCisgICAgICAg
IHJldHVybiBkLT5hY3Rpb25zW2FjdGlvbl07CisKKyAgICBRU3RyaW5nIHRleHQ7CisgICAgUUlj
b24gaWNvbjsKKyAgICBRU3R5bGUgKnN0eWxlID0gZC0+Y2xpZW50ID8gZC0+Y2xpZW50LT5zdHls
ZSgpIDogcUFwcC0+c3R5bGUoKTsKKyAgICBib29sIGNoZWNrYWJsZSA9IGZhbHNlOworICAgIFFX
ZWJQYWdlQWRhcHRlcjo6TWVudUFjdGlvbiBtYXBwZWRBY3Rpb24gPSBRV2ViUGFnZUFkYXB0ZXI6
Ok5vQWN0aW9uOworCisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAvLyB0byBiZSBmZXRjaGVk
IGZyb20gTG9jYWxpemVkU3RyaW5nc1F0IHZpYSB0aGUgcGFnZSBhZGFwdGVyCisgICAgY2FzZSBP
cGVuTGluazoKKyAgICBjYXNlIE9wZW5MaW5rSW5OZXdXaW5kb3c6CisgICAgY2FzZSBPcGVuRnJh
bWVJbk5ld1dpbmRvdzoKKyAgICBjYXNlIE9wZW5MaW5rSW5UaGlzV2luZG93OgorICAgIGNhc2Ug
RG93bmxvYWRMaW5rVG9EaXNrOgorICAgIGNhc2UgQ29weUxpbmtUb0NsaXBib2FyZDoKKyAgICBj
YXNlIE9wZW5JbWFnZUluTmV3V2luZG93OgorICAgIGNhc2UgRG93bmxvYWRJbWFnZVRvRGlzazoK
KyAgICBjYXNlIENvcHlJbWFnZVRvQ2xpcGJvYXJkOgorICAgIGNhc2UgQ29weUltYWdlVXJsVG9D
bGlwYm9hcmQ6CisgICAgY2FzZSBDdXQ6CisgICAgY2FzZSBDb3B5OgorICAgIGNhc2UgUGFzdGU6
CisgICAgY2FzZSBTZWxlY3RBbGw6CisgICAgY2FzZSBTZXRUZXh0RGlyZWN0aW9uRGVmYXVsdDoK
KyAgICBjYXNlIFNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKKyAgICBjYXNlIFNldFRleHRE
aXJlY3Rpb25SaWdodFRvTGVmdDoKKyAgICBjYXNlIFRvZ2dsZUJvbGQ6CisgICAgY2FzZSBUb2dn
bGVJdGFsaWM6CisgICAgY2FzZSBUb2dnbGVVbmRlcmxpbmU6CisgICAgICAgIG1hcHBlZEFjdGlv
biA9IGFkYXB0ZXJNZW51QWN0aW9uRm9yV2ViQWN0aW9uKGFjdGlvbik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAg
ICAgbWFwcGVkQWN0aW9uID0gUVdlYlBhZ2VBZGFwdGVyOjpJbnNwZWN0RWxlbWVudDsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKworICAgICAgICAvLyBpY29uIG5lZWRlZCBhcyB3ZWxsLCBtYXAg
YnkgaGFuZC4KKyAgICBjYXNlIEJhY2s6CisgICAgICAgIG1hcHBlZEFjdGlvbiA9IFFXZWJQYWdl
QWRhcHRlcjo6QmFjazsKKyAgICAgICAgaWNvbiA9IHN0eWxlLT5zdGFuZGFyZEljb24oUVN0eWxl
OjpTUF9BcnJvd0JhY2spOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcndhcmQ6CisgICAg
ICAgIG1hcHBlZEFjdGlvbiA9IFFXZWJQYWdlQWRhcHRlcjo6Rm9yd2FyZDsKKyAgICAgICAgaWNv
biA9IHN0eWxlLT5zdGFuZGFyZEljb24oUVN0eWxlOjpTUF9BcnJvd0ZvcndhcmQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFN0b3A6CisgICAgICAgIG1hcHBlZEFjdGlvbiA9IFFXZWJQYWdl
QWRhcHRlcjo6U3RvcDsKKyAgICAgICAgaWNvbiA9IHN0eWxlLT5zdGFuZGFyZEljb24oUVN0eWxl
OjpTUF9Ccm93c2VyU3RvcCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVsb2FkOgorICAg
ICAgICBtYXBwZWRBY3Rpb24gPSBRV2ViUGFnZUFkYXB0ZXI6OlJlbG9hZDsKKyAgICAgICAgaWNv
biA9IHN0eWxlLT5zdGFuZGFyZEljb24oUVN0eWxlOjpTUF9Ccm93c2VyUmVsb2FkKTsKKyAgICAg
ICAgYnJlYWs7CisKKyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgY2FzZSBVbmRvOiB7Cisg
ICAgICAgIFFBY3Rpb24gKmEgPSB1bmRvU3RhY2soKS0+Y3JlYXRlVW5kb0FjdGlvbihkLT5xKTsK
KyAgICAgICAgZC0+YWN0aW9uc1thY3Rpb25dID0gYTsKKyAgICAgICAgcmV0dXJuIGE7CisgICAg
fQorICAgIGNhc2UgUmVkbzogeworICAgICAgICBRQWN0aW9uICphID0gdW5kb1N0YWNrKCktPmNy
ZWF0ZVJlZG9BY3Rpb24oZC0+cSk7CisgICAgICAgIGQtPmFjdGlvbnNbYWN0aW9uXSA9IGE7Cisg
ICAgICAgIHJldHVybiBhOworICAgIH0KKyNlbmRpZiAvLyBRVF9OT19VTkRPU1RBQ0sKKyAgICAg
ICAgLy8gaW4gcGxhY2UgbDEwbgorICAgICAgICBjYXNlIE1vdmVUb05leHRDaGFyOgorICAgICAg
ICAgICAgdGV4dCA9IHRyKCJNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIG5leHQgY2hhcmFjdGVyIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb3ZlVG9QcmV2aW91c0NoYXI6Cisg
ICAgICAgICAgICB0ZXh0ID0gdHIoIk1vdmUgdGhlIGN1cnNvciB0byB0aGUgcHJldmlvdXMgY2hh
cmFjdGVyIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb3ZlVG9OZXh0V29y
ZDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBuZXh0IHdv
cmQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1vdmVUb1ByZXZpb3VzV29y
ZDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBwcmV2aW91
cyB3b3JkIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb3ZlVG9OZXh0TGlu
ZToKKyAgICAgICAgICAgIHRleHQgPSB0cigiTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBuZXh0IGxp
bmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1vdmVUb1ByZXZpb3VzTGlu
ZToKKyAgICAgICAgICAgIHRleHQgPSB0cigiTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBwcmV2aW91
cyBsaW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb3ZlVG9TdGFydE9m
TGluZToKKyAgICAgICAgICAgIHRleHQgPSB0cigiTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBzdGFy
dCBvZiB0aGUgbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTW92ZVRv
RW5kT2ZMaW5lOgorICAgICAgICAgICAgdGV4dCA9IHRyKCJNb3ZlIHRoZSBjdXJzb3IgdG8gdGhl
IGVuZCBvZiB0aGUgbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTW92
ZVRvU3RhcnRPZkJsb2NrOgorICAgICAgICAgICAgdGV4dCA9IHRyKCJNb3ZlIHRoZSBjdXJzb3Ig
dG8gdGhlIHN0YXJ0IG9mIHRoZSBibG9jayIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTW92ZVRvRW5kT2ZCbG9jazoKKyAgICAgICAgICAgIHRleHQgPSB0cigiTW92ZSB0aGUg
Y3Vyc29yIHRvIHRoZSBlbmQgb2YgdGhlIGJsb2NrIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBNb3ZlVG9TdGFydE9mRG9jdW1lbnQ6CisgICAgICAgICAgICB0ZXh0ID0gdHIo
Ik1vdmUgdGhlIGN1cnNvciB0byB0aGUgc3RhcnQgb2YgdGhlIGRvY3VtZW50Iik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNb3ZlVG9FbmRPZkRvY3VtZW50OgorICAgICAgICAg
ICAgdGV4dCA9IHRyKCJNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNlbGVjdE5leHRDaGFyOgorICAg
ICAgICAgICAgdGV4dCA9IHRyKCJTZWxlY3QgdG8gdGhlIG5leHQgY2hhcmFjdGVyIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3RQcmV2aW91c0NoYXI6CisgICAgICAg
ICAgICB0ZXh0ID0gdHIoIlNlbGVjdCB0byB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3ROZXh0V29yZDoKKyAgICAgICAgICAg
IHRleHQgPSB0cigiU2VsZWN0IHRvIHRoZSBuZXh0IHdvcmQiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNlbGVjdFByZXZpb3VzV29yZDoKKyAgICAgICAgICAgIHRleHQgPSB0
cigiU2VsZWN0IHRvIHRoZSBwcmV2aW91cyB3b3JkIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTZWxlY3ROZXh0TGluZToKKyAgICAgICAgICAgIHRleHQgPSB0cigiU2VsZWN0
IHRvIHRoZSBuZXh0IGxpbmUiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNl
bGVjdFByZXZpb3VzTGluZToKKyAgICAgICAgICAgIHRleHQgPSB0cigiU2VsZWN0IHRvIHRoZSBw
cmV2aW91cyBsaW5lIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3RT
dGFydE9mTGluZToKKyAgICAgICAgICAgIHRleHQgPSB0cigiU2VsZWN0IHRvIHRoZSBzdGFydCBv
ZiB0aGUgbGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2VsZWN0RW5k
T2ZMaW5lOgorICAgICAgICAgICAgdGV4dCA9IHRyKCJTZWxlY3QgdG8gdGhlIGVuZCBvZiB0aGUg
bGluZSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2VsZWN0U3RhcnRPZkJs
b2NrOgorICAgICAgICAgICAgdGV4dCA9IHRyKCJTZWxlY3QgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi
bG9jayIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2VsZWN0RW5kT2ZCbG9j
azoKKyAgICAgICAgICAgIHRleHQgPSB0cigiU2VsZWN0IHRvIHRoZSBlbmQgb2YgdGhlIGJsb2Nr
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3RTdGFydE9mRG9jdW1l
bnQ6CisgICAgICAgICAgICB0ZXh0ID0gdHIoIlNlbGVjdCB0byB0aGUgc3RhcnQgb2YgdGhlIGRv
Y3VtZW50Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3RFbmRPZkRv
Y3VtZW50OgorICAgICAgICAgICAgdGV4dCA9IHRyKCJTZWxlY3QgdG8gdGhlIGVuZCBvZiB0aGUg
ZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERlbGV0ZVN0YXJ0
T2ZXb3JkOgorICAgICAgICAgICAgdGV4dCA9IHRyKCJEZWxldGUgdG8gdGhlIHN0YXJ0IG9mIHRo
ZSB3b3JkIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEZWxldGVFbmRPZldv
cmQ6CisgICAgICAgICAgICB0ZXh0ID0gdHIoIkRlbGV0ZSB0byB0aGUgZW5kIG9mIHRoZSB3b3Jk
Iik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEluc2VydFBhcmFncmFwaFNl
cGFyYXRvcjoKKyAgICAgICAgICAgIHRleHQgPSB0cigiSW5zZXJ0IGEgbmV3IHBhcmFncmFwaCIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zZXJ0TGluZVNlcGFyYXRvcjoK
KyAgICAgICAgICAgIHRleHQgPSB0cigiSW5zZXJ0IGEgbmV3IGxpbmUiKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgUGFzdGVBbmRNYXRjaFN0eWxlOgorICAgICAgICAgICAg
dGV4dCA9IHRyKCJQYXN0ZSBhbmQgTWF0Y2ggU3R5bGUiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFJlbW92ZUZvcm1hdDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiUmVtb3Zl
IGZvcm1hdHRpbmciKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVG9nZ2xl
U3RyaWtldGhyb3VnaDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiU3RyaWtldGhyb3VnaCIpOwor
ICAgICAgICAgICAgY2hlY2thYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFRvZ2dsZVN1YnNjcmlwdDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiU3Vic2NyaXB0
Iik7CisgICAgICAgICAgICBjaGVja2FibGUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVG9nZ2xlU3VwZXJzY3JpcHQ6CisgICAgICAgICAgICB0ZXh0ID0gdHIoIlN1
cGVyc2NyaXB0Iik7CisgICAgICAgICAgICBjaGVja2FibGUgPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSW5zZXJ0VW5vcmRlcmVkTGlzdDoKKyAgICAgICAgICAgIHRl
eHQgPSB0cigiSW5zZXJ0IEJ1bGxldGVkIExpc3QiKTsKKyAgICAgICAgICAgIGNoZWNrYWJsZSA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnNlcnRPcmRlcmVkTGlz
dDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiSW5zZXJ0IE51bWJlcmVkIExpc3QiKTsKKyAgICAg
ICAgICAgIGNoZWNrYWJsZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBJbmRlbnQ6CisgICAgICAgICAgICB0ZXh0ID0gdHIoIkluZGVudCIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgT3V0ZGVudDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiT3V0
ZGVudCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWxpZ25DZW50ZXI6Cisg
ICAgICAgICAgICB0ZXh0ID0gdHIoIkNlbnRlciIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQWxpZ25KdXN0aWZpZWQ6CisgICAgICAgICAgICB0ZXh0ID0gdHIoIkp1c3RpZnki
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFsaWduTGVmdDoKKyAgICAgICAg
ICAgIHRleHQgPSB0cigiQWxpZ24gTGVmdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQWxpZ25SaWdodDoKKyAgICAgICAgICAgIHRleHQgPSB0cigiQWxpZ24gUmlnaHQiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5vV2ViQWN0aW9uOgorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKG1hcHBlZEFjdGlvbiAhPSBRV2ViUGFnZUFkYXB0ZXI6Ok5vQWN0aW9uKQorICAg
ICAgICB0ZXh0ID0gZC0+Y29udGV4dE1lbnVJdGVtVGFnRm9yQWN0aW9uKG1hcHBlZEFjdGlvbiwg
JmNoZWNrYWJsZSk7CisKKyAgICBpZiAodGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgUUFjdGlvbiAqYSA9IG5ldyBRQWN0aW9uKGQtPnEpOworICAgIGEtPnNldFRleHQo
dGV4dCk7CisgICAgYS0+c2V0RGF0YShhY3Rpb24pOworICAgIGEtPnNldENoZWNrYWJsZShjaGVj
a2FibGUpOworICAgIGEtPnNldEljb24oaWNvbik7CisKKyAgICBjb25uZWN0KGEsIFNJR05BTCh0
cmlnZ2VyZWQoYm9vbCkpLAorICAgICAgICB0aGlzLCBTTE9UKF9xX3dlYkFjdGlvblRyaWdnZXJl
ZChib29sKSkpOworCisgICAgZC0+YWN0aW9uc1thY3Rpb25dID0gYTsKKyAgICBkLT51cGRhdGVB
Y3Rpb24oYWN0aW9uKTsKKyAgICByZXR1cm4gYTsKK30KKyNlbmRpZiAvLyBRVF9OT19BQ1RJT04K
KworLyohCisgICAgXHByb3BlcnR5IFFXZWJQYWdlOjptb2RpZmllZAorICAgIFxicmllZiB3aGV0
aGVyIHRoZSBwYWdlIGNvbnRhaW5zIHVuc3VibWl0dGVkIGZvcm0gZGF0YSwgb3IgdGhlIGNvbnRl
bnRzIGhhdmUgYmVlbiBjaGFuZ2VkLgorCisgICAgQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBp
cyBmYWxzZS4KKworICAgIFxzYSBjb250ZW50c0NoYW5nZWQoKSwgY29udGVudEVkaXRhYmxlLCB1
bmRvU3RhY2soKQorKi8KK2Jvb2wgUVdlYlBhZ2U6OmlzTW9kaWZpZWQoKSBjb25zdAoreworI2lm
ZGVmIFFUX05PX1VORE9TVEFDSworICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgaWYgKCFk
LT51bmRvU3RhY2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZC0+dW5kb1N0
YWNrLT5jYW5VbmRvKCk7CisjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCit9CisKKyNpZm5kZWYg
UVRfTk9fVU5ET1NUQUNLCisvKiEKKyAgICBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdW5kbyBz
dGFjayB1c2VkIGZvciBlZGl0YWJsZSBjb250ZW50LgorCisgICAgXHNhIG1vZGlmaWVkCisqLwor
UVVuZG9TdGFjayAqUVdlYlBhZ2U6OnVuZG9TdGFjaygpIGNvbnN0Cit7CisgICAgaWYgKCFkLT51
bmRvU3RhY2spCisgICAgICAgIGQtPnVuZG9TdGFjayA9IG5ldyBRVW5kb1N0YWNrKGNvbnN0X2Nh
c3Q8UVdlYlBhZ2UgKj4odGhpcykpOworCisgICAgcmV0dXJuIGQtPnVuZG9TdGFjazsKK30KKyNl
bmRpZiAvLyBRVF9OT19VTkRPU1RBQ0sKKworLyohIFxyZWltcAorKi8KK2Jvb2wgUVdlYlBhZ2U6
OmV2ZW50KFFFdmVudCAqZXYpCit7CisgICAgc3dpdGNoIChldi0+dHlwZSgpKSB7CisgICAgY2Fz
ZSBRRXZlbnQ6OlRpbWVyOgorICAgICAgICBkLT50aW1lckV2ZW50KHN0YXRpY19jYXN0PFFUaW1l
ckV2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92
ZToKKyAgICAgICAgZC0+bW91c2VNb3ZlRXZlbnQoc3RhdGljX2Nhc3Q8UU1vdXNlRXZlbnQqPihl
dikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoK
KyAgICAgICAgZC0+bW91c2VQcmVzc0V2ZW50KHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4oZXYp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uRGJsQ2xpY2s6
CisgICAgICAgIGQtPm1vdXNlRG91YmxlQ2xpY2tFdmVudChzdGF0aWNfY2FzdDxRTW91c2VFdmVu
dCo+KGV2KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvblJl
bGVhc2U6CisgICAgICAgIGQtPm1vdXNlUmVsZWFzZUV2ZW50KHN0YXRpY19jYXN0PFFNb3VzZUV2
ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisjaWYgIWRlZmluZWQoUVRfTk9fR1JBUEhJQ1NW
SUVXKQorICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5lTW91c2VNb3ZlOiB7CisgICAgICAg
IFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCAqZ3NFdiA9IHN0YXRpY19jYXN0PFFHcmFwaGljc1Nj
ZW5lTW91c2VFdmVudCo+KGV2KTsKKyAgICAgICAgUU1vdXNlRXZlbnQgZHVtbXlFdmVudChRRXZl
bnQ6Ok1vdXNlTW92ZSwgZ3NFdi0+cG9zKCksIGdzRXYtPnNjcmVlblBvcygpLCBnc0V2LT5idXR0
b24oKSwgZ3NFdi0+YnV0dG9ucygpLCBnc0V2LT5tb2RpZmllcnMoKSk7CisgICAgICAgIGQtPm1v
dXNlTW92ZUV2ZW50KCZkdW1teUV2ZW50KTsKKyAgICAgICAgZXYtPnNldEFjY2VwdGVkKGR1bW15
RXZlbnQuaXNBY2NlcHRlZCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUUV2
ZW50OjpHcmFwaGljc1NjZW5lTW91c2VSZWxlYXNlOiB7CisgICAgICAgIFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCAqZ3NFdiA9IHN0YXRpY19jYXN0PFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCo+
KGV2KTsKKyAgICAgICAgUU1vdXNlRXZlbnQgZHVtbXlFdmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9u
UmVsZWFzZSwgZ3NFdi0+cG9zKCksIGdzRXYtPnNjcmVlblBvcygpLCBnc0V2LT5idXR0b24oKSwg
Z3NFdi0+YnV0dG9ucygpLCBnc0V2LT5tb2RpZmllcnMoKSk7CisgICAgICAgIGQtPmFkanVzdFBv
aW50Rm9yQ2xpY2tpbmcoJmR1bW15RXZlbnQpOworICAgICAgICBkLT5tb3VzZVJlbGVhc2VFdmVu
dCgmZHVtbXlFdmVudCk7CisgICAgICAgIGV2LT5zZXRBY2NlcHRlZChkdW1teUV2ZW50LmlzQWNj
ZXB0ZWQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFFFdmVudDo6R3JhcGhp
Y3NTY2VuZU1vdXNlUHJlc3M6IHsKKyAgICAgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50ICpn
c0V2ID0gc3RhdGljX2Nhc3Q8UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kj4oZXYpOworICAgICAg
ICBRTW91c2VFdmVudCBkdW1teUV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgZ3NFdi0+
cG9zKCksIGdzRXYtPnNjcmVlblBvcygpLCBnc0V2LT5idXR0b24oKSwgZ3NFdi0+YnV0dG9ucygp
LCBnc0V2LT5tb2RpZmllcnMoKSk7CisgICAgICAgIGQtPmFkanVzdFBvaW50Rm9yQ2xpY2tpbmco
JmR1bW15RXZlbnQpOworICAgICAgICBkLT5tb3VzZVByZXNzRXZlbnQoJmR1bW15RXZlbnQpOwor
ICAgICAgICBldi0+c2V0QWNjZXB0ZWQoZHVtbXlFdmVudC5pc0FjY2VwdGVkKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVNb3VzZURvdWJs
ZUNsaWNrOiB7CisgICAgICAgIFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCAqZ3NFdiA9IHN0YXRp
Y19jYXN0PFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCo+KGV2KTsKKyAgICAgICAgUU1vdXNlRXZl
bnQgZHVtbXlFdmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uRGJsQ2xpY2ssIGdzRXYtPnBvcygpLCBn
c0V2LT5zY3JlZW5Qb3MoKSwgZ3NFdi0+YnV0dG9uKCksIGdzRXYtPmJ1dHRvbnMoKSwgZ3NFdi0+
bW9kaWZpZXJzKCkpOworICAgICAgICBkLT5hZGp1c3RQb2ludEZvckNsaWNraW5nKCZkdW1teUV2
ZW50KTsKKyAgICAgICAgZC0+bW91c2VEb3VibGVDbGlja0V2ZW50KCZkdW1teUV2ZW50KTsKKyAg
ICAgICAgZXYtPnNldEFjY2VwdGVkKGR1bW15RXZlbnQuaXNBY2NlcHRlZCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorI2VuZGlmCisjaWZuZGVmIFFUX05PX0NPTlRFWFRNRU5VCisgICAgY2Fz
ZSBRRXZlbnQ6OkNvbnRleHRNZW51OgorICAgICAgICBkLT5jb250ZXh0TWVudUV2ZW50KHN0YXRp
Y19jYXN0PFFDb250ZXh0TWVudUV2ZW50Kj4oZXYpLT5nbG9iYWxQb3MoKSk7CisgICAgICAgIGJy
ZWFrOworI2lmICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklFVykKKyAgICBjYXNlIFFFdmVudDo6
R3JhcGhpY3NTY2VuZUNvbnRleHRNZW51OgorICAgICAgICBkLT5jb250ZXh0TWVudUV2ZW50KHN0
YXRpY19jYXN0PFFHcmFwaGljc1NjZW5lQ29udGV4dE1lbnVFdmVudCo+KGV2KS0+c2NyZWVuUG9z
KCkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorI2VuZGlmCisjaWZuZGVmIFFUX05PX1dIRUVM
RVZFTlQKKyAgICBjYXNlIFFFdmVudDo6V2hlZWw6CisgICAgICAgIGQtPndoZWVsRXZlbnQoc3Rh
dGljX2Nhc3Q8UVdoZWVsRXZlbnQqPihldiksIFFBcHBsaWNhdGlvbjo6d2hlZWxTY3JvbGxMaW5l
cygpKTsKKyAgICAgICAgYnJlYWs7CisjaWYgIWRlZmluZWQoUVRfTk9fR1JBUEhJQ1NWSUVXKQor
ICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5lV2hlZWw6IHsKKyAgICAgICAgUUdyYXBoaWNz
U2NlbmVXaGVlbEV2ZW50ICpnc0V2ID0gc3RhdGljX2Nhc3Q8UUdyYXBoaWNzU2NlbmVXaGVlbEV2
ZW50Kj4oZXYpOworICAgICAgICBRV2hlZWxFdmVudCBkdW1teUV2ZW50KGdzRXYtPnBvcygpLCBn
c0V2LT5zY3JlZW5Qb3MoKSwgZ3NFdi0+ZGVsdGEoKSwgZ3NFdi0+YnV0dG9ucygpLCBnc0V2LT5t
b2RpZmllcnMoKSwgZ3NFdi0+b3JpZW50YXRpb24oKSk7CisgICAgICAgIGQtPndoZWVsRXZlbnQo
JmR1bW15RXZlbnQsIFFBcHBsaWNhdGlvbjo6d2hlZWxTY3JvbGxMaW5lcygpKTsKKyAgICAgICAg
ZXYtPnNldEFjY2VwdGVkKGR1bW15RXZlbnQuaXNBY2NlcHRlZCgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorI2VuZGlmCisjZW5kaWYKKyAgICBjYXNlIFFFdmVudDo6S2V5UHJlc3M6CisgICAg
ICAgIGQtPmtleVByZXNzRXZlbnQoc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZXYpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6OktleVJlbGVhc2U6CisgICAgICAgIGQtPmtleVJl
bGVhc2VFdmVudChzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihldikpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFFFdmVudDo6Rm9jdXNJbjoKKyAgICAgICAgZC0+Zm9jdXNJbkV2ZW50KHN0YXRp
Y19jYXN0PFFGb2N1c0V2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZl
bnQ6OkZvY3VzT3V0OgorICAgICAgICBkLT5mb2N1c091dEV2ZW50KHN0YXRpY19jYXN0PFFGb2N1
c0V2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisjaWZuZGVmIFFUX05PX0RSQUdBTkREUk9Q
CisgICAgY2FzZSBRRXZlbnQ6OkRyYWdFbnRlcjoKKyAgICAgICAgZC0+ZHJhZ0VudGVyRXZlbnQo
c3RhdGljX2Nhc3Q8UURyYWdFbnRlckV2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBRRXZlbnQ6OkRyYWdMZWF2ZToKKyAgICAgICAgZC0+ZHJhZ0xlYXZlRXZlbnQoKTsKKyAg
ICAgICAgZXYtPmFjY2VwdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6RHJh
Z01vdmU6CisgICAgICAgIGQtPmRyYWdNb3ZlRXZlbnQoc3RhdGljX2Nhc3Q8UURyYWdNb3ZlRXZl
bnQqPihldikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6RHJvcDoKKyAgICAg
ICAgZC0+ZHJvcEV2ZW50KHN0YXRpY19jYXN0PFFEcm9wRXZlbnQqPihldikpOworICAgICAgICBi
cmVhazsKKyNpZiAhZGVmaW5lZChRVF9OT19HUkFQSElDU1ZJRVcpCisgICAgY2FzZSBRRXZlbnQ6
OkdyYXBoaWNzU2NlbmVEcmFnRW50ZXI6CisgICAgICAgIGQtPmRyYWdFbnRlckV2ZW50KHN0YXRp
Y19jYXN0PFFHcmFwaGljc1NjZW5lRHJhZ0Ryb3BFdmVudCo+KGV2KSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUUV2ZW50OjpHcmFwaGljc1NjZW5lRHJhZ01vdmU6CisgICAgICAgIGQtPmRy
YWdNb3ZlRXZlbnQoc3RhdGljX2Nhc3Q8UUdyYXBoaWNzU2NlbmVEcmFnRHJvcEV2ZW50Kj4oZXYp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVEcmFnTGVh
dmU6CisgICAgICAgIGQtPmRyYWdMZWF2ZUV2ZW50KCk7CisgICAgICAgIGV2LT5hY2NlcHQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6OkdyYXBoaWNzU2NlbmVEcm9wOgorICAg
ICAgICBkLT5kcm9wRXZlbnQoc3RhdGljX2Nhc3Q8UUdyYXBoaWNzU2NlbmVEcmFnRHJvcEV2ZW50
Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKworI2VuZGlmCisgICAgY2FzZSBRRXZl
bnQ6OklucHV0TWV0aG9kOgorICAgICAgICBkLT5pbnB1dE1ldGhvZEV2ZW50KHN0YXRpY19jYXN0
PFFJbnB1dE1ldGhvZEV2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBRRXZl
bnQ6OlNob3J0Y3V0T3ZlcnJpZGU6CisgICAgICAgIGQtPnNob3J0Y3V0T3ZlcnJpZGVFdmVudChz
dGF0aWNfY2FzdDxRS2V5RXZlbnQqPihldikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFF
dmVudDo6TGVhdmU6CisgICAgICAgIGQtPmxlYXZlRXZlbnQoZXYpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFFFdmVudDo6VG91Y2hCZWdpbjoKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRh
dGU6CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgorICAgIGNhc2UgUUV2ZW50OjpUb3VjaENh
bmNlbDoKKyAgICAgICAgLy8gUmV0dXJuIHdoZXRoZXIgdGhlIGRlZmF1bHQgYWN0aW9uIHdhcyBj
YW5jZWxsZWQgaW4gdGhlIEpTIGV2ZW50IGhhbmRsZXIKKyAgICAgICAgcmV0dXJuIGQtPnRvdWNo
RXZlbnQoc3RhdGljX2Nhc3Q8UVRvdWNoRXZlbnQqPihldikpOworI2lmbmRlZiBRVF9OT19HRVNU
VVJFUworICAgIGNhc2UgUUV2ZW50OjpHZXN0dXJlOgorICAgICAgICBkLT5nZXN0dXJlRXZlbnQo
c3RhdGljX2Nhc3Q8UUdlc3R1cmVFdmVudCo+KGV2KSk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisjaWZuZGVmIFFUX05PX1BST1BFUlRJRVMKKyAgICBjYXNlIFFFdmVudDo6RHluYW1pY1Byb3Bl
cnR5Q2hhbmdlOgorICAgICAgICBkLT5keW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCh0aGlzLCBz
dGF0aWNfY2FzdDxRRHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQqPihldikpOworICAgICAgICBi
cmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBRT2JqZWN0OjpldmVu
dChldik7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qIQorICAgIFNpbWlsYXIg
dG8gUVdpZGdldDo6Zm9jdXNOZXh0UHJldkNoaWxkKCkgaXQgZm9jdXNlcyB0aGUgbmV4dCBmb2N1
c2FibGUgd2ViIGVsZW1lbnQKKyAgICBpZiBcYSBuZXh0IGlzIHRydWU7IG90aGVyd2lzZSB0aGUg
cHJldmlvdXMgZWxlbWVudCBpcyBmb2N1c2VkLgorCisgICAgUmV0dXJucyB0cnVlIGlmIGl0IGNh
biBmaW5kIGEgbmV3IGZvY3VzYWJsZSBlbGVtZW50LCBvciBmYWxzZSBpZiBpdCBjYW4ndC4KKyov
Citib29sIFFXZWJQYWdlOjpmb2N1c05leHRQcmV2Q2hpbGQoYm9vbCBuZXh0KQoreworICAgIFFL
ZXlFdmVudCBldihRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X1RhYiwgUXQ6OktleWJvYXJkTW9k
aWZpZXJzKG5leHQgPyBRdDo6Tm9Nb2RpZmllciA6IFF0OjpTaGlmdE1vZGlmaWVyKSk7CisgICAg
ZC0+a2V5UHJlc3NFdmVudCgmZXYpOworICAgIHJldHVybiBkLT5oYXNGb2N1c2VkTm9kZSgpOwor
fQorCisvKiEKKyAgICBccHJvcGVydHkgUVdlYlBhZ2U6OmNvbnRlbnRFZGl0YWJsZQorICAgIFxi
cmllZiB3aGV0aGVyIHRoZSBjb250ZW50IGluIHRoaXMgUVdlYlBhZ2UgaXMgZWRpdGFibGUgb3Ig
bm90CisgICAgXHNpbmNlIDQuNQorCisgICAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBlbmFibGVkIHRo
ZSBjb250ZW50cyBvZiB0aGUgcGFnZSBjYW4gYmUgZWRpdGVkIGJ5IHRoZSB1c2VyIHRocm91Z2gg
YSB2aXNpYmxlCisgICAgY3Vyc29yLiBJZiBkaXNhYmxlZCAodGhlIGRlZmF1bHQpIG9ubHkgSFRN
TCBlbGVtZW50cyBpbiB0aGUgd2ViIHBhZ2Ugd2l0aCB0aGVpcgorICAgIFxje2NvbnRlbnRlZGl0
YWJsZX0gYXR0cmlidXRlIHNldCBhcmUgZWRpdGFibGUuCisKKyAgICBcc2EgbW9kaWZpZWQsIGNv
bnRlbnRzQ2hhbmdlZCgpLCBXZWJBY3Rpb24KKyovCit2b2lkIFFXZWJQYWdlOjpzZXRDb250ZW50
RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKK3sKKyAgICBpZiAoaXNDb250ZW50RWRpdGFibGUoKSAh
PSBlZGl0YWJsZSkgeworICAgICAgICBkLT5zZXRDb250ZW50RWRpdGFibGUoZWRpdGFibGUpOwor
ICAgICAgICBkLT51cGRhdGVFZGl0b3JBY3Rpb25zKCk7CisgICAgfQorfQorCitib29sIFFXZWJQ
YWdlOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmlzQ29udGVu
dEVkaXRhYmxlKCk7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRV2ViUGFnZTo6Zm9yd2FyZFVu
c3VwcG9ydGVkQ29udGVudAorICAgIFxicmllZiB3aGV0aGVyIFFXZWJQYWdlIHNob3VsZCBmb3J3
YXJkIHVuc3VwcG9ydGVkIGNvbnRlbnQKKworICAgIElmIGVuYWJsZWQsIHRoZSB1bnN1cHBvcnRl
ZENvbnRlbnQoKSBzaWduYWwgaXMgZW1pdHRlZCB3aXRoIGEgbmV0d29yayByZXBseSB0aGF0Cisg
ICAgY2FuIGJlIHVzZWQgdG8gcmVhZCB0aGUgY29udGVudC4KKworICAgIElmIGRpc2FibGVkLCB0
aGUgZG93bmxvYWQgb2Ygc3VjaCBjb250ZW50IGlzIGFib3J0ZWQgaW1tZWRpYXRlbHkuCisKKyAg
ICBCeSBkZWZhdWx0IHVuc3VwcG9ydGVkIGNvbnRlbnQgaXMgbm90IGZvcndhcmRlZC4KKyovCisK
K3ZvaWQgUVdlYlBhZ2U6OnNldEZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQoYm9vbCBmb3J3YXJk
KQoreworICAgIGQtPmZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQgPSBmb3J3YXJkOworfQorCiti
b29sIFFXZWJQYWdlOjpmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZC0+Zm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudDsKK30KKworLyohCisgICAgXHByb3Bl
cnR5IFFXZWJQYWdlOjpsaW5rRGVsZWdhdGlvblBvbGljeQorICAgIFxicmllZiBob3cgUVdlYlBh
Z2Ugc2hvdWxkIGRlbGVnYXRlIHRoZSBoYW5kbGluZyBvZiBsaW5rcyB0aHJvdWdoIHRoZQorICAg
IGxpbmtDbGlja2VkKCkgc2lnbmFsCisKKyAgICBUaGUgZGVmYXVsdCBpcyB0byBkZWxlZ2F0ZSBu
byBsaW5rcy4KKyovCisKK3ZvaWQgUVdlYlBhZ2U6OnNldExpbmtEZWxlZ2F0aW9uUG9saWN5KExp
bmtEZWxlZ2F0aW9uUG9saWN5IHBvbGljeSkKK3sKKyAgICBkLT5saW5rUG9saWN5ID0gcG9saWN5
OworfQorCitRV2ViUGFnZTo6TGlua0RlbGVnYXRpb25Qb2xpY3kgUVdlYlBhZ2U6OmxpbmtEZWxl
Z2F0aW9uUG9saWN5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+bGlua1BvbGljeTsKK30KKwor
I2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQorCitib29sIFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxl
U2Nyb2xsYmFyQ29udGV4dE1lbnVFdmVudChRQ29udGV4dE1lbnVFdmVudCogZXZlbnQsIGJvb2wg
aG9yaXpvbnRhbCwgUVdlYlBhZ2VBZGFwdGVyOjpTY3JvbGxEaXJlY3Rpb24qIGRpcmVjdGlvbiwg
UVdlYlBhZ2VBZGFwdGVyOjpTY3JvbGxHcmFudWxhcml0eSogZ3JhbnVsYXJpdHkpCit7CisgICAg
aWYgKCFRQXBwbGljYXRpb246OnN0eWxlKCktPnN0eWxlSGludChRU3R5bGU6OlNIX1Njcm9sbEJh
cl9Db250ZXh0TWVudSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFFNZW51IG1lbnU7
CisgICAgUUFjdGlvbiogYWN0U2Nyb2xsSGVyZSA9IG1lbnUuYWRkQWN0aW9uKFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2Nyb2xsIGhlcmUiKSk7CisgICAgbWVudS5h
ZGRTZXBhcmF0b3IoKTsKKworICAgIFFBY3Rpb24qIGFjdFNjcm9sbFRvcCA9IG1lbnUuYWRkQWN0
aW9uKGhvcml6b250YWwgPyBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
IkxlZnQgZWRnZSIpIDogUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJU
b3AiKSk7CisgICAgUUFjdGlvbiogYWN0U2Nyb2xsQm90dG9tID0gbWVudS5hZGRBY3Rpb24oaG9y
aXpvbnRhbCA/IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiUmlnaHQg
ZWRnZSIpIDogUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJCb3R0b20i
KSk7CisgICAgbWVudS5hZGRTZXBhcmF0b3IoKTsKKworICAgIFFBY3Rpb24qIGFjdFBhZ2VVcCA9
IG1lbnUuYWRkQWN0aW9uKGhvcml6b250YWwgPyBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFXZWJQYWdlIiwgIlBhZ2UgbGVmdCIpIDogUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJQYWdlIHVwIikpOworICAgIFFBY3Rpb24qIGFjdFBhZ2VEb3duID0gbWVudS5h
ZGRBY3Rpb24oaG9yaXpvbnRhbCA/IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiUGFnZSByaWdodCIpIDogUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJQYWdlIGRvd24iKSk7CisgICAgbWVudS5hZGRTZXBhcmF0b3IoKTsKKworICAgIFFBY3Rp
b24qIGFjdFNjcm9sbFVwID0gbWVudS5hZGRBY3Rpb24oaG9yaXpvbnRhbCA/IFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2Nyb2xsIGxlZnQiKSA6IFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2Nyb2xsIHVwIikpOworICAgIFFBY3Rpb24q
IGFjdFNjcm9sbERvd24gPSBtZW51LmFkZEFjdGlvbihob3Jpem9udGFsID8gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJTY3JvbGwgcmlnaHQiKSA6IFFDb3JlQXBwbGlj
YXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiU2Nyb2xsIGRvd24iKSk7CisKKyAgICBRQWN0
aW9uKiBhY3Rpb25TZWxlY3RlZCA9IG1lbnUuZXhlYyhldmVudC0+Z2xvYmFsUG9zKCkpOworCisg
ICAgaWYgKGFjdGlvblNlbGVjdGVkID09IGFjdFNjcm9sbEhlcmUpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChhY3Rpb25TZWxlY3RlZCA9PSBhY3RTY3JvbGxUb3ApIHsKKyAgICAgICAg
KmRpcmVjdGlvbiA9IGhvcml6b250YWwgPyBTY3JvbGxMZWZ0IDogU2Nyb2xsVXA7CisgICAgICAg
ICpncmFudWxhcml0eSA9IFNjcm9sbEJ5RG9jdW1lbnQ7CisgICAgfSBlbHNlIGlmIChhY3Rpb25T
ZWxlY3RlZCA9PSBhY3RTY3JvbGxCb3R0b20pIHsKKyAgICAgICAgKmRpcmVjdGlvbiA9aG9yaXpv
bnRhbCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsRG93bjsKKyAgICAgICAgKmdyYW51bGFyaXR5ID0g
U2Nyb2xsQnlEb2N1bWVudDsKKyAgICB9IGVsc2UgaWYgKGFjdGlvblNlbGVjdGVkID09IGFjdFBh
Z2VVcCkgeworICAgICAgICAqZGlyZWN0aW9uID0gaG9yaXpvbnRhbCA/IFNjcm9sbExlZnQgOiBT
Y3JvbGxVcDsKKyAgICAgICAgKmdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQYWdlOworICAgIH0gZWxz
ZSBpZiAoYWN0aW9uU2VsZWN0ZWQgPT0gYWN0UGFnZURvd24pIHsKKyAgICAgICAgKmRpcmVjdGlv
biA9aG9yaXpvbnRhbCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsRG93bjsKKyAgICAgICAgKmdyYW51
bGFyaXR5ID0gU2Nyb2xsQnlQYWdlOworICAgIH0gZWxzZSBpZiAoYWN0aW9uU2VsZWN0ZWQgPT0g
YWN0U2Nyb2xsVXApIHsKKyAgICAgICAgKmRpcmVjdGlvbiA9IGhvcml6b250YWwgPyBTY3JvbGxM
ZWZ0IDogU2Nyb2xsVXA7CisgICAgICAgICpncmFudWxhcml0eSA9IFNjcm9sbEJ5TGluZTsKKyAg
ICB9IGVsc2UgaWYgKGFjdGlvblNlbGVjdGVkID09IGFjdFNjcm9sbERvd24pIHsKKyAgICAgICAg
KmRpcmVjdGlvbiA9aG9yaXpvbnRhbCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsRG93bjsKKyAgICAg
ICAgKmdyYW51bGFyaXR5ID0gU2Nyb2xsQnlMaW5lOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworLyohCisgICAgRmlsdGVycyB0aGUgY29udGV4dCBtZW51IGV2ZW50LCBcYSBldmVudCwg
dGhyb3VnaCBoYW5kbGVycyBmb3Igc2Nyb2xsYmFycyBhbmQKKyAgICBjdXN0b20gZXZlbnQgaGFu
ZGxlcnMgaW4gdGhlIHdlYiBwYWdlLiBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHdhcyBoYW5k
bGVkOworICAgIG90aGVyd2lzZSBmYWxzZS4KKworICAgIEEgd2ViIHBhZ2UgbWF5IHN3YWxsb3cg
YSBjb250ZXh0IG1lbnUgZXZlbnQgdGhyb3VnaCBhIGN1c3RvbSBldmVudCBoYW5kbGVyLCBhbGxv
d2luZyBmb3IgY29udGV4dAorICAgIG1lbnVzIHRvIGJlIGltcGxlbWVudGVkIGluIEhUTUwvSmF2
YVNjcmlwdC4gVGhpcyBpcyB1c2VkIGJ5IFxse2h0dHA6Ly9tYXBzLmdvb2dsZS5jb20vfXtHb29n
bGUKKyAgICBNYXBzfSwgZm9yIGV4YW1wbGUuCisqLworYm9vbCBRV2ViUGFnZTo6c3dhbGxvd0Nv
bnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQgKmV2ZW50KQoreworICAgIFFXZWJGcmFt
ZSogd2ViRnJhbWUgPSBmcmFtZUF0KGV2ZW50LT5wb3MoKSk7CisgICAgcmV0dXJuIGQtPnN3YWxs
b3dDb250ZXh0TWVudUV2ZW50KGV2ZW50LCB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5kIDogMCk7Cit9
CisjZW5kaWYgLy8gUVRfTk9fQ09OVEVYVE1FTlUKKworLyohCisgICAgVXBkYXRlcyB0aGUgcGFn
ZSdzIGFjdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBwb3NpdGlvbiBcYSBwb3MuIEZvciBleGFtcGxl
IGlmIFxhIHBvcyBpcyBvdmVyIGFuIGltYWdlCisgICAgZWxlbWVudCB0aGUgQ29weUltYWdlVG9D
bGlwYm9hcmQgYWN0aW9uIGlzIGVuYWJsZWQuCisqLwordm9pZCBRV2ViUGFnZTo6dXBkYXRlUG9z
aXRpb25EZXBlbmRlbnRBY3Rpb25zKGNvbnN0IFFQb2ludCAmcG9zKQoreworI2lmbmRlZiBRVF9O
T19BQ1RJT04KKyAgICAvLyBGaXJzdCB3ZSBkaXNhYmxlIGFsbCBhY3Rpb25zLCBidXQga2VlcCB0
cmFjayBvZiB3aGljaCBvbmVzIHdlcmUgb3JpZ2luYWxseSBlbmFibGVkLgorICAgIFFCaXRBcnJh
eSBvcmlnaW5hbGx5RW5hYmxlZFdlYkFjdGlvbnMoUVdlYlBhZ2U6OldlYkFjdGlvbkNvdW50KTsK
KyAgICBmb3IgKGludCBpID0gUVdlYlBhZ2VBZGFwdGVyOjpOb0FjdGlvbiArIDE7IGkgPCBRV2Vi
UGFnZUFkYXB0ZXI6OkFjdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAgUVdlYlBhZ2U6OldlYkFj
dGlvbiBhY3Rpb24gPSB3ZWJBY3Rpb25Gb3JBZGFwdGVyTWVudUFjdGlvbihRV2ViUGFnZUFkYXB0
ZXI6Ok1lbnVBY3Rpb24oaSkpOworICAgICAgICBpZiAoUUFjdGlvbiAqYSA9IHRoaXMtPmFjdGlv
bihhY3Rpb24pKSB7CisgICAgICAgICAgICBvcmlnaW5hbGx5RW5hYmxlZFdlYkFjdGlvbnMuc2V0
Qml0KGFjdGlvbiwgYS0+aXNFbmFibGVkKCkpOworICAgICAgICAgICAgYS0+c2V0RW5hYmxlZChm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gUVRfTk9fQUNUSU9OCisKKyAgICBR
Qml0QXJyYXkgdmlzaXRlZFdlYkFjdGlvbnMoUVdlYlBhZ2U6OldlYkFjdGlvbkNvdW50KTsKKyAg
ICBkLT5jcmVhdGVNYWluRnJhbWUoKTsKKyAgICAvLyBUaGVuIHdlIGxldCB1cGRhdGVQb3NpdGlv
bkRlcGVuZGFudE1lbnVBY3Rpb25zKCkgZW5hYmxlIHRoZSBhY3Rpb25zIHRoYXQgYXJlIHB1dCBp
bnRvIHRoZSBtZW51CisgICAgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlKiByZXN1bHQgPSBkLT51
cGRhdGVQb3NpdGlvbkRlcGVuZGVudE1lbnVBY3Rpb25zKHBvcywgJnZpc2l0ZWRXZWJBY3Rpb25z
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgZC0+aGl0VGVzdFJlc3VsdCA9IFFXZWJIaXRU
ZXN0UmVzdWx0KCk7CisgICAgZWxzZQorICAgICAgICBkLT5oaXRUZXN0UmVzdWx0ID0gUVdlYkhp
dFRlc3RSZXN1bHQocmVzdWx0KTsKKworI2lmbmRlZiBRVF9OT19BQ1RJT04KKyAgICAvLyBGaW5h
bGx5LCB3ZSByZXN0b3JlIHRoZSBvcmlnaW5hbCBlbmFibGVtZW50IGZvciB0aGUgYWN0aW9ucyB0
aGF0IHdlcmUgbm90IHB1dCBpbnRvIHRoZSBtZW51LgorICAgIG9yaWdpbmFsbHlFbmFibGVkV2Vi
QWN0aW9ucyAmPSB+dmlzaXRlZFdlYkFjdGlvbnM7IC8vIE1hc2sgb3V0IHZpc2l0ZWQgYWN0aW9u
cyAodGhleSdyZSBwYXJ0IG9mIHRoZSBtZW51KQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgUVdl
YlBhZ2U6OldlYkFjdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKG9yaWdpbmFsbHlFbmFi
bGVkV2ViQWN0aW9ucy5hdChpKSkgeworICAgICAgICAgICAgaWYgKFFBY3Rpb24gKmEgPSB0aGlz
LT5hY3Rpb24oUVdlYlBhZ2U6OldlYkFjdGlvbihpKSkpCisgICAgICAgICAgICAgICAgYS0+c2V0
RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBRVF9OT19BQ1RJT04K
KworICAgIC8vIFRoaXMgd2hvbGUgcHJvY2VzcyBlbnN1cmVzIHRoYXQgYW55IGFjdGlvbnMgcHV0
IGludG8gdG8gdGhlIGNvbnRleHQgbWVudSBoYXMgdGhlIHJpZ2h0CisgICAgLy8gZW5hYmxlbWVu
dCwgd2hpbGUgYWxzbyBrZWVwaW5nIHRoZSBjb3JyZWN0IGVuYWJsZW1lbnQgZm9yIGFjdGlvbnMg
dGhhdCB3ZXJlIGxlZnQgb3V0IG9mCisgICAgLy8gdGhlIG1lbnUuCisKK30KKworCisKKy8qIQor
ICAgIFxlbnVtIFFXZWJQYWdlOjpFeHRlbnNpb24KKworICAgIFRoaXMgZW51bSBkZXNjcmliZXMg
dGhlIHR5cGVzIG9mIGV4dGVuc2lvbnMgdGhhdCB0aGUgcGFnZSBjYW4gc3VwcG9ydC4gQmVmb3Jl
IHVzaW5nIHRoZXNlIGV4dGVuc2lvbnMsIHlvdQorICAgIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGUg
ZXh0ZW5zaW9uIGlzIHN1cHBvcnRlZCBieSBjYWxsaW5nIHN1cHBvcnRzRXh0ZW5zaW9uKCkuCisK
KyAgICBcdmFsdWUgQ2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lvbiBXaGV0aGVyIHRoZSB3ZWIg
cGFnZSBzdXBwb3J0cyBtdWx0aXBsZSBmaWxlIHNlbGVjdGlvbi4KKyAgICBUaGlzIGV4dGVuc2lv
biBpcyBpbnZva2VkIHdoZW4gdGhlIHdlYiBjb250ZW50IHJlcXVlc3RzIG9uZSBvciBtb3JlIGZp
bGUgbmFtZXMsIGZvciBleGFtcGxlCisgICAgYXMgYSByZXN1bHQgb2YgdGhlIHVzZXIgY2xpY2tp
bmcgb24gYSAiZmlsZSB1cGxvYWQiIGJ1dHRvbiBpbiBhIEhUTUwgZm9ybSB3aGVyZSBtdWx0aXBs
ZQorICAgIGZpbGUgc2VsZWN0aW9uIGlzIGFsbG93ZWQuCisKKyAgICBcdmFsdWUgRXJyb3JQYWdl
RXh0ZW5zaW9uIFdoZXRoZXIgdGhlIHdlYiBwYWdlIGNhbiBwcm92aWRlIGFuIGVycm9yIHBhZ2Ug
d2hlbiBsb2FkaW5nIGZhaWxzLgorICAgIChpbnRyb2R1Y2VkIGluIFF0IDQuNikKKworICAgIFxz
YSBDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uT3B0aW9uLCBDaG9vc2VNdWx0aXBsZUZpbGVz
RXh0ZW5zaW9uUmV0dXJuLCBFcnJvclBhZ2VFeHRlbnNpb25PcHRpb24sIEVycm9yUGFnZUV4dGVu
c2lvblJldHVybgorKi8KKworLyohCisgICAgXGVudW0gUVdlYlBhZ2U6OkVycm9yRG9tYWluCisg
ICAgXHNpbmNlIDQuNgorCisgICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgZG9tYWluIG9mIGFu
IEVycm9yUGFnZUV4dGVuc2lvbk9wdGlvbiBvYmplY3QgKGkuZS4gdGhlIGxheWVyIGluIHdoaWNo
IHRoZSBlcnJvciBvY2N1cnJlZCkuCisKKyAgICBcdmFsdWUgUXROZXR3b3JrIFRoZSBlcnJvciBv
Y2N1cnJlZCBpbiB0aGUgUXROZXR3b3JrIGxheWVyOyB0aGUgZXJyb3IgY29kZSBpcyBvZiB0eXBl
IFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvci4KKyAgICBcdmFsdWUgSHR0cCBUaGUgZXJyb3Ig
b2NjdXJyZWQgaW4gdGhlIEhUVFAgbGF5ZXI7IHRoZSBlcnJvciBjb2RlIGlzIGEgSFRUUCBzdGF0
dXMgY29kZSAoc2VlIFFOZXR3b3JrUmVxdWVzdDo6SHR0cFN0YXR1c0NvZGVBdHRyaWJ1dGUpLgor
ICAgIFx2YWx1ZSBXZWJLaXQgVGhlIGVycm9yIGlzIGFuIGludGVybmFsIFdlYktpdCBlcnJvci4K
KyovCisKKy8qIQorICAgIFxjbGFzcyBRV2ViUGFnZTo6RXh0ZW5zaW9uT3B0aW9uCisgICAgXHNp
bmNlIDQuNAorICAgIFxicmllZiBUaGUgRXh0ZW5zaW9uT3B0aW9uIGNsYXNzIHByb3ZpZGVzIGFu
IGV4dGVuZGVkIGlucHV0IGFyZ3VtZW50IHRvIFFXZWJQYWdlJ3MgZXh0ZW5zaW9uIHN1cHBvcnQu
CisKKyAgICBcaW5tb2R1bGUgUXRXZWJLaXQKKworICAgIFxzYSBRV2ViUGFnZTo6ZXh0ZW5zaW9u
KCksIFFXZWJQYWdlOjpFeHRlbnNpb25SZXR1cm4KKyovCisKKworLyohCisgICAgXGNsYXNzIFFX
ZWJQYWdlOjpFeHRlbnNpb25SZXR1cm4KKyAgICBcc2luY2UgNC40CisgICAgXGJyaWVmIFRoZSBF
eHRlbnNpb25SZXR1cm4gY2xhc3MgcHJvdmlkZXMgYW4gb3V0cHV0IHJlc3VsdCBmcm9tIGEgUVdl
YlBhZ2UncyBleHRlbnNpb24uCisKKyAgICBcaW5tb2R1bGUgUXRXZWJLaXQKKworICAgIFxzYSBR
V2ViUGFnZTo6ZXh0ZW5zaW9uKCksIFFXZWJQYWdlOjpFeHRlbnNpb25PcHRpb24KKyovCisKKy8q
IQorICAgIFxjbGFzcyBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9uCisgICAgXHNp
bmNlIDQuNgorICAgIFxicmllZiBUaGUgRXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9uIGNsYXNzIGRl
c2NyaWJlcyB0aGUgb3B0aW9uCisgICAgZm9yIHRoZSBlcnJvciBwYWdlIGV4dGVuc2lvbi4KKwor
ICAgIFxpbm1vZHVsZSBRdFdlYktpdAorCisgICAgVGhlIEVycm9yUGFnZUV4dGVuc2lvbk9wdGlv
biBjbGFzcyBob2xkcyB0aGUgXGEgdXJsIGZvciB3aGljaCBhbiBlcnJvciBvY2N1cnJlZCBhcyB3
ZWxsIGFzCisgICAgdGhlIGFzc29jaWF0ZWQgXGEgZnJhbWUuCisKKyAgICBUaGUgZXJyb3IgaXRz
ZWxmIGlzIHJlcG9ydGVkIGJ5IGFuIGVycm9yIFxhIGRvbWFpbiwgdGhlIFxhIGVycm9yIGNvZGUg
YXMgd2VsbCBhcyBcYSBlcnJvclN0cmluZy4KKworICAgIFxzYSBRV2ViUGFnZTo6ZXh0ZW5zaW9u
KCksIFFXZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb25SZXR1cm4KKyovCisKKy8qIQorICAgIFx2
YXJpYWJsZSBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9uOjp1cmwKKyAgICBcYnJp
ZWYgdGhlIHVybCBmb3Igd2hpY2ggYW4gZXJyb3Igb2NjdXJyZWQKKyovCisKKy8qIQorICAgIFx2
YXJpYWJsZSBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9uOjpmcmFtZQorICAgIFxi
cmllZiB0aGUgZnJhbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBlcnJvcgorKi8KKworLyohCisgICAg
XHZhcmlhYmxlIFFXZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb25PcHRpb246OmRvbWFpbgorICAg
IFxicmllZiB0aGUgZG9tYWluIHRoYXQgcmVwb3J0ZWQgdGhlIGVycm9yCisqLworCisvKiEKKyAg
ICBcdmFyaWFibGUgUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvbk9wdGlvbjo6ZXJyb3IKKyAg
ICBcYnJpZWYgdGhlIGVycm9yIGNvZGUuIEludGVycHJldGF0aW9uIG9mIHRoZSB2YWx1ZSBkZXBl
bmRzIG9uIHRoZSBcYSBkb21haW4KKyAgICBcc2EgUVdlYlBhZ2U6OkVycm9yRG9tYWluCisqLwor
CisvKiEKKyAgICBcdmFyaWFibGUgUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvbk9wdGlvbjo6
ZXJyb3JTdHJpbmcKKyAgICBcYnJpZWYgYSBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhlIGVycm9y
CisqLworCisvKiEKKyAgICBcY2xhc3MgUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvblJldHVy
bgorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgVGhlIEVycm9yUGFnZUV4dGVuc2lvblJldHVy
biBkZXNjcmliZXMgdGhlIGVycm9yIHBhZ2UsIHdoaWNoIHdpbGwgYmUgc2hvd24gZm9yIHRoZQor
ICAgIGZyYW1lIGZvciB3aGljaCB0aGUgZXJyb3Igb2NjdXJlZC4KKworICAgIFxpbm1vZHVsZSBR
dFdlYktpdAorCisgICAgVGhlIEVycm9yUGFnZUV4dGVuc2lvblJldHVybiBjbGFzcyBob2xkcyB0
aGUgZGF0YSBuZWVkZWQgZm9yIGNyZWF0aW5nIGFuIGVycm9yIHBhZ2UuIFNvbWUgYXJlCisgICAg
b3B0aW9uYWwgc3VjaCBhcyBcYSBjb250ZW50VHlwZSwgd2hpY2ggZGVmYXVsdHMgdG8gInRleHQv
aHRtbCIsIGFzIHdlbGwgYXMgdGhlIFxhIGVuY29kaW5nLCB3aGljaAorICAgIGlzIGFzc3VtZWQg
dG8gYmUgVVRGLTggaWYgbm90IGluZGljYXRlZCBvdGhlcndpc2UuCisKKyAgICBUaGUgZXJyb3Ig
cGFnZSBpcyBzdG9yZWQgaW4gdGhlIFxhIGNvbnRlbnQgYnl0ZSBhcnJheSwgYXMgSFRNTCBjb250
ZW50LiBJbiBvcmRlciB0byBjb252ZXJ0IGEKKyAgICBRU3RyaW5nIHRvIGEgYnl0ZSBhcnJheSwg
dGhlIFFTdHJpbmc6OnRvVXRmOCgpIG1ldGhvZCBjYW4gYmUgdXNlZC4KKworICAgIEV4dGVybmFs
IG9iamVjdHMgc3VjaCBhcyBzdHlsZXNoZWV0cyBvciBpbWFnZXMgcmVmZXJlbmNlZCBpbiB0aGUg
SFRNTCBhcmUgbG9jYXRlZCByZWxhdGl2ZSB0bworICAgIFxhIGJhc2VVcmwuCisKKyAgICBcc2Eg
UVdlYlBhZ2U6OmV4dGVuc2lvbigpLCBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9u
LCBRU3RyaW5nOjp0b1V0ZjgoKQorKi8KKworLyohCisgICAgXGZuIFFXZWJQYWdlOjpFcnJvclBh
Z2VFeHRlbnNpb25SZXR1cm46OkVycm9yUGFnZUV4dGVuc2lvblJldHVybigpCisKKyAgICBDb25z
dHJ1Y3RzIGEgbmV3IGVycm9yIHBhZ2Ugb2JqZWN0LgorKi8KKworCisvKiEKKyAgICBcdmFyaWFi
bGUgUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvblJldHVybjo6Y29udGVudFR5cGUKKyAgICBc
YnJpZWYgdGhlIGVycm9yIHBhZ2UncyBjb250ZW50IHR5cGUKKyovCisKKy8qIQorICAgIFx2YXJp
YWJsZSBRV2ViUGFnZTo6RXJyb3JQYWdlRXh0ZW5zaW9uUmV0dXJuOjplbmNvZGluZworICAgIFxi
cmllZiB0aGUgZXJyb3IgcGFnZSBlbmNvZGluZworKi8KKworLyohCisgICAgXHZhcmlhYmxlIFFX
ZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb25SZXR1cm46OmJhc2VVcmwKKyAgICBcYnJpZWYgdGhl
IGJhc2UgdXJsCisKKyAgICBFeHRlcm5hbCBvYmplY3RzIHN1Y2ggYXMgc3R5bGVzaGVldHMgb3Ig
aW1hZ2VzIHJlZmVyZW5jZWQgaW4gdGhlIEhUTUwgYXJlIGxvY2F0ZWQgcmVsYXRpdmUgdG8gdGhp
cyB1cmwuCisqLworCisvKiEKKyAgICBcdmFyaWFibGUgUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVu
c2lvblJldHVybjo6Y29udGVudAorICAgIFxicmllZiB0aGUgSFRNTCBjb250ZW50IG9mIHRoZSBl
cnJvciBwYWdlCisqLworCisvKiEKKyAgICBcY2xhc3MgUVdlYlBhZ2U6OkNob29zZU11bHRpcGxl
RmlsZXNFeHRlbnNpb25PcHRpb24KKyAgICBcc2luY2UgNC41CisgICAgXGJyaWVmIFRoZSBDaG9v
c2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uT3B0aW9uIGNsYXNzIGRlc2NyaWJlcyB0aGUgb3B0aW9u
CisgICAgZm9yIHRoZSBtdWx0aXBsZSBmaWxlcyBzZWxlY3Rpb24gZXh0ZW5zaW9uLgorCisgICAg
XGlubW9kdWxlIFF0V2ViS2l0CisKKyAgICBUaGUgQ2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lv
bk9wdGlvbiBjbGFzcyBob2xkcyB0aGUgZnJhbWUgb3JpZ2luYXRpbmcgdGhlIHJlcXVlc3QKKyAg
ICBhbmQgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZXMgd2hpY2ggbWlnaHQgYmUgcHJvdmlkZWQuCisK
KyAgICBcc2EgUVdlYlBhZ2U6OmV4dGVuc2lvbigpLCBRV2ViUGFnZTo6Y2hvb3NlRmlsZSgpLCBR
V2ViUGFnZTo6Q2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lvblJldHVybgorKi8KKworLyohCisg
ICAgXHZhcmlhYmxlIFFXZWJQYWdlOjpDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uT3B0aW9u
OjpwYXJlbnRGcmFtZQorICAgIFxicmllZiBUaGUgZnJhbWUgaW4gd2hpY2ggdGhlIHJlcXVlc3Qg
b3JpZ2luYXRlZAorKi8KKworLyohCisgICAgXHZhcmlhYmxlIFFXZWJQYWdlOjpDaG9vc2VNdWx0
aXBsZUZpbGVzRXh0ZW5zaW9uT3B0aW9uOjpzdWdnZXN0ZWRGaWxlTmFtZXMKKyAgICBcYnJpZWYg
VGhlIHN1Z2dlc3RlZCBmaWxlbmFtZXMKKyovCisKKy8qIQorICAgIFx2YXJpYWJsZSBRV2ViUGFn
ZTo6Q2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lvblJldHVybjo6ZmlsZU5hbWVzCisgICAgXGJy
aWVmIFRoZSBzZWxlY3RlZCBmaWxlbmFtZXMKKyovCisKKy8qIQorICAgIFxjbGFzcyBRV2ViUGFn
ZTo6Q2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lvblJldHVybgorICAgIFxzaW5jZSA0LjUKKyAg
ICBcYnJpZWYgVGhlIENob29zZU11bHRpcGxlRmlsZXNFeHRlbnNpb25SZXR1cm4gZGVzY3JpYmVz
IHRoZSByZXR1cm4gdmFsdWUKKyAgICBmb3IgdGhlIG11bHRpcGxlIGZpbGVzIHNlbGVjdGlvbiBl
eHRlbnNpb24uCisKKyAgICBcaW5tb2R1bGUgUXRXZWJLaXQKKworICAgIFRoZSBDaG9vc2VNdWx0
aXBsZUZpbGVzRXh0ZW5zaW9uUmV0dXJuIGNsYXNzIGhvbGRzIHRoZSBmaWxlbmFtZXMgc2VsZWN0
ZWQgYnkgdGhlIHVzZXIKKyAgICB3aGVuIHRoZSBleHRlbnNpb24gaXMgaW52b2tlZC4KKworICAg
IFxzYSBRV2ViUGFnZTo6ZXh0ZW5zaW9uKCksIFFXZWJQYWdlOjpDaG9vc2VNdWx0aXBsZUZpbGVz
RXh0ZW5zaW9uT3B0aW9uCisqLworCisvKiEKKyAgICBUaGlzIHZpcnR1YWwgZnVuY3Rpb24gY2Fu
IGJlIHJlaW1wbGVtZW50ZWQgaW4gYSBRV2ViUGFnZSBzdWJjbGFzcyB0byBwcm92aWRlIHN1cHBv
cnQgZm9yIGV4dGVuc2lvbnMuIFRoZSBcYSBvcHRpb24KKyAgICBhcmd1bWVudCBpcyBwcm92aWRl
ZCBhcyBpbnB1dCB0byB0aGUgZXh0ZW5zaW9uOyB0aGUgb3V0cHV0IHJlc3VsdHMgY2FuIGJlIHN0
b3JlZCBpbiBcYSBvdXRwdXQuCisKKyAgICBUaGUgYmVoYXZpb3Igb2YgdGhpcyBmdW5jdGlvbiBp
cyBkZXRlcm1pbmVkIGJ5IFxhIGV4dGVuc2lvbi4gVGhlIFxhIG9wdGlvbgorICAgIGFuZCBcYSBv
dXRwdXQgdmFsdWVzIGFyZSB0eXBpY2FsbHkgY2FzdGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHR5
cGVzIChmb3IKKyAgICBleGFtcGxlLCBDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uT3B0aW9u
IGFuZAorICAgIENob29zZU11bHRpcGxlRmlsZXNFeHRlbnNpb25SZXR1cm4gZm9yIENob29zZU11
bHRpcGxlRmlsZXNFeHRlbnNpb24pLgorCisgICAgWW91IGNhbiBjYWxsIHN1cHBvcnRzRXh0ZW5z
aW9uKCkgdG8gY2hlY2sgaWYgYW4gZXh0ZW5zaW9uIGlzIHN1cHBvcnRlZCBieSB0aGUgcGFnZS4K
KworICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIHdhcyBjYWxsZWQgc3VjY2Vzc2Z1
bGx5OyBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KKworICAgIFxzYSBzdXBwb3J0c0V4dGVuc2lv
bigpLCBFeHRlbnNpb24KKyovCitib29sIFFXZWJQYWdlOjpleHRlbnNpb24oRXh0ZW5zaW9uIGV4
dGVuc2lvbiwgY29uc3QgRXh0ZW5zaW9uT3B0aW9uICpvcHRpb24sIEV4dGVuc2lvblJldHVybiAq
b3V0cHV0KQoreworI2lmbmRlZiBRVF9OT19GSUxFRElBTE9HCisgICAgaWYgKGV4dGVuc2lvbiA9
PSBDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uKSB7CisgICAgICAgIC8vIEZJWE1FOiBkbyBu
b3QgaWdub3JlIHN1Z2dlc3RlZEZpbGVzCisgICAgICAgIFFTdHJpbmdMaXN0IHN1Z2dlc3RlZEZp
bGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lvbk9wdGlv
bio+KG9wdGlvbiktPnN1Z2dlc3RlZEZpbGVOYW1lczsKKyAgICAgICAgUVN0cmluZ0xpc3QgbmFt
ZXMgPSBRRmlsZURpYWxvZzo6Z2V0T3BlbkZpbGVOYW1lcyh2aWV3KCksIFFTdHJpbmc6Om51bGwp
OworICAgICAgICBzdGF0aWNfY2FzdDxDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5zaW9uUmV0dXJu
Kj4ob3V0cHV0KS0+ZmlsZU5hbWVzID0gbmFtZXM7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiEKKyAgICBUaGlzIHZpcnR1
YWwgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZSB3ZWIgcGFnZSBzdXBwb3J0cyBcYSBleHRl
bnNpb247IG90aGVyd2lzZSBmYWxzZSBpcyByZXR1cm5lZC4KKworICAgIFxzYSBleHRlbnNpb24o
KQorKi8KK2Jvb2wgUVdlYlBhZ2U6OnN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNp
b24pIGNvbnN0Cit7CisjaWZuZGVmIFFUX05PX0ZJTEVESUFMT0cKKyAgICByZXR1cm4gZXh0ZW5z
aW9uID09IENob29zZU11bHRpcGxlRmlsZXNFeHRlbnNpb247CisjZWxzZQorICAgIFFfVU5VU0VE
KGV4dGVuc2lvbik7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKy8qIQorICogXGlu
dGVybmFsCisgKi8KK1FXZWJQYWdlQWRhcHRlciAqUVdlYlBhZ2U6OmhhbmRsZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQ7Cit9CisKKy8qIQorICAgIEZpbmRzIHRoZSBzcGVjaWZpZWQgc3RyaW5n
LCBcYSBzdWJTdHJpbmcsIGluIHRoZSBwYWdlLCB1c2luZyB0aGUgZ2l2ZW4gXGEgb3B0aW9ucy4K
KworICAgIElmIHRoZSBIaWdobGlnaHRBbGxPY2N1cnJlbmNlcyBmbGFnIGlzIHBhc3NlZCwgdGhl
IGZ1bmN0aW9uIHdpbGwgaGlnaGxpZ2h0IGFsbCBvY2N1cnJlbmNlcworICAgIHRoYXQgZXhpc3Qg
aW4gdGhlIHBhZ2UuIEFsbCBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgZXh0ZW5kIHRoZSBoaWdobGln
aHQsIHJhdGhlciB0aGFuCisgICAgcmVwbGFjZSBpdCwgd2l0aCBvY2N1cnJlbmNlcyBvZiB0aGUg
bmV3IHN0cmluZy4KKworICAgIElmIHRoZSBIaWdobGlnaHRBbGxPY2N1cnJlbmNlcyBmbGFnIGlz
IG5vdCBwYXNzZWQsIHRoZSBmdW5jdGlvbiB3aWxsIHNlbGVjdCBhbiBvY2N1cnJlbmNlCisgICAg
YW5kIGFsbCBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgcmVwbGFjZSB0aGUgY3VycmVudCBvY2N1cnJl
bmNlIHdpdGggdGhlIG5leHQgb25lLgorCisgICAgVG8gY2xlYXIgdGhlIHNlbGVjdGlvbiwganVz
dCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KKworICAgIFJldHVybnMgdHJ1ZSBpZiBcYSBzdWJTdHJp
bmcgd2FzIGZvdW5kOyBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KKyovCitib29sIFFXZWJQYWdl
OjpmaW5kVGV4dChjb25zdCBRU3RyaW5nICZzdWJTdHJpbmcsIEZpbmRGbGFncyBvcHRpb25zKQor
eworICAgIHJldHVybiBkLT5maW5kVGV4dChzdWJTdHJpbmcsIHN0YXRpY19jYXN0PFFXZWJQYWdl
QWRhcHRlcjo6RmluZEZsYWc+KG9wdGlvbnMub3BlcmF0b3IgaW50KCkpKTsKK30KKworLyohCisg
ICAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHBhZ2UncyBzZXR0aW5ncyBvYmplY3QuCisKKyAg
ICBcc2EgUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCisqLworUVdlYlNldHRpbmdzICpR
V2ViUGFnZTo6c2V0dGluZ3MoKSBjb25zdAoreworICAgIHJldHVybiBkLT5zZXR0aW5nczsKK30K
KworLyohCisgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgd2ViIGNvbnRlbnQg
cmVxdWVzdHMgYSBmaWxlIG5hbWUsIGZvciBleGFtcGxlCisgICAgYXMgYSByZXN1bHQgb2YgdGhl
IHVzZXIgY2xpY2tpbmcgb24gYSAiZmlsZSB1cGxvYWQiIGJ1dHRvbiBpbiBhIEhUTUwgZm9ybS4K
KworICAgIEEgc3VnZ2VzdGVkIGZpbGVuYW1lIG1heSBiZSBwcm92aWRlZCBpbiBcYSBzdWdnZXN0
ZWRGaWxlLiBUaGUgZnJhbWUgb3JpZ2luYXRpbmcgdGhlCisgICAgcmVxdWVzdCBpcyBwcm92aWRl
ZCBhcyBcYSBwYXJlbnRGcmFtZS4KKworICAgIFxzYSBDaG9vc2VNdWx0aXBsZUZpbGVzRXh0ZW5z
aW9uCisqLworUVN0cmluZyBRV2ViUGFnZTo6Y2hvb3NlRmlsZShRV2ViRnJhbWUgKnBhcmVudEZy
YW1lLCBjb25zdCBRU3RyaW5nJiBzdWdnZXN0ZWRGaWxlKQoreworICAgIFFfVU5VU0VEKHBhcmVu
dEZyYW1lKTsKKyNpZm5kZWYgUVRfTk9fRklMRURJQUxPRworICAgIHJldHVybiBRRmlsZURpYWxv
Zzo6Z2V0T3BlbkZpbGVOYW1lKHZpZXcoKSwgUVN0cmluZzo6bnVsbCwgc3VnZ2VzdGVkRmlsZSk7
CisjZWxzZQorICAgIHJldHVybiBRU3RyaW5nOjpudWxsOworI2VuZGlmCit9CisKKy8qIQorICAg
IFNldHMgdGhlIFFOZXR3b3JrQWNjZXNzTWFuYWdlciBcYSBtYW5hZ2VyIHJlc3BvbnNpYmxlIGZv
ciBzZXJ2aW5nIG5ldHdvcmsgcmVxdWVzdHMgZm9yIHRoaXMKKyAgICBRV2ViUGFnZS4KKworICAg
IFxub3RlIEl0IGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIHRvIGNoYW5nZSB0aGUgbmV0d29y
ayBhY2Nlc3MgbWFuYWdlciBhZnRlciB0aGUKKyAgICBRV2ViUGFnZSBoYXMgdXNlZCBpdC4gVGhl
IHJlc3VsdHMgb2YgZG9pbmcgdGhpcyBhcmUgdW5kZWZpbmVkLgorCisgICAgXHNhIG5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyKCkKKyovCit2b2lkIFFXZWJQYWdlOjpzZXROZXR3b3JrQWNjZXNzTWFuYWdl
cihRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFnZXIpCit7CisgICAgZC0+c2V0TmV0d29ya0Fj
Y2Vzc01hbmFnZXIobWFuYWdlcik7Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhlIFFOZXR3b3Jr
QWNjZXNzTWFuYWdlciB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBzZXJ2aW5nIG5ldHdvcmsKKyAg
ICByZXF1ZXN0cyBmb3IgdGhpcyBRV2ViUGFnZS4KKworICAgIFxzYSBzZXROZXR3b3JrQWNjZXNz
TWFuYWdlcigpCisqLworUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyICpRV2ViUGFnZTo6bmV0d29ya0Fj
Y2Vzc01hbmFnZXIoKSBjb25zdAoreworICAgIHJldHVybiBkLT5uZXR3b3JrQWNjZXNzTWFuYWdl
cigpOworfQorCisvKiEKKyAgICBTZXRzIHRoZSBRV2ViUGx1Z2luRmFjdG9yeSBcYSBmYWN0b3J5
IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBwbHVnaW5zIGVtYmVkZGVkIGludG8gdGhpcworICAg
IFFXZWJQYWdlLgorCisgICAgTm90ZTogVGhlIHBsdWdpbiBmYWN0b3J5IGlzIG9ubHkgdXNlZCBp
ZiB0aGUgUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCBhdHRyaWJ1dGUgaXMgZW5hYmxlZC4K
KworICAgIFxzYSBwbHVnaW5GYWN0b3J5KCkKKyovCit2b2lkIFFXZWJQYWdlOjpzZXRQbHVnaW5G
YWN0b3J5KFFXZWJQbHVnaW5GYWN0b3J5ICpmYWN0b3J5KQoreworICAgIGQtPnBsdWdpbkZhY3Rv
cnkgPSBmYWN0b3J5OworfQorCisvKiEKKyAgICBSZXR1cm5zIHRoZSBRV2ViUGx1Z2luRmFjdG9y
eSB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBwbHVnaW5zIGVtYmVkZGVkIGludG8K
KyAgICB0aGlzIFFXZWJQYWdlLiBJZiBubyBwbHVnaW4gZmFjdG9yeSBpcyBpbnN0YWxsZWQgYSBu
dWxsIHBvaW50ZXIgaXMgcmV0dXJuZWQuCisKKyAgICBcc2Egc2V0UGx1Z2luRmFjdG9yeSgpCisq
LworUVdlYlBsdWdpbkZhY3RvcnkgKlFXZWJQYWdlOjpwbHVnaW5GYWN0b3J5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+cGx1Z2luRmFjdG9yeTsKK30KKworLyohCisgICAgVGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgd2hlbiBhIHVzZXIgYWdlbnQgZm9yIEhUVFAgcmVxdWVzdHMgaXMgbmVlZGVk
LiBZb3UgY2FuIHJlaW1wbGVtZW50IHRoaXMKKyAgICBmdW5jdGlvbiB0byBkeW5hbWljYWxseSBy
ZXR1cm4gZGlmZmVyZW50IHVzZXIgYWdlbnRzIGZvciBkaWZmZXJlbnQgVVJMcywgYmFzZWQgb24g
dGhlIFxhIHVybCBwYXJhbWV0ZXIuCisKKyAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBy
ZXR1cm5zIHRoZSBmb2xsb3dpbmcgdmFsdWU6CisKKyAgICAiTW96aWxsYS81LjAgKCVQbGF0Zm9y
bSUlU2VjdXJpdHklJVN1YnBsYXRmb3JtJSkgQXBwbGVXZWJLaXQvJVdlYktpdFZlcnNpb24lIChL
SFRNTCwgbGlrZSBHZWNrbykgJUFwcFZlcnNpb24gU2FmYXJpLyVXZWJLaXRWZXJzaW9uJSIKKwor
ICAgIEluIHRoaXMgc3RyaW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSByZXBsYWNlZCBhdCBy
dW4tdGltZToKKyAgICBcbGlzdAorICAgIFxsaSAlUGxhdGZvcm0lIGV4cGFuZHMgdG8gdGhlIHdp
bmRvd2luZyBzeXN0ZW0gZm9sbG93ZWQgYnkgIjsgIiBpZiBpdCBpcyBub3QgV2luZG93cyAoZS5n
LiAiWDExOyAiKS4KKyAgICBcbGkgJVNlY3VyaXR5JSBleHBhbmRzIHRvICJOOyAiIGlmIFNTTCBp
cyBkaXNhYmxlZC4KKyAgICBcbGkgJVN1YnBsYXRmb3JtJSBleHBhbmRzIHRvIHRoZSBvcGVyYXRp
bmcgc3lzdGVtIHZlcnNpb24gKGUuZy4gIldpbmRvd3MgTlQgNi4xIiBvciAiSW50ZWwgTWFjIE9T
IFggMTAuNSIpLgorICAgIFxsaSAlV2ViS2l0VmVyc2lvbiUgaXMgdGhlIHZlcnNpb24gb2YgV2Vi
S2l0IHRoZSBhcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgYWdhaW5zdC4KKyAgICBcbGkgJUFwcFZl
cnNpb24lIGV4cGFuZHMgdG8gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCkvUUNv
cmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25WZXJzaW9uKCkgaWYgdGhleSdyZSBzZXQ7IG90aGVy
d2lzZSBkZWZhdWx0aW5nIHRvIFF0IGFuZCB0aGUgY3VycmVudCBRdCB2ZXJzaW9uLgorICAgIFxl
bmRsaXN0CisqLworUVN0cmluZyBRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKGNvbnN0IFFVcmwm
KSBjb25zdAoreworICAgIHJldHVybiBRV2ViUGFnZUFkYXB0ZXI6OmRlZmF1bHRVc2VyQWdlbnRT
dHJpbmcoKTsKK30KKworCisvKiEKKyAgICBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0
ZXMgdGhhdCB3ZXJlIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmsgdG8gcmVuZGVyIHRoZSBjdXJy
ZW50IHBhZ2UsCisgICAgaW5jbHVkaW5nIGV4dHJhIGNvbnRlbnQgc3VjaCBhcyBlbWJlZGRlZCBp
bWFnZXMuCisKKyAgICBcc2EgYnl0ZXNSZWNlaXZlZCgpCisqLworcXVpbnQ2NCBRV2ViUGFnZTo6
dG90YWxCeXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fdG90YWxCeXRlczsKK30KKwor
CisvKiEKKyAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIHJlY2VpdmVk
IGZyb20gdGhlIG5ldHdvcmsgdG8gcmVuZGVyIHRoZSBjdXJyZW50IHBhZ2UuCisKKyAgICBcc2Eg
dG90YWxCeXRlcygpLCBsb2FkUHJvZ3Jlc3MoKQorKi8KK3F1aW50NjQgUVdlYlBhZ2U6OmJ5dGVz
UmVjZWl2ZWQoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX2J5dGVzUmVjZWl2ZWQ7Cit9CisK
KworLyohCisgICAgXHByb3BlcnR5IFFXZWJQYWdlOjp2aXNpYmlsaXR5U3RhdGUKKyAgICBcYnJp
ZWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXRlCisKKyAgICBUaGlzIHByb3BlcnR5IHNob3Vs
ZCBiZSBjaGFuZ2VkIGJ5IFF0IGFwcGxpY2F0aW9ucyB3aG8gd2FudCB0byBub3RpZnkgdGhlIEph
dmFTY3JpcHQgYXBwbGljYXRpb24KKyAgICB0aGF0IHRoZSB2aXNpYmlsaXR5IHN0YXRlIGhhcyBj
aGFuZ2VkIChlLmcuIGJ5IHJlaW1wbGVtZW50aW5nIFFXaWRnZXQ6OnNldFZpc2libGUpLgorICAg
IFRoZSB2aXNpYmlsaXR5IHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB3aXRoIHRoZSBcYSBzdGF0ZSBw
YXJhbWV0ZXIgdmFsdWUgb25seSBpZiBpdCdzIGRpZmZlcmVudCBmcm9tIHRoZSBwcmV2aW91cyBz
ZXQuCisgICAgVGhlbiwgSFRNTCBET00gRG9jdW1lbnQgT2JqZWN0IGF0dHJpYnV0ZXMgJ2hpZGRl
bicgYW5kICd2aXNpYmlsaXR5U3RhdGUnCisgICAgd2lsbCBiZSB1cGRhdGVkIHRvIHRoZSBjb3Jy
ZWN0IHZhbHVlIGFuZCBhICd2aXNpYmxpdHljaGFuZ2UnIGV2ZW50IHdpbGwgYmUgZmlyZWQuCisg
ICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIEhUTUw1IEFQSSBjYW4gYmUgZm91bmQgYXQg
XGx7aHR0cDovL3d3dy53My5vcmcvVFIvcGFnZS12aXNpYmlsaXR5L317VzNDIFJlY29tbWVuZGF0
aW9uOiBQYWdlIFZpc2liaWxpdHl9LgorCisgICAgQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBp
cyBzZXQgdG8gVmlzaWJpbGl0eVN0YXRlVmlzaWJsZS4KKyovCit2b2lkIFFXZWJQYWdlOjpzZXRW
aXNpYmlsaXR5U3RhdGUoVmlzaWJpbGl0eVN0YXRlIHN0YXRlKQoreworICAgIGQtPnNldFZpc2li
aWxpdHlTdGF0ZShzdGF0aWNfY2FzdDxRV2ViUGFnZUFkYXB0ZXI6OlZpc2liaWxpdHlTdGF0ZT4o
c3RhdGUpKTsKK30KKworUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZSBRV2ViUGFnZTo6dmlzaWJp
bGl0eVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlzaWJpbGl0eVN0
YXRlPihkLT52aXNpYmlsaXR5U3RhdGUoKSk7Cit9CisKKworLyohCisgICAgXHNpbmNlIDQuOAor
ICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp2aWV3cG9ydENoYW5nZVJlcXVlc3RlZCgpCisKKyAgICBQ
YWdlIGF1dGhvcnMgY2FuIHByb3ZpZGUgdGhlIHN1cHBsaWVkIHZhbHVlcyBieSB1c2luZyB0aGUg
dmlld3BvcnQgbWV0YSB0YWcuIE1vcmUgaW5mb3JtYXRpb24KKyAgICBhYm91dCB0aGlzIGNhbiBi
ZSBmb3VuZCBhdCBcbHtodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9zYWZhcmkvbGlicmFyeS9k
b2N1bWVudGF0aW9uL2FwcGxlYXBwbGljYXRpb25zL3JlZmVyZW5jZS9zYWZhcml3ZWJjb250ZW50
L3VzaW5ndGhldmlld3BvcnQvdXNpbmd0aGV2aWV3cG9ydC5odG1sfXtTYWZhcmkgUmVmZXJlbmNl
IExpYnJhcnk6IFVzaW5nIHRoZSBWaWV3cG9ydCBNZXRhIFRhZ30uCisKKyAgICBcc2EgUVdlYlBh
Z2U6OlZpZXdwb3J0QXR0cmlidXRlcywgc2V0UHJlZmVycmVkQ29udGVudHNTaXplKCksIFFHcmFw
aGljc1dlYlZpZXc6OnNldFNjYWxlKCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdl
Ojpsb2FkU3RhcnRlZCgpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBwYWdl
IHN0YXJ0cyBsb2FkaW5nIGNvbnRlbnQuCisKKyAgICBcc2EgbG9hZEZpbmlzaGVkKCkKKyovCisK
Ky8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjpsb2FkUHJvZ3Jlc3MoaW50IHByb2dyZXNzKQor
CisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSBnbG9iYWwgcHJvZ3Jlc3Mgc3Rh
dHVzIGNoYW5nZXMuCisgICAgVGhlIGN1cnJlbnQgdmFsdWUgaXMgcHJvdmlkZWQgYnkgXGEgcHJv
Z3Jlc3MgYW5kIHNjYWxlcyBmcm9tIDAgdG8gMTAwLAorICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0
IHJhbmdlIG9mIFFQcm9ncmVzc0Jhci4KKyAgICBJdCBhY2N1bXVsYXRlcyBjaGFuZ2VzIGZyb20g
YWxsIHRoZSBjaGlsZCBmcmFtZXMuCisKKyAgICBcc2EgYnl0ZXNSZWNlaXZlZCgpCisqLworCisv
KiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6bG9hZEZpbmlzaGVkKGJvb2wgb2spCisKKyAgICBU
aGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHBhZ2UgZmluaXNoZXMgbG9hZGluZyBjb250
ZW50LiBUaGlzIHNpZ25hbAorICAgIGlzIGluZGVwZW5kYW50IG9mIHNjcmlwdCBleGVjdXRpb24g
b3IgcGFnZSByZW5kZXJpbmcuCisgICAgXGEgb2sgd2lsbCBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBs
b2FkIHdhcyBzdWNjZXNzZnVsIG9yIGFueSBlcnJvciBvY2N1cnJlZC4KKworICAgIFxzYSBsb2Fk
U3RhcnRlZCgpLCBFcnJvclBhZ2VFeHRlbnNpb24KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFX
ZWJQYWdlOjpsaW5rSG92ZXJlZChjb25zdCBRU3RyaW5nICZsaW5rLCBjb25zdCBRU3RyaW5nICZ0
aXRsZSwgY29uc3QgUVN0cmluZyAmdGV4dENvbnRlbnQpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBl
bWl0dGVkIHdoZW4gdGhlIG1vdXNlIGhvdmVycyBvdmVyIGEgbGluay4KKworICAgIFxhIGxpbmsg
Y29udGFpbnMgdGhlIGxpbmsgdXJsLgorICAgIFxhIHRpdGxlIGlzIHRoZSBsaW5rIGVsZW1lbnQn
cyB0aXRsZSwgaWYgaXQgaXMgc3BlY2lmaWVkIGluIHRoZSBtYXJrdXAuCisgICAgXGEgdGV4dENv
bnRlbnQgcHJvdmlkZXMgdGV4dCB3aXRoaW4gdGhlIGxpbmsgZWxlbWVudCwgZS5nLiwgdGV4dCBp
bnNpZGUgYW4gSFRNTCBhbmNob3IgdGFnLgorCisgICAgV2hlbiB0aGUgbW91c2UgbGVhdmVzIHRo
ZSBsaW5rIGVsZW1lbnQgdGhlIHNpZ25hbCBpcyBlbWl0dGVkIHdpdGggZW1wdHkgcGFyYW1ldGVy
cy4KKworICAgIFxzYSBsaW5rQ2xpY2tlZCgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2Vi
UGFnZTo6c3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5nJiB0ZXh0KQorCisgICAgVGhpcyBz
aWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSBzdGF0dXNiYXIgXGEgdGV4dCBpcyBjaGFuZ2VkIGJ5
IHRoZSBwYWdlLgorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OmZyYW1lQ3JlYXRl
ZChRV2ViRnJhbWUgKmZyYW1lKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuZXZl
ciB0aGUgcGFnZSBjcmVhdGVzIGEgbmV3IFxhIGZyYW1lLgorCisgICAgXHNhIGN1cnJlbnRGcmFt
ZSgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6c2VsZWN0aW9uQ2hhbmdlZCgp
CisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRoZSBzZWxlY3Rpb24gY2hh
bmdlcywgZWl0aGVyIGludGVyYWN0aXZlbHkKKyAgICBvciBwcm9ncmFtbWF0aWNhbGx5IChlLmcu
IGJ5IGNhbGxpbmcgdHJpZ2dlckFjdGlvbigpIHdpdGggYSBzZWxlY3Rpb24gYWN0aW9uKS4KKwor
ICAgIFxzYSBzZWxlY3RlZFRleHQoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlBhZ2U6
OmNvbnRlbnRzQ2hhbmdlZCgpCisgICAgXHNpbmNlIDQuNQorCisgICAgVGhpcyBzaWduYWwgaXMg
ZW1pdHRlZCB3aGVuZXZlciB0aGUgdGV4dCBpbiBmb3JtIGVsZW1lbnRzIGNoYW5nZXMKKyAgICBh
cyB3ZWxsIGFzIG90aGVyIGVkaXRhYmxlIGNvbnRlbnQuCisKKyAgICBcc2EgY29udGVudEVkaXRh
YmxlLCBtb2RpZmllZCwgUVdlYkZyYW1lOjp0b0h0bWwoKSwgUVdlYkZyYW1lOjp0b1BsYWluVGV4
dCgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6Z2VvbWV0cnlDaGFuZ2VSZXF1
ZXN0ZWQoY29uc3QgUVJlY3QmIGdlb20pCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW5ldmVyIHRoZSBkb2N1bWVudCB3YW50cyB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uIGFuZCBzaXpl
IG9mIHRoZQorICAgIHBhZ2UgdG8gXGEgZ2VvbS4gVGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxl
IHRocm91Z2ggSmF2YVNjcmlwdC4KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjpy
ZXBhaW50UmVxdWVzdGVkKGNvbnN0IFFSZWN0JiBkaXJ0eVJlY3QpCisKKyAgICBUaGlzIHNpZ25h
bCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRoaXMgUVdlYlBhZ2Ugc2hvdWxkIGJlIHVwZGF0ZWQuIEl0
J3MgdXNlZnVsCisgICAgd2hlbiByZW5kZXJpbmcgYSBRV2ViUGFnZSB3aXRob3V0IGEgUVdlYlZp
ZXcgb3IgUUdyYXBoaWNzV2ViVmlldy4KKyAgICBcYSBkaXJ0eVJlY3QgY29udGFpbnMgdGhlIGFy
ZWEgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkLiBUbyBwYWludCB0aGUgUVdlYlBhZ2UgZ2V0Cisg
ICAgdGhlIG1haW5GcmFtZSgpIGFuZCBjYWxsIHRoZSByZW5kZXIoUVBhaW50ZXIqLCBjb25zdCBR
UmVnaW9uJikgbWV0aG9kIHdpdGggdGhlCisgICAgXGEgZGlydHlSZWN0IGFzIHRoZSBzZWNvbmQg
cGFyYW1ldGVyLgorCisgICAgXHNhIG1haW5GcmFtZSgpCisgICAgXHNhIHZpZXcoKQorKi8KKwor
LyohCisgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OnNjcm9sbFJlcXVlc3RlZChpbnQgZHgsIGludCBk
eSwgY29uc3QgUVJlY3QmIHJlY3RUb1Njcm9sbCkKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0
ZWQgd2hlbmV2ZXIgdGhlIGNvbnRlbnQgZ2l2ZW4gYnkgXGEgcmVjdFRvU2Nyb2xsIG5lZWRzCisg
ICAgdG8gYmUgc2Nyb2xsZWQgXGEgZHggYW5kIFxhIGR5IGRvd253YXJkcyBhbmQgbm8gdmlldyB3
YXMgc2V0LgorCisgICAgXHNhIHZpZXcoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlBh
Z2U6OndpbmRvd0Nsb3NlUmVxdWVzdGVkKCkKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQg
d2hlbmV2ZXIgdGhlIHBhZ2UgcmVxdWVzdHMgdGhlIHdlYiBicm93c2VyIHdpbmRvdyB0byBiZSBj
bG9zZWQsCisgICAgZm9yIGV4YW1wbGUgdGhyb3VnaCB0aGUgSmF2YVNjcmlwdCBcY3t3aW5kb3cu
Y2xvc2UoKX0gY2FsbC4KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjpwcmludFJl
cXVlc3RlZChRV2ViRnJhbWUgKmZyYW1lKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3
aGVuZXZlciB0aGUgcGFnZSByZXF1ZXN0cyB0aGUgd2ViIGJyb3dzZXIgdG8gcHJpbnQgXGEgZnJh
bWUsCisgICAgZm9yIGV4YW1wbGUgdGhyb3VnaCB0aGUgSmF2YVNjcmlwdCBcY3t3aW5kb3cucHJp
bnQoKX0gY2FsbC4KKworICAgIFxzYSBRV2ViRnJhbWU6OnByaW50KCksIFFQcmludFByZXZpZXdE
aWFsb2cKKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp1bnN1cHBvcnRlZENvbnRl
bnQoUU5ldHdvcmtSZXBseSAqcmVwbHkpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gV2ViS2l0IGNhbm5vdCBoYW5kbGUgYSBsaW5rIHRoZSB1c2VyIG5hdmlnYXRlZCB0byBvciBh
CisgICAgd2ViIHNlcnZlcidzIHJlc3BvbnNlIGluY2x1ZGVzIGEgIkNvbnRlbnQtRGlzcG9zaXRp
b24iIGhlYWRlciB3aXRoIHRoZSAnYXR0YWNobWVudCcgCisgICAgZGlyZWN0aXZlLiBJZiAiQ29u
dGVudC1EaXNwb3NpdGlvbiIgaXMgcHJlc2VudCBpbiBcYSByZXBseSwgdGhlIHdlYiBzZXJ2ZXIg
aXMgaW5kaWNhdGluZworICAgIHRoYXQgdGhlIGNsaWVudCBzaG91bGQgcHJvbXB0IHRoZSB1c2Vy
IHRvIHNhdmUgdGhlIGNvbnRlbnQgcmVnYXJkbGVzcyBvZiBjb250ZW50LXR5cGUuIAorICAgIFNl
ZSBSRkMgMjYxNiBzZWN0aW9ucyAxOS41LjEgZm9yIGRldGFpbHMgYWJvdXQgQ29udGVudC1EaXNw
b3NpdGlvbi4KKworICAgIEF0IHNpZ25hbCBlbWlzc2lvbiB0aW1lIHRoZSBtZXRhLWRhdGEgb2Yg
dGhlIFFOZXR3b3JrUmVwbHkgXGEgcmVwbHkgaXMgYXZhaWxhYmxlLgorCisgICAgXG5vdGUgVGhl
IHJlY2VpdmluZyBzbG90IGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgUU5ldHdvcmtS
ZXBseSBcYSByZXBseS4KKworICAgIFxub3RlIFRoaXMgc2lnbmFsIGlzIG9ubHkgZW1pdHRlZCBp
ZiB0aGUgZm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudCBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS4K
KworICAgIFxzYSBkb3dubG9hZFJlcXVlc3RlZCgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBR
V2ViUGFnZTo6ZG93bmxvYWRSZXF1ZXN0ZWQoY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0
KQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGRlY2lkZXMgdG8g
ZG93bmxvYWQgYSBsaW5rLiBUaGUgdXJsIG9mCisgICAgdGhlIGxpbmsgYXMgd2VsbCBhcyBhZGRp
dGlvbmFsIG1ldGEtaW5mb3JtYXRpb24gaXMgY29udGFpbmVkIGluIFxhIHJlcXVlc3QuCisKKyAg
ICBcc2EgdW5zdXBwb3J0ZWRDb250ZW50KCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJQ
YWdlOjptaWNyb0ZvY3VzQ2hhbmdlZCgpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gZm9yIGV4YW1wbGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJzb3IgaW4gYW4gZWRpdGFibGUg
Zm9ybQorICAgIGVsZW1lbnQgY2hhbmdlcy4gSXQgaXMgdXNlZCB0byBpbmZvcm0gaW5wdXQgbWV0
aG9kcyBhYm91dCB0aGUgbmV3IG9uLXNjcmVlbiBwb3NpdGlvbiB3aGVyZQorICAgIHRoZSB1c2Vy
IGlzIGFibGUgdG8gZW50ZXIgdGV4dC4gVGhpcyBzaWduYWwgaXMgdXN1YWxseSBjb25uZWN0ZWQg
dG8gdGhlCisgICAgUVdpZGdldDo6dXBkYXRlTWljcm9Gb2N1cygpIHNsb3QuCisqLworCisvKiEK
KyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6bGlua0NsaWNrZWQoY29uc3QgUVVybCAmdXJsKQorCisg
ICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuZXZlciB0aGUgdXNlciBjbGlja3Mgb24gYSBs
aW5rIGFuZCB0aGUgcGFnZSdzIGxpbmtEZWxlZ2F0aW9uUG9saWN5CisgICAgcHJvcGVydHkgaXMg
c2V0IHRvIGRlbGVnYXRlIHRoZSBsaW5rIGhhbmRsaW5nIGZvciB0aGUgc3BlY2lmaWVkIFxhIHVy
bC4KKworICAgIEJ5IGRlZmF1bHQgbm8gbGlua3MgYXJlIGRlbGVnYXRlZCBhbmQgYXJlIGhhbmRs
ZWQgYnkgUVdlYlBhZ2UgaW5zdGVhZC4KKworICAgIFxub3RlIFRoaXMgc2lnbmFsIHBvc3NpYmx5
IHdvbid0IGJlIGVtaXR0ZWQgZm9yIGNsaWNrZWQgbGlua3Mgd2hpY2ggdXNlCisgICAgSmF2YVNj
cmlwdCB0byB0cmlnZ2VyIG5hdmlnYXRpb24uCisKKyAgICBcc2EgbGlua0hvdmVyZWQoKQorKi8K
KworLyohCisgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OnRvb2xCYXJWaXNpYmlsaXR5Q2hhbmdlUmVx
dWVzdGVkKGJvb2wgdmlzaWJsZSkKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbmV2
ZXIgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHRvb2xiYXIgaW4gYSB3ZWIgYnJvd3NlcgorICAgIHdp
bmRvdyB0aGF0IGhvc3RzIFFXZWJQYWdlIHNob3VsZCBiZSBjaGFuZ2VkIHRvIFxhIHZpc2libGUu
CisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6c3RhdHVzQmFyVmlzaWJpbGl0eUNo
YW5nZVJlcXVlc3RlZChib29sIHZpc2libGUpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVk
IHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzdGF0dXNiYXIgaW4gYSB3ZWIgYnJvd3Nl
cgorICAgIHdpbmRvdyB0aGF0IGhvc3RzIFFXZWJQYWdlIHNob3VsZCBiZSBjaGFuZ2VkIHRvIFxh
IHZpc2libGUuCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6bWVudUJhclZpc2li
aWxpdHlDaGFuZ2VSZXF1ZXN0ZWQoYm9vbCB2aXNpYmxlKQorCisgICAgVGhpcyBzaWduYWwgaXMg
ZW1pdHRlZCB3aGVuZXZlciB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbWVudWJhciBpbiBhIHdlYiBi
cm93c2VyCisgICAgd2luZG93IHRoYXQgaG9zdHMgUVdlYlBhZ2Ugc2hvdWxkIGJlIGNoYW5nZWQg
dG8gXGEgdmlzaWJsZS4KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjpkYXRhYmFz
ZVF1b3RhRXhjZWVkZWQoUVdlYkZyYW1lKiBmcmFtZSwgUVN0cmluZyBkYXRhYmFzZU5hbWUpOwor
ICAgIFxzaW5jZSA0LjUKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbmV2ZXIgdGhl
IHdlYiBzaXRlIHNob3duIGluIFxhIGZyYW1lIGlzIGFza2luZyB0byBzdG9yZSBkYXRhCisgICAg
dG8gdGhlIGRhdGFiYXNlIFxhIGRhdGFiYXNlTmFtZSBhbmQgdGhlIHF1b3RhIGFsbG9jYXRlZCB0
byB0aGF0IHdlYiBzaXRlIGlzIGV4Y2VlZGVkLgorCisgICAgXHNhIFFXZWJEYXRhYmFzZQorKi8K
Ky8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjphcHBsaWNhdGlvbkNhY2hlUXVvdGFFeGNlZWRl
ZChRV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgcXVpbnQ2NCBkZWZhdWx0T3JpZ2luUXVvdGEs
IHF1aW50NjQgdG90YWxTcGFjZU5lZWRlZCk7CisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVk
IHdoZW5ldmVyIHRoZSB3ZWIgc2l0ZSBpcyBhc2tpbmcgdG8gc3RvcmUgZGF0YSB0byB0aGUgYXBw
bGljYXRpb24gY2FjaGUKKyAgICBkYXRhYmFzZSBkYXRhYmFzZU5hbWUgYW5kIHRoZSBxdW90YSBh
bGxvY2F0ZWQgdG8gdGhhdCB3ZWIgc2l0ZSBpcyBleGNlZWRlZC4KKworKi8KKworLyohCisgIFxz
aW5jZSA0LjUKKyAgXGZuIHZvaWQgUVdlYlBhZ2U6OnNhdmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFX
ZWJGcmFtZSogZnJhbWUsIFFXZWJIaXN0b3J5SXRlbSogaXRlbSk7CisKKyAgVGhpcyBzaWduYWwg
aXMgZW1pdHRlZCBzaG9ydGx5IGJlZm9yZSB0aGUgaGlzdG9yeSBvZiBuYXZpZ2F0ZWQgcGFnZXMK
KyAgaW4gXGEgZnJhbWUgaXMgY2hhbmdlZCwgZm9yIGV4YW1wbGUgd2hlbiBuYXZpZ2F0aW5nIGJh
Y2sgaW4gdGhlIGhpc3RvcnkuCisKKyAgVGhlIHByb3ZpZGVkIFFXZWJIaXN0b3J5SXRlbSwgXGEg
aXRlbSwgaG9sZHMgdGhlIGhpc3RvcnkgZW50cnkgb2YgdGhlIGZyYW1lIGJlZm9yZQorICB0aGUg
Y2hhbmdlLgorCisgIEEgcG90ZW50aWFsIHVzZS1jYXNlIGZvciB0aGlzIHNpZ25hbCBpcyB0byBz
dG9yZSBjdXN0b20gZGF0YSBpbgorICB0aGUgUVdlYkhpc3RvcnlJdGVtIGFzc29jaWF0ZWQgdG8g
dGhlIGZyYW1lLCB1c2luZyBRV2ViSGlzdG9yeUl0ZW06OnNldFVzZXJEYXRhKCkuCisqLworCisv
KiEKKyAgXHNpbmNlIDQuNQorICBcZm4gdm9pZCBRV2ViUGFnZTo6cmVzdG9yZUZyYW1lU3RhdGVS
ZXF1ZXN0ZWQoUVdlYkZyYW1lKiBmcmFtZSk7CisKKyAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3
aGVuIHRoZSBsb2FkIG9mIFxhIGZyYW1lIGlzIGZpbmlzaGVkIGFuZCB0aGUgYXBwbGljYXRpb24g
bWF5IG5vdyB1cGRhdGUgaXRzIHN0YXRlIGFjY29yZGluZ2x5LgorKi8KKworLyohCisgIFxmbiBR
V2ViUGFnZVByaXZhdGUqIFFXZWJQYWdlOjpoYW5kbGUoKSBjb25zdAorICBcaW50ZXJuYWwKKyov
CisKKyNpbmNsdWRlICJtb2NfcXdlYnBhZ2UuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3
ZWJwYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhMDkzYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlLmgKQEAg
LTAsMCArMSw0NjIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBT
dGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV0VCUEFHRV9ICisj
ZGVmaW5lIFFXRUJQQUdFX0gKKworI2luY2x1ZGUgPFF0V2ViS2l0L3F3ZWJraXRnbG9iYWwuaD4K
KyNpbmNsdWRlIDxRdFdlYktpdC9xd2Vic2V0dGluZ3MuaD4KKworI2luY2x1ZGUgPFF0Q29yZS9x
b2JqZWN0Lmg+CisjaW5jbHVkZSA8UXRDb3JlL3F1cmwuaD4KKyNpbmNsdWRlIDxRdFdpZGdldHMv
cXdpZGdldC5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFOZXR3b3JrUHJveHk7Citj
bGFzcyBRVW5kb1N0YWNrOworY2xhc3MgUU1lbnU7CitjbGFzcyBRTmV0d29ya1JlcXVlc3Q7Citj
bGFzcyBRTmV0d29ya1JlcGx5OworY2xhc3MgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOworUVRfRU5E
X05BTUVTUEFDRQorCitjbGFzcyBRV2ViRWxlbWVudDsKK2NsYXNzIFFXZWJGcmFtZTsKK2NsYXNz
IFFXZWJOZXR3b3JrUmVxdWVzdDsKK2NsYXNzIFFXZWJIaXN0b3J5OworCitjbGFzcyBRV2ViRnJh
bWVEYXRhOworY2xhc3MgUVdlYkhpc3RvcnlJdGVtOworY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7
CitjbGFzcyBRV2ViTmV0d29ya0ludGVyZmFjZTsKK2NsYXNzIFFXZWJQYWdlQWRhcHRlcjsKK2Ns
YXNzIFFXZWJQYWdlUHJpdmF0ZTsKK2NsYXNzIFFXZWJQbHVnaW5GYWN0b3J5OworY2xhc3MgUVdl
YlNlY3VyaXR5T3JpZ2luOworY2xhc3MgUXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CisgICAgY2xhc3Mg
RWRpdG9yQ2xpZW50UXQ7CisgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRRdDsKKyAgICBjbGFz
cyBJbnNwZWN0b3JDbGllbnRRdDsKKyAgICBjbGFzcyBJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFu
ZGxlclF0OworICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CisgICAgY2xhc3Mg
UmVzb3VyY2VIYW5kbGU7CisgICAgY2xhc3MgUU5ldHdvcmtSZXBseUhhbmRsZXI7CisKKyAgICBz
dHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKK30KKworY2xhc3MgUVdFQktJVFdJREdFVFNfRVhQT1JU
IFFXZWJQYWdlIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKKyAgICBRX1BST1BF
UlRZKGJvb2wgbW9kaWZpZWQgUkVBRCBpc01vZGlmaWVkKQorICAgIFFfUFJPUEVSVFkoUVN0cmlu
ZyBzZWxlY3RlZFRleHQgUkVBRCBzZWxlY3RlZFRleHQpCisgICAgUV9QUk9QRVJUWShRU3RyaW5n
IHNlbGVjdGVkSHRtbCBSRUFEIHNlbGVjdGVkSHRtbCkKKyAgICBRX1BST1BFUlRZKGJvb2wgaGFz
U2VsZWN0aW9uIFJFQUQgaGFzU2VsZWN0aW9uKQorICAgIFFfUFJPUEVSVFkoUVNpemUgdmlld3Bv
cnRTaXplIFJFQUQgdmlld3BvcnRTaXplIFdSSVRFIHNldFZpZXdwb3J0U2l6ZSkKKyAgICBRX1BS
T1BFUlRZKFFTaXplIHByZWZlcnJlZENvbnRlbnRzU2l6ZSBSRUFEIHByZWZlcnJlZENvbnRlbnRz
U2l6ZSBXUklURSBzZXRQcmVmZXJyZWRDb250ZW50c1NpemUpCisgICAgUV9QUk9QRVJUWShib29s
IGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQgUkVBRCBmb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50
IFdSSVRFIHNldEZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQpCisgICAgUV9QUk9QRVJUWShMaW5r
RGVsZWdhdGlvblBvbGljeSBsaW5rRGVsZWdhdGlvblBvbGljeSBSRUFEIGxpbmtEZWxlZ2F0aW9u
UG9saWN5IFdSSVRFIHNldExpbmtEZWxlZ2F0aW9uUG9saWN5KQorICAgIFFfUFJPUEVSVFkoUVBh
bGV0dGUgcGFsZXR0ZSBSRUFEIHBhbGV0dGUgV1JJVEUgc2V0UGFsZXR0ZSkKKyAgICBRX1BST1BF
UlRZKGJvb2wgY29udGVudEVkaXRhYmxlIFJFQUQgaXNDb250ZW50RWRpdGFibGUgV1JJVEUgc2V0
Q29udGVudEVkaXRhYmxlKQorICAgIFFfUFJPUEVSVFkoVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxp
dHlTdGF0ZSBSRUFEIHZpc2liaWxpdHlTdGF0ZSBXUklURSBzZXRWaXNpYmlsaXR5U3RhdGUpCisg
ICAgUV9FTlVNUyhMaW5rRGVsZWdhdGlvblBvbGljeSBOYXZpZ2F0aW9uVHlwZSBWaXNpYmlsaXR5
U3RhdGUgV2ViQWN0aW9uKQorcHVibGljOgorICAgIGVudW0gTmF2aWdhdGlvblR5cGUgeworICAg
ICAgICBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkLAorICAgICAgICBOYXZpZ2F0aW9uVHlwZUZv
cm1TdWJtaXR0ZWQsCisgICAgICAgIE5hdmlnYXRpb25UeXBlQmFja09yRm9yd2FyZCwKKyAgICAg
ICAgTmF2aWdhdGlvblR5cGVSZWxvYWQsCisgICAgICAgIE5hdmlnYXRpb25UeXBlRm9ybVJlc3Vi
bWl0dGVkLAorICAgICAgICBOYXZpZ2F0aW9uVHlwZU90aGVyCisgICAgfTsKKworICAgIGVudW0g
V2ViQWN0aW9uIHsKKyAgICAgICAgTm9XZWJBY3Rpb24gPSAtIDEsCisKKyAgICAgICAgT3Blbkxp
bmssCisKKyAgICAgICAgT3BlbkxpbmtJbk5ld1dpbmRvdywKKyAgICAgICAgT3BlbkZyYW1lSW5O
ZXdXaW5kb3csCisKKyAgICAgICAgRG93bmxvYWRMaW5rVG9EaXNrLAorICAgICAgICBDb3B5TGlu
a1RvQ2xpcGJvYXJkLAorCisgICAgICAgIE9wZW5JbWFnZUluTmV3V2luZG93LAorICAgICAgICBE
b3dubG9hZEltYWdlVG9EaXNrLAorICAgICAgICBDb3B5SW1hZ2VUb0NsaXBib2FyZCwKKworICAg
ICAgICBCYWNrLAorICAgICAgICBGb3J3YXJkLAorICAgICAgICBTdG9wLAorICAgICAgICBSZWxv
YWQsCisKKyAgICAgICAgQ3V0LAorICAgICAgICBDb3B5LAorICAgICAgICBQYXN0ZSwKKworICAg
ICAgICBVbmRvLAorICAgICAgICBSZWRvLAorICAgICAgICBNb3ZlVG9OZXh0Q2hhciwKKyAgICAg
ICAgTW92ZVRvUHJldmlvdXNDaGFyLAorICAgICAgICBNb3ZlVG9OZXh0V29yZCwKKyAgICAgICAg
TW92ZVRvUHJldmlvdXNXb3JkLAorICAgICAgICBNb3ZlVG9OZXh0TGluZSwKKyAgICAgICAgTW92
ZVRvUHJldmlvdXNMaW5lLAorICAgICAgICBNb3ZlVG9TdGFydE9mTGluZSwKKyAgICAgICAgTW92
ZVRvRW5kT2ZMaW5lLAorICAgICAgICBNb3ZlVG9TdGFydE9mQmxvY2ssCisgICAgICAgIE1vdmVU
b0VuZE9mQmxvY2ssCisgICAgICAgIE1vdmVUb1N0YXJ0T2ZEb2N1bWVudCwKKyAgICAgICAgTW92
ZVRvRW5kT2ZEb2N1bWVudCwKKyAgICAgICAgU2VsZWN0TmV4dENoYXIsCisgICAgICAgIFNlbGVj
dFByZXZpb3VzQ2hhciwKKyAgICAgICAgU2VsZWN0TmV4dFdvcmQsCisgICAgICAgIFNlbGVjdFBy
ZXZpb3VzV29yZCwKKyAgICAgICAgU2VsZWN0TmV4dExpbmUsCisgICAgICAgIFNlbGVjdFByZXZp
b3VzTGluZSwKKyAgICAgICAgU2VsZWN0U3RhcnRPZkxpbmUsCisgICAgICAgIFNlbGVjdEVuZE9m
TGluZSwKKyAgICAgICAgU2VsZWN0U3RhcnRPZkJsb2NrLAorICAgICAgICBTZWxlY3RFbmRPZkJs
b2NrLAorICAgICAgICBTZWxlY3RTdGFydE9mRG9jdW1lbnQsCisgICAgICAgIFNlbGVjdEVuZE9m
RG9jdW1lbnQsCisgICAgICAgIERlbGV0ZVN0YXJ0T2ZXb3JkLAorICAgICAgICBEZWxldGVFbmRP
ZldvcmQsCisKKyAgICAgICAgU2V0VGV4dERpcmVjdGlvbkRlZmF1bHQsCisgICAgICAgIFNldFRl
eHREaXJlY3Rpb25MZWZ0VG9SaWdodCwKKyAgICAgICAgU2V0VGV4dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0LAorCisgICAgICAgIFRvZ2dsZUJvbGQsCisgICAgICAgIFRvZ2dsZUl0YWxpYywKKyAgICAg
ICAgVG9nZ2xlVW5kZXJsaW5lLAorCisgICAgICAgIEluc3BlY3RFbGVtZW50LAorCisgICAgICAg
IEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwKKyAgICAgICAgSW5zZXJ0TGluZVNlcGFyYXRvciwK
KworICAgICAgICBTZWxlY3RBbGwsCisgICAgICAgIFJlbG9hZEFuZEJ5cGFzc0NhY2hlLAorCisg
ICAgICAgIFBhc3RlQW5kTWF0Y2hTdHlsZSwKKyAgICAgICAgUmVtb3ZlRm9ybWF0LAorCisgICAg
ICAgIFRvZ2dsZVN0cmlrZXRocm91Z2gsCisgICAgICAgIFRvZ2dsZVN1YnNjcmlwdCwKKyAgICAg
ICAgVG9nZ2xlU3VwZXJzY3JpcHQsCisgICAgICAgIEluc2VydFVub3JkZXJlZExpc3QsCisgICAg
ICAgIEluc2VydE9yZGVyZWRMaXN0LAorICAgICAgICBJbmRlbnQsCisgICAgICAgIE91dGRlbnQs
CisKKyAgICAgICAgQWxpZ25DZW50ZXIsCisgICAgICAgIEFsaWduSnVzdGlmaWVkLAorICAgICAg
ICBBbGlnbkxlZnQsCisgICAgICAgIEFsaWduUmlnaHQsCisKKyAgICAgICAgU3RvcFNjaGVkdWxl
ZFBhZ2VSZWZyZXNoLAorCisgICAgICAgIENvcHlJbWFnZVVybFRvQ2xpcGJvYXJkLAorCisgICAg
ICAgIE9wZW5MaW5rSW5UaGlzV2luZG93LAorCisgICAgICAgIFdlYkFjdGlvbkNvdW50CisgICAg
fTsKKworICAgIGVudW0gRmluZEZsYWcgeworICAgICAgICBGaW5kQmFja3dhcmQgPSAxLAorICAg
ICAgICBGaW5kQ2FzZVNlbnNpdGl2ZWx5ID0gMiwKKyAgICAgICAgRmluZFdyYXBzQXJvdW5kRG9j
dW1lbnQgPSA0LAorICAgICAgICBIaWdobGlnaHRBbGxPY2N1cnJlbmNlcyA9IDgsCisgICAgICAg
IEZpbmRBdFdvcmRCZWdpbm5pbmdzT25seSA9IDE2LAorICAgICAgICBUcmVhdE1lZGlhbENhcGl0
YWxBc1dvcmRCZWdpbm5pbmcgPSAzMiwKKyAgICAgICAgRmluZEJlZ2luc0luU2VsZWN0aW9uID0g
NjQKKyAgICB9OworICAgIFFfREVDTEFSRV9GTEFHUyhGaW5kRmxhZ3MsIEZpbmRGbGFnKQorCisg
ICAgZW51bSBMaW5rRGVsZWdhdGlvblBvbGljeSB7CisgICAgICAgIERvbnREZWxlZ2F0ZUxpbmtz
LAorICAgICAgICBEZWxlZ2F0ZUV4dGVybmFsTGlua3MsCisgICAgICAgIERlbGVnYXRlQWxsTGlu
a3MKKyAgICB9OworCisgICAgZW51bSBXZWJXaW5kb3dUeXBlIHsKKyAgICAgICAgV2ViQnJvd3Nl
cldpbmRvdywKKyAgICAgICAgV2ViTW9kYWxEaWFsb2cKKyAgICB9OworCisgICAgZW51bSBQZXJt
aXNzaW9uUG9saWN5IHsKKyAgICAgICAgUGVybWlzc2lvblVua25vd24sCisgICAgICAgIFBlcm1p
c3Npb25HcmFudGVkQnlVc2VyLAorICAgICAgICBQZXJtaXNzaW9uRGVuaWVkQnlVc2VyCisgICAg
fTsKKworICAgIGVudW0gRmVhdHVyZSB7CisgICAgICAgIE5vdGlmaWNhdGlvbnMsCisgICAgICAg
IEdlb2xvY2F0aW9uCisgICAgfTsKKworICAgIGVudW0gVmlzaWJpbGl0eVN0YXRlIHsKKyAgICAg
ICAgVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSwKKyAgICAgICAgVmlzaWJpbGl0eVN0YXRlSGlkZGVu
LAorICAgICAgICBWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIsCisgICAgICAgIFZpc2liaWxpdHlT
dGF0ZVVubG9hZGVkCisgICAgfTsKKworICAgIGNsYXNzIFFXRUJLSVRXSURHRVRTX0VYUE9SVCBW
aWV3cG9ydEF0dHJpYnV0ZXMgeworICAgIHB1YmxpYzoKKyAgICAgICAgVmlld3BvcnRBdHRyaWJ1
dGVzKCk7CisgICAgICAgIFZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBRV2ViUGFnZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzJiBvdGhlcik7CisKKyAgICAgICAgflZpZXdwb3J0QXR0cmlidXRlcygpOwor
CisgICAgICAgIFFXZWJQYWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIG9wZXJhdG9yPShjb25zdCBR
V2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBvdGhlcik7CisKKyAgICAgICAgaW5saW5lIHFy
ZWFsIGluaXRpYWxTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbFNjYWxlRmFj
dG9yOyB9CisgICAgICAgIGlubGluZSBxcmVhbCBtaW5pbXVtU2NhbGVGYWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX21pbmltdW1TY2FsZUZhY3RvcjsgfQorICAgICAgICBpbmxpbmUgcXJlYWwgbWF4
aW11bVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtU2NhbGVGYWN0b3I7IH0K
KyAgICAgICAgaW5saW5lIHFyZWFsIGRldmljZVBpeGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBt
X2RldmljZVBpeGVsUmF0aW87IH0KKyAgICAgICAgaW5saW5lIGJvb2wgaXNVc2VyU2NhbGFibGUo
KSBjb25zdCB7IHJldHVybiBtX2lzVXNlclNjYWxhYmxlOyB9CisgICAgICAgIGlubGluZSBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KKyAgICAgICAgaW5saW5lIFFT
aXplRiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBRU2hhcmVkRGF0YVBvaW50ZXI8UXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlPiBkOwor
ICAgICAgICBxcmVhbCBtX2luaXRpYWxTY2FsZUZhY3RvcjsKKyAgICAgICAgcXJlYWwgbV9taW5p
bXVtU2NhbGVGYWN0b3I7CisgICAgICAgIHFyZWFsIG1fbWF4aW11bVNjYWxlRmFjdG9yOworICAg
ICAgICBxcmVhbCBtX2RldmljZVBpeGVsUmF0aW87CisgICAgICAgIGJvb2wgbV9pc1VzZXJTY2Fs
YWJsZTsKKyAgICAgICAgYm9vbCBtX2lzVmFsaWQ7CisgICAgICAgIFFTaXplRiBtX3NpemU7CisK
KyAgICAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OworICAgICAgICBm
cmllbmQgY2xhc3MgUVdlYlBhZ2U7CisgICAgfTsKKworCisgICAgZXhwbGljaXQgUVdlYlBhZ2Uo
UU9iamVjdCAqcGFyZW50ID0gMCk7CisgICAgflFXZWJQYWdlKCk7CisKKyAgICBRV2ViRnJhbWUg
Km1haW5GcmFtZSgpIGNvbnN0OworICAgIFFXZWJGcmFtZSAqY3VycmVudEZyYW1lKCkgY29uc3Q7
CisgICAgUVdlYkZyYW1lKiBmcmFtZUF0KGNvbnN0IFFQb2ludCYgcG9zKSBjb25zdDsKKworICAg
IFFXZWJIaXN0b3J5ICpoaXN0b3J5KCkgY29uc3Q7CisgICAgUVdlYlNldHRpbmdzICpzZXR0aW5n
cygpIGNvbnN0OworCisgICAgdm9pZCBzZXRWaWV3KFFXaWRnZXQgKnZpZXcpOworICAgIFFXaWRn
ZXQgKnZpZXcoKSBjb25zdDsKKworICAgIGJvb2wgaXNNb2RpZmllZCgpIGNvbnN0OworI2lmbmRl
ZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBRVW5kb1N0YWNrICp1bmRvU3RhY2soKSBjb25zdDsKKyNl
bmRpZgorCisgICAgdm9pZCBzZXROZXR3b3JrQWNjZXNzTWFuYWdlcihRTmV0d29ya0FjY2Vzc01h
bmFnZXIgKm1hbmFnZXIpOworICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqbmV0d29ya0FjY2Vz
c01hbmFnZXIoKSBjb25zdDsKKworICAgIHZvaWQgc2V0UGx1Z2luRmFjdG9yeShRV2ViUGx1Z2lu
RmFjdG9yeSAqZmFjdG9yeSk7CisgICAgUVdlYlBsdWdpbkZhY3RvcnkgKnBsdWdpbkZhY3Rvcnko
KSBjb25zdDsKKworICAgIHF1aW50NjQgdG90YWxCeXRlcygpIGNvbnN0OworICAgIHF1aW50NjQg
Ynl0ZXNSZWNlaXZlZCgpIGNvbnN0OworCisgICAgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlT
dGF0ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VmlzaWJpbGl0eVN0YXRlKFZpc2liaWxpdHlTdGF0
ZSk7CisKKyAgICBib29sIGhhc1NlbGVjdGlvbigpIGNvbnN0OworICAgIFFTdHJpbmcgc2VsZWN0
ZWRUZXh0KCkgY29uc3Q7CisgICAgUVN0cmluZyBzZWxlY3RlZEh0bWwoKSBjb25zdDsKKworI2lm
bmRlZiBRVF9OT19BQ1RJT04KKyAgICBRQWN0aW9uICphY3Rpb24oV2ViQWN0aW9uIGFjdGlvbikg
Y29uc3Q7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgdHJpZ2dlckFjdGlvbihXZWJBY3Rpb24g
YWN0aW9uLCBib29sIGNoZWNrZWQgPSBmYWxzZSk7CisKKyAgICBRU2l6ZSB2aWV3cG9ydFNpemUo
KSBjb25zdDsKKyAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBRU2l6ZSAmc2l6ZSkgY29u
c3Q7CisgICAgVmlld3BvcnRBdHRyaWJ1dGVzIHZpZXdwb3J0QXR0cmlidXRlc0ZvclNpemUoY29u
c3QgUVNpemUmIGF2YWlsYWJsZVNpemUpIGNvbnN0OworCisgICAgUVNpemUgcHJlZmVycmVkQ29u
dGVudHNTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcmVmZXJyZWRDb250ZW50c1NpemUoY29u
c3QgUVNpemUgJnNpemUpIGNvbnN0OworICAgIHZvaWQgc2V0QWN0dWFsVmlzaWJsZUNvbnRlbnRS
ZWN0KGNvbnN0IFFSZWN0JiByZWN0KSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBldmVudChR
RXZlbnQqKTsKKyAgICBib29sIGZvY3VzTmV4dFByZXZDaGlsZChib29sIG5leHQpOworCisgICAg
UVZhcmlhbnQgaW5wdXRNZXRob2RRdWVyeShRdDo6SW5wdXRNZXRob2RRdWVyeSBwcm9wZXJ0eSkg
Y29uc3Q7CisKKyAgICBib29sIGZpbmRUZXh0KGNvbnN0IFFTdHJpbmcgJnN1YlN0cmluZywgRmlu
ZEZsYWdzIG9wdGlvbnMgPSAwKTsKKworICAgIHZvaWQgc2V0Rm9yd2FyZFVuc3VwcG9ydGVkQ29u
dGVudChib29sIGZvcndhcmQpOworICAgIGJvb2wgZm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudCgp
IGNvbnN0OworCisgICAgdm9pZCBzZXRMaW5rRGVsZWdhdGlvblBvbGljeShMaW5rRGVsZWdhdGlv
blBvbGljeSBwb2xpY3kpOworICAgIExpbmtEZWxlZ2F0aW9uUG9saWN5IGxpbmtEZWxlZ2F0aW9u
UG9saWN5KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFBhbGV0dGUoY29uc3QgUVBhbGV0dGUgJnBh
bGV0dGUpOworICAgIFFQYWxldHRlIHBhbGV0dGUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q29u
dGVudEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpOworICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUo
KSBjb25zdDsKKworI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQorICAgIGJvb2wgc3dhbGxvd0Nv
bnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQgKmV2ZW50KTsKKyNlbmRpZgorICAgIHZv
aWQgdXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKGNvbnN0IFFQb2ludCAmcG9zKTsKKwor
ICAgIFFNZW51ICpjcmVhdGVTdGFuZGFyZENvbnRleHRNZW51KCk7CisKKyAgICB2b2lkIHNldEZl
YXR1cmVQZXJtaXNzaW9uKFFXZWJGcmFtZSogZnJhbWUsIEZlYXR1cmUgZmVhdHVyZSwgUGVybWlz
c2lvblBvbGljeSBwb2xpY3kpOworCisgICAgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkQ29udGVudFR5
cGVzKCkgY29uc3Q7CisgICAgYm9vbCBzdXBwb3J0c0NvbnRlbnRUeXBlKGNvbnN0IFFTdHJpbmcm
IG1pbWVUeXBlKSBjb25zdDsKKworICAgIGVudW0gRXh0ZW5zaW9uIHsKKyAgICAgICAgQ2hvb3Nl
TXVsdGlwbGVGaWxlc0V4dGVuc2lvbiwKKyAgICAgICAgRXJyb3JQYWdlRXh0ZW5zaW9uCisgICAg
fTsKKyAgICBjbGFzcyBFeHRlbnNpb25PcHRpb24KKyAgICB7fTsKKyAgICBjbGFzcyBFeHRlbnNp
b25SZXR1cm4KKyAgICB7fTsKKworICAgIGNsYXNzIENob29zZU11bHRpcGxlRmlsZXNFeHRlbnNp
b25PcHRpb24gOiBwdWJsaWMgRXh0ZW5zaW9uT3B0aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFFXZWJGcmFtZSAqcGFyZW50RnJhbWU7CisgICAgICAgIFFTdHJpbmdMaXN0IHN1Z2dlc3RlZEZp
bGVOYW1lczsKKyAgICB9OworCisgICAgY2xhc3MgQ2hvb3NlTXVsdGlwbGVGaWxlc0V4dGVuc2lv
blJldHVybiA6IHB1YmxpYyBFeHRlbnNpb25SZXR1cm4geworICAgIHB1YmxpYzoKKyAgICAgICAg
UVN0cmluZ0xpc3QgZmlsZU5hbWVzOworICAgIH07CisKKyAgICBlbnVtIEVycm9yRG9tYWluIHsg
UXROZXR3b3JrLCBIdHRwLCBXZWJLaXQgfTsKKyAgICBjbGFzcyBFcnJvclBhZ2VFeHRlbnNpb25P
cHRpb24gOiBwdWJsaWMgRXh0ZW5zaW9uT3B0aW9uIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFFV
cmwgdXJsOworICAgICAgICBRV2ViRnJhbWUqIGZyYW1lOworICAgICAgICBFcnJvckRvbWFpbiBk
b21haW47CisgICAgICAgIGludCBlcnJvcjsKKyAgICAgICAgUVN0cmluZyBlcnJvclN0cmluZzsK
KyAgICB9OworCisgICAgY2xhc3MgRXJyb3JQYWdlRXh0ZW5zaW9uUmV0dXJuIDogcHVibGljIEV4
dGVuc2lvblJldHVybiB7CisgICAgcHVibGljOgorICAgICAgICBFcnJvclBhZ2VFeHRlbnNpb25S
ZXR1cm4oKSA6IGNvbnRlbnRUeXBlKFFMYXRpbjFTdHJpbmcoInRleHQvaHRtbCIpKSwgZW5jb2Rp
bmcoUUxhdGluMVN0cmluZygidXRmLTgiKSkge307CisgICAgICAgIFFTdHJpbmcgY29udGVudFR5
cGU7CisgICAgICAgIFFTdHJpbmcgZW5jb2Rpbmc7CisgICAgICAgIFFVcmwgYmFzZVVybDsKKyAg
ICAgICAgUUJ5dGVBcnJheSBjb250ZW50OworICAgIH07CisKKworICAgIHZpcnR1YWwgYm9vbCBl
eHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbiwgY29uc3QgRXh0ZW5zaW9uT3B0aW9uICpvcHRp
b24gPSAwLCBFeHRlbnNpb25SZXR1cm4gKm91dHB1dCA9IDApOworICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0V4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdDsKKworICAgIFFXZWJQ
YWdlQWRhcHRlciogaGFuZGxlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50
ZXJydXB0SmF2YVNjcmlwdCgpOworCitRX1NJR05BTFM6CisgICAgdm9pZCBsb2FkU3RhcnRlZCgp
OworICAgIHZvaWQgbG9hZFByb2dyZXNzKGludCBwcm9ncmVzcyk7CisgICAgdm9pZCBsb2FkRmlu
aXNoZWQoYm9vbCBvayk7CisKKyAgICB2b2lkIGxpbmtIb3ZlcmVkKGNvbnN0IFFTdHJpbmcgJmxp
bmssIGNvbnN0IFFTdHJpbmcgJnRpdGxlLCBjb25zdCBRU3RyaW5nICZ0ZXh0Q29udGVudCk7Cisg
ICAgdm9pZCBzdGF0dXNCYXJNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIHRleHQpOworICAgIHZvaWQg
c2VsZWN0aW9uQ2hhbmdlZCgpOworICAgIHZvaWQgZnJhbWVDcmVhdGVkKFFXZWJGcmFtZSAqZnJh
bWUpOworICAgIHZvaWQgZ2VvbWV0cnlDaGFuZ2VSZXF1ZXN0ZWQoY29uc3QgUVJlY3QmIGdlb20p
OworICAgIHZvaWQgcmVwYWludFJlcXVlc3RlZChjb25zdCBRUmVjdCYgZGlydHlSZWN0KTsKKyAg
ICB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgsIGludCBkeSwgY29uc3QgUVJlY3QmIHNjcm9s
bFZpZXdSZWN0KTsKKyAgICB2b2lkIHdpbmRvd0Nsb3NlUmVxdWVzdGVkKCk7CisgICAgdm9pZCBw
cmludFJlcXVlc3RlZChRV2ViRnJhbWUgKmZyYW1lKTsKKyAgICB2b2lkIGxpbmtDbGlja2VkKGNv
bnN0IFFVcmwgJnVybCk7CisKKyAgICB2b2lkIHRvb2xCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVz
dGVkKGJvb2wgdmlzaWJsZSk7CisgICAgdm9pZCBzdGF0dXNCYXJWaXNpYmlsaXR5Q2hhbmdlUmVx
dWVzdGVkKGJvb2wgdmlzaWJsZSk7CisgICAgdm9pZCBtZW51QmFyVmlzaWJpbGl0eUNoYW5nZVJl
cXVlc3RlZChib29sIHZpc2libGUpOworCisgICAgdm9pZCB1bnN1cHBvcnRlZENvbnRlbnQoUU5l
dHdvcmtSZXBseSAqcmVwbHkpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0ZWQoY29uc3QgUU5l
dHdvcmtSZXF1ZXN0ICZyZXF1ZXN0KTsKKworICAgIHZvaWQgbWljcm9Gb2N1c0NoYW5nZWQoKTsK
KyAgICB2b2lkIGNvbnRlbnRzQ2hhbmdlZCgpOworICAgIHZvaWQgZGF0YWJhc2VRdW90YUV4Y2Vl
ZGVkKFFXZWJGcmFtZSogZnJhbWUsIFFTdHJpbmcgZGF0YWJhc2VOYW1lKTsKKyAgICB2b2lkIGFw
cGxpY2F0aW9uQ2FjaGVRdW90YUV4Y2VlZGVkKFFXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBx
dWludDY0IGRlZmF1bHRPcmlnaW5RdW90YSwgcXVpbnQ2NCB0b3RhbFNwYWNlTmVlZGVkKTsKKwor
ICAgIHZvaWQgc2F2ZUZyYW1lU3RhdGVSZXF1ZXN0ZWQoUVdlYkZyYW1lKiBmcmFtZSwgUVdlYkhp
c3RvcnlJdGVtKiBpdGVtKTsKKyAgICB2b2lkIHJlc3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFX
ZWJGcmFtZSogZnJhbWUpOworCisgICAgdm9pZCB2aWV3cG9ydENoYW5nZVJlcXVlc3RlZCgpOwor
CisgICAgdm9pZCBmZWF0dXJlUGVybWlzc2lvblJlcXVlc3RlZChRV2ViRnJhbWUqIGZyYW1lLCBR
V2ViUGFnZTo6RmVhdHVyZSBmZWF0dXJlKTsKKyAgICB2b2lkIGZlYXR1cmVQZXJtaXNzaW9uUmVx
dWVzdENhbmNlbGVkKFFXZWJGcmFtZSogZnJhbWUsIFFXZWJQYWdlOjpGZWF0dXJlIGZlYXR1cmUp
OworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBRV2ViUGFnZSAqY3JlYXRlV2luZG93KFdlYldp
bmRvd1R5cGUgdHlwZSk7CisgICAgdmlydHVhbCBRT2JqZWN0ICpjcmVhdGVQbHVnaW4oY29uc3Qg
UVN0cmluZyAmY2xhc3NpZCwgY29uc3QgUVVybCAmdXJsLCBjb25zdCBRU3RyaW5nTGlzdCAmcGFy
YW1OYW1lcywgY29uc3QgUVN0cmluZ0xpc3QgJnBhcmFtVmFsdWVzKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBhY2NlcHROYXZpZ2F0aW9uUmVxdWVzdChRV2ViRnJhbWUgKmZyYW1lLCBjb25zdCBRTmV0
d29ya1JlcXVlc3QgJnJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUpOworICAgIHZpcnR1YWwg
UVN0cmluZyBjaG9vc2VGaWxlKFFXZWJGcmFtZSAqb3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0
cmluZyYgb2xkRmlsZSk7CisgICAgdmlydHVhbCB2b2lkIGphdmFTY3JpcHRBbGVydChRV2ViRnJh
bWUgKm9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFFTdHJpbmcmIG1zZyk7CisgICAgdmlydHVhbCBi
b29sIGphdmFTY3JpcHRDb25maXJtKFFXZWJGcmFtZSAqb3JpZ2luYXRpbmdGcmFtZSwgY29uc3Qg
UVN0cmluZyYgbXNnKTsKKyAgICB2aXJ0dWFsIGJvb2wgamF2YVNjcmlwdFByb21wdChRV2ViRnJh
bWUgKm9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFFTdHJpbmcmIG1zZywgY29uc3QgUVN0cmluZyYg
ZGVmYXVsdFZhbHVlLCBRU3RyaW5nKiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBqYXZhU2Ny
aXB0Q29uc29sZU1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKTsKKworICAgIHZpcnR1YWwgUVN0cmluZyB1c2VyQWdl
bnRGb3JVcmwoY29uc3QgUVVybCYgdXJsKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRX1BSSVZB
VEVfU0xPVChkLCB2b2lkIF9xX29uTG9hZFByb2dyZXNzQ2hhbmdlZChpbnQpKQorI2lmbmRlZiBR
VF9OT19BQ1RJT04KKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3dlYkFjdGlvblRyaWdn
ZXJlZChib29sIGNoZWNrZWQpKQorI2VuZGlmCisgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBf
cV9jbGVhbnVwTGVha01lc3NhZ2VzKCkpCisKKyAgICBRV2ViUGFnZVByaXZhdGUgKmQ7CisKKyAg
ICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZVByaXZh
dGU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJWaWV3OworICAgIGZyaWVuZCBjbGFzcyBRV2ViVmll
d1ByaXZhdGU7CisgICAgZnJpZW5kIGNsYXNzIFFHcmFwaGljc1dlYlZpZXc7CisgICAgZnJpZW5k
IGNsYXNzIFFHcmFwaGljc1dlYlZpZXdQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV2ViSW5z
cGVjdG9yOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDsKKyAgICBm
cmllbmQgY2xhc3MgV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ7CisgICAgZnJpZW5kIGNsYXNzIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CisgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0OworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpJbnNwZWN0b3JTZXJ2
ZXJSZXF1ZXN0SGFuZGxlclF0OworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudFF0OworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTsKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI7CisgICAg
ZnJpZW5kIGNsYXNzIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OworfTsKKworUV9ERUNMQVJFX09Q
RVJBVE9SU19GT1JfRkxBR1MoUVdlYlBhZ2U6OkZpbmRGbGFncykKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZV9wLmggYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZV9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjM1Y2YyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lk
Z2V0QXBpL3F3ZWJwYWdlX3AuaApAQCAtMCwwICsxLDIwNCBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBxd2VicGFnZV9wX2gKKyNkZWZpbmUgcXdlYnBhZ2VfcF9oCisKKyNpbmNsdWRl
ICJRV2ViUGFnZUFkYXB0ZXIuaCIKKworI2luY2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUg
InF3ZWJwYWdlLmgiCisKKyNpbmNsdWRlIDxRUG9pbnRlcj4KKyNpbmNsdWRlIDxxZXZlbnQuaD4K
KyNpbmNsdWRlIDxxZ2VzdHVyZS5oPgorI2luY2x1ZGUgPHFncmFwaGljc3NjZW5lZXZlbnQuaD4K
KyNpbmNsdWRlIDxxZ3JhcGhpY3N3aWRnZXQuaD4KKyNpbmNsdWRlIDxxbmV0d29ya3Byb3h5Lmg+
CisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29udGV4dE1lbnVDbGllbnRRdDsKK2Ns
YXNzIENvbnRleHRNZW51SXRlbTsKK2NsYXNzIENvbnRleHRNZW51OworY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBFZGl0b3JDbGllbnRRdDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnRSZWN0Owor
Y2xhc3MgTm9kZTsKK2NsYXNzIE5vZGVMaXN0OworY2xhc3MgRnJhbWU7Cit9CisKK1FUX0JFR0lO
X05BTUVTUEFDRQorY2xhc3MgUVVuZG9TdGFjazsKK2NsYXNzIFFNZW51OworY2xhc3MgUUJpdEFy
cmF5OworUVRfRU5EX05BTUVTUEFDRQorCitjbGFzcyBRdFBsdWdpbldpZGdldEFkYXB0ZXI7Citj
bGFzcyBRV2ViSW5zcGVjdG9yOworY2xhc3MgUVdlYkZyYW1lQWRhcHRlcjsKK2NsYXNzIFVuZG9T
dGVwUXQ7CisKK2NsYXNzIFF0Vmlld3BvcnRBdHRyaWJ1dGVzUHJpdmF0ZSA6IHB1YmxpYyBRU2hh
cmVkRGF0YSB7CitwdWJsaWM6CisgICAgUXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRlKFFXZWJQ
YWdlOjpWaWV3cG9ydEF0dHJpYnV0ZXMqIHFxKQorICAgICAgICA6IHEocXEpCisgICAgeyB9CisK
KyAgICBRV2ViUGFnZTo6Vmlld3BvcnRBdHRyaWJ1dGVzKiBxOworfTsKKworY2xhc3MgUVdlYlBh
Z2VQcml2YXRlIDogcHVibGljIFFXZWJQYWdlQWRhcHRlciB7CitwdWJsaWM6CisgICAgUVdlYlBh
Z2VQcml2YXRlKFFXZWJQYWdlKik7CisgICAgflFXZWJQYWdlUHJpdmF0ZSgpOworCisgICAgc3Rh
dGljIFdlYkNvcmU6OlBhZ2UqIGNvcmUoY29uc3QgUVdlYlBhZ2UqKTsKKworICAgIC8vIEFkYXB0
ZXIgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRGb2N1cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgUVJl
Y3QgJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBRU2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFFXZWJQYWdlQWRhcHRlciogY3JlYXRlV2luZG93KGJvb2wg
LypkaWFsb2cqLykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBRT2JqZWN0KiBoYW5kbGUoKSBPVkVS
UklERSB7IHJldHVybiBxOyB9CisgICAgdmlydHVhbCB2b2lkIGphdmFTY3JpcHRDb25zb2xlTWVz
c2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgUVN0cmlu
ZyYgc291cmNlSUQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBqYXZhU2NyaXB0QWxlcnQo
UVdlYkZyYW1lQWRhcHRlciosIGNvbnN0IFFTdHJpbmcmIG1zZykgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGphdmFTY3JpcHRDb25maXJtKFFXZWJGcmFtZUFkYXB0ZXIqLCBjb25zdCBRU3Ry
aW5nJiBtc2cpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBqYXZhU2NyaXB0UHJvbXB0KFFX
ZWJGcmFtZUFkYXB0ZXIqLCBjb25zdCBRU3RyaW5nJiBtc2csIGNvbnN0IFFTdHJpbmcmIGRlZmF1
bHRWYWx1ZSwgUVN0cmluZyogcmVzdWx0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcmlu
dFJlcXVlc3RlZChRV2ViRnJhbWVBZGFwdGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRhdGFiYXNlUXVvdGFFeGNlZWRlZChRV2ViRnJhbWVBZGFwdGVyKiwgY29uc3QgUVN0cmluZyYg
ZGF0YWJhc2VOYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25DYWNo
ZVF1b3RhRXhjZWVkZWQoUVdlYlNlY3VyaXR5T3JpZ2luKiwgcXVpbnQ2NCBkZWZhdWx0T3JpZ2lu
UXVvdGEsIHF1aW50NjQgdG90YWxTcGFjZU5lZWRlZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFRvb2xUaXAoY29uc3QgUVN0cmluZyYpIE9WRVJSSURFOworI2lmIFVTRShRVF9NVUxU
SU1FRElBKQorICAgIHZpcnR1YWwgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIqIGNyZWF0ZUZ1
bGxTY3JlZW5WaWRlb0hhbmRsZXIoKSBPVkVSUklERTsKKyNlbmRpZgorICAgIHZpcnR1YWwgUVdl
YkZyYW1lQWRhcHRlciogbWFpbkZyYW1lQWRhcHRlcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
UVN0cmluZ0xpc3QgY2hvb3NlRmlsZXMoUVdlYkZyYW1lQWRhcHRlciosIGJvb2wgYWxsb3dNdWx0
aXBsZSwgY29uc3QgUVN0cmluZ0xpc3QmIHN1Z2dlc3RlZEZpbGVOYW1lcykgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBRQ29sb3IgY29sb3JTZWxlY3Rpb25SZXF1ZXN0ZWQoY29uc3QgUUNvbG9yJiBz
ZWxlY3RlZENvbG9yKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2QqIGNy
ZWF0ZVNlbGVjdFBvcHVwKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBRUmVjdCB2aWV3UmVjdFJl
bGF0aXZlVG9XaW5kb3coKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdGVkKFFXZWJGcmFtZUFkYXB0ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdENhbmNlbGxlZChRV2ViRnJhbWVB
ZGFwdGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbnNQZXJtaXNz
aW9uUmVxdWVzdGVkKFFXZWJGcmFtZUFkYXB0ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgbm90aWZpY2F0aW9uc1Blcm1pc3Npb25SZXF1ZXN0Q2FuY2VsbGVkKFFXZWJGcmFtZUFkYXB0
ZXIqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVu
dHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtaWNyb0ZvY3VzQ2hhbmdlZCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB0cmlnZ2VyQ29weUFjdGlvbigpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB0cmlnZ2VyQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2ZW50KikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1N0YWNrKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGNhblVuZG8oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
UmVkbygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmRvKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlVW5kb1N0ZXAoUVNoYXJlZFBvaW50ZXI8VW5kb1N0ZXBRdD4pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgY29uc3QgY2hhciogZWRpdG9yQ29tbWFuZEZvcktleUV2ZW50KFFLZXlFdmVudCopIE9W
RVJSSURFOworCisgICAgdm9pZCB1cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpIE9WRVJSSURFOwor
CisgICAgdmlydHVhbCBRT2JqZWN0KiBpbnNwZWN0b3JIYW5kbGUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdG9yRnJvbnRlbmQoUU9iamVjdCopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0b3JXaW5kb3dUaXRsZShjb25zdCBRU3RyaW5nJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdlYkluc3BlY3RvcihRT2JqZWN0KiogaW5z
cGVjdG9yVmlldywgUVdlYlBhZ2VBZGFwdGVyKiogaW5zcGVjdG9yUGFnZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBRU3RyaW5nTGlzdCBtZW51QWN0aW9uc0FzVGV4dCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBlbWl0Vmlld3BvcnRDaGFuZ2VSZXF1ZXN0ZWQoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgYWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoUVdlYkZyYW1lQWRhcHRlcios
IGNvbnN0IFFOZXR3b3JrUmVxdWVzdCYsIGludCB0eXBlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW1pdFJlc3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFXZWJGcmFtZUFkYXB0ZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW1pdFNhdmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFX
ZWJGcmFtZUFkYXB0ZXIqLCBRV2ViSGlzdG9yeUl0ZW0qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW1pdERvd25sb2FkUmVxdWVzdGVkKGNvbnN0IFFOZXR3b3JrUmVxdWVzdCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBlbWl0RnJhbWVDcmVhdGVkKFFXZWJGcmFtZUFkYXB0ZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFFTdHJpbmcgdXNlckFnZW50Rm9yVXJsKGNvbnN0IFFV
cmwgJnVybCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gcS0+dXNlckFnZW50Rm9yVXJsKHVybCk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFcnJvclBhZ2VFeHRlbnNpb24oKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBxLT5zdXBwb3J0c0V4dGVuc2lvbihRV2ViUGFnZTo6RXJyb3JQYWdl
RXh0ZW5zaW9uKTsgfQorICAgIHZpcnR1YWwgYm9vbCBlcnJvclBhZ2VFeHRlbnNpb24oRXJyb3JQ
YWdlT3B0aW9uICosIEVycm9yUGFnZVJldHVybiAqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFF0
UGx1Z2luV2lkZ2V0QWRhcHRlciogY3JlYXRlUGx1Z2luKGNvbnN0IFFTdHJpbmcgJiwgY29uc3Qg
UVVybCAmLCBjb25zdCBRU3RyaW5nTGlzdCAmLCBjb25zdCBRU3RyaW5nTGlzdCAmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFF0UGx1Z2luV2lkZ2V0QWRhcHRlciogYWRhcHRlckZvcldpZGdldChR
T2JqZWN0ICopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U29mdHdh
cmVJbnB1dFBhbmVsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFu
ZFNldEN1cnJlbnRDb250ZXh0TWVudShjb25zdCBRTGlzdDxNZW51SXRlbURlc2NyaXB0aW9uPiYs
IFFCaXRBcnJheSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGxiYXJD
b250ZXh0TWVudUV2ZW50KFFDb250ZXh0TWVudUV2ZW50KiwgYm9vbCwgU2Nyb2xsRGlyZWN0aW9u
KiwgU2Nyb2xsR3JhbnVsYXJpdHkqKSBPVkVSUklERTsKKworCisgICAgdm9pZCBjcmVhdGVNYWlu
RnJhbWUoKTsKKworICAgIHZvaWQgX3Ffd2ViQWN0aW9uVHJpZ2dlcmVkKGJvb2wgY2hlY2tlZCk7
CisgICAgdm9pZCB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OldlYkFjdGlvbik7CisgICAgdm9pZCB1
cGRhdGVFZGl0b3JBY3Rpb25zKCk7CisKKyAgICB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQq
KTsKKworI2lmbmRlZiBRVF9OT19DT05URVhUTUVOVQorICAgIHZvaWQgY29udGV4dE1lbnVFdmVu
dChjb25zdCBRUG9pbnQmIGdsb2JhbFBvcyk7CisjZW5kaWYKKyAgICB2b2lkIGtleVByZXNzRXZl
bnQoUUtleUV2ZW50Kik7CisgICAgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50Kik7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGRyYWdFbnRlckV2ZW50KFQqKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBUPiB2b2lkIGRyYWdNb3ZlRXZlbnQoVCopOworICAgIHRlbXBsYXRlPGNsYXNz
IFQ+IHZvaWQgZHJvcEV2ZW50KFQqKTsKKworICAgIHZvaWQgc2hvcnRjdXRPdmVycmlkZUV2ZW50
KFFLZXlFdmVudCopOworICAgIHZvaWQgbGVhdmVFdmVudChRRXZlbnQqKTsKKworICAgIGJvb2wg
Z2VzdHVyZUV2ZW50KFFHZXN0dXJlRXZlbnQqKTsKKworCisgICAgdm9pZCBzZXRJbnNwZWN0b3Io
UVdlYkluc3BlY3RvciopOworICAgIFFXZWJJbnNwZWN0b3IqIGdldE9yQ3JlYXRlSW5zcGVjdG9y
KCk7CisKKyNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKKyAgICBzdGF0aWMgUVdlYlBhZ2U6OldlYkFj
dGlvbiBlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5RXZlbnQqKTsKKyNlbmRpZgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBlZGl0b3JDb21tYW5kRm9yV2ViQWN0aW9ucyhRV2ViUGFnZTo6V2Vi
QWN0aW9uKTsKKworICAgIFFXZWJQYWdlICpxOworICAgIFFQb2ludGVyPFFXZWJGcmFtZT4gbWFp
bkZyYW1lOworCisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgIFFVbmRvU3RhY2sgKnVuZG9T
dGFjazsKKyNlbmRpZgorCisgICAgUVBvaW50ZXI8UVdpZGdldD4gdmlldzsKKworICAgIFFXZWJQ
YWdlOjpMaW5rRGVsZWdhdGlvblBvbGljeSBsaW5rUG9saWN5OworCisgICAgUVNpemUgbV92aWV3
cG9ydFNpemU7CisgICAgUVNpemUgZml4ZWRMYXlvdXRTaXplOworCisgICAgUVdlYkhpdFRlc3RS
ZXN1bHQgaGl0VGVzdFJlc3VsdDsKKyNpZm5kZWYgUVRfTk9fQ09OVEVYVE1FTlUKKyAgICBRUG9p
bnRlcjxRTWVudT4gY3VycmVudENvbnRleHRNZW51OworI2VuZGlmCisgICAgUVBhbGV0dGUgcGFs
ZXR0ZTsKKyAgICBib29sIHVzZUZpeGVkTGF5b3V0OworCisgICAgUUFjdGlvbiAqYWN0aW9uc1tR
V2ViUGFnZTo6V2ViQWN0aW9uQ291bnRdOworCisgICAgUVdpZGdldCogaW5zcGVjdG9yRnJvbnRl
bmQ7CisgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yOworICAgIGJvb2wgaW5zcGVjdG9ySXNJ
bnRlcm5hbE9ubHk7IC8vIFRydWUgaWYgY3JlYXRlZCB0aHJvdWdoIHRoZSBJbnNwZWN0IGNvbnRl
eHQgbWVudSBhY3Rpb24KKyAgICBRdDo6RHJvcEFjdGlvbiBtX2xhc3REcm9wQWN0aW9uOworfTsK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJhOTYyMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmNwcApAQCAtMCwwICsxLDExMjQgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlcgorICAgIENvcHlyaWdodCAoQykgMjAwOSBHaXJpc2ggUmFtYWtyaXNobmFuIDxn
aXJpc2hAZm9yd2FyZGJpYXMuaW4+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
InF3ZWJ2aWV3LmgiCisKKyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgInF3
ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKKyNpZm5kZWYgUVRfTk9fQUNDRVNT
SUJJTElUWQorI2luY2x1ZGUgInF3ZWJ2aWV3YWNjZXNzaWJsZV9wLmgiCisjZW5kaWYKKyNpbmNs
dWRlIDxxYml0bWFwLmg+CisjaW5jbHVkZSA8cWRpci5oPgorI2luY2x1ZGUgPHFldmVudC5oPgor
I2luY2x1ZGUgPHFmaWxlLmg+CisjaW5jbHVkZSA8cXBhaW50ZXIuaD4KKyNpZiBIQVZFKFFUUFJJ
TlRTVVBQT1JUKQorI2luY2x1ZGUgPHFwcmludGVyLmg+CisjZW5kaWYKKworY2xhc3MgUVdlYlZp
ZXdQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBRV2ViVmlld1ByaXZhdGUoUVdlYlZpZXcgKnZpZXcp
CisgICAgICAgIDogdmlldyh2aWV3KQorICAgICAgICAsIHBhZ2UoMCkKKyAgICAgICAgLCByZW5k
ZXJIaW50cyhRUGFpbnRlcjo6VGV4dEFudGlhbGlhc2luZyB8IFFQYWludGVyOjpTbW9vdGhQaXht
YXBUcmFuc2Zvcm0pCisgICAgeworICAgICAgICBRX0FTU0VSVCh2aWV3KTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5RV2ViVmlld1ByaXZhdGUoKTsKKworICAgIHZvaWQgX3FfcGFnZURlc3Ryb3ll
ZCgpOworICAgIHZvaWQgZGV0YWNoQ3VycmVudFBhZ2UoKTsKKworICAgIFFXZWJWaWV3ICp2aWV3
OworICAgIFFXZWJQYWdlICpwYWdlOworCisgICAgUVBhaW50ZXI6OlJlbmRlckhpbnRzIHJlbmRl
ckhpbnRzOworfTsKKworUVdlYlZpZXdQcml2YXRlOjp+UVdlYlZpZXdQcml2YXRlKCkKK3sKKyAg
ICBkZXRhY2hDdXJyZW50UGFnZSgpOworfQorCit2b2lkIFFXZWJWaWV3UHJpdmF0ZTo6X3FfcGFn
ZURlc3Ryb3llZCgpCit7CisgICAgcGFnZSA9IDA7CisgICAgdmlldy0+c2V0UGFnZSgwKTsKK30K
KworLyohCisgICAgXGNsYXNzIFFXZWJWaWV3CisgICAgXHNpbmNlIDQuNAorICAgIFxicmllZiBU
aGUgUVdlYlZpZXcgY2xhc3MgcHJvdmlkZXMgYSB3aWRnZXQgdGhhdCBpcyB1c2VkIHRvIHZpZXcg
YW5kIGVkaXQKKyAgICB3ZWIgZG9jdW1lbnRzLgorICAgIFxpbmdyb3VwIGFkdmFuY2VkCisKKyAg
ICBcaW5tb2R1bGUgUXRXZWJLaXQKKworICAgIFFXZWJWaWV3IGlzIHRoZSBtYWluIHdpZGdldCBj
b21wb25lbnQgb2YgdGhlIFF0IFdlYktpdCB3ZWIgYnJvd3NpbmcgbW9kdWxlLgorICAgIEl0IGNh
biBiZSB1c2VkIGluIHZhcmlvdXMgYXBwbGljYXRpb25zIHRvIGRpc3BsYXkgd2ViIGNvbnRlbnQg
bGl2ZSBmcm9tIHRoZQorICAgIEludGVybmV0LgorCisgICAgVGhlIGltYWdlIGJlbG93IHNob3dz
IFFXZWJWaWV3IHByZXZpZXdlZCBpbiBcUUQgd2l0aCBhIE5va2lhIHdlYnNpdGUuCisKKyAgICBc
aW1hZ2UgcXdlYnZpZXctdXJsLnBuZworCisgICAgQSB3ZWIgc2l0ZSBjYW4gYmUgbG9hZGVkIG9u
dG8gUVdlYlZpZXcgd2l0aCB0aGUgbG9hZCgpIGZ1bmN0aW9uLiBMaWtlIGFsbAorICAgIFF0IHdp
ZGdldHMsIHRoZSBzaG93KCkgZnVuY3Rpb24gbXVzdCBiZSBpbnZva2VkIGluIG9yZGVyIHRvIGRp
c3BsYXkKKyAgICBRV2ViVmlldy4gVGhlIHNuaXBwZXQgYmVsb3cgaWxsdXN0cmF0ZXMgdGhpczoK
KworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3NpbXBsZS9tYWluLmNwcCBVc2luZyBRV2Vi
VmlldworCisgICAgQWx0ZXJuYXRpdmVseSwgc2V0VXJsKCkgY2FuIGFsc28gYmUgdXNlZCB0byBs
b2FkIGEgd2ViIHNpdGUuIElmIHlvdSBoYXZlCisgICAgdGhlIEhUTUwgY29udGVudCByZWFkaWx5
IGF2YWlsYWJsZSwgeW91IGNhbiB1c2Ugc2V0SHRtbCgpIGluc3RlYWQuCisKKyAgICBUaGUgbG9h
ZFN0YXJ0ZWQoKSBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB2aWV3IGJlZ2lucyBsb2FkaW5n
LiBUaGUKKyAgICBsb2FkUHJvZ3Jlc3MoKSBzaWduYWwsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBl
bWl0dGVkIHdoZW5ldmVyIGFuIGVsZW1lbnQgb2YKKyAgICB0aGUgd2ViIHZpZXcgY29tcGxldGVz
IGxvYWRpbmcsIHN1Y2ggYXMgYW4gZW1iZWRkZWQgaW1hZ2UsIGEgc2NyaXB0LCBldGMuCisgICAg
RmluYWxseSwgdGhlIGxvYWRGaW5pc2hlZCgpIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHZp
ZXcgaGFzIGxvYWRlZAorICAgIGNvbXBsZXRlbHkuIEl0J3MgYXJndW1lbnQgLSBlaXRoZXIgXGMg
dHJ1ZSBvciBcYyBmYWxzZSAtIGluZGljYXRlcworICAgIGxvYWQgc3VjY2VzcyBvciBmYWlsdXJl
LgorCisgICAgVGhlIHBhZ2UoKSBmdW5jdGlvbiByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgd2Vi
IHBhZ2Ugb2JqZWN0LiBTZWUKKyAgICBcbHtFbGVtZW50cyBvZiBRV2ViVmlld30gZm9yIGFuIGV4
cGxhbmF0aW9uIG9mIGhvdyB0aGUgd2ViIHBhZ2UKKyAgICBpcyByZWxhdGVkIHRvIHRoZSB2aWV3
LiBUbyBtb2RpZnkgeW91ciB3ZWIgdmlldydzIHNldHRpbmdzLCB5b3UgY2FuIGFjY2VzcworICAg
IHRoZSBRV2ViU2V0dGluZ3Mgb2JqZWN0IHdpdGggdGhlIHNldHRpbmdzKCkgZnVuY3Rpb24uIFdp
dGggUVdlYlNldHRpbmdzLAorICAgIHlvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IGZvbnRzLCBl
bmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcyBzdWNoIGFzCisgICAgSmF2YVNjcmlwdCBhbmQgcGx1
Z2lucy4KKworICAgIFRoZSB0aXRsZSBvZiBhbiBIVE1MIGRvY3VtZW50IGNhbiBiZSBhY2Nlc3Nl
ZCB3aXRoIHRoZSB0aXRsZSgpIHByb3BlcnR5LgorICAgIEFkZGl0aW9uYWxseSwgYSB3ZWIgc2l0
ZSBtYXkgYWxzbyBzcGVjaWZ5IGFuIGljb24sIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZAorICAgIHVz
aW5nIHRoZSBpY29uKCkgcHJvcGVydHkuIElmIHRoZSB0aXRsZSBvciB0aGUgaWNvbiBjaGFuZ2Vz
LCB0aGUgY29ycmVzcG9uZGluZworICAgIHRpdGxlQ2hhbmdlZCgpIGFuZCBpY29uQ2hhbmdlZCgp
IHNpZ25hbHMgd2lsbCBiZSBlbWl0dGVkLiBUaGUKKyAgICB0ZXh0U2l6ZU11bHRpcGxpZXIoKSBw
cm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIG92ZXJhbGwgc2l6ZSBvZgorICAgIHRo
ZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgd2ViIHZpZXcuCisKKyAgICBJZiB5b3UgcmVxdWlyZSBh
IGN1c3RvbSBjb250ZXh0IG1lbnUsIHlvdSBjYW4gaW1wbGVtZW50IGl0IGJ5IHJlaW1wbGVtZW50
aW5nCisgICAgXGx7UVdpZGdldDo6fXtjb250ZXh0TWVudUV2ZW50KCl9IGFuZCBwb3B1bGF0aW5n
IHlvdXIgUU1lbnUgd2l0aCB0aGUgYWN0aW9ucworICAgIG9idGFpbmVkIGZyb20gcGFnZUFjdGlv
bigpLiBNb3JlIGZ1bmN0aW9uYWxpdHkgc3VjaCBhcyByZWxvYWRpbmcgdGhlIHZpZXcsCisgICAg
Y29weWluZyBzZWxlY3RlZCB0ZXh0IHRvIHRoZSBjbGlwYm9hcmQsIG9yIHBhc3RpbmcgaW50byB0
aGUgdmlldywgaXMgYWxzbworICAgIGVuY2Fwc3VsYXRlZCB3aXRoaW4gdGhlIFFBY3Rpb24gb2Jq
ZWN0cyByZXR1cm5lZCBieSBwYWdlQWN0aW9uKCkuIFRoZXNlCisgICAgYWN0aW9ucyBjYW4gYmUg
cHJvZ3JhbW1hdGljYWxseSB0cmlnZ2VyZWQgdXNpbmcgdHJpZ2dlclBhZ2VBY3Rpb24oKS4KKyAg
ICBBbHRlcm5hdGl2ZWx5LCB0aGUgYWN0aW9ucyBjYW4gYmUgYWRkZWQgdG8gYSB0b29sYmFyIG9y
IGEgbWVudSBkaXJlY3RseS4KKyAgICBRV2ViVmlldyBtYWludGFpbnMgdGhlIHN0YXRlIG9mIHRo
ZSByZXR1cm5lZCBhY3Rpb25zIGJ1dCBhbGxvd3MKKyAgICBtb2RpZmljYXRpb24gb2YgYWN0aW9u
IHByb3BlcnRpZXMgc3VjaCBhcyBcbHtRQWN0aW9uOjp9e3RleHR9IG9yCisgICAgXGx7UUFjdGlv
bjo6fXtpY29ufS4KKworICAgIEEgUVdlYlZpZXcgY2FuIGJlIHByaW50ZWQgb250byBhIFFQcmlu
dGVyIHVzaW5nIHRoZSBwcmludCgpIGZ1bmN0aW9uLgorICAgIFRoaXMgZnVuY3Rpb24gaXMgbWFy
a2VkIGFzIGEgc2xvdCBhbmQgY2FuIGJlIGNvbnZlbmllbnRseSBjb25uZWN0ZWQgdG8KKyAgICBc
bHtRUHJpbnRQcmV2aWV3RGlhbG9nfSdzIFxse1FQcmludFByZXZpZXdEaWFsb2c6On17cGFpbnRS
ZXF1ZXN0ZWQoKX0KKyAgICBzaWduYWwuCisKKyAgICBJZiB5b3Ugd2FudCB0byBwcm92aWRlIHN1
cHBvcnQgZm9yIHdlYiBzaXRlcyB0aGF0IGFsbG93IHRoZSB1c2VyIHRvIG9wZW4KKyAgICBuZXcg
d2luZG93cywgc3VjaCBhcyBwb3AtdXAgd2luZG93cywgeW91IGNhbiBzdWJjbGFzcyBRV2ViVmll
dyBhbmQKKyAgICByZWltcGxlbWVudCB0aGUgY3JlYXRlV2luZG93KCkgZnVuY3Rpb24uCisKKyAg
ICBcc2VjdGlvbjEgRWxlbWVudHMgb2YgUVdlYlZpZXcKKworICAgIFFXZWJWaWV3IGNvbnNpc3Rz
IG9mIG90aGVyIG9iamVjdHMgc3VjaCBhcyBRV2ViRnJhbWUgYW5kIFFXZWJQYWdlLiBUaGUKKyAg
ICBmbG93Y2hhcnQgYmVsb3cgc2hvd3MgdGhlc2UgZWxlbWVudHMgYXJlIHJlbGF0ZWQuCisKKyAg
ICBcaW1hZ2UgcXdlYnZpZXctZGlhZ3JhbS5wbmcKKworICAgIFxub3RlIEl0IGlzIHBvc3NpYmxl
IHRvIHVzZSBRV2ViUGFnZSBhbmQgUVdlYkZyYW1lLCB3aXRob3V0IHVzaW5nIFFXZWJWaWV3LAor
ICAgIGlmIHlvdSBkbyBub3QgcmVxdWlyZSBRV2lkZ2V0IGF0dHJpYnV0ZXMuIE5ldmVydGhlbGVz
cywgUXQgV2ViS2l0IGRlcGVuZHMKKyAgICBvbiBRdEd1aSwgc28geW91IHNob3VsZCB1c2UgYSBR
QXBwbGljYXRpb24gaW5zdGVhZCBvZiBRQ29yZUFwcGxpY2F0aW9uLgorCisgICAgXHNhIHtQcmV2
aWV3ZXIgRXhhbXBsZX0sIHtXZWIgQnJvd3Nlcn0sIHtGb3JtIEV4dHJhY3RvciBFeGFtcGxlfSwK
KyAgICB7R29vZ2xlIENoYXQgRXhhbXBsZX0sIHtGYW5jeSBCcm93c2VyIEV4YW1wbGV9CisqLwor
CisjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkKK3N0YXRpYyBRQWNjZXNzaWJsZUludGVyZmFj
ZSogYWNjZXNzaWJsZUludGVyZmFjZUZhY3RvcnkoY29uc3QgUVN0cmluZyYga2V5LCBRT2JqZWN0
KiBvYmplY3QpCit7CisgICAgUV9VTlVTRUQoa2V5KQorCisgICAgaWYgKFFXZWJQYWdlKiBwYWdl
ID0gcW9iamVjdF9jYXN0PFFXZWJQYWdlKj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBR
V2ViUGFnZUFjY2Vzc2libGUocGFnZSk7CisgICAgaWYgKFFXZWJWaWV3KiB2aWV3ID0gcW9iamVj
dF9jYXN0PFFXZWJWaWV3Kj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViVmlld0Fj
Y2Vzc2libGUodmlldyk7CisgICAgaWYgKFFXZWJGcmFtZSogZnJhbWUgPSBxb2JqZWN0X2Nhc3Q8
UVdlYkZyYW1lKj4ob2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIG5ldyBRV2ViRnJhbWVBY2Nlc3Np
YmxlKGZyYW1lKTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisvKiEKKyAgICBDb25zdHJ1
Y3RzIGFuIGVtcHR5IFFXZWJWaWV3IHdpdGggcGFyZW50IFxhIHBhcmVudC4KKworICAgIFxzYSBs
b2FkKCkKKyovCitRV2ViVmlldzo6UVdlYlZpZXcoUVdpZGdldCAqcGFyZW50KQorICAgIDogUVdp
ZGdldChwYXJlbnQpCit7CisgICAgZCA9IG5ldyBRV2ViVmlld1ByaXZhdGUodGhpcyk7CisKKyNp
ZiAhZGVmaW5lZChRX1dTX1FXUykKKyAgICBzZXRBdHRyaWJ1dGUoUXQ6OldBX0lucHV0TWV0aG9k
RW5hYmxlZCk7CisjZW5kaWYKKworICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfQWNjZXB0VG91Y2hF
dmVudHMpOworICAgIHNldEFjY2VwdERyb3BzKHRydWUpOworCisgICAgc2V0TW91c2VUcmFja2lu
Zyh0cnVlKTsKKyAgICBzZXRGb2N1c1BvbGljeShRdDo6V2hlZWxGb2N1cyk7CisKKyNpZm5kZWYg
UVRfTk9fQUNDRVNTSUJJTElUWQorICAgIFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeShhY2Nl
c3NpYmxlSW50ZXJmYWNlRmFjdG9yeSk7CisjZW5kaWYKK30KKworLyohCisgICAgRGVzdHJveXMg
dGhlIHdlYiB2aWV3LgorKi8KK1FXZWJWaWV3Ojp+UVdlYlZpZXcoKQoreworICAgIGRlbGV0ZSBk
OworfQorCisvKiEKKyAgICBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyB3ZWIg
cGFnZS4KKworICAgIFxzYSBzZXRQYWdlKCkKKyovCitRV2ViUGFnZSAqUVdlYlZpZXc6OnBhZ2Uo
KSBjb25zdAoreworICAgIGlmICghZC0+cGFnZSkgeworICAgICAgICBRV2ViVmlldyAqdGhhdCA9
IGNvbnN0X2Nhc3Q8UVdlYlZpZXcgKj4odGhpcyk7CisgICAgICAgIHRoYXQtPnNldFBhZ2UobmV3
IFFXZWJQYWdlKHRoYXQpKTsKKyAgICB9CisgICAgcmV0dXJuIGQtPnBhZ2U7Cit9CisKK3ZvaWQg
UVdlYlZpZXdQcml2YXRlOjpkZXRhY2hDdXJyZW50UGFnZSgpCit7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5kLT52aWV3ID0gMDsKKworICAgIC8vIGlmIHRo
ZSBwYWdlIGNsaWVudCBpcyB0aGUgc3BlY2lhbCBjbGllbnQgY29uc3RydWN0ZWQgZm9yCisgICAg
Ly8gZGVsZWdhdGluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB0byBhIFFXaWRnZXQsIHdlIG5lZWQK
KyAgICAvLyB0byBkZXN0cm95IGl0LgorCisgICAgaWYgKHBhZ2UtPmQtPmNsaWVudCAmJiBwYWdl
LT5kLT5jbGllbnQtPmlzUVdpZGdldENsaWVudCgpKQorICAgICAgICBwYWdlLT5kLT5jbGllbnQu
cmVzZXQoKTsKKworICAgIHBhZ2UtPmQtPmNsaWVudC50YWtlKCk7CisKKyAgICAvLyBpZiB0aGUg
cGFnZSB3YXMgY3JlYXRlZCBieSB1cywgd2Ugb3duIGl0IGFuZCBuZWVkIHRvCisgICAgLy8gZGVz
dHJveSBpdCBhcyB3ZWxsLgorCisgICAgaWYgKHBhZ2UtPnBhcmVudCgpID09IHZpZXcpCisgICAg
ICAgIGRlbGV0ZSBwYWdlOworICAgIGVsc2UKKyAgICAgICAgcGFnZS0+ZGlzY29ubmVjdCh2aWV3
KTsKKworICAgIHBhZ2UgPSAwOworfQorCisvKiEKKyAgICBNYWtlcyBcYSBwYWdlIHRoZSBuZXcg
d2ViIHBhZ2Ugb2YgdGhlIHdlYiB2aWV3LgorCisgICAgVGhlIHBhcmVudCBRT2JqZWN0IG9mIHRo
ZSBwcm92aWRlZCBwYWdlIHJlbWFpbnMgdGhlIG93bmVyCisgICAgb2YgdGhlIG9iamVjdC4gSWYg
dGhlIGN1cnJlbnQgcGFnZSBpcyBhIGNoaWxkIG9mIHRoZSB3ZWIKKyAgICB2aWV3LCBpdCB3aWxs
IGJlIGRlbGV0ZWQuCisKKyAgICBcc2EgcGFnZSgpCisqLwordm9pZCBRV2ViVmlldzo6c2V0UGFn
ZShRV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoZC0+cGFnZSA9PSBwYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkLT5kZXRhY2hDdXJyZW50UGFnZSgpOworICAgIGQtPnBhZ2UgPSBwYWdl
OworCisgICAgaWYgKGQtPnBhZ2UpIHsKKyAgICAgICAgZC0+cGFnZS0+c2V0Vmlldyh0aGlzKTsK
KyAgICAgICAgZC0+cGFnZS0+c2V0UGFsZXR0ZShwYWxldHRlKCkpOworICAgICAgICAvLyAjIyMj
IGNvbm5lY3Qgc2lnbmFscworICAgICAgICBRV2ViRnJhbWUgKm1haW5GcmFtZSA9IGQtPnBhZ2Ut
Pm1haW5GcmFtZSgpOworICAgICAgICBjb25uZWN0KG1haW5GcmFtZSwgU0lHTkFMKHRpdGxlQ2hh
bmdlZChRU3RyaW5nKSksCisgICAgICAgICAgICB0aGlzLCBTSUdOQUwodGl0bGVDaGFuZ2VkKFFT
dHJpbmcpKSk7CisgICAgICAgIGNvbm5lY3QobWFpbkZyYW1lLCBTSUdOQUwoaWNvbkNoYW5nZWQo
KSksCisgICAgICAgICAgICB0aGlzLCBTSUdOQUwoaWNvbkNoYW5nZWQoKSkpOworICAgICAgICBj
b25uZWN0KG1haW5GcmFtZSwgU0lHTkFMKHVybENoYW5nZWQoUVVybCkpLAorICAgICAgICAgICAg
dGhpcywgU0lHTkFMKHVybENoYW5nZWQoUVVybCkpKTsKKworICAgICAgICBjb25uZWN0KGQtPnBh
Z2UsIFNJR05BTChsb2FkU3RhcnRlZCgpKSwKKyAgICAgICAgICAgIHRoaXMsIFNJR05BTChsb2Fk
U3RhcnRlZCgpKSk7CisgICAgICAgIGNvbm5lY3QoZC0+cGFnZSwgU0lHTkFMKGxvYWRQcm9ncmVz
cyhpbnQpKSwKKyAgICAgICAgICAgIHRoaXMsIFNJR05BTChsb2FkUHJvZ3Jlc3MoaW50KSkpOwor
ICAgICAgICBjb25uZWN0KGQtPnBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLAorICAg
ICAgICAgICAgdGhpcywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgICAgICBjb25u
ZWN0KGQtPnBhZ2UsIFNJR05BTChzdGF0dXNCYXJNZXNzYWdlKFFTdHJpbmcpKSwKKyAgICAgICAg
ICAgIHRoaXMsIFNJR05BTChzdGF0dXNCYXJNZXNzYWdlKFFTdHJpbmcpKSk7CisgICAgICAgIGNv
bm5lY3QoZC0+cGFnZSwgU0lHTkFMKGxpbmtDbGlja2VkKFFVcmwpKSwKKyAgICAgICAgICAgIHRo
aXMsIFNJR05BTChsaW5rQ2xpY2tlZChRVXJsKSkpOworICAgICAgICBjb25uZWN0KGQtPnBhZ2Us
IFNJR05BTChzZWxlY3Rpb25DaGFuZ2VkKCkpLAorICAgICAgICAgICAgdGhpcywgU0lHTkFMKHNl
bGVjdGlvbkNoYW5nZWQoKSkpOworCisgICAgICAgIGNvbm5lY3QoZC0+cGFnZSwgU0lHTkFMKG1p
Y3JvRm9jdXNDaGFuZ2VkKCkpLAorICAgICAgICAgICAgdGhpcywgU0xPVCh1cGRhdGVNaWNyb0Zv
Y3VzKCkpKTsKKyAgICAgICAgY29ubmVjdChkLT5wYWdlLCBTSUdOQUwoZGVzdHJveWVkKCkpLAor
ICAgICAgICAgICAgdGhpcywgU0xPVChfcV9wYWdlRGVzdHJveWVkKCkpKTsKKyAgICB9CisgICAg
c2V0QXR0cmlidXRlKFF0OjpXQV9PcGFxdWVQYWludEV2ZW50LCBkLT5wYWdlKTsKKyAgICB1cGRh
dGUoKTsKK30KKworLyohCisgICAgTG9hZHMgdGhlIHNwZWNpZmllZCBcYSB1cmwgYW5kIGRpc3Bs
YXlzIGl0LgorCisgICAgXG5vdGUgVGhlIHZpZXcgcmVtYWlucyB0aGUgc2FtZSB1bnRpbCBlbm91
Z2ggZGF0YSBoYXMgYXJyaXZlZCB0byBkaXNwbGF5IHRoZSBuZXcgXGEgdXJsLgorCisgICAgXHNh
IHNldFVybCgpLCB1cmwoKSwgdXJsQ2hhbmdlZCgpLCBRVXJsOjpmcm9tVXNlcklucHV0KCkKKyov
Cit2b2lkIFFXZWJWaWV3Ojpsb2FkKGNvbnN0IFFVcmwgJnVybCkKK3sKKyAgICBwYWdlKCktPm1h
aW5GcmFtZSgpLT5sb2FkKHVybCk7Cit9CisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJWaWV3Ojps
b2FkKGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxdWVzdCwgUU5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
OjpPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBRQnl0ZUFycmF5ICZib2R5KQorCisgICAgTG9h
ZHMgYSBuZXR3b3JrIHJlcXVlc3QsIFxhIHJlcXVlc3QsIHVzaW5nIHRoZSBtZXRob2Qgc3BlY2lm
aWVkIGluIFxhIG9wZXJhdGlvbi4KKworICAgIFxhIGJvZHkgaXMgb3B0aW9uYWwgYW5kIGlzIG9u
bHkgdXNlZCBmb3IgUE9TVCBvcGVyYXRpb25zLgorCisgICAgXG5vdGUgVGhlIHZpZXcgcmVtYWlu
cyB0aGUgc2FtZSB1bnRpbCBlbm91Z2ggZGF0YSBoYXMgYXJyaXZlZCB0byBkaXNwbGF5IHRoZSBu
ZXcgdXJsLgorCisgICAgXHNhIHVybCgpLCB1cmxDaGFuZ2VkKCkKKyovCisKK3ZvaWQgUVdlYlZp
ZXc6OmxvYWQoY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRTmV0d29ya0FjY2Vzc01h
bmFnZXI6Ok9wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFFCeXRlQXJyYXkgJmJvZHkpCit7Cisg
ICAgcGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZChyZXF1ZXN0LCBvcGVyYXRpb24sIGJvZHkpOwor
fQorCisvKiEKKyAgICBTZXRzIHRoZSBjb250ZW50IG9mIHRoZSB3ZWIgdmlldyB0byB0aGUgc3Bl
Y2lmaWVkIFxhIGh0bWwuCisKKyAgICBFeHRlcm5hbCBvYmplY3RzIHN1Y2ggYXMgc3R5bGVzaGVl
dHMgb3IgaW1hZ2VzIHJlZmVyZW5jZWQgaW4gdGhlIEhUTUwKKyAgICBkb2N1bWVudCBhcmUgbG9j
YXRlZCByZWxhdGl2ZSB0byBcYSBiYXNlVXJsLgorCisgICAgVGhlIFxhIGh0bWwgaXMgbG9hZGVk
IGltbWVkaWF0ZWx5OyBleHRlcm5hbCBvYmplY3RzIGFyZSBsb2FkZWQgYXN5bmNocm9ub3VzbHku
CisKKyAgICBXaGVuIHVzaW5nIHRoaXMgbWV0aG9kLCBXZWJLaXQgYXNzdW1lcyB0aGF0IGV4dGVy
bmFsIHJlc291cmNlcyBzdWNoIGFzCisgICAgSmF2YVNjcmlwdCBwcm9ncmFtcyBvciBzdHlsZSBz
aGVldHMgYXJlIGVuY29kZWQgaW4gVVRGLTggdW5sZXNzIG90aGVyd2lzZQorICAgIHNwZWNpZmll
ZC4gRm9yIGV4YW1wbGUsIHRoZSBlbmNvZGluZyBvZiBhbiBleHRlcm5hbCBzY3JpcHQgY2FuIGJl
IHNwZWNpZmllZAorICAgIHRocm91Z2ggdGhlIGNoYXJzZXQgYXR0cmlidXRlIG9mIHRoZSBIVE1M
IHNjcmlwdCB0YWcuIEFsdGVybmF0aXZlbHksIHRoZQorICAgIGVuY29kaW5nIGNhbiBhbHNvIGJl
IHNwZWNpZmllZCBieSB0aGUgd2ViIHNlcnZlci4KKworICAgIFRoaXMgaXMgYSBjb252ZW5pZW5j
ZSBmdW5jdGlvbiBlcXVpdmFsZW50IHRvIHNldENvbnRlbnQoaHRtbCwgInRleHQvaHRtbCIsIGJh
c2VVcmwpLgorCisgICAgXHdhcm5pbmcgVGhpcyBmdW5jdGlvbiB3b3JrcyBvbmx5IGZvciBIVE1M
LCBmb3Igb3RoZXIgbWltZSB0eXBlcyAoaS5lLiBYSFRNTCwgU1ZHKQorICAgIHNldENvbnRlbnQo
KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorCisgICAgXHNhIGxvYWQoKSwgc2V0Q29udGVudCgp
LCBRV2ViRnJhbWU6OnRvSHRtbCgpLCBRV2ViRnJhbWU6OnNldENvbnRlbnQoKQorKi8KK3ZvaWQg
UVdlYlZpZXc6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3QgUVVybCAmYmFzZVVy
bCkKK3sKKyAgICBwYWdlKCktPm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0bWwsIGJhc2VVcmwpOwor
fQorCisvKiEKKyAgICBTZXRzIHRoZSBjb250ZW50IG9mIHRoZSB3ZWIgdmlldyB0byB0aGUgc3Bl
Y2lmaWVkIGNvbnRlbnQgXGEgZGF0YS4gSWYgdGhlIFxhIG1pbWVUeXBlIGFyZ3VtZW50CisgICAg
aXMgZW1wdHkgaXQgaXMgY3VycmVudGx5IGFzc3VtZWQgdGhhdCB0aGUgY29udGVudCBpcyBIVE1M
IGJ1dCBpbiBmdXR1cmUgdmVyc2lvbnMgd2UgbWF5IGludHJvZHVjZQorICAgIGF1dG8tZGV0ZWN0
aW9uLgorCisgICAgRXh0ZXJuYWwgb2JqZWN0cyByZWZlcmVuY2VkIGluIHRoZSBjb250ZW50IGFy
ZSBsb2NhdGVkIHJlbGF0aXZlIHRvIFxhIGJhc2VVcmwuCisKKyAgICBUaGUgXGEgZGF0YSBpcyBs
b2FkZWQgaW1tZWRpYXRlbHk7IGV4dGVybmFsIG9iamVjdHMgYXJlIGxvYWRlZCBhc3luY2hyb25v
dXNseS4KKworICAgIFxzYSBsb2FkKCksIHNldEh0bWwoKSwgUVdlYkZyYW1lOjp0b0h0bWwoKQor
Ki8KK3ZvaWQgUVdlYlZpZXc6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSwgY29u
c3QgUVN0cmluZyAmbWltZVR5cGUsIGNvbnN0IFFVcmwgJmJhc2VVcmwpCit7CisgICAgcGFnZSgp
LT5tYWluRnJhbWUoKS0+c2V0Q29udGVudChkYXRhLCBtaW1lVHlwZSwgYmFzZVVybCk7Cit9CisK
Ky8qIQorICAgIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2aWV3J3MgaGlzdG9yeSBvZiBuYXZp
Z2F0ZWQgd2ViIHBhZ2VzLgorCisgICAgSXQgaXMgZXF1aXZhbGVudCB0bworCisgICAgXHNuaXBw
ZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfcXdlYnZpZXdfc25pcHBldC5jcHAgMAorKi8KK1FX
ZWJIaXN0b3J5ICpRV2ViVmlldzo6aGlzdG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2Uo
KS0+aGlzdG9yeSgpOworfQorCisvKiEKKyAgICBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmll
dy9wYWdlIHNwZWNpZmljIHNldHRpbmdzIG9iamVjdC4KKworICAgIEl0IGlzIGVxdWl2YWxlbnQg
dG8KKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJ2aWV3X3NuaXBw
ZXQuY3BwIDEKKworICAgIFxzYSBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKKyovCitR
V2ViU2V0dGluZ3MgKlFXZWJWaWV3OjpzZXR0aW5ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBh
Z2UoKS0+c2V0dGluZ3MoKTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFXZWJWaWV3Ojp0aXRs
ZQorICAgIFxicmllZiB0aGUgdGl0bGUgb2YgdGhlIHdlYiBwYWdlIGN1cnJlbnRseSB2aWV3ZWQK
KworICAgIEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgYW4gZW1wdHkgc3RyaW5n
LgorCisgICAgXHNhIHRpdGxlQ2hhbmdlZCgpCisqLworUVN0cmluZyBRV2ViVmlldzo6dGl0bGUo
KSBjb25zdAoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICByZXR1cm4gZC0+cGFnZS0+bWFp
bkZyYW1lKCktPnRpdGxlKCk7CisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKworLyohCisgICAg
XHByb3BlcnR5IFFXZWJWaWV3Ojp1cmwKKyAgICBcYnJpZWYgdGhlIHVybCBvZiB0aGUgd2ViIHBh
Z2UgY3VycmVudGx5IHZpZXdlZAorCisgICAgU2V0dGluZyB0aGlzIHByb3BlcnR5IGNsZWFycyB0
aGUgdmlldyBhbmQgbG9hZHMgdGhlIFVSTC4KKworICAgIEJ5IGRlZmF1bHQsIHRoaXMgcHJvcGVy
dHkgY29udGFpbnMgYW4gZW1wdHksIGludmFsaWQgVVJMLgorCisgICAgXHNhIGxvYWQoKSwgdXJs
Q2hhbmdlZCgpCisqLworCit2b2lkIFFXZWJWaWV3OjpzZXRVcmwoY29uc3QgUVVybCAmdXJsKQor
eworICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldFVybCh1cmwpOworfQorCitRVXJsIFFXZWJW
aWV3Ojp1cmwoKSBjb25zdAoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICByZXR1cm4gZC0+
cGFnZS0+bWFpbkZyYW1lKCktPnVybCgpOworICAgIHJldHVybiBRVXJsKCk7Cit9CisKKy8qIQor
ICAgIFxwcm9wZXJ0eSBRV2ViVmlldzo6aWNvbgorICAgIFxicmllZiB0aGUgaWNvbiBhc3NvY2lh
dGVkIHdpdGggdGhlIHdlYiBwYWdlIGN1cnJlbnRseSB2aWV3ZWQKKworICAgIEJ5IGRlZmF1bHQs
IHRoaXMgcHJvcGVydHkgY29udGFpbnMgYSBudWxsIGljb24uCisKKyAgICBcc2EgaWNvbkNoYW5n
ZWQoKSwgUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKCkKKyovCitRSWNvbiBRV2ViVmlldzo6aWNv
bigpIGNvbnN0Cit7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIHJldHVybiBkLT5wYWdlLT5t
YWluRnJhbWUoKS0+aWNvbigpOworICAgIHJldHVybiBRSWNvbigpOworfQorCisvKiEKKyAgICBc
cHJvcGVydHkgUVdlYlZpZXc6Omhhc1NlbGVjdGlvbgorICAgIFxicmllZiB3aGV0aGVyIHRoaXMg
cGFnZSBjb250YWlucyBzZWxlY3RlZCBjb250ZW50IG9yIG5vdC4KKworICAgIEJ5IGRlZmF1bHQs
IHRoaXMgcHJvcGVydHkgaXMgZmFsc2UuCisKKyAgICBcc2Egc2VsZWN0aW9uQ2hhbmdlZCgpCisq
LworYm9vbCBRV2ViVmlldzo6aGFzU2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoZC0+cGFn
ZSkKKyAgICAgICAgcmV0dXJuIGQtPnBhZ2UtPmhhc1NlbGVjdGlvbigpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFXZWJWaWV3OjpzZWxlY3RlZFRleHQKKyAg
ICBcYnJpZWYgdGhlIHRleHQgY3VycmVudGx5IHNlbGVjdGVkCisKKyAgICBCeSBkZWZhdWx0LCB0
aGlzIHByb3BlcnR5IGNvbnRhaW5zIGFuIGVtcHR5IHN0cmluZy4KKworICAgIFxzYSBmaW5kVGV4
dCgpLCBzZWxlY3Rpb25DaGFuZ2VkKCksIHNlbGVjdGVkSHRtbCgpCisqLworUVN0cmluZyBRV2Vi
Vmlldzo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAg
cmV0dXJuIGQtPnBhZ2UtPnNlbGVjdGVkVGV4dCgpOworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9
CisKKy8qIQorICAgIFxzaW5jZSA0LjgKKyAgICBccHJvcGVydHkgUVdlYlZpZXc6OnNlbGVjdGVk
SHRtbAorICAgIFxicmllZiB0aGUgSFRNTCBjdXJyZW50bHkgc2VsZWN0ZWQKKworICAgIEJ5IGRl
ZmF1bHQsIHRoaXMgcHJvcGVydHkgY29udGFpbnMgYW4gZW1wdHkgc3RyaW5nLgorCisgICAgXHNh
IGZpbmRUZXh0KCksIHNlbGVjdGlvbkNoYW5nZWQoKSwgc2VsZWN0ZWRUZXh0KCkKKyovCitRU3Ry
aW5nIFFXZWJWaWV3OjpzZWxlY3RlZEh0bWwoKSBjb25zdAoreworICAgIGlmIChkLT5wYWdlKQor
ICAgICAgICByZXR1cm4gZC0+cGFnZS0+c2VsZWN0ZWRIdG1sKCk7CisgICAgcmV0dXJuIFFTdHJp
bmcoKTsKK30KKworI2lmbmRlZiBRVF9OT19BQ1RJT04KKy8qIQorICAgIFJldHVybnMgYSBwb2lu
dGVyIHRvIGEgUUFjdGlvbiB0aGF0IGVuY2Fwc3VsYXRlcyB0aGUgc3BlY2lmaWVkIHdlYiBhY3Rp
b24gXGEgYWN0aW9uLgorKi8KK1FBY3Rpb24gKlFXZWJWaWV3OjpwYWdlQWN0aW9uKFFXZWJQYWdl
OjpXZWJBY3Rpb24gYWN0aW9uKSBjb25zdAoreworICAgIHJldHVybiBwYWdlKCktPmFjdGlvbihh
Y3Rpb24pOworfQorI2VuZGlmCisKKy8qIQorICAgIFRyaWdnZXJzIHRoZSBzcGVjaWZpZWQgXGEg
YWN0aW9uLiBJZiBpdCBpcyBhIGNoZWNrYWJsZSBhY3Rpb24gdGhlIHNwZWNpZmllZAorICAgIFxh
IGNoZWNrZWQgc3RhdGUgaXMgYXNzdW1lZC4KKworICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0
cmlnZ2VycyB0aGUgY29weSBhY3Rpb24gYW5kIHRoZXJlZm9yZSBjb3BpZXMgYW55CisgICAgc2Vs
ZWN0ZWQgdGV4dCB0byB0aGUgY2xpcGJvYXJkLgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBl
dHMvcXR3ZWJraXRfcXdlYnZpZXdfc25pcHBldC5jcHAgMgorCisgICAgXHNhIHBhZ2VBY3Rpb24o
KQorKi8KK3ZvaWQgUVdlYlZpZXc6OnRyaWdnZXJQYWdlQWN0aW9uKFFXZWJQYWdlOjpXZWJBY3Rp
b24gYWN0aW9uLCBib29sIGNoZWNrZWQpCit7CisgICAgcGFnZSgpLT50cmlnZ2VyQWN0aW9uKGFj
dGlvbiwgY2hlY2tlZCk7Cit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRV2ViVmlldzo6bW9kaWZp
ZWQKKyAgICBcYnJpZWYgd2hldGhlciB0aGUgZG9jdW1lbnQgd2FzIG1vZGlmaWVkIGJ5IHRoZSB1
c2VyCisKKyAgICBQYXJ0cyBvZiBIVE1MIGRvY3VtZW50cyBjYW4gYmUgZWRpdGFibGUgZm9yIGV4
YW1wbGUgdGhyb3VnaCB0aGUKKyAgICBcY3tjb250ZW50ZWRpdGFibGV9IGF0dHJpYnV0ZSBvbiBI
VE1MIGVsZW1lbnRzLgorCisgICAgQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBpcyBmYWxzZS4K
KyovCitib29sIFFXZWJWaWV3Ojppc01vZGlmaWVkKCkgY29uc3QKK3sKKyAgICBpZiAoZC0+cGFn
ZSkKKyAgICAgICAgcmV0dXJuIGQtPnBhZ2UtPmlzTW9kaWZpZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKy8qCitRdDo6VGV4dEludGVyYWN0aW9uRmxhZ3MgUVdlYlZpZXc6OnRleHRJbnRl
cmFjdGlvbkZsYWdzKCkgY29uc3QKK3sKKyAgICAvLyAjIyMgRklYTUUgKGFkZCB0byBwYWdlKQor
ICAgIHJldHVybiBRdDo6VGV4dEludGVyYWN0aW9uRmxhZ3MoKTsKK30KKyovCisKKy8qCisgICAg
XHByb3BlcnR5IFFXZWJWaWV3Ojp0ZXh0SW50ZXJhY3Rpb25GbGFncworICAgIFxicmllZiBob3cg
dGhlIHZpZXcgc2hvdWxkIGhhbmRsZSB1c2VyIGlucHV0CisKKyAgICBTcGVjaWZpZXMgaG93IHRo
ZSB1c2VyIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBwYWdlLgorKi8KKworLyoK
K3ZvaWQgUVdlYlZpZXc6OnNldFRleHRJbnRlcmFjdGlvbkZsYWdzKFF0OjpUZXh0SW50ZXJhY3Rp
b25GbGFncyBmbGFncykKK3sKKyAgICBRX1VOVVNFRChmbGFncykKKyAgICAvLyAjIyMgRklYTUUg
KGFkZCB0byBwYWdlKQorfQorKi8KKworLyohCisgICAgXHJlaW1wCisqLworUVNpemUgUVdlYlZp
ZXc6OnNpemVIaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVNpemUoODAwLCA2MDApOyAvLyAj
IyMjLi4uCit9CisKKy8qIQorICAgIFxwcm9wZXJ0eSBRV2ViVmlldzo6em9vbUZhY3RvcgorICAg
IFxzaW5jZSA0LjUKKyAgICBcYnJpZWYgdGhlIHpvb20gZmFjdG9yIGZvciB0aGUgdmlldworKi8K
Kwordm9pZCBRV2ViVmlldzo6c2V0Wm9vbUZhY3RvcihxcmVhbCBmYWN0b3IpCit7CisgICAgcGFn
ZSgpLT5tYWluRnJhbWUoKS0+c2V0Wm9vbUZhY3RvcihmYWN0b3IpOworfQorCitxcmVhbCBRV2Vi
Vmlldzo6em9vbUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKS0+bWFpbkZyYW1l
KCktPnpvb21GYWN0b3IoKTsKK30KKworLyohCisgIFxwcm9wZXJ0eSBRV2ViVmlldzo6dGV4dFNp
emVNdWx0aXBsaWVyCisgIFxicmllZiB0aGUgc2NhbGluZyBmYWN0b3IgZm9yIGFsbCB0ZXh0IGlu
IHRoZSBmcmFtZQorICBcb2Jzb2xldGUKKworICBVc2Ugc2V0Wm9vbUZhY3RvciBpbnN0ZWFkLCBp
biBjb21iaW5hdGlvbiB3aXRoIHRoZQorICBab29tVGV4dE9ubHkgYXR0cmlidXRlIGluIFFXZWJT
ZXR0aW5ncy4KKworICBcbm90ZSBTZXR0aW5nIHRoaXMgcHJvcGVydHkgYWxzbyBlbmFibGVzIHRo
ZQorICBab29tVGV4dE9ubHkgYXR0cmlidXRlIGluIFFXZWJTZXR0aW5ncy4KKworICBCeSBkZWZh
dWx0LCB0aGlzIHByb3BlcnR5IGNvbnRhaW5zIGEgdmFsdWUgb2YgMS4wLgorKi8KKworLyohCisg
ICAgU2V0cyB0aGUgdmFsdWUgb2YgdGhlIG11bHRpcGxpZXIgdXNlZCB0byBzY2FsZSB0aGUgdGV4
dCBpbiBhIFdlYiBwYWdlIHRvCisgICAgdGhlIFxhIGZhY3RvciBzcGVjaWZpZWQuCisqLwordm9p
ZCBRV2ViVmlldzo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKHFyZWFsIGZhY3RvcikKK3sKKyAgICBw
YWdlKCktPm1haW5GcmFtZSgpLT5zZXRUZXh0U2l6ZU11bHRpcGxpZXIoZmFjdG9yKTsKK30KKwor
LyohCisgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG11bHRpcGxpZXIgdXNlZCB0byBzY2Fs
ZSB0aGUgdGV4dCBpbiBhIFdlYiBwYWdlLgorKi8KK3FyZWFsIFFXZWJWaWV3Ojp0ZXh0U2l6ZU11
bHRpcGxpZXIoKSBjb25zdAoreworICAgIHJldHVybiBwYWdlKCktPm1haW5GcmFtZSgpLT50ZXh0
U2l6ZU11bHRpcGxpZXIoKTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFXZWJWaWV3OjpyZW5k
ZXJIaW50cworICAgIFxzaW5jZSA0LjYKKyAgICBcYnJpZWYgdGhlIGRlZmF1bHQgcmVuZGVyIGhp
bnRzIGZvciB0aGUgdmlldworCisgICAgVGhlc2UgaGludHMgYXJlIHVzZWQgdG8gaW5pdGlhbGl6
ZSBRUGFpbnRlciBiZWZvcmUgcGFpbnRpbmcgdGhlIFdlYiBwYWdlLgorCisgICAgUVBhaW50ZXI6
OlRleHRBbnRpYWxpYXNpbmcgYW5kIFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0gYXJl
IGVuYWJsZWQgYnkgZGVmYXVsdC4KKworICAgIFxzYSBRUGFpbnRlcjo6cmVuZGVySGludHMoKQor
Ki8KKworLyohCisgICAgXHNpbmNlIDQuNgorICAgIFJldHVybnMgdGhlIHJlbmRlciBoaW50cyB1
c2VkIGJ5IHRoZSB2aWV3IHRvIHJlbmRlciBjb250ZW50LgorCisgICAgXHNhIFFQYWludGVyOjpy
ZW5kZXJIaW50cygpCisqLworUVBhaW50ZXI6OlJlbmRlckhpbnRzIFFXZWJWaWV3OjpyZW5kZXJI
aW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnJlbmRlckhpbnRzOworfQorCisvKiEKKyAg
ICBcc2luY2UgNC42CisgICAgU2V0cyB0aGUgcmVuZGVyIGhpbnRzIHVzZWQgYnkgdGhlIHZpZXcg
dG8gdGhlIHNwZWNpZmllZCBcYSBoaW50cy4KKworICAgIFxzYSBRUGFpbnRlcjo6c2V0UmVuZGVy
SGludHMoKQorKi8KK3ZvaWQgUVdlYlZpZXc6OnNldFJlbmRlckhpbnRzKFFQYWludGVyOjpSZW5k
ZXJIaW50cyBoaW50cykKK3sKKyAgICBpZiAoaGludHMgPT0gZC0+cmVuZGVySGludHMpCisgICAg
ICAgIHJldHVybjsKKyAgICBkLT5yZW5kZXJIaW50cyA9IGhpbnRzOworICAgIHVwZGF0ZSgpOwor
fQorCisvKiEKKyAgICBcc2luY2UgNC42CisgICAgSWYgXGEgZW5hYmxlZCBpcyB0cnVlLCBlbmFi
bGVzIHRoZSBzcGVjaWZpZWQgcmVuZGVyIFxhIGhpbnQ7IG90aGVyd2lzZQorICAgIGRpc2FibGVz
IGl0LgorCisgICAgXHNhIHJlbmRlckhpbnRzLCBRUGFpbnRlcjo6cmVuZGVySGludHMoKQorKi8K
K3ZvaWQgUVdlYlZpZXc6OnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OlJlbmRlckhpbnQgaGludCwg
Ym9vbCBlbmFibGVkKQoreworICAgIFFQYWludGVyOjpSZW5kZXJIaW50cyBvbGRIaW50cyA9IGQt
PnJlbmRlckhpbnRzOworICAgIGlmIChlbmFibGVkKQorICAgICAgICBkLT5yZW5kZXJIaW50cyB8
PSBoaW50OworICAgIGVsc2UKKyAgICAgICAgZC0+cmVuZGVySGludHMgJj0gfmhpbnQ7CisgICAg
aWYgKG9sZEhpbnRzICE9IGQtPnJlbmRlckhpbnRzKQorICAgICAgICB1cGRhdGUoKTsKK30KKwor
CisvKiEKKyAgICBGaW5kcyB0aGUgc3BlY2lmaWVkIHN0cmluZywgXGEgc3ViU3RyaW5nLCBpbiB0
aGUgcGFnZSwgdXNpbmcgdGhlIGdpdmVuIFxhIG9wdGlvbnMuCisKKyAgICBJZiB0aGUgSGlnaGxp
Z2h0QWxsT2NjdXJyZW5jZXMgZmxhZyBpcyBwYXNzZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGhpZ2hs
aWdodCBhbGwgb2NjdXJyZW5jZXMKKyAgICB0aGF0IGV4aXN0IGluIHRoZSBwYWdlLiBBbGwgc3Vi
c2VxdWVudCBjYWxscyB3aWxsIGV4dGVuZCB0aGUgaGlnaGxpZ2h0LCByYXRoZXIgdGhhbgorICAg
IHJlcGxhY2UgaXQsIHdpdGggb2NjdXJyZW5jZXMgb2YgdGhlIG5ldyBzdHJpbmcuCisKKyAgICBJ
ZiB0aGUgSGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMgZmxhZyBpcyBub3QgcGFzc2VkLCB0aGUgZnVu
Y3Rpb24gd2lsbCBzZWxlY3QgYW4gb2NjdXJyZW5jZQorICAgIGFuZCBhbGwgc3Vic2VxdWVudCBj
YWxscyB3aWxsIHJlcGxhY2UgdGhlIGN1cnJlbnQgb2NjdXJyZW5jZSB3aXRoIHRoZSBuZXh0IG9u
ZS4KKworICAgIFRvIGNsZWFyIHRoZSBzZWxlY3Rpb24sIGp1c3QgcGFzcyBhbiBlbXB0eSBzdHJp
bmcuCisKKyAgICBSZXR1cm5zIHRydWUgaWYgXGEgc3ViU3RyaW5nIHdhcyBmb3VuZDsgb3RoZXJ3
aXNlIHJldHVybnMgZmFsc2UuCisKKyAgICBcc2Egc2VsZWN0ZWRUZXh0KCksIHNlbGVjdGlvbkNo
YW5nZWQoKQorKi8KK2Jvb2wgUVdlYlZpZXc6OmZpbmRUZXh0KGNvbnN0IFFTdHJpbmcgJnN1YlN0
cmluZywgUVdlYlBhZ2U6OkZpbmRGbGFncyBvcHRpb25zKQoreworICAgIGlmIChkLT5wYWdlKQor
ICAgICAgICByZXR1cm4gZC0+cGFnZS0+ZmluZFRleHQoc3ViU3RyaW5nLCBvcHRpb25zKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKKy8qISBccmVpbXAKKyovCitib29sIFFXZWJWaWV3OjpldmVu
dChRRXZlbnQgKmUpCit7CisgICAgaWYgKGQtPnBhZ2UpIHsKKyNpZm5kZWYgUVRfTk9fQ09OVEVY
VE1FTlUKKyAgICAgICAgaWYgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OkNvbnRleHRNZW51KSB7Cisg
ICAgICAgICAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIFFDb250ZXh0TWVudUV2ZW50ICpldmVudCA9IHN0YXRpY19jYXN0PFFD
b250ZXh0TWVudUV2ZW50ICo+KGUpOworICAgICAgICAgICAgaWYgKGQtPnBhZ2UtPnN3YWxsb3dD
b250ZXh0TWVudUV2ZW50KGV2ZW50KSkgeworICAgICAgICAgICAgICAgIGUtPmFjY2VwdCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZC0+cGFnZS0+dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKGV2ZW50LT5wb3MoKSk7Cisg
ICAgICAgIH0gZWxzZQorI2VuZGlmIC8vIFFUX05PX0NPTlRFWFRNRU5VCisgICAgICAgIGlmIChl
LT50eXBlKCkgPT0gUUV2ZW50OjpTaG9ydGN1dE92ZXJyaWRlKSB7CisgICAgICAgICAgICBkLT5w
YWdlLT5ldmVudChlKTsKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisgICAgICAgIH0gZWxzZSBpZiAo
ZS0+dHlwZSgpID09IFFFdmVudDo6Q3Vyc29yQ2hhbmdlKSB7CisgICAgICAgICAgICAvLyBBbiB1
bnNldEN1cnNvciB3aWxsIHNldCB0aGUgY3Vyc29yIHRvIFF0OjpBcnJvd0N1cnNvci4KKyAgICAg
ICAgICAgIC8vIFRodXMgdGhpcyBjdXJzb3IgY2hhbmdlIG1pZ2h0IGJlIGEgUVdpZGdldDo6dW5z
ZXRDdXJzb3IoKQorICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UgYW5kIGl0
IGNhbWUgZnJvbSBXZWJDb3JlLCB0aGUKKyAgICAgICAgICAgIC8vIFFXZWJQYWdlQ2xpZW50IGFs
cmVhZHkgaGFzIHNldCBpdHMgY3Vyc29yIGludGVybmFsbHkKKyAgICAgICAgICAgIC8vIHRvIFF0
OjpBcnJvd0N1cnNvciwgc28gdXBkYXRpbmcgdGhlIGN1cnNvciBpcyBhbHdheXMKKyAgICAgICAg
ICAgIC8vIHJpZ2h0LCBhcyBpdCBmYWxscyBiYWNrIHRvIHRoZSBsYXN0IGN1cnNvciBzZXQgYnkK
KyAgICAgICAgICAgIC8vIFdlYkNvcmUuCisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgUUV2
ZW50OjpDdXJzb3JVbnNldCBvciBzaW1pbGFyIHRvIFF0LgorICAgICAgICAgICAgaWYgKGN1cnNv
cigpLnNoYXBlKCkgPT0gUXQ6OkFycm93Q3Vyc29yKQorICAgICAgICAgICAgICAgIGQtPnBhZ2Ut
PmQtPmNsaWVudC0+cmVzZXRDdXJzb3IoKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgaWYgKGUt
PnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoQmVnaW4gCisgICAgICAgICAgICB8fCBlLT50eXBlKCkg
PT0gUUV2ZW50OjpUb3VjaEVuZAorICAgICAgICAgICAgfHwgZS0+dHlwZSgpID09IFFFdmVudDo6
VG91Y2hVcGRhdGUKKyAgICAgICAgICAgIHx8IGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoQ2Fu
Y2VsKSB7CisgICAgICAgICAgICBkLT5wYWdlLT5ldmVudChlKTsKKworICAgICAgICAgICAgLy8g
QWx3YXlzIHJldHVybiB0cnVlIHNvIHRoYXQgd2UnbGwgcmVjZWl2ZSBhbHNvIFRvdWNoVXBkYXRl
IGFuZCBUb3VjaEVuZCBldmVudHMKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
IGVsc2UgaWYgKGUtPnR5cGUoKSA9PSBRRXZlbnQ6OkxlYXZlKQorICAgICAgICAgICAgZC0+cGFn
ZS0+ZXZlbnQoZSk7CisgICAgfQorCisgICAgcmV0dXJuIFFXaWRnZXQ6OmV2ZW50KGUpOworfQor
CisvKiEKKyAgICBQcmludHMgdGhlIG1haW4gZnJhbWUgdG8gdGhlIGdpdmVuIFxhIHByaW50ZXIu
CisKKyAgICBcc2EgUVdlYkZyYW1lOjpwcmludCgpLCBRUHJpbnRQcmV2aWV3RGlhbG9nCisqLwor
dm9pZCBRV2ViVmlldzo6cHJpbnQoUVByaW50ZXIgKnByaW50ZXIpIGNvbnN0Cit7CisjaWYgIWRl
ZmluZWQoUVRfTk9fUFJJTlRFUikgJiYgSEFWRShRVFBSSU5UU1VQUE9SVCkKKyAgICBwYWdlKCkt
Pm1haW5GcmFtZSgpLT5wcmludChwcmludGVyKTsKKyNlbmRpZgorfQorCisvKiEKKyAgICBDb252
ZW5pZW5jZSBzbG90IHRoYXQgc3RvcHMgbG9hZGluZyB0aGUgZG9jdW1lbnQuCisKKyAgICBJdCBp
cyBlcXVpdmFsZW50IHRvCisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9x
d2Vidmlld19zbmlwcGV0LmNwcCAzCisKKyAgICBcc2EgcmVsb2FkKCksIHBhZ2VBY3Rpb24oKSwg
bG9hZEZpbmlzaGVkKCkKKyovCit2b2lkIFFXZWJWaWV3OjpzdG9wKCkKK3sKKyAgICBpZiAoZC0+
cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6U3RvcCk7Cit9
CisKKy8qIQorICAgIENvbnZlbmllbmNlIHNsb3QgdGhhdCBsb2FkcyB0aGUgcHJldmlvdXMgZG9j
dW1lbnQgaW4gdGhlIGxpc3Qgb2YgZG9jdW1lbnRzCisgICAgYnVpbHQgYnkgbmF2aWdhdGluZyBs
aW5rcy4gRG9lcyBub3RoaW5nIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGRvY3VtZW50LgorCisg
ICAgSXQgaXMgZXF1aXZhbGVudCB0bworCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3
ZWJraXRfcXdlYnZpZXdfc25pcHBldC5jcHAgNAorCisgICAgXHNhIGZvcndhcmQoKSwgcGFnZUFj
dGlvbigpCisqLwordm9pZCBRV2ViVmlldzo6YmFjaygpCit7CisgICAgaWYgKGQtPnBhZ2UpCisg
ICAgICAgIGQtPnBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkJhY2spOworfQorCisvKiEK
KyAgICBDb252ZW5pZW5jZSBzbG90IHRoYXQgbG9hZHMgdGhlIG5leHQgZG9jdW1lbnQgaW4gdGhl
IGxpc3Qgb2YgZG9jdW1lbnRzCisgICAgYnVpbHQgYnkgbmF2aWdhdGluZyBsaW5rcy4gRG9lcyBu
b3RoaW5nIGlmIHRoZXJlIGlzIG5vIG5leHQgZG9jdW1lbnQuCisKKyAgICBJdCBpcyBlcXVpdmFs
ZW50IHRvCisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2Vidmlld19z
bmlwcGV0LmNwcCA1CisKKyAgICBcc2EgYmFjaygpLCBwYWdlQWN0aW9uKCkKKyovCit2b2lkIFFX
ZWJWaWV3Ojpmb3J3YXJkKCkKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+
dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6Rm9yd2FyZCk7Cit9CisKKy8qIQorICAgIFJlbG9hZHMg
dGhlIGN1cnJlbnQgZG9jdW1lbnQuCisKKyAgICBcc2Egc3RvcCgpLCBwYWdlQWN0aW9uKCksIGxv
YWRTdGFydGVkKCkKKyovCit2b2lkIFFXZWJWaWV3OjpyZWxvYWQoKQoreworICAgIGlmIChkLT5w
YWdlKQorICAgICAgICBkLT5wYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpSZWxvYWQpOwor
fQorCisvKiEgXHJlaW1wCisqLwordm9pZCBRV2ViVmlldzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2
ZW50ICplKQoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5zZXRWaWV3cG9y
dFNpemUoZS0+c2l6ZSgpKTsKK30KKworLyohIFxyZWltcAorKi8KK3ZvaWQgUVdlYlZpZXc6OnBh
aW50RXZlbnQoUVBhaW50RXZlbnQgKmV2KQoreworICAgIGlmICghZC0+cGFnZSkKKyAgICAgICAg
cmV0dXJuOworI2lmZGVmIFFXRUJLSVRfVElNRV9SRU5ERVJJTkcKKyAgICBRVGltZSB0aW1lOwor
ICAgIHRpbWUuc3RhcnQoKTsKKyNlbmRpZgorCisgICAgUVdlYkZyYW1lICpmcmFtZSA9IGQtPnBh
Z2UtPm1haW5GcmFtZSgpOworICAgIFFQYWludGVyIHAodGhpcyk7CisgICAgcC5zZXRSZW5kZXJI
aW50cyhkLT5yZW5kZXJIaW50cyk7CisKKyAgICBmcmFtZS0+cmVuZGVyKCZwLCBldi0+cmVnaW9u
KCkpOworCisjaWZkZWYgICAgUVdFQktJVF9USU1FX1JFTkRFUklORworICAgIGludCBlbGFwc2Vk
ID0gdGltZS5lbGFwc2VkKCk7CisgICAgcURlYnVnKCkgPDwgInBhaW50IGV2ZW50IG9uICIgPDwg
ZXYtPnJlZ2lvbigpIDw8ICIsIHRvb2sgdG8gcmVuZGVyID0gICIgPDwgZWxhcHNlZDsKKyNlbmRp
ZgorfQorCisvKiEKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBjcmVhdGVX
aW5kb3coKSBtZXRob2Qgb2YgdGhlIGFzc29jaWF0ZWQgUVdlYlBhZ2UsCisgICAgZWFjaCB0aW1l
IHRoZSBwYWdlIHdhbnRzIHRvIGNyZWF0ZSBhIG5ldyB3aW5kb3cgb2YgdGhlIGdpdmVuIFxhIHR5
cGUuIFRoaXMgbWlnaHQKKyAgICBiZSB0aGUgcmVzdWx0LCBmb3IgZXhhbXBsZSwgb2YgYSBKYXZh
U2NyaXB0IHJlcXVlc3QgdG8gb3BlbiBhIGRvY3VtZW50IGluIGEgbmV3IHdpbmRvdy4KKworICAg
IFxub3RlIElmIHRoZSBjcmVhdGVXaW5kb3coKSBtZXRob2Qgb2YgdGhlIGFzc29jaWF0ZWQgcGFn
ZSBpcyByZWltcGxlbWVudGVkLCB0aGlzCisgICAgbWV0aG9kIGlzIG5vdCBjYWxsZWQsIHVubGVz
cyBleHBsaWNpdGx5IGRvbmUgc28gaW4gdGhlIHJlaW1wbGVtZW50YXRpb24uCisKKyAgICBcbm90
ZSBJbiB0aGUgY2FzZXMgd2hlbiB0aGUgd2luZG93IGNyZWF0aW9uIGlzIGJlaW5nIHRyaWdnZXJl
ZCBieSBKYXZhU2NyaXB0LCBhcGFydCBmcm9tCisgICAgcmVpbXBsZW1lbnRpbmcgdGhpcyBtZXRo
b2QgYXBwbGljYXRpb24gbXVzdCBhbHNvIHNldCB0aGUgSmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
IGF0dHJpYnV0ZQorICAgIG9mIFFXZWJTZXR0aW5ncyB0byB0cnVlIGluIG9yZGVyIGZvciBpdCB0
byBnZXQgY2FsbGVkLgorCisgICAgXHNhIFFXZWJQYWdlOjpjcmVhdGVXaW5kb3coKSwgUVdlYlBh
Z2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KCkKKyovCitRV2ViVmlldyAqUVdlYlZpZXc6OmNy
ZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSB0eXBlKQoreworICAgIFFfVU5VU0VE
KHR5cGUpCisgICAgcmV0dXJuIDA7Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFXZWJWaWV3
Ojptb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXYpCit7CisgICAgaWYgKGQtPnBhZ2UpIHsK
KyAgICAgICAgY29uc3QgYm9vbCBhY2NlcHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7CisgICAgICAg
IGQtPnBhZ2UtPmV2ZW50KGV2KTsKKyAgICAgICAgZXYtPnNldEFjY2VwdGVkKGFjY2VwdGVkKTsK
KyAgICB9Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFXZWJWaWV3Ojptb3VzZVByZXNzRXZl
bnQoUU1vdXNlRXZlbnQqIGV2KQoreworICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGNvbnN0
IGJvb2wgYWNjZXB0ZWQgPSBldi0+aXNBY2NlcHRlZCgpOworICAgICAgICBkLT5wYWdlLT5ldmVu
dChldik7CisgICAgICAgIGV2LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7CisgICAgfQorfQorCisv
KiEgXHJlaW1wCisqLwordm9pZCBRV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3Vz
ZUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkgeworICAgICAgICBjb25zdCBib29sIGFj
Y2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKKyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOwor
ICAgICAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOworICAgIH0KK30KKworLyohIFxyZWlt
cAorKi8KK3ZvaWQgUVdlYlZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldikK
K3sKKyAgICBpZiAoZC0+cGFnZSkgeworICAgICAgICBjb25zdCBib29sIGFjY2VwdGVkID0gZXYt
PmlzQWNjZXB0ZWQoKTsKKyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYpOworICAgICAgICBldi0+
c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOworICAgIH0KK30KKworI2lmbmRlZiBRVF9OT19DT05URVhU
TUVOVQorLyohIFxyZWltcAorKi8KK3ZvaWQgUVdlYlZpZXc6OmNvbnRleHRNZW51RXZlbnQoUUNv
bnRleHRNZW51RXZlbnQqIGV2KQoreworICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGNvbnN0
IGJvb2wgYWNjZXB0ZWQgPSBldi0+aXNBY2NlcHRlZCgpOworICAgICAgICBkLT5wYWdlLT5ldmVu
dChldik7CisgICAgICAgIGV2LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7CisgICAgfQorfQorI2Vu
ZGlmIC8vIFFUX05PX0NPTlRFWFRNRU5VCisKKyNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVAorLyoh
IFxyZWltcAorKi8KK3ZvaWQgUVdlYlZpZXc6OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2KQor
eworICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGNvbnN0IGJvb2wgYWNjZXB0ZWQgPSBldi0+
aXNBY2NlcHRlZCgpOworICAgICAgICBkLT5wYWdlLT5ldmVudChldik7CisgICAgICAgIGV2LT5z
ZXRBY2NlcHRlZChhY2NlcHRlZCk7CisgICAgfQorfQorI2VuZGlmIC8vIFFUX05PX1dIRUVMRVZF
TlQKKworLyohIFxyZWltcAorKi8KK3ZvaWQgUVdlYlZpZXc6OmtleVByZXNzRXZlbnQoUUtleUV2
ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZXYp
OworICAgIGlmICghZXYtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgUVdpZGdldDo6a2V5UHJlc3NF
dmVudChldik7Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFXZWJWaWV3OjprZXlSZWxlYXNl
RXZlbnQoUUtleUV2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFn
ZS0+ZXZlbnQoZXYpOworICAgIGlmICghZXYtPmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgUVdpZGdl
dDo6a2V5UmVsZWFzZUV2ZW50KGV2KTsKK30KKworLyohIFxyZWltcAorKi8KK3ZvaWQgUVdlYlZp
ZXc6OmZvY3VzSW5FdmVudChRRm9jdXNFdmVudCogZXYpCit7CisgICAgaWYgKGQtPnBhZ2UpCisg
ICAgICAgIGQtPnBhZ2UtPmV2ZW50KGV2KTsKKyAgICBlbHNlCisgICAgICAgIFFXaWRnZXQ6OmZv
Y3VzSW5FdmVudChldik7Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFXZWJWaWV3Ojpmb2N1
c091dEV2ZW50KFFGb2N1c0V2ZW50KiBldikKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAg
ZC0+cGFnZS0+ZXZlbnQoZXYpOworICAgIGVsc2UKKyAgICAgICAgUVdpZGdldDo6Zm9jdXNPdXRF
dmVudChldik7Cit9CisKKy8qISBccmVpbXAKKyovCit2b2lkIFFXZWJWaWV3OjpkcmFnRW50ZXJF
dmVudChRRHJhZ0VudGVyRXZlbnQqIGV2KQoreworI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAor
ICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5ldmVudChldik7CisjZW5kaWYKK30K
KworLyohIFxyZWltcAorKi8KK3ZvaWQgUVdlYlZpZXc6OmRyYWdMZWF2ZUV2ZW50KFFEcmFnTGVh
dmVFdmVudCogZXYpCit7CisjaWZuZGVmIFFUX05PX0RSQUdBTkREUk9QCisgICAgaWYgKGQtPnBh
Z2UpCisgICAgICAgIGQtPnBhZ2UtPmV2ZW50KGV2KTsKKyNlbmRpZgorfQorCisvKiEgXHJlaW1w
CisqLwordm9pZCBRV2ViVmlldzo6ZHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYpCit7
CisjaWZuZGVmIFFUX05PX0RSQUdBTkREUk9QCisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQt
PnBhZ2UtPmV2ZW50KGV2KTsKKyNlbmRpZgorfQorCisvKiEgXHJlaW1wCisqLwordm9pZCBRV2Vi
Vmlldzo6ZHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2KQoreworI2lmbmRlZiBRVF9OT19EUkFHQU5E
RFJPUAorICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5ldmVudChldik7CisjZW5k
aWYKK30KKworLyohIFxyZWltcAorKi8KK2Jvb2wgUVdlYlZpZXc6OmZvY3VzTmV4dFByZXZDaGls
ZChib29sIG5leHQpCit7CisgICAgaWYgKGQtPnBhZ2UgJiYgZC0+cGFnZS0+Zm9jdXNOZXh0UHJl
dkNoaWxkKG5leHQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gUVdpZGdldDo6
Zm9jdXNOZXh0UHJldkNoaWxkKG5leHQpOworfQorCisvKiFccmVpbXAKKyovCitRVmFyaWFudCBR
V2ViVmlldzo6aW5wdXRNZXRob2RRdWVyeShRdDo6SW5wdXRNZXRob2RRdWVyeSBwcm9wZXJ0eSkg
Y29uc3QKK3sKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgcmV0dXJuIGQtPnBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkocHJvcGVydHkpOworICAgIHJldHVybiBRVmFyaWFudCgpOworfQorCisvKiFc
cmVpbXAKKyovCit2b2lkIFFXZWJWaWV3OjppbnB1dE1ldGhvZEV2ZW50KFFJbnB1dE1ldGhvZEV2
ZW50ICplKQoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5ldmVudChlKTsK
K30KKworLyohXHJlaW1wCisqLwordm9pZCBRV2ViVmlldzo6Y2hhbmdlRXZlbnQoUUV2ZW50ICpl
KQoreworICAgIGlmIChkLT5wYWdlICYmIGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlBhbGV0dGVDaGFu
Z2UpCisgICAgICAgIGQtPnBhZ2UtPnNldFBhbGV0dGUocGFsZXR0ZSgpKTsKKyAgICBRV2lkZ2V0
OjpjaGFuZ2VFdmVudChlKTsKK30KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlZpZXc6OnRpdGxl
Q2hhbmdlZChjb25zdCBRU3RyaW5nICZ0aXRsZSkKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0
ZWQgd2hlbmV2ZXIgdGhlIFxhIHRpdGxlIG9mIHRoZSBtYWluIGZyYW1lIGNoYW5nZXMuCisKKyAg
ICBcc2EgdGl0bGUoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlZpZXc6OnVybENoYW5n
ZWQoY29uc3QgUVVybCAmdXJsKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRo
ZSBcYSB1cmwgb2YgdGhlIHZpZXcgY2hhbmdlcy4KKworICAgIFxzYSB1cmwoKSwgbG9hZCgpCisq
LworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViVmlldzo6c3RhdHVzQmFyTWVzc2FnZShjb25zdCBR
U3RyaW5nJiB0ZXh0KQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSBzdGF0
dXMgYmFyIFxhIHRleHQgaXMgY2hhbmdlZCBieSB0aGUgcGFnZS4KKyovCisKKy8qIQorICAgIFxm
biB2b2lkIFFXZWJWaWV3OjppY29uQ2hhbmdlZCgpCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0
dGVkIHdoZW5ldmVyIHRoZSBpY29uIG9mIHRoZSBwYWdlIGlzIGxvYWRlZCBvciBjaGFuZ2VzLgor
CisgICAgSW4gb3JkZXIgZm9yIGljb25zIHRvIGJlIGxvYWRlZCwgeW91IHdpbGwgbmVlZCB0byBz
ZXQgYW4gaWNvbiBkYXRhYmFzZSBwYXRoCisgICAgdXNpbmcgUVdlYlNldHRpbmdzOjpzZXRJY29u
RGF0YWJhc2VQYXRoKCkuCisKKyAgICBcc2EgaWNvbigpLCBRV2ViU2V0dGluZ3M6OnNldEljb25E
YXRhYmFzZVBhdGgoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlZpZXc6OmxvYWRTdGFy
dGVkKCkKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBhIG5ldyBsb2FkIG9mIHRo
ZSBwYWdlIGlzIHN0YXJ0ZWQuCisKKyAgICBcc2EgbG9hZFByb2dyZXNzKCksIGxvYWRGaW5pc2hl
ZCgpCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViVmlldzo6bG9hZEZpbmlzaGVkKGJvb2wg
b2spCisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gYSBsb2FkIG9mIHRoZSBwYWdl
IGlzIGZpbmlzaGVkLgorICAgIFxhIG9rIHdpbGwgaW5kaWNhdGUgd2hldGhlciB0aGUgbG9hZCB3
YXMgc3VjY2Vzc2Z1bCBvciBhbnkgZXJyb3Igb2NjdXJyZWQuCisKKyAgICBcc2EgbG9hZFN0YXJ0
ZWQoKQorKi8KKworLyohCisgICAgXGZuIHZvaWQgUVdlYlZpZXc6OnNlbGVjdGlvbkNoYW5nZWQo
KQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuZXZlciB0aGUgc2VsZWN0aW9uIGNo
YW5nZXMuCisKKyAgICBcc2Egc2VsZWN0ZWRUZXh0KCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lk
IFFXZWJWaWV3Ojpsb2FkUHJvZ3Jlc3MoaW50IHByb2dyZXNzKQorCisgICAgVGhpcyBzaWduYWwg
aXMgZW1pdHRlZCBldmVyeSB0aW1lIGFuIGVsZW1lbnQgaW4gdGhlIHdlYiBwYWdlCisgICAgY29t
cGxldGVzIGxvYWRpbmcgYW5kIHRoZSBvdmVyYWxsIGxvYWRpbmcgcHJvZ3Jlc3MgYWR2YW5jZXMu
CisKKyAgICBUaGlzIHNpZ25hbCB0cmFja3MgdGhlIHByb2dyZXNzIG9mIGFsbCBjaGlsZCBmcmFt
ZXMuCisKKyAgICBUaGUgY3VycmVudCB2YWx1ZSBpcyBwcm92aWRlZCBieSBcYSBwcm9ncmVzcyBh
bmQgc2NhbGVzIGZyb20gMCB0byAxMDAsCisgICAgd2hpY2ggaXMgdGhlIGRlZmF1bHQgcmFuZ2Ug
b2YgUVByb2dyZXNzQmFyLgorCisgICAgXHNhIGxvYWRTdGFydGVkKCksIGxvYWRGaW5pc2hlZCgp
CisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViVmlldzo6bGlua0NsaWNrZWQoY29uc3QgUVVy
bCAmdXJsKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuZXZlciB0aGUgdXNlciBj
bGlja3Mgb24gYSBsaW5rIGFuZCB0aGUgcGFnZSdzIGxpbmtEZWxlZ2F0aW9uUG9saWN5CisgICAg
cHJvcGVydHkgaXMgc2V0IHRvIGRlbGVnYXRlIHRoZSBsaW5rIGhhbmRsaW5nIGZvciB0aGUgc3Bl
Y2lmaWVkIFxhIHVybC4KKworICAgIFxzYSBRV2ViUGFnZTo6bGlua0RlbGVnYXRpb25Qb2xpY3ko
KQorKi8KKworI2luY2x1ZGUgIm1vY19xd2Vidmlldy5jcHAiCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdl
dEFwaS9xd2Vidmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNDM5
ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmll
dy5oCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUVdFQlZJ
RVdfSAorI2RlZmluZSBRV0VCVklFV19ICisKKyNpbmNsdWRlIDxRdFdlYktpdC9xd2Via2l0Z2xv
YmFsLmg+CisjaW5jbHVkZSA8UXRXZWJLaXRXaWRnZXRzL3F3ZWJwYWdlLmg+CisjaW5jbHVkZSA8
UXRDb3JlL3F1cmwuaD4KKyNpbmNsdWRlIDxRdEd1aS9xaWNvbi5oPgorI2luY2x1ZGUgPFF0R3Vp
L3FwYWludGVyLmg+CisjaW5jbHVkZSA8UXROZXR3b3JrL3FuZXR3b3JrYWNjZXNzbWFuYWdlci5o
PgorI2luY2x1ZGUgPFF0V2lkZ2V0cy9xd2lkZ2V0Lmg+CisKK1FUX0JFR0lOX05BTUVTUEFDRQor
Y2xhc3MgUU5ldHdvcmtSZXF1ZXN0OworY2xhc3MgUVByaW50ZXI7CitRVF9FTkRfTkFNRVNQQUNF
CisKK2NsYXNzIFFXZWJQYWdlOworY2xhc3MgUVdlYlZpZXdQcml2YXRlOworY2xhc3MgUVdlYk5l
dHdvcmtSZXF1ZXN0OworCitjbGFzcyBRV0VCS0lUV0lER0VUU19FWFBPUlQgUVdlYlZpZXcgOiBw
dWJsaWMgUVdpZGdldCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgdGl0
bGUgUkVBRCB0aXRsZSkKKyAgICBRX1BST1BFUlRZKFFVcmwgdXJsIFJFQUQgdXJsIFdSSVRFIHNl
dFVybCkKKyAgICBRX1BST1BFUlRZKFFJY29uIGljb24gUkVBRCBpY29uKQorICAgIFFfUFJPUEVS
VFkoUVN0cmluZyBzZWxlY3RlZFRleHQgUkVBRCBzZWxlY3RlZFRleHQpCisgICAgUV9QUk9QRVJU
WShRU3RyaW5nIHNlbGVjdGVkSHRtbCBSRUFEIHNlbGVjdGVkSHRtbCkKKyAgICBRX1BST1BFUlRZ
KGJvb2wgaGFzU2VsZWN0aW9uIFJFQUQgaGFzU2VsZWN0aW9uKQorICAgIFFfUFJPUEVSVFkoYm9v
bCBtb2RpZmllZCBSRUFEIGlzTW9kaWZpZWQpCisgICAgLy9RX1BST1BFUlRZKFF0OjpUZXh0SW50
ZXJhY3Rpb25GbGFncyB0ZXh0SW50ZXJhY3Rpb25GbGFncyBSRUFEIHRleHRJbnRlcmFjdGlvbkZs
YWdzIFdSSVRFIHNldFRleHRJbnRlcmFjdGlvbkZsYWdzKQorICAgIFFfUFJPUEVSVFkocXJlYWwg
dGV4dFNpemVNdWx0aXBsaWVyIFJFQUQgdGV4dFNpemVNdWx0aXBsaWVyIFdSSVRFIHNldFRleHRT
aXplTXVsdGlwbGllciBERVNJR05BQkxFIGZhbHNlKQorICAgIFFfUFJPUEVSVFkocXJlYWwgem9v
bUZhY3RvciBSRUFEIHpvb21GYWN0b3IgV1JJVEUgc2V0Wm9vbUZhY3RvcikKKworICAgIFFfUFJP
UEVSVFkoUVBhaW50ZXI6OlJlbmRlckhpbnRzIHJlbmRlckhpbnRzIFJFQUQgcmVuZGVySGludHMg
V1JJVEUgc2V0UmVuZGVySGludHMpCisgICAgUV9GTEFHUyhRUGFpbnRlcjo6UmVuZGVySGludHMp
CitwdWJsaWM6CisgICAgZXhwbGljaXQgUVdlYlZpZXcoUVdpZGdldCogcGFyZW50ID0gMCk7Cisg
ICAgdmlydHVhbCB+UVdlYlZpZXcoKTsKKworICAgIFFXZWJQYWdlKiBwYWdlKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdlKiBwYWdlKTsKKworICAgIHZvaWQgbG9hZChjb25zdCBR
VXJsJiB1cmwpOworICAgIHZvaWQgbG9hZChjb25zdCBRTmV0d29ya1JlcXVlc3QmIHJlcXVlc3Qs
IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wZXJhdGlvbiA9IFFOZXR3b3JrQWNj
ZXNzTWFuYWdlcjo6R2V0T3BlcmF0aW9uLCBjb25zdCBRQnl0ZUFycmF5ICZib2R5ID0gUUJ5dGVB
cnJheSgpKTsKKyAgICB2b2lkIHNldEh0bWwoY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVy
bCYgYmFzZVVybCA9IFFVcmwoKSk7CisgICAgdm9pZCBzZXRDb250ZW50KGNvbnN0IFFCeXRlQXJy
YXkmIGRhdGEsIGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlID0gUVN0cmluZygpLCBjb25zdCBRVXJs
JiBiYXNlVXJsID0gUVVybCgpKTsKKworICAgIFFXZWJIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7
CisgICAgUVdlYlNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0OworCisgICAgUVN0cmluZyB0aXRs
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0VXJsKGNvbnN0IFFVcmwgJnVybCk7CisgICAgUVVybCB1
cmwoKSBjb25zdDsKKyAgICBRSWNvbiBpY29uKCkgY29uc3Q7CisKKyAgICBib29sIGhhc1NlbGVj
dGlvbigpIGNvbnN0OworICAgIFFTdHJpbmcgc2VsZWN0ZWRUZXh0KCkgY29uc3Q7CisgICAgUVN0
cmluZyBzZWxlY3RlZEh0bWwoKSBjb25zdDsKKworI2lmbmRlZiBRVF9OT19BQ1RJT04KKyAgICBR
QWN0aW9uKiBwYWdlQWN0aW9uKFFXZWJQYWdlOjpXZWJBY3Rpb24gYWN0aW9uKSBjb25zdDsKKyNl
bmRpZgorICAgIHZvaWQgdHJpZ2dlclBhZ2VBY3Rpb24oUVdlYlBhZ2U6OldlYkFjdGlvbiBhY3Rp
b24sIGJvb2wgY2hlY2tlZCA9IGZhbHNlKTsKKworICAgIGJvb2wgaXNNb2RpZmllZCgpIGNvbnN0
OworCisgICAgLyoKKyAgICBRdDo6VGV4dEludGVyYWN0aW9uRmxhZ3MgdGV4dEludGVyYWN0aW9u
RmxhZ3MoKSBjb25zdDsKKyAgICB2b2lkIHNldFRleHRJbnRlcmFjdGlvbkZsYWdzKFF0OjpUZXh0
SW50ZXJhY3Rpb25GbGFncyBmbGFncyk7CisgICAgdm9pZCBzZXRUZXh0SW50ZXJhY3Rpb25GbGFn
KFF0OjpUZXh0SW50ZXJhY3Rpb25GbGFnIGZsYWcpOworICAgICovCisKKyAgICBRVmFyaWFudCBp
bnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbnB1dE1ldGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdDsKKwor
ICAgIFFTaXplIHNpemVIaW50KCkgY29uc3Q7CisKKyAgICBxcmVhbCB6b29tRmFjdG9yKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRab29tRmFjdG9yKHFyZWFsIGZhY3Rvcik7CisKKyAgICB2b2lkIHNl
dFRleHRTaXplTXVsdGlwbGllcihxcmVhbCBmYWN0b3IpOworICAgIHFyZWFsIHRleHRTaXplTXVs
dGlwbGllcigpIGNvbnN0OworCisgICAgUVBhaW50ZXI6OlJlbmRlckhpbnRzIHJlbmRlckhpbnRz
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRSZW5kZXJIaW50cyhRUGFpbnRlcjo6UmVuZGVySGludHMg
aGludHMpOworICAgIHZvaWQgc2V0UmVuZGVySGludChRUGFpbnRlcjo6UmVuZGVySGludCBoaW50
LCBib29sIGVuYWJsZWQgPSB0cnVlKTsKKworICAgIGJvb2wgZmluZFRleHQoY29uc3QgUVN0cmlu
ZyYgc3ViU3RyaW5nLCBRV2ViUGFnZTo6RmluZEZsYWdzIG9wdGlvbnMgPSAwKTsKKworICAgIHZp
cnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBz
dG9wKCk7CisgICAgdm9pZCBiYWNrKCk7CisgICAgdm9pZCBmb3J3YXJkKCk7CisgICAgdm9pZCBy
ZWxvYWQoKTsKKworICAgIHZvaWQgcHJpbnQoUVByaW50ZXIqKSBjb25zdDsKKworUV9TSUdOQUxT
OgorICAgIHZvaWQgbG9hZFN0YXJ0ZWQoKTsKKyAgICB2b2lkIGxvYWRQcm9ncmVzcyhpbnQgcHJv
Z3Jlc3MpOworICAgIHZvaWQgbG9hZEZpbmlzaGVkKGJvb2wpOworICAgIHZvaWQgdGl0bGVDaGFu
Z2VkKGNvbnN0IFFTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHN0YXR1c0Jhck1lc3NhZ2UoY29u
c3QgUVN0cmluZyYgdGV4dCk7CisgICAgdm9pZCBsaW5rQ2xpY2tlZChjb25zdCBRVXJsJik7Cisg
ICAgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKCk7CisgICAgdm9pZCBpY29uQ2hhbmdlZCgpOworICAg
IHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJik7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJl
c2l6ZUV2ZW50KFFSZXNpemVFdmVudCopOworICAgIHZvaWQgcGFpbnRFdmVudChRUGFpbnRFdmVu
dCopOworCisgICAgdmlydHVhbCBRV2ViVmlldyAqY3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJX
aW5kb3dUeXBlIHR5cGUpOworCisgICAgdmlydHVhbCB2b2lkIGNoYW5nZUV2ZW50KFFFdmVudCop
OworICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3VzZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lk
IG1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50Kik7CisjaWZuZGVmIFFUX05PX0NPTlRFWFRN
RU5VCisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQq
KTsKKyNlbmRpZgorI2lmbmRlZiBRVF9OT19XSEVFTEVWRU5UCisgICAgdmlydHVhbCB2b2lkIHdo
ZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBrZXlQcmVz
c0V2ZW50KFFLZXlFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtl
eUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGRyYWdFbnRlckV2ZW50KFFEcmFnRW50ZXJFdmVu
dCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTGVhdmVFdmVudChRRHJhZ0xlYXZlRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCBkcm9wRXZlbnQoUURyb3BFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1
c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNPdXRFdmVudChR
Rm9jdXNFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBpbnB1dE1ldGhvZEV2ZW50KFFJbnB1dE1l
dGhvZEV2ZW50Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgZm9jdXNOZXh0UHJldkNoaWxkKGJvb2wg
bmV4dCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlOworICAgIFFXZWJW
aWV3UHJpdmF0ZSogZDsKKyAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX3BhZ2VEZXN0cm95
ZWQoKSkKK307CisKKyNlbmRpZiAvLyBRV0VCVklFV19ICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldEFwaS9xd2Vidmlld2FjY2Vzc2libGUuY3BwIGIvU291cmNlL1dlYktpdC9x
dC9XaWRnZXRBcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43Y2FlMTlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XaWRnZXRBcGkvcXdlYnZpZXdhY2Nlc3NpYmxlLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJ2aWV3YWNjZXNzaWJsZV9w
LmgiCisKKyNpbmNsdWRlICJxd2ViZnJhbWUuaCIKKyNpbmNsdWRlICJxd2ViZnJhbWVfcC5oIgor
I2luY2x1ZGUgInF3ZWJwYWdlLmgiCisjaW5jbHVkZSAicXdlYnZpZXcuaCIKKworUVdlYkZyYW1l
QWNjZXNzaWJsZTo6UVdlYkZyYW1lQWNjZXNzaWJsZShRV2ViRnJhbWUqIGZyYW1lKQorICAgIDog
UUFjY2Vzc2libGVPYmplY3QoZnJhbWUpCit7Cit9CisKK1FXZWJGcmFtZSogUVdlYkZyYW1lQWNj
ZXNzaWJsZTo6ZnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYkZy
YW1lKj4ob2JqZWN0KCkpOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSogUVdlYkZyYW1lQWNj
ZXNzaWJsZTo6cGFyZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5
QWNjZXNzaWJsZUludGVyZmFjZShvYmplY3QoKS0+cGFyZW50KCkpOworfQorCitRU3RyaW5nIFFX
ZWJGcmFtZUFjY2Vzc2libGU6OnRleHQoUUFjY2Vzc2libGU6OlRleHQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFFTdHJpbmcoKTsKK30KKworaW50IFFXZWJGcmFtZUFjY2Vzc2libGU6OmNoaWxkQ291
bnQoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitRQWNjZXNzaWJsZUludGVyZmFjZSog
UVdlYkZyYW1lQWNjZXNzaWJsZTo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAoreworICAgIHJldHVy
biAwOworfQorCitpbnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxkKGNvbnN0IFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworUUFjY2Vz
c2libGU6OlN0YXRlIFFXZWJGcmFtZUFjY2Vzc2libGU6OnN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFXZWJG
cmFtZUFjY2Vzc2libGU6OnJvbGUoKSBjb25zdAoreworICAgIHJldHVybiBRQWNjZXNzaWJsZTo6
Q2xpZW50OworfQorCitpbnQgUVdlYkZyYW1lQWNjZXNzaWJsZTo6bmF2aWdhdGUoUUFjY2Vzc2li
bGU6OlJlbGF0aW9uRmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29u
c3QKK3sKKyAgICAqdGFyZ2V0ID0gMDsKKyAgICByZXR1cm4gLTE7Cit9CisKK1FXZWJQYWdlQWNj
ZXNzaWJsZTo6UVdlYlBhZ2VBY2Nlc3NpYmxlKFFXZWJQYWdlKiBwYWdlKQorICAgIDogUUFjY2Vz
c2libGVPYmplY3QocGFnZSkKK3sKK30KKworUVdlYlBhZ2UqIFFXZWJQYWdlQWNjZXNzaWJsZTo6
cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2ViUGFnZSo+KG9iamVj
dCgpKTsKK30KKworUVN0cmluZyBRV2ViUGFnZUFjY2Vzc2libGU6OnRleHQoUUFjY2Vzc2libGU6
OlRleHQgdCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitRQWNjZXNzaWJs
ZUludGVyZmFjZSogUVdlYlBhZ2VBY2Nlc3NpYmxlOjpwYXJlbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKG9iamVjdCgpLT5wYXJl
bnQoKSk7Cit9CisKK1FBY2Nlc3NpYmxlSW50ZXJmYWNlKiBRV2ViUGFnZUFjY2Vzc2libGU6OmNo
aWxkKGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoIWluZGV4ICYmIHBhZ2UoKS0+bWFpbkZy
YW1lKCkpCisgICAgICAgIHJldHVybiBuZXcgUVdlYkZyYW1lQWNjZXNzaWJsZShwYWdlKCktPm1h
aW5GcmFtZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IFFXZWJQYWdlQWNjZXNzaWJsZTo6
Y2hpbGRDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2UoKS0+bWFpbkZyYW1lKCkgPyAx
IDogMDsKK30KKworaW50IFFXZWJQYWdlQWNjZXNzaWJsZTo6aW5kZXhPZkNoaWxkKGNvbnN0IFFB
Y2Nlc3NpYmxlSW50ZXJmYWNlKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50IFFX
ZWJQYWdlQWNjZXNzaWJsZTo6bmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0aW9uRmxhZywgaW50
LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3QKK3sKKyAgICAqdGFyZ2V0ID0g
MDsKKyAgICByZXR1cm4gLTE7Cit9CisKK1FBY2Nlc3NpYmxlOjpSb2xlIFFXZWJQYWdlQWNjZXNz
aWJsZTo6cm9sZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFBY2Nlc3NpYmxlOjpDbGllbnQ7Cit9
CisKK1FBY2Nlc3NpYmxlOjpTdGF0ZSBRV2ViUGFnZUFjY2Vzc2libGU6OnN0YXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gUUFjY2Vzc2libGU6OlN0YXRlKCk7Cit9CisKK1FXZWJWaWV3QWNjZXNz
aWJsZTo6UVdlYlZpZXdBY2Nlc3NpYmxlKFFXZWJWaWV3KiB2aWV3KQorICAgIDogUUFjY2Vzc2li
bGVXaWRnZXQodmlldywgUUFjY2Vzc2libGU6OkRvY3VtZW50KQoreworfQorCitRV2ViVmlldyog
UVdlYlZpZXdBY2Nlc3NpYmxlOjp2aWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcW9iamVjdF9j
YXN0PFFXZWJWaWV3Kj4ob2JqZWN0KCkpOworfQorCitpbnQgUVdlYlZpZXdBY2Nlc3NpYmxlOjpj
aGlsZENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmlldygpLT5wYWdlKCkgPyAxIDogMDsK
K30KKworUUFjY2Vzc2libGVJbnRlcmZhY2UqIFFXZWJWaWV3QWNjZXNzaWJsZTo6Y2hpbGQoaW50
IGluZGV4KSBjb25zdAoreworICAgIGlmICghaW5kZXggJiYgdmlldygpLT5wYWdlKCkpCisgICAg
ICAgIHJldHVybiBuZXcgUVdlYlBhZ2VBY2Nlc3NpYmxlKHZpZXcoKS0+cGFnZSgpKTsKKyAgICBy
ZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2
aWV3YWNjZXNzaWJsZV9wLmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlld2Fj
Y2Vzc2libGVfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYTEwYjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlld2Fj
Y2Vzc2libGVfcC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgcXdlYnZpZXdh
Y2Nlc3NpYmxlX3BfaAorI2RlZmluZSBxd2Vidmlld2FjY2Vzc2libGVfcF9oCisKKyNpbmNsdWRl
IDxxYWNjZXNzaWJsZS5oPgorI2luY2x1ZGUgPHFhY2Nlc3NpYmxlb2JqZWN0Lmg+CisjaWYgUVRf
VkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDUsIDEsIDApICYmIFFUX1ZFUlNJT04gPCBRVF9W
RVJTSU9OX0NIRUNLKDUsIDIsIDApCisjaW5jbHVkZSA8cHJpdmF0ZS9xYWNjZXNzaWJsZXdpZGdl
dF9wLmg+CisjZWxzZQorI2luY2x1ZGUgPHFhY2Nlc3NpYmxld2lkZ2V0Lmg+CisjZW5kaWYKKwor
Y2xhc3MgUVdlYkZyYW1lOworY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViVmlldzsKKworLyoK
KyAqIENsYXNzZXMgcmVwcmVzZW50aW5nIGFjY2Vzc2libGUgb2JqZWN0cyBmb3IgVmlldywgRnJh
bWUgYW5kIFBhZ2UuCisgKgorICogRWFjaCBvZiB0aGVzZSBqdXN0IHJldHVybnMgb25lIGNoaWxk
IHdoaWNoIGxldHMgdGhlIGFjY2Vzc2liaWxpdHkKKyAqIGZyYW13b3JrIG5hdmlnYXRlIHRvd2Fy
ZHMgdGhlIGFjdHVhbCBjb250ZW50cyBpbiB0aGUgZnJhbWUuCisgKi8KKworY2xhc3MgUVdlYkZy
YW1lQWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAg
UVdlYkZyYW1lQWNjZXNzaWJsZShRV2ViRnJhbWUqKTsKKworICAgIFFXZWJGcmFtZSogZnJhbWUo
KSBjb25zdDsKKworICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBwYXJlbnQoKSBjb25zdDsKKyAg
ICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGls
ZChpbnQgaW5kZXgpIGNvbnN0OworICAgIGludCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2li
bGVJbnRlcmZhY2UqKSBjb25zdDsKKyAgICBpbnQgbmF2aWdhdGUoUUFjY2Vzc2libGU6OlJlbGF0
aW9uRmxhZywgaW50LCBRQWNjZXNzaWJsZUludGVyZmFjZSoqIHRhcmdldCkgY29uc3Q7CisKKyAg
ICBRU3RyaW5nIHRleHQoUUFjY2Vzc2libGU6OlRleHQpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxl
OjpSb2xlIHJvbGUoKSBjb25zdDsKKyAgICBRQWNjZXNzaWJsZTo6U3RhdGUgc3RhdGUoKSBjb25z
dDsKK307CisKK2NsYXNzIFFXZWJQYWdlQWNjZXNzaWJsZSA6IHB1YmxpYyBRQWNjZXNzaWJsZU9i
amVjdCB7CitwdWJsaWM6CisgICAgUVdlYlBhZ2VBY2Nlc3NpYmxlKFFXZWJQYWdlKik7CisKKyAg
ICBRV2ViUGFnZSogcGFnZSgpIGNvbnN0OworCisgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UqIHBh
cmVudCgpIGNvbnN0OworICAgIGludCBjaGlsZENvdW50KCkgY29uc3Q7CisgICAgUUFjY2Vzc2li
bGVJbnRlcmZhY2UqIGNoaWxkKGludCBpbmRleCkgY29uc3Q7CisgICAgaW50IGluZGV4T2ZDaGls
ZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSopIGNvbnN0OworICAgIGludCBuYXZpZ2F0ZShR
QWNjZXNzaWJsZTo6UmVsYXRpb25GbGFnLCBpbnQsIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiogdGFy
Z2V0KSBjb25zdDsKKworICAgIFFTdHJpbmcgdGV4dChRQWNjZXNzaWJsZTo6VGV4dCkgY29uc3Q7
CisgICAgUUFjY2Vzc2libGU6OlJvbGUgcm9sZSgpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlOjpT
dGF0ZSBzdGF0ZSgpIGNvbnN0OworfTsKKworY2xhc3MgUVdlYlZpZXdBY2Nlc3NpYmxlIDogcHVi
bGljIFFBY2Nlc3NpYmxlV2lkZ2V0IHsKK3B1YmxpYzoKKyAgICBRV2ViVmlld0FjY2Vzc2libGUo
UVdlYlZpZXcqKTsKKworICAgIFFXZWJWaWV3KiB2aWV3KCkgY29uc3Q7CisKKyAgICBpbnQgY2hp
bGRDb3VudCgpIGNvbnN0OworICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlKiBjaGlsZChpbnQgaW5k
ZXgpIGNvbnN0OworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dp
ZGdldFN1cHBvcnQvRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XaWRnZXRTdXBwb3J0L0RlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmUyNGU4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L0RlZmF1bHRGdWxsU2NyZWVuVmlk
ZW9IYW5kbGVyLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIu
aCIKKworI2lmIFVTRShRVF9NVUxUSU1FRElBKQorCisjaW5jbHVkZSAiRnVsbFNjcmVlblZpZGVv
V2lkZ2V0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2Jvb2wgRGVmYXVsdEZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXI6OnNfc2hvdWxkRm9yY2VGdWxsU2NyZWVuVmlkZW9QbGF5YmFjayA9
IGZhbHNlOworCitEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6RGVmYXVsdEZ1bGxTY3Jl
ZW5WaWRlb0hhbmRsZXIoKQorICAgIDogUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKQorICAg
ICwgbV9mdWxsU2NyZWVuV2lkZ2V0KG5ldyBGdWxsU2NyZWVuVmlkZW9XaWRnZXQpCit7CisgICAg
Y29ubmVjdChtX2Z1bGxTY3JlZW5XaWRnZXQsIFNJR05BTChkaWRFeGl0RnVsbFNjcmVlbigpKSwg
dGhpcywgU0lHTkFMKGZ1bGxTY3JlZW5DbG9zZWQoKSkpOworICAgIG1fZnVsbFNjcmVlbldpZGdl
dC0+aGlkZSgpOworCisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5jbG9zZSgpOworfQorCitEZWZh
dWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6fkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVy
KCkKK3sKKyAgICBkZWxldGUgbV9mdWxsU2NyZWVuV2lkZ2V0OworfQorCitib29sIERlZmF1bHRG
dWxsU2NyZWVuVmlkZW9IYW5kbGVyOjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNr
KCkgY29uc3QKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgUUJ5dGVBcnJheSBmb3JjZUZ1bGxTY3JlZW4gPSBx
Z2V0ZW52KCJRVF9XRUJLSVRfRk9SQ0VfRlVMTFNDUkVFTl9WSURFTyIpOworICAgICAgICBpZiAo
IWZvcmNlRnVsbFNjcmVlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICBzX3Nob3VsZEZvcmNlRnVs
bFNjcmVlblZpZGVvUGxheWJhY2sgPSB0cnVlOworCisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gc19zaG91bGRGb3JjZUZ1bGxTY3JlZW5WaWRlb1BsYXli
YWNrOworfQorCit2b2lkIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1bGxT
Y3JlZW4oUU1lZGlhUGxheWVyKiBwbGF5ZXIpCit7CisgICAgbV9mdWxsU2NyZWVuV2lkZ2V0LT5z
aG93KHBsYXllcik7Cit9CisKK3ZvaWQgRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXI6OmV4
aXRGdWxsU2NyZWVuKCkKK3sKKyAgICBtX2Z1bGxTY3JlZW5XaWRnZXQtPmNsb3NlKCk7Cit9Cisj
ZW5kaWYKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvRGVm
YXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3Vw
cG9ydC9EZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmU5NDNjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dpZGdldFN1cHBvcnQvRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuaApAQCAtMCww
ICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworI2lmbmRlZiBEZWZhdWx0RnVsbFNjcmVlblZp
ZGVvSGFuZGxlcl9oCisjZGVmaW5lIERlZmF1bHRGdWxsU2NyZWVuVmlkZW9IYW5kbGVyX2gKKwor
I2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgRnVsbFNjcmVlblZpZGVvV2lkZ2V0OworCisvLyBXZSBkbyBub3QgdXNlIEVOQUJM
RSBvciBVU0UgYmVjYXVzZSBtb2MgZG9lcyBub3QgZXhwYW5kIHRoZXNlIG1hY3Jvcy4KKyNpZiBk
ZWZpbmVkKFdURl9VU0VfUVRfTVVMVElNRURJQSkgJiYgV1RGX1VTRV9RVF9NVUxUSU1FRElBCitj
bGFzcyBEZWZhdWx0RnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1YmxpYyBRV2ViRnVsbFNjcmVl
blZpZGVvSGFuZGxlciB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBEZWZhdWx0RnVsbFNj
cmVlblZpZGVvSGFuZGxlcigpOworICAgIHZpcnR1YWwgfkRlZmF1bHRGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyKCk7CisgICAgYm9vbCByZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkg
Y29uc3Q7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuKFFNZWRp
YVBsYXllciopOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKTsKKworcHJpdmF0ZToKKyAgICBz
dGF0aWMgYm9vbCBzX3Nob3VsZEZvcmNlRnVsbFNjcmVlblZpZGVvUGxheWJhY2s7CisgICAgRnVs
bFNjcmVlblZpZGVvV2lkZ2V0ICptX2Z1bGxTY3JlZW5XaWRnZXQ7Cit9OworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hh
bmRsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L0Z1bGxT
Y3JlZW5WaWRlb1dpZGdldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvRnVs
bFNjcmVlblZpZGVvV2lkZ2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40MTA1ZDAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBw
b3J0L0Z1bGxTY3JlZW5WaWRlb1dpZGdldC5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkZ1bGxTY3JlZW5WaWRlb1dpZGdldC5oIgorCisjaW5jbHVkZSA8
UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFDbG9zZUV2ZW50PgorI2luY2x1ZGUgPFFEZXNrdG9w
V2lkZ2V0PgorI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNpbmNsdWRlIDxRTWVkaWFQbGF5ZXI+CisK
K3N0YXRpYyBjb25zdCBpbnQgZ0hpZGVNb3VzZUN1cnNvckRlbGF5ID0gMzAwMDsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0Z1bGxTY3JlZW5WaWRlb1dpZGdldDo6RnVsbFNjcmVlblZpZGVvV2lk
Z2V0KCkKKyAgICA6IFFWaWRlb1dpZGdldCgpCisgICAgLCBtX21lZGlhUGxheWVyKDApCit7Cisg
ICAgUVBhbGV0dGUgcGFsZXR0ZSh0aGlzLT5wYWxldHRlKCkpOworICAgIHBhbGV0dGUuc2V0Q29s
b3IoUVBhbGV0dGU6OkJhc2UsIFF0OjpibGFjayk7CisgICAgcGFsZXR0ZS5zZXRDb2xvcihRUGFs
ZXR0ZTo6QmFja2dyb3VuZCwgUXQ6OmJsYWNrKTsKKyAgICBzZXRQYWxldHRlKHBhbGV0dGUpOwor
CisgICAgc2V0V2luZG93TW9kYWxpdHkoUXQ6OkFwcGxpY2F0aW9uTW9kYWwpOworICAgIHNldFdp
bmRvd0ZsYWdzKHdpbmRvd0ZsYWdzKCkgfCBRdDo6RnJhbWVsZXNzV2luZG93SGludCk7CisKKyAg
ICBzZXRHZW9tZXRyeShRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuR2VvbWV0cnkoKSk7
CisKKyAgICBtX2N1cnNvclRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7CisgICAgY29ubmVjdCgm
bV9jdXJzb3JUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1QoaGlkZUN1cnNvcigp
KSk7Cit9CisKK0Z1bGxTY3JlZW5WaWRlb1dpZGdldDo6fkZ1bGxTY3JlZW5WaWRlb1dpZGdldCgp
Cit7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvV2lkZ2V0OjpzaG93KFFNZWRpYVBsYXllciog
cGxheWVyKQoreworICAgIG1fbWVkaWFQbGF5ZXIgPSBwbGF5ZXI7CisgICAgc2hvd0Z1bGxTY3Jl
ZW4oKTsKKyAgICBzZXRNb3VzZVRyYWNraW5nKHRydWUpOworICAgIHJhaXNlKCk7CisgICAgbV9t
ZWRpYVBsYXllci0+c2V0VmlkZW9PdXRwdXQodGhpcyk7CisgICAgc2V0Rm9jdXMoKTsKKyAgICBn
cmFiTW91c2UoKTsKKyAgICBoaWRlQ3Vyc29yKCk7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVv
V2lkZ2V0OjpjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBldmVudCkKK3sKKyAgICBtX21lZGlhUGxh
eWVyID0gMDsKKyAgICBtX2N1cnNvclRpbWVyLnN0b3AoKTsKKyAgICBzZXRNb3VzZVRyYWNraW5n
KGZhbHNlKTsKKyAgICByZWxlYXNlTW91c2UoKTsKKyAgICBRQXBwbGljYXRpb246OnJlc3RvcmVP
dmVycmlkZUN1cnNvcigpOworICAgIGV2ZW50LT5pZ25vcmUoKTsKKyAgICBoaWRlKCk7CisgICAg
ZW1pdCBkaWRFeGl0RnVsbFNjcmVlbigpOworfQorCitib29sIEZ1bGxTY3JlZW5WaWRlb1dpZGdl
dDo6ZXZlbnQoUUV2ZW50KiBldikKK3sKKyAgICBzd2l0Y2ggKGV2LT50eXBlKCkpIHsKKyAgICBj
YXNlIFFFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICBzaG93Q3Vyc29yKCk7CisgICAgICAgIGV2
LT5hY2NlcHQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBRRXZlbnQ6Ok1vdXNl
QnV0dG9uRGJsQ2xpY2s6CisgICAgICAgIGNsb3NlKCk7CisgICAgICAgIGV2LT5hY2NlcHQoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFFWaWRl
b1dpZGdldDo6ZXZlbnQoZXYpOworICAgIH0KK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaWRn
ZXQ6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldikKK3sKKyAgICBpZiAobV9tZWRpYVBsYXll
ciAmJiBldi0+a2V5KCkgPT0gUXQ6OktleV9TcGFjZSkgeworICAgICAgICBpZiAobV9tZWRpYVBs
YXllci0+c3RhdGUoKSA9PSBRTWVkaWFQbGF5ZXI6OlBsYXlpbmdTdGF0ZSkKKyAgICAgICAgICAg
IG1fbWVkaWFQbGF5ZXItPnBhdXNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbWVk
aWFQbGF5ZXItPnBsYXkoKTsKKyAgICB9IGVsc2UgaWYgKGV2LT5rZXkoKSA9PSBRdDo6S2V5X0Vz
Y2FwZSkKKyAgICAgICAgY2xvc2UoKTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6
OmhpZGVDdXJzb3IoKQoreworICAgIFFBcHBsaWNhdGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoUUN1
cnNvcihRdDo6QmxhbmtDdXJzb3IpKTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6
OnNob3dDdXJzb3IoKQoreworICAgIFFBcHBsaWNhdGlvbjo6cmVzdG9yZU92ZXJyaWRlQ3Vyc29y
KCk7CisgICAgbV9jdXJzb3JUaW1lci5zdGFydChnSGlkZU1vdXNlQ3Vyc29yRGVsYXkpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvRnVsbFNjcmVl
blZpZGVvV2lkZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvRnVsbFNjcmVl
blZpZGVvV2lkZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAxY2M0
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9GdWxs
U2NyZWVuVmlkZW9XaWRnZXQuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAq
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRnVsbFNjcmVlblZpZGVv
V2lkZ2V0X2gKKyNkZWZpbmUgRnVsbFNjcmVlblZpZGVvV2lkZ2V0X2gKKworI2luY2x1ZGUgPFFU
aW1lcj4KKyNpbmNsdWRlIDxRVmlkZW9XaWRnZXQ+CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xh
c3MgUU1lZGlhUGxheWVyOworUVRfRU5EX05BTUVTUEFDRQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgRnVsbFNjcmVlblZpZGVvV2lkZ2V0IDogcHVibGljIFFWaWRlb1dpZGdldCB7Cisg
ICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBGdWxsU2NyZWVuVmlkZW9XaWRnZXQoKTsKKyAgICB2
aXJ0dWFsIH5GdWxsU2NyZWVuVmlkZW9XaWRnZXQoKTsKKyAgICB2b2lkIHNob3coUU1lZGlhUGxh
eWVyKik7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIGRpZEV4aXRGdWxsU2NyZWVuKCk7CisKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VFdmVudChRQ2xvc2VFdmVudCopOworICAg
IHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQga2V5UHJlc3NF
dmVudChRS2V5RXZlbnQqKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgaGlkZUN1cnNv
cigpOworCitwcml2YXRlOgorICAgIHZvaWQgc2hvd0N1cnNvcigpOworICAgIFFNZWRpYVBsYXll
ciogbV9tZWRpYVBsYXllcjsKKyAgICBRVGltZXIgbV9jdXJzb3JUaW1lcjsKK307CisKK30KKwor
I2VuZGlmIC8vIEZ1bGxTY3JlZW5WaWRlb1dpZGdldF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dpZGdldFN1cHBvcnQvSW5pdFdlYktpdFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0U3VwcG9ydC9Jbml0V2ViS2l0UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhkMjYzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dp
ZGdldFN1cHBvcnQvSW5pdFdlYktpdFF0LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5pdFdlYktpdFF0LmgiCisKKyNpbmNs
dWRlICJJbml0V2ViQ29yZVF0LmgiCisKKyNpbmNsdWRlICJRU3R5bGVGYWNhZGVJbXAuaCIKKwor
I2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRU3R5bGU+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitRV0VCS0lUV0lER0VUU19FWFBPUlQgdm9pZCBpbml0aWFsaXplV2ViS2l0V2lk
Z2V0cygpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAo
aW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHNldFdlYktpdFdpZGdldHNJbml0
Q2FsbGJhY2soUVN0eWxlRmFjYWRlSW1wOjpjcmVhdGUpOworICAgIGluaXRpYWxpemVXZWJLaXRR
dCgpOworCisgICAgLy8gUVdlYlNldHRpbmdzOjpTZWFyY2hDYW5jZWxCdXR0b25HcmFwaGljCisg
ICAgc2V0SW1hZ2VQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b24iLCBRQXBwbGlj
YXRpb246OnN0eWxlKCktPnN0YW5kYXJkUGl4bWFwKFFTdHlsZTo6U1BfRGlhbG9nQ2xvc2VCdXR0
b24pKTsKKyAgICAvLyBRV2ViU2V0dGluZ3M6OlNlYXJjaENhbmNlbEJ1dHRvblByZXNzZWRHcmFw
aGljCisgICAgc2V0SW1hZ2VQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxCdXR0b25QcmVz
c2VkIiwgUUFwcGxpY2F0aW9uOjpzdHlsZSgpLT5zdGFuZGFyZFBpeG1hcChRU3R5bGU6OlNQX0Rp
YWxvZ0Nsb3NlQnV0dG9uKSk7CisKKyAgICBpbml0aWFsaXplZCA9IHRydWU7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9Jbml0V2ViS2l0UXQuaCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9Jbml0V2ViS2l0UXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzJjOTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L0luaXRXZWJLaXRRdC5oCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpZm5kZWYgSW5pdFdlYktpdFF0X2gKKyNkZWZpbmUgSW5pdFdlYktp
dFF0X2gKKworI2luY2x1ZGUgPHF3ZWJraXRnbG9iYWwuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1FXRUJLSVRXSURHRVRTX0VYUE9SVCB2b2lkIGluaXRpYWxpemVXZWJLaXRXaWRnZXRzKCk7
CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0
L0luc3BlY3RvckNsaWVudFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBw
b3J0L0luc3BlY3RvckNsaWVudFdlYlBhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmRjNDczMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dp
ZGdldFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5jcHAKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRX
ZWJQYWdlLmgiCisKKyNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworSW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZSgp
Cit7CisgICAgUVdlYlZpZXcqIHZpZXcgPSBuZXcgUVdlYlZpZXc7CisgICAgdmlldy0+c2V0UGFn
ZSh0aGlzKTsKKyAgICBzZXRQYXJlbnQodmlldyk7CisgICAgY29ubmVjdChtYWluRnJhbWUoKSwg
U0lHTkFMKGphdmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKCkpLCBTTE9UKGphdmFTY3JpcHRX
aW5kb3dPYmplY3RDbGVhcmVkKCkpKTsKK30KKworUVdlYlBhZ2UqIEluc3BlY3RvckNsaWVudFdl
YlBhZ2U6OmNyZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSkKK3sKKyAgICBRV2Vi
VmlldyogdmlldyA9IG5ldyBRV2ViVmlldzsKKyAgICBRV2ViUGFnZSogcGFnZSA9IG5ldyBRV2Vi
UGFnZTsKKyAgICB2aWV3LT5zZXRQYWdlKHBhZ2UpOworICAgIHZpZXctPnNldEF0dHJpYnV0ZShR
dDo6V0FfRGVsZXRlT25DbG9zZSk7CisgICAgcmV0dXJuIHBhZ2U7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yQ2xpZW50V2ViUGFnZTo6amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKQoreworICAg
IFFWYXJpYW50IGluc3BlY3RvckphdmFTY3JpcHRXaW5kb3dPYmplY3RzID0gcHJvcGVydHkoIl9x
X2luc3BlY3RvckphdmFTY3JpcHRXaW5kb3dPYmplY3RzIik7CisgICAgaWYgKCFpbnNwZWN0b3JK
YXZhU2NyaXB0V2luZG93T2JqZWN0cy5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBR
TWFwPFFTdHJpbmcsIFFWYXJpYW50PiBqYXZhU2NyaXB0TmFtZU9iamVjdE1hcCA9IGluc3BlY3Rv
ckphdmFTY3JpcHRXaW5kb3dPYmplY3RzLnRvTWFwKCk7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9
IG1haW5GcmFtZSgpOworICAgIFFNYXA8UVN0cmluZywgUVZhcmlhbnQ+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGphdmFTY3JpcHROYW1lT2JqZWN0TWFwLmNvbnN0QmVnaW4oKTsKKyAgICBmb3IgKCA7
IGl0ICE9IGphdmFTY3JpcHROYW1lT2JqZWN0TWFwLmNvbnN0RW5kKCk7ICsraXQpIHsKKyAgICAg
ICAgUVN0cmluZyBuYW1lID0gaXQua2V5KCk7CisgICAgICAgIFFWYXJpYW50IHZhbHVlID0gaXQu
dmFsdWUoKTsKKyAgICAgICAgUU9iamVjdCogb2JqID0gdmFsdWUudmFsdWU8UU9iamVjdCo+KCk7
CisgICAgICAgIGZyYW1lLT5hZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QobmFtZSwgb2JqKTsK
KyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg4N2YyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
I2lmbmRlZiBJbnNwZWN0b3JDbGllbnRXZWJQYWdlX2gKKyNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50
V2ViUGFnZV9oCisKKyNpbmNsdWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbnNwZWN0b3JDbGllbnRXZWJQYWdlIDog
cHVibGljIFFXZWJQYWdlIHsKKyAgICBRX09CSkVDVAorICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0
b3JDbGllbnRRdDsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JDbGllbnRXZWJQYWdlKCk7CisKKyAg
ICBRV2ViUGFnZSogY3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJXaW5kb3dUeXBlKTsKKworcHVi
bGljIFFfU0xPVFM6CisgICAgdm9pZCBqYXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBJbnNwZWN0b3JDbGllbnRX
ZWJQYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9QYWdl
Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1BhZ2VDbGllbnRR
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUyMWM5ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9QYWdlQ2xpZW50UXQu
Y3BwCkBAIC0wLDAgKzEsMzA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRRdC5oIgorCisjaW5jbHVkZSA8UUdyYXBoaWNzU2Nl
bmU+CisjaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KKworI2lmIGRlZmluZWQoUV9XU19YMTEpCisj
aW5jbHVkZSA8UVgxMUluZm8+CisjZW5kaWYKKworI2lmZGVmIFFUX09QRU5HTF9MSUIKKyNpbmNs
dWRlIDxRR0xXaWRnZXQ+CisjZW5kaWYKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjaW5jbHVkZSAidGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oIgorI2VuZGlmCisKK1FXaW5kb3cqIFFXZWJQYWdlQ2xpZW50Ojpvd25lcldp
bmRvdygpIGNvbnN0Cit7CisgICAgUVdpZGdldCogd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRn
ZXQqPihvd25lcldpZGdldCgpKTsKKyAgICBpZiAoIXdpZGdldCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKFFXaW5kb3cgKndpbmRvdyA9IHdpZGdldC0+d2luZG93SGFuZGxlKCkpCisgICAg
ICAgIHJldHVybiB3aW5kb3c7CisgICAgaWYgKGNvbnN0IFFXaWRnZXQgKm5hdGl2ZVBhcmVudCA9
IHdpZGdldC0+bmF0aXZlUGFyZW50V2lkZ2V0KCkpCisgICAgICAgIHJldHVybiBuYXRpdmVQYXJl
bnQtPndpbmRvd0hhbmRsZSgpOworICAgIHJldHVybiAwOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgUGFnZUNsaWVudFFXaWRnZXQ6OnNjcm9sbChpbnQgZHgsIGludCBkeSwgY29u
c3QgUVJlY3QmIHJlY3RUb1Njcm9sbCkKK3sKKyAgICB2aWV3LT5zY3JvbGwocXJlYWwoZHgpLCBx
cmVhbChkeSksIHJlY3RUb1Njcm9sbCk7Cit9CisKK3ZvaWQgUGFnZUNsaWVudFFXaWRnZXQ6OnVw
ZGF0ZShjb25zdCBRUmVjdCAmIGRpcnR5UmVjdCkKK3sKKyAgICB2aWV3LT51cGRhdGUoZGlydHlS
ZWN0KTsKK30KKwordm9pZCBQYWdlQ2xpZW50UVdpZGdldDo6cmVwYWludFZpZXdwb3J0KCkKK3sK
KyAgICB1cGRhdGUodmlldy0+cmVjdCgpKTsKKyAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k
KHBhZ2UsICJyZXBhaW50UmVxdWVzdGVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24sIFFfQVJHKFFS
ZWN0LCB2aWV3LT5yZWN0KCkpKTsKK30KKwordm9pZCBQYWdlQ2xpZW50UVdpZGdldDo6c2V0SW5w
dXRNZXRob2RFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIHZpZXctPnNldEF0dHJpYnV0ZShR
dDo6V0FfSW5wdXRNZXRob2RFbmFibGVkLCBlbmFibGUpOworfQorCitib29sIFBhZ2VDbGllbnRR
V2lkZ2V0OjppbnB1dE1ldGhvZEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiB2aWV3LT50
ZXN0QXR0cmlidXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJsZWQpOworfQorCit2b2lkIFBhZ2VD
bGllbnRRV2lkZ2V0OjpzZXRJbnB1dE1ldGhvZEhpbnRzKFF0OjpJbnB1dE1ldGhvZEhpbnRzIGhp
bnRzKQoreworICAgIHZpZXctPnNldElucHV0TWV0aG9kSGludHMoaGludHMpOworfQorCitQYWdl
Q2xpZW50UVdpZGdldDo6flBhZ2VDbGllbnRRV2lkZ2V0KCkKK3sKK30KKworI2lmbmRlZiBRVF9O
T19DVVJTT1IKK1FDdXJzb3IgUGFnZUNsaWVudFFXaWRnZXQ6OmN1cnNvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHZpZXctPmN1cnNvcigpOworfQorCit2b2lkIFBhZ2VDbGllbnRRV2lkZ2V0Ojp1
cGRhdGVDdXJzb3IoY29uc3QgUUN1cnNvciYgY3Vyc29yKQoreworICAgIHZpZXctPnNldEN1cnNv
cihjdXJzb3IpOworfQorI2VuZGlmCisKK1FQYWxldHRlIFBhZ2VDbGllbnRRV2lkZ2V0OjpwYWxl
dHRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmlldy0+cGFsZXR0ZSgpOworfQorCitpbnQgUGFn
ZUNsaWVudFFXaWRnZXQ6OnNjcmVlbk51bWJlcigpIGNvbnN0Cit7CisjaWYgZGVmaW5lZChRX1dT
X1gxMSkKKyAgICByZXR1cm4gdmlldy0+eDExSW5mbygpLnNjcmVlbigpOworI2VuZGlmCisgICAg
cmV0dXJuIDA7Cit9CisKK1FPYmplY3QqIFBhZ2VDbGllbnRRV2lkZ2V0Ojpvd25lcldpZGdldCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHZpZXc7Cit9CisKK1FSZWN0IFBhZ2VDbGllbnRRV2lkZ2V0
OjpnZW9tZXRyeVJlbGF0aXZlVG9Pd25lcldpZGdldCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHZp
ZXctPmdlb21ldHJ5KCk7Cit9CisKK1FQb2ludCBQYWdlQ2xpZW50UVdpZGdldDo6bWFwVG9Pd25l
cldpbmRvdyhjb25zdCBRUG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIFFXaWRnZXQqIHdpZGdl
dCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4ob3duZXJXaWRnZXQoKSk7CisgICAgLy8gQ2FuIGJl
IGZhbHNlIGJvdGggaWYgb3duZXJXaWRnZXQoKSBpcyBuYXRpdmUgb3IgaWYgaXQgZG9lc24ndCBo
YXZlIGFueSBuYXRpdmUgcGFyZW50LgorICAgIGlmIChjb25zdCBRV2lkZ2V0ICpuYXRpdmVQYXJl
bnQgPSB3aWRnZXQtPm5hdGl2ZVBhcmVudFdpZGdldCgpKQorICAgICAgICByZXR1cm4gd2lkZ2V0
LT5tYXBUbyhuYXRpdmVQYXJlbnQsIHBvaW50KTsKKworICAgIHJldHVybiBwb2ludDsKK30KKwor
UU9iamVjdCogUGFnZUNsaWVudFFXaWRnZXQ6OnBsdWdpblBhcmVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHZpZXc7Cit9CisKK1FTdHlsZSogUGFnZUNsaWVudFFXaWRnZXQ6OnN0eWxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gdmlldy0+c3R5bGUoKTsKK30KKworUVJlY3RGIFBhZ2VDbGllbnRR
V2lkZ2V0Ojp3aW5kb3dSZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVJlY3RGKHZpZXctPndp
bmRvdygpLT5nZW9tZXRyeSgpKTsKK30KKwordm9pZCBQYWdlQ2xpZW50UVdpZGdldDo6c2V0V2lk
Z2V0VmlzaWJsZShXaWRnZXQqIHdpZGdldCwgYm9vbCB2aXNpYmxlKQoreworICAgIFFXaWRnZXQq
IHF0V2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPih3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0
KCkpOworICAgIGlmICghcXRXaWRnZXQpCisgICAgICAgIHJldHVybjsKKyAgICBxdFdpZGdldC0+
c2V0VmlzaWJsZSh2aXNpYmxlKTsKK30KKworI2lmICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklF
VykKK1BhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6On5QYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0
KCkKK3sKKyAgICBkZWxldGUgb3ZlcmxheTsKK30KKwordm9pZCBQYWdlQ2xpZW50UUdyYXBoaWNz
V2lkZ2V0OjpzY3JvbGwoaW50IGR4LCBpbnQgZHksIGNvbnN0IFFSZWN0JiByZWN0VG9TY3JvbGwp
Cit7CisgICAgdmlldy0+c2Nyb2xsKHFyZWFsKGR4KSwgcXJlYWwoZHkpLCByZWN0VG9TY3JvbGwp
OworfQorCit2b2lkIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnVwZGF0ZShjb25zdCBRUmVj
dCYgZGlydHlSZWN0KQoreworICAgIHZpZXctPnVwZGF0ZShkaXJ0eVJlY3QpOworCisgICAgaWYg
KG92ZXJsYXkpCisgICAgICAgIG92ZXJsYXktPnVwZGF0ZShRUmVjdEYoZGlydHlSZWN0KSk7Cit9
CisKK3ZvaWQgUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6cmVwYWludFZpZXdwb3J0KCkKK3sK
KyAgICB1cGRhdGUodmlldy0+Ym91bmRpbmdSZWN0KCkudG9BbGlnbmVkUmVjdCgpKTsKKyAgICBR
TWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHBhZ2UsICJyZXBhaW50UmVxdWVzdGVkIiwgUXQ6OlF1
ZXVlZENvbm5lY3Rpb24sIFFfQVJHKFFSZWN0LCB2aWV3LT5ib3VuZGluZ1JlY3QoKS50b0FsaWdu
ZWRSZWN0KCkpKTsKK30KKworYm9vbCBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjptYWtlT3Bl
bkdMQ29udGV4dEN1cnJlbnRJZkF2YWlsYWJsZSgpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoUVRfT1BFTkdM
X0xJQikKKyAgICBRR3JhcGhpY3NWaWV3KiBncmFwaGljc1ZpZXcgPSBmaXJzdEdyYXBoaWNzVmll
dygpOworICAgIGlmIChncmFwaGljc1ZpZXcgJiYgZ3JhcGhpY3NWaWV3LT52aWV3cG9ydCgpKSB7
CisgICAgICAgIFFHTFdpZGdldCogZ2xXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdMV2lkZ2V0Kj4o
Z3JhcGhpY3NWaWV3LT52aWV3cG9ydCgpKTsKKyAgICAgICAgaWYgKGdsV2lkZ2V0KSB7CisgICAg
ICAgICAgICAvLyBUaGUgR0wgY29udGV4dCBiZWxvbmdpbmcgdG8gdGhlIFFHTFdpZGdldCB2aWV3
cG9ydCBtdXN0IGJlIGN1cnJlbnQgd2hlbiBUZXh0dXJlTWFwcGVyIGlzIGJlaW5nIGNyZWF0ZWQu
CisgICAgICAgICAgICBnbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldElucHV0TWV0aG9kRW5hYmxlZChi
b29sIGVuYWJsZSkKK3sKKyAgICB2aWV3LT5zZXRGbGFnKFFHcmFwaGljc0l0ZW06Okl0ZW1BY2Nl
cHRzSW5wdXRNZXRob2QsIGVuYWJsZSk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudFFHcmFwaGljc1dp
ZGdldDo6aW5wdXRNZXRob2RFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmlldy0+Zmxh
Z3MoKSAmIFFHcmFwaGljc0l0ZW06Okl0ZW1BY2NlcHRzSW5wdXRNZXRob2Q7Cit9CisKK3ZvaWQg
UGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6c2V0SW5wdXRNZXRob2RIaW50cyhRdDo6SW5wdXRN
ZXRob2RIaW50cyBoaW50cykKK3sKKyAgICB2aWV3LT5zZXRJbnB1dE1ldGhvZEhpbnRzKGhpbnRz
KTsKK30KKworI2lmbmRlZiBRVF9OT19DVVJTT1IKK1FDdXJzb3IgUGFnZUNsaWVudFFHcmFwaGlj
c1dpZGdldDo6Y3Vyc29yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmlldy0+Y3Vyc29yKCk7Cit9
CisKK3ZvaWQgUGFnZUNsaWVudFFHcmFwaGljc1dpZGdldDo6dXBkYXRlQ3Vyc29yKGNvbnN0IFFD
dXJzb3ImIGN1cnNvcikKK3sKKyAgICB2aWV3LT5zZXRDdXJzb3IoY3Vyc29yKTsKK30KKyNlbmRp
ZgorCitRUGFsZXR0ZSBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0OjpwYWxldHRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdmlldy0+cGFsZXR0ZSgpOworfQorCitpbnQgUGFnZUNsaWVudFFHcmFw
aGljc1dpZGdldDo6c2NyZWVuTnVtYmVyKCkgY29uc3QKK3sKKyNpZiBkZWZpbmVkKFFfV1NfWDEx
KQorICAgIGlmIChRR3JhcGhpY3NWaWV3KiBncmFwaGljc1ZpZXcgPSBmaXJzdEdyYXBoaWNzVmll
dygpKQorICAgICAgICByZXR1cm4gZ3JhcGhpY3NWaWV3LT54MTFJbmZvKCkuc2NyZWVuKCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworUU9iamVjdCogUGFnZUNsaWVudFFHcmFwaGljc1dp
ZGdldDo6b3duZXJXaWRnZXQoKSBjb25zdAoreworICAgIGlmIChRR3JhcGhpY3NTY2VuZSogc2Nl
bmUgPSB2aWV3LT5zY2VuZSgpKSB7CisgICAgICAgIGNvbnN0IFFMaXN0PFFHcmFwaGljc1ZpZXcq
PiB2aWV3cyA9IHNjZW5lLT52aWV3cygpOworICAgICAgICByZXR1cm4gdmlld3MudmFsdWUoMCk7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCitRUmVjdCBQYWdlQ2xpZW50UUdyYXBoaWNzV2lk
Z2V0OjpnZW9tZXRyeVJlbGF0aXZlVG9Pd25lcldpZGdldCgpIGNvbnN0Cit7CisgICAgaWYgKFFH
cmFwaGljc1ZpZXcqIGdyYXBoaWNzVmlldyA9IGZpcnN0R3JhcGhpY3NWaWV3KCkpCisgICAgICAg
IHJldHVybiBncmFwaGljc1ZpZXctPm1hcEZyb21TY2VuZSh2aWV3LT5ib3VuZGluZ1JlY3QoKSku
Ym91bmRpbmdSZWN0KCk7CisgICAgcmV0dXJuIFFSZWN0KCk7Cit9CisKK1FQb2ludCBQYWdlQ2xp
ZW50UUdyYXBoaWNzV2lkZ2V0OjptYXBUb093bmVyV2luZG93KGNvbnN0IFFQb2ludCYgcG9pbnQp
IGNvbnN0Cit7CisgICAgaWYgKGNvbnN0IFFHcmFwaGljc1ZpZXcqIGdyYXBoaWNzVmlldyA9IGZp
cnN0R3JhcGhpY3NWaWV3KCkpCisgICAgICAgIGlmIChjb25zdCBRV2lkZ2V0ICpuYXRpdmVQYXJl
bnQgPSBncmFwaGljc1ZpZXctPm5hdGl2ZVBhcmVudFdpZGdldCgpKQorICAgICAgICAgICAgcmV0
dXJuIGdyYXBoaWNzVmlldy0+bWFwVG8obmF0aXZlUGFyZW50LCBncmFwaGljc1ZpZXctPm1hcEZy
b21TY2VuZSh2aWV3LT5tYXBUb1NjZW5lKHBvaW50KSkpOworICAgIHJldHVybiBwb2ludDsKK30K
KworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorUVJlY3RGIFBhZ2VDbGllbnRRR3JhcGhp
Y3NXaWRnZXQ6OmdyYXBoaWNzSXRlbVZpc2libGVSZWN0KCkgY29uc3QKK3sKKyAgICBRR3JhcGhp
Y3NWaWV3KiBncmFwaGljc1ZpZXcgPSBmaXJzdEdyYXBoaWNzVmlldygpOworICAgIGlmICghZ3Jh
cGhpY3NWaWV3KQorICAgICAgICByZXR1cm4gUVJlY3RGKCk7CisKKyAgICBpbnQgeE9mZnNldCA9
IGdyYXBoaWNzVmlldy0+aG9yaXpvbnRhbFNjcm9sbEJhcigpLT52YWx1ZSgpOworICAgIGludCB5
T2Zmc2V0ID0gZ3JhcGhpY3NWaWV3LT52ZXJ0aWNhbFNjcm9sbEJhcigpLT52YWx1ZSgpOworICAg
IHJldHVybiB2aWV3LT5tYXBSZWN0RnJvbVNjZW5lKFFSZWN0RihRUG9pbnRGKHhPZmZzZXQsIHlP
ZmZzZXQpLCBncmFwaGljc1ZpZXctPnZpZXdwb3J0KCktPnNpemUoKSkpOworfQorI2VuZGlmCisK
K1FPYmplY3QqIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnBsdWdpblBhcmVudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHZpZXc7Cit9CisKK1FTdHlsZSogUGFnZUNsaWVudFFHcmFwaGljc1dp
ZGdldDo6c3R5bGUoKSBjb25zdAoreworICAgIHJldHVybiB2aWV3LT5zdHlsZSgpOworfQorCit2
b2lkIFBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQ6OnNldFdpZGdldFZpc2libGUoV2lkZ2V0Kiwg
Ym9vbCkKK3sKKyAgICAvLyBEb2Vzbid0IG1ha2Ugc2Vuc2UsIGRvZXMgaXQ/Cit9CisKK1FSZWN0
RiBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0Ojp3aW5kb3dSZWN0KCkgY29uc3QKK3sKKyAgICBp
ZiAoIXZpZXctPnNjZW5lKCkpCisgICAgICAgIHJldHVybiBRUmVjdEYoKTsKKworICAgIC8vIFRo
ZSBzY2VuZVJlY3QgaXMgYSBnb29kIGFwcHJveGltYXRpb24gb2YgdGhlIHNpemUgb2YgdGhlIGFw
cGxpY2F0aW9uLCBpbmRlcGVuZGVudCBvZiB0aGUgdmlldy4KKyAgICByZXR1cm4gdmlldy0+c2Nl
bmUoKS0+c2NlbmVSZWN0KCk7Cit9CisKK1FHcmFwaGljc1ZpZXcqIFBhZ2VDbGllbnRRR3JhcGhp
Y3NXaWRnZXQ6OmZpcnN0R3JhcGhpY3NWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAodmlldy0+c2Nl
bmUoKSAmJiAhdmlldy0+c2NlbmUoKS0+dmlld3MoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB2aWV3LT5zY2VuZSgpLT52aWV3cygpLmZpcnN0KCk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5k
aWYgLy8gUVRfTk9fR1JBUEhJQ1NWSUVXCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1BhZ2VDbGllbnRRdC5oIGIv
U291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1BhZ2VDbGllbnRRdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZGEzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUGFnZUNsaWVudFF0LmgKQEAgLTAsMCArMSwxOTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFBhZ2VDbGllbnRRdF9oCisjZGVmaW5lIFBh
Z2VDbGllbnRRdF9oCisKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUVdlYlBhZ2VDbGll
bnQuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdC5oIgorI2luY2x1ZGUg
IlRpbGVkQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAicWdyYXBoaWNzd2Vidmlldy5oIgorI2lu
Y2x1ZGUgInF3ZWJmcmFtZS5oIgorI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAi
cXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisjaW5jbHVkZSA8U2V0dGluZ3Mu
aD4KKyNpbmNsdWRlIDxxZ3JhcGhpY3NzY2VuZS5oPgorI2luY2x1ZGUgPHFncmFwaGljc3ZpZXcu
aD4KKyNpbmNsdWRlIDxxZ3JhcGhpY3N3aWRnZXQuaD4KKyNpbmNsdWRlIDxxbWV0YW9iamVjdC5o
PgorI2luY2x1ZGUgPHFzY3JvbGxiYXIuaD4KKyNpbmNsdWRlIDxxc3R5bGVvcHRpb24uaD4KKyNp
bmNsdWRlIDxxdGltZXIuaD4KKyNpbmNsdWRlIDxxd2lkZ2V0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUGFnZUNsaWVudFFXaWRnZXQgOiBwdWJsaWMgUVdlYlBhZ2VDbGllbnQg
eworcHVibGljOgorICAgIFBhZ2VDbGllbnRRV2lkZ2V0KFFXaWRnZXQqIG5ld1ZpZXcsIFFXZWJQ
YWdlKiBuZXdQYWdlKQorICAgICAgICA6IHZpZXcobmV3VmlldykKKyAgICAgICAgLCBwYWdlKG5l
d1BhZ2UpCisgICAgeworICAgICAgICBRX0FTU0VSVCh2aWV3KTsKKyAgICB9CisgICAgdmlydHVh
bCB+UGFnZUNsaWVudFFXaWRnZXQoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1FXaWRnZXRDbGll
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGlu
dCBkeCwgaW50IGR5LCBjb25zdCBRUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29u
c3QgUVJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRWaWV3cG9ydCgp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZEVuYWJsZWQoYm9vbCk7CisgICAgdmly
dHVhbCBib29sIGlucHV0TWV0aG9kRW5hYmxlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnB1dE1ldGhvZEhpbnRzKFF0OjpJbnB1dE1ldGhvZEhpbnRzKTsKKworI2lmbmRlZiBRVF9O
T19DVVJTT1IKKyAgICB2aXJ0dWFsIFFDdXJzb3IgY3Vyc29yKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vyc29yJik7CisjZW5kaWYKKworICAgIHZpcnR1
YWwgUVBhbGV0dGUgcGFsZXR0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgaW50IHNjcmVlbk51bWJl
cigpIGNvbnN0OworICAgIHZpcnR1YWwgUU9iamVjdCogb3duZXJXaWRnZXQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFFSZWN0IGdlb21ldHJ5UmVsYXRpdmVUb093bmVyV2lkZ2V0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBRUG9pbnQgbWFwVG9Pd25lcldpbmRvdyhjb25zdCBRUG9pbnQmKSBjb25zdDsK
KworICAgIHZpcnR1YWwgUU9iamVjdCogcGx1Z2luUGFyZW50KCkgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIFFTdHlsZSogc3R5bGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCB2aWV3UmVzaXpl
c1RvQ29udGVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1
YWwgUVJlY3RGIHdpbmRvd1JlY3QoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRXaWRn
ZXRWaXNpYmxlKFdpZGdldCosIGJvb2wgdmlzaWJsZSk7CisKKyAgICBRV2lkZ2V0KiB2aWV3Owor
ICAgIFFXZWJQYWdlKiBwYWdlOworfTsKKworI2lmICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklF
VykKKy8vIHRoZSBvdmVybGF5IGlzIGhlcmUgZm9yIG9uZSByZWFzb24gb25seTogdG8gaGF2ZSB0
aGUgc2Nyb2xsLWJhcnMgYW5kIG90aGVyCisvLyBleHRyYSBVSSBlbGVtZW50cyBhcHBlYXIgb24g
dG9wIG9mIGFueSBRR3JhcGhpY3NJdGVtcyBjcmVhdGVkIGJ5IENTUyBjb21wb3NpdGluZyBsYXll
cnMKK2NsYXNzIFFHcmFwaGljc0l0ZW1PdmVybGF5IDogcHVibGljIFFHcmFwaGljc09iamVjdCB7
CisgICAgcHVibGljOgorICAgIFFHcmFwaGljc0l0ZW1PdmVybGF5KFFHcmFwaGljc1dpZGdldCog
dmlldywgUVdlYlBhZ2UqIHApCisgICAgICAgIDogUUdyYXBoaWNzT2JqZWN0KHZpZXcpCisgICAg
ICAgICwgcSh2aWV3KQorICAgICAgICAsIHBhZ2UocCkKKyAgICB7CisgICAgICAgIHNldFBvcygw
LCAwKTsKKyAgICAgICAgc2V0RmxhZyhRR3JhcGhpY3NJdGVtOjpJdGVtVXNlc0V4dGVuZGVkU3R5
bGVPcHRpb24sIHRydWUpOworICAgICAgICBzZXRDYWNoZU1vZGUoUUdyYXBoaWNzSXRlbTo6RGV2
aWNlQ29vcmRpbmF0ZUNhY2hlKTsKKyAgICB9CisKKyAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBxLT5ib3VuZGluZ1JlY3QoKTsKKyAgICB9CisK
KyAgICB2b2lkIHBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFw
aGljc0l0ZW0qIG9wdGlvbnMsIFFXaWRnZXQqKQorICAgIHsKKyAgICAgICAgcGFnZS0+bWFpbkZy
YW1lKCktPnJlbmRlcihwYWludGVyLCBzdGF0aWNfY2FzdDxRV2ViRnJhbWU6OlJlbmRlckxheWVy
PihRV2ViRnJhbWU6OkFsbExheWVycyYoflFXZWJGcmFtZTo6Q29udGVudHNMYXllcikpLCBvcHRp
b25zLT5leHBvc2VkUmVjdC50b1JlY3QoKSk7CisgICAgfQorCisgICAgdm9pZCBwcmVwYXJlR3Jh
cGhpY3NJdGVtR2VvbWV0cnlDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUdlb21ldHJ5
Q2hhbmdlKCk7CisgICAgfQorCisgICAgUUdyYXBoaWNzV2lkZ2V0KiBxOworICAgIFFXZWJQYWdl
KiBwYWdlOworfTsKKworCitjbGFzcyBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0IDogcHVibGlj
IFFXZWJQYWdlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBQYWdlQ2xpZW50UUdyYXBoaWNzV2lkZ2V0
KFFHcmFwaGljc1dlYlZpZXcqIG5ld1ZpZXcsIFFXZWJQYWdlKiBuZXdQYWdlKQorICAgICAgICA6
IHZpZXcobmV3VmlldykKKyAgICAgICAgLCBwYWdlKG5ld1BhZ2UpCisgICAgICAgICwgdmlld1Jl
c2l6ZXNUb0NvbnRlbnRzKGZhbHNlKQorICAgICAgICAsIG92ZXJsYXkoMCkKKyAgICB7CisgICAg
ICAgIFFfQVNTRVJUKHZpZXcpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICAgICAgLy8gdGhlIG92ZXJsYXkgYW5kIHN0YXlzIGFsaXZlIGZvciB0aGUgbGlmZXRpbWUgb2YK
KyAgICAgICAgLy8gdGhpcyBRR3JhcGhpY3NXZWJWaWV3IGFzIHRoZSBzY3JvbGxiYXJzIGFyZSBu
ZWVkZWQgd2hlbiB0aGVyZSdzIG5vIGNvbXBvc2l0aW5nCisgICAgICAgIHZpZXctPnNldEZsYWco
UUdyYXBoaWNzSXRlbTo6SXRlbVVzZXNFeHRlbmRlZFN0eWxlT3B0aW9uKTsKKyNlbmRpZgorICAg
IH0KKworICAgIHZpcnR1YWwgflBhZ2VDbGllbnRRR3JhcGhpY3NXaWRnZXQoKTsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1FXaWRnZXRDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbChpbnQgZHgsIGludCBkeSwgY29uc3QgUVJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFFSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZpcnR1
YWwgdm9pZCByZXBhaW50Vmlld3BvcnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRo
b2RFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBpbnB1dE1ldGhvZEVuYWJsZWQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RIaW50cyhRdDo6SW5wdXRNZXRo
b2RIaW50cyk7CisKKyNpZm5kZWYgUVRfTk9fQ1VSU09SCisgICAgdmlydHVhbCBRQ3Vyc29yIGN1
cnNvcigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXJzb3IoY29uc3QgUUN1cnNv
ciYpOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIFFQYWxldHRlIHBhbGV0dGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGludCBzY3JlZW5OdW1iZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFFPYmplY3Qq
IG93bmVyV2lkZ2V0KCkgY29uc3Q7CisgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeVJlbGF0aXZl
VG9Pd25lcldpZGdldCgpIGNvbnN0OworICAgIHZpcnR1YWwgUVBvaW50IG1hcFRvT3duZXJXaW5k
b3coY29uc3QgUVBvaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFFPYmplY3QqIHBsdWdpblBh
cmVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBRU3R5bGUqIHN0eWxlKCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgdmlld1Jlc2l6ZXNUb0NvbnRlbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIHZpZXdSZXNpemVzVG9Db250ZW50czsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFdpZGdl
dFZpc2libGUoV2lkZ2V0KiwgYm9vbCk7CisKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
KyAgICB2aXJ0dWFsIFFSZWN0RiBncmFwaGljc0l0ZW1WaXNpYmxlUmVjdCgpIGNvbnN0OworI2Vu
ZGlmCisKKyAgICB2aXJ0dWFsIGJvb2wgbWFrZU9wZW5HTENvbnRleHRDdXJyZW50SWZBdmFpbGFi
bGUoKTsKKworICAgIHZpcnR1YWwgUVJlY3RGIHdpbmRvd1JlY3QoKSBjb25zdDsKKworICAgIFFH
cmFwaGljc1ZpZXcqIGZpcnN0R3JhcGhpY3NWaWV3KCkgY29uc3Q7CisKKyAgICBRR3JhcGhpY3NX
ZWJWaWV3KiB2aWV3OworICAgIFFXZWJQYWdlKiBwYWdlOworICAgIGJvb2wgdmlld1Jlc2l6ZXNU
b0NvbnRlbnRzOworCisgICAgLy8gdGhlIG92ZXJsYXkgZ2V0cyBpbnN0YW50aWF0ZWQgd2hlbiB0
aGUgcm9vdCBsYXllciBpcyBhdHRhY2hlZCwgYW5kIGdldCBkZWxldGVkIHdoZW4gaXQncyBkZXRh
Y2hlZAorICAgIFFHcmFwaGljc0l0ZW1PdmVybGF5KiBvdmVybGF5OworCisgICAgLy8gd2UgbmVl
ZCB0byBwdXQgdGhlIHJvb3QgZ3JhcGhpY3MgbGF5ZXIgYmVoaW5kIHRoZSBvdmVybGF5ICh3aGlj
aCBjb250YWlucyB0aGUgc2Nyb2xsYmFyKQorICAgIGVudW0geyBSb290R3JhcGhpY3NMYXllclpW
YWx1ZSwgT3ZlcmxheVpWYWx1ZSB9OworfTsKKyNlbmRpZiAvLyBRVF9OT19HUkFQSElDU1ZJRVcK
KworfQorI2VuZGlmIC8vIFBhZ2VDbGllbnRRdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XaWRnZXRTdXBwb3J0L1FHcmFwaGljc1dpZGdldFBsdWdpbkltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XaWRnZXRTdXBwb3J0L1FHcmFwaGljc1dpZGdldFBsdWdpbkltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMzc5MzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1w
bC5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBEaWdpYSBQ
bGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlFHcmFwaGljc1dpZGdldFBsdWdpbkltcGwuaCIKKworI2luY2x1ZGUgPFFHcmFw
aGljc1NjZW5lPgorI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KKworI2lmbmRlZiBRVF9OT19H
UkFQSElDU1ZJRVcKKworUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbDo6flFHcmFwaGljc1dpZGdl
dFBsdWdpbkltcGwoKQoreworICAgIG1fZ3JhcGhpY3NXaWRnZXQtPmRlbGV0ZUxhdGVyKCk7Cit9
CisKK3ZvaWQgUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbDo6dXBkYXRlKGNvbnN0IFFSZWN0ICZy
ZWN0KQoreworICAgIFFHcmFwaGljc1NjZW5lKiBzY2VuZSA9IG1fZ3JhcGhpY3NXaWRnZXQtPnNj
ZW5lKCk7CisgICAgaWYgKHNjZW5lKQorICAgICAgICBzY2VuZS0+dXBkYXRlKHJlY3QpOworfQor
Cit2b2lkIFFHcmFwaGljc1dpZGdldFBsdWdpbkltcGw6OnNldEdlb21ldHJ5QW5kQ2xpcChjb25z
dCBRUmVjdCAmZ2VvbWV0cnksIGNvbnN0IFFSZWN0ICYsIGJvb2wpCit7CisgICAgbV9ncmFwaGlj
c1dpZGdldC0+c2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBj
b2RlIGhhbmRsZSBjbGlwcGluZyBvZiBncmFwaGljcyB3aWRnZXRzLgorfQorCit2b2lkIFFHcmFw
aGljc1dpZGdldFBsdWdpbkltcGw6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1f
Z3JhcGhpY3NXaWRnZXQtPnNldFZpc2libGUodmlzaWJsZSk7Cit9CisKK3ZvaWQgUUdyYXBoaWNz
V2lkZ2V0UGx1Z2luSW1wbDo6c2V0V2lkZ2V0UGFyZW50KFFPYmplY3QqIHBhcmVudCkKK3sKKyAg
ICBRR3JhcGhpY3NPYmplY3QqIHBhcmVudEl0ZW0gPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzT2Jq
ZWN0Kj4ocGFyZW50KTsKKyAgICBpZiAocGFyZW50SXRlbSkKKyAgICAgICAgbV9ncmFwaGljc1dp
ZGdldC0+c2V0UGFyZW50SXRlbShwYXJlbnRJdGVtKTsKK30KKworUU9iamVjdCogUUdyYXBoaWNz
V2lkZ2V0UGx1Z2luSW1wbDo6aGFuZGxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGlj
c1dpZGdldDsKK30KKworI2luY2x1ZGUgIm1vY19RR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBsLmNw
cCIKKworI2VuZGlmIC8vICFkZWZpbmVkKFFUX05PX0dSQVBISUNTVklFVykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUUdyYXBoaWNzV2lkZ2V0UGx1Z2lu
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNzU4MjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUUdyYXBoaWNzV2lk
Z2V0UGx1Z2luSW1wbC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFFHcmFw
aGljc1dpZGdldFBsdWdpbkltcGxfaAorI2RlZmluZSBRR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBs
X2gKKworI2lmbmRlZiBRVF9OT19HUkFQSElDU1ZJRVcKKworI2luY2x1ZGUgIlF0UGx1Z2luV2lk
Z2V0QWRhcHRlci5oIgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFHcmFwaGljc1dpZGdl
dDsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3MgUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbCA6
IHB1YmxpYyBRdFBsdWdpbldpZGdldEFkYXB0ZXIgeworICAgIFFfT0JKRUNUCitwdWJsaWM6Cisg
ICAgUUdyYXBoaWNzV2lkZ2V0UGx1Z2luSW1wbChRR3JhcGhpY3NXaWRnZXQgKncpIDogbV9ncmFw
aGljc1dpZGdldCh3KSB7IH0KKyAgICB2aXJ0dWFsIH5RR3JhcGhpY3NXaWRnZXRQbHVnaW5JbXBs
KCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBRUmVjdCAmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0R2VvbWV0cnlBbmRDbGlwKGNvbnN0IFFSZWN0JiwgY29uc3QgUVJl
Y3QmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVldChjb25zdCBRU3RyaW5nJikgT1ZFUlJJREUg
eyB9CisgICAgdmlydHVhbCB2b2lkIHNldFdpZGdldFBhcmVudChRT2JqZWN0KikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBRT2JqZWN0KiBoYW5kbGUoKSBjb25zdCBPVkVSUklERTsKK3ByaXZhdGU6
CisgICAgUUdyYXBoaWNzV2lkZ2V0ICptX2dyYXBoaWNzV2lkZ2V0OworfTsKKyNlbmRpZiAvLyAh
ZGVmaW5lZChRVF9OT19HUkFQSElDU1ZJRVcpCisKKyNlbmRpZiAvLyBRR3JhcGhpY3NXaWRnZXRQ
bHVnaW5JbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9R
U3R5bGVGYWNhZGVJbXAuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FTdHls
ZUZhY2FkZUltcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM4ODQw
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RU3R5
bGVGYWNhZGVJbXAuY3BwCkBAIC0wLDAgKzEsNDk4IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIHRoZW1lIGltcGxlbWVudGF0aW9uIGZvciBmb3JtIGNvbnRyb2xzIGluIFdlYkNv
cmUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJRU3R5bGVGYWNhZGVJbXAuaCIKKworI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4K
KyNpbmNsdWRlIDxRTGluZUVkaXQ+CisjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8UVB1
c2hCdXR0b24+CisjaW5jbHVkZSA8UVN0eWxlRmFjdG9yeT4KKyNpbmNsdWRlIDxRU3R5bGVPcHRp
b24+CisKKyNpbmNsdWRlIDxRV2ViUGFnZUFkYXB0ZXIuaD4KKyNpbmNsdWRlIDxRV2ViUGFnZUNs
aWVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3N0YXRpYyBRU3R5bGU6OlN0YXRlIGNvbnZlcnRUb1FTdHlsZVN0YXRlKFFTdHlsZUZhY2Fk
ZTo6U3RhdGUgc3RhdGUpCit7CisgICAgUVN0eWxlOjpTdGF0ZSByZXN1bHQ7CisjZGVmaW5lIENP
TlZFUlRfU1RBVEUoUHJveGllZFN0YXRlLCBWYWx1ZSkgXAorICAgIGlmIChzdGF0ZSAmIFFTdHls
ZUZhY2FkZTo6UHJveGllZFN0YXRlKSBcCisgICAgICAgIHJlc3VsdCB8PSBRU3R5bGU6OlByb3hp
ZWRTdGF0ZTsKKworICAgIEZPUl9FQUNIX01BUFBFRF9TVEFURShDT05WRVJUX1NUQVRFLCApCisK
KyN1bmRlZiBDT05WRVJUX1NUQVRFCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
UVN0eWxlOjpTdWJDb250cm9sIGNvbnZlcnRUb1FTdHlsZVN1YkNvbnRyb2woUVN0eWxlRmFjYWRl
OjpTdWJDb250cm9sIHNjKQoreworI2RlZmluZSBDT05WRVJUX1NVQkNPTlRST0woRiwgVmFsdWUp
IFwKKyAgICBjYXNlIFFTdHlsZUZhY2FkZTo6RjogcmV0dXJuIFFTdHlsZTo6RgorCisgICAgc3dp
dGNoIChzYykgeworICAgICAgICBGT1JfRUFDSF9TVUJDT05UUk9MKENPTlZFUlRfU1VCQ09OVFJP
TCwgU0VNSUNPTE9OKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIFFTdHlsZTo6U0NfTm9uZTsKKyN1bmRlZiBDT05WRVJUX1NVQkNPTlRST0wKK30KKworc3Rh
dGljIHZvaWQgaW5pdEdlbmVyaWNTdHlsZU9wdGlvbihRU3R5bGVPcHRpb24qIG9wdGlvbiwgUVdp
ZGdldCogd2lkZ2V0LCBjb25zdCBRU3R5bGVGYWNhZGVPcHRpb24mIGZhY2FkZU9wdGlvbikKK3sK
KyAgICBpZiAod2lkZ2V0KQorICAgICAgICBvcHRpb24tPmluaXQod2lkZ2V0KTsKKyAgICBlbHNl
CisgICAgICAgIC8vIElmIGEgd2lkZ2V0IGlzIG5vdCBkaXJlY3RseSBhdmFpbGFibGUgZm9yIHJl
bmRlcmluZywgd2UgZmFsbGJhY2sgdG8gZGVmYXVsdAorICAgICAgICAvLyB2YWx1ZSBmb3IgYW4g
YWN0aXZlIHdpZGdldC4KKyAgICAgICAgb3B0aW9uLT5zdGF0ZSA9IFFTdHlsZTo6U3RhdGVfQWN0
aXZlIHwgUVN0eWxlOjpTdGF0ZV9FbmFibGVkOworCisgICAgb3B0aW9uLT5yZWN0ID0gZmFjYWRl
T3B0aW9uLnJlY3Q7CisgICAgb3B0aW9uLT5zdGF0ZSA9IGNvbnZlcnRUb1FTdHlsZVN0YXRlKGZh
Y2FkZU9wdGlvbi5zdGF0ZSk7CisgICAgaWYgKGZhY2FkZU9wdGlvbi5kaXJlY3Rpb24gIT0gUXQ6
OkxheW91dERpcmVjdGlvbkF1dG8pCisgICAgICAgIG9wdGlvbi0+ZGlyZWN0aW9uID0gZmFjYWRl
T3B0aW9uLmRpcmVjdGlvbjsKKyAgICBvcHRpb24tPnBhbGV0dGUgPSBmYWNhZGVPcHRpb24ucGFs
ZXR0ZTsKK30KKworc3RhdGljIHZvaWQgaW5pdFNwZWNpZmljU3R5bGVPcHRpb24oUVN0eWxlT3B0
aW9uKiwgY29uc3QgUVN0eWxlRmFjYWRlT3B0aW9uJikKK3sKK30KKworc3RhdGljIHZvaWQgaW5p
dFNwZWNpZmljU3R5bGVPcHRpb24oUVN0eWxlT3B0aW9uU2xpZGVyKiBzbGlkZXJPcHRpb24sIGNv
bnN0IFFTdHlsZUZhY2FkZU9wdGlvbiYgZmFjYWRlT3B0aW9uKQoreworICAgIHNsaWRlck9wdGlv
bi0+b3JpZW50YXRpb24gPSBmYWNhZGVPcHRpb24uc2xpZGVyLm9yaWVudGF0aW9uOworICAgIHNs
aWRlck9wdGlvbi0+dXBzaWRlRG93biA9IGZhY2FkZU9wdGlvbi5zbGlkZXIudXBzaWRlRG93bjsK
KyAgICBzbGlkZXJPcHRpb24tPm1pbmltdW0gPSBmYWNhZGVPcHRpb24uc2xpZGVyLm1pbmltdW07
CisgICAgc2xpZGVyT3B0aW9uLT5tYXhpbXVtID0gZmFjYWRlT3B0aW9uLnNsaWRlci5tYXhpbXVt
OworICAgIHNsaWRlck9wdGlvbi0+c2xpZGVyUG9zaXRpb24gPSBmYWNhZGVPcHRpb24uc2xpZGVy
LnBvc2l0aW9uOworICAgIHNsaWRlck9wdGlvbi0+c2xpZGVyVmFsdWUgPSBmYWNhZGVPcHRpb24u
c2xpZGVyLnZhbHVlOworICAgIHNsaWRlck9wdGlvbi0+c2luZ2xlU3RlcCA9IGZhY2FkZU9wdGlv
bi5zbGlkZXIuc2luZ2xlU3RlcDsKKyAgICBzbGlkZXJPcHRpb24tPnBhZ2VTdGVwID0gZmFjYWRl
T3B0aW9uLnNsaWRlci5wYWdlU3RlcDsKKyAgICBzbGlkZXJPcHRpb24tPmFjdGl2ZVN1YkNvbnRy
b2xzID0gY29udmVydFRvUVN0eWxlU3ViQ29udHJvbChmYWNhZGVPcHRpb24uc2xpZGVyLmFjdGl2
ZVN1YkNvbnRyb2xzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFN0eWxlT3B0aW9uPgorY2xh
c3MgTWFwcGVkU3R5bGVPcHRpb24gOiBwdWJsaWMgU3R5bGVPcHRpb24geworCitwdWJsaWM6Cisg
ICAgTWFwcGVkU3R5bGVPcHRpb24oUVdpZGdldCogd2lkZ2V0LCBjb25zdCBRU3R5bGVGYWNhZGVP
cHRpb24mIGZhY2FkZU9wdGlvbikKKyAgICB7CisgICAgICAgIGluaXRHZW5lcmljU3R5bGVPcHRp
b24odGhpcywgd2lkZ2V0LCBmYWNhZGVPcHRpb24pOworICAgICAgICBpbml0U3BlY2lmaWNTdHls
ZU9wdGlvbih0aGlzLCBmYWNhZGVPcHRpb24pOworICAgIH0KK307CisKK3N0YXRpYyBRU3R5bGU6
OlBpeGVsTWV0cmljIGNvbnZlcnRQaXhlbE1ldHJpYyhRU3R5bGVGYWNhZGU6OlBpeGVsTWV0cmlj
IHN0YXRlKQoreworI2RlZmluZSBDT05WRVJUX01FVFJJQyhNZXRyaWMpIFwKKyAgICBjYXNlIFFT
dHlsZUZhY2FkZTo6TWV0cmljOiByZXR1cm4gUVN0eWxlOjpNZXRyaWMKKworICAgIHN3aXRjaCAo
c3RhdGUpIHsKKyAgICAgICAgRk9SX0VBQ0hfTUFQUEVEX01FVFJJQyhDT05WRVJUX01FVFJJQywg
U0VNSUNPTE9OKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFFTdHlsZTo6UE1fQ3VzdG9tQmFzZTsKKworI3VuZGVmIENPTlZFUlRfTUVUUklDCit9CisKK3N0
YXRpYyBRU3R5bGVGYWNhZGU6OlN1YkNvbnRyb2wgY29udmVydFRvUVN0eWxlRmFjYWRlU3ViQ29u
dHJvbChRU3R5bGU6OlN1YkNvbnRyb2wgc2MpCit7CisjZGVmaW5lIENPTlZFUlRfU1VCQ09OVFJP
TChGLCBWYWx1ZSkgXAorICAgIGNhc2UgUVN0eWxlOjpGOiByZXR1cm4gUVN0eWxlRmFjYWRlOjpG
CisKKyAgICBzd2l0Y2ggKHNjKSB7CisgICAgICAgIEZPUl9FQUNIX1NVQkNPTlRST0woQ09OVkVS
VF9TVUJDT05UUk9MLCBTRU1JQ09MT04pOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gUVN0eWxlRmFjYWRlOjpTQ19Ob25lOworI3VuZGVmIENPTlZFUlRfU1VC
Q09OVFJPTAorfQorCitRU3R5bGVGYWNhZGVJbXA6OlFTdHlsZUZhY2FkZUltcChRV2ViUGFnZUFk
YXB0ZXIqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fc3R5bGUoMCkKK3sKKyAg
ICBtX2ZhbGxiYWNrU3R5bGUgPSBRU3R5bGVGYWN0b3J5OjpjcmVhdGUoUUxhdGluMVN0cmluZygi
d2luZG93cyIpKTsKKyAgICBtX293bkZhbGxiYWNrU3R5bGUgPSB0cnVlOworICAgIGlmICghbV9m
YWxsYmFja1N0eWxlKSB7CisgICAgICAgIG1fZmFsbGJhY2tTdHlsZSA9IFFBcHBsaWNhdGlvbjo6
c3R5bGUoKTsKKyAgICAgICAgbV9vd25GYWxsYmFja1N0eWxlID0gZmFsc2U7CisgICAgfQorfQor
CitRU3R5bGVGYWNhZGVJbXA6On5RU3R5bGVGYWNhZGVJbXAoKQoreworICAgIGlmIChtX293bkZh
bGxiYWNrU3R5bGUpCisgICAgICAgIGRlbGV0ZSBtX2ZhbGxiYWNrU3R5bGU7Cit9CisKK1FSZWN0
IFFTdHlsZUZhY2FkZUltcDo6YnV0dG9uU3ViRWxlbWVudFJlY3QoUVN0eWxlRmFjYWRlOjpCdXR0
b25TdWJFbGVtZW50IGJ1dHRvbkVsZW1lbnQsIFN0YXRlIHN0YXRlLCBjb25zdCBRUmVjdCYgb3Jp
Z2luYWxSZWN0KSBjb25zdAoreworICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBvcHRpb247CisgICAg
b3B0aW9uLnN0YXRlID0gY29udmVydFRvUVN0eWxlU3RhdGUoc3RhdGUpOworICAgIG9wdGlvbi5y
ZWN0ID0gb3JpZ2luYWxSZWN0OworCisgICAgUVN0eWxlOjpTdWJFbGVtZW50IHN1YkVsZW1lbnQg
PSBRU3R5bGU6OlNFX0N1c3RvbUJhc2U7CisgICAgc3dpdGNoIChidXR0b25FbGVtZW50KSB7Cisg
ICAgY2FzZSBQdXNoQnV0dG9uTGF5b3V0SXRlbTogc3ViRWxlbWVudCA9IFFTdHlsZTo6U0VfUHVz
aEJ1dHRvbkxheW91dEl0ZW07IGJyZWFrOworICAgIGNhc2UgUHVzaEJ1dHRvbkNvbnRlbnRzOiBz
dWJFbGVtZW50ID0gUVN0eWxlOjpTRV9QdXNoQnV0dG9uQ29udGVudHM7IGJyZWFrOworICAgIGRl
ZmF1bHQ6IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gc3R5bGUoKS0+
c3ViRWxlbWVudFJlY3Qoc3ViRWxlbWVudCwgJm9wdGlvbik7Cit9CisKK2ludCBRU3R5bGVGYWNh
ZGVJbXA6OmZpbmRGcmFtZUxpbmVXaWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xpbmVFZGl0
KQorICAgICAgICBtX2xpbmVFZGl0LnJlc2V0KG5ldyBRTGluZUVkaXQoKSk7CisKKyAgICByZXR1
cm4gc3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9EZWZhdWx0RnJhbWVXaWR0aCwgMCwg
bV9saW5lRWRpdC5kYXRhKCkpOworfQorCitpbnQgUVN0eWxlRmFjYWRlSW1wOjpzaW1wbGVQaXhl
bE1ldHJpYyhRU3R5bGVGYWNhZGU6OlBpeGVsTWV0cmljIG1ldHJpYywgU3RhdGUgc3RhdGUpIGNv
bnN0Cit7CisgICAgUVN0eWxlT3B0aW9uIG9wdDsKKyAgICBvcHQuc3RhdGUgPSBjb252ZXJ0VG9R
U3R5bGVTdGF0ZShzdGF0ZSk7CisgICAgcmV0dXJuIHN0eWxlKCktPnBpeGVsTWV0cmljKGNvbnZl
cnRQaXhlbE1ldHJpYyhtZXRyaWMpLCAmb3B0LCAwKTsKK30KKworaW50IFFTdHlsZUZhY2FkZUlt
cDo6YnV0dG9uTWFyZ2luKFN0YXRlIHN0YXRlLCBjb25zdCBRUmVjdCYgb3JpZ2luYWxSZWN0KSBj
b25zdAoreworICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBzdHlsZU9wdGlvbjsKKyAgICBzdHlsZU9w
dGlvbi5zdGF0ZSA9IGNvbnZlcnRUb1FTdHlsZVN0YXRlKHN0YXRlKTsKKyAgICBzdHlsZU9wdGlv
bi5yZWN0ID0gb3JpZ2luYWxSZWN0OworICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJpYyhR
U3R5bGU6OlBNX0J1dHRvbk1hcmdpbiwgJnN0eWxlT3B0aW9uLCAwKTsKK30KKworaW50IFFTdHls
ZUZhY2FkZUltcDo6c2xpZGVyTGVuZ3RoKFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgY29u
c3QKK3sKKyAgICBRU3R5bGVPcHRpb25TbGlkZXIgb3B0OworICAgIG9wdC5vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOworICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJpYyhRU3R5bGU6OlBN
X1NsaWRlckxlbmd0aCwgJm9wdCk7Cit9CisKK2ludCBRU3R5bGVGYWNhZGVJbXA6OnNsaWRlclRo
aWNrbmVzcyhRdDo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0Cit7CisgICAgUVN0eWxl
T3B0aW9uU2xpZGVyIG9wdDsKKyAgICBvcHQub3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKKyAg
ICByZXR1cm4gc3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9TbGlkZXJUaGlja25lc3Ms
ICZvcHQpOworfQorCitpbnQgUVN0eWxlRmFjYWRlSW1wOjpwcm9ncmVzc0JhckNodW5rV2lkdGgo
Y29uc3QgUVNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgUVN0eWxlT3B0aW9uUHJvZ3Jlc3NCYXJW
MiBvcHRpb247CisgICAgb3B0aW9uLnJlY3Quc2V0U2l6ZShzaXplKTsKKyAgICAvLyBGSVhNRTog
VW50aWwgaHR0cDovL2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dzZS9RVEJVRy05MTcxIGlz
IGZpeGVkLAorICAgIC8vIHdlIHNpbXVsYXRlIG9uZSBzcXVhcmUgYW5pbWF0aW5nIGFjcm9zcyB0
aGUgcHJvZ3Jlc3MgYmFyLgorICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJpYyhRU3R5bGU6
OlBNX1Byb2dyZXNzQmFyQ2h1bmtXaWR0aCwgJm9wdGlvbik7Cit9CisKK3ZvaWQgUVN0eWxlRmFj
YWRlSW1wOjpnZXRCdXR0b25NZXRyaWNzKFFTdHJpbmcgKmJ1dHRvbkZvbnRGYW1pbHksIGludCAq
YnV0dG9uRm9udFBpeGVsU2l6ZSkgY29uc3QKK3sKKyAgICBRUHVzaEJ1dHRvbiBidXR0b247Cisg
ICAgUUZvbnQgZGVmYXVsdEJ1dHRvbkZvbnQgPSBRQXBwbGljYXRpb246OmZvbnQoJmJ1dHRvbik7
CisgICAgKmJ1dHRvbkZvbnRGYW1pbHkgPSBkZWZhdWx0QnV0dG9uRm9udC5mYW1pbHkoKTsKKyAg
ICAqYnV0dG9uRm9udFBpeGVsU2l6ZSA9IDA7CisjaWZkZWYgUV9PU19NQUMKKyAgICBidXR0b24u
c2V0QXR0cmlidXRlKFF0OjpXQV9NYWNTbWFsbFNpemUpOworICAgIFFGb250SW5mbyBmb250SW5m
byhkZWZhdWx0QnV0dG9uRm9udCk7CisgICAgKmJ1dHRvbkZvbnRQaXhlbFNpemUgPSBmb250SW5m
by5waXhlbFNpemUoKTsKKyNlbmRpZgorfQorCitRU2l6ZSBRU3R5bGVGYWNhZGVJbXA6OmNvbWJv
Qm94U2l6ZUZyb21Db250ZW50cyhTdGF0ZSBzdGF0ZSwgY29uc3QgUVNpemUmIGNvbnRlbnRzU2l6
ZSkgY29uc3QKK3sKKyAgICBRU3R5bGVPcHRpb25Db21ib0JveCBvcHQ7CisgICAgb3B0LnN0YXRl
ID0gY29udmVydFRvUVN0eWxlU3RhdGUoc3RhdGUpOworICAgIHJldHVybiBzdHlsZSgpLT5zaXpl
RnJvbUNvbnRlbnRzKFFTdHlsZTo6Q1RfQ29tYm9Cb3gsICZvcHQsIGNvbnRlbnRzU2l6ZSk7Cit9
CisKK1FTaXplIFFTdHlsZUZhY2FkZUltcDo6cHVzaEJ1dHRvblNpemVGcm9tQ29udGVudHMoU3Rh
dGUgc3RhdGUsIGNvbnN0IFFTaXplJiBjb250ZW50c1NpemUpIGNvbnN0Cit7CisgICAgUVN0eWxl
T3B0aW9uQnV0dG9uIG9wdDsKKyAgICBvcHQuc3RhdGUgPSBjb252ZXJ0VG9RU3R5bGVTdGF0ZShz
dGF0ZSk7CisgICAgcmV0dXJuIHN0eWxlKCktPnNpemVGcm9tQ29udGVudHMoUVN0eWxlOjpDVF9Q
dXNoQnV0dG9uLCAmb3B0LCBjb250ZW50c1NpemUpOworfQorCit2b2lkIFFTdHlsZUZhY2FkZUlt
cDo6cGFpbnRCdXR0b24oUVBhaW50ZXIqIHBhaW50ZXIsIFFTdHlsZUZhY2FkZTo6QnV0dG9uVHlw
ZSB0eXBlLCBjb25zdCBRU3R5bGVGYWNhZGVPcHRpb24gJnByb3h5T3B0aW9uKQoreworICAgIFFX
aWRnZXQqIHdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4od2lkZ2V0Rm9yUGFpbnRlcihw
YWludGVyKSk7CisgICAgTWFwcGVkU3R5bGVPcHRpb248UVN0eWxlT3B0aW9uQnV0dG9uPiBvcHRp
b24od2lkZ2V0LCBwcm94eU9wdGlvbik7CisKKyAgICBpZiAodHlwZSA9PSBQdXNoQnV0dG9uKQor
ICAgICAgICBzdHlsZSgpLT5kcmF3Q29udHJvbChRU3R5bGU6OkNFX1B1c2hCdXR0b24sICZvcHRp
b24sIHBhaW50ZXIsIHdpZGdldCk7CisgICAgZWxzZSBpZiAodHlwZSA9PSBSYWRpb0J1dHRvbikK
KyAgICAgICAgc3R5bGUoKS0+ZHJhd0NvbnRyb2woUVN0eWxlOjpDRV9SYWRpb0J1dHRvbiwgJm9w
dGlvbiwgcGFpbnRlciwgd2lkZ2V0KTsKKyAgICBlbHNlIGlmICh0eXBlID09IENoZWNrQm94KQor
ICAgICAgICBzdHlsZSgpLT5kcmF3Q29udHJvbChRU3R5bGU6OkNFX0NoZWNrQm94LCAmb3B0aW9u
LCBwYWludGVyLCB3aWRnZXQpOworfQorCit2b2lkIFFTdHlsZUZhY2FkZUltcDo6cGFpbnRUZXh0
RmllbGQoUVBhaW50ZXIgKnBhaW50ZXIsIGNvbnN0IFFTdHlsZUZhY2FkZU9wdGlvbiAmcHJveHlP
cHRpb24pCit7CisgICAgUVdpZGdldCogd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPih3
aWRnZXRGb3JQYWludGVyKHBhaW50ZXIpKTsKKworICAgIE1hcHBlZFN0eWxlT3B0aW9uPFFTdHls
ZU9wdGlvbkZyYW1lVjI+IHBhbmVsKHdpZGdldCwgcHJveHlPcHRpb24pOworCisgICAgcGFuZWwu
bGluZVdpZHRoID0gZmluZEZyYW1lTGluZVdpZHRoKCk7CisgICAgcGFuZWwuZmVhdHVyZXMgPSBR
U3R5bGVPcHRpb25GcmFtZVYyOjpOb25lOworCisgICAgc3R5bGUoKS0+ZHJhd1ByaW1pdGl2ZShR
U3R5bGU6OlBFX1BhbmVsTGluZUVkaXQsICZwYW5lbCwgcGFpbnRlciwgd2lkZ2V0KTsKK30KKwor
dm9pZCBRU3R5bGVGYWNhZGVJbXA6OnBhaW50Q29tYm9Cb3goUVBhaW50ZXIgKnBhaW50ZXIsIGNv
bnN0IFFTdHlsZUZhY2FkZU9wdGlvbiAmcHJveHlPcHRpb24pCit7CisgICAgUVdpZGdldCogd2lk
Z2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPih3aWRnZXRGb3JQYWludGVyKHBhaW50ZXIpKTsK
KworICAgIE1hcHBlZFN0eWxlT3B0aW9uPFFTdHlsZU9wdGlvbkNvbWJvQm94PiBvcHQod2lkZ2V0
LCBwcm94eU9wdGlvbik7CisKKyAgICBRUmVjdCByZWN0ID0gb3B0LnJlY3Q7CisKKyNpZiBkZWZp
bmVkKFFfT1NfTUFDKSAmJiAhZGVmaW5lZChRVF9OT19TVFlMRV9NQUMpCisgICAgLy8gUU1hY1N0
eWxlIG1ha2VzIHRoZSBjb21ibyBib3hlcyBhIGxpdHRsZSBiaXQgc21hbGxlciB0byBsZWF2ZSBz
cGFjZSBmb3IgdGhlIGZvY3VzIHJlY3QuCisgICAgLy8gQmVjYXVzZSBvZiBpdCwgdGhlIGNvbWJv
IGJ1dHRvbiBpcyBkcmF3biBhdCBhIHBvaW50IHRvIHRoZSBsZWZ0IG9mIHdoZXJlIGl0IHdhcyBl
eHBlY3QgdG8gYmUgYW5kIG1heSBlbmQgdXAKKyAgICAvLyBvdmVybGFwcGVkIHdpdGggdGhlIHRl
eHQuIFRoaXMgd2lsbCBmb3JjZSBRTWFjU3R5bGUgdG8gZHJhdyB0aGUgY29tYm8gYm94IHdpdGgg
dGhlIGV4cGVjdGVkIHdpZHRoLgorICAgIGlmIChtX3N0eWxlLT5pbmhlcml0cygiUU1hY1N0eWxl
IikpIHsKKyAgICAgICAgcmVjdC5zZXRYKHJlY3QueCgpIC0gMyk7CisgICAgICAgIHJlY3Quc2V0
V2lkdGgocmVjdC53aWR0aCgpICsgMiAqIDMpOworICAgIH0KKyNlbmRpZgorCisgICAgcGFpbnRl
ci0+dHJhbnNsYXRlKHJlY3QudG9wTGVmdCgpKTsKKyAgICBvcHQucmVjdC5tb3ZlVG8oUVBvaW50
KDAsIDApKTsKKyAgICBvcHQucmVjdC5zZXRTaXplKHJlY3Quc2l6ZSgpKTsKKworICAgIHN0eWxl
KCktPmRyYXdDb21wbGV4Q29udHJvbChRU3R5bGU6OkNDX0NvbWJvQm94LCAmb3B0LCBwYWludGVy
LCB3aWRnZXQpOworICAgIHBhaW50ZXItPnRyYW5zbGF0ZSgtcmVjdC50b3BMZWZ0KCkpOworfQor
Cit2b2lkIFFTdHlsZUZhY2FkZUltcDo6cGFpbnRDb21ib0JveEFycm93KFFQYWludGVyICpwYWlu
dGVyLCBjb25zdCBRU3R5bGVGYWNhZGVPcHRpb24gJnByb3h5T3B0aW9uKQoreworICAgIFFXaWRn
ZXQqIHdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4od2lkZ2V0Rm9yUGFpbnRlcihwYWlu
dGVyKSk7CisKKyAgICBNYXBwZWRTdHlsZU9wdGlvbjxRU3R5bGVPcHRpb25Db21ib0JveD4gb3B0
KHdpZGdldCwgcHJveHlPcHRpb24pOworICAgIG9wdC5zdWJDb250cm9scyA9IFFTdHlsZTo6U0Nf
Q29tYm9Cb3hBcnJvdzsKKyAgICAvLyBmb3IgZHJhd2luZyB0aGUgY29tYm8gYm94IGFycm93LCBy
ZWx5IG9ubHkgb24gdGhlIGZhbGxiYWNrIHN0eWxlCisgICAgbV9mYWxsYmFja1N0eWxlLT5kcmF3
Q29tcGxleENvbnRyb2woUVN0eWxlOjpDQ19Db21ib0JveCwgJm9wdCwgcGFpbnRlciwgd2lkZ2V0
KTsKK30KKwordm9pZCBRU3R5bGVGYWNhZGVJbXA6OnBhaW50U2xpZGVyVHJhY2soUVBhaW50ZXIq
IHBhaW50ZXIsIGNvbnN0IFFTdHlsZUZhY2FkZU9wdGlvbiYgcHJveHlPcHRpb24pCit7CisgICAg
UVdpZGdldCogd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPih3aWRnZXRGb3JQYWludGVy
KHBhaW50ZXIpKTsKKworICAgIE1hcHBlZFN0eWxlT3B0aW9uPFFTdHlsZU9wdGlvblNsaWRlcj4g
b3B0aW9uKHdpZGdldCwgcHJveHlPcHRpb24pOworICAgIG9wdGlvbi5zdWJDb250cm9scyA9IFFT
dHlsZTo6U0NfU2xpZGVyR3Jvb3ZlOworCisgICAgb3B0aW9uLnVwc2lkZURvd24gPSBwcm94eU9w
dGlvbi5zbGlkZXIudXBzaWRlRG93bjsKKyAgICBvcHRpb24ubWluaW11bSA9IHByb3h5T3B0aW9u
LnNsaWRlci5taW5pbXVtOworICAgIG9wdGlvbi5tYXhpbXVtID0gcHJveHlPcHRpb24uc2xpZGVy
Lm1heGltdW07CisgICAgb3B0aW9uLnNsaWRlclBvc2l0aW9uID0gcHJveHlPcHRpb24uc2xpZGVy
LnBvc2l0aW9uOworICAgIG9wdGlvbi5vcmllbnRhdGlvbiA9IHByb3h5T3B0aW9uLnNsaWRlci5v
cmllbnRhdGlvbjsKKworICAgIHN0eWxlKCktPmRyYXdDb21wbGV4Q29udHJvbChRU3R5bGU6OkND
X1NsaWRlciwgJm9wdGlvbiwgcGFpbnRlciwgd2lkZ2V0KTsKKworICAgIGlmIChvcHRpb24uc3Rh
dGUgJiBRU3R5bGU6OlN0YXRlX0hhc0ZvY3VzKSB7CisgICAgICAgIFFTdHlsZU9wdGlvbkZvY3Vz
UmVjdCBmb2N1c09wdGlvbjsKKyAgICAgICAgZm9jdXNPcHRpb24ucmVjdCA9IG9wdGlvbi5yZWN0
OworICAgICAgICBzdHlsZSgpLT5kcmF3UHJpbWl0aXZlKFFTdHlsZTo6UEVfRnJhbWVGb2N1c1Jl
Y3QsICZmb2N1c09wdGlvbiwgcGFpbnRlciwgd2lkZ2V0KTsKKyAgICB9Cit9CisKK3ZvaWQgUVN0
eWxlRmFjYWRlSW1wOjpwYWludFNsaWRlclRodW1iKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBR
U3R5bGVGYWNhZGVPcHRpb24mIHByb3h5T3B0aW9uKQoreworICAgIFFXaWRnZXQqIHdpZGdldCA9
IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4od2lkZ2V0Rm9yUGFpbnRlcihwYWludGVyKSk7CisKKyAg
ICBNYXBwZWRTdHlsZU9wdGlvbjxRU3R5bGVPcHRpb25TbGlkZXI+IG9wdGlvbih3aWRnZXQsIHBy
b3h5T3B0aW9uKTsKKworICAgIG9wdGlvbi5zdWJDb250cm9scyA9IFFTdHlsZTo6U0NfU2xpZGVy
SGFuZGxlOworICAgIGlmIChvcHRpb24uc3RhdGUgJiBRU3R5bGU6OlN0YXRlX1N1bmtlbikKKyAg
ICAgICAgb3B0aW9uLmFjdGl2ZVN1YkNvbnRyb2xzID0gUVN0eWxlOjpTQ19TbGlkZXJIYW5kbGU7
CisKKyAgICBzdHlsZSgpLT5kcmF3Q29tcGxleENvbnRyb2woUVN0eWxlOjpDQ19TbGlkZXIsICZv
cHRpb24sIHBhaW50ZXIsIHdpZGdldCk7Cit9CisKK3ZvaWQgUVN0eWxlRmFjYWRlSW1wOjpwYWlu
dElubmVyU3BpbkJ1dHRvbihRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlRmFjYWRlT3B0
aW9uJiBwcm94eU9wdGlvbiwgYm9vbCBzcGluQm94VXApCit7CisgICAgUVdpZGdldCogd2lkZ2V0
ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPih3aWRnZXRGb3JQYWludGVyKHBhaW50ZXIpKTsKKwor
ICAgIE1hcHBlZFN0eWxlT3B0aW9uPFFTdHlsZU9wdGlvblNwaW5Cb3g+IG9wdGlvbih3aWRnZXQs
IHByb3h5T3B0aW9uKTsKKworICAgIG9wdGlvbi5zdWJDb250cm9scyA9IFFTdHlsZTo6U0NfU3Bp
bkJveFVwIHwgUVN0eWxlOjpTQ19TcGluQm94RG93bjsKKyAgICBpZiAoIShvcHRpb24uc3RhdGUg
JiBRU3R5bGU6OlN0YXRlX1JlYWRPbmx5KSkgeworICAgICAgICBpZiAob3B0aW9uLnN0YXRlICYg
UVN0eWxlOjpTdGF0ZV9FbmFibGVkKQorICAgICAgICAgICAgb3B0aW9uLnN0ZXBFbmFibGVkID0g
UUFic3RyYWN0U3BpbkJveDo6U3RlcFVwRW5hYmxlZCB8IFFBYnN0cmFjdFNwaW5Cb3g6OlN0ZXBE
b3duRW5hYmxlZDsKKyAgICAgICAgaWYgKG9wdGlvbi5zdGF0ZSAmIFFTdHlsZTo6U3RhdGVfU3Vu
a2VuKSB7CisgICAgICAgICAgICBpZiAoc3BpbkJveFVwKQorICAgICAgICAgICAgICAgIG9wdGlv
bi5hY3RpdmVTdWJDb250cm9scyA9IFFTdHlsZTo6U0NfU3BpbkJveFVwOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIG9wdGlvbi5hY3RpdmVTdWJDb250cm9scyA9IFFTdHlsZTo6
U0NfU3BpbkJveERvd247CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRUmVjdCBidXR0b25SZWN0
ID0gb3B0aW9uLnJlY3Q7CisgICAgLy8gRGVmYXVsdCB0byBtb3ZpbmcgdGhlIGJ1dHRvbnMgYSBs
aXR0bGUgYml0IHdpdGhpbiB0aGUgZWRpdG9yIGZyYW1lLgorICAgIGludCBpbmZsYXRlWCA9IC0y
OworICAgIGludCBpbmZsYXRlWSA9IC0yOworI2lmIGRlZmluZWQoUV9PU19NQUMpICYmICFkZWZp
bmVkKFFUX05PX1NUWUxFX01BQykKKyAgICAvLyBRTWFjU3R5bGUgd2lsbCBwb3NpdGlvbiB0aGUg
YXF1YSBidXR0b25zIGZsdXNoIHRvIHRoZSByaWdodC4KKyAgICAvLyBUaGlzIHdpbGwgbW92ZSB0
aGVtIG1vcmUgd2l0aGluIHRoZSBjb250cm9sIGZvciBiZXR0ZXIgc3R5bGUsIGEgbGEKKyAgICAv
LyBDaHJvbWl1bSBsb29rICYgZmVlbC4KKyAgICBpZiAobV9zdHlsZS0+aW5oZXJpdHMoIlFNYWNT
dHlsZSIpKSB7CisgICAgICAgIGluZmxhdGVYID0gLTQ7CisgICAgICAgIC8vIFJlbmRlciBtaW5p
IGFxdWEgc3BpbiBidXR0b25zIGZvciBRTWFjU3R5bGUgdG8gZml0IG5pY2VseSBpbnRvCisgICAg
ICAgIC8vIHRoZSBlZGl0b3IgYXJlYSwgbGlrZSBDaHJvbWl1bS4KKyAgICAgICAgb3B0aW9uLnN0
YXRlIHw9IFFTdHlsZTo6U3RhdGVfTWluaTsKKyAgICB9CisjZW5kaWYKKworICAgIGJ1dHRvblJl
Y3Quc2V0WChidXR0b25SZWN0LngoKSAtIGluZmxhdGVYKTsKKyAgICBidXR0b25SZWN0LnNldFdp
ZHRoKGJ1dHRvblJlY3Qud2lkdGgoKSArIDIgKiBpbmZsYXRlWCk7CisgICAgYnV0dG9uUmVjdC5z
ZXRZKGJ1dHRvblJlY3QueSgpIC0gaW5mbGF0ZVkpOworICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0
KGJ1dHRvblJlY3QuaGVpZ2h0KCkgKyAyICogaW5mbGF0ZVkpOworICAgIG9wdGlvbi5yZWN0ID0g
YnV0dG9uUmVjdDsKKworICAgIHN0eWxlKCktPmRyYXdDb21wbGV4Q29udHJvbChRU3R5bGU6OkND
X1NwaW5Cb3gsICZvcHRpb24sIHBhaW50ZXIsIHdpZGdldCk7Cit9CisKK3ZvaWQgUVN0eWxlRmFj
YWRlSW1wOjpwYWludFByb2dyZXNzQmFyKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVG
YWNhZGVPcHRpb24mIHByb3h5T3B0aW9uLCBkb3VibGUgcHJvZ3Jlc3MsIGRvdWJsZSBhbmltYXRp
b25Qcm9ncmVzcykKK3sKKyAgICBRV2lkZ2V0KiB3aWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UVdpZGdl
dCo+KHdpZGdldEZvclBhaW50ZXIocGFpbnRlcikpOworCisgICAgTWFwcGVkU3R5bGVPcHRpb248
UVN0eWxlT3B0aW9uUHJvZ3Jlc3NCYXJWMj4gb3B0aW9uKHdpZGdldCwgcHJveHlPcHRpb24pOwor
CisgICAgb3B0aW9uLm1heGltdW0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwor
ICAgIG9wdGlvbi5taW5pbXVtID0gMDsKKyAgICBvcHRpb24ucHJvZ3Jlc3MgPSBwcm9ncmVzcyAq
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisKKyAgICBjb25zdCBRUG9pbnQgdG9w
TGVmdCA9IG9wdGlvbi5yZWN0LnRvcExlZnQoKTsKKyAgICBwYWludGVyLT50cmFuc2xhdGUodG9w
TGVmdCk7CisgICAgb3B0aW9uLnJlY3QubW92ZVRvKFFQb2ludCgwLCAwKSk7CisKKyAgICBpZiAo
cHJvZ3Jlc3MgPCAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBVbnRpbCBodHRwOi8vYnVncmVwb3J0
cy5xdC5ub2tpYS5jb20vYnJvd3NlL1FUQlVHLTkxNzEgaXMgZml4ZWQsCisgICAgICAgIC8vIHdl
IHNpbXVsYXRlIG9uZSBzcXVhcmUgYW5pbWF0aW5nIGFjcm9zcyB0aGUgcHJvZ3Jlc3MgYmFyLgor
ICAgICAgICBzdHlsZSgpLT5kcmF3Q29udHJvbChRU3R5bGU6OkNFX1Byb2dyZXNzQmFyR3Jvb3Zl
LCAmb3B0aW9uLCBwYWludGVyLCB3aWRnZXQpOworICAgICAgICBpbnQgY2h1bmtXaWR0aCA9IHN0
eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fUHJvZ3Jlc3NCYXJDaHVua1dpZHRoLCAmb3B0
aW9uKTsKKyAgICAgICAgUUNvbG9yIGNvbG9yID0gKG9wdGlvbi5wYWxldHRlLmhpZ2hsaWdodCgp
ID09IG9wdGlvbi5wYWxldHRlLmJhY2tncm91bmQoKSkgPyBvcHRpb24ucGFsZXR0ZS5jb2xvcihR
UGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0KSA6IG9wdGlvbi5wYWxldHRlLmNv
bG9yKFFQYWxldHRlOjpIaWdobGlnaHQpOworICAgICAgICBpZiAob3B0aW9uLmRpcmVjdGlvbiA9
PSBRdDo6UmlnaHRUb0xlZnQpCisgICAgICAgICAgICBwYWludGVyLT5maWxsUmVjdChvcHRpb24u
cmVjdC5yaWdodCgpIC0gY2h1bmtXaWR0aCAgLSBhbmltYXRpb25Qcm9ncmVzcyAqIG9wdGlvbi5y
ZWN0LndpZHRoKCksIDAsIGNodW5rV2lkdGgsIG9wdGlvbi5yZWN0LmhlaWdodCgpLCBjb2xvcik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhaW50ZXItPmZpbGxSZWN0KGFuaW1hdGlvblBy
b2dyZXNzICogb3B0aW9uLnJlY3Qud2lkdGgoKSwgMCwgY2h1bmtXaWR0aCwgb3B0aW9uLnJlY3Qu
aGVpZ2h0KCksIGNvbG9yKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3R5bGUoKS0+ZHJhd0NvbnRy
b2woUVN0eWxlOjpDRV9Qcm9ncmVzc0JhciwgJm9wdGlvbiwgcGFpbnRlciwgd2lkZ2V0KTsKKwor
ICAgIHBhaW50ZXItPnRyYW5zbGF0ZSgtdG9wTGVmdCk7Cit9CisKK2ludCBRU3R5bGVGYWNhZGVJ
bXA6OnNjcm9sbEJhckV4dGVudChib29sIG1pbmkpCit7CisgICAgUVN0eWxlT3B0aW9uU2xpZGVy
IG87CisgICAgby5vcmllbnRhdGlvbiA9IFF0OjpWZXJ0aWNhbDsKKyAgICBvLnN0YXRlICY9IH5R
U3R5bGU6OlN0YXRlX0hvcml6b250YWw7CisgICAgaWYgKG1pbmkpCisgICAgICAgIG8uc3RhdGUg
fD0gUVN0eWxlOjpTdGF0ZV9NaW5pOworICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJpYyhR
U3R5bGU6OlBNX1Njcm9sbEJhckV4dGVudCwgJm8sIDApOworfQorCitib29sIFFTdHlsZUZhY2Fk
ZUltcDo6c2Nyb2xsQmFyTWlkZGxlQ2xpY2tBYnNvbHV0ZVBvc2l0aW9uU3R5bGVIaW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc3R5bGUoKS0+c3R5bGVIaW50KFFTdHlsZTo6U0hfU2Nyb2xsQmFy
X01pZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvbik7Cit9CisKK3ZvaWQgUVN0eWxlRmFjYWRlSW1w
OjpwYWludFNjcm9sbENvcm5lcihRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIHJlY3Qp
Cit7CisgICAgUVdpZGdldCogd2lkZ2V0ID0gcW9iamVjdF9jYXN0PFFXaWRnZXQqPih3aWRnZXRG
b3JQYWludGVyKHBhaW50ZXIpKTsKKworICAgIFFTdHlsZU9wdGlvbiBvcHRpb247CisgICAgb3B0
aW9uLnJlY3QgPSByZWN0OworICAgIHN0eWxlKCktPmRyYXdQcmltaXRpdmUoUVN0eWxlOjpQRV9Q
YW5lbFNjcm9sbEFyZWFDb3JuZXIsICZvcHRpb24sIHBhaW50ZXIsIHdpZGdldCk7Cit9CisKK1FT
dHlsZUZhY2FkZTo6U3ViQ29udHJvbCBRU3R5bGVGYWNhZGVJbXA6OmhpdFRlc3RTY3JvbGxCYXIo
Y29uc3QgUVN0eWxlRmFjYWRlT3B0aW9uICZwcm94eU9wdGlvbiwgY29uc3QgUVBvaW50ICZwb3Mp
Cit7CisgICAgTWFwcGVkU3R5bGVPcHRpb248UVN0eWxlT3B0aW9uU2xpZGVyPiBvcHQoMCwgcHJv
eHlPcHRpb24pOworICAgIFFTdHlsZTo6U3ViQ29udHJvbCBzYyA9IHN0eWxlKCktPmhpdFRlc3RD
b21wbGV4Q29udHJvbChRU3R5bGU6OkNDX1Njcm9sbEJhciwgJm9wdCwgcG9zLCAwKTsKKyAgICBy
ZXR1cm4gY29udmVydFRvUVN0eWxlRmFjYWRlU3ViQ29udHJvbChzYyk7Cit9CisKK1FSZWN0IFFT
dHlsZUZhY2FkZUltcDo6c2Nyb2xsQmFyU3ViQ29udHJvbFJlY3QoY29uc3QgUVN0eWxlRmFjYWRl
T3B0aW9uICZwcm94eU9wdGlvbiwgUVN0eWxlRmFjYWRlOjpTdWJDb250cm9sIHN1YkNvbnRyb2wp
Cit7CisgICAgTWFwcGVkU3R5bGVPcHRpb248UVN0eWxlT3B0aW9uU2xpZGVyPiBvcHQoMCwgcHJv
eHlPcHRpb24pOworICAgIHJldHVybiBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkND
X1Njcm9sbEJhciwgJm9wdCwgY29udmVydFRvUVN0eWxlU3ViQ29udHJvbChzdWJDb250cm9sKSwg
MCk7Cit9CisKK3ZvaWQgUVN0eWxlRmFjYWRlSW1wOjpwYWludFNjcm9sbEJhcihRUGFpbnRlciAq
cGFpbnRlciwgY29uc3QgUVN0eWxlRmFjYWRlT3B0aW9uICZwcm94eU9wdGlvbikKK3sKKyAgICBR
V2lkZ2V0KiB3aWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KHdpZGdldEZvclBhaW50ZXIo
cGFpbnRlcikpOworCisgICAgTWFwcGVkU3R5bGVPcHRpb248UVN0eWxlT3B0aW9uU2xpZGVyPiBv
cHQod2lkZ2V0LCBwcm94eU9wdGlvbik7CisKKyAgICBpZiAobV9zdHlsZS0+aW5oZXJpdHMoIlFN
YWNTdHlsZSIpKSB7CisgICAgICAgIC8vIEZJWE1FOiBEaXNhYmxlIHRyYW5zaWVudCBzY3JvbGxi
YXIgYW5pbWF0aW9ucyBvbiBPU1ggdG8gYXZvaWQgaGlkaW5nIHRoZSB3aG9sZSB3ZWJ2aWV3IHdp
dGggdGhlIHNjcm9sbGJhciBmYWRlIG91dCBhbmltYXRpb24uCisgICAgICAgIG9wdC5zdHlsZU9i
amVjdCA9IDA7CisgICAgfQorCisgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0LnJlY3QsIG9wdC5w
YWxldHRlLmJhY2tncm91bmQoKSk7CisKKyAgICBjb25zdCBRUG9pbnQgdG9wTGVmdCA9IG9wdC5y
ZWN0LnRvcExlZnQoKTsKKyAgICBwYWludGVyLT50cmFuc2xhdGUodG9wTGVmdCk7CisgICAgb3B0
LnJlY3QubW92ZVRvKFFQb2ludCgwLCAwKSk7CisgICAgc3R5bGUoKS0+ZHJhd0NvbXBsZXhDb250
cm9sKFFTdHlsZTo6Q0NfU2Nyb2xsQmFyLCAmb3B0LCBwYWludGVyLCB3aWRnZXQpOworICAgIG9w
dC5yZWN0Lm1vdmVUbyh0b3BMZWZ0KTsKK30KKworUU9iamVjdCogUVN0eWxlRmFjYWRlSW1wOjp3
aWRnZXRGb3JQYWludGVyKFFQYWludGVyKiBwYWludGVyKQoreworICAgIFFQYWludERldmljZSog
ZGV2ID0gMDsKKyAgICBpZiAocGFpbnRlcikKKyAgICAgICAgZGV2ID0gcGFpbnRlci0+ZGV2aWNl
KCk7CisgICAgaWYgKGRldiAmJiBkZXYtPmRldlR5cGUoKSA9PSBRSW50ZXJuYWw6OldpZGdldCkK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFFXaWRnZXQqPihkZXYpOworICAgIHJldHVybiAw
OworfQorCitRU3R5bGUqIFFTdHlsZUZhY2FkZUltcDo6c3R5bGUoKSBjb25zdAoreworICAgIGlm
IChtX3N0eWxlKQorICAgICAgICByZXR1cm4gbV9zdHlsZTsKKworICAgIGlmIChtX3BhZ2UpIHsK
KyAgICAgICAgaWYgKFFXZWJQYWdlQ2xpZW50KiBwYWdlQ2xpZW50ID0gbV9wYWdlLT5jbGllbnQu
ZGF0YSgpKQorICAgICAgICAgICAgbV9zdHlsZSA9IHBhZ2VDbGllbnQtPnN0eWxlKCk7CisgICAg
fQorCisgICAgaWYgKCFtX3N0eWxlKQorICAgICAgICBtX3N0eWxlID0gUUFwcGxpY2F0aW9uOjpz
dHlsZSgpOworCisgICAgcmV0dXJuIG1fc3R5bGU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RU3R5bGVGYWNhZGVJbXAuaCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2lkZ2V0U3VwcG9ydC9RU3R5bGVGYWNhZGVJbXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zZTY3N2FlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XaWRnZXRTdXBwb3J0L1FTdHlsZUZhY2FkZUltcC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8q
CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGhlbWUgaW1wbGVtZW50YXRpb24gZm9yIGZv
cm0gY29udHJvbHMgaW4gV2ViQ29yZS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEg
UGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZu
ZGVmIFFTdHlsZUZhY2FkZUltcF9oCisjZGVmaW5lIFFTdHlsZUZhY2FkZUltcF9oCisKKyNpbmNs
dWRlIDxRUG9pbnRlcj4KKyNpbmNsdWRlIDxRU3R5bGVGYWNhZGUuaD4KKworUVRfQkVHSU5fTkFN
RVNQQUNFCitjbGFzcyBRU3R5bGU7CitjbGFzcyBRTGluZUVkaXQ7CitjbGFzcyBRU3R5bGVPcHRp
b247CitjbGFzcyBRU3R5bGVPcHRpb25TbGlkZXI7CitjbGFzcyBRUGFpbnRlcjsKK2NsYXNzIFFP
YmplY3Q7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFXZWJQYWdlQWRhcHRlcjsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFFTdHlsZUZhY2FkZUltcCA6IHB1YmxpYyBXZWJDb3Jl
OjpRU3R5bGVGYWNhZGUgeworcHVibGljOgorICAgIFFTdHlsZUZhY2FkZUltcChRV2ViUGFnZUFk
YXB0ZXIqID0gMCk7CisgICAgdmlydHVhbCB+UVN0eWxlRmFjYWRlSW1wKCk7CisKKyAgICBzdGF0
aWMgV2ViQ29yZTo6UVN0eWxlRmFjYWRlKiBjcmVhdGUoUVdlYlBhZ2VBZGFwdGVyKiBwYWdlKQor
ICAgIHsgcmV0dXJuIG5ldyBRU3R5bGVGYWNhZGVJbXAocGFnZSk7IH0KKworICAgIHZpcnR1YWwg
UVJlY3QgYnV0dG9uU3ViRWxlbWVudFJlY3QoQnV0dG9uU3ViRWxlbWVudCwgU3RhdGUsIGNvbnN0
IFFSZWN0JiBvcmlnaW5hbFJlY3QpIGNvbnN0OworCisgICAgdmlydHVhbCBpbnQgZmluZEZyYW1l
TGluZVdpZHRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgc2ltcGxlUGl4ZWxNZXRyaWMoUGl4
ZWxNZXRyaWMsIFN0YXRlID0gU3RhdGVfTm9uZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQgYnV0
dG9uTWFyZ2luKFN0YXRlLCBjb25zdCBRUmVjdCYgb3JpZ2luYWxSZWN0KSBjb25zdDsKKyAgICB2
aXJ0dWFsIGludCBzbGlkZXJMZW5ndGgoUXQ6Ok9yaWVudGF0aW9uKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGludCBzbGlkZXJUaGlja25lc3MoUXQ6Ok9yaWVudGF0aW9uKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGludCBwcm9ncmVzc0JhckNodW5rV2lkdGgoY29uc3QgUVNpemUmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0QnV0dG9uTWV0cmljcyhRU3RyaW5nKiBidXR0b25Gb250RmFtaWx5LCBp
bnQqIGJ1dHRvbkZvbnRQaXhlbFNpemUpIGNvbnN0OworCisgICAgdmlydHVhbCBRU2l6ZSBjb21i
b0JveFNpemVGcm9tQ29udGVudHMoU3RhdGUsIGNvbnN0IFFTaXplJiBjb250ZW50c1NpemUpIGNv
bnN0OworICAgIHZpcnR1YWwgUVNpemUgcHVzaEJ1dHRvblNpemVGcm9tQ29udGVudHMoU3RhdGUs
IGNvbnN0IFFTaXplJiBjb250ZW50c1NpemUpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKFFQYWludGVyKiwgQnV0dG9uVHlwZSwgY29uc3QgV2ViQ29yZTo6UVN0eWxlRmFj
YWRlT3B0aW9uICZwcm94eU9wdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxk
KFFQYWludGVyKiwgY29uc3QgV2ViQ29yZTo6UVN0eWxlRmFjYWRlT3B0aW9uJik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29tYm9Cb3goUVBhaW50ZXIqLCBjb25zdCBXZWJDb3JlOjpRU3R5bGVG
YWNhZGVPcHRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb21ib0JveEFycm93KFFQYWlu
dGVyKiwgY29uc3QgV2ViQ29yZTo6UVN0eWxlRmFjYWRlT3B0aW9uJik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTbGlkZXJUcmFjayhRUGFpbnRlciosIGNvbnN0IFdlYkNvcmU6OlFTdHlsZUZh
Y2FkZU9wdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNsaWRlclRodW1iKFFQYWludGVy
KiwgY29uc3QgV2ViQ29yZTo6UVN0eWxlRmFjYWRlT3B0aW9uJik7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50SW5uZXJTcGluQnV0dG9uKFFQYWludGVyKiwgY29uc3QgV2ViQ29yZTo6UVN0eWxlRmFj
YWRlT3B0aW9uJiwgYm9vbCBzcGluQm94VXApOworICAgIHZpcnR1YWwgdm9pZCBwYWludFByb2dy
ZXNzQmFyKFFQYWludGVyKiwgY29uc3QgV2ViQ29yZTo6UVN0eWxlRmFjYWRlT3B0aW9uJiwgZG91
YmxlIHByb2dyZXNzLCBkb3VibGUgYW5pbWF0aW9uUHJvZ3Jlc3MpOworCisgICAgdmlydHVhbCBp
bnQgc2Nyb2xsQmFyRXh0ZW50KGJvb2wgbWluaSk7CisgICAgdmlydHVhbCBib29sIHNjcm9sbEJh
ck1pZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvblN0eWxlSGludCgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihRUGFpbnRlciosIGNvbnN0IFFSZWN0Jik7CisKKyAg
ICB2aXJ0dWFsIFN1YkNvbnRyb2wgaGl0VGVzdFNjcm9sbEJhcihjb25zdCBXZWJDb3JlOjpRU3R5
bGVGYWNhZGVPcHRpb24mLCBjb25zdCBRUG9pbnQmIHBvcyk7CisgICAgdmlydHVhbCBRUmVjdCBz
Y3JvbGxCYXJTdWJDb250cm9sUmVjdChjb25zdCBXZWJDb3JlOjpRU3R5bGVGYWNhZGVPcHRpb24m
LCBTdWJDb250cm9sKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxCYXIoUVBhaW50ZXIq
LCBjb25zdCBXZWJDb3JlOjpRU3R5bGVGYWNhZGVPcHRpb24mKTsKKworICAgIHZpcnR1YWwgUU9i
amVjdCogd2lkZ2V0Rm9yUGFpbnRlcihRUGFpbnRlciopOworCisgICAgdmlydHVhbCBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpOyB9CisKK3ByaXZhdGU6CisgICAgUVN0eWxl
KiBzdHlsZSgpIGNvbnN0OworCisgICAgUVdlYlBhZ2VBZGFwdGVyKiBtX3BhZ2U7CisgICAgbXV0
YWJsZSBRUG9pbnRlcjxRU3R5bGU+IG1fc3R5bGU7CisgICAgUVN0eWxlKiBtX2ZhbGxiYWNrU3R5
bGU7CisgICAgYm9vbCBtX293bkZhbGxiYWNrU3R5bGU7CisgICAgbXV0YWJsZSBRU2NvcGVkUG9p
bnRlcjxRTGluZUVkaXQ+IG1fbGluZUVkaXQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBRU3R5bGVG
YWNhZGVJbXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FX
ZWJVbmRvQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUVdlYlVu
ZG9Db21tYW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTk2ZGY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FXZWJV
bmRvQ29tbWFuZC5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJRV2ViVW5kb0NvbW1hbmQuaCIKKworI2luY2x1ZGUgIlVuZG9TdGVw
UXQuaCIKKworI2lmbmRlZiBRVF9OT19VTkRPQ09NTUFORAorUVdlYlVuZG9Db21tYW5kOjpRV2Vi
VW5kb0NvbW1hbmQoUVNoYXJlZFBvaW50ZXI8VW5kb1N0ZXBRdD4gdW5kb1N0ZXAsIFFVbmRvQ29t
bWFuZCogcGFyZW50KQorICAgIDogUVVuZG9Db21tYW5kKHBhcmVudCkKKyAgICAsIG1fc3RlcCh1
bmRvU3RlcCkKK3sKKyAgICBRX0FTU0VSVCh1bmRvU3RlcCk7CisgICAgc2V0VGV4dChtX3N0ZXAt
PnRleHQoKSk7Cit9CisKK3ZvaWQgUVdlYlVuZG9Db21tYW5kOjp1bmRvKCkKK3sKKyAgICBtX3N0
ZXAtPnVuZG8oKTsKK30KKwordm9pZCBRV2ViVW5kb0NvbW1hbmQ6OnJlZG8oKQoreworICAgIG1f
c3RlcC0+cmVkbygpOworfQorCisjZW5kaWYgLy8gUVRfTk9fVU5ET0NPTU1BTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RV2ViVW5kb0NvbW1hbmQuaCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RV2ViVW5kb0NvbW1hbmQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTYxMjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FXZWJVbmRvQ29tbWFuZC5oCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisjaWZuZGVmIFFXZWJVbmRvQ29tbWFuZF9oCisjZGVmaW5lIFFXZWJV
bmRvQ29tbWFuZF9oCisKKyNpbmNsdWRlIDxxc2hhcmVkcG9pbnRlci5oPgorI2luY2x1ZGUgPHF1
bmRvc3RhY2suaD4KKworY2xhc3MgVW5kb1N0ZXBRdDsKKworI2lmbmRlZiBRVF9OT19VTkRPQ09N
TUFORAorCitjbGFzcyBRV2ViVW5kb0NvbW1hbmQgOiBwdWJsaWMgUVVuZG9Db21tYW5kIHsKK3B1
YmxpYzoKKyAgICBRV2ViVW5kb0NvbW1hbmQoUVNoYXJlZFBvaW50ZXI8VW5kb1N0ZXBRdD4sIFFV
bmRvQ29tbWFuZCAqcGFyZW50ID0gMCk7CisKKyAgICB2b2lkIHVuZG8oKTsKKyAgICB2b2lkIHJl
ZG8oKTsKKworcHJpdmF0ZToKKyAgICBRU2hhcmVkUG9pbnRlcjxVbmRvU3RlcFF0PiBtX3N0ZXA7
Cit9OworCisjZW5kaWYgLy8gUVRfTk9fVU5ET0NPTU1BTkQKKworI2VuZGlmIC8vIFFXZWJVbmRv
Q29tbWFuZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUVdp
ZGdldFBsdWdpbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FXaWRn
ZXRQbHVnaW5JbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmVh
YmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FX
aWRnZXRQbHVnaW5JbXBsLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIERpZ2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUVdpZGdldFBsdWdpbkltcGwuaCIKKworI2luY2x1ZGUg
PFFXaWRnZXQ+CisKK1FXaWRnZXRQbHVnaW5JbXBsOjp+UVdpZGdldFBsdWdpbkltcGwoKQorewor
ICAgIG1fd2lkZ2V0LT5kZWxldGVMYXRlcigpOworfQorCit2b2lkIFFXaWRnZXRQbHVnaW5JbXBs
Ojp1cGRhdGUoY29uc3QgUVJlY3QgJnJlY3QpCit7CisgICAgbV93aWRnZXQtPnVwZGF0ZShyZWN0
KTsKK30KKwordm9pZCBRV2lkZ2V0UGx1Z2luSW1wbDo6c2V0R2VvbWV0cnlBbmRDbGlwKGNvbnN0
IFFSZWN0ICZnZW9tZXRyeSwgY29uc3QgUVJlY3QgJmNsaXBSZWN0LCBib29sIGlzVmlzaWJsZSkK
K3sKKyAgICBtX3dpZGdldC0+c2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworICAgIGlmICghY2xpcFJl
Y3QuaXNOdWxsKCkpIHsKKyAgICAgICAgUVJlY3QgY2xpcChjbGlwUmVjdC5pbnRlcnNlY3RlZCht
X3dpZGdldC0+cmVjdCgpKSk7CisgICAgICAgIG1fd2lkZ2V0LT5zZXRNYXNrKFFSZWdpb24oY2xp
cCkpOworICAgIH0KKyAgICBtX3dpZGdldC0+dXBkYXRlKCk7CisgICAgc2V0VmlzaWJsZShpc1Zp
c2libGUpOworfQorCit2b2lkIFFXaWRnZXRQbHVnaW5JbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlz
aWJsZSkKK3sKKyAgICAvLyBJZiBzZXRNYXNrIGlzIHNldCB3aXRoIGFuIGVtcHR5IFFSZWdpb24s
IG5vIGNsaXBwaW5nIHdpbGwKKyAgICAvLyBiZSBwZXJmb3JtZWQsIHNvIGluIHRoYXQgY2FzZSB3
ZSBoaWRlIHRoZSBwbGF0Zm9ybVdpZGdldC4KKyAgICBRUmVnaW9uIG1hc2sgPSBtX3dpZGdldC0+
bWFzaygpOworICAgIG1fd2lkZ2V0LT5zZXRWaXNpYmxlKHZpc2libGUgJiYgIW1hc2suaXNFbXB0
eSgpKTsKK30KKwordm9pZCBRV2lkZ2V0UGx1Z2luSW1wbDo6c2V0U3R5bGVTaGVldChjb25zdCBR
U3RyaW5nICZzdHlsZXNoZWV0KQoreworICAgIG1fd2lkZ2V0LT5zZXRTdHlsZVNoZWV0KHN0eWxl
c2hlZXQpOworfQorCit2b2lkIFFXaWRnZXRQbHVnaW5JbXBsOjpzZXRXaWRnZXRQYXJlbnQoUU9i
amVjdCAqcGFyZW50KQoreworICAgIGlmICghcGFyZW50LT5pc1dpZGdldFR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fd2lkZ2V0LT5zZXRQYXJlbnQocW9iamVjdF9jYXN0PFFXaWRnZXQq
PihwYXJlbnQpKTsKK30KKworUU9iamVjdCogUVdpZGdldFBsdWdpbkltcGw6OmhhbmRsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2lkZ2V0OworfQorCisjaW5jbHVkZSAibW9jX1FXaWRnZXRQ
bHVnaW5JbXBsLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9y
dC9RV2lkZ2V0UGx1Z2luSW1wbC5oIGIvU291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1FX
aWRnZXRQbHVnaW5JbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ1
OWI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9R
V2lkZ2V0UGx1Z2luSW1wbC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFFX
aWRnZXRQbHVnaW5JbXBsX2gKKyNkZWZpbmUgUVdpZGdldFBsdWdpbkltcGxfaAorCisjaW5jbHVk
ZSAiUXRQbHVnaW5XaWRnZXRBZGFwdGVyLmgiCisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3Mg
UVdpZGdldDsKK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3MgUVdpZGdldFBsdWdpbkltcGwgOiBw
dWJsaWMgUXRQbHVnaW5XaWRnZXRBZGFwdGVyIHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAg
IFFXaWRnZXRQbHVnaW5JbXBsKFFXaWRnZXQgKncpIDogbV93aWRnZXQodykgeyB9CisgICAgdmly
dHVhbCB+UVdpZGdldFBsdWdpbkltcGwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0
IFFSZWN0ICYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRHZW9tZXRyeUFuZENsaXAo
Y29uc3QgUVJlY3QmLCBjb25zdCBRUmVjdCYsIGJvb2wgaXNWaXNpYmxlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U3R5bGVTaGVldChjb25zdCBRU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFdpZGdldFBhcmVudChRT2JqZWN0ICopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUU9i
amVjdCogaGFuZGxlKCkgY29uc3QgT1ZFUlJJREU7Citwcml2YXRlOgorICAgIFFXaWRnZXQgKm1f
d2lkZ2V0OworfTsKKworI2VuZGlmIC8vIFFXaWRnZXRQbHVnaW5JbXBsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmYmY2MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3Bw
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdpcmlzaCBSYW1h
a3Jpc2huYW4gPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUXRGYWxsYmFja1dlYlBvcHVwLmgiCisKKyNpZm5kZWYgUVRf
Tk9fQ09NQk9CT1gKKworI2luY2x1ZGUgIlFXZWJQYWdlQWRhcHRlci5oIgorI2luY2x1ZGUgIlFX
ZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUXRXZWJDb21ib0JveC5oIgorI2luY2x1ZGUgInFn
cmFwaGljc3dlYnZpZXcuaCIKKyNpbmNsdWRlIDxRR3JhcGhpY3NQcm94eVdpZGdldD4KKyNpbmNs
dWRlIDxRdEd1aS9RU3RhbmRhcmRJdGVtTW9kZWw+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UXRGYWxsYmFja1dlYlBvcHVwOjpRdEZhbGxiYWNrV2ViUG9wdXAoY29uc3QgUVdlYlBhZ2VBZGFw
dGVyKiBwYWdlKQorICAgIDogbV9jb21ibygwKQorICAgICwgbV9wYWdlKHBhZ2UpCit7Cit9CisK
K1F0RmFsbGJhY2tXZWJQb3B1cDo6flF0RmFsbGJhY2tXZWJQb3B1cCgpCit7CisgICAgZGVsZXRl
Q29tYm9Cb3goKTsKK30KKwordm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3coY29uc3QgUVdl
YlNlbGVjdERhdGEmIGRhdGEpCit7CisgICAgaWYgKCFwYWdlQ2xpZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGRlbGV0ZUNvbWJvQm94KCk7CisKKyAgICBtX2NvbWJvID0gbmV3IFF0V2Vi
Q29tYm9Cb3goKTsKKyAgICBjb25uZWN0KG1fY29tYm8sIFNJR05BTChhY3RpdmF0ZWQoaW50KSks
IFNMT1QoYWN0aXZlQ2hhbmdlZChpbnQpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIGNv
bm5lY3QobV9jb21ibywgU0lHTkFMKGRpZEhpZGUoKSksIFNMT1QoZGVsZXRlQ29tYm9Cb3goKSkp
OworICAgIGNvbm5lY3QobV9jb21ibywgU0lHTkFMKGRpZEhpZGUoKSksIFNJR05BTChkaWRIaWRl
KCkpKTsKKworICAgIHBvcHVsYXRlKGRhdGEpOworCisgICAgUVJlY3QgcmVjdCA9IGdlb21ldHJ5
KCk7CisgICAgaWYgKFFHcmFwaGljc1dlYlZpZXcgKndlYlZpZXcgPSBxb2JqZWN0X2Nhc3Q8UUdy
YXBoaWNzV2ViVmlldyo+KHBhZ2VDbGllbnQoKS0+cGx1Z2luUGFyZW50KCkpKSB7CisgICAgICAg
IFFHcmFwaGljc1Byb3h5V2lkZ2V0KiBwcm94eSA9IG5ldyBRR3JhcGhpY3NQcm94eVdpZGdldCh3
ZWJWaWV3KTsKKyAgICAgICAgcHJveHktPnNldFdpZGdldChtX2NvbWJvKTsKKyAgICAgICAgcHJv
eHktPnNldEdlb21ldHJ5KHJlY3QpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29tYm8tPnNl
dFBhcmVudChxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KHBhZ2VDbGllbnQoKS0+b3duZXJXaWRnZXQo
KSkpOworICAgICAgICBtX2NvbWJvLT5zZXRHZW9tZXRyeShRUmVjdChyZWN0LmxlZnQoKSwgcmVj
dC50b3AoKSwgcmVjdC53aWR0aCgpLCBtX2NvbWJvLT5zaXplSGludCgpLmhlaWdodCgpKSk7Cisg
ICAgfQorCisgICAgbV9jb21iby0+c2hvd1BvcHVwQXRDdXJzb3JQb3NpdGlvbigpOworfQorCit2
b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6aGlkZSgpCit7CisgICAgLy8gRGVzdHJveWluZyB0aGUg
UUNvbWJvQm94IGhlcmUgY2F1c2UgcHJvYmxlbXMgaWYgdGhlIHBvcHVwIGlzIGluIHRoZQorICAg
IC8vIG1pZGRsZSBvZiBpdHMgc2hvdyBhbmltYXRpb24uIEluc3RlYWQgd2UgcmVseSBvbiB0aGUg
ZmFjdCB0aGF0IHRoZQorICAgIC8vIFF0OjpQb3B1cCB3aW5kb3cgd2lsbCBoaWRlIGl0c2VsZiBv
biBtb3VzZSBldmVudHMgb3V0c2lkZSBpdHMgd2luZG93LgorfQorCit2b2lkIFF0RmFsbGJhY2tX
ZWJQb3B1cDo6cG9wdWxhdGUoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpCit7CisgICAgUVN0
YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRhcmRJdGVtTW9kZWwq
PihtX2NvbWJvLT5tb2RlbCgpKTsKKyAgICBRX0FTU0VSVChtb2RlbCk7CisKKyAgICBtX2NvbWJv
LT5zZXRGb250KGZvbnQoKSk7CisKKyAgICBpbnQgY3VycmVudEluZGV4ID0gLTE7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBkYXRhLml0ZW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNo
IChkYXRhLml0ZW1UeXBlKGkpKSB7CisgICAgICAgIGNhc2UgUVdlYlNlbGVjdERhdGE6OlNlcGFy
YXRvcjoKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydFNlcGFyYXRvcihpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFFXZWJTZWxlY3REYXRhOjpHcm91cDoKKyAgICAgICAg
ICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaSwgZGF0YS5pdGVtVGV4dChpKSk7CisgICAgICAgICAg
ICBtb2RlbC0+aXRlbShpKS0+c2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBRV2ViU2VsZWN0RGF0YTo6T3B0aW9uOgorICAgICAgICAgICAgbV9jb21i
by0+aW5zZXJ0SXRlbShpLCBkYXRhLml0ZW1UZXh0KGkpKTsKKyAgICAgICAgICAgIG1vZGVsLT5p
dGVtKGkpLT5zZXRFbmFibGVkKGRhdGEuaXRlbUlzRW5hYmxlZChpKSk7CisjaWZuZGVmIFFUX05P
X1RPT0xUSVAKKyAgICAgICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRUb29sVGlwKGRhdGEuaXRl
bVRvb2xUaXAoaSkpOworI2VuZGlmCisgICAgICAgICAgICBtb2RlbC0+aXRlbShpKS0+c2V0QmFj
a2dyb3VuZChkYXRhLml0ZW1CYWNrZ3JvdW5kQ29sb3IoaSkpOworICAgICAgICAgICAgbW9kZWwt
Pml0ZW0oaSktPnNldEZvcmVncm91bmQoZGF0YS5pdGVtRm9yZWdyb3VuZENvbG9yKGkpKTsKKyAg
ICAgICAgICAgIGlmIChkYXRhLml0ZW1Jc1NlbGVjdGVkKGkpKQorICAgICAgICAgICAgICAgIGN1
cnJlbnRJbmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGlmIChjdXJyZW50SW5kZXggPj0gMCkKKyAgICAgICAgbV9jb21iby0+c2V0Q3VycmVudElu
ZGV4KGN1cnJlbnRJbmRleCk7Cit9CisKK3ZvaWQgUXRGYWxsYmFja1dlYlBvcHVwOjphY3RpdmVD
aGFuZ2VkKGludCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICByZXR1cm47
CisKKyAgICBlbWl0IHNlbGVjdEl0ZW0oaW5kZXgsIGZhbHNlLCBmYWxzZSk7Cit9CisKK3ZvaWQg
UXRGYWxsYmFja1dlYlBvcHVwOjpkZWxldGVDb21ib0JveCgpCit7CisgICAgaWYgKCFtX2NvbWJv
KQorICAgICAgICByZXR1cm47CisgICAgbV9jb21iby0+ZGVsZXRlTGF0ZXIoKTsKKyAgICBtX2Nv
bWJvID0gMDsKK30KKworUVdlYlBhZ2VDbGllbnQqIFF0RmFsbGJhY2tXZWJQb3B1cDo6cGFnZUNs
aWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2xpZW50LmRhdGEoKTsKK30KKwor
fQorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvV2lkZ2V0U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42OWI0OWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9x
dC9XaWRnZXRTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworI2lmbmRlZiBRdEZhbGxiYWNrV2ViUG9wdXBfaAorI2RlZmluZSBRdEZh
bGxiYWNrV2ViUG9wdXBfaAorCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZm5kZWYgUVRfTk9fQ09NQk9CT1gKKworUVRf
QkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRR3JhcGhpY3NQcm94eVdpZGdldDsKK1FUX0VORF9OQU1F
U1BBQ0UKKworY2xhc3MgUVdlYlBhZ2VDbGllbnQ7CitjbGFzcyBRV2ViUGFnZUFkYXB0ZXI7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXRXZWJDb21ib0JveDsKKworY2xhc3MgUXRG
YWxsYmFja1dlYlBvcHVwIDogcHVibGljIFFXZWJTZWxlY3RNZXRob2QgeworICAgIFFfT0JKRUNU
CitwdWJsaWM6CisgICAgUXRGYWxsYmFja1dlYlBvcHVwKGNvbnN0IFFXZWJQYWdlQWRhcHRlciop
OworICAgIH5RdEZhbGxiYWNrV2ViUG9wdXAoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93KGNv
bnN0IFFXZWJTZWxlY3REYXRhJik7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKTsKKworICAgIHZv
aWQgc2V0R2VvbWV0cnkoY29uc3QgUVJlY3QmIHJlY3QpIHsgbV9nZW9tZXRyeSA9IHJlY3Q7IH0K
KyAgICBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbWV0cnk7IH0KKworICAg
IHZvaWQgc2V0Rm9udChjb25zdCBRRm9udCYgZm9udCkgeyBtX2ZvbnQgPSBmb250OyB9CisgICAg
UUZvbnQgZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQorCitwcml2YXRlIFFfU0xPVFM6
CisgICAgdm9pZCBhY3RpdmVDaGFuZ2VkKGludCk7CisgICAgdm9pZCBkZWxldGVDb21ib0JveCgp
OworCitwcml2YXRlOgorICAgIFF0V2ViQ29tYm9Cb3gqIG1fY29tYm87CisgICAgY29uc3QgUVdl
YlBhZ2VBZGFwdGVyKiBtX3BhZ2U7CisgICAgUVJlY3QgbV9nZW9tZXRyeTsKKyAgICBRRm9udCBt
X2ZvbnQ7CisKKyAgICBRV2ViUGFnZUNsaWVudCogcGFnZUNsaWVudCgpIGNvbnN0OworCisgICAg
dm9pZCBwb3B1bGF0ZShjb25zdCBRV2ViU2VsZWN0RGF0YSYpOworfTsKKworfQorCisjZW5kaWYg
Ly8gUVRfTk9fQ09NQk9CT1gKKworI2VuZGlmIC8vIFF0RmFsbGJhY2tXZWJQb3B1cF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUXRXZWJDb21ib0JveC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUXRXZWJDb21ib0JveC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMyMmNkNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RdFdlYkNvbWJvQm94LmNwcApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdpcmlzaCBSYW1ha3Jpc2huYW4g
PGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJRdFdlYkNvbWJvQm94LmgiCisKKyNpZm5kZWYgUVRfTk9fQ09N
Qk9CT1gKKworI2luY2x1ZGUgPFFBYnN0cmFjdEl0ZW1WaWV3PgorI2luY2x1ZGUgPFFDb3JlQXBw
bGljYXRpb24+CisjaW5jbHVkZSA8UXRHdWkvUU1vdXNlRXZlbnQ+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUXRXZWJDb21ib0JveDo6UXRXZWJDb21ib0JveCgpCisgICAgOiBRQ29tYm9Cb3go
KQoreworICAgIC8vIEluc3RhbGwgYW4gZXZlbnQgZmlsdGVyIG9uIHRoZSB2aWV3IGluc2lkZSB0
aGUgY29tYm8gYm94IHBvcHVwIHRvIG1ha2Ugc3VyZSB3ZSBrbm93CisgICAgLy8gd2hlbiB0aGUg
cG9wdXAgZ290IGNsb3NlZC4gRS5nLiBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgpIHdvbid0IGJlIGNh
bGxlZCB3aGVuIHRoZSBwb3B1cAorICAgIC8vIGlzIGNsb3NlZCBieSBhIG1vdXNlIHdoZWVsIGV2
ZW50IG91dHNpZGUgaXRzIHdpbmRvdy4KKyAgICB2aWV3KCktPmluc3RhbGxFdmVudEZpbHRlcih0
aGlzKTsKK30KKwordm9pZCBRdFdlYkNvbWJvQm94OjpzaG93UG9wdXBBdEN1cnNvclBvc2l0aW9u
KCkKK3sKKyAgICBRTW91c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIFFD
dXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlm
aWVyKTsKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQodGhpcywgJmV2ZW50KTsKK30K
KworYm9vbCBRdFdlYkNvbWJvQm94OjpldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZl
bnQqIGV2ZW50KQoreworICAgIFFfQVNTRVJUKHdhdGNoZWQgPT0gdmlldygpKTsKKyAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUpCisgICAgICAgIGVtaXQgZGlkSGlkZSgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworfQorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RdFdlYkNvbWJvQm94Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUXRXZWJDb21ib0JveC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjQyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvUXRXZWJDb21ib0JveC5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0V2ViQ29tYm9Cb3hfaAorI2RlZmlu
ZSBRdFdlYkNvbWJvQm94X2gKKworI2luY2x1ZGUgPFFDb21ib0JveD4KKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2lmbmRlZiBRVF9OT19DT01CT0JPWAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFF0V2ViQ29tYm9Cb3ggOiBwdWJsaWMgUUNvbWJvQm94IHsKKyAgICBRX09C
SkVDVAorcHVibGljOgorICAgIFF0V2ViQ29tYm9Cb3goKTsKKworICAgIHZvaWQgc2hvd1BvcHVw
QXRDdXJzb3JQb3NpdGlvbigpOworICAgIHZpcnR1YWwgYm9vbCBldmVudEZpbHRlcihRT2JqZWN0
KiB3YXRjaGVkLCBRRXZlbnQqKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgZGlkSGlkZSgpOwor
fTsKKworfQorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKKworI2VuZGlmIC8vIFF0V2ViQ29t
Ym9Cb3hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9kZWNsYXJh
dGl2ZS5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2RlY2xhcmF0aXZlLnBybwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWVkNGYxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9kZWNsYXJhdGl2ZS5wcm8KQEAgLTAs
MCArMSwxOCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1haW4gcHJvamVjdCBmaWxlIGZvciB0aGUgUXQg
UXVpY2sgKFFNTCkgcGx1Z2luCisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4g
b3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RFTVBMQVRFID0g
c3ViZGlycworQ09ORklHICs9IG9yZGVyZWQKKworcHVibGljX2FwaS5maWxlID0gcHVibGljLnBy
aQorcHVibGljX2FwaS5tYWtlZmlsZSA9IE1ha2VmaWxlLmRlY2xhcmF0aXZlLnB1YmxpYworU1VC
RElSUyArPSBwdWJsaWNfYXBpCisKK2J1aWxkPyh3ZWJraXQyKTogeworICAgIGV4cGVyaW1lbnRh
bF9hcGkuZmlsZSA9IGV4cGVyaW1lbnRhbC9leHBlcmltZW50YWwucHJpCisgICAgZXhwZXJpbWVu
dGFsX2FwaS5tYWtlZmlsZSA9IE1ha2VmaWxlLmRlY2xhcmF0aXZlLmV4cGVyaW1lbnRhbAorICAg
IFNVQkRJUlMgKz0gZXhwZXJpbWVudGFsX2FwaQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvZXhwZXJpbWVudGFsLnByaSBiL1NvdXJjZS9X
ZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5wcmkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3ZTY2YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL2V4cGVyaW1lbnRhbC5w
cmkKQEAgLTAsMCArMSw1MyBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgdGhl
IFF0IFF1aWNrIChRTUwpIGV4cGVyaW1lbnRhbCBBUEkgcGx1Z2luCisjCisjIFNlZSAnVG9vbHMv
cW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFTVBMQVRFID0gbGliCitUQVJHRVQgID0gcW1sd2Via2l0ZXhwZXJpbWVudGFs
cGx1Z2luCisKK1RBUkdFVC5tb2R1bGVfbmFtZSA9IFF0V2ViS2l0L2V4cGVyaW1lbnRhbAorCitD
T05GSUcgKz0gcGx1Z2luCisKK1FNTERJUkZJTEUgPSAkJHtfUFJPX0ZJTEVfUFdEX30vcW1sZGly
Citjb3B5MmJ1aWxkLmlucHV0ID0gUU1MRElSRklMRQorY29weTJidWlsZC5vdXRwdXQgPSAkJHtS
T09UX0JVSUxEX0RJUn0vaW1wb3J0cy8kJHtUQVJHRVQubW9kdWxlX25hbWV9L3FtbGRpcgorIWNv
bnRhaW5zKFRFTVBMQVRFX1BSRUZJWCwgdmMpOmNvcHkyYnVpbGQudmFyaWFibGVfb3V0ID0gUFJF
X1RBUkdFVERFUFMKK2NvcHkyYnVpbGQuY29tbWFuZHMgPSAkJFFNQUtFX0NPUFkgJHtRTUFLRV9G
SUxFX0lOfSAke1FNQUtFX0ZJTEVfT1VUfQorY29weTJidWlsZC5uYW1lID0gQ09QWSAke1FNQUtF
X0ZJTEVfSU59Citjb3B5MmJ1aWxkLkNPTkZJRyArPSBub19saW5rCitRTUFLRV9FWFRSQV9DT01Q
SUxFUlMgKz0gY29weTJidWlsZAorCitjb250YWlucyhRVF9DT05GSUcsIHJlZHVjZV9leHBvcnRz
KTpDT05GSUcgKz0gaGlkZV9zeW1ib2xzCisKK3dpbmNlKjpMSUJTICs9ICQkUU1BS0VfTElCU19H
VUkKKworUVQgKz0gbmV0d29yayBxdWljayBxdWljay1wcml2YXRlIHdlYmtpdCB3ZWJraXQtcHJp
dmF0ZQorCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2ltcG9ydHMvJCR7VEFSR0VULm1v
ZHVsZV9uYW1lfQorCitDT05GSUcgKz0gcnBhdGgKK1JQQVRIRElSX1JFTEFUSVZFX1RPX0RFU1RE
SVIgPSAuLi8uLi9saWIKKworU09VUkNFUyArPSBwbHVnaW4uY3BwCisKK0RFRklORVMgKz0gSEFW
RV9XRUJLSVQyCisKK1dFQktJVCArPSB3dGYgamF2YXNjcmlwdGNvcmUgd2Via2l0MgorCisjIFRo
ZSBmYWxsYmFjayB0byBRVF9JTlNUQUxMX0lNUE9SVFMgY2FuIGJlIHJlbW92ZWQgb25jZSB3ZQor
IyBkZXBlbmQgb24gUXQgNSBSQzEuCitpbXBvcnRQYXRoID0gJCRbUVRfSU5TVEFMTF9RTUxdCitp
c0VtcHR5KGltcG9ydFBhdGgpOiBpbXBvcnRQYXRoID0gJCRbUVRfSU5TVEFMTF9JTVBPUlRTXQor
Cit0YXJnZXQucGF0aCA9ICQke2ltcG9ydFBhdGh9LyQke1RBUkdFVC5tb2R1bGVfbmFtZX0KKwor
CitxbWxkaXIuZmlsZXMgKz0gJCRQV0QvcW1sZGlyCitxbWxkaXIucGF0aCArPSAgJCR7aW1wb3J0
UGF0aH0vJCR7VEFSR0VULm1vZHVsZV9uYW1lfQorCitJTlNUQUxMUyArPSB0YXJnZXQgcW1sZGly
CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9leHBlcmltZW50
YWwvcGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFs
L3BsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZmZmVkYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVu
dGFsL3BsdWdpbi5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2tuZXR3b3JrcmVwbHlf
cC5oIgorI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrbmV0d29ya3JlcXVlc3RfcC5oIgorI2luY2x1
ZGUgInByaXZhdGUvcXF1aWNrd2VicGFnZV9wLmgiCisjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2t3
ZWJ2aWV3X3AuaCIKKyNpbmNsdWRlICJwcml2YXRlL3F0d2Vic2VjdXJpdHlvcmlnaW5fcC5oIgor
I2luY2x1ZGUgInByaXZhdGUvcXdlYmRvd25sb2FkaXRlbV9wLmgiCisjaW5jbHVkZSAicHJpdmF0
ZS9xd2Via2l0dGVzdF9wLmgiCisjaW5jbHVkZSAicHJpdmF0ZS9xd2VibmF2aWdhdGlvbmhpc3Rv
cnlfcC5oIgorI2luY2x1ZGUgInByaXZhdGUvcXdlYnBlcm1pc3Npb25yZXF1ZXN0X3AuaCIKKyNp
bmNsdWRlICJwcml2YXRlL3F3ZWJwcmVmZXJlbmNlc19wLmgiCisKKyNpbmNsdWRlIDxRdFFtbC9x
cW1sLmg+CisjaW5jbHVkZSA8UXRRbWwvcXFtbGV4dGVuc2lvbnBsdWdpbi5oPgorCitRVF9CRUdJ
Tl9OQU1FU1BBQ0UKKworY2xhc3MgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbEV4dGVuc2lvbiA6
IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFkoUVF1aWNrV2Vi
Vmlld0V4cGVyaW1lbnRhbCogZXhwZXJpbWVudGFsIFJFQUQgZXhwZXJpbWVudGFsIENPTlNUQU5U
IEZJTkFMKQorcHVibGljOgorICAgIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWxFeHRlbnNpb24o
UU9iamVjdCAqcGFyZW50ID0gMCkgOiBRT2JqZWN0KHBhcmVudCkgeyB9CisgICAgUVF1aWNrV2Vi
Vmlld0V4cGVyaW1lbnRhbCogZXhwZXJpbWVudGFsKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UVF1
aWNrV2ViVmlldyo+KHBhcmVudCgpKS0+ZXhwZXJpbWVudGFsKCk7IH0KK307CisKK2NsYXNzIFdl
YktpdFFtbEV4cGVyaW1lbnRhbEV4dGVuc2lvblBsdWdpbjogcHVibGljIFFRbWxFeHRlbnNpb25Q
bHVnaW4geworICAgIFFfT0JKRUNUCisgICAgUV9QTFVHSU5fTUVUQURBVEEoSUlEICJvcmcucXQt
cHJvamVjdC5RdC5RUW1sRXh0ZW5zaW9uSW50ZXJmYWNlIiBGSUxFICJwbHVnaW4uanNvbiIpCitw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVHlwZXMoY29uc3QgY2hhciogdXJpKQor
ICAgIHsKKyAgICAgICAgcVdhcm5pbmcoIlxuV0FSTklORzogVGhpcyBwcm9qZWN0IGlzIHVzaW5n
IHRoZSBleHBlcmltZW50YWwgUU1MIEFQSSBleHRlbnNpb25zIGZvciBRdFdlYktpdCBhbmQgaXMg
dGhlcmVmb3JlIHRpZWQgdG8gYSBzcGVjaWZpYyBRdFdlYktpdCByZWxlYXNlLlxuIgorICAgICAg
ICAgICAgICAgICAiV0FSTklORzogVGhlIGV4cGVyaW1lbnRhbCBBUEkgd2lsbCBjaGFuZ2UgZnJv
bSB2ZXJzaW9uIHRvIHZlcnNpb24sIG9yIGV2ZW4gYmUgcmVtb3ZlZC4gWW91IGhhdmUgYmVlbiB3
YXJuZWQhXG4iKTsKKworICAgICAgICBRX0FTU0VSVChRTGF0aW4xU3RyaW5nKHVyaSkgPT0gUUxh
dGluMVN0cmluZygiUXRXZWJLaXQuZXhwZXJpbWVudGFsIikpOworCisgICAgICAgIHFtbFJlZ2lz
dGVyVW5jcmVhdGFibGVUeXBlPFFXZWJEb3dubG9hZEl0ZW0+KHVyaSwgMSwgMCwgIkRvd25sb2Fk
SXRlbSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIERv
d25sb2FkSXRlbSIpKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYk5h
dmlnYXRpb25MaXN0TW9kZWw+KHVyaSwgMSwgMCwgIk5hdmlnYXRpb25MaXN0TW9kZWwiLCBRT2Jq
ZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOYXZpZ2F0aW9uTGlz
dE1vZGVsIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViTmF2aWdh
dGlvbkhpc3Rvcnk+KHVyaSwgMSwgMCwgIk5hdmlnYXRpb25IaXN0b3J5IiwgUU9iamVjdDo6dHIo
IkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmF2aWdhdGlvbkhpc3RvcnkiKSk7
CisgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJQcmVmZXJlbmNlcz4odXJp
LCAxLCAwLCAiV2ViUHJlZmVyZW5jZXMiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBh
cmF0ZSBpbnN0YW5jZSBvZiBXZWJQcmVmZXJlbmNlcyIpKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJV
bmNyZWF0YWJsZVR5cGU8UVdlYlBlcm1pc3Npb25SZXF1ZXN0Pih1cmksIDEsIDAsICJQZXJtaXNz
aW9uUmVxdWVzdCIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNl
IG9mIFBlcm1pc3Npb25SZXF1ZXN0IikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxl
VHlwZTxRdFdlYlNlY3VyaXR5T3JpZ2luPih1cmksIDEsIDAsICJTZWN1cml0eU9yaWdpbiIsIFFP
YmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIFNlY3VyaXR5T3Jp
Z2luIikpOworCisgICAgICAgIHFtbFJlZ2lzdGVyRXh0ZW5kZWRUeXBlPFFRdWlja1dlYlZpZXcs
IFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWxFeHRlbnNpb24+KHVyaSwgMSwgMCwgIldlYlZpZXci
KTsKKyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbD4odXJpLCAxLCAwLCAiV2ViVmlld0V4cGVyaW1lbnRhbCIsCisgICAgICAgICAgICBR
T2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBXZWJWaWV3RXhw
ZXJpbWVudGFsIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViS2l0
VGVzdD4odXJpLCAxLCAwLCAiUVdlYktpdFRlc3QiLAorICAgICAgICAgICAgUU9iamVjdDo6dHIo
IkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgUVdlYktpdFRlc3QiKSk7CisgICAg
ICAgIHFtbFJlZ2lzdGVyVHlwZTxRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0ZT4odXJpLCAxLCAwLCAi
VXJsU2NoZW1lRGVsZWdhdGUiKTsKKyAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8
UVF1aWNrTmV0d29ya1JlcXVlc3Q+KHVyaSwgMSwgMCwgIk5ldHdvcmtSZXF1ZXN0IiwKKyAgICAg
ICAgICAgIFFPYmplY3Q6OnRyKCJOZXR3b3JrUmVxdWVzdCBzaG91bGQgbm90IGJlIGNyZWF0ZWQg
ZnJvbSBRTUwiKSk7CisgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFRdWlja05l
dHdvcmtSZXBseT4odXJpLCAxLCAwLCAiTmV0d29ya1JlcGx5IiwKKyAgICAgICAgICAgIFFPYmpl
Y3Q6OnRyKCJOZXR3b3JrUmVwbHkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGZyb20gUU1MIikpOwor
ICAgIH0KK307CisKK1FUX0VORF9OQU1FU1BBQ0UKKworI2luY2x1ZGUgInBsdWdpbi5tb2MiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9wbHVn
aW4uanNvbiBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdp
bi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NjdlZjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4cGVyaW1lbnRhbC9w
bHVnaW4uanNvbgpAQCAtMCwwICsxIEBACit7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcW1sZGlyIGIvU291cmNlL1dlYktpdC9xdC9kZWNs
YXJhdGl2ZS9leHBlcmltZW50YWwvcW1sZGlyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRmYmM2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xh
cmF0aXZlL2V4cGVyaW1lbnRhbC9xbWxkaXIKQEAgLTAsMCArMSwyIEBACittb2R1bGUgUXRXZWJL
aXQuZXhwZXJpbWVudGFsCitwbHVnaW4gcW1sd2Via2l0ZXhwZXJpbWVudGFscGx1Z2luCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNzRkOTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
ZGVjbGFyYXRpdmUvcGx1Z2luLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJxZ2xvYmFsLmgiCisKKyNpbmNs
dWRlIDxRdFFtbC9xcW1sLmg+CisjaW5jbHVkZSA8UXRRbWwvcXFtbGV4dGVuc2lvbnBsdWdpbi5o
PgorCisjaWYgZGVmaW5lZChIQVZFX1dFQktJVDIpCisjaW5jbHVkZSAicHJpdmF0ZS9xcXVpY2t3
ZWJwYWdlX3AuaCIKKyNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1
ZGUgInByaXZhdGUvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaCIKKyNpbmNsdWRlICJwcml2YXRl
L3F3ZWJsb2FkcmVxdWVzdF9wLmgiCisjaW5jbHVkZSAicHJpdmF0ZS9xd2VibmF2aWdhdGlvbnJl
cXVlc3RfcC5oIgorCisjaW5jbHVkZSA8UXROZXR3b3JrL3FuZXR3b3JrcmVwbHkuaD4KKyNpbmNs
dWRlIDxRdFFtbC9xcW1sZW5naW5lLmg+CisjZW5kaWYKKworUVRfQkVHSU5fTkFNRVNQQUNFCisK
K2NsYXNzIFdlYktpdFFtbFBsdWdpbiA6IHB1YmxpYyBRUW1sRXh0ZW5zaW9uUGx1Z2luIHsKKyAg
ICBRX1BMVUdJTl9NRVRBREFUQShJSUQgIm9yZy5xdC1wcm9qZWN0LlF0LlFRbWxFeHRlbnNpb25J
bnRlcmZhY2UiIEZJTEUgInBsdWdpbi5qc29uIikKKyAgICBRX09CSkVDVAorcHVibGljOgorI2lm
IGRlZmluZWQoSEFWRV9XRUJLSVQyKQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplRW5naW5l
KFFRbWxFbmdpbmUqIGVuZ2luZSwgY29uc3QgY2hhciogdXJpKQorICAgIHsKKyAgICAgICAgUV9B
U1NFUlQoUUxhdGluMVN0cmluZyh1cmkpID09IFFMYXRpbjFTdHJpbmcoIlF0V2ViS2l0IikpOwor
ICAgICAgICBlbmdpbmUtPmFkZEltYWdlUHJvdmlkZXIoUUxhdGluMVN0cmluZygid2ViaWNvbiIp
LCBuZXcgUVdlYkljb25JbWFnZVByb3ZpZGVyKTsKKyAgICB9CisjZW5kaWYKKworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclR5cGVzKGNvbnN0IGNoYXIqIHVyaSkKKyAgICB7CisgICAgICAgIFFf
QVNTRVJUKFFMYXRpbjFTdHJpbmcodXJpKSA9PSBRTGF0aW4xU3RyaW5nKCJRdFdlYktpdCIpKTsK
KworI2lmIGRlZmluZWQoSEFWRV9XRUJLSVQyKQorICAgICAgICBxbWxSZWdpc3RlclR5cGU8UVF1
aWNrV2ViVmlldz4odXJpLCAzLCAwLCAiV2ViVmlldyIpOworICAgICAgICBxbWxSZWdpc3RlclVu
Y3JlYXRhYmxlVHlwZTxRUXVpY2tXZWJQYWdlPih1cmksIDMsIDAsICJXZWJQYWdlIiwgUU9iamVj
dDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgV2ViUGFnZSwgdXNlIFdl
YlZpZXciKSk7CisgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFOZXR3b3JrUmVw
bHk+KHVyaSwgMywgMCwgIk5ldHdvcmtSZXBseSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRl
IHNlcGFyYXRlIGluc3RhbmNlIG9mIE5ldHdvcmtSZXBseSIpKTsKKyAgICAgICAgcW1sUmVnaXN0
ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYk5hdmlnYXRpb25SZXF1ZXN0LCAxPih1cmksIDMsIDEsICJO
YXZpZ2F0aW9uUmVxdWVzdCIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGlu
c3RhbmNlIG9mIE5hdmlnYXRpb25SZXF1ZXN0IikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3Jl
YXRhYmxlVHlwZTxRV2ViTG9hZFJlcXVlc3Q+KHVyaSwgMywgMCwgIldlYkxvYWRSZXF1ZXN0Iiwg
UU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgV2ViTG9hZFJl
cXVlc3QiKSk7CisjZW5kaWYKKyAgICB9Cit9OworCitRVF9FTkRfTkFNRVNQQUNFCisKKyNpbmNs
dWRlICJwbHVnaW4ubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2
ZS9wbHVnaW4uanNvbiBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmpzb24K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2N2VmNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2luLmpzb24KQEAgLTAsMCAr
MSBAQAore30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2lu
cy5xbWx0eXBlcyBiL1NvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcGx1Z2lucy5xbWx0eXBl
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTMyOTE2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbHVnaW5zLnFtbHR5cGVzCkBA
IC0wLDAgKzEsMTk5IEBACitpbXBvcnQgUXRRdWljay50b29saW5nIDEuMQorCisvLyBUaGlzIGZp
bGUgZGVzY3JpYmVzIHRoZSBwbHVnaW4tc3VwcGxpZWQgdHlwZXMgY29udGFpbmVkIGluIHRoZSBs
aWJyYXJ5LgorLy8gSXQgaXMgdXNlZCBmb3IgUU1MIHRvb2xpbmcgcHVycG9zZXMgb25seS4KKy8v
CisvLyBUaGlzIGZpbGUgd2FzIGF1dG8tZ2VuZXJhdGVkIHdpdGggdGhlIGNvbW1hbmQgJ3FtbHBs
dWdpbmR1bXAgLW5vaW5zdGFudGlhdGUgLW5vbnJlbG9jYXRhYmxlIFF0V2ViS2l0IDMuMCcuCisK
K01vZHVsZSB7CisgICAgQ29tcG9uZW50IHsKKyAgICAgICAgbmFtZTogIlFJT0RldmljZSIKKyAg
ICAgICAgcHJvdG90eXBlOiAiUU9iamVjdCIKKyAgICAgICAgU2lnbmFsIHsgbmFtZTogInJlYWR5
UmVhZCIgfQorICAgICAgICBTaWduYWwgeworICAgICAgICAgICAgbmFtZTogImJ5dGVzV3JpdHRl
biIKKyAgICAgICAgICAgIFBhcmFtZXRlciB7IG5hbWU6ICJieXRlcyI7IHR5cGU6ICJxbG9uZ2xv
bmciIH0KKyAgICAgICAgfQorICAgICAgICBTaWduYWwgeyBuYW1lOiAiYWJvdXRUb0Nsb3NlIiB9
CisgICAgICAgIFNpZ25hbCB7IG5hbWU6ICJyZWFkQ2hhbm5lbEZpbmlzaGVkIiB9CisgICAgfQor
ICAgIENvbXBvbmVudCB7CisgICAgICAgIG5hbWU6ICJRTmV0d29ya1JlcGx5IgorICAgICAgICBw
cm90b3R5cGU6ICJRSU9EZXZpY2UiCisgICAgICAgIGV4cG9ydHM6IFsiUXRXZWJLaXQvTmV0d29y
a1JlcGx5IDMuMCJdCisgICAgICAgIGV4cG9ydE1ldGFPYmplY3RSZXZpc2lvbnM6IFswXQorICAg
ICAgICBFbnVtIHsKKyAgICAgICAgICAgIG5hbWU6ICJOZXR3b3JrRXJyb3IiCisgICAgICAgICAg
ICB2YWx1ZXM6IHsKKyAgICAgICAgICAgICAgICAiTm9FcnJvciI6IDAsCisgICAgICAgICAgICAg
ICAgIkNvbm5lY3Rpb25SZWZ1c2VkRXJyb3IiOiAxLAorICAgICAgICAgICAgICAgICJSZW1vdGVI
b3N0Q2xvc2VkRXJyb3IiOiAyLAorICAgICAgICAgICAgICAgICJIb3N0Tm90Rm91bmRFcnJvciI6
IDMsCisgICAgICAgICAgICAgICAgIlRpbWVvdXRFcnJvciI6IDQsCisgICAgICAgICAgICAgICAg
Ik9wZXJhdGlvbkNhbmNlbGVkRXJyb3IiOiA1LAorICAgICAgICAgICAgICAgICJTc2xIYW5kc2hh
a2VGYWlsZWRFcnJvciI6IDYsCisgICAgICAgICAgICAgICAgIlRlbXBvcmFyeU5ldHdvcmtGYWls
dXJlRXJyb3IiOiA3LAorICAgICAgICAgICAgICAgICJOZXR3b3JrU2Vzc2lvbkZhaWxlZEVycm9y
IjogOCwKKyAgICAgICAgICAgICAgICAiQmFja2dyb3VuZFJlcXVlc3ROb3RBbGxvd2VkRXJyb3Ii
OiA5LAorICAgICAgICAgICAgICAgICJVbmtub3duTmV0d29ya0Vycm9yIjogOTksCisgICAgICAg
ICAgICAgICAgIlByb3h5Q29ubmVjdGlvblJlZnVzZWRFcnJvciI6IDEwMSwKKyAgICAgICAgICAg
ICAgICAiUHJveHlDb25uZWN0aW9uQ2xvc2VkRXJyb3IiOiAxMDIsCisgICAgICAgICAgICAgICAg
IlByb3h5Tm90Rm91bmRFcnJvciI6IDEwMywKKyAgICAgICAgICAgICAgICAiUHJveHlUaW1lb3V0
RXJyb3IiOiAxMDQsCisgICAgICAgICAgICAgICAgIlByb3h5QXV0aGVudGljYXRpb25SZXF1aXJl
ZEVycm9yIjogMTA1LAorICAgICAgICAgICAgICAgICJVbmtub3duUHJveHlFcnJvciI6IDE5OSwK
KyAgICAgICAgICAgICAgICAiQ29udGVudEFjY2Vzc0RlbmllZCI6IDIwMSwKKyAgICAgICAgICAg
ICAgICAiQ29udGVudE9wZXJhdGlvbk5vdFBlcm1pdHRlZEVycm9yIjogMjAyLAorICAgICAgICAg
ICAgICAgICJDb250ZW50Tm90Rm91bmRFcnJvciI6IDIwMywKKyAgICAgICAgICAgICAgICAiQXV0
aGVudGljYXRpb25SZXF1aXJlZEVycm9yIjogMjA0LAorICAgICAgICAgICAgICAgICJDb250ZW50
UmVTZW5kRXJyb3IiOiAyMDUsCisgICAgICAgICAgICAgICAgIlVua25vd25Db250ZW50RXJyb3Ii
OiAyOTksCisgICAgICAgICAgICAgICAgIlByb3RvY29sVW5rbm93bkVycm9yIjogMzAxLAorICAg
ICAgICAgICAgICAgICJQcm90b2NvbEludmFsaWRPcGVyYXRpb25FcnJvciI6IDMwMiwKKyAgICAg
ICAgICAgICAgICAiUHJvdG9jb2xGYWlsdXJlIjogMzk5CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgU2lnbmFsIHsgbmFtZTogIm1ldGFEYXRhQ2hhbmdlZCIgfQorICAgICAgICBT
aWduYWwgeyBuYW1lOiAiZmluaXNoZWQiIH0KKyAgICAgICAgU2lnbmFsIHsKKyAgICAgICAgICAg
IG5hbWU6ICJlcnJvciIKKyAgICAgICAgICAgIFBhcmFtZXRlciB7IHR5cGU6ICJRTmV0d29ya1Jl
cGx5OjpOZXR3b3JrRXJyb3IiIH0KKyAgICAgICAgfQorICAgICAgICBTaWduYWwgeyBuYW1lOiAi
ZW5jcnlwdGVkIiB9CisgICAgICAgIFNpZ25hbCB7CisgICAgICAgICAgICBuYW1lOiAic3NsRXJy
b3JzIgorICAgICAgICAgICAgUGFyYW1ldGVyIHsgbmFtZTogImVycm9ycyI7IHR5cGU6ICJRTGlz
dDxRU3NsRXJyb3I+IiB9CisgICAgICAgIH0KKyAgICAgICAgU2lnbmFsIHsKKyAgICAgICAgICAg
IG5hbWU6ICJ1cGxvYWRQcm9ncmVzcyIKKyAgICAgICAgICAgIFBhcmFtZXRlciB7IG5hbWU6ICJi
eXRlc1NlbnQiOyB0eXBlOiAicWxvbmdsb25nIiB9CisgICAgICAgICAgICBQYXJhbWV0ZXIgeyBu
YW1lOiAiYnl0ZXNUb3RhbCI7IHR5cGU6ICJxbG9uZ2xvbmciIH0KKyAgICAgICAgfQorICAgICAg
ICBTaWduYWwgeworICAgICAgICAgICAgbmFtZTogImRvd25sb2FkUHJvZ3Jlc3MiCisgICAgICAg
ICAgICBQYXJhbWV0ZXIgeyBuYW1lOiAiYnl0ZXNSZWNlaXZlZCI7IHR5cGU6ICJxbG9uZ2xvbmci
IH0KKyAgICAgICAgICAgIFBhcmFtZXRlciB7IG5hbWU6ICJieXRlc1RvdGFsIjsgdHlwZTogInFs
b25nbG9uZyIgfQorICAgICAgICB9CisgICAgICAgIE1ldGhvZCB7IG5hbWU6ICJhYm9ydCIgfQor
ICAgICAgICBNZXRob2QgeyBuYW1lOiAiaWdub3JlU3NsRXJyb3JzIiB9CisgICAgfQorICAgIENv
bXBvbmVudCB7CisgICAgICAgIG5hbWU6ICJRUXVpY2tXZWJQYWdlIgorICAgICAgICBkZWZhdWx0
UHJvcGVydHk6ICJkYXRhIgorICAgICAgICBwcm90b3R5cGU6ICJRUXVpY2tJdGVtIgorICAgICAg
ICBleHBvcnRzOiBbIlF0V2ViS2l0L1dlYlBhZ2UgMy4wIl0KKyAgICAgICAgZXhwb3J0TWV0YU9i
amVjdFJldmlzaW9uczogWzBdCisgICAgfQorICAgIENvbXBvbmVudCB7CisgICAgICAgIG5hbWU6
ICJRUXVpY2tXZWJWaWV3IgorICAgICAgICBkZWZhdWx0UHJvcGVydHk6ICJmbGlja2FibGVEYXRh
IgorICAgICAgICBwcm90b3R5cGU6ICJRUXVpY2tGbGlja2FibGUiCisgICAgICAgIGV4cG9ydHM6
IFsiUXRXZWJLaXQvV2ViVmlldyAzLjAiXQorICAgICAgICBleHBvcnRNZXRhT2JqZWN0UmV2aXNp
b25zOiBbMF0KKyAgICAgICAgYXR0YWNoZWRUeXBlOiAiUVF1aWNrV2ViVmlld0F0dGFjaGVkIgor
ICAgICAgICBFbnVtIHsKKyAgICAgICAgICAgIG5hbWU6ICJOYXZpZ2F0aW9uUmVxdWVzdEFjdGlv
biIKKyAgICAgICAgICAgIHZhbHVlczogeworICAgICAgICAgICAgICAgICJBY2NlcHRSZXF1ZXN0
IjogMCwKKyAgICAgICAgICAgICAgICAiSWdub3JlUmVxdWVzdCI6IDI1NQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIEVudW0geworICAgICAgICAgICAgbmFtZTogIkxvYWRTdGF0
dXMiCisgICAgICAgICAgICB2YWx1ZXM6IHsKKyAgICAgICAgICAgICAgICAiTG9hZFN0YXJ0ZWRT
dGF0dXMiOiAwLAorICAgICAgICAgICAgICAgICJMb2FkU3RvcHBlZFN0YXR1cyI6IDEsCisgICAg
ICAgICAgICAgICAgIkxvYWRTdWNjZWVkZWRTdGF0dXMiOiAyLAorICAgICAgICAgICAgICAgICJM
b2FkRmFpbGVkU3RhdHVzIjogMworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEVu
dW0geworICAgICAgICAgICAgbmFtZTogIkVycm9yRG9tYWluIgorICAgICAgICAgICAgdmFsdWVz
OiB7CisgICAgICAgICAgICAgICAgIk5vRXJyb3JEb21haW4iOiAwLAorICAgICAgICAgICAgICAg
ICJJbnRlcm5hbEVycm9yRG9tYWluIjogMSwKKyAgICAgICAgICAgICAgICAiTmV0d29ya0Vycm9y
RG9tYWluIjogMiwKKyAgICAgICAgICAgICAgICAiSHR0cEVycm9yRG9tYWluIjogMywKKyAgICAg
ICAgICAgICAgICAiRG93bmxvYWRFcnJvckRvbWFpbiI6IDQKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBFbnVtIHsKKyAgICAgICAgICAgIG5hbWU6ICJOYXZpZ2F0aW9uVHlwZSIK
KyAgICAgICAgICAgIHZhbHVlczogeworICAgICAgICAgICAgICAgICJMaW5rQ2xpY2tlZE5hdmln
YXRpb24iOiAwLAorICAgICAgICAgICAgICAgICJGb3JtU3VibWl0dGVkTmF2aWdhdGlvbiI6IDEs
CisgICAgICAgICAgICAgICAgIkJhY2tGb3J3YXJkTmF2aWdhdGlvbiI6IDIsCisgICAgICAgICAg
ICAgICAgIlJlbG9hZE5hdmlnYXRpb24iOiAzLAorICAgICAgICAgICAgICAgICJGb3JtUmVzdWJt
aXR0ZWROYXZpZ2F0aW9uIjogNCwKKyAgICAgICAgICAgICAgICAiT3RoZXJOYXZpZ2F0aW9uIjog
NQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFByb3BlcnR5IHsgbmFtZTogInRp
dGxlIjsgdHlwZTogInN0cmluZyI7IGlzUmVhZG9ubHk6IHRydWUgfQorICAgICAgICBQcm9wZXJ0
eSB7IG5hbWU6ICJ1cmwiOyB0eXBlOiAiUVVybCIgfQorICAgICAgICBQcm9wZXJ0eSB7IG5hbWU6
ICJpY29uIjsgdHlwZTogIlFVcmwiOyBpc1JlYWRvbmx5OiB0cnVlIH0KKyAgICAgICAgUHJvcGVy
dHkgeyBuYW1lOiAiY2FuR29CYWNrIjsgdHlwZTogImJvb2wiOyBpc1JlYWRvbmx5OiB0cnVlIH0K
KyAgICAgICAgUHJvcGVydHkgeyBuYW1lOiAiY2FuR29Gb3J3YXJkIjsgdHlwZTogImJvb2wiOyBp
c1JlYWRvbmx5OiB0cnVlIH0KKyAgICAgICAgUHJvcGVydHkgeyBuYW1lOiAibG9hZGluZyI7IHR5
cGU6ICJib29sIjsgaXNSZWFkb25seTogdHJ1ZSB9CisgICAgICAgIFByb3BlcnR5IHsgbmFtZTog
ImxvYWRQcm9ncmVzcyI7IHR5cGU6ICJpbnQiOyBpc1JlYWRvbmx5OiB0cnVlIH0KKyAgICAgICAg
U2lnbmFsIHsgbmFtZTogIm5hdmlnYXRpb25IaXN0b3J5Q2hhbmdlZCIgfQorICAgICAgICBTaWdu
YWwgeworICAgICAgICAgICAgbmFtZTogImxvYWRpbmdDaGFuZ2VkIgorICAgICAgICAgICAgUGFy
YW1ldGVyIHsgbmFtZTogImxvYWRSZXF1ZXN0IjsgdHlwZTogIlFXZWJMb2FkUmVxdWVzdCI7IGlz
UG9pbnRlcjogdHJ1ZSB9CisgICAgICAgIH0KKyAgICAgICAgU2lnbmFsIHsKKyAgICAgICAgICAg
IG5hbWU6ICJsaW5rSG92ZXJlZCIKKyAgICAgICAgICAgIFBhcmFtZXRlciB7IG5hbWU6ICJob3Zl
cmVkVXJsIjsgdHlwZTogIlFVcmwiIH0KKyAgICAgICAgICAgIFBhcmFtZXRlciB7IG5hbWU6ICJo
b3ZlcmVkVGl0bGUiOyB0eXBlOiAic3RyaW5nIiB9CisgICAgICAgIH0KKyAgICAgICAgU2lnbmFs
IHsKKyAgICAgICAgICAgIG5hbWU6ICJuYXZpZ2F0aW9uUmVxdWVzdGVkIgorICAgICAgICAgICAg
UGFyYW1ldGVyIHsgbmFtZTogInJlcXVlc3QiOyB0eXBlOiAiUVdlYk5hdmlnYXRpb25SZXF1ZXN0
IjsgaXNQb2ludGVyOiB0cnVlIH0KKyAgICAgICAgfQorICAgICAgICBNZXRob2QgeworICAgICAg
ICAgICAgbmFtZTogImxvYWRIdG1sIgorICAgICAgICAgICAgUGFyYW1ldGVyIHsgbmFtZTogImh0
bWwiOyB0eXBlOiAic3RyaW5nIiB9CisgICAgICAgICAgICBQYXJhbWV0ZXIgeyBuYW1lOiAiYmFz
ZVVybCI7IHR5cGU6ICJRVXJsIiB9CisgICAgICAgICAgICBQYXJhbWV0ZXIgeyBuYW1lOiAidW5y
ZWFjaGFibGVVcmwiOyB0eXBlOiAiUVVybCIgfQorICAgICAgICB9CisgICAgICAgIE1ldGhvZCB7
CisgICAgICAgICAgICBuYW1lOiAibG9hZEh0bWwiCisgICAgICAgICAgICBQYXJhbWV0ZXIgeyBu
YW1lOiAiaHRtbCI7IHR5cGU6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIFBhcmFtZXRlciB7IG5h
bWU6ICJiYXNlVXJsIjsgdHlwZTogIlFVcmwiIH0KKyAgICAgICAgfQorICAgICAgICBNZXRob2Qg
eworICAgICAgICAgICAgbmFtZTogImxvYWRIdG1sIgorICAgICAgICAgICAgUGFyYW1ldGVyIHsg
bmFtZTogImh0bWwiOyB0eXBlOiAic3RyaW5nIiB9CisgICAgICAgIH0KKyAgICAgICAgTWV0aG9k
IHsgbmFtZTogImdvQmFjayIgfQorICAgICAgICBNZXRob2QgeyBuYW1lOiAiZ29Gb3J3YXJkIiB9
CisgICAgICAgIE1ldGhvZCB7IG5hbWU6ICJzdG9wIiB9CisgICAgICAgIE1ldGhvZCB7IG5hbWU6
ICJyZWxvYWQiIH0KKyAgICB9CisgICAgQ29tcG9uZW50IHsKKyAgICAgICAgbmFtZTogIlFRdWlj
a1dlYlZpZXdBdHRhY2hlZCIKKyAgICAgICAgcHJvdG90eXBlOiAiUU9iamVjdCIKKyAgICAgICAg
UHJvcGVydHkgeyBuYW1lOiAidmlldyI7IHR5cGU6ICJRUXVpY2tXZWJWaWV3IjsgaXNSZWFkb25s
eTogdHJ1ZTsgaXNQb2ludGVyOiB0cnVlIH0KKyAgICB9CisgICAgQ29tcG9uZW50IHsKKyAgICAg
ICAgbmFtZTogIlFXZWJMb2FkUmVxdWVzdCIKKyAgICAgICAgcHJvdG90eXBlOiAiUU9iamVjdCIK
KyAgICAgICAgZXhwb3J0czogWyJRdFdlYktpdC9XZWJMb2FkUmVxdWVzdCAzLjAiXQorICAgICAg
ICBleHBvcnRNZXRhT2JqZWN0UmV2aXNpb25zOiBbMF0KKyAgICAgICAgUHJvcGVydHkgeyBuYW1l
OiAidXJsIjsgdHlwZTogIlFVcmwiOyBpc1JlYWRvbmx5OiB0cnVlIH0KKyAgICAgICAgUHJvcGVy
dHkgeyBuYW1lOiAic3RhdHVzIjsgdHlwZTogIlFRdWlja1dlYlZpZXc6OkxvYWRTdGF0dXMiOyBp
c1JlYWRvbmx5OiB0cnVlIH0KKyAgICAgICAgUHJvcGVydHkgeyBuYW1lOiAiZXJyb3JTdHJpbmci
OyB0eXBlOiAic3RyaW5nIjsgaXNSZWFkb25seTogdHJ1ZSB9CisgICAgICAgIFByb3BlcnR5IHsg
bmFtZTogImVycm9yRG9tYWluIjsgdHlwZTogIlFRdWlja1dlYlZpZXc6OkVycm9yRG9tYWluIjsg
aXNSZWFkb25seTogdHJ1ZSB9CisgICAgICAgIFByb3BlcnR5IHsgbmFtZTogImVycm9yQ29kZSI7
IHR5cGU6ICJpbnQiOyBpc1JlYWRvbmx5OiB0cnVlIH0KKyAgICB9CisgICAgQ29tcG9uZW50IHsK
KyAgICAgICAgbmFtZTogIlFXZWJOYXZpZ2F0aW9uUmVxdWVzdCIKKyAgICAgICAgcHJvdG90eXBl
OiAiUU9iamVjdCIKKyAgICAgICAgZXhwb3J0czogWyJRdFdlYktpdC9OYXZpZ2F0aW9uUmVxdWVz
dCAzLjAiXQorICAgICAgICBleHBvcnRNZXRhT2JqZWN0UmV2aXNpb25zOiBbMF0KKyAgICAgICAg
UHJvcGVydHkgeyBuYW1lOiAidXJsIjsgdHlwZTogIlFVcmwiOyBpc1JlYWRvbmx5OiB0cnVlIH0K
KyAgICAgICAgUHJvcGVydHkgeyBuYW1lOiAibW91c2VCdXR0b24iOyB0eXBlOiAiaW50IjsgaXNS
ZWFkb25seTogdHJ1ZSB9CisgICAgICAgIFByb3BlcnR5IHsgbmFtZTogImtleWJvYXJkTW9kaWZp
ZXJzIjsgdHlwZTogImludCI7IGlzUmVhZG9ubHk6IHRydWUgfQorICAgICAgICBQcm9wZXJ0eSB7
IG5hbWU6ICJhY3Rpb24iOyB0eXBlOiAiUVF1aWNrV2ViVmlldzo6TmF2aWdhdGlvblJlcXVlc3RB
Y3Rpb24iIH0KKyAgICAgICAgUHJvcGVydHkgeyBuYW1lOiAibmF2aWdhdGlvblR5cGUiOyB0eXBl
OiAiUVF1aWNrV2ViVmlldzo6TmF2aWdhdGlvblR5cGUiOyBpc1JlYWRvbmx5OiB0cnVlIH0KKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3B1YmxpYy5w
cmkgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3B1YmxpYy5wcmkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZjNTk4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcHVibGljLnByaQpAQCAtMCwwICsxLDU0IEBACisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgUHJvamVjdCBmaWxlIGZvciB0aGUgUXRXZWJLaXQgUU1MIHBsdWdpbgorIwor
IyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBz
eXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGxpYgorVEFSR0VUICA9IHFtbHdlYmtp
dHBsdWdpbgorCitUQVJHRVQubW9kdWxlX25hbWUgPSBRdFdlYktpdAorCitDT05GSUcgKz0gcGx1
Z2luCisKK1FNTERJUkZJTEUgPSAkJHtfUFJPX0ZJTEVfUFdEX30vcW1sZGlyCitjb3B5MmJ1aWxk
LmlucHV0ID0gUU1MRElSRklMRQorY29weTJidWlsZC5vdXRwdXQgPSAkJHtST09UX0JVSUxEX0RJ
Un0vaW1wb3J0cy8kJHtUQVJHRVQubW9kdWxlX25hbWV9L3FtbGRpcgorIWNvbnRhaW5zKFRFTVBM
QVRFX1BSRUZJWCwgdmMpOmNvcHkyYnVpbGQudmFyaWFibGVfb3V0ID0gUFJFX1RBUkdFVERFUFMK
K2NvcHkyYnVpbGQuY29tbWFuZHMgPSAkJFFNQUtFX0NPUFkgJHtRTUFLRV9GSUxFX0lOfSAke1FN
QUtFX0ZJTEVfT1VUfQorY29weTJidWlsZC5uYW1lID0gQ09QWSAke1FNQUtFX0ZJTEVfSU59Citj
b3B5MmJ1aWxkLkNPTkZJRyArPSBub19saW5rCitRTUFLRV9FWFRSQV9DT01QSUxFUlMgKz0gY29w
eTJidWlsZAorCitjb250YWlucyhRVF9DT05GSUcsIHJlZHVjZV9leHBvcnRzKTpDT05GSUcgKz0g
aGlkZV9zeW1ib2xzCisKK3dpbmNlKjpMSUJTICs9ICQkUU1BS0VfTElCU19HVUkKKworUVQgKz0g
d2Via2l0IHdlYmtpdC1wcml2YXRlIHF1aWNrIHF1aWNrLXByaXZhdGUKKworV0VCS0lUICs9IHd0
ZgorCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2ltcG9ydHMvJCR7VEFSR0VULm1vZHVs
ZV9uYW1lfQorCitDT05GSUcgKz0gcnBhdGgKK1JQQVRIRElSX1JFTEFUSVZFX1RPX0RFU1RESVIg
PSAuLi8uLi9saWIKKworU09VUkNFUyArPSBwbHVnaW4uY3BwCisKK2J1aWxkPyh3ZWJraXQyKTog
eworICAgIERFRklORVMgKz0gSEFWRV9XRUJLSVQyCisgICAgUVQgKz0gbmV0d29yaworfQorCisj
IFRoZSBmYWxsYmFjayB0byBRVF9JTlNUQUxMX0lNUE9SVFMgY2FuIGJlIHJlbW92ZWQgb25jZSB3
ZQorIyBkZXBlbmQgb24gUXQgNSBSQzEuCitpbXBvcnRQYXRoID0gJCRbUVRfSU5TVEFMTF9RTUxd
Citpc0VtcHR5KGltcG9ydFBhdGgpOiBpbXBvcnRQYXRoID0gJCRbUVRfSU5TVEFMTF9JTVBPUlRT
XQorCit0YXJnZXQucGF0aCA9ICQke2ltcG9ydFBhdGh9LyQke1RBUkdFVC5tb2R1bGVfbmFtZX0K
KworCitxbWxkaXIuZmlsZXMgKz0gJCRQV0QvcW1sZGlyCitxbWxkaXIucGF0aCArPSAgJCR7aW1w
b3J0UGF0aH0vJCR7VEFSR0VULm1vZHVsZV9uYW1lfQorCitJTlNUQUxMUyArPSB0YXJnZXQgcW1s
ZGlyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3FtbGRpciBiL1Nv
dXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvcW1sZGlyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjk2MmU5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L2RlY2xhcmF0aXZlL3FtbGRpcgpAQCAtMCwwICsxLDMgQEAKK21vZHVsZSBRdFdlYktpdAorcGx1
Z2luIHFtbHdlYmtpdHBsdWdpbgordHlwZWluZm8gcGx1Z2lucy5xbWx0eXBlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9kb2NzL3F0d2Via2l0LWJyaWRnZS5xZG9jIGIvU291cmNlL1dl
YktpdC9xdC9kb2NzL3F0d2Via2l0LWJyaWRnZS5xZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmM3YjNjMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L2RvY3MvcXR3ZWJraXQtYnJpZGdlLnFkb2MKQEAgLTAsMCArMSw0MjQgQEAKKy8qIQorICAgIFxp
bm1vZHVsZSBRdFdlYktpdAorICAgIFxwYWdlIHF0d2Via2l0LWJyaWRnZS5odG1sCisgICAgXHRp
dGxlIFRoZSBRdCBXZWJLaXQgQnJpZGdlCisgICAgXGNvbnRlbnRzcGFnZSBRdCBXZWJLaXQKKyAg
ICBcc2VjdGlvbjEgT3ZlcnZpZXcKKyAgICBcc2VjdGlvbjIgVGhlIHRlY2hub2xvZ3kKKworICAg
IFRoZSBRdCBXZWJLaXQgYnJpZGdlIGlzIGEgbWVjaGFuaXNtIHRoYXQgZXh0ZW5kcyBXZWJLaXQn
cyBKYXZhU2NyaXB0IGVudmlyb25tZW50IHRvIGFjY2VzcyBuYXRpdmUKKyAgICBvYmplY3RzIHJl
cHJlc2VudGVkIGFzIFxse1FPYmplY3R9cy4gSXQgdGFrZXMgYWR2YW50YWdlIG9mIHRoZSBcbHtR
T2JqZWN0fSBpbnRyb3NwZWN0aW9uLAorICAgIGEgcGFydCBvZiB0aGUgXGx7T2JqZWN0IE1vZGVs
fSwgd2hpY2ggbWFrZXMgaXQgZWFzeSB0byBpbnRlZ3JhdGUgd2l0aCB0aGUgZHluYW1pYyBKYXZh
U2NyaXB0IGVudmlyb25tZW50LgorICAgIEZvciBleGFtcGxlIFxse1FPYmplY3R9IHByb3BlcnRp
ZXMgbWFwIGRpcmVjdGx5IHRvIEphdmFTY3JpcHQgcHJvcGVydGllcy4KKworICAgIFxzZWN0aW9u
MiBVc2UgQ2FzZXMKKworICAgIFRoZXJlIGFyZSB0d28gbWFpbiB1c2UgY2FzZXMgZm9yIHRoZSBR
dCBXZWJLaXQgYnJpZGdlOiB3ZWIgY29udGVudCBpbiBuYXRpdmUgYXBwbGljYXRpb25zIGFuZCB0
aGluIGNsaWVudHMuCisKKyAgICBcc2VjdGlvbjMgV2ViIENvbnRlbnQgaW4gTmF0aXZlIEFwcGxp
Y2F0aW9ucworCisgICAgVGhpcyBpcyBhIGNvbW1vbiB1c2UgY2FzZSBpbiBjbGFzc2ljIFF0IGFw
cGxpY2F0aW9uLCBhbmQgYSBkZXNpZ24gcGF0dGVybiB1c2VkIGJ5IHNldmVyYWwgbW9kZXJuCisg
ICAgYXBwbGljYXRpb25zIGxpa2UgYW4gYXBwbGljYXRpb24gdGhhdCBjb250YWlucyBhIG1lZGlh
LXBsYXllciwgcGxheWxpc3QgbWFuYWdlciwgYW5kIG11c2ljIHN0b3JlLgorICAgIFRoZSBwbGF5
bGlzdCBtYW5hZ2VyIGlzIHVzdWFsbHkgYmVzdCBhdXRob3JlZCBhcyBhIGNsYXNzaWMgZGVza3Rv
cCBhcHBsaWNhdGlvbiwKKyAgICB3aXRoIHRoZSBuYXRpdmUtbG9va2luZyByb2J1c3QgXGx7UVdp
ZGdldH1zIGFzIHRoZSBhcHBsaWNhdGlvbidzIGJhY2tib25lLgorICAgIFRoZSBtZWRpYS1wbGF5
ZXIgY29udHJvbCB1c3VhbGx5IGhhcyBhIGN1c3RvbSBsb29rIGFuZCBmZWVsIGFuZCBpcyBiZXN0
IHdyaXR0ZW4gdXNpbmcgdGhlIFxse0dyYXBoaWNzIFZpZXcgZnJhbWV3b3JrfQorICAgIG9yIFxs
e1F0RGVjbGFyYXRpdmV9LiBUaGUgbXVzaWMgc3RvcmUsIHdoaWNoIHNob3dzIGR5bmFtaWMgY29u
dGVudAorICAgIGZyb20gdGhlIEludGVybmV0IGFuZCBnZXRzIG1vZGlmaWVkIHJhcGlkbHksIGlz
IGJlc3QgYXV0aG9yZWQgaW4gSFRNTCBhbmQgbWFpbnRhaW5lZCBvbiB0aGUgc2VydmVyLgorCisg
ICAgV2l0aCB0aGUgUXQgV2ViS2l0IGJyaWRnZSwgdGhlIG11c2ljIHN0b3JlIGNvbXBvbmVudCBj
YW4gaW50ZXJhY3Qgd2l0aCBuYXRpdmUgcGFydHMgb2YgdGhlIGFwcGxpY2F0aW9uLAorICAgIGZv
ciBleGFtcGxlLCB3aGVuIGEgZmlsZSBuZWVkcyB0byBiZSBzYXZlZCB0byBhIHNwZWNpZmljIGxv
Y2F0aW9uLgorCisgICAgXHNlY3Rpb24zIFRoaW4gQ2xpZW50cworCisgICAgVGhlIHVzZSBjYXNl
IHVzZXMgUXQgYXMgYSBuYXRpdmUgYmFja2VuZCBvZiBhIGZ1bGwgd2ViIGFwcGxpY2F0aW9uLAor
ICAgIGEgc28tY2FsbGVkIHRoaW4gY2xpZW50LiBJbiB0aGlzIHVzZSBjYXNlLCB0aGUgZW50aXJl
IFVJIGlzIGRyaXZlbiBieQorICAgIEhUTUwsIEphdmFTY3JpcHQgYW5kIENTUy4gQWRkaXRpb25h
bGx5LCBpdCB1c2VzIFF0LWJhc2VkIGNvbXBvbmVudHMgdG8KKyAgICBhY2Nlc3MgbmF0aXZlIGZl
YXR1cmVzIHVzdWFsbHkgbm90IGV4cG9zZWQgdG8gdGhlIHdlYiwgb3IgdG8gZW5hYmxlIGhlbHBl
cgorICAgIGNvbXBvbmVudHMgdGhhdCBhcmUgYmVzdCB3cml0dGVuIGluIEMrKy4KKworICAgIEFu
IGV4YW1wbGUgZm9yIHN1Y2ggYSBjbGllbnQgaXMgYSBVSSBmb3IgYSB2aWRlby1vbi1kZW1hbmQg
c2VydmljZSBvbiBhIFRWLiBUaGUgZW50aXJlIGNvbnRlbnQgYW5kCisgICAgVUkgY2FuIGJlIGtl
cHQgb24gdGhlIHNlcnZlciwgc2VydmVkIGR5bmFtaWNhbGx5IHRocm91Z2ggSFRUUCBhbmQgcmVu
ZGVyZWQgd2l0aCBXZWJLaXQuIEFkZGl0aW9uYWwKKyAgICBuYXRpdmUgY29tcG9uZW50cyBhcmUg
dXNlZCB0byBhY2Nlc3MgaGFyZHdhcmUtc3BlY2lmaWMgZmVhdHVyZXMgbGlrZSBleHRyYWN0aW5n
IGEgbGlzdCBvZiBpbWFnZXMKKyAgICBvdXQgb2YgYSB2aWRlbyBzdHJlYW0uCisKKyAgICBcc2Vj
dGlvbjIgRGlmZmVyZW5jZSBmcm9tIE90aGVyIEJyaWRnZSBUZWNobm9sb2dpZXMKKworICAgIE9m
IGNvdXJzZSwgUXQgV2ViS2l0IGlzIG5vdCB0aGUgb25seSBicmlkZ2UgdGVjaG5vbG9neSBvdXQg
dGhlcmUuIE5QQVBJLCBmb3IgZXhhbXBsZSwKKyAgICBpcyBhIGxvbmctdGltZSBzdGFuZGFyZCBm
b3Igd2ViLW5hdGl2ZSBicmlkZ2luZy4gRHVlIHRvIFF0J3MgbWV0YS1vYmplY3Qgc3lzdGVtLCBm
dWxsIGFwcGxpY2F0aW9ucworICAgIGxldmVyYWdpbmcgd2ViIHRlY2hub2xvZ2llcyBhcmUgbXVj
aCBlYXNpZXIgdG8gZGV2ZWxvcCB3aXRoIHRoZSBRdCBXZWJLaXQgYnJpZGdlIHRoYW4gd2l0aCBO
UEFQSS4gTlBBUEksIGhvd2V2ZXIsIGlzIGJldHRlcgorICAgIGZvciBjcm9zcy1icm93c2VyIHBs
dWdpbnMsIGR1ZSB0byBpdCBiZWluZyBhbiBhY2NlcHRlZCBzdGFuZGFyZC4KKworICAgIFdoZW4g
ZGV2ZWxvcGluZyBhIHBsdWdpbiBmb3IgYSBicm93c2VyLCBOUEFQSSBpcyByZWNvbW1lbmRlZC4g
V2hlbiBkZXZlbG9waW5nIGEgZnVsbCBhcHBsaWNhdGlvbgorICAgIHV0aWxpemluZyBIVE1MLXJl
bmRlcmluZywgdGhlIFF0IFdlYktpdCBicmlkZ2UgaXMgcmVjb21tZW5kZWQuCisKKyAgICBcc2Vj
dGlvbjIgUmVsYXRpb25zaGlwIHdpdGggUXQgU2NyaXB0CisKKyAgICBUaGUgUXQgV2ViS2l0IGJy
aWRnZSBpcyBzaW1pbGFyIHRvIFxse1F0IFNjcmlwdH0sIGVzcGVjaWFsbHkgZm9yIHNvbWUgb2Yg
dGhlIGZlYXR1cmVzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICBcbHtNYWtpbmcgQXBwbGljYXRpb25z
IFNjcmlwdGFibGV9IHBhZ2UuIEhvd2V2ZXIsIFF0IDQuNyBkb2VzIG5vdCBwcm92aWRlIHRoZSBm
dWxsIFF0IFNjcmlwdCBBUEkgZm9yIHdlYiBhcHBsaWNhdGlvbnMuCisgICAgRnVsbCBzdXBwb3J0
IGlzIHBsYW5uZWQgZm9yIGZ1dHVyZSB2ZXJzaW9ucy4gWW91IG1pZ2h0IG5vdGljZSB0aGF0IHNv
bWUgb2YgdGhlIGZlYXR1cmVzCisgICAgZGVzY3JpYmVkIGhlcmUgYXJlIGFuIGV4YWN0IGNvcHkg
b2YgdGhlIG9uZXMgZGVzY3JpYmVkIGluIHRoZSBcbHtNYWtpbmcgQXBwbGljYXRpb25zIFNjcmlw
dGFibGV9IHBhZ2UuIFRoYXQgaXMgYmVjYXVzZQorICAgIHRoZSBRdCBXZWJLaXQgYnJpZGdlIGlz
IGEgc3Vic2V0IG9mIHRoYXQgZnVuY3Rpb25hbGl0eSwgYW5kIHRoaXMgcGFnZSB0cmllcyB0byBj
YXB0dXJlIHRoZSBmdWxsCisgICAgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBR
dCBXZWJLaXQgYnJpZGdlIHNwZWNpZmljYWxseS4KKworICAgIFxzZWN0aW9uMSBBY2Nlc3Npbmcg
UU9iamVjdHMKKworICAgIFxzZWN0aW9uMiBNYWtpbmcgUU9iamVjdHMga25vd24gdG8gSmF2YVNj
cmlwdCB2aWEgUVdlYkZyYW1lCisKKyAgICBCeSBkZWZhdWx0LCBubyBRT2JqZWN0cyBhcmUgYWNj
ZXNzaWJsZSB0aHJvdWdoIHRoZSB3ZWIgZW52aXJvbm1lbnQsIGZvciBzZWN1cml0eSByZWFzb25z
LgorICAgIFdoZW4gYSB3ZWIgYXBwbGljYXRpb24gd2FudHMgdG8gYWNjZXNzIGEgbmF0aXZlIFFP
YmplY3QsIGl0IG11c3QgZXhwbGljaXRseSBncmFudCBhY2Nlc3MKKyAgICB0byB0aGlzIFFPYmpl
Y3QsIHVzaW5nIHRoZSBmb2xsb3dpbmcgY2FsbDoKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBw
ZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAgMAorCisgICAgU2VlIFxse1FXZWJGcmFt
ZTo6YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCl9IGZvciBtb3JlIGluZm9ybWF0aW9uLgor
CisgICAgXHNlY3Rpb24yIFVzaW5nIFNpZ25hbHMgYW5kIFNsb3RzCisKKyAgICBUaGUgUXQgV2Vi
S2l0IGJyaWRnZSBhZGFwdHMgUXQncyBjZW50cmFsIFxse1NpZ25hbHMgYW5kIFNsb3RzfSBmZWF0
dXJlIGZvcgorICAgIHNjcmlwdGluZy4gVGhlcmUgYXJlIHRocmVlIHByaW5jaXBhbCB3YXlzIHRv
IHVzZSBzaWduYWxzIGFuZCBzbG90cworICAgIHdpdGggdGhlIFF0IFdlYktpdCBicmlkZ2U6CisK
KyAgICBcbGlzdAorICAgIFxsaSBcYntIeWJyaWQgQysrL3NjcmlwdH06IEMrKyBhcHBsaWNhdGlv
biBjb2RlIGNvbm5lY3RzIGEKKyAgICBzaWduYWwgdG8gYSBzY3JpcHQgZnVuY3Rpb24uIFRoaXMg
YXBwcm9hY2ggaXMgdXNlZnVsIGlmIHlvdSBoYXZlCisgICAgYSBRT2JqZWN0IGJ1dCBkb24ndCB3
YW50IHRvIGV4cG9zZSB0aGUgb2JqZWN0IGl0c2VsZiB0byB0aGUgc2NyaXB0aW5nCisgICAgZW52
aXJvbm1lbnQuIFlvdSBqdXN0IHdhbnQgdG8gZGVmaW5lIGhvdyB0aGUgc2NyaXB0IHJlc3BvbmRz
IHRvIGEKKyAgICBzaWduYWwgYW5kIGxlYXZlIGl0IHVwIHRvIHRoZSBDKysgc2lkZSBvZiB5b3Vy
IGFwcGxpY2F0aW9uIHRvIGVzdGFibGlzaAorICAgIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhl
IEMrKyBzaWduYWwgYW5kIHRoZSBKYXZhU2NyaXB0IHNsb3QuCisKKyAgICBcbGkgXGJ7SHlicmlk
IHNjcmlwdC9DKyt9OiBBIHNjcmlwdCBjYW4gY29ubmVjdCBzaWduYWxzIGFuZCBzbG90cworICAg
IHRvIGVzdGFibGlzaCBjb25uZWN0aW9ucyBiZXR3ZWVuIHByZS1kZWZpbmVkIG9iamVjdHMgdGhh
dCB0aGUKKyAgICBhcHBsaWNhdGlvbiBleHBvc2VzIHRvIHRoZSBzY3JpcHRpbmcgZW52aXJvbm1l
bnQuIEluIHRoaXMgc2NlbmFyaW8sCisgICAgdGhlIHNsb3RzIHRoZW1zZWx2ZXMgYXJlIHN0aWxs
IHdyaXR0ZW4gaW4gQysrLCBidXQgdGhlIGRlZmluaXRpb24gb2YKKyAgICB0aGUgY29ubmVjdGlv
bnMgaXMgZnVsbHkgZHluYW1pYyAoc2NyaXB0LWRlZmluZWQpLgorCisgICAgXGxpIFxie1B1cmVs
eSBzY3JpcHQtZGVmaW5lZH06IEEgc2NyaXB0IGNhbiBib3RoIGRlZmluZSBzaWduYWwKKyAgICBo
YW5kbGVyIGZ1bmN0aW9ucyAoZWZmZWN0aXZlbHkgInNsb3RzIHdyaXR0ZW4gaW4gSmF2YVNjcmlw
dCIpLAorICAgIFxle2FuZH0gc2V0IHVwIHRoZSBjb25uZWN0aW9ucyB0aGF0IHV0aWxpemUgdGhv
c2UgaGFuZGxlcnMuIEZvcgorICAgIGV4YW1wbGUsIGEgc2NyaXB0IGNhbiBkZWZpbmUgYSBmdW5j
dGlvbiB0aGF0IHdpbGwgaGFuZGxlIHRoZQorICAgIFFMaW5lRWRpdDo6cmV0dXJuUHJlc3NlZCgp
IHNpZ25hbCwgYW5kIHRoZW4gY29ubmVjdCB0aGF0IHNpZ25hbCB0byB0aGUKKyAgICBzY3JpcHQg
ZnVuY3Rpb24uCisgICAgXGVuZGxpc3QKKworICAgIE5vdGUgdGhhdCBRdCBTY3JpcHQgZnVuY3Rp
b25zIHN1Y2ggYXMgcVNjcmlwdENvbm5lY3QgYXJlIHVuYXZpbGFibGUgaW4gdGhlIHdlYiBlbnZp
cm9ubWVudC4KKworICAgIFxzZWN0aW9uMyBTaWduYWwgdG8gRnVuY3Rpb24gQ29ubmVjdGlvbnMK
KworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5j
cHAgNworCisgICAgVGhlIGNhbGwgdG8gXGN7Y29ubmVjdCgpfSBlc3RhYmxpc2hlcyBhIGNvbm5l
Y3Rpb24gYmV0d2VlbiB0aGUgc2lnbmFsCisgICAgXGN7c29tZXRoaW5nQ2hhbmdlZH0gYW5kIHRo
ZSBzbG90IFxje215SW50ZXJlc3RpbmdTY3JpcHRGdW5jdGlvbn0uCisgICAgV2hlbmV2ZXIgdGhl
IG9iamVjdCBcY3tteU9iamVjdH0gZW1pdHMgdGhlIHNpZ25hbCBcY3tzb21ldGhpbmdDaGFuZ2Vk
fSwKKyAgICB0aGUgc2xvdCBcY3tteUludGVyZXN0aW5nU2NyaXB0RnVuY3Rpb259IGdldHMgY2Fs
bGVkIGF1dG9tYXRpY2FsbHkuCisKKyAgICBUaGUgYXJndW1lbnQgb2YgXGN7Y29ubmVjdCgpfSBj
YW4gYmUgYW55IEphdmFTY3JpcHQgZnVuY3Rpb24gYXMgaW4gdGhlIGFib3ZlCisgICAgZXhhbXBs
ZSBvciBhIHNsb3Qgb2YgYSBRT2JqZWN0IGFzIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKwor
ICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAg
OAorCisgICAgV2hlbiB0aGUgYXJndW1lbnQgaXMgYSBzbG90IG9mIGEgUU9iamVjdCwgdGhlIGFy
Z3VtZW50IHR5cGVzIG9mIHRoZQorICAgIHNpZ25hbCBhbmQgdGhlIHNsb3QgZG8gbm90IGhhdmUg
dG8gYmUgY29tcGF0aWJsZS4gSWYgcG9zc2libGUsIHRoZSBRdCBXZWJLaXQKKyAgICBicmlkZ2Ug
Y29udmVydHMgdGhlIHNpZ25hbCBhcmd1bWVudHMgc3VjaCB0aGF0IHRoZXkgbWF0Y2ggdGhlIHNs
b3QgYXJndW1lbnQuCisKKyAgICBUbyBkaXNjb25uZWN0IGEgc2xvdCBmcm9tIGEgc2lnbmFsLCB5
b3UgY2FsbCB0aGUgc2lnbmFsJ3MKKyAgICBcY3tkaXNjb25uZWN0KCl9IGZ1bmN0aW9uIHdpdGgg
dGhlIHNsb3QgYXMgaXRzIGFyZ3VtZW50OgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMv
cXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcCA5CisKKyAgICBXaGVuIGEgc2NyaXB0IGZ1bmN0
aW9uIGlzIGludm9rZWQgaW4gcmVzcG9uc2UgdG8gYSBzaWduYWwsIHRoZQorICAgIFxjIHRoaXMg
b2JqZWN0IHdpbGwgYmUgdGhlIEdsb2JhbCBPYmplY3QuCisKKyAgICBcc2VjdGlvbjMgU2lnbmFs
IHRvIE1lbWJlciBGdW5jdGlvbiBDb25uZWN0aW9ucworCisgICAgXHNuaXBwZXQgd2Via2l0c25p
cHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcCAxMAorCisgICAgVGhlIGNhbGwgdG8g
XGN7Y29ubmVjdCgpfSBlc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgc2lnbmFs
CisgICAgXGN7c29tZXRoaW5nQ2hhbmdlZH0gYW5kIHRoZSBzbG90IFxje2Z1bmN0aW9ufS4gV2hl
bmV2ZXIgdGhlIG9iamVjdAorICAgIFxje215T2JqZWN0fSBlbWl0cyB0aGUgc2lnbmFsIFxje3Nv
bWV0aGluZ0NoYW5nZWR9LCB0aGUgc2xvdCBcY3tmdW5jdGlvbn0KKyAgICBvZiB0aGUgb2JqZWN0
IFxje3RoaXNPYmplY3R9IGdldHMgY2FsbGVkIGF1dG9tYXRpY2FsbHkuIExldCdzIGlsbHVzdHJh
dGUKKyAgICB0aGlzIHdpdGggYW4gZXhhbXBsZS4KKworICAgIElmIHlvdSBoYXZlIGEgcHVzaCBi
dXR0b24gaW4gYSBmb3JtLCB5b3UgdHlwaWNhbGx5IHdhbnQgdGhlIGZvcm0KKyAgICB0byBkbyBz
b21ldGhpbmcgaW4gcmVzcG9uc2UgdG8gdGhlIGJ1dHRvbidzIFxje2NsaWNrZWR9IHNpZ25hbC4g
VGhlCisgICAgY2FsbCB0byBcY3tjb25uZWN0KCl9IG1ha2VzIHN1cmUgdGhhdCB0aGUgZnVuY3Rp
b24gXGN7b25DbGlja2VkKCl9IGlzCisgICAgY2FsbGVkIHdoZW5ldmVyIHlvdSBjbGljayBvbiB0
aGUgcHVzaCBidXR0b24sIHRoYXQgaXMsIHdoZW5ldmVyIHRoZQorICAgIHRoZSBzaWduYWwgXGN7
Y2xpY2tlZCgpfSBpcyBlbWl0dGVkIGJ5IFxje215QnV0dG9ufS4gVGhlIHNsb3QgXGN7b25DbGlj
a2VkKCl9CisgICAgcHJpbnRzIHRoZSB2YWx1ZSBvZiBcY3t4fSBhcyBzdG9yZWQgaW4gdGhlIFxj
e2Zvcm19LgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdlX3Nu
aXBwZXRzLmNwcCAxMQorCisgICAgVG8gZGlzY29ubmVjdCBhIHNsb3QgZnJvbSBhIHNpZ25hbCwg
eW91IHBhc3MgdGhlIHNhbWUgYXJndW1lbnRzIHRvCisgICAgXGN7ZGlzY29ubmVjdCgpfSBhcyB5
b3UgcGFzc2VkIHRvIFxje2Nvbm5lY3QoKX0uIEluIGdlbmVyYWwsIHRoaXMgbG9va3MKKyAgICBh
cyBmb2xsb3dzOgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdl
X3NuaXBwZXRzLmNwcCAxMgorCisgICAgXHNlY3Rpb24zIFNpZ25hbCB0byBOYW1lZCBNZW1iZXIg
RnVuY3Rpb24gQ29ubmVjdGlvbnMKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Vi
a2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAgMTQKKworICAgIFRoaXMgZm9ybSBvZiB0aGUgXGN7Y29u
bmVjdCgpfSBmdW5jdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBcY3t0aGlz
T2JqZWN0fSBpcworICAgIHRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGJvdW5kIHRvIFxje3RoaXN9
IHdoZW4gdGhlIGZ1bmN0aW9uIFxje2Z1bmN0aW9uTmFtZX0gaXMKKyAgICBpbnZva2VkIGluIHJl
c3BvbnNlIHRvIHRoZSBzaWduYWwgXGN7c29tZXRoaW5nQ2hhbmdlZH0uIFRoZSBzZWNvbmQgYXJn
dW1lbnQgXGN7ZnVuY3Rpb25OYW1lfSBzcGVjaWZpZXMgdGhlCisgICAgbmFtZSBvZiBhIGZ1bmN0
aW9uIHRoYXQgaXMgY29ubmVjdGVkIHRvIHRoZSBzaWduYWwuIEl0IHJlZmVycyB0byBhCisgICAg
bWVtYmVyIGZ1bmN0aW9uIG9mIHRoZSBvYmplY3QgXGN7dGhpc09iamVjdH0uCisKKyAgICBOb3Rl
IHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHJlc29sdmVkIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgbWFk
ZSwgbm90CisgICAgd2hlbiB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQuCisKKyAgICBcc25pcHBldCB3
ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9icmlkZ2Vfc25pcHBldHMuY3BwIDE1CisKKyAgICBUbyBk
aXNjb25uZWN0IGZyb20gdGhlIHNpZ25hbCwgcGFzcyB0aGUgc2FtZSBhcmd1bWVudHMgdG8gXGN7
ZGlzY29ubmVjdCgpfQorICAgIGFzIHlvdSBwYXNzZWQgdG8gXGN7Y29ubmVjdH06CisKKyAgICBc
c25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9icmlkZ2Vfc25pcHBldHMuY3BwIDE3CisK
KyAgICBcc2VjdGlvbjMgRXJyb3IgSGFuZGxpbmcKKworICAgIFdoZW4gXGN7Y29ubmVjdCgpfSBv
ciBcY3tkaXNjb25uZWN0KCl9IHN1Y2NlZWRzLCB0aGUgZnVuY3Rpb24gd2lsbAorICAgIHJldHVy
biBcY3t1bmRlZmluZWR9OyBvdGhlcndpc2UsIGl0IHdpbGwgdGhyb3cgYSBzY3JpcHQgZXhjZXB0
aW9uLgorICAgIFlvdSBjYW4gb2J0YWluIGFuIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgcmVzdWx0
aW5nIFxje0Vycm9yfSBvYmplY3QuCisgICAgRXhhbXBsZToKKworICAgIFxzbmlwcGV0IHdlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAgMTgKKworICAgIFxzZWN0aW9u
MyBFbWl0dGluZyBTaWduYWxzIGZyb20gU2NyaXB0cworCisgICAgVG8gZW1pdCBhIHNpZ25hbCBm
cm9tIHNjcmlwdCBjb2RlLCB5b3Ugc2ltcGx5IGludm9rZSB0aGUgc2lnbmFsCisgICAgZnVuY3Rp
b24sIHBhc3NpbmcgdGhlIHJlbGV2YW50IGFyZ3VtZW50czoKKworICAgIFxzbmlwcGV0IHdlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAgMTkKKworICAgIEl0IGlzIGN1
cnJlbnRseSBub3QgcG9zc2libGUgdG8gZGVmaW5lIGEgbmV3IHNpZ25hbCBpbiBhIHNjcmlwdDsK
KyAgICBpLmUuLCBhbGwgc2lnbmFscyBtdXN0IGJlIGRlZmluZWQgYnkgQysrIGNsYXNzZXMuCisK
KyAgICBcc2VjdGlvbjMgT3ZlcmxvYWRlZCBTaWduYWxzIGFuZCBTbG90cworCisgICAgV2hlbiBh
IHNpZ25hbCBvciBzbG90IGlzIG92ZXJsb2FkZWQsIHRoZSBRdCBXZWJLaXQgYnJpZGdlIHdpbGwg
YXR0ZW1wdCB0bworICAgIHBpY2sgdGhlIHJpZ2h0IG92ZXJsb2FkIGJhc2VkIG9uIHRoZSBhY3R1
YWwgdHlwZXMgb2YgdGhlIFFTY3JpcHRWYWx1ZSBhcmd1bWVudHMKKyAgICBpbnZvbHZlZCBpbiB0
aGUgZnVuY3Rpb24gaW52b2NhdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHlvdXIgY2xhc3MgaGFzIHNs
b3RzCisgICAgXGN7bXlPdmVybG9hZGVkU2xvdChpbnQpfSBhbmQgXGN7bXlPdmVybG9hZGVkU2xv
dChRU3RyaW5nKX0sIHRoZSBmb2xsb3dpbmcKKyAgICBzY3JpcHQgY29kZSB3aWxsIGJlaGF2ZSBy
ZWFzb25hYmx5OgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdl
X3NuaXBwZXRzLmNwcCAyMAorCisgICAgWW91IGNhbiBzcGVjaWZ5IGEgcGFydGljdWxhciBvdmVy
bG9hZCBieSB1c2luZyBhcnJheS1zdHlsZSBwcm9wZXJ0eSBhY2Nlc3MKKyAgICB3aXRoIHRoZSBc
bHtRTWV0YU9iamVjdDo6bm9ybWFsaXplZFNpZ25hdHVyZSgpfXtub3JtYWxpemVkIHNpZ25hdHVy
ZX0gb2YKKyAgICB0aGUgQysrIGZ1bmN0aW9uIGFzIHRoZSBwcm9wZXJ0eSBuYW1lOgorCisgICAg
XHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcCAyMQor
CisgICAgSWYgdGhlIG92ZXJsb2FkcyBoYXZlIGRpZmZlcmVudCBudW1iZXIgb2YgYXJndW1lbnRz
LCB0aGUgUXQgV2ViS2l0IGJyaWRnZSB3aWxsCisgICAgcGljayB0aGUgb3ZlcmxvYWQgd2l0aCB0
aGUgYXJndW1lbnQgY291bnQgdGhhdCBiZXN0IG1hdGNoZXMgdGhlCisgICAgYWN0dWFsIG51bWJl
ciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBzbG90LgorCisgICAgRm9yIG92ZXJsb2FkZWQg
c2lnbmFscywgSmF2YVNjcmlwdCB3aWxsIHRocm93IGFuIGVycm9yIGlmIHlvdSB0cnkgdG8gY29u
bmVjdAorICAgIHRvIHRoZSBzaWduYWwgYnkgbmFtZTsgeW91IGhhdmUgdG8gcmVmZXIgdG8gdGhl
IHNpZ25hbCB3aXRoIHRoZSBmdWxsCisgICAgbm9ybWFsaXplZCBzaWduYXR1cmUgb2YgdGhlIHBh
cnRpY3VsYXIgb3ZlcmxvYWQgeW91IHdhbnQgdG8gY29ubmVjdCB0by4KKworICAgIFxzZWN0aW9u
MyBJbnZva2FibGUgTWV0aG9kcworCisgICAgQm90aCBzbG90cyBhbmQgc2lnbmFscyBhcmUgaW52
b2thYmxlIGZyb20gc2NyaXB0cyBieSBkZWZhdWx0LiBJbiBhZGRpdGlvbiwgaXQgaXMgYWxzbwor
ICAgIHBvc3NpYmxlIHRvIGRlZmluZSBhIG1ldGhvZCB0aGF0IGlzIGludm9rYWJsZSBmcm9tIHNj
cmlwdHMsIGFsdGhvdWdoIHRoZSBtZXRob2QgaXMgbmVpdGhlciBhIHNpZ25hbCBub3IgYSBzbG90
LgorICAgIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGZ1bmN0aW9ucyB3aXRoIHJldHVy
biB0eXBlcywgYXMgc2xvdHMgbm9ybWFsbHkgZG8gbm90IHJldHVybiBhbnl0aGluZworICAgIChp
dCB3b3VsZCBiZSBtZWFuaW5nbGVzcyB0byByZXR1cm4gYSB2YWx1ZSBmcm9tIGEgc2xvdCwgYXMg
dGhlIGNvbm5lY3RlZCBzaWduYWxzIGNhbm5vdCBoYW5kbGUgcmV0dXJuIHZhbHVlcykuCisgICAg
VG8gbWFrZSBhIG5vbi1zbG90IG1ldGhvZCBpbnZva2FibGUsIHNpbXBseSBhZGQgdGhlIFFfSU5W
T0tBQkxFIG1hY3JvIGJlZm9yZSBpdHMgZGVmaW5pdGlvbjoKKworICAgIFxzbmlwcGV0IHdlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAgMjIKKworICAgIFxzZWN0aW9u
MiBBY2Nlc3NpbmcgUHJvcGVydGllcworCisgICAgVGhlIHByb3BlcnRpZXMgb2YgYSBRT2JqZWN0
IGFyZSBhdmFpbGFibGUgYXMgcHJvcGVydGllcworICAgIG9mIHRoZSBjb3JyZXNwb25kaW5nIEph
dmFTY3JpcHQgb2JqZWN0LiBXaGVuIHlvdSBtYW5pcHVsYXRlCisgICAgYSBwcm9wZXJ0eSBpbiBz
Y3JpcHQgY29kZSwgdGhlIEMrKyBnZXQvc2V0IG1ldGhvZCBmb3IgdGhhdAorICAgIHByb3BlcnR5
IHdpbGwgYXV0b21hdGljYWxseSBiZSBpbnZva2VkLiBGb3IgZXhhbXBsZSwgaWYgeW91cgorICAg
IEMrKyBjbGFzcyBoYXMgYSBwcm9wZXJ0eSBkZWNsYXJlZCBhcyBmb2xsb3dzOgorCisgICAgXHNu
aXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcCAyMworCisg
ICAgdGhlbiBzY3JpcHQgY29kZSBjYW4gZG8gdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZzoKKwor
ICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAg
MjQKKworICAgIFxzZWN0aW9uMiBBY2Nlc3NpbmcgQ2hpbGQgUU9iamVjdHMKKworICAgIEV2ZXJ5
IG5hbWVkIGNoaWxkIG9mIGEgUU9iamVjdCAodGhhdCBpcywgZXZlcnkgY2hpbGQgZm9yIHdoaWNo
CisgICAgUU9iamVjdDo6b2JqZWN0TmFtZSgpIGRvZXMgbm90IHJldHVybiB0aGUgZW1wdHkgc3Ry
aW5nKSBpcyBieSBkZWZhdWx0IGF2YWlsYWJsZSBhcworICAgIGEgcHJvcGVydHkgb2YgdGhlIEph
dmFTY3JpcHQgd3JhcHBlciBvYmplY3QuIEZvciBleGFtcGxlLAorICAgIGlmIHlvdSBoYXZlIGEg
UURpYWxvZyB3aXRoIGEgY2hpbGQgd2lkZ2V0IHdob3NlIFxje29iamVjdE5hbWV9IHByb3BlcnR5
IGlzCisgICAgXGN7Im9rQnV0dG9uIn0sIHlvdSBjYW4gYWNjZXNzIHRoaXMgb2JqZWN0IGluIHNj
cmlwdCBjb2RlIHRocm91Z2gKKyAgICB0aGUgZXhwcmVzc2lvbgorCisgICAgXHNuaXBwZXQgd2Vi
a2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcCAyNQorCisgICAgQmVjYXVz
ZSBcY3tvYmplY3ROYW1lfSBpcyBpdHNlbGYgYSBRX1BST1BFUlRZLCB5b3UgY2FuIG1hbmlwdWxh
dGUKKyAgICB0aGUgbmFtZSBpbiBzY3JpcHQgY29kZSB0byByZW5hbWUgYW4gb2JqZWN0LiBGb3Ig
ZXhhbXBsZToKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9z
bmlwcGV0cy5jcHAgMjYKKworICAgIFxzZWN0aW9uMiBEYXRhIHR5cGVzCisKKyAgICBXaGVuIGNh
bGxpbmcgc2xvdHMsIHJlY2VpdmluZyBzaWduYWxzIG9yIGFjY2Vzc2luZyBwcm9wZXJ0aWVzLCB1
c3VhbGx5IHNvbWUgcGF5bG9hZCBpcyBpbnZvbHZlZC4KKyAgICBGb3IgZXhhbXBsZSwgYSBwcm9w
ZXJ0eSAidGV4dCIgbWlnaHQgcmV0dXJuIGEgXGx7UVN0cmluZ30gcGFyYW1ldGVyLgorICAgIFRo
ZSBRdCBXZWJLaXQgYnJpZGdlIGRvZXMgdGhlIGpvYiBvZiBjb252ZXJ0aW5nIGJldHdlZW4gYSBn
aXZlbiBKYXZhU2NyaXB0IGRhdGEtdHlwZSwgYW5kIHRoZQorICAgIGV4cGVjdGVkIG9yIGdpdmVu
IFF0IHR5cGUuIEVhY2ggUXQgdHlwZSBoYXMgYSBjb3Jlc3BvbmRpbmcgc2V0IG9mIHJ1bGVzIG9m
IGhvdyBKYXZhU2NyaXB0IHRyZWF0cyBpdC4KKworICAgIFRoZSBkYXRhIHR5cGUgY29udmVyc2lv
bnMgYXJlIGFsc28gYXBwbGljYWJsZSBmb3IgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSBub24tdm9p
ZCBpbnZva2FibGUgbWV0aG9kcy4KKworICAgIFxzZWN0aW9uMyBOdW1iZXJzCisKKyAgICBBbGwg
UXQgbnVtZXJpYyBkYXRhIHR5cGVzIGFyZSBjb252ZXJ0ZWQgdG8gb3IgZnJvbSBhIEphdmFTY3Jp
cHQgbnVtYmVyLiBUaGVzZSBpbmNsdWRlIGludCwgc2hvcnQsIGZsb2F0LAorICAgIGRvdWJsZSwg
YW5kIHRoZSBwb3J0YWJsZSBRdCB0eXBlcyAocXJlYWwsIHFpbnQgZXRjKS4gQSBzcGVjaWFsIGNh
c2UgaXMgXGx7UUNoYXJ9LgorICAgIElmIGEgc2xvdCBleHBlY3RzIGEgUUNoYXIsIHRoZSBRdCBX
ZWJLaXQgYnJpZGdlIHVzZXMgdGhlIFVuaWNvZGUgdmFsdWUgaW4gY2FzZSBvZiBhIG51bWJlciBh
bmQgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBjYXNlIG9mIGEgc3RyaW5nLgorCisgICAgTm90ZSB0
aGF0IG5vbi1zdGFuZGFyZCAodHlwZWRlZidlZCkgbnVtYmVyIHR5cGVzIGFyZSBub3QgYXV0b21h
dGljYWxseSBjb252ZXJ0ZWQgdG8KKyAgICBvciBmcm9tIGEgSmF2YVNjcmlwdCBudW1iZXIgLSB3
ZSBzdWdnZXN0IHRvIHVzZSBzdGFuZGFyZCBudW1iZXIgdHlwZXMgZm9yIHNpZ25hbHMsIHNsb3Rz
CisgICAgYW5kIHByb3BlcnRpZXMuCisKKyAgICBXaGVuIGEgbm9uLW51bWJlciBpcyBwYXNzZWQg
YXMgYW4gYXJndW1lbnQgdG8gYSBtZXRob2Qgb3IgcHJvcGVydHkgdGhhdCBleHBlY3RzIGEgbnVt
YmVyLAorICAgIHRoZSBhcHByb3ByaWF0ZSBKYXZhU2NyaXB0IGNvbnZlcnNpb24gZnVuY3Rpb24g
KHBhcnNlSW50IC8gcGFyc2VGbG9hdCkgaXMgdXNlZC4KKworICAgIFxzZWN0aW9uMyBTdHJpbmdz
CisKKyAgICBXaGVuIEphdmFTY3JpcHQgYWNjZXNzZXMgbWV0aG9kcyBvciBwcm9wZXJ0aWVzIHRo
YXQgZXhwZWN0IGEgXGx7UVN0cmluZ30sIHRoZSBRdCBXZWJLaXQgYnJpZGdlCisgICAgd2lsbCBh
dXRvbWF0aWNhbGx5IGNvbnZlcnQgdGhlIHZhbHVlIHRvIGEgc3RyaW5nIChpZiBpdCBpcyBub3Qg
YWxyZWFkeSBhIHN0cmluZyksIHVzaW5nIHRoZQorICAgIGJ1aWx0LWluIEphdmFTY3JpcHQgdG9T
dHJpbmcgbWV0aG9kLgorCisgICAgV2hlbiBhIFFTdHJpbmcgaXMgcGFzc2VkIHRvIEphdmFTY3Jp
cHQgZnJvbSBhIHNpZ25hbCBvciBhIHByb3BlcnR5LCB0aGUgUXQgV2ViS2l0IGJyaWRnZQorICAg
IGNvbnZlcnRzIGl0IGludG8gYSBKYXZhU2NyaXB0IHN0cmluZy4KKworICAgIFxzZWN0aW9uMyBE
YXRlICYgVGltZQorCisgICAgQm90aCBcbHtRRGF0ZX0sIFxse1FUaW1lfSBhbmQgXGx7UURhdGVU
aW1lfSBhcmUgYXV0b21hdGljYWxseSB0cmFuc2xhdGVkIHRvIG9yIGZyb20gdGhlIEphdmFTY3Jp
cHQKKyAgICBEYXRlIG9iamVjdC4gSWYgYSBudW1iZXIgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50
IHRvIGEgbWV0aG9kIHRoYXQgZXhwZWN0cyBvbmUgb2YgdGhlIGRhdGUvdGltZQorICAgIHR5cGVz
LCB0aGUgUXQgV2ViS2l0IGJyaWRnZSB0cmVhdHMgaXQgYXMgYSB0aW1lc3RhbXAuIElmIGEgc3Rp
bmcgaXMgcGFzc2VkLCBRdCBXZWJLaXQKKyAgICB0cmllcyB0aGUgZGlmZmVyZW50IFF0IGRhdGUg
cGFyc2luZyBmdW5jdGlvbnMgdG8gcGVyZm9ybSB0aGUgcmlnaHQgdHJhbnNsYXRpb24uCisKKyAg
ICBcc2VjdGlvbjMgUmVndWxhciBFeHByZXNzaW9ucworCisgICAgVGhlIFF0IFdlYktpdCBicmlk
Z2UgYXV0b21hdGljYWxseSBjb252ZXJ0cyBhIEphdmFTY3JpcHQgUmVnRXggb2JqZWN0IHRvIGEg
XGx7UVJlZ0V4cH0uCisgICAgSWYgYSBzdHJpbmcgaXMgcGFzc2VkIHRvIGEgbWV0aG9kIGV4cGVj
dGluZyBhIFxse1FSZWdFeHB9LCB0aGUgc3RyaW5nIGlzIGNvbnZlcnRlZAorICAgIHRvIGEgXGx7
UVJlZ0V4cH0uCisKKyAgICBcc2VjdGlvbjMgTGlzdHMKKworICAgIFRoZSBRdCBXZWJLaXQgYnJp
ZGdlIHRyZWF0cyBzZXZlcmFsIHR5cGVzIG9mIGxpc3RzIGluIGEgc3BlY2lhbCB3YXk6IFxse1FW
YXJpYW50TGlzdH0sIFxse1FTdHJpbmdMaXN0fSwKKyAgICBcbHtRT2JqZWN0TGlzdH0gYW5kIFxs
e1FMaXN0fTxpbnQ+LiBXaGVuIGEgc2xvdCBvciBwcm9wZXJ0eSBleHBlY3RzIG9uZSBvZiB0aG9z
ZSBsaXN0IHR5cGVzLAorICAgIHRoZSBRdCBXZWJLaXQgYnJpZGdlIHRyaWVzIHRvIGNvbnZlcnQg
YSBKYXZhU2NyaXB0IGFycmF5IGludG8gdGhhdCB0eXBlLCBjb252ZXJ0aW5nIGVhY2ggb2YKKyAg
ICB0aGUgYXJyYXkncyBlbGVtZW50cyB0byB0aGUgc2luZ2xlLWVsZW1lbnQgdHlwZSBvZiB0aGUg
bGlzdC4KKworICAgIFRoZSBtb3N0IHVzZWZ1bCB0eXBlIG9mIGxpc3QgaXMgXGx7UVZhcmlhbnRM
aXN0fSwgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCB0byBhbmQgZnJvbSBhbnkKKyAgICBKYXZhU2Ny
aXB0IGFycmF5LgorCisgICAgXHNlY3Rpb24zIENvbXBvdW5kIChKU09OKSBvYmplY3RzCisKKyAg
ICBKYXZhU2NyaXB0IGNvbXBvdW5kIG9iamVjdHMsIGFsc28ga25vd24gYXMgSlNPTiBvYmplY3Rz
LCBhcmUgdmFyaWFibGVzIHRoYXQgaG9sZCBhIGxpc3QKKyAgICBvZiBrZXktdmFsdWUgcGFpcnMs
IHdoZXJlIGFsbCB0aGUga2V5cyBhcmUgc3RyaW5ncyBhbmQgdGhlIHZhbHVlcyBjYW4gaGF2ZSBh
bnkgdHlwZS4KKyAgICBUaGlzIHRyYW5zbGF0ZXMgdmVyeSB3ZWxsIHRvIFxse1FWYXJpYW50TWFw
fSwgd2hpY2ggaXMgbm90aGluZyBtb3JlIHRoYW4gYSBcbHtRTWFwfSBmcm9tIFxse1FTdHJpbmd9
CisgICAgdG8gXGx7UVZhcmlhbnR9LgorCisgICAgVGhlIHNlYW1sZXNzIGNvbnZlcnNpb24gYmV0
d2VlbiBKU09OIG9iamVjdHMgYW5kIFxse1FWYXJpYW50TWFwfSBhbGxvd3MgZm9yIGEgdmVyeSBj
b252ZW5pZW50CisgICAgd2F5IG9mIHBhc3NpbmcgYXJiaXRyYXJ5IHN0cnVjdHVyZWQgZGF0YSBi
ZXR3ZWVuIEMrKyBhbmQgdGhlIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuIElmIHRoZSBuYXRpdmUg
XGx7UU9iamVjdH0gbWFrZXMgc3VyZSB0aGF0IGNvbXBvdW5kIHZhbHVlcyBhcmUgY29udmVydGVk
IHRvIFxse1FWYXJpYW50TWFwfXMgYW5kIFxse1FWYXJpYW50TGlzdH1zLCBKYXZhU2NyaXB0IGlz
CisgICAgZ3VhcmFudGVlZCB0byByZWNlaXZlIHRoZW0gaW4gYSBtZWFuaW5nZnVsIHdheS4KKwor
ICAgIE5vdGUgdGhhdCB0eXBlcyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IEpTT04sIHN1Y2gg
YXMgSmF2YVNjcmlwdCBmdW5jdGlvbnMgYW5kIGdldHRlcnMvc2V0dGVycywKKyAgICBhcmUgbm90
IGNvbnZlcnRlZC4KKworICAgIFxzZWN0aW9uMyBRVmFyaWFudHMKKworICAgIFdoZW4gYSBzbG90
IG9yIHByb3BlcnR5IGFjY2VwdHMgYSBcbHtRVmFyaWFudH0sIHRoZSBRdCBXZWJLaXQgYnJpZGdl
IGNyZWF0ZXMgYSBcbHtRVmFyaWFudH0gdGhhdCBiZXN0CisgICAgbWF0Y2hlcyB0aGUgYXJndW1l
bnQgcGFzc2VkIGJ5IEphdmFTY3JpcHQuIEEgc3RyaW5nLCBmb3IgZXhhbXBsZSwgYmVjb21lcyBh
IFxse1FWYXJpYW50fSBob2xkaW5nIGEgXGx7UVN0cmluZ30sCisgICAgYSBub3JtYWwgSlNPTiBv
YmplY3QgYmVjb21lcyBhIFxse1FWYXJpYW50TWFwfSwgYW5kIGEgSmF2YVNjcmlwdCBhcnJheSBi
ZWNvbWVzIGEgXGx7UVZhcmlhbnRMaXN0fS4KKworICAgIFVzaW5nIFxse1FWYXJpYW50fXMgZ2Vu
ZXJvdXNseSBpbiBDKysgaW4gdGhhdCB3YXkgbWFrZXMgQysrIHByb2dyYW1taW5nIGZlZWwgYSBi
aXQgbW9yZSBsaWtlIEphdmFTY3JpcHQgcHJvZ3JhbW1pbmcsCisgICAgYXMgaXQgYWRkcyBhbm90
aGVyIGxldmVsIG9mIGluZGlyZWN0aW9uLiBQYXNzaW5nIFxse1FWYXJpYW50fXMgYXJvdW5kIGxp
a2UgdGhpcyAgICBpcyB2ZXJ5IGZsZXhpYmxlLiBUaGUgcHJvZ3JhbSBjYW4gZmlndXJlIG91dAor
ICAgIHRoZSB0eXBlIG9mIGFyZ3VtZW50IGF0IHJ1bnRpbWUganVzdCBsaWtlIEphdmFTY3JpcHQg
d291bGQgZG8uIEJ1dCBkb2luZyBzbyBhbHNvIHRha2VzIGF3YXkgdGhlIHR5cGUgc2FmZXR5IGFu
ZCByb2J1c3RuZXNzIG9mIEMrKy4KKyAgICBXZSByZWNvbW1lbmRlZCB0byB1c2UgXGx7UVZhcmlh
bnR9cyBvbmx5IGZvciBoaWdoLWxldmVsIGZ1bmN0aW9ucywgYW5kIHRvIGtlZXAgbW9zdCBvZiB5
b3VyCisgICAgXGx7UU9iamVjdH1zIHR5cGUtc2FmZS4KKworICAgIFxzZWN0aW9uMyBRT2JqZWN0
cworCisgICAgUG9pbnRlcnMgdG8gYSBcbHtRT2JqZWN0fSBvciBhIFxse1FXaWRnZXR9IGNhbiBi
ZSB1c2VkIGluIHNpZ25hbHMsIHNsb3RzIGFuZCBwcm9wZXJ0aWVzLiBUaGlzIG9iamVjdAorICAg
IGNhbiB0aGVuIGJlIHVzZWQgbGlrZSBhbiBvYmplY3QgdGhhdCBpcyBleHBvc2VkIGRpcmVjdGx5
LiBJdHMgc2xvdHMgY2FuIGJlIGludm9rZWQsIGl0cyBzaWduYWxzIGNvbm5lY3RlZCB0bywgZXRj
LgorICAgIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBmYWlybHkgbGltaXRlZCAtIHRo
ZSB0eXBlIHVzZWQgaGFzIHRvIGJlIFxse1FPYmplY3R9KiBvciBcbHtRV2lkZ2V0fSouIElmIHRo
ZSB0eXBlCisgICAgc3BlY2lmaWVkIGlzIGEgcG9pbnRlciB0byBhIG5vbi1cbHtRV2lkZ2V0fSBz
dWJjbGFzcyBvZiBcbHtRT2JqZWN0fSwgdGhlIFF0IFdlYktpdCBicmlkZ2UgZG9lcyBub3QgcmVj
b2duaXplIGl0IGFzCisgICAgYSBcbHtRT2JqZWN0fS4KKworICAgIEluIGdlbmVyYWwgaXRzIGFk
dmlzZWQgdG8gdXNlIGNhcmUgd2hlbiBwYXNzaW5nIFxse1FPYmplY3R9cyBhcyBhcmd1bWVudHMs
IGFzIHRob3NlIG9iamVjdHMgZG9uJ3QgYmVjb21lIG93bmVkIGJ5CisgICAgdGhlIEphdmFTY3Jp
cHQgZW5naW5lOyBUaGF0IG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGRldmVsb3BlciBoYXMg
dG8gYmUgZXh0cmEgY2FyZWZ1bCBub3QgdG8gdHJ5IHRvIGFjY2VzcworICAgIFxse1FPYmplY3R9
cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRlbGV0ZWQgYnkgdGhlIG5hdGl2ZSBlbnZpcm9ubWVu
dC4KKworICAgIFxzZWN0aW9uMyBQaXhtYXBzIGFuZCBJbWFnZXMKKworICAgIFxzaW5jZSA0LjcK
KworICAgIFRoZSBRdCBXZWJLaXQgYnJpZGdlIGhhbmRsZXMgXGx7UVBpeG1hcH1zIGFuZCBcbHtR
SW1hZ2V9cyBpbiBhIHNwZWNpYWwgd2F5LiBTaW5jZSBRdCBXZWJLaXQgc3RvcmVzIFxse1FQaXht
YXB9cyB0bworICAgIHJlcHJlc2VudCBIVE1MIGltYWdlcywgXGx7UVBpeG1hcH1zIGNvbWluZyBm
cm9tIHRoZSBuYXRpdmUgZW52aXJvbm1lbnQgY2FuIGJlIHVzZWQgZGlyZWN0bHkgaW5zaWRlIFdl
YktpdC4KKyAgICBBIFxse1FJbWFnZX0gb3IgYSBcbHtRUGl4bWFwfSBjb21pbmcgZnJvbSBRdCBp
cyBjb252ZXJ0ZWQgdG8gYW4gaW50ZXJtZWRpYXRlIEphdmFTY3JpcHQgb2JqZWN0LAorICAgIHdo
aWNoIGNhbiBiZSByZXByZXNlbnRlZCBsaWtlIHRoaXM6CisKKyAgICBcc25pcHBldCB3ZWJraXRz
bmlwcGV0cy9xdHdlYmtpdF9icmlkZ2Vfc25pcHBldHMuY3BwIDEKKworICAgIFRoZSBKYXZhU2Ny
aXB0IGVudmlyb25tZW50IGNhbiB0aGVuIHVzZSB0aGUgcGl4bWFwIGZyb20gUXQgYW5kIGRpc3Bs
YXkgaXQgaW5zaWRlIHRoZSBIVE1MIGVudmlyb25tZW50LAorICAgIGJ5IGFzc2lnbmluZyBpdCB0
byBhbiBleGlzdGluZyBcY3s8aW1nPn0gZWxlbWVudCB3aXRoIFxje2Fzc2lnblRvSFRNTEltYWdl
RWxlbWVudCgpfS4gSXQgY2FuIGFsc28gdXNlIHRoZSBcY3t0b0RhdGFVUkwoKX0gZnVuY3Rpb24s
CisgICAgd2hpY2ggYWxsb3dzIHVzaW5nIHRoZSBwaXhtYXAgYXMgdGhlIFxje3NyY30gYXR0cmli
dXRlIG9mIGFuIGltYWdlIG9yIGFzIGEgXGN7YmFja2dyb3VuZC1pbWFnZX0gVVJMLiBOb3RlIHRo
YXQgdGhlIFxje3RvRGF0YVVSTCgpfQorICAgIGZ1bmN0aW9uIGlzIGNvc3RseSBhbmQgc2hvdWxk
IGJlIHVzZWQgd2l0aCBjYXV0aW9uLgorICAgIEl0IGNhbiBhbHNvIHVzZSB0aGUgXGN7dG9JbWFn
ZURhdGEoKX0gZnVuY3Rpb24gdG8gY29udmVydCB0aGUgcGl4bWFwIHRvIGEgSmF2YVNjcmlwdCBc
Y3tJbWFnZURhdGF9IG9iamVjdC4KKworICAgIEV4YW1wbGUgY29kZToKKworICAgIEMrKzoKKyAg
ICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9icmlkZ2Vfc25pcHBldHMuY3BwIDIK
KworICAgIEhUTUw6CisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdl
X3NuaXBwZXRzLmNwcCAzCisKKyAgICBXaGVuIGEgUXQgb2JqZWN0IGV4cGVjdHMgYSBcbHtRSW1h
Z2V9IG9yIGEgXGx7UVBpeG1hcH0gYXMgaW5wdXQsIGFuZCB0aGUgYXJndW1lbnQgcGFzc2VkIGlz
IGFuIEhUTUwgaW1hZ2UgZWxlbWVudCwKKyAgICB0aGUgUXQgV2ViS2l0IGJyaWRnZSB3b3VsZCBj
b252ZXJ0IHRoZSBwaXhtYXAgYXNzaWduZWQgdG8gdGhhdCBpbWFnZSBlbGVtZW50IGludG8gYSBc
bHtRUGl4bWFwfSBvciBhIFxse1FJbWFnZX0uCisKKyAgICBcc2luY2UgNC43CisKKyAgICBcc2Vj
dGlvbjMgUVdlYkVsZW1lbnQKKworICAgIEEgc2lnbmFsLCBzbG90IG9yIHByb3BlcnR5IHRoYXQg
ZXhwZWN0cyBvciByZXR1cm5zIGEgXGx7UVdlYkVsZW1lbnR9IGNhbiB3b3JrIHNlYW1sZXNzbHkg
d2l0aCBKYXZhU2NyaXB0IHJlZmVyZW5jZXMKKyAgICB0byBET00gZWxlbWVudHMuIFRoZSBKYXZh
U2NyaXB0IGVudmlyb25tZW50IGNhbiBzZWxlY3QgRE9NIGVsZW1lbnRzLCBrZWVwIHRoZW0gaW4g
dmFyaWFibGVzLCB0aGVuIHBhc3MgdGhlbSB0byBRdCBhcworICAgIGEgXGx7UVdlYkVsZW1lbnR9
LCBhbmQgcmVjZWl2ZSB0aGVtIGJhY2suIEV4YW1wbGU6CisKKyAgICBDKys6CisgICAgXHNuaXBw
ZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcCA0CisKKyAgICBI
VE1MOgorICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0
cy5jcHAgNQorCisgICAgVGhpcyBpcyBzcGVjaWZpY2FsbHkgdXNlZnVsIHRvIGNyZWF0ZSBjdXN0
b20gcmVuZGVyZXJzIG9yIGV4dGVuc2lvbnMgdG8gdGhlIHdlYiBlbnZpcm9ubWVudC4gSW5zdGVh
ZCBvZiBmb3JjaW5nIFF0CisgICAgdG8gc2VsZWN0IHRoZSBlbGVtZW50LCB0aGUgd2ViIGVudmly
b25tZW50IHNlbGVjdHMgdGhlIGVsZW1lbnQgYW5kIHRoZW4gc2VuZHMgdGhlIHNlbGVjdGVkIGVs
ZW1lbnQgZGlyZWN0bHkgdG8gUXQuCisKKyAgICBOb3RlIHRoYXQgXGx7UVdlYkVsZW1lbnR9cyBh
cmUgbm90IHRocmVhZCBzYWZlIC0gYW4gb2JqZWN0IGhhbmRsaW5nIHRoZW0gaGFzIHRvIGxpdmUg
aW4gdGhlIFVJIHRocmVhZC4KKworICAgIFxzZWN0aW9uMSBBcmNoaXRlY3R1cmUgSXNzdWVzCisK
KyAgICBcc2VjdGlvbjIgTGltaXRpbmcgdGhlIFNjb3BlIG9mIHRoZSBIeWJyaWQgTGF5ZXIKKwor
ICAgIFdoZW4gdXNpbmcgUXQgV2ViS2l0J3MgaHlicmlkIGZlYXR1cmVzLCBpdCBpcyBhIGNvbW1v
biBwaXRmYWxsIHRvIG1ha2UgdGhlIEFQSSBleHBvc2VkIHRvIEphdmFTY3JpcHQgdmVyeSByaWNo
IGFuZAorICAgIHVzZSBhbGwgaXRzIGZlYXR1cmVzLiBUaGlzLCBob3dldmVyLCBsZWFkcyB0byBj
b21wbGV4aXR5IGFuZCBjYW4gY3JlYXRlIGJ1Z3MgdGhhdCBhcmUgaGFyZCB0byBmaW5kLgorICAg
IEluc3RlYWQsIGl0IGlzIGFkdmlzYWJsZSB0byBrZWVwIHRoZSBoeWJyaWQgbGF5ZXIgc21hbGwg
YW5kIG1hbmFnZWFibGU6IGNyZWF0ZSBhIGdhdGUgb25seSB3aGVuCisgICAgdGhlcmUncyBhbiBh
Y3R1YWwgbmVlZCBmb3IgaXQsIGkuZS4gdGhlcmUncyBhIG5ldyBuYXRpdmUgZW5hYmxlciB0aGF0
IHJlcXVpcmVzIGEgZGlyZWN0IGludGVyZmFjZQorICAgIHRvIHRoZSBhcHBsaWNhdGlvbiBsYXll
ci4gU29tZXRpbWVzIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGJldHRlciBoYW5kbGVkIGludGVybmFs
bHkgaW4gdGhlIG5hdGl2ZSBsYXllcgorICAgIG9yIGluIHRoZSB3ZWIgbGF5ZXI7IHNpbXBsaWNp
dHkgaXMgeW91ciBmcmllbmQuCisKKyAgICBUaGlzIHVzdWFsbHkgYmVjb21lcyBtb3JlIGFwcGFy
ZW50IHdoZW4gdGhlIGh5YnJpZCBsYXllciBjYW4gY3JlYXRlIG9yIGRlc3Ryb3kgb2JqZWN0cywg
b3IgdXNlcworICAgIHNpZ25hbHMsIHNsb3RzIG9yIHByb3BlcnRpZXMgd2l0aCBhIFxse1FPYmpl
Y3R9KiBhcmd1bWVudC4gSXQgaXMgYWR2aXNlZCB0byBiZSB2ZXJ5IGNhcmVmdWwgYW5kIHRvIHRy
ZWF0CisgICAgYW4gZXhwb3NlZCBcbHtRT2JqZWN0fSBhcyBhIHN5c3RlbSAtIHdpdGggY2FyZWZ1
bCBhdHRlbnRpb24gdG8gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIG9iamVjdCBvd25lcnNoaXAuCisK
KyAgICBcc2VjdGlvbjIgSW50ZXJuZXQgU2VjdXJpdHkKKworICAgIFdoZW4gZXhwb3NpbmcgbmF0
aXZlIG9iamVjdHMgdG8gYW4gb3BlbiB3ZWIgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudCB0
byB1bmRlcnN0YW5kIHRoZSBzZWN1cml0eQorICAgIGltcGxpY2F0aW9ucy4gVGhpbmsgd2hldGhl
ciB0aGUgZXhwb3NlZCBvYmplY3QgZW5hYmxlcyB0aGUgd2ViIGVudmlyb25tZW50IGFjY2VzcyB0
aGluZ3MgdGhhdAorICAgIHNob3VsZG4ndCBiZSBvcGVuLCBhbmQgd2hldGhlciB0aGUgd2ViIGNv
bnRlbnQgbG9hZGVkIGJ5IHRoYXQgd2ViIHBhZ2UgY29tZXMgZnJvbSBhIHRydXN0ZWQgc291cmNl
LiBJbiBnZW5lcmFsLCB3aGVuCisgICAgZXhwb3NpbmcgbmF0aXZlIFFPYmplY3RzIHRoYXQgZ2l2
ZSB0aGUgd2ViIGVudmlyb25tZW50IGFjY2VzcyB0byBwcml2YXRlIGluZm9ybWF0aW9uIG9yIHRv
IGZ1bmN0aW9uYWxpdHkKKyAgICB0aGF0J3MgcG90ZW50aWFsbHkgaGFybWZ1bCB0byB0aGUgY2xp
ZW50LCBzdWNoIGV4cG9zdXJlIHNob3VsZCBiZSBiYWxhbmNlZCBieSBsaW1pdGluZyB0aGUgd2Vi
IHBhZ2UncworICAgIGFjY2VzcyB0byB0cnVzdGVkIFVSTHMgb25seSB3aXRoIEhUVFBTLCBhbmQg
YnkgdXRpbGl6aW5nIG90aGVyIG1lYXN1cmVzIGFzIHBhcnQgb2YgYSBzZWN1cml0eSBzdHJhdGVn
eS4KKworCisKKyovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RvY3MvcXR3ZWJraXQt
Z29lcy1tb2JpbGUucWRvYyBiL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy9xdHdlYmtpdC1nb2VzLW1v
YmlsZS5xZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMjM2YjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3MvcXR3ZWJraXQtZ29lcy1tb2Jp
bGUucWRvYwpAQCAtMCwwICsxLDE5MSBAQAorLyohCisgICAgXGlubW9kdWxlIFF0V2ViS2l0Cisg
ICAgXHBhZ2UgcXR3ZWJraXQtZ29lcy1tb2JpbGUuaHRtbAorICAgIFx0aXRsZSBRdCBXZWJLaXQg
R29lcyBNb2JpbGUKKyAgICBcY29udGVudHNwYWdlIFF0IFdlYktpdAorICAgIFxzZWN0aW9uMSBP
dmVydmlldworCisgICAgQSBsb3Qgb2YgZWZmb3J0IGhhcyBiZWVuIHB1dCBpbnRvIFF0IFdlYktp
dCB0byBtYWtlIGl0IGF0dHJhY3RpdmUgZm9yCisgICAgdXNlIG9uIG1vYmlsZSBkZXZpY2VzLgor
CisgICAgVGhlIGdvYWwgb2YgdGhpcyB0dXRvcmlhbCBpcyB0byBoZWxwIHlvdSB1bmRlcnN0YW5k
IHRoZSBtb2JpbGUKKyAgICBmZWF0dXJlcyBhbmQgaG93IHRvIG1ha2UgdGhlIGJlc3Qgb2YgdGhl
bSwgaW4gb3RoZXIgd29yZHMsIGhvdyB0bworICAgIGNyZWF0ZSBhIGdvb2QgbW9iaWxlIHdlYiB2
aWV3IHRoYXQgY2FuIGJlIHVzZWQgb24gdG91Y2ggZGV2aWNlcy4KKworICAgIElmIHlvdSB3YW50
IHRvIHRhcmdldCBtb2JpbGUgZGV2aWNlcyB5b3Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIFxse1FH
cmFwaGljc1dlYlZpZXd9CisgICAgaW5zdGVhZCBvZiBcbHtRV2ViVmlld30uIFNpbmNlIFxse1FX
ZWJWaWV3fSBpcyBiYXNlZCBvbiB0aGUgXGx7UVdpZGdldH0KKyAgICBzeXN0ZW0sIGl0IGNhbm5v
dCBlYXNpbHkgc3VwcG9ydCByb3RhdGlvbiwgb3ZlcmxheXMsIGhhcmR3YXJlIGFjY2VsZXJhdGVk
CisgICAgY29tcG9zaXRpbmcgYW5kIHRpbGluZy4gSWYgeW91IG5lZWQgYSBcbHtRV2lkZ2V0fSBh
bnl3YXksIHlvdSBjYW4gYWx3YXlzCisgICAgY29uc3RydWN0IGEgXGx7UUdyYXBoaWNzVmlld30g
KHdoaWNoIGlzIGEgXGx7UVdpZGdldH0pIHdpdGggYSBcbHtRR3JhcGhpY3NXZWJWaWV3fSBpbnNp
ZGUuCisKKyAgICBTbyBsZXQncyBzdGFydCB3aXRoIGEgdmVyeSBzaW1wbGUgXGx7UUdyYXBoaWNz
V2ViVmlld30gYmFzZWQgImJyb3dzZXIiOgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMv
cXR3ZWJraXRfZ29lc19tb2JpbGVfc25pcHBldHMuY3BwIDAKKworICAgIEhlcmUgd2Ugc2V0IHVw
IGEgXGx7UUdyYXBoaWNzVmlld30gYXBwbGljYXRpb24gYW5kIGFkZCBhCisgICAgXGx7UUdyYXBo
aWNzV2ViVmlld30gdG8gdGhlIHNjZW5lLiBOb3RpY2UKKyAgICB0aGF0IHdlJ3JlIGRpc2FibGlu
ZyB0aGUgc2Nyb2xsYmFycyBvbiB0aGUgUUdyYXBoaWNzVmlldyBiZWNhdXNlIFF0IFdlYktpdAor
ICAgIGhhbmRsZXMgc2Nyb2xsaW5nIGFuZCBzY3JvbGxiYXJzIGF1dG9tYXRpY2FsbHkuIFRoaXMg
aXMgdG8gYWxsb3cgc2Nyb2xsaW5nCisgICAgb3B0aW1pemF0aW9ucyBhbmQgdG8gZW5hYmxlIHdl
YiBhdXRob3JzIHRvIGludGVyYWN0IHdpdGggdGhlIHNjcm9sbGJhcnMsCisgICAgZm9yIGluc3Rh
bmNlLCB0byBzdHlsZSB0aGVtIGRpZmZlcmVudGx5LgorCisgICAgT24gdG91Y2gtYmFzZWQgbW9i
aWxlIGRldmljZXMgYSBmZWF0dXJlIGtub3duIGFzIHRpbGluZyBpcyBvZnRlbiB1c2VkLiBJdAor
ICAgIGlzIHVzZWQgZHVlIHRvIHRoZSBpbnRlcmFjdGlvbiBtb2RlbCAodG91Y2gpIGFzIHdlbGwg
YXMgYSBzY3JvbGxpbmcKKyAgICBvcHRpbWl6YXRpb24uIFdpdGggdGhpcyBvcHRpbWl6YXRpb24g
d2Ugd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCBzY3JvbGxpbmcKKyAgICBvdXJzZWx2ZXMsIGFuZCB3
ZSB3aWxsIGhhdmUgdG8gZGlzYWJsZSBmZWF0dXJlcyBsaWtlIHNjcm9sbCBiYXIgc3R5bGluZy4K
KyAgICBUaGlzIGlzIG5vdCB1c3VhbGx5IGEgcHJvYmxlbSwgc2luY2UgbW9iaWxlIGJyb3dzZXJz
IGRvIG5vdCB1c3VhbGx5IHNob3cKKyAgICBzY3JvbGwgYmFycywgYnV0IHVzZSBzY3JvbGwgaW5k
aWNhdG9ycyBpbnN0ZWFkLgorCisgICAgVGlsaW5nIGJhc2ljYWxseSBtZWFucyB0aGF0IHRoZSBj
b250ZW50cyBvZiB0aGUgdmlld3BvcnQgaXMgc2VwYXJhdGVkIGludG8KKyAgICBhIGdyaWQgb2Yg
dGlsZXMsIHNvIHRoYXQgd2hlbiB5b3UgdXBkYXRlIGFuIGFyZWEsIGluc3RlYWQgb2YganVzdCB1
cGRhdGluZworICAgIHRoZSBhcmVhLCB5b3UgYWN0dWFsbHkgdXBkYXRlIHRoZSB3aG9sZSB0aWxl
IG9yIHN1Yi1yZWdpb25zIG9mIGl0LgorICAgIFRoaXMgb2ZmZXJzIGEgZmV3IGFkdmFudGFnZXMg
Zm9yIHNjcm9sbGluZyBhcywgd2hlbiB5b3Ugc2Nyb2xsLCB5b3UgZG8gbm90IG5lZWQKKyAgICB0
byByZXBhaW50IHRoZSBuZXcgdmlzaWJsZSBhcmVhIGZvciBlYWNoIHNjcm9sbCBzdGVwLCBidXQg
eW91IHNpbXBseSB1cGRhdGUgYSByb3cKKyAgICBvZiB0aWxlcyBlYWNoIHRpbWU7IHRoZXNlIHRp
bGVzIGFyZSBvZnRlbiBvbmx5IHBhcnRseSBvbiB0aGUgc2NyZWVuLgorICAgIFRoaXMgbWluaW1p
emVzIGFsbCB0aGUgcGFpbnRpbmcgY2FsbHMgdGhhdCB3ZSBoYXZlIHRvIGRvIGFuZCBlbmFibGVz
IGtpbmV0aWMgc2Nyb2xsaW5nLgorCisgICAgTG9hZGluZywgcmVuZGVyaW5nLCBhbmQgbGF5aW5n
IG91dCBhcmUgYmxvY2tpbmcgb3BlcmF0aW9ucy4gVGhvdWdoIGJhcmVseQorICAgIG5vdGljZWFi
bGUgb24gZGVza3RvcCBtYWNoaW5lcywgdGhlc2Ugb3BlcmF0aW9ucyBjYW4gYmxvY2sgZm9yIGEg
bG9uZyB0aW1lCisgICAgb24gYSBtb2JpbGUgZGV2aWNlLCBsZXR0aW5nIHRoZSB1c2VyIGJlbGll
dmUgdGhlIGFwcGxpY2F0aW9uIGhhcyBiZWNvbWUKKyAgICB1bnJlc3BvbnNpdmUuIEFkZGl0aW9u
YWxseSwgc2Nyb2xsaW5nIHdpbGwgYWxzbyBzdGFsbCB3aGVuIHRoZSB1c2VyIHVzZXMKKyAgICBo
aXMgZmluZ2VycyB0byBzY3JvbGwsIGxlYWRpbmcgdG8gYSBiYWQgdXNlciBleHBlcmllbmNlLgor
CisgICAgT25lIHdheSB0byBvdmVyY29tZSB0aGlzIGlzc3VlLCBpcyB0byBkbyBhbGwgbG9hZGlu
ZywgbGF5aW5nIG91dCBhbmQKKyAgICBwYWludGluZyAoYmFzaWNhbGx5IGFsbCBub24tVUkgcmVs
YXRlZCB3b3JrKSBpbiBhbm90aGVyIHRocmVhZCBvciBwcm9jZXNzLCBhbmQKKyAgICBqdXN0IGJs
aXQgdGhlIHJlc3VsdCBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy90aHJlYWQgdG8gdGhlIFVJLiBUaGVy
ZSBpcyByZXNlYXJjaAorICAgIGluIHByb2dyZXNzIHRvIGVuYWJsZSB0aGlzIGZvciBhIGZ1dHVy
ZSB2ZXJzaW9uIG9mIFF0IFdlYktpdCwgdXNpbmcgV2ViS2l0MiwgYnV0IGZvciBub3csCisgICAg
ZnJlZXppbmcgdGhlIGJhY2tpbmcgc3RvcmUgY2FuIGhlbHAgd2hlbiBwZXJmb3JtaW5nIGEgem9v
bWluZyBvcGVyYXRpb24sIGZvciBpbnN0YW5jZS4KKyAgICBUaGlzIHdpbGwgYmUgZGlzY3Vzc2Vk
IGxhdGVyLCBpbiB0aGUgXGx7I0VuYWJsaW5nIHRoZSBUaWxpbmd9e0VuYWJsaW5nIHRoZSBUaWxp
bmd9IHNlY3Rpb24uCisKKyAgICBXaGVuIHVzaW5nIHRpbGVzLCB5b3UgY2FuIGJsaXQgYW55IHRp
bGUgYXZhaWxhYmxlIHdoZW4gc2Nyb2xsaW5nLiBXaGVuIG5vIHRpbGUgaXMgYXZhaWxhYmxlIHlv
dQorICAgIGNhbiBzaG93IGEgY2hlY2tlcmJvYXJkIHRpbGUgaW5zdGVhZCwgbm90IGxldHRpbmcg
dGhlIHNjcm9sbGluZyB3YWl0IGZvciB0aGUKKyAgICB0aWxlcyB0byBiZSB1cGRhdGVkLiBUaGlz
IHJlc3VsdHMgaW4gYSByZXNwb25zaXZlIGludGVyZmFjZSwgd2l0aCB0aGUgb25seQorICAgIGRp
c2FkdmFudGFnZSB0aGF0IHlvdSBtaWdodCBzZWUgY2hlY2tlcmJvYXJkIHRpbGVzIGZyb20gdGlt
ZSB0byB0aW1lLgorCisgICAgVGhlIHVzZSBvZiB0aWxlcyBhbHNvIGhlbHBzIHdpdGggem9vbWlu
Zy4gUmVwYWludGluZyBhdCBlYWNoIHpvb20gbGV2ZWwgY2hhbmdlIGR1cmluZworICAgIGEgem9v
bSBhbmltYXRpb24gaXMgYmFzaWNhbGx5IGltcG9zc2libGUgb24gYSBtb2JpbGUgZGV2aWNlIChv
ciBkZXNrdG9wIGZvcgorICAgIHRoYXQgbWF0dGVyKSBhbmQgdGh1cywgd2l0aCB0aWxpbmcsIHlv
dSBjYW4gc3RvcCB0aGUgdGlsZXMgZnJvbSBiZWluZyB1cGRhdGVkIGFuZAorICAgIGp1c3Qgc2Nh
bGUgdGhlIGV4aXN0aW5nIHRpbGVzLiBUaGVuLCBhdCB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24s
IHVwZGF0ZQorICAgIHRpbGVzIG9uIHRvcCBvZiB0aGUgc2NhbGVkIG9uZXMuICBGb3Igbm93IHdl
IHdpbGwgaWdub3JlIHRoZSBibG9ja2luZworICAgIGlzc3VlIGFuZCBjb25jZW50cmF0ZSBvbiB0
aGUgdGlsaW5nIGFuZCB0aGUgaW50ZXJhY3Rpb24gbW9kZWwuCisgICAgTW9yZSBpbmZvcm1hdGlv
biBhYm91dCBUaWxpbmcgY2FuIGJlIGZvdW5kIGhlcmU6IFxse2h0dHA6Ly9kb2MucXQubm9raWEu
Y29tLzQuNy9xd2Vic2V0dGluZ3MuaHRtbCNXZWJBdHRyaWJ1dGUtZW51bX0gKHNlZSB0aGUgZW50
cnkgZm9yIFRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCkuCisKKworICAgIFxzZWN0aW9uMSBSZXNp
emUgdG8gQ29udGVudHMKKworICAgIFdoZW4gdXNpbmcgdGlsaW5nLCB3ZSB3YW50IHRoZSBcbHtR
R3JhcGhpY3NXZWJWaWV3fSB0byBhY3QgYXMgb3VyCisgICAgY29udGVudCwgYXMgaXQgc3VwcG9y
dHMgdGlsaW5nLiBJbiBvcmRlciBmb3IgdGhpcyB3ZSBuZWVkIHRvIG1ha2UgaXQKKyAgICByZXNp
emUgaXRzZWxmIHRvIHRoZSBzaXplIG9mIGl0cyBjb250ZW50cy4gRm9yIHRoaXMgd2Ugd2lsbCB1
c2UKKyAgICBcbHtRR3JhcGhpY3NXZWJWaWV3OjpyZXNpemVzVG9Db250ZW50c30uCisKKyAgICBU
aGlzIHNldHRpbmcgcmVtb3ZlcyB0aGUgc2Nyb2xsIGJhcnMgZm9yIHVzIG9uIHRoZSBtYWluIGZy
YW1lIGFuZAorICAgIG1ha2VzIG91ciBcbHtRR3JhcGhpY3NXZWJWaWV3fSByZXNpemUgaXRzZWxm
IHRvIHRoZSBzaXplIG9mIGl0cyBjb250ZW50LgorCisgICAgRW5hYmxpbmcgaXQgaXMgYXMgZWFz
eSBhcyBzZXR0aW5nIHRoZSBwcm9wZXJ0eToKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRz
L3F0d2Via2l0X2dvZXNfbW9iaWxlX3NuaXBwZXRzLmNwcCAxCisKKyAgICBUaGUgcHJvcGVydHkg
c2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICBRV2ViUGFnZTo6cHJl
ZmVycmVkQ29udGVudHNTaXplIHByb3BlcnR5LiBJZiBub3QgZXhwbGljaXRseSBzZXQsCisgICAg
aXQgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYSByZWFzb25hYmxlIHZhbHVlLgorCisgICAgSWYg
d2UgZXhwYW5kIG91ciBtb2JpbGUgd2ViIHZpZXcgdG8gdGhlIHNpemUgb2YgdGhlIGNvbnRlbnRz
CisgICAgb2YgaXRzIGNvbnRhaW5lZCBwYWdlLCB0aGUgdmlldyB3aWxsIGJlIGJpZ2dlciB0aGFu
IHRoZSBkZXZpY2Ugc2NyZWVuLgorCisKKyAgICBcc2VjdGlvbjEgVXNpbmcgYSBWaWV3IGFzIHRo
ZSBXaW5kb3cgb250byB0aGUgQ29udGVudHMKKworICAgIFRoZSBpZGVhIGlzIHRvIGhhdmUgYSBj
dXN0b20gd2lkZ2V0IHdoaWNoIGhhcyBhIFxse1FHcmFwaGljc1dlYlZpZXd9IGFzIGEKKyAgICBj
bGFzcyBtZW1iZXIuIFJlbWVtYmVyIHRoYXQgdGhlIFFHcmFwaGljc1dlYlZpZXcgd2lsbCBiZSBh
cyBiaWcgYXMgaXRzCisgICAgY29udGVudCdzIHNpemUsIHNvIHRoaXMgY3VzdG9tIHdpZGdldCB3
aWxsIHNlcnZlIGFzIGEgdmlld3BvcnQgb250byB0aGUKKyAgICB3ZWIgdmlldy4KKworICAgIFRo
ZSBmb2xsb3dpbmcgY29kZSBzbmlwcGV0IGlsbHVzdHJhdGVzIHRoaXM6CisKKyAgICBcc25pcHBl
dCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9nb2VzX21vYmlsZV9zbmlwcGV0cy5jcHAgMgorCisg
ICAgSW4gb3JkZXIgdG8gcHJvcGVybHkgaGFuZGxlIG1vdXNlIGV2ZW50cywgeW91IG11c3QgaW5z
dGFsbCBhbiBldmVudCBmaWx0ZXIKKyAgICBvbiB0aGUgd2ViIHZpZXcgb3Igc3RhY2sgaXQgYmVo
aW5kIGl0cyBwYXJlbnQgb2JqZWN0CisgICAgKFxse1FHcmFwaGljc0l0ZW06Okl0ZW1TdGFja3NC
ZWhpbmRQYXJlbnR9KS4gQnkgZG9pbmcgdGhpcyB0aGUgbW91c2UgZXZlbnRzIHdpbGwKKyAgICBy
ZWFjaCBhIFxje01vYmlsZVdlYlZpZXd9IGluc3RhbmNlIGJlZm9yZSB0aGV5IHJlYWNoIHRoZSBt
ZW1iZXIKKyAgICBcbHtRR3JhcGhpY3NXZWJWaWV3fS4gS2VlcCBpbiBtaW5kIHRoYXQgeW91J2xs
IG5lZWQgdG8gYWRkIHNvbWUgbG9naWMgaW4gb3JkZXIKKyAgICB0byBkaXN0aW5ndWlzaCBiZXR3
ZWVuIGRpZmZlcmVudCBtb3VzZSBldmVudHMgYW5kIGdlc3R1cmVzLCBzdWNoIGFzIGEKKyAgICBz
aW5nbGUgY2xpY2ssIGRvdWJsZSBjbGljayBhbmQgY2xpY2stYW5kLXBhbi4gQmVzaWRlcywgc2Ny
b2xsaW5nIGFuZAorICAgIHpvb21pbmcgd2lsbCBoYXZlIHRvIGJlIGltcGxlbWVudGVkIG1hbnVh
bGx5LgorCisKKyAgICBcc2VjdGlvbjEgQWRqdXN0aW5nIEhvdyBDb250ZW50cyBhcmUgTGFpZCBP
dXQKKworICAgIFdoZW4gdGVzdGluZyB0aGUgYWJvdmUgb24gYSBkZXZpY2UsIHlvdSB3aWxsIG5v
dGljZSB0aGF0IG1hbnkgcGFnZXMgYXJlIG5vdAorICAgIGxhaWQgb3V0IHZlcnkgbmljZWx5LiBJ
biBwYXJ0aWN1bGFyLCB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgbWF5IGJlIGxhcmdlcgorICAg
IHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBkZXZpY2UuIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2Vi
IGNvbnRlbnRzIGFyZSBsYWlkCisgICAgb3V0LiBGaXJzdCwgdGhlIHZpZXdwb3J0IHdpZHRoIGlz
IHVzZWQgZm9yIGZpdHRpbmcgdGhlIGNvbnRlbnRzLiBJZiB0aGUKKyAgICBjb250ZW50cyBkbyBu
b3QgZml0IGR1ZSB0byBhIG5vbi1mbGV4aWJsZSBlbGVtZW50IHdpdGggYSB3aWR0aCBsYXJnZXIg
dGhhbgorICAgIHRoZSB2aWV3cG9ydCB3aWR0aCwgdGhlIG1pbmltdW0gcG9zc2libGUgd2lkdGgg
d2lsbCBiZSB1c2VkLiBBcyBtb3N0IHBhZ2VzCisgICAgYXJlIHdyaXR0ZW4gd2l0aCBhIGRlc2t0
b3AgYnJvd3NlciBpbiBtaW5kLCB0aGF0IG1ha2VzIG9ubHkgdmVyeSBmZXcgc2l0ZXMKKyAgICBm
aXQgaW50byB0aGUgd2lkdGggb2YgYSBtb2JpbGUgZGV2aWNlLgorCisgICAgUXQgV2ViS2l0IGhh
cyBhIHdheSB0byBmb3JjZSBhIGxheW91dCB0byBhIGdpdmVuIHdpZHRoIG9yIGhlaWdodC4gV2hh
dCByZWFsbHkKKyAgICBtYXR0ZXJzIGhlcmUgaXMgdGhlIHdpZHRoLiBJZiB5b3UgbGF5IG91dCBh
IHBhZ2UgdG8gYSBnaXZlbiB3aWR0aCwgaXQgd2lsbCBnZXQKKyAgICB0aGF0IHdpZHRoIGFuZCBp
bWFnZXMgbWlnaHQgYmUgY3JvcHBlZC4gVGhlIHdpZHRoIG9yIGhlaWdodCBpcyBhbHNvIHVzZWQg
Zm9yCisgICAgbGF5aW5nIG91dCBmaXhlZCBlbGVtZW50cywgYnV0IHdoZW4gd2UgcmVzaXplIHRo
ZSBcbHtRR3JhcGhpY3NXZWJWaWV3fSB0byB0aGUKKyAgICBzaXplIG9mIHRoZSBjb250ZW50cywg
Zml4ZWQgZWxlbWVudHMgd2lsbCBub3QgYmUgcmVsYXRpdmUgdG8gdGhlIHZpZXcsIHdoaWNoIGlz
CisgICAgdGhlIGJlaGF2aW9yIGZvdW5kIG9uIG1vc3QgbW9iaWxlIGJyb3dzZXJzLgorCisgICAg
V2Ugc2F3IHRoYXQgdGhlIFFXZWJQYWdlOjpwcmVmZXJyZWRDb250ZW50c1NpemUgcHJvcGVydHkg
aXMgYXV0b21hdGljYWxseSBzZXQKKyAgICB0byBhIHJlYXNvbmFibGUgdmFsdWUgd2hlbiB1c2lu
ZyBcbHtRR3JhcGhpY3NXZWJWaWV3OjpyZXNpemVzVG9Db250ZW50c30uCisKKyAgICBBcyB5b3Ug
Y2FuIGltYWdpbmUsIGxheWluZyBvdXQgd2l0aCBhIHNtYWxsZXIgdmlld3BvcnQgY2FuIGNhdXNl
IHBhZ2VzIHRvCisgICAgYnJlYWssIHRoZXJlZm9yZSBhIGRlZmF1bHQgdmFsdWUgaGFzIGJlZW4g
Y2hvc2VuIHNvIHRoYXQgaXQgYWxtb3N0IGJyZWFrcyBubworICAgIHBhZ2VzIHdoaWxlIHN0aWxs
IG1ha2luZyBwYWdlcyBmaXQuIFRoaXMgdmFsdWUgaXMgOTYweDgwMC4gSWYgdGhlIGRldmljZQor
ICAgIGhhcyBhIGdyZWF0ZXIgcmVzb2x1dGlvbiwgdGhpcyB2YWx1ZSBjYW4gYmUgY2hhbmdlZCBs
aWtlIHRoaXM6CisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9nb2VzX21v
YmlsZV9zbmlwcGV0cy5jcHAgMworCisgICAgWW91IGNhbiBwbGF5IGFyb3VuZCB3aXRoIHRoaXMg
YW5kIGZpbmQgYSBzdWl0YWJsZSBzaXplIGZvciB5b3VyIGRldmljZSwKKyAgICBidXQgd2Ugd2ls
bCBrZWVwIHRoZSBkZWZhdWx0IHNpemUgZm9yIG5vdy4KKworCisgICAgXHNlY3Rpb24xIFRoZSAn
dmlld3BvcnQnIE1ldGEtVGFnCisKKyAgICBBcyBzb21lIHNpdGVzIGRvIG5vdCB3b3JrIHdpdGgg
OTYwIHBpeGVscyB3aWR0aCBvciB3YW50IHRvIGhhdmUgY29udHJvbCBvZgorICAgIGhvdyB0aGUg
cGFnZSBpcyBsYWlkIG91dCwgUXQgV2ViS2l0LCBBbmRyb2lkLCBGaXJlZm94IE1vYmlsZSBhbmQK
KyAgICB0aGUgaVBob25lIFNhZmFyaSBicm93c2VyIHN1cHBvcnQgYSBtZXRhLXRhZyBjYWxsZWQg
XGMgdmlld3BvcnQuIFRoaXMgbWFrZXMKKyAgICBpdCBwb3NzaWJsZSBmb3IgYSB3ZWIgcGFnZSB0
byBsZXQgdGhlIGJyb3dzZXIga25vdyBob3cgaXQgd2FudHMgdG8gYmUgc2hvd24uCisgICAgTW9y
ZSBpbmZvIGNhbiBiZSBmb3VuZCBpbiB0aGUKKyAgICBcbHtodHRwOi8vZGV2ZWxvcGVyLmFwcGxl
LmNvbS9zYWZhcmkvbGlicmFyeS9kb2N1bWVudGF0aW9uL2FwcGxlYXBwbGljYXRpb25zL3JlZmVy
ZW5jZS9zYWZhcml3ZWJjb250ZW50L3VzaW5ndGhldmlld3BvcnQvdXNpbmd0aGV2aWV3cG9ydC5o
dG1sfXtTYWZhcmkgRGV2ZWxvcGVyIExpYnJhcnl9LgorCisgICAgWW91IG11c3QgY29ubmVjdCB0
aGUgc2lnbmFsIFxje1FXZWJQYWdlOjp2aWV3cG9ydENoYW5nZVJlcXVlc3RlZChjb25zdAorICAg
IFFXZWJQYWdlOjpWaWV3cG9ydEhpbnRzJiBoaW50cyl9IHRvIGEgc2xvdCBvZiB5b3VyIG1vYmls
ZSB3ZWIgdmlldyBhbmQgdXNlIHdoYXQKKyAgICBpcyBwcm92aWRlZCBieSBcbHtRV2ViUGFnZTo6
Vmlld3BvcnRIaW50c30gdG8gdXBkYXRlIHlvdXIgdmlld3BvcnQgc2l6ZSwgc2NhbGUKKyAgICBy
YW5nZSwgYW5kIHNvIG9uLgorCisKKyAgICBcc2VjdGlvbjEgRW5hYmxpbmcgdGhlIFRpbGluZwor
CisgICAgV2UgaGF2ZW4ndCBhY3R1YWxseSBlbmFibGVkIHRpbGluZyB5ZXQsIHNvIGxldCdzIGdv
IGFoZWFkIGFuZCBkbyB0aGF0LiBUaGF0CisgICAgaXMgdmVyeSBzaW1wbGUgYXMgaXQgaXMgYmFz
aWNhbGx5IGEgc2V0dGluZzoKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Via2l0
X2dvZXNfbW9iaWxlX3NuaXBwZXRzLmNwcCA0CisKKyAgICBOb3RlIHRoYXQsIGlmIHlvdSBhcmUg
Z29pbmcgdG8gYWRkIGFuaW1hdGlvbnMgdG8geW91ciB6b29taW5nIG9yIHNjYWxpbmcKKyAgICBv
cGVyYXRpb25zIG9yIHdhbnQgdG8gaW1wbGVtZW50IGZhbmN5IGtpbmV0aWMgc2Nyb2xsaW5nIHlv
dSBtaWdodCB3YW50IHRvCisgICAgdGFrZSBhIGxvb2sgYXQgXGx7UUdyYXBoaWNzV2ViVmlldzo6
c2V0VGlsZWRCYWNraW5nU3RvcmVGcm96ZW4oKX0uIFdpdGggdGhpcywKKyAgICB5b3UgY2FuIGF2
b2lkIHVwZGF0ZXMgdG8geW91ciB0aWxlcyBkdXJpbmcgYW4gYW5pbWF0aW9uLCBmb3IgaW5zdGFu
Y2UuCisKKworICAgIFxzZWN0aW9uMSBBdm9pZGluZyBTY3JvbGxhYmxlIFN1YmVsZW1lbnRzCisK
KyAgICBPbmUgYmlnIGlzc3VlIHdpdGggdGhlIGFib3ZlIGlzIHRoYXQsIGlmcmFtZXMgYW5kIHNp
dGVzIHVzaW5nIGZyYW1lcyBjYW4KKyAgICBjb250YWluIHNjcm9sbGFibGUgc3ViZWxlbWVudHMu
IFRoYXQgZG9lc24ndCB3b3JrIHdlbGwgd2l0aCB0aGUgdG91Y2gKKyAgICBpbnRlcmFjdGlvbiBt
b2RlbCwgYXMgeW91IHdhbnQgYSBmaW5nZXIgc3dpcGUgdG8gc2Nyb2xsIHRoZSB3aG9sZSBwYWdl
IGFuZCBub3QKKyAgICBlbmQgdXAganVzdCBzY3JvbGxpbmcgYSBzdWJmcmFtZS4gTW9zdCBtb2Jp
bGUgYnJvd3NlcnMgd29yayBhcm91bmQgdGhpcyBieQorICAgIGVuYWJsaW5nIHNvbWV0aGluZyBj
YWxsZWQgZnJhbWUgZmxhdHRlbmluZy4gR29pbmcgc3RyYWlnaHQgdG8gdGhlIHBvaW50OgorCisg
ICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvcXR3ZWJraXRfZ29lc19tb2JpbGVfc25pcHBldHMu
Y3BwIDUKKworICAgIFRoaXMgd2lsbCBtYWtlIGFsbCBmcmFtZXMgZnJvbSBhIHdlYiBwYWdlIGV4
cGFuZCB0aGVtc2VsdmVzIHRvIHRoZSBzaXplIG9mCisgICAgdGhlaXIgY29udGVudHMsIGtlZXBp
bmcgdXMgZnJlZSBvZiBzY3JvbGxhYmxlIHN1YmFyZWFzLgorCisKKyovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L2RvY3MvcXR3ZWJraXQucWRvYyBiL1NvdXJjZS9XZWJLaXQvcXQvZG9j
cy9xdHdlYmtpdC5xZG9jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNzZm
MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3MvcXR3ZWJraXQucWRv
YwpAQCAtMCwwICsxLDIyNSBAQAorLyohCisgICAgXG1vZHVsZSBRdFdlYktpdAorICAgIFx0aXRs
ZSBRdCBXZWJLaXQgV2lkZ2V0cyBDKysgQ2xhc3NlcworICAgIFxicmllZiBQcm92aWRlcyBhIHdl
YiBicm93c2VyIGVuZ2luZSBhcyB3ZWxsIGFzIEMrKyBjbGFzc2VzIHRvIHJlbmRlciBhbmQKKyAg
ICBpbnRlcmFjdCB3aXRoIHdlYiBjb250ZW50CisKKyAgICBUbyBpbmNsdWRlIHRoZSBkZWZpbml0
aW9ucyBvZiB0aGUgbW9kdWxlJ3MgY2xhc3NlcywgdXNlIHRoZQorICAgIGZvbGxvd2luZyBkaXJl
Y3RpdmU6CisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9idWlsZF9zbmlw
cGV0LnFkb2MgMQorCisgICAgVG8gbGluayBhZ2FpbnN0IHRoZSBtb2R1bGUsIGFkZCB0aGlzIGxp
bmUgdG8geW91ciBcbCBxbWFrZSBcYworICAgIC5wcm8gZmlsZToKKworICAgIFxzbmlwcGV0IHdl
YmtpdHNuaXBwZXRzL3F0d2Via2l0X2J1aWxkX3NuaXBwZXQucWRvYyAwCisKKyovCisKKy8qIQor
ICAgIFxxbWxtb2R1bGUgUXRXZWJLaXQgMy4wCisgICAgXHRpdGxlIFF0IFdlYktpdCBRTUwgVHlw
ZXMKKyAgICBcYnJpZWYgUHJvdmlkZXMgUU1MIHR5cGVzIGZvciByZW5kZXJpbmcgd2ViIGNvbnRl
bnQgd2l0aGluIGEgUU1MIGFwcGxpY2F0aW9uCisKKyAgICBUaGUgUU1MIHR5cGVzIGNhbiBiZSBp
bXBvcnRlZCBpbnRvIHlvdXIgYXBwbGNpYXRpb24gdXNpbmcgdGhlIGZvbGxvd2luZworICAgIGlt
cG9ydCBzdGF0ZW1lbnQgaW4geW91ciAucW1sIGZpbGU6CisKKyAgICBcY29kZQorICAgIGltcG9y
dCBRdFF1aWNrIDIuMAorICAgIGltcG9ydCBRdFdlYktpdCAzLjAKKyAgICBcZW5kY29kZQorKi8K
KworLyohCisgICAgXHBhZ2UgcXR3ZWJraXR3aWRnZXRzLWluZGV4Lmh0bWwKKyAgICBcdGl0bGUg
UXQgV2ViS2l0IFdpZGdldHMKKyAgICBcaW5ncm91cCBtb2R1bGVzCisKKyAgICBcYnJpZWYgVGhl
IFF0IFdlYktpdCBXaWRnZXRzIG1vZHVsZSBwcm92aWRlcyBhIHdlYiBicm93c2VyIGVuZ2luZSBh
cyB3ZWxsIGFzCisgICAgQysrIGNsYXNzZXMgdG8gcmVuZGVyIGFuZCBpbnRlcmFjdCB3aXRoIHdl
YiBjb250ZW50LgorCisgICAgUXQgV2ViS2l0IFdpZGdldHMgcHJvdmlkZXMgYSBXZWIgYnJvd3Nl
ciBlbmdpbmUgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIGVtYmVkCisgICAgY29udGVudCBmcm9tIHRo
ZSBXb3JsZCBXaWRlIFdlYiBpbnRvIHlvdXIgUXQgYXBwbGljYXRpb24uIEF0IHRoZSBzYW1lIHRp
bWUKKyAgICBXZWIgY29udGVudCBjYW4gYmUgZW5oYW5jZWQgd2l0aCBuYXRpdmUgY29udHJvbHMu
CisKKyAgICBRdCBXZWJLaXQgV2lkZ2V0cyBwcm92aWRlcyBmYWNpbGl0aWVzIGZvciByZW5kZXJp
bmcgb2YgSHlwZXJUZXh0IE1hcmt1cAorICAgIExhbmd1YWdlIChIVE1MKSwgRXh0ZW5zaWJsZSBI
eXBlclRleHQgTWFya3VwIExhbmd1YWdlIChYSFRNTCkgYW5kIFNjYWxhYmxlCisgICAgVmVjdG9y
IEdyYXBoaWNzIChTVkcpIGRvY3VtZW50cywgc3R5bGVkIHVzaW5nIENhc2NhZGluZyBTdHlsZSBT
aGVldHMgKENTUykKKyAgICBhbmQgc2NyaXB0ZWQgd2l0aCBKYXZhU2NyaXB0LgorCisgICAgQSBi
cmlkZ2UgYmV0d2VlbiB0aGUgSmF2YVNjcmlwdCBleGVjdXRpb24gZW52aXJvbm1lbnQgYW5kIHRo
ZSBRdCBvYmplY3QKKyAgICBtb2RlbCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgY3VzdG9tIFFPYmpl
Y3RzIHRvIGJlIHNjcmlwdGVkLiBGb3IgZGV0YWlsZWQKKyAgICBkb2N1bWVudGF0aW9uIHNlZSBc
bHtUaGUgUXQgV2ViS2l0IEJyaWRnZX0uCisgICAgSW50ZWdyYXRpb24gd2l0aCB0aGUgUXQgbmV0
d29ya2luZyBtb2R1bGUgZW5hYmxlcyBXZWIgcGFnZXMgdG8gYmUgdHJhbnNwYXJlbnRseSBsb2Fk
ZWQKKyAgICBmcm9tIFdlYiBzZXJ2ZXJzLCB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0gb3IgZXZlbiB0
aGUgUXQgcmVzb3VyY2Ugc3lzdGVtLgorCisgICAgSW4gYWRkaXRpb24gdG8gcHJvdmlkaW5nIHB1
cmUgcmVuZGVyaW5nIGZlYXR1cmVzLCBIVE1MIGRvY3VtZW50cyBjYW4gYmUKKyAgICBtYWRlIGZ1
bGx5IGVkaXRhYmxlIHRvIHRoZSB1c2VyIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgXGN7Y29udGVu
dGVkaXRhYmxlfQorICAgIGF0dHJpYnV0ZSBvbiBIVE1MIGVsZW1lbnRzLgorCisgICAgUXRXZWJL
aXQgaGFzIGJlZW4gZW5oYW5jZWQgdG8gYmVjb21lIG1vcmUgYXR0cmFjdGl2ZSBvbiB0aGUgbW9i
aWxlIGZyb250IGFzIHdlbGwuCisgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIFxse1F0V2Vi
S2l0IEdvZXMgTW9iaWxlfS4KKworICAgIFF0IFdlYktpdCBpcyBiYXNlZCBvbiB0aGUgT3BlbiBT
b3VyY2UgV2ViS2l0IGVuZ2luZS4gTW9yZSBpbmZvcm1hdGlvbiBhYm91dAorICAgIFdlYktpdCBp
dHNlbGYgY2FuIGJlIGZvdW5kIG9uIHRoZSBcbHtXZWJLaXQgT3BlbiBTb3VyY2UgUHJvamVjdH0g
V2ViIHNpdGUuCisKKyAgICBcc2VjdGlvbjEgSW5jbHVkaW5nIEluIFlvdXIgUHJvamVjdAorCisg
ICAgVG8gaW5jbHVkZSB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIG1vZHVsZSdzIGNsYXNzZXMsIHVz
ZSB0aGUKKyAgICBmb2xsb3dpbmcgZGlyZWN0aXZlOgorCisgICAgXHNuaXBwZXQgd2Via2l0c25p
cHBldHMvcXR3ZWJraXRfYnVpbGRfc25pcHBldC5xZG9jIDEKKworICAgIFRvIGxpbmsgYWdhaW5z
dCB0aGUgbW9kdWxlLCBhZGQgdGhpcyBsaW5lIHRvIHlvdXIgXGwgcW1ha2UgXGMKKyAgICAucHJv
IGZpbGU6CisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9idWlsZF9zbmlw
cGV0LnFkb2MgMAorCisgICAgXHNlY3Rpb24xIE5vdGVzCisKKyAgICBcbm90ZSBCdWlsZGluZyB0
aGUgUXQgV2ViS2l0IG1vZHVsZSB3aXRoIGRlYnVnZ2luZyBzeW1ib2xzIGlzIHByb2JsZW1hdGlj
CisgICAgb24gbWFueSBwbGF0Zm9ybXMgZHVlIHRvIHRoZSBzaXplIG9mIHRoZSBXZWJLaXQgZW5n
aW5lLiBXZSByZWNvbW1lbmQKKyAgICBidWlsZGluZyB0aGUgbW9kdWxlIG9ubHkgaW4gcmVsZWFz
ZSBtb2RlIGZvciBlbWJlZGRlZCBwbGF0Zm9ybXMuCisgICAgQ3VycmVudGx5IFF0IFdlYktpdCB3
aWxsIGFsd2F5cyBiZSBjb21waWxlZCB3aXRob3V0IGRlYnVnZ2luZyBzeW1ib2xzCisgICAgd2hl
biB1c2luZyBnY2MuIFRha2UgYSBsb29rIGF0IAorICAgIFxje1Rvb2xzL21rc3BlY3MvZmVhdHVy
ZXMvcHJvZHVjdGlvbl9idWlsZC5wcmZ9IGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGlzLgorCisg
ICAgXG5vdGUgV2ViIHNpdGUgaWNvbnMsIGFsc28ga25vd24gYXMgIkZhdkljb25zIiwgYXJlIGN1
cnJlbnRseSBub3Qgc3VwcG9ydGVkCisgICAgb24gV2luZG93cy4gV2UgcGxhbiB0byBhZGRyZXNz
IHRoaXMgaW4gYSBmdXR1cmUgcmVsZWFzZS4KKworICAgIFxub3RlIFdlYktpdCBoYXMgY2VydGFp
biBtaW5pbXVtIHJlcXVpcmVtZW50cyB0aGF0IG11c3QgYmUgbWV0IG9uCisgICAgRW1iZWRkZWQg
TGludXggc3lzdGVtcy4gU2VlIHRoZSBcbHtRdCBmb3IgRW1iZWRkZWQgTGludXggUmVxdWlyZW1l
bnRzfQorICAgIGRvY3VtZW50IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgXHNlY3Rpb24x
IEFyY2hpdGVjdHVyZQorCisgICAgVGhlIGVhc2llc3Qgd2F5IHRvIHJlbmRlciBjb250ZW50IGlz
IHRocm91Z2ggdGhlIFFXZWJWaWV3IGNsYXNzLiBBcyBhCisgICAgd2lkZ2V0IGl0IGNhbiBiZSBl
bWJlZGRlZCBpbnRvIHlvdXIgZm9ybXMgb3IgYSBncmFwaGljcyB2aWV3LCBhbmQgaXQKKyAgICBw
cm92aWRlcyBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGRvd25sb2FkaW5nIGFuZCByZW5kZXJp
bmcgd2ViIHNpdGVzLgorCisgICAgXHNuaXBwZXQgd2Via2l0c25pcHBldHMvc2ltcGxlL21haW4u
Y3BwIFVzaW5nIFFXZWJWaWV3CisKKyAgICBRV2ViVmlldyBpcyB1c2VkIHRvIHZpZXcgV2ViIHBh
Z2VzLiBBbiBpbnN0YW5jZSBvZiBRV2ViVmlldyBoYXMgb25lCisgICAgUVdlYlBhZ2UuIFFXZWJQ
YWdlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgc3RydWN0dXJlIGluIGEgcGFnZSwK
KyAgICBkZXNjcmliaW5nIGZlYXR1cmVzIHN1Y2ggYXMgZnJhbWVzLCB0aGUgbmF2aWdhdGlvbiBo
aXN0b3J5LCBhbmQgdGhlCisgICAgdW5kby9yZWRvIHN0YWNrIGZvciBlZGl0YWJsZSBjb250ZW50
LgorCisgICAgSFRNTCBkb2N1bWVudHMgY2FuIGJlIG5lc3RlZCB1c2luZyBmcmFtZXMgaW4gYSBm
cmFtZXNldC4gQW4gaW5kaXZpZHVhbAorICAgIGZyYW1lIGluIEhUTUwgaXMgcmVwcmVzZW50ZWQg
dXNpbmcgdGhlIFFXZWJGcmFtZSBjbGFzcy4gVGhpcyBjbGFzcyBpbmNsdWRlcyB0aGUKKyAgICBi
cmlkZ2UgdG8gdGhlIEphdmFTY3JpcHQgd2luZG93IG9iamVjdCBhbmQgY2FuIGJlIHBhaW50ZWQg
dXNpbmcgUVBhaW50ZXIuCisgICAgRWFjaCBRV2ViUGFnZSBoYXMgb25lIFFXZWJGcmFtZSBvYmpl
Y3QgYXMgaXRzIG1haW4gZnJhbWUsIGFuZCB0aGUgbWFpbiBmcmFtZQorICAgIG1heSBjb250YWlu
IG1hbnkgY2hpbGQgZnJhbWVzLgorCisgICAgSW5kaXZpZHVhbCBlbGVtZW50cyBvZiBhbiBIVE1M
IGRvY3VtZW50IGNhbiBiZSBhY2Nlc3NlZCB2aWEgRE9NIEphdmFTY3JpcHQKKyAgICBpbnRlcmZh
Y2VzIGZyb20gd2l0aGluIGEgd2ViIHBhZ2UuIFRoZSBlcXVpdmFsZW50IG9mIHRoaXMgQVBJIGlu
IFF0IFdlYktpdAorICAgIGlzIHJlcHJlc2VudGVkIGJ5IFFXZWJFbGVtZW50LiBRV2ViRWxlbWVu
dCBvYmplY3RzIGFyZSBvYnRhaW5lZCB1c2luZyBRV2ViRnJhbWUncworICAgIFxse1FXZWJGcmFt
ZTo6fXtmaW5kQWxsRWxlbWVudHMoKX0gYW5kIFxse1FXZWJGcmFtZTo6fXtmaW5kRmlyc3RFbGVt
ZW50KCl9CisgICAgZnVuY3Rpb25zIHdpdGggQ1NTIHNlbGVjdG9yIHF1ZXJpZXMuCisKKyAgICBD
b21tb24gd2ViIGJyb3dzZXIgZmVhdHVyZXMsIGRlZmF1bHRzIGFuZCBvdGhlciBzZXR0aW5ncyBj
YW4gYmUgY29uZmlndXJlZAorICAgIHRocm91Z2ggdGhlIFFXZWJTZXR0aW5ncyBjbGFzcy4gSXQg
aXMgcG9zc2libGUgdG8gcHJvdmlkZSBkZWZhdWx0cyBmb3IgYWxsCisgICAgUVdlYlBhZ2UgaW5z
dGFuY2VzIHRocm91Z2ggdGhlIGRlZmF1bHQgc2V0dGluZ3MuIEluZGl2aWR1YWwgYXR0cmlidXRl
cworICAgIGNhbiBiZSBvdmVyaWRkZW4gYnkgdGhlIHBhZ2Ugc3BlY2lmaWMgc2V0dGluZ3Mgb2Jq
ZWN0LgorCisgICAgXHNlY3Rpb24xIE5ldHNjYXBlIFBsdWdpbiBTdXBwb3J0CisKKyAgICBcbm90
ZSBOZXRzY2FwZSBwbHVnaW4gc3VwcG9ydCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBkZXNrdG9wIHBs
YXRmb3Jtcy4KKworICAgIFNpbmNlIFdlYktpdCBzdXBwb3J0cyB0aGUgTmV0c2NhcGUgUGx1Z2lu
IEFQSSwgUXQgYXBwbGljYXRpb25zIGNhbiBkaXNwbGF5CisgICAgV2ViIHBhZ2VzIHRoYXQgZW1i
ZWQgY29tbW9uIHBsdWdpbnMgb24gcGxhdGZvcm1zIGZvciB3aGljaCB0aG9zZSBwbHVnaW5zCisg
ICAgYXJlIGF2YWlsYWJsZS4gVG8gZW5hYmxlIHBsdWdpbiBzdXBwb3J0LCB0aGUgdXNlciBtdXN0
IGhhdmUgdGhlIGFwcHJvcHJpYXRlCisgICAgYmluYXJ5IGZpbGVzIGZvciB0aG9zZSBwbHVnaW5z
IGluc3RhbGxlZCBhbmQgdGhlIFxse1FXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWR9CisgICAg
YXR0cmlidXRlIG11c3QgYmUgZW5hYmxlZCBmb3IgdGhlIGFwcGxpY2F0aW9uLgorCisgICAgVGhl
IGZvbGxvd2luZyBsb2NhdGlvbnMgYXJlIHNlYXJjaGVkIGZvciBwbHVnaW5zOgorCisgICAgXHRh
YmxlCisgICAgXGhlYWRlciBcbGkgTGludXgvVW5peCAoWDExKQorICAgIFxyb3cgXGxpCisgICAg
XGxpc3QKKyAgICBcbGkgXGN7Lm1vemlsbGEvcGx1Z2luc30gaW4gdGhlIHVzZXIncyBob21lIGRp
cmVjdG9yeQorICAgIFxsaSBcY3submV0c2NhcGUvcGx1Z2luc30gaW4gdGhlIHVzZXIncyBob21l
IGRpcmVjdG9yeQorICAgIFxsaSBTeXN0ZW0gbG9jYXRpb25zLCBzdWNoIGFzCisgICAgXGxpc3QK
KyAgICBcbGkgXGN7L3Vzci9saWIvYnJvd3Nlci9wbHVnaW5zfQorICAgIFxsaSBcY3svdXNyL2xv
Y2FsL2xpYi9tb3ppbGxhL3BsdWdpbnN9CisgICAgXGxpIFxjey91c3IvbGliL2ZpcmVmb3gvcGx1
Z2luc30KKyAgICBcbGkgXGN7L3Vzci9saWI2NC9icm93c2VyLXBsdWdpbnN9CisgICAgXGxpIFxj
ey91c3IvbGliL2Jyb3dzZXItcGx1Z2luc30KKyAgICBcbGkgXGN7L3Vzci9saWIvbW96aWxsYS9w
bHVnaW5zfQorICAgIFxsaSBcY3svdXNyL2xvY2FsL25ldHNjYXBlL3BsdWdpbnN9CisgICAgXGxp
IFxjey9vcHQvbW96aWxsYS9wbHVnaW5zfQorICAgIFxsaSBcY3svb3B0L21vemlsbGEvbGliL3Bs
dWdpbnN9CisgICAgXGxpIFxjey9vcHQvbmV0c2NhcGUvcGx1Z2luc30KKyAgICBcbGkgXGN7L29w
dC9uZXRzY2FwZS9jb21tdW5pY2F0b3IvcGx1Z2luc30KKyAgICBcbGkgXGN7L3Vzci9saWIvbmV0
c2NhcGUvcGx1Z2luc30KKyAgICBcbGkgXGN7L3Vzci9saWIvbmV0c2NhcGUvcGx1Z2lucy1saWJj
NX0KKyAgICBcbGkgXGN7L3Vzci9saWIvbmV0c2NhcGUvcGx1Z2lucy1saWJjNn0KKyAgICBcbGkg
XGN7L3Vzci9saWI2NC9uZXRzY2FwZS9wbHVnaW5zfQorICAgIFxsaSBcY3svdXNyL2xpYjY0L21v
emlsbGEvcGx1Z2luc30KKyAgICBcZW5kbGlzdAorICAgIFxsaSBMb2NhdGlvbnMgc3BlY2lmaWVk
IGJ5IGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgICBcbGlzdAorICAgIFxsaSBcY3skTU9aSUxM
QV9IT01FL3BsdWdpbnN9CisgICAgXGxpIFxjeyRNT1pfUExVR0lOX1BBVEh9CisgICAgXGxpIFxj
eyRRVFdFQktJVF9QTFVHSU5fUEFUSH0KKyAgICBcZW5kbGlzdAorICAgIFxlbmRsaXN0CisgICAg
XGVuZHRhYmxlCisKKyAgICBcdGFibGUKKyAgICBcaGVhZGVyICBcbGkgV2luZG93cworICAgIFxy
b3cgXGxpCisgICAgXGxpc3QKKyAgICBcbGkgVGhlIHVzZXIncyBcY3tBcHBsaWNhdGlvbiBEYXRh
XE1vemlsbGFccGx1Z2luc30gZGlyZWN0b3J5CisgICAgXGxpIFN0YW5kYXJkIHN5c3RlbSBsb2Nh
dGlvbnMgb2YgcGx1Z2lucyBmb3IgUXVpY2t0aW1lLCBGbGFzaCwgZXRjLgorICAgIFxlbmRsaXN0
CisgICAgXGVuZHRhYmxlCisKKyAgICBcdGFibGUKKyAgICBcaGVhZGVyIFxsaSBNYWMgT1MgWAor
ICAgIFxyb3cgXGxpCisgICAgXGxpc3QKKyAgICBcbGkgXGN7TGlicmFyeS9JbnRlcm5ldCBQbHVn
LUluc30gaW4gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeQorICAgIFxsaSBUaGUgc3lzdGVtIFxj
ey9MaWJyYXJ5L0ludGVybmV0IFBsdWctSW5zfSBkaXJlY3RvcnkKKyAgICBcZW5kbGlzdAorICAg
IFxlbmR0YWJsZQorCisgICAgXHNlY3Rpb24xIEV4YW1wbGVzCisKKyAgICBUaGVyZSBhcmUgc2V2
ZXJhbCBRdCBXZWJLaXQgV2lkZ2V0cyBleGFtcGxlcyBsb2NhdGVkIGluIHRoZQorICAgIFxse1F0
IFdlYktpdCBFeGFtcGxlc30gcGFnZS4KKworICAgIFxzZWN0aW9uMSBMaWNlbnNlIEluZm9ybWF0
aW9uCisKKyAgICBUaGlzIGlzIGEgc25hcHNob3Qgb2YgdGhlIFF0IHBvcnQgb2YgV2ViS2l0LiBU
aGUgZXhhY3QgdmVyc2lvbiBpbmZvcm1hdGlvbgorICAgIGNhbiBiZSBmb3VuZCBpbiB0aGUgXGN7
VkVSU0lPTn0gZmlsZSBzdXBwbGllZCB3aXRoIFF0LgorCisgICAgUXQgQ29tbWVyY2lhbCBFZGl0
aW9uIGxpY2Vuc2VlcyB0aGF0IHdpc2ggdG8gZGlzdHJpYnV0ZSBhcHBsaWNhdGlvbnMgdGhhdAor
ICAgIHVzZSB0aGUgUXQgV2ViS2l0IG1vZHVsZSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZWlyIG9i
bGlnYXRpb25zIHVuZGVyIHRoZQorICAgIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgKExHUEwpLgorCisgICAgRGV2ZWxvcGVycyB1c2luZyB0aGUgT3BlbiBTb3VyY2UgRWRpdGlv
biBjYW4gY2hvb3NlIHRvIHJlZGlzdHJpYnV0ZQorICAgIHRoZSBtb2R1bGUgdW5kZXIgdGhlIGFw
cHJvcHJpYXRlIHZlcnNpb24gb2YgdGhlIEdOVSBMR1BMLgorCisgICAgXGxlZ2FsZXNlCisgICAg
V2ViS2l0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlLgorICAgIEluZGl2aWR1YWwgY29udHJpYnV0b3IgbmFtZXMgYW5kIGNvcHlyaWdodCBk
YXRlcyBjYW4gYmUgZm91bmQKKyAgICBpbmxpbmUgaW4gdGhlIGNvZGUuCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICAgIFxlbmRsZWdhbGVz
ZQorKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy9xd2Vidmlldy1kaWFncmFt
LnBuZyBiL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy9xd2Vidmlldy1kaWFncmFtLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE4NjVlCkJpbmFyeSBmaWxlcyAvZGV2L251
bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC9kb2NzL3F3ZWJ2aWV3LWRpYWdyYW0ucG5nIGRpZmZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Vi
a2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25p
cHBldHMvcXR3ZWJraXRfYnJpZGdlX3NuaXBwZXRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yNzAxOGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9x
dC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X2JyaWRnZV9zbmlwcGV0cy5jcHAKQEAgLTAs
MCArMSwxNzggQEAKKwordm9pZCB3cmFwSW5GdW5jdGlvbigpCit7CisKKyAgICAvLyEgWzBdCisg
ICAgLy8gLi4uCisgICAgUVdlYkZyYW1lICpmcmFtZSA9IG15V2ViUGFnZS0+bWFpbkZyYW1lKCk7
CisgICAgZnJhbWUtPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCgic29tZU5hbWVGb3JNeU9i
amVjdCIsIG15T2JqZWN0KTsKKyAgICAvLyAuLi4KKyAgICAvLyEgWzBdCisjaWYgMAorICAgIC8v
ISBbMV0KKyAgICB7CisgICAgICAgIHdpZHRoOiAuLi4sCisgICAgICAgIGhlaWdodDogLi4uLAor
ICAgICAgICB0b0RhdGFVUkw6IGZ1bmN0aW9uKCkgeyAuLi4gfSwKKyAgICAgICAgYXNzaWduVG9I
VE1MSW1hZ2VFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KSB7IC4uLiB9CisgICAgICAgIHRvSW1h
Z2VEYXRhOiBmdW5jdGlvbigpIHsgLi4uIH0KKyAgICB9CisgICAgLy8hIFsxXQorI2VuZGlmCisg
ICAgLy8hIFsyXQorICAgIGNsYXNzIE15T2JqZWN0IDogUU9iamVjdCB7CisgICAgICAgIFFfT0JK
RUNUCisgICAgICAgIFFfUFJPUEVSVFkoUVBpeG1hcCBteVBpeG1hcCBSRUFEIGdldFBpeG1hcCkK
KworICAgIHB1YmxpYzoKKyAgICAgICAgUVBpeG1hcCBnZXRQaXhtYXAoKSBjb25zdDsKKyAgICB9
OworCisgICAgLyogLi4uICovCisKKyAgICBNeU9iamVjdCBteU9iamVjdDsKKyAgICBteVdlYlBh
Z2UubWFpbkZyYW1lKCktPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCgibXlPYmplY3QiLCAm
bXlPYmplY3QpOworCisgICAgLy8hIFsyXQorI2lmIDAKKyAgICAvLyEgWzNdCisgICAgPGh0bWw+
CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiBsb2FkSW1hZ2UoKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgbXlPYmplY3QubXlQaXhtYXAuYXNzaWduVG9IVE1MSW1hZ2VFbGVtZW50KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbWFnZUVsZW1lbnQiKSk7CisgICAgICAgICAgICAgICAgICAgIHZhciBj
b250ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhc0VsZW1lbnQiKS5nZXRDb250
ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnB1dEltYWdlRGF0YShteU9i
amVjdC5teVBpeG1hcC50b0ltYWdlRGF0YSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICA8L3NjcmlwdD4KKyAgICAgICAgPC9oZWFkPgorICAgICAgICA8Ym9keSBvbmxvYWQ9Imxv
YWRJbWFnZSgpIj4KKyAgICAgICAgICAgIDxpbWcgaWQ9ImltYWdlRWxlbWVudCIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIyMDAiIC8+CisgICAgICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXNFbGVtZW50
IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjIwMCIgLz4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRt
bD4KKy8vISBbM10KKyNlbmRpZgorLy8hIFs0XQorY2xhc3MgTXlPYmplY3QgOiBRT2JqZWN0IHsK
KyAgICAgICAgUV9PQkpFQ1QKKworICAgIHB1YmxpYyBRX1NMT1RTOgorICAgICAgICB2b2lkIGRv
U29tZXRoaW5nV2l0aFdlYkVsZW1lbnQoY29uc3QgUVdlYkVsZW1lbnQmKTsKKyAgICB9OworCisg
ICAgLyogLi4uICovCisKKyAgICBNeU9iamVjdCBteU9iamVjdDsKKyAgICBteVdlYlBhZ2UubWFp
bkZyYW1lKCktPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCgibXlPYmplY3QiLCAmbXlPYmpl
Y3QpOworCisgICAgLy8hIFs0XQorI2lmIDAKKyAgICAvLyEgWzVdCisgICAgPGh0bWw+CisgICAg
ICAgICA8aGVhZD4KKyAgICAgICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgICAgICBmdW5j
dGlvbiBydW5FeGFtcGxlKCkgeworICAgICAgICAgICAgICAgICAgICBteU9iamVjdC5kb1NvbWV0
aGluZ1dpdGhXZWJFbGVtZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzb21lRWxlbWVudCIp
KTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgICA8
L2hlYWQ+CisgICAgICAgICA8Ym9keSBvbmxvYWQ9InJ1bkV4YW1wbGUoKSI+CisgICAgICAgICAg
ICAgPHNwYW4gaWQ9InNvbWVFbGVtZW50Ij5UZXh0PC9zcGFuPgorICAgICAgICAgPC9ib2R5Pgor
ICAgICA8L2h0bWw+CisgICAgLy8hIFs1XQorICAgIC8vISBbNl0KKyAgICBjb25uZWN0KGZ1bmN0
aW9uKTsKKyAgICAvLyEgWzZdCisgICAgLy8hIFs3XQorICAgIGZ1bmN0aW9uIG15SW50ZXJlc3Rp
bmdTY3JpcHRGdW5jdGlvbigpIHsgLi4uIH0KKyAgICAuLi4KKyAgICBteVFPYmplY3Quc29tZXRo
aW5nQ2hhbmdlZC5jb25uZWN0KG15SW50ZXJlc3RpbmdTY3JpcHRGdW5jdGlvbik7CisgICAgLy8h
IFs3XQorICAgIC8vISBbOF0KKyAgICBteVFPYmplY3Quc29tZXRoaW5nQ2hhbmdlZC5jb25uZWN0
KG15T3RoZXJRT2JqZWN0LmRvU29tZXRoaW5nKTsKKyAgICAvLyEgWzhdCisgICAgLy8hIFs5XQor
ICAgIG15UU9iamVjdC5zb21ldGhpbmdDaGFuZ2VkLmRpc2Nvbm5lY3QobXlJbnRlcmVzdGluZ0Z1
bmN0aW9uKTsKKyAgICBteVFPYmplY3Quc29tZXRoaW5nQ2hhbmdlZC5kaXNjb25uZWN0KG15T3Ro
ZXJRT2JqZWN0LmRvU29tZXRoaW5nKTsKKyAgICAvLyEgWzldCisgICAgLy8hIFsxMF0KKyAgICBt
eVFPYmplY3Quc29tZXRoaW5nQ2hhbmdlZC5jb25uZWN0KHRoaXNPYmplY3QsIGZ1bmN0aW9uKQor
ICAgIC8vISBbMTBdCisgICAgLy8hIFsxMV0KKyAgICB2YXIgZm9ybSA9IHsgeDogMTIzIH07Cisg
ICAgdmFyIG9uQ2xpY2tlZCA9IGZ1bmN0aW9uKCkgeyBwcmludCh0aGlzLngpOyB9OworICAgIG15
QnV0dG9uLmNsaWNrZWQuY29ubmVjdChmb3JtLCBvbkNsaWNrZWQpOworICAgIC8vISBbMTFdCisg
ICAgLy8hIFsxMl0KKyAgICBteVFPYmplY3Quc29tZXRoaW5nQ2hhbmdlZC5kaXNjb25uZWN0KHRo
aXNPYmplY3QsIGZ1bmN0aW9uKTsKKyAgICAvLyEgWzEyXQorICAgIC8vISBbMTNdCisgICAgY29u
bmVjdChmdW5jdGlvbik7CisgICAgLy8hIFsxM10KKyAgICAvLyEgWzE0XQorICAgIG15UU9iamVj
dC5zb21ldGhpbmdDaGFuZ2VkLmNvbm5lY3QodGhpc09iamVjdCwgImZ1bmN0aW9uTmFtZSIpCisg
ICAgLy8hIFsxNF0KKyAgICAvLyEgWzE1XQorICAgIHZhciBvYmogPSB7IHg6IDEyMywgZnVuOiBm
dW5jdGlvbigpIHsgcHJpbnQodGhpcy54KTsgfSB9OworICAgIG15UU9iamVjdC5zb21ldGhpbmdD
aGFuZ2VkLmNvbm5lY3Qob2JqLCAiZnVuIik7CisgICAgLy8hIFsxNV0KKyAgICAvLyEgWzE2XQor
ICAgIGNvbm5lY3QoZnVuY3Rpb24pOworICAgIC8vISBbMTZdCisgICAgLy8hIFsxN10KKyAgICBt
eVFPYmplY3Quc29tZXRoaW5nQ2hhbmdlZC5kaXNjb25uZWN0KHRoaXNPYmplY3QsICJmdW5jdGlv
bk5hbWUiKTsKKyAgICAvLyEgWzE3XQorICAgIC8vISBbMThdCisgICAgdHJ5IHsKKyAgICAgICAg
bXlRT2JqZWN0LnNvbWV0aGluZ0NoYW5nZWQuY29ubmVjdChteVFPYmplY3QsICJzbG90VGhhdERv
ZXNudEV4aXN0Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBwcmludChlKTsKKyAgICB9
CisgICAgLy8hIFsxOF0KKyAgICAvLyEgWzE5XQorICAgIG15UU9iamVjdC5zb21ldGhpbmdDaGFu
Z2VkKCJoZWxsbyIpOworICAgIC8vISBbMTldCisgICAgLy8hIFsyMF0KKyAgICBteVFPYmplY3Qu
bXlPdmVybG9hZGVkU2xvdCgxMCk7ICAgLy8gd2lsbCBjYWxsIHRoZSBpbnQgb3ZlcmxvYWQKKyAg
ICBteVFPYmplY3QubXlPdmVybG9hZGVkU2xvdCgiMTAiKTsgLy8gd2lsbCBjYWxsIHRoZSBRU3Ry
aW5nIG92ZXJsb2FkCisgICAgLy8hIFsyMF0KKyAgICAvLyEgWzIxXQorICAgIG15UU9iamVjdFsn
bXlPdmVybG9hZGVkU2xvdChpbnQpJ10oIjEwIik7ICAgLy8gY2FsbCBpbnQgb3ZlcmxvYWQ7IHRo
ZSBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gYW4gaW50CisgICAgbXlRT2JqZWN0WydteU92ZXJs
b2FkZWRTbG90KFFTdHJpbmcpJ10oMTApOyAvLyBjYWxsIFFTdHJpbmcgb3ZlcmxvYWQ7IHRoZSBh
cmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcKKyAgICAvLyEgWzIxXQorICAgIC8vISBb
MjJdCisgICAgY2xhc3MgTXlPYmplY3QgOiBwdWJsaWMgUU9iamVjdAorICAgIHsKKyAgICAgICAg
UV9PQkpFQ1QKKworICAgIHB1YmxpYzoKKyAgICAgICAgUV9JTlZPS0FCTEUgdm9pZCB0aGlzTWV0
aG9kSXNJbnZva2FibGVJbkphdmFTY3JpcHQoKTsKKyAgICAgICAgdm9pZCB0aGlzTWV0aG9kSXNO
b3RJbnZva2FibGVJbkphdmFTY3JpcHQoKTsKKworICAgICAgICAuLi4KKyAgICB9OworICAgIC8v
ISBbMjJdCisgICAgLy8hIFsyM10KKyAgICAgICAgUV9QUk9QRVJUWShib29sIGVuYWJsZWQgUkVB
RCBlbmFibGVkIFdSSVRFIHNldEVuYWJsZWQpCisgICAgLy8hIFsyM10KKyAgICAvLyEgWzI0XQor
ICAgIG15UU9iamVjdC5lbmFibGVkID0gdHJ1ZTsKKworICAgIC4uLgorCisgICAgbXlRT2JqZWN0
LmVuYWJsZWQgPSAhbXlRT2JqZWN0LmVuYWJsZWQ7CisgICAgLy8hIFsyNF0KKyAgICAvLyEgWzI1
XQorICAgIG15RGlhbG9nLm9rQnV0dG9uCisgICAgLy8hIFsyNV0KKyAgICAvLyEgWzI2XQorICAg
IG15RGlhbG9nLm9rQnV0dG9uCisgICAgbXlEaWFsb2cub2tCdXR0b24ub2JqZWN0TmFtZSA9ICJj
YW5jZWxCdXR0b24iOworICAgIC8vIGZyb20gbm93IG9uLCBteURpYWxvZy5jYW5jZWxCdXR0b24g
cmVmZXJlbmNlcyB0aGUgYnV0dG9uCisgICAgLy8hIFsyNl0KKyNlbmRpZgorfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfYnVpbGRf
c25pcHBldC5xZG9jIGIvU291cmNlL1dlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Vi
a2l0X2J1aWxkX3NuaXBwZXQucWRvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kNGZjMmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9kb2NzL3dlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X2J1aWxkX3NuaXBwZXQucWRvYwpAQCAtMCwwICsxLDggQEAKKy8v
ISBbMF0KK1FUICs9IHdlYmtpdAorLy8hIFswXQorCisKKy8vISBbMV0KKyNpbmNsdWRlIDxRdFdl
YktpdD4KKy8vISBbMV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJraXRz
bmlwcGV0cy9xdHdlYmtpdF9nb2VzX21vYmlsZV9zbmlwcGV0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfZ29lc19tb2JpbGVfc25pcHBldHMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMjZmYmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfZ29l
c19tb2JpbGVfc25pcHBldHMuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKyNpZiAwCisvLyAhIFswXQor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIFFBcHBsaWNhdGlvbiBhcHAo
YXJnYywgYXJndik7CisgICAgY29uc3QgaW50IHdpZHRoID0gNjQwOworICAgIGNvbnN0IGludCBo
ZWlnaHQgPSA0ODA7CisKKyAgICBRR3JhcGhpY3NTY2VuZSBzY2VuZTsKKworICAgIFFHcmFwaGlj
c1ZpZXcgdmlldygmc2NlbmUpOworICAgIHZpZXcuc2V0RnJhbWVTaGFwZShRRnJhbWU6Ok5vRnJh
bWUpOworICAgIHZpZXcuc2V0VmVydGljYWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFs
d2F5c09mZik7CisgICAgdmlldy5zZXRIb3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5KFF0OjpTY3Jv
bGxCYXJBbHdheXNPZmYpOworCisgICAgUUdyYXBoaWNzV2ViVmlldyB3ZWJ2aWV3OworICAgIHdl
YnZpZXcucmVzaXplKHdpZHRoLCBoZWlnaHQpOworICAgIHdlYnZpZXcubG9hZChRVXJsKCJodHRw
Oi8vZG9jLnF0Lm5va2lhLmNvbS8iKSk7CisKKyAgICBzY2VuZS5hZGRJdGVtKCZ3ZWJ2aWV3KTsK
KworICAgIHZpZXcucmVzaXplKHdpZHRoLCBoZWlnaHQpOworICAgIHZpZXcuc2hvdygpOworCisg
ICAgcmV0dXJuIGFwcC5leGVjKCk7Cit9CisvLyAhIFswXQorCisKKy8vICEgWzFdCit3ZWJ2aWV3
LnNldFJlc2l6ZXNUb0NvbnRlbnRzKHRydWUpOworLy8gISBbMV0KKworLy8gISBbMl0KK2NsYXNz
IE1vYmlsZVdlYlZpZXcgOiBwdWJsaWMgUUdyYXBoaWNzV2lkZ2V0IHsKKyAgICBRX09CSkVDVAor
cHVibGljOgorICAgIE1vYmlsZVdlYlZpZXcoUUdyYXBoaWNzSXRlbSAqcGFyZW50ID0gMCk7Cisg
ICAgfk1vYmlsZVdlYlZpZXcoKTsKKworICAgIGJvb2wgbW91c2VQcmVzcyhjb25zdCBRUG9pbnQg
JnZhbHVlKTsKKyAgICB2b2lkIG1vdXNlTW92ZShjb25zdCBRUG9pbnQgJnZhbHVlKTsKKyAgICB2
b2lkIG1vdXNlUmVsZWFzZShjb25zdCBRUG9pbnQgJnZhbHVlKTsKKworcHJpdmF0ZToKKyAgICBR
R3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3OworfTsKKy8vICEgWzJdCisKKy8vICEgWzNdCit3ZWJ2
aWV3LnBhZ2UoKS0+c2V0UHJlZmVycmVkQ29udGVudHNTaXplKFFTaXplKGRlc2lyZWRXaWR0aCwg
ZGVzaXJlZEhlaWdodCkpOworLy8gISBbM10KKworLy8gISBbNF0KK1FXZWJTZXR0aW5nczo6Z2xv
YmFsU2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkLCB0cnVlKTsKKy8vICEgWzRdCisKKy8vICEgWzVdCitRV2ViU2V0dGluZ3M6Omds
b2JhbFNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkZyYW1lRmxhdHRlbmlu
Z0VuYWJsZSwgdHJ1ZSk7CisvLyAhIFs1XQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2Vi
aW5zcGVjdG9yX3NuaXBwZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA3ZjFkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0
c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcApAQCAtMCwwICsxLDE1
IEBACisKK3ZvaWQgd3JhcEluRnVuY3Rpb24oKQoreworCisvLyEgWzBdCisgICAgLy8gLi4uCisg
ICAgUVdlYlBhZ2UgKnBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgLy8gLi4uCisKKyAgICBRV2Vi
SW5zcGVjdG9yICppbnNwZWN0b3IgPSBuZXcgUVdlYkluc3BlY3RvcjsKKyAgICBpbnNwZWN0b3It
PnNldFBhZ2UocGFnZSk7CisvLyEgWzBdCisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJ2aWV3X3NuaXBwZXQuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJ2aWV3X3Nu
aXBwZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNGNkMjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3
ZWJraXRfcXdlYnZpZXdfc25pcHBldC5jcHAKQEAgLTAsMCArMSwzNSBAQAorCit2b2lkIHdyYXBJ
bkZ1bmN0aW9uKCkKK3sKKworLy8hIFswXQorICAgIHZpZXctPnBhZ2UoKS0+aGlzdG9yeSgpOwor
Ly8hIFswXQorCisKKy8vISBbMV0KKyAgICB2aWV3LT5wYWdlKCktPnNldHRpbmdzKCk7CisvLyEg
WzFdCisKKworLy8hIFsyXQorICAgIHZpZXctPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkNvcHkp
OworLy8hIFsyXQorCisKKy8vISBbM10KKyAgICB2aWV3LT5wYWdlKCktPnRyaWdnZXJQYWdlQWN0
aW9uKFFXZWJQYWdlOjpTdG9wKTsKKy8vISBbM10KKworCisvLyEgWzRdCisgICAgdmlldy0+cGFn
ZSgpLT50cmlnZ2VyUGFnZUFjdGlvbihRV2ViUGFnZTo6R29CYWNrKTsKKy8vISBbNF0KKworCisv
LyEgWzVdCisgICAgdmlldy0+cGFnZSgpLT50cmlnZ2VyUGFnZUFjdGlvbihRV2ViUGFnZTo6R29G
b3J3YXJkKTsKKy8vISBbNV0KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2Rv
Y3Mvd2Via2l0c25pcHBldHMvc2ltcGxlL21haW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9kb2Nz
L3dlYmtpdHNuaXBwZXRzL3NpbXBsZS9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40MDg2MzBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9k
b2NzL3dlYmtpdHNuaXBwZXRzL3NpbXBsZS9tYWluLmNwcApAQCAtMCwwICsxLDM0IEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFVcmw+
CisjaW5jbHVkZSA8UVdlYlZpZXc+CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
Cit7CisgICAgUUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKyAgICBRV2lkZ2V0ICpwYXJl
bnQgPSAwOworLy8hIFtVc2luZyBRV2ViVmlld10KKyAgICBRV2ViVmlldyAqdmlldyA9IG5ldyBR
V2ViVmlldyhwYXJlbnQpOworICAgIHZpZXctPmxvYWQoUVVybCgiaHR0cDovL3F0Lm5va2lhLmNv
bS8iKSk7CisgICAgdmlldy0+c2hvdygpOworLy8hIFtVc2luZyBRV2ViVmlld10KKyAgICByZXR1
cm4gYXBwLmV4ZWMoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJr
aXRzbmlwcGV0cy9zaW1wbGUvc2ltcGxlLnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJr
aXRzbmlwcGV0cy9zaW1wbGUvc2ltcGxlLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ZmUwOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9kb2Nz
L3dlYmtpdHNuaXBwZXRzL3NpbXBsZS9zaW1wbGUucHJvCkBAIC0wLDAgKzEsMiBAQAorUVQgICAg
ICAgKz0gd2Via2l0d2lkZ2V0cworU09VUkNFUyAgID0gbWFpbi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJlbGVtZW50L21haW4uY3BwIGIv
U291cmNlL1dlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3dlYmVsZW1lbnQvbWFpbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE3ODFhNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJlbGVtZW50L21h
aW4uY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSA8
UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNp
bmNsdWRlIDxxd2ViZnJhbWUuaD4KKyNpbmNsdWRlIDxxd2ViZWxlbWVudC5oPgorCitzdGF0aWMg
UVdlYkZyYW1lICpmcmFtZTsKKworc3RhdGljIHZvaWQgdHJhdmVyc2UoKQoreworLy8hIFtUcmF2
ZXJzaW5nIHdpdGggUVdlYkVsZW1lbnRdCisgICAgZnJhbWUtPnNldEh0bWwoIjxodG1sPjxib2R5
PjxwPkZpcnN0IFBhcmFncmFwaDwvcD48cD5TZWNvbmQgUGFyYWdyYXBoPC9wPjwvYm9keT48L2h0
bWw+Iik7CisgICAgUVdlYkVsZW1lbnQgZG9jID0gZnJhbWUtPmRvY3VtZW50RWxlbWVudCgpOwor
ICAgIFFXZWJFbGVtZW50IGJvZHkgPSBkb2MuZmlyc3RDaGlsZCgpOworICAgIFFXZWJFbGVtZW50
IGZpcnN0UGFyYWdyYXBoID0gYm9keS5maXJzdENoaWxkKCk7CisgICAgUVdlYkVsZW1lbnQgc2Vj
b25kUGFyYWdyYXBoID0gZmlyc3RQYXJhZ3JhcGgubmV4dFNpYmxpbmcoKTsKKy8vISBbVHJhdmVy
c2luZyB3aXRoIFFXZWJFbGVtZW50XQorfQorCitzdGF0aWMgdm9pZCBmaW5kQnV0dG9uQW5kQ2xp
Y2soKQoreworCisgICAgZnJhbWUtPnNldEh0bWwoIjxmb3JtIG5hbWU9XCJteWZvcm1cIiBhY3Rp
b249XCJzdWJtaXRfZm9ybS5hc3BcIiBtZXRob2Q9XCJnZXRcIj4iCisgICAgICAgICAgICAgICAg
ICAgIjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJteWZpZWxkXCI+IgorICAgICAgICAgICAg
ICAgICAgICI8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiU3VibWl0XCI+IgorICAgICAg
ICAgICAgICAgICAgICI8L2Zvcm0+Iik7CisKKy8vISBbQ2FsbGluZyBhIERPTSBlbGVtZW50IG1l
dGhvZF0KKworICAgIFFXZWJFbGVtZW50IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50RWxlbWVu
dCgpOworICAgIC8qIEFzc3VtZSB0aGF0IHRoZSBkb2N1bWVudCBoYXMgdGhlIGZvbGxvd2luZyBz
dHJ1Y3R1cmU6CisKKyAgICAgICAgPGZvcm0gbmFtZT0ibXlmb3JtIiBhY3Rpb249InN1Ym1pdF9m
b3JtLmFzcCIgbWV0aG9kPSJnZXQiPgorICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5h
bWU9Im15ZmllbGQiPgorICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1
Ym1pdCI+CisgICAgICAgIDwvZm9ybT4KKworICAgICAqLworCisgICAgUVdlYkVsZW1lbnQgYnV0
dG9uID0gZG9jdW1lbnQuZmluZEZpcnN0KCJpbnB1dFt0eXBlPXN1Ym1pdF0iKTsKKyAgICBidXR0
b24uZXZhbHVhdGVKYXZhU2NyaXB0KCJjbGljaygpIik7CisKKy8vISBbQ2FsbGluZyBhIERPTSBl
bGVtZW50IG1ldGhvZF0KKworIH0KKworc3RhdGljIHZvaWQgYXV0b2NvbXBsZXRlMSgpCit7Cisg
ICAgUVdlYkVsZW1lbnQgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisKKy8v
ISBbYXV0b2NvbXBsZXRlMV0KKyAgICBRV2ViRWxlbWVudCBmaXJzdFRleHRJbnB1dCA9IGRvY3Vt
ZW50LmZpbmRGaXJzdCgiaW5wdXRbdHlwZT10ZXh0XSIpOworICAgIFFTdHJpbmcgc3RvcmVkVGV4
dCA9IGZpcnN0VGV4dElucHV0LmF0dHJpYnV0ZSgidmFsdWUiKTsKKy8vISBbYXV0b2NvbXBsZXRl
MV0KKworfQorCisKK3N0YXRpYyB2b2lkIGF1dG9jb21wbGV0ZTIoKQoreworCisgICAgUVdlYkVs
ZW1lbnQgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUVN0cmluZyBz
dG9yZWRUZXh0ID0gInRleHQiOworCisvLyEgW2F1dG9jb21wbGV0ZTJdCisgICAgUVdlYkVsZW1l
bnQgZmlyc3RUZXh0SW5wdXQgPSBkb2N1bWVudC5maW5kRmlyc3QoImlucHV0W3R5cGU9dGV4dF0i
KTsKKyAgICB0ZXh0SW5wdXQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIHN0b3JlZFRleHQpOworLy8h
IFthdXRvY29tcGxldGUyXQorCit9CisKKworc3RhdGljIHZvaWQgZmluZEFsbCgpCit7CisvLyEg
W0ZpbmRBbGxdCisgICAgUVdlYkVsZW1lbnQgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnRFbGVt
ZW50KCk7CisgICAgLyogQXNzdW1lIHRoZSBkb2N1bWVudCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1
Y3R1cmU6CisKKyAgICAgICA8cCBjbGFzcz1pbnRybz4KKyAgICAgICAgIDxzcGFuPkludHJvPC9z
cGFuPgorICAgICAgICAgPHNwYW4+U25pcHBldHM8L3NwYW4+CisgICAgICAgPC9wPgorICAgICAg
IDxwPgorICAgICAgICAgPHNwYW4+Q29udGVudDwvc3Bhbj4KKyAgICAgICAgIDxzcGFuPkhlcmU8
L3NwYW4+CisgICAgICAgPC9wPgorICAgICovCisKKy8vISBbRmluZEFsbCBpbnRyb10KKyAgICBR
V2ViRWxlbWVudENvbGxlY3Rpb24gYWxsU3BhbnMgPSBkb2N1bWVudC5maW5kQWxsKCJzcGFuIik7
CisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIGludHJvU3BhbnMgPSBkb2N1bWVudC5maW5kQWxs
KCJwLmludHJvIHNwYW4iKTsKKy8vISBbRmluZEFsbCBpbnRyb10gLy8hIFtGaW5kQWxsXQorfQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIFFBcHBsaWNhdGlvbiBh
cHAoYXJnYywgYXJndik7CisgICAgUVdlYlZpZXcgKnZpZXcgPSBuZXcgUVdlYlZpZXcoMCk7Cisg
ICAgZnJhbWUgPSB2aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpOworICAgIHRyYXZlcnNlKCk7Cisg
ICAgZmluZEFsbCgpOworICAgIGZpbmRCdXR0b25BbmRDbGljaygpOworICAgIGF1dG9jb21wbGV0
ZTEoKTsKKyAgICBhdXRvY29tcGxldGUyKCk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvd2ViZWxlbWVudC93ZWJlbGVt
ZW50LnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJlbGVtZW50
L3dlYmVsZW1lbnQucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZTcw
MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBl
dHMvd2ViZWxlbWVudC93ZWJlbGVtZW50LnBybwpAQCAtMCwwICsxLDIgQEAKK1RFTVBMQVRFID0g
YXBwCitTT1VSQ0VTID0gbWFpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZG9j
cy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9kb2Nz
L3dlYmtpdHNuaXBwZXRzL3dlYnBhZ2UvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZGFlZWQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
ZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL21haW4uY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UVBh
aW50ZXI+CisjaW5jbHVkZSA8UVdlYkZyYW1lPgorI2luY2x1ZGUgPFFXZWJQYWdlPgorCisvLyEg
WzBdCitjbGFzcyBUaHVtYm5haWxlciA6IHB1YmxpYyBRT2JqZWN0Cit7CisgICAgUV9PQkpFQ1QK
KworcHVibGljOgorICAgIFRodW1ibmFpbGVyKGNvbnN0IFFVcmwgJnVybCk7CisKK1FfU0lHTkFM
UzoKKyAgICB2b2lkIGZpbmlzaGVkKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIHJl
bmRlcigpOworCitwcml2YXRlOgorICAgIFFXZWJQYWdlIHBhZ2U7CisKK307CisvLyEgWzBdCisK
K2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgUUFwcGxpY2F0aW9uIGFw
cChhcmdjLCBhcmd2KTsKKworICAgIFRodW1ibmFpbGVyIHRodW1ibmFpbChRVXJsKCJodHRwOi8v
cXQubm9raWEuY29tIikpOworCisgICAgUU9iamVjdDo6Y29ubmVjdCgmdGh1bWJuYWlsLCBTSUdO
QUwoZmluaXNoZWQoKSksCisgICAgICAgICZhcHAsIFNMT1QocXVpdCgpKSk7CisKKyAgICByZXR1
cm4gYXBwLmV4ZWMoKTsKK30KKworLy8hIFsxXQorVGh1bWJuYWlsZXI6OlRodW1ibmFpbGVyKGNv
bnN0IFFVcmwgJnVybCkKK3sKKyAgICBwYWdlLm1haW5GcmFtZSgpLT5sb2FkKHVybCk7CisgICAg
Y29ubmVjdCgmcGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSksCisgICAgICAgIHRoaXMs
IFNMT1QocmVuZGVyKCkpKTsKK30KKy8vISBbMV0KKworLy8hIFsyXQordm9pZCBUaHVtYm5haWxl
cjo6cmVuZGVyKCkKK3sKKyAgICBwYWdlLnNldFZpZXdwb3J0U2l6ZShwYWdlLm1haW5GcmFtZSgp
LT5jb250ZW50c1NpemUoKSk7CisgICAgUUltYWdlIGltYWdlKHBhZ2Uudmlld3BvcnRTaXplKCks
IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgUVBhaW50ZXIgcGFpbnRlcigmaW1hZ2UpOwor
CisgICAgcGFnZS5tYWluRnJhbWUoKS0+cmVuZGVyKCZwYWludGVyKTsKKyAgICBwYWludGVyLmVu
ZCgpOworCisgICAgUUltYWdlIHRodW1ibmFpbCA9IGltYWdlLnNjYWxlZCg0MDAsIDQwMCk7Cisg
ICAgdGh1bWJuYWlsLnNhdmUoInRodW1ibmFpbC5wbmciKTsKKworICAgIGVtaXQgZmluaXNoZWQo
KTsKK30KKy8vISBbMl0KKyNpbmNsdWRlICJtYWluLm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL3dlYnBhZ2UucHJvIGIvU291cmNl
L1dlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3dlYnBhZ2Uvd2VicGFnZS5wcm8KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5YzY5MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy93ZWJwYWdlL3dlYnBhZ2UucHJv
CkBAIC0wLDAgKzEsMyBAQAorQ09ORklHICs9IGNvbnNvbGUKK1FUICs9IHdlYmtpdHdpZGdldHMK
K1NPVVJDRVMgPSBtYWluLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9leGFtcGxl
cy9leGFtcGxlcy5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL2V4YW1wbGVzLnBybwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGRjNTg5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9leGFtcGxlcy5wcm8KQEAgLTAsMCArMSwy
IEBACitURU1QTEFURSA9IHN1YmRpcnMKK1NVQkRJUlMgPSBwbGF0Zm9ybXBsdWdpbgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZXhhbXBs
ZXMvcGxhdGZvcm1wbHVnaW4vUkVBRE1FIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0
Zm9ybXBsdWdpbi9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIy
MGQwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZv
cm1wbHVnaW4vUkVBRE1FCkBAIC0wLDAgKzEsMTQgQEAKK1BsYXRmb3JtIHBsdWdpbiBleGFtcGxl
LgorCitUaGlzIHByb2plY3Qgd2lsbCBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBuYW1lZCBwbGF0
Zm9ybXBsdWdpbiBpbiBkaXJlY3RvcnkgJCRbUVRfSU5TVEFMTF9QTFVHSU5TXS93ZWJraXQKK3Ro
YXQgd2lsbCBwcm92aWRlIGNvbWJvIGJveGVzIHBvcHVwcyB0byBRdFdlYktpdC4KKworUXRXZWJL
aXQgd2lsbCBsb29rIGZvciB0aGUgcGx1Z2lucyBhdXRvbWF0aWNhbGx5IHNvIHRoZXJlIGlzIG5v
IG5lZWQgdG8gbWFrZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB0bworcHV0IHRoZSBwbHVnaW4g
aW50byB1c2UuIFRvIHN0b3AgdXNpbmcgdGhlIHBsdWdpbiBqdXN0IHJlbW92ZSB0aGUgZGlyZWN0
b3J5ICQkW1FUX0lOU1RBTExfUExVR0lOU10vd2Via2l0LgorCitBIGNvcHkgb2YgcXdlYmtpdHBs
YXRmb3JtcGx1Z2luLmggaXMgcHJvdmlkZWQgd2l0aCB0aGUgZXhhbXBsZSwgYXMgcGxhdGZvcm0g
cGx1Z2lucyBzaG91bGQgbm90IGRlcGVuZAorb24gdGhlIHByZWNlbnNlIG9mIFF0V2ViS2l0IHRv
IGJ1aWxkLgorCitUaGlzIHBsdWdpbiBjYW4gcHJvdmlkZSBwb3B1cHMgZm9yIDxzZWxlY3QgbXVs
dGlwbGU+IGVsZW1lbnRzIGJ1dCB0byB1c2UgdGhpcyBmZWF0dXJlIFF0V2ViS2l0IG11c3QgYmUK
K2NvbXBpbGVkIHdpdGggTk9fTElTVEJPWF9SRU5ERVJJTkcgZW5hYmxlZC4KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdp
bi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjMzOWJhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2V4
YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgiCisKK1dlYk5vdGlmaWNhdGlvbldpZGdldDo6V2ViTm90aWZpY2F0aW9uV2lk
Z2V0KCkKKyAgICA6IFFXaWRnZXQoKQoreworfQorCitXZWJOb3RpZmljYXRpb25XaWRnZXQ6On5X
ZWJOb3RpZmljYXRpb25XaWRnZXQoKQoreworfQorCit2b2lkIFdlYk5vdGlmaWNhdGlvbldpZGdl
dDo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBRV2ViTm90aWZpY2F0aW9uRGF0YSogZGF0YSkKK3sK
KyAgICBRUGl4bWFwIG1hc2s7CisgICAgUVBhaW50ZXIgcGFpbnRlcigmbWFzayk7CisgICAgcGFp
bnRlci5maWxsUmVjdCgwLCAwLCAzMDAsIDEwMCwgUXQ6OmxpZ2h0R3JheSk7CisgICAgUUJpdG1h
cCBiaXRtYXAobWFzayk7CisgICAgc2V0TWFzayhiaXRtYXApOworICAgIFFHcmlkTGF5b3V0KiBs
YXlvdXQgPSBuZXcgUUdyaWRMYXlvdXQodGhpcyk7CisgICAgbGF5b3V0LT5hZGRXaWRnZXQobmV3
IFFMYWJlbChkYXRhLT50aXRsZSgpKSwgMCwgMCwgMSwgNSk7CisgICAgaW50IG1lc3NhZ2VQb3Np
dGlvbiA9IDA7CisKKyAgICBRTGFiZWwqIG1lc3NhZ2VMYWJlbCA9IG5ldyBRTGFiZWwoZGF0YS0+
bWVzc2FnZSgpKTsKKyAgICBtZXNzYWdlTGFiZWwtPnNldE1hc2soYml0bWFwKTsKKyAgICBtZXNz
YWdlTGFiZWwtPnNldFdvcmRXcmFwKHRydWUpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KG1lc3Nh
Z2VMYWJlbCwgMSwgbWVzc2FnZVBvc2l0aW9uLCAxLCA1IC0gbWVzc2FnZVBvc2l0aW9uKTsKKyAg
ICBzZXRMYXlvdXQobGF5b3V0KTsKKyAgICBzZXRGaXhlZFNpemUoMzAwLCAxMDApOworICAgIHNo
b3coKTsKK30KKworYm9vbCBXZWJOb3RpZmljYXRpb25XaWRnZXQ6OmV2ZW50KFFFdmVudCogZXYp
Cit7CisgICAgaWYgKGV2LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UpIHsK
KyAgICAgICAgZW1pdCBub3RpZmljYXRpb25DbGlja2VkKCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6OkNsb3NlKSB7CisgICAgICAg
IGVtaXQgbm90aWZpY2F0aW9uQ2xvc2VkKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gUVdpZGdldDo6ZXZlbnQoZXYpOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblByZXNlbnRl
ci5oIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjFi
Yjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9y
bXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpZm5kZWYgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyX2ggIAorI2Rl
ZmluZSBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXJfaAorCisjaW5jbHVkZSAicXdlYmtpdHBsYXRm
b3JtcGx1Z2luLmgiCisKKyNpbmNsdWRlIDxRQml0bWFwPgorI2luY2x1ZGUgPFFFdmVudD4KKyNp
bmNsdWRlIDxRR3JpZExheW91dD4KKyNpbmNsdWRlIDxRTGFiZWw+CisjaW5jbHVkZSA8UVBhaW50
ZXI+CisjaW5jbHVkZSA8UVdpZGdldD4KKworY2xhc3MgV2ViTm90aWZpY2F0aW9uV2lkZ2V0IDog
cHVibGljIFFXaWRnZXQKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFdlYk5vdGlmaWNh
dGlvbldpZGdldCgpOworICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvbldpZGdldCgpOworCisg
ICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFFXZWJOb3RpZmljYXRpb25EYXRhKik7Cisg
ICAgYm9vbCBldmVudChRRXZlbnQqKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0
aW9uQ2xvc2VkKCk7CisgICAgdm9pZCBub3RpZmljYXRpb25DbGlja2VkKCk7Cit9OworCitjbGFz
cyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgUVdlYk5vdGlmaWNhdGlvblByZXNl
bnRlcgoreworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkKKyAgICAgICAgOiBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKKyAgICB7CisgICAg
ICAgIG1fd2lkZ2V0ID0gbmV3IFdlYk5vdGlmaWNhdGlvbldpZGdldCgpOworICAgICAgICBjb25u
ZWN0KG1fd2lkZ2V0LCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKCkpLCB0aGlzLCBTSUdOQUwo
bm90aWZpY2F0aW9uQ2xvc2VkKCkpKTsKKyAgICAgICAgY29ubmVjdChtX3dpZGdldCwgU0lHTkFM
KG5vdGlmaWNhdGlvbkNsaWNrZWQoKSksIHRoaXMsIFNJR05BTChub3RpZmljYXRpb25DbGlja2Vk
KCkpKTsKKyAgICB9CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKCkgeyBt
X3dpZGdldC0+Y2xvc2UoKTsgZGVsZXRlIG1fd2lkZ2V0OyB9CisKKyAgICB2b2lkIHNob3dOb3Rp
ZmljYXRpb24oY29uc3QgUVdlYk5vdGlmaWNhdGlvbkRhdGEqIGRhdGEpIHsgbV93aWRnZXQtPnNo
b3dOb3RpZmljYXRpb24oZGF0YSk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgV2ViTm90aWZpY2F0
aW9uV2lkZ2V0KiBtX3dpZGdldDsKK307CisKKyNlbmRpZiAvLyBXZWJOb3RpZmljYXRpb25zVWlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9X
ZWJQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9X
ZWJQbHVnaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MTc1MTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL1dlYlBsdWdpbi5jcHAKQEAgLTAsMCArMSwzMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lu
Y2x1ZGUgIldlYlBsdWdpbi5oIgorCisjaW5jbHVkZSA8UUV2ZW50PgorI2luY2x1ZGUgPFFIQm94
TGF5b3V0PgorI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNpbmNsdWRlIDxRTGlzdFdpZGdldD4KKyNp
bmNsdWRlIDxRTGlzdFdpZGdldEl0ZW0+CisjaW5jbHVkZSA8UVBhaW50ZXI+CisjaW5jbHVkZSA8
UXRQbHVnaW4+CisjaW5jbHVkZSA8UVB1c2hCdXR0b24+CisjaW5jbHVkZSA8UVN0eWxlZEl0ZW1E
ZWxlZ2F0ZT4KKyNpbmNsdWRlIDxRVkJveExheW91dD4KKworc3RhdGljIGNvbnN0IGludCBnTWFl
bW9MaXN0SXRlbVNpemUgPSA3MDsKK3N0YXRpYyBjb25zdCBpbnQgZ01hZW1vTGlzdFBhZGRpbmcg
PSAzODsKK3N0YXRpYyBjb25zdCBpbnQgZ01hZW1vTWF4VmlzaWJsZUl0ZW1zID0gNTsKKwordm9p
ZCBQb3B1cDo6cG9wdWxhdGVMaXN0KCkKK3sKKyAgICBRTGlzdFdpZGdldEl0ZW0qIGxpc3RJdGVt
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9kYXRhLml0ZW1Db3VudCgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKG1fZGF0YS5pdGVtVHlwZShpKSA9PSBRV2ViU2VsZWN0RGF0YTo6T3B0aW9uKSB7
CisgICAgICAgICAgICBsaXN0SXRlbSA9IG5ldyBRTGlzdFdpZGdldEl0ZW0obV9kYXRhLml0ZW1U
ZXh0KGkpKTsKKyAgICAgICAgICAgIG1fbGlzdC0+YWRkSXRlbShsaXN0SXRlbSk7CisgICAgICAg
ICAgICBsaXN0SXRlbS0+c2V0U2VsZWN0ZWQobV9kYXRhLml0ZW1Jc1NlbGVjdGVkKGkpKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChtX2RhdGEuaXRlbVR5cGUoaSkgPT0gUVdlYlNlbGVjdERhdGE6Okdy
b3VwKSB7CisgICAgICAgICAgICBsaXN0SXRlbSA9IG5ldyBRTGlzdFdpZGdldEl0ZW0obV9kYXRh
Lml0ZW1UZXh0KGkpKTsKKyAgICAgICAgICAgIG1fbGlzdC0+YWRkSXRlbShsaXN0SXRlbSk7Cisg
ICAgICAgICAgICBsaXN0SXRlbS0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgICAgICAgICAgbGlz
dEl0ZW0tPnNldEZsYWdzKFF0OjpOb0l0ZW1GbGFncyk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y29ubmVjdChtX2xpc3QsIFNJR05BTChpdGVtQ2xpY2tlZChRTGlzdFdpZGdldEl0ZW0qKSksIHRo
aXMsIFNMT1Qob25JdGVtU2VsZWN0ZWQoUUxpc3RXaWRnZXRJdGVtKikpKTsKK30KKwordm9pZCBQ
b3B1cDo6b25JdGVtU2VsZWN0ZWQoUUxpc3RXaWRnZXRJdGVtKiBpdGVtKQoreworICAgIGlmIChp
dGVtLT5mbGFncygpICE9IFF0OjpOb0l0ZW1GbGFncykKKyAgICAgICAgZW1pdCBpdGVtQ2xpY2tl
ZChtX2xpc3QtPnJvdyhpdGVtKSk7Cit9CisKK1dlYlBvcHVwOjpXZWJQb3B1cCgpCisgICAgOiBt
X3BvcHVwKDApCit7Cit9CisKK1dlYlBvcHVwOjp+V2ViUG9wdXAoKQoreworICAgIGlmIChtX3Bv
cHVwKQorICAgICAgICBtX3BvcHVwLT5kZWxldGVMYXRlcigpOworfQorCitQb3B1cCogV2ViUG9w
dXA6OmNyZWF0ZVNpbmdsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRhJiBkYXRh
KQoreworICAgIHJldHVybiBuZXcgU2luZ2xlU2VsZWN0aW9uUG9wdXAoZGF0YSk7Cit9CisKK1Bv
cHVwKiBXZWJQb3B1cDo6Y3JlYXRlTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cChjb25zdCBRV2ViU2Vs
ZWN0RGF0YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gbmV3IE11bHRpcGxlU2VsZWN0aW9uUG9wdXAo
ZGF0YSk7Cit9CisKK1BvcHVwKiBXZWJQb3B1cDo6Y3JlYXRlUG9wdXAoY29uc3QgUVdlYlNlbGVj
dERhdGEmIGRhdGEpCit7CisgICAgUG9wdXAqIHJlc3VsdCA9IGRhdGEubXVsdGlwbGUoKSA/IGNy
ZWF0ZU11bHRpcGxlU2VsZWN0aW9uUG9wdXAoZGF0YSkgOiBjcmVhdGVTaW5nbGVTZWxlY3Rpb25Q
b3B1cChkYXRhKTsKKyAgICBjb25uZWN0KHJlc3VsdCwgU0lHTkFMKGZpbmlzaGVkKGludCkpLCB0
aGlzLCBTTE9UKHBvcHVwQ2xvc2VkKCkpKTsKKyAgICBjb25uZWN0KHJlc3VsdCwgU0lHTkFMKGl0
ZW1DbGlja2VkKGludCkpLCB0aGlzLCBTTE9UKGl0ZW1DbGlja2VkKGludCkpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkIFdlYlBvcHVwOjpzaG93KGNvbnN0IFFXZWJTZWxlY3REYXRh
JiBkYXRhKQoreworICAgIGlmIChtX3BvcHVwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bv
cHVwID0gY3JlYXRlUG9wdXAoZGF0YSk7CisgICAgbV9wb3B1cC0+c2hvdygpOworfQorCit2b2lk
IFdlYlBvcHVwOjpoaWRlKCkKK3sKKyAgICBpZiAoIW1fcG9wdXApCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcG9wdXAtPmFjY2VwdCgpOworfQorCit2b2lkIFdlYlBvcHVwOjpwb3B1cENsb3Nl
ZCgpCit7CisgICAgaWYgKCFtX3BvcHVwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVw
LT5kZWxldGVMYXRlcigpOworICAgIG1fcG9wdXAgPSAwOworICAgIGVtaXQgZGlkSGlkZSgpOwor
fQorCit2b2lkIFdlYlBvcHVwOjppdGVtQ2xpY2tlZChpbnQgaWR4KQoreworICAgIGVtaXQgc2Vs
ZWN0SXRlbShpZHgsIHRydWUsIGZhbHNlKTsKK30KKworU2luZ2xlU2VsZWN0aW9uUG9wdXA6OlNp
bmdsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRhJiBkYXRhKQorICAgIDogUG9w
dXAoZGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiB0aXRsZSA9ICJzZWxlY3QiOworICAgIGlmIChx
c3RyY21wKHRpdGxlLCAid2ViYV90aV90ZXhsaXN0X3NpbmdsZSIpKQorICAgICAgICBzZXRXaW5k
b3dUaXRsZShRU3RyaW5nOjpmcm9tVXRmOCh0aXRsZSkpOworICAgIGVsc2UKKyAgICAgICAgc2V0
V2luZG93VGl0bGUoUUxhdGluMVN0cmluZygiU2VsZWN0IGl0ZW0iKSk7CisKKyAgICBRSEJveExh
eW91dCogaExheW91dCA9IG5ldyBRSEJveExheW91dCh0aGlzKTsKKyAgICBoTGF5b3V0LT5zZXRD
b250ZW50c01hcmdpbnMoMCwgMCwgMCwgMCk7CisKKyAgICBtX2xpc3QgPSBuZXcgUUxpc3RXaWRn
ZXQodGhpcyk7CisgICAgcG9wdWxhdGVMaXN0KCk7CisKKyAgICBoTGF5b3V0LT5hZGRTcGFjaW5n
KGdNYWVtb0xpc3RQYWRkaW5nKTsKKyAgICBoTGF5b3V0LT5hZGRXaWRnZXQobV9saXN0KTsKKyAg
ICBoTGF5b3V0LT5hZGRTcGFjaW5nKGdNYWVtb0xpc3RQYWRkaW5nKTsKKworICAgIGNvbm5lY3Qo
bV9saXN0LCBTSUdOQUwoaXRlbUNsaWNrZWQoUUxpc3RXaWRnZXRJdGVtKikpLCB0aGlzLCBTTE9U
KGFjY2VwdCgpKSk7CisKKyAgICBjb25zdCBpbnQgdmlzaWJsZUl0ZW1Db3VudCA9IChtX2xpc3Qt
PmNvdW50KCkgPiBnTWFlbW9NYXhWaXNpYmxlSXRlbXMpID8gZ01hZW1vTWF4VmlzaWJsZUl0ZW1z
IDogbV9saXN0LT5jb3VudCgpOworICAgIHJlc2l6ZShzaXplKCkud2lkdGgoKSwgdmlzaWJsZUl0
ZW1Db3VudCAqIGdNYWVtb0xpc3RJdGVtU2l6ZSk7Cit9CisKKworY2xhc3MgTXVsdGlwbGVJdGVt
TGlzdERlbGVnYXRlIDogcHVibGljIFFTdHlsZWRJdGVtRGVsZWdhdGUgeworcHVibGljOgorICAg
IE11bHRpcGxlSXRlbUxpc3REZWxlZ2F0ZShRT2JqZWN0KiBwYXJlbnQgPSAwKQorICAgICAgICAg
ICA6IFFTdHlsZWRJdGVtRGVsZWdhdGUocGFyZW50KQorICAgIHsKKyAgICAgICAgdGlja01hcmsg
PSBRSWNvbjo6ZnJvbVRoZW1lKFFMYXRpbjFTdHJpbmcoIndpZGdldHNfdGlja21hcmtfbGlzdCIp
KS5waXhtYXAoNDgsIDQ4KTsKKyAgICB9CisKKyAgICB2b2lkIHBhaW50KFFQYWludGVyKiBwYWlu
dGVyLCBjb25zdCBRU3R5bGVPcHRpb25WaWV3SXRlbSYgb3B0aW9uLCBjb25zdCBRTW9kZWxJbmRl
eCYgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBRU3R5bGVkSXRlbURlbGVnYXRlOjpwYWlu
dChwYWludGVyLCBvcHRpb24sIGluZGV4KTsKKworICAgICAgICBpZiAob3B0aW9uLnN0YXRlICYg
UVN0eWxlOjpTdGF0ZV9TZWxlY3RlZCkKKyAgICAgICAgICAgIHBhaW50ZXItPmRyYXdQaXhtYXAo
b3B0aW9uLnJlY3Qud2lkdGgoKSAtIHRpY2tNYXJrLnJlY3QoKS53aWR0aCgpLCBvcHRpb24ucmVj
dC55KCkgKyAob3B0aW9uLnJlY3QuaGVpZ2h0KCkgLyAyIC0gdGlja01hcmsucmVjdCgpLmhlaWdo
dCgpIC8gMiksIHRpY2tNYXJrKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUVBpeG1hcCB0aWNr
TWFyazsKK307CisKK011bHRpcGxlU2VsZWN0aW9uUG9wdXA6Ok11bHRpcGxlU2VsZWN0aW9uUG9w
dXAoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpCisgICAgOiBQb3B1cChkYXRhKQoreworICAg
IGNvbnN0IGNoYXIqIHRpdGxlID0gInNlbGVjdCI7CisgICAgaWYgKHFzdHJjbXAodGl0bGUsICJ3
ZWJhX3RpX3RleHRsaXN0X211bHRpIikpCisgICAgICAgIHNldFdpbmRvd1RpdGxlKFFTdHJpbmc6
OmZyb21VdGY4KHRpdGxlKSk7CisgICAgZWxzZQorICAgICAgICBzZXRXaW5kb3dUaXRsZShRTGF0
aW4xU3RyaW5nKCJTZWxlY3QgaXRlbXMiKSk7CisKKyAgICBRSEJveExheW91dCogaExheW91dCA9
IG5ldyBRSEJveExheW91dCh0aGlzKTsKKyAgICBoTGF5b3V0LT5zZXRDb250ZW50c01hcmdpbnMo
MCwgMCwgMCwgMCk7CisKKyAgICBtX2xpc3QgPSBuZXcgUUxpc3RXaWRnZXQodGhpcyk7CisgICAg
bV9saXN0LT5zZXRTZWxlY3Rpb25Nb2RlKFFBYnN0cmFjdEl0ZW1WaWV3OjpNdWx0aVNlbGVjdGlv
bik7CisgICAgcG9wdWxhdGVMaXN0KCk7CisKKyAgICBNdWx0aXBsZUl0ZW1MaXN0RGVsZWdhdGUq
IGRlbGVnYXRlID0gbmV3IE11bHRpcGxlSXRlbUxpc3REZWxlZ2F0ZSh0aGlzKTsKKyAgICBtX2xp
c3QtPnNldEl0ZW1EZWxlZ2F0ZShkZWxlZ2F0ZSk7CisKKyAgICBoTGF5b3V0LT5hZGRTcGFjaW5n
KGdNYWVtb0xpc3RQYWRkaW5nKTsKKyAgICBoTGF5b3V0LT5hZGRXaWRnZXQobV9saXN0KTsKKwor
ICAgIFFWQm94TGF5b3V0KiB2TGF5b3V0ID0gbmV3IFFWQm94TGF5b3V0KCk7CisKKyAgICBjb25z
dCBpbnQgdmlzaWJsZUl0ZW1Db3VudCA9IChtX2xpc3QtPmNvdW50KCkgPiBnTWFlbW9NYXhWaXNp
YmxlSXRlbXMpID8gZ01hZW1vTWF4VmlzaWJsZUl0ZW1zIDogbV9saXN0LT5jb3VudCgpOworICAg
IHZMYXlvdXQtPmFkZFNwYWNpbmcoKHZpc2libGVJdGVtQ291bnQgLSAxKSAqIGdNYWVtb0xpc3RJ
dGVtU2l6ZSk7CisKKyAgICBRUHVzaEJ1dHRvbiogZG9uZSA9IG5ldyBRUHVzaEJ1dHRvbih0aGlz
KTsKKyAgICB0aXRsZSA9ICJkb25lIjsKKyAgICBpZiAocXN0cmNtcCh0aXRsZSwgIndkZ3RfYmRf
ZG9uZSIpKQorICAgICAgICBkb25lLT5zZXRUZXh0KFFTdHJpbmc6OmZyb21VdGY4KHRpdGxlKSk7
CisgICAgZWxzZQorICAgICAgICBkb25lLT5zZXRUZXh0KFFMYXRpbjFTdHJpbmcoIkRvbmUiKSk7
CisKKyAgICBkb25lLT5zZXRNaW5pbXVtV2lkdGgoMTc4KTsKKyAgICB2TGF5b3V0LT5hZGRXaWRn
ZXQoZG9uZSk7CisKKyAgICBoTGF5b3V0LT5hZGRTcGFjaW5nKDgpOworICAgIGhMYXlvdXQtPmFk
ZExheW91dCh2TGF5b3V0KTsKKyAgICBoTGF5b3V0LT5hZGRTcGFjaW5nKDE4KTsKKworICAgIGNv
bm5lY3QoZG9uZSwgU0lHTkFMKGNsaWNrZWQoKSksIHRoaXMsIFNMT1QoYWNjZXB0KCkpKTsKKyAg
ICByZXNpemUoc2l6ZSgpLndpZHRoKCksIHZpc2libGVJdGVtQ291bnQgKiBnTWFlbW9MaXN0SXRl
bVNpemUpOworfQorCisjaWYgZGVmaW5lZChXVEZfVVNFX1FUX01VTFRJTUVESUEpICYmIFdURl9V
U0VfUVRfTVVMVElNRURJQQorRnVsbFNjcmVlblZpZGVvV2lkZ2V0OjpGdWxsU2NyZWVuVmlkZW9X
aWRnZXQoUU1lZGlhUGxheWVyKiBwbGF5ZXIpCisgICAgOiBRVmlkZW9XaWRnZXQoKQorICAgICwg
bV9tZWRpYVBsYXllcihwbGF5ZXIpCit7CisgICAgUV9BU1NFUlQobV9tZWRpYVBsYXllcik7CisK
KyAgICBzZXRGdWxsU2NyZWVuKHRydWUpOworICAgIG1fbWVkaWFQbGF5ZXItPnNldFZpZGVvT3V0
cHV0KHRoaXMpOworfQorCitib29sIEZ1bGxTY3JlZW5WaWRlb1dpZGdldDo6ZXZlbnQoUUV2ZW50
KiBldikKK3sKKyAgICBpZiAoZXYtPnR5cGUoKSA9PSAgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENs
aWNrKSB7CisgICAgICAgIGVtaXQgZnVsbFNjcmVlbkNsb3NlZCgpOworICAgICAgICBldi0+YWNj
ZXB0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gCisgICAgcmV0dXJuIFFXaWRnZXQ6
OmV2ZW50KGV2KTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9XaWRnZXQ6OmtleVByZXNzRXZl
bnQoUUtleUV2ZW50KiBldikKK3sKKyAgICBpZiAoZXYtPmtleSgpID09IFF0OjpLZXlfU3BhY2Up
IHsKKyAgICAgICAgaWYgKG1fbWVkaWFQbGF5ZXItPnN0YXRlKCkgPT0gUU1lZGlhUGxheWVyOjpQ
bGF5aW5nU3RhdGUpCisgICAgICAgICAgICBtX21lZGlhUGxheWVyLT5wYXVzZSgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX21lZGlhUGxheWVyLT5wbGF5KCk7CisgICAgICAgIGV2LT5h
Y2NlcHQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworRnVsbFNjcmVlblZpZGVvSGFu
ZGxlcjo6RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpCisgICAgOiBtX21lZGlhV2lkZ2V0KDApCit7
Cit9CisKK0Z1bGxTY3JlZW5WaWRlb0hhbmRsZXI6On5GdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkK
K3sKKyAgICBkZWxldGUgbV9tZWRpYVdpZGdldDsKK30KKworYm9vbCBGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyOjpyZXF1aXJlc0Z1bGxTY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBGdWxsU2NyZWVuVmlkZW9IYW5kbGVyOjplbnRlckZ1
bGxTY3JlZW4oUU1lZGlhUGxheWVyKiBwbGF5ZXIpCit7CisgICAgUV9BU1NFUlQocGxheWVyKTsK
KworICAgIG1fbWVkaWFXaWRnZXQgPSBuZXcgRnVsbFNjcmVlblZpZGVvV2lkZ2V0KHBsYXllcik7
CisgICAgY29ubmVjdChtX21lZGlhV2lkZ2V0LCBTSUdOQUwoZnVsbFNjcmVlbkNsb3NlZCgpKSwg
dGhpcywgU0lHTkFMKGZ1bGxTY3JlZW5DbG9zZWQoKSkpOworICAgIG1fbWVkaWFXaWRnZXQtPnNo
b3dGdWxsU2NyZWVuKCk7Cit9CisKK3ZvaWQgRnVsbFNjcmVlblZpZGVvSGFuZGxlcjo6ZXhpdEZ1
bGxTY3JlZW4oKQoreworICAgIG1fbWVkaWFXaWRnZXQtPmhpZGUoKTsKKyAgICBkZWxldGUgbV9t
ZWRpYVdpZGdldDsKKyAgICBtX21lZGlhV2lkZ2V0ID0gMDsKK30KKyNlbmRpZgorCitib29sIFdl
YlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKGV4dGVuc2lvbikgeworICAgIGNhc2UgTXVsdGlwbGVTZWxlY3Rpb25zOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgIGNhc2Ug
Tm90aWZpY2F0aW9uczoKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBjYXNlIFRv
dWNoSW50ZXJhY3Rpb246CisgICAgICAgIHJldHVybiB0cnVlOworI2lmIGRlZmluZWQoV1RGX1VT
RV9RVF9NVUxUSU1FRElBKSAmJiBXVEZfVVNFX1FUX01VTFRJTUVESUEKKyAgICBjYXNlIEZ1bGxT
Y3JlZW5WaWRlb1BsYXllcjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitRT2JqZWN0KiBXZWJQbHVn
aW46OmNyZWF0ZUV4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdAoreworICAgIHN3
aXRjaCAoZXh0ZW5zaW9uKSB7CisgICAgY2FzZSBNdWx0aXBsZVNlbGVjdGlvbnM6CisgICAgICAg
IHJldHVybiBuZXcgV2ViUG9wdXAoKTsKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgIGNh
c2UgTm90aWZpY2F0aW9uczoKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXIoKTsKKyNlbmRpZgorICAgIGNhc2UgVG91Y2hJbnRlcmFjdGlvbjoKKyAgICAgICAgcmV0
dXJuIG5ldyBUb3VjaE1vZGlmaWVyKCk7CisjaWYgZGVmaW5lZChXVEZfVVNFX1FUX01VTFRJTUVE
SUEpICYmIFdURl9VU0VfUVRfTVVMVElNRURJQQorICAgIGNhc2UgRnVsbFNjcmVlblZpZGVvUGxh
eWVyOgorICAgICAgICByZXR1cm4gbmV3IEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKKyNlbmRp
ZgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MTgxZjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oCkBA
IC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpZm5kZWYgV0VCUExVR0lOX0gKKyNk
ZWZpbmUgV0VCUExVR0lOX0gKKworI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgor
I2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorCisjaW5jbHVkZSA8UURpYWxv
Zz4KKyNpZiBkZWZpbmVkKFdURl9VU0VfUVRfTVVMVElNRURJQSkgJiYgV1RGX1VTRV9RVF9NVUxU
SU1FRElBCisjaW5jbHVkZSA8UVZpZGVvV2lkZ2V0PgorI2VuZGlmCisKK1FUX0JFR0lOX05BTUVT
UEFDRQorY2xhc3MgUUxpc3RXaWRnZXRJdGVtOworY2xhc3MgUUxpc3RXaWRnZXQ7CitRVF9FTkRf
TkFNRVNQQUNFCisKK2NsYXNzIFBvcHVwIDogcHVibGljIFFEaWFsb2cgeworICAgIFFfT0JKRUNU
CitwdWJsaWM6CisgICAgUG9wdXAoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpIDogbV9kYXRh
KGRhdGEpIHsgc2V0TW9kYWwodHJ1ZSk7IH0KKworUV9TSUdOQUxTOgorICAgIHZvaWQgaXRlbUNs
aWNrZWQoaW50IGlkeCk7CisKK3Byb3RlY3RlZCBRX1NMT1RTOgorICAgIHZvaWQgb25JdGVtU2Vs
ZWN0ZWQoUUxpc3RXaWRnZXRJdGVtKiBpdGVtKTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgcG9w
dWxhdGVMaXN0KCk7CisKKyAgICBjb25zdCBRV2ViU2VsZWN0RGF0YSYgbV9kYXRhOworICAgIFFM
aXN0V2lkZ2V0KiBtX2xpc3Q7Cit9OworCisKK2NsYXNzIFNpbmdsZVNlbGVjdGlvblBvcHVwIDog
cHVibGljIFBvcHVwIHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFNpbmdsZVNlbGVjdGlv
blBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRhJiBkYXRhKTsKK307CisKKworY2xhc3MgTXVsdGlw
bGVTZWxlY3Rpb25Qb3B1cCA6IHB1YmxpYyBQb3B1cCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoK
KyAgICBNdWx0aXBsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRhJiBkYXRhKTsK
K307CisKKworY2xhc3MgV2ViUG9wdXAgOiBwdWJsaWMgUVdlYlNlbGVjdE1ldGhvZCB7CisgICAg
UV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBXZWJQb3B1cCgpOworICAgIH5XZWJQb3B1cCgpOworCisg
ICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEpOworICAgIHZp
cnR1YWwgdm9pZCBoaWRlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IFFS
ZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZvbnQoY29uc3QgUUZvbnQmKSB7IH0KKwor
cHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgcG9wdXBDbG9zZWQoKTsKKyAgICB2b2lkIGl0ZW1D
bGlja2VkKGludCBpZHgpOworCitwcml2YXRlOgorICAgIFBvcHVwKiBtX3BvcHVwOworCisgICAg
UG9wdXAqIGNyZWF0ZVBvcHVwKGNvbnN0IFFXZWJTZWxlY3REYXRhJiBkYXRhKTsKKyAgICBQb3B1
cCogY3JlYXRlU2luZ2xlU2VsZWN0aW9uUG9wdXAoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEp
OworICAgIFBvcHVwKiBjcmVhdGVNdWx0aXBsZVNlbGVjdGlvblBvcHVwKGNvbnN0IFFXZWJTZWxl
Y3REYXRhJiBkYXRhKTsKK307CisKK2NsYXNzIFRvdWNoTW9kaWZpZXIgOiBwdWJsaWMgUVdlYlRv
dWNoTW9kaWZpZXIKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIHVuc2lnbmVkIGhpdFRl
c3RQYWRkaW5nRm9yVG91Y2goY29uc3QgUGFkZGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0
IHsKKyAgICAgICAgLy8gVXNlIDEwIGFzIHBhZGRpbmcgaW4gZWFjaCBkaXJlY3Rpb24gYnV0IFVw
LgorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFFXZWJUb3VjaE1vZGlmaWVyOjpVcCkKKyAgICAg
ICAgICAgIHJldHVybiAxNTsKKyAgICAgICAgcmV0dXJuIDEwOworICAgIH0KK307CisKKyNpZiBk
ZWZpbmVkKFdURl9VU0VfUVRfTVVMVElNRURJQSkgJiYgV1RGX1VTRV9RVF9NVUxUSU1FRElBCitj
bGFzcyBGdWxsU2NyZWVuVmlkZW9XaWRnZXQgOiBwdWJsaWMgUVZpZGVvV2lkZ2V0IHsKKyAgICBR
X09CSkVDVAorcHVibGljOgorICAgIEZ1bGxTY3JlZW5WaWRlb1dpZGdldChRTWVkaWFQbGF5ZXIq
KTsKKyAgICB2aXJ0dWFsIH5GdWxsU2NyZWVuVmlkZW9XaWRnZXQoKSB7fQorCitRX1NJR05BTFM6
CisgICAgdm9pZCBmdWxsU2NyZWVuQ2xvc2VkKCk7CisKK3Byb3RlY3RlZDoKKyAgICBib29sIGV2
ZW50KFFFdmVudCopOworICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKKworcHJp
dmF0ZToKKyAgICBRTWVkaWFQbGF5ZXIqIG1fbWVkaWFQbGF5ZXI7IC8vIG5vdCBvd25lZAorfTsK
KworY2xhc3MgRnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1YmxpYyBRV2ViRnVsbFNjcmVlblZp
ZGVvSGFuZGxlciB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBGdWxsU2NyZWVuVmlkZW9I
YW5kbGVyKCk7CisgICAgdmlydHVhbCB+RnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOworICAgIGJv
b2wgcmVxdWlyZXNGdWxsU2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpIGNvbnN0OworCitwdWJsaWMg
UV9TTE9UUzoKKyAgICB2b2lkIGVudGVyRnVsbFNjcmVlbihRTWVkaWFQbGF5ZXIqKTsKKyAgICB2
b2lkIGV4aXRGdWxsU2NyZWVuKCk7CisKK3ByaXZhdGU6CisgICAgRnVsbFNjcmVlblZpZGVvV2lk
Z2V0KiBtX21lZGlhV2lkZ2V0OyAvLyBvd25lZAorfTsKKyNlbmRpZgorCitjbGFzcyBXZWJQbHVn
aW4gOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbgoreworICAg
IFFfT0JKRUNUCisgICAgUV9JTlRFUkZBQ0VTKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbikKKyAgICBR
X1BMVUdJTl9NRVRBREFUQShJSUQgIm9yZy5xdC1wcm9qZWN0LlF0V2ViS2l0LlBsYXRmb3JtUGx1
Z2luSW50ZXJmYWNlIikKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNp
b24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3Q7CisgICAgdmlydHVhbCBRT2JqZWN0KiBjcmVh
dGVFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3Q7Cit9OworCisjZW5kaWYgLy8g
V0VCUExVR0lOX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZv
cm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9w
bGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmM1MzNkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
ZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvCkBAIC0wLDAgKzEsMzUg
QEAKK1RFTVBMQVRFID0gbGliCitUQVJHRVQgPSBwbGF0Zm9ybXBsdWdpbgorCitRVCArPSBjb3Jl
IGd1aSB3aWRnZXRzCitDT05GSUcgKz0gcGx1Z2luCisKKyMjIGxvYWQgbW9iaWxpdHljb25maWcg
aWYgbW9iaWxpdHkgaXMgYXZhaWxhYmxlCitsb2FkKG1vYmlsaXR5Y29uZmlnLCB0cnVlKQorCisj
IEhUTUw1IE1lZGlhIFN1cHBvcnQKKyMgV2UgcmVxdWlyZSBRdE11bHRpbWVkaWEKKyFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU89LikgeworICAgIGNvbnRhaW5zKE1PQklMSVRZX0NPTkZJ
RywgbXVsdGltZWRpYSkgeworICAgICAgICBDT05GSUcgKz0gbW9iaWxpdHkKKyAgICAgICAgTU9C
SUxJVFkgKz0gbXVsdGltZWRpYQorICAgICAgICBERUZJTkVTIC09IEVOQUJMRV9WSURFTz0wCisg
ICAgICAgIERFRklORVMgKz0gRU5BQkxFX1ZJREVPPTEKKyAgICAgICAgREVGSU5FUyAtPSBXVEZf
VVNFX1FUX01VTFRJTUVESUE9MAorICAgICAgICBERUZJTkVTICs9IFdURl9VU0VfUVRfTVVMVElN
RURJQT0xCisgICAgfQorfQorCitERVNURElSID0gJCRbUVRfSU5TVEFMTF9QTFVHSU5TXS93ZWJr
aXQKKworU09VUkNFUyArPSBcCisgICAgV2ViUGx1Z2luLmNwcCBcCisgICAgV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyLmNwcAorCitIRUFERVJTICs9IFwKKyAgICBXZWJQbHVnaW4uaCBcCisgICAg
cXdlYmtpdHBsYXRmb3JtcGx1Z2luLmggXAorICAgIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlci5o
CisKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlM9Lik6IERF
RklORVMgKz0gRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TPTEKKyFjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfTk9USUZJQ0FUSU9OUz0uKTogREVGSU5FUyArPSBFTkFCTEVfTk9USUZJQ0FUSU9O
Uz0xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0
Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jOTg3MDY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9x
dC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaApAQCAtMCww
ICsxLDE4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQ
bGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRV0VCS0lUUExBVEZP
Uk1QTFVHSU5fSAorI2RlZmluZSBRV0VCS0lUUExBVEZPUk1QTFVHSU5fSAorCisvKgorICogIFdh
cm5pbmc6IFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgaXMgbm90ICBwYXJ0IG9mIHRoZSBwdWJs
aWMgUXRXZWJLaXQgQVBJCisgKiAgYW5kIG1heSBiZSBjaGFuZ2VkIGZyb20gdmVyc2lvbiB0byB2
ZXJzaW9uIG9yIGV2ZW4gYmUgY29tcGxldGVseSByZW1vdmVkLgorKi8KKworI2lmIGRlZmluZWQo
V1RGX1VTRV9RVF9NVUxUSU1FRElBKSAmJiBXVEZfVVNFX1FUX01VTFRJTUVESUEKKyNpbmNsdWRl
IDxRTWVkaWFQbGF5ZXI+CisjZW5kaWYKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNs
dWRlIDxRdENvcmUvUVJlY3Q+CisjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CisjaW5jbHVkZSA8UXRH
dWkvUUNvbG9yPgorI2luY2x1ZGUgPFF0R3VpL1FGb250PgorCitjbGFzcyBRV2ViU2VsZWN0RGF0
YSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdlYlNlbGVjdERhdGEoKSB7fQorCisgICAgZW51
bSBJdGVtVHlwZSB7IE9wdGlvbiwgR3JvdXAsIFNlcGFyYXRvciB9OworCisgICAgdmlydHVhbCBJ
dGVtVHlwZSBpdGVtVHlwZShpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRl
bVRleHQoaW50IGluZGV4KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1Ub29s
VGlwKGludCBpbmRleCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNFbmFibGVk
KGludCBpbmRleCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNTZWxlY3RlZChp
bnQgaW5kZXgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBpdGVtQ291bnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIG11bHRpcGxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UUNvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFDb2xvciBm
b3JlZ3JvdW5kQ29sb3IoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRQ29sb3IgaXRlbUJhY2tn
cm91bmRDb2xvcihpbnQgaW5kZXgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFDb2xvciBpdGVt
Rm9yZWdyb3VuZENvbG9yKGludCBpbmRleCkgY29uc3QgPSAwOworfTsKKworY2xhc3MgUVdlYlNl
bGVjdE1ldGhvZCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAg
IHZpcnR1YWwgflFXZWJTZWxlY3RNZXRob2QoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNob3co
Y29uc3QgUVdlYlNlbGVjdERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhpZGUoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IFFSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGb250KGNvbnN0IFFGb250JikgPSAwOworCitRX1NJR05BTFM6CisgICAg
dm9pZCBzZWxlY3RJdGVtKGludCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywg
Ym9vbCBzaGlmdCk7CisgICAgdm9pZCBkaWRIaWRlKCk7Cit9OworCitjbGFzcyBRV2ViTm90aWZp
Y2F0aW9uRGF0YSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdlYk5vdGlmaWNhdGlvbkRhdGEo
KSB7fQorCisgICAgdmlydHVhbCBjb25zdCBRU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgY29uc3QgUVN0cmluZyBtZXNzYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Y29uc3QgUVVybCBpY29uVXJsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUVVybCBv
cGVuZXJQYWdlVXJsKCkgY29uc3QgPSAwOworfTsKKworY2xhc3MgUVdlYk5vdGlmaWNhdGlvblBy
ZXNlbnRlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFFX
ZWJOb3RpZmljYXRpb25QcmVzZW50ZXIoKSB7fQorICAgIHZpcnR1YWwgflFXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oY29u
c3QgUVdlYk5vdGlmaWNhdGlvbkRhdGEqKSA9IDA7CisgICAgCitRX1NJR05BTFM6CisgICAgdm9p
ZCBub3RpZmljYXRpb25DbG9zZWQoKTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsaWNrZWQoKTsK
K307CisKK2NsYXNzIFFXZWJIYXB0aWNGZWVkYmFja1BsYXllcjogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYkhhcHRpY0ZlZWRiYWNrUGxheWVyKCkge30K
KyAgICB2aXJ0dWFsIH5RV2ViSGFwdGljRmVlZGJhY2tQbGF5ZXIoKSB7fQorCisgICAgZW51bSBI
YXB0aWNTdHJlbmd0aCB7CisgICAgICAgIE5vbmUsIFdlYWssIE1lZGl1bSwgU3Ryb25nCisgICAg
fTsKKworICAgIGVudW0gSGFwdGljRXZlbnQgeworICAgICAgICBQcmVzcywgUmVsZWFzZQorICAg
IH07CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxheUhhcHRpY0ZlZWRiYWNrKGNvbnN0IEhhcHRpY0V2
ZW50LCBjb25zdCBRU3RyaW5nJiBoYXB0aWNUeXBlLCBjb25zdCBIYXB0aWNTdHJlbmd0aCkgPSAw
OworfTsKKworY2xhc3MgUVdlYlRvdWNoTW9kaWZpZXIgOiBwdWJsaWMgUU9iamVjdCB7CisgICAg
UV9PQkpFQ1QKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV2ViVG91Y2hNb2RpZmllcigpIHt9CisK
KyAgICBlbnVtIFBhZGRpbmdEaXJlY3Rpb24geworICAgICAgICBVcCwgUmlnaHQsIERvd24sIExl
ZnQKKyAgICB9OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBoaXRUZXN0UGFkZGluZ0ZvclRvdWNo
KGNvbnN0IFBhZGRpbmdEaXJlY3Rpb24pIGNvbnN0ID0gMDsKK307CisKKyNpZiBkZWZpbmVkKFdU
Rl9VU0VfUVRfTVVMVElNRURJQSkgJiYgV1RGX1VTRV9RVF9NVUxUSU1FRElBCitjbGFzcyBRV2Vi
RnVsbFNjcmVlblZpZGVvSGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAor
cHVibGljOgorICAgIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCkge30KKyAgICB2aXJ0dWFs
IH5RV2ViRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpIHt9CisgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzRnVsbFNjcmVlbkZvclZpZGVvUGxheWJhY2soKSBjb25zdCA9IDA7CisKK1FfU0lHTkFMUzoK
KyAgICB2b2lkIGZ1bGxTY3JlZW5DbG9zZWQoKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdmly
dHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbihRTWVkaWFQbGF5ZXIqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGV4aXRGdWxsU2NyZWVuKCkgPSAwOworfTsKKyNlbmRpZgorCitjbGFzcyBRV2ViU3Bl
bGxDaGVja2VyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAg
c3RydWN0IEdyYW1tYXJEZXRhaWwgeworICAgICAgICBpbnQgbG9jYXRpb247CisgICAgICAgIGlu
dCBsZW5ndGg7CisgICAgICAgIFFTdHJpbmdMaXN0IGd1ZXNzZXM7CisgICAgICAgIFFTdHJpbmcg
dXNlckRlc2NyaXB0aW9uOworICAgIH07CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW5vdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xl
Q29udGlub3VzU3BlbGxDaGVja2luZygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBsZWFybldv
cmQoY29uc3QgUVN0cmluZyYgd29yZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3Jk
SW5TcGVsbERvY3VtZW50KGNvbnN0IFFTdHJpbmcmIHdvcmQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFFTdHJpbmcmIHdvcmQsIGludCogbWlzc3Bl
bGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCkgPSAwOworICAgIHZpcnR1YWwg
UVN0cmluZyBhdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBRU3Ry
aW5nJiB3b3JkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGd1ZXNzZXNGb3JXb3JkKGNvbnN0IFFT
dHJpbmcmIHdvcmQsIGNvbnN0IFFTdHJpbmcmIGNvbnRleHQsIFFTdHJpbmdMaXN0JiBndWVzc2Vz
KSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFFTdHJpbmcmLCBRTGlzdDxHcmFt
bWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5n
dGgpID0gMDsKK307CisKK2NsYXNzIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+UVdlYktpdFBsYXRmb3JtUGx1Z2luKCkge30KKworICAgIGVudW0gRXh0ZW5z
aW9uIHsKKyAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb25zLAorICAgICAgICBOb3RpZmljYXRpb25z
LAorICAgICAgICBIYXB0aWNzLAorICAgICAgICBUb3VjaEludGVyYWN0aW9uLAorICAgICAgICBG
dWxsU2NyZWVuVmlkZW9QbGF5ZXIsCisgICAgICAgIFNwZWxsQ2hlY2tlcgorICAgIH07CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBRT2JqZWN0KiBjcmVhdGVFeHRlbnNpb24oRXh0ZW5zaW9uKSBjb25zdCA9IDA7
Cit9OworCitRVF9CRUdJTl9OQU1FU1BBQ0UKK1FfREVDTEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBs
YXRmb3JtUGx1Z2luLCAib3JnLnF0LXByb2plY3QuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEu
OSIpOworUVRfRU5EX05BTUVTUEFDRQorCisjZW5kaWYgLy8gUVdFQktJVFBMQVRGT1JNUExVR0lO
X0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL01JTUVT
bmlmZmluZy5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9NSU1FU25p
ZmZpbmcucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OGUxMDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9NSU1F
U25pZmZpbmcucHJvCkBAIC0wLDAgKzEsMTkgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorVEFS
R0VUID0gTUlNRVNuaWZmaW5nCitDT05GSUcgKz0gY29uc29sZQorCishY29udGFpbnMoQ09ORklH
LCBncHJvZikgeworICAgIFNPVVJDRVMgKz0gLi4vLi4vLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmluZy5jcHAKK30KKworSEVBREVSUyArPSBcCisgICAgLi4vLi4vLi4v
Li4vV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBUZXN0RGF0
YS5oCisKK0lOQ0xVREVQQVRIICs9IFwKKyAgICAuLi8uLi8uLi8uLi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsgXAorICAgIC4uLy4uLy4uLy4uL0phdmFTY3JpcHRDb3JlIFwKKyAgICAuLi8uLi8u
Li8uLi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKKyAgICAuLi8uLi8uLi8uLi9XVEYKKworUkVT
T1VSQ0VTICs9IHJlc291cmNlcy5xcmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvTUlNRVNuaWZmaW5nL1Rlc3REYXRhLmggYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVT
bmlmZmluZy9UZXN0RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMw
NGJkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlm
ZmluZy9UZXN0RGF0YS5oCkBAIC0wLDAgKzEsOTg0IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIFRlc3REYXRhX2gKKyNkZWZpbmUgVGVzdERhdGFfaAorCit0eXBlZGVmIHN0cnVjdCBf
VGVzdERhdGEgeworICAgIGNvbnN0IGNoYXIqIGZpbGU7CisgICAgY29uc3QgY2hhciogYWR2ZXJ0
aXNlZFR5cGU7CisgICAgYm9vbCBpc0ltYWdlOworICAgIGNvbnN0IGNoYXIqIHNuaWZmZWRUeXBl
OworfSBUZXN0RGF0YTsKKworc3RhdGljIGNvbnN0IFRlc3REYXRhIHRlc3RMaXN0W10gPSB7Cisg
ICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgInRleHQvcGxhaW4iLCBmYWxzZSwgInRleHQv
cGxhaW4ifSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAidGV4dC9wbGFpbiIsIHRy
dWUsICJ0ZXh0L3BsYWluIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgInVua25v
d24vdW5rbm93biIsIGZhbHNlLCAidGV4dC94bWwifSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRv
bSt4bWwiLCAidW5rbm93bi91bmtub3duIiwgdHJ1ZSwgInRleHQveG1sIn0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX2F0b20reG1sIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCBmYWxzZSwgInRleHQv
eG1sIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgImFwcGxpY2F0aW9uL3Vua25v
d24iLCB0cnVlLCAidGV4dC94bWwifSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAi
Ki8qIiwgZmFsc2UsICJ0ZXh0L3htbCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIs
ICIqLyoiLCB0cnVlLCAidGV4dC94bWwifSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwi
LCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwg
InRleHQveG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgImFw
cGxpY2F0aW9uL3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwi
LCAiYXBwbGljYXRpb24veG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20r
eG1sIiwgInRleHQvaHRtbCIsIGZhbHNlLCAiYXBwbGljYXRpb24vYXRvbSt4bWwifSwKKyAgICB7
IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAidGV4dC9odG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgInRleHQveG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl9hdG9tK3htbCIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNhdGlvbi9wZGYiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgImFwcGxpY2F0aW9uL3BkZiIsIHRydWUsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFs
c2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNhdGlvbi9wb3N0
c2NyaXB0IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgImFwcGxp
Y2F0aW9uL29nZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAi
YXBwbGljYXRpb24vb2dnIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1s
IiwgInZpZGVvL3dlYm0iLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1s
IiwgInZpZGVvL3dlYm0iLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwi
LCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBw
bGljYXRpb25fYXRvbSt4bWwiLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIHRydWUs
IDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNhdGlvbi96aXAiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgImFwcGxpY2F0aW9uL3pp
cCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNhdGlv
bi94LWd6aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwgImFw
cGxpY2F0aW9uL3gtZ3ppcCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3ht
bCIsICJhdWRpby94LXdhdmUiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20r
eG1sIiwgImF1ZGlvL3gtd2F2ZSIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9t
K3htbCIsICJpbWFnZS93ZWJwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9t
K3htbCIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20r
eG1sIiwgImltYWdlL2dpZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4
bWwiLCAiaW1hZ2UvZ2lmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1s
IiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwi
LCAiaW1hZ2UvcG5nIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwg
ImltYWdlL2pwZWciLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwg
ImltYWdlL2pwZWciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAi
aW1hZ2UvYm1wIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJp
bWFnZS9ibXAiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAiaW1h
Z2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9h
dG9tK3htbCIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCB0cnVlLCAwfSwKKyAgICB7Ijov
YXBwbGljYXRpb25fYXRvbSt4bWwiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fYXRvbSt4bWwiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIHRy
dWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9hdG9tK3htbCIsICJhcHBsaWNh
dGlvbi9yc3MreG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX2F0b20reG1sIiwg
ImFwcGxpY2F0aW9uL2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9h
dG9tK3htbCIsICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl9vZ2ciLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAiYXBwbGljYXRpb24vb2dnIn0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJ0ZXh0L3BsYWluIiwgdHJ1ZSwgImFwcGxpY2F0aW9u
L29nZyJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAidW5rbm93bi91bmtub3duIiwgZmFs
c2UsICJhcHBsaWNhdGlvbi9vZ2cifSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgInVua25v
d24vdW5rbm93biIsIHRydWUsICJhcHBsaWNhdGlvbi9vZ2cifSwKKyAgICB7IjovYXBwbGljYXRp
b25fb2dnIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCBmYWxzZSwgImFwcGxpY2F0aW9uL29nZyJ9
LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGljYXRpb24vdW5rbm93biIsIHRydWUs
ICJhcHBsaWNhdGlvbi9vZ2cifSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgIiovKiIsIGZh
bHNlLCAiYXBwbGljYXRpb24vb2dnIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICIqLyoi
LCB0cnVlLCAiYXBwbGljYXRpb24vb2dnIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJ0
ZXh0L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgInRleHQveG1s
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJhcHBsaWNhdGlvbi94bWwi
LCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJhcHBsaWNhdGlvbi94bWwi
LCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgInRleHQvaHRtbCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgInRleHQvaHRtbCIsIHRydWUsIDB9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX29nZyIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9vZ2ciLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9vZ2ciLCAiYXBwbGljYXRpb24vcGRmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0
aW9uX29nZyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIHRydWUsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGljYXRpb24vb2dnIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX29nZyIsICJ2aWRlby93ZWJtIiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl9vZ2ciLCAidmlkZW8vd2VibSIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9vZ2ciLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIGZhbHNlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25fb2dnIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0
cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgImFwcGxpY2F0aW9uL3ppcCIsIHRy
dWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGljYXRpb24veC1nemlwIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGljYXRpb24veC1nemlw
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJhdWRpby94LXdhdmUiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJhdWRpby94LXdhdmUiLCB0cnVl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0s
CisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX29nZyIsICJpbWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX29nZyIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fb2dnIiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dn
IiwgImltYWdlL3BuZyIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiaW1h
Z2UvanBlZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgImltYWdlL2pw
ZWciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgImltYWdlL2JtcCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwgImltYWdlL2JtcCIsIHRydWUsIDB9
LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiaW1hZ2Uvdm5kLm1pY3Jvc29m
dC5pY29uIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX29nZyIsICJhcHBsaWNhdGlv
bi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBwbGlj
YXRpb24vcmRmK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9vZ2ciLCAiYXBw
bGljYXRpb24vcnNzK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dnIiwg
ImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fb2dn
IiwgImFwcGxpY2F0aW9uL2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl9vZ2ciLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25fcGRmIiwgInRleHQvcGxhaW4iLCBmYWxzZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVh
bSJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAidGV4dC9wbGFpbiIsIHRydWUsICJhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0ifSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgInVua25v
d24vdW5rbm93biIsIGZhbHNlLCAiYXBwbGljYXRpb24vcGRmIn0sCisgICAgeyI6L2FwcGxpY2F0
aW9uX3BkZiIsICJ1bmtub3duL3Vua25vd24iLCB0cnVlLCAiYXBwbGljYXRpb24vcGRmIn0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJhcHBsaWNhdGlvbi91bmtub3duIiwgZmFsc2UsICJh
cHBsaWNhdGlvbi9wZGYifSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9u
L3Vua25vd24iLCB0cnVlLCAiYXBwbGljYXRpb24vcGRmIn0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3BkZiIsICIqLyoiLCBmYWxzZSwgImFwcGxpY2F0aW9uL3BkZiJ9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9wZGYiLCAiKi8qIiwgdHJ1ZSwgImFwcGxpY2F0aW9uL3BkZiJ9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl9wZGYiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3BkZiIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAi
YXBwbGljYXRpb24veG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAi
YXBwbGljYXRpb24veG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJ0
ZXh0L2h0bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJ0ZXh0L2h0
bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgInRleHQveG1sIiwgZmFs
c2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAidGV4dC94bWwiLCB0cnVlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL3BkZiIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL3BkZiIsIHRydWUsIDB9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQi
LCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL29nZyIs
IGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL29nZyIs
IHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAidmlkZW8vd2VibSIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgInZpZGVvL3dlYm0iLCB0cnVlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQi
LCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJhcHBsaWNhdGlvbi94LXJh
ci1jb21wcmVzc2VkIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJhcHBs
aWNhdGlvbi96aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJhcHBs
aWNhdGlvbi96aXAiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxp
Y2F0aW9uL3gtZ3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFw
cGxpY2F0aW9uL3gtZ3ppcCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAi
YXVkaW8veC13YXZlIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAiYXVk
aW8veC13YXZlIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJpbWFnZS93
ZWJwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAiaW1hZ2Uvd2VicCIs
IHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAiaW1hZ2UvZ2lmIiwgZmFsc2Us
IDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wZGYiLCAiaW1hZ2UvZ2lmIiwgdHJ1ZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJpbWFnZS9wbmciLCBmYWxzZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3BkZiIsICJpbWFnZS9wbmciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25fcGRmIiwgImltYWdlL2pwZWciLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3BkZiIsICJpbWFnZS9qcGVnIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIs
ICJpbWFnZS9ibXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3BkZiIsICJpbWFn
ZS9ibXAiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImltYWdlL3ZuZC5t
aWNyb3NvZnQuaWNvbiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcGRmIiwgImlt
YWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9w
ZGYiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fcGRmIiwgImFwcGxpY2F0aW9uL3JkZit4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3BkZiIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3BkZiIsICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsIGZhbHNlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25fcGRmIiwgImFwcGxpY2F0aW9uL2F0b20reG1sIiwgdHJ1ZSwgMH0s
CisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAi
dGV4dC9wbGFpbiJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgInRleHQvcGxh
aW4iLCB0cnVlLCAidGV4dC9wbGFpbiJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0
IiwgInVua25vd24vdW5rbm93biIsIGZhbHNlLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJ9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgInVua25vd24vdW5rbm93biIsIHRydWUs
ICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0In0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3Jp
cHQiLCAiYXBwbGljYXRpb24vdW5rbm93biIsIGZhbHNlLCAiYXBwbGljYXRpb24vcG9zdHNjcmlw
dCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImFwcGxpY2F0aW9uL3Vua25v
d24iLCB0cnVlLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJ9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl9wb3N0c2NyaXB0IiwgIiovKiIsIGZhbHNlLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJ9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgIiovKiIsIHRydWUsICJhcHBsaWNhdGlv
bi9wb3N0c2NyaXB0In0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAidGV4dC94
bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAidGV4dC94
bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJhcHBsaWNh
dGlvbi94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAi
YXBwbGljYXRpb24veG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3Jp
cHQiLCAidGV4dC9odG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2Ny
aXB0IiwgInRleHQvaHRtbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2Ny
aXB0IiwgInRleHQveG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2Ny
aXB0IiwgInRleHQveG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3Jp
cHQiLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9w
b3N0c2NyaXB0IiwgImFwcGxpY2F0aW9uL3BkZiIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9wb3N0c2NyaXB0IiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIs
IHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImFwcGxpY2F0aW9u
L29nZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJhcHBs
aWNhdGlvbi9vZ2ciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIs
ICJ2aWRlby93ZWJtIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0
IiwgInZpZGVvL3dlYm0iLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlw
dCIsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0
cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJhcHBsaWNhdGlvbi96
aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiYXBwbGlj
YXRpb24vemlwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAi
YXBwbGljYXRpb24veC1nemlwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0
c2NyaXB0IiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9wb3N0c2NyaXB0IiwgImF1ZGlvL3gtd2F2ZSIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBw
bGljYXRpb25fcG9zdHNjcmlwdCIsICJhdWRpby94LXdhdmUiLCB0cnVlLCAwfSwKKyAgICB7Ijov
YXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJpbWFnZS93ZWJwIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImltYWdlL3dlYnAiLCB0cnVlLCAwfSwKKyAgICB7
IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJpbWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiaW1hZ2UvZ2lmIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiaW1hZ2UvcG5nIiwgZmFsc2UsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImltYWdlL3BuZyIsIHRydWUsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImltYWdlL2pwZWciLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiaW1hZ2UvanBlZyIsIHRydWUsIDB9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0IiwgImltYWdlL2JtcCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJpbWFnZS9ibXAiLCB0cnVlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmlj
b24iLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiaW1hZ2Uv
dm5kLm1pY3Jvc29mdC5pY29uIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3Rz
Y3JpcHQiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25fcG9zdHNjcmlwdCIsICJhcHBsaWNhdGlvbi9yZGYreG1sIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiYXBwbGljYXRpb24vcnNzK3htbCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcG9zdHNjcmlwdCIsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3JpcHQiLCAiYXBwbGlj
YXRpb24vYXRvbSt4bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Bvc3RzY3Jp
cHQiLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fcmRmK3htbCIsICJ0ZXh0L3BsYWluIiwgZmFsc2UsICJ0ZXh0L3BsYWluIn0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAidGV4dC9wbGFpbiIsIHRydWUsICJ0ZXh0L3BsYWluIn0s
CisgICAgeyI6L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAidW5rbm93bi91bmtub3duIiwgZmFsc2Us
ICJ0ZXh0L3htbCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgInVua25vd24vdW5r
bm93biIsIHRydWUsICJ0ZXh0L3htbCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwg
ImFwcGxpY2F0aW9uL3Vua25vd24iLCBmYWxzZSwgInRleHQveG1sIn0sCisgICAgeyI6L2FwcGxp
Y2F0aW9uX3JkZit4bWwiLCAiYXBwbGljYXRpb24vdW5rbm93biIsIHRydWUsICJ0ZXh0L3htbCJ9
LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgIiovKiIsIGZhbHNlLCAidGV4dC94bWwi
fSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICIqLyoiLCB0cnVlLCAidGV4dC94bWwi
fSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgImFwcGxpY2F0aW9uL3htbCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJhcHBsaWNhdGlvbi94bWwiLCB0cnVlLCAw
fSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJ0ZXh0L2h0bWwiLCBmYWxzZSwgImFw
cGxpY2F0aW9uL3JkZit4bWwifSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJ0ZXh0
L2h0bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJ0ZXh0L3ht
bCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJ0ZXh0L3htbCIs
IHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgImFwcGxpY2F0aW9uL3Bk
ZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJhcHBsaWNhdGlv
bi9wZGYiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJhcHBsaWNh
dGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1s
IiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fcmRmK3htbCIsICJhcHBsaWNhdGlvbi9vZ2ciLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxp
Y2F0aW9uX3JkZit4bWwiLCAiYXBwbGljYXRpb24vb2dnIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3JkZit4bWwiLCAidmlkZW8vd2VibSIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBw
bGljYXRpb25fcmRmK3htbCIsICJ2aWRlby93ZWJtIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxp
Y2F0aW9uX3JkZit4bWwiLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJhcHBsaWNhdGlvbi94LXJhci1jb21w
cmVzc2VkIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAiYXBwbGlj
YXRpb24vemlwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgImFw
cGxpY2F0aW9uL3ppcCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwg
ImFwcGxpY2F0aW9uL3gtZ3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRm
K3htbCIsICJhcHBsaWNhdGlvbi94LWd6aXAiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fcmRmK3htbCIsICJhdWRpby94LXdhdmUiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0
aW9uX3JkZit4bWwiLCAiYXVkaW8veC13YXZlIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0
aW9uX3JkZit4bWwiLCAiaW1hZ2Uvd2VicCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fcmRmK3htbCIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3JkZit4bWwiLCAiaW1hZ2UvZ2lmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9y
ZGYreG1sIiwgImltYWdlL2dpZiIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYr
eG1sIiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3ht
bCIsICJpbWFnZS9wbmciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIs
ICJpbWFnZS9qcGVnIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwg
ImltYWdlL2pwZWciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcmRmK3htbCIsICJp
bWFnZS9ibXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAiaW1h
Z2UvYm1wIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAiaW1hZ2Uv
dm5kLm1pY3Jvc29mdC5pY29uIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYr
eG1sIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl9yZGYreG1sIiwgImFwcGxpY2F0aW9uL3JkZit4bWwiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIHRydWUsIDB9
LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3JkZit4bWwiLCAiYXBwbGljYXRpb24vcnNz
K3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwgImFwcGxpY2F0
aW9uL2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yZGYreG1sIiwg
ImFwcGxpY2F0aW9uL2F0b20reG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jz
cyt4bWwiLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAidGV4dC9wbGFpbiJ9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl9yc3MreG1sIiwgInRleHQvcGxhaW4iLCB0cnVlLCAidGV4dC9wbGFpbiJ9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl9yc3MreG1sIiwgInVua25vd24vdW5rbm93biIsIGZhbHNlLCAidGV4
dC94bWwifSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJ1bmtub3duL3Vua25vd24i
LCB0cnVlLCAidGV4dC94bWwifSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBs
aWNhdGlvbi91bmtub3duIiwgZmFsc2UsICJ0ZXh0L3htbCJ9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl9yc3MreG1sIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCB0cnVlLCAidGV4dC94bWwifSwKKyAg
ICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICIqLyoiLCBmYWxzZSwgInRleHQveG1sIn0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiKi8qIiwgdHJ1ZSwgInRleHQveG1sIn0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAgICB7Ijov
YXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBsaWNhdGlvbi94bWwiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiYXBwbGljYXRpb24veG1sIiwgdHJ1ZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAidGV4dC9odG1sIiwgZmFsc2UsICJhcHBsaWNh
dGlvbi9yc3MreG1sIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAidGV4dC9odG1s
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAidGV4dC94bWwiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAidGV4dC94bWwiLCB0cnVl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBsaWNhdGlvbi9wZGYiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiYXBwbGljYXRpb24vcGRm
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiYXBwbGljYXRpb24v
cG9zdHNjcmlwdCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJh
cHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jz
cyt4bWwiLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl9yc3MreG1sIiwgImFwcGxpY2F0aW9uL29nZyIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl9yc3MreG1sIiwgInZpZGVvL3dlYm0iLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0
aW9uX3Jzcyt4bWwiLCAidmlkZW8vd2VibSIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl9yc3MreG1sIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3Nl
ZCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yc3MreG1sIiwgImFwcGxpY2F0aW9u
L3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBsaWNh
dGlvbi96aXAiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBs
aWNhdGlvbi94LWd6aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwi
LCAiYXBwbGljYXRpb24veC1nemlwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jz
cyt4bWwiLCAiYXVkaW8veC13YXZlIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9y
c3MreG1sIiwgImF1ZGlvL3gtd2F2ZSIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9y
c3MreG1sIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jz
cyt4bWwiLCAiaW1hZ2Uvd2VicCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yc3Mr
eG1sIiwgImltYWdlL2dpZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3ht
bCIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIs
ICJpbWFnZS9wbmciLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAi
aW1hZ2UvcG5nIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiaW1h
Z2UvanBlZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJpbWFn
ZS9qcGVnIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3Jzcyt4bWwiLCAiaW1hZ2Uv
Ym1wIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yc3MreG1sIiwgImltYWdlL2Jt
cCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yc3MreG1sIiwgImltYWdlL3ZuZC5t
aWNyb3NvZnQuaWNvbiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIs
ICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25fcnNzK3htbCIsICJhcHBsaWNhdGlvbi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl9yc3MreG1sIiwgImFwcGxpY2F0aW9uL3JkZit4bWwiLCB0cnVlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiwgZmFsc2Us
IDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl9yc3MreG1sIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwi
LCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBsaWNhdGlvbi9h
dG9tK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25fcnNzK3htbCIsICJhcHBs
aWNhdGlvbi9hdG9tK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAi
LCAidGV4dC9wbGFpbiIsIGZhbHNlLCAiYXBwbGljYXRpb24veC1nemlwIn0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3gtZ3ppcCIsICJ0ZXh0L3BsYWluIiwgdHJ1ZSwgImFwcGxpY2F0aW9uL3gtZ3pp
cCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAidW5rbm93bi91bmtub3duIiwgZmFs
c2UsICJhcHBsaWNhdGlvbi94LWd6aXAifSwKKyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwg
InVua25vd24vdW5rbm93biIsIHRydWUsICJhcHBsaWNhdGlvbi94LWd6aXAifSwKKyAgICB7Ijov
YXBwbGljYXRpb25feC1nemlwIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCBmYWxzZSwgImFwcGxp
Y2F0aW9uL3gtZ3ppcCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRp
b24vdW5rbm93biIsIHRydWUsICJhcHBsaWNhdGlvbi94LWd6aXAifSwKKyAgICB7IjovYXBwbGlj
YXRpb25feC1nemlwIiwgIiovKiIsIGZhbHNlLCAiYXBwbGljYXRpb24veC1nemlwIn0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICIqLyoiLCB0cnVlLCAiYXBwbGljYXRpb24veC1nemlw
In0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgInRleHQveG1sIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJhcHBsaWNhdGlvbi94bWwiLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJhcHBsaWNhdGlvbi94bWwiLCB0cnVlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgInRleHQvaHRtbCIsIGZhbHNlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgInRleHQvaHRtbCIsIHRydWUsIDB9LAorICAgIHsi
Oi9hcHBsaWNhdGlvbl94LWd6aXAiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3gtZ3ppcCIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vcGRmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3gtZ3ppcCIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIHRy
dWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vb2dnIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vb2dn
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJ2aWRlby93ZWJtIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAidmlkZW8vd2VibSIsIHRy
dWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24veC1yYXIt
Y29tcHJlc3NlZCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgImFw
cGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25feC1nemlwIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25feC1nemlwIiwgImFwcGxpY2F0aW9uL3ppcCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24veC1nemlwIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24veC1nemlwIiwgdHJ1ZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJhdWRpby94LXdhdmUiLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJhdWRpby94LXdhdmUiLCB0cnVlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3gtZ3ppcCIsICJpbWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3gtZ3ppcCIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25feC1nemlwIiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRp
b25feC1nemlwIiwgImltYWdlL3BuZyIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94
LWd6aXAiLCAiaW1hZ2UvanBlZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1n
emlwIiwgImltYWdlL2pwZWciLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1nemlw
IiwgImltYWdlL2JtcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwg
ImltYWdlL2JtcCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiaW1h
Z2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94
LWd6aXAiLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3gtZ3ppcCIsICJhcHBsaWNhdGlvbi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIHRydWUsIDB9
LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBwbGljYXRpb24vcnNzK3htbCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgImFwcGxpY2F0aW9uL3Jzcyt4
bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1nemlwIiwgImFwcGxpY2F0aW9u
L2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LWd6aXAiLCAiYXBw
bGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXIt
Y29tcHJlc3NlZCIsICJ0ZXh0L3BsYWluIiwgZmFsc2UsICJhcHBsaWNhdGlvbi94LXJhci1jb21w
cmVzc2VkIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAidGV4dC9w
bGFpbiIsIHRydWUsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIn0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAidW5rbm93bi91bmtub3duIiwgZmFsc2UsICJh
cHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFy
LWNvbXByZXNzZWQiLCAidW5rbm93bi91bmtub3duIiwgdHJ1ZSwgImFwcGxpY2F0aW9uL3gtcmFy
LWNvbXByZXNzZWQifSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJh
cHBsaWNhdGlvbi91bmtub3duIiwgZmFsc2UsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2Vk
In0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiYXBwbGljYXRpb24v
dW5rbm93biIsIHRydWUsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIn0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiKi8qIiwgZmFsc2UsICJhcHBsaWNhdGlv
bi94LXJhci1jb21wcmVzc2VkIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNz
ZWQiLCAiKi8qIiwgdHJ1ZSwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQifSwKKyAgICB7
IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJ0ZXh0L3htbCIsIHRydWUs
IDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImFwcGxpY2F0aW9u
L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIs
ICJhcHBsaWNhdGlvbi94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXIt
Y29tcHJlc3NlZCIsICJ0ZXh0L2h0bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3gtcmFyLWNvbXByZXNzZWQiLCAidGV4dC9odG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxp
Y2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJhcHBsaWNhdGlvbi9wZGYiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiYXBwbGlj
YXRpb24vcGRmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNz
ZWQiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGlj
YXRpb25feC1yYXItY29tcHJlc3NlZCIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgdHJ1ZSwg
MH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiYXBwbGljYXRpb24v
b2dnIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwg
ImFwcGxpY2F0aW9uL29nZyIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1j
b21wcmVzc2VkIiwgInZpZGVvL3dlYm0iLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3gtcmFyLWNvbXByZXNzZWQiLCAidmlkZW8vd2VibSIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQi
LCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiYXBw
bGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl94LXJhci1jb21wcmVzc2VkIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7
IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJhcHBsaWNhdGlvbi96aXAiLCB0cnVl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJhcHBsaWNhdGlv
bi94LWd6aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNz
ZWQiLCAiYXBwbGljYXRpb24veC1nemlwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3gtcmFyLWNvbXByZXNzZWQiLCAiYXVkaW8veC13YXZlIiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImF1ZGlvL3gtd2F2ZSIsIHRydWUsIDB9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImltYWdlL3dlYnAiLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiaW1hZ2Uvd2Vi
cCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImlt
YWdlL2dpZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3Nl
ZCIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29t
cHJlc3NlZCIsICJpbWFnZS9wbmciLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3gt
cmFyLWNvbXByZXNzZWQiLCAiaW1hZ2UvcG5nIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0
aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiaW1hZ2UvanBlZyIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
YXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJpbWFnZS9qcGVnIiwgdHJ1ZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3gtcmFyLWNvbXByZXNzZWQiLCAiaW1hZ2UvYm1wIiwgZmFsc2Us
IDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImltYWdlL2JtcCIs
IHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImltYWdl
L3ZuZC5taWNyb3NvZnQuaWNvbiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1y
YXItY29tcHJlc3NlZCIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCB0cnVlLCAwfSwKKyAg
ICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJhcHBsaWNhdGlvbi9yZGYreG1s
IiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImFw
cGxpY2F0aW9uL3JkZit4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXIt
Y29tcHJlc3NlZCIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9h
cHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCB0cnVl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZCIsICJhcHBsaWNhdGlv
bi9hdG9tK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25feC1yYXItY29tcHJl
c3NlZCIsICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNh
dGlvbl96aXAiLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAiYXBwbGljYXRpb24vemlwIn0sCisgICAg
eyI6L2FwcGxpY2F0aW9uX3ppcCIsICJ0ZXh0L3BsYWluIiwgdHJ1ZSwgImFwcGxpY2F0aW9uL3pp
cCJ9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAidW5rbm93bi91bmtub3duIiwgZmFsc2Us
ICJhcHBsaWNhdGlvbi96aXAifSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgInVua25vd24v
dW5rbm93biIsIHRydWUsICJhcHBsaWNhdGlvbi96aXAifSwKKyAgICB7IjovYXBwbGljYXRpb25f
emlwIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCBmYWxzZSwgImFwcGxpY2F0aW9uL3ppcCJ9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGljYXRpb24vdW5rbm93biIsIHRydWUsICJh
cHBsaWNhdGlvbi96aXAifSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgIiovKiIsIGZhbHNl
LCAiYXBwbGljYXRpb24vemlwIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICIqLyoiLCB0
cnVlLCAiYXBwbGljYXRpb24vemlwIn0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJ0ZXh0
L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgInRleHQveG1sIiwg
dHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJhcHBsaWNhdGlvbi94bWwiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJhcHBsaWNhdGlvbi94bWwiLCB0
cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgInRleHQvaHRtbCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgInRleHQvaHRtbCIsIHRydWUsIDB9LAorICAg
IHsiOi9hcHBsaWNhdGlvbl96aXAiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2Fw
cGxpY2F0aW9uX3ppcCIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl96aXAiLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl96aXAiLCAiYXBwbGljYXRpb24vcGRmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9u
X3ppcCIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl96aXAiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIHRydWUsIDB9LAorICAgIHsi
Oi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGljYXRpb24vb2dnIiwgdHJ1ZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3ppcCIsICJ2aWRlby93ZWJtIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBs
aWNhdGlvbl96aXAiLCAidmlkZW8vd2VibSIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlv
bl96aXAiLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIGZhbHNlLCAwfSwKKyAgICB7
IjovYXBwbGljYXRpb25femlwIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0cnVl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImFwcGxpY2F0aW9uL3ppcCIsIHRydWUs
IDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGljYXRpb24veC1nemlwIiwgZmFs
c2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGljYXRpb24veC1nemlwIiwg
dHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJhdWRpby94LXdhdmUiLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJhdWRpby94LXdhdmUiLCB0cnVlLCAw
fSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwgMH0sCisgICAgeyI6
L2FwcGxpY2F0aW9uX3ppcCIsICJpbWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAgeyI6L2FwcGxp
Y2F0aW9uX3ppcCIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25f
emlwIiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwg
ImltYWdlL3BuZyIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiaW1hZ2Uv
anBlZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImltYWdlL2pwZWci
LCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImltYWdlL2JtcCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImltYWdlL2JtcCIsIHRydWUsIDB9LAor
ICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgZmFs
c2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5p
Y29uIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2FwcGxpY2F0aW9uX3ppcCIsICJhcHBsaWNhdGlvbi9y
ZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGljYXRp
b24vcmRmK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96aXAiLCAiYXBwbGlj
YXRpb24vcnNzK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwgImFw
cGxpY2F0aW9uL3Jzcyt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXBwbGljYXRpb25femlwIiwg
ImFwcGxpY2F0aW9uL2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hcHBsaWNhdGlvbl96
aXAiLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXVkaW9feC13
YXZlIiwgInRleHQvcGxhaW4iLCBmYWxzZSwgImF1ZGlvL3gtd2F2ZSJ9LAorICAgIHsiOi9hdWRp
b194LXdhdmUiLCAidGV4dC9wbGFpbiIsIHRydWUsICJhdWRpby94LXdhdmUifSwKKyAgICB7Ijov
YXVkaW9feC13YXZlIiwgInVua25vd24vdW5rbm93biIsIGZhbHNlLCAiYXVkaW8veC13YXZlIn0s
CisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJ1bmtub3duL3Vua25vd24iLCB0cnVlLCAiYXVkaW8v
eC13YXZlIn0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJhcHBsaWNhdGlvbi91bmtub3duIiwg
ZmFsc2UsICJhdWRpby94LXdhdmUifSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0
aW9uL3Vua25vd24iLCB0cnVlLCAiYXVkaW8veC13YXZlIn0sCisgICAgeyI6L2F1ZGlvX3gtd2F2
ZSIsICIqLyoiLCBmYWxzZSwgImF1ZGlvL3gtd2F2ZSJ9LAorICAgIHsiOi9hdWRpb194LXdhdmUi
LCAiKi8qIiwgdHJ1ZSwgImF1ZGlvL3gtd2F2ZSJ9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAi
dGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJ0ZXh0L3htbCIs
IHRydWUsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiYXBwbGljYXRpb24veG1sIiwgZmFs
c2UsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiYXBwbGljYXRpb24veG1sIiwgdHJ1ZSwg
MH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJ0ZXh0L2h0bWwiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2F1ZGlvX3gtd2F2ZSIsICJ0ZXh0L2h0bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXVkaW9f
eC13YXZlIiwgInRleHQveG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAi
dGV4dC94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9u
L3BkZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9uL3Bk
ZiIsIHRydWUsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9uL3Bv
c3RzY3JpcHQiLCB0cnVlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9u
L29nZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9uL29n
ZyIsIHRydWUsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAidmlkZW8vd2VibSIsIGZhbHNl
LCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgInZpZGVvL3dlYm0iLCB0cnVlLCAwfSwKKyAg
ICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVz
c2VkIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJhcHBsaWNhdGlvbi96aXAi
LCBmYWxzZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJhcHBsaWNhdGlvbi96aXAiLCB0
cnVlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIHRy
dWUsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiYXVkaW8veC13YXZlIiwgZmFsc2UsIDB9
LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiYXVkaW8veC13YXZlIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2F1ZGlvX3gtd2F2ZSIsICJpbWFnZS93ZWJwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hdWRp
b194LXdhdmUiLCAiaW1hZ2Uvd2VicCIsIHRydWUsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUi
LCAiaW1hZ2UvZ2lmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiaW1hZ2Uv
Z2lmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJpbWFnZS9wbmciLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJpbWFnZS9wbmciLCB0cnVlLCAwfSwKKyAg
ICB7IjovYXVkaW9feC13YXZlIiwgImltYWdlL2pwZWciLCBmYWxzZSwgMH0sCisgICAgeyI6L2F1
ZGlvX3gtd2F2ZSIsICJpbWFnZS9qcGVnIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2
ZSIsICJpbWFnZS9ibXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJpbWFn
ZS9ibXAiLCB0cnVlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImltYWdlL3ZuZC5taWNy
b3NvZnQuaWNvbiIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImltYWdlL3Zu
ZC5taWNyb3NvZnQuaWNvbiIsIHRydWUsIDB9LAorICAgIHsiOi9hdWRpb194LXdhdmUiLCAiYXBw
bGljYXRpb24vcmRmK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFw
cGxpY2F0aW9uL3JkZit4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwgImFw
cGxpY2F0aW9uL3Jzcyt4bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJh
cHBsaWNhdGlvbi9yc3MreG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2F1ZGlvX3gtd2F2ZSIsICJh
cHBsaWNhdGlvbi9hdG9tK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovYXVkaW9feC13YXZlIiwg
ImFwcGxpY2F0aW9uL2F0b20reG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJ0
ZXh0L3BsYWluIiwgZmFsc2UsICJpbWFnZS9ibXAifSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgInRl
eHQvcGxhaW4iLCB0cnVlLCAiaW1hZ2UvYm1wIn0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJ1bmtu
b3duL3Vua25vd24iLCBmYWxzZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAi
dW5rbm93bi91bmtub3duIiwgdHJ1ZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAi
LCAiYXBwbGljYXRpb24vdW5rbm93biIsIGZhbHNlLCAiaW1hZ2UvYm1wIn0sCisgICAgeyI6L2lt
YWdlX2JtcCIsICJhcHBsaWNhdGlvbi91bmtub3duIiwgdHJ1ZSwgImltYWdlL2JtcCJ9LAorICAg
IHsiOi9pbWFnZV9ibXAiLCAiKi8qIiwgZmFsc2UsICJpbWFnZS9ibXAifSwKKyAgICB7IjovaW1h
Z2VfYm1wIiwgIiovKiIsIHRydWUsICJpbWFnZS9ibXAifSwKKyAgICB7IjovaW1hZ2VfYm1wIiwg
InRleHQveG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAidGV4dC94bWwiLCB0
cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImFwcGxpY2F0aW9uL3htbCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImFwcGxpY2F0aW9uL3htbCIsIHRydWUsIDB9LAorICAg
IHsiOi9pbWFnZV9ibXAiLCAidGV4dC9odG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9i
bXAiLCAidGV4dC9odG1sIiwgdHJ1ZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAi
LCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJ0ZXh0L3htbCIs
IHRydWUsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2Us
IDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24vcGRmIiwgdHJ1ZSwgImltYWdl
L2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCB0
cnVlLCAiaW1hZ2UvYm1wIn0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJhcHBsaWNhdGlvbi9vZ2ci
LCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJhcHBsaWNhdGlvbi9vZ2ciLCB0cnVl
LCAiaW1hZ2UvYm1wIn0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJ2aWRlby93ZWJtIiwgZmFsc2Us
IDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAidmlkZW8vd2VibSIsIHRydWUsICJpbWFnZS9ibXAi
fSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVz
c2VkIiwgdHJ1ZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRp
b24vemlwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24vemlw
IiwgdHJ1ZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24v
eC1nemlwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24veC1n
emlwIiwgdHJ1ZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXVkaW8veC13
YXZlIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXVkaW8veC13YXZlIiwgdHJ1
ZSwgImltYWdlL2JtcCJ9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiaW1hZ2Uvd2VicCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImltYWdlL3dlYnAiLCB0cnVlLCAiaW1hZ2UvYm1w
In0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJpbWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2ltYWdlX2JtcCIsICJpbWFnZS9naWYiLCB0cnVlLCAiaW1hZ2UvYm1wIn0sCisgICAgeyI6L2lt
YWdlX2JtcCIsICJpbWFnZS9wbmciLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJp
bWFnZS9wbmciLCB0cnVlLCAiaW1hZ2UvYm1wIn0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJpbWFn
ZS9qcGVnIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiaW1hZ2UvanBlZyIsIHRy
dWUsICJpbWFnZS9ibXAifSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImltYWdlL2JtcCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImltYWdlL2JtcCIsIHRydWUsICJpbWFnZS9ibXAi
fSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIsIHRy
dWUsICJpbWFnZS9ibXAifSwKKyAgICB7IjovaW1hZ2VfYm1wIiwgImFwcGxpY2F0aW9uL3JkZit4
bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJhcHBsaWNhdGlvbi9yZGYreG1s
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24vcnNzK3htbCIsIHRy
dWUsIDB9LAorICAgIHsiOi9pbWFnZV9ibXAiLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2ltYWdlX2JtcCIsICJhcHBsaWNhdGlvbi9hdG9tK3htbCIsIHRydWUs
IDB9LAorICAgIHsiOi9pbWFnZV9naWYiLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAiaW1hZ2UvZ2lm
In0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJ0ZXh0L3BsYWluIiwgdHJ1ZSwgImltYWdlL2dpZiJ9
LAorICAgIHsiOi9pbWFnZV9naWYiLCAidW5rbm93bi91bmtub3duIiwgZmFsc2UsICJpbWFnZS9n
aWYifSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgInVua25vd24vdW5rbm93biIsIHRydWUsICJpbWFn
ZS9naWYifSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCBmYWxz
ZSwgImltYWdlL2dpZiJ9LAorICAgIHsiOi9pbWFnZV9naWYiLCAiYXBwbGljYXRpb24vdW5rbm93
biIsIHRydWUsICJpbWFnZS9naWYifSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgIiovKiIsIGZhbHNl
LCAiaW1hZ2UvZ2lmIn0sCisgICAgeyI6L2ltYWdlX2dpZiIsICIqLyoiLCB0cnVlLCAiaW1hZ2Uv
Z2lmIn0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7
IjovaW1hZ2VfZ2lmIiwgInRleHQveG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX2dpZiIs
ICJhcHBsaWNhdGlvbi94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJhcHBs
aWNhdGlvbi94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgInRleHQvaHRtbCIs
IGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgInRleHQvaHRtbCIsIHRydWUsICJpbWFn
ZS9naWYifSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgInRleHQveG1sIiwgZmFsc2UsIDB9LAorICAg
IHsiOi9pbWFnZV9naWYiLCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lm
IiwgImFwcGxpY2F0aW9uL3BkZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgImFw
cGxpY2F0aW9uL3BkZiIsIHRydWUsICJpbWFnZS9naWYifSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwg
ImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2dpZiIs
ICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgdHJ1ZSwgImltYWdlL2dpZiJ9LAorICAgIHsiOi9p
bWFnZV9naWYiLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9n
aWYiLCAiYXBwbGljYXRpb24vb2dnIiwgdHJ1ZSwgImltYWdlL2dpZiJ9LAorICAgIHsiOi9pbWFn
ZV9naWYiLCAidmlkZW8vd2VibSIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwgInZp
ZGVvL3dlYm0iLCB0cnVlLCAiaW1hZ2UvZ2lmIn0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJhcHBs
aWNhdGlvbi94LXJhci1jb21wcmVzc2VkIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9naWYi
LCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIHRydWUsICJpbWFnZS9naWYifSwKKyAg
ICB7IjovaW1hZ2VfZ2lmIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
aW1hZ2VfZ2lmIiwgImFwcGxpY2F0aW9uL3ppcCIsIHRydWUsICJpbWFnZS9naWYifSwKKyAgICB7
IjovaW1hZ2VfZ2lmIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
aW1hZ2VfZ2lmIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIHRydWUsICJpbWFnZS9naWYifSwKKyAg
ICB7IjovaW1hZ2VfZ2lmIiwgImF1ZGlvL3gtd2F2ZSIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1h
Z2VfZ2lmIiwgImF1ZGlvL3gtd2F2ZSIsIHRydWUsICJpbWFnZS9naWYifSwKKyAgICB7IjovaW1h
Z2VfZ2lmIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJp
bWFnZS93ZWJwIiwgdHJ1ZSwgImltYWdlL2dpZiJ9LAorICAgIHsiOi9pbWFnZV9naWYiLCAiaW1h
Z2UvZ2lmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9naWYiLCAiaW1hZ2UvZ2lmIiwgdHJ1
ZSwgImltYWdlL2dpZiJ9LAorICAgIHsiOi9pbWFnZV9naWYiLCAiaW1hZ2UvcG5nIiwgZmFsc2Us
IDB9LAorICAgIHsiOi9pbWFnZV9naWYiLCAiaW1hZ2UvcG5nIiwgdHJ1ZSwgImltYWdlL2dpZiJ9
LAorICAgIHsiOi9pbWFnZV9naWYiLCAiaW1hZ2UvanBlZyIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
aW1hZ2VfZ2lmIiwgImltYWdlL2pwZWciLCB0cnVlLCAiaW1hZ2UvZ2lmIn0sCisgICAgeyI6L2lt
YWdlX2dpZiIsICJpbWFnZS9ibXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJp
bWFnZS9ibXAiLCB0cnVlLCAiaW1hZ2UvZ2lmIn0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJpbWFn
ZS92bmQubWljcm9zb2Z0Lmljb24iLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2dpZiIsICJp
bWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCB0cnVlLCAiaW1hZ2UvZ2lmIn0sCisgICAgeyI6L2lt
YWdlX2dpZiIsICJhcHBsaWNhdGlvbi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFn
ZV9naWYiLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9pbWFnZV9n
aWYiLCAiYXBwbGljYXRpb24vcnNzK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lm
IiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfZ2lmIiwg
ImFwcGxpY2F0aW9uL2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9naWYiLCAi
YXBwbGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJ0
ZXh0L3BsYWluIiwgZmFsc2UsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAi
dGV4dC9wbGFpbiIsIHRydWUsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAi
dW5rbm93bi91bmtub3duIiwgZmFsc2UsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6L2ltYWdlX2pw
ZWciLCAidW5rbm93bi91bmtub3duIiwgdHJ1ZSwgImltYWdlL2pwZWcifSwKKyAgICB7IjovaW1h
Z2VfanBlZyIsICJhcHBsaWNhdGlvbi91bmtub3duIiwgZmFsc2UsICJpbWFnZS9qcGVnIn0sCisg
ICAgeyI6L2ltYWdlX2pwZWciLCAiYXBwbGljYXRpb24vdW5rbm93biIsIHRydWUsICJpbWFnZS9q
cGVnIn0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAiKi8qIiwgZmFsc2UsICJpbWFnZS9qcGVnIn0s
CisgICAgeyI6L2ltYWdlX2pwZWciLCAiKi8qIiwgdHJ1ZSwgImltYWdlL2pwZWcifSwKKyAgICB7
IjovaW1hZ2VfanBlZyIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBl
ZyIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImFwcGxpY2F0
aW9uL3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNhdGlvbi94
bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJ0ZXh0L2h0bWwiLCBmYWxzZSwg
MH0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAidGV4dC9odG1sIiwgdHJ1ZSwgImltYWdlL2pwZWci
fSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
aW1hZ2VfanBlZyIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwg
ImFwcGxpY2F0aW9uL3BkZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBs
aWNhdGlvbi9wZGYiLCB0cnVlLCAiaW1hZ2UvanBlZyJ9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwg
ImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2pwZWci
LCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIHRydWUsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6
L2ltYWdlX2pwZWciLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFn
ZV9qcGVnIiwgImFwcGxpY2F0aW9uL29nZyIsIHRydWUsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6
L2ltYWdlX2pwZWciLCAidmlkZW8vd2VibSIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBl
ZyIsICJ2aWRlby93ZWJtIiwgdHJ1ZSwgImltYWdlL2pwZWcifSwKKyAgICB7IjovaW1hZ2VfanBl
ZyIsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIiwgZmFsc2UsIDB9LAorICAgIHsiOi9p
bWFnZV9qcGVnIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0cnVlLCAiaW1hZ2Uv
anBlZyJ9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNhdGlvbi96aXAiLCB0cnVlLCAiaW1hZ2Uv
anBlZyJ9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNhdGlvbi94LWd6aXAiLCB0cnVlLCAi
aW1hZ2UvanBlZyJ9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImF1ZGlvL3gtd2F2ZSIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhdWRpby94LXdhdmUiLCB0cnVlLCAiaW1hZ2Uv
anBlZyJ9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisg
ICAgeyI6L2ltYWdlX2pwZWciLCAiaW1hZ2Uvd2VicCIsIHRydWUsICJpbWFnZS9qcGVnIn0sCisg
ICAgeyI6L2ltYWdlX2pwZWciLCAiaW1hZ2UvZ2lmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFn
ZV9qcGVnIiwgImltYWdlL2dpZiIsIHRydWUsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6L2ltYWdl
X2pwZWciLCAiaW1hZ2UvcG5nIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImlt
YWdlL3BuZyIsIHRydWUsICJpbWFnZS9qcGVnIn0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAiaW1h
Z2UvanBlZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJpbWFnZS9qcGVnIiwg
dHJ1ZSwgImltYWdlL2pwZWcifSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJpbWFnZS9ibXAiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAiaW1hZ2UvYm1wIiwgdHJ1ZSwgImltYWdl
L2pwZWcifSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24i
LCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX2pwZWciLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5p
Y29uIiwgdHJ1ZSwgImltYWdlL2pwZWcifSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNh
dGlvbi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImFwcGxpY2F0
aW9uL3JkZit4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNhdGlv
bi9yc3MreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9qcGVnIiwgImFwcGxpY2F0aW9u
L3Jzcyt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNhdGlvbi9h
dG9tK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfanBlZyIsICJhcHBsaWNhdGlvbi9h
dG9tK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi9pbWFnZV9wbmciLCAidGV4dC9wbGFpbiIsIGZh
bHNlLCAiaW1hZ2UvcG5nIn0sCisgICAgeyI6L2ltYWdlX3BuZyIsICJ0ZXh0L3BsYWluIiwgdHJ1
ZSwgImltYWdlL3BuZyJ9LAorICAgIHsiOi9pbWFnZV9wbmciLCAidW5rbm93bi91bmtub3duIiwg
ZmFsc2UsICJpbWFnZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgInVua25vd24vdW5rbm93
biIsIHRydWUsICJpbWFnZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9u
L3Vua25vd24iLCBmYWxzZSwgImltYWdlL3BuZyJ9LAorICAgIHsiOi9pbWFnZV9wbmciLCAiYXBw
bGljYXRpb24vdW5rbm93biIsIHRydWUsICJpbWFnZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5n
IiwgIiovKiIsIGZhbHNlLCAiaW1hZ2UvcG5nIn0sCisgICAgeyI6L2ltYWdlX3BuZyIsICIqLyoi
LCB0cnVlLCAiaW1hZ2UvcG5nIn0sCisgICAgeyI6L2ltYWdlX3BuZyIsICJ0ZXh0L3htbCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgInRleHQveG1sIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L2ltYWdlX3BuZyIsICJhcHBsaWNhdGlvbi94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2lt
YWdlX3BuZyIsICJhcHBsaWNhdGlvbi94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2VfcG5n
IiwgInRleHQvaHRtbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgInRleHQvaHRt
bCIsIHRydWUsICJpbWFnZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgInRleHQveG1sIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9wbmciLCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAg
ICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3BkZiIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
aW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3BkZiIsIHRydWUsICJpbWFnZS9wbmcifSwKKyAgICB7
IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2ltYWdlX3BuZyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgdHJ1ZSwgImltYWdlL3Bu
ZyJ9LAorICAgIHsiOi9pbWFnZV9wbmciLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAor
ICAgIHsiOi9pbWFnZV9wbmciLCAiYXBwbGljYXRpb24vb2dnIiwgdHJ1ZSwgImltYWdlL3BuZyJ9
LAorICAgIHsiOi9pbWFnZV9wbmciLCAidmlkZW8vd2VibSIsIGZhbHNlLCAwfSwKKyAgICB7Ijov
aW1hZ2VfcG5nIiwgInZpZGVvL3dlYm0iLCB0cnVlLCAiaW1hZ2UvcG5nIn0sCisgICAgeyI6L2lt
YWdlX3BuZyIsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIiwgZmFsc2UsIDB9LAorICAg
IHsiOi9pbWFnZV9wbmciLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIHRydWUsICJp
bWFnZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3ppcCIsIHRydWUsICJpbWFn
ZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIHRydWUsICJp
bWFnZS9wbmcifSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImF1ZGlvL3gtd2F2ZSIsIGZhbHNlLCAw
fSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImF1ZGlvL3gtd2F2ZSIsIHRydWUsICJpbWFnZS9wbmci
fSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2ltYWdlX3BuZyIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwgImltYWdlL3BuZyJ9LAorICAgIHsiOi9p
bWFnZV9wbmciLCAiaW1hZ2UvZ2lmIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9wbmciLCAi
aW1hZ2UvZ2lmIiwgdHJ1ZSwgImltYWdlL3BuZyJ9LAorICAgIHsiOi9pbWFnZV9wbmciLCAiaW1h
Z2UvcG5nIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV9wbmciLCAiaW1hZ2UvcG5nIiwgdHJ1
ZSwgImltYWdlL3BuZyJ9LAorICAgIHsiOi9pbWFnZV9wbmciLCAiaW1hZ2UvanBlZyIsIGZhbHNl
LCAwfSwKKyAgICB7IjovaW1hZ2VfcG5nIiwgImltYWdlL2pwZWciLCB0cnVlLCAiaW1hZ2UvcG5n
In0sCisgICAgeyI6L2ltYWdlX3BuZyIsICJpbWFnZS9ibXAiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2ltYWdlX3BuZyIsICJpbWFnZS9ibXAiLCB0cnVlLCAiaW1hZ2UvcG5nIn0sCisgICAgeyI6L2lt
YWdlX3BuZyIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCBmYWxzZSwgMH0sCisgICAgeyI6
L2ltYWdlX3BuZyIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCB0cnVlLCAiaW1hZ2UvcG5n
In0sCisgICAgeyI6L2ltYWdlX3BuZyIsICJhcHBsaWNhdGlvbi9yZGYreG1sIiwgZmFsc2UsIDB9
LAorICAgIHsiOi9pbWFnZV9wbmciLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIHRydWUsIDB9LAor
ICAgIHsiOi9pbWFnZV9wbmciLCAiYXBwbGljYXRpb24vcnNzK3htbCIsIGZhbHNlLCAwfSwKKyAg
ICB7IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCB0cnVlLCAwfSwKKyAgICB7
IjovaW1hZ2VfcG5nIiwgImFwcGxpY2F0aW9uL2F0b20reG1sIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi9pbWFnZV9wbmciLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7Ijov
aW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgInRleHQvcGxhaW4iLCBmYWxzZSwgImltYWdlL3Zu
ZC5taWNyb3NvZnQuaWNvbiJ9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAi
dGV4dC9wbGFpbiIsIHRydWUsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24ifSwKKyAgICB7Ijov
aW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgInVua25vd24vdW5rbm93biIsIGZhbHNlLCAiaW1h
Z2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNv
biIsICJ1bmtub3duL3Vua25vd24iLCB0cnVlLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0s
CisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlvbi91bmtub3du
IiwgZmFsc2UsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24ifSwKKyAgICB7IjovaW1hZ2Vfdm5k
Lm1pY3Jvc29mdC5pY29uIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCB0cnVlLCAiaW1hZ2Uvdm5k
Lm1pY3Jvc29mdC5pY29uIn0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICIq
LyoiLCBmYWxzZSwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJ9LAorICAgIHsiOi9pbWFnZV92
bmQubWljcm9zb2Z0Lmljb24iLCAiKi8qIiwgdHJ1ZSwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNv
biJ9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAidGV4dC94bWwiLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJ0ZXh0L3htbCIsIHRy
dWUsIDB9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAiYXBwbGljYXRpb24v
eG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAiYXBw
bGljYXRpb24veG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNv
biIsICJ0ZXh0L2h0bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQu
aWNvbiIsICJ0ZXh0L2h0bWwiLCB0cnVlLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0sCisg
ICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwK
KyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgInRleHQveG1sIiwgdHJ1ZSwgMH0s
CisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlvbi9wZGYiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlv
bi9wZGYiLCB0cnVlLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0sCisgICAgeyI6L2ltYWdl
X3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9
LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIsIHRydWUsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24ifSwKKyAgICB7IjovaW1hZ2Vf
dm5kLm1pY3Jvc29mdC5pY29uIiwgImFwcGxpY2F0aW9uL29nZyIsIGZhbHNlLCAwfSwKKyAgICB7
IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgImFwcGxpY2F0aW9uL29nZyIsIHRydWUsICJp
bWFnZS92bmQubWljcm9zb2Z0Lmljb24ifSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5p
Y29uIiwgInZpZGVvL3dlYm0iLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3Nv
ZnQuaWNvbiIsICJ2aWRlby93ZWJtIiwgdHJ1ZSwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJ9
LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAiYXBwbGljYXRpb24veC1yYXIt
Y29tcHJlc3NlZCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29u
IiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0cnVlLCAiaW1hZ2Uvdm5kLm1pY3Jv
c29mdC5pY29uIn0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNh
dGlvbi96aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIs
ICJhcHBsaWNhdGlvbi96aXAiLCB0cnVlLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0sCisg
ICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlvbi94LWd6aXAiLCBm
YWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlv
bi94LWd6aXAiLCB0cnVlLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0sCisgICAgeyI6L2lt
YWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhdWRpby94LXdhdmUiLCBmYWxzZSwgMH0sCisgICAg
eyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhdWRpby94LXdhdmUiLCB0cnVlLCAiaW1h
Z2Uvdm5kLm1pY3Jvc29mdC5pY29uIn0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNv
biIsICJpbWFnZS93ZWJwIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0
Lmljb24iLCAiaW1hZ2Uvd2VicCIsIHRydWUsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24ifSwK
KyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgImltYWdlL2dpZiIsIGZhbHNlLCAw
fSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgImltYWdlL2dpZiIsIHRydWUs
ICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24ifSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29m
dC5pY29uIiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jv
c29mdC5pY29uIiwgImltYWdlL3BuZyIsIHRydWUsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24i
fSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgImltYWdlL2pwZWciLCBmYWxz
ZSwgMH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJpbWFnZS9qcGVnIiwg
dHJ1ZSwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJ9LAorICAgIHsiOi9pbWFnZV92bmQubWlj
cm9zb2Z0Lmljb24iLCAiaW1hZ2UvYm1wIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV92bmQu
bWljcm9zb2Z0Lmljb24iLCAiaW1hZ2UvYm1wIiwgdHJ1ZSwgImltYWdlL3ZuZC5taWNyb3NvZnQu
aWNvbiJ9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAiaW1hZ2Uvdm5kLm1p
Y3Jvc29mdC5pY29uIiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmlj
b24iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgdHJ1ZSwgImltYWdlL3ZuZC5taWNyb3Nv
ZnQuaWNvbiJ9LAorICAgIHsiOi9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24iLCAiYXBwbGljYXRp
b24vcmRmK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29u
IiwgImFwcGxpY2F0aW9uL3JkZit4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1p
Y3Jvc29mdC5pY29uIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6
L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiwgdHJ1ZSwg
MH0sCisgICAgeyI6L2ltYWdlX3ZuZC5taWNyb3NvZnQuaWNvbiIsICJhcHBsaWNhdGlvbi9hdG9t
K3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIiwgImFw
cGxpY2F0aW9uL2F0b20reG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAidGV4
dC9wbGFpbiIsIGZhbHNlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgInRl
eHQvcGxhaW4iLCB0cnVlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgInVu
a25vd24vdW5rbm93biIsIGZhbHNlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9pbWFnZV93ZWJw
IiwgInVua25vd24vdW5rbm93biIsIHRydWUsICJpbWFnZS93ZWJwIn0sCisgICAgeyI6L2ltYWdl
X3dlYnAiLCAiYXBwbGljYXRpb24vdW5rbm93biIsIGZhbHNlLCAiaW1hZ2Uvd2VicCJ9LAorICAg
IHsiOi9pbWFnZV93ZWJwIiwgImFwcGxpY2F0aW9uL3Vua25vd24iLCB0cnVlLCAiaW1hZ2Uvd2Vi
cCJ9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgIiovKiIsIGZhbHNlLCAiaW1hZ2Uvd2VicCJ9LAor
ICAgIHsiOi9pbWFnZV93ZWJwIiwgIiovKiIsIHRydWUsICJpbWFnZS93ZWJwIn0sCisgICAgeyI6
L2ltYWdlX3dlYnAiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAi
LCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJhcHBsaWNhdGlv
bi94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRpb24veG1s
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAidGV4dC9odG1sIiwgZmFsc2UsIDB9
LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgInRleHQvaHRtbCIsIHRydWUsICJpbWFnZS93ZWJwIn0s
CisgICAgeyI6L2ltYWdlX3dlYnAiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2lt
YWdlX3dlYnAiLCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJh
cHBsaWNhdGlvbi9wZGYiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGlj
YXRpb24vcGRmIiwgdHJ1ZSwgImltYWdlL3dlYnAifSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJh
cHBsaWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwg
ImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCB0cnVlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9p
bWFnZV93ZWJwIiwgImFwcGxpY2F0aW9uL29nZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vf
d2VicCIsICJhcHBsaWNhdGlvbi9vZ2ciLCB0cnVlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9p
bWFnZV93ZWJwIiwgInZpZGVvL3dlYm0iLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAi
LCAidmlkZW8vd2VibSIsIHRydWUsICJpbWFnZS93ZWJwIn0sCisgICAgeyI6L2ltYWdlX3dlYnAi
LCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1h
Z2Vfd2VicCIsICJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkIiwgdHJ1ZSwgImltYWdlL3dl
YnAifSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJhcHBsaWNhdGlvbi96aXAiLCBmYWxzZSwgMH0s
CisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRpb24vemlwIiwgdHJ1ZSwgImltYWdlL3dl
YnAifSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJhcHBsaWNhdGlvbi94LWd6aXAiLCBmYWxzZSwg
MH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRpb24veC1nemlwIiwgdHJ1ZSwgImlt
YWdlL3dlYnAifSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJhdWRpby94LXdhdmUiLCBmYWxzZSwg
MH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXVkaW8veC13YXZlIiwgdHJ1ZSwgImltYWdlL3dl
YnAifSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJpbWFnZS93ZWJwIiwgZmFsc2UsIDB9LAorICAg
IHsiOi9pbWFnZV93ZWJwIiwgImltYWdlL3dlYnAiLCB0cnVlLCAiaW1hZ2Uvd2VicCJ9LAorICAg
IHsiOi9pbWFnZV93ZWJwIiwgImltYWdlL2dpZiIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vf
d2VicCIsICJpbWFnZS9naWYiLCB0cnVlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9pbWFnZV93
ZWJwIiwgImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJpbWFn
ZS9wbmciLCB0cnVlLCAiaW1hZ2Uvd2VicCJ9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgImltYWdl
L2pwZWciLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiaW1hZ2UvanBlZyIsIHRy
dWUsICJpbWFnZS93ZWJwIn0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiaW1hZ2UvYm1wIiwgZmFs
c2UsIDB9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgImltYWdlL2JtcCIsIHRydWUsICJpbWFnZS93
ZWJwIn0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi9pbWFnZV93ZWJwIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNv
biIsIHRydWUsICJpbWFnZS93ZWJwIn0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRp
b24vcmRmK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJhcHBsaWNhdGlv
bi9yZGYreG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRpb24v
cnNzK3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovaW1hZ2Vfd2VicCIsICJhcHBsaWNhdGlvbi9y
c3MreG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRpb24vYXRv
bSt4bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L2ltYWdlX3dlYnAiLCAiYXBwbGljYXRpb24vYXRv
bSt4bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgInRleHQvcGxhaW4iLCBmYWxz
ZSwgInRleHQvcGxhaW4ifSwKKyAgICB7IjovdGV4dF9odG1sIiwgInRleHQvcGxhaW4iLCB0cnVl
LCAidGV4dC9wbGFpbiJ9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAidW5rbm93bi91bmtub3duIiwg
ZmFsc2UsICJ0ZXh0L2h0bWwifSwKKyAgICB7IjovdGV4dF9odG1sIiwgInVua25vd24vdW5rbm93
biIsIHRydWUsICJ0ZXh0L2h0bWwifSwKKyAgICB7IjovdGV4dF9odG1sIiwgImFwcGxpY2F0aW9u
L3Vua25vd24iLCBmYWxzZSwgInRleHQvaHRtbCJ9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBw
bGljYXRpb24vdW5rbm93biIsIHRydWUsICJ0ZXh0L2h0bWwifSwKKyAgICB7IjovdGV4dF9odG1s
IiwgIiovKiIsIGZhbHNlLCAidGV4dC9odG1sIn0sCisgICAgeyI6L3RleHRfaHRtbCIsICIqLyoi
LCB0cnVlLCAidGV4dC9odG1sIn0sCisgICAgeyI6L3RleHRfaHRtbCIsICJ0ZXh0L3htbCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgInRleHQveG1sIiwgdHJ1ZSwgMH0sCisgICAg
eyI6L3RleHRfaHRtbCIsICJhcHBsaWNhdGlvbi94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L3Rl
eHRfaHRtbCIsICJhcHBsaWNhdGlvbi94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF9odG1s
IiwgInRleHQvaHRtbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgInRleHQvaHRt
bCIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0s
CisgICAgeyI6L3RleHRfaHRtbCIsICJ0ZXh0L3htbCIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0
X2h0bWwiLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwi
LCAiYXBwbGljYXRpb24vcGRmIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfaHRtbCIsICJhcHBs
aWNhdGlvbi9wb3N0c2NyaXB0IiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBw
bGljYXRpb24vcG9zdHNjcmlwdCIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBw
bGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBwbGljYXRp
b24vb2dnIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfaHRtbCIsICJ2aWRlby93ZWJtIiwgZmFs
c2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAidmlkZW8vd2VibSIsIHRydWUsIDB9LAorICAg
IHsiOi90ZXh0X2h0bWwiLCAiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovdGV4dF9odG1sIiwgImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQiLCB0
cnVlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgImFwcGxpY2F0aW9uL3ppcCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovdGV4dF9odG1sIiwgImFwcGxpY2F0aW9uL3ppcCIsIHRydWUsIDB9LAorICAg
IHsiOi90ZXh0X2h0bWwiLCAiYXBwbGljYXRpb24veC1nemlwIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi90ZXh0X2h0bWwiLCAiYXBwbGljYXRpb24veC1nemlwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3Rl
eHRfaHRtbCIsICJhdWRpby94LXdhdmUiLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfaHRtbCIs
ICJhdWRpby94LXdhdmUiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgImltYWdlL3dl
YnAiLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfaHRtbCIsICJpbWFnZS93ZWJwIiwgdHJ1ZSwg
MH0sCisgICAgeyI6L3RleHRfaHRtbCIsICJpbWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAgeyI6
L3RleHRfaHRtbCIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwg
ImltYWdlL3BuZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgImltYWdlL3BuZyIs
IHRydWUsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiaW1hZ2UvanBlZyIsIGZhbHNlLCAwfSwK
KyAgICB7IjovdGV4dF9odG1sIiwgImltYWdlL2pwZWciLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4
dF9odG1sIiwgImltYWdlL2JtcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgImlt
YWdlL2JtcCIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiaW1hZ2Uvdm5kLm1pY3Jv
c29mdC5pY29uIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiaW1hZ2Uvdm5kLm1p
Y3Jvc29mdC5pY29uIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfaHRtbCIsICJhcHBsaWNhdGlv
bi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBwbGljYXRpb24v
cmRmK3htbCIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBwbGljYXRpb24vcnNz
K3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgImFwcGxpY2F0aW9uL3Jzcyt4
bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF9odG1sIiwgImFwcGxpY2F0aW9uL2F0b20reG1s
IiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X2h0bWwiLCAiYXBwbGljYXRpb24vYXRvbSt4bWwi
LCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAidGV4
dC9wbGFpbiJ9LAorICAgIHsiOi90ZXh0X3htbCIsICJ0ZXh0L3BsYWluIiwgdHJ1ZSwgInRleHQv
cGxhaW4ifSwKKyAgICB7IjovdGV4dF94bWwiLCAidW5rbm93bi91bmtub3duIiwgZmFsc2UsICJ0
ZXh0L3htbCJ9LAorICAgIHsiOi90ZXh0X3htbCIsICJ1bmtub3duL3Vua25vd24iLCB0cnVlLCAi
dGV4dC94bWwifSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24vdW5rbm93biIsIGZh
bHNlLCAidGV4dC94bWwifSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24vdW5rbm93
biIsIHRydWUsICJ0ZXh0L3htbCJ9LAorICAgIHsiOi90ZXh0X3htbCIsICIqLyoiLCBmYWxzZSwg
InRleHQveG1sIn0sCisgICAgeyI6L3RleHRfeG1sIiwgIiovKiIsIHRydWUsICJ0ZXh0L3htbCJ9
LAorICAgIHsiOi90ZXh0X3htbCIsICJ0ZXh0L3htbCIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4
dF94bWwiLCAidGV4dC94bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGlj
YXRpb24veG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJhcHBsaWNhdGlvbi94
bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAidGV4dC9odG1sIiwgZmFsc2UsIDB9
LAorICAgIHsiOi90ZXh0X3htbCIsICJ0ZXh0L2h0bWwiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4
dF94bWwiLCAidGV4dC94bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgInRleHQv
eG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL3BkZiIsIGZh
bHNlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24vcGRmIiwgdHJ1ZSwgMH0s
CisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCBmYWxzZSwgMH0s
CisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCB0cnVlLCAwfSwK
KyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24vb2dnIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi90ZXh0X3htbCIsICJhcHBsaWNhdGlvbi9vZ2ciLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94
bWwiLCAidmlkZW8vd2VibSIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAidmlkZW8v
d2VibSIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJhcHBsaWNhdGlvbi94LXJhci1j
b21wcmVzc2VkIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJhcHBsaWNhdGlvbi94
LXJhci1jb21wcmVzc2VkIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0
aW9uL3ppcCIsIGZhbHNlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24vemlw
IiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL3gtZ3ppcCIsIGZh
bHNlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24veC1nemlwIiwgdHJ1ZSwg
MH0sCisgICAgeyI6L3RleHRfeG1sIiwgImF1ZGlvL3gtd2F2ZSIsIGZhbHNlLCAwfSwKKyAgICB7
IjovdGV4dF94bWwiLCAiYXVkaW8veC13YXZlIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfeG1s
IiwgImltYWdlL3dlYnAiLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImltYWdlL3dl
YnAiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiaW1hZ2UvZ2lmIiwgZmFsc2UsIDB9
LAorICAgIHsiOi90ZXh0X3htbCIsICJpbWFnZS9naWYiLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4
dF94bWwiLCAiaW1hZ2UvcG5nIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJpbWFn
ZS9wbmciLCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiaW1hZ2UvanBlZyIsIGZhbHNl
LCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiaW1hZ2UvanBlZyIsIHRydWUsIDB9LAorICAgIHsi
Oi90ZXh0X3htbCIsICJpbWFnZS9ibXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwg
ImltYWdlL2JtcCIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJpbWFnZS92bmQubWlj
cm9zb2Z0Lmljb24iLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImltYWdlL3ZuZC5t
aWNyb3NvZnQuaWNvbiIsIHRydWUsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJhcHBsaWNhdGlv
bi9yZGYreG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi90ZXh0X3htbCIsICJhcHBsaWNhdGlvbi9y
ZGYreG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL3Jzcyt4
bWwiLCBmYWxzZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwi
LCB0cnVlLCAwfSwKKyAgICB7IjovdGV4dF94bWwiLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCBm
YWxzZSwgMH0sCisgICAgeyI6L3RleHRfeG1sIiwgImFwcGxpY2F0aW9uL2F0b20reG1sIiwgdHJ1
ZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAidGV4dC9wbGFpbiIsIGZhbHNlLCAidmlkZW8v
d2VibSJ9LAorICAgIHsiOi92aWRlb193ZWJtIiwgInRleHQvcGxhaW4iLCB0cnVlLCAidmlkZW8v
d2VibSJ9LAorICAgIHsiOi92aWRlb193ZWJtIiwgInVua25vd24vdW5rbm93biIsIGZhbHNlLCAi
dmlkZW8vd2VibSJ9LAorICAgIHsiOi92aWRlb193ZWJtIiwgInVua25vd24vdW5rbm93biIsIHRy
dWUsICJ2aWRlby93ZWJtIn0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vdW5r
bm93biIsIGZhbHNlLCAidmlkZW8vd2VibSJ9LAorICAgIHsiOi92aWRlb193ZWJtIiwgImFwcGxp
Y2F0aW9uL3Vua25vd24iLCB0cnVlLCAidmlkZW8vd2VibSJ9LAorICAgIHsiOi92aWRlb193ZWJt
IiwgIiovKiIsIGZhbHNlLCAidmlkZW8vd2VibSJ9LAorICAgIHsiOi92aWRlb193ZWJtIiwgIiov
KiIsIHRydWUsICJ2aWRlby93ZWJtIn0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAidGV4dC94bWwi
LCBmYWxzZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAidGV4dC94bWwiLCB0cnVlLCAwfSwK
KyAgICB7IjovdmlkZW9fd2VibSIsICJhcHBsaWNhdGlvbi94bWwiLCBmYWxzZSwgMH0sCisgICAg
eyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24veG1sIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3Zp
ZGVvX3dlYm0iLCAidGV4dC9odG1sIiwgZmFsc2UsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwg
InRleHQvaHRtbCIsIHRydWUsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgInRleHQveG1sIiwg
ZmFsc2UsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgInRleHQveG1sIiwgdHJ1ZSwgMH0sCisg
ICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vcGRmIiwgZmFsc2UsIDB9LAorICAgIHsi
Oi92aWRlb193ZWJtIiwgImFwcGxpY2F0aW9uL3BkZiIsIHRydWUsIDB9LAorICAgIHsiOi92aWRl
b193ZWJtIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiLCBmYWxzZSwgMH0sCisgICAgeyI6L3Zp
ZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIsIHRydWUsIDB9LAorICAgIHsiOi92
aWRlb193ZWJtIiwgImFwcGxpY2F0aW9uL29nZyIsIGZhbHNlLCAwfSwKKyAgICB7IjovdmlkZW9f
d2VibSIsICJhcHBsaWNhdGlvbi9vZ2ciLCB0cnVlLCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIs
ICJ2aWRlby93ZWJtIiwgZmFsc2UsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgInZpZGVvL3dl
Ym0iLCB0cnVlLCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJhcHBsaWNhdGlvbi94LXJhci1j
b21wcmVzc2VkIiwgZmFsc2UsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgImFwcGxpY2F0aW9u
L3gtcmFyLWNvbXByZXNzZWQiLCB0cnVlLCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJhcHBs
aWNhdGlvbi96aXAiLCBmYWxzZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRp
b24vemlwIiwgdHJ1ZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24veC1n
emlwIiwgZmFsc2UsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgImFwcGxpY2F0aW9uL3gtZ3pp
cCIsIHRydWUsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgImF1ZGlvL3gtd2F2ZSIsIGZhbHNl
LCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJhdWRpby94LXdhdmUiLCB0cnVlLCAwfSwKKyAg
ICB7IjovdmlkZW9fd2VibSIsICJpbWFnZS93ZWJwIiwgZmFsc2UsIDB9LAorICAgIHsiOi92aWRl
b193ZWJtIiwgImltYWdlL3dlYnAiLCB0cnVlLCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJp
bWFnZS9naWYiLCBmYWxzZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiaW1hZ2UvZ2lmIiwg
dHJ1ZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiaW1hZ2UvcG5nIiwgZmFsc2UsIDB9LAor
ICAgIHsiOi92aWRlb193ZWJtIiwgImltYWdlL3BuZyIsIHRydWUsIDB9LAorICAgIHsiOi92aWRl
b193ZWJtIiwgImltYWdlL2pwZWciLCBmYWxzZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAi
aW1hZ2UvanBlZyIsIHRydWUsIDB9LAorICAgIHsiOi92aWRlb193ZWJtIiwgImltYWdlL2JtcCIs
IGZhbHNlLCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJpbWFnZS9ibXAiLCB0cnVlLCAwfSwK
KyAgICB7IjovdmlkZW9fd2VibSIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iLCBmYWxzZSwg
MH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwgdHJ1
ZSwgMH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vcmRmK3htbCIsIGZhbHNl
LCAwfSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJhcHBsaWNhdGlvbi9yZGYreG1sIiwgdHJ1ZSwg
MH0sCisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vcnNzK3htbCIsIGZhbHNlLCAw
fSwKKyAgICB7IjovdmlkZW9fd2VibSIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiwgdHJ1ZSwgMH0s
CisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCBmYWxzZSwgMH0s
CisgICAgeyI6L3ZpZGVvX3dlYm0iLCAiYXBwbGljYXRpb24vYXRvbSt4bWwiLCB0cnVlLCAwfQor
fTsKK3N0YXRpYyBjb25zdCBzaXplX3QgdGVzdExpc3RTaXplID0gc2l6ZW9mKHRlc3RMaXN0KSAv
IHNpemVvZih0ZXN0TGlzdFswXSk7CisKKyNlbmRpZiAvLyBUZXN0RGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMucXJjIGIvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzLnFyYwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGFmYjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzLnFyYwpAQCAtMCwwICsx
LDIzIEBACis8UkNDPgorICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvIj4KKyAgICAgICAgPGZpbGUg
YWxpYXM9ImFwcGxpY2F0aW9uX2F0b20reG1sIj5yZXNvdXJjZXMvYXBwbGljYXRpb25fYXRvbSt4
bWw8L2ZpbGU+CisgICAgICAgIDxmaWxlIGFsaWFzPSJhcHBsaWNhdGlvbl9vZ2ciPnJlc291cmNl
cy9hcHBsaWNhdGlvbl9vZ2c8L2ZpbGU+CisgICAgICAgIDxmaWxlIGFsaWFzPSJhcHBsaWNhdGlv
bl9wZGYiPnJlc291cmNlcy9hcHBsaWNhdGlvbl9wZGY8L2ZpbGU+CisgICAgICAgIDxmaWxlIGFs
aWFzPSJhcHBsaWNhdGlvbl9wb3N0c2NyaXB0Ij5yZXNvdXJjZXMvYXBwbGljYXRpb25fcG9zdHNj
cmlwdDwvZmlsZT4KKyAgICAgICAgPGZpbGUgYWxpYXM9ImFwcGxpY2F0aW9uX3JkZit4bWwiPnJl
c291cmNlcy9hcHBsaWNhdGlvbl9yZGYreG1sPC9maWxlPgorICAgICAgICA8ZmlsZSBhbGlhcz0i
YXBwbGljYXRpb25fcnNzK3htbCI+cmVzb3VyY2VzL2FwcGxpY2F0aW9uX3Jzcyt4bWw8L2ZpbGU+
CisgICAgICAgIDxmaWxlIGFsaWFzPSJhcHBsaWNhdGlvbl94LWd6aXAiPnJlc291cmNlcy9hcHBs
aWNhdGlvbl94LWd6aXA8L2ZpbGU+CisgICAgICAgIDxmaWxlIGFsaWFzPSJhcHBsaWNhdGlvbl94
LXJhci1jb21wcmVzc2VkIj5yZXNvdXJjZXMvYXBwbGljYXRpb25feC1yYXItY29tcHJlc3NlZDwv
ZmlsZT4KKyAgICAgICAgPGZpbGUgYWxpYXM9ImFwcGxpY2F0aW9uX3ppcCI+cmVzb3VyY2VzL2Fw
cGxpY2F0aW9uX3ppcDwvZmlsZT4KKyAgICAgICAgPGZpbGUgYWxpYXM9ImF1ZGlvX3gtd2F2ZSI+
cmVzb3VyY2VzL2F1ZGlvX3gtd2F2ZTwvZmlsZT4KKyAgICAgICAgPGZpbGUgYWxpYXM9ImltYWdl
X2JtcCI+cmVzb3VyY2VzL2ltYWdlX2JtcDwvZmlsZT4KKyAgICAgICAgPGZpbGUgYWxpYXM9Imlt
YWdlX2dpZiI+cmVzb3VyY2VzL2ltYWdlX2dpZjwvZmlsZT4KKyAgICAgICAgPGZpbGUgYWxpYXM9
ImltYWdlX2pwZWciPnJlc291cmNlcy9pbWFnZV9qcGVnPC9maWxlPgorICAgICAgICA8ZmlsZSBh
bGlhcz0iaW1hZ2VfcG5nIj5yZXNvdXJjZXMvaW1hZ2VfcG5nPC9maWxlPgorICAgICAgICA8Zmls
ZSBhbGlhcz0iaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIj5yZXNvdXJjZXMvaW1hZ2Vfdm5kLm1p
Y3Jvc29mdC5pY29uPC9maWxlPgorICAgICAgICA8ZmlsZSBhbGlhcz0iaW1hZ2Vfd2VicCI+cmVz
b3VyY2VzL2ltYWdlX3dlYnA8L2ZpbGU+CisgICAgICAgIDxmaWxlIGFsaWFzPSJ0ZXh0X2h0bWwi
PnJlc291cmNlcy90ZXh0X2h0bWw8L2ZpbGU+CisgICAgICAgIDxmaWxlIGFsaWFzPSJ0ZXh0X3ht
bCI+cmVzb3VyY2VzL3RleHRfeG1sPC9maWxlPgorICAgICAgICA8ZmlsZSBhbGlhcz0idmlkZW9f
d2VibSI+cmVzb3VyY2VzL3ZpZGVvX3dlYm08L2ZpbGU+CisgICAgPC9xcmVzb3VyY2U+Cis8L1JD
Qz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291
cmNlcy9hcHBsaWNhdGlvbl9hdG9tK3htbCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNu
aWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9hdG9tK3htbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41NDA4NmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX2F0b20reG1sCkBA
IC0wLDAgKzEsMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
ZmVlZCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwNS9BdG9tIj4KKyAgICA8dGl0bGU+RXhh
bXBsZSBGZWVkPC90aXRsZT4KKyAgICA8bGluayBocmVmPSJodHRwOi8vZXhhbXBsZS5vcmcvIi8+
CisgICAgPHVwZGF0ZWQ+MjAwMy0xMi0xM1QxODozMDowMlo8L3VwZGF0ZWQ+CisgICAgPGF1dGhv
cj4KKyAgICAgICAgPG5hbWU+Sm9obiBEb2U8L25hbWU+CisgICAgPC9hdXRob3I+CisgICAgPGlk
PnVybjp1dWlkOjYwYTc2YzgwLWQzOTktMTFkOS1iOTNDLTAwMDM5MzllMGFmNjwvaWQ+CisgICAg
PGVudHJ5PgorICAgICAgICA8dGl0bGU+QXRvbS1Qb3dlcmVkIFJvYm90cyBSdW4gQW1vazwvdGl0
bGU+CisgICAgICAgIDxsaW5rIGhyZWY9Imh0dHA6Ly9leGFtcGxlLm9yZy8yMDAzLzEyLzEzL2F0
b20wMyIvPgorICAgICAgICA8aWQ+dXJuOnV1aWQ6MTIyNWM2OTUtY2ZiOC00ZWJiLWFhYWEtODBk
YTM0NGVmYTZhPC9pZD4KKyAgICAgICAgPHVwZGF0ZWQ+MjAwMy0xMi0xM1QxODozMDowMlo8L3Vw
ZGF0ZWQ+CisgICAgICAgIDxzdW1tYXJ5PlNvbWUgdGV4dC48L3N1bW1hcnk+CisgICAgPC9lbnRy
eT4KKzwvZmVlZD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZm
aW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9vZ2cgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01J
TUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fb2dnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI5Y2MxYjIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fb2dn
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcv
cmVzb3VyY2VzL2FwcGxpY2F0aW9uX3BkZiBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNu
aWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uN2Y4OTk2ZgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9wZGYgZGlm
ZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNv
dXJjZXMvYXBwbGljYXRpb25fcG9zdHNjcmlwdCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlN
RVNuaWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl9wb3N0c2NyaXB0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YjlhZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcG9zdHNj
cmlwdApAQCAtMCwwICsxLDEzNyBAQAorJSFQUy1BZG9iZS0yLjAgRVBTRi0xLjINCislJUNyZWF0
b3I6IEhpSmFhayAyLjENCislJUNyZWF0aW9uRGF0ZTogMTIvMjkvOTMgMTM6NTI6MDgNCislJUJv
dW5kaW5nQm94OjEyNiAyMTYgNDg2IDU3Ng0KKyUlRW5kQ29tbWVudHMNCisvbGQge2xvYWQgZGVm
fSBiaW5kIGRlZg0KKy9zIC9zdHJva2UgbGQgL2YgL2ZpbGwgbGQgL20gL21vdmV0byBsZCAvbCAv
bGluZXRvIGxkIC9jIC9jdXJ2ZXRvIGxkIC9yZ2IgezI1NSBkaXYgMyAxIHJvbGwgMjU1IGRpdiAz
IDEgcm9sbCAyNTUgZGl2IDMgMSByb2xsIHNldHJnYmNvbG9yfSBkZWYNCisxMjYgMjE2IHRyYW5z
bGF0ZQ0KKzM2MC4wMDAwIDM2MC4wMDAwIHNjYWxlDQorL3BpY3N0ciAxMjQgc3RyaW5nIGRlZg0K
KzEyNCAxMjQgOCBbMTI0IDAgMCAtMTI0IDAgMTI0XSB7Y3VycmVudGZpbGUgcGljc3RyIHJlYWRo
ZXhzdHJpbmcgcG9wfSBpbWFnZQ0KKzY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1QURBREFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFE
QURBREFEQURBREFEQURBREFEQUQxQjFCMUIxQjFCMUIxQjFCMUIxQkZGDQorNjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjUwMDY1NjU2
NTY1NjUwMDY1NjU2NTY1MDA2NTY1NjU2NTY1NjUwMDAwMDA2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjVBREFEQUQwMEFEQURBRDAwMDAw
MEFEQUQwMEFEQURBREFEQUQwMEFEMDBBREFEQURBRDAwQURBREFEQUQwMDAwMDAwMDAwMUIxQjAw
MUIxQjFCRkYNCis2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTAwMDA2NTY1NjUwMDAwNjU2NTY1MDA2NTAwNjU2NTY1NjUwMDY1NjU2
NTAwNjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NUFEQURBRDAwQURBRDAwQURBREFEMDBBREFEMDBBREFEQUQwMEFEQUQwMDAwQURBREFEMDBB
REFEQURBRDAwMUIxQjFCMUIwMDFCMDAxQjFCMUJGRg0KKzY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1MDAwMDY1NjU2NTAwMDA2NTY1
NjUwMDY1MDA2NTY1NjUwMDY1NjU2NTY1NjUwMDY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1QURBREFEMDBBRDAwQURBREFEQURBREFEQUQwMEFE
QURBRDAwQURBRDAwQUQwMEFEQUQwMEFEQURBREFEMDAxQjFCMUIxQjAwMUIwMDFCMUIxQkZGDQor
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjUwMDY1MDA2NTAwNjUwMDY1NjU2NTAwNjUwMDY1NjU2NTAwNjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjVBREFEQUQw
MEFEMDBBREFEQURBREFEQURBREFEMDBBRDAwQURBREFEMDBBRDAwQURBRDAwQURBREFEQUQwMDAw
MDAwMDAwMUIxQjAwMUIxQjFCRkYNCis2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTAwNjUwMDY1MDA2NTAwNjU2NTAwNjU2NTY1MDA2
NTY1MDA2NTY1NjUwMDAwMDA2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NUFEQURBRDAwQUQwMEFEQURBREFEQURBREFEQURBRDAwQURBREFEQUQw
MEFEQUQwMEFEMDBBREFEQURBRDAwMUIxQjFCMUIwMDFCMDAxQjFCMUJGRg0KKzY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1MDA2NTAw
NjUwMDY1MDA2NTY1MDAwMDAwMDAwMDY1NjUwMDY1NjU2NTY1NjUwMDY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1QURBREFEMDBBRDAwQURBREFE
QURBREFEQURBREFEMDBBREFEQURBRDAwQURBRDAwQUQwMEFEQURBREFEMDAxQjFCMUIxQjAwMUIw
MDFCMUIxQkZGDQorNjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjUwMDY1NjUwMDY1NjUwMDY1MDA2NTY1NjU2NTY1MDA2NTY1MDA2NTY1
NjUwMDY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjVBREFEQUQwMEFEQUQwMEFEQURBRDAwQURBREFEQUQwMEFEQURBREFEMDBBREFEQUQwMDAw
QURBREFEQUQwMDFCMUIxQjFCMDAxQjAwMUIxQjFCRkYNCis2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTAwNjU2NTAwNjU2NTAwNjUw
MDY1NjU2NTY1NjUwMDY1NjU2NTAwMDAwMDY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NUFEQURBRDAwQURBREFEMDAwMDAwQURBREFEQURB
RDAwQURBREFEQUQwMEFEQURBREFEMDBBREFEQURBRDAwMDAwMDAwMDAxQjFCMDAwMDAwMDBGRg0K
KzY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1QURBREFE
MDBBREFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFEQUQx
QjFCMUIxQjFCMUIxQjFCMUIxQkZGDQorNjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1
NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2
NTY1NjU2NTY1NjU2NTY1NjVBREFEQUQwMEFEQURBREFEQURBREFEQURBREFEQURBREFEQURBREFE
QURBREFEQURBREFEQURBREFEQURBRDFCMUIxQjFCMUIxQjFCMUIxQjFCRkYNCitEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyQURBREFEQURBREFE
QURBREFEQURGRg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTJBREFEQURBREFEQURBREFEQURBREZGDQorRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MkFEQURBREFEQURBREFEQURBREFERkYN
CitEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
QURBREFEQURBREFEQURBREFEQURGRg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTJBREFEQURBREFEQURBREFEQURBREZGDQorRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MkFEQURBREFEQURB
REFEQURBREFERkYNCitEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQzkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyQURBREFEQURBREFEQURBREFEQURGRg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTJBREFEQURBREFEQURBREFEQURBREZG
DQorRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MkFEQURBREFEQURBREFEQURBREFERkYNCitEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzAwMDBEQ0RDMDAwMERDMDAwMDAwMDAwMERDMDAwMERD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTI5MjkyMDAwMDAwMDA5MjkyMDAwMDAwMDAwMDky
OTIwMDAwOTI5MjAwMDA5MjkyOTI5MjkyQURBREFEQUQwMDAwMDAwMEFEQURGRg0KK0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDMDAwMERDREMw
MDAwREMwMDAwRENEQ0RDREMwMDAwRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDOTI5MjkyOTI5MjkyMDAw
MDkyOTIwMDAwOTIwMDAwOTI5MjAwMDA5MjAwMDA5MjkyMDAwMDkyOTI5MjkyOTJBREFEQUQwMDAw
QURBRDAwMDBBREZGDQorRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQzAwRENEQzAwRENEQzAwMDBEQ0RDRENEQzAwMDBEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDREM5MjkyOTI5MjkyMDAwMDkyOTI5MjkyOTI5MjAwMDA5MjkyMDAwMDkyMDAwMDAwOTIw
MDAwOTI5MjkyOTI5MkFEQUQwMDAwQURBREFEQURBREFERkYNCitEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDMDAwMDAwMDBEQ0RDMDAwMDAw
MDAwMERDMDAwMERDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTIwMDAwOTI5MjkyOTI5Mjky
MDAwMDkyOTIwMDAwOTIwMDAwMDA5MjAwMDA5MjkyOTI5MjkyQURBRDAwMDBBREFEQURBREFEQURG
Rg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQzAwMDBEQ0RDREMwMDAwRENEQ0RDREMwMDAwRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDOTI5
MjkyOTI5MjAwMDA5MjkyMDAwMDAwOTIwMDAwMDAwMDAwOTI5MjAwMDA5MjAwMDAwMDkyOTI5Mjky
OTJBREFEMDAwMEFEQURBREFEQURBREZGDQorRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDMDAwMERDRENEQzAwMDBEQ0RDRENEQzAwMDBE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDREM5MjkyOTI5MjkyMDAwMDkyOTI5MjAwMDA5MjAwMDA5MjAwMDA5
MjkyMDAwMDkyMDAwMDAwOTI5MjkyOTI5MkFEQUQwMDAwQURBREFEQURBREFERkYNCitEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREMwMDAw
RENEQ0RDMDAwMERDRENEQ0RDMDAwMERDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTI5MjAw
MDA5MjkyMDAwMDkyMDAwMDkyOTIwMDAwOTIwMDAwOTI5MjAwMDA5MjkyOTI5MjkyQURBREFEMDAw
MEFEQUQwMDAwQURGRg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQzAwMDBEQ0RDREMwMDAwMDAwMDAwREMwMDAwMDAwMDAwMDBEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDOTI5MjkyOTI5MjkyOTIwMDAwMDAwMDkyOTIwMDAwOTI5MjkyMDAwMDAwMDA5Mjky
MDAwMDkyOTI5MjkyOTJBREFEQURBRDAwMDAwMDAwQURBREZGDQorRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MkFEQURBREFEQURBREFEQURBREFE
RkYNCitEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyQURBREFEQURBREFEQURBREFEQURGRg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTJBREFEQURBREFEQURBREFEQURBREZGDQorRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MkFEQURBREFE
QURBREFEQURBREFERkYNCitEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQzkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyQURBREFEQURBREFEQURBREFEQURGRg0KK0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTJBREFEQURBREFEQURBREFEQURB
REZGDQorRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MkFEQURBREFEQURBREFEQURBREFERkYNCitEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyQURBREFEQURBREFEQURBREFEQURGRg0KK0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTJBREFEQURB
REFEQURBREFEQURBREZGDQorRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDREM5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MkFEQURBREFEQURBREFEQURBREFERkYNCitEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyQURBREFEQURBREFEQURBREFE
QURGRg0KK0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5
MjkyOTJBREFEQURBREFEQURBREFEQURBREZGDQorRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDREM5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5Mjky
OTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MkFEQURBREFEQURBREFEQURBREFERkYNCitEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzkyOTI5MjkyOTI5
MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyOTI5MjkyQURBREFE
QURBREFEQURBREFEQURGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2
NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2
NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1
NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1
NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2
NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2
NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1
NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQor
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1
NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2
NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0K
KzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2
NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1
NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYN
Cis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
NjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2
NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZG
DQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
QzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTAwMDAwMDAwMDA0QTRBMDAwMDAwMDAwMDRBMDAwMDAw
MDAwMDRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDREMwMDAwRENEQzAwMDBEQzAwMDAwMDAwMDBEQzAw
MDBEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDMDAwMDAwNjU2NTY1MDAwMDAwNjVGRg0KKzRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBMDAwMDRBNEEw
MDAwNEEwMDAwNEE0QTRBNEEwMDAwNEE0QTAwMDA0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQzAwMDBE
Q0RDMDAwMERDMDAwMERDRENEQ0RDMDAwMERDRENEQ0RDRENEQ0RDRENEQ0RDREMwMDAwMDA2NTY1
NjUwMDAwMDA2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEEwMDAwNEE0QTAwMDA0QTAwMDA0QTRBNEE0QTAwMDA0QTRBMDAwMDRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEFEQ0RDRENEQ0RDREMwMERDREMwMERDREMwMDAwRENEQ0RDREMwMDAwRENEQ0RDRENE
Q0RDRENEQ0RDRENEQzAwMDAwMDAwNjUwMDAwMDAwMDY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTAwMDA0QTRBMDAwMDRBMDAwMDAw
MDAwMDRBMDAwMDRBNEEwMDAwNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQzAwMDAwMDAwRENEQzAw
MDAwMDAwMDBEQzAwMDBEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDMDAwMDAwMDA2NTAwMDAwMDAwNjVG
Rg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBMDAwMDAwMDAwMDRBNEEwMDAwNEE0QTRBNEEwMDAwNEE0QTAwMDA0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENE
Q0RDRENEQ0RDREMwMDAwRENEQ0RDMDAwMERDRENEQ0RDMDAwMERDRENEQ0RDRENEQ0RDRENEQ0RD
REMwMDAwNjUwMDY1MDA2NTAwMDA2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEEwMDAwNEEwMDAwNEE0QTAwMDA0QTRBNEE0QTAwMDA0
QTRBMDAwMDRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQzAwMDBEQ0RDREMwMDAwRENEQ0RDREMw
MDAwRENEQ0RDRENEQ0RDRENEQ0RDRENEQzAwMDA2NTAwMDAwMDY1MDAwMDY1RkYNCis0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTAwMDA0QTRB
MDAwMDRBMDAwMDRBNEE0QTRBMDAwMDRBNEEwMDAwNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RD
MDAwMERDRENEQzAwMDBEQ0RDRENEQzAwMDBEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDMDAwMDY1MDAw
MDAwNjUwMDAwNjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBMDAwMDRBNEE0QTAwMDAwMDAwMDAwMDAwNEEwMDAwMDAwMDAwNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBRENEQ0RDRENEQ0RDREMwMDAwRENEQ0RDMDAwMDAwMDAwMERDMDAwMDAwMDAwMDAw
RENEQ0RDRENEQ0RDREMwMDAwNjU2NTAwNjU2NTAwMDA2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1
RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1
NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2
NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2
NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1
NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1
NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2
NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2
NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1
NjU2NUZGDQorNEE0QTRBNEEwMDAwMDAwMDAwNEE0QTRBNEEwMDAwMDA0QTRBNEEwMDAwMDAwMDAw
NEE0QTRBNEEwMDRBNEE0QTRBNEEwMDAwMDAwMDAwNEEwMDAwMDAwMDAwNEEwMDAwMDAwMDAwNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTAwNEE0QTRBNEEwMDRBNEEw
MDRBNEE0QTAwNEE0QTRBNEEwMDRBNEE0QTRBNEE0QTAwNEE0QTRBNEE0QTAwNEE0QTRBNEE0QTAw
NEE0QTRBNEE0QTRBNEEwMDRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRB
NEE0QTRBMDA0QTRBNEE0QTAwNEEwMDRBNEE0QTRBNEEwMDRBNEE0QTAwNEE0QTRBNEE0QTRBMDA0
QTRBNEE0QTRBMDA0QTRBNEE0QTRBMDA0QTRBNEE0QTRBNEE0QTAwNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1
NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEEwMDAwMDAwMDAwNEE0QTAwNEE0QTRBNEE0QTAw
NEE0QTRBMDA0QTRBNEE0QTRBNEEwMDRBNEE0QTRBNEEwMDAwMDAwMDAwNEEwMDAwMDAwMDRBNEE0
QTRBMDA0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTAwNEE0
QTRBNEEwMDRBMDA0QTRBNEE0QTRBMDA0QTRBNEEwMDRBNEE0QTRBNEE0QTAwNEE0QTRBNEE0QTAw
NEE0QTRBNEE0QTAwNEE0QTRBNEE0QTRBNEEwMDRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2
NTY1NjVGRg0KKzRBNEE0QTRBMDA0QTRBNEE0QTAwNEEwMDRBNEE0QTRBNEEwMDRBNEE0QTAwNEE0
QTRBNEE0QTRBMDA0QTRBNEE0QTRBMDA0QTRBNEE0QTRBMDA0QTRBNEE0QTRBNEE0QTAwNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEEwMDRBNEE0QTRBMDA0QTRB
MDA0QTRBNEEwMDRBNEE0QTRBMDA0QTRBNEE0QTRBNEEwMDRBNEE0QTRBNEEwMDRBNEE0QTRBNEEw
MDRBNEE0QTRBNEE0QTRBMDA0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0
QTRBNEE0QTAwMDAwMDAwMDA0QTRBNEE0QTAwMDAwMDRBNEE0QTRBNEEwMDRBNEE0QTRBNEE0QTAw
MDAwMDAwMDA0QTAwMDAwMDAwMDA0QTAwNEE0QTRBNEE0QTRBNEEwMDRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2
NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1
NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQor
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEFEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQzY1
NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0KKzRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2NTY1NjU2NTY1NjU2
NTY1NjU2NUZGDQorNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEFEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RD
RENEQ0RDRENEQzY1NjU2NTY1NjU2NTY1NjU2NTY1RkYNCis0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QURDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENE
Q0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDNjU2NTY1NjU2NTY1NjU2NTY1NjVGRg0K
KzRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRB
NEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0
QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBNEE0QTRBRENEQ0RD
RENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDRENEQ0RDREM2
NTY1NjU2NTY1NjU2NTY1NjU2NUZGDQorc2hvd3BhZ2UNCisEClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcv
cmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JkZit4bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01J
TUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcmRmK3htbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lMjE0MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3JkZit4bWwK
QEAgLTAsMCArMSw1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+CisKKzxyZGY6UkRGICB4bWxu
czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5z
PSJodHRwOi8vcHVybC5vcmcvcnNzLzEuMC8iPgorCisgIDxjaGFubmVsIHJkZjphYm91dD0iaHR0
cDovL3d3dy54bWwuY29tL3htbC9uZXdzLnJzcyI+CisgICAgPHRpdGxlPlhNTC5jb208L3RpdGxl
PgorICAgIDxsaW5rPmh0dHA6Ly94bWwuY29tL3B1YjwvbGluaz4KKyAgICA8ZGVzY3JpcHRpb24+
CisgICAgICBYTUwuY29tIGZlYXR1cmVzIGEgcmljaCBtaXggb2YgaW5mb3JtYXRpb24gYW5kIHNl
cnZpY2VzCisgICAgICBmb3IgdGhlIFhNTCBjb21tdW5pdHkuCisgICAgPC9kZXNjcmlwdGlvbj4K
KworICAgIDxpbWFnZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly94bWwuY29tL3VuaXZlcnNhbC9pbWFn
ZXMveG1sX3RpbnkuZ2lmIiAvPgorCisgICAgPGl0ZW1zPgorICAgICAgPHJkZjpTZXE+CisgICAg
ICAgIDxyZGY6bGkgcmVzb3VyY2U9Imh0dHA6Ly94bWwuY29tL3B1Yi8yMDAwLzA4LzA5L3hzbHQv
eHNsdC5odG1sIiAvPgorICAgICAgICA8cmRmOmxpIHJlc291cmNlPSJodHRwOi8veG1sLmNvbS9w
dWIvMjAwMC8wOC8wOS9yZGZkYi9pbmRleC5odG1sIiAvPgorICAgICAgPC9yZGY6U2VxPgorICAg
IDwvaXRlbXM+CisKKyAgPC9jaGFubmVsPgorCisgIDxpbWFnZSByZGY6YWJvdXQ9Imh0dHA6Ly94
bWwuY29tL3VuaXZlcnNhbC9pbWFnZXMveG1sX3RpbnkuZ2lmIj4KKyAgICA8dGl0bGU+WE1MLmNv
bTwvdGl0bGU+CisgICAgPGxpbms+aHR0cDovL3d3dy54bWwuY29tPC9saW5rPgorICAgIDx1cmw+
aHR0cDovL3htbC5jb20vdW5pdmVyc2FsL2ltYWdlcy94bWxfdGlueS5naWY8L3VybD4KKyAgPC9p
bWFnZT4KKworICA8aXRlbSByZGY6YWJvdXQ9Imh0dHA6Ly94bWwuY29tL3B1Yi8yMDAwLzA4LzA5
L3hzbHQveHNsdC5odG1sIj4KKyAgICA8dGl0bGU+UHJvY2Vzc2luZyBJbmNsdXNpb25zIHdpdGgg
WFNMVDwvdGl0bGU+CisgICAgPGxpbms+aHR0cDovL3htbC5jb20vcHViLzIwMDAvMDgvMDkveHNs
dC94c2x0Lmh0bWw8L2xpbms+CisgICAgPGRlc2NyaXB0aW9uPgorICAgICBQcm9jZXNzaW5nIGRv
Y3VtZW50IGluY2x1c2lvbnMgd2l0aCBnZW5lcmFsIFhNTCB0b29scyBjYW4gYmUKKyAgICAgcHJv
YmxlbWF0aWMuIFRoaXMgYXJ0aWNsZSBwcm9wb3NlcyBhIHdheSBvZiBwcmVzZXJ2aW5nIGluY2x1
c2lvbgorICAgICBpbmZvcm1hdGlvbiB0aHJvdWdoIFNBWC1iYXNlZCBwcm9jZXNzaW5nLgorICAg
IDwvZGVzY3JpcHRpb24+CisgIDwvaXRlbT4KKworICA8aXRlbSByZGY6YWJvdXQ9Imh0dHA6Ly94
bWwuY29tL3B1Yi8yMDAwLzA4LzA5L3JkZmRiL2luZGV4Lmh0bWwiPgorICAgIDx0aXRsZT5QdXR0
aW5nIFJERiB0byBXb3JrPC90aXRsZT4KKyAgICA8bGluaz5odHRwOi8veG1sLmNvbS9wdWIvMjAw
MC8wOC8wOS9yZGZkYi9pbmRleC5odG1sPC9saW5rPgorICAgIDxkZXNjcmlwdGlvbj4KKyAgICAg
VG9vbCBhbmQgQVBJIHN1cHBvcnQgZm9yIHRoZSBSZXNvdXJjZSBEZXNjcmlwdGlvbiBGcmFtZXdv
cmsKKyAgICAgaXMgc2xvd2x5IGNvbWluZyBvZiBhZ2UuIEVkZCBEdW1iaWxsIHRha2VzIGEgbG9v
ayBhdCBSREZEQiwKKyAgICAgb25lIG9mIHRoZSBtb3N0IGV4Y2l0aW5nIG5ldyBSREYgdG9vbGtp
dHMuCisgICAgPC9kZXNjcmlwdGlvbj4KKyAgPC9pdGVtPgorCis8L3JkZjpSREY+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGlj
YXRpb25fcnNzK3htbCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291
cmNlcy9hcHBsaWNhdGlvbl9yc3MreG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjM1MzdjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01J
TUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25fcnNzK3htbApAQCAtMCwwICsxLDQ1IEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/PgorPHJzcyB2ZXJz
aW9uPSIwLjkxIj4KKzxjaGFubmVsPgorCis8dGl0bGU+Rm9saGEuY29tIC0gQW1iaWVudGUgLSBQ
cmluY2lwYWw8L3RpdGxlPgorPGxpbms+aHR0cDovL3JlZGlyLmZvbGhhLmNvbS5ici9yZWRpci9v
bmxpbmUvYW1iaWVudGUvcnNzMDkxLypodHRwOi8vd3d3MS5mb2xoYS51b2wuY29tLmJyL2FtYmll
bnRlLzwvbGluaz4KKzxkZXNjcmlwdGlvbj5QcmltZWlybyBqb3JuYWwgZW0gdGVtcG8gcmVhbCBl
bSBs7W5ndWEgcG9ydHVndWVzYTwvZGVzY3JpcHRpb24+Cis8bGFuZ3VhZ2U+cHQtYnI8L2xhbmd1
YWdlPgorPGNvcHlyaWdodD5Db3B5cmlnaHQgRm9saGEuY29tLiBUb2RvcyBvcyBkaXJlaXRvcyBy
ZXNlcnZhZG9zLjwvY29weXJpZ2h0PgorPGRvY3M+aHR0cDovL3JlZGlyLmZvbGhhLmNvbS5ici9y
ZWRpci9vbmxpbmUvYW1iaWVudGUvcnNzMDkxLypodHRwOi8vd3d3MS5mb2xoYS51b2wuY29tLmJy
L2ZvbGhhL2NvbmhlY2EvYXJxdWl2b19lX2NvcHlyaWdodC5zaHRtbDwvZG9jcz4KKzx3ZWJNYXN0
ZXI+d2VibWFzdGVyQGdydXBvZm9saGEuY29tLmJyIChXZWJtYXN0ZXIgRm9saGEuY29tKTwvd2Vi
TWFzdGVyPgorCis8aW1hZ2U+Cis8dGl0bGU+Rm9saGEuY29tIC0gQW1iaWVudGUgLSBQcmluY2lw
YWw8L3RpdGxlPgorPHVybD5odHRwOi8vd3d3MS5mb2xoYS51b2wuY29tLmJyL2ZvbGhhL2ltYWdl
cy9sZ28tZm9saGFfY29tLTg4eDMxLmdpZjwvdXJsPgorPGxpbms+aHR0cDovL3JlZGlyLmZvbGhh
LmNvbS5ici9yZWRpci9vbmxpbmUvYW1iaWVudGUvcnNzMDkxLypodHRwOi8vd3d3MS5mb2xoYS51
b2wuY29tLmJyL2FtYmllbnRlLzwvbGluaz4KKzx3aWR0aD44ODwvd2lkdGg+Cis8aGVpZ2h0PjMx
PC9oZWlnaHQ+Cis8ZGVzY3JpcHRpb24+UHJpbWVpcm8gam9ybmFsIGVtIHRlbXBvIHJlYWwgZW0g
bO1uZ3VhIHBvcnR1Z3Vlc2E8L2Rlc2NyaXB0aW9uPgorPC9pbWFnZT4KKworPGl0ZW0+Cis8dGl0
bGU+TmFzYSBkaW1lbnNpb25hIGRhbm9zIGRhIHNlY2EgbmEgQW1hevRuaWEgZW0gMiw0IG1pIGRl
IGttMjwvdGl0bGU+Cis8bGluaz5odHRwOi8vcmVkaXIuZm9saGEuY29tLmJyL3JlZGlyL29ubGlu
ZS9hbWJpZW50ZS9yc3MwOTEvKmh0dHA6Ly93d3cxLmZvbGhhLnVvbC5jb20uYnIvYW1iaWVudGUv
ODk1NTI2LW5hc2EtZGltZW5zaW9uYS1kYW5vcy1kYS1zZWNhLW5hLWFtYXpvbmlhLWVtLTI0LW1p
LWRlLWttMi5zaHRtbDwvbGluaz4KKzxkZXNjcmlwdGlvbj4KK09zIHNhdOlsaXRlcyBkYSBOYXNh
IChhZ+puY2lhIGVzcGFjaWFsIGFtZXJpY2FuYSkgZm9ybmVjZXJhbSBtYXRlcmlhbCBwYXJhIHVt
YSBhbuFsaXNlIGRvcyBlc3RyYWdvcyBwcm92b2NhZG9zIHBlbGEgJmx0O2EgaHJlZj0mcXVvdDto
dHRwOi8vd3d3MS5mb2xoYS51b2wuY29tLmJyL2FtYmllbnRlLzg3MDU4OC1hbWF6b25pYS10ZXZl
LWEtcGlvci1zZWNhLWRvcy11bHRpbW9zLWNlbS1hbm9zLnNodG1sJnF1b3Q7Jmd0O3Bpb3Igc2Vj
YSBhIGF0aW5naXIgYSBBbWF69G5pYSBlbSAyMDEwJmx0Oy9hJmd0Oy4KK1BlbGEgdG9tYWRhIGHp
cmVhLCBlc3RpbWEtc2UgcXVlIGZvcmFtIDIsNSBtaWxo9WVzIGRlIHF1aWz0bWV0cm9zIHF1YWRy
YWRvcyBhZmV0YWRvcyAtLXBvdWNvIG1lbm9zIGRhIG1ldGFkZSBkbyBlY29zc2lzdGVtYSBhbWF6
9G5pY28uCismbHQ7dGFibGUgY2xhc3M9JnF1b3Q7YXJ0aWNsZUdyYXBoaWMmcXVvdDsmZ3Q7Cism
bHQ7dHImZ3Q7CismbHQ7dGQgcm93c3Bhbj0mcXVvdDszJnF1b3Q7IGNsYXNzPSZxdW90O2FydGlj
bGVHcmFwaGljU3BhY2UmcXVvdDsmZ3Q7Jmx0Oy90ZCZndDsKKyZsdDt0ZCBjbGFzcz0mcXVvdDth
cnRpY2xlR3JhcGhpY0NyZWRpdCZxdW90OyZndDtVbml2ZXJzaWRhZGUgZGUgQm9zdG9uL05hc2Em
bHQ7L3RkJmd0OworJmx0O3RkIHJvd3NwYW49JnF1b3Q7MyZxdW90OyBjbGFzcz0mcXVvdDthcnRp
Y2xlR3JhcGhpY1NwYWNlJnF1b3Q7Jmd0OyZsdDsvdGQmZ3Q7CismbHQ7L3RyJmd0OworJmx0O3Ry
Jmd0OworJmx0O3RkIGNsYXNzPSZxdW90O2FydGljbGVHcmFwaGljSW1hZ2UmcXVvdDsmZ3Q7Jmx0
O2ltZyBzcmM9JnF1b3Q7aHR0cDovL2YuaS51b2wuY29tLmJyL2ZvbGhhL2FtYmllbnRlL2ltYWdl
cy8xMTA5MDEyMC5qcGVnJnF1b3Q7IGFsdD0mcXVvdDvBcmVhICh2ZXJtZWxobykgbW9zdHJhIHJl
ZHXn428gZG8g7W5kaWNlIGRvIHZlcmRvciwgb25kZSBhIHZlZ2V0YefjbyBmaWNvdSBtZW5vcyB2
ZXJkZSBlIG1haXMgc2VjYSZxdW90OyBib3JkZXI9JnF1b3Q7MCZxdW90OyAvJmd0OyZsdDsvdGQm
Z3Q7CismbHQ7L3RyJmd0OworJmx0O3RyJmd0OworJmx0O3RkIGNsYXNzPSZxdW90O2FydGljbGVH
cmFwaGljQ2FwdGlvbiZxdW90OyZndDvBcmVhICh2ZXJtZWxobykgbW9zdHJhIHJlZHXn428gZG8g
7W5kaWNlIGRvIHZlcmRvciwgb25kZSBhIHZlZ2V0YefjbyBmaWNvdSBtZW5vcyB2ZXJkZSBlIG1h
aXMgc2VjYSZsdDsvdGQmZ3Q7CismbHQ7L3RyJmd0OworJmx0Oy90YWJsZSZndDsKKyZsdDthIGhy
ZWY9JnF1b3Q7aHR0cDovL3JlZGlyLmZvbGhhLmNvbS5ici9yZWRpci9vbmxpbmUvYW1iaWVudGUv
cnNzMDkxLypodHRwOi8vd3d3MS5mb2xoYS51b2wuY29tLmJyL2FtYmllbnRlLzg5NTUyNi1uYXNh
LWRpbWVuc2lvbmEtZGFub3MtZGEtc2VjYS1uYS1hbWF6b25pYS1lbS0yNC1taS1kZS1rbTIuc2h0
bWwmcXVvdDsmZ3Q7TGVpYSBtYWlzJmx0Oy9hJmd0OyAoMjkvMDMvMjAxMSAtIDE4aDA0KTwvZGVz
Y3JpcHRpb24+Cis8cHViRGF0ZT4yOSBNYXIgMjAxMSAxODowNDowMCAtMDMwMDwvcHViRGF0ZT4K
KzwvaXRlbT4KKzwvY2hhbm5lbD4KKzwvcnNzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2FwcGxpY2F0aW9uX3gtZ3ppcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl94LWd6
aXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlN2QzMQpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jl
c291cmNlcy9hcHBsaWNhdGlvbl94LWd6aXAgZGlmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25feC1yYXItY29t
cHJlc3NlZCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9h
cHBsaWNhdGlvbl94LXJhci1jb21wcmVzc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ5Y2I2YWUKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25feC1yYXItY29tcHJl
c3NlZCBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZm
aW5nL3Jlc291cmNlcy9hcHBsaWNhdGlvbl96aXAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01J
TUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25femlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjhhZWM1MmYKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvYXBwbGljYXRpb25femlw
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcv
cmVzb3VyY2VzL2F1ZGlvX3gtd2F2ZSBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZm
aW5nL3Jlc291cmNlcy9hdWRpb194LXdhdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYTBmOWI4NQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9hdWRpb194LXdhdmUgZGlmZmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvaW1h
Z2VfYm1wIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2lt
YWdlX2JtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjFkMzY4CkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZp
bmcvcmVzb3VyY2VzL2ltYWdlX2JtcCBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9pbWFnZV9naWYgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvaW1hZ2VfZ2lmCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYjFlYTIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQg
Yi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvaW1hZ2VfZ2lm
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcv
cmVzb3VyY2VzL2ltYWdlX2pwZWcgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmlu
Zy9yZXNvdXJjZXMvaW1hZ2VfanBlZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xODc0NTc2CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC90
ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2ltYWdlX2pwZWcgZGlmZmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvaW1hZ2VfcG5n
IGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2ltYWdlX3Bu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWY1OWM3CkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVz
b3VyY2VzL2ltYWdlX3BuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy9pbWFnZV92bmQubWljcm9zb2Z0Lmljb24gYi9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvaW1hZ2Vfdm5kLm1pY3Jv
c29mdC5pY29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4OTIxYjgKQmlu
YXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlm
ZmluZy9yZXNvdXJjZXMvaW1hZ2Vfdm5kLm1pY3Jvc29mdC5pY29uIGRpZmZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL2ltYWdlX3dl
YnAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvaW1hZ2Vf
d2VicApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGE5ODNlCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcv
cmVzb3VyY2VzL2ltYWdlX3dlYnAgZGlmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL01JTUVTbmlmZmluZy9yZXNvdXJjZXMvdGV4dF9odG1sIGIvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL3RleHRfaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4yMWVlZWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL3RleHRfaHRtbApAQCAtMCwwICsx
LDMgQEAKKworPCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNylodHRwOi8vMTI3LjAuMC4xLyAtLT4K
KzxIVE1MPjxIRUFEPjxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPjwvSEVBRD48Qk9EWT48SDE+SXQgd29ya3MhPC9I
MT48L0JPRFk+PC9IVE1MPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy90ZXh0X3htbCBi
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3Jlc291cmNlcy90ZXh0X3htbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGE5ZmU1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL3RleHRf
eG1sCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IklTTy04
ODU5LTEiPz4NCis8Q0FUQUxPRz4NCisJPENEPg0KKwkJPFRJVExFPkVtcGlyZSBCdXJsZXNxdWU8
L1RJVExFPg0KKwkJPEFSVElTVD5Cb2IgRHlsYW48L0FSVElTVD4NCisJCTxDT1VOVFJZPlVTQTwv
Q09VTlRSWT4NCisJCTxDT01QQU5ZPkNvbHVtYmlhPC9DT01QQU5ZPg0KKwkJPFBSSUNFPjEwLjkw
PC9QUklDRT4NCisJCTxZRUFSPjE5ODU8L1lFQVI+DQorCTwvQ0Q+DQorCTxDRD4NCisJCTxUSVRM
RT5VbmNoYWluIG15IGhlYXJ0PC9USVRMRT4NCisJCTxBUlRJU1Q+Sm9lIENvY2tlcjwvQVJUSVNU
Pg0KKwkJPENPVU5UUlk+VVNBPC9DT1VOVFJZPg0KKwkJPENPTVBBTlk+RU1JPC9DT01QQU5ZPg0K
KwkJPFBSSUNFPjguMjA8L1BSSUNFPg0KKwkJPFlFQVI+MTk4NzwvWUVBUj4NCisJPC9DRD4NCis8
L0NBVEFMT0c+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9NSU1FU25pZmZp
bmcvcmVzb3VyY2VzL3ZpZGVvX3dlYm0gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlm
ZmluZy9yZXNvdXJjZXMvdmlkZW9fd2VibQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45NWQ1MDMxCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9NSU1FU25pZmZpbmcvcmVzb3VyY2VzL3ZpZGVvX3dlYm0gZGlmZmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy90c3RfTUlNRVNuaWZmaW5n
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvTUlNRVNuaWZmaW5nL3RzdF9NSU1FU25pZmZp
bmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNTQxN2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL01JTUVTbmlmZmluZy90c3RfTUlN
RVNuaWZmaW5nLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAx
MSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTUlNRVNuaWZmaW5nLmgiCisKKyNpbmNsdWRlICJU
ZXN0RGF0YS5oIgorCisjaW5jbHVkZSA8UXRDb3JlL1FGaWxlPgorI2luY2x1ZGUgPFF0Q29yZS9R
U3RyaW5nPgorI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKK2NsYXNzIHRzdF9NSU1FU25pZmZp
bmcgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIHRzdF9N
SU1FU25pZmZpbmcoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgdGVzdENhc2UxKCk7
Cit9OworCit0c3RfTUlNRVNuaWZmaW5nOjp0c3RfTUlNRVNuaWZmaW5nKCkKK3sKK30KKworc3Rh
dGljIGlubGluZSBjb25zdCBjaGFyKiBlcnJvclRleHQoY29uc3QgVGVzdERhdGEmIGRhdGEsIGNv
bnN0IGNoYXIqIHNuaWZmZWRUeXBlKQoreworICAgIHJldHVybiBRU3RyaW5nKCJmaWxlOiAlMSwg
YWR2ZXJ0aXNlZDogJTIsIGltYWdlOiAlMy4gc25pZmZlZCBtaW1lIHR5cGUgd2FzIGV4cGVjdGVk
IHRvIGJlIFwiJTRcIiBidXQgaW5zdGVhZCB3YXMgXCIlNVwiIikuYXJnKGRhdGEuZmlsZSkuYXJn
KGRhdGEuYWR2ZXJ0aXNlZFR5cGUpLmFyZyhkYXRhLmlzSW1hZ2UpLmFyZyhkYXRhLnNuaWZmZWRU
eXBlKS5hcmcoc25pZmZlZFR5cGUpLnRvTGF0aW4xKCk7Cit9CisKK3ZvaWQgdHN0X01JTUVTbmlm
ZmluZzo6dGVzdENhc2UxKCkKK3sKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdExpc3RT
aXplOyArK2kpIHsKKyAgICAgICAgUUZpbGUgZmlsZSh0ZXN0TGlzdFtpXS5maWxlKTsKKyAgICAg
ICAgUVZFUklGWTIoZmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpLCBRU3RyaW5nKCJ1bmFi
bGUgdG8gb3BlbiBmaWxlICUxIikuYXJnKGZpbGUuZmlsZU5hbWUoKSkudG9MYXRpbjEoKSk7CisK
KyAgICAgICAgTUlNRVNuaWZmZXIgc25pZmZlcih0ZXN0TGlzdFtpXS5hZHZlcnRpc2VkVHlwZSwg
dGVzdExpc3RbaV0uaXNJbWFnZSk7CisgICAgICAgIFFCeXRlQXJyYXkgZGF0YSA9IGZpbGUucGVl
ayhzbmlmZmVyLmRhdGFTaXplKCkpOworCisgICAgICAgIGNvbnN0IGNoYXIqIHNuaWZmZWRUeXBl
ID0gc25pZmZlci5zbmlmZihkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLnNpemUoKSk7CisKKyAgICAg
ICAgUVZFUklGWTIoIShzbmlmZmVkVHlwZSB8fCB0ZXN0TGlzdFtpXS5zbmlmZmVkVHlwZSkgfHwg
KHNuaWZmZWRUeXBlICYmIHRlc3RMaXN0W2ldLnNuaWZmZWRUeXBlKSwgZXJyb3JUZXh0KHRlc3RM
aXN0W2ldLCBzbmlmZmVkVHlwZSkpOworCisgICAgICAgIGlmIChzbmlmZmVkVHlwZSkKKyAgICAg
ICAgICAgIFFWRVJJRlkyKCFzdHJjbXAoc25pZmZlZFR5cGUsIHRlc3RMaXN0W2ldLnNuaWZmZWRU
eXBlKSwgZXJyb3JUZXh0KHRlc3RMaXN0W2ldLCBzbmlmZmVkVHlwZSkpOworCisgICAgfQorCisg
ICAgUVZFUklGWTIodHJ1ZSwgIkZhaWx1cmUiKTsKK30KKworUVRFU1RfQVBQTEVTU19NQUlOKHRz
dF9NSU1FU25pZmZpbmcpOworCisjaW5jbHVkZSAidHN0X01JTUVTbmlmZmluZy5tb2MiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2JlbmNobWFya3MvbG9hZGluZy9sb2FkaW5n
LnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvYmVuY2htYXJrcy9sb2FkaW5nL2xvYWRpbmcu
cHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NzdhMjIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2JlbmNobWFya3MvbG9hZGluZy9sb2Fk
aW5nLnBybwpAQCAtMCwwICsxLDIgQEAKK2luY2x1ZGUoLi4vLi4vdGVzdHMucHJpKQorZXhpc3Rz
KCQke1RBUkdFVH0ucXJjKTpSRVNPVVJDRVMgKz0gJCR7VEFSR0VUfS5xcmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvYmVuY2htYXJrcy9sb2FkaW5nL3RzdF9sb2FkaW5nLmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvYmVuY2htYXJrcy9sb2FkaW5nL3RzdF9sb2FkaW5n
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWJmMzc3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL2xvYWRpbmcvdHN0
X2xvYWRpbmcuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBRVF9OT19CRUFSRVJNQU5BR0VNRU5U
CisjaW5jbHVkZSA8UU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlcj4KKyNlbmRpZgorCisjaW5j
bHVkZSA8UXRUZXN0L1F0VGVzdD4KKworI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorI2luY2x1ZGUg
PHF3ZWJ2aWV3Lmg+CisjaW5jbHVkZSA8cXBhaW50ZXIuaD4KKworI2luY2x1ZGUgInV0aWwuaCIK
KworY2xhc3MgdHN0X0xvYWRpbmcgOiBwdWJsaWMgUU9iamVjdAoreworICAgIFFfT0JKRUNUCisK
K3B1YmxpYzoKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBj
bGVhbnVwKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIGxvYWRfZGF0YSgpOworICAg
IHZvaWQgbG9hZCgpOworCitwcml2YXRlOgorI2lmbmRlZiBRVF9OT19CRUFSRVJNQU5BR0VNRU5U
CisgICAgUU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlciBtX21hbmFnZXI7CisjZW5kaWYKKyAg
ICBRV2ViVmlldyogbV92aWV3OworICAgIFFXZWJQYWdlKiBtX3BhZ2U7Cit9OworCit2b2lkIHRz
dF9Mb2FkaW5nOjppbml0KCkKK3sKKyAgICBtX3ZpZXcgPSBuZXcgUVdlYlZpZXc7CisgICAgbV9w
YWdlID0gbV92aWV3LT5wYWdlKCk7CisKKyAgICBRU2l6ZSB2aWV3cG9ydFNpemUoMTAyNCwgNzY4
KTsKKyAgICBtX3ZpZXctPnNldEZpeGVkU2l6ZSh2aWV3cG9ydFNpemUpOworICAgIG1fcGFnZS0+
c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Cit9CisKK3ZvaWQgdHN0X0xvYWRpbmc6OmNs
ZWFudXAoKQoreworICAgIGRlbGV0ZSBtX3ZpZXc7Cit9CisKK3ZvaWQgdHN0X0xvYWRpbmc6Omxv
YWRfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRVXJsPigidXJsIik7CisgICAgUVRl
c3Q6Om5ld1JvdygiYW1hem9uIikgPDwgUVVybCgiaHR0cDovL3d3dy5hbWF6b24uY29tIik7Cisg
ICAgUVRlc3Q6Om5ld1Jvdygia2RlIikgPDwgUVVybCgiaHR0cDovL3d3dy5rZGUub3JnIik7Cisg
ICAgUVRlc3Q6Om5ld1JvdygiYXBwbGUiKSA8PCBRVXJsKCJodHRwOi8vd3d3LmFwcGxlLmNvbSIp
OworfQorCit2b2lkIHRzdF9Mb2FkaW5nOjpsb2FkKCkKK3sKKyAgICBRRkVUQ0goUVVybCwgdXJs
KTsKKworI2lmbmRlZiBRVF9OT19CRUFSRVJNQU5BR0VNRU5UCisgICAgaWYgKCFtX21hbmFnZXIu
aXNPbmxpbmUoKSkKKyAgICAgICAgV19RU0tJUCgiVGhpcyB0ZXN0IHJlcXVpcmVzIGFuIGFjdGl2
ZSBuZXR3b3JrIGNvbm5lY3Rpb24iLCBTa2lwU2luZ2xlKTsKKyNlbmRpZgorCisgICAgUUJFTkNI
TUFSSyB7CisgICAgICAgIG1fdmlldy0+bG9hZCh1cmwpOworCisgICAgICAgIC8vIHJlYWxseSB3
YWl0IGZvciBsb2FkaW5nLCBwYWludGluZyBpcyBpbiBhbm90aGVyIHRlc3QKKyAgICAgICAgOjp3
YWl0Rm9yU2lnbmFsKG1fdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSksIDApOworICAg
IH0KK30KKworUVRFU1RfTUFJTih0c3RfTG9hZGluZykKKyNpbmNsdWRlICJ0c3RfbG9hZGluZy5t
b2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2JlbmNobWFya3MvcGFpbnRp
bmcvcGFpbnRpbmcucHJvIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3BhaW50
aW5nL3BhaW50aW5nLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjc3
YTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtz
L3BhaW50aW5nL3BhaW50aW5nLnBybwpAQCAtMCwwICsxLDIgQEAKK2luY2x1ZGUoLi4vLi4vdGVz
dHMucHJpKQorZXhpc3RzKCQke1RBUkdFVH0ucXJjKTpSRVNPVVJDRVMgKz0gJCR7VEFSR0VUfS5x
cmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvYmVuY2htYXJrcy9wYWludGlu
Zy90c3RfcGFpbnRpbmcuY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3Bh
aW50aW5nL3RzdF9wYWludGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOGFiYmE0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvYmVu
Y2htYXJrcy9wYWludGluZy90c3RfcGFpbnRpbmcuY3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYg
UVRfTk9fQkVBUkVSTUFOQUdFTUVOVAorI2luY2x1ZGUgPFFOZXR3b3JrQ29uZmlndXJhdGlvbk1h
bmFnZXI+CisjZW5kaWYKKworI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKKyNpbmNsdWRlIDxx
d2ViZWxlbWVudC5oPgorI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorI2luY2x1ZGUgPHF3ZWJ2aWV3
Lmg+CisjaW5jbHVkZSA8cXBhaW50ZXIuaD4KKworI2luY2x1ZGUgInV0aWwuaCIKKworY2xhc3Mg
dHN0X1BhaW50aW5nIDogcHVibGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorCitwdWJsaWM6
CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgY2xlYW51cCgp
OworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBwYWludF9kYXRhKCk7CisgICAgdm9pZCBw
YWludCgpOworICAgIHZvaWQgdGV4dEFyZWFzKCk7CisKK3ByaXZhdGU6CisjaWZuZGVmIFFUX05P
X0JFQVJFUk1BTkFHRU1FTlQKKyAgICBRTmV0d29ya0NvbmZpZ3VyYXRpb25NYW5hZ2VyIG1fbWFu
YWdlcjsKKyNlbmRpZgorICAgIFFXZWJWaWV3KiBtX3ZpZXc7CisgICAgUVdlYlBhZ2UqIG1fcGFn
ZTsKK307CisKK3ZvaWQgdHN0X1BhaW50aW5nOjppbml0KCkKK3sKKyAgICBtX3ZpZXcgPSBuZXcg
UVdlYlZpZXc7CisgICAgbV9wYWdlID0gbV92aWV3LT5wYWdlKCk7CisKKyAgICBRU2l6ZSB2aWV3
cG9ydFNpemUoMTAyNCwgNzY4KTsKKyAgICBtX3ZpZXctPnNldEZpeGVkU2l6ZSh2aWV3cG9ydFNp
emUpOworICAgIG1fcGFnZS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Cit9CisKK3Zv
aWQgdHN0X1BhaW50aW5nOjpjbGVhbnVwKCkKK3sKKyAgICBkZWxldGUgbV92aWV3OworfQorCit2
b2lkIHRzdF9QYWludGluZzo6cGFpbnRfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxR
VXJsPigidXJsIik7CisgICAgUVRlc3Q6Om5ld1JvdygiYW1hem9uIikgPDwgUVVybCgiaHR0cDov
L3d3dy5hbWF6b24uY29tIik7Cit9CisKK3ZvaWQgdHN0X1BhaW50aW5nOjpwYWludCgpCit7Cisg
ICAgUUZFVENIKFFVcmwsIHVybCk7CisKKyNpZm5kZWYgUVRfTk9fQkVBUkVSTUFOQUdFTUVOVAor
ICAgIGlmICghbV9tYW5hZ2VyLmlzT25saW5lKCkpCisgICAgICAgIFdfUVNLSVAoIlRoaXMgdGVz
dCByZXF1aXJlcyBhbiBhY3RpdmUgbmV0d29yayBjb25uZWN0aW9uIiwgU2tpcFNpbmdsZSk7Cisj
ZW5kaWYKKworICAgIG1fdmlldy0+bG9hZCh1cmwpOworICAgIDo6d2FpdEZvclNpZ25hbChtX3Zp
ZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAwKTsKKworICAgIC8qIGZvcmNlIGEgbGF5
b3V0ICovCisgICAgUVdlYkZyYW1lKiBtYWluRnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwor
ICAgIG1haW5GcmFtZS0+dG9QbGFpblRleHQoKTsKKworICAgIFFQaXhtYXAgcGl4bWFwKG1fcGFn
ZS0+dmlld3BvcnRTaXplKCkpOworICAgIFFCRU5DSE1BUksgeworICAgICAgICBRUGFpbnRlciBw
YWludGVyKCZwaXhtYXApOworICAgICAgICBtYWluRnJhbWUtPnJlbmRlcigmcGFpbnRlciwgUVJl
Y3QoUVBvaW50KDAsIDApLCBtX3BhZ2UtPnZpZXdwb3J0U2l6ZSgpKSk7CisgICAgICAgIHBhaW50
ZXIuZW5kKCk7CisgICAgfQorfQorCit2b2lkIHRzdF9QYWludGluZzo6dGV4dEFyZWFzKCkKK3sK
KyAgICBtX3ZpZXctPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWw7PGh0bWw+PGJvZHk+PC9ib2R5
PjwvaHRtbD4iKSk7CisgICAgOjp3YWl0Rm9yU2lnbmFsKG1fdmlldywgU0lHTkFMKGxvYWRGaW5p
c2hlZChib29sKSksIDApOworCisgICAgUVdlYkVsZW1lbnQgYm9keUVsZW1lbnQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5maW5kRmlyc3RFbGVtZW50KCJib2R5Iik7CisKKyAgICBpbnQgY291bnQg
PSAxMDA7CisgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgUVN0cmluZyBtYXJrdXAoIjx0
ZXh0YXJlYSBjb2xzPScxJyByb3dzPScxJz48L3RleHRhcmVhPiIpOworICAgICAgICBib2R5RWxl
bWVudC5hcHBlbmRJbnNpZGUobWFya3VwKTsKKyAgICB9CisKKyAgICAvKiBmb3JjZSBhIGxheW91
dCAqLworICAgIFFXZWJGcmFtZSogbWFpbkZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKKyAg
ICBtYWluRnJhbWUtPnRvUGxhaW5UZXh0KCk7CisKKyAgICBRUGl4bWFwIHBpeG1hcChtYWluRnJh
bWUtPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICBRQkVOQ0hNQVJLIHsKKyAgICAgICAgUVBhaW50ZXIg
cGFpbnRlcigmcGl4bWFwKTsKKyAgICAgICAgbWFpbkZyYW1lLT5yZW5kZXIoJnBhaW50ZXIsIFFS
ZWN0KFFQb2ludCgwLCAwKSwgbWFpbkZyYW1lLT5jb250ZW50c1NpemUoKSkpOworICAgICAgICBw
YWludGVyLmVuZCgpOworICAgIH0KK30KKworUVRFU1RfTUFJTih0c3RfUGFpbnRpbmcpCisjaW5j
bHVkZSAidHN0X3BhaW50aW5nLm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvYmVuY2htYXJrcy93ZWJnbC8xMDAwMF90cmlhbmdsZXMuaHRtbCBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvYmVuY2htYXJrcy93ZWJnbC8xMDAwMF90cmlhbmdsZXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDA2MWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmdsLzEwMDAwX3RyaWFuZ2xlcy5odG1s
CkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorICA8Ym9keSBzdHlsZT0ibWFyZ2luOiAwIj4KKyAg
ICA8Y2FudmFzIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjEwMDAiPjwvY2FudmFzPgorICA8L2JvZHk+
Cis8L2h0bWw+Cis8c2NyaXB0PgorICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiY2FudmFzIilbMF07CisgICAgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgiZXhw
ZXJpbWVudGFsLXdlYmdsIik7CisgICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjAp
OworICAgIGdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisK
KyAgICB2YXIgdmVydGV4U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIp
OworICAgIGdsLnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsICJhdHRyaWJ1dGUgdmVjNCB2UG9z
aXRpb247XG52b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOyB9Iik7CisgICAg
Z2wuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOworCisgICAgdmFyIGZyYWdtZW50U2hhZGVy
ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291
cmNlKGZyYWdtZW50U2hhZGVyLCAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEu
MCwgMC4wLCAwLjAsIDEuMCk7IH0iKTsKKyAgICBnbC5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hh
ZGVyKTsKKworICAgIHZhciBzaGFkZXJQcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAg
IGdsLmF0dGFjaFNoYWRlcihzaGFkZXJQcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgIGdsLmF0
dGFjaFNoYWRlcihzaGFkZXJQcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgZ2wuYmluZEF0
dHJpYkxvY2F0aW9uKHNoYWRlclByb2dyYW0sIDAsICJ2UG9zaXRpb24iKTsKKyAgICBnbC5saW5r
UHJvZ3JhbShzaGFkZXJQcm9ncmFtKTsKKworICAgIGdsLnVzZVByb2dyYW0oc2hhZGVyUHJvZ3Jh
bSk7CisKKyAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKKyAgICB2YXIgdmVydGljZXMgPSBbXTsK
KyAgICB2YXIgc2VlZFggPSAtMS4wOworICAgIHZhciBzZWVkWSA9IDEuMDsKKyAgICBmb3IgKHZh
ciBpID0gMTsgaSA8PSAxMDAwMDsgKytpKSB7CisgICAgICAgIHZlcnRpY2VzLnB1c2goc2VlZFgp
OworICAgICAgICB2ZXJ0aWNlcy5wdXNoKHNlZWRZKTsKKyAgICAgICAgdmVydGljZXMucHVzaCgw
KTsKKyAgICAgICAgc2VlZFggKz0gMC4wMTsKKyAgICAgICAgdmVydGljZXMucHVzaChzZWVkWCk7
CisgICAgICAgIHZlcnRpY2VzLnB1c2goc2VlZFkgLSAwLjAyKTsKKyAgICAgICAgdmVydGljZXMu
cHVzaCgwKTsKKyAgICAgICAgc2VlZFggKz0gMC4wMTsKKyAgICAgICAgdmVydGljZXMucHVzaChz
ZWVkWCk7CisgICAgICAgIHZlcnRpY2VzLnB1c2goc2VlZFkpOworICAgICAgICB2ZXJ0aWNlcy5w
dXNoKDApOworICAgICAgICBpZiAoIShpICUgMTAwKSkgeworICAgICAgICAgICAgc2VlZFggPSAt
MS4wOworICAgICAgICAgICAgc2VlZFkgLT0gMC4wMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNlcyks
IGdsLlNUQVRJQ19EUkFXKTsKKworCisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBn
bC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDAp
OworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJheXMo
Z2wuVFJJQU5HTEVTLCAwLCAzMDAwMCk7CisgICAgZ2wuZmx1c2goKTsKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmdsL3RzdF93ZWJn
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2JlbmNobWFya3Mvd2ViZ2wvdHN0X3dlYmds
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGZmMWE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmdsL3RzdF93
ZWJnbC5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKworI2luY2x1
ZGUgIi4uLy4uL3V0aWwuaCIKKyNpbmNsdWRlIDxRR0xXaWRnZXQ+CisjaW5jbHVkZSA8UUdyYXBo
aWNzVmlldz4KKyNpbmNsdWRlIDxRR3JhcGhpY3NXZWJWaWV3PgorI2luY2x1ZGUgPFFTY29wZWRQ
b2ludGVyPgorI2luY2x1ZGUgPFFXZWJGcmFtZT4KKyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0Pgor
CitjbGFzcyBHcmFwaGljc1ZpZXc7CisKK2NsYXNzIHRzdF9XZWJHbFBlcmZvcm1hbmNlIDogcHVi
bGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lk
IGluaXQoKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKKworICAgIHZvaWQgYmVuY2hTb2Z0d2FyZUZh
bGxiYWNrUmdiMTYoKTsKKyAgICB2b2lkIGJlbmNoU29mdHdhcmVGYWxsYmFja1JnYjMyKCk7Cisg
ICAgdm9pZCBiZW5jaFNvZnR3YXJlRmFsbGJhY2tBcmdiMzIoKTsKKyAgICB2b2lkIGJlbmNoU29m
dHdhcmVGYWxsYmFja0FyZ2IzMlByZW11bHRpcGxpZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lk
IGJlbmNobWFya0ZyYW1lUmVuZGVyaW5nT25JbWFnZShRSW1hZ2U6OkZvcm1hdCk7CisKKyAgICBR
U2NvcGVkUG9pbnRlcjxHcmFwaGljc1ZpZXc+IG1fdmlldzsKK307CisKK2NsYXNzIEdyYXBoaWNz
VmlldyA6IHB1YmxpYyBRR3JhcGhpY3NWaWV3IHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc1ZpZXco
KTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiBtX3dlYlZpZXc7CisKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCopOworfTsKKworR3JhcGhpY3NWaWV3OjpHcmFw
aGljc1ZpZXcoKQoreworICAgIFFHcmFwaGljc1NjZW5lKiBjb25zdCBzY2VuZSA9IG5ldyBRR3Jh
cGhpY3NTY2VuZSh0aGlzKTsKKyAgICBzZXRTY2VuZShzY2VuZSk7CisKKyAgICBtX3dlYlZpZXcg
PSBuZXcgUUdyYXBoaWNzV2ViVmlldzsKKyAgICBzY2VuZS0+YWRkSXRlbShtX3dlYlZpZXcpOwor
CisgICAgbV93ZWJWaWV3LT5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OldlYkdMRW5hYmxlZCwgdHJ1ZSk7CisKKyAgICByZXNpemUoODAwLCA2MDApOworICAg
IHNldEZyYW1lU2hhcGUoUUZyYW1lOjpOb0ZyYW1lKTsKKyAgICBzZXRWaWV3cG9ydChuZXcgUUdM
V2lkZ2V0KTsKK30KKwordm9pZCBHcmFwaGljc1ZpZXc6OnJlc2l6ZUV2ZW50KFFSZXNpemVFdmVu
dCogZXZlbnQpCit7CisgICAgUUdyYXBoaWNzVmlldzo6cmVzaXplRXZlbnQoZXZlbnQpOworICAg
IFFSZWN0RiByZWN0KFFQb2ludCgwLCAwKSwgZXZlbnQtPnNpemUoKSk7CisgICAgbV93ZWJWaWV3
LT5zZXRHZW9tZXRyeShyZWN0KTsKKyAgICBzY2VuZSgpLT5zZXRTY2VuZVJlY3QocmVjdCk7Cit9
CisKK3ZvaWQgdHN0X1dlYkdsUGVyZm9ybWFuY2U6OmluaXQoKQoreworICAgIG1fdmlldy5yZXNl
dChuZXcgR3JhcGhpY3NWaWV3KTsKKyAgICBtX3ZpZXctPnNob3dNYXhpbWl6ZWQoKTsKKyAgICBR
VGVzdDo6cVdhaXRGb3JXaW5kb3dTaG93bihtX3ZpZXcuZGF0YSgpKTsKK30KKwordm9pZCB0c3Rf
V2ViR2xQZXJmb3JtYW5jZTo6Y2xlYW51cCgpCit7CisgICAgbV92aWV3LnJlc2V0KCk7Cit9CisK
K3ZvaWQgdHN0X1dlYkdsUGVyZm9ybWFuY2U6OmJlbmNoU29mdHdhcmVGYWxsYmFja1JnYjE2KCkK
K3sKKyAgICBiZW5jaG1hcmtGcmFtZVJlbmRlcmluZ09uSW1hZ2UoUUltYWdlOjpGb3JtYXRfUkdC
MTYpOworfQorCit2b2lkIHRzdF9XZWJHbFBlcmZvcm1hbmNlOjpiZW5jaFNvZnR3YXJlRmFsbGJh
Y2tSZ2IzMigpCit7CisgICAgYmVuY2htYXJrRnJhbWVSZW5kZXJpbmdPbkltYWdlKFFJbWFnZTo6
Rm9ybWF0X1JHQjMyKTsKK30KKwordm9pZCB0c3RfV2ViR2xQZXJmb3JtYW5jZTo6YmVuY2hTb2Z0
d2FyZUZhbGxiYWNrQXJnYjMyKCkKK3sKKyAgICBiZW5jaG1hcmtGcmFtZVJlbmRlcmluZ09uSW1h
Z2UoUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKK30KKwordm9pZCB0c3RfV2ViR2xQZXJmb3JtYW5j
ZTo6YmVuY2hTb2Z0d2FyZUZhbGxiYWNrQXJnYjMyUHJlbXVsdGlwbGllZCgpCit7CisgICAgYmVu
Y2htYXJrRnJhbWVSZW5kZXJpbmdPbkltYWdlKFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0
aXBsaWVkKTsKK30KKwordm9pZCB0c3RfV2ViR2xQZXJmb3JtYW5jZTo6YmVuY2htYXJrRnJhbWVS
ZW5kZXJpbmdPbkltYWdlKFFJbWFnZTo6Rm9ybWF0IGZvcm1hdCkKK3sKKyAgICBtX3ZpZXctPm1f
d2ViVmlldy0+bG9hZChRVXJsKFFMYXRpbjFTdHJpbmcoInFyYzovLy90ZXN0Y2FzZXMvMTAwMDBf
dHJpYW5nbGVzLmh0bWwiKSkpOworICAgIGNvbnN0IGJvb2wgcGFnZUxvYWRlZCA9IHdhaXRGb3JT
aWduYWwobV92aWV3LT5tX3dlYlZpZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAg
ICBRX0FTU0VSVChwYWdlTG9hZGVkKTsKKyAgICBRX1VOVVNFRChwYWdlTG9hZGVkKTsKKworICAg
IFFJbWFnZSB0YXJnZXQobV92aWV3LT5zaXplKCksIGZvcm1hdCk7CisgICAgUUJFTkNITUFSSyB7
CisgICAgICAgIFFQYWludGVyIHBhaW50ZXIoJnRhcmdldCk7CisgICAgICAgIG1fdmlldy0+cmVu
ZGVyKCZwYWludGVyKTsKKyAgICAgICAgcGFpbnRlci5lbmQoKTsKKyAgICB9Cit9CisKK1FURVNU
X01BSU4odHN0X1dlYkdsUGVyZm9ybWFuY2UpCisKKyNpbmNsdWRlICJ0c3Rfd2ViZ2wubW9jIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmdsL3RzdF93
ZWJnbC5xcmMgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2JlbmNobWFya3Mvd2ViZ2wvdHN0X3dl
YmdsLnFyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODQ5NDQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3dlYmdsL3Rz
dF93ZWJnbC5xcmMKQEAgLTAsMCArMSw1IEBACis8UkNDPgorICAgIDxxcmVzb3VyY2UgcHJlZml4
PSIvdGVzdGNhc2VzIj4KKyAgICAgICAgPGZpbGU+MTAwMDBfdHJpYW5nbGVzLmh0bWw8L2ZpbGU+
CisgICAgPC9xcmVzb3VyY2U+Cis8L1JDQz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvYmVuY2htYXJrcy93ZWJnbC93ZWJnbC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L2JlbmNobWFya3Mvd2ViZ2wvd2ViZ2wucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmE0NzEyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L2JlbmNobWFya3Mvd2ViZ2wvd2ViZ2wucHJvCkBAIC0wLDAgKzEsMyBAQAoraW5jbHVkZSguLi8u
Li90ZXN0cy5wcmkpCitleGlzdHMoJCR7VEFSR0VUfS5xcmMpOlJFU09VUkNFUyArPSAkJHtUQVJH
RVR9LnFyYworUVQgKz0gb3BlbmdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L2NtYWtlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9jbWFrZS9DTWFr
ZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI2NmZjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9jbWFrZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDE3IEBACisKK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAy
LjgpCisKK3Byb2plY3QocW1ha2VfY21ha2VfZmlsZXMpCisKK2VuYWJsZV90ZXN0aW5nKCkKKwor
ZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisKK2luY2x1ZGUoIiR7X1F0NUNUZXN0TWFj
cm9zfSIpCisKK3NldChRdDVfTU9EVUxFX1RFU1RfREVQRU5EUyBXaWRnZXRzKQorCit0ZXN0X21v
ZHVsZV9pbmNsdWRlcygKKyAgV2ViS2l0IFFXZWJFbGVtZW50CisgIFdlYktpdFdpZGdldHMgUVdl
YlZpZXcKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvY21ha2UvY21ha2Uu
cHJvIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9jbWFrZS9jbWFrZS5wcm8KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyZGJjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvY21ha2UvY21ha2UucHJvCkBAIC0wLDAgKzEsNSBAQAorCisjIENh
dXNlIG1ha2UgdG8gZG8gbm90aGluZy4KK1RFTVBMQVRFID0gc3ViZGlycworCitDT05GSUcgKz0g
Y3Rlc3RfdGVzdGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvaHlicmlk
UGl4bWFwL2h5YnJpZFBpeG1hcC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBp
eG1hcC9oeWJyaWRQaXhtYXAucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjBlNDlhNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJp
ZFBpeG1hcC9oeWJyaWRQaXhtYXAucHJvCkBAIC0wLDAgKzEsMTAgQEAKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9qZWN0IGNyZWF0ZWQg
YnkgUXRDcmVhdG9yIDIwMDktMTItMTBUMTE6MjU6MDIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraW5jbHVkZSguLi90ZXN0cy5wcmkpCitUQVJH
RVQgPSBoeWJyaWRQaXhtYXAKK1NPVVJDRVMgKz0gd2lkZ2V0LmNwcAorSEVBREVSUyArPSB3aWRn
ZXQuaAorRk9STVMgKz0gd2lkZ2V0LnVpCitSRVNPVVJDRVMgKz0gcmVzb3VyY2VzLnFyYworQ09O
RklHICs9IGNvbnNvbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvaHlicmlk
UGl4bWFwL3Jlc291cmNlcy5xcmMgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1h
cC9yZXNvdXJjZXMucXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZDQ3
ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1h
cC9yZXNvdXJjZXMucXJjCkBAIC0wLDAgKzEsNSBAQAorPFJDQz4KKyAgICA8cXJlc291cmNlIHBy
ZWZpeD0iLyI+CisgICAgICAgIDxmaWxlPnRlc3QuaHRtbDwvZmlsZT4KKyAgICA8L3FyZXNvdXJj
ZT4KKzwvUkNDPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXht
YXAvdGVzdC5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvdGVzdC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2Y2JlZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1hcC90ZXN0Lmh0bWwK
QEAgLTAsMCArMSw5OSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIGltZyB7IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItc3R5bGU6IGdyb292ZX0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGZ1bmN0aW9uIHRl
c3RJbWFnZURhdGEoKSB7CisgICAgICAgICAgICAgICAgdmFyIG9iaiA9IG15V2lkZ2V0LmltYWdl
OworICAgICAgICAgICAgICAgIHZhciBweG0gPSBteVdpZGdldC5waXhtYXA7CisKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBjb21wYXJlSW1hZ2VEYXRhU2l6ZShvLCBpbWFnZURhdGEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29tcGFyZShpbWFnZURhdGEuaGVpZ2h0LCBvLmhl
aWdodCk7CisgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUoaW1hZ2VEYXRhLndp
ZHRoLCBvLndpZHRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29tcGFy
ZUltYWdlRGF0YVNpemUob2JqLCBvYmoudG9JbWFnZURhdGEoKSk7CisgICAgICAgICAgICAgICAg
Y29tcGFyZUltYWdlRGF0YVNpemUocHhtLCBweG0udG9JbWFnZURhdGEoKSk7CisKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiBjb21wYXJlSW1hZ2VEYXRhUGl4ZWwobywgaW1hZ2VEYXRhKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbXBhcmVJbWFnZURhdGFTaXplKG8sIGltYWdlRGF0YSk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBwaXhlbHMgYXJlIDB4QUFCQkNDRkYKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBpbWFnZURhdGEuZGF0YTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSA0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBteVdpZGdldC5jb21wYXJlKGRhdGFbaV0sIDB4YWEpOyAvLyBS
CisgICAgICAgICAgICAgICAgICAgICAgICBteVdpZGdldC5jb21wYXJlKGRhdGFbaSsxXSwgMHhi
Yik7IC8vIEcKKyAgICAgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUoZGF0YVtp
KzJdLCAweGNjKTsgLy8gQgorICAgICAgICAgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29tcGFy
ZShkYXRhW2krM10sIDB4ZmYpOyAvLyBBCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIG9iakFSR0IzMiA9IG15V2lkZ2V0LmFiY0lt
YWdlKDUpOworICAgICAgICAgICAgICAgIGNvbXBhcmVJbWFnZURhdGFQaXhlbChvYmpBUkdCMzIs
IG9iakFSR0IzMi50b0ltYWdlRGF0YSgpKTsKKyAgICAgICAgICAgICAgICB2YXIgb2JqUkdCMzIg
PSBteVdpZGdldC5hYmNJbWFnZSg0KTsKKyAgICAgICAgICAgICAgICBjb21wYXJlSW1hZ2VEYXRh
UGl4ZWwob2JqUkdCMzIsIG9ialJHQjMyLnRvSW1hZ2VEYXRhKCkpOworICAgICAgICAgICAgICAg
IHZhciBvYmpSR0I4ODggPSBteVdpZGdldC5hYmNJbWFnZSgxMyk7CisgICAgICAgICAgICAgICAg
Y29tcGFyZUltYWdlRGF0YVBpeGVsKG9ialJHQjg4OCwgb2JqUkdCODg4LnRvSW1hZ2VEYXRhKCkp
OworICAgICAgICAgICAgICAgIHZhciBvYmpSR0I0NDQgPSBteVdpZGdldC5hYmNJbWFnZSgxNCk7
CisgICAgICAgICAgICAgICAgY29tcGFyZUltYWdlRGF0YVBpeGVsKG9ialJHQjQ0NCwgb2JqUkdC
NDQ0LnRvSW1hZ2VEYXRhKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBzdGFydFRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RJbWFnZURh
dGEoKTsKKworICAgICAgICAgICAgICAgIHZhciBvYmogPSBteVdpZGdldC5pbWFnZTsKKyAgICAg
ICAgICAgICAgICB2YXIgcHhtID0gbXlXaWRnZXQucGl4bWFwOworCisgICAgICAgICAgICAgICAg
dmFyIGltZyA9IG5ldyBJbWFnZTsKKyAgICAgICAgICAgICAgICBvYmouYXNzaWduVG9IVE1MSW1h
Z2VFbGVtZW50KGltZyk7CisgICAgICAgICAgICAgICAgdmFyIGltZzEgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaW1nMSIpOworICAgICAgICAgICAgICAgIHZhciBpbWcyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImltZzIiKTsKKyAgICAgICAgICAgICAgICB2YXIgaW1nMyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbWczIik7CisgICAgICAgICAgICAgICAgdmFyIGltZzQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nNCIpOworICAgICAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsKKyAgICAgICAgICAgICAgICBvYmouYXNzaWduVG9IVE1M
SW1hZ2VFbGVtZW50KGltZzMpOworICAgICAgICAgICAgICAgIHB4bS5hc3NpZ25Ub0hUTUxJbWFn
ZUVsZW1lbnQoaW1nNCk7CisgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29tcGFyZShweG0ud2lk
dGgsIGltZzQud2lkdGgpOworICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBhcmUob2JqLndp
ZHRoLCBpbWczLndpZHRoKTsKKyAgICAgICAgICAgICAgICB2YXIgc2lnbmFsc0ZpcmVkID0gMDsK
KyAgICAgICAgICAgICAgICBteVdpZGdldC5jb21wYXJlKG9iai50b1N0cmluZygpLCJbUXQgTmF0
aXZlIFBpeG1hcCAiK29iai53aWR0aCsiLCIrb2JqLmhlaWdodCsiXSIpOworICAgICAgICAgICAg
ICAgIG15V2lkZ2V0LmNvbXBhcmUoU3RyaW5nKHB4bSksIltRdCBOYXRpdmUgUGl4bWFwICIrcHht
LndpZHRoKyIsIitweG0uaGVpZ2h0KyJdIik7CisKKyAgICAgICAgICAgICAgICAvLyB0aGlzIHNo
b3VsZG4ndCB3b3JrIGJ1dCBzaG91bGRuJ3QgY3Jhc2gKKyAgICAgICAgICAgICAgICBteVdpZGdl
dC5yYW5kb21TbG90KCJmb29iYXIiKTsKKworICAgICAgICAgICAgICAgIG15V2lkZ2V0LnBpeG1h
cFNpZ25hbC5jb25uZWN0KGZ1bmN0aW9uKGltZ0Zyb21TaWduYWwpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbXlXaWRnZXQuY29tcGFyZShpbWdGcm9tU2lnbmFsLmhlaWdodCwgaW1nMi5oZWlnaHQp
OworICAgICAgICAgICAgICAgICAgICBpZiAoKytzaWduYWxzRmlyZWQgPT0gMikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgbXlXaWRnZXQuaW1hZ2VTaWduYWwuY29ubmVjdChmdW5j
dGlvbihpbWdGcm9tU2lnbmFsKSB7CisgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBh
cmUocHhtLmhlaWdodCwgaW1nMi5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBpZiAoKytz
aWduYWxzRmlyZWQgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIG15V2lkZ2V0LmNvbXBs
ZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gY29udGludWVUZXN0QWZ0ZXJJbWFnZXNBcmVMb2FkZWQoKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGltZzEuY29tcGxldGUgJiYgaW1nMi5jb21wbGV0ZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbXlXaWRnZXQuY29tcGFyZShweG0uaGVpZ2h0LCBp
bWcyLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICBteVdpZGdldC5waXhtYXBTbG90
KGltZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBteVdpZGdldC5pbWFnZVNsb3QocHhtKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpbWcxLm9ubG9hZCA9IGNvbnRpbnVlVGVzdEFmdGVySW1hZ2VzQXJlTG9hZGVkOworICAgICAg
ICAgICAgICAgIGltZzIub25sb2FkID0gY29udGludWVUZXN0QWZ0ZXJJbWFnZXNBcmVMb2FkZWQ7
CisgICAgICAgICAgICAgICAgaW1nMS5zcmMgPSBvYmoudG9EYXRhVXJsKCk7CisgICAgICAgICAg
ICAgICAgaW1nMi5zcmMgPSBteVdpZGdldC5waXhtYXAudG9EYXRhVXJsKCk7CisgICAgICAgICAg
ICAgICAgbXlXaWRnZXQuaW1hZ2UgPSBweG07CisgICAgICAgICAgICAgICAgbXlXaWRnZXQucGl4
bWFwID0gaW1nOworICAgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+CisgICAgICAgIDxpbWcgaWQ9ImltZzEi
IC8+CisgICAgICAgIDxpbWcgaWQ9ImltZzIiIC8+CisgICAgICAgIDxpbWcgaWQ9ImltZzMiIC8+
CisgICAgICAgIDxpbWcgaWQ9ImltZzQiIC8+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvdHN0X2h5YnJpZFBpeG1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1hcC90c3RfaHlicmlkUGl4
bWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDg5MTU4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvdHN0X2h5
YnJpZFBpeG1hcC5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCisjaW5jbHVkZSAiLi4vdXRpbC5oIgorCisjaW5j
bHVkZSAid2lkZ2V0LmgiCisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKworY2xhc3MgdHN0X2h5
YnJpZFBpeG1hcCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorCitwdWJsaWM6Cisg
ICAgdHN0X2h5YnJpZFBpeG1hcChRT2JqZWN0KiBvID0gMCkgOiBRT2JqZWN0KG8pIHt9CisKK3B1
YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgaW5pdCgpCisgICAgeworICAgIH0KKworICAgIHZvaWQg
Y2xlYW51cCgpCisgICAgeworICAgIH0KKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgaHli
cmlkUGl4bWFwKCkKKyAgICB7CisgICAgICAgIFdpZGdldCB3aWRnZXQ7CisgICAgICAgIHdpZGdl
dC5zaG93KCk7CisgICAgICAgIHdpZGdldC5zdGFydCgpOworICAgICAgICB3YWl0Rm9yU2lnbmFs
KCZ3aWRnZXQsIFNJR05BTCh0ZXN0Q29tcGxldGUoKSkpOworICAgIH0KK307CisKK1FURVNUX01B
SU4odHN0X2h5YnJpZFBpeG1hcCkKKworI2luY2x1ZGUgPHRzdF9oeWJyaWRQaXhtYXAubW9jPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvd2lkZ2V0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM0ZDJjZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC5jcHAKQEAgLTAsMCAr
MSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisg
Ki8KKworI2luY2x1ZGUgIndpZGdldC5oIgorCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKyNp
bmNsdWRlICJxd2ViZnJhbWUuaCIKKyNpbmNsdWRlICJ1aV93aWRnZXQuaCIKKyNpbmNsdWRlIDxR
UGFpbnRlcj4KKyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0PgorCitXaWRnZXQ6OldpZGdldChRV2lk
Z2V0KiBwYXJlbnQpIDoKKyAgICBRV2lkZ2V0KHBhcmVudCksCisgICAgdWkobmV3IFVpOjpXaWRn
ZXQpLAorICAgIGFiY0ZpbGxlZEltYWdlKDMyLCAzMiwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKQor
eworICAgIHVpLT5zZXR1cFVpKHRoaXMpOworICAgIGFiY0ZpbGxlZEltYWdlLmZpbGwocVJnYmEo
MHhhYSwgMHhiYiwgMHhjYywgMHhmZikpOworfQorCit2b2lkIFdpZGdldDo6cmVmcmVzaEpTKCkK
K3sKKyAgICB1aS0+d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+YWRkVG9KYXZhU2NyaXB0
V2luZG93T2JqZWN0KCJteVdpZGdldCIsIHRoaXMpOworfQordm9pZCBXaWRnZXQ6OnN0YXJ0KCkK
K3sKKyAgICB1aS0+d2ViVmlldy0+bG9hZChRVXJsKCJxcmM6Ly8vdGVzdC5odG1sIikpOworICAg
IGNvbm5lY3QodWktPndlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCksIFNJR05BTChqYXZhU2Ny
aXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpKSwgdGhpcywgU0xPVChyZWZyZXNoSlMoKSkpOworICAg
IHVpLT53ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5hZGRUb0phdmFTY3JpcHRXaW5kb3dP
YmplY3QoIm15V2lkZ2V0IiwgdGhpcyk7Cit9CisKK3ZvaWQgV2lkZ2V0Ojpjb21wbGV0ZVRlc3Qo
KQoreworICAgIFFDT01QQVJFKHVpLT5sYmwxLT5waXhtYXAoKS0+c2l6ZSgpLCB1aS0+bGJsMi0+
c2l6ZSgpKTsKKyAgICBRQ09NUEFSRSh1aS0+bGJsMy0+c2l6ZSgpLCB1aS0+bGJsNC0+cGl4bWFw
KCktPnNpemUoKSk7CisgICAgUUNPTVBBUkUodWktPmxibDItPnNpemUoKS53aWR0aCgpLCB1aS0+
d2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZmluZEZpcnN0RWxlbWVudCgiI2ltZzEiKS5l
dmFsdWF0ZUphdmFTY3JpcHQoInRoaXMud2lkdGgiKS50b0ludCgpKTsKKyAgICBRQ09NUEFSRSh1
aS0+bGJsMy0+c2l6ZSgpLndpZHRoKCksIHVpLT53ZWJWaWV3LT5wYWdlKCktPm1haW5GcmFtZSgp
LT5maW5kRmlyc3RFbGVtZW50KCIjaW1nMiIpLmV2YWx1YXRlSmF2YVNjcmlwdCgidGhpcy53aWR0
aCIpLnRvSW50KCkpOworICAgIGVtaXQgdGVzdENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgV2lkZ2V0
OjpzZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYgcCkKK3sKKyAgICB1aS0+bGJsMS0+c2V0UGl4bWFw
KHApOworfQorUVBpeG1hcCBXaWRnZXQ6OnBpeG1hcCgpIGNvbnN0Cit7CisgICAgUVBpeG1hcCBw
eCh1aS0+bGJsMy0+c2l6ZSgpKTsKKyAgICB7CisgICAgICAgIFFQYWludGVyIHAoJnB4KTsKKyAg
ICAgICAgdWktPmxibDMtPnJlbmRlcigmcCk7CisgICAgfQorICAgIHJldHVybiBweDsKK30KK3Zv
aWQgV2lkZ2V0OjpzZXRJbWFnZShjb25zdCBRSW1hZ2UmIGltZykKK3sKKyAgICB1aS0+bGJsNC0+
c2V0UGl4bWFwKFFQaXhtYXA6OmZyb21JbWFnZShpbWcpKTsKK30KKworUUltYWdlIFdpZGdldDo6
aW1hZ2UoKSBjb25zdAoreworICAgIFFJbWFnZSBpbWcodWktPmxibDItPnNpemUoKSwgUUltYWdl
OjpGb3JtYXRfQVJHQjMyKTsKKyAgICB7CisgICAgICAgIFFQYWludGVyIHAoJmltZyk7CisgICAg
ICAgIHVpLT5sYmwyLT5yZW5kZXIoJnApOworICAgIH0KKyAgICByZXR1cm4gaW1nOworfQorCitR
SW1hZ2UgV2lkZ2V0OjphYmNJbWFnZShpbnQgZm9ybWF0KQoreworICAgIHJldHVybiBhYmNGaWxs
ZWRJbWFnZS5jb252ZXJ0VG9Gb3JtYXQoc3RhdGljX2Nhc3Q8UUltYWdlOjpGb3JtYXQ+KGZvcm1h
dCkpOworfQorCitXaWRnZXQ6On5XaWRnZXQoKQoreworICAgIGRlbGV0ZSB1aTsKK30KKwordm9p
ZCBXaWRnZXQ6OmNoYW5nZUV2ZW50KFFFdmVudCogZSkKK3sKKyAgICBRV2lkZ2V0OjpjaGFuZ2VF
dmVudChlKTsKKyAgICBzd2l0Y2ggKGUtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50OjpMYW5n
dWFnZUNoYW5nZToKKyAgICAgICAgdWktPnJldHJhbnNsYXRlVWkodGhpcyk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KK3ZvaWQgV2lkZ2V0
Ojpjb21wYXJlKGNvbnN0IFFWYXJpYW50JiBhLCBjb25zdCBRVmFyaWFudCYgYikKK3sKKyAgICBR
Q09NUEFSRShhLCBiKTsKK30KKwordm9pZCBXaWRnZXQ6OmltYWdlU2xvdChjb25zdCBRSW1hZ2Um
IGltZykKK3sKKyAgICBRQ09NUEFSRShpbWcuc2l6ZSgpLCB1aS0+bGJsMy0+c2l6ZSgpKTsKKyAg
ICBlbWl0IHBpeG1hcFNpZ25hbChRUGl4bWFwOjpmcm9tSW1hZ2UoaW1nKSk7Cit9CisKK3ZvaWQg
V2lkZ2V0OjpwaXhtYXBTbG90KGNvbnN0IFFQaXhtYXAmIHB4bSkKK3sKKyAgICBRQ09NUEFSRShw
eG0uc2l6ZSgpLCB1aS0+bGJsMi0+c2l6ZSgpKTsKKyAgICBlbWl0IGltYWdlU2lnbmFsKHVpLT5s
Ymw0LT5waXhtYXAoKS0+dG9JbWFnZSgpKTsKK30KKwordm9pZCBXaWRnZXQ6OnJhbmRvbVNsb3Qo
Y29uc3QgUVBpeG1hcCYgcHhtKQoreworICAgIFFWRVJJRlkocHhtLmlzTnVsbCgpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC5oIGIv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvd2lkZ2V0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc4ZGY4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvaHlicmlkUGl4bWFwL3dpZGdldC5oCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2lm
bmRlZiB3aWRnZXRfaAorI2RlZmluZSB3aWRnZXRfaAorCisjaW5jbHVkZSA8UUltYWdlPgorI2lu
Y2x1ZGUgPFFQaXhtYXA+CisjaW5jbHVkZSA8UVdpZGdldD4KKyNpbmNsdWRlICJxd2Vidmlldy5o
IgorCit0eXBlZGVmIFFXZWJWaWV3IFdlYlZpZXc7CisKK1FUX0JFR0lOX05BTUVTUEFDRQorbmFt
ZXNwYWNlIFVpIHsKK2NsYXNzIFdpZGdldDsKK30KK1FUX0VORF9OQU1FU1BBQ0UKKworY2xhc3Mg
V2lkZ2V0IDogcHVibGljIFFXaWRnZXQgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShR
UGl4bWFwIHBpeG1hcCBSRUFEIHBpeG1hcCBXUklURSBzZXRQaXhtYXApCisgICAgUV9QUk9QRVJU
WShRSW1hZ2UgaW1hZ2UgUkVBRCBpbWFnZSBXUklURSBzZXRJbWFnZSkKKworcHVibGljOgorICAg
IFdpZGdldChRV2lkZ2V0KiBwYXJlbnQgPSAwKTsKKyAgICB+V2lkZ2V0KCk7CisgICAgdm9pZCBz
ZXRQaXhtYXAoY29uc3QgUVBpeG1hcCYpOworICAgIFFQaXhtYXAgcGl4bWFwKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRJbWFnZShjb25zdCBRSW1hZ2UmKTsKKyAgICBRSW1hZ2UgaW1hZ2UoKSBjb25z
dDsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgcmVmcmVzaEpTKCk7CisKK3B1YmxpYyBR
X1NMT1RTOgorICAgIHZvaWQgY29tcGxldGVUZXN0KCk7CisgICAgdm9pZCBzdGFydCgpOworICAg
IHZvaWQgY29tcGFyZShjb25zdCBRVmFyaWFudCYgYSwgY29uc3QgUVZhcmlhbnQmIGIpOworICAg
IHZvaWQgaW1hZ2VTbG90KGNvbnN0IFFJbWFnZSYpOworICAgIHZvaWQgcGl4bWFwU2xvdChjb25z
dCBRUGl4bWFwJik7CisgICAgdm9pZCByYW5kb21TbG90KGNvbnN0IFFQaXhtYXAmKTsKKyAgICBR
SW1hZ2UgYWJjSW1hZ2UoaW50IGZvcm1hdCk7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIHRlc3RD
b21wbGV0ZSgpOworICAgIHZvaWQgaW1hZ2VTaWduYWwoY29uc3QgUUltYWdlJik7CisgICAgdm9p
ZCBwaXhtYXBTaWduYWwoY29uc3QgUVBpeG1hcCYpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBj
aGFuZ2VFdmVudChRRXZlbnQqIGUpOworCitwcml2YXRlOgorICAgIFVpOjpXaWRnZXQqIHVpOwor
ICAgIFFJbWFnZSBhYmNGaWxsZWRJbWFnZTsKK307CisKKyNlbmRpZiAvLyB3aWRnZXRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvd2lkZ2V0LnVpIGIv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9oeWJyaWRQaXhtYXAvd2lkZ2V0LnVpCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MmQ2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL2h5YnJpZFBpeG1hcC93aWRnZXQudWkKQEAgLTAsMCArMSw5NSBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx1aSB2ZXJzaW9uPSI0
LjAiPgorIDxjbGFzcz5XaWRnZXQ8L2NsYXNzPgorIDx3aWRnZXQgY2xhc3M9IlFXaWRnZXQiIG5h
bWU9IldpZGdldCI+CisgIDxwcm9wZXJ0eSBuYW1lPSJnZW9tZXRyeSI+CisgICA8cmVjdD4KKyAg
ICA8eD4wPC94PgorICAgIDx5PjA8L3k+CisgICAgPHdpZHRoPjYwMDwvd2lkdGg+CisgICAgPGhl
aWdodD40MDA8L2hlaWdodD4KKyAgIDwvcmVjdD4KKyAgPC9wcm9wZXJ0eT4KKyAgPHByb3BlcnR5
IG5hbWU9IndpbmRvd1RpdGxlIj4KKyAgIDxzdHJpbmcgbm90cj0idHJ1ZSI+V2lkZ2V0PC9zdHJp
bmc+CisgIDwvcHJvcGVydHk+CisgIDxsYXlvdXQgY2xhc3M9IlFWQm94TGF5b3V0IiBuYW1lPSJ2
ZXJ0aWNhbExheW91dCI+CisgICA8aXRlbT4KKyAgICA8d2lkZ2V0IGNsYXNzPSJXZWJWaWV3IiBu
YW1lPSJ3ZWJWaWV3IiBuYXRpdmU9InRydWUiPgorICAgICA8cHJvcGVydHkgbmFtZT0idXJsIiBz
dGRzZXQ9IjAiPgorICAgICAgPHVybD4KKyAgICAgICA8c3RyaW5nIG5vdHI9InRydWUiPmFib3V0
OmJsYW5rPC9zdHJpbmc+CisgICAgICA8L3VybD4KKyAgICAgPC9wcm9wZXJ0eT4KKyAgICA8L3dp
ZGdldD4KKyAgIDwvaXRlbT4KKyAgIDxpdGVtPgorICAgIDxsYXlvdXQgY2xhc3M9IlFIQm94TGF5
b3V0IiBuYW1lPSJob3Jpem9udGFsTGF5b3V0Ij4KKyAgICAgPGl0ZW0+CisgICAgICA8d2lkZ2V0
IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImxibDEiPgorICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0
Ij4KKyAgICAgICAgPHN0cmluZyBub3RyPSJ0cnVlIi8+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAg
ICAgIDwvd2lkZ2V0PgorICAgICA8L2l0ZW0+CisgICAgIDxpdGVtPgorICAgICAgPHdpZGdldCBj
bGFzcz0iUUxhYmVsIiBuYW1lPSJsYmwyIj4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ibWluaW11
bVNpemUiPgorICAgICAgICA8c2l6ZT4KKyAgICAgICAgIDx3aWR0aD4xMjA8L3dpZHRoPgorICAg
ICAgICAgPGhlaWdodD4zMDwvaGVpZ2h0PgorICAgICAgICA8L3NpemU+CisgICAgICAgPC9wcm9w
ZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ibWF4aW11bVNpemUiPgorICAgICAgICA8c2l6
ZT4KKyAgICAgICAgIDx3aWR0aD4xMjA8L3dpZHRoPgorICAgICAgICAgPGhlaWdodD4zMDwvaGVp
Z2h0PgorICAgICAgICA8L3NpemU+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8cHJvcGVy
dHkgbmFtZT0idGV4dCI+CisgICAgICAgIDxzdHJpbmcgbm90cj0idHJ1ZSI+SW1hZ2UgZnJvbSBR
dCB0byBIVE1MPC9zdHJpbmc+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgIDwvd2lkZ2V0Pgor
ICAgICA8L2l0ZW0+CisgICAgIDxpdGVtPgorICAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBu
YW1lPSJsYmwzIj4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CisgICAgICAgIDxzdHJp
bmcgbm90cj0idHJ1ZSI+UGl4bWFwIGZyb20gUXQgdG8gSFRNTDwvc3RyaW5nPgorICAgICAgIDwv
cHJvcGVydHk+CisgICAgICA8L3dpZGdldD4KKyAgICAgPC9pdGVtPgorICAgICA8aXRlbT4KKyAg
ICAgIDx3aWRnZXQgY2xhc3M9IlFMYWJlbCIgbmFtZT0ibGJsNCI+CisgICAgICAgPHByb3BlcnR5
IG5hbWU9InRleHQiPgorICAgICAgICA8c3RyaW5nIG5vdHI9InRydWUiLz4KKyAgICAgICA8L3By
b3BlcnR5PgorICAgICAgPC93aWRnZXQ+CisgICAgIDwvaXRlbT4KKyAgICAgPGl0ZW0+CisgICAg
ICA8c3BhY2VyIG5hbWU9Imhvcml6b250YWxTcGFjZXIiPgorICAgICAgIDxwcm9wZXJ0eSBuYW1l
PSJvcmllbnRhdGlvbiI+CisgICAgICAgIDxlbnVtPlF0OjpIb3Jpem9udGFsPC9lbnVtPgorICAg
ICAgIDwvcHJvcGVydHk+CisgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemVIaW50IiBzdGRzZXQ9
IjAiPgorICAgICAgICA8c2l6ZT4KKyAgICAgICAgIDx3aWR0aD40MDwvd2lkdGg+CisgICAgICAg
ICA8aGVpZ2h0PjIwPC9oZWlnaHQ+CisgICAgICAgIDwvc2l6ZT4KKyAgICAgICA8L3Byb3BlcnR5
PgorICAgICAgPC9zcGFjZXI+CisgICAgIDwvaXRlbT4KKyAgICA8L2xheW91dD4KKyAgIDwvaXRl
bT4KKyAgPC9sYXlvdXQ+CisgPC93aWRnZXQ+CisgPGxheW91dGRlZmF1bHQgc3BhY2luZz0iNiIg
bWFyZ2luPSIxMSIvPgorIDxjdXN0b213aWRnZXRzPgorICA8Y3VzdG9td2lkZ2V0PgorICAgPGNs
YXNzPldlYlZpZXc8L2NsYXNzPgorICAgPGV4dGVuZHM+UVdpZGdldDwvZXh0ZW5kcz4KKyAgIDxo
ZWFkZXI+d2lkZ2V0Lmg8L2hlYWRlcj4KKyAgPC9jdXN0b213aWRnZXQ+CisgPC9jdXN0b213aWRn
ZXRzPgorIDxyZXNvdXJjZXMvPgorIDxjb25uZWN0aW9ucy8+Cis8L3VpPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3FncmFwaGljc3dlYnZpZXcu
cHJvIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3FncmFwaGljc3dl
YnZpZXcucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZTE3YTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcv
cWdyYXBoaWNzd2Vidmlldy5wcm8KQEAgLTAsMCArMSw2IEBACitpbmNsdWRlKC4uL3Rlc3RzLnBy
aSkKK2V4aXN0cygkJHtUQVJHRVR9LnFyYyk6UkVTT1VSQ0VTICs9ICQke1RBUkdFVH0ucXJjCisK
K2VuYWJsZT8oV0VCR0wpIHsKKyAgICBRVCArPSBvcGVuZ2wKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvZ3JlZW5kaXYuaHRt
bCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvZ3Jl
ZW5kaXYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjdmYTk3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3
L3Jlc291cmNlcy9ncmVlbmRpdi5odG1sCkBAIC0wLDAgKzEsOCBAQAorPGJvZHkgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6IHdoaXRlIj4KKyA8ZGl2IGlkPSIxIiBzdHlsZT0id2lkdGg6IDUwJTsg
aGVpZ2h0OiA1MCU7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIi8+CisgPHNjcmlwdD4KKyAgZnVu
Y3Rpb24gcmVzaXplRGl2KCkgeworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIjEiKS5z
ZXRBdHRyaWJ1dGUoInN0eWxlIiwgIndpZHRoOiAxNTAlOyBoZWlnaHQ6IDE1MCU7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuIik7CisgIH0KKyA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvaW5wdXRf
dHlwZXMuaHRtbCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNv
dXJjZXMvaW5wdXRfdHlwZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xOGFiMzE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3Jh
cGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9pbnB1dF90eXBlcy5odG1sCkBAIC0wLDAgKzEsOCBAQAor
PGh0bWw+PGJvZHk+Cis8aW5wdXQgdHlwZT0ndGV4dCcgbWF4bGVuZ3RoPScyMCcgc3R5bGU9J3Bv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsgdG9wOiAwcHg7IGhlaWdodDogNTBweDsgd2lk
dGg6IDEwMHB4OycvPjxicj4KKzxpbnB1dCB0eXBlPSdwYXNzd29yZCcgc3R5bGU9J3Bvc2l0aW9u
OiBhYnNvbHV0ZTsgbGVmdDogMTBweDsgdG9wOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiAx
MDBweDsnLz48YnI+Cis8aW5wdXQgdHlwZT0ndGVsJyBzdHlsZT0ncG9zaXRpb246IGFic29sdXRl
OyBsZWZ0OiAxMHB4OyB0b3A6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiAxMDBweDsnLz48
YnI+Cis8aW5wdXQgdHlwZT0nbnVtYmVyJyBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyBsZWZ0
OiAxMHB4OyB0b3A6IDE1MHB4OyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiAxMDBweDsnLz48YnI+Cis8
aW5wdXQgdHlwZT0nZW1haWwnIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwcHg7
IHRvcDogMjAwcHg7IGhlaWdodDogNTBweDsgd2lkdGg6IDEwMHB4OycvPjxicj4KKzxpbnB1dCB0
eXBlPSd1cmwnIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwcHg7IHRvcDogMjUw
cHg7IGhlaWdodDogNTBweDsgd2lkdGg6IDEwMHB4OycvPjxicj4iCis8L2JvZHk+PC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvcG9pbnRpbmdfcmlnaHQuaHRtbCBiL1Nv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy9yZXNvdXJjZXMvcG9pbnRpbmdf
cmlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzU5MmZiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3
L3Jlc291cmNlcy9wb2ludGluZ19yaWdodC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPgor
ICA8Ym9keSBzdHlsZT0ibWFyZ2luOiAwIj4KKyAgICA8Y2FudmFzIHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIj48L2NhbnZhcz4KKyAgPC9ib2R5PgorPC9odG1sPgorPHNjcmlwdD4KKyAgICB2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImNhbnZhcyIpWzBdOworICAg
IGdsID0gY2FudmFzLmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIpOworICAgIGdsLmNs
ZWFyQ29sb3IoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBnbC52aWV3cG9ydCgwLCAwLCBjYW52
YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworCisgICAgdmFyIHZlcnRleFNoYWRlciA9IGdsLmNy
ZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTsKKyAgICBnbC5zaGFkZXJTb3VyY2UodmVydGV4
U2hhZGVyLCAiYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uO1xudm9pZCBtYWluKCkgeyBnbF9Qb3Np
dGlvbiA9IHZQb3NpdGlvbjsgfSIpOworICAgIGdsLmNvbXBpbGVTaGFkZXIodmVydGV4U2hhZGVy
KTsKKworICAgIHZhciBmcmFnbWVudFNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihnbC5GUkFHTUVO
VF9TSEFERVIpOworICAgIGdsLnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgInZvaWQgbWFp
bigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOyB9Iik7CisgICAg
Z2wuY29tcGlsZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisKKyAgICB2YXIgc2hhZGVyUHJvZ3Jh
bSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIoc2hhZGVyUHJvZ3Jh
bSwgdmVydGV4U2hhZGVyKTsKKyAgICBnbC5hdHRhY2hTaGFkZXIoc2hhZGVyUHJvZ3JhbSwgZnJh
Z21lbnRTaGFkZXIpOworICAgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbihzaGFkZXJQcm9ncmFtLCAw
LCAidlBvc2l0aW9uIik7CisgICAgZ2wubGlua1Byb2dyYW0oc2hhZGVyUHJvZ3JhbSk7CisKKyAg
ICBnbC51c2VQcm9ncmFtKHNoYWRlclByb2dyYW0pOworCisgICAgdmFyIGJ1ZmZlciA9IGdsLmNy
ZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIp
OworCisgICAgdmFyIHZlcnRpY2VzID0gWy0xLjAsIC0xLjAsCisgICAgICAgICAgICAgICAgICAg
IDAuMCwgMC4wLAorICAgICAgICAgICAgICAgICAgICAtMS4wLCAxLjBdOworICAgIHZhciBzZWVk
WCA9IC0xLjA7CisgICAgdmFyIHNlZWRZID0gMS4wOworICAgIHZlcnRpY2VzCisgICAgZ2wuYnVm
ZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpLCBnbC5T
VEFUSUNfRFJBVyk7CisKKworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlRS
SUFOR0xFUywgMCwgMyk7CisgICAgZ2wuZmx1c2goKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9wb2ludGlu
Z191cC5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291
cmNlcy9wb2ludGluZ191cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjQ3NGE1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFw
aGljc3dlYnZpZXcvcmVzb3VyY2VzL3BvaW50aW5nX3VwLmh0bWwKQEAgLTAsMCArMSw0NiBAQAor
PGh0bWw+CisgIDxib2R5IHN0eWxlPSJtYXJnaW46IDAiPgorICAgIDxjYW52YXMgd2lkdGg9IjEw
MCIgaGVpZ2h0PSIxMDAiPjwvY2FudmFzPgorICA8L2JvZHk+Cis8L2h0bWw+Cis8c2NyaXB0Pgor
ICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiY2FudmFzIilb
MF07CisgICAgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIik7Cisg
ICAgZ2wuY2xlYXJDb2xvcigwLjAsIDEuMCwgMC4wLCAxLjApOworICAgIGdsLnZpZXdwb3J0KDAs
IDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICB2YXIgdmVydGV4U2hhZGVy
ID0gZ2wuY3JlYXRlU2hhZGVyKGdsLlZFUlRFWF9TSEFERVIpOworICAgIGdsLnNoYWRlclNvdXJj
ZSh2ZXJ0ZXhTaGFkZXIsICJhdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247XG52b2lkIG1haW4oKSB7
IGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOyB9Iik7CisgICAgZ2wuY29tcGlsZVNoYWRlcih2ZXJ0
ZXhTaGFkZXIpOworCisgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKGds
LkZSQUdNRU5UX1NIQURFUik7CisgICAgZ2wuc2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCAi
dm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7IH0i
KTsKKyAgICBnbC5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKKworICAgIHZhciBzaGFk
ZXJQcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICAgIGdsLmF0dGFjaFNoYWRlcihzaGFk
ZXJQcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgIGdsLmF0dGFjaFNoYWRlcihzaGFkZXJQcm9n
cmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHNoYWRlclBy
b2dyYW0sIDAsICJ2UG9zaXRpb24iKTsKKyAgICBnbC5saW5rUHJvZ3JhbShzaGFkZXJQcm9ncmFt
KTsKKworICAgIGdsLnVzZVByb2dyYW0oc2hhZGVyUHJvZ3JhbSk7CisKKyAgICB2YXIgYnVmZmVy
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IGJ1ZmZlcik7CisKKyAgICB2YXIgdmVydGljZXMgPSBbLTEuMCwgLTEuMCwKKyAgICAgICAgICAg
ICAgICAgICAgMC4wLCAwLjAsCisgICAgICAgICAgICAgICAgICAgIDEuMCwgLTEuMF07CisgICAg
dmFyIHNlZWRYID0gLTEuMDsKKyAgICB2YXIgc2VlZFkgPSAxLjA7CisgICAgdmVydGljZXMKKyAg
ICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNl
cyksIGdsLlNUQVRJQ19EUkFXKTsKKworCisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAy
LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KDApOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAgIGdsLmRyYXdBcnJh
eXMoZ2wuVFJJQU5HTEVTLCAwLCAzKTsKKyAgICBnbC5mbHVzaCgpOworICAgIGdsLmZpbmlzaCgp
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGlj
c3dlYnZpZXcvcmVzb3VyY2VzL3Njcm9sbHRlc3RfcGFnZS5odG1sIGIvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9zY3JvbGx0ZXN0X3BhZ2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGZjYmJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3Jlc291cmNlcy9z
Y3JvbGx0ZXN0X3BhZ2UuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxl
PlNjcm9sbGluZyB0ZXN0PC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBzdHlsZT0id2lk
dGg6IDEwMDBweDsgaGVpZ2h0OiAxMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIi8+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFw
aGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9xdC90
ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTU0MjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xZ3JhcGhpY3N3ZWJ2aWV3L3RzdF9xZ3JhcGhpY3N3ZWJ2aWV3
LmNwcApAQCAtMCwwICsxLDcyNyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSmFrdWIg
V2llY3pvcmVrIDxmYXcyMTdAZ21haWwuY29tPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICIuLi91dGlsLmgiCisj
aW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKyNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZU1vdXNlRXZl
bnQ+CisjaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KKyNpbmNsdWRlIDxRU3R5bGVPcHRpb25HcmFw
aGljc0l0ZW0+CisjaW5jbHVkZSA8cWdyYXBoaWNzd2Vidmlldy5oPgorI2luY2x1ZGUgPHF3ZWJw
YWdlLmg+CisjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMCisjaW5jbHVkZSA8UUdMV2lkZ2V0PgorI2VuZGlmCisKK2NsYXNz
IHRzdF9RR3JhcGhpY3NXZWJWaWV3IDogcHVibGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAor
Citwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBxZ3JhcGhpY3N3ZWJ2aWV3KCk7CisgICAgdm9p
ZCBjcmFzaE9uVmlld2xlc3NXZWJQYWdlcygpOworICAgIHZvaWQgbWljcm9Gb2N1c0Nvb3JkaW5h
dGVzKCk7CisgICAgdm9pZCBmb2N1c0lucHV0VHlwZXMoKTsKKyAgICB2b2lkIGNyYXNoT25TZXRT
Y2FsZUJlZm9yZVNldFVybCgpOworICAgIHZvaWQgd2lkZ2V0c1JlbmRlcmluZ1Rocm91Z2hDYWNo
ZSgpOworICAgIHZvaWQgd2luZG93UmVzaXplRXZlbnQoKTsKKyAgICB2b2lkIGhvcml6b250YWxT
Y3JvbGxiYXJUZXN0KCk7CisKKyNpZiAhKGRlZmluZWQoV1RGX1VTRV9RVF9NT0JJTEVfVEhFTUUp
ICYmIFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKQorICAgIHZvaWQgc2V0UGFsZXR0ZV9kYXRhKCk7
CisgICAgdm9pZCBzZXRQYWxldHRlKCk7CisjZW5kaWYKKyAgICB2b2lkIHJlbmRlckhpbnRzKCk7
CisjaWYgZGVmaW5lZChXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUpICYmIFdURl9VU0VfVElM
RURfQkFDS0lOR19TVE9SRQorICAgIHZvaWQgYnVnNTc3OTgoKTsKKyAgICB2b2lkIGJ1ZzU2OTI5
KCk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJHTCkgJiYgRU5BQkxFX1dFQkdMCisg
ICAgdm9pZCB3ZWJnbFNvZnR3YXJlRmFsbGJhY2tWZXJ0aWNhbE9yaWVudGF0aW9uKCk7CisgICAg
dm9pZCB3ZWJnbFNvZnR3YXJlRmFsbGJhY2tIb3Jpem9udGFsT3JpZW50YXRpb24oKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIGNvbXBhcmVDYW52YXNUb0ltYWdlKGNvbnN0IFFVcmwmLCBjb25zdCBR
SW1hZ2UmKTsKKyNlbmRpZgorfTsKKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6cWdyYXBo
aWNzd2VidmlldygpCit7CisgICAgUUdyYXBoaWNzV2ViVmlldyBpdGVtOworICAgIGl0ZW0udXJs
KCk7CisgICAgaXRlbS50aXRsZSgpOworICAgIGl0ZW0uaWNvbigpOworICAgIGl0ZW0uem9vbUZh
Y3RvcigpOworICAgIGl0ZW0uaGlzdG9yeSgpOworICAgIGl0ZW0uc2V0dGluZ3MoKTsKKyAgICBp
dGVtLnBhZ2UoKTsKKyAgICBpdGVtLnNldFBhZ2UoMCk7CisgICAgaXRlbS5wYWdlKCk7CisgICAg
aXRlbS5zZXRVcmwoUVVybCgpKTsKKyAgICBpdGVtLnNldFpvb21GYWN0b3IoMCk7CisgICAgaXRl
bS5sb2FkKFFVcmwoKSk7CisgICAgaXRlbS5zZXRIdG1sKFFTdHJpbmcoKSk7CisgICAgaXRlbS5z
ZXRDb250ZW50KFFCeXRlQXJyYXkoKSk7CisgICAgaXRlbS5pc01vZGlmaWVkKCk7Cit9CisKK2Ns
YXNzIFdlYlBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UKK3sKKyAgICBRX09CSkVDVAorCitwdWJsaWM6
CisgICAgV2ViUGFnZShRT2JqZWN0KiBwYXJlbnQgPSAwKTogUVdlYlBhZ2UocGFyZW50KQorICAg
IHsKKyAgICB9CisKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3OworCitwcml2YXRlIFFf
U0xPVFM6CisgICAgLy8gRm9yY2UgYSB3ZWJ2aWV3IGRlbGV0aW9uIGR1cmluZyB0aGUgbG9hZC4K
KyAgICAvLyBJdCBzaG91bGQgbm90IGNhdXNlIFdlYlBhZ2UgdG8gY3Jhc2ggZHVlIHRvCisgICAg
Ly8gaXQgYWNjZXNzaW5nIGludmFsaWQgcGFnZUNsaWVudCBwb2ludGVyLgorICAgIHZvaWQgYWJv
cnRpbmcoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHdlYlZpZXc7CisgICAgfQorfTsKKworY2xh
c3MgR3JhcGhpY3NXZWJWaWV3IDogcHVibGljIFFHcmFwaGljc1dlYlZpZXcKK3sKKyAgICBRX09C
SkVDVAorCitwdWJsaWM6CisgICAgR3JhcGhpY3NXZWJWaWV3KFFHcmFwaGljc0l0ZW0qIHBhcmVu
dCA9IDApOiBRR3JhcGhpY3NXZWJWaWV3KHBhcmVudCkKKyAgICB7CisgICAgfQorCisgICAgdm9p
ZCBmaXJlTW91c2VDbGljayhRUG9pbnRGIHBvaW50KSB7CisgICAgICAgIFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCBwcmVzRXYoUUV2ZW50OjpHcmFwaGljc1NjZW5lTW91c2VQcmVzcyk7CisgICAg
ICAgIHByZXNFdi5zZXRQb3MocG9pbnQpOworICAgICAgICBwcmVzRXYuc2V0QnV0dG9uKFF0OjpM
ZWZ0QnV0dG9uKTsKKyAgICAgICAgcHJlc0V2LnNldEJ1dHRvbnMoUXQ6OkxlZnRCdXR0b24pOwor
ICAgICAgICBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQgcmVsRXYoUUV2ZW50OjpHcmFwaGljc1Nj
ZW5lTW91c2VSZWxlYXNlKTsKKyAgICAgICAgcmVsRXYuc2V0UG9zKHBvaW50KTsKKyAgICAgICAg
cmVsRXYuc2V0QnV0dG9uKFF0OjpMZWZ0QnV0dG9uKTsKKyAgICAgICAgcmVsRXYuc2V0QnV0dG9u
cyhRdDo6TGVmdEJ1dHRvbik7CisgICAgICAgIFFHcmFwaGljc1dlYlZpZXc6OnNjZW5lRXZlbnQo
JnByZXNFdik7CisgICAgICAgIFFHcmFwaGljc1dlYlZpZXc6OnNjZW5lRXZlbnQoJnJlbEV2KTsK
KyAgICB9Cit9OworCit2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3OjpjcmFzaE9uVmlld2xlc3NX
ZWJQYWdlcygpCit7CisgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmU7CisgICAgUUdyYXBoaWNzVmll
dyB2aWV3KCZzY2VuZSk7CisKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3IFFH
cmFwaGljc1dlYlZpZXc7CisgICAgV2ViUGFnZSogcGFnZSA9IG5ldyBXZWJQYWdlOworICAgIHdl
YlZpZXctPnNldFBhZ2UocGFnZSk7CisgICAgcGFnZS0+d2ViVmlldyA9IHdlYlZpZXc7CisgICAg
c2NlbmUuYWRkSXRlbSh3ZWJWaWV3KTsKKworICAgIHZpZXcuc2V0U2l6ZVBvbGljeShRU2l6ZVBv
bGljeTo6RXhwYW5kaW5nLCBRU2l6ZVBvbGljeTo6RXhwYW5kaW5nKTsKKyAgICB2aWV3LnJlc2l6
ZSg2MDAsIDQ4MCk7CisgICAgd2ViVmlldy0+cmVzaXplKHZpZXcuZ2VvbWV0cnkoKS5zaXplKCkp
OworCisgICAgUUNvcmVBcHBsaWNhdGlvbjo6cHJvY2Vzc0V2ZW50cygpOworICAgIHZpZXcuc2hv
dygpOworCisgICAgLy8gUmVzaXppbmcgdGhlIHBhZ2Ugd2lsbCByZXNpemUgYW5kIGxheW91dCB0
aGUgZW1wdHkgImFib3V0OmJsYW5rIgorICAgIC8vIHBhZ2UsIHNvIHdlIGZpcnN0IGNvbm5lY3Qg
dGhlIHNpZ25hbCBhZnRlcndhcmQuCisgICAgY29ubmVjdChwYWdlLT5tYWluRnJhbWUoKSwgU0lH
TkFMKGluaXRpYWxMYXlvdXRDb21wbGV0ZWQoKSksIHBhZ2UsIFNMT1QoYWJvcnRpbmcoKSkpOwor
CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWwsIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxmcmFtZXNldCBjb2xzPVwiMjUlLDc1JVwi
PiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGZyYW1lIHNyYz1cImRh
dGE6dGV4dC9odG1sLGZvbyBcIj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjxmcmFtZSBzcmM9XCJkYXRhOnRleHQvaHRtbCxiYXJcIj4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPC9mcmFtZXNldD4iKSk7CisKKyAgICBRVkVSSUZZKHdhaXRGb3JT
aWduYWwocGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKyAgICBkZWxldGUgcGFn
ZTsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6Y3Jhc2hPblNldFNjYWxlQmVmb3Jl
U2V0VXJsKCkKK3sKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3IFFHcmFwaGlj
c1dlYlZpZXc7CisgICAgd2ViVmlldy0+c2V0U2NhbGUoMi4wKTsKKyAgICBkZWxldGUgd2ViVmll
dzsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6d2lkZ2V0c1JlbmRlcmluZ1Rocm91
Z2hDYWNoZSgpCit7CisgICAgLy8gV2lkZ2V0cyBzaG91bGQgYmUgcmVuZGVyZWQgdGhlIHNhbWUg
d2F5IHdpdGggYW5kIHdpdGhvdXQKKyAgICAvLyBpbnRlcm1lZGlhdGUgY2FjaGUgKHRpbGluZyBm
b3IgZXhhbXBsZSkuCisgICAgLy8gU2VlIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc3Njcgd2hlcmUKKyAgICAvLyB3aWRnZXQgYXJlIHJlbmRlcmVkIGFzIGRp
c2FibGVkIHdoZW4gY2FjaGluZyBpcyB1c2luZy4KKworICAgIFFHcmFwaGljc1dlYlZpZXcqIHdl
YlZpZXcgPSBuZXcgUUdyYXBoaWNzV2ViVmlldzsKKyAgICB3ZWJWaWV3LT5zZXRIdG1sKFFMYXRp
bjFTdHJpbmcoIjxib2R5IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGVcIj48aW5wdXQg
dHlwZT1yYW5nZT48L2lucHV0PjxpbnB1dCB0eXBlPWNoZWNrYm94PjwvaW5wdXQ+PGlucHV0IHR5
cGU9cmFkaW8+PC9pbnB1dD48aW5wdXQgdHlwZT1maWxlPjwvaW5wdXQ+PC9ib2R5PiIpKTsKKwor
ICAgIFFHcmFwaGljc1ZpZXcgdmlldzsKKyAgICAvLyBEaXNhYmxlIHRoZSBzY3JvbGxiYXJzIG9u
IHRoZSBncmFwaGljcyB2aWV3IGJlY2F1c2UgUXRXZWJLaXQgaGFuZGxlcyBzY3JvbGxpbmcgYW5k
IHNjcm9sbGJhciBhdXRvbWF0aWNhbGx5CisgICAgdmlldy5zZXRIb3Jpem9udGFsU2Nyb2xsQmFy
UG9saWN5KFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOworICAgIHZpZXcuc2V0VmVydGljYWxTY3Jv
bGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5c09mZik7CisgICAgdmlldy5zaG93KCk7Cisg
ICAgUUdyYXBoaWNzU2NlbmUqIHNjZW5lID0gbmV3IFFHcmFwaGljc1NjZW5lKCZ2aWV3KTsKKyAg
ICB2aWV3LnNldFNjZW5lKHNjZW5lKTsKKyAgICBzY2VuZS0+YWRkSXRlbSh3ZWJWaWV3KTsKKyAg
ICB2aWV3LnNldEdlb21ldHJ5KFFSZWN0KDAsIDAsIDUwMCwgNTAwKSk7CisgICAgUVdpZGdldCAq
Y29uc3Qgd2lkZ2V0ID0gJnZpZXc7CisgICAgUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCh3
aWRnZXQpOworCisgICAgLy8gMS4gUmVmZXJlbmNlIHdpdGhvdXQgdGlsaW5nLgorICAgIHdlYlZp
ZXctPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0
b3JlRW5hYmxlZCwgZmFsc2UpOworICAgIFFQaXhtYXAgcmVmZXJlbmNlUGl4bWFwKHZpZXcuc2l6
ZSgpKTsKKyAgICB3aWRnZXQtPnJlbmRlcigmcmVmZXJlbmNlUGl4bWFwKTsKKworICAgIC8vIDIu
IFdpdGggdGlsaW5nLgorICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OlRpbGVkQmFja2luZ1N0b3JlRW5hYmxlZCwgdHJ1ZSk7CisgICAgUVBpeG1hcCB2
aWV3V2l0aFRpbGluZyh2aWV3LnNpemUoKSk7CisgICAgd2lkZ2V0LT5yZW5kZXIoJnZpZXdXaXRo
VGlsaW5nKTsKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICB3aWRnZXQt
PnJlbmRlcigmdmlld1dpdGhUaWxpbmcpOworCisgICAgUUNPTVBBUkUocmVmZXJlbmNlUGl4bWFw
LnRvSW1hZ2UoKSwgdmlld1dpdGhUaWxpbmcudG9JbWFnZSgpKTsKK30KKworI2lmIGRlZmluZWQo
V1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFKSAmJiBXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RP
UkUKK3ZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OmJ1ZzU3Nzk4KCkKK3sKKyAgICAvLyBXaGVu
IGNvbnRlbnQgc2l6ZSBncm93cyBmcm9tIGxlc3MgdGhhbiB2aWV3cG9ydCBzaXplIHRvIG1vcmUg
dGhhbiB0aGF0LCB0aWxlcyBtYXkgbmVlZCB0byBiZSByZWdlbmVyYXRlZC4KKworICAgIFFHcmFw
aGljc1dlYlZpZXcqIHdlYlZpZXcgPSBuZXcgUUdyYXBoaWNzV2ViVmlldygpOworICAgIHdlYlZp
ZXctPnNldEdlb21ldHJ5KFFSZWN0RigwLjAsIDAuMCwgMTAwLjAsIDEwMC4wKSk7CisgICAgUUdy
YXBoaWNzVmlldyB2aWV3KG5ldyBRR3JhcGhpY3NTY2VuZSgpKTsKKyAgICB2aWV3LnNjZW5lKCkt
PnNldFBhcmVudCgmdmlldyk7CisgICAgdmlldy5zY2VuZSgpLT5hZGRJdGVtKHdlYlZpZXcpOwor
ICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlRpbGVk
QmFja2luZ1N0b3JlRW5hYmxlZCwgdHJ1ZSk7CisgICAgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVt
IG9wdGlvbjsKKyAgICBvcHRpb24uZXhwb3NlZFJlY3QgPSB2aWV3LnNjZW5lUmVjdCgpOworICAg
IFFJbWFnZSBpbWcodmlldy53aWR0aCgpLCB2aWV3LmhlaWdodCgpLAorICAgIFFJbWFnZTo6Rm9y
bWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKKyAgICBRUGFpbnRlciBwYWludGVyKCZpbWcpOwor
ICAgIC8vIFRoaXMgd2lsbCBub3QgcGFpbnQgYW55dGhpbmcgYXMgdGhlIHRpbGVzIGFyZSBub3Qg
cmVhZHksIGJ1dCB3aWxsIHRyaWdnZXIgdGlsZSBjcmVhdGlvbiB3aXRoIHNpemUgKDAsIDApLgor
ICAgIHdlYlZpZXctPnBhaW50KCZwYWludGVyLCAmb3B0aW9uKTsKKyAgICBRQXBwbGljYXRpb246
OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVXJsIHVybCgicXJjOi8vL3Jlc291cmNlcy9ncmVlbmRp
di5odG1sIik7CisgICAgd2ViVmlldy0+bG9hZCh1cmwpOworICAgIFFWRVJJRlkod2FpdEZvclNp
Z25hbCh3ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworICAgIC8vIFRoaXMg
c2hvdWxkIHRyaWdnZXIgdGhlIHJlY3JlYXRpb24gb2YgdGhlIHRpbGVzLgorICAgIHdlYlZpZXct
PnBhaW50KCZwYWludGVyLCAmb3B0aW9uKTsKKyAgICBRQXBwbGljYXRpb246OnByb2Nlc3NFdmVu
dHMoKTsKKyAgICBwYWludGVyLmZpbGxSZWN0KG9wdGlvbi5leHBvc2VkUmVjdCwgUXQ6OnJlZCk7
IC8vIFRoaXMgaXMgaGVyZSB0byBlbnN1cmUgZmFpbHVyZSBpZiBwYWludCBkb2VzIG5vdCBwYWlu
dCBhbnl0aGluZworICAgIHdlYlZpZXctPnBhaW50KCZwYWludGVyLCAmb3B0aW9uKTsKKyAgICBR
Q09NUEFSRShpbWcucGl4ZWwob3B0aW9uLmV4cG9zZWRSZWN0LndpZHRoKCkgLyA0LCBvcHRpb24u
ZXhwb3NlZFJlY3QuaGVpZ2h0KCkgLyA0KSwgcVJnYmEoMCwgMTI4LCAwLCAyNTUpKTsKK30KKwor
dm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6YnVnNTY5MjkoKQoreworICAgIC8vIFdoZW4gcmVu
ZGVyaW5nIGZyb20gdGlsZXMgc3ljaHJvbm91cyBsYXlvdXQgc2hvdWxkIG5vdCBiZSB0cmlnZ2Vy
ZWQKKyAgICAvLyBhbmQgc2Nyb2xsYmFycyBzaG91bGQgYmUgaW4gc3luYyB3aXRoIHRoZSBzaXpl
IG9mIHRoZSBkb2N1bWVudCBpbiB0aGUgZGlzcGxheWVkIHN0YXRlLgorCisgICAgUUdyYXBoaWNz
V2ViVmlldyogd2ViVmlldyA9IG5ldyBRR3JhcGhpY3NXZWJWaWV3KCk7CisgICAgd2ViVmlldy0+
c2V0R2VvbWV0cnkoUVJlY3RGKDAuMCwgMC4wLCAxMDAuMCwgMTAwLjApKTsKKyAgICBRR3JhcGhp
Y3NWaWV3IHZpZXcobmV3IFFHcmFwaGljc1NjZW5lKCkpOworICAgIHZpZXcuc2NlbmUoKS0+c2V0
UGFyZW50KCZ2aWV3KTsKKyAgICB2aWV3LnNjZW5lKCktPmFkZEl0ZW0od2ViVmlldyk7CisgICAg
d2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6VGlsZWRCYWNr
aW5nU3RvcmVFbmFibGVkLCB0cnVlKTsKKyAgICBRVXJsIHVybCgicXJjOi8vL3Jlc291cmNlcy9n
cmVlbmRpdi5odG1sIik7CisgICAgd2ViVmlldy0+bG9hZCh1cmwpOworICAgIFFWRVJJRlkod2Fp
dEZvclNpZ25hbCh3ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworICAgIFFT
dHlsZU9wdGlvbkdyYXBoaWNzSXRlbSBvcHRpb247CisgICAgb3B0aW9uLmV4cG9zZWRSZWN0ID0g
d2ViVmlldy0+Z2VvbWV0cnkoKTsKKyAgICBRSW1hZ2UgaW1nKG9wdGlvbi5leHBvc2VkUmVjdC53
aWR0aCgpLCBvcHRpb24uZXhwb3NlZFJlY3QuaGVpZ2h0KCksIFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
Ml9QcmVtdWx0aXBsaWVkKTsKKyAgICBRUGFpbnRlciBwYWludGVyKCZpbWcpOworICAgIC8vIFRo
aXMgd2lsbCBub3QgcGFpbnQgYW55dGhpbmcgYXMgdGhlIHRpbGVzIGFyZSBub3QgcmVhZHksIHll
dC4KKyAgICB3ZWJWaWV3LT5wYWludCgmcGFpbnRlciwgJm9wdGlvbik7CisgICAgUUFwcGxpY2F0
aW9uOjpwcm9jZXNzRXZlbnRzKCk7CisgICAgd2ViVmlldy0+cGFpbnQoJnBhaW50ZXIsICZvcHRp
b24pOworICAgIFFDT01QQVJFKGltZy5waXhlbChvcHRpb24uZXhwb3NlZFJlY3Qud2lkdGgoKSAt
IDIsIG9wdGlvbi5leHBvc2VkUmVjdC5oZWlnaHQoKSAvIDIpLCBxUmdiYSgyNTUsIDI1NSwgMjU1
LCAyNTUpKTsKKyAgICBwYWludGVyLmZpbGxSZWN0KG9wdGlvbi5leHBvc2VkUmVjdCwgUXQ6OmJs
YWNrKTsKKyAgICBRQ09NUEFSRShpbWcucGl4ZWwob3B0aW9uLmV4cG9zZWRSZWN0LndpZHRoKCkg
LSAyLCBvcHRpb24uZXhwb3NlZFJlY3QuaGVpZ2h0KCkgLyAyKSwgcVJnYmEoMCwgMCwgMCwgMjU1
KSk7CisgICAgd2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KFFTdHJpbmcoInJlc2l6ZURpdigpOyIpKTsKKyAgICB3ZWJWaWV3LT5wYWludCgmcGFpbnRlciwg
Jm9wdGlvbik7CisgICAgUUNPTVBBUkUoaW1nLnBpeGVsKG9wdGlvbi5leHBvc2VkUmVjdC53aWR0
aCgpIC0gMiwgb3B0aW9uLmV4cG9zZWRSZWN0LmhlaWdodCgpIC8gMiksIHFSZ2JhKDI1NSwgMjU1
LCAyNTUsIDI1NSkpOworfQorI2VuZGlmCisKK3ZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6Om1p
Y3JvRm9jdXNDb29yZGluYXRlcygpCit7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBh
Z2U7CisgICAgUUdyYXBoaWNzV2ViVmlldyogd2ViVmlldyA9IG5ldyBRR3JhcGhpY3NXZWJWaWV3
OworICAgIHdlYlZpZXctPnNldFBhZ2UoIHBhZ2UgKTsKKyAgICBRR3JhcGhpY3NWaWV3KiB2aWV3
ID0gbmV3IFFHcmFwaGljc1ZpZXc7CisgICAgUUdyYXBoaWNzU2NlbmUqIHNjZW5lID0gbmV3IFFH
cmFwaGljc1NjZW5lKHZpZXcpOworICAgIHZpZXctPnNldFNjZW5lKHNjZW5lKTsKKyAgICBzY2Vu
ZS0+YWRkSXRlbSh3ZWJWaWV3KTsKKyAgICB2aWV3LT5zZXRHZW9tZXRyeShRUmVjdCgwLDAsNTAw
LDUwMCkpOworCisgICAgcGFnZS0+bWFpbkZyYW1lKCktPnNldEh0bWwoIjxodG1sPjxib2R5PiIg
XAorICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDEnIHN0eWxlPSdmb250LS1m
YW1pbHk6IHNlcmlmJyB2YWx1ZT0nJyBtYXhsZW5ndGg9JzIwJy8+PGJyPiIgXAorICAgICAgICAi
PGNhbnZhcyBpZD0nY2FudmFzMScgd2lkdGg9JzUwMCcgaGVpZ2h0PSc1MDAnPjwvY2FudmFzPiIg
XAorICAgICAgICAiPGlucHV0IHR5cGU9J3Bhc3N3b3JkJy8+PGJyPiIgXAorICAgICAgICAiPGNh
bnZhcyBpZD0nY2FudmFzMicgd2lkdGg9JzUwMCcgaGVpZ2h0PSc1MDAnPjwvY2FudmFzPiIgXAor
ICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKKworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRG
b2N1cygpOworCisgICAgUVZhcmlhbnQgaW5pdGlhbE1pY3JvRm9jdXMgPSBwYWdlLT5pbnB1dE1l
dGhvZFF1ZXJ5KFF0OjpJbU1pY3JvRm9jdXMpOworICAgIFFWRVJJRlkoaW5pdGlhbE1pY3JvRm9j
dXMuaXNWYWxpZCgpKTsKKworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zY3JvbGwoMCwzMDApOwor
CisgICAgUVZhcmlhbnQgY3VycmVudE1pY3JvRm9jdXMgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5
KFF0OjpJbU1pY3JvRm9jdXMpOworICAgIFFWRVJJRlkoY3VycmVudE1pY3JvRm9jdXMuaXNWYWxp
ZCgpKTsKKworICAgIFFDT01QQVJFKGluaXRpYWxNaWNyb0ZvY3VzLnRvUmVjdCgpLnRyYW5zbGF0
ZWQoUVBvaW50KDAsLTMwMCkpLCBjdXJyZW50TWljcm9Gb2N1cy50b1JlY3QoKSk7CisKKyAgICBk
ZWxldGUgdmlldzsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6Zm9jdXNJbnB1dFR5
cGVzKCkKK3sKKyAgICBRV2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZTsKKyAgICBHcmFwaGlj
c1dlYlZpZXcqIHdlYlZpZXcgPSBuZXcgR3JhcGhpY3NXZWJWaWV3OworICAgIHdlYlZpZXctPnNl
dFBhZ2UoIHBhZ2UgKTsKKyAgICBRR3JhcGhpY3NWaWV3KiB2aWV3ID0gbmV3IFFHcmFwaGljc1Zp
ZXc7CisgICAgUUdyYXBoaWNzU2NlbmUqIHNjZW5lID0gbmV3IFFHcmFwaGljc1NjZW5lKHZpZXcp
OworICAgIHZpZXctPnNldFNjZW5lKHNjZW5lKTsKKyAgICBzY2VuZS0+YWRkSXRlbSh3ZWJWaWV3
KTsKKyAgICB2aWV3LT5zZXRHZW9tZXRyeShRUmVjdCgwLDAsNTAwLDUwMCkpOworICAgIFFDb3Jl
QXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKyAgICBRVXJsIHVybCgicXJjOi8vL3Jlc291
cmNlcy9pbnB1dF90eXBlcy5odG1sIik7CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmxvYWQodXJs
KTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+c2V0Rm9jdXMoKTsKKworICAgIFFWRVJJRlkod2Fp
dEZvclNpZ25hbChwYWdlLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgLy8g
J3RleHQnIHR5cGUKKyAgICB3ZWJWaWV3LT5maXJlTW91c2VDbGljayhRUG9pbnRGKDIwLjAsIDEw
LjApKTsKKyAgICBRVkVSSUZZKHdlYlZpZXctPmlucHV0TWV0aG9kSGludHMoKSA9PSBRdDo6SW1o
Tm9uZSk7CisKKyAgICAvLyAncGFzc3dvcmQnIGZpZWxkCisgICAgd2ViVmlldy0+ZmlyZU1vdXNl
Q2xpY2soUVBvaW50RigyMC4wLCA2MC4wKSk7CisgICAgUVZFUklGWSh3ZWJWaWV3LT5pbnB1dE1l
dGhvZEhpbnRzKCkgJiBRdDo6SW1oSGlkZGVuVGV4dCk7CisKKyAgICAvLyAndGVsJyBmaWVsZAor
ICAgIHdlYlZpZXctPmZpcmVNb3VzZUNsaWNrKFFQb2ludEYoMjAuMCwgMTEwLjApKTsKKyAgICBR
VkVSSUZZKHdlYlZpZXctPmlucHV0TWV0aG9kSGludHMoKSAmIFF0OjpJbWhEaWFsYWJsZUNoYXJh
Y3RlcnNPbmx5KTsKKworICAgIC8vICdudW1iZXInIGZpZWxkCisgICAgd2ViVmlldy0+ZmlyZU1v
dXNlQ2xpY2soUVBvaW50RigyMC4wLCAxNjAuMCkpOworICAgIFFWRVJJRlkod2ViVmlldy0+aW5w
dXRNZXRob2RIaW50cygpICYgUXQ6OkltaERpZ2l0c09ubHkpOworCisgICAgLy8gJ2VtYWlsJyBm
aWVsZAorICAgIHdlYlZpZXctPmZpcmVNb3VzZUNsaWNrKFFQb2ludEYoMjAuMCwgMjEwLjApKTsK
KyAgICBRVkVSSUZZKHdlYlZpZXctPmlucHV0TWV0aG9kSGludHMoKSAmIFF0OjpJbWhFbWFpbENo
YXJhY3RlcnNPbmx5KTsKKworICAgIC8vICd1cmwnIGZpZWxkCisgICAgd2ViVmlldy0+ZmlyZU1v
dXNlQ2xpY2soUVBvaW50RigyMC4wLCAyNjAuMCkpOworICAgIFFWRVJJRlkod2ViVmlldy0+aW5w
dXRNZXRob2RIaW50cygpICYgUXQ6OkltaFVybENoYXJhY3RlcnNPbmx5KTsKKworICAgIGRlbGV0
ZSB3ZWJWaWV3OworICAgIGRlbGV0ZSB2aWV3OworfQorCisjaWYgIShkZWZpbmVkKFdURl9VU0Vf
UVRfTU9CSUxFX1RIRU1FKSAmJiBXVEZfVVNFX1FUX01PQklMRV9USEVNRSkKK3ZvaWQgdHN0X1FH
cmFwaGljc1dlYlZpZXc6OnNldFBhbGV0dGVfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVt
bjxib29sPigiYWN0aXZlIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigiYmFja2dyb3Vu
ZCIpOworICAgIFFUZXN0OjpuZXdSb3coImFjdGl2ZUJHIikgPDwgdHJ1ZSA8PCB0cnVlOworICAg
IFFUZXN0OjpuZXdSb3coImFjdGl2ZUZHIikgPDwgdHJ1ZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6
bmV3Um93KCJpbmFjdGl2ZUJHIikgPDwgZmFsc2UgPDwgdHJ1ZTsKKyAgICBRVGVzdDo6bmV3Um93
KCJpbmFjdGl2ZUZHIikgPDwgZmFsc2UgPDwgZmFsc2U7Cit9CisKKy8vIFJlbmRlciBhIFFHcmFw
aGljc1dlYlZpZXcgdG8gYSBRSW1hZ2UgdHdpY2UsIGVhY2ggdGltZSB3aXRoIGEgZGlmZmVyZW50
IHBhbGV0dGUgc2V0LAorLy8gdmVyaWZ5IHRoYXQgaW1hZ2VzIHJlbmRlcmVkIGFyZSBub3QgdGhl
IHNhbWUsIGNvbmZpcm1pbmcgV2ViQ29yZSB1c2FnZSBvZgorLy8gY3VzdG9tIHBhbGV0dGUgb24g
c2VsZWN0aW9ucy4KK3ZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OnNldFBhbGV0dGUoKQorewor
ICAgIFFTdHJpbmcgaHRtbCA9ICI8aHRtbD48aGVhZD48L2hlYWQ+IgorICAgICAgICAgICAgICAg
ICAgICI8Ym9keT4iCisgICAgICAgICAgICAgICAgICAgIlNvbWUgdGV4dCBoZXJlIgorICAgICAg
ICAgICAgICAgICAgICI8L2JvZHk+IgorICAgICAgICAgICAgICAgICAgICI8L2h0bWw+IjsKKwor
ICAgIFFGRVRDSChib29sLCBhY3RpdmUpOworICAgIFFGRVRDSChib29sLCBiYWNrZ3JvdW5kKTsK
KworICAgIFFXaWRnZXQqIGFjdGl2ZVZpZXcgPSAwOworCisgICAgLy8gVXNlIGNvbnRyb2xWaWV3
IHRvIG1hbmFnZSBhY3RpdmUvaW5hY3RpdmUgc3RhdGUgb2YgdGVzdCB2aWV3cyBieSByYWlzaW5n
CisgICAgLy8gb3IgbG93ZXJpbmcgdGhlaXIgcG9zaXRpb24gaW4gdGhlIHdpbmRvdyBzdGFjay4K
KyAgICBRR3JhcGhpY3NTY2VuZSBjb250cm9sU2NlbmU7CisgICAgUUdyYXBoaWNzVmlldyBjb250
cm9sVmlldygmY29udHJvbFNjZW5lKTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3IGNvbnRyb2xXZWJW
aWV3OworICAgIGNvbnRyb2xTY2VuZS5hZGRJdGVtKCZjb250cm9sV2ViVmlldyk7CisgICAgY29u
dHJvbFdlYlZpZXcuc2V0SHRtbChodG1sKTsKKyAgICBjb250cm9sV2ViVmlldy5zZXRHZW9tZXRy
eShRUmVjdEYoMCwgMCwgMjAwLCAyMDApKTsKKworICAgIFFHcmFwaGljc1NjZW5lIHNjZW5lMTsK
KyAgICBRR3JhcGhpY3NWaWV3IHZpZXcxKCZzY2VuZTEpOworICAgIHZpZXcxLnNldFNjZW5lUmVj
dCgwLCAwLCAzMDAsIDMwMCk7CisgICAgUUdyYXBoaWNzV2ViVmlldyB3ZWJWaWV3MTsKKyAgICB3
ZWJWaWV3MS5zZXRSZXNpemVzVG9Db250ZW50cyh0cnVlKTsKKyAgICBzY2VuZTEuYWRkSXRlbSgm
d2ViVmlldzEpOworICAgIHdlYlZpZXcxLnNldEZvY3VzKCk7CisKKyAgICBRUGFsZXR0ZSBwYWxl
dHRlMTsKKyAgICBRQnJ1c2ggYnJ1c2gxKFF0OjpyZWQpOworICAgIGJydXNoMS5zZXRTdHlsZShR
dDo6U29saWRQYXR0ZXJuKTsKKyAgICBpZiAoYWN0aXZlICYmIGJhY2tncm91bmQpIHsKKyAgICAg
ICAgLy8gUmVuZGVyZWQgaW1hZ2UgbXVzdCBoYXZlIHJlZCBiYWNrZ3JvdW5kIG9uIGFuIGFjdGl2
ZSBRR3JhcGhpY3NXZWJWaWV3LgorICAgICAgICBwYWxldHRlMS5zZXRCcnVzaChRUGFsZXR0ZTo6
QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0LCBicnVzaDEpOworICAgIH0gZWxzZSBpZiAoYWN0
aXZlICYmICFiYWNrZ3JvdW5kKSB7CisgICAgICAgIC8vIFJlbmRlcmVkIGltYWdlIG11c3QgaGF2
ZSByZWQgZm9yZWdyb3VuZCBvbiBhbiBhY3RpdmUgUUdyYXBoaWNzV2ViVmlldy4KKyAgICAgICAg
cGFsZXR0ZTEuc2V0QnJ1c2goUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodGVk
VGV4dCwgYnJ1c2gxKTsKKyAgICB9IGVsc2UgaWYgKCFhY3RpdmUgJiYgYmFja2dyb3VuZCkgewor
ICAgICAgICAvLyBSZW5kZXJlZCBpbWFnZSBtdXN0IGhhdmUgcmVkIGJhY2tncm91bmQgb24gYW4g
aW5hY3RpdmUgUUdyYXBoaWNzV2ViVmlldy4KKyAgICAgICAgcGFsZXR0ZTEuc2V0QnJ1c2goUVBh
bGV0dGU6OkluYWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0LCBicnVzaDEpOworICAgIH0gZWxz
ZSBpZiAoIWFjdGl2ZSAmJiAhYmFja2dyb3VuZCkgeworICAgICAgICAvLyBSZW5kZXJlZCBpbWFn
ZSBtdXN0IGhhdmUgcmVkIGZvcmVncm91bmQgb24gYW4gaW5hY3RpdmUgUUdyYXBoaWNzV2ViVmll
dy4KKyAgICAgICAgcGFsZXR0ZTEuc2V0QnJ1c2goUVBhbGV0dGU6OkluYWN0aXZlLCBRUGFsZXR0
ZTo6SGlnaGxpZ2h0ZWRUZXh0LCBicnVzaDEpOworICAgIH0KKworICAgIHdlYlZpZXcxLnNldEh0
bWwoaHRtbCk7CisgICAgdmlldzEucmVzaXplKHdlYlZpZXcxLnBhZ2UoKS0+dmlld3BvcnRTaXpl
KCkpOworICAgIHdlYlZpZXcxLnNldFBhbGV0dGUocGFsZXR0ZTEpOworICAgIHZpZXcxLnNob3co
KTsKKworICAgIFFWRVJJRlkod2ViVmlldzEucGFsZXR0ZSgpID09IHBhbGV0dGUxKTsKKyAgICBR
VkVSSUZZKHdlYlZpZXcxLnBhZ2UoKS0+cGFsZXR0ZSgpID09IHBhbGV0dGUxKTsKKworICAgIFFU
ZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcxKTsKKworICAgIGlmICghYWN0aXZlKSB7
CisgICAgICAgIGNvbnRyb2xWaWV3LnNob3coKTsKKyAgICAgICAgUVRlc3Q6OnFXYWl0Rm9yV2lu
ZG93RXhwb3NlZCgmY29udHJvbFZpZXcpOworICAgICAgICBRQXBwbGljYXRpb246OnNldEFjdGl2
ZVdpbmRvdygmY29udHJvbFZpZXcpOworICAgICAgICBhY3RpdmVWaWV3ID0gJmNvbnRyb2xWaWV3
OworICAgICAgICBjb250cm9sVmlldy5hY3RpdmF0ZVdpbmRvdygpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFFBcHBsaWNhdGlvbjo6c2V0QWN0aXZlV2luZG93KCZ2aWV3MSk7CisgICAgICAgIHZp
ZXcxLmFjdGl2YXRlV2luZG93KCk7CisgICAgICAgIGFjdGl2ZVZpZXcgPSAmdmlldzE7CisgICAg
fQorCisgICAgUVRSWV9DT01QQVJFKFFBcHBsaWNhdGlvbjo6YWN0aXZlV2luZG93KCksIGFjdGl2
ZVZpZXcpOworCisgICAgd2ViVmlldzEucGFnZSgpLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpT
ZWxlY3RBbGwpOworCisgICAgUUltYWdlIGltZzEod2ViVmlldzEucGFnZSgpLT52aWV3cG9ydFNp
emUoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBRUGFpbnRlciBwYWludGVyMSgmaW1n
MSk7CisgICAgd2ViVmlldzEucGFnZSgpLT5jdXJyZW50RnJhbWUoKS0+cmVuZGVyKCZwYWludGVy
MSk7CisgICAgcGFpbnRlcjEuZW5kKCk7CisgICAgdmlldzEuY2xvc2UoKTsKKyAgICBjb250cm9s
Vmlldy5jbG9zZSgpOworCisgICAgUUdyYXBoaWNzU2NlbmUgc2NlbmUyOworICAgIFFHcmFwaGlj
c1ZpZXcgdmlldzIoJnNjZW5lMik7CisgICAgdmlldzIuc2V0U2NlbmVSZWN0KDAsIDAsIDMwMCwg
MzAwKTsKKyAgICBRR3JhcGhpY3NXZWJWaWV3IHdlYlZpZXcyOworICAgIHdlYlZpZXcyLnNldFJl
c2l6ZXNUb0NvbnRlbnRzKHRydWUpOworICAgIHNjZW5lMi5hZGRJdGVtKCZ3ZWJWaWV3Mik7Cisg
ICAgd2ViVmlldzIuc2V0Rm9jdXMoKTsKKworICAgIFFQYWxldHRlIHBhbGV0dGUyOworICAgIFFC
cnVzaCBicnVzaDIoUXQ6OmJsdWUpOworICAgIGJydXNoMi5zZXRTdHlsZShRdDo6U29saWRQYXR0
ZXJuKTsKKyAgICBpZiAoYWN0aXZlICYmIGJhY2tncm91bmQpIHsKKyAgICAgICAgLy8gUmVuZGVy
ZWQgaW1hZ2UgbXVzdCBoYXZlIGJsdWUgYmFja2dyb3VuZCBvbiBhbiBhY3RpdmUgUUdyYXBoaWNz
V2ViVmlldy4KKyAgICAgICAgcGFsZXR0ZTIuc2V0QnJ1c2goUVBhbGV0dGU6OkFjdGl2ZSwgUVBh
bGV0dGU6OkhpZ2hsaWdodCwgYnJ1c2gyKTsKKyAgICB9IGVsc2UgaWYgKGFjdGl2ZSAmJiAhYmFj
a2dyb3VuZCkgeworICAgICAgICAvLyBSZW5kZXJlZCBpbWFnZSBtdXN0IGhhdmUgYmx1ZSBmb3Jl
Z3JvdW5kIG9uIGFuIGFjdGl2ZSBRR3JhcGhpY3NXZWJWaWV3LgorICAgICAgICBwYWxldHRlMi5z
ZXRCcnVzaChRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0LCBicnVz
aDIpOworICAgIH0gZWxzZSBpZiAoIWFjdGl2ZSAmJiBiYWNrZ3JvdW5kKSB7CisgICAgICAgIC8v
IFJlbmRlcmVkIGltYWdlIG11c3QgaGF2ZSBibHVlIGJhY2tncm91bmQgb24gYW4gaW5hY3RpdmUg
UUdyYXBoaWNzV2ViVmlldy4KKyAgICAgICAgcGFsZXR0ZTIuc2V0QnJ1c2goUVBhbGV0dGU6Oklu
YWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0LCBicnVzaDIpOworICAgIH0gZWxzZSBpZiAoIWFj
dGl2ZSAmJiAhYmFja2dyb3VuZCkgeworICAgICAgICAvLyBSZW5kZXJlZCBpbWFnZSBtdXN0IGhh
dmUgYmx1ZSBmb3JlZ3JvdW5kIG9uIGFuIGluYWN0aXZlIFFHcmFwaGljc1dlYlZpZXcuCisgICAg
ICAgIHBhbGV0dGUyLnNldEJydXNoKFFQYWxldHRlOjpJbmFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hs
aWdodGVkVGV4dCwgYnJ1c2gyKTsKKyAgICB9CisKKyAgICB3ZWJWaWV3Mi5zZXRIdG1sKGh0bWwp
OworICAgIHZpZXcyLnJlc2l6ZSh3ZWJWaWV3Mi5wYWdlKCktPnZpZXdwb3J0U2l6ZSgpKTsKKyAg
ICB3ZWJWaWV3Mi5zZXRQYWxldHRlKHBhbGV0dGUyKTsKKyAgICB2aWV3Mi5zaG93KCk7CisKKyAg
ICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3Mik7CisKKyAgICBpZiAoIWFjdGl2
ZSkgeworICAgICAgICBjb250cm9sVmlldy5zaG93KCk7CisgICAgICAgIFFUZXN0OjpxV2FpdEZv
cldpbmRvd0V4cG9zZWQoJmNvbnRyb2xWaWV3KTsKKyAgICAgICAgUUFwcGxpY2F0aW9uOjpzZXRB
Y3RpdmVXaW5kb3coJmNvbnRyb2xWaWV3KTsKKyAgICAgICAgYWN0aXZlVmlldyA9ICZjb250cm9s
VmlldzsKKyAgICAgICAgY29udHJvbFZpZXcuYWN0aXZhdGVXaW5kb3coKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBRQXBwbGljYXRpb246OnNldEFjdGl2ZVdpbmRvdygmdmlldzIpOworICAgICAg
ICB2aWV3Mi5hY3RpdmF0ZVdpbmRvdygpOworICAgICAgICBhY3RpdmVWaWV3ID0gJnZpZXcyOwor
ICAgIH0KKworICAgIFFUUllfQ09NUEFSRShRQXBwbGljYXRpb246OmFjdGl2ZVdpbmRvdygpLCBh
Y3RpdmVWaWV3KTsKKworICAgIHdlYlZpZXcyLnBhZ2UoKS0+dHJpZ2dlckFjdGlvbihRV2ViUGFn
ZTo6U2VsZWN0QWxsKTsKKworICAgIFFJbWFnZSBpbWcyKHdlYlZpZXcyLnBhZ2UoKS0+dmlld3Bv
cnRTaXplKCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgUVBhaW50ZXIgcGFpbnRlcjIo
JmltZzIpOworICAgIHdlYlZpZXcyLnBhZ2UoKS0+Y3VycmVudEZyYW1lKCktPnJlbmRlcigmcGFp
bnRlcjIpOworICAgIHBhaW50ZXIyLmVuZCgpOworCisgICAgdmlldzIuY2xvc2UoKTsKKyAgICBj
b250cm9sVmlldy5jbG9zZSgpOworCisgICAgUVZFUklGWShpbWcxICE9IGltZzIpOworfQorI2Vu
ZGlmCisKK3ZvaWQgdHN0X1FHcmFwaGljc1dlYlZpZXc6OnJlbmRlckhpbnRzKCkKK3sKKyAgICBR
R3JhcGhpY3NXZWJWaWV3IHdlYlZpZXc7CisKKyAgICAvLyBkZWZhdWx0IGlzIG9ubHkgdGV4dCBh
bnRpYWxpYXNpbmcgKyBzbW9vdGggcGl4bWFwIHRyYW5zZm9ybQorICAgIFFWRVJJRlkoISh3ZWJW
aWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6QW50aWFsaWFzaW5nKSk7CisgICAgUVZFUklG
WSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6VGV4dEFudGlhbGlhc2luZyk7Cisg
ICAgUVZFUklGWSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6U21vb3RoUGl4bWFw
VHJhbnNmb3JtKTsKKyAgICBRVkVSSUZZKCEod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50
ZXI6OkhpZ2hRdWFsaXR5QW50aWFsaWFzaW5nKSk7CisKKyAgICB3ZWJWaWV3LnNldFJlbmRlckhp
bnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgdHJ1ZSk7CisgICAgUVZFUklGWSh3ZWJWaWV3LnJl
bmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6QW50aWFsaWFzaW5nKTsKKyAgICBRVkVSSUZZKHdlYlZp
ZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpUZXh0QW50aWFsaWFzaW5nKTsKKyAgICBRVkVS
SUZZKHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zv
cm0pOworICAgIFFWRVJJRlkoISh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6SGln
aFF1YWxpdHlBbnRpYWxpYXNpbmcpKTsKKworICAgIHdlYlZpZXcuc2V0UmVuZGVySGludChRUGFp
bnRlcjo6QW50aWFsaWFzaW5nLCBmYWxzZSk7CisgICAgUVZFUklGWSghKHdlYlZpZXcucmVuZGVy
SGludHMoKSAmIFFQYWludGVyOjpBbnRpYWxpYXNpbmcpKTsKKyAgICBRVkVSSUZZKHdlYlZpZXcu
cmVuZGVySGludHMoKSAmIFFQYWludGVyOjpUZXh0QW50aWFsaWFzaW5nKTsKKyAgICBRVkVSSUZZ
KHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0p
OworICAgIFFWRVJJRlkoISh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6SGlnaFF1
YWxpdHlBbnRpYWxpYXNpbmcpKTsKKworICAgIHdlYlZpZXcuc2V0UmVuZGVySGludChRUGFpbnRl
cjo6U21vb3RoUGl4bWFwVHJhbnNmb3JtLCB0cnVlKTsKKyAgICBRVkVSSUZZKCEod2ViVmlldy5y
ZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OkFudGlhbGlhc2luZykpOworICAgIFFWRVJJRlkod2Vi
Vmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlRleHRBbnRpYWxpYXNpbmcpOworICAgIFFW
RVJJRlkod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5z
Zm9ybSk7CisgICAgUVZFUklGWSghKHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpI
aWdoUXVhbGl0eUFudGlhbGlhc2luZykpOworCisgICAgd2ViVmlldy5zZXRSZW5kZXJIaW50KFFQ
YWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0sIGZhbHNlKTsKKyAgICBRVkVSSUZZKHdlYlZp
ZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpUZXh0QW50aWFsaWFzaW5nKTsKKyAgICBRVkVS
SUZZKCEod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5z
Zm9ybSkpOworICAgIFFWRVJJRlkoISh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6
SGlnaFF1YWxpdHlBbnRpYWxpYXNpbmcpKTsKK30KKworY2xhc3MgR3JhcGhpY3NWaWV3IDogcHVi
bGljIFFHcmFwaGljc1ZpZXcgeworcHVibGljOgorICAgIEdyYXBoaWNzVmlldygpOworICAgIFFH
cmFwaGljc1dlYlZpZXcqIG1fd2ViVmlldzsKK307CisKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJH
TCkgJiYgRU5BQkxFX1dFQkdMCitib29sIGNvbXBhcmVJbWFnZXNGdXp6eVBpeGVsQ291bnQoY29u
c3QgUUltYWdlJiBpbWFnZTEsIGNvbnN0IFFJbWFnZSYgaW1hZ2UyLCBxcmVhbCB0b2xlcmFuY2Ug
PSAwLjA1KQoreworICAgIGlmIChpbWFnZTEuc2l6ZSgpICE9IGltYWdlMi5zaXplKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGRpZmZQaXhlbENvdW50ID0gMDsKKyAg
ICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBpbWFnZTEuc2l6ZSgpLndpZHRoKCk7ICsrcm93KSB7
CisgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGltYWdlMS5zaXplKCkuaGVp
Z2h0KCk7ICsrY29sdW1uKQorICAgICAgICAgICAgaWYgKGltYWdlMS5waXhlbChyb3csIGNvbHVt
bikgIT0gaW1hZ2UyLnBpeGVsKHJvdywgY29sdW1uKSkKKyAgICAgICAgICAgICAgICArK2RpZmZQ
aXhlbENvdW50OworICAgIH0KKworICAgIGlmIChkaWZmUGl4ZWxDb3VudCA+IChpbWFnZTEuc2l6
ZSgpLndpZHRoKCkgKiBpbWFnZTEuc2l6ZSgpLmhlaWdodCgpKSAqIHRvbGVyYW5jZSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dyYXBoaWNzVmlldzo6
R3JhcGhpY3NWaWV3KCkKK3sKKyAgICBRR3JhcGhpY3NTY2VuZSogY29uc3Qgc2NlbmUgPSBuZXcg
UUdyYXBoaWNzU2NlbmUodGhpcyk7CisgICAgc2V0U2NlbmUoc2NlbmUpOworCisgICAgbV93ZWJW
aWV3ID0gbmV3IFFHcmFwaGljc1dlYlZpZXc7CisgICAgc2NlbmUtPmFkZEl0ZW0obV93ZWJWaWV3
KTsKKworICAgIG1fd2ViVmlldy0+cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdl
YlNldHRpbmdzOjpXZWJHTEVuYWJsZWQsIHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0UmVzaXpl
c1RvQ29udGVudHModHJ1ZSk7CisKKyAgICBzZXRGcmFtZVNoYXBlKFFGcmFtZTo6Tm9GcmFtZSk7
CisgICAgc2V0Vmlld3BvcnQobmV3IFFHTFdpZGdldCk7Cit9CisKK3ZvaWQgdHN0X1FHcmFwaGlj
c1dlYlZpZXc6OndlYmdsU29mdHdhcmVGYWxsYmFja1ZlcnRpY2FsT3JpZW50YXRpb24oKQorewor
ICAgIFFTS0lQKCJIYW5ncyBvbiBYMTEgLS0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNTgyMCIpOworICAgIFFTaXplIGNhbnZhc1NpemUoMTAwLCAxMDApOworICAg
IFFJbWFnZSByZWZlcmVuY2UoY2FudmFzU2l6ZSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAg
ICByZWZlcmVuY2UuZmlsbCgweEZGMDBGRjAwKTsKKyAgICB7IC8vIFJlZmVyZW5jZS4KKyAgICAg
ICAgUVBhaW50ZXIgcGFpbnRlcigmcmVmZXJlbmNlKTsKKyAgICAgICAgUVBvbHlnb25GIHRyaWFu
Z2xlVXA7CisgICAgICAgIHRyaWFuZ2xlVXAgPDwgUVBvaW50RigwLCBjYW52YXNTaXplLmhlaWdo
dCgpKQorICAgICAgICAgICAgICAgICAgIDw8IFFQb2ludEYoY2FudmFzU2l6ZS53aWR0aCgpLCBj
YW52YXNTaXplLmhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgIDw8IFFQb2ludEYoY2FudmFz
U2l6ZS53aWR0aCgpIC8gMi4wLCBjYW52YXNTaXplLmhlaWdodCgpIC8gMi4wKTsKKyAgICAgICAg
cGFpbnRlci5zZXRQZW4oUXQ6Ok5vUGVuKTsKKyAgICAgICAgcGFpbnRlci5zZXRCcnVzaChRdDo6
cmVkKTsKKyAgICAgICAgcGFpbnRlci5kcmF3UG9seWdvbih0cmlhbmdsZVVwKTsKKyAgICB9CisK
KyAgICBjb21wYXJlQ2FudmFzVG9JbWFnZShRVXJsKFFMYXRpbjFTdHJpbmcoInFyYzovLy9yZXNv
dXJjZXMvcG9pbnRpbmdfdXAuaHRtbCIpKSwgcmVmZXJlbmNlKTsKK30KKwordm9pZCB0c3RfUUdy
YXBoaWNzV2ViVmlldzo6d2ViZ2xTb2Z0d2FyZUZhbGxiYWNrSG9yaXpvbnRhbE9yaWVudGF0aW9u
KCkKK3sKKyAgICBRU0tJUCgiSGFuZ3Mgb24gWDExIC0tIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDU4MjAiKTsKKyAgICBRU2l6ZSBjYW52YXNTaXplKDEwMCwgMTAw
KTsKKyAgICBRSW1hZ2UgcmVmZXJlbmNlKGNhbnZhc1NpemUsIFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
Mik7CisgICAgcmVmZXJlbmNlLmZpbGwoMHhGRjAwRkYwMCk7CisgICAgeyAvLyBSZWZlcmVuY2Uu
CisgICAgICAgIFFQYWludGVyIHBhaW50ZXIoJnJlZmVyZW5jZSk7CisgICAgICAgIFFQb2x5Z29u
RiB0cmlhbmdsZVVwOworICAgICAgICB0cmlhbmdsZVVwIDw8IFFQb2ludEYoMCwgMCkKKyAgICAg
ICAgICAgICAgICAgICA8PCBRUG9pbnRGKDAsIGNhbnZhc1NpemUuaGVpZ2h0KCkpCisgICAgICAg
ICAgICAgICAgICAgPDwgUVBvaW50RihjYW52YXNTaXplLndpZHRoKCkgLyAyLjAsIGNhbnZhc1Np
emUuaGVpZ2h0KCkgLyAyLjApOworICAgICAgICBwYWludGVyLnNldFBlbihRdDo6Tm9QZW4pOwor
ICAgICAgICBwYWludGVyLnNldEJydXNoKFF0OjpyZWQpOworICAgICAgICBwYWludGVyLmRyYXdQ
b2x5Z29uKHRyaWFuZ2xlVXApOworICAgIH0KKworICAgIGNvbXBhcmVDYW52YXNUb0ltYWdlKFFV
cmwoUUxhdGluMVN0cmluZygicXJjOi8vL3Jlc291cmNlcy9wb2ludGluZ19yaWdodC5odG1sIikp
LCByZWZlcmVuY2UpOworfQorCit2b2lkIHRzdF9RR3JhcGhpY3NXZWJWaWV3Ojpjb21wYXJlQ2Fu
dmFzVG9JbWFnZShjb25zdCBRVXJsJiB1cmwsIGNvbnN0IFFJbWFnZSYgcmVmZXJlbmNlKQorewor
ICAgIEdyYXBoaWNzVmlldyB2aWV3OworICAgIHZpZXcuc2hvdygpOworICAgIFFUZXN0OjpxV2Fp
dEZvcldpbmRvd0V4cG9zZWQoJnZpZXcpOworCisgICAgUUdyYXBoaWNzV2ViVmlldyogY29uc3Qg
Z3JhcGhpY3NXZWJWaWV3ID0gdmlldy5tX3dlYlZpZXc7CisgICAgZ3JhcGhpY3NXZWJWaWV3LT5s
b2FkKHVybCk7CisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKGdyYXBoaWNzV2ViVmlldywgU0lH
TkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKyAgICB7IC8vIEZvcmNlIGEgcmVuZGVyLCB0byBj
cmVhdGUgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHRyZWUuCisgICAgICAgIFFQaXhtYXAg
cGl4bWFwKHZpZXcuc2l6ZSgpKTsKKyAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigmcGl4bWFwKTsK
KyAgICAgICAgdmlldy5yZW5kZXIoJnBhaW50ZXIpOworICAgIH0KKworICAgIGNvbnN0IFFTaXpl
IGltYWdlU2l6ZSA9IHJlZmVyZW5jZS5zaXplKCk7CisKKyAgICBRSW1hZ2UgdGFyZ2V0KGltYWdl
U2l6ZSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICB7IC8vIFdlYiBwYWdlIGNvbnRlbnQu
CisgICAgICAgIFFQYWludGVyIHBhaW50ZXIoJnRhcmdldCk7CisgICAgICAgIFFSZWN0RiByZW5k
ZXJSZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOworICAg
ICAgICB2aWV3LnNjZW5lKCktPnJlbmRlcigmcGFpbnRlciwgcmVuZGVyUmVjdCwgcmVuZGVyUmVj
dCk7CisgICAgfQorICAgIFFWRVJJRlkoY29tcGFyZUltYWdlc0Z1enp5UGl4ZWxDb3VudCh0YXJn
ZXQsIHJlZmVyZW5jZSwgMC4wMSkpOworfQorI2VuZGlmCisKK2NsYXNzIFJlc2l6ZVNweSA6IHB1
YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBy
ZWNlaXZlUmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fc2l6
ZSA9IFFTaXplKHdpZHRoLCBoZWlnaHQpOworICAgICAgICBlbWl0IHJlc2l6ZWQoKTsKKyAgICB9
CisKKyAgICBRU2l6ZSBzaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NpemU7
CisgICAgfQorCitRX1NJR05BTFM6CisgICAgdm9pZCByZXNpemVkKCk7CisKK3ByaXZhdGU6Cisg
ICAgUVNpemUgbV9zaXplOworfTsKKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6d2luZG93
UmVzaXplRXZlbnQoKQoreworICAgIFFHcmFwaGljc1dlYlZpZXcgd2ViVmlldzsKKyAgICBSZXNp
emVTcHkgcmVzaXplU3B5OworICAgIHJlc2l6ZVNweS5zZXRQcm9wZXJ0eSgicmVzaXplQ291bnQi
LCAwKTsKKworICAgIFFTdHJpbmcgaHRtbCA9ICI8aHRtbD48Ym9keT48c2NyaXB0PiIKKyAgICAg
ICAgICAgICAgICAgICAiZnVuY3Rpb24gb25SZXNpemUoKSB7IHdpbmRvdy5yZXNpemVTcHkucmVj
ZWl2ZVJlc2l6ZSh3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0KTsgfSIKKyAg
ICAgICAgICAgICAgICAgICAid2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVz
aXplICwgZmFsc2UpOyIKKyAgICAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+PC9ib2R5PjwvaHRt
bD4iOworCisgICAgd2ViVmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0bWwpOwor
ICAgIHdlYlZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+YWRkVG9KYXZhU2NyaXB0V2luZG93T2Jq
ZWN0KCJyZXNpemVTcHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZyZXNpemVTcHkpOworICAgIHdlYlZpZXcuc2V0R2VvbWV0
cnkoUVJlY3QoMCwgMCwgNTAsIDUwKSk7CisgICAgUUVYUEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY3MCIsIENvbnRpbnVlKTsKKyAgICBR
VkVSSUZZKDo6d2FpdEZvclNpZ25hbCgmcmVzaXplU3B5LCBTSUdOQUwocmVzaXplZCgpKSwgMTAw
MCkpOworICAgIFFDT01QQVJFKHJlc2l6ZVNweS5zaXplKCksIFFTaXplKDUwLCA1MCkpOworCisg
ICAgd2ViVmlldy5wYWdlKCktPnNldEFjdHVhbFZpc2libGVDb250ZW50UmVjdChRUmVjdCgxMCwg
MTAsIDYwLCA2MCkpOworICAgIHdlYlZpZXcuc2V0R2VvbWV0cnkoUVJlY3QoMCwgMCwgMTAwLCAx
MDApKTsKKyAgICB3YWl0Rm9yU2lnbmFsKCZyZXNpemVTcHksIFNJR05BTChyZXNpemVkKCkpLCAx
MDAwKTsKKworICAgIC8vIFRoaXMgd2lsbCBiZSB0cmlnZ2VyZWQgd2l0aG91dCB0aGUgZml4IG9u
IERPTVdpbmRvdzo6aW5uZXJIZWlnaHQvV2lkdGgKKyAgICBRQ09NUEFSRShyZXNpemVTcHkuc2l6
ZSgpLCBRU2l6ZSg2MCwgNjApKTsKK30KKwordm9pZCB0c3RfUUdyYXBoaWNzV2ViVmlldzo6aG9y
aXpvbnRhbFNjcm9sbGJhclRlc3QoKQoreworICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQ
YWdlOworICAgIEdyYXBoaWNzV2ViVmlldyogd2ViVmlldyA9IG5ldyBHcmFwaGljc1dlYlZpZXc7
CisgICAgd2ViVmlldy0+c2V0UGFnZShwYWdlKTsKKyAgICB3ZWJWaWV3LT5zZXRHZW9tZXRyeShR
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOworICAgIFFHcmFwaGljc1ZpZXcqIHZpZXcgPSBuZXcgUUdy
YXBoaWNzVmlldzsKKyAgICBRR3JhcGhpY3NTY2VuZSogc2NlbmUgPSBuZXcgUUdyYXBoaWNzU2Nl
bmUodmlldyk7CisgICAgdmlldy0+c2V0U2NlbmUoc2NlbmUpOworICAgIHNjZW5lLT5hZGRJdGVt
KHdlYlZpZXcpOworCisgICAgLy8gVHVybiBvZmYgc2Nyb2xsaW5nIG9uIHRoZSBjb250YWluaW5n
IFFHcmFwaGljc1ZpZXcsIGxldCB0aGUKKyAgICAvLyBRR3JhcGhpY3NXZWJWaWV3IGhhbmRsZSB0
aGUgc2Nyb2xsaW5nIGJ5IGl0c2VsZi4KKyAgICB2aWV3LT5zZXRIb3Jpem9udGFsU2Nyb2xsQmFy
UG9saWN5KFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOworICAgIHZpZXctPnNldFZlcnRpY2FsU2Ny
b2xsQmFyUG9saWN5KFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOworICAgIHZpZXctPnNob3coKTsK
KyAgICBRQ29yZUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZlbnRzKCk7CisKKyAgICBRVXJsIHVybCgi
cXJjOi8vL3Jlc291cmNlcy9zY3JvbGx0ZXN0X3BhZ2UuaHRtbCIpOworICAgIHBhZ2UtPm1haW5G
cmFtZSgpLT5sb2FkKHVybCk7CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPnNldEZvY3VzKCk7CisK
KyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwocGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29s
KSkpKTsKKworICAgIFFWRVJJRlkod2ViVmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+c2Nyb2xs
UG9zaXRpb24oKSA9PSBRUG9pbnQoMCwgMCkpOworCisgICAgLy8gTm90ZTogVGhlIHRlc3QgYmVs
b3cgYXNzdW1lcyB0aGF0IHRoZSBsYXlvdXQgZGlyZWN0aW9uIGlzIFF0OjpMZWZ0VG9SaWdodC4K
KyAgICB3ZWJWaWV3LT5maXJlTW91c2VDbGljayhRUG9pbnRGKDU1MC4wLCA1OTAuMCkpOworICAg
IFFWRVJJRlkocGFnZS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkueCgpID4gMCk7CisK
KyAgICAvLyBOb3RlOiBUaGUgdGVzdCBiZWxvdyBhc3N1bWVzIHRoYXQgdGhlIGxheW91dCBkaXJl
Y3Rpb24gaXMgUXQ6OkxlZnRUb1JpZ2h0LgorICAgIHdlYlZpZXctPmZpcmVNb3VzZUNsaWNrKFFQ
b2ludEYoMjAuMCwgNTkwLjApKTsKKyAgICBRVkVSSUZZKHBhZ2UtPm1haW5GcmFtZSgpLT5zY3Jv
bGxQb3NpdGlvbigpID09IFFQb2ludCgwLCAwKSk7CisKKyAgICBkZWxldGUgd2ViVmlldzsKKyAg
ICBkZWxldGUgdmlldzsKK30KKworUVRFU1RfTUFJTih0c3RfUUdyYXBoaWNzV2ViVmlldykKKwor
I2luY2x1ZGUgInRzdF9xZ3JhcGhpY3N3ZWJ2aWV3Lm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcWdyYXBoaWNzd2Vidmlldy90c3RfcWdyYXBoaWNzd2Vidmlldy5xcmMg
Yi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcvdHN0X3FncmFwaGljc3dl
YnZpZXcucXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMDZiZDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FncmFwaGljc3dlYnZpZXcv
dHN0X3FncmFwaGljc3dlYnZpZXcucXJjCkBAIC0wLDAgKzEsOSBAQAorPFJDQz4KKyAgICA8cXJl
c291cmNlIHByZWZpeD0iLyI+CisgICAgICAgIDxmaWxlPnJlc291cmNlcy9pbnB1dF90eXBlcy5o
dG1sPC9maWxlPgorICAgICAgICA8ZmlsZT5yZXNvdXJjZXMvcG9pbnRpbmdfcmlnaHQuaHRtbDwv
ZmlsZT4KKyAgICAgICAgPGZpbGU+cmVzb3VyY2VzL3BvaW50aW5nX3VwLmh0bWw8L2ZpbGU+Cisg
ICAgICAgIDxmaWxlPnJlc291cmNlcy9ncmVlbmRpdi5odG1sPC9maWxlPgorICAgICAgICA8Zmls
ZT5yZXNvdXJjZXMvc2Nyb2xsdGVzdF9wYWdlLmh0bWw8L2ZpbGU+CisgICAgPC9xcmVzb3VyY2U+
Cis8L1JDQz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcW9iamVjdGJyaWRn
ZS9xb2JqZWN0YnJpZGdlLnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcW9iamVjdGJyaWRn
ZS9xb2JqZWN0YnJpZGdlLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
NDM0Y2NiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xb2JqZWN0
YnJpZGdlL3FvYmplY3RicmlkZ2UucHJvCkBAIC0wLDAgKzEsMyBAQAoraW5jbHVkZSguLi90ZXN0
cy5wcmkpCitleGlzdHMoJCR7VEFSR0VUfS5xcmMpOlJFU09VUkNFUyArPSAkJHtUQVJHRVR9LnFy
YworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3FvYmplY3RicmlkZ2UvdHN0
X3FvYmplY3RicmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdl
L3RzdF9xb2JqZWN0YnJpZGdlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41MmU2NDIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xb2Jq
ZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcApAQCAtMCwwICsxLDIyMzggQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKKyNpbmNsdWRl
IDxxYnJ1c2guaD4KKyNpbmNsdWRlIDxxd2ViZWxlbWVudC5oPgorI2luY2x1ZGUgPHF3ZWJmcmFt
ZS5oPgorI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CisjaW5jbHVkZSA8cXdlYnZpZXcuaD4KKworc3Ry
dWN0IEN1c3RvbVR5cGUgeworICAgIFFTdHJpbmcgc3RyaW5nOworfTsKK1FfREVDTEFSRV9NRVRB
VFlQRShDdXN0b21UeXBlKQorCitRX0RFQ0xBUkVfTUVUQVRZUEUoUUJydXNoKikKK1FfREVDTEFS
RV9NRVRBVFlQRShRT2JqZWN0TGlzdCkKK1FfREVDTEFSRV9NRVRBVFlQRShRTGlzdDxpbnQ+KQor
UV9ERUNMQVJFX01FVEFUWVBFKFFWYXJpYW50TGlzdCkKK1FfREVDTEFSRV9NRVRBVFlQRShRVmFy
aWFudE1hcCkKKworY2xhc3MgTXlRT2JqZWN0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JK
RUNUCisKKyAgICBRX1BST1BFUlRZKGludCBpbnRQcm9wZXJ0eSBSRUFEIGludFByb3BlcnR5IFdS
SVRFIHNldEludFByb3BlcnR5KQorICAgIFFfUFJPUEVSVFkoUVZhcmlhbnQgdmFyaWFudFByb3Bl
cnR5IFJFQUQgdmFyaWFudFByb3BlcnR5IFdSSVRFIHNldFZhcmlhbnRQcm9wZXJ0eSkKKyAgICBR
X1BST1BFUlRZKFFWYXJpYW50TGlzdCB2YXJpYW50TGlzdFByb3BlcnR5IFJFQUQgdmFyaWFudExp
c3RQcm9wZXJ0eSBXUklURSBzZXRWYXJpYW50TGlzdFByb3BlcnR5KQorICAgIFFfUFJPUEVSVFko
UVZhcmlhbnRNYXAgdmFyaWFudE1hcFByb3BlcnR5IFJFQUQgdmFyaWFudE1hcFByb3BlcnR5IFdS
SVRFIHNldFZhcmlhbnRNYXBQcm9wZXJ0eSkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgc3RyaW5n
UHJvcGVydHkgUkVBRCBzdHJpbmdQcm9wZXJ0eSBXUklURSBzZXRTdHJpbmdQcm9wZXJ0eSkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmdMaXN0IHN0cmluZ0xpc3RQcm9wZXJ0eSBSRUFEIHN0cmluZ0xp
c3RQcm9wZXJ0eSBXUklURSBzZXRTdHJpbmdMaXN0UHJvcGVydHkpCisgICAgUV9QUk9QRVJUWShR
Qnl0ZUFycmF5IGJ5dGVBcnJheVByb3BlcnR5IFJFQUQgYnl0ZUFycmF5UHJvcGVydHkgV1JJVEUg
c2V0Qnl0ZUFycmF5UHJvcGVydHkpCisgICAgUV9QUk9QRVJUWShRQnJ1c2ggYnJ1c2hQcm9wZXJ0
eSBSRUFEIGJydXNoUHJvcGVydHkgV1JJVEUgc2V0QnJ1c2hQcm9wZXJ0eSkKKyAgICBRX1BST1BF
UlRZKGRvdWJsZSBoaWRkZW5Qcm9wZXJ0eSBSRUFEIGhpZGRlblByb3BlcnR5IFdSSVRFIHNldEhp
ZGRlblByb3BlcnR5IFNDUklQVEFCTEUgZmFsc2UpCisgICAgUV9QUk9QRVJUWShpbnQgd3JpdGVP
bmx5UHJvcGVydHkgV1JJVEUgc2V0V3JpdGVPbmx5UHJvcGVydHkpCisgICAgUV9QUk9QRVJUWShp
bnQgcmVhZE9ubHlQcm9wZXJ0eSBSRUFEIHJlYWRPbmx5UHJvcGVydHkpCisgICAgUV9QUk9QRVJU
WShRS2V5U2VxdWVuY2Ugc2hvcnRjdXQgUkVBRCBzaG9ydGN1dCBXUklURSBzZXRTaG9ydGN1dCkK
KyAgICBRX1BST1BFUlRZKEN1c3RvbVR5cGUgcHJvcFdpdGhDdXN0b21UeXBlIFJFQUQgcHJvcFdp
dGhDdXN0b21UeXBlIFdSSVRFIHNldFByb3BXaXRoQ3VzdG9tVHlwZSkKKyAgICBRX1BST1BFUlRZ
KFFXZWJFbGVtZW50IHdlYkVsZW1lbnRQcm9wZXJ0eSBSRUFEIHdlYkVsZW1lbnRQcm9wZXJ0eSBX
UklURSBzZXRXZWJFbGVtZW50UHJvcGVydHkpCisgICAgUV9QUk9QRVJUWShRT2JqZWN0KiBvYmpl
Y3RTdGFyUHJvcGVydHkgUkVBRCBvYmplY3RTdGFyUHJvcGVydHkgV1JJVEUgc2V0T2JqZWN0U3Rh
clByb3BlcnR5KQorICAgIFFfRU5VTVMoUG9saWN5IFN0cmF0ZWd5KQorICAgIFFfRkxBR1MoQWJp
bGl0eSkKKworcHVibGljOgorICAgIGVudW0gUG9saWN5IHsKKyAgICAgICAgRm9vUG9saWN5ID0g
MCwKKyAgICAgICAgQmFyUG9saWN5LAorICAgICAgICBCYXpQb2xpY3kKKyAgICB9OworCisgICAg
ZW51bSBTdHJhdGVneSB7CisgICAgICAgIEZvb1N0cmF0ZWd5ID0gMTAsCisgICAgICAgIEJhclN0
cmF0ZWd5LAorICAgICAgICBCYXpTdHJhdGVneQorICAgIH07CisKKyAgICBlbnVtIEFiaWxpdHlG
bGFnIHsKKyAgICAgICAgTm9BYmlsaXR5ICA9IDB4MDAwLAorICAgICAgICBGb29BYmlsaXR5ID0g
MHgwMDEsCisgICAgICAgIEJhckFiaWxpdHkgPSAweDA4MCwKKyAgICAgICAgQmF6QWJpbGl0eSA9
IDB4MjAwLAorICAgICAgICBBbGxBYmlsaXR5ID0gRm9vQWJpbGl0eSB8IEJhckFiaWxpdHkgfCBC
YXpBYmlsaXR5CisgICAgfTsKKworICAgIFFfREVDTEFSRV9GTEFHUyhBYmlsaXR5LCBBYmlsaXR5
RmxhZykKKworICAgIE15UU9iamVjdChRT2JqZWN0KiBwYXJlbnQgPSAwKQorICAgICAgICA6IFFP
YmplY3QocGFyZW50KSwKKyAgICAgICAgICAgIG1faW50VmFsdWUoMTIzKSwKKyAgICAgICAgICAg
IG1fdmFyaWFudFZhbHVlKFFMYXRpbjFTdHJpbmcoImZvbyIpKSwKKyAgICAgICAgICAgIG1fdmFy
aWFudExpc3RWYWx1ZShRVmFyaWFudExpc3QoKSA8PCBRVmFyaWFudCgxMjMpIDw8IFFWYXJpYW50
KFFMYXRpbjFTdHJpbmcoImZvbyIpKSksCisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlKFFMYXRp
bjFTdHJpbmcoImJhciIpKSwKKyAgICAgICAgICAgIG1fc3RyaW5nTGlzdFZhbHVlKFFTdHJpbmdM
aXN0KCkgPDwgUUxhdGluMVN0cmluZygiemlnIikgPDwgUUxhdGluMVN0cmluZygiemFnIikpLAor
ICAgICAgICAgICAgbV9icnVzaFZhbHVlKFFDb2xvcigxMCwgMjAsIDMwLCA0MCkpLAorICAgICAg
ICAgICAgbV9oaWRkZW5WYWx1ZSg0NTYuMCksCisgICAgICAgICAgICBtX3dyaXRlT25seVZhbHVl
KDc4OSksCisgICAgICAgICAgICBtX3JlYWRPbmx5VmFsdWUoOTg3KSwKKyAgICAgICAgICAgIG1f
b2JqZWN0U3RhcigwKSwKKyAgICAgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQoLTEpCisgICAg
eworICAgICAgICBtX3ZhcmlhbnRNYXBWYWx1ZS5pbnNlcnQoImEiLCBRVmFyaWFudCgxMjMpKTsK
KyAgICAgICAgbV92YXJpYW50TWFwVmFsdWUuaW5zZXJ0KCJiIiwgUVZhcmlhbnQoUUxhdGluMVN0
cmluZygiZm9vIikpKTsKKyAgICAgICAgbV92YXJpYW50TWFwVmFsdWUuaW5zZXJ0KCJjIiwgUVZh
cmlhbnQ6OmZyb21WYWx1ZTxRT2JqZWN0Kj4odGhpcykpOworICAgIH0KKworICAgIH5NeVFPYmpl
Y3QoKSB7IH0KKworICAgIGludCBpbnRQcm9wZXJ0eSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pbnRWYWx1ZTsKKyAgICB9CisgICAgdm9pZCBzZXRJbnRQcm9wZXJ0eShpbnQgdmFs
dWUpCisgICAgeworICAgICAgICBtX2ludFZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgUVZh
cmlhbnQgdmFyaWFudFByb3BlcnR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Zh
cmlhbnRWYWx1ZTsKKyAgICB9CisgICAgdm9pZCBzZXRWYXJpYW50UHJvcGVydHkoY29uc3QgUVZh
cmlhbnQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV92YXJpYW50VmFsdWUgPSB2YWx1ZTsKKyAg
ICB9CisKKyAgICBRVmFyaWFudExpc3QgdmFyaWFudExpc3RQcm9wZXJ0eSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV92YXJpYW50TGlzdFZhbHVlOworICAgIH0KKyAgICB2b2lkIHNl
dFZhcmlhbnRMaXN0UHJvcGVydHkoY29uc3QgUVZhcmlhbnRMaXN0JiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIG1fdmFyaWFudExpc3RWYWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIFFWYXJpYW50
TWFwIHZhcmlhbnRNYXBQcm9wZXJ0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92
YXJpYW50TWFwVmFsdWU7CisgICAgfQorICAgIHZvaWQgc2V0VmFyaWFudE1hcFByb3BlcnR5KGNv
bnN0IFFWYXJpYW50TWFwJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fdmFyaWFudE1hcFZhbHVl
ID0gdmFsdWU7CisgICAgfQorCisgICAgUVN0cmluZyBzdHJpbmdQcm9wZXJ0eSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9zdHJpbmdWYWx1ZTsKKyAgICB9CisgICAgdm9pZCBzZXRT
dHJpbmdQcm9wZXJ0eShjb25zdCBRU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fc3Ry
aW5nVmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBRU3RyaW5nTGlzdCBzdHJpbmdMaXN0UHJv
cGVydHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nTGlzdFZhbHVlOwor
ICAgIH0KKyAgICB2b2lkIHNldFN0cmluZ0xpc3RQcm9wZXJ0eShjb25zdCBRU3RyaW5nTGlzdCYg
dmFsdWUpCisgICAgeworICAgICAgICBtX3N0cmluZ0xpc3RWYWx1ZSA9IHZhbHVlOworICAgIH0K
KworICAgIFFCeXRlQXJyYXkgYnl0ZUFycmF5UHJvcGVydHkoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYnl0ZUFycmF5VmFsdWU7CisgICAgfQorICAgIHZvaWQgc2V0Qnl0ZUFycmF5
UHJvcGVydHkoY29uc3QgUUJ5dGVBcnJheSYgdmFsdWUpCisgICAgeworICAgICAgICBtX2J5dGVB
cnJheVZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgUUJydXNoIGJydXNoUHJvcGVydHkoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnJ1c2hWYWx1ZTsKKyAgICB9CisgICAgdm9p
ZCBzZXRCcnVzaFByb3BlcnR5KGNvbnN0IFFCcnVzaCYgdmFsdWUpCisgICAgeworICAgICAgICBt
X2JydXNoVmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBkb3VibGUgaGlkZGVuUHJvcGVydHko
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faGlkZGVuVmFsdWU7CisgICAgfQorICAg
IHZvaWQgc2V0SGlkZGVuUHJvcGVydHkoZG91YmxlIHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9o
aWRkZW5WYWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIGludCB3cml0ZU9ubHlQcm9wZXJ0eSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV93cml0ZU9ubHlWYWx1ZTsKKyAgICB9Cisg
ICAgdm9pZCBzZXRXcml0ZU9ubHlQcm9wZXJ0eShpbnQgdmFsdWUpCisgICAgeworICAgICAgICBt
X3dyaXRlT25seVZhbHVlID0gdmFsdWU7CisgICAgfQorCisgICAgaW50IHJlYWRPbmx5UHJvcGVy
dHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVhZE9ubHlWYWx1ZTsKKyAgICB9
CisKKyAgICBRS2V5U2VxdWVuY2Ugc2hvcnRjdXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc2hvcnRjdXQ7CisgICAgfQorICAgIHZvaWQgc2V0U2hvcnRjdXQoY29uc3QgUUtleVNl
cXVlbmNlJiBzZXEpCisgICAgeworICAgICAgICBtX3Nob3J0Y3V0ID0gc2VxOworICAgIH0KKwor
ICAgIFFXZWJFbGVtZW50IHdlYkVsZW1lbnRQcm9wZXJ0eSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV93ZWJFbGVtZW50OworICAgIH0KKyAgICB2b2lkIHNldFdlYkVsZW1lbnRQcm9w
ZXJ0eShjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkKKyAgICB7CisgICAgICAgIG1fd2ViRWxl
bWVudCA9IGVsZW1lbnQ7CisgICAgfQorCisgICAgQ3VzdG9tVHlwZSBwcm9wV2l0aEN1c3RvbVR5
cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY3VzdG9tVHlwZTsKKyAgICB9Cisg
ICAgdm9pZCBzZXRQcm9wV2l0aEN1c3RvbVR5cGUoY29uc3QgQ3VzdG9tVHlwZSYgYykKKyAgICB7
CisgICAgICAgIG1fY3VzdG9tVHlwZSA9IGM7CisgICAgfQorCisgICAgUU9iamVjdCogb2JqZWN0
U3RhclByb3BlcnR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX29iamVjdFN0YXI7
CisgICAgfQorICAgIHZvaWQgc2V0T2JqZWN0U3RhclByb3BlcnR5KFFPYmplY3QqIG9iamVjdCkK
KyAgICB7CisgICAgICAgIG1fb2JqZWN0U3RhciA9IG9iamVjdDsKKyAgICB9CisKKworICAgIGlu
dCBxdEZ1bmN0aW9uSW52b2tlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9xdEZ1
bmN0aW9uSW52b2tlZDsKKyAgICB9CisKKyAgICBRVmFyaWFudExpc3QgcXRGdW5jdGlvbkFjdHVh
bHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWN0dWFsczsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc2V0UXRGdW5jdGlvbkludm9rZWQoKQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0
aW9uSW52b2tlZCA9IC0xOworICAgICAgICBtX2FjdHVhbHMuY2xlYXIoKTsKKyAgICB9CisKKyAg
ICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxlKCkKKyAgICB7CisgICAgICAgIG1fcXRGdW5j
dGlvbkludm9rZWQgPSAwOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxl
V2l0aEludEFyZyhpbnQgYXJnKQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9
IDE7CisgICAgICAgIG1fYWN0dWFscyA8PCBhcmc7CisgICAgfQorICAgIFFfSU5WT0tBQkxFIHZv
aWQgbXlJbnZva2FibGVXaXRoTG9uZ2xvbmdBcmcocWxvbmdsb25nIGFyZykKKyAgICB7CisgICAg
ICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAyOworICAgICAgICBtX2FjdHVhbHMgPDwgYXJnOwor
ICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxlV2l0aEZsb2F0QXJnKGZsb2F0
IGFyZykKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAzOworICAgICAgICBt
X2FjdHVhbHMgPDwgYXJnOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxl
V2l0aERvdWJsZUFyZyhkb3VibGUgYXJnKQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52
b2tlZCA9IDQ7CisgICAgICAgIG1fYWN0dWFscyA8PCBhcmc7CisgICAgfQorICAgIFFfSU5WT0tB
QkxFIHZvaWQgbXlJbnZva2FibGVXaXRoU3RyaW5nQXJnKGNvbnN0IFFTdHJpbmcmIGFyZykKKyAg
ICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSA1OworICAgICAgICBtX2FjdHVhbHMg
PDwgYXJnOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxlV2l0aEludEFy
Z3MoaW50IGFyZzEsIGludCBhcmcyKQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tl
ZCA9IDY7CisgICAgICAgIG1fYWN0dWFscyA8PCBhcmcxIDw8IGFyZzI7CisgICAgfQorICAgIFFf
SU5WT0tBQkxFIGludCBteUludm9rYWJsZVJldHVybmluZ0ludCgpCisgICAgeworICAgICAgICBt
X3F0RnVuY3Rpb25JbnZva2VkID0gNzsKKyAgICAgICAgcmV0dXJuIDEyMzsKKyAgICB9CisgICAg
UV9JTlZPS0FCTEUgcWxvbmdsb25nIG15SW52b2thYmxlUmV0dXJuaW5nTG9uZ0xvbmcoKQorICAg
IHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDM5OworICAgICAgICByZXR1cm4gNDU2
OworICAgIH0KKyAgICBRX0lOVk9LQUJMRSBRU3RyaW5nIG15SW52b2thYmxlUmV0dXJuaW5nU3Ry
aW5nKCkKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSA4OworICAgICAgICBy
ZXR1cm4gUUxhdGluMVN0cmluZygiY2lhbyIpOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lk
IG15SW52b2thYmxlV2l0aEludEFyZyhpbnQgYXJnMSwgaW50IGFyZzIpIC8vIE92ZXJsb2FkLgor
ICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDk7CisgICAgICAgIG1fYWN0dWFs
cyA8PCBhcmcxIDw8IGFyZzI7CisgICAgfQorICAgIFFfSU5WT0tBQkxFIHZvaWQgbXlJbnZva2Fi
bGVXaXRoRW51bUFyZyhQb2xpY3kgcG9saWN5KQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9u
SW52b2tlZCA9IDEwOworICAgICAgICBtX2FjdHVhbHMgPDwgcG9saWN5OworICAgIH0KKyAgICBR
X0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxlV2l0aFF1YWxpZmllZEVudW1BcmcoTXlRT2JqZWN0
OjpQb2xpY3kgcG9saWN5KQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDM2
OworICAgICAgICBtX2FjdHVhbHMgPDwgcG9saWN5OworICAgIH0KKyAgICBRX0lOVk9LQUJMRSBQ
b2xpY3kgbXlJbnZva2FibGVSZXR1cm5pbmdFbnVtKCkKKyAgICB7CisgICAgICAgIG1fcXRGdW5j
dGlvbkludm9rZWQgPSAzNzsKKyAgICAgICAgcmV0dXJuIEJhelBvbGljeTsKKyAgICB9CisgICAg
UV9JTlZPS0FCTEUgTXlRT2JqZWN0OjpQb2xpY3kgbXlJbnZva2FibGVSZXR1cm5pbmdRdWFsaWZp
ZWRFbnVtKCkKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAzODsKKyAgICAg
ICAgcmV0dXJuIEJhelBvbGljeTsKKyAgICB9CisgICAgUV9JTlZPS0FCTEUgUVZlY3RvcjxpbnQ+
IG15SW52b2thYmxlUmV0dXJuaW5nVmVjdG9yT2ZJbnQoKQorICAgIHsKKyAgICAgICAgbV9xdEZ1
bmN0aW9uSW52b2tlZCA9IDExOworICAgICAgICByZXR1cm4gUVZlY3RvcjxpbnQ+KCk7CisgICAg
fQorICAgIFFfSU5WT0tBQkxFIHZvaWQgbXlJbnZva2FibGVXaXRoVmVjdG9yT2ZJbnRBcmcoY29u
c3QgUVZlY3RvcjxpbnQ+JikKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAx
MjsKKyAgICB9CisgICAgUV9JTlZPS0FCTEUgUU9iamVjdCogbXlJbnZva2FibGVSZXR1cm5pbmdR
T2JqZWN0U3RhcigpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZva2VkID0gMTM7Cisg
ICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSBRT2JqZWN0TGlzdCBt
eUludm9rYWJsZVdpdGhRT2JqZWN0TGlzdEFyZyhjb25zdCBRT2JqZWN0TGlzdCYgbHN0KQorICAg
IHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDE0OworICAgICAgICBtX2FjdHVhbHMg
PDwgUVZhcmlhbnQ6OmZyb21WYWx1ZShsc3QpOworICAgICAgICByZXR1cm4gbHN0OworICAgIH0K
KyAgICBRX0lOVk9LQUJMRSBRVmFyaWFudCBteUludm9rYWJsZVdpdGhWYXJpYW50QXJnKGNvbnN0
IFFWYXJpYW50JiB2KQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDE1Owor
ICAgICAgICBtX2FjdHVhbHMgPDwgdjsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorICAgIFFf
SU5WT0tBQkxFIFFWYXJpYW50TWFwIG15SW52b2thYmxlV2l0aFZhcmlhbnRNYXBBcmcoY29uc3Qg
UVZhcmlhbnRNYXAmIHZtKQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDE2
OworICAgICAgICBtX2FjdHVhbHMgPDwgdm07CisgICAgICAgIHJldHVybiB2bTsKKyAgICB9Cisg
ICAgUV9JTlZPS0FCTEUgUUxpc3Q8aW50PiBteUludm9rYWJsZVdpdGhMaXN0T2ZJbnRBcmcoY29u
c3QgUUxpc3Q8aW50PiYgbHN0KQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9
IDE3OworICAgICAgICBtX2FjdHVhbHMgPDwgUVZhcmlhbnQ6OmZyb21WYWx1ZShsc3QpOworICAg
ICAgICByZXR1cm4gbHN0OworICAgIH0KKyAgICBRX0lOVk9LQUJMRSBRT2JqZWN0KiBteUludm9r
YWJsZVdpdGhRT2JqZWN0U3RhckFyZyhRT2JqZWN0KiBvYmopCisgICAgeworICAgICAgICBtX3F0
RnVuY3Rpb25JbnZva2VkID0gMTg7CisgICAgICAgIG1fYWN0dWFscyA8PCBRVmFyaWFudDo6ZnJv
bVZhbHVlKG9iaik7CisgICAgICAgIHJldHVybiBvYmo7CisgICAgfQorICAgIFFfSU5WT0tBQkxF
IFFCcnVzaCBteUludm9rYWJsZVdpdGhRQnJ1c2hBcmcoY29uc3QgUUJydXNoJiBicnVzaCkKKyAg
ICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAxOTsKKyAgICAgICAgbV9hY3R1YWxz
IDw8IFFWYXJpYW50Ojpmcm9tVmFsdWUoYnJ1c2gpOworICAgICAgICByZXR1cm4gYnJ1c2g7Cisg
ICAgfQorICAgIFFfSU5WT0tBQkxFIHZvaWQgbXlJbnZva2FibGVXaXRoQnJ1c2hTdHlsZUFyZyhR
dDo6QnJ1c2hTdHlsZSBzdHlsZSkKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQg
PSA0MzsKKyAgICAgICAgLy8gUXQ6OkJydXNoU3R5bGUgaXNuJ3QgcmVnaXN0ZXJlZCBhbmQgdGhp
cyBzaG91bGRuJ3QgYmUgcmVhY2hlZC4KKyAgICAgICAgUVZFUklGWShmYWxzZSk7CisgICAgfQor
ICAgIFFfSU5WT0tBQkxFIHZvaWQgbXlJbnZva2FibGVXaXRoVm9pZFN0YXJBcmcodm9pZCogYXJn
KQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDQ0OworICAgICAgICBtX2Fj
dHVhbHMgPDwgUVZhcmlhbnQ6OmZyb21WYWx1ZShhcmcpOworICAgIH0KKyAgICBRX0lOVk9LQUJM
RSB2b2lkIG15SW52b2thYmxlV2l0aEFtYmlndW91c0FyZyhpbnQgYXJnKQorICAgIHsKKyAgICAg
ICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDQ1OworICAgICAgICBtX2FjdHVhbHMgPDwgUVZhcmlh
bnQ6OmZyb21WYWx1ZShhcmcpOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2th
YmxlV2l0aEFtYmlndW91c0FyZyh1aW50IGFyZykKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlv
bkludm9rZWQgPSA0NjsKKyAgICAgICAgbV9hY3R1YWxzIDw8IFFWYXJpYW50Ojpmcm9tVmFsdWUo
YXJnKTsKKyAgICB9CisgICAgUV9JTlZPS0FCTEUgdm9pZCBteUludm9rYWJsZVdpdGhEZWZhdWx0
QXJncyhpbnQgYXJnMSwgY29uc3QgUVN0cmluZyYgYXJnMiA9IFFTdHJpbmcoKSkKKyAgICB7Cisg
ICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSA0NzsKKyAgICAgICAgbV9hY3R1YWxzIDw8IFFW
YXJpYW50Ojpmcm9tVmFsdWUoYXJnMSkgPDwgcVZhcmlhbnRGcm9tVmFsdWUoYXJnMik7CisgICAg
fQorICAgIFFfSU5WT0tBQkxFIFFPYmplY3QmIG15SW52b2thYmxlUmV0dXJuaW5nUmVmKCkKKyAg
ICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSA0ODsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSBjb25zdCBRT2JqZWN0JiBteUludm9rYWJsZVJl
dHVybmluZ0NvbnN0UmVmKCkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0X2Nhc3Q8TXlRT2Jq
ZWN0Kj4odGhpcyktPm1fcXRGdW5jdGlvbkludm9rZWQgPSA0OTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKyAgICBRX0lOVk9LQUJMRSB2b2lkIG15SW52b2thYmxlV2l0aFBvaW50QXJn
KGNvbnN0IFFQb2ludCAmYXJnKSB7CisgICAgICAgIGNvbnN0X2Nhc3Q8TXlRT2JqZWN0Kj4odGhp
cyktPm1fcXRGdW5jdGlvbkludm9rZWQgPSA1MDsKKyAgICAgICAgbV9hY3R1YWxzIDw8IFFWYXJp
YW50Ojpmcm9tVmFsdWUoYXJnKTsKKyAgICB9CisgICAgUV9JTlZPS0FCTEUgdm9pZCBteUludm9r
YWJsZVdpdGhQb2ludEFyZyhjb25zdCBRUG9pbnRGICZhcmcpIHsKKyAgICAgICAgY29uc3RfY2Fz
dDxNeVFPYmplY3QqPih0aGlzKS0+bV9xdEZ1bmN0aW9uSW52b2tlZCA9IDUxOworICAgICAgICBt
X2FjdHVhbHMgPDwgUVZhcmlhbnQ6OmZyb21WYWx1ZShhcmcpOworICAgIH0KKyAgICBRX0lOVk9L
QUJMRSB2b2lkIG15SW52b2thYmxlV2l0aEJvb2xBcmcoYm9vbCBhcmcpIHsKKyAgICAgICAgbV9x
dEZ1bmN0aW9uSW52b2tlZCA9IDUyOworICAgICAgICBtX2FjdHVhbHMgPDwgYXJnOworICAgIH0K
KworICAgIHZvaWQgZW1pdE15U2lnbmFsKCkKKyAgICB7CisgICAgICAgIGVtaXQgbXlTaWduYWwo
KTsKKyAgICB9CisgICAgdm9pZCBlbWl0TXlTaWduYWxXaXRoSW50QXJnKGludCBhcmcpCisgICAg
eworICAgICAgICBlbWl0IG15U2lnbmFsV2l0aEludEFyZyhhcmcpOworICAgIH0KKyAgICB2b2lk
IGVtaXRNeVNpZ25hbDIoYm9vbCBhcmcpCisgICAgeworICAgICAgICBlbWl0IG15U2lnbmFsMihh
cmcpOworICAgIH0KKyAgICB2b2lkIGVtaXRNeVNpZ25hbDIoKQorICAgIHsKKyAgICAgICAgZW1p
dCBteVNpZ25hbDIoKTsKKyAgICB9CisgICAgdm9pZCBlbWl0TXlTaWduYWxXaXRoRGF0ZVRpbWVB
cmcoUURhdGVUaW1lIGR0KQorICAgIHsKKyAgICAgICAgZW1pdCBteVNpZ25hbFdpdGhEYXRlVGlt
ZUFyZyhkdCk7CisgICAgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIG15U2xvdCgpCisg
ICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZva2VkID0gMjA7CisgICAgfQorCisgICAgdm9p
ZCBteVNsb3RXaXRoSW50QXJnKGludCBhcmcpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25J
bnZva2VkID0gMjE7CisgICAgICAgIG1fYWN0dWFscyA8PCBhcmc7CisgICAgfQorCisgICAgdm9p
ZCBteVNsb3RXaXRoRG91YmxlQXJnKGRvdWJsZSBhcmcpCisgICAgeworICAgICAgICBtX3F0RnVu
Y3Rpb25JbnZva2VkID0gMjI7CisgICAgICAgIG1fYWN0dWFscyA8PCBhcmc7CisgICAgfQorCisg
ICAgdm9pZCBteVNsb3RXaXRoU3RyaW5nQXJnKGNvbnN0IFFTdHJpbmcgJmFyZykKKyAgICB7Cisg
ICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAyMzsKKyAgICAgICAgbV9hY3R1YWxzIDw8IGFy
ZzsKKyAgICB9CisKKyAgICB2b2lkIG15T3ZlcmxvYWRlZFNsb3QoKQorICAgIHsKKyAgICAgICAg
bV9xdEZ1bmN0aW9uSW52b2tlZCA9IDI0OworICAgIH0KKworICAgIHZvaWQgbXlPdmVybG9hZGVk
U2xvdChRT2JqZWN0KiBhcmcpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZva2VkID0g
NDE7CisgICAgICAgIG1fYWN0dWFscyA8PCBRVmFyaWFudDo6ZnJvbVZhbHVlKGFyZyk7CisgICAg
fQorCisgICAgdm9pZCBteU92ZXJsb2FkZWRTbG90KGJvb2wgYXJnKQorICAgIHsKKyAgICAgICAg
bV9xdEZ1bmN0aW9uSW52b2tlZCA9IDI1OworICAgICAgICBtX2FjdHVhbHMgPDwgYXJnOworICAg
IH0KKworICAgIHZvaWQgbXlPdmVybG9hZGVkU2xvdChjb25zdCBRU3RyaW5nTGlzdCAmYXJnKQor
ICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDQyOworICAgICAgICBtX2FjdHVh
bHMgPDwgYXJnOworICAgIH0KKworICAgIHZvaWQgbXlPdmVybG9hZGVkU2xvdChkb3VibGUgYXJn
KQorICAgIHsKKyAgICAgICAgbV9xdEZ1bmN0aW9uSW52b2tlZCA9IDI2OworICAgICAgICBtX2Fj
dHVhbHMgPDwgYXJnOworICAgIH0KKworICAgIHZvaWQgbXlPdmVybG9hZGVkU2xvdChmbG9hdCBh
cmcpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZva2VkID0gMjc7CisgICAgICAgIG1f
YWN0dWFscyA8PCBhcmc7CisgICAgfQorCisgICAgdm9pZCBteU92ZXJsb2FkZWRTbG90KGludCBh
cmcpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZva2VkID0gMjg7CisgICAgICAgIG1f
YWN0dWFscyA8PCBhcmc7CisgICAgfQorCisgICAgdm9pZCBteU92ZXJsb2FkZWRTbG90KGNvbnN0
IFFTdHJpbmcgJmFyZykKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAyOTsK
KyAgICAgICAgbV9hY3R1YWxzIDw8IGFyZzsKKyAgICB9CisKKyAgICB2b2lkIG15T3ZlcmxvYWRl
ZFNsb3QoY29uc3QgUUNvbG9yICZhcmcpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZv
a2VkID0gMzA7CisgICAgICAgIG1fYWN0dWFscyA8PCBhcmc7CisgICAgfQorCisgICAgdm9pZCBt
eU92ZXJsb2FkZWRTbG90KGNvbnN0IFFCcnVzaCAmYXJnKQorICAgIHsKKyAgICAgICAgbV9xdEZ1
bmN0aW9uSW52b2tlZCA9IDMxOworICAgICAgICBtX2FjdHVhbHMgPDwgYXJnOworICAgIH0KKwor
ICAgIHZvaWQgbXlPdmVybG9hZGVkU2xvdChjb25zdCBRRGF0ZVRpbWUgJmFyZykKKyAgICB7Cisg
ICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAzMjsKKyAgICAgICAgbV9hY3R1YWxzIDw8IGFy
ZzsKKyAgICB9CisKKyAgICB2b2lkIG15T3ZlcmxvYWRlZFNsb3QoY29uc3QgUURhdGUgJmFyZykK
KyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAzMzsKKyAgICAgICAgbV9hY3R1
YWxzIDw8IGFyZzsKKyAgICB9CisKKyAgICB2b2lkIG15T3ZlcmxvYWRlZFNsb3QoY29uc3QgUVZh
cmlhbnQgJmFyZykKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbkludm9rZWQgPSAzNTsKKyAg
ICAgICAgbV9hY3R1YWxzIDw8IGFyZzsKKyAgICB9CisKKyAgICB2b2lkIG15T3ZlcmxvYWRlZFNs
b3QoY29uc3QgUVdlYkVsZW1lbnQgJmFyZykKKyAgICB7CisgICAgICAgIG1fcXRGdW5jdGlvbklu
dm9rZWQgPSAzNjsKKyAgICAgICAgbV9hY3R1YWxzIDw8IFFWYXJpYW50Ojpmcm9tVmFsdWU8UVdl
YkVsZW1lbnQ+KGFyZyk7CisgICAgfQorCitwcm90ZWN0ZWQgUV9TTE9UUzoKKyAgICB2b2lkIG15
UHJvdGVjdGVkU2xvdCgpCisgICAgeworICAgICAgICBtX3F0RnVuY3Rpb25JbnZva2VkID0gMzY7
CisgICAgfQorCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBteVByaXZhdGVTbG90KCkgeyB9
CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG15U2lnbmFsKCk7CisgICAgdm9pZCBteVNpZ25hbFdp
dGhJbnRBcmcoaW50KTsKKyAgICB2b2lkIG15U2lnbmFsV2l0aERvdWJsZUFyZyhkb3VibGUpOwor
ICAgIHZvaWQgbXlTaWduYWwyKGJvb2wgYXJnID0gZmFsc2UpOworICAgIHZvaWQgbXlTaWduYWxX
aXRoRGF0ZVRpbWVBcmcoUURhdGVUaW1lKTsKKworcHJpdmF0ZToKKyAgICBpbnQgbV9pbnRWYWx1
ZTsKKyAgICBRVmFyaWFudCBtX3ZhcmlhbnRWYWx1ZTsKKyAgICBRVmFyaWFudExpc3QgbV92YXJp
YW50TGlzdFZhbHVlOworICAgIFFWYXJpYW50TWFwIG1fdmFyaWFudE1hcFZhbHVlOworICAgIFFT
dHJpbmcgbV9zdHJpbmdWYWx1ZTsKKyAgICBRU3RyaW5nTGlzdCBtX3N0cmluZ0xpc3RWYWx1ZTsK
KyAgICBRQnl0ZUFycmF5IG1fYnl0ZUFycmF5VmFsdWU7CisgICAgUUJydXNoIG1fYnJ1c2hWYWx1
ZTsKKyAgICBkb3VibGUgbV9oaWRkZW5WYWx1ZTsKKyAgICBpbnQgbV93cml0ZU9ubHlWYWx1ZTsK
KyAgICBpbnQgbV9yZWFkT25seVZhbHVlOworICAgIFFLZXlTZXF1ZW5jZSBtX3Nob3J0Y3V0Owor
ICAgIFFXZWJFbGVtZW50IG1fd2ViRWxlbWVudDsKKyAgICBDdXN0b21UeXBlIG1fY3VzdG9tVHlw
ZTsKKyAgICBRT2JqZWN0KiBtX29iamVjdFN0YXI7CisgICAgaW50IG1fcXRGdW5jdGlvbkludm9r
ZWQ7CisgICAgUVZhcmlhbnRMaXN0IG1fYWN0dWFsczsKK307CisKK2NsYXNzIE15V2ViRWxlbWVu
dFNsb3RPbmx5T2JqZWN0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9Q
Uk9QRVJUWShRU3RyaW5nIHRhZ05hbWUgUkVBRCB0YWdOYW1lKQorcHVibGljIFFfU0xPVFM6Cisg
ICAgdm9pZCBkb1NvbWV0aGluZ1dpdGhXZWJFbGVtZW50KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVt
ZW50KQorICAgIHsKKyAgICAgICAgbV90YWdOYW1lID0gZWxlbWVudC50YWdOYW1lKCk7CisgICAg
fQorCitwdWJsaWM6CisgICAgUVN0cmluZyB0YWdOYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3RhZ05hbWU7CisgICAgfQorcHJpdmF0ZToKKyAgICBRU3RyaW5nIG1fdGFnTmFt
ZTsKK307CisKK2NsYXNzIE15T3RoZXJRT2JqZWN0IDogcHVibGljIE15UU9iamVjdCB7CitwdWJs
aWM6CisgICAgTXlPdGhlclFPYmplY3QoUU9iamVjdCogcGFyZW50ID0gMCkKKyAgICAgICAgOiBN
eVFPYmplY3QocGFyZW50KSB7IH0KK307CisKK2NsYXNzIHRzdF9RT2JqZWN0QnJpZGdlIDogcHVi
bGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICB0c3RfUU9iamVjdEJy
aWRnZSgpOworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIGluaXQoKTsKKyAgICB2b2lkIGNs
ZWFudXAoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgZ2V0U2V0U3RhdGljUHJvcGVy
dHkoKTsKKyAgICB2b2lkIGdldFNldER5bmFtaWNQcm9wZXJ0eSgpOworICAgIHZvaWQgZ2V0U2V0
Q2hpbGRyZW4oKTsKKyAgICB2b2lkIGNhbGxRdEludm9rYWJsZSgpOworICAgIHZvaWQgY29ubmVj
dEFuZERpc2Nvbm5lY3QoKTsKKyAgICB2b2lkIG92ZXJyaWRlSW52b2thYmxlKCk7CisgICAgdm9p
ZCBvdmVybG9hZGVkU2xvdHMoKTsKKyAgICB2b2lkIHdlYkVsZW1lbnRTbG90T25seSgpOworICAg
IHZvaWQgZW51bWVyYXRlX2RhdGEoKTsKKyAgICB2b2lkIGVudW1lcmF0ZSgpOworICAgIHZvaWQg
b2JqZWN0RGVsZXRlZCgpOworICAgIHZvaWQgdHlwZUNvbnZlcnNpb24oKTsKKyAgICB2b2lkIGFy
cmF5T2JqZWN0RW51bWVyYWJsZSgpOworICAgIHZvaWQgZG9tQ3ljbGVzKCk7CisgICAgdm9pZCBq
c0J5dGVBcnJheSgpOworICAgIHZvaWQgb3duZXJzaGlwKCk7CisgICAgdm9pZCBudWxsVmFsdWUo
KTsKKyAgICB2b2lkIHFPYmplY3RXcmFwcGVyV2l0aFNhbWVJZGVudGl0eSgpOworICAgIHZvaWQg
aW50cm9zcGVjdFF0TWV0aG9kc19kYXRhKCk7CisgICAgdm9pZCBpbnRyb3NwZWN0UXRNZXRob2Rz
KCk7CisgICAgdm9pZCBzY3JpcHRhYmxlUGx1Z2luKCk7CisKK3ByaXZhdGU6CisgICAgUVN0cmlu
ZyBldmFsSlMoY29uc3QgUVN0cmluZyYgcykKKyAgICB7CisgICAgICAgIFFWYXJpYW50IHJldCA9
IGV2YWxKU1Yocyk7CisgICAgICAgIGlmICghcmV0LmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiAidW5kZWZpbmVkIjsKKyAgICAgICAgcmV0dXJuIHJldC50b1N0cmluZygpOworICAgIH0K
KworICAgIFFWYXJpYW50IGV2YWxKU1YoY29uc3QgUVN0cmluZyYgcykKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQocyk7CisgICAg
fQorCisgICAgUVN0cmluZyBldmFsSlMoY29uc3QgUVN0cmluZyYgcywgUVN0cmluZyYgdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBldmFsSlNWKHMsIHR5cGUpLnRvU3RyaW5nKCk7CisgICAg
fQorCisgICAgUVZhcmlhbnQgZXZhbEpTVihjb25zdCBRU3RyaW5nJiBzLCBRU3RyaW5nJiB0eXBl
KQorICAgIHsKKyAgICAgICAgLy8gQXMgYSBzcGVjaWFsIG1lYXN1cmUsIGlmIHdlIGdldCBhbiBl
eGNlcHRpb24gd2Ugc2V0IHRoZSB0eXBlIHRvICdlcnJvcicKKyAgICAgICAgLy8gKGluIGVjbWEs
IGFuIEVycm9yIG9iamVjdCBoYXMgdHlwZW9mIG9iamVjdCwgYnV0IHF0c2NyaXB0IGhhcyBhIGNv
bnZlbmllbmNlIGZ1bmN0aW9uKQorICAgICAgICAvLyBTaW1pbGFybHksIGFuIGFycmF5IGlzIGFu
IG9iamVjdCwgYnV0IHdlJ2QgcHJlZmVyIHRvIGhhdmUgYSB0eXBlIG9mICdhcnJheScKKyAgICAg
ICAgUVN0cmluZyBlc2NhcGVkID0gczsKKyAgICAgICAgZXNjYXBlZC5yZXBsYWNlKCdcJycsICJc
XCciKTsgLy8gRG9uJ3QgcHJlZXNjYXBlIHlvdXIgc2luZ2xlIHF1b3RlcyEKKyAgICAgICAgUVN0
cmluZyBjb2RlKCJ2YXIgcmV0dmFsdWU7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ2YXIgdHlw
ZXZhbHVlOyAiCisgICAgICAgICAgICAgICAgICAgICAidHJ5IHsgIgorICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR2YWx1ZSA9IGV2YWwoJyUxJyk7ICIKKyAgICAgICAgICAgICAgICAgICAg
ICIgICAgdHlwZXZhbHVlID0gdHlwZW9mIHJldHZhbHVlOyAiCisgICAgICAgICAgICAgICAgICAg
ICAiICAgIGlmIChyZXR2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSAiCisgICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0eXBldmFsdWUgPSAnYXJyYXknOyAiCisgICAgICAgICAgICAgICAgICAg
ICAifSBjYXRjaChlKSB7ICIKKyAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dmFsdWUgPSBl
Lm5hbWUgKyAnOiAnICsgZS5tZXNzYWdlOyAiCisgICAgICAgICAgICAgICAgICAgICAiICAgIHR5
cGV2YWx1ZSA9ICdlcnJvcic7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ9Iik7CisgICAgICAg
IGV2YWxKUyhjb2RlLmFyZyhlc2NhcGVkKSk7CisKKyAgICAgICAgUVZhcmlhbnQgcmV0ID0gZXZh
bEpTVigicmV0dmFsdWUiKTsKKyAgICAgICAgaWYgKHJldC5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICB0eXBlID0gZXZhbEpTKCJ0eXBldmFsdWUiKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICByZXQgPSBRU3RyaW5nKCJ1bmRlZmluZWQiKTsKKyAgICAgICAgICAgIHR5cGUgPSBzVW5kZWZp
bmVkOworICAgICAgICB9CisgICAgICAgIGV2YWxKUygiZGVsZXRlIHJldHZhbHVlOyBkZWxldGUg
dHlwZXZhbHVlIik7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgY29uc3QgUVN0
cmluZyBzVHJ1ZTsKKyAgICBjb25zdCBRU3RyaW5nIHNGYWxzZTsKKyAgICBjb25zdCBRU3RyaW5n
IHNVbmRlZmluZWQ7CisgICAgY29uc3QgUVN0cmluZyBzQXJyYXk7CisgICAgY29uc3QgUVN0cmlu
ZyBzRnVuY3Rpb247CisgICAgY29uc3QgUVN0cmluZyBzRXJyb3I7CisgICAgY29uc3QgUVN0cmlu
ZyBzU3RyaW5nOworICAgIGNvbnN0IFFTdHJpbmcgc09iamVjdDsKKyAgICBjb25zdCBRU3RyaW5n
IHNOdW1iZXI7CisKK3ByaXZhdGU6CisgICAgUVdlYlZpZXcqIG1fdmlldzsKKyAgICBRV2ViUGFn
ZSogbV9wYWdlOworICAgIE15UU9iamVjdCogbV9teU9iamVjdDsKK307CisKK3RzdF9RT2JqZWN0
QnJpZGdlOjp0c3RfUU9iamVjdEJyaWRnZSgpCisgICAgOiBzVHJ1ZSgidHJ1ZSIpCisgICAgLCBz
RmFsc2UoImZhbHNlIikKKyAgICAsIHNVbmRlZmluZWQoInVuZGVmaW5lZCIpCisgICAgLCBzQXJy
YXkoImFycmF5IikKKyAgICAsIHNGdW5jdGlvbigiZnVuY3Rpb24iKQorICAgICwgc0Vycm9yKCJl
cnJvciIpCisgICAgLCBzU3RyaW5nKCJzdHJpbmciKQorICAgICwgc09iamVjdCgib2JqZWN0IikK
KyAgICAsIHNOdW1iZXIoIm51bWJlciIpCit7Cit9CisKK3ZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6
OmluaXQoKQoreworICAgIG1fdmlldyA9IG5ldyBRV2ViVmlldygpOworICAgIG1fcGFnZSA9IG1f
dmlldy0+cGFnZSgpOworICAgIG1fbXlPYmplY3QgPSBuZXcgTXlRT2JqZWN0KCk7CisgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS0+YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCJteU9iamVjdCIs
IG1fbXlPYmplY3QpOworfQorCit2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpjbGVhbnVwKCkKK3sK
KyAgICBkZWxldGUgbV92aWV3OworICAgIGRlbGV0ZSBtX215T2JqZWN0OworfQorCit2b2lkIHRz
dF9RT2JqZWN0QnJpZGdlOjpnZXRTZXRTdGF0aWNQcm9wZXJ0eSgpCit7CisgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+c2V0SHRtbCgiPGh0bWw+PGhlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsK
KyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5ub1N1Y2hQcm9wZXJ0eSIpLCBz
VW5kZWZpbmVkKTsKKworICAgIC8vIGluaXRpYWwgdmFsdWUgKHNldCBpbiBNeVFPYmplY3QgY29u
c3RydWN0b3IpCisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFWYXJpYW50
IHJldCA9IGV2YWxKU1YoIm15T2JqZWN0LmludFByb3BlcnR5IiwgdHlwZSk7CisgICAgICAgIFFD
T01QQVJFKHR5cGUsIHNOdW1iZXIpOworICAgICAgICBRQ09NUEFSRShyZXQudHlwZSgpLCBRVmFy
aWFudDo6RG91YmxlKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LnRvSW50KCksIDEyMyk7CisgICAg
fQorICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QuaW50UHJvcGVydHkgPT09IDEyMy4wIiks
IHNUcnVlKTsKKworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBRVmFyaWFu
dCByZXQgPSBldmFsSlNWKCJteU9iamVjdC52YXJpYW50UHJvcGVydHkiLCB0eXBlKTsKKyAgICAg
ICAgUUNPTVBBUkUodHlwZSwgc1N0cmluZyk7CisgICAgICAgIFFDT01QQVJFKHJldC50eXBlKCks
IFFWYXJpYW50OjpTdHJpbmcpOworICAgICAgICBRQ09NUEFSRShyZXQudG9TdHJpbmcoKSwgUUxh
dGluMVN0cmluZygiZm9vIikpOworICAgIH0KKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0
LnZhcmlhbnRQcm9wZXJ0eSA9PSAnZm9vJyIpLCBzVHJ1ZSk7CisKKyAgICB7CisgICAgICAgIFFT
dHJpbmcgdHlwZTsKKyAgICAgICAgUVZhcmlhbnQgcmV0ID0gZXZhbEpTVigibXlPYmplY3Quc3Ry
aW5nUHJvcGVydHkiLCB0eXBlKTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwgc1N0cmluZyk7Cisg
ICAgICAgIFFDT01QQVJFKHJldC50eXBlKCksIFFWYXJpYW50OjpTdHJpbmcpOworICAgICAgICBR
Q09NUEFSRShyZXQudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygiYmFyIikpOworICAgIH0KKyAg
ICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnN0cmluZ1Byb3BlcnR5ID09PSAnYmFyJyIpLCBz
VHJ1ZSk7CisKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVZhcmlhbnQg
cmV0ID0gZXZhbEpTVigibXlPYmplY3QudmFyaWFudExpc3RQcm9wZXJ0eSIsIHR5cGUpOworICAg
ICAgICBRQ09NUEFSRSh0eXBlLCBzQXJyYXkpOworICAgICAgICBRQ09NUEFSRShyZXQudHlwZSgp
LCBRVmFyaWFudDo6TGlzdCk7CisgICAgICAgIFFWYXJpYW50TGlzdCB2bCA9IHJldC52YWx1ZTxR
VmFyaWFudExpc3Q+KCk7CisgICAgICAgIFFDT01QQVJFKHZsLnNpemUoKSwgMik7CisgICAgICAg
IFFDT01QQVJFKHZsLmF0KDApLnRvSW50KCksIDEyMyk7CisgICAgICAgIFFDT01QQVJFKHZsLmF0
KDEpLnRvU3RyaW5nKCksIFFMYXRpbjFTdHJpbmcoImZvbyIpKTsKKyAgICB9CisgICAgUUNPTVBB
UkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50TGlzdFByb3BlcnR5Lmxlbmd0aCA9PT0gMiIpLCBz
VHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50TGlzdFByb3BlcnR5
WzBdID09PSAxMjMiKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QudmFy
aWFudExpc3RQcm9wZXJ0eVsxXSA9PT0gJ2ZvbyciKSwgc1RydWUpOworCisgICAgeworICAgICAg
ICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2YWxKU1YoIm15T2JqZWN0
LnZhcmlhbnRNYXBQcm9wZXJ0eSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzT2Jq
ZWN0KTsKKyAgICAgICAgUUNPTVBBUkUocmV0LnR5cGUoKSwgUVZhcmlhbnQ6Ok1hcCk7CisgICAg
ICAgIFFWYXJpYW50TWFwIHZtID0gcmV0LnZhbHVlPFFWYXJpYW50TWFwPigpOworICAgICAgICBR
Q09NUEFSRSh2bS5zaXplKCksIDMpOworICAgICAgICBRQ09NUEFSRSh2bS52YWx1ZSgiYSIpLnRv
SW50KCksIDEyMyk7CisgICAgICAgIFFDT01QQVJFKHZtLnZhbHVlKCJiIikudG9TdHJpbmcoKSwg
UUxhdGluMVN0cmluZygiZm9vIikpOworICAgICAgICBRQ09NUEFSRSh2bS52YWx1ZSgiYyIpLnZh
bHVlPFFPYmplY3QqPigpLCBzdGF0aWNfY2FzdDxRT2JqZWN0Kj4obV9teU9iamVjdCkpOworICAg
IH0KKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnZhcmlhbnRNYXBQcm9wZXJ0eS5hID09
PSAxMjMiKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QudmFyaWFudE1h
cFByb3BlcnR5LmIgPT09ICdmb28nIiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15
T2JqZWN0LnZhcmlhbnRNYXBQcm9wZXJ0eS5jLnZhcmlhbnRNYXBQcm9wZXJ0eS5iID09PSAnZm9v
JyIpLCBzVHJ1ZSk7CisKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVZh
cmlhbnQgcmV0ID0gZXZhbEpTVigibXlPYmplY3Quc3RyaW5nTGlzdFByb3BlcnR5IiwgdHlwZSk7
CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNBcnJheSk7CisgICAgICAgIFFDT01QQVJFKHJldC50
eXBlKCksIFFWYXJpYW50OjpMaXN0KTsKKyAgICAgICAgUVZhcmlhbnRMaXN0IHZsID0gcmV0LnZh
bHVlPFFWYXJpYW50TGlzdD4oKTsKKyAgICAgICAgUUNPTVBBUkUodmwuc2l6ZSgpLCAyKTsKKyAg
ICAgICAgUUNPTVBBUkUodmwuYXQoMCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygiemlnIikp
OworICAgICAgICBRQ09NUEFSRSh2bC5hdCgxKS50b1N0cmluZygpLCBRTGF0aW4xU3RyaW5nKCJ6
YWciKSk7CisgICAgfQorICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Quc3RyaW5nTGlzdFBy
b3BlcnR5Lmxlbmd0aCA9PT0gMiIpLCBzVHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBl
b2YgbXlPYmplY3Quc3RyaW5nTGlzdFByb3BlcnR5WzBdIiksIHNTdHJpbmcpOworICAgIFFDT01Q
QVJFKGV2YWxKUygibXlPYmplY3Quc3RyaW5nTGlzdFByb3BlcnR5WzBdIiksIFFMYXRpbjFTdHJp
bmcoInppZyIpKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5zdHJpbmdM
aXN0UHJvcGVydHlbMV0iKSwgc1N0cmluZyk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVj
dC5zdHJpbmdMaXN0UHJvcGVydHlbMV0iKSwgUUxhdGluMVN0cmluZygiemFnIikpOworCisgICAg
Ly8gcHJvcGVydHkgY2hhbmdlIGluIEMrKyBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHNjcmlwdAor
ICAgIG1fbXlPYmplY3QtPnNldEludFByb3BlcnR5KDQ1Nik7CisgICAgUUNPTVBBUkUoZXZhbEpT
KCJteU9iamVjdC5pbnRQcm9wZXJ0eSA9PSA0NTYiKSwgc1RydWUpOworICAgIG1fbXlPYmplY3Qt
PnNldEludFByb3BlcnR5KDc4OSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5pbnRQ
cm9wZXJ0eSA9PSA3ODkiKSwgc1RydWUpOworCisgICAgbV9teU9iamVjdC0+c2V0VmFyaWFudFBy
b3BlcnR5KFFMYXRpbjFTdHJpbmcoImJhciIpKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2Jq
ZWN0LnZhcmlhbnRQcm9wZXJ0eSA9PT0gJ2JhciciKSwgc1RydWUpOworICAgIG1fbXlPYmplY3Qt
PnNldFZhcmlhbnRQcm9wZXJ0eSg0Mik7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC52
YXJpYW50UHJvcGVydHkgPT09IDQyIiksIHNUcnVlKTsKKyAgICBtX215T2JqZWN0LT5zZXRWYXJp
YW50UHJvcGVydHkoUVZhcmlhbnQ6OmZyb21WYWx1ZShRQnJ1c2goKSkpOworCisgICAgbV9teU9i
amVjdC0+c2V0U3RyaW5nUHJvcGVydHkoUUxhdGluMVN0cmluZygiYmF6IikpOworICAgIFFDT01Q
QVJFKGV2YWxKUygibXlPYmplY3Quc3RyaW5nUHJvcGVydHkgPT09ICdiYXonIiksIHNUcnVlKTsK
KyAgICBtX215T2JqZWN0LT5zZXRTdHJpbmdQcm9wZXJ0eShRTGF0aW4xU3RyaW5nKCJ6YWIiKSk7
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5zdHJpbmdQcm9wZXJ0eSA9PT0gJ3phYici
KSwgc1RydWUpOworCisgICAgLy8gcHJvcGVydHkgY2hhbmdlIGluIHNjcmlwdCBzaG91bGQgYmUg
cmVmbGVjdGVkIGluIEMrKworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QuaW50UHJvcGVy
dHkgPSAxMjMiKSwgUUxhdGluMVN0cmluZygiMTIzIikpOworICAgIFFDT01QQVJFKGV2YWxKUygi
bXlPYmplY3QuaW50UHJvcGVydHkgPT0gMTIzIiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShtX215
T2JqZWN0LT5pbnRQcm9wZXJ0eSgpLCAxMjMpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmpl
Y3QuaW50UHJvcGVydHkgPSAnY2lhbyEnOyIKKyAgICAgICAgICAgICAgICAgICAgIm15T2JqZWN0
LmludFByb3BlcnR5ID09IDAiKSwgc1RydWUpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPmlu
dFByb3BlcnR5KCksIDApOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QuaW50UHJvcGVy
dHkgPSAnMTIzJzsiCisgICAgICAgICAgICAgICAgICAgICJteU9iamVjdC5pbnRQcm9wZXJ0eSA9
PSAxMjMiKSwgc1RydWUpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPmludFByb3BlcnR5KCks
IDEyMyk7CisKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnN0cmluZ1Byb3BlcnR5ID0g
J2NpYW8nIiksIFFMYXRpbjFTdHJpbmcoImNpYW8iKSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJt
eU9iamVjdC5zdHJpbmdQcm9wZXJ0eSIpLCBRTGF0aW4xU3RyaW5nKCJjaWFvIikpOworICAgIFFD
T01QQVJFKG1fbXlPYmplY3QtPnN0cmluZ1Byb3BlcnR5KCksIFFMYXRpbjFTdHJpbmcoImNpYW8i
KSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5zdHJpbmdQcm9wZXJ0eSA9IDEyMzsi
CisgICAgICAgICAgICAgICAgICAgICJteU9iamVjdC5zdHJpbmdQcm9wZXJ0eSIpLCBRTGF0aW4x
U3RyaW5nKCIxMjMiKSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+c3RyaW5nUHJvcGVydHko
KSwgUUxhdGluMVN0cmluZygiMTIzIikpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Qu
c3RyaW5nUHJvcGVydHkgPSBudWxsIiksIFFTdHJpbmcoKSk7CisgICAgUUNPTVBBUkUoZXZhbEpT
KCJteU9iamVjdC5zdHJpbmdQcm9wZXJ0eSIpLCBRU3RyaW5nKCkpOworICAgIFFDT01QQVJFKG1f
bXlPYmplY3QtPnN0cmluZ1Byb3BlcnR5KCksIFFTdHJpbmcoKSk7CisgICAgUUNPTVBBUkUoZXZh
bEpTKCJteU9iamVjdC5zdHJpbmdQcm9wZXJ0eSA9IHVuZGVmaW5lZCIpLCBzVW5kZWZpbmVkKTsK
KyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnN0cmluZ1Byb3BlcnR5IiksIFFTdHJpbmco
KSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+c3RyaW5nUHJvcGVydHkoKSwgUVN0cmluZygp
KTsKKworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QudmFyaWFudFByb3BlcnR5ID0gbmV3
IE51bWJlcigxMjM0KTsiCisgICAgICAgICAgICAgICAgICAgICJteU9iamVjdC52YXJpYW50UHJv
cGVydHkiKS50b0RvdWJsZSgpLCAxMjM0LjApOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnZh
cmlhbnRQcm9wZXJ0eSgpLnRvRG91YmxlKCksIDEyMzQuMCk7CisKKyAgICBRQ09NUEFSRShldmFs
SlMoIm15T2JqZWN0LnZhcmlhbnRQcm9wZXJ0eSA9IG5ldyBCb29sZWFuKDEyMzQpOyIKKyAgICAg
ICAgICAgICAgICAgICAgIm15T2JqZWN0LnZhcmlhbnRQcm9wZXJ0eSIpLCBzVHJ1ZSk7CisgICAg
UUNPTVBBUkUobV9teU9iamVjdC0+dmFyaWFudFByb3BlcnR5KCkudG9Cb29sKCksIHRydWUpOwor
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50UHJvcGVydHkgPSBudWxsOyIK
KyAgICAgICAgICAgICAgICAgICAgIm15T2JqZWN0LnZhcmlhbnRQcm9wZXJ0eS52YWx1ZU9mKCki
KSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+dmFyaWFudFByb3BlcnR5
KCksIFFWYXJpYW50KCkpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QudmFyaWFudFBy
b3BlcnR5ID0gdW5kZWZpbmVkOyIKKyAgICAgICAgICAgICAgICAgICAgIm15T2JqZWN0LnZhcmlh
bnRQcm9wZXJ0eS52YWx1ZU9mKCkiKSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9i
amVjdC0+dmFyaWFudFByb3BlcnR5KCksIFFWYXJpYW50KCkpOworCisgICAgUUNPTVBBUkUoZXZh
bEpTKCJteU9iamVjdC52YXJpYW50UHJvcGVydHkgPSAnZm9vJzsiCisgICAgICAgICAgICAgICAg
ICAgICJteU9iamVjdC52YXJpYW50UHJvcGVydHkudmFsdWVPZigpIiksIFFMYXRpbjFTdHJpbmco
ImZvbyIpKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT52YXJpYW50UHJvcGVydHkoKSwgUVZh
cmlhbnQoUUxhdGluMVN0cmluZygiZm9vIikpKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2Jq
ZWN0LnZhcmlhbnRQcm9wZXJ0eSA9IDQyOyIKKyAgICAgICAgICAgICAgICAgICAgIm15T2JqZWN0
LnZhcmlhbnRQcm9wZXJ0eSIpLnRvRG91YmxlKCksIDQyLjApOworICAgIFFDT01QQVJFKG1fbXlP
YmplY3QtPnZhcmlhbnRQcm9wZXJ0eSgpLnRvRG91YmxlKCksIDQyLjApOworCisgICAgUUNPTVBB
UkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50TGlzdFByb3BlcnR5ID0gWzEsICd0d28nLCB0cnVl
XTsiCisgICAgICAgICAgICAgICAgICAgICJteU9iamVjdC52YXJpYW50TGlzdFByb3BlcnR5Lmxl
bmd0aCA9PSAzIiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnZhcmlh
bnRMaXN0UHJvcGVydHlbMF0gPT09IDEiKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygi
bXlPYmplY3QudmFyaWFudExpc3RQcm9wZXJ0eVsxXSIpLCBRTGF0aW4xU3RyaW5nKCJ0d28iKSk7
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50TGlzdFByb3BlcnR5WzJdID09
PSB0cnVlIiksIHNUcnVlKTsKKworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Quc3RyaW5n
TGlzdFByb3BlcnR5ID0gWzEsICd0d28nLCB0cnVlXTsiCisgICAgICAgICAgICAgICAgICAgICJt
eU9iamVjdC5zdHJpbmdMaXN0UHJvcGVydHkubGVuZ3RoID09IDMiKSwgc1RydWUpOworICAgIFFD
T01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0LnN0cmluZ0xpc3RQcm9wZXJ0eVswXSIpLCBz
U3RyaW5nKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnN0cmluZ0xpc3RQcm9wZXJ0
eVswXSA9PSAnMSciKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15T2Jq
ZWN0LnN0cmluZ0xpc3RQcm9wZXJ0eVsxXSIpLCBzU3RyaW5nKTsKKyAgICBRQ09NUEFSRShldmFs
SlMoIm15T2JqZWN0LnN0cmluZ0xpc3RQcm9wZXJ0eVsxXSIpLCBRTGF0aW4xU3RyaW5nKCJ0d28i
KSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3Quc3RyaW5nTGlzdFByb3Bl
cnR5WzJdIiksIHNTdHJpbmcpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Quc3RyaW5n
TGlzdFByb3BlcnR5WzJdIiksIFFMYXRpbjFTdHJpbmcoInRydWUiKSk7CisgICAgZXZhbEpTKCJt
eU9iamVjdC53ZWJFbGVtZW50UHJvcGVydHk9ZG9jdW1lbnQuYm9keTsiKTsKKyAgICBRQ09NUEFS
RShldmFsSlMoIm15T2JqZWN0LndlYkVsZW1lbnRQcm9wZXJ0eS50YWdOYW1lIiksIFFMYXRpbjFT
dHJpbmcoIkJPRFkiKSk7CisKKyAgICAvLyB0cnkgdG8gZGVsZXRlCisgICAgUUNPTVBBUkUoZXZh
bEpTKCJkZWxldGUgbXlPYmplY3QuaW50UHJvcGVydHkiKSwgc0ZhbHNlKTsKKyAgICBRQ09NUEFS
RShldmFsSlMoIm15T2JqZWN0LmludFByb3BlcnR5ID09IDEyMyIpLCBzVHJ1ZSk7CisKKyAgICBR
Q09NUEFSRShldmFsSlMoImRlbGV0ZSBteU9iamVjdC52YXJpYW50UHJvcGVydHkiKSwgc0ZhbHNl
KTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LnZhcmlhbnRQcm9wZXJ0eSIpLnRvRG91
YmxlKCksIDQyLjApOworCisgICAgLy8gY3VzdG9tIHByb3BlcnR5CisgICAgUUNPTVBBUkUoZXZh
bEpTKCJteU9iamVjdC5jdXN0b21Qcm9wZXJ0eSIpLCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFS
RShldmFsSlMoIm15T2JqZWN0LmN1c3RvbVByb3BlcnR5ID0gMTIzOyIKKyAgICAgICAgICAgICAg
ICAgICAgIm15T2JqZWN0LmN1c3RvbVByb3BlcnR5ID09IDEyMyIpLCBzVHJ1ZSk7CisgICAgUVZh
cmlhbnQgdiA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgibXlPYmpl
Y3QuY3VzdG9tUHJvcGVydHkiKTsKKyAgICBRQ09NUEFSRSh2LnR5cGUoKSwgUVZhcmlhbnQ6OkRv
dWJsZSk7CisgICAgUUNPTVBBUkUodi50b0ludCgpLCAxMjMpOworCisgICAgLy8gbm9uLXNjcmlw
dGFibGUgcHJvcGVydHkKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5oaWRkZW5Qcm9wZXJ0eSgp
LCA0NTYuMCk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5oaWRkZW5Qcm9wZXJ0eSIp
LCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LmhpZGRlblByb3Bl
cnR5ID0gMTIzOyIKKyAgICAgICAgICAgICAgICAgICAgIm15T2JqZWN0LmhpZGRlblByb3BlcnR5
ID09IDEyMyIpLCBzVHJ1ZSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+aGlkZGVuUHJvcGVy
dHkoKSwgNDU2LjApOworCisgICAgLy8gd3JpdGUtb25seSBwcm9wZXJ0eQorICAgIFFDT01QQVJF
KG1fbXlPYmplY3QtPndyaXRlT25seVByb3BlcnR5KCksIDc4OSk7CisgICAgUUNPTVBBUkUoZXZh
bEpTKCJ0eXBlb2YgbXlPYmplY3Qud3JpdGVPbmx5UHJvcGVydHkiKSwgc1VuZGVmaW5lZCk7Cisg
ICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC53cml0ZU9ubHlQcm9wZXJ0eSA9IDEyMzsiCisg
ICAgICAgICAgICAgICAgICAgICJ0eXBlb2YgbXlPYmplY3Qud3JpdGVPbmx5UHJvcGVydHkiKSwg
c1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+d3JpdGVPbmx5UHJvcGVydHko
KSwgMTIzKTsKKworICAgIC8vIHJlYWQtb25seSBwcm9wZXJ0eQorICAgIFFDT01QQVJFKG1fbXlP
YmplY3QtPnJlYWRPbmx5UHJvcGVydHkoKSwgOTg3KTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15
T2JqZWN0LnJlYWRPbmx5UHJvcGVydHkgPT0gOTg3IiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShl
dmFsSlMoIm15T2JqZWN0LnJlYWRPbmx5UHJvcGVydHkgPSA2NTQ7IgorICAgICAgICAgICAgICAg
ICAgICAibXlPYmplY3QucmVhZE9ubHlQcm9wZXJ0eSA9PSA5ODciKSwgc1RydWUpOworICAgIFFD
T01QQVJFKG1fbXlPYmplY3QtPnJlYWRPbmx5UHJvcGVydHkoKSwgOTg3KTsKKworICAgIC8vIFFP
YmplY3QqIHByb3BlcnR5CisgICAgbV9teU9iamVjdC0+c2V0T2JqZWN0U3RhclByb3BlcnR5KDAp
OworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPm9iamVjdFN0YXJQcm9wZXJ0eSgpLCAoUU9iamVj
dCopMCk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5vYmplY3RTdGFyUHJvcGVydHkg
PT0gbnVsbCIpLCBzVHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3Qu
b2JqZWN0U3RhclByb3BlcnR5IiksIHNPYmplY3QpOworICAgIFFDT01QQVJFKGV2YWxKUygiQm9v
bGVhbihteU9iamVjdC5vYmplY3RTdGFyUHJvcGVydHkpIiksIHNGYWxzZSk7CisgICAgUUNPTVBB
UkUoZXZhbEpTKCJTdHJpbmcobXlPYmplY3Qub2JqZWN0U3RhclByb3BlcnR5KSA9PSAnbnVsbCci
KSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Qub2JqZWN0U3RhclByb3Bl
cnR5Lm9iamVjdFN0YXJQcm9wZXJ0eSIpLAorICAgICAgICBzVW5kZWZpbmVkKTsKKyAgICBtX215
T2JqZWN0LT5zZXRPYmplY3RTdGFyUHJvcGVydHkodGhpcyk7CisgICAgUUNPTVBBUkUoZXZhbEpT
KCJteU9iamVjdC5vYmplY3RTdGFyUHJvcGVydHkgIT0gbnVsbCIpLCBzVHJ1ZSk7CisgICAgUUNP
TVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3Qub2JqZWN0U3RhclByb3BlcnR5IiksIHNPYmpl
Y3QpOworICAgIFFDT01QQVJFKGV2YWxKUygiQm9vbGVhbihteU9iamVjdC5vYmplY3RTdGFyUHJv
cGVydHkpIiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIlN0cmluZyhteU9iamVjdC5v
YmplY3RTdGFyUHJvcGVydHkpICE9ICdudWxsJyIpLCBzVHJ1ZSk7Cit9CisKK3ZvaWQgdHN0X1FP
YmplY3RCcmlkZ2U6OmdldFNldER5bmFtaWNQcm9wZXJ0eSgpCit7CisgICAgLy8gaW5pdGlhbGx5
IHRoZSBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkKKyAgICAvLyBJbiBXZWJLaXQs
IFJ1bnRpbWVPYmplY3RzIGRvIG5vdCBpbmhlcml0IE9iamVjdCwgc28gZG9uJ3QgaGF2ZSBoYXNP
d25Qcm9wZXJ0eQorCisgICAgLy8gUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5oYXNPd25Qcm9w
ZXJ0eSgnZHluYW1pY1Byb3BlcnR5JykiKSwgc0ZhbHNlKTsKKyAgICBRQ09NUEFSRShldmFsSlMo
InR5cGVvZiBteU9iamVjdC5keW5hbWljUHJvcGVydHkiKSwgc1VuZGVmaW5lZCk7CisKKyAgICAv
LyBhZGQgYSBkeW5hbWljIHByb3BlcnR5IGluIEMrKworICAgIFFDT01QQVJFKG1fbXlPYmplY3Qt
PnNldFByb3BlcnR5KCJkeW5hbWljUHJvcGVydHkiLCAxMjMpLCBmYWxzZSk7CisgICAgLy8gUUNP
TVBBUkUoZXZhbEpTKCJteU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZHluYW1pY1Byb3BlcnR5Jyki
KSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0LmR5bmFtaWNQ
cm9wZXJ0eSAhPSAndW5kZWZpbmVkJyIpLCBzVHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJt
eU9iamVjdC5keW5hbWljUHJvcGVydHkgPT0gMTIzIiksIHNUcnVlKTsKKworICAgIC8vIHByb3Bl
cnR5IGNoYW5nZSBpbiBzY3JpcHQgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiBDKysKKyAgICBRQ09N
UEFSRShldmFsSlMoIm15T2JqZWN0LmR5bmFtaWNQcm9wZXJ0eSA9ICdmb28nOyIKKyAgICAgICAg
ICAgICAgICAgICAgIm15T2JqZWN0LmR5bmFtaWNQcm9wZXJ0eSIpLCBRTGF0aW4xU3RyaW5nKCJm
b28iKSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cHJvcGVydHkoImR5bmFtaWNQcm9wZXJ0
eSIpLnRvU3RyaW5nKCksIFFMYXRpbjFTdHJpbmcoImZvbyIpKTsKKworICAgIC8vIGRlbGV0ZSB0
aGUgcHJvcGVydHkgKFhGQUlMIC0gY2FuJ3QgZGVsZXRlIHByb3BlcnRpZXMpCisgICAgUUVYUEVD
VF9GQUlMKCIiLCAiY2FuJ3QgZGVsZXRlIHByb3BlcnRpZXMiLCBDb250aW51ZSk7CisgICAgUUNP
TVBBUkUoZXZhbEpTKCJkZWxldGUgbXlPYmplY3QuZHluYW1pY1Byb3BlcnR5IiksIHNUcnVlKTsK
KyAgICAvKgorICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnByb3BlcnR5KCJkeW5hbWljUHJvcGVy
dHkiKS5pc1ZhbGlkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9i
amVjdC5keW5hbWljUHJvcGVydHkiKSwgc1VuZGVmaW5lZCk7CisgICAgLy8gICAgUUNPTVBBUkUo
ZXZhbEpTKCJteU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZHluYW1pY1Byb3BlcnR5JykiKSwgc0Zh
bHNlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5keW5hbWljUHJvcGVy
dHkiKSwgc1VuZGVmaW5lZCk7CisgICAgKi8KK30KKwordm9pZCB0c3RfUU9iamVjdEJyaWRnZTo6
Z2V0U2V0Q2hpbGRyZW4oKQoreworICAgIC8vIGluaXRpYWxseSB0aGUgb2JqZWN0IGRvZXMgbm90
IGhhdmUgdGhlIGNoaWxkCisgICAgLy8gKGFnYWluLCBubyBoYXNPd25Qcm9wZXJ0eSkKKworICAg
IC8vIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QuaGFzT3duUHJvcGVydHkoJ2NoaWxkJykiKSwg
c0ZhbHNlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5jaGlsZCIpLCBz
VW5kZWZpbmVkKTsKKworICAgIC8vIGFkZCBhIGNoaWxkCisgICAgTXlRT2JqZWN0KiBjaGlsZCA9
IG5ldyBNeVFPYmplY3QobV9teU9iamVjdCk7CisgICAgY2hpbGQtPnNldE9iamVjdE5hbWUoImNo
aWxkIik7CisvLyAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnY2hp
bGQnKSIpLCBzVHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3QuY2hp
bGQgIT0gJ3VuZGVmaW5lZCciKSwgc1RydWUpOworCisgICAgLy8gYWRkIGEgZ3JhbmRjaGlsZAor
ICAgIE15UU9iamVjdCogZ3JhbmRDaGlsZCA9IG5ldyBNeVFPYmplY3QoY2hpbGQpOworICAgIGdy
YW5kQ2hpbGQtPnNldE9iamVjdE5hbWUoImdyYW5kQ2hpbGQiKTsKKy8vICBRQ09NUEFSRShldmFs
SlMoIm15T2JqZWN0LmNoaWxkLmhhc093blByb3BlcnR5KCdncmFuZENoaWxkJykiKSwgc1RydWUp
OworICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0LmNoaWxkLmdyYW5kQ2hpbGQg
IT0gJ3VuZGVmaW5lZCciKSwgc1RydWUpOworCisgICAgLy8gZGVsZXRlIGdyYW5kY2hpbGQKKyAg
ICBkZWxldGUgZ3JhbmRDaGlsZDsKKy8vICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0LmNoaWxk
Lmhhc093blByb3BlcnR5KCdncmFuZENoaWxkJykiKSwgc0ZhbHNlKTsKKyAgICBRQ09NUEFSRShl
dmFsSlMoInR5cGVvZiBteU9iamVjdC5jaGlsZC5ncmFuZENoaWxkID09ICd1bmRlZmluZWQnIiks
IHNUcnVlKTsKKworICAgIC8vIGRlbGV0ZSBjaGlsZAorICAgIGRlbGV0ZSBjaGlsZDsKKy8vICBR
Q09NUEFSRShldmFsSlMoIm15T2JqZWN0Lmhhc093blByb3BlcnR5KCdjaGlsZCcpIiksIHNGYWxz
ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3QuY2hpbGQgPT0gJ3VuZGVm
aW5lZCciKSwgc1RydWUpOworfQorCitRX0RFQ0xBUkVfTUVUQVRZUEUoUVZlY3RvcjxpbnQ+KQor
UV9ERUNMQVJFX01FVEFUWVBFKFFWZWN0b3I8ZG91YmxlPikKK1FfREVDTEFSRV9NRVRBVFlQRShR
VmVjdG9yPFFTdHJpbmc+KQorCit2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpjYWxsUXRJbnZva2Fi
bGUoKQoreworICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFPYmplY3RMaXN0PigpOworCisgICAgbV9t
eU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygi
dHlwZW9mIG15T2JqZWN0Lm15SW52b2thYmxlKCkiKSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBB
UkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMCk7CisgICAgUUNPTVBBUkUobV9t
eU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKSwgUVZhcmlhbnRMaXN0KCkpOworCisgICAgLy8g
ZXh0cmEgYXJndW1lbnRzIHNob3VsZCBzaWxlbnRseSBiZSBpZ25vcmVkCisgICAgbV9teU9iamVj
dC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9m
IG15T2JqZWN0Lm15SW52b2thYmxlKDEwLCAyMCwgMzApIiksIHNVbmRlZmluZWQpOworICAgIFFD
T01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDApOworICAgIFFDT01QQVJF
KG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCksIFFWYXJpYW50TGlzdCgpKTsKKworICAg
IG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICBRQ09NUEFSRShldmFs
SlMoInR5cGVvZiBteU9iamVjdC5teUludm9rYWJsZVdpdGhJbnRBcmcoMTIzKSIpLCBzVW5kZWZp
bmVkKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAxKTsK
KyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7
CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKS50b0lu
dCgpLCAxMjMpOworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOwor
ICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0Lm15SW52b2thYmxlV2l0aEludEFy
ZygnMTIzJykiKSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5j
dGlvbkludm9rZWQoKSwgMSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFj
dHVhbHMoKS5zaXplKCksIDEpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25B
Y3R1YWxzKCkuYXQoMCkudG9JbnQoKSwgMTIzKTsKKworICAgIG1fbXlPYmplY3QtPnJlc2V0UXRG
dW5jdGlvbkludm9rZWQoKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5t
eUludm9rYWJsZVdpdGhMb25nbG9uZ0FyZygxMjMpIiksIHNVbmRlZmluZWQpOworICAgIFFDT01Q
QVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDIpOworICAgIFFDT01QQVJFKG1f
bXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAxKTsKKyAgICBRQ09NUEFSRSht
X215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLnRvTG9uZ0xvbmcoKSwgcWxvbmds
b25nKDEyMykpOworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOwor
ICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0Lm15SW52b2thYmxlV2l0aEZsb2F0
QXJnKDEyMy41KSIpLCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1
bmN0aW9uSW52b2tlZCgpLCAzKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9u
QWN0dWFscygpLnNpemUoKSwgMSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlv
bkFjdHVhbHMoKS5hdCgwKS50b0RvdWJsZSgpLCAxMjMuNSk7CisKKyAgICBtX215T2JqZWN0LT5y
ZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlP
YmplY3QubXlJbnZva2FibGVXaXRoRG91YmxlQXJnKDEyMy41KSIpLCBzVW5kZWZpbmVkKTsKKyAg
ICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCA0KTsKKyAgICBRQ09N
UEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7CisgICAgUUNP
TVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKS50b0RvdWJsZSgpLCAx
MjMuNSk7CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAg
UUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3QubXlJbnZva2FibGVXaXRoRG91YmxlQXJn
KG5ldyBOdW1iZXIoMTIzNC41KSkiKSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9i
amVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgNCk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+
cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3Qt
PnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCkudG9Eb3VibGUoKSwgMTIzNC41KTsKKworICAgIG1f
bXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICBRQ09NUEFSRShldmFsSlMo
InR5cGVvZiBteU9iamVjdC5teUludm9rYWJsZVdpdGhCb29sQXJnKG5ldyBCb29sZWFuKHRydWUp
KSIpLCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52
b2tlZCgpLCA1Mik7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMo
KS5zaXplKCksIDEpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxz
KCkuYXQoMCkudG9Cb29sKCksIHRydWUpOworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0
aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0Lm15SW52
b2thYmxlV2l0aFN0cmluZ0FyZygnY2lhbycpIiksIHNVbmRlZmluZWQpOworICAgIFFDT01QQVJF
KG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDUpOworICAgIFFDT01QQVJFKG1fbXlP
YmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAxKTsKKyAgICBRQ09NUEFSRShtX215
T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLnRvU3RyaW5nKCksIFFMYXRpbjFTdHJp
bmcoImNpYW8iKSk7CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3QubXlJbnZva2FibGVXaXRoU3Ry
aW5nQXJnKDEyMykiKSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRG
dW5jdGlvbkludm9rZWQoKSwgNSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlv
bkFjdHVhbHMoKS5zaXplKCksIDEpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rp
b25BY3R1YWxzKCkuYXQoMCkudG9TdHJpbmcoKSwgUUxhdGluMVN0cmluZygiMTIzIikpOworCisg
ICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2
YWxKUygidHlwZW9mIG15T2JqZWN0Lm15SW52b2thYmxlV2l0aFN0cmluZ0FyZyhudWxsKSIpLCBz
VW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgp
LCA1KTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUo
KSwgMSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgw
KS50b1N0cmluZygpLCBRU3RyaW5nKCkpOworICAgIFFWRVJJRlkobV9teU9iamVjdC0+cXRGdW5j
dGlvbkFjdHVhbHMoKS5hdCgwKS50b1N0cmluZygpLmlzRW1wdHkoKSk7CisKKyAgICBtX215T2Jq
ZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBl
b2YgbXlPYmplY3QubXlJbnZva2FibGVXaXRoU3RyaW5nQXJnKHVuZGVmaW5lZCkiKSwgc1VuZGVm
aW5lZCk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgNSk7
CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEp
OworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCkudG9T
dHJpbmcoKSwgUVN0cmluZygpKTsKKyAgICBRVkVSSUZZKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25B
Y3R1YWxzKCkuYXQoMCkudG9TdHJpbmcoKS5pc0VtcHR5KCkpOworCisgICAgbV9teU9iamVjdC0+
cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygidHlwZW9mIG15
T2JqZWN0Lm15SW52b2thYmxlV2l0aEludEFyZ3MoMTIzLCA0NTYpIiksIHNVbmRlZmluZWQpOwor
ICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDYpOworICAgIFFD
T01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAyKTsKKyAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLnRvSW50KCksIDEy
Myk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgxKS50
b0ludCgpLCA0NTYpOworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgp
OworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGVSZXR1cm5pbmdJbnQo
KSIpLCBRTGF0aW4xU3RyaW5nKCIxMjMiKSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRG
dW5jdGlvbkludm9rZWQoKSwgNyk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlv
bkFjdHVhbHMoKSwgUVZhcmlhbnRMaXN0KCkpOworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1
bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlJbnZva2Fi
bGVSZXR1cm5pbmdMb25nTG9uZygpIiksIFFMYXRpbjFTdHJpbmcoIjQ1NiIpKTsKKyAgICBRQ09N
UEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAzOSk7CisgICAgUUNPTVBBUkUo
bV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKSwgUVZhcmlhbnRMaXN0KCkpOworCisgICAg
bV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxK
UygibXlPYmplY3QubXlJbnZva2FibGVSZXR1cm5pbmdTdHJpbmcoKSIpLCBRTGF0aW4xU3RyaW5n
KCJjaWFvIikpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCks
IDgpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCksIFFWYXJp
YW50TGlzdCgpKTsKKworICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsK
KyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5teUludm9rYWJsZVdpdGhJbnRB
cmcoMTIzLCA0NTYpIiksIHNVbmRlZmluZWQpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0
RnVuY3Rpb25JbnZva2VkKCksIDkpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rp
b25BY3R1YWxzKCkuc2l6ZSgpLCAyKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0
aW9uQWN0dWFscygpLmF0KDApLnRvSW50KCksIDEyMyk7CisgICAgUUNPTVBBUkUobV9teU9iamVj
dC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgxKS50b0ludCgpLCA0NTYpOworCisgICAgbV9teU9i
amVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygidHlw
ZW9mIG15T2JqZWN0Lm15SW52b2thYmxlV2l0aFZvaWRTdGFyQXJnKG51bGwpIiksIHNVbmRlZmlu
ZWQpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDQ0KTsK
KyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgeworICAgICAg
ICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0gZXZhbEpTKCJteU9iamVjdC5t
eUludm9rYWJsZVdpdGhWb2lkU3RhckFyZygxMjMpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJF
KHR5cGUsIHNFcnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJy
b3I6IGluY29tcGF0aWJsZSB0eXBlIG9mIGFyZ3VtZW50KHMpIGluIGNhbGwgdG8gbXlJbnZva2Fi
bGVXaXRoVm9pZFN0YXJBcmcoKTsgY2FuZGlkYXRlcyB3ZXJlXG4gICAgbXlJbnZva2FibGVXaXRo
Vm9pZFN0YXJBcmcodm9pZCopIikpOworICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1
bmN0aW9uSW52b2tlZCgpLCAtMSk7CisgICAgfQorCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1
bmN0aW9uSW52b2tlZCgpOworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBR
U3RyaW5nIHJldCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGVXaXRoQW1iaWd1b3VzQXJn
KDEyMykiLCB0eXBlKTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwgc0Vycm9yKTsKKyAgICAgICAg
UUNPTVBBUkUocmV0LCBRTGF0aW4xU3RyaW5nKCJFcnJvcjogYW1iaWd1b3VzIGNhbGwgb2Ygb3Zl
cmxvYWRlZCBmdW5jdGlvbiBteUludm9rYWJsZVdpdGhBbWJpZ3VvdXNBcmcoKTsgY2FuZGlkYXRl
cyB3ZXJlXG4gICAgbXlJbnZva2FibGVXaXRoQW1iaWd1b3VzQXJnKGludClcbiAgICBteUludm9r
YWJsZVdpdGhBbWJpZ3VvdXNBcmcodWludCkiKSk7CisgICAgfQorCisgICAgbV9teU9iamVjdC0+
cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOwor
ICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGVXaXRoRGVm
YXVsdEFyZ3MoMTIzLCAnaGVsbG8nKSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBz
VW5kZWZpbmVkKTsKKyAgICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9r
ZWQoKSwgNDcpOworICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFs
cygpLnNpemUoKSwgMik7CisgICAgICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25B
Y3R1YWxzKCkuYXQoMCkudG9JbnQoKSwgMTIzKTsKKyAgICAgICAgUUNPTVBBUkUobV9teU9iamVj
dC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgxKS50b1N0cmluZygpLCBRTGF0aW4xU3RyaW5nKCJo
ZWxsbyIpKTsKKyAgICB9CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2Vk
KCk7CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0g
ZXZhbEpTKCJteU9iamVjdC5teUludm9rYWJsZVdpdGhEZWZhdWx0QXJncyg0NTYpIiwgdHlwZSk7
CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNVbmRlZmluZWQpOworICAgICAgICBRQ09NUEFSRSht
X215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCA0Nyk7CisgICAgICAgIFFDT01QQVJFKG1f
bXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAyKTsKKyAgICAgICAgUUNPTVBB
UkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKS50b0ludCgpLCA0NTYpOwor
ICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDEpLnRv
U3RyaW5nKCksIFFTdHJpbmcoKSk7CisgICAgfQorCisgICAgLy8gY2FsbGluZyBmdW5jdGlvbiB0
aGF0IHJldHVybnMgKGNvbnN0KXJlZgorICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbklu
dm9rZWQoKTsKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyBy
ZXQgPSBldmFsSlMoInR5cGVvZiBteU9iamVjdC5teUludm9rYWJsZVJldHVybmluZ1JlZigpIik7
CisgICAgICAgIFFDT01QQVJFKHJldCwgc1VuZGVmaW5lZCk7CisgICAgICAgIFFDT01QQVJFKG1f
bXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDQ4KTsKKyAgICB9CisKKyAgICBtX215T2Jq
ZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgeworICAgICAgICBRU3RyaW5nIHR5
cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0gZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3QubXlJbnZv
a2FibGVSZXR1cm5pbmdDb25zdFJlZigpIik7CisgICAgICAgIFFDT01QQVJFKHJldCwgc1VuZGVm
aW5lZCk7CisgICAgICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCks
IDQ5KTsKKyAgICB9CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7
CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2
YWxKU1YoIm15T2JqZWN0Lm15SW52b2thYmxlUmV0dXJuaW5nUU9iamVjdFN0YXIoKSIsIHR5cGUp
OworICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAxMyk7
CisgICAgICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgp
LCAwKTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwgc09iamVjdCk7CisgICAgICAgIFFDT01QQVJF
KHJldC51c2VyVHlwZSgpLCBpbnQoUU1ldGFUeXBlOjpRT2JqZWN0U3RhcikpOworICAgIH0KKwor
ICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICB7CisgICAgICAg
IFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVZhcmlhbnQgcmV0ID0gZXZhbEpTVigibXlPYmplY3Qu
bXlJbnZva2FibGVXaXRoUU9iamVjdExpc3RBcmcoW215T2JqZWN0XSkiLCB0eXBlKTsKKyAgICAg
ICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMTQpOworICAgICAg
ICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7Cisg
ICAgICAgIFFDT01QQVJFKHR5cGUsIHNBcnJheSk7CisgICAgICAgIFFDT01QQVJFKHJldC51c2Vy
VHlwZSgpLCBpbnQoUVZhcmlhbnQ6Okxpc3QpKTsgLy8gQWxsIGxpc3RzIGdldCBkb3duZ3JhZGVk
IHRvIFFWYXJpYW50TGlzdAorICAgICAgICBRVmFyaWFudExpc3QgdmwgPSBxdmFyaWFudF9jYXN0
PFFWYXJpYW50TGlzdD4ocmV0KTsKKyAgICAgICAgUUNPTVBBUkUodmwuY291bnQoKSwgMSk7Cisg
ICAgfQorCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIHsK
KyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBtX215T2JqZWN0LT5zZXRWYXJpYW50UHJv
cGVydHkoUVZhcmlhbnQoMTIzKSk7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2YWxKU1YoIm15
T2JqZWN0Lm15SW52b2thYmxlV2l0aFZhcmlhbnRBcmcobXlPYmplY3QudmFyaWFudFByb3BlcnR5
KSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzTnVtYmVyKTsKKyAgICAgICAgUUNP
TVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMTUpOworICAgICAgICBRQ09N
UEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7CisgICAgICAg
IFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCksIG1fbXlPYmpl
Y3QtPnZhcmlhbnRQcm9wZXJ0eSgpKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LnVzZXJUeXBlKCks
IGludChRTWV0YVR5cGU6OkRvdWJsZSkpOyAvLyBhbGwgSlMgbnVtYmVycyBhcmUgZG91Ymxlcywg
ZXZlbiB0aG91Z2ggdGhpcyBzdGFydGVkIGFzIGFuIGludAorICAgICAgICBRQ09NUEFSRShyZXQu
dG9JbnQoKSwgMTIzKTsKKyAgICB9CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25J
bnZva2VkKCk7CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFWYXJpYW50
IHJldCA9IGV2YWxKU1YoIm15T2JqZWN0Lm15SW52b2thYmxlV2l0aFZhcmlhbnRBcmcobnVsbCki
LCB0eXBlKTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwgc09iamVjdCk7CisgICAgICAgIFFDT01Q
QVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDE1KTsKKyAgICAgICAgUUNPTVBB
UkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOworICAgICAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLCBRVmFyaWFudCgp
KTsKKyAgICAgICAgUVZFUklGWSghbV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgw
KS5pc1ZhbGlkKCkpOworICAgIH0KKworICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbklu
dm9rZWQoKTsKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVZhcmlhbnQg
cmV0ID0gZXZhbEpTVigibXlPYmplY3QubXlJbnZva2FibGVXaXRoVmFyaWFudEFyZyh1bmRlZmlu
ZWQpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNPYmplY3QpOworICAgICAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAxNSk7CisgICAgICAgIFFD
T01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAxKTsKKyAgICAg
ICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKSwgUVZhcmlh
bnQoKSk7CisgICAgICAgIFFWRVJJRlkoIW1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCku
YXQoMCkuaXNWYWxpZCgpKTsKKyAgICB9CisKKyAgICAvKiBYRkFJTCAtIHZhcmlhbnQgc3VwcG9y
dAorICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICB7CisgICAg
ICAgIG1fbXlPYmplY3QtPnNldFZhcmlhbnRQcm9wZXJ0eShRVmFyaWFudDo6ZnJvbVZhbHVlKFFC
cnVzaCgpKSk7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZv
a2FibGVXaXRoVmFyaWFudEFyZyhteU9iamVjdC52YXJpYW50UHJvcGVydHkpIik7CisgICAgICAg
IFFWRVJJRlkocmV0LmlzVmFyaWFudCgpKTsKKyAgICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+
cXRGdW5jdGlvbkludm9rZWQoKSwgMTUpOworICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5x
dEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7CisgICAgICAgIFFDT01QQVJFKHJldC50b1Zh
cmlhbnQoKSwgbV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKSk7CisgICAgICAg
IFFDT01QQVJFKHJldC50b1ZhcmlhbnQoKSwgbV9teU9iamVjdC0+dmFyaWFudFByb3BlcnR5KCkp
OworICAgIH0KKyAgICAqLworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tl
ZCgpOworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBRVmFyaWFudCByZXQg
PSBldmFsSlNWKCJteU9iamVjdC5teUludm9rYWJsZVdpdGhWYXJpYW50QXJnKDEyMykiLCB0eXBl
KTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwgc051bWJlcik7CisgICAgICAgIFFDT01QQVJFKG1f
bXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDE1KTsKKyAgICAgICAgUUNPTVBBUkUobV9t
eU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOworICAgICAgICBRQ09NUEFS
RShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLCBRVmFyaWFudCgxMjMpKTsK
KyAgICAgICAgUUNPTVBBUkUocmV0LnVzZXJUeXBlKCksIGludChRTWV0YVR5cGU6OkRvdWJsZSkp
OworICAgICAgICBRQ09NUEFSRShyZXQudG9JbnQoKSwgMTIzKTsKKyAgICB9CisKKyAgICBtX215
T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgeworICAgICAgICBRU3RyaW5n
IHR5cGU7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2YWxKU1YoIm15T2JqZWN0Lm15SW52b2th
YmxlV2l0aFZhcmlhbnRNYXBBcmcoeyBhOjEyMywgYjonY2lhbycgfSkiLCB0eXBlKTsKKyAgICAg
ICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMTYpOworICAgICAg
ICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7CisK
KyAgICAgICAgUVZhcmlhbnQgdiA9IG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQo
MCk7CisgICAgICAgIFFDT01QQVJFKHYudXNlclR5cGUoKSwgaW50KFFNZXRhVHlwZTo6UVZhcmlh
bnRNYXApKTsKKworICAgICAgICBRVmFyaWFudE1hcCB2bWFwID0gcXZhcmlhbnRfY2FzdDxRVmFy
aWFudE1hcD4odik7CisgICAgICAgIFFDT01QQVJFKHZtYXAua2V5cygpLnNpemUoKSwgMik7Cisg
ICAgICAgIFFDT01QQVJFKHZtYXAua2V5cygpLmF0KDApLCBRTGF0aW4xU3RyaW5nKCJhIikpOwor
ICAgICAgICBRQ09NUEFSRSh2bWFwLnZhbHVlKCJhIiksIFFWYXJpYW50KDEyMykpOworICAgICAg
ICBRQ09NUEFSRSh2bWFwLmtleXMoKS5hdCgxKSwgUUxhdGluMVN0cmluZygiYiIpKTsKKyAgICAg
ICAgUUNPTVBBUkUodm1hcC52YWx1ZSgiYiIpLCBRVmFyaWFudCgiY2lhbyIpKTsKKworICAgICAg
ICBRQ09NUEFSRSh0eXBlLCBzT2JqZWN0KTsKKworICAgICAgICBRQ09NUEFSRShyZXQudXNlclR5
cGUoKSwgaW50KFFNZXRhVHlwZTo6UVZhcmlhbnRNYXApKTsKKyAgICAgICAgdm1hcCA9IHF2YXJp
YW50X2Nhc3Q8UVZhcmlhbnRNYXA+KHJldCk7CisgICAgICAgIFFDT01QQVJFKHZtYXAua2V5cygp
LnNpemUoKSwgMik7CisgICAgICAgIFFDT01QQVJFKHZtYXAua2V5cygpLmF0KDApLCBRTGF0aW4x
U3RyaW5nKCJhIikpOworICAgICAgICBRQ09NUEFSRSh2bWFwLnZhbHVlKCJhIiksIFFWYXJpYW50
KDEyMykpOworICAgICAgICBRQ09NUEFSRSh2bWFwLmtleXMoKS5hdCgxKSwgUUxhdGluMVN0cmlu
ZygiYiIpKTsKKyAgICAgICAgUUNPTVBBUkUodm1hcC52YWx1ZSgiYiIpLCBRVmFyaWFudCgiY2lh
byIpKTsKKyAgICB9CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7
CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2
YWxKU1YoIm15T2JqZWN0Lm15SW52b2thYmxlV2l0aExpc3RPZkludEFyZyhbMSwgNV0pIiwgdHlw
ZSk7CisgICAgICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDE3
KTsKKyAgICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXpl
KCksIDEpOworICAgICAgICBRVmFyaWFudCB2ID0gbV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVh
bHMoKS5hdCgwKTsKKyAgICAgICAgUUNPTVBBUkUodi51c2VyVHlwZSgpLCBxTWV0YVR5cGVJZDxR
TGlzdDxpbnQ+ID4oKSk7CisgICAgICAgIFFMaXN0PGludD4gaWxzdCA9IHF2YXJpYW50X2Nhc3Q8
UUxpc3Q8aW50PiA+KHYpOworICAgICAgICBRQ09NUEFSRShpbHN0LnNpemUoKSwgMik7CisgICAg
ICAgIFFDT01QQVJFKGlsc3QuYXQoMCksIDEpOworICAgICAgICBRQ09NUEFSRShpbHN0LmF0KDEp
LCA1KTsKKworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzQXJyYXkpOworICAgICAgICBRQ09NUEFS
RShyZXQudXNlclR5cGUoKSwgaW50KFFNZXRhVHlwZTo6UVZhcmlhbnRMaXN0KSk7IC8vIGludHMg
Z2V0IGNvbnZlcnRlZCB0byBkb3VibGVzLCBzbyB0aGlzIGlzIGEgcXZhcmlhbnRsaXN0CisgICAg
ICAgIFFWYXJpYW50TGlzdCB2bHN0ID0gcXZhcmlhbnRfY2FzdDxRVmFyaWFudExpc3Q+KHJldCk7
CisgICAgICAgIFFDT01QQVJFKHZsc3Quc2l6ZSgpLCAyKTsKKyAgICAgICAgUUNPTVBBUkUodmxz
dC5hdCgwKS50b0ludCgpLCAxKTsKKyAgICAgICAgUUNPTVBBUkUodmxzdC5hdCgxKS50b0ludCgp
LCA1KTsKKyAgICB9CisKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7
CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFWYXJpYW50IHJldCA9IGV2
YWxKU1YoIm15T2JqZWN0Lm15SW52b2thYmxlV2l0aFFPYmplY3RTdGFyQXJnKG15T2JqZWN0KSIs
IHR5cGUpOworICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgp
LCAxOCk7CisgICAgICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCku
c2l6ZSgpLCAxKTsKKyAgICAgICAgUVZhcmlhbnQgdiA9IG1fbXlPYmplY3QtPnF0RnVuY3Rpb25B
Y3R1YWxzKCkuYXQoMCk7CisgICAgICAgIFFDT01QQVJFKHYudXNlclR5cGUoKSwgaW50KFFNZXRh
VHlwZTo6UU9iamVjdFN0YXIpKTsKKyAgICAgICAgUUNPTVBBUkUocXZhcmlhbnRfY2FzdDxRT2Jq
ZWN0Kj4odiksIChRT2JqZWN0KiltX215T2JqZWN0KTsKKworICAgICAgICBRQ09NUEFSRShyZXQu
dXNlclR5cGUoKSwgaW50KFFNZXRhVHlwZTo6UU9iamVjdFN0YXIpKTsKKyAgICAgICAgUUNPTVBB
UkUocXZhcmlhbnRfY2FzdDxRT2JqZWN0Kj4ocmV0KSwgKFFPYmplY3QqKW1fbXlPYmplY3QpOwor
CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNPYmplY3QpOworICAgIH0KKworICAgIG1fbXlPYmpl
Y3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICB7CisgICAgICAgIC8vIG5vIGltcGxp
Y2l0IGNvbnZlcnNpb24gZnJvbSBpbnRlZ2VyIHRvIFFPYmplY3QqCisgICAgICAgIFFTdHJpbmcg
dHlwZTsKKyAgICAgICAgZXZhbEpTKCJteU9iamVjdC5teUludm9rYWJsZVdpdGhRT2JqZWN0U3Rh
ckFyZygxMjMpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7CisgICAg
fQorCisgICAgLyoKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7Cisg
ICAgeworICAgICAgICBRU3RyaW5nIGZ1biA9IGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGVX
aXRoUUJydXNoQXJnIik7CisgICAgICAgIFFfQVNTRVJUKGZ1bi5pc0Z1bmN0aW9uKCkpOworICAg
ICAgICBRQ29sb3IgY29sb3IoMTAsIDIwLCAzMCwgNDApOworICAgICAgICAvLyBRQ29sb3Igc2hv
dWxkIGJlIGNvbnZlcnRlZCB0byBhIFFCcnVzaAorICAgICAgICBRVmFyaWFudCByZXQgPSBmdW4u
Y2FsbChRU3RyaW5nKCksIFFTdHJpbmdMaXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IHFTY3JpcHRWYWx1ZUZyb21WYWx1ZShtX2VuZ2luZSwgY29sb3IpKTsKKyAg
ICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMTkpOworICAg
ICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7
CisgICAgICAgIFFWYXJpYW50IHYgPSBtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0
KDApOworICAgICAgICBRQ09NUEFSRSh2LnVzZXJUeXBlKCksIGludChRTWV0YVR5cGU6OlFCcnVz
aCkpOworICAgICAgICBRQ09NUEFSRShxdmFyaWFudF9jYXN0PFFDb2xvcj4odiksIGNvbG9yKTsK
KworICAgICAgICBRQ09NUEFSRShxc2NyaXB0dmFsdWVfY2FzdDxRQ29sb3I+KHJldCksIGNvbG9y
KTsKKyAgICB9CisgICAgKi8KKworICAgIC8vIHByaXZhdGUgc2xvdHMgc2hvdWxkIG5vdCBiZSBw
YXJ0IG9mIHRoZSBRT2JqZWN0IGJpbmRpbmcKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBt
eU9iamVjdC5teVByaXZhdGVTbG90IiksIHNVbmRlZmluZWQpOworCisgICAgLy8gcHJvdGVjdGVk
IHNsb3RzIHNob3VsZCBiZSBmaW5lCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52
b2tlZCgpOworICAgIGV2YWxKUygibXlPYmplY3QubXlQcm90ZWN0ZWRTbG90KCkiKTsKKyAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAzNik7CisKKyAgICAvLyBj
YWxsIHdpdGggdG9vIGZldyBhcmd1bWVudHMKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsK
KyAgICAgICAgUVN0cmluZyByZXQgPSBldmFsSlMoIm15T2JqZWN0Lm15SW52b2thYmxlV2l0aElu
dEFyZygpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7CisgICAgICAg
IFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IHRvbyBmZXcgYXJndW1lbnRzIGlu
IGNhbGwgdG8gbXlJbnZva2FibGVXaXRoSW50QXJnKCk7IGNhbmRpZGF0ZXMgYXJlXG4gICAgbXlJ
bnZva2FibGVXaXRoSW50QXJnKGludCxpbnQpXG4gICAgbXlJbnZva2FibGVXaXRoSW50QXJnKGlu
dCkiKSk7CisgICAgfQorCisgICAgLy8gY2FsbCBmdW5jdGlvbiB3aGVyZSBub3QgYWxsIHR5cGVz
IGhhdmUgYmVlbiByZWdpc3RlcmVkCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52
b2tlZCgpOworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBRU3RyaW5nIHJl
dCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGVXaXRoQnJ1c2hTdHlsZUFyZygwKSIsIHR5
cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShy
ZXQsIFFMYXRpbjFTdHJpbmcoIkVycm9yOiBjYW5ub3QgY2FsbCBteUludm9rYWJsZVdpdGhCcnVz
aFN0eWxlQXJnKCk6IHVua25vd24gdHlwZSBgUXQ6OkJydXNoU3R5bGUnIikpOworICAgICAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAtMSk7CisgICAgfQorCisg
ICAgLy8gY2FsbCBmdW5jdGlvbiB3aXRoIGluY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlCisgICAg
bV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIHsKKyAgICAgICAgUVN0
cmluZyB0eXBlOworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZv
a2FibGVXaXRoUUJydXNoQXJnKG51bGwpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUs
IHNFcnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IGlu
Y29tcGF0aWJsZSB0eXBlIG9mIGFyZ3VtZW50KHMpIGluIGNhbGwgdG8gbXlJbnZva2FibGVXaXRo
UUJydXNoQXJnKCk7IGNhbmRpZGF0ZXMgd2VyZVxuICAgIG15SW52b2thYmxlV2l0aFFCcnVzaEFy
ZyhRQnJ1c2gpIikpOworICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52
b2tlZCgpLCAtMSk7CisgICAgfQorfQorCit2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpjb25uZWN0
QW5kRGlzY29ubmVjdCgpCit7CisgICAgLy8gY29ubmVjdChmdW5jdGlvbikKKyAgICBRQ09NUEFS
RShldmFsSlMoInR5cGVvZiBteU9iamVjdC5teVNpZ25hbCIpLCBzRnVuY3Rpb24pOworICAgIFFD
T01QQVJFKGV2YWxKUygidHlwZW9mIG15T2JqZWN0Lm15U2lnbmFsLmNvbm5lY3QiKSwgc0Z1bmN0
aW9uKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5cGVvZiBteU9iamVjdC5teVNpZ25hbC5kaXNj
b25uZWN0IiksIHNGdW5jdGlvbik7CisKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAg
ICAgICAgZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbC5jb25uZWN0KDEyMykiLCB0eXBlKTsKKyAg
ICAgICAgUUNPTVBBUkUodHlwZSwgc0Vycm9yKTsKKyAgICB9CisKKyAgICBldmFsSlMoIm15SGFu
ZGxlciA9IGZ1bmN0aW9uKCkgeyB3aW5kb3cuZ290U2lnbmFsID0gdHJ1ZTsgd2luZG93LnNpZ25h
bEFyZ3MgPSBhcmd1bWVudHM7IHdpbmRvdy5zbG90VGhpc09iamVjdCA9IHRoaXM7IH0iKTsKKwor
ICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlTaWduYWwuY29ubmVjdChteUhhbmRsZXIp
IiksIHNVbmRlZmluZWQpOworCisgICAgZXZhbEpTKCJnb3RTaWduYWwgPSBmYWxzZSIpOworICAg
IGV2YWxKUygibXlPYmplY3QubXlTaWduYWwoKSIpOworICAgIFFDT01QQVJFKGV2YWxKUygiZ290
U2lnbmFsIiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInNpZ25hbEFyZ3MubGVuZ3Ro
ID09IDAiKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygic2xvdFRoaXNPYmplY3QgPT0g
d2luZG93IiksIHNUcnVlKTsKKworICAgIGV2YWxKUygiZ290U2lnbmFsID0gZmFsc2UiKTsKKyAg
ICBtX215T2JqZWN0LT5lbWl0TXlTaWduYWwoKTsKKyAgICBRQ09NUEFSRShldmFsSlMoImdvdFNp
Z25hbCIpLCBzVHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJzaWduYWxBcmdzLmxlbmd0aCA9
PSAwIiksIHNUcnVlKTsKKworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlTaWduYWxX
aXRoSW50QXJnLmNvbm5lY3QobXlIYW5kbGVyKSIpLCBzVW5kZWZpbmVkKTsKKworICAgIGV2YWxK
UygiZ290U2lnbmFsID0gZmFsc2UiKTsKKyAgICBtX215T2JqZWN0LT5lbWl0TXlTaWduYWxXaXRo
SW50QXJnKDEyMyk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJnb3RTaWduYWwiKSwgc1RydWUpOwor
ICAgIFFDT01QQVJFKGV2YWxKUygic2lnbmFsQXJncy5sZW5ndGggPT0gMSIpLCBzVHJ1ZSk7Cisg
ICAgUUNPTVBBUkUoZXZhbEpTKCJzaWduYWxBcmdzWzBdID09IDEyMy4wIiksIHNUcnVlKTsKKwor
ICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlTaWduYWwuZGlzY29ubmVjdChteUhhbmRs
ZXIpIiksIHNVbmRlZmluZWQpOworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAg
ICBldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsLmRpc2Nvbm5lY3QobXlIYW5kbGVyKSIsIHR5cGUp
OworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgIH0KKworICAgIGV2YWxKUygi
Z290U2lnbmFsID0gZmFsc2UiKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2ln
bmFsMi5jb25uZWN0KG15SGFuZGxlcikiKSwgc1VuZGVmaW5lZCk7CisgICAgbV9teU9iamVjdC0+
ZW1pdE15U2lnbmFsMih0cnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoImdvdFNpZ25hbCIpLCBz
VHJ1ZSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJzaWduYWxBcmdzLmxlbmd0aCA9PSAxIiksIHNU
cnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInNpZ25hbEFyZ3NbMF0iKSwgc1RydWUpOworCisg
ICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbDIuZGlzY29ubmVjdChteUhhbmRs
ZXIpIiksIHNVbmRlZmluZWQpOworCisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmpl
Y3RbJ215U2lnbmFsMigpJ10iKSwgc0Z1bmN0aW9uKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInR5
cGVvZiBteU9iamVjdFsnbXlTaWduYWwyKCknXS5jb25uZWN0IiksIHNGdW5jdGlvbik7CisgICAg
UUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgbXlPYmplY3RbJ215U2lnbmFsMigpJ10uZGlzY29ubmVj
dCIpLCBzRnVuY3Rpb24pOworCisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdFsnbXlTaWdu
YWwyKCknXS5jb25uZWN0KG15SGFuZGxlcikiKSwgc1VuZGVmaW5lZCk7CisKKyAgICBldmFsSlMo
ImdvdFNpZ25hbCA9IGZhbHNlIik7CisgICAgbV9teU9iamVjdC0+ZW1pdE15U2lnbmFsMigpOwor
ICAgIFFDT01QQVJFKGV2YWxKUygiZ290U2lnbmFsIiksIHNUcnVlKTsKKworICAgIFFDT01QQVJF
KGV2YWxKUygibXlPYmplY3RbJ215U2lnbmFsMigpJ10uZGlzY29ubmVjdChteUhhbmRsZXIpIiks
IHNVbmRlZmluZWQpOworCisgICAgLy8gY29ubmVjdChvYmplY3QsIGZ1bmN0aW9uKQorICAgIGV2
YWxKUygib3RoZXJPYmplY3QgPSB7IG5hbWU6J2ZvbycgfSIpOworICAgIFFDT01QQVJFKGV2YWxK
UygibXlPYmplY3QubXlTaWduYWwuY29ubmVjdChvdGhlck9iamVjdCwgbXlIYW5kbGVyKSIpLCBz
VW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsLmRpc2Nv
bm5lY3Qob3RoZXJPYmplY3QsIG15SGFuZGxlcikiKSwgc1VuZGVmaW5lZCk7CisgICAgZXZhbEpT
KCJnb3RTaWduYWwgPSBmYWxzZSIpOworICAgIG1fbXlPYmplY3QtPmVtaXRNeVNpZ25hbCgpOwor
ICAgIFFDT01QQVJFKGV2YWxKUygiZ290U2lnbmFsIiksIHNGYWxzZSk7CisKKyAgICB7CisgICAg
ICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbC5kaXNj
b25uZWN0KG90aGVyT2JqZWN0LCBteUhhbmRsZXIpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJF
KHR5cGUsIHNFcnJvcik7CisgICAgfQorCisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5t
eVNpZ25hbC5jb25uZWN0KG90aGVyT2JqZWN0LCBteUhhbmRsZXIpIiksIHNVbmRlZmluZWQpOwor
ICAgIGV2YWxKUygiZ290U2lnbmFsID0gZmFsc2UiKTsKKyAgICBtX215T2JqZWN0LT5lbWl0TXlT
aWduYWwoKTsKKyAgICBRQ09NUEFSRShldmFsSlMoImdvdFNpZ25hbCIpLCBzVHJ1ZSk7CisgICAg
UUNPTVBBUkUoZXZhbEpTKCJzaWduYWxBcmdzLmxlbmd0aCA9PSAwIiksIHNUcnVlKTsKKyAgICBR
Q09NUEFSRShldmFsSlMoInNsb3RUaGlzT2JqZWN0IiksIGV2YWxKUygib3RoZXJPYmplY3QiKSk7
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJzbG90VGhpc09iamVjdC5uYW1lIiksIFFMYXRpbjFTdHJp
bmcoImZvbyIpKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsLmRpc2Nv
bm5lY3Qob3RoZXJPYmplY3QsIG15SGFuZGxlcikiKSwgc1VuZGVmaW5lZCk7CisKKyAgICBldmFs
SlMoInlldEFub3RoZXJPYmplY3QgPSB7IG5hbWU6J2JhcicsIGZ1bmMgOiBmdW5jdGlvbigpIHsg
fSB9Iik7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbDIuY29ubmVjdCh5
ZXRBbm90aGVyT2JqZWN0LCBteUhhbmRsZXIpIiksIHNVbmRlZmluZWQpOworICAgIGV2YWxKUygi
Z290U2lnbmFsID0gZmFsc2UiKTsKKyAgICBtX215T2JqZWN0LT5lbWl0TXlTaWduYWwyKHRydWUp
OworICAgIFFDT01QQVJFKGV2YWxKUygiZ290U2lnbmFsIiksIHNUcnVlKTsKKyAgICBRQ09NUEFS
RShldmFsSlMoInNpZ25hbEFyZ3MubGVuZ3RoID09IDEiKSwgc1RydWUpOworICAgIFFDT01QQVJF
KGV2YWxKUygic2xvdFRoaXNPYmplY3QgPT0geWV0QW5vdGhlck9iamVjdCIpLCBzVHJ1ZSk7Cisg
ICAgUUNPTVBBUkUoZXZhbEpTKCJzbG90VGhpc09iamVjdC5uYW1lIiksIFFMYXRpbjFTdHJpbmco
ImJhciIpKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsMi5kaXNjb25u
ZWN0KHlldEFub3RoZXJPYmplY3QsIG15SGFuZGxlcikiKSwgc1VuZGVmaW5lZCk7CisKKyAgICBR
Q09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsMi5jb25uZWN0KG15T2JqZWN0LCBteUhh
bmRsZXIpIiksIHNVbmRlZmluZWQpOworICAgIGV2YWxKUygiZ290U2lnbmFsID0gZmFsc2UiKTsK
KyAgICBtX215T2JqZWN0LT5lbWl0TXlTaWduYWwyKHRydWUpOworICAgIFFDT01QQVJFKGV2YWxK
UygiZ290U2lnbmFsIiksIHNUcnVlKTsKKyAgICBRQ09NUEFSRShldmFsSlMoInNpZ25hbEFyZ3Mu
bGVuZ3RoID09IDEiKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygic2xvdFRoaXNPYmpl
Y3QgPT0gbXlPYmplY3QiKSwgc1RydWUpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Qu
bXlTaWduYWwyLmRpc2Nvbm5lY3QobXlPYmplY3QsIG15SGFuZGxlcikiKSwgc1VuZGVmaW5lZCk7
CisKKyAgICAvLyBjb25uZWN0KG9iaiwgc3RyaW5nKQorICAgIHsKKyAgICAgICAgUVN0cmluZyB0
eXBlOworICAgICAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsLmNvbm5lY3Qo
eWV0QW5vdGhlck9iamVjdCwgJ2Z1bmMnKSIsIHR5cGUpLCBzVW5kZWZpbmVkKTsKKyAgICAgICAg
UUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbC5jb25uZWN0KG15T2JqZWN0LCAnbXlT
bG90JykiLCB0eXBlKSwgc1VuZGVmaW5lZCk7CisgICAgICAgIFFDT01QQVJFKGV2YWxKUygibXlP
YmplY3QubXlTaWduYWwuZGlzY29ubmVjdCh5ZXRBbm90aGVyT2JqZWN0LCAnZnVuYycpIiwgdHlw
ZSksIHNVbmRlZmluZWQpOworICAgICAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2ln
bmFsLmRpc2Nvbm5lY3QobXlPYmplY3QsICdteVNsb3QnKSIsIHR5cGUpLCBzVW5kZWZpbmVkKTsK
KyAgICB9CisKKyAgICAvLyBjaGVjayB0aGF0IGVtaXR0aW5nIHNpZ25hbHMgZnJvbSBzY3JpcHQg
d29ya3MKKworICAgIC8vIG5vIGFyZ3VtZW50cworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmpl
Y3QubXlTaWduYWwuY29ubmVjdChteU9iamVjdC5teVNsb3QpIiksIHNVbmRlZmluZWQpOworICAg
IG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICBRQ09NUEFSRShldmFs
SlMoIm15T2JqZWN0Lm15U2lnbmFsKCkiKSwgc1VuZGVmaW5lZCk7CisgICAgUUNPTVBBUkUobV9t
eU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMjApOworICAgIFFDT01QQVJFKGV2YWxKUygi
bXlPYmplY3QubXlTaWduYWwuZGlzY29ubmVjdChteU9iamVjdC5teVNsb3QpIiksIHNVbmRlZmlu
ZWQpOworCisgICAgLy8gb25lIGFyZ3VtZW50CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVj
dC5teVNpZ25hbFdpdGhJbnRBcmcuY29ubmVjdChteU9iamVjdC5teVNsb3RXaXRoSW50QXJnKSIp
LCBzVW5kZWZpbmVkKTsKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbFdpdGhJbnRBcmcoMTIzKSIp
LCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tl
ZCgpLCAyMSk7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5z
aXplKCksIDEpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCku
YXQoMCkudG9JbnQoKSwgMTIzKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2ln
bmFsV2l0aEludEFyZy5kaXNjb25uZWN0KG15T2JqZWN0Lm15U2xvdFdpdGhJbnRBcmcpIiksIHNV
bmRlZmluZWQpOworCisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbFdpdGhJ
bnRBcmcuY29ubmVjdChteU9iamVjdC5teVNsb3RXaXRoRG91YmxlQXJnKSIpLCBzVW5kZWZpbmVk
KTsKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgUUNPTVBB
UkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbFdpdGhJbnRBcmcoMTIzKSIpLCBzVW5kZWZpbmVk
KTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAyMik7Cisg
ICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOwor
ICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCkudG9Eb3Vi
bGUoKSwgMTIzLjApOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlTaWduYWxXaXRo
SW50QXJnLmRpc2Nvbm5lY3QobXlPYmplY3QubXlTbG90V2l0aERvdWJsZUFyZykiKSwgc1VuZGVm
aW5lZCk7CisKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsV2l0aEludEFy
Zy5jb25uZWN0KG15T2JqZWN0Lm15U2xvdFdpdGhTdHJpbmdBcmcpIiksIHNVbmRlZmluZWQpOwor
ICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICBRQ09NUEFSRShl
dmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsV2l0aEludEFyZygxMjMpIiksIHNVbmRlZmluZWQpOwor
ICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDIzKTsKKyAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7CisgICAg
UUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKS50b1N0cmluZygp
LCBRTGF0aW4xU3RyaW5nKCIxMjMiKSk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5t
eVNpZ25hbFdpdGhJbnRBcmcuZGlzY29ubmVjdChteU9iamVjdC5teVNsb3RXaXRoU3RyaW5nQXJn
KSIpLCBzVW5kZWZpbmVkKTsKKworICAgIC8vIGNvbm5lY3RpbmcgdG8gb3ZlcmxvYWRlZCBzbG90
CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbFdpdGhJbnRBcmcuY29ubmVj
dChteU9iamVjdC5teU92ZXJsb2FkZWRTbG90KSIpLCBzVW5kZWZpbmVkKTsKKyAgICBtX215T2Jq
ZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9i
amVjdC5teVNpZ25hbFdpdGhJbnRBcmcoMTIzKSIpLCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFS
RShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAyNik7IC8vIGRvdWJsZSBvdmVybG9h
ZAorICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAx
KTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLnRv
SW50KCksIDEyMyk7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbFdpdGhJ
bnRBcmcuZGlzY29ubmVjdChteU9iamVjdC5teU92ZXJsb2FkZWRTbG90KSIpLCBzVW5kZWZpbmVk
KTsKKworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlTaWduYWxXaXRoSW50QXJnLmNv
bm5lY3QobXlPYmplY3RbJ215T3ZlcmxvYWRlZFNsb3QoaW50KSddKSIpLCBzVW5kZWZpbmVkKTsK
KyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgUUNPTVBBUkUo
ZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbFdpdGhJbnRBcmcoNDU2KSIpLCBzVW5kZWZpbmVkKTsK
KyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAyOCk7IC8vIGlu
dCBvdmVybG9hZAorICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCku
c2l6ZSgpLCAxKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uQWN0dWFscygp
LmF0KDApLnRvSW50KCksIDQ1Nik7CisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNp
Z25hbFdpdGhJbnRBcmcuZGlzY29ubmVjdChteU9iamVjdFsnbXlPdmVybG9hZGVkU2xvdChpbnQp
J10pIiksIHNVbmRlZmluZWQpOworCisgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC5teVNp
Z25hbFdpdGhJbnRBcmcuY29ubmVjdChteU9iamVjdCwgJ215T3ZlcmxvYWRlZFNsb3QoaW50KScp
IiksIHNVbmRlZmluZWQpOworICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQo
KTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsV2l0aEludEFyZyg0NTYp
IiksIHNVbmRlZmluZWQpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZv
a2VkKCksIDI4KTsgLy8gaW50IG92ZXJsb2FkCisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRG
dW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0
RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCkudG9JbnQoKSwgNDU2KTsKKyAgICBRQ09NUEFSRShldmFs
SlMoIm15T2JqZWN0Lm15U2lnbmFsV2l0aEludEFyZy5kaXNjb25uZWN0KG15T2JqZWN0LCAnbXlP
dmVybG9hZGVkU2xvdChpbnQpJykiKSwgc1VuZGVmaW5lZCk7CisKKyAgICAvLyBlcnJvbmVvdXMg
aW5wdXQKKyAgICB7CisgICAgICAgIC8vICMjIyBRdFNjcmlwdCBhZGRzIC5jb25uZWN0IHRvIGFs
bCBmdW5jdGlvbnMsIFdlYktpdCBkb2VzIG9ubHkgdG8gc2lnbmFscy9zbG90cworICAgICAgICBR
U3RyaW5nIHR5cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0gZXZhbEpTKCIoZnVuY3Rpb24oKSB7
IH0pLmNvbm5lY3QoKSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOwor
ICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRpbjFTdHJpbmcoIlR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICcoZnVuY3Rpb24oKSB7IH0pLmNvbm5lY3Qo
KScpIikpOworICAgIH0KKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0
cmluZyByZXQgPSBldmFsSlMoInZhciBvID0geyB9OyBvLmNvbm5lY3QgPSBGdW5jdGlvbi5wcm90
b3R5cGUuY29ubmVjdDsgIG8uY29ubmVjdCgpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5
cGUsIHNFcnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiVHlwZUVy
cm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ28uY29ubmVjdCgp
JykiKSk7CisgICAgfQorCisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFT
dHJpbmcgcmV0ID0gZXZhbEpTKCIoZnVuY3Rpb24oKSB7IH0pLmNvbm5lY3QoMTIzKSIsIHR5cGUp
OworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShyZXQs
IFFMYXRpbjFTdHJpbmcoIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChl
dmFsdWF0aW5nICcoZnVuY3Rpb24oKSB7IH0pLmNvbm5lY3QoMTIzKScpIikpOworICAgIH0KKyAg
ICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyByZXQgPSBldmFsSlMo
InZhciBvID0geyB9OyBvLmNvbm5lY3QgPSBGdW5jdGlvbi5wcm90b3R5cGUuY29ubmVjdDsgIG8u
Y29ubmVjdCgxMjMpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7Cisg
ICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ28uY29ubmVjdCgxMjMpJykiKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0g
ZXZhbEpTKCJteU9iamVjdC5teUludm9rYWJsZS5jb25uZWN0KDEyMykiLCB0eXBlKTsKKyAgICAg
ICAgUUNPTVBBUkUodHlwZSwgc0Vycm9yKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LCBRTGF0aW4x
U3RyaW5nKCJFcnJvcjogUXRNZXRhTWV0aG9kLmNvbm5lY3Q6IE15UU9iamVjdDo6bXlJbnZva2Fi
bGUoKSBpcyBub3QgYSBzaWduYWwiKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgUVN0cmluZyB0
eXBlOworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGUu
Y29ubmVjdChmdW5jdGlvbigpIHsgfSkiLCB0eXBlKTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwg
c0Vycm9yKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LCBRTGF0aW4xU3RyaW5nKCJFcnJvcjogUXRN
ZXRhTWV0aG9kLmNvbm5lY3Q6IE15UU9iamVjdDo6bXlJbnZva2FibGUoKSBpcyBub3QgYSBzaWdu
YWwiKSk7CisgICAgfQorCisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFT
dHJpbmcgcmV0ID0gZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbC5jb25uZWN0KDEyMykiLCB0eXBl
KTsKKyAgICAgICAgUUNPTVBBUkUodHlwZSwgc0Vycm9yKTsKKyAgICAgICAgUUNPTVBBUkUocmV0
LCBRTGF0aW4xU3RyaW5nKCJFcnJvcjogUXRNZXRhTWV0aG9kLmNvbm5lY3Q6IHRhcmdldCBpcyBu
b3QgYSBmdW5jdGlvbiIpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsK
KyAgICAgICAgUVN0cmluZyByZXQgPSBldmFsSlMoInZhciByYW5kb21PYmplY3QgPSBuZXcgT2Jq
ZWN0OyBteU9iamVjdC5teVNpZ25hbC5jb25uZWN0KG15T2JqZWN0LCByYW5kb21PYmplY3QpIiwg
dHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7CisgICAgICAgIFFDT01QQVJF
KHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IFF0TWV0YU1ldGhvZC5jb25uZWN0OiB0YXJnZXQg
aXMgbm90IGEgZnVuY3Rpb24iKSk7CisgICAgfQorCisgICAgeworICAgICAgICBRU3RyaW5nIHR5
cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0gZXZhbEpTKCJteU9iamVjdC5teVNpZ25hbC5jb25u
ZWN0KG15T2JqZWN0LCAnbm9uRXhpc3RhbnRTbG90JykiLCB0eXBlKTsKKyAgICAgICAgUUNPTVBB
UkUodHlwZSwgc0Vycm9yKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LCBRTGF0aW4xU3RyaW5nKCJF
cnJvcjogUXRNZXRhTWV0aG9kLmNvbm5lY3Q6IHRhcmdldCBpcyBub3QgYSBmdW5jdGlvbiIpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyBy
ZXQgPSBldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsLmRpc2Nvbm5lY3QoKSIsIHR5cGUpOworICAg
ICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRp
bjFTdHJpbmcoIkVycm9yOiBRdE1ldGFNZXRob2QuZGlzY29ubmVjdDogbm8gYXJndW1lbnRzIGdp
dmVuIikpOworICAgIH0KKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0
cmluZyByZXQgPSBldmFsSlMoInZhciBvID0geyB9OyBvLmRpc2Nvbm5lY3QgPSBteU9iamVjdC5t
eVNpZ25hbC5kaXNjb25uZWN0OyAgby5kaXNjb25uZWN0KCkiLCB0eXBlKTsKKyAgICAgICAgUUNP
TVBBUkUodHlwZSwgc0Vycm9yKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LCBRTGF0aW4xU3RyaW5n
KCJFcnJvcjogUXRNZXRhTWV0aG9kLmRpc2Nvbm5lY3Q6IG5vIGFyZ3VtZW50cyBnaXZlbiIpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyBy
ZXQgPSBldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsLmRpc2Nvbm5lY3QobXlPYmplY3QsICdub25F
eGlzdGFudFNsb3QnKSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOwor
ICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRpbjFTdHJpbmcoIkVycm9yOiBRdE1ldGFNZXRob2Qu
ZGlzY29ubmVjdDogdGFyZ2V0IGlzIG5vdCBhIGZ1bmN0aW9uIikpOworICAgIH0KKworICAgIC8q
IFhGQUlMIC0gRnVuY3Rpb24ucHJvdG90eXBlIGRvZXNuJ3QgZ2V0IGNvbm5lY3QvZGlzY29ubmVj
dCwganVzdCBzaWduYWxzL3Nsb3RzCisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAg
ICAgIFFTdHJpbmcgcmV0ID0gZXZhbEpTKCIoZnVuY3Rpb24oKSB7IH0pLmRpc2Nvbm5lY3QoMTIz
KSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgICAgICBRQ09N
UEFSRShyZXQsIFFMYXRpbjFTdHJpbmcoIlR5cGVFcnJvcjogUXRNZXRhTWV0aG9kLmRpc2Nvbm5l
Y3Q6IHRoaXMgb2JqZWN0IGlzIG5vdCBhIHNpZ25hbCIpKTsKKyAgICB9CisgICAgKi8KKworICAg
IHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygi
dmFyIG8gPSB7IH07IG8uZGlzY29ubmVjdCA9IG15T2JqZWN0Lm15SW52b2thYmxlLmRpc2Nvbm5l
Y3Q7IG8uZGlzY29ubmVjdCgxMjMpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNF
cnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IFF0TWV0
YU1ldGhvZC5kaXNjb25uZWN0OiBNeVFPYmplY3Q6Om15SW52b2thYmxlKCkgaXMgbm90IGEgc2ln
bmFsIikpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBR
U3RyaW5nIHJldCA9IGV2YWxKUygibXlPYmplY3QubXlJbnZva2FibGUuZGlzY29ubmVjdCgxMjMp
IiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7CisgICAgICAgIFFDT01Q
QVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IFF0TWV0YU1ldGhvZC5kaXNjb25uZWN0OiBN
eVFPYmplY3Q6Om15SW52b2thYmxlKCkgaXMgbm90IGEgc2lnbmFsIikpOworICAgIH0KKyAgICB7
CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyByZXQgPSBldmFsSlMoIm15
T2JqZWN0Lm15SW52b2thYmxlLmRpc2Nvbm5lY3QoZnVuY3Rpb24oKSB7IH0pIiwgdHlwZSk7Cisg
ICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxh
dGluMVN0cmluZygiRXJyb3I6IFF0TWV0YU1ldGhvZC5kaXNjb25uZWN0OiBNeVFPYmplY3Q6Om15
SW52b2thYmxlKCkgaXMgbm90IGEgc2lnbmFsIikpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
UVN0cmluZyB0eXBlOworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygibXlPYmplY3QubXlT
aWduYWwuZGlzY29ubmVjdCgxMjMpIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNF
cnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IFF0TWV0
YU1ldGhvZC5kaXNjb25uZWN0OiB0YXJnZXQgaXMgbm90IGEgZnVuY3Rpb24iKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7CisgICAgICAgIFFTdHJpbmcgcmV0ID0gZXZh
bEpTKCJteU9iamVjdC5teVNpZ25hbC5kaXNjb25uZWN0KGZ1bmN0aW9uKCkgeyB9KSIsIHR5cGUp
OworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShyZXQs
IFFMYXRpbjFTdHJpbmcoIkVycm9yOiBRdE1ldGFNZXRob2QuZGlzY29ubmVjdDogZmFpbGVkIHRv
IGRpc2Nvbm5lY3QgZnJvbSBNeVFPYmplY3Q6Om15U2lnbmFsKCkiKSk7CisgICAgfQorCisgICAg
Ly8gd2hlbiB0aGUgd3JhcHBlciBkaWVzLCB0aGUgY29ubmVjdGlvbiBzdGF5cyBhbGl2ZQorICAg
IFFDT01QQVJFKGV2YWxKUygibXlPYmplY3QubXlTaWduYWwuY29ubmVjdChteU9iamVjdC5teVNs
b3QpIiksIHNVbmRlZmluZWQpOworICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5jdGlvbkludm9r
ZWQoKTsKKyAgICBtX215T2JqZWN0LT5lbWl0TXlTaWduYWwoKTsKKyAgICBRQ09NUEFSRShtX215
T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAyMCk7CisgICAgZXZhbEpTKCJteU9iamVjdCA9
IG51bGwiKTsKKyAgICBldmFsSlMoImdjKCkiKTsKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVu
Y3Rpb25JbnZva2VkKCk7CisgICAgbV9teU9iamVjdC0+ZW1pdE15U2lnbmFsKCk7CisgICAgUUNP
TVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMjApOworfQorCit2b2lkIHRz
dF9RT2JqZWN0QnJpZGdlOjpvdmVycmlkZUludm9rYWJsZSgpCit7CisgICAgbV9teU9iamVjdC0+
cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIFFDT01QQVJFKGV2YWxKUygibXlPYmplY3Qu
bXlJbnZva2FibGUoKSIpLCBzVW5kZWZpbmVkKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5x
dEZ1bmN0aW9uSW52b2tlZCgpLCAwKTsKKworICAgIC8qIFhGQUlMIC0gY2FuJ3Qgd3JpdGUgdG8g
ZnVuY3Rpb25zIHdpdGggUnVudGltZU9iamVjdAorICAgIG1fbXlPYmplY3QtPnJlc2V0UXRGdW5j
dGlvbkludm9rZWQoKTsKKyAgICBldmFsSlMoIm15T2JqZWN0Lm15SW52b2thYmxlID0gZnVuY3Rp
b24oKSB7IHdpbmRvdy5hID0gMTIzOyB9Iik7CisgICAgZXZhbEpTKCJteU9iamVjdC5teUludm9r
YWJsZSgpIik7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwg
LTEpOworICAgIFFDT01QQVJFKGV2YWxKUygid2luZG93LmEiKS50b0RvdWJsZSgpLCAxMjMuMCk7
CisKKyAgICBldmFsSlMoIm15T2JqZWN0Lm15SW52b2thYmxlID0gZnVuY3Rpb24oKSB7IHdpbmRv
dy5hID0gNDU2OyB9Iik7CisgICAgZXZhbEpTKCJteU9iamVjdC5teUludm9rYWJsZSgpIik7Cisg
ICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgLTEpOworICAgIFFD
T01QQVJFKGV2YWxKUygid2luZG93LmEiKS50b0RvdWJsZSgpLCA0NTYuMCk7CisgICAgKi8KKwor
ICAgIGV2YWxKUygiZGVsZXRlIG15T2JqZWN0Lm15SW52b2thYmxlIik7CisgICAgZXZhbEpTKCJt
eU9iamVjdC5teUludm9rYWJsZSgpIik7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5j
dGlvbkludm9rZWQoKSwgMCk7CisKKyAgICAvKiBYRkFJTCAtIGRpdHRvCisgICAgbV9teU9iamVj
dC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIGV2YWxKUygibXlPYmplY3QubXlJbnZv
a2FibGUgPSBteU9iamVjdC5teUludm9rYWJsZVdpdGhJbnRBcmciKTsKKyAgICBldmFsSlMoIm15
T2JqZWN0Lm15SW52b2thYmxlKDEyMykiKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1
bmN0aW9uSW52b2tlZCgpLCAxKTsKKyAgICAqLworCisgICAgZXZhbEpTKCJkZWxldGUgbXlPYmpl
Y3QubXlJbnZva2FibGUiKTsKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2Vk
KCk7CisgICAgLy8gdGhpcyBmb3JtICh3aXRoIHRoZSAnKCknKSBpcyByZWFkLW9ubHkKKyAgICBl
dmFsSlMoIm15T2JqZWN0WydteUludm9rYWJsZSgpJ10gPSBmdW5jdGlvbigpIHsgd2luZG93LmEg
PSAxMjM7IH0iKTsKKyAgICBldmFsSlMoIm15T2JqZWN0Lm15SW52b2thYmxlKCkiKTsKKyAgICBR
Q09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAwKTsKK30KKwordm9pZCB0
c3RfUU9iamVjdEJyaWRnZTo6b3ZlcmxvYWRlZFNsb3RzKCkKK3sKKyAgICAvLyBzaG91bGQgcGlj
ayBteU92ZXJsb2FkZWRTbG90KGRvdWJsZSkKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rp
b25JbnZva2VkKCk7CisgICAgZXZhbEpTKCJteU9iamVjdC5teU92ZXJsb2FkZWRTbG90KDEwKSIp
OworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDI2KTsKKwor
ICAgIC8vIHNob3VsZCBwaWNrIG15T3ZlcmxvYWRlZFNsb3QoZG91YmxlKQorICAgIG1fbXlPYmpl
Y3QtPnJlc2V0UXRGdW5jdGlvbkludm9rZWQoKTsKKyAgICBldmFsSlMoIm15T2JqZWN0Lm15T3Zl
cmxvYWRlZFNsb3QoMTAuMCkiKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9u
SW52b2tlZCgpLCAyNik7CisKKyAgICAvLyBzaG91bGQgcGljayBteU92ZXJsb2FkZWRTbG90KFFT
dHJpbmcpCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIGV2
YWxKUygibXlPYmplY3QubXlPdmVybG9hZGVkU2xvdCgnMTAnKSIpOworICAgIFFDT01QQVJFKG1f
bXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDI5KTsKKworICAgIC8vIHNob3VsZCBwaWNr
IG15T3ZlcmxvYWRlZFNsb3QoYm9vbCkKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25J
bnZva2VkKCk7CisgICAgZXZhbEpTKCJteU9iamVjdC5teU92ZXJsb2FkZWRTbG90KHRydWUpIik7
CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMjUpOworCisg
ICAgLy8gc2hvdWxkIHBpY2sgbXlPdmVybG9hZGVkU2xvdChRRGF0ZVRpbWUpCisgICAgbV9teU9i
amVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIGV2YWxKUygibXlPYmplY3QubXlP
dmVybG9hZGVkU2xvdChuZXcgRGF0ZSgpKSIpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0
RnVuY3Rpb25JbnZva2VkKCksIDMyKTsKKworICAgIC8vIHNob3VsZCBwaWNrIG15T3ZlcmxvYWRl
ZFNsb3QoUVZhcmlhbnQpCisgICAgLyogWEZBSUwKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVu
Y3Rpb25JbnZva2VkKCk7CisgICAgUVN0cmluZyBmID0gZXZhbEpTKCJteU9iamVjdC5teU92ZXJs
b2FkZWRTbG90Iik7CisgICAgZi5jYWxsKFFTdHJpbmcoKSwgUVN0cmluZ0xpc3QoKSA8PCBtX2Vu
Z2luZS0+bmV3VmFyaWFudChRVmFyaWFudCgiY2lhbyIpKSk7CisgICAgUUNPTVBBUkUobV9teU9i
amVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgMzUpOworICAgICovCisKKyAgICAvLyBTaG91bGQg
cGljayBteU92ZXJsb2FkZWRTbG90KFFXZWJFbGVtZW50KS4KKyAgICBtX215T2JqZWN0LT5yZXNl
dFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAgZXZhbEpTKCJteU9iamVjdC5teU92ZXJsb2FkZWRT
bG90KGRvY3VtZW50LmJvZHkpIik7CisgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlv
bkludm9rZWQoKSwgMzYpOworCisgICAgLy8gc2hvdWxkIHBpY2sgbXlPdmVybG9hZGVkU2xvdChR
T2JqZWN0KikKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisgICAg
ZXZhbEpTKCJteU9iamVjdC5teU92ZXJsb2FkZWRTbG90KG15T2JqZWN0KSIpOworICAgIFFDT01Q
QVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDQxKTsKKworICAgIC8vIHNob3Vs
ZCBwaWNrIG15T3ZlcmxvYWRlZFNsb3QoUU9iamVjdCopCisgICAgbV9teU9iamVjdC0+cmVzZXRR
dEZ1bmN0aW9uSW52b2tlZCgpOworICAgIGV2YWxKUygibXlPYmplY3QubXlPdmVybG9hZGVkU2xv
dChudWxsKSIpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCks
IDQxKTsKKworICAgIC8vIHNob3VsZCBwaWNrIG15T3ZlcmxvYWRlZFNsb3QoUVN0cmluZ0xpc3Qp
CisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0aW9uSW52b2tlZCgpOworICAgIGV2YWxKUygi
bXlPYmplY3QubXlPdmVybG9hZGVkU2xvdChbJ2hlbGxvJ10pIik7CisgICAgUUNPTVBBUkUobV9t
eU9iamVjdC0+cXRGdW5jdGlvbkludm9rZWQoKSwgNDIpOworfQorCitjbGFzcyBNeUVudW1UZXN0
UU9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFko
UVN0cmluZyBwMSBSRUFEIHAxKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBwMiBSRUFEIHAyKQor
ICAgIFFfUFJPUEVSVFkoUVN0cmluZyBwMyBSRUFEIHAzIFNDUklQVEFCTEUgZmFsc2UpCisgICAg
UV9QUk9QRVJUWShRU3RyaW5nIHA0IFJFQUQgcDQpCisgICAgUV9QUk9QRVJUWShRU3RyaW5nIHA1
IFJFQUQgcDUgU0NSSVBUQUJMRSBmYWxzZSkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgcDYgUkVB
RCBwNikKK3B1YmxpYzoKKyAgICBNeUVudW1UZXN0UU9iamVjdChRT2JqZWN0KiBwYXJlbnQgPSAw
KQorICAgICAgICA6IFFPYmplY3QocGFyZW50KSB7IH0KKworICAgIFFTdHJpbmcgcDEoKSBjb25z
dCB7IHJldHVybiBRTGF0aW4xU3RyaW5nKCJwMSIpOyB9CisgICAgUVN0cmluZyBwMigpIGNvbnN0
IHsgcmV0dXJuIFFMYXRpbjFTdHJpbmcoInAyIik7IH0KKyAgICBRU3RyaW5nIHAzKCkgY29uc3Qg
eyByZXR1cm4gUUxhdGluMVN0cmluZygicDMiKTsgfQorICAgIFFTdHJpbmcgcDQoKSBjb25zdCB7
IHJldHVybiBRTGF0aW4xU3RyaW5nKCJwNCIpOyB9CisgICAgUVN0cmluZyBwNSgpIGNvbnN0IHsg
cmV0dXJuIFFMYXRpbjFTdHJpbmcoInA1Iik7IH0KKyAgICBRU3RyaW5nIHA2KCkgY29uc3QgeyBy
ZXR1cm4gUUxhdGluMVN0cmluZygicDYiKTsgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lk
IG15U2xvdCgpIHsgfQorICAgIHZvaWQgbXlPdGhlclNsb3QoKSB7IH0KK1FfU0lHTkFMUzoKKyAg
ICB2b2lkIG15U2lnbmFsKCk7Cit9OworCit2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjplbnVtZXJh
dGVfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nTGlzdD4oImV4cGVjdGVk
TmFtZXMiKTsKKworICAgIFFUZXN0OjpuZXdSb3coImVudW1lcmF0ZSBhbGwiKQorICAgIDw8IChR
U3RyaW5nTGlzdCgpCisgICAgICAgIC8vIG1ldGEtb2JqZWN0LWRlZmluZWQgcHJvcGVydGllczoK
KyAgICAgICAgLy8gICBpbmhlcml0ZWQKKyAgICAgICAgPDwgIm9iamVjdE5hbWUiCisgICAgICAg
IC8vICAgbm9uLWluaGVyaXRlZAorICAgICAgICA8PCAicDEiIDw8ICJwMiIgPDwgInA0IiA8PCAi
cDYiCisgICAgICAgIC8vIGR5bmFtaWMgcHJvcGVydGllcworICAgICAgICA8PCAiZHAxIiA8PCAi
ZHAyIiA8PCAiZHAzIgorICAgICAgICAvLyBpbmhlcml0ZWQgc2lnbmFscyBhbmQgc2xvdHMKKyAg
ICAgICAgPDwgImRlc3Ryb3llZChRT2JqZWN0KikiIDw8ICJkZXN0cm95ZWQoKSIKKyAgICAgICAg
PDwgIm9iamVjdE5hbWVDaGFuZ2VkKFFTdHJpbmcpIgorICAgICAgICA8PCAiZGVsZXRlTGF0ZXIo
KSIKKyAgICAgICAgLy8gbm90IGluY2x1ZGVkIGJlY2F1c2UgaXQncyBwcml2YXRlOgorICAgICAg
ICAvLyA8PCAiX3FfcmVyZWdpc3RlclRpbWVycyh2b2lkKikiCisgICAgICAgIC8vIHNpZ25hbHMK
KyAgICAgICAgPDwgIm15U2lnbmFsKCkiCisgICAgICAgIC8vIHNsb3RzCisgICAgICAgIDw8ICJt
eVNsb3QoKSIgPDwgIm15T3RoZXJTbG90KCkiKTsKK30KKwordm9pZCB0c3RfUU9iamVjdEJyaWRn
ZTo6ZW51bWVyYXRlKCkKK3sKKyAgICBRRkVUQ0goUVN0cmluZ0xpc3QsIGV4cGVjdGVkTmFtZXMp
OworCisgICAgTXlFbnVtVGVzdFFPYmplY3QgZW51bVFPYmplY3Q7CisgICAgLy8gZ2l2ZSBpdCBz
b21lIGR5bmFtaWMgcHJvcGVydGllcworICAgIGVudW1RT2JqZWN0LnNldFByb3BlcnR5KCJkcDEi
LCAiZHAxIik7CisgICAgZW51bVFPYmplY3Quc2V0UHJvcGVydHkoImRwMiIsICJkcDIiKTsKKyAg
ICBlbnVtUU9iamVjdC5zZXRQcm9wZXJ0eSgiZHAzIiwgImRwMyIpOworICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCktPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCgibXlFbnVtT2JqZWN0IiwgJmVu
dW1RT2JqZWN0KTsKKworICAgIC8vIGVudW1lcmF0ZSBpbiBzY3JpcHQKKyAgICB7CisgICAgICAg
IGV2YWxKUygidmFyIGVudW1lcmF0ZWRQcm9wZXJ0aWVzID0gW10iKTsKKyAgICAgICAgZXZhbEpT
KCJmb3IgKHZhciBwIGluIG15RW51bU9iamVjdCkgeyBlbnVtZXJhdGVkUHJvcGVydGllcy5wdXNo
KHApOyB9Iik7CisgICAgICAgIFFTdHJpbmdMaXN0IHJlc3VsdCA9IGV2YWxKU1YoImVudW1lcmF0
ZWRQcm9wZXJ0aWVzIikudG9TdHJpbmdMaXN0KCk7CisgICAgICAgIFFDT01QQVJFKHJlc3VsdC5z
aXplKCksIGV4cGVjdGVkTmFtZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBleHBlY3RlZE5hbWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgUUNPTVBBUkUocmVzdWx0
LmF0KGkpLCBleHBlY3RlZE5hbWVzLmF0KGkpKTsKKyAgICB9Cit9CisKK3ZvaWQgdHN0X1FPYmpl
Y3RCcmlkZ2U6Om9iamVjdERlbGV0ZWQoKQoreworICAgIE15UU9iamVjdCogcW9iaiA9IG5ldyBN
eVFPYmplY3QoKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5hZGRUb0phdmFTY3JpcHRXaW5k
b3dPYmplY3QoImJhciIsIHFvYmopOworICAgIGV2YWxKUygiYmFyLm9iamVjdE5hbWUgPSAnZm9v
JzsiKTsKKyAgICBRQ09NUEFSRShxb2JqLT5vYmplY3ROYW1lKCksIFFMYXRpbjFTdHJpbmcoImZv
byIpKTsKKyAgICBldmFsSlMoImJhci5pbnRQcm9wZXJ0eSA9IDEyMzsiKTsKKyAgICBRQ09NUEFS
RShxb2JqLT5pbnRQcm9wZXJ0eSgpLCAxMjMpOworICAgIHFvYmotPnJlc2V0UXRGdW5jdGlvbklu
dm9rZWQoKTsKKyAgICBldmFsSlMoImJhci5teUludm9rYWJsZS5jYWxsKGJhcik7Iik7CisgICAg
UUNPTVBBUkUocW9iai0+cXRGdW5jdGlvbkludm9rZWQoKSwgMCk7CisKKyAgICAvLyBkbyB0aGlz
LCB0byBlbnN1cmUgdGhhdCB3ZSBjYWNoZSB0aGF0IGl0IGltcGxlbWVudHMgY2FsbAorICAgIGV2
YWxKUygiYmFyKCkiKTsKKworICAgIC8vIG5vdyBkZWxldGUgdGhlIG9iamVjdAorICAgIGRlbGV0
ZSBxb2JqOworCisgICAgUUNPTVBBUkUoZXZhbEpTKCJ0eXBlb2YgYmFyIiksIHNPYmplY3QpOwor
CisgICAgLy8gYW55IGF0dGVtcHQgdG8gYWNjZXNzIHByb3BlcnRpZXMgb2YgdGhlIG9iamVjdCBz
aG91bGQgcmVzdWx0IGluIGFuIGV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBl
OworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygiYmFyLm9iamVjdE5hbWUiLCB0eXBlKTsK
KyAgICAgICAgUUNPTVBBUkUodHlwZSwgc0Vycm9yKTsKKyAgICAgICAgUUNPTVBBUkUocmV0LCBR
TGF0aW4xU3RyaW5nKCJFcnJvcjogY2Fubm90IGFjY2VzcyBtZW1iZXIgYG9iamVjdE5hbWUnIG9m
IGRlbGV0ZWQgUU9iamVjdCIpKTsKKyAgICB9CisgICAgeworICAgICAgICBRU3RyaW5nIHR5cGU7
CisgICAgICAgIFFTdHJpbmcgcmV0ID0gZXZhbEpTKCJiYXIub2JqZWN0TmFtZSA9ICdmb28nIiwg
dHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUsIHNFcnJvcik7CisgICAgICAgIFFDT01QQVJF
KHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IGNhbm5vdCBhY2Nlc3MgbWVtYmVyIGBvYmplY3RO
YW1lJyBvZiBkZWxldGVkIFFPYmplY3QiKSk7CisgICAgfQorCisgICAgLy8gbXlJbnZva2FibGUg
aXMgc3RvcmVkIGluIG1lbWJlciB0YWJsZSAoc2luY2Ugd2UndmUgYWNjZXNzZWQgaXQgYmVmb3Jl
IGRlbGV0aW9uKQorICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBldmFsSlMo
ImJhci5teUludm9rYWJsZSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRnVuY3Rp
b24pOworICAgIH0KKworICAgIHsKKyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBRU3Ry
aW5nIHJldCA9IGV2YWxKUygiYmFyLm15SW52b2thYmxlLmNhbGwoYmFyKTsiLCB0eXBlKTsKKyAg
ICAgICAgcmV0ID0gZXZhbEpTKCJiYXIubXlJbnZva2FibGUoYmFyKSIsIHR5cGUpOworICAgICAg
ICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRpbjFT
dHJpbmcoIkVycm9yOiBjYW5ub3QgY2FsbCBmdW5jdGlvbiBvZiBkZWxldGVkIFFPYmplY3QiKSk7
CisgICAgfQorICAgIC8vIG15SW52b2thYmxlV2l0aEludEFyZyBpcyBub3Qgc3RvcmVkIGluIG1l
bWJlciB0YWJsZSAoc2luY2Ugd2UndmUgbm90IGFjY2Vzc2VkIGl0KQorICAgIHsKKyAgICAgICAg
UVN0cmluZyB0eXBlOworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygiYmFyLm15SW52b2th
YmxlV2l0aEludEFyZyIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBlLCBzRXJyb3IpOwor
ICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRpbjFTdHJpbmcoIkVycm9yOiBjYW5ub3QgYWNjZXNz
IG1lbWJlciBgbXlJbnZva2FibGVXaXRoSW50QXJnJyBvZiBkZWxldGVkIFFPYmplY3QiKSk7Cisg
ICAgfQorCisgICAgLy8gYWNjZXNzIGZyb20gc2NyaXB0CisgICAgZXZhbEpTKCJ3aW5kb3cubyA9
IGJhcjsiKTsKKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyBy
ZXQgPSBldmFsSlMoIm8ub2JqZWN0TmFtZSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBl
LCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRpbjFTdHJpbmcoIkVycm9yOiBj
YW5ub3QgYWNjZXNzIG1lbWJlciBgb2JqZWN0TmFtZScgb2YgZGVsZXRlZCBRT2JqZWN0IikpOwor
ICAgIH0KKyAgICB7CisgICAgICAgIFFTdHJpbmcgdHlwZTsKKyAgICAgICAgUVN0cmluZyByZXQg
PSBldmFsSlMoIm8ubXlJbnZva2FibGUoKSIsIHR5cGUpOworICAgICAgICBRQ09NUEFSRSh0eXBl
LCBzRXJyb3IpOworICAgICAgICBRQ09NUEFSRShyZXQsIFFMYXRpbjFTdHJpbmcoIkVycm9yOiBj
YW5ub3QgY2FsbCBmdW5jdGlvbiBvZiBkZWxldGVkIFFPYmplY3QiKSk7CisgICAgfQorICAgIHsK
KyAgICAgICAgUVN0cmluZyB0eXBlOworICAgICAgICBRU3RyaW5nIHJldCA9IGV2YWxKUygiby5t
eUludm9rYWJsZVdpdGhJbnRBcmcoMTApIiwgdHlwZSk7CisgICAgICAgIFFDT01QQVJFKHR5cGUs
IHNFcnJvcik7CisgICAgICAgIFFDT01QQVJFKHJldCwgUUxhdGluMVN0cmluZygiRXJyb3I6IGNh
bm5vdCBhY2Nlc3MgbWVtYmVyIGBteUludm9rYWJsZVdpdGhJbnRBcmcnIG9mIGRlbGV0ZWQgUU9i
amVjdCIpKTsKKyAgICB9Cit9CisKK3ZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6OnR5cGVDb252ZXJz
aW9uKCkKK3sKKyAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZva2VkKCk7CisKKyAg
ICBRRGF0ZVRpbWUgbG9jYWxkdChRRGF0ZSgyMDA4LCAxLCAxOCksIFFUaW1lKDEyLCAzMSwgMCkp
OworICAgIFFEYXRlVGltZSB1dGNsb2NhbGR0ID0gbG9jYWxkdC50b1VUQygpOworICAgIFFEYXRl
VGltZSB1dGNkdChRRGF0ZSgyMDA4LCAxLCAxOCksIFFUaW1lKDEyLCAzMSwgMCksIFF0OjpVVEMp
OworCisgICAgLy8gRGF0ZXMgaW4gSlMgKGRlZmF1bHQgdG8gbG9jYWwpCisgICAgZXZhbEpTKCJt
eU9iamVjdC5teU92ZXJsb2FkZWRTbG90KG5ldyBEYXRlKDIwMDgsMCwxOCwxMiwzMSwwKSkiKTsK
KyAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAzMik7CisgICAg
UUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOworICAg
IFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCkudG9EYXRlVGlt
ZSgpLnRvVVRDKCksIHV0Y2xvY2FsZHQpOworCisgICAgbV9teU9iamVjdC0+cmVzZXRRdEZ1bmN0
aW9uSW52b2tlZCgpOworICAgIGV2YWxKUygibXlPYmplY3QubXlPdmVybG9hZGVkU2xvdChuZXcg
RGF0ZShEYXRlLlVUQygyMDA4LDAsMTgsMTIsMzEsMCkpKSIpOworICAgIFFDT01QQVJFKG1fbXlP
YmplY3QtPnF0RnVuY3Rpb25JbnZva2VkKCksIDMyKTsKKyAgICBRQ09NUEFSRShtX215T2JqZWN0
LT5xdEZ1bmN0aW9uQWN0dWFscygpLnNpemUoKSwgMSk7CisgICAgUUNPTVBBUkUobV9teU9iamVj
dC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKS50b0RhdGVUaW1lKCkudG9VVEMoKSwgdXRjZHQp
OworCisgICAgLy8gUHVzaGluZyBRRGF0ZVRpbWVzIGludG8gSlMKKyAgICAvLyBMb2NhbAorICAg
IGV2YWxKUygiZnVuY3Rpb24gY2hlY2tEYXRlKGQpIHt3aW5kb3cuX19kYXRlX2VxdWFscyA9IChk
LnRvU3RyaW5nKCkgPT0gbmV3IERhdGUoMjAwOCwwLDE4LDEyLDMxLDApKT90cnVlOmZhbHNlO30i
KTsKKyAgICBldmFsSlMoIm15T2JqZWN0Lm15U2lnbmFsV2l0aERhdGVUaW1lQXJnLmNvbm5lY3Qo
Y2hlY2tEYXRlKSIpOworICAgIG1fbXlPYmplY3QtPmVtaXRNeVNpZ25hbFdpdGhEYXRlVGltZUFy
Zyhsb2NhbGR0KTsKKyAgICBRQ09NUEFSRShldmFsSlMoIndpbmRvdy5fX2RhdGVfZXF1YWxzIiks
IHNUcnVlKTsKKyAgICBldmFsSlMoImRlbGV0ZSB3aW5kb3cuX19kYXRlX2VxdWFscyIpOworICAg
IG1fbXlPYmplY3QtPmVtaXRNeVNpZ25hbFdpdGhEYXRlVGltZUFyZyh1dGNsb2NhbGR0KTsKKyAg
ICBRQ09NUEFSRShldmFsSlMoIndpbmRvdy5fX2RhdGVfZXF1YWxzIiksIHNUcnVlKTsKKyAgICBl
dmFsSlMoImRlbGV0ZSB3aW5kb3cuX19kYXRlX2VxdWFscyIpOworICAgIGV2YWxKUygibXlPYmpl
Y3QubXlTaWduYWxXaXRoRGF0ZVRpbWVBcmcuZGlzY29ubmVjdChjaGVja0RhdGUpOyBkZWxldGUg
Y2hlY2tEYXRlOyIpOworCisgICAgLy8gVVRDCisgICAgZXZhbEpTKCJmdW5jdGlvbiBjaGVja0Rh
dGUoZCkge3dpbmRvdy5fX2RhdGVfZXF1YWxzID0gKGQudG9TdHJpbmcoKSA9PSBuZXcgRGF0ZShE
YXRlLlVUQygyMDA4LDAsMTgsMTIsMzEsMCkpKT90cnVlOmZhbHNlOyB9Iik7CisgICAgZXZhbEpT
KCJteU9iamVjdC5teVNpZ25hbFdpdGhEYXRlVGltZUFyZy5jb25uZWN0KGNoZWNrRGF0ZSkiKTsK
KyAgICBtX215T2JqZWN0LT5lbWl0TXlTaWduYWxXaXRoRGF0ZVRpbWVBcmcodXRjZHQpOworICAg
IFFDT01QQVJFKGV2YWxKUygid2luZG93Ll9fZGF0ZV9lcXVhbHMiKSwgc1RydWUpOworICAgIGV2
YWxKUygiZGVsZXRlIHdpbmRvdy5fX2RhdGVfZXF1YWxzIik7CisgICAgZXZhbEpTKCJteU9iamVj
dC5teVNpZ25hbFdpdGhEYXRlVGltZUFyZy5kaXNjb25uZWN0KGNoZWNrRGF0ZSk7IGRlbGV0ZSBj
aGVja0RhdGU7Iik7Cit9CisKK2NsYXNzIFN0cmluZ0xpc3RUZXN0T2JqZWN0IDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWMgUV9TTE9UUzoKKyAgICBRVmFyaWFudCBzdHJp
bmdMaXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBRU3RyaW5nTGlzdCgpIDw8ICJRIiA8PCAi
dCI7CisgICAgfTsKK307CisKK3ZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6OmFycmF5T2JqZWN0RW51
bWVyYWJsZSgpCit7CisgICAgUVdlYlBhZ2UgcGFnZTsKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0g
cGFnZS5tYWluRnJhbWUoKTsKKyAgICBRT2JqZWN0KiBxb2JqZWN0ID0gbmV3IFN0cmluZ0xpc3RU
ZXN0T2JqZWN0KCk7CisgICAgZnJhbWUtPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCgidGVz
dCIsIHFvYmplY3QsIFFXZWJGcmFtZTo6U2NyaXB0T3duZXJzaGlwKTsKKworICAgIGNvbnN0IFFT
dHJpbmcgc2NyaXB0KCJ2YXIgc3RyaW5nQXJyYXkgPSB0ZXN0LnN0cmluZ0xpc3QoKTsiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgInZhciByZXN1bHQgPSAnJzsiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgImZvciAodmFyIGkgaW4gc3RyaW5nQXJyYXkpIHsiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXN1bHQgKz0gc3RyaW5nQXJyYXlbaV07IgorICAgICAgICAgICAgICAg
ICAgICAgICAgICJ9IgorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bHQ7Iik7CisgICAg
UUNPTVBBUkUoZnJhbWUtPmV2YWx1YXRlSmF2YVNjcmlwdChzY3JpcHQpLnRvU3RyaW5nKCksIFFT
dHJpbmc6OmZyb21MYXRpbjEoIlF0IikpOworfQorCit2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpk
b21DeWNsZXMoKQoreworICAgIG1fdmlldy0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+Iik7CisgICAg
UVZhcmlhbnQgdiA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9j
dW1lbnQiKTsKKyAgICBRVkVSSUZZKHYudHlwZSgpID09IFFWYXJpYW50OjpNYXApOworfQorCit2
b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpqc0J5dGVBcnJheSgpCit7CisgICAgUUJ5dGVBcnJheSBi
YSgiaGVsbG8gd29ybGQiKTsKKyAgICBtX215T2JqZWN0LT5zZXRCeXRlQXJyYXlQcm9wZXJ0eShi
YSk7CisKKyAgICAvLyByZWFkLW9ubHkgcHJvcGVydHkKKyAgICBRQ09NUEFSRShtX215T2JqZWN0
LT5ieXRlQXJyYXlQcm9wZXJ0eSgpLCBiYSk7CisgICAgUVN0cmluZyB0eXBlOworICAgIFFWYXJp
YW50IHYgPSBldmFsSlNWKCJteU9iamVjdC5ieXRlQXJyYXlQcm9wZXJ0eSIpOworICAgIFFDT01Q
QVJFKGludCh2LnR5cGUoKSksIGludChRVmFyaWFudDo6Qnl0ZUFycmF5KSk7CisKKyAgICBRQ09N
UEFSRSh2LnRvQnl0ZUFycmF5KCksIGJhKTsKK30KKwordm9pZCB0c3RfUU9iamVjdEJyaWRnZTo6
b3duZXJzaGlwKCkKK3sKKyAgICAvLyB0ZXN0IG93bmVyc2hpcAorICAgIHsKKyAgICAgICAgUVBv
aW50ZXI8UU9iamVjdD4gcHRyID0gbmV3IFFPYmplY3QoKTsKKyAgICAgICAgUVZFUklGWShwdHIp
OworICAgICAgICB7CisgICAgICAgICAgICBRV2ViUGFnZSBwYWdlOworICAgICAgICAgICAgUVdl
YkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgICAgICAgICBmcmFtZS0+YWRk
VG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCJ0ZXN0IiwgcHRyLmRhdGEoKSwgUVdlYkZyYW1lOjpT
Y3JpcHRPd25lcnNoaXApOworICAgICAgICB9CisgICAgICAgIFFWRVJJRlkoIXB0cik7CisgICAg
fQorICAgIHsKKyAgICAgICAgUVBvaW50ZXI8UU9iamVjdD4gcHRyID0gbmV3IFFPYmplY3QoKTsK
KyAgICAgICAgUVZFUklGWShwdHIpOworICAgICAgICBRT2JqZWN0KiBiZWZvcmUgPSBwdHIuZGF0
YSgpOworICAgICAgICB7CisgICAgICAgICAgICBRV2ViUGFnZSBwYWdlOworICAgICAgICAgICAg
UVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgICAgICAgICBmcmFtZS0+
YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCJ0ZXN0IiwgcHRyLmRhdGEoKSwgUVdlYkZyYW1l
OjpRdE93bmVyc2hpcCk7CisgICAgICAgIH0KKyAgICAgICAgUVZFUklGWShwdHIuZGF0YSgpID09
IGJlZm9yZSk7CisgICAgICAgIGRlbGV0ZSBwdHIuZGF0YSgpOworICAgIH0KKyAgICB7CisgICAg
ICAgIFFPYmplY3QqIHBhcmVudCA9IG5ldyBRT2JqZWN0KCk7CisgICAgICAgIFFPYmplY3QqIGNo
aWxkID0gbmV3IFFPYmplY3QocGFyZW50KTsKKyAgICAgICAgUVdlYlBhZ2UgcGFnZTsKKyAgICAg
ICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgICAgIGZyYW1lLT5h
ZGRUb0phdmFTY3JpcHRXaW5kb3dPYmplY3QoInRlc3QiLCBjaGlsZCwgUVdlYkZyYW1lOjpRdE93
bmVyc2hpcCk7CisgICAgICAgIFFWYXJpYW50IHYgPSBmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJ0ZXN0Iik7CisgICAgICAgIFFDT01QQVJFKHF2YXJpYW50X2Nhc3Q8UU9iamVjdCo+KHYpLCBj
aGlsZCk7CisgICAgICAgIGRlbGV0ZSBwYXJlbnQ7CisgICAgICAgIHYgPSBmcmFtZS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJ0ZXN0Iik7CisgICAgICAgIFFDT01QQVJFKHF2YXJpYW50X2Nhc3Q8UU9i
amVjdCo+KHYpLCAoUU9iamVjdCAqKTApOworICAgIH0KKyAgICB7CisgICAgICAgIFFQb2ludGVy
PFFPYmplY3Q+IHB0ciA9IG5ldyBRT2JqZWN0KCk7CisgICAgICAgIFFWRVJJRlkocHRyKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgUVdlYlBhZ2UgcGFnZTsKKyAgICAgICAgICAgIFFXZWJGcmFt
ZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgICAgICAgICAgZnJhbWUtPmFkZFRvSmF2
YVNjcmlwdFdpbmRvd09iamVjdCgidGVzdCIsIHB0ci5kYXRhKCksIFFXZWJGcmFtZTo6QXV0b093
bmVyc2hpcCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gbm8gcGFyZW50LCBzbyBpdCBzaG91bGQg
YmUgbGlrZSBTY3JpcHRPd25lcnNoaXAKKyAgICAgICAgUVZFUklGWSghcHRyKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBRT2JqZWN0KiBwYXJlbnQgPSBuZXcgUU9iamVjdCgpOworICAgICAgICBR
UG9pbnRlcjxRT2JqZWN0PiBjaGlsZCA9IG5ldyBRT2JqZWN0KHBhcmVudCk7CisgICAgICAgIFFW
RVJJRlkoY2hpbGQpOworICAgICAgICB7CisgICAgICAgICAgICBRV2ViUGFnZSBwYWdlOworICAg
ICAgICAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgICAgICAg
ICBmcmFtZS0+YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KCJ0ZXN0IiwgY2hpbGQuZGF0YSgp
LCBRV2ViRnJhbWU6OkF1dG9Pd25lcnNoaXApOworICAgICAgICB9CisgICAgICAgIC8vIGhhcyBw
YXJlbnQsIHNvIGl0IHNob3VsZCBiZSBsaWtlIFF0T3duZXJzaGlwCisgICAgICAgIFFWRVJJRlko
Y2hpbGQpOworICAgICAgICBkZWxldGUgcGFyZW50OworICAgIH0KK30KKwordm9pZCB0c3RfUU9i
amVjdEJyaWRnZTo6bnVsbFZhbHVlKCkKK3sKKyAgICBRVmFyaWFudCB2ID0gbV92aWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIm51bGwiKTsKKyAgICBRVkVSSUZZ
KHYuaXNOdWxsKCkpOworfQorCitjbGFzcyBUZXN0RmFjdG9yeSA6IHB1YmxpYyBRT2JqZWN0IHsK
KyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFRlc3RGYWN0b3J5KCkKKyAgICAgICAgOiBvYmoo
MCksIGNvdW50ZXIoMCkKKyAgICB7IH0KKworICAgIFFfSU5WT0tBQkxFIFFPYmplY3QqIGdldE5l
d09iamVjdCgpCisgICAgeworICAgICAgICBkZWxldGUgb2JqOworICAgICAgICBvYmogPSBuZXcg
UU9iamVjdCh0aGlzKTsKKyAgICAgICAgb2JqLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmco
InRlc3QiKSArIFFTdHJpbmc6Om51bWJlcigrK2NvdW50ZXIpKTsKKyAgICAgICAgcmV0dXJuIG9i
ajsKKworICAgIH0KKworICAgIFFPYmplY3QqIG9iajsKKyAgICBpbnQgY291bnRlcjsKK307CisK
K3ZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6OnFPYmplY3RXcmFwcGVyV2l0aFNhbWVJZGVudGl0eSgp
Cit7CisgICAgbV92aWV3LT5zZXRIdG1sKCI8c2NyaXB0PmZ1bmN0aW9uIHRyaWdnZXJCdWcoKSB7
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGFuMScpLmlubmVyVGV4dCA9IHRlc3QuZ2V0TmV3
T2JqZWN0KCkub2JqZWN0TmFtZTsgfTwvc2NyaXB0PiIKKyAgICAgICAgICAgICAgICAgICAgIjxi
b2R5PjxzcGFuIGlkPSdzcGFuMSc+dGVzdDwvc3Bhbj48L2JvZHk+Iik7CisKKyAgICBRV2ViRnJh
bWUqIG1haW5GcmFtZSA9IG1fdmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKTsKKyAgICBRQ09NUEFS
RShtYWluRnJhbWUtPnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoInRlc3QiKSk7CisKKyAgICBtYWlu
RnJhbWUtPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdCgidGVzdCIsIG5ldyBUZXN0RmFjdG9y
eSwgUVdlYkZyYW1lOjpTY3JpcHRPd25lcnNoaXApOworCisgICAgbWFpbkZyYW1lLT5ldmFsdWF0
ZUphdmFTY3JpcHQoInRyaWdnZXJCdWcoKTsiKTsKKyAgICBRQ09NUEFSRShtYWluRnJhbWUtPnRv
UGxhaW5UZXh0KCksIFFTdHJpbmcoInRlc3QxIikpOworCisgICAgbWFpbkZyYW1lLT5ldmFsdWF0
ZUphdmFTY3JpcHQoInRyaWdnZXJCdWcoKTsiKTsKKyAgICBRQ09NUEFSRShtYWluRnJhbWUtPnRv
UGxhaW5UZXh0KCksIFFTdHJpbmcoInRlc3QyIikpOworfQorCit2b2lkIHRzdF9RT2JqZWN0QnJp
ZGdlOjppbnRyb3NwZWN0UXRNZXRob2RzX2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48
UVN0cmluZz4oIm9iamVjdEV4cHJlc3Npb24iKTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJp
bmc+KCJtZXRob2ROYW1lIik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nTGlzdD4oImV4
cGVjdGVkUHJvcGVydHlOYW1lcyIpOworCisgICAgUVRlc3Q6Om5ld1JvdygibXlPYmplY3QubXlT
aWduYWwiKQorICAgICAgICA8PCAibXlPYmplY3QiIDw8ICJteVNpZ25hbCIgPDwgKFFTdHJpbmdM
aXN0KCkgPDwgImNvbm5lY3QiIDw8ICJkaXNjb25uZWN0IiA8PCAibmFtZSIpOworICAgIFFUZXN0
OjpuZXdSb3coIm15T2JqZWN0Lm15U2xvdCIpCisgICAgICAgIDw8ICJteU9iamVjdCIgPDwgIm15
U2xvdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgImNvbm5lY3QiIDw8ICJkaXNjb25uZWN0IiA8PCAi
bmFtZSIpOworICAgIFFUZXN0OjpuZXdSb3coIm15T2JqZWN0Lm15SW52b2thYmxlIikKKyAgICAg
ICAgPDwgIm15T2JqZWN0IiA8PCAibXlJbnZva2FibGUiIDw8IChRU3RyaW5nTGlzdCgpIDw8ICJj
b25uZWN0IiA8PCAiZGlzY29ubmVjdCIgPDwgIm5hbWUiKTsKKyAgICBRVGVzdDo6bmV3Um93KCJt
eU9iamVjdC5teVNpZ25hbC5jb25uZWN0IikKKyAgICAgICAgPDwgIm15T2JqZWN0Lm15U2lnbmFs
IiA8PCAiY29ubmVjdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgIm5hbWUiKTsKKyAgICBRVGVzdDo6
bmV3Um93KCJteU9iamVjdC5teVNpZ25hbC5kaXNjb25uZWN0IikKKyAgICAgICAgPDwgIm15T2Jq
ZWN0Lm15U2lnbmFsIiA8PCAiZGlzY29ubmVjdCIgPDwgKFFTdHJpbmdMaXN0KCkgPDwgIm5hbWUi
KTsKK30KKwordm9pZCB0c3RfUU9iamVjdEJyaWRnZTo6aW50cm9zcGVjdFF0TWV0aG9kcygpCit7
CisgICAgUUZFVENIKFFTdHJpbmcsIG9iamVjdEV4cHJlc3Npb24pOworICAgIFFGRVRDSChRU3Ry
aW5nLCBtZXRob2ROYW1lKTsKKyAgICBRRkVUQ0goUVN0cmluZ0xpc3QsIGV4cGVjdGVkUHJvcGVy
dHlOYW1lcyk7CisKKyAgICBRU3RyaW5nIG1ldGhvZExvb2t1cCA9IFFTdHJpbmc6OmZyb21MYXRp
bjEoIiUwWyclMSddIikuYXJnKG9iamVjdEV4cHJlc3Npb24pLmFyZyhtZXRob2ROYW1lKTsKKyAg
ICBRQ09NUEFSRShldmFsSlNWKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKCUwKS5zb3J0KCkiKS5hcmcobWV0aG9kTG9va3VwKSkudG9TdHJpbmdMaXN0KCks
IGV4cGVjdGVkUHJvcGVydHlOYW1lcyk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4cGVj
dGVkUHJvcGVydHlOYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICBRU3RyaW5nIG5hbWUgPSBl
eHBlY3RlZFByb3BlcnR5TmFtZXMuYXQoaSk7CisgICAgICAgIFFDT01QQVJFKGV2YWxKUyhRU3Ry
aW5nOjpmcm9tTGF0aW4xKCIlMC5oYXNPd25Qcm9wZXJ0eSgnJTEnKSIpLmFyZyhtZXRob2RMb29r
dXApLmFyZyhuYW1lKSksIHNUcnVlKTsKKyAgICAgICAgZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRp
bjEoInZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciglMCwg
JyUxJykiKS5hcmcobWV0aG9kTG9va3VwKS5hcmcobmFtZSkpOworICAgICAgICBRQ09NUEFSRShl
dmFsSlMoInR5cGVvZiBkZXNjcmlwdG9yIiksIFFTdHJpbmc6OmZyb21MYXRpbjEoIm9iamVjdCIp
KTsKKyAgICAgICAgUUNPTVBBUkUoZXZhbEpTKCJkZXNjcmlwdG9yLmdldCIpLCBzVW5kZWZpbmVk
KTsKKyAgICAgICAgUUNPTVBBUkUoZXZhbEpTKCJkZXNjcmlwdG9yLnNldCIpLCBzVW5kZWZpbmVk
KTsKKyAgICAgICAgUUNPTVBBUkUoZXZhbEpTKFFTdHJpbmc6OmZyb21MYXRpbjEoImRlc2NyaXB0
b3IudmFsdWUgPT09ICUwWyclMSddIikuYXJnKG1ldGhvZExvb2t1cCkuYXJnKG5hbWUpKSwgc1Ry
dWUpOworICAgICAgICBRQ09NUEFSRShldmFsSlMoUVN0cmluZzo6ZnJvbUxhdGluMSgiZGVzY3Jp
cHRvci5lbnVtZXJhYmxlIikpLCBzRmFsc2UpOworICAgICAgICBRQ09NUEFSRShldmFsSlMoUVN0
cmluZzo6ZnJvbUxhdGluMSgiZGVzY3JpcHRvci5jb25maWd1cmFibGUiKSksIHNGYWxzZSk7Cisg
ICAgfQorCisgICAgUVZFUklGWShldmFsSlNWKCJ2YXIgcHJvcHM9W107IGZvciAodmFyIHAgaW4g
bXlPYmplY3QuZGVsZXRlTGF0ZXIpIHtwcm9wcy5wdXNoKHApO307IHByb3BzLnNvcnQoKSIpLnRv
U3RyaW5nTGlzdCgpLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6Ondl
YkVsZW1lbnRTbG90T25seSgpCit7CisgICAgTXlXZWJFbGVtZW50U2xvdE9ubHlPYmplY3Qgb2Jq
ZWN0OworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnNldEh0bWwoIjxodG1sPjxoZWFkPjxib2R5
PjwvYm9keT48L2h0bWw+Iik7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+YWRkVG9KYXZhU2Ny
aXB0V2luZG93T2JqZWN0KCJteVdlYkVsZW1lbnRTbG90T2JqZWN0IiwgJm9iamVjdCk7CisgICAg
ZXZhbEpTKCJteVdlYkVsZW1lbnRTbG90T2JqZWN0LmRvU29tZXRoaW5nV2l0aFdlYkVsZW1lbnQo
ZG9jdW1lbnQuYm9keSkiKTsKKyAgICBRQ09NUEFSRShldmFsSlMoIm15V2ViRWxlbWVudFNsb3RP
YmplY3QudGFnTmFtZSIpLCBRU3RyaW5nKCJCT0RZIikpOworfQorCitjbGFzcyBUZXN0UGx1Z2lu
V2lkZ2V0IDogcHVibGljIFFXaWRnZXQgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgVGVz
dFBsdWdpbldpZGdldCgpIHsgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICBpbnQgc2xvdFdpdGhS
ZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIDQyOyB9Cit9OworCitjbGFzcyBUZXN0V2ViUGFnZSA6IHB1
YmxpYyBRV2ViUGFnZSB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBUZXN0V2ViUGFnZShR
T2JqZWN0KiBwYXJlbnQgPSAwKQorICAgICAgICA6IFFXZWJQYWdlKHBhcmVudCkKKyAgICAgICAg
LCBjcmVhdGlvbkNvdW50KDApCisgICAgeyB9CisKKyAgICBpbnQgY3JlYXRpb25Db3VudDsKKwor
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgUU9iamVjdCogY3JlYXRlUGx1Z2luKGNvbnN0IFFTdHJp
bmcmLCBjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZ0xpc3QmLCBjb25zdCBRU3RyaW5nTGlzdCYp
CisgICAgeworICAgICAgICBjcmVhdGlvbkNvdW50Kys7CisgICAgICAgIHJldHVybiBuZXcgVGVz
dFBsdWdpbldpZGdldDsKKyAgICB9Cit9OworCit2b2lkIHRzdF9RT2JqZWN0QnJpZGdlOjpzY3Jp
cHRhYmxlUGx1Z2luKCkKK3sKKyAgICBRV2ViVmlldyB2aWV3OworICAgIFRlc3RXZWJQYWdlKiBw
YWdlID0gbmV3IFRlc3RXZWJQYWdlOworICAgIHZpZXcuc2V0UGFnZShwYWdlKTsKKyAgICBwYWdl
LT5zZXRQYXJlbnQoJnZpZXcpOworICAgIHZpZXcuc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQsIHRydWUpOworCisgICAgcGFnZS0+bWFpbkZyYW1l
KCktPnNldEh0bWwoIjxvYmplY3Qgd2lkdGg9MTAwIGhlaWdodD0xMDAgdHlwZT1cImFwcGxpY2F0
aW9uL3gtcXQtcGx1Z2luXCI+PC9vYmplY3Q+Iik7CisgICAgUUNPTVBBUkUocGFnZS0+Y3JlYXRp
b25Db3VudCwgMSk7CisKKyAgICBRVmFyaWFudCByZXN1bHQgPSBwYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwib2JqZWN0XCIpLnNs
b3RXaXRoUmV0dXJuVmFsdWUoKSIpOworICAgIFFDT01QQVJFKHJlc3VsdC50b1N0cmluZygpLCBR
TGF0aW4xU3RyaW5nKCI0MiIpKTsKK30KKworUVRFU1RfTUFJTih0c3RfUU9iamVjdEJyaWRnZSkK
KyNpbmNsdWRlICJ0c3RfcW9iamVjdGJyaWRnZS5tb2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3F3ZWJlbGVtZW50LnBybyBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcXdlYmVsZW1lbnQvcXdlYmVsZW1lbnQucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZmNmM0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3F3ZWJlbGVtZW50LnBybwpAQCAtMCwwICsxLDIgQEAKK2lu
Y2x1ZGUoLi4vdGVzdHMucHJpKQorZXhpc3RzKCQke1RBUkdFVH0ucXJjKTpSRVNPVVJDRVMgKz0g
JCR7VEFSR0VUfS5xcmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVs
ZW1lbnQvcmVzb3VyY2VzL2ltYWdlLnBuZyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVs
ZW1lbnQvcmVzb3VyY2VzL2ltYWdlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44ZDcwMzY0CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2ViZWxlbWVudC9yZXNvdXJjZXMvaW1hZ2UucG5nIGRpZmZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC9yZXNvdXJjZXMvc3R5bGUuY3Nz
IGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC9yZXNvdXJjZXMvc3R5bGUuY3Nz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTNkZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3Jlc291cmNlcy9zdHls
ZS5jc3MKQEAgLTAsMCArMSBAQAorI2lkUCB7Y29sb3I6IGJsYWNrICFpbXBvcnRhbnR9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3Jlc291cmNlcy9zdHls
ZTIuY3NzIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC9yZXNvdXJjZXMvc3R5
bGUyLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTc1ZGNiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC9yZXNvdXJj
ZXMvc3R5bGUyLmNzcwpAQCAtMCwwICsxIEBACisjaWRQIHtjb2xvcjogZ3JlZW4gISBpbXBvcnRh
bnR9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3RzdF9x
d2ViZWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3RzdF9x
d2ViZWxlbWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI5MzVl
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVsZW1lbnQv
dHN0X3F3ZWJlbGVtZW50LmNwcApAQCAtMCwwICsxLDEwODAgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKworI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KKyNp
bmNsdWRlIDxxd2lkZ2V0Lmg+CisjaW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNpbmNsdWRlIDxxd2Vi
ZnJhbWUuaD4KKyNpbmNsdWRlIDxxd2ViZWxlbWVudC5oPgorI2luY2x1ZGUgPHV0aWwuaD4KKy8v
VEVTVEVEX0NMQVNTPQorLy9URVNURURfRklMRVM9CisKK2NsYXNzIHRzdF9RV2ViRWxlbWVudCA6
IHB1YmxpYyBRT2JqZWN0Cit7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIHRzdF9RV2Vi
RWxlbWVudCgpOworICAgIHZpcnR1YWwgfnRzdF9RV2ViRWxlbWVudCgpOworCitwdWJsaWMgUV9T
TE9UUzoKKyAgICB2b2lkIGluaXQoKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKKworcHJpdmF0ZSBR
X1NMT1RTOgorICAgIHZvaWQgdGV4dEh0bWwoKTsKKyAgICB2b2lkIHNpbXBsZUNvbGxlY3Rpb24o
KTsKKyAgICB2b2lkIGF0dHJpYnV0ZXMoKTsKKyAgICB2b2lkIGF0dHJpYnV0ZXNOUygpOworICAg
IHZvaWQgbGlzdEF0dHJpYnV0ZXMoKTsKKyAgICB2b2lkIGNsYXNzZXMoKTsKKyAgICB2b2lkIG5h
bWVzcGFjZVVSSSgpOworICAgIHZvaWQgaXRlcmF0aW9uKCk7CisgICAgdm9pZCBub25Db25zdEl0
ZXJhdG9yKCk7CisgICAgdm9pZCBjb25zdEl0ZXJhdG9yKCk7CisgICAgdm9pZCBmb3JlYWNoTWFu
aXB1bGF0aW9uKCk7CisgICAgdm9pZCBlbXB0eUNvbGxlY3Rpb24oKTsKKyAgICB2b2lkIGFwcGVu
ZENvbGxlY3Rpb24oKTsKKyAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdCgpOworICAgIHZvaWQg
ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgdm9pZCBmcmFtZSgpOworICAgIHZvaWQgc3R5bGUoKTsK
KyAgICB2b2lkIGNvbXB1dGVkU3R5bGUoKTsKKyAgICB2b2lkIGFwcGVuZEFuZFByZXBlbmQoKTsK
KyAgICB2b2lkIGluc2VydEJlZm9yZUFuZEFmdGVyKCk7CisgICAgdm9pZCByZW1vdmUoKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCByZXBsYWNlV2l0aCgpOworICAgIHZvaWQgZW5jbG9z
ZVdpdGgoKTsKKyAgICB2b2lkIGVuY2xvc2VDb250ZW50c1dpdGgoKTsKKyAgICB2b2lkIG51bGxT
ZWxlY3QoKTsKKyAgICB2b2lkIGZpcnN0Q2hpbGROZXh0U2libGluZygpOworICAgIHZvaWQgbGFz
dENoaWxkUHJldmlvdXNTaWJsaW5nKCk7CisgICAgdm9pZCBoYXNTZXRGb2N1cygpOworICAgIHZv
aWQgcmVuZGVyKCk7CisgICAgdm9pZCBhZGRFbGVtZW50VG9IZWFkKCk7CisKK3ByaXZhdGU6Cisg
ICAgUVdlYlZpZXcqIG1fdmlldzsKKyAgICBRV2ViUGFnZSogbV9wYWdlOworICAgIFFXZWJGcmFt
ZSogbV9tYWluRnJhbWU7Cit9OworCit0c3RfUVdlYkVsZW1lbnQ6OnRzdF9RV2ViRWxlbWVudCgp
Cit7Cit9CisKK3RzdF9RV2ViRWxlbWVudDo6fnRzdF9RV2ViRWxlbWVudCgpCit7Cit9CisKK3Zv
aWQgdHN0X1FXZWJFbGVtZW50Ojppbml0KCkKK3sKKyAgICBtX3ZpZXcgPSBuZXcgUVdlYlZpZXco
KTsKKyAgICBtX3BhZ2UgPSBtX3ZpZXctPnBhZ2UoKTsKKyAgICBtX21haW5GcmFtZSA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50OjpjbGVhbnVwKCkKK3sK
KyAgICBkZWxldGUgbV92aWV3OworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6dGV4dEh0bWwo
KQoreworICAgIFFTdHJpbmcgaHRtbCA9ICI8aGVhZD48L2hlYWQ+PGJvZHk+PHA+dGVzdDwvcD48
L2JvZHk+IjsKKyAgICBtX21haW5GcmFtZS0+c2V0SHRtbChodG1sKTsKKyAgICBRV2ViRWxlbWVu
dCBib2R5ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpOworICAgIFFWRVJJRlkoIWJv
ZHkuaXNOdWxsKCkpOworCisgICAgUUNPTVBBUkUoYm9keS50b1BsYWluVGV4dCgpLCBRU3RyaW5n
KCJ0ZXN0IikpOworICAgIFFDT01QQVJFKGJvZHkudG9QbGFpblRleHQoKSwgbV9tYWluRnJhbWUt
PnRvUGxhaW5UZXh0KCkpOworCisgICAgUUNPTVBBUkUoYm9keS50b0lubmVyWG1sKCksIGh0bWwp
OworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6c2ltcGxlQ29sbGVjdGlvbigpCit7CisgICAg
UVN0cmluZyBodG1sID0gIjxib2R5PjxwPmZpcnN0IHBhcmE8L3A+PHA+c2Vjb25kIHBhcmE8L3A+
PC9ib2R5PiI7CisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwoaHRtbCk7CisgICAgUVdlYkVsZW1l
bnQgYm9keSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKTsKKworICAgIFFXZWJFbGVt
ZW50Q29sbGVjdGlvbiBsaXN0ID0gYm9keS5maW5kQWxsKCJwIik7CisgICAgUUNPTVBBUkUobGlz
dC5jb3VudCgpLCAyKTsKKyAgICBRQ09NUEFSRShsaXN0LmF0KDApLnRvUGxhaW5UZXh0KCksIFFT
dHJpbmcoImZpcnN0IHBhcmEiKSk7CisgICAgUUNPTVBBUkUobGlzdC5hdCgxKS50b1BsYWluVGV4
dCgpLCBRU3RyaW5nKCJzZWNvbmQgcGFyYSIpKTsKK30KKwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6
OmF0dHJpYnV0ZXMoKQoreworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKCI8Ym9keT48cD5UZXN0
Iik7CisgICAgUVdlYkVsZW1lbnQgYm9keSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQo
KTsKKworICAgIFFWRVJJRlkoIWJvZHkuaGFzQXR0cmlidXRlKCJ0aXRsZSIpKTsKKyAgICBRVkVS
SUZZKCFib2R5Lmhhc0F0dHJpYnV0ZXMoKSk7CisKKyAgICBib2R5LnNldEF0dHJpYnV0ZSgidGl0
bGUiLCAidGVzdCB0aXRsZSIpOworCisgICAgUVZFUklGWShib2R5Lmhhc0F0dHJpYnV0ZXMoKSk7
CisgICAgUVZFUklGWShib2R5Lmhhc0F0dHJpYnV0ZSgidGl0bGUiKSk7CisKKyAgICBRQ09NUEFS
RShib2R5LmF0dHJpYnV0ZSgidGl0bGUiKSwgUVN0cmluZygidGVzdCB0aXRsZSIpKTsKKworICAg
IGJvZHkucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpOworCisgICAgUVZFUklGWSghYm9keS5oYXNB
dHRyaWJ1dGUoInRpdGxlIikpOworICAgIFFWRVJJRlkoIWJvZHkuaGFzQXR0cmlidXRlcygpKTsK
KworICAgIFFDT01QQVJFKGJvZHkuYXR0cmlidXRlKCJkb2VzLW5vdC1leGlzdCIsICJ0ZXN0dmFs
dWUiKSwgUVN0cmluZygidGVzdHZhbHVlIikpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6
YXR0cmlidXRlc05TKCkKK3sKKyAgICBRU3RyaW5nIGNvbnRlbnQgPSAiPGh0bWwgeG1sbnM9XCJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIgIgorICAgICAgICAgICAgICAgICAgICAgICJ4
bWxuczpzdmc9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiIKKyAgICAgICAgICAgICAg
ICAgICAgICAiPGJvZHk+PHN2ZzpzdmcgaWQ9XCJmb29iYXJcIiB3aWR0aD1cIjQwMHB4XCIgaGVp
Z2h0PVwiMzAwcHhcIj4iCisgICAgICAgICAgICAgICAgICAgICAgIjwvc3ZnOnN2Zz48L2JvZHk+
PC9odG1sPiI7CisKKyAgICBtX21haW5GcmFtZS0+c2V0Q29udGVudChjb250ZW50LnRvVXRmOCgp
LCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7CisKKyAgICBRV2ViRWxlbWVudCBzdmcgPSBtX21h
aW5GcmFtZS0+ZmluZEZpcnN0RWxlbWVudCgic3ZnIik7CisgICAgUVZFUklGWSghc3ZnLmlzTnVs
bCgpKTsKKworICAgIFFWRVJJRlkoIXN2Zy5oYXNBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciLCAiZm9vYmFyIikpOworICAgIFFDT01QQVJFKHN2Zy5hdHRyaWJ1dGVOUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAiZm9vYmFyIiwgImRlZmF1bHRibGFoIiksIFFT
dHJpbmcoImRlZmF1bHRibGFoIikpOworICAgIHN2Zy5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAic3ZnOmZvb2JhciIsICJ0cnVlIik7CisgICAgUVZFUklGWShz
dmcuaGFzQXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImZvb2JhciIp
KTsKKyAgICBRQ09NUEFSRShzdmcuYXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgImZvb2JhciIsICJkZWZhdWx0YmxhaCIpLCBRU3RyaW5nKCJ0cnVlIikpOworfQorCit2
b2lkIHRzdF9RV2ViRWxlbWVudDo6bGlzdEF0dHJpYnV0ZXMoKQoreworICAgIFFTdHJpbmcgY29u
dGVudCA9ICI8aHRtbCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIiAiCisg
ICAgICAgICAgICAgICAgICAgICAgInhtbG5zOnN2Zz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnXCI+IgorICAgICAgICAgICAgICAgICAgICAgICI8Ym9keT48c3ZnOnN2ZyBmb289XCJcIiBz
dmc6YmFyPVwiXCI+IgorICAgICAgICAgICAgICAgICAgICAgICI8L3N2Zzpzdmc+PC9ib2R5Pjwv
aHRtbD4iOworCisgICAgbV9tYWluRnJhbWUtPnNldENvbnRlbnQoY29udGVudC50b1V0ZjgoKSwg
ImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOworCisgICAgUVdlYkVsZW1lbnQgc3ZnID0gbV9tYWlu
RnJhbWUtPmZpbmRGaXJzdEVsZW1lbnQoInN2ZyIpOworICAgIFFWRVJJRlkoIXN2Zy5pc051bGwo
KSk7CisKKyAgICBRVkVSSUZZKHN2Zy5hdHRyaWJ1dGVOYW1lcygpLmNvbnRhaW5zKCJmb28iKSk7
CisgICAgUVZFUklGWShzdmcuYXR0cmlidXRlTmFtZXMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIikuY29udGFpbnMoImJhciIpKTsKKworICAgIHN2Zy5zZXRBdHRyaWJ1dGVOUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAic3ZnOmZvb2JhciIsICJ0cnVlIik7CisgICAgUVZFUklG
WShzdmcuYXR0cmlidXRlTmFtZXMoKS5jb250YWlucygiZm9vIikpOworICAgIFFTdHJpbmdMaXN0
IGF0dHJpYnV0ZXMgPSBzdmcuYXR0cmlidXRlTmFtZXMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIik7CisgICAgUUNPTVBBUkUoYXR0cmlidXRlcy5zaXplKCksIDIpOworICAgIFFWRVJJRlko
YXR0cmlidXRlcy5jb250YWlucygiYmFyIikpOworICAgIFFWRVJJRlkoYXR0cmlidXRlcy5jb250
YWlucygiZm9vYmFyIikpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6Y2xhc3NlcygpCit7
CisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwoIjxib2R5PjxwIGNsYXNzPVwiYSBiIGMgZCBhIGNc
Ij5UZXN0Iik7CisKKyAgICBRV2ViRWxlbWVudCBib2R5ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50
RWxlbWVudCgpOworICAgIFFDT01QQVJFKGJvZHkuY2xhc3NlcygpLmNvdW50KCksIDApOworCisg
ICAgUVdlYkVsZW1lbnQgcCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kQWxs
KCJwIikuYXQoMCk7CisgICAgUVN0cmluZ0xpc3QgY2xhc3NlcyA9IHAuY2xhc3NlcygpOworICAg
IFFDT01QQVJFKGNsYXNzZXMuY291bnQoKSwgNCk7CisgICAgUUNPTVBBUkUoY2xhc3Nlc1swXSwg
UUxhdGluMVN0cmluZygiYSIpKTsKKyAgICBRQ09NUEFSRShjbGFzc2VzWzFdLCBRTGF0aW4xU3Ry
aW5nKCJiIikpOworICAgIFFDT01QQVJFKGNsYXNzZXNbMl0sIFFMYXRpbjFTdHJpbmcoImMiKSk7
CisgICAgUUNPTVBBUkUoY2xhc3Nlc1szXSwgUUxhdGluMVN0cmluZygiZCIpKTsKKyAgICBRVkVS
SUZZKHAuaGFzQ2xhc3MoImEiKSk7CisgICAgUVZFUklGWShwLmhhc0NsYXNzKCJiIikpOworICAg
IFFWRVJJRlkocC5oYXNDbGFzcygiYyIpKTsKKyAgICBRVkVSSUZZKHAuaGFzQ2xhc3MoImQiKSk7
CisgICAgUVZFUklGWSghcC5oYXNDbGFzcygiZSIpKTsKKworICAgIHAuYWRkQ2xhc3MoImYiKTsK
KyAgICBRVkVSSUZZKHAuaGFzQ2xhc3MoImYiKSk7CisgICAgcC5hZGRDbGFzcygiYSIpOworICAg
IFFDT01QQVJFKHAuY2xhc3NlcygpLmNvdW50KCksIDUpOworICAgIFFWRVJJRlkocC5oYXNDbGFz
cygiYSIpKTsKKyAgICBRVkVSSUZZKHAuaGFzQ2xhc3MoImIiKSk7CisgICAgUVZFUklGWShwLmhh
c0NsYXNzKCJjIikpOworICAgIFFWRVJJRlkocC5oYXNDbGFzcygiZCIpKTsKKworICAgIHAudG9n
Z2xlQ2xhc3MoImEiKTsKKyAgICBRVkVSSUZZKCFwLmhhc0NsYXNzKCJhIikpOworICAgIFFWRVJJ
RlkocC5oYXNDbGFzcygiYiIpKTsKKyAgICBRVkVSSUZZKHAuaGFzQ2xhc3MoImMiKSk7CisgICAg
UVZFUklGWShwLmhhc0NsYXNzKCJkIikpOworICAgIFFWRVJJRlkocC5oYXNDbGFzcygiZiIpKTsK
KyAgICBRQ09NUEFSRShwLmNsYXNzZXMoKS5jb3VudCgpLCA0KTsKKyAgICBwLnRvZ2dsZUNsYXNz
KCJmIik7CisgICAgUVZFUklGWSghcC5oYXNDbGFzcygiZiIpKTsKKyAgICBRQ09NUEFSRShwLmNs
YXNzZXMoKS5jb3VudCgpLCAzKTsKKyAgICBwLnRvZ2dsZUNsYXNzKCJhIik7CisgICAgcC50b2dn
bGVDbGFzcygiZiIpOworICAgIFFWRVJJRlkocC5oYXNDbGFzcygiYSIpKTsKKyAgICBRVkVSSUZZ
KHAuaGFzQ2xhc3MoImYiKSk7CisgICAgUUNPTVBBUkUocC5jbGFzc2VzKCkuY291bnQoKSwgNSk7
CisKKyAgICBwLnJlbW92ZUNsYXNzKCJmIik7CisgICAgUVZFUklGWSghcC5oYXNDbGFzcygiZiIp
KTsKKyAgICBRQ09NUEFSRShwLmNsYXNzZXMoKS5jb3VudCgpLCA0KTsKKyAgICBwLnJlbW92ZUNs
YXNzKCJkIik7CisgICAgUVZFUklGWSghcC5oYXNDbGFzcygiZCIpKTsKKyAgICBRQ09NUEFSRShw
LmNsYXNzZXMoKS5jb3VudCgpLCAzKTsKKyAgICBwLnJlbW92ZUNsYXNzKCJub3QtZXhpc3QiKTsK
KyAgICBRQ09NUEFSRShwLmNsYXNzZXMoKS5jb3VudCgpLCAzKTsKKyAgICBwLnJlbW92ZUNsYXNz
KCJjIik7CisgICAgUVZFUklGWSghcC5oYXNDbGFzcygiYyIpKTsKKyAgICBRQ09NUEFSRShwLmNs
YXNzZXMoKS5jb3VudCgpLCAyKTsKKyAgICBwLnJlbW92ZUNsYXNzKCJiIik7CisgICAgUVZFUklG
WSghcC5oYXNDbGFzcygiYiIpKTsKKyAgICBRQ09NUEFSRShwLmNsYXNzZXMoKS5jb3VudCgpLCAx
KTsKKyAgICBwLnJlbW92ZUNsYXNzKCJhIik7CisgICAgUVZFUklGWSghcC5oYXNDbGFzcygiYSIp
KTsKKyAgICBRQ09NUEFSRShwLmNsYXNzZXMoKS5jb3VudCgpLCAwKTsKKyAgICBwLnJlbW92ZUNs
YXNzKCJmb29iYXIiKTsKKyAgICBRQ09NUEFSRShwLmNsYXNzZXMoKS5jb3VudCgpLCAwKTsKK30K
Kwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6Om5hbWVzcGFjZVVSSSgpCit7CisgICAgUVN0cmluZyBj
b250ZW50ID0gIjxodG1sIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiICIK
KyAgICAgICAgICAgICAgICAgICAgICAieG1sbnM6c3ZnPVwiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmdcIj4iCisgICAgICAgICAgICAgICAgICAgICAgIjxib2R5Pjxzdmc6c3ZnIGlkPVwiZm9v
YmFyXCIgd2lkdGg9XCI0MDBweFwiIGhlaWdodD1cIjMwMHB4XCI+IgorICAgICAgICAgICAgICAg
ICAgICAgICI8L3N2Zzpzdmc+PC9ib2R5PjwvaHRtbD4iOworCisgICAgbV9tYWluRnJhbWUtPnNl
dENvbnRlbnQoY29udGVudC50b1V0ZjgoKSwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOworICAg
IFFXZWJFbGVtZW50IGJvZHkgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAg
UUNPTVBBUkUoYm9keS5uYW1lc3BhY2VVcmkoKSwgUUxhdGluMVN0cmluZygiaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCIpKTsKKworICAgIFFXZWJFbGVtZW50IHN2ZyA9IGJvZHkuZmluZEFs
bCgiKiNmb29iYXIiKS5hdCgwKTsKKyAgICBRQ09NUEFSRShzdmcucHJlZml4KCksIFFMYXRpbjFT
dHJpbmcoInN2ZyIpKTsKKyAgICBRQ09NUEFSRShzdmcubG9jYWxOYW1lKCksIFFMYXRpbjFTdHJp
bmcoInN2ZyIpKTsKKyAgICBRQ09NUEFSRShzdmcudGFnTmFtZSgpLCBRTGF0aW4xU3RyaW5nKCJz
dmc6c3ZnIikpOworICAgIFFDT01QQVJFKHN2Zy5uYW1lc3BhY2VVcmkoKSwgUUxhdGluMVN0cmlu
ZygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSk7CisKK30KKwordm9pZCB0c3RfUVdlYkVs
ZW1lbnQ6Oml0ZXJhdGlvbigpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxib2R5PjxwPmZpcnN0
IHBhcmE8L3A+PHA+c2Vjb25kIHBhcmE8L3A+PC9ib2R5PiI7CisgICAgbV9tYWluRnJhbWUtPnNl
dEh0bWwoaHRtbCk7CisgICAgUVdlYkVsZW1lbnQgYm9keSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVu
dEVsZW1lbnQoKTsKKworICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIHBhcmFzID0gYm9keS5maW5k
QWxsKCJwIik7CisgICAgUUxpc3Q8UVdlYkVsZW1lbnQ+IHJlZmVyZW5jZUxpc3QgPSBwYXJhcy50
b0xpc3QoKTsKKworICAgIFFMaXN0PFFXZWJFbGVtZW50PiBmb3JlYWNoTGlzdDsKKyAgICBmb3Jl
YWNoKFFXZWJFbGVtZW50IHAsIHBhcmFzKSB7CisgICAgICAgZm9yZWFjaExpc3QuYXBwZW5kKHAp
OworICAgIH0KKyAgICBRVkVSSUZZKGZvcmVhY2hMaXN0LmNvdW50KCkgPT0gMik7CisgICAgUUNP
TVBBUkUoZm9yZWFjaExpc3QuY291bnQoKSwgcmVmZXJlbmNlTGlzdC5jb3VudCgpKTsKKyAgICBR
Q09NUEFSRShmb3JlYWNoTGlzdC5hdCgwKSwgcmVmZXJlbmNlTGlzdC5hdCgwKSk7CisgICAgUUNP
TVBBUkUoZm9yZWFjaExpc3QuYXQoMSksIHJlZmVyZW5jZUxpc3QuYXQoMSkpOworCisgICAgUUxp
c3Q8UVdlYkVsZW1lbnQ+IGZvckxvb3BMaXN0OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFy
YXMuY291bnQoKTsgKytpKSB7CisgICAgICAgIGZvckxvb3BMaXN0LmFwcGVuZChwYXJhcy5hdChp
KSk7CisgICAgfQorICAgIFFWRVJJRlkoZm9yZWFjaExpc3QuY291bnQoKSA9PSAyKTsKKyAgICBR
Q09NUEFSRShmb3JlYWNoTGlzdC5jb3VudCgpLCByZWZlcmVuY2VMaXN0LmNvdW50KCkpOworICAg
IFFDT01QQVJFKGZvcmVhY2hMaXN0LmF0KDApLCByZWZlcmVuY2VMaXN0LmF0KDApKTsKKyAgICBR
Q09NUEFSRShmb3JlYWNoTGlzdC5hdCgxKSwgcmVmZXJlbmNlTGlzdC5hdCgxKSk7CisKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IHBhcmFzLmNvdW50KCk7ICsraSkgeworICAgICAgICBRQ09NUEFS
RShwYXJhcy5hdChpKSwgcGFyYXNbaV0pOworICAgIH0KKworICAgIFFDT01QQVJFKHBhcmFzLmF0
KDApLCBwYXJhcy5maXJzdCgpKTsKKyAgICBRQ09NUEFSRShwYXJhcy5hdCgxKSwgcGFyYXMubGFz
dCgpKTsKK30KKwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6Om5vbkNvbnN0SXRlcmF0b3IoKQorewor
ICAgIFFTdHJpbmcgaHRtbCA9ICI8Ym9keT48cD5maXJzdCBwYXJhPC9wPjxwPnNlY29uZCBwYXJh
PC9wPjwvYm9keT4iOworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKGh0bWwpOworICAgIFFXZWJF
bGVtZW50IGJvZHkgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uIHBhcmFzID0gYm9keS5maW5kQWxsKCJwIik7CisKKyAgICBRV2ViRWxl
bWVudENvbGxlY3Rpb246Oml0ZXJhdG9yIGl0ID0gcGFyYXMuYmVnaW4oKTsKKyAgICBRQ09NUEFS
RSgqaXQsIHBhcmFzLmF0KDApKTsKKyAgICArK2l0OworICAgICgqaXQpLmVuY2xvc2VXaXRoKCI8
ZGl2PiIpOworICAgIFFDT01QQVJFKCppdCwgcGFyYXMuYXQoMSkpOworICAgICsraXQ7CisgICAg
UUNPTVBBUkUoaXQsICBwYXJhcy5lbmQoKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50Ojpj
b25zdEl0ZXJhdG9yKCkKK3sKKyAgICBRU3RyaW5nIGh0bWwgPSAiPGJvZHk+PHA+Zmlyc3QgcGFy
YTwvcD48cD5zZWNvbmQgcGFyYTwvcD48L2JvZHk+IjsKKyAgICBtX21haW5GcmFtZS0+c2V0SHRt
bChodG1sKTsKKyAgICBRV2ViRWxlbWVudCBib2R5ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxl
bWVudCgpOworICAgIGNvbnN0IFFXZWJFbGVtZW50Q29sbGVjdGlvbiBwYXJhcyA9IGJvZHkuZmlu
ZEFsbCgicCIpOworCisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uOjpjb25zdF9pdGVyYXRvciBp
dCA9IHBhcmFzLmJlZ2luKCk7CisgICAgUUNPTVBBUkUoKml0LCBwYXJhcy5hdCgwKSk7CisgICAg
KytpdDsKKyAgICBRQ09NUEFSRSgqaXQsIHBhcmFzLmF0KDEpKTsKKyAgICArK2l0OworICAgIFFD
T01QQVJFKGl0LCAgcGFyYXMuZW5kKCkpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6Zm9y
ZWFjaE1hbmlwdWxhdGlvbigpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxib2R5PjxwPmZpcnN0
IHBhcmE8L3A+PHA+c2Vjb25kIHBhcmE8L3A+PC9ib2R5PiI7CisgICAgbV9tYWluRnJhbWUtPnNl
dEh0bWwoaHRtbCk7CisgICAgUVdlYkVsZW1lbnQgYm9keSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVu
dEVsZW1lbnQoKTsKKworICAgIGZvcmVhY2goUVdlYkVsZW1lbnQgcCwgYm9keS5maW5kQWxsKCJw
IikpIHsKKyAgICAgICAgcC5zZXRJbm5lclhtbCgiPGRpdj5mb288L2Rpdj48ZGl2PmJhcjwvZGl2
PiIpOworICAgIH0KKworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgiZGl2IikuY291bnQoKSwg
NCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50OjplbXB0eUNvbGxlY3Rpb24oKQoreworICAg
IFFXZWJFbGVtZW50Q29sbGVjdGlvbiBlbXB0eUNvbGxlY3Rpb247CisgICAgUUNPTVBBUkUoZW1w
dHlDb2xsZWN0aW9uLmNvdW50KCksIDApOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6YXBw
ZW5kQ29sbGVjdGlvbigpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxib2R5PjxzcGFuIGNsYXNz
PSdhJz5hYWE8L3NwYW4+PHA+Zmlyc3QgcGFyYTwvcD48ZGl2PmZvbzwvZGl2PiIKKyAgICAgICAg
IjxzcGFuIGNsYXNzPSdiJz5iYmI8L3NwYW4+PHA+c2Vjb25kIHBhcmE8L3A+PGRpdj5iYXI8L2Rp
dj48L2JvZHk+IjsKKyAgICBtX21haW5GcmFtZS0+c2V0SHRtbChodG1sKTsKKyAgICBRV2ViRWxl
bWVudCBib2R5ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpOworCisgICAgUVdlYkVs
ZW1lbnRDb2xsZWN0aW9uIGNvbGxlY3Rpb24gPSBib2R5LmZpbmRBbGwoInAiKTsKKyAgICBRQ09N
UEFSRShjb2xsZWN0aW9uLmNvdW50KCksIDIpOworCisgICAgY29sbGVjdGlvbi5hcHBlbmQoYm9k
eS5maW5kQWxsKCJkaXYiKSk7CisgICAgUUNPTVBBUkUoY29sbGVjdGlvbi5jb3VudCgpLCA0KTsK
KworICAgIGNvbGxlY3Rpb24gKz0gYm9keS5maW5kQWxsKCJzcGFuLmEiKTsKKyAgICBRQ09NUEFS
RShjb2xsZWN0aW9uLmNvdW50KCksIDUpOworCisgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIGFs
bCA9IGNvbGxlY3Rpb24gKyBib2R5LmZpbmRBbGwoInNwYW4uYiIpOworICAgIFFDT01QQVJFKGFs
bC5jb3VudCgpLCA2KTsKKyAgICBRQ09NUEFSRShjb2xsZWN0aW9uLmNvdW50KCksIDUpOworCisg
ICAgIGFsbCArPSBjb2xsZWN0aW9uOworICAgIFFDT01QQVJFKGFsbC5jb3VudCgpLCAxMSk7CisK
KyAgICBRQ09NUEFSRShjb2xsZWN0aW9uLmNvdW50KCksIDUpOworICAgIFFXZWJFbGVtZW50Q29s
bGVjdGlvbiB0ZXN0OworICAgIHRlc3QuYXBwZW5kKGNvbGxlY3Rpb24pOworICAgIFFDT01QQVJF
KHRlc3QuY291bnQoKSwgNSk7CisgICAgdGVzdC5hcHBlbmQoUVdlYkVsZW1lbnRDb2xsZWN0aW9u
KCkpOworICAgIFFDT01QQVJFKHRlc3QuY291bnQoKSwgNSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJF
bGVtZW50OjpldmFsdWF0ZUphdmFTY3JpcHQoKQoreworICAgIFFWYXJpYW50IHJlc3VsdDsKKyAg
ICBtX21haW5GcmFtZS0+c2V0SHRtbCgiPGJvZHk+PHA+dGVzdCIpOworICAgIFFXZWJFbGVtZW50
IHBhcmEgPSBtX21haW5GcmFtZS0+ZmluZEZpcnN0RWxlbWVudCgicCIpOworCisgICAgcmVzdWx0
ID0gcGFyYS5ldmFsdWF0ZUphdmFTY3JpcHQoInRoaXMudGFnTmFtZSIpOworICAgIFFWRVJJRlko
cmVzdWx0LmlzVmFsaWQoKSk7CisgICAgUVZFUklGWShyZXN1bHQudHlwZSgpID09IFFWYXJpYW50
OjpTdHJpbmcpOworICAgIFFDT01QQVJFKHJlc3VsdC50b1N0cmluZygpLCBRTGF0aW4xU3RyaW5n
KCJQIikpOworCisgICAgcmVzdWx0ID0gcGFyYS5ldmFsdWF0ZUphdmFTY3JpcHQoInRoaXMuaGFz
QXR0cmlidXRlcygpIik7CisgICAgUVZFUklGWShyZXN1bHQuaXNWYWxpZCgpKTsKKyAgICBRVkVS
SUZZKHJlc3VsdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wpOworICAgIFFWRVJJRlkoIXJlc3Vs
dC50b0Jvb2woKSk7CisKKyAgICBwYXJhLmV2YWx1YXRlSmF2YVNjcmlwdCgidGhpcy5zZXRBdHRy
aWJ1dGUoJ2FsaWduJywgJ2xlZnQnKTsiKTsKKyAgICBRQ09NUEFSRShwYXJhLmF0dHJpYnV0ZSgi
YWxpZ24iKSwgUUxhdGluMVN0cmluZygibGVmdCIpKTsKKworICAgIHJlc3VsdCA9IHBhcmEuZXZh
bHVhdGVKYXZhU2NyaXB0KCJ0aGlzLmhhc0F0dHJpYnV0ZXMoKSIpOworICAgIFFWRVJJRlkocmVz
dWx0LmlzVmFsaWQoKSk7CisgICAgUVZFUklGWShyZXN1bHQudHlwZSgpID09IFFWYXJpYW50OjpC
b29sKTsKKyAgICBRVkVSSUZZKHJlc3VsdC50b0Jvb2woKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJF
bGVtZW50Ojpkb2N1bWVudEVsZW1lbnQoKQoreworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKCI8
Ym9keT48cD5UZXN0Iik7CisKKyAgICBRV2ViRWxlbWVudCBwYXJhID0gbV9tYWluRnJhbWUtPmRv
Y3VtZW50RWxlbWVudCgpLmZpbmRBbGwoInAiKS5hdCgwKTsKKyAgICBRVkVSSUZZKHBhcmEucGFy
ZW50KCkucGFyZW50KCkgPT0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpKTsKKyAgICBR
VkVSSUZZKHBhcmEuZG9jdW1lbnQoKSA9PSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkp
OworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6ZnJhbWUoKQoreworICAgIG1fbWFpbkZyYW1l
LT5zZXRIdG1sKCI8Ym9keT48cD50ZXN0Iik7CisKKyAgICBRV2ViRWxlbWVudCBkb2MgPSBtX21h
aW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUVZFUklGWShkb2Mud2ViRnJhbWUoKSA9
PSBtX21haW5GcmFtZSk7CisKKyAgICBtX21haW5GcmFtZS0+bG9hZChRVXJsKCJkYXRhOnRleHQv
aHRtbCw8ZnJhbWVzZXQgY29scz1cIjI1JSw3NSVcIj48ZnJhbWUgc3JjPVwiZGF0YTp0ZXh0L2h0
bWwsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxwPmZyYW1lMVwiPiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI8ZnJhbWUgc3JjPVwiZGF0YTp0ZXh0L2h0bWwsPHA+ZnJhbWUy
XCI+PC9mcmFtZXNldD4iKSk7CisKKyAgICB3YWl0Rm9yU2lnbmFsKG1fcGFnZSwgU0lHTkFMKGxv
YWRGaW5pc2hlZChib29sKSkpOworCisgICAgUUNPTVBBUkUobV9tYWluRnJhbWUtPmNoaWxkRnJh
bWVzKCkuY291bnQoKSwgMik7CisKKyAgICBRV2ViRnJhbWUqIGZpcnN0RnJhbWUgPSBtX21haW5G
cmFtZS0+Y2hpbGRGcmFtZXMoKS5hdCgwKTsKKyAgICBRV2ViRnJhbWUqIHNlY29uZEZyYW1lID0g
bV9tYWluRnJhbWUtPmNoaWxkRnJhbWVzKCkuYXQoMSk7CisKKyAgICBRQ09NUEFSRShmaXJzdEZy
YW1lLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJmcmFtZTEiKSk7CisgICAgUUNPTVBBUkUoc2Vj
b25kRnJhbWUtPnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoImZyYW1lMiIpKTsKKworICAgIFFXZWJF
bGVtZW50IGZpcnN0UGFyYSA9IGZpcnN0RnJhbWUtPmRvY3VtZW50RWxlbWVudCgpLmZpbmRBbGwo
InAiKS5hdCgwKTsKKyAgICBRV2ViRWxlbWVudCBzZWNvbmRQYXJhID0gc2Vjb25kRnJhbWUtPmRv
Y3VtZW50RWxlbWVudCgpLmZpbmRBbGwoInAiKS5hdCgwKTsKKworICAgIFFWRVJJRlkoZmlyc3RQ
YXJhLndlYkZyYW1lKCkgPT0gZmlyc3RGcmFtZSk7CisgICAgUVZFUklGWShzZWNvbmRQYXJhLndl
YkZyYW1lKCkgPT0gc2Vjb25kRnJhbWUpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6c3R5
bGUoKQoreworICAgIFFTdHJpbmcgaHRtbCA9ICI8aGVhZD4iCisgICAgICAgICI8c3R5bGUgdHlw
ZT0ndGV4dC9jc3MnPiIKKyAgICAgICAgICAgICJwIHsgY29sb3I6IGdyZWVuICFpbXBvcnRhbnQg
fSIKKyAgICAgICAgICAgICIjaWRQIHsgY29sb3I6IHJlZCB9IgorICAgICAgICAgICAgIi5jbGFz
c1AgeyBjb2xvciA6IHllbGxvdyAhIGltcG9ydGFudCB9IgorICAgICAgICAiPC9zdHlsZT4iCisg
ICAgIjwvaGVhZD4iCisgICAgIjxib2R5PiIKKyAgICAgICAgIjxwIGlkPSdpZFAnIGNsYXNzPSdj
bGFzc1AnIHN0eWxlPSdjb2xvcjogYmx1ZTsnPnNvbWUgdGV4dDwvcD4iCisgICAgIjwvYm9keT4i
OworCisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwoaHRtbCk7CisKKyAgICBRV2ViRWxlbWVudCBw
ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpLmZpbmRBbGwoInAiKS5hdCgwKTsKKyAg
ICBRQ09NUEFSRShwLnN0eWxlUHJvcGVydHkoImNvbG9yIiwgUVdlYkVsZW1lbnQ6OklubGluZVN0
eWxlKSwgUUxhdGluMVN0cmluZygiYmx1ZSIpKTsKKyAgICBRVkVSSUZZKHAuc3R5bGVQcm9wZXJ0
eSgiY3Vyc29yIiwgUVdlYkVsZW1lbnQ6OklubGluZVN0eWxlKS5pc0VtcHR5KCkpOworCisgICAg
cC5zZXRTdHlsZVByb3BlcnR5KCJjb2xvciIsICJyZWQiKTsKKyAgICBwLnNldFN0eWxlUHJvcGVy
dHkoImN1cnNvciIsICJhdXRvIik7CisKKyAgICBRQ09NUEFSRShwLnN0eWxlUHJvcGVydHkoImNv
bG9yIiwgUVdlYkVsZW1lbnQ6OklubGluZVN0eWxlKSwgUUxhdGluMVN0cmluZygicmVkIikpOwor
ICAgIFFDT01QQVJFKHAuc3R5bGVQcm9wZXJ0eSgiY29sb3IiLCBRV2ViRWxlbWVudDo6Q2FzY2Fk
ZWRTdHlsZSksIFFMYXRpbjFTdHJpbmcoInllbGxvdyIpKTsKKyAgICBRQ09NUEFSRShwLnN0eWxl
UHJvcGVydHkoImN1cnNvciIsIFFXZWJFbGVtZW50OjpJbmxpbmVTdHlsZSksIFFMYXRpbjFTdHJp
bmcoImF1dG8iKSk7CisKKyAgICBwLnNldFN0eWxlUHJvcGVydHkoImNvbG9yIiwgImdyZWVuICFp
bXBvcnRhbnQiKTsKKyAgICBRQ09NUEFSRShwLnN0eWxlUHJvcGVydHkoImNvbG9yIiwgUVdlYkVs
ZW1lbnQ6OklubGluZVN0eWxlKSwgUUxhdGluMVN0cmluZygiZ3JlZW4iKSk7CisgICAgUUNPTVBB
UkUocC5zdHlsZVByb3BlcnR5KCJjb2xvciIsIFFXZWJFbGVtZW50OjpDYXNjYWRlZFN0eWxlKSwg
UUxhdGluMVN0cmluZygiZ3JlZW4iKSk7CisKKyAgICBwLnNldFN0eWxlUHJvcGVydHkoImNvbG9y
IiwgImJsdWUiKTsKKyAgICAvLyBBIGN1cnJlbnQgaW1wb3J0YW50IElubGluZVN0eWxlIHNob3Vs
ZG4ndCBiZSBvdmVyd3JpdHRlbiBieSBhIG5vbi1pbXBvcnRhbnQgb25lLgorICAgIFFDT01QQVJF
KHAuc3R5bGVQcm9wZXJ0eSgiY29sb3IiLCBRV2ViRWxlbWVudDo6SW5saW5lU3R5bGUpLCBRTGF0
aW4xU3RyaW5nKCJncmVlbiIpKTsKKyAgICBRQ09NUEFSRShwLnN0eWxlUHJvcGVydHkoImNvbG9y
IiwgUVdlYkVsZW1lbnQ6OkNhc2NhZGVkU3R5bGUpLCBRTGF0aW4xU3RyaW5nKCJncmVlbiIpKTsK
KworICAgIHAuc2V0U3R5bGVQcm9wZXJ0eSgiY29sb3IiLCAiYmx1ZSAhaW1wb3J0YW50Iik7Cisg
ICAgUUNPTVBBUkUocC5zdHlsZVByb3BlcnR5KCJjb2xvciIsIFFXZWJFbGVtZW50OjpJbmxpbmVT
dHlsZSksIFFMYXRpbjFTdHJpbmcoImJsdWUiKSk7CisgICAgUUNPTVBBUkUocC5zdHlsZVByb3Bl
cnR5KCJjb2xvciIsIFFXZWJFbGVtZW50OjpDYXNjYWRlZFN0eWxlKSwgUUxhdGluMVN0cmluZygi
Ymx1ZSIpKTsKKworICAgIFFTdHJpbmcgaHRtbDIgPSAiPGhlYWQ+IgorICAgICAgICAiPHN0eWxl
IHR5cGU9J3RleHQvY3NzJz4iCisgICAgICAgICAgICAicCB7IGNvbG9yOiBncmVlbiB9IgorICAg
ICAgICAgICAgIiNpZFAgeyBjb2xvcjogcmVkIH0iCisgICAgICAgICAgICAiLmNsYXNzUCB7IGNv
bG9yOiB5ZWxsb3cgfSIKKyAgICAgICAgIjwvc3R5bGU+IgorICAgICI8L2hlYWQ+IgorICAgICI8
Ym9keT4iCisgICAgICAgICI8cCBpZD0naWRQJyBjbGFzcz0nY2xhc3NQJyBzdHlsZT0nY29sb3I6
IGJsdWU7Jz5zb21lIHRleHQ8L3A+IgorICAgICI8L2JvZHk+IjsKKworICAgIG1fbWFpbkZyYW1l
LT5zZXRIdG1sKGh0bWwyKTsKKyAgICBwID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgp
LmZpbmRBbGwoInAiKS5hdCgwKTsKKworICAgIFFDT01QQVJFKHAuc3R5bGVQcm9wZXJ0eSgiY29s
b3IiLCBRV2ViRWxlbWVudDo6SW5saW5lU3R5bGUpLCBRTGF0aW4xU3RyaW5nKCJibHVlIikpOwor
ICAgIFFDT01QQVJFKHAuc3R5bGVQcm9wZXJ0eSgiY29sb3IiLCBRV2ViRWxlbWVudDo6Q2FzY2Fk
ZWRTdHlsZSksIFFMYXRpbjFTdHJpbmcoImJsdWUiKSk7CisKKyAgICBRU3RyaW5nIGh0bWwzID0g
IjxoZWFkPiIKKyAgICAgICAgIjxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+IgorICAgICAgICAgICAg
InAgeyBjb2xvcjogZ3JlZW4gIWltcG9ydGFudCB9IgorICAgICAgICAgICAgIiNpZFAgeyBjb2xv
cjogcmVkICFpbXBvcnRhbnR9IgorICAgICAgICAgICAgIi5jbGFzc1AgeyBjb2xvcjogeWVsbG93
ICFpbXBvcnRhbnR9IgorICAgICAgICAiPC9zdHlsZT4iCisgICAgIjwvaGVhZD4iCisgICAgIjxi
b2R5PiIKKyAgICAgICAgIjxwIGlkPSdpZFAnIGNsYXNzPSdjbGFzc1AnIHN0eWxlPSdjb2xvcjog
Ymx1ZSAhaW1wb3J0YW50Oyc+c29tZSB0ZXh0PC9wPiIKKyAgICAiPC9ib2R5PiI7CisKKyAgICBt
X21haW5GcmFtZS0+c2V0SHRtbChodG1sMyk7CisgICAgcCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVu
dEVsZW1lbnQoKS5maW5kQWxsKCJwIikuYXQoMCk7CisKKyAgICBRQ09NUEFSRShwLnN0eWxlUHJv
cGVydHkoImNvbG9yIiwgUVdlYkVsZW1lbnQ6OklubGluZVN0eWxlKSwgUUxhdGluMVN0cmluZygi
Ymx1ZSIpKTsKKyAgICBRQ09NUEFSRShwLnN0eWxlUHJvcGVydHkoImNvbG9yIiwgUVdlYkVsZW1l
bnQ6OkNhc2NhZGVkU3R5bGUpLCBRTGF0aW4xU3RyaW5nKCJibHVlIikpOworCisgICAgUVN0cmlu
ZyBodG1sNSA9ICI8aGVhZD4iCisgICAgICAgICI8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPiIKKyAg
ICAgICAgICAgICJwIHsgY29sb3I6IGdyZWVuIH0iCisgICAgICAgICAgICAiI2lkUCB7IGNvbG9y
OiByZWQgfSIKKyAgICAgICAgICAgICIuY2xhc3NQIHsgY29sb3I6IHllbGxvdyB9IgorICAgICAg
ICAiPC9zdHlsZT4iCisgICAgIjwvaGVhZD4iCisgICAgIjxib2R5PiIKKyAgICAgICAgIjxwIGlk
PSdpZFAnIGNsYXNzPSdjbGFzc1AnPnNvbWUgdGV4dDwvcD4iCisgICAgIjwvYm9keT4iOworCisg
ICAgbV9tYWluRnJhbWUtPnNldEh0bWwoaHRtbDUpOworICAgIHAgPSBtX21haW5GcmFtZS0+ZG9j
dW1lbnRFbGVtZW50KCkuZmluZEFsbCgicCIpLmF0KDApOworCisgICAgUUNPTVBBUkUocC5zdHls
ZVByb3BlcnR5KCJjb2xvciIsIFFXZWJFbGVtZW50OjpJbmxpbmVTdHlsZSksIFFMYXRpbjFTdHJp
bmcoIiIpKTsKKyAgICBRQ09NUEFSRShwLnN0eWxlUHJvcGVydHkoImNvbG9yIiwgUVdlYkVsZW1l
bnQ6OkNhc2NhZGVkU3R5bGUpLCBRTGF0aW4xU3RyaW5nKCJyZWQiKSk7CisKKyAgICBRU3RyaW5n
IGh0bWw2ID0gIjxoZWFkPiIKKyAgICAgICAgIjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0n
cXJjOi9zdHlsZS5jc3MnIHR5cGU9J3RleHQvY3NzJyAvPiIKKyAgICAgICAgIjxzdHlsZSB0eXBl
PSd0ZXh0L2Nzcyc+IgorICAgICAgICAgICAgInAgeyBjb2xvcjogZ3JlZW4gfSIKKyAgICAgICAg
ICAgICIjaWRQIHsgY29sb3I6IHJlZCB9IgorICAgICAgICAgICAgIi5jbGFzc1AgeyBjb2xvcjog
eWVsbG93ICEgaW1wb3J0YW50fSIKKyAgICAgICAgIjwvc3R5bGU+IgorICAgICI8L2hlYWQ+Igor
ICAgICI8Ym9keT4iCisgICAgICAgICI8cCBpZD0naWRQJyBjbGFzcz0nY2xhc3NQJyBzdHlsZT0n
Y29sb3I6IGJsdWU7Jz5zb21lIHRleHQ8L3A+IgorICAgICI8L2JvZHk+IjsKKworICAgIC8vIGlu
IGZldyBzZWNvbmRzLCB0aGUgQ1NTIHNob3VsZCBiZSBjb21wbGV0ZXkgbG9hZGVkCisgICAgbV9t
YWluRnJhbWUtPnNldEh0bWwoaHRtbDYpOworICAgIHdhaXRGb3JTaWduYWwobV9wYWdlLCBTSUdO
QUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgMjAwKTsKKworICAgIHAgPSBtX21haW5GcmFtZS0+ZG9j
dW1lbnRFbGVtZW50KCkuZmluZEFsbCgicCIpLmF0KDApOworICAgIFFDT01QQVJFKHAuc3R5bGVQ
cm9wZXJ0eSgiY29sb3IiLCBRV2ViRWxlbWVudDo6SW5saW5lU3R5bGUpLCBRTGF0aW4xU3RyaW5n
KCJibHVlIikpOworICAgIFFDT01QQVJFKHAuc3R5bGVQcm9wZXJ0eSgiY29sb3IiLCBRV2ViRWxl
bWVudDo6Q2FzY2FkZWRTdHlsZSksIFFMYXRpbjFTdHJpbmcoImJsYWNrIikpOworCisgICAgUVN0
cmluZyBodG1sNyA9ICI8aGVhZD4iCisgICAgICAgICI8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPiIK
KyAgICAgICAgICAgICJAaW1wb3J0IHVybChxcmM6L3N0eWxlMi5jc3MpOyIKKyAgICAgICAgIjwv
c3R5bGU+IgorICAgICAgICAiPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSdxcmM6L3N0eWxl
LmNzcycgdHlwZT0ndGV4dC9jc3MnIC8+IgorICAgICI8L2hlYWQ+IgorICAgICI8Ym9keT4iCisg
ICAgICAgICI8cCBpZD0naWRQJyBzdHlsZT0nY29sb3I6IGJsdWU7Jz5zb21lIHRleHQ8L3A+Igor
ICAgICI8L2JvZHk+IjsKKworICAgIC8vIGluIGZldyBzZWNvbmRzLCB0aGUgc3R5bGUgc2hvdWxk
IGJlIGNvbXBsZXRleSBsb2FkZWQKKyAgICBtX21haW5GcmFtZS0+c2V0SHRtbChodG1sNyk7Cisg
ICAgd2FpdEZvclNpZ25hbChtX3BhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAyMDAp
OworCisgICAgcCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kQWxsKCJwIiku
YXQoMCk7CisgICAgUUNPTVBBUkUocC5zdHlsZVByb3BlcnR5KCJjb2xvciIsIFFXZWJFbGVtZW50
OjpDYXNjYWRlZFN0eWxlKSwgUUxhdGluMVN0cmluZygiYmxhY2siKSk7CisKKyAgICBRU3RyaW5n
IGh0bWw4ID0gIjxib2R5PjxwPnNvbWUgdGV4dDwvcD48L2JvZHk+IjsKKworICAgIG1fbWFpbkZy
YW1lLT5zZXRIdG1sKGh0bWw4KTsKKyAgICBwID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVu
dCgpLmZpbmRBbGwoInAiKS5hdCgwKTsKKworICAgIFFDT01QQVJFKHAuc3R5bGVQcm9wZXJ0eSgi
Y29sb3IiLCBRV2ViRWxlbWVudDo6SW5saW5lU3R5bGUpLCBRTGF0aW4xU3RyaW5nKCIiKSk7Cisg
ICAgUUNPTVBBUkUocC5zdHlsZVByb3BlcnR5KCJjb2xvciIsIFFXZWJFbGVtZW50OjpDYXNjYWRl
ZFN0eWxlKSwgUUxhdGluMVN0cmluZygiIikpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6
Y29tcHV0ZWRTdHlsZSgpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxib2R5PjxwPnNvbWUgdGV4
dDwvcD48L2JvZHk+IjsKKyAgICBtX21haW5GcmFtZS0+c2V0SHRtbChodG1sKTsKKworICAgIFFX
ZWJFbGVtZW50IHAgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEFsbCgicCIp
LmF0KDApOworICAgIFFDT01QQVJFKHAuc3R5bGVQcm9wZXJ0eSgiY3Vyc29yIiwgUVdlYkVsZW1l
bnQ6OkNvbXB1dGVkU3R5bGUpLCBRTGF0aW4xU3RyaW5nKCJhdXRvIikpOworICAgIFFWRVJJRlko
IXAuc3R5bGVQcm9wZXJ0eSgiY3Vyc29yIiwgUVdlYkVsZW1lbnQ6OkNvbXB1dGVkU3R5bGUpLmlz
RW1wdHkoKSk7CisgICAgUVZFUklGWShwLnN0eWxlUHJvcGVydHkoImN1cnNvciIsIFFXZWJFbGVt
ZW50OjpJbmxpbmVTdHlsZSkuaXNFbXB0eSgpKTsKKworICAgIHAuc2V0U3R5bGVQcm9wZXJ0eSgi
Y3Vyc29yIiwgInRleHQiKTsKKyAgICBwLnNldFN0eWxlUHJvcGVydHkoImNvbG9yIiwgInJlZCIp
OworCisgICAgUUNPTVBBUkUocC5zdHlsZVByb3BlcnR5KCJjdXJzb3IiLCBRV2ViRWxlbWVudDo6
Q29tcHV0ZWRTdHlsZSksIFFMYXRpbjFTdHJpbmcoInRleHQiKSk7CisgICAgUUNPTVBBUkUocC5z
dHlsZVByb3BlcnR5KCJjb2xvciIsIFFXZWJFbGVtZW50OjpDb21wdXRlZFN0eWxlKSwgUUxhdGlu
MVN0cmluZygicmdiKDI1NSwgMCwgMCkiKSk7CisgICAgUUNPTVBBUkUocC5zdHlsZVByb3BlcnR5
KCJjb2xvciIsIFFXZWJFbGVtZW50OjpJbmxpbmVTdHlsZSksIFFMYXRpbjFTdHJpbmcoInJlZCIp
KTsKK30KKwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6OmFwcGVuZEFuZFByZXBlbmQoKQoreworICAg
IFFTdHJpbmcgaHRtbCA9ICI8Ym9keT4iCisgICAgICAgICI8cD4iCisgICAgICAgICAgICAiZm9v
IgorICAgICAgICAiPC9wPiIKKyAgICAgICAgIjxwPiIKKyAgICAgICAgICAgICJiYXIiCisgICAg
ICAgICI8L3A+IgorICAgICI8L2JvZHk+IjsKKworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKGh0
bWwpOworICAgIFFXZWJFbGVtZW50IGJvZHkgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50
KCkuZmluZEZpcnN0KCJib2R5Iik7CisKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5j
b3VudCgpLCAyKTsKKyAgICBib2R5LmFwcGVuZEluc2lkZShib2R5LmZpbmRGaXJzdCgicCIpKTsK
KyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5jb3VudCgpLCAyKTsKKyAgICBRQ09NUEFS
RShib2R5LmZpbmRGaXJzdCgicCIpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoImJhciIpKTsKKyAg
ICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5sYXN0KCkudG9QbGFpblRleHQoKSwgUVN0cmlu
ZygiZm9vIikpOworCisgICAgYm9keS5hcHBlbmRJbnNpZGUoYm9keS5maW5kRmlyc3QoInAiKS5j
bG9uZSgpKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5jb3VudCgpLCAzKTsKKyAg
ICBRQ09NUEFSRShib2R5LmZpbmRGaXJzdCgicCIpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoImJh
ciIpKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5sYXN0KCkudG9QbGFpblRleHQo
KSwgUVN0cmluZygiYmFyIikpOworCisgICAgYm9keS5wcmVwZW5kSW5zaWRlKGJvZHkuZmluZEFs
bCgicCIpLmF0KDEpLmNsb25lKCkpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgicCIpLmNv
dW50KCksIDQpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEZpcnN0KCJwIikudG9QbGFpblRleHQo
KSwgUVN0cmluZygiZm9vIikpOworCisgICAgYm9keS5maW5kRmlyc3QoInAiKS5hcHBlbmRJbnNp
ZGUoIjxkaXY+Ym9veWFrYXNoYTwvZGl2PiIpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgi
cCBkaXYiKS5jb3VudCgpLCAxKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRGaXJzdCgicCBkaXYi
KS50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJib295YWthc2hhIikpOworCisgICAgYm9keS5maW5k
Rmlyc3QoImRpdiIpLnByZXBlbmRJbnNpZGUoIjxjb2RlPnllcHA8L2NvZGU+Iik7CisgICAgUUNP
TVBBUkUoYm9keS5maW5kQWxsKCJwIGRpdiBjb2RlIikuY291bnQoKSwgMSk7CisgICAgUUNPTVBB
UkUoYm9keS5maW5kRmlyc3QoInAgZGl2IGNvZGUiKS50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJ5
ZXBwIikpOworCisgICAgLy8gSW5zZXJ0aW5nIEhUTUwgaW50byBhbiBpbWcgdGFnIGlzIG5vdCBh
bGxvd2VkLCBidXQgYXBwZW5kaW5nL3ByZXBlbmRpbmcgb3V0c2lkZSBpcy4KKyAgICBib2R5LmZp
bmRGaXJzdCgiZGl2IikuYXBwZW5kSW5zaWRlKCI8aW1nIHNyYz1cInRlc3QucG5nXCI+Iik7Cisg
ICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJwIGRpdiBpbWciKS5jb3VudCgpLCAxKTsKKworICAg
IFFXZWJFbGVtZW50IGltZyA9IGJvZHkuZmluZEZpcnN0KCJpbWciKTsKKyAgICBRVkVSSUZZKCFp
bWcuaXNOdWxsKCkpOworICAgIGltZy5hcHBlbmRJbnNpZGUoIjxwIGlkPVwiZmFpbDFcIj48L3A+
Iik7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJwI2ZhaWwxIikuY291bnQoKSwgMCk7CisK
KyAgICBpbWcuYXBwZW5kT3V0c2lkZSgiPHAgaWQ9XCJzdWNjZXNzMVwiPjwvcD4iKTsKKyAgICBR
Q09NUEFSRShib2R5LmZpbmRBbGwoInAjc3VjY2VzczEiKS5jb3VudCgpLCAxKTsKKworICAgIGlt
Zy5wcmVwZW5kSW5zaWRlKCI8cCBpZD1cImZhaWwyXCI+PC9wPiIpOworICAgIFFDT01QQVJFKGJv
ZHkuZmluZEFsbCgicCNmYWlsMiIpLmNvdW50KCksIDApOworCisgICAgaW1nLnByZXBlbmRPdXRz
aWRlKCI8cCBpZD1cInN1Y2Nlc3MyXCI+PC9wPiIpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFs
bCgicCNzdWNjZXNzMiIpLmNvdW50KCksIDEpOworCisKK30KKwordm9pZCB0c3RfUVdlYkVsZW1l
bnQ6Omluc2VydEJlZm9yZUFuZEFmdGVyKCkKK3sKKyAgICBRU3RyaW5nIGh0bWwgPSAiPGJvZHk+
IgorICAgICAgICAiPHA+IgorICAgICAgICAgICAgImZvbyIKKyAgICAgICAgIjwvcD4iCisgICAg
ICAgICI8ZGl2PiIKKyAgICAgICAgICAgICJ5ZWFoIgorICAgICAgICAiPC9kaXY+IgorICAgICAg
ICAiPHA+IgorICAgICAgICAgICAgImJhciIKKyAgICAgICAgIjwvcD4iCisgICAgIjwvYm9keT4i
OworCisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwoaHRtbCk7CisgICAgUVdlYkVsZW1lbnQgYm9k
eSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kRmlyc3QoImJvZHkiKTsKKyAg
ICBRV2ViRWxlbWVudCBkaXYgPSBib2R5LmZpbmRGaXJzdCgiZGl2Iik7CisKKyAgICBRQ09NUEFS
RShib2R5LmZpbmRBbGwoInAiKS5jb3VudCgpLCAyKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRB
bGwoImRpdiIpLmNvdW50KCksIDEpOworCisgICAgZGl2LnByZXBlbmRPdXRzaWRlKGJvZHkuZmlu
ZEFsbCgicCIpLmxhc3QoKS5jbG9uZSgpKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAi
KS5jb3VudCgpLCAzKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5hdCgwKS50b1Bs
YWluVGV4dCgpLCBRU3RyaW5nKCJmb28iKSk7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJw
IikuYXQoMSkudG9QbGFpblRleHQoKSwgUVN0cmluZygiYmFyIikpOworICAgIFFDT01QQVJFKGJv
ZHkuZmluZEFsbCgicCIpLmF0KDIpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoImJhciIpKTsKKwor
ICAgIGRpdi5hcHBlbmRPdXRzaWRlKGJvZHkuZmluZEZpcnN0KCJwIikuY2xvbmUoKSk7CisgICAg
UUNPTVBBUkUoYm9keS5maW5kQWxsKCJwIikuY291bnQoKSwgNCk7CisgICAgUUNPTVBBUkUoYm9k
eS5maW5kQWxsKCJwIikuYXQoMCkudG9QbGFpblRleHQoKSwgUVN0cmluZygiZm9vIikpOworICAg
IFFDT01QQVJFKGJvZHkuZmluZEFsbCgicCIpLmF0KDEpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmco
ImJhciIpKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5hdCgyKS50b1BsYWluVGV4
dCgpLCBRU3RyaW5nKCJmb28iKSk7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJwIikuYXQo
MykudG9QbGFpblRleHQoKSwgUVN0cmluZygiYmFyIikpOworCisgICAgZGl2LnByZXBlbmRPdXRz
aWRlKCI8c3Bhbj5oZXk8L3NwYW4+Iik7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJzcGFu
IikuY291bnQoKSwgMSk7CisKKyAgICBkaXYuYXBwZW5kT3V0c2lkZSgiPHNwYW4+dGhlcmU8L3Nw
YW4+Iik7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJzcGFuIikuY291bnQoKSwgMik7Cisg
ICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJzcGFuIikuYXQoMCkudG9QbGFpblRleHQoKSwgUVN0
cmluZygiaGV5IikpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgic3BhbiIpLmF0KDEpLnRv
UGxhaW5UZXh0KCksIFFTdHJpbmcoInRoZXJlIikpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVu
dDo6cmVtb3ZlKCkKK3sKKyAgICBRU3RyaW5nIGh0bWwgPSAiPGJvZHk+IgorICAgICAgICAiPHA+
IgorICAgICAgICAgICAgImZvbyIKKyAgICAgICAgIjwvcD4iCisgICAgICAgICI8ZGl2PiIKKyAg
ICAgICAgICAgICI8cD55ZWFoPC9wPiIKKyAgICAgICAgIjwvZGl2PiIKKyAgICAgICAgIjxwPiIK
KyAgICAgICAgICAgICJiYXIiCisgICAgICAgICI8L3A+IgorICAgICI8L2JvZHk+IjsKKworICAg
IG1fbWFpbkZyYW1lLT5zZXRIdG1sKGh0bWwpOworICAgIFFXZWJFbGVtZW50IGJvZHkgPSBtX21h
aW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZpcnN0KCJib2R5Iik7CisKKyAgICBRQ09N
UEFSRShib2R5LmZpbmRBbGwoImRpdiIpLmNvdW50KCksIDEpOworICAgIFFDT01QQVJFKGJvZHku
ZmluZEFsbCgicCIpLmNvdW50KCksIDMpOworCisgICAgUVdlYkVsZW1lbnQgZGl2ID0gYm9keS5m
aW5kRmlyc3QoImRpdiIpOworICAgIGRpdi50YWtlRnJvbURvY3VtZW50KCk7CisKKyAgICBRQ09N
UEFSRShkaXYuaXNOdWxsKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoImRp
diIpLmNvdW50KCksIDApOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgicCIpLmNvdW50KCks
IDIpOworCisgICAgYm9keS5hcHBlbmRJbnNpZGUoZGl2KTsKKworICAgIFFDT01QQVJFKGJvZHku
ZmluZEFsbCgiZGl2IikuY291bnQoKSwgMSk7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJw
IikuY291bnQoKSwgMyk7Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50OjpjbGVhcigpCit7Cisg
ICAgUVN0cmluZyBodG1sID0gIjxib2R5PiIKKyAgICAgICAgIjxwPiIKKyAgICAgICAgICAgICJm
b28iCisgICAgICAgICI8L3A+IgorICAgICAgICAiPGRpdj4iCisgICAgICAgICAgICAiPHA+eWVh
aDwvcD4iCisgICAgICAgICI8L2Rpdj4iCisgICAgICAgICI8cD4iCisgICAgICAgICAgICAiYmFy
IgorICAgICAgICAiPC9wPiIKKyAgICAiPC9ib2R5PiI7CisKKyAgICBtX21haW5GcmFtZS0+c2V0
SHRtbChodG1sKTsKKyAgICBRV2ViRWxlbWVudCBib2R5ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50
RWxlbWVudCgpLmZpbmRGaXJzdCgiYm9keSIpOworCisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxs
KCJkaXYiKS5jb3VudCgpLCAxKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoInAiKS5jb3Vu
dCgpLCAzKTsKKyAgICBib2R5LmZpbmRGaXJzdCgiZGl2IikucmVtb3ZlQWxsQ2hpbGRyZW4oKTsK
KyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoImRpdiIpLmNvdW50KCksIDEpOworICAgIFFDT01Q
QVJFKGJvZHkuZmluZEFsbCgicCIpLmNvdW50KCksIDIpOworfQorCisKK3ZvaWQgdHN0X1FXZWJF
bGVtZW50OjpyZXBsYWNlV2l0aCgpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxib2R5PiIKKyAg
ICAgICAgIjxwPiIKKyAgICAgICAgICAgICJmb28iCisgICAgICAgICI8L3A+IgorICAgICAgICAi
PGRpdj4iCisgICAgICAgICAgICAieWVhaCIKKyAgICAgICAgIjwvZGl2PiIKKyAgICAgICAgIjxw
PiIKKyAgICAgICAgICAgICI8c3Bhbj5oYWJhPC9zcGFuPiIKKyAgICAgICAgIjwvcD4iCisgICAg
IjwvYm9keT4iOworCisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwoaHRtbCk7CisgICAgUVdlYkVs
ZW1lbnQgYm9keSA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kRmlyc3QoImJv
ZHkiKTsKKworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgiZGl2IikuY291bnQoKSwgMSk7Cisg
ICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJzcGFuIikuY291bnQoKSwgMSk7CisgICAgYm9keS5m
aW5kRmlyc3QoImRpdiIpLnJlcGxhY2UoYm9keS5maW5kRmlyc3QoInNwYW4iKS5jbG9uZSgpKTsK
KyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoImRpdiIpLmNvdW50KCksIDApOworICAgIFFDT01Q
QVJFKGJvZHkuZmluZEFsbCgic3BhbiIpLmNvdW50KCksIDIpOworICAgIFFDT01QQVJFKGJvZHku
ZmluZEFsbCgicCIpLmNvdW50KCksIDIpOworCisgICAgYm9keS5maW5kRmlyc3QoInNwYW4iKS5y
ZXBsYWNlKCI8cD48Y29kZT53b3c8L2NvZGU+PC9wPiIpOworICAgIFFDT01QQVJFKGJvZHkuZmlu
ZEFsbCgicCIpLmNvdW50KCksIDMpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgicCBjb2Rl
IikuY291bnQoKSwgMSk7CisgICAgUUNPTVBBUkUoYm9keS5maW5kRmlyc3QoInAgY29kZSIpLnRv
UGxhaW5UZXh0KCksIFFTdHJpbmcoIndvdyIpKTsKK30KKwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6
OmVuY2xvc2VDb250ZW50c1dpdGgoKQoreworICAgIFFTdHJpbmcgaHRtbCA9ICI8Ym9keT4iCisg
ICAgICAgICI8ZGl2PiIKKyAgICAgICAgICAgICI8aT4iCisgICAgICAgICAgICAgICAgInllYWgi
CisgICAgICAgICAgICAiPC9pPiIKKyAgICAgICAgICAgICI8aT4iCisgICAgICAgICAgICAgICAg
ImhlbGxvIgorICAgICAgICAgICAgIjwvaT4iCisgICAgICAgICI8L2Rpdj4iCisgICAgICAgICI8
cD4iCisgICAgICAgICAgICAiPHNwYW4+Zm9vPC9zcGFuPiIKKyAgICAgICAgICAgICI8c3Bhbj5i
YXI8L3NwYW4+IgorICAgICAgICAiPC9wPiIKKyAgICAgICAgIjx1PjwvdT4iCisgICAgICAgICI8
Yj48L2I+IgorICAgICAgICAiPGVtPmhleTwvZW0+IgorICAgICI8L2JvZHk+IjsKKworICAgIG1f
bWFpbkZyYW1lLT5zZXRIdG1sKGh0bWwpOworICAgIFFXZWJFbGVtZW50IGJvZHkgPSBtX21haW5G
cmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZpcnN0KCJib2R5Iik7CisKKyAgICBib2R5LmZp
bmRGaXJzdCgicCIpLmVuY2xvc2VDb250ZW50c1dpdGgoYm9keS5maW5kRmlyc3QoImIiKSk7Cisg
ICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJwIGIgc3BhbiIpLmNvdW50KCksIDIpOworICAgIFFD
T01QQVJFKGJvZHkuZmluZEZpcnN0KCJwIGIgc3BhbiIpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmco
ImZvbyIpKTsKKworICAgIGJvZHkuZmluZEZpcnN0KCJ1IikuZW5jbG9zZUNvbnRlbnRzV2l0aCgi
PGk+PC9pPiIpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgidSBpIikuY291bnQoKSwgMSk7
CisgICAgUUNPTVBBUkUoYm9keS5maW5kRmlyc3QoInUgaSIpLnRvUGxhaW5UZXh0KCksIFFTdHJp
bmcoKSk7CisKKyAgICBib2R5LmZpbmRGaXJzdCgiZGl2IikuZW5jbG9zZUNvbnRlbnRzV2l0aCgi
PHNwYW4+PC9zcGFuPiIpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgiZGl2IHNwYW4gaSIp
LmNvdW50KCksIDIpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEZpcnN0KCJkaXYgc3BhbiBpIiku
dG9QbGFpblRleHQoKSwgUVN0cmluZygieWVhaCIpKTsKKworICAgIFFTdHJpbmcgc25pcHBldCA9
ICIiCisgICAgICAgICI8dGFibGU+IgorICAgICAgICAgICAgIjx0Ym9keT4iCisgICAgICAgICAg
ICAgICAgIjx0cj4iCisgICAgICAgICAgICAgICAgICAgICI8dGQ+PC90ZD4iCisgICAgICAgICAg
ICAgICAgICAgICI8dGQ+PC90ZD4iCisgICAgICAgICAgICAgICAgIjwvdHI+IgorICAgICAgICAg
ICAgICAgICI8dHI+IgorICAgICAgICAgICAgICAgICAgICAiPHRkPjwvdGQ+IgorICAgICAgICAg
ICAgICAgICAgICAiPHRkPjwvdGQ+IgorICAgICAgICAgICAgICAgICI8dHI+IgorICAgICAgICAg
ICAgIjwvdGJvZHk+IgorICAgICAgICAiPC90YWJsZT4iOworCisgICAgYm9keS5maW5kRmlyc3Qo
ImVtIikuZW5jbG9zZUNvbnRlbnRzV2l0aChzbmlwcGV0KTsKKyAgICBRQ09NUEFSRShib2R5LmZp
bmRGaXJzdCgiZW0gdGFibGUgdGJvZHkgdHIgdGQiKS50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJo
ZXkiKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50OjplbmNsb3NlV2l0aCgpCit7CisgICAg
UVN0cmluZyBodG1sID0gIjxib2R5PiIKKyAgICAgICAgIjxwPiIKKyAgICAgICAgICAgICJmb28i
CisgICAgICAgICI8L3A+IgorICAgICAgICAiPGRpdj4iCisgICAgICAgICAgICAieWVhaCIKKyAg
ICAgICAgIjwvZGl2PiIKKyAgICAgICAgIjxwPiIKKyAgICAgICAgICAgICI8c3Bhbj5iYXI8L3Nw
YW4+IgorICAgICAgICAiPC9wPiIKKyAgICAgICAgIjxlbT5oZXk8L2VtPiIKKyAgICAgICAgIjxo
MT5oZWxsbzwvaDE+IgorICAgICI8L2JvZHk+IjsKKworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1s
KGh0bWwpOworICAgIFFXZWJFbGVtZW50IGJvZHkgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnRFbGVt
ZW50KCkuZmluZEZpcnN0KCJib2R5Iik7CisKKyAgICBib2R5LmZpbmRGaXJzdCgicCIpLmVuY2xv
c2VXaXRoKCI8YnI+Iik7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJiciIpLmNvdW50KCks
IDApOworCisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJkaXYiKS5jb3VudCgpLCAxKTsKKyAg
ICBib2R5LmZpbmRGaXJzdCgiZGl2IikuZW5jbG9zZVdpdGgoYm9keS5maW5kRmlyc3QoInNwYW4i
KS5jbG9uZSgpKTsKKyAgICBRQ09NUEFSRShib2R5LmZpbmRBbGwoImRpdiIpLmNvdW50KCksIDEp
OworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgic3BhbiIpLmNvdW50KCksIDIpOworICAgIFFD
T01QQVJFKGJvZHkuZmluZEFsbCgicCIpLmNvdW50KCksIDIpOworCisgICAgYm9keS5maW5kRmly
c3QoImRpdiIpLmVuY2xvc2VXaXRoKCI8Y29kZT48L2NvZGU+Iik7CisgICAgUUNPTVBBUkUoYm9k
eS5maW5kQWxsKCJjb2RlIikuY291bnQoKSwgMSk7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxs
KCJjb2RlIGRpdiIpLmNvdW50KCksIDEpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEZpcnN0KCJj
b2RlIGRpdiIpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoInllYWgiKSk7CisKKyAgICBRU3RyaW5n
IHNuaXBwZXQgPSAiIgorICAgICAgICAiPHRhYmxlPiIKKyAgICAgICAgICAgICI8dGJvZHk+Igor
ICAgICAgICAgICAgICAgICI8dHI+IgorICAgICAgICAgICAgICAgICAgICAiPHRkPjwvdGQ+Igor
ICAgICAgICAgICAgICAgICAgICAiPHRkPjwvdGQ+IgorICAgICAgICAgICAgICAgICI8L3RyPiIK
KyAgICAgICAgICAgICAgICAiPHRyPiIKKyAgICAgICAgICAgICAgICAgICAgIjx0ZD48L3RkPiIK
KyAgICAgICAgICAgICAgICAgICAgIjx0ZD48L3RkPiIKKyAgICAgICAgICAgICAgICAiPHRyPiIK
KyAgICAgICAgICAgICI8L3Rib2R5PiIKKyAgICAgICAgIjwvdGFibGU+IjsKKworICAgIGJvZHku
ZmluZEZpcnN0KCJlbSIpLmVuY2xvc2VXaXRoKHNuaXBwZXQpOworICAgIFFDT01QQVJFKGJvZHku
ZmluZEZpcnN0KCJ0YWJsZSB0Ym9keSB0ciB0ZCBlbSIpLnRvUGxhaW5UZXh0KCksIFFTdHJpbmco
ImhleSIpKTsKKworICAgIC8vIEVuY2xvc2luZyB0aGUgY29udGVudHMgb2YgYW4gaW1nIHRhZyBp
cyBub3QgYWxsb3dlZCwgYnV0IGVuY2xvc2luZyB0aGUgaW1nIHRhZyBpdHNlbGYgaXMuCisgICAg
Ym9keS5maW5kRmlyc3QoInRkIikuYXBwZW5kSW5zaWRlKCI8aW1nIHNyYz1cInRlc3QucG5nXCI+
Iik7CisgICAgUUNPTVBBUkUoYm9keS5maW5kQWxsKCJpbWciKS5jb3VudCgpLCAxKTsKKworICAg
IFFXZWJFbGVtZW50IGltZyA9IGJvZHkuZmluZEZpcnN0KCJpbWciKTsKKyAgICBRVkVSSUZZKCFp
bWcuaXNOdWxsKCkpOworICAgIGltZy5lbmNsb3NlV2l0aCgiPHAgaWQ9XCJzdWNjZXNzXCI+PC9w
PiIpOworICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgicCNzdWNjZXNzIikuY291bnQoKSwgMSk7
CisKKyAgICBpbWcuZW5jbG9zZUNvbnRlbnRzV2l0aCgiPHAgaWQ9XCJmYWlsXCI+PC9wPiIpOwor
ICAgIFFDT01QQVJFKGJvZHkuZmluZEFsbCgicCNmYWlsIikuY291bnQoKSwgMCk7CisKK30KKwor
dm9pZCB0c3RfUVdlYkVsZW1lbnQ6Om51bGxTZWxlY3QoKQoreworICAgIG1fbWFpbkZyYW1lLT5z
ZXRIdG1sKCI8Ym9keT48cD5UZXN0Iik7CisKKyAgICBRV2ViRWxlbWVudENvbGxlY3Rpb24gY29s
bGVjdGlvbiA9IG1fbWFpbkZyYW1lLT5maW5kQWxsRWxlbWVudHMoImludmFsaWR7c3luKHRheDs7
JSMkZjIyM2U+PiIpOworICAgIFFWRVJJRlkoY29sbGVjdGlvbi5jb3VudCgpID09IDApOworfQor
Cit2b2lkIHRzdF9RV2ViRWxlbWVudDo6Zmlyc3RDaGlsZE5leHRTaWJsaW5nKCkKK3sKKyAgICBt
X21haW5GcmFtZS0+c2V0SHRtbCgiPGJvZHk+PCEtLWNvbW1lbnQtLT48cD5UZXN0PC9wPjwhLS1h
bm90aGVyIGNvbW1lbnQtLT48dGFibGU+Iik7CisKKyAgICBRV2ViRWxlbWVudCBib2R5ID0gbV9t
YWluRnJhbWUtPmZpbmRGaXJzdEVsZW1lbnQoImJvZHkiKTsKKyAgICBRVkVSSUZZKCFib2R5Lmlz
TnVsbCgpKTsKKyAgICBRV2ViRWxlbWVudCBwID0gYm9keS5maXJzdENoaWxkKCk7CisgICAgUVZF
UklGWSghcC5pc051bGwoKSk7CisgICAgUUNPTVBBUkUocC50YWdOYW1lKCksIFFTdHJpbmcoIlAi
KSk7CisgICAgUVdlYkVsZW1lbnQgdGFibGUgPSBwLm5leHRTaWJsaW5nKCk7CisgICAgUVZFUklG
WSghdGFibGUuaXNOdWxsKCkpOworICAgIFFDT01QQVJFKHRhYmxlLnRhZ05hbWUoKSwgUVN0cmlu
ZygiVEFCTEUiKSk7CisgICAgUVZFUklGWSh0YWJsZS5uZXh0U2libGluZygpLmlzTnVsbCgpKTsK
K30KKwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6Omxhc3RDaGlsZFByZXZpb3VzU2libGluZygpCit7
CisgICAgbV9tYWluRnJhbWUtPnNldEh0bWwoIjxib2R5PjwhLS1jb21tZW50LS0+PHA+VGVzdDwv
cD48IS0tYW5vdGhlciBjb21tZW50LS0+PHRhYmxlPiIpOworCisgICAgUVdlYkVsZW1lbnQgYm9k
eSA9IG1fbWFpbkZyYW1lLT5maW5kRmlyc3RFbGVtZW50KCJib2R5Iik7CisgICAgUVZFUklGWSgh
Ym9keS5pc051bGwoKSk7CisgICAgUVdlYkVsZW1lbnQgdGFibGUgPSBib2R5Lmxhc3RDaGlsZCgp
OworICAgIFFWRVJJRlkoIXRhYmxlLmlzTnVsbCgpKTsKKyAgICBRQ09NUEFSRSh0YWJsZS50YWdO
YW1lKCksIFFTdHJpbmcoIlRBQkxFIikpOworICAgIFFXZWJFbGVtZW50IHAgPSB0YWJsZS5wcmV2
aW91c1NpYmxpbmcoKTsKKyAgICBRVkVSSUZZKCFwLmlzTnVsbCgpKTsKKyAgICBRQ09NUEFSRShw
LnRhZ05hbWUoKSwgUVN0cmluZygiUCIpKTsKKyAgICBRVkVSSUZZKHAucHJldmlvdXNTaWJsaW5n
KCkuaXNOdWxsKCkpOworfQorCit2b2lkIHRzdF9RV2ViRWxlbWVudDo6aGFzU2V0Rm9jdXMoKQor
eworICAgIG1fbWFpbkZyYW1lLT5zZXRIdG1sKCI8aHRtbD48Ym9keT4iIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDEnLz4iIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPiJcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQyJy8+IiBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+Iik7CisKKyAgICBRV2ViRWxlbWVudENvbGxl
Y3Rpb24gaW5wdXRzID0gbV9tYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpLmZpbmRBbGwoImlu
cHV0Iik7CisgICAgUVdlYkVsZW1lbnQgaW5wdXQxID0gaW5wdXRzLmF0KDApOworICAgIGlucHV0
MS5zZXRGb2N1cygpOworICAgIFFWRVJJRlkoaW5wdXQxLmhhc0ZvY3VzKCkpOworCisgICAgUVdl
YkVsZW1lbnQgaW5wdXQyID0gaW5wdXRzLmF0KDEpOworICAgIGlucHV0Mi5zZXRGb2N1cygpOwor
ICAgIFFWRVJJRlkoIWlucHV0MS5oYXNGb2N1cygpKTsKKyAgICBRVkVSSUZZKGlucHV0Mi5oYXNG
b2N1cygpKTsKK30KKwordm9pZCB0c3RfUVdlYkVsZW1lbnQ6OnJlbmRlcigpCit7CisgICAgUVN0
cmluZyBodG1sKCAiPGh0bWw+IgorICAgICAgICAgICAgICAgICAgICAiPGhlYWQ+PHN0eWxlPiIK
KyAgICAgICAgICAgICAgICAgICAgICAgImJvZHksIGlmcmFtZSB7IG1hcmdpbjogMHB4OyBib3Jk
ZXI6IG5vbmU7IGJhY2tncm91bmQ6IHdoaXRlOyB9IgorICAgICAgICAgICAgICAgICAgICAiPC9z
dHlsZT48L2hlYWQ+IgorICAgICAgICAgICAgICAgICAgICAiPGJvZHk+PHRhYmxlIHdpZHRoPScz
MDBweCcgaGVpZ2h0PSczMDBweCcgYm9yZGVyPScxJz4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiPHRyPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHRkPnRlc3QiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvdGQ+IgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI8dGQ+PGltZyBzcmM9J3FyYzovLy9pbWFnZS5wbmcnPiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiPC90ZD4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiPC90cj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICI8L3RhYmxlPiIKKyAgICAgICAg
ICAgICAgICAgICAgIjwvYm9keT4iCisgICAgICAgICAgICAgICAgICI8L2h0bWw+IgorICAgICAg
ICAgICAgICAgICk7CisKKyAgICBRV2ViUGFnZSBwYWdlOworICAgIFFTaWduYWxTcHkgbG9hZFNw
eSgmcGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIHBhZ2UubWFpbkZyYW1l
KCktPnNldEh0bWwoaHRtbCk7CisKKyAgICB3YWl0Rm9yU2lnbmFsKCZwYWdlLCBTSUdOQUwobG9h
ZEZpbmlzaGVkKGJvb2wpKSk7CisgICAgUUNPTVBBUkUobG9hZFNweS5jb3VudCgpLCAxKTsKKwor
ICAgIFFTaXplIHNpemUgPSBwYWdlLm1haW5GcmFtZSgpLT5jb250ZW50c1NpemUoKTsKKyAgICBw
YWdlLnNldFZpZXdwb3J0U2l6ZShzaXplKTsKKworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbiBp
bWdzID0gcGFnZS5tYWluRnJhbWUoKS0+ZmluZEFsbEVsZW1lbnRzKCJpbWciKTsKKyAgICBRQ09N
UEFSRShpbWdzLmNvdW50KCksIDEpOworCisgICAgUUltYWdlIHJlc291cmNlKCI6L2ltYWdlLnBu
ZyIpOworICAgIFFSZWN0IGltYWdlUmVjdCgwLCAwLCByZXNvdXJjZS53aWR0aCgpLCByZXNvdXJj
ZS5oZWlnaHQoKSk7CisKKyAgICBRSW1hZ2UgdGVzdEltYWdlKHJlc291cmNlLndpZHRoKCksIHJl
c291cmNlLmhlaWdodCgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFQYWludGVyIHBh
aW50ZXIwKCZ0ZXN0SW1hZ2UpOworICAgIHBhaW50ZXIwLmZpbGxSZWN0KGltYWdlUmVjdCwgUXQ6
OndoaXRlKTsKKyAgICAvLyByZW5kZXIoKSB1c2VzIHBpeG1hcHMgaW50ZXJuYWxseSwgYW5kIHBp
eG1hcHMgbWlnaHQgaGF2ZSBiaXQgZGVwdGhzCisgICAgLy8gb3RoZXIgdGhhbiAzMiwgZ2l2aW5n
IGRpZmZlcmVudCBwaXhlbCB2YWx1ZXMgZHVlIHRvIHJvdW5kaW5nLgorICAgIFFQaXhtYXAgcGl4
ID0gUVBpeG1hcDo6ZnJvbUltYWdlKHJlc291cmNlKTsKKyAgICBwYWludGVyMC5kcmF3UGl4bWFw
KDAsIDAsIHBpeCk7CisgICAgcGFpbnRlcjAuZW5kKCk7CisKKyAgICBRSW1hZ2UgaW1hZ2UxKHJl
c291cmNlLndpZHRoKCksIHJlc291cmNlLmhlaWdodCgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIp
OworICAgIFFQYWludGVyIHBhaW50ZXIxKCZpbWFnZTEpOworICAgIHBhaW50ZXIxLmZpbGxSZWN0
KGltYWdlUmVjdCwgUXQ6OndoaXRlKTsKKyAgICBpbWdzWzBdLnJlbmRlcigmcGFpbnRlcjEpOwor
ICAgIHBhaW50ZXIxLmVuZCgpOworCisgICAgUUVYUEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MjQzIiwgQ29udGludWUpOworICAgIFFWRVJJ
RlkoaW1hZ2UxID09IHRlc3RJbWFnZSk7CisKKyAgICAvLyByZW5kZXIgaW1hZ2UgMm5kIHRpbWUg
dG8gbWFrZSBzdXJlIHRoYXQgY2FjaGVkIHJlbmRlcmluZyB3b3JrcyBmaW5lCisgICAgUUltYWdl
IGltYWdlMihyZXNvdXJjZS53aWR0aCgpLCByZXNvdXJjZS5oZWlnaHQoKSwgUUltYWdlOjpGb3Jt
YXRfQVJHQjMyKTsKKyAgICBRUGFpbnRlciBwYWludGVyMigmaW1hZ2UyKTsKKyAgICBwYWludGVy
Mi5maWxsUmVjdChpbWFnZVJlY3QsIFF0Ojp3aGl0ZSk7CisgICAgaW1nc1swXS5yZW5kZXIoJnBh
aW50ZXIyKTsKKyAgICBwYWludGVyMi5lbmQoKTsKKworICAgIFFFWFBFQ1RfRkFJTCgiIiwgImh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTI0MyIsIENvbnRpbnVlKTsK
KyAgICBRVkVSSUZZKGltYWdlMiA9PSB0ZXN0SW1hZ2UpOworCisgICAgLy8gY29tcGFyZSB0YWJs
ZSByZW5kZXJlZCB0aHJvdWdoIFFXZWJFbGVtZW50OjpyZW5kZXIgdG8gd2hvbGUgcGFnZSB0YWJs
ZSByZW5kZXJpbmcKKyAgICBRUmVjdCB0YWJsZVJlY3QoMCwgMCwgMzAwLCAzMDApOworICAgIFFX
ZWJFbGVtZW50Q29sbGVjdGlvbiB0YWJsZXMgPSBwYWdlLm1haW5GcmFtZSgpLT5maW5kQWxsRWxl
bWVudHMoInRhYmxlIik7CisgICAgUUNPTVBBUkUodGFibGVzLmNvdW50KCksIDEpOworCisgICAg
UUltYWdlIGltYWdlMygzMDAsIDMwMCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBRUGFp
bnRlciBwYWludGVyMygmaW1hZ2UzKTsKKyAgICBwYWludGVyMy5maWxsUmVjdCh0YWJsZVJlY3Qs
IFF0Ojp3aGl0ZSk7CisgICAgdGFibGVzWzBdLnJlbmRlcigmcGFpbnRlcjMpOworICAgIHBhaW50
ZXIzLmVuZCgpOworCisgICAgUUltYWdlIGltYWdlNCgzMDAsIDMwMCwgUUltYWdlOjpGb3JtYXRf
QVJHQjMyKTsKKyAgICBRUGFpbnRlciBwYWludGVyNCgmaW1hZ2U0KTsKKyAgICBwYWdlLm1haW5G
cmFtZSgpLT5yZW5kZXIoJnBhaW50ZXI0LCB0YWJsZVJlY3QpOworICAgIHBhaW50ZXI0LmVuZCgp
OworCisgICAgUVZFUklGWShpbWFnZTMgPT0gaW1hZ2U0KTsKKworICAgIC8vIENodW5rZWQgcmVu
ZGVyIHRlc3QgcmV1c2VzIHBhZ2UgcmVuZGVyZWQgaW4gaW1hZ2U0IGluIHByZXZpb3VzIHRlc3QK
KyAgICBjb25zdCBpbnQgY2h1bmtIZWlnaHQgPSB0YWJsZVJlY3QuaGVpZ2h0KCk7CisgICAgY29u
c3QgaW50IGNodW5rV2lkdGggPSB0YWJsZVJlY3Qud2lkdGgoKSAvIDM7CisgICAgUUltYWdlIGNo
dW5rKGNodW5rV2lkdGgsIGNodW5rSGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAg
IFFSZWN0IGNodW5rUmVjdCgwLCAwLCBjaHVua1dpZHRoLCBjaHVua0hlaWdodCk7CisgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB0YWJsZVJlY3Qud2lkdGgoKTsgeCArPSBjaHVua1dpZHRoKSB7Cisg
ICAgICAgIFFQYWludGVyIHBhaW50ZXIoJmNodW5rKTsKKyAgICAgICAgcGFpbnRlci5maWxsUmVj
dChjaHVua1JlY3QsIFF0Ojp3aGl0ZSk7CisgICAgICAgIFFSZWN0IGNodW5rUGFpbnRSZWN0KHgs
IDAsIGNodW5rV2lkdGgsIGNodW5rSGVpZ2h0KTsKKyAgICAgICAgdGFibGVzWzBdLnJlbmRlcigm
cGFpbnRlciwgY2h1bmtQYWludFJlY3QpOworICAgICAgICBwYWludGVyLmVuZCgpOworCisgICAg
ICAgIFFWRVJJRlkoY2h1bmsgPT0gaW1hZ2U0LmNvcHkoY2h1bmtQYWludFJlY3QpKTsKKyAgICB9
Cit9CisKK3ZvaWQgdHN0X1FXZWJFbGVtZW50OjphZGRFbGVtZW50VG9IZWFkKCkKK3sKKyAgICBt
X21haW5GcmFtZS0+c2V0SHRtbCgiPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0
bWw+Iik7CisgICAgUVdlYkVsZW1lbnQgaGVhZCA9IG1fbWFpbkZyYW1lLT5maW5kRmlyc3RFbGVt
ZW50KCJoZWFkIik7CisgICAgUVZFUklGWSghaGVhZC5pc051bGwoKSk7CisgICAgUVN0cmluZyBh
cHBlbmQgPSAiPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+dmFyIHQgPSAwOzwvc2Ny
aXB0PiI7CisgICAgaGVhZC5hcHBlbmRJbnNpZGUoYXBwZW5kKTsKKyAgICBRRVhQRUNUX0ZBSUwo
IiIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMjM0IiwgQ29u
dGludWUpOworICAgIFFDT01QQVJFKGhlYWQudG9Jbm5lclhtbCgpLCBhcHBlbmQpOworfQorCitR
VEVTVF9NQUlOKHRzdF9RV2ViRWxlbWVudCkKKyNpbmNsdWRlICJ0c3RfcXdlYmVsZW1lbnQubW9j
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdl
YmVsZW1lbnQucXJjIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVudC90c3RfcXdl
YmVsZW1lbnQucXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczODRjNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3Rz
dF9xd2ViZWxlbWVudC5xcmMKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgUkNDPjxSQ0MgdmVy
c2lvbj0iMS4wIj4KKzxxcmVzb3VyY2UgcHJlZml4PSIvIj4KKzxmaWxlIGFsaWFzPSJzdHlsZS5j
c3MiPnJlc291cmNlcy9zdHlsZS5jc3M8L2ZpbGU+Cis8ZmlsZSBhbGlhcz0ic3R5bGUyLmNzcyI+
cmVzb3VyY2VzL3N0eWxlMi5jc3M8L2ZpbGU+Cis8ZmlsZSBhbGlhcz0iaW1hZ2UucG5nIj5yZXNv
dXJjZXMvaW1hZ2UucG5nPC9maWxlPgorPC9xcmVzb3VyY2U+Cis8L1JDQz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3F3ZWJmcmFtZS5wcm8gYi9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucHJvCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmY0MzRjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9xd2ViZnJhbWUucHJvCkBAIC0wLDAgKzEsMyBAQAoraW5j
bHVkZSguLi90ZXN0cy5wcmkpCitleGlzdHMoJCR7VEFSR0VUfS5xcmMpOlJFU09VUkNFUyArPSAk
JHtUQVJHRVR9LnFyYworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJm
cmFtZS9yZXNvdXJjZXMvaW1hZ2UucG5nIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJh
bWUvcmVzb3VyY2VzL2ltYWdlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44ZDcwMzY0CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC90
ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL2ltYWdlLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291cmNlcy9zdHlsZS5jc3MgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvc3R5bGUuY3NzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNWI3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvc3R5bGUuY3NzCkBAIC0w
LDAgKzEgQEAKKyNpZFAge2NvbG9yOiByZWQgIWltcG9ydGFudH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291cmNlcy90ZXN0MS5odG1sIGIvU291cmNl
L1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL3Rlc3QxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMyM2Y5NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291cmNlcy90ZXN0MS5odG1sCkBAIC0w
LDAgKzEgQEAKKzxodG1sPjxib2R5PjxwPlNvbWUgdGV4dCAxPC9wPjwvYm9keT48L2h0bWw+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVz
dDIuaHRtbCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3Jlc291cmNlcy90ZXN0
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYWMxZjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMv
dGVzdDIuaHRtbApAQCAtMCwwICsxIEBACis8aHRtbD48Ym9keT4gPHA+U29tZSB0ZXh0IDI8L3A+
PC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZy
YW1lL3Jlc291cmNlcy90ZXN0aWZyYW1lLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdGlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmVlMGY2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdGlmcmFtZS5odG1sCkBAIC0wLDAgKzEsNTMg
QEAKKzxodG1sPg0KKzxoZWFkPg0KKzx0aXRsZT48L3RpdGxlPg0KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+DQorPCEtLQ0KKyNoZWFkZXIgew0KKyAgYmFja2dyb3VuZDogIzBmMDsNCisgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsNCisgIHRvcDogMHB4Ow0KKyAgbGVmdDogMHB4Ow0KKyAgd2lkdGg6IDgw
MHB4Ow0KKyAgaGVpZ2h0OiAxMDBweDsNCit9DQorI2NvbnRlbnQxIHsNCisgIGJhY2tncm91bmQ6
ICNmZjA7DQorICBwb3NpdGlvbjogYWJzb2x1dGU7DQorICB0b3A6IDEwMXB4Ow0KKyAgbGVmdDog
MHB4Ow0KKyAgd2lkdGg6IDQwMHB4Ow0KKyAgaGVpZ2h0OiA0MDBweDsNCisgIG92ZXJmbG93OiBz
Y3JvbGw7DQorfQ0KKyNjb250ZW50MiB7DQorICBiYWNrZ3JvdW5kOiAjZmY3Ow0KKyAgcG9zaXRp
b246IGFic29sdXRlOw0KKyAgdG9wOiAxMDFweDsNCisgIGxlZnQ6IDQwMXB4Ow0KKyAgd2lkdGg6
IDQwMHB4Ow0KKyAgaGVpZ2h0OiA0MDBweDsNCit9DQorI2Zvb3RlciB7DQorICBiYWNrZ3JvdW5k
OiAjMGYwOw0KKyAgcG9zaXRpb246IGFic29sdXRlOw0KKyAgdG9wOiA1MDJweDsNCisgIGxlZnQ6
IDBweDsNCisgIHdpZHRoOiA4MDBweDsNCisgIGhlaWdodDogMjAwcHg7DQorfQ0KKy0tPg0KKzwv
c3R5bGU+DQorPC9oZWFkPg0KKzxib2R5Pg0KKzxkaXYgaWQ9ImhlYWRlciI+PC9kaXY+DQorPGRp
diBpZD0iY29udGVudDEiPllvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB3aGVuIHlv
dSB3YW50IHRvIGhhdmUgYmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91dC4gVHJ5IHRvIGNoYW5n
ZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRlbiwgYXV0bywgb3IgaW5o
ZXJpdCBhbmQgc2VlIHdoYXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgdmlzaWJsZS4N
CitZb3UgY2FuIHVzZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgd2hlbiB5b3Ugd2FudCB0byBoYXZl
IGJldHRlciBjb250cm9sIG9mIHRoZSBsYXlvdXQuIFRyeSB0byBjaGFuZ2UgdGhlIG92ZXJmbG93
IHByb3BlcnR5IHRvOiB2aXNpYmxlLCBoaWRkZW4sIGF1dG8sIG9yIGluaGVyaXQgYW5kIHNlZSB3
aGF0IGhhcHBlbnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHZpc2libGUuDQorWW91IGNhbiB1c2Ug
dGhlIG92ZXJmbG93IHByb3BlcnR5IHdoZW4geW91IHdhbnQgdG8gaGF2ZSBiZXR0ZXIgY29udHJv
bCBvZiB0aGUgbGF5b3V0LiBUcnkgdG8gY2hhbmdlIHRoZSBvdmVyZmxvdyBwcm9wZXJ0eSB0bzog
dmlzaWJsZSwgaGlkZGVuLCBhdXRvLCBvciBpbmhlcml0IGFuZCBzZWUgd2hhdCBoYXBwZW5zLiBU
aGUgZGVmYXVsdCB2YWx1ZSBpcyB2aXNpYmxlLg0KK1lvdSBjYW4gdXNlIHRoZSBvdmVyZmxvdyBw
cm9wZXJ0eSB3aGVuIHlvdSB3YW50IHRvIGhhdmUgYmV0dGVyIGNvbnRyb2wgb2YgdGhlIGxheW91
dC4gVHJ5IHRvIGNoYW5nZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgdG86IHZpc2libGUsIGhpZGRl
biwgYXV0bywgb3IgaW5oZXJpdCBhbmQgc2VlIHdoYXQgaGFwcGVucy4gVGhlIGRlZmF1bHQgdmFs
dWUgaXMgdmlzaWJsZS4NCitZb3UgY2FuIHVzZSB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgd2hlbiB5
b3Ugd2FudCB0byBoYXZlIGJldHRlciBjb250cm9sIG9mIHRoZSBsYXlvdXQuIFRyeSB0byBjaGFu
Z2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHRvOiB2aXNpYmxlLCBoaWRkZW4sIGF1dG8sIG9yIGlu
aGVyaXQgYW5kIHNlZSB3aGF0IGhhcHBlbnMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHZpc2libGUu
DQorWW91IGNhbiB1c2UgdGhlIG92ZXJmbG93IHByb3BlcnR5IHdoZW4geW91IHdhbnQgdG8gaGF2
ZSBiZXR0ZXIgY29udHJvbCBvZiB0aGUgbGF5b3V0LiBUcnkgdG8gY2hhbmdlIHRoZSBvdmVyZmxv
dyBwcm9wZXJ0eSB0bzogdmlzaWJsZSwgaGlkZGVuLCBhdXRvLCBvciBpbmhlcml0IGFuZCBzZWUg
d2hhdCBoYXBwZW5zLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB2aXNpYmxlLjwvZGl2Pg0KKzxpZnJh
bWUgaWQ9ImNvbnRlbnQyIiBuYW1lPSJjb250cm9sIiBzcmM9InRlc3RpZnJhbWUyLmh0bWwiPiA8
L2lmcmFtZT4NCis8ZGl2IGlkPSJmb290ZXIiPjwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90
ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL3Rlc3RpZnJhbWUyLmh0bWwgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJmcmFtZS9yZXNvdXJjZXMvdGVzdGlmcmFtZTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODNlOTRlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvcmVzb3VyY2VzL3Rlc3RpZnJhbWUyLmh0bWwK
QEAgLTAsMCArMSwyMCBAQAorPGh0bWw+DQorPGhlYWQ+DQorPHRpdGxlPjwvdGl0bGU+DQorPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4NCis8IS0tDQorI2NvbnRlbnQgew0KKyAgYmFja2dyb3VuZDog
I2ZmZjsNCisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCisgIHRvcDogMHB4Ow0KKyAgbGVmdDogMHB4
Ow0KKyAgd2lkdGg6IDgwMHB4Ow0KKyAgaGVpZ2h0OiA4MDBweDsNCit9DQorLS0+DQorPC9zdHls
ZT4NCis8L2hlYWQ+DQorPGJvZHk+DQorPGRpdiBpZD0iY29udGVudCI+IDwvZGl2Pg0KKzwvYm9k
eT4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODUyMTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9xdC90ZXN0cy9xd2ViZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHAKQEAgLTAsMCArMSwx
NTY5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCwyMDA5IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKworI2luY2x1ZGUgPFF0VGVzdC9RdFRl
c3Q+CisKKyNpbmNsdWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJlbGVtZW50Lmg+Cisj
aW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KKyNpbmNsdWRlIDxx
d2ViaGlzdG9yeS5oPgorI2luY2x1ZGUgPFFBYnN0cmFjdEl0ZW1WaWV3PgorI2luY2x1ZGUgPFFB
cHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRQ29tYm9Cb3g+CisjaW5jbHVkZSA8UVBhaW50RW5naW5l
PgorI2luY2x1ZGUgPFFQaWN0dXJlPgorI2luY2x1ZGUgPFFSZWdFeHA+CisjaW5jbHVkZSA8UU5l
dHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8UVRleHRD
b2RlYz4KKyNpZm5kZWYgUVRfTk9fT1BFTlNTTAorI2luY2x1ZGUgPHFzc2xlcnJvci5oPgorI2Vu
ZGlmCisjaW5jbHVkZSAiLi4vdXRpbC5oIgorCitjbGFzcyB0c3RfUVdlYkZyYW1lIDogcHVibGlj
IFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgYm9vbCBldmVudEZpbHRl
cihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KTsKKworcHVibGljIFFfU0xPVFM6Cisg
ICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBjbGVhbnVwKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoK
KyAgICB2b2lkIGhvcml6b250YWxTY3JvbGxBZnRlckJhY2soKTsKKyAgICB2b2lkIHN5bW1ldHJp
Y1VybCgpOworICAgIHZvaWQgcHJvZ3Jlc3NTaWduYWwoKTsKKyAgICB2b2lkIHVybENoYW5nZSgp
OworICAgIHZvaWQgcmVxdWVzdGVkVXJsKCk7CisgICAgdm9pZCByZXF1ZXN0ZWRVcmxBZnRlclNl
dEFuZExvYWRGYWlsdXJlcygpOworICAgIHZvaWQgamF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFy
ZWRfZGF0YSgpOworICAgIHZvaWQgamF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKTsKKyAg
ICB2b2lkIGphdmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkT25FdmFsdWF0ZSgpOworICAgIHZv
aWQgc2V0SHRtbCgpOworICAgIHZvaWQgc2V0SHRtbFdpdGhJbWFnZVJlc291cmNlKCk7CisgICAg
dm9pZCBzZXRIdG1sV2l0aFN0eWxlc2hlZXRSZXNvdXJjZSgpOworICAgIHZvaWQgc2V0SHRtbFdp
dGhCYXNlVVJMKCk7CisgICAgdm9pZCBzZXRIdG1sV2l0aEpTQWxlcnQoKTsKKyAgICB2b2lkIGlw
djZIb3N0RW5jb2RpbmcoKTsKKyAgICB2b2lkIG1ldGFEYXRhKCk7CisjaWYgIWRlZmluZWQoUVRf
Tk9fQ09NQk9CT1gpCisgICAgdm9pZCBwb3B1cEZvY3VzKCk7CisjZW5kaWYKKyAgICB2b2lkIGlu
cHV0RmllbGRGb2N1cygpOworICAgIHZvaWQgaGl0VGVzdENvbnRlbnQoKTsKKyAgICB2b2lkIGJh
c2VVcmxfZGF0YSgpOworICAgIHZvaWQgYmFzZVVybCgpOworICAgIHZvaWQgaGFzU2V0Rm9jdXMo
KTsKKyAgICB2b2lkIHJlbmRlckdlb21ldHJ5KCk7CisgICAgdm9pZCByZW5kZXJIaW50cygpOwor
ICAgIHZvaWQgc2Nyb2xsUG9zaXRpb24oKTsKKyAgICB2b2lkIHNjcm9sbFRvQW5jaG9yKCk7Cisg
ICAgdm9pZCBzY3JvbGxiYXJzT2ZmKCk7CisgICAgdm9pZCBldmFsdWF0ZVdpbGxDYXVzZVJlcGFp
bnQoKTsKKyAgICB2b2lkIHNldENvbnRlbnRfZGF0YSgpOworICAgIHZvaWQgc2V0Q29udGVudCgp
OworICAgIHZvaWQgc2V0Q2FjaGVMb2FkQ29udHJvbEF0dHJpYnV0ZSgpOworICAgIHZvaWQgc2V0
VXJsV2l0aFBlbmRpbmdMb2FkcygpOworICAgIHZvaWQgc2V0VXJsV2l0aEZyYWdtZW50X2RhdGEo
KTsKKyAgICB2b2lkIHNldFVybFdpdGhGcmFnbWVudCgpOworICAgIHZvaWQgc2V0VXJsVG9FbXB0
eSgpOworICAgIHZvaWQgc2V0VXJsVG9JbnZhbGlkKCk7CisgICAgdm9pZCBzZXRVcmxIaXN0b3J5
KCk7CisgICAgdm9pZCBzZXRVcmxVc2luZ1N0YXRlT2JqZWN0KCk7CisgICAgdm9pZCBzZXRVcmxT
YW1lVXJsKCk7CisgICAgdm9pZCBzZXRVcmxUaGVuTG9hZHNfZGF0YSgpOworICAgIHZvaWQgc2V0
VXJsVGhlbkxvYWRzKCk7CisgICAgdm9pZCBsb2FkRmluaXNoZWRBZnRlck5vdEZvdW5kRXJyb3Io
KTsKKyAgICB2b2lkIGxvYWRJblNpZ25hbEhhbmRsZXJzX2RhdGEoKTsKKyAgICB2b2lkIGxvYWRJ
blNpZ25hbEhhbmRsZXJzKCk7CisKK3ByaXZhdGU6CisgICAgUVdlYlZpZXcqIG1fdmlldzsKKyAg
ICBRV2ViUGFnZSogbV9wYWdlOworICAgIFFXZWJWaWV3KiBtX2lucHV0RmllbGRzVGVzdFZpZXc7
CisgICAgaW50IG1faW5wdXRGaWVsZFRlc3RQYWludENvdW50OworfTsKKworYm9vbCB0c3RfUVdl
YkZyYW1lOjpldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQorewor
ICAgIC8vIHVzZWQgb24gdGhlIGlucHV0RmllbGRGb2N1cyB0ZXN0CisgICAgaWYgKHdhdGNoZWQg
PT0gbV9pbnB1dEZpZWxkc1Rlc3RWaWV3KSB7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09
IFFFdmVudDo6UGFpbnQpCisgICAgICAgICAgICBtX2lucHV0RmllbGRUZXN0UGFpbnRDb3VudCsr
OworICAgIH0KKyAgICByZXR1cm4gUU9iamVjdDo6ZXZlbnRGaWx0ZXIod2F0Y2hlZCwgZXZlbnQp
OworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OmluaXQoKQoreworICAgIG1fdmlldyA9IG5ldyBR
V2ViVmlldygpOworICAgIG1fcGFnZSA9IG1fdmlldy0+cGFnZSgpOworfQorCit2b2lkIHRzdF9R
V2ViRnJhbWU6OmNsZWFudXAoKQoreworICAgIGRlbGV0ZSBtX3ZpZXc7Cit9CisKK3ZvaWQgdHN0
X1FXZWJGcmFtZTo6c3ltbWV0cmljVXJsKCkKK3sKKyAgICBRVkVSSUZZKG1fdmlldy0+dXJsKCku
aXNFbXB0eSgpKTsKKworICAgIFFDT01QQVJFKG1fdmlldy0+aGlzdG9yeSgpLT5jb3VudCgpLCAw
KTsKKworICAgIFFVcmwgZGF0YVVybCgiZGF0YTp0ZXh0L2h0bWwsPGgxPlRlc3QiKTsKKworICAg
IG1fdmlldy0+c2V0VXJsKGRhdGFVcmwpOworICAgIFFDT01QQVJFKG1fdmlldy0+dXJsKCksIGRh
dGFVcmwpOworICAgIFFDT01QQVJFKG1fdmlldy0+aGlzdG9yeSgpLT5jb3VudCgpLCAwKTsKKwor
ICAgIC8vIGxvYWRpbmcgaXMgX25vdF8gaW1tZWRpYXRlLCBzbyB0aGUgdGV4dCBpc24ndCBzZXQg
anVzdCB5ZXQuCisgICAgUVZFUklGWShtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnRvUGxh
aW5UZXh0KCkuaXNFbXB0eSgpKTsKKworICAgIDo6d2FpdEZvclNpZ25hbChtX3ZpZXcsIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKworICAgIFFDT01QQVJFKG1fdmlldy0+aGlzdG9yeSgp
LT5jb3VudCgpLCAxKTsKKyAgICBRQ09NUEFSRShtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoIlRlc3QiKSk7CisKKyAgICBRVXJsIGRhdGFVcmwyKCJk
YXRhOnRleHQvaHRtbCw8aDE+VGVzdDIiKTsKKyAgICBRVXJsIGRhdGFVcmwzKCJkYXRhOnRleHQv
aHRtbCw8aDE+VGVzdDMiKTsKKworICAgIG1fdmlldy0+c2V0VXJsKGRhdGFVcmwyKTsKKyAgICBt
X3ZpZXctPnNldFVybChkYXRhVXJsMyk7CisKKyAgICBRQ09NUEFSRShtX3ZpZXctPnVybCgpLCBk
YXRhVXJsMyk7CisKKyAgICA6OndhaXRGb3JTaWduYWwobV92aWV3LCBTSUdOQUwobG9hZEZpbmlz
aGVkKGJvb2wpKSk7CisKKyAgICBRQ09NUEFSRShtX3ZpZXctPmhpc3RvcnkoKS0+Y291bnQoKSwg
Mik7CisKKyAgICBRQ09NUEFSRShtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnRvUGxhaW5U
ZXh0KCksIFFTdHJpbmcoIlRlc3QzIikpOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OnByb2dy
ZXNzU2lnbmFsKCkKK3sKKyAgICBRU2lnbmFsU3B5IHByb2dyZXNzU3B5KG1fdmlldywgU0lHTkFM
KGxvYWRQcm9ncmVzcyhpbnQpKSk7CisKKyAgICBRVXJsIGRhdGFVcmwoImRhdGE6dGV4dC9odG1s
LDxoMT5UZXN0Iik7CisgICAgbV92aWV3LT5zZXRVcmwoZGF0YVVybCk7CisKKyAgICA6OndhaXRG
b3JTaWduYWwobV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisKKyAgICBRVkVS
SUZZKHByb2dyZXNzU3B5LnNpemUoKSA+PSAyKTsKKworICAgIC8vIFdlYktpdCBkZWZpbmVzIGlu
aXRpYWxQcm9ncmVzc1ZhbHVlIGFzIDEwJSwgbm90IDAlCisgICAgUUNPTVBBUkUocHJvZ3Jlc3NT
cHkuZmlyc3QoKS5maXJzdCgpLnRvSW50KCksIDEwKTsKKworICAgIC8vIEJ1dCB3ZSBhbHdheXMg
ZW5kIGF0IDEwMCUKKyAgICBRQ09NUEFSRShwcm9ncmVzc1NweS5sYXN0KCkuZmlyc3QoKS50b0lu
dCgpLCAxMDApOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OnVybENoYW5nZSgpCit7CisgICAg
UVNpZ25hbFNweSB1cmxTcHkobV9wYWdlLT5tYWluRnJhbWUoKSwgU0lHTkFMKHVybENoYW5nZWQo
UVVybCkpKTsKKworICAgIFFVcmwgZGF0YVVybCgiZGF0YTp0ZXh0L2h0bWwsPGgxPlRlc3QiKTsK
KyAgICBtX3ZpZXctPnNldFVybChkYXRhVXJsKTsKKworICAgIDo6d2FpdEZvclNpZ25hbChtX3Bh
Z2UtPm1haW5GcmFtZSgpLCBTSUdOQUwodXJsQ2hhbmdlZChRVXJsKSkpOworCisgICAgUUNPTVBB
UkUodXJsU3B5LnNpemUoKSwgMSk7CisKKyAgICBRVXJsIGRhdGFVcmwyKCJkYXRhOnRleHQvaHRt
bCw8aHRtbD48aGVhZD48dGl0bGU+dGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+VGVzdDwv
Ym9keT48L2h0bWw+Iik7CisgICAgbV92aWV3LT5zZXRVcmwoZGF0YVVybDIpOworCisgICAgOjp3
YWl0Rm9yU2lnbmFsKG1fcGFnZS0+bWFpbkZyYW1lKCksIFNJR05BTCh1cmxDaGFuZ2VkKFFVcmwp
KSk7CisKKyAgICBRQ09NUEFSRSh1cmxTcHkuc2l6ZSgpLCAyKTsKK30KKworY2xhc3MgRmFrZVJl
cGx5IDogcHVibGljIFFOZXR3b3JrUmVwbHkgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgUVVybCB1cmxGb3I0MDRFcnJvcldpdGhvdXRDb250ZW50czsKKworICAg
IEZha2VSZXBseShjb25zdCBRTmV0d29ya1JlcXVlc3QmIHJlcXVlc3QsIFFPYmplY3QqIHBhcmVu
dCA9IDApCisgICAgICAgIDogUU5ldHdvcmtSZXBseShwYXJlbnQpCisgICAgeworICAgICAgICBz
ZXRPcGVyYXRpb24oUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb24pOworICAgICAg
ICBzZXRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBzZXRVcmwocmVxdWVzdC51cmwoKSk7Cisg
ICAgICAgIGlmIChyZXF1ZXN0LnVybCgpID09IFFVcmwoInFyYzovdGVzdDEuaHRtbCIpKSB7Cisg
ICAgICAgICAgICBzZXRIZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpMb2NhdGlvbkhlYWRlciwgUVN0
cmluZygicXJjOi90ZXN0Mi5odG1sIikpOworICAgICAgICAgICAgc2V0QXR0cmlidXRlKFFOZXR3
b3JrUmVxdWVzdDo6UmVkaXJlY3Rpb25UYXJnZXRBdHRyaWJ1dGUsIFFVcmwoInFyYzovdGVzdDIu
aHRtbCIpKTsKKyAgICAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCgwLCB0aGlzLCBTTE9UKGNv
bnRpbnVlUmVkaXJlY3QoKSkpOworICAgICAgICB9CisjaWZuZGVmIFFUX05PX09QRU5TU0wKKyAg
ICAgICAgZWxzZSBpZiAocmVxdWVzdC51cmwoKSA9PSBRVXJsKCJxcmM6L2Zha2Utc3NsLWVycm9y
Lmh0bWwiKSkgeworICAgICAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtSZXBseTo6U3NsSGFuZHNo
YWtlRmFpbGVkRXJyb3IsIHRyKCJGYWtlIGVycm9yISIpKTsKKyAgICAgICAgICAgIFFUaW1lcjo6
c2luZ2xlU2hvdCgwLCB0aGlzLCBTTE9UKGNvbnRpbnVlRXJyb3IoKSkpOworICAgICAgICB9Cisj
ZW5kaWYKKyAgICAgICAgZWxzZSBpZiAocmVxdWVzdC51cmwoKS5ob3N0KCkgPT0gUUxhdGluMVN0
cmluZygiYWJjZGVmLmFiY2RlZiIpKSB7CisgICAgICAgICAgICBzZXRFcnJvcihRTmV0d29ya1Jl
cGx5OjpIb3N0Tm90Rm91bmRFcnJvciwgdHIoIkludmFsaWQgVVJMIikpOworICAgICAgICAgICAg
UVRpbWVyOjpzaW5nbGVTaG90KDAsIHRoaXMsIFNMT1QoY29udGludWVFcnJvcigpKSk7CisgICAg
ICAgIH0gZWxzZSBpZiAocmVxdWVzdC51cmwoKSA9PSBGYWtlUmVwbHk6OnVybEZvcjQwNEVycm9y
V2l0aG91dENvbnRlbnRzKSB7CisgICAgICAgICAgICBzZXRFcnJvcihRTmV0d29ya1JlcGx5OjpD
b250ZW50Tm90Rm91bmRFcnJvciwgIk5vdCBmb3VuZCIpOworICAgICAgICAgICAgc2V0QXR0cmli
dXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFN0YXR1c0NvZGVBdHRyaWJ1dGUsIDQwNCk7CisgICAg
ICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoMCwgdGhpcywgU0xPVChjb250aW51ZUVycm9yKCkp
KTsKKyAgICAgICAgfQorCisgICAgICAgIG9wZW4oUUlPRGV2aWNlOjpSZWFkT25seSk7CisgICAg
fQorICAgIH5GYWtlUmVwbHkoKQorICAgIHsKKyAgICAgICAgY2xvc2UoKTsKKyAgICB9CisgICAg
dmlydHVhbCB2b2lkIGFib3J0KCkge30KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7fQorCitw
cm90ZWN0ZWQ6CisgICAgcWludDY0IHJlYWREYXRhKGNoYXIqLCBxaW50NjQpCisgICAgeworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIGNvbnRp
bnVlUmVkaXJlY3QoKQorICAgIHsKKyAgICAgICAgZW1pdCBtZXRhRGF0YUNoYW5nZWQoKTsKKyAg
ICAgICAgZW1pdCBmaW5pc2hlZCgpOworICAgIH0KKworICAgIHZvaWQgY29udGludWVFcnJvcigp
CisgICAgeworICAgICAgICBlbWl0IGVycm9yKHRoaXMtPmVycm9yKCkpOworICAgICAgICBlbWl0
IGZpbmlzaGVkKCk7CisgICAgfQorfTsKKworY29uc3QgUVVybCBGYWtlUmVwbHk6OnVybEZvcjQw
NEVycm9yV2l0aG91dENvbnRlbnRzID0gUVVybCgiaHR0cDovL3RoaXMud2lsbC9yZXR1cm4taHR0
cC00MDQtZXJyb3Itd2l0aG91dC1jb250ZW50cy5odG1sIik7CisKK2NsYXNzIEZha2VOZXR3b3Jr
TWFuYWdlciA6IHB1YmxpYyBRTmV0d29ya0FjY2Vzc01hbmFnZXIgeworICAgIFFfT0JKRUNUCisK
K3B1YmxpYzoKKyAgICBGYWtlTmV0d29ya01hbmFnZXIoUU9iamVjdCogcGFyZW50KSA6IFFOZXR3
b3JrQWNjZXNzTWFuYWdlcihwYXJlbnQpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBR
TmV0d29ya1JlcGx5KiBjcmVhdGVSZXF1ZXN0KE9wZXJhdGlvbiBvcCwgY29uc3QgUU5ldHdvcmtS
ZXF1ZXN0JiByZXF1ZXN0LCBRSU9EZXZpY2UqIG91dGdvaW5nRGF0YSkKKyAgICB7CisgICAgICAg
IFFTdHJpbmcgdXJsID0gcmVxdWVzdC51cmwoKS50b1N0cmluZygpOworICAgICAgICBpZiAob3Ag
PT0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb24pIHsKKyNpZm5kZWYgUVRfTk9f
T1BFTlNTTAorICAgICAgICAgICAgaWYgKHVybCA9PSAicXJjOi9mYWtlLXNzbC1lcnJvci5odG1s
IikgeworICAgICAgICAgICAgICAgIEZha2VSZXBseSogcmVwbHkgPSBuZXcgRmFrZVJlcGx5KHJl
cXVlc3QsIHRoaXMpOworICAgICAgICAgICAgICAgIFFMaXN0PFFTc2xFcnJvcj4gZXJyb3JzOwor
ICAgICAgICAgICAgICAgIGVtaXQgc3NsRXJyb3JzKHJlcGx5LCBlcnJvcnMgPDwgUVNzbEVycm9y
KFFTc2xFcnJvcjo6VW5zcGVjaWZpZWRFcnJvcikpOworICAgICAgICAgICAgICAgIHJldHVybiBy
ZXBseTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgaWYgKHVybCA9PSAicXJj
Oi90ZXN0MS5odG1sIiB8fCB1cmwgPT0gImh0dHA6Ly9hYmNkZWYuYWJjZGVmLyIgfHwgcmVxdWVz
dC51cmwoKSA9PSBGYWtlUmVwbHk6OnVybEZvcjQwNEVycm9yV2l0aG91dENvbnRlbnRzKQorICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgRmFrZVJlcGx5KHJlcXVlc3QsIHRoaXMpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6Y3JlYXRlUmVxdWVz
dChvcCwgcmVxdWVzdCwgb3V0Z29pbmdEYXRhKTsKKyAgICB9Cit9OworCit2b2lkIHRzdF9RV2Vi
RnJhbWU6OnJlcXVlc3RlZFVybCgpCit7CisgICAgUVdlYlBhZ2UgcGFnZTsKKyAgICBRV2ViRnJh
bWUqIGZyYW1lID0gcGFnZS5tYWluRnJhbWUoKTsKKworICAgIC8vIGluIGZldyBzZWNvbmRzLCB0
aGUgaW1hZ2Ugc2hvdWxkIGJlIGNvbXBsZXRlbHkgbG9hZGVkCisgICAgUVNpZ25hbFNweSBzcHko
JnBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBGYWtlTmV0d29ya01hbmFn
ZXIqIG5ldHdvcmtNYW5hZ2VyID0gbmV3IEZha2VOZXR3b3JrTWFuYWdlcigmcGFnZSk7CisgICAg
cGFnZS5zZXROZXR3b3JrQWNjZXNzTWFuYWdlcihuZXR3b3JrTWFuYWdlcik7CisKKyAgICBmcmFt
ZS0+c2V0VXJsKFFVcmwoInFyYzovdGVzdDEuaHRtbCIpKTsKKyAgICB3YWl0Rm9yU2lnbmFsKGZy
YW1lLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgMjAwKTsKKyAgICBRQ09NUEFSRShzcHku
Y291bnQoKSwgMSk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVybCgpLCBRVXJsKCJx
cmM6L3Rlc3QxLmh0bWwiKSk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCBRVXJsKCJxcmM6
L3Rlc3QyLmh0bWwiKSk7CisKKyAgICBmcmFtZS0+c2V0VXJsKFFVcmwoInFyYzovbm9uLWV4aXN0
ZW50Lmh0bWwiKSk7CisgICAgd2FpdEZvclNpZ25hbChmcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hl
ZChib29sKSksIDIwMCk7CisgICAgUUNPTVBBUkUoc3B5LmNvdW50KCksIDIpOworICAgIFFDT01Q
QVJFKGZyYW1lLT5yZXF1ZXN0ZWRVcmwoKSwgUVVybCgicXJjOi9ub24tZXhpc3RlbnQuaHRtbCIp
KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIFFVcmwoInFyYzovbm9uLWV4aXN0ZW50Lmh0
bWwiKSk7CisKKyAgICBmcmFtZS0+c2V0VXJsKFFVcmwoImh0dHA6Ly9hYmNkZWYuYWJjZGVmIikp
OworICAgIHdhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAy
MDApOworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCAzKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+
cmVxdWVzdGVkVXJsKCksIFFVcmwoImh0dHA6Ly9hYmNkZWYuYWJjZGVmLyIpKTsKKyAgICBRQ09N
UEFSRShmcmFtZS0+dXJsKCksIFFVcmwoImh0dHA6Ly9hYmNkZWYuYWJjZGVmLyIpKTsKKworI2lm
bmRlZiBRVF9OT19PUEVOU1NMCisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UUxpc3Q8UVNzbEVycm9y
PiA+KCJRTGlzdDxRU3NsRXJyb3I+Iik7CisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UU5ldHdvcmtS
ZXBseSogPigiUU5ldHdvcmtSZXBseSoiKTsKKworICAgIFFTaWduYWxTcHkgc3B5MihwYWdlLm5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKCksIFNJR05BTChzc2xFcnJvcnMoUU5ldHdvcmtSZXBseSosUUxp
c3Q8UVNzbEVycm9yPikpKTsKKyAgICBmcmFtZS0+c2V0VXJsKFFVcmwoInFyYzovZmFrZS1zc2wt
ZXJyb3IuaHRtbCIpKTsKKyAgICB3YWl0Rm9yU2lnbmFsKGZyYW1lLCBTSUdOQUwobG9hZEZpbmlz
aGVkKGJvb2wpKSwgMjAwKTsKKyAgICBRQ09NUEFSRShzcHkyLmNvdW50KCksIDEpOworICAgIFFD
T01QQVJFKGZyYW1lLT5yZXF1ZXN0ZWRVcmwoKSwgUVVybCgicXJjOi9mYWtlLXNzbC1lcnJvci5o
dG1sIikpOworICAgIFFDT01QQVJFKGZyYW1lLT51cmwoKSwgUVVybCgicXJjOi9mYWtlLXNzbC1l
cnJvci5odG1sIikpOworI2VuZGlmCit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6cmVxdWVzdGVk
VXJsQWZ0ZXJTZXRBbmRMb2FkRmFpbHVyZXMoKQoreworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAg
UVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisKKyAgICBRU2lnbmFsU3B5IHNw
eShmcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworCisgICAgY29uc3QgUVVybCBm
aXJzdCgiaHR0cDovL2FiY2RlZi5hYmNkZWYvIik7CisgICAgZnJhbWUtPnNldFVybChmaXJzdCk7
CisgICAgOjp3YWl0Rm9yU2lnbmFsKGZyYW1lLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7
CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCBmaXJzdCk7CisgICAgUUNPTVBBUkUoZnJhbWUt
PnJlcXVlc3RlZFVybCgpLCBmaXJzdCk7CisgICAgUVZFUklGWSghc3B5LmF0KDApLmZpcnN0KCku
dG9Cb29sKCkpOworCisgICAgY29uc3QgUVVybCBzZWNvbmQoImh0dHA6Ly9hYmNkZWYuYWJjZGVm
L2Fub3RoZXJfcGFnZS5odG1sIik7CisgICAgUVZFUklGWShmaXJzdCAhPSBzZWNvbmQpOworCisg
ICAgZnJhbWUtPmxvYWQoc2Vjb25kKTsKKyAgICA6OndhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIGZpcnN0
KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+cmVxdWVzdGVkVXJsKCksIHNlY29uZCk7CisgICAgUVZF
UklGWSghc3B5LmF0KDEpLmZpcnN0KCkudG9Cb29sKCkpOworfQorCit2b2lkIHRzdF9RV2ViRnJh
bWU6OmphdmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkX2RhdGEoKQoreworICAgIFFUZXN0Ojph
ZGRDb2x1bW48UVN0cmluZz4oImh0bWwiKTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPGludD4oInNp
Z25hbENvdW50Iik7CisgICAgUVRlc3Q6Om5ld1Jvdygid2l0aCA8c2NyaXB0PiIpIDw8ICI8aHRt
bD48Ym9keT48c2NyaXB0Pmk9MDwvc2NyaXB0PjxwPmhlbGxvIHdvcmxkPC9wPjwvYm9keT48L2h0
bWw+IiA8PCAxOworICAgIC8vIE5PVEU6IEVtcHR5IHNjcmlwdHMgbm8gbG9uZ2VyIGNhdXNlIHRo
aXMgc2lnbmFsIHRvIGJlIGVtaXR0ZWQuCisgICAgUVRlc3Q6Om5ld1Jvdygid2l0aCBlbXB0eSA8
c2NyaXB0PiIpIDw8ICI8aHRtbD48Ym9keT48c2NyaXB0Pjwvc2NyaXB0PjxwPmhlbGxvIHdvcmxk
PC9wPjwvYm9keT48L2h0bWw+IiA8PCAwOworICAgIFFUZXN0OjpuZXdSb3coIndpdGhvdXQgPHNj
cmlwdD4iKSA8PCAiPGh0bWw+PGJvZHk+PHA+aGVsbG8gd29ybGQ8L3A+PC9ib2R5PjwvaHRtbD4i
IDw8IDA7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6amF2YVNjcmlwdFdpbmRvd09iamVjdENs
ZWFyZWQoKQoreworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBh
Z2UubWFpbkZyYW1lKCk7CisgICAgUVNpZ25hbFNweSBzcHkoZnJhbWUsIFNJR05BTChqYXZhU2Ny
aXB0V2luZG93T2JqZWN0Q2xlYXJlZCgpKSk7CisgICAgUUZFVENIKFFTdHJpbmcsIGh0bWwpOwor
ICAgIGZyYW1lLT5zZXRIdG1sKGh0bWwpOworCisgICAgUUZFVENIKGludCwgc2lnbmFsQ291bnQp
OworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCBzaWduYWxDb3VudCk7Cit9CisKK3ZvaWQgdHN0
X1FXZWJGcmFtZTo6amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWRPbkV2YWx1YXRlKCkKK3sK
KyAgICBRV2ViUGFnZSBwYWdlOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFt
ZSgpOworICAgIFFTaWduYWxTcHkgc3B5KGZyYW1lLCBTSUdOQUwoamF2YVNjcmlwdFdpbmRvd09i
amVjdENsZWFyZWQoKSkpOworICAgIGZyYW1lLT5zZXRIdG1sKCI8aHRtbD48L2h0bWw+Iik7Cisg
ICAgUUNPTVBBUkUoc3B5LmNvdW50KCksIDApOworICAgIGZyYW1lLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoInZhciBhID0gJ2EnOyIpOworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCAxKTsKKyAgICAv
LyBubyBuZXcgY2xlYXIgZm9yIGEgbmV3IHNjcmlwdDoKKyAgICBmcmFtZS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJ2YXIgYSA9IDE7Iik7CisgICAgUUNPTVBBUkUoc3B5LmNvdW50KCksIDEpOworfQor
Cit2b2lkIHRzdF9RV2ViRnJhbWU6OnNldEh0bWwoKQoreworICAgIFFTdHJpbmcgaHRtbCgiPGh0
bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxwPmhlbGxvIHdvcmxkPC9wPjwvYm9keT48L2h0bWw+Iik7
CisgICAgUVNpZ25hbFNweSBzcHkobV92aWV3LT5wYWdlKCksIFNJR05BTChsb2FkRmluaXNoZWQo
Ym9vbCkpKTsKKyAgICBtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldEh0bWwoaHRtbCk7
CisgICAgUUNPTVBBUkUobV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT50b0h0bWwoKSwgaHRt
bCk7CisgICAgUUNPTVBBUkUoc3B5LmNvdW50KCksIDEpOworfQorCit2b2lkIHRzdF9RV2ViRnJh
bWU6OnNldEh0bWxXaXRoSW1hZ2VSZXNvdXJjZSgpCit7CisgICAgLy8gQnkgZGVmYXVsdCwgb25s
eSBzZWN1cml0eSBvcmlnaW5zIG9mIGxvY2FsIGZpbGVzIGNhbiBsb2FkIGxvY2FsIHJlc291cmNl
cy4KKyAgICAvLyBTbyB3ZSBzaG91bGQgc3BlY2lmeSBiYXNlVXJsIHRvIGJlIGEgbG9jYWwgZmls
ZSBpbiBvcmRlciB0byBnZXQgYSBwcm9wZXIgb3JpZ2luIGFuZCBsb2FkIHRoZSBsb2NhbCBpbWFn
ZS4KKworICAgIFFMYXRpbjFTdHJpbmcgaHRtbCgiPGh0bWw+PGJvZHk+PHA+aGVsbG8gd29ybGQ8
L3A+PGltZyBzcmM9J3FyYzovaW1hZ2UucG5nJy8+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBRV2Vi
UGFnZSBwYWdlOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworCisg
ICAgZnJhbWUtPnNldEh0bWwoaHRtbCwgUVVybChRTGF0aW4xU3RyaW5nKCJmaWxlOi8vL3BhdGgv
dG8vZmlsZSIpKSk7CisgICAgd2FpdEZvclNpZ25hbChmcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hl
ZChib29sKSksIDIwMCk7CisKKyAgICBRQ09NUEFSRShmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJkb2N1bWVudC5pbWFnZXMubGVuZ3RoIikudG9JbnQoKSwgMSk7CisgICAgUUNPTVBBUkUoZnJh
bWUtPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQuaW1hZ2VzWzBdLndpZHRoIikudG9JbnQo
KSwgMTI4KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVu
dC5pbWFnZXNbMF0uaGVpZ2h0IikudG9JbnQoKSwgMTI4KTsKKworICAgIC8vIE5vdyB3ZSB0ZXN0
IHRoZSBvcHBvc2l0ZTogd2l0aG91dCBhIGJhc2VVcmwgYXMgYSBsb2NhbCBmaWxlLCB3ZSBjYW5u
b3QgcmVxdWVzdCBsb2NhbCByZXNvdXJjZXMuCisKKyAgICBmcmFtZS0+c2V0SHRtbChodG1sKTsK
KyAgICB3YWl0Rm9yU2lnbmFsKGZyYW1lLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgMjAw
KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5pbWFn
ZXMubGVuZ3RoIikudG9JbnQoKSwgMSk7CisgICAgUUVYUEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODY1OSIsIENvbnRpbnVlKTsKKyAgICBR
Q09NUEFSRShmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5pbWFnZXNbMF0ud2lk
dGgiKS50b0ludCgpLCAwKTsKKyAgICBRRVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NjU5IiwgQ29udGludWUpOworICAgIFFDT01QQVJF
KGZyYW1lLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmltYWdlc1swXS5oZWlnaHQiKS50
b0ludCgpLCAwKTsKK30KKwordm9pZCB0c3RfUVdlYkZyYW1lOjpzZXRIdG1sV2l0aFN0eWxlc2hl
ZXRSZXNvdXJjZSgpCit7CisgICAgLy8gQnkgZGVmYXVsdCwgb25seSBzZWN1cml0eSBvcmlnaW5z
IG9mIGxvY2FsIGZpbGVzIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KKyAgICAvLyBTbyB3ZSBz
aG91bGQgc3BlY2lmeSBiYXNlVXJsIHRvIGJlIGEgbG9jYWwgZmlsZSBpbiBvcmRlciB0byBiZSBh
YmxlIHRvIGRvd25sb2FkIHRoZSBsb2NhbCBzdHlsZXNoZWV0LgorCisgICAgY29uc3QgY2hhciog
aHRtbERhdGEgPQorICAgICAgICAiPGh0bWw+IgorICAgICAgICAgICAgIjxoZWFkPiIKKyAgICAg
ICAgICAgICAgICAiPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSdxcmM6L3N0eWxlLmNzcycg
dHlwZT0ndGV4dC9jc3MnIC8+IgorICAgICAgICAgICAgIjwvaGVhZD4iCisgICAgICAgICAgICAi
PGJvZHk+IgorICAgICAgICAgICAgICAgICI8cCBpZD0naWRQJz5zb21lIHRleHQ8L3A+IgorICAg
ICAgICAgICAgIjwvYm9keT4iCisgICAgICAgICI8L2h0bWw+IjsKKyAgICBRTGF0aW4xU3RyaW5n
IGh0bWwoaHRtbERhdGEpOworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgUVdlYkZyYW1lKiBmcmFt
ZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgUVdlYkVsZW1lbnQgd2ViRWxlbWVudDsKKworICAg
IGZyYW1lLT5zZXRIdG1sKGh0bWwsIFFVcmwoUUxhdGluMVN0cmluZygicXJjOi8vL2ZpbGUiKSkp
OworICAgIHdhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAy
MDApOworICAgIHdlYkVsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZpcnN0
KCJwIik7CisgICAgUUNPTVBBUkUod2ViRWxlbWVudC5zdHlsZVByb3BlcnR5KCJjb2xvciIsIFFX
ZWJFbGVtZW50OjpDYXNjYWRlZFN0eWxlKSwgUUxhdGluMVN0cmluZygicmVkIikpOworCisgICAg
Ly8gTm93IHdlIHRlc3QgdGhlIG9wcG9zaXRlOiB3aXRob3V0IGEgYmFzZVVybCBhcyBhIGxvY2Fs
IGZpbGUsIHdlIGNhbm5vdCByZXF1ZXN0IGxvY2FsIHJlc291cmNlcy4KKworICAgIGZyYW1lLT5z
ZXRIdG1sKGh0bWwsIFFVcmwoUUxhdGluMVN0cmluZygiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8i
KSkpOworICAgIHdhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkp
LCAyMDApOworICAgIHdlYkVsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZp
cnN0KCJwIik7CisgICAgUUVYUEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExODY1OSIsIENvbnRpbnVlKTsKKyAgICBRQ09NUEFSRSh3ZWJFbGVt
ZW50LnN0eWxlUHJvcGVydHkoImNvbG9yIiwgUVdlYkVsZW1lbnQ6OkNhc2NhZGVkU3R5bGUpLCBR
U3RyaW5nKCkpOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OnNldEh0bWxXaXRoQmFzZVVSTCgp
Cit7CisgICAgLy8gVGhpcyB0ZXN0cyBpZiBiYXNlVXJsIGlzIGluZGVlZCBhZmZlY3RpbmcgdGhl
IHJlbGF0aXZlIHBhdGhzIGZyb20gcmVzb3VyY2VzLgorICAgIC8vIEFzIHdlIGFyZSB1c2luZyBh
IGxvY2FsIGZpbGUgYXMgYmFzZVVybCwgaXRzIHNlY3VyaXR5IG9yaWdpbiBzaG91bGQgYmUgYWJs
ZSB0byBsb2FkIGxvY2FsIHJlc291cmNlcy4KKworICAgIGlmICghUURpcihURVNUU19TT1VSQ0Vf
RElSKS5leGlzdHMoKSkKKyAgICAgICAgV19RU0tJUChRU3RyaW5nKCJUaGlzIHRlc3QgcmVxdWly
ZXMgYWNjZXNzIHRvIHJlc291cmNlcyBmb3VuZCBpbiAnJTEnIikuYXJnKFRFU1RTX1NPVVJDRV9E
SVIpLnRvTGF0aW4xKCkuY29uc3REYXRhKCksIFNraXBBbGwpOworCisgICAgUURpcjo6c2V0Q3Vy
cmVudChURVNUU19TT1VSQ0VfRElSKTsKKworICAgIFFTdHJpbmcgaHRtbCgiPGh0bWw+PGJvZHk+
PHA+aGVsbG8gd29ybGQ8L3A+PGltZyBzcmM9J3Jlc291cmNlcy9pbWFnZTIucG5nJy8+PC9ib2R5
PjwvaHRtbD4iKTsKKworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9
IHBhZ2UubWFpbkZyYW1lKCk7CisKKyAgICAvLyBpbiBmZXcgc2Vjb25kcywgdGhlIGltYWdlIHNo
b3VsZCBiZSBjb21wbGV0ZXkgbG9hZGVkCisgICAgUVNpZ25hbFNweSBzcHkoJnBhZ2UsIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKworICAgIGZyYW1lLT5zZXRIdG1sKGh0bWwsIFFVcmw6
OmZyb21Mb2NhbEZpbGUoVEVTVFNfU09VUkNFX0RJUikpOworICAgIHdhaXRGb3JTaWduYWwoZnJh
bWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAyMDApOworICAgIFFDT01QQVJFKHNweS5j
b3VudCgpLCAxKTsKKworICAgIFFDT01QQVJFKGZyYW1lLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRv
Y3VtZW50LmltYWdlcy5sZW5ndGgiKS50b0ludCgpLCAxKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5pbWFnZXNbMF0ud2lkdGgiKS50b0ludCgpLCAx
MjgpOworICAgIFFDT01QQVJFKGZyYW1lLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50Lmlt
YWdlc1swXS5oZWlnaHQiKS50b0ludCgpLCAxMjgpOworCisgICAgLy8gbm8gaGlzdG9yeSBpdGVt
IGhhcyB0byBiZSBhZGRlZC4KKyAgICBRQ09NUEFSRShtX3ZpZXctPnBhZ2UoKS0+aGlzdG9yeSgp
LT5jb3VudCgpLCAwKTsKK30KKworY2xhc3MgTXlQYWdlIDogcHVibGljIFFXZWJQYWdlCit7Citw
dWJsaWM6CisgICAgTXlQYWdlKCkgOiAgUVdlYlBhZ2UoKSwgYWxlcnRzKDApIHt9CisgICAgaW50
IGFsZXJ0czsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBqYXZhU2NyaXB0QWxlcnQo
UVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbXNnKQorICAgIHsKKyAgICAgICAgYWxlcnRzKys7
CisgICAgICAgIFFDT01QQVJFKG1zZywgUVN0cmluZygiZm9vIikpOworICAgICAgICAvLyBTaG91
bGQgbm90IGJlIGVub3VnaCB0byB0cmlnZ2VyIGRlZmVycmVkIGxvYWRpbmcsIHNpbmNlIHdlJ3Zl
IHVwcGVkIHRoZSBIVE1MCisgICAgICAgIC8vIHRva2VuaXplciBkZWxheSBpbiB0aGUgUXQgZnJh
bWVsb2FkZXIuIFNlZSBIVE1MVG9rZW5pemVyOjpjb250aW51ZVByb2Nlc3NpbmcoKQorICAgICAg
ICBRVGVzdDo6cVdhaXQoMTAwMCk7CisgICAgfQorfTsKKwordm9pZCB0c3RfUVdlYkZyYW1lOjpz
ZXRIdG1sV2l0aEpTQWxlcnQoKQoreworICAgIFFTdHJpbmcgaHRtbCgiPGh0bWw+PGhlYWQ+PC9o
ZWFkPjxib2R5PjxzY3JpcHQ+YWxlcnQoJ2ZvbycpOzwvc2NyaXB0PjxwPmhlbGxvIHdvcmxkPC9w
PjwvYm9keT48L2h0bWw+Iik7CisgICAgTXlQYWdlIHBhZ2U7CisgICAgbV92aWV3LT5zZXRQYWdl
KCZwYWdlKTsKKyAgICBwYWdlLm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0bWwpOworICAgIFFDT01Q
QVJFKHBhZ2UuYWxlcnRzLCAxKTsKKyAgICBRRVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NjYzIiwgQ29udGludWUpOworICAgIFFDT01Q
QVJFKG1fdmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dG9IdG1sKCksIGh0bWwpOworfQorCitj
bGFzcyBUZXN0TmV0d29ya01hbmFnZXIgOiBwdWJsaWMgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyCit7
CitwdWJsaWM6CisgICAgVGVzdE5ldHdvcmtNYW5hZ2VyKFFPYmplY3QqIHBhcmVudCkgOiBRTmV0
d29ya0FjY2Vzc01hbmFnZXIocGFyZW50KSB7fQorCisgICAgUUxpc3Q8UVVybD4gcmVxdWVzdGVk
VXJsczsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgUU5ldHdvcmtSZXBseSogY3JlYXRlUmVx
dWVzdChPcGVyYXRpb24gb3AsIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxdWVzdCwgUUlPRGV2
aWNlKiBvdXRnb2luZ0RhdGEpIHsKKyAgICAgICAgcmVxdWVzdGVkVXJscy5hcHBlbmQocmVxdWVz
dC51cmwoKSk7CisgICAgICAgIFFOZXR3b3JrUmVxdWVzdCByZWRpcmVjdGVkUmVxdWVzdCA9IHJl
cXVlc3Q7CisgICAgICAgIHJlZGlyZWN0ZWRSZXF1ZXN0LnNldFVybChRVXJsKCJkYXRhOnRleHQv
aHRtbCw8cD5oZWxsbyIpKTsKKyAgICAgICAgcmV0dXJuIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6
Y3JlYXRlUmVxdWVzdChvcCwgcmVkaXJlY3RlZFJlcXVlc3QsIG91dGdvaW5nRGF0YSk7CisgICAg
fQorfTsKKwordm9pZCB0c3RfUVdlYkZyYW1lOjppcHY2SG9zdEVuY29kaW5nKCkKK3sKKyAgICBU
ZXN0TmV0d29ya01hbmFnZXIqIG5ldHdvcmtNYW5hZ2VyID0gbmV3IFRlc3ROZXR3b3JrTWFuYWdl
cihtX3BhZ2UpOworICAgIG1fcGFnZS0+c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIobmV0d29ya01h
bmFnZXIpOworICAgIG5ldHdvcmtNYW5hZ2VyLT5yZXF1ZXN0ZWRVcmxzLmNsZWFyKCk7CisKKyAg
ICBRVXJsIGJhc2VVcmwgPSBRVXJsOjpmcm9tRW5jb2RlZCgiaHR0cDovL1s6OjFdL2luZGV4Lmh0
bWwiKTsKKyAgICBtX3ZpZXctPnNldEh0bWwoIjxwPkhpIiwgYmFzZVVybCk7CisgICAgbV92aWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciByID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7IgorICAgICAgICAgICAgInIub3BlbignR0VUJywgJ2h0dHA6Ly9bOjox
XS90ZXN0LnhtbCcsIGZhbHNlKTsiCisgICAgICAgICAgICAici5zZW5kKG51bGwpOyIKKyAgICAg
ICAgICAgICk7CisgICAgUUNPTVBBUkUobmV0d29ya01hbmFnZXItPnJlcXVlc3RlZFVybHMuY291
bnQoKSwgMSk7CisgICAgUUNPTVBBUkUobmV0d29ya01hbmFnZXItPnJlcXVlc3RlZFVybHMuYXQo
MCksIFFVcmw6OmZyb21FbmNvZGVkKCJodHRwOi8vWzo6MV0vdGVzdC54bWwiKSk7Cit9CisKK3Zv
aWQgdHN0X1FXZWJGcmFtZTo6bWV0YURhdGEoKQoreworICAgIG1fdmlldy0+c2V0SHRtbCgiPGh0
bWw+IgorICAgICAgICAgICAgICAgICAgICAiICAgIDxoZWFkPiIKKyAgICAgICAgICAgICAgICAg
ICAgIiAgICAgICAgPG1ldGEgbmFtZT1cImRlc2NyaXB0aW9uXCIgY29udGVudD1cIlRlc3QgZGVz
Y3JpcHRpb25cIj4iCisgICAgICAgICAgICAgICAgICAgICIgICAgICAgIDxtZXRhIG5hbWU9XCJr
ZXl3b3Jkc1wiIGNvbnRlbnQ9XCJIVE1MLCBKYXZhU2NyaXB0LCBDc3NcIj4iCisgICAgICAgICAg
ICAgICAgICAgICIgICAgPC9oZWFkPiIKKyAgICAgICAgICAgICAgICAgICAgIjwvaHRtbD4iKTsK
KworICAgIFFNdWx0aU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBtZXRhRGF0YSA9IG1fdmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+bWV0YURhdGEoKTsKKworICAgIFFDT01QQVJFKG1ldGFEYXRhLmNv
dW50KCksIDIpOworCisgICAgUUNPTVBBUkUobWV0YURhdGEudmFsdWUoImRlc2NyaXB0aW9uIiks
IFFTdHJpbmcoIlRlc3QgZGVzY3JpcHRpb24iKSk7CisgICAgUUNPTVBBUkUobWV0YURhdGEudmFs
dWUoImtleXdvcmRzIiksIFFTdHJpbmcoIkhUTUwsIEphdmFTY3JpcHQsIENzcyIpKTsKKyAgICBR
Q09NUEFSRShtZXRhRGF0YS52YWx1ZSgibm9uZXhpc3RhbnQiKSwgUVN0cmluZygpKTsKKworICAg
IG1fdmlldy0+c2V0SHRtbCgiPGh0bWw+IgorICAgICAgICAgICAgICAgICAgICAiICAgIDxoZWFk
PiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPG1ldGEgbmFtZT1cInNhbWVrZXlcIiBj
b250ZW50PVwiRmlyc3RWYWx1ZVwiPiIKKyAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPG1l
dGEgbmFtZT1cInNhbWVrZXlcIiBjb250ZW50PVwiU2Vjb25kVmFsdWVcIj4iCisgICAgICAgICAg
ICAgICAgICAgICIgICAgPC9oZWFkPiIKKyAgICAgICAgICAgICAgICAgICAgIjwvaHRtbD4iKTsK
KworICAgIG1ldGFEYXRhID0gbV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5tZXRhRGF0YSgp
OworCisgICAgUUNPTVBBUkUobWV0YURhdGEuY291bnQoKSwgMik7CisKKyAgICBRU3RyaW5nTGlz
dCB2YWx1ZXMgPSBtZXRhRGF0YS52YWx1ZXMoInNhbWVrZXkiKTsKKyAgICBRQ09NUEFSRSh2YWx1
ZXMuY291bnQoKSwgMik7CisKKyAgICBRVkVSSUZZKHZhbHVlcy5jb250YWlucygiRmlyc3RWYWx1
ZSIpKTsKKyAgICBRVkVSSUZZKHZhbHVlcy5jb250YWlucygiU2Vjb25kVmFsdWUiKSk7CisKKyAg
ICBRQ09NUEFSRShtZXRhRGF0YS52YWx1ZSgibm9uZXhpc3RhbnQiKSwgUVN0cmluZygpKTsKK30K
KworI2lmICFkZWZpbmVkKFFUX05PX0NPTUJPQk9YKQordm9pZCB0c3RfUVdlYkZyYW1lOjpwb3B1
cEZvY3VzKCkKK3sKKyAgICBRV2ViVmlldyB2aWV3OworICAgIHZpZXcuc2V0SHRtbCgiPGh0bWw+
IgorICAgICAgICAgICAgICAgICAiICAgIDxib2R5PiIKKyAgICAgICAgICAgICAgICAgIiAgICAg
ICAgPHNlbGVjdCBuYW1lPVwic2VsZWN0XCI+IgorICAgICAgICAgICAgICAgICAiICAgICAgICAg
ICAgPG9wdGlvbj4xPC9vcHRpb24+IgorICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPG9w
dGlvbj4yPC9vcHRpb24+IgorICAgICAgICAgICAgICAgICAiICAgICAgICA8L3NlbGVjdD4iCisg
ICAgICAgICAgICAgICAgICIgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiPiA8L2lucHV0PiIK
KyAgICAgICAgICAgICAgICAgIiAgICAgICAgPHRleHRhcmVhIG5hbWU9XCJ0ZXh0X2FyZWFcIiBy
b3dzPVwiM1wiIGNvbHM9XCI0MFwiPiIKKyAgICAgICAgICAgICAgICAgIlRoaXMgdGVzdCBjaGVj
a3Mgd2hldGhlciBzaG93aW5nIGFuZCBoaWRpbmcgYSBwb3B1cCIKKyAgICAgICAgICAgICAgICAg
InRha2VzIHRoZSBmb2N1cyBhd2F5IGZyb20gdGhlIHdlYnBhZ2UuIgorICAgICAgICAgICAgICAg
ICAiICAgICAgICA8L3RleHRhcmVhPiIKKyAgICAgICAgICAgICAgICAgIiAgICA8L2JvZHk+Igor
ICAgICAgICAgICAgICAgICAiPC9odG1sPiIpOworICAgIHZpZXcucmVzaXplKDQwMCwgMTAwKTsK
KyAgICAvLyBDYWxsIHNldEZvY3VzIGJlZm9yZSBzaG93IHRvIHdvcmsgYXJvdW5kIGh0dHA6Ly9i
dWdyZXBvcnRzLnF0Lm5va2lhLmNvbS9icm93c2UvUVRCVUctMTQ3NjIKKyAgICB2aWV3LnNldEZv
Y3VzKCk7CisgICAgdmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3Nl
ZCgmdmlldyk7CisgICAgdmlldy5hY3RpdmF0ZVdpbmRvdygpOworICAgIFFUUllfVkVSSUZZKHZp
ZXcuaGFzRm9jdXMoKSk7CisKKyAgICAvLyBvcGVuIHRoZSBwb3B1cCBieSBjbGlja2luZy4gY2hl
Y2sgaWYgZm9jdXMgaXMgb24gdGhlIHBvcHVwCisgICAgY29uc3QgUVdlYkVsZW1lbnQgd2ViQ29t
Ym8gPSB2aWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50RWxlbWVudCgpLmZpbmRGaXJz
dChRTGF0aW4xU3RyaW5nKCJzZWxlY3RbbmFtZT1zZWxlY3RdIikpOworICAgIFFUZXN0Ojptb3Vz
ZUNsaWNrKCZ2aWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwgd2ViQ29tYm8uZ2VvbWV0cnkoKS5jZW50
ZXIoKSk7CisKKyAgICBRQ29tYm9Cb3gqIGNvbWJvID0gdmlldy5maW5kQ2hpbGQ8UUNvbWJvQm94
Kj4oKTsKKyAgICBRVkVSSUZZKGNvbWJvICE9IDApOworICAgIFFUUllfVkVSSUZZKCF2aWV3Lmhh
c0ZvY3VzKCkgJiYgY29tYm8tPnZpZXcoKS0+aGFzRm9jdXMoKSk7IC8vIEZvY3VzIHNob3VsZCBi
ZSBvbiB0aGUgcG9wdXAKKworICAgIC8vIGhpZGUgdGhlIHBvcHVwIGFuZCBjaGVjayBpZiBmb2N1
cyBpcyBvbiB0aGUgcGFnZQorICAgIGNvbWJvLT5oaWRlUG9wdXAoKTsKKyAgICBRVFJZX1ZFUklG
WSh2aWV3Lmhhc0ZvY3VzKCkpOyAvLyBGb2N1cyBzaG91bGQgYmUgYmFjayBvbiB0aGUgV2ViVmll
dworfQorI2VuZGlmCisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6aW5wdXRGaWVsZEZvY3VzKCkKK3sK
KyAgICBRV2ViVmlldyB2aWV3OworICAgIHZpZXcuc2V0SHRtbCgiPGh0bWw+PGJvZHk+PGlucHV0
IHR5cGU9XCJ0ZXh0XCI+PC9pbnB1dD48L2JvZHk+PC9odG1sPiIpOworICAgIHZpZXcucmVzaXpl
KDQwMCwgMTAwKTsKKyAgICB2aWV3LnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dF
eHBvc2VkKCZ2aWV3KTsKKyAgICB2aWV3LmFjdGl2YXRlV2luZG93KCk7CisgICAgdmlldy5zZXRG
b2N1cygpOworICAgIFFUUllfVkVSSUZZKHZpZXcuaGFzRm9jdXMoKSk7CisKKyAgICAvLyBkb3Vi
bGUgdGhlIGZsYXNoaW5nIHRpbWUsIHNob3VsZCBhdCBsZWFzdCBibGluayBvbmNlIGFscmVhZHkK
KyAgICBpbnQgZGVsYXkgPSBxQXBwLT5jdXJzb3JGbGFzaFRpbWUoKSAqIDI7CisKKyAgICAvLyBm
b2N1cyB0aGUgbGluZWVkaXQgYW5kIGNoZWNrIGlmIGl0IGJsaW5rcworICAgIGJvb2wgYXV0b1Np
cEVuYWJsZWQgPSBxQXBwLT5hdXRvU2lwRW5hYmxlZCgpOworICAgIHFBcHAtPnNldEF1dG9TaXBF
bmFibGVkKGZhbHNlKTsKKyAgICBjb25zdCBRV2ViRWxlbWVudCBpbnB1dEVsZW1lbnQgPSB2aWV3
LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50RWxlbWVudCgpLmZpbmRGaXJzdChRTGF0aW4x
U3RyaW5nKCJpbnB1dFt0eXBlPXRleHRdIikpOworICAgIFFUZXN0Ojptb3VzZUNsaWNrKCZ2aWV3
LCBRdDo6TGVmdEJ1dHRvbiwgMCwgaW5wdXRFbGVtZW50Lmdlb21ldHJ5KCkuY2VudGVyKCkpOwor
ICAgIG1faW5wdXRGaWVsZHNUZXN0VmlldyA9ICZ2aWV3OworICAgIHZpZXcuaW5zdGFsbEV2ZW50
RmlsdGVyKCB0aGlzICk7CisgICAgUVRlc3Q6OnFXYWl0KGRlbGF5KTsKKyAgICBRVkVSSUZZMiht
X2lucHV0RmllbGRUZXN0UGFpbnRDb3VudCA+PSAzLAorICAgICAgICAgICAgICJUaGUgaW5wdXQg
ZmllbGQgc2hvdWxkIGhhdmUgYSBibGlua2luZyBjYXJldCIpOworICAgIHFBcHAtPnNldEF1dG9T
aXBFbmFibGVkKGF1dG9TaXBFbmFibGVkKTsKK30KKwordm9pZCB0c3RfUVdlYkZyYW1lOjpoaXRU
ZXN0Q29udGVudCgpCit7CisgICAgUVN0cmluZyBodG1sKCI8aHRtbD48Ym9keT48cD5BIHBhcmFn
cmFwaDwvcD48YnIvPjxici8+PGJyLz48YSBocmVmPVwiYWJvdXQ6YmxhbmtcIiB0YXJnZXQ9XCJf
Zm9vXCIgaWQ9XCJsaW5rXCI+bGluayB0ZXh0PC9hPjwvYm9keT48L2h0bWw+Iik7CisKKyAgICBR
V2ViUGFnZSBwYWdlOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOwor
ICAgIGZyYW1lLT5zZXRIdG1sKGh0bWwpOworICAgIHBhZ2Uuc2V0Vmlld3BvcnRTaXplKFFTaXpl
KDIwMCwgMCkpOyAvL25vIGhlaWdodCBzbyBsaW5rIGlzIG5vdCB2aXNpYmxlCisgICAgY29uc3Qg
UVdlYkVsZW1lbnQgbGlua0VsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZp
cnN0KFFMYXRpbjFTdHJpbmcoImEjbGluayIpKTsKKyAgICBRV2ViSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBmcmFtZS0+aGl0VGVzdENvbnRlbnQobGlua0VsZW1lbnQuZ2VvbWV0cnkoKS5jZW50ZXIo
KSk7CisgICAgUUNPTVBBUkUocmVzdWx0LmxpbmtUZXh0KCksIFFTdHJpbmcoImxpbmsgdGV4dCIp
KTsKKyAgICBRV2ViRWxlbWVudCBsaW5rID0gcmVzdWx0LmxpbmtFbGVtZW50KCk7CisgICAgUUNP
TVBBUkUobGluay5hdHRyaWJ1dGUoInRhcmdldCIpLCBRU3RyaW5nKCJfZm9vIikpOworfQorCit2
b2lkIHRzdF9RV2ViRnJhbWU6OmJhc2VVcmxfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVt
bjxRU3RyaW5nPigiaHRtbCIpOworICAgIFFUZXN0OjphZGRDb2x1bW48UVVybD4oImxvYWRVcmwi
KTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFVcmw+KCJ1cmwiKTsKKyAgICBRVGVzdDo6YWRkQ29s
dW1uPFFVcmw+KCJiYXNlVXJsIik7CisKKyAgICBRVGVzdDo6bmV3Um93KCJudWxsIikgPDwgUVN0
cmluZygpIDw8IFFVcmwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBRVXJsKCJhYm91
dDpibGFuayIpIDw8IFFVcmwoImFib3V0OmJsYW5rIik7CisKKyAgICBRVGVzdDo6bmV3Um93KCJm
b28iKSA8PCBRU3RyaW5nKCkgPDwgUVVybCgiaHR0cDovL2Zvb2Jhci5iYXovIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICA8PCBRVXJsKCJodHRwOi8vZm9vYmFyLmJhei8iKSA8PCBRVXJsKCJo
dHRwOi8vZm9vYmFyLmJhei8iKTsKKworICAgIFFTdHJpbmcgaHRtbCA9ICI8aHRtbD4iCisgICAg
ICAgICI8aGVhZD4iCisgICAgICAgICAgICAiPGJhc2UgaHJlZj1cImh0dHA6Ly9mb29iYXouYmFy
L1wiIC8+IgorICAgICAgICAiPC9oZWFkPiIKKyAgICAiPC9odG1sPiI7CisgICAgUVRlc3Q6Om5l
d1JvdygiY3VzdG9tQmFzZVVybCIpIDw8IGh0bWwgPDwgUVVybCgiaHR0cDovL2Zvb2Jhci5iYXov
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUVVybCgiaHR0cDovL2Zv
b2Jhci5iYXovIikgPDwgUVVybCgiaHR0cDovL2Zvb2Jhei5iYXIvIik7Cit9CisKK3ZvaWQgdHN0
X1FXZWJGcmFtZTo6YmFzZVVybCgpCit7CisgICAgUUZFVENIKFFTdHJpbmcsIGh0bWwpOworICAg
IFFGRVRDSChRVXJsLCBsb2FkVXJsKTsKKyAgICBRRkVUQ0goUVVybCwgdXJsKTsKKyAgICBRRkVU
Q0goUVVybCwgYmFzZVVybCk7CisKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0
bWwsIGxvYWRVcmwpOworICAgIFFDT01QQVJFKG1fcGFnZS0+bWFpbkZyYW1lKCktPnVybCgpLCB1
cmwpOworICAgIFFDT01QQVJFKG1fcGFnZS0+bWFpbkZyYW1lKCktPmJhc2VVcmwoKSwgYmFzZVVy
bCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6aGFzU2V0Rm9jdXMoKQoreworICAgIFFTdHJp
bmcgaHRtbCgiPGh0bWw+PGJvZHk+PHA+dG9wPC9wPiIgXAorICAgICAgICAgICAgICAgICAgICAi
PGlmcmFtZSB3aWR0aD0nODAlJyBoZWlnaHQ9JzMwJScvPiIgXAorICAgICAgICAgICAgICAgICAi
PC9ib2R5PjwvaHRtbD4iKTsKKworICAgIFFTaWduYWxTcHkgbG9hZFNweShtX3BhZ2UsIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1s
KGh0bWwpOworCisgICAgd2FpdEZvclNpZ25hbChtX3BhZ2UtPm1haW5GcmFtZSgpLCBTSUdOQUwo
bG9hZEZpbmlzaGVkKGJvb2wpKSwgMjAwKTsKKyAgICBRQ09NUEFSRShsb2FkU3B5LnNpemUoKSwg
MSk7CisKKyAgICBRTGlzdDxRV2ViRnJhbWUqPiBjaGlsZHJlbiA9IG1fcGFnZS0+bWFpbkZyYW1l
KCktPmNoaWxkRnJhbWVzKCk7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IGNoaWxkcmVuLmF0KDAp
OworICAgIFFTdHJpbmcgaW5uZXJIdG1sKCI8aHRtbD48Ym9keT48cD5hbm90aGVyIGlmcmFtZTwv
cD4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8aWZyYW1lIHdpZHRoPSc4MCUnIGhlaWdo
dD0nMzAlJy8+IiBcCisgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+Iik7Cisg
ICAgZnJhbWUtPnNldEh0bWwoaW5uZXJIdG1sKTsKKworICAgIHdhaXRGb3JTaWduYWwoZnJhbWUs
IFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAyMDApOworICAgIFFDT01QQVJFKGxvYWRTcHku
c2l6ZSgpLCAyKTsKKworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnNldEZvY3VzKCk7CisgICAg
UVRSWV9WRVJJRlkobV9wYWdlLT5tYWluRnJhbWUoKS0+aGFzRm9jdXMoKSk7CisKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNoaWxkcmVu
LmF0KGkpLT5zZXRGb2N1cygpOworICAgICAgICBRVFJZX1ZFUklGWShjaGlsZHJlbi5hdChpKS0+
aGFzRm9jdXMoKSk7CisgICAgICAgIFFWRVJJRlkoIW1fcGFnZS0+bWFpbkZyYW1lKCktPmhhc0Zv
Y3VzKCkpOworICAgIH0KKworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnNldEZvY3VzKCk7Cisg
ICAgUVRSWV9WRVJJRlkobV9wYWdlLT5tYWluRnJhbWUoKS0+aGFzRm9jdXMoKSk7Cit9CisKK3Zv
aWQgdHN0X1FXZWJGcmFtZTo6cmVuZGVyR2VvbWV0cnkoKQoreworICAgIFFTdHJpbmcgaHRtbCgi
PGh0bWw+IiBcCisgICAgICAgICAgICAgICAgICAgICI8aGVhZD48c3R5bGU+IiBcCisgICAgICAg
ICAgICAgICAgICAgICAgICJib2R5LCBpZnJhbWUgeyBtYXJnaW46IDBweDsgYm9yZGVyOiBub25l
OyB9IiBcCisgICAgICAgICAgICAgICAgICAgICI8L3N0eWxlPjwvaGVhZD4iIFwKKyAgICAgICAg
ICAgICAgICAgICAgIjxib2R5PjxpZnJhbWUgd2lkdGg9JzEwMHB4JyBoZWlnaHQ9JzEwMHB4Jy8+
PC9ib2R5PiIgXAorICAgICAgICAgICAgICAgICAiPC9odG1sPiIpOworCisgICAgUVdlYlBhZ2Ug
cGFnZTsKKyAgICBwYWdlLm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0bWwpOworCisgICAgUUxpc3Q8
UVdlYkZyYW1lKj4gZnJhbWVzID0gcGFnZS5tYWluRnJhbWUoKS0+Y2hpbGRGcmFtZXMoKTsKKyAg
ICBRV2ViRnJhbWUgKmZyYW1lID0gZnJhbWVzLmF0KDApOworICAgIFFTdHJpbmcgaW5uZXJIdG1s
KCI8Ym9keSBzdHlsZT0nbWFyZ2luOiAwcHg7Jz48aW1nIHNyYz0ncXJjOi9pbWFnZS5wbmcnLz48
L2JvZHk+Iik7CisKKyAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IHNlY3VyaXR5IG9yaWdpbnMgb2Yg
bG9jYWwgZmlsZXMgY2FuIGxvYWQgbG9jYWwgcmVzb3VyY2VzLgorICAgIC8vIFNvIHdlIHNob3Vs
ZCBzcGVjaWZ5IGJhc2VVcmwgdG8gYmUgYSBsb2NhbCBmaWxlIGluIG9yZGVyIHRvIGdldCBhIHBy
b3BlciBvcmlnaW4uCisgICAgZnJhbWUtPnNldEh0bWwoaW5uZXJIdG1sLCBRVXJsKCJmaWxlOi8v
L3BhdGgvdG8vZmlsZSIpKTsKKyAgICB3YWl0Rm9yU2lnbmFsKGZyYW1lLCBTSUdOQUwobG9hZEZp
bmlzaGVkKGJvb2wpKSwgMjAwKTsKKworICAgIFFQaWN0dXJlIHBpY3R1cmU7CisKKyAgICBRU2l6
ZSBzaXplID0gcGFnZS5tYWluRnJhbWUoKS0+Y29udGVudHNTaXplKCk7CisgICAgcGFnZS5zZXRW
aWV3cG9ydFNpemUoc2l6ZSk7CisKKyAgICAvLyByZW5kZXIgY29udGVudHMgbGF5ZXIgb25seSAo
dGhlIGlmcmFtZSBpcyBzbWFsbGVyIHRoYW4gdGhlIGltYWdlLCBzbyBpdCB3aWxsIGhhdmUgc2Ny
b2xsYmFycykKKyAgICBRUGFpbnRlciBwYWludGVyMSgmcGljdHVyZSk7CisgICAgZnJhbWUtPnJl
bmRlcigmcGFpbnRlcjEsIFFXZWJGcmFtZTo6Q29udGVudHNMYXllcik7CisgICAgcGFpbnRlcjEu
ZW5kKCk7CisKKyAgICBRQ09NUEFSRShzaXplLndpZHRoKCksIHBpY3R1cmUuYm91bmRpbmdSZWN0
KCkud2lkdGgoKSArIGZyYW1lLT5zY3JvbGxCYXJHZW9tZXRyeShRdDo6VmVydGljYWwpLndpZHRo
KCkpOworICAgIFFDT01QQVJFKHNpemUuaGVpZ2h0KCksIHBpY3R1cmUuYm91bmRpbmdSZWN0KCku
aGVpZ2h0KCkgKyBmcmFtZS0+c2Nyb2xsQmFyR2VvbWV0cnkoUXQ6Okhvcml6b250YWwpLmhlaWdo
dCgpKTsKKworICAgIC8vIHJlbmRlciBldmVyeXRoaW5nLCBzaG91bGQgYmUgdGhlIHNpemUgb2Yg
dGhlIGlmcmFtZQorICAgIFFQYWludGVyIHBhaW50ZXIyKCZwaWN0dXJlKTsKKyAgICBmcmFtZS0+
cmVuZGVyKCZwYWludGVyMiwgUVdlYkZyYW1lOjpBbGxMYXllcnMpOworICAgIHBhaW50ZXIyLmVu
ZCgpOworCisgICAgUUNPTVBBUkUoc2l6ZS53aWR0aCgpLCBwaWN0dXJlLmJvdW5kaW5nUmVjdCgp
LndpZHRoKCkpOyAgIC8vIHdpZHRoOiAxMDBweAorICAgIFFDT01QQVJFKHNpemUuaGVpZ2h0KCks
IHBpY3R1cmUuYm91bmRpbmdSZWN0KCkuaGVpZ2h0KCkpOyAvLyBoZWlnaHQ6IDEwMHB4Cit9CisK
KworY2xhc3MgRHVtbXlQYWludEVuZ2luZTogcHVibGljIFFQYWludEVuZ2luZSB7CitwdWJsaWM6
CisKKyAgICBEdW1teVBhaW50RW5naW5lKCkKKyAgICAgICAgOiBRUGFpbnRFbmdpbmUoUVBhaW50
RW5naW5lOjpBbGxGZWF0dXJlcykKKyAgICAgICAgLCByZW5kZXJIaW50cygwKQorICAgIHsKKyAg
ICB9CisKKyAgICBib29sIGJlZ2luKFFQYWludERldmljZSopCisgICAgeworICAgICAgICBzZXRB
Y3RpdmUodHJ1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgZW5k
KCkKKyAgICB7CisgICAgICAgIHNldEFjdGl2ZShmYWxzZSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IFFQYWludEVuZ2luZVN0YXRl
JiBzdGF0ZSkKKyAgICB7CisgICAgICAgIHJlbmRlckhpbnRzID0gc3RhdGUucmVuZGVySGludHMo
KTsKKyAgICB9CisKKyAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFFQYWludGVyUGF0aCYpIHsgfQor
ICAgIHZvaWQgZHJhd1BpeG1hcChjb25zdCBRUmVjdEYmLCBjb25zdCBRUGl4bWFwJiwgY29uc3Qg
UVJlY3RGJikgeyB9CisKKyAgICBRUGFpbnRFbmdpbmU6OlR5cGUgdHlwZSgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UVBhaW50RW5naW5lOjpUeXBlPihRUGFpbnRF
bmdpbmU6OlVzZXIgKyAyKTsKKyAgICB9CisKKyAgICBRUGFpbnRlcjo6UmVuZGVySGludHMgcmVu
ZGVySGludHM7Cit9OworCitjbGFzcyBEdW1teVBhaW50RGV2aWNlOiBwdWJsaWMgUVBhaW50RGV2
aWNlIHsKK3B1YmxpYzoKKyAgICBEdW1teVBhaW50RGV2aWNlKCkKKyAgICAgICAgOiBRUGFpbnRE
ZXZpY2UoKQorICAgICAgICAsIG1fZW5naW5lKG5ldyBEdW1teVBhaW50RW5naW5lKQorICAgIHsK
KyAgICB9CisKKyAgICB+RHVtbXlQYWludERldmljZSgpCisgICAgeworICAgICAgICBkZWxldGUg
bV9lbmdpbmU7CisgICAgfQorCisgICAgUVBhaW50RW5naW5lKiBwYWludEVuZ2luZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9lbmdpbmU7CisgICAgfQorCisgICAgUVBhaW50ZXI6
OlJlbmRlckhpbnRzIHJlbmRlckhpbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2VuZ2luZS0+cmVuZGVySGludHM7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgaW50IG1ldHJp
YyhQYWludERldmljZU1ldHJpYyBtZXRyaWMpIGNvbnN0OworCitwcml2YXRlOgorICAgIER1bW15
UGFpbnRFbmdpbmUqIG1fZW5naW5lOworICAgIGZyaWVuZCBjbGFzcyBEdW1teVBhaW50RW5naW5l
OworfTsKKworCitpbnQgRHVtbXlQYWludERldmljZTo6bWV0cmljKFBhaW50RGV2aWNlTWV0cmlj
IG1ldHJpYykgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1ldHJpYykgeworICAgIGNhc2UgUGRtV2lk
dGg6CisgICAgICAgIHJldHVybiA0MDA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQZG1I
ZWlnaHQ6CisgICAgICAgIHJldHVybiAyMDA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQ
ZG1OdW1Db2xvcnM6CisgICAgICAgIHJldHVybiBJTlRfTUFYOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgUGRtRGVwdGg6CisgICAgICAgIHJldHVybiAzMjsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgdHN0X1FXZWJGcmFtZTo6cmVuZGVySGludHMoKQoreworICAgIFFTdHJpbmcgaHRtbCgi
PGh0bWw+PGJvZHk+PHA+SGVsbG8sIHdvcmxkITwvcD48L2JvZHk+PC9odG1sPiIpOworCisgICAg
UVdlYlBhZ2UgcGFnZTsKKyAgICBwYWdlLm1haW5GcmFtZSgpLT5zZXRIdG1sKGh0bWwpOworICAg
IHBhZ2Uuc2V0Vmlld3BvcnRTaXplKHBhZ2UubWFpbkZyYW1lKCktPmNvbnRlbnRzU2l6ZSgpKTsK
KworICAgIC8vIFdlIHdpbGwgY2FsbCBmcmFtZS0+cmVuZGVyIGFuZCB0cmFwIHRoZSBwYWludCBl
bmdpbmUgc3RhdGUgY2hhbmdlcworICAgIC8vIHRvIGVuc3VyZSB0aGF0IEdyYXBoaWNzQ29udGV4
dCBkb2VzIG5vdCBjbG9iYmVyIHRoZSByZW5kZXIgaGludHMuCisgICAgRHVtbXlQYWludERldmlj
ZSBidWZmZXI7CisgICAgUVBhaW50ZXIgcGFpbnRlcigmYnVmZmVyKTsKKworICAgIHBhaW50ZXIu
c2V0UmVuZGVySGludChRUGFpbnRlcjo6VGV4dEFudGlhbGlhc2luZywgZmFsc2UpOworICAgIHBh
Z2UubWFpbkZyYW1lKCktPnJlbmRlcigmcGFpbnRlcik7CisgICAgUVZFUklGWSghKGJ1ZmZlci5y
ZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlRleHRBbnRpYWxpYXNpbmcpKTsKKyAgICBRVkVSSUZZ
KCEoYnVmZmVyLnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNmb3Jt
KSk7CisgICAgUVZFUklGWSghKGJ1ZmZlci5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OkhpZ2hR
dWFsaXR5QW50aWFsaWFzaW5nKSk7CisKKyAgICBwYWludGVyLnNldFJlbmRlckhpbnQoUVBhaW50
ZXI6OlRleHRBbnRpYWxpYXNpbmcsIHRydWUpOworICAgIHBhZ2UubWFpbkZyYW1lKCktPnJlbmRl
cigmcGFpbnRlcik7CisgICAgUVZFUklGWShidWZmZXIucmVuZGVySGludHMoKSAmIFFQYWludGVy
OjpUZXh0QW50aWFsaWFzaW5nKTsKKyAgICBRVkVSSUZZKCEoYnVmZmVyLnJlbmRlckhpbnRzKCkg
JiBRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNmb3JtKSk7CisgICAgUVZFUklGWSghKGJ1ZmZl
ci5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OkhpZ2hRdWFsaXR5QW50aWFsaWFzaW5nKSk7CisK
KyAgICBwYWludGVyLnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9y
bSwgdHJ1ZSk7CisgICAgcGFnZS5tYWluRnJhbWUoKS0+cmVuZGVyKCZwYWludGVyKTsKKyAgICBR
VkVSSUZZKGJ1ZmZlci5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlRleHRBbnRpYWxpYXNpbmcp
OworICAgIFFWRVJJRlkoYnVmZmVyLnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6U21vb3RoUGl4
bWFwVHJhbnNmb3JtKTsKKyAgICBRVkVSSUZZKCEoYnVmZmVyLnJlbmRlckhpbnRzKCkgJiBRUGFp
bnRlcjo6SGlnaFF1YWxpdHlBbnRpYWxpYXNpbmcpKTsKKworICAgIHBhaW50ZXIuc2V0UmVuZGVy
SGludChRUGFpbnRlcjo6SGlnaFF1YWxpdHlBbnRpYWxpYXNpbmcsIHRydWUpOworICAgIHBhZ2Uu
bWFpbkZyYW1lKCktPnJlbmRlcigmcGFpbnRlcik7CisgICAgUVZFUklGWShidWZmZXIucmVuZGVy
SGludHMoKSAmIFFQYWludGVyOjpUZXh0QW50aWFsaWFzaW5nKTsKKyAgICBRVkVSSUZZKGJ1ZmZl
ci5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9ybSk7CisgICAg
UVZFUklGWShidWZmZXIucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpIaWdoUXVhbGl0eUFudGlh
bGlhc2luZyk7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6c2Nyb2xsUG9zaXRpb24oKQorewor
ICAgIC8vIGVubGFyZ2VkIGltYWdlIGluIGEgc21hbGwgdmlld3BvcnQsIHRvIHByb3Zva2UgdGhl
IHNjcm9sbGJhcnMgdG8gYXBwZWFyCisgICAgUVN0cmluZyBodG1sKCI8aHRtbD48Ym9keT48aW1n
IHNyYz0ncXJjOi9pbWFnZS5wbmcnIGhlaWdodD01MDAgd2lkdGg9NTAwLz48L2JvZHk+PC9odG1s
PiIpOworCisgICAgUVdlYlBhZ2UgcGFnZTsKKyAgICBwYWdlLnNldFZpZXdwb3J0U2l6ZShRU2l6
ZSgyMDAsIDIwMCkpOworCisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7
CisgICAgZnJhbWUtPnNldEh0bWwoaHRtbCk7CisgICAgZnJhbWUtPnNldFNjcm9sbEJhclBvbGlj
eShRdDo6VmVydGljYWwsIFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOworICAgIGZyYW1lLT5zZXRT
Y3JvbGxCYXJQb2xpY3koUXQ6Okhvcml6b250YWwsIFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOwor
CisgICAgLy8gdHJ5IHRvIHNldCB0aGUgc2Nyb2xsIG9mZnNldCBwcm9ncmFtbWF0aWNhbGx5Cisg
ICAgZnJhbWUtPnNldFNjcm9sbFBvc2l0aW9uKFFQb2ludCgyMywgMjkpKTsKKyAgICBRQ09NUEFS
RShmcmFtZS0+c2Nyb2xsUG9zaXRpb24oKS54KCksIDIzKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+
c2Nyb2xsUG9zaXRpb24oKS55KCksIDI5KTsKKworICAgIGludCB4ID0gZnJhbWUtPmV2YWx1YXRl
SmF2YVNjcmlwdCgid2luZG93LnNjcm9sbFgiKS50b0ludCgpOworICAgIGludCB5ID0gZnJhbWUt
PmV2YWx1YXRlSmF2YVNjcmlwdCgid2luZG93LnNjcm9sbFkiKS50b0ludCgpOworICAgIFFDT01Q
QVJFKHgsIDIzKTsKKyAgICBRQ09NUEFSRSh5LCAyOSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFt
ZTo6c2Nyb2xsVG9BbmNob3IoKQoreworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgcGFnZS5zZXRW
aWV3cG9ydFNpemUoUVNpemUoNDgwLCA4MDApKTsKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gcGFn
ZS5tYWluRnJhbWUoKTsKKworICAgIFFTdHJpbmcgaHRtbCgiPGh0bWw+PGJvZHk+PHAgc3R5bGU9
XCJtYXJnaW4tYm90dG9tOiAxNTAwcHg7XCI+SGVsbG8uPC9wPiIKKyAgICAgICAgICAgICAgICAg
IjxwPjxhIGlkPVwiZm9vXCI+VGhpczwvYT4gaXMgYW4gYW5jaG9yPC9wPiIKKyAgICAgICAgICAg
ICAgICAgIjxwIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMTUwMHB4O1wiPjxhIGlkPVwiYmFyXCI+
VGhpczwvYT4gaXMgYW5vdGhlciBhbmNob3I8L3A+IgorICAgICAgICAgICAgICAgICAiPC9ib2R5
PjwvaHRtbD4iKTsKKyAgICBmcmFtZS0+c2V0SHRtbChodG1sKTsKKyAgICBmcmFtZS0+c2V0U2Ny
b2xsUG9zaXRpb24oUVBvaW50KDAsIDApKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+c2Nyb2xsUG9z
aXRpb24oKS54KCksIDApOworICAgIFFDT01QQVJFKGZyYW1lLT5zY3JvbGxQb3NpdGlvbigpLnko
KSwgMCk7CisKKyAgICBRV2ViRWxlbWVudCBmb29BbmNob3IgPSBmcmFtZS0+ZmluZEZpcnN0RWxl
bWVudCgiYVtpZD1mb29dIik7CisKKyAgICBmcmFtZS0+c2Nyb2xsVG9BbmNob3IoImZvbyIpOwor
ICAgIFFDT01QQVJFKGZyYW1lLT5zY3JvbGxQb3NpdGlvbigpLnkoKSwgZm9vQW5jaG9yLmdlb21l
dHJ5KCkudG9wKCkpOworCisgICAgZnJhbWUtPnNjcm9sbFRvQW5jaG9yKCJiYXIiKTsKKyAgICBm
cmFtZS0+c2Nyb2xsVG9BbmNob3IoImZvbyIpOworICAgIFFDT01QQVJFKGZyYW1lLT5zY3JvbGxQ
b3NpdGlvbigpLnkoKSwgZm9vQW5jaG9yLmdlb21ldHJ5KCkudG9wKCkpOworCisgICAgZnJhbWUt
PnNjcm9sbFRvQW5jaG9yKCJ0b3AiKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+c2Nyb2xsUG9zaXRp
b24oKS55KCksIDApOworCisgICAgZnJhbWUtPnNjcm9sbFRvQW5jaG9yKCJiYXIiKTsKKyAgICBm
cmFtZS0+c2Nyb2xsVG9BbmNob3IoIm5vdGV4aXN0Iik7CisgICAgUVZFUklGWShmcmFtZS0+c2Ny
b2xsUG9zaXRpb24oKS55KCkgIT0gMCk7Cit9CisKKwordm9pZCB0c3RfUVdlYkZyYW1lOjpzY3Jv
bGxiYXJzT2ZmKCkKK3sKKyAgICBRV2ViVmlldyB2aWV3OworICAgIFFXZWJGcmFtZSogbWFpbkZy
YW1lID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpOworCisgICAgbWFpbkZyYW1lLT5zZXRTY3Jv
bGxCYXJQb2xpY3koUXQ6OlZlcnRpY2FsLCBRdDo6U2Nyb2xsQmFyQWx3YXlzT2ZmKTsKKyAgICBt
YWluRnJhbWUtPnNldFNjcm9sbEJhclBvbGljeShRdDo6SG9yaXpvbnRhbCwgUXQ6OlNjcm9sbEJh
ckFsd2F5c09mZik7CisKKyAgICBRU3RyaW5nIGh0bWwoIjxzY3JpcHQ+IiBcCisgICAgICAgICAg
ICAgICAgICIgICBmdW5jdGlvbiBjaGVja1Njcm9sbGJhcigpIHsiIFwKKyAgICAgICAgICAgICAg
ICAgIiAgICAgICBpZiAoaW5uZXJXaWR0aCA9PT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9m
ZnNldFdpZHRoKSIgXAorICAgICAgICAgICAgICAgICAiICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc3BhbjEnKS5pbm5lclRleHQgPSAnU1VDQ0VTUyc7IiBcCisgICAgICAgICAg
ICAgICAgICIgICAgICAgZWxzZSIgXAorICAgICAgICAgICAgICAgICAiICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3BhbjEnKS5pbm5lclRleHQgPSAnRkFJTCc7IiBcCisgICAg
ICAgICAgICAgICAgICIgICB9IiBcCisgICAgICAgICAgICAgICAgICI8L3NjcmlwdD4iIFwKKyAg
ICAgICAgICAgICAgICAgIjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAiICAgPGRpdiBzdHls
ZT0nbWFyZ2luLXRvcDoxMDAwcHggOyBtYXJnaW4tbGVmdDoxMDAwcHgnPiIgXAorICAgICAgICAg
ICAgICAgICAiICAgICAgIDxhIGlkPSdvZmZzY3JlZW4nIGhyZWY9J2EnPkVuZDwvYT4iIFwKKyAg
ICAgICAgICAgICAgICAgIiAgIDwvZGl2PiIgXAorICAgICAgICAgICAgICAgICAiPHNwYW4gaWQ9
J3NwYW4xJz48L3NwYW4+IiBcCisgICAgICAgICAgICAgICAgICI8L2JvZHk+Iik7CisKKworICAg
IFFTaWduYWxTcHkgbG9hZFNweSgmdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOwor
ICAgIHZpZXcuc2V0SHRtbChodG1sKTsKKyAgICA6OndhaXRGb3JTaWduYWwoJnZpZXcsIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpLCAyMDApOworICAgIFFDT01QQVJFKGxvYWRTcHkuY291bnQo
KSwgMSk7CisKKyAgICBtYWluRnJhbWUtPmV2YWx1YXRlSmF2YVNjcmlwdCgiY2hlY2tTY3JvbGxi
YXIoKTsiKTsKKyAgICBRQ09NUEFSRShtYWluRnJhbWUtPmRvY3VtZW50RWxlbWVudCgpLmZpbmRB
bGwoInNwYW4iKS5hdCgwKS50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJTVUNDRVNTIikpOworfQor
Cit2b2lkIHRzdF9RV2ViRnJhbWU6Omhvcml6b250YWxTY3JvbGxBZnRlckJhY2soKQoreworICAg
IFFXZWJWaWV3IHZpZXc7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHZpZXcucGFnZSgpLT5tYWlu
RnJhbWUoKTsKKyAgICBRU2lnbmFsU3B5IGxvYWRTcHkodmlldy5wYWdlKCksIFNJR05BTChsb2Fk
RmluaXNoZWQoYm9vbCkpKTsgCisKKyAgICB2aWV3LnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0TWF4
aW11bVBhZ2VzSW5DYWNoZSgyKTsKKyAgICBmcmFtZS0+c2V0U2Nyb2xsQmFyUG9saWN5KFF0OjpW
ZXJ0aWNhbCwgUXQ6OlNjcm9sbEJhckFzTmVlZGVkKTsKKyAgICBmcmFtZS0+c2V0U2Nyb2xsQmFy
UG9saWN5KFF0OjpIb3Jpem9udGFsLCBRdDo6U2Nyb2xsQmFyQXNOZWVkZWQpOworCisgICAgdmll
dy5sb2FkKFFVcmwoInFyYzovdGVzdGlmcmFtZTIuaHRtbCIpKTsKKyAgICB2aWV3LnJlc2l6ZSgy
MDAsIDIwMCk7CisgICAgUVRSWV9DT01QQVJFKGxvYWRTcHkuY291bnQoKSwgMSk7CisgICAgUVRS
WV9WRVJJRlkoKGZyYW1lLT5zY3JvbGxCYXJHZW9tZXRyeShRdDo6SG9yaXpvbnRhbCkpLmhlaWdo
dCgpKTsKKworICAgIHZpZXcubG9hZChRVXJsKCJxcmM6L3Rlc3RpZnJhbWUuaHRtbCIpKTsKKyAg
ICBRVFJZX0NPTVBBUkUobG9hZFNweS5jb3VudCgpLCAyKTsKKworICAgIHZpZXcucGFnZSgpLT50
cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpCYWNrKTsKKyAgICBRVFJZX0NPTVBBUkUobG9hZFNweS5j
b3VudCgpLCAzKTsKKyAgICBRVFJZX1ZFUklGWSgoZnJhbWUtPnNjcm9sbEJhckdlb21ldHJ5KFF0
OjpIb3Jpem9udGFsKSkuaGVpZ2h0KCkpOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OmV2YWx1
YXRlV2lsbENhdXNlUmVwYWludCgpCit7CisgICAgUVdlYlZpZXcgdmlldzsKKyAgICBRU3RyaW5n
IGh0bWwoIjxodG1sPjxib2R5PnRvcDxkaXYgaWQ9XCJqdW5rXCIgc3R5bGU9XCJkaXNwbGF5OiBi
bG9jaztcIj4iCisgICAgICAgICAgICAgICAgICAgICJqdW5rPC9kaXY+Ym90dG9tPC9ib2R5Pjwv
aHRtbD4iKTsKKyAgICB2aWV3LnNldEh0bWwoaHRtbCk7CisgICAgdmlldy5zaG93KCk7CisKKyAg
ICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKyAgICB2aWV3LnBhZ2UoKS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgKKyAgICAgICAgImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdqdW5rJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsiKTsKKworICAgIDo6d2Fp
dEZvclNpZ25hbCh2aWV3LnBhZ2UoKSwgU0lHTkFMKHJlcGFpbnRSZXF1ZXN0ZWQoUVJlY3QpKSk7
Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6c2V0Q29udGVudF9kYXRhKCkKK3sKKyAgICBRVGVz
dDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJtaW1lVHlwZSIpOworICAgIFFUZXN0OjphZGRDb2x1bW48
UUJ5dGVBcnJheT4oInRlc3RDb250ZW50cyIpOworICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmlu
Zz4oImV4cGVjdGVkIik7CisKKyAgICBRU3RyaW5nIHN0ciA9IFFTdHJpbmc6OmZyb21VdGY4KCLh
vZXOsc67zr/OvSDPlc6xzrPOteG/ls69IM604b27zr3Osc68zrHOuc6HIM+Ezr/hv6bPhM6/IM6/
4b2UIM68zrUgzrLOu+G9sc+Az4TOtc65Iik7CisgICAgUVRlc3Q6Om5ld1JvdygiVVRGLTggcGxh
aW4gdGV4dCIpIDw8ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiA8PCBzdHIudG9VdGY4KCkg
PDwgc3RyOworCisgICAgUVRleHRDb2RlYyAqdXRmMTYgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5h
bWUoIlVURi0xNiIpOworICAgIGlmICh1dGYxNikKKyAgICAgICAgUVRlc3Q6Om5ld1JvdygiVVRG
LTE2IHBsYWluIHRleHQiKSA8PCAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtMTYiIDw8IHV0ZjE2
LT5mcm9tVW5pY29kZShzdHIpIDw8IHN0cjsKKworICAgIHN0ciA9IFFTdHJpbmc6OmZyb21VdGY4
KCJVbmUgY2hhw65uZSBkZSBjYXJhY3TDqHJlcyDDoCBzYSBmYcOnb24uIik7CisgICAgUVRlc3Q6
Om5ld1JvdygibGF0aW4tMSBwbGFpbiB0ZXh0IikgPDwgInRleHQvcGxhaW47IGNoYXJzZXQ9aXNv
LTg4NTktMSIgPDwgc3RyLnRvTGF0aW4xKCkgPDwgc3RyOworCisKK30KKwordm9pZCB0c3RfUVdl
YkZyYW1lOjpzZXRDb250ZW50KCkKK3sKKyAgICBRRkVUQ0goUVN0cmluZywgbWltZVR5cGUpOwor
ICAgIFFGRVRDSChRQnl0ZUFycmF5LCB0ZXN0Q29udGVudHMpOworICAgIFFGRVRDSChRU3RyaW5n
LCBleHBlY3RlZCk7CisgICAgbV92aWV3LT5zZXRDb250ZW50KHRlc3RDb250ZW50cywgbWltZVR5
cGUpOworICAgIFFXZWJGcmFtZSogbWFpbkZyYW1lID0gbV92aWV3LT5wYWdlKCktPm1haW5GcmFt
ZSgpOworICAgIFFDT01QQVJFKGV4cGVjdGVkICwgbWFpbkZyYW1lLT50b1BsYWluVGV4dCgpKTsK
K30KKworY2xhc3MgQ2FjaGVOZXR3b3JrQWNjZXNzTWFuYWdlciA6IHB1YmxpYyBRTmV0d29ya0Fj
Y2Vzc01hbmFnZXIgeworcHVibGljOgorICAgIENhY2hlTmV0d29ya0FjY2Vzc01hbmFnZXIoUU9i
amVjdCogcGFyZW50ID0gMCkKKyAgICAgICAgOiBRTmV0d29ya0FjY2Vzc01hbmFnZXIocGFyZW50
KQorICAgICAgICAsIG1fbGFzdENhY2hlTG9hZChRTmV0d29ya1JlcXVlc3Q6OlByZWZlck5ldHdv
cmspCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgUU5ldHdvcmtSZXBseSogY3JlYXRlUmVx
dWVzdChPcGVyYXRpb24sIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCYgcmVxdWVzdCwgUUlPRGV2aWNl
KikKKyAgICB7CisgICAgICAgIFFWYXJpYW50IGNhY2hlTG9hZCA9IHJlcXVlc3QuYXR0cmlidXRl
KFFOZXR3b3JrUmVxdWVzdDo6Q2FjaGVMb2FkQ29udHJvbEF0dHJpYnV0ZSk7CisgICAgICAgIGlm
IChjYWNoZUxvYWQuaXNWYWxpZCgpKQorICAgICAgICAgICAgbV9sYXN0Q2FjaGVMb2FkID0gc3Rh
dGljX2Nhc3Q8UU5ldHdvcmtSZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sPihjYWNoZUxvYWQudG9V
SW50KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2xhc3RDYWNoZUxvYWQgPSBRTmV0
d29ya1JlcXVlc3Q6OlByZWZlck5ldHdvcms7IC8vIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgcmV0
dXJuIG5ldyBGYWtlUmVwbHkocmVxdWVzdCwgdGhpcyk7CisgICAgfQorCisgICAgUU5ldHdvcmtS
ZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sIGxhc3RDYWNoZUxvYWQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbGFzdENhY2hlTG9hZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUU5l
dHdvcmtSZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sIG1fbGFzdENhY2hlTG9hZDsKK307CisKK3Zv
aWQgdHN0X1FXZWJGcmFtZTo6c2V0Q2FjaGVMb2FkQ29udHJvbEF0dHJpYnV0ZSgpCit7CisgICAg
UVdlYlBhZ2UgcGFnZTsKKyAgICBDYWNoZU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKiBtYW5hZ2VyID0g
bmV3IENhY2hlTmV0d29ya0FjY2Vzc01hbmFnZXIoJnBhZ2UpOworICAgIHBhZ2Uuc2V0TmV0d29y
a0FjY2Vzc01hbmFnZXIobWFuYWdlcik7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFp
bkZyYW1lKCk7CisKKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVzdChRVXJsKCJodHRwOi8vYWJj
ZGVmLmFiY2RlZi8iKSk7CisKKyAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVl
c3Q6OkNhY2hlTG9hZENvbnRyb2xBdHRyaWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6QWx3YXlzQ2Fj
aGUpOworICAgIGZyYW1lLT5sb2FkKHJlcXVlc3QpOworICAgIFFDT01QQVJFKG1hbmFnZXItPmxh
c3RDYWNoZUxvYWQoKSwgUU5ldHdvcmtSZXF1ZXN0OjpBbHdheXNDYWNoZSk7CisKKyAgICByZXF1
ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNhY2hlTG9hZENvbnRyb2xBdHRyaWJ1
dGUsIFFOZXR3b3JrUmVxdWVzdDo6UHJlZmVyQ2FjaGUpOworICAgIGZyYW1lLT5sb2FkKHJlcXVl
c3QpOworICAgIFFDT01QQVJFKG1hbmFnZXItPmxhc3RDYWNoZUxvYWQoKSwgUU5ldHdvcmtSZXF1
ZXN0OjpQcmVmZXJDYWNoZSk7CisKKyAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1Jl
cXVlc3Q6OkNhY2hlTG9hZENvbnRyb2xBdHRyaWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6QWx3YXlz
TmV0d29yayk7CisgICAgZnJhbWUtPmxvYWQocmVxdWVzdCk7CisgICAgUUNPTVBBUkUobWFuYWdl
ci0+bGFzdENhY2hlTG9hZCgpLCBRTmV0d29ya1JlcXVlc3Q6OkFsd2F5c05ldHdvcmspOworCisg
ICAgcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9s
QXR0cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6OlByZWZlck5ldHdvcmspOworICAgIGZyYW1lLT5s
b2FkKHJlcXVlc3QpOworICAgIFFDT01QQVJFKG1hbmFnZXItPmxhc3RDYWNoZUxvYWQoKSwgUU5l
dHdvcmtSZXF1ZXN0OjpQcmVmZXJOZXR3b3JrKTsKK30KKwordm9pZCB0c3RfUVdlYkZyYW1lOjpz
ZXRVcmxXaXRoUGVuZGluZ0xvYWRzKCkKK3sKKyAgICBRV2ViUGFnZSBwYWdlOworICAgIHBhZ2Uu
bWFpbkZyYW1lKCktPnNldEh0bWwoIjxpbWcgc3JjPSdkdW1teTonLz4iKTsKKyAgICBwYWdlLm1h
aW5GcmFtZSgpLT5zZXRVcmwoUVVybCgiYWJvdXQ6YmxhbmsiKSk7Cit9CisKK3ZvaWQgdHN0X1FX
ZWJGcmFtZTo6c2V0VXJsV2l0aEZyYWdtZW50X2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1
bW48UVVybD4oInByZXZpb3VzVXJsIik7CisgICAgUVRlc3Q6Om5ld1JvdygiZW1wdHkiKSA8PCBR
VXJsKCk7CisgICAgUVRlc3Q6Om5ld1Jvdygic2FtZSBVUkwgbm8gZnJhZ21lbnQiKSA8PCBRVXJs
KCJxcmM6L3Rlc3QxLmh0bWwiKTsKKyAgICAvLyBTZWUgY29tbWVudHMgaW4gc2V0VXJsU2FtZVVy
bCBhYm91dCB1c2luZyBzZXRVcmwoKSB3aXRoIHRoZSBzYW1lIHVybCgpLgorICAgIFFUZXN0Ojpu
ZXdSb3coInNhbWUgVVJMIHdpdGggc2FtZSBmcmFnbWVudCIpIDw8IFFVcmwoInFyYzovdGVzdDEu
aHRtbCMiKTsKKyAgICBRVGVzdDo6bmV3Um93KCJzYW1lIFVSTCB3aXRoIGRpZmZlcmVudCBmcmFn
bWVudCIpIDw8IFFVcmwoInFyYzovdGVzdDEuaHRtbCNhbm90aGVyRnJhZ21lbnQiKTsKKyAgICBR
VGVzdDo6bmV3Um93KCJhbm90aGVyIFVSTCIpIDw8IFFVcmwoInFyYzovdGVzdDIuaHRtbCIpOwor
fQorCisvLyBCYXNlZCBvbiBidWcgcmVwb3J0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMjcyMwordm9pZCB0c3RfUVdlYkZyYW1lOjpzZXRVcmxXaXRoRnJhZ21lbnQo
KQoreworICAgIFFGRVRDSChRVXJsLCBwcmV2aW91c1VybCk7CisKKyAgICBRV2ViUGFnZSBwYWdl
OworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworCisgICAgaWYgKCFw
cmV2aW91c1VybC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZnJhbWUtPmxvYWQocHJldmlvdXNVcmwp
OworICAgICAgICA6OndhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9v
bCkpKTsKKyAgICAgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCBwcmV2aW91c1VybCk7CisgICAg
fQorCisgICAgUVNpZ25hbFNweSBzcHkoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkp
KTsKKyAgICBjb25zdCBRVXJsIHVybCgicXJjOi90ZXN0MS5odG1sIyIpOworICAgIFFWRVJJRlko
IXVybC5mcmFnbWVudCgpLmlzTnVsbCgpKTsKKworICAgIGZyYW1lLT5zZXRVcmwodXJsKTsKKyAg
ICA6OndhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKwor
ICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCAxKTsKKyAgICBRVkVSSUZZKCFmcmFtZS0+dG9QbGFp
blRleHQoKS5pc0VtcHR5KCkpOworICAgIFFDT01QQVJFKGZyYW1lLT5yZXF1ZXN0ZWRVcmwoKSwg
dXJsKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIHVybCk7Cit9CisKK3ZvaWQgdHN0X1FX
ZWJGcmFtZTo6c2V0VXJsVG9FbXB0eSgpCit7CisgICAgaW50IGV4cGVjdGVkTG9hZEZpbmlzaGVk
Q291bnQgPSAwOworICAgIGNvbnN0IFFVcmwgYWJvdXRCbGFuaygiYWJvdXQ6YmxhbmsiKTsKKyAg
ICBjb25zdCBRVXJsIHVybCgicXJjOi90ZXN0Mi5odG1sIik7CisKKyAgICBRV2ViUGFnZSBwYWdl
OworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworICAgIFFDT01QQVJF
KGZyYW1lLT51cmwoKSwgUVVybCgpKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+cmVxdWVzdGVkVXJs
KCksIFFVcmwoKSk7CisgICAgUUNPTVBBUkUoZnJhbWUtPmJhc2VVcmwoKSwgUVVybCgpKTsKKwor
ICAgIFFTaWduYWxTcHkgc3B5KGZyYW1lLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisK
KyAgICAvLyBTZXQgZXhpc3RpbmcgdXJsCisgICAgZnJhbWUtPnNldFVybCh1cmwpOworICAgIGV4
cGVjdGVkTG9hZEZpbmlzaGVkQ291bnQrKzsKKyAgICA6OndhaXRGb3JTaWduYWwoZnJhbWUsIFNJ
R05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCBl
eHBlY3RlZExvYWRGaW5pc2hlZENvdW50KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIHVy
bCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVybCgpLCB1cmwpOworICAgIFFDT01Q
QVJFKGZyYW1lLT5iYXNlVXJsKCksIHVybCk7CisKKyAgICAvLyBTZXQgZW1wdHkgdXJsCisgICAg
ZnJhbWUtPnNldFVybChRVXJsKCkpOworICAgIGV4cGVjdGVkTG9hZEZpbmlzaGVkQ291bnQrKzsK
KworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCBleHBlY3RlZExvYWRGaW5pc2hlZENvdW50KTsK
KyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIGFib3V0QmxhbmspOworICAgIFFDT01QQVJFKGZy
YW1lLT5yZXF1ZXN0ZWRVcmwoKSwgUVVybCgpKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+YmFzZVVy
bCgpLCBhYm91dEJsYW5rKTsKKworICAgIC8vIFNldCBleGlzdGluZyB1cmwKKyAgICBmcmFtZS0+
c2V0VXJsKHVybCk7CisgICAgZXhwZWN0ZWRMb2FkRmluaXNoZWRDb3VudCsrOworICAgIDo6d2Fp
dEZvclNpZ25hbChmcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworCisgICAgUUNP
TVBBUkUoc3B5LmNvdW50KCksIGV4cGVjdGVkTG9hZEZpbmlzaGVkQ291bnQpOworICAgIFFDT01Q
QVJFKGZyYW1lLT51cmwoKSwgdXJsKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+cmVxdWVzdGVkVXJs
KCksIHVybCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPmJhc2VVcmwoKSwgdXJsKTsKKworICAgIC8v
IExvYWQgZW1wdHkgdXJsCisgICAgZnJhbWUtPmxvYWQoUVVybCgpKTsKKyAgICBleHBlY3RlZExv
YWRGaW5pc2hlZENvdW50Kys7CisKKyAgICBRQ09NUEFSRShzcHkuY291bnQoKSwgZXhwZWN0ZWRM
b2FkRmluaXNoZWRDb3VudCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCBhYm91dEJsYW5r
KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+cmVxdWVzdGVkVXJsKCksIFFVcmwoKSk7CisgICAgUUNP
TVBBUkUoZnJhbWUtPmJhc2VVcmwoKSwgYWJvdXRCbGFuayk7Cit9CisKK3ZvaWQgdHN0X1FXZWJG
cmFtZTo6c2V0VXJsVG9JbnZhbGlkKCkKK3sKKyAgICBRV2ViUGFnZSBwYWdlOworICAgIFFXZWJG
cmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworCisgICAgY29uc3QgUVVybCBpbnZhbGlk
VXJsKCJodHRwOi9leGFtcGxlLmNvbSIpOworICAgIFFWRVJJRlkoIWludmFsaWRVcmwuaXNFbXB0
eSgpKTsKKyAgICBRVkVSSUZZKGludmFsaWRVcmwgIT0gUVVybCgpKTsKKworICAgIC8vIFFXZWJG
cmFtZSB3aWxsIGRvIGl0cyBiZXN0IHRvIGFjY2VwdCB0aGUgVVJMLCBwb3NzaWJsZSBjb252ZXJ0
aW5nIGl0IHRvIGEgdmFsaWQgZXF1aXZhbGVudCBVUkwuCisgICAgY29uc3QgUVVybCB2YWxpZFVy
bCgiaHR0cDovL2V4YW1wbGUuY29tLyIpOworICAgIGZyYW1lLT5zZXRVcmwoaW52YWxpZFVybCk7
CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCB2YWxpZFVybCk7CisgICAgUUNPTVBBUkUoZnJh
bWUtPnJlcXVlc3RlZFVybCgpLCB2YWxpZFVybCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPmJhc2VV
cmwoKSwgdmFsaWRVcmwpOworCisgICAgLy8gUVVybHMgZXF1aXZhbGVudCB0byBRVXJsKCkgd2ls
bCBiZSB0cmVhdGVkIGFzIHN1Y2guCisgICAgY29uc3QgUVVybCBhYm91dEJsYW5rKCJhYm91dDpi
bGFuayIpOworICAgIGNvbnN0IFFVcmwgYW5vdGhlckludmFsaWRVcmwoIjFodHRwOi8vYnVncy53
ZWJraXQub3JnIik7CisgICAgUVZFUklGWSghYW5vdGhlckludmFsaWRVcmwuaXNFbXB0eSgpKTsg
Ly8gYW5kIHRoZXkgYXJlIG5vdCBuZWNlc3NhcmlseSBlbXB0eS4KKyAgICBRVkVSSUZZKCFhbm90
aGVySW52YWxpZFVybC5pc1ZhbGlkKCkpOworICAgIFFDT01QQVJFKGFub3RoZXJJbnZhbGlkVXJs
LnRvRW5jb2RlZCgpLCBRVXJsKCkudG9FbmNvZGVkKCkpOworCisgICAgZnJhbWUtPnNldFVybChh
bm90aGVySW52YWxpZFVybCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCBhYm91dEJsYW5r
KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+cmVxdWVzdGVkVXJsKCkudG9FbmNvZGVkKCksIGFub3Ro
ZXJJbnZhbGlkVXJsLnRvRW5jb2RlZCgpKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+YmFzZVVybCgp
LCBhYm91dEJsYW5rKTsKK30KKwordm9pZCB0c3RfUVdlYkZyYW1lOjpzZXRVcmxIaXN0b3J5KCkK
K3sKKyAgICBjb25zdCBRVXJsIGFib3V0QmxhbmsoImFib3V0OmJsYW5rIik7CisgICAgUVVybCB1
cmw7CisgICAgaW50IGV4cGVjdGVkTG9hZEZpbmlzaGVkQ291bnQgPSAwOworICAgIFFXZWJGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFFTaWduYWxTcHkgc3B5KGZyYW1l
LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisKKyAgICBRQ09NUEFSRShtX3BhZ2UtPmhp
c3RvcnkoKS0+Y291bnQoKSwgMCk7CisKKyAgICBmcmFtZS0+c2V0VXJsKFFVcmwoKSk7CisgICAg
ZXhwZWN0ZWRMb2FkRmluaXNoZWRDb3VudCsrOworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCBl
eHBlY3RlZExvYWRGaW5pc2hlZENvdW50KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIGFi
b3V0QmxhbmspOworICAgIFFDT01QQVJFKGZyYW1lLT5yZXF1ZXN0ZWRVcmwoKSwgUVVybCgpKTsK
KyAgICBRQ09NUEFSRShtX3BhZ2UtPmhpc3RvcnkoKS0+Y291bnQoKSwgMCk7CisKKyAgICB1cmwg
PSBRVXJsKCJodHRwOi8vbm9uLmV4aXN0YW50LyIpOworICAgIGZyYW1lLT5zZXRVcmwodXJsKTsK
KyAgICA6OndhaXRGb3JTaWduYWwobV9wYWdlLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7
CisgICAgZXhwZWN0ZWRMb2FkRmluaXNoZWRDb3VudCsrOworICAgIFFDT01QQVJFKHNweS5jb3Vu
dCgpLCBleHBlY3RlZExvYWRGaW5pc2hlZENvdW50KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJs
KCksIHVybCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVybCgpLCB1cmwpOworICAg
IFFDT01QQVJFKG1fcGFnZS0+aGlzdG9yeSgpLT5jb3VudCgpLCAwKTsKKworICAgIHVybCA9IFFV
cmwoInFyYzovdGVzdDEuaHRtbCIpOworICAgIGZyYW1lLT5zZXRVcmwodXJsKTsKKyAgICA6Ondh
aXRGb3JTaWduYWwobV9wYWdlLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisgICAgZXhw
ZWN0ZWRMb2FkRmluaXNoZWRDb3VudCsrOworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCBleHBl
Y3RlZExvYWRGaW5pc2hlZENvdW50KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIHVybCk7
CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVybCgpLCB1cmwpOworICAgIFFDT01QQVJF
KG1fcGFnZS0+aGlzdG9yeSgpLT5jb3VudCgpLCAxKTsKKworICAgIGZyYW1lLT5zZXRVcmwoUVVy
bCgpKTsKKyAgICBleHBlY3RlZExvYWRGaW5pc2hlZENvdW50Kys7CisgICAgUUNPTVBBUkUoc3B5
LmNvdW50KCksIGV4cGVjdGVkTG9hZEZpbmlzaGVkQ291bnQpOworICAgIFFDT01QQVJFKGZyYW1l
LT51cmwoKSwgYWJvdXRCbGFuayk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVybCgp
LCBRVXJsKCkpOworICAgIFFDT01QQVJFKG1fcGFnZS0+aGlzdG9yeSgpLT5jb3VudCgpLCAxKTsK
KworICAgIC8vIExvYWRpbmcgc2FtZSBwYWdlIGFzIGN1cnJlbnQgaW4gaGlzdG9yeSwgc28gaGlz
dG9yeSBjb3VudCBkb2Vzbid0IGNoYW5nZS4KKyAgICB1cmwgPSBRVXJsKCJxcmM6L3Rlc3QxLmh0
bWwiKTsKKyAgICBmcmFtZS0+c2V0VXJsKHVybCk7CisgICAgOjp3YWl0Rm9yU2lnbmFsKG1fcGFn
ZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIGV4cGVjdGVkTG9hZEZpbmlzaGVk
Q291bnQrKzsKKyAgICBRQ09NUEFSRShzcHkuY291bnQoKSwgZXhwZWN0ZWRMb2FkRmluaXNoZWRD
b3VudCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCB1cmwpOworICAgIFFDT01QQVJFKGZy
YW1lLT5yZXF1ZXN0ZWRVcmwoKSwgdXJsKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPmhpc3Rvcnko
KS0+Y291bnQoKSwgMSk7CisKKyAgICB1cmwgPSBRVXJsKCJxcmM6L3Rlc3QyLmh0bWwiKTsKKyAg
ICBmcmFtZS0+c2V0VXJsKHVybCk7CisgICAgOjp3YWl0Rm9yU2lnbmFsKG1fcGFnZSwgU0lHTkFM
KGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIGV4cGVjdGVkTG9hZEZpbmlzaGVkQ291bnQrKzsK
KyAgICBRQ09NUEFSRShzcHkuY291bnQoKSwgZXhwZWN0ZWRMb2FkRmluaXNoZWRDb3VudCk7Cisg
ICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCB1cmwpOworICAgIFFDT01QQVJFKGZyYW1lLT5yZXF1
ZXN0ZWRVcmwoKSwgdXJsKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPmhpc3RvcnkoKS0+Y291bnQo
KSwgMik7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6c2V0VXJsVXNpbmdTdGF0ZU9iamVjdCgp
Cit7CisgICAgY29uc3QgUVVybCBhYm91dEJsYW5rKCJhYm91dDpibGFuayIpOworICAgIFFVcmwg
dXJsOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFFT
aWduYWxTcHkgdXJsQ2hhbmdlZFNweShmcmFtZSwgU0lHTkFMKHVybENoYW5nZWQoUVVybCkpKTsK
KyAgICBpbnQgZXhwZWN0ZWRVcmxDaGFuZ2VDb3VudCA9IDA7CisKKyAgICBRQ09NUEFSRShtX3Bh
Z2UtPmhpc3RvcnkoKS0+Y291bnQoKSwgMCk7CisKKyAgICB1cmwgPSBRVXJsKCJxcmM6L3Rlc3Qx
Lmh0bWwiKTsKKyAgICBmcmFtZS0+c2V0VXJsKHVybCk7CisgICAgd2FpdEZvclNpZ25hbChtX3Bh
Z2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBleHBlY3RlZFVybENoYW5nZUNv
dW50Kys7CisgICAgUUNPTVBBUkUodXJsQ2hhbmdlZFNweS5jb3VudCgpLCBleHBlY3RlZFVybENo
YW5nZUNvdW50KTsKKyAgICBRQ09NUEFSRShmcmFtZS0+dXJsKCksIHVybCk7CisgICAgUUNPTVBB
UkUobV9wYWdlLT5oaXN0b3J5KCktPmNvdW50KCksIDEpOworCisgICAgZnJhbWUtPmV2YWx1YXRl
SmF2YVNjcmlwdCgid2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsJ3B1c2gnLCAnbmF2aWdh
dGUvdG8vaGVyZScpIik7CisgICAgZXhwZWN0ZWRVcmxDaGFuZ2VDb3VudCsrOworICAgIFFDT01Q
QVJFKHVybENoYW5nZWRTcHkuY291bnQoKSwgZXhwZWN0ZWRVcmxDaGFuZ2VDb3VudCk7CisgICAg
UUNPTVBBUkUoZnJhbWUtPnVybCgpLCBRVXJsKCJxcmM6L25hdmlnYXRlL3RvL2hlcmUiKSk7Cisg
ICAgUUNPTVBBUkUobV9wYWdlLT5oaXN0b3J5KCktPmNvdW50KCksIDIpOworICAgIFFWRVJJRlko
bV9wYWdlLT5oaXN0b3J5KCktPmNhbkdvQmFjaygpKTsKKworICAgIGZyYW1lLT5ldmFsdWF0ZUph
dmFTY3JpcHQoIndpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCdyZXBsYWNlJywgJ2Fu
b3RoZXIvbG9jYXRpb24nKSIpOworICAgIGV4cGVjdGVkVXJsQ2hhbmdlQ291bnQrKzsKKyAgICBR
Q09NUEFSRSh1cmxDaGFuZ2VkU3B5LmNvdW50KCksIGV4cGVjdGVkVXJsQ2hhbmdlQ291bnQpOwor
ICAgIFFDT01QQVJFKGZyYW1lLT51cmwoKSwgUVVybCgicXJjOi9uYXZpZ2F0ZS90by9hbm90aGVy
L2xvY2F0aW9uIikpOworICAgIFFDT01QQVJFKG1fcGFnZS0+aGlzdG9yeSgpLT5jb3VudCgpLCAy
KTsKKyAgICBRVkVSSUZZKCFtX3BhZ2UtPmhpc3RvcnkoKS0+Y2FuR29Gb3J3YXJkKCkpOworICAg
IFFWRVJJRlkobV9wYWdlLT5oaXN0b3J5KCktPmNhbkdvQmFjaygpKTsKKworICAgIGZyYW1lLT5l
dmFsdWF0ZUphdmFTY3JpcHQoIndpbmRvdy5oaXN0b3J5LmJhY2soKSIpOworICAgIFFUZXN0Ojpx
V2FpdCgxMDApOworICAgIGV4cGVjdGVkVXJsQ2hhbmdlQ291bnQrKzsKKyAgICBRQ09NUEFSRSh1
cmxDaGFuZ2VkU3B5LmNvdW50KCksIGV4cGVjdGVkVXJsQ2hhbmdlQ291bnQpOworICAgIFFDT01Q
QVJFKGZyYW1lLT51cmwoKSwgUVVybCgicXJjOi90ZXN0MS5odG1sIikpOworICAgIFFWRVJJRlko
bV9wYWdlLT5oaXN0b3J5KCktPmNhbkdvRm9yd2FyZCgpKTsKKyAgICBRVkVSSUZZKCFtX3BhZ2Ut
Pmhpc3RvcnkoKS0+Y2FuR29CYWNrKCkpOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OnNldFVy
bFNhbWVVcmwoKQoreworICAgIGNvbnN0IFFVcmwgdXJsMSgicXJjOi90ZXN0MS5odG1sIik7Cisg
ICAgY29uc3QgUVVybCB1cmwyKCJxcmM6L3Rlc3QyLmh0bWwiKTsKKworICAgIFFXZWJQYWdlIHBh
Z2U7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgRmFrZU5l
dHdvcmtNYW5hZ2VyKiBuZXR3b3JrTWFuYWdlciA9IG5ldyBGYWtlTmV0d29ya01hbmFnZXIoJnBh
Z2UpOworICAgIHBhZ2Uuc2V0TmV0d29ya0FjY2Vzc01hbmFnZXIobmV0d29ya01hbmFnZXIpOwor
CisgICAgUVNpZ25hbFNweSBzcHkoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsK
KworICAgIGZyYW1lLT5zZXRVcmwodXJsMSk7CisgICAgd2FpdEZvclNpZ25hbChmcmFtZSwgU0lH
TkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIFFWRVJJRlkoZnJhbWUtPnVybCgpICE9IHVy
bDEpOyAvLyBOb3RhIGJlbmU6IG91ciBRTkFNIHJlZGlyZWN0cyB1cmwxIHRvIHVybDIKKyAgICBR
Q09NUEFSRShmcmFtZS0+dXJsKCksIHVybDIpOworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCAx
KTsKKworICAgIGZyYW1lLT5zZXRVcmwodXJsMSk7CisgICAgd2FpdEZvclNpZ25hbChmcmFtZSwg
U0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIFFWRVJJRlkoZnJhbWUtPnVybCgpICE9
IHVybDEpOworICAgIFFDT01QQVJFKGZyYW1lLT51cmwoKSwgdXJsMik7CisgICAgUUNPTVBBUkUo
c3B5LmNvdW50KCksIDIpOworCisgICAgLy8gTm93IGEgY2FzZSB3aXRob3V0IHJlZGlyZWN0LiBU
aGUgZXhpc3RpbmcgYmVoYXZpb3Igd2UgaGF2ZSBmb3Igc2V0VXJsKCkKKyAgICAvLyBpcyBtb3Jl
IGxpa2UgYSAiY2xlYXIoKTsgbG9hZCgpIiwgc28gdGhlIHBhZ2Ugd2lsbCBiZSBsb2FkZWQgYWdh
aW4sIGV2ZW4KKyAgICAvLyBpZiB1cmxUb0JlTG9hZGVkID09IHVybCgpLiBUaGlzIHRlc3Qgc2hv
dWxkIGJlIGNoYW5nZWQgaWYgd2Ugd2FudCB0bworICAgIC8vIG1ha2Ugc2V0VXJsKCkgZWFybHkg
cmV0dXJuIGluIHRoaXMgY2FzZS4KKyAgICBmcmFtZS0+c2V0VXJsKHVybDIpOworICAgIHdhaXRG
b3JTaWduYWwoZnJhbWUsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBRQ09NUEFS
RShmcmFtZS0+dXJsKCksIHVybDIpOworICAgIFFDT01QQVJFKHNweS5jb3VudCgpLCAzKTsKKwor
ICAgIGZyYW1lLT5zZXRVcmwodXJsMSk7CisgICAgd2FpdEZvclNpZ25hbChmcmFtZSwgU0lHTkFM
KGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIFFDT01QQVJFKGZyYW1lLT51cmwoKSwgdXJsMik7
CisgICAgUUNPTVBBUkUoc3B5LmNvdW50KCksIDQpOworfQorCitzdGF0aWMgaW5saW5lIFFVcmwg
ZXh0cmFjdEJhc2VVcmwoY29uc3QgUVVybCYgdXJsKQoreworICAgIHJldHVybiB1cmwucmVzb2x2
ZWQoUVVybCgpKTsKK30KKwordm9pZCB0c3RfUVdlYkZyYW1lOjpzZXRVcmxUaGVuTG9hZHNfZGF0
YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRVXJsPigidXJsIik7CisgICAgUVRlc3Q6OmFk
ZENvbHVtbjxRVXJsPigiYmFzZVVybCIpOworCisgICAgUVRlc3Q6Om5ld1JvdygicmVzb3VyY2Ug
ZmlsZSIpIDw8IFFVcmwoInFyYzovdGVzdDEuaHRtbCIpIDw8IGV4dHJhY3RCYXNlVXJsKFFVcmwo
InFyYzovdGVzdDEuaHRtbCIpKTsKKyAgICBRVGVzdDo6bmV3Um93KCJiYXNlIHNwZWNpZmllZCBp
biBIVE1MIikgPDwgUVVybCgiZGF0YTp0ZXh0L2h0bWwsPGhlYWQ+PGJhc2UgaHJlZj1cImh0dHA6
Ly9kaWZmZXJlbnQuYmFzZS9cIj48L2hlYWQ+IikgPDwgUVVybCgiaHR0cDovL2RpZmZlcmVudC5i
YXNlLyIpOworfQorCit2b2lkIHRzdF9RV2ViRnJhbWU6OnNldFVybFRoZW5Mb2FkcygpCit7Cisg
ICAgUUZFVENIKFFVcmwsIHVybCk7CisgICAgUUZFVENIKFFVcmwsIGJhc2VVcmwpOworICAgIFFX
ZWJGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIFFTaWduYWxTcHkgdXJs
Q2hhbmdlZFNweShmcmFtZSwgU0lHTkFMKHVybENoYW5nZWQoUVVybCkpKTsKKyAgICBRU2lnbmFs
U3B5IHN0YXJ0ZWRTcHkoZnJhbWUsIFNJR05BTChsb2FkU3RhcnRlZCgpKSk7CisgICAgUVNpZ25h
bFNweSBmaW5pc2hlZFNweShmcmFtZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworCisg
ICAgZnJhbWUtPnNldFVybCh1cmwpOworICAgIFFDT01QQVJFKHN0YXJ0ZWRTcHkuY291bnQoKSwg
MSk7CisgICAgOjp3YWl0Rm9yU2lnbmFsKGZyYW1lLCBTSUdOQUwodXJsQ2hhbmdlZChRVXJsKSkp
OworICAgIFFDT01QQVJFKHVybENoYW5nZWRTcHkuY291bnQoKSwgMSk7CisgICAgUVZFUklGWShm
aW5pc2hlZFNweS5hdCgwKS5maXJzdCgpLnRvQm9vbCgpKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+
dXJsKCksIHVybCk7CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVybCgpLCB1cmwpOwor
ICAgIFFDT01QQVJFKGZyYW1lLT5iYXNlVXJsKCksIGJhc2VVcmwpOworCisgICAgY29uc3QgUVVy
bCB1cmxUb0xvYWQxKCJxcmM6L3Rlc3QyLmh0bWwiKTsKKyAgICBjb25zdCBRVXJsIHVybFRvTG9h
ZDIoInFyYzovdGVzdDEuaHRtbCIpOworCisgICAgLy8gSnVzdCBhZnRlciBmaXJzdCBsb2FkLiBV
UkwgZGlkbid0IGNoYW5nZWQgeWV0LgorICAgIGZyYW1lLT5sb2FkKHVybFRvTG9hZDEpOworICAg
IFFDT01QQVJFKHN0YXJ0ZWRTcHkuY291bnQoKSwgMik7CisgICAgUUNPTVBBUkUoZnJhbWUtPnVy
bCgpLCB1cmwpOworICAgIFFDT01QQVJFKGZyYW1lLT5yZXF1ZXN0ZWRVcmwoKSwgdXJsVG9Mb2Fk
MSk7CisgICAgUUNPTVBBUkUoZnJhbWUtPmJhc2VVcmwoKSwgYmFzZVVybCk7CisKKyAgICAvLyBB
ZnRlciBmaXJzdCBVUkwgY2hhbmdlZC4KKyAgICA6OndhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05B
TCh1cmxDaGFuZ2VkKFFVcmwpKSk7CisgICAgUUNPTVBBUkUodXJsQ2hhbmdlZFNweS5jb3VudCgp
LCAyKTsKKyAgICBRVkVSSUZZKGZpbmlzaGVkU3B5LmF0KDEpLmZpcnN0KCkudG9Cb29sKCkpOwor
ICAgIFFDT01QQVJFKGZyYW1lLT51cmwoKSwgdXJsVG9Mb2FkMSk7CisgICAgUUNPTVBBUkUoZnJh
bWUtPnJlcXVlc3RlZFVybCgpLCB1cmxUb0xvYWQxKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+YmFz
ZVVybCgpLCBleHRyYWN0QmFzZVVybCh1cmxUb0xvYWQxKSk7CisKKyAgICAvLyBKdXN0IGFmdGVy
IHNlY29uZCBsb2FkLiBVUkwgZGlkbid0IGNoYW5nZWQgeWV0LgorICAgIGZyYW1lLT5sb2FkKHVy
bFRvTG9hZDIpOworICAgIFFDT01QQVJFKHN0YXJ0ZWRTcHkuY291bnQoKSwgMyk7CisgICAgUUNP
TVBBUkUoZnJhbWUtPnVybCgpLCB1cmxUb0xvYWQxKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+cmVx
dWVzdGVkVXJsKCksIHVybFRvTG9hZDIpOworICAgIFFDT01QQVJFKGZyYW1lLT5iYXNlVXJsKCks
IGV4dHJhY3RCYXNlVXJsKHVybFRvTG9hZDEpKTsKKworICAgIC8vIEFmdGVyIHNlY29uZCBVUkwg
Y2hhbmdlZC4KKyAgICA6OndhaXRGb3JTaWduYWwoZnJhbWUsIFNJR05BTCh1cmxDaGFuZ2VkKFFV
cmwpKSk7CisgICAgUUNPTVBBUkUodXJsQ2hhbmdlZFNweS5jb3VudCgpLCAzKTsKKyAgICBRVkVS
SUZZKGZpbmlzaGVkU3B5LmF0KDIpLmZpcnN0KCkudG9Cb29sKCkpOworICAgIFFDT01QQVJFKGZy
YW1lLT51cmwoKSwgdXJsVG9Mb2FkMik7CisgICAgUUNPTVBBUkUoZnJhbWUtPnJlcXVlc3RlZFVy
bCgpLCB1cmxUb0xvYWQyKTsKKyAgICBRQ09NUEFSRShmcmFtZS0+YmFzZVVybCgpLCBleHRyYWN0
QmFzZVVybCh1cmxUb0xvYWQyKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJGcmFtZTo6bG9hZEZpbmlz
aGVkQWZ0ZXJOb3RGb3VuZEVycm9yKCkKK3sKKyAgICBRV2ViUGFnZSBwYWdlOworICAgIFFXZWJG
cmFtZSogZnJhbWUgPSBwYWdlLm1haW5GcmFtZSgpOworCisgICAgUVNpZ25hbFNweSBzcHkoJnBh
Z2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBGYWtlTmV0d29ya01hbmFnZXIq
IG5ldHdvcmtNYW5hZ2VyID0gbmV3IEZha2VOZXR3b3JrTWFuYWdlcigmcGFnZSk7CisgICAgcGFn
ZS5zZXROZXR3b3JrQWNjZXNzTWFuYWdlcihuZXR3b3JrTWFuYWdlcik7CisKKyAgICBmcmFtZS0+
c2V0VXJsKEZha2VSZXBseTo6dXJsRm9yNDA0RXJyb3JXaXRob3V0Q29udGVudHMpOworICAgIFFU
UllfQ09NUEFSRShzcHkuY291bnQoKSwgMSk7CisgICAgY29uc3QgYm9vbCB3YXNMb2FkT2sgPSBz
cHkuYXQoMCkuYXQoMCkudG9Cb29sKCk7CisgICAgUVZFUklGWSghd2FzTG9hZE9rKTsKK30KKwor
Y2xhc3MgVVJMU2V0dGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1Ymxp
YzoKKyAgICBlbnVtIFNpZ25hbCB7CisgICAgICAgIExvYWRTdGFydGVkLAorICAgICAgICBMb2Fk
RmluaXNoZWQsCisgICAgICAgIFByb3Zpc2lvbmFsTG9hZAorICAgIH07CisKKyAgICBlbnVtIFR5
cGUgeworICAgICAgICBVc2VMb2FkLAorICAgICAgICBVc2VTZXRVcmwKKyAgICB9OworCisgICAg
VVJMU2V0dGVyKFFXZWJGcmFtZSosIFNpZ25hbCwgVHlwZSwgY29uc3QgUVVybCYpOworCitwdWJs
aWMgUV9TTE9UUzoKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQg
ZmluaXNoZWQoKTsKKworcHJpdmF0ZToKKyAgICBRV2ViRnJhbWUqIG1fZnJhbWU7CisgICAgUVVy
bCBtX3VybDsKKyAgICBUeXBlIG1fdHlwZTsKK307CisKK1FfREVDTEFSRV9NRVRBVFlQRShVUkxT
ZXR0ZXI6OlNpZ25hbCkKK1FfREVDTEFSRV9NRVRBVFlQRShVUkxTZXR0ZXI6OlR5cGUpCisKK1VS
TFNldHRlcjo6VVJMU2V0dGVyKFFXZWJGcmFtZSogZnJhbWUsIFNpZ25hbCBzaWduYWwsIFVSTFNl
dHRlcjo6VHlwZSB0eXBlLCBjb25zdCBRVXJsJiB1cmwpCisgICAgOiBtX2ZyYW1lKGZyYW1lKSwg
bV91cmwodXJsKSwgbV90eXBlKHR5cGUpCit7CisgICAgaWYgKHNpZ25hbCA9PSBMb2FkU3RhcnRl
ZCkKKyAgICAgICAgY29ubmVjdChtX2ZyYW1lLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIFNMT1Qo
ZXhlY3V0ZSgpKSk7CisgICAgZWxzZSBpZiAoc2lnbmFsID09IExvYWRGaW5pc2hlZCkKKyAgICAg
ICAgY29ubmVjdChtX2ZyYW1lLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgU0xPVChleGVj
dXRlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbm5lY3QobV9mcmFtZSwgU0lHTkFMKHByb3Zp
c2lvbmFsTG9hZCgpKSwgU0xPVChleGVjdXRlKCkpKTsKK30KKwordm9pZCBVUkxTZXR0ZXI6OmV4
ZWN1dGUoKQoreworICAgIC8vIFdlIHRyYWNrIG9ubHkgdGhlIGZpcnN0IGVtaXNzaW9uLgorICAg
IG1fZnJhbWUtPmRpc2Nvbm5lY3QodGhpcyk7CisgICAgaWYgKG1fdHlwZSA9PSBVUkxTZXR0ZXI6
OlVzZUxvYWQpCisgICAgICAgIG1fZnJhbWUtPmxvYWQobV91cmwpOworICAgIGVsc2UKKyAgICAg
ICAgbV9mcmFtZS0+c2V0VXJsKG1fdXJsKTsKKyAgICBjb25uZWN0KG1fZnJhbWUsIFNJR05BTChs
b2FkRmluaXNoZWQoYm9vbCkpLCBTSUdOQUwoZmluaXNoZWQoKSkpOworfQorCit2b2lkIHRzdF9R
V2ViRnJhbWU6OmxvYWRJblNpZ25hbEhhbmRsZXJzX2RhdGEoKQoreworICAgIFFUZXN0OjphZGRD
b2x1bW48VVJMU2V0dGVyOjpUeXBlPigidHlwZSIpOworICAgIFFUZXN0OjphZGRDb2x1bW48VVJM
U2V0dGVyOjpTaWduYWw+KCJzaWduYWwiKTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPFFVcmw+KCJ1
cmwiKTsKKworICAgIGNvbnN0IFFVcmwgdmFsaWRVcmwoInFyYzovdGVzdDIuaHRtbCIpOworICAg
IGNvbnN0IFFVcmwgaW52YWxpZFVybCgicXJjOi9pbnZhbGlkIik7CisKKyAgICBRVGVzdDo6bmV3
Um93KCJjYWxsIGxvYWQoKSBpbiBsb2FkU3RhcnRlZCgpIGFmdGVyIHZhbGlkIHVybCIpIDw8IFVS
TFNldHRlcjo6VXNlTG9hZCA8PCBVUkxTZXR0ZXI6OkxvYWRTdGFydGVkIDw8IHZhbGlkVXJsOwor
ICAgIFFUZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGluIGxvYWRTdGFydGVkKCkgYWZ0ZXIgaW52
YWxpZCB1cmwiKSA8PCBVUkxTZXR0ZXI6OlVzZUxvYWQgPDwgVVJMU2V0dGVyOjpMb2FkU3RhcnRl
ZCA8PCBpbnZhbGlkVXJsOworICAgIFFUZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGluIGxvYWRG
aW5pc2hlZCgpIGFmdGVyIHZhbGlkIHVybCIpIDw8IFVSTFNldHRlcjo6VXNlTG9hZCA8PCBVUkxT
ZXR0ZXI6OkxvYWRGaW5pc2hlZCA8PCB2YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxs
IGxvYWQoKSBpbiBsb2FkRmluaXNoZWQoKSBhZnRlciBpbnZhbGlkIHVybCIpIDw8IFVSTFNldHRl
cjo6VXNlTG9hZCA8PCBVUkxTZXR0ZXI6OkxvYWRGaW5pc2hlZCA8PCBpbnZhbGlkVXJsOworICAg
IFFUZXN0OjpuZXdSb3coImNhbGwgbG9hZCgpIGluIHByb3Zpc2lvbmFsTG9hZCgpIGFmdGVyIHZh
bGlkIHVybCIpIDw8IFVSTFNldHRlcjo6VXNlTG9hZCA8PCBVUkxTZXR0ZXI6OlByb3Zpc2lvbmFs
TG9hZCA8PCB2YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3Um93KCJjYWxsIGxvYWQoKSBpbiBwcm92
aXNpb25hbExvYWQoKSBhZnRlciBpbnZhbGlkIHVybCIpIDw8IFVSTFNldHRlcjo6VXNlTG9hZCA8
PCBVUkxTZXR0ZXI6OlByb3Zpc2lvbmFsTG9hZCA8PCBpbnZhbGlkVXJsOworCisgICAgUVRlc3Q6
Om5ld1JvdygiY2FsbCBzZXRVcmwoKSBpbiBsb2FkU3RhcnRlZCgpIGFmdGVyIHZhbGlkIHVybCIp
IDw8IFVSTFNldHRlcjo6VXNlU2V0VXJsIDw8IFVSTFNldHRlcjo6TG9hZFN0YXJ0ZWQgPDwgdmFs
aWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2FsbCBzZXRVcmwoKSBpbiBsb2FkU3RhcnRlZCgp
IGFmdGVyIGludmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpVc2VTZXRVcmwgPDwgVVJMU2V0dGVy
OjpMb2FkU3RhcnRlZCA8PCBpbnZhbGlkVXJsOworICAgIFFUZXN0OjpuZXdSb3coImNhbGwgc2V0
VXJsKCkgaW4gbG9hZEZpbmlzaGVkKCkgYWZ0ZXIgdmFsaWQgdXJsIikgPDwgVVJMU2V0dGVyOjpV
c2VTZXRVcmwgPDwgVVJMU2V0dGVyOjpMb2FkRmluaXNoZWQgPDwgdmFsaWRVcmw7CisgICAgUVRl
c3Q6Om5ld1JvdygiY2FsbCBzZXRVcmwoKSBpbiBsb2FkRmluaXNoZWQoKSBhZnRlciBpbnZhbGlk
IHVybCIpIDw8IFVSTFNldHRlcjo6VXNlU2V0VXJsIDw8IFVSTFNldHRlcjo6TG9hZEZpbmlzaGVk
IDw8IGludmFsaWRVcmw7CisgICAgUVRlc3Q6Om5ld1JvdygiY2FsbCBzZXRVcmwoKSBpbiBwcm92
aXNpb25hbExvYWQoKSBhZnRlciB2YWxpZCB1cmwiKSA8PCBVUkxTZXR0ZXI6OlVzZVNldFVybCA8
PCBVUkxTZXR0ZXI6OlByb3Zpc2lvbmFsTG9hZCA8PCB2YWxpZFVybDsKKyAgICBRVGVzdDo6bmV3
Um93KCJjYWxsIHNldFVybCgpIGluIHByb3Zpc2lvbmFsTG9hZCgpIGFmdGVyIGludmFsaWQgdXJs
IikgPDwgVVJMU2V0dGVyOjpVc2VTZXRVcmwgPDwgVVJMU2V0dGVyOjpQcm92aXNpb25hbExvYWQg
PDwgaW52YWxpZFVybDsKK30KKwordm9pZCB0c3RfUVdlYkZyYW1lOjpsb2FkSW5TaWduYWxIYW5k
bGVycygpCit7CisgICAgUUZFVENIKFVSTFNldHRlcjo6VHlwZSwgdHlwZSk7CisgICAgUUZFVENI
KFVSTFNldHRlcjo6U2lnbmFsLCBzaWduYWwpOworICAgIFFGRVRDSChRVXJsLCB1cmwpOworCisg
ICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgY29uc3QgUVVy
bCB1cmxGb3JTZXR0ZXIoInFyYzovdGVzdDEuaHRtbCIpOworICAgIFVSTFNldHRlciBzZXR0ZXIo
ZnJhbWUsIHNpZ25hbCwgdHlwZSwgdXJsRm9yU2V0dGVyKTsKKworICAgIGZyYW1lLT5sb2FkKHVy
bCk7CisgICAgd2FpdEZvclNpZ25hbCgmc2V0dGVyLCBTSUdOQUwoZmluaXNoZWQoKSksIDIwMCk7
CisgICAgUUNPTVBBUkUoZnJhbWUtPnVybCgpLCB1cmxGb3JTZXR0ZXIpOworfQorCitRVEVTVF9N
QUlOKHRzdF9RV2ViRnJhbWUpCisjaW5jbHVkZSAidHN0X3F3ZWJmcmFtZS5tb2MiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLnFyYyBi
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmZyYW1lL3RzdF9xd2ViZnJhbWUucXJjCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhN2QwYjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJmcmFtZS90c3RfcXdlYmZyYW1lLnFyYwpAQCAt
MCwwICsxLDEwIEBACis8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj4KKzxxcmVzb3Vy
Y2UgcHJlZml4PSIvIj4KKzxmaWxlIGFsaWFzPSJpbWFnZS5wbmciPnJlc291cmNlcy9pbWFnZS5w
bmc8L2ZpbGU+Cis8ZmlsZSBhbGlhcz0ic3R5bGUuY3NzIj5yZXNvdXJjZXMvc3R5bGUuY3NzPC9m
aWxlPgorPGZpbGUgYWxpYXM9InRlc3QxLmh0bWwiPnJlc291cmNlcy90ZXN0MS5odG1sPC9maWxl
PgorPGZpbGUgYWxpYXM9InRlc3QyLmh0bWwiPnJlc291cmNlcy90ZXN0Mi5odG1sPC9maWxlPgor
PGZpbGUgYWxpYXM9InRlc3RpZnJhbWUuaHRtbCI+cmVzb3VyY2VzL3Rlc3RpZnJhbWUuaHRtbDwv
ZmlsZT4KKzxmaWxlIGFsaWFzPSJ0ZXN0aWZyYW1lMi5odG1sIj5yZXNvdXJjZXMvdGVzdGlmcmFt
ZTIuaHRtbDwvZmlsZT4KKzwvcXJlc291cmNlPgorPC9SQ0M+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L3F3ZWJoaXN0b3J5LnBybyBiL1NvdXJjZS9XZWJL
aXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvcXdlYmhpc3RvcnkucHJvCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmZmNmM0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L3F3ZWJoaXN0b3J5LnBybwpAQCAtMCwwICsxLDIgQEAK
K2luY2x1ZGUoLi4vdGVzdHMucHJpKQorZXhpc3RzKCQke1RBUkdFVH0ucXJjKTpSRVNPVVJDRVMg
Kz0gJCR7VEFSR0VUfS5xcmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdl
Ymhpc3RvcnkvcmVzb3VyY2VzL3BhZ2UxLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjgyZmE0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlMS5odG1sCkBAIC0wLDAgKzEgQEAKKzx0aXRs
ZT5wYWdlMTwvdGl0bGU+PGJvZHk+PGgxPnBhZ2UxPC9oMT48L2JvZHk+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlMi5odG1sIGIv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS9yZXNvdXJjZXMvcGFnZTIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzA3YmRjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS9yZXNvdXJjZXMvcGFnZTIu
aHRtbApAQCAtMCwwICsxIEBACis8dGl0bGU+cGFnZTI8L3RpdGxlPjxib2R5PjxoMT5wYWdlMjwv
aDE+PC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9y
eS9yZXNvdXJjZXMvcGFnZTMuaHRtbCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3Rv
cnkvcmVzb3VyY2VzL3BhZ2UzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGU1NTQ3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdl
Ymhpc3RvcnkvcmVzb3VyY2VzL3BhZ2UzLmh0bWwKQEAgLTAsMCArMSBAQAorPHRpdGxlPnBhZ2Uz
PC90aXRsZT48Ym9keT48aDE+cGFnZTM8L2gxPjwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvcmVzb3VyY2VzL3BhZ2U0Lmh0bWwgYi9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlNC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNTdhZWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291cmNlcy9wYWdlNC5odG1sCkBA
IC0wLDAgKzEgQEAKKzx0aXRsZT5wYWdlNDwvdGl0bGU+PGJvZHk+PGgxPnBhZ2U0PC9oMT48L2Jv
ZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5L3Jlc291
cmNlcy9wYWdlNS5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS9yZXNv
dXJjZXMvcGFnZTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTkz
NTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9y
eS9yZXNvdXJjZXMvcGFnZTUuaHRtbApAQCAtMCwwICsxIEBACis8dGl0bGU+cGFnZTU8L3RpdGxl
Pjxib2R5PjxoMT5wYWdlNTwvaDE+PC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2ViaGlzdG9yeS9yZXNvdXJjZXMvcGFnZTYuaHRtbCBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcXdlYmhpc3RvcnkvcmVzb3VyY2VzL3BhZ2U2Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzViYmM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvcmVzb3VyY2VzL3BhZ2U2Lmh0bWwKQEAgLTAsMCAr
MSBAQAorPHRpdGxlPnBhZ2U2PC90aXRsZT48Ym9keT48aDE+cGFnZTY8L2gxPjwvYm9keT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0
b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDY0MjVhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS90c3RfcXdl
Ymhpc3RvcnkuY3BwCkBAIC0wLDAgKzEsNTI4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAw
OCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0
PgorI2luY2x1ZGUgPFFBY3Rpb24+CisKKyNpbmNsdWRlICIuLi91dGlsLmgiCisjaW5jbHVkZSAi
cXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2Vidmlldy5oIgorI2luY2x1ZGUgInF3ZWJmcmFtZS5o
IgorI2luY2x1ZGUgInF3ZWJoaXN0b3J5LmgiCisjaW5jbHVkZSAicWRlYnVnLmgiCisKK2NsYXNz
IHRzdF9RV2ViSGlzdG9yeSA6IHB1YmxpYyBRT2JqZWN0Cit7CisgICAgUV9PQkpFQ1QKKworcHVi
bGljOgorICAgIHRzdF9RV2ViSGlzdG9yeSgpOworICAgIHZpcnR1YWwgfnRzdF9RV2ViSGlzdG9y
eSgpOworCitwcm90ZWN0ZWQgOgorICAgIHZvaWQgbG9hZFBhZ2UoaW50IG5yKQorICAgIHsKKyAg
ICAgICAgZnJhbWUtPmxvYWQoUVVybCgicXJjOi9yZXNvdXJjZXMvcGFnZSIgKyBRU3RyaW5nOjpu
dW1iZXIobnIpICsgIi5odG1sIikpOworICAgICAgICBsb2FkRmluaXNoZWRCYXJyaWVyLT5lbnN1
cmVTaWduYWxFbWl0dGVkKCk7CisgICAgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIGlu
aXQoKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQg
dGl0bGUoKTsKKyAgICB2b2lkIGNvdW50KCk7CisgICAgdm9pZCBiYWNrKCk7CisgICAgdm9pZCBm
b3J3YXJkKCk7CisgICAgdm9pZCBpdGVtQXQoKTsKKyAgICB2b2lkIGdvVG9JdGVtKCk7CisgICAg
dm9pZCBpdGVtcygpOworICAgIHZvaWQgc2VyaWFsaXplXzEoKTsgLy9RV2ViSGlzdG9yeSBjb3Vu
dGl0eQorICAgIHZvaWQgc2VyaWFsaXplXzIoKTsgLy9RV2ViSGlzdG9yeSBpbmRleAorICAgIHZv
aWQgc2VyaWFsaXplXzMoKTsgLy9RV2ViSGlzdG9yeUl0ZW0KKyAgICAvLyBUaG9zZSB0ZXN0cyBz
aG91bGRuJ3QgY3Jhc2gKKyAgICB2b2lkIHNhdmVBbmRSZXN0b3JlX2NyYXNoXzEoKTsKKyAgICB2
b2lkIHNhdmVBbmRSZXN0b3JlX2NyYXNoXzIoKTsKKyAgICB2b2lkIHNhdmVBbmRSZXN0b3JlX2Ny
YXNoXzMoKTsKKyAgICB2b2lkIHNhdmVBbmRSZXN0b3JlX2NyYXNoXzQoKTsKKworICAgIHZvaWQg
cG9wUHVzaFN0YXRlX2RhdGEoKTsKKyAgICB2b2lkIHBvcFB1c2hTdGF0ZSgpOworICAgIHZvaWQg
Y2xlYXIoKTsKKyAgICB2b2lkIHJlc3RvcmVJbmNvbXBhdGlibGVWZXJzaW9uMSgpOworCisKK3By
aXZhdGU6CisgICAgUVdlYlBhZ2UqIHBhZ2U7CisgICAgUVdlYkZyYW1lKiBmcmFtZTsKKyAgICBR
V2ViSGlzdG9yeSogaGlzdDsKKyAgICBRU2NvcGVkUG9pbnRlcjxTaWduYWxCYXJyaWVyPiBsb2Fk
RmluaXNoZWRCYXJyaWVyOworICAgIGludCBoaXN0c2l6ZTsKK307CisKK3RzdF9RV2ViSGlzdG9y
eTo6dHN0X1FXZWJIaXN0b3J5KCkKK3sKK30KKwordHN0X1FXZWJIaXN0b3J5Ojp+dHN0X1FXZWJI
aXN0b3J5KCkKK3sKK30KKwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OmluaXQoKQoreworICAgIHBh
Z2UgPSBuZXcgUVdlYlBhZ2UodGhpcyk7CisgICAgZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsK
KyAgICBsb2FkRmluaXNoZWRCYXJyaWVyLnJlc2V0KG5ldyBTaWduYWxCYXJyaWVyKGZyYW1lLCBT
SUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgZm9yIChpbnQgaSA9IDE7aSA8IDY7
aSsrKSB7CisgICAgICAgIGxvYWRQYWdlKGkpOworICAgIH0KKyAgICBoaXN0ID0gcGFnZS0+aGlz
dG9yeSgpOworICAgIGhpc3RzaXplID0gNTsKK30KKwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OmNs
ZWFudXAoKQoreworICAgIGxvYWRGaW5pc2hlZEJhcnJpZXIucmVzZXQoKTsKKyAgICBkZWxldGUg
cGFnZTsKK30KKworLyoqCisgICogQ2hlY2sgUVdlYkhpc3RvcnlJdGVtOjp0aXRsZSgpIG1ldGhv
ZAorICAqLwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OnRpdGxlKCkKK3sKKyAgICBRQ09NUEFSRSho
aXN0LT5jdXJyZW50SXRlbSgpLnRpdGxlKCksIFFTdHJpbmcoInBhZ2U1IikpOworfQorCisvKioK
KyAgKiBDaGVjayBRV2ViSGlzdG9yeTo6Y291bnQoKSBtZXRob2QKKyAgKi8KK3ZvaWQgdHN0X1FX
ZWJIaXN0b3J5Ojpjb3VudCgpCit7CisgICAgUUNPTVBBUkUoaGlzdC0+Y291bnQoKSwgaGlzdHNp
emUpOworfQorCisvKioKKyAgKiBDaGVjayBRV2ViSGlzdG9yeTo6YmFjaygpIG1ldGhvZAorICAq
Lwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OmJhY2soKQoreworICAgIGZvciAoaW50IGkgPSBoaXN0
c2l6ZTtpID4gMTtpLS0pIHsKKyAgICAgICAgUUNPTVBBUkUocGFnZS0+bWFpbkZyYW1lKCktPnRv
UGxhaW5UZXh0KCksIFFTdHJpbmcoInBhZ2UiKSArIFFTdHJpbmc6Om51bWJlcihpKSk7CisgICAg
ICAgIGhpc3QtPmJhY2soKTsKKyAgICAgICAgbG9hZEZpbmlzaGVkQmFycmllci0+ZW5zdXJlU2ln
bmFsRW1pdHRlZCgpOworICAgIH0KKyAgICAvL3RyeSBvbmUgbW9yZSB0aW1lICh0b28gbWFueSku
IGNyYXNoIHRlc3QKKyAgICBoaXN0LT5iYWNrKCk7CisgICAgUUNPTVBBUkUocGFnZS0+bWFpbkZy
YW1lKCktPnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoInBhZ2UxIikpOworfQorCisvKioKKyAgKiBD
aGVjayBRV2ViSGlzdG9yeTo6Zm9yd2FyZCgpIG1ldGhvZAorICAqLwordm9pZCB0c3RfUVdlYkhp
c3Rvcnk6OmZvcndhcmQoKQoreworICAgIC8vcmV3aW5kIGhpc3RvcnkgOi0pCisgICAgd2hpbGUg
KGhpc3QtPmNhbkdvQmFjaygpKSB7CisgICAgICAgIGhpc3QtPmJhY2soKTsKKyAgICAgICAgbG9h
ZEZpbmlzaGVkQmFycmllci0+ZW5zdXJlU2lnbmFsRW1pdHRlZCgpOworICAgIH0KKworICAgIGZv
ciAoaW50IGkgPSAxO2kgPCBoaXN0c2l6ZTtpKyspIHsKKyAgICAgICAgUUNPTVBBUkUocGFnZS0+
bWFpbkZyYW1lKCktPnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoInBhZ2UiKSArIFFTdHJpbmc6Om51
bWJlcihpKSk7CisgICAgICAgIGhpc3QtPmZvcndhcmQoKTsKKyAgICAgICAgbG9hZEZpbmlzaGVk
QmFycmllci0+ZW5zdXJlU2lnbmFsRW1pdHRlZCgpOworICAgIH0KKyAgICAvL3RyeSBvbmUgbW9y
ZSB0aW1lICh0b28gbWFueSkuIGNyYXNoIHRlc3QKKyAgICBoaXN0LT5mb3J3YXJkKCk7CisgICAg
UUNPTVBBUkUocGFnZS0+bWFpbkZyYW1lKCktPnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoInBhZ2Ui
KSArIFFTdHJpbmc6Om51bWJlcihoaXN0c2l6ZSkpOworfQorCisvKioKKyAgKiBDaGVjayBRV2Vi
SGlzdG9yeTo6aXRlbUF0KCkgbWV0aG9kCisgICovCit2b2lkIHRzdF9RV2ViSGlzdG9yeTo6aXRl
bUF0KCkKK3sKKyAgICBmb3IgKGludCBpID0gMTtpIDwgaGlzdHNpemU7aSsrKSB7CisgICAgICAg
IFFDT01QQVJFKGhpc3QtPml0ZW1BdChpIC0gMSkudGl0bGUoKSwgUVN0cmluZygicGFnZSIpICsg
UVN0cmluZzo6bnVtYmVyKGkpKTsKKyAgICAgICAgUVZFUklGWShoaXN0LT5pdGVtQXQoaSAtIDEp
LmlzVmFsaWQoKSk7CisgICAgfQorICAgIC8vY2hlY2sgb3V0IG9mIHJhbmdlIHZhbHVlcworICAg
IFFWRVJJRlkoIWhpc3QtPml0ZW1BdCgtMSkuaXNWYWxpZCgpKTsKKyAgICBRVkVSSUZZKCFoaXN0
LT5pdGVtQXQoaGlzdHNpemUpLmlzVmFsaWQoKSk7Cit9CisKKy8qKgorICAqIENoZWNrIFFXZWJI
aXN0b3J5Ojpnb1RvSXRlbSgpIG1ldGhvZAorICAqLwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6Omdv
VG9JdGVtKCkKK3sKKyAgICBRV2ViSGlzdG9yeUl0ZW0gY3VycmVudCA9IGhpc3QtPmN1cnJlbnRJ
dGVtKCk7CisgICAgaGlzdC0+YmFjaygpOworICAgIGxvYWRGaW5pc2hlZEJhcnJpZXItPmVuc3Vy
ZVNpZ25hbEVtaXR0ZWQoKTsKKyAgICBoaXN0LT5iYWNrKCk7CisgICAgbG9hZEZpbmlzaGVkQmFy
cmllci0+ZW5zdXJlU2lnbmFsRW1pdHRlZCgpOworICAgIFFWRVJJRlkoaGlzdC0+Y3VycmVudEl0
ZW0oKS50aXRsZSgpICE9IGN1cnJlbnQudGl0bGUoKSk7CisgICAgaGlzdC0+Z29Ub0l0ZW0oY3Vy
cmVudCk7CisgICAgbG9hZEZpbmlzaGVkQmFycmllci0+ZW5zdXJlU2lnbmFsRW1pdHRlZCgpOwor
ICAgIFFDT01QQVJFKGhpc3QtPmN1cnJlbnRJdGVtKCkudGl0bGUoKSwgY3VycmVudC50aXRsZSgp
KTsKK30KKworLyoqCisgICogQ2hlY2sgUVdlYkhpc3Rvcnk6Oml0ZW1zKCkgbWV0aG9kCisgICov
Cit2b2lkIHRzdF9RV2ViSGlzdG9yeTo6aXRlbXMoKSAKK3sKKyAgICBRTGlzdDxRV2ViSGlzdG9y
eUl0ZW0+IGl0ZW1zID0gaGlzdC0+aXRlbXMoKTsKKyAgICAvL2NoZWNrIGNvdW50CisgICAgUUNP
TVBBUkUoaGlzdHNpemUsIGl0ZW1zLmNvdW50KCkpOworCisgICAgLy9jaGVjayBvcmRlcgorICAg
IGZvciAoaW50IGkgPSAxO2kgPD0gaGlzdHNpemU7aSsrKSB7CisgICAgICAgIFFDT01QQVJFKGl0
ZW1zLmF0KGkgLSAxKS50aXRsZSgpLCBRU3RyaW5nKCJwYWdlIikgKyBRU3RyaW5nOjpudW1iZXIo
aSkpOworICAgIH0KK30KKworLyoqCisgICogQ2hlY2sgaGlzdG9yeSBzdGF0ZSBhZnRlciBzZXJp
YWxpemF0aW9uIChwaWNrbGUsIHBlcnNpc3RlbnQuLikgbWV0aG9kCisgICogQ2hlY2tzIGhpc3Rv
cnkgc2l6ZSwgaGlzdG9yeSBvcmRlcgorICAqLwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OnNlcmlh
bGl6ZV8xKCkgCit7CisgICAgUUJ5dGVBcnJheSB0bXA7ICAvL2J1ZmZlcgorICAgIFFEYXRhU3Ry
ZWFtIHNhdmUoJnRtcCwgUUlPRGV2aWNlOjpXcml0ZU9ubHkpOyAvL2hlcmUgZGF0YSB3aWxsIGJl
IHNhdmVkCisgICAgUURhdGFTdHJlYW0gbG9hZCgmdG1wLCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsg
Ly9mcm9tIGhlcmUgZGF0YSB3aWxsIGJlIGxvYWRlZAorCisgICAgc2F2ZSA8PCAqaGlzdDsKKyAg
ICBRVkVSSUZZKHNhdmUuc3RhdHVzKCkgPT0gUURhdGFTdHJlYW06Ok9rKTsKKyAgICBRQ09NUEFS
RShoaXN0LT5jb3VudCgpLCBoaXN0c2l6ZSk7CisKKyAgICAvL2NoZWNrIHNpemUgb2YgaGlzdG9y
eQorICAgIC8vbG9hZCBuZXh0IHBhZ2UgdG8gZmluZCBkaWZmZXJlbmNlcworICAgIGxvYWRQYWdl
KDYpOworICAgIFFDT01QQVJFKGhpc3QtPmNvdW50KCksIGhpc3RzaXplICsgMSk7CisgICAgbG9h
ZCA+PiAqaGlzdDsKKyAgICBRVkVSSUZZKGxvYWQuc3RhdHVzKCkgPT0gUURhdGFTdHJlYW06Ok9r
KTsKKyAgICBRQ09NUEFSRShoaXN0LT5jb3VudCgpLCBoaXN0c2l6ZSk7CisKKyAgICAvL2NoZWNr
IG9yZGVyIG9mIGhpc3RvcnlJdGVtcworICAgIFFMaXN0PFFXZWJIaXN0b3J5SXRlbT4gaXRlbXMg
PSBoaXN0LT5pdGVtcygpOworICAgIGZvciAoaW50IGkgPSAxO2kgPD0gaGlzdHNpemU7aSsrKSB7
CisgICAgICAgIFFDT01QQVJFKGl0ZW1zLmF0KGkgLSAxKS50aXRsZSgpLCBRU3RyaW5nKCJwYWdl
IikgKyBRU3RyaW5nOjpudW1iZXIoaSkpOworICAgIH0KK30KKworLyoqCisgICogQ2hlY2sgaGlz
dG9yeSBzdGF0ZSBhZnRlciBzZXJpYWxpemF0aW9uIChwaWNrbGUsIHBlcnNpc3RlbnQuLikgbWV0
aG9kCisgICogQ2hlY2tzIGhpc3RvcnkgY3VycmVudEluZGV4IHZhbHVlCisgICovCit2b2lkIHRz
dF9RV2ViSGlzdG9yeTo6c2VyaWFsaXplXzIoKSAKK3sKKyAgICBRQnl0ZUFycmF5IHRtcDsgIC8v
YnVmZmVyCisgICAgUURhdGFTdHJlYW0gc2F2ZSgmdG1wLCBRSU9EZXZpY2U6OldyaXRlT25seSk7
IC8vaGVyZSBkYXRhIHdpbGwgYmUgc2F2ZWQKKyAgICBRRGF0YVN0cmVhbSBsb2FkKCZ0bXAsIFFJ
T0RldmljZTo6UmVhZE9ubHkpOyAvL2Zyb20gaGVyZSBkYXRhIHdpbGwgYmUgbG9hZGVkCisKKyAg
ICAvLyBGb3JjZSBhICJzYW1lIGRvY3VtZW50IiBuYXZpZ2F0aW9uLgorICAgIGZyYW1lLT5sb2Fk
KGZyYW1lLT51cmwoKS50b1N0cmluZygpICsgUUxhdGluMVN0cmluZygiI2R1bW15QW5jaG9yIikp
OworCisgICAgaW50IGluaXRpYWxDdXJyZW50SW5kZXggPSBoaXN0LT5jdXJyZW50SXRlbUluZGV4
KCk7CisKKyAgICBoaXN0LT5iYWNrKCk7CisgICAgbG9hZEZpbmlzaGVkQmFycmllci0+ZW5zdXJl
U2lnbmFsRW1pdHRlZCgpOworICAgIGhpc3QtPmJhY2soKTsKKyAgICBsb2FkRmluaXNoZWRCYXJy
aWVyLT5lbnN1cmVTaWduYWxFbWl0dGVkKCk7CisgICAgaGlzdC0+YmFjaygpOworICAgIGxvYWRG
aW5pc2hlZEJhcnJpZXItPmVuc3VyZVNpZ25hbEVtaXR0ZWQoKTsKKyAgICAvL2NoZWNrIGlmIGN1
cnJlbnQgaW5kZXggd2FzIGNoYW5nZWQgKG1ha2Ugc3VyZSB0aGF0IGl0IGlzIG5vdCBsYXN0IGl0
ZW0pCisgICAgUVZFUklGWShoaXN0LT5jdXJyZW50SXRlbUluZGV4KCkgIT0gaW5pdGlhbEN1cnJl
bnRJbmRleCk7CisgICAgLy9zYXZlIGN1cnJlbnQgaW5kZXgKKyAgICBpbnQgb2xkQ3VycmVudElu
ZGV4ID0gaGlzdC0+Y3VycmVudEl0ZW1JbmRleCgpOworCisgICAgc2F2ZSA8PCAqaGlzdDsKKyAg
ICBRVkVSSUZZKHNhdmUuc3RhdHVzKCkgPT0gUURhdGFTdHJlYW06Ok9rKTsKKyAgICBsb2FkID4+
ICpoaXN0OworICAgIFFWRVJJRlkobG9hZC5zdGF0dXMoKSA9PSBRRGF0YVN0cmVhbTo6T2spOwor
CisgICAgLy9jaGVjayBjdXJyZW50IGluZGV4CisgICAgUUNPTVBBUkUoaGlzdC0+Y3VycmVudEl0
ZW1JbmRleCgpLCBvbGRDdXJyZW50SW5kZXgpOworCisgICAgaGlzdC0+Zm9yd2FyZCgpOworICAg
IGxvYWRGaW5pc2hlZEJhcnJpZXItPmVuc3VyZVNpZ25hbEVtaXR0ZWQoKTsKKyAgICBoaXN0LT5m
b3J3YXJkKCk7CisgICAgbG9hZEZpbmlzaGVkQmFycmllci0+ZW5zdXJlU2lnbmFsRW1pdHRlZCgp
OworICAgIGhpc3QtPmZvcndhcmQoKTsKKyAgICBsb2FkRmluaXNoZWRCYXJyaWVyLT5lbnN1cmVT
aWduYWxFbWl0dGVkKCk7CisgICAgUUNPTVBBUkUoaGlzdC0+Y3VycmVudEl0ZW1JbmRleCgpLCBp
bml0aWFsQ3VycmVudEluZGV4KTsKK30KKworLyoqCisgICogQ2hlY2sgaGlzdG9yeSBzdGF0ZSBh
ZnRlciBzZXJpYWxpemF0aW9uIChwaWNrbGUsIHBlcnNpc3RlbnQuLikgbWV0aG9kCisgICogQ2hl
Y2tzIFFXZWJIaXN0b3J5SXRlbSBwdWJsaWMgcHJvcGVydHkgYWZ0ZXIgc2VyaWFsaXphdGlvbgor
ICAqLwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OnNlcmlhbGl6ZV8zKCkgCit7CisgICAgUUJ5dGVB
cnJheSB0bXA7ICAvL2J1ZmZlcgorICAgIFFEYXRhU3RyZWFtIHNhdmUoJnRtcCwgUUlPRGV2aWNl
OjpXcml0ZU9ubHkpOyAvL2hlcmUgZGF0YSB3aWxsIGJlIHNhdmVkCisgICAgUURhdGFTdHJlYW0g
bG9hZCgmdG1wLCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsgLy9mcm9tIGhlcmUgZGF0YSB3aWxsIGJl
IGxvYWRlZAorCisgICAgLy9wcmVwYXJlIHR3byBkaWZmZXJlbnQgaGlzdG9yeSBpdGVtcworICAg
IFFXZWJIaXN0b3J5SXRlbSBhID0gaGlzdC0+Y3VycmVudEl0ZW0oKTsKKyAgICBhLnNldFVzZXJE
YXRhKCJBIC0gdXNlciBkYXRhIik7CisKKyAgICAvL2NoZWNrIHByb3BlcnRpZXMgQkVGT1JFIHNl
cmlhbGl6YXRpb24KKyAgICBRU3RyaW5nIHRpdGxlKGEudGl0bGUoKSk7CisgICAgUURhdGVUaW1l
IGxhc3RWaXNpdGVkKGEubGFzdFZpc2l0ZWQoKSk7CisgICAgUVVybCBvcmlnaW5hbFVybChhLm9y
aWdpbmFsVXJsKCkpOworICAgIFFVcmwgdXJsKGEudXJsKCkpOworICAgIFFWYXJpYW50IHVzZXJE
YXRhKGEudXNlckRhdGEoKSk7CisKKyAgICBzYXZlIDw8ICpoaXN0OworICAgIFFWRVJJRlkoc2F2
ZS5zdGF0dXMoKSA9PSBRRGF0YVN0cmVhbTo6T2spOworICAgIFFWRVJJRlkoIWxvYWQuYXRFbmQo
KSk7CisgICAgaGlzdC0+Y2xlYXIoKTsKKyAgICBRVkVSSUZZKGhpc3QtPmNvdW50KCkgPT0gMSk7
CisgICAgbG9hZCA+PiAqaGlzdDsKKyAgICBRVkVSSUZZKGxvYWQuc3RhdHVzKCkgPT0gUURhdGFT
dHJlYW06Ok9rKTsKKyAgICBRV2ViSGlzdG9yeUl0ZW0gYiA9IGhpc3QtPmN1cnJlbnRJdGVtKCk7
CisKKyAgICAvL2NoZWNrIHByb3BlcnRpZXMgQUZURVIgc2VyaWFsaXphdGlvbgorICAgIFFDT01Q
QVJFKGIudGl0bGUoKSwgdGl0bGUpOworICAgIFFDT01QQVJFKGIubGFzdFZpc2l0ZWQoKSwgbGFz
dFZpc2l0ZWQpOworICAgIFFDT01QQVJFKGIub3JpZ2luYWxVcmwoKSwgb3JpZ2luYWxVcmwpOwor
ICAgIFFDT01QQVJFKGIudXJsKCksIHVybCk7CisgICAgUUNPTVBBUkUoYi51c2VyRGF0YSgpLCB1
c2VyRGF0YSk7CisKKyAgICAvL0NoZWNrIGlmIGFsbCBkYXRhIHdhcyByZWFkCisgICAgUVZFUklG
WShsb2FkLmF0RW5kKCkpOworfQorCitzdGF0aWMgdm9pZCBzYXZlSGlzdG9yeShRV2ViSGlzdG9y
eSogaGlzdG9yeSwgUUJ5dGVBcnJheSogaW4pCit7CisgICAgaW4tPmNsZWFyKCk7CisgICAgUURh
dGFTdHJlYW0gc2F2ZShpbiwgUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworICAgIHNhdmUgPDwgKmhp
c3Rvcnk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3RvcmVIaXN0b3J5KFFXZWJIaXN0b3J5KiBoaXN0
b3J5LCBRQnl0ZUFycmF5KiBvdXQpCit7CisgICAgUURhdGFTdHJlYW0gbG9hZChvdXQsIFFJT0Rl
dmljZTo6UmVhZE9ubHkpOworICAgIGxvYWQgPj4gKmhpc3Rvcnk7Cit9CisKK3ZvaWQgdHN0X1FX
ZWJIaXN0b3J5OjpzYXZlQW5kUmVzdG9yZV9jcmFzaF8xKCkKK3sKKyAgICBRQnl0ZUFycmF5IGJ1
ZmZlcjsKKyAgICBzYXZlSGlzdG9yeShoaXN0LCAmYnVmZmVyKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgNTsgaSsrKSB7CisgICAgICAgIHJlc3RvcmVIaXN0b3J5KGhpc3QsICZidWZm
ZXIpOworICAgICAgICBzYXZlSGlzdG9yeShoaXN0LCAmYnVmZmVyKTsKKyAgICB9Cit9CisKK3Zv
aWQgdHN0X1FXZWJIaXN0b3J5OjpzYXZlQW5kUmVzdG9yZV9jcmFzaF8yKCkKK3sKKyAgICBRQnl0
ZUFycmF5IGJ1ZmZlcjsKKyAgICBzYXZlSGlzdG9yeShoaXN0LCAmYnVmZmVyKTsKKyAgICBRV2Vi
UGFnZSogcGFnZTIgPSBuZXcgUVdlYlBhZ2UodGhpcyk7CisgICAgUVdlYkhpc3RvcnkqIGhpc3Qy
ID0gcGFnZTItPmhpc3RvcnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgNTsgaSsr
KSB7CisgICAgICAgIHJlc3RvcmVIaXN0b3J5KGhpc3QyLCAmYnVmZmVyKTsKKyAgICAgICAgc2F2
ZUhpc3RvcnkoaGlzdDIsICZidWZmZXIpOworICAgIH0KKyAgICBkZWxldGUgcGFnZTI7Cit9CisK
K3ZvaWQgdHN0X1FXZWJIaXN0b3J5OjpzYXZlQW5kUmVzdG9yZV9jcmFzaF8zKCkKK3sKKyAgICBR
Qnl0ZUFycmF5IGJ1ZmZlcjsKKyAgICBzYXZlSGlzdG9yeShoaXN0LCAmYnVmZmVyKTsKKyAgICBR
V2ViUGFnZSogcGFnZTIgPSBuZXcgUVdlYlBhZ2UodGhpcyk7CisgICAgUVdlYkhpc3RvcnkqIGhp
c3QxID0gaGlzdDsKKyAgICBRV2ViSGlzdG9yeSogaGlzdDIgPSBwYWdlMi0+aGlzdG9yeSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgcmVzdG9yZUhp
c3RvcnkoaGlzdDEsICZidWZmZXIpOworICAgICAgICByZXN0b3JlSGlzdG9yeShoaXN0MiwgJmJ1
ZmZlcik7CisgICAgICAgIFFWRVJJRlkoaGlzdDEtPmNvdW50KCkgPT0gaGlzdDItPmNvdW50KCkp
OworICAgICAgICBRVkVSSUZZKGhpc3QxLT5jb3VudCgpID09IGhpc3RzaXplKTsKKyAgICAgICAg
aGlzdDItPmJhY2soKTsKKyAgICAgICAgc2F2ZUhpc3RvcnkoaGlzdDIsICZidWZmZXIpOworICAg
ICAgICBoaXN0Mi0+Y2xlYXIoKTsKKyAgICB9CisgICAgZGVsZXRlIHBhZ2UyOworfQorCit2b2lk
IHRzdF9RV2ViSGlzdG9yeTo6c2F2ZUFuZFJlc3RvcmVfY3Jhc2hfNCgpCit7CisgICAgUUJ5dGVB
cnJheSBidWZmZXI7CisgICAgc2F2ZUhpc3RvcnkoaGlzdCwgJmJ1ZmZlcik7CisKKyAgICBRV2Vi
UGFnZSogcGFnZTIgPSBuZXcgUVdlYlBhZ2UodGhpcyk7CisgICAgLy8gVGhlIGluaXRpYWwgY3Jh
c2ggd2FzIGluIFBhZ2VDYWNoZS4KKyAgICBwYWdlMi0+c2V0dGluZ3MoKS0+c2V0TWF4aW11bVBh
Z2VzSW5DYWNoZSgzKTsKKworICAgIC8vIExvYWQgdGhlIGhpc3RvcnkgaW4gYSBuZXcgcGFnZSwg
d2FpdGluZyBmb3IgdGhlIGxvYWQgdG8gZmluaXNoLgorICAgIFFFdmVudExvb3Agd2FpdEZvckxv
YWRGaW5pc2hlZDsKKyAgICBRT2JqZWN0Ojpjb25uZWN0KHBhZ2UyLCBTSUdOQUwobG9hZEZpbmlz
aGVkKGJvb2wpKSwgJndhaXRGb3JMb2FkRmluaXNoZWQsIFNMT1QocXVpdCgpKSwgUXQ6OlF1ZXVl
ZENvbm5lY3Rpb24pOworICAgIFFEYXRhU3RyZWFtIGxvYWQoJmJ1ZmZlciwgUUlPRGV2aWNlOjpS
ZWFkT25seSk7CisgICAgbG9hZCA+PiAqcGFnZTItPmhpc3RvcnkoKTsKKyAgICB3YWl0Rm9yTG9h
ZEZpbmlzaGVkLmV4ZWMoKTsKKworICAgIGRlbGV0ZSBwYWdlMjsKKyAgICAvLyBHaXZlIHNvbWUg
dGltZSBmb3IgdGhlIFBhZ2VDYWNoZSBjbGVhbnVwIDAtdGltZXIgdG8gZmlyZS4KKyAgICBRVGVz
dDo6cVdhaXQoNTApOworfQorCit2b2lkIHRzdF9RV2ViSGlzdG9yeTo6cG9wUHVzaFN0YXRlX2Rh
dGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInNjcmlwdCIpOworICAgIFFU
ZXN0OjpuZXdSb3coInB1c2hTdGF0ZSIpIDw8ICJoaXN0b3J5LnB1c2hTdGF0ZSgxMjMsIFwiZm9v
XCIpOyI7CisgICAgUVRlc3Q6Om5ld1JvdygicmVwbGFjZVN0YXRlIikgPDwgImhpc3RvcnkucmVw
bGFjZVN0YXRlKFwiYVwiLCBcImJcIik7IjsKKyAgICBRVGVzdDo6bmV3Um93KCJiYWNrIikgPDwg
Imhpc3RvcnkuYmFjaygpOyI7CisgICAgUVRlc3Q6Om5ld1JvdygiZm9yd2FyZCIpIDw8ICJoaXN0
b3J5LmZvcndhcmQoKTsiOworICAgIFFUZXN0OjpuZXdSb3coImNsZWFyU3RhdGUiKSA8PCAiaGlz
dG9yeS5jbGVhclN0YXRlKCk7IjsKK30KKworLyoqIENyYXNoIHRlc3QsIFdlYktpdCBidWcgMzg4
NDAgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0MCkgKi8KK3Zv
aWQgdHN0X1FXZWJIaXN0b3J5Ojpwb3BQdXNoU3RhdGUoKQoreworICAgIFFGRVRDSChRU3RyaW5n
LCBzY3JpcHQpOworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgcGFnZS5tYWluRnJhbWUoKS0+c2V0
SHRtbCgiPGh0bWw+PGJvZHk+bG9uZyBsaXZlIFF0ITwvYm9keT48L2h0bWw+Iik7CisgICAgcGFn
ZS5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KHNjcmlwdCk7Cit9CisKKy8qKiA6OmNs
ZWFyICovCit2b2lkIHRzdF9RV2ViSGlzdG9yeTo6Y2xlYXIoKQoreworICAgIFFCeXRlQXJyYXkg
YnVmZmVyOworCisgICAgUUFjdGlvbiogYWN0aW9uQmFjayA9IHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6QmFjayk7CisgICAgUVZFUklGWShhY3Rpb25CYWNrLT5pc0VuYWJsZWQoKSk7CisgICAgc2F2
ZUhpc3RvcnkoaGlzdCwgJmJ1ZmZlcik7CisgICAgUVZFUklGWShoaXN0LT5jb3VudCgpID4gMSk7
CisgICAgaGlzdC0+Y2xlYXIoKTsKKyAgICBRVkVSSUZZKGhpc3QtPmNvdW50KCkgPT0gMSk7ICAv
LyBMZWF2ZSBjdXJyZW50IGl0ZW0uCisgICAgUVZFUklGWSghYWN0aW9uQmFjay0+aXNFbmFibGVk
KCkpOworCisgICAgUVdlYlBhZ2UqIHBhZ2UyID0gbmV3IFFXZWJQYWdlKHRoaXMpOworICAgIFFX
ZWJIaXN0b3J5KiBoaXN0MiA9IHBhZ2UyLT5oaXN0b3J5KCk7CisgICAgUVZFUklGWShoaXN0Mi0+
Y291bnQoKSA9PSAwKTsKKyAgICBoaXN0Mi0+Y2xlYXIoKTsKKyAgICBRVkVSSUZZKGhpc3QyLT5j
b3VudCgpID09IDApOyAvLyBEbyBub3QgY2hhbmdlIGFueXRoaW5nLgorICAgIGRlbGV0ZSBwYWdl
MjsKK30KKworLy8gc3RhdGljIHZvaWQgZHVtcEN1cnJlbnRWZXJzaW9uKFFXZWJIaXN0b3J5KiBo
aXN0b3J5KQorLy8geworLy8gICAgIFFCeXRlQXJyYXkgYnVmZmVyOworLy8gICAgIHNhdmVIaXN0
b3J5KGhpc3RvcnksICZidWZmZXIpOworLy8gICAgIHByaW50ZigiICAgIHN0YXRpYyBjb25zdCBj
aGFyIHZlcnNpb24xRHVtcFtdID0geyIpOworLy8gICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnVm
ZmVyLnNpemUoKTsgKytpKSB7CisvLyAgICAgICAgIGJvb2wgbmV3TGluZSA9ICEoaSAlIDE1KTsK
Ky8vICAgICAgICAgYm9vbCBsYXN0ID0gaSA9PSBidWZmZXIuc2l6ZSgpIC0gMTsKKy8vICAgICAg
ICAgcHJpbnRmKCIlczB4JS4yeCVzIiwgbmV3TGluZSA/ICJcbiAgICAgICAgIiA6ICIiLCAodW5z
aWduZWQgY2hhcilidWZmZXJbaV0sIGxhc3QgPyAiIiA6ICIsICIpOworLy8gICAgIH0KKy8vICAg
ICBwcmludGYoIn07XG4iKTsKKy8vIH0KKwordm9pZCB0c3RfUVdlYkhpc3Rvcnk6OnJlc3RvcmVJ
bmNvbXBhdGlibGVWZXJzaW9uMSgpCit7CisgICAgLy8gVW5jb21tZW50IHRoaXMgY29kZSB0byBn
ZW5lcmF0ZSBhIGR1bXAgc2ltaWxhciB0byB0aGUgb25lIGJlbG93IHdpdGggdGhlIGN1cnJlbnQg
c3RyZWFtIHZlcnNpb24uCisgICAgLy8gZHVtcEN1cnJlbnRWZXJzaW9uKGhpc3QpOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHZlcnNpb24xRHVtcFtdID0geworICAgICAgICAweDAw
LCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDA1LCAweDAwLCAweDAwLCAw
eDAwLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDMyLCAweDAwLCAweDcxLCAw
eDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNhLCAweDAwLCAweDJmLCAweDAwLCAweDcy
LCAweDAwLCAweDY1LAorICAgICAgICAweDAwLCAweDczLCAweDAwLCAweDZmLCAweDAwLCAweDc1
LCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDY1LCAweDAwLCAweDczLCAweDAwLAor
ICAgICAgICAweDJmLCAweDAwLCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAweDAwLCAw
eDY1LCAweDAwLCAweDMxLCAweDAwLCAweDJlLCAweDAwLCAweDY4LAorICAgICAgICAweDAwLCAw
eDc0LCAweDAwLCAweDZkLCAweDAwLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDAw
LCAweDcwLCAweDAwLCAweDYxLCAweDAwLAorICAgICAgICAweDY3LCAweDAwLCAweDY1LCAweDAw
LCAweDMxLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMyLCAw
eDAwLCAweDcxLCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNhLCAweDAwLAorICAg
ICAgICAweDJmLCAweDAwLCAweDcyLCAweDAwLCAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDZm
LCAweDAwLCAweDc1LCAweDAwLCAweDcyLCAweDAwLCAweDYzLAorICAgICAgICAweDAwLCAweDY1
LCAweDAwLCAweDczLCAweDAwLCAweDJmLCAweDAwLCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAw
eDY3LCAweDAwLCAweDY1LCAweDAwLAorICAgICAgICAweDMxLCAweDAwLCAweDJlLCAweDAwLCAw
eDY4LCAweDAwLCAweDc0LCAweDAwLCAweDZkLCAweDAwLCAweDZjLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLAorICAgICAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAg
ICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDNmLCAw
eGYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDMyLAorICAgICAgICAweDAwLCAweDcxLCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAw
eDNhLCAweDAwLCAweDJmLCAweDAwLCAweDcyLCAweDAwLCAweDY1LCAweDAwLAorICAgICAgICAw
eDczLCAweDAwLCAweDZmLCAweDAwLCAweDc1LCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAw
LCAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDJmLAorICAgICAgICAweDAwLCAweDcwLCAweDAw
LCAweDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1LCAweDAwLCAweDMyLCAweDAwLCAweDJlLCAw
eDAwLCAweDY4LCAweDAwLAorICAgICAgICAweDc0LCAweDAwLCAweDZkLCAweDAwLCAweDZjLCAw
eDAwLCAweDAwLCAweDAwLCAweDBhLCAweDAwLCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3
LAorICAgICAgICAweDAwLCAweDY1LCAweDAwLCAweDMyLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDMyLCAweDAwLCAweDcxLCAweDAwLCAweDcyLCAweDAwLCAw
eDYzLCAweDAwLCAweDNhLCAweDAwLCAweDJmLAorICAgICAgICAweDAwLCAweDcyLCAweDAwLCAw
eDY1LCAweDAwLCAweDczLCAweDAwLCAweDZmLCAweDAwLCAweDc1LCAweDAwLCAweDcyLCAweDAw
LCAweDYzLCAweDAwLAorICAgICAgICAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDJmLCAweDAw
LCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1LCAweDAwLCAweDMyLAor
ICAgICAgICAweDAwLCAweDJlLCAweDAwLCAweDY4LCAweDAwLCAweDc0LCAweDAwLCAweDZkLCAw
eDAwLCAweDZjLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgICAgICAweGZmLCAw
eGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLAorICAgICAgICAweDNmLCAweGYwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAg
ICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMyLCAweDAwLAorICAgICAgICAweDcxLCAweDAw
LCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNhLCAweDAwLCAweDJmLCAweDAwLCAweDcyLCAw
eDAwLCAweDY1LCAweDAwLCAweDczLAorICAgICAgICAweDAwLCAweDZmLCAweDAwLCAweDc1LCAw
eDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDJm
LCAweDAwLAorICAgICAgICAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1
LCAweDAwLCAweDMzLCAweDAwLCAweDJlLCAweDAwLCAweDY4LCAweDAwLCAweDc0LAorICAgICAg
ICAweDAwLCAweDZkLCAweDAwLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDAwLCAw
eDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAweDAwLAorICAgICAgICAweDY1LCAweDAwLCAw
eDMzLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDMyLCAweDAw
LCAweDcxLCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNhLCAweDAwLCAweDJmLCAw
eDAwLAorICAgICAgICAweDcyLCAweDAwLCAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDZmLCAw
eDAwLCAweDc1LCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDY1LAorICAgICAgICAw
eDAwLCAweDczLCAweDAwLCAweDJmLCAweDAwLCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3
LCAweDAwLCAweDY1LCAweDAwLCAweDMzLCAweDAwLAorICAgICAgICAweDJlLCAweDAwLCAweDY4
LCAweDAwLCAweDc0LCAweDAwLCAweDZkLCAweDAwLCAweDZjLCAweGZmLCAweGZmLCAweGZmLCAw
eGZmLCAweGZmLCAweGZmLAorICAgICAgICAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNmLAorICAgICAgICAweGYw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMy
LCAweDAwLCAweDcxLAorICAgICAgICAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNh
LCAweDAwLCAweDJmLCAweDAwLCAweDcyLCAweDAwLCAweDY1LCAweDAwLCAweDczLCAweDAwLAor
ICAgICAgICAweDZmLCAweDAwLCAweDc1LCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAw
eDY1LCAweDAwLCAweDczLCAweDAwLCAweDJmLCAweDAwLCAweDcwLAorICAgICAgICAweDAwLCAw
eDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1LCAweDAwLCAweDM0LCAweDAwLCAweDJlLCAweDAw
LCAweDY4LCAweDAwLCAweDc0LCAweDAwLAorICAgICAgICAweDZkLCAweDAwLCAweDZjLCAweDAw
LCAweDAwLCAweDAwLCAweDBhLCAweDAwLCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAw
eDAwLCAweDY1LAorICAgICAgICAweDAwLCAweDM0LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAg
ICAgICAweDAwLCAweDAwLCAweDMyLCAweDAwLCAweDcxLCAweDAwLCAweDcyLCAweDAwLCAweDYz
LCAweDAwLCAweDNhLCAweDAwLCAweDJmLCAweDAwLCAweDcyLAorICAgICAgICAweDAwLCAweDY1
LCAweDAwLCAweDczLCAweDAwLCAweDZmLCAweDAwLCAweDc1LCAweDAwLCAweDcyLCAweDAwLCAw
eDYzLCAweDAwLCAweDY1LCAweDAwLAorICAgICAgICAweDczLCAweDAwLCAweDJmLCAweDAwLCAw
eDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1LCAweDAwLCAweDM0LCAweDAw
LCAweDJlLAorICAgICAgICAweDAwLCAweDY4LCAweDAwLCAweDc0LCAweDAwLCAweDZkLCAweDAw
LCAweDZjLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgICAg
ICAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDNmLCAweGYwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDMyLCAweDAwLCAweDcxLCAweDAwLAorICAgICAgICAw
eDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNhLCAweDAwLCAweDJmLCAweDAwLCAweDcyLCAweDAw
LCAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDZmLAorICAgICAgICAweDAwLCAweDc1LCAweDAw
LCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDJmLCAw
eDAwLCAweDcwLCAweDAwLAorICAgICAgICAweDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1LCAw
eDAwLCAweDM1LCAweDAwLCAweDJlLCAweDAwLCAweDY4LCAweDAwLCAweDc0LCAweDAwLCAweDZk
LAorICAgICAgICAweDAwLCAweDZjLCAweDAwLCAweDAwLCAweDAwLCAweDBhLCAweDAwLCAweDcw
LCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAweDAwLCAweDY1LCAweDAwLAorICAgICAgICAweDM1
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDMyLCAweDAwLCAw
eDcxLCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDNhLCAweDAwLCAweDJmLCAweDAw
LCAweDcyLCAweDAwLAorICAgICAgICAweDY1LCAweDAwLCAweDczLCAweDAwLCAweDZmLCAweDAw
LCAweDc1LCAweDAwLCAweDcyLCAweDAwLCAweDYzLCAweDAwLCAweDY1LCAweDAwLCAweDczLAor
ICAgICAgICAweDAwLCAweDJmLCAweDAwLCAweDcwLCAweDAwLCAweDYxLCAweDAwLCAweDY3LCAw
eDAwLCAweDY1LCAweDAwLCAweDM1LCAweDAwLCAweDJlLCAweDAwLAorICAgICAgICAweDY4LCAw
eDAwLCAweDc0LCAweDAwLCAweDZkLCAweDAwLCAweDZjLCAweGZmLCAweGZmLCAweGZmLCAweGZm
LCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAg
ICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwfTsKKyAgICBRQnl0ZUFycmF5IHZlcnNpb24x
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHZlcnNpb24xRHVtcCksIHNpemVvZih2ZXJz
aW9uMUR1bXApKTsKKyAgICBRRGF0YVN0cmVhbSBzdHJlYW0oJnZlcnNpb24xLCBRSU9EZXZpY2U6
OlJlYWRPbmx5KTsKKworICAgIC8vIFRoaXMgc2hvdWxkIGZhaWwgdG8gbG9hZCwgdGhlIGhpc3Rv
cnkgc2hvdWxkIGJlIGNsZWFyZWQgYW5kIHRoZSBzdHJlYW0gc2hvdWxkIGJlIGJyb2tlbi4KKyAg
ICBzdHJlYW0gPj4gKmhpc3Q7CisgICAgUVZFUklGWSghaGlzdC0+Y2FuR29CYWNrKCkpOworICAg
IFFWRVJJRlkoIWhpc3QtPmNhbkdvRm9yd2FyZCgpKTsKKyAgICBRVkVSSUZZKHN0cmVhbS5zdGF0
dXMoKSA9PSBRRGF0YVN0cmVhbTo6UmVhZENvcnJ1cHREYXRhKTsKK30KKworUVRFU1RfTUFJTih0
c3RfUVdlYkhpc3RvcnkpCisjaW5jbHVkZSAidHN0X3F3ZWJoaXN0b3J5Lm1vYyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0b3J5LnFy
YyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnkvdHN0X3F3ZWJoaXN0b3J5LnFy
YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTJmNTBhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9yeS90c3RfcXdlYmhpc3Rv
cnkucXJjCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAi
PgorPHFyZXNvdXJjZT4KKyAgICA8ZmlsZT5yZXNvdXJjZXMvcGFnZTEuaHRtbDwvZmlsZT4KKyAg
ICA8ZmlsZT5yZXNvdXJjZXMvcGFnZTIuaHRtbDwvZmlsZT4gICAgCisgICAgPGZpbGU+cmVzb3Vy
Y2VzL3BhZ2UzLmh0bWw8L2ZpbGU+CisgICAgPGZpbGU+cmVzb3VyY2VzL3BhZ2U0Lmh0bWw8L2Zp
bGU+CisgICAgPGZpbGU+cmVzb3VyY2VzL3BhZ2U1Lmh0bWw8L2ZpbGU+CisgICAgPGZpbGU+cmVz
b3VyY2VzL3BhZ2U2Lmh0bWw8L2ZpbGU+Cis8L3FyZXNvdXJjZT4KKzwvUkNDPgorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3ZWJoaXN0
b3J5aW50ZXJmYWNlLnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnlpbnRl
cmZhY2UvcXdlYmhpc3RvcnlpbnRlcmZhY2UucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmZmNmM0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJoaXN0b3J5aW50ZXJmYWNlL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLnBybwpAQCAtMCww
ICsxLDIgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorZXhpc3RzKCQke1RBUkdFVH0ucXJjKTpS
RVNPVVJDRVMgKz0gJCR7VEFSR0VUfS5xcmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvdHN0X3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmhpc3RvcnlpbnRlcmZhY2UvdHN0X3F3ZWJoaXN0
b3J5aW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDU3
MWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViaGlzdG9y
eWludGVyZmFjZS90c3RfcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwCkBAIC0wLDAgKzEsOTYgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworCisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKworI2luY2x1ZGUgPHF3ZWJwYWdlLmg+Cisj
aW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KKyNpbmNsdWRlIDxx
d2ViZWxlbWVudC5oPgorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CisjaW5jbHVk
ZSA8UURlYnVnPgorCitjbGFzcyB0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2UgOiBwdWJsaWMgUU9i
amVjdAoreworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICB0c3RfUVdlYkhpc3RvcnlJbnRl
cmZhY2UoKTsKKyAgICB2aXJ0dWFsIH50c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2UoKTsKKworcHVi
bGljIFFfU0xPVFM6CisgICAgdm9pZCBpbml0KCk7CisgICAgdm9pZCBjbGVhbnVwKCk7CisKK3By
aXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIHZpc2l0ZWRMaW5rcygpOworCitwcml2YXRlOgorCisK
K3ByaXZhdGU6CisgICAgUVdlYlZpZXcqIG1fdmlldzsKKyAgICBRV2ViUGFnZSogbV9wYWdlOwor
fTsKKwordHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlOjp0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2Uo
KQoreworfQorCit0c3RfUVdlYkhpc3RvcnlJbnRlcmZhY2U6On50c3RfUVdlYkhpc3RvcnlJbnRl
cmZhY2UoKQoreworfQorCit2b2lkIHRzdF9RV2ViSGlzdG9yeUludGVyZmFjZTo6aW5pdCgpCit7
CisgICAgbV92aWV3ID0gbmV3IFFXZWJWaWV3KCk7CisgICAgbV9wYWdlID0gbV92aWV3LT5wYWdl
KCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlOjpjbGVhbnVwKCkKK3sKKyAg
ICBkZWxldGUgbV92aWV3OworfQorCitjbGFzcyBGYWtlSGlzdG9yeUltcGxlbWVudGF0aW9uIDog
cHVibGljIFFXZWJIaXN0b3J5SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICB2b2lkIGFkZEhpc3Rv
cnlFbnRyeShjb25zdCBRU3RyaW5nJikge30KKyAgICBib29sIGhpc3RvcnlDb250YWlucyhjb25z
dCBRU3RyaW5nJiB1cmwpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIHVybCA9PSBRTGF0aW4xU3Ry
aW5nKCJodHRwOi8vd3d3LnRyb2xsdGVjaC5jb20vIik7CisgICAgfQorfTsKKworCisvKgorICog
VGVzdCB0aGF0IHZpc2l0ZWQgbGlua3MgYXJlIHByb3Blcmx5IGNvbG9yZWQuIGh0dHA6Ly93d3cu
dHJvbGx0ZWNoLmNvbSBpcyBtYXJrZWQKKyAqIGFzIHZpc2l0ZWQsIHNvIHRoZSBiZWxvdyB3ZWJz
aXRlIHNob3VsZCBoYXZlIGV4YWN0bHkgb25lIGVsZW1lbnQgaW4gdGhlIGE6dmlzaXRlZAorICog
c3RhdGUuCisgKi8KK3ZvaWQgdHN0X1FXZWJIaXN0b3J5SW50ZXJmYWNlOjp2aXNpdGVkTGlua3Mo
KQoreworICAgIFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKG5ldyBG
YWtlSGlzdG9yeUltcGxlbWVudGF0aW9uKTsKKyAgICBtX3ZpZXctPnNldEh0bWwoIjxodG1sPjxz
dHlsZT46bGlua3tjb2xvcjpncmVlbn06dmlzaXRlZHtjb2xvcjpyZWR9PC9zdHlsZT48Ym9keT48
YSBocmVmPSdodHRwOi8vd3d3LnRyb2xsdGVjaC5jb20nIGlkPSd2bGluayc+VHJvbGx0ZWNoPC9h
PjwvYm9keT48L2h0bWw+Iik7CisgICAgUVdlYkVsZW1lbnQgYW5jaG9yID0gbV92aWV3LT5wYWdl
KCktPm1haW5GcmFtZSgpLT5maW5kRmlyc3RFbGVtZW50KCJhW2lkPXZsaW5rXSIpOworICAgIFFT
dHJpbmcgbGlua0NvbG9yID0gYW5jaG9yLnN0eWxlUHJvcGVydHkoImNvbG9yIiwgUVdlYkVsZW1l
bnQ6OkNvbXB1dGVkU3R5bGUpOworICAgIFFDT01QQVJFKGxpbmtDb2xvciwgUVN0cmluZzo6ZnJv
bUxhdGluMSgicmdiKDI1NSwgMCwgMCkiKSk7Cit9CisKK1FURVNUX01BSU4odHN0X1FXZWJIaXN0
b3J5SW50ZXJmYWNlKQorI2luY2x1ZGUgInRzdF9xd2ViaGlzdG9yeWludGVyZmFjZS5tb2MiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJpbnNwZWN0b3IvcXdlYmluc3Bl
Y3Rvci5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJpbnNwZWN0b3IvcXdlYmluc3Bl
Y3Rvci5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2YzQ5NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmluc3BlY3Rvci9xd2Vi
aW5zcGVjdG9yLnBybwpAQCAtMCwwICsxLDIgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorZXhp
c3RzKCQke1RBUkdFVH0ucXJjKTpSRVNPVVJDRVMgKz0gJCR7VEFSR0VUfS5xcmMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmluc3BlY3Rvci90c3RfcXdlYmluc3BlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJpbnNwZWN0b3IvdHN0X3F3ZWJpbnNw
ZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZTYyZjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJpbnNwZWN0b3IvdHN0
X3F3ZWJpbnNwZWN0b3IuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0PgorCisjaW5jbHVkZSA8cWRpci5oPgorI2luY2x1ZGUg
PHF3ZWJpbnNwZWN0b3IuaD4KKyNpbmNsdWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJz
ZXR0aW5ncy5oPgorCitjbGFzcyB0c3RfUVdlYkluc3BlY3RvciA6IHB1YmxpYyBRT2JqZWN0IHsK
KyAgICBRX09CSkVDVAorCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBhdHRhY2hBbmREZXN0
cm95UGFnZUZpcnN0KCk7CisgICAgdm9pZCBhdHRhY2hBbmREZXN0cm95SW5zcGVjdG9yRmlyc3Qo
KTsKKyAgICB2b2lkIGF0dGFjaEFuZERlc3Ryb3lJbnRlcm5hbEluc3BlY3RvcigpOworfTsKKwor
dm9pZCB0c3RfUVdlYkluc3BlY3Rvcjo6YXR0YWNoQW5kRGVzdHJveVBhZ2VGaXJzdCgpCit7Cisg
ICAgLy8gRXh0ZXJuYWwgaW5zcGVjdG9yICsgbWFudWFsIGRlc3RydWN0aW9uIG9mIHBhZ2UgZmly
c3QKKyAgICBRV2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZSgpOworICAgIHBhZ2UtPnNldHRp
bmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQs
IHRydWUpOworICAgIFFXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG5ldyBRV2ViSW5zcGVjdG9y
KCk7CisgICAgaW5zcGVjdG9yLT5zZXRQYWdlKHBhZ2UpOworICAgIHBhZ2UtPnVwZGF0ZVBvc2l0
aW9uRGVwZW5kZW50QWN0aW9ucyhRUG9pbnQoMCwgMCkpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rp
b24oUVdlYlBhZ2U6Okluc3BlY3RFbGVtZW50KTsKKworICAgIGRlbGV0ZSBwYWdlOworICAgIGRl
bGV0ZSBpbnNwZWN0b3I7Cit9CisKK3ZvaWQgdHN0X1FXZWJJbnNwZWN0b3I6OmF0dGFjaEFuZERl
c3Ryb3lJbnNwZWN0b3JGaXJzdCgpCit7CisgICAgLy8gRXh0ZXJuYWwgaW5zcGVjdG9yICsgbWFu
dWFsIGRlc3RydWN0aW9uIG9mIGluc3BlY3RvciBmaXJzdAorICAgIFFXZWJQYWdlKiBwYWdlID0g
bmV3IFFXZWJQYWdlKCk7CisgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJT
ZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CisgICAgUVdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yID0gbmV3IFFXZWJJbnNwZWN0b3IoKTsKKyAgICBpbnNwZWN0b3ItPnNldFBh
Z2UocGFnZSk7CisgICAgcGFnZS0+dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKFFQb2lu
dCgwLCAwKSk7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6SW5zcGVjdEVsZW1l
bnQpOworCisgICAgZGVsZXRlIGluc3BlY3RvcjsKKyAgICBkZWxldGUgcGFnZTsKK30KKwordm9p
ZCB0c3RfUVdlYkluc3BlY3Rvcjo6YXR0YWNoQW5kRGVzdHJveUludGVybmFsSW5zcGVjdG9yKCkK
K3sKKyAgICAvLyBJbnRlcm5hbCBpbnNwZWN0b3IKKyAgICBRV2ViUGFnZSBwYWdlOworICAgIHBh
Z2Uuc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCwgdHJ1ZSk7CisgICAgcGFnZS51cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMo
UVBvaW50KDAsIDApKTsKKyAgICBwYWdlLnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Okluc3BlY3RF
bGVtZW50KTsKK30KKworUVRFU1RfTUFJTih0c3RfUVdlYkluc3BlY3RvcikKKworI2luY2x1ZGUg
InRzdF9xd2ViaW5zcGVjdG9yLm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnBhZ2UvcXdlYnBhZ2UucHJvIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFn
ZS9xd2VicGFnZS5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2YmJl
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcXdl
YnBhZ2UucHJvCkBAIC0wLDAgKzEsMyBAQAoraW5jbHVkZSguLi90ZXN0cy5wcmkpCitleGlzdHMo
JCR7VEFSR0VUfS5xcmMpOlJFU09VUkNFUyArPSAkJHtUQVJHRVR9LnFyYworUVQgKj0gY29yZS1w
cml2YXRlIGd1aS1wcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3Jlc291cmNlcy9jb250ZW50Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3Jlc291cmNlcy9jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODIzYTk4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2NvbnRlbnQuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxodG1s
PgorPGJvZHk+Cis8YT5UaGlzIGlzIHRlc3QgY29udGVudDwvYT4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMv
ZnJhbWVfYS5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMv
ZnJhbWVfYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZjY4ZjEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291
cmNlcy9mcmFtZV9hLmh0bWwKQEAgLTAsMCArMSwyIEBACis8YSBocmVmPSJodHRwOi8vZ29vZ2xl
LmNvbSIgdGFyZ2V0PSJmcmFtZV9iIj48aW1nIHNyYz0iIiB3aWR0aD0xMDAgaGVpZ2h0PTEwMCBh
bHQ9Ikdvb2dsZSI+PC9hPgorPGEgaHJlZj0iaHR0cDovL3lhaG9vLmNvbSIgdGFyZ2V0PSJmcmFt
ZV9iIj48aW1nIHNyYz0iIiB3aWR0aD0xMDAgaGVpZ2h0PTEwMCBhbHQ9IllhaG9vIj48L2E+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9mcmFt
ZV9jLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9mcmFt
ZV9jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhOWNhMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2Vz
L2ZyYW1lX2MuaHRtbApAQCAtMCwwICsxIEBACis8YSBocmVmPSJjb250ZW50Lmh0bWwiIHRhcmdl
dD0iZnJhbWVfYiI+PGltZyBzcmM9IiIgd2lkdGg9MTAwIGhlaWdodD0xMDAgYWx0PSJHb29nbGUi
PjwvYT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3Vy
Y2VzL2ZyYW1lZGluZGV4Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Jl
c291cmNlcy9mcmFtZWRpbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmJlNDUwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3Jlc291cmNlcy9mcmFtZWRpbmRleC5odG1sCkBAIC0wLDAgKzEsNiBAQAorPGh0bWw+
Cis8ZnJhbWVzZXQgY29scz0iMjUlLDc1JSI+CisgICA8ZnJhbWUgc3JjPSJmcmFtZV9jLmh0bWwi
IG5hbWU9ImZyYW1lX2MiPgorICAgPGZyYW1lIHNyYz0iZnJhbWVfYi5odG1sIiBuYW1lPSJmcmFt
ZV9iIj4KKzwvZnJhbWVzZXQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9pZnJhbWUuaHRtbCBiL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2lmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmYxNzAyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9pZnJhbWUuaHRtbApAQCAtMCwwICsxLDYgQEAK
KzxodG1sPgorPGJvZHk+Cis8cD50b3A8L3A+Cis8aWZyYW1lIHNyYz0iaWZyYW1lMi5odG1sIiB3
aWR0aD0iODAlIiBoZWlnaHQ9IjMwJSIvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaWZyYW1lMi5odG1sIGIv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaWZyYW1lMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMTc0MzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3Jlc291cmNlcy9pZnJhbWUyLmh0
bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKzxib2R5PgorPHA+YW5vdGhlciBpZnJhbWU8L3A+
Cis8aWZyYW1lIHNyYz0iaWZyYW1lMy5odG1sIiB3aWR0aD0iODAlIiBoZWlnaHQ9IjMwJSI+PC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2lmcmFtZTMuaHRtbCBiL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2lmcmFtZTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lZDZhYzViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaWZyYW1lMy5odG1sCkBAIC0wLDAgKzEsNSBA
QAorPGh0bWw+Cis8Ym9keT4KKzxwPmlubmVyPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvaW5kZXguaHRt
bCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2luZGV4Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM4ZGYzNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL2luZGV4Lmh0
bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4KKzxmcmFtZXNldCBjb2xzPSIyNSUsNzUlIj4KKyAg
IDxmcmFtZSBzcmM9ImZyYW1lX2EuaHRtbCIgbmFtZT0iZnJhbWVfYSI+CisgICA8ZnJhbWUgc3Jj
PSJmcmFtZV9iLmh0bWwiIG5hbWU9ImZyYW1lX2IiPgorPC9mcmFtZXNldD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL3Njcmlw
dC5odG1sIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvc2NyaXB0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlOTg2NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL3Nj
cmlwdC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGh0bWw+PGhlYWQ+Cis8c2NyaXB0IGxhbmd1YWdl
PSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iZG9lc19ub3RfZXhpc3Qu
anMiPjwvc2NyaXB0PgorPC9oZWFkPjwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL3VzZXIuY3NzIGIvU291cmNlL1dlYktpdC9xdC90
ZXN0cy9xd2VicGFnZS9yZXNvdXJjZXMvdXNlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNGNjYjJmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
dGVzdHMvcXdlYnBhZ2UvcmVzb3VyY2VzL3VzZXIuY3NzCkBAIC0wLDAgKzEsMyBAQAorcCB7Cisg
ICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdodHRwOi8vZG9lcy5ub3QvZXhpc3QucG5nJyk7Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0
cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjUzZTY1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKQEAgLTAsMCArMSwzNTI0IEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgR2lyaXNoIFJhbWFrcmlzaG5hbiA8Z2lyaXNo
QGZvcndhcmRiaWFzLmluPgorICAgIENvcHlyaWdodCAoQykgMjAxMCBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlcgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICIuLi91dGlsLmgiCisjaW5jbHVkZSAiLi4vV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKKyNpbmNsdWRlIDxRQ2xpcGJvYXJk
PgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgorI2luY2x1ZGUg
PFFMaW5lRWRpdD4KKyNpbmNsdWRlIDxRTWFpbldpbmRvdz4KKyNpbmNsdWRlIDxRTWVudT4KKyNp
bmNsdWRlIDxRTWltZURhdGFiYXNlPgorI2luY2x1ZGUgPFFQdXNoQnV0dG9uPgorI2luY2x1ZGUg
PFFTdGF0ZU1hY2hpbmU+CisjaW5jbHVkZSA8UVN0eWxlPgorI2luY2x1ZGUgPFF0VGVzdC9RdFRl
c3Q+CisjaW5jbHVkZSA8UVRleHRDaGFyRm9ybWF0PgorI2luY2x1ZGUgPHByaXZhdGUvcWlucHV0
bWV0aG9kX3AuaD4KKyNpbmNsdWRlIDxxZ3JhcGhpY3NzY2VuZS5oPgorI2luY2x1ZGUgPHFncmFw
aGljc3ZpZXcuaD4KKyNpbmNsdWRlIDxxZ3JhcGhpY3N3ZWJ2aWV3Lmg+CisjaW5jbHVkZSA8cW5l
dHdvcmtjb29raWVqYXIuaD4KKyNpbmNsdWRlIDxxbmV0d29ya3JlcGx5Lmg+CisjaW5jbHVkZSA8
cW5ldHdvcmtyZXF1ZXN0Lmg+CisjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWlucHV0Y29udGV4dC5o
PgorI2luY2x1ZGUgPHF3ZWJkYXRhYmFzZS5oPgorI2luY2x1ZGUgPHF3ZWJlbGVtZW50Lmg+Cisj
aW5jbHVkZSA8cXdlYmZyYW1lLmg+CisjaW5jbHVkZSA8cXdlYmhpc3RvcnkuaD4KKyNpbmNsdWRl
IDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJzZWN1cml0eW9yaWdpbi5oPgorI2luY2x1ZGUg
PHF3ZWJ2aWV3Lmg+CisjaW5jbHVkZSA8cWltYWdld3JpdGVyLmg+CisKK3N0YXRpYyB2b2lkIHJl
bW92ZVJlY3Vyc2l2ZShjb25zdCBRU3RyaW5nJiBkaXJuYW1lKQoreworICAgIFFEaXIgZGlyKGRp
cm5hbWUpOworICAgIFFGaWxlSW5mb0xpc3QgZW50cmllcyhkaXIuZW50cnlJbmZvTGlzdChRRGly
OjpEaXJzIHwgUURpcjo6RmlsZXMgfCBRRGlyOjpOb0RvdEFuZERvdERvdCkpOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZW50cmllcy5jb3VudCgpOyArK2kpCisgICAgICAgIGlmIChlbnRyaWVz
W2ldLmlzRGlyKCkpCisgICAgICAgICAgICByZW1vdmVSZWN1cnNpdmUoZW50cmllc1tpXS5maWxl
UGF0aCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGlyLnJlbW92ZShlbnRyaWVzW2ld
LmZpbGVOYW1lKCkpOworICAgIFFEaXIoKS5ybWRpcihkaXJuYW1lKTsKK30KKworY2xhc3MgVGVz
dElucHV0Q29udGV4dCA6IHB1YmxpYyBRUGxhdGZvcm1JbnB1dENvbnRleHQKK3sKK3B1YmxpYzoK
KyAgICBUZXN0SW5wdXRDb250ZXh0KCkKKyAgICA6IG1fdmlzaWJsZShmYWxzZSkKKyAgICB7Cisg
ICAgICAgIFFJbnB1dE1ldGhvZFByaXZhdGUqIGlucHV0TWV0aG9kUHJpdmF0ZSA9IFFJbnB1dE1l
dGhvZFByaXZhdGU6OmdldChxQXBwLT5pbnB1dE1ldGhvZCgpKTsKKyAgICAgICAgaW5wdXRNZXRo
b2RQcml2YXRlLT50ZXN0Q29udGV4dCA9IHRoaXM7CisgICAgfQorCisgICAgflRlc3RJbnB1dENv
bnRleHQoKQorICAgIHsKKyAgICAgICAgUUlucHV0TWV0aG9kUHJpdmF0ZSogaW5wdXRNZXRob2RQ
cml2YXRlID0gUUlucHV0TWV0aG9kUHJpdmF0ZTo6Z2V0KHFBcHAtPmlucHV0TWV0aG9kKCkpOwor
ICAgICAgICBpbnB1dE1ldGhvZFByaXZhdGUtPnRlc3RDb250ZXh0ID0gMDsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0lucHV0UGFuZWwoKQorICAgIHsKKyAgICAgICAgbV92aXNpYmxl
ID0gdHJ1ZTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGhpZGVJbnB1dFBhbmVsKCkKKyAgICB7
CisgICAgICAgIG1fdmlzaWJsZSA9IGZhbHNlOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
bnB1dFBhbmVsVmlzaWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92aXNpYmxl
OworICAgIH0KKworICAgIGJvb2wgbV92aXNpYmxlOworfTsKKworY2xhc3MgdHN0X1FXZWJQYWdl
IDogcHVibGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgdHN0X1FX
ZWJQYWdlKCk7CisgICAgdmlydHVhbCB+dHN0X1FXZWJQYWdlKCk7CisKK3B1YmxpYyBRX1NMT1RT
OgorICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgY2xlYW51cCgpOworICAgIHZvaWQgY2xlYW51
cEZpbGVzKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIGluaXRUZXN0Q2FzZSgpOwor
ICAgIHZvaWQgY2xlYW51cFRlc3RDYXNlKCk7CisgICAgdm9pZCB0aGlyZFBhcnR5Q29va2llUG9s
aWN5KCk7CisgICAgdm9pZCBjb250ZXh0TWVudUNvcHkoKTsKKyAgICB2b2lkIGNvbnRleHRNZW51
UG9wdWxhdGVkT25jZSgpOworICAgIHZvaWQgYWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoKTsKKyAg
ICB2b2lkIGRvbWFpblNwZWNpZmljS2V5RXZlbnQoKTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uUmVx
dWVzdEpTKCk7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKKyAgICB2b2lkIGFjdGlvblN0YXRl
cygpOworICAgIHZvaWQgcG9wdXBGb3JtU3VibWlzc2lvbigpOworICAgIHZvaWQgYWNjZXB0TmF2
aWdhdGlvblJlcXVlc3RXaXRoTmV3V2luZG93KCk7CisgICAgdm9pZCB1c2VyU3R5bGVTaGVldCgp
OworICAgIHZvaWQgdXNlclN0eWxlU2hlZXRGcm9tTG9jYWxGaWxlVXJsKCk7CisgICAgdm9pZCB1
c2VyU3R5bGVTaGVldEZyb21RcmNVcmwoKTsKKyAgICB2b2lkIGxvYWRIdG1sNVZpZGVvKCk7Cisg
ICAgdm9pZCBtb2RpZmllZCgpOworICAgIHZvaWQgY29udGV4dE1lbnVDcmFzaCgpOworICAgIHZv
aWQgdXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zQ3Jhc2goKTsKKyAgICB2b2lkIGRhdGFi
YXNlKCk7CisgICAgdm9pZCBjcmVhdGVQbHVnaW5XaXRoUGx1Z2luc0VuYWJsZWQoKTsKKyAgICB2
b2lkIGNyZWF0ZVBsdWdpbldpdGhQbHVnaW5zRGlzYWJsZWQoKTsKKyAgICB2b2lkIGRlc3Ryb3lQ
bHVnaW5fZGF0YSgpOworICAgIHZvaWQgZGVzdHJveVBsdWdpbigpOworICAgIHZvaWQgY3JlYXRl
Vmlld2xlc3NQbHVnaW5fZGF0YSgpOworICAgIHZvaWQgY3JlYXRlVmlld2xlc3NQbHVnaW4oKTsK
KyAgICB2b2lkIGdyYXBoaWNzV2lkZ2V0UGx1Z2luKCk7CisgICAgdm9pZCBtdWx0aXBsZVBhZ2VH
cm91cHNBbmRMb2NhbFN0b3JhZ2UoKTsKKyAgICB2b2lkIGN1cnNvck1vdmVtZW50cygpOworICAg
IHZvaWQgdGV4dFNlbGVjdGlvbigpOworICAgIHZvaWQgdGV4dEVkaXRpbmcoKTsKKyAgICB2b2lk
IGJhY2tBY3Rpb25VcGRhdGUoKTsKKyAgICB2b2lkIGZyYW1lQXQoKTsKKyAgICB2b2lkIHJlcXVl
c3RDYWNoZSgpOworICAgIHZvaWQgbG9hZENhY2hlZFBhZ2UoKTsKKyAgICB2b2lkIHByb3RlY3RC
aW5kaW5nc1J1bnRpbWVPYmplY3RzRnJvbUNvbGxlY3RvcigpOworICAgIHZvaWQgbG9jYWxVUkxT
Y2hlbWVzKCk7CisgICAgdm9pZCB0ZXN0T3B0aW9uYWxKU09iamVjdHMoKTsKKyAgICB2b2lkIHRl
c3RMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5KCk7CisgICAgdm9pZCB0ZXN0RW5hYmxlUGVyc2lzdGVu
dFN0b3JhZ2UoKTsKKyAgICB2b2lkIGNvbnNvbGVPdXRwdXQoKTsKKyAgICB2b2lkIGlucHV0TWV0
aG9kc19kYXRhKCk7CisgICAgdm9pZCBpbnB1dE1ldGhvZHMoKTsKKyAgICB2b2lkIGlucHV0TWV0
aG9kc1RleHRGb3JtYXRfZGF0YSgpOworICAgIHZvaWQgaW5wdXRNZXRob2RzVGV4dEZvcm1hdCgp
OworICAgIHZvaWQgZGVmYXVsdFRleHRFbmNvZGluZygpOworICAgIHZvaWQgZXJyb3JQYWdlRXh0
ZW5zaW9uKCk7CisgICAgdm9pZCBlcnJvclBhZ2VFeHRlbnNpb25JbklGcmFtZXMoKTsKKyAgICB2
b2lkIGVycm9yUGFnZUV4dGVuc2lvbkluRnJhbWVzZXQoKTsKKyAgICB2b2lkIGVycm9yUGFnZUV4
dGVuc2lvbkxvYWRGaW5pc2hlZCgpOworICAgIHZvaWQgdXNlckFnZW50QXBwbGljYXRpb25OYW1l
KCk7CisgICAgdm9pZCB1c2VyQWdlbnROZXdsaW5lU3RyaXBwaW5nKCk7CisgICAgdm9pZCB1bmRv
QWN0aW9uSGF2ZUN1c3RvbVRleHQoKTsKKworICAgIHZvaWQgdmlld01vZGVzKCk7CisKKyAgICB2
b2lkIGNyYXNoVGVzdHNfTGF6eUluaXRpYWxpemF0aW9uT2ZNYWluRnJhbWUoKTsKKworICAgIHZv
aWQgc2NyZWVuc2hvdF9kYXRhKCk7CisgICAgdm9pZCBzY3JlZW5zaG90KCk7CisKKyAgICB2b2lk
IGNoYW5nZVZpc2liaWxpdHlTdGF0ZSgpOworCisjaWYgZGVmaW5lZChFTkFCTEVfV0VCR0wpICYm
IEVOQUJMRV9XRUJHTAorICAgIHZvaWQgYWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0
VmlldygpOworICAgIHZvaWQgdW5hY2NlbGVyYXRlZFdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3
KCk7CisjZW5kaWYKKworICAgIHZvaWQgb3JpZ2luYXRpbmdPYmplY3RJbk5ldHdvcmtSZXF1ZXN0
cygpOworICAgIHZvaWQgbmV0d29ya1JlcGx5UGFyZW50RGlkbnRDaGFuZ2UoKTsKKyAgICB2b2lk
IGRlc3Ryb3lRTkFNQmVmb3JlQWJvcnREb2VzbnRDcmFzaCgpOworICAgIHZvaWQgdGVzdEpTUHJv
bXB0KCk7CisgICAgdm9pZCBzaG93TW9kYWxEaWFsb2coKTsKKyAgICB2b2lkIHRlc3RTdG9wU2No
ZWR1bGVkUGFnZVJlZnJlc2goKTsKKyAgICB2b2lkIGZpbmRUZXh0KCk7CisgICAgdm9pZCBzdXBw
b3J0ZWRDb250ZW50VHlwZSgpOworICAgIC8vIFtRdF0gdHN0X1FXZWJQYWdlOjppbmZpbml0ZUxv
b3BKUygpIHRpbWVvdXRzIHdpdGggREZHIEpJVAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTA0MAorICAgIC8vIHZvaWQgaW5maW5pdGVMb29wSlMoKTsK
KyAgICB2b2lkIG5hdmlnYXRvckNvb2tpZUVuYWJsZWQoKTsKKyAgICB2b2lkIGRlbGV0ZVFXZWJW
aWV3VHdpY2UoKTsKKyAgICB2b2lkIHJlbmRlck9uUmVwYWludFJlcXVlc3RlZFNob3VsZE5vdFJl
Y3Vyc2UoKTsKKyAgICB2b2lkIGxvYWRTaWduYWxzT3JkZXJfZGF0YSgpOworICAgIHZvaWQgbG9h
ZFNpZ25hbHNPcmRlcigpOworICAgIHZvaWQgb3BlbldpbmRvd0RlZmF1bHRTaXplKCk7CisgICAg
dm9pZCBjc3NNZWRpYVR5cGVHbG9iYWxTZXR0aW5nKCk7CisgICAgdm9pZCBjc3NNZWRpYVR5cGVQ
YWdlU2V0dGluZygpOworCisjaWZkZWYgUV9PU19NQUMKKyAgICB2b2lkIG1hY0NvcHlVbmljb2Rl
VG9DbGlwYm9hcmQoKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFFXZWJWaWV3KiBtX3ZpZXc7
CisgICAgUVdlYlBhZ2UqIG1fcGFnZTsKKyAgICBRU3RyaW5nIHRtcERpclBhdGgoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgc3RhdGljIFFTdHJpbmcgdG1wZCA9IFFEaXI6OnRlbXBQYXRoKCkgKyAi
L3RzdF9xd2VicGFnZS0iCisgICAgICAgICAgICArIFFEYXRlVGltZTo6Y3VycmVudERhdGVUaW1l
KCkudG9TdHJpbmcoUUxhdGluMVN0cmluZygieXl5eU1NZGRoaG1tc3MiKSk7CisgICAgICAgIHJl
dHVybiB0bXBkOworICAgIH0KK307CisKK3RzdF9RV2ViUGFnZTo6dHN0X1FXZWJQYWdlKCkKK3sK
K30KKwordHN0X1FXZWJQYWdlOjp+dHN0X1FXZWJQYWdlKCkKK3sKK30KKwordm9pZCB0c3RfUVdl
YlBhZ2U6OmluaXQoKQoreworICAgIG1fdmlldyA9IG5ldyBRV2ViVmlldygpOworICAgIG1fcGFn
ZSA9IG1fdmlldy0+cGFnZSgpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6Y2xlYW51cCgpCit7
CisgICAgZGVsZXRlIG1fdmlldzsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmNsZWFudXBGaWxl
cygpCit7CisgICAgcmVtb3ZlUmVjdXJzaXZlKHRtcERpclBhdGgoKSk7Cit9CisKK3ZvaWQgdHN0
X1FXZWJQYWdlOjppbml0VGVzdENhc2UoKQoreworICAgIGNsZWFudXBGaWxlcygpOyAvLyBJbiBj
YXNlIHRoZXJlIGFyZSBvbGQgZmlsZXMgZnJvbSBwcmV2aW91cyBydW5zCit9CisKK3ZvaWQgdHN0
X1FXZWJQYWdlOjpjbGVhbnVwVGVzdENhc2UoKQoreworICAgIGNsZWFudXBGaWxlcygpOyAvLyBC
ZSBuaWNlCit9CisKK2NsYXNzIE5hdmlnYXRpb25SZXF1ZXN0T3ZlcnJpZGUgOiBwdWJsaWMgUVdl
YlBhZ2UKK3sKK3B1YmxpYzoKKyAgICBOYXZpZ2F0aW9uUmVxdWVzdE92ZXJyaWRlKFFXZWJWaWV3
KiBwYXJlbnQsIGJvb2wgaW5pdGlhbFZhbHVlKSA6IFFXZWJQYWdlKHBhcmVudCksIG1fYWNjZXB0
TmF2aWdhdGlvblJlcXVlc3QoaW5pdGlhbFZhbHVlKSB7fQorCisgICAgYm9vbCBtX2FjY2VwdE5h
dmlnYXRpb25SZXF1ZXN0OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBhY2NlcHROYXZp
Z2F0aW9uUmVxdWVzdChRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRTmV0d29ya1JlcXVlc3QgJnJl
cXVlc3QsIFFXZWJQYWdlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKSB7CisgICAgICAgIFFfVU5VU0VE
KGZyYW1lKTsKKyAgICAgICAgUV9VTlVTRUQocmVxdWVzdCk7CisgICAgICAgIFFfVU5VU0VEKHR5
cGUpOworCisgICAgICAgIHJldHVybiBtX2FjY2VwdE5hdmlnYXRpb25SZXF1ZXN0OworICAgIH0K
K307CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdCgpCit7Cisg
ICAgUVNpZ25hbFNweSBsb2FkU3B5KG1fdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkp
OworCisgICAgTmF2aWdhdGlvblJlcXVlc3RPdmVycmlkZSogbmV3UGFnZSA9IG5ldyBOYXZpZ2F0
aW9uUmVxdWVzdE92ZXJyaWRlKG1fdmlldywgZmFsc2UpOworICAgIG1fdmlldy0+c2V0UGFnZShu
ZXdQYWdlKTsKKworICAgIG1fdmlldy0+c2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT48Zm9y
bSBuYW1lPSd0c3Rmb3JtJyBhY3Rpb249J2RhdGE6dGV4dC9odG1sLGZvbydtZXRob2Q9J2dldCc+
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8aW5wdXQgdHlwZT0ndGV4dCc+PGlucHV0
IHR5cGU9J3N1Ym1pdCc+PC9mb3JtPjwvYm9keT48L2h0bWw+IiksIFFVcmwoKSk7CisgICAgUVRS
WV9DT01QQVJFKGxvYWRTcHkuY291bnQoKSwgMSk7CisKKyAgICBtX3ZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidHN0Zm9ybS5zdWJtaXQoKTsiKTsKKworICAg
IG5ld1BhZ2UtPm1fYWNjZXB0TmF2aWdhdGlvblJlcXVlc3QgPSB0cnVlOworICAgIG1fdmlldy0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0c3Rmb3JtLnN1Ym1pdCgp
OyIpOworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDIpOworCisgICAgUUNPTVBB
UkUobV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJm
b28/IikpOworCisgICAgLy8gUmVzdG9yZSBkZWZhdWx0IHBhZ2UKKyAgICBtX3ZpZXctPnNldFBh
Z2UoMCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpkb21haW5TcGVjaWZpY0tleUV2ZW50KCkK
K3sKKyAgICBRV2ViVmlldyB3ZWJWaWV3OworICAgIHdlYlZpZXcuc2hvdygpOworICAgIFFUZXN0
OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJndlYlZpZXcpOworCisgICAgd2ViVmlldy5zZXRIdG1s
KFFMYXRpbjFTdHJpbmcoIjxodG1sPjxoZWFkPiIKKyAgICAgICAgIjxzY3JpcHQ+IgorICAgICAg
ICAidmFyIHJlY2VpdmVkS2V5QXJyYXkgPSBuZXcgQXJyYXkoKTsiCisgICAgICAgICJmdW5jdGlv
biBrZXlFdmVudChlKSB7IgorICAgICAgICAicmVjZWl2ZWRLZXlBcnJheS5wdXNoKGUudHlwZSsn
OicrZS5rZXlDb2RlKyc6JytlLmNoYXJDb2RlKTsiCisgICAgICAgICJ9OyIKKyAgICAgICAgIndp
bmRvdy5vbmtleXVwID0ga2V5RXZlbnQ7IHdpbmRvdy5vbmtleXByZXNzID0ga2V5RXZlbnQ7IHdp
bmRvdy5vbmtleWRvd24gPSBrZXlFdmVudDsiCisgICAgICAgICI8L3NjcmlwdD48L2hlYWQ+PGJv
ZHk+dGVzdDwvYm9keT48L2h0bWw+IikpOworCisgICAgLy8gRW5hYmxlIHNldHRpbmdzIHRvIHVz
ZSBuYXRpdmVWaXJ0dWFsS2V5IGFzIERPTSBrZXkgdmFsdWUuCisgICAgd2ViVmlldy5wYWdlKCkt
PnNldFByb3BlcnR5KCJfcV91c2VOYXRpdmVWaXJ0dWFsS2V5QXNET01LZXkiLCB0cnVlKTsKKyAg
ICAvLyBTaW11bGF0ZSBkb21haW4gc3BlY2lmaWMga2V5ZXZlbnQgdG8gV2ViS2l0IGJ5IHBhc3Np
bmcgaXQgYXMgbmF0aXZlVmlydHVhbEtleSBpbiBRS2V5RXZlbnQuCisgICAgLy8gUXQ6OktleV9Q
YXVzZSAtLT4gMHg1MQorICAgIFFLZXlFdmVudCBrZXlFdmVudChRRXZlbnQ6OktleVByZXNzLCBR
dDo6S2V5X1BhdXNlLCBRdDo6Tm9Nb2RpZmllciwgMCwgODEsIDApOworICAgIFFBcHBsaWNhdGlv
bjo6c2VuZEV2ZW50KCZ3ZWJWaWV3LCAma2V5RXZlbnQpOworICAgIGtleUV2ZW50ID0gUUtleUV2
ZW50KFFFdmVudDo6S2V5UmVsZWFzZSwgUXQ6OktleV9QYXVzZSwgUXQ6Ok5vTW9kaWZpZXIsIDAs
IDgxLCAwKTsKKyAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudCgmd2ViVmlldywgJmtleUV2ZW50
KTsKKyAgICBjb25zdCBRTGF0aW4xU3RyaW5nIGV4cGVjdGVkUmVjZWl2ZWRLZXlBcnJheTEoImtl
eWRvd246ODE6MCxrZXl1cDo4MTowIik7CisgICAgUVN0cmluZyByZWNlaXZlZEtleUFycmF5ID0g
d2ViVmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoUUxhdGluMVN0
cmluZygicmVjZWl2ZWRLZXlBcnJheSIpKS50b1N0cmluZ0xpc3QoKS5qb2luKCIsIik7CisgICAg
UVZFUklGWShyZWNlaXZlZEtleUFycmF5ID09IGV4cGVjdGVkUmVjZWl2ZWRLZXlBcnJheTEpOwor
CisgICAgLy8gTm9ybWFsIFBDIGtleWJvYXJkIGtleSBjb252ZXJzdGlvbiBmbG93IHNob3VsZG4n
dCBiZSBhZmZlY3RlZCB3aGVuIHNlbmRpbmcgbmF0aXZlVmlydHVhbCBrZXkgYXMgMC4KKyAgICAv
LyBRdDo6S2V5X1BhdXNlIC0tPiBWS19QQVVTRSgweDEzKQorICAgIHdlYlZpZXcucGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KFFMYXRpbjFTdHJpbmcoInJlY2VpdmVkS2V5
QXJyYXkgPSBuZXcgQXJyYXkoKSIpKTsgLy8gUmVzZXQKKyAgICBrZXlFdmVudCA9IFFLZXlFdmVu
dChRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X1BhdXNlLCBRdDo6Tm9Nb2RpZmllciwgMCwgMCwg
MCk7CisgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQoJndlYlZpZXcsICZrZXlFdmVudCk7Cisg
ICAga2V5RXZlbnQgPSBRS2V5RXZlbnQoUUV2ZW50OjpLZXlSZWxlYXNlLCBRdDo6S2V5X1BhdXNl
LCBRdDo6Tm9Nb2RpZmllciwgMCwgMCwgMCk7CisgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQo
JndlYlZpZXcsICZrZXlFdmVudCk7CisgICAgY29uc3QgUUxhdGluMVN0cmluZyBleHBlY3RlZFJl
Y2VpdmVkS2V5QXJyYXkyKCJrZXlkb3duOjE5OjAsa2V5dXA6MTk6MCIpOworICAgIHJlY2VpdmVk
S2V5QXJyYXkgPSB3ZWJWaWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dChRTGF0aW4xU3RyaW5nKCJyZWNlaXZlZEtleUFycmF5IikpLnRvU3RyaW5nTGlzdCgpLmpvaW4o
IiwiKTsKKyAgICBRVkVSSUZZKHJlY2VpdmVkS2V5QXJyYXkgPT0gZXhwZWN0ZWRSZWNlaXZlZEtl
eUFycmF5Mik7CisKKyAgICAvLyBOZWdhdGl2ZSBjYXNlLgorICAgIC8vIERpc2FibGUgc2V0dGlu
Z3MgdG8gdXNlIG5hdGl2ZVZpcnR1YWxLZXkgYXMgRE9NIGtleSB2YWx1ZS4KKyAgICB3ZWJWaWV3
LnBhZ2UoKS0+c2V0UHJvcGVydHkoIl9xX3VzZU5hdGl2ZVZpcnR1YWxLZXlBc0RPTUtleSIsIGZh
bHNlKTsKKyAgICAvLyBRdDo6S2V5X1BhdXNlIC0tPiBWS19QQVVTRSgweDEzKQorICAgIHdlYlZp
ZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KFFMYXRpbjFTdHJpbmco
InJlY2VpdmVkS2V5QXJyYXkgPSBuZXcgQXJyYXkoKSIpKTsgLy8gUmVzZXQKKyAgICBrZXlFdmVu
dCA9IFFLZXlFdmVudChRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X1BhdXNlLCBRdDo6Tm9Nb2Rp
ZmllciwgMCwgODEsIDApOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KCZ3ZWJWaWV3LCAm
a2V5RXZlbnQpOworICAgIGtleUV2ZW50ID0gUUtleUV2ZW50KFFFdmVudDo6S2V5UmVsZWFzZSwg
UXQ6OktleV9QYXVzZSwgUXQ6Ok5vTW9kaWZpZXIsIDAsIDgxLCAwKTsKKyAgICBRQXBwbGljYXRp
b246OnNlbmRFdmVudCgmd2ViVmlldywgJmtleUV2ZW50KTsKKyAgICBjb25zdCBRTGF0aW4xU3Ry
aW5nIGV4cGVjdGVkUmVjZWl2ZWRLZXlBcnJheTMoImtleWRvd246MTk6MCxrZXl1cDoxOTowIik7
CisgICAgcmVjZWl2ZWRLZXlBcnJheSA9IHdlYlZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KFFMYXRpbjFTdHJpbmcoInJlY2VpdmVkS2V5QXJyYXkiKSkudG9TdHJp
bmdMaXN0KCkuam9pbigiLCIpOworICAgIFFWRVJJRlkocmVjZWl2ZWRLZXlBcnJheSA9PSBleHBl
Y3RlZFJlY2VpdmVkS2V5QXJyYXkzKTsKK30KKworY2xhc3MgSlNUZXN0UGFnZSA6IHB1YmxpYyBR
V2ViUGFnZQoreworUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBKU1Rlc3RQYWdlKFFPYmplY3QqIHBh
cmVudCA9IDApCisgICAgOiBRV2ViUGFnZShwYXJlbnQpIHt9CisKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFFXZWJG
cmFtZSogZnJhbWUsIFFXZWJQYWdlOjpGZWF0dXJlIGZlYXR1cmUpCisgICAgeworICAgICAgICBp
ZiAobV9hbGxvd0dlb2xvY2F0aW9uKQorICAgICAgICAgICAgc2V0RmVhdHVyZVBlcm1pc3Npb24o
ZnJhbWUsIGZlYXR1cmUsIFBlcm1pc3Npb25HcmFudGVkQnlVc2VyKTsKKyAgICAgICAgZWxzZSAK
KyAgICAgICAgICAgIHNldEZlYXR1cmVQZXJtaXNzaW9uKGZyYW1lLCBmZWF0dXJlLCBQZXJtaXNz
aW9uRGVuaWVkQnlVc2VyKTsKKyAgICB9CisKK3B1YmxpYzoKKyAgICB2b2lkIHNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbihib29sIGFsbG93KSAKKyAgICB7CisgICAgICAgIG1fYWxsb3dHZW9sb2Nh
dGlvbiA9IGFsbG93OworICAgIH0KKworcHJpdmF0ZTogCisgICAgYm9vbCBtX2FsbG93R2VvbG9j
YXRpb247Cit9OworCisvLyBbUXRdIHRzdF9RV2ViUGFnZTo6aW5maW5pdGVMb29wSlMoKSB0aW1l
b3V0cyB3aXRoIERGRyBKSVQKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03OTA0MAorLyoKK3ZvaWQgdHN0X1FXZWJQYWdlOjppbmZpbml0ZUxvb3BKUygpCit7Cisg
ICAgSlNUZXN0UGFnZSogbmV3UGFnZSA9IG5ldyBKU1Rlc3RQYWdlKG1fdmlldyk7CisgICAgbV92
aWV3LT5zZXRQYWdlKG5ld1BhZ2UpOworICAgIG1fdmlldy0+c2V0SHRtbChRU3RyaW5nKCI8aHRt
bD48Ym9keT50ZXN0PC9ib2R5PjwvaHRtbD4iKSwgUVVybCgpKTsKKyAgICBtX3ZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIHJ1biA9IHRydWU7dmFyIGEg
PSAxO3doaWxlKHJ1bil7YSsrO30iKTsKKyAgICBkZWxldGUgbmV3UGFnZTsKK30KKyovCisKK3Zv
aWQgdHN0X1FXZWJQYWdlOjpnZW9sb2NhdGlvblJlcXVlc3RKUygpCit7CisgICAgSlNUZXN0UGFn
ZSogbmV3UGFnZSA9IG5ldyBKU1Rlc3RQYWdlKG1fdmlldyk7CisKKyAgICBpZiAobmV3UGFnZS0+
bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdChRTGF0aW4xU3RyaW5nKCIhbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uIikpLnRvQm9vbCgpKSB7CisgICAgICAgIGRlbGV0ZSBuZXdQYWdlOworICAg
ICAgICBXX1FTS0lQKCJHZW9sb2NhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiIsIFNraXBTaW5nbGUp
OworICAgIH0KKworICAgIGNvbm5lY3QobmV3UGFnZSwgU0lHTkFMKGZlYXR1cmVQZXJtaXNzaW9u
UmVxdWVzdGVkKFFXZWJGcmFtZSosIFFXZWJQYWdlOjpGZWF0dXJlKSksCisgICAgICAgICAgICBu
ZXdQYWdlLCBTTE9UKHJlcXVlc3RQZXJtaXNzaW9uKFFXZWJGcmFtZSosIFFXZWJQYWdlOjpGZWF0
dXJlKSkpOworCisgICAgbmV3UGFnZS0+c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGZhbHNlKTsK
KyAgICBtX3ZpZXctPnNldFBhZ2UobmV3UGFnZSk7CisgICAgbV92aWV3LT5zZXRIdG1sKFFTdHJp
bmcoIjxodG1sPjxib2R5PnRlc3Q8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCkpOworICAgIG1fdmll
dy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgZXJyb3JDb2Rl
ID0gMDsgZnVuY3Rpb24gZXJyb3IoZXJyKSB7IGVycm9yQ29kZSA9IGVyci5jb2RlOyB9IGZ1bmN0
aW9uIHN1Y2Nlc3MocG9zKSB7IH0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihzdWNjZXNzLCBlcnJvcikiKTsKKyAgICBRVGVzdDo6cVdhaXQoMjAwMCk7CisgICAgUVZh
cmlhbnQgZW1wdHkgPSBtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZXJyb3JDb2RlIik7CisKKyAgICBRRVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyMjM1IiwgQ29udGludWUpOworICAgIFFWRVJJ
RlkoZW1wdHkudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgZW1wdHkudG9JbnQoKSAhPSAw
KTsKKworICAgIG5ld1BhZ2UtPnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKKyAgICBt
X3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZXJyb3JDb2Rl
ID0gMDsgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihzdWNjZXNzLCBl
cnJvcik7Iik7CisgICAgZW1wdHkgPSBtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1
YXRlSmF2YVNjcmlwdCgiZXJyb3JDb2RlIik7CisKKyAgICAvL2h0dHA6Ly9kZXYudzMub3JnL2dl
by9hcGkvc3BlYy1zb3VyY2UuaHRtbCNwb3NpdGlvbgorICAgIC8vUG9zaXRpb25FcnJvcjogY29u
c3QgdW5zaWduZWQgc2hvcnQgUEVSTUlTU0lPTl9ERU5JRUQgPSAxOworICAgIFFWRVJJRlkoZW1w
dHkudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgZW1wdHkudG9JbnQoKSAhPSAxKTsKKyAg
ICBkZWxldGUgbmV3UGFnZTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmxvYWRGaW5pc2hlZCgp
Cit7CisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVdlYkZyYW1lKj4oIlFXZWJGcmFtZSoiKTsKKyAg
ICBxUmVnaXN0ZXJNZXRhVHlwZTxRTmV0d29ya1JlcXVlc3QqPigiUU5ldHdvcmtSZXF1ZXN0KiIp
OworICAgIFFTaWduYWxTcHkgc3B5TG9hZFN0YXJ0ZWQobV92aWV3LCBTSUdOQUwobG9hZFN0YXJ0
ZWQoKSkpOworICAgIFFTaWduYWxTcHkgc3B5TG9hZEZpbmlzaGVkKG1fdmlldywgU0lHTkFMKGxv
YWRGaW5pc2hlZChib29sKSkpOworCisgICAgbV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5s
b2FkKFFVcmwoImRhdGE6dGV4dC9odG1sLDxmcmFtZXNldCBjb2xzPVwiMjUlLDc1JVwiPjxmcmFt
ZSBzcmM9XCJkYXRhOnRleHQvaHRtbCwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9J3JlZnJlc2gnIGNvbnRlbnQ9JzEn
PjwvaGVhZD5mb28gXCI+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICI8ZnJhbWUgc3JjPVwiZGF0YTp0ZXh0L2h0bWwsYmFyXCI+PC9mcmFtZXNldD4iKSk7Cisg
ICAgUVRSWV9DT01QQVJFKHNweUxvYWRGaW5pc2hlZC5jb3VudCgpLCAxKTsKKworICAgIFFUUllf
VkVSSUZZKHNweUxvYWRTdGFydGVkLmNvdW50KCkgPiAxKTsKKyAgICBRVFJZX1ZFUklGWShzcHlM
b2FkRmluaXNoZWQuY291bnQoKSA+IDEpOworCisgICAgc3B5TG9hZEZpbmlzaGVkLmNsZWFyKCk7
CisKKyAgICBtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWQoUVVybCgiZGF0YTp0ZXh0
L2h0bWwsPGZyYW1lc2V0IGNvbHM9XCIyNSUsNzUlXCI+PGZyYW1lIHNyYz1cImRhdGE6dGV4dC9o
dG1sLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vIFwi
PjxmcmFtZSBzcmM9XCJkYXRhOnRleHQvaHRtbCxiYXJcIj48L2ZyYW1lc2V0PiIpKTsKKyAgICBR
VFJZX0NPTVBBUkUoc3B5TG9hZEZpbmlzaGVkLmNvdW50KCksIDEpOworICAgIFFDT01QQVJFKHNw
eUxvYWRGaW5pc2hlZC5jb3VudCgpLCAxKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmFjdGlv
blN0YXRlcygpCit7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBtX3ZpZXctPnBhZ2UoKTsKKworICAg
IHBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkKFFVcmwoInFyYzovLy9yZXNvdXJjZXMvc2NyaXB0Lmh0
bWwiKSk7CisKKyAgICBRQWN0aW9uKiByZWxvYWRBY3Rpb24gPSBwYWdlLT5hY3Rpb24oUVdlYlBh
Z2U6OlJlbG9hZCk7CisgICAgUUFjdGlvbiogc3RvcEFjdGlvbiA9IHBhZ2UtPmFjdGlvbihRV2Vi
UGFnZTo6U3RvcCk7CisKKyAgICBRVFJZX1ZFUklGWShyZWxvYWRBY3Rpb24tPmlzRW5hYmxlZCgp
KTsKKyAgICBRVFJZX1ZFUklGWSghc3RvcEFjdGlvbi0+aXNFbmFibGVkKCkpOworfQorCitjbGFz
cyBDb25zb2xlUGFnZSA6IHB1YmxpYyBRV2ViUGFnZQoreworcHVibGljOgorICAgIENvbnNvbGVQ
YWdlKFFPYmplY3QqIHBhcmVudCA9IDApIDogUVdlYlBhZ2UocGFyZW50KSB7fQorCisgICAgdmly
dHVhbCB2b2lkIGphdmFTY3JpcHRDb25zb2xlTWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgUVN0cmluZyYgc291cmNlSUQpCisgICAgeworICAgICAg
ICBtZXNzYWdlcy5hcHBlbmQobWVzc2FnZSk7CisgICAgICAgIGxpbmVOdW1iZXJzLmFwcGVuZChs
aW5lTnVtYmVyKTsKKyAgICAgICAgc291cmNlSURzLmFwcGVuZChzb3VyY2VJRCk7CisgICAgfQor
CisgICAgUVN0cmluZ0xpc3QgbWVzc2FnZXM7CisgICAgUUxpc3Q8aW50PiBsaW5lTnVtYmVyczsK
KyAgICBRU3RyaW5nTGlzdCBzb3VyY2VJRHM7Cit9OworCit2b2lkIHRzdF9RV2ViUGFnZTo6Y29u
c29sZU91dHB1dCgpCit7CisgICAgQ29uc29sZVBhZ2UgcGFnZTsKKyAgICBwYWdlLm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRoaXMgaXMgbm90IHZhbGlkIEphdmFTY3JpcHQiKTsK
KyAgICBRQ09NUEFSRShwYWdlLm1lc3NhZ2VzLmNvdW50KCksIDEpOworICAgIFFDT01QQVJFKHBh
Z2UubGluZU51bWJlcnMuYXQoMCksIDEpOworfQorCitjbGFzcyBUZXN0UGFnZSA6IHB1YmxpYyBR
V2ViUGFnZSB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBUZXN0UGFnZShRT2JqZWN0KiBw
YXJlbnQgPSAwKSA6IFFXZWJQYWdlKHBhcmVudCkKKyAgICB7CisgICAgICAgIGNvbm5lY3QodGhp
cywgU0lHTkFMKGdlb21ldHJ5Q2hhbmdlUmVxdWVzdGVkKFFSZWN0KSksIHRoaXMsIFNMT1Qoc2xv
dEdlb21ldHJ5Q2hhbmdlUmVxdWVzdGVkKFFSZWN0KSkpOworICAgIH0KKworICAgIHN0cnVjdCBO
YXZpZ2F0aW9uIHsKKyAgICAgICAgUVBvaW50ZXI8UVdlYkZyYW1lPiBmcmFtZTsKKyAgICAgICAg
UU5ldHdvcmtSZXF1ZXN0IHJlcXVlc3Q7CisgICAgICAgIE5hdmlnYXRpb25UeXBlIHR5cGU7Cisg
ICAgfTsKKworICAgIFFMaXN0PE5hdmlnYXRpb24+IG5hdmlnYXRpb25zOworICAgIFFMaXN0PFRl
c3RQYWdlKj4gY3JlYXRlZFdpbmRvd3M7CisgICAgUVJlY3QgcmVxdWVzdGVkR2VvbWV0cnk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgYWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoUVdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlKSB7
CisgICAgICAgIE5hdmlnYXRpb24gbjsKKyAgICAgICAgbi5mcmFtZSA9IGZyYW1lOworICAgICAg
ICBuLnJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBuLnR5cGUgPSB0eXBlOworICAgICAgICBu
YXZpZ2F0aW9ucy5hcHBlbmQobik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHZpcnR1YWwgUVdlYlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJXaW5kb3dUeXBlKSB7CisgICAgICAg
IFRlc3RQYWdlKiBwYWdlID0gbmV3IFRlc3RQYWdlKHRoaXMpOworICAgICAgICBjcmVhdGVkV2lu
ZG93cy5hcHBlbmQocGFnZSk7CisgICAgICAgIHJldHVybiBwYWdlOworICAgIH0KKworcHJpdmF0
ZSBRX1NMT1RTOgorICAgIHZvaWQgc2xvdEdlb21ldHJ5Q2hhbmdlUmVxdWVzdGVkKGNvbnN0IFFS
ZWN0JiBnZW9tKSB7CisgICAgICAgIHJlcXVlc3RlZEdlb21ldHJ5ID0gZ2VvbTsKKyAgICB9Cit9
OworCit2b2lkIHRzdF9RV2ViUGFnZTo6cG9wdXBGb3JtU3VibWlzc2lvbigpCit7CisgICAgVGVz
dFBhZ2UgcGFnZTsKKyAgICBwYWdlLnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGlu
Z3M6OkphdmFzY3JpcHRDYW5PcGVuV2luZG93cywgdHJ1ZSk7CisgICAgcGFnZS5tYWluRnJhbWUo
KS0+c2V0SHRtbCgiPGZvcm0gbmFtZT1mb3JtMSBtZXRob2Q9Z2V0IGFjdGlvbj0nJyB0YXJnZXQ9
bXlOZXdXaW4+IlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxpbnB1dCB0eXBl
PWhpZGRlbiBuYW1lPWZvbyB2YWx1ZT0nYmFyJz4iXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiPC9mb3JtPiIpOworICAgIHBhZ2UubWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgid2luZG93Lm9wZW4oJycsICdteU5ld1dpbicsICd3aWR0aD01MDAsaGVpZ2h0PTMwMCx0
b29sYmFyPTAnKSIpOworICAgIHBhZ2UubWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgi
ZG9jdW1lbnQuZm9ybTEuc3VibWl0KCk7Iik7CisKKyAgICBRVGVzdDo6cVdhaXQoNTAwKTsKKyAg
ICAvLyBUaGUgbnVtYmVyIG9mIHBvcHVwIGNyZWF0ZWQgc2hvdWxkIGJlIG9uZS4KKyAgICBRVkVS
SUZZKHBhZ2UuY3JlYXRlZFdpbmRvd3Muc2l6ZSgpID09IDEpOworCisgICAgUVN0cmluZyB1cmwg
PSBwYWdlLmNyZWF0ZWRXaW5kb3dzLnRha2VGaXJzdCgpLT5tYWluRnJhbWUoKS0+dXJsKCkudG9T
dHJpbmcoKTsKKyAgICAvLyBDaGVjayBpZiB0aGUgZm9ybSBzdWJtaXNzaW9uIHdhcyBPSy4KKyAg
ICBRRVhQRUNUX0ZBSUwoIiIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE4NTk3IiwgQ29udGludWUpOworICAgIFFWRVJJRlkodXJsLmNvbnRhaW5zKCI/Zm9vPWJh
ciIpKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0V2l0
aE5ld1dpbmRvdygpCit7CisgICAgVGVzdFBhZ2UqIHBhZ2UgPSBuZXcgVGVzdFBhZ2UobV92aWV3
KTsKKyAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMaW5r
c0luY2x1ZGVkSW5Gb2N1c0NoYWluLCB0cnVlKTsKKyAgICBtX3BhZ2UgPSBwYWdlOworICAgIG1f
dmlldy0+c2V0UGFnZShtX3BhZ2UpOworCisgICAgbV92aWV3LT5zZXRVcmwoUVN0cmluZygiZGF0
YTp0ZXh0L2h0bWwsPGEgaHJlZj1cImRhdGE6dGV4dC9odG1sLFJlYWNoZWRcIiB0YXJnZXQ9XCJf
YmxhbmtcIj5DbGljayBtZTwvYT4iKSk7CisgICAgUVZFUklGWSg6OndhaXRGb3JTaWduYWwobV92
aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgUUZvY3VzRXZlbnQgZmUo
UUV2ZW50OjpGb2N1c0luKTsKKyAgICBtX3BhZ2UtPmV2ZW50KCZmZSk7CisKKyAgICBRVkVSSUZZ
KG1fcGFnZS0+Zm9jdXNOZXh0UHJldkNoaWxkKC8qbmV4dCovIHRydWUpKTsKKworICAgIFFLZXlF
dmVudCBrZXlFbnRlcihRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X0VudGVyLCBRdDo6Tm9Nb2Rp
Zmllcik7CisgICAgbV9wYWdlLT5ldmVudCgma2V5RW50ZXIpOworCisgICAgUUNPTVBBUkUocGFn
ZS0+bmF2aWdhdGlvbnMuY291bnQoKSwgMik7CisKKyAgICBUZXN0UGFnZTo6TmF2aWdhdGlvbiBu
ID0gcGFnZS0+bmF2aWdhdGlvbnMuYXQoMSk7CisgICAgUVZFUklGWShuLmZyYW1lLmlzTnVsbCgp
KTsKKyAgICBRQ09NUEFSRShuLnJlcXVlc3QudXJsKCkudG9TdHJpbmcoKSwgUVN0cmluZygiZGF0
YTp0ZXh0L2h0bWwsUmVhY2hlZCIpKTsKKyAgICBRVkVSSUZZKG4udHlwZSA9PSBRV2ViUGFnZTo6
TmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZCk7CisKKyAgICBRQ09NUEFSRShwYWdlLT5jcmVhdGVk
V2luZG93cy5jb3VudCgpLCAxKTsKK30KKworY2xhc3MgVGVzdE5ldHdvcmtNYW5hZ2VyIDogcHVi
bGljIFFOZXR3b3JrQWNjZXNzTWFuYWdlcgoreworcHVibGljOgorICAgIFRlc3ROZXR3b3JrTWFu
YWdlcihRT2JqZWN0KiBwYXJlbnQpIDogUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyKHBhcmVudCkge30K
KworICAgIFFMaXN0PFFVcmw+IHJlcXVlc3RlZFVybHM7CisgICAgUUxpc3Q8UU5ldHdvcmtSZXF1
ZXN0PiByZXF1ZXN0czsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgUU5ldHdvcmtSZXBseSog
Y3JlYXRlUmVxdWVzdChPcGVyYXRpb24gb3AsIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxdWVz
dCwgUUlPRGV2aWNlKiBvdXRnb2luZ0RhdGEpIHsKKyAgICAgICAgcmVxdWVzdHMuYXBwZW5kKHJl
cXVlc3QpOworICAgICAgICByZXF1ZXN0ZWRVcmxzLmFwcGVuZChyZXF1ZXN0LnVybCgpKTsKKyAg
ICAgICAgcmV0dXJuIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6Y3JlYXRlUmVxdWVzdChvcCwgcmVx
dWVzdCwgb3V0Z29pbmdEYXRhKTsKKyAgICB9Cit9OworCit2b2lkIHRzdF9RV2ViUGFnZTo6dXNl
clN0eWxlU2hlZXQoKQoreworICAgIFRlc3ROZXR3b3JrTWFuYWdlciogbmV0d29ya01hbmFnZXIg
PSBuZXcgVGVzdE5ldHdvcmtNYW5hZ2VyKG1fcGFnZSk7CisgICAgbV9wYWdlLT5zZXROZXR3b3Jr
QWNjZXNzTWFuYWdlcihuZXR3b3JrTWFuYWdlcik7CisKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCkt
PnNldFVzZXJTdHlsZVNoZWV0VXJsKFFVcmwoImRhdGE6dGV4dC9jc3M7Y2hhcnNldD11dGYtODti
YXNlNjQsIgorICAgICAgICAgICAgKyBRQnl0ZUFycmF5KCJwIHsgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCdodHRwOi8vZG9lcy5ub3QvZXhpc3QucG5nJyk7fSIpLnRvQmFzZTY0KCkpKTsKKyAgICBt
X3ZpZXctPnNldEh0bWwoIjxwPmhlbGxvIHdvcmxkPC9wPiIpOworICAgIFFWRVJJRlkoOjp3YWl0
Rm9yU2lnbmFsKG1fdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKworICAgIFFW
RVJJRlkobmV0d29ya01hbmFnZXItPnJlcXVlc3RlZFVybHMuY291bnQoKSA+PSAxKTsKKyAgICBR
Q09NUEFSRShuZXR3b3JrTWFuYWdlci0+cmVxdWVzdGVkVXJscy5hdCgwKSwgUVVybCgiaHR0cDov
L2RvZXMubm90L2V4aXN0LnBuZyIpKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OnVzZXJTdHls
ZVNoZWV0RnJvbUxvY2FsRmlsZVVybCgpCit7CisgICAgVGVzdE5ldHdvcmtNYW5hZ2VyKiBuZXR3
b3JrTWFuYWdlciA9IG5ldyBUZXN0TmV0d29ya01hbmFnZXIobV9wYWdlKTsKKyAgICBtX3BhZ2Ut
PnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKG5ldHdvcmtNYW5hZ2VyKTsKKworICAgIFFVcmwgc3R5
bGVTaGVldFVybCA9IFFVcmw6OmZyb21Mb2NhbEZpbGUoVEVTVFNfU09VUkNFX0RJUiArIFFMYXRp
bjFTdHJpbmcoInF3ZWJwYWdlL3Jlc291cmNlcy91c2VyLmNzcyIpKTsKKyAgICBtX3BhZ2UtPnNl
dHRpbmdzKCktPnNldFVzZXJTdHlsZVNoZWV0VXJsKHN0eWxlU2hlZXRVcmwpOworICAgIG1fdmll
dy0+c2V0SHRtbCgiPHA+aGVsbG8gd29ybGQ8L3A+Iik7CisgICAgUVZFUklGWSg6OndhaXRGb3JT
aWduYWwobV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgUVZFUklG
WShuZXR3b3JrTWFuYWdlci0+cmVxdWVzdGVkVXJscy5jb3VudCgpID49IDEpOworICAgIFFDT01Q
QVJFKG5ldHdvcmtNYW5hZ2VyLT5yZXF1ZXN0ZWRVcmxzLmF0KDApLCBRVXJsKCJodHRwOi8vZG9l
cy5ub3QvZXhpc3QucG5nIikpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6dXNlclN0eWxlU2hl
ZXRGcm9tUXJjVXJsKCkKK3sKKyAgICBUZXN0TmV0d29ya01hbmFnZXIqIG5ldHdvcmtNYW5hZ2Vy
ID0gbmV3IFRlc3ROZXR3b3JrTWFuYWdlcihtX3BhZ2UpOworICAgIG1fcGFnZS0+c2V0TmV0d29y
a0FjY2Vzc01hbmFnZXIobmV0d29ya01hbmFnZXIpOworCisgICAgbV9wYWdlLT5zZXR0aW5ncygp
LT5zZXRVc2VyU3R5bGVTaGVldFVybChRVXJsKCJxcmM6Ly8vcmVzb3VyY2VzL3VzZXIuY3NzIikp
OworICAgIG1fdmlldy0+c2V0SHRtbCgiPHA+aGVsbG8gd29ybGQ8L3A+Iik7CisgICAgUVZFUklG
WSg6OndhaXRGb3JTaWduYWwobV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOwor
CisgICAgUVZFUklGWShuZXR3b3JrTWFuYWdlci0+cmVxdWVzdGVkVXJscy5jb3VudCgpID49IDEp
OworICAgIFFDT01QQVJFKG5ldHdvcmtNYW5hZ2VyLT5yZXF1ZXN0ZWRVcmxzLmF0KDApLCBRVXJs
KCJodHRwOi8vZG9lcy5ub3QvZXhpc3QucG5nIikpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6
bG9hZEh0bWw1VmlkZW8oKQoreworI2lmIGRlZmluZWQoV1RGX1VTRV9RVF9NVUxUSU1FRElBKSAm
JiBXVEZfVVNFX1FUX01VTFRJTUVESUEKKyAgICBRQnl0ZUFycmF5IHVybCgiaHR0cDovL2RvZXMu
bm90L2V4aXN0P2E9MSUyQ2I9MiIpOworICAgIG1fdmlldy0+c2V0SHRtbCgiPHA+PHZpZGVvIGlk
ID0ndmlkZW8nIHNyYz0nIiArIHVybCArICInIGF1dG9wbGF5Lz48L3A+Iik7CisgICAgUVRlc3Q6
OnFXYWl0KDIwMDApOworICAgIFFVcmwgbVVybCA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpt
ZWRpYUNvbnRlbnRVcmxCeUVsZW1lbnRJZChtX3BhZ2UtPm1haW5GcmFtZSgpLT5oYW5kbGUoKSwg
InZpZGVvIik7CisgICAgUUVYUEVDVF9GQUlMKCIiLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NDUyIiwgQ29udGludWUpOworICAgIFFDT01QQVJFKG1VcmwudG9F
bmNvZGVkKCksIHVybCk7CisjZWxzZQorICAgIFdfUVNLSVAoIlRoaXMgdGVzdCByZXF1aXJlcyBR
dCBNdWx0aW1lZGlhIiwgU2tpcEFsbCk7CisjZW5kaWYKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6
OnZpZXdNb2RlcygpCit7CisgICAgbV92aWV3LT5zZXRIdG1sKCI8Ym9keT48L2JvZHk+Iik7Cisg
ICAgbV9wYWdlLT5zZXRQcm9wZXJ0eSgiX3Ffdmlld01vZGUiLCAibWluaW1pemVkIik7CisKKyAg
ICBRVmFyaWFudCBlbXB0eSA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgid2luZG93LnN0eWxlTWVkaWEubWF0Y2hNZWRpdW0oXCIoLXdlYmtpdC12aWV3LW1vZGUpXCIp
Iik7CisgICAgUVZFUklGWShlbXB0eS50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgZW1wdHku
dG9Cb29sKCkpOworCisgICAgUVZhcmlhbnQgbWluaW1pemVkID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ3aW5kb3cuc3R5bGVNZWRpYS5tYXRjaE1lZGl1bShcIigt
d2Via2l0LXZpZXctbW9kZTogbWluaW1pemVkKVwiKSIpOworICAgIFFWRVJJRlkobWluaW1pemVk
LnR5cGUoKSA9PSBRVmFyaWFudDo6Qm9vbCAmJiBtaW5pbWl6ZWQudG9Cb29sKCkpOworCisgICAg
UVZhcmlhbnQgbWF4aW1pemVkID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJ3aW5kb3cuc3R5bGVNZWRpYS5tYXRjaE1lZGl1bShcIigtd2Via2l0LXZpZXctbW9kZTog
bWF4aW1pemVkKVwiKSIpOworICAgIFFWRVJJRlkobWF4aW1pemVkLnR5cGUoKSA9PSBRVmFyaWFu
dDo6Qm9vbCAmJiAhbWF4aW1pemVkLnRvQm9vbCgpKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6
Om1vZGlmaWVkKCkKK3sKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRVcmwoUVVybCgiZGF0
YTp0ZXh0L2h0bWwsPGJvZHk+Ymx1YiIpKTsKKyAgICBRVkVSSUZZKDo6d2FpdEZvclNpZ25hbCht
X3ZpZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKSk7CisKKyAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5zZXRVcmwoUVVybCgiZGF0YTp0ZXh0L2h0bWwsPGJvZHkgaWQ9Zm9vIGNvbnRlbnRl
ZGl0YWJsZT5ibGFoIikpOworICAgIFFWRVJJRlkoOjp3YWl0Rm9yU2lnbmFsKG1fdmlldywgU0lH
TkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKworICAgIFFWRVJJRlkoIW1fcGFnZS0+aXNNb2Rp
ZmllZCgpKTsKKworLy8gICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0
KCJhbGVydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9vJykpIik7CisgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Zm9vJykuZm9jdXMoKSIpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0luc2VydFRleHQnLCB0cnVlLCAnVGVzdCcpOyIp
OworCisgICAgUVZFUklGWShtX3BhZ2UtPmlzTW9kaWZpZWQoKSk7CisKKyAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdVbmRv
JywgdHJ1ZSk7Iik7CisKKyAgICBRVkVSSUZZKCFtX3BhZ2UtPmlzTW9kaWZpZWQoKSk7CisKKyAg
ICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmV4ZWND
b21tYW5kKCdSZWRvJywgdHJ1ZSk7Iik7CisKKyAgICBRVkVSSUZZKG1fcGFnZS0+aXNNb2RpZmll
ZCgpKTsKKworICAgIFFWRVJJRlkobV9wYWdlLT5oaXN0b3J5KCktPmNhbkdvQmFjaygpKTsKKyAg
ICBRVkVSSUZZKCFtX3BhZ2UtPmhpc3RvcnkoKS0+Y2FuR29Gb3J3YXJkKCkpOworICAgIFFDT01Q
QVJFKG1fcGFnZS0+aGlzdG9yeSgpLT5jb3VudCgpLCAyKTsKKyAgICBRVkVSSUZZKG1fcGFnZS0+
aGlzdG9yeSgpLT5iYWNrSXRlbSgpLmlzVmFsaWQoKSk7CisgICAgUVZFUklGWSghbV9wYWdlLT5o
aXN0b3J5KCktPmZvcndhcmRJdGVtKCkuaXNWYWxpZCgpKTsKKworICAgIG1fcGFnZS0+aGlzdG9y
eSgpLT5iYWNrKCk7CisgICAgUVZFUklGWSg6OndhaXRGb3JTaWduYWwobV92aWV3LCBTSUdOQUwo
bG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgUVZFUklGWSghbV9wYWdlLT5oaXN0b3J5KCkt
PmNhbkdvQmFjaygpKTsKKyAgICBRVkVSSUZZKG1fcGFnZS0+aGlzdG9yeSgpLT5jYW5Hb0Zvcndh
cmQoKSk7CisKKyAgICBRVkVSSUZZKCFtX3BhZ2UtPmlzTW9kaWZpZWQoKSk7CisKKyAgICBRVkVS
SUZZKG1fcGFnZS0+aGlzdG9yeSgpLT5jdXJyZW50SXRlbUluZGV4KCkgPT0gMCk7CisKKyAgICBt
X3BhZ2UtPmhpc3RvcnkoKS0+c2V0TWF4aW11bUl0ZW1Db3VudCgzKTsKKyAgICBRVkVSSUZZKG1f
cGFnZS0+aGlzdG9yeSgpLT5tYXhpbXVtSXRlbUNvdW50KCkgPT0gMyk7CisKKyAgICBRVmFyaWFu
dCB2YXJpYW50KCJzdHJpbmcgdGVzdCIpOworICAgIG1fcGFnZS0+aGlzdG9yeSgpLT5jdXJyZW50
SXRlbSgpLnNldFVzZXJEYXRhKHZhcmlhbnQpOworICAgIFFWRVJJRlkobV9wYWdlLT5oaXN0b3J5
KCktPmN1cnJlbnRJdGVtKCkudXNlckRhdGEoKS50b1N0cmluZygpID09ICJzdHJpbmcgdGVzdCIp
OworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0VXJsKFFVcmwoImRhdGE6dGV4dC9odG1s
LDxib2R5PlRoaXMgaXMgc2Vjb25kIHBhZ2UiKSk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+
c2V0VXJsKFFVcmwoImRhdGE6dGV4dC9odG1sLDxib2R5PlRoaXMgaXMgdGhpcmQgcGFnZSIpKTsK
KyAgICBRVkVSSUZZKG1fcGFnZS0+aGlzdG9yeSgpLT5jb3VudCgpID09IDIpOworICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPnNldFVybChRVXJsKCJkYXRhOnRleHQvaHRtbCw8Ym9keT5UaGlzIGlz
IGZvdXJ0aCBwYWdlIikpOworICAgIFFWRVJJRlkobV9wYWdlLT5oaXN0b3J5KCktPmNvdW50KCkg
PT0gMik7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0VXJsKFFVcmwoImRhdGE6dGV4dC9o
dG1sLDxib2R5PlRoaXMgaXMgZmlmdGggcGFnZSIpKTsKKyAgICBRVkVSSUZZKDo6d2FpdEZvclNp
Z25hbChtX3BhZ2UsIFNJR05BTChzYXZlRnJhbWVTdGF0ZVJlcXVlc3RlZChRV2ViRnJhbWUqLFFX
ZWJIaXN0b3J5SXRlbSopKSkpOworfQorCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTEzMzEKK3ZvaWQgdHN0X1FXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVu
ZGVudEFjdGlvbnNDcmFzaCgpCit7CisgICAgUVdlYlZpZXcgdmlldzsKKyAgICB2aWV3LnNldEh0
bWwoIjxwPnRlc3QiKTsKKyAgICBRUG9pbnQgcG9zKDAsIDApOworICAgIHZpZXcucGFnZSgpLT51
cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMocG9zKTsKKyAgICBRTWVudSogY29udGV4dE1l
bnUgPSAwOworICAgIGZvcmVhY2ggKFFPYmplY3QqIGNoaWxkLCB2aWV3LmNoaWxkcmVuKCkpIHsK
KyAgICAgICAgY29udGV4dE1lbnUgPSBxb2JqZWN0X2Nhc3Q8UU1lbnUqPihjaGlsZCk7CisgICAg
ICAgIGlmIChjb250ZXh0TWVudSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBRVkVS
SUZZKCFjb250ZXh0TWVudSk7Cit9CisKKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDM1Nwordm9pZCB0c3RfUVdlYlBhZ2U6OmNvbnRleHRNZW51Q3Jhc2goKQor
eworICAgIFFXZWJWaWV3IHZpZXc7CisgICAgdmlldy5zZXRIdG1sKCI8cD50ZXN0Iik7CisgICAg
UVBvaW50IHBvcygwLCAwKTsKKyAgICBRQ29udGV4dE1lbnVFdmVudCBldmVudChRQ29udGV4dE1l
bnVFdmVudDo6TW91c2UsIHBvcyk7CisgICAgdmlldy5wYWdlKCktPnN3YWxsb3dDb250ZXh0TWVu
dUV2ZW50KCZldmVudCk7CisgICAgdmlldy5wYWdlKCktPnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50
QWN0aW9ucyhwb3MpOworICAgIFFNZW51KiBjb250ZXh0TWVudSA9IDA7CisgICAgZm9yZWFjaCAo
UU9iamVjdCogY2hpbGQsIHZpZXcuY2hpbGRyZW4oKSkgeworICAgICAgICBjb250ZXh0TWVudSA9
IHFvYmplY3RfY2FzdDxRTWVudSo+KGNoaWxkKTsKKyAgICAgICAgaWYgKGNvbnRleHRNZW51KQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFFWRVJJRlkoY29udGV4dE1lbnUpOworICAg
IGRlbGV0ZSBjb250ZXh0TWVudTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmRhdGFiYXNlKCkK
K3sKKyAgICBRU3RyaW5nIHBhdGggPSB0bXBEaXJQYXRoKCk7CisgICAgbV9wYWdlLT5zZXR0aW5n
cygpLT5zZXRPZmZsaW5lU3RvcmFnZVBhdGgocGF0aCk7CisgICAgUVZFUklGWShtX3BhZ2UtPnNl
dHRpbmdzKCktPm9mZmxpbmVTdG9yYWdlUGF0aCgpID09IHBhdGgpOworCisgICAgUVdlYlNldHRp
bmdzOjpzZXRPZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSgxMDI0ICogMTAyNCk7CisgICAgUVZF
UklGWShRV2ViU2V0dGluZ3M6Om9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKCkgPT0gMTAyNCAq
IDEwMjQpOworCisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRp
bmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLCB0cnVlKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCkt
PnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVTdG9yYWdlRGF0YWJhc2VFbmFibGVk
LCB0cnVlKTsKKworICAgIFFTdHJpbmcgZGJGaWxlTmFtZSA9IHBhdGggKyAiRGF0YWJhc2VzLmRi
IjsKKworICAgIGlmIChRRmlsZTo6ZXhpc3RzKGRiRmlsZU5hbWUpKQorICAgICAgICBRRmlsZTo6
cmVtb3ZlKGRiRmlsZU5hbWUpOworCisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVdlYkZyYW1lKj4o
IlFXZWJGcmFtZSoiKTsKKyAgICBRU2lnbmFsU3B5IHNweShtX3BhZ2UsIFNJR05BTChkYXRhYmFz
ZVF1b3RhRXhjZWVkZWQoUVdlYkZyYW1lKixRU3RyaW5nKSkpOworICAgIG1fdmlldy0+c2V0SHRt
bChRU3RyaW5nKCI8aHRtbD48aGVhZD48c2NyaXB0PnZhciBkYjsgZGI9b3BlbkRhdGFiYXNlKCd0
ZXN0ZGInLCAnMS4wJywgJ3Rlc3QgZGF0YWJhc2UgQVBJJywgNTAwMDApOyA8L3NjcmlwdD48L2hl
YWQ+PGJvZHk+PGRpdj48L2Rpdj48L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwOi8vd3d3Lm15
ZXhhbXBsZS5jb20iKSk7CisgICAgUVRSWV9DT01QQVJFKHNweS5jb3VudCgpLCAxKTsKKyAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBkYjI7IGRiMj1vcGVu
RGF0YWJhc2UoJ3Rlc3RkYicsICcxLjAnLCAndGVzdCBkYXRhYmFzZSBBUEknLCA1MDAwMCk7Iik7
CisgICAgUVRSWV9DT01QQVJFKHNweS5jb3VudCgpLDEpOworCisgICAgbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJsb2NhbFN0b3JhZ2UudGVzdD0nVGhpcyBpcyBhIHRl
c3QgZm9yIGxvY2FsIHN0b3JhZ2UnOyIpOworICAgIG1fdmlldy0+c2V0SHRtbChRU3RyaW5nKCI8
aHRtbD48Ym9keSBpZD0nYic+dGV4dDwvYm9keT48L2h0bWw+IiksIFFVcmwoImh0dHA6Ly93d3cu
bXlleGFtcGxlLmNvbSIpKTsKKworICAgIFFWYXJpYW50IHMxID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJsb2NhbFN0b3JhZ2UudGVzdCIpOworICAgIFFDT01QQVJF
KHMxLnRvU3RyaW5nKCksIFFTdHJpbmcoIlRoaXMgaXMgYSB0ZXN0IGZvciBsb2NhbCBzdG9yYWdl
IikpOworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzZXNz
aW9uU3RvcmFnZS50ZXN0PSdUaGlzIGlzIGEgdGVzdCBmb3Igc2Vzc2lvbiBzdG9yYWdlJzsiKTsK
KyAgICBtX3ZpZXctPnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJvZHkgaWQ9J2InPnRleHQ8L2Jv
ZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwOi8vd3d3Lm15ZXhhbXBsZS5jb20iKSk7CisgICAgUVZh
cmlhbnQgczIgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInNlc3Np
b25TdG9yYWdlLnRlc3QiKTsKKyAgICBRQ09NUEFSRShzMi50b1N0cmluZygpLCBRU3RyaW5nKCJU
aGlzIGlzIGEgdGVzdCBmb3Igc2Vzc2lvbiBzdG9yYWdlIikpOworCisgICAgbV92aWV3LT5zZXRI
dG1sKFFTdHJpbmcoIjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48ZGl2PjwvZGl2PjwvYm9keT48
L2h0bWw+IiksIFFVcmwoImh0dHA6Ly93d3cubXlleGFtcGxlLmNvbSIpKTsKKyAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBkYjM7IGRiMz1vcGVuRGF0YWJh
c2UoJ3Rlc3RkYicsICcxLjAnLCAndGVzdCBkYXRhYmFzZSBBUEknLCA1MDAwMCk7ZGIzLnRyYW5z
YWN0aW9uKGZ1bmN0aW9uKHR4KSB7IHR4LmV4ZWN1dGVTcWwoJ0NSRUFURSBUQUJMRSBJRiBOT1Qg
RVhJU1RTIFRlc3QgKHRleHQgVEVYVCknLCBbXSk7IH0sIGZ1bmN0aW9uKHR4LCByZXN1bHQpIHsg
fSwgZnVuY3Rpb24odHgsIGVycm9yKSB7IH0pOyIpOworICAgIFFUZXN0OjpxV2FpdCgyMDApOwor
CisgICAgLy8gUmVtb3ZlIGFsbCBkYXRhYmFzZXMuCisgICAgUVdlYlNlY3VyaXR5T3JpZ2luIG9y
aWdpbiA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgUUxpc3Q8
UVdlYkRhdGFiYXNlPiBkYnMgPSBvcmlnaW4uZGF0YWJhc2VzKCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBkYnMuY291bnQoKTsgaSsrKSB7CisgICAgICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBk
YnNbaV0uZmlsZU5hbWUoKTsKKyAgICAgICAgUVZFUklGWShRRmlsZTo6ZXhpc3RzKGZpbGVOYW1l
KSk7CisgICAgICAgIFFXZWJEYXRhYmFzZTo6cmVtb3ZlRGF0YWJhc2UoZGJzW2ldKTsKKyAgICAg
ICAgUVZFUklGWSghUUZpbGU6OmV4aXN0cyhmaWxlTmFtZSkpOworICAgIH0KKyAgICBRVkVSSUZZ
KCFvcmlnaW4uZGF0YWJhc2VzKCkuc2l6ZSgpKTsKKyAgICAvLyBSZW1vdmUgcmVtb3ZlZCB0ZXN0
IDotKQorICAgIFFXZWJEYXRhYmFzZTo6cmVtb3ZlQWxsRGF0YWJhc2VzKCk7CisgICAgUVZFUklG
WSghb3JpZ2luLmRhdGFiYXNlcygpLnNpemUoKSk7Cit9CisKK2NsYXNzIFBsdWdpblBhZ2UgOiBw
dWJsaWMgUVdlYlBhZ2UKK3sKK3B1YmxpYzoKKyAgICBQbHVnaW5QYWdlKFFPYmplY3QgKnBhcmVu
dCA9IDApCisgICAgICAgIDogUVdlYlBhZ2UocGFyZW50KSB7fQorCisgICAgc3RydWN0IENhbGxJ
bmZvCisgICAgeworICAgICAgICBDYWxsSW5mbyhjb25zdCBRU3RyaW5nICZjLCBjb25zdCBRVXJs
ICZ1LAorICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nTGlzdCAmcG4sIGNvbnN0IFFTdHJp
bmdMaXN0ICZwdiwKKyAgICAgICAgICAgICAgICAgUU9iamVjdCAqcikKKyAgICAgICAgICAgIDog
Y2xhc3NpZChjKSwgdXJsKHUpLCBwYXJhbU5hbWVzKHBuKSwKKyAgICAgICAgICAgICAgcGFyYW1W
YWx1ZXMocHYpLCByZXR1cm5WYWx1ZShyKQorICAgICAgICAgICAge30KKyAgICAgICAgUVN0cmlu
ZyBjbGFzc2lkOworICAgICAgICBRVXJsIHVybDsKKyAgICAgICAgUVN0cmluZ0xpc3QgcGFyYW1O
YW1lczsKKyAgICAgICAgUVN0cmluZ0xpc3QgcGFyYW1WYWx1ZXM7CisgICAgICAgIFFPYmplY3Qg
KnJldHVyblZhbHVlOworICAgIH07CisKKyAgICBRTGlzdDxDYWxsSW5mbz4gY2FsbHM7CisKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIFFPYmplY3QgKmNyZWF0ZVBsdWdpbihjb25zdCBRU3RyaW5n
ICZjbGFzc2lkLCBjb25zdCBRVXJsICZ1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUVN0cmluZ0xpc3QgJnBhcmFtTmFtZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZ0xpc3QgJnBhcmFtVmFsdWVzKQorICAgIHsKKyAg
ICAgICAgUU9iamVjdCAqcmVzdWx0ID0gMDsKKyAgICAgICAgaWYgKGNsYXNzaWQgPT0gInB1c2hi
dXR0b24iKQorICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFFQdXNoQnV0dG9uKCk7CisjaWZuZGVm
IFFUX05PX0lOUFVURElBTE9HCisgICAgICAgIGVsc2UgaWYgKGNsYXNzaWQgPT0gImxpbmVlZGl0
IikKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBRTGluZUVkaXQoKTsKKyNlbmRpZgorICAgICAg
ICBlbHNlIGlmIChjbGFzc2lkID09ICJncmFwaGljc3dpZGdldCIpCisgICAgICAgICAgICByZXN1
bHQgPSBuZXcgUUdyYXBoaWNzV2lkZ2V0KCk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAg
ICAgICByZXN1bHQtPnNldE9iamVjdE5hbWUoY2xhc3NpZCk7CisgICAgICAgIGNhbGxzLmFwcGVu
ZChDYWxsSW5mbyhjbGFzc2lkLCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCByZXN1bHQp
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9OworCitzdGF0aWMgdm9pZCBjcmVh
dGVQbHVnaW4oUVdlYlZpZXcgKnZpZXcpCit7CisgICAgUVNpZ25hbFNweSBsb2FkU3B5KHZpZXcs
IFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKworICAgIFBsdWdpblBhZ2UqIG5ld1BhZ2Ug
PSBuZXcgUGx1Z2luUGFnZSh2aWV3KTsKKyAgICB2aWV3LT5zZXRQYWdlKG5ld1BhZ2UpOworCisg
ICAgLy8gdHlwZSBoYXMgdG8gYmUgYXBwbGljYXRpb24veC1xdC1wbHVnaW4KKyAgICB2aWV3LT5z
ZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxib2R5PjxvYmplY3QgdHlwZT0nYXBwbGljYXRpb24veC1m
b29iYXJiYXonIGNsYXNzaWQ9J3B1c2hidXR0b24nIGlkPSdteWJ1dHRvbicvPjwvYm9keT48L2h0
bWw+IikpOworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDEpOworICAgIFFDT01Q
QVJFKG5ld1BhZ2UtPmNhbGxzLmNvdW50KCksIDApOworCisgICAgdmlldy0+c2V0SHRtbChRU3Ry
aW5nKCI8aHRtbD48Ym9keT48b2JqZWN0IHR5cGU9J2FwcGxpY2F0aW9uL3gtcXQtcGx1Z2luJyBj
bGFzc2lkPSdwdXNoYnV0dG9uJyBpZD0nbXlidXR0b24nLz48L2JvZHk+PC9odG1sPiIpKTsKKyAg
ICBRVFJZX0NPTVBBUkUobG9hZFNweS5jb3VudCgpLCAyKTsKKyAgICBRQ09NUEFSRShuZXdQYWdl
LT5jYWxscy5jb3VudCgpLCAxKTsKKyAgICB7CisgICAgICAgIFBsdWdpblBhZ2U6OkNhbGxJbmZv
IGNpID0gbmV3UGFnZS0+Y2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgIFFDT01QQVJFKGNpLmNs
YXNzaWQsIFFTdHJpbmc6OmZyb21MYXRpbjEoInB1c2hidXR0b24iKSk7CisgICAgICAgIFFDT01Q
QVJFKGNpLnVybCwgUVVybCgpKTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1OYW1lcy5jb3Vu
dCgpLCAzKTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1WYWx1ZXMuY291bnQoKSwgMyk7Cisg
ICAgICAgIFFDT01QQVJFKGNpLnBhcmFtTmFtZXMuYXQoMCksIFFTdHJpbmc6OmZyb21MYXRpbjEo
InR5cGUiKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtVmFsdWVzLmF0KDApLCBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJhcHBsaWNhdGlvbi94LXF0LXBsdWdpbiIpKTsKKyAgICAgICAgUUNPTVBB
UkUoY2kucGFyYW1OYW1lcy5hdCgxKSwgUVN0cmluZzo6ZnJvbUxhdGluMSgiY2xhc3NpZCIpKTsK
KyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1WYWx1ZXMuYXQoMSksIFFTdHJpbmc6OmZyb21MYXRp
bjEoInB1c2hidXR0b24iKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtTmFtZXMuYXQoMiks
IFFTdHJpbmc6OmZyb21MYXRpbjEoImlkIikpOworICAgICAgICBRQ09NUEFSRShjaS5wYXJhbVZh
bHVlcy5hdCgyKSwgUVN0cmluZzo6ZnJvbUxhdGluMSgibXlidXR0b24iKSk7CisgICAgICAgIFFW
RVJJRlkoY2kucmV0dXJuVmFsdWUgIT0gMCk7CisgICAgICAgIFFWRVJJRlkoY2kucmV0dXJuVmFs
dWUtPmluaGVyaXRzKCJRUHVzaEJ1dHRvbiIpKTsKKyAgICB9CisgICAgLy8gdGVzdCBKUyBiaW5k
aW5ncworICAgIFFDT01QQVJFKG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWJ1dHRvbicpLnRvU3RyaW5nKCkiKS50b1N0
cmluZygpLAorICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21MYXRpbjEoIltvYmplY3QgSFRNTE9i
amVjdEVsZW1lbnRdIikpOworICAgIFFDT01QQVJFKG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFs
dWF0ZUphdmFTY3JpcHQoIm15YnV0dG9uLnRvU3RyaW5nKCkiKS50b1N0cmluZygpLAorICAgICAg
ICAgICAgIFFTdHJpbmc6OmZyb21MYXRpbjEoIltvYmplY3QgSFRNTE9iamVjdEVsZW1lbnRdIikp
OworICAgIFFDT01QQVJFKG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
InR5cGVvZiBteWJ1dHRvbi5vYmplY3ROYW1lIikudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICBR
U3RyaW5nOjpmcm9tTGF0aW4xKCJzdHJpbmciKSk7CisgICAgUUNPTVBBUkUobmV3UGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgibXlidXR0b24ub2JqZWN0TmFtZSIpLnRvU3Ry
aW5nKCksCisgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgicHVzaGJ1dHRvbiIpKTsK
KyAgICBRQ09NUEFSRShuZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0
eXBlb2YgbXlidXR0b24uY2xpY2tlZCIpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiZnVuY3Rpb24iKSk7CisgICAgUUNPTVBBUkUobmV3UGFnZS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgibXlidXR0b24uY2xpY2tlZC50b1N0cmluZygpIiku
dG9TdHJpbmcoKSwKKyAgICAgICAgICAgICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJmdW5jdGlvbiBj
bGlja2VkKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CisKKyAgICB2aWV3LT5zZXRIdG1s
KFFTdHJpbmcoIjxodG1sPjxib2R5Pjx0YWJsZT4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjx0cj48b2JqZWN0IHR5cGU9J2FwcGxpY2F0aW9uL3gtcXQtcGx1Z2luJyBjbGFzc2lkPSds
aW5lZWRpdCcgaWQ9J215ZWRpdCcvPjwvdHI+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICI8dHI+PG9iamVjdCB0eXBlPSdhcHBsaWNhdGlvbi94LXF0LXBsdWdpbicgY2xhc3NpZD0ncHVz
aGJ1dHRvbicgaWQ9J215YnV0dG9uJy8+PC90cj4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjwvdGFibGU+PC9ib2R5PjwvaHRtbD4iKSwgUVVybCgiaHR0cDovL2Zvby5iYXIuYmF6Iikp
OworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDMpOworICAgIFFDT01QQVJFKG5l
d1BhZ2UtPmNhbGxzLmNvdW50KCksIDIpOworICAgIHsKKyAgICAgICAgUGx1Z2luUGFnZTo6Q2Fs
bEluZm8gY2kgPSBuZXdQYWdlLT5jYWxscy50YWtlRmlyc3QoKTsKKyAgICAgICAgUUNPTVBBUkUo
Y2kuY2xhc3NpZCwgUVN0cmluZzo6ZnJvbUxhdGluMSgibGluZWVkaXQiKSk7CisgICAgICAgIFFD
T01QQVJFKGNpLnVybCwgUVVybCgpKTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1OYW1lcy5j
b3VudCgpLCAzKTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1WYWx1ZXMuY291bnQoKSwgMyk7
CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtTmFtZXMuYXQoMCksIFFTdHJpbmc6OmZyb21MYXRp
bjEoInR5cGUiKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtVmFsdWVzLmF0KDApLCBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCJhcHBsaWNhdGlvbi94LXF0LXBsdWdpbiIpKTsKKyAgICAgICAgUUNP
TVBBUkUoY2kucGFyYW1OYW1lcy5hdCgxKSwgUVN0cmluZzo6ZnJvbUxhdGluMSgiY2xhc3NpZCIp
KTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1WYWx1ZXMuYXQoMSksIFFTdHJpbmc6OmZyb21M
YXRpbjEoImxpbmVlZGl0IikpOworICAgICAgICBRQ09NUEFSRShjaS5wYXJhbU5hbWVzLmF0KDIp
LCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJpZCIpKTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1W
YWx1ZXMuYXQoMiksIFFTdHJpbmc6OmZyb21MYXRpbjEoIm15ZWRpdCIpKTsKKyAgICAgICAgUVZF
UklGWShjaS5yZXR1cm5WYWx1ZSAhPSAwKTsKKyAgICAgICAgUVZFUklGWShjaS5yZXR1cm5WYWx1
ZS0+aW5oZXJpdHMoIlFMaW5lRWRpdCIpKTsKKyAgICB9CisgICAgeworICAgICAgICBQbHVnaW5Q
YWdlOjpDYWxsSW5mbyBjaSA9IG5ld1BhZ2UtPmNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBR
Q09NUEFSRShjaS5jbGFzc2lkLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJwdXNoYnV0dG9uIikpOwor
ICAgICAgICBRQ09NUEFSRShjaS51cmwsIFFVcmwoKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBh
cmFtTmFtZXMuY291bnQoKSwgMyk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtVmFsdWVzLmNv
dW50KCksIDMpOworICAgICAgICBRQ09NUEFSRShjaS5wYXJhbU5hbWVzLmF0KDApLCBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJ0eXBlIikpOworICAgICAgICBRQ09NUEFSRShjaS5wYXJhbVZhbHVlcy5h
dCgwKSwgUVN0cmluZzo6ZnJvbUxhdGluMSgiYXBwbGljYXRpb24veC1xdC1wbHVnaW4iKSk7Cisg
ICAgICAgIFFDT01QQVJFKGNpLnBhcmFtTmFtZXMuYXQoMSksIFFTdHJpbmc6OmZyb21MYXRpbjEo
ImNsYXNzaWQiKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtVmFsdWVzLmF0KDEpLCBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCJwdXNoYnV0dG9uIikpOworICAgICAgICBRQ09NUEFSRShjaS5wYXJh
bU5hbWVzLmF0KDIpLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJpZCIpKTsKKyAgICAgICAgUUNPTVBB
UkUoY2kucGFyYW1WYWx1ZXMuYXQoMiksIFFTdHJpbmc6OmZyb21MYXRpbjEoIm15YnV0dG9uIikp
OworICAgICAgICBRVkVSSUZZKGNpLnJldHVyblZhbHVlICE9IDApOworICAgICAgICBRVkVSSUZZ
KGNpLnJldHVyblZhbHVlLT5pbmhlcml0cygiUVB1c2hCdXR0b24iKSk7CisgICAgfQorfQorCit2
b2lkIHRzdF9RV2ViUGFnZTo6Z3JhcGhpY3NXaWRnZXRQbHVnaW4oKQoreworICAgIG1fdmlldy0+
c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQsIHRy
dWUpOworICAgIFFHcmFwaGljc1dlYlZpZXcgd2ViVmlldzsKKworICAgIFFTaWduYWxTcHkgbG9h
ZFNweSgmd2ViVmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworCisgICAgUGx1Z2lu
UGFnZSogbmV3UGFnZSA9IG5ldyBQbHVnaW5QYWdlKCZ3ZWJWaWV3KTsKKyAgICB3ZWJWaWV3LnNl
dFBhZ2UobmV3UGFnZSk7CisKKyAgICAvLyB0eXBlIGhhcyB0byBiZSBhcHBsaWNhdGlvbi94LXF0
LXBsdWdpbgorICAgIHdlYlZpZXcuc2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT48b2JqZWN0
IHR5cGU9J2FwcGxpY2F0aW9uL3gtZm9vYmFyYmF6JyBjbGFzc2lkPSdncmFwaGljc3dpZGdldCcg
aWQ9J215Z3JhcGhpY3N3aWRnZXQnLz48L2JvZHk+PC9odG1sPiIpKTsKKyAgICBRVFJZX0NPTVBB
UkUobG9hZFNweS5jb3VudCgpLCAxKTsKKyAgICBRQ09NUEFSRShuZXdQYWdlLT5jYWxscy5jb3Vu
dCgpLCAwKTsKKworICAgIHdlYlZpZXcuc2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT48b2Jq
ZWN0IHR5cGU9J2FwcGxpY2F0aW9uL3gtcXQtcGx1Z2luJyBjbGFzc2lkPSdncmFwaGljc3dpZGdl
dCcgaWQ9J215Z3JhcGhpY3N3aWRnZXQnLz48L2JvZHk+PC9odG1sPiIpKTsKKyAgICBRVFJZX0NP
TVBBUkUobG9hZFNweS5jb3VudCgpLCAyKTsKKyAgICBRQ09NUEFSRShuZXdQYWdlLT5jYWxscy5j
b3VudCgpLCAxKTsKKyAgICB7CisgICAgICAgIFBsdWdpblBhZ2U6OkNhbGxJbmZvIGNpID0gbmV3
UGFnZS0+Y2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgIFFDT01QQVJFKGNpLmNsYXNzaWQsIFFT
dHJpbmc6OmZyb21MYXRpbjEoImdyYXBoaWNzd2lkZ2V0IikpOworICAgICAgICBRQ09NUEFSRShj
aS51cmwsIFFVcmwoKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtTmFtZXMuY291bnQoKSwg
Myk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtVmFsdWVzLmNvdW50KCksIDMpOworICAgICAg
ICBRQ09NUEFSRShjaS5wYXJhbU5hbWVzLmF0KDApLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJ0eXBl
IikpOworICAgICAgICBRQ09NUEFSRShjaS5wYXJhbVZhbHVlcy5hdCgwKSwgUVN0cmluZzo6ZnJv
bUxhdGluMSgiYXBwbGljYXRpb24veC1xdC1wbHVnaW4iKSk7CisgICAgICAgIFFDT01QQVJFKGNp
LnBhcmFtTmFtZXMuYXQoMSksIFFTdHJpbmc6OmZyb21MYXRpbjEoImNsYXNzaWQiKSk7CisgICAg
ICAgIFFDT01QQVJFKGNpLnBhcmFtVmFsdWVzLmF0KDEpLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJn
cmFwaGljc3dpZGdldCIpKTsKKyAgICAgICAgUUNPTVBBUkUoY2kucGFyYW1OYW1lcy5hdCgyKSwg
UVN0cmluZzo6ZnJvbUxhdGluMSgiaWQiKSk7CisgICAgICAgIFFDT01QQVJFKGNpLnBhcmFtVmFs
dWVzLmF0KDIpLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCJteWdyYXBoaWNzd2lkZ2V0IikpOworICAg
ICAgICBRVkVSSUZZKGNpLnJldHVyblZhbHVlKTsKKyAgICAgICAgUVZFUklGWShjaS5yZXR1cm5W
YWx1ZS0+aW5oZXJpdHMoIlFHcmFwaGljc1dpZGdldCIpKTsKKyAgICB9CisgICAgLy8gdGVzdCBK
UyBiaW5kaW5ncworICAgIFFDT01QQVJFKG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWdyYXBoaWNzd2lkZ2V0JykudG9T
dHJpbmcoKSIpLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgUVN0cmluZzo6ZnJvbUxhdGluMSgi
W29iamVjdCBIVE1MT2JqZWN0RWxlbWVudF0iKSk7CisgICAgUUNPTVBBUkUobmV3UGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgibXlncmFwaGljc3dpZGdldC50b1N0cmluZygp
IikudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJbb2JqZWN0
IEhUTUxPYmplY3RFbGVtZW50XSIpKTsKKyAgICBRQ09NUEFSRShuZXdQYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0eXBlb2YgbXlncmFwaGljc3dpZGdldC5vYmplY3ROYW1l
IikudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJzdHJpbmci
KSk7CisgICAgUUNPTVBBUkUobmV3UGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgibXlncmFwaGljc3dpZGdldC5vYmplY3ROYW1lIikudG9TdHJpbmcoKSwKKyAgICAgICAgICAg
ICBRU3RyaW5nOjpmcm9tTGF0aW4xKCJncmFwaGljc3dpZGdldCIpKTsKKyAgICBRQ09NUEFSRShu
ZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ0eXBlb2YgbXlncmFwaGlj
c3dpZGdldC5nZW9tZXRyeUNoYW5nZWQiKS50b1N0cmluZygpLAorICAgICAgICAgICAgIFFTdHJp
bmc6OmZyb21MYXRpbjEoImZ1bmN0aW9uIikpOworICAgIFFDT01QQVJFKG5ld1BhZ2UtPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIm15Z3JhcGhpY3N3aWRnZXQuZ2VvbWV0cnlDaGFu
Z2VkLnRvU3RyaW5nKCkiKS50b1N0cmluZygpLAorICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21M
YXRpbjEoImZ1bmN0aW9uIGdlb21ldHJ5Q2hhbmdlZCgpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
IikpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRlUGx1Z2luV2l0aFBsdWdpbnNFbmFi
bGVkKCkKK3sKKyAgICBtX3ZpZXctPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGlu
Z3M6OlBsdWdpbnNFbmFibGVkLCB0cnVlKTsKKyAgICBjcmVhdGVQbHVnaW4obV92aWV3KTsKK30K
Kwordm9pZCB0c3RfUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbldpdGhQbHVnaW5zRGlzYWJsZWQoKQor
eworICAgIC8vIFF0IFBsdWdpbnMgc2hvdWxkIGJlIGxvYWRlZCBieSBRdFdlYktpdCBldmVuIHdo
ZW4gUGx1Z2luc0VuYWJsZWQgaXMKKyAgICAvLyBmYWxzZS4gVGhlIGNsaWVudCBkZWNpZGVzIHdo
ZXRoZXIgYSBRdCBwbHVnaW4gaXMgZW5hYmxlZCBvciBub3Qgd2hlbgorICAgIC8vIGl0IGRlY2lk
ZXMgd2hldGhlciBvciBub3QgdG8gaW5zdGFudGlhdGUgaXQuCisgICAgbV92aWV3LT5zZXR0aW5n
cygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwgZmFsc2UpOwor
ICAgIGNyZWF0ZVBsdWdpbihtX3ZpZXcpOworfQorCisvLyBTdGFuZGFyZCBiYXNlIGNsYXNzIGZv
ciB0ZW1wbGF0ZSBQbHVnaW5UcmFjZXJQYWdlLiBJbiB0ZXN0cyBpdCBpcyB1c2VkIGFzIGludGVy
ZmFjZS4KK2NsYXNzIFBsdWdpbkNvdW50ZXJQYWdlIDogcHVibGljIFFXZWJQYWdlIHsKK3B1Ymxp
YzoKKyAgICBpbnQgbV9jb3VudDsKKyAgICBRUG9pbnRlcjxRT2JqZWN0PiBtX3dpZGdldDsKKyAg
ICBRT2JqZWN0KiBtX3BsdWdpblBhcmVudDsKKyAgICBQbHVnaW5Db3VudGVyUGFnZShRT2JqZWN0
KiBwYXJlbnQgPSAwKQorICAgICAgICA6IFFXZWJQYWdlKHBhcmVudCkKKyAgICAgICAgLCBtX2Nv
dW50KDApCisgICAgICAgICwgbV9wbHVnaW5QYXJlbnQoMCkKKyAgICB7CisgICAgICAgc2V0dGlu
Z3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQsIHRydWUpOwor
ICAgIH0KKyAgICB+UGx1Z2luQ291bnRlclBhZ2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGx1
Z2luUGFyZW50KQorICAgICAgICAgICAgbV9wbHVnaW5QYXJlbnQtPmRlbGV0ZUxhdGVyKCk7Cisg
ICAgfQorfTsKKwordGVtcGxhdGU8Y2xhc3MgVD4KK2NsYXNzIFBsdWdpblRyYWNlclBhZ2UgOiBw
dWJsaWMgUGx1Z2luQ291bnRlclBhZ2UgeworcHVibGljOgorICAgIFBsdWdpblRyYWNlclBhZ2Uo
UU9iamVjdCogcGFyZW50ID0gMCkKKyAgICAgICAgOiBQbHVnaW5Db3VudGVyUGFnZShwYXJlbnQp
CisgICAgeworICAgICAgICAvLyB0aGlzIGlzIGEgZHVtbXkgcGFyZW50IG9iamVjdCBmb3IgdGhl
IGNyZWF0ZWQgcGx1Z2luCisgICAgICAgIG1fcGx1Z2luUGFyZW50ID0gbmV3IFQ7CisgICAgfQor
ICAgIHZpcnR1YWwgUU9iamVjdCogY3JlYXRlUGx1Z2luKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBR
VXJsJiwgY29uc3QgUVN0cmluZ0xpc3QmLCBjb25zdCBRU3RyaW5nTGlzdCYpCisgICAgeworICAg
ICAgICBtX2NvdW50Kys7CisgICAgICAgIG1fd2lkZ2V0ID0gbmV3IFQ7CisgICAgICAgIC8vIG5l
ZWQgYSBjYXN0IHRvIHRoZSBzcGVjaWZpYyB0eXBlLCBhcyBRT2JqZWN0OjpzZXRQYXJlbnQgY2Fu
bm90IGJlIGNhbGxlZCwKKyAgICAgICAgLy8gYmVjYXVzZSBpdCBpcyBub3QgdmlydHVhbC4gSW5z
dGVhZCBpdCBpcyBuZWNlc2FyeSB0byBjYWxsIFFXaWRnZXQ6OnNldFBhcmVudCwKKyAgICAgICAg
Ly8gd2hpY2ggYWxzbyB0YWtlcyBhIFFXaWRnZXQqIGluc3RlYWQgb2YgYSBRT2JqZWN0Ki4gVGhl
cmVmb3JlIHdlIG5lZWQgdG8KKyAgICAgICAgLy8gdXBjYXN0IHRvIFQqLCB3aGljaCBpcyBhIFFX
aWRnZXQuCisgICAgICAgIHN0YXRpY19jYXN0PFQqPihtX3dpZGdldC5kYXRhKCkpLT5zZXRQYXJl
bnQoc3RhdGljX2Nhc3Q8VCo+KG1fcGx1Z2luUGFyZW50KSk7CisgICAgICAgIHJldHVybiBtX3dp
ZGdldC5kYXRhKCk7CisgICAgfQorfTsKKworY2xhc3MgUGx1Z2luRmFjdG9yeSB7CitwdWJsaWM6
CisgICAgZW51bSBGYWN0b3JlZFR5cGUge1FXaWRnZXRUeXBlLCBRR3JhcGhpY3NXaWRnZXRUeXBl
fTsKKyAgICBzdGF0aWMgUGx1Z2luQ291bnRlclBhZ2UqIGNyZWF0ZShGYWN0b3JlZFR5cGUgdHlw
ZSwgUU9iamVjdCogcGFyZW50ID0gMCkKKyAgICB7CisgICAgICAgIFBsdWdpbkNvdW50ZXJQYWdl
KiByZXN1bHQgPSAwOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBRV2lk
Z2V0VHlwZToKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBQbHVnaW5UcmFjZXJQYWdlPFFXaWRn
ZXQ+KHBhcmVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBRR3JhcGhpY3NX
aWRnZXRUeXBlOgorICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFBsdWdpblRyYWNlclBhZ2U8UUdy
YXBoaWNzV2lkZ2V0PihwYXJlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6IHsvKk9vcHMqL307CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBzdGF0aWMgdm9pZCBwcmVwYXJlVGVzdERhdGEoKQorICAgIHsKKyAgICAgICAgUVRl
c3Q6OmFkZENvbHVtbjxpbnQ+KCJ0eXBlIik7CisgICAgICAgIFFUZXN0OjpuZXdSb3coIlFXaWRn
ZXQiKSA8PCAoaW50KVBsdWdpbkZhY3Rvcnk6OlFXaWRnZXRUeXBlOworICAgICAgICBRVGVzdDo6
bmV3Um93KCJRR3JhcGhpY3NXaWRnZXQiKSA8PCAoaW50KVBsdWdpbkZhY3Rvcnk6OlFHcmFwaGlj
c1dpZGdldFR5cGU7CisgICAgfQorfTsKKwordm9pZCB0c3RfUVdlYlBhZ2U6OmRlc3Ryb3lQbHVn
aW5fZGF0YSgpCit7CisgICAgUGx1Z2luRmFjdG9yeTo6cHJlcGFyZVRlc3REYXRhKCk7Cit9CisK
K3ZvaWQgdHN0X1FXZWJQYWdlOjpkZXN0cm95UGx1Z2luKCkKK3sKKyAgICBRRkVUQ0goaW50LCB0
eXBlKTsKKyAgICBQbHVnaW5Db3VudGVyUGFnZSogcGFnZSA9IFBsdWdpbkZhY3Rvcnk6OmNyZWF0
ZSgoUGx1Z2luRmFjdG9yeTo6RmFjdG9yZWRUeXBlKXR5cGUsIG1fdmlldyk7CisgICAgbV92aWV3
LT5zZXRQYWdlKHBhZ2UpOworCisgICAgLy8gd2UgY3JlYXRlIHRoZSBwbHVnaW4sIHNvIHRoZSB3
aWRnZXQgc2hvdWxkIGJlIGNvbnN0cnVjdGVkCisgICAgUVN0cmluZyBjb250ZW50KCI8aHRtbD48
Ym9keT48b2JqZWN0IHR5cGU9XCJhcHBsaWNhdGlvbi94LXF0LXBsdWdpblwiIGNsYXNzaWQ9XCJR
UHJvZ3Jlc3NCYXJcIj48L29iamVjdD48L2JvZHk+PC9odG1sPiIpOworICAgIG1fdmlldy0+c2V0
SHRtbChjb250ZW50KTsKKyAgICBRVkVSSUZZKHBhZ2UtPm1fd2lkZ2V0KTsKKyAgICBRQ09NUEFS
RShwYWdlLT5tX2NvdW50LCAxKTsKKworICAgIC8vIG5hdmlnYXRlIGF3YXksIHRoZSBwbHVnaW4g
d2lkZ2V0IHNob3VsZCBiZSBkZXN0cnVjdGVkCisgICAgbV92aWV3LT5zZXRIdG1sKCI8aHRtbD48
Ym9keT5IaTwvYm9keT48L2h0bWw+Iik7CisgICAgUVRlc3RFdmVudExvb3A6Omluc3RhbmNlKCku
ZW50ZXJMb29wKDEpOworICAgIFFWRVJJRlkoIXBhZ2UtPm1fd2lkZ2V0KTsKK30KKwordm9pZCB0
c3RfUVdlYlBhZ2U6OmNyZWF0ZVZpZXdsZXNzUGx1Z2luX2RhdGEoKQoreworICAgIFBsdWdpbkZh
Y3Rvcnk6OnByZXBhcmVUZXN0RGF0YSgpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6Y3JlYXRl
Vmlld2xlc3NQbHVnaW4oKQoreworICAgIFFGRVRDSChpbnQsIHR5cGUpOworICAgIFBsdWdpbkNv
dW50ZXJQYWdlKiBwYWdlID0gUGx1Z2luRmFjdG9yeTo6Y3JlYXRlKChQbHVnaW5GYWN0b3J5OjpG
YWN0b3JlZFR5cGUpdHlwZSk7CisgICAgUVN0cmluZyBjb250ZW50KCI8aHRtbD48Ym9keT48b2Jq
ZWN0IHR5cGU9XCJhcHBsaWNhdGlvbi94LXF0LXBsdWdpblwiIGNsYXNzaWQ9XCJRUHJvZ3Jlc3NC
YXJcIj48L29iamVjdD48L2JvZHk+PC9odG1sPiIpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5z
ZXRIdG1sKGNvbnRlbnQpOworICAgIFFDT01QQVJFKHBhZ2UtPm1fY291bnQsIDEpOworICAgIFFW
RVJJRlkocGFnZS0+bV93aWRnZXQpOworICAgIFFWRVJJRlkocGFnZS0+bV9wbHVnaW5QYXJlbnQp
OworICAgIFFWRVJJRlkocGFnZS0+bV93aWRnZXQuZGF0YSgpLT5wYXJlbnQoKSA9PSBwYWdlLT5t
X3BsdWdpblBhcmVudCk7CisgICAgZGVsZXRlIHBhZ2U7CisKK30KKwordm9pZCB0c3RfUVdlYlBh
Z2U6Om11bHRpcGxlUGFnZUdyb3Vwc0FuZExvY2FsU3RvcmFnZSgpCit7CisgICAgUURpciBkaXIo
dG1wRGlyUGF0aCgpKTsKKyAgICBkaXIubWtkaXIoInBhdGgxIik7CisgICAgZGlyLm1rZGlyKCJw
YXRoMiIpOworCisgICAgUVdlYlZpZXcgdmlldzE7CisgICAgUVdlYlZpZXcgdmlldzI7CisKKyAg
ICB2aWV3MS5wYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Okxv
Y2FsU3RvcmFnZUVuYWJsZWQsIHRydWUpOworICAgIHZpZXcxLnBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0TG9jYWxTdG9yYWdlUGF0aChRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnModG1wRGlyUGF0aCgp
ICsgIi9wYXRoMSIpKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViUGFnZVNldEdy
b3VwTmFtZSh2aWV3MS5wYWdlKCktPmhhbmRsZSgpLCAiZ3JvdXAxIik7CisgICAgdmlldzIucGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VF
bmFibGVkLCB0cnVlKTsgICAgCisgICAgdmlldzIucGFnZSgpLT5zZXR0aW5ncygpLT5zZXRMb2Nh
bFN0b3JhZ2VQYXRoKFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyh0bXBEaXJQYXRoKCkgKyAiL3Bh
dGgyIikpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1l
KHZpZXcyLnBhZ2UoKS0+aGFuZGxlKCksICJncm91cDIiKTsKKyAgICBRQ09NUEFSRShEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6d2ViUGFnZUdyb3VwTmFtZSh2aWV3MS5wYWdlKCktPmhhbmRsZSgp
KSwgUVN0cmluZygiZ3JvdXAxIikpOworICAgIFFDT01QQVJFKER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0Ojp3ZWJQYWdlR3JvdXBOYW1lKHZpZXcyLnBhZ2UoKS0+aGFuZGxlKCkpLCBRU3RyaW5nKCJn
cm91cDIiKSk7CisKKworICAgIHZpZXcxLnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJvZHk+IDwv
Ym9keT48L2h0bWw+IiksIFFVcmwoImh0dHA6Ly93d3cubXlleGFtcGxlLmNvbSIpKTsKKyAgICB2
aWV3Mi5zZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxib2R5PiA8L2JvZHk+PC9odG1sPiIpLCBRVXJs
KCJodHRwOi8vd3d3Lm15ZXhhbXBsZS5jb20iKSk7CisKKyAgICB2aWV3MS5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImxvY2FsU3RvcmFnZS50ZXN0PSd2YWx1ZTEnOyIp
OworICAgIHZpZXcyLnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgibG9j
YWxTdG9yYWdlLnRlc3Q9J3ZhbHVlMic7Iik7CisKKyAgICB2aWV3MS5zZXRIdG1sKFFTdHJpbmco
IjxodG1sPjxib2R5PiA8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwOi8vd3d3Lm15ZXhhbXBs
ZS5jb20iKSk7CisgICAgdmlldzIuc2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT4gPC9ib2R5
PjwvaHRtbD4iKSwgUVVybCgiaHR0cDovL3d3dy5teWV4YW1wbGUuY29tIikpOworCisgICAgUVZh
cmlhbnQgczEgPSB2aWV3MS5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
ImxvY2FsU3RvcmFnZS50ZXN0Iik7CisgICAgUUNPTVBBUkUoczEudG9TdHJpbmcoKSwgUVN0cmlu
ZygidmFsdWUxIikpOworCisgICAgUVZhcmlhbnQgczIgPSB2aWV3Mi5wYWdlKCktPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImxvY2FsU3RvcmFnZS50ZXN0Iik7CisgICAgUUNPTVBB
UkUoczIudG9TdHJpbmcoKSwgUVN0cmluZygidmFsdWUyIikpOworCisgICAgUVRlc3Q6OnFXYWl0
KDEwMDApOworCisgICAgUUZpbGU6OnJlbW92ZShRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnModG1w
RGlyUGF0aCgpICsgIi9wYXRoMS9odHRwX3d3dy5teWV4YW1wbGUuY29tXzAubG9jYWxzdG9yYWdl
IikpOworICAgIFFGaWxlOjpyZW1vdmUoUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKHRtcERpclBh
dGgoKSArICIvcGF0aDIvaHR0cF93d3cubXlleGFtcGxlLmNvbV8wLmxvY2Fsc3RvcmFnZSIpKTsK
KyAgICBkaXIucm1kaXIoUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKCIuL3BhdGgxIikpOworICAg
IGRpci5ybWRpcihRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnMoIi4vcGF0aDIiKSk7Cit9CisKK2Ns
YXNzIEN1cnNvclRyYWNrZWRQYWdlIDogcHVibGljIFFXZWJQYWdlCit7CitwdWJsaWM6CisKKyAg
ICBDdXJzb3JUcmFja2VkUGFnZShRV2lkZ2V0ICpwYXJlbnQgPSAwKTogUVdlYlBhZ2UocGFyZW50
KSB7CisgICAgICAgIHNldFZpZXdwb3J0U2l6ZShRU2l6ZSgxMDI0LCA3NjgpKTsgLy8gYmlnIHNw
YWNlCisgICAgfQorCisgICAgUVN0cmluZyBzZWxlY3RlZFRleHQoKSB7CisgICAgICAgIHJldHVy
biBtYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgaW50IHNlbGVjdGlvblN0YXJ0
T2Zmc2V0KCkgeworICAgICAgICByZXR1cm4gbWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgid2luZG93LmdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuc3RhcnRPZmZzZXQiKS50b0lu
dCgpOworICAgIH0KKworICAgIGludCBzZWxlY3Rpb25FbmRPZmZzZXQoKSB7CisgICAgICAgIHJl
dHVybiBtYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkuZ2V0UmFuZ2VBdCgwKS5lbmRPZmZzZXQiKS50b0ludCgpOworICAgIH0KKworICAgIC8vIHRy
dWUgaWYgc3RhcnQgb2Zmc2V0ID09IGVuZCBvZmZzZXQsIGkuZS4gbm8gc2VsZWN0ZWQgdGV4dAor
ICAgIGludCBpc1NlbGVjdGlvbkNvbGxhcHNlZCgpIHsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0
KDApLmNvbGxhcHNlZCIpLnRvQm9vbCgpOworICAgIH0KK307CisKK3ZvaWQgdHN0X1FXZWJQYWdl
OjpjdXJzb3JNb3ZlbWVudHMoKQoreworICAgIEN1cnNvclRyYWNrZWRQYWdlKiBwYWdlID0gbmV3
IEN1cnNvclRyYWNrZWRQYWdlOworICAgIFFTdHJpbmcgY29udGVudCgiPGh0bWw+PGJvZHk+PHAg
aWQ9b25lPlRoZSBxdWljayBicm93biBmb3g8L3A+PHAgaWQ9dHdvPmp1bXBzIG92ZXIgdGhlIGxh
enkgZG9nPC9wPjxwPk1heSB0aGUgc291cmNlPGJyLz5iZSB3aXRoIHlvdSE8L3A+PC9ib2R5Pjwv
aHRtbD4iKTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbChjb250ZW50KTsKKworICAg
IC8vIHRoaXMgd2lsbCBzZWxlY3QgdGhlIGZpcnN0IHBhcmFncmFwaAorICAgIFFTdHJpbmcgc2Ny
aXB0ID0gInZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7ICIgXAorICAgICAgICAi
dmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm9uZVwiKTsgIiBcCisgICAgICAg
ICJyYW5nZS5zZWxlY3ROb2RlKG5vZGUpOyAiIFwKKyAgICAgICAgImdldFNlbGVjdGlvbigpLmFk
ZFJhbmdlKHJhbmdlKTsiOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3Jp
cHQoc2NyaXB0KTsKKyAgICBRQ09NUEFSRShwYWdlLT5zZWxlY3RlZFRleHQoKS50cmltbWVkKCks
IFFTdHJpbmc6OmZyb21MYXRpbjEoIlRoZSBxdWljayBicm93biBmb3giKSk7CisKKyAgICBRUmVn
RXhwIHJlZ0V4cCgiIHN0eWxlPVwiLipcIiIpOworICAgIHJlZ0V4cC5zZXRNaW5pbWFsKHRydWUp
OworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGVkSHRtbCgpLnRyaW1tZWQoKS5yZXBsYWNlKHJl
Z0V4cCwgIiIpLCBRU3RyaW5nOjpmcm9tTGF0aW4xKCI8cCBpZD1cIm9uZVwiPlRoZSBxdWljayBi
cm93biBmb3g8L3A+IikpOworCisgICAgLy8gdGhlc2UgYWN0aW9ucyBtdXN0IGV4aXN0CisgICAg
UVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb05leHRDaGFyKSAhPSAwKTsKKyAg
ICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJldmlvdXNDaGFyKSAhPSAw
KTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dFdvcmQpICE9
IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9QcmV2aW91c1dv
cmQpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9OZXh0
TGluZSkgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1By
ZXZpb3VzTGluZSkgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1v
dmVUb1N0YXJ0T2ZMaW5lKSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6TW92ZVRvRW5kT2ZMaW5lKSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2Vi
UGFnZTo6TW92ZVRvU3RhcnRPZkJsb2NrKSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlv
bihRV2ViUGFnZTo6TW92ZVRvRW5kT2ZCbG9jaykgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5h
Y3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZEb2N1bWVudCkgIT0gMCk7CisgICAgUVZFUklG
WShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb0VuZE9mRG9jdW1lbnQpICE9IDApOworCisg
ICAgLy8gcmlnaHQgbm93IHRoZXkgYXJlIGRpc2FibGVkIGJlY2F1c2UgY29udGVudEVkaXRhYmxl
IGlzIGZhbHNlCisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9OZXh0
Q2hhciktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFX
ZWJQYWdlOjpNb3ZlVG9QcmV2aW91c0NoYXIpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFD
T01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dFdvcmQpLT5pc0VuYWJsZWQo
KSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJl
dmlvdXNXb3JkKS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rp
b24oUVdlYlBhZ2U6Ok1vdmVUb05leHRMaW5lKS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBR
Q09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1ByZXZpb3VzTGluZSktPmlzRW5h
YmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3Zl
VG9TdGFydE9mTGluZSktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+
YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOwor
ICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvU3RhcnRPZkJsb2NrKS0+
aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6
Ok1vdmVUb0VuZE9mQmxvY2spLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBh
Z2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvU3RhcnRPZkRvY3VtZW50KS0+aXNFbmFibGVkKCks
IGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb0VuZE9m
RG9jdW1lbnQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworCisgICAgLy8gbWFrZSBpdCBlZGl0YWJs
ZSBiZWZvcmUgbmF2aWdhdGluZyB0aGUgY3Vyc29yCisgICAgcGFnZS0+c2V0Q29udGVudEVkaXRh
YmxlKHRydWUpOworCisgICAgLy8gaGVyZSB0aGUgYWN0aW9ucyBhcmUgZW5hYmxlZCBhZnRlciBj
b250ZW50RWRpdGFibGUgaXMgdHJ1ZQorICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6TW92ZVRvTmV4dENoYXIpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFn
ZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9QcmV2aW91c0NoYXIpLT5pc0VuYWJsZWQoKSwgdHJ1
ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9OZXh0V29yZCkt
PmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6
Ok1vdmVUb1ByZXZpb3VzV29yZCktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShw
YWdlLT5hY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb05leHRMaW5lKS0+aXNFbmFibGVkKCksIHRydWUp
OworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJldmlvdXNMaW5l
KS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6TW92ZVRvU3RhcnRPZkxpbmUpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUo
cGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpLT5pc0VuYWJsZWQoKSwgdHJ1
ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9TdGFydE9mQmxv
Y2spLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQ
YWdlOjpNb3ZlVG9FbmRPZkJsb2NrKS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJF
KHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvU3RhcnRPZkRvY3VtZW50KS0+aXNFbmFibGVk
KCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6TW92ZVRvRW5k
T2ZEb2N1bWVudCktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKworICAgIC8vIGN1cnNvciB3aWxsIGJl
IGJlZm9yZSB0aGUgd29yZCAianVtcCIKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdl
OjpNb3ZlVG9OZXh0Q2hhcik7CisgICAgUVZFUklGWShwYWdlLT5pc1NlbGVjdGlvbkNvbGxhcHNl
ZCgpKTsKKyAgICBRQ09NUEFSRShwYWdlLT5zZWxlY3Rpb25TdGFydE9mZnNldCgpLCAwKTsKKwor
ICAgIC8vIGN1cnNvciB3aWxsIGJlIGJldHdlZW4gJ2onIGFuZCAndScgaW4gdGhlIHdvcmQgImp1
bXAiCisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dENoYXIpOwor
ICAgIFFWRVJJRlkocGFnZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUo
cGFnZS0+c2VsZWN0aW9uU3RhcnRPZmZzZXQoKSwgMSk7CisKKyAgICAvLyBjdXJzb3Igd2lsbCBi
ZSBiZXR3ZWVuICd1JyBhbmQgJ20nIGluIHRoZSB3b3JkICJqdW1wIgorICAgIHBhZ2UtPnRyaWdn
ZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb05leHRDaGFyKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlz
U2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0
T2Zmc2V0KCksIDIpOworCisgICAgLy8gY3Vyc29yIHdpbGwgYmUgYWZ0ZXIgdGhlIHdvcmQgImp1
bXAiCisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dFdvcmQpOwor
ICAgIFFWRVJJRlkocGFnZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUo
cGFnZS0+c2VsZWN0aW9uU3RhcnRPZmZzZXQoKSwgNSk7CisKKyAgICAvLyBjdXJzb3Igd2lsbCBi
ZSBhZnRlciB0aGUgd29yZCAibGF6eSIKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdl
OjpNb3ZlVG9OZXh0V29yZCk7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92
ZVRvTmV4dFdvcmQpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb05l
eHRXb3JkKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAg
IFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDE5KTsKKworICAgIC8vIGN1
cnNvciB3aWxsIGJlIGJldHdlZW4gJ3onIGFuZCAneScgaW4gImxhenkiCisgICAgcGFnZS0+dHJp
Z2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJldmlvdXNDaGFyKTsKKyAgICBRVkVSSUZZKHBh
Z2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlv
blN0YXJ0T2Zmc2V0KCksIDE4KTsKKworICAgIC8vIGN1cnNvciB3aWxsIGJlIGJldHdlZW4gJ2En
IGFuZCAneicgaW4gImxhenkiCisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92
ZVRvUHJldmlvdXNDaGFyKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2Vk
KCkpOworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDE3KTsKKwor
ICAgIC8vIGN1cnNvciB3aWxsIGJlIGJlZm9yZSB0aGUgd29yZCAibGF6eSIKKyAgICBwYWdlLT50
cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9QcmV2aW91c1dvcmQpOworICAgIFFWRVJJRlko
cGFnZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0
aW9uU3RhcnRPZmZzZXQoKSwgMTUpOworCisgICAgLy8gY3Vyc29yIHdpbGwgYmUgYmVmb3JlIHRo
ZSB3b3JkICJxdWljayIKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9Q
cmV2aW91c1dvcmQpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1By
ZXZpb3VzV29yZCk7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJl
dmlvdXNXb3JkKTsKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9QcmV2
aW91c1dvcmQpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1ByZXZp
b3VzV29yZCk7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJldmlv
dXNXb3JkKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAg
IFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDQpOworCisgICAgLy8gY3Vy
c29yIHdpbGwgYmUgYmV0d2VlbiAncCcgYW5kICdzJyBpbiB0aGUgd29yZCAianVtcHMiCisgICAg
cGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dFdvcmQpOworICAgIHBhZ2Ut
PnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb05leHRXb3JkKTsKKyAgICBwYWdlLT50cmln
Z2VyQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9OZXh0V29yZCk7CisgICAgcGFnZS0+dHJpZ2dlckFj
dGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dENoYXIpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2U6Ok1vdmVUb05leHRDaGFyKTsKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQ
YWdlOjpNb3ZlVG9OZXh0Q2hhcik7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6
TW92ZVRvTmV4dENoYXIpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVU
b05leHRDaGFyKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOwor
ICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDQpOworCisgICAgLy8g
Y3Vyc29yIHdpbGwgYmUgYmVmb3JlIHRoZSB3b3JkICJqdW1wcyIKKyAgICBwYWdlLT50cmlnZ2Vy
QWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9TdGFydE9mTGluZSk7CisgICAgUVZFUklGWShwYWdlLT5p
c1NlbGVjdGlvbkNvbGxhcHNlZCgpKTsKKyAgICBRQ09NUEFSRShwYWdlLT5zZWxlY3Rpb25TdGFy
dE9mZnNldCgpLCAwKTsKKworICAgIC8vIGN1cnNvciB3aWxsIGJlIGFmdGVyIHRoZSB3b3JkICJk
b2ciCisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvRW5kT2ZMaW5lKTsK
KyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAgIFFDT01QQVJF
KHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDIzKTsKKworICAgIC8vIGN1cnNvciB3aWxs
IGJlIGJldHdlZW4gJ3cnIGFuZCAnbicgaW4gImJyb3duIgorICAgIHBhZ2UtPnRyaWdnZXJBY3Rp
b24oUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZMaW5lKTsKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9u
KFFXZWJQYWdlOjpNb3ZlVG9QcmV2aW91c1dvcmQpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2U6Ok1vdmVUb1ByZXZpb3VzV29yZCk7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihR
V2ViUGFnZTo6TW92ZVRvTmV4dENoYXIpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBh
Z2U6Ok1vdmVUb05leHRDaGFyKTsKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpN
b3ZlVG9OZXh0Q2hhcik7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRv
TmV4dENoYXIpOworICAgIFFWRVJJRlkocGFnZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7Cisg
ICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0aW9uU3RhcnRPZmZzZXQoKSwgMTQpOworCisgICAgLy8g
Y3Vyc29yIHdpbGwgYmUgYWZ0ZXIgdGhlIHdvcmQgImZveCIKKyAgICBwYWdlLT50cmlnZ2VyQWN0
aW9uKFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpOworICAgIFFWRVJJRlkocGFnZS0+aXNTZWxl
Y3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0aW9uU3RhcnRPZmZz
ZXQoKSwgMTkpOworCisgICAgLy8gY3Vyc29yIHdpbGwgYmUgYmVmb3JlIHRoZSB3b3JkICJUaGUi
CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvU3RhcnRPZkRvY3VtZW50
KTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAgIFFDT01Q
QVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDApOworCisgICAgLy8gY3Vyc29yIHdp
bGwgYmUgYWZ0ZXIgdGhlIHdvcmQgInlvdSEiCisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2Vi
UGFnZTo6TW92ZVRvRW5kT2ZEb2N1bWVudCk7CisgICAgUVZFUklGWShwYWdlLT5pc1NlbGVjdGlv
bkNvbGxhcHNlZCgpKTsKKyAgICBRQ09NUEFSRShwYWdlLT5zZWxlY3Rpb25TdGFydE9mZnNldCgp
LCAxMik7CisKKyAgICAvLyBjdXJzb3Igd2lsbCBiZSBiZWZvcmUgdGhlIHdvcmQgImJlIgorICAg
IHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZCbG9jayk7CisgICAg
UVZFUklGWShwYWdlLT5pc1NlbGVjdGlvbkNvbGxhcHNlZCgpKTsKKyAgICBRQ09NUEFSRShwYWdl
LT5zZWxlY3Rpb25TdGFydE9mZnNldCgpLCAwKTsKKworICAgIC8vIGN1cnNvciB3aWxsIGJlIGFm
dGVyIHRoZSB3b3JkICJ5b3UhIgorICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1v
dmVUb0VuZE9mQmxvY2spOworICAgIFFWRVJJRlkocGFnZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQo
KSk7CisgICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0aW9uU3RhcnRPZmZzZXQoKSwgMTIpOworCisg
ICAgLy8gdHJ5IHRvIG1vdmUgYmVmb3JlIHRoZSBkb2N1bWVudCBzdGFydAorICAgIHBhZ2UtPnRy
aWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb1N0YXJ0T2ZEb2N1bWVudCk7CisgICAgcGFnZS0+
dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvUHJldmlvdXNDaGFyKTsKKyAgICBRVkVSSUZZ
KHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkpOworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVj
dGlvblN0YXJ0T2Zmc2V0KCksIDApOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6
Ok1vdmVUb1N0YXJ0T2ZEb2N1bWVudCk7CisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFn
ZTo6TW92ZVRvUHJldmlvdXNXb3JkKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29s
bGFwc2VkKCkpOworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDAp
OworCisgICAgLy8gdHJ5IHRvIG1vdmUgcGFzdCB0aGUgZG9jdW1lbnQgZW5kCisgICAgcGFnZS0+
dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvRW5kT2ZEb2N1bWVudCk7CisgICAgcGFnZS0+
dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRvTmV4dENoYXIpOworICAgIFFWRVJJRlkocGFn
ZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0aW9u
U3RhcnRPZmZzZXQoKSwgMTIpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1v
dmVUb0VuZE9mRG9jdW1lbnQpOworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6Ok1v
dmVUb05leHRXb3JkKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmlzU2VsZWN0aW9uQ29sbGFwc2VkKCkp
OworICAgIFFDT01QQVJFKHBhZ2UtPnNlbGVjdGlvblN0YXJ0T2Zmc2V0KCksIDEyKTsKKworICAg
IGRlbGV0ZSBwYWdlOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6dGV4dFNlbGVjdGlvbigpCit7
CisgICAgQ3Vyc29yVHJhY2tlZFBhZ2UqIHBhZ2UgPSBuZXcgQ3Vyc29yVHJhY2tlZFBhZ2U7Cisg
ICAgUVN0cmluZyBjb250ZW50KCI8aHRtbD48Ym9keT48cCBpZD1vbmU+VGhlIHF1aWNrIGJyb3du
IGZveDwvcD4iIFwKKyAgICAgICAgIjxwIGlkPXR3bz5qdW1wcyBvdmVyIHRoZSBsYXp5IGRvZzwv
cD4iIFwKKyAgICAgICAgIjxwPk1heSB0aGUgc291cmNlPGJyLz5iZSB3aXRoIHlvdSE8L3A+PC9i
b2R5PjwvaHRtbD4iKTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbChjb250ZW50KTsK
KworICAgIC8vIHRoZXNlIGFjdGlvbnMgbXVzdCBleGlzdAorICAgIFFWRVJJRlkocGFnZS0+YWN0
aW9uKFFXZWJQYWdlOjpTZWxlY3RBbGwpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpTZWxlY3ROZXh0Q2hhcikgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rp
b24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzQ2hhcikgIT0gMCk7CisgICAgUVZFUklGWShwYWdl
LT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdE5leHRXb3JkKSAhPSAwKTsKKyAgICBRVkVSSUZZKHBh
Z2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0UHJldmlvdXNXb3JkKSAhPSAwKTsKKyAgICBRVkVS
SUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0TmV4dExpbmUpICE9IDApOworICAgIFFW
RVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RQcmV2aW91c0xpbmUpICE9IDApOwor
ICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RTdGFydE9mTGluZSkgIT0g
MCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEVuZE9mTGluZSkg
IT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFN0YXJ0T2ZC
bG9jaykgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEVu
ZE9mQmxvY2spICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxl
Y3RTdGFydE9mRG9jdW1lbnQpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQ
YWdlOjpTZWxlY3RFbmRPZkRvY3VtZW50KSAhPSAwKTsKKworICAgIC8vIHJpZ2h0IG5vdyB0aGV5
IGFyZSBkaXNhYmxlZCBiZWNhdXNlIGNvbnRlbnRFZGl0YWJsZSBpcyBmYWxzZSBhbmQgCisgICAg
Ly8gdGhlcmUgaXNuJ3QgYW4gZXhpc3Rpbmcgc2VsZWN0aW9uIHRvIG1vZGlmeQorICAgIFFDT01Q
QVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0TmV4dENoYXIpLT5pc0VuYWJsZWQoKSwg
ZmFsc2UpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0UHJldmlv
dXNDaGFyKS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24o
UVdlYlBhZ2U6OlNlbGVjdE5leHRXb3JkKS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09N
UEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzV29yZCktPmlzRW5hYmxl
ZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RO
ZXh0TGluZSktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpTZWxlY3RQcmV2aW91c0xpbmUpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAg
IFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0U3RhcnRPZkxpbmUpLT5pc0Vu
YWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2Vs
ZWN0RW5kT2ZMaW5lKS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5h
Y3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFN0YXJ0T2ZCbG9jayktPmlzRW5hYmxlZCgpLCBmYWxzZSk7
CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RFbmRPZkJsb2NrKS0+
aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6
OlNlbGVjdFN0YXJ0T2ZEb2N1bWVudCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBB
UkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RFbmRPZkRvY3VtZW50KS0+aXNFbmFibGVk
KCksIGZhbHNlKTsKKworICAgIC8vIC4uYnV0IFNlbGVjdEFsbCBpcyBhd2FseXMgZW5hYmxlZAor
ICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0QWxsKS0+aXNFbmFibGVk
KCksIHRydWUpOworCisgICAgLy8gVmVyaWZ5IGhhc1NlbGVjdGlvbiByZXR1cm5zIGZhbHNlIHNp
bmNlIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB5ZXQuLi4KKyAgICBRQ09NUEFSRShwYWdlLT5oYXNT
ZWxlY3Rpb24oKSwgZmFsc2UpOworCisgICAgLy8gdGhpcyB3aWxsIHNlbGVjdCB0aGUgZmlyc3Qg
cGFyYWdyYXBoCisgICAgUVN0cmluZyBzZWxlY3RTY3JpcHQgPSAidmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsgIiBcCisgICAgICAgICJ2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKFwib25lXCIpOyAiIFwKKyAgICAgICAgInJhbmdlLnNlbGVjdE5vZGUobm9kZSk7
ICIgXAorICAgICAgICAiZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOyI7CisgICAgcGFn
ZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdChzZWxlY3RTY3JpcHQpOworICAgIFFD
T01QQVJFKHBhZ2UtPnNlbGVjdGVkVGV4dCgpLnRyaW1tZWQoKSwgUVN0cmluZzo6ZnJvbUxhdGlu
MSgiVGhlIHF1aWNrIGJyb3duIGZveCIpKTsKKyAgICBRUmVnRXhwIHJlZ0V4cCgiIHN0eWxlPVwi
LipcIiIpOworICAgIHJlZ0V4cC5zZXRNaW5pbWFsKHRydWUpOworICAgIFFDT01QQVJFKHBhZ2Ut
PnNlbGVjdGVkSHRtbCgpLnRyaW1tZWQoKS5yZXBsYWNlKHJlZ0V4cCwgIiIpLCBRU3RyaW5nOjpm
cm9tTGF0aW4xKCI8cCBpZD1cIm9uZVwiPlRoZSBxdWljayBicm93biBmb3g8L3A+IikpOworCisg
ICAgLy8gTWFrZSBzdXJlIGhhc1NlbGVjdGlvbiByZXR1cm5zIHRydWUsIHNpbmNlIHRoZXJlIGlz
IHNlbGVjdGVkIHRleHQgbm93Li4uCisgICAgUUNPTVBBUkUocGFnZS0+aGFzU2VsZWN0aW9uKCks
IHRydWUpOworCisgICAgLy8gaGVyZSB0aGUgYWN0aW9ucyBhcmUgZW5hYmxlZCBhZnRlciBhIHNl
bGVjdGlvbiBoYXMgYmVlbiBjcmVhdGVkCisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQ
YWdlOjpTZWxlY3ROZXh0Q2hhciktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShw
YWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzQ2hhciktPmlzRW5hYmxlZCgpLCB0
cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdE5leHRXb3Jk
KS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6U2VsZWN0UHJldmlvdXNXb3JkKS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJF
KHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0TmV4dExpbmUpLT5pc0VuYWJsZWQoKSwgdHJ1
ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RQcmV2aW91c0xp
bmUpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQ
YWdlOjpTZWxlY3RTdGFydE9mTGluZSktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFS
RShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEVuZE9mTGluZSktPmlzRW5hYmxlZCgpLCB0
cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFN0YXJ0T2ZC
bG9jayktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdl
YlBhZ2U6OlNlbGVjdEVuZE9mQmxvY2spLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBB
UkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RTdGFydE9mRG9jdW1lbnQpLT5pc0VuYWJs
ZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RF
bmRPZkRvY3VtZW50KS0+aXNFbmFibGVkKCksIHRydWUpOworCisgICAgLy8gbWFrZSBpdCBlZGl0
YWJsZSBiZWZvcmUgbmF2aWdhdGluZyB0aGUgY3Vyc29yCisgICAgcGFnZS0+c2V0Q29udGVudEVk
aXRhYmxlKHRydWUpOworCisgICAgLy8gY3Vyc29yIHdpbGwgYmUgYmVmb3JlIHRoZSB3b3JkICJU
aGUiLCB0aGlzIG1ha2VzIHN1cmUgdGhlcmUgaXMgYSBjaGFyZXQKKyAgICBwYWdlLT50cmlnZ2Vy
QWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9TdGFydE9mRG9jdW1lbnQpOworICAgIFFWRVJJRlkocGFn
ZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0aW9u
U3RhcnRPZmZzZXQoKSwgMCk7CisKKyAgICAvLyBoZXJlIHRoZSBhY3Rpb25zIGFyZSBlbmFibGVk
IGFmdGVyIGNvbnRlbnRFZGl0YWJsZSBpcyB0cnVlCisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpTZWxlY3ROZXh0Q2hhciktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09N
UEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzQ2hhciktPmlzRW5hYmxl
ZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdE5l
eHRXb3JkKS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihR
V2ViUGFnZTo6U2VsZWN0UHJldmlvdXNXb3JkKS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFD
T01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2VsZWN0TmV4dExpbmUpLT5pc0VuYWJsZWQo
KSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RQcmV2
aW91c0xpbmUpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpTZWxlY3RTdGFydE9mTGluZSktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBR
Q09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEVuZE9mTGluZSktPmlzRW5hYmxl
ZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFN0
YXJ0T2ZCbG9jayktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rp
b24oUVdlYlBhZ2U6OlNlbGVjdEVuZE9mQmxvY2spLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAg
UUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RTdGFydE9mRG9jdW1lbnQpLT5p
c0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpT
ZWxlY3RFbmRPZkRvY3VtZW50KS0+aXNFbmFibGVkKCksIHRydWUpOworCisgICAgZGVsZXRlIHBh
Z2U7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXh0RWRpdGluZygpCit7CisgICAgQ3Vyc29y
VHJhY2tlZFBhZ2UqIHBhZ2UgPSBuZXcgQ3Vyc29yVHJhY2tlZFBhZ2U7CisgICAgUVN0cmluZyBj
b250ZW50KCI8aHRtbD48Ym9keT48cCBpZD1vbmU+VGhlIHF1aWNrIGJyb3duIGZveDwvcD4iIFwK
KyAgICAgICAgIjxwIGlkPXR3bz5qdW1wcyBvdmVyIHRoZSBsYXp5IGRvZzwvcD4iIFwKKyAgICAg
ICAgIjxwPk1heSB0aGUgc291cmNlPGJyLz5iZSB3aXRoIHlvdSE8L3A+PC9ib2R5PjwvaHRtbD4i
KTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbChjb250ZW50KTsKKworICAgIC8vIHRo
ZXNlIGFjdGlvbnMgbXVzdCBleGlzdAorICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdl
OjpDdXQpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpDb3B5KSAh
PSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6UGFzdGUpICE9IDApOwor
ICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpEZWxldGVTdGFydE9mV29yZCkgIT0g
MCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OkRlbGV0ZUVuZE9mV29yZCkg
IT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rp
b25EZWZhdWx0KSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2V0
VGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0KSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlv
bihRV2ViUGFnZTo6U2V0VGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KSAhPSAwKTsKKyAgICBRVkVS
SUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlQm9sZCkgIT0gMCk7CisgICAgUVZFUklG
WShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZUl0YWxpYykgIT0gMCk7CisgICAgUVZFUklG
WShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZVVuZGVybGluZSkgIT0gMCk7CisgICAgUVZF
UklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcikgIT0g
MCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Okluc2VydExpbmVTZXBhcmF0
b3IpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpQYXN0ZUFuZE1h
dGNoU3R5bGUpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpSZW1v
dmVGb3JtYXQpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpUb2dn
bGVTdHJpa2V0aHJvdWdoKSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6VG9nZ2xlU3Vic2NyaXB0KSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlvbihRV2Vi
UGFnZTo6VG9nZ2xlU3VwZXJzY3JpcHQpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpJbnNlcnRVbm9yZGVyZWRMaXN0KSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2Ut
PmFjdGlvbihRV2ViUGFnZTo6SW5zZXJ0T3JkZXJlZExpc3QpICE9IDApOworICAgIFFWRVJJRlko
cGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpJbmRlbnQpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+
YWN0aW9uKFFXZWJQYWdlOjpPdXRkZW50KSAhPSAwKTsKKyAgICBRVkVSSUZZKHBhZ2UtPmFjdGlv
bihRV2ViUGFnZTo6QWxpZ25DZW50ZXIpICE9IDApOworICAgIFFWRVJJRlkocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpBbGlnbkp1c3RpZmllZCkgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rp
b24oUVdlYlBhZ2U6OkFsaWduTGVmdCkgIT0gMCk7CisgICAgUVZFUklGWShwYWdlLT5hY3Rpb24o
UVdlYlBhZ2U6OkFsaWduUmlnaHQpICE9IDApOworCisgICAgLy8gcmlnaHQgbm93IHRoZXkgYXJl
IGRpc2FibGVkIGJlY2F1c2UgY29udGVudEVkaXRhYmxlIGlzIGZhbHNlCisgICAgUUNPTVBBUkUo
cGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpDdXQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFD
T01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6UGFzdGUpLT5pc0VuYWJsZWQoKSwgZmFsc2Up
OworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6RGVsZXRlU3RhcnRPZldvcmQp
LT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6RGVsZXRlRW5kT2ZXb3JkKS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShw
YWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0KS0+aXNFbmFibGVk
KCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlNldFRleHRE
aXJlY3Rpb25MZWZ0VG9SaWdodCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUo
cGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpTZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQpLT5pc0Vu
YWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6VG9n
Z2xlQm9sZCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpUb2dnbGVJdGFsaWMpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01Q
QVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlVW5kZXJsaW5lKS0+aXNFbmFibGVkKCks
IGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Okluc2VydFBhcmFn
cmFwaFNlcGFyYXRvciktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+
YWN0aW9uKFFXZWJQYWdlOjpJbnNlcnRMaW5lU2VwYXJhdG9yKS0+aXNFbmFibGVkKCksIGZhbHNl
KTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OlBhc3RlQW5kTWF0Y2hTdHls
ZSktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQ
YWdlOjpSZW1vdmVGb3JtYXQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBh
Z2UtPmFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlU3RyaWtldGhyb3VnaCktPmlzRW5hYmxlZCgpLCBm
YWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVTdWJzY3Jp
cHQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2Vi
UGFnZTo6VG9nZ2xlU3VwZXJzY3JpcHQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01Q
QVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6SW5zZXJ0VW5vcmRlcmVkTGlzdCktPmlzRW5hYmxl
ZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpJbnNlcnRP
cmRlcmVkTGlzdCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0
aW9uKFFXZWJQYWdlOjpJbmRlbnQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJF
KHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6T3V0ZGVudCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7Cisg
ICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpBbGlnbkNlbnRlciktPmlzRW5hYmxl
ZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpBbGlnbkp1
c3RpZmllZCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpBbGlnbkxlZnQpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJF
KHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6QWxpZ25SaWdodCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7
CisKKyAgICAvLyBTZWxlY3QgZXZlcnl0aGluZworICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdl
YlBhZ2U6OlNlbGVjdEFsbCk7CisKKyAgICAvLyBtYWtlIHN1cmUgaXQgaXMgZW5hYmxlZCBzaW5j
ZSB0aGVyZSBpcyBhIHNlbGVjdGlvbgorICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFn
ZTo6Q29weSktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKworICAgIC8vIG1ha2UgaXQgZWRpdGFibGUg
YmVmb3JlIG5hdmlnYXRpbmcgdGhlIGN1cnNvcgorICAgIHBhZ2UtPnNldENvbnRlbnRFZGl0YWJs
ZSh0cnVlKTsKKworICAgIC8vIGNsZWFyIHRoZSBzZWxlY3Rpb24KKyAgICBwYWdlLT50cmlnZ2Vy
QWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9TdGFydE9mRG9jdW1lbnQpOworICAgIFFWRVJJRlkocGFn
ZS0+aXNTZWxlY3Rpb25Db2xsYXBzZWQoKSk7CisgICAgUUNPTVBBUkUocGFnZS0+c2VsZWN0aW9u
U3RhcnRPZmZzZXQoKSwgMCk7CisKKyAgICAvLyBtYWtlIHN1cmUgaXQgaXMgZGlzYWJsZWQgc2lu
Y2UgdGhlcmUgaXNuJ3QgYSBzZWxlY3Rpb24KKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdl
YlBhZ2U6OkNvcHkpLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworCisgICAgLy8gaGVyZSB0aGUgYWN0
aW9ucyBhcmUgZW5hYmxlZCBhZnRlciBjb250ZW50RWRpdGFibGUgaXMgdHJ1ZQorICAgIFFDT01Q
QVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6UGFzdGUpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7Cisg
ICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpEZWxldGVTdGFydE9mV29yZCktPmlz
RW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OkRl
bGV0ZUVuZE9mV29yZCktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5h
Y3Rpb24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0KS0+aXNFbmFibGVkKCksIHRy
dWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6U2V0VGV4dERpcmVjdGlv
bkxlZnRUb1JpZ2h0KS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFj
dGlvbihRV2ViUGFnZTo6U2V0VGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KS0+aXNFbmFibGVkKCks
IHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlQm9sZCkt
PmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6
OlRvZ2dsZUl0YWxpYyktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5h
Y3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZVVuZGVybGluZSktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAg
ICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6Okluc2VydFBhcmFncmFwaFNlcGFyYXRv
ciktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBh
Z2U6Okluc2VydExpbmVTZXBhcmF0b3IpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBB
UkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpQYXN0ZUFuZE1hdGNoU3R5bGUpLT5pc0VuYWJsZWQo
KSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVTdHJp
a2V0aHJvdWdoKS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlv
bihRV2ViUGFnZTo6VG9nZ2xlU3Vic2NyaXB0KS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFD
T01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlU3VwZXJzY3JpcHQpLT5pc0VuYWJs
ZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpJbnNlcnRV
bm9yZGVyZWRMaXN0KS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFj
dGlvbihRV2ViUGFnZTo6SW5zZXJ0T3JkZXJlZExpc3QpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7Cisg
ICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpJbmRlbnQpLT5pc0VuYWJsZWQoKSwg
dHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpPdXRkZW50KS0+aXNF
bmFibGVkKCksIHRydWUpOworICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6QWxp
Z25DZW50ZXIpLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBBUkUocGFnZS0+YWN0aW9u
KFFXZWJQYWdlOjpBbGlnbkp1c3RpZmllZCktPmlzRW5hYmxlZCgpLCB0cnVlKTsKKyAgICBRQ09N
UEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OkFsaWduTGVmdCktPmlzRW5hYmxlZCgpLCB0cnVl
KTsKKyAgICBRQ09NUEFSRShwYWdlLT5hY3Rpb24oUVdlYlBhZ2U6OkFsaWduUmlnaHQpLT5pc0Vu
YWJsZWQoKSwgdHJ1ZSk7CisgICAgCisgICAgLy8gbWFrZSBzdXJlIHRoZXNlIGFyZSBkaXNhYmxl
ZCBzaW5jZSB0aGVyZSBpc24ndCBhIHNlbGVjdGlvbgorICAgIFFDT01QQVJFKHBhZ2UtPmFjdGlv
bihRV2ViUGFnZTo6Q3V0KS0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShwYWdl
LT5hY3Rpb24oUVdlYlBhZ2U6OlJlbW92ZUZvcm1hdCktPmlzRW5hYmxlZCgpLCBmYWxzZSk7Cisg
ICAgCisgICAgLy8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgc2VsZWN0ZWQKKyAgICBwYWdlLT50
cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RBbGwpOworICAgIAorICAgIC8vIHRoaXMgaXMg
b25seSB0cnVlIGlmIHRoZXJlIGlzIGFuIGVkaXRhYmxlIHNlbGVjdGlvbgorICAgIFFDT01QQVJF
KHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6Q3V0KS0+aXNFbmFibGVkKCksIHRydWUpOworICAgIFFD
T01QQVJFKHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6UmVtb3ZlRm9ybWF0KS0+aXNFbmFibGVkKCks
IHRydWUpOworCisgICAgZGVsZXRlIHBhZ2U7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpyZXF1
ZXN0Q2FjaGUoKQoreworICAgIFRlc3RQYWdlIHBhZ2U7CisgICAgUVNpZ25hbFNweSBsb2FkU3B5
KCZwYWdlLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisKKyAgICBwYWdlLm1haW5GcmFt
ZSgpLT5zZXRVcmwoUVN0cmluZygiZGF0YTp0ZXh0L2h0bWwsPGEgaHJlZj1cImRhdGE6dGV4dC9o
dG1sLFJlYWNoZWRcIiB0YXJnZXQ9XCJfYmxhbmtcIj5DbGljayBtZTwvYT4iKSk7CisgICAgUVRS
WV9DT01QQVJFKGxvYWRTcHkuY291bnQoKSwgMSk7CisgICAgUVRSWV9DT01QQVJFKHBhZ2UubmF2
aWdhdGlvbnMuY291bnQoKSwgMSk7CisKKyAgICBwYWdlLm1haW5GcmFtZSgpLT5zZXRVcmwoUVN0
cmluZygiZGF0YTp0ZXh0L2h0bWwsPGEgaHJlZj1cImRhdGE6dGV4dC9odG1sLFJlYWNoZWRcIiB0
YXJnZXQ9XCJfYmxhbmtcIj5DbGljayBtZTI8L2E+IikpOworICAgIFFUUllfQ09NUEFSRShsb2Fk
U3B5LmNvdW50KCksIDIpOworICAgIFFUUllfQ09NUEFSRShwYWdlLm5hdmlnYXRpb25zLmNvdW50
KCksIDIpOworCisgICAgcGFnZS50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTdG9wKTsKKyAgICBR
VkVSSUZZKHBhZ2UuaGlzdG9yeSgpLT5jYW5Hb0JhY2soKSk7CisgICAgcGFnZS50cmlnZ2VyQWN0
aW9uKFFXZWJQYWdlOjpCYWNrKTsKKworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCks
IDMpOworICAgIFFUUllfQ09NUEFSRShwYWdlLm5hdmlnYXRpb25zLmNvdW50KCksIDMpOworICAg
IFFDT01QQVJFKHBhZ2UubmF2aWdhdGlvbnMuYXQoMCkucmVxdWVzdC5hdHRyaWJ1dGUoUU5ldHdv
cmtSZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sQXR0cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6OlBy
ZWZlck5ldHdvcmspLnRvSW50KCksCisgICAgICAgICAgICAgKGludClRTmV0d29ya1JlcXVlc3Q6
OlByZWZlck5ldHdvcmspOworICAgIFFDT01QQVJFKHBhZ2UubmF2aWdhdGlvbnMuYXQoMSkucmVx
dWVzdC5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sQXR0cmlidXRl
LCBRTmV0d29ya1JlcXVlc3Q6OlByZWZlck5ldHdvcmspLnRvSW50KCksCisgICAgICAgICAgICAg
KGludClRTmV0d29ya1JlcXVlc3Q6OlByZWZlck5ldHdvcmspOworICAgIFFDT01QQVJFKHBhZ2Uu
bmF2aWdhdGlvbnMuYXQoMikucmVxdWVzdC5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpDYWNo
ZUxvYWRDb250cm9sQXR0cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6OlByZWZlck5ldHdvcmspLnRv
SW50KCksCisgICAgICAgICAgICAgKGludClRTmV0d29ya1JlcXVlc3Q6OlByZWZlckNhY2hlKTsK
K30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmxvYWRDYWNoZWRQYWdlKCkKK3sKKyAgICBUZXN0UGFn
ZSBwYWdlOworICAgIFFTaWduYWxTcHkgbG9hZFNweSgmcGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hl
ZChib29sKSkpOworICAgIHBhZ2Uuc2V0dGluZ3MoKS0+c2V0TWF4aW11bVBhZ2VzSW5DYWNoZSgz
KTsKKworICAgIHBhZ2UubWFpbkZyYW1lKCktPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWwsVGhp
cyBpcyBmaXJzdCBwYWdlIikpOworCisgICAgUVRSWV9DT01QQVJFKGxvYWRTcHkuY291bnQoKSwg
MSk7CisgICAgUVRSWV9DT01QQVJFKHBhZ2UubmF2aWdhdGlvbnMuY291bnQoKSwgMSk7CisKKyAg
ICBRVXJsIGZpcnN0UGFnZVVybCA9IHBhZ2UubWFpbkZyYW1lKCktPnVybCgpOworICAgIHBhZ2Uu
bWFpbkZyYW1lKCktPmxvYWQoUVVybCgiZGF0YTp0ZXh0L2h0bWwsVGhpcyBpcyBzZWNvbmQgcGFn
ZSIpKTsKKworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDIpOworICAgIFFUUllf
Q09NUEFSRShwYWdlLm5hdmlnYXRpb25zLmNvdW50KCksIDIpOworCisgICAgcGFnZS50cmlnZ2Vy
QWN0aW9uKFFXZWJQYWdlOjpTdG9wKTsKKyAgICBRVkVSSUZZKHBhZ2UuaGlzdG9yeSgpLT5jYW5H
b0JhY2soKSk7CisKKyAgICBRU2lnbmFsU3B5IHVybFNweShwYWdlLm1haW5GcmFtZSgpLCBTSUdO
QUwodXJsQ2hhbmdlZChRVXJsKSkpOworICAgIFFWRVJJRlkodXJsU3B5LmlzVmFsaWQoKSk7CisK
KyAgICBwYWdlLnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkJhY2spOworICAgIDo6d2FpdEZvclNp
Z25hbChwYWdlLm1haW5GcmFtZSgpLCBTSUdOQUwodXJsQ2hhbmdlZChRVXJsKSkpOworICAgIFFD
T01QQVJFKHVybFNweS5zaXplKCksIDEpOworCisgICAgUUxpc3Q8UVZhcmlhbnQ+IGFyZ3VtZW50
czEgPSB1cmxTcHkudGFrZUZpcnN0KCk7CisgICAgUUNPTVBBUkUoYXJndW1lbnRzMS5hdCgwKS50
b1VybCgpLCBmaXJzdFBhZ2VVcmwpOworCit9Cit2b2lkIHRzdF9RV2ViUGFnZTo6YmFja0FjdGlv
blVwZGF0ZSgpCit7CisgICAgUVdlYlZpZXcgdmlldzsKKyAgICBRV2ViUGFnZSAqcGFnZSA9IHZp
ZXcucGFnZSgpOworICAgIFFBY3Rpb24gKmFjdGlvbiA9IHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6
QmFjayk7CisgICAgUVZFUklGWSghYWN0aW9uLT5pc0VuYWJsZWQoKSk7CisgICAgUVNpZ25hbFNw
eSBsb2FkU3B5KHBhZ2UsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKKyAgICBRVXJsIHVy
bCA9IFFVcmwoInFyYzovLy9yZXNvdXJjZXMvZnJhbWVkaW5kZXguaHRtbCIpOworICAgIHBhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkKHVybCk7CisgICAgUVRSWV9DT01QQVJFKGxvYWRTcHkuY291bnQo
KSwgMSk7CisgICAgUVZFUklGWSghYWN0aW9uLT5pc0VuYWJsZWQoKSk7CisgICAgUVRlc3Q6Om1v
dXNlQ2xpY2soJnZpZXcsIFF0OjpMZWZ0QnV0dG9uLCAwLCBRUG9pbnQoMTAsIDEwKSk7CisgICAg
UVRSWV9DT01QQVJFKGxvYWRTcHkuY291bnQoKSwgMik7CisKKyAgICBRVkVSSUZZKGFjdGlvbi0+
aXNFbmFibGVkKCkpOworfQorCit2b2lkIGZyYW1lQXRIZWxwZXIoUVdlYlBhZ2UqIHdlYlBhZ2Us
IFFXZWJGcmFtZSogd2ViRnJhbWUsIFFQb2ludCBmcmFtZVBvc2l0aW9uKQoreworICAgIGlmICgh
d2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lUG9zaXRpb24gKz0gUVBvaW50
KHdlYkZyYW1lLT5wb3MoKSk7CisgICAgUUxpc3Q8UVdlYkZyYW1lKj4gY2hpbGRyZW4gPSB3ZWJG
cmFtZS0+Y2hpbGRGcmFtZXMoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNoaWxkcmVuLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGlmIChjaGlsZHJlbi5hdChpKS0+Y2hpbGRGcmFtZXMoKS5z
aXplKCkgPiAwKQorICAgICAgICAgICAgZnJhbWVBdEhlbHBlcih3ZWJQYWdlLCBjaGlsZHJlbi5h
dChpKSwgZnJhbWVQb3NpdGlvbik7CisKKyAgICAgICAgUVJlY3QgZnJhbWVSZWN0KGNoaWxkcmVu
LmF0KGkpLT5wb3MoKSArIGZyYW1lUG9zaXRpb24sIGNoaWxkcmVuLmF0KGkpLT5nZW9tZXRyeSgp
LnNpemUoKSk7CisgICAgICAgIFFWRVJJRlkoY2hpbGRyZW4uYXQoaSkgPT0gd2ViUGFnZS0+ZnJh
bWVBdChmcmFtZVJlY3QudG9wTGVmdCgpKSk7CisgICAgfQorfQorCit2b2lkIHRzdF9RV2ViUGFn
ZTo6ZnJhbWVBdCgpCit7CisgICAgUVdlYlZpZXcgd2ViVmlldzsKKyAgICBRV2ViUGFnZSogd2Vi
UGFnZSA9IHdlYlZpZXcucGFnZSgpOworICAgIFFTaWduYWxTcHkgbG9hZFNweSh3ZWJQYWdlLCBT
SUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisgICAgUVVybCB1cmwgPSBRVXJsKCJxcmM6Ly8v
cmVzb3VyY2VzL2lmcmFtZS5odG1sIik7CisgICAgd2ViUGFnZS0+bWFpbkZyYW1lKCktPmxvYWQo
dXJsKTsKKyAgICBRVFJZX0NPTVBBUkUobG9hZFNweS5jb3VudCgpLCAxKTsKKyAgICBmcmFtZUF0
SGVscGVyKHdlYlBhZ2UsIHdlYlBhZ2UtPm1haW5GcmFtZSgpLCB3ZWJQYWdlLT5tYWluRnJhbWUo
KS0+cG9zKCkpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzX2RhdGEoKQor
eworICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInZpZXdUeXBlIik7CisgICAgUVRlc3Q6
Om5ld1JvdygiUVdlYlZpZXciKSA8PCAiUVdlYlZpZXciOworICAgIFFUZXN0OjpuZXdSb3coIlFH
cmFwaGljc1dlYlZpZXciKSA8PCAiUUdyYXBoaWNzV2ViVmlldyI7Cit9CisKK3N0YXRpYyBRdDo6
SW5wdXRNZXRob2RIaW50cyBpbnB1dE1ldGhvZEhpbnRzKFFPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBpZiAoUUdyYXBoaWNzT2JqZWN0KiBvID0gcW9iamVjdF9jYXN0PFFHcmFwaGljc09iamVjdCo+
KG9iamVjdCkpCisgICAgICAgIHJldHVybiBvLT5pbnB1dE1ldGhvZEhpbnRzKCk7CisgICAgaWYg
KFFXaWRnZXQqIHcgPSBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KG9iamVjdCkpCisgICAgICAgIHJl
dHVybiB3LT5pbnB1dE1ldGhvZEhpbnRzKCk7CisgICAgcmV0dXJuIFF0OjpJbnB1dE1ldGhvZEhp
bnRzKCk7Cit9CisKK3N0YXRpYyBib29sIGlucHV0TWV0aG9kRW5hYmxlZChRT2JqZWN0KiBvYmpl
Y3QpCit7CisgICAgaWYgKFFHcmFwaGljc09iamVjdCogbyA9IHFvYmplY3RfY2FzdDxRR3JhcGhp
Y3NPYmplY3QqPihvYmplY3QpKQorICAgICAgICByZXR1cm4gby0+ZmxhZ3MoKSAmIFFHcmFwaGlj
c0l0ZW06Okl0ZW1BY2NlcHRzSW5wdXRNZXRob2Q7CisgICAgaWYgKFFXaWRnZXQqIHcgPSBxb2Jq
ZWN0X2Nhc3Q8UVdpZGdldCo+KG9iamVjdCkpCisgICAgICAgIHJldHVybiB3LT50ZXN0QXR0cmli
dXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJsZWQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RhdGljIHZvaWQgY2xpY2tPblBhZ2UoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFQb2ludCYgcG9z
aXRpb24pCit7CisgICAgUU1vdXNlRXZlbnQgZXZwcmVzKFFFdmVudDo6TW91c2VCdXR0b25QcmVz
cywgcG9zaXRpb24sIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVy
KTsKKyAgICBwYWdlLT5ldmVudCgmZXZwcmVzKTsKKyAgICBRTW91c2VFdmVudCBldnJlbChRRXZl
bnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSwgcG9zaXRpb24sIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9C
dXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBwYWdlLT5ldmVudCgmZXZyZWwpOworfQorCit2
b2lkIHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzKCkKK3sKKyAgICBRRkVUQ0goUVN0cmluZywg
dmlld1R5cGUpOworICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlOworICAgIFFPYmpl
Y3QqIHZpZXcgPSAwOworICAgIFFPYmplY3QqIGNvbnRhaW5lciA9IDA7CisgICAgaWYgKHZpZXdU
eXBlID09ICJRV2ViVmlldyIpIHsKKyAgICAgICAgUVdlYlZpZXcqIHd2ID0gbmV3IFFXZWJWaWV3
OworICAgICAgICB3di0+c2V0UGFnZShwYWdlKTsKKyAgICAgICAgdmlldyA9IHd2OworICAgICAg
ICBjb250YWluZXIgPSB2aWV3OworICAgIH0gZWxzZSBpZiAodmlld1R5cGUgPT0gIlFHcmFwaGlj
c1dlYlZpZXciKSB7CisgICAgICAgIFFHcmFwaGljc1dlYlZpZXcqIHd2ID0gbmV3IFFHcmFwaGlj
c1dlYlZpZXc7CisgICAgICAgIHd2LT5zZXRQYWdlKHBhZ2UpOworICAgICAgICB2aWV3ID0gd3Y7
CisKKyAgICAgICAgUUdyYXBoaWNzVmlldyogZ3YgPSBuZXcgUUdyYXBoaWNzVmlldzsKKyAgICAg
ICAgUUdyYXBoaWNzU2NlbmUqIHNjZW5lID0gbmV3IFFHcmFwaGljc1NjZW5lKGd2KTsKKyAgICAg
ICAgZ3YtPnNldFNjZW5lKHNjZW5lKTsKKyAgICAgICAgc2NlbmUtPmFkZEl0ZW0od3YpOworICAg
ICAgICB3di0+c2V0R2VvbWV0cnkoUVJlY3QoMCwgMCwgNTAwLCA1MDApKTsKKworICAgICAgICBj
b250YWluZXIgPSBndjsKKyAgICB9IGVsc2UKKyAgICAgICAgUVZFUklGWTIoZmFsc2UsICJVbmtu
b3duIHZpZXcgdHlwZSIpOworCisgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0Rm9udEZhbWlseShR
V2ViU2V0dGluZ3M6OlNlcmlmRm9udCwgcGFnZS0+c2V0dGluZ3MoKS0+Zm9udEZhbWlseShRV2Vi
U2V0dGluZ3M6OkZpeGVkRm9udCkpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8
aHRtbD48Ym9keT4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQxJyBzdHlsZT0nZm9udC1mYW1pbHk6IHNl
cmlmJyB2YWx1ZT0nJyBtYXhsZW5ndGg9JzIwJy8+PGJyPiIgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3Bhc3N3b3JkJy8+IiBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8L2JvZHk+PC9odG1s
PiIpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRGb2N1cygpOworCisgICAgVGVzdElucHV0
Q29udGV4dCB0ZXN0Q29udGV4dDsKKworICAgIFFXZWJFbGVtZW50Q29sbGVjdGlvbiBpbnB1dHMg
PSBwYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEFsbCgiaW5wdXQiKTsK
KyAgICBRUG9pbnQgdGV4dElucHV0Q2VudGVyID0gaW5wdXRzLmF0KDApLmdlb21ldHJ5KCkuY2Vu
dGVyKCk7CisKKyAgICBjbGlja09uUGFnZShwYWdlLCB0ZXh0SW5wdXRDZW50ZXIpOworCisgICAg
Ly8gVGhpcyBwYXJ0IG9mIHRoZSB0ZXN0IGNoZWNrcyBpZiB0aGUgU0lQIChTb2Z0d2FyZSBJbnB1
dCBQYW5lbCkgaXMgdHJpZ2dlcmVkLAorICAgIC8vIHdoaWNoIG5vcm1hbGx5IGhhcHBlbnMgb24g
bW9iaWxlIHBsYXRmb3Jtcywgd2hlbiBhIHVzZXIgaW5wdXQgZm9ybSByZWNlaXZlcworICAgIC8v
IGEgbW91c2UgY2xpY2suCisgICAgaW50ICBpbnB1dFBhbmVsID0gMDsKKyAgICBpZiAodmlld1R5
cGUgPT0gIlFXZWJWaWV3IikgeworICAgICAgICBpZiAoUVdlYlZpZXcqIHd2ID0gcW9iamVjdF9j
YXN0PFFXZWJWaWV3Kj4odmlldykpCisgICAgICAgICAgICBpbnB1dFBhbmVsID0gd3YtPnN0eWxl
KCktPnN0eWxlSGludChRU3R5bGU6OlNIX1JlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpOworICAg
IH0gZWxzZSBpZiAodmlld1R5cGUgPT0gIlFHcmFwaGljc1dlYlZpZXciKSB7CisgICAgICAgIGlm
IChRR3JhcGhpY3NXZWJWaWV3KiB3diA9IHFvYmplY3RfY2FzdDxRR3JhcGhpY3NXZWJWaWV3Kj4o
dmlldykpCisgICAgICAgICAgICBpbnB1dFBhbmVsID0gd3YtPnN0eWxlKCktPnN0eWxlSGludChR
U3R5bGU6OlNIX1JlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpOworICAgIH0KKworICAgIC8vIEZv
ciBub24tbW9iaWxlIHBsYXRmb3JtcyBSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsIGV2ZW50IGlz
IG5vdCBjYWxsZWQKKyAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIFNJUCAoU29mdHdhcmUgSW5w
dXQgUGFuZWwpIHRyaWdnZXJlZC4gSW4gdGhlIGNhc2Ugb2YgYQorICAgIC8vIG1vYmlsZSBwbGF0
Zm9ybSwgYW4gaW5wdXQgcGFuZWwsIGUuZy4gdmlydHVhbCBrZXlib2FyZCwgaXMgdXN1YWxseSBp
bnZva2VkCisgICAgLy8gYW5kIHRoZSBSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsIGV2ZW50IGlz
IGNhbGxlZC4gRm9yIHRoZXNlIHR3byBzaXR1YXRpb25zCisgICAgLy8gdGhpcyBwYXJ0IG9mIHRo
ZSB0ZXN0IGNhbiB2ZXJpZmllZCBhcyB0aGUgY2hlY2tzIGJlbG93LgorICAgIGlmIChpbnB1dFBh
bmVsKQorICAgICAgICBRVkVSSUZZKHRlc3RDb250ZXh0LmlzSW5wdXRQYW5lbFZpc2libGUoKSk7
CisgICAgZWxzZQorICAgICAgICBRVkVSSUZZKCF0ZXN0Q29udGV4dC5pc0lucHV0UGFuZWxWaXNp
YmxlKCkpOworICAgIHRlc3RDb250ZXh0LmhpZGVJbnB1dFBhbmVsKCk7CisKKyAgICBjbGlja09u
UGFnZShwYWdlLCB0ZXh0SW5wdXRDZW50ZXIpOworICAgIFFWRVJJRlkodGVzdENvbnRleHQuaXNJ
bnB1dFBhbmVsVmlzaWJsZSgpKTsKKworICAgIC8vSW1NaWNyb0ZvY3VzCisgICAgUVZhcmlhbnQg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltTWljcm9Gb2N1cyk7CisgICAg
UVZFUklGWShpbnB1dHMuYXQoMCkuZ2VvbWV0cnkoKS5jb250YWlucyh2YXJpYW50LnRvUmVjdCgp
LnRvcExlZnQoKSkpOworCisgICAgLy8gV2UgYXNzaWduZWQgdGhlIHNlcmlmIGZvbnQgZmFtaWxp
dHkgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIGZpeGVmIGZvbnQgZmFtaWx5LgorICAgIC8vIFRoZW4g
dGVzdCBJbUZvbnQgb24gYSBzZXJpZiBzdHlsZWQgZWxlbWVudCwgd2Ugc2hvdWxkIGdldCBvdXIg
Zml4ZWYgZm9udCBmYW1pbHkuCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnko
UXQ6OkltRm9udCk7CisgICAgUUZvbnQgZm9udCA9IHZhcmlhbnQudmFsdWU8UUZvbnQ+KCk7Cisg
ICAgUUNPTVBBUkUocGFnZS0+c2V0dGluZ3MoKS0+Zm9udEZhbWlseShRV2ViU2V0dGluZ3M6OkZp
eGVkRm9udCksIGZvbnQuZmFtaWx5KCkpOworCisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZT4gaW5wdXRBdHRyaWJ1dGVzOworCisgICAgLy9JbnNlcnQgdGV4dC4KKyAgICB7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50VGV4dCgiUXRXZWJLaXQiLCBpbnB1dEF0
dHJpYnV0ZXMpOworICAgICAgICBRU2lnbmFsU3B5IHNpZ25hbFNweShwYWdlLCBTSUdOQUwobWlj
cm9Gb2N1c0NoYW5nZWQoKSkpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnRUZXh0KTsKKyAg
ICAgICAgUUNPTVBBUkUoc2lnbmFsU3B5LmNvdW50KCksIDApOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnRUZXh0KCIiLCBpbnB1dEF0dHJpYnV0ZXMpOwor
ICAgICAgICBldmVudFRleHQuc2V0Q29tbWl0U3RyaW5nKFFTdHJpbmcoIlF0V2ViS2l0IiksIDAs
IDApOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnRUZXh0KTsKKyAgICB9CisKKyAgICAvL0lt
TWF4aW11bVRleHRMZW5ndGgKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShR
dDo6SW1NYXhpbXVtVGV4dExlbmd0aCk7CisgICAgUUNPTVBBUkUoMjAsIHZhcmlhbnQudG9JbnQo
KSk7CisKKyAgICAvL1NldCBzZWxlY3Rpb24KKyAgICBpbnB1dEF0dHJpYnV0ZXMgPDwgUUlucHV0
TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6U2VsZWN0aW9uLCAzLCAy
LCBRVmFyaWFudCgpKTsKKyAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudFNlbGVjdGlvbigiIixp
bnB1dEF0dHJpYnV0ZXMpOworICAgIHBhZ2UtPmV2ZW50KCZldmVudFNlbGVjdGlvbik7CisKKyAg
ICAvL0ltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVy
eShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgaW50IGFuY2hvclBvc2l0aW9uID0gIHZhcmlh
bnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMyk7CisKKyAgICAvL0lt
Q3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJzb3JQb3NpdGlvbik7CisgICAgaW50IGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9J
bnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgNSk7CisKKyAgICAvL0ltQ3VycmVu
dFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1
cnJlbnRTZWxlY3Rpb24pOworICAgIFFTdHJpbmcgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZh
bHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoImVi
IikpOworCisgICAgLy9TZXQgc2VsZWN0aW9uIHdpdGggbmVnYXRpdmUgbGVuZ3RoCisgICAgaW5w
dXRBdHRyaWJ1dGVzIDw8IFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9k
RXZlbnQ6OlNlbGVjdGlvbiwgNiwgLTUsIFFWYXJpYW50KCkpOworICAgIFFJbnB1dE1ldGhvZEV2
ZW50IGV2ZW50U2VsZWN0aW9uMygiIixpbnB1dEF0dHJpYnV0ZXMpOworICAgIHBhZ2UtPmV2ZW50
KCZldmVudFNlbGVjdGlvbjMpOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFu
Y2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3Np
dGlvbiwgMSk7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRp
b24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCA2KTsK
KworICAgIC8vSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2
YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFT
dHJpbmcoInRXZWJLIikpOworCisgICAgLy9JbVN1cnJvdW5kaW5nVGV4dAorICAgIHZhcmlhbnQg
PSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgUVN0
cmluZyB2YWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRSh2YWx1
ZSwgUVN0cmluZygiUXRXZWJLaXQiKSk7CisKKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1l
dGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIC8vIENsZWFyIHRoZSBz
ZWxlY3Rpb24sIHNvIHRoZSBuZXh0IHRlc3QgZG9lcyBub3QgY2xlYXIgYW55IGNvbnRlbnRzLgor
ICAgICAgICBRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlIG5ld1NlbGVjdGlvbihRSW5wdXRN
ZXRob2RFdmVudDo6U2VsZWN0aW9uLCAwLCAwLCBRVmFyaWFudCgpKTsKKyAgICAgICAgYXR0cmli
dXRlcy5hcHBlbmQobmV3U2VsZWN0aW9uKTsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZl
bnQoImNvbXBvc2l0aW9uIiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVu
dCk7CisgICAgfQorCisgICAgLy8gQSBvbmdvaW5nIGNvbXBvc2l0aW9uIHNob3VsZCBub3QgY2hh
bmdlIHRoZSBzdXJyb3VuZGluZyB0ZXh0IGJlZm9yZSBpdCBpcyBjb21taXR0ZWQuCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAg
ICB2YWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRSh2YWx1ZSwg
UVN0cmluZygiUXRXZWJLaXQiKSk7CisKKyAgICAvLyBDYW5jZWwgY3VycmVudCBjb21wb3NpdGlv
biBmaXJzdAorICAgIGlucHV0QXR0cmlidXRlcyA8PCBRSW5wdXRNZXRob2RFdmVudDo6QXR0cmli
dXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb24sIDAsIDAsIFFWYXJpYW50KCkpOworICAg
IFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50U2VsZWN0aW9uNCgiIiwgaW5wdXRBdHRyaWJ1dGVzKTsK
KyAgICBwYWdlLT5ldmVudCgmZXZlbnRTZWxlY3Rpb240KTsKKworICAgIC8vIFNUQVJUIC0gVGVz
dHMgZm9yIFNlbGVjdGlvbiB3aGVuIHRoZSBFZGl0b3IgaXMgTk9UIGluIENvbXBvc2l0aW9uIG1v
ZGUKKworICAgIC8vIExFRlQgdG8gUklHSFQgc2VsZWN0aW9uCisgICAgLy8gRGVzZWxlY3QgdGhl
IHNlbGVjdGlvbiBieSBzZW5kaW5nIE1vdXNlQnV0dG9uUHJlc3MgZXZlbnRzCisgICAgLy8gVGhp
cyBtb3ZlcyB0aGUgY3VycmVudCBjdXJzb3IgdG8gdGhlIGVuZCBvZiB0aGUgdGV4dAorICAgIGNs
aWNrT25QYWdlKHBhZ2UsIHRleHRJbnB1dENlbnRlcik7CisKKyAgICB7CisgICAgICAgIFFMaXN0
PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1
dE1ldGhvZEV2ZW50IGV2ZW50KFFTdHJpbmcoKSwgYXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50
LnNldENvbW1pdFN0cmluZygiWFhYIiwgMCwgMCk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVu
dCk7CisgICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmluZyhRU3RyaW5nKCksIC0yLCAyKTsgLy8g
RXJhc2UgdHdvIGNoYXJhY3RlcnMuCisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAg
ICAgIGV2ZW50LnNldENvbW1pdFN0cmluZyhRU3RyaW5nKCksIC0xLCAxKTsgLy8gRXJhc2Ugb25l
IGNoYXJhY3Rlci4KKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICAgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICAg
ICAgdmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgICAgIFFDT01QQVJFKHZh
bHVlLCBRU3RyaW5nKCJRdFdlYktpdCIpKTsKKyAgICB9CisKKyAgICAvL01vdmUgdG8gdGhlIHN0
YXJ0IG9mIHRoZSBsaW5lCisgICAgcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6TW92ZVRv
U3RhcnRPZkxpbmUpOworCisgICAgUUtleUV2ZW50IGtleVJpZ2h0RXZlbnRQcmVzcyhRRXZlbnQ6
OktleVByZXNzLCBRdDo6S2V5X1JpZ2h0LCBRdDo6Tm9Nb2RpZmllcik7CisgICAgUUtleUV2ZW50
IGtleVJpZ2h0RXZlbnRSZWxlYXNlKFFFdmVudDo6S2V5UmVsZWFzZSwgUXQ6OktleV9SaWdodCwg
UXQ6Ok5vTW9kaWZpZXIpOworCisgICAgLy9Nb3ZlIDIgY2hhcmFjdGVycyBSSUdIVAorICAgIGZv
ciAoaW50IGogPSAwOyBqIDwgMjsgKytqKSB7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZrZXlSaWdo
dEV2ZW50UHJlc3MpOworICAgICAgICBwYWdlLT5ldmVudCgma2V5UmlnaHRFdmVudFJlbGVhc2Up
OworICAgIH0KKworICAgIC8vU2VsZWN0IHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAgICBwYWdl
LT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RFbmRPZkxpbmUpOworCisgICAgLy9JbUFu
Y2hvclBvc2l0aW9uIFF0V2ViS2l0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMik7CisKKyAgICAvL0ltQ3Vy
c29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1D
dXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOwor
ICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCA4KTsKKworICAgIC8vSW1DdXJyZW50U2VsZWN0
aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNl
bGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7
CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIldlYktpdCIpKTsKKworICAg
IC8vUklHSFQgdG8gTEVGVCBzZWxlY3Rpb24KKyAgICAvL0Rlc2VsZWN0IHRoZSBzZWxlY3Rpb24g
KHRoaXMgbW92ZXMgdGhlIGN1cnJlbnQgY3Vyc29yIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQpCisg
ICAgY2xpY2tPblBhZ2UocGFnZSwgdGV4dElucHV0Q2VudGVyKTsKKworICAgIC8vSW1BbmNob3JQ
b3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hv
clBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAg
UUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDgpOworCisgICAgLy9JbUN1cnNvclBvc2l0aW9uCisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24p
OworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShj
dXJzb3JQb3NpdGlvbiwgOCk7CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlh
bnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAg
IHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJF
KHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisKKyAgICBRS2V5RXZlbnQga2V5TGVmdEV2
ZW50UHJlc3MoUUV2ZW50OjpLZXlQcmVzcywgUXQ6OktleV9MZWZ0LCBRdDo6Tm9Nb2RpZmllcik7
CisgICAgUUtleUV2ZW50IGtleUxlZnRFdmVudFJlbGVhc2UoUUV2ZW50OjpLZXlSZWxlYXNlLCBR
dDo6S2V5X0xlZnQsIFF0OjpOb01vZGlmaWVyKTsKKworICAgIC8vTW92ZSAyIGNoYXJhY3RlcnMg
TEVGVAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgIHBhZ2UtPmV2
ZW50KCZrZXlMZWZ0RXZlbnRQcmVzcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZrZXlMZWZ0RXZl
bnRSZWxlYXNlKTsKKyAgICB9CisKKyAgICAvL1NlbGVjdCB0byB0aGUgc3RhcnQgb2YgdGhlIGxp
bmUKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RTdGFydE9mTGluZSk7
CisKKyAgICAvL0ltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFy
aWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCA2KTsKKworICAgIC8v
SW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0
OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50
KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworCisgICAgLy9JbUN1cnJlbnRT
ZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJy
ZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmlu
Zz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiUXRXZWJLIikpOwor
CisgICAgLy9FTkQgLSBUZXN0cyBmb3IgU2VsZWN0aW9uIHdoZW4gdGhlIEVkaXRvciBpcyBub3Qg
aW4gQ29tcG9zaXRpb24gbW9kZQorCisgICAgLy9JbWhIaWRkZW5UZXh0CisgICAgUVBvaW50IHBh
c3N3b3JkSW5wdXRDZW50ZXIgPSBpbnB1dHMuYXQoMSkuZ2VvbWV0cnkoKS5jZW50ZXIoKTsKKyAg
ICBjbGlja09uUGFnZShwYWdlLCBwYXNzd29yZElucHV0Q2VudGVyKTsKKworICAgIFFWRVJJRlko
aW5wdXRNZXRob2RFbmFibGVkKHZpZXcpKTsKKyAgICBRVkVSSUZZKGlucHV0TWV0aG9kSGludHMo
dmlldykgJiBRdDo6SW1oSGlkZGVuVGV4dCk7CisKKyAgICBjbGlja09uUGFnZShwYWdlLCB0ZXh0
SW5wdXRDZW50ZXIpOworICAgIFFWRVJJRlkoIShpbnB1dE1ldGhvZEhpbnRzKHZpZXcpICYgUXQ6
OkltaEhpZGRlblRleHQpKTsKKworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRt
bD48Ym9keT48cD5ub3RoaW5nIHRvIGlucHV0IGhlcmUiKTsKKyAgICB0ZXN0Q29udGV4dC5oaWRl
SW5wdXRQYW5lbCgpOworCisgICAgUVdlYkVsZW1lbnQgcGFyYSA9IHBhZ2UtPm1haW5GcmFtZSgp
LT5maW5kRmlyc3RFbGVtZW50KCJwIik7CisgICAgY2xpY2tPblBhZ2UocGFnZSwgcGFyYS5nZW9t
ZXRyeSgpLmNlbnRlcigpKTsKKworICAgIFFWRVJJRlkoIXRlc3RDb250ZXh0LmlzSW5wdXRQYW5l
bFZpc2libGUoKSk7CisKKyAgICAvL1NUQVJUIC0gVGVzdCBmb3Igc2VuZGluZyBlbXB0eSBRSW5w
dXRNZXRob2RFdmVudAorICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRtbD48Ym9k
eT4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxpbnB1
dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQzJyB2YWx1ZT0nUXRXZWJLaXQyJy8+IiBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8L2JvZHk+PC9odG1sPiIpOwor
ICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBpbnB1dEVsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDMnKTsgaW5wdXRFbGUuZm9jdXMoKTsgaW5w
dXRFbGUuc2VsZWN0KCk7Iik7CisKKyAgICAvL1NlbmQgZW1wdHkgUUlucHV0TWV0aG9kRXZlbnQK
KyAgICBRSW5wdXRNZXRob2RFdmVudCBlbXB0eUV2ZW50OworICAgIHBhZ2UtPmV2ZW50KCZlbXB0
eUV2ZW50KTsKKworICAgIFFTdHJpbmcgaW5wdXRWYWx1ZSA9IHBhZ2UtPm1haW5GcmFtZSgpLT5l
dmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDMnKS52YWx1
ZSIpLnRvU3RyaW5nKCk7CisgICAgUUNPTVBBUkUoaW5wdXRWYWx1ZSwgUVN0cmluZygiUXRXZWJL
aXQyIikpOworICAgIC8vRU5EIC0gVGVzdCBmb3Igc2VuZGluZyBlbXB0eSBRSW5wdXRNZXRob2RF
dmVudAorCisgICAgcGFnZS0+bWFpbkZyYW1lKCktPnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9
J3RleHQnIGlkPSdpbnB1dDQnIHZhbHVlPSdRdFdlYktpdCBpbnB1dE1ldGhvZCcvPiIgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4i
KTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgaW5wdXRF
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQ0Jyk7IGlucHV0RWxlLmZvY3VzKCk7
IGlucHV0RWxlLnNlbGVjdCgpOyIpOworCisgICAgLy8gQ2xlYXIgdGhlIHNlbGVjdGlvbiwgYWxz
byBjYW5jZWwgdGhlIG9uZ29pbmcgY29tcG9zaXRpb24gaWYgdGhlcmUgaXMgb25lLgorICAgIHsK
KyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsK
KyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBuZXdTZWxlY3Rpb24oUUlucHV0
TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwgMCwgUVZhcmlhbnQoKSk7CisgICAgICAgIGF0dHJp
YnV0ZXMuYXBwZW5kKG5ld1NlbGVjdGlvbik7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2
ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9
CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRN
ZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9
IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwg
UVN0cmluZygiIikpOworCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBRU3RyaW5nIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJp
YW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0
cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9u
CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRp
b24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFS
RShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAg
IGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQ
b3NpdGlvbiwgMCk7CisKKyAgICAvLyAxLiBJbnNlcnQgYSBjaGFyYWN0ZXIgdG8gdGhlIGJlZ2lu
aW5nIG9mIHRoZSBsaW5lLgorICAgIC8vIFNlbmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2Vz
IHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICdtJy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJ
bnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1l
dGhvZEV2ZW50IGV2ZW50KCJtIiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZl
dmVudCk7CisgICAgfQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2Vs
ZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2Vs
ZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0Cisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0
KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAg
IFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIlF0V2ViS2l0IGlucHV0TWV0aG9k
IikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworCisg
ICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDApOworCisgICAgLy8gU2Vu
ZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24g
J24nLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4g
YXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIm4iLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1
cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8
UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOwor
CisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2
YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwg
UVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0
aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9z
aXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09N
UEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOwor
ICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNo
b3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyBTZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0
aGUgZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlu
cHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0
aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRT
dHJpbmcoIm8iKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAv
LyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVy
eShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQu
dmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygi
IikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5w
dXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFs
dWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdW
YWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJz
b3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1
cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7Cisg
ICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDEpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlv
bgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0
aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBB
UkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisgICAgLy8gMi4gaW5zZXJ0IGEgY2hhcmFjdGVyIHRv
IHRoZSBtaWRkbGUgb2YgdGhlIGxpbmUuCisgICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hp
Y2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24gJ2QnLgorICAgIHsKKyAgICAgICAg
UUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAg
UUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoImQiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+
ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09N
UEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGlu
Z1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3Vu
ZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlu
cHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQ
b3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24s
IDEpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisg
ICAgLy8gU2VuZCBjb21taXQgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBjb25mb3JtcyBj
b21wb3NpdGlvbi4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRy
aWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQuc2V0Q29tbWl0U3RyaW5nKCJlIik7CisgICAgICAg
IHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9u
CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVj
dGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7Cisg
ICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vy
cm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
U3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxR
U3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRX
ZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAg
IGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQ
b3NpdGlvbiwgMik7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBh
Z2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBv
c2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwg
Mik7CisKKyAgICAvLyAzLiBJbnNlcnQgYSBjaGFyYWN0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGlu
ZS4KKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpOwor
ICAgIAorICAgIC8vIFNlbmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3Ig
aGFzIGNvbXBvc2l0aW9uICd0Jy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2
ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2
ZW50KCJ0IiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAg
fQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUg
PSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUs
IFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJy
b3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1
cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMjIpOworCisgICAgLy8gSW1B
bmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7
CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDIyKTsKKworICAgIC8vIFNlbmQgY29tbWl0
IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgY29uZm9ybXMgY29tcG9zaXRpb24uCisgICAg
eworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVz
OworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAg
ICAgIGV2ZW50LnNldENvbW1pdFN0cmluZygidCIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZl
bnQpOworICAgIH0KKworICAgIC8vIEltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVj
dGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVj
dGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisKKyAgICAvLyBJbVN1cnJvdW5kaW5nVGV4dAorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7
CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBR
Q09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJvZVF0V2ViS2l0IGlucHV0TWV0aG9k
dCIpKTsKKworICAgIC8vIEltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5w
dXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24g
PSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAyMyk7CisK
KyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlh
bnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMjMpOworCisgICAgLy8g
NC4gUmVwbGFjZSB0aGUgc2VsZWN0aW9uLgorICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBh
Z2U6OlNlbGVjdFByZXZpb3VzV29yZCk7CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAg
ICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9u
KTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBR
Q09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiaW5wdXRNZXRob2R0IikpOworCisgICAg
Ly8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVy
eShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50
LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmlu
Zygib2VRdFdlYktpdCBpbnB1dE1ldGhvZHQiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9u
CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRp
b24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFS
RShjdXJzb3JQb3NpdGlvbiwgMTEpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZh
cmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAg
ICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9y
UG9zaXRpb24sIDIzKTsKKworICAgIC8vIFNlbmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2Vz
IHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICd3Jy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJ
bnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1l
dGhvZEV2ZW50IGV2ZW50KCJ3IiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZl
dmVudCk7CisgICAgfQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2Vs
ZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2Vs
ZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0Cisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0
KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAg
IFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgIikpOworCisg
ICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDExKTsKKworICAgIC8vIElt
QW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgp
OworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAxMSk7CisKKyAgICAvLyBTZW5kIGNvbW1p
dCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uLgorICAg
IHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRl
czsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAg
ICAgICBldmVudC5zZXRDb21taXRTdHJpbmcoIjIiKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2
ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0g
cGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxl
Y3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxl
Y3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAg
ICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQp
OworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAg
UUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCAyIikpOworCisg
ICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDEyKTsKKworICAgIC8vIElt
QW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgp
OworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAxMik7CisKKyAgICAvLyBDaGVjayBzZW5k
aW5nIFJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwgZXZlbnQKKyAgICBwYWdlLT5tYWluRnJhbWUo
KS0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICI8aW5wdXQgdHlwZT0ndGV4dCcgaWQ9J2lucHV0NScgdmFsdWU9J1F0
V2ViS2l0IGlucHV0TWV0aG9kJy8+IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICI8ZGl2IGlkPSdidG5EaXYnIG9uY2xpY2s9J2k9ZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJnF1b3Q7aW5wdXQ1JnF1b3Q7KTsgaS5mb2N1cygpOyc+YWJjPC9kaXY+IlwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+
Iik7CisgICAgUVdlYkVsZW1lbnQgaW5wdXRFbGVtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCktPmZp
bmRGaXJzdEVsZW1lbnQoImRpdiIpOworICAgIGNsaWNrT25QYWdlKHBhZ2UsIGlucHV0RWxlbWVu
dC5nZW9tZXRyeSgpLmNlbnRlcigpKTsKKworICAgIFFWRVJJRlkoIXRlc3RDb250ZXh0LmlzSW5w
dXRQYW5lbFZpc2libGUoKSk7CisKKyAgICAvLyBTVEFSVCAtIE5ld2xpbmUgdGVzdCBmb3IgdGV4
dGFyZWEKKyAgICBxQXBwLT5wcm9jZXNzRXZlbnRzKCk7CisgICAgcGFnZS0+bWFpbkZyYW1lKCkt
PnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPHRleHRhcmVhIHJvd3M9JzUnIGNvbHM9JzEnIGlkPSdpbnB1dDUnIHZh
bHVlPScnLz4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjwvYm9keT48L2h0bWw+Iik7CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgidmFyIGlucHV0RWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0NScpOyBp
bnB1dEVsZS5mb2N1cygpOyBpbnB1dEVsZS5zZWxlY3QoKTsiKTsKKyAgICAKKyAgICAvLyBFbnRl
ciBLZXkgd2l0aG91dCBrZXkgdGV4dAorICAgIFFLZXlFdmVudCBrZXlFbnRlcihRRXZlbnQ6Oktl
eVByZXNzLCBRdDo6S2V5X0VudGVyLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgcGFnZS0+ZXZlbnQo
JmtleUVudGVyKTsKKyAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRy
aWJzOworCisgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnRUZXh0KFFTdHJpbmcoKSwgYXR0cmli
cyk7CisgICAgZXZlbnRUZXh0LnNldENvbW1pdFN0cmluZygiXG4iKTsKKyAgICBwYWdlLT5ldmVu
dCgmZXZlbnRUZXh0KTsKKworICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50VGV4dDIoUVN0cmlu
ZygpLCBhdHRyaWJzKTsKKyAgICBldmVudFRleHQyLnNldENvbW1pdFN0cmluZygidGhpcmQgbGlu
ZSIpOworICAgIHBhZ2UtPmV2ZW50KCZldmVudFRleHQyKTsKKyAgICBxQXBwLT5wcm9jZXNzRXZl
bnRzKCk7CisKKyAgICBRU3RyaW5nIGlucHV0VmFsdWUyID0gcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0NScpLnZhbHVl
IikudG9TdHJpbmcoKTsKKyAgICBRQ09NUEFSRShpbnB1dFZhbHVlMiwgUVN0cmluZygiXG5cbnRo
aXJkIGxpbmUiKSk7CisKKyAgICAvLyBFbnRlciBLZXkgd2l0aCBrZXkgdGV4dCAnXHInCisgICAg
cGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIGlucHV0RWxlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0NScpOyBpbnB1dEVsZS52YWx1ZSA9ICcnOyBpbnB1
dEVsZS5mb2N1cygpOyBpbnB1dEVsZS5zZWxlY3QoKTsiKTsKKyAgICBpbnB1dFZhbHVlMiA9IHBh
Z2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbnB1dDUnKS52YWx1ZSIpLnRvU3RyaW5nKCk7CisgICAgUUNPTVBBUkUoaW5wdXRWYWx1
ZTIsIFFTdHJpbmcoIiIpKTsKKworICAgIFFLZXlFdmVudCBrZXlFbnRlcldpdGhDYXJyaWFnZVJl
dHVybihRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5X0VudGVyLCBRdDo6Tm9Nb2RpZmllciwgIlxy
Iik7CisgICAgcGFnZS0+ZXZlbnQoJmtleUVudGVyV2l0aENhcnJpYWdlUmV0dXJuKTsKKyAgICBw
YWdlLT5ldmVudCgmZXZlbnRUZXh0KTsKKyAgICBwYWdlLT5ldmVudCgmZXZlbnRUZXh0Mik7Cisg
ICAgcUFwcC0+cHJvY2Vzc0V2ZW50cygpOworCisgICAgaW5wdXRWYWx1ZTIgPSBwYWdlLT5tYWlu
RnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5w
dXQ1JykudmFsdWUiKS50b1N0cmluZygpOworICAgIFFDT01QQVJFKGlucHV0VmFsdWUyLCBRU3Ry
aW5nKCJcblxudGhpcmQgbGluZSIpKTsKKworICAgIC8vIEVudGVyIEtleSB3aXRoIGtleSB0ZXh0
ICdcbicKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgaW5w
dXRFbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQ1Jyk7IGlucHV0RWxlLnZhbHVl
ID0gJyc7IGlucHV0RWxlLmZvY3VzKCk7IGlucHV0RWxlLnNlbGVjdCgpOyIpOworICAgIGlucHV0
VmFsdWUyID0gcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2lucHV0NScpLnZhbHVlIikudG9TdHJpbmcoKTsKKyAgICBRQ09NUEFS
RShpbnB1dFZhbHVlMiwgUVN0cmluZygiIikpOworCisgICAgUUtleUV2ZW50IGtleUVudGVyV2l0
aExpbmVGZWVkKFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRW50ZXIsIFF0OjpOb01vZGlmaWVy
LCAiXG4iKTsKKyAgICBwYWdlLT5ldmVudCgma2V5RW50ZXJXaXRoTGluZUZlZWQpOworICAgIHBh
Z2UtPmV2ZW50KCZldmVudFRleHQpOworICAgIHBhZ2UtPmV2ZW50KCZldmVudFRleHQyKTsKKyAg
ICBxQXBwLT5wcm9jZXNzRXZlbnRzKCk7CisKKyAgICBpbnB1dFZhbHVlMiA9IHBhZ2UtPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1
dDUnKS52YWx1ZSIpLnRvU3RyaW5nKCk7CisgICAgUUNPTVBBUkUoaW5wdXRWYWx1ZTIsIFFTdHJp
bmcoIlxuXG50aGlyZCBsaW5lIikpOworCisgICAgLy8gRW50ZXIgS2V5IHdpdGgga2V5IHRleHQg
IlxuXHIiCisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIGlu
cHV0RWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0NScpOyBpbnB1dEVsZS52YWx1
ZSA9ICcnOyBpbnB1dEVsZS5mb2N1cygpOyBpbnB1dEVsZS5zZWxlY3QoKTsiKTsKKyAgICBpbnB1
dFZhbHVlMiA9IHBhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbnB1dDUnKS52YWx1ZSIpLnRvU3RyaW5nKCk7CisgICAgUUNPTVBB
UkUoaW5wdXRWYWx1ZTIsIFFTdHJpbmcoIiIpKTsKKworICAgIFFLZXlFdmVudCBrZXlFbnRlcldp
dGhMRkNSKFFFdmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfRW50ZXIsIFF0OjpOb01vZGlmaWVyLCAi
XG5cciIpOworICAgIHBhZ2UtPmV2ZW50KCZrZXlFbnRlcldpdGhMRkNSKTsKKyAgICBwYWdlLT5l
dmVudCgmZXZlbnRUZXh0KTsKKyAgICBwYWdlLT5ldmVudCgmZXZlbnRUZXh0Mik7CisgICAgcUFw
cC0+cHJvY2Vzc0V2ZW50cygpOworCisgICAgaW5wdXRWYWx1ZTIgPSBwYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQ1Jyku
dmFsdWUiKS50b1N0cmluZygpOworICAgIFFDT01QQVJFKGlucHV0VmFsdWUyLCBRU3RyaW5nKCJc
blxudGhpcmQgbGluZSIpKTsKKworICAgIC8vIFJldHVybiBLZXkgd2l0aG91dCBrZXkgdGV4dAor
ICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBpbnB1dEVsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDUnKTsgaW5wdXRFbGUudmFsdWUgPSAnJzsg
aW5wdXRFbGUuZm9jdXMoKTsgaW5wdXRFbGUuc2VsZWN0KCk7Iik7CisgICAgaW5wdXRWYWx1ZTIg
PSBwYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW5wdXQ1JykudmFsdWUiKS50b1N0cmluZygpOworICAgIFFDT01QQVJFKGlucHV0
VmFsdWUyLCBRU3RyaW5nKCIiKSk7CisKKyAgICBRS2V5RXZlbnQga2V5UmV0dXJuKFFFdmVudDo6
S2V5UHJlc3MsIFF0OjpLZXlfUmV0dXJuLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgcGFnZS0+ZXZl
bnQoJmtleVJldHVybik7CisgICAgcGFnZS0+ZXZlbnQoJmV2ZW50VGV4dCk7CisgICAgcGFnZS0+
ZXZlbnQoJmV2ZW50VGV4dDIpOworICAgIHFBcHAtPnByb2Nlc3NFdmVudHMoKTsKKworICAgIGlu
cHV0VmFsdWUyID0gcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0NScpLnZhbHVlIikudG9TdHJpbmcoKTsKKyAgICBRQ09N
UEFSRShpbnB1dFZhbHVlMiwgUVN0cmluZygiXG5cbnRoaXJkIGxpbmUiKSk7CisKKyAgICAvLyBF
TkQgLSBOZXdsaW5lIHRlc3QgZm9yIHRleHRhcmVhCisKKyAgICBkZWxldGUgY29udGFpbmVyOwor
fQorCit2b2lkIHRzdF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzVGV4dEZvcm1hdF9kYXRhKCkKK3sK
KyAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJzdHJpbmciKTsKKyAgICBRVGVzdDo6YWRk
Q29sdW1uPGludD4oInN0YXJ0Iik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxpbnQ+KCJsZW5ndGgi
KTsKKworICAgIFFUZXN0OjpuZXdSb3coIiIpIDw8IFFTdHJpbmcoIiIpIDw8IDAgPDwgMDsKKyAg
ICBRVGVzdDo6bmV3Um93KCJRIikgPDwgUVN0cmluZygiUSIpIDw8IDAgPDwgMTsKKyAgICBRVGVz
dDo6bmV3Um93KCJRdCIpIDw8IFFTdHJpbmcoIlF0IikgPDwgMCA8PCAxOworICAgIFFUZXN0Ojpu
ZXdSb3coIlF0IikgPDwgUVN0cmluZygiUXQiKSA8PCAwIDw8IDI7CisgICAgUVRlc3Q6Om5ld1Jv
dygiUXQiKSA8PCBRU3RyaW5nKCJRdCIpIDw8IDEgPDwgMTsKKyAgICBRVGVzdDo6bmV3Um93KCJR
dCAiKSA8PCBRU3RyaW5nKCJRdCAiKSA8PCAwIDw8IDE7CisgICAgUVRlc3Q6Om5ld1JvdygiUXQg
IikgPDwgUVN0cmluZygiUXQgIikgPDwgMSA8PCAxOworICAgIFFUZXN0OjpuZXdSb3coIlF0ICIp
IDw8IFFTdHJpbmcoIlF0ICIpIDw8IDIgPDwgMTsKKyAgICBRVGVzdDo6bmV3Um93KCJRdCAiKSA8
PCBRU3RyaW5nKCJRdCAiKSA8PCAyIDw8IC0xOworICAgIFFUZXN0OjpuZXdSb3coIlF0ICIpIDw8
IFFTdHJpbmcoIlF0ICIpIDw8IC0yIDw8IDM7CisgICAgUVRlc3Q6Om5ld1JvdygiUXQgIikgPDwg
UVN0cmluZygiUXQgIikgPDwgMCA8PCAzOworICAgIFFUZXN0OjpuZXdSb3coIlF0IGJ5IikgPDwg
UVN0cmluZygiUXQgYnkiKSA8PCAwIDw8IDE7CisgICAgUVRlc3Q6Om5ld1JvdygiUXQgYnkgTm9r
aWEiKSA8PCBRU3RyaW5nKCJRdCBieSBOb2tpYSIpIDw8IDAgPDwgMTsKK30KKworCit2b2lkIHRz
dF9RV2ViUGFnZTo6aW5wdXRNZXRob2RzVGV4dEZvcm1hdCgpCit7CisgICAgUVdlYlBhZ2UqIHBh
Z2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgUVdlYlZpZXcqIHZpZXcgPSBuZXcgUVdlYlZpZXc7Cisg
ICAgdmlldy0+c2V0UGFnZShwYWdlKTsKKyAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXRGb250RmFt
aWx5KFFXZWJTZXR0aW5nczo6U2VyaWZGb250LCAiRm9vU2VyaWZGb250Iik7CisgICAgcGFnZS0+
bWFpbkZyYW1lKCktPnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDEn
IHN0eWxlPSdmb250LWZhbWlseTogc2VyaWYnIHZhbHVlPScnIG1heGxlbmd0aD0nMjAnLz4iKTsK
KyAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnaW5wdXQxJykuZm9jdXMoKSIpOworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5z
ZXRGb2N1cygpOworICAgIHZpZXctPnNob3coKTsKKworICAgIFFGRVRDSChRU3RyaW5nLCBzdHJp
bmcpOworICAgIFFGRVRDSChpbnQsIHN0YXJ0KTsKKyAgICBRRkVUQ0goaW50LCBsZW5ndGgpOwor
CisgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cnM7CisgICAgUVRl
eHRDaGFyRm9ybWF0IGZvcm1hdDsKKyAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRD
aGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVDb2xv
cihRdDo6cmVkKTsKKyAgICBhdHRycy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0
ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgc3RhcnQsIGxlbmd0aCwgZm9ybWF0KSk7
CisgICAgUUlucHV0TWV0aG9kRXZlbnQgaW0oc3RyaW5nLCBhdHRycyk7CisgICAgcGFnZS0+ZXZl
bnQoJmltKTsKKworICAgIFFUZXN0OjpxV2FpdCgxMDAwKTsKKworICAgIGRlbGV0ZSB2aWV3Owor
fQorCit2b2lkIHRzdF9RV2ViUGFnZTo6cHJvdGVjdEJpbmRpbmdzUnVudGltZU9iamVjdHNGcm9t
Q29sbGVjdG9yKCkKK3sKKyAgICBRU2lnbmFsU3B5IGxvYWRTcHkobV92aWV3LCBTSUdOQUwobG9h
ZEZpbmlzaGVkKGJvb2wpKSk7CisKKyAgICBQbHVnaW5QYWdlKiBuZXdQYWdlID0gbmV3IFBsdWdp
blBhZ2UobV92aWV3KTsKKyAgICBtX3ZpZXctPnNldFBhZ2UobmV3UGFnZSk7CisKKyAgICBtX3Zp
ZXctPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVk
LCB0cnVlKTsKKworICAgIG1fdmlldy0+c2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT48b2Jq
ZWN0IHR5cGU9J2FwcGxpY2F0aW9uL3gtcXQtcGx1Z2luJyBjbGFzc2lkPSdsaW5lZWRpdCcgaWQ9
J215bGluZWVkaXQnLz48L2JvZHk+PC9odG1sPiIpKTsKKyAgICBRVFJZX0NPTVBBUkUobG9hZFNw
eS5jb3VudCgpLCAxKTsKKworICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImZ1bmN0aW9uIHRlc3RtZSh0ZXh0KSB7IHZhciBsaW5lZWRpdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdteWxpbmVlZGl0Jyk7IGxpbmVlZGl0LnNldFRleHQodGV4dCk7IGxpbmVl
ZGl0LnNlbGVjdEFsbCgpOyB9Iik7CisKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KCJ0ZXN0bWUoJ2ZvbycpIik7CisKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3QoKTsKKworICAgIC8vIGRvbid0IGNyYXNoIQor
ICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInRlc3RtZSgnYmFy
JykiKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmxvY2FsVVJMU2NoZW1lcygpCit7CisgICAg
aW50IGkgPSBRV2ViU2VjdXJpdHlPcmlnaW46OmxvY2FsU2NoZW1lcygpLnNpemUoKTsKKworICAg
IFFXZWJTZWN1cml0eU9yaWdpbjo6cmVtb3ZlTG9jYWxTY2hlbWUoImZpbGUiKTsKKyAgICBRVFJZ
X0NPTVBBUkUoUVdlYlNlY3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMoKS5zaXplKCksIGkpOwor
ICAgIFFXZWJTZWN1cml0eU9yaWdpbjo6YWRkTG9jYWxTY2hlbWUoImZpbGUiKTsKKyAgICBRVFJZ
X0NPTVBBUkUoUVdlYlNlY3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMoKS5zaXplKCksIGkpOwor
CisgICAgUVdlYlNlY3VyaXR5T3JpZ2luOjpyZW1vdmVMb2NhbFNjaGVtZSgicXJjIik7CisgICAg
UVRSWV9DT01QQVJFKFFXZWJTZWN1cml0eU9yaWdpbjo6bG9jYWxTY2hlbWVzKCkuc2l6ZSgpLCBp
IC0gMSk7CisgICAgUVdlYlNlY3VyaXR5T3JpZ2luOjphZGRMb2NhbFNjaGVtZSgicXJjIik7Cisg
ICAgUVRSWV9DT01QQVJFKFFXZWJTZWN1cml0eU9yaWdpbjo6bG9jYWxTY2hlbWVzKCkuc2l6ZSgp
LCBpKTsKKworICAgIFFTdHJpbmcgbXlzY2hlbWUgPSAibXlzY2hlbWUiOworICAgIFFXZWJTZWN1
cml0eU9yaWdpbjo6YWRkTG9jYWxTY2hlbWUobXlzY2hlbWUpOworICAgIFFUUllfQ09NUEFSRShR
V2ViU2VjdXJpdHlPcmlnaW46OmxvY2FsU2NoZW1lcygpLnNpemUoKSwgaSArIDEpOworICAgIFFW
RVJJRlkoUVdlYlNlY3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMoKS5jb250YWlucyhteXNjaGVt
ZSkpOworICAgIFFXZWJTZWN1cml0eU9yaWdpbjo6cmVtb3ZlTG9jYWxTY2hlbWUobXlzY2hlbWUp
OworICAgIFFUUllfQ09NUEFSRShRV2ViU2VjdXJpdHlPcmlnaW46OmxvY2FsU2NoZW1lcygpLnNp
emUoKSwgaSk7CisgICAgUVdlYlNlY3VyaXR5T3JpZ2luOjpyZW1vdmVMb2NhbFNjaGVtZShteXNj
aGVtZSk7CisgICAgUVRSWV9DT01QQVJFKFFXZWJTZWN1cml0eU9yaWdpbjo6bG9jYWxTY2hlbWVz
KCkuc2l6ZSgpLCBpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHRlc3RGbGFnKFFXZWJQYWdl
JiB3ZWJQYWdlLCBRV2ViU2V0dGluZ3M6OldlYkF0dHJpYnV0ZSBzZXR0aW5nQXR0cmlidXRlLCBj
b25zdCBRU3RyaW5nJiBqc09iamVjdE5hbWUsIGJvb2wgc2V0dGluZ1ZhbHVlKQoreworICAgIHdl
YlBhZ2Uuc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKHNldHRpbmdBdHRyaWJ1dGUsIHNldHRpbmdW
YWx1ZSk7CisgICAgcmV0dXJuIHdlYlBhZ2UubWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dChRU3RyaW5nKCIod2luZG93LiUxICE9IHVuZGVmaW5lZCkiKS5hcmcoanNPYmplY3ROYW1lKSku
dG9Cb29sKCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXN0T3B0aW9uYWxKU09iamVjdHMo
KQoreworICAgIC8vIE9uY2UgYSBmZWF0dXJlIGlzIGVuYWJsZWQgYW5kIHRoZSBKUyBvYmplY3Qg
aXMgYWNjZXNzZWQgdHVybmluZyBvZmYgdGhlIHNldHRpbmcgd2lsbCBub3QgdHVybiBvZmYKKyAg
ICAvLyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgSlMgb2JqZWN0IGFueSBtb3JlLiBGb3IgdGhpcyBy
ZWFzb24gdGhpcyB0ZXN0IHVzZXMgdHdvIFFXZWJQYWdlIGluc3RhbmNlcy4KKyAgICAvLyBQYXJ0
IG9mIHRoZSB0ZXN0IGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBRV2ViUGFnZSBpbnN0YW5jZXMg
ZG8gbm90IGludGVyZmVyZSB3aXRoIGVhY2ggb3RoZXIgc28gdHVybmluZyBvbgorICAgIC8vIGEg
ZmVhdHVyZSBmb3Igb25lIGluc3RhbmNlIHdpbGwgbm90IHR1cm4gaXQgb24gZm9yIGFub3RoZXIu
CisKKyAgICBRV2ViUGFnZSB3ZWJQYWdlMTsKKyAgICBRV2ViUGFnZSB3ZWJQYWdlMjsKKworICAg
IHdlYlBhZ2UxLmN1cnJlbnRGcmFtZSgpLT5zZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxib2R5PnRl
c3Q8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpKTsKKyAg
ICB3ZWJQYWdlMi5jdXJyZW50RnJhbWUoKS0+c2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT50
ZXN0PC9ib2R5PjwvaHRtbD4iKSwgUVVybCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iKSk7CisK
KyAgICBRRVhQRUNUX0ZBSUwoIiIsIkZlYXR1cmUgZW5hYmxlZC9kaXNhYmxlZCBjaGVja2luZyBw
cm9ibGVtLiBMb29rIGF0IGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk4NjciLCBD
b250aW51ZSk7CisgICAgUUNPTVBBUkUodGVzdEZsYWcod2ViUGFnZTEsIFFXZWJTZXR0aW5nczo6
T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLCAiYXBwbGljYXRpb25DYWNoZSIsIGZh
bHNlKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHRlc3RGbGFnKHdlYlBhZ2UyLCBRV2ViU2V0dGlu
Z3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCwgImFwcGxpY2F0aW9uQ2FjaGUi
LCB0cnVlKSwgIHRydWUpOworICAgIFFFWFBFQ1RfRkFJTCgiIiwiRmVhdHVyZSBlbmFibGVkL2Rp
c2FibGVkIGNoZWNraW5nIHByb2JsZW0uIExvb2sgYXQgYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yOTg2NyIsIENvbnRpbnVlKTsKKyAgICBRQ09NUEFSRSh0ZXN0RmxhZyh3ZWJQYWdl
MSwgUVdlYlNldHRpbmdzOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsICJhcHBs
aWNhdGlvbkNhY2hlIiwgZmFsc2UpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUodGVzdEZsYWcod2Vi
UGFnZTIsIFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLCAi
YXBwbGljYXRpb25DYWNoZSIsIGZhbHNlKSwgdHJ1ZSk7CisKKyAgICBRQ09NUEFSRSh0ZXN0Rmxh
Zyh3ZWJQYWdlMSwgUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLCAibG9jYWxTdG9y
YWdlIiwgZmFsc2UpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUodGVzdEZsYWcod2ViUGFnZTIsIFFX
ZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgImxvY2FsU3RvcmFnZSIsIHRydWUpLCAg
dHJ1ZSk7CisgICAgUUNPTVBBUkUodGVzdEZsYWcod2ViUGFnZTEsIFFXZWJTZXR0aW5nczo6TG9j
YWxTdG9yYWdlRW5hYmxlZCwgImxvY2FsU3RvcmFnZSIsIGZhbHNlKSwgZmFsc2UpOworICAgIFFD
T01QQVJFKHRlc3RGbGFnKHdlYlBhZ2UyLCBRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJs
ZWQsICJsb2NhbFN0b3JhZ2UiLCBmYWxzZSksIHRydWUpOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgY2hlY2tMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5KFFXZWJQYWdlJiB3ZWJQYWdlLCBib29sIGxv
Y2FsU3RvcmFnZUVuYWJsZWQpCit7CisgICAgd2ViUGFnZS5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1
dGUoUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLCBsb2NhbFN0b3JhZ2VFbmFibGVk
KTsKKyAgICByZXR1cm4gd2ViUGFnZS5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KFFT
dHJpbmcoIih3aW5kb3cubG9jYWxTdG9yYWdlICE9IHVuZGVmaW5lZCkiKSkudG9Cb29sKCk7Cit9
CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXN0TG9jYWxTdG9yYWdlVmlzaWJpbGl0eSgpCit7Cisg
ICAgLy8gTG9jYWwgc3RvcmFnZSdzIHZpc2liaWxpdHkgZGVwZW5kcyBvbiBpdHMgc2VjdXJpdHkg
b3JpZ2luLCB3aGljaCBkZXBlbmRzIG9uIGJhc2UgdXJsLgorICAgIC8vIEluaXRpYWxseSwgaXQg
d2lsbCB0ZXN0IGl0IHdpdGggYmFzZSB1cmxzIHRoYXQgZ2V0IGEgZ2xvYmFsbHkgdW5pcXVlIG9y
aWdpbiwgd2hpY2ggbWF5IG5vdAorICAgIC8vIGJlIGFibGUgdG8gdXNlIGxvY2FsIHN0b3JhZ2Ug
ZXZlbiBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLiBUaGVuIGxhdGVyIHRoZSBzYW1lIHRlc3Qg
aXMKKyAgICAvLyBkb25lIGJ1dCB3aXRoIHVybHMgdGhhdCB3b3VsZCBnZXQgYSB2YWxpZCBvcmln
aW4sIHNvIGxvY2FsIHN0b3JhZ2UgY291bGQgYmUgdXNlZC4KKyAgICAvLyBCZWZvcmUgZXZlcnkg
dGVzdCBjYXNlIGl0IGNoZWNrcyBpZiBsb2NhbCBzdG9yYWdlIGlzIG5vdCBhbHJlYWR5IHZpc2li
bGUuCisKKyAgICBRV2ViUGFnZSB3ZWJQYWdlOworCisgICAgd2ViUGFnZS5jdXJyZW50RnJhbWUo
KS0+c2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT50ZXN0PC9ib2R5PjwvaHRtbD4iKSwgUVVy
bCgpKTsKKworICAgIFFDT01QQVJFKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdl
LCBmYWxzZSksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShjaGVja0xvY2FsU3RvcmFnZVZpc2liaWxp
dHkod2ViUGFnZSwgdHJ1ZSksIGZhbHNlKTsKKworICAgIHdlYlBhZ2UuY3VycmVudEZyYW1lKCkt
PnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJvZHk+dGVzdDwvYm9keT48L2h0bWw+IiksIFFVcmwo
ImludmFsaWQiKSk7CisKKyAgICBRQ09NUEFSRShjaGVja0xvY2FsU3RvcmFnZVZpc2liaWxpdHko
d2ViUGFnZSwgZmFsc2UpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUoY2hlY2tMb2NhbFN0b3JhZ2VW
aXNpYmlsaXR5KHdlYlBhZ2UsIHRydWUpLCBmYWxzZSk7CisKKyAgICB3ZWJQYWdlLmN1cnJlbnRG
cmFtZSgpLT5zZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxib2R5PnRlc3Q8L2JvZHk+PC9odG1sPiIp
LCBRVXJsKCI6Ly9taXNwYXJzZWQuY29tIikpOworCisgICAgUUNPTVBBUkUoY2hlY2tMb2NhbFN0
b3JhZ2VWaXNpYmlsaXR5KHdlYlBhZ2UsIGZhbHNlKSwgZmFsc2UpOworICAgIFFDT01QQVJFKGNo
ZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCB0cnVlKSwgZmFsc2UpOworCisgICAg
d2ViUGFnZS5jdXJyZW50RnJhbWUoKS0+c2V0SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT50ZXN0
PC9ib2R5PjwvaHRtbD4iKSwgUVVybCgiaHR0cDovLyIpKTsKKworICAgIFFDT01QQVJFKGNoZWNr
TG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCBmYWxzZSksIGZhbHNlKTsKKyAgICBRQ09N
UEFSRShjaGVja0xvY2FsU3RvcmFnZVZpc2liaWxpdHkod2ViUGFnZSwgdHJ1ZSksIGZhbHNlKTsK
KworICAgIHdlYlBhZ2UuY3VycmVudEZyYW1lKCktPnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJv
ZHk+dGVzdDwvYm9keT48L2h0bWw+IiksIFFVcmwoImFib3V0OmJsYW5rIikpOworCisgICAgUUNP
TVBBUkUoY2hlY2tMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5KHdlYlBhZ2UsIGZhbHNlKSwgZmFsc2Up
OworICAgIFFDT01QQVJFKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCB0cnVl
KSwgZmFsc2UpOworCisgICAgd2ViUGFnZS5jdXJyZW50RnJhbWUoKS0+c2V0SHRtbChRU3RyaW5n
KCI8aHRtbD48Ym9keT50ZXN0PC9ib2R5PjwvaHRtbD4iKSwgUVVybCgiZGF0YTp0ZXh0L2h0bWws
dGVzdCIpKTsKKworICAgIFFDT01QQVJFKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQ
YWdlLCBmYWxzZSksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShjaGVja0xvY2FsU3RvcmFnZVZpc2li
aWxpdHkod2ViUGFnZSwgdHJ1ZSksIGZhbHNlKTsKKworICAgIHdlYlBhZ2UuY3VycmVudEZyYW1l
KCktPnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJvZHk+dGVzdDwvYm9keT48L2h0bWw+IiksIFFV
cmwoImZpbGU6Ly8vIikpOworCisgICAgUUNPTVBBUkUoY2hlY2tMb2NhbFN0b3JhZ2VWaXNpYmls
aXR5KHdlYlBhZ2UsIGZhbHNlKSwgZmFsc2UpOworICAgIFFDT01QQVJFKGNoZWNrTG9jYWxTdG9y
YWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCB0cnVlKSwgdHJ1ZSk7CisKKyAgICB3ZWJQYWdlLmN1cnJl
bnRGcmFtZSgpLT5zZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxib2R5PnRlc3Q8L2JvZHk+PC9odG1s
PiIpLCBRVXJsKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikpOworCisgICAgUUNPTVBBUkUoY2hl
Y2tMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5KHdlYlBhZ2UsIGZhbHNlKSwgZmFsc2UpOworICAgIFFD
T01QQVJFKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCB0cnVlKSwgdHJ1ZSk7
CisKKyAgICB3ZWJQYWdlLmN1cnJlbnRGcmFtZSgpLT5zZXRIdG1sKFFTdHJpbmcoIjxodG1sPjxi
b2R5PnRlc3Q8L2JvZHk+PC9odG1sPiIpLCBRVXJsKCJodHRwczovL3d3dy5leGFtcGxlLmNvbSIp
KTsKKworICAgIFFDT01QQVJFKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCBm
YWxzZSksIGZhbHNlKTsKKyAgICBRQ09NUEFSRShjaGVja0xvY2FsU3RvcmFnZVZpc2liaWxpdHko
d2ViUGFnZSwgdHJ1ZSksIHRydWUpOworCisgICAgd2ViUGFnZS5jdXJyZW50RnJhbWUoKS0+c2V0
SHRtbChRU3RyaW5nKCI8aHRtbD48Ym9keT50ZXN0PC9ib2R5PjwvaHRtbD4iKSwgUVVybCgiZnRw
Oi8vZmlsZXMuZXhhbXBsZS5jb20iKSk7CisKKyAgICBRQ09NUEFSRShjaGVja0xvY2FsU3RvcmFn
ZVZpc2liaWxpdHkod2ViUGFnZSwgZmFsc2UpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUoY2hlY2tM
b2NhbFN0b3JhZ2VWaXNpYmlsaXR5KHdlYlBhZ2UsIHRydWUpLCB0cnVlKTsKKworICAgIHdlYlBh
Z2UuY3VycmVudEZyYW1lKCktPnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGJvZHk+dGVzdDwvYm9k
eT48L2h0bWw+IiksIFFVcmwoImZpbGU6Ly8vcGF0aC90by9pbmRleC5odG1sIikpOworCisgICAg
UUNPTVBBUkUoY2hlY2tMb2NhbFN0b3JhZ2VWaXNpYmlsaXR5KHdlYlBhZ2UsIGZhbHNlKSwgZmFs
c2UpOworICAgIFFDT01QQVJFKGNoZWNrTG9jYWxTdG9yYWdlVmlzaWJpbGl0eSh3ZWJQYWdlLCB0
cnVlKSwgdHJ1ZSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXN0RW5hYmxlUGVyc2lzdGVu
dFN0b3JhZ2UoKQoreworICAgIFFXZWJQYWdlIHdlYlBhZ2U7CisKKyAgICAvLyBCeSBkZWZhdWx0
IGFsbCBwZXJzaXN0ZW50IG9wdGlvbnMgc2hvdWxkIGJlIGRpc2FibGVkCisgICAgUUNPTVBBUkUo
d2ViUGFnZS5zZXR0aW5ncygpLT50ZXN0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxTdG9y
YWdlRW5hYmxlZCksIGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJQYWdlLnNldHRpbmdzKCktPnRl
c3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpPZmZsaW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZCks
IGZhbHNlKTsKKyAgICBRQ09NUEFSRSh3ZWJQYWdlLnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUo
UVdlYlNldHRpbmdzOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpLCBmYWxzZSk7
CisgICAgUVZFUklGWSh3ZWJQYWdlLnNldHRpbmdzKCktPmljb25EYXRhYmFzZVBhdGgoKS5pc0Vt
cHR5KCkpOworCisgICAgUVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpOwor
CisKKyAgICBRVFJZX0NPTVBBUkUod2ViUGFnZS5zZXR0aW5ncygpLT50ZXN0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCksIHRydWUpOworICAgIFFUUllfQ09NUEFS
RSh3ZWJQYWdlLnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpPZmZsaW5l
U3RvcmFnZURhdGFiYXNlRW5hYmxlZCksIHRydWUpOworICAgIFFUUllfQ09NUEFSRSh3ZWJQYWdl
LnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQpLCB0cnVlKTsKKworICAgIFFUUllfVkVSSUZZKCF3ZWJQYWdlLnNl
dHRpbmdzKCktPm9mZmxpbmVTdG9yYWdlUGF0aCgpLmlzRW1wdHkoKSk7CisgICAgUVRSWV9WRVJJ
RlkoIXdlYlBhZ2Uuc2V0dGluZ3MoKS0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKCku
aXNFbXB0eSgpKTsKKyAgICBRVFJZX1ZFUklGWSghd2ViUGFnZS5zZXR0aW5ncygpLT5pY29uRGF0
YWJhc2VQYXRoKCkuaXNFbXB0eSgpKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmRlZmF1bHRU
ZXh0RW5jb2RpbmcoKQoreworICAgIFFXZWJGcmFtZSogbWFpbkZyYW1lID0gbV9wYWdlLT5tYWlu
RnJhbWUoKTsKKworICAgIFFTdHJpbmcgZGVmYXVsdENoYXJzZXQgPSBtYWluRnJhbWUtPmV2YWx1
YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQuZGVmYXVsdENoYXJzZXQiKS50b1N0cmluZygpOworICAg
IFFWRVJJRlkoIWRlZmF1bHRDaGFyc2V0LmlzRW1wdHkoKSk7CisgICAgUUNPTVBBUkUoUVdlYlNl
dHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT5kZWZhdWx0VGV4dEVuY29kaW5nKCksIGRlZmF1bHRD
aGFyc2V0KTsKKworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RGVmYXVsdFRleHRFbmNvZGlu
ZyhRU3RyaW5nKCJ1dGYtOCIpKTsKKyAgICBRU3RyaW5nIGNoYXJzZXQgPSBtYWluRnJhbWUtPmV2
YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQuZGVmYXVsdENoYXJzZXQiKS50b1N0cmluZygpOwor
ICAgIFFDT01QQVJFKGNoYXJzZXQsIFFTdHJpbmcoInV0Zi04IikpOworICAgIFFDT01QQVJFKG1f
cGFnZS0+c2V0dGluZ3MoKS0+ZGVmYXVsdFRleHRFbmNvZGluZygpLCBjaGFyc2V0KTsKKworICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RGVmYXVsdFRleHRFbmNvZGluZyhRU3RyaW5nKCkpOwor
ICAgIGNoYXJzZXQgPSBtYWluRnJhbWUtPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnQuZGVm
YXVsdENoYXJzZXQiKS50b1N0cmluZygpOworICAgIFFWRVJJRlkoIWNoYXJzZXQuaXNFbXB0eSgp
KTsKKyAgICBRQ09NUEFSRShjaGFyc2V0LCBkZWZhdWx0Q2hhcnNldCk7CisKKyAgICBRV2ViU2V0
dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPnNldERlZmF1bHRUZXh0RW5jb2RpbmcoUVN0cmluZygi
dXRmLTgiKSk7CisgICAgY2hhcnNldCA9IG1haW5GcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJk
b2N1bWVudC5kZWZhdWx0Q2hhcnNldCIpLnRvU3RyaW5nKCk7CisgICAgUUNPTVBBUkUoY2hhcnNl
dCwgUVN0cmluZygidXRmLTgiKSk7CisgICAgUUNPTVBBUkUoUVdlYlNldHRpbmdzOjpnbG9iYWxT
ZXR0aW5ncygpLT5kZWZhdWx0VGV4dEVuY29kaW5nKCksIGNoYXJzZXQpOworfQorCitjbGFzcyBF
cnJvclBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UKK3sKK3B1YmxpYzoKKworICAgIEVycm9yUGFnZShR
V2lkZ2V0KiBwYXJlbnQgPSAwKTogUVdlYlBhZ2UocGFyZW50KQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBleHRlbnNpb24gPT0gRXJyb3JQYWdlRXh0ZW5zaW9u
OworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBleHRlbnNpb24oRXh0ZW5zaW9uLCBjb25zdCBF
eHRlbnNpb25PcHRpb24qIG9wdGlvbiwgRXh0ZW5zaW9uUmV0dXJuKiBvdXRwdXQpCisgICAgewor
ICAgICAgICBFcnJvclBhZ2VFeHRlbnNpb25SZXR1cm4qIGVycm9yUGFnZSA9IHN0YXRpY19jYXN0
PEVycm9yUGFnZUV4dGVuc2lvblJldHVybio+KG91dHB1dCk7CisKKyAgICAgICAgZXJyb3JQYWdl
LT5jb250ZW50VHlwZSA9ICJ0ZXh0L2h0bWwiOworICAgICAgICBlcnJvclBhZ2UtPmNvbnRlbnQg
PSAiZXJyb3IiOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit2b2lkIHRzdF9R
V2ViUGFnZTo6ZXJyb3JQYWdlRXh0ZW5zaW9uKCkKK3sKKyAgICBFcnJvclBhZ2UgcGFnZTsKKyAg
ICBtX3ZpZXctPnNldFBhZ2UoJnBhZ2UpOworCisgICAgUVNpZ25hbFNweSBzcHlMb2FkRmluaXNo
ZWQobV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisKKyAgICBtX3ZpZXctPnNl
dFVybChRVXJsKCJkYXRhOnRleHQvaHRtbCxmb28iKSk7CisgICAgUVRSWV9DT01QQVJFKHNweUxv
YWRGaW5pc2hlZC5jb3VudCgpLCAxKTsKKworICAgIHBhZ2UubWFpbkZyYW1lKCktPnNldFVybChR
VXJsKCJodHRwOi8vbm9uLmV4aXN0ZW50L3VybCIpKTsKKyAgICBRVFJZX0NPTVBBUkUoc3B5TG9h
ZEZpbmlzaGVkLmNvdW50KCksIDIpOworICAgIFFDT01QQVJFKHBhZ2UubWFpbkZyYW1lKCktPnRv
UGxhaW5UZXh0KCksIFFTdHJpbmcoImVycm9yIikpOworICAgIFFDT01QQVJFKHBhZ2UuaGlzdG9y
eSgpLT5jb3VudCgpLCAyKTsKKyAgICBRQ09NUEFSRShwYWdlLmhpc3RvcnkoKS0+Y3VycmVudEl0
ZW0oKS51cmwoKSwgUVVybCgiaHR0cDovL25vbi5leGlzdGVudC91cmwiKSk7CisgICAgUUNPTVBB
UkUocGFnZS5oaXN0b3J5KCktPmNhbkdvQmFjaygpLCB0cnVlKTsKKyAgICBRQ09NUEFSRShwYWdl
Lmhpc3RvcnkoKS0+Y2FuR29Gb3J3YXJkKCksIGZhbHNlKTsKKworICAgIHBhZ2UudHJpZ2dlckFj
dGlvbihRV2ViUGFnZTo6QmFjayk7CisgICAgUVRSWV9DT01QQVJFKHBhZ2UuaGlzdG9yeSgpLT5j
YW5Hb0JhY2soKSwgZmFsc2UpOworICAgIFFUUllfQ09NUEFSRShwYWdlLmhpc3RvcnkoKS0+Y2Fu
R29Gb3J3YXJkKCksIHRydWUpOworCisgICAgcGFnZS50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpG
b3J3YXJkKTsKKyAgICBRVFJZX0NPTVBBUkUocGFnZS5oaXN0b3J5KCktPmNhbkdvQmFjaygpLCB0
cnVlKTsKKyAgICBRVFJZX0NPTVBBUkUocGFnZS5oaXN0b3J5KCktPmNhbkdvRm9yd2FyZCgpLCBm
YWxzZSk7CisKKyAgICBwYWdlLnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkJhY2spOworICAgIFFU
UllfQ09NUEFSRShwYWdlLmhpc3RvcnkoKS0+Y2FuR29CYWNrKCksIGZhbHNlKTsKKyAgICBRVFJZ
X0NPTVBBUkUocGFnZS5oaXN0b3J5KCktPmNhbkdvRm9yd2FyZCgpLCB0cnVlKTsKKyAgICBRVFJZ
X0NPTVBBUkUocGFnZS5oaXN0b3J5KCktPmN1cnJlbnRJdGVtKCkudXJsKCksIFFVcmwoImRhdGE6
dGV4dC9odG1sLGZvbyIpKTsKKworICAgIG1fdmlldy0+c2V0UGFnZSgwKTsKK30KKwordm9pZCB0
c3RfUVdlYlBhZ2U6OmVycm9yUGFnZUV4dGVuc2lvbkluSUZyYW1lcygpCit7CisgICAgRXJyb3JQ
YWdlIHBhZ2U7CisgICAgbV92aWV3LT5zZXRQYWdlKCZwYWdlKTsKKworICAgIG1fdmlldy0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+bG9hZChRVXJsKAorICAgICAgICAiZGF0YTp0ZXh0L2h0bWwsIgor
ICAgICAgICAiPGgxPmgxPC9oMT4iCisgICAgICAgICI8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0
bWwsPHAvPnAnPjwvaWZyYW1lPiIKKyAgICAgICAgIjxpZnJhbWUgc3JjPSdodHRwOi8vbm9uLmV4
aXN0ZW50L3VybCc+PC9pZnJhbWU+IikpOworICAgIFFTaWduYWxTcHkgc3B5TG9hZEZpbmlzaGVk
KG1fdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOworICAgIFFUUllfQ09NUEFSRShz
cHlMb2FkRmluaXNoZWQuY291bnQoKSwgMSk7CisKKyAgICBRQ09NUEFSRShwYWdlLm1haW5GcmFt
ZSgpLT5jaGlsZEZyYW1lcygpWzFdLT50b1BsYWluVGV4dCgpLCBRU3RyaW5nKCJlcnJvciIpKTsK
KworICAgIG1fdmlldy0+c2V0UGFnZSgwKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OmVycm9y
UGFnZUV4dGVuc2lvbkluRnJhbWVzZXQoKQoreworICAgIEVycm9yUGFnZSBwYWdlOworICAgIG1f
dmlldy0+c2V0UGFnZSgmcGFnZSk7CisKKyAgICBtX3ZpZXctPmxvYWQoUVVybCgicXJjOi8vL3Jl
c291cmNlcy9pbmRleC5odG1sIikpOworCisgICAgUVNpZ25hbFNweSBzcHlMb2FkRmluaXNoZWQo
bV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisgICAgUVRSWV9DT01QQVJFKHNw
eUxvYWRGaW5pc2hlZC5jb3VudCgpLCAxKTsKKyAgICBRQ09NUEFSRShwYWdlLm1haW5GcmFtZSgp
LT5jaGlsZEZyYW1lcygpLmNvdW50KCksIDIpOworICAgIFFDT01QQVJFKHBhZ2UubWFpbkZyYW1l
KCktPmNoaWxkRnJhbWVzKClbMV0tPnRvUGxhaW5UZXh0KCksIFFTdHJpbmcoImVycm9yIikpOwor
CisgICAgbV92aWV3LT5zZXRQYWdlKDApOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6ZXJyb3JQ
YWdlRXh0ZW5zaW9uTG9hZEZpbmlzaGVkKCkKK3sKKyAgICBFcnJvclBhZ2UgcGFnZTsKKyAgICBt
X3ZpZXctPnNldFBhZ2UoJnBhZ2UpOworCisgICAgUVNpZ25hbFNweSBzcHlMb2FkRmluaXNoZWQo
bV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSk7CisgICAgUVNpZ25hbFNweSBzcHlG
cmFtZUxvYWRGaW5pc2hlZChtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCksIFNJR05BTChsb2Fk
RmluaXNoZWQoYm9vbCkpKTsKKworICAgIG1fdmlldy0+c2V0VXJsKFFVcmwoImRhdGE6dGV4dC9o
dG1sLGZvbyIpKTsKKyAgICBRVFJZX0NPTVBBUkUoc3B5TG9hZEZpbmlzaGVkLmNvdW50KCksIDEp
OworICAgIFFUUllfQ09NUEFSRShzcHlGcmFtZUxvYWRGaW5pc2hlZC5jb3VudCgpLCAxKTsKKwor
ICAgIGNvbnN0IGJvb2wgbG9hZFN1Y2NlZGVkID0gc3B5TG9hZEZpbmlzaGVkLmF0KDApLmF0KDAp
LnRvQm9vbCgpOworICAgIFFWRVJJRlkobG9hZFN1Y2NlZGVkKTsKKyAgICBjb25zdCBib29sIGZy
YW1lTG9hZFN1Y2NlZGVkID0gc3B5RnJhbWVMb2FkRmluaXNoZWQuYXQoMCkuYXQoMCkudG9Cb29s
KCk7CisgICAgUVZFUklGWShmcmFtZUxvYWRTdWNjZWRlZCk7CisKKyAgICBtX3ZpZXctPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnNldFVybChRVXJsKCJodHRwOi8vbm9uLmV4aXN0ZW50L3VybCIpKTsK
KyAgICBRVFJZX0NPTVBBUkUoc3B5TG9hZEZpbmlzaGVkLmNvdW50KCksIDIpOworICAgIFFUUllf
Q09NUEFSRShzcHlGcmFtZUxvYWRGaW5pc2hlZC5jb3VudCgpLCAyKTsKKworICAgIGNvbnN0IGJv
b2wgbm9uRXhpc3RhbnRMb2FkU3VjY2VkZWQgPSBzcHlMb2FkRmluaXNoZWQuYXQoMSkuYXQoMCku
dG9Cb29sKCk7CisgICAgUVZFUklGWShub25FeGlzdGFudExvYWRTdWNjZWRlZCk7CisgICAgY29u
c3QgYm9vbCBub25FeGlzdGFudEZyYW1lTG9hZFN1Y2NlZGVkID0gc3B5RnJhbWVMb2FkRmluaXNo
ZWQuYXQoMSkuYXQoMCkudG9Cb29sKCk7CisgICAgUVZFUklGWShub25FeGlzdGFudEZyYW1lTG9h
ZFN1Y2NlZGVkKTsKKworICAgIG1fdmlldy0+c2V0UGFnZSgwKTsKK30KKworY2xhc3MgRnJpZW5k
bHlXZWJQYWdlIDogcHVibGljIFFXZWJQYWdlCit7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNz
IHRzdF9RV2ViUGFnZTsKK307CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjp1c2VyQWdlbnRBcHBsaWNh
dGlvbk5hbWUoKQoreworICAgIGNvbnN0IFFTdHJpbmcgb2xkQXBwbGljYXRpb25OYW1lID0gUUNv
cmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7CisgICAgRnJpZW5kbHlXZWJQYWdlIHBh
Z2U7CisKKyAgICBjb25zdCBRU3RyaW5nIGFwcGxpY2F0aW9uTmFtZU1hcmtlciA9IFFTdHJpbmc6
OmZyb21VdGY4KCJTdHJhbmdlTmFtZVwzNDJcMjEwXDIzNiIpOworICAgIFFDb3JlQXBwbGljYXRp
b246OnNldEFwcGxpY2F0aW9uTmFtZShhcHBsaWNhdGlvbk5hbWVNYXJrZXIpOworICAgIFFWRVJJ
RlkocGFnZS51c2VyQWdlbnRGb3JVcmwoUVVybCgpKS5jb250YWlucyhhcHBsaWNhdGlvbk5hbWVN
YXJrZXIpKTsKKworICAgIFFDb3JlQXBwbGljYXRpb246OnNldEFwcGxpY2F0aW9uTmFtZShvbGRB
cHBsaWNhdGlvbk5hbWUpOworfQorCitjbGFzcyBDdXN0b21Vc2VyQWdlbnRXZWJQYWdlIDogcHVi
bGljIFFXZWJQYWdlCit7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFFMYXRpbjFTdHJpbmcg
ZmlsdGVyZWRVc2VyQWdlbnQ7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBRU3RyaW5nIHVzZXJB
Z2VudEZvclVybChjb25zdCBRVXJsJiB1cmwpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
UVN0cmluZygiTXkgVXNlciBBZ2VudFxuWC1OZXctSHR0cC1IZWFkZXI6IE9oIE5vZXMhIik7Cisg
ICAgfQorfTsKK2NvbnN0IFFMYXRpbjFTdHJpbmcgQ3VzdG9tVXNlckFnZW50V2ViUGFnZTo6Zmls
dGVyZWRVc2VyQWdlbnQoIk15IFVzZXIgQWdlbnRYLU5ldy1IdHRwLUhlYWRlcjogT2ggTm9lcyEi
KTsKKwordm9pZCB0c3RfUVdlYlBhZ2U6OnVzZXJBZ2VudE5ld2xpbmVTdHJpcHBpbmcoKQorewor
ICAgIEN1c3RvbVVzZXJBZ2VudFdlYlBhZ2UgcGFnZTsKKyAgICBRV2ViRnJhbWUqIG1haW5GcmFt
ZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgbWFpbkZyYW1lLT5zZXRIdG1sKCI8aHRtbD48Ym9k
eT48L2JvZHk+PC9odG1sPiIpOworICAgIFFDT01QQVJFKG1haW5GcmFtZS0+ZXZhbHVhdGVKYXZh
U2NyaXB0KCJuYXZpZ2F0b3IudXNlckFnZW50IikudG9TdHJpbmcoKSwgQ3VzdG9tVXNlckFnZW50
V2ViUGFnZTo6ZmlsdGVyZWRVc2VyQWdlbnQpOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6Y3Jh
c2hUZXN0c19MYXp5SW5pdGlhbGl6YXRpb25PZk1haW5GcmFtZSgpCit7CisgICAgeworICAgICAg
ICBRV2ViUGFnZSB3ZWJQYWdlOworICAgIH0KKyAgICB7CisgICAgICAgIFFXZWJQYWdlIHdlYlBh
Z2U7CisgICAgICAgIHdlYlBhZ2Uuc2VsZWN0ZWRUZXh0KCk7CisgICAgfQorICAgIHsKKyAgICAg
ICAgUVdlYlBhZ2Ugd2ViUGFnZTsKKyAgICAgICAgd2ViUGFnZS5zZWxlY3RlZEh0bWwoKTsKKyAg
ICB9CisgICAgeworICAgICAgICBRV2ViUGFnZSB3ZWJQYWdlOworICAgICAgICB3ZWJQYWdlLnRy
aWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkJhY2ssIHRydWUpOworICAgIH0KKyAgICB7CisgICAgICAg
IFFXZWJQYWdlIHdlYlBhZ2U7CisgICAgICAgIFFQb2ludCBwb3MoMTAsMTApOworICAgICAgICB3
ZWJQYWdlLnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyhwb3MpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgdGFrZVNjcmVlbnNob3QoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgUVdlYkZy
YW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKKyAgICBwYWdlLT5zZXRWaWV3cG9y
dFNpemUobWFpbkZyYW1lLT5jb250ZW50c1NpemUoKSk7CisgICAgUUltYWdlIGltYWdlKHBhZ2Ut
PnZpZXdwb3J0U2l6ZSgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFQYWludGVyIHBh
aW50ZXIoJmltYWdlKTsKKyAgICBtYWluRnJhbWUtPnJlbmRlcigmcGFpbnRlcik7CisgICAgcGFp
bnRlci5lbmQoKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OnNjcmVlbnNob3RfZGF0YSgpCit7
CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRU3RyaW5nPigiaHRtbCIpOworICAgIFFUZXN0OjpuZXdS
b3coIldpdGhvdXRQbHVnaW4iKSA8PCAiPGh0bWw+PGJvZHkgaWQ9J2InPnRleHQ8L2JvZHk+PC9o
dG1sPiI7CisgICAgUVRlc3Q6Om5ld1JvdygiV2luZG93ZWRQbHVnaW4iKSA8PCBRU3RyaW5nKCI8
aHRtbD48Ym9keSBpZD0nYic+dGV4dDxlbWJlZCBzcmM9J3Jlc291cmNlcy90ZXN0LnN3Zic+PC9l
bWJlZD48L2JvZHk+PC9odG1sPiIpOworICAgIFFUZXN0OjpuZXdSb3coIldpbmRvd2xlc3NQbHVn
aW4iKSA8PCBRU3RyaW5nKCI8aHRtbD48Ym9keSBpZD0nYic+dGV4dDxlbWJlZCBzcmM9J3Jlc291
cmNlcy90ZXN0LnN3Zicgd21vZGU9J3RyYW5zcGFyZW50Jz48L2VtYmVkPjwvYm9keT48L2h0bWw+
Iik7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpzY3JlZW5zaG90KCkKK3sKKyAgICBpZiAoIVFE
aXIoVEVTVFNfU09VUkNFX0RJUikuZXhpc3RzKCkpCisgICAgICAgIFdfUVNLSVAoUVN0cmluZygi
VGhpcyB0ZXN0IHJlcXVpcmVzIGFjY2VzcyB0byByZXNvdXJjZXMgZm91bmQgaW4gJyUxJyIpLmFy
ZyhURVNUU19TT1VSQ0VfRElSKS50b0xhdGluMSgpLmNvbnN0RGF0YSgpLCBTa2lwQWxsKTsKKwor
ICAgIFFEaXI6OnNldEN1cnJlbnQoVEVTVFNfU09VUkNFX0RJUik7CisKKyAgICBRRkVUQ0goUVN0
cmluZywgaHRtbCk7CisgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgcGFn
ZS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UGx1Z2luc0VuYWJsZWQs
IHRydWUpOworICAgIFFXZWJGcmFtZSogbWFpbkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgbWFpbkZyYW1lLT5zZXRIdG1sKGh0bWwsIFFVcmw6OmZyb21Mb2NhbEZpbGUoVEVTVFNfU09V
UkNFX0RJUikpOworICAgIDo6d2FpdEZvclNpZ25hbChtYWluRnJhbWUsIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpLCAyMDAwKTsKKworICAgIC8vIHRha2Ugc2NyZWVuc2hvdCB3aXRob3V0IGEg
dmlldworICAgIHRha2VTY3JlZW5zaG90KHBhZ2UpOworCisgICAgUVdlYlZpZXcqIHZpZXcgPSBu
ZXcgUVdlYlZpZXc7CisgICAgdmlldy0+c2V0UGFnZShwYWdlKTsKKworICAgIC8vIHRha2Ugc2Ny
ZWVuc2hvdCB3aGVuIGF0dGFjaGVkIHRvIGEgdmlldworICAgIHRha2VTY3JlZW5zaG90KHBhZ2Up
OworCisgICAgZGVsZXRlIHBhZ2U7CisgICAgZGVsZXRlIHZpZXc7CisKKyAgICBRRGlyOjpzZXRD
dXJyZW50KFFBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25EaXJQYXRoKCkpOworfQorCisjaWYgZGVm
aW5lZChFTkFCTEVfV0VCR0wpICYmIEVOQUJMRV9XRUJHTAorLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MTM4CitzdGF0aWMgdm9pZCB3ZWJHTFNjcmVlbnNob3RX
aXRob3V0Vmlldyhib29sIGFjY2VsZXJhdGVkKQoreworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAg
cGFnZS5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpXZWJHTEVuYWJsZWQs
IHRydWUpOworICAgIHBhZ2Uuc2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQsIGFjY2VsZXJhdGVkKTsKKyAgICBRV2ViRnJh
bWUqIG1haW5GcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisgICAgbWFpbkZyYW1lLT5zZXRIdG1s
KCI8aHRtbD48Ym9keT4iCisgICAgICAgICAgICAgICAgICAgICAgICI8Y2FudmFzIGlkPSd3ZWJn
bCcgd2lkdGg9JzMwMCcgaGVpZ2h0PSczMDAnPjwvY2FudmFzPiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIjxzY3JpcHQ+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dlYmdsJykuZ2V0Q29udGV4
dCgnZXhwZXJpbWVudGFsLXdlYmdsJyk8L3NjcmlwdD4iCisgICAgICAgICAgICAgICAgICAgICAg
ICI8L2JvZHk+PC9odG1sPiIpOworCisgICAgdGFrZVNjcmVlbnNob3QoJnBhZ2UpOworfQorCit2
b2lkIHRzdF9RV2ViUGFnZTo6YWNjZWxlcmF0ZWRXZWJHTFNjcmVlbnNob3RXaXRob3V0Vmlldygp
Cit7CisgICAgd2ViR0xTY3JlZW5zaG90V2l0aG91dFZpZXcodHJ1ZSk7Cit9CisKK3ZvaWQgdHN0
X1FXZWJQYWdlOjp1bmFjY2VsZXJhdGVkV2ViR0xTY3JlZW5zaG90V2l0aG91dFZpZXcoKQorewor
ICAgIHdlYkdMU2NyZWVuc2hvdFdpdGhvdXRWaWV3KGZhbHNlKTsKK30KKyNlbmRpZgorCit2b2lk
IHRzdF9RV2ViUGFnZTo6b3JpZ2luYXRpbmdPYmplY3RJbk5ldHdvcmtSZXF1ZXN0cygpCit7Cisg
ICAgVGVzdE5ldHdvcmtNYW5hZ2VyKiBuZXR3b3JrTWFuYWdlciA9IG5ldyBUZXN0TmV0d29ya01h
bmFnZXIobV9wYWdlKTsKKyAgICBtX3BhZ2UtPnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKG5ldHdv
cmtNYW5hZ2VyKTsKKyAgICBuZXR3b3JrTWFuYWdlci0+cmVxdWVzdHMuY2xlYXIoKTsKKworICAg
IG1fdmlldy0+c2V0SHRtbChRU3RyaW5nKCI8ZnJhbWVzZXQgY29scz1cIjI1JSw3NSVcIj48ZnJh
bWUgc3JjPVwiZGF0YTp0ZXh0L2h0bWwsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8
aGVhZD48bWV0YSBodHRwLWVxdWl2PSdyZWZyZXNoJyBjb250ZW50PScxJz48L2hlYWQ+Zm9vIFwi
PiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGZyYW1lIHNyYz1cImRhdGE6dGV4dC9o
dG1sLGJhclwiPjwvZnJhbWVzZXQ+IiksIFFVcmwoKSk7CisgICAgUVZFUklGWSg6OndhaXRGb3JT
aWduYWwobV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgUUNPTVBB
UkUobmV0d29ya01hbmFnZXItPnJlcXVlc3RzLmNvdW50KCksIDIpOworCisgICAgUUxpc3Q8UVdl
YkZyYW1lKj4gY2hpbGRGcmFtZXMgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5jaGlsZEZyYW1lcygp
OworICAgIFFFWFBFQ1RfRkFJTCgiIiwgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg2NjAiLCBDb250aW51ZSk7CisgICAgUUNPTVBBUkUoY2hpbGRGcmFtZXMuY291
bnQoKSwgMik7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkKKyAgICAgICAgUVZF
UklGWShxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4obmV0d29ya01hbmFnZXItPnJlcXVlc3RzLmF0
KGkpLm9yaWdpbmF0aW5nT2JqZWN0KCkpID09IGNoaWxkRnJhbWVzLmF0KGkpKTsKK30KKwordm9p
ZCB0c3RfUVdlYlBhZ2U6Om5ldHdvcmtSZXBseVBhcmVudERpZG50Q2hhbmdlKCkKK3sKKyAgICBU
ZXN0TmV0d29ya01hbmFnZXIqIG5ldHdvcmtNYW5hZ2VyID0gbmV3IFRlc3ROZXR3b3JrTWFuYWdl
cihtX3BhZ2UpOworICAgIG1fcGFnZS0+c2V0TmV0d29ya0FjY2Vzc01hbmFnZXIobmV0d29ya01h
bmFnZXIpOworICAgIG5ldHdvcmtNYW5hZ2VyLT5yZXF1ZXN0cy5jbGVhcigpOworCisgICAgLy8g
VHJpZ2dlciBhIGxvYWQgYW5kIGNoZWNrIHRoYXQgcGVuZGluZyBRTmV0d29ya1JlcGxpZXMgaGF2
ZW4ndCBiZWVuIHJlcGFyZW50ZWQgYmVmb3JlIHJldHVybmluZyB0byB0aGUgZXZlbnQgbG9vcC4K
KyAgICBtX3ZpZXctPmxvYWQoUVVybCgicXJjOi8vL3Jlc291cmNlcy9jb250ZW50Lmh0bWwiKSk7
CisKKyAgICBRVkVSSUZZKG5ldHdvcmtNYW5hZ2VyLT5yZXF1ZXN0cy5jb3VudCgpID4gMCk7Cisg
ICAgUVZFUklGWShuZXR3b3JrTWFuYWdlci0+ZmluZENoaWxkcmVuPFFOZXR3b3JrUmVwbHkqPigp
LnNpemUoKSA+IDApOworfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6ZGVzdHJveVFOQU1CZWZvcmVB
Ym9ydERvZXNudENyYXNoKCkKK3sKKyAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG5ldHdvcmtN
YW5hZ2VyID0gbmV3IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKKyAgICBtX3BhZ2UtPnNldE5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKG5ldHdvcmtNYW5hZ2VyKTsKKworICAgIG1fdmlldy0+bG9hZChRVXJs
KCJxcmM6Ly8vcmVzb3VyY2VzL2NvbnRlbnQuaHRtbCIpKTsKKyAgICBkZWxldGUgbmV0d29ya01h
bmFnZXI7CisgICAgLy8gVGhpcyBzaW11bGF0ZXMgd2hhdCBQaW5nTG9hZGVyIGRvZXMgd2l0aCBp
dHMgUU5ldHdvcmtSZXBseSB3aGVuIGl0IHRpbWVzIG91dC4KKyAgICAvLyBQaW5nTG9hZGVyIGlz
bid0IGF0dGFjaGVkIHRvIGEgUVdlYlBhZ2UgYW5kIGNhbiBiZSBrZXB0IGFsaXZlCisgICAgLy8g
Zm9yIDYwMDAwIHNlY29uZHMgKH4xNi43IGhvdXJzKSB0byB0aGVuIGNhbmNlbCBpdHMgUmVzb3Vy
Y2VIYW5kbGUuCisgICAgbV92aWV3LT5zdG9wKCk7Cit9CisKKy8qKgorICogVGVzdCBmaXh1cHMg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDkxNAorICoKKyAq
IEZyb20gSlMgd2UgdGVzdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMuCisgKgorICogICBPSyAg
ICAgKyBRU3RyaW5nKCkgPT4gU1VDQ0VTUywgZW1wdHkgc3RyaW5nIChidXQgbm90IG51bGwpCisg
KiAgIE9LICAgICArICJ0ZXh0IiAgICA9PiBTVUNDRVNTLCAidGV4dCIKKyAqICAgQ0FOQ0VMICsg
UVN0cmluZygpID0+IENBTkNFTCwgbnVsbCBzdHJpbmcKKyAqICAgQ0FOQ0VMICsgInRleHQiICAg
ID0+IENBTkNFTCwgbnVsbCBzdHJpbmcKKyAqLworY2xhc3MgSlNQcm9tcHRQYWdlIDogcHVibGlj
IFFXZWJQYWdlIHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIEpTUHJvbXB0UGFnZSgpCisg
ICAge30KKworICAgIGJvb2wgamF2YVNjcmlwdFByb21wdChRV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBRU3RyaW5nJiBtc2csIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgUVN0cmluZyogcmVz
dWx0KQorICAgIHsKKyAgICAgICAgaWYgKG1zZyA9PSBRTGF0aW4xU3RyaW5nKCJ0ZXN0MSIpKSB7
CisgICAgICAgICAgICAqcmVzdWx0ID0gUVN0cmluZygpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0gZWxzZSBpZiAobXNnID09IFFMYXRpbjFTdHJpbmcoInRlc3QyIikpIHsK
KyAgICAgICAgICAgICpyZXN1bHQgPSBRTGF0aW4xU3RyaW5nKCJ0ZXh0Iik7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChtc2cgPT0gUUxhdGluMVN0cmluZygi
dGVzdDMiKSkgeworICAgICAgICAgICAgKnJlc3VsdCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChtc2cgPT0gUUxhdGluMVN0cmluZygi
dGVzdDQiKSkgeworICAgICAgICAgICAgKnJlc3VsdCA9IFFMYXRpbjFTdHJpbmcoInRleHQiKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHFGYXRhbCgi
VW5rbm93biBtc2cuIik7CisgICAgICAgIHJldHVybiBRV2ViUGFnZTo6amF2YVNjcmlwdFByb21w
dChmcmFtZSwgbXNnLCBkZWZhdWx0VmFsdWUsIHJlc3VsdCk7CisgICAgfQorfTsKKwordm9pZCB0
c3RfUVdlYlBhZ2U6OnRlc3RKU1Byb21wdCgpCit7CisgICAgSlNQcm9tcHRQYWdlIHBhZ2U7Cisg
ICAgYm9vbCByZXM7CisKKyAgICAvLyBPSyArIFFTdHJpbmcoKQorICAgIHJlcyA9IHBhZ2UubWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgKKyAgICAgICAgICAgICJ2YXIgcmV0dmFsID0g
cHJvbXB0KCd0ZXN0MScpOyIKKyAgICAgICAgICAgICJyZXR2YWw9PScnICYmIHJldHZhbC5sZW5n
dGggPT0gMDsiKS50b0Jvb2woKTsKKyAgICBRVkVSSUZZKHJlcyk7CisKKyAgICAvLyBPSyArICJ0
ZXh0IgorICAgIHJlcyA9IHBhZ2UubWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgKKyAg
ICAgICAgICAgICJ2YXIgcmV0dmFsID0gcHJvbXB0KCd0ZXN0MicpOyIKKyAgICAgICAgICAgICJy
ZXR2YWw9PSd0ZXh0JyAmJiByZXR2YWwubGVuZ3RoID09IDQ7IikudG9Cb29sKCk7CisgICAgUVZF
UklGWShyZXMpOworCisgICAgLy8gQ2FuY2VsICsgUVN0cmluZygpCisgICAgcmVzID0gcGFnZS5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KAorICAgICAgICAgICAgInZhciByZXR2YWwg
PSBwcm9tcHQoJ3Rlc3QzJyk7IgorICAgICAgICAgICAgInJldHZhbD09PW51bGw7IikudG9Cb29s
KCk7CisgICAgUVZFUklGWShyZXMpOworCisgICAgLy8gQ2FuY2VsICsgInRleHQiCisgICAgcmVz
ID0gcGFnZS5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KAorICAgICAgICAgICAgInZh
ciByZXR2YWwgPSBwcm9tcHQoJ3Rlc3Q0Jyk7IgorICAgICAgICAgICAgInJldHZhbD09PW51bGw7
IikudG9Cb29sKCk7CisgICAgUVZFUklGWShyZXMpOworfQorCitjbGFzcyBUZXN0TW9kYWxQYWdl
IDogcHVibGljIFFXZWJQYWdlCit7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBUZXN0TW9k
YWxQYWdlKFFPYmplY3QqIHBhcmVudCA9IDApIDogUVdlYlBhZ2UocGFyZW50KSB7CisgICAgfQor
ICAgIHZpcnR1YWwgUVdlYlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJXaW5kb3dUeXBlKSB7CisgICAg
ICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFRlc3RNb2RhbFBhZ2UoKTsKKyAgICAgICAgY29ubmVj
dChwYWdlLCBTSUdOQUwod2luZG93Q2xvc2VSZXF1ZXN0ZWQoKSksIHBhZ2UsIFNMT1QoZGVsZXRl
TGF0ZXIoKSkpOworICAgICAgICByZXR1cm4gcGFnZTsKKyAgICB9Cit9OworCit2b2lkIHRzdF9R
V2ViUGFnZTo6c2hvd01vZGFsRGlhbG9nKCkKK3sKKyAgICBUZXN0TW9kYWxQYWdlIHBhZ2U7Cisg
ICAgcGFnZS5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0
Q2FuT3BlbldpbmRvd3MsIHRydWUpOworICAgIHBhZ2UubWFpbkZyYW1lKCktPnNldEh0bWwoUVN0
cmluZygiPGh0bWw+PC9odG1sPiIpKTsKKyAgICBRU3RyaW5nIHJlcyA9IHBhZ2UubWFpbkZyYW1l
KCktPmV2YWx1YXRlSmF2YVNjcmlwdCgid2luZG93LnNob3dNb2RhbERpYWxvZygnamF2YXNjcmlw
dDp3aW5kb3cucmV0dXJuVmFsdWU9ZGlhbG9nQXJndW1lbnRzOyB3aW5kb3cuY2xvc2UoKTsnLCAn
VGhpcyBpcyBhIHRlc3QnKTsiKS50b1N0cmluZygpOworICAgIFFDT01QQVJFKHJlcywgUVN0cmlu
ZygiVGhpcyBpcyBhIHRlc3QiKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjp0ZXN0U3RvcFNj
aGVkdWxlZFBhZ2VSZWZyZXNoKCkKK3sgICAgCisgICAgLy8gV2l0aG91dCBRV2ViUGFnZTo6U3Rv
cFNjaGVkdWxlZFBhZ2VSZWZyZXNoCisgICAgUVdlYlBhZ2UgcGFnZTE7CisgICAgcGFnZTEuc2V0
TmV0d29ya0FjY2Vzc01hbmFnZXIobmV3IFRlc3ROZXR3b3JrTWFuYWdlcigmcGFnZTEpKTsKKyAg
ICBwYWdlMS5tYWluRnJhbWUoKS0+c2V0SHRtbCgiPGh0bWw+PGhlYWQ+IgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiPG1ldGEgaHR0cC1lcXVpdj1cInJlZnJlc2hcImNvbnRlbnQ9
XCIwO1VSTD1xcmM6Ly8vcmVzb3VyY2VzL2luZGV4Lmh0bWxcIj4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICI8L2hlYWQ+PGJvZHk+PGgxPlBhZ2UgcmVkaXJlY3RzIGltbWVkaWF0
ZWx5Li4uPC9oMT4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8L2JvZHk+PC9o
dG1sPiIpOworICAgIFFWRVJJRlkoOjp3YWl0Rm9yU2lnbmFsKCZwYWdlMSwgU0lHTkFMKGxvYWRG
aW5pc2hlZChib29sKSkpKTsKKyAgICBRVGVzdDo6cVdhaXQoNTAwKTsKKyAgICBRQ09NUEFSRShw
YWdlMS5tYWluRnJhbWUoKS0+dXJsKCksIFFVcmwoUUxhdGluMVN0cmluZygicXJjOi8vL3Jlc291
cmNlcy9pbmRleC5odG1sIikpKTsKKyAgICAKKyAgICAvLyBXaXRoIFFXZWJQYWdlOjpTdG9wU2No
ZWR1bGVkUGFnZVJlZnJlc2gKKyAgICBRV2ViUGFnZSBwYWdlMjsKKyAgICBwYWdlMi5zZXROZXR3
b3JrQWNjZXNzTWFuYWdlcihuZXcgVGVzdE5ldHdvcmtNYW5hZ2VyKCZwYWdlMikpOworICAgIHBh
Z2UyLm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRtbD48aGVhZD4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjxtZXRhIGh0dHAtZXF1aXY9XCJyZWZyZXNoXCJjb250ZW50PVwiMTtV
Ukw9cXJjOi8vL3Jlc291cmNlcy9pbmRleC5odG1sXCI+IgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI8L2hlYWQ+PGJvZHk+PGgxPlBhZ2UgcmVkaXJlY3QgdGVzdCB3aXRoIDEgc2Vj
IHRpbWVvdXQuLi48L2gxPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC9ib2R5
PjwvaHRtbD4iKTsKKyAgICBwYWdlMi50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTdG9wU2NoZWR1
bGVkUGFnZVJlZnJlc2gpOworICAgIFFUZXN0OjpxV2FpdCgxNTAwKTsKKyAgICBRRVhQRUNUX0ZB
SUwoIiIsICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NjczIiwg
Q29udGludWUpOworICAgIFFDT01QQVJFKHBhZ2UyLm1haW5GcmFtZSgpLT51cmwoKS50b1N0cmlu
ZygpLCBRTGF0aW4xU3RyaW5nKCJhYm91dDpibGFuayIpKTsKK30KKwordm9pZCB0c3RfUVdlYlBh
Z2U6OmZpbmRUZXh0KCkKK3sKKyAgICBtX3ZpZXctPnNldEh0bWwoUVN0cmluZygiPGh0bWw+PGhl
YWQ+PC9oZWFkPjxib2R5PjxkaXY+Zm9vIGJhcjwvZGl2PjwvYm9keT48L2h0bWw+IikpOworICAg
IG1fcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6U2VsZWN0QWxsKTsKKyAgICBRVkVSSUZZ
KCFtX3BhZ2UtPnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSk7CisgICAgUVZFUklGWSghbV9wYWdl
LT5zZWxlY3RlZEh0bWwoKS5pc0VtcHR5KCkpOworICAgIG1fcGFnZS0+ZmluZFRleHQoIiIpOwor
ICAgIFFWRVJJRlkobV9wYWdlLT5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpOworICAgIFFWRVJJ
RlkobV9wYWdlLT5zZWxlY3RlZEh0bWwoKS5pc0VtcHR5KCkpOworICAgIFFTdHJpbmdMaXN0IHdv
cmRzID0gKFFTdHJpbmdMaXN0KCkgPDwgImZvbyIgPDwgImJhciIpOworICAgIGZvcmVhY2ggKFFT
dHJpbmcgc3ViU3RyaW5nLCB3b3JkcykgeworICAgICAgICBtX3BhZ2UtPmZpbmRUZXh0KHN1YlN0
cmluZywgUVdlYlBhZ2U6OkZpbmRXcmFwc0Fyb3VuZERvY3VtZW50KTsKKyAgICAgICAgUUNPTVBB
UkUobV9wYWdlLT5zZWxlY3RlZFRleHQoKSwgc3ViU3RyaW5nKTsKKyAgICAgICAgUVZFUklGWSht
X3BhZ2UtPnNlbGVjdGVkSHRtbCgpLmNvbnRhaW5zKHN1YlN0cmluZykpOworICAgICAgICBtX3Bh
Z2UtPmZpbmRUZXh0KCIiKTsKKyAgICAgICAgUVZFUklGWShtX3BhZ2UtPnNlbGVjdGVkVGV4dCgp
LmlzRW1wdHkoKSk7CisgICAgICAgIFFWRVJJRlkobV9wYWdlLT5zZWxlY3RlZEh0bWwoKS5pc0Vt
cHR5KCkpOworICAgIH0KK30KKworc3RhdGljIFFTdHJpbmcgZ2V0TWltZVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgUVN0cmluZyAmZXh0KQoreworICAgIFFNaW1lVHlwZSBtaW1lVHlwZSA9IFFNaW1l
RGF0YWJhc2UoKS5taW1lVHlwZUZvckZpbGUoUVN0cmluZ0xpdGVyYWwoImZpbGVuYW1lLiIpICsg
ZXh0LnRvTG93ZXIoKSwgUU1pbWVEYXRhYmFzZTo6TWF0Y2hFeHRlbnNpb24pOworICAgIGlmICht
aW1lVHlwZS5pc1ZhbGlkKCkgJiYgIW1pbWVUeXBlLmlzRGVmYXVsdCgpKQorICAgICAgICByZXR1
cm4gbWltZVR5cGUubmFtZSgpOworCisgICAgcmV0dXJuIFFTdHJpbmcoKTsKK30KKwordm9pZCB0
c3RfUVdlYlBhZ2U6OnN1cHBvcnRlZENvbnRlbnRUeXBlKCkKK3sKKyAgICBRU3RyaW5nTGlzdCBj
b250ZW50VHlwZXM7CisKKyAgICAvLyBBZGQgc3VwcG9ydGVkIG5vbiBpbWFnZSB0eXBlcy4uLgor
ICAgIGNvbnRlbnRUeXBlcyA8PCAidGV4dC9odG1sIiA8PCAidGV4dC94bWwiIDw8ICJ0ZXh0L3hz
bCIgPDwgInRleHQvcGxhaW4iIDw8ICJ0ZXh0LyIKKyAgICAgICAgICAgICAgICAgPDwgImFwcGxp
Y2F0aW9uL3htbCIgPDwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIgPDwgImFwcGxpY2F0aW9uL3Zu
ZC53YXAueGh0bWwreG1sIgorICAgICAgICAgICAgICAgICA8PCAiYXBwbGljYXRpb24vcnNzK3ht
bCIgPDwgImFwcGxpY2F0aW9uL2F0b20reG1sIiA8PCAiYXBwbGljYXRpb24vanNvbiI7CisKKyNp
ZiBFTkFCTEVfTUhUTUwKKyAgICBjb250ZW50VHlwZXMgPDwgImFwcGxpY2F0aW9uL3gtbWltZWFy
Y2hpdmUiOworI2VuZGlmCisKKyAgICAvLyBBZGQgc3VwcG9ydGVkIGltYWdlIHR5cGVzLi4uCisg
ICAgUV9GT1JFQUNIKGNvbnN0IFFCeXRlQXJyYXkmIGltYWdlVHlwZSwgUUltYWdlV3JpdGVyOjpz
dXBwb3J0ZWRJbWFnZUZvcm1hdHMoKSkgeworICAgICAgICBjb25zdCBRU3RyaW5nIG1pbWVUeXBl
ID0gZ2V0TWltZVR5cGVGb3JFeHRlbnNpb24oaW1hZ2VUeXBlKTsKKyAgICAgICAgaWYgKCFtaW1l
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250ZW50VHlwZXMgPDwgbWltZVR5cGU7Cisg
ICAgfQorCisgICAgLy8gR2V0IHRoZSBtaW1lIHR5cGVzIHN1cHBvcnRlZCBieSB3ZWJraXQuLi4K
KyAgICBjb25zdCBRU3RyaW5nTGlzdCBzdXBwb3J0ZWRDb250ZW50VHlwZXMgPSBtX3BhZ2UtPnN1
cHBvcnRlZENvbnRlbnRUeXBlcygpOworCisgICAgUV9GT1JFQUNIKGNvbnN0IFFTdHJpbmcmIG1p
bWVUeXBlLCBjb250ZW50VHlwZXMpCisgICAgICAgIFFWRVJJRlkyKHN1cHBvcnRlZENvbnRlbnRU
eXBlcy5jb250YWlucyhtaW1lVHlwZSksIFFTdHJpbmcoIiclMScgaXMgbm90IGEgc3VwcG9ydGVk
IGNvbnRlbnQgdHlwZSEiKS5hcmcobWltZVR5cGUpLnRvTGF0aW4xKCkpOworICAgICAgCisgICAg
UV9GT1JFQUNIKGNvbnN0IFFTdHJpbmcmIG1pbWVUeXBlLCBjb250ZW50VHlwZXMpCisgICAgICAg
IFFWRVJJRlkyKG1fcGFnZS0+c3VwcG9ydHNDb250ZW50VHlwZShtaW1lVHlwZSksIFFTdHJpbmco
IkNhbm5vdCBoYW5kbGUgY29udGVudCB0eXBlcyAnJTEnISIpLmFyZyhtaW1lVHlwZSkudG9MYXRp
bjEoKSk7Cit9CisKKwordm9pZCB0c3RfUVdlYlBhZ2U6Om5hdmlnYXRvckNvb2tpZUVuYWJsZWQo
KQoreworICAgIG1fcGFnZS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+c2V0Q29va2llSmFyKDAp
OworICAgIFFWRVJJRlkoIW1fcGFnZS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFy
KCkpOworICAgIFFWRVJJRlkoIW1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgibmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQiKS50b0Jvb2woKSk7CisKKyAgICBtX3BhZ2UtPm5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKCktPnNldENvb2tpZUphcihuZXcgUU5ldHdvcmtDb29raWVKYXIo
KSk7CisgICAgUVZFUklGWShtX3BhZ2UtPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUph
cigpKTsKKyAgICBRVkVSSUZZKG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgibmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQiKS50b0Jvb2woKSk7Cit9CisKK3ZvaWQgdHN0X1FX
ZWJQYWdlOjp0aGlyZFBhcnR5Q29va2llUG9saWN5KCkKK3sKKyAgICBRV2ViU2V0dGluZ3M6Omds
b2JhbFNldHRpbmdzKCktPnNldFRoaXJkUGFydHlDb29raWVQb2xpY3koUVdlYlNldHRpbmdzOjpB
bHdheXNCbG9ja1RoaXJkUGFydHlDb29raWVzKTsKKyAgICBtX3BhZ2UtPm5ldHdvcmtBY2Nlc3NN
YW5hZ2VyKCktPnNldENvb2tpZUphcihuZXcgUU5ldHdvcmtDb29raWVKYXIoKSk7CisgICAgUVZF
UklGWShtX3BhZ2UtPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpKTsKKworICAg
IC8vIFRoZXNlIGFyZSBhbGwgZmlyc3QtcGFydHkgY29va2llcywgc28gc2hvdWxkIHBhc3MuCisg
ICAgUVZFUklGWShEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dGhpcmRQYXJ0eUNvb2tpZVBvbGlj
eUFsbG93cyhtX3BhZ2UtPmhhbmRsZSgpLAorICAgICAgICAgICAgUVVybCgiaHR0cDovL3d3dy5l
eGFtcGxlLmNvbSIpLCBRVXJsKCJodHRwOi8vZXhhbXBsZS5jb20iKSkpOworICAgIFFWRVJJRlko
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJkUGFydHlDb29raWVQb2xpY3lBbGxvd3MobV9w
YWdlLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFFVcmwoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20i
KSwgUVVybCgiaHR0cDovL2RvYy5leGFtcGxlLmNvbSIpKSk7CisgICAgUVZFUklGWShEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6dGhpcmRQYXJ0eUNvb2tpZVBvbGljeUFsbG93cyhtX3BhZ2UtPmhh
bmRsZSgpLAorICAgICAgICAgICAgUVVybCgiaHR0cDovL2FhYS53d3cuZXhhbXBsZS5jb20iKSwg
UVVybCgiaHR0cDovL2RvYy5leGFtcGxlLmNvbSIpKSk7CisgICAgUVZFUklGWShEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6dGhpcmRQYXJ0eUNvb2tpZVBvbGljeUFsbG93cyhtX3BhZ2UtPmhhbmRs
ZSgpLAorICAgICAgICAgICAgUVVybCgiaHR0cDovL2V4YW1wbGUuY29tIiksIFFVcmwoImh0dHA6
Ly93d3cuZXhhbXBsZS5jb20iKSkpOworICAgIFFWRVJJRlkoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnRoaXJkUGFydHlDb29raWVQb2xpY3lBbGxvd3MobV9wYWdlLT5oYW5kbGUoKSwKKyAgICAg
ICAgICAgIFFVcmwoImh0dHA6Ly93d3cuZXhhbXBsZS5jby51ayIpLCBRVXJsKCJodHRwOi8vZXhh
bXBsZS5jby51ayIpKSk7CisgICAgUVZFUklGWShEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dGhp
cmRQYXJ0eUNvb2tpZVBvbGljeUFsbG93cyhtX3BhZ2UtPmhhbmRsZSgpLAorICAgICAgICAgICAg
UVVybCgiaHR0cDovL3d3dy5leGFtcGxlLmNvLnVrIiksIFFVcmwoImh0dHA6Ly9kb2MuZXhhbXBs
ZS5jby51ayIpKSk7CisgICAgUVZFUklGWShEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dGhpcmRQ
YXJ0eUNvb2tpZVBvbGljeUFsbG93cyhtX3BhZ2UtPmhhbmRsZSgpLAorICAgICAgICAgICAgUVVy
bCgiaHR0cDovL2FhYS53d3cuZXhhbXBsZS5jby51ayIpLCBRVXJsKCJodHRwOi8vZG9jLmV4YW1w
bGUuY28udWsiKSkpOworICAgIFFWRVJJRlkoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJk
UGFydHlDb29raWVQb2xpY3lBbGxvd3MobV9wYWdlLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFFV
cmwoImh0dHA6Ly9leGFtcGxlLmNvLnVrIiksIFFVcmwoImh0dHA6Ly93d3cuZXhhbXBsZS5jby51
ayIpKSk7CisKKyAgICAvLyBUaGVzZSBhcmUgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMsIHNvIHNo
b3VsZCBmYWlsLgorICAgIFFWRVJJRlkoIUR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp0aGlyZFBh
cnR5Q29va2llUG9saWN5QWxsb3dzKG1fcGFnZS0+aGFuZGxlKCksCisgICAgICAgICAgICBRVXJs
KCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiksIFFVcmwoImh0dHA6Ly9zbGFzaGRvdC5vcmciKSkp
OworICAgIFFWRVJJRlkoIUR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp0aGlyZFBhcnR5Q29va2ll
UG9saWN5QWxsb3dzKG1fcGFnZS0+aGFuZGxlKCksCisgICAgICAgICAgICBRVXJsKCJodHRwOi8v
ZXhhbXBsZS5jb20iKSwgUVVybCgiaHR0cDovL2Fub3RoZXJleGFtcGxlLmNvbSIpKSk7CisgICAg
UVZFUklGWSghRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJkUGFydHlDb29raWVQb2xpY3lB
bGxvd3MobV9wYWdlLT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFFVcmwoImh0dHA6Ly9hbm90aGVy
ZXhhbXBsZS5jb20iKSwgUVVybCgiaHR0cDovL2V4YW1wbGUuY29tIikpKTsKKyAgICBRVkVSSUZZ
KCFEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6dGhpcmRQYXJ0eUNvb2tpZVBvbGljeUFsbG93cyht
X3BhZ2UtPmhhbmRsZSgpLAorICAgICAgICAgICAgUVVybCgiaHR0cDovL3d3dy5leGFtcGxlLmNv
LnVrIiksIFFVcmwoImh0dHA6Ly9zbGFzaGRvdC5jby51ayIpKSk7CisgICAgUVZFUklGWSghRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJkUGFydHlDb29raWVQb2xpY3lBbGxvd3MobV9wYWdl
LT5oYW5kbGUoKSwKKyAgICAgICAgICAgIFFVcmwoImh0dHA6Ly9leGFtcGxlLmNvLnVrIiksIFFV
cmwoImh0dHA6Ly9hbm90aGVyZXhhbXBsZS5jby51ayIpKSk7CisgICAgUVZFUklGWSghRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnRoaXJkUGFydHlDb29raWVQb2xpY3lBbGxvd3MobV9wYWdlLT5o
YW5kbGUoKSwKKyAgICAgICAgICAgIFFVcmwoImh0dHA6Ly9hbm90aGVyZXhhbXBsZS5jby51ayIp
LCBRVXJsKCJodHRwOi8vZXhhbXBsZS5jby51ayIpKSk7Cit9CisKKyNpZmRlZiBRX09TX01BQwor
dm9pZCB0c3RfUVdlYlBhZ2U6Om1hY0NvcHlVbmljb2RlVG9DbGlwYm9hcmQoKQoreworICAgIFFT
dHJpbmcgdW5pY29kZVRleHQgPSBRU3RyaW5nOjpmcm9tVXRmOCgizrHOss6zzrTOtc62zrfOuM65
zrrOu868z4AiKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKFFTdHJpbmcoIjxo
dG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgLz48L2hlYWQ+PGJvZHk+JTE8L2JvZHk+PC9odG1sPiIp
LmFyZyh1bmljb2RlVGV4dCkpOworICAgIG1fcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6
U2VsZWN0QWxsKTsKKyAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkNvcHkpOwor
CisgICAgUVN0cmluZyBjbGlwYm9hcmREYXRhID0gUVN0cmluZzo6ZnJvbVV0ZjgoUUFwcGxpY2F0
aW9uOjpjbGlwYm9hcmQoKS0+bWltZURhdGEoKS0+ZGF0YShRTGF0aW4xU3RyaW5nKCJ0ZXh0L2h0
bWwiKSkpOworCisgICAgUVZFUklGWShjbGlwYm9hcmREYXRhLmNvbnRhaW5zKFFMYXRpbjFTdHJp
bmcoIjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04XCIgLz4iKSkpOworICAgIFFWRVJJRlkoY2xpcGJvYXJkRGF0YS5jb250
YWlucyh1bmljb2RlVGV4dCkpOworfQorI2VuZGlmCisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpjaGFu
Z2VWaXNpYmlsaXR5U3RhdGUoKQoreworI2lmIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJCisg
ICAgUVZhcmlhbnQgc3RhdGVCb29sLCBzdGF0ZVN0cmluZywgY3B0OworCisgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+c2V0SHRtbCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInZhciBzdGF0ZUJvb2wgPSB1
bmRlZmluZWQsIHN0YXRlU3RyaW5nID0gdW5kZWZpbmVkLCBjcHQgPSAwOyB2YXIgdmlzaWJpbGl0
eUNhbGxCYWNrID0gZnVuY3Rpb24gKCkge3N0YXRlQm9vbCA9IGRvY3VtZW50WydoaWRkZW4nXTsg
c3RhdGVTdHJpbmcgPSBkb2N1bWVudFsndmlzaWJpbGl0eVN0YXRlJ107IGNwdCsrO307ZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHZpc2liaWxpdHlDYWxsQmFj
aywgZmFsc2UpOyIpOworCisgICAgLy8gVGhlIHZpc2liaWxpdHkgc3RhdGUgc2hvdWxkIGJlIGlu
aXRpYWxpc2VkIHRvIHZpc2libGUuCisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5U3Rh
dGUoKSwgUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9vbCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiZG9jdW1lbnRbJ2hpZGRl
biddIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
ICFzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudFsndmlzaWJpbGl0eVN0YXRlJ10iKTsK
KyAgICBRVkVSSUZZKHN0YXRlU3RyaW5nLnR5cGUoKSA9PSBRVmFyaWFudDo6U3RyaW5nICYmIHN0
YXRlU3RyaW5nLnRvU3RyaW5nKCkgPT0gUVN0cmluZygidmlzaWJsZSIpKTsKKworICAgIC8vIFRy
eSB0byBjaGFuZ2Ugd2l0aCB0aGUgc2FtZSB2YWx1ZS4KKyAgICBtX3BhZ2UtPnNldFZpc2liaWxp
dHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgUVZFUklGWSht
X3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpID09IFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVWaXNp
YmxlKTsKKyAgICAvLyBXZSBjaGVjayB0aGF0IHRoZXJlIGlzbid0IGFueSBKUyBldmVudCB0aGF0
IGhhcyBiZWVuIGZpcmVkIGFuZAorICAgIC8vIHZpc2liaWxpdHkgcHJvcGVydGllcyBhcmUgc3Rp
bGwgZXF1YWxzIHRvIHZpc2libGUuCisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJkb2N1bWVudFsnaGlkZGVuJ10iKTsKKyAgICBRVkVSSUZZ
KHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2wo
KSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImRvY3VtZW50Wyd2aXNpYmlsaXR5U3RhdGUnXSIpOworICAgIFFWRVJJRlkoc3RhdGVT
dHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmco
KSA9PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFW
YXJpYW50OjpEb3VibGUgJiYgIWNwdC50b0RvdWJsZSgpKTsKKworICAgIC8vIFRyeSB0byBjaGFu
Z2UgdG8gd2l0aCBkaWZmZXJlbnQgdmFsdWVzIHRoZW4gY2hlY2sgaWYgYSBKUyBldmVudCBoYXMg
YmVlbiBmaXJlZAorICAgIC8vIGFuZCB2aXNpYmlsaXR5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHVw
ZGF0ZWQgY29ycmVjdGx5LgorICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdl
OjpWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOworICAgIFFDT01QQVJFKG1fcGFnZS0+dmlzaWJp
bGl0eVN0YXRlKCksIFFXZWJQYWdlOjpWaXNpYmlsaXR5U3RhdGVQcmVyZW5kZXIpOworICAgIHN0
YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVC
b29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYm
IHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0
ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmlu
ZygpID09IFFTdHJpbmcoInByZXJlbmRlciIpKTsKKyAgICBjcHQgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImNwdCIpOworICAgIFFWRVJJRlkoY3B0LnR5cGUoKSA9
PSBRVmFyaWFudDo6RG91YmxlICYmIGNwdC50b0RvdWJsZSgpID09IDEpOworCisgICAgbV9wYWdl
LT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVVubG9hZGVkKTsK
KyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJp
bGl0eVN0YXRlVW5sb2FkZWQpOworICAgIHN0YXRlQm9vbCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkt
PmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7CisgICAgUVZFUklGWShzdGF0ZUJvb2wu
dHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmIHN0YXRlQm9vbC50b0Jvb2woKSk7CisgICAgc3Rh
dGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoInN0YXRl
U3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0gUVZhcmlhbnQ6OlN0
cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInVubG9hZGVkIikpOwor
ICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7
CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJpYW50OjpEb3VibGUgJiYgY3B0LnRvRG91
YmxlKCkgPT0gMik7CisKKyAgICBtX3BhZ2UtPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6
VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgUUNPTVBBUkUobV9wYWdlLT52aXNpYmlsaXR5
U3RhdGUoKSwgUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIHN0YXRlQm9v
bCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgic3RhdGVCb29sIik7
CisgICAgUVZFUklGWShzdGF0ZUJvb2wudHlwZSgpID09IFFWYXJpYW50OjpCb29sICYmICFzdGF0
ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOworICAgIFFWRVJJRlkoc3RhdGVTdHJp
bmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3RhdGVTdHJpbmcudG9TdHJpbmcoKSA9
PSBRU3RyaW5nKCJ2aXNpYmxlIikpOworICAgIGNwdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
YWx1YXRlSmF2YVNjcmlwdCgiY3B0Iik7CisgICAgUVZFUklGWShjcHQudHlwZSgpID09IFFWYXJp
YW50OjpEb3VibGUgJiYgY3B0LnRvRG91YmxlKCkgPT0gMyk7CisKKyAgICBtX3BhZ2UtPnNldFZp
c2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRlSGlkZGVuKTsKKyAgICBRQ09N
UEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2ViUGFnZTo6VmlzaWJpbGl0eVN0YXRl
SGlkZGVuKTsKKyAgICBzdGF0ZUJvb2wgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUph
dmFTY3JpcHQoInN0YXRlQm9vbCIpOworICAgIFFWRVJJRlkoc3RhdGVCb29sLnR5cGUoKSA9PSBR
VmFyaWFudDo6Qm9vbCAmJiBzdGF0ZUJvb2wudG9Cb29sKCkpOworICAgIHN0YXRlU3RyaW5nID0g
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZVN0cmluZyIpOwor
ICAgIFFWRVJJRlkoc3RhdGVTdHJpbmcudHlwZSgpID09IFFWYXJpYW50OjpTdHJpbmcgJiYgc3Rh
dGVTdHJpbmcudG9TdHJpbmcoKSA9PSBRU3RyaW5nKCJoaWRkZW4iKSk7CisgICAgY3B0ID0gbV9w
YWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZ
KGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAmJiBjcHQudG9Eb3VibGUoKSA9PSA0KTsK
KworICAgIG1fcGFnZS0+c2V0VmlzaWJpbGl0eVN0YXRlKFFXZWJQYWdlOjpWaXNpYmlsaXR5U3Rh
dGVWaXNpYmxlKTsKKyAgICBRQ09NUEFSRShtX3BhZ2UtPnZpc2liaWxpdHlTdGF0ZSgpLCBRV2Vi
UGFnZTo6VmlzaWJpbGl0eVN0YXRlVmlzaWJsZSk7CisgICAgc3RhdGVCb29sID0gbV9wYWdlLT5t
YWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJzdGF0ZUJvb2wiKTsKKyAgICBRVkVSSUZZ
KHN0YXRlQm9vbC50eXBlKCkgPT0gUVZhcmlhbnQ6OkJvb2wgJiYgIXN0YXRlQm9vbC50b0Jvb2wo
KSk7CisgICAgc3RhdGVTdHJpbmcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoInN0YXRlU3RyaW5nIik7CisgICAgUVZFUklGWShzdGF0ZVN0cmluZy50eXBlKCkgPT0g
UVZhcmlhbnQ6OlN0cmluZyAmJiBzdGF0ZVN0cmluZy50b1N0cmluZygpID09IFFTdHJpbmcoInZp
c2libGUiKSk7CisgICAgY3B0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJjcHQiKTsKKyAgICBRVkVSSUZZKGNwdC50eXBlKCkgPT0gUVZhcmlhbnQ6OkRvdWJsZSAm
JiBjcHQudG9Eb3VibGUoKSA9PSA1KTsKKyNlbmRpZgorfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6
Y29udGV4dE1lbnVDb3B5KCkKK3sKKyAgICBRV2ViVmlldyB2aWV3OworCisgICAgdmlldy5zZXRI
dG1sKCI8YSBocmVmPVwiaHR0cDovL3d3dy5nb29nbGUuY29tXCI+WW91IGNhbnQgbWlzcyB0aGlz
PC9hPiIpOworCisgICAgdmlldy5wYWdlKCktPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVj
dEFsbCk7CisgICAgUVZFUklGWSghdmlldy5wYWdlKCktPnNlbGVjdGVkVGV4dCgpLmlzRW1wdHko
KSk7CisKKyAgICBRV2ViRWxlbWVudCBsaW5rID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5m
aW5kRmlyc3RFbGVtZW50KCJhIik7CisgICAgUVBvaW50IHBvcyhsaW5rLmdlb21ldHJ5KCkuY2Vu
dGVyKCkpOworICAgIFFDb250ZXh0TWVudUV2ZW50IGV2ZW50KFFDb250ZXh0TWVudUV2ZW50OjpN
b3VzZSwgcG9zKTsKKyAgICB2aWV3LnBhZ2UoKS0+c3dhbGxvd0NvbnRleHRNZW51RXZlbnQoJmV2
ZW50KTsKKyAgICB2aWV3LnBhZ2UoKS0+dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKHBv
cyk7CisKKyAgICBRTGlzdDxRTWVudSo+IGNvbnRleHRNZW51cyA9IHZpZXcuZmluZENoaWxkcmVu
PFFNZW51Kj4oKTsKKyAgICBRVkVSSUZZKCFjb250ZXh0TWVudXMuaXNFbXB0eSgpKTsKKyAgICBR
TWVudSogY29udGV4dE1lbnUgPSBjb250ZXh0TWVudXMuZmlyc3QoKTsKKyAgICBRVkVSSUZZKGNv
bnRleHRNZW51KTsKKyAgICAKKyAgICBRTGlzdDxRQWN0aW9uICo+IGxpc3QgPSBjb250ZXh0TWVu
dS0+YWN0aW9ucygpOworICAgIGludCBpbmRleCA9IGxpc3QuaW5kZXhPZih2aWV3LnBhZ2UoKS0+
YWN0aW9uKFFXZWJQYWdlOjpDb3B5KSk7CisgICAgUVZFUklGWShpbmRleCAhPSAtMSk7Cit9CisK
Ky8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjEzOQordm9pZCB0
c3RfUVdlYlBhZ2U6OmNvbnRleHRNZW51UG9wdWxhdGVkT25jZSgpCit7CisgICAgUVdlYlZpZXcg
dmlldzsKKworICAgIHZpZXcuc2V0SHRtbCgiPGlucHV0IHR5cGU9XCJ0ZXh0XCI+Iik7CisKKyAg
ICBRV2ViRWxlbWVudCBsaW5rID0gdmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5maW5kRmlyc3RF
bGVtZW50KCJpbnB1dCIpOworICAgIFFQb2ludCBwb3MobGluay5nZW9tZXRyeSgpLmNlbnRlcigp
KTsKKyAgICBRQ29udGV4dE1lbnVFdmVudCBldmVudChRQ29udGV4dE1lbnVFdmVudDo6TW91c2Us
IHBvcyk7CisgICAgdmlldy5wYWdlKCktPnN3YWxsb3dDb250ZXh0TWVudUV2ZW50KCZldmVudCk7
CisgICAgdmlldy5wYWdlKCktPnVwZGF0ZVBvc2l0aW9uRGVwZW5kZW50QWN0aW9ucyhwb3MpOwor
CisgICAgUUxpc3Q8UU1lbnUqPiBjb250ZXh0TWVudXMgPSB2aWV3LmZpbmRDaGlsZHJlbjxRTWVu
dSo+KCk7CisgICAgUVZFUklGWSghY29udGV4dE1lbnVzLmlzRW1wdHkoKSk7CisgICAgUU1lbnUq
IGNvbnRleHRNZW51ID0gY29udGV4dE1lbnVzLmZpcnN0KCk7CisgICAgUVZFUklGWShjb250ZXh0
TWVudSk7CisKKyAgICBRTGlzdDxRQWN0aW9uICo+IGxpc3QgPSBjb250ZXh0TWVudS0+YWN0aW9u
cygpOworICAgIFFTdHJpbmdMaXN0IGVudHJpZXM7CisgICAgd2hpbGUgKCFsaXN0LmlzRW1wdHko
KSkgeworICAgICAgICBRU3RyaW5nIGVudHJ5ID0gbGlzdC50YWtlRmlyc3QoKS0+dGV4dCgpOwor
ICAgICAgICBRVkVSSUZZKCFlbnRyaWVzLmNvbnRhaW5zKGVudHJ5KSk7CisgICAgICAgIGVudHJp
ZXMgPDwgZW50cnk7CisgICAgfQorfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6ZGVsZXRlUVdlYlZp
ZXdUd2ljZSgpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAg
UU1haW5XaW5kb3cgbWFpbldpbmRvdzsKKyAgICAgICAgUVdlYlZpZXcqIHdlYlZpZXcgPSBuZXcg
UVdlYlZpZXcoJm1haW5XaW5kb3cpOworICAgICAgICBtYWluV2luZG93LnNldENlbnRyYWxXaWRn
ZXQod2ViVmlldyk7CisgICAgICAgIHdlYlZpZXctPmxvYWQoUVVybCgicXJjOi8vL3Jlc291cmNl
cy9mcmFtZV9hLmh0bWwiKSk7CisgICAgICAgIG1haW5XaW5kb3cuc2hvdygpOworICAgICAgICBR
VkVSSUZZKDo6d2FpdEZvclNpZ25hbCh3ZWJWaWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wp
KSkpOworICAgIH0KK30KKworY2xhc3MgUmVwYWludFJlcXVlc3RlZFJlbmRlcmVyIDogcHVibGlj
IFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUmVwYWludFJlcXVlc3RlZFJl
bmRlcmVyKFFXZWJQYWdlKiBwYWdlLCBRUGFpbnRlciogcGFpbnRlcikKKyAgICAgICAgOiBtX3Bh
Z2UocGFnZSkKKyAgICAgICAgLCBtX3BhaW50ZXIocGFpbnRlcikKKyAgICAgICAgLCBtX3JlY3Vy
c2lvbkNvdW50KDApCisgICAgeworICAgICAgICBjb25uZWN0KG1fcGFnZSwgU0lHTkFMKHJlcGFp
bnRSZXF1ZXN0ZWQoUVJlY3QpKSwgdGhpcywgU0xPVChvblJlcGFpbnRSZXF1ZXN0ZWQoUVJlY3Qp
KSk7CisgICAgfQorCitRX1NJR05BTFM6CisgICAgdm9pZCBmaW5pc2hlZCgpOworCitwcml2YXRl
IFFfU0xPVFM6CisgICAgdm9pZCBvblJlcGFpbnRSZXF1ZXN0ZWQoY29uc3QgUVJlY3QmIHJlY3Qp
CisgICAgeworICAgICAgICBRQ09NUEFSRShtX3JlY3Vyc2lvbkNvdW50LCAwKTsKKworICAgICAg
ICBtX3JlY3Vyc2lvbkNvdW50Kys7CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnJlbmRl
cihtX3BhaW50ZXIsIHJlY3QpOworICAgICAgICBtX3JlY3Vyc2lvbkNvdW50LS07CisKKyAgICAg
ICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiZmluaXNoZWQiLCBRdDo6UXVldWVk
Q29ubmVjdGlvbik7CisgICAgfQorCitwcml2YXRlOgorICAgIFFXZWJQYWdlKiBtX3BhZ2U7Cisg
ICAgUVBhaW50ZXIqIG1fcGFpbnRlcjsKKyAgICBpbnQgbV9yZWN1cnNpb25Db3VudDsKK307CisK
K3ZvaWQgdHN0X1FXZWJQYWdlOjpyZW5kZXJPblJlcGFpbnRSZXF1ZXN0ZWRTaG91bGROb3RSZWN1
cnNlKCkKK3sKKyAgICBRU2l6ZSB2aWV3cG9ydFNpemUoNzIwLCA1NzYpOworICAgIFFXZWJQYWdl
IHBhZ2U7CisKKyAgICBRSW1hZ2UgaW1hZ2Uodmlld3BvcnRTaXplLCBRSW1hZ2U6OkZvcm1hdF9B
UkdCMzIpOworICAgIFFQYWludGVyIHBhaW50ZXIoJmltYWdlKTsKKworICAgIHBhZ2Uuc2V0UHJl
ZmVycmVkQ29udGVudHNTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgcGFnZS5zZXRWaWV3cG9ydFNp
emUodmlld3BvcnRTaXplKTsKKyAgICBSZXBhaW50UmVxdWVzdGVkUmVuZGVyZXIgcigmcGFnZSwg
JnBhaW50ZXIpOworCisgICAgcGFnZS5tYWluRnJhbWUoKS0+c2V0SHRtbCgiemFsYW4gbG92ZXMg
dHJ1bmsiLCBRVXJsKCkpOworCisgICAgUVZFUklGWSg6OndhaXRGb3JTaWduYWwoJnIsIFNJR05B
TChmaW5pc2hlZCgpKSkpOworfQorCitjbGFzcyBTcHlGb3JMb2FkU2lnbmFsc09yZGVyIDogcHVi
bGljIFFTdGF0ZU1hY2hpbmUgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgU3B5Rm9yTG9h
ZFNpZ25hbHNPcmRlcihRV2ViUGFnZSogcGFnZSwgUU9iamVjdCogcGFyZW50ID0gMCkKKyAgICAg
ICAgOiBRU3RhdGVNYWNoaW5lKHBhcmVudCkKKyAgICB7CisgICAgICAgIGNvbm5lY3QocGFnZSwg
U0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwgU0xPVChvbkxvYWRQcm9ncmVzcyhpbnQpKSk7CisK
KyAgICAgICAgUVN0YXRlKiB3YWl0aW5nRm9yTG9hZFN0YXJ0ZWQgPSBuZXcgUVN0YXRlKHRoaXMp
OworICAgICAgICBRU3RhdGUqIHdhaXRpbmdGb3JMYXN0TG9hZFByb2dyZXNzID0gbmV3IFFTdGF0
ZSh0aGlzKTsKKyAgICAgICAgUVN0YXRlKiB3YWl0aW5nRm9yTG9hZEZpbmlzaGVkID0gbmV3IFFT
dGF0ZSh0aGlzKTsKKyAgICAgICAgUUZpbmFsU3RhdGUqIGZpbmFsID0gbmV3IFFGaW5hbFN0YXRl
KHRoaXMpOworCisgICAgICAgIHdhaXRpbmdGb3JMb2FkU3RhcnRlZC0+YWRkVHJhbnNpdGlvbihw
YWdlLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHdhaXRpbmdGb3JMYXN0TG9hZFByb2dyZXNzKTsK
KyAgICAgICAgd2FpdGluZ0Zvckxhc3RMb2FkUHJvZ3Jlc3MtPmFkZFRyYW5zaXRpb24odGhpcywg
U0lHTkFMKGxhc3RMb2FkUHJvZ3Jlc3MoKSksIHdhaXRpbmdGb3JMb2FkRmluaXNoZWQpOworICAg
ICAgICB3YWl0aW5nRm9yTG9hZEZpbmlzaGVkLT5hZGRUcmFuc2l0aW9uKHBhZ2UsIFNJR05BTChs
b2FkRmluaXNoZWQoYm9vbCkpLCBmaW5hbCk7CisKKyAgICAgICAgc2V0SW5pdGlhbFN0YXRlKHdh
aXRpbmdGb3JMb2FkU3RhcnRlZCk7CisgICAgICAgIHN0YXJ0KCk7CisgICAgfQorICAgIGJvb2wg
aXNGaW5pc2hlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIWlzUnVubmluZygpOwor
ICAgIH0KK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgb25Mb2FkUHJvZ3Jlc3MoaW50IHByb2dy
ZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyZXNzID09IDEwMCkKKyAgICAgICAgICAgIGVt
aXQgbGFzdExvYWRQcm9ncmVzcygpOworICAgIH0KK1FfU0lHTkFMUzoKKyAgICB2b2lkIGxhc3RM
b2FkUHJvZ3Jlc3MoKTsKK307CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpsb2FkU2lnbmFsc09yZGVy
X2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVVybD4oInVybCIpOworICAgIFFUZXN0
OjpuZXdSb3coImlubGluZSBkYXRhIikgPDwgUVVybCgiZGF0YTp0ZXh0L2h0bWwsVGhpcyBpcyBm
aXJzdCBwYWdlIik7CisgICAgUVRlc3Q6Om5ld1Jvdygic2ltcGxlIHBhZ2UiKSA8PCBRVXJsKCJx
cmM6Ly8vcmVzb3VyY2VzL2NvbnRlbnQuaHRtbCIpOworICAgIFFUZXN0OjpuZXdSb3coImZyYW1l
c2V0IHBhZ2UiKSA8PCBRVXJsKCJxcmM6Ly8vcmVzb3VyY2VzL2luZGV4Lmh0bWwiKTsKK30KKwor
dm9pZCB0c3RfUVdlYlBhZ2U6OmxvYWRTaWduYWxzT3JkZXIoKQoreworICAgIFFGRVRDSChRVXJs
LCB1cmwpOworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgU3B5Rm9yTG9hZFNpZ25hbHNPcmRlciBs
b2FkU3B5KCZwYWdlKTsKKyAgICB3YWl0Rm9yU2lnbmFsKCZsb2FkU3B5LCBTSUdOQUwoc3RhcnRl
ZCgpKSk7CisgICAgcGFnZS5tYWluRnJhbWUoKS0+bG9hZCh1cmwpOworICAgIFFUUllfVkVSSUZZ
KGxvYWRTcHkuaXNGaW5pc2hlZCgpKTsKK30KKwordm9pZCB0c3RfUVdlYlBhZ2U6OnVuZG9BY3Rp
b25IYXZlQ3VzdG9tVGV4dCgpCit7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2V0SHRtbCgi
PGRpdiBpZD10ZXN0IGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4iKTsKKyAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
JykuZm9jdXMoKSIpOworCisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2Ny
aXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0VGV4dCcsIHRydWUsICdUZXN0Jyk7Iik7
CisgICAgUVN0cmluZyB0eXBpbmdBY3Rpb25UZXh0ID0gbV9wYWdlLT5hY3Rpb24oUVdlYlBhZ2U6
OlVuZG8pLT50ZXh0KCk7CisKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFT
Y3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbmRlbnQnLCB0cnVlKTsiKTsKKyAgICBRU3Ry
aW5nIGFsaWduQWN0aW9uVGV4dCA9IG1fcGFnZS0+YWN0aW9uKFFXZWJQYWdlOjpVbmRvKS0+dGV4
dCgpOworCisgICAgUVZFUklGWSh0eXBpbmdBY3Rpb25UZXh0ICE9IGFsaWduQWN0aW9uVGV4dCk7
Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpvcGVuV2luZG93RGVmYXVsdFNpemUoKQoreworICAg
IFRlc3RQYWdlIHBhZ2U7CisgICAgcGFnZS5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNl
dHRpbmdzOjpKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MsIHRydWUpOworICAgIC8vIE9wZW4gYSBk
ZWZhdWx0IHdpbmRvdy4KKyAgICBwYWdlLm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQo
IndpbmRvdy5vcGVuKCkiKTsKKyAgICAvLyBPcGVuIGEgdG9vIHNtYWxsIHdpbmRvdy4KKyAgICBw
YWdlLm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIndpbmRvdy5vcGVuKCcnLCAnJywg
J3dpZHRoPTEwLGhlaWdodD0xMCcpIik7CisKKyAgICBRVGVzdDo6cVdhaXQoNTAwKTsKKyAgICAv
LyBUaGUgbnVtYmVyIG9mIHBvcHVwcyBjcmVhdGVkIHNob3VsZCBiZSB0d28uCisgICAgUVZFUklG
WShwYWdlLmNyZWF0ZWRXaW5kb3dzLnNpemUoKSA9PSAyKTsKKworICAgIFFSZWN0IHJlcXVlc3Rl
ZEdlb21ldHJ5ID0gcGFnZS5jcmVhdGVkV2luZG93c1swXS0+cmVxdWVzdGVkR2VvbWV0cnk7Cisg
ICAgLy8gQ2hlY2sgZGVmYXVsdCBzaXplIGhhcyBiZWVuIHJlcXVlc3RlZC4KKyAgICBRVkVSSUZZ
KHJlcXVlc3RlZEdlb21ldHJ5LndpZHRoKCkgPT0gMCk7CisgICAgUVZFUklGWShyZXF1ZXN0ZWRH
ZW9tZXRyeS5oZWlnaHQoKSA9PSAwKTsKKworICAgIHJlcXVlc3RlZEdlb21ldHJ5ID0gcGFnZS5j
cmVhdGVkV2luZG93c1sxXS0+cmVxdWVzdGVkR2VvbWV0cnk7CisgICAgLy8gQ2hlY2sgbWluaW11
bSBzaXplIGhhcyBiZWVuIHJlcXVlc3RlZC4KKyAgICBRVkVSSUZZKHJlcXVlc3RlZEdlb21ldHJ5
LndpZHRoKCkgPT0gMTAwKTsKKyAgICBRVkVSSUZZKHJlcXVlc3RlZEdlb21ldHJ5LmhlaWdodCgp
ID09IDEwMCk7Cit9CisKK3ZvaWQgdHN0X1FXZWJQYWdlOjpjc3NNZWRpYVR5cGVHbG9iYWxTZXR0
aW5nKCkKK3sKKyAgICBRU3RyaW5nIHRlc3RIdG1sKCI8c3R5bGU+QG1lZGlhIHR2IHtib2R5e2Jh
Y2tncm91bmQtY29sb3I6cmVkO319QG1lZGlhIGhhbmRoZWxkIHtib2R5e2JhY2tncm91bmQtY29s
b3I6Z3JlZW47fX1AbWVkaWEgc2NyZWVuIHtib2R5e2JhY2tncm91bmQtY29sb3I6Ymx1ZTt9fTwv
c3R5bGU+Iik7CisgICAgUVNpZ25hbFNweSBsb2FkU3B5KG1fdmlldywgU0lHTkFMKGxvYWRGaW5p
c2hlZChib29sKSkpOworCisgICAgUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT5zZXRD
U1NNZWRpYVR5cGUoInR2Iik7CisgICAgLy8gQ2xlYXIgcGFnZSBzcGVjaWZpYyBzZXR0aW5nIHRv
IHJlYWQgZnJvbSBnbG9iYWwgc2V0dGluZworICAgIG1fdmlldy0+cGFnZSgpLT5zZXR0aW5ncygp
LT5zZXRDU1NNZWRpYVR5cGUoUVN0cmluZygpKTsKKyAgICBtX3ZpZXctPnNldEh0bWwodGVzdEh0
bWwpOworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDEpOworICAgIFFWRVJJRlko
bV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIndpbmRvdy5t
YXRjaE1lZGlhKCd0dicpLm1hdGNoZXMgPT0gdHJ1ZSIpLnRvQm9vbCgpKTsgCisgICAgUVZFUklG
WShRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPmNzc01lZGlhVHlwZSgpID09ICJ0diIp
OworCisgICAgUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT5zZXRDU1NNZWRpYVR5cGUo
ImhhbmRoZWxkIik7CisgICAgLy8gQ2xlYXIgcGFnZSBzcGVjaWZpYyBzZXR0aW5nIHRvIHJlYWQg
ZnJvbSBnbG9iYWwgc2V0dGluZworICAgIG1fdmlldy0+cGFnZSgpLT5zZXR0aW5ncygpLT5zZXRD
U1NNZWRpYVR5cGUoUVN0cmluZygpKTsKKyAgICBtX3ZpZXctPnNldEh0bWwodGVzdEh0bWwpOwor
ICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDIpOworICAgIFFWRVJJRlkobV92aWV3
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIndpbmRvdy5tYXRjaE1l
ZGlhKCdoYW5kaGVsZCcpLm1hdGNoZXMgPT0gdHJ1ZSIpLnRvQm9vbCgpKTsKKyAgICBRVkVSSUZZ
KFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKS0+Y3NzTWVkaWFUeXBlKCkgPT0gImhhbmRo
ZWxkIik7CisKKyAgICBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPnNldENTU01lZGlh
VHlwZSgic2NyZWVuIik7CisgICAgLy8gQ2xlYXIgcGFnZSBzcGVjaWZpYyBzZXR0aW5nIHRvIHJl
YWQgZnJvbSBnbG9iYWwgc2V0dGluZworICAgIG1fdmlldy0+cGFnZSgpLT5zZXR0aW5ncygpLT5z
ZXRDU1NNZWRpYVR5cGUoUVN0cmluZygpKTsKKyAgICBtX3ZpZXctPnNldEh0bWwodGVzdEh0bWwp
OworICAgIFFUUllfQ09NUEFSRShsb2FkU3B5LmNvdW50KCksIDMpOworICAgIFFWRVJJRlkobV92
aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQoIndpbmRvdy5tYXRj
aE1lZGlhKCdzY3JlZW4nKS5tYXRjaGVzID09IHRydWUiKS50b0Jvb2woKSk7IAorICAgIFFWRVJJ
RlkoUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpLT5jc3NNZWRpYVR5cGUoKSA9PSAic2Ny
ZWVuIik7IAorfQorCit2b2lkIHRzdF9RV2ViUGFnZTo6Y3NzTWVkaWFUeXBlUGFnZVNldHRpbmco
KQoreworICAgIFFTdHJpbmcgdGVzdEh0bWwoIjxzdHlsZT5AbWVkaWEgdHYge2JvZHl7YmFja2dy
b3VuZC1jb2xvcjpyZWQ7fX1AbWVkaWEgaGFuZGhlbGQge2JvZHl7YmFja2dyb3VuZC1jb2xvcjpn
cmVlbjt9fUBtZWRpYSBzY3JlZW4ge2JvZHl7YmFja2dyb3VuZC1jb2xvcjpibHVlO319PC9zdHls
ZT4iKTsKKyAgICBRU2lnbmFsU3B5IGxvYWRTcHkobV92aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVk
KGJvb2wpKSk7CisKKyAgICBtX3ZpZXctPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0Q1NTTWVkaWFU
eXBlKCJ0diIpOworICAgIG1fdmlldy0+c2V0SHRtbCh0ZXN0SHRtbCk7CisgICAgUVRSWV9DT01Q
QVJFKGxvYWRTcHkuY291bnQoKSwgMSk7CisgICAgUVZFUklGWShtX3ZpZXctPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgid2luZG93Lm1hdGNoTWVkaWEoJ3R2JykubWF0
Y2hlcyA9PSB0cnVlIikudG9Cb29sKCkpOyAKKyAgICBRVkVSSUZZKG1fdmlldy0+cGFnZSgpLT5z
ZXR0aW5ncygpLT5jc3NNZWRpYVR5cGUoKSA9PSAidHYiKTsgCisKKyAgICBtX3ZpZXctPnBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2V0Q1NTTWVkaWFUeXBlKCJoYW5kaGVsZCIpOworICAgIG1fdmlldy0+
c2V0SHRtbCh0ZXN0SHRtbCk7CisgICAgUVRSWV9DT01QQVJFKGxvYWRTcHkuY291bnQoKSwgMik7
CisgICAgUVZFUklGWShtX3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNj
cmlwdCgid2luZG93Lm1hdGNoTWVkaWEoJ2hhbmRoZWxkJykubWF0Y2hlcyA9PSB0cnVlIikudG9C
b29sKCkpOworICAgIFFWRVJJRlkobV92aWV3LT5wYWdlKCktPnNldHRpbmdzKCktPmNzc01lZGlh
VHlwZSgpID09ICJoYW5kaGVsZCIpOworCisgICAgbV92aWV3LT5wYWdlKCktPnNldHRpbmdzKCkt
PnNldENTU01lZGlhVHlwZSgic2NyZWVuIik7CisgICAgbV92aWV3LT5zZXRIdG1sKHRlc3RIdG1s
KTsKKyAgICBRVFJZX0NPTVBBUkUobG9hZFNweS5jb3VudCgpLCAzKTsKKyAgICBRVkVSSUZZKG1f
dmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ3aW5kb3cubWF0
Y2hNZWRpYSgnc2NyZWVuJykubWF0Y2hlcyA9PSB0cnVlIikudG9Cb29sKCkpOyAKKyAgICBRVkVS
SUZZKG1fdmlldy0+cGFnZSgpLT5zZXR0aW5ncygpLT5jc3NNZWRpYVR5cGUoKSA9PSAic2NyZWVu
Iik7IAorfQorCitRVEVTVF9NQUlOKHRzdF9RV2ViUGFnZSkKKyNpbmNsdWRlICJ0c3RfcXdlYnBh
Z2UubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UucXJjIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UucXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNzhkZmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFn
ZS5xcmMKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIFJDQz48UkNDIHZlcnNpb249IjEuMCI+
Cis8cXJlc291cmNlPgorICAgIDxmaWxlPnJlc291cmNlcy9pbmRleC5odG1sPC9maWxlPgorICAg
IDxmaWxlPnJlc291cmNlcy9mcmFtZV9hLmh0bWw8L2ZpbGU+CisgICAgPGZpbGU+cmVzb3VyY2Vz
L2ZyYW1lX2MuaHRtbDwvZmlsZT4KKyAgICA8ZmlsZT5yZXNvdXJjZXMvaWZyYW1lLmh0bWw8L2Zp
bGU+CisgICAgPGZpbGU+cmVzb3VyY2VzL2lmcmFtZTIuaHRtbDwvZmlsZT4KKyAgICA8ZmlsZT5y
ZXNvdXJjZXMvaWZyYW1lMy5odG1sPC9maWxlPgorICAgIDxmaWxlPnJlc291cmNlcy9mcmFtZWRp
bmRleC5odG1sPC9maWxlPgorICAgIDxmaWxlPnJlc291cmNlcy9jb250ZW50Lmh0bWw8L2ZpbGU+
CisgICAgPGZpbGU+cmVzb3VyY2VzL3NjcmlwdC5odG1sPC9maWxlPgorICAgIDxmaWxlPnJlc291
cmNlcy91c2VyLmNzczwvZmlsZT4KKzwvcXJlc291cmNlPgorPC9SQ0M+CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBsdWdpbmRhdGFiYXNlL3F3ZWJwbHVnaW5kYXRh
YmFzZS5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS9xd2Vi
cGx1Z2luZGF0YWJhc2UucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZm
NmM0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwbHVn
aW5kYXRhYmFzZS9xd2VicGx1Z2luZGF0YWJhc2UucHJvCkBAIC0wLDAgKzEsMiBAQAoraW5jbHVk
ZSguLi90ZXN0cy5wcmkpCitleGlzdHMoJCR7VEFSR0VUfS5xcmMpOlJFU09VUkNFUyArPSAkJHtU
QVJHRVR9LnFyYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2lu
ZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5kYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwbHVnaW5kYXRhYmFzZS90c3RfcXdlYnBsdWdpbmRhdGFiYXNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDUyNGUyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2VicGx1Z2luZGF0YWJhc2UvdHN0X3F3ZWJwbHVnaW5k
YXRhYmFzZS5jcHAKQEAgLTAsMCArMSw0MzcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5
IEpha3ViIFdpZWN6b3JlayA8ZmF3MjE3QGdtYWlsLmNvbT4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSA8UXRUZXN0
L1F0VGVzdD4KKworI2luY2x1ZGUgPHFkaXIuaD4KKyNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KKyNp
bmNsdWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJwbHVnaW5kYXRhYmFzZS5oPgorI2lu
Y2x1ZGUgPHF3ZWJzZXR0aW5ncy5oPgorI2luY2x1ZGUgPHF2YXJpYW50Lmg+CisKK2NsYXNzIHRz
dF9RV2ViUGx1Z2luRGF0YWJhc2UgOiBwdWJsaWMgUU9iamVjdAoreworICAgIFFfT0JKRUNUCisK
K3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIGluc3RhbGxlZFBsdWdpbnMoKTsKKyAgICB2b2lk
IHNlYXJjaFBhdGhzKCk7CisgICAgdm9pZCBudWxsX2RhdGEoKTsKKyAgICB2b2lkIG51bGwoKTsK
KyAgICB2b2lkIHBsdWdpbkZvck1pbWVUeXBlKCk7CisgICAgdm9pZCBlbmFibGVkKCk7CisgICAg
dm9pZCBvcGVyYXRvcmVxdWFsX2RhdGEoKTsKKyAgICB2b2lkIG9wZXJhdG9yZXF1YWwoKTsKKyAg
ICB2b2lkIHByZWZlcnJlZFBsdWdpbigpOworICAgIHZvaWQgb3BlcmF0b3Jhc3NpZ25fZGF0YSgp
OworICAgIHZvaWQgb3BlcmF0b3Jhc3NpZ24oKTsKK307CisKK3R5cGVkZWYgUVdlYlBsdWdpbklu
Zm86Ok1pbWVUeXBlIE1pbWVUeXBlOworCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Omlu
c3RhbGxlZFBsdWdpbnMoKQoreworICAgIFFXZWJQYWdlIHBhZ2U7CisgICAgcGFnZS5zZXR0aW5n
cygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwgdHJ1ZSk7Cisg
ICAgUVdlYkZyYW1lKiBmcmFtZSA9IHBhZ2UubWFpbkZyYW1lKCk7CisKKyAgICBRVmFyaWFudE1h
cCBqc1BsdWdpbnNNYXAgPSBmcmFtZS0+ZXZhbHVhdGVKYXZhU2NyaXB0KCJ3aW5kb3cubmF2aWdh
dG9yLnBsdWdpbnMiKS50b01hcCgpOworICAgIFFMaXN0PFFXZWJQbHVnaW5JbmZvPiBwbHVnaW5z
ID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpLT5wbHVnaW5zKCk7CisgICAgUUNPTVBB
UkUocGx1Z2lucywgUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpLT5wbHVnaW5zKCkpOwor
CisgICAgaW50IGxlbmd0aCA9IGpzUGx1Z2luc01hcFsibGVuZ3RoIl0udG9JbnQoKTsKKyAgICBR
Q09NUEFSRShsZW5ndGgsIHBsdWdpbnMuY291bnQoKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIFFXZWJQbHVnaW5JbmZvIHBsdWdpbiA9IHBsdWdp
bnMuYXQoaSk7CisKKyAgICAgICAgUVZhcmlhbnRNYXAganNQbHVnaW4gPSBmcmFtZS0+ZXZhbHVh
dGVKYXZhU2NyaXB0KFFTdHJpbmcoIndpbmRvdy5uYXZpZ2F0b3IucGx1Z2luc1slMV0iKS5hcmco
aSkpLnRvTWFwKCk7CisgICAgICAgIFFTdHJpbmcgbmFtZSA9IGpzUGx1Z2luWyJuYW1lIl0udG9T
dHJpbmcoKTsKKyAgICAgICAgUVN0cmluZyBkZXNjcmlwdGlvbiA9IGpzUGx1Z2luWyJkZXNjcmlw
dGlvbiJdLnRvU3RyaW5nKCk7CisgICAgICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBqc1BsdWdpblsi
ZmlsZW5hbWUiXS50b1N0cmluZygpOworCisgICAgICAgIFFDT01QQVJFKHBsdWdpbi5uYW1lKCks
IG5hbWUpOworICAgICAgICBRQ09NUEFSRShwbHVnaW4uZGVzY3JpcHRpb24oKSwgZGVzY3JpcHRp
b24pOworICAgICAgICBRQ09NUEFSRShRRmlsZUluZm8ocGx1Z2luLnBhdGgoKSkuZmlsZU5hbWUo
KSwgZmlsZU5hbWUpOworCisgICAgICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXM7CisgICAg
ICAgIGludCBtaW1lVHlwZXNDb3VudCA9IGpzUGx1Z2luWyJsZW5ndGgiXS50b0ludCgpOworCisg
ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWltZVR5cGVzQ291bnQ7ICsraikgeworICAgICAg
ICAgICAgUVZhcmlhbnRNYXAganNNaW1lVHlwZSA9IGZyYW1lLT5ldmFsdWF0ZUphdmFTY3JpcHQo
UVN0cmluZygid2luZG93Lm5hdmlnYXRvci5wbHVnaW5zWyUxXVslMl0iKS5hcmcoaSkuYXJnKGop
KS50b01hcCgpOworCisgICAgICAgICAgICBNaW1lVHlwZSBtaW1lVHlwZTsKKyAgICAgICAgICAg
IG1pbWVUeXBlLm5hbWUgPSBqc01pbWVUeXBlWyJ0eXBlIl0udG9TdHJpbmcoKTsKKyAgICAgICAg
ICAgIG1pbWVUeXBlLmRlc2NyaXB0aW9uID0ganNNaW1lVHlwZVsiZGVzY3JpcHRpb24iXS50b1N0
cmluZygpOworICAgICAgICAgICAgbWltZVR5cGUuZmlsZUV4dGVuc2lvbnMgPSBqc01pbWVUeXBl
WyJzdWZmaXhlcyJdLnRvU3RyaW5nKCkuc3BsaXQoJywnLCBRU3RyaW5nOjpTa2lwRW1wdHlQYXJ0
cyk7CisKKyAgICAgICAgICAgIG1pbWVUeXBlcy5hcHBlbmQobWltZVR5cGUpOworICAgICAgICAg
ICAgUVZFUklGWShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZS5uYW1lKSk7CisgICAg
ICAgIH0KKworICAgICAgICBRQ09NUEFSRShwbHVnaW4ubWltZVR5cGVzKCksIG1pbWVUeXBlcyk7
CisKKyAgICAgICAgUVZFUklGWSghcGx1Z2luLmlzTnVsbCgpKTsKKyAgICAgICAgUVZFUklGWShw
bHVnaW4uaXNFbmFibGVkKCkpOworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFi
YXNlOjpzZWFyY2hQYXRocygpCit7CisgICAgUVdlYlBsdWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9
IFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKTsKKyAgICBRTGlzdDxRV2ViUGx1Z2luSW5m
bz4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisgICAgUVN0cmluZ0xpc3QgZGlyZWN0
b3JpZXMgPSBkYXRhYmFzZS0+c2VhcmNoUGF0aHMoKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2lu
RGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisKKyAgICBkYXRh
YmFzZS0+c2V0U2VhcmNoUGF0aHMoZGlyZWN0b3JpZXMpOworICAgIFFDT01QQVJFKFFXZWJQbHVn
aW5EYXRhYmFzZTo6ZGVmYXVsdFNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVzKTsKKyAgICBRQ09N
UEFSRShkYXRhYmFzZS0+c2VhcmNoUGF0aHMoKSwgZGlyZWN0b3JpZXMpOworICAgIFFDT01QQVJF
KGRhdGFiYXNlLT5wbHVnaW5zKCksIHBsdWdpbnMpOworICAgIGRhdGFiYXNlLT5yZWZyZXNoKCk7
CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbnMoKSwgcGx1Z2lucyk7CisKKyAgICBkYXRh
YmFzZS0+c2V0U2VhcmNoUGF0aHMoUVN0cmluZ0xpc3QoKSk7CisgICAgUUNPTVBBUkUoUVdlYlBs
dWdpbkRhdGFiYXNlOjpkZWZhdWx0U2VhcmNoUGF0aHMoKSwgZGlyZWN0b3JpZXMpOworICAgIFFD
T01QQVJFKGRhdGFiYXNlLT5zZWFyY2hQYXRocygpLCBRU3RyaW5nTGlzdCgpKTsKKyAgICBRQ09N
UEFSRShkYXRhYmFzZS0+cGx1Z2lucygpLmNvdW50KCksIDApOworCisgICAgZGF0YWJhc2UtPnNl
dFNlYXJjaFBhdGhzKGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+c2VhcmNo
UGF0aHMoKSwgZGlyZWN0b3JpZXMpOworICAgIGRhdGFiYXNlLT5hZGRTZWFyY2hQYXRoKFFEaXI6
OnRlbXBQYXRoKCkpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5zZWFyY2hQYXRocygpLmNvdW50
KCksIGRpcmVjdG9yaWVzLmNvdW50KCkgKyAxKTsKKyAgICBRVkVSSUZZKGRhdGFiYXNlLT5zZWFy
Y2hQYXRocygpLmNvbnRhaW5zKFFEaXI6OnRlbXBQYXRoKCkpKTsKKyAgICBkaXJlY3Rvcmllcy5h
cHBlbmQoUURpcjo6dGVtcFBhdGgoKSk7CisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnNlYXJjaFBh
dGhzKCksIGRpcmVjdG9yaWVzKTsKKworICAgIC8vIEFzIGFuIGVtcHR5IHNldCBvZiBzZWFyY2gg
cGF0aHMgaGFzIGJlZW4gc2V0LCB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gcmVidWlsdAorICAgIC8v
IGZyb20gc2NyYXRjaCBhZnRlciBicmluZ2luZyB0aGUgb2xkIHBhdGggc2V0IGJhY2suCisgICAg
Ly8gQmVjYXVzZSB0aGUgUVdlYlBsdWdpbnMgbm8gbG9uZ2VyIHBvaW50IHRvIHRoZSBzYW1lIFBs
dWdpblBhY2thZ2VzLAorICAgIC8vIHRoZSBsaXN0IGlzIGFsc28gbm8gbG9uZ2VyIGVxdWFsIHRv
IHRoZSBvbGRlciBvbmUsIGV2ZW4gdGhvdWdoIGl0IGNvbnRhaW5zCisgICAgLy8gdGhlIHNhbWUg
aW5mb3JtYXRpb24uCisgICAgUUNPTVBBUkUoZGF0YWJhc2UtPnBsdWdpbnMoKS5jb3VudCgpLCBw
bHVnaW5zLmNvdW50KCkpOworICAgIHBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworICAg
IFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5zKCksIHBsdWdpbnMpOworCisgICAgZm9yIChpbnQg
aSA9IChkaXJlY3Rvcmllcy5jb3VudCgpIC0gMSk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIFFE
aXIgZGlyZWN0b3J5KGRpcmVjdG9yaWVzLmF0KGkpKTsKKyAgICAgICAgaWYgKCFkaXJlY3Rvcnku
ZXhpc3RzKCkgfHwgIWRpcmVjdG9yeS5jb3VudCgpKQorICAgICAgICAgICAgZGlyZWN0b3JpZXMu
cmVtb3ZlQXQoaSk7CisgICAgfQorCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBhdGhzKGRpcmVj
dG9yaWVzKTsKKyAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2lucygpLCBwbHVnaW5zKTsKKyAg
ICBkYXRhYmFzZS0+cmVmcmVzaCgpOworICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5zKCks
IHBsdWdpbnMpOworCisgICAgZGF0YWJhc2UtPnNldFNlYXJjaFBhdGhzKFFXZWJQbHVnaW5EYXRh
YmFzZTo6ZGVmYXVsdFNlYXJjaFBhdGhzKCkpOworICAgIGRpcmVjdG9yaWVzID0gUVdlYlBsdWdp
bkRhdGFiYXNlOjpkZWZhdWx0U2VhcmNoUGF0aHMoKTsKKyAgICBRQ09NUEFSRShRV2ViUGx1Z2lu
RGF0YWJhc2U6OmRlZmF1bHRTZWFyY2hQYXRocygpLCBkaXJlY3Rvcmllcyk7CisgICAgUUNPTVBB
UkUoZGF0YWJhc2UtPnNlYXJjaFBhdGhzKCksIGRpcmVjdG9yaWVzKTsKKyAgICBRQ09NUEFSRShk
YXRhYmFzZS0+cGx1Z2lucygpLCBwbHVnaW5zKTsKK30KKworUV9ERUNMQVJFX01FVEFUWVBFKFFX
ZWJQbHVnaW5JbmZvKQordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpudWxsX2RhdGEoKQor
eworICAgIFFUZXN0OjphZGRDb2x1bW48UVdlYlBsdWdpbkluZm8+KCJwbHVnaW4iKTsKKyAgICBR
VGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJudWxsIik7CisKKyAgICBRVGVzdDo6bmV3Um93KCJudWxs
IikgPDwgUVdlYlBsdWdpbkluZm8oKSA8PCB0cnVlOworICAgIFFUZXN0OjpuZXdSb3coImZvbyIp
IDw8IFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKS0+cGx1Z2luRm9yTWltZVR5cGUoImZv
b2JhcmJheiIpIDw8IHRydWU7CisKKyAgICBRTGlzdDxRV2ViUGx1Z2luSW5mbz4gcGx1Z2lucyA9
IFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKS0+cGx1Z2lucygpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcGx1Z2lucy5jb3VudCgpOyArK2kpCisgICAgICAgIFFUZXN0OjpuZXdSb3co
UVN0cmluZzo6bnVtYmVyKGkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKSA8PCBwbHVnaW5zLmF0KGkp
IDw8IGZhbHNlOworfQorCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6Om51bGwoKQorewor
ICAgIFFGRVRDSChRV2ViUGx1Z2luSW5mbywgcGx1Z2luKTsKKyAgICBRRkVUQ0goYm9vbCwgbnVs
bCk7CisKKyAgICBRQ09NUEFSRShwbHVnaW4uaXNOdWxsKCksIG51bGwpOworfQorCit2b2lkIHRz
dF9RV2ViUGx1Z2luRGF0YWJhc2U6OnBsdWdpbkZvck1pbWVUeXBlKCkKK3sKKyAgICBRTXVsdGlN
YXA8UVN0cmluZywgUVdlYlBsdWdpbkluZm8+IHBsdWdpbnNNYXA7CisgICAgUVdlYlBsdWdpbkRh
dGFiYXNlKiBkYXRhYmFzZSA9IFFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKTsKKyAgICBR
TGlzdDxRV2ViUGx1Z2luSW5mbz4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5zKCk7CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHBsdWdpbnMuY291bnQoKTsgKytpKSB7CisgICAgICAgIFFX
ZWJQbHVnaW5JbmZvIHBsdWdpbiA9IHBsdWdpbnMuYXQoaSk7CisKKyAgICAgICAgUUxpc3Q8TWlt
ZVR5cGU+IG1pbWVUeXBlcyA9IHBsdWdpbi5taW1lVHlwZXMoKTsKKyAgICAgICAgZm9yIChpbnQg
aiA9IDA7IGogPCBtaW1lVHlwZXMuY291bnQoKTsgKytqKSB7CisgICAgICAgICAgICBRU3RyaW5n
IG1pbWVUeXBlID0gbWltZVR5cGVzLmF0KGopLm5hbWU7CisgICAgICAgICAgICBwbHVnaW5zTWFw
Lmluc2VydChtaW1lVHlwZSwgcGx1Z2luKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luLnN1
cHBvcnRzTWltZVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgcGx1Z2lucy5jb3VudCgpOyArK2kpIHsKKyAgICAgICAgUVdlYlBsdWdp
bkluZm8gcGx1Z2luID0gcGx1Z2lucy5hdChpKTsKKworICAgICAgICBRTGlzdDxNaW1lVHlwZT4g
bWltZVR5cGVzID0gcGx1Z2luLm1pbWVUeXBlcygpOworICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IG1pbWVUeXBlcy5jb3VudCgpOyArK2opIHsKKyAgICAgICAgICAgIFFTdHJpbmcgbWltZVR5
cGUgPSBtaW1lVHlwZXMuYXQoaikubmFtZTsKKworICAgICAgICAgICAgUVZFUklGWShwbHVnaW5z
TWFwLmNvdW50KG1pbWVUeXBlKSA+IDApOworICAgICAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291
bnQobWltZVR5cGUpID4gMSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgUVdlYlBsdWdpbkluZm8gcGx1Z2luRm9yTWltZVR5cGUgPSBkYXRhYmFzZS0+cGx1Z2luRm9y
TWltZVR5cGUobWltZVR5cGUpOworICAgICAgICAgICAgUUNPTVBBUkUocGx1Z2luRm9yTWltZVR5
cGUsIHBsdWdpbik7CisgICAgICAgICAgICBkYXRhYmFzZS0+c2V0U2VhcmNoUGF0aHMoZGF0YWJh
c2UtPnNlYXJjaFBhdGhzKCkpOworICAgICAgICAgICAgUUNPTVBBUkUocGx1Z2luRm9yTWltZVR5
cGUsIHBsdWdpbik7CisgICAgICAgICAgICBRQ09NUEFSRShwbHVnaW5Gb3JNaW1lVHlwZSwgZGF0
YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlLnRvVXBwZXIoKSkpOworICAgICAgICAg
ICAgUUNPTVBBUkUocGx1Z2luRm9yTWltZVR5cGUsIGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlw
ZShtaW1lVHlwZS50b0xvd2VyKCkpKTsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luLnN1cHBv
cnRzTWltZVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbkZvck1p
bWVUeXBlLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbi5pc051bGwoKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgdHN0X1FXZWJQbHVnaW5EYXRhYmFzZTo6ZW5h
YmxlZCgpCit7CisgICAgUU11bHRpTWFwPFFTdHJpbmcsIFFXZWJQbHVnaW5JbmZvPiBwbHVnaW5z
TWFwOworICAgIFFXZWJQbHVnaW5EYXRhYmFzZSogZGF0YWJhc2UgPSBRV2ViU2V0dGluZ3M6OnBs
dWdpbkRhdGFiYXNlKCk7CisgICAgUUxpc3Q8UVdlYlBsdWdpbkluZm8+IHBsdWdpbnMgPSBkYXRh
YmFzZS0+cGx1Z2lucygpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50
KCk7ICsraSkgeworICAgICAgICBRV2ViUGx1Z2luSW5mbyBwbHVnaW4gPSBwbHVnaW5zLmF0KGkp
OworCisgICAgICAgIFFMaXN0PE1pbWVUeXBlPiBtaW1lVHlwZXMgPSBwbHVnaW4ubWltZVR5cGVz
KCk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbWltZVR5cGVzLmNvdW50KCk7ICsraikg
eworICAgICAgICAgICAgUVN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlcy5hdChqKS5uYW1lOwor
ICAgICAgICAgICAgcGx1Z2luc01hcC5pbnNlcnQobWltZVR5cGUsIHBsdWdpbik7CisgICAgICAg
ICAgICBRVkVSSUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBRTXVsdGlNYXA8UVN0cmluZywgUVdlYlBsdWdpbkluZm8+OjppdGVy
YXRvciBpdCA9IHBsdWdpbnNNYXAuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gcGx1Z2luc01h
cC5lbmQoKSkgeworICAgICAgICBRU3RyaW5nIG1pbWVUeXBlID0gaXQua2V5KCk7CisgICAgICAg
IFFXZWJQbHVnaW5JbmZvIHBsdWdpbiA9IGl0LnZhbHVlKCk7CisgICAgICAgIFFXZWJQbHVnaW5J
bmZvIHBsdWdpbkZvck1pbWVUeXBlID0gZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVU
eXBlKTsKKworICAgICAgICBRVkVSSUZZKHBsdWdpbnNNYXAuY291bnQobWltZVR5cGUpID4gMCk7
CisKKyAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291bnQobWltZVR5cGUpID09IDEpIHsKKyAgICAg
ICAgICAgIFFDT01QQVJFKHBsdWdpbiwgcGx1Z2luRm9yTWltZVR5cGUpOworCisgICAgICAgICAg
ICBRVkVSSUZZKHBsdWdpbi5pc0VuYWJsZWQoKSk7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdp
bkZvck1pbWVUeXBlLmlzRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIHBsdWdpbi5zZXRFbmFibGVk
KGZhbHNlKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdpbi5pc0VuYWJsZWQoKSk7CisgICAg
ICAgICAgICBRVkVSSUZZKCFwbHVnaW5Gb3JNaW1lVHlwZS5pc0VuYWJsZWQoKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbi5pc0VuYWJsZWQoKSk7CisgICAg
ICAgICAgICBRVkVSSUZZKHBsdWdpbkZvck1pbWVUeXBlLmlzRW5hYmxlZCgpKTsKKyAgICAgICAg
ICAgIHBsdWdpbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgIFFWRVJJRlkoIXBsdWdp
bi5pc0VuYWJsZWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBRVkVSSUZZKCFwbHVnaW4uaXNO
dWxsKCkpOworICAgICAgICBRVkVSSUZZKCFwbHVnaW5Gb3JNaW1lVHlwZS5pc051bGwoKSk7CisK
KyAgICAgICAgUVdlYlBsdWdpbkluZm8gcGx1Z2luRm9yTWltZVR5cGUyID0gZGF0YWJhc2UtPnBs
dWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlKTsKKyAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291bnQo
bWltZVR5cGUpID09IDEpIHsKKyAgICAgICAgICAgIFFWRVJJRlkocGx1Z2luRm9yTWltZVR5cGUy
ICE9IHBsdWdpbik7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbkZvck1pbWVUeXBlMi5pc051
bGwoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbkZvck1p
bWVUeXBlMiAhPSBwbHVnaW4pOworICAgICAgICAgICAgUVZFUklGWSghcGx1Z2luRm9yTWltZVR5
cGUyLmlzTnVsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHBsdWdpbi5zZXRFbmFibGVkKHRy
dWUpOworCisgICAgICAgICsraXQ7CisgICAgfQorfQorCit2b2lkIHRzdF9RV2ViUGx1Z2luRGF0
YWJhc2U6Om9wZXJhdG9yZXF1YWxfZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRV2Vi
UGx1Z2luSW5mbz4oImZpcnN0Iik7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxRV2ViUGx1Z2luSW5m
bz4oInNlY29uZCIpOworICAgIFFUZXN0OjphZGRDb2x1bW48Ym9vbD4oImVxdWFsIik7CisKKyAg
ICBRV2ViUGx1Z2luRGF0YWJhc2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRh
YmFzZSgpOworICAgIFFUZXN0OjpuZXdSb3coIm51bGwiKSA8PCBRV2ViUGx1Z2luSW5mbygpIDw8
IFFXZWJQbHVnaW5JbmZvKCkgPDwgdHJ1ZTsKKyAgICBRVGVzdDo6bmV3Um93KCJhcHBsaWNhdGlv
bi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZSgiYXBw
bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKCJh
cHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpIDw8IHRydWU7CisgICAgUVRlc3Q6Om5ld1Jv
dygiZm9vL2Jhci1iYXoiKSA8PCBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUoImZvby9iYXIt
YmF6IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGRhdGFiYXNlLT5wbHVn
aW5Gb3JNaW1lVHlwZSgiZm9vL2Jhci1iYXoiKSA8PCB0cnVlOworCisgICAgUUxpc3Q8UVdlYlBs
dWdpbkluZm8+IHBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgKHBsdWdpbnMuY291bnQoKSAtIDEpOyArK2kpIHsKKyAgICAgICAgUVdlYlBsdWdp
bkluZm8gZmlyc3QgPSBwbHVnaW5zLmF0KGkpOworICAgICAgICBRV2ViUGx1Z2luSW5mbyBzZWNv
bmQgPSBwbHVnaW5zLmF0KGkgKyAxKTsKKworICAgICAgICBRVGVzdDo6bmV3Um93KFFTdHJpbmco
IiUxPT0lMiIpLmFyZyhmaXJzdC5uYW1lKCksIHNlY29uZC5uYW1lKCkpLnRvVXRmOCgpLmNvbnN0
RGF0YSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZmlyc3QgPDwg
c2Vjb25kIDw8IGZhbHNlOworICAgIH0KK30KKwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNl
OjpvcGVyYXRvcmVxdWFsKCkKK3sKKyAgICBRRkVUQ0goUVdlYlBsdWdpbkluZm8sIGZpcnN0KTsK
KyAgICBRRkVUQ0goUVdlYlBsdWdpbkluZm8sIHNlY29uZCk7CisgICAgUUZFVENIKGJvb2wsIGVx
dWFsKTsKKworICAgIFFDT01QQVJFKGZpcnN0ID09IHNlY29uZCwgZXF1YWwpOworfQorCit2b2lk
IHRzdF9RV2ViUGx1Z2luRGF0YWJhc2U6OnByZWZlcnJlZFBsdWdpbigpCit7CisgICAgUU11bHRp
TWFwPFFTdHJpbmcsIFFXZWJQbHVnaW5JbmZvPiBwbHVnaW5zTWFwOworICAgIFFXZWJQbHVnaW5E
YXRhYmFzZSogZGF0YWJhc2UgPSBRV2ViU2V0dGluZ3M6OnBsdWdpbkRhdGFiYXNlKCk7CisgICAg
UUxpc3Q8UVdlYlBsdWdpbkluZm8+IHBsdWdpbnMgPSBkYXRhYmFzZS0+cGx1Z2lucygpOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwbHVnaW5zLmNvdW50KCk7ICsraSkgeworICAgICAgICBR
V2ViUGx1Z2luSW5mbyBwbHVnaW4gPSBwbHVnaW5zLmF0KGkpOworCisgICAgICAgIFFMaXN0PE1p
bWVUeXBlPiBtaW1lVHlwZXMgPSBwbHVnaW4ubWltZVR5cGVzKCk7CisgICAgICAgIGZvciAoaW50
IGogPSAwOyBqIDwgbWltZVR5cGVzLmNvdW50KCk7ICsraikgeworICAgICAgICAgICAgUVN0cmlu
ZyBtaW1lVHlwZSA9IG1pbWVUeXBlcy5hdChqKS5uYW1lOworICAgICAgICAgICAgcGx1Z2luc01h
cC5pbnNlcnQobWltZVR5cGUsIHBsdWdpbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRTXVs
dGlNYXA8UVN0cmluZywgUVdlYlBsdWdpbkluZm8+OjppdGVyYXRvciBpdCA9IHBsdWdpbnNNYXAu
YmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gcGx1Z2luc01hcC5lbmQoKSkgeworICAgICAgICBR
U3RyaW5nIG1pbWVUeXBlID0gaXQua2V5KCk7CisKKyAgICAgICAgaWYgKHBsdWdpbnNNYXAuY291
bnQobWltZVR5cGUpID4gMSkgeworICAgICAgICAgICAgUUxpc3Q8UVdlYlBsdWdpbkluZm8+IHBs
dWdpbnNGb3JNaW1lVHlwZSA9IHBsdWdpbnNNYXAudmFsdWVzKG1pbWVUeXBlKTsKKyAgICAgICAg
ICAgIFFXZWJQbHVnaW5JbmZvIHBsdWdpbiA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZSht
aW1lVHlwZSk7CisgICAgICAgICAgICBRVkVSSUZZKHBsdWdpbi5zdXBwb3J0c01pbWVUeXBlKG1p
bWVUeXBlKSk7CisKKyAgICAgICAgICAgIHBsdWdpbnNGb3JNaW1lVHlwZS5yZW1vdmVBbGwocGx1
Z2luKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGx1Z2luc0Zvck1pbWVUeXBl
LmNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgIFFXZWJQbHVnaW5JbmZvIGFub3RoZXJQ
bHVnaW4gPSBwbHVnaW5zRm9yTWltZVR5cGUuYXQoaSk7CisgICAgICAgICAgICAgICAgUVZFUklG
WShwbHVnaW4uc3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSkpOworICAgICAgICAgICAgICAgIFFW
RVJJRlkocGx1Z2luICE9IGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAgICAgICAgUUNPTVBB
UkUoZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlKSwgcGx1Z2luKTsKKyAgICAg
ICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5
cGUsIGFub3RoZXJQbHVnaW4pOworICAgICAgICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5w
bHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIGFub3RoZXJQbHVnaW4pOworCisgICAgICAgICAg
ICAgICAgYW5vdGhlclBsdWdpbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBR
Q09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOwor
CisgICAgICAgICAgICAgICAgYW5vdGhlclBsdWdpbi5zZXRFbmFibGVkKHRydWUpOworICAgICAg
ICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSks
IGFub3RoZXJQbHVnaW4pOworICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5zZXRTZWFyY2hQYXRo
cyhkYXRhYmFzZS0+c2VhcmNoUGF0aHMoKSk7CisgICAgICAgICAgICAgICAgUUNPTVBBUkUoZGF0
YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlKSwgYW5vdGhlclBsdWdpbik7CisKKyAg
ICAgICAgICAgICAgICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWlt
ZVR5cGUsIFFXZWJQbHVnaW5JbmZvKCkpOworICAgICAgICAgICAgICAgIFFDT01QQVJFKGRhdGFi
YXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSksIHBsdWdpbik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRV2ViUGx1Z2luSW5mbyBwbHVnaW4gPSBk
YXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpOworICAgICAgICAgICAgUUNPTVBB
UkUocGx1Z2luc01hcC52YWx1ZShtaW1lVHlwZSksIHBsdWdpbik7CisKKyAgICAgICAgICAgIGRh
dGFiYXNlLT5zZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSwgcGx1Z2luKTsK
KyAgICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlw
ZSksIHBsdWdpbik7CisKKyAgICAgICAgICAgIHBsdWdpbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAg
ICAgICAgICAgIFFDT01QQVJFKGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlwZSks
IFFXZWJQbHVnaW5JbmZvKCkpOworICAgICAgICAgICAgcGx1Z2luLnNldEVuYWJsZWQodHJ1ZSk7
CisKKyAgICAgICAgICAgIGRhdGFiYXNlLT5zZXRQcmVmZXJyZWRQbHVnaW5Gb3JNaW1lVHlwZSht
aW1lVHlwZSwgUVdlYlBsdWdpbkluZm8oKSk7CisgICAgICAgICAgICBRQ09NUEFSRShkYXRhYmFz
ZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUpLCBwbHVnaW4pOworICAgICAgICB9CisKKyAg
ICAgICAgKytpdDsKKyAgICB9CisKKyAgICBpZiAocGx1Z2luc01hcC5rZXlzKCkuY291bnQoKSA+
PSAyKSB7CisgICAgICAgIFFTdHJpbmdMaXN0IG1pbWVUeXBlcyA9IHBsdWdpbnNNYXAudW5pcXVl
S2V5cygpOworCisgICAgICAgIFFTdHJpbmcgbWltZVR5cGUxID0gbWltZVR5cGVzLmF0KDApOwor
ICAgICAgICBRU3RyaW5nIG1pbWVUeXBlMiA9IG1pbWVUeXBlcy5hdCgxKTsKKyAgICAgICAgUVdl
YlBsdWdpbkluZm8gcGx1Z2luMSA9IGRhdGFiYXNlLT5wbHVnaW5Gb3JNaW1lVHlwZShtaW1lVHlw
ZTEpOworICAgICAgICBRV2ViUGx1Z2luSW5mbyBwbHVnaW4yID0gZGF0YWJhc2UtPnBsdWdpbkZv
ck1pbWVUeXBlKG1pbWVUeXBlMik7CisKKyAgICAgICAgaW50IGkgPSAyOworICAgICAgICB3aGls
ZSAocGx1Z2luMi5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlMSkKKyAgICAgICAgICAgICAgICYm
ICFtaW1lVHlwZTIuaXNFbXB0eSgpCisgICAgICAgICAgICAgICAmJiBpIDwgbWltZVR5cGVzLmNv
dW50KCkpIHsKKyAgICAgICAgICAgIG1pbWVUeXBlMiA9IG1pbWVUeXBlcy5hdChpKTsKKyAgICAg
ICAgICAgIHBsdWdpbjIgPSBkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUyKTsK
KyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorCisgICAgICAgIHBsdWdpbjEgPSBkYXRhYmFz
ZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUxKTsKKyAgICAgICAgUVZFUklGWShwbHVnaW4x
LnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUxKSk7CisgICAgICAgIFFWRVJJRlkoIXBsdWdpbjEu
aXNOdWxsKCkpOworICAgICAgICBwbHVnaW4yID0gZGF0YWJhc2UtPnBsdWdpbkZvck1pbWVUeXBl
KG1pbWVUeXBlMik7CisgICAgICAgIFFWRVJJRlkocGx1Z2luMi5zdXBwb3J0c01pbWVUeXBlKG1p
bWVUeXBlMikpOworICAgICAgICBRVkVSSUZZKCFwbHVnaW4yLmlzTnVsbCgpKTsKKworICAgICAg
ICBkYXRhYmFzZS0+c2V0UHJlZmVycmVkUGx1Z2luRm9yTWltZVR5cGUobWltZVR5cGUyLCBwbHVn
aW4xKTsKKyAgICAgICAgUVZFUklGWSghcGx1Z2luMS5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBl
MikpOworICAgICAgICBRQ09NUEFSRShkYXRhYmFzZS0+cGx1Z2luRm9yTWltZVR5cGUobWltZVR5
cGUyKSwgcGx1Z2luMik7CisKKyAgICAgICAgZGF0YWJhc2UtPnNldFByZWZlcnJlZFBsdWdpbkZv
ck1pbWVUeXBlKG1pbWVUeXBlMSwgcGx1Z2luMSk7CisgICAgICAgIFFWRVJJRlkoIXBsdWdpbjIu
c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZTEpKTsKKyAgICAgICAgUUNPTVBBUkUoZGF0YWJhc2Ut
PnBsdWdpbkZvck1pbWVUeXBlKG1pbWVUeXBlMiksIHBsdWdpbjIpOworICAgIH0KK30KKwordm9p
ZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmFzc2lnbl9kYXRhKCkKK3sKKyAgICBR
VGVzdDo6YWRkQ29sdW1uPFFXZWJQbHVnaW5JbmZvPigiZmlyc3QiKTsKKyAgICBRVGVzdDo6YWRk
Q29sdW1uPFFXZWJQbHVnaW5JbmZvPigic2Vjb25kIik7CisKKyAgICBRV2ViUGx1Z2luRGF0YWJh
c2UqIGRhdGFiYXNlID0gUVdlYlNldHRpbmdzOjpwbHVnaW5EYXRhYmFzZSgpOworICAgIFFUZXN0
OjpuZXdSb3coIm51bGwiKSA8PCBRV2ViUGx1Z2luSW5mbygpIDw8IFFXZWJQbHVnaW5JbmZvKCk7
CisKKyAgICBRTGlzdDxRV2ViUGx1Z2luSW5mbz4gcGx1Z2lucyA9IGRhdGFiYXNlLT5wbHVnaW5z
KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAocGx1Z2lucy5jb3VudCgpIC0gMSk7ICsraSkg
eworICAgICAgICBRV2ViUGx1Z2luSW5mbyBmaXJzdCA9IHBsdWdpbnMuYXQoaSk7CisgICAgICAg
IFFXZWJQbHVnaW5JbmZvIHNlY29uZCA9IHBsdWdpbnMuYXQoaSArIDEpOworCisgICAgICAgIFFU
ZXN0OjpuZXdSb3coUVN0cmluZygiJTE9JTIiKS5hcmcoZmlyc3QubmFtZSgpLCBzZWNvbmQubmFt
ZSgpKS50b1V0ZjgoKS5jb25zdERhdGEoKSkgPDwgZmlyc3QgPDwgc2Vjb25kOworICAgIH0KK30K
Kwordm9pZCB0c3RfUVdlYlBsdWdpbkRhdGFiYXNlOjpvcGVyYXRvcmFzc2lnbigpCit7CisgICAg
UUZFVENIKFFXZWJQbHVnaW5JbmZvLCBmaXJzdCk7CisgICAgUUZFVENIKFFXZWJQbHVnaW5JbmZv
LCBzZWNvbmQpOworCisgICAgUVdlYlBsdWdpbkluZm8gaW5mbzsKKyAgICBRQ09NUEFSRShpbmZv
Lm1pbWVUeXBlcygpLCBRTGlzdDxNaW1lVHlwZT4oKSk7CisgICAgUUNPTVBBUkUoaW5mbyA9IGZp
cnN0LCBmaXJzdCk7CisgICAgUUNPTVBBUkUoaW5mbywgZmlyc3QpOworICAgIFFDT01QQVJFKGlu
Zm8ubWltZVR5cGVzKCksIGZpcnN0Lm1pbWVUeXBlcygpKTsKKyAgICBRQ09NUEFSRShpbmZvID0g
c2Vjb25kLCBzZWNvbmQpOworICAgIFFDT01QQVJFKGluZm8sIHNlY29uZCk7CisgICAgUUNPTVBB
UkUoaW5mby5taW1lVHlwZXMoKSwgc2Vjb25kLm1pbWVUeXBlcygpKTsKKyAgICBRQ09NUEFSRShp
bmZvID0gUVdlYlBsdWdpbkluZm8oKSwgUVdlYlBsdWdpbkluZm8oKSk7CisgICAgUUNPTVBBUkUo
aW5mby5taW1lVHlwZXMoKSwgUUxpc3Q8TWltZVR5cGU+KCkpOworfQorCitRVEVTVF9NQUlOKHRz
dF9RV2ViUGx1Z2luRGF0YWJhc2UpCisKKyNpbmNsdWRlICJ0c3RfcXdlYnBsdWdpbmRhdGFiYXNl
Lm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5b3Jp
Z2luL3F3ZWJzZWN1cml0eW9yaWdpbi5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJz
ZWN1cml0eW9yaWdpbi9xd2Vic2VjdXJpdHlvcmlnaW4ucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmZmNmM0OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL3F3ZWJzZWN1cml0eW9yaWdpbi9xd2Vic2VjdXJpdHlvcmlnaW4ucHJvCkBAIC0w
LDAgKzEsMiBAQAoraW5jbHVkZSguLi90ZXN0cy5wcmkpCitleGlzdHMoJCR7VEFSR0VUfS5xcmMp
OlJFU09VUkNFUyArPSAkJHtUQVJHRVR9LnFyYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vcmVzb3VyY2VzL3Rlc3QuaHRtbCBiL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3Jlc291cmNlcy90ZXN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNlMjVmMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3Jlc291cmNlcy90
ZXN0Lmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0Mv
L0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0
ZCI+Cis8aHRtbD4KKyAgIDxoZWFkPgorICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorICAgICAgIDx0
aXRsZT5RV2ViU2VjdXJpdHlPcmlnaW4gdGVzdCBwYWdlPC90aXRsZT4KKyAgICAgICA8c2NyaXB0
IExhbmd1YWdlPSJKYXZhU2NyaXB0Ij4KKyAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCh1cmwp
CisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiB0cmFjZShwb2ludCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIlAiKTsKKyAgICAg
ICAgICAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IHBvaW50ICsgIjogUmVzdWx0IGlzOlwiIiAr
IHJlc3VsdCArICJcIiIKKyAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJDb25zb2xlIikuYXBwZW5kQ2hpbGQoZWwpOworICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICB2YXIgeG1saHR0cCA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOworICAgICAgICAgICAgICAgICAgICAgeG1saHR0cC5vcGVuKCdH
RVQnLHVybCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgeG1saHR0cC5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBkb25lOworICAgICAgICAgICAgICAgICAgICAgeG1saHR0cC5vbmVycm9yID0g
ZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICB4bWxodHRwLnNlbmQobnVsbCk7CisgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKKyAgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAi
IikgeworICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhY2UoIkNhdGNoMSIpOworICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UoIkNhdGNoMiIpOworICAgICAgICAgICAg
ICAgICB9CisgCisgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAiIiArIHhtbGh0dHAucmVhZHlTdGF0ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZSgiRG9uZTEiKTsKKyAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlKCJEb25lMiIpOwor
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yKCkKKyAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUxFRCI7
CisgICAgICAgICAgICAgICAgICAgICB0cmFjZSgiRXJyb3IiKTsKKyAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICB0cmFjZSgiRXhpdCIpOworICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0ID09ICJUZXN0IjsKKyAgICAgICAgICAgICB9CisgICAgICAgICA8L3NjcmlwdD4K
KyAgICAgPC9oZWFkPgorICAgICA8Ym9keT4KKyAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24i
IG9uY2xpY2s9ImphdmFzY3JpcHQ6YWxlcnQocnVuVGVzdCgnaHR0cDovL3d3dy5nb29nbGUuY29t
JykpIiB2YWx1ZT0iUnVuIFRlc3QiLz48YnIvPgorICAgICAgICAgPGRpdiBpZD0iQ29uc29sZSIv
PgorICAgICA8L2JvZHk+CisgPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9x
d2Vic2VjdXJpdHlvcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJp
dHlvcmlnaW4vdHN0X3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODM1ZjI0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBA
IC0wLDAgKzEsMTkyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMg
Q2lzY28gU3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKworI2luY2x1ZGUg
PFFEZWJ1Zz4KKyNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgorI2luY2x1ZGUgPFF0VGVzdD4KKyNp
bmNsdWRlIDxxd2ViZnJhbWUuaD4KKyNpbmNsdWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3
ZWJzZWN1cml0eW9yaWdpbi5oPgorI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+CisKK2NsYXNzIHRzdF9R
V2ViU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1Ymxp
YzoKKyAgICB0c3RfUVdlYlNlY3VyaXR5T3JpZ2luKCk7CisgICAgdmlydHVhbCB+dHN0X1FXZWJT
ZWN1cml0eU9yaWdpbigpOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgaW5pdCgpOworICAg
IHZvaWQgY2xlYW51cCgpOworICAgIHZvaWQgd2hpdGVMaXN0X2RhdGEoKTsKKyAgICB2b2lkIHdo
aXRlTGlzdCgpOworcHJpdmF0ZToKKyAgICBRV2ViVmlldyogbV92aWV3OworICAgIFFXZWJQYWdl
KiBtX3BhZ2U7Cit9OworCit0c3RfUVdlYlNlY3VyaXR5T3JpZ2luOjp0c3RfUVdlYlNlY3VyaXR5
T3JpZ2luKCkKK3sKK30KKwordHN0X1FXZWJTZWN1cml0eU9yaWdpbjo6fnRzdF9RV2ViU2VjdXJp
dHlPcmlnaW4oKQoreworfQorCit2b2lkIHRzdF9RV2ViU2VjdXJpdHlPcmlnaW46OmluaXQoKQor
eworICAgIG1fdmlldyA9IG5ldyBRV2ViVmlldygpOworICAgIG1fcGFnZSA9IG1fdmlldy0+cGFn
ZSgpOworfQorCit2b2lkIHRzdF9RV2ViU2VjdXJpdHlPcmlnaW46OmNsZWFudXAoKQoreworICAg
IGRlbGV0ZSBtX3ZpZXc7Cit9CisKK3ZvaWQgdHN0X1FXZWJTZWN1cml0eU9yaWdpbjo6d2hpdGVM
aXN0X2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInNvdXJjZSIpOwor
ICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInNjaGVtZSIpOworICAgIFFUZXN0OjphZGRD
b2x1bW48UVN0cmluZz4oImhvc3QiKTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJpbmNs
dWRlU3ViRG9tYWlucyIpOworICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oInRlc3RVcmwi
KTsKKyAgICBRVGVzdDo6YWRkQ29sdW1uPGJvb2w+KCJzdWNjZXNzQmVmb3JlQWRkIik7CisgICAg
UVRlc3Q6OmFkZENvbHVtbjxib29sPigic3VjY2Vzc0FmdGVyQWRkIik7CisgICAgUVRlc3Q6OmFk
ZENvbHVtbjxib29sPigic3VjY2Vzc0FmdGVyUmVtb3ZlIik7CisKKyAgICBRVGVzdDo6bmV3Um93
KCJzY2hlbWUiKSA8PCAiaHR0cDovL3d3dy5zb3VyY2UuY29tIiA8PCAiaHR0cHMiIDw8ICJ3d3cu
dGFyZ2V0LmNvbSIgPDwgZmFsc2UgPDwgImh0dHBzOi8vd3d3LnRhcmdldC5jb20vb3RoZXIiIDw8
IGZhbHNlIDw8IHRydWUgPDwgZmFsc2U7CisgICAgUVRlc3Q6Om5ld1Jvdygic2NoZW1lRmFpbCIp
IDw8ICJodHRwOi8vd3d3LnNvdXJjZS5jb20iIDw8ICJodHRwcyIgPDwgInd3dy50YXJnZXQuY29t
IiA8PCBmYWxzZSA8PCAiaHR0cDovL3d3dy50YXJnZXQuY29tL290aGVyIiA8PCBmYWxzZSA8PCBm
YWxzZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCJzY2hlbWVTdWJEb20iKSA8PCAiaHR0
cDovL3d3dy5zb3VyY2UuY29tIiA8PCAiaHR0cHMiIDw8ICJ0YXJnZXQuY29tIiA8PCB0cnVlIDw8
ICJodHRwczovL3d3dy50YXJnZXQuY29tL290aGVyIiA8PCBmYWxzZSA8PCB0cnVlIDw8IGZhbHNl
OworICAgIFFUZXN0OjpuZXdSb3coInNjaGVtZVN1YkRvbUZhaWwiKSA8PCAiaHR0cDovL3d3dy5z
b3VyY2UuY29tIiA8PCAiaHR0cHMiIDw8ICJ0YXJnZXQuY29tIiA8PCB0cnVlIDw8ICJodHRwczov
L3d3d3RhcmdldC5jb20vb3RoZXIiIDw8IGZhbHNlIDw8IGZhbHNlIDw8IGZhbHNlOworICAgIFFU
ZXN0OjpuZXdSb3coInNjaGVtZVN1YkRvbUZhaWwiKSA8PCAiaHR0cDovL3d3dy5zb3VyY2UuY29t
IiA8PCAiaHR0cHMiIDw8ICJ0YXJnZXQuY29tIiA8PCB0cnVlIDw8ICJodHRwOi8vd3d3LnRhcmdl
dC5jb20vb3RoZXIiIDw8IGZhbHNlIDw8IGZhbHNlIDw8IGZhbHNlOworICAgIFFUZXN0OjpuZXdS
b3coImhvc3QiKSA8PCAiaHR0cDovL3d3dy5zb3VyY2UuY29tIiA8PCAiaHR0cCIgPDwgInd3dy50
YXJnZXQuY29tIiA8PCBmYWxzZSA8PCAiaHR0cDovL3d3dy50YXJnZXQuY29tL3RhcmdldCIgPDwg
ZmFsc2UgPDwgdHJ1ZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCJob3N0RmFpbCIpIDw8
ICJodHRwOi8vd3d3LnNvdXJjZS5jb20iIDw8ICJodHRwIiA8PCAid3d3LnRhcmdldC5jb20iIDw8
IGZhbHNlIDw8ICJodHRwOi8vd3d3Lm5ld3RhcmdldC5jb20iIDw8IGZhbHNlIDw8IGZhbHNlIDw8
IGZhbHNlOworICAgIFFUZXN0OjpuZXdSb3coImhvc3RTdWJEb20iKSA8PCAiaHR0cDovL3d3dy5z
b3VyY2UuY29tIiA8PCAiaHR0cCIgPDwgInRhcmdldC5jb20iIDw8IHRydWUgPDwgImh0dHA6Ly93
d3cubmV3LnRhcmdldC5jb20iIDw8IGZhbHNlIDw8IHRydWUgPDwgZmFsc2U7CisgICAgUVRlc3Q6
Om5ld1JvdygiaG9zdFN1YkRvbUZhaWwiKSA8PCAiaHR0cDovL3d3dy5zb3VyY2UuY29tIiA8PCAi
aHR0cCIgPDwgInRhcmdldC5jb20iIDw8IGZhbHNlIDw8ICJodHRwOi8vd3d3Lm5ldy50YXJnZXQu
Y29tIiA8PCBmYWxzZSA8PCBmYWxzZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCJob3N0
U3ViRG9tRmFpbENvdW50cnkiKSA8PCAiaHR0cDovL3d3dy5zb3VyY2UuY29tIiA8PCAiaHR0cCIg
PDwgInRhcmdldC5jb20iIDw8IHRydWUgPDwgImh0dHA6Ly93d3cudGFyZ2V0LmNvbS50dyIgPDwg
ZmFsc2UgPDwgZmFsc2UgPDwgZmFsc2U7Cit9CisKK2NsYXNzIENhbm5lZFJlc3BvbnNlTmV0d29y
a1JlcGx5OiBwdWJsaWMgUU5ldHdvcmtSZXBseSB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAg
ICBDYW5uZWRSZXNwb25zZU5ldHdvcmtSZXBseShRT2JqZWN0KiBwYXJlbnQsIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wLCBjb25zdCBRTmV0d29ya1JlcXVlc3QmIHJlcSwgY29u
c3QgUUJ1ZmZlciYgYm9keSk6IFFOZXR3b3JrUmVwbHkocGFyZW50KQorICAgIHsKKyAgICAgICAg
c2V0UmVxdWVzdChyZXEpOworICAgICAgICBzZXRVcmwocmVxLnVybCgpKTsKKyAgICAgICAgc2V0
T3BlcmF0aW9uKG9wKTsKKyAgICAgICAgbV9idWZmZXIuc2V0RGF0YShib2R5LmRhdGEoKSk7Cisg
ICAgICAgIGNvbm5lY3QoJm1fYnVmZmVyLCBTSUdOQUwocmVhZHlSZWFkKCkpLCBTTE9UKGVtaXRS
ZWFkeVJlYWQoKSkpOworICAgICAgICBjb25uZWN0KCZtX2J1ZmZlciwgU0lHTkFMKHJlYWRDaGFu
bmVsRmluaXNoZWQoKSksIFNMT1QoZW1pdFJlYWRDaGFubmVsRmluaXNoZWQoKSkpOworICAgICAg
ICBjb25uZWN0KCZtX2J1ZmZlciwgU0lHTkFMKHJlYWRDaGFubmVsRmluaXNoZWQoKSksIFNMT1Qo
ZW1pdFJlYWRDaGFubmVsRmluaXNoZWQoKSkpOworICAgICAgICBtX2J1ZmZlci5vcGVuKFFJT0Rl
dmljZTo6UmVhZE9ubHkpOworICAgICAgICBvcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpOworICAg
ICAgICBRVGltZXI6OnNpbmdsZVNob3QoMTAsIHRoaXMsIFNMT1QodXBkYXRlKCkpKTsKKyAgICB9
Citwcm90ZWN0ZWQ6CisgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKiBkYXRhLCBxaW50NjQgbWF4
U2l6ZSkKKyAgICB7CisgICAgICAgIHFpbnQ2NCByZXN1bHQgPSBtX2J1ZmZlci5yZWFkKGRhdGEs
IG1heFNpemUpOworICAgICAgICBpZiAoIW1fYnVmZmVyLmJ5dGVzQXZhaWxhYmxlKCkpCisgICAg
ICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoMTAsIHRoaXMsIFNMT1QoZW1pdFJlYWRDaGFubmVs
RmluaXNoZWQoKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZpcnR1
YWwgcWludDY0IGJ5dGVzQXZhaWxhYmxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2J1ZmZlci5ieXRlc0F2YWlsYWJsZSgpOworICAgIH0KKworcHJpdmF0ZSBzbG90czoKKyAgICB2
b2lkIGVtaXRSZWFkeVJlYWQoKQorICAgIHsKKyAgICAgICAgZW1pdCByZWFkeVJlYWQoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGVtaXRSZWFkQ2hhbm5lbEZpbmlzaGVkKCkKKyAgICB7CisgICAgICAg
IGVtaXQgcmVhZENoYW5uZWxGaW5pc2hlZCgpOworICAgICAgICBlbWl0IGZpbmlzaGVkKCk7Cisg
ICAgfQorICAgIHZvaWQgYWJvcnQoKSB7IH07CisKKyAgICB2b2lkIHVwZGF0ZSgpCisgICAgewor
ICAgICAgICBzZXRIZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlciwgInRl
eHQvcGxhaW4iKTsKKyAgICAgICAgc2V0SGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExl
bmd0aEhlYWRlciwgbV9idWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtS
ZXBseTo6Tm9FcnJvciwgIiIpOworICAgICAgICBzZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0
OjpIdHRwU3RhdHVzQ29kZUF0dHJpYnV0ZSwgMjAwKTsKKyAgICAgICAgc2V0QXR0cmlidXRlKFFO
ZXR3b3JrUmVxdWVzdDo6SHR0cFJlYXNvblBocmFzZUF0dHJpYnV0ZSwgUVN0cmluZygiT2siKS50
b0xhdGluMSgpKTsKKyAgICAgICAgZW1pdCBtZXRhRGF0YUNoYW5nZWQoKTsKKyAgICAgICAgZW1p
dCByZWFkeVJlYWQoKTsKKyAgICB9CitwdWJsaWM6CisgICAgUUJ1ZmZlciBtX2J1ZmZlcjsKK307
CisKK2NsYXNzIENhbm5lZFJlc3BvbnNlTmV0d29ya0FjY2Vzc01hbmFnZXI6IHB1YmxpYyBRTmV0
d29ya0FjY2Vzc01hbmFnZXIgeworICAgIFFfT0JKRUNUCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCBRTmV0d29ya1JlcGx5KiBjcmVhdGVSZXF1ZXN0KE9wZXJhdGlvbiBvcCwgY29uc3QgUU5ldHdv
cmtSZXF1ZXN0JiByZXEsIFFJT0RldmljZSogb3V0Z29pbmdEYXRhID0gMCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBuZXcgQ2FubmVkUmVzcG9uc2VOZXR3b3JrUmVwbHkodGhpcywgb3AsIHJlcSwg
Km1fYnVmZmVyKTsKKyAgICB9OworcHVibGljOgorICAgIFFCdWZmZXIqIG1fYnVmZmVyOworfTsK
Kworc3RhdGljIGNvbnN0IGNoYXIgY2FubmVkUmVzcG9uc2VbXSA9ICJUZXN0IjsKKwordm9pZCB0
c3RfUVdlYlNlY3VyaXR5T3JpZ2luOjp3aGl0ZUxpc3QoKQoreworICAgIFFGRVRDSChRU3RyaW5n
LCBzb3VyY2UpOworICAgIFFGRVRDSChRU3RyaW5nLCBzY2hlbWUpOworICAgIFFGRVRDSChRU3Ry
aW5nLCBob3N0KTsKKyAgICBRRkVUQ0goYm9vbCwgaW5jbHVkZVN1YkRvbWFpbnMpOworICAgIFFG
RVRDSChRU3RyaW5nLCB0ZXN0VXJsKTsKKyAgICBRRkVUQ0goYm9vbCwgc3VjY2Vzc0JlZm9yZUFk
ZCk7CisgICAgUUZFVENIKGJvb2wsIHN1Y2Nlc3NBZnRlckFkZCk7CisgICAgUUZFVENIKGJvb2ws
IHN1Y2Nlc3NBZnRlclJlbW92ZSk7CisKKyAgICBRV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9
IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW4oc291cmNlKTsKKyAgICBDYW5uZWRSZXNwb25zZU5ldHdv
cmtBY2Nlc3NNYW5hZ2VyIG1hbmFnZXI7CisgICAgUUJ1ZmZlciBidWZmZXI7CisgICAgUVdlYlNl
Y3VyaXR5T3JpZ2luOjpTdWJkb21haW5TZXR0aW5nIHN1YmRvbWFpblNldHRpbmcgPSBpbmNsdWRl
U3ViRG9tYWlucyA/IFFXZWJTZWN1cml0eU9yaWdpbjo6QWxsb3dTdWJkb21haW5zIDogUVdlYlNl
Y3VyaXR5T3JpZ2luOjpEaXNhbGxvd1N1YmRvbWFpbnM7CisgICAgYnVmZmVyLnNldERhdGEoY2Fu
bmVkUmVzcG9uc2UsIHNpemVvZihjYW5uZWRSZXNwb25zZSktMSk7CisgICAgbWFuYWdlci5tX2J1
ZmZlciA9ICZidWZmZXI7CisgICAgUUZpbGUgdGVzdFBhZ2VGaWxlKCI6L3Jlc291cmNlcy90ZXN0
Lmh0bWwiKTsKKyAgICBRVkVSSUZZKHRlc3RQYWdlRmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9u
bHkpKTsKKyAgICB1Y2hhciogdGVzdFBhZ2UgPSB0ZXN0UGFnZUZpbGUubWFwKDAsIHRlc3RQYWdl
RmlsZS5zaXplKCkpOworICAgIFFWRVJJRlkodGVzdFBhZ2UpOworICAgIG1fdmlldy0+c2V0SHRt
bChRU3RyaW5nKChjb25zdCBjaGFyKil0ZXN0UGFnZSksIFFVcmwoc291cmNlKSk7CisgICAgbV92
aWV3LT5wYWdlKCktPnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCZtYW5hZ2VyKTsKKyAgICBRU3Ry
aW5nIHRlc3RKUz0icnVuVGVzdChcIiIgKyB0ZXN0VXJsICsgIlwiKSI7CisgICAgUUNPTVBBUkUo
bV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQodGVzdEpTKSwg
UVZhcmlhbnQoc3VjY2Vzc0JlZm9yZUFkZCkpOworICAgIG9yaWdpbi0+YWRkQWNjZXNzV2hpdGVs
aXN0RW50cnkoc2NoZW1lLCBob3N0LCBzdWJkb21haW5TZXR0aW5nKTsKKyAgICBRQ09NUEFSRSht
X3ZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCh0ZXN0SlMpLCBR
VmFyaWFudChzdWNjZXNzQWZ0ZXJBZGQpKTsKKyAgICBvcmlnaW4tPnJlbW92ZUFjY2Vzc1doaXRl
bGlzdEVudHJ5KHNjaGVtZSwgaG9zdCwgc3ViZG9tYWluU2V0dGluZyk7CisgICAgUUNPTVBBUkUo
bV92aWV3LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmFsdWF0ZUphdmFTY3JpcHQodGVzdEpTKSwg
UVZhcmlhbnQoc3VjY2Vzc0FmdGVyUmVtb3ZlKSk7CisgICAgbV92aWV3LT5wYWdlKCktPnNldE5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKDApOworfQorCitRVEVTVF9NQUlOKHRzdF9RV2ViU2VjdXJpdHlP
cmlnaW4pCisjaW5jbHVkZSAidHN0X3F3ZWJzZWN1cml0eW9yaWdpbi5tb2MiCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2Vj
dXJpdHlvcmlnaW4ucXJjIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmln
aW4vdHN0X3F3ZWJzZWN1cml0eW9yaWdpbi5xcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZWM4ZDljMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4ucXJjCkBAIC0wLDAg
KzEsNiBAQAorPCFET0NUWVBFIFJDQz48UkNDIHZlcnNpb249IjEuMCI+Cis8cXJlc291cmNlPgor
ICAgIDxmaWxlPnJlc291cmNlcy90ZXN0Lmh0bWw8L2ZpbGU+Cis8L3FyZXNvdXJjZT4KKzwvUkND
PgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3Ly5naXRpZ25v
cmUgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3Ly5naXRpZ25vcmUKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0YWZlNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACitx
d2VidmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9xd2Vi
dmlldy5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3F3ZWJ2aWV3LnBybwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZjNDk2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9xd2Vidmlldy5wcm8KQEAgLTAs
MCArMSwyIEBACitpbmNsdWRlKC4uL3Rlc3RzLnByaSkKK2V4aXN0cygkJHtUQVJHRVR9LnFyYyk6
UkVTT1VSQ0VTICs9ICQke1RBUkdFVH0ucXJjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJ2aWV3L3Jlc291cmNlcy9mcmFtZV9hLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJ2aWV3L3Jlc291cmNlcy9mcmFtZV9hLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWZmNjhmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvdGVzdHMvcXdlYnZpZXcvcmVzb3VyY2VzL2ZyYW1lX2EuaHRtbApAQCAtMCwwICsxLDIg
QEAKKzxhIGhyZWY9Imh0dHA6Ly9nb29nbGUuY29tIiB0YXJnZXQ9ImZyYW1lX2IiPjxpbWcgc3Jj
PSIiIHdpZHRoPTEwMCBoZWlnaHQ9MTAwIGFsdD0iR29vZ2xlIj48L2E+Cis8YSBocmVmPSJodHRw
Oi8veWFob28uY29tIiB0YXJnZXQ9ImZyYW1lX2IiPjxpbWcgc3JjPSIiIHdpZHRoPTEwMCBoZWln
aHQ9MTAwIGFsdD0iWWFob28iPjwvYT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnZpZXcvcmVzb3VyY2VzL2luZGV4Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJ2aWV3L3Jlc291cmNlcy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM1M2FkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJ2aWV3L3Jlc291cmNlcy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNCBAQAorPGZyYW1l
c2V0IGNvbHM9IjI1JSw3NSUiPgorICAgPGZyYW1lIHNyYz0iZnJhbWVfYS5odG1sIiBuYW1lPSJm
cmFtZV9hIj4KKyAgIDxmcmFtZSBzcmM9ImZyYW1lX2IuaHRtbCIgbmFtZT0iZnJhbWVfYiI+Cis8
L2ZyYW1lc2V0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2Vidmlldy9y
ZXNvdXJjZXMvaW5wdXRfdHlwZXMuaHRtbCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZp
ZXcvcmVzb3VyY2VzL2lucHV0X3R5cGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmU4OTNhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVz
dHMvcXdlYnZpZXcvcmVzb3VyY2VzL2lucHV0X3R5cGVzLmh0bWwKQEAgLTAsMCArMSw5IEBACis8
aHRtbD48Ym9keT4KKzxpbnB1dCB0eXBlPSd0ZXh0JyBtYXhsZW5ndGg9JzIwJyBzdHlsZT0ncG9z
aXRpb246IGFic29sdXRlOyBsZWZ0OiAxMHB4OyB0b3A6IDBweDsgaGVpZ2h0OiA1MHB4OyB3aWR0
aDogMTAwcHg7Jy8+PGJyPgorPGlucHV0IHR5cGU9J3Bhc3N3b3JkJyBzdHlsZT0ncG9zaXRpb246
IGFic29sdXRlOyBsZWZ0OiAxMHB4OyB0b3A6IDUwcHg7IGhlaWdodDogNTBweDsgd2lkdGg6IDEw
MHB4OycvPjxicj4KKzxpbnB1dCB0eXBlPSd0ZWwnIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7
IGxlZnQ6IDEwcHg7IHRvcDogMTAwcHg7IGhlaWdodDogNTBweDsgd2lkdGg6IDEwMHB4OycvPjxi
cj4KKzxpbnB1dCB0eXBlPSdudW1iZXInIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6
IDEwcHg7IHRvcDogMTUwcHg7IGhlaWdodDogNTBweDsgd2lkdGg6IDEwMHB4OycvPjxicj4KKzxp
bnB1dCB0eXBlPSdlbWFpbCcgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsg
dG9wOiAyMDBweDsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogMTAwcHg7Jy8+PGJyPgorPGlucHV0IHR5
cGU9J3VybCcgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsgdG9wOiAyNTBw
eDsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogMTAwcHg7Jy8+PGJyPgorPHRleHRhcmVhIHN0eWxlPSdw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwcHg7IHRvcDogMzEwcHg7IGhlaWdodDogNTBweDsg
d2lkdGg6IDEwMHB4Oycgcm93cz0iMiIgY29scz0iMjAiPmJsYWggYmxhaCBibGFoIGJsYWg8L3Rl
eHRhcmVhPjxicj4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3F3ZWJ2aWV3L3Jlc291cmNlcy9zY3JvbGx0ZXN0X3BhZ2UuaHRtbCBiL1NvdXJjZS9X
ZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvcmVzb3VyY2VzL3Njcm9sbHRlc3RfcGFnZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZmNiYmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3Jlc291cmNlcy9zY3JvbGx0ZXN0
X3BhZ2UuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPlNjcm9sbGlu
ZyB0ZXN0PC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMDBw
eDsgaGVpZ2h0OiAxMDAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIi8+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9x
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJ2aWV3L3RzdF9xd2Vidmll
dy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk5MGFkMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnZpZXcvdHN0X3F3ZWJ2aWV3
LmNwcApAQCAtMCwwICsxLDUyMyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChD
KSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IEdpcmlzaCBS
YW1ha3Jpc2huYW4gPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSA8cXRlc3Qu
aD4KKyNpbmNsdWRlICIuLi91dGlsLmgiCisKKyNpbmNsdWRlIDxxcGFpbnRlci5oPgorI2luY2x1
ZGUgPHF3ZWJ2aWV3Lmg+CisjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxxbmV0d29y
a3JlcXVlc3QuaD4KKyNpbmNsdWRlIDxxZGlyaXRlcmF0b3IuaD4KKyNpbmNsdWRlIDxxd2ViZWxl
bWVudC5oPgorI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorCisjZGVmaW5lIFZFUklGWV9JTlBVVE1F
VEhPRF9ISU5UUyhhY3R1YWwsIGV4cGVjdCkgXAorICAgIFFWRVJJRlkoYWN0dWFsID09IGV4cGVj
dCk7CisKK2NsYXNzIHRzdF9RV2ViVmlldyA6IHB1YmxpYyBRT2JqZWN0Cit7CisgICAgUV9PQkpF
Q1QKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBpbml0VGVzdENhc2UoKTsKKyAgICB2b2lk
IGNsZWFudXBUZXN0Q2FzZSgpOworICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgY2xlYW51cCgp
OworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCByZW5kZXJpbmdBZnRlck1heEFuZEJhY2so
KTsKKyAgICB2b2lkIHJlbmRlckhpbnRzKCk7CisgICAgdm9pZCBnZXRXZWJLaXRWZXJzaW9uKCk7
CisKKyAgICB2b2lkIHJldXNlUGFnZV9kYXRhKCk7CisgICAgdm9pZCByZXVzZVBhZ2UoKTsKKyAg
ICB2b2lkIG1pY3JvRm9jdXNDb29yZGluYXRlcygpOworICAgIHZvaWQgZm9jdXNJbnB1dFR5cGVz
KCk7CisgICAgdm9pZCBob3Jpem9udGFsU2Nyb2xsYmFyVGVzdCgpOworCisgICAgdm9pZCBjcmFz
aFRlc3RzKCk7CisjaWYgIShkZWZpbmVkKFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKSAmJiBXVEZf
VVNFX1FUX01PQklMRV9USEVNRSkKKyAgICB2b2lkIHNldFBhbGV0dGVfZGF0YSgpOworICAgIHZv
aWQgc2V0UGFsZXR0ZSgpOworI2VuZGlmCit9OworCisvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGJl
Zm9yZSB0aGUgZmlyc3QgdGVzdCBmdW5jdGlvbiBpcyBleGVjdXRlZC4KKy8vIEl0IGlzIG9ubHkg
Y2FsbGVkIG9uY2UuCit2b2lkIHRzdF9RV2ViVmlldzo6aW5pdFRlc3RDYXNlKCkKK3sKK30KKwor
Ly8gVGhpcyB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgbGFzdCB0ZXN0IGZ1bmN0aW9uIGlzIGV4
ZWN1dGVkLgorLy8gSXQgaXMgb25seSBjYWxsZWQgb25jZS4KK3ZvaWQgdHN0X1FXZWJWaWV3Ojpj
bGVhbnVwVGVzdENhc2UoKQoreworfQorCisvLyBUaGlzIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSBl
YWNoIHRlc3QgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuCit2b2lkIHRzdF9RV2ViVmlldzo6aW5pdCgp
Cit7Cit9CisKKy8vIFRoaXMgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZXZlcnkgdGVzdCBmdW5jdGlv
bi4KK3ZvaWQgdHN0X1FXZWJWaWV3OjpjbGVhbnVwKCkKK3sKK30KKwordm9pZCB0c3RfUVdlYlZp
ZXc6OnJlbmRlckhpbnRzKCkKK3sKKyAgICBRV2ViVmlldyB3ZWJWaWV3OworCisgICAgLy8gZGVm
YXVsdCBpcyBvbmx5IHRleHQgYW50aWFsaWFzaW5nICsgc21vb3RoIHBpeG1hcCB0cmFuc2Zvcm0K
KyAgICBRVkVSSUZZKCEod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OkFudGlhbGlh
c2luZykpOworICAgIFFWRVJJRlkod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OlRl
eHRBbnRpYWxpYXNpbmcpOworICAgIFFWRVJJRlkod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBh
aW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9ybSk7CisgICAgUVZFUklGWSghKHdlYlZpZXcucmVu
ZGVySGludHMoKSAmIFFQYWludGVyOjpIaWdoUXVhbGl0eUFudGlhbGlhc2luZykpOworCisgICAg
d2ViVmlldy5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIHRydWUpOworICAg
IFFWRVJJRlkod2ViVmlldy5yZW5kZXJIaW50cygpICYgUVBhaW50ZXI6OkFudGlhbGlhc2luZyk7
CisgICAgUVZFUklGWSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6VGV4dEFudGlh
bGlhc2luZyk7CisgICAgUVZFUklGWSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6
U21vb3RoUGl4bWFwVHJhbnNmb3JtKTsKKyAgICBRVkVSSUZZKCEod2ViVmlldy5yZW5kZXJIaW50
cygpICYgUVBhaW50ZXI6OkhpZ2hRdWFsaXR5QW50aWFsaWFzaW5nKSk7CisKKyAgICB3ZWJWaWV3
LnNldFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgZmFsc2UpOworICAgIFFWRVJJ
RlkoISh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6QW50aWFsaWFzaW5nKSk7Cisg
ICAgUVZFUklGWSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6VGV4dEFudGlhbGlh
c2luZyk7CisgICAgUVZFUklGWSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6U21v
b3RoUGl4bWFwVHJhbnNmb3JtKTsKKyAgICBRVkVSSUZZKCEod2ViVmlldy5yZW5kZXJIaW50cygp
ICYgUVBhaW50ZXI6OkhpZ2hRdWFsaXR5QW50aWFsaWFzaW5nKSk7CisKKyAgICB3ZWJWaWV3LnNl
dFJlbmRlckhpbnQoUVBhaW50ZXI6OlNtb290aFBpeG1hcFRyYW5zZm9ybSwgdHJ1ZSk7CisgICAg
UVZFUklGWSghKHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpBbnRpYWxpYXNpbmcp
KTsKKyAgICBRVkVSSUZZKHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVyOjpUZXh0QW50
aWFsaWFzaW5nKTsKKyAgICBRVkVSSUZZKHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVy
OjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0pOworICAgIFFWRVJJRlkoISh3ZWJWaWV3LnJlbmRlckhp
bnRzKCkgJiBRUGFpbnRlcjo6SGlnaFF1YWxpdHlBbnRpYWxpYXNpbmcpKTsKKworICAgIHdlYlZp
ZXcuc2V0UmVuZGVySGludChRUGFpbnRlcjo6U21vb3RoUGl4bWFwVHJhbnNmb3JtLCBmYWxzZSk7
CisgICAgUVZFUklGWSh3ZWJWaWV3LnJlbmRlckhpbnRzKCkgJiBRUGFpbnRlcjo6VGV4dEFudGlh
bGlhc2luZyk7CisgICAgUVZFUklGWSghKHdlYlZpZXcucmVuZGVySGludHMoKSAmIFFQYWludGVy
OjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0pKTsKKyAgICBRVkVSSUZZKCEod2ViVmlldy5yZW5kZXJI
aW50cygpICYgUVBhaW50ZXI6OkhpZ2hRdWFsaXR5QW50aWFsaWFzaW5nKSk7Cit9CisKK3ZvaWQg
dHN0X1FXZWJWaWV3OjpnZXRXZWJLaXRWZXJzaW9uKCkKK3sKKyAgICBRVkVSSUZZKHFXZWJLaXRW
ZXJzaW9uKCkudG9Eb3VibGUoKSA+IDApOworfQorCit2b2lkIHRzdF9RV2ViVmlldzo6cmV1c2VQ
YWdlX2RhdGEoKQoreworICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oImh0bWwiKTsKKyAg
ICBRVGVzdDo6bmV3Um93KCJXaXRob3V0UGx1Z2luIikgPDwgIjxodG1sPjxib2R5IGlkPSdiJz50
ZXh0PC9ib2R5PjwvaHRtbD4iOworICAgIFFUZXN0OjpuZXdSb3coIldpbmRvd2VkUGx1Z2luIikg
PDwgUVN0cmluZygiPGh0bWw+PGJvZHkgaWQ9J2InPnRleHQ8ZW1iZWQgc3JjPSdyZXNvdXJjZXMv
dGVzdC5zd2YnPjwvZW1iZWQ+PC9ib2R5PjwvaHRtbD4iKTsKKyAgICBRVGVzdDo6bmV3Um93KCJX
aW5kb3dsZXNzUGx1Z2luIikgPDwgUVN0cmluZygiPGh0bWw+PGJvZHkgaWQ9J2InPnRleHQ8ZW1i
ZWQgc3JjPSdyZXNvdXJjZXMvdGVzdC5zd2YnIHdtb2RlPVwidHJhbnNwYXJlbnRcIj48L2VtYmVk
PjwvYm9keT48L2h0bWw+Iik7Cit9CisKK3ZvaWQgdHN0X1FXZWJWaWV3OjpyZXVzZVBhZ2UoKQor
eworICAgIGlmICghUURpcihURVNUU19TT1VSQ0VfRElSKS5leGlzdHMoKSkKKyAgICAgICAgV19R
U0tJUChRU3RyaW5nKCJUaGlzIHRlc3QgcmVxdWlyZXMgYWNjZXNzIHRvIHJlc291cmNlcyBmb3Vu
ZCBpbiAnJTEnIikuYXJnKFRFU1RTX1NPVVJDRV9ESVIpLnRvTGF0aW4xKCkuY29uc3REYXRhKCks
IFNraXBBbGwpOworCisgICAgUURpcjo6c2V0Q3VycmVudChURVNUU19TT1VSQ0VfRElSKTsKKwor
ICAgIFFGRVRDSChRU3RyaW5nLCBodG1sKTsKKyAgICBRV2ViVmlldyogdmlldzEgPSBuZXcgUVdl
YlZpZXc7CisgICAgUVBvaW50ZXI8UVdlYlBhZ2U+IHBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAg
dmlldzEtPnNldFBhZ2UocGFnZS5kYXRhKCkpOworICAgIHBhZ2UuZGF0YSgpLT5zZXR0aW5ncygp
LT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwgdHJ1ZSk7CisgICAg
UVdlYkZyYW1lKiBtYWluRnJhbWUgPSBwYWdlLmRhdGEoKS0+bWFpbkZyYW1lKCk7CisgICAgbWFp
bkZyYW1lLT5zZXRIdG1sKGh0bWwsIFFVcmw6OmZyb21Mb2NhbEZpbGUoVEVTVFNfU09VUkNFX0RJ
UikpOworICAgIGlmIChodG1sLmNvbnRhaW5zKCI8L2VtYmVkPiIpKSB7CisgICAgICAgIC8vIHNv
bWUgcmVhc29uYWJsZSB0aW1lIGZvciB0aGUgUGx1Z2luU3RyZWFtIHRvIGZlZWQgdGVzdC5zd2Yg
dG8gZmxhc2ggYW5kIHN0YXJ0IHBhaW50aW5nCisgICAgICAgIHdhaXRGb3JTaWduYWwodmlldzEs
IFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCAyMDAwKTsKKyAgICB9CisKKyAgICB2aWV3MS0+
c2hvdygpOworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQodmlldzEpOworICAgIGRl
bGV0ZSB2aWV3MTsKKyAgICBRVkVSSUZZKHBhZ2UgIT0gMCk7IC8vIGRlbGV0aW5nIHZpZXcgbXVz
dCBub3QgaGF2ZSBkZWxldGVkIHRoZSBwYWdlLCBzaW5jZSBpdCdzIG5vdCBhIGNoaWxkIG9mIHZp
ZXcKKworICAgIFFXZWJWaWV3ICp2aWV3MiA9IG5ldyBRV2ViVmlldzsKKyAgICB2aWV3Mi0+c2V0
UGFnZShwYWdlLmRhdGEoKSk7CisgICAgdmlldzItPnNob3coKTsgLy8gaW4gV2luZG93bGVzcyBt
b2RlLCB5b3Ugc2hvdWxkIHN0aWxsIGJlIGFibGUgdG8gc2VlIHRoZSBwbHVnaW4gaGVyZQorICAg
IFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQodmlldzIpOworICAgIGRlbGV0ZSB2aWV3MjsK
KworICAgIGRlbGV0ZSBwYWdlLmRhdGEoKTsgLy8gbXVzdCBub3QgY3Jhc2gKKworICAgIFFEaXI6
OnNldEN1cnJlbnQoUUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSk7Cit9CisKKy8v
IENsYXNzIHVzZWQgaW4gY3Jhc2hUZXN0cworY2xhc3MgV2ViVmlld0NyYXNoVGVzdCA6IHB1Ymxp
YyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFXZWJWaWV3KiBtX3ZpZXc7CitwdWJsaWM6
CisgICAgYm9vbCBtX2V4ZWN1dGVkOworCisKKyAgICBXZWJWaWV3Q3Jhc2hUZXN0KFFXZWJWaWV3
KiB2aWV3KQorICAgICAgOiBtX3ZpZXcodmlldykKKyAgICAgICwgbV9leGVjdXRlZChmYWxzZSkK
KyAgICB7CisgICAgICAgIHZpZXctPmNvbm5lY3QodmlldywgU0lHTkFMKGxvYWRQcm9ncmVzcyhp
bnQpKSwgdGhpcywgU0xPVChsb2FkaW5nKGludCkpKTsKKyAgICB9CisKK3ByaXZhdGUgUV9TTE9U
UzoKKyAgICB2b2lkIGxvYWRpbmcoaW50IHByb2dyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHBy
b2dyZXNzID49IDIwICYmIHByb2dyZXNzIDwgOTApIHsKKyAgICAgICAgICAgIFFWRVJJRlkoIW1f
ZXhlY3V0ZWQpOworICAgICAgICAgICAgbV92aWV3LT5zdG9wKCk7CisgICAgICAgICAgICBtX2V4
ZWN1dGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK307CisKKworLy8gU2hvdWxkIG5vdCBj
cmFzaC4KK3ZvaWQgdHN0X1FXZWJWaWV3OjpjcmFzaFRlc3RzKCkKK3sKKyAgICAvLyBUZXN0IGlm
IGxvYWRpbmcgY2FuIGJlIHN0b3BwZWQgaW4gbG9hZFByb2dyZXNzIGhhbmRsZXIgd2l0aG91dCBj
cmFzaC4KKyAgICAvLyBUZXN0IHBhZ2Ugc2hvdWxkIGhhdmUgZnJhbWVzLgorICAgIFFXZWJWaWV3
IHZpZXc7CisgICAgV2ViVmlld0NyYXNoVGVzdCB0ZXN0ZXIoJnZpZXcpOworICAgIFFVcmwgdXJs
KCJxcmM6Ly8vcmVzb3VyY2VzL2luZGV4Lmh0bWwiKTsKKyAgICB2aWV3LmxvYWQodXJsKTsKKyAg
ICBRVFJZX1ZFUklGWSh0ZXN0ZXIubV9leGVjdXRlZCk7IC8vIElmIGZhaWwgaXQgbWVhbnMgdGhh
dCB0aGUgdGVzdCB3YXNuJ3QgZXhlY3V0ZWQuCit9CisKK3ZvaWQgdHN0X1FXZWJWaWV3OjptaWNy
b0ZvY3VzQ29vcmRpbmF0ZXMoKQoreworICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdl
OworICAgIFFXZWJWaWV3KiB3ZWJWaWV3ID0gbmV3IFFXZWJWaWV3OworICAgIHdlYlZpZXctPnNl
dFBhZ2UoIHBhZ2UgKTsKKworICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRtbD48
Ym9keT4iIFwKKyAgICAgICAgIjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQxJyBzdHlsZT0n
Zm9udC0tZmFtaWx5OiBzZXJpZicgdmFsdWU9JycgbWF4bGVuZ3RoPScyMCcvPjxicj4iIFwKKyAg
ICAgICAgIjxjYW52YXMgaWQ9J2NhbnZhczEnIHdpZHRoPSc1MDAnIGhlaWdodD0nNTAwJz48L2Nh
bnZhcz4iIFwKKyAgICAgICAgIjxpbnB1dCB0eXBlPSdwYXNzd29yZCcvPjxicj4iIFwKKyAgICAg
ICAgIjxjYW52YXMgaWQ9J2NhbnZhczInIHdpZHRoPSc1MDAnIGhlaWdodD0nNTAwJz48L2NhbnZh
cz4iIFwKKyAgICAgICAgIjwvYm9keT48L2h0bWw+Iik7CisKKyAgICBwYWdlLT5tYWluRnJhbWUo
KS0+c2V0Rm9jdXMoKTsKKworICAgIFFWYXJpYW50IGluaXRpYWxNaWNyb0ZvY3VzID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1NaWNyb0ZvY3VzKTsKKyAgICBRVkVSSUZZKGluaXRpYWxN
aWNyb0ZvY3VzLmlzVmFsaWQoKSk7CisKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+c2Nyb2xsKDAs
NTApOworCisgICAgUVZhcmlhbnQgY3VycmVudE1pY3JvRm9jdXMgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbU1pY3JvRm9jdXMpOworICAgIFFWRVJJRlkoY3VycmVudE1pY3JvRm9jdXMu
aXNWYWxpZCgpKTsKKworICAgIFFDT01QQVJFKGluaXRpYWxNaWNyb0ZvY3VzLnRvUmVjdCgpLnRy
YW5zbGF0ZWQoUVBvaW50KDAsLTUwKSksIGN1cnJlbnRNaWNyb0ZvY3VzLnRvUmVjdCgpKTsKK30K
Kwordm9pZCB0c3RfUVdlYlZpZXc6OmZvY3VzSW5wdXRUeXBlcygpCit7CisgICAgUVdlYlZpZXcg
d2ViVmlldzsKKyAgICB3ZWJWaWV3LnNob3coKTsKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dF
eHBvc2VkKCZ3ZWJWaWV3KTsKKworICAgIFFVcmwgdXJsKCJxcmM6Ly8vcmVzb3VyY2VzL2lucHV0
X3R5cGVzLmh0bWwiKTsKKyAgICBRV2ViRnJhbWUqIGNvbnN0IG1haW5GcmFtZSA9IHdlYlZpZXcu
cGFnZSgpLT5tYWluRnJhbWUoKTsKKyAgICBtYWluRnJhbWUtPmxvYWQodXJsKTsKKyAgICBtYWlu
RnJhbWUtPnNldEZvY3VzKCk7CisKKyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwoJndlYlZpZXcs
IFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKSk7CisKKyAgICAvLyAndGV4dCcgdHlwZQorICAg
IFFXZWJFbGVtZW50IGlucHV0RWxlbWVudCA9IG1haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCku
ZmluZEZpcnN0KFFMYXRpbjFTdHJpbmcoImlucHV0W3R5cGU9dGV4dF0iKSk7CisgICAgUVRlc3Q6
Om1vdXNlQ2xpY2soJndlYlZpZXcsIFF0OjpMZWZ0QnV0dG9uLCAwLCBpbnB1dEVsZW1lbnQuZ2Vv
bWV0cnkoKS5jZW50ZXIoKSk7CisgICAgUVZFUklGWSh3ZWJWaWV3LmlucHV0TWV0aG9kSGludHMo
KSA9PSBRdDo6SW1oTm9uZSk7CisgICAgUVZFUklGWSh3ZWJWaWV3LnRlc3RBdHRyaWJ1dGUoUXQ6
OldBX0lucHV0TWV0aG9kRW5hYmxlZCkpOworCisgICAgLy8gJ3Bhc3N3b3JkJyBmaWVsZAorICAg
IGlucHV0RWxlbWVudCA9IG1haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZpcnN0KFFM
YXRpbjFTdHJpbmcoImlucHV0W3R5cGU9cGFzc3dvcmRdIikpOworICAgIFFUZXN0Ojptb3VzZUNs
aWNrKCZ3ZWJWaWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwgaW5wdXRFbGVtZW50Lmdlb21ldHJ5KCku
Y2VudGVyKCkpOworICAgIFZFUklGWV9JTlBVVE1FVEhPRF9ISU5UUyh3ZWJWaWV3LmlucHV0TWV0
aG9kSGludHMoKSwgUXQ6OkltaEhpZGRlblRleHQpOworICAgIFFWRVJJRlkod2ViVmlldy50ZXN0
QXR0cmlidXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJsZWQpKTsKKworICAgIC8vICd0ZWwnIGZp
ZWxkCisgICAgaW5wdXRFbGVtZW50ID0gbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKS5maW5k
Rmlyc3QoUUxhdGluMVN0cmluZygiaW5wdXRbdHlwZT10ZWxdIikpOworICAgIFFUZXN0Ojptb3Vz
ZUNsaWNrKCZ3ZWJWaWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwgaW5wdXRFbGVtZW50Lmdlb21ldHJ5
KCkuY2VudGVyKCkpOworICAgIFZFUklGWV9JTlBVVE1FVEhPRF9ISU5UUyh3ZWJWaWV3LmlucHV0
TWV0aG9kSGludHMoKSwgUXQ6OkltaERpYWxhYmxlQ2hhcmFjdGVyc09ubHkpOworICAgIFFWRVJJ
Rlkod2ViVmlldy50ZXN0QXR0cmlidXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJsZWQpKTsKKwor
ICAgIC8vICdudW1iZXInIGZpZWxkCisgICAgaW5wdXRFbGVtZW50ID0gbWFpbkZyYW1lLT5kb2N1
bWVudEVsZW1lbnQoKS5maW5kRmlyc3QoUUxhdGluMVN0cmluZygiaW5wdXRbdHlwZT1udW1iZXJd
IikpOworICAgIFFUZXN0Ojptb3VzZUNsaWNrKCZ3ZWJWaWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwg
aW5wdXRFbGVtZW50Lmdlb21ldHJ5KCkuY2VudGVyKCkpOworICAgIFZFUklGWV9JTlBVVE1FVEhP
RF9ISU5UUyh3ZWJWaWV3LmlucHV0TWV0aG9kSGludHMoKSwgUXQ6OkltaERpZ2l0c09ubHkpOwor
ICAgIFFWRVJJRlkod2ViVmlldy50ZXN0QXR0cmlidXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJs
ZWQpKTsKKworICAgIC8vICdlbWFpbCcgZmllbGQKKyAgICBpbnB1dEVsZW1lbnQgPSBtYWluRnJh
bWUtPmRvY3VtZW50RWxlbWVudCgpLmZpbmRGaXJzdChRTGF0aW4xU3RyaW5nKCJpbnB1dFt0eXBl
PWVtYWlsXSIpKTsKKyAgICBRVGVzdDo6bW91c2VDbGljaygmd2ViVmlldywgUXQ6OkxlZnRCdXR0
b24sIDAsIGlucHV0RWxlbWVudC5nZW9tZXRyeSgpLmNlbnRlcigpKTsKKyAgICBWRVJJRllfSU5Q
VVRNRVRIT0RfSElOVFMod2ViVmlldy5pbnB1dE1ldGhvZEhpbnRzKCksIFF0OjpJbWhFbWFpbENo
YXJhY3RlcnNPbmx5KTsKKyAgICBRVkVSSUZZKHdlYlZpZXcudGVzdEF0dHJpYnV0ZShRdDo6V0Ff
SW5wdXRNZXRob2RFbmFibGVkKSk7CisKKyAgICAvLyAndXJsJyBmaWVsZAorICAgIGlucHV0RWxl
bWVudCA9IG1haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZpcnN0KFFMYXRpbjFTdHJp
bmcoImlucHV0W3R5cGU9dXJsXSIpKTsKKyAgICBRVGVzdDo6bW91c2VDbGljaygmd2ViVmlldywg
UXQ6OkxlZnRCdXR0b24sIDAsIGlucHV0RWxlbWVudC5nZW9tZXRyeSgpLmNlbnRlcigpKTsKKyAg
ICBWRVJJRllfSU5QVVRNRVRIT0RfSElOVFMod2ViVmlldy5pbnB1dE1ldGhvZEhpbnRzKCksIFF0
OjpJbWhVcmxDaGFyYWN0ZXJzT25seSk7CisgICAgUVZFUklGWSh3ZWJWaWV3LnRlc3RBdHRyaWJ1
dGUoUXQ6OldBX0lucHV0TWV0aG9kRW5hYmxlZCkpOworCisgICAgLy8gJ3Bhc3N3b3JkJyBmaWVs
ZAorICAgIGlucHV0RWxlbWVudCA9IG1haW5GcmFtZS0+ZG9jdW1lbnRFbGVtZW50KCkuZmluZEZp
cnN0KFFMYXRpbjFTdHJpbmcoImlucHV0W3R5cGU9cGFzc3dvcmRdIikpOworICAgIFFUZXN0Ojpt
b3VzZUNsaWNrKCZ3ZWJWaWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwgaW5wdXRFbGVtZW50Lmdlb21l
dHJ5KCkuY2VudGVyKCkpOworICAgIFZFUklGWV9JTlBVVE1FVEhPRF9ISU5UUyh3ZWJWaWV3Lmlu
cHV0TWV0aG9kSGludHMoKSwgUXQ6OkltaEhpZGRlblRleHQpOworICAgIFFWRVJJRlkod2ViVmll
dy50ZXN0QXR0cmlidXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJsZWQpKTsKKworICAgIC8vICd0
ZXh0JyB0eXBlCisgICAgaW5wdXRFbGVtZW50ID0gbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQo
KS5maW5kRmlyc3QoUUxhdGluMVN0cmluZygiaW5wdXRbdHlwZT10ZXh0XSIpKTsKKyAgICBRVGVz
dDo6bW91c2VDbGljaygmd2ViVmlldywgUXQ6OkxlZnRCdXR0b24sIDAsIGlucHV0RWxlbWVudC5n
ZW9tZXRyeSgpLmNlbnRlcigpKTsKKyAgICBRVkVSSUZZKHdlYlZpZXcuaW5wdXRNZXRob2RIaW50
cygpID09IFF0OjpJbWhOb25lKTsKKyAgICBRVkVSSUZZKHdlYlZpZXcudGVzdEF0dHJpYnV0ZShR
dDo6V0FfSW5wdXRNZXRob2RFbmFibGVkKSk7CisKKyAgICAvLyAncGFzc3dvcmQnIGZpZWxkCisg
ICAgaW5wdXRFbGVtZW50ID0gbWFpbkZyYW1lLT5kb2N1bWVudEVsZW1lbnQoKS5maW5kRmlyc3Qo
UUxhdGluMVN0cmluZygiaW5wdXRbdHlwZT1wYXNzd29yZF0iKSk7CisgICAgUVRlc3Q6Om1vdXNl
Q2xpY2soJndlYlZpZXcsIFF0OjpMZWZ0QnV0dG9uLCAwLCBpbnB1dEVsZW1lbnQuZ2VvbWV0cnko
KS5jZW50ZXIoKSk7CisgICAgVkVSSUZZX0lOUFVUTUVUSE9EX0hJTlRTKHdlYlZpZXcuaW5wdXRN
ZXRob2RIaW50cygpLCBRdDo6SW1oSGlkZGVuVGV4dCk7CisgICAgUVZFUklGWSh3ZWJWaWV3LnRl
c3RBdHRyaWJ1dGUoUXQ6OldBX0lucHV0TWV0aG9kRW5hYmxlZCkpOworCisgICAgLy8gJ3RleHQg
YXJlYScgZmllbGQKKyAgICBpbnB1dEVsZW1lbnQgPSBtYWluRnJhbWUtPmRvY3VtZW50RWxlbWVu
dCgpLmZpbmRGaXJzdChRTGF0aW4xU3RyaW5nKCJ0ZXh0YXJlYSIpKTsKKyAgICBRVGVzdDo6bW91
c2VDbGljaygmd2ViVmlldywgUXQ6OkxlZnRCdXR0b24sIDAsIGlucHV0RWxlbWVudC5nZW9tZXRy
eSgpLmNlbnRlcigpKTsKKyAgICBRVkVSSUZZKHdlYlZpZXcuaW5wdXRNZXRob2RIaW50cygpID09
IFF0OjpJbWhOb25lKTsKKyAgICBRVkVSSUZZKHdlYlZpZXcudGVzdEF0dHJpYnV0ZShRdDo6V0Ff
SW5wdXRNZXRob2RFbmFibGVkKSk7Cit9CisKK3ZvaWQgdHN0X1FXZWJWaWV3Ojpob3Jpem9udGFs
U2Nyb2xsYmFyVGVzdCgpCit7CisgICAgUVdlYlZpZXcgd2ViVmlldzsKKyAgICB3ZWJWaWV3LnJl
c2l6ZSg2MDAsIDYwMCk7CisgICAgd2ViVmlldy5zaG93KCk7CisgICAgUVRlc3Q6OnFXYWl0Rm9y
V2luZG93RXhwb3NlZCgmd2ViVmlldyk7CisKKyAgICBRVXJsIHVybCgicXJjOi8vL3Jlc291cmNl
cy9zY3JvbGx0ZXN0X3BhZ2UuaHRtbCIpOworICAgIFFXZWJGcmFtZSogY29uc3QgbWFpbkZyYW1l
ID0gd2ViVmlldy5wYWdlKCktPm1haW5GcmFtZSgpOworICAgIG1haW5GcmFtZS0+bG9hZCh1cmwp
OworICAgIG1haW5GcmFtZS0+c2V0Rm9jdXMoKTsKKworICAgIFFWRVJJRlkod2FpdEZvclNpZ25h
bCgmd2ViVmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKworICAgIFFWRVJJRlko
d2ViVmlldy5wYWdlKCktPm1haW5GcmFtZSgpLT5zY3JvbGxQb3NpdGlvbigpID09IFFQb2ludCgw
LCAwKSk7CisKKyAgICAvLyBOb3RlOiBUaGUgdGVzdCBiZWxvdyBhc3N1bWVzIHRoYXQgdGhlIGxh
eW91dCBkaXJlY3Rpb24gaXMgUXQ6OkxlZnRUb1JpZ2h0LgorICAgIFFUZXN0Ojptb3VzZUNsaWNr
KCZ3ZWJWaWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwgUVBvaW50KDU1MCwgNTk1KSk7CisgICAgUVZF
UklGWSh3ZWJWaWV3LnBhZ2UoKS0+bWFpbkZyYW1lKCktPnNjcm9sbFBvc2l0aW9uKCkueCgpID4g
MCk7CisKKyAgICAvLyBOb3RlOiBUaGUgdGVzdCBiZWxvdyBhc3N1bWVzIHRoYXQgdGhlIGxheW91
dCBkaXJlY3Rpb24gaXMgUXQ6OkxlZnRUb1JpZ2h0LgorICAgIFFUZXN0Ojptb3VzZUNsaWNrKCZ3
ZWJWaWV3LCBRdDo6TGVmdEJ1dHRvbiwgMCwgUVBvaW50KDIwLCA1OTUpKTsKKyAgICBRVkVSSUZZ
KHdlYlZpZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+c2Nyb2xsUG9zaXRpb24oKSA9PSBRUG9pbnQo
MCwgMCkpOworfQorCisKKyNpZiAhKGRlZmluZWQoV1RGX1VTRV9RVF9NT0JJTEVfVEhFTUUpICYm
IFdURl9VU0VfUVRfTU9CSUxFX1RIRU1FKQordm9pZCB0c3RfUVdlYlZpZXc6OnNldFBhbGV0dGVf
ZGF0YSgpCit7CisgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigiYWN0aXZlIik7CisgICAgUVRl
c3Q6OmFkZENvbHVtbjxib29sPigiYmFja2dyb3VuZCIpOworICAgIFFUZXN0OjpuZXdSb3coImFj
dGl2ZUJHIikgPDwgdHJ1ZSA8PCB0cnVlOworICAgIFFUZXN0OjpuZXdSb3coImFjdGl2ZUZHIikg
PDwgdHJ1ZSA8PCBmYWxzZTsKKyAgICBRVGVzdDo6bmV3Um93KCJpbmFjdGl2ZUJHIikgPDwgZmFs
c2UgPDwgdHJ1ZTsKKyAgICBRVGVzdDo6bmV3Um93KCJpbmFjdGl2ZUZHIikgPDwgZmFsc2UgPDwg
ZmFsc2U7Cit9CisKKy8vIFJlbmRlciBhIFFXZWJWaWV3IHRvIGEgUUltYWdlIHR3aWNlLCBlYWNo
IHRpbWUgd2l0aCBhIGRpZmZlcmVudCBwYWxldHRlIHNldCwKKy8vIHZlcmlmeSB0aGF0IGltYWdl
cyByZW5kZXJlZCBhcmUgbm90IHRoZSBzYW1lLCBjb25maXJtaW5nIFdlYkNvcmUgdXNhZ2Ugb2YK
Ky8vIGN1c3RvbSBwYWxldHRlIG9uIHNlbGVjdGlvbnMuCit2b2lkIHRzdF9RV2ViVmlldzo6c2V0
UGFsZXR0ZSgpCit7CisgICAgUVN0cmluZyBodG1sID0gIjxodG1sPjxoZWFkPjwvaGVhZD4iCisg
ICAgICAgICAgICAgICAgICAgIjxib2R5PiIKKyAgICAgICAgICAgICAgICAgICAiU29tZSB0ZXh0
IGhlcmUiCisgICAgICAgICAgICAgICAgICAgIjwvYm9keT4iCisgICAgICAgICAgICAgICAgICAg
IjwvaHRtbD4iOworCisgICAgUUZFVENIKGJvb2wsIGFjdGl2ZSk7CisgICAgUUZFVENIKGJvb2ws
IGJhY2tncm91bmQpOworCisgICAgUVdpZGdldCogYWN0aXZlVmlldyA9IDA7CisKKyAgICAvLyBV
c2UgY29udHJvbFZpZXcgdG8gbWFuYWdlIGFjdGl2ZS9pbmFjdGl2ZSBzdGF0ZSBvZiB0ZXN0IHZp
ZXdzIGJ5IHJhaXNpbmcKKyAgICAvLyBvciBsb3dlcmluZyB0aGVpciBwb3NpdGlvbiBpbiB0aGUg
d2luZG93IHN0YWNrLgorICAgIFFXZWJWaWV3IGNvbnRyb2xWaWV3OworICAgIGNvbnRyb2xWaWV3
LnNldEh0bWwoaHRtbCk7CisKKyAgICBRV2ViVmlldyB2aWV3MTsKKworICAgIFFQYWxldHRlIHBh
bGV0dGUxOworICAgIFFCcnVzaCBicnVzaDEoUXQ6OnJlZCk7CisgICAgYnJ1c2gxLnNldFN0eWxl
KFF0OjpTb2xpZFBhdHRlcm4pOworICAgIGlmIChhY3RpdmUgJiYgYmFja2dyb3VuZCkgeworICAg
ICAgICAvLyBSZW5kZXJlZCBpbWFnZSBtdXN0IGhhdmUgcmVkIGJhY2tncm91bmQgb24gYW4gYWN0
aXZlIFFXZWJWaWV3LgorICAgICAgICBwYWxldHRlMS5zZXRCcnVzaChRUGFsZXR0ZTo6QWN0aXZl
LCBRUGFsZXR0ZTo6SGlnaGxpZ2h0LCBicnVzaDEpOworICAgIH0gZWxzZSBpZiAoYWN0aXZlICYm
ICFiYWNrZ3JvdW5kKSB7CisgICAgICAgIC8vIFJlbmRlcmVkIGltYWdlIG11c3QgaGF2ZSByZWQg
Zm9yZWdyb3VuZCBvbiBhbiBhY3RpdmUgUVdlYlZpZXcuCisgICAgICAgIHBhbGV0dGUxLnNldEJy
dXNoKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHRlZFRleHQsIGJydXNoMSk7
CisgICAgfSBlbHNlIGlmICghYWN0aXZlICYmIGJhY2tncm91bmQpIHsKKyAgICAgICAgLy8gUmVu
ZGVyZWQgaW1hZ2UgbXVzdCBoYXZlIHJlZCBiYWNrZ3JvdW5kIG9uIGFuIGluYWN0aXZlIFFXZWJW
aWV3LgorICAgICAgICBwYWxldHRlMS5zZXRCcnVzaChRUGFsZXR0ZTo6SW5hY3RpdmUsIFFQYWxl
dHRlOjpIaWdobGlnaHQsIGJydXNoMSk7CisgICAgfSBlbHNlIGlmICghYWN0aXZlICYmICFiYWNr
Z3JvdW5kKSB7CisgICAgICAgIC8vIFJlbmRlcmVkIGltYWdlIG11c3QgaGF2ZSByZWQgZm9yZWdy
b3VuZCBvbiBhbiBpbmFjdGl2ZSBRV2ViVmlldy4KKyAgICAgICAgcGFsZXR0ZTEuc2V0QnJ1c2go
UVBhbGV0dGU6OkluYWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0LCBicnVzaDEpOwor
ICAgIH0KKworICAgIHZpZXcxLnNldFBhbGV0dGUocGFsZXR0ZTEpOworICAgIHZpZXcxLnNldEh0
bWwoaHRtbCk7CisgICAgdmlldzEucGFnZSgpLT5zZXRWaWV3cG9ydFNpemUodmlldzEucGFnZSgp
LT5jdXJyZW50RnJhbWUoKS0+Y29udGVudHNTaXplKCkpOworICAgIHZpZXcxLnNob3coKTsKKwor
ICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcxKTsKKworICAgIGlmICghYWN0
aXZlKSB7CisgICAgICAgIGNvbnRyb2xWaWV3LnNob3coKTsKKyAgICAgICAgUVRlc3Q6OnFXYWl0
Rm9yV2luZG93RXhwb3NlZCgmY29udHJvbFZpZXcpOworICAgICAgICBhY3RpdmVWaWV3ID0gJmNv
bnRyb2xWaWV3OworICAgICAgICBjb250cm9sVmlldy5hY3RpdmF0ZVdpbmRvdygpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHZpZXcxLmFjdGl2YXRlV2luZG93KCk7CisgICAgICAgIGFjdGl2ZVZp
ZXcgPSAmdmlldzE7CisgICAgfQorCisgICAgUVRSWV9DT01QQVJFKFFBcHBsaWNhdGlvbjo6YWN0
aXZlV2luZG93KCksIGFjdGl2ZVZpZXcpOworCisgICAgdmlldzEucGFnZSgpLT50cmlnZ2VyQWN0
aW9uKFFXZWJQYWdlOjpTZWxlY3RBbGwpOworCisgICAgUUltYWdlIGltZzEodmlldzEucGFnZSgp
LT52aWV3cG9ydFNpemUoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBRUGFpbnRlciBw
YWludGVyMSgmaW1nMSk7CisgICAgdmlldzEucGFnZSgpLT5jdXJyZW50RnJhbWUoKS0+cmVuZGVy
KCZwYWludGVyMSk7CisgICAgcGFpbnRlcjEuZW5kKCk7CisgICAgdmlldzEuY2xvc2UoKTsKKyAg
ICBjb250cm9sVmlldy5jbG9zZSgpOworCisgICAgUVdlYlZpZXcgdmlldzI7CisKKyAgICBRUGFs
ZXR0ZSBwYWxldHRlMjsKKyAgICBRQnJ1c2ggYnJ1c2gyKFF0OjpibHVlKTsKKyAgICBicnVzaDIu
c2V0U3R5bGUoUXQ6OlNvbGlkUGF0dGVybik7CisgICAgaWYgKGFjdGl2ZSAmJiBiYWNrZ3JvdW5k
KSB7CisgICAgICAgIC8vIFJlbmRlcmVkIGltYWdlIG11c3QgaGF2ZSBibHVlIGJhY2tncm91bmQg
b24gYW4gYWN0aXZlIFFXZWJWaWV3LgorICAgICAgICBwYWxldHRlMi5zZXRCcnVzaChRUGFsZXR0
ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0LCBicnVzaDIpOworICAgIH0gZWxzZSBpZiAo
YWN0aXZlICYmICFiYWNrZ3JvdW5kKSB7CisgICAgICAgIC8vIFJlbmRlcmVkIGltYWdlIG11c3Qg
aGF2ZSBibHVlIGZvcmVncm91bmQgb24gYW4gYWN0aXZlIFFXZWJWaWV3LgorICAgICAgICBwYWxl
dHRlMi5zZXRCcnVzaChRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0
LCBicnVzaDIpOworICAgIH0gZWxzZSBpZiAoIWFjdGl2ZSAmJiBiYWNrZ3JvdW5kKSB7CisgICAg
ICAgIC8vIFJlbmRlcmVkIGltYWdlIG11c3QgaGF2ZSBibHVlIGJhY2tncm91bmQgb24gYW4gaW5h
Y3RpdmUgUVdlYlZpZXcuCisgICAgICAgIHBhbGV0dGUyLnNldEJydXNoKFFQYWxldHRlOjpJbmFj
dGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodCwgYnJ1c2gyKTsKKyAgICB9IGVsc2UgaWYgKCFhY3Rp
dmUgJiYgIWJhY2tncm91bmQpIHsKKyAgICAgICAgLy8gUmVuZGVyZWQgaW1hZ2UgbXVzdCBoYXZl
IGJsdWUgZm9yZWdyb3VuZCBvbiBhbiBpbmFjdGl2ZSBRV2ViVmlldy4KKyAgICAgICAgcGFsZXR0
ZTIuc2V0QnJ1c2goUVBhbGV0dGU6OkluYWN0aXZlLCBRUGFsZXR0ZTo6SGlnaGxpZ2h0ZWRUZXh0
LCBicnVzaDIpOworICAgIH0KKworICAgIHZpZXcyLnNldFBhbGV0dGUocGFsZXR0ZTIpOworICAg
IHZpZXcyLnNldEh0bWwoaHRtbCk7CisgICAgdmlldzIucGFnZSgpLT5zZXRWaWV3cG9ydFNpemUo
dmlldzIucGFnZSgpLT5jdXJyZW50RnJhbWUoKS0+Y29udGVudHNTaXplKCkpOworICAgIHZpZXcy
LnNob3coKTsKKworICAgIFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXcyKTsKKwor
ICAgIGlmICghYWN0aXZlKSB7CisgICAgICAgIGNvbnRyb2xWaWV3LnNob3coKTsKKyAgICAgICAg
UVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmY29udHJvbFZpZXcpOworICAgICAgICBhY3Rp
dmVWaWV3ID0gJmNvbnRyb2xWaWV3OworICAgICAgICBjb250cm9sVmlldy5hY3RpdmF0ZVdpbmRv
dygpOworICAgIH0gZWxzZSB7CisgICAgICAgIHZpZXcyLmFjdGl2YXRlV2luZG93KCk7CisgICAg
ICAgIGFjdGl2ZVZpZXcgPSAmdmlldzI7CisgICAgfQorCisgICAgUVRSWV9DT01QQVJFKFFBcHBs
aWNhdGlvbjo6YWN0aXZlV2luZG93KCksIGFjdGl2ZVZpZXcpOworCisgICAgdmlldzIucGFnZSgp
LT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTZWxlY3RBbGwpOworCisgICAgUUltYWdlIGltZzIo
dmlldzIucGFnZSgpLT52aWV3cG9ydFNpemUoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAg
ICBRUGFpbnRlciBwYWludGVyMigmaW1nMik7CisgICAgdmlldzIucGFnZSgpLT5jdXJyZW50RnJh
bWUoKS0+cmVuZGVyKCZwYWludGVyMik7CisgICAgcGFpbnRlcjIuZW5kKCk7CisKKyAgICB2aWV3
Mi5jbG9zZSgpOworICAgIGNvbnRyb2xWaWV3LmNsb3NlKCk7CisKKyAgICBRVkVSSUZZKGltZzEg
IT0gaW1nMik7Cit9CisjZW5kaWYKKwordm9pZCB0c3RfUVdlYlZpZXc6OnJlbmRlcmluZ0FmdGVy
TWF4QW5kQmFjaygpCit7CisgICAgUVVybCB1cmwgPSBRVXJsKCJkYXRhOnRleHQvaHRtbCw8aHRt
bD48aGVhZD48L2hlYWQ+IgorICAgICAgICAgICAgICAgICAgICI8Ym9keSB3aWR0aD0xMDI0IGhl
aWdodD03NjggYmdjb2xvcj1yZWQ+IgorICAgICAgICAgICAgICAgICAgICI8L2JvZHk+IgorICAg
ICAgICAgICAgICAgICAgICI8L2h0bWw+Iik7CisKKyAgICBRV2ViVmlldyB2aWV3OworICAgIHZp
ZXcucGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZCh1cmwpOworICAgIFFWRVJJRlkod2FpdEZvclNp
Z25hbCgmdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpKTsKKyAgICB2aWV3LnNob3co
KTsKKworICAgIHZpZXcucGFnZSgpLT5zZXR0aW5ncygpLT5zZXRNYXhpbXVtUGFnZXNJbkNhY2hl
KDMpOworCisgICAgUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldyk7CisKKyAgICBR
UGl4bWFwIHJlZmVyZW5jZSh2aWV3LnBhZ2UoKS0+dmlld3BvcnRTaXplKCkpOworICAgIHJlZmVy
ZW5jZS5maWxsKFF0OjpyZWQpOworCisgICAgUVBpeG1hcCBpbWFnZSh2aWV3LnBhZ2UoKS0+dmll
d3BvcnRTaXplKCkpOworICAgIFFQYWludGVyIHBhaW50ZXIoJmltYWdlKTsKKyAgICB2aWV3LnBh
Z2UoKS0+Y3VycmVudEZyYW1lKCktPnJlbmRlcigmcGFpbnRlcik7CisKKyAgICBRQ09NUEFSRShp
bWFnZSwgcmVmZXJlbmNlKTsKKworICAgIFFVcmwgdXJsMiA9IFFVcmwoImRhdGE6dGV4dC9odG1s
LDxodG1sPjxoZWFkPjwvaGVhZD4iCisgICAgICAgICAgICAgICAgICAgICAiPGJvZHkgd2lkdGg9
MTAyNCBoZWlnaHQ9NzY4IGJnY29sb3I9Ymx1ZT4iCisgICAgICAgICAgICAgICAgICAgICAiPC9i
b2R5PiIKKyAgICAgICAgICAgICAgICAgICAgICI8L2h0bWw+Iik7CisgICAgdmlldy5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5sb2FkKHVybDIpOworCisgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKCZ2
aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSkpOworCisgICAgdmlldy5zaG93TWF4aW1p
emVkKCk7CisKKyAgICBRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3KTsKKworICAg
IFFQaXhtYXAgcmVmZXJlbmNlMih2aWV3LnBhZ2UoKS0+dmlld3BvcnRTaXplKCkpOworICAgIHJl
ZmVyZW5jZTIuZmlsbChRdDo6Ymx1ZSk7CisKKyAgICBRUGl4bWFwIGltYWdlMih2aWV3LnBhZ2Uo
KS0+dmlld3BvcnRTaXplKCkpOworICAgIFFQYWludGVyIHBhaW50ZXIyKCZpbWFnZTIpOworICAg
IHZpZXcucGFnZSgpLT5jdXJyZW50RnJhbWUoKS0+cmVuZGVyKCZwYWludGVyMik7CisKKyAgICBR
Q09NUEFSRShpbWFnZTIsIHJlZmVyZW5jZTIpOworCisgICAgdmlldy5iYWNrKCk7CisKKyAgICBR
UGl4bWFwIHJlZmVyZW5jZTModmlldy5wYWdlKCktPnZpZXdwb3J0U2l6ZSgpKTsKKyAgICByZWZl
cmVuY2UzLmZpbGwoUXQ6OnJlZCk7CisgICAgUVBpeG1hcCBpbWFnZTModmlldy5wYWdlKCktPnZp
ZXdwb3J0U2l6ZSgpKTsKKyAgICBRUGFpbnRlciBwYWludGVyMygmaW1hZ2UzKTsKKyAgICB2aWV3
LnBhZ2UoKS0+Y3VycmVudEZyYW1lKCktPnJlbmRlcigmcGFpbnRlcjMpOworCisgICAgUUNPTVBB
UkUoaW1hZ2UzLCByZWZlcmVuY2UzKTsKK30KKworUVRFU1RfTUFJTih0c3RfUVdlYlZpZXcpCisj
aW5jbHVkZSAidHN0X3F3ZWJ2aWV3Lm1vYyIKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xd2Vidmlldy90c3RfcXdlYnZpZXcucXJjIGIvU291cmNlL1dlYktpdC9xdC90ZXN0
cy9xd2Vidmlldy90c3RfcXdlYnZpZXcucXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmU0YjlhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJ2aWV3L3RzdF9xd2Vidmlldy5xcmMKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgUkND
PjxSQ0MgdmVyc2lvbj0iMS4wIj4KKzxxcmVzb3VyY2U+CisgICAgPGZpbGU+cmVzb3VyY2VzL2lu
ZGV4Lmh0bWw8L2ZpbGU+CisgICAgPGZpbGU+cmVzb3VyY2VzL2ZyYW1lX2EuaHRtbDwvZmlsZT4K
KyAgICA8ZmlsZT5yZXNvdXJjZXMvaW5wdXRfdHlwZXMuaHRtbDwvZmlsZT4KKyAgICA8ZmlsZT5y
ZXNvdXJjZXMvc2Nyb2xsdGVzdF9wYWdlLmh0bWw8L2ZpbGU+Cis8L3FyZXNvdXJjZT4KKzwvUkND
PgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3Jlc291cmNlcy9pbWFnZTIu
cG5nIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9yZXNvdXJjZXMvaW1hZ2UyLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDcwMzY0CkJpbmFyeSBmaWxlcyAvZGV2L251
bGwgYW5kIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9yZXNvdXJjZXMvaW1hZ2UyLnBuZyBkaWZm
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcmVzb3VyY2VzL3Rlc3Quc3dm
IGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy9yZXNvdXJjZXMvdGVzdC5zd2YKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk1Mjk4MgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcmVzb3VyY2VzL3Rlc3Quc3dmIGRpZmZlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC90ZXN0cy90ZXN0cy5wcmkgYi9Tb3VyY2UvV2ViS2l0
L3F0L3Rlc3RzL3Rlc3RzLnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i
NDg4MDYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC90ZXN0cy90ZXN0cy5w
cmkKQEAgLTAsMCArMSwyMiBAQAorVEVNUExBVEUgPSBhcHAKKworVlBBVEggKz0gJCRfUFJPX0ZJ
TEVfUFdEXworVEFSR0VUID0gdHN0XyQkVEFSR0VUCisKKyMgTG9hZCBtb2JpbGl0eWNvbmZpZyBp
ZiBRdCBNb2JpbGl0eSBpcyBhdmFpbGFibGUKK2xvYWQobW9iaWxpdHljb25maWcsIHRydWUpCitj
b250YWlucyhNT0JJTElUWV9DT05GSUcsIG11bHRpbWVkaWEpIHsKKyAgICAjIFRoaXMgZGVmaW5l
IGlzIHVzZWQgYnkgdGVzdHMgZGVwZW5kaW5nIG9uIFF0IE11bHRpbWVkaWEKKyAgICBERUZJTkVT
IC09IFdURl9VU0VfUVRfTVVMVElNRURJQT0wCisgICAgREVGSU5FUyArPSBXVEZfVVNFX1FUX01V
TFRJTUVESUE9MQorfQorCitTT1VSQ0VTICs9ICQke1RBUkdFVH0uY3BwCitJTkNMVURFUEFUSCAr
PSBcCisgICAgJCRQV0QgXAorICAgICQkUFdELy4uL0FwaQorCitRVCArPSB0ZXN0bGliIG5ldHdv
cmsgd2Via2l0d2lkZ2V0cyB3aWRnZXRzCisKKyMgVGhpcyBkZWZpbmUgaXMgdXNlZCBieSBzb21l
IHRlc3RzIHRvIGxvb2sgdXAgcmVzb3VyY2VzIGluIHRoZSBzb3VyY2UgdHJlZQorREVGSU5FUyAr
PSBURVNUU19TT1VSQ0VfRElSPVxcXCIkJFBXRC9cXFwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L3Rlc3RzL3V0aWwuaCBiL1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvdXRpbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MjVhYTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3V0aWwuaApAQCAtMCwwICsxLDgxIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworLy8gRnVuY3Rpb25zIGFuZCBtYWNyb3MgdGhhdCByZWFsbHkgbmVlZCB0byBi
ZSBpbiBRVGVzdExpYgorCisjaWYgMAorI3ByYWdtYSBxdF9ub19tYXN0ZXJfaW5jbHVkZQorI2Vu
ZGlmCisKKyNpbmNsdWRlIDxRRXZlbnRMb29wPgorI2luY2x1ZGUgPFFTaWduYWxTcHk+CisjaW5j
bHVkZSA8UVRpbWVyPgorCisjaWYgIWRlZmluZWQoVEVTVFNfU09VUkNFX0RJUikKKyNkZWZpbmUg
VEVTVFNfU09VUkNFX0RJUiAiIgorI2VuZGlmCisKKy8qKgorICogU3RhcnRzIGFuIGV2ZW50IGxv
b3AgdGhhdCBydW5zIHVudGlsIHRoZSBnaXZlbiBzaWduYWwgaXMgcmVjZWl2ZWQuCisgKiBPcHRp
b25hbGx5IHRoZSBldmVudCBsb29wCisgKiBjYW4gcmV0dXJuIGVhcmxpZXIgb24gYSB0aW1lb3V0
LgorICoKKyAqIFxyZXR1cm4gXHAgdHJ1ZSBpZiB0aGUgcmVxdWVzdGVkIHNpZ25hbCB3YXMgcmVj
ZWl2ZWQKKyAqICAgICAgICAgXHAgZmFsc2Ugb24gdGltZW91dAorICovCitzdGF0aWMgaW5saW5l
IGJvb2wgd2FpdEZvclNpZ25hbChRT2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIHNpZ25hbCwgaW50
IHRpbWVvdXQgPSAxMDAwMCkKK3sKKyAgICBRRXZlbnRMb29wIGxvb3A7CisgICAgUU9iamVjdDo6
Y29ubmVjdChvYmosIHNpZ25hbCwgJmxvb3AsIFNMT1QocXVpdCgpKSk7CisgICAgUVRpbWVyIHRp
bWVyOworICAgIFFTaWduYWxTcHkgdGltZW91dFNweSgmdGltZXIsIFNJR05BTCh0aW1lb3V0KCkp
KTsKKyAgICBpZiAodGltZW91dCA+IDApIHsKKyAgICAgICAgUU9iamVjdDo6Y29ubmVjdCgmdGlt
ZXIsIFNJR05BTCh0aW1lb3V0KCkpLCAmbG9vcCwgU0xPVChxdWl0KCkpKTsKKyAgICAgICAgdGlt
ZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAgICAgICAgdGltZXIuc3RhcnQodGltZW91dCk7Cisg
ICAgfQorICAgIGxvb3AuZXhlYygpOworICAgIHJldHVybiB0aW1lb3V0U3B5LmlzRW1wdHkoKTsK
K30KKworLyoqCisgKiBKdXN0IGxpa2UgUVNpZ25hbFNweSBidXQgZmFjaWxpdGF0ZXMgc3luYyBh
bmQgYXN5bmMKKyAqIHNpZ25hbCBlbWlzc2lvbi4gRm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgdG8g
dmVyaWZ5IHRoYXQKKyAqIHBhZ2UtPmZvbygpIGVtaXR0ZWQgYSBzaWduYWwsIGl0IGNvdWxkIGJl
IHRoYXQgdGhlCisgKiBpbXBsZW1lbnRhdGlvbiBkZWNpZGVzIHRvIGVtaXQgdGhlIHNpZ25hbCBh
c3luY2hyb25vdXNseQorICogLSBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gc3BpbiBhIGxvY2Fs
IGV2ZW50IGxvb3AgdW50aWwKKyAqIGVtaXNzaW9uIC0gb3IgdGhhdCB0aGUgY2FsbCB0byBmb28o
KSBlbWl0cyBpdCByaWdodCBhd2F5LgorICovCitjbGFzcyBTaWduYWxCYXJyaWVyIDogcHJpdmF0
ZSBRU2lnbmFsU3B5Cit7CitwdWJsaWM6CisgICAgU2lnbmFsQmFycmllcihjb25zdCBRT2JqZWN0
KiBvYmosIGNvbnN0IGNoYXIqIGFTaWduYWwpCisgICAgICAgIDogUVNpZ25hbFNweShvYmosIGFT
aWduYWwpCisgICAgeyB9CisKKyAgICBib29sIGVuc3VyZVNpZ25hbEVtaXR0ZWQoKQorICAgIHsK
KyAgICAgICAgYm9vbCByZXN1bHQgPSBjb3VudCgpID4gMDsKKyAgICAgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgICAgICByZXN1bHQgPSB3YWl0KCk7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorfTsKKworI2RlZmluZSBXX1FTS0lQKGEsIGIpIFFTS0lQ
KGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggY2M2Y2RlYS4uYWIxN2FlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzOSArMSwzIEBACi0yMDEzLTEwLTAyICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0Bh
cHBsZS5jb20+Ci0KLSAgICAgICAgW1dpbmRvd3NdIFVucmV2aWV3ZWQgYnVpbGQgZml4LgotCi0g
ICAgICAgICogV2ViU2NyaXB0V29ybGQuY3BwOgotICAgICAgICAoV2ViU2NyaXB0V29ybGQ6OmZp
bmRPckNyZWF0ZVdvcmxkKToKLQotMjAxMy0xMC0wMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgotCi0gICAgICAgIENUVEU6IERPTVdyYXBwZXJXb3JsZHMgc2hvdWxkIGJlIHBhc3NlZCBh
cm91bmQgYnkgcmVmZXJlbmNlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjIyMDYKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgot
Ci0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgotICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKToKLSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgotICAgICAgICAqIFdlYlNjcmlwdFdvcmxkLmNwcDoKLSAgICAgICAgKFdlYlNjcmlwdFdvcmxk
OjpzdGFuZGFyZFdvcmxkKToKLSAgICAgICAgKFdlYlNjcmlwdFdvcmxkOjpmaW5kT3JDcmVhdGVX
b3JsZCk6Ci0gICAgICAgICogV2ViU2NyaXB0V29ybGQuaDoKLSAgICAgICAgKFdlYlNjcmlwdFdv
cmxkOjp3b3JsZCk6Ci0KLTIwMTMtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KLQotICAgICAgICBJbXBsZW1lbnRlZCBjcmVhdGVXZWJWaWV3V2l0aFJl
cXVlc3QgaW4gV2luTGF1bmNoZXIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjIwNjkKLQotICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFt
LgotCi0gICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKLSAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKLSAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Ci0gICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKLSAgICAgICAgUGFzcyByZXF1ZXN0IHVybCBmcm9t
IHRoZSBOYXZpZ2F0aW9uQWN0aW9uIHRvIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdC4KLQogMjAx
My0wOS0zMCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5
IHRvIGZpeCB0aGUgV2luZG93cyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDNkZGYwZWUuLjlmMTljM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMTk0LDEzICsxOTQsMTQgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVydHlC
YWc+IGNyZWF0ZVdpbmRvd0ZlYXR1cmVzUHJvcGVydHlCYWcoY29uc3QgV2luZG93RmVhdHVyZXMK
ICAgICByZXR1cm4gQ09NUHRyPElQcm9wZXJ0eUJhZz4oQWRvcHRDT00sIENPTVByb3BlcnR5QmFn
PENPTVZhcmlhbnQ+OjphZG9wdChtYXApKTsKIH0KIAotUGFnZSogV2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0
aW9uKQorUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmIGZlYXR1cmVzLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJikKIHsKICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IGRlbGVnYXRl
ID0gdWlEZWxlZ2F0ZSgpOwogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgQ09NUHRyPFdlYk11dGFibGVVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRDT00oV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChuYXZpZ2F0
aW9uQWN0aW9uLnVybCgpKSkpOworICAgIC8vIEp1c3QgY3JlYXRlIGEgYmxhbmsgcmVxdWVzdCBi
ZWNhdXNlIGNyZWF0ZVdpbmRvdygpIGlzIG9ubHkgcmVxdWlyZWQgdG8gY3JlYXRlIHdpbmRvdyBi
dXQgbm90IHRvIGxvYWQgVVJMLgorICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJlcXVlc3Q+IHJl
cXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpKTsK
IAogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZVByaXZhdGUyPiBkZWxlZ2F0ZVByaXZhdGUoUXVl
cnksIGRlbGVnYXRlKTsKICAgICBpZiAoZGVsZWdhdGVQcml2YXRlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggZGM1YmQxZS4uMGNkZmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNTI5LDcg
KzUyOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KExh
eW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKICAgICB9CiB9CiAKLUZyYW1lKiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5h
dmlnYXRpb25BY3Rpb24pCitGcmFtZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3Jl
YXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCkBAIC01MzgsOCArNTM4LDcgQEAgRnJhbWUqIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgbmF2aWdhdGkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDT01QdHI8SVdlYlZpZXc+
IG5ld1dlYlZpZXc7Ci0gICAgQ09NUHRyPFdlYk11dGFibGVVUkxSZXF1ZXN0PiByZXF1ZXN0ID0g
YWRvcHRDT00oV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVx
dWVzdChuYXZpZ2F0aW9uQWN0aW9uLnVybCgpKSkpOwotICAgIGlmIChGQUlMRUQodWktPmNyZWF0
ZVdlYlZpZXdXaXRoUmVxdWVzdCh3ZWJWaWV3LCByZXF1ZXN0LmdldCgpLCAmbmV3V2ViVmlldykp
IHx8ICFuZXdXZWJWaWV3KQorICAgIGlmIChGQUlMRUQodWktPmNyZWF0ZVdlYlZpZXdXaXRoUmVx
dWVzdCh3ZWJWaWV3LCAwLCAmbmV3V2ViVmlldykpKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IENPTVB0cjxJV2ViRnJhbWU+IG1haW5GcmFtZTsKQEAgLTEyNjIsNyArMTI2MSw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpCiB7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHdv
cmxkKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIEFT
U0VSVChjb3JlRnJhbWUpOwpAQCAtMTI3OSw3ICsxMjc4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldv
cmxkJgogICAgIGlmIChkZWxlZ2F0ZVByaXZhdGUgJiYgZGVsZWdhdGVQcml2YXRlLT5kaWRDbGVh
cldpbmRvd09iamVjdEZvckZyYW1lSW5TY3JpcHRXb3JsZCh3ZWJWaWV3LCBtX3dlYkZyYW1lLCBX
ZWJTY3JpcHRXb3JsZDo6ZmluZE9yQ3JlYXRlV29ybGQod29ybGQpLmdldCgpKSAhPSBFX05PVElN
UEwpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgmd29ybGQgIT0gJm1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKQorICAgIGlmICh3b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSB0b1JlZihjb3JlRnJh
bWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdCh3b3JsZCktPmdsb2JhbEV4ZWMoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA1MWI2MmQ2Li5hZTQyOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTE4OCw3ICsx
ODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBv
YmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29y
bGQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxl
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24o
KSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViU2Ny
aXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCmluZGV4
IDg3YzYyYjAuLjAxYmVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlNjcmlw
dFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCiAKIFdlYlNj
cmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRXb3JsZCgpCiB7Ci0gICAgc3RhdGlj
IFdlYlNjcmlwdFdvcmxkKiBzdGFuZGFyZFdvcmxkID0gY3JlYXRlSW5zdGFuY2UoJm1haW5UaHJl
YWROb3JtYWxXb3JsZCgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFdlYlNjcmlwdFdvcmxkKiBz
dGFuZGFyZFdvcmxkID0gY3JlYXRlSW5zdGFuY2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLmxl
YWtSZWYoKTsKICAgICByZXR1cm4gc3RhbmRhcmRXb3JsZDsKIH0KIApAQCAtNzcsMTUgKzc3LDE1
IEBAIENPTVB0cjxXZWJTY3JpcHRXb3JsZD4gV2ViU2NyaXB0V29ybGQ6OmNyZWF0ZUluc3RhbmNl
KFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkCiAgICAgcmV0dXJuIG5ldyBXZWJTY3JpcHRXb3Js
ZCh3b3JsZCk7CiB9CiAKLUNPTVB0cjxXZWJTY3JpcHRXb3JsZD4gV2ViU2NyaXB0V29ybGQ6OmZp
bmRPckNyZWF0ZVdvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCitDT01QdHI8V2ViU2NyaXB0
V29ybGQ+IFdlYlNjcmlwdFdvcmxkOjpmaW5kT3JDcmVhdGVXb3JsZChET01XcmFwcGVyV29ybGQq
IHdvcmxkKQogewotICAgIGlmICgmd29ybGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQor
ICAgIGlmICh3b3JsZCA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAgICAgcmV0dXJu
IHN0YW5kYXJkV29ybGQoKTsKIAotICAgIGlmIChXZWJTY3JpcHRXb3JsZCogZXhpc3RpbmdXb3Js
ZCA9IGFsbFdvcmxkcygpLmdldCgmd29ybGQpKQorICAgIGlmIChXZWJTY3JpcHRXb3JsZCogZXhp
c3RpbmdXb3JsZCA9IGFsbFdvcmxkcygpLmdldCh3b3JsZCkpCiAgICAgICAgIHJldHVybiBleGlz
dGluZ1dvcmxkOwogCi0gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKCZ3b3JsZCk7CisgICAgcmV0
dXJuIGNyZWF0ZUluc3RhbmNlKHdvcmxkKTsKIH0KIAogVUxPTkcgV2ViU2NyaXB0V29ybGQ6OkFk
ZFJlZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5oIGIv
U291cmNlL1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuaAppbmRleCAxNDg1YjhlLi40YjBmYTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmgKQEAgLTM4LDEyICszOCwxMiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFdlYlNjcmlwdFdvcmxkKiBzdGFuZGFyZFdvcmxkKCk7CiAgICAgc3Rh
dGljIENPTVB0cjxXZWJTY3JpcHRXb3JsZD4gY3JlYXRlSW5zdGFuY2UoKTsKIAotICAgIHN0YXRp
YyBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IGZpbmRPckNyZWF0ZVdvcmxkKFdlYkNvcmU6OkRPTVdy
YXBwZXJXb3JsZCYpOworICAgIHN0YXRpYyBDT01QdHI8V2ViU2NyaXB0V29ybGQ+IGZpbmRPckNy
ZWF0ZVdvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogCiAgICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhP
RENBTExUWVBFIFJlbGVhc2UoKTsKIAotICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYgd29y
bGQoKSBjb25zdCB7IHJldHVybiAqbV93b3JsZDsgfQorICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCogd29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgc3RhdGljIENPTVB0cjxXZWJTY3JpcHRXb3JsZD4gY3JlYXRlSW5zdGFuY2UoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXgg
M2JlNmMyOS4uOTk2ODA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMTQgKzEsMyBAQAot
MjAxMy0xMC0wMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgotCi0gICAgICAgIENUVEU6
IERPTVdyYXBwZXJXb3JsZHMgc2hvdWxkIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlCi0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIyMDYKLQot
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKToK
LSAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6Ci0KIDIw
MTMtMDktMzAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBXaW5DRSBidWlsZCBmaXggYWZ0ZXIgcjE1MzkyNy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuY3BwCmluZGV4IDIwMWI3YWIuLjE3MzgyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKERPTVdyYXBwZXJXb3JsZCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggNzVlNGU1
YS4uYjEwZjAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6Oldp
ZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29u
c3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92
ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpE
T01XcmFwcGVyV29ybGQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxh
YmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGUyNjNlOWMuLmViZTExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMTI3
ICsxLDMgQEAKLTIwMTMtMTAtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KLQotICAgICAgICBSZW1vdmUgUXQgY29kZSBmcm9tIFBsYXRmb3JtLwotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjQwCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29u
bmVjdGlvbi5oOgotICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuY3BwOgotICAgICAgICAqIFBs
YXRmb3JtL0xvZ2dpbmcuaDoKLSAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKLSAgICAgICAg
KiBQbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmg6Ci0gICAgICAgICogUGxhdGZv
cm0vU2hhcmVkTWVtb3J5Lmg6Ci0gICAgICAgICogUGxhdGZvcm0vV29ya1F1ZXVlLmg6Ci0gICAg
ICAgICogUGxhdGZvcm0vcXQvTG9nZ2luZ1F0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBQbGF0
Zm9ybS9xdC9Nb2R1bGVRdC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogUGxhdGZvcm0vcXQvV29y
a1F1ZXVlUXQuY3BwOiBSZW1vdmVkLgotCi0yMDEzLTEwLTAyICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgotCi0gICAgICAgIFttYWNdIFN0b3AgdXNpbmcgRHJhd2luZ0Fy
ZWFJbXBsIG9uIFBMQVRGT1JNKE1BQykgCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE4NTkKLSAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1MDY5MzU5
PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KLQotICAgICAgICBUaGUg
TWFjIHBvcnQgd2lsbCBub3cgdXNlIHRpbGVkIGRyYXdpbmcgZm9yIGFsbCBXZWJLaXQyIHZpZXdz
LgotCi0gICAgICAgICogU2hhcmVkL0RyYXdpbmdBcmVhSW5mby5oOgotICAgICAgICBEb24ndCBp
bmNsdWRlIERyYXdpbmdBcmVhVHlwZUltcGwgYXMgYSB2YWxpZCBEcmF3aW5nQXJlYVR5cGUgb24g
TWFjLgotCi0gICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgotICAgICAgICAo
LVtXS1ZpZXcgZHJhd1JlY3Q6XSk6Ci0gICAgICAgIFJlbW92ZSBvdXIgaW1wbGVtZW50YXRpb24g
b2YgZHJhd1JlY3QgdGhhdCBwYWludHMgZnJvbSBEcmF3aW5nQXJlYUltcGwncyBiYWNraW5nIHN0
b3JlLgotCi0gICAgICAgICgtW1dLVmlldyBfc2hvdWxkVXNlVGlsZWREcmF3aW5nQXJlYV0pOgot
ICAgICAgICBSZW1vdmVkLiBBbHdheXMgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIHRydWUsIG5vdy4K
LQotICAgICAgICAoLVtXS1ZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHldKToKLSAgICAgICAg
QWx3YXlzIGNyZWF0ZSBhIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkgbm93Lgot
Ci0gICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3VwUmVm
OnJlbGF0ZWRUb1BhZ2U6XSk6Ci0gICAgICAgICgtW1dLVmlldyB3YW50c1VwZGF0ZUxheWVyXSk6
Ci0gICAgICAgIFdLVmlldyBhbHdheXMgd2FudHMgYSBsYXllciwgZXRjLgotCi0gICAgICAgICog
VUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oOgotICAgICAgICBSZW1vdmUgTWFjLXNwZWNpZmljIEJh
Y2tpbmdTdG9yZSBjb2RlLCBvbmx5IHVzZWQgZm9yIERyYXdpbmdBcmVhSW1wbCBvbiBNYWMuCi0K
LSAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgotICAgICAgICBSZW1vdmUg
YW4gdW5uZWVkZWQgaW5jbHVkZS4KLQotICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvQmFja2luZ1N0
b3JlTWFjLm1tOiBSZW1vdmVkLgotICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKLSAgICAgICAgUmVtb3ZlIGEgYnVuY2ggb2YgZmlsZXMgd2UgZG9uJ3QgbmVlZCB0
byBidWlsZCBhbnltb3JlLgotCi0gICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcDoKLSAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6Ci0gICAgICAg
IE5ldmVyIGNyZWF0ZSBhIERyYXdpbmdBcmVhSW1wbCBvbiBNYWMuCi0KLSAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKLSAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWFJbXBsOjp1cGRhdGVQcmVmZXJlbmNlcyk6Ci0gICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhSW1wbDo6cmVzdW1lUGFpbnRpbmcpOgotICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYUltcGwuaDoKLSAgICAgICAgUmVtb3ZlIE1hYy1zcGVjaWZpYyBEcmF3aW5n
QXJlYUltcGwgY29kZS4KLQotICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0LmNwcDoKLSAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKToKLSAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMuaDogUmVtb3ZlZC4K
LSAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMubW06IFJl
bW92ZWQuCi0KLTIwMTMtMTAtMDIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgot
Ci0gICAgICAgIEZpeCB0aGUgTWFjIFdlYktpdDIgYnVpbGQgZm9sbG93aW5nIDxodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzkyNDE+Ci0gICAgICAgIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTk3KQotCi0gICAgICAgIFdlYkNvbnRleHRNYWMu
bW0gZmFpbHMgdG8gY29tcGlsZSB3aGVuIGJ1aWxkaW5nIHdpdGggbmV0d29yayBwcm9jZXNzIGRp
c2FibGVkLgotCi0gICAgICAgIFRoZSBjb25zdGFudHMgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRz
S2V5IGFuZCBXZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5LAotICAgICAgICBkZWZpbmVkIGlu
IFdlYkNvbnRleHRNYWMubW0sIHNob3VsZCBvbmx5IGJlIGRlZmluZWQgd2hlbiBidWlsZGluZyB3
aXRoIHRoZQotICAgICAgICBuZXR3b3JrIHByb2Nlc3MgZW5hYmxlZCBhcyB0aGVzZSBjb25zdGFu
dHMgYXJlIG9ubHkgcmVmZXJlbmNlZCBmcm9tCi0gICAgICAgIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpLWd1YXJkIGNvZGUuCi0KLSAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMu
bW06Ci0KLTIwMTMtMTAtMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KLQotICAgICAg
ICBDVFRFOiBET01XcmFwcGVyV29ybGRzIHNob3VsZCBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVy
ZW5jZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
MjA2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KLQotICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cDoKLSAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRD
bGVhcldpbmRvd09iamVjdEZvckZyYW1lKToKLSAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpnbG9iYWxPYmplY3RJc0F2YWlsYWJsZUZvckZyYW1lKToKLSAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oOgotICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZC5jcHA6Ci0gICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6OmdldE9yQ3JlYXRlKToKLSAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6bm9ybWFsV29ybGQpOgotICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpjb3JlV29ybGQpOgotICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oOgotICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKLSAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6d2lu
ZG93U2NyaXB0TlBPYmplY3QpOgotICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5F
bGVtZW50TlBPYmplY3QpOgotICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgotICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgotICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUp
OgotICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKLQotMjAxMy0xMC0wMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgotCi0gICAg
ICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyMjE5MD4gV2ViS2l0MiBBUElzIHJldHVybmluZyBD
RiBhbmQgTlMgdHlwZXMgc2hvdWxkIGV4cGxpY2l0bHkgZGVjbGFyZSB3aGV0aGVyIHRoZXkgcmV0
dXJuIHJldGFpbmVkIG9iamVjdHMuCi0KLSAgICAgICAgVGhpcyBtYWtlIHRoZSBBUElzIGVhc2ll
ciB0byB1c2UgdW5kZXIgQVJDIGFuZCBjYW4gaGVscCBvdXQgdGhlIHN0YXRpYyBhbmFseXplci4K
LQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvY2YvV0tFcnJvckNGLmg6Ci0gICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLU3Ry
aW5nQ0YuaDoKLSAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5oOgotICAgICAgICAq
IFNoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuaDoKLSAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFj
L1dLVVJMUmVxdWVzdE5TLmg6Ci0gICAgICAgICogU2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlc3Bv
bnNlTlMuaDoKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5o
OgotCiAyMDEzLTEwLTAxICBHYWJvciBBYnJhaGFtICA8YWJyaG1AaW5mLnUtc3plZ2VkLmh1Pgog
CiAgICAgICAgIFtRdF1bV0syXSBGaXggYnVpbGQgYWZ0ZXIgcjE1NjY4OC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKaW5kZXggYmE4MDA0MS4uYWUwMDJh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKQEAg
LTQ1LDkgKzQ1LDEzIEBACiAjaWYgSEFWRShYUEMpCiAjaW5jbHVkZSA8eHBjL3hwYy5oPgogI2Vu
ZGlmCisjZWxpZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVNvY2tl
dE5vdGlmaWVyOworUVRfRU5EX05BTUVTUEFDRQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIgogI2Vu
ZGlmCiAKQEAgLTEzNSw2ICsxMzksOCBAQCBwdWJsaWM6CiAKICNpZiBPUyhEQVJXSU4pCiAgICAg
dm9pZCBzZXRTaG91bGRDbG9zZUNvbm5lY3Rpb25Pbk1hY2hFeGNlcHRpb25zKCk7CisjZWxpZiBQ
TEFURk9STShRVCkKKyAgICB2b2lkIHNldFNob3VsZENsb3NlQ29ubmVjdGlvbk9uUHJvY2Vzc1Rl
cm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKGJvb2wpOwpAQCAtMzEyLDYgKzMxOCw5IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPGludD4gbV9maWxlRGVzY3JpcHRvcnM7CiAgICAgc2l6ZV90
IG1fZmlsZURlc2NyaXB0b3JzU2l6ZTsKICAgICBpbnQgbV9zb2NrZXREZXNjcmlwdG9yOworI2lm
IFBMQVRGT1JNKFFUKQorICAgIFFTb2NrZXROb3RpZmllciogbV9zb2NrZXROb3RpZmllcjsKKyNl
bmRpZgogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9M
b2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCmluZGV4IGEy
NmJlYWQuLjEzMjhhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCkBAIC01OSwx
NCArNTksMTQgQEAgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpCiAgICAg
V1RGSW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKGxvZ0NoYW5uZWxzLCBsb2dD
aGFubmVsQ291bnQsIGxvZ0xldmVsU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLSNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiBXVEZMb2dDaGFubmVsKiBsb2dDaGFubmVsQnlOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICByZXR1cm4gV1RGTG9nQ2hhbm5lbEJ5TmFtZShs
b2dDaGFubmVscywgbG9nQ2hhbm5lbENvdW50LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogI2Vu
ZGlmCiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0o
RUZMKQorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShR
VCkgJiYgIVBMQVRGT1JNKEVGTCkKIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiB7CiAgICAgLy8g
RklYTUU6IEVhY2ggcGxhdGZvcm0gd2lsbCBuZWVkIHRvIGRlZmluZSB0aGVpciBvd24gbG9nTGV2
ZWxTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcu
aCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCAzZmU1MGNkLi41MGMx
NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01OSw3ICs1OSw3IEBAIFdFQktJ
VDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiB2b2lkIGluaXRpYWxpemVMb2dD
aGFubmVsc0lmTmVjZXNzYXJ5KHZvaWQpOwogU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCk7CiAKLSNp
ZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiBXVEZMb2dDaGFubmVsKiBsb2dDaGFubmVsQnlO
YW1lKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL01vZHVsZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTW9kdWxlLmgKaW5k
ZXggZTVkZThiYy4uYzQzMzQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
TW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTW9kdWxlLmgKQEAgLTMzLDYg
KzMzLDEwIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShRVCkKKyNpbmNsdWRlIDxRTGlicmFyeT4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RL
KQogdHlwZWRlZiBzdHJ1Y3QgX0dNb2R1bGUgR01vZHVsZTsKICNlbmRpZgpAQCAtNzMsNiArNzcs
OCBAQCBwcml2YXRlOgogI2lmICFkZWZpbmVkKF9fTFA2NF9fKQogICAgIENGQnVuZGxlUmVmTnVt
IG1fYnVuZGxlUmVzb3VyY2VNYXA7CiAjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIFFM
aWJyYXJ5IG1fbGliOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIEdNb2R1bGUqIG1faGFuZGxl
OwogI2VsaWYgUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oCmluZGV4IGRlYWZhOWMuLjE2OTlkMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVy
LmgKQEAgLTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9STShN
QUMpCiB0eXBlZGVmIHBpZF90IFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CisjZWxpZiBQTEFU
Rk9STShRVCkKK3R5cGVkZWYgUVByb2Nlc3MqIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7CiAj
ZWxpZiBQTEFURk9STShHVEspCiAjaWZkZWYgR19PU19XSU4zMgogdHlwZWRlZiB2b2lkKiBHUGlk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCAzZjQzMGRkNy4uMDUy
ODliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1dvcmtRdWV1ZS5oCmluZGV4IDlhMjhkOTAuLmE0ZmE5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1dvcmtRdWV1ZS5oCkBAIC00MSwxMSArNDEsMTcgQEAKICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCisjaWYgKFBMQVRGT1JNKFFUKSAmJiAhT1MoREFSV0lOKSkgfHwg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oIgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0o
UVQpICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgorUVRfQkVHSU5f
TkFNRVNQQUNFCitjbGFzcyBRT2JqZWN0OworY2xhc3MgUVRocmVhZDsKK1FUX0VORF9OQU1FU1BB
Q0UKKyNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiB0eXBlZGVmIGdib29sZWFuICgqR1NvdXJjZUZ1bmMpIChncG9pbnRlciBkYXRhKTsKICNlbGlm
IFBMQVRGT1JNKEVGTCkKQEAgLTY1LDYgKzcxLDkgQEAgcHVibGljOgogCiAjaWYgT1MoREFSV0lO
KQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGF0Y2hRdWV1ZTsgfQorI2VsaWYgUExBVEZPUk0oUVQpCisgICAgUVNvY2tldE5vdGlmaWVy
KiByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIFFTb2NrZXROb3RpZmllcjo6VHlwZSwg
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOworICAgIHZvaWQgZGlzcGF0Y2hPblRlcm1pbmF0aW9u
KFdlYktpdDo6UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciwgY29uc3QgRnVuY3Rpb248dm9pZCgp
PiYpOwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIoaW50LCBpbnQsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBjb25zdCBG
dW5jdGlvbjx2b2lkKCk+JiBjbG9zZUZ1bmN0aW9uKTsKICAgICB2b2lkIHVucmVnaXN0ZXJTb2Nr
ZXRFdmVudEhhbmRsZXIoaW50KTsKQEAgLTgzLDYgKzkyLDEwIEBAIHByaXZhdGU6CiAjaWYgT1Mo
REFSV0lOKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBj
bGFzcyBXb3JrSXRlbVF0OworICAgIFFUaHJlYWQqIG1fd29ya1RocmVhZDsKKyAgICBmcmllbmQg
Y2xhc3MgV29ya0l0ZW1RdDsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBzdGF0aWMgdm9pZCBz
dGFydFdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKICAgICB2b2lkIHdvcmtRdWV1ZVRocmVh
ZEJvZHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0L0xvZ2dpbmdR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Mb2dnaW5nUXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNzk1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Mb2dnaW5nUXQuY3BwCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJp
Z2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKwor
I2luY2x1ZGUgPFFEZWJ1Zz4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiAhTE9HX0RJU0FC
TEVECisKK1N0cmluZyBsb2dMZXZlbFN0cmluZygpCit7CisgICAgcmV0dXJuIFFTdHJpbmc6OmZy
b21Mb2NhbDhCaXQocWdldGVudigiUVRfV0VCS0lUX0xPRyIpKTsKK30KKworI2VuZGlmIC8vICFM
T0dfRElTQUJMRUQKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQv
TW9kdWxlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQvTW9kdWxlUXQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNjc3NjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Nb2R1bGVRdC5jcHAKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2R1bGUuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2Jvb2wgTW9kdWxlOjpsb2FkKCkKK3sKKyAgICBtX2xpYi5zZXRGaWxl
TmFtZShzdGF0aWNfY2FzdDxRU3RyaW5nPihtX3BhdGgpKTsKKyAgICBtX2xpYi5zZXRMb2FkSGlu
dHMoUUxpYnJhcnk6OlJlc29sdmVBbGxTeW1ib2xzSGludCk7CisgICAgcmV0dXJuIG1fbGliLmxv
YWQoKTsKK30KKwordm9pZCBNb2R1bGU6OnVubG9hZCgpCit7CisgICAgbV9saWIudW5sb2FkKCk7
Cit9CisKK3ZvaWQqIE1vZHVsZTo6cGxhdGZvcm1GdW5jdGlvblBvaW50ZXIoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lKSBjb25zdAoreworICAgIC8vIFVuZm9ydHVuYXRlbHkgUUxpYnJhcnk6OnJl
c29sdmUgaXMgbm90IGNvbnN0LgorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihj
b25zdF9jYXN0PFFMaWJyYXJ5Kj4oJm1fbGliKS0+cmVzb2x2ZShmdW5jdGlvbk5hbWUpKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQvV29ya1F1ZXVlUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vcXQvV29ya1F1ZXVlUXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWVkZWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC9Xb3JrUXVldWVRdC5jcHAKQEAgLTAsMCArMSwxMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxRTG9jYWxTb2NrZXQ+CisjaW5jbHVkZSA8UU9i
amVjdD4KKyNpbmNsdWRlIDxRVGhyZWFkPgorI2luY2x1ZGUgPFFQcm9jZXNzPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKworY2xhc3MgV29ya1F1ZXVlOjpXb3JrSXRlbVF0IDogcHVibGlj
IFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgV29ya0l0ZW1RdChXb3JrUXVl
dWUqIHdvcmtRdWV1ZSwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCisgICAgICAg
IDogbV9xdWV1ZSh3b3JrUXVldWUpCisgICAgICAgICwgbV9zb3VyY2UoMCkKKyAgICAgICAgLCBt
X3NpZ25hbCgwKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgeworICAgIH0K
KworICAgIFdvcmtJdGVtUXQoV29ya1F1ZXVlKiB3b3JrUXVldWUsIFFPYmplY3QqIHNvdXJjZSwg
Y29uc3QgY2hhciogc2lnbmFsLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKKyAg
ICAgICAgOiBtX3F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCisg
ICAgICAgICwgbV9zaWduYWwoc2lnbmFsKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24p
CisgICAgeworICAgICAgICBjb25uZWN0KG1fc291cmNlLCBtX3NpZ25hbCwgU0xPVChleGVjdXRl
KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgfQorCisgICAgfldvcmtJdGVtUXQoKQor
ICAgIHsKKyAgICAgICAgbV9xdWV1ZS0+ZGVyZWYoKTsKKyAgICB9CisKKyAgICBRX1NMT1Qgdm9p
ZCBleGVjdXRlKCkgCisgICAgeyAKKyAgICAgICAgbV9mdW5jdGlvbigpOworICAgIH0KKworICAg
IFFfU0xPVCB2b2lkIGV4ZWN1dGVBbmREZWxldGUoKQorICAgIHsKKyAgICAgICAgZXhlY3V0ZSgp
OworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGltZXJF
dmVudChRVGltZXJFdmVudCopCisgICAgeworICAgICAgICBleGVjdXRlQW5kRGVsZXRlKCk7Cisg
ICAgfQorCisgICAgV29ya1F1ZXVlKiBtX3F1ZXVlOworICAgIFFPYmplY3QqIG1fc291cmNlOwor
ICAgIGNvbnN0IGNoYXIqIG1fc2lnbmFsOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlv
bjsKK307CisKK1FTb2NrZXROb3RpZmllciogV29ya1F1ZXVlOjpyZWdpc3RlclNvY2tldEV2ZW50
SGFuZGxlcihpbnQgc29ja2V0RGVzY3JpcHRvciwgUVNvY2tldE5vdGlmaWVyOjpUeXBlIHR5cGUs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChtX3dvcmtU
aHJlYWQpOworCisgICAgUVNvY2tldE5vdGlmaWVyKiBub3RpZmllciA9IG5ldyBRU29ja2V0Tm90
aWZpZXIoc29ja2V0RGVzY3JpcHRvciwgdHlwZSwgMCk7CisgICAgbm90aWZpZXItPnNldEVuYWJs
ZWQoZmFsc2UpOworICAgIG5vdGlmaWVyLT5tb3ZlVG9UaHJlYWQobV93b3JrVGhyZWFkKTsKKyAg
ICBXb3JrUXVldWU6OldvcmtJdGVtUXQqIGl0ZW1RdCA9IG5ldyBXb3JrUXVldWU6OldvcmtJdGVt
UXQodGhpcywgbm90aWZpZXIsIFNJR05BTChhY3RpdmF0ZWQoaW50KSksIGZ1bmN0aW9uKTsKKyAg
ICBpdGVtUXQtPm1vdmVUb1RocmVhZChtX3dvcmtUaHJlYWQpOworICAgIFFNZXRhT2JqZWN0Ojpp
bnZva2VNZXRob2Qobm90aWZpZXIsICJzZXRFbmFibGVkIiwgUV9BUkcoYm9vbCwgdHJ1ZSkpOwor
ICAgIHJldHVybiBub3RpZmllcjsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlh
bGl6ZShjb25zdCBjaGFyKikKK3sKKyAgICBtX3dvcmtUaHJlYWQgPSBuZXcgUVRocmVhZCgpOwor
ICAgIG1fd29ya1RocmVhZC0+c3RhcnQoKTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCit7CisgICAgbV93b3JrVGhyZWFkLT5leGl0KCk7CisgICAgbV93b3JrVGhy
ZWFkLT53YWl0KCk7CisgICAgZGVsZXRlIG1fd29ya1RocmVhZDsKK30KKwordm9pZCBXb3JrUXVl
dWU6OmRpc3BhdGNoKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIHJl
ZigpOworICAgIFdvcmtRdWV1ZTo6V29ya0l0ZW1RdCogaXRlbVF0ID0gbmV3IFdvcmtRdWV1ZTo6
V29ya0l0ZW1RdCh0aGlzLCBmdW5jdGlvbik7CisgICAgaXRlbVF0LT5tb3ZlVG9UaHJlYWQobV93
b3JrVGhyZWFkKTsKKyAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKGl0ZW1RdCwgImV4ZWN1
dGVBbmREZWxldGUiLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Cit9CisKK3ZvaWQgV29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyRGVsYXkoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24sIGRv
dWJsZSBkZWxheUluU2Vjb25kKQoreworICAgIHJlZigpOworICAgIFdvcmtRdWV1ZTo6V29ya0l0
ZW1RdCogaXRlbVF0ID0gbmV3IFdvcmtRdWV1ZTo6V29ya0l0ZW1RdCh0aGlzLCBmdW5jdGlvbik7
CisgICAgaXRlbVF0LT5zdGFydFRpbWVyKHN0YXRpY19jYXN0PGludD4oZGVsYXlJblNlY29uZCAq
IDEwMDApKTsKKyAgICBpdGVtUXQtPm1vdmVUb1RocmVhZChtX3dvcmtUaHJlYWQpOworfQorCit2
b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hPblRlcm1pbmF0aW9uKFdlYktpdDo6UGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikK
K3sKKyAgICBXb3JrUXVldWU6OldvcmtJdGVtUXQqIGl0ZW1RdCA9IG5ldyBXb3JrUXVldWU6Oldv
cmtJdGVtUXQodGhpcywgcHJvY2VzcywgU0lHTkFMKGZpbmlzaGVkKGludCwgUVByb2Nlc3M6OkV4
aXRTdGF0dXMpKSwgZnVuY3Rpb24pOworICAgIGl0ZW1RdC0+bW92ZVRvVGhyZWFkKG1fd29ya1Ro
cmVhZCk7Cit9CisKKyNpbmNsdWRlICJXb3JrUXVldWVRdC5tb2MiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tFcnJvckNGLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvY2YvV0tFcnJvckNGLmgKaW5kZXggMDBhNGRmZS4uMjk4ZjdjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLRXJyb3JDRi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS0Vycm9yQ0YuaApAQCAtMzQsNyArMzQsNyBA
QCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBXS19FWFBPUlQgV0tFcnJvclJlZiBXS0Vycm9yQ3Jl
YXRlV2l0aENGRXJyb3IoQ0ZFcnJvclJlZiBlcnJvcik7Ci1XS19FWFBPUlQgQ0ZFcnJvclJlZiBX
S0Vycm9yQ29weUNGRXJyb3IoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLRXJyb3JSZWYgZXJyb3Ip
IENGX1JFVFVSTlNfUkVUQUlORUQ7CitXS19FWFBPUlQgQ0ZFcnJvclJlZiBXS0Vycm9yQ29weUNG
RXJyb3IoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLRXJyb3JSZWYgZXJyb3IpOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
Zi9XS1N0cmluZ0NGLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdD
Ri5oCmluZGV4IDBkMjY2ZDMuLmY5NDY4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL2NmL1dLU3RyaW5nQ0YuaApAQCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRp
ZgogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZT
dHJpbmdSZWYgc3RyaW5nKTsKLVdLX0VYUE9SVCBDRlN0cmluZ1JlZiBXS1N0cmluZ0NvcHlDRlN0
cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvYywgV0tTdHJpbmdSZWYgc3RyaW5nKSBDRl9SRVRVUk5T
X1JFVEFJTkVEOworV0tfRVhQT1JUIENGU3RyaW5nUmVmIFdLU3RyaW5nQ29weUNGU3RyaW5nKENG
QWxsb2NhdG9yUmVmIGFsbG9jLCBXS1N0cmluZ1JlZiBzdHJpbmcpOwogCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VS
TENGLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5oCmluZGV4IGY3
MDRhMTMuLjM5NDgwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0Yu
aApAQCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBXS19FWFBPUlQgV0tV
UkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYgVVJMKTsKLVdLX0VYUE9SVCBDRlVS
TFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvYywgV0tVUkxSZWYgVVJMKSBD
Rl9SRVRVUk5TX1JFVEFJTkVEOworV0tfRVhQT1JUIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENG
QWxsb2NhdG9yUmVmIGFsbG9jLCBXS1VSTFJlZiBVUkwpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuaAppbmRleCA1ODJk
MGIzLi44MDBiMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2cv
V0tJbWFnZUNHLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VD
Ry5oCkBAIC0zNCw3ICszNCw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBPUlQg
Q0dJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZShXS0ltYWdlUmVmIGltYWdlKSBDRl9SRVRV
Uk5TX1JFVEFJTkVEOworV0tfRVhQT1JUIENHSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUNHSW1hZ2Uo
V0tJbWFnZVJlZiBpbWFnZSk7CiAKIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVG
cm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlcXVl
c3ROUy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlcXVlc3ROUy5o
CmluZGV4IGNiYzEwZWEuLjRjZGZlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9tYWMvV0tVUkxSZXF1ZXN0TlMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvbWFjL1dLVVJMUmVxdWVzdE5TLmgKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7
CiAjZW5kaWYKIAogV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDcmVhdGVX
aXRoTlNVUkxSZXF1ZXN0KE5TVVJMUmVxdWVzdCogdXJsUmVxdWVzdCk7Ci1XS19FWFBPUlQgTlNV
UkxSZXF1ZXN0KiBXS1VSTFJlcXVlc3RDb3B5TlNVUkxSZXF1ZXN0KFdLVVJMUmVxdWVzdFJlZiB1
cmxSZXF1ZXN0KSBOU19SRVRVUk5TX1JFVEFJTkVEOworV0tfRVhQT1JUIE5TVVJMUmVxdWVzdCog
V0tVUkxSZXF1ZXN0Q29weU5TVVJMUmVxdWVzdChXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCk7
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL21hYy9XS1VSTFJlc3BvbnNlTlMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9tYWMvV0tVUkxSZXNwb25zZU5TLmgKaW5kZXggMjJiNmE4ZGYuLjBiYmMxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tVUkxSZXNwb25zZU5TLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlc3BvbnNlTlMuaApA
QCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBXS19FWFBPUlQgV0tVUkxS
ZXNwb25zZVJlZiBXS1VSTFJlc3BvbnNlQ3JlYXRlV2l0aE5TVVJMUmVzcG9uc2UoTlNVUkxSZXNw
b25zZSogdXJsUmVzcG9uc2UpOwotV0tfRVhQT1JUIE5TVVJMUmVzcG9uc2UqIFdLVVJMUmVzcG9u
c2VDb3B5TlNVUkxSZXNwb25zZShXS1VSTFJlc3BvbnNlUmVmIHVybFJlc3BvbnNlKSBOU19SRVRV
Uk5TX1JFVEFJTkVEOworV0tfRVhQT1JUIE5TVVJMUmVzcG9uc2UqIFdLVVJMUmVzcG9uc2VDb3B5
TlNVUkxSZXNwb25zZShXS1VSTFJlc3BvbnNlUmVmIHVybFJlc3BvbnNlKTsKIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2luZ0Fy
ZWFJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRHJhd2luZ0FyZWFJbmZvLmgKaW5kZXgg
ZmU5ZTg4NC4uMGJkYWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RyYXdp
bmdBcmVhSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EcmF3aW5nQXJlYUluZm8u
aApAQCAtMjksMTEgKzI5LDEwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBEcmF3aW5n
QXJlYVR5cGUgeworICAgIERyYXdpbmdBcmVhVHlwZUltcGwsCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbiwKICAgICBEcmF3aW5nQXJlYVR5
cGVSZW1vdGVMYXllclRyZWUsCi0jZWxzZQotICAgIERyYXdpbmdBcmVhVHlwZUltcGwsCiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9X
S0ljb25EYXRhYmFzZUNHLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJ
Y29uRGF0YWJhc2VDRy5oCmluZGV4IDA4ZmNiMTguLmFmMGYyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuaApAQCAtMzYs
NyArMzYsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiBXS19FWFBPUlQgQ0dJbWFnZVJlZiBX
S0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRh
dGFiYXNlLCBXS1VSTFJlZiB1cmwsIFdLU2l6ZSBzaXplKTsKLVdLX0VYUE9SVCBDRkFycmF5UmVm
IFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChXS0ljb25EYXRhYmFzZVJl
ZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHVybCkgQ0ZfUkVUVVJOU19SRVRBSU5FRDsKK1dLX0VY
UE9SVCBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHVybCk7CiAKICNpZmRlZiBf
X2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CmluZGV4IGZkOTA4MjYuLmJiYzlhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJp
bmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNl
LmgiCisjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgogI2ltcG9ydCAiRWRpdG9yU3Rh
dGUuaCIKICNpbXBvcnQgIkZpbmRJbmRpY2F0b3IuaCIKICNpbXBvcnQgIkZpbmRJbmRpY2F0b3JX
aW5kb3cuaCIKQEAgLTE0Niw2ICsxNDcsNyBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZl
bnRzUGFyYW1ldGVycyB7CiAtICh2b2lkKV9wb3N0RmFrZU1vdXNlTW92ZWRFdmVudEZvckZsYWdz
Q2hhbmdlZEV2ZW50OihOU0V2ZW50ICopZmxhZ3NDaGFuZ2VkRXZlbnQ7CiAtICh2b2lkKV9zZXRE
cmF3aW5nQXJlYVNpemU6KE5TU2l6ZSlzaXplOwogLSAodm9pZClfc2V0UGx1Z2luQ29tcGxleFRl
eHRJbnB1dFN0YXRlOihQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpcGx1Z2luQ29tcGxleFRl
eHRJbnB1dFN0YXRlOworLSAoQk9PTClfc2hvdWxkVXNlVGlsZWREcmF3aW5nQXJlYTsKIAogI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAogLSAodm9pZClfc2V0SXNX
aW5kb3dPY2NsdWRlZDooQk9PTClpc1dpbmRvd09jY2x1ZGVkOwpAQCAtMjExNSwxMCArMjExNyw2
MCBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3Rv
cktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogfQogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIGRy
YXdQYWdlQmFja2dyb3VuZChDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViUGFnZVByb3h5KiBwYWdl
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghcGFnZS0+ZHJhd3NCYWNrZ3JvdW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7
CisgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQsIGtDR0JsZW5kTW9kZUNvcHkpOwor
CisgICAgQ0dDb2xvclJlZiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKHBhZ2UtPmRyYXdzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKCkpCisgICAgICAgIGJhY2tncm91bmRDb2xvciA9IENHQ29sb3JH
ZXRDb25zdGFudENvbG9yKGtDR0NvbG9yQ2xlYXIpOworICAgIGVsc2UKKyAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gQ0dDb2xvckdldENvbnN0YW50Q29sb3Ioa0NHQ29sb3JXaGl0ZSk7CisKKyAg
ICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgYmFja2dyb3VuZENvbG9y
KTsKKyAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCByZWN0KTsKKworICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7Cit9CisKIC0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdCly
ZWN0CiB7CiAgICAgTE9HKFZpZXcsICJkcmF3UmVjdDogeDolZywgeTolZywgd2lkdGg6JWcsIGhl
aWdodDolZyIsIHJlY3Qub3JpZ2luLngsIHJlY3Qub3JpZ2luLnksIHJlY3Quc2l6ZS53aWR0aCwg
cmVjdC5zaXplLmhlaWdodCk7CiAgICAgX2RhdGEtPl9wYWdlLT5lbmRQcmludGluZygpOworCisg
ICAgaWYgKFtzZWxmIF9zaG91bGRVc2VUaWxlZERyYXdpbmdBcmVhXSkgeworICAgICAgICAvLyBO
b3RoaW5nIHRvIGRvIGhlcmUuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDR0NvbnRl
eHRSZWYgY29udGV4dCA9IHN0YXRpY19jYXN0PENHQ29udGV4dFJlZj4oW1tOU0dyYXBoaWNzQ29u
dGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XSk7CisKKyAgICBpZiAoRHJhd2luZ0Fy
ZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUlt
cGwqPihfZGF0YS0+X3BhZ2UtPmRyYXdpbmdBcmVhKCkpKSB7CisgICAgICAgIGNvbnN0IE5TUmVj
dCAqcmVjdHNCZWluZ0RyYXduOworICAgICAgICBOU0ludGVnZXIgbnVtUmVjdHNCZWluZ0RyYXdu
OworICAgICAgICBbc2VsZiBnZXRSZWN0c0JlaW5nRHJhd246JnJlY3RzQmVpbmdEcmF3biBjb3Vu
dDombnVtUmVjdHNCZWluZ0RyYXduXTsKKyAgICAgICAgZm9yIChOU0ludGVnZXIgaSA9IDA7IGkg
PCBudW1SZWN0c0JlaW5nRHJhd247ICsraSkgeworICAgICAgICAgICAgUmVnaW9uIHVucGFpbnRl
ZFJlZ2lvbjsKKyAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5wYWludChjb250ZXh0LCBlbmNsb3Np
bmdJbnRSZWN0KHJlY3RzQmVpbmdEcmF3bltpXSksIHVucGFpbnRlZFJlZ2lvbik7CisKKyAgICAg
ICAgICAgIC8vIElmIHRoZSB3aW5kb3cgZG9lc24ndCBoYXZlIGEgdmFsaWQgYmFja2luZyBzdG9y
ZSwgd2UgbmVlZCB0byBmaWxsIHRoZSBwYXJ0cyBvZiB0aGUgcGFnZSB0aGF0IHdlCisgICAgICAg
ICAgICAvLyBkaWRuJ3QgcGFpbnQgd2l0aCB0aGUgYmFja2dyb3VuZCBjb2xvciAod2hpdGUgb3Ig
Y2xlYXIpLCB0byBhdm9pZCBnYXJiYWdlIGluIHRob3NlIGFyZWFzLgorICAgICAgICAgICAgaWYg
KCFfZGF0YS0+X3dpbmRvd0hhc1ZhbGlkQmFja2luZ1N0b3JlIHx8ICFkcmF3aW5nQXJlYS0+aGFz
UmVjZWl2ZWRGaXJzdFVwZGF0ZSgpKSB7CisgICAgICAgICAgICAgICAgVmVjdG9yPEludFJlY3Q+
IHVucGFpbnRlZFJlY3RzID0gdW5wYWludGVkUmVnaW9uLnJlY3RzKCk7CisgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bnBhaW50ZWRSZWN0cy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICAgICAgZHJhd1BhZ2VCYWNrZ3JvdW5kKGNvbnRleHQsIF9kYXRhLT5fcGFn
ZS5nZXQoKSwgdW5wYWludGVkUmVjdHNbaV0pOworCisgICAgICAgICAgICAgICAgX2RhdGEtPl93
aW5kb3dIYXNWYWxpZEJhY2tpbmdTdG9yZSA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0gZWxzZSAKKyAgICAgICAgZHJhd1BhZ2VCYWNrZ3JvdW5kKGNvbnRleHQsIF9kYXRh
LT5fcGFnZS5nZXQoKSwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CisKKyAgICBfZGF0YS0+X3Bh
Z2UtPmRpZERyYXcoKTsKIH0KIAogLSAoQk9PTClpc09wYXF1ZQpAQCAtMjI4NSw2ICsyMzM3LDEx
IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tpbmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9y
S2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sCiAgICAgX2RhdGEtPl9yZXNpemVTY3JvbGxPZmZz
ZXQgPSBOU1plcm9TaXplOwogfQogCistIChCT09MKV9zaG91bGRVc2VUaWxlZERyYXdpbmdBcmVh
Cit7CisgICAgcmV0dXJuIE5POworfQorCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDgwCiAtICh2b2lkKXF1aWNrTG9va1dpdGhFdmVudDooTlNFdmVudCAqKWV2ZW50
CiB7CkBAIC0yMzEwLDEwICsyMzY3LDE0IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGJhY2tp
bmdQcm9wZXJ0eU9sZFNjYWxlRmFjdG9yS2V5ID0gQCJOU0JhY2tpbmdQcm9wZXJ0eU9sCiAKIC0g
KHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5n
QXJlYVByb3h5CiB7Ci0gICAgaWYgKGdldGVudigiV0tfVVNFX1JFTU9URV9MQVlFUl9UUkVFX0RS
QVdJTkdfQVJFQSIpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5PihfZGF0YS0+X3BhZ2UuZ2V0KCkpOworICAgIGlmIChbc2Vs
ZiBfc2hvdWxkVXNlVGlsZWREcmF3aW5nQXJlYV0pIHsKKyAgICAgICAgaWYgKGdldGVudigiV0tf
VVNFX1JFTU9URV9MQVlFUl9UUkVFX0RSQVdJTkdfQVJFQSIpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oX2RhdGEt
Pl9wYWdlLmdldCgpKTsKKworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5PihfZGF0YS0+X3BhZ2UuZ2V0KCkpOworICAgIH0K
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHk+KF9kYXRhLT5fcGFnZS5nZXQoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RHJhd2luZ0FyZWFQcm94eUltcGw+KF9kYXRhLT5fcGFnZS5nZXQoKSk7CiB9CiAKIC0gKEJP
T0wpX2lzRm9jdXNlZApAQCAtMzAyNywxMCArMzA4OCwxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKnBh
dGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIAogICAgIFtz
ZWxmIF9yZWdpc3RlckRyYWdnZWRUeXBlc107CiAKLSAgICBzZWxmLndhbnRzTGF5ZXIgPSBZRVM7
CisgICAgaWYgKFtzZWxmIF9zaG91bGRVc2VUaWxlZERyYXdpbmdBcmVhXSkgeworICAgICAgICBz
ZWxmLndhbnRzTGF5ZXIgPSBZRVM7CiAKLSAgICAvLyBFeHBsaWNpdGx5IHNldCB0aGUgbGF5ZXIg
Y29udGVudHMgcGxhY2VtZW50IHNvIEFwcEtpdCB3aWxsIG1ha2Ugc3VyZSB0aGF0IG91ciBsYXll
ciBoYXMgbWFza3NUb0JvdW5kcyBzZXQgdG8gWUVTLgotICAgIHNlbGYubGF5ZXJDb250ZW50c1Bs
YWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRUb3BMZWZ0OworICAgICAgICAv
LyBFeHBsaWNpdGx5IHNldCB0aGUgbGF5ZXIgY29udGVudHMgcGxhY2VtZW50IHNvIEFwcEtpdCB3
aWxsIG1ha2Ugc3VyZSB0aGF0IG91ciBsYXllciBoYXMgbWFza3NUb0JvdW5kcyBzZXQgdG8gWUVT
LgorICAgICAgICBzZWxmLmxheWVyQ29udGVudHNQbGFjZW1lbnQgPSBOU1ZpZXdMYXllckNvbnRl
bnRzUGxhY2VtZW50VG9wTGVmdDsKKyAgICB9CiAKICAgICBXZWJDb250ZXh0OjpzdGF0aXN0aWNz
KCkud2tWaWV3Q291bnQrKzsKIApAQCAtMzA0Myw3ICszMTA2LDcgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKIC0gKEJPT0wpd2FudHNVcGRhdGVM
YXllcgogewotICAgIHJldHVybiBZRVM7CisgICAgcmV0dXJuIFtzZWxmIF9zaG91bGRVc2VUaWxl
ZERyYXdpbmdBcmVhXTsKIH0KIAogLSAodm9pZCl1cGRhdGVMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5oCmluZGV4IDU3OWRiOGIuLmQyYTNiZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKKyNp
ZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKICNp
ZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRdEd1aS9RUGFpbnRlcj4KICNpbmNsdWRlIDxRdEd1
aS9RUGl4bWFwPgpAQCAtNTUsNyArNTksOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQogCi0j
aWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHR5cGVkZWYgQ0dDb250ZXh0
UmVmIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OworI2VsaWYgUExBVEZPUk0oUVQpCiAgICAgdHlw
ZWRlZiBRUGFpbnRlciogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZWxpZiBVU0UoQ0FJUk8p
CiAgICAgdHlwZWRlZiBjYWlyb190KiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDsKQEAgLTcyLDcg
Kzc4LDIyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKICAgICBX
ZWJQYWdlUHJveHkqIG1fd2ViUGFnZVByb3h5OwogCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIENHQ29udGV4dFJlZiBiYWNraW5nU3RvcmVDb250ZXh0KCk7CisKKyAg
ICB2b2lkIHBlcmZvcm1XaXRoU2Nyb2xsZWRSZWN0VHJhbnNmb3JtKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCB2b2lkICheKShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpKTsKKyAgICB2b2lkIHJlc2V0U2Nyb2xsZWRSZWN0KCk7CisKKyAgICBSZXRhaW5Q
dHI8Q0dMYXllclJlZj4gbV9jZ0xheWVyOworICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1f
Yml0bWFwQ29udGV4dDsKKworICAgIC8vIFRoZSByZWN0YW5nZSB0aGF0IHdhcyBzY3JvbGxlZCBt
b3N0IHJlY2VudGx5LgorICAgIFdlYkNvcmU6OkludFJlY3QgbV9zY3JvbGxlZFJlY3Q7CisKKyAg
ICAvLyBDb250ZW50cyBvZiBtX3Njcm9sbGVkUmVjdCBhcmUgb2Zmc2V0IGJ5IHRoaXMgYW1vdW50
IChhbmQgd3JhcHBlZCBhcm91bmQpIHdpdGggcmVzcGVjdCB0bworICAgIC8vIHRoZWlyIG9yaWdp
bmFsIGxvY2F0aW9uLgorICAgIFdlYkNvcmU6OkludFNpemUgbV9zY3JvbGxlZFJlY3RPZmZzZXQ7
CisjZWxpZiBQTEFURk9STShRVCkKICAgICBRUGl4bWFwIG1fcGl4bWFwOwogI2VsaWYgVVNFKENB
SVJPKQogICAgIE93blB0cjxXZWJDb3JlOjpXaWRnZXRCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXgg
MjExNjAzZS4uOTNiOWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIERyYXdpbmdBcmVhUHJveHlfaAog
I2RlZmluZSBEcmF3aW5nQXJlYVByb3h5X2gKIAorI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9CYWNraW5nU3RvcmVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL0JhY2tpbmdTdG9yZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43MjU2ZjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9CYWNraW5nU3RvcmVNYWMubW0KQEAgLTAsMCArMSwyMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkJhY2tpbmdTdG9yZS5oIgorCisjaW1w
b3J0ICJDR1V0aWxpdGllcy5oIgorI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW1wb3J0
ICJVcGRhdGVJbmZvLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlZ2lvbi5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgQmFja2lu
Z1N0b3JlOjpwZXJmb3JtV2l0aFNjcm9sbGVkUmVjdFRyYW5zZm9ybShjb25zdCBJbnRSZWN0JiBy
ZWN0LCB2b2lkICheYmxvY2spKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJikpCit7Cisg
ICAgaWYgKG1fc2Nyb2xsZWRSZWN0LmlzRW1wdHkoKSB8fCBtX3Njcm9sbGVkUmVjdE9mZnNldC5p
c1plcm8oKSB8fCAhbV9zY3JvbGxlZFJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICBi
bG9jayhyZWN0LCBJbnRTaXplKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
VGhlIHBhcnQgb2YgcmVjdCB0aGF0J3Mgb3V0c2lkZSB0aGUgc2Nyb2xsZWQgcmVjdCBpcyBub3Qg
dHJhbnNsYXRlZC4KKyAgICBSZWdpb24gdW50cmFuc2xhdGVkUmVnaW9uID0gcmVjdDsKKyAgICB1
bnRyYW5zbGF0ZWRSZWdpb24uc3VidHJhY3QobV9zY3JvbGxlZFJlY3QpOworICAgIFZlY3RvcjxJ
bnRSZWN0PiB1bnRyYW5zbGF0ZWRSZWN0cyA9IHVudHJhbnNsYXRlZFJlZ2lvbi5yZWN0cygpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW50cmFuc2xhdGVkUmVjdHMuc2l6ZSgpOyArK2kp
CisgICAgICAgIGJsb2NrKHVudHJhbnNsYXRlZFJlY3RzW2ldLCBJbnRTaXplKCkpOworCisgICAg
Ly8gVGhlIHBhcnQgb2YgcmVjdCB0aGF0IGludGVyc2VjdHMgdGhlIHNjcm9sbGVkIHJlY3QgY29t
cHJpc2VzIHVwIHRvIGZvdXIgcGFydHMsIGVhY2ggc3ViamVjdAorICAgIC8vIHRvIGEgZGlmZmVy
ZW50IHRyYW5zbGF0aW9uIChhbGwgdHJhbnNsYXRpb25zIGFyZSBlcXVpdmFsZW50IG1vZHVsbyB0
aGUgZGltZW5zaW9ucyBvZiB0aGUKKyAgICAvLyBzY3JvbGxlZCByZWN0IHRvIHRoZSBzY3JvbGwg
b2Zmc2V0KS4KKyAgICBJbnRSZWN0IGludGVyc2VjdGlvbiA9IHJlY3Q7CisgICAgaW50ZXJzZWN0
aW9uLmludGVyc2VjdChtX3Njcm9sbGVkUmVjdCk7CisKKyAgICBJbnRSZWN0IHNjcm9sbGVkUmVj
dCA9IG1fc2Nyb2xsZWRSZWN0OworICAgIEludFNpemUgb2Zmc2V0ID0gbV9zY3JvbGxlZFJlY3RP
ZmZzZXQ7CisgICAgc2Nyb2xsZWRSZWN0Lm1vdmUoLW9mZnNldCk7CisKKyAgICBJbnRSZWN0IHBh
cnQgPSBpbnRlcnNlY3Rpb247CisgICAgcGFydC5pbnRlcnNlY3Qoc2Nyb2xsZWRSZWN0KTsKKyAg
ICBpZiAoIXBhcnQuaXNFbXB0eSgpKQorICAgICAgICBibG9jayhwYXJ0LCBvZmZzZXQpOworCisg
ICAgcGFydCA9IGludGVyc2VjdGlvbjsKKyAgICBvZmZzZXQgKz0gSW50U2l6ZSgwLCAtbV9zY3Jv
bGxlZFJlY3QuaGVpZ2h0KCkpOworICAgIHNjcm9sbGVkUmVjdC5tb3ZlKEludFNpemUoMCwgbV9z
Y3JvbGxlZFJlY3QuaGVpZ2h0KCkpKTsKKyAgICBwYXJ0LmludGVyc2VjdChzY3JvbGxlZFJlY3Qp
OworICAgIGlmICghcGFydC5pc0VtcHR5KCkpCisgICAgICAgIGJsb2NrKHBhcnQsIG9mZnNldCk7
CisKKyAgICBwYXJ0ID0gaW50ZXJzZWN0aW9uOworICAgIG9mZnNldCArPSBJbnRTaXplKC1tX3Nj
cm9sbGVkUmVjdC53aWR0aCgpLCAwKTsKKyAgICBzY3JvbGxlZFJlY3QubW92ZShJbnRTaXplKG1f
c2Nyb2xsZWRSZWN0LndpZHRoKCksIDApKTsKKyAgICBwYXJ0LmludGVyc2VjdChzY3JvbGxlZFJl
Y3QpOworICAgIGlmICghcGFydC5pc0VtcHR5KCkpCisgICAgICAgIGJsb2NrKHBhcnQsIG9mZnNl
dCk7CisKKyAgICBwYXJ0ID0gaW50ZXJzZWN0aW9uOworICAgIG9mZnNldCArPSBJbnRTaXplKDAs
IG1fc2Nyb2xsZWRSZWN0LmhlaWdodCgpKTsKKyAgICBzY3JvbGxlZFJlY3QubW92ZShJbnRTaXpl
KDAsIC1tX3Njcm9sbGVkUmVjdC5oZWlnaHQoKSkpOworICAgIHBhcnQuaW50ZXJzZWN0KHNjcm9s
bGVkUmVjdCk7CisgICAgaWYgKCFwYXJ0LmlzRW1wdHkoKSkKKyAgICAgICAgYmxvY2socGFydCwg
b2Zmc2V0KTsKK30KKwordm9pZCBCYWNraW5nU3RvcmU6OnJlc2V0U2Nyb2xsZWRSZWN0KCkKK3sK
KyAgICBBU1NFUlQoIW1fc2Nyb2xsZWRSZWN0LmlzRW1wdHkoKSk7CisKKyAgICBpZiAobV9zY3Jv
bGxlZFJlY3RPZmZzZXQuaXNaZXJvKCkpIHsKKyAgICAgICAgbV9zY3JvbGxlZFJlY3QgPSBJbnRS
ZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBJbnRTaXplIHNjYWxlZFNpemUg
PSBtX3Njcm9sbGVkUmVjdC5zaXplKCk7CisgICAgc2NhbGVkU2l6ZS5zY2FsZShtX2RldmljZVNj
YWxlRmFjdG9yKTsKKworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwg
c2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpLCA4LCBzY2FsZWRTaXplLndp
ZHRoKCkgKiA0LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisKKyAgICBDR0NvbnRleHRTY2FsZUNU
TShjb250ZXh0LmdldCgpLCBtX2RldmljZVNjYWxlRmFjdG9yLCBtX2RldmljZVNjYWxlRmFjdG9y
KTsKKworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQuZ2V0KCksIDEsIC0xKTsKKyAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dC5nZXQoKSwgLW1fc2Nyb2xsZWRSZWN0LngoKSwg
LW1fc2Nyb2xsZWRSZWN0Lm1heFkoKSk7CisgICAgcGFpbnQoY29udGV4dC5nZXQoKSwgbV9zY3Jv
bGxlZFJlY3QpOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIG1fc2Nyb2xs
ZWRSZWN0LnNpemUoKSk7CisgICAgcGFpbnRCaXRtYXBDb250ZXh0KGJhY2tpbmdTdG9yZUNvbnRl
eHQoKSwgY29udGV4dC5nZXQoKSwgbV9kZXZpY2VTY2FsZUZhY3RvciwgbV9zY3JvbGxlZFJlY3Qu
bG9jYXRpb24oKSwgc291cmNlUmVjdCk7CisKKyAgICBtX3Njcm9sbGVkUmVjdCA9IEludFJlY3Qo
KTsKKyAgICBtX3Njcm9sbGVkUmVjdE9mZnNldCA9IEludFNpemUoKTsKK30KKwordm9pZCBCYWNr
aW5nU3RvcmU6OnBhaW50KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0IGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZGVmaW5lZCBvdXRzaWRlIHRo
ZSBibG9jayB0byB3b3JrIGFyb3VuZCBidWdzIGluIGxsdm0tZ2NjIDQuMi4KKyAgICBfX2Jsb2Nr
IENHUmVjdCBzb3VyY2U7CisgICAgcGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zvcm0ocmVj
dCwgXihjb25zdCBJbnRSZWN0JiBwYXJ0LCBjb25zdCBJbnRTaXplJiBvZmZzZXQpIHsKKyAgICAg
ICAgaWYgKG1fY2dMYXllcikgeworICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250
ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcGFydCk7CisK
KyAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dERyYXdMYXllckF0UG9pbnQoY29udGV4dCwgQ0dQb2ludE1ha2UoLW9mZnNl
dC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCkgLSBtX3NpemUuaGVpZ2h0KCkpLCBtX2NnTGF5ZXIu
Z2V0KCkpOworCisgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG1fYml0bWFw
Q29udGV4dCk7CisgICAgICAgIHNvdXJjZSA9IHBhcnQ7CisgICAgICAgIHNvdXJjZS5vcmlnaW4u
eCArPSBvZmZzZXQud2lkdGgoKTsKKyAgICAgICAgc291cmNlLm9yaWdpbi55ICs9IG9mZnNldC5o
ZWlnaHQoKTsKKyAgICAgICAgcGFpbnRCaXRtYXBDb250ZXh0KGNvbnRleHQsIG1fYml0bWFwQ29u
dGV4dC5nZXQoKSwgbV9kZXZpY2VTY2FsZUZhY3RvciwgcGFydC5sb2NhdGlvbigpLCBzb3VyY2Up
OworICAgIH0pOworfQorCitDR0NvbnRleHRSZWYgQmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVD
b250ZXh0KCkKK3sKKyAgICBpZiAobV9jZ0xheWVyKQorICAgICAgICByZXR1cm4gQ0dMYXllckdl
dENvbnRleHQobV9jZ0xheWVyLmdldCgpKTsKKworICAgIC8vIFRyeSB0byBjcmVhdGUgYSBsYXll
ci4KKyAgICBpZiAoQ0dDb250ZXh0UmVmIGNvbnRhaW5pbmdXaW5kb3dDb250ZXh0ID0gbV93ZWJQ
YWdlUHJveHktPmNvbnRhaW5pbmdXaW5kb3dHcmFwaGljc0NvbnRleHQoKSkgeworICAgICAgICBt
X2NnTGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250YWluaW5nV2lu
ZG93Q29udGV4dCwgbV9zaXplLCAwKSk7CisgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRl
eHQgPSBDR0xheWVyR2V0Q29udGV4dChtX2NnTGF5ZXIuZ2V0KCkpOworICAgICAgICAKKyAgICAg
ICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGxheWVyQ29udGV4dCwga0NHQmxlbmRNb2RlQ29weSk7
CisKKyAgICAgICAgLy8gV2Ugd2FudCB0aGUgb3JpZ2luIHRvIGJlIGluIHRoZSB0b3AgbGVmdCBj
b3JuZXIgc28gZmxpcCB0aGUgYmFja2luZyBzdG9yZSBjb250ZXh0LgorICAgICAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0obGF5ZXJDb250ZXh0LCAwLCBtX3NpemUuaGVpZ2h0KCkpOworICAgICAg
ICBDR0NvbnRleHRTY2FsZUNUTShsYXllckNvbnRleHQsIDEsIC0xKTsKKworICAgICAgICBpZiAo
bV9iaXRtYXBDb250ZXh0KSB7CisgICAgICAgICAgICAvLyBQYWludCB0aGUgY29udGVudHMgb2Yg
dGhlIGJpdG1hcCBpbnRvIHRoZSBsYXllciBjb250ZXh0LgorICAgICAgICAgICAgcGFpbnRCaXRt
YXBDb250ZXh0KGxheWVyQ29udGV4dCwgbV9iaXRtYXBDb250ZXh0LmdldCgpLCBtX2RldmljZVNj
YWxlRmFjdG9yLCBDR1BvaW50WmVybywgQ0dSZWN0TWFrZSgwLCAwLCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpKSk7CisgICAgICAgICAgICBtX2JpdG1hcENvbnRleHQgPSBudWxscHRy
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGxheWVyQ29udGV4dDsKKyAgICB9CisKKyAg
ICBpZiAoIW1fYml0bWFwQ29udGV4dCkgeworICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKSk7
CisKKyAgICAgICAgSW50U2l6ZSBzY2FsZWRTaXplKG1fc2l6ZSk7CisgICAgICAgIHNjYWxlZFNp
emUuc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgIG1fYml0bWFwQ29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIHNjYWxlZFNpemUud2lkdGgoKSwgc2Nh
bGVkU2l6ZS5oZWlnaHQoKSwgOCwgc2NhbGVkU2l6ZS53aWR0aCgpICogNCwgY29sb3JTcGFjZS5n
ZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCkpOworCisgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShtX2JpdG1hcENvbnRl
eHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOworCisgICAgICAgIENHQ29udGV4dFNjYWxlQ1RN
KG1fYml0bWFwQ29udGV4dC5nZXQoKSwgbV9kZXZpY2VTY2FsZUZhY3RvciwgbV9kZXZpY2VTY2Fs
ZUZhY3Rvcik7CisKKyAgICAgICAgLy8gV2Ugd2FudCB0aGUgb3JpZ2luIHRvIGJlIGluIHRoZSB0
b3AgbGVmdCBjb3JuZXIgc28gZmxpcCB0aGUgYmFja2luZyBzdG9yZSBjb250ZXh0LgorICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obV9iaXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3NpemUu
aGVpZ2h0KCkpOworICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShtX2JpdG1hcENvbnRleHQuZ2V0
KCksIDEsIC0xKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9iaXRtYXBDb250ZXh0LmdldCgpOwor
fQorCit2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoU2hhcmVhYmxlQml0bWFw
KiBiaXRtYXAsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCit7CisgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBiYWNraW5nU3RvcmVDb250ZXh0KCk7CisKKyAgICBzY3JvbGwodXBkYXRl
SW5mby5zY3JvbGxSZWN0LCB1cGRhdGVJbmZvLnNjcm9sbE9mZnNldCk7CisKKyAgICBJbnRQb2lu
dCB1cGRhdGVSZWN0TG9jYXRpb24gPSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMubG9jYXRp
b24oKTsKKworICAgIEdyYXBoaWNzQ29udGV4dCBjdHgoY29udGV4dCk7CisgICAgX19ibG9jayBH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9ICZjdHg7CisKKyAgICAvLyBQYWludCBh
bGwgdXBkYXRlIHJlY3RzLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXBkYXRlSW5mby51
cGRhdGVSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSB1
cGRhdGVJbmZvLnVwZGF0ZVJlY3RzW2ldOworICAgICAgICBJbnRSZWN0IHNyY1JlY3QgPSB1cGRh
dGVSZWN0OworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBkZWZpbmVkIG91dHNpZGUgdGhlIGJs
b2NrIHRvIHdvcmsgYXJvdW5kIGJ1Z3MgaW4gbGx2bS1nY2MgNC4yLgorICAgICAgICBfX2Jsb2Nr
IEludFJlY3Qgc3JjUGFydDsKKyAgICAgICAgcGVyZm9ybVdpdGhTY3JvbGxlZFJlY3RUcmFuc2Zv
cm0oc3JjUmVjdCwgXihjb25zdCBJbnRSZWN0JiBwYXJ0LCBjb25zdCBJbnRTaXplJiBvZmZzZXQp
IHsKKyAgICAgICAgICAgIHNyY1BhcnQgPSBwYXJ0OworICAgICAgICAgICAgc3JjUGFydC5tb3Zl
KC11cGRhdGVSZWN0TG9jYXRpb24ueCgpLCAtdXBkYXRlUmVjdExvY2F0aW9uLnkoKSk7CisgICAg
ICAgICAgICBiaXRtYXAtPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHVwZGF0ZUluZm8uZGV2aWNl
U2NhbGVGYWN0b3IsIHBhcnQubG9jYXRpb24oKSArIG9mZnNldCwgc3JjUGFydCk7CisgICAgICAg
IH0pOworICAgIH0KK30KKwordm9pZCBCYWNraW5nU3RvcmU6OnNjcm9sbChjb25zdCBJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCit7CisgICAgaWYgKHNj
cm9sbE9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFzY3Jv
bGxSZWN0LmlzRW1wdHkoKSk7CisKKyAgICBpZiAoIW1fc2Nyb2xsZWRSZWN0LmlzRW1wdHkoKSAm
JiBtX3Njcm9sbGVkUmVjdCAhPSBzY3JvbGxSZWN0KQorICAgICAgICByZXNldFNjcm9sbGVkUmVj
dCgpOworCisgICAgbV9zY3JvbGxlZFJlY3QgPSBzY3JvbGxSZWN0OworCisgICAgaW50IHdpZHRo
ID0gKG1fc2Nyb2xsZWRSZWN0T2Zmc2V0LndpZHRoKCkgLSBzY3JvbGxPZmZzZXQud2lkdGgoKSkg
JSBtX3Njcm9sbGVkUmVjdC53aWR0aCgpOworICAgIGlmICh3aWR0aCA8IDApCisgICAgICAgIHdp
ZHRoICs9IG1fc2Nyb2xsZWRSZWN0LndpZHRoKCk7CisgICAgbV9zY3JvbGxlZFJlY3RPZmZzZXQu
c2V0V2lkdGgod2lkdGgpOworCisgICAgaW50IGhlaWdodCA9IChtX3Njcm9sbGVkUmVjdE9mZnNl
dC5oZWlnaHQoKSAtIHNjcm9sbE9mZnNldC5oZWlnaHQoKSkgJSBtX3Njcm9sbGVkUmVjdC5oZWln
aHQoKTsKKyAgICBpZiAoaGVpZ2h0IDwgMCkKKyAgICAgICAgaGVpZ2h0ICs9IG1fc2Nyb2xsZWRS
ZWN0LmhlaWdodCgpOworICAgIG1fc2Nyb2xsZWRSZWN0T2Zmc2V0LnNldEhlaWdodChoZWlnaHQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCBkOGJkOWI2Li40MDA4ZmYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC03MCwxMCArNzAs
OCBAQCBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJp
bGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdAogLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS85
MTM4ODE3PiAtIEFmdGVyIHRoaXMgImJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IiByYWRhciBpcyBy
ZW1vdmVkLCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgdG8gb25seSByZXR1cm4gYW4gZW1w
dHkgU3RyaW5nLgogTlNTdHJpbmcgKldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSI7CiAKLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBQcm94
eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFByb3h5IjsKIHN0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IFdlYktpdDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQU1Byb3h5IjsK
LSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjkyZGUuLmNiMzYyMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE1NSwxMiArMTU1LDE5IEBACiAJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0
Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovOyB9
OwogCQkxQTY0MjBFNDEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyMEUyMTJEQ0Uy
RkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuY3BwICovOyB9OwogCQkxQTY0MjBFNTEyRENF
MkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVh
YmxlQml0bWFwLmggKi87IH07CisJCTFBNjQyMTg2MTJEQ0Y0OTIwMENBQUUyQyAvKiBEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE2NDIxODQxMkRDRjQ5MjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlJbXBsLmgg
Ki87IH07CisJCTFBNjQyMTg3MTJEQ0Y0OTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5SW1w
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0
MjE4NTEyRENGNDkyMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwICovOyB9Owor
CQkxQTY0MjFGNjEyRENGQkFCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFJbXBsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjFGNDEyRENGQkFCMDBD
QUFFMkMgLyogRHJhd2luZ0FyZWFJbXBsLmggKi87IH07CisJCTFBNjQyMUY3MTJEQ0ZCQUIwMENB
QUUyQyAvKiBEcmF3aW5nQXJlYUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUE2NDIxRjUxMkRDRkJBQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVh
SW1wbC5jcHAgKi87IH07CiAJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJl
YU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTY0MjI5NzEyREQwMjkyMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTY0MjI5QTEyREQwMjkyMDBDQUFFMkMgLyogRHJhd2lu
Z0FyZWFNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE2NDIyOTgxMkREMDI5MjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhTWVzc2FnZXMuaCAq
LzsgfTsKIAkJMUE2NDIzMDgxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE2NDIzMDYxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTY0MjMwOTEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTY0MjMwNzEyREQwOUVCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzLmggKi87IH07CiAJCTFBNjQyNDVFMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjQ1
QzEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5oICovOyB9OwogCQkxQTY0MjQ1RjEyREUy
OUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjQ1RDEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5m
by5jcHAgKi87IH07CisJCTFBNjQyNTY4MTJERTQyRUMwMENBQUUyQyAvKiBCYWNraW5nU3RvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyNTY2
MTJERTQyRUMwMENBQUUyQyAvKiBCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJMUE2NDI1NjkxMkRF
NDJFQzAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjU2NzEyREU0MkVDMDBDQUFFMkMgLyogQmFja2lu
Z1N0b3JlLmNwcCAqLzsgfTsKKwkJMUE2NDI5MkQxMkRFNUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdT
dG9yZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNjQyOTJDMTJERTVGOTgwMENBQUUyQyAvKiBCYWNraW5nU3RvcmVNYWMubW0gKi87IH07CiAJ
CTFBNjUwNkQyMTc1MDE1RTcwMDE3NDUxOCAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjUwNkQxMTc1MDE1RTcwMDE3
NDUxOCAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLzsgfTsKIAkJMUE2RjlGOTAxMUUxM0VGQzAwREIx
MzcxIC8qIENvbW1hbmRMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTZGOUY4RTExRTEzRUZDMDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLzsg
fTsKIAkJMUE2RjlGQjcxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkY5RkI2MTFFMTQw
ODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi87IH07CkBAIC0xOTcsNiArMjA0LDgg
QEAKIAkJMUE5MTAxMEIxMjY4QzhDQTAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkxMDEwOTEy
NjhDOENBMDAxODQyRjUgLyogRmluZEluZGljYXRvcldpbmRvdy5tbSAqLzsgfTsKIAkJMUE5MkRD
MTExMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTJEQzEwMTJGOEJBNDYwMDE3QUY2NSAv
KiBMYXllclRyZWVDb250ZXh0LmggKi87IH07CiAJCTFBOTJEQzEzMTJGOEJBQjkwMDE3QUY2NSAv
KiBMYXllclRyZWVDb250ZXh0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE5MkRDMTIxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRl
eHRNYWMubW0gKi87IH07CisJCTFBOTdFMDc2MTZBNUY5RTAwMDBCQzlFNSAvKiBMYXllclRyZWVI
b3N0TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTk3RTA3MzE2QTVGNTc4MDAwQkM5RTUgLyogTGF5ZXJUcmVlSG9zdE1hYy5oICovOyB9OworCQkx
QTk3RTA3NzE2QTVGOUUwMDAwQkM5RTUgLyogTGF5ZXJUcmVlSG9zdE1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTdFMDc0MTZBNUY1NzgwMDBC
QzlFNSAvKiBMYXllclRyZWVIb3N0TWFjLm1tICovOyB9OwogCQkxQTlGQkE4RDEzRkYwNEU2MDBE
RUVENjcgLyogUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTlGQkE4QzEzRkYwNEU2MDBERUVENjcgLyog
UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmggKi87IH07CiAJCTFBQTJFNTFEMTJFNEMwNUUw
MEJDNDk2NiAvKiBDR1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFBMkU1MUIxMkU0QzA1RTAwQkM0OTY2IC8qIENHVXRpbGl0aWVzLmgg
Ki87IH07CiAJCTFBQTJFNTFFMTJFNEMwNUUwMEJDNDk2NiAvKiBDR1V0aWxpdGllcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyRTUxQzEyRTRD
MDVFMDBCQzQ5NjYgLyogQ0dVdGlsaXRpZXMuY3BwICovOyB9OwpAQCAtMTQ5OCw2ICsxNTA3LDEw
IEBACiAJCTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyU3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NDIwRTIxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJl
YWJsZUJpdG1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFy
ZWFibGVCaXRtYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTY0MjBFMzEy
RENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNoYXJlYWJsZUJpdG1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQTY0MjE4NDEyRENGNDkyMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eUltcGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eUltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2NDIxODUxMkRDRjQ5MjAwQ0FBRTJDIC8q
IERyYXdpbmdBcmVhUHJveHlJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERyYXdpbmdBcmVhUHJveHlJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUE2NDIxRjQxMkRDRkJBQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhSW1wbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYUltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE2NDIxRjUxMkRDRkJBQjAwQ0FBRTJDIC8qIERyYXdpbmdB
cmVhSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5n
QXJlYUltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTY0MjI4QTEyREQw
MjQ3MDBDQUFFMkMgLyogRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRHJhd2luZ0FyZWEubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBNjQyMjk3MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjQyMjk4
MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1MDYsNiArMTUxOSw5IEBACiAJCTFBNjQyMzA3MTJERDA5RUIwMENB
QUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBNjQyNDVDMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVwZGF0ZUluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NDI0NUQxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXBkYXRlSW5mby5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBNjQyNTY2MTJERTQyRUMwMENBQUUyQyAv
KiBCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja2lu
Z1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBNjQyNTY3MTJERTQyRUMw
MENBQUUyQyAvKiBCYWNraW5nU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQmFja2luZ1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUE2NDI5MkMxMkRFNUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZU1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhY2tpbmdTdG9yZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NTA2RDExNzUwMTVFNzAwMTc0NTE4IC8qIE1lc3Nh
Z2VTZW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2Fn
ZVNlbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNkY5RjhFMTFFMTNF
RkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tYW5kTGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZGOUZC
NjExRTE0MDg1MDBEQjEzNzEgLyogQ29tbWFuZExpbmVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZExpbmVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU0NSw2ICsxNTYxLDggQEAKIAkJMUE5MTAxMDkxMjY4QzhDQTAwMTg0
MkY1IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGaW5kSW5kaWNhdG9yV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXllclRyZWVDb250ZXh0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTJEQzEyMTJGOEJBQjkwMDE3QUY2NSAvKiBM
YXllclRyZWVDb250ZXh0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTGF5ZXJUcmVlQ29udGV4dE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUE5N0UwNzMxNkE1RjU3ODAwMEJDOUU1IC8qIExheWVyVHJlZUhvc3RNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJUcmVlSG9zdE1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQTk3RTA3NDE2QTVGNTc4MDAwQkM5RTUgLyogTGF5ZXJUcmVl
SG9zdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExheWVy
VHJlZUhvc3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOUZCQThDMTNG
RjA0RTYwMERFRUQ2NyAvKiBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTFDNzlBMTAwRTdGQzUwMDc4REVCQyAvKiBX
ZWJDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRoID0gV2ViQ29yZS5mcmFtZXdvcms7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQTFDN0RFMTAwRTg0NkUwMDc4
REVCQyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9IEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTM3NzEsNiArMzc4OSw4IEBACiAJCQkJQkM4NDUyQTUxMTYyQzgwOTAwQ0FCOUI1IC8qIERy
YXdpbmdBcmVhLmNwcCAqLywKIAkJCQlCQzg0NTJBNjExNjJDODA5MDBDQUI5QjUgLyogRHJhd2lu
Z0FyZWEuaCAqLywKIAkJCQkxQTY0MjI4QTEyREQwMjQ3MDBDQUFFMkMgLyogRHJhd2luZ0FyZWEu
bWVzc2FnZXMuaW4gKi8sCisJCQkJMUE2NDIxRjUxMkRDRkJBQjAwQ0FBRTJDIC8qIERyYXdpbmdB
cmVhSW1wbC5jcHAgKi8sCisJCQkJMUE2NDIxRjQxMkRDRkJBQjAwQ0FBRTJDIC8qIERyYXdpbmdB
cmVhSW1wbC5oICovLAogCQkJCTkzRkM2NzlGMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRh
cHRlci5jcHAgKi8sCiAJCQkJOTNGQzY3QTAxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFw
dGVyLmggKi8sCiAJCQkJMUFBNTc1RjgxNDk2QjUyNjAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hl
ci5jcHAgKi8sCkBAIC0zODIwLDkgKzM4NDAsMTMgQEAKIAkJCQkzMUEyRUM0MDE0ODk5NzM3MDA4
MTBENzEgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkxQUVGQ0MwNTExRDAxRjM0MDA4MjE5RDMg
LyogUGx1Z2lucyAqLywKIAkJCQkxQTQ0Qjk1ODE2QjczRjhDMDBCN0JCRDggLyogU3RvcmFnZSAq
LywKKwkJCQkxQTY0MjU2NzEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3JlLmNwcCAqLywK
KwkJCQkxQTY0MjU2NjEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJ
QkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovLAogCQkJ
CUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8sCiAJCQkJ
MUE2NDIyRkMxMkREMDhGRTAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJMUE2NDIxODUxMkRDRjQ5MjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlJbXBs
LmNwcCAqLywKKwkJCQkxQTY0MjE4NDEyRENGNDkyMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFQcm94
eUltcGwuaCAqLywKIAkJCQkxQTkxMDA3MDEyNjY3NUM0MDAxODQyRjUgLyogRmluZEluZGljYXRv
ci5jcHAgKi8sCiAJCQkJMUE5MTAwNkYxMjY2NzVDMzAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3Iu
aCAqLywKIAkJCQlCQzE3NzUzRTExOEJBQkYwMDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNrLmgg
Ki8sCkBAIC00NDg1LDYgKzQ1MDksOCBAQAogCQlCQzk2M0Q2QzExM0REMTk1MDA1NzRCRTIgLyog
bWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTk3
RTA3MzE2QTVGNTc4MDAwQkM5RTUgLyogTGF5ZXJUcmVlSG9zdE1hYy5oICovLAorCQkJCTFBOTdF
MDc0MTZBNUY1NzgwMDBCQzlFNSAvKiBMYXllclRyZWVIb3N0TWFjLm1tICovLAogCQkJCTdDNkQz
N0ZBMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tICovLAogCQkJCTFBQjE2QUVD
MTY0QjQxRTQwMDI5MEQ2MiAvKiBSZW1vdGVHcmFwaGljc0xheWVyLmggKi8sCiAJCQkJMUFCMTZB
RUIxNjRCNDFFNDAwMjkwRDYyIC8qIFJlbW90ZUdyYXBoaWNzTGF5ZXIubW0gKi8sCkBAIC00NTk5
LDYgKzQ2MjUsNyBAQAogCQlCQ0NGMDg1QzExM0YzQjc1MDBDNjUwQzUgLyogbWFjICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTY0MjkyQzEyREU1Rjk4
MDBDQUFFMkMgLyogQmFja2luZ1N0b3JlTWFjLm1tICovLAogCQkJCUI4NzhCNjEzMTMzNDI4REMw
MDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCAqLywKIAkJCQlCODc4QjYxNDEzMzQyOERDMDA2
ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tICovLAogCQkJCTFBQjE2QUUwMTY0ODY1NkQwMDI5
MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggKi8sCkBAIC00OTcyLDYg
KzQ5OTksNyBAQAogCQkJCTUxMkY1ODk5MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEU4RUY5MTZCMjA5MUMw
MEU5MTQyOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MkY1OEEzMTJBODgzQUQwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUE2NDI1NjgxMkRFNDJFQzAwQ0FBRTJDIC8qIEJhY2tpbmdT
dG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MDg3NzExNkQ2Q0ZFNTAwRjk5MjI2IC8qIEJs
b2JSZWdpc3RyYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcwODc2QzE2RDZDQTY5
MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNjAx
NDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAq
LywKQEAgLTUwMDMsOSArNTAzMSwxMSBAQAogCQkJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAv
KiBEb3dubG9hZFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MTczODgxMTJE
RjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4NDUyQTgxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAq
LywKKwkJCQkxQTY0MjFGNjEyRENGQkFCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFJbXBsLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY0MjI5QTEyREQwMjkyMDBDQUFFMkMgLyogRHJh
d2luZ0FyZWFNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNjUyMTcxMTgyNjA4MTAw
MjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBNjQyMTg2
MTJEQ0Y0OTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5SW1wbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE2NDIzMDkxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURBNkVEMEExNDkwNjA2OTAwQjQxRDEyIC8qIER5bmFt
aWNMaW5rZXJFbnZpcm9ubWVudEV4dHJhY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFB
QjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTUw
NTMsNiArNTA4Myw3IEBACiAJCQkJQkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5IC8qIExheWVySG9z
dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOTJEQzExMTJGOEJBNDYwMDE3QUY2
NSAvKiBMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTE4NkVFQTEyRUY3
NjE4MDA4RTVGMzcgLyogTGF5ZXJUcmVlSG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE5N0Uw
NzYxNkE1RjlFMDAwMEJDOUU1IC8qIExheWVyVHJlZUhvc3RNYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMUQ4QkEyMTczMUEzNjMwMDE0MURBNCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE4QzcyOEQxNzM4NDc3QzAwMEE2NTU0IC8qIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBN0YyRjMxMjVCRjgyMDAw
OEFFQjFEIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtNjEyMiw2ICs2MTUzLDggQEAK
IAkJCQk1MThFOEVGODE2QjIwOTFDMDBFOTE0MjkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxOEU4RUZCMTZCMjA5MUMwMEU5MTQyOSAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXIubWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4QTIxMkE4ODNB
RDAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxQTY0MjU2OTEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3Jl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBNjQyOTJEMTJERTVGOTgwMENBQUUyQyAvKiBCYWNr
aW5nU3RvcmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTcwODc3MDE2RDZDRkU1MDBGOTky
MjYgLyogQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3MDg3
NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRjE4NjM4MTY3RDA3MUUwMEExQTg1QSAvKiBDYWNoZU1vZGVsLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNjE1Myw4ICs2MTg2LDEwIEBACiAJCQkJMUFEMjVFOTUxNjdBQjA4MTAwRUE5
QkNEIC8qIERvd25sb2FkUHJveHlNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q2MTkx
Mjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM4NDUyQTcxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTFBNjQyMUY3MTJEQ0ZCQUIwMENBQUUyQyAvKiBEcmF3aW5n
QXJlYUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NDIyOTkxMkREMDI5MjAwQ0FBRTJD
IC8qIERyYXdpbmdBcmVhTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
MjY1MjE2MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTFBNjQyMTg3MTJEQ0Y0OTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5SW1w
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMgLyogRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REE2
RUQwQjE0OTA2MDY5MDBCNDFEMTIgLyogRHluYW1pY0xpbmtlckVudmlyb25tZW50RXh0cmFjdG9y
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOENGRUNFOTQxNDkwRjE0MDAwMkFBQTMyIC8qIEVkaXRv
clN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNjIwMCw2ICs2MjM1LDcgQEAKIAkJCQlCQ0Uw
OTM3NzE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBOTJEQzEzMTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0TWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExODZFRUIxMkVGNzYxODAwOEU1RjM3IC8qIExheWVy
VHJlZUhvc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5N0UwNzcxNkE1RjlFMDAwMEJDOUU1
IC8qIExheWVyVHJlZUhvc3RNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTFEOEJBMTE3MzFB
MzYzMDAxNDFEQTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE4QzcyOEMxNzM4NDc3QzAwMEE2NTU0IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE3RjJGNTEyNUJGOEQ0MDA4QUVCMUQgLyogTG9n
Z2luZy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCAzYmZlOTc3Li4zYzk3MDBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC0yNTcsNyArMjU3
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZExheW91dChXZWJQ
YWdlKiBwYWdlLCBMYXlvdXRNaWxlc3RvbmVzIG0KICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRv
SW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJG
cmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdlKiBw
YWdlLCBXZWJGcmFtZSogZnJhbWUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6
OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UKICAgICBtX2NsaWVu
dC5kaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwg
V2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmIHdvcmxkKQordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6Omdsb2JhbE9iamVjdElzQXZhaWxhYmxlRm9y
RnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBXZWJDb3JlOjpET01XcmFwcGVy
V29ybGQqIHdvcmxkKQogewogICAgIGlmICghbV9jbGllbnQuZ2xvYmFsT2JqZWN0SXNBdmFpbGFi
bGVGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggZGZjZThlNS4uYzUzODY4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC03NywxMiArNzcsMTIg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkTGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1l
Kik7CiAgICAgdm9pZCBkaWRMYXlvdXQoV2ViUGFnZSosIFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZXMsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAKLSAgICB2b2lkIGRpZENsZWFyV2lu
ZG93T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkJik7CisgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYlBhZ2Uq
LCBXZWJGcmFtZSosIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZvaWQgZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKICAgICB2b2lk
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBj
b25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZGF0ZSk7CiAgICAgdm9pZCBk
aWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKIAotICAg
IHZvaWQgZ2xvYmFsT2JqZWN0SXNBdmFpbGFibGVGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUq
LCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKKyAgICB2b2lkIGdsb2JhbE9iamVjdElzQXZh
aWxhYmxlRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgV2ViQ29yZTo6RE9NV3JhcHBlcldv
cmxkKik7CiAgICAgdm9pZCB3aWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9i
YWxPYmplY3QoV2ViUGFnZSosIFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopOwogICAgIHZv
aWQgZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3QoV2ViUGFnZSos
IFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopOwogICAgIHZvaWQgd2lsbERlc3Ryb3lHbG9i
YWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24oV2ViUGFnZSosIFdlYkNvcmU6OkRPTVdpbmRv
d0V4dGVuc2lvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAK
aW5kZXggMzVhNTNlMy4uMmY0MGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQuY3BwCkBAIC00NywyMCArNDcsMjAgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKQogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGVXb3JsZCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZD4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUoRE9NV3JhcHBlcldvcmxkKiB3b3Js
ZCkKIHsKLSAgICBpZiAoJndvcmxkID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICBp
ZiAod29ybGQgPT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybiBub3Jt
YWxXb3JsZCgpOwogCi0gICAgaWYgKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIGV4aXN0aW5n
V29ybGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCogZXhpc3RpbmdXb3JsZCA9IGFsbFdvcmxkcygpLmdldCh3b3JsZCkpCiAgICAg
ICAgIHJldHVybiBleGlzdGluZ1dvcmxkOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkKCZ3b3JsZCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCh3b3JsZCkpOwogfQogCiBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpCiB7Ci0g
ICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkID0gYWRvcHRSZWYobmV3
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQoJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKSkubGVh
a1JlZigpOworICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCA9IGFk
b3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKSkubGVha1JlZigpOwogICAgIHJldHVybiB3b3JsZDsKIH0KIApAQCAtNzcsOSArNzcsOSBA
QCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjp+SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgp
CiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0KCkpOwogfQogCi1ET01XcmFwcGVy
V29ybGQmIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNvcmVXb3JsZCgpIGNvbnN0CitET01X
cmFwcGVyV29ybGQqIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNvcmVXb3JsZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICptX3dvcmxkLmdldCgpOworICAgIHJldHVybiBtX3dvcmxkLmdldCgp
OwogfQogICAgIAogdm9pZCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjbGVhcldyYXBwZXJz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKaW5kZXggNDhhNmYwZi4u
YWNkYzgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKQEAgLTM5
LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpUeXBlQnVuZGxlU2Ny
aXB0V29ybGQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNy
ZWF0ZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKICAgICBzdGF0aWMgSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCogbm9ybWFsV29ybGQoKTsKIAogICAgIHZpcnR1YWwgfkluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQoKTsKIAotICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYgY29yZVdv
cmxkKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKiBjb3JlV29ybGQoKSBj
b25zdDsKICAgICAKICAgICB2b2lkIGNsZWFyV3JhcHBlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDQwZmQ4MDguLjUw
NjE0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTg4Myw5ICs4ODMsOSBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50
KEV2ZW50KiBldmVudCkKICAgICAgICAgLy8gRklYTUU6IENsaWNraW5nIGluIGEgc2Nyb2xsIGJh
ciBzaG91bGQgbm90IGNoYW5nZSBmb2N1cy4KICAgICAgICAgaWYgKGN1cnJlbnRFdmVudC0+dHlw
ZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKICAgICAgICAgICAgIGZvY3VzUGx1Z2luRWxl
bWVudCgpOwotICAgICAgICAgICAgZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5n
TW91c2VFdmVudHNFbGVtZW50KG1fcGx1Z2luRWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBm
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUobV9wbHVn
aW5FbGVtZW50LmdldCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXZlbnQtPnR5cGUo
KSA9PSBXZWJFdmVudDo6TW91c2VVcCkKLSAgICAgICAgICAgIGZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKKyAgICAgICAgICAg
IGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsK
IAogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUV2ZW50KHN0
YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPigqY3VycmVudEV2ZW50KSk7CiAgICAgICAg
IGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKQEAgLTEz
NjUsNyArMTM2NSw3IEBAIE5QT2JqZWN0KiBQbHVnaW5WaWV3Ojp3aW5kb3dTY3JpcHROUE9iamVj
dCgpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBtX25wUnVudGltZU9i
amVjdE1hcC5nZXRPckNyZWF0ZU5QT2JqZWN0KCpwbHVnaW5Xb3JsZCgpLnZtKCksIGZyYW1lKCkt
PnNjcmlwdCgpLndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53aW5kb3coKSk7CisgICAgcmV0
dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3JlYXRlTlBPYmplY3QoKnBsdWdpbldvcmxk
KCktPnZtKCksIGZyYW1lKCktPnNjcmlwdCgpLndpbmRvd1NoZWxsKHBsdWdpbldvcmxkKCkpLT53
aW5kb3coKSk7CiB9CiAKIE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmpl
Y3QoKQpAQCAtMTM4MSw3ICsxMzgxLDcgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6OnBsdWdpbkVs
ZW1lbnROUE9iamVjdCgpCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGZyYW1lKCktPnNjcmlwdCgp
LmpzT2JqZWN0Rm9yUGx1Z2luRWxlbWVudChtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpOwogICAgIEFT
U0VSVChvYmplY3QpOwogCi0gICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmdldE9yQ3Jl
YXRlTlBPYmplY3QoKnBsdWdpbldvcmxkKCkudm0oKSwgb2JqZWN0KTsKKyAgICByZXR1cm4gbV9u
cFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdCgqcGx1Z2luV29ybGQoKS0+dm0o
KSwgb2JqZWN0KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpldmFsdWF0ZShOUE9iamVjdCogbnBP
YmplY3QsIGNvbnN0IFN0cmluZyYgc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCwgYm9v
bCBhbGxvd1BvcHVwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYmFm
MzdiYy4uOWI2ODQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE0
NDEsNyArMTQ0MSw3IEBAIFN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6b3ZlcnJpZGVNZWRp
YVR5cGUoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC0x
NDU2LDcgKzE0NTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmCiB9CiAKIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGUoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoR2xvYmFs
T2JqZWN0QXZhaWxhYmxlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggOGQzYmU5OS4uNzAyMjY4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMTk1LDkgKzE5NSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJ
bnNGb3JJbWFnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFU
eXBlKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdl
YkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFi
bGUoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0
KFdlYkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdl
YkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9NV2luZG93RXh0ZW5zaW9uKFdlYkNv
cmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMTg2ZWY0Ni4uOWVmZjQ2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogCiAv
LyBTdWJjbGFzc2VzCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCisKICNpZiBQTEFURk9S
TShNQUMpCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRl
ICJUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIgotI2Vsc2UKLSNpbmNsdWRlICJEcmF3
aW5nQXJlYUltcGwuaCIKICNlbmRpZgogCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIgpAQCAtNDEsMTQgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2Us
IGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgc3dp
dGNoIChwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhVHlwZSkgeworICAgIGNhc2UgRHJhd2luZ0FyZWFU
eXBlSW1wbDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFJbXBs
Pih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgY2FzZSBEcmF3
aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb246CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJz
KTsKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2Us
IHBhcmFtZXRlcnMpOwotI2Vsc2UKLSAgICBjYXNlIERyYXdpbmdBcmVhVHlwZUltcGw6Ci0gICAg
ICAgIHJldHVybiBEcmF3aW5nQXJlYUltcGw6OmNyZWF0ZSh3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsK
ICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAppbmRleCA5NzIxODFiLi5kMDI1MDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcApAQCAtMjU1LDcgKzI1NSwyMCBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6c2V0UGFpbnRp
bmdFbmFibGVkKGJvb2wgcGFpbnRpbmdFbmFibGVkKQogCiB2b2lkIERyYXdpbmdBcmVhSW1wbDo6
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7Ci0g
ICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Zm9yY2VDb21w
b3NpdGluZ01vZGVLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBTb29uIHdlIHdhbnQgcGFn
ZXMgd2l0aCBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGJlIGFibGUgdG8gYmUgc2Nyb2xs
ZWQgYnkgdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLgorICAgIC8vIEFzIGEgcGFydCBvZiB0aGF0
IHdvcmssIHdlIGhhdmUgdG8gY29tcG9zaXRlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzLCBhbmQg
d2UgaGF2ZSB0byBhbGxvdyB0aG9zZQorICAgIC8vIGVsZW1lbnRzIHRvIGNyZWF0ZSBhIHN0YWNr
aW5nIGNvbnRleHQuCisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNT
dGFja2luZ0NvbnRleHQodHJ1ZSk7CisKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTA2OTc0MTc+
OiBJdCBpcyBuZWNlc3NhcnkgdG8gZm9yY2UgY29tcG9zaXRpbmcgd2hlbiBhY2NlbGVyYXRlIGRy
YXdpbmcKKyAgICAvLyBpcyBlbmFibGVkIG9uIE1hYyBzbyB0aGF0IHNjcm9sbGJhcnMgYXJlIGFs
d2F5cyBpbiB0aGVpciBvd24gbGF5ZXJzLgorICAgIGlmIChtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCkuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpKQorICAgICAgICBtX3dlYlBh
Z2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoTGF5ZXJU
cmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOworICAgIGVsc2UKKyNl
bmRpZgorICAgICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
Ojpmb3JjZUNvbXBvc2l0aW5nTW9kZUtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiB9CiAKIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpsYXll
ckhvc3REaWRGbHVzaExheWVycygpCkBAIC00NjUsNyArNDc4LDEyIEBAIHZvaWQgRHJhd2luZ0Fy
ZWFJbXBsOjpyZXN1bWVQYWludGluZygpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBhbHdh
eXMgcmVwYWludCBldmVyeXRoaW5nIGhlcmUuCiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiAKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgaWYgKG1fd2ViUGFnZS0+d2luZG93SXNWaXNpYmxlKCkpCisg
ICAgICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7
CisjZWxzZQogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cmVzdW1lU2NyaXB0ZWRBbmltYXRp
b25zKCk7CisjZW5kaWYKIH0KIAogdm9pZCBEcmF3aW5nQXJlYUltcGw6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKQEAgLTY5OCw0
ICs3MTYsMjEgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpZFJlY2VpdmVDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3QKIH0KICNlbmRpZgogCisjaWYgUExB
VEZPUk0oTUFDKQordm9pZCBEcmF3aW5nQXJlYUltcGw6OnNldExheWVySG9zdGluZ01vZGUodWlu
dDMyX3Qgb3BhcXVlTGF5ZXJIb3N0aW5nTW9kZSkKK3sKKyAgICBMYXllckhvc3RpbmdNb2RlIGxh
eWVySG9zdGluZ01vZGUgPSBzdGF0aWNfY2FzdDxMYXllckhvc3RpbmdNb2RlPihvcGFxdWVMYXll
ckhvc3RpbmdNb2RlKTsKKyAgICBtX3dlYlBhZ2UtPnNldExheWVySG9zdGluZ01vZGUobGF5ZXJI
b3N0aW5nTW9kZSk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTGF5ZXJUcmVlQ29udGV4dCBvbGRMYXllclRyZWVDb250ZXh0ID0gbV9sYXllclRy
ZWVIb3N0LT5sYXllclRyZWVDb250ZXh0KCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5zZXRMYXll
ckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dC0+bGF5ZXJUcmVlQ29udGV4dCgpICE9IG9sZExheWVyVHJlZUNvbnRleHQpCisgICAgICAgIG1f
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUobV9iYWNraW5nU3RvcmVTdGF0ZUlELCBtX2xheWVyVHJlZUhvc3Qt
PmxheWVyVHJlZUNvbnRleHQoKSkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5oCmluZGV4IDc1OGYxMWIuLjA1OGZhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAgLTczLDYgKzczLDEwIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNo
KCkgT1ZFUlJJREU7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJIb3N0aW5nTW9kZSh1aW50MzJfdCkgT1ZFUlJJREU7CisjZW5kaWYKKwogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAppbmRleCA1OTNhMWNhLi5hNGExMDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC0yNiw2ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkxheWVyVHJlZUhvc3QuaCIKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJMYXll
clRyZWVIb3N0TWFjLmgiCisjZW5kaWYKKwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICNpbmNsdWRlICJDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKICNlbmRpZgpAQCAtNDAsNyAr
NDQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxMYXllclRyZWVIb3N0PiBM
YXllclRyZWVIb3N0OjpjcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIHsKLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBMYXllclRyZWVI
b3N0TWFjOjpjcmVhdGUod2ViUGFnZSk7CisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgcmV0dXJuIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHdlYlBhZ2UpOwog
I2VsaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgcmV0dXJu
IExheWVyVHJlZUhvc3RHdGs6OmNyZWF0ZSh3ZWJQYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYyZWViYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5o
CkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMYXllclRyZWVIb3N0TWFj
X2gKKyNkZWZpbmUgTGF5ZXJUcmVlSG9zdE1hY19oCisKKyNpbmNsdWRlICJMYXllclRyZWVIb3N0
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MYXllckZs
dXNoU2NoZWR1bGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIExheWVySG9zdGluZ0NvbnRleHQ7CitjbGFzcyBQYWdlT3Zl
cmxheTsKKworY2xhc3MgTGF5ZXJUcmVlSG9zdE1hYyA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBw
cml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQsIHByaXZhdGUgV2ViQ29yZTo6TGF5
ZXJGbHVzaFNjaGVkdWxlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TGF5ZXJUcmVlSG9zdE1hYz4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5MYXllclRy
ZWVIb3N0TWFjKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9zdE1hYyhX
ZWJQYWdlKik7CisKKyAgICAvLyBMYXllclRyZWVIb3N0LgorICAgIHZpcnR1YWwgY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENv
bnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZv
cmNlUmVwYWludCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgT1ZFUlJJREU7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkSW5zdGFsbFBhZ2VPdmVybGF5KFBhZ2VPdmVybGF5KikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFVuaW5zdGFsbFBhZ2VPdmVybGF5KFBhZ2VPdmVybGF5
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5
KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRQYWdlT3ZlcmxheU9wYWNpdHkoUGFnZU92ZXJsYXkqLCBmbG9hdCkgT1ZF
UlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSBPVkVSUklERTsKKwor
ICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNsaXBSZWN0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdENo
YW5nZXNGb3JMYXllcihjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJ
REUgeyB9CisKKyAgICAvLyBMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50CisgICAgdmlydHVhbCBi
b29sIGZsdXNoTGF5ZXJzKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2b2lkIHBl
cmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CisgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKTsKKworICAgIHZvaWQgY3JlYXRlUGFnZU92ZXJsYXlMYXllcihQYWdlT3ZlcmxheSop
OworICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoUGFnZU92ZXJsYXkqKTsKKworICAg
IGJvb2wgbV9pc1ZhbGlkOworICAgIGJvb2wgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2g7CisKKyAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyOworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlT3ZlcmxheSosIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPj4gUGFnZU92ZXJsYXlMYXllck1hcDsKKyAgICBQ
YWdlT3ZlcmxheUxheWVyTWFwIG1fcGFnZU92ZXJsYXlMYXllcnM7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0OworICAgIFdl
YkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgbV9sYXllckZsdXNoU2NoZWR1bGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBMYXllclRyZWVIb3N0TWFjX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVl
SG9zdE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJU
cmVlSG9zdE1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjc4NmYw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9MYXllclRyZWVIb3N0TWFjLm1tCkBAIC0wLDAgKzEsNDExIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMYXllclRyZWVIb3N0TWFjLmgiCisKKyNpbXBvcnQg
IkRyYXdpbmdBcmVhSW1wbC5oIgorI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgorI2lt
cG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9DQVRyYW5zYWN0aW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGludGVyZmFj
ZSBDQVRyYW5zYWN0aW9uIChEZXRhaWxzKQorKyAodm9pZClzeW5jaHJvbml6ZTsKK0BlbmQKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8TGF5ZXJUcmVlSG9zdE1hYz4gTGF5ZXJU
cmVlSG9zdE1hYzo6Y3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCit7CisgICAgUmVmUHRyPExheWVy
VHJlZUhvc3RNYWM+IGhvc3QgPSBhZG9wdFJlZihuZXcgTGF5ZXJUcmVlSG9zdE1hYyh3ZWJQYWdl
KSk7CisgICAgaG9zdC0+aW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBob3N0LnJlbGVhc2UoKTsK
K30KKworTGF5ZXJUcmVlSG9zdE1hYzo6TGF5ZXJUcmVlSG9zdE1hYyhXZWJQYWdlKiB3ZWJQYWdl
KQorICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQorICAgICwgbV9pc1ZhbGlkKHRydWUpCisg
ICAgLCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaChmYWxzZSkKKyAgICAsIG1fbGF5
ZXJGbHVzaFNjaGVkdWxlcih0aGlzKQoreworfQorCitMYXllclRyZWVIb3N0TWFjOjp+TGF5ZXJU
cmVlSG9zdE1hYygpCit7CisgICAgQVNTRVJUKCFtX2lzVmFsaWQpOworICAgIEFTU0VSVCghbV9y
b290TGF5ZXIpOworICAgIEFTU0VSVCghbV9sYXllckhvc3RpbmdDb250ZXh0KTsKK30KKworY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYgTGF5ZXJUcmVlSG9zdE1hYzo6bGF5ZXJUcmVlQ29udGV4dCgp
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlQ29udGV4dDsKK30KKwordm9pZCBMYXllclRyZWVI
b3N0TWFjOjpzY2hlZHVsZUxheWVyRmx1c2goKQoreworICAgIG1fbGF5ZXJGbHVzaFNjaGVkdWxl
ci5zY2hlZHVsZSgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldExheWVyRmx1c2hT
Y2hlZHVsaW5nRW5hYmxlZChib29sIGxheWVyRmx1c2hpbmdFbmFibGVkKQoreworICAgIGlmIChs
YXllckZsdXNoaW5nRW5hYmxlZCkKKyAgICAgICAgbV9sYXllckZsdXNoU2NoZWR1bGVyLnJlc3Vt
ZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9sYXllckZsdXNoU2NoZWR1bGVyLnN1c3BlbmQoKTsK
K30KKwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hl
ZHVsZWRMYXllckZsdXNoKGJvb2wgbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKQorewor
ICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gbm90aWZ5QWZ0ZXJTY2hlZHVs
ZWRMYXllckZsdXNoOworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldFJvb3RDb21wb3Np
dGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7CisgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworCisgICAgLy8gQWRkIHRo
ZSBhY2NlbGVyYXRlZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KKyAgICBpZiAoZ3JhcGhpY3NMYXll
cikKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5hZGRDaGlsZChncmFwaGlj
c0xheWVyKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0TWFjOjppbnZhbGlkYXRlKCkKK3sKKyAg
ICBBU1NFUlQobV9pc1ZhbGlkKTsKKworICAgIG1faXNWYWxpZCA9IGZhbHNlOworCisgICAgbV9y
b290TGF5ZXIgPSBudWxscHRyOworCisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5pbnZhbGlk
YXRlKCk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gbnVsbHB0cjsKKyAgICBtX2xheWVy
Rmx1c2hTY2hlZHVsZXIuaW52YWxpZGF0ZSgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6
OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkKK3sKKyAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAgUGFnZU92ZXJsYXlM
YXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheUxheWVycy5lbmQoKTsKKyAgICBm
b3IgKFBhZ2VPdmVybGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheUxheWVy
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+c2V0TmVlZHNE
aXNwbGF5KCk7CisKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwordm9pZCBMYXllclRy
ZWVIb3N0TWFjOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KQoreworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworCisgICAgUGFnZU92ZXJsYXlMYXllck1hcDo6aXRl
cmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheUxheWVycy5lbmQoKTsKKyAgICBmb3IgKFBhZ2VPdmVy
bGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheUxheWVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KHJlY3QpOworCisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVl
SG9zdE1hYzo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNjcm9s
bFJlY3QpCit7CisgICAgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3Qo
c2Nyb2xsUmVjdCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6Zm9yY2VSZXBhaW50KCkK
K3sKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKTsKKworICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBz
eW5jaHJvbml6ZV07Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6c2l6ZURpZENoYW5nZShj
b25zdCBJbnRTaXplJiBuZXdTaXplKQoreworICAgIG1fcm9vdExheWVyLT5zZXRTaXplKG5ld1Np
emUpOworCisgICAgLy8gSWYgdGhlIG5ld1NpemUgZXhwb3NlcyBuZXcgYXJlYXMgb2YgdGhlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgYSBzZXROZWVkc0Rpc3BsYXkgaXMgbmVlZGVkCisgICAgLy8g
Zm9yIHRob3NlIG5ld2x5IGV4cG9zZWQgYXJlYXMuCisgICAgRmxvYXRTaXplIG9sZFNpemUgPSBt
X25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNpemUoKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CisKKyAgICBpZiAobmV3U2l6ZS53aWR0aCgp
ID4gb2xkU2l6ZS53aWR0aCgpKSB7CisgICAgICAgIGZsb2F0IGhlaWdodCA9IHN0ZDo6bWluKHN0
YXRpY19jYXN0PGZsb2F0PihuZXdTaXplLmhlaWdodCgpKSwgb2xkU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KEZsb2F0UmVjdChvbGRTaXplLndpZHRoKCksIDAsIG5ld1NpemUud2lkdGgoKSAtIG9sZFNpemUu
d2lkdGgoKSwgaGVpZ2h0KSk7CisgICAgfQorCisgICAgaWYgKG5ld1NpemUuaGVpZ2h0KCkgPiBv
bGRTaXplLmhlaWdodCgpKQorICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNl
dE5lZWRzRGlzcGxheUluUmVjdChGbG9hdFJlY3QoMCwgb2xkU2l6ZS5oZWlnaHQoKSwgbmV3U2l6
ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpIC0gb2xkU2l6ZS5oZWlnaHQoKSkpOworCisgICAg
UGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9wYWdlT3ZlcmxheUxheWVycy5l
bmQoKTsKKyAgICBmb3IgKFBhZ2VPdmVybGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdl
T3ZlcmxheUxheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1
ZS0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIGZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworCisgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwor
ICAgIFtDQVRyYW5zYWN0aW9uIHN5bmNocm9uaXplXTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0
TWFjOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQoreworICAgIC8vIE90aGVyIGxh
eWVycyBsZWFybiBvZiB0aGUgc2NhbGUgZmFjdG9yIGNoYW5nZSB2aWEgV2ViUGFnZTo6c2V0RGV2
aWNlU2NhbGVGYWN0b3IuCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpw
YWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQoreworICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRMYXllci0+c2V0Q29udGVudHNPcGFxdWUobV93ZWJQYWdlLT5kcmF3c0JhY2tncm91
bmQoKSAmJiAhbV93ZWJQYWdlLT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpKTsKK30KKwor
dm9pZCBMYXllclRyZWVIb3N0TWFjOjpkaWRJbnN0YWxsUGFnZU92ZXJsYXkoUGFnZU92ZXJsYXkq
IHBhZ2VPdmVybGF5KQoreworICAgIGNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIocGFnZU92ZXJsYXkp
OworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6
OmRpZFVuaW5zdGFsbFBhZ2VPdmVybGF5KFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSkKK3sKKyAg
ICBkZXN0cm95UGFnZU92ZXJsYXlMYXllcihwYWdlT3ZlcmxheSk7CisgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6c2V0UGFnZU92ZXJsYXlOZWVk
c0Rpc3BsYXkoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBjb25zdCBJbnRSZWN0JiByZWN0KQor
eworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbV9wYWdlT3ZlcmxheUxheWVycy5nZXQocGFn
ZU92ZXJsYXkpOworCisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5
ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2go
KTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpzZXRQYWdlT3ZlcmxheU9wYWNpdHkoUGFn
ZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBmbG9hdCBvcGFjaXR5KQoreworICAgIEdyYXBoaWNzTGF5
ZXIqIGxheWVyID0gbV9wYWdlT3ZlcmxheUxheWVycy5nZXQocGFnZU92ZXJsYXkpOworCisgICAg
aWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5ZXItPnNldE9wYWNpdHkob3Bh
Y2l0eSk7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9z
dE1hYzo6cGF1c2VSZW5kZXJpbmcoKQoreworICAgIENBTGF5ZXIqIHJvb3QgPSBtX3Jvb3RMYXll
ci0+cGxhdGZvcm1MYXllcigpOworICAgIFtyb290IHNldFZhbHVlOihpZClrQ0ZCb29sZWFuVHJ1
ZSBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOworICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRl
ckRpZFBhdXNlTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3Q6cm9vdCBmb3JLZXk6QCJsYXllciJdXTsKK30KKwordm9pZCBM
YXllclRyZWVIb3N0TWFjOjpyZXN1bWVSZW5kZXJpbmcoKQoreworICAgIENBTGF5ZXIqIHJvb3Qg
PSBtX3Jvb3RMYXllci0+cGxhdGZvcm1MYXllcigpOworICAgIFtyb290IHNldFZhbHVlOihpZClr
Q0ZCb29sZWFuRmFsc2UgZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKKyAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAi
TlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpyb290IGZvcktleTpAImxheWVyIl1d
OworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJI
b3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQoreworICAgIGlmIChsYXllckhvc3RpbmdNb2Rl
ID09IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+bGF5ZXJIb3N0aW5nTW9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBUaGUgbW9kZSBoYXMgY2hhbmdlZC4KKworICAgIC8vIEZpcnN0LCBp
bnZhbGlkYXRlIHRoZSBvbGQgaG9zdGluZyBjb250ZXh0LgorICAgIG1fbGF5ZXJIb3N0aW5nQ29u
dGV4dC0+aW52YWxpZGF0ZSgpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG51bGxwdHI7
CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBhbmQgc2V0IGl0IHVwLgorICAgIHN3aXRj
aCAobGF5ZXJIb3N0aW5nTW9kZSkgeworICAgIGNhc2UgTGF5ZXJIb3N0aW5nTW9kZURlZmF1bHQ6
CisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dCA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvclBvcnQoV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQ
b3J0KCkpOworICAgICAgICBicmVhazsKKyNpZiBIQVZFKExBWUVSX0hPU1RJTkdfSU5fV0lORE9X
X1NFUlZFUikKKyAgICBjYXNlIExheWVySG9zdGluZ01vZGVJbldpbmRvd1NlcnZlcjoKKyAgICAg
ICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
V2luZG93U2VydmVyKCk7ICAgICAgICAKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICB9CisK
KyAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihtX3Jvb3RMYXllci0+cGxh
dGZvcm1MYXllcigpKTsKKyAgICBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gbV9sYXll
ckhvc3RpbmdDb250ZXh0LT5jb250ZXh0SUQoKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKQoreworfQorCit2b2lkIExh
eWVyVHJlZUhvc3RNYWM6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopCit7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6cGFpbnRDb250ZW50cyhj
b25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQoreworICAgIGlmIChncmFwaGljc0xheWVyID09IG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllci5nZXQoKSkgeworICAgICAgICBtX3dlYlBhZ2UtPmRyYXdSZWN0KGdyYXBoaWNzQ29u
dGV4dCwgY2xpcFJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChhdXRv
JiBwYWdlT3ZlcmxheUxheWVyIDogbV9wYWdlT3ZlcmxheUxheWVycykgeworICAgICAgICBpZiAo
cGFnZU92ZXJsYXlMYXllci52YWx1ZS5nZXQoKSA9PSBncmFwaGljc0xheWVyKSB7CisgICAgICAg
ICAgICBtX3dlYlBhZ2UtPmRyYXdQYWdlT3ZlcmxheShwYWdlT3ZlcmxheUxheWVyLmtleSwgZ3Jh
cGhpY3NDb250ZXh0LCBjbGlwUmVjdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KK30KKworZmxvYXQgTGF5ZXJUcmVlSG9zdE1hYzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBj
b25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCk7Cit9CisKK2Jvb2wgTGF5ZXJUcmVlSG9zdE1hYzo6Zmx1c2hMYXllcnMoKQoreworICAg
IHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgTGF5ZXJUcmVlSG9zdE1hYzo6aW5pdGlhbGl6ZSgpCit7CisgICAgLy8gQ3JlYXRlIGEgcm9v
dCBsYXllci4KKyAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGlj
c0xheWVyRmFjdG9yeSgpLCB0aGlzKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgbV9yb290TGF5ZXIt
PnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgcm9vdCBsYXllciIpOworI2VuZGlmCisgICAgbV9yb290
TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CisgICAgbV9yb290TGF5ZXItPnNldFNpemUo
bV93ZWJQYWdlLT5zaXplKCkpOworICAgIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KG1f
cm9vdExheWVyLmdldCgpKS0+cGxhdGZvcm1DQUxheWVyKCktPnNldEdlb21ldHJ5RmxpcHBlZCh0
cnVlKTsKKworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6
OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCB0aGlzKTsKKyAgICBzdGF0aWNfY2FzdDxH
cmFwaGljc0xheWVyQ0EqPihtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpLT5zZXRB
bGxvd1RpbGVkTGF5ZXIoZmFsc2UpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgbm9uLWNvbXBvc2l0ZWQgY29u
dGVudCIpOworI2VuZGlmCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRDb250
ZW50c09wYXF1ZShtX3dlYlBhZ2UtPmRyYXdzQmFja2dyb3VuZCgpICYmICFtX3dlYlBhZ2UtPmRy
YXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRM
YXllci0+c2V0U2l6ZShtX3dlYlBhZ2UtPnNpemUoKSk7CisgICAgaWYgKG1fd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpCisgICAgICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRydWUp
OworCisgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXll
ci5nZXQoKSk7CisKKyAgICBpZiAobV93ZWJQYWdlLT5oYXNQYWdlT3ZlcmxheSgpKSB7CisgICAg
ICAgIFBhZ2VPdmVybGF5TGlzdCYgcGFnZU92ZXJsYXlzID0gbV93ZWJQYWdlLT5wYWdlT3Zlcmxh
eXMoKTsKKyAgICAgICAgUGFnZU92ZXJsYXlMaXN0OjppdGVyYXRvciBlbmQgPSBwYWdlT3Zlcmxh
eXMuZW5kKCk7CisgICAgICAgIGZvciAoUGFnZU92ZXJsYXlMaXN0OjppdGVyYXRvciBpdCA9IHBh
Z2VPdmVybGF5cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBjcmVhdGVQ
YWdlT3ZlcmxheUxheWVyKGl0LT5nZXQoKSk7CisgICAgfQorCisgICAgc3dpdGNoIChtX3dlYlBh
Z2UtPmxheWVySG9zdGluZ01vZGUoKSkgeworICAgICAgICBjYXNlIExheWVySG9zdGluZ01vZGVE
ZWZhdWx0OgorICAgICAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0ID0gTGF5ZXJIb3N0aW5n
Q29udGV4dDo6Y3JlYXRlRm9yUG9ydChXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3NpdGluZ1Jl
bmRlclNlcnZlclBvcnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyNpZiBIQVZFKExBWUVSX0hP
U1RJTkdfSU5fV0lORE9XX1NFUlZFUikKKyAgICAgICAgY2FzZSBMYXllckhvc3RpbmdNb2RlSW5X
aW5kb3dTZXJ2ZXI6CisgICAgICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQgPSBMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JXaW5kb3dTZXJ2ZXIoKTsKKyAgICAgICAgICAgIGJyZWFr
OworI2VuZGlmCisgICAgfQorCisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5
ZXIobV9yb290TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgbV9sYXllclRyZWVDb250ZXh0
LmNvbnRleHRJRCA9IG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+Y29udGV4dElEKCk7CisKKyAgICBz
ZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQoIW1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKSB8
fCAhbV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVTdGF0ZUlzRnJvemVuKCkpOwor
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnBl
cmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCkKK3sKKyAgICB7CisgICAgICAgIFJlZjxMYXllclRy
ZWVIb3N0TWFjPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5l
ZWRlZCgpOworCisgICAgICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkgeworICAg
ICAgICAvLyBMZXQgdGhlIGRyYXdpbmcgYXJlYSBrbm93IHRoYXQgd2UndmUgZG9uZSBhIGZsdXNo
IG9mIHRoZSBsYXllciBjaGFuZ2VzLgorICAgICAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYUlt
cGwqPihtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCkpLT5sYXllckhvc3REaWRGbHVzaExheWVycygp
OworICAgICAgICBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCA9IGZhbHNlOworICAg
IH0KK30KKworYm9vbCBMYXllclRyZWVIb3N0TWFjOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMo
KQoreworICAgIGlmIChtX2xheWVyRmx1c2hTY2hlZHVsZXIuaXNTdXNwZW5kZWQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworICAgIFBhZ2VPdmVybGF5
TGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7CisgICAg
Zm9yIChQYWdlT3ZlcmxheUxheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZU92ZXJsYXlMYXll
cnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworICAgIHJldHVybiBtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5j
bHVkaW5nU3ViZnJhbWVzKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6Y3JlYXRlUGFn
ZU92ZXJsYXlMYXllcihQYWdlT3ZlcmxheSogcGFnZU92ZXJsYXkpCit7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzTGF5ZXI+IGxheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCksIHRoaXMpOworI2lmbmRlZiBOREVCVUcKKyAgICBsYXllci0+c2V0
TmFtZSgiTGF5ZXJUcmVlSG9zdCBwYWdlIG92ZXJsYXkgY29udGVudCIpOworI2VuZGlmCisKKyAg
ICBsYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0
dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpOworICAgIGxheWVyLT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7CisgICAgbGF5ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOwor
ICAgIGxheWVyLT5zZXRTaG93RGVidWdCb3JkZXIobV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0
aW5ncygpLnNob3dEZWJ1Z0JvcmRlcnMoKSk7CisgICAgbGF5ZXItPnNldFNob3dSZXBhaW50Q291
bnRlcihtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2hvd1JlcGFpbnRDb3VudGVy
KCkpOworCisgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGxheWVyLmdldCgpKTsKKworICAgIG1f
cGFnZU92ZXJsYXlMYXllcnMuYWRkKHBhZ2VPdmVybGF5LCBzdGQ6Om1vdmUobGF5ZXIpKTsKK30K
Kwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpkZXN0cm95UGFnZU92ZXJsYXlMYXllcihQYWdlT3Zl
cmxheSogcGFnZU92ZXJsYXkpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+
IGxheWVyID0gbV9wYWdlT3ZlcmxheUxheWVycy50YWtlKHBhZ2VPdmVybGF5KTsKKyAgICBBU1NF
UlQobGF5ZXIpOworCisgICAgbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXBpLnByaSBiL1NvdXJjZS9hcGku
cHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZDIwNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvYXBpLnByaQpAQCAtMCwwICsxLDExMSBAQAorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIFByb2plY3QgZmlsZSBmb3IgdGhlIFF0V2ViS2l0IEMrKyBBUElzCisjCisjIFNlZSAnVG9v
bHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyMgVXNlIFF0NSdzIG1vZHVsZSBzeXN0ZW0KK2xvYWQocXRfYnVpbGRfY29u
ZmlnKQorCitURU1QTEFURSA9IGxpYgorVEFSR0VUID0gUXRXZWJLaXQKKworV0VCS0lUX0RFU1RE
SVIgPSAkJHtST09UX0JVSUxEX0RJUn0vbGliCisKK1dFQktJVCArPSB3dGYgamF2YXNjcmlwdGNv
cmUgd2ViY29yZQorCitidWlsZD8od2Via2l0MSk6IFdFQktJVCArPSB3ZWJraXQxCitidWlsZD8o
d2Via2l0Mik6IFdFQktJVCArPSB3ZWJraXQyCisKKyMgRW5zdXJlIHRoYXQgY2hhbmdlcyB0byB0
aGUgV2ViS2l0MSBhbmQgV2ViS2l0MiBBUEkgd2lsbCB0cmlnZ2VyIGEgcW1ha2Ugb2YgdGhpcwor
IyBmaWxlLCB3aGljaCBpbiB0dXJuIHJ1bnMgc3luY3F0IHRvIHVwZGF0ZSB0aGUgZm9yd2FyZGlu
ZyBoZWFkZXJzLgorYnVpbGQ/KHdlYmtpdDEpOiB7CisgICAgUU1BS0VfSU5URVJOQUxfSU5DTFVE
RURfRklMRVMgKj0gV2ViS2l0L1dlYktpdDEucHJvCit9CitidWlsZD8od2Via2l0Mik6IFFNQUtF
X0lOVEVSTkFMX0lOQ0xVREVEX0ZJTEVTICo9IFdlYktpdDIvVGFyZ2V0LnByaQorCit1c2U/KDNE
X0dSQVBISUNTKTogV0VCS0lUICs9IGFuZ2xlCisKK01PRFVMRSA9IHdlYmtpdAorQ09ORklHICs9
IGNyZWF0aW5nX21vZHVsZQorCisjIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBsaXN0IG9mIGRlcGVu
ZGVuY2llcyBmb3IgdGhlIHB1YmxpYyBBUEkgb2YKKyMgdGhlIFF0V2ViS2l0IGxpYnJhcnksIGFu
ZCB3aWxsIGVuZCB1cCBpbiB0aGUgbGlicmFyeSdzIHBybCBmaWxlLgorUVRfQVBJX0RFUEVORFMg
PSBjb3JlIGd1aSBuZXR3b3JrCisKKyMgV2Ugd2FudCB0aGUgUXRXZWJLaXQgQVBJIGZvcndhcmRp
bmcgaW5jbHVkZXMgdG8gbGl2ZSBpbiB0aGUgcm9vdCBidWlsZCBkaXIuCitNT0RVTEVfQkFTRV9E
SVIgPSAkJF9QUk9fRklMRV9QV0RfCitNT0RVTEVfQkFTRV9PVVRESVIgPSAkJFJPT1RfQlVJTERf
RElSCisKK1FNQUtFX0RPQ1MgPSAkJFBXRC9xdHdlYmtpdC5xZG9jY29uZgorCisjIFdlIGxvYWQg
dGhlIHJlbGV2YW50IG1vZHVsZXMgaGVyZSwgc28gdGhhdCB0aGUgZWZmZWN0cyBvZiBlYWNoIG1v
ZHVsZQorIyBvbiB0aGUgUVQgdmFyaWFibGUgY2FuIGJlIHBpY2tlZCB1cCB3aGVuIHdlIGxhdGVy
IGxvYWQocXRfbW9kdWxlKS4KK2xvYWQod2Via2l0X21vZHVsZXMpCisKKyMgUmVzb3VyY2VzIGhh
dmUgdG8gYmUgaW5jbHVkZWQgZGlyZWN0bHkgaW4gdGhlIGZpbmFsIGJpbmFyeSBmb3IgTVNWQy4K
KyMgVGhlIGxpbmtlciB3b24ndCBwaWNrIHRoZW0gZnJvbSBhIHN0YXRpYyBsaWJyYXJ5IHNpbmNl
IHRoZXkgYXJlbid0IHJlZmVyZW5jZWQuCit3aW4qIHsKKyAgICBSRVNPVVJDRVMgKz0gJCRQV0Qv
V2ViQ29yZS9XZWJDb3JlLnFyYworICAgIGluY2x1ZGVfd2ViaW5zcGVjdG9yIHsKKyAgICAgICAg
IyBXRUJDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUiBpcyBkZWZpbmVkIGluIFdlYkNvcmUucHJp
LCBpbmNsdWRlZCBieQorICAgICAgICAjIGxvYWQod2Via2l0X21vZHVsZXMpIGlmIFdFQktJVCBj
b250YWlucyB3ZWJjb3JlLgorICAgICAgICBSRVNPVVJDRVMgKz0gXAorICAgICAgICAgICAgJCRQ
V0QvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgXAorICAgICAgICAgICAg
JCR7V0VCQ09SRV9HRU5FUkFURURfU09VUkNFU19ESVJ9L0luc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5xcmMKKyAgICB9Cit9CisKKyMgLS0tLS0tLS0tLS0tLS0tLSBDdXN0b20gZGV2ZWxvcGVyLWJ1
aWxkIGhhbmRsaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgVGhlIGFzc3VtcHRpb24gZm9y
IFF0IGRldmVsb3BlciBidWlsZHMgaXMgdGhhdCB0aGUgbW9kdWxlIGZpbGUKKyMgd2lsbCBiZSBw
dXQgaW50byBxdGJhc2UvbWtzcGVjcy9tb2R1bGVzLCBhbmQgdGhlIGxpYnJhcmllcyBpbnRvCisj
IHF0YmFzZS9saWIsIHdpdGggcnBhdGgvaW5zdGFsbF9uYW1lIHNldCB0byB0aGUgUXQgbGliIGRp
ci4KKyMKKyMgRm9yIFdlYktpdCB3ZSBkb24ndCB3YW50IHRoYXQgYmVoYXZpb3IgZm9yIHRoZSBs
aWJyYXJpZXMsIGFzIHdlIHdhbnQKKyMgdGhlbSB0byBiZSBzZWxmLWNvbnRhaW5lZCBpbiB0aGUg
V2ViS2l0IGJ1aWxkIGRpci4KKyMKKyFwcm9kdWN0aW9uX2J1aWxkOiBDT05GSUcgKz0gZm9yY2Vf
aW5kZXBlbmRlbnQKKworQkFTRV9UQVJHRVQgPSAkJFRBUkdFVAorCitsb2FkKHF0X21vZHVsZSkK
KworIyBNYWtlIHN1cmUgdGhlIGluc3RhbGxfbmFtZSBvZiB0aGUgUXRXZWJLaXQgbGlicmFyeSBw
b2ludCB0byB3ZWJraXQKKyFwcm9kdWN0aW9uX2J1aWxkOmZvcmNlX2luZGVwZW5kZW50Om1hY3gg
eworICAgICMgV2UgZG8gb3VyIG93biBhYnNvbHV0ZSBwYXRoIHNvIHRoYXQgd2UgY2FuIHRyaWNr
IHFtYWtlIGludG8KKyAgICAjIHVzaW5nIHRoZSB3ZWJraXQgYnVpbGQgcGF0aCBpbnN0ZWFkIG9m
IHRoZSBRdCBpbnN0YWxsIHBhdGguCisgICAgQ09ORklHIC09IGFic29sdXRlX2xpYnJhcnlfc29u
YW1lCisgICAgUU1BS0VfTEZMQUdTX1NPTkFNRSA9ICQkUU1BS0VfTEZMQUdTX1NPTkFNRSQkV0VC
S0lUX0RFU1RESVIvCisKKyAgICAhZGVidWdfYW5kX3JlbGVhc2V8YnVpbGRfcGFzcyB7CisgICAg
ICAgICMgV2UgYWxzbyBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgaW5zdGFsbF9uYW1lIGlzIGNvcnJl
Y3Qgd2hlbgorICAgICAgICAjIHRoZSBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KKyAgICAgICAgY2hh
bmdlX2luc3RhbGxfbmFtZS5kZXBlbmRzID0gaW5zdGFsbF90YXJnZXQKKworICAgICAgICAjIFRo
ZSBpbnN0YWxsIHJ1bGVzIGdlbmVyYXRlZCBieSBxbWFrZSBmb3IgZnJhbWV3b3JrcyBhcmUgYnVz
dGVkIGluCisgICAgICAgICMgdGhhdCBib3RoIHRoZSBkZWJ1ZyBhbmQgdGhlIHJlbGVhc2UgbWFr
ZWZpbGUgY29weSBRdFdlYktpdC5mcmFtZXdvcmsKKyAgICAgICAgIyBpbnRvIHRoZSBpbnN0YWxs
IGRpciwgc28gd2hhdGV2ZXIgY2hhbmdlcyB3ZSBkaWQgdG8gdGhlIHJlbGVhc2UgbGlicmFyeQor
ICAgICAgICAjIHdpbGwgZ2V0IG92ZXJ3cml0dGVuIHdoZW4gdGhlIGRlYnVnIGxpYnJhcnkgaXMg
aW5zdGFsbGVkLiBXZSB3b3JrIGFyb3VuZAorICAgICAgICAjIHRoYXQgYnkgcnVubmluZyBpbnN0
YWxsX25hbWUgb24gYm90aCwgZm9yIGJvdGggY29uZmlncy4KKyAgICAgICAgY2hhbmdlX2luc3Rh
bGxfbmFtZS5jb21tYW5kcyA9IGZyYW1ld29ya19kaXI9XCRcJChkaXJuYW1lICQoVEFSR0VURCkp
OyBcCisgICAgICAgICAgICBmb3IgZmlsZSBpbiBcJFwkKGxzICQkW1FUX0lOU1RBTExfTElCU10v
XCRcJGZyYW1ld29ya19kaXIvJCRCQVNFX1RBUkdFVCopOyBkbyBcCisgICAgICAgICAgICAgICAg
aW5zdGFsbF9uYW1lX3Rvb2wgLWlkIFwkXCRmaWxlIFwkXCRmaWxlOyBcCisgICAgICAgICAgICBk
b25lCisgICAgICAgIGRlZmF1bHRfaW5zdGFsbF90YXJnZXQudGFyZ2V0ID0gaW5zdGFsbAorICAg
ICAgICBkZWZhdWx0X2luc3RhbGxfdGFyZ2V0LmRlcGVuZHMgKz0gY2hhbmdlX2luc3RhbGxfbmFt
ZQorCisgICAgICAgIFFNQUtFX0VYVFJBX1RBUkdFVFMgKz0gY2hhbmdlX2luc3RhbGxfbmFtZSBk
ZWZhdWx0X2luc3RhbGxfdGFyZ2V0CisgICAgfQorfQorCitxbnggeworICAgICMgc2VlOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NjAKKyAgICAjIHRoZSBnY2Mg
NC40LjIgdXNlZCBpbiB0aGUgcW54IGJibmRrIGNhbm5vdCBjb3BlIHdpdGgKKyAgICAjIHRoZSBs
aW5rYWdlIHN0ZXAgb2YgbGliUXRXZWJLaXQsIGFkZGluZyBhIGR1bW15IC5jcHAKKyAgICAjIGZp
bGUgZml4ZXMgdGhpcyB0aG91Z2ggLSBzbyBkbyB0aGlzIGhlcmUKKyAgICBkdW1teWZpbGUudGFy
Z2V0ID0gZHVtbXkuY3BwCisgICAgZHVtbXlmaWxlLmNvbW1hbmRzID0gdG91Y2ggJCRkdW1teWZp
bGUudGFyZ2V0CisgICAgUU1BS0VfRVhUUkFfVEFSR0VUUyArPSBkdW1teWZpbGUKKyAgICBHRU5F
UkFURURfU09VUkNFUyArPSAkJGR1bW15ZmlsZS50YXJnZXQKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9xdHdlYmtpdC5xZG9jY29uZiBiL1NvdXJjZS9xdHdlYmtpdC5xZG9jY29uZgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTBlZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL3F0d2Via2l0LnFkb2Njb25mCkBAIC0wLDAgKzEsMzIgQEAKK2luY2x1ZGUoJFFUX0lOU1RB
TExfRE9DUy9nbG9iYWwvcXQtbW9kdWxlLWRlZmF1bHRzLnFkb2Njb25mKQorCitwcm9qZWN0ICAg
ICA9IFF0V2ViS2l0CitkZXNjcmlwdGlvbiA9ICJRdCBXZWJLaXQgQVBJIERvY3VtZW50YXRpb24i
Cit2ZXJzaW9uICAgICA9IDUuMC4wCisKKyMgRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgcHJvamVj
dC4gWW91IGNhbm5vdCB1c2Ugb3BlcmF0b3JzICgrLCA9LCAtKSBpbgorIyB0aGUgbmFtZS4gUHJv
cGVydGllcyBmb3IgdGhpcyBwcm9qZWN0IGFyZSBzZXQgdXNpbmcgYSBxaHAuPHByb2plY3RuYW1l
Pi5wcm9wZXJ0eQorIyBmb3JtYXQuCitxaHAucHJvamVjdHMgPSBRdFdlYktpdAorcWhwLlF0V2Vi
S2l0LmZpbGUgPSBxdHdlYmtpdC5xaHAKK3FocC5RdFdlYktpdC5uYW1lc3BhY2UgPSBvcmcucXQt
cHJvamVjdC5xdHdlYmtpdC41MDAKK3FocC5RdFdlYktpdC5pbmRleFRpdGxlID0gUXQgV2ViS2l0
CitxaHAuUXRXZWJLaXQudmlydHVhbEZvbGRlciAgPSBxdHdlYmtpdAorCisjIEZvciBsaXN0aW5n
IGNoaWxkIG5vZGVzIGluIFF0IENyZWF0b3Igb3IgQXNzaXN0YW50LgorcWhwLlF0V2ViS2l0LnN1
YnByb2plY3RzID0gY2xhc3NlcyBxbWx0eXBlcworcWhwLlF0V2ViS2l0LnN1YnByb2plY3RzLmNs
YXNzZXMudGl0bGUgPSBRdCBXZWJLaXQgV2lkZ2V0cworcWhwLlF0V2ViS2l0LnN1YnByb2plY3Rz
LmNsYXNzZXMuaW5kZXhUaXRsZSA9IFF0IFdlYktpdCBXaWRnZXRzCitxaHAuUXRXZWJLaXQuc3Vi
cHJvamVjdHMuY2xhc3Nlcy5zZWxlY3RvcnMgPSBjbGFzcyBmYWtlOmhlYWRlcmZpbGUKK3FocC5R
dFdlYktpdC5zdWJwcm9qZWN0cy5jbGFzc2VzLnNvcnRQYWdlcyA9IHRydWUKK3FocC5RdFdlYktp
dC5zdWJwcm9qZWN0cy5xbWx0eXBlcy50aXRsZSA9IFFNTCBUeXBlcworcWhwLlF0V2ViS2l0LnN1
YnByb2plY3RzLnFtbHR5cGVzLmluZGV4VGl0bGUgPSBRdCBXZWJLaXQgUU1MIFR5cGVzCitxaHAu
UXRXZWJLaXQuc3VicHJvamVjdHMucW1sdHlwZXMuc2VsZWN0b3JzID0gZmFrZTpoZWFkZXJmaWxl
CitxaHAuUXRXZWJLaXQuc3VicHJvamVjdHMucW1sdHlwZXMuc29ydFBhZ2VzID0gdHJ1ZQorCito
ZWFkZXJkaXJzID0gV2ViS2l0L3F0L0FwaSBXZWJLaXQvcXQvV2lkZ2V0QXBpIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdAorc291cmNlZGlycyA9IFdlYktpdC9xdC9BcGkgV2ViS2l0L3F0L1dpZGdl
dEFwaSBXZWJLaXQvcXQvZG9jcyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcXQvYXBpIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdAorZXhhbXBsZWRpcnMgPSBXZWJLaXQvcXQvZG9jcworaW1hZ2VkaXJz
ID0gV2ViS2l0L3F0L2RvY3MKKworZGVwZW5kcyArPSBxdGNvcmUgcXR3aWRnZXRzIHF0Z3VpIHF0
c2NyaXB0IHF0ZG9jIHF0cHJpbnRzdXBwb3J0IHF0eG1sIHF0d2Via2l0ZXhhbXBsZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9zeW5jLnByb2ZpbGUgYi9Tb3VyY2Uvc3luYy5wcm9maWxlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMWM1NjMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2Uvc3luYy5wcm9maWxlCkBAIC0wLDAgKzEsMjYgQEAKKyVtb2R1bGVzID0gKCAjIHBhdGgg
dG8gbW9kdWxlIG5hbWUgbWFwCisgICAgIlF0V2ViS2l0IiA9PiAiJGJhc2VkaXIiLAorICAgICJR
dFdlYktpdFdpZGdldHMiID0+ICIkYmFzZWRpciIKKyk7CislbW9kdWxlaGVhZGVycyA9ICggIyBy
ZXN0cmljdCB0aGUgbW9kdWxlIGhlYWRlcnMgdG8gdGhvc2UgZm91bmQgaW4gcmVsYXRpdmUgcGF0
aAorICAgICJRdFdlYktpdCIgPT4gIldlYktpdC9xdC9BcGk7V2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0IiwKKyAgICAiUXRXZWJLaXRXaWRnZXRzIiA9PiAiV2ViS2l0L3F0L1dpZGdldEFwaSIsCisp
OworJWNsYXNzbmFtZXMgPSAoCispOworQGlnbm9yZV9mb3JfbWFzdGVyX2NvbnRlbnRzID0gKCAi
cXdlYnNjcmlwdHdvcmxkLmgiLCAidGVzdHdpbmRvdy5oIiwgInV0aWwuaCIsICJieXRlYXJyYXl0
ZXN0ZGF0YS5oIiApOworCisjIE1vZHVsZSBkZXBlbmRlbmNpZXMuCisjIEV2ZXJ5IG1vZHVsZSB0
aGF0IGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoaXMgbW9kdWxlIHNob3VsZCBoYXZlIG9uZSBlbnRy
eS4KKyMgRWFjaCBvZiB0aGUgbW9kdWxlIHZlcnNpb24gc3BlY2lmaWVycyBjYW4gdGFrZSBvbmUg
b2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisjICAgLSBBIHNwZWNpZmljIEdpdCByZXZpc2lvbi4K
KyMgICAtIGFueSBnaXQgc3ltYm9saWMgcmVmIHJlc29sdmFibGUgZnJvbSB0aGUgbW9kdWxlJ3Mg
cmVwb3NpdG9yeSAoZS5nLiAicmVmcy9oZWFkcy9tYXN0ZXIiIHRvIHRyYWNrIG1hc3RlciBicmFu
Y2gpCisjICAgLSBhbiBlbXB0eSBzdHJpbmcgdG8gdXNlIHRoZSBzYW1lIGJyYW5jaCB1bmRlciB0
ZXN0IChkZXBlbmRlbmNpZXMgd2lsbCBiZWNvbWUgInJlZnMvaGVhZHMvbWFzdGVyIiBpZiB3ZSBh
cmUgaW4gdGhlIG1hc3RlciBicmFuY2gpCisjCislZGVwZW5kZW5jaWVzID0gKAorICAgICJxdGJh
c2UiID0+ICIiLAorICAgICJxdGRlY2xhcmF0aXZlIiA9PiAiIiwKKyAgICAicXRsb2NhdGlvbiIg
PT4gIiIsCisgICAgInF0bXVsdGltZWRpYSIgPT4gIiIsCisgICAgInF0c2Vuc29ycyIgPT4gIiIs
CispOwpkaWZmIC0tZ2l0IGEvU291cmNlL3Rlc3RzLnByaSBiL1NvdXJjZS90ZXN0cy5wcmkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwNmRiMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS90ZXN0cy5wcmkKQEAgLTAsMCArMSw1NSBAQAorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBy
b2plY3QgZmlsZSBmb3IgUXRXZWJLaXQgQVBJIHVuaXQtdGVzdHMKKyMKKyMgU2VlICdUb29scy9x
bWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworVEVNUExBVEUgPSBzdWJkaXJzCitDT05GSUcgKz0gb3JkZXJlZAorCitXRUJLSVRf
VEVTVFNfRElSID0gJCRQV0QvV2ViS2l0L3F0L3Rlc3RzCisKK1NVQkRJUlMgKz0gXAorICAgICQk
V0VCS0lUX1RFU1RTX0RJUi9jbWFrZSBcCisgICAgJCRXRUJLSVRfVEVTVFNfRElSL3FvYmplY3Ri
cmlkZ2UgXAorICAgICQkV0VCS0lUX1RFU1RTX0RJUi9xd2ViZnJhbWUgXAorICAgICQkV0VCS0lU
X1RFU1RTX0RJUi9xd2VicGFnZSBcCisgICAgJCRXRUJLSVRfVEVTVFNfRElSL3F3ZWJlbGVtZW50
IFwKKyAgICAkJFdFQktJVF9URVNUU19ESVIvcWdyYXBoaWNzd2VidmlldyBcCisgICAgJCRXRUJL
SVRfVEVTVFNfRElSL3F3ZWJoaXN0b3J5aW50ZXJmYWNlIFwKKyAgICAkJFdFQktJVF9URVNUU19E
SVIvcXdlYnZpZXcgXAorICAgICQkV0VCS0lUX1RFU1RTX0RJUi9xd2ViaGlzdG9yeSBcCisgICAg
JCRXRUJLSVRfVEVTVFNfRElSL3F3ZWJpbnNwZWN0b3IgXAorICAgICQkV0VCS0lUX1RFU1RTX0RJ
Ui9xd2Vic2VjdXJpdHlvcmlnaW4gXAorICAgICQkV0VCS0lUX1RFU1RTX0RJUi9oeWJyaWRQaXht
YXAKKworbGludXgtKiB7CisgICAgIyBUaGlzIHRlc3QgYnlwYXNzZXMgdGhlIGxpYnJhcnkgYW5k
IGxpbmtzIHRoZSB0ZXN0ZWQgY29kZSdzIG9iamVjdCBpdHNlbGYuCisgICAgIyBUaGlzIHN0cmVz
c2VzIHRoZSBidWlsZCBzeXN0ZW0gaW4gc29tZSBjb3JuZXJzIHNvIHdlIG9ubHkgcnVuIGl0IG9u
IGxpbnV4LgorICAgIFNVQkRJUlMgKz0gJCRXRUJLSVRfVEVTVFNfRElSL01JTUVTbmlmZmluZwor
fQorCisjIEJlbmNobWFya3MKK1NVQkRJUlMgKz0gXAorICAgICQkV0VCS0lUX1RFU1RTX0RJUi9i
ZW5jaG1hcmtzL3BhaW50aW5nIFwKKyAgICAkJFdFQktJVF9URVNUU19ESVIvYmVuY2htYXJrcy9s
b2FkaW5nCisKKyMgV2ViR0wgcGVyZm9ybWFuY2UgdGVzdHMgYXJlIGRpc2FibGVkIHRlbXBvcmFy
aWx5LgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA1MDMKKyMK
KyNlbmFibGU/KFdFQkdMKSB7CisjICAgIFNVQkRJUlMgKz0gJCRXRUJLSVRfVEVTVFNfRElSL2Jl
bmNobWFya3Mvd2ViZ2wKKyN9CisKK2J1aWxkPyh3ZWJraXQyKTogeworICAgIFdFQktJVDJfVEVT
VFNfRElSID0gJCRQV0QvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzCisKKyAgICBoYXZl
PyhRVFFVSUNLKTpTVUJESVJTICs9IFwKKyAgICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9pbnNw
ZWN0b3JzZXJ2ZXIgXAorICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3B1YmxpY2FwaSBcCisg
ICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcXF1aWNrd2VidmlldyBcCisgICAgICAgICQkV0VC
S0lUMl9URVNUU19ESVIvcW1sdGVzdHMKKworICAgIFNVQkRJUlMgKz0gXAorICAgICAgICAkJFdF
QktJVDJfVEVTVFNfRElSL3FyYXd3ZWJ2aWV3Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uvd2lkZ2V0
c2FwaS5wcmkgYi9Tb3VyY2Uvd2lkZ2V0c2FwaS5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uY2FlZDk4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS93aWRnZXRzYXBp
LnByaQpAQCAtMCwwICsxLDE1OSBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRhcmdldCBmaWxlIGZvciB0
aGUgUXRXZWJLaXRXaWRnZXRzIGR5bmFtaWMgbGlicmFyeQorIworIyBTZWUgJ1Rvb2xzL3FtYWtl
L1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisjIFVzZSBRdDUncyBtb2R1bGUgc3lzdGVtCitsb2FkKHF0X2J1aWxkX2NvbmZpZykKKwor
VEVNUExBVEUgPSBsaWIKK1RBUkdFVCA9IFF0V2ViS2l0V2lkZ2V0cworCisjIFRoaXMgaXMgcmVs
aWVkIHVwb24gYnkgb3VyIGV4cG9ydCBtYWNyb3MgYW5kIHNlZW1zIG5vdCB0byBiZSBwcm9wZXJs
eQorIyBkZWZpbmVkIGJ5IHRoZSBsb2dpYyBpbiBxdF9tb2R1bGUucHJmIGFzIGl0IHNob3VsZAor
REVGSU5FUyArPSBRVF9CVUlMRF9XRUJLSVRXSURHRVRTX0xJQgorCitXRUJLSVRfREVTVERJUiA9
ICQke1JPT1RfQlVJTERfRElSfS9saWIKKworU09VUkNFX0RJUiA9ICQke1JPT1RfV0VCS0lUX0RJ
Un0vU291cmNlL1dlYktpdAorCitJTkNMVURFUEFUSCArPSBcCisgICAgJCRTT1VSQ0VfRElSL3F0
L0FwaSBcCisgICAgJCRTT1VSQ0VfRElSL3F0L1dpZGdldEFwaSBcCisgICAgJCRTT1VSQ0VfRElS
L3F0L1dlYkNvcmVTdXBwb3J0IFwKKyAgICAkJFNPVVJDRV9ESVIvcXQvV2lkZ2V0U3VwcG9ydCBc
CisgICAgJCRST09UX1dFQktJVF9ESVIvU291cmNlL1dURi93dGYvcXQKKworaGF2ZT8ocXRzZW5z
b3JzKTppZihlbmFibGU/KERFVklDRV9PUklFTlRBVElPTil8ZW5hYmxlPyhPUklFTlRBVElPTl9F
VkVOVFMpKTogUVQgKz0gc2Vuc29ycworCitoYXZlPyhxdGxvY2F0aW9uKTplbmFibGU/KEdFT0xP
Q0FUSU9OKTogUVQgKz0gbG9jYXRpb24KKwordXNlPyhRVF9NVUxUSU1FRElBKTogUVQgKj0gbXVs
dGltZWRpYXdpZGdldHMKKworY29udGFpbnMoQ09ORklHLCB0ZXhtYXApOiBERUZJTkVTICs9IFdU
Rl9VU0VfVEVYVFVSRV9NQVBQRVI9MQorCit1c2U/KFBMVUdJTl9CQUNLRU5EX1hMSUIpOiBQS0dD
T05GSUcgKz0geDExCisKK1FUICs9IG5ldHdvcmsgd2lkZ2V0cyB3aWRnZXRzLXByaXZhdGUKK2hh
dmU/KFFUUVVJQ0spOiBRVCArPSBxdWljaworaGF2ZT8oUVRQUklOVFNVUFBPUlQpOiBRVCArPSBw
cmludHN1cHBvcnQKKwordXNlPyhURVhUVVJFX01BUFBFUl9HTCl8ZW5hYmxlPyhXRUJHTCkgewor
ICAgIFFUICo9IG9wZW5nbAorfQorUVQgKz0gd2Via2l0CisKK3VzZT8oM0RfR1JBUEhJQ1MpOiBX
RUJLSVQgKz0gQU5HTEUKKworV0VCS0lUICs9IGphdmFzY3JpcHRjb3JlIHd0ZiB3ZWJjb3JlCisK
K01PRFVMRSA9IHdlYmtpdHdpZGdldHMKKworIyBXZSB3YW50IHRoZSBRdFdlYktpdCBBUEkgZm9y
d2FyZGluZyBpbmNsdWRlcyB0byBsaXZlIGluIHRoZSByb290IGJ1aWxkIGRpci4KK01PRFVMRV9C
QVNFX0RJUiA9ICQkX1BST19GSUxFX1BXRF8KK01PRFVMRV9CQVNFX09VVERJUiA9ICQkUk9PVF9C
VUlMRF9ESVIKKworIyBUaGlzIGlzIHRoZSBjYW5vbmljYWwgbGlzdCBvZiBkZXBlbmRlbmNpZXMg
Zm9yIHRoZSBwdWJsaWMgQVBJIG9mCisjIHRoZSBRdFdlYktpdFdpZGdldHMgbGlicmFyeSwgYW5k
IHdpbGwgZW5kIHVwIGluIHRoZSBsaWJyYXJ5J3MgcHJsIGZpbGUuCitRVF9BUElfREVQRU5EUyA9
IGNvcmUgZ3VpIHdpZGdldHMgbmV0d29yayB3ZWJraXQKKworIyAtLS0tLS0tLS0tLS0tLS0tIEN1
c3RvbSBkZXZlbG9wZXItYnVpbGQgaGFuZGxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBU
aGUgYXNzdW1wdGlvbiBmb3IgUXQgZGV2ZWxvcGVyIGJ1aWxkcyBpcyB0aGF0IHRoZSBtb2R1bGUg
ZmlsZQorIyB3aWxsIGJlIHB1dCBpbnRvIHF0YmFzZS9ta3NwZWNzL21vZHVsZXMsIGFuZCB0aGUg
bGlicmFyaWVzIGludG8KKyMgcXRiYXNlL2xpYiwgd2l0aCBycGF0aC9pbnN0YWxsX25hbWUgc2V0
IHRvIHRoZSBRdCBsaWIgZGlyLgorIworIyBGb3IgV2ViS2l0IHdlIGRvbid0IHdhbnQgdGhhdCBi
ZWhhdmlvciBmb3IgdGhlIGxpYnJhcmllcywgYXMgd2Ugd2FudAorIyB0aGVtIHRvIGJlIHNlbGYt
Y29udGFpbmVkIGluIHRoZSBXZWJLaXQgYnVpbGQgZGlyLgorIworIXByb2R1Y3Rpb25fYnVpbGQ6
IENPTkZJRyArPSBmb3JjZV9pbmRlcGVuZGVudAorCitCQVNFX1RBUkdFVCA9ICQkVEFSR0VUCisK
K2xvYWQocXRfbW9kdWxlKQorCisjIE1ha2Ugc3VyZSB0aGUgaW5zdGFsbF9uYW1lIG9mIHRoZSBR
dFdlYktpdCBsaWJyYXJ5IHBvaW50IHRvIHdlYmtpdAorIXByb2R1Y3Rpb25fYnVpbGQ6Zm9yY2Vf
aW5kZXBlbmRlbnQ6bWFjeCB7CisgICAgIyBXZSBkbyBvdXIgb3duIGFic29sdXRlIHBhdGggc28g
dGhhdCB3ZSBjYW4gdHJpY2sgcW1ha2UgaW50bworICAgICMgdXNpbmcgdGhlIHdlYmtpdCBidWls
ZCBwYXRoIGluc3RlYWQgb2YgdGhlIFF0IGluc3RhbGwgcGF0aC4KKyAgICBDT05GSUcgLT0gYWJz
b2x1dGVfbGlicmFyeV9zb25hbWUKKyAgICBRTUFLRV9MRkxBR1NfU09OQU1FID0gJCRRTUFLRV9M
RkxBR1NfU09OQU1FJCRXRUJLSVRfREVTVERJUi8KKworICAgICFkZWJ1Z19hbmRfcmVsZWFzZXxi
dWlsZF9wYXNzIHsKKyAgICAgICAgIyBXZSBhbHNvIGhhdmUgdG8gbWFrZSBzdXJlIHRoZSBpbnN0
YWxsX25hbWUgaXMgY29ycmVjdCB3aGVuCisgICAgICAgICMgdGhlIGxpYnJhcnkgaXMgaW5zdGFs
bGVkLgorICAgICAgICBjaGFuZ2VfaW5zdGFsbF9uYW1lLmRlcGVuZHMgPSBpbnN0YWxsX3Rhcmdl
dAorCisgICAgICAgICMgVGhlIGluc3RhbGwgcnVsZXMgZ2VuZXJhdGVkIGJ5IHFtYWtlIGZvciBm
cmFtZXdvcmtzIGFyZSBidXN0ZWQgaW4KKyAgICAgICAgIyB0aGF0IGJvdGggdGhlIGRlYnVnIGFu
ZCB0aGUgcmVsZWFzZSBtYWtlZmlsZSBjb3B5IFF0V2ViS2l0LmZyYW1ld29yaworICAgICAgICAj
IGludG8gdGhlIGluc3RhbGwgZGlyLCBzbyB3aGF0ZXZlciBjaGFuZ2VzIHdlIGRpZCB0byB0aGUg
cmVsZWFzZSBsaWJyYXJ5CisgICAgICAgICMgd2lsbCBnZXQgb3ZlcndyaXR0ZW4gd2hlbiB0aGUg
ZGVidWcgbGlicmFyeSBpcyBpbnN0YWxsZWQuIFdlIHdvcmsgYXJvdW5kCisgICAgICAgICMgdGhh
dCBieSBydW5uaW5nIGluc3RhbGxfbmFtZSBvbiBib3RoLCBmb3IgYm90aCBjb25maWdzLgorICAg
ICAgICBjaGFuZ2VfaW5zdGFsbF9uYW1lLmNvbW1hbmRzID0gZnJhbWV3b3JrX2Rpcj1cJFwkKGRp
cm5hbWUgJChUQVJHRVREKSk7IFwKKyAgICAgICAgICAgIGZvciBmaWxlIGluIFwkXCQobHMgJCRb
UVRfSU5TVEFMTF9MSUJTXS9cJFwkZnJhbWV3b3JrX2Rpci8kJEJBU0VfVEFSR0VUKik7IGRvIFwK
KyAgICAgICAgICAgICAgICBpbnN0YWxsX25hbWVfdG9vbCAtaWQgXCRcJGZpbGUgXCRcJGZpbGU7
IFwKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgZGVmYXVsdF9pbnN0YWxsX3RhcmdldC50YXJn
ZXQgPSBpbnN0YWxsCisgICAgICAgIGRlZmF1bHRfaW5zdGFsbF90YXJnZXQuZGVwZW5kcyArPSBj
aGFuZ2VfaW5zdGFsbF9uYW1lCisKKyAgICAgICAgUU1BS0VfRVhUUkFfVEFSR0VUUyArPSBjaGFu
Z2VfaW5zdGFsbF9uYW1lIGRlZmF1bHRfaW5zdGFsbF90YXJnZXQKKyAgICB9Cit9CisKK1NPVVJD
RVMgKz0gXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRBcGkvcWdyYXBoaWNzd2Vidmlldy5j
cHAgXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYmZyYW1lLmNwcCBcCisgICAg
JCRQV0QvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAgXAorICAgICQkUFdEL1dlYktp
dC9xdC9XaWRnZXRBcGkvcXdlYnZpZXcuY3BwIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0
QXBpL3F3ZWJpbnNwZWN0b3IuY3BwIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9y
dC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0U3Vw
cG9ydC9RdFdlYkNvbWJvQm94LmNwcCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBv
cnQvUVdlYlVuZG9Db21tYW5kLmNwcCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBv
cnQvSW5pdFdlYktpdFF0LmNwcCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50V2ViUGFnZS5jcHAgXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRT
dXBwb3J0L1BhZ2VDbGllbnRRdC5jcHAgXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBw
b3J0L1FTdHlsZUZhY2FkZUltcC5jcHAgXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBw
b3J0L1FHcmFwaGljc1dpZGdldFBsdWdpbkltcGwuY3BwIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQv
V2lkZ2V0U3VwcG9ydC9RV2lkZ2V0UGx1Z2luSW1wbC5jcHAKKworSEVBREVSUyArPSBcCisgICAg
JCRQV0QvV2ViS2l0L3F0L1dpZGdldEFwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmggXAorICAgICQkUFdE
L1dlYktpdC9xdC9XaWRnZXRBcGkvcXdlYmZyYW1lLmggXAorICAgICQkUFdEL1dlYktpdC9xdC9X
aWRnZXRBcGkvcXdlYmZyYW1lX3AuaCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldEFwaS9x
d2VicGFnZS5oIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJwYWdlX3AuaCBc
CisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2Vidmlldy5oIFwKKyAgICAkJFBXRC9X
ZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJpbnNwZWN0b3IuaCBcCisgICAgJCRQV0QvV2ViS2l0L3F0
L1dpZGdldEFwaS9xd2ViaW5zcGVjdG9yX3AuaCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L0FwaS9x
d2Via2l0cGxhdGZvcm1wbHVnaW4uaCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBv
cnQvSW5pdFdlYktpdFF0LmggXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFdlYlBhZ2UuaCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBv
cnQvUXRGYWxsYmFja1dlYlBvcHVwLmggXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBw
b3J0L1F0V2ViQ29tYm9Cb3guaCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQv
UVdlYlVuZG9Db21tYW5kLmggXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L1Bh
Z2VDbGllbnRRdC5oIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9RR3JhcGhp
Y3NXaWRnZXRQbHVnaW5JbXBsLmggXAorICAgICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0
L1FTdHlsZUZhY2FkZUltcC5oIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9R
V2lkZ2V0UGx1Z2luSW1wbC5oIFwKKworY29udGFpbnMoUVRfQ09ORklHLCBhY2Nlc3NpYmlsaXR5
KSB7CisgICAgU09VUkNFUyArPSAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0QXBpL3F3ZWJ2aWV3YWNj
ZXNzaWJsZS5jcHAKKyAgICBIRUFERVJTICs9ICQkUFdEL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnZpZXdhY2Nlc3NpYmxlX3AuaCAKK30KKworSU5DTFVERVBBVEggKz0gXAorICAgICQkUFdEL3F0
L0FwaSBcCisgICAgJCRQV0QvcXQvV2ViQ29yZVN1cHBvcnQKKworZW5hYmxlPyhWSURFTykgewor
ICAgICF1c2U/KEdTVFJFQU1FUik6dXNlPyhRVF9NVUxUSU1FRElBKSB7CisgICAgICAgIEhFQURF
UlMgKz0gJCRQV0QvV2ViS2l0L3F0L1dpZGdldFN1cHBvcnQvRnVsbFNjcmVlblZpZGVvV2lkZ2V0
LmgKKyAgICAgICAgU09VUkNFUyArPSAkJFBXRC9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydC9GdWxs
U2NyZWVuVmlkZW9XaWRnZXQuY3BwCisgICAgfQorfQorCit1c2U/KFFUX01VTFRJTUVESUEpIHsK
KyAgICBTT1VSQ0VTICs9ICQkUFdEL1dlYktpdC9xdC9XaWRnZXRTdXBwb3J0L0RlZmF1bHRGdWxs
U2NyZWVuVmlkZW9IYW5kbGVyLmNwcAorICAgIEhFQURFUlMgKz0gJCRQV0QvV2ViS2l0L3F0L1dp
ZGdldFN1cHBvcnQvRGVmYXVsdEZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIuaAorfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmln
Lmpzb24gYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9j
b25maWcuanNvbgppbmRleCBiMzJlMjI2Li5jMTVmMDMzIDEwMDY0NAotLS0gYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNvbgorKysgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNv
bgpAQCAtMzQsMTQgKzM0LDI4IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3Rr
LWxpbnV4LXNsYXZlLTMiLCAicGxhdGZvcm0iOiAiZ3RrIn0sCiAgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiZ3RrLWxpbnV4LXNsYXZlLTQiLCAicGxhdGZvcm0iOiAiZ3RrIn0sCiAKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzemVnZWQtbGludXgtMSIsICJwbGF0Zm9ybSI6
ICJxdC01LjAtd2sxIn0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3plZ2VkLWxp
bnV4LTIiLCAicGxhdGZvcm0iOiAicXQtNS4wLXdrMSJ9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInN6ZWdlZC1saW51eC0zIiwgInBsYXRmb3JtIjogInF0LTUuMC13azEifSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzemVnZWQtbGludXgtNCIsICJwbGF0Zm9ybSI6
ICJxdC1hcm0ifSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzemVnZWQtbGludXgt
NSIsICJwbGF0Zm9ybSI6ICJxdC01LjAtd2syIn0sCisKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzemVnZWQtd2luZG93cy0xIiwgInBsYXRmb3JtIjogInF0LXdpbiJ9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInN6ZWdlZC13aW5kb3dzLTIiLCAicGxhdGZvcm0iOiAi
cXQtd2luIn0sCisKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvc2xvLW1vdW50YWlu
bGlvbiIsICJwbGF0Zm9ybSI6ICJxdC01LjAtbWFjLXdrMiJ9LAorCiAgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAid2luY2Fpcm8tMSIsICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIgfSwKIAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndpbmNlLTEiLCAicGxhdGZvcm0iOiAid2lu
Y2UiIH0sCiAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlZmwtbGludXgtc2xhdmUt
MSIsICJwbGF0Zm9ybSI6ICJlZmwiIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
ZWZsLWxpbnV4LXNsYXZlLTIiLCAicGxhdGZvcm0iOiAiZWZsIiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImVmbC1saW51eC1zbGF2ZS0zIiwgInBsYXRmb3JtIjogImVmbCIgfQor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVmbC1saW51eC1zbGF2ZS0zIiwgInBsYXRm
b3JtIjogImVmbCIgfSwKIAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1pcHMtMSIs
ICJwbGF0Zm9ybSI6ICJxdC1taXBzZWwifSwKKworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInNoNC1saW51eC0xIiwgInBsYXRmb3JtIjogInF0LXNoNCJ9CiAgICAgICAgICAgICAgICAg
ICBdLAogCiAgICAgImJ1aWxkZXJzIjogICBbIHsgIm5hbWUiOiAiQXBwbGUgTGlvbiBEZWJ1ZyAo
QnVpbGQpIiwgInR5cGUiOiAiQnVpbGQiLCAiYnVpbGRkaXIiOiAibGlvbi1kZWJ1ZyIsCkBAIC0x
NTksNiArMTczLDY0IEBACiAgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbImd0
ay1saW51eC1zbGF2ZS00Il0KICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlF0IExpbnV4IFJlbGVhc2Ui
LCAidHlwZSI6ICJCdWlsZEFuZFRlc3QiLCAiYnVpbGRkaXIiOiAicXQtbGludXgtcmVsZWFzZSIs
CisgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogInF0LTUuMC13azEiLCAiY29uZmln
dXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImkzODYiXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAiU1ZOTWlycm9yIjogInN2bjovL3dlYmtpdC5pbmYudS1zemVnZWQuaHUv
d2Via2l0LyIsCisgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbInN6ZWdlZC1s
aW51eC0xIl0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlF0IExpbnV4IFJlbGVhc2UgbWluaW1hbCIs
ICJ0eXBlIjogIkJ1aWxkIiwgImJ1aWxkZGlyIjogInF0LWxpbnV4LXJlbGVhc2UtbWluaW1hbCIs
CisgICAgICAgICAgICAgICAgICAgICAgIlNWTk1pcnJvciI6ICJzdm46Ly93ZWJraXQuaW5mLnUt
c3plZ2VkLmh1L3dlYmtpdC8iLAorICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJx
dC01LjAtd2sxIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjog
WyJpMzg2Il0sCisgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbInN6ZWdlZC1s
aW51eC0yIl0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlF0IExpbnV4IDY0LWJpdCBSZWxlYXNlIChQ
ZXJmKSIsICJ0eXBlIjogIkJ1aWxkQW5kUGVyZlRlc3QiLCAiYnVpbGRkaXIiOiAicXQtbGludXgt
NjQtcmVsZWFzZS1wZXJmLXRlc3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAiU1ZOTWlycm9y
IjogInN2bjovL3dlYmtpdC5pbmYudS1zemVnZWQuaHUvd2Via2l0LyIsCisgICAgICAgICAgICAg
ICAgICAgICAgInBsYXRmb3JtIjogInF0LTUuMC13azEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxl
YXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAorICAgICAgICAgICAgICAgICAgICAg
ICJzbGF2ZW5hbWVzIjogWyJzemVnZWQtbGludXgtMyJdCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJR
dCBMaW51eCA2NC1iaXQgUmVsZWFzZSAoV2ViS2l0MiBQZXJmKSIsICJ0eXBlIjogIkJ1aWxkQW5k
UGVyZlRlc3RXZWJLaXQyIiwgImJ1aWxkZGlyIjogInF0LWxpbnV4LTY0LXJlbGVhc2Utd2syLXBl
cmYtdGVzdHMiLAorICAgICAgICAgICAgICAgICAgICAgICJTVk5NaXJyb3IiOiAic3ZuOi8vd2Vi
a2l0LmluZi51LXN6ZWdlZC5odS93ZWJraXQvIiwKKyAgICAgICAgICAgICAgICAgICAgICAicGxh
dGZvcm0iOiAicXQtNS4wLXdrMiIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0
ZWN0dXJlcyI6IFsieDg2XzY0Il0sCisgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMi
OiBbInN6ZWdlZC1saW51eC01Il0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlF0IExpbnV4IEFSTXY3
IFJlbGVhc2UiLCAidHlwZSI6ICJCdWlsZCIsICJidWlsZGRpciI6ICJxdC1saW51eC1hcm12Ny1y
ZWxlYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAiU1ZOTWlycm9yIjogInN2bjovL3dlYmtp
dC5pbmYudS1zemVnZWQuaHUvd2Via2l0OjMzODkvIiwKKyAgICAgICAgICAgICAgICAgICAgICAi
cGxhdGZvcm0iOiAicXQtYXJtIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRl
Y3R1cmVzIjogWyJhcm12NyJdLAorICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVzIjog
WyJzemVnZWQtbGludXgtNCJdCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJRdCBMaW51eCBNSVBTMzJS
MiBMRSBSZWxlYXNlIiwgInR5cGUiOiAiQnVpbGQiLCAiYnVpbGRkaXIiOiAicXQtbGludXgtbWlw
c2VsLW1pcHMzMnIyLXJlbGVhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICJxdC1taXBzZWwiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMi
OiBbIm1pcHNlbCJdLAorICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVzIjogWyJtaXBz
LTEiXQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUXQgTGludXggU0g0IFJlbGVhc2UiLCAidHlwZSI6
ICJCdWlsZCIsICJidWlsZGRpciI6ICJxdC1saW51eC1zaDQtcmVsZWFzZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogInF0LXNoNCIsICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsic2g0Il0sCisgICAgICAgICAgICAgICAgICAgICAgInNs
YXZlbmFtZXMiOiBbInNoNC1saW51eC0xIl0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlF0IFdpbmRv
d3MgMzItYml0IFJlbGVhc2UiLCAidHlwZSI6ICJCdWlsZCIsICJidWlsZGRpciI6ICJxdC13aW5k
b3dzLTMyYml0LXJlbGVhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICJTVk5NaXJyb3IiOiAi
c3ZuOi8vd2Via2l0LmluZi51LXN6ZWdlZC5odS93ZWJraXQvIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAicGxhdGZvcm0iOiAicXQtd2luIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJh
cmNoaXRlY3R1cmVzIjogWyJpMzg2Il0sCisgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFt
ZXMiOiBbInN6ZWdlZC13aW5kb3dzLTEiXQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUXQgV2luZG93
cyAzMi1iaXQgRGVidWciLCAidHlwZSI6ICJCdWlsZCIsICJidWlsZGRpciI6ICJxdC13aW5kb3dz
LTMyYml0LWRlYnVnIiwKKyAgICAgICAgICAgICAgICAgICAgICAiU1ZOTWlycm9yIjogInN2bjov
L3dlYmtpdC5pbmYudS1zemVnZWQuaHUvd2Via2l0LyIsCisgICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogInF0LXdpbiIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVj
dHVyZXMiOiBbImkzODYiXSwKKyAgICAgICAgICAgICAgICAgICAgICAic2xhdmVuYW1lcyI6IFsi
c3plZ2VkLXdpbmRvd3MtMiJdCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJRdCBNb3VudGFpbiBMaW9u
IFJlbGVhc2UiLCAidHlwZSI6ICJCdWlsZEFuZFRlc3RXZWJLaXQyIiwgImJ1aWxkZGlyIjogInF0
LW1vdW50YWlubGlvbi1yZWxlYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0i
OiAicXQtNS4wLW1hYy13azIiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVj
dHVyZXMiOiBbIng4Nl82NCJdLAorICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJn
dW1lbnRzIjogWyItLXBpeGVsIl0sCisgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMi
OiBbIm9zbG8tbW91bnRhaW5saW9uIl0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNhaXJvIFJl
bGVhc2UiLCAidHlwZSI6ICJCdWlsZEFuZFRlc3QiLCAiYnVpbGRkaXIiOiAid2luLWNhaXJvLXJl
bGVhc2UiLAogICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiaTM4NiJdLAogICAg
ICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVzIjogWyJ3aW5jYWlyby0xIl0KQEAgLTE4Nyw2
ICsyNTksMTAgQEAKIAogICAgICJzY2hlZHVsZXJzIjogWyB7ICJ0eXBlIjogIkFueUJyYW5jaFNj
aGVkdWxlciIsICJuYW1lIjogInRydW5rIiwgImNoYW5nZV9maWx0ZXIiOiAidHJ1bmtfZmlsdGVy
IiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCiAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxk
ZXJOYW1lcyI6IFsiR1RLIExpbnV4IDMyLWJpdCBSZWxlYXNlIiwgIkdUSyBMaW51eCA2NC1iaXQg
UmVsZWFzZSIsICJHVEsgTGludXggNjQtYml0IERlYnVnIFdLMSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUXQgTGludXggUmVsZWFzZSIsICJRdCBMaW51eCBSZWxl
YXNlIG1pbmltYWwiLCAiUXQgTGludXggNjQtYml0IFJlbGVhc2UgKFBlcmYpIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJRdCBMaW51eCA2NC1iaXQgUmVsZWFzZSAo
V2ViS2l0MiBQZXJmKSIsICJRdCBMaW51eCBBUk12NyBSZWxlYXNlIiwgIlF0IExpbnV4IE1JUFMz
MlIyIExFIFJlbGVhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlF0IExpbnV4IFNINCBSZWxlYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJRdCBXaW5kb3dzIDMyLWJpdCBSZWxlYXNlIiwgIlF0IFdpbmRvd3MgMzItYml0IERl
YnVnIiwgIlF0IE1vdW50YWluIExpb24gUmVsZWFzZSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRUZMIExpbnV4IDY0LWJpdCBSZWxlYXNlIFdLMSIsICJFRkwgTGlu
dXggNjQtYml0IFJlbGVhc2UgV0syIiwgIkVGTCBMaW51eCAzMi1iaXQgUmVsZWFzZSAoQnVpbGQp
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaW5DYWlybyBSZWxl
YXNlIiwgIldpbkNFIFJlbGVhc2UgKEJ1aWxkKSJdCiAgICAgICAgICAgICAgICAgICAgIH0sCmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9tYXN0ZXIuY2ZnIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvbWFzdGVyLmNmZwppbmRleCBjNTYyZDk2Li4zODk0YWZmIDEwMDY0NAotLS0gYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnCisr
KyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rl
ci5jZmcKQEAgLTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKHNo
ZWxsLlNoZWxsQ29tbWFuZCk6CiAgICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKIAogZGVmIGFwcGVu
ZEN1c3RvbUJ1aWxkRmxhZ3Moc3RlcCwgcGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybT0iIik6IAotICAg
IGlmIHBsYXRmb3JtIGluICgnZWZsJywgJ2d0aycsICd3aW5jYWlybycsICd3aW5jZScsICd3eCcp
OgorICAgIGlmIHBsYXRmb3JtIGluICgnZWZsJywgJ2d0aycsICdxdCcsICd3aW5jYWlybycsICd3
aW5jZScsICd3eCcpOiAKICAgICAgICAgc3RlcC5zZXRDb21tYW5kKHN0ZXAuY29tbWFuZCArIFsn
LS0nICsgcGxhdGZvcm1dKQogCiBjbGFzcyBDb21waWxlV2ViS2l0KHNoZWxsLkNvbXBpbGUpOgpA
QCAtNjAyLDYgKzYwMiw2MSBAQCBjbGFzcyBSdW5HdGtBUElUZXN0cyhzaGVsbC5UZXN0KToKIAog
ICAgICAgICByZXR1cm4gW3NlbGYubmFtZV0KIAorY2xhc3MgUnVuUXRBUElUZXN0cyhzaGVsbC5U
ZXN0KToKKyAgICBuYW1lID0gIkFQSSB0ZXN0cyIKKyAgICBkZXNjcmlwdGlvbiA9IFsiQVBJIHRl
c3RzIHJ1bm5pbmciXQorICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiQVBJIHRlc3RzIl0KKworICAg
IGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgc2VsZi5zZXRDb21tYW5kKCBbInB5dGhvbiIsICIu
L1Rvb2xzL1NjcmlwdHMvcnVuLXF0d2Via2l0LXRlc3RzIiwgIi0tb3V0cHV0LWZpbGU9cXQtdW5p
dC10ZXN0cy5odG1sIiwgIi0tZG8tbm90LW9wZW4tcmVzdWx0cyIsICItLXRpbWVvdXQ9MTIwIiwg
Ii0tJXMiICUgc2VsZi5nZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicpXSApCisgICAgICAgIGlm
IHNlbGYuZ2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScpLmVuZHN3aXRoKCItd2syIik6CisgICAg
ICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXdlYmtpdDInXSkKKyAg
ICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKKworICAgIGRlZiBjb21tYW5kQ29t
cGxldGUoc2VsZiwgY21kKToKKyAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2Vs
ZiwgY21kKQorCisgICAgICAgIGxvZ1RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5nZXRUZXh0KCkK
KyAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZpbmRhbGwoIlRPVEFMUzogKD9QPHBhc3NlZD5cZCsp
IHBhc3NlZCwgKD9QPGZhaWxlZD5cZCspIGZhaWxlZCwgKD9QPHNraXBwZWQ+XGQrKSBza2lwcGVk
LCAoP1A8Y3Jhc2hlZD5cZCspIGNyYXNoZWQiLCBsb2dUZXh0KQorCisgICAgICAgIHNlbGYuaW5j
b3JyZWN0VGVzdHMgPSAwCisgICAgICAgIHNlbGYuY3Jhc2hlZFRlc3RzID0gMAorICAgICAgICBz
ZWxmLnN0YXR1c0xpbmUgPSBbXQorCisgICAgICAgIGlmIGZvdW5kSXRlbXM6CisgICAgICAgICAg
ICBzZWxmLmluY29ycmVjdFRlc3RzID0gaW50KGZvdW5kSXRlbXNbMF1bMV0pCisgICAgICAgICAg
ICBzZWxmLmNyYXNoZWRUZXN0cyA9IGludChmb3VuZEl0ZW1zWzBdWzNdKQorCisgICAgICAgICAg
ICBpZiBzZWxmLmluY29ycmVjdFRlc3RzID4gMCBvciBzZWxmLmNyYXNoZWRUZXN0cyA+IDA6Cisg
ICAgICAgICAgICAgICAgc2VsZi5zdGF0dXNMaW5lID0gWworICAgICAgICAgICAgICAgICAgICAi
JXMgcGFzc2VkLCAlcyBmYWlsZWQsICVzIHNraXBwZWQsICVzIGNyYXNoZWQiICUgKGZvdW5kSXRl
bXNbMF1bMF0sIGZvdW5kSXRlbXNbMF1bMV0sIGZvdW5kSXRlbXNbMF1bMl0sIGZvdW5kSXRlbXNb
MF1bM10pCisgICAgICAgICAgICAgICAgXQorCisgICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxm
LCBjbWQpOgorICAgICAgICBpZiBzZWxmLmNyYXNoZWRUZXN0czoKKyAgICAgICAgICAgIHJldHVy
biBGQUlMVVJFCisKKyAgICAgICAgaWYgcmUuZmluZGFsbCgiVGltZW91dCwgcHJvY2VzcyIsIGNt
ZC5sb2dzWydzdGRpbyddLmdldFRleHQoKSk6CisgICAgICAgICAgICBzZWxmLnN0YXR1c0xpbmUg
PSBbIkZhaWx1cmU6IHRpbWVvdXQgb2NjdXJlZCBkdXJpbmcgdGVzdGluZyJdCisgICAgICAgICAg
ICByZXR1cm4gRkFJTFVSRQorCisgICAgICAgIGlmIHNlbGYuaW5jb3JyZWN0VGVzdHM6CisgICAg
ICAgICAgICByZXR1cm4gV0FSTklOR1MKKworICAgICAgICBpZiBjbWQucmMgIT0gMDoKKyAgICAg
ICAgICAgIHJldHVybiBGQUlMVVJFCisKKyAgICAgICAgcmV0dXJuIFNVQ0NFU1MKKworICAgIGRl
ZiBnZXRUZXh0KHNlbGYsIGNtZCwgcmVzdWx0cyk6CisgICAgICAgIHJldHVybiBzZWxmLmdldFRl
eHQyKGNtZCwgcmVzdWx0cykKKworICAgIGRlZiBnZXRUZXh0MihzZWxmLCBjbWQsIHJlc3VsdHMp
OgorICAgICAgICBpZiByZXN1bHRzICE9IFNVQ0NFU1MgYW5kIHNlbGYuaW5jb3JyZWN0VGVzdHM6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zdGF0dXNMaW5lCisKKyAgICAgICAgcmV0dXJuIFtz
ZWxmLm5hbWVdCisKIGNsYXNzIFJ1bldlYktpdExlYWtUZXN0cyhSdW5XZWJLaXRUZXN0cyk6CiAg
ICAgd2Fybk9uV2FybmluZ3MgPSBUcnVlCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpAQCAtNzExLDcg
Kzc2Niw5IEBAIGNsYXNzIEZhY3RvcnkoZmFjdG9yeS5CdWlsZEZhY3RvcnkpOgogICAgICAgICBp
ZiBTVk5NaXJyb3I6CiAgICAgICAgICAgICBzZWxmLmFkZFN0ZXAoV2FpdEZvclNWTlNlcnZlcigp
KQogICAgICAgICBzZWxmLmFkZFN0ZXAoQ2hlY2tPdXRTb3VyY2UoU1ZOTWlycm9yPVNWTk1pcnJv
cikpCi0gICAgICAgIHNlbGYuYWRkU3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCisgICAgICAgICMg
VGhlcmUgYXJlIG11bHRpcGxlIFF0IHNsYXZlcyBydW5uaW5nIG9uIHNhbWUgbWFjaGluZXMsIHNv
IGJ1aWxkc2xhdmVzIHNob3VsZG4ndCBraWxsIHRoZSBwcm9jZXNzZXMgb2Ygb3RoZXIgc2xhdmVz
LgorICAgICAgICBpZiBub3QgcGxhdGZvcm0uc3RhcnRzd2l0aCgicXQiKToKKyAgICAgICAgICAg
IHNlbGYuYWRkU3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCiAgICAgICAgIHNlbGYuYWRkU3RlcChE
ZWxldGVTdGFsZUJ1aWxkRmlsZXMoKSkKICAgICAgICAgaWYgcGxhdGZvcm0gPT0gIndpbiI6CiAg
ICAgICAgICAgICBzZWxmLmFkZFN0ZXAoSW5zdGFsbFdpbjMyRGVwZW5kZW5jaWVzKCkpCkBAIC03
NjIsNiArODE5LDggQEAgY2xhc3MgVGVzdEZhY3RvcnkoRmFjdG9yeSk6CiAgICAgICAgICAgICBz
ZWxmLmFkZFN0ZXAoUnVuRWZsQVBJVGVzdHMpCiAgICAgICAgIGlmIHBsYXRmb3JtID09ICJndGsi
OgogICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkd0a0FQSVRlc3RzKCkpCisgICAgICAgIGlm
IHBsYXRmb3JtLnN0YXJ0c3dpdGgoInF0Iik6CisgICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVu
UXRBUElUZXN0cykKIAogY2xhc3MgQnVpbGRBbmRUZXN0RmFjdG9yeShGYWN0b3J5KToKICAgICBD
b21waWxlQ2xhc3MgPSBDb21waWxlV2ViS2l0CkBAIC03ODYsNiArODQ1LDggQEAgY2xhc3MgQnVp
bGRBbmRUZXN0RmFjdG9yeShGYWN0b3J5KToKICAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5F
ZmxBUElUZXN0cygpKQogICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIjoKICAgICAgICAgICAg
IHNlbGYuYWRkU3RlcChSdW5HdGtBUElUZXN0cygpKQorICAgICAgICBpZiBwbGF0Zm9ybS5zdGFy
dHN3aXRoKCJxdCIpOgorICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFJ1blF0QVBJVGVzdHMoKSkK
ICAgICAgICAgaWYgdHJpZ2dlcnM6CiAgICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2ZUJ1
aWx0UHJvZHVjdCgpKQogICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFVwbG9hZEJ1aWx0UHJvZHVj
dCgpKQpAQCAtOTE1LDYgKzk3Niw4IEBAIGRlZiBsb2FkQnVpbGRlckNvbmZpZyhjKToKICAgICAg
ICAgICAgIGJ1aWxkZXJbImNhdGVnb3J5Il0gPSAnQXBwbGVXaW4nCiAgICAgICAgIGVsaWYgcGxh
dGZvcm0uc3RhcnRzd2l0aCgnZ3RrJyk6CiAgICAgICAgICAgICBidWlsZGVyWyJjYXRlZ29yeSJd
ID0gJ0dUSycKKyAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdxdCcpOgorICAgICAg
ICAgICAgYnVpbGRlclsiY2F0ZWdvcnkiXSA9ICdRdCcKICAgICAgICAgZWxpZiBwbGF0Zm9ybS5z
dGFydHN3aXRoKCdlZmwnKToKICAgICAgICAgICAgIGJ1aWxkZXJbImNhdGVnb3J5Il0gPSAiRUZM
IgogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5IGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5
CmluZGV4IDczNWFlMWIuLjY3MjhhMWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3RlcmNmZ191bml0dGVzdC5weQorKysgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXJjZmdf
dW5pdHRlc3QucHkKQEAgLTIwMSw2ICsyMDEsMTI5IEBAIFJlc3VsdHMgZm9yIEpTQyBzdHJlc3Mg
dGVzdHM6CiAgICAgT0suIiIiKQogCiAKK2NsYXNzIFJ1blF0QVBJVGVzdHNUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCBleHBlY3RlZF9yZXN1bHQs
IGV4cGVjdGVkX3RleHQsIHN0ZGlvKToKKyAgICAgICAgcmMgPSAwCisgICAgICAgIGNtZCA9IFN0
dWJSZW1vdGVDb21tYW5kKHJjLCBzdGRpbykKKyAgICAgICAgc3RlcCA9IFJ1blF0QVBJVGVzdHMo
KQorICAgICAgICBzdGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCisgICAgICAgIGFjdHVhbF9yZXN1
bHRzID0gc3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21kKQorICAgICAgICBhY3R1YWxfdGV4dCA9IHN0
cihzdGVwLmdldFRleHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpWzBdKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcmVzdWx0LCBhY3R1YWxfcmVzdWx0cykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCkKKworICAgIGRlZiB0ZXN0
X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCAiQVBJ
IHRlc3RzIiwgIiIiSU5GTzpFeGVjOlJ1bm5pbmcuLi4gV2ViS2l0QnVpbGQvUmVsZWFzZS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlj
a3dlYnZpZXcKK0lORk86RXhlYzpSdW5uaW5nLi4uIFdlYktpdEJ1aWxkL1JlbGVhc2UvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy90c3RfcW1sdGVzdHMKK1Ft
bCBkZWJ1Z2dpbmcgaXMgZW5hYmxlZC4gT25seSB1c2UgdGhpcyBpbiBhIHNhZmUgZW52aXJvbm1l
bnQhCitJTkZPOkV4ZWM6RmluaXNoZWQgV2ViS2l0QnVpbGQvUmVsZWFzZS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcK
K0VSUk9SOkV4ZWM6VGltZW91dCwgcHJvY2VzcyAnV2ViS2l0QnVpbGQvUmVsZWFzZS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3RzdF9xbWx0ZXN0cycgKDIz
MzYpIHdhcyB0ZXJtaW5hdGVkCitJTkZPOkV4ZWM6RmluaXNoZWQgV2ViS2l0QnVpbGQvUmVsZWFz
ZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3RzdF9xbWx0
ZXN0cworKioqKioqKioqIFN0YXJ0IHRlc3Rpbmcgb2YgdHN0X1FRdWlja1dlYlZpZXcgKioqKioq
KioqCitDb25maWc6IFVzaW5nIFFUZXN0IGxpYnJhcnkgNS4wLjAsIFF0IDUuMC4wCitQQVNTICAg
OiB0c3RfUVF1aWNrV2ViVmlldzo6aW5pdFRlc3RDYXNlKCkKK1FXQVJOICA6IHRzdF9RUXVpY2tX
ZWJWaWV3OjphY2Nlc3NQYWdlKCkgUVF1aWNrQ2FudmFzOiBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBw
b3J0IHRocmVhZGVkIHJlbmRlcmluZyEKKy4KKy4KKy4KKworKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogICAg
ICAgIFRPVEFMUzogMTYgcGFzc2VkLCAwIGZhaWxlZCwgMCBza2lwcGVkLCAwIGNyYXNoZWQgICAg
ICAgICAqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiIiIikKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUNDRVNTLCAiQVBJIHRlc3RzIiwgIiIiSU5G
TzpFeGVjOlJ1bm5pbmcuLi4gV2ViS2l0QnVpbGQvUmVsZWFzZS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcKK0lORk86
RXhlYzpSdW5uaW5nLi4uIFdlYktpdEJ1aWxkL1JlbGVhc2UvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy90c3RfcW1sdGVzdHMKK1FtbCBkZWJ1Z2dpbmcgaXMg
ZW5hYmxlZC4gT25seSB1c2UgdGhpcyBpbiBhIHNhZmUgZW52aXJvbm1lbnQhCitJTkZPOkV4ZWM6
RmluaXNoZWQgV2ViS2l0QnVpbGQvUmVsZWFzZS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcKKyoqKioqKioqKiBTdGFy
dCB0ZXN0aW5nIG9mIHRzdF9RUXVpY2tXZWJWaWV3ICoqKioqKioqKgorQ29uZmlnOiBVc2luZyBR
VGVzdCBsaWJyYXJ5IDUuMC4wLCBRdCA1LjAuMAorUEFTUyAgIDogdHN0X1FRdWlja1dlYlZpZXc6
OmluaXRUZXN0Q2FzZSgpCitRV0FSTiAgOiB0c3RfUVF1aWNrV2ViVmlldzo6YWNjZXNzUGFnZSgp
IFFRdWlja0NhbnZhczogcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aHJlYWRlZCByZW5kZXJp
bmchCisuCisuCisuCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqICAgICAgICBUT1RBTFM6IDE2IHBhc3Nl
ZCwgMCBmYWlsZWQsIDAgc2tpcHBlZCwgMCBjcmFzaGVkICAgICAgICAgKioKKyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioiIiIpCisKKyAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dFJlc3VsdHMoV0FSTklOR1MsICIxNiBwYXNzZWQsIDEgZmFpbGVkLCAwIHNraXBwZWQsIDAgY3Jh
c2hlZCIsICIiIioqKioqKioqKiBTdGFydCB0ZXN0aW5nIG9mIHRzdF9RRGVjbGFyYXRpdmVXZWJW
aWV3ICoqKioqKioqKgorUEFTUyAgIDogdHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnByZXNzR3Jh
YlRpbWUoKQorUEFTUyAgIDogdHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnJlbmRlcmluZ0VuYWJs
ZWQoKQorUEFTUyAgIDogdHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnNldEh0bWwoKQorUEFTUyAg
IDogdHN0X1FEZWNsYXJhdGl2ZVdlYlZpZXc6OnNldHRpbmdzKCkKK0ZBSUwhICA6IHRzdF9RRGVj
bGFyYXRpdmVXZWJWaWV3OjpiYWNrZ3JvdW5kQ29sb3IoKSBDb21wYXJlZCB2YWx1ZXMgYXJlIG5v
dCB0aGUgc2FtZQorICAgTG9jOiBbL3JhbWRpc2svcXQtbGludXgtcmVsZWFzZS9idWlsZC9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXcvdHN0X3FkZWNsYXJhdGl2ZXdl
YnZpZXcuY3BwKDUzMildCitQQVNTICAgOiB0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6Y2xlYW51
cFRlc3RDYXNlKCkKKy4KKy4KKy4KKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogICAgICAgIFRPVEFMUzog
MTYgcGFzc2VkLCAxIGZhaWxlZCwgMCBza2lwcGVkLCAwIGNyYXNoZWQgICAgICAgICAqKgorKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiIiIikKKworICAgIGRlZiB0ZXN0X3RpbWVvdXRfYW5kX2ZhaWx1cmUoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCAiRmFpbHVyZTogdGltZW91dCBv
Y2N1cmVkIGR1cmluZyB0ZXN0aW5nIiwgIiIiSU5GTzpFeGVjOkZpbmlzaGVkIFdlYktpdEJ1aWxk
L1JlbGVhc2UvU291cmNlL1dlYktpdC9xdC90ZXN0cy9iZW5jaG1hcmtzL3BhaW50aW5nL3RzdF9w
YWludGluZworRVJST1I6RXhlYzpUaW1lb3V0LCBwcm9jZXNzICdXZWJLaXRCdWlsZC9SZWxlYXNl
L1NvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlJyAoMTMwMDApIHdh
cyB0ZXJtaW5hdGVkCitJTkZPOkV4ZWM6RmluaXNoZWQgV2ViS2l0QnVpbGQvUmVsZWFzZS9Tb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZQorKioqKioqKioqIFN0YXJ0
IHRlc3Rpbmcgb2YgdHN0X0xvYWRpbmcgKioqKioqKioqCitDb25maWc6IFVzaW5nIFFUZXN0IGxp
YnJhcnkgNC44LjAsIFF0IDQuOC4wCitQQVNTICAgOiB0c3RfTG9hZGluZzo6aW5pdFRlc3RDYXNl
KCkKK1FERUJVRyA6IHRzdF9Mb2FkaW5nOjpsb2FkKGFtYXpvbikgbG9hZGVkIHRoZSBHZW5lcmlj
IHBsdWdpbgorUkVTVUxUIDogdHN0X0xvYWRpbmc6OmxvYWQoKToiYW1hem9uIjoKKyAgICAgMSw4
NDMgbXNlY3MgcGVyIGl0ZXJhdGlvbiAodG90YWw6IDEsODQzLCBpdGVyYXRpb25zOiAxKQorUkVT
VUxUIDogdHN0X0xvYWRpbmc6OmxvYWQoKToia2RlIjoKKyAgICAgMTM5IG1zZWNzIHBlciBpdGVy
YXRpb24gKHRvdGFsOiAxMzksIGl0ZXJhdGlvbnM6IDEpCitSRVNVTFQgOiB0c3RfTG9hZGluZzo6
bG9hZCgpOiJhcHBsZSI6CisgICAgIDc0MCBtc2VjcyBwZXIgaXRlcmF0aW9uICh0b3RhbDogNzQw
LCBpdGVyYXRpb25zOiAxKQorUEFTUyAgIDogdHN0X0xvYWRpbmc6OmxvYWQoKQorUEFTUyAgIDog
dHN0X0xvYWRpbmc6OmNsZWFudXBUZXN0Q2FzZSgpCitUb3RhbHM6IDMgcGFzc2VkLCAwIGZhaWxl
ZCwgMCBza2lwcGVkCisqKioqKioqKiogRmluaXNoZWQgdGVzdGluZyBvZiB0c3RfTG9hZGluZyAq
KioqKioqKioKKy4KKy4KKy4KK1BBU1MgICA6IHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpyZW5k
ZXJpbmdFbmFibGVkKCkKK1BBU1MgICA6IHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpzZXRIdG1s
KCkKK1BBU1MgICA6IHRzdF9RRGVjbGFyYXRpdmVXZWJWaWV3OjpzZXR0aW5ncygpCitGQUlMISAg
OiB0c3RfUURlY2xhcmF0aXZlV2ViVmlldzo6YmFja2dyb3VuZENvbG9yKCkgQ29tcGFyZWQgdmFs
dWVzIGFyZSBub3QgdGhlIHNhbWUKKyAgIExvYzogWy9yYW1kaXNrL3F0LWxpbnV4LXJlbGVhc2Uv
YnVpbGQvU291cmNlL1dlYktpdC9xdC90ZXN0cy9xZGVjbGFyYXRpdmV3ZWJ2aWV3L3RzdF9xZGVj
bGFyYXRpdmV3ZWJ2aWV3LmNwcCg1MzIpXQorUEFTUyAgIDogdHN0X1FEZWNsYXJhdGl2ZVdlYlZp
ZXc6OmNsZWFudXBUZXN0Q2FzZSgpCitUb3RhbHM6IDE2IHBhc3NlZCwgMyBmYWlsZWQsIDEgc2tp
cHBlZAorLgorLgorLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogICAgICAgIFRPVEFMUzogNzMgcGFzc2Vk
LCAzIGZhaWxlZCwgMSBza2lwcGVkLCAwIGNyYXNoZWQgICAgICAgICAqKgorKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiIiIikKKworICAgIGRlZiB0ZXN0X2NyYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJl
c3VsdHMoRkFJTFVSRSwgIkFQSSB0ZXN0cyIsICIiIioqKioqKioqKiBTdGFydCB0ZXN0aW5nIG9m
IHRzdF9RUXVpY2tXZWJWaWV3ICoqKioqKioqKgorQ29uZmlnOiBVc2luZyBRVGVzdCBsaWJyYXJ5
IDUuMC4wLCBRdCA1LjAuMAorUEFTUyAgIDogdHN0X1FRdWlja1dlYlZpZXc6OmluaXRUZXN0Q2Fz
ZSgpCitQQVNTICAgOiB0c3RfUVF1aWNrV2ViVmlldzo6YWNjZXNzUGFnZSgpCisKK0NSQVNIRUQ6
IFdlYktpdEJ1aWxkL1JlbGVhc2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3CisKK0NSQVNIRUQ6IFdlYktpdEJ1aWxk
L1JlbGVhc2UvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2
aWV3L3RzdF9oZWxsbworCisqKioqKioqKiogU3RhcnQgdGVzdGluZyBvZiB0c3RfcHVibGljYXBp
ICoqKioqKioqKgorQ29uZmlnOiBVc2luZyBRVGVzdCBsaWJyYXJ5IDUuMC4wLCBRdCA1LjAuMAor
UEFTUyAgIDogdHN0X3B1YmxpY2FwaTo6aW5pdFRlc3RDYXNlKCkKK1BBU1MgICA6IHRzdF9wdWJs
aWNhcGk6OnB1YmxpY0FQSSgpCitQQVNTICAgOiB0c3RfcHVibGljYXBpOjpjbGVhbnVwVGVzdENh
c2UoKQorVG90YWxzOiAzIHBhc3NlZCwgMCBmYWlsZWQsIDAgc2tpcHBlZAorKioqKioqKioqIEZp
bmlzaGVkIHRlc3Rpbmcgb2YgdHN0X3B1YmxpY2FwaSAqKioqKioqKioKKyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyoqICAgICAgICBUT1RBTFM6IDkyIHBhc3NlZCwgMCBmYWlsZWQsIDAgc2tpcHBlZCwgMiBjcmFz
aGVkICAgICAgICAgKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioiIiIpCisKKworCiBjbGFzcyBSdW5Vbml0VGVz
dHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgYXNzZXJ0RmFpbHVyZXMoc2VsZiwg
ZXhwZWN0ZWRfZmFpbHVyZV9jb3VudCwgc3RkaW8pOgogICAgICAgICBpZiBleHBlY3RlZF9mYWls
dXJlX2NvdW50OgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RCdWls
ZGVyUXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVl
dWVWaWV3LmpzCmluZGV4IDQwYzIyY2EuLjVkN2JmNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5qcworKysgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMKQEAgLTU4LDYgKzU4LDE0IEBAIEJ1
aWxkYm90QnVpbGRlclF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKKyAgICAgICAgZnVuY3Rpb24gY3JlYXRlUmV2aXNpb25M
aW5rKGl0ZXJhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2VMaW5rRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKKyAgICAgICAgICAgIG1lc3NhZ2VM
aW5rRWxlbWVudC5ocmVmID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LnRyYWNSZXZpc2lvblVS
TChpdGVyYXRpb24ub3BlblNvdXJjZVJldmlzaW9uKTsKKyAgICAgICAgICAgIG1lc3NhZ2VMaW5r
RWxlbWVudC50ZXh0Q29udGVudCA9ICJyIiArIGl0ZXJhdGlvbi5vcGVuU291cmNlUmV2aXNpb247
CisgICAgICAgICAgICByZXR1cm4gbWVzc2FnZUxpbmtFbGVtZW50OworICAgICAgICB9CisKICAg
ICAgICAgZnVuY3Rpb24gYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKHF1ZXVlKQogICAgICAgICB7
CiAgICAgICAgICAgICB2YXIgcGVuZGluZ0J1aWxkQ291bnQgPSBxdWV1ZS5wZW5kaW5nSXRlcmF0
aW9uc0NvdW50OwpAQCAtNzAsMTcgKzc4LDE1IEBAIEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgZmlyc3RSZWNlbnRGYWlsZWRJdGVyYXRpb24g
PSBxdWV1ZS5maXJzdFJlY2VudEZhaWxlZEl0ZXJhdGlvbjsKICAgICAgICAgICAgIGlmIChmaXJz
dFJlY2VudEZhaWxlZEl0ZXJhdGlvbiAmJiBmaXJzdFJlY2VudEZhaWxlZEl0ZXJhdGlvbi5sb2Fk
ZWQpIHsKICAgICAgICAgICAgICAgICB2YXIgZmFpbHVyZUNvdW50ID0gcXVldWUucmVjZW50RmFp
bGVkSXRlcmF0aW9uQ291bnQ7Ci0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJl
dmlzaW9uTGlua3NGb3JJdGVyYXRpb24oZmlyc3RSZWNlbnRGYWlsZWRJdGVyYXRpb24pOwotICAg
ICAgICAgICAgICAgIHZhciB1cmwgPSBxdWV1ZS5idWlsZGJvdC5idWlsZExvZ1VSTEZvckl0ZXJh
dGlvbihmaXJzdFJlY2VudEZhaWxlZEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgdmFyIHN0
YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMu
QmFkLCBmYWlsdXJlQ291bnQgPiAxID8gImZhaWxlZCBidWlsZHMgc2luY2UiIDogImZhaWxlZCBi
dWlsZCIsIGZhaWx1cmVDb3VudCA+IDEgPyBmYWlsdXJlQ291bnQgOiBudWxsLCB1cmwpOworICAg
ICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gY3JlYXRlUmV2aXNpb25MaW5rKGZpcnN0UmVjZW50
RmFpbGVkSXRlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1
c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIGZhaWx1cmVDb3Vu
dCA+IDEgPyAiZmFpbGVkIGJ1aWxkcyBzaW5jZSIgOiAiZmFpbGVkIGJ1aWxkIiwgZmFpbHVyZUNv
dW50ID4gMSA/IGZhaWx1cmVDb3VudCA6IG51bGwpOwogICAgICAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHZhciBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiA9IHF1ZXVlLm1vc3RSZWNl
bnRTdWNjZXNzZnVsSXRlcmF0aW9uOwogICAgICAgICAgICAgaWYgKG1vc3RSZWNlbnRTdWNjZXNz
ZnVsSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uLmxvYWRlZCkgewot
ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5yZXZpc2lvbkxpbmtzRm9ySXRlcmF0
aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICB2YXIg
dXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRMb2dVUkxGb3JJdGVyYXRpb24obW9zdFJlY2VudFN1
Y2Nlc3NmdWxJdGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3Rh
dHVzTGluZVZpZXcobWVzc2FnZSwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsIGZpcnN0UmVj
ZW50RmFpbGVkSXRlcmF0aW9uID8gImxhc3Qgc3VjY2Vzc2Z1bCBidWlsZCIgOiAibGF0ZXN0IGJ1
aWxkIiwgbnVsbCwgdXJsKTsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGNyZWF0ZVJl
dmlzaW9uTGluayhtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbik7CisgICAgICAgICAgICAg
ICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlLCBTdGF0dXNMaW5lVmll
dy5TdGF0dXMuR29vZCwgZmlyc3RSZWNlbnRGYWlsZWRJdGVyYXRpb24gPyAibGFzdCBzdWNjZXNz
ZnVsIGJ1aWxkIiA6ICJsYXRlc3QgYnVpbGQiKTsKICAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwg
U3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsIGZpcnN0UmVjZW50RmFpbGVkSXRlcmF0aW9u
ID8gImxhc3Qgc3VjY2Vzc2Z1bCBidWlsZCIgOiAibGF0ZXN0IGJ1aWxkIik7ICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEl0ZXJhdGlvbi5qcyBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCmluZGV4IGQ2MzNmOWIu
LmU3ZThlZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0
aW9uLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCkBA
IC0zNSw5ICszNSw2IEBAIEJ1aWxkYm90SXRlcmF0aW9uID0gZnVuY3Rpb24ocXVldWUsIGlkLCBm
aW5pc2hlZCkKIAogICAgIHRoaXMubG9hZGVkID0gZmFsc2U7CiAKLSAgICB0aGlzLm9wZW5Tb3Vy
Y2VSZXZpc2lvbiA9IG51bGw7Ci0gICAgdGhpcy5pbnRlcm5hbFJldmlzaW9uID0gbnVsbDsKLQog
ICAgIHRoaXMubGF5b3V0VGVzdFJlc3VsdHMgPSBudWxsOwogICAgIHRoaXMuamF2YXNjcmlwdFRl
c3RSZXN1bHRzID0gbnVsbDsKICAgICB0aGlzLnB5dGhvblRlc3RSZXN1bHRzID0gbnVsbDsKQEAg
LTE2Nyw3ICsxNjQsNyBAQCBCdWlsZGJvdEl0ZXJhdGlvbi5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgICAgIGlmICghdGhpcy5iaW5kaW5nVGVzdFJlc3VsdHMgfHwgIXRoaXMuYmluZGluZ1Rlc3RS
ZXN1bHRzLmZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICAgdmFyIGJpbmRpbmdUZXN0UmVzdWx0
cyA9IGNvbGxlY3RUZXN0UmVzdWx0cy5jYWxsKHRoaXMsIGRhdGEsICJiaW5kaW5ncy1nZW5lcmF0
aW9uLXRlc3RzIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5iaW5kaW5nVGVzdFJlc3VsdHMgPSBi
aW5kaW5nVGVzdFJlc3VsdHMgPyBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyh0aGlzLCBiaW5kaW5n
VGVzdFJlc3VsdHMpIDogbnVsbDsKKyAgICAgICAgICAgICAgICB0aGlzLmJpbmRpbmdUZXN0UmVz
dWx0cyA9IHBlcmxUZXN0UmVzdWx0cyA/IG5ldyBCdWlsZGJvdFRlc3RSZXN1bHRzKHRoaXMsIGJp
bmRpbmdUZXN0UmVzdWx0cykgOiBudWxsOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0
aGlzLmxvYWRlZCA9IHRydWU7CkBAIC0xNzcsOSArMTc0LDYgQEAgQnVpbGRib3RJdGVyYXRpb24u
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFkYXRhLmN1cnJlbnRTdGVwKQogICAgICAg
ICAgICAgICAgIHRoaXMuZmluaXNoZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBVcGRhdGUg
dGhlIHNvcnRpbmcgc2luY2UgaXQgaXMgYmFzZWQgb24gdGhlIHJldmlzaW9ucyB3ZSBqdXN0IGxv
YWRlZC4KLSAgICAgICAgICAgIHRoaXMucXVldWUuc29ydEl0ZXJhdGlvbnMoKTsKLQogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RJdGVyYXRpb24uRXZl
bnQuVXBkYXRlZCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZS5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL0J1aWxkYm90UXVldWUuanMKaW5kZXggOTY4ZDU4OS4uNDdmMDFlNyAxMDA2NDQKLS0tIGEv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZS5qcworKysgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCkBAIC0xNDcsMzggKzE0NywyNCBAQCBCdWlsZGJvdFF1
ZXVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbikgewogICAg
ICAgICAgICAgICAgICAgICBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcywg
cGFyc2VJbnQoZGF0YS5jYWNoZWRCdWlsZHNbaV0sIDEwKSwgIShkYXRhLmNhY2hlZEJ1aWxkc1tp
XSBpbiBjdXJyZW50QnVpbGRzKSk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0l0ZXJhdGlvbnMu
cHVzaChpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZXJhdGlvbnMucHVz
aChpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9rbm93bkl0ZXJhdGlvbnNb
aXRlcmF0aW9uLmlkXSA9IGl0ZXJhdGlvbjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICBpZiAoaSA+PSBsb2FkaW5nU3RvcCAmJiAoIWl0ZXJhdGlvbi5maW5pc2hlZCB8fCAh
aXRlcmF0aW9uLmxvYWRlZCkpCiAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbi51cGRhdGUo
KTsKKworICAgICAgICAgICAgICAgIHRoaXMuaXRlcmF0aW9ucy5wdXNoKGl0ZXJhdGlvbik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fa25vd25JdGVyYXRpb25zW2l0ZXJhdGlvbi5pZF0gPSBpdGVy
YXRpb247CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghbmV3SXRlcmF0aW9ucy5s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZnVuY3Rpb24gc29y
dEl0ZXJhdGlvbnNCeUlkKGEsIGIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGIuaWQgPiBhLmlkOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0aGlzLnNvcnRJ
dGVyYXRpb25zKCk7CisgICAgICAgICAgICB0aGlzLml0ZXJhdGlvbnMuc29ydChzb3J0SXRlcmF0
aW9uc0J5SWQpOwogCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhC
dWlsZGJvdFF1ZXVlLkV2ZW50Lkl0ZXJhdGlvbnNBZGRlZCwge2FkZGVkSXRlcmF0aW9uczogbmV3
SXRlcmF0aW9uc30pOworICAgICAgICAgICAgaWYgKG5ld0l0ZXJhdGlvbnMubGVuZ3RoKQorICAg
ICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVldWUu
RXZlbnQuSXRlcmF0aW9uc0FkZGVkLCB7YWRkZWRJdGVyYXRpb25zOiBuZXdJdGVyYXRpb25zfSk7
CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIHNvcnRJdGVyYXRpb25zOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBmdW5jdGlvbiBjb21wYXJlSXRlcmF0aW9ucyhhLCBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYi5vcGVuU291cmNlUmV2aXNp
b24gLSBhLm9wZW5Tb3VyY2VSZXZpc2lvbjsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgICAgICAgICAgcmVzdWx0ID0gYi5pbnRl
cm5hbFJldmlzaW9uIC0gYS5pbnRlcm5hbFJldmlzaW9uOwotICAgICAgICAgICAgaWYgKHJlc3Vs
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgICAgICByZXR1cm4g
Yi5pZCAtIGEuaWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLml0ZXJhdGlvbnMuc29ydChj
b21wYXJlSXRlcmF0aW9ucyk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRi
b3RRdWV1ZVZpZXcuanMKaW5kZXggMjFjNmVjMC4uMGI1YWY2ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMKQEAgLTcxLDMyICs3MSw2IEBAIEJ1aWxkYm90UXVl
dWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KICAgICB9LAogCi0gICAgcmV2aXNpb25MaW5rc0Zvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRl
cmF0aW9uKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gbGlua0ZvclJldmlzaW9uKHJldmlzaW9u
LCBpbnRlcm5hbCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGxpbmtFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9
IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC50cmFjUmV2aXNpb25VUkwocmV2aXNpb24sIGludGVy
bmFsKTsKLSAgICAgICAgICAgIGxpbmtFbGVtZW50LnRleHRDb250ZW50ID0gInIiICsgcmV2aXNp
b247Ci0gICAgICAgICAgICBsaW5rRWxlbWVudC50YXJnZXQgPSAiX25ldyI7Ci0gICAgICAgICAg
ICByZXR1cm4gbGlua0VsZW1lbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dChpdGVyYXRpb24ub3BlblNvdXJjZVJldmlzaW9uKTsKLSAgICAgICAgdmFyIG9wZW5Tb3VyY2VM
aW5rID0gbGlua0ZvclJldmlzaW9uKGl0ZXJhdGlvbi5vcGVuU291cmNlUmV2aXNpb24sIGZhbHNl
KTsKLQotICAgICAgICBpZiAoIWl0ZXJhdGlvbi5pbnRlcm5hbFJldmlzaW9uKQotICAgICAgICAg
ICAgcmV0dXJuIG9wZW5Tb3VyY2VMaW5rOwotCi0gICAgICAgIHZhciBpbnRlcm5hbExpbmsgPSBs
aW5rRm9yUmV2aXNpb24oaXRlcmF0aW9uLmludGVybmFsUmV2aXNpb24sIHRydWUpOwotCi0gICAg
ICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAg
ICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQob3BlblNvdXJjZUxpbmspOwotICAgICAgICBmcmFn
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIFx1ZmYwYiAiKSk7Ci0g
ICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGludGVybmFsTGluayk7Ci0gICAgICAgIHJldHVy
biBmcmFnbWVudDsKLSAgICB9LAotCiAgICAgX3VwZGF0ZVF1ZXVlczogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5yZWxlYXNlUXVldWVzLmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsg
cXVldWUudXBkYXRlKCk7IH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVp
bGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRl
c3RlclF1ZXVlVmlldy5qcwppbmRleCA1ZTBiZGQwLi4zY2E0ZmI5IDEwMDY0NAotLS0gYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcworKysgYi9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwpAQCAtNTYsMzQgKzU2LDM4
IEBAIEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZh
ciBsaW1pdCA9IDI7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJh
dGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGl0
ZXJhdGlvbiA9IHF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVy
YXRpb24ubG9hZGVkIHx8ICFpdGVyYXRpb24uZmluaXNoZWQpCisgICAgICAgICAgICAgICAgaWYg
KCFpdGVyYXRpb24uZmluaXNoZWQpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgLS1saW1pdDsKIAotICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlTGlu
a0VsZW1lbnQgPSB0aGlzLnJldmlzaW9uTGlua3NGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKKyAg
ICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9ICJyIiArIGl0ZXJhdGlvbi5vcGVuU291cmNlUmV2
aXNpb247CiAKLSAgICAgICAgICAgICAgICB2YXIgbGF5b3V0VGVzdFJlc3VsdHMgPSBpdGVyYXRp
b24ubGF5b3V0VGVzdFJlc3VsdHMgfHwge307Ci0gICAgICAgICAgICAgICAgdmFyIGphdmFzY3Jp
cHRUZXN0UmVzdWx0cyA9IGl0ZXJhdGlvbi5qYXZhc2NyaXB0VGVzdFJlc3VsdHMgfHwge307Ci0g
ICAgICAgICAgICAgICAgdmFyIHB5dGhvblRlc3RSZXN1bHRzID0gaXRlcmF0aW9uLnB5dGhvblRl
c3RSZXN1bHRzIHx8IHt9OwotICAgICAgICAgICAgICAgIHZhciBwZXJsVGVzdFJlc3VsdHMgPSBp
dGVyYXRpb24ucGVybFRlc3RSZXN1bHRzIHx8IHt9OwotICAgICAgICAgICAgICAgIHZhciBiaW5k
aW5nVGVzdFJlc3VsdHMgPSBpdGVyYXRpb24uYmluZGluZ1Rlc3RSZXN1bHRzIHx8IHt9OworICAg
ICAgICAgICAgICAgIHZhciBtZXNzYWdlTGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJhIik7CisgICAgICAgICAgICAgICAgbWVzc2FnZUxpbmtFbGVtZW50LmhyZWYgPSBpdGVy
YXRpb24ucXVldWUuYnVpbGRib3QudHJhY1JldmlzaW9uVVJMKGl0ZXJhdGlvbi5vcGVuU291cmNl
UmV2aXNpb24pOworICAgICAgICAgICAgICAgIG1lc3NhZ2VMaW5rRWxlbWVudC50ZXh0Q29udGVu
dCA9IG1lc3NhZ2U7CisKKyAgICAgICAgICAgICAgICB2YXIgbGF5b3V0VGVzdFJlc3VsdHMgPSBp
dGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHM7CisgICAgICAgICAgICAgICAgdmFyIGphdmFzY3Jp
cHRUZXN0UmVzdWx0cyA9IGl0ZXJhdGlvbi5qYXZhc2NyaXB0VGVzdFJlc3VsdHM7CisgICAgICAg
ICAgICAgICAgdmFyIHB5dGhvblRlc3RSZXN1bHRzID0gaXRlcmF0aW9uLnB5dGhvblRlc3RSZXN1
bHRzOworICAgICAgICAgICAgICAgIHZhciBwZXJsVGVzdFJlc3VsdHMgPSBpdGVyYXRpb24ucGVy
bFRlc3RSZXN1bHRzOworICAgICAgICAgICAgICAgIHZhciBiaW5kaW5nVGVzdFJlc3VsdHMgPSBp
dGVyYXRpb24uYmluZGluZ1Rlc3RSZXN1bHRzOwogCiAgICAgICAgICAgICAgICAgaWYgKCFsYXlv
dXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWphdmFzY3JpcHRUZXN0UmVzdWx0cy5mYWls
dXJlQ291bnQgJiYgIXB5dGhvblRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcGVybFRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhYmluZGluZ1Rlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCkg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1l
c3NhZ2VMaW5rRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsICJhbGwgdGVzdHMg
cGFzc2VkIik7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGlu
ZVZpZXcobWVzc2FnZUxpbmtFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgImxh
eW91dCB0ZXN0cyBwYXNzZWQiKTsKICAgICAgICAgICAgICAgICAgICAgbGltaXQgPSAwOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYm
ICFqYXZhc2NyaXB0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmICFweXRob25UZXN0UmVzdWx0
cy5mYWlsdXJlQ291bnQgJiYgIXBlcmxUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWJpbmRp
bmdUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHVy
bCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZvckl0ZXJh
dGlvbihpdGVyYXRpb24pOwogICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0
YXR1c0xpbmVWaWV3KG1lc3NhZ2VMaW5rRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJh
ZCwgbGF5b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gImxheW91dCB0ZXN0IGZh
aWx1cmUiIDogImxheW91dCB0ZXN0IGZhaWx1cmVzIiwgbGF5b3V0VGVzdFJlc3VsdHMudG9vTWFu
eUZhaWx1cmVzID8gbGF5b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICsgIlx1ZmYwYiIgOiBs
YXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQsIHVybCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghbGF5b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmIGphdmFzY3JpcHRUZXN0
UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIXB5dGhvblRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAm
JiAhcGVybFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhYmluZGluZ1Rlc3RSZXN1bHRzLmZh
aWx1cmVDb3VudCkgewogICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1
ZXVlLmJ1aWxkYm90LmphdmFzY3JpcHRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRp
b24pOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3
KG1lc3NhZ2VMaW5rRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgamF2YXNjcmlw
dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCA9PT0gMSA/ICJqYXZhc2NyaXB0IHRlc3QgZmFpbHVy
ZSIgOiAiamF2YXNjcmlwdCB0ZXN0IGZhaWx1cmVzIiwgamF2YXNjcmlwdFRlc3RSZXN1bHRzLmZh
aWx1cmVDb3VudCwgdXJsKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBT
dGF0dXNMaW5lVmlldyhtZXNzYWdlTGlua0VsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5C
YWQsIGxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCA9PT0gMSA/ICJqYXZhc2NyaXB0IHRl
c3QgZmFpbHVyZSIgOiAiamF2YXNjcmlwdCB0ZXN0IGZhaWx1cmVzIiwgamF2YXNjcmlwdFRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCwgdXJsKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFs
YXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWphdmFzY3JpcHRUZXN0UmVzdWx0cy5m
YWlsdXJlQ291bnQgJiYgcHl0aG9uVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmICFwZXJsVGVz
dFJlc3VsdHMuZmFpbHVyZUNvdW50ICYmICFiaW5kaW5nVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXco
bWVzc2FnZUxpbmtFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCBweXRob25UZXN0
UmVzdWx0cy5mYWlsdXJlQ291bnQgPT09IDEgPyAid2Via2l0cHkgdGVzdCBmYWlsdXJlIiA6ICJ3
ZWJraXRweSB0ZXN0IGZhaWx1cmVzIiwgcHl0aG9uVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50KTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNz
YWdlTGlua0VsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIGxheW91dFRlc3RSZXN1
bHRzLmZhaWx1cmVDb3VudCA9PT0gMSA/ICJ3ZWJraXRweSB0ZXN0IGZhaWx1cmUiIDogIndlYmtp
dHB5IHRlc3QgZmFpbHVyZXMiLCBweXRob25UZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWxheW91dFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAm
JiAhamF2YXNjcmlwdFRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcHl0aG9uVGVzdFJlc3Vs
dHMuZmFpbHVyZUNvdW50ICYmIHBlcmxUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWJpbmRp
bmdUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0
YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlTGlua0VsZW1lbnQsIFN0YXR1c0xpbmVW
aWV3LlN0YXR1cy5CYWQsIHBlcmxUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgPT09IDEgPyAid2Vi
a2l0cGVybCB0ZXN0IGZhaWx1cmUiIDogIndlYmtpdHBlcmwgdGVzdCBmYWlsdXJlcyIsIHBlcmxU
ZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQpOworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVz
ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VMaW5rRWxlbWVudCwgU3RhdHVzTGluZVZpZXcu
U3RhdHVzLkJhZCwgbGF5b3V0VGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gIndlYmtp
dHBlcmwgdGVzdCBmYWlsdXJlIiA6ICJ3ZWJraXRwZXJsIHRlc3QgZmFpbHVyZXMiLCBwZXJsVGVz
dFJlc3VsdHMuZmFpbHVyZUNvdW50KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFsYXlv
dXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgJiYgIWphdmFzY3JpcHRUZXN0UmVzdWx0cy5mYWls
dXJlQ291bnQgJiYgIXB5dGhvblRlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCAmJiAhcGVybFRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCAmJiBiaW5kaW5nVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50KSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVz
c2FnZUxpbmtFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCBiaW5kaW5nVGVzdFJl
c3VsdHMuZmFpbHVyZUNvdW50ID09PSAxID8gImJpbmRpbmcgdGVzdCBmYWlsdXJlIiA6ICJiaW5k
aW5nIHRlc3QgZmFpbHVyZXMiLCBiaW5kaW5nVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdl
TGlua0VsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQsIGxheW91dFRlc3RSZXN1bHRz
LmZhaWx1cmVDb3VudCA9PT0gMSA/ICJiaW5kaW5nIHRlc3QgZmFpbHVyZSIgOiAiYmluZGluZyB0
ZXN0IGZhaWx1cmVzIiwgYmluZGluZ1Rlc3RSZXN1bHRzLmZhaWx1cmVDb3VudCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsRmFpbHVyZXMg
PSBsYXlvdXRUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQgKyBqYXZhc2NyaXB0VGVzdFJlc3VsdHMu
ZmFpbHVyZUNvdW50ICsgcHl0aG9uVGVzdFJlc3VsdHMuZmFpbHVyZUNvdW50ICsgcGVybFRlc3RS
ZXN1bHRzLmZhaWx1cmVDb3VudCArIGJpbmRpbmdUZXN0UmVzdWx0cy5mYWlsdXJlQ291bnQ7CiAg
ICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2Fn
ZUxpbmtFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0b3RhbEZhaWx1cmVzID09
PSAxID8gInRlc3QgZmFpbHVyZSIgOiAidGVzdCBmYWlsdXJlcyIpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvSW5pdGlhbGl6YXRpb24uanMgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9Jbml0aWFsaXphdGlvbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmOTk3
My4uMDAwMDAwMAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgYnVpbGRib3Qg
PSBuZXcgV2ViS2l0QnVpbGRib3Q7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9N
YWluLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcwppbmRleCBlNTRmNzc1Ny4uYTA5
OTNlOCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcworKysgYi9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9NYWluLmpzCkBAIC0yMywxNSArMjMsMTUgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCit2YXIgd2Via2l0QnVpbGRib3QgPSBuZXcg
V2ViS2l0QnVpbGRib3Q7CisKIHZhciBjYXRlZ29yaXplZFF1ZXVlc0J5UGxhdGZvcm1BbmRCdWls
ZFR5cGUgPSB7fTsKIAotZm9yICh2YXIgaWQgaW4gYnVpbGRib3QucXVldWVzKSB7Ci0gICAgdmFy
IHF1ZXVlID0gYnVpbGRib3QucXVldWVzW2lkXTsKK2ZvciAodmFyIGlkIGluIHdlYmtpdEJ1aWxk
Ym90LnF1ZXVlcykgeworICAgIHZhciBxdWV1ZSA9IHdlYmtpdEJ1aWxkYm90LnF1ZXVlc1tpZF07
CiAgICAgdmFyIHBsYXRmb3JtID0gY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRU
eXBlW3F1ZXVlLnBsYXRmb3JtXTsKICAgICBpZiAoIXBsYXRmb3JtKQogICAgICAgICBwbGF0Zm9y
bSA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtxdWV1ZS5wbGF0Zm9y
bV0gPSB7fTsKLSAgICBpZiAoIXBsYXRmb3JtLmJ1aWxkZXJzKQotICAgICAgICBwbGF0Zm9ybS5i
dWlsZGVycyA9IHt9OwogCiAgICAgdmFyIGNhdGVnb3J5TmFtZTsKICAgICBpZiAocXVldWUuYnVp
bGRlcikgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvV2ViS2l0QnVpbGRib3Qu
anMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwppbmRleCAwNWRkNjk3
Li4xYjVlOGM2IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJv
dC5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwpAQCAtNTks
MTggKzU5LDEzIEBAIFdlYktpdEJ1aWxkYm90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8iICsgcmV2aXNpb247CiAgICAgfSwK
IAotICAgIGJ1aWxkTG9nVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgImJ1aWxkZXJzLyIgKyBlbmNvZGVVUklD
b21wb25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQg
KyAiL3N0ZXBzL2NvbXBpbGUtd2Via2l0L2xvZ3Mvc3RkaW8vdGV4dCI7Ci0gICAgfSwKLQogICAg
IGxheW91dFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsgInJlc3VsdHMvIiArIGVuY29kZVVS
SUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi8iICsgZW5jb2RlVVJJQ29tcG9uZW50
KCJyIiArIGl0ZXJhdGlvbi5vcGVuU291cmNlUmV2aXNpb24gKyAiICgiICsgaXRlcmF0aW9uLmlk
ICsgIikiKSArICIvcmVzdWx0cy5odG1sIjsKKyAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCAr
ICIvcmVzdWx0cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAi
LyIgKyBlbmNvZGVVUklDb21wb25lbnQoInIiICsgaXRlcmF0aW9uLm9wZW5Tb3VyY2VSZXZpc2lv
biArICIgKCIgKyBpdGVyYXRpb24uaWQgKyAiKSIpICsgIi9yZXN1bHRzLmh0bWwiOwogICAgIH0s
CiAKICAgICBqYXZhc2NyaXB0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0
ZXJhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRlcnMv
IiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMvIiAr
IGl0ZXJhdGlvbi5pZCArICIvc3RlcHMvanNjb3JlLXRlc3QvbG9ncy9hY3R1YWwuaHRtbCI7Cisg
ICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkZXJzLyIgKyBlbmNvZGVVUklDb21w
b25lbnQoaXRlcmF0aW9uLnF1ZXVlLmlkKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQgKyAi
L3N0ZXBzL2pzY29yZS10ZXN0L2xvZ3MvYWN0dWFsLmh0bWwiOwogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvaW5kZXguaHRtbCBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9pbmRleC5odG1sCmlu
ZGV4IDcyMjNiNzQuLjNhNTJjODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9pbmRleC5odG1s
CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9pbmRleC5odG1sCkBAIC0yNSw4ICsyNSw2IEBAIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4K
LSAgICA8dGl0bGU+V2ViS2l0IEJ1aWxkYm90IERhc2hib2FyZDwvdGl0bGU+Ci0KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlN0eWxlcy9NYWluLmNzcyI+PC9saW5rPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5bGVzL0J1aWxkYm90UXVldWVWaWV3LmNzcyI+
PC9saW5rPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5bGVzL0J1aWxkYm90
QnVpbGRlclF1ZXVlVmlldy5jc3MiPjwvbGluaz4KQEAgLTQ0LDcgKzQyLDYgQEAgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90
QnVpbGRlclF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMv
QnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJT
Y3JpcHRzL1N0YXR1c0xpbmVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2Ny
aXB0cy9Jbml0aWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlNjcmlw
dHMvTWFpbi5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT48L2JvZHk+CmRpZmYgLS1naXQg
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy90ZW1wbGF0
ZXMvcm9vdC5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvdGVtcGxhdGVzL3Jvb3QuaHRtbAppbmRleCAyM2JkY2E2Li4xZjY1NTBjIDEwMDc1NQot
LS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy90ZW1w
bGF0ZXMvcm9vdC5odG1sCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3RlbXBsYXRlcy9yb290Lmh0bWwKQEAgLTEwLDExICsxMCwxMSBAQAogCiA8
dWw+CiAgIDxsaT48YSBocmVmPSJjb25zb2xlIj5Db25zb2xlPC9hPiAtIDxhIGhyZWY9ImNvbnNv
bGU/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFwcGxlIE1hYzwvYT4sIDxhIGhyZWY9ImNvbnNvbGU/Y2F0
ZWdvcnk9QXBwbGVXaW4iPkFwcGxlIFdpbmRvd3M8L2E+LAotICA8YSBocmVmPSJjb25zb2xlP2Nh
dGVnb3J5PUdUSyI+R1RLKzwvYT4sIDxhIGhyZWY9ImNvbnNvbGU/Y2F0ZWdvcnk9RUZMIj5FRkw8
L2E+CisgIDxhIGhyZWY9ImNvbnNvbGU/Y2F0ZWdvcnk9R1RLIj5HVEsrPC9hPiwgPGEgaHJlZj0i
Y29uc29sZT9jYXRlZ29yeT1RdCI+UXQ8L2E+LCA8YSBocmVmPSJjb25zb2xlP2NhdGVnb3J5PUVG
TCI+RUZMPC9hPgogICBhbmQgPGEgaHJlZj0iY29uc29sZT9jYXRlZ29yeT1taXNjIj5taXNjZWxs
YW5lb3VzPC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJ3YXRlcmZhbGwiPldhdGVyZmFsbCBEaXNw
bGF5PC9hPiwgYSB0aW1lLW9yaWVudGVkIHN1bW1hcnkgb2YgcmVjZW50IGJ1aWxkYm90IGFjdGl2
aXR5CiAgIC0gPGEgaHJlZj0id2F0ZXJmYWxsP2NhdGVnb3J5PUFwcGxlTWFjIj5BcHBsZSBNYWM8
L2E+LCA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9QXBwbGVXaW4iPkFwcGxlIFdpbmRvd3M8
L2E+LAotICA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9R1RLIj5HVEsrPC9hPiwgPGEgaHJl
Zj0id2F0ZXJmYWxsP2NhdGVnb3J5PUVGTCI+RUZMPC9hPgorICA8YSBocmVmPSJ3YXRlcmZhbGw/
Y2F0ZWdvcnk9R1RLIj5HVEsrPC9hPiwgPGEgaHJlZj0id2F0ZXJmYWxsP2NhdGVnb3J5PVF0Ij5R
dDwvYT4sIDxhIGhyZWY9IndhdGVyZmFsbD9jYXRlZ29yeT1FRkwiPkVGTDwvYT4KICAgYW5kIDxh
IGhyZWY9IndhdGVyZmFsbD9jYXRlZ29yeT1taXNjIj5taXNjZWxsYW5lb3VzPC9hPjwvbGk+CiAg
IDxsaT48YSBocmVmPSJvbmVfYm94X3Blcl9idWlsZGVyIj5MYXRlc3QgQnVpbGQ8L2E+IGZvciBl
YWNoIGJ1aWxkZXIgaXMgaGVyZS48L2xpPgogICA8bGk+PGEgaHJlZj0ib25lX2xpbmVfcGVyX2J1
aWxkIj5SZWNlbnQgQnVpbGRzPC9hPiBhcmUgc3VtbWFyaXplZCBoZXJlLCBvbmUgcGVyIGxpbmUu
PC9saT4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBlZDAwMzBjLi4xM2Y2YjA4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDQzOCArMSwzIEBACi0yMDEzLTEwLTAyICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgotCi0gICAgICAgIEVXUyBidWlsZCBmaXggYWZ0ZXIgdGhlIFF0
IEVXUyByZW1vdmFsLgotCi0gICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvYXR0YWNo
bWVudC5weToKLSAgICAgICAgKEF0dGFjaG1lbnQuX2NhbGN1bGF0ZV9xdWV1ZV9wb3NpdGlvbnMp
OgotCi0yMDEzLTEwLTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0K
LSAgICAgICAgUmVtb3ZlIFF0IGNvZGUgZnJvbSBUb29scy8KLSAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjIyNwotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCi0KLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9Xb3JrUXVldWUuY3Bw
OgotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvc3JjLnBybzogUmVtb3ZlZC4K
LSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm86IFJlbW92ZWQu
Ci0gICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucXJjOiBSZW1vdmVk
LgotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlTWFpbi5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5o
OiBSZW1vdmVkLgotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3Bw
OiBSZW1vdmVkLgotICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaDog
UmVtb3ZlZC4KLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdE5ldHNjYXBlUGx1Z2lu
L1Rlc3ROZXRzY2FwZVBsdWdpbi5wcm86IFJlbW92ZWQuCi0gICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9UZXh0SW5wdXRDb250cm9sbGVyUXQuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5oOiBSZW1vdmVkLgotICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5jcHA6IFJlbW92ZWQuCi0gICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0Lmg6IFJlbW92ZWQuCi0gICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvZm9udHMvQUhFTV9fX18uVFRGOiBSZW1vdmVkLgotICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3F0L3Jlc291cmNlcy91c2VyLmNzczogUmVtb3ZlZC4KLSAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC90ZXN0cGx1Z2luLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC90ZXN0cGx1Z2luLmg6IFJlbW92ZWQuCi0gICAgICAgICogSW1hZ2VE
aWZmL0ltYWdlRGlmZi5wcm86IFJlbW92ZWQuCi0gICAgICAgICogSW1hZ2VEaWZmL3F0L0ltYWdl
RGlmZi5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5o
OiBSZW1vdmVkLgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybzogUmVt
b3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmM6IFJlbW92ZWQu
Ci0gICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5o
OiBSZW1vdmVkLgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L1VybExvYWRlci5jcHA6IFJlbW92
ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmg6IFJlbW92ZWQuCi0gICAg
ICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvY2hlY2tib3hfY2hlY2tlZC5wbmc6IFJlbW92ZWQu
Ci0gICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvY2hlY2tib3hfdW5jaGVja2VkLnBuZzog
UmVtb3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9jb250ZW50c193aWR0aC5w
bmc6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvZmF2aWNvbi5wbmc6
IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmc6IFJlbW92
ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvZm9sZGVyLnBuZzogUmVtb3ZlZC4K
LSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9pbmZvLnBuZzogUmVtb3ZlZC4KLSAgICAg
ICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9uZXh0LnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBN
aW5pQnJvd3Nlci9xdC9pY29ucy9wbHVzLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBNaW5pQnJv
d3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dz
ZXIvcXQvaWNvbnMvcmVmcmVzaC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIv
cXQvaWNvbnMvc3RvcC5wbmc6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNv
bnMvdGl0bGViYXIucG5nOiBSZW1vdmVkLgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25z
L3RvdWNoLnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy90b3Vj
aHBvaW50LnBuZzogUmVtb3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy91cC5w
bmc6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvanMvTXVsdGlTZWxlY3QuanM6
IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvbWFpbi5jcHA6IFJlbW92ZWQuCi0g
ICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0FsZXJ0RGlhbG9nLnFtbDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQXV0aGVudGljYXRpb25EaWFsb2cucW1sOiBSZW1v
dmVkLgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbDogUmVt
b3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvQ2hlY2tCb3gucW1sOiBSZW1vdmVk
LgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9Db2xvckNob29zZXIucW1sOiBSZW1vdmVk
LgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9Db25maXJtRGlhbG9nLnFtbDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvRGlhbG9nLnFtbDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvRGlhbG9nQnV0dG9uLnFtbDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvRGlhbG9nTGluZUlucHV0LnFtbDogUmVtb3ZlZC4K
LSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvRmlsZVBpY2tlci5xbWw6IFJlbW92ZWQuCi0g
ICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWw6IFJlbW92ZWQuCi0g
ICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL01vY2tUb3VjaFBvaW50LnFtbDogUmVtb3ZlZC4K
LSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvUHJvbXB0RGlhbG9nLnFtbDogUmVtb3ZlZC4K
LSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9xbWwvUHJveHlBdXRoZW50aWNhdGlvbkRpYWxvZy5x
bWw6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL1Njcm9sbEluZGljYXRv
ci5xbWw6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL1ZpZXdwb3J0SW5m
b0l0ZW0ucW1sOiBSZW1vdmVkLgotICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3Jhdy9EZXJpdmVk
U291cmNlcy5wcmk6IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvcmF3L01pbmlC
cm93c2VyUmF3LnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9yYXcvVGFy
Z2V0LnByaTogUmVtb3ZlZC4KLSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5jcHA6
IFJlbW92ZWQuCi0gICAgICAgICogTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaDogUmVtb3ZlZC4K
LSAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC91dGlscy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICog
TWluaUJyb3dzZXIvcXQvdXRpbHMuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBRdFRlc3RCcm93c2Vy
L1F0VGVzdEJyb3dzZXIucHJvOiBSZW1vdmVkLgotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvUXRU
ZXN0QnJvd3Nlci5xcmM6IFJlbW92ZWQuCi0gICAgICAgICogUXRUZXN0QnJvd3Nlci9jb29raWVq
YXIuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvY29va2llamFyLmg6IFJl
bW92ZWQuCi0gICAgICAgICogUXRUZXN0QnJvd3Nlci9mYXZpY29uLnBuZzogUmVtb3ZlZC4KLSAg
ICAgICAgKiBRdFRlc3RCcm93c2VyL2Zwc3RpbWVyLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBR
dFRlc3RCcm93c2VyL2Zwc3RpbWVyLmg6IFJlbW92ZWQuCi0gICAgICAgICogUXRUZXN0QnJvd3Nl
ci9sYXVuY2hlcndpbmRvdy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogUXRUZXN0QnJvd3Nlci9s
YXVuY2hlcndpbmRvdy5oOiBSZW1vdmVkLgotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbG9jYXRp
b25lZGl0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBRdFRlc3RCcm93c2VyL2xvY2F0aW9uZWRp
dC5oOiBSZW1vdmVkLgotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvbWFpbndpbmRvdy5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogUXRUZXN0QnJvd3Nlci9tYWlud2luZG93Lmg6IFJlbW92ZWQuCi0g
ICAgICAgICogUXRUZXN0QnJvd3Nlci9xdHRlc3Ricm93c2VyLmNwcDogUmVtb3ZlZC4KLSAgICAg
ICAgKiBRdFRlc3RCcm93c2VyL3VybGxvYWRlci5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogUXRU
ZXN0QnJvd3Nlci91cmxsb2FkZXIuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBRdFRlc3RCcm93c2Vy
L3VzZXJhZ2VudGxpc3QudHh0OiBSZW1vdmVkLgotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvdXRp
bHMuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvdXRpbHMuaDogUmVtb3Zl
ZC4KLSAgICAgICAgKiBRdFRlc3RCcm93c2VyL3dlYmluc3BlY3Rvci5oOiBSZW1vdmVkLgotICAg
ICAgICAqIFF0VGVzdEJyb3dzZXIvd2VicGFnZS5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogUXRU
ZXN0QnJvd3Nlci93ZWJwYWdlLmg6IFJlbW92ZWQuCi0gICAgICAgICogUXRUZXN0QnJvd3Nlci93
ZWJ2aWV3LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBRdFRlc3RCcm93c2VyL3dlYnZpZXcuaDog
UmVtb3ZlZC4KLSAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0Rlcml2ZWRTb3VyY2VzLnByaTogUmVt
b3ZlZC4KLSAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlLnByaTogUmVtb3Zl
ZC4KLSAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgotICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5wcmk6IFJlbW92ZWQuCi0gICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzLnByaTogUmVtb3ZlZC4KLSAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcDoKLSAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEYucHJvOiBSZW1vdmVkLgotICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJLaXQyLnBybzogUmVtb3ZlZC4KLSAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL3F0L0luamVjdGVkQnVuZGxlQ29udHJvbGxlclF0LmNwcDog
UmVtb3ZlZC4KLSAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3F0L1BsYXRmb3JtVXRpbGl0aWVzUXQu
Y3BwOiBSZW1vdmVkLgotICAgICAgICAqIFRlc3RXZWJLaXRBUEkvcXQvUGxhdGZvcm1XZWJWaWV3
UXQuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIFRlc3RXZWJLaXRBUEkvcXQvbWFpbi5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogVG9vbHMucHJvOiBSZW1vdmVkLgotICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMucHJpOiBSZW1vdmVkLgotICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRGVyaXZlZFNvdXJjZXMucHJpOiBSZW1vdmVkLgotICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUucHJvOiBSZW1vdmVk
LgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcDoKLSAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldEFmdGVy
VGVzdCk6Ci0gICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJj
aGl2ZSk6Ci0gICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2xlYXJXaW5kb3dG
b3JGcmFtZSk6Ci0gICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UYXJn
ZXQucHJpOiBSZW1vdmVkLgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvcXQvQWN0aXZhdGVGb250c1F0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL3F0L0luamVjdGVkQnVuZGxlUXQuY3BwOiBSZW1vdmVkLgot
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvVGVzdFJ1bm5lclF0
LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oOgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaTogUmVtb3ZlZC4KLSAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKLSAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgotICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKLSAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIucHJvOiBSZW1vdmVkLgotICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwOiBSZW1vdmVk
LgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHA6IFJl
bW92ZWQuCi0gICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0UnVubmVyLnFy
YzogUmVtb3ZlZC4KLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L21haW4uY3BwOiBSZW1v
dmVkLgotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvcmVzb3VyY2VzL3VzZXIuY3NzOiBS
ZW1vdmVkLgotICAgICAgICAqIHFtYWtlLy5xbWFrZS5jYWNoZTogUmVtb3ZlZC4KLSAgICAgICAg
KiBxbWFrZS8ucW1ha2UuY29uZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9SRUFETUU6IFJl
bW92ZWQuCi0gICAgICAgICogcW1ha2UvY29uZmlnLnRlc3RzL1JFQURNRTogUmVtb3ZlZC4KLSAg
ICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvZm9udGNvbmZpZy9mb250Y29uZmlnLmNwcDogUmVt
b3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvZm9udGNvbmZpZy9mb250Y29uZmln
LnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvZ2NjZGVwZW5kcy9l
bXB0eS5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvY29uZmlnLnRlc3RzL2djY2RlcGVu
ZHMvZ2NjZGVwZW5kcy5wcm86IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvY29uZmlnLnRlc3Rz
L2dseC9nbHguY3BwOiBSZW1vdmVkLgotICAgICAgICAqIHFtYWtlL2NvbmZpZy50ZXN0cy9nbHgv
Z2x4LnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvZ251bGQvZ251
bGQucHJvOiBSZW1vdmVkLgotICAgICAgICAqIHFtYWtlL2NvbmZpZy50ZXN0cy9nbnVsZC9tYWlu
LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGliWGNvbXBvc2l0
ZS9saWJYY29tcG9zaXRlLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVz
dHMvbGliWGNvbXBvc2l0ZS9saWJYY29tcG9zaXRlLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBx
bWFrZS9jb25maWcudGVzdHMvbGliWHJlbmRlci9saWJYcmVuZGVyLmNwcDogUmVtb3ZlZC4KLSAg
ICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGliWHJlbmRlci9saWJYcmVuZGVyLnBybzogUmVt
b3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGlid2VicC9saWJ3ZWJwLmNwcDog
UmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGlid2VicC9saWJ3ZWJwLnBy
bzogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGlieG1sMi9saWJ4bWwy
LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGlieG1sMi9saWJ4
bWwyLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGlieHNsdC9s
aWJ4c2x0LmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGlieHNs
dC9saWJ4c2x0LnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMvbGli
emxpYi9saWJ6bGliLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9jb25maWcudGVzdHMv
bGliemxpYi9saWJ6bGliLnBybzogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9kdW1wLWZlYXR1
cmVzLnBsOiBSZW1vdmVkLgotICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvY29uZmln
dXJlLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2RlZmF1
bHRfcG9zdC5wcmY6IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9k
ZWZhdWx0X3ByZS5wcmY6IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmY6IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmk6IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mb3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQucHJmOiBSZW1vdmVkLgotICAgICAgICAqIHFt
YWtlL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBx
bWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2dwcm9mLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9kZWZhdWx0X3Bvc3QucHJmOiBSZW1vdmVkLgotICAgICAg
ICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvbWFjL2RlZmF1bHRfcHJlLnByZjogUmVtb3ZlZC4K
LSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL21pbmltYWxfcXQucHJmOiBSZW1vdmVk
LgotICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvcHJvZHVjdGlvbl9idWlsZC5wcmY6
IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9ycGF0aC5wcmY6IFJl
bW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy91bml4L2RlZmF1bHRfcG9z
dC5wcmY6IFJlbW92ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy91bml4L2Rl
ZmF1bHRfcHJlLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L3VuaXgvaWNjLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVz
L3VzZV9hbGxfaW5fb25lX2ZpbGVzLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL3ZhbGdyaW5kLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL3dlYmtpdF9tb2R1bGVzLnByZjogUmVtb3ZlZC4KLSAgICAgICAgKiBxbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL3dpbjMyL2RlZmF1bHRfcG9zdC5wcmY6IFJlbW92ZWQuCi0gICAg
ICAgICogcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93aW4zMi9kZWZhdWx0X3ByZS5wcmY6IFJlbW92
ZWQuCi0gICAgICAgICogcW1ha2UvbWtzcGVjcy9tb2R1bGVzL2FuZ2xlLnByZjogUmVtb3ZlZC4K
LSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL21vZHVsZXMvamF2YXNjcmlwdGNvcmUucHJmOiBSZW1v
dmVkLgotICAgICAgICAqIHFtYWtlL21rc3BlY3MvbW9kdWxlcy93ZWJjb3JlLnByZjogUmVtb3Zl
ZC4KLSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL21vZHVsZXMvd2Via2l0MS5wcmY6IFJlbW92ZWQu
Ci0gICAgICAgICogcW1ha2UvbWtzcGVjcy9tb2R1bGVzL3dlYmtpdDIucHJmOiBSZW1vdmVkLgot
ICAgICAgICAqIHFtYWtlL21rc3BlY3MvbW9kdWxlcy93dGYucHJmOiBSZW1vdmVkLgotCi0yMDEz
LTEwLTAyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgotCi0gICAgICAg
IFttYWNdIFN0b3AgdXNpbmcgRHJhd2luZ0FyZWFJbXBsIG9uIFBMQVRGT1JNKE1BQykgCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4NTkKLSAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE1MDY5MzU5PgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KLQotICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwOgotICAgICAgICAoV1RSOjpzaG91bGRVc2VUaHJlYWRlZFNjcm9sbGluZyk6Ci0gICAgICAg
IChXVFI6OnVwZGF0ZVRocmVhZGVkU2Nyb2xsaW5nRm9yQ3VycmVudFRlc3QpOgotICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6aW52b2tlKToKLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06Ci0gICAgICAgICgtW1Rlc3RSdW5uZXJXS1ZpZXcg
aW5pdFdpdGhGcmFtZTpjb250ZXh0UmVmOnBhZ2VHcm91cFJlZjpyZWxhdGVkVG9QYWdlOnVzZVRo
cmVhZGVkU2Nyb2xsaW5nOl0pOgotICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRm
b3JtV2ViVmlldyk6Ci0gICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRz
T3B0aW9ucyk6Ci0gICAgICAgIFJlbmFtZSB0aGUgdGlsZWQgZHJhd2luZyBzd2l0Y2ggdG8gdGhy
ZWFkZWQgc2Nyb2xsaW5nLCBzaW5jZSB0aGF0J3MgcmVhbGx5Ci0gICAgICAgIGFsbCBpdCBzd2l0
Y2hlcyBub3cgdGhhdCB3ZSB1c2UgdGlsZWQgZHJhd2luZyBldmVyeXdoZXJlLgotCi0gICAgICAg
IFVzZSBhbiB1bmJ1ZmZlcmVkIHdpbmRvdywgYXMgd2VsbCwgdG8gYXZvaWQgc25hcHNob3R0aW5n
IGlzc3VlcyBvbiBzb21lIHBsYXRmb3JtcwotICAgICAgICBhbmQgdG8gbW9yZSBjbG9zZWx5IG1h
dGNoIHRoZSBjYXNlIHdlJ3JlIGludGVyZXN0ZWQgaW4gdGVzdGluZy4KLQotMjAxMy0xMC0wMiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIE1vdmUgQUhF
TV9fX18uVFRGIGZyb20gcXQvZm9udHMvIHRvIGZvbnRzLy4KLQotICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBBbmRyZWFzIEtsaW5nLgotCi0gICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9mb250cy9BSEVNX19fXy5UVEY6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9mb250cy9BSEVNX19fXy5UVEYuCi0KLTIwMTMtMTAtMDIgIMOBZMOhbSBLYWxsYWkgIDxr
YWRhbUBpbmYudS1zemVnZWQuaHU+Ci0KLSAgICAgICAgUmVtb3ZlIFF0IGJvdHMgYW5kIEVXUyBm
cm9tIHRydW5rLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIyMjEwLgotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsbGFuIFNhbmRmZWxkIEplbnNlbi4K
LQotICAgICAgICBSZW1vdmUgUXQgYnVpbCBkYm90cy4KLQotICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uOgotICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmc6Ci0gICAg
ICAgIChhcHBlbmRDdXN0b21CdWlsZEZsYWdzKToKLSAgICAgICAgKFJ1bkd0a0FQSVRlc3RzLmdl
dFRleHQyKToKLSAgICAgICAgKEZhY3RvcnkuX19pbml0X18pOgotICAgICAgICAoVGVzdEZhY3Rv
cnkuX19pbml0X18pOgotICAgICAgICAoQnVpbGRBbmRUZXN0RmFjdG9yeS5fX2luaXRfXyk6Ci0g
ICAgICAgIChsb2FkQnVpbGRlckNvbmZpZyk6Ci0gICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyY2ZnX3VuaXR0ZXN0LnB5OgotCi0yMDEzLTEw
LTAyICDDgWTDoW0gS2FsbGFpICA8a2FkYW1AaW5mLnUtc3plZ2VkLmh1PgotCi0gICAgICAgIFJl
bW92ZSBRdCBib3RzIGFuZCBFV1MgZnJvbSB0cnVuay4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjIxMC4KLQotICAgICAgICBSZXZpZXdlZCBieSBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4uCi0KLSAgICAgICAgUmVtb3ZlIFF0IEVXUyBib3RzLgotCi0g
ICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnL3F1ZXVlcy5weToKLSAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvZXdzLmpzb246Ci0KLTIwMTMtMTAtMDEgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIEZpeCBzaW5ndWxh
ciBsYWJlbHMgZm9yIHRlc3QgZmFpbHVyZXMuCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjIwMAotCi0gICAgICAgIFJldmlld2VkIGJ5IEpvc2Vw
aCBQZWNvcmFyby4KLQotICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LmpzOgotICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlLnVw
ZGF0ZS5hcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOgotCi0yMDEzLTEwLTAxICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KLQotICAgICAgICBEb24ndCBrZWVwIGFwcGVuZGlu
ZyBpdGVyYXRpb25zIGVhY2ggdGltZSB0aGUgcXVldWUgdXBkYXRlcy4KLQotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTk4Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgotCi0gICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVp
bGRib3RRdWV1ZS5qczoKLSAgICAgICAgKEJ1aWxkYm90UXVldWUucHJvdG90eXBlLnVwZGF0ZSk6
Ci0KLTIwMTMtMTAtMDEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgotCi0g
ICAgICAgIFByb3Blcmx5IHNvcnQgaXRlcmF0aW9ucyBpbiB0aGUgRGFzaGJvYXJkIGJ5IHJldmlz
aW9uIGZvciBvdXQtb2Ytb3JkZXIgcXVldWVzLgotCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxOTYKLQotICAgICAgICBSZXZpZXdlZCBieSBCcmVu
dCBGdWxnaGFtLgotCi0gICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24u
anM6Ci0gICAgICAgIChCdWlsZGJvdEl0ZXJhdGlvbik6Ci0gICAgICAgIChCdWlsZGJvdEl0ZXJh
dGlvbi5wcm90b3R5cGUudXBkYXRlKToKLSAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJv
dFF1ZXVlLmpzOgotICAgICAgICAoQnVpbGRib3RRdWV1ZS5wcm90b3R5cGUudXBkYXRlKToKLSAg
ICAgICAgKEJ1aWxkYm90UXVldWUucHJvdG90eXBlLnNvcnRJdGVyYXRpb25zKToKLQotMjAxMy0x
MC0wMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+Ci0KLSAgICAgICAgRml4
IHNvbWUgZXhjZXB0aW9ucyBzZWVuIGluIHRoZSBCdWlsZGJvdCBEYXNoYm9hcmQgd2hlbiBsb29r
aW5nIGF0IHVubG9hZGVkIGl0ZXJhdGlvbnMuCi0KLSAgICAgICAgQWxzbyBmaXggc29tZSBVUkxz
IHRvIG5vdCBoYXZlIGV4dHJhcyBzbGFzaGVzIGFuZCBhZGQgYSBwYWdlIHRpdGxlLgotCi0gICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxOTIKLQotICAg
ICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCi0KLSAgICAgICAgKiBCdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qczoKLSAgICAgICAgKEJ1aWxkYm90VGVzdGVy
UXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKToKLSAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qczoKLSAgICAgICAgKFdlYktp
dEJ1aWxkYm90LnByb3RvdHlwZS5idWlsZExvZ1VSTEZvckl0ZXJhdGlvbik6Ci0gICAgICAgIChX
ZWJLaXRCdWlsZGJvdC5wcm90b3R5cGUubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24p
OgotICAgICAgICAoV2ViS2l0QnVpbGRib3QucHJvdG90eXBlLmphdmFzY3JpcHRUZXN0UmVzdWx0
c1VSTEZvckl0ZXJhdGlvbik6Ci0gICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL2luZGV4Lmh0bWw6Ci0KLTIwMTMt
MTAtMDEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+Ci0KLSAgICAgICAgW01h
Y10gU2V0IE5TQXBwbGljYXRpb24gY3VycmVudCBldmVudCB3aGlsZSBzZW5kaW5nIGV2ZW50cyBk
aXJlY3RseSB0byB2aWV3cwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyMTc5Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCi0KLSAg
ICAgICAgRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIgc2VuZCBldmVudHMgZGly
ZWN0bHkgdG8gV2ViSE1UTFZpZXcgb3IgV0tWaWV3LAotICAgICAgICB3aGljaCBkb2Vzbid0IHVw
ZGF0ZSBbTlNBcHAgY3VycmVudEV2ZW50XS4gQnV0IHRoZXJlIGFyZSBtYW55IHBsYWNlcyBpbiBX
ZWJLaXQgdGhhdAotICAgICAgICB1c2UgdGhlIGN1cnJlbnQgZXZlbnQuCi0KLSAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKLSAgICAgICAgKC1b
RXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZURvd246d2l0aE1vZGlmaWVyczpdKToKLSAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmllcnM6XSk6Ci0g
ICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6XSk6Ci0gICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VTY3JvbGxCeVg6YW5kWTpjb250aW51
b3VzbHk6XSk6Ci0gICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgY29udGV4dENsaWNr
XSk6Ci0gICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIga2V5RG93bjp3aXRoTW9kaWZp
ZXJzOndpdGhMb2NhdGlvbjpdKToKLSAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVu
dFNlbmRlclByb3h5Lm1tOgotICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZURv
d24pOgotICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKToKLSAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgotICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjprZXlEb3duKToKLSAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
bW91c2VTY3JvbGxCeSk6Ci0gICAgICAgIFVwZGF0ZSB0aGUgY3VycmVudCBldmVudC4gV2Ugd2Vy
ZSBhbHJlYWR5IHVzaW5nIHRoZSBTUEkgaW4gV2ViS2l0LgotCi0yMDEzLTEwLTAxICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+Ci0KLSAgICAgICAgQnVpbGRib3QgRGFzaGJv
YXJkOiBGaXggSlNIaW50IGlzc3VlOiAncGVybFRlc3RSZXN1bHRzJyB1c2VkIG91dCBvZiBzY29w
ZS4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjE4
MwotCi0gICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KLQotICAgICAgICAqIEJ1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzOgotICAgICAgICAoQnVpbGRib3RJdGVy
YXRpb24ucHJvdG90eXBlLnVwZGF0ZSk6Ci0KLTIwMTMtMTAtMDEgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgotCi0gICAgICAgIFR3ZWFrcyB0byB0aGUgQnVpbGRib3QgRGFz
aGJvYXJkCi0KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjE2OQotCi0gICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCi0KLSAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanM6Ci0gICAg
ICAgIChCdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5hcHBlbmRCdWls
ZGVyUXVldWVTdGF0dXMpOgotICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVW
aWV3LmpzOgotICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnJldmlzaW9uTGlu
a3NGb3JJdGVyYXRpb24pOgotICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVy
UXVldWVWaWV3LmpzOgotICAgICAgICAoQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBl
LnVwZGF0ZS5hcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOgotICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL0luaXRpYWxpemF0aW9uLmpzOiBBZGRlZC4KLSAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9N
YWluLmpzOgotICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1dlYktpdEJ1aWxkYm90LmpzOgotICAg
ICAgICAoV2ViS2l0QnVpbGRib3QucHJvdG90eXBlLmJ1aWxkTG9nVVJMRm9ySXRlcmF0aW9uKToK
LSAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvaW5kZXguaHRtbDoKLQotMjAxMy0xMC0wMSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjE1NjcyNS4KLSAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MTU2NzI1Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjIxNzYKLQotICAgICAgICBicm9rZSBhbGwgdGhlIG1pc21hdGNoIHRlc3RzIGFnYWluIChSZXF1
ZXN0ZWQgYnkgdGhvcnRvbiBvbgotICAgICAgICAjd2Via2l0KS4KLQotICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbToKLSAgICAgICAgKFdUUjo6UGxh
dGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgotCi0yMDEzLTEwLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgSW1wbGVtZW50ZWQg
Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0IGluIFdpbkxhdW5jaGVyLgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDY5Ci0KLSAgICAgICAgUmV2aWV3
ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KLQotICAgICAgICAqIFdpbkxhdW5jaGVyL1ByaW50V2ViVUlE
ZWxlZ2F0ZS5jcHA6Ci0gICAgICAgIChQcmludFdlYlVJRGVsZWdhdGU6OmNyZWF0ZVdlYlZpZXdX
aXRoUmVxdWVzdCk6IEFkZGVkLgotICAgICAgICAqIFdpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxl
Z2F0ZS5oOgotICAgICAgICBSZW1vdmVkIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdCBzdHViLgot
Ci0yMDEzLTEwLTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgotCi0g
ICAgICAgIFt3azJdIFdlYktpdFRlc3RSdW5uZXIncyB3aW5kb3cgc25hcHNob3RzIGFyZSBibGFu
ayB3aXRoIHRpbGVkIGRyYXdpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMjAwNgotICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTUwOTUxOTc+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgotCi0gICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgotICAgICAgICAoV1RSOjpQbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6Ci0gICAgICAgIExheWVyLWJhY2sgdGhlIHJvb3Qg
dmlldyBpbiBXZWJLaXRUZXN0UnVubmVyJ3Mgd2luZG93LCB0byB3b3JrIGFyb3VuZCBhIGJ1Zwot
ICAgICAgICB3aGVyZSB0aGUgd2luZG93IHNlcnZlciBzbmFwc2hvdCBBUEkgcmV0dXJucyBibGFu
ayBzbmFwc2hvdHMuCi0KLSAgICAgICAgUmUtbGFuZGluZyBhZnRlciByMTU2NzI0LCB0aGlzIHNo
b3VsZCBub3QgYnJlYWsgZXZlcnl0aGluZyBub3cuCi0KLTIwMTMtMTAtMDEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgW21hY10gMXggZW11bGF0aW9u
IG9uIFJldGluYSBoYXJkd2FyZSBzaG91bGRuJ3QgdXNlIFNQSQotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTUyCi0gICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xNTExOTM4ND4KLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0K
LSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Ci0gICAgICAg
IChjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KToKLSAgICAgICAgKG1haW4pOgotICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5oOgotICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5tbToKLSAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06Ci0gICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKLSAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9tYWluLm1tOgotICAgICAgICAobWFpbik6Ci0gICAgICAgIFJlZ2lzdGVy
IGZvciBBcHBsZU1hZ25pZmllZE1vZGUgaW5zdGVhZCBvZiB1c2luZyBfc2V0V2luZG93UmVzb2x1
dGlvbjpkaXNwbGF5SWZDaGFuZ2VkOi4KLQogMjAxMy0wOS0zMCAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIGNoZWNrLXdlYmtpdC1zdHlsZSBzaG91bGQgbm90IHdhcm4g
YWJvdXQgdXNlIG9mIEMrKzExIOKAnD4+4oCdICBpbnN0ZWFkIG9mIOKAnD4gPiIKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGQ1ZjJiYjEuLjQzZjJjNzYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzMwLDcgKzMzMCw3IEBACiAJCUE4RDc5Q0U5MEZDMjhCMkMwMDRBQzhG
RSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLm9iamM7IHBhdGggPSBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZS5tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTVBMTVFRDE2RTE1Q0QwMDBGN0M1NjEgLyog
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUE1QTE1RUUxNkUxNUNEMDAwRjdDNTYxIC8qIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tOyBwYXRoID0gaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAv
KiBBSEVNX19fXy5UVEYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBuYW1lID0gIkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9udHMvQUhFTV9f
X18uVFRGIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUE3RjEwQzIwQ0IzQzEwMzAw
MDNCREM5IC8qIEFIRU1fX19fLlRURiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJxdC9m
b250cy9BSEVNX19fXy5UVEYiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRTgyNTdF
RjA4RDIyMzg5MDAwNTA3QUIgLyogQ2FyYm9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0g
Q2FyYm9uLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUI1QTc1MjY3MDhB
RjRBNEEwMDEzOEU0NSAvKiBJbWFnZURpZmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJ
bkluZGV4ID0gMDsgcGF0aCA9IEltYWdlRGlmZjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJQjVBNzUyQTEwOEFGNUQxRjAwMTM4RTQ1IC8qIFF1YXJ0ekNvcmUuZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFydHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
IjxhYnNvbHV0ZT4iOyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvV29ya1F1
ZXVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1dvcmtRdWV1ZS5jcHAKaW5kZXggMDEwNmZi
YS4uZjM4ZDgxYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvV29ya1F1ZXVlLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9Xb3JrUXVldWUuY3BwCkBAIC0yOSw3ICsyOSwx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogCisjaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSAiV29ya1F1ZXVlSXRlbVF0LmgiCisjZWxzZQogI2luY2x1
ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBxdWV1ZUxlbmd0aCA9IDEwMjQ7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5wcm8gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L3NyYy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTA5Njc5NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvc3JjLnBybwpAQCAtMCwwICsxLDE2IEBACitsZXNzVGhhbihRVF9WRVJTSU9OLCA0
LjUpIHsKKyAgICBlcnJvcigiUXQgNC41IG9yIGdyZWF0ZXIgaXMgcmVxdWlyZWQuIikKK30KKwor
VEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IEltYWdlRGlmZgorCitTT1VSQ0VTICs9IC4uL3F0L0lt
YWdlRGlmZi5jcHAKK0RFU1RESVIgPSAuCisKK3VuaXg6Q09ORklHICs9IGRlYnVnX2FuZF9yZWxl
YXNlCittYWM6Q09ORklHIC09IGFwcF9idW5kbGUKK3dpbjMyOiBDT05GSUcgKz0gY29uc29sZQor
CitRVCA9IGNvcmUgZ3VpCisKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2ZvbnRz
L0FIRU1fX19fLlRURiBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2ZvbnRzL0FIRU1fX19fLlRURgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM4MWNiMC4uMDAwMDAwMApCaW5hcnkgZmls
ZXMgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9mb250cy9BSEVNX19fXy5UVEYgYW5kIC9kZXYvbnVs
bCBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRl
eCAzZjZmY2U2Li4yNWUzZjVkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCkBAIC01NzMsNiArNTczLDcgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9m
ZnNjcmVlbldpbmRvdygpCiAgICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2Vi
Vmlld107CiAgICAgW3dpbmRvdyBvcmRlckJhY2s6bmlsXTsKICAgICBbd2luZG93IHNldEF1dG9k
aXNwbGF5Ok5PXTsKKyAgICBbd2luZG93IF9zZXRXaW5kb3dSZXNvbHV0aW9uOjEgZGlzcGxheUlm
Q2hhbmdlZDpZRVNdOwogCiAgICAgW3dpbmRvdyBzdGFydExpc3RlbmluZ0ZvckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDaGFuZ2VzXTsKICAgICAKQEAgLTk1MCwxMSArOTUxLDYgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBOU0F1dG9yZWxlYXNlUG9vbCAq
cG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOwogICAgIFtEdW1wUmVuZGVy
VHJlZUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsgLy8gRm9yY2UgQXBwS2l0IHRvIGlu
aXQgaXRzZWxmCi0gICAgCi0gICAgTlNEaWN0aW9uYXJ5ICpkZWZhdWx0cyA9IFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoQm9v
bDpZRVNdLCBAIkFwcGxlTWFnbmlmaWVkTW9kZSIsIG5pbF07Ci0gICAgW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpkZWZhdWx0c107Ci0gICAg
W2RlZmF1bHRzIHJlbGVhc2VdOwotICAgIAogICAgIGR1bXBSZW5kZXJUcmVlKGFyZ2MsIGFyZ3Yp
OwogICAgIFtXZWJDb3JlU3RhdGlzdGljcyBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3Rz
XTsKICAgICBbV2ViQ29yZVN0YXRpc3RpY3MgZW1wdHlDYWNoZV07IC8vIE90aGVyd2lzZSBTVkdJ
bWFnZXMgdHJpZ2dlciBmYWxzZSBwb3NpdGl2ZXMgZm9yIEZyYW1lL05vZGUgY291bnRzCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVdpbmRvdy5oCmluZGV4IGEy
MjlkMjAuLjNiMWQ3N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZVdpbmRvdy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZVdpbmRvdy5oCkBAIC0zMiw2ICszMiwxMiBAQAogCiBAY2xhc3MgV2ViVmlldzsKIAor
QGludGVyZmFjZSBOU1dpbmRvdyAoRGV0YWlscykKKworLSAodm9pZClfc2V0V2luZG93UmVzb2x1
dGlvbjooQ0dGbG9hdClyZXNvbHV0aW9uIGRpc3BsYXlJZkNoYW5nZWQ6KEJPT0wpZGlzcGxheUlm
Q2hhbmdlZDsKKworQGVuZAorCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlV2luZG93IDogTlNX
aW5kb3cKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZVdpbmRvdy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZVdpbmRvdy5tbQppbmRleCAxN2ExMTRiLi40YTZmZDZiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVXaW5kb3cubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlV2luZG93Lm1tCkBAIC0xMjAsNCArMTIwLDkgQEAg
c3RhdGljIENGQXJyYXlDYWxsQmFja3MgTm9uUmV0YWluaW5nQXJyYXlDYWxsYmFja3MgPSB7CiAg
ICAgICAgIFtzZWxmIHNldEF1dG9kaXNwbGF5OllFU107CiB9CiAKKy0gKENHRmxvYXQpYmFja2lu
Z1NjYWxlRmFjdG9yCit7CisgICAgcmV0dXJuIDE7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggMmU3MDA3
MS4uMDViZmQzNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0KQEAgLTQzLDEwICs0Myw2IEBACiAKIGV4dGVybiAiQyIgdm9pZCBf
TlNOZXdLaWxsUmluZ1NlcXVlbmNlKCk7CiAKLUBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGV0
YWlscykKLS0gKHZvaWQpX3NldEN1cnJlbnRFdmVudDooTlNFdmVudCAqKWV2ZW50OwotQGVuZAot
CiBlbnVtIE1vdXNlQWN0aW9uIHsKICAgICBNb3VzZURvd24sCiAgICAgTW91c2VVcCwKQEAgLTM1
Nyw5ICszNTMsNyBAQCBzdGF0aWMgaW50IGJ1aWxkTW9kaWZpZXJGbGFncyhjb25zdCBXZWJTY3Jp
cHRPYmplY3QqIG1vZGlmaWVycykKIAogICAgIE5TVmlldyAqc3ViVmlldyA9IFtbbWFpbkZyYW1l
IHdlYlZpZXddIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAgICBpZiAoc3Vi
VmlldykgewotICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAg
IFtzdWJWaWV3IG1vdXNlRG93bjpldmVudF07Ci0gICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2
ZW50Om5pbF07CiAgICAgICAgIGlmIChidXR0b25OdW1iZXIgPT0gTGVmdE1vdXNlQnV0dG9uKQog
ICAgICAgICAgICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsKICAgICB9CkBAIC00MjgsOSAr
NDIyLDcgQEAgc3RhdGljIGludCBidWlsZE1vZGlmaWVyRmxhZ3MoY29uc3QgV2ViU2NyaXB0T2Jq
ZWN0KiBtb2RpZmllcnMpCiAgICAgLy8gaW5zdGVhZCBvZiByb2xsaW5nIG91ciBvd24gYWxnb3Jp
dGhtIGZvciBzZWxlY3RpbmcgYW4gZXZlbnQgdGFyZ2V0LgogICAgIHRhcmdldFZpZXcgPSB0YXJn
ZXRWaWV3ID8gdGFyZ2V0VmlldyA6IFtbbWFpbkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3
XTsKICAgICBhc3NlcnQodGFyZ2V0Vmlldyk7Ci0gICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
ZXZlbnRdOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwotICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50Om5pbF07CiAgICAgaWYgKGJ1dHRvbk51bWJlciA9PSBMZWZ0TW91c2VCdXR0
b24pCiAgICAgICAgIGxlZnRNb3VzZUJ1dHRvbkRvd24gPSBOTzsKICAgICBsYXN0Q2xpY2sgPSBb
ZXZlbnQgdGltZXN0YW1wXTsKQEAgLTQ4NCw3ICs0NzYsNiBAQCBzdGF0aWMgaW50IGJ1aWxkTW9k
aWZpZXJGbGFncyhjb25zdCBXZWJTY3JpcHRPYmplY3QqIG1vZGlmaWVycykKIAogICAgIE5TVmll
dyAqc3ViVmlldyA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9u
SW5XaW5kb3ddXTsKICAgICBpZiAoc3ViVmlldykgewotICAgICAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpldmVudF07CiAgICAgICAgIGlmIChsZWZ0TW91c2VCdXR0b25Eb3duKSB7CiAgICAg
ICAgICAgICBpZiAoZHJhZ2dpbmdJbmZvKSB7CiAgICAgICAgICAgICAgICAgLy8gUGVyIE5TRHJh
Z2dpbmcuaDogZHJhZ2dpbmdTb3VyY2VzIG1heSBub3QgaW1wbGVtZW50IGRyYWdnZWRJbWFnZTpt
b3ZlZFRvOgpAQCAtNDk1LDcgKzQ4Niw2IEBAIHN0YXRpYyBpbnQgYnVpbGRNb2RpZmllckZsYWdz
KGNvbnN0IFdlYlNjcmlwdE9iamVjdCogbW9kaWZpZXJzKQogICAgICAgICAgICAgICAgIFtzdWJW
aWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW3N1
YlZpZXcgbW91c2VNb3ZlZDpldmVudF07Ci0gICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07CiAgICAgfQogfQogCkBAIC01MTUsMTEgKzUwNSw4IEBAIHN0YXRpYyBpbnQgYnVpbGRN
b2RpZmllckZsYWdzKGNvbnN0IFdlYlNjcmlwdE9iamVjdCogbW9kaWZpZXJzKQogICAgIENGUmVs
ZWFzZShjZ1Njcm9sbEV2ZW50KTsKIAogICAgIE5TVmlldyAqc3ViVmlldyA9IFtbbWFpbkZyYW1l
IHdlYlZpZXddIGhpdFRlc3Q6W3Njcm9sbEV2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKLSAgICBp
ZiAoc3ViVmlldykgewotICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpzY3JvbGxFdmVu
dF07CisgICAgaWYgKHN1YlZpZXcpCiAgICAgICAgIFtzdWJWaWV3IHNjcm9sbFdoZWVsOnNjcm9s
bEV2ZW50XTsKLSAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKLSAgICB9CiB9
CiAKIC0gKHZvaWQpY29udGludW91c01vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeQpA
QCAtNTUxLDkgKzUzOCw3IEBAIHN0YXRpYyBpbnQgYnVpbGRNb2RpZmllckZsYWdzKGNvbnN0IFdl
YlNjcmlwdE9iamVjdCogbW9kaWZpZXJzKQogICAgIE5TTXV0YWJsZUFycmF5ICptZW51SXRlbVN0
cmluZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIAogICAgIGlmIChzdWJWaWV3KSB7
Ci0gICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgTlNNZW51
KiBtZW51ID0gW3N1YlZpZXcgbWVudUZvckV2ZW50OmV2ZW50XTsKLSAgICAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6bmlsXTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFttZW51
IG51bWJlck9mSXRlbXNdOyArK2kpIHsKICAgICAgICAgICAgIE5TTWVudUl0ZW0qIG1lbnVJdGVt
ID0gW21lbnUgaXRlbUF0SW5kZXg6aV07CkBAIC03ODksOSArNzc0LDcgQEAgc3RhdGljIGludCBi
dWlsZE1vZGlmaWVyRmxhZ3MoY29uc3QgV2ViU2NyaXB0T2JqZWN0KiBtb2RpZmllcnMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KICAgICAgICAgICAgICAgICAgICAgICAg
IGtleUNvZGU6a2V5Q29kZV07CiAKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07
CiAgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSBrZXlE
b3duOmV2ZW50XTsKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwogCiAgICAgZXZl
bnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5VXAKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCkBAIC04MDQsOSArNzg3LDcgQEAgc3Rh
dGljIGludCBidWlsZE1vZGlmaWVyRmxhZ3MoY29uc3QgV2ViU2NyaXB0T2JqZWN0KiBtb2RpZmll
cnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KICAgICAgICAgICAgICAg
ICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CiAKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudF07CiAgICAgW1tbW21haW5GcmFtZSB3ZWJWaWV3XSB3aW5kb3ddIGZpcnN0UmVzcG9u
ZGVyXSBrZXlVcDpldmVudF07Ci0gICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKIH0K
IAogLSAodm9pZClrZXlEb3duV3JhcHBlcjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgd2l0aE1vZGlm
aWVyczooV2ViU2NyaXB0T2JqZWN0ICopbW9kaWZpZXJzIHdpdGhMb2NhdGlvbjoodW5zaWduZWQg
bG9uZylsb2NhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWUucHJvIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJv
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNmNmY2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KQEAgLTAs
MCArMSw2MCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgdGhlIER1bXBSZW5k
ZXJUcmVlIGJpbmFyeSAoRFJUKQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFu
IG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9
IGFwcAorCitUQVJHRVQgPSBEdW1wUmVuZGVyVHJlZQorREVTVERJUiA9ICQkUk9PVF9CVUlMRF9E
SVIvYmluCisKK1dFQktJVCArPSB3dGYgamF2YXNjcmlwdGNvcmUgd2ViY29yZQorCitJTkNMVURF
UEFUSCArPSBcCisgICAgJCRQV0QvIFwKKyAgICAkJFBXRC8uLiBcCisgICAgJCR7Uk9PVF9XRUJL
SVRfRElSfS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdCBcCisgICAgJCR7Uk9PVF9XRUJLSVRf
RElSfS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0IFwKKyAgICAkJHtST09UX1dFQktJ
VF9ESVJ9L1NvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0U3VwcG9ydCBcCisgICAgJCR7Uk9PVF9XRUJL
SVRfRElSfS9Tb3VyY2UvV1RGCisKK1FUID0gY29yZSBndWkgbmV0d29yayB0ZXN0bGliIHdlYmtp
dHdpZGdldHMgd2lkZ2V0cworaGF2ZT8oUVRQUklOVFNVUFBPUlQpOiBRVCArPSBwcmludHN1cHBv
cnQKK21hY3g6IFFUICs9IHhtbAorCitIRUFERVJTICs9IFwKKyAgICAkJFBXRC8uLi9Xb3JrUXVl
dWUuaCBcCisgICAgJCRQV0QvLi4vRHVtcFJlbmRlclRyZWUuaCBcCisgICAgJCRQV0QvLi4vR0ND
b250cm9sbGVyLmggXAorICAgICQkUFdELy4uL1Rlc3RSdW5uZXIuaCBcCisgICAgRHVtcFJlbmRl
clRyZWVRdC5oIFwKKyAgICBFdmVudFNlbmRlclF0LmggXAorICAgIFRleHRJbnB1dENvbnRyb2xs
ZXJRdC5oIFwKKyAgICBXb3JrUXVldWVJdGVtUXQuaCBcCisgICAgVGVzdFJ1bm5lclF0LmggXAor
ICAgIHRlc3RwbHVnaW4uaAorCitTT1VSQ0VTICs9IFwKKyAgICAkJFBXRC8uLi9Xb3JrUXVldWUu
Y3BwIFwKKyAgICAkJFBXRC8uLi9EdW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAgXAorICAgICQkUFdE
Ly4uL0dDQ29udHJvbGxlci5jcHAgXAorICAgICQkUFdELy4uL1Rlc3RSdW5uZXIuY3BwIFwKKyAg
ICBEdW1wUmVuZGVyVHJlZVF0LmNwcCBcCisgICAgRXZlbnRTZW5kZXJRdC5jcHAgXAorICAgIFRl
eHRJbnB1dENvbnRyb2xsZXJRdC5jcHAgXAorICAgIFdvcmtRdWV1ZUl0ZW1RdC5jcHAgXAorICAg
IFRlc3RSdW5uZXJRdC5jcHAgXAorICAgIEdDQ29udHJvbGxlclF0LmNwcCBcCisgICAgdGVzdHBs
dWdpbi5jcHAgXAorICAgIER1bXBSZW5kZXJUcmVlTWFpbi5jcHAKKword2luY2UqOiB7CisgICAg
SU5DTFVERVBBVEggKz0gJCRXQ0VDT01QQVQvaW5jbHVkZQorICAgIExJQlMgKz0gJCRXQ0VDT01Q
QVQvbGliL3djZWNvbXBhdC5saWIKK30KKworREVGSU5FUyAtPSBVU0VfU1lTVEVNX01BTExPQz0w
CitERUZJTkVTICs9IFVTRV9TWVNURU1fTUFMTE9DPTEKKworUkVTT1VSQ0VTID0gRHVtcFJlbmRl
clRyZWUucXJjCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZS5xcmMgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5xcmMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkMTYzYQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnFyYwpAQCAtMCwwICsx
LDUgQEAKKzxSQ0M+CisgICAgPHFyZXNvdXJjZSBwcmVmaXg9Ii8iPgorICAgICAgICA8ZmlsZT5y
ZXNvdXJjZXMvdXNlci5jc3M8L2ZpbGU+CisgICAgPC9xcmVzb3VyY2U+Cis8L1JDQz4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlTWFpbi5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZU1haW4uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NDk0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZU1haW4uY3BwCkBAIC0wLDAgKzEsMjAw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVF0LmgiCisK
KyNpbmNsdWRlICJRdFRlc3RTdXBwb3J0LmgiCisjaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+Cisj
aW5jbHVkZSA8cWRlYnVnLmg+CisjaW5jbHVkZSA8cWRpci5oPgorI2luY2x1ZGUgPHFmb250Lmg+
CisjaW5jbHVkZSA8cXN0cmluZ2xpc3QuaD4KKyNpbmNsdWRlIDxxc3R5bGVmYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8cXRpbWVyLmg+CisjaW5jbHVkZSA8cXVybC5oPgorI2luY2x1ZGUgPHF3ZWJkYXRh
YmFzZS5oPgorCisjaWZkZWYgUV9XU19YMTEKKyNpbmNsdWRlIDxxeDExaW5mb194MTEuaD4KKyNl
bmRpZgorCisjaWZkZWYgUV9PU19XSU4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGlv
Lmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKwordm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUgdHlwZSwgY29uc3QgUU1l
c3NhZ2VMb2dDb250ZXh0JiwgY29uc3QgUVN0cmluZyAmbWVzc2FnZSkKK3sKKyAgICBpZiAodHlw
ZSA9PSBRdENyaXRpY2FsTXNnIHx8IHR5cGUgPT0gUXRGYXRhbE1zZykgeworICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiVzXG4iLCBxUHJpbnRhYmxlKG1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAvLyBkbyBub3RoaW5nCit9CisKKy8vIFdlIG9ubHkgc3VwcG9ydCAtdiwg
LXAsIC0tcGl4ZWwtdGVzdHMsIC0tc3Rkb3V0LCAtLXN0ZGVyciBhbmQgLSwgYWxsIHRoZSBvdGhl
cnMgd2lsbCBiZQorLy8gcGFzcyBhcyB0ZXN0IGNhc2UgbmFtZSAoZXZlbiAtYWJjLmh0bWwgaXMg
YSB2YWxpZCB0ZXN0IGNhc2UgbmFtZSkKK2Jvb2wgaXNPcHRpb24oY29uc3QgUVN0cmluZyYgc3Ry
KQoreworICAgIHJldHVybiBzdHIgPT0gUVN0cmluZygiLXYiKSB8fCBzdHIgPT0gUVN0cmluZygi
LXAiKSB8fCBzdHIgPT0gUVN0cmluZygiLS1waXhlbC10ZXN0cyIpCisgICAgICAgICAgIHx8IHN0
ciA9PSBRU3RyaW5nKCItLXN0ZG91dCIpIHx8IHN0ciA9PSBRU3RyaW5nKCItLXN0ZGVyciIpCisg
ICAgICAgICAgIHx8IHN0ciA9PSBRU3RyaW5nKCItLXRpbWVvdXQiKSB8fCBzdHIgPT0gUVN0cmlu
ZygiLS1uby10aW1lb3V0IikKKyAgICAgICAgICAgfHwgc3RyID09IFFTdHJpbmcoIi0iKTsKK30K
KworUVN0cmluZyB0YWtlT3B0aW9uVmFsdWUoUVN0cmluZ0xpc3QmIGFyZ3VtZW50cywgaW50IGlu
ZGV4KQoreworICAgIFFTdHJpbmcgcmVzdWx0OworCisgICAgaWYgKGluZGV4ICsgMSA8IGFyZ3Vt
ZW50cy5jb3VudCgpICYmICFpc09wdGlvbihhcmd1bWVudHMuYXQoaW5kZXggKyAxKSkpCisgICAg
ICAgIHJlc3VsdCA9IGFyZ3VtZW50cy50YWtlQXQoaW5kZXggKyAxKTsKKyAgICBhcmd1bWVudHMu
cmVtb3ZlQXQoaW5kZXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBwcmludFVz
YWdlKCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBEdW1wUmVuZGVyVHJlZSBbLXZ8
LXB8LS1waXhlbC10ZXN0c10gWy0tc3Rkb3V0IG91dHB1dF9maWxlbmFtZV0gWy1zdGRlcnIgZXJy
b3JfZmlsZW5hbWVdIFstLW5vLXRpbWVvdXRdIFstLXRpbWVvdXQgdGltZW91dF9NU10gZmlsZW5h
bWUgW2ZpbGVuYW1lMi4ubl1cbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiT3IgZm9sZGVyIGNv
bnRhaW5pbmcgdGVzdCBmaWxlczogRHVtcFJlbmRlclRyZWUgWy12fC0tcGl4ZWwtdGVzdHNdIGRp
cnBhdGhcbiIpOworICAgIGZmbHVzaChzdGRlcnIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywg
Y2hhciogYXJndltdKQoreworI2lmZGVmIFFfT1NfV0lOCisgICAgX3NldG1vZGUoMSwgX09fQklO
QVJZKTsKKyAgICBfc2V0bW9kZSgyLCBfT19CSU5BUlkpOworI2VuZGlmCisKKyAgICAvLyBTdXBw
cmVzcyBkZWJ1ZyBvdXRwdXQgZnJvbSBRdCBpZiBub3Qgc3RhcnRlZCB3aXRoIC12CisgICAgYm9v
bCBzdXBwcmVzc1F0RGVidWdPdXRwdXQgPSB0cnVlOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwg
YXJnYzsgKytpKSB7CisgICAgICAgIGlmICghcXN0cmNtcChhcmd2W2ldLCAiLXYiKSkgeworICAg
ICAgICAgICAgc3VwcHJlc3NRdERlYnVnT3V0cHV0ID0gZmFsc2U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEhhcyB0byBiZSBkb25lIGJlZm9yZSBRQXBw
bGljYXRpb24gaXMgY29uc3RydWN0ZWQgaW4gY2FzZQorICAgIC8vIFFBcHBsaWNhdGlvbiBpdHNl
bGYgcHJvZHVjZXMgZGVidWcgb3V0cHV0LgorICAgIGlmIChzdXBwcmVzc1F0RGVidWdPdXRwdXQp
CisgICAgICAgIHFJbnN0YWxsTWVzc2FnZUhhbmRsZXIobWVzc2FnZUhhbmRsZXIpOworCisgICAg
V2ViS2l0OjpRdFRlc3RTdXBwb3J0Ojppbml0aWFsaXplVGVzdEZvbnRzKCk7CisKKyAgICBRQXBw
bGljYXRpb246OnNldFN0eWxlKFFTdHlsZUZhY3Rvcnk6OmNyZWF0ZShRTGF0aW4xU3RyaW5nKCJ3
aW5kb3dzIikpKTsKKyAgICBRQXBwbGljYXRpb246OnNldERlc2t0b3BTZXR0aW5nc0F3YXJlKGZh
bHNlKTsKKworICAgIFFBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisgICAgYXBwLnNldFF1
aXRPbkxhc3RXaW5kb3dDbG9zZWQoZmFsc2UpOworCisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2V0
QXR0cmlidXRlKFF0OjpBQV9Vc2U5NkRwaSwgdHJ1ZSk7CisKKyAgICBXVEZJbnN0YWxsUmVwb3J0
QmFja3RyYWNlT25DcmFzaEhvb2soKTsKKworICAgIFFTdHJpbmdMaXN0IGFyZ3MgPSBhcHAuYXJn
dW1lbnRzKCk7CisgICAgaWYgKGFyZ3MuY291bnQoKSA8ICghc3VwcHJlc3NRdERlYnVnT3V0cHV0
ID8gMyA6IDIpKSB7CisgICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAgZXhpdCgxKTsKKyAg
ICB9CisKKyAgICAvLyBSZW1vdmUgdGhlIGZpcnN0IGFyZ3VtZW50cywgaXQgaXMgYXBwbGljYXRp
b24gbmFtZSBpdHNlbGYKKyAgICBhcmdzLnJlbW92ZUF0KDApOworCisgICAgRHVtcFJlbmRlclRy
ZWUgZHVtcGVyOworCisgICAgaW50IGluZGV4ID0gYXJncy5pbmRleE9mKFFMYXRpbjFTdHJpbmco
Ii0tc3Rkb3V0IikpOworICAgIGlmIChpbmRleCAhPSAtMSkgeworICAgICAgICBRU3RyaW5nIGZp
bGVOYW1lID0gdGFrZU9wdGlvblZhbHVlKGFyZ3MsIGluZGV4KTsKKyAgICAgICAgZHVtcGVyLnNl
dFJlZGlyZWN0T3V0cHV0RmlsZU5hbWUoZmlsZU5hbWUpOworICAgICAgICBpZiAoZmlsZU5hbWUu
aXNFbXB0eSgpIHx8ICFmcmVvcGVuKHFQcmludGFibGUoZmlsZU5hbWUpLCAidyIsIHN0ZG91dCkp
IHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU1RET1VUIHJlZGlyZWN0aW9uIGZhaWxl
ZC4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaW5kZXgg
PSBhcmdzLmluZGV4T2YoUUxhdGluMVN0cmluZygiLS1zdGRlcnIiKSk7CisgICAgaWYgKGluZGV4
ICE9IC0xKSB7CisgICAgICAgIFFTdHJpbmcgZmlsZU5hbWUgPSB0YWtlT3B0aW9uVmFsdWUoYXJn
cywgaW5kZXgpOworICAgICAgICBkdW1wZXIuc2V0UmVkaXJlY3RFcnJvckZpbGVOYW1lKGZpbGVO
YW1lKTsKKyAgICAgICAgaWYgKCFmcmVvcGVuKHFQcmludGFibGUoZmlsZU5hbWUpLCAidyIsIHN0
ZGVycikpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU1RERVJSIHJlZGlyZWN0aW9u
IGZhaWxlZC4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
aW5kZXggPSBhcmdzLmluZGV4T2YoIi0tcGl4ZWwtdGVzdHMiKTsKKyAgICBpZiAoaW5kZXggPT0g
LTEpCisgICAgICAgIGluZGV4ID0gYXJncy5pbmRleE9mKCItcCIpOworICAgIGlmIChpbmRleCAh
PSAtMSkgeworICAgICAgICBkdW1wZXIuc2V0U2hvdWxkRHVtcFBpeGVsc0ZvckFsbFRlc3RzKCk7
CisgICAgICAgIGFyZ3MucmVtb3ZlQXQoaW5kZXgpOworICAgIH0KKworICAgIFFXZWJEYXRhYmFz
ZTo6cmVtb3ZlQWxsRGF0YWJhc2VzKCk7CisKKyAgICBpbmRleCA9IGFyZ3MuaW5kZXhPZihRTGF0
aW4xU3RyaW5nKCItLXRpbWVvdXQiKSk7CisgICAgaWYgKGluZGV4ICE9IC0xKSB7CisgICAgICAg
IGludCB0aW1lb3V0ID0gdGFrZU9wdGlvblZhbHVlKGFyZ3MsIGluZGV4KS50b0ludCgpOworICAg
ICAgICBkdW1wZXIuc2V0VGltZW91dCh0aW1lb3V0KTsKKyAgICB9CisKKyAgICBpbmRleCA9IGFy
Z3MuaW5kZXhPZihRTGF0aW4xU3RyaW5nKCItLW5vLXRpbWVvdXQiKSk7CisgICAgaWYgKGluZGV4
ICE9IC0xKSB7CisgICAgICAgIGR1bXBlci5zZXRTaG91bGRUaW1lb3V0KGZhbHNlKTsKKyAgICAg
ICAgYXJncy5yZW1vdmVBdChpbmRleCk7CisgICAgfQorCisgICAgaW5kZXggPSBhcmdzLmluZGV4
T2YoUUxhdGluMVN0cmluZygiLSIpKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpIHsKKyAgICAgICAg
YXJncy5yZW1vdmVBdChpbmRleCk7CisKKyAgICAgICAgLy8gQ29udGludWUgd2FpdGluZyBpbiBT
VERJTiBmb3IgbW9yZSB0ZXN0IGNhc2UgYWZ0ZXIgcHJvY2VzcyBvbmUgdGVzdCBjYXNlCisgICAg
ICAgIFFPYmplY3Q6OmNvbm5lY3QoJmR1bXBlciwgU0lHTkFMKHJlYWR5KCkpLCAmZHVtcGVyLCBT
TE9UKHJlYWRMaW5lKCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7ICAgCisKKyAgICAgICAgLy8g
UmVhZCBhbmQgb25seSByZWFkIHRoZSBmaXJzdCB0ZXN0IGNhc2UsIGlnbm9yZSB0aGUgb3RoZXJz
IAorICAgICAgICBpZiAoYXJncy5zaXplKCkgPiAwKSB7IAorICAgICAgICAgICAgLy8gUHJvY2Vz
cyB0aGUgYXJndW1lbnQgZmlyc3QKKyAgICAgICAgICAgIGR1bXBlci5wcm9jZXNzTGluZShhcmdz
WzBdKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCgwLCAm
ZHVtcGVyLCBTTE9UKHJlYWRMaW5lKCkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHbyBp
bnRvIHN0YW5kYWxvbmUgbW9kZQorICAgICAgICAvLyBTdGFuZGFsb25lIG1vZGUgbmVlZCBhdCBs
ZWFzdCBvbmUgdGVzdCBjYXNlCisgICAgICAgIGlmIChhcmdzLmNvdW50KCkgPCAxKSB7CisgICAg
ICAgICAgICBwcmludFVzYWdlKCk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9Cisg
ICAgICAgIGR1bXBlci5wcm9jZXNzQXJnc0xpbmUoYXJncyk7CisgICAgfQorICAgIHJldHVybiBh
cHAuZXhlYygpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWVRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMzc0YjJmCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAK
QEAgLTAsMCArMSwxMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5o
IgorCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVRdC5oIgorI2luY2x1ZGUgIkR1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXJRdC5oIgorI2luY2x1ZGUgIkdD
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKKyNpbmNsdWRlICJJbml0
V2ViS2l0UXQuaCIKKyNpbmNsdWRlICJKU1N0cmluZ1JlZlF0LmgiCisjaW5jbHVkZSAiUXRUZXN0
U3VwcG9ydC5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKKyNpbmNsdWRlICJUZXN0UnVubmVy
UXQuaCIKKyNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyUXQuaCIKKyNpbmNsdWRlICJ0ZXN0
cGx1Z2luLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDxRQXBwbGljYXRp
b24+CisjaW5jbHVkZSA8UUJ1ZmZlcj4KKyNpbmNsdWRlIDxRQ3J5cHRvZ3JhcGhpY0hhc2g+Cisj
aW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRRmlsZT4KKyNpbmNsdWRlIDxRRmlsZUluZm8+Cisj
aW5jbHVkZSA8UUZvY3VzRXZlbnQ+CisjaW5jbHVkZSA8UUxhYmVsPgorI2luY2x1ZGUgPFFMb2Nh
bGU+CisjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NNYW5hZ2VyPgorI2luY2x1ZGUgPFFOZXR3b3Jr
UmVwbHk+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgorI2luY2x1ZGUgPFFQYWludERldmlj
ZT4KKyNpbmNsdWRlIDxRUGFpbnRFbmdpbmU+CisjaWYgIWRlZmluZWQoUVRfTk9fUFJJTlRFUikg
JiYgSEFWRShRVFBSSU5UU1VQUE9SVCkKKyNpbmNsdWRlIDxRUHJpbnRlcj4KKyNlbmRpZgorI2lu
Y2x1ZGUgPFFQcm9ncmVzc0Jhcj4KKyNpbmNsdWRlIDxRVW5kb1N0YWNrPgorI2luY2x1ZGUgPFFV
cmw+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSA8
cXdlYnNlY3VyaXR5b3JpZ2luLmg+CisjaW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+CisjaWZuZGVm
IFFfT1NfV0lOCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK2NvbnN0IGludCBkYXRhYmFzZURlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICog
MTAyNDsKKworTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok5ldHdvcmtBY2Nlc3NNYW5hZ2VyKFFPYmpl
Y3QqIHBhcmVudCkKKyAgICA6IFFOZXR3b3JrQWNjZXNzTWFuYWdlcihwYXJlbnQpCit7CisjaWZu
ZGVmIFFUX05PX09QRU5TU0wKKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChzc2xFcnJvcnMoUU5l
dHdvcmtSZXBseSosIGNvbnN0IFFMaXN0PFFTc2xFcnJvcj4mKSksCisgICAgICAgICAgICB0aGlz
LCBTTE9UKHNzbEVycm9yc0VuY291bnRlcmVkKFFOZXR3b3JrUmVwbHkqLCBjb25zdCBRTGlzdDxR
U3NsRXJyb3I+JikpKTsKKyNlbmRpZgorfQorCisjaWZuZGVmIFFUX05PX09QRU5TU0wKK3ZvaWQg
TmV0d29ya0FjY2Vzc01hbmFnZXI6OnNzbEVycm9yc0VuY291bnRlcmVkKFFOZXR3b3JrUmVwbHkq
IHJlcGx5LCBjb25zdCBRTGlzdDxRU3NsRXJyb3I+JiBlcnJvcnMpCit7CisgICAgaWYgKHJlcGx5
LT51cmwoKS5ob3N0KCkgPT0gIjEyNy4wLjAuMSIgfHwgcmVwbHktPnVybCgpLmhvc3QoKSA9PSAi
bG9jYWxob3N0IikgeworICAgICAgICBib29sIGlnbm9yZSA9IHRydWU7CisKKyAgICAgICAgLy8g
QWNjZXB0IGFueSBIVFRQUyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgZm9yZWFjaCAoY29uc3QgUVNz
bEVycm9yJiBlcnJvciwgZXJyb3JzKSB7CisgICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IoKSA8
IFFTc2xFcnJvcjo6VW5hYmxlVG9HZXRJc3N1ZXJDZXJ0aWZpY2F0ZSB8fCBlcnJvci5lcnJvcigp
ID4gUVNzbEVycm9yOjpIb3N0TmFtZU1pc21hdGNoKSB7CisgICAgICAgICAgICAgICAgaWdub3Jl
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBpZiAoaWdub3JlKQorICAgICAgICAgICAgcmVwbHktPmlnbm9yZVNzbEVy
cm9ycygpOworICAgIH0KK30KKyNlbmRpZgorCisKKyNpZiAhZGVmaW5lZChRVF9OT19QUklOVEVS
KSAmJiBIQVZFKFFUUFJJTlRTVVBQT1JUKQorY2xhc3MgTnVsbFByaW50ZXIgOiBwdWJsaWMgUVBy
aW50ZXIgeworcHVibGljOgorICAgIGNsYXNzIE51bGxQYWludEVuZ2luZSA6IHB1YmxpYyBRUGFp
bnRFbmdpbmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCBib29sIGJlZ2luKFFQYWlu
dERldmljZSopIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGVuZCgpIHsg
cmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBRUGFpbnRFbmdpbmU6OlR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFFQYWludEVuZ2luZTo6VXNlcjsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1BpeG1hcChjb25zdCBRUmVjdEYmIHIsIGNvbnN0IFFQaXhtYXAmIHBtLCBjb25zdCBR
UmVjdEYmIHNyKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IFFQ
YWludEVuZ2luZVN0YXRlJiBzdGF0ZSkgeyB9CisgICAgfTsKKworICAgIHZpcnR1YWwgUVBhaW50
RW5naW5lKiBwYWludEVuZ2luZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TnVsbFBhaW50
RW5naW5lKj4oJm1fZW5naW5lKTsgfQorCisgICAgTnVsbFBhaW50RW5naW5lIG1fZW5naW5lOwor
fTsKKyNlbmRpZgorCitXZWJQYWdlOjpXZWJQYWdlKFFPYmplY3QqIHBhcmVudCwgRHVtcFJlbmRl
clRyZWUqIGRydCkKKyAgICA6IFFXZWJQYWdlKHBhcmVudCkKKyAgICAsIG1fd2ViSW5zcGVjdG9y
KDApCisgICAgLCBtX2RydChkcnQpCit7CisgICAgUVdlYlNldHRpbmdzKiBnbG9iYWxTZXR0aW5n
cyA9IFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKTsKKworICAgIGdsb2JhbFNldHRpbmdz
LT5zZXRGb250U2l6ZShRV2ViU2V0dGluZ3M6Ok1pbmltdW1Gb250U2l6ZSwgMCk7CisgICAgZ2xv
YmFsU2V0dGluZ3MtPnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6TWluaW11bUxvZ2ljYWxGb250
U2l6ZSwgNSk7CisgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6
RGVmYXVsdEZvbnRTaXplLCAxNik7CisgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEZvbnRTaXplKFFX
ZWJTZXR0aW5nczo6RGVmYXVsdEZpeGVkRm9udFNpemUsIDEzKTsKKworICAgIGdsb2JhbFNldHRp
bmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3Ms
IHRydWUpOworICAgIGdsb2JhbFNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpK
YXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkLCB0cnVlKTsKKyAgICBnbG9iYWxTZXR0aW5ncy0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TGlua3NJbmNsdWRlZEluRm9jdXNDaGFpbiwgZmFs
c2UpOworICAgIGdsb2JhbFNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVn
aW5zRW5hYmxlZCwgdHJ1ZSk7CisgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsIHRydWUpOworICAgIGds
b2JhbFNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5hYmxl
ZCwgdHJ1ZSk7CisgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OlByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGZhbHNlKTsKKyAgICBnbG9iYWxTZXR0aW5ncy0+c2V0
QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBmYWxzZSk7
CisKKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChnZW9tZXRyeUNoYW5nZVJlcXVlc3RlZChjb25z
dCBRUmVjdCAmKSksCisgICAgICAgICAgICB0aGlzLCBTTE9UKHNldFZpZXdHZW9tZXRyeShjb25z
dCBRUmVjdCAmICkpKTsKKworICAgIHNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKG1fZHJ0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpKTsKKyAgICBzZXRQbHVnaW5GYWN0b3J5KG5ldyBUZXN0UGx1Z2lu
KHRoaXMpKTsKKworICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGZlYXR1cmVQZXJtaXNzaW9uUmVx
dWVzdGVkKFFXZWJGcmFtZSosIFFXZWJQYWdlOjpGZWF0dXJlKSksIHRoaXMsIFNMT1QocmVxdWVz
dFBlcm1pc3Npb24oUVdlYkZyYW1lKiwgUVdlYlBhZ2U6OkZlYXR1cmUpKSk7CisgICAgY29ubmVj
dCh0aGlzLCBTSUdOQUwoZmVhdHVyZVBlcm1pc3Npb25SZXF1ZXN0Q2FuY2VsZWQoUVdlYkZyYW1l
KiwgUVdlYlBhZ2U6OkZlYXR1cmUpKSwgdGhpcywgU0xPVChjYW5jZWxQZXJtaXNzaW9uKFFXZWJG
cmFtZSosIFFXZWJQYWdlOjpGZWF0dXJlKSkpOworfQorCitXZWJQYWdlOjp+V2ViUGFnZSgpCit7
CisgICAgZGVsZXRlIG1fd2ViSW5zcGVjdG9yOworfQorCitRV2ViSW5zcGVjdG9yKiBXZWJQYWdl
Ojp3ZWJJbnNwZWN0b3IoKQoreworICAgIGlmICghbV93ZWJJbnNwZWN0b3IpIHsKKyAgICAgICAg
bV93ZWJJbnNwZWN0b3IgPSBuZXcgUVdlYkluc3BlY3RvcjsKKyAgICAgICAgbV93ZWJJbnNwZWN0
b3ItPnNldFBhZ2UodGhpcyk7CisgICAgfQorICAgIHJldHVybiBtX3dlYkluc3BlY3RvcjsKK30K
Kwordm9pZCBXZWJQYWdlOjpyZXNldFNldHRpbmdzKCkKK3sKKyAgICAvLyBBZnRlciBlYWNoIGxh
eW91dCB0ZXN0LCByZXNldCB0aGUgc2V0dGluZ3MgdGhhdCBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQg
YnkKKyAgICAvLyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgpIG9yIHNpbWlsYXIuCisg
ICAgc2V0dGluZ3MoKS0+cmVzZXRGb250U2l6ZShRV2ViU2V0dGluZ3M6OkRlZmF1bHRGb250U2l6
ZSk7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2Ny
aXB0Q2FuT3BlbldpbmRvd3MpOworICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJT
ZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJsZWQpOworICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmli
dXRlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgc2V0dGluZ3Mo
KS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQp
OworICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TGlua3NJbmNs
dWRlZEluRm9jdXNDaGFpbik7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNl
dHRpbmdzOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOworICAgIHNldHRpbmdz
KCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVt
b3RlVXJscyk7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpM
b2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscyk7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRy
aWJ1dGUoUVdlYlNldHRpbmdzOjpQbHVnaW5zRW5hYmxlZCk7CisgICAgc2V0dGluZ3MoKS0+cmVz
ZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKTsK
KyAgICBzZXR0aW5ncygpLT5yZXNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkF1dG9Mb2FkSW1h
Z2VzKTsKKyAgICBzZXR0aW5ncygpLT5yZXNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Olpvb21U
ZXh0T25seSk7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpD
U1NSZWdpb25zRW5hYmxlZCk7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNl
dHRpbmdzOjpDU1NHcmlkTGF5b3V0RW5hYmxlZCk7CisgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRy
aWJ1dGUoUVdlYlNldHRpbmdzOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCk7CisKKyAg
ICBtX2RydC0+dGVzdFJ1bm5lcigpLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChmYWxzZSk7Cisg
ICAgbV9kcnQtPnRlc3RSdW5uZXIoKS0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQodHJ1
ZSk7CisgICAgbV9kcnQtPmpzY1Rlc3RSdW5uZXIoKS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7
CisKKyAgICAvLyBnbG9iYWxTZXR0aW5ncyBtdXN0IGJlIHJlc2V0IGV4cGxpY2l0bHkuCisgICAg
bV9kcnQtPnRlc3RSdW5uZXIoKS0+c2V0WFNTQXVkaXRvckVuYWJsZWQoZmFsc2UpOworCisgICAg
UVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hlKDApOyAvLyByZXNldCB0byBkZWZh
dWx0CisgICAgc2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hlZXRVcmwoUVVybCgpKTsgLy8gcmVz
ZXQgdG8gZGVmYXVsdAorCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQodHJ1ZSk7CisKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVz
ZXRJbnRlcm5hbHNPYmplY3QobWFpbkZyYW1lKCktPmhhbmRsZSgpKTsKKworICAgIG1fcGVuZGlu
Z0dlb2xvY2F0aW9uUmVxdWVzdHMuY2xlYXIoKTsKK30KKworUVdlYlBhZ2UqIFdlYlBhZ2U6OmNy
ZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSkKK3sKKyAgICByZXR1cm4gbV9kcnQt
PmNyZWF0ZVdpbmRvdygpOworfQorCit2b2lkIFdlYlBhZ2U6OmphdmFTY3JpcHRBbGVydChRV2Vi
RnJhbWUqLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghaXNUZXh0T3V0cHV0
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmcHJpbnRmKHN0ZG91dCwgIkFMRVJU
OiAlc1xuIiwgbWVzc2FnZS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisgICAgZmZsdXNoKHN0ZG91
dCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdFBlcm1pc3Npb24oUVdlYkZyYW1lKiBmcmFt
ZSwgUVdlYlBhZ2U6OkZlYXR1cmUgZmVhdHVyZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmUpIHsK
KyAgICBjYXNlIE5vdGlmaWNhdGlvbnM6CisgICAgICAgIGlmICghbV9kcnQtPnRlc3RSdW5uZXIo
KS0+aWdub3JlUmVxZXN0Rm9yUGVybWlzc2lvbigpKQorICAgICAgICAgICAgc2V0RmVhdHVyZVBl
cm1pc3Npb24oZnJhbWUsIGZlYXR1cmUsIFBlcm1pc3Npb25HcmFudGVkQnlVc2VyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHZW9sb2NhdGlvbjoKKyAgICAgICAgaWYgKG1fZHJ0LT50ZXN0
UnVubmVyKCktPmlzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkpCisgICAgICAgICAgICBpZiAo
bV9kcnQtPnRlc3RSdW5uZXIoKS0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uKCkpCisgICAgICAgICAg
ICAgICAgc2V0RmVhdHVyZVBlcm1pc3Npb24oZnJhbWUsIGZlYXR1cmUsIFBlcm1pc3Npb25HcmFu
dGVkQnlVc2VyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXRGZWF0dXJl
UGVybWlzc2lvbihmcmFtZSwgZmVhdHVyZSwgUGVybWlzc2lvbkRlbmllZEJ5VXNlcik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUmVxdWVzdHMuYXBwZW5k
KGZyYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OmNhbmNlbFBlcm1pc3Npb24oUVdlYkZyYW1lKiBmcmFt
ZSwgUVdlYlBhZ2U6OkZlYXR1cmUgZmVhdHVyZSkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmUpIHsK
KyAgICBjYXNlIEdlb2xvY2F0aW9uOgorICAgICAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblJlcXVl
c3RzLnJlbW92ZU9uZShmcmFtZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjpwZXJtaXNzaW9uU2V0KFFXZWJQ
YWdlOjpGZWF0dXJlIGZlYXR1cmUpCit7CisgICAgc3dpdGNoIChmZWF0dXJlKSB7CisgICAgY2Fz
ZSBHZW9sb2NhdGlvbjoKKyAgICAgICAgeworICAgICAgICBRX0FTU0VSVChtX2RydC0+dGVzdFJ1
bm5lcigpLT5pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpKTsKKyAgICAgICAgZm9yZWFjaCAo
UVdlYkZyYW1lKiBmcmFtZSwgbV9wZW5kaW5nR2VvbG9jYXRpb25SZXF1ZXN0cykKKyAgICAgICAg
ICAgIGlmIChtX2RydC0+dGVzdFJ1bm5lcigpLT5nZW9sb2NhdGlvblBlcm1pc3Npb24oKSkKKyAg
ICAgICAgICAgICAgICBzZXRGZWF0dXJlUGVybWlzc2lvbihmcmFtZSwgZmVhdHVyZSwgUGVybWlz
c2lvbkdyYW50ZWRCeVVzZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNl
dEZlYXR1cmVQZXJtaXNzaW9uKGZyYW1lLCBmZWF0dXJlLCBQZXJtaXNzaW9uRGVuaWVkQnlVc2Vy
KTsKKworICAgICAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblJlcXVlc3RzLmNsZWFyKCk7CisgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCisvLyBGSVhNRSAoMTE5NTkxKTogTWFrZSB0aGlzIG1hdGNoIG90aGVyIHBsYXRmb3Jt
cyBiZXR0ZXIuCitzdGF0aWMgUVN0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3Qg
UVN0cmluZyYgdXJsKQoreworICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8ICF1cmwuc3RhcnRzV2l0
aChRTGF0aW4xU3RyaW5nKCJmaWxlOi8vIikpKQorICAgICAgICByZXR1cm4gdXJsOworCisgICAg
cmV0dXJuIFFGaWxlSW5mbyh1cmwpLmZpbGVOYW1lKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6amF2
YVNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBRU3RyaW5nJikKK3sKKyAgICBpZiAoIWlzVGV4dE91dHB1dEVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUVN0cmluZyBuZXdNZXNzYWdlOworICAgIGlmICghbWVz
c2FnZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbmV3TWVzc2FnZSA9IG1lc3NhZ2U7CisKKyAgICAg
ICAgc2l6ZV90IGZpbGVQcm90b2NvbCA9IG5ld01lc3NhZ2UuaW5kZXhPZihRTGF0aW4xU3RyaW5n
KCJmaWxlOi8vIikpOworICAgICAgICBpZiAoZmlsZVByb3RvY29sICE9IC0xKSB7CisgICAgICAg
ICAgICBuZXdNZXNzYWdlID0gbmV3TWVzc2FnZS5sZWZ0KGZpbGVQcm90b2NvbCkgKyB1cmxTdWl0
YWJsZUZvclRlc3RSZXN1bHQobmV3TWVzc2FnZS5taWQoZmlsZVByb3RvY29sKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmcHJpbnRmKHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTogIik7Cisg
ICAgaWYgKGxpbmVOdW1iZXIpCisgICAgICAgIGZwcmludGYoc3Rkb3V0LCAibGluZSAlZDogIiwg
bGluZU51bWJlcik7CisgICAgZnByaW50ZihzdGRvdXQsICIlc1xuIiwgbmV3TWVzc2FnZS50b1V0
ZjgoKS5jb25zdERhdGEoKSk7Cit9CisKK2Jvb2wgV2ViUGFnZTo6amF2YVNjcmlwdENvbmZpcm0o
UVdlYkZyYW1lKiwgY29uc3QgUVN0cmluZyYgbXNnKQoreworICAgIGlmICghaXNUZXh0T3V0cHV0
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZwcmludGYoc3Rkb3V0LCAi
Q09ORklSTTogJXNcbiIsIG1zZy50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgV2ViUGFnZTo6amF2YVNjcmlwdFByb21wdChRV2ViRnJhbWUqLCBjb25z
dCBRU3RyaW5nJiBtc2csIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgUVN0cmluZyogcmVz
dWx0KQoreworICAgIGlmICghaXNUZXh0T3V0cHV0RW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGZwcmludGYoc3Rkb3V0LCAiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAl
c1xuIiwgbXNnLnRvVXRmOCgpLmNvbnN0RGF0YSgpLCBkZWZhdWx0VmFsdWUudG9VdGY4KCkuY29u
c3REYXRhKCkpOworICAgICpyZXN1bHQgPSBkZWZhdWx0VmFsdWU7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgV2ViUGFnZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoUVdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0JiByZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBl
KQoreworICAgIGlmIChtX2RydC0+dGVzdFJ1bm5lcigpLT53YWl0Rm9yUG9saWN5KCkpCisgICAg
ICAgIG1fZHJ0LT50ZXN0UnVubmVyKCktPm5vdGlmeURvbmUoKTsKKworICAgIHJldHVybiBRV2Vi
UGFnZTo6YWNjZXB0TmF2aWdhdGlvblJlcXVlc3QoZnJhbWUsIHJlcXVlc3QsIHR5cGUpOworfQor
Citib29sIFdlYlBhZ2U6OnN1cHBvcnRzRXh0ZW5zaW9uKFFXZWJQYWdlOjpFeHRlbnNpb24gZXh0
ZW5zaW9uKSBjb25zdAoreworICAgIGlmIChleHRlbnNpb24gPT0gUVdlYlBhZ2U6OkVycm9yUGFn
ZUV4dGVuc2lvbikKKyAgICAgICAgcmV0dXJuIG1fZHJ0LT50ZXN0UnVubmVyKCktPnNob3VsZEhh
bmRsZUVycm9yUGFnZXMoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJQYWdl
OjpleHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbiwgY29uc3QgRXh0ZW5zaW9uT3B0aW9uICpv
cHRpb24sIEV4dGVuc2lvblJldHVybiAqb3V0cHV0KQoreworICAgIGNvbnN0IFFXZWJQYWdlOjpF
cnJvclBhZ2VFeHRlbnNpb25PcHRpb24qIGluZm8gPSBzdGF0aWNfY2FzdDxjb25zdCBRV2ViUGFn
ZTo6RXJyb3JQYWdlRXh0ZW5zaW9uT3B0aW9uKj4ob3B0aW9uKTsKKworICAgIC8vIExldHMgaGFu
ZGxlIGVycm9yIHBhZ2VzIGZvciB0aGUgbWFpbiBmcmFtZSBmb3Igbm93LgorICAgIGlmIChpbmZv
LT5mcmFtZSAhPSBtYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUVdl
YlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvblJldHVybiogZXJyb3JQYWdlID0gc3RhdGljX2Nhc3Q8
UVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvblJldHVybio+KG91dHB1dCk7CisKKyAgICBlcnJv
clBhZ2UtPmNvbnRlbnQgPSBRU3RyaW5nKCJkYXRhOnRleHQvaHRtbCw8Ym9keS8+IikudG9VdGY4
KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUU9iamVjdCogV2ViUGFnZTo6Y3JlYXRlUGx1
Z2luKGNvbnN0IFFTdHJpbmcmIGNsYXNzSWQsIGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0cmlu
Z0xpc3QmIHBhcmFtTmFtZXMsIGNvbnN0IFFTdHJpbmdMaXN0JiBwYXJhbVZhbHVlcykKK3sKKyAg
ICBRX1VOVVNFRCh1cmwpOworICAgIFFfVU5VU0VEKHBhcmFtTmFtZXMpOworICAgIFFfVU5VU0VE
KHBhcmFtVmFsdWVzKTsKKworICAgIGlmIChjbGFzc0lkID09IFFMYXRpbjFTdHJpbmcoIlFQcm9n
cmVzc0JhciIpKQorICAgICAgICByZXR1cm4gbmV3IFFQcm9ncmVzc0Jhcih2aWV3KCkpOworICAg
IGlmIChjbGFzc0lkID09IFFMYXRpbjFTdHJpbmcoIlFMYWJlbCIpKQorICAgICAgICByZXR1cm4g
bmV3IFFMYWJlbCh2aWV3KCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
c2V0Vmlld0dlb21ldHJ5KGNvbnN0IFFSZWN0JiByZWN0KQoreworICAgIGlmIChXZWJWaWV3R3Jh
cGhpY3NCYXNlZCogdiA9IHFvYmplY3RfY2FzdDxXZWJWaWV3R3JhcGhpY3NCYXNlZCo+KHZpZXco
KSkpCisgICAgICAgIHYtPnNjZW5lKCktPnNldFNjZW5lUmVjdChRUmVjdEYocmVjdCkpOworICAg
IGVsc2UgaWYgKFFXaWRnZXQgKnYgPSB2aWV3KCkpCisgICAgICAgIHYtPnNldEdlb21ldHJ5KHJl
Y3QpOworfQorCitXZWJWaWV3R3JhcGhpY3NCYXNlZDo6V2ViVmlld0dyYXBoaWNzQmFzZWQoUVdp
ZGdldCogcGFyZW50KQorICAgIDogbV9pdGVtKG5ldyBRR3JhcGhpY3NXZWJWaWV3KQoreworICAg
IHNldFNjZW5lKG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKSk7CisgICAgc2NlbmUoKS0+YWRkSXRl
bShtX2l0ZW0pOworfQorCitzdGF0aWMgRHVtcFJlbmRlclRyZWUgKnNfaW5zdGFuY2UgPSAwOwor
CitEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQorICAgIDogbV9kdW1wUGl4ZWxzRm9y
QWxsVGVzdHMoZmFsc2UpCisgICAgLCBtX3N0ZGluKDApCisgICAgLCBtX2VuYWJsZVRleHRPdXRw
dXQoZmFsc2UpCisgICAgLCBtX3N0YW5kQWxvbmVNb2RlKGZhbHNlKQorICAgICwgbV9ncmFwaGlj
c0Jhc2VkKGZhbHNlKQorICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZVBhdGgoUVN0cmluZyhnZXRl
bnYoIkRVTVBSRU5ERVJUUkVFX1RFTVAiKSkpCit7CisgICAgQVNTRVJUKCFzX2luc3RhbmNlKTsK
KyAgICBzX2luc3RhbmNlID0gdGhpczsKKworICAgIFFCeXRlQXJyYXkgdmlld01vZGUgPSBnZXRl
bnYoIlFUX0RSVF9XRUJWSUVXX01PREUiKTsKKyAgICBpZiAodmlld01vZGUgPT0gImdyYXBoaWNz
IikKKyAgICAgICAgc2V0R3JhcGhpY3NCYXNlZCh0cnVlKTsKKworICAgIFdlYktpdDo6aW5pdGlh
bGl6ZVdlYktpdFdpZGdldHMoKTsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7
CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluaXRpYWxpemUoKTsKKworICAgIC8vIFNl
dCBydW5uaW5nIGluIERSVCBtb2RlIGZvciBxd2VicGFnZSB0byBjcmVhdGUgdGVzdGFibGUgb2Jq
ZWN0cy4KKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RHVtcFJlbmRlclRyZWVNb2Rl
RW5hYmxlZCh0cnVlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6b3ZlcndyaXRlUGx1
Z2luRGlyZWN0b3JpZXMoKTsKKyAgICBRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9y
YWdlKG1fcGVyc2lzdGVudFN0b3JhZ2VQYXRoKTsKKworICAgIG1fbmV0d29ya0FjY2Vzc01hbmFn
ZXIgPSBuZXcgTmV0d29ya0FjY2Vzc01hbmFnZXIodGhpcyk7CisgICAgLy8gY3JlYXRlIG91ciBw
cmltYXJ5IHRlc3RpbmcgcGFnZS92aWV3LgorICAgIGlmIChpc0dyYXBoaWNzQmFzZWQoKSkgewor
ICAgICAgICBXZWJWaWV3R3JhcGhpY3NCYXNlZCogdmlldyA9IG5ldyBXZWJWaWV3R3JhcGhpY3NC
YXNlZCgwKTsKKyAgICAgICAgbV9wYWdlID0gbmV3IFdlYlBhZ2UodmlldywgdGhpcyk7CisgICAg
ICAgIHZpZXctPnNldFBhZ2UobV9wYWdlKTsKKyAgICAgICAgbV9tYWluVmlldyA9IHZpZXc7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgUVdlYlZpZXcqIHZpZXcgPSBuZXcgUVdlYlZpZXcoMCk7Cisg
ICAgICAgIG1fcGFnZSA9IG5ldyBXZWJQYWdlKHZpZXcsIHRoaXMpOworICAgICAgICB2aWV3LT5z
ZXRQYWdlKG1fcGFnZSk7CisgICAgICAgIG1fbWFpblZpZXcgPSB2aWV3OworICAgIH0KKyAgICAv
LyBVc2UgYSBmcmFtZSBncm91cCBuYW1lIGZvciBhbGwgcGFnZXMgY3JlYXRlZCBieSBEdW1wUmVu
ZGVyVHJlZSB0byBhbGxvdworICAgIC8vIHRlc3Rpbmcgb2YgY3Jvc3MtcGFnZSBmcmFtZSBsb29r
dXAuCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYlBhZ2VTZXRHcm91cE5hbWUocGFn
ZUFkYXB0ZXIoKSwgIm9yZy53ZWJraXQucXQuRHVtcFJlbmRlclRyZWUiKTsKKworICAgIG1fbWFp
blZpZXctPnNldENvbnRleHRNZW51UG9saWN5KFF0OjpOb0NvbnRleHRNZW51KTsKKyAgICBtX21h
aW5WaWV3LT5yZXNpemUoUVNpemUoVGVzdFJ1bm5lcjo6dmlld1dpZHRoLCBUZXN0UnVubmVyOjp2
aWV3SGVpZ2h0KSk7CisKKyAgICAvLyBjbGVhbiB1cCBjYWNoZSBieSByZXNldHRpbmcgcXVvdGEu
CisgICAgcWludDY0IHF1b3RhID0gd2ViUGFnZSgpLT5zZXR0aW5ncygpLT5vZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZVF1b3RhKCk7CisgICAgd2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsKKworICAgIC8vIGNyZWF0ZSBvdXIg
Y29udHJvbGxlcnMuIFRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGNvbm5lY3RGcmFtZSwKKyAg
ICAvLyBhcyBpdCBleHBvcnRzIHRoZXJlIHRvIHRoZSBKYXZhU2NyaXB0IERPTSB3aW5kb3cuCisg
ICAgbV9jb250cm9sbGVyID0gbmV3IFRlc3RSdW5uZXJRdCh0aGlzKTsKKyAgICBjb25uZWN0KG1f
Y29udHJvbGxlciwgU0lHTkFMKHNob3dQYWdlKCkpLCB0aGlzLCBTTE9UKHNob3dQYWdlKCkpKTsK
KyAgICBjb25uZWN0KG1fY29udHJvbGxlciwgU0lHTkFMKGhpZGVQYWdlKCkpLCB0aGlzLCBTTE9U
KGhpZGVQYWdlKCkpKTsKKworICAgIC8vIGFzeW5jIGdlb2xvY2F0aW9uIHBlcm1pc3Npb24gc2V0
IGJ5IGNvbnRyb2xsZXIKKyAgICBjb25uZWN0KG1fY29udHJvbGxlciwgU0lHTkFMKGdlb2xvY2F0
aW9uUGVybWlzc2lvblNldCgpKSwgdGhpcywgU0xPVChnZW9sb2NhdGlvblBlcm1pc3Npb25TZXQo
KSkpOworCisgICAgY29ubmVjdChtX2NvbnRyb2xsZXIsIFNJR05BTChkb25lKCkpLCB0aGlzLCBT
TE9UKGR1bXAoKSkpOworICAgIG1fZXZlbnRTZW5kZXIgPSBuZXcgRXZlbnRTZW5kZXIobV9wYWdl
KTsKKyAgICBtX3RleHRJbnB1dENvbnRyb2xsZXIgPSBuZXcgVGV4dElucHV0Q29udHJvbGxlciht
X3BhZ2UpOworICAgIG1fZ2NDb250cm9sbGVyLnJlc2V0KG5ldyBHQ0NvbnRyb2xsZXIoKSk7CisK
KyAgICAvLyBub3cgY29ubmVjdCBvdXIgZGlmZmVyZW50IHNpZ25hbHMKKyAgICBjb25uZWN0KG1f
cGFnZSwgU0lHTkFMKGZyYW1lQ3JlYXRlZChRV2ViRnJhbWUgKikpLAorICAgICAgICAgICAgdGhp
cywgU0xPVChjb25uZWN0RnJhbWUoUVdlYkZyYW1lICopKSk7CisgICAgY29ubmVjdEZyYW1lKG1f
cGFnZS0+bWFpbkZyYW1lKCkpOworCisgICAgY29ubmVjdChtX3BhZ2UsIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpLAorICAgICAgICAgICAgbV9jb250cm9sbGVyLCBTTE9UKG1heWJlRHVtcChi
b29sKSkpOworICAgIC8vIFdlIG5lZWQgdG8gY29ubmVjdCB0byBsb2FkU3RhcnRlZCgpIGJlY2F1
c2Ugbm90aWZ5RG9uZSBzaG91bGQgb25seQorICAgIC8vIGR1bXAgcmVzdWx0cyBpdHNlbGYgd2hl
biB0aGUgbGFzdCBwYWdlIGxvYWRlZCBpbiB0aGUgdGVzdCBoYXMgZmluaXNoZWQgbG9hZGluZy4K
KyAgICBjb25uZWN0KG1fcGFnZSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLAorICAgICAgICAgICAg
bV9jb250cm9sbGVyLCBTTE9UKHJlc2V0TG9hZEZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1f
cGFnZSwgU0lHTkFMKHdpbmRvd0Nsb3NlUmVxdWVzdGVkKCkpLCB0aGlzLCBTTE9UKHdpbmRvd0Ns
b3NlUmVxdWVzdGVkKCkpKTsKKyAgICBjb25uZWN0KG1fcGFnZSwgU0lHTkFMKHByaW50UmVxdWVz
dGVkKFFXZWJGcmFtZSopKSwgdGhpcywgU0xPVChkcnlSdW5QcmludChRV2ViRnJhbWUqKSkpOwor
CisgICAgY29ubmVjdChtX3BhZ2UtPm1haW5GcmFtZSgpLCBTSUdOQUwodGl0bGVDaGFuZ2VkKGNv
bnN0IFFTdHJpbmcmKSksCisgICAgICAgICAgICBTTE9UKHRpdGxlQ2hhbmdlZChjb25zdCBRU3Ry
aW5nJikpKTsKKyAgICBjb25uZWN0KG1fcGFnZSwgU0lHTkFMKGRhdGFiYXNlUXVvdGFFeGNlZWRl
ZChRV2ViRnJhbWUqLFFTdHJpbmcpKSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1QoZHVtcERhdGFi
YXNlUXVvdGEoUVdlYkZyYW1lKixRU3RyaW5nKSkpOworICAgIGNvbm5lY3QobV9wYWdlLCBTSUdO
QUwoYXBwbGljYXRpb25DYWNoZVF1b3RhRXhjZWVkZWQoUVdlYlNlY3VyaXR5T3JpZ2luICosIHF1
aW50NjQsIHF1aW50NjQpKSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1QoZHVtcEFwcGxpY2F0aW9u
Q2FjaGVRdW90YShRV2ViU2VjdXJpdHlPcmlnaW4gKiwgcXVpbnQ2NCwgcXVpbnQ2NCkpKTsKKyAg
ICBjb25uZWN0KG1fcGFnZSwgU0lHTkFMKHN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYp
KSwKKyAgICAgICAgICAgIHRoaXMsIFNMT1Qoc3RhdHVzQmFyTWVzc2FnZShjb25zdCBRU3RyaW5n
JikpKTsKKworICAgIFFPYmplY3Q6OmNvbm5lY3QodGhpcywgU0lHTkFMKHF1aXQoKSksIHFBcHAs
IFNMT1QocXVpdCgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworCisgICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldER1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQodHJ1ZSk7CisgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVk
KHBhZ2VBZGFwdGVyKCksIHRydWUpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjplbmFi
bGVNb2NrU2Nyb2xsYmFycygpOworCisgICAgUUZvY3VzRXZlbnQgZXZlbnQoUUV2ZW50OjpGb2N1
c0luLCBRdDo6QWN0aXZlV2luZG93Rm9jdXNSZWFzb24pOworICAgIFFBcHBsaWNhdGlvbjo6c2Vu
ZEV2ZW50KG1fbWFpblZpZXcsICZldmVudCk7Cit9CisKK0R1bXBSZW5kZXJUcmVlOjp+RHVtcFJl
bmRlclRyZWUoKQoreworICAgIGlmICghbV9yZWRpcmVjdE91dHB1dEZpbGVOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgZmNsb3NlKHN0ZG91dCk7CisgICAgaWYgKCFtX3JlZGlyZWN0RXJyb3JGaWxl
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIGZjbG9zZShzdGRlcnIpOworICAgIGRlbGV0ZSBtX21h
aW5WaWV3OworICAgIGRlbGV0ZSBtX3N0ZGluOworICAgIHNfaW5zdGFuY2UgPSAwOworfQorCitE
dW1wUmVuZGVyVHJlZSogRHVtcFJlbmRlclRyZWU6Omluc3RhbmNlKCkKK3sKKyAgICByZXR1cm4g
c19pbnN0YW5jZTsKK30KKworc3RhdGljIHZvaWQgY2xlYXJIaXN0b3J5KFFXZWJQYWdlKiBwYWdl
KQoreworICAgIC8vIFFXZWJIaXN0b3J5OjpjbGVhcigpIGxlYXZlcyBjdXJyZW50IHBhZ2UsIHNv
IHJlbW92ZSBpdCBhcyB3ZWxsIGJ5IHNldHRpbmcKKyAgICAvLyBtYXggaXRlbSBjb3VudCB0byAw
LCBhbmQgdGhlbiBzZXR0aW5nIGl0IGJhY2sgdG8gaXQncyBvcmlnaW5hbCB2YWx1ZS4KKworICAg
IFFXZWJIaXN0b3J5KiBoaXN0b3J5ID0gcGFnZS0+aGlzdG9yeSgpOworICAgIGludCBpdGVtQ291
bnQgPSBoaXN0b3J5LT5tYXhpbXVtSXRlbUNvdW50KCk7CisKKyAgICBoaXN0b3J5LT5jbGVhcigp
OworICAgIGhpc3RvcnktPnNldE1heGltdW1JdGVtQ291bnQoMCk7CisgICAgaGlzdG9yeS0+c2V0
TWF4aW11bUl0ZW1Db3VudChpdGVtQ291bnQpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlOjpk
cnlSdW5QcmludChRV2ViRnJhbWUqIGZyYW1lKQoreworI2lmICFkZWZpbmVkKFFUX05PX1BSSU5U
RVIpICYmIEhBVkUoUVRQUklOVFNVUFBPUlQpCisgICAgTnVsbFByaW50ZXIgcHJpbnRlcjsKKyAg
ICBmcmFtZS0+cHJpbnQoJnByaW50ZXIpOworI2VuZGlmCit9CisKK3ZvaWQgRHVtcFJlbmRlclRy
ZWU6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNvbnN0IFFVcmwmIHVybCkK
K3sKKyAgICAvLyByZXNldCBzbyB0aGF0IGFueSBjdXJyZW50IGxvYWRzIGFyZSBzdG9wcGVkCisg
ICAgLy8gTk9URTogdGhhdCB0aGlzIGhhcyB0byBiZSBkb25lIGJlZm9yZSB0aGUgdGVzdFJ1bm5l
ciBpcworICAgIC8vIHJlc2V0IG9yIHdlIGdldCB0aW1lb3V0cyBmb3Igc29tZSB0ZXN0cy4KKyAg
ICBtX3BhZ2UtPmJsb2NrU2lnbmFscyh0cnVlKTsKKyAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2U6OlN0b3ApOworICAgIG1fcGFnZS0+YmxvY2tTaWduYWxzKGZhbHNlKTsKKworICAg
IFFMaXN0PFFXZWJTZWN1cml0eU9yaWdpbj4ga25vd25PcmlnaW5zID0gUVdlYlNlY3VyaXR5T3Jp
Z2luOjphbGxPcmlnaW5zKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrbm93bk9yaWdpbnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIGtub3duT3JpZ2luc1tpXS5zZXREYXRhYmFzZVF1b3RhKGRh
dGFiYXNlRGVmYXVsdFF1b3RhKTsKKworICAgIC8vIHJlc2V0IHRoZSB0ZXN0UnVubmVyIGF0IHRo
aXMgcG9pbnQsIHNvIHRoYXQgd2UgdW5kZXIgbm8KKyAgICAvLyBjaXJjdW1zdGFuY2UgZHVtcCAo
c3RvcCB0aGUgd2FpdFVudGlsRG9uZSB0aW1lcikgZHVyaW5nIHRoZSByZXNldAorICAgIC8vIG9m
IHRoZSBEUlQuCisgICAgbV9jb250cm9sbGVyLT5yZXNldCgpOworCisgICAgbV9qc2NDb250cm9s
bGVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKHVybC50b1N0cmluZygpLnRvU3RkU3RyaW5nKCksIG1f
ZXhwZWN0ZWRIYXNoLnRvU3RkU3RyaW5nKCkpOworCisgICAgLy8gcmVzZXQgbW91c2UgY2xpY2tz
IGNvdW50ZXIKKyAgICBtX2V2ZW50U2VuZGVyLT5yZXNldENsaWNrQ291bnQoKTsKKworICAgIGNs
b3NlUmVtYWluaW5nV2luZG93cygpOworICAgIAorICAgIC8vIENhbGwgc2V0VGV4dFNpemVNdWx0
aXBsaWVyKDEuMCkgdG8gcmVzZXQgVGV4dFpvb21GYWN0b3IgYW5kIFBhZ2Vab29tRmFjdG9yIHRv
by4gCisgICAgLy8gSXQgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlc2V0U2V0dGluZ3MoKSB0byBn
dWFyYW50ZWUgcmVzZXR0aW5nIFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5IGNvcnJlY3RseS4K
KyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRUZXh0U2l6ZU11bHRpcGxpZXIoMS4wKTsKKwor
ICAgIG1fcGFnZS0+cmVzZXRTZXR0aW5ncygpOworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAg
ICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jbGVhcigpOworI2VuZGlmCisKKyAgICBjbGVhckhpc3Rv
cnkobV9wYWdlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2NhbGVQYWdlQnkobWFp
bkZyYW1lQWRhcHRlcigpLCAxLCBRUG9pbnQoMCwgMCkpOworICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpjbGVhckZyYW1lTmFtZShtYWluRnJhbWVBZGFwdGVyKCkpOworICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVVc2VyU3R5bGVTaGVldHMocGFnZUFkYXB0ZXIoKSk7CisK
KyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZXRTY3JvbGxCYXJQb2xpY3koUXQ6OlZlcnRpY2Fs
LCBRdDo6U2Nyb2xsQmFyQXNOZWVkZWQpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnNldFNj
cm9sbEJhclBvbGljeShRdDo6SG9yaXpvbnRhbCwgUXQ6OlNjcm9sbEJhckFzTmVlZGVkKTsKKwor
ICAgIGlmICh1cmwuc2NoZW1lKCkgPT0gImh0dHAiIHx8IHVybC5zY2hlbWUoKSA9PSAiaHR0cHMi
KSB7CisgICAgICAgIC8vIGNyZWRlbnRpYWxzIG1heSBleGlzdCBmcm9tIHByZXZpb3VzIHRlc3Rz
LgorICAgICAgICBtX3BhZ2UtPnNldE5ldHdvcmtBY2Nlc3NNYW5hZ2VyKDApOworICAgICAgICBk
ZWxldGUgbV9uZXR3b3JrQWNjZXNzTWFuYWdlcjsKKyAgICAgICAgbV9uZXR3b3JrQWNjZXNzTWFu
YWdlciA9IG5ldyBOZXR3b3JrQWNjZXNzTWFuYWdlcih0aGlzKTsKKyAgICAgICAgbV9wYWdlLT5z
ZXROZXR3b3JrQWNjZXNzTWFuYWdlcihtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyKTsKKyAgICB9CisK
KyAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5jbGVhcigpOworICAgIFdvcmtRdWV1ZTo6c2hhcmVk
KCktPnNldEZyb3plbihmYWxzZSk7CisKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CisKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0V2luZG93c0JlaGF2aW9yQXNFZGl0aW5nQmVoYXZpb3IocGFnZUFkYXB0ZXIoKSk7CisK
KyAgICBRTG9jYWxlOjpzZXREZWZhdWx0KFFMb2NhbGU6OmMoKSk7CisKKyAgICB0ZXN0UnVubmVy
KCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CisjaWZuZGVmIFFfT1NfV0lOQ0UK
KyAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CisjZW5kaWYKKworICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpjbGVhck9wZW5lcihtYWluRnJhbWVBZGFwdGVyKCkpOworfQorCitzdGF0aWMg
Ym9vbCBpc0dsb2JhbEhpc3RvcnlUZXN0KGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBpZiAodXJs
LnBhdGgoKS5jb250YWlucygiZ2xvYmFsaGlzdG9yeS8iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBpc1dlYkluc3BlY3RvclRlc3Qo
Y29uc3QgUVVybCYgdXJsKQoreworICAgIGlmICh1cmwucGF0aCgpLmNvbnRhaW5zKCJpbnNwZWN0
b3IvIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIGJvb2wgaXNEdW1wQXNUZXh0VGVzdChjb25zdCBRVXJsJiB1cmwpCit7CisgICAgaWYgKHVy
bC5wYXRoKCkuY29udGFpbnMoImR1bXBBc1RleHQvIikpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworCit2b2lkIER1bXBSZW5kZXJUcmVlOjpvcGVuKGNvbnN0
IFFVcmwmIHVybCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFJlc291cmNl
TG9hZENhbGxiYWNrc1BhdGgoUUZpbGVJbmZvKHVybC50b1N0cmluZygpKS5wYXRoKCkpOworICAg
IHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKHVybCk7CisKKyAgICBpZiAoaXNX
ZWJJbnNwZWN0b3JUZXN0KG1fcGFnZS0+bWFpbkZyYW1lKCktPnVybCgpKSkKKyAgICAgICAgdGVz
dFJ1bm5lcigpLT5jbG9zZVdlYkluc3BlY3RvcigpOworCisgICAgaWYgKGlzV2ViSW5zcGVjdG9y
VGVzdCh1cmwpKQorICAgICAgICB0ZXN0UnVubmVyKCktPnNob3dXZWJJbnNwZWN0b3IoKTsKKwor
ICAgIGlmIChpc0R1bXBBc1RleHRUZXN0KHVybCkpCisgICAgICAgIG1fanNjQ29udHJvbGxlci0+
c2V0RHVtcEFzVGV4dCh0cnVlKTsKKworICAgIGlmIChpc0dsb2JhbEhpc3RvcnlUZXN0KHVybCkp
CisgICAgICAgIHRlc3RSdW5uZXIoKS0+ZHVtcEhpc3RvcnlDYWxsYmFja3MoKTsKKworICAgIC8v
IFczQyBTVkcgdGVzdHMgZXhwZWN0IHRvIGJlIDQ4MHgzNjAKKyAgICBib29sIGlzVzNDVGVzdCA9
IHVybC50b1N0cmluZygpLmNvbnRhaW5zKCJzdmcvVzNDLVNWRy0xLjEiKTsKKyAgICBpbnQgd2lk
dGggPSBpc1czQ1Rlc3QgPyBUZXN0UnVubmVyOjp3M2NTVkdWaWV3V2lkdGggOiBUZXN0UnVubmVy
Ojp2aWV3V2lkdGg7CisgICAgaW50IGhlaWdodCA9IGlzVzNDVGVzdCA/IFRlc3RSdW5uZXI6Oncz
Y1NWR1ZpZXdIZWlnaHQgOiBUZXN0UnVubmVyOjp2aWV3SGVpZ2h0OworICAgIG1fbWFpblZpZXct
PnJlc2l6ZShRU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgbV9wYWdlLT5zZXRQcmVmZXJyZWRD
b250ZW50c1NpemUoUVNpemUoKSk7CisgICAgbV9wYWdlLT5zZXRWaWV3cG9ydFNpemUoUVNpemUo
d2lkdGgsIGhlaWdodCkpOworCisgICAgUUZvY3VzRXZlbnQgZXYoUUV2ZW50OjpGb2N1c0luKTsK
KyAgICBtX3BhZ2UtPmV2ZW50KCZldik7CisKKyAgICBXZWJLaXQ6OlF0VGVzdFN1cHBvcnQ6OmNs
ZWFyTWVtb3J5Q2FjaGVzKCk7CisKKyAgICBXZWJLaXQ6OlF0VGVzdFN1cHBvcnQ6OmluaXRpYWxp
emVUZXN0Rm9udHMoKTsKKworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wRnJhbWVM
b2FkZXIodXJsLnRvU3RyaW5nKCkuY29udGFpbnMoImxvYWRpbmcvIikpOworICAgIHNldFRleHRP
dXRwdXRFbmFibGVkKHRydWUpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPmxvYWQodXJsKTsK
K30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6cmVhZExpbmUoKQoreworICAgIGlmICghbV9zdGRp
bikgeworICAgICAgICBtX3N0ZGluID0gbmV3IFFGaWxlOworICAgICAgICBtX3N0ZGluLT5vcGVu
KHN0ZGluLCBRRmlsZTo6UmVhZE9ubHkpOworCisgICAgICAgIGlmICghbV9zdGRpbi0+aXNSZWFk
YWJsZSgpKSB7CisgICAgICAgICAgICBlbWl0IHF1aXQoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFFCeXRlQXJyYXkgbGluZSA9IG1fc3RkaW4tPnJlYWRM
aW5lKCkudHJpbW1lZCgpOworCisgICAgaWYgKGxpbmUuaXNFbXB0eSgpKSB7CisgICAgICAgIGVt
aXQgcXVpdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcHJvY2Vzc0xpbmUoUVN0
cmluZzo6ZnJvbUxvY2FsOEJpdChsaW5lLmNvbnN0RGF0YSgpLCBsaW5lLmxlbmd0aCgpKSk7Cit9
CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OnByb2Nlc3NBcmdzTGluZShjb25zdCBRU3RyaW5nTGlz
dCAmYXJncykKK3sKKyAgICBzZXRTdGFuZEFsb25lTW9kZSh0cnVlKTsKKworICAgIG1fc3RhbmRB
bG9uZU1vZGVUZXN0TGlzdCA9IGFyZ3M7CisKKyAgICBRRmlsZUluZm8gZmlyc3RFbnRyeShtX3N0
YW5kQWxvbmVNb2RlVGVzdExpc3QuZmlyc3QoKSk7CisgICAgaWYgKGZpcnN0RW50cnkuaXNEaXIo
KSkgeworICAgICAgICBRRGlyIGZvbGRlckVudHJ5KG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdC5m
aXJzdCgpKTsKKyAgICAgICAgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkRXh0OworICAgICAgICAvLyBD
aGVjayBmb3IgYWxsIHN1cHBvcnRlZCBleHRlbnNpb25zIChmcm9tIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmlsZXMucHkpLgorICAgICAgICBzdXBw
b3J0ZWRFeHQgPDwgIiouaHRtbCIgPDwgIiouc2h0bWwiIDw8ICIqLnhtbCIgPDwgIioueGh0bWwi
IDw8ICIqLnhodG1sbXAiIDw8ICIqLnBsIiA8PCAiKi5waHAiIDw8ICIqLnN2ZyI7CisgICAgICAg
IG1fc3RhbmRBbG9uZU1vZGVUZXN0TGlzdCA9IGZvbGRlckVudHJ5LmVudHJ5TGlzdChzdXBwb3J0
ZWRFeHQsIFFEaXI6OkZpbGVzKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3N0YW5k
QWxvbmVNb2RlVGVzdExpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3N0YW5kQWxvbmVN
b2RlVGVzdExpc3RbaV0gPSBmb2xkZXJFbnRyeS5hYnNvbHV0ZUZpbGVQYXRoKG1fc3RhbmRBbG9u
ZU1vZGVUZXN0TGlzdFtpXSk7CisgICAgfQorICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHJlYWR5
KCkpLCB0aGlzLCBTTE9UKGxvYWROZXh0VGVzdEluU3RhbmRBbG9uZU1vZGUoKSksIFF0OjpRdWV1
ZWRDb25uZWN0aW9uKTsKKworICAgIGlmICghbV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LmlzRW1w
dHkoKSkgeworICAgICAgICBRU3RyaW5nIGZpcnN0ID0gbV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0
LnRha2VGaXJzdCgpOworICAgICAgICBwcm9jZXNzTGluZShmaXJzdCk7CisgICAgfQorfQorCit2
b2lkIER1bXBSZW5kZXJUcmVlOjpsb2FkTmV4dFRlc3RJblN0YW5kQWxvbmVNb2RlKCkKK3sKKyAg
ICBpZiAobV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBlbWl0
IHF1aXQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBRU3RyaW5nIGZpcnN0ID0gbV9z
dGFuZEFsb25lTW9kZVRlc3RMaXN0LnRha2VGaXJzdCgpOworICAgIHByb2Nlc3NMaW5lKGZpcnN0
KTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6cHJvY2Vzc0xpbmUoY29uc3QgUVN0cmluZyAm
aW5wdXQpCit7CisgICAgVGVzdENvbW1hbmQgY29tbWFuZCA9IHBhcnNlSW5wdXRMaW5lKHN0ZDo6
c3RyaW5nKGlucHV0LnRvTGF0aW4xKCkuY29uc3REYXRhKCkpKTsKKyAgICBRU3RyaW5nIHBhdGhP
clVSTCA9IFFMYXRpbjFTdHJpbmcoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSk7CisgICAgbV9k
dW1wUGl4ZWxzRm9yQ3VycmVudFRlc3QgPSBjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9k
dW1wUGl4ZWxzRm9yQWxsVGVzdHM7CisgICAgbV9leHBlY3RlZEhhc2ggPSBRTGF0aW4xU3RyaW5n
KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2guY19zdHIoKSk7CisKKyAgICBpZiAocGF0aE9yVVJM
LnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygiaHR0cDoiKSkKKyAgICAgICAgICAgIHx8IHBhdGhP
clVSTC5zdGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoImh0dHBzOiIpKQorICAgICAgICAgICAgfHwg
cGF0aE9yVVJMLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygiZmlsZToiKSkKKyAgICAgICAgICAg
IHx8IHBhdGhPclVSTCA9PSBRTGF0aW4xU3RyaW5nKCJhYm91dDpibGFuayIpKSB7CisgICAgICAg
IG9wZW4oUVVybChwYXRoT3JVUkwpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBRRmlsZUluZm8g
ZmkocGF0aE9yVVJMKTsKKworICAgICAgICBpZiAoIWZpLmV4aXN0cygpKSB7CisgICAgICAgICAg
ICBRRGlyIGN1cnJlbnREaXIgPSBRRGlyOjpjdXJyZW50UGF0aCgpOworCisgICAgICAgICAgICAv
LyBUcnkgdG8gYmUgc21hcnQgYWJvdXQgd2hlcmUgdGhlIHRlc3QgaXMgbG9jYXRlZAorICAgICAg
ICAgICAgaWYgKGN1cnJlbnREaXIuZGlyTmFtZSgpID09IFFMYXRpbjFTdHJpbmcoIkxheW91dFRl
c3RzIikpCisgICAgICAgICAgICAgICAgZmkgPSBRRmlsZUluZm8oY3VycmVudERpciwgcGF0aE9y
VVJMLnJlcGxhY2UoUVJlZ0V4cCgiLio/TGF5b3V0VGVzdHMvKC4qKSIpLCAiXFwxIikpOworICAg
ICAgICAgICAgZWxzZSBpZiAoIXBhdGhPclVSTC5jb250YWlucyhRTGF0aW4xU3RyaW5nKCJMYXlv
dXRUZXN0cyIpKSkKKyAgICAgICAgICAgICAgICBmaSA9IFFGaWxlSW5mbyhjdXJyZW50RGlyLCBw
YXRoT3JVUkwucHJlcGVuZChRTGF0aW4xU3RyaW5nKCJMYXlvdXRUZXN0cy8iKSkpOworCisgICAg
ICAgICAgICBpZiAoIWZpLmV4aXN0cygpKSB7CisgICAgICAgICAgICAgICAgZW1pdCByZWFkeSgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIG9wZW4oUVVybDo6ZnJvbUxvY2FsRmlsZShmaS5hYnNvbHV0ZUZpbGVQYXRoKCkpKTsK
KyAgICB9CisKKyAgICBpZiAoY29tbWFuZC50aW1lb3V0ID4gMCkKKyAgICAgICAgc2V0VGltZW91
dChjb21tYW5kLnRpbWVvdXQpOworICAgIGZmbHVzaChzdGRvdXQpOworfQorCit2b2lkIER1bXBS
ZW5kZXJUcmVlOjpjbG9zZVJlbWFpbmluZ1dpbmRvd3MoKQoreworICAgIGZvcmVhY2ggKFFPYmpl
Y3QqIHdpZGdldCwgd2luZG93cykKKyAgICAgICAgZGVsZXRlIHdpZGdldDsKKyAgICB3aW5kb3dz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OmluaXRKU09iamVjdHMoKQorewor
ICAgIFFXZWJGcmFtZSAqZnJhbWUgPSBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4oc2VuZGVyKCkp
OworICAgIFFfQVNTRVJUKGZyYW1lKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gMDsK
KyAgICBKU09iamVjdFJlZiB3aW5kb3cgPSAwOworCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmdldEpTV2luZG93T2JqZWN0KGZyYW1lLT5oYW5kbGUoKSwgJmNvbnRleHQsICZ3aW5kb3cp
OworCisgICAgZnJhbWUtPmFkZFRvSmF2YVNjcmlwdFdpbmRvd09iamVjdChRTGF0aW4xU3RyaW5n
KCJ0ZXN0UnVubmVyIiksIG1fY29udHJvbGxlcik7CisgICAgZnJhbWUtPmFkZFRvSmF2YVNjcmlw
dFdpbmRvd09iamVjdChRTGF0aW4xU3RyaW5nKCJldmVudFNlbmRlciIpLCBtX2V2ZW50U2VuZGVy
KTsKKyAgICBmcmFtZS0+YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KFFMYXRpbjFTdHJpbmco
InRleHRJbnB1dENvbnRyb2xsZXIiKSwgbV90ZXh0SW5wdXRDb250cm9sbGVyKTsKKyAgICBtX2dj
Q29udHJvbGxlci0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csIDApOworCisgICAg
aWYgKG1fanNjQ29udHJvbGxlcikgeworICAgICAgICBKU09iamVjdFJlZiBkdW1teVdpbmRvdyA9
IEpTT2JqZWN0TWFrZShjb250ZXh0LCAwLCAwKTsKKyAgICAgICAgbV9qc2NDb250cm9sbGVyLT5t
YWtlV2luZG93T2JqZWN0KGNvbnRleHQsIGR1bW15V2luZG93LCAwKTsKKyAgICAgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHRlc3RSdW5uZXJOYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygidGVzdFJ1bm5lciIpKTsKKyAgICAgICAgSlNWYWx1ZVJlZiB3cmFwcGVk
VGVzdFJ1bm5lciA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZHVtbXlXaW5kb3csIHRl
c3RSdW5uZXJOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IGhlbHBlclNjcmlwdChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIihmdW5j
dGlvbigpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmdW5jdGlvbiBiaW5k
KGZ1biwgdGhpc0FyZykge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oKSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAg
ICAgICByZXR1cm4gZnVuLmFwcGx5KHRoaXNBcmcsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICB9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgfVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZm9yICh2YXIgcHJvcCBpbiB0aGlzLmpzY0Jhc2VkVGVzdFJ1bm5lcikge1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHZhciBwZCA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGhpcy5xdEJhc2VkVGVzdFJ1bm5lciwgcHJvcCk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgaWYgKHBkICE9PSB1bmRlZmluZWQgJiYgKHBkLndyaXRh
YmxlID09PSBmYWxzZSB8fCBwZC5jb25maWd1cmFibGUgPT09IGZhbHNlKSkgY29udGludWU7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdGhpcy5xdEJhc2VkVGVzdFJ1bm5lcltw
cm9wXSA9IGJpbmQodGhpcy5qc2NCYXNlZFRlc3RSdW5uZXJbcHJvcF0sIHRoaXMuanNjQmFzZWRU
ZXN0UnVubmVyKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIn0pLmFwcGx5KHRoaXMpXG4iKSk7CisKKyAgICAgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHF0QmFzZWRUZXN0UnVubmVyTmFtZShBZG9wdCwgSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInF0QmFzZWRUZXN0UnVubmVyIikpOworICAgICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4ganNjQmFzZWRUZXN0UnVubmVyTmFtZShBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImpzY0Jhc2VkVGVzdFJ1bm5lciIpKTsKKworICAgICAg
ICBKU09iamVjdFJlZiBhcmdzID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIDAsIDApOworICAgICAg
ICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIGFyZ3MsIHF0QmFzZWRUZXN0UnVubmVyTmFt
ZS5nZXQoKSwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCB3aW5kb3csIHRlc3RSdW5uZXJO
YW1lLmdldCgpLCAwKSwgMCwgMCk7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4
dCwgYXJncywganNjQmFzZWRUZXN0UnVubmVyTmFtZS5nZXQoKSwgd3JhcHBlZFRlc3RSdW5uZXIs
IDAsIDApOworCisgICAgICAgIEpTVmFsdWVSZWYgZXggPSAwOworICAgICAgICBKU0V2YWx1YXRl
U2NyaXB0KGNvbnRleHQsIGhlbHBlclNjcmlwdC5nZXQoKSwgYXJncywgMCwgMCwgJmV4KTsKKyAg
ICAgICAgaWYgKGV4KSB7CisgICAgICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbXNn
KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGV4LCAwKSk7CisgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGV2YWx1YXRpbmcgVGVzdFJ1bm5lciBzZXR1cC1zY3Jp
cHQ6ICVzXG4iLCBxUHJpbnRhYmxlKEpTU3RyaW5nQ29weVFTdHJpbmcobXNnLmdldCgpKSkpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluamVjdElu
dGVybmFsc09iamVjdChmcmFtZS0+aGFuZGxlKCkpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVl
OjpzaG93UGFnZSgpCit7CisgICAgbV9tYWluVmlldy0+c2hvdygpOworICAgIC8vIHdlIG5lZWQg
YSBwYWludCBldmVudCBidXQgY2Fubm90IHByb2Nlc3MgYWxsIHRoZSBldmVudHMKKyAgICBRUGl4
bWFwIHBpeG1hcChtX21haW5WaWV3LT5zaXplKCkpOworICAgIG1fbWFpblZpZXctPnJlbmRlcigm
cGl4bWFwKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6aGlkZVBhZ2UoKQoreworICAgIG1f
bWFpblZpZXctPmhpZGUoKTsKK30KKworUVN0cmluZyBEdW1wUmVuZGVyVHJlZTo6ZHVtcEZyYW1l
U2Nyb2xsUG9zaXRpb24oUVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lIHx8ICFE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aGFzRG9jdW1lbnRFbGVtZW50KGZyYW1lLT5oYW5kbGUo
KSkpCisgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisKKyAgICBRU3RyaW5nIHJlc3VsdDsKKyAg
ICBRUG9pbnQgcG9zID0gZnJhbWUtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgaWYgKHBvcy54KCkg
PiAwIHx8IHBvcy55KCkgPiAwKSB7CisgICAgICAgIFFXZWJGcmFtZSogcGFyZW50ID0gcW9iamVj
dF9jYXN0PFFXZWJGcmFtZSAqPihmcmFtZS0+cGFyZW50KCkpOworICAgICAgICBpZiAocGFyZW50
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChRU3RyaW5nKCJmcmFtZSAnJTEnICIpLmFyZyhm
cmFtZS0+dGl0bGUoKSkpOworICAgICAgICByZXN1bHQuYXBwZW5kKFFTdHJpbmcoInNjcm9sbGVk
IHRvICUxLCUyXG4iKS5hcmcocG9zLngoKSkuYXJnKHBvcy55KCkpKTsKKyAgICB9CisKKyAgICBp
ZiAobV9qc2NDb250cm9sbGVyLT5kdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpKSB7Cisg
ICAgICAgIFFMaXN0PFFXZWJGcmFtZSo+IGNoaWxkcmVuID0gZnJhbWUtPmNoaWxkRnJhbWVzKCk7
CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICByZXN1bHQgKz0gZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oY2hpbGRyZW4uYXQoaSkp
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitRU3RyaW5nIER1bXBSZW5kZXJUcmVl
OjpkdW1wRnJhbWVzQXNUZXh0KFFXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSB8
fCAhRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omhhc0RvY3VtZW50RWxlbWVudChmcmFtZS0+aGFu
ZGxlKCkpKQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworCisgICAgUVN0cmluZyByZXN1bHQ7
CisgICAgUVdlYkZyYW1lKiBwYXJlbnQgPSBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1lKj4oZnJhbWUt
PnBhcmVudCgpKTsKKyAgICBpZiAocGFyZW50KSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoUUxh
dGluMVN0cmluZygiXG4tLS0tLS0tLVxuRnJhbWU6ICciKSk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoZnJhbWUtPmZyYW1lTmFtZSgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChRTGF0aW4xU3Ry
aW5nKCInXG4tLS0tLS0tLVxuIikpOworICAgIH0KKworICAgIFFTdHJpbmcgaW5uZXJUZXh0ID0g
ZnJhbWUtPnRvUGxhaW5UZXh0KCk7CisgICAgcmVzdWx0LmFwcGVuZChpbm5lclRleHQpOworICAg
IHJlc3VsdC5hcHBlbmQoUUxhdGluMVN0cmluZygiXG4iKSk7CisKKyAgICBpZiAobV9qc2NDb250
cm9sbGVyLT5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSkgeworICAgICAgICBRTGlzdDxRV2ViRnJh
bWUgKj4gY2hpbGRyZW4gPSBmcmFtZS0+Y2hpbGRGcmFtZXMoKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCArPSBk
dW1wRnJhbWVzQXNUZXh0KGNoaWxkcmVuLmF0KGkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitzdGF0aWMgUVN0cmluZyBkdW1wSGlzdG9yeUl0ZW0oY29uc3QgUVdlYkhpc3Rv
cnlJdGVtJiBpdGVtLCBpbnQgaW5kZW50LCBib29sIGN1cnJlbnQpCit7CisgICAgUVN0cmluZyBy
ZXN1bHQ7CisKKyAgICBpbnQgc3RhcnQgPSAwOworICAgIGlmIChjdXJyZW50KSB7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoUUxhdGluMVN0cmluZygiY3Vyci0+IikpOworICAgICAgICBzdGFydCA9
IDY7CisgICAgfQorICAgIGZvciAoaW50IGkgPSBzdGFydDsgaSA8IGluZGVudDsgaSsrKQorICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisKKyAgICBRU3RyaW5nIHVybCA9IGl0ZW0udXJsKCku
dG9TdHJpbmcoKTsKKyAgICBpZiAodXJsLmNvbnRhaW5zKCJmaWxlOi8vIikpIHsKKyAgICAgICAg
c3RhdGljIFFTdHJpbmcgbGF5b3V0VGVzdHNTdHJpbmcoIi9MYXlvdXRUZXN0cy8iKTsKKyAgICAg
ICAgc3RhdGljIFFTdHJpbmcgZmlsZVRlc3RTdHJpbmcoIihmaWxlIHRlc3QpOiIpOworCisgICAg
ICAgIFFTdHJpbmcgcmVzID0gdXJsLm1pZCh1cmwuaW5kZXhPZihsYXlvdXRUZXN0c1N0cmluZykg
KyBsYXlvdXRUZXN0c1N0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGlmIChyZXMuaXNFbXB0eSgp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgICAgICByZXN1bHQuYXBwZW5kKGZp
bGVUZXN0U3RyaW5nKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChyZXMpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHJlc3VsdC5hcHBlbmQodXJsKTsKKyAgICB9CisKKyAgICBRU3RyaW5nIHRhcmdl
dCA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpoaXN0b3J5SXRlbVRhcmdldChpdGVtKTsKKyAg
ICBpZiAoIXRhcmdldC5pc0VtcHR5KCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoUVN0cmluZyhR
TGF0aW4xU3RyaW5nKCIgKGluIGZyYW1lIFwiJTFcIikiKSkuYXJnKHRhcmdldCkpOworCisgICAg
aWYgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc1RhcmdldEl0ZW0oaXRlbSkpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoUUxhdGluMVN0cmluZygiICAqKm5hdiB0YXJnZXQqKiIpKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKFFMYXRpbjFTdHJpbmcoIlxuIikpOworCisgICAgUU1hcDxRU3RyaW5nLCBR
V2ViSGlzdG9yeUl0ZW0+IGNoaWxkcmVuID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldENo
aWxkSGlzdG9yeUl0ZW1zKGl0ZW0pOworICAgIGZvcmVhY2ggKFFXZWJIaXN0b3J5SXRlbSBpdGVt
LCBjaGlsZHJlbikKKyAgICAgICAgcmVzdWx0ICs9IGR1bXBIaXN0b3J5SXRlbShpdGVtLCAxMiwg
ZmFsc2UpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUVN0cmluZyBEdW1wUmVuZGVyVHJl
ZTo6ZHVtcEJhY2tGb3J3YXJkTGlzdChRV2ViUGFnZSogcGFnZSkKK3sKKyAgICBRV2ViSGlzdG9y
eSogaGlzdG9yeSA9IHBhZ2UtPmhpc3RvcnkoKTsKKworICAgIFFTdHJpbmcgcmVzdWx0OworICAg
IHJlc3VsdC5hcHBlbmQoUUxhdGluMVN0cmluZygiXG49PT09PT09PT09PT09PSBCYWNrIEZvcndh
cmQgTGlzdCA9PT09PT09PT09PT09PVxuIikpOworCisgICAgLy8gRk9STUFUOgorICAgIC8vICIg
ICAgICAgIChmaWxlIHRlc3QpOmZhc3QvbG9hZGVyL3Jlc291cmNlcy9jbGljay1mcmFnbWVudC1s
aW5rLmh0bWwgICoqbmF2IHRhcmdldCoqIgorICAgIC8vICJjdXJyLT4gIChmaWxlIHRlc3QpOmZh
c3QvbG9hZGVyL3Jlc291cmNlcy9jbGljay1mcmFnbWVudC1saW5rLmh0bWwjdGVzdGZyYWdtZW50
ICAqKm5hdiB0YXJnZXQqKiIKKworICAgIGludCBtYXhJdGVtcyA9IGhpc3RvcnktPm1heGltdW1J
dGVtQ291bnQoKTsKKworICAgIGZvcmVhY2ggKGNvbnN0IFFXZWJIaXN0b3J5SXRlbSBpdGVtLCBo
aXN0b3J5LT5iYWNrSXRlbXMobWF4SXRlbXMpKSB7CisgICAgICAgIGlmICghaXRlbS5pc1ZhbGlk
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChkdW1wSGlz
dG9yeUl0ZW0oaXRlbSwgOCwgZmFsc2UpKTsKKyAgICB9CisKKyAgICBRV2ViSGlzdG9yeUl0ZW0g
aXRlbSA9IGhpc3RvcnktPmN1cnJlbnRJdGVtKCk7CisgICAgaWYgKGl0ZW0uaXNWYWxpZCgpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKGR1bXBIaXN0b3J5SXRlbShpdGVtLCA4LCB0cnVlKSk7CisK
KyAgICBmb3JlYWNoIChjb25zdCBRV2ViSGlzdG9yeUl0ZW0gaXRlbSwgaGlzdG9yeS0+Zm9yd2Fy
ZEl0ZW1zKG1heEl0ZW1zKSkgeworICAgICAgICBpZiAoIWl0ZW0uaXNWYWxpZCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZHVtcEhpc3RvcnlJdGVtKGl0
ZW0sIDgsIGZhbHNlKSk7CisgICAgfQorCisgICAgcmVzdWx0LmFwcGVuZChRTGF0aW4xU3RyaW5n
KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICptZXRob2ROYW1lU3Ry
aW5nRm9yRmFpbGVkVGVzdChUZXN0UnVubmVyICpjb250cm9sbGVyKQoreworICAgIGNvbnN0IGNo
YXIgKmVycm9yTWVzc2FnZTsKKyAgICBpZiAoY29udHJvbGxlci0+ZHVtcEFzVGV4dCgpKQorICAg
ICAgICBlcnJvck1lc3NhZ2UgPSAiW2RvY3VtZW50RWxlbWVudCBpbm5lclRleHRdIjsKKyAgICAv
LyBGSVhNRTogQWRkIHdoZW4gd2UgaGF2ZSBzdXBwb3J0CisgICAgLy9lbHNlIGlmIChjb250cm9s
bGVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkpCisgICAgLy8gICAgZXJyb3JNZXNzYWdlID0gIltb
bWFpbkZyYW1lIERPTURvY3VtZW50XSB3ZWJBcmNoaXZlXSI7CisgICAgLy9lbHNlIGlmIChjb250
cm9sbGVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpCisgICAgLy8gICAgZXJyb3JNZXNzYWdl
ID0gIltbbWFpbkZyYW1lIGRhdGFTb3VyY2VdIHdlYkFyY2hpdmVdIjsKKyAgICBlbHNlCisgICAg
ICAgIGVycm9yTWVzc2FnZSA9ICJbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVz
ZW50YXRpb25dIjsKKworICAgIHJldHVybiBlcnJvck1lc3NhZ2U7Cit9CisKK3ZvaWQgRHVtcFJl
bmRlclRyZWU6OmR1bXAoKQoreworICAgIC8vIFByZXZlbnQgYW55IGZ1cnRoZXIgZnJhbWUgbG9h
ZCBvciByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcyBmcm9tIGFwcGVhcmluZyBhZnRlciB3ZSBkdW1w
IHRoZSByZXN1bHQuCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBGcmFtZUxvYWRl
cihmYWxzZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3MoZmFsc2UpOworCisgICAgUVdlYkZyYW1lICptYWluRnJhbWUgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpOworCisgICAgaWYgKGlzU3RhbmRBbG9uZU1vZGUoKSkgeworICAgICAgICBRU3Ry
aW5nIG1hcmt1cCA9IG1haW5GcmFtZS0+dG9IdG1sKCk7CisgICAgICAgIGZwcmludGYoc3Rkb3V0
LCAiU291cmNlOlxuXG4lc1xuIiwgbWFya3VwLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKyAgICB9
CisKKyAgICBRU3RyaW5nIG1pbWVUeXBlID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc3Bv
bnNlTWltZVR5cGUobWFpbkZyYW1lLT5oYW5kbGUoKSk7CisgICAgaWYgKG1pbWVUeXBlID09ICJ0
ZXh0L3BsYWluIikKKyAgICAgICAgbV9qc2NDb250cm9sbGVyLT5zZXREdW1wQXNUZXh0KHRydWUp
OworCisgICAgLy8gRHVtcCByZW5kZXIgdGV4dC4uLgorICAgIFFTdHJpbmcgcmVzdWx0U3RyaW5n
OworICAgIFFTdHJpbmcgcmVzdWx0Q29udGVudFR5cGUgPSAidGV4dC9wbGFpbiI7CisgICAgUUJ5
dGVBcnJheSByZXN1bHREYXRhOworICAgIGlmIChtX2NvbnRyb2xsZXItPnNob3VsZER1bXBBc0F1
ZGlvKCkpIHsKKyAgICAgICAgcmVzdWx0Q29udGVudFR5cGUgPSAiYXVkaW8vd2F2IjsKKyAgICAg
ICAgcmVzdWx0RGF0YSA9IG1fY29udHJvbGxlci0+YXVkaW9EYXRhKCk7CisgICAgfSBlbHNlIGlm
IChtX2pzY0NvbnRyb2xsZXItPmR1bXBBc1RleHQoKSkKKyAgICAgICAgcmVzdWx0U3RyaW5nID0g
ZHVtcEZyYW1lc0FzVGV4dChtYWluRnJhbWUpOworICAgIGVsc2UgeworICAgICAgICByZXN1bHRT
dHJpbmcgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZnJhbWVSZW5kZXJUcmVlRHVtcChtYWlu
RnJhbWUtPmhhbmRsZSgpKTsKKyAgICAgICAgcmVzdWx0U3RyaW5nICs9IGR1bXBGcmFtZVNjcm9s
bFBvc2l0aW9uKG1haW5GcmFtZSk7CisgICAgfQorICAgIGlmICghcmVzdWx0U3RyaW5nLmlzRW1w
dHkoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIkNvbnRlbnQtVHlwZTogJXNcbiIsIHJl
c3VsdENvbnRlbnRUeXBlLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgZnByaW50Zihz
dGRvdXQsICIlcyIsIHJlc3VsdFN0cmluZy50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisKKyAgICAg
ICAgaWYgKG1fanNjQ29udHJvbGxlci0+ZHVtcEJhY2tGb3J3YXJkTGlzdCgpKSB7CisgICAgICAg
ICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzIiwgZHVtcEJhY2tGb3J3YXJkTGlzdCh3ZWJQYWdlKCkp
LnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgICAgIGZvcmVhY2ggKFFPYmplY3QqIHdp
ZGdldCwgd2luZG93cykgeworICAgICAgICAgICAgICAgIFFXZWJQYWdlKiBwYWdlID0gcW9iamVj
dF9jYXN0PFFXZWJQYWdlKj4od2lkZ2V0LT5maW5kQ2hpbGQ8UVdlYlBhZ2UqPigpKTsKKyAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzIiwgZHVtcEJhY2tGb3J3YXJkTGlzdChwYWdl
KS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
IGVsc2UgaWYgKCFyZXN1bHREYXRhLmlzRW1wdHkoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZG91
dCwgIkNvbnRlbnQtVHlwZTogJXNcbiIsIHJlc3VsdENvbnRlbnRUeXBlLnRvVXRmOCgpLmNvbnN0
RGF0YSgpKTsKKyAgICAgICAgZnByaW50ZihzdGRvdXQsICJDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiBiYXNlNjRcbiIpOworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzIiwgcmVzdWx0RGF0
YS50b0Jhc2U2NCgpLmNvbnN0RGF0YSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJpbnRmKCJF
UlJPUjogbmlsIHJlc3VsdCBmcm9tICVzIiwgbWV0aG9kTmFtZVN0cmluZ0ZvckZhaWxlZFRlc3Qo
bV9qc2NDb250cm9sbGVyLmdldCgpKSk7CisKKyAgICAvLyBzaWduYWwgZW5kIG9mIHRleHQgYmxv
Y2sKKyAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKKyAgICBmcHV0cygiI0VPRlxuIiwgc3Rk
ZXJyKTsKKworICAgIGlmIChtX2R1bXBQaXhlbHNGb3JDdXJyZW50VGVzdCAmJiBtX2pzY0NvbnRy
b2xsZXItPmdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkpIHsKKyAgICAgICAgUUltYWdlIGltYWdlOwor
ICAgICAgICBpZiAoIW1fanNjQ29udHJvbGxlci0+aXNQcmludGluZygpKSB7CisgICAgICAgICAg
ICBpbWFnZSA9IFFJbWFnZShtX3BhZ2UtPnZpZXdwb3J0U2l6ZSgpLCBRSW1hZ2U6OkZvcm1hdF9B
UkdCMzIpOworICAgICAgICAgICAgaW1hZ2UuZmlsbChRdDo6d2hpdGUpOworICAgICAgICAgICAg
UVBhaW50ZXIgcGFpbnRlcigmaW1hZ2UpOworICAgICAgICAgICAgbWFpbkZyYW1lLT5yZW5kZXIo
JnBhaW50ZXIpOworICAgICAgICAgICAgcGFpbnRlci5lbmQoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBpbWFnZSA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpwYWludFBhZ2VzV2l0
aEJvdW5kYXJpZXMobWFpbkZyYW1lLT5oYW5kbGUoKSk7CisKKyAgICAgICAgaWYgKER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0Ojp0cmFja1JlcGFpbnRSZWN0cyhtYWluRnJhbWVBZGFwdGVyKCkpKSB7
CisgICAgICAgICAgICBRVmVjdG9yPFFSZWN0PiByZXBhaW50UmVjdHM7CisgICAgICAgICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2V0VHJhY2tlZFJlcGFpbnRSZWN0cyhtYWluRnJhbWVB
ZGFwdGVyKCksIHJlcGFpbnRSZWN0cyk7CisgICAgICAgICAgICBRSW1hZ2UgbWFzayhpbWFnZS5z
aXplKCksIGltYWdlLmZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1hc2suZmlsbChRQ29sb3IoMCwg
MCwgMCwgMC42NiAqIDI1NSkpOworCisgICAgICAgICAgICBRUGFpbnRlciBtYXNrUGFpbnRlcigm
bWFzayk7CisgICAgICAgICAgICBtYXNrUGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50
ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCByZXBhaW50UmVjdHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgbWFza1BhaW50
ZXIuZmlsbFJlY3QocmVwYWludFJlY3RzW2ldLCBRdDo6dHJhbnNwYXJlbnQpOworCisgICAgICAg
ICAgICBRUGFpbnRlciBwYWludGVyKCZpbWFnZSk7CisgICAgICAgICAgICBwYWludGVyLmRyYXdJ
bWFnZShpbWFnZS5yZWN0KCksIG1hc2spOworCisgICAgICAgICAgICBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0VHJhY2tSZXBhaW50UmVjdHMobWFpbkZyYW1lQWRhcHRlcigpLCBmYWxzZSk7
CisgICAgICAgIH0KKworICAgICAgICBRQ3J5cHRvZ3JhcGhpY0hhc2ggaGFzaChRQ3J5cHRvZ3Jh
cGhpY0hhc2g6Ok1kNSk7CisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGltYWdlLmhl
aWdodCgpOyArK3JvdykKKyAgICAgICAgICAgIGhhc2guYWRkRGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihpbWFnZS5zY2FuTGluZShyb3cpKSwgaW1hZ2Uud2lkdGgoKSAqIDQpOwor
ICAgICAgICBRU3RyaW5nIGFjdHVhbEhhc2ggPSBoYXNoLnJlc3VsdCgpLnRvSGV4KCk7CisKKyAg
ICAgICAgZnByaW50ZihzdGRvdXQsICJcbkFjdHVhbEhhc2g6ICVzXG4iLCBxUHJpbnRhYmxlKGFj
dHVhbEhhc2gpKTsKKworICAgICAgICBib29sIGR1bXBJbWFnZSA9IHRydWU7CisKKyAgICAgICAg
aWYgKCFtX2V4cGVjdGVkSGFzaC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFFfQVNTRVJUKG1f
ZXhwZWN0ZWRIYXNoLmxlbmd0aCgpID09IDMyKTsKKyAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0
LCAiXG5FeHBlY3RlZEhhc2g6ICVzXG4iLCBxUHJpbnRhYmxlKG1fZXhwZWN0ZWRIYXNoKSk7CisK
KyAgICAgICAgICAgIGlmIChtX2V4cGVjdGVkSGFzaCA9PSBhY3R1YWxIYXNoKQorICAgICAgICAg
ICAgICAgIGR1bXBJbWFnZSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGR1bXBJ
bWFnZSkgeworICAgICAgICAgICAgaW1hZ2Uuc2V0VGV4dCgiY2hlY2tzdW0iLCBhY3R1YWxIYXNo
KTsKKworICAgICAgICAgICAgUUJ1ZmZlciBidWZmZXI7CisgICAgICAgICAgICBidWZmZXIub3Bl
bihRQnVmZmVyOjpXcml0ZU9ubHkpOworICAgICAgICAgICAgaW1hZ2Uuc2F2ZSgmYnVmZmVyLCAi
UE5HIik7CisgICAgICAgICAgICBidWZmZXIuY2xvc2UoKTsKKyAgICAgICAgICAgIGNvbnN0IFFC
eXRlQXJyYXkgJmRhdGEgPSBidWZmZXIuZGF0YSgpOworCisgICAgICAgICAgICBwcmludGYoIkNv
bnRlbnQtVHlwZTogJXNcbiIsICJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgIHByaW50ZigiQ29u
dGVudC1MZW5ndGg6ICVsdVxuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oZGF0YS5sZW5n
dGgoKSkpOworCisgICAgICAgICAgICBjb25zdCBxdWludDMyIGJ5dGVzVG9Xcml0ZUluT25lQ2h1
bmsgPSAxIDw8IDE1OworICAgICAgICAgICAgcXVpbnQzMiBkYXRhUmVtYWluaW5nVG9Xcml0ZSA9
IGRhdGEubGVuZ3RoKCk7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHIgPSBkYXRhLmRhdGEo
KTsKKyAgICAgICAgICAgIHdoaWxlIChkYXRhUmVtYWluaW5nVG9Xcml0ZSkgeworICAgICAgICAg
ICAgICAgIHF1aW50MzIgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmsgPSBxTWluKGRhdGFSZW1haW5p
bmdUb1dyaXRlLCBieXRlc1RvV3JpdGVJbk9uZUNodW5rKTsKKyAgICAgICAgICAgICAgICBxdWlu
dDMyIGJ5dGVzV3JpdHRlbiA9IGZ3cml0ZShwdHIsIDEsIGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5r
LCBzdGRvdXQpOworICAgICAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dy
aXRlSW5UaGlzQ2h1bmspCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGRhdGFSZW1haW5pbmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgICAgICAg
ICBwdHIgKz0gYnl0ZXNXcml0dGVuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZmZsdXNoKHN0ZG91dCk7CisgICAgfQorCisgICAgcHV0cygiI0VPRiIpOyAgIC8vIHRlcm1p
bmF0ZSB0aGUgKHBvc3NpYmx5IGVtcHR5KSBwaXhlbHMgYmxvY2sKKworICAgIGZmbHVzaChzdGRv
dXQpOworICAgIGZmbHVzaChzdGRlcnIpOworCisgICAgIGVtaXQgcmVhZHkoKTsKK30KKwordm9p
ZCBEdW1wUmVuZGVyVHJlZTo6dGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJnMpCit7CisgICAg
aWYgKG1fanNjQ29udHJvbGxlci0+ZHVtcFRpdGxlQ2hhbmdlcygpKQorICAgICAgICBwcmludGYo
IlRJVExFIENIQU5HRUQ6ICclcydcbiIsIHMudG9VdGY4KCkuZGF0YSgpKTsKK30KKwordm9pZCBE
dW1wUmVuZGVyVHJlZTo6Y29ubmVjdEZyYW1lKFFXZWJGcmFtZSAqZnJhbWUpCit7CisgICAgY29u
bmVjdChmcmFtZSwgU0lHTkFMKGphdmFTY3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKCkpLCB0aGlz
LCBTTE9UKGluaXRKU09iamVjdHMoKSkpOworICAgIGNvbm5lY3QoZnJhbWUsIFNJR05BTChwcm92
aXNpb25hbExvYWQoKSksCisgICAgICAgICAgICB0ZXN0UnVubmVyKCksIFNMT1QocHJvdmlzaW9u
YWxMb2FkKCkpKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6ZHVtcERhdGFiYXNlUXVvdGEo
UVdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgZGJOYW1lKQoreworICAgIGlmICghbV9q
c2NDb250cm9sbGVyLT5kdW1wRGF0YWJhc2VDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFFXZWJTZWN1cml0eU9yaWdpbiBvcmlnaW4gPSBmcmFtZS0+c2VjdXJpdHlPcmlnaW4oKTsK
KyAgICBwcmludGYoIlVJIERFTEVHQVRFIERBVEFCQVNFIENBTExCQUNLOiBleGNlZWRlZERhdGFi
YXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjp7JXMsICVzLCAlaX0gZGF0YWJhc2U6JXNcbiIsCisg
ICAgICAgICAgIG9yaWdpbi5zY2hlbWUoKS50b1V0ZjgoKS5kYXRhKCksCisgICAgICAgICAgIG9y
aWdpbi5ob3N0KCkudG9VdGY4KCkuZGF0YSgpLAorICAgICAgICAgICBvcmlnaW4ucG9ydCgpLAor
ICAgICAgICAgICBkYk5hbWUudG9VdGY4KCkuZGF0YSgpKTsKKyAgICBvcmlnaW4uc2V0RGF0YWJh
c2VRdW90YShkYXRhYmFzZURlZmF1bHRRdW90YSk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6
OmR1bXBBcHBsaWNhdGlvbkNhY2hlUXVvdGEoUVdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHF1
aW50NjQgZGVmYXVsdE9yaWdpblF1b3RhLCBxdWludDY0IHRvdGFsU3BhY2VOZWVkZWQpCit7Cisg
ICAgaWYgKG1fanNjQ29udHJvbGxlci0+ZHVtcEFwcGxpY2F0aW9uQ2FjaGVEZWxlZ2F0ZUNhbGxi
YWNrcygpKSB7CisgICAgICAgIC8vIEZvciBleGFtcGxlLCBudW1iZXJzIGZyb20gMzAwMDAgLSAz
OTk5OSB3aWxsIG91dHB1dCBhcyAzMDAwMC4KKyAgICAgICAgLy8gUm91bmRpbmcgdXAgb3IgZG93
biBub3QgcmVhbGx5IG1hdHRlciBmb3IgdGhlc2UgdGVzdHMuIEl0J3MKKyAgICAgICAgLy8gc3Vm
ZmljaWVudCB0byBqdXN0IGdldCBhIHJhbmdlIG9mIDEwMDAwIHRvIGRldGVybWluZSBpZiB3ZSB3
ZXJlCisgICAgICAgIC8vIGFib3ZlIG9yIGJlbG93IGEgdGhyZXNob2xkLgorICAgICAgICBxdWlu
dDY0IHRydW5jYXRlZFNwYWNlTmVlZGVkID0gKHRvdGFsU3BhY2VOZWVkZWQgLyAxMDAwMCkgKiAx
MDAwMDsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBBUFBMSUNBVElPTiBDQUNIRSBDQUxM
QkFDSzogZXhjZWVkZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFGb3JTZWN1cml0eU9yaWdp
bjp7JXMsICVzLCAlaX0gdG90YWxTcGFjZU5lZWRlZDp+JWxsdVxuIiwKKyAgICAgICAgICAgICAg
IG9yaWdpbi0+c2NoZW1lKCkudG9VdGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgb3JpZ2lu
LT5ob3N0KCkudG9VdGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCks
CisgICAgICAgICAgICAgICB0cnVuY2F0ZWRTcGFjZU5lZWRlZAorICAgICAgICAgICAgICAgKTsK
KyAgICB9CisKKyAgICBpZiAobV9qc2NDb250cm9sbGVyLT5kaXNhbGxvd0luY3JlYXNlRm9yQXBw
bGljYXRpb25DYWNoZVF1b3RhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG9yaWdpbi0+c2V0
QXBwbGljYXRpb25DYWNoZVF1b3RhKGRlZmF1bHRPcmlnaW5RdW90YSk7Cit9CisKK3ZvaWQgRHVt
cFJlbmRlclRyZWU6OnN0YXR1c0Jhck1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBpZiAoIW1fanNjQ29udHJvbGxlci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwcmludGYoIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0
U3RhdHVzVGV4dDolc1xuIiwgbWVzc2FnZS50b1V0ZjgoKS5jb25zdERhdGEoKSk7Cit9CisKK1FX
ZWJQYWdlICpEdW1wUmVuZGVyVHJlZTo6Y3JlYXRlV2luZG93KCkKK3sKKyAgICBpZiAoIW1fanNj
Q29udHJvbGxlci0+Y2FuT3BlbldpbmRvd3MoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBDcmVhdGUgYSBkdW1teSBjb250YWluZXIgb2JqZWN0IHRvIHRyYWNrIHRoZSBwYWdlIGluIERS
VC4KKyAgICAvLyBRT2JqZWN0IGlzIHVzZWQgaW5zdGVhZCBvZiBRV2lkZ2V0IHRvIHByZXZlbnQg
RFJUIGZyb20KKyAgICAvLyBzaG93aW5nIHRoZSBtYWluIHZpZXcgd2hlbiBkZWxldGluZyB0aGUg
Y29udGFpbmVyLgorCisgICAgUU9iamVjdCogY29udGFpbmVyID0gbmV3IFFPYmplY3QobV9tYWlu
Vmlldyk7CisgICAgLy8gY3JlYXRlIGEgUVdlYlBhZ2Ugd2Ugd2FudCB0byByZXR1cm4KKyAgICBR
V2ViUGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PFFXZWJQYWdlKj4obmV3IFdlYlBhZ2UoY29udGFp
bmVyLCB0aGlzKSk7CisgICAgLy8gZ2V0cyBjbGVhbmVkIHVwIGluIGNsb3NlUmVtYWluaW5nV2lu
ZG93cygpCisgICAgd2luZG93cy5hcHBlbmQoY29udGFpbmVyKTsKKworICAgIC8vIGNvbm5lY3Qg
dGhlIG5lZWRlZCBzaWduYWxzIHRvIHRoZSBwYWdlCisgICAgY29ubmVjdChwYWdlLCBTSUdOQUwo
ZnJhbWVDcmVhdGVkKFFXZWJGcmFtZSopKSwgdGhpcywgU0xPVChjb25uZWN0RnJhbWUoUVdlYkZy
YW1lKikpKTsKKyAgICBjb25uZWN0RnJhbWUocGFnZS0+bWFpbkZyYW1lKCkpOworICAgIGNvbm5l
Y3QocGFnZSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSksIG1fY29udHJvbGxlciwgU0xPVCht
YXliZUR1bXAoYm9vbCkpKTsKKyAgICBjb25uZWN0KHBhZ2UsIFNJR05BTCh3aW5kb3dDbG9zZVJl
cXVlc3RlZCgpKSwgdGhpcywgU0xPVCh3aW5kb3dDbG9zZVJlcXVlc3RlZCgpKSk7CisKKyAgICAv
LyBVc2UgYSBmcmFtZSBncm91cCBuYW1lIGZvciBhbGwgcGFnZXMgY3JlYXRlZCBieSBEdW1wUmVu
ZGVyVHJlZSB0byBhbGxvdworICAgIC8vIHRlc3Rpbmcgb2YgY3Jvc3MtcGFnZSBmcmFtZSBsb29r
dXAuCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYlBhZ2VTZXRHcm91cE5hbWUocGFn
ZS0+aGFuZGxlKCksICJvcmcud2Via2l0LnF0LkR1bXBSZW5kZXJUcmVlIik7CisKKyAgICByZXR1
cm4gcGFnZTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6d2luZG93Q2xvc2VSZXF1ZXN0ZWQo
KQoreworICAgIFFXZWJQYWdlKiBwYWdlID0gcW9iamVjdF9jYXN0PFFXZWJQYWdlKj4oc2VuZGVy
KCkpOworICAgIFFPYmplY3QqIGNvbnRhaW5lciA9IHBhZ2UtPnBhcmVudCgpOworICAgIHdpbmRv
d3MucmVtb3ZlQWxsKGNvbnRhaW5lcik7CisgICAgY29udGFpbmVyLT5kZWxldGVMYXRlcigpOwor
fQorCitpbnQgRHVtcFJlbmRlclRyZWU6OndpbmRvd0NvdW50KCkgY29uc3QKK3sKKy8vIGluY2x1
ZGUgdGhlIG1haW4gdmlldyBpbiB0aGUgY291bnQKKyAgICByZXR1cm4gd2luZG93cy5jb3VudCgp
ICsgMTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6Z2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0
KCkgCit7CisgICAgbV9wYWdlLT5wZXJtaXNzaW9uU2V0KFFXZWJQYWdlOjpHZW9sb2NhdGlvbik7
Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWU6OnN3aXRjaEZvY3VzKGJvb2wgZm9jdXNlZCkKK3sK
KyAgICBRRm9jdXNFdmVudCBldmVudCgoZm9jdXNlZCkgPyBRRXZlbnQ6OkZvY3VzSW4gOiBRRXZl
bnQ6OkZvY3VzT3V0LCBRdDo6QWN0aXZlV2luZG93Rm9jdXNSZWFzb24pOworICAgIGlmICghaXNH
cmFwaGljc0Jhc2VkKCkpCisgICAgICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fbWFpblZp
ZXcsICZldmVudCk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChXZWJWaWV3R3JhcGhpY3NCYXNl
ZCogdmlldyA9IHFvYmplY3RfY2FzdDxXZWJWaWV3R3JhcGhpY3NCYXNlZCo+KG1fbWFpblZpZXcp
KQorICAgICAgICAgICAgdmlldy0+c2NlbmUoKS0+c2VuZEV2ZW50KHZpZXctPmdyYXBoaWNzVmll
dygpLCAmZXZlbnQpOworICAgIH0KKworfQorCitRV2ViUGFnZUFkYXB0ZXIqIER1bXBSZW5kZXJU
cmVlOjpwYWdlQWRhcHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+aGFuZGxlKCk7
Cit9CisKK1FXZWJGcmFtZUFkYXB0ZXIqIER1bXBSZW5kZXJUcmVlOjptYWluRnJhbWVBZGFwdGVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+aGFuZGxlKCk7Cit9
CisKK1FMaXN0PFdlYlBhZ2UqPiBEdW1wUmVuZGVyVHJlZTo6Z2V0QWxsUGFnZXMoKSBjb25zdAor
eworICAgIFFMaXN0PFdlYlBhZ2UqPiBwYWdlczsKKyAgICBwYWdlcy5hcHBlbmQobV9wYWdlKTsK
KyAgICBmb3JlYWNoIChRT2JqZWN0KiB3aWRnZXQsIHdpbmRvd3MpIHsKKyAgICAgICAgaWYgKFdl
YlBhZ2UqIHBhZ2UgPSB3aWRnZXQtPmZpbmRDaGlsZDxXZWJQYWdlKj4oKSkKKyAgICAgICAgICAg
IHBhZ2VzLmFwcGVuZChwYWdlKTsKKyAgICB9CisgICAgcmV0dXJuIHBhZ2VzOworfQorCit2b2lk
IER1bXBSZW5kZXJUcmVlOjpzZXRUaW1lb3V0KGludCB0aW1lb3V0KQoreworICAgIG1fY29udHJv
bGxlci0+c2V0VGltZW91dCh0aW1lb3V0KTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJlZTo6c2V0
U2hvdWxkVGltZW91dChib29sIGZsYWcpCit7CisgICAgbV9jb250cm9sbGVyLT5zZXRTaG91bGRU
aW1lb3V0KGZsYWcpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVt
cFJlbmRlclRyZWVRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMTU1OWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKQEAg
LTAsMCArMSwyNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9i
aWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEdW1wUmVuZGVyVHJl
ZVF0X2gKKyNkZWZpbmUgRHVtcFJlbmRlclRyZWVRdF9oCisKKyNpbmNsdWRlIDxRTGlzdD4KKyNp
bmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNs
dWRlIDxRVGV4dFN0cmVhbT4KKyNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+CisKKyNpZm5kZWYg
UVRfTk9fT1BFTlNTTAorI2luY2x1ZGUgPFFTc2xFcnJvcj4KKyNlbmRpZgorCisjaW5jbHVkZSAi
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKKyNpbmNsdWRlICJUZXN0UnVubmVyLmgiCisjaW5j
bHVkZSA8cWdyYXBoaWNzdmlldy5oPgorI2luY2x1ZGUgPHFncmFwaGljc3dlYnZpZXcuaD4KKyNp
bmNsdWRlIDxxd2ViZnJhbWUuaD4KKyNpbmNsdWRlIDxxd2ViaW5zcGVjdG9yLmg+CisjaW5jbHVk
ZSA8cXdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxxd2Vidmlldy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRVXJsOworY2xhc3MgUUZpbGU7CitR
VF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFXZWJGcmFtZUFkYXB0ZXI7CitjbGFzcyBRV2ViUGFn
ZUFkYXB0ZXI7CisKK2NsYXNzIFRlc3RSdW5uZXJRdDsKK2NsYXNzIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OworY2xhc3MgRXZlbnRTZW5kZXI7CitjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwor
Y2xhc3MgR0NDb250cm9sbGVyOworCitjbGFzcyBXZWJQYWdlOworY2xhc3MgTmV0d29ya0FjY2Vz
c01hbmFnZXI7CisKK2NsYXNzIER1bXBSZW5kZXJUcmVlIDogcHVibGljIFFPYmplY3QgeworUV9P
QkpFQ1QKKworcHVibGljOgorICAgIER1bXBSZW5kZXJUcmVlKCk7CisgICAgdmlydHVhbCB+RHVt
cFJlbmRlclRyZWUoKTsKKworICAgIHN0YXRpYyBEdW1wUmVuZGVyVHJlZSogaW5zdGFuY2UoKTsK
KworICAgIC8vIEluaXRpYWxpemUgaW4gc2luZ2xlLWZpbGUgbW9kZS4KKyAgICB2b2lkIG9wZW4o
Y29uc3QgUVVybCYgdXJsKTsKKworICAgIHZvaWQgc2V0VGV4dE91dHB1dEVuYWJsZWQoYm9vbCBl
bmFibGUpIHsgbV9lbmFibGVUZXh0T3V0cHV0ID0gZW5hYmxlOyB9CisgICAgYm9vbCBpc1RleHRP
dXRwdXRFbmFibGVkKCkgeyByZXR1cm4gbV9lbmFibGVUZXh0T3V0cHV0OyB9CisKKyAgICB2b2lk
IHNldEdyYXBoaWNzQmFzZWQoYm9vbCBmbGFnKSB7IG1fZ3JhcGhpY3NCYXNlZCA9IGZsYWc7IH0K
KyAgICBib29sIGlzR3JhcGhpY3NCYXNlZCgpIHsgcmV0dXJuIG1fZ3JhcGhpY3NCYXNlZDsgfQor
CisgICAgdm9pZCBjbG9zZVJlbWFpbmluZ1dpbmRvd3MoKTsKKyAgICB2b2lkIHJlc2V0VG9Db25z
aXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKGNvbnN0IFFVcmwmKTsKKworICAgIFRlc3RSdW5uZXJR
dCAqdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxlcjsgfQorICAgIFRlc3RS
dW5uZXIgKmpzY1Rlc3RSdW5uZXIoKSBjb25zdCB7IHJldHVybiBtX2pzY0NvbnRyb2xsZXIuZ2V0
KCk7IH0KKyAgICBFdmVudFNlbmRlciAqZXZlbnRTZW5kZXIoKSBjb25zdCB7IHJldHVybiBtX2V2
ZW50U2VuZGVyOyB9CisgICAgVGV4dElucHV0Q29udHJvbGxlciAqdGV4dElucHV0Q29udHJvbGxl
cigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dElucHV0Q29udHJvbGxlcjsgfQorICAgIFFTdHJpbmcg
cGVyc2lzdGVudFN0b3JhZ2VQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RvcmFn
ZVBhdGg7IH0KKyAgICBOZXR3b3JrQWNjZXNzTWFuYWdlciAqbmV0d29ya0FjY2Vzc01hbmFnZXIo
KSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtBY2Nlc3NNYW5hZ2VyOyB9CisKKyAgICBRV2ViUGFn
ZSAqY3JlYXRlV2luZG93KCk7CisgICAgaW50IHdpbmRvd0NvdW50KCkgY29uc3Q7CisKKyAgICB2
b2lkIHN3aXRjaEZvY3VzKGJvb2wgZm9jdXNlZCk7CisKKyAgICBXZWJQYWdlICp3ZWJQYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CisgICAgUVdlYlBhZ2VBZGFwdGVyICpwYWdlQWRhcHRl
cigpIGNvbnN0OworICAgIFFXZWJGcmFtZUFkYXB0ZXIgKm1haW5GcmFtZUFkYXB0ZXIoKSBjb25z
dDsKKworICAgIFFMaXN0PFdlYlBhZ2UqPiBnZXRBbGxQYWdlcygpIGNvbnN0OworCisgICAgdm9p
ZCBwcm9jZXNzQXJnc0xpbmUoY29uc3QgUVN0cmluZ0xpc3QmKTsKKyAgICB2b2lkIHNldFJlZGly
ZWN0T3V0cHV0RmlsZU5hbWUoY29uc3QgUVN0cmluZyYgZmlsZU5hbWUpIHsgbV9yZWRpcmVjdE91
dHB1dEZpbGVOYW1lID0gZmlsZU5hbWU7IH0KKyAgICB2b2lkIHNldFJlZGlyZWN0RXJyb3JGaWxl
TmFtZShjb25zdCBRU3RyaW5nJiBmaWxlTmFtZSkgeyBtX3JlZGlyZWN0RXJyb3JGaWxlTmFtZSA9
IGZpbGVOYW1lOyB9CisKKyAgICB2b2lkIHNldFRpbWVvdXQoaW50KTsKKyAgICB2b2lkIHNldFNo
b3VsZFRpbWVvdXQoYm9vbCBmbGFnKTsKKyAgICB2b2lkIHNldFNob3VsZER1bXBQaXhlbHNGb3JB
bGxUZXN0cygpIHsgbV9kdW1wUGl4ZWxzRm9yQWxsVGVzdHMgPSB0cnVlOyB9CisKK3B1YmxpYyBR
X1NMT1RTOgorICAgIHZvaWQgaW5pdEpTT2JqZWN0cygpOworCisgICAgdm9pZCByZWFkTGluZSgp
OworICAgIHZvaWQgcHJvY2Vzc0xpbmUoY29uc3QgUVN0cmluZyYpOworCisgICAgdm9pZCBkdW1w
KCk7CisgICAgdm9pZCB0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyAmcyk7CisgICAgdm9pZCBj
b25uZWN0RnJhbWUoUVdlYkZyYW1lICpmcmFtZSk7CisgICAgdm9pZCBkdW1wRGF0YWJhc2VRdW90
YShRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRU3RyaW5nJiBkYk5hbWUpOworICAgIHZvaWQgZHVt
cEFwcGxpY2F0aW9uQ2FjaGVRdW90YShRV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgcXVpbnQ2
NCBkZWZhdWx0T3JpZ2luUXVvdGEsIHF1aW50NjQgdG90YWxTcGFjZU5lZWRlZCk7CisgICAgdm9p
ZCBzdGF0dXNCYXJNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgd2lu
ZG93Q2xvc2VSZXF1ZXN0ZWQoKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgcXVpdCgpOworICAg
IHZvaWQgcmVhZHkoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgc2hvd1BhZ2UoKTsK
KyAgICB2b2lkIGhpZGVQYWdlKCk7CisgICAgdm9pZCBkcnlSdW5QcmludChRV2ViRnJhbWUqKTsK
KyAgICB2b2lkIGxvYWROZXh0VGVzdEluU3RhbmRBbG9uZU1vZGUoKTsKKyAgICB2b2lkIGdlb2xv
Y2F0aW9uUGVybWlzc2lvblNldCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc2V0U3RhbmRBbG9u
ZU1vZGUoYm9vbCBmbGFnKSB7IG1fc3RhbmRBbG9uZU1vZGUgPSBmbGFnOyB9CisgICAgYm9vbCBp
c1N0YW5kQWxvbmVNb2RlKCkgeyByZXR1cm4gbV9zdGFuZEFsb25lTW9kZTsgfQorCisgICAgUVN0
cmluZyBkdW1wRnJhbWVzQXNUZXh0KFFXZWJGcmFtZSogZnJhbWUpOworICAgIFFTdHJpbmcgZHVt
cEJhY2tGb3J3YXJkTGlzdChRV2ViUGFnZSogcGFnZSk7CisgICAgUVN0cmluZyBkdW1wRnJhbWVT
Y3JvbGxQb3NpdGlvbihRV2ViRnJhbWUqIGZyYW1lKTsKKyAgICBUZXN0UnVubmVyUXQgKm1fY29u
dHJvbGxlcjsKKyAgICBSZWZQdHI8VGVzdFJ1bm5lcj4gbV9qc2NDb250cm9sbGVyOworCisgICAg
Ym9vbCBtX2R1bXBQaXhlbHNGb3JDdXJyZW50VGVzdDsKKyAgICBib29sIG1fZHVtcFBpeGVsc0Zv
ckFsbFRlc3RzOworICAgIFFTdHJpbmcgbV9leHBlY3RlZEhhc2g7CisgICAgUVN0cmluZ0xpc3Qg
bV9zdGFuZEFsb25lTW9kZVRlc3RMaXN0OworCisgICAgV2ViUGFnZSAqbV9wYWdlOworICAgIFFX
aWRnZXQqIG1fbWFpblZpZXc7CisKKyAgICBFdmVudFNlbmRlciAqbV9ldmVudFNlbmRlcjsKKyAg
ICBUZXh0SW5wdXRDb250cm9sbGVyICptX3RleHRJbnB1dENvbnRyb2xsZXI7CisgICAgUVNjb3Bl
ZFBvaW50ZXI8R0NDb250cm9sbGVyPiBtX2djQ29udHJvbGxlcjsKKyAgICBOZXR3b3JrQWNjZXNz
TWFuYWdlciogbV9uZXR3b3JrQWNjZXNzTWFuYWdlcjsKKworICAgIFFGaWxlICptX3N0ZGluOwor
CisgICAgUUxpc3Q8UU9iamVjdCo+IHdpbmRvd3M7CisgICAgYm9vbCBtX2VuYWJsZVRleHRPdXRw
dXQ7CisgICAgYm9vbCBtX3N0YW5kQWxvbmVNb2RlOworICAgIGJvb2wgbV9ncmFwaGljc0Jhc2Vk
OworICAgIFFTdHJpbmcgbV9wZXJzaXN0ZW50U3RvcmFnZVBhdGg7CisgICAgUVN0cmluZyBtX3Jl
ZGlyZWN0T3V0cHV0RmlsZU5hbWU7CisgICAgUVN0cmluZyBtX3JlZGlyZWN0RXJyb3JGaWxlTmFt
ZTsKK307CisKK2NsYXNzIE5ldHdvcmtBY2Nlc3NNYW5hZ2VyIDogcHVibGljIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBOZXR3b3JrQWNjZXNzTWFu
YWdlcihRT2JqZWN0KiBwYXJlbnQpOworCitwcml2YXRlIFFfU0xPVFM6CisjaWZuZGVmIFFUX05P
X09QRU5TU0wKKyAgICB2b2lkIHNzbEVycm9yc0VuY291bnRlcmVkKFFOZXR3b3JrUmVwbHkqLCBj
b25zdCBRTGlzdDxRU3NsRXJyb3I+Jik7CisjZW5kaWYKK307CisKK2NsYXNzIFdlYlBhZ2UgOiBw
dWJsaWMgUVdlYlBhZ2UgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViUGFnZShRT2Jq
ZWN0KiBwYXJlbnQsIER1bXBSZW5kZXJUcmVlKik7CisgICAgdmlydHVhbCB+V2ViUGFnZSgpOwor
ICAgIFFXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvcigpOworICAgIHZvaWQgY2xvc2VXZWJJbnNw
ZWN0b3IoKTsKKworICAgIFFXZWJQYWdlICpjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRv
d1R5cGUpOworCisgICAgdm9pZCBqYXZhU2NyaXB0QWxlcnQoUVdlYkZyYW1lICpmcmFtZSwgY29u
c3QgUVN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2Uo
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNv
dXJjZUlEKTsKKyAgICBib29sIGphdmFTY3JpcHRDb25maXJtKFFXZWJGcmFtZSAqZnJhbWUsIGNv
bnN0IFFTdHJpbmcmIG1zZyk7CisgICAgYm9vbCBqYXZhU2NyaXB0UHJvbXB0KFFXZWJGcmFtZSAq
ZnJhbWUsIGNvbnN0IFFTdHJpbmcmIG1zZywgY29uc3QgUVN0cmluZyYgZGVmYXVsdFZhbHVlLCBR
U3RyaW5nKiByZXN1bHQpOworCisgICAgdm9pZCByZXNldFNldHRpbmdzKCk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oUVdlYlBhZ2U6OkV4dGVuc2lvbiBleHRlbnNpb24p
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBleHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbiwg
Y29uc3QgRXh0ZW5zaW9uT3B0aW9uICpvcHRpb24sIEV4dGVuc2lvblJldHVybiAqb3V0cHV0KTsK
KworICAgIFFPYmplY3QqIGNyZWF0ZVBsdWdpbihjb25zdCBRU3RyaW5nJiwgY29uc3QgUVVybCYs
IGNvbnN0IFFTdHJpbmdMaXN0JiwgY29uc3QgUVN0cmluZ0xpc3QmKTsKKworICAgIHZvaWQgcGVy
bWlzc2lvblNldChRV2ViUGFnZTo6RmVhdHVyZSBmZWF0dXJlKTsKKworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkgeyByZXR1cm4gZmFsc2U7IH0KKworcHVibGlj
IFFfU0xPVFM6CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihRV2ViRnJhbWUqIGZyYW1lLCBR
V2ViUGFnZTo6RmVhdHVyZSBmZWF0dXJlKTsKKyAgICB2b2lkIGNhbmNlbFBlcm1pc3Npb24oUVdl
YkZyYW1lKiBmcmFtZSwgUVdlYlBhZ2U6OkZlYXR1cmUgZmVhdHVyZSk7CisKK3Byb3RlY3RlZDoK
KyAgICBib29sIGFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KFFXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IFFOZXR3b3JrUmVxdWVzdCYgcmVxdWVzdCwgTmF2aWdhdGlvblR5cGUgdHlwZSk7CisgICAgYm9v
bCBpc1RleHRPdXRwdXRFbmFibGVkKCkgeyByZXR1cm4gbV9kcnQtPmlzVGV4dE91dHB1dEVuYWJs
ZWQoKTsgfQorCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBzZXRWaWV3R2VvbWV0cnkoY29u
c3QgUVJlY3QmKTsKKworcHJpdmF0ZToKKyAgICBRV2ViSW5zcGVjdG9yKiBtX3dlYkluc3BlY3Rv
cjsKKyAgICBRTGlzdDxRV2ViRnJhbWUqPiBtX3BlbmRpbmdHZW9sb2NhdGlvblJlcXVlc3RzOwor
ICAgIER1bXBSZW5kZXJUcmVlICptX2RydDsKK307CisKK2NsYXNzIFdlYlZpZXdHcmFwaGljc0Jh
c2VkIDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAg
ICBXZWJWaWV3R3JhcGhpY3NCYXNlZChRV2lkZ2V0KiBwYXJlbnQpOworICAgIFFHcmFwaGljc1dl
YlZpZXcqIGdyYXBoaWNzVmlldygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbTsgfQorICAgIHZvaWQg
c2V0UGFnZShRV2ViUGFnZSogcGFnZSkgeyBtX2l0ZW0tPnNldFBhZ2UocGFnZSk7IH0KKworcHJp
dmF0ZToKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiBtX2l0ZW07Cit9OworCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzUyZjFkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCkBAIC0wLDAgKzEsNzY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cu
dG9yY2htb2JpbGUuY29tLworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXJR
dC5oIgorCisjaW5jbHVkZSA8UUdlc3R1cmVFdmVudD4KKyNpbmNsdWRlIDxRR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQ+CisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKyNpbmNsdWRlIDxxcGEvcXdp
bmRvd3N5c3RlbWludGVyZmFjZS5oPgorCisjZGVmaW5lIEtFWUNPREVfREVMICAgICAgICAgMTI3
CisjZGVmaW5lIEtFWUNPREVfQkFDS1NQQUNFICAgOAorI2RlZmluZSBLRVlDT0RFX0xFRlRBUlJP
VyAgIDB4ZjcwMgorI2RlZmluZSBLRVlDT0RFX1JJR0hUQVJST1cgIDB4ZjcwMworI2RlZmluZSBL
RVlDT0RFX1VQQVJST1cgICAgIDB4ZjcwMAorI2RlZmluZSBLRVlDT0RFX0RPV05BUlJPVyAgIDB4
ZjcwMQorCisvLyBQb3J0cyBsaWtlIEd0ayBhbmQgV2luZG93cyBleHBvc2UgYSBkaWZmZXJlbnQg
YXBwcm9hY2ggZm9yIHRoZWlyIHpvb21pbmcKKy8vIEFQSSBpZiBjb21wYXJlZCB0byBRdDogdGhl
eSBoYXZlIHNwZWNpZmljIG1ldGhvZHMgZm9yIHpvb21pbmcgaW4gYW5kIG91dCwKKy8vIGFzIHdl
bGwgYXMgYSBzZXR0YWJsZSB6b29tIGZhY3Rvciwgd2hpbGUgUXQgaGFzIG9ubHkgYSAnc2V0Wm9v
bVZhbHVlJyBtZXRob2QuCisvLyBIZW5jZSBRdCBEUlQgYWRvcHRzIGEgZml4ZWQgem9vbS1mYWN0
b3IgKDEuMikgZm9yIGNvbXBhdGliaWxpdHkuCisjZGVmaW5lIFpPT01fU1RFUCAgICAgICAgICAg
MS4yCisKKyNkZWZpbmUgRFJUX01FU1NBR0VfRE9ORSAoUUV2ZW50OjpVc2VyICsgMSkKKworc3Ry
dWN0IERSVEV2ZW50UXVldWUgeworICAgIFFFdmVudCogbV9ldmVudDsKKyAgICBpbnQgbV9kZWxh
eTsKK307CisKK3N0YXRpYyBEUlRFdmVudFF1ZXVlIGV2ZW50UXVldWVbMTAyNF07CitzdGF0aWMg
dW5zaWduZWQgZW5kT2ZRdWV1ZTsKK3N0YXRpYyB1bnNpZ25lZCBzdGFydE9mUXVldWU7CisKK0V2
ZW50U2VuZGVyOjpFdmVudFNlbmRlcihRV2ViUGFnZSogcGFyZW50KQorICAgIDogUU9iamVjdChw
YXJlbnQpCisjaWZuZGVmIFFUX05PX0dFU1RVUkVTCisgICAgLCBtX3RhcEdlc3R1cmUocGFyZW50
KQorICAgICwgbV90YXBBbmRIb2xkR2VzdHVyZShwYXJlbnQpCisjZW5kaWYKK3sKKyAgICBtX3Bh
Z2UgPSBwYXJlbnQ7CisgICAgbV9tb3VzZUJ1dHRvblByZXNzZWQgPSBmYWxzZTsKKyAgICBtX2Ry
YWcgPSBmYWxzZTsKKyAgICBtZW1zZXQoZXZlbnRRdWV1ZSwgMCwgc2l6ZW9mKGV2ZW50UXVldWUp
KTsKKyAgICBlbmRPZlF1ZXVlID0gMDsKKyAgICBzdGFydE9mUXVldWUgPSAwOworICAgIG1fZXZl
bnRMb29wID0gMDsKKyAgICBtX2N1cnJlbnRCdXR0b24gPSAwOworICAgIG1fY3VycmVudERyYWdB
Y3Rpb25zQWxsb3dlZCA9IDA7CisgICAgcmVzZXRDbGlja0NvdW50KCk7CisgICAgbV9wYWdlLT52
aWV3KCktPmluc3RhbGxFdmVudEZpbHRlcih0aGlzKTsKKyAgICAvLyBUaGlzIGlzIGEgaGFjayB0
aGF0IHdvcmtzIGJlY2F1c2Ugd2Ugbm9ybWFsbHkgc2Nyb2xsIDYwIHBpeGVscyAoMyoyMCkgcGVy
IHRpY2ssIGJ1dCBBcHBsZSBzY3JvbGxzIDEyMC4KKyAgICAvLyBCdXQgQXBwbGUgYWxzbyBoYXMg
YSBidWcgd2hlcmUgdGhleSByZXBvcnQgbGluZXMgaW5zdGVhZCBvZiB0aWNrcyBpbiBQbGF0Zm9y
bVdoZWVsRXZlbnQsIG1ha2luZyAyIGxpbmVzID0gNDAgcGl4ZWxzIG1hdGNoLgorICAgIFFBcHBs
aWNhdGlvbjo6c2V0V2hlZWxTY3JvbGxMaW5lcygyKTsKK30KKworc3RhdGljIFF0OjpLZXlib2Fy
ZE1vZGlmaWVycyBnZXRNb2RpZmllcnMoY29uc3QgUVN0cmluZ0xpc3QmIG1vZGlmaWVycykKK3sK
KyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZzID0gMDsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG1vZGlmaWVycy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBRU3RyaW5nJiBt
ID0gbW9kaWZpZXJzLmF0KGkpOworICAgICAgICBpZiAobSA9PSAiY3RybEtleSIpCisgICAgICAg
ICAgICBtb2RpZnMgfD0gUXQ6OkNvbnRyb2xNb2RpZmllcjsKKyAgICAgICAgZWxzZSBpZiAobSA9
PSAic2hpZnRLZXkiKQorICAgICAgICAgICAgbW9kaWZzIHw9IFF0OjpTaGlmdE1vZGlmaWVyOwor
ICAgICAgICBlbHNlIGlmIChtID09ICJhbHRLZXkiKQorICAgICAgICAgICAgbW9kaWZzIHw9IFF0
OjpBbHRNb2RpZmllcjsKKyAgICAgICAgZWxzZSBpZiAobSA9PSAibWV0YUtleSIpCisgICAgICAg
ICAgICBtb2RpZnMgfD0gUXQ6Ok1ldGFNb2RpZmllcjsKKyAgICB9CisgICAgcmV0dXJuIG1vZGlm
czsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6bW91c2VEb3duKGludCBidXR0b24sIGNvbnN0IFFT
dHJpbmdMaXN0JiBtb2RpZmllcnMpCit7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlm
cyA9IGdldE1vZGlmaWVycyhtb2RpZmllcnMpOworICAgIFF0OjpNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbjsKKyAgICBzd2l0Y2ggKGJ1dHRvbikgeworICAgIGNhc2UgMDoKKyAgICAgICAgbW91c2VC
dXR0b24gPSBRdDo6TGVmdEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAg
ICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpNaWRCdXR0b247CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMjoKKyAgICAgICAgbW91c2VCdXR0b24gPSBRdDo6UmlnaHRCdXR0b247CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgLy8gZmFzdC9ldmVudHMvbW91c2UtY2xpY2stZXZl
bnRzIGV4cGVjdHMgdGhlIDR0aCBidXR0b24gdG8gYmUgdHJlYXRlZCBhcyB0aGUgbWlkZGxlIGJ1
dHRvbgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpNaWRCdXR0b247CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIG1vdXNlQnV0dG9uID0gUXQ6OkxlZnRCdXR0b247Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIG9ubHkgY29uc2lkZXIgYSBjbGljayB0byBj
b3VudCwgYW4gZXZlbnQgb3JpZ2luYXRlZCBieSB0aGUKKyAgICAvLyBzYW1lIHByZXZpb3VzIGJ1
dHRvbiBhbmQgYXQgdGhlIHNhbWUgcG9zaXRpb24uCisgICAgaWYgKG1fY3VycmVudEJ1dHRvbiA9
PSBidXR0b24KKyAgICAgICAgJiYgbV9tb3VzZVBvcyA9PSBtX2NsaWNrUG9zCisgICAgICAgICYm
IG1fY2xpY2tUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2NsaWNrQ291bnQrKzsKKyAgICBl
bHNlCisgICAgICAgIG1fY2xpY2tDb3VudCA9IDE7CisKKyAgICBtX2N1cnJlbnRCdXR0b24gPSBi
dXR0b247CisgICAgbV9jbGlja1BvcyA9IG1fbW91c2VQb3M7CisgICAgbV9tb3VzZUJ1dHRvbnMg
fD0gbW91c2VCdXR0b247CisKKy8vICAgICBxRGVidWcoKSA8PCAiRXZlbnRTZW5kZXI6Om1vdXNl
RG93biIgPDwgZnJhbWU7CisgICAgUUV2ZW50KiBldmVudDsKKyAgICBpZiAoaXNHcmFwaGljc0Jh
c2VkKCkpIHsKKyAgICAgICAgZXZlbnQgPSBjcmVhdGVHcmFwaGljc1NjZW5lTW91c2VFdmVudCgo
bV9jbGlja0NvdW50ID09IDIpID8KKyAgICAgICAgICAgICAgICAgICAgUUV2ZW50OjpHcmFwaGlj
c1NjZW5lTW91c2VEb3VibGVDbGljayA6IFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlUHJlc3Ms
CisgICAgICAgICAgICAgICAgICAgIG1fbW91c2VQb3MsIG1fbW91c2VQb3MsIG1vdXNlQnV0dG9u
LCBtX21vdXNlQnV0dG9ucywgbW9kaWZzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBldmVudCA9
IG5ldyBRTW91c2VFdmVudCgobV9jbGlja0NvdW50ID09IDIpID8gUUV2ZW50OjpNb3VzZUJ1dHRv
bkRibENsaWNrIDoKKyAgICAgICAgICAgICAgICAgICAgUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNz
LCBtX21vdXNlUG9zLCBtX21vdXNlUG9zLAorICAgICAgICAgICAgICAgICAgICBtb3VzZUJ1dHRv
biwgbV9tb3VzZUJ1dHRvbnMsIG1vZGlmcyk7CisgICAgfQorCisgICAgc2VuZE9yUXVldWVFdmVu
dChldmVudCk7CisKKyAgICBtX2NsaWNrVGltZXIuc3RhcnQoUUFwcGxpY2F0aW9uOjpkb3VibGVD
bGlja0ludGVydmFsKCksIHRoaXMpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjptb3VzZVVwKGlu
dCBidXR0b24pCit7CisgICAgUXQ6Ok1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uOworICAgIHN3aXRj
aCAoYnV0dG9uKSB7CisgICAgY2FzZSAwOgorICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpMZWZ0
QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIG1vdXNlQnV0dG9u
ID0gUXQ6Ok1pZEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBt
b3VzZUJ1dHRvbiA9IFF0OjpSaWdodEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAz
OgorICAgICAgICAvLyBmYXN0L2V2ZW50cy9tb3VzZS1jbGljay1ldmVudHMgZXhwZWN0cyB0aGUg
NHRoIGJ1dHRvbiB0byBiZSB0cmVhdGVkIGFzIHRoZSBtaWRkbGUgYnV0dG9uCisgICAgICAgIG1v
dXNlQnV0dG9uID0gUXQ6Ok1pZEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgbW91c2VCdXR0b24gPSBRdDo6TGVmdEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgbV9tb3VzZUJ1dHRvbnMgJj0gfm1vdXNlQnV0dG9uOworCisvLyAgICAgcURl
YnVnKCkgPDwgIkV2ZW50U2VuZGVyOjptb3VzZVVwIiA8PCBmcmFtZTsKKyAgICBRRXZlbnQqIGV2
ZW50OworICAgIGlmIChpc0dyYXBoaWNzQmFzZWQoKSkgeworICAgICAgICBldmVudCA9IGNyZWF0
ZUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KFFFdmVudDo6R3JhcGhpY3NTY2VuZU1vdXNlUmVsZWFz
ZSwKKyAgICAgICAgICAgICAgICAgICAgbV9tb3VzZVBvcywgbV9tb3VzZVBvcywgbW91c2VCdXR0
b24sIG1fbW91c2VCdXR0b25zLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZXZlbnQgPSBuZXcgUU1vdXNlRXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UsCisg
ICAgICAgICAgICAgICAgICAgIG1fbW91c2VQb3MsIG1fbW91c2VQb3MsIG1vdXNlQnV0dG9uLCBt
X21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOworICAgIH0KKworICAgIHNlbmRPclF1ZXVl
RXZlbnQoZXZlbnQpOworCisgICAgaWYgKG1fY3VycmVudERyYWdEYXRhLnVybHMoKS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGV2ZW50ID0gbmV3IFFEcm9wRXZlbnQobV9tb3Vz
ZVBvcywgbV9jdXJyZW50RHJhZ0FjdGlvbnNBbGxvd2VkLCAmbV9jdXJyZW50RHJhZ0RhdGEsIG1f
bW91c2VCdXR0b25zLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgc2VuZEV2ZW50KG1fcGFnZSwgZXZl
bnQpOworICAgIG1fY3VycmVudERyYWdEYXRhLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXI6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSkKK3sKKy8vICAgICBxRGVidWcoKSA8PCAiRXZl
bnRTZW5kZXI6Om1vdXNlTW92ZVRvIiA8PCB4IDw8IHk7CisgICAgbV9tb3VzZVBvcyA9IFFQb2lu
dCh4LCB5KTsKKworICAgIFFFdmVudCogZXZlbnQ7CisgICAgaWYgKGlzR3JhcGhpY3NCYXNlZCgp
KSB7CisgICAgICAgIGV2ZW50ID0gY3JlYXRlR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQoUUV2ZW50
OjpHcmFwaGljc1NjZW5lTW91c2VNb3ZlLAorICAgICAgICAgICAgICAgICAgICBtX21vdXNlUG9z
LCBtX21vdXNlUG9zLCBRdDo6Tm9CdXR0b24sIG1fbW91c2VCdXR0b25zLCBRdDo6Tm9Nb2RpZmll
cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXZlbnQgPSBuZXcgUU1vdXNlRXZlbnQoUUV2ZW50
OjpNb3VzZU1vdmUsCisgICAgICAgICAgICAgICAgICAgIG1fbW91c2VQb3MsIG1fbW91c2VQb3Ms
IFF0OjpOb0J1dHRvbiwgbV9tb3VzZUJ1dHRvbnMsIFF0OjpOb01vZGlmaWVyKTsKKyAgICB9CisK
KyAgICBzZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKKworICAgIGlmIChtX2N1cnJlbnREcmFnRGF0
YS51cmxzKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRdDo6TW91c2VCdXR0
b25zIG1vdXNlQnV0dG9ucyA9IG1fbW91c2VCdXR0b25zIHwgUXQ6OkxlZnRCdXR0b247CisgICAg
ZXZlbnQgPSBuZXcgUURyYWdNb3ZlRXZlbnQobV9tb3VzZVBvcywgbV9jdXJyZW50RHJhZ0FjdGlv
bnNBbGxvd2VkLCAmbV9jdXJyZW50RHJhZ0RhdGEsIG1vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZp
ZXIpOworICAgIHNlbmRFdmVudChtX3BhZ2UsIGV2ZW50KTsKK30KKworLy8gU2ltdWxhdGVzIGEg
bW91c2UgZG93biBldmVudCBmb3IgZHJhZyB3aXRob3V0IHNlbmRpbmcgYW4gYWN0dWFsIG1vdXNl
IGRvd24gZXZlbnQuCit2b2lkIEV2ZW50U2VuZGVyOjpiZWdpbkRyYWdXaXRoRmlsZXMoY29uc3Qg
UVN0cmluZ0xpc3QmIGZpbGVzKQoreworICAgIG1fY3VycmVudERyYWdEYXRhLmNsZWFyKCk7Cisg
ICAgUUxpc3Q8UVVybD4gZmlsZVVybHM7CisgICAgUVVybCBiYXNlVXJsID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+YmFzZVVybCgpOworICAgIGZvcmVhY2ggKGNvbnN0IFFTdHJpbmcmIGZpbGUsIGZp
bGVzKSB7CisgICAgICAgIFFVcmwgcmVzb2x2ZWRVcmwgPSBiYXNlVXJsLnJlc29sdmVkKGZpbGUp
OworICAgICAgICBmaWxlVXJscy5hcHBlbmQocmVzb2x2ZWRVcmwpOworICAgIH0KKworICAgIG1f
Y3VycmVudERyYWdEYXRhLnNldFVybHMoZmlsZVVybHMpOworICAgIG1fY3VycmVudERyYWdBY3Rp
b25zQWxsb3dlZCA9IFF0OjpDb3B5QWN0aW9uOworICAgIFF0OjpNb3VzZUJ1dHRvbnMgbW91c2VC
dXR0b25zID0gbV9tb3VzZUJ1dHRvbnMgfCBRdDo6TGVmdEJ1dHRvbjsKKyAgICBRRHJhZ0VudGVy
RXZlbnQqIGV2ZW50ID0gbmV3IFFEcmFnRW50ZXJFdmVudChtX21vdXNlUG9zLCBtX2N1cnJlbnRE
cmFnQWN0aW9uc0FsbG93ZWQsICZtX2N1cnJlbnREcmFnRGF0YSwgbW91c2VCdXR0b25zLCBRdDo6
Tm9Nb2RpZmllcik7CisgICAgc2VuZEV2ZW50KG1fcGFnZSwgZXZlbnQpOworfQorCisjaWZuZGVm
IFFUX05PX1dIRUVMRVZFTlQKK3ZvaWQgRXZlbnRTZW5kZXI6Om1vdXNlU2Nyb2xsQnkoaW50IHRp
Y2tzWCwgaW50IHRpY2tzWSkKK3sKKyAgICBjb25zdCBpbnQgdGlja1N0ZXAgPSBRQXBwbGljYXRp
b246OndoZWVsU2Nyb2xsTGluZXMoKSAqIDIwOworICAgIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5
KCh0aWNrc1ggKiB0aWNrU3RlcCksICh0aWNrc1kgKiB0aWNrU3RlcCkpOworfQorCit2b2lkIEV2
ZW50U2VuZGVyOjpjb250aW51b3VzTW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCit7CisgICAg
Ly8gY29udGludW91c01vdXNlU2Nyb2xsQnkoKSBtaW1pY3MgZGV2aWNlcyB0aGF0IHNlbmQgZmlu
ZS1ncmFpbmVkIHNjcm9sbCBldmVudHMgd2hlcmUgdGhlICdkZWx0YScgc3BlY2lmaWVkIGlzIG5v
dCB0aGUgdXN1YWwKKyAgICAvLyBtdWx0aXBsZSBvZiAxMjAuIFNlZSBodHRwOi8vZG9jLnF0Lm5v
a2lhLmNvbS80LjYvcXdoZWVsZXZlbnQuaHRtbCNkZWx0YSBmb3IgYSBnb29kIGV4cGxhbmF0aW9u
IG9mIHRoaXMuCisKKyAgICAvLyBBIHdoZWVsIGRlbHRhIG9mIDEyMCAoaW4gMS84IGRlZ3JlZXMp
IGNvcnJlc3BvbmRzIHRvIG9uZSB3aGVlbCB0aWNrLCBhbmQgd2Ugc2Nyb2xsIHRpY2tTdGVwIHBp
eGVscyBwZXIgd2hlZWwgdGljay4KKyAgICBjb25zdCBpbnQgdGlja1N0ZXAgPSBRQXBwbGljYXRp
b246OndoZWVsU2Nyb2xsTGluZXMoKSAqIDIwOworICAgIGlmICh4KSB7CisgICAgICAgIFFFdmVu
dCogZXZlbnQ7CisgICAgICAgIGlmIChpc0dyYXBoaWNzQmFzZWQoKSkgeworICAgICAgICAgICAg
ZXZlbnQgPSBjcmVhdGVHcmFwaGljc1NjZW5lV2hlZWxFdmVudChRRXZlbnQ6OkdyYXBoaWNzU2Nl
bmVXaGVlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbW91c2VQb3MsIG1fbW91c2VQb3Ms
ICh4ICogMTIwKSAvIHRpY2tTdGVwLCBRdDo6Tm9Nb2RpZmllciwgUXQ6Okhvcml6b250YWwpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGV2ZW50ID0gbmV3IFFXaGVlbEV2ZW50KG1fbW91
c2VQb3MsIG1fbW91c2VQb3MsICh4ICogMTIwKSAvIHRpY2tTdGVwLCBtX21vdXNlQnV0dG9ucywg
UXQ6Ok5vTW9kaWZpZXIsIFF0OjpIb3Jpem9udGFsKTsKKworICAgICAgICBzZW5kT3JRdWV1ZUV2
ZW50KGV2ZW50KTsKKyAgICB9CisgICAgaWYgKHkpIHsKKyAgICAgICAgUUV2ZW50KiBldmVudDsK
KyAgICAgICAgaWYgKGlzR3JhcGhpY3NCYXNlZCgpKSB7CisgICAgICAgICAgICBldmVudCA9IGNy
ZWF0ZUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KFFFdmVudDo6R3JhcGhpY3NTY2VuZVdoZWVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9tb3VzZVBvcywgbV9tb3VzZVBvcywgKHkgKiAxMjAp
IC8gdGlja1N0ZXAsIFF0OjpOb01vZGlmaWVyLCBRdDo6VmVydGljYWwpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGV2ZW50ID0gbmV3IFFXaGVlbEV2ZW50KG1fbW91c2VQb3MsIG1fbW91
c2VQb3MsICh5ICogMTIwKSAvIHRpY2tTdGVwLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZp
ZXIsIFF0OjpWZXJ0aWNhbCk7CisKKyAgICAgICAgc2VuZE9yUXVldWVFdmVudChldmVudCk7Cisg
ICAgfQorfQorI2VuZGlmCisKK3ZvaWQgRXZlbnRTZW5kZXI6OmxlYXBGb3J3YXJkKGludCBtcykK
K3sKKyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkgPSBtczsKKyAgICAvL3FEZWJ1
ZygpIDw8ICJFdmVudFNlbmRlcjo6bGVhcEZvcndhcmQiIDw8IG1zOworfQorCit2b2lkIEV2ZW50
U2VuZGVyOjprZXlEb3duKGNvbnN0IFFTdHJpbmcmIHN0cmluZywgY29uc3QgUVN0cmluZ0xpc3Qm
IG1vZGlmaWVycywgdW5zaWduZWQgaW50IGxvY2F0aW9uKQoreworICAgIFFTdHJpbmcgcyA9IHN0
cmluZzsKKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZzID0gZ2V0TW9kaWZpZXJzKG1v
ZGlmaWVycyk7CisgICAgaWYgKGxvY2F0aW9uID09IDMpCisgICAgICAgIG1vZGlmcyB8PSBRdDo6
S2V5cGFkTW9kaWZpZXI7CisgICAgaW50IGNvZGUgPSAwOworICAgIGlmIChzdHJpbmcubGVuZ3Ro
KCkgPT0gMSkgeworICAgICAgICBjb2RlID0gc3RyaW5nLnVuaWNvZGUoKS0+dW5pY29kZSgpOwor
ICAgICAgICAvL3FEZWJ1ZygpIDw8ICI+Pj4+Pj4+Pj4ga2V5RG93biIgPDwgY29kZSA8PCAoY2hh
ciljb2RlOworICAgICAgICAvLyBtYXAgc3BlY2lhbCBrZXljb2RlcyB1c2VkIGJ5IHRoZSB0ZXN0
cyB0byBzb21ldGhpbmcgdGhhdCB3b3JrcyBmb3IgUXQvWDExCisgICAgICAgIGlmIChjb2RlID09
ICdccicpIHsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1JldHVybjsKKyAgICAgICAgfSBl
bHNlIGlmIChjb2RlID09ICdcdCcpIHsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1RhYjsK
KyAgICAgICAgICAgIGlmIChtb2RpZnMgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIpCisgICAgICAgICAg
ICAgICAgY29kZSA9IFF0OjpLZXlfQmFja3RhYjsKKyAgICAgICAgICAgIHMgPSBRU3RyaW5nKCk7
CisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBLRVlDT0RFX0RFTCB8fCBjb2RlID09IEtFWUNP
REVfQkFDS1NQQUNFKSB7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9CYWNrc3BhY2U7Cisg
ICAgICAgICAgICBpZiAobW9kaWZzID09IFF0OjpBbHRNb2RpZmllcikKKyAgICAgICAgICAgICAg
ICBtb2RpZnMgPSBRdDo6Q29udHJvbE1vZGlmaWVyOworICAgICAgICAgICAgcyA9IFFTdHJpbmco
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjb2RlID09ICdvJyAmJiBtb2RpZnMgPT0gUXQ6OkNvbnRy
b2xNb2RpZmllcikgeworICAgICAgICAgICAgLy8gTWltaWMgdGhlIGVtYWNzIGN0cmwtbyBiaW5k
aW5nIG9uIE1hYyBieSBpbnNlcnRpbmcgYSBwYXJhZ3JhcGgKKyAgICAgICAgICAgIC8vIHNlcGFy
YXRvciBhbmQgdGhlbiBwdXR0aW5nIHRoZSBjdXJzb3IgYmFjayB0byBpdHMgb3JpZ2luYWwKKyAg
ICAgICAgICAgIC8vIHBvc2l0aW9uLiBBbGxvd3MgdXMgdG8gcGFzcyBlbWFjcy1jdHJsLW8uaHRt
bAorICAgICAgICAgICAgcyA9IFFMYXRpbjFTdHJpbmcoIlxuIik7CisgICAgICAgICAgICBjb2Rl
ID0gJ1xuJzsKKyAgICAgICAgICAgIG1vZGlmcyA9IDA7CisgICAgICAgICAgICBRS2V5RXZlbnQg
ZXZlbnQoUUV2ZW50OjpLZXlQcmVzcywgY29kZSwgbW9kaWZzLCBzKTsKKyAgICAgICAgICAgIHNl
bmRFdmVudChtX3BhZ2UsICZldmVudCk7CisgICAgICAgICAgICBRS2V5RXZlbnQgZXZlbnQyKFFF
dmVudDo6S2V5UmVsZWFzZSwgY29kZSwgbW9kaWZzLCBzKTsKKyAgICAgICAgICAgIHNlbmRFdmVu
dChtX3BhZ2UsICZldmVudDIpOworICAgICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAgICAg
ICAgIGNvZGUgPSBRdDo6S2V5X0xlZnQ7CisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSAneScg
JiYgbW9kaWZzID09IFF0OjpDb250cm9sTW9kaWZpZXIpIHsKKyAgICAgICAgICAgIHMgPSBRTGF0
aW4xU3RyaW5nKCJjIik7CisgICAgICAgICAgICBjb2RlID0gJ2MnOworICAgICAgICB9IGVsc2Ug
aWYgKGNvZGUgPT0gJ2snICYmIG1vZGlmcyA9PSBRdDo6Q29udHJvbE1vZGlmaWVyKSB7CisgICAg
ICAgICAgICBzID0gUUxhdGluMVN0cmluZygieCIpOworICAgICAgICAgICAgY29kZSA9ICd4JzsK
KyAgICAgICAgfSBlbHNlIGlmIChjb2RlID09ICdhJyAmJiBtb2RpZnMgPT0gUXQ6OkNvbnRyb2xN
b2RpZmllcikgeworICAgICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUg
PSBRdDo6S2V5X0hvbWU7CisgICAgICAgICAgICBtb2RpZnMgPSAwOworICAgICAgICB9IGVsc2Ug
aWYgKGNvZGUgPT0gS0VZQ09ERV9MRUZUQVJST1cpIHsKKyAgICAgICAgICAgIHMgPSBRU3RyaW5n
KCk7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9MZWZ0OworICAgICAgICAgICAgaWYgKG1v
ZGlmcyAmIFF0OjpNZXRhTW9kaWZpZXIpIHsKKyAgICAgICAgICAgICAgICBjb2RlID0gUXQ6Oktl
eV9Ib21lOworICAgICAgICAgICAgICAgIG1vZGlmcyAmPSB+UXQ6Ok1ldGFNb2RpZmllcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IEtFWUNPREVfUklHSFRBUlJP
VykgeworICAgICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6
S2V5X1JpZ2h0OworICAgICAgICAgICAgaWYgKG1vZGlmcyAmIFF0OjpNZXRhTW9kaWZpZXIpIHsK
KyAgICAgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9FbmQ7CisgICAgICAgICAgICAgICAgbW9k
aWZzICY9IH5RdDo6TWV0YU1vZGlmaWVyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKGNvZGUgPT0gS0VZQ09ERV9VUEFSUk9XKSB7CisgICAgICAgICAgICBzID0gUVN0cmluZygp
OworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfVXA7CisgICAgICAgICAgICBpZiAobW9kaWZz
ICYgUXQ6Ok1ldGFNb2RpZmllcikgeworICAgICAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1Bh
Z2VVcDsKKyAgICAgICAgICAgICAgICBtb2RpZnMgJj0gflF0OjpNZXRhTW9kaWZpZXI7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBLRVlDT0RFX0RPV05BUlJPVykg
eworICAgICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5
X0Rvd247CisgICAgICAgICAgICBpZiAobW9kaWZzICYgUXQ6Ok1ldGFNb2RpZmllcikgeworICAg
ICAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1BhZ2VEb3duOworICAgICAgICAgICAgICAgIG1v
ZGlmcyAmPSB+UXQ6Ok1ldGFNb2RpZmllcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmIChjb2RlID09ICdhJyAmJiBtb2RpZnMgPT0gUXQ6OkNvbnRyb2xNb2RpZmllcikgeworICAg
ICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X0hvbWU7
CisgICAgICAgICAgICBtb2RpZnMgPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNv
ZGUgPSBzdHJpbmcudW5pY29kZSgpLT50b1VwcGVyKCkudW5pY29kZSgpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vcURlYnVnKCkgPDwgIj4+Pj4+Pj4+PiBrZXlEb3duIiA8PCBzdHJpbmc7CisK
KyAgICAgICAgaWYgKHN0cmluZy5zdGFydHNXaXRoKFFMYXRpbjFDaGFyKCdGJykpICYmIHN0cmlu
Zy5jb3VudCgpIDw9IDMpIHsKKyAgICAgICAgICAgIHMgPSBzLm1pZCgxKTsKKyAgICAgICAgICAg
IGludCBmdW5jdGlvbktleSA9IHMudG9JbnQoKTsKKyAgICAgICAgICAgIFFfQVNTRVJUKGZ1bmN0
aW9uS2V5ID49IDEgJiYgZnVuY3Rpb25LZXkgPD0gMzUpOworICAgICAgICAgICAgY29kZSA9IFF0
OjpLZXlfRjEgKyAoZnVuY3Rpb25LZXkgLSAxKTsKKyAgICAgICAgLy8gbWFwIHNwZWNpYWwga2V5
Y29kZSBzdHJpbmdzIHVzZWQgYnkgdGhlIHRlc3RzIHRvIHNvbWV0aGluZyB0aGF0IHdvcmtzIGZv
ciBRdC9YMTEKKyAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gUUxhdGluMVN0cmluZygibGVm
dEFycm93IikpIHsKKyAgICAgICAgICAgIHMgPSBRU3RyaW5nKCk7CisgICAgICAgICAgICBjb2Rl
ID0gUXQ6OktleV9MZWZ0OworICAgICAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBRTGF0aW4xU3Ry
aW5nKCJyaWdodEFycm93IikpIHsKKyAgICAgICAgICAgIHMgPSBRU3RyaW5nKCk7CisgICAgICAg
ICAgICBjb2RlID0gUXQ6OktleV9SaWdodDsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcgPT0g
UUxhdGluMVN0cmluZygidXBBcnJvdyIpKSB7CisgICAgICAgICAgICBzID0gUVN0cmluZygpOwor
ICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfVXA7CisgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5n
ID09IFFMYXRpbjFTdHJpbmcoImRvd25BcnJvdyIpKSB7CisgICAgICAgICAgICBzID0gUVN0cmlu
ZygpOworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfRG93bjsKKyAgICAgICAgfSBlbHNlIGlm
IChzdHJpbmcgPT0gUUxhdGluMVN0cmluZygicGFnZVVwIikpIHsKKyAgICAgICAgICAgIHMgPSBR
U3RyaW5nKCk7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9QYWdlVXA7CisgICAgICAgIH0g
ZWxzZSBpZiAoc3RyaW5nID09IFFMYXRpbjFTdHJpbmcoInBhZ2VEb3duIikpIHsKKyAgICAgICAg
ICAgIHMgPSBRU3RyaW5nKCk7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9QYWdlRG93bjsK
KyAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gUUxhdGluMVN0cmluZygiaG9tZSIpKSB7Cisg
ICAgICAgICAgICBzID0gUVN0cmluZygpOworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfSG9t
ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gUUxhdGluMVN0cmluZygiZW5kIikpIHsK
KyAgICAgICAgICAgIHMgPSBRU3RyaW5nKCk7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9F
bmQ7CisgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nID09IFFMYXRpbjFTdHJpbmcoImluc2VydCIp
KSB7CisgICAgICAgICAgICBzID0gUVN0cmluZygpOworICAgICAgICAgICAgY29kZSA9IFF0OjpL
ZXlfSW5zZXJ0OworICAgICAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBRTGF0aW4xU3RyaW5nKCJk
ZWxldGUiKSkgeworICAgICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUg
PSBRdDo6S2V5X0RlbGV0ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gUUxhdGluMVN0
cmluZygicHJpbnRTY3JlZW4iKSkgeworICAgICAgICAgICAgcyA9IFFTdHJpbmcoKTsKKyAgICAg
ICAgICAgIGNvZGUgPSBRdDo6S2V5X1ByaW50OworICAgICAgICB9IGVsc2UgaWYgKHN0cmluZyA9
PSBRTGF0aW4xU3RyaW5nKCJtZW51IikpIHsKKyAgICAgICAgICAgIHMgPSBRU3RyaW5nKCk7Cisg
ICAgICAgICAgICBjb2RlID0gUXQ6OktleV9NZW51OworICAgICAgICB9CisgICAgfQorICAgIFFL
ZXlFdmVudCBldmVudChRRXZlbnQ6OktleVByZXNzLCBjb2RlLCBtb2RpZnMsIHMpOworICAgIHNl
bmRFdmVudChtX3BhZ2UsICZldmVudCk7CisgICAgUUtleUV2ZW50IGV2ZW50MihRRXZlbnQ6Oktl
eVJlbGVhc2UsIGNvZGUsIG1vZGlmcywgcyk7CisgICAgc2VuZEV2ZW50KG1fcGFnZSwgJmV2ZW50
Mik7Cit9CisKK1FTdHJpbmdMaXN0IEV2ZW50U2VuZGVyOjpjb250ZXh0Q2xpY2soKQoreworICAg
IFFNb3VzZUV2ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgbV9tb3VzZVBvcywg
UXQ6OlJpZ2h0QnV0dG9uLCBRdDo6UmlnaHRCdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBz
ZW5kRXZlbnQobV9wYWdlLCAmZXZlbnQpOworICAgIFFNb3VzZUV2ZW50IGV2ZW50MihRRXZlbnQ6
Ok1vdXNlQnV0dG9uUmVsZWFzZSwgbV9tb3VzZVBvcywgUXQ6OlJpZ2h0QnV0dG9uLCBRdDo6Umln
aHRCdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBzZW5kRXZlbnQobV9wYWdlLCAmZXZlbnQy
KTsKKworICAgIGlmIChpc0dyYXBoaWNzQmFzZWQoKSkgeworICAgICAgICBRR3JhcGhpY3NTY2Vu
ZUNvbnRleHRNZW51RXZlbnQgY3R4RXZlbnQoUUV2ZW50OjpHcmFwaGljc1NjZW5lQ29udGV4dE1l
bnUpOworICAgICAgICBjdHhFdmVudC5zZXRSZWFzb24oUUdyYXBoaWNzU2NlbmVDb250ZXh0TWVu
dUV2ZW50OjpNb3VzZSk7CisgICAgICAgIGN0eEV2ZW50LnNldFBvcyhtX21vdXNlUG9zKTsKKyAg
ICAgICAgV2ViVmlld0dyYXBoaWNzQmFzZWQqIHZpZXcgPSBxb2JqZWN0X2Nhc3Q8V2ViVmlld0dy
YXBoaWNzQmFzZWQqPihtX3BhZ2UtPnZpZXcoKSk7CisgICAgICAgIGlmICh2aWV3KQorICAgICAg
ICAgICAgc2VuZEV2ZW50KHZpZXctPmdyYXBoaWNzVmlldygpLCAmY3R4RXZlbnQpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIFFDb250ZXh0TWVudUV2ZW50IGN0eEV2ZW50KFFDb250ZXh0TWVudUV2
ZW50OjpNb3VzZSwgbV9tb3VzZVBvcyk7CisgICAgICAgIHNlbmRFdmVudChtX3BhZ2UtPnZpZXco
KSwgJmN0eEV2ZW50KTsKKyAgICB9CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Ojpjb250ZXh0TWVudShtX3BhZ2UtPmhhbmRsZSgpKTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6
c2NoZWR1bGVBc3luY2hyb25vdXNDbGljaygpCit7CisgICAgUU1vdXNlRXZlbnQqIGV2ZW50ID0g
bmV3IFFNb3VzZUV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgbV9tb3VzZVBvcywgUXQ6
OkxlZnRCdXR0b24sIFF0OjpSaWdodEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworICAgIHBvc3RF
dmVudChtX3BhZ2UsIGV2ZW50KTsKKyAgICBRTW91c2VFdmVudCogZXZlbnQyID0gbmV3IFFNb3Vz
ZUV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlLCBtX21vdXNlUG9zLCBRdDo6TGVmdEJ1
dHRvbiwgUXQ6OlJpZ2h0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllcik7CisgICAgcG9zdEV2ZW50KG1f
cGFnZSwgZXZlbnQyKTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6YWRkVG91Y2hQb2ludChpbnQg
eCwgaW50IHkpCit7CisgICAgY29uc3QgaW50IGlkID0gbV90b3VjaFBvaW50cy5pc0VtcHR5KCkg
PyAwIDogbV90b3VjaFBvaW50cy5sYXN0KCkuaWQoKSArIDE7CisgICAgY29uc3QgUVBvaW50RiBw
b3MoeCwgeSk7CisgICAgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgcG9pbnQoaWQpOworICAgIHBv
aW50LnNldFBvcyhwb3MpOworICAgIHBvaW50LnNldFN0YXJ0UG9zKHBvcyk7CisgICAgcG9pbnQu
c2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRQcmVzc2VkKTsKKyAgICBpZiAoIW1fdG91Y2hQb2ludFJh
ZGl1cy5pc051bGwoKSkKKyAgICAgICAgcG9pbnQuc2V0UmVjdChRUmVjdEYocG9zIC0gbV90b3Vj
aFBvaW50UmFkaXVzLCBwb3MgKyBtX3RvdWNoUG9pbnRSYWRpdXMpKTsKKyAgICBtX3RvdWNoUG9p
bnRzLmFwcGVuZChwb2ludCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9p
bnQoaW50IGluZGV4LCBpbnQgeCwgaW50IHkpCit7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRl
eCA+PSBtX3RvdWNoUG9pbnRzLmNvdW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0
IFFQb2ludEYgcG9zKHgsIHkpOworICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50ICZwb2ludCA9
IG1fdG91Y2hQb2ludHNbaW5kZXhdOworICAgIHBvaW50LnNldFBvcyhwb3MpOworICAgIHBvaW50
LnNldFN0YXRlKFF0OjpUb3VjaFBvaW50TW92ZWQpOworICAgIGlmICghbV90b3VjaFBvaW50UmFk
aXVzLmlzTnVsbCgpKQorICAgICAgICBwb2ludC5zZXRSZWN0KFFSZWN0Rihwb3MgLSBtX3RvdWNo
UG9pbnRSYWRpdXMsIHBvcyArIG1fdG91Y2hQb2ludFJhZGl1cykpOworfQorCit2b2lkIEV2ZW50
U2VuZGVyOjpzZXRUb3VjaE1vZGlmaWVyKGNvbnN0IFFTdHJpbmcgJm1vZGlmaWVyLCBib29sIGVu
YWJsZSkKK3sKKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllciBtb2QgPSBRdDo6Tm9Nb2RpZmllcjsK
KyAgICBpZiAoIW1vZGlmaWVyLmNvbXBhcmUoUUxhdGluMVN0cmluZygic2hpZnQiKSwgUXQ6OkNh
c2VJbnNlbnNpdGl2ZSkpCisgICAgICAgIG1vZCA9IFF0OjpTaGlmdE1vZGlmaWVyOworICAgIGVs
c2UgaWYgKCFtb2RpZmllci5jb21wYXJlKFFMYXRpbjFTdHJpbmcoImFsdCIpLCBRdDo6Q2FzZUlu
c2Vuc2l0aXZlKSkKKyAgICAgICAgbW9kID0gUXQ6OkFsdE1vZGlmaWVyOworICAgIGVsc2UgaWYg
KCFtb2RpZmllci5jb21wYXJlKFFMYXRpbjFTdHJpbmcoIm1ldGEiKSwgUXQ6OkNhc2VJbnNlbnNp
dGl2ZSkpCisgICAgICAgIG1vZCA9IFF0OjpNZXRhTW9kaWZpZXI7CisgICAgZWxzZSBpZiAoIW1v
ZGlmaWVyLmNvbXBhcmUoUUxhdGluMVN0cmluZygiY3RybCIpLCBRdDo6Q2FzZUluc2Vuc2l0aXZl
KSkKKyAgICAgICAgbW9kID0gUXQ6OkNvbnRyb2xNb2RpZmllcjsKKworICAgIGlmIChlbmFibGUp
CisgICAgICAgIG1fdG91Y2hNb2RpZmllcnMgfD0gbW9kOworICAgIGVsc2UKKyAgICAgICAgbV90
b3VjaE1vZGlmaWVycyAmPSB+bW9kOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjpzZXRUb3VjaFBv
aW50UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKK3sKKyAgICBtX3RvdWNoUG9pbnRS
YWRpdXMgPSBRUG9pbnQocmFkaXVzWCwgcmFkaXVzWSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6
OnRvdWNoU3RhcnQoKQoreworICAgIGlmICghbV90b3VjaEFjdGl2ZSkgeworICAgICAgICBzZW5k
VG91Y2hFdmVudChRRXZlbnQ6OlRvdWNoQmVnaW4pOworICAgICAgICBtX3RvdWNoQWN0aXZlID0g
dHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVw
ZGF0ZSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnRvdWNoTW92ZSgpCit7CisgICAgc2VuZFRv
dWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnRv
dWNoRW5kKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdG91Y2hQb2ludHMuY291bnQo
KTsgKytpKQorICAgICAgICBpZiAobV90b3VjaFBvaW50c1tpXS5zdGF0ZSgpICE9IFF0OjpUb3Vj
aFBvaW50UmVsZWFzZWQpIHsKKyAgICAgICAgICAgIHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VG91
Y2hVcGRhdGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgc2VuZFRvdWNo
RXZlbnQoUUV2ZW50OjpUb3VjaEVuZCk7CisgICAgbV90b3VjaEFjdGl2ZSA9IGZhbHNlOworfQor
Cit2b2lkIEV2ZW50U2VuZGVyOjp0b3VjaENhbmNlbCgpCit7CisgICAgc2VuZFRvdWNoRXZlbnQo
UUV2ZW50OjpUb3VjaENhbmNlbCk7CisgICAgbV90b3VjaEFjdGl2ZSA9IGZhbHNlOworfQorCit2
b2lkIEV2ZW50U2VuZGVyOjpjbGVhclRvdWNoUG9pbnRzKCkKK3sKKyAgICBtX3RvdWNoUG9pbnRz
LmNsZWFyKCk7CisgICAgbV90b3VjaE1vZGlmaWVycyA9IFF0OjpLZXlib2FyZE1vZGlmaWVycygp
OworICAgIG1fdG91Y2hBY3RpdmUgPSBmYWxzZTsKKyAgICBtX3RvdWNoUG9pbnRSYWRpdXMgPSBR
UG9pbnQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGlu
ZGV4KQoreworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbV90b3VjaFBvaW50cy5jb3Vu
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RvdWNoUG9pbnRzW2luZGV4XS5zZXRTdGF0
ZShRdDo6VG91Y2hQb2ludFJlbGVhc2VkKTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6Y2FuY2Vs
VG91Y2hQb2ludChpbnQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IE5vIGNhbmNlbGxhdGlvbiBz
dGF0ZSBpbiBRdCA1LCBtYXBwZWQgdG8gcmVsZWFzZSBpbnN0ZWFkLgorICAgIC8vIFBsYXRmb3Jt
VG91Y2hFdmVudCBjb252ZXJzaW9uIGxhdGVyIHdpbGwgbWFwIGFsbCB0b3VjaCBwb2ludHMgdG8K
KyAgICAvLyBjYW5jZWxsZWQuCisgICAgcmVsZWFzZVRvdWNoUG9pbnQoaW5kZXgpOworfQorCit2
b2lkIEV2ZW50U2VuZGVyOjpzZW5kVG91Y2hFdmVudChRRXZlbnQ6OlR5cGUgdHlwZSkKK3sKKyAg
ICBzdGF0aWMgUVRvdWNoRGV2aWNlKiBkZXZpY2UgPSAwOworICAgIGlmICghZGV2aWNlKSB7Cisg
ICAgICAgIGRldmljZSA9IG5ldyBRVG91Y2hEZXZpY2U7CisgICAgICAgIGRldmljZS0+c2V0VHlw
ZShRVG91Y2hEZXZpY2U6OlRvdWNoU2NyZWVuKTsKKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVy
ZmFjZTo6cmVnaXN0ZXJUb3VjaERldmljZShkZXZpY2UpOworICAgIH0KKworICAgIFFUb3VjaEV2
ZW50IGV2ZW50KHR5cGUsIGRldmljZSwgbV90b3VjaE1vZGlmaWVycyk7CisgICAgZXZlbnQuc2V0
VG91Y2hQb2ludHMobV90b3VjaFBvaW50cyk7CisgICAgc2VuZEV2ZW50KG1fcGFnZSwgJmV2ZW50
KTsKKyAgICBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD46Okl0ZXJhdG9yIGl0ID0gbV90
b3VjaFBvaW50cy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtX3RvdWNoUG9pbnRzLmVuZCgp
KSB7CisgICAgICAgIGlmIChpdC0+c3RhdGUoKSA9PSBRdDo6VG91Y2hQb2ludFJlbGVhc2VkKQor
ICAgICAgICAgICAgaXQgPSBtX3RvdWNoUG9pbnRzLmVyYXNlKGl0KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBpdC0+c2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5KTsKKyAg
ICAgICAgICAgICsraXQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNpZm5kZWYgUVRfTk9fR0VT
VFVSRVMKK3ZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVUYXAoaW50IHgsIGludCB5KQoreworICAg
IG1fdGFwR2VzdHVyZS5zZXRQb3NpdGlvbihRUG9pbnRGKHgsIHkpKTsKKyAgICBtX2dlc3R1cmVz
LmNsZWFyKCk7CisgICAgbV9nZXN0dXJlcy5hcHBlbmQoJm1fdGFwR2VzdHVyZSk7CisgICAgUUdl
c3R1cmVFdmVudCBldmVudChtX2dlc3R1cmVzKTsKKyAgICBzZW5kRXZlbnQobV9wYWdlLCAmZXZl
bnQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlTG9uZ1ByZXNzKGludCB4LCBpbnQg
eSkKK3sKKyAgICBtX3RhcEFuZEhvbGRHZXN0dXJlLnNldFBvc2l0aW9uKFFQb2ludEYoeCwgeSkp
OworICAgIG1fZ2VzdHVyZXMuY2xlYXIoKTsKKyAgICBtX2dlc3R1cmVzLmFwcGVuZCgmbV90YXBB
bmRIb2xkR2VzdHVyZSk7CisgICAgUUdlc3R1cmVFdmVudCBldmVudChtX2dlc3R1cmVzKTsKKyAg
ICBzZW5kRXZlbnQobV9wYWdlLCAmZXZlbnQpOworfQorI2VuZGlmCisKK3ZvaWQgRXZlbnRTZW5k
ZXI6Onpvb21QYWdlSW4oKQoreworICAgIGlmIChRV2ViRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5t
YWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNldFpvb21GYWN0b3IoZnJhbWUtPnpvb21GYWN0
b3IoKSAqIFpPT01fU1RFUCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6Onpvb21QYWdlT3V0KCkK
K3sKKyAgICBpZiAoUVdlYkZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCisgICAg
ICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKGZyYW1lLT56b29tRmFjdG9yKCkgLyBaT09NX1NURVAp
OworfQorCit2b2lkIEV2ZW50U2VuZGVyOjp0ZXh0Wm9vbUluKCkKK3sKKyAgICBpZiAoUVdlYkZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5zZXRUZXh0
U2l6ZU11bHRpcGxpZXIoZnJhbWUtPnRleHRTaXplTXVsdGlwbGllcigpICogWk9PTV9TVEVQKTsK
K30KKwordm9pZCBFdmVudFNlbmRlcjo6dGV4dFpvb21PdXQoKQoreworICAgIGlmIChRV2ViRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWUtPnNldFRleHRT
aXplTXVsdGlwbGllcihmcmFtZS0+dGV4dFNpemVNdWx0aXBsaWVyKCkgLyBaT09NX1NURVApOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyOjpzY2FsZVBhZ2VCeShmbG9hdCBzY2FsZUZhY3RvciwgZmxv
YXQgeCwgZmxvYXQgeSkKK3sKKyAgICBpZiAoUVdlYkZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkpCisgICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzY2FsZVBhZ2VCeShm
cmFtZS0+aGFuZGxlKCksIHNjYWxlRmFjdG9yLCBRUG9pbnQoeCwgeSkpOworfQorCitRV2ViRnJh
bWUqIEV2ZW50U2VuZGVyOjpmcmFtZVVuZGVyTW91c2UoKSBjb25zdAoreworICAgIFFXZWJGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworCityZWRvOgorICAgIFFMaXN0PFFXZWJG
cmFtZSo+IGNoaWxkcmVuID0gZnJhbWUtPmNoaWxkRnJhbWVzKCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY2hpbGRyZW4uYXQo
aSktPmdlb21ldHJ5KCkuY29udGFpbnMobV9tb3VzZVBvcykpIHsKKyAgICAgICAgICAgIGZyYW1l
ID0gY2hpbGRyZW4uYXQoaSk7CisgICAgICAgICAgICBnb3RvIHJlZG87CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKGZyYW1lLT5nZW9tZXRyeSgpLmNvbnRhaW5zKG1fbW91c2VQb3MpKQorICAg
ICAgICByZXR1cm4gZnJhbWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6
OnNlbmRPclF1ZXVlRXZlbnQoUUV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBNb3VzZSBtb3ZlIGV2
ZW50cyBhcmUgcXVldWVkIGlmCisgICAgLy8gMS4gQSBwcmV2aW91cyBldmVudCB3YXMgcXVldWVk
LgorICAgIC8vIDIuIEEgZGVsYXkgd2FzIHNldC11cCBieSBsZWFwRm9yd2FyZCgpLgorICAgIC8v
IDMuIEEgY2FsbCB0byBtb3VzZU1vdmVUbyB3aGlsZSB0aGUgbW91c2UgYnV0dG9uIGlzIHByZXNz
ZWQgY291bGQgaW5pdGlhdGUgYSBkcmFnIG9wZXJhdGlvbiwgYW5kIHRoYXQgZG9lcyBub3QgcmV0
dXJuIHVudGlsIG1vdXNlVXAgaXMgcHJvY2Vzc2VkLgorICAgIC8vIFRvIGJlIHNhZmUgYW5kIGF2
b2lkIGEgZGVhZGxvY2ssIHRoaXMgZXZlbnQgaXMgcXVldWVkLgorICAgIGlmIChlbmRPZlF1ZXVl
ID09IHN0YXJ0T2ZRdWV1ZSAmJiAhZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5ICYmICgh
KG1fbW91c2VCdXR0b25QcmVzc2VkICYmIChtX2V2ZW50TG9vcCAmJiBldmVudC0+dHlwZSgpID09
IFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlKSkpKSB7CisgICAgICAgIHNlbmRFdmVudChtX3Bh
Z2UtPnZpZXcoKSwgZXZlbnQpOworICAgICAgICBkZWxldGUgZXZlbnQ7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlKytdLm1fZXZlbnQgPSBldmVudDsK
KyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1fZGVsYXkgPSAwOworICAgIHJlcGxheVNhdmVk
RXZlbnRzKGV2ZW50LT50eXBlKCkgIT0gUUV2ZW50OjpNb3VzZU1vdmUpOworfQorCit2b2lkIEV2
ZW50U2VuZGVyOjpyZXBsYXlTYXZlZEV2ZW50cyhib29sIGZsdXNoKQoreworICAgIGlmIChzdGFy
dE9mUXVldWUgPCBlbmRPZlF1ZXVlKSB7CisgICAgICAgIC8vIEZpcnN0IHNlbmQgYWxsIHRoZSBl
dmVudHMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc2VudAorICAgICAgICB3aGlsZSAoIWV2ZW50UXVl
dWVbc3RhcnRPZlF1ZXVlXS5tX2RlbGF5ICYmIHN0YXJ0T2ZRdWV1ZSA8IGVuZE9mUXVldWUpIHsK
KyAgICAgICAgICAgIFFFdmVudCogZXYgPSBldmVudFF1ZXVlW3N0YXJ0T2ZRdWV1ZSsrXS5tX2V2
ZW50OworICAgICAgICAgICAgcG9zdEV2ZW50KG1fcGFnZS0+dmlldygpLCBldik7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHN0YXJ0T2ZRdWV1ZSA9PSBlbmRPZlF1ZXVlKSB7CisgICAgICAgICAg
ICAvLyBSZXNldCB0aGUgcXVldWUKKyAgICAgICAgICAgIHN0YXJ0T2ZRdWV1ZSA9IDA7CisgICAg
ICAgICAgICBlbmRPZlF1ZXVlID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFFU
ZXN0OjpxV2FpdChldmVudFF1ZXVlW3N0YXJ0T2ZRdWV1ZV0ubV9kZWxheSk7CisgICAgICAgICAg
ICBldmVudFF1ZXVlW3N0YXJ0T2ZRdWV1ZV0ubV9kZWxheSA9IDA7CisgICAgICAgIH0KKyAgICB9
CisgICAgaWYgKCFmbHVzaCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2VuZCBhIG1hcmtl
ciBldmVudCwgaXQgd2lsbCB0ZWxsIHVzIHdoZW4gaXQgaXMgc2FmZSB0byBleGl0IHRoZSBuZXcg
ZXZlbnQgbG9vcAorICAgIFFFdmVudCogZHJ0RXZlbnQgPSBuZXcgUUV2ZW50KChRRXZlbnQ6OlR5
cGUpRFJUX01FU1NBR0VfRE9ORSk7CisgICAgUUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQobV9wYWdl
LT52aWV3KCksIGRydEV2ZW50KTsKKworICAgIC8vIFN0YXJ0IGFuIGV2ZW50IGxvb3AgZm9yIGFz
eW5jIGhhbmRsaW5nIG9mIERyYWcgJiBEcm9wCisgICAgbV9ldmVudExvb3AgPSBuZXcgUUV2ZW50
TG9vcDsKKyAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOworICAgIGRlbGV0ZSBtX2V2ZW50TG9vcDsK
KyAgICBtX2V2ZW50TG9vcCA9IDA7Cit9CisKK2Jvb2wgRXZlbnRTZW5kZXI6OmV2ZW50RmlsdGVy
KFFPYmplY3QqIHdhdGNoZWQsIFFFdmVudCogZXZlbnQpCit7CisgICAgaWYgKHdhdGNoZWQgIT0g
bV9wYWdlLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzd2l0Y2ggKGV2ZW50
LT50eXBlKCkpIHsKKyAgICBjYXNlIFFFdmVudDo6TGVhdmU6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzOgorICAgIGNhc2UgUUV2ZW50OjpH
cmFwaGljc1NjZW5lTW91c2VQcmVzczoKKyAgICAgICAgbV9tb3VzZUJ1dHRvblByZXNzZWQgPSB0
cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6TW91c2VNb3ZlOgorICAgIGNh
c2UgUUV2ZW50OjpHcmFwaGljc1NjZW5lTW91c2VNb3ZlOgorICAgICAgICBpZiAobV9tb3VzZUJ1
dHRvblByZXNzZWQpCisgICAgICAgICAgICBtX2RyYWcgPSB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlOgorICAgIGNhc2UgUUV2ZW50OjpH
cmFwaGljc1NjZW5lTW91c2VSZWxlYXNlOgorICAgICAgICBtX21vdXNlQnV0dG9uUHJlc3NlZCA9
IGZhbHNlOworICAgICAgICBtX2RyYWcgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBEUlRfTUVTU0FHRV9ET05FOgorICAgICAgICBtX2V2ZW50TG9vcC0+ZXhpdCgpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEV2ZW50
U2VuZGVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKK3sKKyAgICBtX2NsaWNrVGltZXIu
c3RvcCgpOworfQorCitRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIEV2ZW50U2VuZGVyOjpjcmVh
dGVHcmFwaGljc1NjZW5lTW91c2VFdmVudChRRXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgUVBvaW50
JiBwb3MsIGNvbnN0IFFQb2ludCYgc2NyZWVuUG9zLCBRdDo6TW91c2VCdXR0b24gYnV0dG9uLCBR
dDo6TW91c2VCdXR0b25zIGJ1dHRvbnMsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMp
Cit7CisgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudDsKKyAgICBldmVudCA9IG5l
dyBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQodHlwZSk7CisgICAgZXZlbnQtPnNldFBvcyhwb3Mp
OworICAgIGV2ZW50LT5zZXRTY3JlZW5Qb3Moc2NyZWVuUG9zKTsKKyAgICBldmVudC0+c2V0QnV0
dG9uKGJ1dHRvbik7CisgICAgZXZlbnQtPnNldEJ1dHRvbnMoYnV0dG9ucyk7CisgICAgZXZlbnQt
PnNldE1vZGlmaWVycyhtb2RpZmllcnMpOworCisgICAgcmV0dXJuIGV2ZW50OworfQorCitRR3Jh
cGhpY3NTY2VuZVdoZWVsRXZlbnQqIEV2ZW50U2VuZGVyOjpjcmVhdGVHcmFwaGljc1NjZW5lV2hl
ZWxFdmVudChRRXZlbnQ6OlR5cGUgdHlwZSwgY29uc3QgUVBvaW50JiBwb3MsIGNvbnN0IFFQb2lu
dCYgc2NyZWVuUG9zLCBpbnQgZGVsdGEsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RpZmllcnMs
IFF0OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3sKKyAgICBRR3JhcGhpY3NTY2VuZVdoZWVs
RXZlbnQqIGV2ZW50OworICAgIGV2ZW50ID0gbmV3IFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCh0
eXBlKTsKKyAgICBldmVudC0+c2V0UG9zKHBvcyk7CisgICAgZXZlbnQtPnNldFNjcmVlblBvcyhz
Y3JlZW5Qb3MpOworICAgIGV2ZW50LT5zZXREZWx0YShkZWx0YSk7CisgICAgZXZlbnQtPnNldE1v
ZGlmaWVycyhtb2RpZmllcnMpOworICAgIGV2ZW50LT5zZXRPcmllbnRhdGlvbihvcmllbnRhdGlv
bik7CisKKyAgICByZXR1cm4gZXZlbnQ7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnNlbmRFdmVu
dChRT2JqZWN0KiByZWNlaXZlciwgUUV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoV2ViVmlld0dy
YXBoaWNzQmFzZWQqIHZpZXcgPSBxb2JqZWN0X2Nhc3Q8V2ViVmlld0dyYXBoaWNzQmFzZWQqPihy
ZWNlaXZlcikpCisgICAgICAgIHZpZXctPnNjZW5lKCktPnNlbmRFdmVudCh2aWV3LT5ncmFwaGlj
c1ZpZXcoKSwgZXZlbnQpOworICAgIGVsc2UKKyAgICAgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZl
bnQocmVjZWl2ZXIsIGV2ZW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6cG9zdEV2ZW50KFFP
YmplY3QqIHJlY2VpdmVyLCBRRXZlbnQqIGV2ZW50KQoreworICAgIC8vIFFHcmFwaGljc1NjZW5l
IGRvZXMgbm90IGhhdmUgYSBwb3N0RXZlbnQgbWV0aG9kLCBzbyBzZW5kIHRoZSBldmVudCBpbiB0
aGlzIGNhc2UKKyAgICAvLyBhbmQgZGVsZXRlIGl0IGFmdGVyIHRoYXQuCisgICAgaWYgKFdlYlZp
ZXdHcmFwaGljc0Jhc2VkKiB2aWV3ID0gcW9iamVjdF9jYXN0PFdlYlZpZXdHcmFwaGljc0Jhc2Vk
Kj4ocmVjZWl2ZXIpKSB7CisgICAgICAgIHZpZXctPnNjZW5lKCktPnNlbmRFdmVudCh2aWV3LT5n
cmFwaGljc1ZpZXcoKSwgZXZlbnQpOworICAgICAgICBkZWxldGUgZXZlbnQ7CisgICAgfSBlbHNl
CisgICAgICAgIFFBcHBsaWNhdGlvbjo6cG9zdEV2ZW50KHJlY2VpdmVyLCBldmVudCk7IC8vIGV2
ZW50IGRlbGV0ZWQgYnkgdGhlIHN5c3RlbQorfQorCisjaW5jbHVkZSAibW9jX0V2ZW50U2VuZGVy
UXQuY3BwIgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJR
dC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMTNjYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmgKQEAgLTAsMCArMSwxMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpZm5kZWYgRXZlbnRTZW5kZXJRdF9oCisjZGVmaW5lIEV2
ZW50U2VuZGVyUXRfaAorCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVF0LmgiCisKKyNpbmNs
dWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisjaW5jbHVkZSA8UUV2
ZW50PgorI2luY2x1ZGUgPFFFdmVudExvb3A+CisjaW5jbHVkZSA8UUdlc3R1cmU+CisjaW5jbHVk
ZSA8UU1pbWVEYXRhPgorI2luY2x1ZGUgPFFNb3VzZUV2ZW50PgorI2luY2x1ZGUgPFFPYmplY3Q+
CisjaW5jbHVkZSA8UVBvaW50PgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8UVN0cmlu
Z0xpc3Q+CisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CisjaW5jbHVkZSA8UXQ+CisKKyNpbmNsdWRl
IDxxd2VicGFnZS5oPgorI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorCisKK2NsYXNzIEV2ZW50U2Vu
ZGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgRXZlbnRT
ZW5kZXIoUVdlYlBhZ2UqIHBhcmVudCk7CisgICAgdmlydHVhbCBib29sIGV2ZW50RmlsdGVyKFFP
YmplY3QqIHdhdGNoZWQsIFFFdmVudCogZXZlbnQpOworICAgIHZvaWQgcmVzZXRDbGlja0NvdW50
KCkgeyBtX2NsaWNrQ291bnQgPSAwOyB9CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgbW91
c2VEb3duKGludCBidXR0b24gPSAwLCBjb25zdCBRU3RyaW5nTGlzdCYgbW9kaWZpZXJzID0gUVN0
cmluZ0xpc3QoKSk7CisgICAgdm9pZCBtb3VzZVVwKGludCBidXR0b24gPSAwKTsKKyAgICB2b2lk
IG1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSk7CisjaWZuZGVmIFFUX05PX1dIRUVMRVZFTlQKKyAg
ICB2b2lkIG1vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5KTsKKyAgICB2b2lkIGNvbnRpbnVvdXNN
b3VzZVNjcm9sbEJ5KGludCB4LCBpbnQgeSk7CisjZW5kaWYKKyAgICB2b2lkIGxlYXBGb3J3YXJk
KGludCBtcyk7CisgICAgdm9pZCBrZXlEb3duKGNvbnN0IFFTdHJpbmcmIHN0cmluZywgY29uc3Qg
UVN0cmluZ0xpc3QmIG1vZGlmaWVycyA9IFFTdHJpbmdMaXN0KCksIHVuc2lnbmVkIGludCBsb2Nh
dGlvbiA9IDApOworICAgIHZvaWQgY2xlYXJLaWxsUmluZygpIHt9CisgICAgUVN0cmluZ0xpc3Qg
Y29udGV4dENsaWNrKCk7CisgICAgdm9pZCBzY2hlZHVsZUFzeW5jaHJvbm91c0NsaWNrKCk7Cisg
ICAgdm9pZCBhZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSk7CisgICAgdm9pZCB1cGRhdGVUb3Vj
aFBvaW50KGludCBpbmRleCwgaW50IHgsIGludCB5KTsKKyAgICB2b2lkIHNldFRvdWNoTW9kaWZp
ZXIoY29uc3QgUVN0cmluZyAmbW9kaWZpZXIsIGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldFRv
dWNoUG9pbnRSYWRpdXMoaW50IHJhZGl1c1gsIGludCByYWRpdXNZKTsKKyAgICB2b2lkIHRvdWNo
U3RhcnQoKTsKKyAgICB2b2lkIHRvdWNoTW92ZSgpOworICAgIHZvaWQgdG91Y2hFbmQoKTsKKyAg
ICB2b2lkIHRvdWNoQ2FuY2VsKCk7CisgICAgdm9pZCB6b29tUGFnZUluKCk7CisgICAgdm9pZCB6
b29tUGFnZU91dCgpOworICAgIHZvaWQgdGV4dFpvb21JbigpOworICAgIHZvaWQgdGV4dFpvb21P
dXQoKTsKKyAgICB2b2lkIHNjYWxlUGFnZUJ5KGZsb2F0IHNjYWxlRmFjdG9yLCBmbG9hdCB4LCBm
bG9hdCB5KTsKKyAgICB2b2lkIGNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICB2b2lkIHJlbGVhc2VU
b3VjaFBvaW50KGludCBpbmRleCk7CisgICAgdm9pZCBjYW5jZWxUb3VjaFBvaW50KGludCBpbmRl
eCk7CisjaWZuZGVmIFFUX05PX0dFU1RVUkVTCisgICAgdm9pZCBnZXN0dXJlVGFwKGludCB4LCBp
bnQgeSk7CisgICAgdm9pZCBnZXN0dXJlTG9uZ1ByZXNzKGludCB4LCBpbnQgeSk7CisjZW5kaWYK
KyAgICB2b2lkIGJlZ2luRHJhZ1dpdGhGaWxlcyhjb25zdCBRU3RyaW5nTGlzdCYgZmlsZXMpOwor
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7CisKK3ByaXZh
dGU6CisgICAgYm9vbCBpc0dyYXBoaWNzQmFzZWQoKSBjb25zdCB7IHJldHVybiBxb2JqZWN0X2Nh
c3Q8V2ViVmlld0dyYXBoaWNzQmFzZWQqPihtX3BhZ2UtPnZpZXcoKSk7IH0KKyAgICBRR3JhcGhp
Y3NTY2VuZU1vdXNlRXZlbnQqIGNyZWF0ZUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KFFFdmVudDo6
VHlwZSwgY29uc3QgUVBvaW50JiBwb3MsIGNvbnN0IFFQb2ludCYgc2NyZWVuUG9zLCBRdDo6TW91
c2VCdXR0b24sIFF0OjpNb3VzZUJ1dHRvbnMsIFF0OjpLZXlib2FyZE1vZGlmaWVycyk7CisgICAg
UUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBjcmVhdGVHcmFwaGljc1NjZW5lV2hlZWxFdmVudChR
RXZlbnQ6OlR5cGUsIGNvbnN0IFFQb2ludCYgcG9zLCBjb25zdCBRUG9pbnQmIHNjcmVlblBvcywg
aW50IGRlbHRhLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMsIFF0OjpPcmllbnRhdGlvbik7CisgICAg
dm9pZCBzZW5kRXZlbnQoUU9iamVjdCogcmVjZWl2ZXIsIFFFdmVudCogZXZlbnQpOworICAgIHZv
aWQgcG9zdEV2ZW50KFFPYmplY3QqIHJlY2VpdmVyLCBRRXZlbnQqIGV2ZW50KTsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VHlwZSk7CisgICAgdm9pZCBzZW5k
T3JRdWV1ZUV2ZW50KFFFdmVudCopOworICAgIHZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoYm9vbCBm
bHVzaCk7CisgICAgUVBvaW50IG1fbW91c2VQb3M7CisgICAgUVBvaW50IG1fY2xpY2tQb3M7Cisg
ICAgUVBvaW50IG1fdG91Y2hQb2ludFJhZGl1czsKKyAgICBRdDo6TW91c2VCdXR0b25zIG1fbW91
c2VCdXR0b25zOworICAgIFFXZWJQYWdlKiBtX3BhZ2U7CisgICAgaW50IG1fY2xpY2tDb3VudDsK
KyAgICBpbnQgbV9jdXJyZW50QnV0dG9uOworICAgIGJvb2wgbV9tb3VzZUJ1dHRvblByZXNzZWQ7
CisgICAgYm9vbCBtX2RyYWc7CisgICAgUU1pbWVEYXRhIG1fY3VycmVudERyYWdEYXRhOworICAg
IFF0OjpEcm9wQWN0aW9ucyBtX2N1cnJlbnREcmFnQWN0aW9uc0FsbG93ZWQ7CisgICAgUUV2ZW50
TG9vcCogbV9ldmVudExvb3A7CisgICAgUVdlYkZyYW1lKiBmcmFtZVVuZGVyTW91c2UoKSBjb25z
dDsKKyAgICBRQmFzaWNUaW1lciBtX2NsaWNrVGltZXI7CisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6
OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1f
dG91Y2hNb2RpZmllcnM7CisjaWZuZGVmIFFUX05PX0dFU1RVUkVTCisgICAgUVRhcEdlc3R1cmUg
bV90YXBHZXN0dXJlOworICAgIFFUYXBBbmRIb2xkR2VzdHVyZSBtX3RhcEFuZEhvbGRHZXN0dXJl
OworICAgIFFMaXN0PFFHZXN0dXJlKj4gbV9nZXN0dXJlczsKKyNlbmRpZgorICAgIGJvb2wgbV90
b3VjaEFjdGl2ZTsKK307CisjZW5kaWYgLy8gIEV2ZW50U2VuZGVyUXRfaApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjlmOTM2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBodHRwOi8vd3d3LnRvcmNo
bW9iaWxlLmNvbS8KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgi
CisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgorCit2b2lkIEdDQ29udHJv
bGxlcjo6Y29sbGVjdCgpIGNvbnN0Cit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omdh
cmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7Cit9CisKK3ZvaWQgR0NDb250cm9sbGVyOjpjb2xsZWN0
T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdAoreworICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpnYXJiYWdlQ29sbGVjdG9yQ29sbGVjdE9uQWx0ZXJuYXRlVGhy
ZWFkKHdhaXRVbnRpbERvbmUpOworfQorCitzaXplX3QgR0NDb250cm9sbGVyOjpnZXRKU09iamVj
dENvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Omph
dmFTY3JpcHRPYmplY3RzQ291bnQoKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3ROZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4ucHJvIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvVGVzdE5ldHNjYXBlUGx1Z2luL1Rlc3ROZXRzY2FwZVBsdWdpbi5w
cm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I2ZGRmYwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3ROZXRzY2FwZVBsdWdpbi9UZXN0
TmV0c2NhcGVQbHVnaW4ucHJvCkBAIC0wLDAgKzEsNjIgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9q
ZWN0IGZpbGUgZm9yIHRoZSBOUEFQSSB0ZXN0IHBsdWdpbgorIworIyBTZWUgJ1Rvb2xzL3FtYWtl
L1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitURU1QTEFURSA9IGxpYgorVEFSR0VUID0gVGVzdE5ldHNjYXBlUGx1Z0luCisKK0NPTkZJ
RyArPSBwbHVnaW4KKworU09VUkNFUyArPSBcCisgICAgUGx1Z2luT2JqZWN0LmNwcCBcCisgICAg
UGx1Z2luVGVzdC5jcHAgXAorICAgIFRlc3RPYmplY3QuY3BwIFwKKyAgICBtYWluLmNwcCBcCisg
ICAgVGVzdHMvRG9jdW1lbnRPcGVuSW5EZXN0cm95U3RyZWFtLmNwcCBcCisgICAgVGVzdHMvRXZh
bHVhdGVKU0FmdGVyUmVtb3ZpbmdQbHVnaW5FbGVtZW50LmNwcCBcCisgICAgVGVzdHMvRm9ybVZh
bHVlLmNwcCBcCisgICAgVGVzdHMvR2V0VVJMTm90aWZ5V2l0aFVSTFRoYXRGYWlsc1RvTG9hZC5j
cHAgXAorICAgIFRlc3RzL0dldFVSTFdpdGhKYXZhU2NyaXB0VVJMLmNwcCBcCisgICAgVGVzdHMv
R2V0VVJMV2l0aEphdmFTY3JpcHRVUkxEZXN0cm95aW5nUGx1Z2luLmNwcCBcCisgICAgVGVzdHMv
R2V0VXNlckFnZW50V2l0aE51bGxOUFBGcm9tTlBQTmV3LmNwcCBcCisgICAgVGVzdHMvTlBEZWFs
bG9jYXRlQ2FsbGVkQmVmb3JlTlBTaHV0ZG93bi5jcHAgXAorICAgIFRlc3RzL05QUE5ld0ZhaWxz
LmNwcCBcCisgICAgVGVzdHMvTlBQU2V0V2luZG93Q2FsbGVkRHVyaW5nRGVzdHJ1Y3Rpb24uY3Bw
IFwKKyAgICBUZXN0cy9OUFJ1bnRpbWVDYWxsc1dpdGhOdWxsTlBQLmNwcCBcCisgICAgVGVzdHMv
TlBSdW50aW1lT2JqZWN0RnJvbURlc3Ryb3llZFBsdWdpbi5jcHAgXAorICAgIFRlc3RzL05QUnVu
dGltZVJlbW92ZVByb3BlcnR5LmNwcCBcCisgICAgVGVzdHMvTnVsbE5QUEdldFZhbHVlUG9pbnRl
ci5jcHAgXAorICAgIFRlc3RzL1Bhc3NEaWZmZXJlbnROUFBTdHJ1Y3QuY3BwIFwKKyAgICBUZXN0
cy9QbHVnaW5TY3JpcHRhYmxlTlBPYmplY3RJbnZva2VEZWZhdWx0LmNwcCBcCisgICAgVGVzdHMv
UGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwIFwKKyAgICBU
ZXN0cy9Qcml2YXRlQnJvd3NpbmcuY3BwIFwKKyAgICBUZXN0cy9Ub1N0cmluZ0FuZFZhbHVlT2ZP
YmplY3QuY3BwCisKK1dFQktJVCArPSB3ZWJjb3JlICMgRm9yIE5QQVBJIGhlYWRlcnMKKworVlBB
VEggPSAuLi8uLi91bml4L1Rlc3ROZXRzY2FwZVBsdWdpbiAuLi8uLi9UZXN0TmV0c2NhcGVQbHVn
SW4KKworCitJTkNMVURFUEFUSCArPSBcCisgICAgLi4vLi4vVGVzdE5ldHNjYXBlUGx1Z0luL3Vu
aXgvRm9yd2FyZGluZ0hlYWRlcnMgXAorICAgIC4uLy4uL1Rlc3ROZXRzY2FwZVBsdWdJbi91bml4
L0ZvcndhcmRpbmdIZWFkZXJzL1dlYktpdCBcCisgICAgLi4vLi4vVGVzdE5ldHNjYXBlUGx1Z0lu
CisKK0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vbGliL3BsdWdpbnMKKworbWFjIHsKKyAg
ICBDT05GSUcgKz0gcGx1Z2luX2J1bmRsZQorICAgIFFNQUtFX0lORk9fUExJU1QgPSAuLi8uLi9U
ZXN0TmV0c2NhcGVQbHVnSW4vbWFjL0luZm8ucGxpc3QKKyAgICBRTUFLRV9QTFVHSU5fQlVORExF
X05BTUUgPSAkJFRBUkdFVAorICAgIFFNQUtFX0JVTkRMRV9MT0NBVElPTiArPSAiQ29udGVudHMv
TWFjT1MiCisKKyAgICBPQkpFQ1RJVkVfU09VUkNFUyArPSBQbHVnaW5PYmplY3RNYWMubW0KKyAg
ICBMSUJTICs9IC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBR
dWFydHpDb3JlCit9CisKKyF3aW4zMjohZW1iZWRkZWQ6IW1hYyB7CisgICAgTElCUyArPSAtbFgx
MQorICAgIERFRklORVMgKz0gWFBfVU5JWAorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RS
dW5uZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk0YzAwZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHAKQEAgLTAsMCArMSwxMjA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAy
MDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lclF0LmgiCisKKyNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZVF0LmgiCisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKKyNpbmNs
dWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oIgorI2luY2x1ZGUgIldvcmtRdWV1
ZS5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW1RdC5oIgorI2luY2x1ZGUgPEpTU3RyaW5nUmVm
UXQuaD4KKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEaXI+CisjaW5j
bHVkZSA8UUxvY2FsZT4KKyNpbmNsdWRlIDxxd2Vic2V0dGluZ3MuaD4KKworVGVzdFJ1bm5lclF0
OjpUZXN0UnVubmVyUXQoRHVtcFJlbmRlclRyZWUqIGRydCkKKyAgICA6IFFPYmplY3QoKQorICAg
ICwgbV9kcnQoZHJ0KQorICAgICwgbV9zaG91bGRUaW1lb3V0KHRydWUpCisgICAgLCBtX3RpbWVv
dXQoMzAwMDApCit7CisgICAgcmVzZXQoKTsKK30KKworVGVzdFJ1bm5lcjo6flRlc3RSdW5uZXIo
KQoreworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6cmVzZXQoKQoreworICAgIG1faGFzRHVtcGVk
ID0gZmFsc2U7CisgICAgbV9sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBtX2F1ZGlvRHVtcCA9
IGZhbHNlOworICAgIG1fd2FpdEZvckRvbmUgPSBmYWxzZTsKKyAgICBtX3RpbWVvdXRUaW1lci5z
dG9wKCk7CisgICAgbV90b3BMb2FkaW5nRnJhbWUgPSAwOworICAgIG1fd2FpdEZvclBvbGljeSA9
IGZhbHNlOworICAgIG1faGFuZGxlRXJyb3JQYWdlcyA9IGZhbHNlOworICAgIG1fd2ViSGlzdG9y
eSA9IDA7CisgICAgbV9nbG9iYWxGbGFnID0gZmFsc2U7CisgICAgbV91c2VyU3R5bGVTaGVldEVu
YWJsZWQgPSBmYWxzZTsKKyAgICBtX2lnbm9yZURlc2t0b3BOb3RpZmljYXRpb24gPSBmYWxzZTsK
KyAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gZmFsc2U7CisgICAgbV9nZW9sb2Nh
dGlvblBlcm1pc3Npb24gPSBmYWxzZTsKKyAgICBtX2F1ZGlvRGF0YS5jbGVhcigpOworCisgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKGZhbHNlKTsKKyAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEZyYW1lTG9hZGVyKGZhbHNlKTsKKyAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayhmYWxz
ZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkZXIoZmFsc2UpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKGZhbHNlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFJl
c291cmNlUmVzcG9uc2VNSU1FVHlwZXMoZmFsc2UpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFja3MoZmFsc2UpOworICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRydWUpOworICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9u
UmVkaXJlY3QoZmFsc2UpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRXaWxsU2Vu
ZFJlcXVlc3RSZXR1cm5zTnVsbChmYWxzZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycyhRU3RyaW5nTGlzdCgpKTsKKyAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJTY3JpcHRXb3JsZHMoKTsKKyAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoZmFsc2UsIGZhbHNlKTsKKyAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcEhpc3RvcnlDYWxsYmFja3MoZmFsc2UpOwor
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2tzKGZh
bHNlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRHZW9sb2NhdGlvbk1vY2so
bV9kcnQtPnBhZ2VBZGFwdGVyKCkpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1w
Tm90aWZpY2F0aW9uKGZhbHNlKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2hv
dWxkVXNlRm9udFNtb290aGluZyhmYWxzZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmRpc2FibGVEZWZhdWx0VHlwZXNldHRpbmdGZWF0dXJlcygpOworICAgIHNldEljb25EYXRhYmFz
ZUVuYWJsZWQoZmFsc2UpOworICAgIGNsZWFyQWxsRGF0YWJhc2VzKCk7CisgICAgcmVtb3ZlQWxs
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICAvLyBUaGUgZGVmYXVsdCBzdGF0ZSBm
b3IgRFJUIGlzIHRvIGJsb2NrIHRoaXJkLXBhcnR5IGNvb2tpZXMsIG1pbWljaW5nIHRoZSBNYWMg
cG9ydAorICAgIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOworICAgIGVtaXQgaGlkZVBh
Z2UoKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OmR1bXBOb3RpZmljYXRpb25zKCkKK3sKKyAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcE5vdGlmaWNhdGlvbih0cnVlKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyUXQ6OnByb2Nlc3NXb3JrKCkKK3sKKyAgICAvLyBxRGVidWcoKSA8PCAi
Pj4+cHJvY2Vzc1dvcmsiOworCisgICAgLy8gaWYgd2UgZGlkbid0IHN0YXJ0IGEgbmV3IGxvYWQs
IHRoZW4gd2UgZmluaXNoZWQgYWxsIHRoZSBjb21tYW5kcywgc28gd2UncmUgcmVhZHkgdG8gZHVt
cCBzdGF0ZQorICAgIGlmIChXb3JrUXVldWU6OnNoYXJlZCgpLT5wcm9jZXNzV29yaygpICYmICFz
aG91bGRXYWl0VW50aWxEb25lKCkpIHsKKyAgICAgICAgZW1pdCBkb25lKCk7CisgICAgICAgIG1f
aGFzRHVtcGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKKy8vIENhbGxlZCBvbiBsb2FkRmluaXNoZWQg
b24gV2ViUGFnZQordm9pZCBUZXN0UnVubmVyUXQ6Om1heWJlRHVtcChib29sIC8qc3VjY2Vzcyov
KQoreworCisgICAgLy8gVGhpcyBjYW4gaGFwcGVuIG9uIGFueSBvZiB0aGUgaHR0cC90ZXN0cy9z
ZWN1cml0eS93aW5kb3ctZXZlbnRzLSouaHRtbCB0ZXN0cywgd2hlcmUgdGhlIHRlc3Qgb3BlbnMK
KyAgICAvLyBhIG5ldyB3aW5kb3csIGNhbGxzIHRoZSB1bmxvYWQgYW5kIGxvYWQgZXZlbnQgaGFu
ZGxlcnMgb24gdGhlIHdpbmRvdydzIHBhZ2UsIGFuZCB0aGVuIGltbWVkaWF0ZWx5CisgICAgLy8g
aXNzdWVzIGEgbm90aWZ5RG9uZS4gTmVlZHMgaW52ZXN0aWdhdGlvbi4KKyAgICBpZiAoIW1fdG9w
TG9hZGluZ0ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJdCBpcyBwb3NzaWJsZSB0
aGF0IHdlIGdldCBjYWxsZWQgYnkgd2luZG93cyBjcmVhdGVkIGZyb20gdGhlIG1haW4gcGFnZSB0
aGF0IGhhdmUgZmluaXNoZWQKKyAgICAvLyBsb2FkaW5nLCBzbyB3ZSBkb24ndCBBU1NFUlQgaGVy
ZS4gQXQgdGhlIG1vbWVudCB3ZSBkbyBub3QgZ2F0aGVyIHJlc3VsdHMgZnJvbSBzdWNoIHdpbmRv
d3MsCisgICAgLy8gYnV0IG1heSBuZWVkIHRvIGluIGZ1dHVyZS4KKyAgICBpZiAoc2VuZGVyKCkg
IT0gbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9s
b2FkRmluaXNoZWQgPSB0cnVlOworICAgIC8vIGFzIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgb24g
bG9hZEZpbmlzaGVkLCB0aGUgdGVzdCBtaWdodAorICAgIC8vIGFscmVhZHkgaGF2ZSBkdW1wZWQg
YW5kIHRodXMgbm8gbG9uZ2VyIGJlIGFjdGl2ZSwgdGh1cworICAgIC8vIGJhaWwgb3V0IGhlcmUu
CisgICAgaWYgKG1faGFzRHVtcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXb3JrUXVldWU6
OnNoYXJlZCgpLT5zZXRGcm96ZW4odHJ1ZSk7IC8vIGZpcnN0IGNvbXBsZXRlIGxvYWQgZnJlZXpl
cyB0aGUgcXVldWUgZm9yIHRoZSByZXN0IG9mIHRoaXMgdGVzdAorICAgIGlmIChXb3JrUXVldWU6
OnNoYXJlZCgpLT5jb3VudCgpKQorICAgICAgICBRVGltZXI6OnNpbmdsZVNob3QoMCwgdGhpcywg
U0xPVChwcm9jZXNzV29yaygpKSk7CisgICAgZWxzZSBpZiAoIXNob3VsZFdhaXRVbnRpbERvbmUo
KSkgeworICAgICAgICBlbWl0IGRvbmUoKTsKKyAgICAgICAgbV9oYXNEdW1wZWQgPSB0cnVlOwor
ICAgIH0KK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OndhaXRVbnRpbERvbmUoKQoreworICAgIC8v
cURlYnVnKCkgPDwgIj4+Pj53YWl0Rm9yRG9uZSI7CisgICAgbV93YWl0Rm9yRG9uZSA9IHRydWU7
CisKKyAgICBpZiAoIW1fc2hvdWxkVGltZW91dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90
aW1lb3V0VGltZXIuc3RhcnQobV90aW1lb3V0LCB0aGlzKTsKK30KKwordm9pZCBUZXN0UnVubmVy
UXQ6OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKGNvbnN0IFFTdHJpbmcmIG1vZGUpCit7CisgICAg
bV9kcnQtPndlYlBhZ2UoKS0+c2V0UHJvcGVydHkoIl9xX3ZpZXdNb2RlIiwgbW9kZSk7Cit9CisK
K2ludCBUZXN0UnVubmVyUXQ6OndlYkhpc3RvcnlJdGVtQ291bnQoKQoreworICAgIGlmICghbV93
ZWJIaXN0b3J5KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvLyBTdWJ0cmFjdCBvbmUgaGVy
ZSBhcyBvdXIgUVdlYkhpc3Rvcnk6OmNvdW50KCkgaW5jbHVkZXMgdGhlIGFjdHVhbCBwYWdlLAor
ICAgIC8vIHdoaWNoIGlzIG5vdCBjb25zaWRlcmVkIGluIHRoZSBEUlQgdGVzdHMuCisgICAgcmV0
dXJuIG1fd2ViSGlzdG9yeS0+Y291bnQoKSAtIDE7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0Ojpr
ZWVwV2ViSGlzdG9yeSgpCit7CisgICAgbV93ZWJIaXN0b3J5ID0gbV9kcnQtPndlYlBhZ2UoKS0+
aGlzdG9yeSgpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6bm90aWZ5RG9uZSgpCit7CisgICAg
cURlYnVnKCkgPDwgIj4+Pj5ub3RpZnlEb25lIjsKKworICAgIGlmIChtX3Nob3VsZFRpbWVvdXQg
JiYgIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
dGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBtX3dhaXRGb3JEb25lID0gZmFsc2U7CisKKyAgICAv
LyBJZiB0aGUgcGFnZSBoYXMgbm90IGZpbmlzaGVkIGxvYWRpbmcgKGkuZS4gbG9hZEZpbmlzaGVk
KCkgaGFzIG5vdCBiZWVuIGVtaXR0ZWQpIHRoZW4KKyAgICAvLyBjb250ZW50IGNyZWF0ZWQgYnkg
dGhlIGxpa2VzIG9mIGRvY3VtZW50LndyaXRlKCkgSlMgbWV0aG9kcyB3aWxsIG5vdCBiZSBhdmFp
bGFibGUgeWV0LgorICAgIC8vIFdoZW4gdGhlIHBhZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcsIG1h
eWJlRHVtcCBhYm92ZSB3aWxsIGR1bXAgdGhlIHJlc3VsdHMgbm93IHRoYXQgd2UgaGF2ZQorICAg
IC8vIGp1c3Qgc2V0IHNob3VsZFdhaXRVbnRpbERvbmUgdG8gZmFsc2UuCisgICAgaWYgKCFtX2xv
YWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZW1pdCBkb25lKCk7CisKKyAgICAv
LyBGSVhNRTogaW52ZXN0aWdhdGUgd2h5IGFsd2F5cyByZXNldHRpbmcgdGhlc2UgcmVzdWx0IGlu
IHRpbWVvdXRzCisgICAgbV9oYXNEdW1wZWQgPSB0cnVlOworICAgIG1fd2FpdEZvclBvbGljeSA9
IGZhbHNlOworfQorCitpbnQgVGVzdFJ1bm5lclF0Ojp3aW5kb3dDb3VudCgpCit7CisgICAgcmV0
dXJuIG1fZHJ0LT53aW5kb3dDb3VudCgpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6Z3JhbnRX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFFTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBR
V2ViRnJhbWUqIGZyYW1lID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCk7CisgICAgbV9k
cnQtPndlYlBhZ2UoKS0+c2V0RmVhdHVyZVBlcm1pc3Npb24oZnJhbWUsIFFXZWJQYWdlOjpOb3Rp
ZmljYXRpb25zLCBRV2ViUGFnZTo6UGVybWlzc2lvbkdyYW50ZWRCeVVzZXIpOworfQorCit2b2lk
IFRlc3RSdW5uZXJRdDo6aWdub3JlTGVnYWN5V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RzKCkKK3sKKyAgICBtX2lnbm9yZURlc2t0b3BOb3RpZmljYXRpb24gPSB0cnVlOworfQorCit2
b2lkIFRlc3RSdW5uZXJRdDo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgUVN0
cmluZyYgb3JpZ2luKQoreworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgp
LT5tYWluRnJhbWUoKTsKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXRGZWF0dXJlUGVybWlzc2lv
bihmcmFtZSwgUVdlYlBhZ2U6Ok5vdGlmaWNhdGlvbnMsIFFXZWJQYWdlOjpQZXJtaXNzaW9uRGVu
aWVkQnlVc2VyKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OnJlbW92ZUFsbFdlYk5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJO
b3RpZmljYXRpb25QZXJtaXNzaW9ucygpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2ltdWxh
dGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhjb25zdCBRU3RyaW5nJiB0aXRsZSkKK3sKKyAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2ltdWxhdGVEZXNrdG9wTm90aWZpY2F0aW9uQ2xp
Y2sodGl0bGUpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6ZGlzcGxheSgpCit7CisgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFRyYWNrUmVwYWludFJlY3RzKG1fdG9wTG9hZGluZ0Zy
YW1lLT5oYW5kbGUoKSwgdHJ1ZSk7CisgICAgZW1pdCBzaG93UGFnZSgpOworfQorCit2b2lkIFRl
c3RSdW5uZXJRdDo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKCkKK3sKKyAgICBkaXNwbGF5KCk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpjbGVhckJhY2tGb3J3YXJkTGlzdCgpCit7CisgICAg
bV9kcnQtPndlYlBhZ2UoKS0+aGlzdG9yeSgpLT5jbGVhcigpOworfQorCitRU3RyaW5nIFRlc3RS
dW5uZXJRdDo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBRU3RyaW5nJiB1cmwpCit7CisgICAg
UVN0cmluZyBsb2NhbFRtcFVybChRTGF0aW4xU3RyaW5nKCJmaWxlOi8vL3RtcC9MYXlvdXRUZXN0
cyIpKTsKKworICAgIC8vIFRyYW5zbGF0ZSBhIHJlcXVlc3QgZm9yIC90bXAvTGF5b3V0VGVzdHMg
dG8gdGhlIHJlcG9zaXRvcnkgTGF5b3V0VGVzdHMgZGlyZWN0b3J5LgorICAgIC8vIERvIG5vdCBy
ZWx5IG9uIGEgc3ltbGluayB0byBiZSBjcmVhdGVkIHZpYSB0aGUgdGVzdCBydW5uZXIsIHdoaWNo
IHdpbGwgbm90IHdvcmsgb24gV2luZG93cy4KKyAgICBpZiAodXJsLnN0YXJ0c1dpdGgobG9jYWxU
bXBVcmwpKSB7CisgICAgICAgIC8vIER1bXBSZW5kZXJUcmVlIGxpdmVzIGluIFdlYktpdC9XZWJL
aXRCdWlsZC88YnVpbGRfbW9kZT4vYmluLgorICAgICAgICAvLyBUcmFuc2xhdGUgZnJvbSBXZWJL
aXQvV2ViS2l0QnVpbGQvUmVsZWFzZS9iaW4gPT4gV2ViS2l0L0xheW91dFRlc3RzLgorICAgICAg
ICBRRmlsZUluZm8gbGF5b3V0VGVzdHNSb290KFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9u
RGlyUGF0aCgpICsgUUxhdGluMVN0cmluZygiLy4uLy4uLy4uL0xheW91dFRlc3RzLyIpKTsKKyAg
ICAgICAgaWYgKGxheW91dFRlc3RzUm9vdC5leGlzdHMoKSkKKyAgICAgICAgICAgIHJldHVybiBR
TGF0aW4xU3RyaW5nKCJmaWxlOi8vIikgKyBsYXlvdXRUZXN0c1Jvb3QuYWJzb2x1dGVQYXRoKCkg
KyB1cmwubWlkKGxvY2FsVG1wVXJsLmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdXJs
OworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoKQoreworICAg
IHFEZWJ1ZygpIDw8ICI+Pj5kdW1wRWRpdGluZ0NhbGxiYWNrcyI7CisgICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKHRydWUpOworfQorCit2b2lkIFRlc3RS
dW5uZXJRdDo6ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpCit7CisgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmR1bXBGcmFtZUxvYWRlcih0cnVlKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6
OmR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKQoreworICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKHRydWUpOworfQorCit2b2lkIFRl
c3RSdW5uZXJRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKQoreworICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyKHRy
dWUpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
Cit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3ModHJ1ZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpkdW1wUmVzb3VyY2VSZXNwb25zZU1J
TUVUeXBlcygpCit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBSZXNvdXJjZVJl
c3BvbnNlTUlNRVR5cGVzKHRydWUpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcFdpbGxD
YWNoZVJlc3BvbnNlKCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFdpbGxD
YWNoZVJlc3BvbnNlQ2FsbGJhY2tzKHRydWUpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVt
cEhpc3RvcnlDYWxsYmFja3MoKQoreworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1w
SGlzdG9yeUNhbGxiYWNrcyh0cnVlKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OnNldFdpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChib29sIGVuYWJsZWQpCit7CisgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRp
cmVjdChlbmFibGVkKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OnNldFdpbGxTZW5kUmVxdWVz
dFJldHVybnNOdWxsKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoZW5hYmxlZCk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lclF0OjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihjb25zdCBRU3RyaW5nTGlz
dCYgaGVhZGVycykKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRS
ZXF1ZXN0Q2xlYXJIZWFkZXJzKGhlYWRlcnMpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0
RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChib29sIGRlZmVyKQoreworICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGRlZmVyKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyUXQ6OnF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhvd0ZhckJhY2t3YXJk
KQoreworICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlQmFja05hdmlnYXRpb24iIDw8IGhvd0Zh
ckJhY2t3YXJkOworICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGhvd0ZhckJhY2t3YXJkOyArK2kp
CisgICAgICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBCYWNrSXRlbSgxKSk7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGludCBob3dGYXJG
b3J3YXJkKQoreworICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlRm9yd2FyZE5hdmlnYXRpb24i
IDw8IGhvd0ZhckZvcndhcmQ7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gaG93RmFyRm9yd2Fy
ZDsgKytpKQorICAgICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgRm9yd2FyZEl0
ZW0oMSkpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25z
dCBRU3RyaW5nJiBjb250ZW50LCBjb25zdCBRU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBRU3RyaW5n
JiBmYWlsaW5nVVJMKQoreworICAgIGlmIChmYWlsaW5nVVJMLmlzRW1wdHkoKSkKKyAgICAgICAg
V29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IExvYWRIVE1MU3RyaW5nSXRlbShKU1N0cmlu
Z0NyZWF0ZVdpdGhRU3RyaW5nKGNvbnRlbnQpLmdldCgpLCBKU1N0cmluZ0NyZWF0ZVdpdGhRU3Ry
aW5nKGJhc2VVUkwpLmdldCgpKSk7CisgICAgZWxzZQorICAgICAgICBXb3JrUXVldWU6OnNoYXJl
ZCgpLT5xdWV1ZShuZXcgTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdJdGVtKEpTU3RyaW5nQ3JlYXRl
V2l0aFFTdHJpbmcoY29udGVudCksIEpTU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoYmFzZVVSTCks
IEpTU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoZmFpbGluZ1VSTCkpKTsKK30KKwordm9pZCBUZXN0
UnVubmVyUXQ6OnF1ZXVlUmVsb2FkKCkKK3sKKyAgICAvL3FEZWJ1ZygpIDw8ICI+Pj5xdWV1ZVJl
bG9hZCI7CisgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IFJlbG9hZEl0ZW0oKSk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpxdWV1ZUxvYWRpbmdTY3JpcHQoY29uc3QgUVN0cmlu
ZyYgc2NyaXB0KQoreworICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlTG9hZGluZ1NjcmlwdCIg
PDwgc2NyaXB0OworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkaW5nU2Ny
aXB0SXRlbShKU1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKHNjcmlwdCkuZ2V0KCkpKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyUXQ6OnF1ZXVlTm9uTG9hZGluZ1NjcmlwdChjb25zdCBRU3RyaW5nJiBz
Y3JpcHQpCit7CisgICAgLy9xRGVidWcoKSA8PCAiPj4+cXVldWVOb25Mb2FkaW5nU2NyaXB0IiA8
PCBzY3JpcHQ7CisgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IE5vbkxvYWRpbmdT
Y3JpcHRJdGVtKEpTU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoc2NyaXB0KS5nZXQoKSkpOworfQor
Cit2b2lkIFRlc3RSdW5uZXJRdDo6cHJvdmlzaW9uYWxMb2FkKCkKK3sKKyAgICBRV2ViRnJhbWUq
IGZyYW1lID0gcW9iamVjdF9jYXN0PFFXZWJGcmFtZSo+KHNlbmRlcigpKTsKKyAgICBpZiAoIW1f
dG9wTG9hZGluZ0ZyYW1lICYmICFtX2hhc0R1bXBlZCkKKyAgICAgICAgbV90b3BMb2FkaW5nRnJh
bWUgPSBmcmFtZTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OnRpbWVyRXZlbnQoUVRpbWVyRXZl
bnQgKmV2KQoreworICAgIGlmIChldi0+dGltZXJJZCgpID09IG1fdGltZW91dFRpbWVyLnRpbWVy
SWQoKSkgeworICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlID0gIkZBSUw6IFRpbWVkIG91dCB3
YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZFxuIjsKKyAgICAgICAgZnByaW50Zihz
dGRlcnIsICIlcyIsIG1lc3NhZ2UpOworICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVzIiwgbWVz
c2FnZSk7CisgICAgICAgIG5vdGlmeURvbmUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUU9iamVj
dDo6dGltZXJFdmVudChldik7Cit9CisKK1FTdHJpbmcgVGVzdFJ1bm5lclF0OjplbmNvZGVIb3N0
TmFtZShjb25zdCBRU3RyaW5nJiBob3N0KQoreworICAgIFFTdHJpbmcgZW5jb2RlZCA9IFFTdHJp
bmc6OmZyb21MYXRpbjEoUVVybDo6dG9BY2UoaG9zdCArIFFMYXRpbjFTdHJpbmcoIi5ubyIpKSk7
CisgICAgZW5jb2RlZC50cnVuY2F0ZShlbmNvZGVkLmxlbmd0aCgpIC0gMyk7IC8vIHN0cmlwIC5u
bworICAgIHJldHVybiBlbmNvZGVkOworfQorCitRU3RyaW5nIFRlc3RSdW5uZXJRdDo6ZGVjb2Rl
SG9zdE5hbWUoY29uc3QgUVN0cmluZyYgaG9zdCkKK3sKKyAgICBRU3RyaW5nIGRlY29kZWQgPSBR
VXJsOjpmcm9tQWNlKGhvc3QudG9MYXRpbjEoKSArIFFCeXRlQXJyYXkoIi5ubyIpKTsKKyAgICBk
ZWNvZGVkLnRydW5jYXRlKGRlY29kZWQubGVuZ3RoKCkgLSAzKTsKKyAgICByZXR1cm4gZGVjb2Rl
ZDsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OmNsb3NlV2ViSW5zcGVjdG9yKCkKK3sKKyAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yQ2xvc2UobV9kcnQtPnBhZ2VBZGFw
dGVyKCkpOworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShR
V2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIGZhbHNlKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyUXQ6OnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQorewor
ICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGlu
Z3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIGVuYWJsZWQpOworfQorCit2b2lkIFRlc3RSdW5u
ZXJRdDo6c2hvd1dlYkluc3BlY3RvcigpCit7CisgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGlu
Z3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwg
dHJ1ZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYkluc3BlY3RvclNob3cobV9k
cnQtPnBhZ2VBZGFwdGVyKCkpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6ZXZhbHVhdGVJbldl
Ykluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQoreworICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3ZWJJbnNwZWN0b3JFeGVjdXRlU2NyaXB0KG1fZHJ0LT5w
YWdlQWRhcHRlcigpLCBjYWxsSWQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0Ojpz
ZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCit7CisgICAg
bV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6
TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywgZW5hYmxlZCk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lclF0OjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQor
eworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzLCBlbmFibGVkKTsKK30KKwordm9p
ZCBUZXN0UnVubmVyUXQ6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25n
IHF1b3RhKQoreworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldE9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEocXVvdGEpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6
c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRU3RyaW5n
JiB2YWx1ZSkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2Vy
KGVsZW1lbnQsIHZhbHVlKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OnNldEZpeGVkQ29udGVu
dHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBtX3RvcExvYWRpbmdGcmFtZS0+
cGFnZSgpLT5zZXRQcmVmZXJyZWRDb250ZW50c1NpemUoUVNpemUod2lkdGgsIGhlaWdodCkpOwor
fQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVu
YWJsZSkKK3sKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUo
UVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBlbmFibGUpOworfQorCit2b2lk
IFRlc3RSdW5uZXJRdDo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlKQor
eworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OlNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgZW5hYmxlKTsKK30KKwordm9pZCBUZXN0
UnVubmVyUXQ6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIG1f
ZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Okph
dmFzY3JpcHRDYW5PcGVuV2luZG93cywgIWVuYWJsZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0
OjpzZXRQT1NJWExvY2FsZShjb25zdCBRU3RyaW5nJiBsb2NhbGUpCit7CisgICAgUUxvY2FsZSBx
bG9jYWxlKGxvY2FsZSk7CisgICAgUUxvY2FsZTo6c2V0RGVmYXVsdChxbG9jYWxlKTsKK30gCisK
K3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRXaW5kb3dJc0tleShib29sIGlzS2V5KQoreworICAgIG1f
ZHJ0LT5zd2l0Y2hGb2N1cyhpc0tleSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRKYXZh
U2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgZW5hYmxlKQoreworICAgIG1fZHJ0LT53ZWJQ
YWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkphdmFzY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQsIGVuYWJsZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRY
U1NBdWRpdG9yRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICAvLyBTZXQgWFNTQXVkaXRpbmdF
bmFibGVkIGdsb2JhbGx5IHNvIHRoYXQgd2luZG93cyBjcmVhdGVkIGJ5IHRoZSB0ZXN0IGluaGVy
aXQgaXQgdG9vLgorICAgIC8vIHJlc2V0U2V0dGluZ3MoKSB3aWxsIGNhbGwgdGhpcyB0byByZXNl
dCB0aGUgcGFnZSBhbmQgZ2xvYmFsIHNldHRpbmcgdG8gZmFsc2UgYWdhaW4uCisgICAgLy8gTmVl
ZGVkIGJ5IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9saW5rLW9wZW5zLW5ldy13aW5k
b3cuaHRtbAorICAgIFFXZWJTZXR0aW5ncyogZ2xvYmFsU2V0dGluZ3MgPSBRV2ViU2V0dGluZ3M6
Omdsb2JhbFNldHRpbmdzKCk7CisgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OlhTU0F1ZGl0aW5nRW5hYmxlZCwgZW5hYmxlKTsKKyAgICBtX2RydC0+d2ViUGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpYU1NBdWRpdGluZ0Vu
YWJsZWQsIGVuYWJsZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpjbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzKCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJBbGxBcHBs
aWNhdGlvbkNhY2hlcygpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKK3sKKyAgICBpZiAoIW1f
dG9wTG9hZGluZ0ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgbV90b3BMb2FkaW5nRnJhbWUt
PnNlY3VyaXR5T3JpZ2luKCkuc2V0QXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsKK30KKwor
UVN0cmluZ0xpc3QgVGVzdFJ1bm5lclF0OjpvcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUoKQor
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdG8gZ2V0IG9yaWdpbnMgdGhhdCBoYXZlIGFwcGxp
Y2F0aW9uIGNhY2hlcy4KKyAgICByZXR1cm4gUVN0cmluZ0xpc3QoKTsKK30KKwordm9pZCBUZXN0
UnVubmVyUXQ6OnNldERhdGFiYXNlUXVvdGEoaW50IHNpemUpCit7CisgICAgaWYgKCFtX3RvcExv
YWRpbmdGcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdG9wTG9hZGluZ0ZyYW1lLT5zZWN1
cml0eU9yaWdpbigpLnNldERhdGFiYXNlUXVvdGEoc2l6ZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
clF0OjpjbGVhckFsbERhdGFiYXNlcygpCit7CisgICAgUVdlYkRhdGFiYXNlOjpyZW1vdmVBbGxE
YXRhYmFzZXMoKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OmFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKQoreworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lclF0OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlV2hpdGVM
aXN0QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmlnaW4sIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRl
c3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworfQorCit2b2lkIFRl
c3RSdW5uZXJRdDo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBlbmFibGVkLCBib29sIHBl
cm1pc3NpdmUpCit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKGVuYWJsZWQsIHBlcm1pc3NpdmUpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6
d2FpdEZvclBvbGljeURlbGVnYXRlKCkKK3sKKyAgICBzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZSh0
cnVlKTsKKyAgICBtX3dhaXRGb3JQb2xpY3kgPSB0cnVlOworICAgIHdhaXRVbnRpbERvbmUoKTsK
K30KKwordm9pZCBUZXN0UnVubmVyUXQ6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBRU3RyaW5n
JiBuYW1lLCBjb25zdCBRVmFyaWFudCYgdmFsdWUpCit7CisgICAgUVdlYlNldHRpbmdzKiBzZXR0
aW5ncyA9IG1fdG9wTG9hZGluZ0ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCk7CisKKyAgICBpZiAo
bmFtZSA9PSAiV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQiKQorICAgICAgICBzZXR0aW5ncy0+c2V0
QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJsZWQsIHZhbHVlLnRvQm9vbCgp
KTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIp
CisgICAgICAgIHNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMaW5rc0luY2x1
ZGVkSW5Gb2N1c0NoYWluLCB2YWx1ZS50b0Jvb2woKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSAi
V2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkIikKKyAgICAgICAgc2V0dGlu
Z3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZCwgdmFsdWUudG9Cb29sKCkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktpdERl
ZmF1bHRGb250U2l6ZSIpCisgICAgICAgIHNldHRpbmdzLT5zZXRGb250U2l6ZShRV2ViU2V0dGlu
Z3M6OkRlZmF1bHRGb250U2l6ZSwgdmFsdWUudG9JbnQoKSk7CisgICAgZWxzZSBpZiAobmFtZSA9
PSAiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiKQorICAgICAgICBRV2ViU2V0dGlu
Z3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUodmFsdWUudG9JbnQoKSk7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSAiV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyIpCisgICAgICAgIHNldENhcmV0QnJv
d3NpbmdFbmFibGVkKHZhbHVlLnRvQm9vbCgpKTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJL
aXRQbHVnaW5zRW5hYmxlZCIpCisgICAgICAgIHNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNl
dHRpbmdzOjpQbHVnaW5zRW5hYmxlZCwgdmFsdWUudG9Cb29sKCkpOworICAgIGVsc2UgaWYgKG5h
bWUgPT0gIldlYktpdFdlYkdMRW5hYmxlZCIpCisgICAgICAgIHNldHRpbmdzLT5zZXRBdHRyaWJ1
dGUoUVdlYlNldHRpbmdzOjpXZWJHTEVuYWJsZWQsIHZhbHVlLnRvQm9vbCgpKTsKKyAgICBlbHNl
IGlmIChuYW1lID09ICJXZWJLaXRDU1NSZWdpb25zRW5hYmxlZCIpCisgICAgICAgIHNldHRpbmdz
LT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpDU1NSZWdpb25zRW5hYmxlZCwgdmFsdWUudG9C
b29sKCkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVk
IikKKyAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkNTU0dyaWRM
YXlvdXRFbmFibGVkLCB2YWx1ZS50b0Jvb2woKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSAiV2Vi
S2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIikKKyAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJp
YnV0ZShRV2ViU2V0dGluZ3M6Okh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCwgdmFsdWUudG9Cb29s
KCkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkIikKKyAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkLCB2YWx1ZS50b0Jvb2woKSk7CisgICAgZWxzZSBp
ZiAobmFtZSA9PSAiV2ViS2l0RGlzcGxheUltYWdlc0tleSIpCisgICAgICAgIHNldHRpbmdzLT5z
ZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpBdXRvTG9hZEltYWdlcywgdmFsdWUudG9Cb29sKCkp
OworICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIpCisgICAgICAg
IHNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpXZWJBdWRpb0VuYWJsZWQsIHZh
bHVlLnRvQm9vbCgpKTsKKyAgICBlbHNlCisgICAgICAgIHByaW50ZigiRVJST1I6IFRlc3RSdW5u
ZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSgpIGRvZXMgbm90IHN1cHBvcnQgdGhlICclcycgcHJlZmVy
ZW5jZVxuIiwKKyAgICAgICAgICAgIG5hbWUudG9MYXRpbjEoKS5kYXRhKCkpOworfQorCit2b2lk
IFRlc3RSdW5uZXJRdDo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBRU3RyaW5nJiB1
cmwpCit7CisgICAgUUJ5dGVBcnJheSB1cmxEYXRhID0gcGF0aFRvTG9jYWxSZXNvdXJjZSh1cmwp
LnRvTGF0aW4xKCk7CisgICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uID0gUVVybDo6ZnJvbUVu
Y29kZWQodXJsRGF0YSwgUVVybDo6U3RyaWN0TW9kZSk7CisKKyAgICBpZiAobV91c2VyU3R5bGVT
aGVldEVuYWJsZWQpCisgICAgICAgIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCh0cnVlKTsKK30K
Kwordm9pZCBUZXN0UnVubmVyUXQ6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgdmFsdWUp
Cit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldENhcmV0QnJvd3NpbmdFbmFibGVk
KG1fZHJ0LT5wYWdlQWRhcHRlcigpLCB2YWx1ZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0Ojpz
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIHZhbHVlKQoreworICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChtX2RydC0+cGFn
ZUFkYXB0ZXIoKSwgdmFsdWUpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0VXNlclN0eWxl
U2hlZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3VzZXJTdHlsZVNoZWV0RW5hYmxl
ZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgbV9kcnQtPndlYlBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hlZXRVcmwobV91c2VyU3R5bGVTaGVldExvY2F0
aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNl
dFVzZXJTdHlsZVNoZWV0VXJsKFFVcmwoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRE
b21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25z
dCBRU3RyaW5nJiBzY2hlbWUpCit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERv
bWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwor
fQorCitib29sIFRlc3RSdW5uZXJRdDo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCkKK3sKKyAg
ICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNob3VsZENsb3NlKG1fZHJ0LT5tYWlu
RnJhbWVBZGFwdGVyKCkpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0U2Nyb2xsYmFyUG9s
aWN5KGNvbnN0IFFTdHJpbmcmIG9yaWVudGF0aW9uLCBjb25zdCBRU3RyaW5nJiBwb2xpY3kpCit7
CisgICAgUXQ6Ok9yaWVudGF0aW9uIG87CisgICAgUXQ6OlNjcm9sbEJhclBvbGljeSBwOworCisg
ICAgaWYgKG9yaWVudGF0aW9uID09ICJ2ZXJ0aWNhbCIpCisgICAgICAgIG8gPSBRdDo6VmVydGlj
YWw7CisgICAgZWxzZSBpZiAob3JpZW50YXRpb24gPT0gImhvcml6b250YWwiKQorICAgICAgICBv
ID0gUXQ6Okhvcml6b250YWw7CisgICAgZWxzZQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
cG9saWN5ID09ICJvbiIpCisgICAgICAgIHAgPSBRdDo6U2Nyb2xsQmFyQWx3YXlzT247CisgICAg
ZWxzZSBpZiAocG9saWN5ID09ICJhdXRvIikKKyAgICAgICAgcCA9IFF0OjpTY3JvbGxCYXJBc05l
ZWRlZDsKKyAgICBlbHNlIGlmIChwb2xpY3kgPT0gIm9mZiIpCisgICAgICAgIHAgPSBRdDo6U2Ny
b2xsQmFyQWx3YXlzT2ZmOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kcnQt
PndlYlBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldFNjcm9sbEJhclBvbGljeShvLCBwKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyUXQ6OmV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0
IFFTdHJpbmcmIHZhbHVlKQoreworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRl
Q29yZUNvbW1hbmRCeU5hbWUobV9kcnQtPnBhZ2VBZGFwdGVyKCksIG5hbWUsIHZhbHVlKTsKK30K
KworYm9vbCBUZXN0UnVubmVyUXQ6OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgUVN0cmluZyYgbmFt
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFu
ZEVuYWJsZWQobV9kcnQtPnBhZ2VBZGFwdGVyKCksIG5hbWUpOworfQorCitib29sIFRlc3RSdW5u
ZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHN0cmluZywg
SlNPYmplY3RSZWYgb3B0aW9uc0FycmF5KQoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBsZW5ndGhQcm9wZXJ0eU5hbWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJsZW5ndGgiKSk7CisgICAgSlNWYWx1ZVJlZiBsZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0UHJv
cGVydHkoY29udGV4dCwgb3B0aW9uc0FycmF5LCBsZW5ndGhQcm9wZXJ0eU5hbWUuZ2V0KCksIDAp
OworICAgIGlmICghSlNWYWx1ZUlzTnVtYmVyKGNvbnRleHQsIGxlbmd0aFZhbHVlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgUVdlYlBhZ2U6OkZpbmRGbGFncyBmaW5kRmxhZ3MgPSBR
V2ViUGFnZTo6RmluZENhc2VTZW5zaXRpdmVseTsKKworICAgIGludCBsZW5ndGggPSBzdGF0aWNf
Y2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBsZW5ndGhWYWx1ZSwgMCkpOworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiB2
YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHQsIG9wdGlvbnNBcnJheSwg
aSwgMCk7CisgICAgICAgIGlmICghSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBv
cHRpb25OYW1lKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCAwKSk7
CisgICAgICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG9wdGlvbk5hbWUuZ2V0
KCksICJDYXNlSW5zZW5zaXRpdmUiKSkKKyAgICAgICAgICAgIGZpbmRGbGFncyAmPSB+UVdlYlBh
Z2U6OkZpbmRDYXNlU2Vuc2l0aXZlbHk7CisgICAgICAgIGVsc2UgaWYgKEpTU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcob3B0aW9uTmFtZS5nZXQoKSwgIkF0V29yZFN0YXJ0cyIpKQorICAgICAg
ICAgICAgZmluZEZsYWdzIHw9IFFXZWJQYWdlOjpGaW5kQXRXb3JkQmVnaW5uaW5nc09ubHk7Cisg
ICAgICAgIGVsc2UgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcob3B0aW9uTmFtZS5n
ZXQoKSwgIlRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0IikpCisgICAgICAgICAgICBmaW5k
RmxhZ3MgfD0gIFFXZWJQYWdlOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRCZWdpbm5pbmc7Cisg
ICAgICAgIGVsc2UgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcob3B0aW9uTmFtZS5n
ZXQoKSwgIkJhY2t3YXJkcyIpKQorICAgICAgICAgICAgZmluZEZsYWdzIHw9ICBRV2ViUGFnZTo6
RmluZEJhY2t3YXJkOworICAgICAgICBlbHNlIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG9wdGlvbk5hbWUuZ2V0KCksICJXcmFwQXJvdW5kIikpCisgICAgICAgICAgICBmaW5kRmxh
Z3MgfD0gIFFXZWJQYWdlOjpGaW5kV3JhcHNBcm91bmREb2N1bWVudDsKKyAgICAgICAgZWxzZSBp
ZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhvcHRpb25OYW1lLmdldCgpLCAiU3RhcnRJ
blNlbGVjdGlvbiIpKQorICAgICAgICAgICAgZmluZEZsYWdzIHw9ICBRV2ViUGFnZTo6RmluZEJl
Z2luc0luU2VsZWN0aW9uOworICAgIH0KKworICAgIER1bXBSZW5kZXJUcmVlKiBkcnQgPSBEdW1w
UmVuZGVyVHJlZTo6aW5zdGFuY2UoKTsKKyAgICByZXR1cm4gZHJ0LT53ZWJQYWdlKCktPmZpbmRU
ZXh0KEpTU3RyaW5nQ29weVFTdHJpbmcoc3RyaW5nKSwgZmluZEZsYWdzKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyUXQ6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAg
aWYgKGVuYWJsZSAmJiAhbV9kcnQtPnBlcnNpc3RlbnRTdG9yYWdlUGF0aCgpLmlzRW1wdHkoKSkK
KyAgICAgICAgUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQYXRoKG1fZHJ0LT5wZXJzaXN0
ZW50U3RvcmFnZVBhdGgoKSk7CisgICAgZWxzZQorICAgICAgICBRV2ViU2V0dGluZ3M6OnNldElj
b25EYXRhYmFzZVBhdGgoUVN0cmluZygpKTsKK30KKwordm9pZCBUZXN0UnVubmVyUXQ6OnNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBi
b29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRv
dWJsZSBnYW1tYSkKK3sKKyAgICBRTGlzdDxXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxs
UGFnZXMoKTsKKyAgICBmb3JlYWNoIChXZWJQYWdlKiBwYWdlLCBwYWdlcykKKyAgICAgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihwYWdlLT5oYW5k
bGUoKSwgY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblBy
b3ZpZGVHYW1tYSwgZ2FtbWEpOworfQorCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0R2VvbG9jYXRp
b25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCit7CisgICAgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Q29tbW9uKGFsbG93KTsKKyAgICBRTGlzdDxXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxs
UGFnZXMoKTsKKyAgICBmb3JlYWNoIChXZWJQYWdlKiBwYWdlLCBwYWdlcykKKyAgICAgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24ocGFnZS0+
aGFuZGxlKCksIGFsbG93KTsKK30KKworaW50IFRlc3RSdW5uZXJRdDo6bnVtYmVyT2ZQZW5kaW5n
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQoreworICAgIGludCBwZW5kaW5nUGVybWlz
c2lvbkNvdW50ID0gMDsKKyAgICBRTGlzdDxXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxs
UGFnZXMoKTsKKyAgICBmb3JlYWNoIChXZWJQYWdlKiBwYWdlLCBwYWdlcykKKyAgICAgICAgcGVu
ZGluZ1Blcm1pc3Npb25Db3VudCArPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQ
ZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMocGFnZS0+aGFuZGxlKCkpOworCisg
ICAgcmV0dXJuIHBlbmRpbmdQZXJtaXNzaW9uQ291bnQ7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0
OjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYm9vbCBhbGxvdykKK3sKKyAgICAgbV9p
c0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9IHRydWU7CisgICAgIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uID0gYWxsb3c7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBRTGlzdDxXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxsUGFnZXMoKTsKKyAgICBmb3Jl
YWNoIChXZWJQYWdlKiBwYWdlLCBwYWdlcykKKyAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihwYWdlLT5oYW5k
bGUoKSwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSkKK3sKKyAgICBRTGlzdDxXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxsUGFnZXMo
KTsKKyAgICBmb3JlYWNoIChXZWJQYWdlKiBwYWdlLCBwYWdlcykKKyAgICAgICAgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKHBhZ2UtPmhhbmRsZSgp
LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0
OjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQoreworICAgIFFXZWJIaXN0b3J5KiBoaXN0b3J5ID0g
bV9kcnQtPndlYlBhZ2UoKS0+aGlzdG9yeSgpOworICAgIGhpc3RvcnktPmNsZWFyKCk7CisgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBWaXNpdGVkTGlua3NDYWxsYmFja3ModHJ1ZSk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjphZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcm
IG9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pCit7CisgICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmFkZFVSTFRvUmVkaXJlY3Qob3JpZ2luLCBkZXN0aW5hdGlvbik7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2wgYWNjZXB0KQor
eworICAgIFFXZWJTZXR0aW5ncyogZ2xvYmFsU2V0dGluZ3MgPSBRV2ViU2V0dGluZ3M6Omdsb2Jh
bFNldHRpbmdzKCk7CisgICAgaWYgKGFjY2VwdCkKKyAgICAgICAgZ2xvYmFsU2V0dGluZ3MtPnNl
dFRoaXJkUGFydHlDb29raWVQb2xpY3koUVdlYlNldHRpbmdzOjpBbHdheXNBbGxvd1RoaXJkUGFy
dHlDb29raWVzKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBTYWZh
cmkgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nIHBvbGljeSB0ZXN0ZWQgaW4gdGhpcmQtcGFy
dHktY29va2llLXJlbGF4aW5nLmh0bWwKKyAgICAgICAgZ2xvYmFsU2V0dGluZ3MtPnNldFRoaXJk
UGFydHlDb29raWVQb2xpY3koUVdlYlNldHRpbmdzOjpBbGxvd1RoaXJkUGFydHlXaXRoRXhpc3Rp
bmdDb29raWVzKTsKKyAgICB9Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBbHdheXNCbG9j
a0Nvb2tpZXMoYm9vbCBibG9jaykKK3sKKyAgICBRV2ViU2V0dGluZ3MqIGdsb2JhbFNldHRpbmdz
ID0gUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpOworICAgIGlmIChibG9jaykKKyAgICAg
ICAgZ2xvYmFsU2V0dGluZ3MtPnNldFRoaXJkUGFydHlDb29raWVQb2xpY3koUVdlYlNldHRpbmdz
OjpBbHdheXNCbG9ja1RoaXJkUGFydHlDb29raWVzKTsKKyAgICBlbHNlCisgICAgICAgIGdsb2Jh
bFNldHRpbmdzLT5zZXRUaGlyZFBhcnR5Q29va2llUG9saWN5KFFXZWJTZXR0aW5nczo6QWx3YXlz
QWxsb3dUaGlyZFBhcnR5Q29va2llcyk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBdWRp
b1Jlc3VsdChjb25zdCBRQnl0ZUFycmF5JiBhdWRpb0RhdGEpCit7CisgICAgbV9hdWRpb0RhdGEg
PSBhdWRpb0RhdGE7CisgICAgbV9hdWRpb0R1bXAgPSB0cnVlOworfQorCisvLyAtLS0gSlNDIEMg
QVBJIHN0dWJzCisKK3ZvaWQgVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmluZ1Jl
ZiB1cmwpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVy
bCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQoreworICAgIER1bXBSZW5kZXJUcmVlKiBkcnQgPSBEdW1w
UmVuZGVyVHJlZTo6aW5zdGFuY2UoKTsKKyAgICBRVXJsIG1haW5SZXNvdXJjZVVybCA9IGRydC0+
d2ViUGFnZSgpLT5tYWluRnJhbWUoKS0+dXJsKCk7CisgICAgUVN0cmluZyBhYnNvbHV0ZVVybCA9
IG1haW5SZXNvdXJjZVVybC5yZXNvbHZlZChRVXJsKEpTU3RyaW5nQ29weVFTdHJpbmcodXJsKSkp
LnRvRW5jb2RlZCgpOworICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSXRl
bShKU1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGFic29sdXRlVXJsKS5nZXQoKSwgdGFyZ2V0KSk7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKK3sKK30KKwor
dm9pZCBUZXN0UnVubmVyOjpzZXRBY2NlcHRzRWRpdGluZyhib29sKQoreworfQorCit2b2lkIFRl
c3RSdW5uZXI6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soSlNTdHJpbmdSZWYg
dGl0bGUpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0V2luZG93SXNLZXkoYm9vbCkKK3sK
K30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2wpCit7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSlNTdHJp
bmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBKU1N0
cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
Cit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0V2ViVmlld0VkaXRhYmxlKGJvb2wpCit7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpCit7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rpb25O
YW1lKQoreworICAgIFFXZWJQYWdlKiB3ZWJQYWdlID0gRHVtcFJlbmRlclRyZWU6Omluc3RhbmNl
KCktPndlYlBhZ2UoKTsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJl
Y3Rpb25OYW1lLCAiYXV0byIpKQorICAgICAgICB3ZWJQYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQ
YWdlOjpTZXRUZXh0RGlyZWN0aW9uRGVmYXVsdCk7CisgICAgZWxzZSBpZiAoSlNTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAicnRsIikpCisgICAgICAgIHdlYlBhZ2Ut
PnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rpb25SaWdodFRvTGVmdCk7Cisg
ICAgZWxzZSBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhkaXJlY3Rpb25OYW1lLCAi
bHRyIikpCisgICAgICAgIHdlYlBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNldFRleHRE
aXJlY3Rpb25MZWZ0VG9SaWdodCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSgp
Cit7Cit9CisKK2ludCBUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0cygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCit7
Cit9CisKK0pTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250
ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKDApOyAvLyAjIyMgVGFrZSBpbXBsIGZyb20gV1RSCit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQoreworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBu
b3RpZmljYXRpb24pCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2xvc2VJZGxlTG9jYWxTdG9y
YWdlRGF0YWJhc2VzKCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpmb2N1c1dlYlZpZXcoKQor
eworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUpCit7
Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK0pTVmFsdWVS
ZWYgVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UoSlNDb250ZXh0UmVmIGNvbnRl
eHQpCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpkZWxldGVBbGxMb2NhbFN0b3JhZ2UoKQoreworfQorCit2b2lkIFRlc3RSdW5u
ZXI6OmRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW5JZGVudGlm
aWVyKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6Om9ic2VydmVTdG9yYWdlVHJhY2tlck5vdGlm
aWNhdGlvbnModW5zaWduZWQgbnVtYmVyKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnN5bmNM
b2NhbFN0b3JhZ2UoKQoreworfQorCitpbnQgVGVzdFJ1bm5lcjo6d2luZG93Q291bnQoKQorewor
ICAgIHJldHVybiAwOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXAoYm9vbCkK
K3sKK30KKwordm9pZCBUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQoreworfQor
CitzaXplX3QgVGVzdFJ1bm5lcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCit7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IoKQoreworfQorCit2b2lkIFRlc3RSdW5u
ZXI6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIEpTU3RyaW5nUmVmIHNjcmlw
dCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCkK
K3sKK30KKwordm9pZCBUZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJM
KEpTU3RyaW5nUmVmIHV0ZjhEYXRhLCBKU1N0cmluZ1JlZiBiYXNlVVJMKQoreworfQorCit2b2lk
IFRlc3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJv
b2wgcGVybWlzc2l2ZSkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3Rh
KHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRE
b21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBKU1N0
cmluZ1JlZiBzY2hlbWUpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVzZXRQYWdlVmlzaWJp
bGl0eSgpCit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0UGFnZVZpc2liaWxp
dHkoRHVtcFJlbmRlclRyZWU6Omluc3RhbmNlKCktPnBhZ2VBZGFwdGVyKCkpOworfQorCit2b2lk
IFRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqIHZpc2liaWxpdHkpCit7
CisgICAgUUxhdGluMVN0cmluZyBuZXdWaXNpYmlsaXR5ID0gUUxhdGluMVN0cmluZyh2aXNpYmls
aXR5KTsKKyAgICBpZiAobmV3VmlzaWJpbGl0eSA9PSBRU3RyaW5nTGl0ZXJhbCgidmlzaWJsZSIp
KQorICAgICAgICBEdW1wUmVuZGVyVHJlZTo6aW5zdGFuY2UoKS0+d2ViUGFnZSgpLT5zZXRWaXNp
YmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZVZpc2libGUpOworICAgIGVsc2Ug
aWYgKG5ld1Zpc2liaWxpdHkgPT0gUVN0cmluZ0xpdGVyYWwoImhpZGRlbiIpKQorICAgICAgICBE
dW1wUmVuZGVyVHJlZTo6aW5zdGFuY2UoKS0+d2ViUGFnZSgpLT5zZXRWaXNpYmlsaXR5U3RhdGUo
UVdlYlBhZ2U6OlZpc2liaWxpdHlTdGF0ZUhpZGRlbik7CisgICAgZWxzZSBpZiAobmV3VmlzaWJp
bGl0eSA9PSBRU3RyaW5nTGl0ZXJhbCgicHJlcmVuZGVyIikpCisgICAgICAgIER1bXBSZW5kZXJU
cmVlOjppbnN0YW5jZSgpLT53ZWJQYWdlKCktPnNldFZpc2liaWxpdHlTdGF0ZShRV2ViUGFnZTo6
VmlzaWJpbGl0eVN0YXRlUHJlcmVuZGVyKTsKKyAgICBlbHNlIGlmIChuZXdWaXNpYmlsaXR5ID09
IFFTdHJpbmdMaXRlcmFsKCJ1bmxvYWRlZCIpKQorICAgICAgICBEdW1wUmVuZGVyVHJlZTo6aW5z
dGFuY2UoKS0+d2ViUGFnZSgpLT5zZXRWaXNpYmlsaXR5U3RhdGUoUVdlYlBhZ2U6OlZpc2liaWxp
dHlTdGF0ZVVubG9hZGVkKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgp
Cit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Z29CYWNrKCkKK3sKKyAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6Z29CYWNrKER1bXBSZW5kZXJUcmVlOjppbnN0YW5jZSgpLT5wYWdlQWRhcHRl
cigpKTsKK30KKworSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpvcmlnaW5zV2l0aEFwcGxpY2F0aW9u
Q2FjaGUoSlNDb250ZXh0UmVmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVs
bChjb250ZXh0KTsKK30KKworbG9uZyBsb25nIFRlc3RSdW5uZXI6OmFwcGxpY2F0aW9uQ2FjaGVE
aXNrVXNhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgbmFtZSkKK3sKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpkaXNwbGF5KCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpk
aXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OmNs
ZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0KCkKK3sKK30KKworYm9vbCBUZXN0UnVubmVyOjpj
YWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworSlNT
dHJpbmdSZWYgVGVzdFJ1bm5lcjo6Y29weURlY29kZWRIb3N0TmFtZShKU1N0cmluZ1JlZiBuYW1l
KQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygwKTsKK30KKwor
dm9pZCBUZXN0UnVubmVyOjpjbGVhckJhY2tGb3J3YXJkTGlzdCgpCit7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6Y2xlYXJBbGxEYXRhYmFzZXMoKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OmNs
ZWFyQXBwbGljYXRpb25DYWNoZUZvck9yaWdpbihKU1N0cmluZ1JlZiBuYW1lKQoreworfQorCit2
b2lkIFRlc3RSdW5uZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCit7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiB1cmws
IEpTU3RyaW5nUmVmIHVzZXJuYW1lLCBKU1N0cmluZ1JlZiBwYXNzd29yZCkKK3sKK30KKwordm9p
ZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRT
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZG91YmxlKQoreworfQorCit2b2lkIFRlc3RSdW5u
ZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZmxhZykKK3sKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCkKK3sKK30KKwordm9pZCBUZXN0
UnVubmVyOjpzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYgb3JpZW50YXRpb24sIEpTU3Ry
aW5nUmVmIHBvbGljeSkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2Fu
QWNjZXNzQ2xpcGJvYXJkKGJvb2wgZmxhZykKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sIGZsYWcpCit7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKK3sKK30KKwordm9p
ZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgp
Cit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGUoYm9vbCBmbGFnKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhib29sKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQoYm9vbCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQbHVnaW5z
RW5hYmxlZChib29sKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFBvcHVwQmxvY2tpbmdF
bmFibGVkKGJvb2wpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja1NwZWVjaElucHV0
RHVtcFJlY3QoYm9vbCBmbGFnKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCit7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNBbHRpdHVkZSwg
ZG91YmxlIGFsdGl0dWRlLCBib29sIHByb3ZpZGVzQWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3ksIGJvb2wgcHJvdmlkZXNIZWFkaW5nLCBkb3VibGUgaGVhZGluZywgYm9v
bCBwcm92aWRlc1NwZWVkLCBkb3VibGUgc3BlZWQpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1l
c3NhZ2UpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9u
KGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEs
IGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworfQor
Cit2b2lkIFRlc3RSdW5uZXI6OnNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBmbGFn
KQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCkK
K3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBh
bGxvdykKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZmxh
ZykKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RGVmZXJzTG9hZGluZyhEdW1w
UmVuZGVyVHJlZTo6aW5zdGFuY2UoKS0+cGFnZUFkYXB0ZXIoKSwgZmxhZyk7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCkKK3sKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCkKK3sKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyhib29sKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQorewor
fQorCit2b2lkIFRlc3RSdW5uZXI6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihKU1N0
cmluZ1JlZiBvcmlnaW4pCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2Vy
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkK
K3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRWaWV3TW9kZU1lZGlhRmVhdHVyZShKU1N0cmlu
Z1JlZikKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQo
SlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3Vh
Z2UpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvblBy
b3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6YWRkVXNlclNjcmlwdChKU1N0
cmluZ1JlZiBzb3VyY2UsIGJvb2wgcnVuQXRTdGFydCwgYm9vbCBhbGxGcmFtZXMpCit7Cit9CisK
K2Jvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdElu
SXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBKU09iamVjdFJlZiBnbG9iYWxPYmplY3Qs
IEpTU3RyaW5nUmVmIHNjcmlwdCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZh
bHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoRHVtcFJlbmRlclRyZWU6Omluc3RhbmNlKCktPm1h
aW5GcmFtZUFkYXB0ZXIoKSwgd29ybGRJRCwgSlNTdHJpbmdDb3B5UVN0cmluZyhzY3JpcHQpKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJl
dHVyblZhbHVlKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCwgSlNT
dHJpbmdSZWYgc2NyaXB0KQoreworfQorCitKU1N0cmluZ1JlZiBUZXN0UnVubmVyOjpjb3B5RW5j
b2RlZEhvc3ROYW1lKEpTU3RyaW5nUmVmIG5hbWUpCit7CisgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKDApOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTdHls
ZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBhbGxGcmFtZXMpCit7CisgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVzZXJTdHlsZVNoZWV0KER1bXBSZW5kZXJUcmVlOjppbnN0
YW5jZSgpLT5wYWdlQWRhcHRlcigpLCBKU1N0cmluZ0NvcHlRU3RyaW5nKHNvdXJjZSkpOworfQor
Cit2b2lkIFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5nUmVmIG5hbWUsIEpTU3RyaW5n
UmVmIHZhbHVlKQoreworfQorCitsb25nIGxvbmcgVGVzdFJ1bm5lcjo6bG9jYWxTdG9yYWdlRGlz
a1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG9yaWdpbklkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5u
ZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIwMjZlMQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0wLDAgKzEsMjI1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0
dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlc3RSdW5uZXJRdF9oCisjZGVmaW5lIFRl
c3RSdW5uZXJRdF9oCisKKyNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyNpbmNsdWRlIDxRT2JqZWN0
PgorI2luY2x1ZGUgPFFTaXplPgorI2luY2x1ZGUgPFFTdHJpbmc+CisjaW5jbHVkZSA8UVRpbWVy
PgorI2luY2x1ZGUgPFFUaW1lckV2ZW50PgorI2luY2x1ZGUgPFFWYXJpYW50PgorI2luY2x1ZGUg
PFF0RGVidWc+CisKKyNpbmNsdWRlIDxxd2ViZGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxxd2ViZWxl
bWVudC5oPgorI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5Lmg+
CisjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KKyNpbmNsdWRlIDxxd2Vic2VjdXJpdHlvcmlnaW4uaD4K
KworY2xhc3MgUVdlYkZyYW1lOworY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7CitjbGFz
cyBEdW1wUmVuZGVyVHJlZTsKKworY2xhc3MgVGVzdFJ1bm5lclF0IDogcHVibGljIFFPYmplY3Qg
eworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShpbnQgd2ViSGlzdG9yeUl0ZW1Db3VudCBS
RUFEIHdlYkhpc3RvcnlJdGVtQ291bnQpCisgICAgUV9QUk9QRVJUWShib29sIGdsb2JhbEZsYWcg
UkVBRCBnbG9iYWxGbGFnIFdSSVRFIHNldEdsb2JhbEZsYWcpCitwdWJsaWM6CisgICAgVGVzdFJ1
bm5lclF0KER1bXBSZW5kZXJUcmVlKik7CisKKyAgICBib29sIHNob3VsZER1bXBBc0F1ZGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9hdWRpb0R1bXA7IH0KKyAgICBib29sIHNob3VsZFdhaXRVbnRpbERv
bmUoKSBjb25zdCB7IHJldHVybiBtX3dhaXRGb3JEb25lOyB9CisgICAgYm9vbCBzaG91bGRIYW5k
bGVFcnJvclBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVFcnJvclBhZ2VzOyB9CisgICAg
Ym9vbCB3YWl0Rm9yUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV93YWl0Rm9yUG9saWN5OyB9Cisg
ICAgYm9vbCBpZ25vcmVSZXFlc3RGb3JQZXJtaXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9pZ25v
cmVEZXNrdG9wTm90aWZpY2F0aW9uOyB9CisKKyAgICBjb25zdCBRQnl0ZUFycmF5JiBhdWRpb0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvRGF0YTsgfQorCisgICAgdm9pZCByZXNldCgpOwor
CisgICAgdm9pZCBzZXRUaW1lb3V0KGludCB0aW1lb3V0KSB7IG1fdGltZW91dCA9IHRpbWVvdXQ7
IH0KKyAgICB2b2lkIHNldFNob3VsZFRpbWVvdXQoYm9vbCBmbGFnKSB7IG1fc2hvdWxkVGltZW91
dCA9IGZsYWc7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVu
dCopOworCitRX1NJR05BTFM6CisgICAgdm9pZCBkb25lKCk7CisKKyAgICB2b2lkIHNob3dQYWdl
KCk7CisgICAgdm9pZCBoaWRlUGFnZSgpOworICAgIHZvaWQgZ2VvbG9jYXRpb25QZXJtaXNzaW9u
U2V0KCk7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgbWF5YmVEdW1wKGJvb2wgb2spOwor
ICAgIHZvaWQgZHVtcE5vdGlmaWNhdGlvbnMoKTsKKyAgICB2b2lkIHdhaXRVbnRpbERvbmUoKTsK
KyAgICBpbnQgd2ViSGlzdG9yeUl0ZW1Db3VudCgpOworICAgIHZvaWQga2VlcFdlYkhpc3Rvcnko
KTsKKyAgICB2b2lkIG5vdGlmeURvbmUoKTsKKyAgICBib29sIGdsb2JhbEZsYWcoKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbEZsYWc7IH0KKyAgICB2b2lkIHNldEdsb2JhbEZsYWcoYm9vbCBmbGFn
KSB7IG1fZ2xvYmFsRmxhZyA9IGZsYWc7IH0KKyAgICB2b2lkIGhhbmRsZUVycm9yUGFnZXMoKSB7
IG1faGFuZGxlRXJyb3JQYWdlcyA9IHRydWU7IH0KKyAgICB2b2lkIGR1bXBFZGl0aW5nQ2FsbGJh
Y2tzKCk7CisgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgdm9pZCBkdW1w
UHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKCk7CisgICAgdm9pZCBkdW1wVXNlckdlc3R1cmVJbkZy
YW1lTG9hZENhbGxiYWNrcygpOworICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
OworICAgIHZvaWQgZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKKyAgICB2b2lkIGR1
bXBXaWxsQ2FjaGVSZXNwb25zZSgpOworICAgIHZvaWQgZHVtcEhpc3RvcnlDYWxsYmFja3MoKTsK
KyAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChib29sIGVu
YWJsZWQpOworICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoYm9vbCBlbmFi
bGVkKTsKKyAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKGNvbnN0IFFTdHJp
bmdMaXN0JiBoZWFkZXJzKTsKKyAgICB2b2lkIHF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhvd0Zh
ckJhY2t3YXJkKTsKKyAgICB2b2lkIHF1ZXVlRm9yd2FyZE5hdmlnYXRpb24oaW50IGhvd0ZhckZv
cndhcmQpOworICAgIHZvaWQgcXVldWVMb2FkSFRNTFN0cmluZyhjb25zdCBRU3RyaW5nJiBjb250
ZW50LCBjb25zdCBRU3RyaW5nJiBiYXNlVVJMID0gUVN0cmluZygpLCBjb25zdCBRU3RyaW5nJiBm
YWlsaW5nVVJMID0gUVN0cmluZygpKTsKKyAgICB2b2lkIHF1ZXVlUmVsb2FkKCk7CisgICAgdm9p
ZCBxdWV1ZUxvYWRpbmdTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKKyAgICB2b2lkIHF1
ZXVlTm9uTG9hZGluZ1NjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQpOworICAgIHZvaWQgcHJv
dmlzaW9uYWxMb2FkKCk7CisgICAgaW50IHdpbmRvd0NvdW50KCk7CisgICAgdm9pZCBpZ25vcmVM
ZWdhY3lXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsKKyAgICB2b2lkIHNpbXVs
YXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgUVN0cmluZyYgdGl0bGUpOworICAg
IHZvaWQgZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFFTdHJpbmcmIG9yaWdp
bik7CisgICAgdm9pZCBkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBRU3RyaW5n
JiBvcmlnaW4pOworICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
KTsKKyAgICB2b2lkIGRpc3BsYXkoKTsKKyAgICB2b2lkIGRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lv
bigpOworICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBRU3RyaW5nIHBhdGhU
b0xvY2FsUmVzb3VyY2UoY29uc3QgUVN0cmluZyYgdXJsKTsKKyAgICBRU3RyaW5nIGVuY29kZUhv
c3ROYW1lKGNvbnN0IFFTdHJpbmcmIGhvc3QpOworICAgIFFTdHJpbmcgZGVjb2RlSG9zdE5hbWUo
Y29uc3QgUVN0cmluZyYgaG9zdCk7CisgICAgdm9pZCBkdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0
IHsgfQorICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sKTsKKyAgICB2b2lk
IHNob3dXZWJJbnNwZWN0b3IoKTsKKyAgICB2b2lkIGNsb3NlV2ViSW5zcGVjdG9yKCk7CisgICAg
dm9pZCBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGxvbmcgY2FsbElkLCBjb25zdCBRU3RyaW5nJiBz
Y3JpcHQpOworICAgIHZvaWQgcmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CisgICAgdm9pZCBzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZSk7CisgICAgdm9pZCBz
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0
QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOworICAgIHZvaWQg
c2V0VmFsdWVGb3JVc2VyKGNvbnN0IFFXZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUp
OworICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KyAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5n
RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFBPU0lYTG9jYWxlKGNvbnN0IFFTdHJpbmcmIGxv
Y2FsZSk7CisgICAgdm9pZCByZXNldExvYWRGaW5pc2hlZCgpIHsgbV9sb2FkRmluaXNoZWQgPSBm
YWxzZTsgfQorICAgIHZvaWQgc2V0V2luZG93SXNLZXkoYm9vbCk7CisgICAgdm9pZCBzZXREZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKGJvb2wpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZChib29sIGVuYWJsZSk7CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxl
ZChib29sKTsKKyAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIHZv
aWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRWaWV3
TW9kZU1lZGlhRmVhdHVyZShjb25zdCBRU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIGV4ZWNDb21t
YW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlID0gUVN0cmluZygp
KTsKKyAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoY29uc3QgUVN0cmluZyYgbmFtZSkgY29uc3Q7
CisKKyAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3Qg
UVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KTsKKyAgICB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJp
bmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29u
c3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKKworICAgIHZvaWQgY2xlYXJBbGxBcHBsaWNhdGlvbkNhY2hlcygpOworICAgIHZvaWQg
c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAg
UVN0cmluZ0xpc3Qgb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCk7CisKKyAgICB2b2lkIHNl
dERhdGFiYXNlUXVvdGEoaW50IHNpemUpOworICAgIHZvaWQgY2xlYXJBbGxEYXRhYmFzZXMoKTsK
KyAgICB2b2lkIHNldEljb25EYXRhYmFzZUVuYWJsZWQoYm9vbCk7CisKKyAgICB2b2lkIHNldEN1
c3RvbVBvbGljeURlbGVnYXRlKGJvb2wgZW5hYmxlZCwgYm9vbCBwZXJtaXNzaXZlID0gZmFsc2Up
OworICAgIHZvaWQgd2FpdEZvclBvbGljeURlbGVnYXRlKCk7CisKKyAgICB2b2lkIG92ZXJyaWRl
UHJlZmVyZW5jZShjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRVmFyaWFudCYgdmFsdWUpOwor
ICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBRU3RyaW5nJiB1cmwpOwor
ICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0RG9t
YWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3Qg
UVN0cmluZyYgc2NoZW1lKTsKKyAgICBib29sIGNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpOwor
CisgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEs
IGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2Fu
UHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOworCisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CisgICAg
dm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CisgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1p
c3Npb24oYm9vbCBhbGxvdyk7CisgICAgaW50IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzKCk7CisgICAgYm9vbCBpc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7IH0KKyAgICBib29s
IGdlb2xvY2F0aW9uUGVybWlzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uOyB9CisKKyAgICB2b2lkIGFkZFVSTFRvUmVkaXJlY3QoY29uc3QgUVN0cmluZyYgb3Jp
Z2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CisKKyAgICAvKgorICAgICAgICBQb2xp
Y3kgdmFsdWVzOiAnb24nLCAnYXV0bycgb3IgJ29mZicuCisgICAgICAgIE9yaWVudGF0aW9uIHZh
bHVlczogJ3ZlcnRpY2FsJyBvciAnaG9yaXpvbnRhbCcuCisgICAgKi8KKyAgICB2b2lkIHNldFNj
cm9sbGJhclBvbGljeShjb25zdCBRU3RyaW5nJiBvcmllbnRhdGlvbiwgY29uc3QgUVN0cmluZyYg
cG9saWN5KTsKKworICAgIHZvaWQgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhib29sKTsKKyAgICB2
b2lkIHNldEFsd2F5c0Jsb2NrQ29va2llcyhib29sKTsKKworICAgIHZvaWQgc2V0QXVkaW9SZXN1
bHQoY29uc3QgUUJ5dGVBcnJheSYpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBwcm9j
ZXNzV29yaygpOworCitwcml2YXRlOgorICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
Q29tbW9uKGJvb2wgYWxsb3cpOworCitwcml2YXRlOgorICAgIGJvb2wgbV9oYXNEdW1wZWQ7Cisg
ICAgYm9vbCBtX2F1ZGlvRHVtcDsKKyAgICBib29sIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxp
Y2F0aW9uQ2FjaGVRdW90YTsKKyAgICBib29sIG1fY2FuT3BlbldpbmRvd3M7CisgICAgYm9vbCBt
X3dhaXRGb3JEb25lOworICAgIGJvb2wgbV93YWl0Rm9yUG9saWN5OworICAgIGJvb2wgbV9oYW5k
bGVFcnJvclBhZ2VzOworICAgIGJvb2wgbV9sb2FkRmluaXNoZWQ7CisgICAgYm9vbCBtX2dsb2Jh
bEZsYWc7CisgICAgYm9vbCBtX3VzZXJTdHlsZVNoZWV0RW5hYmxlZDsKKyAgICBib29sIG1faXNH
ZW9sb2NhdGlvblBlcm1pc3Npb25TZXQ7CisgICAgYm9vbCBtX2dlb2xvY2F0aW9uUGVybWlzc2lv
bjsKKworICAgIFFVcmwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOworICAgIFFCYXNpY1RpbWVy
IG1fdGltZW91dFRpbWVyOworICAgIFFXZWJGcmFtZSogbV90b3BMb2FkaW5nRnJhbWU7CisgICAg
RHVtcFJlbmRlclRyZWUqIG1fZHJ0OworICAgIFFXZWJIaXN0b3J5KiBtX3dlYkhpc3Rvcnk7Cisg
ICAgYm9vbCBtX2lnbm9yZURlc2t0b3BOb3RpZmljYXRpb247CisKKyAgICBRQnl0ZUFycmF5IG1f
YXVkaW9EYXRhOworCisgICAgYm9vbCBtX3Nob3VsZFRpbWVvdXQ7CisgICAgaW50IG1fdGltZW91
dDsKK307CisKKyNlbmRpZiAvLyBUZXN0UnVubmVyUXRfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMzhlNDg5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L1RleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAKQEAgLTAsMCArMSwxNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0
cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0
SW5wdXRDb250cm9sbGVyUXQuaCIKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
IgorCisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFJbnB1dE1ldGhvZEV2ZW50
PgorI2luY2x1ZGUgPFFLZXlFdmVudD4KKworVGV4dElucHV0Q29udHJvbGxlcjo6VGV4dElucHV0
Q29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCit7Cit9
CisKK3ZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6ZG9Db21tYW5kKGNvbnN0IFFTdHJpbmcmIGNv
bW1hbmQpCit7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycyA9IFF0OjpOb01v
ZGlmaWVyOworICAgIGludCBrZXljb2RlID0gMDsKKyAgICBpZiAoY29tbWFuZCA9PSAibW92ZUJh
Y2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uOiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpT
aGlmdE1vZGlmaWVyOworICAgICAgICBrZXljb2RlID0gUXQ6OktleV9MZWZ0OworICAgIH0gZWxz
ZSBpZiAoY29tbWFuZCA9PSJtb3ZlRG93bjoiKSB7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5
X0Rvd247CisgICAgfSBlbHNlIGlmIChjb21tYW5kID09Im1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uOiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpTaGlmdE1vZGlmaWVyOworICAgICAg
ICBrZXljb2RlID0gUXQ6OktleV9Eb3duOworICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSJtb3Zl
Rm9yd2FyZDoiKSB7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X1JpZ2h0OworICAgIH0gZWxz
ZSBpZiAoY29tbWFuZCA9PSJtb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKSB7CisgICAg
ICAgIG1vZGlmaWVycyB8PSBRdDo6U2hpZnRNb2RpZmllcjsKKyAgICAgICAga2V5Y29kZSA9IFF0
OjpLZXlfUmlnaHQ7CisgICAgfSBlbHNlIGlmIChjb21tYW5kID09Im1vdmVMZWZ0OiIpIHsKKyAg
ICAgICAga2V5Y29kZSA9IFF0OjpLZXlfTGVmdDsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0i
bW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb246IikgeworICAgICAgICBtb2RpZmllcnMgfD0gUXQ6
OlNoaWZ0TW9kaWZpZXI7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X0xlZnQ7CisgICAgfSBl
bHNlIGlmIChjb21tYW5kID09Im1vdmVSaWdodDoiKSB7CisgICAgICAgIGtleWNvZGUgPSBRdDo6
S2V5X1JpZ2h0OworICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSJtb3ZlUmlnaHRBbmRNb2RpZnlT
ZWxlY3Rpb246IikgeworICAgICAgICBtb2RpZmllcnMgfD0gUXQ6OlNoaWZ0TW9kaWZpZXI7Cisg
ICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X1JpZ2h0OworICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9
PSJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50OiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0
OjpDb250cm9sTW9kaWZpZXI7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X0hvbWU7CisgICAg
fSBlbHNlIGlmIChjb21tYW5kID09Im1vdmVUb0JlZ2lubmluZ09mTGluZToiKSB7CisgICAgICAg
IGtleWNvZGUgPSBRdDo6S2V5X0hvbWU7CisvLyAgICAgfSBlbHNlIGlmIChjb21tYW5kID09Im1v
dmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOiIpIHsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0i
bW92ZVRvRW5kT2ZEb2N1bWVudDoiKSB7CisgICAgICAgIG1vZGlmaWVycyB8PSBRdDo6Q29udHJv
bE1vZGlmaWVyOworICAgICAgICBrZXljb2RlID0gUXQ6OktleV9FbmQ7CisgICAgfSBlbHNlIGlm
IChjb21tYW5kID09Im1vdmVUb0VuZE9mTGluZToiKSB7CisgICAgICAgIGtleWNvZGUgPSBRdDo6
S2V5X0VuZDsKKy8vICAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0ibW92ZVRvRW5kT2ZQYXJhZ3Jh
cGg6IikgeworICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PSJtb3ZlVXA6IikgeworICAgICAgICBr
ZXljb2RlID0gUXQ6OktleV9VcDsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0ibW92ZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uOiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpTaGlmdE1vZGlm
aWVyOworICAgICAgICBrZXljb2RlID0gUXQ6OktleV9VcDsKKyAgICB9IGVsc2UgaWYgKGNvbW1h
bmQgPT0ibW92ZVdvcmRCYWNrd2FyZDoiKSB7CisgICAgICAgIG1vZGlmaWVycyB8PSBRdDo6Q29u
dHJvbE1vZGlmaWVyOworICAgICAgICBrZXljb2RlID0gUXQ6OktleV9VcDsKKyAgICB9IGVsc2Ug
aWYgKGNvbW1hbmQgPT0ibW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKSB7Cisg
ICAgICAgIG1vZGlmaWVycyB8PSBRdDo6U2hpZnRNb2RpZmllcjsKKyAgICAgICAgbW9kaWZpZXJz
IHw9IFF0OjpDb250cm9sTW9kaWZpZXI7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X0xlZnQ7
CisgICAgfSBlbHNlIGlmIChjb21tYW5kID09Im1vdmVXb3JkRm9yd2FyZDoiKSB7CisgICAgICAg
IG1vZGlmaWVycyB8PSBRdDo6Q29udHJvbE1vZGlmaWVyOworICAgICAgICBrZXljb2RlID0gUXQ6
OktleV9SaWdodDsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0ibW92ZVdvcmRGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uOiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpDb250cm9sTW9k
aWZpZXI7CisgICAgICAgIG1vZGlmaWVycyB8PSBRdDo6U2hpZnRNb2RpZmllcjsKKyAgICAgICAg
a2V5Y29kZSA9IFF0OjpLZXlfUmlnaHQ7CisgICAgfSBlbHNlIGlmIChjb21tYW5kID09Im1vdmVX
b3JkTGVmdDoiKSB7CisgICAgICAgIG1vZGlmaWVycyB8PSBRdDo6Q29udHJvbE1vZGlmaWVyOwor
ICAgICAgICBrZXljb2RlID0gUXQ6OktleV9MZWZ0OworICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9
PSJtb3ZlV29yZFJpZ2h0OiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpDb250cm9sTW9k
aWZpZXI7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X0xlZnQ7CisgICAgfSBlbHNlIGlmIChj
b21tYW5kID09Im1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb246IikgeworICAgICAgICBt
b2RpZmllcnMgfD0gUXQ6OlNoaWZ0TW9kaWZpZXI7CisgICAgICAgIG1vZGlmaWVycyB8PSBRdDo6
Q29udHJvbE1vZGlmaWVyOworICAgICAgICBrZXljb2RlID0gUXQ6OktleV9SaWdodDsKKyAgICB9
IGVsc2UgaWYgKGNvbW1hbmQgPT0ibW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uOiIpIHsK
KyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpTaGlmdE1vZGlmaWVyOworICAgICAgICBtb2RpZmll
cnMgfD0gUXQ6OkNvbnRyb2xNb2RpZmllcjsKKyAgICAgICAga2V5Y29kZSA9IFF0OjpLZXlfTGVm
dDsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0icGFnZURvd246IikgeworICAgICAgICBrZXlj
b2RlID0gUXQ6OktleV9QYWdlRG93bjsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0icGFnZVVw
OiIpIHsKKyAgICAgICAga2V5Y29kZSA9IFF0OjpLZXlfUGFnZVVwOworICAgIH0gZWxzZSBpZiAo
Y29tbWFuZCA9PSAiZGVsZXRlV29yZEJhY2t3YXJkOiIpIHsKKyAgICAgICAgbW9kaWZpZXJzIHw9
IFF0OjpDb250cm9sTW9kaWZpZXI7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X0JhY2tzcGFj
ZTsKKyAgICB9IGVsc2UgaWYgKGNvbW1hbmQgPT0gImRlbGV0ZUJhY2t3YXJkOiIpIHsKKyAgICAg
ICAga2V5Y29kZSA9IFF0OjpLZXlfQmFja3NwYWNlOworICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9
PSAiZGVsZXRlRm9yd2FyZDoiKSB7CisgICAgICAgIGtleWNvZGUgPSBRdDo6S2V5X0RlbGV0ZTsK
KyAgICB9CisKKyAgICBRS2V5RXZlbnQgZXZlbnQoUUV2ZW50OjpLZXlQcmVzcywga2V5Y29kZSwg
bW9kaWZpZXJzKTsKKyAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50
KTsKKyAgICBRS2V5RXZlbnQgZXZlbnQyKFFFdmVudDo6S2V5UmVsZWFzZSwga2V5Y29kZSwgbW9k
aWZpZXJzKTsKKyAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChwYXJlbnQoKSwgJmV2ZW50Mik7
Cit9CisKK3ZvaWQgVGV4dElucHV0Q29udHJvbGxlcjo6c2V0TWFya2VkVGV4dChjb25zdCBRU3Ry
aW5nJiBzdHJpbmcsIGludCBzdGFydCwgaW50IGVuZCkKK3sKKyAgICBRTGlzdDxRSW5wdXRNZXRo
b2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgIFFJbnB1dE1ldGhvZEV2ZW50OjpB
dHRyaWJ1dGUgc2VsZWN0aW9uKFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb24sIHN0YXJ0LCBl
bmQsIFFWYXJpYW50KCkpOworICAgIGF0dHJpYnV0ZXMgPDwgc2VsZWN0aW9uOworICAgIFFJbnB1
dE1ldGhvZEV2ZW50IGV2ZW50KHN0cmluZywgYXR0cmlidXRlcyk7CisgICAgUUFwcGxpY2F0aW9u
OjpzZW5kRXZlbnQocGFyZW50KCksICZldmVudCk7Cit9CisKK3ZvaWQgVGV4dElucHV0Q29udHJv
bGxlcjo6aW5zZXJ0VGV4dChjb25zdCBRU3RyaW5nJiBzdHJpbmcpCit7CisgICAgUUxpc3Q8UUlu
cHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICBRSW5wdXRNZXRob2RF
dmVudCBldmVudChzdHJpbmcsIGF0dHJpYnV0ZXMpOworICAgIGV2ZW50LnNldENvbW1pdFN0cmlu
ZyhzdHJpbmcpOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KHBhcmVudCgpLCAmZXZlbnQp
OworfQorCitRVmFyaWFudExpc3QgVGV4dElucHV0Q29udHJvbGxlcjo6c2VsZWN0ZWRSYW5nZSgp
Cit7CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZWxlY3RlZFJhbmdlKHFv
YmplY3RfY2FzdDxRV2ViUGFnZSo+KHBhcmVudCgpKS0+aGFuZGxlKCkpOworfQorCitRVmFyaWFu
dExpc3QgVGV4dElucHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50
IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UocW9iamVjdF9jYXN0PFFXZWJQYWdlKj4o
cGFyZW50KCkpLT5oYW5kbGUoKSwgbG9jYXRpb24sIGxlbmd0aCk7Cit9CisKK3ZvaWQgVGV4dElu
cHV0Q29udHJvbGxlcjo6dW5tYXJrVGV4dCgpCit7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmNvbmZpcm1Db21wb3NpdGlvbihxb2JqZWN0X2Nhc3Q8UVdlYlBhZ2UqPihwYXJlbnQoKSkt
PmhhbmRsZSgpLCAwKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rl
eHRJbnB1dENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGV4dElucHV0
Q29udHJvbGxlclF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0MDI3
MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1RleHRJbnB1dENv
bnRyb2xsZXJRdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20v
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21w
dXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNp
Zm5kZWYgVGV4dElucHV0Q29udHJvbGxlclF0X2gKKyNkZWZpbmUgVGV4dElucHV0Q29udHJvbGxl
clF0X2gKKworI2luY2x1ZGUgPFFMaXN0PgorI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8
UVZhcmlhbnQ+CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlICJxd2VicGFnZS5oIgorCitj
bGFzcyBUZXh0SW5wdXRDb250cm9sbGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNU
CitwdWJsaWM6CisgICAgVGV4dElucHV0Q29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KTsKKwor
cHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBkb0NvbW1hbmQoY29uc3QgUVN0cmluZyYgY29tbWFu
ZCk7CisgICAgdm9pZCBzZXRNYXJrZWRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgaW50IHN0
YXJ0LCBpbnQgZW5kKTsKKy8vICAgICBib29sIGhhc01hcmtlZFRleHQoKTsKKyAgICAgdm9pZCB1
bm1hcmtUZXh0KCk7CisvLyAgICAgUUxpc3Q8aW50PiBtYXJrZWRSYW5nZSgpOworICAgIFFWYXJp
YW50TGlzdCBzZWxlY3RlZFJhbmdlKCk7CisvLyAgICAgdm9pZCB2YWxpZEF0dHJpYnV0ZXNGb3JN
YXJrZWRUZXh0KCk7CisgICAgdm9pZCBpbnNlcnRUZXh0KGNvbnN0IFFTdHJpbmcmIHN0cmluZyk7
CisgICAgUVZhcmlhbnRMaXN0IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGludCBsb2NhdGlv
biwgaW50IGxlbmd0aCk7CisvLyAgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50KGludCwg
aW50KTsKKy8vICAgICB2b2lkIHN1YnN0cmluZ0Zyb21SYW5nZShpbnQsIGludCk7CisvLyAgICAg
dm9pZCBjb252ZXJzYXRpb25JZGVudGlmaWVyKCk7Cit9OworI2VuZGlmIC8vIFRleHRJbnB1dENv
bnRyb2xsZXJRdF9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9Xb3JrUXVl
dWVJdGVtUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDIzYTNiNAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1dvcmtRdWV1ZUl0ZW1RdC5jcHAKQEAg
LTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXb3JrUXVldWVJdGVtUXQuaCIKKworI2luY2x1ZGUgIkR1bXBSZW5kZXJU
cmVlUXQuaCIKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgorI2luY2x1ZGUg
IkpTU3RyaW5nUmVmUXQuaCIKKworUVdlYkZyYW1lKiBmaW5kRnJhbWVOYW1lZChjb25zdCBRU3Ry
aW5nJiBmcmFtZU5hbWUsIFFXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKGZyYW1lLT5mcmFt
ZU5hbWUoKSA9PSBmcmFtZU5hbWUpCisgICAgICAgIHJldHVybiBmcmFtZTsKKworICAgIGZvcmVh
Y2ggKFFXZWJGcmFtZSogY2hpbGRGcmFtZSwgZnJhbWUtPmNoaWxkRnJhbWVzKCkpCisgICAgICAg
IGlmIChRV2ViRnJhbWUqIGYgPSBmaW5kRnJhbWVOYW1lZChmcmFtZU5hbWUsIGNoaWxkRnJhbWUp
KQorICAgICAgICAgICAgcmV0dXJuIGY7CisKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBMb2Fk
SXRlbTo6aW52b2tlKCkgY29uc3QKK3sKKyAgICAvL3FEZWJ1ZygpIDw8ICI+Pj5Mb2FkSXRlbTo6
aW52b2tlIjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gRHVtcFJlbmRlclRyZWU6Omluc3RhbmNl
KCktPndlYlBhZ2UoKTsKKyAgICBRX0FTU0VSVCh3ZWJQYWdlKTsKKworICAgIFFXZWJGcmFtZSog
ZnJhbWUgPSAwOworICAgIGlmIChKU1N0cmluZ0dldExlbmd0aChtX3RhcmdldC5nZXQoKSkpCisg
ICAgICAgIGZyYW1lID0gZmluZEZyYW1lTmFtZWQoSlNTdHJpbmdDb3B5UVN0cmluZyhtX3Rhcmdl
dC5nZXQoKSksIHdlYlBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGZyYW1l
ID0gd2ViUGFnZS0+bWFpbkZyYW1lKCk7CisKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmcmFtZS0+bG9hZChRVXJsKEpTU3RyaW5nQ29weVFTdHJpbmcobV91
cmwuZ2V0KCkpKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTG9hZEhUTUxTdHJpbmdJ
dGVtOjppbnZva2UoKSBjb25zdAoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBEdW1wUmVuZGVy
VHJlZTo6aW5zdGFuY2UoKS0+d2ViUGFnZSgpOworICAgIFFfQVNTRVJUKHdlYlBhZ2UpOworCisg
ICAgUVdlYkZyYW1lKiBmcmFtZSA9IHdlYlBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZyYW1lLT5zZXRIdG1sKEpTU3RyaW5n
Q29weVFTdHJpbmcobV9jb250ZW50LmdldCgpKSwgUVVybChKU1N0cmluZ0NvcHlRU3RyaW5nKG1f
YmFzZVVSTC5nZXQoKSkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBMb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZ0l0ZW06Omludm9rZSgpIGNvbnN0Cit7CisgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IER1bXBSZW5kZXJUcmVlOjppbnN0YW5jZSgpLT53ZWJQYWdlKCk7CisgICAgUV9BU1NFUlQo
d2ViUGFnZSk7CisKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gd2ViUGFnZS0+bWFpbkZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldEFsdGVybmF0ZUh0bWwoZnJhbWUtPmhhbmRsZSgpLCBKU1N0cmlu
Z0NvcHlRU3RyaW5nKG1fY29udGVudC5nZXQoKSksIFFVcmwoSlNTdHJpbmdDb3B5UVN0cmluZyht
X2Jhc2VVUkwuZ2V0KCkpKSwgUVVybChKU1N0cmluZ0NvcHlRU3RyaW5nKG1fZmFpbGluZ1VSTC5n
ZXQoKSkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZWxvYWRJdGVtOjppbnZva2Uo
KSBjb25zdAoreworICAgIC8vcURlYnVnKCkgPDwgIj4+PlJlbG9hZEl0ZW06Omludm9rZSI7Cisg
ICAgV2ViUGFnZSogd2ViUGFnZSA9IER1bXBSZW5kZXJUcmVlOjppbnN0YW5jZSgpLT53ZWJQYWdl
KCk7CisgICAgUV9BU1NFUlQod2ViUGFnZSk7CisgICAgd2ViUGFnZS0+dHJpZ2dlckFjdGlvbihR
V2ViUGFnZTo6UmVsb2FkKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTY3JpcHRJdGVt
OjppbnZva2UoKSBjb25zdAoreworICAgIC8vcURlYnVnKCkgPDwgIj4+PlNjcmlwdEl0ZW06Omlu
dm9rZSI7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IER1bXBSZW5kZXJUcmVlOjppbnN0YW5jZSgp
LT53ZWJQYWdlKCk7CisgICAgUV9BU1NFUlQod2ViUGFnZSk7CisgICAgd2ViUGFnZS0+bWFpbkZy
YW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdChKU1N0cmluZ0NvcHlRU3RyaW5nKG1fc2NyaXB0Lmdl
dCgpKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQmFja0ZvcndhcmRJdGVtOjppbnZv
a2UoKSBjb25zdAoreworICAgIC8vcURlYnVnKCkgPDwgIj4+PkJhY2tGb3J3YXJkSXRlbTo6aW52
b2tlIjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gRHVtcFJlbmRlclRyZWU6Omluc3RhbmNlKCkt
PndlYlBhZ2UoKTsKKyAgICBRX0FTU0VSVCh3ZWJQYWdlKTsKKyAgICBpZiAoIW1faG93RmFyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9ob3dGYXIgPiAwKSB7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpICE9IG1faG93RmFyOyArK2kpCisgICAgICAgICAgICB3ZWJQYWdl
LT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpGb3J3YXJkKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSAhPSBtX2hvd0ZhcjsgLS1pKQorICAgICAgICAgICAgd2ViUGFn
ZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6QmFjayk7CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9Xb3JrUXVldWVJdGVtUXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTdhYmIwCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvV29ya1F1ZXVlSXRlbVF0LmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV29ya1F1ZXVlSXRlbVF0X2gKKyNkZWZpbmUgV29ya1F1ZXVl
SXRlbVF0X2gKKworI2luY2x1ZGUgIldvcmtRdWV1ZUl0ZW0uaCIKKyNpbmNsdWRlIDxxd2ViZnJh
bWUuaD4KKyNpbmNsdWRlIDxxd2VicGFnZS5oPgorCitjbGFzcyBMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZ0l0ZW0gOiBwdWJsaWMgV29ya1F1ZXVlSXRlbSB7CitwdWJsaWM6CisgICAgTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmdJdGVtKGNvbnN0IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiYgY29udGVu
dCwgY29uc3QgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+JiBiYXNlVVJMLCAgY29uc3QgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+JiBmYWlsaW5nVVJMKQorICAgICAgICA6IG1fY29udGVudChjb250
ZW50KQorICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMKQorICAgICAgICAsIG1fZmFpbGluZ1VS
TChmYWlsaW5nVVJMKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IGludm9rZSgpIGNvbnN0OworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1fY29udGVu
dDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbV9iYXNlVVJMOworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBtX2ZhaWxpbmdVUkw7Cit9OworCisjZW5kaWYgLy8gIWRlZmluZWQo
V29ya1F1ZXVlSXRlbVF0X2gpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9m
b250cy9BSEVNX19fXy5UVEYgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9mb250cy9BSEVNX19f
Xy5UVEYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4MWNiMApCaW5hcnkg
ZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L2ZvbnRzL0FIRU1f
X19fLlRURiBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L3Jlc291
cmNlcy91c2VyLmNzcyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L3Jlc291cmNlcy91c2VyLmNz
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjM5ODE5Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvcmVzb3VyY2VzL3VzZXIuY3NzCkBAIC0w
LDAgKzEsNCBAQAorYm9keSB7CisgICAgZm9udC1zaXplOiA1MHB4OworICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYigyNTUsIDI1NSwgMCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvdGVzdHBsdWdpbi5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC90ZXN0cGx1Z2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kNWI4YmM3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvdGVzdHBsdWdpbi5jcHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lu
Y2x1ZGUgInRlc3RwbHVnaW4uaCIKKworVGVzdFBsdWdpbjo6VGVzdFBsdWdpbihRT2JqZWN0ICpw
YXJlbnQpCisgICAgOiBRV2ViUGx1Z2luRmFjdG9yeShwYXJlbnQpCit7Cit9CisKK1Rlc3RQbHVn
aW46On5UZXN0UGx1Z2luKCkKK3sKK30KKworUUxpc3Q8UVdlYlBsdWdpbkZhY3Rvcnk6OlBsdWdp
bj4gVGVzdFBsdWdpbjo6cGx1Z2lucygpIGNvbnN0Cit7CisgICAgUVdlYlBsdWdpbkZhY3Rvcnk6
OlBsdWdpbiBwbHVnaW47CisKKyAgICBwbHVnaW4ubmFtZSA9ICJ0ZXN0cGx1Z2luIjsKKyAgICBw
bHVnaW4uZGVzY3JpcHRpb24gPSAidGVzdGRlc2NyaXB0aW9uIjsKKyAgICBNaW1lVHlwZSBtaW1l
VHlwZTsKKyAgICBtaW1lVHlwZS5uYW1lID0gInRlc3R0eXBlIjsKKyAgICBtaW1lVHlwZS5maWxl
RXh0ZW5zaW9ucy5hcHBlbmQoInRlc3RzdWZmaXhlcyIpOworICAgIHBsdWdpbi5taW1lVHlwZXMu
YXBwZW5kKG1pbWVUeXBlKTsKKworICAgIHBsdWdpbi5uYW1lID0gInRlc3RwbHVnaW4yIjsKKyAg
ICBwbHVnaW4uZGVzY3JpcHRpb24gPSAidGVzdGRlc2NyaXB0aW9uMiI7CisgICAgbWltZVR5cGUu
bmFtZSA9ICJ0ZXN0dHlwZTIiOworICAgIG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zLmFwcGVuZCgi
dGVzdHN1ZmZpeGVzMiIpOworICAgIG1pbWVUeXBlLmZpbGVFeHRlbnNpb25zLmFwcGVuZCgidGVz
dHN1ZmZpeGVzMyIpOworICAgIHBsdWdpbi5taW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKwor
ICAgIHJldHVybiBRTGlzdDxRV2ViUGx1Z2luRmFjdG9yeTo6UGx1Z2luPigpIDw8IHBsdWdpbjsK
K30KKworUU9iamVjdCAqVGVzdFBsdWdpbjo6Y3JlYXRlKGNvbnN0IFFTdHJpbmcmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFVcmwmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFTdHJpbmdMaXN0JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBRU3RyaW5nTGlzdCYpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L3Rlc3RwbHVnaW4uaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L3Rlc3RwbHVnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zZDhhMjhjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvdGVz
dHBsdWdpbi5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlIDxxd2VicGx1
Z2luZmFjdG9yeS5oPgorCisKK2NsYXNzIFRlc3RQbHVnaW4gOiBwdWJsaWMgUVdlYlBsdWdpbkZh
Y3RvcnkKK3sKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUZXN0UGx1Z2luKFFPYmplY3QgKnBhcmVu
dCA9IDApOworICAgIHZpcnR1YWwgflRlc3RQbHVnaW4oKTsKKworICAgIHZpcnR1YWwgUUxpc3Q8
UGx1Z2luPiBwbHVnaW5zKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFFPYmplY3QgKmNyZWF0ZShj
b25zdCBRU3RyaW5nICZtaW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBRVXJsICZ1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZ0xp
c3QgJmFyZ3VtZW50TmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0
cmluZ0xpc3QgJmFyZ3VtZW50VmFsdWVzKSBjb25zdDsKKworfTsKKwpkaWZmIC0tZ2l0IGEvVG9v
bHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5wcm8gYi9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLnBy
bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2U4YTQ5Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi5wcm8KQEAgLTAsMCArMSwxNCBAQAor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgdGhlIEltYWdlRGlmZiBiaW5hcnkKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBhcHAKKworVEFSR0VUID0gSW1hZ2VE
aWZmCitERVNURElSID0gJCRST09UX0JVSUxEX0RJUi9iaW4KKworUVQgPSBjb3JlIGd1aSB3aWRn
ZXRzCisKK1NPVVJDRVMgPSBxdC9JbWFnZURpZmYuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9JbWFn
ZURpZmYvcXQvSW1hZ2VEaWZmLmNwcCBiL1Rvb2xzL0ltYWdlRGlmZi9xdC9JbWFnZURpZmYuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNjA4NmEKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9JbWFnZURpZmYvcXQvSW1hZ2VEaWZmLmNwcApAQCAtMCwwICsxLDE0NCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgPFF0Q29yZS9xbWF0aC5oPgorCisjaW5j
bHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFCdWZmZXI+CisjaW5jbHVkZSA8UUJ5dGVB
cnJheT4KKyNpbmNsdWRlIDxRSW1hZ2U+CisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CisKKyNpbmNs
dWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQoreworICAg
IFFDb3JlQXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOworCisgICAgcXJlYWwgdG9sZXJhbmNl
ID0gMDsgLy8gVG9sZXJhdGVkIHBlcmNlbnRhZ2Ugb2YgZXJyb3IgcGl4ZWxzLgorCisgICAgUVN0
cmluZ0xpc3QgYXJncyA9IGFwcC5hcmd1bWVudHMoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFyZ2M7ICsraSkKKyAgICAgICAgaWYgKGFyZ3NbaV0gPT0gIi10IiB8fCBhcmdzW2ldID09ICIt
LXRvbGVyYW5jZSIpCisgICAgICAgICAgICB0b2xlcmFuY2UgPSBhcmdzW2kgKyAxXS50b0RvdWJs
ZSgpOworCisgICAgY2hhciBidWZmZXJbMjA0OF07CisgICAgUUltYWdlIGFjdHVhbEltYWdlOwor
ICAgIFFJbWFnZSBiYXNlbGluZUltYWdlOworCisgICAgd2hpbGUgKGZnZXRzKGJ1ZmZlciwgc2l6
ZW9mKGJ1ZmZlciksIHN0ZGluKSkgeworICAgICAgICAvLyByZW1vdmUgdGhlIENSCisgICAgICAg
IGNoYXIqIG5ld0xpbmVDaGFyYWN0ZXIgPSBzdHJjaHIoYnVmZmVyLCAnXG4nKTsKKyAgICAgICAg
aWYgKG5ld0xpbmVDaGFyYWN0ZXIpCisgICAgICAgICAgICAqbmV3TGluZUNoYXJhY3RlciA9ICdc
MCc7CisKKyAgICAgICAgaWYgKCFzdHJuY21wKCJDb250ZW50LUxlbmd0aDogIiwgYnVmZmVyLCAx
NikpIHsKKyAgICAgICAgICAgIHN0cnRvayhidWZmZXIsICIgIik7CisgICAgICAgICAgICBpbnQg
aW1hZ2VTaXplID0gc3RydG9sKHN0cnRvaygwLCAiICIpLCAwLCAxMCk7CisKKyAgICAgICAgICAg
IGlmIChpbWFnZVNpemUgPD0gMCkgeworICAgICAgICAgICAgICAgIGZwdXRzKCJlcnJvciwgaW1h
Z2Ugc2l6ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiIsIHN0ZG91dCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzIwNDhdOworICAgICAg
ICAgICAgICAgIFFCdWZmZXIgZGF0YTsKKworICAgICAgICAgICAgICAgIC8vIFJlYWQgYWxsIHRo
ZSBpbmNvbWluZyBjaHVua3MKKyAgICAgICAgICAgICAgICBkYXRhLm9wZW4oUUJ1ZmZlcjo6V3Jp
dGVPbmx5KTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaW1hZ2VTaXplID4gMCkgeworICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgYnl0ZXNUb1JlYWQgPSBxTWluKGltYWdlU2l6ZSwgMjA0OCk7
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlc1JlYWQgPSBmcmVhZChidWZmZXIsIDEs
IGJ5dGVzVG9SZWFkLCBzdGRpbik7CisgICAgICAgICAgICAgICAgICAgIGRhdGEud3JpdGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgYnl0ZXNSZWFkKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VTaXplIC09IHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IGludG8gUUltYWdl
CisgICAgICAgICAgICAgICAgUUltYWdlIGRlY29kZWRJbWFnZTsKKyAgICAgICAgICAgICAgICBk
ZWNvZGVkSW1hZ2UubG9hZEZyb21EYXRhKGRhdGEuZGF0YSgpLCAiUE5HIik7CisgICAgICAgICAg
ICAgICAgZGVjb2RlZEltYWdlID0gZGVjb2RlZEltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6
OkZvcm1hdF9BUkdCMzIpOworCisgICAgICAgICAgICAgICAgLy8gUGxhY2UgaXQgaW4gdGhlIHJp
Z2h0IHBsYWNlCisgICAgICAgICAgICAgICAgaWYgKGFjdHVhbEltYWdlLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgICAgICBhY3R1YWxJbWFnZSA9IGRlY29kZWRJbWFnZTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBkZWNvZGVkSW1h
Z2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWFjdHVhbEltYWdl
LmlzTnVsbCgpICYmICFiYXNlbGluZUltYWdlLmlzTnVsbCgpKSB7CisKKyAgICAgICAgICAgIGlm
IChhY3R1YWxJbWFnZS5zaXplKCkgIT0gYmFzZWxpbmVJbWFnZS5zaXplKCkpIHsKKyAgICAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImRpZmY6IDEwMCUlIGZhaWxlZFxuIik7CisgICAgICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlcnJvciwgdGVzdCBhbmQgcmVmZXJlbmNlIGltYWdl
IGhhdmUgZGlmZmVyZW50IHByb3BlcnRpZXMuXG4iKTsKKyAgICAgICAgICAgICAgICBmZmx1c2go
c3RkZXJyKTsKKyAgICAgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisKKyAgICAgICAgICAgICAgICBpbnQgdyA9IGFjdHVhbEltYWdlLndpZHRoKCk7Cisg
ICAgICAgICAgICAgICAgaW50IGggPSBhY3R1YWxJbWFnZS5oZWlnaHQoKTsKKyAgICAgICAgICAg
ICAgICBRSW1hZ2UgZGlmZkltYWdlKHcsIGgsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisKKyAg
ICAgICAgICAgICAgICBpbnQgZXJyb3JDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IHc7ICsreCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGg7ICsreSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUVJnYiBwaXhlbCA9
IGFjdHVhbEltYWdlLnBpeGVsKHgsIHkpOworICAgICAgICAgICAgICAgICAgICAgICAgUVJnYiBi
YXNlUGl4ZWwgPSBiYXNlbGluZUltYWdlLnBpeGVsKHgsIHkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcXJlYWwgcmVkID0gKHFSZWQocGl4ZWwpIC0gcVJlZChiYXNlUGl4ZWwpKSAvIHN0YXRp
Y19jYXN0PGZsb2F0PihxTWF4KDI1NSAtIHFSZWQoYmFzZVBpeGVsKSwgcVJlZChiYXNlUGl4ZWwp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBxcmVhbCBncmVlbiA9IChxR3JlZW4ocGl4ZWwp
IC0gcUdyZWVuKGJhc2VQaXhlbCkpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHFNYXgoMjU1IC0gcUdy
ZWVuKGJhc2VQaXhlbCksIHFHcmVlbihiYXNlUGl4ZWwpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBxcmVhbCBibHVlID0gKHFCbHVlKHBpeGVsKSAtIHFCbHVlKGJhc2VQaXhlbCkpIC8gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHFNYXgoMjU1IC0gcUJsdWUoYmFzZVBpeGVsKSwgcUJsdWUoYmFzZVBp
eGVsKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgcXJlYWwgYWxwaGEgPSAocUFscGhhKHBp
eGVsKSAtIHFBbHBoYShiYXNlUGl4ZWwpKSAvIHN0YXRpY19jYXN0PGZsb2F0PihxTWF4KDI1NSAt
IHFBbHBoYShiYXNlUGl4ZWwpLCBxQWxwaGEoYmFzZVBpeGVsKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcXJlYWwgZGlzdGFuY2UgPSBxU3FydChyZWQgKiByZWQgKyBncmVlbiAqIGdyZWVu
ICsgYmx1ZSAqIGJsdWUgKyBhbHBoYSAqIGFscGhhKSAvIDIuMGY7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZGlzdGFuY2UgPj0gMSAvIHFyZWFsKDI1NSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvckNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlmZkltYWdlLnNldFBpeGVsKHgsIHksIHFSZ2IoMjU1LCAwLCAwKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmSW1hZ2Uu
c2V0UGl4ZWwoeCwgeSwgcVJnYmEocVJlZChiYXNlUGl4ZWwpLCBxR3JlZW4oYmFzZVBpeGVsKSwg
cUJsdWUoYmFzZVBpeGVsKSwgcUFscGhhKGJhc2VQaXhlbCkgKiAwLjUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHFyZWFsIGRp
ZmZlcmVuY2UgPSAwOworICAgICAgICAgICAgICAgIGlmIChlcnJvckNvdW50KQorICAgICAgICAg
ICAgICAgICAgICBkaWZmZXJlbmNlID0gMTAwICogZXJyb3JDb3VudCAvIHN0YXRpY19jYXN0PHFy
ZWFsPih3ICogaCk7CisKKyAgICAgICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8PSB0b2xlcmFu
Y2UpCisgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiZGlmZjogJTAxLjJmJSUg
cGFzc2VkXG4iLCBkaWZmZXJlbmNlKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgUUJ1ZmZlciBidWZmZXI7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5v
cGVuKFFCdWZmZXI6OldyaXRlT25seSk7CisgICAgICAgICAgICAgICAgICAgIGRpZmZJbWFnZS5z
YXZlKCZidWZmZXIsICJQTkciKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmNsb3NlKCk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEgPSBidWZmZXIuZGF0
YSgpOworICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAlbHVcbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGRhdGEubGVuZ3RoKCkpKTsKKworICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ3cml0ZSB0
byBhdm9pZCAiaWdub3JpbmcgcmV0dXJuIHZhbHVlIiBnY2Mgd2FybmluZworICAgICAgICAgICAg
ICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1
Mzg0IGZvciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgICBpZiAoZndyaXRlKGRhdGEuY29u
c3REYXRhKCksIDEsIGRhdGEubGVuZ3RoKCksIHN0ZG91dCkpIHt9CisKKyAgICAgICAgICAgICAg
ICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBmYWlsZWRcbiIsIGRpZmZlcmVu
Y2UpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZmbHVzaChzdGRvdXQp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWN0dWFsSW1hZ2UgPSBRSW1hZ2UoKTsKKyAg
ICAgICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBRSW1hZ2UoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nl
cldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDcyZDVjCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTAsMCArMSwyMTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0
eSBvZiBTemVnZWQKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJCcm93c2VyV2luZG93LmgiCisKKyNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dlYnBhZ2VfcC5o
IgorI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrd2Vidmlld19wLmgiCisjaW5jbHVkZSAidXRpbHMu
aCIKKworI2luY2x1ZGUgPFFRbWxFbmdpbmU+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxR
UG9pbnRGPgorCitCcm93c2VyV2luZG93OjpCcm93c2VyV2luZG93KFdpbmRvd09wdGlvbnMqIG9w
dGlvbnMpCisgICAgOiBtX3dpbmRvd09wdGlvbnMob3B0aW9ucykKK3sKKyAgICBzZXRUaXRsZSgi
TWluaUJyb3dzZXIiKTsKKyAgICBzZXRGbGFncyhRdDo6V2luZG93IHwgUXQ6OldpbmRvd1RpdGxl
SGludCB8IFF0OjpXaW5kb3dNaW5NYXhCdXR0b25zSGludCB8IFF0OjpXaW5kb3dDbG9zZUJ1dHRv
bkhpbnQpOworICAgIHNldFJlc2l6ZU1vZGUoUVF1aWNrVmlldzo6U2l6ZVJvb3RPYmplY3RUb1Zp
ZXcpOworCisgICAgLy8gVGhpcyBhbGxvd3Mgc3RhcnRpbmcgTWluaUJyb3dzZXIgZnJvbSB0aGUg
YnVpbGQgZGlyZWN0b3J5IHdpdGhvdXQgcHJldmlvdXNseSBkZWZpbmluZyBRTUxfSU1QT1JUX1BB
VEguCisgICAgUURpciBxbWxJbXBvcnREaXIgPSBRRGlyKFFDb3JlQXBwbGljYXRpb246OmFwcGxp
Y2F0aW9uRGlyUGF0aCgpKTsKKyAgICBxbWxJbXBvcnREaXIuY2QoIi4uL2ltcG9ydHMiKTsKKyAg
ICBlbmdpbmUoKS0+YWRkSW1wb3J0UGF0aChxbWxJbXBvcnREaXIuY2Fub25pY2FsUGF0aCgpKTsK
KworICAgIFV0aWxzKiB1dGlscyA9IG5ldyBVdGlscyh0aGlzKTsKKyAgICBlbmdpbmUoKS0+cm9v
dENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5KCJ1dGlscyIsIHV0aWxzKTsKKyAgICBlbmdp
bmUoKS0+cm9vdENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5KCJvcHRpb25zIiwgb3B0aW9u
cyk7CisgICAgc2V0U291cmNlKFFVcmwoInFyYzovLy9xbWwvQnJvd3NlcldpbmRvdy5xbWwiKSk7
CisgICAgY29ubmVjdChyb290T2JqZWN0KCksIFNJR05BTChwYWdlVGl0bGVDaGFuZ2VkKFFTdHJp
bmcpKSwgdGhpcywgU0xPVChvblRpdGxlQ2hhbmdlZChRU3RyaW5nKSkpOworICAgIGNvbm5lY3Qo
cm9vdE9iamVjdCgpLCBTSUdOQUwobmV3V2luZG93KFFTdHJpbmcpKSwgdGhpcywgU0xPVChuZXdX
aW5kb3coUVN0cmluZykpKTsKKyAgICBpZiAob3B0aW9ucy0+c3RhcnRGdWxsU2NyZWVuKCkpCisg
ICAgICAgIHNob3dGdWxsU2NyZWVuKCk7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChvcHRpb25z
LT5zdGFydE1heGltaXplZCgpKQorICAgICAgICAgICAgc2V0V2luZG93U3RhdGUoUXQ6OldpbmRv
d01heGltaXplZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc2l6ZShvcHRpb25zLT5y
ZXF1ZXN0ZWRXaW5kb3dTaXplKCkpOworICAgICAgICBzaG93KCk7CisgICAgfQorCisgICAgUVFt
bENvbnRleHQqIGNvbnRleHQgPSByb290Q29udGV4dCgpOworICAgIGNvbnRleHQtPnNldENvbnRl
eHRQcm9wZXJ0eSgiV2luZG93IiwgdGhpcyk7CisKKyAgICBpZiAoIW9wdGlvbnMtPnVzZXJBZ2Vu
dCgpLmlzTnVsbCgpKQorICAgICAgICB3ZWJWaWV3RXhwZXJpbWVudGFsKCktPnNldFVzZXJBZ2Vu
dChvcHRpb25zLT51c2VyQWdlbnQoKSk7CisKKyAgICAvLyBab29tIHZhbHVlcyBhcmUgY2hvc2Vu
IHRvIGJlIGxpa2UgaW4gTW96aWxsYSBGaXJlZm94IDMuCisgICAgbV96b29tTGV2ZWxzIDw8IDAu
MyA8PCAwLjUgPDwgMC42NyA8PCAwLjggPDwgMC45CisgICAgICAgICAgICAgICAgIDw8IDEKKyAg
ICAgICAgICAgICAgICAgPDwgMS4xMSA8PCAxLjIyIDw8IDEuMzMgPDwgMS41IDw8IDEuNyA8PCAy
IDw8IDIuNCA8PCAzOworCisgICAgbV9jdXJyZW50Wm9vbUxldmVsID0gbV96b29tTGV2ZWxzLmlu
ZGV4T2YoMSk7Cit9CisKK1FRdWlja1dlYlZpZXcqIEJyb3dzZXJXaW5kb3c6OndlYlZpZXcoKSBj
b25zdAoreworICAgIHJldHVybiByb290T2JqZWN0KCktPnByb3BlcnR5KCJ3ZWJ2aWV3IikudmFs
dWU8UVF1aWNrV2ViVmlldyo+KCk7Cit9CisKK1FRdWlja1dlYlZpZXdFeHBlcmltZW50YWwqIEJy
b3dzZXJXaW5kb3c6OndlYlZpZXdFeHBlcmltZW50YWwoKSBjb25zdAoreworICAgIHJldHVybiB3
ZWJWaWV3KCktPnByb3BlcnR5KCJleHBlcmltZW50YWwiKS52YWx1ZTxRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsKj4oKTsKK30KKwordm9pZCBCcm93c2VyV2luZG93Ojpsb2FkKGNvbnN0IFFTdHJp
bmcmIHVybCkKK3sKKyAgICBRVXJsIGNvbXBsZXRlZFVybCA9IFV0aWxzOjp1cmxGcm9tVXNlcklu
cHV0KHVybCk7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJs
b2FkIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24sIFFfQVJHKFFWYXJpYW50LCBjb21wbGV0ZWRVcmwp
KTsKK30KKwordm9pZCBCcm93c2VyV2luZG93OjpyZWxvYWQoKQoreworICAgIFFNZXRhT2JqZWN0
OjppbnZva2VNZXRob2Qocm9vdE9iamVjdCgpLCAicmVsb2FkIiwgUXQ6OkRpcmVjdENvbm5lY3Rp
b24pOworfQorCit2b2lkIEJyb3dzZXJXaW5kb3c6OmZvY3VzQWRkcmVzc0JhcigpCit7CisgICAg
UU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJmb2N1c0FkZHJlc3NCYXIi
LCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cit9CisKK3ZvaWQgQnJvd3NlcldpbmRvdzo6dG9nZ2xl
RmluZCgpCit7CisgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJ0
b2dnbGVGaW5kIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworfQorCitCcm93c2VyV2luZG93KiBC
cm93c2VyV2luZG93OjpuZXdXaW5kb3coY29uc3QgUVN0cmluZyYgdXJsKQoreworICAgIEJyb3dz
ZXJXaW5kb3cqIHdpbmRvdyA9IG5ldyBCcm93c2VyV2luZG93KG1fd2luZG93T3B0aW9ucyk7Cisg
ICAgd2luZG93LT5sb2FkKHVybCk7CisgICAgcmV0dXJuIHdpbmRvdzsKK30KKwordm9pZCBCcm93
c2VyV2luZG93Ojp1cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMoY29uc3QgUUxpc3Q8UVRvdWNo
RXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cykKK3sKKyAgICBpZiAodG91Y2hQb2ludHMu
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEhpZGUgYWxsIHRvdWNoIGluZGljYXRvciBpdGVtcy4K
KyAgICAgICAgZm9yZWFjaCAoUVF1aWNrSXRlbSogaXRlbSwgbV9hY3RpdmVNb2NrQ29tcG9uZW50
cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGl0ZW0tPnNldFByb3BlcnR5KCJwcmVzc2VkIiwgZmFs
c2UpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3JlYWNoIChjb25zdCBRVG91
Y2hFdmVudDo6VG91Y2hQb2ludCYgdG91Y2hQb2ludCwgdG91Y2hQb2ludHMpIHsKKyAgICAgICAg
UVF1aWNrSXRlbSogbW9ja1RvdWNoUG9pbnRJdGVtID0gbV9hY3RpdmVNb2NrQ29tcG9uZW50cy52
YWx1ZSh0b3VjaFBvaW50LmlkKCkpOworCisgICAgICAgIGlmICghbW9ja1RvdWNoUG9pbnRJdGVt
KSB7CisgICAgICAgICAgICBRUW1sQ29tcG9uZW50IHRvdWNoTW9ja1BvaW50Q29tcG9uZW50KGVu
Z2luZSgpLCBRVXJsKCJxcmM6Ly8vcW1sL01vY2tUb3VjaFBvaW50LnFtbCIpKTsKKyAgICAgICAg
ICAgIG1vY2tUb3VjaFBvaW50SXRlbSA9IHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4odG91Y2hN
b2NrUG9pbnRDb21wb25lbnQuY3JlYXRlKCkpOworICAgICAgICAgICAgUV9BU1NFUlQobW9ja1Rv
dWNoUG9pbnRJdGVtKTsKKyAgICAgICAgICAgIG1fYWN0aXZlTW9ja0NvbXBvbmVudHMuaW5zZXJ0
KHRvdWNoUG9pbnQuaWQoKSwgbW9ja1RvdWNoUG9pbnRJdGVtKTsKKyAgICAgICAgICAgIG1vY2tU
b3VjaFBvaW50SXRlbS0+c2V0UHJvcGVydHkoInBvaW50SWQiLCBRVmFyaWFudCh0b3VjaFBvaW50
LmlkKCkpKTsKKyAgICAgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0UGFyZW50KHJvb3RP
YmplY3QoKSk7CisgICAgICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFBhcmVudEl0ZW0o
cm9vdE9iamVjdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIFFSZWN0RiB0b3VjaFJlY3QgPSB0
b3VjaFBvaW50LnJlY3QoKTsKKyAgICAgICAgbW9ja1RvdWNoUG9pbnRJdGVtLT5zZXRYKHRvdWNo
UmVjdC5jZW50ZXIoKS54KCkpOworICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldFkodG91
Y2hSZWN0LmNlbnRlcigpLnkoKSk7CisgICAgICAgIG1vY2tUb3VjaFBvaW50SXRlbS0+c2V0V2lk
dGgodG91Y2hSZWN0LndpZHRoKCkpOworICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNldEhl
aWdodCh0b3VjaFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBtb2NrVG91Y2hQb2ludEl0ZW0tPnNl
dFByb3BlcnR5KCJwcmVzc2VkIiwgUVZhcmlhbnQodG91Y2hQb2ludC5zdGF0ZSgpICE9IFF0OjpU
b3VjaFBvaW50UmVsZWFzZWQpKTsKKyAgICB9Cit9CisKK3ZvaWQgQnJvd3NlcldpbmRvdzo6c2Ny
ZWVuc2hvdCgpCit7Cit9CisKK0Jyb3dzZXJXaW5kb3c6On5Ccm93c2VyV2luZG93KCkKK3sKK30K
Kwordm9pZCBCcm93c2VyV2luZG93OjpvblRpdGxlQ2hhbmdlZChRU3RyaW5nIHRpdGxlKQorewor
ICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHRpdGxlID0gUUxhdGluMVN0cmluZygi
TWluaUJyb3dzZXIiKTsKKyAgICBzZXRUaXRsZSh0aXRsZSk7Cit9CisKK3ZvaWQgQnJvd3Nlcldp
bmRvdzo6em9vbUluKCkKK3sKKyAgICBpZiAobV9jdXJyZW50Wm9vbUxldmVsIDwgbV96b29tTGV2
ZWxzLnNpemUoKSAtIDEpCisgICAgICAgICsrbV9jdXJyZW50Wm9vbUxldmVsOworICAgIHdlYlZp
ZXcoKS0+c2V0Wm9vbUZhY3RvcihtX3pvb21MZXZlbHNbbV9jdXJyZW50Wm9vbUxldmVsXSk7Cit9
CisKK3ZvaWQgQnJvd3NlcldpbmRvdzo6em9vbU91dCgpCit7CisgICAgaWYgKG1fY3VycmVudFpv
b21MZXZlbCA+IDApCisgICAgICAgIC0tbV9jdXJyZW50Wm9vbUxldmVsOworICAgIHdlYlZpZXco
KS0+c2V0Wm9vbUZhY3RvcihtX3pvb21MZXZlbHNbbV9jdXJyZW50Wm9vbUxldmVsXSk7Cit9CisK
K3ZvaWQgQnJvd3NlcldpbmRvdzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2ZW50KQorewor
CisgICAgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSAmIFF0OjpDb250cm9sTW9kaWZpZXIpIHsKKyAg
ICAgICAgYm9vbCBoYW5kbGVkOworICAgICAgICBpZiAoKGhhbmRsZWQgPSBldmVudC0+a2V5KCkg
PT0gUXQ6OktleV9QbHVzKSkKKyAgICAgICAgICAgIHpvb21JbigpOworICAgICAgICBlbHNlIGlm
ICgoaGFuZGxlZCA9IGV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5X01pbnVzKSkKKyAgICAgICAgICAg
IHpvb21PdXQoKTsKKworICAgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICAgICAgZXZlbnQt
PmFjY2VwdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIFFR
dWlja1ZpZXc6OmtleVByZXNzRXZlbnQoZXZlbnQpOworfQorCit2b2lkIEJyb3dzZXJXaW5kb3c6
OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+bW9kaWZp
ZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyICYmIGV2ZW50LT5vcmllbnRhdGlvbigpID09IFF0
OjpWZXJ0aWNhbCkgeworICAgICAgICBpZiAoZXZlbnQtPmRlbHRhKCkgPiAwKQorICAgICAgICAg
ICAgem9vbUluKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHpvb21PdXQoKTsKKworICAg
ICAgICBldmVudC0+YWNjZXB0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUVF1aWNr
Vmlldzo6d2hlZWxFdmVudChldmVudCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVjZmMxNAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaApAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkg
b2YgU3plZ2VkCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJy
b3dzZXJXaW5kb3dfaAorI2RlZmluZSBCcm93c2VyV2luZG93X2gKKworI2luY2x1ZGUgIk1pbmlC
cm93c2VyQXBwbGljYXRpb24uaCIKKyNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KKyNpbmNsdWRlIDxR
dFF1aWNrL1FRdWlja1ZpZXc+CisKK2NsYXNzIFFRdWlja1dlYlZpZXc7CitjbGFzcyBRUXVpY2tX
ZWJWaWV3RXhwZXJpbWVudGFsOworCitjbGFzcyBCcm93c2VyV2luZG93IDogcHVibGljIFFRdWlj
a1ZpZXcgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBCcm93c2VyV2luZG93KFdpbmRv
d09wdGlvbnMqKTsKKyAgICB+QnJvd3NlcldpbmRvdygpOworICAgIHZvaWQgbG9hZChjb25zdCBR
U3RyaW5nJiB1cmwpOworICAgIHZvaWQgcmVsb2FkKCk7CisgICAgdm9pZCBmb2N1c0FkZHJlc3NC
YXIoKTsKKyAgICB2b2lkIHRvZ2dsZUZpbmQoKTsKKyAgICBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3
KCkgY29uc3Q7CisgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCogd2ViVmlld0V4cGVyaW1l
bnRhbCgpIGNvbnN0OworCisgICAgdm9pZCB1cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMoY29u
c3QgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cyk7CisKK3B1Ymxp
YyBRX1NMT1RTOgorICAgIEJyb3dzZXJXaW5kb3cqIG5ld1dpbmRvdyhjb25zdCBRU3RyaW5nJiB1
cmwgPSAiYWJvdXQ6YmxhbmsiKTsKKworcHJvdGVjdGVkIFFfU0xPVFM6CisgICAgdm9pZCBzY3Jl
ZW5zaG90KCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIG9uVGl0bGVDaGFuZ2VkKFFT
dHJpbmcpOworCitwcml2YXRlOgorICAgIHZvaWQgem9vbUluKCk7CisgICAgdm9pZCB6b29tT3V0
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2hlZWxFdmVudChRV2hlZWxFdmVudCopOworCisgICAgV2luZG93T3B0aW9u
cyogbV93aW5kb3dPcHRpb25zOworICAgIFFIYXNoPGludCwgUVF1aWNrSXRlbSo+IG1fYWN0aXZl
TW9ja0NvbXBvbmVudHM7CisgICAgUVZlY3RvcjxxcmVhbD4gbV96b29tTGV2ZWxzOworICAgIHVu
c2lnbmVkIG1fY3VycmVudFpvb21MZXZlbDsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXIucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYjFj
NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5w
cm8KQEAgLTAsMCArMSwzOCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgdGhl
IFdlYktpdDIgTWluaUJyb3dzZXIgYmluYXJ5CisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1F
JyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RF
TVBMQVRFID0gYXBwCisKK1dFQktJVCArPSB3dGYKKworSU5DTFVERVBBVEggKz0gXAorICAgICQk
e1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQgXAorICAgICQke1JP
T1RfV0VCS0lUX0RJUn0vVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvCisKK1NPVVJDRVMgKz0gXAor
ICAgIEJyb3dzZXJXaW5kb3cuY3BwIFwKKyAgICBtYWluLmNwcCBcCisgICAgTWluaUJyb3dzZXJB
cHBsaWNhdGlvbi5jcHAgXAorICAgIFVybExvYWRlci5jcHAgXAorICAgIHV0aWxzLmNwcCBcCisK
K0hFQURFUlMgKz0gXAorICAgIEJyb3dzZXJXaW5kb3cuaCBcCisgICAgTWluaUJyb3dzZXJBcHBs
aWNhdGlvbi5oIFwKKyAgICBVcmxMb2FkZXIuaCBcCisgICAgdXRpbHMuaCBcCisKK1RBUkdFVCA9
IE1pbmlCcm93c2VyCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgorCitoYXZlPyhG
T05UQ09ORklHKTogUEtHQ09ORklHICs9IGZvbnRjb25maWcKKworUVQgKz0gbmV0d29yayBndWkt
cHJpdmF0ZSBxdWljayBxdWljay1wcml2YXRlIHdlYmtpdCB3ZWJraXQtcHJpdmF0ZQorbWFjeDog
UVQgKz0geG1sCisKK1JFU09VUkNFUyArPSBNaW5pQnJvd3Nlci5xcmMKKworT1RIRVJfRklMRVMg
Kz0gcW1sLyoKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFy
YyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zZmE2MjA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjCkBAIC0wLDAgKzEsMzcgQEAKKzxSQ0M+CisgICAg
PHFyZXNvdXJjZSBwcmVmaXg9Ii8iPgorICAgICAgICA8ZmlsZT5pY29ucy9jaGVja2JveF9jaGVj
a2VkLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvY2hlY2tib3hfdW5jaGVja2VkLnBu
ZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvY29udGVudHNfd2lkdGgucG5nPC9maWxlPgor
ICAgICAgICA8ZmlsZT5pY29ucy9mYXZpY29uLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNv
bnMvZmluZC5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25zL2ZvbGRlci5wbmc8L2ZpbGU+
CisgICAgICAgIDxmaWxlPmljb25zL2luZm8ucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5pY29u
cy9uZXh0LnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvcGx1cy5wbmc8L2ZpbGU+Cisg
ICAgICAgIDxmaWxlPmljb25zL3ByZXZpb3VzLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNv
bnMvcmVmcmVzaC5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25zL3N0b3AucG5nPC9maWxl
PgorICAgICAgICA8ZmlsZT5pY29ucy90aXRsZWJhci5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxl
Pmljb25zL3RvdWNoLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvdG91Y2hwb2ludC5w
bmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25zL3VwLnBuZzwvZmlsZT4KKyAgICAgICAgPGZp
bGU+anMvTXVsdGlTZWxlY3QuanM8L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9BbGVydERpYWxv
Zy5xbWw8L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9BdXRoZW50aWNhdGlvbkRpYWxvZy5xbWw8
L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9Ccm93c2VyV2luZG93LnFtbDwvZmlsZT4KKyAgICAg
ICAgPGZpbGU+cW1sL0NoZWNrQm94LnFtbDwvZmlsZT4KKyAgICAgICAgPGZpbGU+cW1sL0NvbG9y
Q2hvb3Nlci5xbWw8L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9Db25maXJtRGlhbG9nLnFtbDwv
ZmlsZT4KKyAgICAgICAgPGZpbGU+cW1sL0RpYWxvZy5xbWw8L2ZpbGU+CisgICAgICAgIDxmaWxl
PnFtbC9EaWFsb2dCdXR0b24ucW1sPC9maWxlPgorICAgICAgICA8ZmlsZT5xbWwvRGlhbG9nTGlu
ZUlucHV0LnFtbDwvZmlsZT4KKyAgICAgICAgPGZpbGU+cW1sL0ZpbGVQaWNrZXIucW1sPC9maWxl
PgorICAgICAgICA8ZmlsZT5xbWwvSXRlbVNlbGVjdG9yLnFtbDwvZmlsZT4KKyAgICAgICAgPGZp
bGU+cW1sL01vY2tUb3VjaFBvaW50LnFtbDwvZmlsZT4KKyAgICAgICAgPGZpbGU+cW1sL1Byb21w
dERpYWxvZy5xbWw8L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9Qcm94eUF1dGhlbnRpY2F0aW9u
RGlhbG9nLnFtbDwvZmlsZT4KKyAgICAgICAgPGZpbGU+cW1sL1Njcm9sbEluZGljYXRvci5xbWw8
L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9WaWV3cG9ydEluZm9JdGVtLnFtbDwvZmlsZT4KKyAg
ICA8L3FyZXNvdXJjZT4KKzwvUkNDPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3NlckFwcGxpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
OTE1ZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwzNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgor
I2lmIEhBVkUoUVRURVNUU1VQUE9SVCkKKyNpbmNsdWRlICJRdFRlc3RTdXBwb3J0LmgiCisjZW5k
aWYKKyNpbmNsdWRlICJwcml2YXRlL3FxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInV0aWxz
LmgiCisjaW5jbHVkZSA8UVJlZ0V4cD4KKyNpbmNsdWRlIDxRRXZlbnQ+CisjaW5jbHVkZSA8UU1v
dXNlRXZlbnQ+CisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CisKK3N0YXRpYyBpbmxpbmUgUVJlY3RG
IHRvdWNoUmVjdEZvclBvc2l0aW9uKFFQb2ludEYgY2VudGVyUG9pbnQpCit7CisgICAgUVJlY3RG
IHRvdWNoUmVjdCgwLCAwLCA0MCwgNDApOworICAgIHRvdWNoUmVjdC5tb3ZlQ2VudGVyKGNlbnRl
clBvaW50KTsKKyAgICByZXR1cm4gdG91Y2hSZWN0OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNUb3VjaEV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQpCit7CisgICAgc3dpdGNoIChldmVudC0+
dHlwZSgpKSB7CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoQmVnaW46CisgICAgY2FzZSBRRXZlbnQ6
OlRvdWNoVXBkYXRlOgorICAgIGNhc2UgUUV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
c3RhdGljIGlubGluZSBib29sIGlzTW91c2VFdmVudChjb25zdCBRRXZlbnQqIGV2ZW50KQorewor
ICAgIHN3aXRjaCAoZXZlbnQtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50OjpNb3VzZUJ1dHRv
blByZXNzOgorICAgIGNhc2UgUUV2ZW50OjpNb3VzZU1vdmU6CisgICAgY2FzZSBRRXZlbnQ6Ok1v
dXNlQnV0dG9uUmVsZWFzZToKKyAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGljazoK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKworTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNh
dGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgIDogUUd1aUFwcGxpY2F0aW9uKGFyZ2Ms
IGFyZ3YpCisgICAgLCBtX3JlYWxUb3VjaEV2ZW50UmVjZWl2ZWQoZmFsc2UpCisgICAgLCBtX3Bl
bmRpbmdGYWtlVG91Y2hFdmVudENvdW50KDApCisgICAgLCBtX2lzUm9ib3RpemVkKGZhbHNlKQor
ICAgICwgbV9yb2JvdFRpbWVvdXRTZWNvbmRzKDApCisgICAgLCBtX3JvYm90RXh0cmFUaW1lU2Vj
b25kcygwKQorICAgICwgbV93aW5kb3dPcHRpb25zKHRoaXMpCisgICAgLCBtX2hvbGRpbmdDb250
cm9sKGZhbHNlKQoreworICAgIHNldE9yZ2FuaXphdGlvbk5hbWUoIlF0UHJvamVjdCIpOworICAg
IHNldEFwcGxpY2F0aW9uTmFtZSgiUXRNaW5pQnJvd3NlciIpOworICAgIHNldEFwcGxpY2F0aW9u
VmVyc2lvbigiMC4xIik7CisKKyAgICBoYW5kbGVVc2VyT3B0aW9ucygpOworfQorCitib29sIE1p
bmlCcm93c2VyQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiB0YXJnZXQsIFFFdmVudCogZXZl
bnQpCit7CisgICAgLy8gV2UgdHJ5IHRvIGJlIHNtYXJ0LCBpZiB3ZSByZWNlaXZlZCByZWFsIHRv
dWNoIGV2ZW50LCB3ZSBhcmUgcHJvYmFibHkgb24gYSBkZXZpY2UKKyAgICAvLyB3aXRoIHRvdWNo
IHNjcmVlbiwgYW5kIHdlIHNob3VsZCBub3QgaGF2ZSB0b3VjaCBtb2NraW5nLgorCisgICAgaWYg
KCFldmVudC0+c3BvbnRhbmVvdXMoKSB8fCBtX3JlYWxUb3VjaEV2ZW50UmVjZWl2ZWQgfHwgIW1f
d2luZG93T3B0aW9ucy50b3VjaE1vY2tpbmdFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBRR3Vp
QXBwbGljYXRpb246Om5vdGlmeSh0YXJnZXQsIGV2ZW50KTsKKworICAgIGlmIChpc1RvdWNoRXZl
bnQoZXZlbnQpKSB7CisgICAgICAgIGlmIChtX3BlbmRpbmdGYWtlVG91Y2hFdmVudENvdW50KQor
ICAgICAgICAgICAgLS1tX3BlbmRpbmdGYWtlVG91Y2hFdmVudENvdW50OworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3JlYWxUb3VjaEV2ZW50UmVjZWl2ZWQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFyZ2V0LCBldmVudCk7CisgICAgfQorCisg
ICAgQnJvd3NlcldpbmRvdyogYnJvd3NlcldpbmRvdyA9IHFvYmplY3RfY2FzdDxCcm93c2VyV2lu
ZG93Kj4odGFyZ2V0KTsKKyAgICBpZiAoIWJyb3dzZXJXaW5kb3cpCisgICAgICAgIHJldHVybiBR
R3VpQXBwbGljYXRpb246Om5vdGlmeSh0YXJnZXQsIGV2ZW50KTsKKworICAgIG1faG9sZGluZ0Nv
bnRyb2wgPSBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkudGVzdEZsYWcoUXQ6
OkNvbnRyb2xNb2RpZmllcik7CisKKyAgICAvLyBJbiBRTUwgZXZlbnRzIGFyZSBwcm9wYWdhdGVk
IHRocm91Z2ggcGFyZW50cy4gQnV0IHNpbmNlIHRoZSBXZWJWaWV3CisgICAgLy8gbWF5IGNvbnN1
bWUga2V5IGV2ZW50cywgYSBzaG9ydGN1dCBtaWdodCBuZXZlciByZWFjaCB0aGUgdG9wIFFRdWlj
a0l0ZW0uCisgICAgLy8gVGhlcmVmb3JlIHdlIGFyZSBjaGVja2luZyBoZXJlIGZvciBzaG9ydGN1
dHMuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpLZXlQcmVzcykgeworICAgICAg
ICBRS2V5RXZlbnQqIGtleUV2ZW50ID0gc3RhdGljX2Nhc3Q8UUtleUV2ZW50Kj4oZXZlbnQpOwor
ICAgICAgICBpZiAoKGtleUV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5X1IgJiYga2V5RXZlbnQtPm1v
ZGlmaWVycygpID09IFF0OjpDb250cm9sTW9kaWZpZXIpIHx8IGtleUV2ZW50LT5rZXkoKSA9PSBR
dDo6S2V5X0Y1KSB7CisgICAgICAgICAgICBicm93c2VyV2luZG93LT5yZWxvYWQoKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICgoa2V5RXZlbnQtPmtl
eSgpID09IFF0OjpLZXlfTCAmJiBrZXlFdmVudC0+bW9kaWZpZXJzKCkgPT0gUXQ6OkNvbnRyb2xN
b2RpZmllcikgfHwga2V5RXZlbnQtPmtleSgpID09IFF0OjpLZXlfRjYpIHsKKyAgICAgICAgICAg
IGJyb3dzZXJXaW5kb3ctPmZvY3VzQWRkcmVzc0JhcigpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChrZXlFdmVudC0+a2V5KCkgPT0gUXQ6OktleV9G
ICYmIGtleUV2ZW50LT5tb2RpZmllcnMoKSA9PSBRdDo6Q29udHJvbE1vZGlmaWVyKSB8fCBrZXlF
dmVudC0+a2V5KCkgPT0gUXQ6OktleV9GMykgeworICAgICAgICAgICAgYnJvd3NlcldpbmRvdy0+
dG9nZ2xlRmluZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OktleVJlbGVhc2UgJiYgc3RhdGlj
X2Nhc3Q8UUtleUV2ZW50Kj4oZXZlbnQpLT5rZXkoKSA9PSBRdDo6S2V5X0NvbnRyb2wpIHsKKyAg
ICAgICAgZm9yZWFjaCAoaW50IGlkLCBtX2hlbGRUb3VjaFBvaW50cykKKyAgICAgICAgICAgIGlm
IChtX3RvdWNoUG9pbnRzLmNvbnRhaW5zKGlkKSAmJiAhUUd1aUFwcGxpY2F0aW9uOjptb3VzZUJ1
dHRvbnMoKS50ZXN0RmxhZyhRdDo6TW91c2VCdXR0b24oaWQpKSkgeworICAgICAgICAgICAgICAg
IG1fdG91Y2hQb2ludHNbaWRdLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpOworICAg
ICAgICAgICAgICAgIG1faGVsZFRvdWNoUG9pbnRzLnJlbW92ZShpZCk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBtX3RvdWNoUG9pbnRzW2lkXS5zZXRTdGF0ZShRdDo6VG91
Y2hQb2ludFN0YXRpb25hcnkpOworCisgICAgICAgIHNlbmRUb3VjaEV2ZW50KGJyb3dzZXJXaW5k
b3csIG1faGVsZFRvdWNoUG9pbnRzLmlzRW1wdHkoKSA/IFFFdmVudDo6VG91Y2hFbmQgOiBRRXZl
bnQ6OlRvdWNoVXBkYXRlLCBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihldmVudCktPnRpbWVzdGFt
cCgpKTsKKyAgICB9CisKKyAgICBpZiAoaXNNb3VzZUV2ZW50KGV2ZW50KSkgeworICAgICAgICBj
b25zdCBRTW91c2VFdmVudCogY29uc3QgbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PFFNb3VzZUV2
ZW50Kj4oZXZlbnQpOworCisgICAgICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50IHRvdWNoUG9p
bnQ7CisgICAgICAgIHRvdWNoUG9pbnQuc2V0UHJlc3N1cmUoMSk7CisKKyAgICAgICAgUUV2ZW50
OjpUeXBlIHRvdWNoVHlwZSA9IFFFdmVudDo6Tm9uZTsKKworICAgICAgICBzd2l0Y2ggKG1vdXNl
RXZlbnQtPnR5cGUoKSkgeworICAgICAgICBjYXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoK
KyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQobW91c2VFdmVudC0+YnV0dG9uKCkpOworICAg
ICAgICAgICAgaWYgKG1fdG91Y2hQb2ludHMuY29udGFpbnModG91Y2hQb2ludC5pZCgpKSkgewor
ICAgICAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRNb3ZlZCk7
CisgICAgICAgICAgICAgICAgdG91Y2hUeXBlID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdG91Y2hQb2ludC5zZXRTdGF0ZShRdDo6
VG91Y2hQb2ludFByZXNzZWQpOworICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIG1vcmUgYnV0
dG9ucyBhcmUgaGVsZCBkb3duIHRoYW4ganVzdCB0aGUgZXZlbnQgdHJpZ2dlcmluZyBvbmUuCisg
ICAgICAgICAgICAgICAgaWYgKG1vdXNlRXZlbnQtPmJ1dHRvbnMoKSA+IG1vdXNlRXZlbnQtPmJ1
dHRvbigpKQorICAgICAgICAgICAgICAgICAgICB0b3VjaFR5cGUgPSBRRXZlbnQ6OlRvdWNoVXBk
YXRlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdG91Y2hUeXBl
ID0gUUV2ZW50OjpUb3VjaEJlZ2luOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUUV2ZW50OjpNb3VzZU1vdmU6CisgICAgICAgICAgICBpZiAoIW1vdXNl
RXZlbnQtPmJ1dHRvbnMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gc3dhbGxv
dyB0aGUgZXZlbnQgaW5zdGVhZCBvZiBwcm9wYWdhdGluZyBpdCwKKyAgICAgICAgICAgICAgICAv
LyBzaW5jZSB3ZSBhdm9pZCBzZW5kaW5nIHRoZSBtb3VzZSByZWxlYXNlIGV2ZW50cyBhbmQgaWYg
dGhlCisgICAgICAgICAgICAgICAgLy8gRmxpY2thYmxlIGlzIHRoZSBtb3VzZSBncmFiYmVyIGl0
IHdvdWxkIHJlY2VpdmUgdGhlIGV2ZW50CisgICAgICAgICAgICAgICAgLy8gYW5kIHdvdWxkIG1v
dmUgdGhlIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgZXZlbnQtPmFjY2VwdCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG91Y2hU
eXBlID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQo
bW91c2VFdmVudC0+YnV0dG9ucygpKTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0U3RhdGUo
UXQ6OlRvdWNoUG9pbnRNb3ZlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBR
RXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGFueSBi
dXR0b25zIGFyZSBzdGlsbCBoZWxkIGRvd24gYWZ0ZXIgdGhpcyBldmVudC4KKyAgICAgICAgICAg
IGlmIChtb3VzZUV2ZW50LT5idXR0b25zKCkpCisgICAgICAgICAgICAgICAgdG91Y2hUeXBlID0g
UUV2ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
b3VjaFR5cGUgPSBRRXZlbnQ6OlRvdWNoRW5kOworICAgICAgICAgICAgdG91Y2hQb2ludC5zZXRJ
ZChtb3VzZUV2ZW50LT5idXR0b24oKSk7CisgICAgICAgICAgICB0b3VjaFBvaW50LnNldFN0YXRl
KFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgUUV2ZW50OjpNb3VzZUJ1dHRvbkRibENsaWNrOgorICAgICAgICAgICAgLy8gRWF0IGRvdWJs
ZS1jbGlja3MsIHRoZWlyIGFjY29tcGFueWluZyBwcmVzcyBldmVudCBpcyBhbGwgd2UgbmVlZC4K
KyAgICAgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUV9BU1NFUlRfWChmYWxzZSwgIm11bHRpLXRv
dWNoIG1vY2tpbmciLCAidW5oYW5kbGVkIGV2ZW50IHR5cGUiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEEgbW92ZSBjYW4gaGF2ZSByZXN1bHRlZCBpbiBtdWx0aXBsZSBidXR0b25zLCBzbyB3
ZSBuZWVkIGNoZWNrIHRoZW0gaW5kaXZpZHVhbGx5LgorICAgICAgICBpZiAodG91Y2hQb2ludC5p
ZCgpICYgUXQ6OkxlZnRCdXR0b24pCisgICAgICAgICAgICB1cGRhdGVUb3VjaFBvaW50KG1vdXNl
RXZlbnQsIHRvdWNoUG9pbnQsIFF0OjpMZWZ0QnV0dG9uKTsKKyAgICAgICAgaWYgKHRvdWNoUG9p
bnQuaWQoKSAmIFF0OjpNaWRCdXR0b24pCisgICAgICAgICAgICB1cGRhdGVUb3VjaFBvaW50KG1v
dXNlRXZlbnQsIHRvdWNoUG9pbnQsIFF0OjpNaWRCdXR0b24pOworICAgICAgICBpZiAodG91Y2hQ
b2ludC5pZCgpICYgUXQ6OlJpZ2h0QnV0dG9uKQorICAgICAgICAgICAgdXBkYXRlVG91Y2hQb2lu
dChtb3VzZUV2ZW50LCB0b3VjaFBvaW50LCBRdDo6UmlnaHRCdXR0b24pOworCisgICAgICAgIGlm
IChtX2hvbGRpbmdDb250cm9sICYmIHRvdWNoUG9pbnQuc3RhdGUoKSA9PSBRdDo6VG91Y2hQb2lu
dFJlbGVhc2VkKSB7CisgICAgICAgICAgICAvLyBXZSBhdm9pZCBzZW5kaW5nIHRoZSByZWxlYXNl
IGV2ZW50IGJlY2F1c2UgdGhlIEZsaWNrYWJsZSBpcworICAgICAgICAgICAgLy8gbGlzdGVuaW5n
IHRvIG1vdXNlIGV2ZW50cyBhbmQgd291bGQgc3RhcnQgYSBib3VuY2UtYmFjaworICAgICAgICAg
ICAgLy8gYW5pbWF0aW9uIGlmIGl0IHJlY2VpdmVkIGEgbW91c2UgcmVsZWFzZS4KKyAgICAgICAg
ICAgIGV2ZW50LT5hY2NlcHQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgLy8gVXBkYXRlIHN0YXRlcyBmb3IgYWxsIG90aGVyIHRvdWNoLXBvaW50cwor
ICAgICAgICBmb3IgKFFIYXNoPGludCwgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+OjppdGVyYXRv
ciBpdCA9IG1fdG91Y2hQb2ludHMuYmVnaW4oKSwgZW5kID0gbV90b3VjaFBvaW50cy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpZiAoIShpdC52YWx1ZSgpLmlkKCkgJiB0
b3VjaFBvaW50LmlkKCkpKQorICAgICAgICAgICAgICAgIGl0LnZhbHVlKCkuc2V0U3RhdGUoUXQ6
OlRvdWNoUG9pbnRTdGF0aW9uYXJ5KTsKKyAgICAgICAgfQorCisgICAgICAgIFFfQVNTRVJUKHRv
dWNoVHlwZSAhPSBRRXZlbnQ6Ok5vbmUpOworCisgICAgICAgIGlmICghc2VuZFRvdWNoRXZlbnQo
YnJvd3NlcldpbmRvdywgdG91Y2hUeXBlLCBtb3VzZUV2ZW50LT50aW1lc3RhbXAoKSkpCisgICAg
ICAgICAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFyZ2V0LCBldmVudCk7CisK
KyAgICAgICAgZXZlbnQtPmFjY2VwdCgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gUUd1aUFwcGxpY2F0aW9uOjpub3RpZnkodGFyZ2V0LCBldmVudCk7Cit9CisK
K3ZvaWQgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6dXBkYXRlVG91Y2hQb2ludChjb25zdCBRTW91
c2VFdmVudCogbW91c2VFdmVudCwgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgdG91Y2hQb2ludCwg
UXQ6Ok1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uKQoreworICAgIC8vIElnbm9yZSBpbnNlcnRpbmcg
YWRkaXRpb25hbCB0b3VjaCBwb2ludHMgaWYgQ3RybCBpc24ndCBoZWxkIGJlY2F1c2UgaXQgcHJv
ZHVjZXMKKyAgICAvLyBpbmNvbnNpc3RlbnQgdG91Y2ggZXZlbnRzIGFuZCByZXN1bHRzIGluIGFz
c2VycyBpbiB0aGUgZ2VzdHVyZSByZWNvZ25pemVycy4KKyAgICBpZiAoIW1faG9sZGluZ0NvbnRy
b2wgJiYgbV90b3VjaFBvaW50cy5zaXplKCkgJiYgIW1fdG91Y2hQb2ludHMuY29udGFpbnMobW91
c2VCdXR0b24pKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9ob2xkaW5nQ29udHJvbCAm
JiB0b3VjaFBvaW50LnN0YXRlKCkgPT0gUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZCkgeworICAgICAg
ICBtX2hlbGRUb3VjaFBvaW50cy5pbnNlcnQobW91c2VCdXR0b24pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gR2VzdHVyZSByZWNvZ25pdGlvbiB1c2VzIHRoZSBzY3JlZW4gcG9z
aXRpb24gZm9yIHRoZSBpbml0aWFsIHRocmVzaG9sZAorICAgIC8vIGJ1dCBzaW5jZSB0aGUgY2Fu
dmFzIHRyYW5zbGF0ZXMgdG91Y2ggZXZlbnRzIHdlIGFjdHVhbGx5IG5lZWQgdG8gcGFzcworICAg
IC8vIHRoZSBzY3JlZW4gcG9zaXRpb24gYXMgdGhlIHNjZW5lIHBvc2l0aW9uIHRvIGRlbGl2ZXIg
dGhlIGFwcHJvcHJpYXRlCisgICAgLy8gY29vcmRpbmF0ZXMgdG8gdGhlIHRhcmdldC4KKyAgICB0
b3VjaFBvaW50LnNldFJlY3QodG91Y2hSZWN0Rm9yUG9zaXRpb24obW91c2VFdmVudC0+bG9jYWxQ
b3MoKSkpOworICAgIHRvdWNoUG9pbnQuc2V0U2NlbmVSZWN0KHRvdWNoUmVjdEZvclBvc2l0aW9u
KG1vdXNlRXZlbnQtPnNjcmVlblBvcygpKSk7CisKKyAgICBpZiAodG91Y2hQb2ludC5zdGF0ZSgp
ID09IFF0OjpUb3VjaFBvaW50UHJlc3NlZCkKKyAgICAgICAgdG91Y2hQb2ludC5zZXRTdGFydFNj
ZW5lUG9zKG1vdXNlRXZlbnQtPnNjcmVlblBvcygpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29u
c3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIG9sZFRvdWNoUG9pbnQgPSBtX3RvdWNoUG9pbnRz
W21vdXNlQnV0dG9uXTsKKyAgICAgICAgdG91Y2hQb2ludC5zZXRTdGFydFNjZW5lUG9zKG9sZFRv
dWNoUG9pbnQuc3RhcnRTY2VuZVBvcygpKTsKKyAgICAgICAgdG91Y2hQb2ludC5zZXRMYXN0UG9z
KG9sZFRvdWNoUG9pbnQucG9zKCkpOworICAgICAgICB0b3VjaFBvaW50LnNldExhc3RTY2VuZVBv
cyhvbGRUb3VjaFBvaW50LnNjZW5lUG9zKCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBjdXJy
ZW50IHRvdWNoLXBvaW50LgorICAgIHRvdWNoUG9pbnQuc2V0SWQobW91c2VCdXR0b24pOworICAg
IG1fdG91Y2hQb2ludHMuaW5zZXJ0KG1vdXNlQnV0dG9uLCB0b3VjaFBvaW50KTsKK30KKworCiti
b29sIE1pbmlCcm93c2VyQXBwbGljYXRpb246OnNlbmRUb3VjaEV2ZW50KEJyb3dzZXJXaW5kb3cq
IGJyb3dzZXJXaW5kb3csIFFFdmVudDo6VHlwZSB0eXBlLCB1bG9uZyB0aW1lc3RhbXApCit7Cisg
ICAgc3RhdGljIFFUb3VjaERldmljZSogZGV2aWNlID0gMDsKKyAgICBpZiAoIWRldmljZSkgewor
ICAgICAgICBkZXZpY2UgPSBuZXcgUVRvdWNoRGV2aWNlOworICAgICAgICBkZXZpY2UtPnNldFR5
cGUoUVRvdWNoRGV2aWNlOjpUb3VjaFNjcmVlbik7CisgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRl
cmZhY2U6OnJlZ2lzdGVyVG91Y2hEZXZpY2UoZGV2aWNlKTsKKyAgICB9CisKKyAgICBtX3BlbmRp
bmdGYWtlVG91Y2hFdmVudENvdW50Kys7CisKKyAgICBjb25zdCBRTGlzdDxRVG91Y2hFdmVudDo6
VG91Y2hQb2ludD4mIGN1cnJlbnRUb3VjaFBvaW50cyA9IG1fdG91Y2hQb2ludHMudmFsdWVzKCk7
CisgICAgUXQ6OlRvdWNoUG9pbnRTdGF0ZXMgdG91Y2hQb2ludFN0YXRlcyA9IDA7CisgICAgZm9y
ZWFjaCAoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIGN1cnJlbnRU
b3VjaFBvaW50cykKKyAgICAgICAgdG91Y2hQb2ludFN0YXRlcyB8PSB0b3VjaFBvaW50LnN0YXRl
KCk7CisKKyAgICBRVG91Y2hFdmVudCBldmVudCh0eXBlLCBkZXZpY2UsIFF0OjpOb01vZGlmaWVy
LCB0b3VjaFBvaW50U3RhdGVzLCBjdXJyZW50VG91Y2hQb2ludHMpOworICAgIGV2ZW50LnNldFRp
bWVzdGFtcCh0aW1lc3RhbXApOworICAgIGV2ZW50LnNldEFjY2VwdGVkKGZhbHNlKTsKKworICAg
IFFHdWlBcHBsaWNhdGlvbjo6bm90aWZ5KGJyb3dzZXJXaW5kb3csICZldmVudCk7CisKKyAgICBp
ZiAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6ZmxpY2thYmxlVmlld3BvcnRFbmFibGVkKCkp
CisgICAgICAgIGJyb3dzZXJXaW5kb3ctPnVwZGF0ZVZpc3VhbE1vY2tUb3VjaFBvaW50cyhtX2hv
bGRpbmdDb250cm9sID8gY3VycmVudFRvdWNoUG9pbnRzIDogUUxpc3Q8UVRvdWNoRXZlbnQ6OlRv
dWNoUG9pbnQ+KCkpOworCisgICAgLy8gR2V0IHJpZCBvZiB0b3VjaC1wb2ludHMgdGhhdCBhcmUg
bm8gbG9uZ2VyIHZhbGlkCisgICAgZm9yZWFjaCAoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9p
bnQmIHRvdWNoUG9pbnQsIGN1cnJlbnRUb3VjaFBvaW50cykgeworICAgICAgICBpZiAodG91Y2hQ
b2ludC5zdGF0ZSgpID09ICBRdDo6VG91Y2hQb2ludFJlbGVhc2VkKQorICAgICAgICAgICAgbV90
b3VjaFBvaW50cy5yZW1vdmUodG91Y2hQb2ludC5pZCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZXZlbnQuaXNBY2NlcHRlZCgpOworfQorCitzdGF0aWMgdm9pZCBwcmludEhlbHAoY29uc3QgUVN0
cmluZyYgcHJvZ3JhbU5hbWUpCit7CisgICAgcURlYnVnKCkgPDwgIlVzYWdlOiIgPDwgcHJvZ3Jh
bU5hbWUudG9MYXRpbjEoKS5kYXRhKCkKKyAgICAgICAgIDw8ICJbLS1kZXNrdG9wXSIKKyAgICAg
ICAgIDw8ICJbLXIgbGlzdF0iCisgICAgICAgICA8PCAiWy0tcm9ib3QtdGltZW91dCBzZWNvbmRz
XSIKKyAgICAgICAgIDw8ICJbLS1yb2JvdC1leHRyYS10aW1lIHNlY29uZHNdIgorICAgICAgICAg
PDwgIlstLXdpbmRvdy1zaXplICh3aWR0aCl4KGhlaWdodCldIgorICAgICAgICAgPDwgIlstLW1h
eGltaXplXSIKKyAgICAgICAgIDw8ICJbLWZdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRnVsbCBzY3JlZW4gbW9kZS4iCisgICAgICAgICA8PCAiWy0tdXNlci1hZ2VudCBzdHJp
bmddIgorICAgICAgICAgPDwgIlstdl0iCisgICAgICAgICA8PCAiVVJMIjsKK30KKwordm9pZCBN
aW5pQnJvd3NlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygpCit7CisgICAgUVN0cmlu
Z0xpc3QgYXJncyA9IGFyZ3VtZW50cygpOworICAgIFFGaWxlSW5mbyBwcm9ncmFtKGFyZ3MudGFr
ZUF0KDApKTsKKyAgICBRU3RyaW5nIHByb2dyYW1OYW1lKCJNaW5pQnJvd3NlciIpOworICAgIGlm
IChwcm9ncmFtLmV4aXN0cygpKQorICAgICAgICBwcm9ncmFtTmFtZSA9IHByb2dyYW0uYmFzZU5h
bWUoKTsKKworICAgIGlmICh0YWtlT3B0aW9uRmxhZygmYXJncywgIi0taGVscCIpKSB7CisgICAg
ICAgIHByaW50SGVscChwcm9ncmFtTmFtZSk7CisgICAgICAgIGFwcFF1aXQoMCk7CisgICAgfQor
CisgICAgY29uc3QgYm9vbCB1c2VEZXNrdG9wQmVoYXZpb3IgPSB0YWtlT3B0aW9uRmxhZygmYXJn
cywgIi0tZGVza3RvcCIpOworICAgIGlmICh1c2VEZXNrdG9wQmVoYXZpb3IpCisgICAgICAgIHdp
bmRvd09wdGlvbnMoKS0+c2V0VG91Y2hNb2NraW5nRW5hYmxlZChmYWxzZSk7CisKKyAgICBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRGbGlja2FibGVWaWV3cG9ydEVuYWJsZWQoIXVzZURl
c2t0b3BCZWhhdmlvcik7CisgICAgaWYgKCF1c2VEZXNrdG9wQmVoYXZpb3IpCisgICAgICAgIHFw
dXRlbnYoIlFUX1dFQktJVF9VU0VfTU9CSUxFX1RIRU1FIiwgUUJ5dGVBcnJheSgiMSIpKTsKKyAg
ICBtX3dpbmRvd09wdGlvbnMuc2V0UHJpbnRMb2FkZWRVcmxzKHRha2VPcHRpb25GbGFnKCZhcmdz
LCAiLXYiKSk7CisgICAgbV93aW5kb3dPcHRpb25zLnNldFN0YXJ0TWF4aW1pemVkKHRha2VPcHRp
b25GbGFnKCZhcmdzLCAiLS1tYXhpbWl6ZSIpKTsKKyAgICBtX3dpbmRvd09wdGlvbnMuc2V0U3Rh
cnRGdWxsU2NyZWVuKHRha2VPcHRpb25GbGFnKCZhcmdzLCAiLWYiKSk7CisKKyAgICBpZiAoYXJn
cy5jb250YWlucygiLS11c2VyLWFnZW50IikpCisgICAgICAgIG1fd2luZG93T3B0aW9ucy5zZXRV
c2VyQWdlbnQodGFrZU9wdGlvblZhbHVlKCZhcmdzLCAiLS11c2VyLWFnZW50IikpOworCisgICAg
aWYgKGFyZ3MuY29udGFpbnMoIi0td2luZG93LXNpemUiKSkgeworICAgICAgICBRU3RyaW5nIHZh
bHVlID0gdGFrZU9wdGlvblZhbHVlKCZhcmdzLCAiLS13aW5kb3ctc2l6ZSIpOworICAgICAgICBR
U3RyaW5nTGlzdCBsaXN0ID0gdmFsdWUuc3BsaXQoUVJlZ0V4cCgiXFxEKyIpLCBRU3RyaW5nOjpT
a2lwRW1wdHlQYXJ0cyk7CisgICAgICAgIGlmIChsaXN0Lmxlbmd0aCgpID09IDIpCisgICAgICAg
ICAgICBtX3dpbmRvd09wdGlvbnMuc2V0UmVxdWVzdGVkV2luZG93U2l6ZShRU2l6ZShsaXN0LmF0
KDApLnRvSW50KCksIGxpc3QuYXQoMSkudG9JbnQoKSkpOworICAgIH0KKworI2lmIEhBVkUoUVRU
RVNUU1VQUE9SVCkKKyAgICBpZiAodGFrZU9wdGlvbkZsYWcoJmFyZ3MsIFFTdHJpbmdMaXRlcmFs
KCItLXVzZS10ZXN0LWZvbnRzIikpKQorICAgICAgICBXZWJLaXQ6OlF0VGVzdFN1cHBvcnQ6Omlu
aXRpYWxpemVUZXN0Rm9udHMoKTsKKyNlbmRpZgorCisgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1y
IikpIHsKKyAgICAgICAgUVN0cmluZyBsaXN0RmlsZSA9IHRha2VPcHRpb25WYWx1ZSgmYXJncywg
Ii1yIik7CisgICAgICAgIGlmIChsaXN0RmlsZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBhcHBR
dWl0KDEsICItciBuZWVkcyBhIGxpc3QgZmlsZSB0byBzdGFydCBpbiByb2JvdGl6ZWQgbW9kZSIp
OworICAgICAgICBpZiAoIVFGaWxlOjpleGlzdHMobGlzdEZpbGUpKQorICAgICAgICAgICAgYXBw
UXVpdCgxLCAiVGhlIGxpc3QgZmlsZSBzdXBwbGllZCB0byAtciBkb2VzIG5vdCBleGlzdC4iKTsK
KworICAgICAgICBtX2lzUm9ib3RpemVkID0gdHJ1ZTsKKyAgICAgICAgbV91cmxzID0gUVN0cmlu
Z0xpc3QobGlzdEZpbGUpOworCisgICAgICAgIC8vIHRvSW50KCkgcmV0dXJucyAwIGlmIGl0IGZh
aWxzIHBhcnNpbmcuCisgICAgICAgIG1fcm9ib3RUaW1lb3V0U2Vjb25kcyA9IHRha2VPcHRpb25W
YWx1ZSgmYXJncywgIi0tcm9ib3QtdGltZW91dCIpLnRvSW50KCk7CisgICAgICAgIG1fcm9ib3RF
eHRyYVRpbWVTZWNvbmRzID0gdGFrZU9wdGlvblZhbHVlKCZhcmdzLCAiLS1yb2JvdC1leHRyYS10
aW1lIikudG9JbnQoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgdXJsQXJnOworCisgICAg
ICAgIHdoaWxlICgodXJsQXJnID0gYXJncy5pbmRleE9mKFFSZWdFeHAoIl5bXi1dLioiKSkpICE9
IC0xKQorICAgICAgICAgICAgbV91cmxzICs9IGFyZ3MudGFrZUF0KHVybEFyZyk7CisgICAgfQor
CisgICAgaWYgKCFhcmdzLmlzRW1wdHkoKSkgeworICAgICAgICBwcmludEhlbHAocHJvZ3JhbU5h
bWUpOworICAgICAgICBhcHBRdWl0KDEsIFFTdHJpbmcoIlVua25vd24gYXJndW1lbnQocyk6ICUx
IikuYXJnKGFyZ3Muam9pbigiLCIpKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjNkYzM4MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWluaUJyb3dzZXJBcHBsaWNhdGlvbl9o
CisjZGVmaW5lIE1pbmlCcm93c2VyQXBwbGljYXRpb25faAorCisjaW5jbHVkZSA8UUhhc2g+Cisj
aW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KKyNpbmNsdWRlIDxRdFFt
bD4KKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+Cisj
aW5jbHVkZSA8UVVybD4KKyNpbmNsdWRlIDxxcGEvcXdpbmRvd3N5c3RlbWludGVyZmFjZS5oPgor
CitjbGFzcyBCcm93c2VyV2luZG93OworCitjbGFzcyBXaW5kb3dPcHRpb25zIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9QRVJUWShib29sIHByaW50TG9hZGVkVXJs
cyBSRUFEIHByaW50TG9hZGVkVXJscykKKyAgICBRX1BST1BFUlRZKGJvb2wgc3RhcnRNYXhpbWl6
ZWQgUkVBRCBzdGFydE1heGltaXplZCkKKyAgICBRX1BST1BFUlRZKGJvb2wgdG91Y2hNb2NraW5n
RW5hYmxlZCBSRUFEIHRvdWNoTW9ja2luZ0VuYWJsZWQgV1JJVEUgc2V0VG91Y2hNb2NraW5nRW5h
YmxlZCBOT1RJRlkgdG91Y2hNb2NraW5nRW5hYmxlZENoYW5nZWQpCisKK3B1YmxpYzoKKyAgICBX
aW5kb3dPcHRpb25zKFFPYmplY3QqIHBhcmVudCA9IDApCisgICAgICAgIDogUU9iamVjdChwYXJl
bnQpCisgICAgICAgICwgbV9wcmludExvYWRlZFVybHMoZmFsc2UpCisgICAgICAgICwgbV9zdGFy
dE1heGltaXplZChmYWxzZSkKKyAgICAgICAgLCBtX3RvdWNoTW9ja2luZ0VuYWJsZWQodHJ1ZSkK
KyAgICAgICAgLCBtX3dpbmRvd1NpemUoUVNpemUoOTgwLCA3MzUpKQorICAgIHsKKyAgICB9CisK
KyAgICB2b2lkIHNldFByaW50TG9hZGVkVXJscyhib29sIGVuYWJsZWQpIHsgbV9wcmludExvYWRl
ZFVybHMgPSBlbmFibGVkOyB9CisgICAgYm9vbCBwcmludExvYWRlZFVybHMoKSBjb25zdCB7IHJl
dHVybiBtX3ByaW50TG9hZGVkVXJsczsgfQorICAgIHZvaWQgc2V0U3RhcnRNYXhpbWl6ZWQoYm9v
bCBlbmFibGVkKSB7IG1fc3RhcnRNYXhpbWl6ZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBzdGFy
dE1heGltaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRNYXhpbWl6ZWQ7IH0KKyAgICB2b2lk
IHNldFN0YXJ0RnVsbFNjcmVlbihib29sIGVuYWJsZWQpIHsgbV9zdGFydEZ1bGxTY3JlZW4gPSBl
bmFibGVkOyB9CisgICAgYm9vbCBzdGFydEZ1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0RnVsbFNjcmVlbjsgfQorICAgIHZvaWQgc2V0UmVxdWVzdGVkV2luZG93U2l6ZShjb25zdCBR
U2l6ZSYgc2l6ZSkgeyBtX3dpbmRvd1NpemUgPSBzaXplOyB9CisgICAgUVNpemUgcmVxdWVzdGVk
V2luZG93U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93U2l6ZTsgfQorICAgIHZvaWQgc2V0
VXNlckFnZW50KGNvbnN0IFFTdHJpbmcmIHVzZXJBZ2VudCkgeyBtX3VzZXJBZ2VudCA9IHVzZXJB
Z2VudDsgfQorICAgIFFTdHJpbmcgdXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV91c2VyQWdl
bnQ7IH0KKyAgICBib29sIHRvdWNoTW9ja2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3Rv
dWNoTW9ja2luZ0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFRvdWNoTW9ja2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKQorICAgIHsKKyAgICAgICAgaWYgKGVuYWJsZWQgIT0gbV90b3VjaE1vY2tpbmdF
bmFibGVkKSB7CisgICAgICAgICAgICBtX3RvdWNoTW9ja2luZ0VuYWJsZWQgPSBlbmFibGVkOwor
ICAgICAgICAgICAgZW1pdCB0b3VjaE1vY2tpbmdFbmFibGVkQ2hhbmdlZCgpOworICAgICAgICB9
CisgICAgfQorCitRX1NJR05BTFM6CisgICAgdm9pZCB0b3VjaE1vY2tpbmdFbmFibGVkQ2hhbmdl
ZCgpOworCitwcml2YXRlOgorICAgIGJvb2wgbV9wcmludExvYWRlZFVybHM7CisgICAgYm9vbCBt
X3N0YXJ0TWF4aW1pemVkOworICAgIGJvb2wgbV9zdGFydEZ1bGxTY3JlZW47CisgICAgYm9vbCBt
X3RvdWNoTW9ja2luZ0VuYWJsZWQ7CisgICAgUVNpemUgbV93aW5kb3dTaXplOworICAgIFFTdHJp
bmcgbV91c2VyQWdlbnQ7Cit9OworCitjbGFzcyBNaW5pQnJvd3NlckFwcGxpY2F0aW9uIDogcHVi
bGljIFFHdWlBcHBsaWNhdGlvbiB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIE1pbmlC
cm93c2VyQXBwbGljYXRpb24oaW50JiBhcmdjLCBjaGFyKiogYXJndik7CisgICAgUVN0cmluZ0xp
c3QgdXJscygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsczsgfQorICAgIGJvb2wgaXNSb2JvdGl6ZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzUm9ib3RpemVkOyB9CisgICAgaW50IHJvYm90VGltZW91dCgp
IGNvbnN0IHsgcmV0dXJuIG1fcm9ib3RUaW1lb3V0U2Vjb25kczsgfQorICAgIGludCByb2JvdEV4
dHJhVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9ib3RFeHRyYVRpbWVTZWNvbmRzOyB9CisgICAg
V2luZG93T3B0aW9ucyogd2luZG93T3B0aW9ucygpIHsgcmV0dXJuICZtX3dpbmRvd09wdGlvbnM7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBub3RpZnkoUU9iamVjdCosIFFFdmVudCopOworCitwcml2
YXRlOgorICAgIHZvaWQgdXBkYXRlVG91Y2hQb2ludChjb25zdCBRTW91c2VFdmVudCosIFFUb3Vj
aEV2ZW50OjpUb3VjaFBvaW50LCBRdDo6TW91c2VCdXR0b24pOworICAgIGJvb2wgc2VuZFRvdWNo
RXZlbnQoQnJvd3NlcldpbmRvdyosIFFFdmVudDo6VHlwZSwgdWxvbmcgdGltZXN0YW1wKTsKKyAg
ICB2b2lkIGhhbmRsZVVzZXJPcHRpb25zKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3JlYWxU
b3VjaEV2ZW50UmVjZWl2ZWQ7CisgICAgaW50IG1fcGVuZGluZ0Zha2VUb3VjaEV2ZW50Q291bnQ7
CisgICAgYm9vbCBtX2lzUm9ib3RpemVkOworICAgIGludCBtX3JvYm90VGltZW91dFNlY29uZHM7
CisgICAgaW50IG1fcm9ib3RFeHRyYVRpbWVTZWNvbmRzOworICAgIFFTdHJpbmdMaXN0IG1fdXJs
czsKKworICAgIFFIYXNoPGludCwgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2lu
dHM7CisgICAgUVNldDxpbnQ+IG1faGVsZFRvdWNoUG9pbnRzOworCisgICAgV2luZG93T3B0aW9u
cyBtX3dpbmRvd09wdGlvbnM7CisgICAgYm9vbCBtX2hvbGRpbmdDb250cm9sOworfTsKKworUU1M
X0RFQ0xBUkVfVFlQRShXaW5kb3dPcHRpb25zKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJs
TG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDY1OGU5Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcApAQCAt
MCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgIlVybExvYWRlci5oIgorI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrd2Vidmlld19wLmgi
CisjaW5jbHVkZSAicHJpdmF0ZS9xd2VibG9hZHJlcXVlc3RfcC5oIgorCisjaW5jbHVkZSA8UURl
YnVnPgorI2luY2x1ZGUgPFFGaWxlPgorCitVcmxMb2FkZXI6OlVybExvYWRlcihCcm93c2VyV2lu
ZG93KiBicm93c2VyV2luZG93LCBjb25zdCBRU3RyaW5nJiBpbnB1dEZpbGVOYW1lLCBpbnQgdGlt
ZW91dFNlY29uZHMsIGludCBleHRyYVRpbWVTZWNvbmRzKQorICAgIDogbV9icm93c2VyV2luZG93
KGJyb3dzZXJXaW5kb3cpCisgICAgLCBtX3N0ZE91dChzdGRvdXQpCisgICAgLCBtX2xvYWRlZCgw
KQorICAgICwgbV9udW1GcmFtZXNMb2FkaW5nKDApCit7CisgICAgbV9jaGVja0lmRmluaXNoZWRU
aW1lci5zZXRJbnRlcnZhbCgyMDApOworICAgIG1fY2hlY2tJZkZpbmlzaGVkVGltZXIuc2V0U2lu
Z2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX2NoZWNrSWZGaW5pc2hlZFRpbWVyLCBTSUdO
QUwodGltZW91dCgpKSwgdGhpcywgU0xPVChjaGVja0lmRmluaXNoZWQoKSkpOworICAgIC8vIGxv
YWRTdGFydGVkIGFuZCBsb2FkRmluaXNoZWQgb24gUVdlYlBhZ2UgaXMgZW1pdHRlZCBmb3IgZWFj
aCBmcmFtZS9zdWItZnJhbWUKKyAgICBjb25uZWN0KG1fYnJvd3NlcldpbmRvdy0+d2ViVmlldygp
LCBTSUdOQUwobG9hZGluZ0NoYW5nZWQoUVdlYkxvYWRSZXF1ZXN0KikpLCB0aGlzLCBTTE9UKGxv
YWRpbmdDaGFuZ2VkKFFXZWJMb2FkUmVxdWVzdCopKSk7CisgICAgY29ubmVjdCh0aGlzLCBTSUdO
QUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkU3RhcnRlZCgpKSk7CisgICAg
Y29ubmVjdCh0aGlzLCBTSUdOQUwobG9hZEZpbmlzaGVkKCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9h
ZEZpbmlzaGVkKCkpKTsKKworICAgIGlmICh0aW1lb3V0U2Vjb25kcykgeworICAgICAgICBtX3Rp
bWVvdXRUaW1lci5zZXRJbnRlcnZhbCh0aW1lb3V0U2Vjb25kcyAqIDEwMDApOworICAgICAgICBt
X3RpbWVvdXRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOworICAgICAgICBjb25uZWN0KHRoaXMs
IFNJR05BTChsb2FkU3RhcnRlZCgpKSwgJm1fdGltZW91dFRpbWVyLCBTTE9UKHN0YXJ0KCkpKTsK
KyAgICAgICAgY29ubmVjdCgmbV90aW1lb3V0VGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlz
LCBTTE9UKGxvYWROZXh0KCkpKTsKKyAgICB9CisgICAgaWYgKGV4dHJhVGltZVNlY29uZHMpIHsK
KyAgICAgICAgbV9leHRyYVRpbWVUaW1lci5zZXRJbnRlcnZhbChleHRyYVRpbWVTZWNvbmRzICog
MTAwMCk7CisgICAgICAgIG1fZXh0cmFUaW1lVGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAg
ICAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwocGFnZUxvYWRGaW5pc2hlZCgpKSwgJm1fZXh0cmFU
aW1lVGltZXIsIFNMT1Qoc3RhcnQoKSkpOworICAgICAgICBjb25uZWN0KCZtX2V4dHJhVGltZVRp
bWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChsb2FkTmV4dCgpKSk7CisgICAgfSBl
bHNlCisgICAgICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHBhZ2VMb2FkRmluaXNoZWQoKSksIHRo
aXMsIFNMT1QobG9hZE5leHQoKSkpOworICAgIGxvYWRVcmxMaXN0KGlucHV0RmlsZU5hbWUpOwor
fQorCit2b2lkIFVybExvYWRlcjo6bG9hZE5leHQoKQoreworICAgIG1fdGltZW91dFRpbWVyLnN0
b3AoKTsKKyAgICBtX2V4dHJhVGltZVRpbWVyLnN0b3AoKTsKKyAgICBtX2NoZWNrSWZGaW5pc2hl
ZFRpbWVyLnN0b3AoKTsKKyAgICBtX251bUZyYW1lc0xvYWRpbmcgPSAwOworICAgIFFTdHJpbmcg
cXN0cjsKKyAgICBpZiAoZ2V0VXJsKHFzdHIpKSB7CisgICAgICAgIFFVcmwgdXJsKHFzdHIsIFFV
cmw6OlN0cmljdE1vZGUpOworICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgeworICAgICAgICAg
ICAgbV9zdGRPdXQgPDwgIkxvYWRpbmcgIiA8PCBxc3RyIDw8ICIgLi4uLi4uIiA8PCArK21fbG9h
ZGVkIDw8IGVuZGw7CisgICAgICAgICAgICBtX2Jyb3dzZXJXaW5kb3ctPmxvYWQodXJsLnRvU3Ry
aW5nKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvYWROZXh0KCk7CisgICAgfSBl
bHNlCisgICAgICAgIGRpc2Nvbm5lY3QobV9icm93c2VyV2luZG93LCAwLCB0aGlzLCAwKTsKK30K
Kwordm9pZCBVcmxMb2FkZXI6OmNoZWNrSWZGaW5pc2hlZCgpCit7CisgICAgaWYgKCFtX251bUZy
YW1lc0xvYWRpbmcpCisgICAgICAgIGVtaXQgcGFnZUxvYWRGaW5pc2hlZCgpOworfQorCit2b2lk
IFVybExvYWRlcjo6ZnJhbWVMb2FkU3RhcnRlZCgpCit7CisgICAgKyttX251bUZyYW1lc0xvYWRp
bmc7CisgICAgbV9jaGVja0lmRmluaXNoZWRUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgVXJsTG9h
ZGVyOjpmcmFtZUxvYWRGaW5pc2hlZCgpCit7CisgICAgUV9BU1NFUlQobV9udW1GcmFtZXNMb2Fk
aW5nID4gMCk7CisgICAgLS1tX251bUZyYW1lc0xvYWRpbmc7CisgICAgLy8gT25jZSBvdXIgZnJh
bWUgaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHdhaXQgYSBtb21lbnQgdG8gY2FsbCBsb2FkTmV4dCBm
b3IgY2FzZXMKKyAgICAvLyB3aGVyZSBhIHN1Yi1mcmFtZSBzdGFydHMgbG9hZGluZyBvciBhbm90
aGVyIGZyYW1lIGlzIGxvYWRlZCB0aHJvdWdoIEphdmFTY3JpcHQuCisgICAgbV9jaGVja0lmRmlu
aXNoZWRUaW1lci5zdGFydCgpOworfQorCit2b2lkIFVybExvYWRlcjo6bG9hZFVybExpc3QoY29u
c3QgUVN0cmluZyYgaW5wdXRGaWxlTmFtZSkKK3sKKyAgICBRRmlsZSBpbnB1dEZpbGUoaW5wdXRG
aWxlTmFtZSk7CisgICAgaWYgKGlucHV0RmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkgfCBR
SU9EZXZpY2U6OlRleHQpKSB7CisgICAgICAgIFFUZXh0U3RyZWFtIHN0cmVhbSgmaW5wdXRGaWxl
KTsKKyAgICAgICAgUVN0cmluZyBsaW5lOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgbGluZSA9IHN0cmVhbS5yZWFkTGluZSgpOworICAgICAgICAgICAgaWYgKGxpbmUuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX3VybHMuYXBwZW5k
KGxpbmUpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcURlYnVnKCkgPDwgIkNh
bid0IG9wZW4gbGlzdCBmaWxlIjsKKyAgICAgICAgZXhpdCgwKTsKKyAgICB9CisgICAgbV9pbmRl
eCA9IDA7CisgICAgaW5wdXRGaWxlLmNsb3NlKCk7Cit9CisKK2Jvb2wgVXJsTG9hZGVyOjpnZXRV
cmwoUVN0cmluZyYgcXN0cikKK3sKKyAgICBpZiAobV9pbmRleCA9PSBtX3VybHMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBxc3RyID0gbV91cmxzW21faW5kZXgrK107Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVXJsTG9hZGVyOjpsb2FkaW5nQ2hhbmdlZChRV2Vi
TG9hZFJlcXVlc3QqIGxvYWRSZXF1ZXN0KQoreworICAgIHN3aXRjaCAobG9hZFJlcXVlc3QtPnN0
YXR1cygpKSB7CisgICAgY2FzZSBRUXVpY2tXZWJWaWV3OjpMb2FkU3RhcnRlZFN0YXR1czoKKyAg
ICAgICAgZW1pdCBsb2FkU3RhcnRlZCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFFRdWlj
a1dlYlZpZXc6OkxvYWRTdG9wcGVkU3RhdHVzOgorICAgIGNhc2UgUVF1aWNrV2ViVmlldzo6TG9h
ZFN1Y2NlZWRlZFN0YXR1czoKKyAgICBjYXNlIFFRdWlja1dlYlZpZXc6OkxvYWRGYWlsZWRTdGF0
dXM6CisgICAgZGVmYXVsdDoKKyAgICAgICAgZW1pdCBsb2FkRmluaXNoZWQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9h
ZGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hNjQ1NDhhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvVXJsTG9hZGVyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVcmxMb2FkZXJfaAorI2RlZmluZSBVcmxM
b2FkZXJfaAorCisjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgorCisjaW5jbHVkZSA8UVRleHRT
dHJlYW0+CisjaW5jbHVkZSA8UVRpbWVyPgorI2luY2x1ZGUgPFFWZWN0b3I+CisKK2NsYXNzIFFX
ZWJMb2FkUmVxdWVzdDsKKworY2xhc3MgVXJsTG9hZGVyIDogcHVibGljIFFPYmplY3QgeworICAg
IFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBVcmxMb2FkZXIoQnJvd3NlcldpbmRvdyosIGNvbnN0
IFFTdHJpbmcmLCBpbnQsIGludCk7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgbG9hZE5l
eHQoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgY2hlY2tJZkZpbmlzaGVkKCk7Cisg
ICAgdm9pZCBmcmFtZUxvYWRTdGFydGVkKCk7CisgICAgdm9pZCBmcmFtZUxvYWRGaW5pc2hlZCgp
OworICAgIHZvaWQgbG9hZGluZ0NoYW5nZWQoUVdlYkxvYWRSZXF1ZXN0Kik7CisKK1FfU0lHTkFM
UzoKKyAgICB2b2lkIHBhZ2VMb2FkRmluaXNoZWQoKTsKKyAgICB2b2lkIGxvYWRTdGFydGVkKCk7
CisgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGxvYWRVcmxM
aXN0KGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUpOworICAgIGJvb2wgZ2V0VXJsKFFTdHJp
bmcmIHFzdHIpOworCitwcml2YXRlOgorICAgIFFWZWN0b3I8UVN0cmluZz4gbV91cmxzOworICAg
IGludCBtX2luZGV4OworICAgIEJyb3dzZXJXaW5kb3cqIG1fYnJvd3NlcldpbmRvdzsKKyAgICBR
VGV4dFN0cmVhbSBtX3N0ZE91dDsKKyAgICBpbnQgbV9sb2FkZWQ7CisgICAgUVRpbWVyIG1fdGlt
ZW91dFRpbWVyOworICAgIFFUaW1lciBtX2V4dHJhVGltZVRpbWVyOworICAgIFFUaW1lciBtX2No
ZWNrSWZGaW5pc2hlZFRpbWVyOworICAgIGludCBtX251bUZyYW1lc0xvYWRpbmc7Cit9OworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL2NoZWNrYm94X2No
ZWNrZWQucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvY2hlY2tib3hfY2hlY2tlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmMDZmNgpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL2NoZWNrYm94X2No
ZWNrZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMv
Y2hlY2tib3hfdW5jaGVja2VkLnBuZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL2NoZWNr
Ym94X3VuY2hlY2tlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1
NDY1NQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2lj
b25zL2NoZWNrYm94X3VuY2hlY2tlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xdC9pY29ucy9jb250ZW50c193aWR0aC5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9pY29ucy9jb250ZW50c193aWR0aC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZjJhNzllYgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L2ljb25zL2NvbnRlbnRzX3dpZHRoLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L2ljb25zL2Zhdmljb24ucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
aWNvbnMvZmF2aWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1
ZDViZApCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2lj
b25zL2Zhdmljb24ucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQv
aWNvbnMvZmluZC5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9maW5kLnBuZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzZhZmEzCkJpbmFyeSBmaWxlcyAvZGV2
L251bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvZmluZC5wbmcgZGlmZmVyCmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9mb2xkZXIucG5nIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvaWNvbnMvZm9sZGVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lNTNlMmFkCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvaWNvbnMvZm9sZGVyLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L2ljb25zL2luZm8ucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMv
aW5mby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0ODNmZgpCaW5h
cnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL2luZm8u
cG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5w
bmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi42ZjNmNjVkCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9wbHVzLnBuZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0
L2ljb25zL3BsdXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZGZi
ZDAKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29u
cy9wbHVzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25z
L3ByZXZpb3VzLnBuZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3ByZXZpb3VzLnBuZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2JlM2QxCkJpbmFyeSBmaWxlcyAv
ZGV2L251bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcHJldmlvdXMucG5nIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcmVmcmVzaC5wbmcg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9yZWZyZXNoLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5jYWI0ZDAyCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcmVmcmVzaC5wbmcgZGlmZmVyCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L2ljb25zL3N0b3AucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2
ODI5MGIKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9p
Y29ucy9zdG9wLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2lj
b25zL3RpdGxlYmFyLnBuZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3RpdGxlYmFyLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2QxOGFhCkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvdGl0bGViYXIucG5n
IGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvdG91Y2gucG5n
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvdG91Y2gucG5nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjE4MmFlMGYKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9U
b29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy90b3VjaC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy90b3VjaHBvaW50LnBuZyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L2ljb25zL3RvdWNocG9pbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjc2NDllZTkKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9pY29ucy90b3VjaHBvaW50LnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L2ljb25zL3VwLnBuZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3Vw
LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDVmODAyCkJpbmFyeSBm
aWxlcyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvdXAucG5nIGRp
ZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvanMvTXVsdGlTZWxlY3QuanMg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9qcy9NdWx0aVNlbGVjdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZTg3ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvanMvTXVsdGlTZWxlY3QuanMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKwordmFyIHZhbHVlcyA9IFtdCisKK2Z1bmN0aW9uIHNlbGVjdGVkVmFsdWVzKCkg
eworICAgIHJldHVybiB2YWx1ZXMKK30KKworZnVuY3Rpb24gaXNTZWxlY3RlZCh2YWx1ZSkgewor
ICAgIHJldHVybiAodmFsdWVzLmluZGV4T2YodmFsdWUpICE9IC0xKQorfQorCitmdW5jdGlvbiBh
ZGRWYWx1ZSh2YWx1ZSkgeworICAgIGlmICh2YWx1ZXMuaW5kZXhPZih2YWx1ZSkgIT0gLTEpCisg
ICAgICAgIHJldHVybgorICAgIHZhbHVlcy5wdXNoKHZhbHVlKQorfQorCitmdW5jdGlvbiByZW1v
dmVWYWx1ZSh2YWx1ZSkgeworICAgIHZhciBpbmRleCA9IHZhbHVlcy5pbmRleE9mKHZhbHVlKQor
CisgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICByZXR1cm4KKyAgICB2YWx1ZXMuc3BsaWNl
KGluZGV4LCAxKQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YzhjZDkyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvbWFpbi5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKKworI2luY2x1ZGUgIk1pbmlC
cm93c2VyQXBwbGljYXRpb24uaCIKKyNpbmNsdWRlICJVcmxMb2FkZXIuaCIKKworI2luY2x1ZGUg
PHFxbWwuaD4KKworI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUxhdGluMVN0cmluZz4KKyNp
bmNsdWRlIDxRUmVnRXhwPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7Cisg
ICAgTWluaUJyb3dzZXJBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CisKKyAgICBpZiAoYXBw
LmlzUm9ib3RpemVkKCkpIHsKKyAgICAgICAgQnJvd3NlcldpbmRvdyogd2luZG93ID0gbmV3IEJy
b3dzZXJXaW5kb3coYXBwLndpbmRvd09wdGlvbnMoKSk7CisgICAgICAgIFVybExvYWRlciBsb2Fk
ZXIod2luZG93LCBhcHAudXJscygpLmF0KDApLCBhcHAucm9ib3RUaW1lb3V0KCksIGFwcC5yb2Jv
dEV4dHJhVGltZSgpKTsKKyAgICAgICAgbG9hZGVyLmxvYWROZXh0KCk7CisgICAgICAgIHdpbmRv
dy0+c2hvdygpOworICAgICAgICByZXR1cm4gYXBwLmV4ZWMoKTsKKyAgICB9CisKKyAgICBRU3Ry
aW5nTGlzdCB1cmxzID0gYXBwLnVybHMoKTsKKworICAgIGlmICh1cmxzLmlzRW1wdHkoKSkgewor
ICAgICAgICBRU3RyaW5nIGRlZmF1bHRJbmRleEZpbGUgPSBRU3RyaW5nKCIlMS8lMiIpLmFyZyhR
RGlyOjpob21lUGF0aCgpKS5hcmcoUUxhdGluMVN0cmluZygiaW5kZXguaHRtbCIpKTsKKyAgICAg
ICAgaWYgKFFGaWxlKGRlZmF1bHRJbmRleEZpbGUpLmV4aXN0cygpKQorICAgICAgICAgICAgdXJs
cy5hcHBlbmQoUVN0cmluZygiZmlsZTovLyIpICsgZGVmYXVsdEluZGV4RmlsZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHVybHMuYXBwZW5kKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20iKTsK
KyAgICB9CisKKyAgICBCcm93c2VyV2luZG93KiB3aW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyhh
cHAud2luZG93T3B0aW9ucygpKTsKKyAgICB3aW5kb3ctPmxvYWQodXJscy5hdCgwKSk7CisKKyAg
ICBmb3IgKGludCBpID0gMTsgaSA8IHVybHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHdpbmRvdy0+
bmV3V2luZG93KHVybHMuYXQoaSkpOworCisgICAgYXBwLmV4ZWMoKTsKKworICAgIHJldHVybiAw
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0FsZXJ0RGlhbG9nLnFt
bCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9BbGVydERpYWxvZy5xbWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBlYjFhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0L3FtbC9BbGVydERpYWxvZy5xbWwKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9ydCBR
dFF1aWNrIDIuMAorCitEaWFsb2cgeworICAgIHRpdGxlOiAiSmF2YVNjcmlwdCBBbGVydCIKKyAg
ICBtZXNzYWdlOiBtb2RlbC5tZXNzYWdlCisKKyAgICBEaWFsb2dCdXR0b24geworICAgICAgICB0
ZXh0OiAiT0siCisgICAgICAgIG9uQ2xpY2tlZDogbW9kZWwuZGlzbWlzcygpCisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0F1dGhlbnRpY2F0aW9uRGlhbG9n
LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9BdXRoZW50aWNhdGlvbkRpYWxvZy5xbWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4OGQzZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9BdXRoZW50aWNhdGlvbkRpYWxvZy5xbWwK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitEaWFsb2cgeworICAgIGlkOiBkaWFs
b2cKKworICAgIHRpdGxlOiAiQXV0aGVudGljYXRpb24gcmVxdWlyZWQuIiAKKyAgICBtZXNzYWdl
OiBtb2RlbC5ob3N0bmFtZSArICIgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uIgorCisgICAgaGVp
Z2h0OiAyNTAKKworICAgIERpYWxvZ0xpbmVJbnB1dCB7CisgICAgICAgIGlkOiBpbnB1dAorICAg
ICAgICB3aWR0aDogZGlhbG9nLndpZHRoIC0gMzAKKyAgICAgICAgdGV4dDogbW9kZWwucHJlZmls
bGVkVXNlcm5hbWUKKworICAgICAgICBvbkFjY2VwdGVkOiBtb2RlbC5hY2NlcHQoaW5wdXQudGV4
dCwgcGFzc3dvcmRJbnB1dC50ZXh0KQorICAgIH0KKworICAgIERpYWxvZ0xpbmVJbnB1dCB7Cisg
ICAgICAgIGlkOiBwYXNzd29yZElucHV0CisgICAgICAgIHRleHQ6ICIiIAorICAgICAgICB3aWR0
aDogZGlhbG9nLndpZHRoIC0gMzAKKyAgICAgICAgZWNob01vZGU6IFRleHRJbnB1dC5QYXNzd29y
ZEVjaG9PbkVkaXQKKworICAgICAgICBvbkFjY2VwdGVkOiBtb2RlbC5hY2NlcHQoaW5wdXQudGV4
dCwgcGFzc3dvcmRJbnB1dC50ZXh0KQorICAgIH0KKworICAgIFJvdyB7CisgICAgICAgIGlkOiBi
dXR0b25Sb3cKKyAgICAgICAgc3BhY2luZzogNQorICAgICAgICBhbmNob3JzLmhvcml6b250YWxD
ZW50ZXI6IHBhcmVudC5ob3Jpem9udGFsQ2VudGVyCisKKyAgICAgICAgRGlhbG9nQnV0dG9uIHsK
KyAgICAgICAgICAgIHRleHQ6ICJPSyIKKyAgICAgICAgICAgIG9uQ2xpY2tlZDogbW9kZWwuYWNj
ZXB0KGlucHV0LnRleHQsIHBhc3N3b3JkSW5wdXQudGV4dCkKKyAgICAgICAgfQorCisgICAgICAg
IERpYWxvZ0J1dHRvbiB7CisgICAgICAgICAgICB0ZXh0OiAiQ2FuY2VsIgorICAgICAgICAgICAg
b25DbGlja2VkOiBtb2RlbC5yZWplY3QoKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmI0YjViYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWwKQEAgLTAsMCArMSw1ODUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqIENvcHly
aWdodCAoYykgMjAxMiBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgor
ICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW1wb3J0IFF0UXVpY2sgMi4wCitp
bXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDEuMAorCitS
ZWN0YW5nbGUgeworICAgIGlkOiByb290CisgICAgLy8gRG8gbm90IGRlZmluZSBhbmNob3JzIG9y
IGFuIGluaXRpYWwgc2l6ZSBoZXJlISBUaGlzIHdvdWxkIG1lc3MgdXAgd2l0aCBRU0dWaWV3OjpT
aXplUm9vdE9iamVjdFRvVmlldy4KKworICAgIHByb3BlcnR5IGFsaWFzIHdlYnZpZXc6IHdlYlZp
ZXcKKyAgICBjb2xvcjogIiMzMzMiCisKKyAgICBzaWduYWwgcGFnZVRpdGxlQ2hhbmdlZChzdHJp
bmcgdGl0bGUpCisgICAgc2lnbmFsIG5ld1dpbmRvdyhzdHJpbmcgdXJsKQorCisgICAgZnVuY3Rp
b24gbG9hZChhZGRyZXNzKSB7CisgICAgICAgIHdlYlZpZXcudXJsID0gYWRkcmVzcworICAgICAg
ICB3ZWJWaWV3LmZvcmNlQWN0aXZlRm9jdXMoKQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJlbG9h
ZCgpIHsKKyAgICAgICAgd2ViVmlldy5yZWxvYWQoKQorICAgICAgICB3ZWJWaWV3LmZvcmNlQWN0
aXZlRm9jdXMoKQorICAgIH0KKworICAgIGZ1bmN0aW9uIGZvY3VzQWRkcmVzc0JhcigpIHsKKyAg
ICAgICAgYWRkcmVzc0xpbmUuZm9yY2VBY3RpdmVGb2N1cygpCisgICAgICAgIGFkZHJlc3NMaW5l
LnNlbGVjdEFsbCgpCisgICAgfQorICAgIGZ1bmN0aW9uIHRvZ2dsZUZpbmQoKSB7CisgICAgICAg
IGZpbmRCYXIudG9nZ2xlKCkKKyAgICB9CisgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6IGZp
bmRCYXIKKyAgICAgICAgejogd2ViVmlldy56ICsgMQorICAgICAgICB5OiBuYXZpZ2F0aW9uQmFy
LnkKKyAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAorICAg
ICAgICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICB9CisgICAgICAgIGhlaWdodDog
bmF2aWdhdGlvbkJhci5oZWlnaHQKKyAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorICAgICAgICB2
aXNpYmxlOiB5ID4gbmF2aWdhdGlvbkJhci55CisKKyAgICAgICAgQmVoYXZpb3Igb24geSB7TnVt
YmVyQW5pbWF0aW9uIHtkdXJhdGlvbjogMjUwfX0KKworICAgICAgICBmdW5jdGlvbiB0b2dnbGUo
KSB7CisgICAgICAgICAgICBpZiAoeSA9PSBuYXZpZ2F0aW9uQmFyLnkpIHsKKyAgICAgICAgICAg
ICAgICBmaW5kVGV4dElucHV0LmZvcmNlQWN0aXZlRm9jdXMoKQorICAgICAgICAgICAgICAgIHkg
Kz0gaGVpZ2h0CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdlYlZpZXcu
Zm9yY2VBY3RpdmVGb2N1cygpCisgICAgICAgICAgICAgICAgeSA9IG5hdmlnYXRpb25CYXIueQor
ICAgICAgICAgICAgICAgIGZpbmQoIiIsMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBmaW5kKHN0ciwgb3B0aW9ucykgeworICAgICAgICAgICAgdmFyIGZp
bmRPcHRpb25zID0gb3B0aW9ucyB8IFdlYlZpZXdFeHBlcmltZW50YWwuRmluZEhpZ2hsaWdodEFs
bE9jY3VycmVuY2VzCisgICAgICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJWaWV3RXhwZXJpbWVu
dGFsLkZpbmRXcmFwc0Fyb3VuZERvY3VtZW50CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1l
bnRhbC5maW5kVGV4dChzdHIsIGZpbmRPcHRpb25zKQorICAgICAgICB9CisKKyAgICAgICAgQ29u
bmVjdGlvbnMgeworICAgICAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3LmV4cGVyaW1lbnRhbAorICAg
ICAgICAgICAgb25UZXh0Rm91bmQ6IHsKKyAgICAgICAgICAgICAgICBmYWlsZWRPdmVybGF5LnZp
c2libGUgPSBtYXRjaENvdW50ID09IDAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBJdGVtIHsKKyAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICBS
ZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiBpbnB1dEFyZWEKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDI2CisgICAgICAgICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAg
ICAgIGxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBwcmV2QnV0
dG9uLmxlZnQKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luczogNgorICAgICAgICAgICAgICAg
ICAgICB2ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNvbG9yOiAid2hpdGUiCisgICAgICAgICAgICAgICAgYm9y
ZGVyLndpZHRoOiAxCisgICAgICAgICAgICAgICAgYm9yZGVyLmNvbG9yOiAiI2JmYmZiZiIKKyAg
ICAgICAgICAgICAgICByYWRpdXM6IDMKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUgeworICAg
ICAgICAgICAgICAgICAgICBpZDogZmFpbGVkT3ZlcmxheQorICAgICAgICAgICAgICAgICAgICBh
bmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBjb2xvcjogInJlZCIKKyAg
ICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41CisgICAgICAgICAgICAgICAgICAgIHJhZGl1
czogNgorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBUZXh0SW5wdXQgeworICAgICAgICAgICAgICAgICAgICBpZDog
ZmluZFRleHRJbnB1dAorICAgICAgICAgICAgICAgICAgICBjbGlwOiB0cnVlCisgICAgICAgICAg
ICAgICAgICAgIHNlbGVjdEJ5TW91c2U6IHRydWUKKyAgICAgICAgICAgICAgICAgICAgaG9yaXpv
bnRhbEFsaWdubWVudDogVGV4dElucHV0LkFsaWduTGVmdAorICAgICAgICAgICAgICAgICAgICBh
bmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBhbmNob3JzLm1hcmdpbnM6
IDMKKyAgICAgICAgICAgICAgICAgICAgZm9udCB7CisgICAgICAgICAgICAgICAgICAgICAgICBw
b2ludFNpemU6IDExCisgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHk6ICJTYW5zIgorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRleHQ6ICIiCisgICAgICAg
ICAgICAgICAgICAgIHJlYWRPbmx5OiAhZmluZEJhci52aXNpYmxlCisgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uIGRvRmluZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlu
ZEJhci52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRU
ZXh0SW5wdXQudGV4dCA9PSAiIikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxl
ZE92ZXJsYXkudmlzaWJsZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaW5kQmFyLmZpbmQoZmluZFRleHRJbnB1dC50ZXh0KQorICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG9uVGV4dENoYW5nZWQ6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRvRmluZCgpCisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgS2V5cy5vblJldHVyblByZXNzZWQ6eworICAgICAgICAgICAg
ICAgICAgICAgICAgZG9GaW5kKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAg
ICAgICAgaWQ6IHByZXZCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IGlucHV0QXJlYS5o
ZWlnaHQKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgYW5j
aG9ycy5yaWdodDogbmV4dEJ1dHRvbi5sZWZ0CisgICAgICAgICAgICAgICAgYW5jaG9ycy52ZXJ0
aWNhbENlbnRlcjogcGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgY29sb3I6
ICIjZWZlZmVmIgorICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAg
SW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlOiAiLi4vaWNvbnMvcHJldmlvdXMucG5nIgorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAg
ICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBw
YXJlbnQuY29sb3IKKyAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBwYXJlbnQucmFkaXVzCisg
ICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNp
YmxlOiAhcGFyZW50LmVuYWJsZWQKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAor
ICAgICAgICAgICAgICAgICAgICBvblByZXNzZWQ6IHsgaWYgKHBhcmVudC5lbmFibGVkKSBwYXJl
bnQuY29sb3IgPSAiI2NmY2ZjZiIgfQorICAgICAgICAgICAgICAgICAgICBvblJlbGVhc2VkOiB7
IHBhcmVudC5jb2xvciA9ICIjZWZlZmVmIiB9CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tl
ZDogeworICAgICAgICAgICAgICAgICAgICAgICAgZmluZEJhci5maW5kKGZpbmRUZXh0SW5wdXQu
dGV4dCwgV2ViVmlld0V4cGVyaW1lbnRhbC5GaW5kQmFja3dhcmQpCisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWN0
YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiBuZXh0QnV0dG9uCisgICAgICAgICAgICAgICAg
aGVpZ2h0OiBpbnB1dEFyZWEuaGVpZ2h0CisgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodAor
ICAgICAgICAgICAgICAgIGFuY2hvcnMucmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICAgICAg
ICAgIGFuY2hvcnMudmVydGljYWxDZW50ZXI6IHBhcmVudC52ZXJ0aWNhbENlbnRlcgorICAgICAg
ICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKyAgICAgICAgICAgICAgICByYWRpdXM6IDYKKwor
ICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50
ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL25leHQu
cG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJlY3RhbmdsZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yOiBwYXJlbnQuY29sb3IKKyAgICAgICAgICAgICAgICAgICAgcmFkaXVzOiBwYXJl
bnQucmFkaXVzCisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAgICAg
ICAgICAgICB2aXNpYmxlOiAhcGFyZW50LmVuYWJsZWQKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZp
bGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvblByZXNzZWQ6IHsgaWYgKHBhcmVudC5l
bmFibGVkKSBwYXJlbnQuY29sb3IgPSAiI2NmY2ZjZiIgfQorICAgICAgICAgICAgICAgICAgICBv
blJlbGVhc2VkOiB7IHBhcmVudC5jb2xvciA9ICIjZWZlZmVmIiB9CisgICAgICAgICAgICAgICAg
ICAgIG9uQ2xpY2tlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgZmluZEJhci5maW5kKGZp
bmRUZXh0SW5wdXQudGV4dCwgMCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBSZWN0YW5nbGUgewor
ICAgICAgICBpZDogbmF2aWdhdGlvbkJhcgorICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAg
ICAgIGhlaWdodDogMzgKKyAgICAgICAgejogd2ViVmlldy56ICsgMQorICAgICAgICBhbmNob3Jz
IHsKKyAgICAgICAgICAgIHRvcDogcGFyZW50LnRvcAorICAgICAgICAgICAgbGVmdDogcGFyZW50
LmxlZnQKKyAgICAgICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgfQorCisgICAg
ICAgIFJvdyB7CisgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQgLSA2CisgICAgICAg
ICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZl
cnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAg
ICAgICAgICBsZWZ0TWFyZ2luOiAzCisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGFjaW5n
OiAzCisgICAgICAgICAgICBpZDogY29udHJvbHNSb3cKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7
CisgICAgICAgICAgICAgICAgaWQ6IGJhY2tCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IHBhcmVudC5oZWlnaHQKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAg
ICAgICAgY29sb3I6ICIjZWZlZmVmIgorICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAg
ICAgICAgICAgICAgcHJvcGVydHkgYWxpYXMgZW5hYmxlZDogd2ViVmlldy5jYW5Hb0JhY2sKKwor
ICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50
ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL3ByZXZp
b3VzLnBuZyIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUg
eworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAg
ICAgICAgICBjb2xvcjogcGFyZW50LmNvbG9yCisgICAgICAgICAgICAgICAgICAgIHJhZGl1czog
cGFyZW50LnJhZGl1cworICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjgKKyAgICAgICAg
ICAgICAgICAgICAgdmlzaWJsZTogIXBhcmVudC5lbmFibGVkCisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9y
cy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgb25QcmVzc2VkOiB7IGlmIChwYXJl
bnQuZW5hYmxlZCkgcGFyZW50LmNvbG9yID0gIiNjZmNmY2YiIH0KKyAgICAgICAgICAgICAgICAg
ICAgb25SZWxlYXNlZDogeyBwYXJlbnQuY29sb3IgPSAiI2VmZWZlZiIgfQorICAgICAgICAgICAg
ICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQu
ZW5hYmxlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJNaW5p
QnJvd3NlcjogR29pbmcgYmFja3dhcmQgaW4gc2Vzc2lvbiBoaXN0b3J5LiIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2ViVmlldy5nb0JhY2soKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYlZpZXcuZm9yY2VBY3RpdmVGb2N1cygpCisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiBmb3J3YXJk
QnV0dG9uCisgICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQuaGVpZ2h0CisgICAgICAgICAg
ICAgICAgd2lkdGg6IGhlaWdodAorICAgICAgICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKyAg
ICAgICAgICAgICAgICByYWRpdXM6IDYKKworICAgICAgICAgICAgICAgIHByb3BlcnR5IGFsaWFz
IGVuYWJsZWQ6IHdlYlZpZXcuY2FuR29Gb3J3YXJkCisKKyAgICAgICAgICAgICAgICBJbWFnZSB7
CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAg
ICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9uZXh0LnBuZyIKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgICAgICBhbmNo
b3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFyZW50LmNvbG9y
CisgICAgICAgICAgICAgICAgICAgIHJhZGl1czogcGFyZW50LnJhZGl1cworICAgICAgICAgICAg
ICAgICAgICBvcGFjaXR5OiAwLjgKKyAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogIXBhcmVu
dC5lbmFibGVkCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91c2VBcmVh
IHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAg
ICAgICAgICAgb25QcmVzc2VkOiB7IGlmIChwYXJlbnQuZW5hYmxlZCkgcGFyZW50LmNvbG9yID0g
IiNjZmNmY2YiIH0KKyAgICAgICAgICAgICAgICAgICAgb25SZWxlYXNlZDogeyBwYXJlbnQuY29s
b3IgPSAiI2VmZWZlZiIgfQorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuZW5hYmxlZCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJNaW5pQnJvd3NlcjogR29pbmcgZm9yd2FyZCBpbiBz
ZXNzaW9uIGhpc3RvcnkuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3Lmdv
Rm9yd2FyZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViVmlldy5mb3JjZUFjdGl2
ZUZvY3VzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3Rhbmds
ZSB7CisgICAgICAgICAgICAgICAgaWQ6IHJlbG9hZEJ1dHRvbgorICAgICAgICAgICAgICAgIGhl
aWdodDogcGFyZW50LmhlaWdodAorICAgICAgICAgICAgICAgIHdpZHRoOiBoZWlnaHQKKyAgICAg
ICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgICAgICAgICAgcmFkaXVzOiA2CisK
KyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2Vu
dGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHdlYlZpZXcubG9hZGlu
ZyA/ICIuLi9pY29ucy9zdG9wLnBuZyIgOiAiLi4vaWNvbnMvcmVmcmVzaC5wbmciCisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAgICAg
ICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgb25QcmVzc2Vk
OiB7IHBhcmVudC5jb2xvciA9ICIjY2ZjZmNmIiB9CisgICAgICAgICAgICAgICAgICAgIG9uUmVs
ZWFzZWQ6IHsgcGFyZW50LmNvbG9yID0gIiNlZmVmZWYiIH0KKyAgICAgICAgICAgICAgICAgICAg
b25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2ViVmlldy5sb2FkaW5n
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViVmlldy5zdG9wKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVs
b2FkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUmVjdGFuZ2xl
IHsKKyAgICAgICAgICAgICAgICBpZDogdmlld3BvcnRJbmZvQnV0dG9uCisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiBwYXJlbnQuaGVpZ2h0CisgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodAor
ICAgICAgICAgICAgICAgIGNvbG9yOiB7IHZpZXdwb3J0SW5mb0l0ZW0udmlzaWJsZSA/ICIjY2Zj
ZmNmIiA6ICIjZWZlZmVmIiB9CisgICAgICAgICAgICAgICAgcmFkaXVzOiA2CisKKyAgICAgICAg
ICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBh
cmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9pbmZvLnBuZyIKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAg
ICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNs
aWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRJbmZvSXRlbS52aXNpYmxl
ID0gIXZpZXdwb3J0SW5mb0l0ZW0udmlzaWJsZQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWN0YW5nbGUgewor
ICAgICAgICAgICAgICAgIGlkOiBwcmVmZXJyZWRNaW5pbnVtQ29udGVudHNXaWR0aEJ1dHRvbgor
ICAgICAgICAgICAgICAgIGhlaWdodDogcGFyZW50LmhlaWdodAorICAgICAgICAgICAgICAgIHdp
ZHRoOiBoZWlnaHQKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgICAg
ICAgICAgb3BhY2l0eTogeyB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5wcmVmZXJyZWRNaW5pbXVtQ29u
dGVudHNXaWR0aCA9PT0gMCA/IDAuMSA6IDAuNiB9CisgICAgICAgICAgICAgICAgcmFkaXVzOiA2
CisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMu
Y2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9j
b250ZW50c193aWR0aC5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
TW91c2VBcmVhIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICB3
ZWJWaWV3LmV4cGVyaW1lbnRhbC5wcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCA9IHdlYlZp
ZXcuZXhwZXJpbWVudGFsLnByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoID09PSAwID8gOTgw
IDogMAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiBmaW5k
QnV0dG9uCisgICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQuaGVpZ2h0CisgICAgICAgICAg
ICAgICAgd2lkdGg6IGhlaWdodAorICAgICAgICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKyAg
ICAgICAgICAgICAgICByYWRpdXM6IDYKKworICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAg
ICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAg
ICAgIG9wYWNpdHk6IDAuNgorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9m
aW5kLnBuZyIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEg
eworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAg
ICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRCYXIudG9n
Z2xlKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogdG91
Y2hFdmVudHNCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQKKyAg
ICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZl
ZmVmIgorICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAgSW1hZ2Ug
eworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAg
ICAgICAgICAgICAgb3BhY2l0eTogb3B0aW9ucy50b3VjaE1vY2tpbmdFbmFibGVkID8gMC42IDog
MC4xCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL3RvdWNoLnBuZyIKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAg
ICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNs
aWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnRvdWNoTW9ja2lu
Z0VuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiVG91
Y2ggTW9ja2luZyBEaXNhYmxlZCIpCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJUb3VjaCBNb2NraW5nIEVu
YWJsZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb25zLnRvdWNoTW9ja2luZ0VuYWJsZWQgPSAhb3B0aW9ucy50b3VjaE1vY2tpbmdF
bmFibGVkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IG5l
d0Jyb3dzZXJXaW5kb3dCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWln
aHQKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29sb3I6
ICIjZWZlZmVmIgorICAgICAgICAgICAgICAgIHJhZGl1czogNgorCisgICAgICAgICAgICAgICAg
SW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlOiAiLi4vaWNvbnMvcGx1cy5wbmciCisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAgICAgICAg
ICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgb25DbGlja2VkOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3coImFib3V0OmJsYW5rIikKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgY29sb3I6ICJ3aGl0ZSIKKyAg
ICAgICAgICAgIGhlaWdodDogMjYKKyAgICAgICAgICAgIGJvcmRlci53aWR0aDogMQorICAgICAg
ICAgICAgYm9yZGVyLmNvbG9yOiAiI2JmYmZiZiIKKyAgICAgICAgICAgIHJhZGl1czogMworICAg
ICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAgbGVmdDogY29udHJvbHNSb3cucmln
aHQKKyAgICAgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgICAgICAgICAg
bWFyZ2luczogNgorICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGlj
YWxDZW50ZXIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAg
ICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAgICAgIHRvcDogcGFyZW50LnRvcAor
ICAgICAgICAgICAgICAgICAgICBib3R0b206IHBhcmVudC5ib3R0b20KKyAgICAgICAgICAgICAg
ICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgcmFkaXVzOiAzCisgICAgICAgICAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0aCAvIDEwMCAq
IE1hdGgubWF4KDUsIHdlYlZpZXcubG9hZFByb2dyZXNzKQorICAgICAgICAgICAgICAgIGNvbG9y
OiAiYmx1ZSIKKyAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjMKKyAgICAgICAgICAgICAgICB2
aXNpYmxlOiB3ZWJWaWV3LmxvYWRpbmcKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEltYWdl
IHsKKyAgICAgICAgICAgICAgICBpZDogZmF2SWNvbgorICAgICAgICAgICAgICAgIHNvdXJjZTog
d2ViVmlldy5pY29uICE9ICcnID8gd2ViVmlldy5pY29uIDogJy4uL2ljb25zL2Zhdmljb24ucG5n
JworICAgICAgICAgICAgICAgIHdpZHRoOiAxNgorICAgICAgICAgICAgICAgIGhlaWdodDogMTYK
KyAgICAgICAgICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgICAgICAgICAgbGVmdDogcGFy
ZW50LmxlZnQKKyAgICAgICAgICAgICAgICAgICAgbGVmdE1hcmdpbjogNgorICAgICAgICAgICAg
ICAgICAgICB2ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgVGV4dElucHV0IHsKKyAgICAgICAg
ICAgICAgICBpZDogYWRkcmVzc0xpbmUKKyAgICAgICAgICAgICAgICBjbGlwOiB0cnVlCisgICAg
ICAgICAgICAgICAgc2VsZWN0QnlNb3VzZTogdHJ1ZQorICAgICAgICAgICAgICAgIGhvcml6b250
YWxBbGlnbm1lbnQ6IFRleHRJbnB1dC5BbGlnbkxlZnQKKyAgICAgICAgICAgICAgICBmb250IHsK
KyAgICAgICAgICAgICAgICAgICAgcG9pbnRTaXplOiAxMQorICAgICAgICAgICAgICAgICAgICBm
YW1pbHk6ICJTYW5zIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbmNob3Jz
IHsKKyAgICAgICAgICAgICAgICAgICAgdmVydGljYWxDZW50ZXI6IHBhcmVudC52ZXJ0aWNhbENl
bnRlcgorICAgICAgICAgICAgICAgICAgICBsZWZ0OiBmYXZJY29uLnJpZ2h0CisgICAgICAgICAg
ICAgICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2lu
czogNgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEtleXMub25SZXR1cm5Q
cmVzc2VkOnsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIk5hdmlnYXRpbmcgdG86
ICIsIGFkZHJlc3NMaW5lLnRleHQpCisgICAgICAgICAgICAgICAgICAgIGxvYWQodXRpbHMudXJs
RnJvbVVzZXJJbnB1dChhZGRyZXNzTGluZS50ZXh0KSkKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBwcm9wZXJ0eSB1cmwgdXJsCisKKyAgICAgICAgICAgICAgICBvblVybENo
YW5nZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUZvY3VzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIHRleHQgPSB1cmwK
KyAgICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb24gPSAwCisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgb25BY3RpdmVGb2N1c0NoYW5nZWQ6IHVybCA9IHdlYlZpZXcu
dXJsCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJWaWV3IHsKKyAg
ICAgICAgaWQ6IHdlYlZpZXcKKyAgICAgICAgY2xpcDogZmFsc2UKKworICAgICAgICBhbmNob3Jz
IHsKKyAgICAgICAgICAgIHRvcDogZmluZEJhci5ib3R0b20KKyAgICAgICAgICAgIGxlZnQ6IHBh
cmVudC5sZWZ0CisgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgICAgICBi
b3R0b206IHBhcmVudC5ib3R0b20KKyAgICAgICAgfQorCisgICAgICAgIG9uVGl0bGVDaGFuZ2Vk
OiBwYWdlVGl0bGVDaGFuZ2VkKHRpdGxlKQorICAgICAgICBvblVybENoYW5nZWQ6IHsKKyAgICAg
ICAgICAgIGFkZHJlc3NMaW5lLnVybCA9IHdlYlZpZXcudXJsCisKKyAgICAgICAgICAgIGlmIChv
cHRpb25zLnByaW50TG9hZGVkVXJscykKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiV2Vi
VmlldyB1cmwgY2hhbmdlZDoiLCB3ZWJWaWV3LnVybC50b1N0cmluZygpKTsKKyAgICAgICAgfQor
CisgICAgICAgIG9uTG9hZGluZ0NoYW5nZWQ6IHsKKyAgICAgICAgICAgIGlmICghbG9hZGluZyAm
JiBsb2FkUmVxdWVzdC5zdGF0dXMgPT0gV2ViVmlldy5Mb2FkRmFpbGVkU3RhdHVzKQorICAgICAg
ICAgICAgICAgIHdlYlZpZXcubG9hZEh0bWwoIkZhaWxlZCB0byBsb2FkICIgKyBsb2FkUmVxdWVz
dC51cmwsICIiLCBsb2FkUmVxdWVzdC51cmwpCisgICAgICAgIH0KKworICAgICAgICBleHBlcmlt
ZW50YWwucHJlZmVyZW5jZXMuZnVsbFNjcmVlbkVuYWJsZWQ6IHRydWUKKyAgICAgICAgZXhwZXJp
bWVudGFsLnByZWZlcmVuY2VzLndlYkdMRW5hYmxlZDogdHJ1ZQorICAgICAgICBleHBlcmltZW50
YWwucHJlZmVyZW5jZXMud2ViQXVkaW9FbmFibGVkOiB0cnVlCisgICAgICAgIGV4cGVyaW1lbnRh
bC5wcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aDogOTgwCisgICAgICAgIGV4cGVyaW1lbnRh
bC5pdGVtU2VsZWN0b3I6IEl0ZW1TZWxlY3RvciB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLmFs
ZXJ0RGlhbG9nOiBBbGVydERpYWxvZyB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLmNvbmZpcm1E
aWFsb2c6IENvbmZpcm1EaWFsb2cgeyB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5wcm9tcHREaWFs
b2c6IFByb21wdERpYWxvZyB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLmF1dGhlbnRpY2F0aW9u
RGlhbG9nOiBBdXRoZW50aWNhdGlvbkRpYWxvZyB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLnBy
b3h5QXV0aGVudGljYXRpb25EaWFsb2c6IFByb3h5QXV0aGVudGljYXRpb25EaWFsb2cgeyB9Cisg
ICAgICAgIGV4cGVyaW1lbnRhbC5maWxlUGlja2VyOiBGaWxlUGlja2VyIHsgfQorICAgICAgICBl
eHBlcmltZW50YWwucHJlZmVyZW5jZXMuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDogdHJ1ZQorICAg
ICAgICBleHBlcmltZW50YWwuZGF0YWJhc2VRdW90YURpYWxvZzogSXRlbSB7CisgICAgICAgICAg
ICBUaW1lciB7CisgICAgICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAgICAgICAgICBy
dW5uaW5nOiB0cnVlCisgICAgICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIHNpemUgPSBtb2RlbC5leHBlY3RlZFVzYWdlIC8gMTAyNCAvIDEwMjQKKyAg
ICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkNyZWF0aW5nIGRhdGFiYXNlICciICsgbW9k
ZWwuZGlzcGxheU5hbWUgKyAiJyBvZiBzaXplICIgKyBzaXplLnRvRml4ZWQoMikgKyAiIE1CIGZv
ciAiICsgbW9kZWwub3JpZ2luLnNjaGVtZSArICI6Ly8iICsgbW9kZWwub3JpZ2luLmhvc3QgKyAi
OiIgKyBtb2RlbC5vcmlnaW4ucG9ydCkKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0
KG1vZGVsLmV4cGVjdGVkVXNhZ2UpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGV4cGVyaW1lbnRhbC5jb2xvckNob29zZXI6IENvbG9yQ2hvb3Nl
ciB7IH0KKyAgICAgICAgZXhwZXJpbWVudGFsLm9uRW50ZXJGdWxsU2NyZWVuUmVxdWVzdGVkIDog
eworICAgICAgICAgICAgbmF2aWdhdGlvbkJhci52aXNpYmxlID0gZmFsc2U7CisgICAgICAgICAg
ICBXaW5kb3cuc2hvd0Z1bGxTY3JlZW4oKTsKKyAgICAgICAgfQorICAgICAgICBleHBlcmltZW50
YWwub25FeGl0RnVsbFNjcmVlblJlcXVlc3RlZCA6IHsKKyAgICAgICAgICAgIFdpbmRvdy5zaG93
Tm9ybWFsKCk7CisgICAgICAgICAgICBuYXZpZ2F0aW9uQmFyLnZpc2libGUgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgU2Nyb2xsSW5kaWNhdG9yIHsKKyAgICAgICAgZmxpY2thYmxl
SXRlbTogd2ViVmlldworICAgIH0KKworICAgIFZpZXdwb3J0SW5mb0l0ZW0geworICAgICAgICBp
ZDogdmlld3BvcnRJbmZvSXRlbQorICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgIHRvcDog
bmF2aWdhdGlvbkJhci5ib3R0b20KKyAgICAgICAgICAgIGxlZnQ6IHBhcmVudC5sZWZ0CisgICAg
ICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgICAgICBib3R0b206IHBhcmVudC5i
b3R0b20KKyAgICAgICAgfQorICAgICAgICB2aXNpYmxlOiBmYWxzZQorICAgICAgICB0ZXN0IDog
d2ViVmlldy5leHBlcmltZW50YWwudGVzdAorICAgICAgICBwcmVmZXJyZWRNaW5pbXVtQ29udGVu
dHNXaWR0aDogd2ViVmlldy5leHBlcmltZW50YWwucHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lk
dGgKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQ2hlY2tC
b3gucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0NoZWNrQm94LnFtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODViODExCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvcW1sL0NoZWNrQm94LnFtbApAQCAtMCwwICsxLDM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworaW1wb3J0IFF0UXVpY2sgMi4wCisKK0l0ZW0geworICAgIGlkOiBjaGVj
a2JveAorICAgIHdpZHRoOiA1MAorICAgIGhlaWdodDogcGFyZW50LmhlaWdodAorICAgIHByb3Bl
cnR5IGJvb2wgY2hlY2tlZAorCisgICAgSW1hZ2UgeworICAgICAgICB3aWR0aDogMjQKKyAgICAg
ICAgaGVpZ2h0OiAyNAorICAgICAgICBzb3VyY2U6IHBhcmVudC5jaGVja2VkID8gJy4uL2ljb25z
L2NoZWNrYm94X2NoZWNrZWQucG5nJyA6ICcuLi9pY29ucy9jaGVja2JveF91bmNoZWNrZWQucG5n
JworICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGljYWxDZW50ZXIK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQ29sb3JDaG9v
c2VyLnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Db2xvckNob29zZXIucW1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNWE5YTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQ29sb3JDaG9vc2VyLnFtbApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9y
dCBRdFF1aWNrIDIuMAorCitNb3VzZUFyZWEgeworICAgIGFuY2hvcnMuZmlsbDogcGFyZW50Cisg
ICAgb25DbGlja2VkOiBtb2RlbC5yZWplY3QoKQorCisgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAg
aWQ6IGRpYWxvZworICAgICAgICBwcm9wZXJ0eSBpbnQgc3BhY2luZzogMTAKKworICAgICAgICBj
b2xvcjogImdhaW5zYm9ybyIKKyAgICAgICAgb3BhY2l0eTogMC44CisgICAgICAgIHJhZGl1czog
NQorICAgICAgICB3aWR0aDogMjAwCisgICAgICAgIGhlaWdodDogMjAwCisgICAgICAgIHg6ICht
b2RlbC5lbGVtZW50UmVjdC54ICsgd2lkdGggPiBwYXJlbnQud2lkdGgpID8gcGFyZW50LndpZHRo
IC0gd2lkdGggOiBtb2RlbC5lbGVtZW50UmVjdC54CisgICAgICAgIHk6IChtb2RlbC5lbGVtZW50
UmVjdC55ICsgbW9kZWwuZWxlbWVudFJlY3QuaGVpZ2h0ICsgaGVpZ2h0IDwgcGFyZW50LmhlaWdo
dCApID8gbW9kZWwuZWxlbWVudFJlY3QueSArIG1vZGVsLmVsZW1lbnRSZWN0LmhlaWdodAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1vZGVsLmVsZW1lbnRSZWN0LnkgLSBoZWlnaHQ7
CisKKyAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgIGNvbG9yOiAicmVkIgorICAgICAg
ICAgICAgYW5jaG9ycy5sZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICAgICAgYW5jaG9ycy50b3A6
IHBhcmVudC50b3AKKyAgICAgICAgICAgIGFuY2hvcnMubWFyZ2luczogZGlhbG9nLnNwYWNpbmcK
KyAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQud2lkdGggLyAyIC0gZGlhbG9nLnNwYWNpbmcKKyAg
ICAgICAgICAgIGhlaWdodDogcGFyZW50LmhlaWdodCAvIDIgLSBkaWFsb2cuc3BhY2luZworCisg
ICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFy
ZW50CisgICAgICAgICAgICAgICAgb25DbGlja2VkOiBtb2RlbC5hY2NlcHQocGFyZW50LmNvbG9y
KQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAg
ICAgICAgIGNvbG9yOiAiYmx1ZSIKKyAgICAgICAgICAgIGFuY2hvcnMucmlnaHQ6IHBhcmVudC5y
aWdodAorICAgICAgICAgICAgYW5jaG9ycy50b3A6IHBhcmVudC50b3AKKyAgICAgICAgICAgIGFu
Y2hvcnMubWFyZ2luczogZGlhbG9nLnNwYWNpbmcKKyAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQu
d2lkdGggLyAyIC0gZGlhbG9nLnNwYWNpbmcKKyAgICAgICAgICAgIGhlaWdodDogcGFyZW50Lmhl
aWdodCAvIDIgLSBkaWFsb2cuc3BhY2luZworCisgICAgICAgICAgICBNb3VzZUFyZWEgeworICAg
ICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgb25DbGlj
a2VkOiBtb2RlbC5hY2NlcHQocGFyZW50LmNvbG9yKQorICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgIGNvbG9yOiAiZ3JlZW4iCisgICAg
ICAgICAgICBhbmNob3JzLmJvdHRvbTogcGFyZW50LmJvdHRvbQorICAgICAgICAgICAgYW5jaG9y
cy5sZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICAgICAgYW5jaG9ycy5tYXJnaW5zOiBkaWFsb2cu
c3BhY2luZworICAgICAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0aCAvIDIgLSBkaWFsb2cuc3Bh
Y2luZworICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQuaGVpZ2h0IC8gMiAtIGRpYWxvZy5zcGFj
aW5nCisKKyAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAgYW5jaG9ycy5m
aWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IG1vZGVsLmFjY2VwdChwYXJl
bnQuY29sb3IpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBSZWN0YW5nbGUg
eworICAgICAgICAgICAgY29sb3I6IG1vZGVsLmN1cnJlbnRDb2xvcgorICAgICAgICAgICAgYW5j
aG9ycy5ib3R0b206IHBhcmVudC5ib3R0b20KKyAgICAgICAgICAgIGFuY2hvcnMucmlnaHQ6IHBh
cmVudC5yaWdodAorICAgICAgICAgICAgYW5jaG9ycy5tYXJnaW5zOiBkaWFsb2cuc3BhY2luZyAq
IDIKKyAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQud2lkdGggLyAyIC0gZGlhbG9nLnNwYWNpbmcg
KiA0CisgICAgICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQgLyAyIC0gZGlhbG9nLnNwYWNp
bmcgKiA0CisKKyAgICAgICAgICAgIFRleHQgeworICAgICAgICAgICAgICAgIHRleHQ6ICJDdXJy
ZW50IgorICAgICAgICAgICAgICAgIGFuY2hvcnMuYm90dG9tOiBwYXJlbnQudG9wCisgICAgICAg
ICAgICAgICAgYW5jaG9ycy5ob3Jpem9udGFsQ2VudGVyOiBwYXJlbnQuaG9yaXpvbnRhbENlbnRl
cgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL0NvbmZpcm1EaWFsb2cucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvcW1sL0NvbmZpcm1EaWFsb2cucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjk3NGQwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwv
Q29uZmlybURpYWxvZy5xbWwKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitEaWFs
b2cgeworICAgIHRpdGxlOiAiSmF2YVNjcmlwdCBDb25maXJtYXRpb24iCisgICAgbWVzc2FnZTog
bW9kZWwubWVzc2FnZQorCisgICAgUm93IHsKKyAgICAgICAgc3BhY2luZzogNQorCisgICAgICAg
IERpYWxvZ0J1dHRvbiB7CisgICAgICAgICAgICB0ZXh0OiAiT0siCisgICAgICAgICAgICBvbkNs
aWNrZWQ6IG1vZGVsLmFjY2VwdCgpCisgICAgICAgIH0KKworICAgICAgICBEaWFsb2dCdXR0b24g
eworICAgICAgICAgICAgdGV4dDogIkNhbmNlbCIKKyAgICAgICAgICAgIG9uQ2xpY2tlZDogbW9k
ZWwucmVqZWN0KCkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L3FtbC9EaWFsb2cucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0RpYWxv
Zy5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiMTRjZAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9EaWFsb2cucW1sCkBAIC0wLDAg
KzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworaW1wb3J0IFF0UXVpY2sgMi4wCisKK0l0ZW0geworICAgIGlkOiBkaWFsb2cKKworICAg
IGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgejogMTAwMAorCisgICAgLy8gV2Ugd2FudCB0byBi
ZSBhIGNoaWxkIG9mIHRoZSByb290IGl0ZW0gc28gdGhhdCB3ZSBjYW4gY292ZXIKKyAgICAvLyB0
aGUgd2hvbGUgc2NlbmUgd2l0aCBvdXIgImRpbSIgb3ZlcmxheS4KKyAgICBwYXJlbnQ6IHJvb3QK
KworICAgIHByb3BlcnR5IGFsaWFzIHRpdGxlOiB0aXRsZVRleHQudGV4dAorICAgIHByb3BlcnR5
IGFsaWFzIG1lc3NhZ2U6IG1lc3NhZ2VUZXh0LnRleHQKKworICAgIGRlZmF1bHQgcHJvcGVydHkg
YWxpYXMgX19jaGlsZHJlbjogZHluYW1pY0NvbHVtbi5jaGlsZHJlbgorCisgICAgTW91c2VBcmVh
IHsKKyAgICAgICAgaWQ6IG1vdXNlQmxvY2tlcgorICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVu
dAorICAgICAgICBvblByZXNzZWQ6IG1vdXNlLmFjY2VwdGVkID0gdHJ1ZQorCisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGRvZXMgbm90IGJsb2NrIHRvdWNoIGV2ZW50cyA6KAorICAgIH0KKworICAg
IFJlY3RhbmdsZSB7CisgICAgICAgIGlkOiBkaW1CYWNrZ3JvdW5kCisgICAgICAgIGFuY2hvcnMu
ZmlsbDogcGFyZW50CisgICAgICAgIGNvbG9yOiAiYmxhY2siCisgICAgICAgIG9wYWNpdHk6IDAu
NAorICAgIH0KKworICAgIFJlY3RhbmdsZSB7CisgICAgICAgIGlkOiBkaWFsb2dXaW5kb3cKKwor
ICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisKKyAgICAgICAgd2lkdGg6IDMwMAorICAgICAgICBo
ZWlnaHQ6IDE1MAorCisgICAgICAgIGJvcmRlciB7CisgICAgICAgICAgICB3aWR0aDogMQorICAg
ICAgICAgICAgY29sb3I6ICIjYmZiZmJmIgorICAgICAgICB9CisKKyAgICAgICAgc21vb3RoOiB0
cnVlCisgICAgICAgIHJhZGl1czogNQorCisgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVu
dAorCisgICAgICAgIEl0ZW0geworICAgICAgICAgICAgaWQ6IHN0YXRpY0NvbnRlbnQKKyAgICAg
ICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgYW5jaG9ycy5maWxs
OiBwYXJlbnQKKyAgICAgICAgICAgIGFuY2hvcnMubWFyZ2luczogMTAKKworICAgICAgICAgICAg
VGV4dCB7CisgICAgICAgICAgICAgICAgaWQ6IHRpdGxlVGV4dAorICAgICAgICAgICAgICAgIHdp
ZHRoOiBwYXJlbnQud2lkdGgKKyAgICAgICAgICAgICAgICBhbmNob3JzLmhvcml6b250YWxDZW50
ZXI6IHBhcmVudC5ob3Jpem9udGFsQ2VudGVyCisgICAgICAgICAgICAgICAgZm9udC5waXhlbFNp
emU6IDE2CisgICAgICAgICAgICAgICAgZm9udC53ZWlnaHQ6IEZvbnQuQm9sZAorICAgICAgICAg
ICAgICAgIGVsaWRlOiBUZXh0LkVsaWRlUmlnaHQKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgVGV4dCB7CisgICAgICAgICAgICAgICAgaWQ6IG1lc3NhZ2VUZXh0CisgICAgICAgICAgICAg
ICAgd2lkdGg6IHBhcmVudC53aWR0aAorICAgICAgICAgICAgICAgIHdyYXBNb2RlOiBUZXh0Lldv
cmRXcmFwCisgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIENvbHVtbiB7CisgICAgICAgICAgICAgICAgaWQ6IGR5bmFt
aWNDb2x1bW4KKyAgICAgICAgICAgICAgICBzcGFjaW5nOiA1CisgICAgICAgICAgICAgICAgYW5j
aG9ycyB7CisgICAgICAgICAgICAgICAgICAgIG1hcmdpbnM6IDEwCisgICAgICAgICAgICAgICAg
ICAgIGJvdHRvbTogc3RhdGljQ29udGVudC5ib3R0b20KKyAgICAgICAgICAgICAgICAgICAgaG9y
aXpvbnRhbENlbnRlcjogc3RhdGljQ29udGVudC5ob3Jpem9udGFsQ2VudGVyCisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0RpYWxvZ0J1dHRvbi5xbWwgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9xbWwvRGlhbG9nQnV0dG9uLnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYWExZjYxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
cW1sL0RpYWxvZ0J1dHRvbi5xbWwKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitS
ZWN0YW5nbGUgeworICAgIGlkOiBidXR0b24KKworICAgIHByb3BlcnR5IGFsaWFzIHRleHQ6IGJ1
dHRvblRleHQudGV4dAorCisgICAgc2lnbmFsIGNsaWNrZWQKKworICAgIGNvbG9yOiBtb3VzZUFy
ZWEucHJlc3NlZCA/ICIjZWFlYWVhIiA6ICIjZmJmYmZiIgorCisgICAgd2lkdGg6IDYwCisgICAg
aGVpZ2h0OiAyMAorCisgICAgYm9yZGVyIHsKKyAgICAgICAgd2lkdGg6IDEKKyAgICAgICAgY29s
b3I6ICIjYWVhZWFlIgorICAgIH0KKworICAgIHNtb290aDogdHJ1ZQorICAgIHJhZGl1czogNQor
CisgICAgVGV4dCB7CisgICAgICAgIGlkOiBidXR0b25UZXh0CisgICAgICAgIGFuY2hvcnMuY2Vu
dGVySW46IHBhcmVudAorICAgIH0KKworICAgIE1vdXNlQXJlYSB7CisgICAgICAgIGlkOiBtb3Vz
ZUFyZWEKKyAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgb25DbGlja2VkOiBi
dXR0b24uY2xpY2tlZCgpCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvcW1sL0RpYWxvZ0xpbmVJbnB1dC5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvRGlh
bG9nTGluZUlucHV0LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGZh
YTU1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0RpYWxvZ0xp
bmVJbnB1dC5xbWwKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitSZWN0YW5nbGUg
eworICAgIGlkOiBkaWFsb2dMaW5lSW5wdXQKKworICAgIHByb3BlcnR5IGFsaWFzIHRleHQ6IGlu
cHV0LnRleHQKKyAgICBwcm9wZXJ0eSBhbGlhcyBlY2hvTW9kZTogaW5wdXQuZWNob01vZGUKKyAg
ICBzaWduYWwgYWNjZXB0ZWQoKQorCisgICAgaGVpZ2h0OiAyMAorICAgIGNvbG9yOiAiI2ZlZmVm
ZSIKKworICAgIGJvcmRlciB7CisgICAgICAgIHdpZHRoOiAxCisgICAgICAgIGNvbG9yOiAiI2Fl
YWVhZSIKKyAgICB9CisKKyAgICBzbW9vdGg6IHRydWUKKyAgICByYWRpdXM6IDMKKyAgICBjbGlw
OiB0cnVlCisKKyAgICBUZXh0SW5wdXQgeworICAgICAgICBpZDogaW5wdXQKKyAgICAgICAgZm9j
dXM6IHRydWUKKyAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKworICAgICAgICBvbkFjY2Vw
dGVkOiBkaWFsb2dMaW5lSW5wdXQuYWNjZXB0ZWQoKQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3FtbC9GaWxlUGlja2VyLnFtbCBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L3FtbC9GaWxlUGlja2VyLnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yMjJkNGMzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Zp
bGVQaWNrZXIucW1sCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworaW1wb3J0
IFF0UXVpY2sgMi4wCitpbXBvcnQgUXQubGFicy5mb2xkZXJsaXN0bW9kZWwgMS4wCitpbXBvcnQg
Ii4uL2pzL011bHRpU2VsZWN0LmpzIiBhcyBNdWx0aVNlbGVjdAorCitSZWN0YW5nbGUgeworICAg
IGlkOiBmaWxlUGlja2VyCisKKyAgICBwcm9wZXJ0eSBRdE9iamVjdCBmaWxlTW9kZWw6IG1vZGVs
CisgICAgcHJvcGVydHkgYWxpYXMgZm9sZGVyOiBmb2xkZXJzLmZvbGRlcgorCisgICAgY29sb3I6
ICJ3aGl0ZSIKKyAgICB3aWR0aDogNDAwCisgICAgaGVpZ2h0OiA1MDAKKworICAgIHNtb290aDog
dHJ1ZQorICAgIHJhZGl1czogNQorICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorCisgICAg
Ym9yZGVyIHsKKyAgICAgICAgd2lkdGg6IDEKKyAgICAgICAgY29sb3I6ICIjYmZiZmJmIgorICAg
IH0KKworICAgIEJvcmRlckltYWdlIHsKKyAgICAgICAgc291cmNlOiAiLi4vaWNvbnMvdGl0bGVi
YXIucG5nIjsKKyAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0aDsKKyAgICAgICAgaGVpZ2h0OiA1
MAorICAgICAgICB5OiAtNworICAgICAgICBpZDogdGl0bGVCYXIKKworICAgICAgICBhbmNob3Jz
IHsKKyAgICAgICAgICAgIHRvcDogcGFyZW50LnRvcAorICAgICAgICAgICAgYm90dG9tOiBmb2xk
ZXJMaXN0Vmlldy50b3AKKyAgICAgICAgfQorICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAg
ICAgaWQ6IHVwQnV0dG9uCisgICAgICAgICAgICB3aWR0aDogNDgKKyAgICAgICAgICAgIGhlaWdo
dDogdGl0bGVCYXIuaGVpZ2h0IC0gNworICAgICAgICAgICAgY29sb3I6ICJ0cmFuc3BhcmVudCIK
KyAgICAgICAgICAgIEltYWdlIHsgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50OyBzb3VyY2U6ICIu
Li9pY29ucy91cC5wbmciIH0KKyAgICAgICAgICAgIE1vdXNlQXJlYSB7IGlkOiB1cFJlZ2lvbjsg
YW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgd2lkdGg6IDQ4CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiA0OAorICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogaWYgKGZv
bGRlcnMucGFyZW50Rm9sZGVyICE9ICIiKSB1cCgpCisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgY29sb3I6ICJncmF5IgorICAgICAg
ICAgICAgeDogNDgKKyAgICAgICAgICAgIHdpZHRoOiAxCisgICAgICAgICAgICBoZWlnaHQ6IDQ0
CisgICAgICAgIH0KKworICAgICAgICBUZXh0IHsKKyAgICAgICAgICAgIGFuY2hvcnMgeworICAg
ICAgICAgICAgICAgIGxlZnQ6IHVwQnV0dG9uLnJpZ2h0CisgICAgICAgICAgICAgICAgcmlnaHQ6
IHBhcmVudC5yaWdodAorICAgICAgICAgICAgICAgIGxlZnRNYXJnaW46IDQKKyAgICAgICAgICAg
ICAgICByaWdodE1hcmdpbjogNAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBoZWlnaHQ6
IHBhcmVudC5oZWlnaHQKKyAgICAgICAgICAgIHRleHQ6IGZvbGRlcnMuZm9sZGVyCisgICAgICAg
ICAgICBjb2xvcjogIndoaXRlIgorICAgICAgICAgICAgZWxpZGU6IFRleHQuRWxpZGVMZWZ0Owor
ICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogVGV4dC5BbGlnbkxlZnQ7CisgICAgICAg
ICAgICB2ZXJ0aWNhbEFsaWdubWVudDogVGV4dC5BbGlnblZDZW50ZXIKKyAgICAgICAgICAgIGZv
bnQucGl4ZWxTaXplOiAyNAorICAgICAgICB9CisgICAgfQorCisgICAgTGlzdFZpZXcgeworICAg
ICAgICBpZDogZm9sZGVyTGlzdFZpZXcKKworICAgICAgICB3aWR0aDogcGFyZW50LndpZHRoCisg
ICAgICAgIGhlaWdodDogNDAwCisgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAg
ICAgICBzcGFjaW5nOiAyCisgICAgICAgIGNsaXA6IHRydWUKKworICAgICAgICBGb2xkZXJMaXN0
TW9kZWwgeworICAgICAgICAgICAgaWQ6IGZvbGRlcnMKKyAgICAgICAgfQorCisgICAgICAgIENv
bXBvbmVudCB7CisgICAgICAgICAgICBpZDogZmlsZURlbGVnYXRlCisKKyAgICAgICAgICAgIFJl
Y3RhbmdsZSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0ZWQoKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChmb2xkZXJzLmlzRm9sZGVyKGluZGV4KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZW5Gb2xkZXIoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVNb2RlbC5hbGxvd011bHRpcGxl
RmlsZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2JveC5jaGVja2VkID0g
IWNoZWNrYm94LmNoZWNrZWQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVj
a2JveC5jaGVja2VkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aVNlbGVj
dC5hZGRWYWx1ZShmaWxlUGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpU2VsZWN0LnJlbW92ZVZhbHVlKGZp
bGVQYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVNb2RlbC5hY2NlcHQoZmls
ZVBhdGgpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDUwCisgICAgICAgICAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0
aAorICAgICAgICAgICAgICAgIGNvbG9yOiBmb2xkZXJzLmlzRm9sZGVyKGluZGV4KSA/ICJsaWdo
dGdyYXkiOiAiZGFya2dyYXkiCisKKyAgICAgICAgICAgICAgICBJdGVtIHsKKyAgICAgICAgICAg
ICAgICAgICAgd2lkdGg6IDUwCisgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNDgKKyAgICAg
ICAgICAgICAgICAgICAgSW1hZ2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAi
Li4vaWNvbnMvZm9sZGVyLnBuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2Vu
dGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZm9sZGVycy5p
c0ZvbGRlcihpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIFRleHQgeworICAgICAgICAgICAgICAgICAgICBpZDogZmlsZU5h
bWVUZXh0CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAg
ICAgICAgICAgICAgICAgICBhbmNob3JzLmxlZnRNYXJnaW46IDIwCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDAKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogZmlsZU5hbWUKKyAgICAg
ICAgICAgICAgICAgICAgZWxpZGU6IFRleHQuRWxpZGVMZWZ0OworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIENoZWNrQm94IHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6IGNo
ZWNrYm94CisKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5yaWdodDogcGFyZW50LnJpZ2h0
CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMudmVydGljYWxDZW50ZXI6IHBhcmVudC52ZXJ0
aWNhbENlbnRlcgorCisgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IE11bHRpU2VsZWN0Lmlz
U2VsZWN0ZWQoZmlsZVBhdGgpCisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGZpbGVNb2Rl
bC5hbGxvd011bHRpcGxlRmlsZXMgJiYgIWZvbGRlcnMuaXNGb2xkZXIoaW5kZXgpCisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAgICAg
ICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgb25DbGlja2Vk
OiBzZWxlY3RlZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBtb2RlbDogZm9sZGVycworICAgICAgICBkZWxlZ2F0ZTogZmlsZURlbGVnYXRl
CisgICAgfQorCisgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6IGJ1dHRvbgorCisgICAgICAg
IGhlaWdodDogNTAKKworICAgICAgICBib3JkZXIgeworICAgICAgICAgICAgd2lkdGg6IDEKKyAg
ICAgICAgICAgIGNvbG9yOiAiI2JmYmZiZiIKKyAgICAgICAgfQorCisgICAgICAgIGFuY2hvcnMg
eworICAgICAgICAgICAgYm90dG9tOiBwYXJlbnQuYm90dG9tCisgICAgICAgICAgICB0b3A6IGZv
bGRlckxpc3RWaWV3LmJvdHRvbQorICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAg
ICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgfQorCisgICAgICAgIFJvdyB7Cisg
ICAgICAgICAgICBpZDogYnV0dG9uUm93CisgICAgICAgICAgICBzcGFjaW5nOiAxMAorICAgICAg
ICAgICAgYW5jaG9ycy5ob3Jpem9udGFsQ2VudGVyOiBwYXJlbnQuaG9yaXpvbnRhbENlbnRlcgor
ICAgICAgICAgICAgYW5jaG9ycy52ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZlcnRpY2FsQ2VudGVy
CisKKyAgICAgICAgICAgIERpYWxvZ0J1dHRvbiB7CisgICAgICAgICAgICAgICAgaWQ6IGNhbmNl
bAorICAgICAgICAgICAgICAgIHRleHQ6ICJDYW5jZWwiCisgICAgICAgICAgICAgICAgb25DbGlj
a2VkOiBmaWxlTW9kZWwucmVqZWN0KCkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRGlh
bG9nQnV0dG9uIHsKKyAgICAgICAgICAgICAgICBpZDogYWNjZXB0CisgICAgICAgICAgICAgICAg
dGV4dDogIk9rIgorICAgICAgICAgICAgICAgIHZpc2libGU6IGZpbGVNb2RlbC5hbGxvd011bHRp
cGxlRmlsZXMKKyAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6CisgICAgICAgICAgICAgICAgICAg
IGZpbGVNb2RlbC5hY2NlcHQoTXVsdGlTZWxlY3Quc2VsZWN0ZWRWYWx1ZXMoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBvcGVuRm9sZGVyKHBhdGgp
IHsKKyAgICAgICAgZm9sZGVycy5mb2xkZXIgPSBwYXRoOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHVwKCkgeworICAgICAgICBmb2xkZXJzLmZvbGRlciA9IGZvbGRlcnMucGFyZW50Rm9sZGVyOwor
ICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9JdGVtU2VsZWN0
b3IucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4OGQyMgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9JdGVtU2VsZWN0b3IucW1sCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitp
bXBvcnQgUXRRdWljayAyLjAKKworTW91c2VBcmVhIHsKKyAgICAvLyBUbyBhdm9pZCBjb25mbGlj
dGluZyB3aXRoIExpc3RWaWV3Lm1vZGVsIHdoZW4gaW5zaWRlIExpc3RWaWV3IGNvbnRleHQuCisg
ICAgcHJvcGVydHkgUXRPYmplY3Qgc2VsZWN0b3JNb2RlbDogbW9kZWwKKyAgICBhbmNob3JzLmZp
bGw6IHBhcmVudAorICAgIG9uQ2xpY2tlZDogc2VsZWN0b3JNb2RlbC5yZWplY3QoKQorCisgICAg
UmVjdGFuZ2xlIHsKKyAgICAgICAgY2xpcDogdHJ1ZQorICAgICAgICB3aWR0aDogMjAwCisgICAg
ICAgIGhlaWdodDogTWF0aC5taW4obGlzdFZpZXcuY29udGVudEl0ZW0uaGVpZ2h0ICsgbGlzdFZp
ZXcuYW5jaG9ycy50b3BNYXJnaW4gKyBsaXN0Vmlldy5hbmNob3JzLmJvdHRvbU1hcmdpbgorICAg
ICAgICAgICAgICAgICAgICAgICAgICwgTWF0aC5tYXgoc2VsZWN0b3JNb2RlbC5lbGVtZW50UmVj
dC55LCBwYXJlbnQuaGVpZ2h0IC0gc2VsZWN0b3JNb2RlbC5lbGVtZW50UmVjdC55IC0gc2VsZWN0
b3JNb2RlbC5lbGVtZW50UmVjdC5oZWlnaHQpKQorICAgICAgICB4OiAoc2VsZWN0b3JNb2RlbC5l
bGVtZW50UmVjdC54ICsgMjAwID4gcGFyZW50LndpZHRoKSA/IHBhcmVudC53aWR0aCAtIDIwMCA6
IHNlbGVjdG9yTW9kZWwuZWxlbWVudFJlY3QueAorICAgICAgICB5OiAoc2VsZWN0b3JNb2RlbC5l
bGVtZW50UmVjdC55ICsgc2VsZWN0b3JNb2RlbC5lbGVtZW50UmVjdC5oZWlnaHQgKyBoZWlnaHQg
PCBwYXJlbnQuaGVpZ2h0ICkgPyBzZWxlY3Rvck1vZGVsLmVsZW1lbnRSZWN0LnkgKyBzZWxlY3Rv
ck1vZGVsLmVsZW1lbnRSZWN0LmhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxlY3Rvck1vZGVsLmVsZW1lbnRSZWN0Lnkg
LSBoZWlnaHQ7CisgICAgICAgIHJhZGl1czogNQorICAgICAgICBjb2xvcjogImdhaW5zYm9ybyIK
KyAgICAgICAgb3BhY2l0eTogMC44CisKKyAgICAgICAgTGlzdFZpZXcgeworICAgICAgICAgICAg
aWQ6IGxpc3RWaWV3CisgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAg
ICAgYW5jaG9ycy5tYXJnaW5zOiAxMAorICAgICAgICAgICAgc3BhY2luZzogNQorICAgICAgICAg
ICAgbW9kZWw6IHNlbGVjdG9yTW9kZWwuaXRlbXMKKworICAgICAgICAgICAgZGVsZWdhdGU6IFJl
Y3RhbmdsZSB7CisgICAgICAgICAgICAgICAgY29sb3I6IG1vZGVsLnNlbGVjdGVkID8gImdvbGQi
IDogInNpbHZlciIKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwCisgICAgICAgICAgICAgICAg
d2lkdGg6IHBhcmVudC53aWR0aAorCisgICAgICAgICAgICAgICAgVGV4dCB7CisgICAgICAgICAg
ICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICB0
ZXh0OiBtb2RlbC50ZXh0CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBtb2RlbC5lbmFibGVk
ID8gImJsYWNrIiA6ICJnYWluc2Jvcm8iCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJl
bnQKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogbW9kZWwuZW5hYmxlZAorICAgICAgICAg
ICAgICAgICAgICBvbkNsaWNrZWQ6IHNlbGVjdG9yTW9kZWwuYWNjZXB0KG1vZGVsLmluZGV4KQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VjdGlvbi5w
cm9wZXJ0eTogImdyb3VwIgorICAgICAgICAgICAgc2VjdGlvbi5kZWxlZ2F0ZTogUmVjdGFuZ2xl
IHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwCisgICAgICAgICAgICAgICAgd2lkdGg6IHBh
cmVudC53aWR0aAorICAgICAgICAgICAgICAgIGNvbG9yOiAic2lsdmVyIgorICAgICAgICAgICAg
ICAgIFRleHQgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQK
KyAgICAgICAgICAgICAgICAgICAgdGV4dDogc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICBm
b250LmJvbGQ6IHRydWUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvTW9ja1Rv
dWNoUG9pbnQucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL01vY2tUb3VjaFBvaW50LnFt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2M1YzJjCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL01vY2tUb3VjaFBvaW50LnFtbApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworaW1wb3J0IFF0UXVpY2sgMi4wCisKK0l0ZW0geworICAgIGlkOiBtb2NrVG91Y2hQ
b2ludAorCisgICAgcHJvcGVydHkgYm9vbCBwcmVzc2VkOiBmYWxzZQorICAgIHByb3BlcnR5IGlu
dCBwb2ludElkOiAwCisKKyAgICBJbWFnZSB7CisgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL3Rv
dWNocG9pbnQucG5nIgorICAgICAgICB4OiAtKHdpZHRoIC8gMikKKyAgICAgICAgeTogLShoZWln
aHQgLyAyKQorICAgICAgICBoZWlnaHQ6IHBhcmVudC5oZWlnaHQKKyAgICAgICAgd2lkdGg6IHBh
cmVudC53aWR0aAorICAgICAgICBvcGFjaXR5OiBwYXJlbnQucHJlc3NlZCA/IDAuNiA6IDAuMAor
CisgICAgICAgIEJlaGF2aW9yIG9uIG9wYWNpdHkgeworICAgICAgICAgICAgTnVtYmVyQW5pbWF0
aW9uIHsgZHVyYXRpb246IDIwMCB9CisgICAgICAgIH0KKworICAgICAgICBUZXh0IHsKKyAgICAg
ICAgICAgIHRleHQ6IG1vY2tUb3VjaFBvaW50LnBvaW50SWQKKyAgICAgICAgICAgIGFuY2hvcnMu
Y2VudGVySW46IHBhcmVudAorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL1Byb21wdERpYWxvZy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9xbWwvUHJvbXB0RGlhbG9nLnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hY2M1OTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1By
b21wdERpYWxvZy5xbWwKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitEaWFsb2cg
eworICAgIGlkOiBkaWFsb2cKKworICAgIHRpdGxlOiAiSmF2YVNjcmlwdCBQcm9tcHQiCisgICAg
bWVzc2FnZTogbW9kZWwubWVzc2FnZQorCisgICAgaGVpZ2h0OiAxODAKKworICAgIERpYWxvZ0xp
bmVJbnB1dCB7CisgICAgICAgIGlkOiBpbnB1dAorICAgICAgICB3aWR0aDogZGlhbG9nLndpZHRo
IC0gMzAKKyAgICAgICAgdGV4dDogbW9kZWwuZGVmYXVsdFZhbHVlCisKKyAgICAgICAgb25BY2Nl
cHRlZDogbW9kZWwuYWNjZXB0KGlucHV0LnRleHQpCisgICAgfQorCisgICAgUm93IHsKKyAgICAg
ICAgaWQ6IGJ1dHRvblJvdworICAgICAgICBzcGFjaW5nOiA1CisgICAgICAgIGFuY2hvcnMuaG9y
aXpvbnRhbENlbnRlcjogcGFyZW50Lmhvcml6b250YWxDZW50ZXIKKworICAgICAgICBEaWFsb2dC
dXR0b24geworICAgICAgICAgICAgdGV4dDogIk9LIgorICAgICAgICAgICAgb25DbGlja2VkOiBt
b2RlbC5hY2NlcHQoaW5wdXQudGV4dCkKKyAgICAgICAgfQorCisgICAgICAgIERpYWxvZ0J1dHRv
biB7CisgICAgICAgICAgICB0ZXh0OiAiQ2FuY2VsIgorICAgICAgICAgICAgb25DbGlja2VkOiBt
b2RlbC5yZWplY3QoKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvcW1sL1Byb3h5QXV0aGVudGljYXRpb25EaWFsb2cucW1sIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvcW1sL1Byb3h5QXV0aGVudGljYXRpb25EaWFsb2cucW1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMjdmMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvUHJveHlBdXRoZW50aWNhdGlvbkRpYWxvZy5xbWwKQEAgLTAs
MCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitBdXRoZW50aWNhdGlvbkRpYWxvZyB7CisgICAg
aWQ6IGRpYWxvZworCisgICAgdGl0bGU6ICJQcm94eSBhdXRoZW50aWNhdGlvbiByZXF1aXJlZC4i
CisgICAgbWVzc2FnZTogbW9kZWwuaG9zdG5hbWUgKyAiOiIgKyBtb2RlbC5wb3J0ICsgIiByZXF1
aXJlcyBhdXRoZW50aWNhdGlvbi4iCit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9xbWwvU2Nyb2xsSW5kaWNhdG9yLnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9TY3Jv
bGxJbmRpY2F0b3IucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMTAw
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvU2Nyb2xsSW5k
aWNhdG9yLnFtbApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ltcG9ydCBRdFF1aWNrIDIuMAorCitJdGVtIHsKKyAg
ICBpZDogcm9vdAorCisgICAgcHJvcGVydHkgRmxpY2thYmxlIGZsaWNrYWJsZUl0ZW0KKworICAg
IGFuY2hvcnMgeworICAgICAgICBmaWxsOiBmbGlja2FibGVJdGVtCisgICAgICAgIG1hcmdpbnM6
IDUKKyAgICB9CisKKyAgICBwcm9wZXJ0eSBib29sIF9fbW92aW5nSG9yaXpvbnRhbGx5OiBmbGlj
a2FibGVJdGVtID8gZmxpY2thYmxlSXRlbS5tb3ZpbmdIb3Jpem9udGFsbHkgOiBmYWxzZQorICAg
IHByb3BlcnR5IGJvb2wgX19tb3ZpbmdWZXJ0aWNhbGx5OiBmbGlja2FibGVJdGVtID8gZmxpY2th
YmxlSXRlbS5tb3ZpbmdWZXJ0aWNhbGx5IDogZmFsc2UKKworICAgIHByb3BlcnR5IHJlYWwgX192
aWV3V2lkdGg6ICBmbGlja2FibGVJdGVtID8gZmxpY2thYmxlSXRlbS53aWR0aCAtIChhbmNob3Jz
Lm1hcmdpbnMgKiAyKSA6IDAKKyAgICBwcm9wZXJ0eSByZWFsIF9fdmlld0hlaWdodDogIGZsaWNr
YWJsZUl0ZW0gPyBmbGlja2FibGVJdGVtLmhlaWdodCAtIChhbmNob3JzLm1hcmdpbnMgKiAyKSA6
IDAKKworICAgIHByb3BlcnR5IGludCBfX2hpZGVUaW1lb3V0OiA4MDAKKyAgICBwcm9wZXJ0eSBy
ZWFsIF9faW5kaWNhdG9yU2l6ZTogNQorICAgIHByb3BlcnR5IHJlYWwgX19pbmRpY2F0b3JCb3Jk
ZXI6IDEKKworICAgIEl0ZW0geworICAgICAgICBpZDogaG9yaXpvbnRhbEluZGljYXRvcgorICAg
ICAgICBvcGFjaXR5OiAwCisKKyAgICAgICAgd2lkdGg6IF9fdmlld1dpZHRoIC0gX19pbmRpY2F0
b3JTaXplCisgICAgICAgIGhlaWdodDogX19pbmRpY2F0b3JTaXplCisKKyAgICAgICAgYW5jaG9y
cy5ib3R0b206IHJvb3QuYm90dG9tCisKKyAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAg
IHJhZGl1czogMTAKKyAgICAgICAgICAgIGNvbG9yOiAiYmxhY2siCisgICAgICAgICAgICBib3Jk
ZXIuY29sb3I6ICJncmF5IgorICAgICAgICAgICAgYm9yZGVyLndpZHRoOiAxCisgICAgICAgICAg
ICBvcGFjaXR5OiAwLjUKKyAgICAgICAgICAgIHNtb290aDogdHJ1ZQorCisgICAgICAgICAgICB3
aWR0aDogZmxpY2thYmxlSXRlbSA/IGZsaWNrYWJsZUl0ZW0udmlzaWJsZUFyZWEud2lkdGhSYXRp
byAqIGhvcml6b250YWxJbmRpY2F0b3Iud2lkdGg6IDA7CisgICAgICAgICAgICBoZWlnaHQ6IF9f
aW5kaWNhdG9yU2l6ZQorCisgICAgICAgICAgICB4OiBmbGlja2FibGVJdGVtID8gTWF0aC5taW4o
cGFyZW50LndpZHRoIC0gd2lkdGgsIE1hdGgubWF4KDAsIGZsaWNrYWJsZUl0ZW0udmlzaWJsZUFy
ZWEueFBvc2l0aW9uICogaG9yaXpvbnRhbEluZGljYXRvci53aWR0aCkpIDogMDsKKyAgICAgICAg
ICAgIHk6IDAKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRlczogWworICAgICAgICAgICAgU3Rh
dGUgeworICAgICAgICAgICAgICAgIG5hbWU6ICJzaG93IgorICAgICAgICAgICAgICAgIHdoZW46
IF9fbW92aW5nSG9yaXpvbnRhbGx5CisgICAgICAgICAgICAgICAgUHJvcGVydHlDaGFuZ2VzIHsK
KyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBob3Jpem9udGFsSW5kaWNhdG9yCisgICAgICAg
ICAgICAgICAgICAgIG9wYWNpdHk6IDEKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIF0KKworICAgICAgICB0cmFuc2l0aW9uczogWworICAgICAgICAgICAgVHJhbnNp
dGlvbiB7CisgICAgICAgICAgICAgICAgTnVtYmVyQW5pbWF0aW9uIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0OiBob3Jpem9udGFsSW5kaWNhdG9yCisgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnRpZXM6ICJvcGFjaXR5IgorICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogX19oaWRl
VGltZW91dAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXQorICAg
IH0KKworICAgIEl0ZW0geworICAgICAgICBpZDogdmVydGljYWxJbmRpY2F0b3IKKyAgICAgICAg
b3BhY2l0eTogMAorCisgICAgICAgIHdpZHRoOiBfX2luZGljYXRvclNpemUKKyAgICAgICAgaGVp
Z2h0OiBfX3ZpZXdIZWlnaHQgLSBfX2luZGljYXRvclNpemUKKworICAgICAgICBhbmNob3JzLnJp
Z2h0OiByb290LnJpZ2h0CisKKyAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgIHJhZGl1
czogMTAKKyAgICAgICAgICAgIGNvbG9yOiAiYmxhY2siCisgICAgICAgICAgICBib3JkZXIuY29s
b3I6ICJncmF5IgorICAgICAgICAgICAgYm9yZGVyLndpZHRoOiAxCisgICAgICAgICAgICBvcGFj
aXR5OiAwLjUKKyAgICAgICAgICAgIHNtb290aDogdHJ1ZTsKKworICAgICAgICAgICAgd2lkdGg6
IF9faW5kaWNhdG9yU2l6ZQorICAgICAgICAgICAgaGVpZ2h0OiBmbGlja2FibGVJdGVtID8gZmxp
Y2thYmxlSXRlbS52aXNpYmxlQXJlYS5oZWlnaHRSYXRpbyAqIHZlcnRpY2FsSW5kaWNhdG9yLmhl
aWdodCA6IDA7CisKKyAgICAgICAgICAgIHg6IDAKKyAgICAgICAgICAgIHk6IGZsaWNrYWJsZUl0
ZW0gPyBNYXRoLm1pbihwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0LCBNYXRoLm1heCgwLCBmbGlja2Fi
bGVJdGVtLnZpc2libGVBcmVhLnlQb3NpdGlvbiAqIHZlcnRpY2FsSW5kaWNhdG9yLmhlaWdodCkp
IDogMAorICAgICAgICB9CisKKyAgICAgICAgc3RhdGVzOiBbCisgICAgICAgICAgICBTdGF0ZSB7
CisgICAgICAgICAgICAgICAgbmFtZTogInNob3ciCisgICAgICAgICAgICAgICAgd2hlbjogX19t
b3ZpbmdWZXJ0aWNhbGx5CisgICAgICAgICAgICAgICAgUHJvcGVydHlDaGFuZ2VzIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0OiB2ZXJ0aWNhbEluZGljYXRvcgorICAgICAgICAgICAgICAg
ICAgICBvcGFjaXR5OiAxCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICBdCisKKyAgICAgICAgdHJhbnNpdGlvbnM6IFsKKyAgICAgICAgICAgIFRyYW5zaXRpb24gewor
ICAgICAgICAgICAgICAgIE51bWJlckFuaW1hdGlvbiB7CisgICAgICAgICAgICAgICAgICAgIHRh
cmdldDogdmVydGljYWxJbmRpY2F0b3IKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczog
Im9wYWNpdHkiCisgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBfX2hpZGVUaW1lb3V0Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBdCisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1ZpZXdwb3J0SW5mb0l0ZW0ucW1sIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1ZpZXdwb3J0SW5mb0l0ZW0ucW1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NGNjNzA5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvcW1sL1ZpZXdwb3J0SW5mb0l0ZW0ucW1sCkBAIC0wLDAgKzEsMTMx
IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworSXRlbSB7Cisg
ICAgcHJvcGVydHkgdmFyIHRlc3QKKyAgICBwcm9wZXJ0eSB2YXIgcHJlZmVycmVkTWluaW11bUNv
bnRlbnRzV2lkdGgKKworICAgIGZ1bmN0aW9uIGZvcm1hdFNjYWxlKHZhbHVlKSB7CisgICAgICAg
IHJldHVybiAiPGI+IiArIHBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCg0KSkgKyAiPC9iPngiOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGZvcm1hdFNpemUodmFsdWUpIHsKKyAgICAgICAgcmV0dXJu
ICI8Yj4iICsgdmFsdWUud2lkdGgudG9GaXhlZCgpICsgIngiICsgdmFsdWUuaGVpZ2h0LnRvRml4
ZWQoKSArICI8L2I+cHgiCisgICAgfQorCisgICAgZnVuY3Rpb24gZm9ybWF0Qm9vbCh2YWx1ZSkg
eworICAgICAgICByZXR1cm4gIjxiPiIgKyAodmFsdWUgPyAieWVzIiA6ICJubyIpICsgIjwvYj4i
CisgICAgfQorCisgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6IHRpdGxlOworCisgICAgICAg
IGFuY2hvcnMgeworICAgICAgICAgICAgdG9wOiBwYXJlbnQudG9wCisgICAgICAgICAgICBsZWZ0
OiBwYXJlbnQubGVmdAorICAgICAgICAgICAgbWFyZ2luczogMTAKKyAgICAgICAgfQorCisgICAg
ICAgIGhlaWdodDogNTAKKyAgICAgICAgd2lkdGg6IDI1MAorCisgICAgICAgIGNvbG9yOiAiYmx1
ZSIKKworICAgICAgICBUZXh0IHsKKyAgICAgICAgICAgIGlkOiB2aWV3cG9ydEluZm9MYWJlbAor
CisgICAgICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbENlbnRlcjog
cGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQK
KyAgICAgICAgICAgICAgICBsZWZ0TWFyZ2luOiAxMAorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB0ZXh0OiAiVmlld3BvcnQgSW5mbyIKKyAgICAgICAgICAgIGNvbG9yOiAid2hpdGUiCisg
ICAgICAgICAgICBmb250LmZhbWlseTogIk5va2lhIFB1cmUiCisgICAgICAgICAgICBmb250LnBv
aW50U2l6ZTogMjQKKyAgICAgICAgfQorICAgIH0KKworICAgIFJlY3RhbmdsZSB7CisgICAgICAg
IGNvbG9yOiAiZ3JheSIKKyAgICAgICAgb3BhY2l0eTogMC45CisKKyAgICAgICAgYW5jaG9ycyB7
CisgICAgICAgICAgICB0b3A6IHRpdGxlLmJvdHRvbQorICAgICAgICAgICAgbGVmdDogdGl0bGUu
bGVmdAorICAgICAgICAgICAgdG9wTWFyZ2luOiAxMAorICAgICAgICB9CisKKyAgICAgICAgd2lk
dGg6IDM0MAorICAgICAgICBoZWlnaHQ6IDI3MAorCisgICAgICAgIEl0ZW0geworICAgICAgICAg
ICAgaWQ6IHRleHRCb3gKKworICAgICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAg
ZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgbWFyZ2luczogMTAKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcHJvcGVydHkgc3RyaW5nIGZvbnRGYW1pbHk6ICJOb2tpYSBQdXJlIgor
ICAgICAgICAgICAgcHJvcGVydHkgY29sb3IgZm9udENvbG9yOiAiYmxhY2siCisKKyAgICAgICAg
ICAgIENvbHVtbiB7CisgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAg
ICAgICAgICAgICBzcGFjaW5nOiAyMAorICAgICAgICAgICAgICAgIENvbHVtbiB7CisgICAgICAg
ICAgICAgICAgICAgIFRleHQgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogIkN1cnJl
bnQgc2NhbGU6ICIgKyBmb3JtYXRTY2FsZSh0ZXN0LmNvbnRlbnRzU2NhbGUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBmb250LmZhbWlseTogdGV4dEJveC5mb250RmFtaWx5CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xvcjogdGV4dEJveC5mb250Q29sb3IKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIENvbHVtbiB7CisgICAg
ICAgICAgICAgICAgICAgIFRleHQgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogIk1p
bmltdW0gc2NhbGU6ICIgKyBmb3JtYXRTY2FsZSh0ZXN0LnZpZXdwb3J0Lm1pbmltdW1TY2FsZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQuZmFtaWx5OiB0ZXh0Qm94LmZvbnRGYW1pbHkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0ZXh0Qm94LmZvbnRDb2xvcgorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFRleHQgeworICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dDogIk1heGltdW0gc2NhbGU6ICIgKyBmb3JtYXRTY2FsZSh0ZXN0LnZp
ZXdwb3J0Lm1heGltdW1TY2FsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQuZmFtaWx5
OiB0ZXh0Qm94LmZvbnRGYW1pbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0ZXh0
Qm94LmZvbnRDb2xvcgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgQ29sdW1uIHsKKyAgICAgICAgICAgICAgICAgICAgVGV4dCB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAiRGV2aWNlIHBpeGVsIHJhdGlvOiAiICsgZm9y
bWF0U2NhbGUodGVzdC5kZXZpY2VQaXhlbFJhdGlvKQorICAgICAgICAgICAgICAgICAgICAgICAg
Zm9udC5mYW1pbHk6IHRleHRCb3guZm9udEZhbWlseQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29sb3I6IHRleHRCb3guZm9udENvbG9yCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgVGV4dCB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAiQ29udGVu
dHMgc2l6ZTogIiArIGZvcm1hdFNpemUodGVzdC5jb250ZW50c1NpemUpCisgICAgICAgICAgICAg
ICAgICAgICAgICBmb250LmZhbWlseTogdGV4dEJveC5mb250RmFtaWx5CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb2xvcjogdGV4dEJveC5mb250Q29sb3IKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBUZXh0IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHQ6ICJWaWV3cG9ydCBsYXlvdXQgc2l6ZTogIiArIGZvcm1hdFNpemUodGVzdC52aWV3cG9ydC5s
YXlvdXRTaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9udC5mYW1pbHk6IHRleHRCb3gu
Zm9udEZhbWlseQorICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRleHRCb3guZm9udENv
bG9yCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBDb2x1bW4geworICAgICAgICAgICAgICAgICAgICBUZXh0IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHQ6ICJBZGFwdCBmb3Igc21hbGwgc2NyZWVuczogIiArIGZvcm1hdEJv
b2wocHJlZmVycmVkTWluaW11bUNvbnRlbnRzV2lkdGgpCisgICAgICAgICAgICAgICAgICAgICAg
ICBmb250LmZhbWlseTogdGV4dEJveC5mb250RmFtaWx5CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb2xvcjogdGV4dEJveC5mb250Q29sb3IKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBUZXh0IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICJBbGxv
d3Mgc2NhbGluZzogIiArIGZvcm1hdEJvb2wodGVzdC52aWV3cG9ydC5pc1NjYWxhYmxlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZm9udC5mYW1pbHk6IHRleHRCb3guZm9udEZhbWlseQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRleHRCb3guZm9udENvbG9yCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvRGVyaXZlZFNv
dXJjZXMucHJpIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L0Rlcml2ZWRTb3VyY2VzLnByaQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzRkMmY0Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMCww
ICsxLDYgQEAKK1RFTVBMQVRFID0gZGVyaXZlZAorCisjIE1ha2Ugc3VyZSBmb3J3YXJkZWQgaGVh
ZGVycyBuZWVkZWQgYnkgdGhpcyBwcm9qZWN0IGFyZSBwcmVzZW50Citmd2hlYWRlcl9nZW5lcmF0
b3IuY29tbWFuZHMgPSBwZXJsICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdDIvU2Ny
aXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJCR7Uk9PVF9XRUJLSVRfRElSfS9U
b29scy9XZWJLaXRUZXN0UnVubmVyICQke1JPT1RfQlVJTERfRElSfS9Tb3VyY2UvaW5jbHVkZSBx
dAorZndoZWFkZXJfZ2VuZXJhdG9yLmRlcGVuZHMgID0gJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbAorR0VORVJB
VE9SUyArPSBmd2hlYWRlcl9nZW5lcmF0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L3Jhdy9NaW5pQnJvd3NlclJhdy5wcm8gYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvTWlu
aUJyb3dzZXJSYXcucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDMx
MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvTWluaUJyb3dz
ZXJSYXcucHJvCkBAIC0wLDAgKzEsOSBAQAorVEVNUExBVEUgPSBzdWJkaXJzCitDT05GSUcgKz0g
b3JkZXJlZAorCitkZXJpdmVkX3NvdXJjZXMuZmlsZSA9IERlcml2ZWRTb3VyY2VzLnByaQordGFy
Z2V0LmZpbGUgPSBUYXJnZXQucHJpCisKK1NVQkRJUlMgPSBkZXJpdmVkX3NvdXJjZXMgdGFyZ2V0
CisKK2FkZFN0cmljdFN1YmRpck9yZGVyQmV0d2VlbihkZXJpdmVkX3NvdXJjZXMsIHRhcmdldCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9UYXJnZXQucHJpIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcmF3L1RhcmdldC5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYWZjMzhjZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0
L3Jhdy9UYXJnZXQucHJpCkBAIC0wLDAgKzEsMTQgQEAKK1RFTVBMQVRFID0gYXBwCitUQVJHRVQg
PSBNaW5pQnJvd3NlclJhdworCitIRUFERVJTICs9IFwKKyAgICBWaWV3LmgKKworU09VUkNFUyAr
PSBcCisgICAgVmlldy5jcHAKKworREVTVERJUiA9ICQke1JPT1RfQlVJTERfRElSfS9iaW4KKwor
UVQgPSBjb3JlIGd1aSBuZXR3b3JrIHdlYmtpdHdpZGdldHMKKworV0VCS0lUICs9IHd0ZiBqYXZh
c2NyaXB0Y29yZSB3ZWJraXQyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcv
Vmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM0ZDUyOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKworI2luY2x1ZGUgIlZpZXcuaCIKKworI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNs
dWRlIDxRRXhwb3NlRXZlbnQ+CisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUg
PFFLZXlFdmVudD4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorI2luY2x1ZGUgPFFSZXNpemVFdmVu
dD4KKyNpbmNsdWRlIDxRVXJsPgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZl
cmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdRdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4K
KworCitzdGF0aWMgV0tDb250ZXh0UmVmIGNyZWF0ZVdlYkNvbnRleHQoKQoreworICAgIHJldHVy
biBXS0NvbnRleHRDcmVhdGUoKTsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIGNyZWF0ZVdl
YlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdp
dGhRU3RyaW5nKG5hbWUpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQ
YWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOworICAgIFdLUHJlZmVyZW5jZXNTZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQ
cmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwor
CisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworVmlldzo6flZpZXcoKQoreworICAgIGRlbGV0
ZSBtX2NvbnRleHQ7CisgICAgZGVsZXRlIG1fd2ViVmlldzsKK30KKworVmlldzo6Vmlldyhjb25z
dCBRU3RyaW5nJiB1cmwpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2FjdGl2ZShmYWxzZSkK
K3sKKyAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAgICBzZXRHZW9tZXRyeSg1
MCwgNTAsIDk4MCwgNjAwKTsKKyAgICBzZXRGbGFncyhRdDo6V2luZG93IHwgUXQ6OldpbmRvd1Rp
dGxlSGludCk7CisgICAgY3JlYXRlKCk7CisKKyAgICBtX2NvbnRleHQgPSBuZXcgUU9wZW5HTENv
bnRleHQ7CisgICAgbV9jb250ZXh0LT5jcmVhdGUoKTsKKworICAgIG1fd2ViVmlldyA9IG5ldyBR
UmF3V2ViVmlldyhjcmVhdGVXZWJDb250ZXh0KCksIGNyZWF0ZVdlYlBhZ2VHcm91cChRU3RyaW5n
KCkpLCB0aGlzKTsKKyAgICBtX3dlYlZpZXctPmNyZWF0ZSgpOworICAgIFdLUGFnZVNldFVzZUZp
eGVkTGF5b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVlKTsKK30KKworCit2b2lkIFZpZXc6
OmV4cG9zZUV2ZW50KFFFeHBvc2VFdmVudCogZXZlbnQpCit7CisgICAgaWYgKCFtX2FjdGl2ZSkg
eworICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisgICAgICAgIFdLUGFnZUxvYWRVUkwobV93ZWJW
aWV3LT5wYWdlUmVmKCksIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1fdXJsLnRvTG9jYWw4
Qml0KCkuZGF0YSgpKSk7CisKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1c2VkKHRydWUpOwor
ICAgICAgICBtX3dlYlZpZXctPnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlldy0+
c2V0QWN0aXZlKHRydWUpOworICAgIH0KK30KKwordm9pZCBWaWV3OjpyZXNpemVFdmVudChRUmVz
aXplRXZlbnQqIGV2ZW50KQoreworICAgIG1fd2ViVmlldy0+c2V0U2l6ZShldmVudC0+c2l6ZSgp
KTsKK30KKwordm9pZCBWaWV3Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldmVudCkKK3sKKyAg
ICBpZiAoZXZlbnQtPnRpbWVySWQoKSA9PSBtX3BhaW50VGltZXIudGltZXJJZCgpKSB7CisgICAg
ICAgIG1fcGFpbnRUaW1lci5zdG9wKCk7CisgICAgICAgIG1fY29udGV4dC0+bWFrZUN1cnJlbnQo
dGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsKKyAg
ICAgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycyh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgVmll
dzo6dmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpCit7CisgICAgaWYgKCFtX3BhaW50VGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wYWludFRpbWVyLnN0YXJ0KDAsIHRoaXMpOworfQor
Cit2b2lkIFZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJiBj
dXJzb3IpCit7CisgICAgUUd1aUFwcGxpY2F0aW9uOjpzZXRPdmVycmlkZUN1cnNvcihjdXJzb3Ip
OworfQorCit2b2lkIFZpZXc6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiBldmVu
dCwgYm9vbCB3YXNIYW5kbGVkKQoreworICAgIGlmICh3YXNIYW5kbGVkIHx8IGV2ZW50LT5pc0Fj
Y2VwdGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoZXZlbnQtPmtleSgpKSB7
CisgICAgY2FzZSBRdDo6S2V5X0JhY2tzcGFjZTogeworICAgICAgICBXS1BhZ2VSZWYgcGFnZSA9
IG1fd2ViVmlldy0+cGFnZVJlZigpOworICAgICAgICBpZiAoV0tQYWdlQ2FuR29CYWNrKHBhZ2Up
KQorICAgICAgICAgICAgV0tQYWdlR29CYWNrKHBhZ2UpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgUUd1
aUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIFZpZXcgdmlldyhhcHAuYXJndW1l
bnRzKCkuc2l6ZSgpID4gMSA/IGFwcC5hcmd1bWVudHMoKS5hdCgxKSA6IFFTdHJpbmdMaXRlcmFs
KCJodHRwOi8vd3d3Lmdvb2dsZS5jb20iKSk7CisgICAgdmlldy5zaG93KCk7CisgICAgcmV0dXJu
IGFwcC5leGVjKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmll
dy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lNTMyMjNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvcmF3L1ZpZXcuaApAQCAtMCwwICsxLDY3IEBACisvKgorICAgIENvcHlyaWdodCAo
QykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaWZuZGVmIFZpZXdfaAorI2RlZmluZSBWaWV3X2gKKworI2luY2x1ZGUgPFFCYXNpY1RpbWVy
PgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFXaW5kb3c+CisjaW5jbHVk
ZSA8V2ViS2l0Mi9xcmF3d2Vidmlld19wLmg+CisKKworY2xhc3MgVmlldyA6ICBwdWJsaWMgUVdp
bmRvdywgcHJpdmF0ZSBRUmF3V2ViVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgVmlldyhjb25z
dCBRU3RyaW5nJiB1cmwpOworICAgIH5WaWV3KCk7CisKK3B1YmxpYzogLy8gUVJhd1dlYlZpZXdD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpOwor
ICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250
ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Jl
cXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9uZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpOworICAg
IHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29s
IHdhc0hhbmRsZWQpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGV4cG9zZUV2
ZW50KFFFeHBvc2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXpl
RXZlbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXZl
bnQpIHsgbV93ZWJWaWV3LT5zZW5kS2V5RXZlbnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lk
IGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+c2VuZEtleUV2
ZW50KGV2ZW50KTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xpY2tFdmVudChR
TW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5zZW5kTW91c2VFdmVudChldmVudCwgMik7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7
IG1fd2ViVmlldy0+c2VuZE1vdXNlRXZlbnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lkIG1v
dXNlUHJlc3NFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5zZW5kTW91c2VF
dmVudChldmVudCwgMSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VSZWxlYXNlRXZlbnQoUU1v
dXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+c2VuZE1vdXNlRXZlbnQoZXZlbnQpOyB9CisK
K3ByaXZhdGU6CisgICAgUVJhd1dlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBRT3BlbkdMQ29udGV4
dCAqbV9jb250ZXh0OworICAgIFFCYXNpY1RpbWVyIG1fcGFpbnRUaW1lcjsKKworICAgIFFTdHJp
bmcgbV91cmw7CisgICAgYm9vbCBtX2FjdGl2ZTsKKworICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2
ZW50KFFUaW1lckV2ZW50Kik7Cit9OworCisjZW5kaWYgLy8gVmlld19oCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC91dGlscy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC91dGls
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0OTFjYwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3V0aWxzLmNwcApAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2Yg
U3plZ2VkCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAidXRp
bHMuaCIKKworYm9vbCB0YWtlT3B0aW9uRmxhZyhRU3RyaW5nTGlzdCogYXJndW1lbnRzLCBjb25z
dCBRU3RyaW5nJiBuYW1lKQoreworICAgIGludCBpbmRleCA9IGFyZ3VtZW50cy0+aW5kZXhPZihu
YW1lKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIGFyZ3VtZW50cy0+cmVtb3ZlQXQo
aW5kZXgpOworICAgIHJldHVybiBpbmRleCAhPSAtMTsKK30KKworUVN0cmluZyB0YWtlT3B0aW9u
VmFsdWUoUVN0cmluZ0xpc3QqIGFyZ3VtZW50cywgY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAg
ICBRU3RyaW5nIHJlc3VsdDsKKworICAgIGludCBpbmRleCA9IGFyZ3VtZW50cy0+aW5kZXhPZihu
YW1lKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpIHsKKyAgICAgICAgYXJndW1lbnRzLT5yZW1vdmVB
dChpbmRleCk7CisgICAgICAgIGlmIChpbmRleCA8IGFyZ3VtZW50cy0+Y291bnQoKSAmJiAhYXJn
dW1lbnRzLT5hdChpbmRleCkuc3RhcnRzV2l0aCgiLSIpKQorICAgICAgICAgICAgcmVzdWx0ID0g
YXJndW1lbnRzLT50YWtlQXQoaW5kZXgpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK1FTdHJpbmcgZm9ybWF0S2V5cyhRTGlzdDxRU3RyaW5nPiBrZXlzKQoreworICAgIFFTdHJp
bmcgcmVzdWx0OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2V5cy5jb3VudCgpIC0gMTsgaSsr
KQorICAgICAgICByZXN1bHQuYXBwZW5kKGtleXMuYXQoaSkgKyAifCIpOworICAgIHJlc3VsdC5h
cHBlbmQoa2V5cy5sYXN0KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1FMaXN0PFFTdHJp
bmc+IGVudW1Ub0tleXMoY29uc3QgUU1ldGFPYmplY3QgbywgY29uc3QgUVN0cmluZyYgbmFtZSwg
Y29uc3QgUVN0cmluZyYgc3RyaXApCit7CisgICAgUUxpc3Q8UVN0cmluZz4gbGlzdDsKKworICAg
IGludCBlbnVtSW5kZXggPSBvLmluZGV4T2ZFbnVtZXJhdG9yKG5hbWUudG9MYXRpbjEoKS5kYXRh
KCkpOworICAgIFFNZXRhRW51bSBlbnVtZXJhdG9yID0gby5lbnVtZXJhdG9yKGVudW1JbmRleCk7
CisKKyAgICBpZiAoZW51bWVyYXRvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBlbnVtZXJhdG9yLmtleUNvdW50KCk7IGkrKykgeworICAgICAgICAgICAgUVN0cmlu
ZyBrZXkoZW51bWVyYXRvci52YWx1ZVRvS2V5KGkpKTsKKyAgICAgICAgICAgIGxpc3QuYXBwZW5k
KGtleS5yZW1vdmUoc3RyaXApKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBsaXN0
OworfQorCit2b2lkIGFwcFF1aXQoaW50IGV4aXRDb2RlLCBjb25zdCBRU3RyaW5nJiBtc2cpCit7
CisgICAgaWYgKCFtc2cuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChleGl0Q29kZSA+IDApCisg
ICAgICAgICAgICBxRGVidWcoIkVSUk9SOiAlcyIsIG1zZy50b0xhdGluMSgpLmRhdGEoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8IG1zZzsKKyAgICB9CisgICAgZXhp
dChleGl0Q29kZSk7Cit9CisKK1FVcmwgVXRpbHM6OnVybEZyb21Vc2VySW5wdXQoY29uc3QgUVN0
cmluZyYgc3RyaW5nKQoreworICAgIFFTdHJpbmcgaW5wdXQoc3RyaW5nKTsKKyAgICBRRmlsZUlu
Zm8gZmkoaW5wdXQpOworICAgIGlmIChmaS5leGlzdHMoKSAmJiBmaS5pc1JlbGF0aXZlKCkpCisg
ICAgICAgIGlucHV0ID0gZmkuYWJzb2x1dGVGaWxlUGF0aCgpOworCisgICAgcmV0dXJuIFFVcmw6
OmZyb21Vc2VySW5wdXQoaW5wdXQpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvdXRpbHMuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTU0YWZiZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L3V0aWxzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiB1dGlsc19oCisjZGVmaW5lIHV0aWxzX2gKKwor
I2luY2x1ZGUgPFF0Q29yZT4KKworI2lmbmRlZiBOT19SRVRVUk4KKyNpZiBkZWZpbmVkKF9fQ0Nf
QVJNKSB8fCBkZWZpbmVkKF9fQVJNQ0NfXykKKyNkZWZpbmUgTk9fUkVUVVJOIF9fZGVjbHNwZWMo
bm9yZXR1cm4pCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBOT19SRVRVUk4gX19h
dHRyaWJ1dGUoKF9fbm9yZXR1cm5fXykpCisjZWxzZQorI2RlZmluZSBOT19SRVRVUk4KKyNlbmRp
ZgorI2VuZGlmCisKKy8vIG9wdGlvbnMgaGFuZGxpbmcKK2NsYXNzIFV0aWxzIDogcHVibGljIFFP
YmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgVXRpbHMoUU9iamVjdCogcGFyZW50
ID0gMCkKKyAgICAgICAgOiBRT2JqZWN0KHBhcmVudCkgeyB9CisKKyAgICBRX0lOVk9LQUJMRSBz
dGF0aWMgUVVybCB1cmxGcm9tVXNlcklucHV0KGNvbnN0IFFTdHJpbmcmIGlucHV0KTsKK307CisK
K2Jvb2wgdGFrZU9wdGlvbkZsYWcoUVN0cmluZ0xpc3QqIGFyZ3VtZW50cywgY29uc3QgUVN0cmlu
ZyYgbmFtZSk7CitRU3RyaW5nIHRha2VPcHRpb25WYWx1ZShRU3RyaW5nTGlzdCogYXJndW1lbnRz
LCBjb25zdCBRU3RyaW5nJiBuYW1lKTsKK1FTdHJpbmcgZm9ybWF0S2V5cyhRTGlzdDxRU3RyaW5n
PiBrZXlzKTsKK1FMaXN0PFFTdHJpbmc+IGVudW1Ub0tleXMoY29uc3QgUU1ldGFPYmplY3QsIGNv
bnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJik7CisKK05PX1JFVFVSTiB2b2lkIGFwcFF1aXQo
aW50IHN0YXR1cywgY29uc3QgUVN0cmluZyYgbXNnID0gUVN0cmluZygpKTsKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvIGIvVG9vbHMv
UXRUZXN0QnJvd3Nlci9RdFRlc3RCcm93c2VyLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zNjZkMGJkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nl
ci9RdFRlc3RCcm93c2VyLnBybwpAQCAtMCwwICsxLDU3IEBACisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJv
amVjdCBmaWxlIGZvciB0aGUgUXRUZXN0QnJvd3NlciBiaW5hcnkKKyMKKyMgU2VlICdUb29scy9x
bWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworVEVNUExBVEUgPSBhcHAKKworSU5DTFVERVBBVEggKz0gXAorICAgICQke1JPT1Rf
V0VCS0lUX0RJUn0vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQgXAorICAgICQke1JPT1RfV0VC
S0lUX0RJUn0vU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydCBcCisgICAgJCR7Uk9PVF9X
RUJLSVRfRElSfS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC8gXAorICAgICQke1JPT1RfV0VCS0lU
X0RJUn0vU291cmNlL1dURgorCitTT1VSQ0VTICs9IFwKKyAgICBsb2NhdGlvbmVkaXQuY3BwIFwK
KyAgICBsYXVuY2hlcndpbmRvdy5jcHAgXAorICAgIHF0dGVzdGJyb3dzZXIuY3BwIFwKKyAgICBt
YWlud2luZG93LmNwcCBcCisgICAgdXJsbG9hZGVyLmNwcCBcCisgICAgdXRpbHMuY3BwIFwKKyAg
ICB3ZWJwYWdlLmNwcCBcCisgICAgd2Vidmlldy5jcHAgXAorICAgIGZwc3RpbWVyLmNwcCBcCisg
ICAgY29va2llamFyLmNwcAorCitIRUFERVJTICs9IFwKKyAgICBsb2NhdGlvbmVkaXQuaCBcCisg
ICAgbGF1bmNoZXJ3aW5kb3cuaCBcCisgICAgbWFpbndpbmRvdy5oIFwKKyAgICB1cmxsb2FkZXIu
aCBcCisgICAgdXRpbHMuaCBcCisgICAgd2ViaW5zcGVjdG9yLmggXAorICAgIHdlYnBhZ2UuaCBc
CisgICAgd2Vidmlldy5oIFwKKyAgICBmcHN0aW1lci5oIFwKKyAgICBjb29raWVqYXIuaAorCisK
K1dFQktJVCArPSB3dGYgd2ViY29yZQorCitERVNURElSID0gJCRST09UX0JVSUxEX0RJUi9iaW4K
KworUVQgKz0gbmV0d29yayB3ZWJraXR3aWRnZXRzIHdpZGdldHMKK2hhdmU/KFFUUFJJTlRTVVBQ
T1JUKTogUVQgKz0gcHJpbnRzdXBwb3J0CisKK21hY3g6UVQgKz0geG1sCisKK2hhdmU/KEZPTlRD
T05GSUcpOiBQS0dDT05GSUcgKz0gZm9udGNvbmZpZworCitxdEhhdmVNb2R1bGUob3BlbmdsKSB7
CisgICAgUVQgKz0gb3BlbmdsCisgICAgREVGSU5FUyArPSBRVF9DT05GSUdVUkVEX1dJVEhfT1BF
TkdMCit9CisKK1JFU09VUkNFUyArPSBcCisgICAgUXRUZXN0QnJvd3Nlci5xcmMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvUXRUZXN0QnJvd3Nlci5xcmMgYi9Ub29scy9RdFRlc3RC
cm93c2VyL1F0VGVzdEJyb3dzZXIucXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmI2MDM2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL1F0VGVz
dEJyb3dzZXIucXJjCkBAIC0wLDAgKzEsNiBAQAorPFJDQz4KKyAgICA8cXJlc291cmNlIHByZWZp
eD0iLyI+CisgICAgICAgIDxmaWxlPnVzZXJhZ2VudGxpc3QudHh0PC9maWxlPgorICAgICAgICA8
ZmlsZT5mYXZpY29uLnBuZzwvZmlsZT4KKyAgICA8L3FyZXNvdXJjZT4KKzwvUkNDPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29raWVqYXIuY3BwIGIvVG9vbHMvUXRUZXN0QnJv
d3Nlci9jb29raWVqYXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNh
MWI4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5j
cHAKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjb29raWVq
YXIuaCIKKworI2luY2x1ZGUgPFFTdGFuZGFyZFBhdGhzPgorI2luY2x1ZGUgPFFEaXI+CisjaW5j
bHVkZSA8UVRleHRTdHJlYW0+CisKK1Rlc3RCcm93c2VyQ29va2llSmFyOjpUZXN0QnJvd3NlckNv
b2tpZUphcihRT2JqZWN0KiBwYXJlbnQpCisgICAgOiBRTmV0d29ya0Nvb2tpZUphcihwYXJlbnQp
CisgICAgLCBtX3N0b3JhZ2VFbmFibGVkKGZhbHNlKQoreworICAgIC8vIFdlIHVzZSBhIHRpbWVy
IGZvciB0aGUgcmVhbCBkaXNrIHdyaXRlIHRvIGF2b2lkIG11bHRpcGxlIElPCisgICAgLy8gc3lz
Y2FsbHMgaW4gc2VxdWVuY2UgKHdoZW4gbG9hZGluZyBwYWdlcyB3aGljaCBzZXQgbXVsdGlwbGUg
Y29va2llcykuCisgICAgbV90aW1lci5zZXRJbnRlcnZhbCgxMDAwMCk7CisgICAgbV90aW1lci5z
ZXRTaW5nbGVTaG90KHRydWUpOworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0
KCkpLCB0aGlzLCBTTE9UKHNhdmVUb0Rpc2soKSkpOworCisjaWZuZGVmIFFUX05PX0RFU0tUT1BT
RVJWSUNFUworICAgIFFTdHJpbmcgcGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0
aW9uKFFTdGFuZGFyZFBhdGhzOjpDYWNoZUxvY2F0aW9uKTsKKyNlbHNlCisgICAgUVN0cmluZyBw
YXRoID0gUURpcjo6aG9tZVBhdGgoKSArICIvLlF0VGVzdEJyb3dzZXIiOworI2VuZGlmCisKKyAg
ICBRRGlyKCkubWtwYXRoKHBhdGgpOworICAgIG1fZmlsZS5zZXRGaWxlTmFtZShwYXRoICsgIi9j
b29raWVKYXIiKTsKK30KKworVGVzdEJyb3dzZXJDb29raWVKYXI6On5UZXN0QnJvd3NlckNvb2tp
ZUphcigpCit7CisgICAgaWYgKG1fc3RvcmFnZUVuYWJsZWQpIHsKKyAgICAgICAgZXh0cmFjdFJh
d0Nvb2tpZXMoKTsKKyAgICAgICAgc2F2ZVRvRGlzaygpOworICAgIH0KK30KKworYm9vbCBUZXN0
QnJvd3NlckNvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtD
b29raWU+JiBjb29raWVMaXN0LCBjb25zdCBRVXJsJiB1cmwpCit7CisgICAgYm9vbCBzdGF0dXMg
PSBRTmV0d29ya0Nvb2tpZUphcjo6c2V0Q29va2llc0Zyb21VcmwoY29va2llTGlzdCwgdXJsKTsK
KyAgICBpZiAoc3RhdHVzICYmIG1fc3RvcmFnZUVuYWJsZWQpCisgICAgICAgIHNjaGVkdWxlU2F2
ZVRvRGlzaygpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29r
aWVKYXI6OnNldERpc2tTdG9yYWdlRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zdG9y
YWdlRW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAoZW5hYmxlZCAmJiBhbGxDb29raWVzKCku
aXNFbXB0eSgpKQorICAgICAgICBsb2FkRnJvbURpc2soKTsKKworICAgIC8vIFdoZW4gZGlzYWJs
aW5nLCBzYXZlIGN1cnJlbnQgY29va2llcy4KKyAgICBpZiAoIWVuYWJsZWQgJiYgIWFsbENvb2tp
ZXMoKS5pc0VtcHR5KCkpCisgICAgICAgIHNjaGVkdWxlU2F2ZVRvRGlzaygpOworfQorCit2b2lk
IFRlc3RCcm93c2VyQ29va2llSmFyOjpzY2hlZHVsZVNhdmVUb0Rpc2soKQoreworICAgIC8vIFdl
IGV4dHJhY3QgdGhlIHJhdyBjb29raWVzIGhlcmUgYmVjYXVzZSB0aGUgdXNlciBtYXkKKyAgICAv
LyBlbmFibGUvZGlzYWJsZS9jbGVhciBjb29raWVzIHdoaWxlIHRoZSB0aW1lciBpcyBydW5uaW5n
LgorICAgIGV4dHJhY3RSYXdDb29raWVzKCk7CisgICAgbV90aW1lci5zdGFydCgpOworfQorCit2
b2lkIFRlc3RCcm93c2VyQ29va2llSmFyOjpleHRyYWN0UmF3Q29va2llcygpCit7CisgICAgUUxp
c3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBhbGxDb29raWVzKCk7CisgICAgbV9yYXdDb29r
aWVzLmNsZWFyKCk7CisKKyAgICBmb3JlYWNoIChjb25zdCBRTmV0d29ya0Nvb2tpZSAmY29va2ll
LCBjb29raWVzKSB7CisgICAgICAgIGlmICghY29va2llLmlzU2Vzc2lvbkNvb2tpZSgpKQorICAg
ICAgICAgICAgbV9yYXdDb29raWVzLmFwcGVuZChjb29raWUudG9SYXdGb3JtKCkpOworICAgIH0K
K30KKwordm9pZCBUZXN0QnJvd3NlckNvb2tpZUphcjo6c2F2ZVRvRGlzaygpCit7CisgICAgbV90
aW1lci5zdG9wKCk7CisKKyAgICBpZiAobV9maWxlLm9wZW4oUUlPRGV2aWNlOjpXcml0ZU9ubHkg
fCBRSU9EZXZpY2U6OlRleHQpKSB7CisgICAgICAgIFFUZXh0U3RyZWFtIG91dCgmbV9maWxlKTsK
KyAgICAgICAgZm9yZWFjaCAoY29uc3QgUUJ5dGVBcnJheSAmY29va2llLCBtX3Jhd0Nvb2tpZXMp
CisgICAgICAgICAgICBvdXQgPDwgY29va2llICsgIlxuIjsKKyAgICAgICAgbV9maWxlLmNsb3Nl
KCk7CisgICAgfSBlbHNlCisgICAgICAgIHFXYXJuaW5nKCJJTyBlcnJvciBoYW5kbGluZyBjb29r
aWVqYXIgZmlsZSIpOworfQorCit2b2lkIFRlc3RCcm93c2VyQ29va2llSmFyOjpsb2FkRnJvbURp
c2soKQoreworICAgIGlmICghbV9maWxlLmV4aXN0cygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llczsKKworICAgIGlmIChtX2ZpbGUub3BlbihR
SU9EZXZpY2U6OlJlYWRPbmx5IHwgUUlPRGV2aWNlOjpUZXh0KSkgeworICAgICAgICBRVGV4dFN0
cmVhbSBpbigmbV9maWxlKTsKKyAgICAgICAgd2hpbGUgKCFpbi5hdEVuZCgpKQorICAgICAgICAg
ICAgY29va2llcy5hcHBlbmQoUU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhpbi5yZWFkTGlu
ZSgpLnRvVXRmOCgpKSk7CisgICAgICAgIG1fZmlsZS5jbG9zZSgpOworICAgIH0gZWxzZQorICAg
ICAgICBxV2FybmluZygiSU8gZXJyb3IgaGFuZGxpbmcgY29va2llamFyIGZpbGUiKTsKKworICAg
IHNldEFsbENvb2tpZXMoY29va2llcyk7Cit9CisKK3ZvaWQgVGVzdEJyb3dzZXJDb29raWVKYXI6
OnJlc2V0KCkKK3sKKyAgICBzZXRBbGxDb29raWVzKFFMaXN0PFFOZXR3b3JrQ29va2llPigpKTsK
KyAgICBpZiAobV9zdG9yYWdlRW5hYmxlZCkKKyAgICAgICAgc2NoZWR1bGVTYXZlVG9EaXNrKCk7
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2Nvb2tpZWphci5oIGIvVG9vbHMv
UXRUZXN0QnJvd3Nlci9jb29raWVqYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kYTYyZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9jb29r
aWVqYXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBjb29raWVqYXJfaAorI2RlZmluZSBjb29raWVq
YXJfaAorCisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVkZSA8UU5ldHdvcmtDb29raWU+CisjaW5j
bHVkZSA8UU5ldHdvcmtDb29raWVKYXI+CisjaW5jbHVkZSA8UVRpbWVyPgorCitjbGFzcyBUZXN0
QnJvd3NlckNvb2tpZUphciA6IHB1YmxpYyBRTmV0d29ya0Nvb2tpZUphciB7CisgICAgUV9PQkpF
Q1QKKworcHVibGljOgorICAgIFRlc3RCcm93c2VyQ29va2llSmFyKFFPYmplY3QqIHBhcmVudCA9
IDApOworICAgIHZpcnR1YWwgflRlc3RCcm93c2VyQ29va2llSmFyKCk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2V0Q29va2llc0Zyb21VcmwoY29uc3QgUUxpc3Q8UU5ldHdvcmtDb29raWU+JiwgY29u
c3QgUVVybCYpOworCisgICAgdm9pZCBzZXREaXNrU3RvcmFnZUVuYWJsZWQoYm9vbCk7CisKK3B1
YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgc2NoZWR1bGVTYXZlVG9EaXNrKCk7CisgICAgdm9pZCBs
b2FkRnJvbURpc2soKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAg
ICB2b2lkIHNhdmVUb0Rpc2soKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGV4dHJhY3RSYXdDb29r
aWVzKCk7CisKKyAgICBRTGlzdDxRQnl0ZUFycmF5PiBtX3Jhd0Nvb2tpZXM7CisgICAgYm9vbCBt
X3N0b3JhZ2VFbmFibGVkOworICAgIFFGaWxlIG1fZmlsZTsKKyAgICBRVGltZXIgbV90aW1lcjsK
K307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9mYXZpY29uLnBu
ZyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvZmF2aWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDQ2Mjc1MgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xz
L1F0VGVzdEJyb3dzZXIvZmF2aWNvbi5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9RdFRl
c3RCcm93c2VyL2Zwc3RpbWVyLmNwcCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvZnBzdGltZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZTNkOWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2Zwc3RpbWVyLmNwcApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImZwc3RpbWVyLmgiCisKKyNpbmNsdWRlIDxRRGF0ZVRpbWU+CisjaW5jbHVkZSA8UVRp
bWVyRXZlbnQ+CisKKy8vIFdlIHNhdmUgYSBtYXhpbXVtIG9mIDEwMDAwIGZyYW1lcywgYW5kIHB1
cmdlIDIwMDAgYXQgYSB0aW1lCisjZGVmaW5lIE1BWF9GUkFNRVNfU0FWRUQgMTAwMDAKKyNkZWZp
bmUgRlJBTUVTX1RPX1BVUkdFX1dIRU5fRlVMTCAyMDAwCisvLyA2MCBGUFMKKyNkZWZpbmUgRlBT
X01FQVNVUkVfSU5URVJWQUwgMTAwMCAvIDYwCisKK0Zwc1RpbWVyOjpGcHNUaW1lcihRT2JqZWN0
KiBwYXJlbnQpCisgICAgOiBRT2JqZWN0KHBhcmVudCkKKyAgICAsIG1fdGltZXIoMCkKK3sKK30K
KworaW50IEZwc1RpbWVyOjpudW1GcmFtZXMoaW50IHNwYW5NaWxsaXMpIGNvbnN0Cit7CisgICAg
Y29uc3QgUVRpbWUgbm93ID0gUVRpbWU6OmN1cnJlbnRUaW1lKCk7CisKKyAgICBpbnQgY291bnQg
PSAwOworICAgIGZvciAoaW50IGkgPSBtX2ZyYW1lcy5sZW5ndGgoKSAtIDE7IGkgPj0gMDsgLS1p
LCArK2NvdW50KSB7CisgICAgICAgIGludCBtc2VjcyA9IG1fZnJhbWVzW2ldLm1zZWNzVG8obm93
KTsKKyAgICAgICAgaWYgKG1zZWNzIDwgMCkKKyAgICAgICAgICAgIG1zZWNzICs9IDI0ICogNjAg
KiA2MCAqIDEwMDA7CisgICAgICAgIGlmIChtc2VjcyA+IHNwYW5NaWxsaXMpCisgICAgICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCit2b2lkIEZwc1RpbWVyOjpz
dGFydCgpCit7CisgICAgbV90aW1lciA9IHN0YXJ0VGltZXIoRlBTX01FQVNVUkVfSU5URVJWQUwp
OworfQorCit2b2lkIEZwc1RpbWVyOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fdGltZXIpCisgICAg
ICAgIHJldHVybjsKKyAgICBraWxsVGltZXIobV90aW1lcik7CisgICAgbV9mcmFtZXMuY2xlYXIo
KTsKK30KKwordm9pZCBGcHNUaW1lcjo6dGltZXJFdmVudChRVGltZXJFdmVudCogZXZlbnQpCit7
CisgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgIT0gbV90aW1lcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fZnJhbWVzLmFwcGVuZChRVGltZTo6Y3VycmVudFRpbWUoKSk7CisgICAgaWYgKG1fZnJh
bWVzLmxlbmd0aCgpID4gTUFYX0ZSQU1FU19TQVZFRCkKKyAgICAgICAgbV9mcmFtZXMuZXJhc2Uo
bV9mcmFtZXMuYmVnaW4oKSwgbV9mcmFtZXMuYmVnaW4oKSArIEZSQU1FU19UT19QVVJHRV9XSEVO
X0ZVTEwpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9mcHN0aW1lci5oIGIv
VG9vbHMvUXRUZXN0QnJvd3Nlci9mcHN0aW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjI1Njc0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2Vy
L2Zwc3RpbWVyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZnBzdGltZXJfaAorI2RlZmluZSBmcHN0
aW1lcl9oCisKKyNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFTZXQ+CisjaW5jbHVkZSA8
UVRpbWU+CisKK2NsYXNzIEZwc1RpbWVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNU
CisKK3B1YmxpYzoKKyAgICBGcHNUaW1lcihRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICBpbnQg
bnVtRnJhbWVzKGludCBzcGFuTWlsbGlzID0gMTAwMCkgY29uc3Q7CisKK3B1YmxpYyBRX1NMT1RT
OgorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKworcHJvdGVjdGVkIFFfU0xP
VFM6CisgICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKKworcHJpdmF0
ZToKKyAgICBpbnQgbV90aW1lcjsKKyAgICBRTGlzdDxRVGltZT4gbV9mcmFtZXM7Cit9OworCisj
ZW5kaWYgLy8gRlBTTUVBU1VSRV9ICmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2xh
dW5jaGVyd2luZG93LmNwcCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYWRmNDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmNwcApAQCAtMCwwICsx
LDExOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0
eSBvZiBTemVnZWQKKyAqIENvcHlyaWdodCAoQykgMjAxMSBLcmlzdG9mIEtvc3p0eW8gPEtvc3p0
eW8uS3Jpc3RvZkBzdHVkLnUtc3plZ2VkLmh1PgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdpcmlz
aCBSYW1ha3Jpc2huYW4gPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA2IERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2
IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTaW1vbiBI
YXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImxhdW5jaGVyd2luZG93Lmgi
CisjaW5jbHVkZSAiY29va2llamFyLmgiCisjaW5jbHVkZSAidXJsbG9hZGVyLmgiCisKKyNpbmNs
dWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUNoZWNrQm94PgorI2luY2x1ZGUgPFFDb21i
b0JveD4KKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEaWFsb2dCdXR0
b25Cb3g+CisjaW5jbHVkZSA8UUlucHV0RGlhbG9nPgorI2luY2x1ZGUgPFFMYWJlbD4KKyNpZm5k
ZWYgUVRfTk9fTElORUVESVQKKyNpbmNsdWRlIDxRTGluZUVkaXQ+CisjZW5kaWYKKyNpZm5kZWYg
UVRfTk9fU0hPUlRDVVQKKyNpbmNsdWRlIDxRTWVudUJhcj4KKyNlbmRpZgorI2lmICFkZWZpbmVk
KFFUX05PX1BSSU5UUFJFVklFV0RJQUxPRykgJiYgSEFWRShRVFBSSU5UU1VQUE9SVCkKKyNpbmNs
dWRlIDxRUHJpbnRQcmV2aWV3RGlhbG9nPgorI2VuZGlmCisjaW5jbHVkZSA8UVNsaWRlcj4KKyNp
bmNsdWRlIDxRU3BsaXR0ZXI+CisjaW5jbHVkZSA8UVN0YXR1c0Jhcj4KKyNpbmNsdWRlIDxRVG9v
bEJ1dHRvbj4KKyNpbmNsdWRlIDxRVG9vbFRpcD4KKyNpbmNsdWRlIDxRVkJveExheW91dD4KKwor
I2lmICFkZWZpbmVkKFFUX05PX0ZJTEVESUFMT0cpICYmICFkZWZpbmVkKFFUX05PX01FU1NBR0VC
T1gpCisjaW5jbHVkZSA8UUZpbGVEaWFsb2c+CisjaW5jbHVkZSA8UUZpbGVJbmZvPgorI2luY2x1
ZGUgPFFNZXNzYWdlQm94PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CisjZW5kaWYKKworI2lm
ICFkZWZpbmVkKFFUX05PX05FVFdPUktESVNLQ0FDSEUpICYmICFkZWZpbmVkKFFUX05PX0RFU0tU
T1BTRVJWSUNFUykKKyNpbmNsdWRlIDxRU3RhbmRhcmRQYXRocz4KKyNpbmNsdWRlIDxRdE5ldHdv
cmsvUU5ldHdvcmtEaXNrQ2FjaGU+CisjZW5kaWYKKworc3RydWN0IEhpZ2hsaWdodGVkRWxlbWVu
dCB7CisgICAgUVdlYkVsZW1lbnQgbV9lbGVtZW50OworICAgIFFTdHJpbmcgbV9wcmV2aW91c1N0
eWxlOworfTsKKworY29uc3QgaW50IGdFeGl0Q2xpY2tBcmVhID0gODA7CitRVmVjdG9yPGludD4g
TGF1bmNoZXJXaW5kb3c6Om1fem9vbUxldmVsczsKKworc3RhdGljIFRlc3RCcm93c2VyQ29va2ll
SmFyKiB0ZXN0QnJvd3NlckNvb2tpZUphckluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgVGVzdEJy
b3dzZXJDb29raWVKYXIqIGNvb2tpZUphciA9IG5ldyBUZXN0QnJvd3NlckNvb2tpZUphcihxQXBw
KTsKKyAgICByZXR1cm4gY29va2llSmFyOworfQorCitMYXVuY2hlcldpbmRvdzo6TGF1bmNoZXJX
aW5kb3coV2luZG93T3B0aW9ucyogZGF0YSwgUUdyYXBoaWNzU2NlbmUqIHNoYXJlZFNjZW5lKQor
ICAgIDogTWFpbldpbmRvdygpCisgICAgLCBtX2N1cnJlbnRab29tKDEwMCkKKyAgICAsIG1fdXJs
TG9hZGVyKDApCisgICAgLCBtX3ZpZXcoMCkKKyAgICAsIG1faW5zcGVjdG9yKDApCisgICAgLCBt
X2Zvcm1hdE1lbnVBY3Rpb24oMCkKKyAgICAsIG1fem9vbUFuaW1hdGlvbigwKQorI2lmICFkZWZp
bmVkKFFUX05PX0ZJTEVESUFMT0cpICYmICFkZWZpbmVkKFFUX05PX01FU1NBR0VCT1gpCisgICAg
LCBtX3JlcGx5KDApCisjZW5kaWYKKyNpZm5kZWYgUVRfTk9fTElORUVESVQKKyAgICAsIG1fZmlu
ZEZsYWcoMCkKKyNlbmRpZgoreworICAgIGlmIChkYXRhKQorICAgICAgICBtX3dpbmRvd09wdGlv
bnMgPSAqZGF0YTsKKworICAgIGluaXQoKTsKKyAgICBpZiAoc2hhcmVkU2NlbmUgJiYgZGF0YS0+
dXNlR3JhcGhpY3NWaWV3KQorICAgICAgICBzdGF0aWNfY2FzdDxRR3JhcGhpY3NWaWV3Kj4obV92
aWV3KS0+c2V0U2NlbmUoc2hhcmVkU2NlbmUpOworCisgICAgY3JlYXRlQ2hyb21lKCk7CisjaWYg
IWRlZmluZWQoUVRfTk9fRklMRURJQUxPRykgJiYgIWRlZmluZWQoUVRfTk9fTUVTU0FHRUJPWCkK
KyAgICBjb25uZWN0KHBhZ2UoKSwgU0lHTkFMKGRvd25sb2FkUmVxdWVzdGVkKGNvbnN0IFFOZXR3
b3JrUmVxdWVzdCYpKSwgdGhpcywgU0xPVChkb3dubG9hZFJlcXVlc3QoY29uc3QgUU5ldHdvcmtS
ZXF1ZXN0JikpKTsKKyNlbmRpZgorfQorCitMYXVuY2hlcldpbmRvdzo6fkxhdW5jaGVyV2luZG93
KCkKK3sKKyAgICBkZWxldGUgbV91cmxMb2FkZXI7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6
OmluaXQoKQoreworICAgIFFTcGxpdHRlciogc3BsaXR0ZXIgPSBuZXcgUVNwbGl0dGVyKFF0OjpW
ZXJ0aWNhbCwgdGhpcyk7CisgICAgc2V0Q2VudHJhbFdpZGdldChzcGxpdHRlcik7CisKKyAgICBp
ZiAobV93aW5kb3dPcHRpb25zLnN0YXJ0TWF4aW1pemVkKQorICAgICAgICBzZXRXaW5kb3dTdGF0
ZSh3aW5kb3dTdGF0ZSgpIHwgUXQ6OldpbmRvd01heGltaXplZCk7CisgICAgZWxzZQorICAgICAg
ICByZXNpemUoODAwLCA2MDApOworCisgICAgbV9pbnNwZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
OworI2lmbmRlZiBRVF9OT19QUk9QRVJUSUVTCisgICAgaWYgKCFtX3dpbmRvd09wdGlvbnMuaW5z
cGVjdG9yVXJsLmlzRW1wdHkoKSkKKyAgICAgICAgbV9pbnNwZWN0b3ItPnNldFByb3BlcnR5KCJf
cV9pbnNwZWN0b3JVcmwiLCBtX3dpbmRvd09wdGlvbnMuaW5zcGVjdG9yVXJsKTsKKyNlbmRpZgor
ICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGRlc3Ryb3llZCgpKSwgbV9pbnNwZWN0b3IsIFNMT1Qo
ZGVsZXRlTGF0ZXIoKSkpOworCisgICAgLy8gdGhlIHpvb20gdmFsdWVzIGFyZSBjaG9zZW4gdG8g
YmUgbGlrZSBpbiBNb3ppbGxhIEZpcmVmb3ggMworICAgIGlmICghbV96b29tTGV2ZWxzLmNvdW50
KCkpIHsKKyAgICAgICAgbV96b29tTGV2ZWxzIDw8IDMwIDw8IDUwIDw8IDY3IDw8IDgwIDw8IDkw
OworICAgICAgICBtX3pvb21MZXZlbHMgPDwgMTAwOworICAgICAgICBtX3pvb21MZXZlbHMgPDwg
MTEwIDw8IDEyMCA8PCAxMzMgPDwgMTUwIDw8IDE3MCA8PCAyMDAgPDwgMjQwIDw8IDMwMDsKKyAg
ICB9CisKKyAgICBpbml0aWFsaXplVmlldygpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojpp
bml0aWFsaXplVmlldygpCit7CisgICAgZGVsZXRlIG1fdmlldzsKKworICAgIG1faW5wdXRVcmwg
PSBhZGRyZXNzVXJsKCk7CisgICAgUVVybCB1cmwgPSBwYWdlKCktPm1haW5GcmFtZSgpLT51cmwo
KTsKKyAgICBzZXRQYWdlKG5ldyBXZWJQYWdlKHRoaXMpKTsKKyAgICBzZXREaXNrQ2FjaGUobV93
aW5kb3dPcHRpb25zLnVzZURpc2tDYWNoZSk7CisgICAgc2V0VXNlRGlza0Nvb2tpZXMobV93aW5k
b3dPcHRpb25zLnVzZURpc2tDb29raWVzKTsKKworICAgIC8vIFdlIHJldXNlIHRoZSBzYW1lIGNv
b2tpZUphciBvbiBtdWx0aXBsZSBRTkFNcywgd2hpY2ggaXMgT0suCisgICAgUU9iamVjdCogY29v
a2llSmFyUGFyZW50ID0gdGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpLT5wYXJlbnQoKTsK
KyAgICBwYWdlKCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPnNldENvb2tpZUphcih0ZXN0QnJv
d3NlckNvb2tpZUphckluc3RhbmNlKCkpOworICAgIHRlc3RCcm93c2VyQ29va2llSmFySW5zdGFu
Y2UoKS0+c2V0UGFyZW50KGNvb2tpZUphclBhcmVudCk7CisKKyAgICBRU3BsaXR0ZXIqIHNwbGl0
dGVyID0gc3RhdGljX2Nhc3Q8UVNwbGl0dGVyKj4oY2VudHJhbFdpZGdldCgpKTsKKworICAgIGlm
ICghbV93aW5kb3dPcHRpb25zLnVzZUdyYXBoaWNzVmlldykgeworICAgICAgICBXZWJWaWV3VHJh
ZGl0aW9uYWwqIHZpZXcgPSBuZXcgV2ViVmlld1RyYWRpdGlvbmFsKHNwbGl0dGVyKTsKKyAgICAg
ICAgdmlldy0+c2V0UGFnZShwYWdlKCkpOworCisgICAgICAgIHZpZXctPmluc3RhbGxFdmVudEZp
bHRlcih0aGlzKTsKKworICAgICAgICBtX3ZpZXcgPSB2aWV3OworICAgIH0gZWxzZSB7CisgICAg
ICAgIFdlYlZpZXdHcmFwaGljc0Jhc2VkKiB2aWV3ID0gbmV3IFdlYlZpZXdHcmFwaGljc0Jhc2Vk
KHNwbGl0dGVyKTsKKyAgICAgICAgbV92aWV3ID0gdmlldzsKKyNpZm5kZWYgUVRfTk9fT1BFTkdM
CisgICAgICAgIHRvZ2dsZVFHTFdpZGdldFZpZXdwb3J0KG1fd2luZG93T3B0aW9ucy51c2VRR0xX
aWRnZXRWaWV3cG9ydCk7CisjZW5kaWYKKyAgICAgICAgdmlldy0+c2V0UGFnZShwYWdlKCkpOwor
CisgICAgICAgIGNvbm5lY3QodmlldywgU0lHTkFMKGN1cnJlbnRGUFNVcGRhdGVkKGludCkpLCB0
aGlzLCBTTE9UKHVwZGF0ZUZQUyhpbnQpKSk7CisKKyAgICAgICAgdmlldy0+aW5zdGFsbEV2ZW50
RmlsdGVyKHRoaXMpOworICAgICAgICAvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgUUFic3RyYWN0
U2Nyb2xsQXJlYTo6ZXZlbnRGaWx0ZXIgbWFrZXMgdXMgbmVlZAorICAgICAgICAvLyB0byBpbnN0
YWxsIHRoZSBldmVudCBmaWx0ZXIgYWxzbyBvbiB0aGUgdmlld3BvcnQgb2YgYSBRR3JhcGhpY3NW
aWV3LgorICAgICAgICB2aWV3LT52aWV3cG9ydCgpLT5pbnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7
CisgICAgfQorCisgICAgbV90b3VjaE1vY2tpbmcgPSBmYWxzZTsKKworICAgIGNvbm5lY3QocGFn
ZSgpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1QobG9hZFN0YXJ0ZWQoKSkpOwor
ICAgIGNvbm5lY3QocGFnZSgpLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSwgdGhpcywgU0xP
VChsb2FkRmluaXNoZWQoKSkpOworICAgIGNvbm5lY3QocGFnZSgpLCBTSUdOQUwobGlua0hvdmVy
ZWQoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJikpLAorICAg
ICAgICAgICAgdGhpcywgU0xPVChzaG93TGlua0hvdmVyKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBR
U3RyaW5nJikpKTsKKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChlbnRlcmVkRnVsbFNjcmVlbk1v
ZGUoYm9vbCkpLCB0aGlzLCBTTE9UKHRvZ2dsZUZ1bGxTY3JlZW5Nb2RlKGJvb2wpKSk7CisKKyAg
ICBpZiAobV93aW5kb3dPcHRpb25zLnByaW50TG9hZGVkVXJscykKKyAgICAgICAgY29ubmVjdChw
YWdlKCktPm1haW5GcmFtZSgpLCBTSUdOQUwodXJsQ2hhbmdlZChRVXJsKSksIHRoaXMsIFNMT1Qo
cHJpbnRVUkwoUVVybCkpKTsKKworICAgIGFwcGx5UHJlZnMoKTsKKworICAgIHNwbGl0dGVyLT5h
ZGRXaWRnZXQobV9pbnNwZWN0b3IpOworICAgIG1faW5zcGVjdG9yLT5zZXRQYWdlKHBhZ2UoKSk7
CisgICAgbV9pbnNwZWN0b3ItPmhpZGUoKTsKKworICAgIGlmIChtX3dpbmRvd09wdGlvbnMucmVt
b3RlSW5zcGVjdG9yUG9ydCkKKyAgICAgICAgcGFnZSgpLT5zZXRQcm9wZXJ0eSgiX3Ffd2ViSW5z
cGVjdG9yU2VydmVyUG9ydCIsIG1fd2luZG93T3B0aW9ucy5yZW1vdGVJbnNwZWN0b3JQb3J0KTsK
KworICAgIGlmICh1cmwuaXNWYWxpZCgpKQorICAgICAgICBwYWdlKCktPm1haW5GcmFtZSgpLT5s
b2FkKHVybCk7CisgICAgZWxzZSAgeworICAgICAgICBzZXRBZGRyZXNzVXJsKG1faW5wdXRVcmwp
OworICAgICAgICBtX2lucHV0VXJsID0gUVN0cmluZygpOworICAgIH0KK30KKwordm9pZCBMYXVu
Y2hlcldpbmRvdzo6YXBwbHlQcmVmcygpCit7CisgICAgUVdlYlNldHRpbmdzKiBzZXR0aW5ncyA9
IHBhZ2UoKS0+c2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncy0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQsIG1fd2luZG93T3B0aW9ucy51c2VD
b21wb3NpdGluZyk7CisgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlRp
bGVkQmFja2luZ1N0b3JlRW5hYmxlZCwgbV93aW5kb3dPcHRpb25zLnVzZVRpbGVkQmFja2luZ1N0
b3JlKTsKKyAgICBzZXR0aW5ncy0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCwgbV93aW5kb3dPcHRpb25zLnVzZUZyYW1lRmxhdHRlbmluZyk7CisgICAg
c2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OldlYkdMRW5hYmxlZCwgbV93aW5k
b3dPcHRpb25zLnVzZVdlYkdMKTsKKyAgICBtX3dpbmRvd09wdGlvbnMudXNlV2ViQXVkaW8gPSBz
ZXR0aW5ncy0+dGVzdEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OldlYkF1ZGlvRW5hYmxlZCk7CisK
KyAgICBpZiAoIWlzR3JhcGhpY3NCYXNlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJW
aWV3R3JhcGhpY3NCYXNlZCogdmlldyA9IHN0YXRpY19jYXN0PFdlYlZpZXdHcmFwaGljc0Jhc2Vk
Kj4obV92aWV3KTsKKyAgICB2aWV3LT5zZXRWaWV3cG9ydFVwZGF0ZU1vZGUobV93aW5kb3dPcHRp
b25zLnZpZXdwb3J0VXBkYXRlTW9kZSk7CisgICAgdmlldy0+c2V0RnJhbWVSYXRlTWVhc3VyZW1l
bnRFbmFibGVkKG1fd2luZG93T3B0aW9ucy5zaG93RnJhbWVSYXRlKTsKKyAgICB2aWV3LT5zZXRJ
dGVtQ2FjaGVNb2RlKG1fd2luZG93T3B0aW9ucy5jYWNoZVdlYlZpZXcgPyBRR3JhcGhpY3NJdGVt
OjpEZXZpY2VDb29yZGluYXRlQ2FjaGUgOiBRR3JhcGhpY3NJdGVtOjpOb0NhY2hlKTsKKworICAg
IGlmIChtX3dpbmRvd09wdGlvbnMucmVzaXplc1RvQ29udGVudHMpCisgICAgICAgIHRvZ2dsZVJl
c2l6ZXNUb0NvbnRlbnRzKG1fd2luZG93T3B0aW9ucy5yZXNpemVzVG9Db250ZW50cyk7Cit9CisK
K3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmNyZWF0ZUNocm9tZSgpCit7CisjaWZuZGVmIFFUX05PX1NI
T1JUQ1VUCisgICAgUU1lbnUqIGZpbGVNZW51ID0gbWVudUJhcigpLT5hZGRNZW51KCImRmlsZSIp
OworICAgIGZpbGVNZW51LT5hZGRBY3Rpb24oIk5ldyBXaW5kb3ciLCB0aGlzLCBTTE9UKG5ld1dp
bmRvdygpKSwgUUtleVNlcXVlbmNlOjpOZXcpOworICAgIGZpbGVNZW51LT5hZGRBY3Rpb24odHIo
Ik9wZW4gRmlsZS4uLiIpLCB0aGlzLCBTTE9UKG9wZW5GaWxlKCkpLCBRS2V5U2VxdWVuY2U6Ok9w
ZW4pOworICAgIGZpbGVNZW51LT5hZGRBY3Rpb24odHIoIk9wZW4gTG9jYXRpb24uLi4iKSwgdGhp
cywgU0xPVChvcGVuTG9jYXRpb24oKSksIFFLZXlTZXF1ZW5jZShRdDo6Q1RSTCB8IFF0OjpLZXlf
TCkpOworICAgIGZpbGVNZW51LT5hZGRBY3Rpb24oIkNsb3NlIFdpbmRvdyIsIHRoaXMsIFNMT1Qo
Y2xvc2UoKSksIFFLZXlTZXF1ZW5jZTo6Q2xvc2UpOworICAgIGZpbGVNZW51LT5hZGRTZXBhcmF0
b3IoKTsKKyAgICBmaWxlTWVudS0+YWRkQWN0aW9uKCJUYWtlIFNjcmVlbiBTaG90Li4uIiwgdGhp
cywgU0xPVChzY3JlZW5zaG90KCkpKTsKKyNpZiAhZGVmaW5lZChRVF9OT19QUklOVEVSKSAmJiBI
QVZFKFFUUFJJTlRTVVBQT1JUKQorICAgIGZpbGVNZW51LT5hZGRBY3Rpb24odHIoIlByaW50Li4u
IiksIHRoaXMsIFNMT1QocHJpbnQoKSksIFFLZXlTZXF1ZW5jZTo6UHJpbnQpOworI2VuZGlmCisg
ICAgZmlsZU1lbnUtPmFkZFNlcGFyYXRvcigpOworICAgIGZpbGVNZW51LT5hZGRBY3Rpb24oIlF1
aXQiLCBRQXBwbGljYXRpb246Omluc3RhbmNlKCksIFNMT1QoY2xvc2VBbGxXaW5kb3dzKCkpLCBR
S2V5U2VxdWVuY2UoUXQ6OkNUUkwgfCBRdDo6S2V5X1EpKTsKKworICAgIFFNZW51KiBlZGl0TWVu
dSA9IG1lbnVCYXIoKS0+YWRkTWVudSgiJkVkaXQiKTsKKyAgICBlZGl0TWVudS0+YWRkQWN0aW9u
KHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpVbmRvKSk7CisgICAgZWRpdE1lbnUtPmFkZEFjdGlv
bihwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6UmVkbykpOworICAgIGVkaXRNZW51LT5hZGRTZXBh
cmF0b3IoKTsKKyAgICBlZGl0TWVudS0+YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdl
OjpDdXQpKTsKKyAgICBlZGl0TWVudS0+YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdl
OjpDb3B5KSk7CisgICAgZWRpdE1lbnUtPmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2ViUGFn
ZTo6UGFzdGUpKTsKKyAgICBlZGl0TWVudS0+YWRkU2VwYXJhdG9yKCk7CisjaWZuZGVmIFFUX05P
X0xJTkVFRElUCisgICAgZWRpdE1lbnUtPmFkZEFjdGlvbigiJkZpbmQiLCB0aGlzLCBTTE9UKHNo
b3dGaW5kQmFyKCkpLCBRS2V5U2VxdWVuY2UoUXQ6OkNUUkwgfCBRdDo6S2V5X0YpKTsKKyAgICBl
ZGl0TWVudS0+YWRkU2VwYXJhdG9yKCk7CisjZW5kaWYKKyAgICBRQWN0aW9uKiBzZXRFZGl0YWJs
ZSA9IGVkaXRNZW51LT5hZGRBY3Rpb24oIlNldCBFZGl0YWJsZSIsIHRoaXMsIFNMT1Qoc2V0RWRp
dGFibGUoYm9vbCkpKTsKKyAgICBzZXRFZGl0YWJsZS0+c2V0Q2hlY2thYmxlKHRydWUpOworCisg
ICAgZWRpdE1lbnUtPmFkZEFjdGlvbigiQ2xlYXIgQ29va2llcyIsIHRoaXMsIFNMT1QoY2xlYXJD
b29raWVzKCkpKTsKKworICAgIFFNZW51KiB2aWV3TWVudSA9IG1lbnVCYXIoKS0+YWRkTWVudSgi
JlZpZXciKTsKKyAgICB2aWV3TWVudS0+YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdl
OjpTdG9wKSk7CisgICAgdmlld01lbnUtPmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2ViUGFn
ZTo6UmVsb2FkKSk7CisgICAgdmlld01lbnUtPmFkZFNlcGFyYXRvcigpOworICAgIFFBY3Rpb24q
IHpvb21JbiA9IHZpZXdNZW51LT5hZGRBY3Rpb24oIlpvb20gJkluIiwgdGhpcywgU0xPVCh6b29t
SW4oKSkpOworICAgIFFBY3Rpb24qIHpvb21PdXQgPSB2aWV3TWVudS0+YWRkQWN0aW9uKCJab29t
ICZPdXQiLCB0aGlzLCBTTE9UKHpvb21PdXQoKSkpOworICAgIFFBY3Rpb24qIHJlc2V0Wm9vbSA9
IHZpZXdNZW51LT5hZGRBY3Rpb24oIlJlc2V0IFpvb20iLCB0aGlzLCBTTE9UKHJlc2V0Wm9vbSgp
KSk7CisgICAgUUFjdGlvbiogem9vbVRleHRPbmx5ID0gdmlld01lbnUtPmFkZEFjdGlvbigiWm9v
bSBUZXh0IE9ubHkiLCB0aGlzLCBTTE9UKHRvZ2dsZVpvb21UZXh0T25seShib29sKSkpOworICAg
IHpvb21UZXh0T25seS0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHpvb21UZXh0T25seS0+c2V0
Q2hlY2tlZChmYWxzZSk7CisgICAgdmlld01lbnUtPmFkZFNlcGFyYXRvcigpOworICAgIHZpZXdN
ZW51LT5hZGRBY3Rpb24oIkR1bXAgSFRNTCIsIHRoaXMsIFNMT1QoZHVtcEh0bWwoKSkpOworICAg
IC8vIHZpZXdNZW51LT5hZGRBY3Rpb24oIkR1bXAgcGx1Z2lucyIsIHRoaXMsIFNMT1QoZHVtcFBs
dWdpbnMoKSkpOworCisgICAgem9vbUluLT5zZXRTaG9ydGN1dChRS2V5U2VxdWVuY2UoUXQ6OkNU
UkwgfCBRdDo6S2V5X1BsdXMpKTsKKyAgICB6b29tT3V0LT5zZXRTaG9ydGN1dChRS2V5U2VxdWVu
Y2UoUXQ6OkNUUkwgfCBRdDo6S2V5X01pbnVzKSk7CisgICAgcmVzZXRab29tLT5zZXRTaG9ydGN1
dChRS2V5U2VxdWVuY2UoUXQ6OkNUUkwgfCBRdDo6S2V5XzApKTsKKworICAgIFFNZW51KiBmb3Jt
YXRNZW51ID0gbmV3IFFNZW51KCJGJm9ybWF0IiwgdGhpcyk7CisgICAgbV9mb3JtYXRNZW51QWN0
aW9uID0gbWVudUJhcigpLT5hZGRNZW51KGZvcm1hdE1lbnUpOworICAgIG1fZm9ybWF0TWVudUFj
dGlvbi0+c2V0VmlzaWJsZShmYWxzZSk7CisgICAgZm9ybWF0TWVudS0+YWRkQWN0aW9uKHBhZ2Uo
KS0+YWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVCb2xkKSk7CisgICAgZm9ybWF0TWVudS0+YWRkQWN0
aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVJdGFsaWMpKTsKKyAgICBmb3JtYXRN
ZW51LT5hZGRBY3Rpb24ocGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZVVuZGVybGluZSkp
OworICAgIFFNZW51KiB3cml0aW5nTWVudSA9IGZvcm1hdE1lbnUtPmFkZE1lbnUodHIoIldyaXRp
bmcgRGlyZWN0aW9uIikpOworICAgIHdyaXRpbmdNZW51LT5hZGRBY3Rpb24ocGFnZSgpLT5hY3Rp
b24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0KSk7CisgICAgd3JpdGluZ01lbnUt
PmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6U2V0VGV4dERpcmVjdGlvbkxlZnRU
b1JpZ2h0KSk7CisgICAgd3JpdGluZ01lbnUtPmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2Vi
UGFnZTo6U2V0VGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0KSk7CisKKyAgICBRTWVudSogd2luZG93
TWVudSA9IG1lbnVCYXIoKS0+YWRkTWVudSgiJldpbmRvdyIpOworICAgIFFBY3Rpb24qIHRvZ2ds
ZUZ1bGxTY3JlZW4gPSB3aW5kb3dNZW51LT5hZGRBY3Rpb24oIlRvZ2dsZSBGdWxsU2NyZWVuIiwg
dGhpcywgU0lHTkFMKGVudGVyZWRGdWxsU2NyZWVuTW9kZShib29sKSkpOworICAgIHRvZ2dsZUZ1
bGxTY3JlZW4tPnNldFNob3J0Y3V0KFF0OjpLZXlfRjExKTsKKyAgICB0b2dnbGVGdWxsU2NyZWVu
LT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgdG9nZ2xlRnVsbFNjcmVlbi0+c2V0Q2hlY2tlZChm
YWxzZSk7CisgICAgLy8gV2hlbiBleGl0IGZ1bGxzY3JlZW4gbW9kZSBieSBjbGlja2luZyBvbiB0
aGUgZXhpdCBhcmVhIChib3R0b20gcmlnaHQgY29ybmVyKSB3ZSBtdXN0CisgICAgLy8gdW5jaGVj
ayB0aGUgVG9nZ2xlIEZ1bGxTY3JlZW4gYWN0aW9uLgorICAgIHRvZ2dsZUZ1bGxTY3JlZW4tPmNv
bm5lY3QodGhpcywgU0lHTkFMKGVudGVyZWRGdWxsU2NyZWVuTW9kZShib29sKSksIFNMT1Qoc2V0
Q2hlY2tlZChib29sKSkpOworCisgICAgUVdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHBhZ2UoKS0+
c2V0dGluZ3MoKTsKKworICAgIFFNZW51KiB0b29sc01lbnUgPSBtZW51QmFyKCktPmFkZE1lbnUo
IiZEZXZlbG9wIik7CisgICAgUU1lbnUqIGdyYXBoaWNzVmlld01lbnUgPSB0b29sc01lbnUtPmFk
ZE1lbnUoIlFHcmFwaGljc1ZpZXciKTsKKyAgICBRQWN0aW9uKiB0b2dnbGVHcmFwaGljc1ZpZXcg
PSBncmFwaGljc1ZpZXdNZW51LT5hZGRBY3Rpb24oIlRvZ2dsZSB1c2Ugb2YgUUdyYXBoaWNzVmll
dyIsIHRoaXMsIFNMT1QodG9nZ2xlV2ViVmlldyhib29sKSkpOworICAgIHRvZ2dsZUdyYXBoaWNz
Vmlldy0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHRvZ2dsZUdyYXBoaWNzVmlldy0+c2V0Q2hl
Y2tlZChpc0dyYXBoaWNzQmFzZWQoKSk7CisKKyAgICBRQWN0aW9uKiB0b2dnbGVXZWJHTCA9IHRv
b2xzTWVudS0+YWRkQWN0aW9uKCJUb2dnbGUgV2ViR0wiLCB0aGlzLCBTTE9UKHRvZ2dsZVdlYkdM
KGJvb2wpKSk7CisgICAgdG9nZ2xlV2ViR0wtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dn
bGVXZWJHTC0+c2V0Q2hlY2tlZChzZXR0aW5ncy0+dGVzdEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OldlYkdMRW5hYmxlZCkpOworI2lmICFFTkFCTEUoV0VCR0wpCisgICAgdG9nZ2xlV2ViR0wtPnNl
dEVuYWJsZWQoZmFsc2UpOworI2VuZGlmCisKKyAgICBRQWN0aW9uKiB0b2dnbGVXZWJBdWRpbyA9
IHRvb2xzTWVudS0+YWRkQWN0aW9uKCJUb2dnbGUgV2ViQXVkaW8iLCB0aGlzLCBTTE9UKHRvZ2ds
ZVdlYkF1ZGlvKGJvb2wpKSk7CisgICAgdG9nZ2xlV2ViQXVkaW8tPnNldENoZWNrYWJsZSh0cnVl
KTsKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorICAgIHRvZ2dsZVdlYkF1ZGlvLT5zZXRDaGVja2Vk
KG1fd2luZG93T3B0aW9ucy51c2VXZWJBdWRpbyk7CisjZWxzZQorICAgIHRvZ2dsZVdlYkF1ZGlv
LT5zZXRFbmFibGVkKGZhbHNlKTsKKyNlbmRpZgorCisgICAgUUFjdGlvbiogc3BhdGlhbE5hdmln
YXRpb25BY3Rpb24gPSB0b29sc01lbnUtPmFkZEFjdGlvbigiVG9nZ2xlIFNwYXRpYWwgTmF2aWdh
dGlvbiIsIHRoaXMsIFNMT1QodG9nZ2xlU3BhdGlhbE5hdmlnYXRpb24oYm9vbCkpKTsKKyAgICBz
cGF0aWFsTmF2aWdhdGlvbkFjdGlvbi0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHNwYXRpYWxO
YXZpZ2F0aW9uQWN0aW9uLT5zZXRTaG9ydGN1dChRS2V5U2VxdWVuY2UoUXQ6OkNUUkwgfCBRdDo6
U0hJRlQgfCBRdDo6S2V5X1MpKTsKKworICAgIFFBY3Rpb24qIHRvZ2dsZUZyYW1lRmxhdHRlbmlu
ZyA9IHRvb2xzTWVudS0+YWRkQWN0aW9uKCJUb2dnbGUgRnJhbWUgRmxhdHRlbmluZyIsIHRoaXMs
IFNMT1QodG9nZ2xlRnJhbWVGbGF0dGVuaW5nKGJvb2wpKSk7CisgICAgdG9nZ2xlRnJhbWVGbGF0
dGVuaW5nLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgdG9nZ2xlRnJhbWVGbGF0dGVuaW5nLT5z
ZXRDaGVja2VkKHNldHRpbmdzLT50ZXN0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCkpOworCisgICAgUUFjdGlvbiogdG91Y2hNb2NrQWN0aW9uID0gdG9vbHNN
ZW51LT5hZGRBY3Rpb24oIlRvZ2dsZSB0b3VjaCBtb2NraW5nIiwgdGhpcywgU0xPVChzZXRUb3Vj
aE1vY2tpbmcoYm9vbCkpKTsKKyAgICB0b3VjaE1vY2tBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVl
KTsKKyAgICB0b3VjaE1vY2tBY3Rpb24tPnNldFNob3J0Y3V0KFFLZXlTZXF1ZW5jZShRdDo6Q1RS
TCB8IFF0OjpBTFQgfCBRdDo6S2V5X1QpKTsKKworICAgIHRvb2xzTWVudS0+YWRkU2VwYXJhdG9y
KCk7CisKKyAgICBRQWN0aW9uKiB0b2dnbGVMb2NhbFN0b3JhZ2UgPSB0b29sc01lbnUtPmFkZEFj
dGlvbigiRW5hYmxlIExvY2FsIFN0b3JhZ2UiLCB0aGlzLCBTTE9UKHRvZ2dsZUxvY2FsU3RvcmFn
ZShib29sKSkpOworICAgIHRvZ2dsZUxvY2FsU3RvcmFnZS0+c2V0Q2hlY2thYmxlKHRydWUpOwor
ICAgIHRvZ2dsZUxvY2FsU3RvcmFnZS0+c2V0Q2hlY2tlZChtX3dpbmRvd09wdGlvbnMudXNlTG9j
YWxTdG9yYWdlKTsKKworICAgIFFBY3Rpb24qIHRvZ2dsZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2Ug
PSB0b29sc01lbnUtPmFkZEFjdGlvbigiRW5hYmxlIE9mZmxpbmUgU3RvcmFnZSBEYXRhYmFzZSIs
IHRoaXMsIFNMT1QodG9nZ2xlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZShib29sKSkpOworICAgIHRv
Z2dsZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2UtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dn
bGVPZmZsaW5lU3RvcmFnZURhdGFiYXNlLT5zZXRDaGVja2VkKG1fd2luZG93T3B0aW9ucy51c2VP
ZmZsaW5lU3RvcmFnZURhdGFiYXNlKTsKKworICAgIFFBY3Rpb24qIHRvZ2dsZU9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlID0gdG9vbHNNZW51LT5hZGRBY3Rpb24oIkVuYWJsZSBPZmZsaW5lIFdl
YiBBcHBsaWNhdGlvbiBDYWNoZSIsIHRoaXMsIFNMT1QodG9nZ2xlT2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGUoYm9vbCkpKTsKKyAgICB0b2dnbGVPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZS0+
c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHRvZ2dsZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
LT5zZXRDaGVja2VkKG1fd2luZG93T3B0aW9ucy51c2VPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZSk7CisKKyAgICBRQWN0aW9uKiBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YUFjdGlvbiA9IHRv
b2xzTWVudS0+YWRkQWN0aW9uKCJTZXQgT2ZmbGluZSBTdG9yYWdlIERlZmF1bHQgUXVvdGEgU2l6
ZSIsIHRoaXMsIFNMT1Qoc2V0T2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGEoKSkpOworICAgIG9m
ZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAg
b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGFBY3Rpb24tPnNldENoZWNrZWQobV93aW5kb3dPcHRp
b25zLm9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhU2l6ZSk7CisKKyAgICB0b29sc01lbnUtPmFk
ZFNlcGFyYXRvcigpOworCisgICAgUUFjdGlvbiogdXNlckFnZW50QWN0aW9uID0gdG9vbHNNZW51
LT5hZGRBY3Rpb24oIkNoYW5nZSBVc2VyIEFnZW50IiwgdGhpcywgU0xPVChzaG93VXNlckFnZW50
RGlhbG9nKCkpKTsKKyAgICB1c2VyQWdlbnRBY3Rpb24tPnNldFNob3J0Y3V0KFFLZXlTZXF1ZW5j
ZShRdDo6Q1RSTCB8IFF0OjpTSElGVCB8IFF0OjpLZXlfVSkpOworCisgICAgdG9vbHNNZW51LT5h
ZGRBY3Rpb24oIlNlbGVjdCBFbGVtZW50cy4uLiIsIHRoaXMsIFNMT1Qoc2VsZWN0RWxlbWVudHMo
KSkpOworCisgICAgdG9vbHNNZW51LT5hZGRBY3Rpb24oIkNsZWFyIHNlbGVjdGlvbiIsIHRoaXMs
IFNMT1QoY2xlYXJTZWxlY3Rpb24oKSkpOworCisgICAgUUFjdGlvbiogc2hvd0luc3BlY3RvckFj
dGlvbiA9IHRvb2xzTWVudS0+YWRkQWN0aW9uKCJTaG93IFdlYiBJbnNwZWN0b3IiLCBtX2luc3Bl
Y3RvciwgU0xPVChzZXRWaXNpYmxlKGJvb2wpKSwgUUtleVNlcXVlbmNlKFF0OjpDVFJMIHwgUXQ6
OkFMVCB8IFF0OjpLZXlfSSkpOworICAgIHNob3dJbnNwZWN0b3JBY3Rpb24tPnNldENoZWNrYWJs
ZSh0cnVlKTsKKyAgICBzaG93SW5zcGVjdG9yQWN0aW9uLT5jb25uZWN0KG1faW5zcGVjdG9yLCBT
SUdOQUwodmlzaWJsZUNoYW5nZWQoYm9vbCkpLCBTTE9UKHNldENoZWNrZWQoYm9vbCkpKTsKKyAg
ICB0b29sc01lbnUtPmFkZFNlcGFyYXRvcigpOworICAgIHRvb2xzTWVudS0+YWRkQWN0aW9uKCJM
b2FkIFVSTHMgZnJvbSBmaWxlIiwgdGhpcywgU0xPVChsb2FkVVJMTGlzdEZyb21GaWxlKCkpKTsK
KworICAgIC8vIEdyYXBoaWNzVmlldyBzdWIgbWVudS4KKyAgICBRQWN0aW9uKiB0b2dnbGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nID0gZ3JhcGhpY3NWaWV3TWVudS0+YWRkQWN0aW9uKCJUb2dnbGUg
QWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCB0aGlzLCBTTE9UKHRvZ2dsZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoYm9vbCkpKTsKKyAgICB0b2dnbGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nLT5zZXRD
aGVja2FibGUodHJ1ZSk7CisgICAgdG9nZ2xlQWNjZWxlcmF0ZWRDb21wb3NpdGluZy0+c2V0Q2hl
Y2tlZChzZXR0aW5ncy0+dGVzdEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKSk7CisgICAgdG9nZ2xlQWNjZWxlcmF0ZWRDb21wb3NpdGluZy0+c2V0
RW5hYmxlZChpc0dyYXBoaWNzQmFzZWQoKSk7CisgICAgdG9nZ2xlQWNjZWxlcmF0ZWRDb21wb3Np
dGluZy0+Y29ubmVjdCh0b2dnbGVHcmFwaGljc1ZpZXcsIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwg
U0xPVChzZXRFbmFibGVkKGJvb2wpKSk7CisKKyAgICBRQWN0aW9uKiB0b2dnbGVSZXNpemVzVG9D
b250ZW50cyA9IGdyYXBoaWNzVmlld01lbnUtPmFkZEFjdGlvbigiVG9nZ2xlIFJlc2l6ZXMgVG8g
Q29udGVudHMgTW9kZSIsIHRoaXMsIFNMT1QodG9nZ2xlUmVzaXplc1RvQ29udGVudHMoYm9vbCkp
KTsKKyAgICB0b2dnbGVSZXNpemVzVG9Db250ZW50cy0+c2V0Q2hlY2thYmxlKHRydWUpOworICAg
IHRvZ2dsZVJlc2l6ZXNUb0NvbnRlbnRzLT5zZXRDaGVja2VkKG1fd2luZG93T3B0aW9ucy5yZXNp
emVzVG9Db250ZW50cyk7CisgICAgdG9nZ2xlUmVzaXplc1RvQ29udGVudHMtPnNldEVuYWJsZWQo
aXNHcmFwaGljc0Jhc2VkKCkpOworICAgIHRvZ2dsZVJlc2l6ZXNUb0NvbnRlbnRzLT5jb25uZWN0
KHRvZ2dsZUdyYXBoaWNzVmlldywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLCBTTE9UKHNldEVuYWJs
ZWQoYm9vbCkpKTsKKworICAgIFFBY3Rpb24qIHRvZ2dsZVRpbGVkQmFja2luZ1N0b3JlID0gZ3Jh
cGhpY3NWaWV3TWVudS0+YWRkQWN0aW9uKCJUb2dnbGUgVGlsZWQgQmFja2luZyBTdG9yZSIsIHRo
aXMsIFNMT1QodG9nZ2xlVGlsZWRCYWNraW5nU3RvcmUoYm9vbCkpKTsKKyAgICB0b2dnbGVUaWxl
ZEJhY2tpbmdTdG9yZS0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHRvZ2dsZVRpbGVkQmFja2lu
Z1N0b3JlLT5zZXRDaGVja2VkKG1fd2luZG93T3B0aW9ucy51c2VUaWxlZEJhY2tpbmdTdG9yZSk7
CisgICAgdG9nZ2xlVGlsZWRCYWNraW5nU3RvcmUtPnNldEVuYWJsZWQoaXNHcmFwaGljc0Jhc2Vk
KCkpOworICAgIHRvZ2dsZVRpbGVkQmFja2luZ1N0b3JlLT5jb25uZWN0KHRvZ2dsZUdyYXBoaWNz
VmlldywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLCBTTE9UKHNldEVuYWJsZWQoYm9vbCkpKTsKKwor
I2lmbmRlZiBRVF9OT19PUEVOR0wKKyAgICBRQWN0aW9uKiB0b2dnbGVRR0xXaWRnZXRWaWV3cG9y
dCA9IGdyYXBoaWNzVmlld01lbnUtPmFkZEFjdGlvbigiVG9nZ2xlIHVzZSBvZiBRR0xXaWRnZXQg
Vmlld3BvcnQiLCB0aGlzLCBTTE9UKHRvZ2dsZVFHTFdpZGdldFZpZXdwb3J0KGJvb2wpKSk7Cisg
ICAgdG9nZ2xlUUdMV2lkZ2V0Vmlld3BvcnQtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dn
bGVRR0xXaWRnZXRWaWV3cG9ydC0+c2V0Q2hlY2tlZChtX3dpbmRvd09wdGlvbnMudXNlUUdMV2lk
Z2V0Vmlld3BvcnQpOworICAgIHRvZ2dsZVFHTFdpZGdldFZpZXdwb3J0LT5zZXRFbmFibGVkKGlz
R3JhcGhpY3NCYXNlZCgpKTsKKyAgICB0b2dnbGVRR0xXaWRnZXRWaWV3cG9ydC0+Y29ubmVjdCh0
b2dnbGVHcmFwaGljc1ZpZXcsIFNJR05BTCh0b2dnbGVkKGJvb2wpKSwgU0xPVChzZXRFbmFibGVk
KGJvb2wpKSk7CisjZW5kaWYKKworICAgIFFNZW51KiB2aWV3cG9ydFVwZGF0ZU1lbnUgPSBncmFw
aGljc1ZpZXdNZW51LT5hZGRNZW51KCJDaGFuZ2UgVmlld3BvcnQgVXBkYXRlIE1vZGUiKTsKKyAg
ICB2aWV3cG9ydFVwZGF0ZU1lbnUtPnNldEVuYWJsZWQoaXNHcmFwaGljc0Jhc2VkKCkpOworICAg
IHZpZXdwb3J0VXBkYXRlTWVudS0+Y29ubmVjdCh0b2dnbGVHcmFwaGljc1ZpZXcsIFNJR05BTCh0
b2dnbGVkKGJvb2wpKSwgU0xPVChzZXRFbmFibGVkKGJvb2wpKSk7CisKKyAgICBRQWN0aW9uKiBm
dWxsVXBkYXRlID0gdmlld3BvcnRVcGRhdGVNZW51LT5hZGRBY3Rpb24oIkZ1bGxWaWV3cG9ydFVw
ZGF0ZSIpOworICAgIGZ1bGxVcGRhdGUtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICBmdWxsVXBk
YXRlLT5zZXRDaGVja2VkKChtX3dpbmRvd09wdGlvbnMudmlld3BvcnRVcGRhdGVNb2RlID09IFFH
cmFwaGljc1ZpZXc6OkZ1bGxWaWV3cG9ydFVwZGF0ZSkgPyB0cnVlIDogZmFsc2UpOworCisgICAg
UUFjdGlvbiogbWluaW1hbFVwZGF0ZSA9IHZpZXdwb3J0VXBkYXRlTWVudS0+YWRkQWN0aW9uKCJN
aW5pbWFsVmlld3BvcnRVcGRhdGUiKTsKKyAgICBtaW5pbWFsVXBkYXRlLT5zZXRDaGVja2FibGUo
dHJ1ZSk7CisgICAgbWluaW1hbFVwZGF0ZS0+c2V0Q2hlY2tlZCgobV93aW5kb3dPcHRpb25zLnZp
ZXdwb3J0VXBkYXRlTW9kZSA9PSBRR3JhcGhpY3NWaWV3OjpNaW5pbWFsVmlld3BvcnRVcGRhdGUp
ID8gdHJ1ZSA6IGZhbHNlKTsKKworICAgIFFBY3Rpb24qIHNtYXJ0VXBkYXRlID0gdmlld3BvcnRV
cGRhdGVNZW51LT5hZGRBY3Rpb24oIlNtYXJ0Vmlld3BvcnRVcGRhdGUiKTsKKyAgICBzbWFydFVw
ZGF0ZS0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHNtYXJ0VXBkYXRlLT5zZXRDaGVja2VkKCht
X3dpbmRvd09wdGlvbnMudmlld3BvcnRVcGRhdGVNb2RlID09IFFHcmFwaGljc1ZpZXc6OlNtYXJ0
Vmlld3BvcnRVcGRhdGUpID8gdHJ1ZSA6IGZhbHNlKTsKKworICAgIFFBY3Rpb24qIGJvdW5kaW5n
UmVjdFVwZGF0ZSA9IHZpZXdwb3J0VXBkYXRlTWVudS0+YWRkQWN0aW9uKCJCb3VuZGluZ1JlY3RW
aWV3cG9ydFVwZGF0ZSIpOworICAgIGJvdW5kaW5nUmVjdFVwZGF0ZS0+c2V0Q2hlY2thYmxlKHRy
dWUpOworICAgIGJvdW5kaW5nUmVjdFVwZGF0ZS0+c2V0Q2hlY2tlZCgobV93aW5kb3dPcHRpb25z
LnZpZXdwb3J0VXBkYXRlTW9kZSA9PSBRR3JhcGhpY3NWaWV3OjpCb3VuZGluZ1JlY3RWaWV3cG9y
dFVwZGF0ZSkgPyB0cnVlIDogZmFsc2UpOworCisgICAgUUFjdGlvbiogbm9VcGRhdGUgPSB2aWV3
cG9ydFVwZGF0ZU1lbnUtPmFkZEFjdGlvbigiTm9WaWV3cG9ydFVwZGF0ZSIpOworICAgIG5vVXBk
YXRlLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgbm9VcGRhdGUtPnNldENoZWNrZWQoKG1fd2lu
ZG93T3B0aW9ucy52aWV3cG9ydFVwZGF0ZU1vZGUgPT0gUUdyYXBoaWNzVmlldzo6Tm9WaWV3cG9y
dFVwZGF0ZSkgPyB0cnVlIDogZmFsc2UpOworCisgICAgUVNpZ25hbE1hcHBlciogc2lnbmFsTWFw
cGVyID0gbmV3IFFTaWduYWxNYXBwZXIodmlld3BvcnRVcGRhdGVNZW51KTsKKyAgICBzaWduYWxN
YXBwZXItPnNldE1hcHBpbmcoZnVsbFVwZGF0ZSwgUUdyYXBoaWNzVmlldzo6RnVsbFZpZXdwb3J0
VXBkYXRlKTsKKyAgICBzaWduYWxNYXBwZXItPnNldE1hcHBpbmcobWluaW1hbFVwZGF0ZSwgUUdy
YXBoaWNzVmlldzo6TWluaW1hbFZpZXdwb3J0VXBkYXRlKTsKKyAgICBzaWduYWxNYXBwZXItPnNl
dE1hcHBpbmcoc21hcnRVcGRhdGUsIFFHcmFwaGljc1ZpZXc6OlNtYXJ0Vmlld3BvcnRVcGRhdGUp
OworICAgIHNpZ25hbE1hcHBlci0+c2V0TWFwcGluZyhib3VuZGluZ1JlY3RVcGRhdGUsIFFHcmFw
aGljc1ZpZXc6OkJvdW5kaW5nUmVjdFZpZXdwb3J0VXBkYXRlKTsKKyAgICBzaWduYWxNYXBwZXIt
PnNldE1hcHBpbmcobm9VcGRhdGUsIFFHcmFwaGljc1ZpZXc6Ok5vVmlld3BvcnRVcGRhdGUpOwor
CisgICAgY29ubmVjdChmdWxsVXBkYXRlLCBTSUdOQUwodHJpZ2dlcmVkKCkpLCBzaWduYWxNYXBw
ZXIsIFNMT1QobWFwKCkpKTsKKyAgICBjb25uZWN0KG1pbmltYWxVcGRhdGUsIFNJR05BTCh0cmln
Z2VyZWQoKSksIHNpZ25hbE1hcHBlciwgU0xPVChtYXAoKSkpOworICAgIGNvbm5lY3Qoc21hcnRV
cGRhdGUsIFNJR05BTCh0cmlnZ2VyZWQoKSksIHNpZ25hbE1hcHBlciwgU0xPVChtYXAoKSkpOwor
ICAgIGNvbm5lY3QoYm91bmRpbmdSZWN0VXBkYXRlLCBTSUdOQUwodHJpZ2dlcmVkKCkpLCBzaWdu
YWxNYXBwZXIsIFNMT1QobWFwKCkpKTsKKyAgICBjb25uZWN0KG5vVXBkYXRlLCBTSUdOQUwodHJp
Z2dlcmVkKCkpLCBzaWduYWxNYXBwZXIsIFNMT1QobWFwKCkpKTsKKworICAgIGNvbm5lY3Qoc2ln
bmFsTWFwcGVyLCBTSUdOQUwobWFwcGVkKGludCkpLCB0aGlzLCBTTE9UKGNoYW5nZVZpZXdwb3J0
VXBkYXRlTW9kZShpbnQpKSk7CisKKyAgICBRQWN0aW9uR3JvdXAqIHZpZXdwb3J0VXBkYXRlTW9k
ZUFjdGlvbnMgPSBuZXcgUUFjdGlvbkdyb3VwKHZpZXdwb3J0VXBkYXRlTWVudSk7CisgICAgdmll
d3BvcnRVcGRhdGVNb2RlQWN0aW9ucy0+YWRkQWN0aW9uKGZ1bGxVcGRhdGUpOworICAgIHZpZXdw
b3J0VXBkYXRlTW9kZUFjdGlvbnMtPmFkZEFjdGlvbihtaW5pbWFsVXBkYXRlKTsKKyAgICB2aWV3
cG9ydFVwZGF0ZU1vZGVBY3Rpb25zLT5hZGRBY3Rpb24oc21hcnRVcGRhdGUpOworICAgIHZpZXdw
b3J0VXBkYXRlTW9kZUFjdGlvbnMtPmFkZEFjdGlvbihib3VuZGluZ1JlY3RVcGRhdGUpOworICAg
IHZpZXdwb3J0VXBkYXRlTW9kZUFjdGlvbnMtPmFkZEFjdGlvbihub1VwZGF0ZSk7CisKKyAgICBn
cmFwaGljc1ZpZXdNZW51LT5hZGRTZXBhcmF0b3IoKTsKKworICAgIFFBY3Rpb24qIGZsaXBBbmlt
YXRlZCA9IGdyYXBoaWNzVmlld01lbnUtPmFkZEFjdGlvbigiQW5pbWF0ZWQgRmxpcCIpOworICAg
IGZsaXBBbmltYXRlZC0+Y29ubmVjdCh0b2dnbGVHcmFwaGljc1ZpZXcsIFNJR05BTCh0b2dnbGVk
KGJvb2wpKSwgU0xPVChzZXRFbmFibGVkKGJvb2wpKSk7CisgICAgZmxpcEFuaW1hdGVkLT5zZXRF
bmFibGVkKGlzR3JhcGhpY3NCYXNlZCgpKTsKKyAgICBjb25uZWN0KGZsaXBBbmltYXRlZCwgU0lH
TkFMKHRyaWdnZXJlZCgpKSwgU0xPVChhbmltYXRlZEZsaXAoKSkpOworCisgICAgUUFjdGlvbiog
ZmxpcFlBbmltYXRlZCA9IGdyYXBoaWNzVmlld01lbnUtPmFkZEFjdGlvbigiQW5pbWF0ZWQgWS1G
bGlwIik7CisgICAgZmxpcFlBbmltYXRlZC0+Y29ubmVjdCh0b2dnbGVHcmFwaGljc1ZpZXcsIFNJ
R05BTCh0b2dnbGVkKGJvb2wpKSwgU0xPVChzZXRFbmFibGVkKGJvb2wpKSk7CisgICAgZmxpcFlB
bmltYXRlZC0+c2V0RW5hYmxlZChpc0dyYXBoaWNzQmFzZWQoKSk7CisgICAgY29ubmVjdChmbGlw
WUFuaW1hdGVkLCBTSUdOQUwodHJpZ2dlcmVkKCkpLCBTTE9UKGFuaW1hdGVkWUZsaXAoKSkpOwor
CisgICAgUUFjdGlvbiogY2xvbmVXaW5kb3cgPSBncmFwaGljc1ZpZXdNZW51LT5hZGRBY3Rpb24o
IkNsb25lIFdpbmRvdyIsIHRoaXMsIFNMT1QoY2xvbmVXaW5kb3coKSkpOworICAgIGNsb25lV2lu
ZG93LT5jb25uZWN0KHRvZ2dsZUdyYXBoaWNzVmlldywgU0lHTkFMKHRvZ2dsZWQoYm9vbCkpLCBT
TE9UKHNldEVuYWJsZWQoYm9vbCkpKTsKKyAgICBjbG9uZVdpbmRvdy0+c2V0RW5hYmxlZChpc0dy
YXBoaWNzQmFzZWQoKSk7CisKKyAgICBncmFwaGljc1ZpZXdNZW51LT5hZGRTZXBhcmF0b3IoKTsK
KworICAgIFFBY3Rpb24qIHNob3dGUFMgPSBncmFwaGljc1ZpZXdNZW51LT5hZGRBY3Rpb24oIlNo
b3cgRlBTIiwgdGhpcywgU0xPVChzaG93RlBTKGJvb2wpKSk7CisgICAgc2hvd0ZQUy0+c2V0Q2hl
Y2thYmxlKHRydWUpOworICAgIHNob3dGUFMtPnNldEVuYWJsZWQoaXNHcmFwaGljc0Jhc2VkKCkp
OworICAgIHNob3dGUFMtPmNvbm5lY3QodG9nZ2xlR3JhcGhpY3NWaWV3LCBTSUdOQUwodG9nZ2xl
ZChib29sKSksIFNMT1Qoc2V0RW5hYmxlZChib29sKSkpOworICAgIHNob3dGUFMtPnNldENoZWNr
ZWQobV93aW5kb3dPcHRpb25zLnNob3dGcmFtZVJhdGUpOworCisgICAgUU1lbnUqIHNldHRpbmdz
TWVudSA9IG1lbnVCYXIoKS0+YWRkTWVudSgiJlNldHRpbmdzIik7CisKKyNpZiAhZGVmaW5lZChR
VF9OT19ORVRXT1JLRElTS0NBQ0hFKSAmJiAhZGVmaW5lZChRVF9OT19ERVNLVE9QU0VSVklDRVMp
CisgICAgUUFjdGlvbiogdG9nZ2xlRGlza0NhY2hlID0gc2V0dGluZ3NNZW51LT5hZGRBY3Rpb24o
IlVzZSBEaXNrIENhY2hlIiwgdGhpcywgU0xPVChzZXREaXNrQ2FjaGUoYm9vbCkpKTsKKyAgICB0
b2dnbGVEaXNrQ2FjaGUtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dnbGVEaXNrQ2FjaGUt
PnNldENoZWNrZWQobV93aW5kb3dPcHRpb25zLnVzZURpc2tDYWNoZSk7CisjZW5kaWYKKworICAg
IFFBY3Rpb24qIHRvZ2dsZUF1dG9Mb2FkSW1hZ2VzID0gc2V0dGluZ3NNZW51LT5hZGRBY3Rpb24o
IkRpc2FibGUgQXV0byBMb2FkIEltYWdlcyIsIHRoaXMsIFNMT1QodG9nZ2xlQXV0b0xvYWRJbWFn
ZXMoYm9vbCkpKTsKKyAgICB0b2dnbGVBdXRvTG9hZEltYWdlcy0+c2V0Q2hlY2thYmxlKHRydWUp
OworICAgIHRvZ2dsZUF1dG9Mb2FkSW1hZ2VzLT5zZXRDaGVja2VkKGZhbHNlKTsKKworICAgIFFB
Y3Rpb24qIHRvZ2dsZVBsdWdpbnMgPSBzZXR0aW5nc01lbnUtPmFkZEFjdGlvbigiRGlzYWJsZSBQ
bHVnaW5zIiwgdGhpcywgU0xPVCh0b2dnbGVQbHVnaW5zKGJvb2wpKSk7CisgICAgdG9nZ2xlUGx1
Z2lucy0+c2V0Q2hlY2thYmxlKHRydWUpOworICAgIHRvZ2dsZVBsdWdpbnMtPnNldENoZWNrZWQo
ZmFsc2UpOworCisgICAgUUFjdGlvbiogdG9nZ2xlU2Nyb2xsQW5pbWF0b3IgPSBzZXR0aW5nc01l
bnUtPmFkZEFjdGlvbigiRW5hYmxlIFNjcm9sbCBBbmltYXRvciIsIHRoaXMsIFNMT1QodG9nZ2xl
U2Nyb2xsQW5pbWF0b3IoYm9vbCkpKTsKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAg
ICB0b2dnbGVTY3JvbGxBbmltYXRvci0+c2V0Q2hlY2thYmxlKHRydWUpOworI2Vsc2UKKyAgICB0
b2dnbGVTY3JvbGxBbmltYXRvci0+c2V0Q2hlY2thYmxlKGZhbHNlKTsKKyNlbmRpZgorICAgIHRv
Z2dsZVNjcm9sbEFuaW1hdG9yLT5zZXRDaGVja2VkKGZhbHNlKTsKKworICAgIFFBY3Rpb24qIHRv
Z2dsZUphdmFTY3JpcHRFbmFibGVkID0gc2V0dGluZ3NNZW51LT5hZGRBY3Rpb24oIkVuYWJsZSBK
YXZhc2NyaXB0IiwgdGhpcywgU0xPVCh0b2dnbGVKYXZhU2NyaXB0RW5hYmxlZChib29sKSkpOwor
ICAgIHRvZ2dsZUphdmFTY3JpcHRFbmFibGVkLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgdG9n
Z2xlSmF2YVNjcmlwdEVuYWJsZWQtPnNldENoZWNrZWQoc2V0dGluZ3MtPnRlc3RBdHRyaWJ1dGUo
UVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5hYmxlZCkpOworCisgICAgUUFjdGlvbiogdG9nZ2xl
SW50ZXJydXB0aW5nSmF2YVNjcmlwdGVFbmFibGVkID0gc2V0dGluZ3NNZW51LT5hZGRBY3Rpb24o
IkVuYWJsZSBpbnRlcnJ1cHRpbmcganMgc2NyaXB0cyIsIHRoaXMsIFNMT1QodG9nZ2xlSW50ZXJy
dXB0aW5nSmF2YVNjcmlwdEVuYWJsZWQoYm9vbCkpKTsKKyAgICB0b2dnbGVJbnRlcnJ1cHRpbmdK
YXZhU2NyaXB0ZUVuYWJsZWQtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dnbGVJbnRlcnJ1
cHRpbmdKYXZhU2NyaXB0ZUVuYWJsZWQtPnNldENoZWNrZWQoZmFsc2UpOworCisgICAgUUFjdGlv
biogdG9nZ2xlSmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzID0gc2V0dGluZ3NNZW51LT5hZGRBY3Rp
b24oIkVuYWJsZSBqcyBwb3B1cCB3aW5kb3dzIiwgdGhpcywgU0xPVCh0b2dnbGVKYXZhc2NyaXB0
Q2FuT3BlbldpbmRvd3MoYm9vbCkpKTsKKyAgICB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRv
d3MtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRv
d3MtPnNldENoZWNrZWQoZmFsc2UpOworCisgICAgUUFjdGlvbiogdG9nZ2xlVXNlRGlza0Nvb2tp
ZXMgPSBzZXR0aW5nc01lbnUtPmFkZEFjdGlvbigiU2F2ZSBDb29raWVzIG9uIERpc2siLCB0aGlz
LCBTTE9UKHNldFVzZURpc2tDb29raWVzKGJvb2wpKSk7CisgICAgdG9nZ2xlVXNlRGlza0Nvb2tp
ZXMtPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICB0b2dnbGVVc2VEaXNrQ29va2llcy0+c2V0Q2hl
Y2tlZChtX3dpbmRvd09wdGlvbnMudXNlRGlza0Nvb2tpZXMpOworCisjaWZuZGVmIFFUX05PX0xJ
TkVFRElUCisgICAgbV9maW5kQmFyID0gbmV3IFFUb29sQmFyKCJGaW5kIiwgdGhpcyk7CisgICAg
YWRkVG9vbEJhcihRdDo6Qm90dG9tVG9vbEJhckFyZWEsIG1fZmluZEJhcik7CisKKyAgICBRVG9v
bEJ1dHRvbiogZmluZENsb3NlID0gbmV3IFFUb29sQnV0dG9uKG1fZmluZEJhcik7CisgICAgZmlu
ZENsb3NlLT5zZXRUZXh0KCJYIik7CisgICAgbV9saW5lRWRpdCA9IG5ldyBRTGluZUVkaXQobV9m
aW5kQmFyKTsKKyAgICBtX2xpbmVFZGl0LT5zZXRNYXhpbXVtV2lkdGgoMjAwKTsKKyAgICBRVG9v
bEJ1dHRvbiogZmluZFByZXZpb3VzID0gbmV3IFFUb29sQnV0dG9uKG1fZmluZEJhcik7CisgICAg
ZmluZFByZXZpb3VzLT5zZXRBcnJvd1R5cGUoUXQ6OkxlZnRBcnJvdyk7CisgICAgUVRvb2xCdXR0
b24qIGZpbmROZXh0ID0gbmV3IFFUb29sQnV0dG9uKG1fZmluZEJhcik7CisgICAgZmluZE5leHQt
PnNldEFycm93VHlwZShRdDo6UmlnaHRBcnJvdyk7CisgICAgUUNoZWNrQm94KiBmaW5kQ2FzZVNl
bnNpdGl2ZSA9IG5ldyBRQ2hlY2tCb3goIkNhc2UgU2Vuc2l0aXZlIiwgbV9maW5kQmFyKTsKKyAg
ICBRQ2hlY2tCb3gqIGZpbmRXcmFwQXJvdW5kID0gbmV3IFFDaGVja0JveCgiV3JhcCBBcm91bmQi
LCBtX2ZpbmRCYXIpOworICAgIFFDaGVja0JveCogZmluZEhpZ2hMaWdodEFsbCA9IG5ldyBRQ2hl
Y2tCb3goIkhpZ2hMaWdodCBBbGwiLCBtX2ZpbmRCYXIpOworCisgICAgUVNpZ25hbE1hcHBlciog
ZmluZFNpZ25hbE1hcHBlciA9IG5ldyBRU2lnbmFsTWFwcGVyKG1fZmluZEJhcik7CisgICAgZmlu
ZFNpZ25hbE1hcHBlci0+c2V0TWFwcGluZyhtX2xpbmVFZGl0LCBzX2ZpbmROb3JtYWxGbGFnKTsK
KyAgICBmaW5kU2lnbmFsTWFwcGVyLT5zZXRNYXBwaW5nKGZpbmRQcmV2aW91cywgUVdlYlBhZ2U6
OkZpbmRCYWNrd2FyZCk7CisgICAgZmluZFNpZ25hbE1hcHBlci0+c2V0TWFwcGluZyhmaW5kTmV4
dCwgc19maW5kTm9ybWFsRmxhZyk7CisgICAgZmluZFNpZ25hbE1hcHBlci0+c2V0TWFwcGluZyhm
aW5kQ2FzZVNlbnNpdGl2ZSwgUVdlYlBhZ2U6OkZpbmRDYXNlU2Vuc2l0aXZlbHkpOworICAgIGZp
bmRTaWduYWxNYXBwZXItPnNldE1hcHBpbmcoZmluZFdyYXBBcm91bmQsIFFXZWJQYWdlOjpGaW5k
V3JhcHNBcm91bmREb2N1bWVudCk7CisgICAgZmluZFNpZ25hbE1hcHBlci0+c2V0TWFwcGluZyhm
aW5kSGlnaExpZ2h0QWxsLCBRV2ViUGFnZTo6SGlnaGxpZ2h0QWxsT2NjdXJyZW5jZXMpOworCisg
ICAgY29ubmVjdChmaW5kQ2xvc2UsIFNJR05BTChjbGlja2VkKCkpLCB0aGlzLCBTTE9UKHNob3dG
aW5kQmFyKCkpKTsKKyAgICBjb25uZWN0KG1fbGluZUVkaXQsIFNJR05BTCh0ZXh0Q2hhbmdlZChj
b25zdCBRU3RyaW5nICYpKSwgZmluZFNpZ25hbE1hcHBlciwgU0xPVChtYXAoKSkpOworICAgIGNv
bm5lY3QoZmluZFByZXZpb3VzLCBTSUdOQUwocHJlc3NlZCgpKSwgZmluZFNpZ25hbE1hcHBlciwg
U0xPVChtYXAoKSkpOworICAgIGNvbm5lY3QoZmluZE5leHQsIFNJR05BTChwcmVzc2VkKCkpLCBm
aW5kU2lnbmFsTWFwcGVyLCBTTE9UKG1hcCgpKSk7CisgICAgY29ubmVjdChmaW5kQ2FzZVNlbnNp
dGl2ZSwgU0lHTkFMKHN0YXRlQ2hhbmdlZChpbnQpKSwgZmluZFNpZ25hbE1hcHBlciwgU0xPVCht
YXAoKSkpOworICAgIGNvbm5lY3QoZmluZFdyYXBBcm91bmQsIFNJR05BTChzdGF0ZUNoYW5nZWQo
aW50KSksIGZpbmRTaWduYWxNYXBwZXIsIFNMT1QobWFwKCkpKTsKKyAgICBjb25uZWN0KGZpbmRI
aWdoTGlnaHRBbGwsIFNJR05BTChzdGF0ZUNoYW5nZWQoaW50KSksIGZpbmRTaWduYWxNYXBwZXIs
IFNMT1QobWFwKCkpKTsKKworICAgIGNvbm5lY3QoZmluZFNpZ25hbE1hcHBlciwgU0lHTkFMKG1h
cHBlZChpbnQpKSwgdGhpcywgU0xPVChmaW5kKGludCkpKTsKKworICAgIG1fZmluZEJhci0+YWRk
V2lkZ2V0KGZpbmRDbG9zZSk7CisgICAgbV9maW5kQmFyLT5hZGRXaWRnZXQobV9saW5lRWRpdCk7
CisgICAgbV9maW5kQmFyLT5hZGRXaWRnZXQoZmluZFByZXZpb3VzKTsKKyAgICBtX2ZpbmRCYXIt
PmFkZFdpZGdldChmaW5kTmV4dCk7CisgICAgbV9maW5kQmFyLT5hZGRXaWRnZXQoZmluZENhc2VT
ZW5zaXRpdmUpOworICAgIG1fZmluZEJhci0+YWRkV2lkZ2V0KGZpbmRXcmFwQXJvdW5kKTsKKyAg
ICBtX2ZpbmRCYXItPmFkZFdpZGdldChmaW5kSGlnaExpZ2h0QWxsKTsKKyAgICBtX2ZpbmRCYXIt
PnNldE1vdmFibGUoZmFsc2UpOworICAgIG1fZmluZEJhci0+c2V0VmlzaWJsZShmYWxzZSk7Cisj
ZW5kaWYKKyNlbmRpZgorfQorCitib29sIExhdW5jaGVyV2luZG93Ojppc0dyYXBoaWNzQmFzZWQo
KSBjb25zdAoreworICAgIHJldHVybiBib29sKHFvYmplY3RfY2FzdDxRR3JhcGhpY3NWaWV3Kj4o
bV92aWV3KSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnNlbmRUb3VjaEV2ZW50KCkKK3sK
KyAgICBpZiAobV90b3VjaFBvaW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFFFdmVudDo6VHlwZSB0eXBlID0gUUV2ZW50OjpUb3VjaFVwZGF0ZTsKKyAgICBpZiAobV90b3Vj
aFBvaW50cy5zaXplKCkgPT0gMSkgeworICAgICAgICBpZiAobV90b3VjaFBvaW50c1swXS5zdGF0
ZSgpID09IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpCisgICAgICAgICAgICB0eXBlID0gUUV2ZW50
OjpUb3VjaEVuZDsKKyAgICAgICAgZWxzZSBpZiAobV90b3VjaFBvaW50c1swXS5zdGF0ZSgpID09
IFF0OjpUb3VjaFBvaW50UHJlc3NlZCkKKyAgICAgICAgICAgIHR5cGUgPSBRRXZlbnQ6OlRvdWNo
QmVnaW47CisgICAgfQorCisgICAgUVRvdWNoRXZlbnQgdG91Y2hFdih0eXBlKTsKKyAgICB0b3Vj
aEV2LnNldFRvdWNoUG9pbnRzKG1fdG91Y2hQb2ludHMpOworICAgIFFDb3JlQXBwbGljYXRpb246
OnNlbmRFdmVudChwYWdlKCksICZ0b3VjaEV2KTsKKworICAgIC8vIEFmdGVyIHNlbmRpbmcgdGhl
IGV2ZW50LCByZW1vdmUgYWxsIHRvdWNocG9pbnRzIHRoYXQgd2VyZSByZWxlYXNlZAorICAgIGlm
IChtX3RvdWNoUG9pbnRzWzBdLnN0YXRlKCkgPT0gUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZCkKKyAg
ICAgICAgbV90b3VjaFBvaW50cy5yZW1vdmVBdCgwKTsKKyAgICBpZiAobV90b3VjaFBvaW50cy5z
aXplKCkgPiAxICYmIG1fdG91Y2hQb2ludHNbMV0uc3RhdGUoKSA9PSBRdDo6VG91Y2hQb2ludFJl
bGVhc2VkKQorICAgICAgICBtX3RvdWNoUG9pbnRzLnJlbW92ZUF0KDEpOworfQorCitib29sIExh
dW5jaGVyV2luZG93OjpldmVudEZpbHRlcihRT2JqZWN0KiBvYmosIFFFdmVudCogZXZlbnQpCit7
CisgICAgLy8gSWYgY2xpY2sgcG9zIGlzIHRoZSBib3R0b20gcmlnaHQgY29ybmVyIChzcXVhcmUg
d2l0aCBzaXplIGRlZmluZWQgYnkgZ0V4aXRDbGlja0FyZWEpCisgICAgLy8gYW5kIHRoZSB3aW5k
b3cgaXMgb24gRnVsbFNjcmVlbiwgdGhlIHdpbmRvdyBtdXN0IHJldHVybiB0byBpdHMgb3JpZ2lu
YWwgc3RhdGUuCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblJl
bGVhc2UpIHsKKyAgICAgICAgUU1vdXNlRXZlbnQqIGV2ID0gc3RhdGljX2Nhc3Q8UU1vdXNlRXZl
bnQqPihldmVudCk7CisgICAgICAgIGlmICh3aW5kb3dTdGF0ZSgpID09IFF0OjpXaW5kb3dGdWxs
U2NyZWVuCisgICAgICAgICAgICAmJiBldi0+cG9zKCkueCgpID4gKHdpZHRoKCkgLSBnRXhpdENs
aWNrQXJlYSkKKyAgICAgICAgICAgICYmIGV2LT5wb3MoKS55KCkgPiAoaGVpZ2h0KCkgLSBnRXhp
dENsaWNrQXJlYSkpIHsKKworICAgICAgICAgICAgZW1pdCBlbnRlcmVkRnVsbFNjcmVlbk1vZGUo
ZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtX3RvdWNoTW9ja2luZykKKyAg
ICAgICAgcmV0dXJuIFFPYmplY3Q6OmV2ZW50RmlsdGVyKG9iaiwgZXZlbnQpOworCisgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzCisgICAgICAgIHx8IGV2
ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UKKyAgICAgICAgfHwgZXZl
bnQtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uRGJsQ2xpY2sKKyAgICAgICAgfHwgZXZl
bnQtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlTW92ZSkgeworCisgICAgICAgIFFNb3VzZUV2ZW50
KiBldiA9IHN0YXRpY19jYXN0PFFNb3VzZUV2ZW50Kj4oZXZlbnQpOworICAgICAgICBpZiAoZXYt
PnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlTW92ZQorICAgICAgICAgICAgJiYgIShldi0+YnV0dG9u
cygpICYgUXQ6OkxlZnRCdXR0b24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50IHRvdWNoUG9pbnQ7CisgICAgICAgIHRvdWNoUG9p
bnQuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRNb3ZlZCk7CisgICAgICAgIGlmICgoZXYtPnR5cGUo
KSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MKKyAgICAgICAgICAgICB8fCBldi0+dHlwZSgp
ID09IFFFdmVudDo6TW91c2VCdXR0b25EYmxDbGljaykpCisgICAgICAgICAgICB0b3VjaFBvaW50
LnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UHJlc3NlZCk7CisgICAgICAgIGVsc2UgaWYgKGV2LT50
eXBlKCkgPT0gUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UpCisgICAgICAgICAgICB0b3VjaFBv
aW50LnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpOworCisgICAgICAgIHRvdWNoUG9p
bnQuc2V0SWQoMCk7CisgICAgICAgIHRvdWNoUG9pbnQuc2V0U2NyZWVuUG9zKGV2LT5nbG9iYWxQ
b3MoKSk7CisgICAgICAgIHRvdWNoUG9pbnQuc2V0UG9zKGV2LT5wb3MoKSk7CisgICAgICAgIHRv
dWNoUG9pbnQuc2V0UHJlc3N1cmUoMSk7CisKKyAgICAgICAgLy8gSWYgdGhlIHBvaW50IGFscmVh
ZHkgZXhpc3RzLCB1cGRhdGUgaXQuIE90aGVyd2lzZSBjcmVhdGUgaXQuCisgICAgICAgIGlmICht
X3RvdWNoUG9pbnRzLnNpemUoKSA+IDAgJiYgIW1fdG91Y2hQb2ludHNbMF0uaWQoKSkKKyAgICAg
ICAgICAgIG1fdG91Y2hQb2ludHNbMF0gPSB0b3VjaFBvaW50OworICAgICAgICBlbHNlIGlmICht
X3RvdWNoUG9pbnRzLnNpemUoKSA+IDEgJiYgIW1fdG91Y2hQb2ludHNbMV0uaWQoKSkKKyAgICAg
ICAgICAgIG1fdG91Y2hQb2ludHNbMV0gPSB0b3VjaFBvaW50OworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZCh0b3VjaFBvaW50KTsKKworICAgICAgICBzZW5k
VG91Y2hFdmVudCgpOworICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6Oktl
eVByZXNzCisgICAgICAgICYmIHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGV2ZW50KS0+a2V5KCkg
PT0gUXQ6OktleV9GCisgICAgICAgICYmIHN0YXRpY19jYXN0PFFLZXlFdmVudCo+KGV2ZW50KS0+
bW9kaWZpZXJzKCkgPT0gUXQ6OkNvbnRyb2xNb2RpZmllcikgeworCisgICAgICAgIC8vIElmIHRo
ZSBrZXlib2FyZCBwb2ludCBpcyBhbHJlYWR5IHByZXNzZWQsIHJlbGVhc2UgaXQuCisgICAgICAg
IC8vIE90aGVyd2lzZSBjcmVhdGUgaXQgYW5kIGFwcGVuZCB0byBtX3RvdWNoUG9pbnRzLgorICAg
ICAgICBpZiAobV90b3VjaFBvaW50cy5zaXplKCkgPiAwICYmIG1fdG91Y2hQb2ludHNbMF0uaWQo
KSA9PSAxKSB7CisgICAgICAgICAgICBtX3RvdWNoUG9pbnRzWzBdLnNldFN0YXRlKFF0OjpUb3Vj
aFBvaW50UmVsZWFzZWQpOworICAgICAgICAgICAgc2VuZFRvdWNoRXZlbnQoKTsKKyAgICAgICAg
fSBlbHNlIGlmIChtX3RvdWNoUG9pbnRzLnNpemUoKSA+IDEgJiYgbV90b3VjaFBvaW50c1sxXS5p
ZCgpID09IDEpIHsKKyAgICAgICAgICAgIG1fdG91Y2hQb2ludHNbMV0uc2V0U3RhdGUoUXQ6OlRv
dWNoUG9pbnRSZWxlYXNlZCk7CisgICAgICAgICAgICBzZW5kVG91Y2hFdmVudCgpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQgdG91Y2hQb2lu
dDsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRQcmVzc2Vk
KTsKKyAgICAgICAgICAgIHRvdWNoUG9pbnQuc2V0SWQoMSk7CisgICAgICAgICAgICB0b3VjaFBv
aW50LnNldFNjcmVlblBvcyhRQ3Vyc29yOjpwb3MoKSk7CisgICAgICAgICAgICB0b3VjaFBvaW50
LnNldFBvcyhtX3ZpZXctPm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpKTsKKyAgICAgICAg
ICAgIHRvdWNoUG9pbnQuc2V0UHJlc3N1cmUoMSk7CisgICAgICAgICAgICBtX3RvdWNoUG9pbnRz
LmFwcGVuZCh0b3VjaFBvaW50KTsKKyAgICAgICAgICAgIHNlbmRUb3VjaEV2ZW50KCk7CisKKyAg
ICAgICAgICAgIC8vIEFmdGVyIHNlbmRpbmcgdGhlIGV2ZW50LCBjaGFuZ2UgdGhlIHRvdWNocG9p
bnQgc3RhdGUgdG8gc3RhdGlvbmFyeQorICAgICAgICAgICAgbV90b3VjaFBvaW50cy5sYXN0KCku
c2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6bG9hZFN0YXJ0ZWQo
KQoreworICAgIG1fdmlldy0+c2V0Rm9jdXMoUXQ6Ok90aGVyRm9jdXNSZWFzb24pOworfQorCit2
b2lkIExhdW5jaGVyV2luZG93Ojpsb2FkRmluaXNoZWQoKQoreworICAgIFFVcmwgdXJsID0gcGFn
ZSgpLT5tYWluRnJhbWUoKS0+dXJsKCk7CisgICAgYWRkQ29tcGxldGVyRW50cnkodXJsKTsKKyAg
ICBpZiAobV9pbnB1dFVybC5pc0VtcHR5KCkpCisgICAgICAgIHNldEFkZHJlc3NVcmwodXJsLnRv
U3RyaW5nKFFVcmw6OlJlbW92ZVVzZXJJbmZvKSk7CisgICAgZWxzZSB7CisgICAgICAgIHNldEFk
ZHJlc3NVcmwobV9pbnB1dFVybCk7CisgICAgICAgIG1faW5wdXRVcmwgPSBRU3RyaW5nKCk7Cisg
ICAgfQorfQorCit2b2lkIExhdW5jaGVyV2luZG93OjpzaG93TGlua0hvdmVyKGNvbnN0IFFTdHJp
bmcgJmxpbmssIGNvbnN0IFFTdHJpbmcgJnRvb2xUaXApCit7CisgICAgc3RhdHVzQmFyKCktPnNo
b3dNZXNzYWdlKGxpbmspOworI2lmbmRlZiBRVF9OT19UT09MVElQCisgICAgaWYgKCF0b29sVGlw
LmlzRW1wdHkoKSkKKyAgICAgICAgUVRvb2xUaXA6OnNob3dUZXh0KFFDdXJzb3I6OnBvcygpLCB0
b29sVGlwKTsKKyNlbmRpZgorfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp6b29tQW5pbWF0aW9u
RmluaXNoZWQoKQoreworICAgIGlmICghaXNHcmFwaGljc0Jhc2VkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBRR3JhcGhpY3NXZWJWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0dyYXBo
aWNzQmFzZWQqPihtX3ZpZXcpLT5ncmFwaGljc1dlYlZpZXcoKTsKKyAgICB2aWV3LT5zZXRUaWxl
ZEJhY2tpbmdTdG9yZUZyb3plbihmYWxzZSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmFw
cGx5Wm9vbSgpCit7CisjaWZuZGVmIFFUX05PX0FOSU1BVElPTgorICAgIGlmIChpc0dyYXBoaWNz
QmFzZWQoKSAmJiBwYWdlKCktPnNldHRpbmdzKCktPnRlc3RBdHRyaWJ1dGUoUVdlYlNldHRpbmdz
OjpUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQpKSB7CisgICAgICAgIFFHcmFwaGljc1dlYlZpZXcq
IHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3R3JhcGhpY3NCYXNlZCo+KG1fdmlldyktPmdyYXBo
aWNzV2ViVmlldygpOworICAgICAgICB2aWV3LT5zZXRUaWxlZEJhY2tpbmdTdG9yZUZyb3plbih0
cnVlKTsKKyAgICAgICAgaWYgKCFtX3pvb21BbmltYXRpb24pIHsKKyAgICAgICAgICAgIG1fem9v
bUFuaW1hdGlvbiA9IG5ldyBRUHJvcGVydHlBbmltYXRpb24odmlldywgInNjYWxlIik7CisgICAg
ICAgICAgICBtX3pvb21BbmltYXRpb24tPnNldFN0YXJ0VmFsdWUodmlldy0+c2NhbGUoKSk7Cisg
ICAgICAgICAgICBjb25uZWN0KG1fem9vbUFuaW1hdGlvbiwgU0lHTkFMKGZpbmlzaGVkKCkpLCB0
aGlzLCBTTE9UKHpvb21BbmltYXRpb25GaW5pc2hlZCgpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX3pvb21BbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgICAgIG1fem9vbUFu
aW1hdGlvbi0+c2V0U3RhcnRWYWx1ZShtX3pvb21BbmltYXRpb24tPmN1cnJlbnRWYWx1ZSgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIG1fem9vbUFuaW1hdGlvbi0+c2V0RHVyYXRpb24oMzAwKTsK
KyAgICAgICAgbV96b29tQW5pbWF0aW9uLT5zZXRFbmRWYWx1ZShxcmVhbChtX2N1cnJlbnRab29t
KSAvIDEwMC4pOworICAgICAgICBtX3pvb21BbmltYXRpb24tPnN0YXJ0KCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBwYWdlKCktPm1haW5GcmFtZSgpLT5zZXRab29tRmFj
dG9yKHFyZWFsKG1fY3VycmVudFpvb20pIC8gMTAwLjApOworfQorCit2b2lkIExhdW5jaGVyV2lu
ZG93Ojp6b29tSW4oKQoreworICAgIGludCBpID0gbV96b29tTGV2ZWxzLmluZGV4T2YobV9jdXJy
ZW50Wm9vbSk7CisgICAgUV9BU1NFUlQoaSA+PSAwKTsKKyAgICBpZiAoaSA8IG1fem9vbUxldmVs
cy5jb3VudCgpIC0gMSkKKyAgICAgICAgbV9jdXJyZW50Wm9vbSA9IG1fem9vbUxldmVsc1tpICsg
MV07CisKKyAgICBhcHBseVpvb20oKTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6em9vbU91
dCgpCit7CisgICAgaW50IGkgPSBtX3pvb21MZXZlbHMuaW5kZXhPZihtX2N1cnJlbnRab29tKTsK
KyAgICBRX0FTU0VSVChpID49IDApOworICAgIGlmIChpID4gMCkKKyAgICAgICAgbV9jdXJyZW50
Wm9vbSA9IG1fem9vbUxldmVsc1tpIC0gMV07CisKKyAgICBhcHBseVpvb20oKTsKK30KKwordm9p
ZCBMYXVuY2hlcldpbmRvdzo6cmVzZXRab29tKCkKK3sKKyAgICBtX2N1cnJlbnRab29tID0gMTAw
OworICAgIGFwcGx5Wm9vbSgpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp0b2dnbGVab29t
VGV4dE9ubHkoYm9vbCBiKQoreworICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRl
KFFXZWJTZXR0aW5nczo6Wm9vbVRleHRPbmx5LCBiKTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRv
dzo6cHJpbnQoKQoreworI2lmICFkZWZpbmVkKFFUX05PX1BSSU5UUFJFVklFV0RJQUxPRykgJiYg
SEFWRShRVFBSSU5UU1VQUE9SVCkKKyAgICBRUHJpbnRQcmV2aWV3RGlhbG9nIGRsZyh0aGlzKTsK
KyAgICBjb25uZWN0KCZkbGcsIFNJR05BTChwYWludFJlcXVlc3RlZChRUHJpbnRlciopKSwKKyAg
ICAgICAgICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCksIFNMT1QocHJpbnQoUVByaW50ZXIqKSkpOwor
ICAgIGRsZy5leGVjKCk7CisjZW5kaWYKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6c2NyZWVu
c2hvdCgpCit7CisgICAgUVBpeG1hcCBwaXhtYXAgPSBRUGl4bWFwOjpncmFiV2lkZ2V0KG1fdmll
dyk7CisgICAgUUxhYmVsKiBsYWJlbCA9IDA7CisgICAgbGFiZWwgPSBuZXcgUUxhYmVsOworICAg
IGxhYmVsLT5zZXRBdHRyaWJ1dGUoUXQ6OldBX0RlbGV0ZU9uQ2xvc2UpOworICAgIGxhYmVsLT5z
ZXRXaW5kb3dUaXRsZSgiU2NyZWVuc2hvdCAtIFByZXZpZXciKTsKKyAgICBsYWJlbC0+c2V0UGl4
bWFwKHBpeG1hcCk7CisgICAgbGFiZWwtPnNob3coKTsKKworI2lmbmRlZiBRVF9OT19GSUxFRElB
TE9HCisgICAgUVN0cmluZyBmaWxlTmFtZSA9IFFGaWxlRGlhbG9nOjpnZXRTYXZlRmlsZU5hbWUo
bGFiZWwsICJTY3JlZW5zaG90Iik7CisgICAgaWYgKCFmaWxlTmFtZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgcGl4bWFwLnNhdmUoZmlsZU5hbWUsICJwbmciKTsKKyAgICAgICAgaWYgKGxhYmVsKQor
ICAgICAgICAgICAgbGFiZWwtPnNldFdpbmRvd1RpdGxlKFFTdHJpbmcoIlNjcmVlbnNob3QgLSBT
YXZlZCBhdCAlMSIpLmFyZyhmaWxlTmFtZSkpOworICAgIH0KKyNlbmRpZgorCisjaWZuZGVmIFFU
X05PX09QRU5HTAorICAgIHRvZ2dsZVFHTFdpZGdldFZpZXdwb3J0KG1fd2luZG93T3B0aW9ucy51
c2VRR0xXaWRnZXRWaWV3cG9ydCk7CisjZW5kaWYKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6
c2V0RWRpdGFibGUoYm9vbCBvbikKK3sKKyAgICBwYWdlKCktPnNldENvbnRlbnRFZGl0YWJsZShv
bik7CisjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCisgICAgbV9mb3JtYXRNZW51QWN0aW9uLT5zZXRW
aXNpYmxlKG9uKTsKKyNlbmRpZgorfQorCisvKgordm9pZCBMYXVuY2hlcldpbmRvdzo6ZHVtcFBs
dWdpbnMoKSB7CisgICAgUUxpc3Q8UVdlYlBsdWdpbkluZm8+IHBsdWdpbnMgPSBRV2ViU2V0dGlu
Z3M6OnBsdWdpbkRhdGFiYXNlKCktPnBsdWdpbnMoKTsKKyAgICBmb3JlYWNoIChjb25zdCBRV2Vi
UGx1Z2luSW5mbyBwbHVnaW4sIHBsdWdpbnMpIHsKKyAgICAgICAgcURlYnVnKCkgPDwgIlBsdWdp
bjoiIDw8IHBsdWdpbi5uYW1lKCk7CisgICAgICAgIGZvcmVhY2ggKGNvbnN0IFFXZWJQbHVnaW5J
bmZvOjpNaW1lVHlwZSBtaW1lLCBwbHVnaW4ubWltZVR5cGVzKCkpIHsKKyAgICAgICAgICAgIHFE
ZWJ1ZygpIDw8ICIgICAiIDw8IG1pbWUubmFtZTsKKyAgICAgICAgfQorICAgIH0KK30KKyovCisK
K3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmR1bXBIdG1sKCkKK3sKKyAgICBxRGVidWcoKSA8PCAiSFRN
TDogIiA8PCBwYWdlKCktPm1haW5GcmFtZSgpLT50b0h0bWwoKTsKK30KKwordm9pZCBMYXVuY2hl
cldpbmRvdzo6c2VsZWN0RWxlbWVudHMoKQoreworI2lmbmRlZiBRVF9OT19JTlBVVERJQUxPRwor
ICAgIGJvb2wgb2s7CisgICAgUVN0cmluZyBzdHIgPSBRSW5wdXREaWFsb2c6OmdldFRleHQodGhp
cywgIlNlbGVjdCBlbGVtZW50cyIsICJDaG9vc2UgZWxlbWVudHMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFMaW5lRWRpdDo6Tm9ybWFsLCAiYSIsICZvayk7CisK
KyAgICBpZiAob2sgJiYgIXN0ci5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2xlYXJTZWxlY3Rpb24o
KTsKKyAgICAgICAgUVdlYkVsZW1lbnRDb2xsZWN0aW9uIHJlc3VsdCA9ICBwYWdlKCktPm1haW5G
cmFtZSgpLT5maW5kQWxsRWxlbWVudHMoc3RyKTsKKyAgICAgICAgZm9yZWFjaCAoUVdlYkVsZW1l
bnQgZSwgcmVzdWx0KSB7CisgICAgICAgICAgICBIaWdobGlnaHRlZEVsZW1lbnQgZWwgPSB7IGUs
IGUuc3R5bGVQcm9wZXJ0eSgiYmFja2dyb3VuZC1jb2xvciIsIFFXZWJFbGVtZW50OjpJbmxpbmVT
dHlsZSkgfTsKKyAgICAgICAgICAgIG1faGlnaGxpZ2h0ZWRFbGVtZW50cy5hcHBlbmQoZWwpOwor
ICAgICAgICAgICAgZS5zZXRTdHlsZVByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9yIiwgInllbGxv
dyIpOworICAgICAgICB9CisgICAgICAgIHN0YXR1c0JhcigpLT5zaG93TWVzc2FnZShRU3RyaW5n
KCIlMSBlbGVtZW50KHMpIHNlbGVjdGVkIikuYXJnKHJlc3VsdC5jb3VudCgpKSwgNTAwMCk7Cisg
ICAgfQorI2VuZGlmCit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmNsZWFyU2VsZWN0aW9uKCkK
K3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faGlnaGxpZ2h0ZWRFbGVtZW50cy5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9oaWdobGlnaHRlZEVsZW1lbnRzW2ldLm1fZWxlbWVudC5zZXRTdHls
ZVByb3BlcnR5KCJiYWNrZ3JvdW5kLWNvbG9yIiwgbV9oaWdobGlnaHRlZEVsZW1lbnRzW2ldLm1f
cHJldmlvdXNTdHlsZSk7CisgICAgbV9oaWdobGlnaHRlZEVsZW1lbnRzLmNsZWFyKCk7Cit9CisK
K3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnNldERpc2tDYWNoZShib29sIGVuYWJsZSkKK3sKKyNpZiAh
ZGVmaW5lZChRVF9OT19ORVRXT1JLRElTS0NBQ0hFKSAmJiAhZGVmaW5lZChRVF9OT19ERVNLVE9Q
U0VSVklDRVMpCisgICAgbV93aW5kb3dPcHRpb25zLnVzZURpc2tDYWNoZSA9IGVuYWJsZTsKKyAg
ICBRTmV0d29ya0Rpc2tDYWNoZSogY2FjaGUgPSAwOworICAgIGlmIChlbmFibGUpIHsKKyAgICAg
ICAgY2FjaGUgPSBuZXcgUU5ldHdvcmtEaXNrQ2FjaGUoKTsKKyAgICAgICAgUVN0cmluZyBjYWNo
ZUxvY2F0aW9uID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0
aHM6OkNhY2hlTG9jYXRpb24pOworICAgICAgICBjYWNoZS0+c2V0Q2FjaGVEaXJlY3RvcnkoY2Fj
aGVMb2NhdGlvbik7CisgICAgfQorICAgIHBhZ2UoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+
c2V0Q2FjaGUoY2FjaGUpOworI2VuZGlmCit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnNldFRv
dWNoTW9ja2luZyhib29sIG9uKQoreworICAgIG1fdG91Y2hNb2NraW5nID0gb247Cit9CisKK3Zv
aWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZVdlYlZpZXcoYm9vbCBncmFwaGljc0Jhc2VkKQorewor
ICAgIG1fd2luZG93T3B0aW9ucy51c2VHcmFwaGljc1ZpZXcgPSBncmFwaGljc0Jhc2VkOworICAg
IGluaXRpYWxpemVWaWV3KCk7CisjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCisgICAgbWVudUJhcigp
LT5jbGVhcigpOworI2VuZGlmCisgICAgY3JlYXRlQ2hyb21lKCk7Cit9CisKK3ZvaWQgTGF1bmNo
ZXJXaW5kb3c6OnRvZ2dsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCB0b2dnbGUpCit7Cisg
ICAgbV93aW5kb3dPcHRpb25zLnVzZUNvbXBvc2l0aW5nID0gdG9nZ2xlOworICAgIHBhZ2UoKS0+
c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQsIHRvZ2dsZSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZVRp
bGVkQmFja2luZ1N0b3JlKGJvb2wgdG9nZ2xlKQoreworICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3RvcmVFbmFibGVkLCB0b2dn
bGUpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp0b2dnbGVSZXNpemVzVG9Db250ZW50cyhi
b29sIHRvZ2dsZSkKK3sKKyAgICBtX3dpbmRvd09wdGlvbnMucmVzaXplc1RvQ29udGVudHMgPSB0
b2dnbGU7CisgICAgc3RhdGljX2Nhc3Q8V2ViVmlld0dyYXBoaWNzQmFzZWQqPihtX3ZpZXcpLT5z
ZXRSZXNpemVzVG9Db250ZW50cyh0b2dnbGUpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp0
b2dnbGVXZWJHTChib29sIHRvZ2dsZSkKK3sKKyAgICBtX3dpbmRvd09wdGlvbnMudXNlV2ViR0wg
PSB0b2dnbGU7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRp
bmdzOjpXZWJHTEVuYWJsZWQsIHRvZ2dsZSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnRv
Z2dsZVdlYkF1ZGlvKGJvb2wgdG9nZ2xlKQoreworICAgIG1fd2luZG93T3B0aW9ucy51c2VXZWJB
dWRpbyA9IHRvZ2dsZTsKKyAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OldlYkF1ZGlvRW5hYmxlZCwgdG9nZ2xlKTsKK30KKwordm9pZCBMYXVuY2hlcldp
bmRvdzo6YW5pbWF0ZWRGbGlwKCkKK3sKKyAgICBxb2JqZWN0X2Nhc3Q8V2ViVmlld0dyYXBoaWNz
QmFzZWQqPihtX3ZpZXcpLT5hbmltYXRlZEZsaXAoKTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRv
dzo6YW5pbWF0ZWRZRmxpcCgpCit7CisgICAgcW9iamVjdF9jYXN0PFdlYlZpZXdHcmFwaGljc0Jh
c2VkKj4obV92aWV3KS0+YW5pbWF0ZWRZRmxpcCgpOworfQordm9pZCBMYXVuY2hlcldpbmRvdzo6
dG9nZ2xlU3BhdGlhbE5hdmlnYXRpb24oYm9vbCBiKQoreworICAgIHBhZ2UoKS0+c2V0dGluZ3Mo
KS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBi
KTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6dG9nZ2xlRnVsbFNjcmVlbk1vZGUoYm9vbCBl
bmFibGUpCit7CisgICAgYm9vbCBhbHJlYWR5RW5hYmxlZCA9IHdpbmRvd1N0YXRlKCkgJiBRdDo6
V2luZG93RnVsbFNjcmVlbjsKKyAgICBpZiAoZW5hYmxlIF4gYWxyZWFkeUVuYWJsZWQpCisgICAg
ICAgIHNldFdpbmRvd1N0YXRlKHdpbmRvd1N0YXRlKCkgXiBRdDo6V2luZG93RnVsbFNjcmVlbik7
Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZUZyYW1lRmxhdHRlbmluZyhib29sIHRv
Z2dsZSkKK3sKKyAgICBtX3dpbmRvd09wdGlvbnMudXNlRnJhbWVGbGF0dGVuaW5nID0gdG9nZ2xl
OworICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RnJh
bWVGbGF0dGVuaW5nRW5hYmxlZCwgdG9nZ2xlKTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6
dG9nZ2xlSmF2YVNjcmlwdEVuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgcGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5hYmxlZCwgZW5h
YmxlKTsKK30KKwordm9pZCBMYXVuY2hlcldpbmRvdzo6dG9nZ2xlSW50ZXJydXB0aW5nSmF2YVNj
cmlwdEVuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgcGFnZSgpLT5zZXRJbnRlcnJ1cHRpbmdK
YXZhU2NyaXB0RW5hYmxlZChlbmFibGUpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp0b2dn
bGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MoYm9vbCBlbmFibGUpCit7CisgICAgcGFnZSgpLT5z
ZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuT3Blbldp
bmRvd3MsIGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnNldFVzZURpc2tDb29r
aWVzKGJvb2wgZW5hYmxlKQoreworICAgIHRlc3RCcm93c2VyQ29va2llSmFySW5zdGFuY2UoKS0+
c2V0RGlza1N0b3JhZ2VFbmFibGVkKGVuYWJsZSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6
OmNsZWFyQ29va2llcygpCit7CisgICAgdGVzdEJyb3dzZXJDb29raWVKYXJJbnN0YW5jZSgpLT5y
ZXNldCgpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp0b2dnbGVBdXRvTG9hZEltYWdlcyhi
b29sIGVuYWJsZSkKK3sKKyAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OkF1dG9Mb2FkSW1hZ2VzLCAhZW5hYmxlKTsKK30KKwordm9pZCBMYXVuY2hlcldp
bmRvdzo6dG9nZ2xlUGx1Z2lucyhib29sIGVuYWJsZSkKK3sKKyAgICBwYWdlKCktPnNldHRpbmdz
KCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBsdWdpbnNFbmFibGVkLCAhZW5hYmxlKTsK
K30KKworI2lmbmRlZiBRVF9OT19PUEVOR0wKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZVFH
TFdpZGdldFZpZXdwb3J0KGJvb2wgZW5hYmxlKQoreworICAgIGlmICghaXNHcmFwaGljc0Jhc2Vk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2luZG93T3B0aW9ucy51c2VRR0xXaWRnZXRW
aWV3cG9ydCA9IGVuYWJsZTsKKyAgICBXZWJWaWV3R3JhcGhpY3NCYXNlZCogdmlldyA9IHN0YXRp
Y19jYXN0PFdlYlZpZXdHcmFwaGljc0Jhc2VkKj4obV92aWV3KTsKKworICAgIHZpZXctPnNldFZp
ZXdwb3J0KGVuYWJsZSA/IG5ldyBRR0xXaWRnZXQoKSA6IDApOworfQorI2VuZGlmCisKK3ZvaWQg
TGF1bmNoZXJXaW5kb3c6OmNoYW5nZVZpZXdwb3J0VXBkYXRlTW9kZShpbnQgbW9kZSkKK3sKKyAg
ICBtX3dpbmRvd09wdGlvbnMudmlld3BvcnRVcGRhdGVNb2RlID0gUUdyYXBoaWNzVmlldzo6Vmll
d3BvcnRVcGRhdGVNb2RlKG1vZGUpOworCisgICAgaWYgKCFpc0dyYXBoaWNzQmFzZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgV2ViVmlld0dyYXBoaWNzQmFzZWQqIHZpZXcgPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3R3JhcGhpY3NCYXNlZCo+KG1fdmlldyk7CisgICAgdmlldy0+c2V0Vmlld3Bv
cnRVcGRhdGVNb2RlKG1fd2luZG93T3B0aW9ucy52aWV3cG9ydFVwZGF0ZU1vZGUpOworfQorCit2
b2lkIExhdW5jaGVyV2luZG93OjpzaG93RlBTKGJvb2wgZW5hYmxlKQoreworICAgIGlmICghaXNH
cmFwaGljc0Jhc2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2luZG93T3B0aW9ucy5z
aG93RnJhbWVSYXRlID0gZW5hYmxlOworICAgIFdlYlZpZXdHcmFwaGljc0Jhc2VkKiB2aWV3ID0g
c3RhdGljX2Nhc3Q8V2ViVmlld0dyYXBoaWNzQmFzZWQqPihtX3ZpZXcpOworICAgIHZpZXctPnNl
dEZyYW1lUmF0ZU1lYXN1cmVtZW50RW5hYmxlZChlbmFibGUpOworCisgICAgaWYgKCFlbmFibGUp
CisgICAgICAgIHN0YXR1c0JhcigpLT5jbGVhck1lc3NhZ2UoKTsKK30KKwordm9pZCBMYXVuY2hl
cldpbmRvdzo6c2hvd1VzZXJBZ2VudERpYWxvZygpCit7CisgICAgUVN0cmluZ0xpc3QgaXRlbXM7
CisgICAgUUZpbGUgZmlsZSgiOi91c2VyYWdlbnRsaXN0LnR4dCIpOworICAgIGlmIChmaWxlLm9w
ZW4oUUlPRGV2aWNlOjpSZWFkT25seSkpIHsKKyAgICAgICAgIHdoaWxlICghZmlsZS5hdEVuZCgp
KQorICAgICAgICAgICAgaXRlbXMgPDwgZmlsZS5yZWFkTGluZSgpLnRyaW1tZWQoKTsKKyAgICAg
ICAgZmlsZS5jbG9zZSgpOworICAgIH0KKworICAgIFFTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBR
U3RyaW5nIGN1c3RvbVVzZXJBZ2VudCA9IHNldHRpbmdzLnZhbHVlKCJDdXN0b21Vc2VyQWdlbnQi
KS50b1N0cmluZygpOworICAgIGlmICghaXRlbXMuY29udGFpbnMoY3VzdG9tVXNlckFnZW50KSAm
JiAhY3VzdG9tVXNlckFnZW50LmlzRW1wdHkoKSkKKyAgICAgICAgaXRlbXMgPDwgY3VzdG9tVXNl
ckFnZW50OworCisgICAgUURpYWxvZyogZGlhbG9nID0gbmV3IFFEaWFsb2codGhpcyk7CisgICAg
ZGlhbG9nLT5yZXNpemUoc2l6ZSgpLndpZHRoKCkgKiAwLjcsIGRpYWxvZy0+c2l6ZSgpLmhlaWdo
dCgpKTsKKyAgICBkaWFsb2ctPnNldFdpbmRvd1RpdGxlKCJDaGFuZ2UgVXNlciBBZ2VudCIpOwor
CisgICAgUVZCb3hMYXlvdXQqIGxheW91dCA9IG5ldyBRVkJveExheW91dChkaWFsb2cpOworICAg
IGRpYWxvZy0+c2V0TGF5b3V0KGxheW91dCk7CisKKyNpZm5kZWYgUVRfTk9fQ09NQk9CT1gKKyAg
ICBRQ29tYm9Cb3gqIGNvbWJvID0gbmV3IFFDb21ib0JveChkaWFsb2cpOworICAgIGNvbWJvLT5z
ZXRTaXplQWRqdXN0UG9saWN5KFFDb21ib0JveDo6QWRqdXN0VG9NaW5pbXVtQ29udGVudHNMZW5n
dGgpOworICAgIGNvbWJvLT5zZXRFZGl0YWJsZSh0cnVlKTsKKyAgICBjb21iby0+aW5zZXJ0SXRl
bXMoMCwgaXRlbXMpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KGNvbWJvKTsKKworICAgIGludCBp
bmRleCA9IGNvbWJvLT5maW5kVGV4dChwYWdlKCktPnVzZXJBZ2VudEZvclVybChRVXJsKCkpKTsK
KyAgICBjb21iby0+c2V0Q3VycmVudEluZGV4KGluZGV4KTsKKyNlbmRpZgorCisgICAgUURpYWxv
Z0J1dHRvbkJveCogYnV0dG9uQm94ID0gbmV3IFFEaWFsb2dCdXR0b25Cb3goUURpYWxvZ0J1dHRv
bkJveDo6T2sKKyAgICAgICAgICAgIHwgUURpYWxvZ0J1dHRvbkJveDo6Q2FuY2VsLCBRdDo6SG9y
aXpvbnRhbCwgZGlhbG9nKTsKKyAgICBjb25uZWN0KGJ1dHRvbkJveCwgU0lHTkFMKGFjY2VwdGVk
KCkpLCBkaWFsb2csIFNMT1QoYWNjZXB0KCkpKTsKKyAgICBjb25uZWN0KGJ1dHRvbkJveCwgU0lH
TkFMKHJlamVjdGVkKCkpLCBkaWFsb2csIFNMT1QocmVqZWN0KCkpKTsKKyAgICBsYXlvdXQtPmFk
ZFdpZGdldChidXR0b25Cb3gpOworCisjaWZuZGVmIFFUX05PX0NPTUJPQk9YCisgICAgaWYgKGRp
YWxvZy0+ZXhlYygpICYmICFjb21iby0+Y3VycmVudFRleHQoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcGFnZSgpLT5zZXRVc2VyQWdlbnQoY29tYm8tPmN1cnJlbnRUZXh0KCkpOworICAgICAgICBp
ZiAoIWl0ZW1zLmNvbnRhaW5zKGNvbWJvLT5jdXJyZW50VGV4dCgpKSkKKyAgICAgICAgICAgIHNl
dHRpbmdzLnNldFZhbHVlKCJDdXN0b21Vc2VyQWdlbnQiLCBjb21iby0+Y3VycmVudFRleHQoKSk7
CisgICAgfQorI2VuZGlmCisKKyAgICBkZWxldGUgZGlhbG9nOworfQorCit2b2lkIExhdW5jaGVy
V2luZG93Ojpsb2FkVVJMTGlzdEZyb21GaWxlKCkKK3sKKyAgICBRU3RyaW5nIHNlbGVjdGVkRmls
ZTsKKyNpZm5kZWYgUVRfTk9fRklMRURJQUxPRworICAgIHNlbGVjdGVkRmlsZSA9IFFGaWxlRGlh
bG9nOjpnZXRPcGVuRmlsZU5hbWUodGhpcywgdHIoIkxvYWQgVVJMIGxpc3QgZnJvbSBmaWxlIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs
IFFTdHJpbmcoKSwgdHIoIlRleHQgRmlsZXMgKCoudHh0KTs7QWxsIEZpbGVzICgqKSIpKTsKKyNl
bmRpZgorICAgIGlmIChzZWxlY3RlZEZpbGUuaXNFbXB0eSgpKQorICAgICAgIHJldHVybjsKKwor
ICAgIG1fdXJsTG9hZGVyID0gbmV3IFVybExvYWRlcih0aGlzLT5wYWdlKCktPm1haW5GcmFtZSgp
LCBzZWxlY3RlZEZpbGUsIDAsIDApOworICAgIG1fdXJsTG9hZGVyLT5sb2FkTmV4dCgpOworfQor
Cit2b2lkIExhdW5jaGVyV2luZG93OjpwcmludFVSTChjb25zdCBRVXJsJiB1cmwpCit7CisgICAg
UVRleHRTdHJlYW0gb3V0cHV0KHN0ZG91dCk7CisgICAgb3V0cHV0IDw8ICJMb2FkZWQ6ICIgPDwg
dXJsLnRvU3RyaW5nKCkgPDwgZW5kbDsKK30KKworI2lmICFkZWZpbmVkKFFUX05PX0ZJTEVESUFM
T0cpICYmICFkZWZpbmVkKFFUX05PX01FU1NBR0VCT1gpCit2b2lkIExhdW5jaGVyV2luZG93Ojpk
b3dubG9hZFJlcXVlc3QoY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0KQoreworICAgIFFO
ZXR3b3JrQWNjZXNzTWFuYWdlciogbWFuYWdlciA9IG5ldyBRTmV0d29ya0FjY2Vzc01hbmFnZXIo
dGhpcyk7CisgICAgbV9yZXBseSA9IG1hbmFnZXItPmdldChyZXF1ZXN0KTsKKyAgICBjb25uZWN0
KG1fcmVwbHksIFNJR05BTChmaW5pc2hlZCgpKSwgdGhpcywgU0xPVChmaWxlRG93bmxvYWRGaW5p
c2hlZCgpKSk7Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmZpbGVEb3dubG9hZEZpbmlzaGVk
KCkKK3sKKyAgICBRRmlsZUluZm8gZmlsZUluZihtX3JlcGx5LT5yZXF1ZXN0KCkudXJsKCkudG9T
dHJpbmcoKSk7CisgICAgUVN0cmluZyByZXF1ZXN0RmlsZU5hbWUgPSBRRGlyOjpob21lUGF0aCgp
ICsgIi8iICsgZmlsZUluZi5maWxlTmFtZSgpOworICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBRRmls
ZURpYWxvZzo6Z2V0U2F2ZUZpbGVOYW1lKHRoaXMsICJTYXZlIGFzLi4uIiwgcmVxdWVzdEZpbGVO
YW1lLCAiQWxsIEZpbGVzICgqKSIpOworCisgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlcGx5LT5lcnJvcigpICE9IFFOZXR3b3JrUmVwbHk6
Ok5vRXJyb3IpCisgICAgICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCh0aGlzLCBRU3RyaW5nKCJE
b3dubG9hZCIpLCBRU3RyaW5nKCJEb3dubG9hZCBmYWlsZWQuIikpOworICAgIGVsc2UgeworICAg
ICAgICBRRmlsZSBmaWxlKGZpbGVOYW1lKTsKKyAgICAgICAgZmlsZS5vcGVuKFFJT0RldmljZTo6
V3JpdGVPbmx5KTsKKyAgICAgICAgZmlsZS53cml0ZShtX3JlcGx5LT5yZWFkQWxsKCkpOworICAg
ICAgICBmaWxlLmNsb3NlKCk7CisgICAgICAgIFFNZXNzYWdlQm94OjppbmZvcm1hdGlvbih0aGlz
LCBRU3RyaW5nKCJEb3dubG9hZCIpLCBmaWxlTmFtZSArIFFTdHJpbmcoIiBkb3dubG9hZGVkIHN1
Y2Nlc3NmdWxseS4iKSk7CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6
OnVwZGF0ZUZQUyhpbnQgZnBzKQoreworICAgIFFTdHJpbmcgZnBzU3RhdHVzVGV4dCA9IFFTdHJp
bmcoIkN1cnJlbnQgRlBTOiAlMSIpLmFyZyhmcHMpOworCisgICAgc3RhdHVzQmFyKCktPnNob3dN
ZXNzYWdlKGZwc1N0YXR1c1RleHQpOworfQorCit2b2lkIExhdW5jaGVyV2luZG93Ojp0b2dnbGVM
b2NhbFN0b3JhZ2UoYm9vbCB0b2dnbGUpCit7CisgICAgbV93aW5kb3dPcHRpb25zLnVzZUxvY2Fs
U3RvcmFnZSA9IHRvZ2dsZTsKKyAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShR
V2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIHRvZ2dsZSk7Cit9CisKK3ZvaWQgTGF1
bmNoZXJXaW5kb3c6OnRvZ2dsZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2UoYm9vbCB0b2dnbGUpCit7
CisgICAgbV93aW5kb3dPcHRpb25zLnVzZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2UgPSB0b2dnbGU7
CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpPZmZs
aW5lU3RvcmFnZURhdGFiYXNlRW5hYmxlZCwgdG9nZ2xlKTsKK30KKwordm9pZCBMYXVuY2hlcldp
bmRvdzo6dG9nZ2xlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUoYm9vbCB0b2dnbGUpCit7Cisg
ICAgbV93aW5kb3dPcHRpb25zLnVzZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlID0gdG9nZ2xl
OworICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6T2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLCB0b2dnbGUpOworfQorCit2b2lkIExhdW5j
aGVyV2luZG93OjpzZXRPZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSgpCit7CisgICAgLy8gRm9y
IGNvbW1hbmQgbGluZSBleGVjdXRpb24sIHF1b3RhIHNpemUgaXMgdGFrZW4gZnJvbSBjb21tYW5k
IGxpbmUuICAgCisgICAgaWYgKG1fd2luZG93T3B0aW9ucy5vZmZsaW5lU3RvcmFnZURlZmF1bHRR
dW90YVNpemUpCisgICAgICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0T2ZmbGluZVN0b3JhZ2VE
ZWZhdWx0UXVvdGEobV93aW5kb3dPcHRpb25zLm9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhU2l6
ZSk7CisgICAgZWxzZSB7CisjaWZuZGVmIFFUX05PX0lOUFVURElBTE9HCisgICAgICAgIGJvb2wg
b2s7CisgICAgICAgIC8vIE1heGltdW0gc2l6ZSBpcyBzZXQgdG8gMjUgKiAxMDI0ICogMTAyNC4K
KyAgICAgICAgaW50IHF1b3RhU2l6ZSA9IFFJbnB1dERpYWxvZzo6Z2V0SW50KHRoaXMsICJPZmZs
aW5lIFN0b3JhZ2UgRGVmYXVsdCBRdW90YSBTaXplIiAsICJRdW90YSBTaXplIiwgMCwgMCwgMjYy
MTQ0MDAsIDEsICZvayk7CisgICAgICAgIGlmIChvaykgCisgICAgICAgICAgICBwYWdlKCktPnNl
dHRpbmdzKCktPnNldE9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKHF1b3RhU2l6ZSk7CisjZW5k
aWYKKyAgICB9Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnRvZ2dsZVNjcm9sbEFuaW1hdG9y
KGJvb2wgdG9nZ2xlKQoreworICAgIG1fd2luZG93T3B0aW9ucy5lbmFibGVTY3JvbGxBbmltYXRv
ciA9IHRvZ2dsZTsKKyAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OlNjcm9sbEFuaW1hdG9yRW5hYmxlZCwgdG9nZ2xlKTsKK30KKworTGF1bmNoZXJXaW5k
b3cqIExhdW5jaGVyV2luZG93OjpuZXdXaW5kb3coKQoreworICAgIExhdW5jaGVyV2luZG93KiBt
dyA9IG5ldyBMYXVuY2hlcldpbmRvdygmbV93aW5kb3dPcHRpb25zKTsKKyAgICBtdy0+c2hvdygp
OworICAgIHJldHVybiBtdzsKK30KKworTGF1bmNoZXJXaW5kb3cqIExhdW5jaGVyV2luZG93Ojpj
bG9uZVdpbmRvdygpCit7CisgICAgTGF1bmNoZXJXaW5kb3cqIG13ID0gbmV3IExhdW5jaGVyV2lu
ZG93KCZtX3dpbmRvd09wdGlvbnMsIHFvYmplY3RfY2FzdDxRR3JhcGhpY3NWaWV3Kj4obV92aWV3
KS0+c2NlbmUoKSk7CisgICAgbXctPnNob3coKTsKKyAgICByZXR1cm4gbXc7Cit9CisKKyNpZm5k
ZWYgUVRfTk9fTElORUVESVQKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OnNob3dGaW5kQmFyKCkKK3sK
KyAgICBpZiAoIW1fZmluZEJhci0+aXNWaXNpYmxlKCkpIHsKKyAgICAgICAgbV9maW5kQmFyLT5z
ZXRWaXNpYmxlKHRydWUpOworICAgICAgICBtX2xpbmVFZGl0LT5zZXRUZXh0KHBhZ2UoKS0+c2Vs
ZWN0ZWRUZXh0KCkpOworICAgICAgICBtX2xpbmVFZGl0LT5zZXRGb2N1cyhRdDo6UG9wdXBGb2N1
c1JlYXNvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9maW5kQmFyLT5zZXRWaXNpYmxlKGZh
bHNlKTsKKyAgICAgICAgcGFnZSgpLT5maW5kVGV4dCgiIiwgUVdlYlBhZ2U6OkhpZ2hsaWdodEFs
bE9jY3VycmVuY2VzKTsKKyAgICB9Cit9CisKK3ZvaWQgTGF1bmNoZXJXaW5kb3c6OmZpbmQoaW50
IG1vZGUgPSBzX2ZpbmROb3JtYWxGbGFnKQoreworICAgIFFQYWxldHRlIHBhbGV0dGU7CisgICAg
Ym9vbCBmb3VuZDsKKyAgICBwYWxldHRlLnNldENvbG9yKG1fbGluZUVkaXQtPmJhY2tncm91bmRS
b2xlKCksIFF0Ojp3aGl0ZSk7CisgICAgcGFnZSgpLT5maW5kVGV4dCgiIiwgUUZsYWcoUVdlYlBh
Z2U6OkhpZ2hsaWdodEFsbE9jY3VycmVuY2VzKSk7CisKKyAgICBtX2ZpbmRGbGFnID0gbV9maW5k
RmxhZyBeIG1vZGU7CisgICAgaWYgKG1vZGUgPT0gc19maW5kTm9ybWFsRmxhZyB8fCBtb2RlID09
IFFXZWJQYWdlOjpGaW5kQmFja3dhcmQpIHsKKyAgICAgICAgZm91bmQgPSBwYWdlKCktPmZpbmRU
ZXh0KG1fbGluZUVkaXQtPnRleHQoKSwgUUZsYWcobV9maW5kRmxhZyAmIH5RV2ViUGFnZTo6SGln
aGxpZ2h0QWxsT2NjdXJyZW5jZXMpKTsKKyAgICAgICAgbV9maW5kRmxhZyA9IG1fZmluZEZsYWcg
XiBtb2RlOworCisgICAgICAgIGlmIChmb3VuZCB8fCBtX2xpbmVFZGl0LT50ZXh0KCkuaXNFbXB0
eSgpKQorICAgICAgICAgICAgbV9saW5lRWRpdC0+c2V0UGFsZXR0ZShwYWxldHRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwYWxldHRlLnNldENvbG9yKG1fbGluZUVkaXQtPmJhY2tn
cm91bmRSb2xlKCksIFFDb2xvcigyNTUsIDAsIDAsIDEyNykpOworICAgICAgICAgICAgbV9saW5l
RWRpdC0+c2V0UGFsZXR0ZShwYWxldHRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICht
X2ZpbmRGbGFnICYgUVdlYlBhZ2U6OkhpZ2hsaWdodEFsbE9jY3VycmVuY2VzKQorICAgICAgICBw
YWdlKCktPmZpbmRUZXh0KG1fbGluZUVkaXQtPnRleHQoKSwgUUZsYWcobV9maW5kRmxhZykpOwor
fQorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93
LmggYi9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1ZjIxYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F0
VGVzdEJyb3dzZXIvbGF1bmNoZXJ3aW5kb3cuaApAQCAtMCwwICsxLDI0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHaXJpc2ggUmFtYWtyaXNobmFuIDxnaXJpc2hA
Zm9yd2FyZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0
YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11ZWxsZXIgPG11ZWxs
ZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5v
cmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5v
cmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGxhdW5jaGVy
d2luZG93X2gKKyNkZWZpbmUgbGF1bmNoZXJ3aW5kb3dfaAorCisjaW5jbHVkZSA8UXROZXR3b3Jr
L1FOZXR3b3JrUmVxdWVzdD4KKworI2lmbmRlZiBRVF9OT19PUEVOR0wKKyNpbmNsdWRlIDxRdE9w
ZW5HTC9RR0xXaWRnZXQ+CisjZW5kaWYKKworI2luY2x1ZGUgPFFEZWJ1Zz4KKworI2luY2x1ZGUg
PGNzdGRpbz4KKyNpbmNsdWRlIDxxZXZlbnQuaD4KKyNpbmNsdWRlIDxxd2ViZWxlbWVudC5oPgor
I2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorI2luY2x1ZGUgPHF3ZWJpbnNwZWN0b3IuaD4KKyNpbmNs
dWRlIDxxd2Vic2V0dGluZ3MuaD4KKworI2luY2x1ZGUgIm1haW53aW5kb3cuaCIKKyNpbmNsdWRl
ICJ1cmxsb2FkZXIuaCIKKyNpbmNsdWRlICJ1dGlscy5oIgorI2luY2x1ZGUgIndlYmluc3BlY3Rv
ci5oIgorI2luY2x1ZGUgIndlYnBhZ2UuaCIKKyNpbmNsdWRlICJ3ZWJ2aWV3LmgiCisKK1FUX0JF
R0lOX05BTUVTUEFDRQorY2xhc3MgUVByb3BlcnR5QW5pbWF0aW9uOworY2xhc3MgUUxpbmVFZGl0
OworUVRfRU5EX05BTUVTUEFDRQorCitzdHJ1Y3QgSGlnaGxpZ2h0ZWRFbGVtZW50OworCitjbGFz
cyBXaW5kb3dPcHRpb25zIHsKK3B1YmxpYzoKKyAgICBXaW5kb3dPcHRpb25zKCkKKyAgICAgICAg
OiB1c2VHcmFwaGljc1ZpZXcoZmFsc2UpCisgICAgICAgICwgdXNlRGlza0NhY2hlKGZhbHNlKQor
ICAgICAgICAsIHVzZUNvbXBvc2l0aW5nKHRydWUpCisgICAgICAgICwgdXNlVGlsZWRCYWNraW5n
U3RvcmUoZmFsc2UpCisgICAgICAgICwgdXNlV2ViR0woZmFsc2UpCisgICAgICAgICwgdXNlV2Vi
QXVkaW8oZmFsc2UpCisgICAgICAgICwgdXNlRnJhbWVGbGF0dGVuaW5nKGZhbHNlKQorICAgICAg
ICAsIGNhY2hlV2ViVmlldyhmYWxzZSkKKyAgICAgICAgLCBzaG93RnJhbWVSYXRlKGZhbHNlKQor
ICAgICAgICAsIHJlc2l6ZXNUb0NvbnRlbnRzKGZhbHNlKQorICAgICAgICAsIHZpZXdwb3J0VXBk
YXRlTW9kZShRR3JhcGhpY3NWaWV3OjpNaW5pbWFsVmlld3BvcnRVcGRhdGUpCisgICAgICAgICwg
dXNlTG9jYWxTdG9yYWdlKGZhbHNlKQorICAgICAgICAsIHVzZU9mZmxpbmVTdG9yYWdlRGF0YWJh
c2UoZmFsc2UpCisgICAgICAgICwgdXNlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUoZmFsc2Up
CisgICAgICAgICwgdXNlRGlza0Nvb2tpZXModHJ1ZSkKKyAgICAgICAgLCBlbmFibGVTY3JvbGxB
bmltYXRvcihmYWxzZSkKKyAgICAgICAgLCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNpemUo
MCkKKyNpZm5kZWYgUVRfTk9fT1BFTkdMCisgICAgICAgICwgdXNlUUdMV2lkZ2V0Vmlld3BvcnQo
ZmFsc2UpCisjZW5kaWYKKyAgICAgICAgLCBwcmludExvYWRlZFVybHMoZmFsc2UpCisgICAgICAg
ICwgc3RhcnRNYXhpbWl6ZWQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgdXNlR3Jh
cGhpY3NWaWV3OworICAgIGJvb2wgdXNlRGlza0NhY2hlOworICAgIGJvb2wgdXNlQ29tcG9zaXRp
bmc7CisgICAgYm9vbCB1c2VUaWxlZEJhY2tpbmdTdG9yZTsKKyAgICBib29sIHVzZVdlYkdMOwor
ICAgIGJvb2wgdXNlV2ViQXVkaW87CisgICAgYm9vbCB1c2VGcmFtZUZsYXR0ZW5pbmc7CisgICAg
Ym9vbCBjYWNoZVdlYlZpZXc7CisgICAgYm9vbCBzaG93RnJhbWVSYXRlOworICAgIGJvb2wgcmVz
aXplc1RvQ29udGVudHM7CisgICAgUUdyYXBoaWNzVmlldzo6Vmlld3BvcnRVcGRhdGVNb2RlIHZp
ZXdwb3J0VXBkYXRlTW9kZTsKKyAgICBib29sIHVzZUxvY2FsU3RvcmFnZTsKKyAgICBib29sIHVz
ZU9mZmxpbmVTdG9yYWdlRGF0YWJhc2U7CisgICAgYm9vbCB1c2VPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZTsKKyAgICBib29sIHVzZURpc2tDb29raWVzOworICAgIGJvb2wgZW5hYmxlU2Nyb2xs
QW5pbWF0b3I7CisgICAgcXVpbnQ2NCBvZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNpemU7Cisj
aWZuZGVmIFFUX05PX09QRU5HTAorICAgIGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3BvcnQ7CisjZW5k
aWYKKyAgICBib29sIHByaW50TG9hZGVkVXJsczsKKyAgICBRVXJsIGluc3BlY3RvclVybDsKKyAg
ICBxdWludDE2IHJlbW90ZUluc3BlY3RvclBvcnQ7CisgICAgYm9vbCBzdGFydE1heGltaXplZDsK
K307CisKK2NsYXNzIExhdW5jaGVyV2luZG93IDogcHVibGljIE1haW5XaW5kb3cgeworICAgIFFf
T0JKRUNUCisKK3B1YmxpYzoKKyAgICBMYXVuY2hlcldpbmRvdyhXaW5kb3dPcHRpb25zKiBkYXRh
ID0gMCwgUUdyYXBoaWNzU2NlbmUqIHNoYXJlZFNjZW5lID0gMCk7CisgICAgdmlydHVhbCB+TGF1
bmNoZXJXaW5kb3coKTsKKworICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoKTsKKworICAgIGJvb2wg
ZXZlbnRGaWx0ZXIoUU9iamVjdCogb2JqLCBRRXZlbnQqIGV2ZW50KTsKKworcHJvdGVjdGVkIFFf
U0xPVFM6CisgICAgdm9pZCBsb2FkU3RhcnRlZCgpOworICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7
CisKKyAgICB2b2lkIHNob3dMaW5rSG92ZXIoY29uc3QgUVN0cmluZyAmbGluaywgY29uc3QgUVN0
cmluZyAmdG9vbFRpcCk7CisKKyAgICB2b2lkIHpvb21JbigpOworICAgIHZvaWQgem9vbU91dCgp
OworICAgIHZvaWQgcmVzZXRab29tKCk7CisgICAgdm9pZCB0b2dnbGVab29tVGV4dE9ubHkoYm9v
bCBvbik7CisgICAgdm9pZCB6b29tQW5pbWF0aW9uRmluaXNoZWQoKTsKKworICAgIHZvaWQgcHJp
bnQoKTsKKyAgICB2b2lkIHNjcmVlbnNob3QoKTsKKworICAgIHZvaWQgc2V0RWRpdGFibGUoYm9v
bCBvbik7CisKKyAgICAvKiB2b2lkIGR1bXBQbHVnaW5zKCkgKi8KKyAgICB2b2lkIGR1bXBIdG1s
KCk7CisKKyAgICB2b2lkIGxvYWRVUkxMaXN0RnJvbUZpbGUoKTsKKworICAgIHZvaWQgc2V0RGlz
a0NhY2hlKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldFRvdWNoTW9ja2luZyhib29sIG9uKTsK
KyAgICB2b2lkIHRvZ2dsZVdlYlZpZXcoYm9vbCBncmFwaGljc0Jhc2VkKTsKKyAgICB2b2lkIHRv
Z2dsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCB0b2dnbGUpOworICAgIHZvaWQgdG9nZ2xl
VGlsZWRCYWNraW5nU3RvcmUoYm9vbCB0b2dnbGUpOworICAgIHZvaWQgdG9nZ2xlUmVzaXplc1Rv
Q29udGVudHMoYm9vbCB0b2dnbGUpOworICAgIHZvaWQgdG9nZ2xlV2ViR0woYm9vbCB0b2dnbGUp
OworICAgIHZvaWQgdG9nZ2xlV2ViQXVkaW8oYm9vbCB0b2dnbGUpOworICAgIHZvaWQgdG9nZ2xl
U3BhdGlhbE5hdmlnYXRpb24oYm9vbCBiKTsKKyAgICB2b2lkIHRvZ2dsZUZ1bGxTY3JlZW5Nb2Rl
KGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHRvZ2dsZUZyYW1lRmxhdHRlbmluZyhib29sIHRvZ2ds
ZSk7CisgICAgdm9pZCB0b2dnbGVKYXZhU2NyaXB0RW5hYmxlZChib29sIGVuYWJsZSk7CisgICAg
dm9pZCB0b2dnbGVJbnRlcnJ1cHRpbmdKYXZhU2NyaXB0RW5hYmxlZChib29sIGVuYWJsZSk7Cisg
ICAgdm9pZCB0b2dnbGVKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MoYm9vbCBlbmFibGUpOworICAg
IHZvaWQgdG9nZ2xlQXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0VXNl
RGlza0Nvb2tpZXMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgY2xlYXJDb29raWVzKCk7CisgICAg
dm9pZCB0b2dnbGVQbHVnaW5zKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHRvZ2dsZUxvY2FsU3Rv
cmFnZShib29sIHRvZ2dsZSk7CisgICAgdm9pZCB0b2dnbGVPZmZsaW5lU3RvcmFnZURhdGFiYXNl
KGJvb2wgdG9nZ2xlKTsKKyAgICB2b2lkIHRvZ2dsZU9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
KGJvb2wgdG9nZ2xlKTsKKyAgICB2b2lkIHRvZ2dsZVNjcm9sbEFuaW1hdG9yKGJvb2wgdG9nZ2xl
KTsKKyAgICB2b2lkIHNldE9mZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhKCk7CisjaWZuZGVmIFFU
X05PX0xJTkVFRElUCisgICAgdm9pZCBzaG93RmluZEJhcigpOworICAgIHZvaWQgZmluZChpbnQg
bW9kZSk7CisjZW5kaWYKKyNpZm5kZWYgUVRfTk9fT1BFTkdMCisgICAgdm9pZCB0b2dnbGVRR0xX
aWRnZXRWaWV3cG9ydChib29sIGVuYWJsZSk7CisjZW5kaWYKKworICAgIHZvaWQgY2hhbmdlVmll
d3BvcnRVcGRhdGVNb2RlKGludCBtb2RlKTsKKyAgICB2b2lkIGFuaW1hdGVkRmxpcCgpOworICAg
IHZvaWQgYW5pbWF0ZWRZRmxpcCgpOworICAgIHZvaWQgc2VsZWN0RWxlbWVudHMoKTsKKyAgICB2
b2lkIGNsZWFyU2VsZWN0aW9uKCk7CisgICAgdm9pZCBzaG93RlBTKGJvb2wgZW5hYmxlKTsKKyAg
ICB2b2lkIHNob3dVc2VyQWdlbnREaWFsb2coKTsKKworICAgIHZvaWQgcHJpbnRVUkwoY29uc3Qg
UVVybCYpOworI2lmICFkZWZpbmVkKFFUX05PX0ZJTEVESUFMT0cpICYmICFkZWZpbmVkKFFUX05P
X01FU1NBR0VCT1gpCisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoY29uc3QgUU5ldHdvcmtSZXF1
ZXN0Jik7CisgICAgdm9pZCBmaWxlRG93bmxvYWRGaW5pc2hlZCgpOworI2VuZGlmCisKK3B1Ymxp
YyBRX1NMT1RTOgorICAgIExhdW5jaGVyV2luZG93KiBuZXdXaW5kb3coKTsKKyAgICBMYXVuY2hl
cldpbmRvdyogY2xvbmVXaW5kb3coKTsKKyAgICB2b2lkIHVwZGF0ZUZQUyhpbnQgZnBzKTsKKwor
UV9TSUdOQUxTOgorICAgIHZvaWQgZW50ZXJlZEZ1bGxTY3JlZW5Nb2RlKGJvb2wgb24pOworCitw
cml2YXRlOgorICAgIHZvaWQgaW5pdCgpOworICAgIHZvaWQgaW5pdGlhbGl6ZVZpZXcoKTsKKyAg
ICB2b2lkIGNyZWF0ZUNocm9tZSgpOworICAgIHZvaWQgYXBwbHlQcmVmcygpOworICAgIHZvaWQg
YXBwbHlab29tKCk7CisKKyAgICBib29sIGlzR3JhcGhpY3NCYXNlZCgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIHN0YXRpYyBRVmVjdG9yPGludD4gbV96b29tTGV2ZWxzOworICAgIGludCBtX2N1
cnJlbnRab29tOworCisgICAgVXJsTG9hZGVyKiBtX3VybExvYWRlcjsKKworICAgIFFXaWRnZXQq
IG1fdmlldzsKKyAgICBXZWJJbnNwZWN0b3IqIG1faW5zcGVjdG9yOworCisgICAgV2luZG93T3B0
aW9ucyBtX3dpbmRvd09wdGlvbnM7CisKKyAgICBRQWN0aW9uKiBtX2Zvcm1hdE1lbnVBY3Rpb247
CisKKyAgICBRUHJvcGVydHlBbmltYXRpb24qIG1fem9vbUFuaW1hdGlvbjsKKyNpZiAhZGVmaW5l
ZChRVF9OT19GSUxFRElBTE9HKSAmJiAhZGVmaW5lZChRVF9OT19NRVNTQUdFQk9YKQorICAgIFFO
ZXR3b3JrUmVwbHkqIG1fcmVwbHk7CisjZW5kaWYKKyAgICBRTGlzdDxRVG91Y2hFdmVudDo6VG91
Y2hQb2ludD4gbV90b3VjaFBvaW50czsKKyAgICBRTGlzdDxIaWdobGlnaHRlZEVsZW1lbnQ+IG1f
aGlnaGxpZ2h0ZWRFbGVtZW50czsKKyAgICBib29sIG1fdG91Y2hNb2NraW5nOworCisgICAgUVN0
cmluZyBtX2lucHV0VXJsOworI2lmbmRlZiBRVF9OT19MSU5FRURJVAorICAgIFFUb29sQmFyKiBt
X2ZpbmRCYXI7CisgICAgUUxpbmVFZGl0KiBtX2xpbmVFZGl0OworICAgIGludCBtX2ZpbmRGbGFn
OworICAgIHN0YXRpYyBjb25zdCBpbnQgc19maW5kTm9ybWFsRmxhZyA9IDA7CisjZW5kaWYKK307
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sb2NhdGlvbmVkaXQu
Y3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9sb2NhdGlvbmVkaXQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ODliMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9R
dFRlc3RCcm93c2VyL2xvY2F0aW9uZWRpdC5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmVhcyBLbGluZyA8a2xpbmdAd2Via2l0
Lm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJsb2Nh
dGlvbmVkaXQuaCIKKworI2lmbmRlZiBRVF9OT19JTlBVVERJQUxPRworCitzdGF0aWMgY29uc3Qg
UVNpemUgZ1BhZ2VJY29uU2l6ZSgxNiwgMTYpOworCitzdGF0aWMgUVBpeG1hcCBkZWZhdWx0UGFn
ZUljb24oKQoreworICAgIHN0YXRpYyBRUGl4bWFwIGljb247CisgICAgaWYgKGljb24uaXNOdWxs
KCkpCisgICAgICAgIGljb24ubG9hZCgiOi9mYXZpY29uLnBuZyIpOworCisgICAgcmV0dXJuIGlj
b247Cit9CisKK0xvY2F0aW9uRWRpdDo6TG9jYXRpb25FZGl0KFFXaWRnZXQqIHBhcmVudCkKKyAg
ICA6IFFMaW5lRWRpdChwYXJlbnQpCisgICAgLCBtX3Byb2dyZXNzKDApCit7CisgICAgbV9jbGVh
clRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7CisgICAgY29ubmVjdCgmbV9jbGVhclRpbWVyLCBT
SUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChyZXNldCgpKSk7CisKKyAgICBtX3BhZ2VJY29u
TGFiZWwgPSBuZXcgUUxhYmVsKHRoaXMpOworICAgIG1fcGFnZUljb25MYWJlbC0+c2V0Rml4ZWRT
aXplKGdQYWdlSWNvblNpemUpOworICAgIG1fcGFnZUljb25MYWJlbC0+c2V0UGl4bWFwKGRlZmF1
bHRQYWdlSWNvbigpKTsKK30KKwordm9pZCBMb2NhdGlvbkVkaXQ6OnNldFBhZ2VJY29uKGNvbnN0
IFFJY29uJiBpY29uKQoreworICAgIGlmIChpY29uLmlzTnVsbCgpKQorICAgICAgICBtX3BhZ2VJ
Y29uTGFiZWwtPnNldFBpeG1hcChkZWZhdWx0UGFnZUljb24oKSk7CisgICAgZWxzZQorICAgICAg
ICBtX3BhZ2VJY29uTGFiZWwtPnNldFBpeG1hcChpY29uLnBpeG1hcChnUGFnZUljb25TaXplKSk7
Cit9CisKK3ZvaWQgTG9jYXRpb25FZGl0OjpzZXRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpCit7Cisg
ICAgbV9jbGVhclRpbWVyLnN0b3AoKTsKKyAgICBtX3Byb2dyZXNzID0gcHJvZ3Jlc3M7CisgICAg
dXBkYXRlKCk7Cit9CisKK3ZvaWQgTG9jYXRpb25FZGl0OjpyZXNldCgpCit7CisgICAgc2V0UHJv
Z3Jlc3MoMCk7Cit9CisKK3ZvaWQgTG9jYXRpb25FZGl0OjpyZXNpemVFdmVudChRUmVzaXplRXZl
bnQqKQoreworICAgIHVwZGF0ZUludGVybmFsR2VvbWV0cnkoKTsKK30KKwordm9pZCBMb2NhdGlv
bkVkaXQ6OnVwZGF0ZUludGVybmFsR2VvbWV0cnkoKQoreworICAgIFFTdHlsZU9wdGlvbkZyYW1l
VjMgc3R5bGVPcHRpb247CisgICAgaW5pdFN0eWxlT3B0aW9uKCZzdHlsZU9wdGlvbik7CisKKyAg
ICBRUmVjdCB0ZXh0UmVjdCA9IHN0eWxlKCktPnN1YkVsZW1lbnRSZWN0KFFTdHlsZTo6U0VfTGlu
ZUVkaXRDb250ZW50cywgJnN0eWxlT3B0aW9uLCB0aGlzKTsKKworICAgIGNvbnN0IGludCBzcGFj
aW5nID0gMjsKKworICAgIGludCB4ID0gdGV4dFJlY3QueCgpICsgc3BhY2luZzsKKyAgICBpbnQg
eSA9ICh0ZXh0UmVjdC5jZW50ZXIoKS55KCkgKyAxKSAtIGdQYWdlSWNvblNpemUuaGVpZ2h0KCkg
LyAyOworCisgICAgbV9wYWdlSWNvbkxhYmVsLT5tb3ZlKHgsIHkpOworCisgICAgUU1hcmdpbnMg
bWFyZ2lucyA9IHRleHRNYXJnaW5zKCk7CisgICAgbWFyZ2lucy5zZXRMZWZ0KG1fcGFnZUljb25M
YWJlbC0+c2l6ZUhpbnQoKS53aWR0aCgpICsgc3BhY2luZyk7CisgICAgc2V0VGV4dE1hcmdpbnMo
bWFyZ2lucyk7Cit9CisKK3ZvaWQgTG9jYXRpb25FZGl0OjpwYWludEV2ZW50KFFQYWludEV2ZW50
KiBldikKK3sKKyAgICBRQ29sb3IgYmFja2dyb3VuZENvbG9yID0gUUFwcGxpY2F0aW9uOjpwYWxl
dHRlKCkuY29sb3IoUVBhbGV0dGU6OkJhc2UpOworICAgIFFDb2xvciBwcm9ncmVzc0NvbG9yID0g
UUNvbG9yKDEyMCwgMTgwLCAyNDApOworICAgIFFQYWxldHRlIHAgPSBwYWxldHRlKCk7CisKKyAg
ICBpZiAoIW1fcHJvZ3Jlc3MpCisgICAgICAgIHAuc2V0QnJ1c2goUVBhbGV0dGU6OkJhc2UsIGJh
Y2tncm91bmRDb2xvcik7CisgICAgZWxzZSB7CisgICAgICAgIFFMaW5lYXJHcmFkaWVudCBncmFk
aWVudCgwLCAwLCB3aWR0aCgpLCAwKTsKKyAgICAgICAgZ3JhZGllbnQuc2V0Q29sb3JBdCgwLCBw
cm9ncmVzc0NvbG9yKTsKKyAgICAgICAgZ3JhZGllbnQuc2V0Q29sb3JBdCgoKGRvdWJsZSkgbV9w
cm9ncmVzcykgLyAxMDAsIHByb2dyZXNzQ29sb3IpOworICAgICAgICBpZiAobV9wcm9ncmVzcyAh
PSAxMDApCisgICAgICAgICAgICBncmFkaWVudC5zZXRDb2xvckF0KChkb3VibGUpIG1fcHJvZ3Jl
c3MgLyAxMDAgKyAwLjAwMSwgYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgcC5zZXRCcnVzaChR
UGFsZXR0ZTo6QmFzZSwgZ3JhZGllbnQpOworICAgIH0KKyAgICBzZXRQYWxldHRlKHApOworCisg
ICAgUUxpbmVFZGl0OjpwYWludEV2ZW50KGV2KTsKKworICAgIGlmIChtX3Byb2dyZXNzID09IDEw
MCkKKyAgICAgICAgbV9jbGVhclRpbWVyLnN0YXJ0KDEwMCk7Cit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sb2NhdGlvbmVkaXQuaCBiL1Rvb2xzL1F0VGVzdEJy
b3dzZXIvbG9jYXRpb25lZGl0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGFlMDY5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbG9jYXRpb25l
ZGl0LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgbG9jYXRpb25lZGl0X2gKKyNkZWZpbmUgbG9jYXRp
b25lZGl0X2gKKworI2lmbmRlZiBRVF9OT19JTlBVVERJQUxPRworI2luY2x1ZGUgPFFBcHBsaWNh
dGlvbj4KKyNpbmNsdWRlIDxRSWNvbj4KKyNpbmNsdWRlIDxRTGFiZWw+CisjaW5jbHVkZSA8UUxp
bmVFZGl0PgorI2luY2x1ZGUgPFFTdHlsZU9wdGlvbkZyYW1lVjM+CisjaW5jbHVkZSA8UVRpbWVy
PgorCitjbGFzcyBMb2NhdGlvbkVkaXQgOiBwdWJsaWMgUUxpbmVFZGl0IHsKKyAgICBRX09CSkVD
VAorCitwdWJsaWM6CisgICAgTG9jYXRpb25FZGl0KFFXaWRnZXQqIHBhcmVudCA9IDApOworCisg
ICAgdm9pZCBzZXRQYWdlSWNvbihjb25zdCBRSWNvbiYpOworCitwdWJsaWMgUV9TTE9UUzoKKyAg
ICB2b2lkIHNldFByb2dyZXNzKGludCBwcm9ncmVzcyk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAg
ICB2b2lkIHJlc2V0KCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRFdmVu
dChRUGFpbnRFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZl
bnQqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZUludGVybmFsR2VvbWV0cnkoKTsKKwor
ICAgIGludCBtX3Byb2dyZXNzOworICAgIFFUaW1lciBtX2NsZWFyVGltZXI7CisgICAgUUxhYmVs
KiBtX3BhZ2VJY29uTGFiZWw7Cit9OworCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvUXRUZXN0QnJvd3Nlci9tYWlud2luZG93LmNwcCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFp
bndpbmRvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyMTc2OQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFpbndpbmRvdy5jcHAKQEAg
LTAsMCArMSwyNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR2ly
aXNoIFJhbWFrcmlzaG5hbiA8Z2lyaXNoQGZvcndhcmRiaWFzLmluPgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNpbW9u
IEhhdXNtYW5uIDxoYXVzbWFubkBrZGUub3JnPgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgIm1haW53aW5kb3cuaCIKKworI2luY2x1ZGUgImxvY2F0aW9uZWRp
dC5oIgorI2luY2x1ZGUgInV0aWxzLmgiCisKKyNpbmNsdWRlIDxRQWN0aW9uPgorI2lmbmRlZiBR
VF9OT19JTlBVVERJQUxPRworI2luY2x1ZGUgPFFDb21wbGV0ZXI+CisjZW5kaWYKKyNpZm5kZWYg
UVRfTk9fRklMRURJQUxPRworI2luY2x1ZGUgPFFGaWxlRGlhbG9nPgorI2VuZGlmCisKK01haW5X
aW5kb3c6Ok1haW5XaW5kb3coKQorICAgIDogbV9wYWdlKG5ldyBXZWJQYWdlKHRoaXMpKQorICAg
ICwgbV90b29sQmFyKDApCisgICAgLCB1cmxFZGl0KDApCit7CisgICAgc2V0QXR0cmlidXRlKFF0
OjpXQV9EZWxldGVPbkNsb3NlKTsKKyAgICBpZiAocWdldGVudigiUVRURVNUQlJPV1NFUl9VU0Vf
QVJHQl9WSVNVQUxTIikudG9JbnQoKSA9PSAxKQorICAgICAgICBzZXRBdHRyaWJ1dGUoUXQ6OldB
X1RyYW5zbHVjZW50QmFja2dyb3VuZCk7CisKKyAgICBidWlsZFVJKCk7Cit9CisKK3ZvaWQgTWFp
bldpbmRvdzo6YnVpbGRVSSgpCit7CisgICAgZGVsZXRlIG1fdG9vbEJhcjsKKworICAgIG1fdG9v
bEJhciA9IGFkZFRvb2xCYXIoIk5hdmlnYXRpb24iKTsKKyAgICBRQWN0aW9uKiByZWxvYWRBY3Rp
b24gPSBwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6UmVsb2FkKTsKKyAgICBjb25uZWN0KHJlbG9h
ZEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZCgpKSwgdGhpcywgU0xPVChjaGFuZ2VMb2NhdGlvbigp
KSk7CisKKyAgICBtX3Rvb2xCYXItPmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6
QmFjaykpOworICAgIG1fdG9vbEJhci0+YWRkQWN0aW9uKHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdl
OjpGb3J3YXJkKSk7CisgICAgbV90b29sQmFyLT5hZGRBY3Rpb24ocmVsb2FkQWN0aW9uKTsKKyAg
ICBtX3Rvb2xCYXItPmFkZEFjdGlvbihwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6U3RvcCkpOwor
CisjaWZuZGVmIFFUX05PX0lOUFVURElBTE9HCisgICAgdXJsRWRpdCA9IG5ldyBMb2NhdGlvbkVk
aXQobV90b29sQmFyKTsKKyAgICB1cmxFZGl0LT5zZXRTaXplUG9saWN5KFFTaXplUG9saWN5OjpF
eHBhbmRpbmcsIHVybEVkaXQtPnNpemVQb2xpY3koKS52ZXJ0aWNhbFBvbGljeSgpKTsKKyAgICBj
b25uZWN0KHVybEVkaXQsIFNJR05BTChyZXR1cm5QcmVzc2VkKCkpLCBTTE9UKGNoYW5nZUxvY2F0
aW9uKCkpKTsKKyAgICBRQ29tcGxldGVyKiBjb21wbGV0ZXIgPSBuZXcgUUNvbXBsZXRlcihtX3Rv
b2xCYXIpOworICAgIHVybEVkaXQtPnNldENvbXBsZXRlcihjb21wbGV0ZXIpOworICAgIGNvbXBs
ZXRlci0+c2V0TW9kZWwoJnVybE1vZGVsKTsKKyAgICBtX3Rvb2xCYXItPmFkZFdpZGdldCh1cmxF
ZGl0KTsKKworICAgIGNvbm5lY3QocGFnZSgpLT5tYWluRnJhbWUoKSwgU0lHTkFMKHVybENoYW5n
ZWQoUVVybCkpLCB0aGlzLCBTTE9UKHNldEFkZHJlc3NVcmwoUVVybCkpKTsKKyAgICBjb25uZWN0
KHBhZ2UoKSwgU0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwgdXJsRWRpdCwgU0xPVChzZXRQcm9n
cmVzcyhpbnQpKSk7CisjZW5kaWYKKworICAgIGNvbm5lY3QocGFnZSgpLT5tYWluRnJhbWUoKSwg
U0lHTkFMKGxvYWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKG9uTG9hZFN0YXJ0ZWQoKSkpOworICAg
IGNvbm5lY3QocGFnZSgpLT5tYWluRnJhbWUoKSwgU0lHTkFMKGljb25DaGFuZ2VkKCkpLCB0aGlz
LCBTTE9UKG9uSWNvbkNoYW5nZWQoKSkpOworICAgIGNvbm5lY3QocGFnZSgpLT5tYWluRnJhbWUo
KSwgU0lHTkFMKHRpdGxlQ2hhbmdlZChRU3RyaW5nKSksIHRoaXMsIFNMT1Qob25UaXRsZUNoYW5n
ZWQoUVN0cmluZykpKTsKKyAgICBjb25uZWN0KHBhZ2UoKSwgU0lHTkFMKHdpbmRvd0Nsb3NlUmVx
dWVzdGVkKCkpLCB0aGlzLCBTTE9UKGNsb3NlKCkpKTsKKworI2lmbmRlZiBRVF9OT19TSE9SVENV
VAorICAgIC8vIHNob3J0LWN1dHMKKyAgICBwYWdlKCktPmFjdGlvbihRV2ViUGFnZTo6QmFjaykt
PnNldFNob3J0Y3V0KFFLZXlTZXF1ZW5jZTo6QmFjayk7CisgICAgcGFnZSgpLT5hY3Rpb24oUVdl
YlBhZ2U6OlN0b3ApLT5zZXRTaG9ydGN1dChRdDo6S2V5X0VzY2FwZSk7CisgICAgcGFnZSgpLT5h
Y3Rpb24oUVdlYlBhZ2U6OkZvcndhcmQpLT5zZXRTaG9ydGN1dChRS2V5U2VxdWVuY2U6OkZvcndh
cmQpOworICAgIHBhZ2UoKS0+YWN0aW9uKFFXZWJQYWdlOjpSZWxvYWQpLT5zZXRTaG9ydGN1dChR
S2V5U2VxdWVuY2U6OlJlZnJlc2gpOworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBwYWdl
KCktPmFjdGlvbihRV2ViUGFnZTo6VW5kbyktPnNldFNob3J0Y3V0KFFLZXlTZXF1ZW5jZTo6VW5k
byk7CisgICAgcGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlJlZG8pLT5zZXRTaG9ydGN1dChRS2V5
U2VxdWVuY2U6OlJlZG8pOworI2VuZGlmCisgICAgcGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OkN1
dCktPnNldFNob3J0Y3V0KFFLZXlTZXF1ZW5jZTo6Q3V0KTsKKyAgICBwYWdlKCktPmFjdGlvbihR
V2ViUGFnZTo6Q29weSktPnNldFNob3J0Y3V0KFFLZXlTZXF1ZW5jZTo6Q29weSk7CisgICAgcGFn
ZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlBhc3RlKS0+c2V0U2hvcnRjdXQoUUtleVNlcXVlbmNlOjpQ
YXN0ZSk7CisgICAgcGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdEFsbCktPnNldFNob3J0
Y3V0KFFLZXlTZXF1ZW5jZTo6U2VsZWN0QWxsKTsKKworICAgIHBhZ2UoKS0+YWN0aW9uKFFXZWJQ
YWdlOjpUb2dnbGVCb2xkKS0+c2V0U2hvcnRjdXQoUUtleVNlcXVlbmNlKFF0OjpDVFJMIHwgUXQ6
OktleV9CKSk7CisgICAgcGFnZSgpLT5hY3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZUl0YWxpYyktPnNl
dFNob3J0Y3V0KFFLZXlTZXF1ZW5jZShRdDo6Q1RSTCB8IFF0OjpLZXlfSSkpOworICAgIHBhZ2Uo
KS0+YWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVVbmRlcmxpbmUpLT5zZXRTaG9ydGN1dChRS2V5U2Vx
dWVuY2UoUXQ6OkNUUkwgfCBRdDo6S2V5X1UpKTsKKyNlbmRpZgorfQorCit2b2lkIE1haW5XaW5k
b3c6OnNldFBhZ2UoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAocGFnZSAmJiBtX3BhZ2UpCisg
ICAgICAgIHBhZ2UtPnNldFVzZXJBZ2VudChtX3BhZ2UtPnVzZXJBZ2VudEZvclVybChRVXJsKCkp
KTsKKworICAgIGRlbGV0ZSBtX3BhZ2U7CisgICAgbV9wYWdlID0gcGFnZTsKKworICAgIGJ1aWxk
VUkoKTsKK30KKworV2ViUGFnZSogTWFpbldpbmRvdzo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcGFnZTsKK30KKwordm9pZCBNYWluV2luZG93OjpzZXRBZGRyZXNzVXJsKGNvbnN0IFFV
cmwmIHVybCkKK3sKKyAgICBzZXRBZGRyZXNzVXJsKHVybC50b1N0cmluZyhRVXJsOjpSZW1vdmVV
c2VySW5mbykpOworfQorCit2b2lkIE1haW5XaW5kb3c6OnNldEFkZHJlc3NVcmwoY29uc3QgUVN0
cmluZyYgdXJsKQoreworI2lmbmRlZiBRVF9OT19JTlBVVERJQUxPRworICAgIGlmICghdXJsLmNv
bnRhaW5zKCJhYm91dDoiKSkKKyAgICAgICAgdXJsRWRpdC0+c2V0VGV4dCh1cmwpOworI2VuZGlm
Cit9CisKK3ZvaWQgTWFpbldpbmRvdzo6YWRkQ29tcGxldGVyRW50cnkoY29uc3QgUVVybCYgdXJs
KQoreworICAgIFFVcmw6OkZvcm1hdHRpbmdPcHRpb25zIG9wdHM7CisgICAgb3B0cyB8PSBRVXJs
OjpSZW1vdmVTY2hlbWU7CisgICAgb3B0cyB8PSBRVXJsOjpSZW1vdmVVc2VySW5mbzsKKyAgICBv
cHRzIHw9IFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaDsKKyAgICBRU3RyaW5nIHMgPSB1cmwudG9T
dHJpbmcob3B0cyk7CisgICAgcyA9IHMubWlkKDIpOworICAgIGlmIChzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCF1cmxMaXN0LmNvbnRhaW5zKHMpKQorICAgICAgICB1
cmxMaXN0ICs9IHM7CisgICAgdXJsTW9kZWwuc2V0U3RyaW5nTGlzdCh1cmxMaXN0KTsKK30KKwor
dm9pZCBNYWluV2luZG93Ojpsb2FkKGNvbnN0IFFTdHJpbmcmIHVybCkKK3sKKyAgICBRVXJsIHF1
cmwgPSB1cmxGcm9tVXNlcklucHV0KHVybCk7CisgICAgaWYgKHF1cmwuc2NoZW1lKCkuaXNFbXB0
eSgpKQorICAgICAgICBxdXJsID0gUVVybCgiaHR0cDovLyIgKyB1cmwgKyAiLyIpOworICAgIGxv
YWQocXVybCk7Cit9CisKK3ZvaWQgTWFpbldpbmRvdzo6bG9hZChjb25zdCBRVXJsJiB1cmwpCit7
CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRBZGRy
ZXNzVXJsKHVybC50b1N0cmluZygpKTsKKyAgICBwYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkKHVy
bCk7Cit9CisKK1FTdHJpbmcgTWFpbldpbmRvdzo6YWRkcmVzc1VybCgpIGNvbnN0Cit7CisjaWZu
ZGVmIFFUX05PX0lOUFVURElBTE9HCisgICAgcmV0dXJuIHVybEVkaXQtPnRleHQoKTsKKyNlbmRp
ZgorICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK3ZvaWQgTWFpbldpbmRvdzo6Y2hhbmdlTG9j
YXRpb24oKQoreworI2lmbmRlZiBRVF9OT19JTlBVVERJQUxPRworICAgIFFTdHJpbmcgc3RyaW5n
ID0gdXJsRWRpdC0+dGV4dCgpOworICAgIFFVcmwgbWFpbkZyYW1lVVJMID0gcGFnZSgpLT5tYWlu
RnJhbWUoKS0+dXJsKCk7CisKKyAgICBpZiAobWFpbkZyYW1lVVJMLmlzVmFsaWQoKSAmJiBzdHJp
bmcgPT0gbWFpbkZyYW1lVVJMLnRvU3RyaW5nKCkpIHsKKyAgICAgICAgcGFnZSgpLT50cmlnZ2Vy
QWN0aW9uKFFXZWJQYWdlOjpSZWxvYWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bG9hZChzdHJpbmcpOworI2VuZGlmCit9CisKK3ZvaWQgTWFpbldpbmRvdzo6b3BlbkZpbGUoKQor
eworI2lmbmRlZiBRVF9OT19GSUxFRElBTE9HCisgICAgc3RhdGljIGNvbnN0IFFTdHJpbmcgZmls
dGVyKCJIVE1MIEZpbGVzICgqLmh0bSAqLmh0bWwpOztUZXh0IEZpbGVzICgqLnR4dCk7O0ltYWdl
IEZpbGVzICgqLmdpZiAqLmpwZyAqLnBuZyk7O0FsbCBGaWxlcyAoKikiKTsKKworICAgIFFGaWxl
RGlhbG9nIGZpbGVEaWFsb2codGhpcywgdHIoIk9wZW4iKSwgUVN0cmluZygpLCBmaWx0ZXIpOwor
ICAgIGZpbGVEaWFsb2cuc2V0QWNjZXB0TW9kZShRRmlsZURpYWxvZzo6QWNjZXB0T3Blbik7Cisg
ICAgZmlsZURpYWxvZy5zZXRGaWxlTW9kZShRRmlsZURpYWxvZzo6RXhpc3RpbmdGaWxlKTsKKyAg
ICBmaWxlRGlhbG9nLnNldE9wdGlvbnMoUUZpbGVEaWFsb2c6OlJlYWRPbmx5KTsKKworICAgIGlm
IChmaWxlRGlhbG9nLmV4ZWMoKSkgeworICAgICAgICBRU3RyaW5nIHNlbGVjdGVkRmlsZSA9IGZp
bGVEaWFsb2cuc2VsZWN0ZWRGaWxlcygpWzBdOworICAgICAgICBpZiAoIXNlbGVjdGVkRmlsZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBsb2FkKFFVcmw6OmZyb21Mb2NhbEZpbGUoc2VsZWN0ZWRG
aWxlKSk7CisgICAgfQorI2VuZGlmCit9CisKK3ZvaWQgTWFpbldpbmRvdzo6b3BlbkxvY2F0aW9u
KCkKK3sKKyNpZm5kZWYgUVRfTk9fSU5QVVRESUFMT0cKKyAgICB1cmxFZGl0LT5zZWxlY3RBbGwo
KTsKKyAgICB1cmxFZGl0LT5zZXRGb2N1cygpOworI2VuZGlmCit9CisKK3ZvaWQgTWFpbldpbmRv
dzo6b25JY29uQ2hhbmdlZCgpCit7CisjaWZuZGVmIFFUX05PX0lOUFVURElBTE9HCisgICAgdXJs
RWRpdC0+c2V0UGFnZUljb24ocGFnZSgpLT5tYWluRnJhbWUoKS0+aWNvbigpKTsKKyNlbmRpZgor
fQorCit2b2lkIE1haW5XaW5kb3c6Om9uTG9hZFN0YXJ0ZWQoKQoreworI2lmbmRlZiBRVF9OT19J
TlBVVERJQUxPRworICAgIHVybEVkaXQtPnNldFBhZ2VJY29uKFFJY29uKCkpOworI2VuZGlmCit9
CisKK3ZvaWQgTWFpbldpbmRvdzo6b25UaXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgdGl0bGUp
Cit7CisgICAgaWYgKHRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgc2V0V2luZG93VGl0bGUoUUNv
cmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCkpOworICAgIGVsc2UKKyAgICAgICAgc2V0
V2luZG93VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiJTEgLSAlMiIpLmFyZyh0aXRsZSkuYXJn
KFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uTmFtZSgpKSk7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9RdFRlc3RCcm93c2VyL21haW53aW5kb3cuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbWFp
bndpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzY5NTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL21haW53aW5kb3cuaApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA5IEdpcmlzaCBS
YW1ha3Jpc2huYW4gPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2
IERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFph
Y2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTaW1vbiBIYXVz
bWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgbWFpbndpbmRvd19oCisjZGVmaW5lIG1haW53aW5kb3dfaAorCisjaW5jbHVk
ZSAid2VicGFnZS5oIgorCisjaW5jbHVkZSA8UU1haW5XaW5kb3c+CisjaW5jbHVkZSA8UVN0cmlu
Z0xpc3RNb2RlbD4KKyNpbmNsdWRlIDxRVG9vbEJhcj4KKworY2xhc3MgTG9jYXRpb25FZGl0Owor
CitjbGFzcyBNYWluV2luZG93IDogcHVibGljIFFNYWluV2luZG93IHsKKyAgICBRX09CSkVDVAor
CitwdWJsaWM6CisgICAgTWFpbldpbmRvdygpOworCisgICAgdm9pZCBhZGRDb21wbGV0ZXJFbnRy
eShjb25zdCBRVXJsJiB1cmwpOworCisgICAgdm9pZCBsb2FkKGNvbnN0IFFTdHJpbmcmIHVybCk7
CisgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwmIHVybCk7CisKKyAgICBXZWJQYWdlKiBwYWdlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRQYWdlKFdlYlBhZ2UqKTsKKworcHJvdGVjdGVkIFFfU0xPVFM6
CisgICAgdm9pZCBzZXRBZGRyZXNzVXJsKGNvbnN0IFFTdHJpbmcmIHVybCk7CisgICAgdm9pZCBz
ZXRBZGRyZXNzVXJsKGNvbnN0IFFVcmwmIHVybCk7CisgICAgdm9pZCBvcGVuRmlsZSgpOworICAg
IHZvaWQgb3BlbkxvY2F0aW9uKCk7CisgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbigpOworICAgIHZv
aWQgb25JY29uQ2hhbmdlZCgpOworICAgIHZvaWQgb25Mb2FkU3RhcnRlZCgpOworICAgIHZvaWQg
b25UaXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYpOworCitwcm90ZWN0ZWQ6CisgICAgUVN0cmlu
ZyBhZGRyZXNzVXJsKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBidWlsZFVJKCk7CisK
KyAgICBXZWJQYWdlKiBtX3BhZ2U7CisgICAgUVRvb2xCYXIqIG1fdG9vbEJhcjsKKyAgICBRU3Ry
aW5nTGlzdE1vZGVsIHVybE1vZGVsOworICAgIFFTdHJpbmdMaXN0IHVybExpc3Q7CisgICAgTG9j
YXRpb25FZGl0KiB1cmxFZGl0OworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9RdFRl
c3RCcm93c2VyL3F0dGVzdGJyb3dzZXIuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9xdHRlc3Ri
cm93c2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmQ3ZDBjCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9xdHRlc3Ricm93c2VyLmNwcApA
QCAtMCwwICsxLDMyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQbGMgYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdpcmlzaCBSYW1ha3Jpc2huYW4gPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KKyAqIENvcHly
aWdodCAoQykgMjAwNiBHZW9yZ2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDA2IERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAw
NiBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KKyAqCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgorI2lu
Y2x1ZGUgIlF0VGVzdFN1cHBvcnQuaCIKKyNpbmNsdWRlICJsYXVuY2hlcndpbmRvdy5oIgorI2lu
Y2x1ZGUgInVybGxvYWRlci5oIgorCitXaW5kb3dPcHRpb25zIHdpbmRvd09wdGlvbnM7CisKKyNp
bmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRlIDxRRmlsZT4K
KyNpbmNsdWRlIDxRRmlsZUluZm8+CisjaW5jbHVkZSA8UUZvbnREYXRhYmFzZT4KKworaW50IGxh
dW5jaGVyTWFpbihjb25zdCBRQXBwbGljYXRpb24mIGFwcCkKK3sKKyNpZm5kZWYgTkRFQlVHCisg
ICAgaW50IHJldFZhbCA9IGFwcC5leGVjKCk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmdhcmJhZ2VDb2xsZWN0b3JDb2xsZWN0KCk7CisgICAgUVdlYlNldHRpbmdzOjpjbGVhck1lbW9y
eUNhY2hlcygpOworICAgIHJldHVybiByZXRWYWw7CisjZWxzZQorICAgIHJldHVybiBhcHAuZXhl
YygpOworI2VuZGlmCit9CisKK2NsYXNzIExhdW5jaGVyQXBwbGljYXRpb24gOiBwdWJsaWMgUUFw
cGxpY2F0aW9uIHsKKyAgICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgTGF1bmNoZXJBcHBsaWNh
dGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KTsKKyAgICBRU3RyaW5nTGlzdCB1cmxzKCkgY29u
c3QgeyByZXR1cm4gbV91cmxzOyB9CisgICAgYm9vbCBpc1JvYm90aXplZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNSb2JvdGl6ZWQ7IH0KKyAgICBpbnQgcm9ib3RUaW1lb3V0KCkgY29uc3QgeyByZXR1
cm4gbV9yb2JvdFRpbWVvdXRTZWNvbmRzOyB9CisgICAgaW50IHJvYm90RXh0cmFUaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9yb2JvdEV4dHJhVGltZVNlY29uZHM7IH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGhhbmRsZVVzZXJPcHRpb25zKCk7CisgICAgdm9pZCBhcHBseURlZmF1bHRTZXR0aW5ncygp
OworCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1JvYm90aXplZDsKKyAgICBpbnQgbV9yb2JvdFRp
bWVvdXRTZWNvbmRzOworICAgIGludCBtX3JvYm90RXh0cmFUaW1lU2Vjb25kczsKKyAgICBRU3Ry
aW5nTGlzdCBtX3VybHM7Cit9OworCit2b2lkIExhdW5jaGVyQXBwbGljYXRpb246OmFwcGx5RGVm
YXVsdFNldHRpbmdzKCkKK3sKKyAgICBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2Fj
aGUoNCk7CisKKyAgICBRV2ViU2V0dGluZ3M6OnNldE9iamVjdENhY2hlQ2FwYWNpdGllcygoMTYq
MTAyNCoxMDI0KSAvIDgsICgxNioxMDI0KjEwMjQpIC8gOCwgMTYqMTAyNCoxMDI0KTsKKworICAg
IFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5n
czo6UGx1Z2luc0VuYWJsZWQsIHRydWUpOworICAgIFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGlu
Z3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwg
dHJ1ZSk7CisgICAgUVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSgpOworfQor
CitMYXVuY2hlckFwcGxpY2F0aW9uOjpMYXVuY2hlckFwcGxpY2F0aW9uKGludCYgYXJnYywgY2hh
cioqIGFyZ3YpCisgICAgOiBRQXBwbGljYXRpb24oYXJnYywgYXJndikKKyAgICAsIG1faXNSb2Jv
dGl6ZWQoZmFsc2UpCisgICAgLCBtX3JvYm90VGltZW91dFNlY29uZHMoMCkKKyAgICAsIG1fcm9i
b3RFeHRyYVRpbWVTZWNvbmRzKDApCit7CisgICAgLy8gVG8gYWxsb3cgUVdlYkluc3BlY3Rvcidz
IGNvbmZpZ3VyYXRpb24gcGVyc2lzdGVuY2UKKyAgICBzZXRPcmdhbml6YXRpb25OYW1lKCJRdFBy
b2plY3QiKTsKKyAgICBzZXRBcHBsaWNhdGlvbk5hbWUoIlF0VGVzdEJyb3dzZXIiKTsKKyAgICBz
ZXRBcHBsaWNhdGlvblZlcnNpb24oIjAuMSIpOworCisgICAgYXBwbHlEZWZhdWx0U2V0dGluZ3Mo
KTsKKworICAgIGhhbmRsZVVzZXJPcHRpb25zKCk7Cit9CisKK3N0YXRpYyB2b2lkIHJlcXVpcmVz
R3JhcGhpY3NWaWV3KGNvbnN0IFFTdHJpbmcmIG9wdGlvbikKK3sKKyAgICBpZiAod2luZG93T3B0
aW9ucy51c2VHcmFwaGljc1ZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICBhcHBRdWl0KDEsIFFT
dHJpbmcoIiUxIG9ubHkgd29ya3MgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgLWdyYXBoaWNzYmFz
ZWQgb3B0aW9uIikuYXJnKG9wdGlvbikpOworfQorCit2b2lkIExhdW5jaGVyQXBwbGljYXRpb246
OmhhbmRsZVVzZXJPcHRpb25zKCkKK3sKKyAgICBRU3RyaW5nTGlzdCBhcmdzID0gYXJndW1lbnRz
KCk7CisgICAgUUZpbGVJbmZvIHByb2dyYW0oYXJncy5hdCgwKSk7CisgICAgUVN0cmluZyBwcm9n
cmFtTmFtZSgiUXRUZXN0QnJvd3NlciIpOworICAgIGlmIChwcm9ncmFtLmV4aXN0cygpKQorICAg
ICAgICBwcm9ncmFtTmFtZSA9IHByb2dyYW0uYmFzZU5hbWUoKTsKKworICAgIFFMaXN0PFFTdHJp
bmc+IHVwZGF0ZU1vZGVzKGVudW1Ub0tleXMoUUdyYXBoaWNzVmlldzo6c3RhdGljTWV0YU9iamVj
dCwKKyAgICAgICAgICAgICJWaWV3cG9ydFVwZGF0ZU1vZGUiLCAiVmlld3BvcnRVcGRhdGUiKSk7
CisKKyAgICBpZiAoYXJncy5jb250YWlucygiLWhlbHAiKSkgeworICAgICAgICBxRGVidWcoKSA8
PCAiVXNhZ2U6IiA8PCBwcm9ncmFtTmFtZS50b0xhdGluMSgpLmRhdGEoKQorICAgICAgICAgICAg
IDw8ICJbLWdyYXBoaWNzYmFzZWRdIgorICAgICAgICAgICAgIDw8ICJbLW5vLWNvbXBvc2l0aW5n
XSIKKyNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCisgICAgICAgICAgICAg
PDwgIlstZ2wtdmlld3BvcnRdIgorICAgICAgICAgICAgIDw8ICJbLXdlYmdsXSIKKyNlbmRpZgor
ICAgICAgICAgICAgIDw8IFFTdHJpbmcoIlstdmlld3BvcnQtdXBkYXRlLW1vZGUgJTFdIikuYXJn
KGZvcm1hdEtleXModXBkYXRlTW9kZXMpKS50b0xhdGluMSgpLmRhdGEoKQorI2lmICFkZWZpbmVk
KFFUX05PX05FVFdPUktESVNLQ0FDSEUpICYmICFkZWZpbmVkKFFUX05PX0RFU0tUT1BTRVJWSUNF
UykKKyAgICAgICAgICAgICA8PCAiWy1kaXNrLWNhY2hlXSIKKyNlbmRpZgorICAgICAgICAgICAg
IDw8ICJbLWNhY2hlLXdlYnZpZXddIgorICAgICAgICAgICAgIDw8ICJbLW1heGltaXplXSIKKyAg
ICAgICAgICAgICA8PCAiWy1zaG93LWZwc10iCisgICAgICAgICAgICAgPDwgIlstciBsaXN0XSIK
KyAgICAgICAgICAgICA8PCAiWy1yb2JvdC10aW1lb3V0IHNlY29uZHNdIgorICAgICAgICAgICAg
IDw8ICJbLXJvYm90LWV4dHJhLXRpbWUgc2Vjb25kc10iCisgICAgICAgICAgICAgPDwgIlstaW5z
cGVjdG9yLXVybCBsb2NhdGlvbl0iCisgICAgICAgICAgICAgPDwgIlstdGlsZWQtYmFja2luZy1z
dG9yZV0iCisgICAgICAgICAgICAgPDwgIlstcmVzaXplcy10by1jb250ZW50c10iCisgICAgICAg
ICAgICAgPDwgIlstbG9jYWwtc3RvcmFnZS1lbmFibGVkXSIKKyAgICAgICAgICAgICA8PCAiWy1u
by1kaXNrLWNvb2tpZXNdIgorICAgICAgICAgICAgIDw8ICJbLW9mZmxpbmUtc3RvcmFnZS1kYXRh
YmFzZS1lbmFibGVkXSIKKyAgICAgICAgICAgICA8PCAiWy1vZmZsaW5lLXdlYi1hcHBsaWNhdGlv
bi1jYWNoZS1lbmFibGVkXSIKKyAgICAgICAgICAgICA8PCAiWy1zZXQtb2ZmbGluZS1zdG9yYWdl
LWRlZmF1bHQtcXVvdGEgbWF4U2l6ZV0iCisgICAgICAgICAgICAgPDwgIlstdXNlLXRlc3QtZm9u
dHNdIgorICAgICAgICAgICAgIDw8ICJbLXByaW50LWxvYWRlZC11cmxzXSIKKyAgICAgICAgICAg
ICA8PCAiVVJMcyI7CisgICAgICAgIGFwcFF1aXQoMCk7CisgICAgfQorCisgICAgY29uc3QgYm9v
bCBkZWZhdWx0Rm9yQW5pbWF0aW9ucyA9IGFyZ3MuY29udGFpbnMoIi1kZWZhdWx0LWFuaW1hdGlv
bnMiKTsKKyAgICBpZiAoYXJncy5jb250YWlucygiLWdyYXBoaWNzYmFzZWQiKSB8fCBkZWZhdWx0
Rm9yQW5pbWF0aW9ucykKKyAgICAgICAgd2luZG93T3B0aW9ucy51c2VHcmFwaGljc1ZpZXcgPSB0
cnVlOworCisgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1uby1jb21wb3NpdGluZyIpKSB7CisgICAg
ICAgIHJlcXVpcmVzR3JhcGhpY3NWaWV3KCItbm8tY29tcG9zaXRpbmciKTsKKyAgICAgICAgd2lu
ZG93T3B0aW9ucy51c2VDb21wb3NpdGluZyA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChhcmdz
LmNvbnRhaW5zKCItc2hvdy1mcHMiKSkgeworICAgICAgICByZXF1aXJlc0dyYXBoaWNzVmlldygi
LXNob3ctZnBzIik7CisgICAgICAgIHdpbmRvd09wdGlvbnMuc2hvd0ZyYW1lUmF0ZSA9IHRydWU7
CisgICAgfQorCisgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1kaXNrLWNhY2hlIikpIHsKKyNpZiAh
ZGVmaW5lZChRVF9OT19ORVRXT1JLRElTS0NBQ0hFKSAmJiAhZGVmaW5lZChRVF9OT19ERVNLVE9Q
U0VSVklDRVMpCisgICAgICAgIHdpbmRvd09wdGlvbnMudXNlRGlza0NhY2hlID0gdHJ1ZTsKKyNl
bHNlCisgICAgYXBwUXVpdCgxLCAiLWRpc2stY2FjaGUgb25seSB3b3JrcyBpZiBRTmV0d29ya0Rp
c2tDYWNoZSBhbmQgUURlc2t0b3BTZXJ2aWNlcyBpcyBlbmFibGVkIGluIHlvdXIgUXQgYnVpbGQu
Iik7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoYXJncy5jb250YWlucygiLWNhY2hlLXdlYnZp
ZXciKSB8fCBkZWZhdWx0Rm9yQW5pbWF0aW9ucykgeworICAgICAgICByZXF1aXJlc0dyYXBoaWNz
VmlldygiLWNhY2hlLXdlYnZpZXciKTsKKyAgICAgICAgd2luZG93T3B0aW9ucy5jYWNoZVdlYlZp
ZXcgPSB0cnVlOworICAgIH0KKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCItdGlsZWQtYmFja2lu
Zy1zdG9yZSIpKSB7CisgICAgICAgIHJlcXVpcmVzR3JhcGhpY3NWaWV3KCItdGlsZWQtYmFja2lu
Zy1zdG9yZSIpOworICAgICAgICB3aW5kb3dPcHRpb25zLnVzZVRpbGVkQmFja2luZ1N0b3JlID0g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoYXJncy5jb250YWlucygiLXJlc2l6ZXMtdG8tY29udGVu
dHMiKSkgeworICAgICAgICByZXF1aXJlc0dyYXBoaWNzVmlldygiLXJlc2l6ZXMtdG8tY29udGVu
dHMiKTsKKyAgICAgICAgd2luZG93T3B0aW9ucy5yZXNpemVzVG9Db250ZW50cyA9IHRydWU7Cisg
ICAgfQorICAgIAorICAgIGlmIChhcmdzLmNvbnRhaW5zKCItbG9jYWwtc3RvcmFnZS1lbmFibGVk
IikpCisgICAgICAgIHdpbmRvd09wdGlvbnMudXNlTG9jYWxTdG9yYWdlID0gdHJ1ZTsKKworICAg
IGlmIChhcmdzLmNvbnRhaW5zKCItbm8tZGlzay1jb29raWVzIikpCisgICAgICAgIHdpbmRvd09w
dGlvbnMudXNlRGlza0Nvb2tpZXMgPSBmYWxzZTsKKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCIt
bWF4aW1pemUiKSkKKyAgICAgICAgd2luZG93T3B0aW9ucy5zdGFydE1heGltaXplZCA9IHRydWU7
CisKKyAgICBpZiAoYXJncy5jb250YWlucygiLW9mZmxpbmUtc3RvcmFnZS1kYXRhYmFzZS1lbmFi
bGVkIikpCisgICAgICAgIHdpbmRvd09wdGlvbnMudXNlT2ZmbGluZVN0b3JhZ2VEYXRhYmFzZSA9
IHRydWU7CisgICAgICAgIAorICAgIGlmIChhcmdzLmNvbnRhaW5zKCItb2ZmbGluZS13ZWItYXBw
bGljYXRpb24tY2FjaGUtZW5hYmxlZCIpKSAgIAorICAgICAgICB3aW5kb3dPcHRpb25zLnVzZU9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlID0gdHJ1ZTsKKyAgICAKKyAgICBpbnQgc2V0T2ZmbGlu
ZVN0b3JhZ2VEZWZhdWx0UXVvdGFJbmRleCA9IGFyZ3MuaW5kZXhPZigiLXNldC1vZmZsaW5lLXN0
b3JhZ2UtZGVmYXVsdC1xdW90YSIpOworICAgIGlmIChzZXRPZmZsaW5lU3RvcmFnZURlZmF1bHRR
dW90YUluZGV4ICE9IC0xKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBtYXhTaXplID0gdGFrZU9w
dGlvblZhbHVlKCZhcmdzLCBzZXRPZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YUluZGV4KS50b1VJ
bnQoKTsKKyAgICAgICAgd2luZG93T3B0aW9ucy5vZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YVNp
emUgPSBtYXhTaXplOworICAgIH0gICAKKyAgICAKKyAgICBpZiAoZGVmYXVsdEZvckFuaW1hdGlv
bnMpCisgICAgICAgIHdpbmRvd09wdGlvbnMudmlld3BvcnRVcGRhdGVNb2RlID0gUUdyYXBoaWNz
Vmlldzo6Qm91bmRpbmdSZWN0Vmlld3BvcnRVcGRhdGU7CisKKyAgICBRU3RyaW5nIGFyZzEoIi12
aWV3cG9ydC11cGRhdGUtbW9kZSIpOworICAgIGludCBtb2RlSW5kZXggPSBhcmdzLmluZGV4T2Yo
YXJnMSk7CisgICAgaWYgKG1vZGVJbmRleCAhPSAtMSkgeworICAgICAgICByZXF1aXJlc0dyYXBo
aWNzVmlldyhhcmcxKTsKKworICAgICAgICBRU3RyaW5nIG1vZGUgPSB0YWtlT3B0aW9uVmFsdWUo
JmFyZ3MsIG1vZGVJbmRleCk7CisgICAgICAgIGlmIChtb2RlLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIGFwcFF1aXQoMSwgUVN0cmluZygiJTEgbmVlZHMgYSB2YWx1ZSBvZiBvbmUgb2YgWyUyXSIp
LmFyZyhhcmcxKS5hcmcoZm9ybWF0S2V5cyh1cGRhdGVNb2RlcykpKTsKKyAgICAgICAgaW50IGlk
eCA9IHVwZGF0ZU1vZGVzLmluZGV4T2YobW9kZSk7CisgICAgICAgIGlmIChpZHggPT0gLTEpCisg
ICAgICAgICAgICBhcHBRdWl0KDEsIFFTdHJpbmcoIiUxIHZhbHVlIGhhcyB0byBiZSBvbmUgb2Yg
WyUyXSIpLmFyZyhhcmcxKS5hcmcoZm9ybWF0S2V5cyh1cGRhdGVNb2RlcykpKTsKKworICAgICAg
ICB3aW5kb3dPcHRpb25zLnZpZXdwb3J0VXBkYXRlTW9kZSA9IHN0YXRpY19jYXN0PFFHcmFwaGlj
c1ZpZXc6OlZpZXdwb3J0VXBkYXRlTW9kZT4oaWR4KTsKKyAgICB9CisjaWZkZWYgUVRfQ09ORklH
VVJFRF9XSVRIX09QRU5HTAorICAgIGlmIChhcmdzLmNvbnRhaW5zKCItZ2wtdmlld3BvcnQiKSB8
fCBkZWZhdWx0Rm9yQW5pbWF0aW9ucykgeworICAgICAgICByZXF1aXJlc0dyYXBoaWNzVmlldygi
LWdsLXZpZXdwb3J0Iik7CisgICAgICAgIHdpbmRvd09wdGlvbnMudXNlUUdMV2lkZ2V0Vmlld3Bv
cnQgPSB0cnVlOworICAgIH0KKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCItd2ViZ2wiKSkgewor
ICAgICAgICByZXF1aXJlc0dyYXBoaWNzVmlldygiLXdlYmdsIik7CisgICAgICAgIHdpbmRvd09w
dGlvbnMudXNlV2ViR0wgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKGFyZ3MuY29u
dGFpbnMoIi11c2UtdGVzdC1mb250cyIpKQorICAgICAgICBXZWJLaXQ6OlF0VGVzdFN1cHBvcnQ6
OmluaXRpYWxpemVUZXN0Rm9udHMoKTsKKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCItcHJpbnQt
bG9hZGVkLXVybHMiKSkKKyAgICAgICAgd2luZG93T3B0aW9ucy5wcmludExvYWRlZFVybHMgPSB0
cnVlOworCisgICAgUVN0cmluZyBpbnNwZWN0b3JVcmxBcmcoIi1pbnNwZWN0b3ItdXJsIik7Cisg
ICAgaW50IGluc3BlY3RvclVybEluZGV4ID0gYXJncy5pbmRleE9mKGluc3BlY3RvclVybEFyZyk7
CisgICAgaWYgKGluc3BlY3RvclVybEluZGV4ICE9IC0xKQorICAgICAgIHdpbmRvd09wdGlvbnMu
aW5zcGVjdG9yVXJsID0gdGFrZU9wdGlvblZhbHVlKCZhcmdzLCBpbnNwZWN0b3JVcmxJbmRleCk7
CisKKyAgICBRU3RyaW5nIHJlbW90ZUluc3BlY3RvclBvcnRBcmcoIi1yZW1vdGUtaW5zcGVjdG9y
LXBvcnQiKTsKKyAgICBpbnQgcmVtb3RlSW5zcGVjdG9yUG9ydEluZGV4ID0gYXJncy5pbmRleE9m
KHJlbW90ZUluc3BlY3RvclBvcnRBcmcpOworICAgIGlmIChyZW1vdGVJbnNwZWN0b3JQb3J0SW5k
ZXggIT0gLTEpCisgICAgICAgIHdpbmRvd09wdGlvbnMucmVtb3RlSW5zcGVjdG9yUG9ydCA9IHRh
a2VPcHRpb25WYWx1ZSgmYXJncywgcmVtb3RlSW5zcGVjdG9yUG9ydEluZGV4KS50b0ludCgpOwor
CisgICAgaW50IHJvYm90SW5kZXggPSBhcmdzLmluZGV4T2YoIi1yIik7CisgICAgaWYgKHJvYm90
SW5kZXggIT0gLTEpIHsKKyAgICAgICAgUVN0cmluZyBsaXN0RmlsZSA9IHRha2VPcHRpb25WYWx1
ZSgmYXJncywgcm9ib3RJbmRleCk7CisgICAgICAgIGlmIChsaXN0RmlsZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBhcHBRdWl0KDEsICItciBuZWVkcyBhIGxpc3QgZmlsZSB0byBzdGFydCBpbiBy
b2JvdGl6ZWQgbW9kZSIpOworICAgICAgICBpZiAoIVFGaWxlOjpleGlzdHMobGlzdEZpbGUpKQor
ICAgICAgICAgICAgYXBwUXVpdCgxLCAiVGhlIGxpc3QgZmlsZSBzdXBwbGllZCB0byAtciBkb2Vz
IG5vdCBleGlzdC4iKTsKKworICAgICAgICBtX2lzUm9ib3RpemVkID0gdHJ1ZTsKKyAgICAgICAg
bV91cmxzID0gUVN0cmluZ0xpc3QobGlzdEZpbGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlu
dCBsYXN0QXJnID0gYXJncy5sYXN0SW5kZXhPZihRUmVnRXhwKCJeLS4qIikpOworICAgICAgICBt
X3VybHMgPSAobGFzdEFyZyAhPSAtMSkgPyBhcmdzLm1pZCgrK2xhc3RBcmcpIDogYXJncy5taWQo
MSk7CisgICAgfQorCisgICAgaW50IHJvYm90VGltZW91dEluZGV4ID0gYXJncy5pbmRleE9mKCIt
cm9ib3QtdGltZW91dCIpOworICAgIGlmIChyb2JvdFRpbWVvdXRJbmRleCAhPSAtMSkKKyAgICAg
ICAgbV9yb2JvdFRpbWVvdXRTZWNvbmRzID0gdGFrZU9wdGlvblZhbHVlKCZhcmdzLCByb2JvdFRp
bWVvdXRJbmRleCkudG9JbnQoKTsKKworICAgIGludCByb2JvdEV4dHJhVGltZUluZGV4ID0gYXJn
cy5pbmRleE9mKCItcm9ib3QtZXh0cmEtdGltZSIpOworICAgIGlmIChyb2JvdEV4dHJhVGltZUlu
ZGV4ICE9IC0xKQorICAgICAgICBtX3JvYm90RXh0cmFUaW1lU2Vjb25kcyA9IHRha2VPcHRpb25W
YWx1ZSgmYXJncywgcm9ib3RFeHRyYVRpbWVJbmRleCkudG9JbnQoKTsKK30KKworCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgTGF1bmNoZXJBcHBsaWNhdGlvbiBhcHAo
YXJnYywgYXJndik7CisKKyAgICBpZiAoYXBwLmlzUm9ib3RpemVkKCkpIHsKKyAgICAgICAgTGF1
bmNoZXJXaW5kb3cqIHdpbmRvdyA9IG5ldyBMYXVuY2hlcldpbmRvdygpOworICAgICAgICBVcmxM
b2FkZXIgbG9hZGVyKHdpbmRvdy0+cGFnZSgpLT5tYWluRnJhbWUoKSwgYXBwLnVybHMoKS5hdCgw
KSwgYXBwLnJvYm90VGltZW91dCgpLCBhcHAucm9ib3RFeHRyYVRpbWUoKSk7CisgICAgICAgIGxv
YWRlci5sb2FkTmV4dCgpOworICAgICAgICB3aW5kb3ctPnNob3coKTsKKyAgICAgICAgcmV0dXJu
IGxhdW5jaGVyTWFpbihhcHApOworICAgIH0KKworICAgIFFTdHJpbmdMaXN0IHVybHMgPSBhcHAu
dXJscygpOworCisgICAgaWYgKHVybHMuaXNFbXB0eSgpKSB7CisgICAgICAgIFFTdHJpbmcgZGVm
YXVsdEluZGV4RmlsZSA9IFFTdHJpbmcoIiUxLyUyIikuYXJnKFFEaXI6OmhvbWVQYXRoKCkpLmFy
ZyhRTGF0aW4xU3RyaW5nKCJpbmRleC5odG1sIikpOworICAgICAgICBpZiAoUUZpbGUoZGVmYXVs
dEluZGV4RmlsZSkuZXhpc3RzKCkpCisgICAgICAgICAgICB1cmxzLmFwcGVuZChRU3RyaW5nKCJm
aWxlOi8vIikgKyBkZWZhdWx0SW5kZXhGaWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dXJscy5hcHBlbmQoImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iKTsKKyAgICB9CisKKyAgICBMYXVu
Y2hlcldpbmRvdyogd2luZG93ID0gMDsKKyAgICBmb3JlYWNoIChRU3RyaW5nIHVybCwgdXJscykg
eworICAgICAgICBMYXVuY2hlcldpbmRvdyogbmV3V2luZG93OworICAgICAgICBpZiAoIXdpbmRv
dykKKyAgICAgICAgICAgIG5ld1dpbmRvdyA9IHdpbmRvdyA9IG5ldyBMYXVuY2hlcldpbmRvdygm
d2luZG93T3B0aW9ucyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld1dpbmRvdyA9IHdp
bmRvdy0+bmV3V2luZG93KCk7CisKKyAgICAgICAgbmV3V2luZG93LT5sb2FkKHVybCk7CisgICAg
fQorCisgICAgd2luZG93LT5zaG93KCk7CisgICAgcmV0dXJuIGxhdW5jaGVyTWFpbihhcHApOwor
fQorCisjaW5jbHVkZSAicXR0ZXN0YnJvd3Nlci5tb2MiCmRpZmYgLS1naXQgYS9Ub29scy9RdFRl
c3RCcm93c2VyL3VybGxvYWRlci5jcHAgYi9Ub29scy9RdFRlc3RCcm93c2VyL3VybGxvYWRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFlNzIyYgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvdXJsbG9hZGVyLmNwcApAQCAtMCwwICsxLDEz
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgInVy
bGxvYWRlci5oIgorCisjaW5jbHVkZSA8UUZpbGU+CisjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1
ZGUgPFFXZWJQYWdlPgorCitVcmxMb2FkZXI6OlVybExvYWRlcihRV2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBRU3RyaW5nJiBpbnB1dEZpbGVOYW1lLCBpbnQgdGltZW91dFNlY29uZHMsIGludCBleHRy
YVRpbWVTZWNvbmRzKQorICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fc3RkT3V0KHN0ZG91
dCkKKyAgICAsIG1fbG9hZGVkKDApCisgICAgLCBtX251bUZyYW1lc0xvYWRpbmcoMCkKK3sKKyAg
ICBtX2NoZWNrSWZGaW5pc2hlZFRpbWVyLnNldEludGVydmFsKDIwMCk7CisgICAgbV9jaGVja0lm
RmluaXNoZWRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOworICAgIGNvbm5lY3QoJm1fY2hlY2tJ
ZkZpbmlzaGVkVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGNoZWNrSWZGaW5p
c2hlZCgpKSk7CisgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRGaW5pc2hlZCBvbiBRV2ViUGFn
ZSBpcyBlbWl0dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQorICAgIGNvbm5lY3QobV9mcmFt
ZS0+cGFnZSgpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkU3Rh
cnRlZCgpKSk7CisgICAgY29ubmVjdChtX2ZyYW1lLT5wYWdlKCksIFNJR05BTChsb2FkRmluaXNo
ZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsKKworICAgIGlmICh0
aW1lb3V0U2Vjb25kcykgeworICAgICAgICBtX3RpbWVvdXRUaW1lci5zZXRJbnRlcnZhbCh0aW1l
b3V0U2Vjb25kcyAqIDEwMDApOworICAgICAgICBtX3RpbWVvdXRUaW1lci5zZXRTaW5nbGVTaG90
KHRydWUpOworICAgICAgICBjb25uZWN0KGZyYW1lLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksICZt
X3RpbWVvdXRUaW1lciwgU0xPVChzdGFydCgpKSk7CisgICAgICAgIGNvbm5lY3QoJm1fdGltZW91
dFRpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChsb2FkTmV4dCgpKSk7CisgICAg
fQorICAgIGlmIChleHRyYVRpbWVTZWNvbmRzKSB7CisgICAgICAgIG1fZXh0cmFUaW1lVGltZXIu
c2V0SW50ZXJ2YWwoZXh0cmFUaW1lU2Vjb25kcyAqIDEwMDApOworICAgICAgICBtX2V4dHJhVGlt
ZVRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7CisgICAgICAgIGNvbm5lY3QodGhpcywgU0lHTkFM
KHBhZ2VMb2FkRmluaXNoZWQoKSksICZtX2V4dHJhVGltZVRpbWVyLCBTTE9UKHN0YXJ0KCkpKTsK
KyAgICAgICAgY29ubmVjdCgmbV9leHRyYVRpbWVUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRo
aXMsIFNMT1QobG9hZE5leHQoKSkpOworICAgIH0gZWxzZQorICAgICAgICBjb25uZWN0KHRoaXMs
IFNJR05BTChwYWdlTG9hZEZpbmlzaGVkKCkpLCB0aGlzLCBTTE9UKGxvYWROZXh0KCkpKTsKKyAg
ICBsb2FkVXJsTGlzdChpbnB1dEZpbGVOYW1lKTsKK30KKwordm9pZCBVcmxMb2FkZXI6OmxvYWRO
ZXh0KCkKK3sKKyAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgbV9leHRyYVRpbWVUaW1l
ci5zdG9wKCk7CisgICAgbV9jaGVja0lmRmluaXNoZWRUaW1lci5zdG9wKCk7CisgICAgbV9udW1G
cmFtZXNMb2FkaW5nID0gMDsKKyAgICBRU3RyaW5nIHFzdHI7CisgICAgaWYgKGdldFVybChxc3Ry
KSkgeworICAgICAgICBRVXJsIHVybChxc3RyLCBRVXJsOjpTdHJpY3RNb2RlKTsKKyAgICAgICAg
aWYgKHVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fc3RkT3V0IDw8ICJMb2FkaW5nICIg
PDwgcXN0ciA8PCAiIC4uLi4uLiIgPDwgKyttX2xvYWRlZCA8PCBlbmRsOworICAgICAgICAgICAg
bV9mcmFtZS0+bG9hZCh1cmwpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvYWROZXh0
KCk7CisgICAgfSBlbHNlCisgICAgICAgIGRpc2Nvbm5lY3QobV9mcmFtZSwgMCwgdGhpcywgMCk7
Cit9CisKK3ZvaWQgVXJsTG9hZGVyOjpjaGVja0lmRmluaXNoZWQoKQoreworICAgIGlmICghbV9u
dW1GcmFtZXNMb2FkaW5nKQorICAgICAgICBlbWl0IHBhZ2VMb2FkRmluaXNoZWQoKTsKK30KKwor
dm9pZCBVcmxMb2FkZXI6OmZyYW1lTG9hZFN0YXJ0ZWQoKQoreworICAgICsrbV9udW1GcmFtZXNM
b2FkaW5nOworICAgIG1fY2hlY2tJZkZpbmlzaGVkVGltZXIuc3RvcCgpOworfQorCit2b2lkIFVy
bExvYWRlcjo6ZnJhbWVMb2FkRmluaXNoZWQoKQoreworICAgIFFfQVNTRVJUKG1fbnVtRnJhbWVz
TG9hZGluZyA+IDApOworICAgIC0tbV9udW1GcmFtZXNMb2FkaW5nOworICAgIC8vIE9uY2Ugb3Vy
IGZyYW1lIGhhcyBmaW5pc2hlZCBsb2FkaW5nLCB3YWl0IGEgbW9tZW50IHRvIGNhbGwgbG9hZE5l
eHQgZm9yIGNhc2VzCisgICAgLy8gd2hlcmUgYSBzdWItZnJhbWUgc3RhcnRzIGxvYWRpbmcgb3Ig
YW5vdGhlciBmcmFtZSBpcyBsb2FkZWQgdGhyb3VnaCBKYXZhU2NyaXB0LgorICAgIG1fY2hlY2tJ
ZkZpbmlzaGVkVGltZXIuc3RhcnQoKTsKK30KKwordm9pZCBVcmxMb2FkZXI6OmxvYWRVcmxMaXN0
KGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUpCit7CisgICAgUUZpbGUgaW5wdXRGaWxlKGlu
cHV0RmlsZU5hbWUpOworICAgIGlmIChpbnB1dEZpbGUub3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5
IHwgUUlPRGV2aWNlOjpUZXh0KSkgeworICAgICAgICBRVGV4dFN0cmVhbSBzdHJlYW0oJmlucHV0
RmlsZSk7CisgICAgICAgIFFTdHJpbmcgbGluZTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgIGxpbmUgPSBzdHJlYW0ucmVhZExpbmUoKTsKKyAgICAgICAgICAgIGlmIChsaW5l
LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV91cmxzLmFw
cGVuZChsaW5lKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHFEZWJ1ZygpIDw8
ICJDYW4ndCBvcGVuIGxpc3QgZmlsZSI7CisgICAgICAgIGV4aXQoMCk7CisgICAgfQorICAgIG1f
aW5kZXggPSAwOworICAgIGlucHV0RmlsZS5jbG9zZSgpOworfQorCitib29sIFVybExvYWRlcjo6
Z2V0VXJsKFFTdHJpbmcmIHFzdHIpCit7CisgICAgaWYgKG1faW5kZXggPT0gbV91cmxzLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcXN0ciA9IG1fdXJsc1ttX2luZGV4Kytd
OworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci91
cmxsb2FkZXIuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvdXJsbG9hZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyNTQwOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1F0VGVzdEJyb3dzZXIvdXJsbG9hZGVyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiB1cmxsb2FkZXJfaAorI2RlZmluZSB1
cmxsb2FkZXJfaAorCisjaW5jbHVkZSAicXdlYmZyYW1lLmgiCisKKyNpbmNsdWRlIDxRVGV4dFN0
cmVhbT4KKyNpbmNsdWRlIDxRVGltZXI+CisjaW5jbHVkZSA8UVZlY3Rvcj4KKworY2xhc3MgVXJs
TG9hZGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBV
cmxMb2FkZXIoUVdlYkZyYW1lKiBmcmFtZSwgY29uc3QgUVN0cmluZyYgaW5wdXRGaWxlTmFtZSwg
aW50IHRpbWVvdXRTZWNvbmRzLCBpbnQgZXh0cmFUaW1lU2Vjb25kcyk7CisKK3B1YmxpYyBRX1NM
T1RTOgorICAgIHZvaWQgbG9hZE5leHQoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQg
Y2hlY2tJZkZpbmlzaGVkKCk7CisgICAgdm9pZCBmcmFtZUxvYWRTdGFydGVkKCk7CisgICAgdm9p
ZCBmcmFtZUxvYWRGaW5pc2hlZCgpOworCitRX1NJR05BTFM6CisgICAgdm9pZCBwYWdlTG9hZEZp
bmlzaGVkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBsb2FkVXJsTGlzdChjb25zdCBRU3RyaW5n
JiBpbnB1dEZpbGVOYW1lKTsKKyAgICBib29sIGdldFVybChRU3RyaW5nJiBxc3RyKTsKKworcHJp
dmF0ZToKKyAgICBRVmVjdG9yPFFTdHJpbmc+IG1fdXJsczsKKyAgICBpbnQgbV9pbmRleDsKKyAg
ICBRV2ViRnJhbWUqIG1fZnJhbWU7CisgICAgUVRleHRTdHJlYW0gbV9zdGRPdXQ7CisgICAgaW50
IG1fbG9hZGVkOworICAgIFFUaW1lciBtX3RpbWVvdXRUaW1lcjsKKyAgICBRVGltZXIgbV9leHRy
YVRpbWVUaW1lcjsKKyAgICBRVGltZXIgbV9jaGVja0lmRmluaXNoZWRUaW1lcjsKKyAgICBpbnQg
bV9udW1GcmFtZXNMb2FkaW5nOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9RdFRl
c3RCcm93c2VyL3VzZXJhZ2VudGxpc3QudHh0IGIvVG9vbHMvUXRUZXN0QnJvd3Nlci91c2VyYWdl
bnRsaXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNmMTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci91c2VyYWdlbnRsaXN0LnR4dApA
QCAtMCwwICsxLDEzIEBACitNb3ppbGxhLzUuMCAoWDExOyBMaW51eCBpNjg2KSBBcHBsZVdlYktp
dC81MzUuMSAoS0hUTUwsIGxpa2UgR2Vja28pIFF0VGVzdEJyb3dzZXIvMC4xIFNhZmFyaS81MzUu
MQorTW96aWxsYS81LjAgKFN5bWJpYW5PUy85LjQ7IFU7IFNlcmllczYwLzUuMCkgQXBwbGVXZWJL
aXQvNTM1LjEgKEtIVE1MLCBsaWtlIEdlY2tvKSBRdFRlc3RCcm93c2VyLzAuMSBNb2JpbGUgU2Fm
YXJpLzUzNS4xCitNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBQUEMgTWFjIE9TIFgpIEFwcGxlV2Vi
S2l0LzEyNS4yIChLSFRNTCwgbGlrZSBHZWNrbykgU2FmYXJpLzEyNS44CitNb3ppbGxhLzUuMCAo
VW5rbm93bjsgbGlrZSBBbmRyb2lkIDIuMjsgSW50ZWwgTWFjIE9TIFggMTBfNikgQXBwbGVXZWJL
aXQvNTMzLjMgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC4zIE1vYmlsZSBTYWZhcmkv
NTMzLjMKK01vemlsbGEvNS4wIChpUGhvbmU7IENQVSBPUyAzXzIgbGlrZSBNYWMgT1MgWCkgQXBw
bGVXZWJLaXQvNTMxLjIxLjEwIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuNCBNb2Jp
bGUvN0IzMzRiIFNhZmFyaS81MzEuMjEuMTAKK01vemlsbGEvNS4wIChpUGhvbmU7IFU7IENQVSBp
UGhvbmUgT1MgNF8wIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzIuOSAoS0hU
TUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjUgTW9iaWxlLzhBMjkzIFNhZmFyaS82NTMxLjIy
LjcKK01vemlsbGEvNS4wIChpUGFkOyBVOyBDUFUgT1MgM18yIGxpa2UgTWFjIE9TIFg7IGVuLXVz
KSBBcHBsZVdlYktpdC81MzEuMjEuMTAgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC40
IE1vYmlsZS83QjMzNGIgU2FmYXJpLzUzMS4yMS4xMAorT3BlcmEvOS44MCAoV2luZG93cyBOVCA2
LjA7IFU7IGVuKSBQcmVzdG8vMi44Ljk5IFZlcnNpb24vMTEuMTAKK01vemlsbGEvNS4wIChTeW1i
aWFuT1MvOS40OyBVOyBTZXJpZXM2MC81LjAgTm9raWE1ODAwZC0xYi8yMC4yLjAxNDsgUHJvZmls
ZS9NSURQLTIuMSBDb25maWd1cmF0aW9uL0NMREMtMS4xKSBBcHBsZVdlYktpdC80MTMgKEtIVE1M
LCBsaWtlIEdlY2tvKSBTYWZhcmkvNDEzCitNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA4
LjA7IFdpbmRvd3MgTlQgNi4yOyBUcmlkZW50LzQuMDsgU0xDQzI7IC5ORVQgQ0xSIDIuMC41MDcy
NzsgLk5FVCBDTFIgMy41LjMwNzI5OyAuTkVUIENMUiAzLjAuMzA3Mjk7IE1lZGlhIENlbnRlciBQ
QyA2LjApCitNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgTVNJRSA5LjA7IFdpbmRvd3MgTlQgNi4x
OyBUcmlkZW50LzUuMCkKK01vemlsbGEvNS4wIChXaW5kb3dzOyBXaW5kb3dzIE5UIDUuMSkgQXBw
bGVXZWJLaXQvNTM0LjI0IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExLjAuNjk2LjY4IFNh
ZmFyaS81MzQuMjQKK01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDYuMTsgcnY6Mi4wLjEpIEdlY2tv
LzIwMTAwMTAxIEZpcmVmb3gvNC4wLjEKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIv
dXRpbHMuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci91dGlscy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNTY3Yzk4OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F0
VGVzdEJyb3dzZXIvdXRpbHMuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
KgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAidXRpbHMuaCIKKwor
CitRU3RyaW5nIHRha2VPcHRpb25WYWx1ZShRU3RyaW5nTGlzdCogYXJndW1lbnRzLCBpbnQgaW5k
ZXgpCit7CisgICAgUVN0cmluZyByZXN1bHQ7CisKKyAgICBpZiAoKytpbmRleCA8IGFyZ3VtZW50
cy0+Y291bnQoKSAmJiAhYXJndW1lbnRzLT5hdChpbmRleCkuc3RhcnRzV2l0aCgiLSIpKQorICAg
ICAgICByZXN1bHQgPSBhcmd1bWVudHMtPnRha2VBdChpbmRleCk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitRU3RyaW5nIGZvcm1hdEtleXMoUUxpc3Q8UVN0cmluZz4ga2V5cykKK3sKKyAg
ICBRU3RyaW5nIHJlc3VsdDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtleXMuY291bnQoKSAt
IDE7IGkrKykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChrZXlzLmF0KGkpICsgInwiKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKGtleXMubGFzdCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitRTGlz
dDxRU3RyaW5nPiBlbnVtVG9LZXlzKGNvbnN0IFFNZXRhT2JqZWN0IG8sIGNvbnN0IFFTdHJpbmcm
IG5hbWUsIGNvbnN0IFFTdHJpbmcmIHN0cmlwKQoreworICAgIFFMaXN0PFFTdHJpbmc+IGxpc3Q7
CisKKyAgICBpbnQgZW51bUluZGV4ID0gby5pbmRleE9mRW51bWVyYXRvcihuYW1lLnRvTGF0aW4x
KCkuZGF0YSgpKTsKKyAgICBRTWV0YUVudW0gZW51bWVyYXRvciA9IG8uZW51bWVyYXRvcihlbnVt
SW5kZXgpOworCisgICAgaWYgKGVudW1lcmF0b3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZW51bWVyYXRvci5rZXlDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAg
IFFTdHJpbmcga2V5KGVudW1lcmF0b3IudmFsdWVUb0tleShpKSk7CisgICAgICAgICAgICBsaXN0
LmFwcGVuZChrZXkucmVtb3ZlKHN0cmlwKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gbGlzdDsKK30KKwordm9pZCBhcHBRdWl0KGludCBleGl0Q29kZSwgY29uc3QgUVN0cmluZyYg
bXNnKQoreworICAgIGlmICghbXNnLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZXhpdENvZGUg
PiAwKQorICAgICAgICAgICAgcURlYnVnKCJFUlJPUjogJXMiLCBtc2cudG9MYXRpbjEoKS5kYXRh
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBxRGVidWcoKSA8PCBtc2c7CisgICAgfQor
ICAgIGV4aXQoZXhpdENvZGUpOworfQorCitRVXJsIHVybEZyb21Vc2VySW5wdXQoY29uc3QgUVN0
cmluZyYgc3RyaW5nKQoreworICAgIFFTdHJpbmcgaW5wdXQoc3RyaW5nKTsKKyAgICBRRmlsZUlu
Zm8gZmkoaW5wdXQpOworICAgIGlmIChmaS5leGlzdHMoKSAmJiBmaS5pc1JlbGF0aXZlKCkpCisg
ICAgICAgIGlucHV0ID0gZmkuYWJzb2x1dGVGaWxlUGF0aCgpOworCisgICAgcmV0dXJuIFFVcmw6
OmZyb21Vc2VySW5wdXQoaW5wdXQpOworfQorCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1F0VGVzdEJy
b3dzZXIvdXRpbHMuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvdXRpbHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjczNTFlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
UXRUZXN0QnJvd3Nlci91dGlscy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
KgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIHV0aWxzX2gKKyNkZWZp
bmUgdXRpbHNfaAorCisjaW5jbHVkZSA8UXRDb3JlPgorCisjaWZuZGVmIE5PX1JFVFVSTgorI2lm
IGRlZmluZWQoX19DQ19BUk0pIHx8IGRlZmluZWQoX19BUk1DQ19fKQorI2RlZmluZSBOT19SRVRV
Uk4gX19kZWNsc3BlYyhub3JldHVybikKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisjZGVmaW5l
IE5PX1JFVFVSTiBfX2F0dHJpYnV0ZSgoX19ub3JldHVybl9fKSkKKyNlbHNlCisjZGVmaW5lIE5P
X1JFVFVSTgorI2VuZGlmCisjZW5kaWYKKworLy8gb3B0aW9ucyBoYW5kbGluZworUVN0cmluZyB0
YWtlT3B0aW9uVmFsdWUoUVN0cmluZ0xpc3QqIGFyZ3VtZW50cywgaW50IGluZGV4KTsKK1FTdHJp
bmcgZm9ybWF0S2V5cyhRTGlzdDxRU3RyaW5nPiBrZXlzKTsKK1FMaXN0PFFTdHJpbmc+IGVudW1U
b0tleXMoY29uc3QgUU1ldGFPYmplY3QgbywgY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVN0
cmluZyYgc3RyaXApOworCitOT19SRVRVUk4gdm9pZCBhcHBRdWl0KGludCBzdGF0dXMsIGNvbnN0
IFFTdHJpbmcmIG1zZyA9IFFTdHJpbmcoKSk7CisKK1FVcmwgdXJsRnJvbVVzZXJJbnB1dChjb25z
dCBRU3RyaW5nJiBpbnB1dCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJv
d3Nlci93ZWJpbnNwZWN0b3IuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvd2ViaW5zcGVjdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc1YmJkYwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvd2ViaW5zcGVjdG9yLmgKQEAgLTAsMCArMSw1NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiB3ZWJpbnNwZWN0b3JfaAorI2RlZmluZSB3ZWJpbnNwZWN0b3JfaAorCisjaW5j
bHVkZSAicXdlYmluc3BlY3Rvci5oIgorCitjbGFzcyBXZWJJbnNwZWN0b3IgOiBwdWJsaWMgUVdl
Ykluc3BlY3RvciB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFdlYkluc3BlY3RvcihR
V2lkZ2V0KiBwYXJlbnQgPSAwKSA6IFFXZWJJbnNwZWN0b3IocGFyZW50KSB7fQorCitRX1NJR05B
TFM6CisgICAgdm9pZCB2aXNpYmxlQ2hhbmdlZChib29sIG5vd1Zpc2libGUpOworCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBzaG93RXZlbnQoUVNob3dFdmVudCogZXZlbnQpCisgICAgeworICAgICAg
ICBRV2ViSW5zcGVjdG9yOjpzaG93RXZlbnQoZXZlbnQpOworICAgICAgICBlbWl0IHZpc2libGVD
aGFuZ2VkKHRydWUpOworICAgIH0KKyAgICB2b2lkIGhpZGVFdmVudChRSGlkZUV2ZW50KiBldmVu
dCkKKyAgICB7CisgICAgICAgIFFXZWJJbnNwZWN0b3I6OmhpZGVFdmVudChldmVudCk7CisgICAg
ICAgIGVtaXQgdmlzaWJsZUNoYW5nZWQoZmFsc2UpOworICAgIH0KK307CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci93ZWJwYWdlLmNwcCBiL1Rvb2xzL1F0VGVzdEJy
b3dzZXIvd2VicGFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRi
Yzc4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvd2VicGFnZS5jcHAK
QEAgLTAsMCArMSwyMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHaXJpc2ggUmFtYWtyaXNobmFuIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNiBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+CisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAid2VicGFnZS5oIgorCisjaW5jbHVkZSAibGF1bmNo
ZXJ3aW5kb3cuaCIKKworI2luY2x1ZGUgPFFBY3Rpb24+CisjaW5jbHVkZSA8UUFwcGxpY2F0aW9u
PgorI2luY2x1ZGUgPFFBdXRoZW50aWNhdG9yPgorI2lmbmRlZiBRVF9OT19ERVNLVE9QU0VSVklD
RVMKKyNpbmNsdWRlIDxRRGVza3RvcFNlcnZpY2VzPgorI2VuZGlmCisjaW5jbHVkZSA8UURpYWxv
Zz4KKyNpbmNsdWRlIDxRRGlhbG9nQnV0dG9uQm94PgorI2luY2x1ZGUgPFFMYWJlbD4KKyNpbmNs
dWRlIDxRTGF5b3V0PgorI2lmbmRlZiBRVF9OT19MSU5FRURJVAorI2luY2x1ZGUgPFFMaW5lRWRp
dD4KKyNlbmRpZgorI2luY2x1ZGUgPFFQcm9ncmVzc0Jhcj4KKyNpbmNsdWRlIDxRdE5ldHdvcmsv
UU5ldHdvcmtSZXBseT4KKyNpbmNsdWRlIDxRdE5ldHdvcmsvUU5ldHdvcmtSZXF1ZXN0PgorI2lu
Y2x1ZGUgPFF0TmV0d29yay9RTmV0d29ya1Byb3h5PgorCitXZWJQYWdlOjpXZWJQYWdlKFFPYmpl
Y3QqIHBhcmVudCkKKyAgICA6IFFXZWJQYWdlKHBhcmVudCkKKyAgICAsIG1fdXNlckFnZW50KCkK
KyAgICAsIG1faW50ZXJydXB0aW5nSmF2YVNjcmlwdEVuYWJsZWQoZmFsc2UpCit7CisgICAgYXBw
bHlQcm94eSgpOworCisgICAgY29ubmVjdChuZXR3b3JrQWNjZXNzTWFuYWdlcigpLCBTSUdOQUwo
YXV0aGVudGljYXRpb25SZXF1aXJlZChRTmV0d29ya1JlcGx5KiwgUUF1dGhlbnRpY2F0b3IqKSks
CisgICAgICAgICAgICB0aGlzLCBTTE9UKGF1dGhlbnRpY2F0aW9uUmVxdWlyZWQoUU5ldHdvcmtS
ZXBseSosIFFBdXRoZW50aWNhdG9yKikpKTsKKyAgICBjb25uZWN0KHRoaXMsIFNJR05BTChmZWF0
dXJlUGVybWlzc2lvblJlcXVlc3RlZChRV2ViRnJhbWUqLCBRV2ViUGFnZTo6RmVhdHVyZSkpLCB0
aGlzLCBTTE9UKHJlcXVlc3RQZXJtaXNzaW9uKFFXZWJGcmFtZSosIFFXZWJQYWdlOjpGZWF0dXJl
KSkpOworICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGZlYXR1cmVQZXJtaXNzaW9uUmVxdWVzdENh
bmNlbGVkKFFXZWJGcmFtZSosIFFXZWJQYWdlOjpGZWF0dXJlKSksIHRoaXMsIFNMT1QoZmVhdHVy
ZVBlcm1pc3Npb25SZXF1ZXN0Q2FuY2VsZWQoUVdlYkZyYW1lKiwgUVdlYlBhZ2U6OkZlYXR1cmUp
KSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6YXBwbHlQcm94eSgpCit7CisgICAgUVVybCBwcm94eVVy
bChxZ2V0ZW52KCJodHRwX3Byb3h5IikpOworCisgICAgaWYgKHByb3h5VXJsLmlzVmFsaWQoKSAm
JiAhcHJveHlVcmwuaG9zdCgpLmlzRW1wdHkoKSkgeworICAgICAgICBpbnQgcHJveHlQb3J0ID0g
KHByb3h5VXJsLnBvcnQoKSA+IDApID8gcHJveHlVcmwucG9ydCgpIDogODA4MDsKKyAgICAgICAg
bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+c2V0UHJveHkoUU5ldHdvcmtQcm94eShRTmV0d29ya1By
b3h5OjpIdHRwUHJveHksIHByb3h5VXJsLmhvc3QoKSwgcHJveHlQb3J0KSk7CisgICAgfQorfQor
Citib29sIFdlYlBhZ2U6OnN1cHBvcnRzRXh0ZW5zaW9uKFFXZWJQYWdlOjpFeHRlbnNpb24gZXh0
ZW5zaW9uKSBjb25zdAoreworICAgIGlmIChleHRlbnNpb24gPT0gUVdlYlBhZ2U6OkVycm9yUGFn
ZUV4dGVuc2lvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIFdlYlBhZ2U6OmV4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uLCBjb25zdCBFeHRl
bnNpb25PcHRpb24qIG9wdGlvbiwgRXh0ZW5zaW9uUmV0dXJuKiBvdXRwdXQpCit7CisgICAgY29u
c3QgUVdlYlBhZ2U6OkVycm9yUGFnZUV4dGVuc2lvbk9wdGlvbiogaW5mbyA9IHN0YXRpY19jYXN0
PGNvbnN0IFFXZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb25PcHRpb24qPihvcHRpb24pOworICAg
IFFXZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb25SZXR1cm4qIGVycm9yUGFnZSA9IHN0YXRpY19j
YXN0PFFXZWJQYWdlOjpFcnJvclBhZ2VFeHRlbnNpb25SZXR1cm4qPihvdXRwdXQpOworCisgICAg
ZXJyb3JQYWdlLT5jb250ZW50ID0gUVN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkZhaWxlZCBs
b2FkaW5nIHBhZ2U8L3RpdGxlPjwvaGVhZD48Ym9keT4lMTwvYm9keT48L2h0bWw+IikKKyAgICAg
ICAgLmFyZyhpbmZvLT5lcnJvclN0cmluZykudG9VdGY4KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBXZWJQYWdlOjphY2NlcHROYXZpZ2F0aW9uUmVxdWVzdChRV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBRTmV0d29ya1JlcXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlIHR5cGUp
Cit7CisgICAgUU9iamVjdCogdmlldyA9IHBhcmVudCgpOworCisgICAgUVZhcmlhbnQgdmFsdWUg
PSB2aWV3LT5wcm9wZXJ0eSgia2V5Ym9hcmRNb2RpZmllcnMiKTsKKworICAgIGlmICghdmFsdWUu
aXNOdWxsKCkpIHsKKyAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycyA9IFF0
OjpLZXlib2FyZE1vZGlmaWVycyh2YWx1ZS50b0ludCgpKTsKKworICAgICAgICBpZiAobW9kaWZp
ZXJzICYgUXQ6OlNoaWZ0TW9kaWZpZXIpIHsKKyAgICAgICAgICAgIFFXZWJQYWdlKiBwYWdlID0g
Y3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJCcm93c2VyV2luZG93KTsKKyAgICAgICAgICAgIHBh
Z2UtPm1haW5GcmFtZSgpLT5sb2FkKHJlcXVlc3QpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1vZGlmaWVycyAmIFF0OjpBbHRNb2RpZmllcikg
eworICAgICAgICAgICAgb3BlblVybEluRGVmYXVsdEJyb3dzZXIocmVxdWVzdC51cmwoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
UVdlYlBhZ2U6OmFjY2VwdE5hdmlnYXRpb25SZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCB0eXBlKTsK
K30KKwordm9pZCBXZWJQYWdlOjpvcGVuVXJsSW5EZWZhdWx0QnJvd3Nlcihjb25zdCBRVXJsJiB1
cmwpCit7CisjaWZuZGVmIFFUX05PX0RFU0tUT1BTRVJWSUNFUworICAgIGlmIChRQWN0aW9uKiBh
Y3Rpb24gPSBxb2JqZWN0X2Nhc3Q8UUFjdGlvbio+KHNlbmRlcigpKSkKKyAgICAgICAgUURlc2t0
b3BTZXJ2aWNlczo6b3BlblVybChhY3Rpb24tPmRhdGEoKS50b1VybCgpKTsKKyAgICBlbHNlCisg
ICAgICAgIFFEZXNrdG9wU2VydmljZXM6Om9wZW5VcmwodXJsKTsKKyNlbmRpZgorfQorCitRU3Ry
aW5nIFdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybChjb25zdCBRVXJsJiB1cmwpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3VzZXJBZ2VudC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX3VzZXJBZ2Vu
dDsKKyAgICByZXR1cm4gUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCh1cmwpOworfQorCitib29s
IFdlYlBhZ2U6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKQoreworICAgIGlmICghbV9pbnRl
cnJ1cHRpbmdKYXZhU2NyaXB0RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBRV2ViUGFnZTo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOworfQorCit2b2lkIFdl
YlBhZ2U6OmF1dGhlbnRpY2F0aW9uUmVxdWlyZWQoUU5ldHdvcmtSZXBseSogcmVwbHksIFFBdXRo
ZW50aWNhdG9yKiBhdXRoZW50aWNhdG9yKQoreworICAgIFFEaWFsb2cqIGRpYWxvZyA9IG5ldyBR
RGlhbG9nKFFBcHBsaWNhdGlvbjo6YWN0aXZlV2luZG93KCkpOworICAgIGRpYWxvZy0+c2V0V2lu
ZG93VGl0bGUoIkhUVFAgQXV0aGVudGljYXRpb24iKTsKKworICAgIFFHcmlkTGF5b3V0KiBsYXlv
dXQgPSBuZXcgUUdyaWRMYXlvdXQoZGlhbG9nKTsKKyAgICBkaWFsb2ctPnNldExheW91dChsYXlv
dXQpOworCisgICAgUUxhYmVsKiBtZXNzYWdlTGFiZWwgPSBuZXcgUUxhYmVsKGRpYWxvZyk7Cisg
ICAgbWVzc2FnZUxhYmVsLT5zZXRXb3JkV3JhcCh0cnVlKTsKKyAgICBRU3RyaW5nIG1lc3NhZ2VT
dHIgPSBRU3RyaW5nKCJFbnRlciB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmb3I6ICUxIik7
CisgICAgbWVzc2FnZUxhYmVsLT5zZXRUZXh0KG1lc3NhZ2VTdHIuYXJnKHJlcGx5LT51cmwoKS50
b1N0cmluZygpKSk7CisgICAgbGF5b3V0LT5hZGRXaWRnZXQobWVzc2FnZUxhYmVsLCAwLCAxKTsK
KworI2lmbmRlZiBRVF9OT19MSU5FRURJVAorICAgIFFMYWJlbCogdXNlckxhYmVsID0gbmV3IFFM
YWJlbCgiVXNlcm5hbWU6IiwgZGlhbG9nKTsKKyAgICBsYXlvdXQtPmFkZFdpZGdldCh1c2VyTGFi
ZWwsIDEsIDApOworICAgIFFMaW5lRWRpdCogdXNlcklucHV0ID0gbmV3IFFMaW5lRWRpdChkaWFs
b2cpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KHVzZXJJbnB1dCwgMSwgMSk7CisKKyAgICBRTGFi
ZWwqIHBhc3NMYWJlbCA9IG5ldyBRTGFiZWwoIlBhc3N3b3JkOiIsIGRpYWxvZyk7CisgICAgbGF5
b3V0LT5hZGRXaWRnZXQocGFzc0xhYmVsLCAyLCAwKTsKKyAgICBRTGluZUVkaXQqIHBhc3NJbnB1
dCA9IG5ldyBRTGluZUVkaXQoZGlhbG9nKTsKKyAgICBwYXNzSW5wdXQtPnNldEVjaG9Nb2RlKFFM
aW5lRWRpdDo6UGFzc3dvcmQpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KHBhc3NJbnB1dCwgMiwg
MSk7CisjZW5kaWYKKworICAgIFFEaWFsb2dCdXR0b25Cb3gqIGJ1dHRvbkJveCA9IG5ldyBRRGlh
bG9nQnV0dG9uQm94KFFEaWFsb2dCdXR0b25Cb3g6Ok9rCisgICAgICAgICAgICB8IFFEaWFsb2dC
dXR0b25Cb3g6OkNhbmNlbCwgUXQ6Okhvcml6b250YWwsIGRpYWxvZyk7CisgICAgY29ubmVjdChi
dXR0b25Cb3gsIFNJR05BTChhY2NlcHRlZCgpKSwgZGlhbG9nLCBTTE9UKGFjY2VwdCgpKSk7Cisg
ICAgY29ubmVjdChidXR0b25Cb3gsIFNJR05BTChyZWplY3RlZCgpKSwgZGlhbG9nLCBTTE9UKHJl
amVjdCgpKSk7CisgICAgbGF5b3V0LT5hZGRXaWRnZXQoYnV0dG9uQm94LCAzLCAxKTsKKworICAg
IGlmIChkaWFsb2ctPmV4ZWMoKSA9PSBRRGlhbG9nOjpBY2NlcHRlZCkgeworI2lmbmRlZiBRVF9O
T19MSU5FRURJVAorICAgICAgICBhdXRoZW50aWNhdG9yLT5zZXRVc2VyKHVzZXJJbnB1dC0+dGV4
dCgpKTsKKyAgICAgICAgYXV0aGVudGljYXRvci0+c2V0UGFzc3dvcmQocGFzc0lucHV0LT50ZXh0
KCkpOworI2VuZGlmCisgICAgfQorCisgICAgZGVsZXRlIGRpYWxvZzsKK30KKwordm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0UGVybWlzc2lvbihRV2ViRnJhbWUqIGZyYW1lLCBRV2ViUGFnZTo6RmVhdHVy
ZSBmZWF0dXJlKQoreworICAgIHNldEZlYXR1cmVQZXJtaXNzaW9uKGZyYW1lLCBmZWF0dXJlLCBQ
ZXJtaXNzaW9uR3JhbnRlZEJ5VXNlcik7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZmVhdHVyZVBlcm1p
c3Npb25SZXF1ZXN0Q2FuY2VsZWQoUVdlYkZyYW1lKiwgUVdlYlBhZ2U6OkZlYXR1cmUpCit7Cit9
CisKK1FXZWJQYWdlKiBXZWJQYWdlOjpjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRvd1R5
cGUgdHlwZSkKK3sKKyAgICBMYXVuY2hlcldpbmRvdyogbXcgPSBuZXcgTGF1bmNoZXJXaW5kb3c7
CisgICAgaWYgKHR5cGUgPT0gV2ViTW9kYWxEaWFsb2cpCisgICAgICAgIG13LT5zZXRXaW5kb3dN
b2RhbGl0eShRdDo6QXBwbGljYXRpb25Nb2RhbCk7CisgICAgbXctPnNob3coKTsKKyAgICByZXR1
cm4gbXctPnBhZ2UoKTsKK30KKworUU9iamVjdCogV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKGNvbnN0
IFFTdHJpbmcgJmNsYXNzSWQsIGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nTGlzdCYsIGNvbnN0
IFFTdHJpbmdMaXN0JikKK3sKKyAgICBpZiAoY2xhc3NJZCA9PSAiYWxpZW5fUUxhYmVsIikgewor
ICAgICAgICBRTGFiZWwqIGwgPSBuZXcgUUxhYmVsOworICAgICAgICBsLT53aW5JZCgpOworICAg
ICAgICByZXR1cm4gbDsKKyAgICB9CisKKyAgICBpZiAoY2xhc3NJZCA9PSBRTGF0aW4xU3RyaW5n
KCJRUHJvZ3Jlc3NCYXIiKSkKKyAgICAgICAgcmV0dXJuIG5ldyBRUHJvZ3Jlc3NCYXIodmlldygp
KTsKKyAgICBpZiAoY2xhc3NJZCA9PSBRTGF0aW4xU3RyaW5nKCJRTGFiZWwiKSkKKyAgICAgICAg
cmV0dXJuIG5ldyBRTGFiZWwodmlldygpKTsKKyAgICByZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci93ZWJwYWdlLmggYi9Ub29scy9RdFRlc3RCcm93c2VyL3dl
YnBhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTY1YjU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci93ZWJwYWdlLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHaXJpc2ggUmFtYWty
aXNobmFuIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2Vv
cmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJr
IE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1
c2luIDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4g
PGhhdXNtYW5uQGtkZS5vcmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIHdlYnBhZ2VfaAorI2RlZmluZSB3ZWJwYWdlX2gKKworI2luY2x1ZGUgPHF3ZWJmcmFt
ZS5oPgorI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CisKK2NsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgUVdl
YlBhZ2UgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBXZWJQYWdlKFFPYmplY3QqIHBh
cmVudCA9IDApOworCisgICAgdmlydHVhbCBRV2ViUGFnZSogY3JlYXRlV2luZG93KFFXZWJQYWdl
OjpXZWJXaW5kb3dUeXBlKTsKKyAgICB2aXJ0dWFsIFFPYmplY3QqIGNyZWF0ZVBsdWdpbihjb25z
dCBRU3RyaW5nJiwgY29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmdMaXN0JiwgY29uc3QgUVN0cmlu
Z0xpc3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oUVdlYlBhZ2U6OkV4
dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBleHRlbnNpb24oRXh0
ZW5zaW9uIGV4dGVuc2lvbiwgY29uc3QgRXh0ZW5zaW9uT3B0aW9uKiBvcHRpb24sIEV4dGVuc2lv
blJldHVybiogb3V0cHV0KTsKKworICAgIHZpcnR1YWwgYm9vbCBhY2NlcHROYXZpZ2F0aW9uUmVx
dWVzdChRV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBRTmV0d29ya1JlcXVlc3QmIHJlcXVlc3QsIE5h
dmlnYXRpb25UeXBlIHR5cGUpOworCisgICAgUVN0cmluZyB1c2VyQWdlbnRGb3JVcmwoY29uc3Qg
UVVybCYgdXJsKSBjb25zdDsKKyAgICB2b2lkIHNldEludGVycnVwdGluZ0phdmFTY3JpcHRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkgeyBtX2ludGVycnVwdGluZ0phdmFTY3JpcHRFbmFibGVkID0gZW5h
YmxlZDsgfQorCisgICAgdmlydHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsK
KworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBvcGVuVXJsSW5EZWZhdWx0QnJvd3Nlcihjb25z
dCBRVXJsJiB1cmwgPSBRVXJsKCkpOworICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFFTdHJp
bmcmIHVhKSB7IG1fdXNlckFnZW50ID0gdWE7IH0KKyAgICB2b2lkIGF1dGhlbnRpY2F0aW9uUmVx
dWlyZWQoUU5ldHdvcmtSZXBseSosIFFBdXRoZW50aWNhdG9yKik7CisgICAgdm9pZCByZXF1ZXN0
UGVybWlzc2lvbihRV2ViRnJhbWUqIGZyYW1lLCBRV2ViUGFnZTo6RmVhdHVyZSBmZWF0dXJlKTsK
KyAgICB2b2lkIGZlYXR1cmVQZXJtaXNzaW9uUmVxdWVzdENhbmNlbGVkKFFXZWJGcmFtZSogZnJh
bWUsIFFXZWJQYWdlOjpGZWF0dXJlIGZlYXR1cmUpOworCitwcml2YXRlOgorICAgIHZvaWQgYXBw
bHlQcm94eSgpOworICAgIFFTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgYm9vbCBtX2ludGVycnVw
dGluZ0phdmFTY3JpcHRFbmFibGVkOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9R
dFRlc3RCcm93c2VyL3dlYnZpZXcuY3BwIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci93ZWJ2aWV3LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmFjY2JkCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci93ZWJ2aWV3LmNwcApAQCAtMCwwICsxLDI5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHaXJpc2ggUmFtYWtyaXNo
bmFuIDxnaXJpc2hAZm9yd2FyZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2Vvcmdl
IFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11
ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhh
dXNtYW5uQGtkZS5vcmc+CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAid2Vidmlldy5oIgorCisjaW5jbHVkZSA8UUFjdGlvbj4KKyNpbmNsdWRlIDxRR3JhcGhp
Y3NTY2VuZT4KKyNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZUNvbnRleHRNZW51RXZlbnQ+CisjaW5j
bHVkZSA8UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50PgorI2luY2x1ZGUgPFFNZW51PgorI2luY2x1
ZGUgPFFTY3JvbGxCYXI+CisjaW5jbHVkZSA8UVRpbWVyPgorCisjaWZuZGVmIFFUX05PX0FOSU1B
VElPTgorI2luY2x1ZGUgPFFBYnN0cmFjdEFuaW1hdGlvbj4KKyNpbmNsdWRlIDxRQWJzdHJhY3RU
cmFuc2l0aW9uPgorI2luY2x1ZGUgPFFGaW5hbFN0YXRlPgorI2luY2x1ZGUgPFFQcm9wZXJ0eUFu
aW1hdGlvbj4KKyNpbmNsdWRlIDxRU3RhdGU+CisjaW5jbHVkZSA8UVN0YXRlTWFjaGluZT4KKyNl
bmRpZgorCitXZWJWaWV3R3JhcGhpY3NCYXNlZDo6V2ViVmlld0dyYXBoaWNzQmFzZWQoUVdpZGdl
dCogcGFyZW50KQorICAgIDogUUdyYXBoaWNzVmlldyhwYXJlbnQpCisgICAgLCBtX2l0ZW0obmV3
IEdyYXBoaWNzV2ViVmlldykKKyAgICAsIG1fbnVtUGFpbnRzVG90YWwoMCkKKyAgICAsIG1fbnVt
UGFpbnRzU2luY2VMYXN0TWVhc3VyZSgwKQorICAgICwgbV9tZWFzdXJlRnBzKGZhbHNlKQorICAg
ICwgbV9yZXNpemVzVG9Db250ZW50cyhmYWxzZSkKKyAgICAsIG1fbWFjaGluZSgwKQoreworICAg
IHNldFNjZW5lKG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKSk7CisgICAgc2NlbmUoKS0+YWRkSXRl
bShtX2l0ZW0pOworICAgIHNjZW5lKCktPnNldEZvY3VzSXRlbShtX2l0ZW0pOworCisgICAgc2V0
RnJhbWVTaGFwZShRRnJhbWU6Ok5vRnJhbWUpOworICAgIHNldEhvcml6b250YWxTY3JvbGxCYXJQ
b2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5c09mZik7CisgICAgc2V0VmVydGljYWxTY3JvbGxCYXJQ
b2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5c09mZik7CisKKyAgICBtX3VwZGF0ZVRpbWVyID0gbmV3
IFFUaW1lcih0aGlzKTsKKyAgICBtX3VwZGF0ZVRpbWVyLT5zZXRJbnRlcnZhbCgxMDAwKTsKKyAg
ICBjb25uZWN0KG1fdXBkYXRlVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKHVw
ZGF0ZUZyYW1lUmF0ZSgpKSk7Cit9CisKK3ZvaWQgV2ViVmlld0dyYXBoaWNzQmFzZWQ6OnNldFBh
Z2UoUVdlYlBhZ2UqIHBhZ2UpCit7CisgICAgY29ubmVjdChwYWdlLT5tYWluRnJhbWUoKSwgU0lH
TkFMKGNvbnRlbnRzU2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSksIFNMT1QoY29udGVudHNTaXpl
Q2hhbmdlZChjb25zdCBRU2l6ZSYpKSk7CisgICAgY29ubmVjdChwYWdlLCBTSUdOQUwoc2Nyb2xs
UmVxdWVzdGVkKGludCwgaW50LCBjb25zdCBRUmVjdCYpKSwgU0xPVChzY3JvbGxSZXF1ZXN0ZWQo
aW50LCBpbnQpKSk7CisgICAgZ3JhcGhpY3NXZWJWaWV3KCktPnNldFBhZ2UocGFnZSk7Cit9CisK
K3ZvaWQgV2ViVmlld0dyYXBoaWNzQmFzZWQ6OnNjcm9sbFJlcXVlc3RlZChpbnQgeCwgaW50IHkp
Cit7CisgICAgaWYgKCFtX3Jlc2l6ZXNUb0NvbnRlbnRzKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBUdXJuIG9mZiBpbnRlcmFjdGl2ZSBtb2RlIHdoaWxlIHNjcm9sbGluZywgb3IgUUdyYXBo
aWNzVmlldyB3aWxsIHJlcGxheSB0aGUKKyAgICAvLyBsYXN0IG1vdXNlIGV2ZW50IHdoaWNoIG1h
eSBjYXVzZSBXZWJLaXQgdG8gaW5pdGlhdGUgYSBkcmFnIG9wZXJhdGlvbi4KKyAgICBib29sIGlu
dGVyYWN0aXZlID0gaXNJbnRlcmFjdGl2ZSgpOworICAgIHNldEludGVyYWN0aXZlKGZhbHNlKTsK
KworICAgIHZlcnRpY2FsU2Nyb2xsQmFyKCktPnNldFZhbHVlKC15KTsKKyAgICBob3Jpem9udGFs
U2Nyb2xsQmFyKCktPnNldFZhbHVlKC14KTsKKworICAgIHNldEludGVyYWN0aXZlKGludGVyYWN0
aXZlKTsKK30KKwordm9pZCBXZWJWaWV3R3JhcGhpY3NCYXNlZDo6Y29udGVudHNTaXplQ2hhbmdl
ZChjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAobV9yZXNpemVzVG9Db250ZW50cykKKyAg
ICAgICAgc2NlbmUoKS0+c2V0U2NlbmVSZWN0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7Cit9CisKK3ZvaWQgV2ViVmlld0dyYXBoaWNzQmFzZWQ6OnNldFJlc2l6ZXNUb0NvbnRl
bnRzKGJvb2wgYikKK3sKKyAgICBpZiAoYiA9PSBtX3Jlc2l6ZXNUb0NvbnRlbnRzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3Jlc2l6ZXNUb0NvbnRlbnRzID0gYjsKKyAgICBncmFwaGljc1dl
YlZpZXcoKS0+c2V0UmVzaXplc1RvQ29udGVudHMobV9yZXNpemVzVG9Db250ZW50cyk7CisKKyAg
ICAvLyBXaGVuIHNldHRpbmcgcmVzaXplc1RvQ29udGVudHMgT04sIG91ciB3ZWIgdmlldyB3aWRn
ZXQgd2lsbCBhbHdheXMgc2l6ZSBhcyBiaWcgYXMgdGhlCisgICAgLy8gd2ViIGNvbnRlbnQgYmVp
bmcgZGlzcGxheWVkLCBhbmQgc28gd2lsbCB0aGUgUVdlYlBhZ2UncyB2aWV3cG9ydC4gSXQgaW1w
bGllcyB0aGF0IGludGVybmFsbHkKKyAgICAvLyBXZWJDb3JlIHdpbGwgd29yayBhcyBpZiB0aGVy
ZSB3YXMgbm8gY29udGVudCByZW5kZXJlZCBvZmZzY3JlZW4sIGFuZCB0aGVuIG5vIHNjcm9sbGJh
cnMgbmVlZAorICAgIC8vIGRyYXdpbmcuIEluIG9yZGVyIHRvIGtlZXAgc2Nyb2xsaW5nIHdvcmtp
bmcsIHdlOgorICAgIC8vCisgICAgLy8gMSkgU2V0IFFHcmFwaGljc1ZpZXcncyBzY3JvbGxiYXJz
IHBvbGljeSBiYWNrIHRvICdhdXRvJy4KKyAgICAvLyAyKSBTZXQgc2NlbmUncyBib3VuZGFyaWVz
IHJlY3QgdG8gYW4gaW52YWxpZCBzaXplLCB3aGljaCBhdXRvbWF0aWNhbGx5IG1ha2VzIGl0IHRv
IGJlIGFzIGJpZworICAgIC8vICAgIGFzIGl0IG5lZWRzIHRvIGVuY2xvc2UgYWxsIGl0ZW1zIG9u
dG8gaXQuIFdlIGRvIHRoYXQgYmVjYXVzZSBRR3JhcGhpY3NWaWV3IGFsc28gY2FsY3VsYXRlcwor
ICAgIC8vICAgIHRoZSBzaXplIG9mIGl0cyBzY3JvbGxhYmxlIGFyZWEgYWNjb3JkaW5nIHRvIHRo
ZSBhbW91bnQgb2YgY29udGVudCBpbiBzY2VuZSB0aGF0IGlzIHJlbmRlcmVkCisgICAgLy8gICAg
b2Zmc2NyZWVuLgorICAgIC8vIDMpIFNldCBRV2ViUGFnZSdzIHByZWZlcnJlZENvbnRlbnRzU2l6
ZSBhY2NvcmRpbmcgdG8gdGhlIHNpemUgb2YgUUdyYXBoaWNzVmlldydzIHZpZXdwb3J0LAorICAg
IC8vICAgIHNvIFdlYkNvcmUgcHJvcGVybHkgbGF5cyBwYWdlcyBvdXQuCisgICAgLy8KKyAgICAv
LyBPbiB0aGUgb3RoZXIgaGFuZCwgd2hlbiB0b2dnbGluZyByZXNpemVzVG9Db250ZW50cyBPRkYs
IHdlIHNldCBiYWNrIHRoZSBkZWZhdWx0IHZhbHVlcywgYXMKKyAgICAvLyBvcHBvc2l0ZSBhcyBk
ZXNjcmliZWQgYWJvdmUuCisgICAgaWYgKG1fcmVzaXplc1RvQ29udGVudHMpIHsKKyAgICAgICAg
c2V0SG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeShRdDo6U2Nyb2xsQmFyQXNOZWVkZWQpOworICAg
ICAgICBzZXRWZXJ0aWNhbFNjcm9sbEJhclBvbGljeShRdDo6U2Nyb2xsQmFyQXNOZWVkZWQpOwor
ICAgICAgICBncmFwaGljc1dlYlZpZXcoKS0+cGFnZSgpLT5zZXRQcmVmZXJyZWRDb250ZW50c1Np
emUoc2l6ZSgpKTsKKyAgICAgICAgUVJlY3RGIGl0ZW1SZWN0KGdyYXBoaWNzV2ViVmlldygpLT5n
ZW9tZXRyeSgpLnRvcExlZnQoKSwgZ3JhcGhpY3NXZWJWaWV3KCktPnBhZ2UoKS0+bWFpbkZyYW1l
KCktPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICAgICAgZ3JhcGhpY3NXZWJWaWV3KCktPnNldEdlb21l
dHJ5KGl0ZW1SZWN0KTsKKyAgICAgICAgc2NlbmUoKS0+c2V0U2NlbmVSZWN0KGl0ZW1SZWN0KTsK
KyAgICB9IGVsc2UgeworICAgICAgICBzZXRIb3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5KFF0OjpT
Y3JvbGxCYXJBbHdheXNPZmYpOworICAgICAgICBzZXRWZXJ0aWNhbFNjcm9sbEJhclBvbGljeShR
dDo6U2Nyb2xsQmFyQWx3YXlzT2ZmKTsKKyAgICAgICAgZ3JhcGhpY3NXZWJWaWV3KCktPnBhZ2Uo
KS0+c2V0UHJlZmVycmVkQ29udGVudHNTaXplKFFTaXplKCkpOworICAgICAgICBRUmVjdCB2aWV3
cG9ydFJlY3QoUVBvaW50KDAsIDApLCBzaXplKCkpOworICAgICAgICBncmFwaGljc1dlYlZpZXco
KS0+c2V0R2VvbWV0cnkodmlld3BvcnRSZWN0KTsKKyAgICAgICAgc2NlbmUoKS0+c2V0U2NlbmVS
ZWN0KHZpZXdwb3J0UmVjdCk7CisgICAgfQorfQorCit2b2lkIFdlYlZpZXdHcmFwaGljc0Jhc2Vk
OjpyZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KQoreworICAgIFFHcmFwaGljc1ZpZXc6
OnJlc2l6ZUV2ZW50KGV2ZW50KTsKKworICAgIFFTaXplIHNpemUoZXZlbnQtPnNpemUoKSk7CisK
KyAgICBpZiAobV9yZXNpemVzVG9Db250ZW50cykgeworICAgICAgICBncmFwaGljc1dlYlZpZXco
KS0+cGFnZSgpLT5zZXRQcmVmZXJyZWRDb250ZW50c1NpemUoc2l6ZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBRUmVjdEYgcmVjdChRUG9pbnQoMCwgMCksIHNpemUpOworICAgIGdy
YXBoaWNzV2ViVmlldygpLT5zZXRHZW9tZXRyeShyZWN0KTsKKyAgICBzY2VuZSgpLT5zZXRTY2Vu
ZVJlY3QocmVjdCk7Cit9CisKK3ZvaWQgV2ViVmlld0dyYXBoaWNzQmFzZWQ6OnNldEZyYW1lUmF0
ZU1lYXN1cmVtZW50RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9tZWFzdXJlRnBzID0g
ZW5hYmxlZDsKKyAgICBpZiAobV9tZWFzdXJlRnBzKSB7CisgICAgICAgIG1fbGFzdENvbnN1bHRU
aW1lID0gbV9zdGFydFRpbWUgPSBRVGltZTo6Y3VycmVudFRpbWUoKTsKKyAgICAgICAgbV9mcHNU
aW1lci5zdGFydCgpOworICAgICAgICBtX3VwZGF0ZVRpbWVyLT5zdGFydCgpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZnBzVGltZXIuc3RvcCgpOworICAgICAgICBtX3VwZGF0ZVRpbWVyLT5z
dG9wKCk7CisgICAgfQorfQorCit2b2lkIFdlYlZpZXdHcmFwaGljc0Jhc2VkOjp1cGRhdGVGcmFt
ZVJhdGUoKQoreworICAgIGNvbnN0IFFUaW1lIG5vdyA9IFFUaW1lOjpjdXJyZW50VGltZSgpOwor
ICAgIGludCBpbnRlcnZhbCA9IG1fbGFzdENvbnN1bHRUaW1lLm1zZWNzVG8obm93KTsKKyAgICBp
bnQgZnJhbWVzID0gbV9mcHNUaW1lci5udW1GcmFtZXMoaW50ZXJ2YWwpOworICAgIGludCBjdXJy
ZW50ID0gaW50ZXJ2YWwgPyBmcmFtZXMgKiAxMDAwIC8gaW50ZXJ2YWwgOiAwOworCisgICAgZW1p
dCBjdXJyZW50RlBTVXBkYXRlZChjdXJyZW50KTsKKworICAgIG1fbGFzdENvbnN1bHRUaW1lID0g
bm93OworfQorCit2b2lkIFdlYlZpZXdHcmFwaGljc0Jhc2VkOjphbmltYXRlZEZsaXAoKQorewor
I2lmbmRlZiBRVF9OT19BTklNQVRJT04KKyAgICBRU2l6ZUYgY2VudGVyID0gZ3JhcGhpY3NXZWJW
aWV3KCktPmJvdW5kaW5nUmVjdCgpLnNpemUoKSAvIDI7CisgICAgUVBvaW50RiBjZW50ZXJQb2lu
dCA9IFFQb2ludEYoY2VudGVyLndpZHRoKCksIGNlbnRlci5oZWlnaHQoKSk7CisgICAgZ3JhcGhp
Y3NXZWJWaWV3KCktPnNldFRyYW5zZm9ybU9yaWdpblBvaW50KGNlbnRlclBvaW50KTsKKworICAg
IFFQcm9wZXJ0eUFuaW1hdGlvbiogYW5pbWF0aW9uID0gbmV3IFFQcm9wZXJ0eUFuaW1hdGlvbihn
cmFwaGljc1dlYlZpZXcoKSwgInJvdGF0aW9uIiwgdGhpcyk7CisgICAgYW5pbWF0aW9uLT5zZXRE
dXJhdGlvbigxMDAwKTsKKworICAgIGludCByb3RhdGlvbiA9IGludChncmFwaGljc1dlYlZpZXco
KS0+cm90YXRpb24oKSk7CisKKyAgICBhbmltYXRpb24tPnNldFN0YXJ0VmFsdWUocm90YXRpb24p
OworICAgIGFuaW1hdGlvbi0+c2V0RW5kVmFsdWUocm90YXRpb24gKyAxODAgLSAocm90YXRpb24g
JSAxODApKTsKKworICAgIGFuaW1hdGlvbi0+c3RhcnQoUUFic3RyYWN0QW5pbWF0aW9uOjpEZWxl
dGVXaGVuU3RvcHBlZCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJWaWV3R3JhcGhpY3NCYXNlZDo6
YW5pbWF0ZWRZRmxpcCgpCit7CisjaWZuZGVmIFFUX05PX0FOSU1BVElPTgorICAgIGlmICghbV9t
YWNoaW5lKSB7CisgICAgICAgIG1fbWFjaGluZSA9IG5ldyBRU3RhdGVNYWNoaW5lKHRoaXMpOwor
CisgICAgICAgIFFTdGF0ZSogczAgPSBuZXcgUVN0YXRlKG1fbWFjaGluZSk7CisgICAgICAgIHMw
LT5hc3NpZ25Qcm9wZXJ0eSh0aGlzLCAieVJvdGF0aW9uIiwgMCk7CisKKyAgICAgICAgUVN0YXRl
KiBzMSA9IG5ldyBRU3RhdGUobV9tYWNoaW5lKTsKKyAgICAgICAgczEtPmFzc2lnblByb3BlcnR5
KHRoaXMsICJ5Um90YXRpb24iLCA5MCk7CisKKyAgICAgICAgUUFic3RyYWN0VHJhbnNpdGlvbiog
dDEgPSBzMC0+YWRkVHJhbnNpdGlvbihzMSk7CisgICAgICAgIFFQcm9wZXJ0eUFuaW1hdGlvbiog
eVJvdGF0aW9uQW5pbSA9IG5ldyBRUHJvcGVydHlBbmltYXRpb24odGhpcywgInlSb3RhdGlvbiIs
IHRoaXMpOworICAgICAgICB0MS0+YWRkQW5pbWF0aW9uKHlSb3RhdGlvbkFuaW0pOworCisgICAg
ICAgIFFTdGF0ZSogczIgPSBuZXcgUVN0YXRlKG1fbWFjaGluZSk7CisgICAgICAgIHMyLT5hc3Np
Z25Qcm9wZXJ0eSh0aGlzLCAieVJvdGF0aW9uIiwgLTkwKTsKKyAgICAgICAgczEtPmFkZFRyYW5z
aXRpb24oczEsIFNJR05BTChwcm9wZXJ0aWVzQXNzaWduZWQoKSksIHMyKTsKKworICAgICAgICBR
U3RhdGUqIHMzID0gbmV3IFFTdGF0ZShtX21hY2hpbmUpOworICAgICAgICBzMy0+YXNzaWduUHJv
cGVydHkodGhpcywgInlSb3RhdGlvbiIsIDApOworCisgICAgICAgIFFBYnN0cmFjdFRyYW5zaXRp
b24qIHQyID0gczItPmFkZFRyYW5zaXRpb24oczMpOworICAgICAgICB0Mi0+YWRkQW5pbWF0aW9u
KHlSb3RhdGlvbkFuaW0pOworCisgICAgICAgIFFGaW5hbFN0YXRlKiBmaW5hbCA9IG5ldyBRRmlu
YWxTdGF0ZShtX21hY2hpbmUpOworICAgICAgICBzMy0+YWRkVHJhbnNpdGlvbihzMywgU0lHTkFM
KHByb3BlcnRpZXNBc3NpZ25lZCgpKSwgZmluYWwpOworCisgICAgICAgIG1fbWFjaGluZS0+c2V0
SW5pdGlhbFN0YXRlKHMwKTsKKyAgICAgICAgeVJvdGF0aW9uQW5pbS0+c2V0RHVyYXRpb24oMTAw
MCk7CisgICAgfQorCisgICAgbV9tYWNoaW5lLT5zdGFydCgpOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViVmlld0dyYXBoaWNzQmFzZWQ6OnBhaW50RXZlbnQoUVBhaW50RXZlbnQqIGV2ZW50KQorewor
ICAgIFFHcmFwaGljc1ZpZXc6OnBhaW50RXZlbnQoZXZlbnQpOworICAgIGlmICghbV9tZWFzdXJl
RnBzKQorICAgICAgICByZXR1cm47Cit9CisKK3N0YXRpYyBRTWVudSogY3JlYXRlQ29udGV4dE1l
bnUoUVdlYlBhZ2UqIHBhZ2UsIFFQb2ludCBwb3NpdGlvbikKK3sKKyAgICBRTWVudSogbWVudSA9
IHBhZ2UtPmNyZWF0ZVN0YW5kYXJkQ29udGV4dE1lbnUoKTsKKworICAgIFFXZWJIaXRUZXN0UmVz
dWx0IHIgPSBwYWdlLT5tYWluRnJhbWUoKS0+aGl0VGVzdENvbnRlbnQocG9zaXRpb24pOworCisg
ICAgaWYgKCFyLmxpbmtVcmwoKS5pc0VtcHR5KCkpIHsKKyNpZm5kZWYgUVRfTk9fREVTS1RPUFNF
UlZJQ0VTCisgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBxb2JqZWN0X2Nhc3Q8V2ViUGFnZSo+
KHBhZ2UpOworICAgICAgICBRQWN0aW9uKiBuZXdUYWJBY3Rpb24gPSBtZW51LT5hZGRBY3Rpb24o
Ik9wZW4gaW4gRGVmYXVsdCAmQnJvd3NlciIsIHdlYlBhZ2UsIFNMT1Qob3BlblVybEluRGVmYXVs
dEJyb3dzZXIoKSkpOworICAgICAgICBuZXdUYWJBY3Rpb24tPnNldERhdGEoci5saW5rVXJsKCkp
OworICAgICAgICBtZW51LT5pbnNlcnRBY3Rpb24obWVudS0+YWN0aW9ucygpLmF0KDIpLCBuZXdU
YWJBY3Rpb24pOworI2VuZGlmCisgICAgICAgIGlmIChyLmxpbmtUYXJnZXRGcmFtZSgpICE9IHIu
ZnJhbWUoKSkKKyAgICAgICAgICAgIG1lbnUtPmluc2VydEFjdGlvbihtZW51LT5hY3Rpb25zKCku
YXQoMCksIHBhZ2UtPmFjdGlvbihRV2ViUGFnZTo6T3BlbkxpbmtJblRoaXNXaW5kb3cpKTsKKyAg
ICB9CisgICAgcmV0dXJuIG1lbnU7Cit9CisKK3ZvaWQgR3JhcGhpY3NXZWJWaWV3Ojptb3VzZVBy
ZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICBzZXRQcm9w
ZXJ0eSgibW91c2VCdXR0b25zIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZShpbnQoZXZlbnQtPmJ1dHRv
bnMoKSkpKTsKKyAgICBzZXRQcm9wZXJ0eSgia2V5Ym9hcmRNb2RpZmllcnMiLCBRVmFyaWFudDo6
ZnJvbVZhbHVlKGludChldmVudC0+bW9kaWZpZXJzKCkpKSk7CisKKyAgICBRR3JhcGhpY3NXZWJW
aWV3Ojptb3VzZVByZXNzRXZlbnQoZXZlbnQpOworfQorCit2b2lkIFdlYlZpZXdUcmFkaXRpb25h
bDo6bW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICBzZXRQcm9wZXJ0
eSgibW91c2VCdXR0b25zIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZShpbnQoZXZlbnQtPmJ1dHRvbnMo
KSkpKTsKKyAgICBzZXRQcm9wZXJ0eSgia2V5Ym9hcmRNb2RpZmllcnMiLCBRVmFyaWFudDo6ZnJv
bVZhbHVlKGludChldmVudC0+bW9kaWZpZXJzKCkpKSk7CisKKyAgICBRV2ViVmlldzo6bW91c2VQ
cmVzc0V2ZW50KGV2ZW50KTsKK30KKwordm9pZCBHcmFwaGljc1dlYlZpZXc6OmNvbnRleHRNZW51
RXZlbnQoUUdyYXBoaWNzU2NlbmVDb250ZXh0TWVudUV2ZW50KiBldmVudCkKK3sKKyAgICBRTWVu
dSogbWVudSA9IGNyZWF0ZUNvbnRleHRNZW51KHBhZ2UoKSwgZXZlbnQtPnBvcygpLnRvUG9pbnQo
KSk7CisgICAgbWVudS0+ZXhlYyhldmVudC0+c2NyZWVuUG9zKCkpOworICAgIGRlbGV0ZSBtZW51
OworfQorCit2b2lkIFdlYlZpZXdUcmFkaXRpb25hbDo6Y29udGV4dE1lbnVFdmVudChRQ29udGV4
dE1lbnVFdmVudCogZXZlbnQpCit7CisgICAgUU1lbnUqIG1lbnUgPSBjcmVhdGVDb250ZXh0TWVu
dShwYWdlKCksIGV2ZW50LT5wb3MoKSk7CisgICAgbWVudS0+ZXhlYyhldmVudC0+Z2xvYmFsUG9z
KCkpOworICAgIGRlbGV0ZSBtZW51OworfQorCmRpZmYgLS1naXQgYS9Ub29scy9RdFRlc3RCcm93
c2VyL3dlYnZpZXcuaCBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIvd2Vidmlldy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YTYxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9RdFRlc3RCcm93c2VyL3dlYnZpZXcuaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHaXJpc2ggUmFtYWtyaXNobmFuIDxnaXJpc2hAZm9y
d2FyZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlr
b3NAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBEaXJrIE11ZWxsZXIgPG11ZWxsZXJA
a2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+
CisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIHdlYnZpZXdfaAor
I2RlZmluZSB3ZWJ2aWV3X2gKKworI2luY2x1ZGUgImZwc3RpbWVyLmgiCisjaW5jbHVkZSAid2Vi
cGFnZS5oIgorI2luY2x1ZGUgPHF3ZWJ2aWV3Lmg+CisjaW5jbHVkZSA8cWdyYXBoaWNzd2Vidmll
dy5oPgorI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CisjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0
PgorI2luY2x1ZGUgPFFUaW1lPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFTdGF0ZU1h
Y2hpbmU7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFdlYlZpZXdUcmFkaXRpb25hbCA6IHB1
YmxpYyBRV2ViVmlldyB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFdlYlZpZXdUcmFk
aXRpb25hbChRV2lkZ2V0KiBwYXJlbnQpIDogUVdlYlZpZXcocGFyZW50KSB7fQorCitwcm90ZWN0
ZWQ6CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RXZlbnQoUUNvbnRleHRNZW51RXZlbnQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50Kik7Cit9Owor
CisKK2NsYXNzIEdyYXBoaWNzV2ViVmlldyA6IHB1YmxpYyBRR3JhcGhpY3NXZWJWaWV3IHsKKyAg
ICBRX09CSkVDVAorCitwdWJsaWM6CisgICAgR3JhcGhpY3NXZWJWaWV3KFFHcmFwaGljc0l0ZW0q
IHBhcmVudCA9IDApIDogUUdyYXBoaWNzV2ViVmlldyhwYXJlbnQpIHt9OworCitwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RXZlbnQoUUdyYXBoaWNzU2NlbmVDb250ZXh0
TWVudUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUHJlc3NFdmVudChRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqKTsKK307CisKKworY2xhc3MgV2ViVmlld0dyYXBoaWNzQmFzZWQgOiBw
dWJsaWMgUUdyYXBoaWNzVmlldyB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKHFyZWFs
IHlSb3RhdGlvbiBSRUFEIHlSb3RhdGlvbiBXUklURSBzZXRZUm90YXRpb24pCisKK3B1YmxpYzoK
KyAgICBXZWJWaWV3R3JhcGhpY3NCYXNlZChRV2lkZ2V0KiBwYXJlbnQpOworICAgIHZvaWQgc2V0
UGFnZShRV2ViUGFnZSogcGFnZSk7CisKKyAgICB2b2lkIHNldEl0ZW1DYWNoZU1vZGUoUUdyYXBo
aWNzSXRlbTo6Q2FjaGVNb2RlIG1vZGUpIHsgZ3JhcGhpY3NXZWJWaWV3KCktPnNldENhY2hlTW9k
ZShtb2RlKTsgfQorICAgIFFHcmFwaGljc0l0ZW06OkNhY2hlTW9kZSBpdGVtQ2FjaGVNb2RlKCkg
eyByZXR1cm4gZ3JhcGhpY3NXZWJWaWV3KCktPmNhY2hlTW9kZSgpOyB9CisKKyAgICB2b2lkIHNl
dEZyYW1lUmF0ZU1lYXN1cmVtZW50RW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIGJvb2wgZnJh
bWVSYXRlTWVhc3VyZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWFzdXJlRnBzOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50Kik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50RXZlbnQoUVBhaW50RXZlbnQqIGV2ZW50KTsKKworICAgIHZvaWQgc2V0
UmVzaXplc1RvQ29udGVudHMoYm9vbCBiKTsKKyAgICBib29sIHJlc2l6ZXNUb0NvbnRlbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNpemVzVG9Db250ZW50czsgfQorCisgICAgdm9pZCBzZXRZUm90
YXRpb24ocXJlYWwgYW5nbGUpOworICAgIHFyZWFsIHlSb3RhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1feVJvdGF0aW9uOyB9CisKKyAgICBHcmFwaGljc1dlYlZpZXcqIGdyYXBoaWNzV2ViVmlldygp
IGNvbnN0IHsgcmV0dXJuIG1faXRlbTsgfQorCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIHVw
ZGF0ZUZyYW1lUmF0ZSgpOworICAgIHZvaWQgYW5pbWF0ZWRGbGlwKCk7CisgICAgdm9pZCBhbmlt
YXRlZFlGbGlwKCk7CisgICAgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKGNvbnN0IFFTaXplJik7
CisgICAgdm9pZCBzY3JvbGxSZXF1ZXN0ZWQoaW50LCBpbnQpOworCitRX1NJR05BTFM6CisgICAg
dm9pZCBjdXJyZW50RlBTVXBkYXRlZChpbnQgZnBzKTsKKworcHJpdmF0ZToKKyAgICBHcmFwaGlj
c1dlYlZpZXcqIG1faXRlbTsKKyAgICBpbnQgbV9udW1QYWludHNUb3RhbDsKKyAgICBpbnQgbV9u
dW1QYWludHNTaW5jZUxhc3RNZWFzdXJlOworICAgIFFUaW1lIG1fc3RhcnRUaW1lOworICAgIFFU
aW1lIG1fbGFzdENvbnN1bHRUaW1lOworICAgIFFUaW1lciogbV91cGRhdGVUaW1lcjsKKyAgICBi
b29sIG1fbWVhc3VyZUZwczsKKyAgICBxcmVhbCBtX3lSb3RhdGlvbjsKKyAgICBib29sIG1fcmVz
aXplc1RvQ29udGVudHM7CisgICAgUVN0YXRlTWFjaGluZSogbV9tYWNoaW5lOworICAgIEZwc1Rp
bWVyIG1fZnBzVGltZXI7Cit9OworCitpbmxpbmUgdm9pZCBXZWJWaWV3R3JhcGhpY3NCYXNlZDo6
c2V0WVJvdGF0aW9uKHFyZWFsIGFuZ2xlKQoreworICAgIFFSZWN0RiByID0gZ3JhcGhpY3NXZWJW
aWV3KCktPmJvdW5kaW5nUmVjdCgpOworICAgIGdyYXBoaWNzV2ViVmlldygpLT5zZXRUcmFuc2Zv
cm0oUVRyYW5zZm9ybSgpCisgICAgICAgIC50cmFuc2xhdGUoci53aWR0aCgpIC8gMiwgci5oZWln
aHQoKSAvIDIpCisgICAgICAgIC5yb3RhdGUoYW5nbGUsIFF0OjpZQXhpcykKKyAgICAgICAgLnRy
YW5zbGF0ZSgtci53aWR0aCgpIC8gMiwgLXIuaGVpZ2h0KCkgLyAyKSk7CisgICAgbV95Um90YXRp
b24gPSBhbmdsZTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci9jb25maWcvcXVldWVzLnB5IGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvY29uZmlnL3F1
ZXVlcy5weQppbmRleCAyNTRmMDhhLi4yMjY2ZWIzIDEwMDY0NAotLS0gYS9Ub29scy9RdWV1ZVN0
YXR1c1NlcnZlci9jb25maWcvcXVldWVzLnB5CisrKyBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L2NvbmZpZy9xdWV1ZXMucHkKQEAgLTMwLDYgKzMwLDggQEAKIGFsbF9xdWV1ZV9uYW1lcyA9IFsK
ICAgICAiY29tbWl0LXF1ZXVlIiwKICAgICAic3R5bGUtcXVldWUiLAorICAgICJxdC1ld3MiLAor
ICAgICJxdC13azItZXdzIiwKICAgICAiZ3RrLWV3cyIsCiAgICAgImd0ay13azItZXdzIiwKICAg
ICAibWFjLWV3cyIsCmRpZmYgLS1naXQgYS9Ub29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9h
dHRhY2htZW50LnB5IGIvVG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvYXR0YWNobWVudC5w
eQppbmRleCA0OTYwNzA5Li44M2I0NDFlIDEwMDY0NAotLS0gYS9Ub29scy9RdWV1ZVN0YXR1c1Nl
cnZlci9tb2RlbC9hdHRhY2htZW50LnB5CisrKyBiL1Rvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21v
ZGVsL2F0dGFjaG1lbnQucHkKQEAgLTk5LDcgKzk5LDcgQEAgY2xhc3MgQXR0YWNobWVudChvYmpl
Y3QpOgogCiAgICAgZGVmIF9jYWxjdWxhdGVfcXVldWVfcG9zaXRpb25zKHNlbGYpOgogICAgICAg
ICBhbGxfd29ya19pdGVtcyA9IFdvcmtJdGVtcy5hbGwoKS5mZXRjaChsaW1pdD1sZW4oUXVldWUu
YWxsKCkpKQotICAgICAgICByZXR1cm4gZGljdChbKGl0ZW1zLnF1ZXVlLm5hbWUoKSwgaXRlbXMu
ZGlzcGxheV9wb3NpdGlvbl9mb3JfYXR0YWNobWVudChzZWxmLmlkKSkgZm9yIGl0ZW1zIGluIGFs
bF93b3JrX2l0ZW1zIGlmIGl0ZW1zLnF1ZXVlXSkKKyAgICAgICAgcmV0dXJuIGRpY3QoWyhpdGVt
cy5xdWV1ZS5uYW1lKCksIGl0ZW1zLmRpc3BsYXlfcG9zaXRpb25fZm9yX2F0dGFjaG1lbnQoc2Vs
Zi5pZCkpIGZvciBpdGVtcyBpbiBhbGxfd29ya19pdGVtc10pCiAKICAgICAjIEZJWE1FOiBUaGlz
IGlzIGNvbnRyb2xsZXIvdmlldyBjb2RlIGFuZCBkb2VzIG5vdCBiZWxvbmcgaW4gYSBtb2RlbC4K
ICAgICBkZWYgX2ZldGNoX3N1bW1hcnkoc2VsZik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvZXdzLmpzb24gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jb25maWcvZXdzLmpzb24KaW5kZXggOTczNmU4ZS4uYzgyYWE5OSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2V3cy5qc29uCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9ld3MuanNvbgpAQCAtMjMsNiArMjMs
MTggQEAKICAgICAgICAgICAgICJneXV5b3VuZy5raW1Ad2Via2l0Lm9yZyIKICAgICAgICAgXQog
ICAgIH0sCisgICAgIlF0IEVXUyI6IHsKKyAgICAgICAgInBvcnQiOiAicXQiLAorICAgICAgICAi
d2F0Y2hlcnMiOiBbCisgICAgICAgICAgICAid2Via2l0LWV3c0BzZWQuaW5mLnUtc3plZ2VkLmh1
IgorICAgICAgICBdCisgICAgfSwKKyAgICAiUXQgV0syIEVXUyI6IHsKKyAgICAgICAgInBvcnQi
OiAicXQtd2syIiwKKyAgICAgICAgIndhdGNoZXJzIjogWworICAgICAgICAgICAgIndlYmtpdC1l
d3NAc2VkLmluZi51LXN6ZWdlZC5odSIKKyAgICAgICAgXQorICAgIH0sCiAgICAgIldpbiBFV1Mi
OiB7CiAgICAgICAgICJwb3J0IjogIndpbiIKICAgICB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9EZXJpdmVkU291cmNlcy5wcmkgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0Rlcml2
ZWRTb3VyY2VzLnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjM5MWFk
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9EZXJpdmVkU291cmNlcy5w
cmkKQEAgLTAsMCArMSwxMiBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlcml2ZWQgc291cmNlcyBmb3Ig
VGVzdFdlYktpdEFQSQorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2
aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitURU1QTEFURSA9IGRlcml2
ZWQKKworIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVlZGVkIGJ5IHRoaXMgcHJvamVj
dCBhcmUgcHJlc2VudAorZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1hbmRzID0gcGVybCAkJHtST09U
X1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1o
ZWFkZXJzLnBsICQke1JPT1RfV0VCS0lUX0RJUn0vVG9vbHMvVGVzdFdlYktpdEFQSSAkJHtST09U
X0JVSUxEX0RJUn0vU291cmNlL2luY2x1ZGUgcXQKK2Z3aGVhZGVyX2dlbmVyYXRvci5kZXBlbmRz
ICA9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0ZS1m
b3J3YXJkaW5nLWhlYWRlcnMucGwKK0dFTkVSQVRPUlMgKz0gZndoZWFkZXJfZ2VuZXJhdG9yCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlLnByaSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGUucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjE3MWEyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0luamVjdGVkQnVuZGxlLnByaQpAQCAtMCwwICsxLDU2IEBACisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
UHJvamVjdCBmaWxlIGZvciBUZXN0V2ViS2l0QVBJJ3MgSW5qZWN0ZWRCdW5kbGUKKyMKKyMgU2Vl
ICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVt
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBsaWIKK1RBUkdFVCA9IFRlc3RXZWJLaXRBUElJ
bmplY3RlZEJ1bmRsZQorCitJTkNMVURFUEFUSCArPSAkJFBXRAorSU5DTFVERVBBVEggKz0gJCR7
Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC9pbmNsdWRlCisKK1NPVVJD
RVMgKz0gXAorICAgICQkUFdEL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgXAorICAgICQk
UFdEL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5oIFwKKyAgICAkJFBXRC9JbmplY3RlZEJ1bmRs
ZU1haW4uY3BwIFwKKyAgICAkJFBXRC9JbmplY3RlZEJ1bmRsZVRlc3QuaCBcCisgICAgJCRQV0Qv
UGxhdGZvcm1VdGlsaXRpZXMuY3BwIFwKKyAgICAkJFBXRC9QbGF0Zm9ybVV0aWxpdGllcy5oIFwK
KyAgICAkJFBXRC9xdC9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJRdC5jcHAgXAorICAgICQkUFdE
L3F0L1BsYXRmb3JtVXRpbGl0aWVzUXQuY3BwIFwKKyAgICAkJFBXRC9UZXN0cy9XZWJLaXQyL0Nh
bkhhbmRsZVJlcXVlc3RfQnVuZGxlLmNwcCBcCisgICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9Eb2N1
bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCBcCisgICAgJCRQV0QvVGVz
dHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIFwKKyAgICAkJFBX
RC9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCBcCisg
ICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9HZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGFDYWxsYmFja19CdW5kbGUuY3BwIFwKKyAgICAkJFBXRC9UZXN0cy9XZWJLaXQyL0hpdFRl
c3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgXAorICAgICQkUFdEL1Rlc3RzL1dlYktpdDIv
SW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwIFwKKyAgICAkJFBXRC9UZXN0cy9XZWJLaXQy
L0luamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5jcHAgXAorICAgICQkUFdEL1Rlc3Rz
L1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5z
X0J1bmRsZS5jcHAgXAorICAgICQkUFdEL1Rlc3RzL1dlYktpdDIvTG9hZENhbmNlbGVkTm9TZXJ2
ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgXAorICAgICQkUFdEL1Rlc3RzL1dlYktpdDIv
TW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIFwKKyAgICAkJFBXRC9UZXN0cy9XZWJLaXQy
L05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF9CdW5kbGUuY3BwIFwKKyAgICAkJFBXRC9U
ZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzX0J1bmRsZS5j
cHAgXAorICAgICQkUFdEL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgXAorICAgICQkUFdEL1Rlc3RzL1dlYktpdDIvTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgXAorICAgICQkUFdEL1Rl
c3RzL1dlYktpdDIvUGFyZW50RnJhbWVfQnVuZGxlLmNwcCBcCisgICAgJCRQV0QvVGVzdHMvV2Vi
S2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAgXAorICAg
ICQkUFdEL1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxl
LmNwcCBcCisgICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9Vc2VyTWVzc2FnZV9CdW5kbGUuY3BwIFwK
KyAgICAkJFBXRC9UZXN0cy9XZWJLaXQyL1dpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBc
CisgICAgJCRQV0QvVGVzdHMvV2ViS2l0Mi9XS0Nvbm5lY3Rpb25fQnVuZGxlLmNwcAorCisKK0RF
U1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vbGliCisKK1FUICs9IGNvcmUgd2Via2l0CisKK1dF
QktJVCArPSB3dGYgamF2YXNjcmlwdGNvcmUgd2ViY29yZSB3ZWJraXQyCisKK0NPTkZJRyArPSBw
bHVnaW4gcnBhdGggY29tcGlsaW5nX3RoaXJkcGFydHlfY29kZQorCitMSUJTICs9IC1MJCR7Uk9P
VF9CVUlMRF9ESVJ9L1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0LyQkdGFyZ2V0U3ViRGlyKCkgLWxn
dGVzdAorCitERUZJTkVTICs9IEFQSVRFU1RfU09VUkNFX0RJUj1cXFwiJCRQV0RcXFwiIFwKKyAg
ICAgICAgICAgUk9PVF9CVUlMRF9ESVI9XFxcIiQke1JPT1RfQlVJTERfRElSfVxcXCIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGU4Y2YxYmUuLjNlYjc5MWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNTUsNiArNTUsMTMgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNfT2JqZWN0OwogI2VuZGlmCiB0eXBlZGVmIEV2YXNf
T2JqZWN0KiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgRWNvcmVfRXZhcyogUGxhdGZvcm1XaW5k
b3c7CisjZWxpZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVF1aWNr
VmlldzsKK1FUX0VORF9OQU1FU1BBQ0UKK2NsYXNzIFFRdWlja1dlYlZpZXc7Cit0eXBlZGVmIFFR
dWlja1dlYlZpZXcqIFBsYXRmb3JtV0tWaWV3OwordHlwZWRlZiBRUXVpY2tWaWV3KiBQbGF0Zm9y
bVdpbmRvdzsKICNlbmRpZgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkucHJpIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kZGM5OTM0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnByaQpAQCAtMCwwICsxLDIyIEBACisKK0lOQ0xVREVQQVRIICs9ICQkUFdEICQke1JP
T1RfV0VCS0lUX0RJUn0vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QvaW5jbHVkZQorV0VCS0lUICs9
IHd0ZiBqYXZhc2NyaXB0Y29yZSB3ZWJraXQyCisKK0RFRklORVMgKz0gUVRfTk9fQ0FTVF9GUk9N
X0FTQ0lJCisKK1FUICs9IGNvcmUgY29yZS1wcml2YXRlIGd1aSBndWktcHJpdmF0ZSB3ZWJraXQg
cXVpY2sgcXVpY2stcHJpdmF0ZQorCitDT05GSUcgKz0gY29tcGlsaW5nX3RoaXJkcGFydHlfY29k
ZQorCitTT1VSQ0VTICs9IFwKKyAgICAkJFBXRC9KYXZhU2NyaXB0VGVzdC5jcHAgXAorICAgICQk
UFdEL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBcCisgICAgJCRQV0QvVGVzdHNDb250cm9sbGVyLmNw
cCBcCisgICAgJCRQV0QvcXQvbWFpbi5jcHAgXAorICAgICQkUFdEL3F0L1BsYXRmb3JtVXRpbGl0
aWVzUXQuY3BwIFwKKyAgICAkJFBXRC9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKKworTElCUyAr
PSAtTCQke1JPT1RfQlVJTERfRElSfS9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC8kJHRhcmdldFN1
YkRpcigpIC1sZ3Rlc3QKKworREVGSU5FUyArPSBST09UX0JVSUxEX0RJUj1cXFwiJCR7Uk9PVF9C
VUlMRF9ESVJ9XFxcIgorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkucHJvIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnBybwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQwY2Q1Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnBybwpAQCAtMCwwICsxLDExIEBACitU
RU1QTEFURSA9IHN1YmRpcnMKK0NPTkZJRyArPSBvcmRlcmVkCisKK2Rlcml2ZWRfc291cmNlcy5m
aWxlID0gRGVyaXZlZFNvdXJjZXMucHJpCitpbmplY3RlZF9idW5kbGUuZmlsZSA9IEluamVjdGVk
QnVuZGxlLnByaQordGVzdHMuZmlsZSA9IFRlc3RzLnByaQorCitTVUJESVJTICs9IGRlcml2ZWRf
c291cmNlcyBpbmplY3RlZF9idW5kbGUgdGVzdHMKKworYWRkU3RyaWN0U3ViZGlyT3JkZXJCZXR3
ZWVuKGRlcml2ZWRfc291cmNlcywgaW5qZWN0ZWRfYnVuZGxlKQorYWRkU3RyaWN0U3ViZGlyT3Jk
ZXJCZXR3ZWVuKGRlcml2ZWRfc291cmNlcywgdGVzdHMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzLnByaSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMucHJpCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTgxYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzLnByaQpAQCAtMCwwICsxLDMgQEAKK1RFTVBMQVRF
ID0gc3ViZGlycworCitTVUJESVJTICs9IFRlc3RzL1dURiBUZXN0cy9KYXZhU2NyaXB0Q29yZSBU
ZXN0cy9XZWJLaXQyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjlkNDRmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwpAQCAtMCwwICsxLDgg
QEAKK1RFTVBMQVRFID0gYXBwCitUQVJHRVQgPSB0c3RfanNjCisKK1NPVVJDRVMgKz0gKi5jcHAK
KworaW5jbHVkZSguLi8uLi9UZXN0V2ViS2l0QVBJLnByaSkKKworREVGSU5FUyArPSBBUElURVNU
X1NPVVJDRV9ESVI9XFxcIiQkUFdEXFxcIgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcAppbmRleCA0OWEy
ZGUzLi42YjlkOGRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcApAQCAtNDIsMTEgKzQyLDExIEBA
IHRlbXBsYXRlPD4gc3RydWN0IFByaW50ZkZvcm1hdFRyYWl0PGxvbmc+IHsgc3RhdGljIGNvbnN0
IGNoYXIgZm9ybWF0W107IH07CiBjb25zdCBjaGFyIFByaW50ZkZvcm1hdFRyYWl0PGxvbmc+Ojpm
b3JtYXRbXSA9ICIlbGQiOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBQcmludGZGb3JtYXRUcmFpdDxs
b25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W107IH07Ci0jaWYgT1MoV0lORE9X
UykKKyNpZiBPUyhXSU5ET1dTKSAmJiAhUExBVEZPUk0oUVQpCiBjb25zdCBjaGFyIFByaW50ZkZv
cm1hdFRyYWl0PGxvbmcgbG9uZz46OmZvcm1hdFtdID0gIiVJNjRpIjsKICNlbHNlCiBjb25zdCBj
aGFyIFByaW50ZkZvcm1hdFRyYWl0PGxvbmcgbG9uZz46OmZvcm1hdFtdID0gIiVsbGkiOwotI2Vu
ZGlmIC8vIE9TKFdJTkRPV1MpCisjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYgIVBMQVRGT1JNKFFU
KQogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBQcmludGZGb3JtYXRUcmFpdDx1bnNpZ25lZCBzaG9ydD4g
eyBzdGF0aWMgY29uc3QgY2hhciBmb3JtYXRbXTsgfTsKIGNvbnN0IGNoYXIgUHJpbnRmRm9ybWF0
VHJhaXQ8dW5zaWduZWQgc2hvcnQ+Ojpmb3JtYXRbXSA9ICIlaHUiOwpAQCAtNTgsMTEgKzU4LDEx
IEBAIHRlbXBsYXRlPD4gc3RydWN0IFByaW50ZkZvcm1hdFRyYWl0PHVuc2lnbmVkIGxvbmc+IHsg
c3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W107CiBjb25zdCBjaGFyIFByaW50ZkZvcm1hdFRyYWl0
PHVuc2lnbmVkIGxvbmc+Ojpmb3JtYXRbXSA9ICIlbHUiOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBQ
cmludGZGb3JtYXRUcmFpdDx1bnNpZ25lZCBsb25nIGxvbmc+IHsgc3RhdGljIGNvbnN0IGNoYXIg
Zm9ybWF0W107IH07Ci0jaWYgT1MoV0lORE9XUykKKyNpZiBPUyhXSU5ET1dTKSAmJiAhUExBVEZP
Uk0oUVQpCiBjb25zdCBjaGFyIFByaW50ZkZvcm1hdFRyYWl0PHVuc2lnbmVkIGxvbmcgbG9uZz46
OmZvcm1hdFtdID0gIiVJNjR1IjsKICNlbHNlCiBjb25zdCBjaGFyIFByaW50ZkZvcm1hdFRyYWl0
PHVuc2lnbmVkIGxvbmcgbG9uZz46OmZvcm1hdFtdID0gIiVsbHUiOwotI2VuZGlmIC8vIE9TKFdJ
TkRPV1MpCisjZW5kaWYgLy8gT1MoV0lORE9XUykgJiYgIVBMQVRGT1JNKFFUKQogCiAKIC8vIEZJ
WE1FOiB1c2Ugc25wcmludGYgZnJvbSBTdHJpbmdFeHRyYXMuaApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGLnBybyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dURi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI4MGNj
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURi5w
cm8KQEAgLTAsMCArMSwzMCBAQAorVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IHRzdF93dGYKKwor
U09VUkNFUyArPSBcCisgICAgQXRvbWljU3RyaW5nLmNwcCBcCisgICAgQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCBcCisgICAgQ1N0cmluZy5jcHAgXAorICAgIEZ1bmN0aW9uYWwuY3Bw
IFwKKyAgICBIYXNoTWFwLmNwcCBcCisgICAgSGFzaFNldC5jcHAgXAorICAgIEludGVnZXJUb1N0
cmluZ0NvbnZlcnNpb24uY3BwIFwKKyAgICBMaXN0SGFzaFNldC5jcHAgXAorICAgIE1ENS5jcHAg
XAorICAgIE1hdGhFeHRyYXMuY3BwIFwKKyAgICBNZWRpYVRpbWUuY3BwIFwKKyAgICBSZWRCbGFj
a1RyZWUuY3BwIFwKKyAgICBTSEExLmNwcCBcCisgICAgU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJh
dGlvbnMuY3BwIFwKKyAgICBTdHJpbmdCdWlsZGVyLmNwcCBcCisgICAgU3RyaW5nSGFzaGVyLmNw
cCBcCisgICAgU3RyaW5nSW1wbC5jcHAgXAorICAgIFN0cmluZ09wZXJhdG9ycy5jcHAgXAorICAg
IFRlbXBvcmFyeUNoYW5nZS5jcHAgXAorICAgIFZlY3Rvci5jcHAgXAorICAgIFdURlN0cmluZy5j
cHAKKworaW5jbHVkZSguLi8uLi9UZXN0V2ViS2l0QVBJLnByaSkKKworREVGSU5FUyArPSBBUElU
RVNUX1NPVVJDRV9ESVI9XFxcIiQkUFdEXFxcIgorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvV2ViS2l0Mi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNGE5MzY0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMCwwICsxLDYzIEBACitURU1QTEFURSA9IGFwcAorVEFS
R0VUID0gdHN0X3dlYmtpdDIKKworU09VUkNFUyArPSBcCisgICAgQWJvdXRCbGFua0xvYWQuY3Bw
IFwKKyAgICBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwIFwKKyAgICBET01X
aW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgXAorICAgIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUu
Y3BwIFwKKyAgICBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwIFwKKyAgICBF
dmFsdWF0ZUphdmFTY3JpcHQuY3BwIFwKKyAgICBGYWlsZWRMb2FkLmNwcCBcCisgICAgRmluZC5j
cHAgXAorICAgIEZyYW1lTUlNRVR5cGVIVE1MLmNwcCBcCisgICAgRnJhbWVNSU1FVHlwZVBORy5j
cHAgXAorICAgIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNr
LmNwcCBcCisgICAgSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwIFwKKyAgICBJbmplY3RlZEJ1
bmRsZUJhc2ljLmNwcCBcCisgICAgSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwIFwKKyAg
ICBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMuY3BwIFwK
KyAgICBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIFwKKyAg
ICBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwIFwKKyAgICBMb2FkUGFn
ZU9uQ3Jhc2guY3BwIFwKKyAgICBNb3VzZU1vdmVBZnRlckNyYXNoLmNwcCBcCisgICAgUGFnZUxv
YWRCYXNpYy5jcHAgXAorICAgIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9y
RnJhbWUuY3BwIFwKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBcCisgICAgUGFyZW50RnJh
bWUuY3BwIFwKKyAgICBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwIFwKKyAgICBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgXAorICAgIFJlbG9hZFBhZ2VBZnRl
ckNyYXNoLmNwcCBcCisgICAgUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHAgXAorICAgIFJlc3Bv
bnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwIFwKKyAgICBUZXJtaW5hdGVUd2ljZS5j
cHAgXAorICAgIFVzZXJNZXNzYWdlLmNwcCBcCisgICAgV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAg
XAorICAgIFdLQ29ubmVjdGlvbi5jcHAgXAorICAgIFdLU3RyaW5nLmNwcCBcCisgICAgV0tTdHJp
bmdKU1N0cmluZy5jcHAgXAorICAgIFdLVVJMLmNwcAorCitGQUlMSU5HX1NPVVJDRVMgPSBcCisg
ICAgQ2FuSGFuZGxlUmVxdWVzdC5jcHAgXAorCitGQUlMSU5HX1NPVVJDRVMgKz0gU2hvdWxkR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICMgT25seSBzdGFsbHMgaW4gZmxpY2thYmxlIG1vZGUu
CitGQUlMSU5HX1NPVVJDRVMgKz0gU3BhY2ViYXJTY3JvbGxpbmcuY3BwICMgT25seSBmYWlscyBp
biBmbGlja2FibGUgbW9kZS4KKworU09VUkNFUyArPSAkJEZBSUxJTkdfU09VUkNFUworCisjIFRl
c3RzIHNraXBwZWQgYmVjYXVzZSB0aGV5IGNyYXNoLCBzdGFsbCBvciBkbyBub3QgY29tcGlsZS4K
K1NLSVBQRURfU09VUkNFUyA9IFwKKyAgICBDb29raWVNYW5hZ2VyLmNwcCBcCisgICAgRG93bmxv
YWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBcCisgICAgRm9yY2VSZXBhaW50LmNwcCBcCisg
ICAgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcCBcCisgICAgTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwIFwKKyAgICBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JJbWFnZXMuY3BwIFwKKyAgICBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGcmFtZXMuY3BwIFwKKyAgICBSZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRh
LmNwcCBcCisgICAgV2ViQ29yZVN0YXRpc3RpY3NXaXRoTm9XZWJQcm9jZXNzLmNwcAorCitpbmNs
dWRlKC4uLy4uL1Rlc3RXZWJLaXRBUEkucHJpKQorCitERUZJTkVTICs9IEFQSVRFU1RfU09VUkNF
X0RJUj1cXFwiJCRQV0RcXFwiCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3F0L0lu
amVjdGVkQnVuZGxlQ29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcXQvSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjVkNTUwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3F0
L0luamVjdGVkQnVuZGxlQ29udHJvbGxlclF0LmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9xdC9QbGF0Zm9ybVV0aWxpdGllc1F0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcXQvUGxhdGZvcm1VdGlsaXRpZXNRdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzYzEzYQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvcXQvUGxhdGZvcm1VdGlsaXRpZXNRdC5jcHAKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLTmF0aXZlRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMUXQuaD4K
KworI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURpcj4KKyNpbmNsdWRl
IDxRVXJsPgorI2luY2x1ZGUgPFFUaHJlYWQ+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
K25hbWVzcGFjZSBVdGlsIHsKKwordm9pZCBydW4oYm9vbCogZG9uZSkKK3sKKyAgICB3aGlsZSAo
ISpkb25lKQorICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjpwcm9jZXNzRXZlbnRzKCk7Cit9CisK
K3ZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMpCit7CisgICAgUVRocmVhZDo6c2xlZXAoc2Vjb25k
cyk7Cit9CisKK1dLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCit7CisgICAg
UVN0cmluZyBwYXRoID0gUUZpbGVJbmZvKFFTdHJpbmdMaXRlcmFsKFJPT1RfQlVJTERfRElSICIv
bGliL2xpYlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZSIpKS5hYnNvbHV0ZUZpbGVQYXRoKCk7
CisKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhwYXRoKTsKK30KKworV0tV
UkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNo
YXIqIGV4dGVuc2lvbikKK3sKKyAgICBRRGlyIHBhdGgoUVN0cmluZ0xpdGVyYWwoQVBJVEVTVF9T
T1VSQ0VfRElSKSk7CisgICAgUVN0cmluZyBmaWxlbmFtZSA9IFFTdHJpbmc6OmZyb21Mb2NhbDhC
aXQocmVzb3VyY2UpICsgUVN0cmluZ0xpdGVyYWwoIi4iKSArIFFTdHJpbmc6OmZyb21Mb2NhbDhC
aXQoZXh0ZW5zaW9uKTsKKworICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhRVXJsKFFVcmw6OmZy
b21Mb2NhbEZpbGUocGF0aC5hYnNvbHV0ZUZpbGVQYXRoKGZpbGVuYW1lKSkpOworfQorCitXS1VS
TFJlZiBVUkxGb3JOb25FeGlzdGVudFJlc291cmNlKCkKK3sKKyAgICByZXR1cm4gV0tVUkxDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImZpbGU6Ly8vZG9lcy1ub3QtZXhpc3QuaHRtbCIpOworfQorCiti
b29sIGlzS2V5RG93bihXS05hdGl2ZUV2ZW50UHRyIGV2ZW50KQoreworICAgIHJldHVybiBldmVu
dC0+dHlwZSgpID09IFFFdmVudDo6S2V5UHJlc3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIFV0aWwK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9xdC9Q
bGF0Zm9ybVdlYlZpZXdRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OGY1NzFjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcXQvUGxhdGZv
cm1XZWJWaWV3UXQuY3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBsYXRmb3Jt
V2ViVmlldy5oIgorI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgorI2luY2x1ZGUgInFxdWlj
a3dlYnZpZXdfcC5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCisjaW5j
bHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRXZlbnRMb29wPgorI2luY2x1ZGUg
PFFRbWxQcm9wZXJ0eT4KKyNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja1ZpZXc+CisjaW5jbHVkZSA8
cXBhL3F3aW5kb3dzeXN0ZW1pbnRlcmZhY2UuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitjbGFzcyBXcmFwcGVyV2luZG93IDogcHVibGljIFFRdWlja1ZpZXcgeworICAgIFFfT0JK
RUNUCitwdWJsaWM6CisgICAgV3JhcHBlcldpbmRvdyhRUXVpY2tXZWJWaWV3KiB2aWV3KQorICAg
ICAgICA6IFFRdWlja1ZpZXcoUVVybChRU3RyaW5nTGl0ZXJhbCgiZGF0YTp0ZXh0L3BsYWluLGlt
cG9ydCBRdFF1aWNrIDIuMFxuSXRlbSB7IG9iamVjdE5hbWU6ICdyb290JyB9IikpKQorICAgICAg
ICAsIG1fdmlldyh2aWV3KQorICAgIHsKKyAgICAgICAgaWYgKHN0YXR1cygpID09IFFRdWlja1Zp
ZXc6OlJlYWR5KQorICAgICAgICAgICAgaGFuZGxlU3RhdHVzQ2hhbmdlZChRUXVpY2tWaWV3OjpS
ZWFkeSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHN0
YXR1c0NoYW5nZWQoUVF1aWNrVmlldzo6U3RhdHVzKSksIFNMT1QoaGFuZGxlU3RhdHVzQ2hhbmdl
ZChRUXVpY2tWaWV3OjpTdGF0dXMpKSk7CisgICAgfQorCitwcml2YXRlIFFfU0xPVFM6CisgICAg
dm9pZCBoYW5kbGVTdGF0dXNDaGFuZ2VkKFFRdWlja1ZpZXc6OlN0YXR1cyBzdGF0dXMpCisgICAg
eworICAgICAgICBpZiAoc3RhdHVzICE9IFFRdWlja1ZpZXc6OlJlYWR5KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHNldEdlb21ldHJ5KDAsIDAsIDgwMCwgNjAwKTsKKworICAgICAg
ICBzZXRSZXNpemVNb2RlKFFRdWlja1ZpZXc6OlNpemVSb290T2JqZWN0VG9WaWV3KTsKKyAgICAg
ICAgbV92aWV3LT5zZXRQYXJlbnRJdGVtKHJvb3RPYmplY3QoKSk7CisgICAgICAgIFFRbWxQcm9w
ZXJ0eTo6d3JpdGUobV92aWV3LCBRU3RyaW5nTGl0ZXJhbCgiYW5jaG9ycy5maWxsIiksIHFWYXJp
YW50RnJvbVZhbHVlKHJvb3RPYmplY3QoKSkpOworCisgICAgICAgIG1fdmlldy0+ZXhwZXJpbWVu
dGFsKCktPnNldFJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKHRydWUpOworCisgICAgICAgIFFXaW5k
b3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZCh0aGlzKTsKKyAgICAgICAg
bV92aWV3LT5wYWdlKCktPnNldEZvY3VzKHRydWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBR
UXVpY2tXZWJWaWV3KiBtX3ZpZXc7Cit9OworCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
VmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQoreworICAgIG1fdmlldyA9IG5ldyBRUXVpY2tXZWJWaWV3KGNvbnRleHRSZWYsIHBhZ2VHcm91
cFJlZik7CisgICAgbV92aWV3LT5zZXRBbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JMb2NhbEhv
c3QodHJ1ZSk7CisgICAgbV92aWV3LT5jb21wb25lbnRDb21wbGV0ZSgpOworCisgICAgbV93aW5k
b3cgPSBuZXcgV3JhcHBlcldpbmRvdyhtX3ZpZXcpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6On5Q
bGF0Zm9ybVdlYlZpZXcoKQoreworICAgIGRlbGV0ZSBtX3dpbmRvdzsKK30KKwordm9pZCBQbGF0
Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCit7
CisgICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgYSBwbGF0Zm9ybSB3aW5kb3cgd2Ugd2lsbCBuZXZl
ciBnZXQgdGhlIG5lY2Vzc2FyeQorICAgIC8vIHJlc2l6ZSBldmVudCwgc28gc2ltdWxhdGUgaXQg
aW4gdGhhdCBjYXNlIHRvIG1ha2Ugc3VyZSB0aGUgcXVpY2t2aWV3IGlzCisgICAgLy8gcmVzaXpl
ZCB0byB3aGF0IHRoZSBhcGkgdGVzdHMgZXhwZWN0cy4KKyAgICBpZiAoIW1fd2luZG93LT5oYW5k
bGUoKSkgeworICAgICAgICBRUmVjdCBuZXdHZW9tZXRyeShtX3dpbmRvdy0+eCgpLCBtX3dpbmRv
dy0+eSgpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6
aGFuZGxlR2VvbWV0cnlDaGFuZ2UobV93aW5kb3csIG5ld0dlb21ldHJ5KTsKKyAgICAgICAgUVdp
bmRvd1N5c3RlbUludGVyZmFjZTo6Zmx1c2hXaW5kb3dTeXN0ZW1FdmVudHMoKTsKKyAgICB9CisK
KyAgICBtX3dpbmRvdy0+cmVzaXplKHdpZHRoLCBoZWlnaHQpOworfQorCitXS1BhZ2VSZWYgUGxh
dGZvcm1XZWJWaWV3OjpwYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92aWV3LT5wYWdlUmVm
KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCit7CisgICAgbV92aWV3LT5z
ZXRGb2N1cyh0cnVlKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpCit7CisgICAgUUtleUV2ZW50IGV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIFF0
OjpLZXlfU3BhY2UsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5k
RXZlbnQobV93aW5kb3csICZldmVudCk7CisgICAgUUtleUV2ZW50IGV2ZW50MihRRXZlbnQ6Oktl
eVJlbGVhc2UsIFF0OjpLZXlfU3BhY2UsIFF0OjpOb01vZGlmaWVyKTsKKyAgICBRQ29yZUFwcGxp
Y2F0aW9uOjpzZW5kRXZlbnQobV93aW5kb3csICZldmVudDIpOworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6c2ltdWxhdGVBbHRLZXlQcmVzcygpCit7CisgICAgUUtleUV2ZW50IGV2ZW50KFFF
dmVudDo6S2V5UHJlc3MsIFF0OjpLZXlfQWx0LCBRdDo6Tm9Nb2RpZmllcik7CisgICAgUUNvcmVB
cHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fd2luZG93LCAmZXZlbnQpOworICAgIFFLZXlFdmVudCBl
dmVudDIoUUV2ZW50OjpLZXlSZWxlYXNlLCBRdDo6S2V5X0FsdCwgUXQ6Ok5vTW9kaWZpZXIpOwor
ICAgIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudChtX3dpbmRvdywgJmV2ZW50Mik7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92ZSh1bnNpZ25lZCB4LCB1bnNp
Z25lZCB5KQoreworICAgIFFQb2ludEYgbW91c2VQb3MoeCwgeSk7CisgICAgUU1vdXNlRXZlbnQg
ZXZlbnQoUUV2ZW50OjpNb3VzZU1vdmUsIG1vdXNlUG9zLCBRdDo6Tm9CdXR0b24sIFF0OjpOb0J1
dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworICAgIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudCht
X3dpbmRvdywgJmV2ZW50KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmln
aHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQoreworICAgIFFQb2ludEYgbW91c2VQb3Mo
eCwgeSk7CisgICAgUU1vdXNlRXZlbnQgZXZlbnQyKFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywg
bW91c2VQb3MsIFF0OjpSaWdodEJ1dHRvbiwgUXQ6OlJpZ2h0QnV0dG9uLCBRdDo6Tm9Nb2RpZmll
cik7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fd2luZG93LCAmZXZlbnQyKTsK
KyAgICBRTW91c2VFdmVudCBldmVudDMoUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UsIG1vdXNl
UG9zLCAgUXQ6OlJpZ2h0QnV0dG9uLCBRdDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAg
ICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV93aW5kb3csICZldmVudDMpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXdR
dC5tb2MiCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3F0L21haW4uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9xdC9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lZmFkNWJiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9x
dC9tYWluLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIERp
Z2lhIFBsYyBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGVzdHNDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2
aWV3X3AuaCIKKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CisKK3ZvaWQgYWRkUXRXZWJQcm9j
ZXNzVG9QYXRoKCkKK3sKKyAgICAvLyBTaW5jZSB0ZXN0cyB3b24ndCBmaW5kIC4vUXRXZWJQcm9j
ZXNzLCBhZGQgaXQgdG8gUEFUSCAoYXQgdGhlIGVuZCB0byBwcmV2ZW50IHN1cnByaXNlcykuCisg
ICAgLy8gUk9PVF9CVUlMRF9ESVIgc2hvdWxkIGJlIGRlZmluZWQgYnkgcW1ha2UuCisgICAgcXB1
dGVudigiUEFUSCIsIHFnZXRlbnYoIlBBVEgiKSArIFFCeXRlQXJyYXkoIjoiIFJPT1RfQlVJTERf
RElSICIvYmluIikpOworfQorCit2b2lkIG1lc3NhZ2VIYW5kbGVyKFF0TXNnVHlwZSB0eXBlLCBj
b25zdCBRTWVzc2FnZUxvZ0NvbnRleHQmLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQoreworICAg
IGlmICh0eXBlID09IFF0Q3JpdGljYWxNc2cpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIl
c1xuIiwgcVByaW50YWJsZShtZXNzYWdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBEbyBub3RoaW5nCit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sK
KyAgICBib29sIHN1cHByZXNzUXREZWJ1Z091dHB1dCA9IHRydWU7IC8vIFN1cHByZXNzIGRlYnVn
IG91dHB1dCBmcm9tIFF0IGlmIG5vdCBzdGFydGVkIHdpdGggLS12ZXJib3NlLgorICAgIGJvb2wg
dXNlRGVza3RvcEJlaGF2aW9yID0gdHJ1ZTsgLy8gVXNlIHRyYWRpdGlvbmFsIGRlc2t0b3AgYmVo
YXZpb3IgaWYgbm90IHN0YXJ0ZWQgd2l0aCAtLWZsaWNrYWJsZS4KKworICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgYXJnYzsgKytpKSB7CisgICAgICAgIGlmICghcXN0cmNtcChhcmd2W2ldLCAiLS12
ZXJib3NlIikpCisgICAgICAgICAgICBzdXBwcmVzc1F0RGVidWdPdXRwdXQgPSBmYWxzZTsKKyAg
ICAgICAgZWxzZSBpZiAoIXFzdHJjbXAoYXJndltpXSwgIi0tZmxpY2thYmxlIikpCisgICAgICAg
ICAgICB1c2VEZXNrdG9wQmVoYXZpb3IgPSBmYWxzZTsKKyAgICB9CisKKyAgICBRUXVpY2tXZWJW
aWV3RXhwZXJpbWVudGFsOjpzZXRGbGlja2FibGVWaWV3cG9ydEVuYWJsZWQoIXVzZURlc2t0b3BC
ZWhhdmlvcik7CisKKyAgICAvLyBIYXMgdG8gYmUgZG9uZSBiZWZvcmUgUUFwcGxpY2F0aW9uIGlz
IGNvbnN0cnVjdGVkIGluIGNhc2UKKyAgICAvLyBRQXBwbGljYXRpb24gaXRzZWxmIHByb2R1Y2Vz
IGRlYnVnIG91dHB1dC4KKyAgICBpZiAoc3VwcHJlc3NRdERlYnVnT3V0cHV0KSB7CisgICAgICAg
IHFJbnN0YWxsTWVzc2FnZUhhbmRsZXIobWVzc2FnZUhhbmRsZXIpOworICAgICAgICBpZiAocWdl
dGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9QUk9DRVNTX09VVFBVVCIpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHFwdXRlbnYoIlFUX1dFQktJVF9TVVBQUkVTU19XRUJfUFJPQ0VTU19PVVRQ
VVQiLCAiMSIpOworICAgIH0KKworICAgIFFHdWlBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7
CisgICAgYWRkUXRXZWJQcm9jZXNzVG9QYXRoKCk7CisKKyAgICByZXR1cm4gVGVzdFdlYktpdEFQ
STo6VGVzdHNDb250cm9sbGVyOjpzaGFyZWQoKS5ydW4oYXJnYywgYXJndikgPyBFWElUX1NVQ0NF
U1MgOiBFWElUX0ZBSUxVUkU7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9Ub29scy5wcm8gYi9Ub29s
cy9Ub29scy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyYTQ1ZAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rvb2xzLnBybwpAQCAtMCwwICsxLDUxIEBACisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgUm9vdCBwcm9qZWN0IGZpbGUgZm9yIHRvb2xzCisjCisjIFNlZSAnVG9vbHMv
cW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1RFTVBMQVRFID0gc3ViZGlycworQ09ORklHICs9IG9yZGVyZWQKKworYnVpbGQ/
KHdlYmtpdDEpIHsKKyAgICBidWlsZD8odGVzdGJyb3dzZXIpOiBTVUJESVJTICs9IFF0VGVzdEJy
b3dzZXIvUXRUZXN0QnJvd3Nlci5wcm8KKyAgICBidWlsZD8oZHJ0KTogU1VCRElSUyArPSBEdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KK30KKworYnVpbGQ/KHdlYmtpdDIpIHsK
KyAgICAjIFdUUidzIEluamVjdGVkQnVuZGxlIGRlcGVuZHMgY3VycmVudGx5IG9uIFdLMSdzIER1
bXBSZW5kZXJUcmVlU3VwcG9ydAorICAgIGJ1aWxkPyh3ZWJraXQxKTpidWlsZD8od3RyKTpoYXZl
PyhRVFFVSUNLKTogU1VCRElSUyArPSBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIu
cHJvCisKKyAgICBidWlsZD8obWluaWJyb3dzZXIpIHsKKyAgICAgICAgaGF2ZT8oUVRRVUlDSyk6
IFNVQkRJUlMgKz0gTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisgICAgICAgIFNVQkRJ
UlMgKz0gTWluaUJyb3dzZXIvcXQvcmF3L01pbmlCcm93c2VyUmF3LnBybworICAgIH0KKworICAg
ICFwcm9kdWN0aW9uX2J1aWxkIHsKKyAgICAgICAgIyBPbmx5IHRlc3RlZCBvbiBMaW51eCBzbyBm
YXIuCisgICAgICAgIGxpbnV4KiB7CisgICAgICAgICAgICBTVUJESVJTICs9IFRlc3RXZWJLaXRB
UEkKKyAgICAgICAgfQorICAgIH0KK30KKworYnVpbGQ/KGltYWdlZGlmZik6IFNVQkRJUlMgKz0g
SW1hZ2VEaWZmL0ltYWdlRGlmZi5wcm8KKworYnVpbGQ/KHRlc3RfbnBhcGkpOiBTVUJESVJTICs9
IER1bXBSZW5kZXJUcmVlL3F0L1Rlc3ROZXRzY2FwZVBsdWdpbi9UZXN0TmV0c2NhcGVQbHVnaW4u
cHJvCisKK09USEVSX0ZJTEVTID0gXAorICAgIFNjcmlwdHMvKiBcCisgICAgJCRmaWxlcyhTY3Jp
cHRzL3dlYmtpdHB5LyoucHksIHRydWUpIFwKKyAgICAkJGZpbGVzKFNjcmlwdHMvd2Via2l0cGVy
bC8qLnBbbHxtXSwgdHJ1ZSkgXAorICAgIHFtYWtlL1JFQURNRSBcCisgICAgcW1ha2UvZHVtcC1m
ZWF0dXJlcy5wbCBcCisgICAgcW1ha2UvY29uZmlnLnRlc3RzL1JFQURNRSBcCisgICAgcW1ha2Uv
Y29uZmlnLnRlc3RzL2ZvbnRjb25maWcvKiBcCisgICAgcW1ha2UvY29uZmlnLnRlc3RzL2djY2Rl
cGVuZHMvKiBcCisgICAgcW1ha2UvY29uZmlnLnRlc3RzL2xpYmV4ZWNkaXIvKiBcCisgICAgcW1h
a2UvbWtzcGVjcy9tb2R1bGVzLyogXAorICAgIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvKi5wcmYg
XAorICAgIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvKi5wcmkgXAorICAgIHFtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvbWFjLyoucHJmIFwKKyAgICBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3VuaXgvKi5w
cmYgXAorICAgIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2luMzIvKi5wcmYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGVyaXZlZFNvdXJjZXMucHJpIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9EZXJpdmVkU291cmNlcy5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZDFlOTJhZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMCwwICsxLDEyIEBACisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
RGVyaXZlZCBzb3VyY2VzIGZvciBXZWJLaXRUZXN0UnVubmVyCisjCisjIFNlZSAnVG9vbHMvcW1h
a2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK1RFTVBMQVRFID0gZGVyaXZlZAorCisjIE1ha2Ugc3VyZSBmb3J3YXJkZWQgaGVhZGVy
cyBuZWVkZWQgYnkgdGhpcyBwcm9qZWN0IGFyZSBwcmVzZW50Citmd2hlYWRlcl9nZW5lcmF0b3Iu
Y29tbWFuZHMgPSBwZXJsICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdDIvU2NyaXB0
cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJCR7Uk9PVF9XRUJLSVRfRElSfS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyICQke1JPT1RfQlVJTERfRElSfS9Tb3VyY2UvaW5jbHVkZSBxdAor
ZndoZWFkZXJfZ2VuZXJhdG9yLmRlcGVuZHMgID0gJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2Uv
V2ViS2l0Mi9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbAorR0VORVJBVE9S
UyArPSBmd2hlYWRlcl9nZW5lcmF0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKaW5kZXggNWQzYTA0OC4uZTk2ZDQyZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTI5LDcgKzI5LDEwIEBACiAKICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KIAotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRl
IDxRRXZlbnQ+CisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CisjZWxpZiBQTEFURk9STShHVEspCiAj
aW5jbHVkZSA8Z2RrL2dkay5oPgogI2VsaWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPFdlYktp
dDIvRVdlYktpdDIuaD4KQEAgLTgzLDExICs4NiwxNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBj
dXJyZW50RXZlbnRUaW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CiAgICAgdm9pZCB1cGRhdGVDbGlj
a0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pOwogCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQogICAgIHZvaWQgcmVwbGF5U2F2ZWRFdmVudHMoKTsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
dm9pZCBzZW5kVG91Y2hFdmVudChRRXZlbnQ6OlR5cGUpOworI2VuZGlmCisgICAgdm9pZCBzZW5k
T3JRdWV1ZUV2ZW50KFFFdmVudCopOworI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgc2Vu
ZE9yUXVldWVFdmVudChHZGtFdmVudCopOwogICAgIEdka0V2ZW50KiBjcmVhdGVNb3VzZUJ1dHRv
bkV2ZW50KEdka0V2ZW50VHlwZSwgdW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsK
ICNlbGlmIFBMQVRGT1JNKEVGTCkKQEAgLTExMCw2ICsxMTgsMTUgQEAgcHJpdmF0ZToKICNlbGlm
IFBMQVRGT1JNKEdUSykKICAgICBEZXF1ZTxXVFJFdmVudFF1ZXVlSXRlbT4gbV9ldmVudFF1ZXVl
OwogICAgIHVuc2lnbmVkIG1fbW91c2VCdXR0b25DdXJyZW50bHlEb3duOworI2VsaWYgUExBVEZP
Uk0oUVQpCisgICAgUXQ6Ok1vdXNlQnV0dG9ucyBtX21vdXNlQnV0dG9uczsKKworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+IG1fdG91
Y2hQb2ludHM7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1fdG91Y2hNb2RpZmllcnM7Cisg
ICAgUVBvaW50IG1fdG91Y2hQb2ludFJhZGl1czsKKyAgICBib29sIG1fdG91Y2hBY3RpdmU7Cisj
ZW5kaWYKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBEZXF1ZTxXVFJFdmVudD4gbV9ldmVudFF1
ZXVlOwogICAgIFdLRXZlbnRNb3VzZUJ1dHRvbiBtX21vdXNlQnV0dG9uOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9EZXJpdmVkU291cmNlcy5wcmkg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Rlcml2ZWRTb3VyY2VzLnBy
aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGU0ZDM0Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9EZXJpdmVkU291
cmNlcy5wcmkKQEAgLTAsMCArMSwzOSBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlcml2ZWQgc291cmNl
cyBmb3IgV2ViS2l0VGVzdFJ1bm5lcidzIEluamVjdGVkQnVuZGxlCisjCisjIFNlZSAnVG9vbHMv
cW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyMgVGhpcyBmaWxlIGlzIGJvdGggYSB0b3AgbGV2ZWwgdGFyZ2V0LCBhbmQgaW5j
bHVkZWQgZnJvbSBUYXJnZXQucHJpLAorIyBzbyB0aGF0IHRoZSByZXN1bHRpbmcgZ2VuZXJhdGVk
IHNvdXJjZXMgY2FuIGJlIGFkZGVkIHRvIFNPVVJDRVMuCisjIFdlIG9ubHkgc2V0IHRoZSB0ZW1w
bGF0ZSBpZiB3ZSdyZSBhIHRvcCBsZXZlbCB0YXJnZXQsIHNvIHRoYXQgd2UKKyMgZG9uJ3Qgb3Zl
cnJpZGUgd2hhdCBUYXJnZXQucHJpIGhhcyBhbHJlYWR5IHNldC4KK3Nhbml0aXplZEZpbGUgPSAk
JHRvU2FuaXRpemVkUGF0aCgkJF9GSUxFXykKK2VxdWFscyhzYW5pdGl6ZWRGaWxlLCAkJHRvU2Fu
aXRpemVkUGF0aCgkJF9QUk9fRklMRV8pKTpURU1QTEFURSA9IGRlcml2ZWQKKworSURMX0JJTkRJ
TkdTICs9IFwKKyAgICBCaW5kaW5ncy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5pZGwgXAorICAg
IEJpbmRpbmdzL0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyLmlkbCBcCisgICAgQmluZGluZ3MvQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZS5pZGwgXAorICAgIEJpbmRpbmdzL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaWRsIFwKKyAgICBCaW5kaW5ncy9FdmVudFNlbmRpbmdDb250cm9sbGVyLmlk
bCBcCisgICAgQmluZGluZ3MvR0NDb250cm9sbGVyLmlkbCBcCisgICAgQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwgXAorICAgIEJpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsIFwKKworcXRQ
cmVwYXJlVG9vbChRTUFLRV9NT0MsIG1vYykKKworIyBHRU5FUkFUT1IgMTogSURMIGNvbXBpbGVy
CitpZGwub3V0cHV0ID0gSlMke1FNQUtFX0ZJTEVfQkFTRX0uY3BwCitpZGwuaW5wdXQgPSBJRExf
QklORElOR1MKK2lkbC5zY3JpcHQgPSAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKK2lkbC5jb21tYW5kcyA9IHBl
cmwgLUkkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMg
LUkkJFBXRC9CaW5kaW5ncyAkJGlkbC5zY3JpcHQgLS1kZWZpbmVzIFwiJCRqYXZhc2NyaXB0RmVh
dHVyZURlZmluZXMoKVwiIC0tZ2VuZXJhdG9yIFRlc3RSdW5uZXIgLS1pbmNsdWRlICQkUFdEL0Jp
bmRpbmdzIC0tb3V0cHV0RGlyICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSAtLXByZXByb2Nl
c3NvciBcIiQke1FNQUtFX01PQ30gLUVcIiAke1FNQUtFX0ZJTEVfTkFNRX0KK2lkbC5kZXBlbmRz
ID0gJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3IucG0gXAorICAgICAgICAgICAgICAkJFBXRC9CaW5kaW5ncy9Db2RlR2VuZXJh
dG9yVGVzdFJ1bm5lci5wbSBcCisgICAgICAgICAgICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gXAorICAgICAgICAgICAg
ICAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSW5G
aWxlc1BhcnNlci5wbSBcCisgICAgICAgICAgICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAorR0VORVJBVE9S
UyArPSBpZGwKKworSU5DTFVERVBBVEggKz0gJCR7Uk9PVF9CVUlMRF9ESVJ9L1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvJCR7R0VORVJBVEVEX1NPVVJDRVNfREVTVERJUn0K
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5wcm8gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODg0
MmRkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5wcm8KQEAgLTAsMCArMSwxNiBAQAorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IE1haW4gcHJvamVjdCBmaWxlIGZvciBXZWJLaXRUZXN0UnVubmVyJ3MgSW5qZWN0ZWRCdW5kbGUK
KyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVp
bGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBzdWJkaXJzCitDT05GSUcgKz0g
b3JkZXJlZAorCitkZXJpdmVkX3NvdXJjZXMuZmlsZSA9IERlcml2ZWRTb3VyY2VzLnByaQordGFy
Z2V0LmZpbGUgPSBUYXJnZXQucHJpCisKK1NVQkRJUlMgPSBkZXJpdmVkX3NvdXJjZXMgdGFyZ2V0
CisKK2FkZFN0cmljdFN1YmRpck9yZGVyQmV0d2VlbihkZXJpdmVkX3NvdXJjZXMsIHRhcmdldCkK
KwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGQ2NzRiMzAuLmQ3YmFkNzcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAKQEAgLTQ4LDEwICs0OCwxNCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBV
U0UoQ0YpCisjaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oUVQpCiAjaW5jbHVkZSAiV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIkR1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogbmFtZXNwYWNlIFdUUiB7CkBAIC00MjQsNyArNDI4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpyZXNldEFmdGVyVGVzdCgpCiB7CiAgICAgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSA9
IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShtX3BhZ2UpOwogICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KGZyYW1lKTsKKyNp
ZiBQTEFURk9STShRVCkKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRJbnRlcm5h
bHNPYmplY3QoY29udGV4dCk7CisjZWxzZQogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6cmVzZXRJ
bnRlcm5hbHNPYmplY3QoY29udGV4dCk7CisjZW5kaWYKICAgICBhc3NpZ25lZFVybHNDYWNoZS5j
bGVhcigpOwogfQogCkBAIC04MTksMTEgKzgyNywxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZHVtcEFsbEZyYW1lc1RleHQoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKIHsKLSNpZiBVU0UoQ0YpCisj
aWYgVVNFKENGKSAmJiAhUExBVEZPUk0oUVQpCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3
a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdL
RGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkp
OwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBhZG9wdENGKGNyZWF0ZVhN
TFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpKTsKICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChjZlN0cmluZy5nZXQoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmcmFt
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0cmluZ0J1aWxkZXIpOwogI2VuZGlmCiB9CiAKQEAgLTk1
Myw3ICs5NjQsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZENsZWFyV2luZG93Rm9y
RnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGUKICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkudGV4dElucHV0Q29udHJvbGxlcigpLT5tYWtlV2luZG93T2JqZWN0KGNvbnRl
eHQsIHdpbmRvdywgJmV4Y2VwdGlvbik7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKCktPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgd2luZG93
LCAmZXhjZXB0aW9uKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjppbmplY3RJbnRlcm5hbHNPYmplY3QoY29udGV4dCk7CisjZWxzZQogICAgIFdlYkNv
cmVUZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOworI2VuZGlmCiB9
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1RhcmdldC5wcmkgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1RhcmdldC5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYjAwOTExOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGFyZ2V0LnByaQpAQCAtMCwwICsxLDcyIEBACisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgUHJvamVjdCBmaWxlIGZvciBXZWJLaXRUZXN0UnVubmVyJ3MgSW5qZWN0ZWRCdW5kbGUKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBsaWIKK1RBUkdFVCA9IFdUUkluamVj
dGVkQnVuZGxlCisKK1NPVVJDRVMgKz0gXAorICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cCBcCisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIuY3BwIFwKKyAgICBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlLmNwcCBcCisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAgXAor
ICAgIEluamVjdGVkQnVuZGxlLmNwcCBcCisgICAgSW5qZWN0ZWRCdW5kbGUuaCBcCisgICAgSW5q
ZWN0ZWRCdW5kbGVNYWluLmNwcCBcCisgICAgSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBcCisgICAg
SW5qZWN0ZWRCdW5kbGVQYWdlLmggXAorICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIFwK
KyAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyLmggXAorICAgIEdDQ29udHJvbGxlci5jcHAgXAor
ICAgIEdDQ29udHJvbGxlci5oIFwKKyAgICBUZXN0UnVubmVyLmNwcCBcCisgICAgVGVzdFJ1bm5l
ci5oIFwKKyAgICBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBcCisgICAgVGV4dElucHV0Q29udHJv
bGxlci5oIFwKKyAgICBCaW5kaW5ncy9KU1dyYXBwZXIuY3BwIFwKKyAgICBxdC9BY3RpdmF0ZUZv
bnRzUXQuY3BwIFwKKyAgICBxdC9JbmplY3RlZEJ1bmRsZVF0LmNwcCBcCisgICAgcXQvVGVzdFJ1
bm5lclF0LmNwcAorCisjIEFkZHMgdGhlIGdlbmVyYXRlZCBzb3VyY2VzIHRvIFNPVVJDRVMKK2lu
Y2x1ZGUoRGVyaXZlZFNvdXJjZXMucHJpKQorCitIRUFERVJTICs9IFwKKyAgICBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oIFwKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlci5oIFwKKyAgICBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlLmggXAorICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaCBcCisgICAgQWN0aXZhdGVGb250cy5oIFwKKyAgICBFdmVudFNlbmRpbmdDb250cm9sbGVy
LmggXAorICAgIEdDQ29udHJvbGxlci5oIFwKKyAgICBJbmplY3RlZEJ1bmRsZS5oIFwKKyAgICBJ
bmplY3RlZEJ1bmRsZVBhZ2UuaCBcCisgICAgVGVzdFJ1bm5lci5oIFwKKyAgICBUZXh0SW5wdXRD
b250cm9sbGVyLmggXAorCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2xpYgorCitRVCAr
PSB3aWRnZXRzIHdlYmtpdAorCitXRUJLSVQgKz0gd3RmIGphdmFzY3JpcHRjb3JlIHdlYmNvcmUK
KworQ09ORklHICs9IHBsdWdpbiBycGF0aAorCitoYXZlPyhGT05UQ09ORklHKTogUEtHQ09ORklH
ICs9IGZvbnRjb25maWcKKworSU5DTFVERVBBVEggKz0gXAorICAgICQkUFdEIFwKKyAgICAkJFBX
RC8uLiBcCisgICAgJCRQV0QvQmluZGluZ3MgXAorICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQgXAorICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNl
L1dlYkNvcmUvdGVzdGluZy9qcyBcCisgICAgJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0CisKK1BSRUZJWF9IRUFERVIgPSAkJFBXRC8uLi9XZWJLaXRU
ZXN0UnVubmVyUHJlZml4LmgKKyotZysrKjpRTUFLRV9DWFhGTEFHUyArPSAiLWluY2x1ZGUgJCRQ
UkVGSVhfSEVBREVSIgorCitsaW51eC0qIHsKKyAgICBRTUFLRV9MRkxBR1MgKz0gLVdsLC0tbm8t
dW5kZWZpbmVkCit9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IDM4Y2VmNmIuLjYyN2Q2ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zOSw2ICsz
OSw5IEBACiB0eXBlZGVmIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gUGxhdGZvcm1UaW1l
clJlZjsKICNlbGlmIFBMQVRGT1JNKFdJTikKIHR5cGVkZWYgVUlOVF9QVFIgUGxhdGZvcm1UaW1l
clJlZjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFUaW1lcj4KK3R5cGVkZWYgUVRp
bWVyIFBsYXRmb3JtVGltZXJSZWY7CiAjZWxpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHVuc2ln
bmVkIGludCBQbGF0Zm9ybVRpbWVyUmVmOwogI2VsaWYgUExBVEZPUk0oRUZMKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9BY3RpdmF0ZUZvbnRz
UXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9BY3RpdmF0
ZUZvbnRzUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjRhYTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3F0L0FjdGl2YXRlRm9udHNRdC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWN0aXZhdGVGb250
cy5oIgorI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCisjaW5jbHVkZSAiUXRU
ZXN0U3VwcG9ydC5oIgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisKK25hbWVzcGFjZSBX
VFIgeworCit2b2lkIGFjdGl2YXRlRm9udHMoKQoreworICAgIFdlYktpdDo6UXRUZXN0U3VwcG9y
dDo6aW5pdGlhbGl6ZVRlc3RGb250cygpOworICAgIFFDb3JlQXBwbGljYXRpb246OnNldEF0dHJp
YnV0ZShRdDo6QUFfVXNlOTZEcGksIHRydWUpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpkaXNhYmxlRGVmYXVsdFR5cGVzZXR0aW5nRmVhdHVyZXMoKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRs
ZVF0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvSW5qZWN0
ZWRCdW5kbGVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI3NzE4
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvcXQvSW5qZWN0ZWRCdW5kbGVRdC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5o
IgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRQnl0ZUFycmF5PgorI2luY2x1
ZGUgPFFTdHlsZT4KKyNpbmNsdWRlIDxRU3R5bGVGYWN0b3J5PgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFt
ZXNwYWNlIFdUUiB7CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZShX
S1R5cGVSZWYpCit7CisgICAgUVN0eWxlKiBzdHlsZUZvclRlc3RzID0gUVN0eWxlRmFjdG9yeTo6
Y3JlYXRlKFFMYXRpbjFTdHJpbmcoIndpbmRvd3MiKSk7CisgICAgUUFwcGxpY2F0aW9uOjpzZXRT
dHlsZShzdHlsZUZvclRlc3RzKTsKKyAgICAvLyBGb3JjZSBRdCB0byB1c2UgdGhlIHN0eWxlJ3Mg
c3RhbmRhcmQgcGFsZXR0ZSwgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkZWZhdWx0IHBhbGV0dGUuIFRo
aXMgaXMgbmVlZGVkCisgICAgLy8gYmVjYXVzZSB3ZSBhcmUgc2V0dGluZyB0aGUgc3R5bGUgYWZ0
ZXIgUUFwcGxpY2F0aW9uIGlzIGluc3RhbnRpYXRlZC4KKyAgICBRQXBwbGljYXRpb246OnNldFBh
bGV0dGUoc3R5bGVGb3JUZXN0cy0+c3RhbmRhcmRQYWxldHRlKCkpOworCisgICAgaWYgKHFnZXRl
bnYoIlFUX1dFQktJVDJfREVCVUciKSA9PSAiMSIpCisgICAgICAgIHJldHVybjsKKworICAgIFdU
Rkluc3RhbGxSZXBvcnRCYWNrdHJhY2VPbkNyYXNoSG9vaygpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
cXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvcXQvVGVzdFJ1bm5lclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NWVkNDZkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIu
aCIKKworI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZS5oIgorI2luY2x1ZGUgIlF0VGVzdFN1cHBvcnQuaCIKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0
aW9uPgorI2luY2x1ZGUgPFFEaXI+CisjaW5jbHVkZSA8UUZvbnREYXRhYmFzZT4KKyNpbmNsdWRl
IDxRT2JqZWN0PgorI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisjaW5jbHVkZSA8cXdlYnNl
dHRpbmdzLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitjbGFzcyBXYXRjaGRvZ1RpbWVySGVscGVy
IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAgICBzdGF0aWMg
V2F0Y2hkb2dUaW1lckhlbHBlciogaW5zdGFuY2UoKQorICAgIHsKKyAgICAgICAgc3RhdGljIFdh
dGNoZG9nVGltZXJIZWxwZXIqIHRoZUluc3RhbmNlID0gbmV3IFdhdGNoZG9nVGltZXJIZWxwZXI7
CisgICAgICAgIHJldHVybiB0aGVJbnN0YW5jZTsKKyAgICB9CisKK3B1YmxpYyBRX1NMT1RTOgor
ICAgIHZvaWQgdGltZXJGaXJlZCgpCisgICAgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkudGVzdFJ1bm5lcigpLT53YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIFdhdGNoZG9nVGltZXJIZWxwZXIoKSB7fQorfTsKKwordm9pZCBU
ZXN0UnVubmVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIFdlYktpdDo6UXRUZXN0U3Vw
cG9ydDo6Y2xlYXJNZW1vcnlDYWNoZXMoKTsKKyAgICBhY3RpdmF0ZUZvbnRzKCk7CisKKyAgICBR
T2JqZWN0Ojpjb25uZWN0KCZtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLCBTSUdOQUwodGltZW91
dCgpKSwgV2F0Y2hkb2dUaW1lckhlbHBlcjo6aW5zdGFuY2UoKSwgU0xPVCh0aW1lckZpcmVkKCkp
KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXIoKQoreworICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuc3RvcCgpOworfQorCit2b2lk
IFRlc3RSdW5uZXI6OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkK
K3sKKyAgICBpbnQgdGltZXJJbnRlcnZhbDsKKyAgICBpZiAocWdldGVudigiUVRfV0VCS0lUMl9E
RUJVRyIpID09ICIxIikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fd2FpdFRvRHVtcFdh
dGNoZG9nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3RpbWVv
dXQgPiAwKQorICAgICAgICB0aW1lckludGVydmFsID0gbV90aW1lb3V0OworICAgIGVsc2UKKyAg
ICAgICAgdGltZXJJbnRlcnZhbCA9IHdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgKiAx
MDAwOworCisgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdGFydCh0aW1lckludGVydmFs
KTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBhdGhUb0xvY2Fs
UmVzb3VyY2UoSlNTdHJpbmdSZWYgdXJsKQoreworICAgIFFTdHJpbmcgbG9jYWxUbXBVcmwoUVN0
cmluZ0xpdGVyYWwoImZpbGU6Ly8vdG1wL0xheW91dFRlc3RzIikpOworICAgIFFTdHJpbmcgZ2l2
ZW5VcmwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBRQ2hhcio+KEpTU3RyaW5nR2V0Q2hhcmFjdGVy
c1B0cih1cmwpKSwgSlNTdHJpbmdHZXRMZW5ndGgodXJsKSk7CisKKyAgICAvLyBUcmFuc2xhdGUg
YSByZXF1ZXN0IGZvciAvdG1wL0xheW91dFRlc3RzIHRvIHRoZSByZXBvc2l0b3J5IExheW91dFRl
c3RzIGRpcmVjdG9yeS4KKyAgICAvLyBEbyBub3QgcmVseSBvbiBhIHN5bWxpbmsgdG8gYmUgY3Jl
YXRlZCB2aWEgdGhlIHRlc3QgcnVubmVyLCB3aGljaCB3aWxsIG5vdCB3b3JrIG9uIFdpbmRvd3Mu
CisgICAgaWYgKGdpdmVuVXJsLnN0YXJ0c1dpdGgobG9jYWxUbXBVcmwpKSB7CisgICAgICAgIC8v
IER1bXBSZW5kZXJUcmVlIGxpdmVzIGluIFdlYktpdC9XZWJLaXRCdWlsZC88YnVpbGRfbW9kZT4v
YmluLgorICAgICAgICAvLyBUcmFuc2xhdGUgZnJvbSBXZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFz
ZS9iaW4gPT4gV2ViS2l0L0xheW91dFRlc3RzLgorICAgICAgICBRRmlsZUluZm8gbGF5b3V0VGVz
dHNSb290KFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpICsgUVN0cmluZ0xp
dGVyYWwoIi8uLi8uLi8uLi9MYXlvdXRUZXN0cy8iKSk7CisgICAgICAgIGlmIChsYXlvdXRUZXN0
c1Jvb3QuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IFFTdHJpbmdMaXRl
cmFsKCJmaWxlOi8vIikgKyBsYXlvdXRUZXN0c1Jvb3QuYWJzb2x1dGVQYXRoKCkgKyBnaXZlblVy
bC5taWQobG9jYWxUbXBVcmwubGVuZ3RoKCkpOworICAgICAgICAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBKU0NoYXIqPihwYXRo
LmNvbnN0RGF0YSgpKSwgcGF0aC5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHVybDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBsYXRm
b3JtTmFtZSgpCit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3JtTmFtZShB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInF0IikpOworICAgIHJldHVybiBw
bGF0Zm9ybU5hbWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCisjaW5jbHVkZSAiVGVzdFJ1
bm5lclF0Lm1vYyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1X
ZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4
IDIzZjQ4YTcuLmUyY2FiZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaApAQCAtMjgsNyArMjgsMTUgQEAKIAogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIu
aD4KIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKEJV
SUxESU5HX1FUX18pCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFRdWlja1ZpZXc7CitjbGFz
cyBRRXZlbnRMb29wOworUVRfRU5EX05BTUVTUEFDRQorY2xhc3MgUVF1aWNrV2ViVmlldzsKK3R5
cGVkZWYgUVF1aWNrV2ViVmlldyogUGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIFFRdWlja1ZpZXcq
IFBsYXRmb3JtV2luZG93OworI2VsaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwog
I2lmZGVmIF9fT0JKQ19fCiBAY2xhc3MgV0tWaWV3OwogQGNsYXNzIFdlYktpdFRlc3RSdW5uZXJX
aW5kb3c7CkBAIC02OSw4ICs3NywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNpemVUbyh1bnNp
Z25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KTsKICAgICB2b2lkIGZvY3VzKCk7CiAKKyNpZiBQ
TEFURk9STShRVCkKKyAgICBib29sIHNlbmRFdmVudChRRXZlbnQqKTsKKyAgICB2b2lkIHBvc3RF
dmVudChRRXZlbnQqKTsKKyAgICB2b2lkIHNldE1vZGFsRXZlbnRMb29wKFFFdmVudExvb3AqIGV2
ZW50TG9vcCkgeyBtX21vZGFsRXZlbnRMb29wID0gZXZlbnRMb29wOyB9CisgICAgLy8gV2luZG93
IHNuYXBzaG90IGNhbiBiZSBkaXNhYmxlZCBvbiBRdCB3aXRoIFFUX1dFQktJVF9ESVNBQkxFX1VJ
UFJPQ0VTU19EVU1QUElYRUxTPTEgZW52aXJvbm1lbnQgdmFyaWFibGUgKG5lY2Vzc2FyeSBmb3Ig
eHZmYikKKyAgICBzdGF0aWMgYm9vbCB3aW5kb3dTbmFwc2hvdEVuYWJsZWQoKTsKKyNlbHNlCiAg
ICAgLy8gV2luZG93IHNuYXBzaG90IGlzIGFsd2F5cyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gYWxs
IG90aGVyIHBsYXRmb3JtLgogICAgIHN0YXRpYyBib29sIHdpbmRvd1NuYXBzaG90RW5hYmxlZCgp
IHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgogCiAgICAgV0tSZWN0IHdpbmRvd0ZyYW1lKCk7CiAg
ICAgdm9pZCBzZXRXaW5kb3dGcmFtZShXS1JlY3QpOwpAQCAtODMsNyArOTksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRXaW5kb3dJc0tleShib29sIGlzS2V5KSB7IG1fd2luZG93SXNLZXkgPSBp
c0tleTsgfQogICAgIGJvb2wgd2luZG93SXNLZXkoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd0lz
S2V5OyB9CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oUVQpCiAgICAgYm9vbCB2aWV3U3Vw
cG9ydHNPcHRpb25zKFdLRGljdGlvbmFyeVJlZikgY29uc3Q7CiAjZWxzZQogICAgIGJvb2wgdmll
d1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
QEAgLTk3LDkgKzExMywxMiBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtV2luZG93IG1fd2luZG93
OwogICAgIGJvb2wgbV93aW5kb3dJc0tleTsKICAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlS
ZWY+IG1fb3B0aW9uczsKLSNpZiBQTEFURk9STShFRkwpCisjaWYgUExBVEZPUk0oRUZMKSB8fCBQ
TEFURk9STShRVCkKICAgICBib29sIG1fdXNpbmdGaXhlZExheW91dDsKICNlbmRpZgorI2lmIFBM
QVRGT1JNKFFUKQorICAgIFFFdmVudExvb3AqIG1fbW9kYWxFdmVudExvb3A7CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UYXJnZXQucHJpIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ODAwYWIKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKQEAgLTAsMCArMSw0OSBAQAorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIFByb2plY3QgZmlsZSBmb3IgV2ViS2l0VGVzdFJ1bm5lciBiaW5hcnkgKFdUUikK
KyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVp
bGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IFdlYktp
dFRlc3RSdW5uZXIKKworSEVBREVSUyArPSBcCisgICAgRXZlbnRTZW5kZXJQcm94eS5oIFwKKyAg
ICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oIFwKKyAgICBQbGF0Zm9ybVdlYlZpZXcuaCBcCisg
ICAgU3RyaW5nRnVuY3Rpb25zLmggXAorICAgIFRlc3RDb250cm9sbGVyLmggXAorICAgIFRlc3RJ
bnZvY2F0aW9uLmggXAorICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmggXAorICAgIFdvcmtR
dWV1ZU1hbmFnZXIuaAorCitTT1VSQ0VTICs9IFwKKyAgICBxdC9tYWluLmNwcCBcCisgICAgcXQv
RXZlbnRTZW5kZXJQcm94eVF0LmNwcCBcCisgICAgcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIFwK
KyAgICBxdC9UZXN0Q29udHJvbGxlclF0LmNwcCBcCisgICAgcXQvVGVzdEludm9jYXRpb25RdC5j
cHAgXAorICAgIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmNwcCBcCisgICAgVGVzdENvbnRyb2xs
ZXIuY3BwIFwKKyAgICBUZXN0SW52b2NhdGlvbi5jcHAgXAorICAgIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcCBcCisgICAgV29ya1F1ZXVlTWFuYWdlci5jcHAKKworREVTVERJUiA9ICQke1JP
T1RfQlVJTERfRElSfS9iaW4KKworUVQgPSBjb3JlIGNvcmUtcHJpdmF0ZSBndWkgZ3VpLXByaXZh
dGUgd2lkZ2V0cyBuZXR3b3JrIHRlc3RsaWIgcXVpY2sgcXVpY2stcHJpdmF0ZSB3ZWJraXR3aWRn
ZXRzIHFtbC1wcml2YXRlIHY4LXByaXZhdGUKKworV0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0Y29y
ZSB3ZWJraXQyCisKK0RFRklORVMgKz0gVVNFX1NZU1RFTV9NQUxMT0M9MQorCitJTkNMVURFUEFU
SCArPSBcCisgICAgJCRQV0QgXAorICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQgXAorICAgICQke1JPT1RfV0VCS0lUX0RJUn0vVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQKKworUFJFRklYX0hFQURFUiA9IFdlYktpdFRlc3RSdW5uZXJQcmVmaXguaAorKi1n
KysqOlFNQUtFX0NYWEZMQUdTICs9ICItaW5jbHVkZSAkJFBSRUZJWF9IRUFERVIiCisqLWNsYW5n
KjpRTUFLRV9DWFhGTEFHUyArPSAiLWluY2x1ZGUgJCRQUkVGSVhfSEVBREVSIgorCitSRVNPVVJD
RVMgPSBxdC9XZWJLaXRUZXN0UnVubmVyLnFyYwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCA2NGZmYTM4Li5kNjkxYWNkIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNTcwLDYgKzU3MCw3IEBAIGJvb2wgVGVzdENv
bnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIFdLUHJlZmVyZW5j
ZXNTZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7
CiAgICAgV0tQcmVmZXJlbmNlc1NldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChwcmVmZXJlbmNlcywg
dHJ1ZSk7CiAKKyNpZiAhUExBVEZPUk0oUVQpCiAgICAgc3RhdGljIFdLU3RyaW5nUmVmIHN0YW5k
YXJkRm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lcyIpOwog
ICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBjdXJzaXZlRm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJBcHBsZSBDaGFuY2VyeSIpOwogICAgIHN0YXRpYyBXS1N0cmluZ1Jl
ZiBmYW50YXN5Rm9udEZhbWlseSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQYXB5
cnVzIik7CkBAIC01ODUsNiArNTg2LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0
ZVRvQ29uc2lzdGVudFZhbHVlcygpCiAgICAgV0tQcmVmZXJlbmNlc1NldFBpY3RvZ3JhcGhGb250
RmFtaWx5KHByZWZlcmVuY2VzLCBwaWN0b2dyYXBoRm9udEZhbWlseSk7CiAgICAgV0tQcmVmZXJl
bmNlc1NldFNhbnNTZXJpZkZvbnRGYW1pbHkocHJlZmVyZW5jZXMsIHNhbnNTZXJpZkZvbnRGYW1p
bHkpOwogICAgIFdLUHJlZmVyZW5jZXNTZXRTZXJpZkZvbnRGYW1pbHkocHJlZmVyZW5jZXMsIHNl
cmlmRm9udEZhbWlseSk7CisjZW5kaWYKICAgICBXS1ByZWZlcmVuY2VzU2V0U2NyZWVuRm9udFN1
YnN0aXR1dGlvbkVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwogICAgIFdLUHJlZmVyZW5jZXNT
ZXRJbnNwZWN0b3JVc2VzV2ViS2l0VXNlckludGVyZmFjZShwcmVmZXJlbmNlcywgdHJ1ZSk7CiAg
ICAgV0tQcmVmZXJlbmNlc1NldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHByZWZl
cmVuY2VzLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5k
ZXggMmU4YjMxNy4uNzAxMGVhMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaApAQCAtMjE5LDYgKzIxOSwxMSBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPEV2ZW50U2Vu
ZGVyUHJveHk+IG1fZXZlbnRTZW5kZXJQcm94eTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIGNs
YXNzIFJ1bkxvb3A7CisgICAgUnVuTG9vcCogbV9ydW5Mb29wOworI2VuZGlmCisKICAgICBXb3Jr
UXVldWVNYW5hZ2VyIG1fd29ya1F1ZXVlTWFuYWdlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggYjYxMjFkMy4uNzIyOWE4NCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE1MCwxOSArMTUwLDE5IEBA
IHN0YXRpYyBib29sIHNob3VsZE9wZW5XZWJJbnNwZWN0b3IoY29uc3QgY2hhciogcGF0aE9yVVJM
KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgYm9vbCBzaG91bGRVc2VUaHJl
YWRlZFNjcm9sbGluZyhjb25zdCBjaGFyKiBwYXRoT3JVUkwpCitzdGF0aWMgYm9vbCBzaG91bGRV
c2VUaWxlZERyYXdpbmcoY29uc3QgY2hhciogcGF0aE9yVVJMKQogewogICAgIHJldHVybiBzdHJz
dHIocGF0aE9yVVJMLCAidGlsZWQtZHJhd2luZy8iKSB8fCBzdHJzdHIocGF0aE9yVVJMLCAidGls
ZWQtZHJhd2luZ1xcIik7CiB9CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgdXBkYXRlVGhyZWFkZWRT
Y3JvbGxpbmdGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCitzdGF0aWMgdm9p
ZCB1cGRhdGVUaWxlZERyYXdpbmdGb3JDdXJyZW50VGVzdChjb25zdCBjaGFyKiBwYXRoT3JVUkwp
CiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25h
cnlSZWY+IHZpZXdPcHRpb25zID0gYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkp
OwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VUaHJlYWRlZFNjcm9sbGluZ0tleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRocmVhZGVkU2Nyb2xsaW5n
IikpOwotICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gdXNlVGhyZWFkZWRTY3JvbGxpbmdW
YWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZFVzZVRocmVhZGVkU2Nyb2xsaW5n
KHBhdGhPclVSTCkpKTsKLSAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKHZpZXdPcHRpb25zLmdldCgp
LCB1c2VUaHJlYWRlZFNjcm9sbGluZ0tleS5nZXQoKSwgdXNlVGhyZWFkZWRTY3JvbGxpbmdWYWx1
ZS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVRpbGVkRHJhd2luZ0tl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbGVkRHJhd2luZyIp
KTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IHVzZVRpbGVkRHJhd2luZ1ZhbHVlID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoc2hvdWxkVXNlVGlsZWREcmF3aW5nKHBhdGhPclVSTCkp
KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKHZpZXdPcHRpb25zLmdldCgpLCB1c2VUaWxlZERy
YXdpbmdLZXkuZ2V0KCksIHVzZVRpbGVkRHJhd2luZ1ZhbHVlLmdldCgpKTsKIAogICAgIFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5lbnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zKHZpZXdPcHRpb25z
LmdldCgpKTsKICNlbHNlCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6
aW52b2tlKCkKICAgICBUZXN0Q29udHJvbGxlcjo6VGltZW91dER1cmF0aW9uIHRpbWVvdXRUb1Vz
ZSA9IFRlc3RDb250cm9sbGVyOjpMb25nVGltZW91dDsKICAgICBzaXplV2ViVmlld0ZvckN1cnJl
bnRUZXN0KG1fcGF0aE9yVVJMLmNfc3RyKCkpOwogICAgIHVwZGF0ZUxheW91dFR5cGUobV9wYXRo
T3JVUkwuY19zdHIoKSk7Ci0gICAgdXBkYXRlVGhyZWFkZWRTY3JvbGxpbmdGb3JDdXJyZW50VGVz
dChtX3BhdGhPclVSTC5jX3N0cigpKTsKKyAgICB1cGRhdGVUaWxlZERyYXdpbmdGb3JDdXJyZW50
VGVzdChtX3BhdGhPclVSTC5jX3N0cigpKTsKIAogICAgIG1fdGV4dE91dHB1dC5jbGVhcigpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIucHJv
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnBybwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDBhNDU0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnBybwpAQCAtMCwwICsxLDIxIEBA
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgTWFpbiBwcm9qZWN0IGZpbGUgZm9yIFdlYktpdFRlc3RSdW5uZXIg
KFdUUikKKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0
aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVEVNUExBVEUgPSBzdWJkaXJzCitDT05G
SUcgKz0gb3JkZXJlZAorCitkZXJpdmVkX3NvdXJjZXMuZmlsZSA9IERlcml2ZWRTb3VyY2VzLnBy
aQordGFyZ2V0LmZpbGUgPSBUYXJnZXQucHJpCisKK1NVQkRJUlMgPSBkZXJpdmVkX3NvdXJjZXMg
dGFyZ2V0CisKK2FkZFN0cmljdFN1YmRpck9yZGVyQmV0d2VlbihkZXJpdmVkX3NvdXJjZXMsIHRh
cmdldCkKKworaW5qZWN0ZWRfYnVuZGxlLmZpbGUgPSBJbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5wcm8KK2luamVjdGVkX2J1bmRsZS5tYWtlZmlsZSA9IE1ha2VmaWxlLkluamVjdGVkQnVu
ZGxlCitTVUJESVJTICs9IGluamVjdGVkX2J1bmRsZQorCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggN2UyNDA0Yy4uZDIzNGEyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU1NSw4ICs1NTUsNiBAQAogLyogQmVnaW4gUEJYUHJvamVjdCBz
ZWN0aW9uICovCiAJCTA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlhdHRyaWJ1dGVzID0gewotCQkJfTsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTI3ODA4NzMzREQ0MDAxMEU5Q0QgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXRUZXN0UnVubmVyIiAq
LzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMSI7CiAJCQlkZXZlbG9wbWVu
dFJlZ2lvbiA9IEVuZ2xpc2g7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9FdmVudFNlbmRlclByb3h5Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbQppbmRleCA0MjhiMjEwLi4yMzNkMmY4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KQEAgLTM0LDEwICszNCw2IEBACiAj
aW1wb3J0IDxXZWJLaXQyL1dLU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
LUBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoRGV0YWlscykKLS0gKHZvaWQpX3NldEN1cnJlbnRF
dmVudDooTlNFdmVudCAqKWV2ZW50OwotQGVuZAotCiBuYW1lc3BhY2UgV1RSIHsKIAogZW51bSBN
b3VzZUFjdGlvbiB7CkBAIC0xNjMsOSArMTU5LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojpt
b3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUK
IAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAg
ICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZl
bnRdOwogICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURvd246ZXZlbnRdOwotICAgICAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwogICAgICAgICBpZiAoYnV0dG9uTnVtYmVyID09IExl
ZnRNb3VzZUJ1dHRvbikKICAgICAgICAgICAgIG1fbGVmdE1vdXNlQnV0dG9uRG93biA9IHRydWU7
CiAgICAgfQpAQCAtMTkwLDkgKzE4NCw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VV
cCh1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzCiAgICAg
Ly8gaW5zdGVhZCBvZiByb2xsaW5nIG91ciBvd24gYWxnb3JpdGhtIGZvciBzZWxlY3RpbmcgYW4g
ZXZlbnQgdGFyZ2V0LgogICAgIHRhcmdldFZpZXcgPSB0YXJnZXRWaWV3ID8gdGFyZ2V0VmlldyA6
IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogICAgIEFT
U0VSVCh0YXJnZXRWaWV3KTsKLSAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAg
ICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07Ci0gICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6bmlsXTsKICAgICBpZiAoYnV0dG9uTnVtYmVyID09IExlZnRNb3VzZUJ1dHRvbikKICAgICAg
ICAgbV9sZWZ0TW91c2VCdXR0b25Eb3duID0gZmFsc2U7CiAgICAgbV9jbGlja1RpbWUgPSBjdXJy
ZW50RXZlbnRUaW1lKCk7CkBAIC0yMTYsMTEgKzIwOCw4IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6bW91c2VNb3ZlVG8oZG91YmxlIHgsIGRvdWJsZSB5KQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF07CiAKICAgICBOU1ZpZXcgKnRhcmdldFZp
ZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0
VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwotICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0g
ICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKKyAgICBpZiAodGFyZ2V0Vmll
dykKICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VNb3ZlZDpldmVudF07Ci0gICAgICAgIFtOU0Fw
cCBfc2V0Q3VycmVudEV2ZW50Om5pbF07Ci0gICAgfQogfQogCiB2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCkBAIC00MTksOSArNDA4LDcgQEAgdm9p
ZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIHVuc2kKICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpO
TwogICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKIAotICAgIFtOU0Fw
cCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleURvd246ZXZlbnRd
OwotICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CiAKICAgICBldmVudCA9IFtOU0V2
ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNLZXlVcAogICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246TlNNYWtlUG9pbnQoNSwgNSkKQEAgLTQzNCw5ICs0MjEsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgdW5zaQogICAgICAgICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCiAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXlDb2RlOmtleUNvZGVdOwogCi0gICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6ZXZlbnRdOwogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwotICAgIFtOU0Fw
cCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91
c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCkBAIC00NDgsMTEgKzQzMyw4IEBAIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShpbnQgeCwgaW50IHkpCiAgICAgQ0dFdmVudFNldExv
Y2F0aW9uKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKIAog
ICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2
ZW50LmdldCgpXTsKLSAgICBpZiAoTlNWaWV3ICp0YXJnZXRWaWV3ID0gW21fdGVzdENvbnRyb2xs
ZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9u
SW5XaW5kb3ddXSkgewotICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07Cisg
ICAgaWYgKE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV0pCiAg
ICAgICAgIFt0YXJnZXRWaWV3IHNjcm9sbFdoZWVsOmV2ZW50XTsKLSAgICAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6bmlsXTsKLSAgICB9CiB9CiAKIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
Y29udGludW91c01vdXNlU2Nyb2xsQnkoaW50IHgsIGludCB5LCBib29sIHBhZ2VkKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCmluZGV4IGYz
YTkxNGUuLmJhOGQ3ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Bs
YXRmb3JtV2ViVmlld01hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0
Zm9ybVdlYlZpZXdNYWMubW0KQEAgLTM1LDEwICszNSw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
VFI7CiAKLWVudW0gewotICAgIF9OU0JhY2tpbmdTdG9yZVVuYnVmZmVyZWQgPSAzCi19OwotCiBA
aW50ZXJmYWNlIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cgOiBOU1dpbmRvdyB7CiAgICAgUGxhdGZv
cm1XZWJWaWV3KiBfcGxhdGZvcm1XZWJWaWV3OwogICAgIE5TUG9pbnQgX2Zha2VPcmlnaW47CkBA
IC00NywyNCArNDMsMjkgQEAgZW51bSB7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVGVzdFJ1bm5lcldL
VmlldyA6IFdLVmlldyB7Ci0gICAgQk9PTCBfdXNlVGhyZWFkZWRTY3JvbGxpbmc7CisgICAgQk9P
TCBfdXNlVGlsZWREcmF3aW5nOwogfQogCi0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHQgcGFnZUdyb3VwUmVmOihXS1BhZ2VH
cm91cFJlZilwYWdlR3JvdXAgcmVsYXRlZFRvUGFnZTooV0tQYWdlUmVmKXJlbGF0ZWRQYWdlIHVz
ZVRocmVhZGVkU2Nyb2xsaW5nOihCT09MKXVzZVRocmVhZGVkU2Nyb2xsaW5nOworLSAoaWQpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0
IHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwIHJlbGF0ZWRUb1BhZ2U6KFdL
UGFnZVJlZilyZWxhdGVkUGFnZSB1c2VUaWxlZERyYXdpbmc6KEJPT0wpdXNlVGlsZWREcmF3aW5n
OwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBCT09MIHVzZVRocmVhZGVkU2Nyb2xs
aW5nOworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VUaWxlZERyYXdpbmc7
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UnVubmVyV0tWaWV3CiAKLUBzeW50aGVzaXpl
IHVzZVRocmVhZGVkU2Nyb2xsaW5nID0gX3VzZVRocmVhZGVkU2Nyb2xsaW5nOworQHN5bnRoZXNp
emUgdXNlVGlsZWREcmF3aW5nID0gX3VzZVRpbGVkRHJhd2luZzsKIAotLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0IHBhZ2VH
cm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwIHJlbGF0ZWRUb1BhZ2U6KFdLUGFnZVJl
ZilyZWxhdGVkUGFnZSB1c2VUaHJlYWRlZFNjcm9sbGluZzooQk9PTCl1c2VUaHJlYWRlZFNjcm9s
bGluZworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29u
dGV4dFJlZiljb250ZXh0IHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwIHJl
bGF0ZWRUb1BhZ2U6KFdLUGFnZVJlZilyZWxhdGVkUGFnZSB1c2VUaWxlZERyYXdpbmc6KEJPT0wp
dXNlVGlsZWREcmF3aW5nCiB7Ci0gICAgX3VzZVRocmVhZGVkU2Nyb2xsaW5nID0gdXNlVGhyZWFk
ZWRTY3JvbGxpbmc7CisgICAgX3VzZVRpbGVkRHJhd2luZyA9IHVzZVRpbGVkRHJhd2luZzsKICAg
ICByZXR1cm4gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjpjb250ZXh0IHBh
Z2VHcm91cFJlZjpwYWdlR3JvdXAgcmVsYXRlZFRvUGFnZTpyZWxhdGVkUGFnZV07CiB9CiAKKy0g
KEJPT0wpX3Nob3VsZFVzZVRpbGVkRHJhd2luZ0FyZWEKK3sKKyAgICByZXR1cm4gX3VzZVRpbGVk
RHJhd2luZzsKK30KKwogLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1hZ2UgKilhbkltYWdlIGF0OihO
U1BvaW50KXZpZXdMb2NhdGlvbiBvZmZzZXQ6KE5TU2l6ZSlpbml0aWFsT2Zmc2V0IGV2ZW50OihO
U0V2ZW50ICopZXZlbnQgcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGJvYXJkIHNvdXJjZToo
aWQpc291cmNlT2JqIHNsaWRlQmFjazooQk9PTClzbGlkZUZsYWcKIHsKICAgICBSZXRhaW5QdHI8
V2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvID0gYWRvcHROUyhbW1dl
YktpdFRlc3RSdW5uZXJEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6YW5JbWFnZSBv
ZmZzZXQ6aW5pdGlhbE9mZnNldCBwYXN0ZWJvYXJkOnBib2FyZCBzb3VyY2U6c291cmNlT2JqXSk7
CkBAIC0xMTAsNiArMTExLDE3IEBAIGVudW0gewogICAgIHJldHVybiBOU01ha2VSZWN0KF9mYWtl
T3JpZ2luLngsIF9mYWtlT3JpZ2luLnksIGN1cnJlbnRGcmFtZS5zaXplLndpZHRoLCBjdXJyZW50
RnJhbWUuc2l6ZS5oZWlnaHQpOwogfQogCistIChDR0Zsb2F0KWJhY2tpbmdTY2FsZUZhY3Rvcgor
eworICAgIHJldHVybiAxOworfQorCitAZW5kCisKK0BpbnRlcmZhY2UgTlNXaW5kb3cgKERldGFp
bHMpCisKKy0gKHZvaWQpX3NldFdpbmRvd1Jlc29sdXRpb246KENHRmxvYXQpcmVzb2x1dGlvbiBk
aXNwbGF5SWZDaGFuZ2VkOihCT09MKWRpc3BsYXlJZkNoYW5nZWQ7CisKIEBlbmQKIAogbmFtZXNw
YWNlIFdUUiB7CkBAIC0xMTgsMjYgKzEzMCwyNyBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3Jt
V2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdybwog
ICAgIDogbV93aW5kb3dJc0tleSh0cnVlKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZVRocmVhZGVkU2Nyb2xsaW5nS2V5KEFkb3B0
V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaHJlYWRlZFNjcm9sbGluZyIpKTsK
LSAgICBXS1R5cGVSZWYgdXNlVGhyZWFkZWRTY3JvbGxpbmdWYWx1ZSA9IG9wdGlvbnMgPyBXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVzZVRocmVhZGVkU2Nyb2xsaW5nS2V5Lmdl
dCgpKSA6IE5VTEw7Ci0gICAgYm9vbCB1c2VUaHJlYWRlZFNjcm9sbGluZyA9IHVzZVRocmVhZGVk
U2Nyb2xsaW5nVmFsdWUgJiYgV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFu
UmVmPih1c2VUaHJlYWRlZFNjcm9sbGluZ1ZhbHVlKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHVzZVRpbGVkRHJhd2luZ0tleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiVGlsZWREcmF3aW5nIikpOworICAgIFdLVHlwZVJlZiB1c2VUaWxlZERyYXdpbmdW
YWx1ZSA9IG9wdGlvbnMgPyBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG9wdGlvbnMsIHVzZVRp
bGVkRHJhd2luZ0tleS5nZXQoKSkgOiBOVUxMOworICAgIGJvb2wgdXNlVGlsZWREcmF3aW5nID0g
dXNlVGlsZWREcmF3aW5nVmFsdWUgJiYgV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPih1c2VUaWxlZERyYXdpbmdWYWx1ZSkpOwogCiAgICAgLy8gVGhlIHRpbGVkIGRy
YXdpbmcgc3BlY2lmaWMgdGVzdHMgYWxzbyBkZXBlbmQgb24gdGhyZWFkZWQgc2Nyb2xsaW5nLgog
ICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVu
Y2VzKHBhZ2VHcm91cFJlZik7Ci0gICAgV0tQcmVmZXJlbmNlc1NldFRocmVhZGVkU2Nyb2xsaW5n
RW5hYmxlZChwcmVmZXJlbmNlcywgdXNlVGhyZWFkZWRTY3JvbGxpbmcpOworICAgIFdLUHJlZmVy
ZW5jZXNTZXRUaHJlYWRlZFNjcm9sbGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHVzZVRpbGVkRHJh
d2luZyk7CiAKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgVGVzdENvbnRyb2xs
ZXI6OnZpZXdXaWR0aCwgVGVzdENvbnRyb2xsZXI6OnZpZXdIZWlnaHQpOwotICAgIG1fdmlldyA9
IFtbVGVzdFJ1bm5lcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRleHRSZWY6
Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6cmVsYXRl
ZFBhZ2UgdXNlVGhyZWFkZWRTY3JvbGxpbmc6dXNlVGhyZWFkZWRTY3JvbGxpbmddOworICAgIG1f
dmlldyA9IFtbVGVzdFJ1bm5lcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRl
eHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6
cmVsYXRlZFBhZ2UgdXNlVGlsZWREcmF3aW5nOnVzZVRpbGVkRHJhd2luZ107CiAgICAgW21fdmll
dyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkOk5PXTsKIAogICAgIE5TUmVjdCB3
aW5kb3dSZWN0ID0gTlNPZmZzZXRSZWN0KHJlY3QsIC0xMDAwMCwgWyhOU1NjcmVlbiAqKVtbTlNT
Y3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0
LnNpemUuaGVpZ2h0ICsgMTAwMDApOwotICAgIG1fd2luZG93ID0gW1tXZWJLaXRUZXN0UnVubmVy
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1JlY3Qgc3R5bGVNYXNrOk5T
Qm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpfTlNCYWNraW5nU3RvcmVVbmJ1ZmZlcmVkIGRl
ZmVyOllFU107CisgICAgbV93aW5kb3cgPSBbW1dlYktpdFRlc3RSdW5uZXJXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKICAgICBt
X3dpbmRvdy5wbGF0Zm9ybVdlYlZpZXcgPSB0aGlzOwogICAgIFttX3dpbmRvdyBzZXRDb2xvclNw
YWNlOltbTlNTY3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOwogICAgIFttX3dpbmRvdyBz
ZXRDb2xsZWN0aW9uQmVoYXZpb3I6TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JTdGF0aW9uYXJ5
XTsKICAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmlld107CiAgICAg
W21fd2luZG93IG9yZGVyQmFjazpuaWxdOwogICAgIFttX3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5D
bG9zZWQ6Tk9dOworICAgIFttX3dpbmRvdyBfc2V0V2luZG93UmVzb2x1dGlvbjoxIGRpc3BsYXlJ
ZkNoYW5nZWQ6WUVTXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2ln
bmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCkBAIC0yMjksMTEgKzI0MiwxMSBAQCBXS1JldGFp
blB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQog
CiBib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBvcnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlS
ZWYgb3B0aW9ucykgY29uc3QKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlVGhy
ZWFkZWRTY3JvbGxpbmdLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlRocmVhZGVkU2Nyb2xsaW5nIikpOwotICAgIFdLVHlwZVJlZiB1c2VUaHJlYWRlZFNjcm9sbGlu
Z1ZhbHVlID0gV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShvcHRpb25zLCB1c2VUaHJlYWRlZFNj
cm9sbGluZ0tleS5nZXQoKSk7Ci0gICAgYm9vbCB1c2VUaHJlYWRlZFNjcm9sbGluZyA9IHVzZVRo
cmVhZGVkU2Nyb2xsaW5nVmFsdWUgJiYgV0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tC
b29sZWFuUmVmPih1c2VUaHJlYWRlZFNjcm9sbGluZ1ZhbHVlKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHVzZVRpbGVkRHJhd2luZ0tleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiVGlsZWREcmF3aW5nIikpOworICAgIFdLVHlwZVJlZiB1c2VUaWxlZERy
YXdpbmdWYWx1ZSA9IFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlVGlsZWRE
cmF3aW5nS2V5LmdldCgpKTsKKyAgICBib29sIHVzZVRpbGVkRHJhd2luZyA9IHVzZVRpbGVkRHJh
d2luZ1ZhbHVlICYmIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4o
dXNlVGlsZWREcmF3aW5nVmFsdWUpKTsKIAotICAgIHJldHVybiB1c2VUaHJlYWRlZFNjcm9sbGlu
ZyA9PSBbKFRlc3RSdW5uZXJXS1ZpZXcgKiltX3ZpZXcgdXNlVGhyZWFkZWRTY3JvbGxpbmddOwor
ICAgIHJldHVybiB1c2VUaWxlZERyYXdpbmcgPT0gWyhUZXN0UnVubmVyV0tWaWV3ICopbV92aWV3
IHVzZVRpbGVkRHJhd2luZ107CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL21haW4ubW0KaW5kZXggZjIyOTZkNC4uODYzN2NmYiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvbWFpbi5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9tYWluLm1tCkBAIC0zMiwxMCArMzIsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3Qg
Y2hhciogYXJndltdKQogICAgIE5TQXV0b3JlbGVhc2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxl
YXNlUG9vbCBhbGxvY10gaW5pdF07CiAgICAgW05TQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRp
b25dOwogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0
aWxlRG9tYWluOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSBmb3JLZXk6QCJXZWJLaXRLZXJuaW5nQW5kTGlnYXR1cmVzRW5hYmxl
ZEJ5RGVmYXVsdCJdIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07Ci0gICAgCi0gICAgTlNEaWN0
aW9uYXJ5ICpkZWZhdWx0cyA9IFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNB
bmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBAIkFwcGxlTWFnbmlmaWVkTW9k
ZSIsIG5pbF07Ci0gICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVn
aXN0ZXJEZWZhdWx0czpkZWZhdWx0c107Ci0gICAgW2RlZmF1bHRzIHJlbGVhc2VdOwogCiAgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6
QCJXZWJBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQiXTsKICAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29sOk5PIGZvcktleTpAIldlYkF1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkIl07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZTE2ZTNlZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcApAQCAtMCwwICsxLDQ3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudFNl
bmRlclByb3h5LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJU
ZXN0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lTW91c2VFdmVudD4KKyNp
bmNsdWRlIDxRS2V5RXZlbnQ+CisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLUGFnZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4K
KyNpbmNsdWRlIDxxcGEvcXdpbmRvd3N5c3RlbWludGVyZmFjZS5oPgorCituYW1lc3BhY2UgV1RS
IHsKKworI2RlZmluZSBLRVlDT0RFX0RFTCAgICAgICAgIDEyNworI2RlZmluZSBLRVlDT0RFX0JB
Q0tTUEFDRSAgIDgKKyNkZWZpbmUgS0VZQ09ERV9MRUZUQVJST1cgICAweGY3MDIKKyNkZWZpbmUg
S0VZQ09ERV9SSUdIVEFSUk9XICAweGY3MDMKKyNkZWZpbmUgS0VZQ09ERV9VUEFSUk9XICAgICAw
eGY3MDAKKyNkZWZpbmUgS0VZQ09ERV9ET1dOQVJST1cgICAweGY3MDEKKworc3RydWN0IFdUUkV2
ZW50UXVldWUgeworICAgIFFFdmVudCogbV9ldmVudDsKKyAgICBpbnQgbV9kZWxheTsKK307CisK
K3N0YXRpYyBXVFJFdmVudFF1ZXVlIGV2ZW50UXVldWVbMTAyNF07CitzdGF0aWMgdW5zaWduZWQg
ZW5kT2ZRdWV1ZTsKK3N0YXRpYyBib29sIGlzUmVwbGF5aW5nRXZlbnRzOworCitFdmVudFNlbmRl
clByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikK
KyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCisgICAgLCBtX3RpbWUoMCkK
KyAgICAsIG1fcG9zaXRpb24oKQorICAgICwgbV9sZWZ0TW91c2VCdXR0b25Eb3duKGZhbHNlKQor
ICAgICwgbV9jbGlja0NvdW50KDApCisgICAgLCBtX2NsaWNrVGltZSgwKQorICAgICwgbV9jbGlj
a1Bvc2l0aW9uKCkKKyAgICAsIG1fY2xpY2tCdXR0b24oa1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0
dG9uKQorICAgICwgbV9tb3VzZUJ1dHRvbnMoMCkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgICwgbV90b3VjaEFjdGl2ZShmYWxzZSkKKyNlbmRpZgoreworICAgIG1lbXNldChldmVudFF1
ZXVlLCAwLCBzaXplb2YoZXZlbnRRdWV1ZSkpOworICAgIGVuZE9mUXVldWUgPSAwOworICAgIGlz
UmVwbGF5aW5nRXZlbnRzID0gZmFsc2U7Cit9CisKK0V2ZW50U2VuZGVyUHJveHk6On5FdmVudFNl
bmRlclByb3h5KCkKK3sKK30KKworc3RhdGljIFF0OjpNb3VzZUJ1dHRvbiBnZXRNb3VzZUJ1dHRv
bih1bnNpZ25lZCBidXR0b24pCit7CisgICAgUXQ6Ok1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uOwor
ICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2FzZSAwOgorICAgICAgICBtb3VzZUJ1dHRvbiA9
IFF0OjpMZWZ0QnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIG1v
dXNlQnV0dG9uID0gUXQ6Ok1pZEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgor
ICAgICAgICBtb3VzZUJ1dHRvbiA9IFF0OjpSaWdodEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAzOgorICAgICAgICAvLyBmYXN0L2V2ZW50cy9tb3VzZS1jbGljay1ldmVudHMgZXhw
ZWN0cyB0aGUgNHRoIGJ1dHRvbiB0byBiZSB0cmVhdGVkIGFzIHRoZSBtaWRkbGUgYnV0dG9uCisg
ICAgICAgIG1vdXNlQnV0dG9uID0gUXQ6Ok1pZEJ1dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgbW91c2VCdXR0b24gPSBRdDo6TGVmdEJ1dHRvbjsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBtb3VzZUJ1dHRvbjsKK30KKworc3RhdGljIFF0OjpL
ZXlib2FyZE1vZGlmaWVycyBnZXRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNS
ZWYpCit7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycyA9IDA7CisKKyAgICBp
ZiAobW9kaWZpZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5KQorICAgICAgICBt
b2RpZmllcnMgfD0gUXQ6OkNvbnRyb2xNb2RpZmllcjsKKyAgICBpZiAobW9kaWZpZXJzUmVmICYg
a1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpTaGlm
dE1vZGlmaWVyOworICAgIGlmIChtb2RpZmllcnNSZWYgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtl
eSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFF0OjpBbHRNb2RpZmllcjsKKyAgICBpZiAobW9kaWZp
ZXJzUmVmICYga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5KQorICAgICAgICBtb2RpZmllcnMgfD0g
UXQ6Ok1ldGFNb2RpZmllcjsKKworICAgIHJldHVybiBtb2RpZmllcnM7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzUmVmLCB1bnNpZ25lZCBsb2NhdGlvbikKK3sKKyAgICBjb25zdCBRU3RyaW5n
IGtleSA9IFdLU3RyaW5nQ29weVFTdHJpbmcoa2V5UmVmKTsKKyAgICBRU3RyaW5nIGtleVRleHQg
PSBrZXk7CisKKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzID0gZ2V0TW9kaWZp
ZXJzKG1vZGlmaWVyc1JlZik7CisKKyAgICBpZiAobG9jYXRpb24gPT0gMykKKyAgICAgICAgbW9k
aWZpZXJzIHw9IFF0OjpLZXlwYWRNb2RpZmllcjsKKyAgICBpbnQgY29kZSA9IDA7CisgICAgaWYg
KGtleS5sZW5ndGgoKSA9PSAxKSB7CisgICAgICAgIGNvZGUgPSBrZXkudW5pY29kZSgpLT51bmlj
b2RlKCk7CisgICAgICAgIC8vIG1hcCBzcGVjaWFsIGtleWNvZGVzIHVzZWQgYnkgdGhlIHRlc3Rz
IHRvIHNvbWV0aGluZyB0aGF0IHdvcmtzIGZvciBRdC9YMTEKKyAgICAgICAgaWYgKGNvZGUgPT0g
J1xyJykgeworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfUmV0dXJuOworICAgICAgICB9IGVs
c2UgaWYgKGNvZGUgPT0gJ1x0JykgeworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfVGFiOwor
ICAgICAgICAgICAgaWYgKG1vZGlmaWVycyA9PSBRdDo6U2hpZnRNb2RpZmllcikKKyAgICAgICAg
ICAgICAgICBjb2RlID0gUXQ6OktleV9CYWNrdGFiOworICAgICAgICAgICAga2V5VGV4dCA9IFFT
dHJpbmdMaXRlcmFsKCJcdCIpOworICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gS0VZQ09ERV9E
RUwgfHwgY29kZSA9PSBLRVlDT0RFX0JBQ0tTUEFDRSkgeworICAgICAgICAgICAgY29kZSA9IFF0
OjpLZXlfQmFja3NwYWNlOworICAgICAgICAgICAgaWYgKG1vZGlmaWVycyA9PSBRdDo6QWx0TW9k
aWZpZXIpCisgICAgICAgICAgICAgICAgbW9kaWZpZXJzID0gUXQ6OkNvbnRyb2xNb2RpZmllcjsK
KyAgICAgICAgICAgIGtleVRleHQgPSBRU3RyaW5nKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY29k
ZSA9PSAnbycgJiYgbW9kaWZpZXJzID09IFF0OjpDb250cm9sTW9kaWZpZXIpIHsKKyAgICAgICAg
ICAgIC8vIE1pbWljIHRoZSBlbWFjcyBjdHJsLW8gYmluZGluZyBvbiBNYWMgYnkgaW5zZXJ0aW5n
IGEgcGFyYWdyYXBoCisgICAgICAgICAgICAvLyBzZXBhcmF0b3IgYW5kIHRoZW4gcHV0dGluZyB0
aGUgY3Vyc29yIGJhY2sgdG8gaXRzIG9yaWdpbmFsCisgICAgICAgICAgICAvLyBwb3NpdGlvbi4g
QWxsb3dzIHVzIHRvIHBhc3MgZW1hY3MtY3RybC1vLmh0bWwKKyAgICAgICAgICAgIGtleVRleHQg
PSBRTGF0aW4xU3RyaW5nKCJcbiIpOworICAgICAgICAgICAgY29kZSA9ICdcbic7CisgICAgICAg
ICAgICBtb2RpZmllcnMgPSAwOworICAgICAgICAgICAgUUtleUV2ZW50IGV2ZW50KFFFdmVudDo6
S2V5UHJlc3MsIGNvZGUsIG1vZGlmaWVycywga2V5VGV4dCk7CisgICAgICAgICAgICBtX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5zZW5kRXZlbnQoJmV2ZW50KTsKKyAgICAgICAgICAg
IFFLZXlFdmVudCBldmVudDIoUUV2ZW50OjpLZXlSZWxlYXNlLCBjb2RlLCBtb2RpZmllcnMsIGtl
eVRleHQpOworICAgICAgICAgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+c2Vu
ZEV2ZW50KCZldmVudDIpOworICAgICAgICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAg
ICAgICAgIGNvZGUgPSBRdDo6S2V5X0xlZnQ7CisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSAn
eScgJiYgbW9kaWZpZXJzID09IFF0OjpDb250cm9sTW9kaWZpZXIpIHsKKyAgICAgICAgICAgIGtl
eVRleHQgPSBRTGF0aW4xU3RyaW5nKCJjIik7CisgICAgICAgICAgICBjb2RlID0gJ2MnOworICAg
ICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gJ2snICYmIG1vZGlmaWVycyA9PSBRdDo6Q29udHJvbE1v
ZGlmaWVyKSB7CisgICAgICAgICAgICBrZXlUZXh0ID0gUUxhdGluMVN0cmluZygieCIpOworICAg
ICAgICAgICAgY29kZSA9ICd4JzsKKyAgICAgICAgfSBlbHNlIGlmIChjb2RlID09ICdhJyAmJiBt
b2RpZmllcnMgPT0gUXQ6OkNvbnRyb2xNb2RpZmllcikgeworICAgICAgICAgICAga2V5VGV4dCA9
IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X0hvbWU7CisgICAgICAgICAg
ICBtb2RpZmllcnMgPSAwOworICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gS0VZQ09ERV9MRUZU
QVJST1cpIHsKKyAgICAgICAgICAgIGtleVRleHQgPSBRU3RyaW5nKCk7CisgICAgICAgICAgICBj
b2RlID0gUXQ6OktleV9MZWZ0OworICAgICAgICAgICAgaWYgKG1vZGlmaWVycyAmIFF0OjpNZXRh
TW9kaWZpZXIpIHsKKyAgICAgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9Ib21lOworICAgICAg
ICAgICAgICAgIG1vZGlmaWVycyAmPSB+UXQ6Ok1ldGFNb2RpZmllcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IEtFWUNPREVfUklHSFRBUlJPVykgeworICAgICAg
ICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1Jp
Z2h0OworICAgICAgICAgICAgaWYgKG1vZGlmaWVycyAmIFF0OjpNZXRhTW9kaWZpZXIpIHsKKyAg
ICAgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9FbmQ7CisgICAgICAgICAgICAgICAgbW9kaWZp
ZXJzICY9IH5RdDo6TWV0YU1vZGlmaWVyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKGNvZGUgPT0gS0VZQ09ERV9VUEFSUk9XKSB7CisgICAgICAgICAgICBrZXlUZXh0ID0gUVN0
cmluZygpOworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfVXA7CisgICAgICAgICAgICBpZiAo
bW9kaWZpZXJzICYgUXQ6Ok1ldGFNb2RpZmllcikgeworICAgICAgICAgICAgICAgIGNvZGUgPSBR
dDo6S2V5X1BhZ2VVcDsKKyAgICAgICAgICAgICAgICBtb2RpZmllcnMgJj0gflF0OjpNZXRhTW9k
aWZpZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBLRVlDT0RF
X0RPV05BUlJPVykgeworICAgICAgICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAg
ICAgIGNvZGUgPSBRdDo6S2V5X0Rvd247CisgICAgICAgICAgICBpZiAobW9kaWZpZXJzICYgUXQ6
Ok1ldGFNb2RpZmllcikgeworICAgICAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1BhZ2VEb3du
OworICAgICAgICAgICAgICAgIG1vZGlmaWVycyAmPSB+UXQ6Ok1ldGFNb2RpZmllcjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjb2RlID0ga2V5LnVuaWNvZGUo
KS0+dG9VcHBlcigpLnVuaWNvZGUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoa2V5LnN0
YXJ0c1dpdGgoUUxhdGluMUNoYXIoJ0YnKSkgJiYga2V5LmNvdW50KCkgPD0gMykgeworICAgICAg
ICAgICAga2V5VGV4dCA9IGtleVRleHQubWlkKDEpOworICAgICAgICAgICAgaW50IGZ1bmN0aW9u
S2V5ID0ga2V5VGV4dC50b0ludCgpOworICAgICAgICAgICAgUV9BU1NFUlQoZnVuY3Rpb25LZXkg
Pj0gMSAmJiBmdW5jdGlvbktleSA8PSAzNSk7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9G
MSArIChmdW5jdGlvbktleSAtIDEpOworICAgICAgICAvLyBtYXAgc3BlY2lhbCBrZXljb2RlIHN0
cmluZ3MgdXNlZCBieSB0aGUgdGVzdHMgdG8gc29tZXRoaW5nIHRoYXQgd29ya3MgZm9yIFF0L1gx
MQorICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBRTGF0aW4xU3RyaW5nKCJsZWZ0QXJyb3ciKSkg
eworICAgICAgICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBR
dDo6S2V5X0xlZnQ7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09IFFMYXRpbjFTdHJpbmcoInJp
Z2h0QXJyb3ciKSkgeworICAgICAgICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAg
ICAgIGNvZGUgPSBRdDo6S2V5X1JpZ2h0OworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBRTGF0
aW4xU3RyaW5nKCJ1cEFycm93IikpIHsKKyAgICAgICAgICAgIGtleVRleHQgPSBRU3RyaW5nKCk7
CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9VcDsKKyAgICAgICAgfSBlbHNlIGlmIChrZXkg
PT0gUUxhdGluMVN0cmluZygiZG93bkFycm93IikpIHsKKyAgICAgICAgICAgIGtleVRleHQgPSBR
U3RyaW5nKCk7CisgICAgICAgICAgICBjb2RlID0gUXQ6OktleV9Eb3duOworICAgICAgICB9IGVs
c2UgaWYgKGtleSA9PSBRTGF0aW4xU3RyaW5nKCJwYWdlVXAiKSkgeworICAgICAgICAgICAga2V5
VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X1BhZ2VVcDsKKyAg
ICAgICAgfSBlbHNlIGlmIChrZXkgPT0gUUxhdGluMVN0cmluZygicGFnZURvd24iKSkgeworICAg
ICAgICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5
X1BhZ2VEb3duOworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBRTGF0aW4xU3RyaW5nKCJob21l
IikpIHsKKyAgICAgICAgICAgIGtleVRleHQgPSBRU3RyaW5nKCk7CisgICAgICAgICAgICBjb2Rl
ID0gUXQ6OktleV9Ib21lOworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSBRTGF0aW4xU3RyaW5n
KCJlbmQiKSkgeworICAgICAgICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAg
IGNvZGUgPSBRdDo6S2V5X0VuZDsKKyAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gUUxhdGluMVN0
cmluZygiaW5zZXJ0IikpIHsKKyAgICAgICAgICAgIGtleVRleHQgPSBRU3RyaW5nKCk7CisgICAg
ICAgICAgICBjb2RlID0gUXQ6OktleV9JbnNlcnQ7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09
IFFMYXRpbjFTdHJpbmcoImRlbGV0ZSIpKSB7CisgICAgICAgICAgICBrZXlUZXh0ID0gUVN0cmlu
ZygpOworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfRGVsZXRlOworICAgICAgICB9IGVsc2Ug
aWYgKGtleSA9PSBRTGF0aW4xU3RyaW5nKCJwcmludFNjcmVlbiIpKSB7CisgICAgICAgICAgICBr
ZXlUZXh0ID0gUVN0cmluZygpOworICAgICAgICAgICAgY29kZSA9IFF0OjpLZXlfUHJpbnQ7Cisg
ICAgICAgIH0gZWxzZSBpZiAoa2V5ID09IFFMYXRpbjFTdHJpbmcoIm1lbnUiKSkgeworICAgICAg
ICAgICAga2V5VGV4dCA9IFFTdHJpbmcoKTsKKyAgICAgICAgICAgIGNvZGUgPSBRdDo6S2V5X01l
bnU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBRS2V5RXZlbnQqIHByZXNzRXZlbnQgPSBuZXcg
UUtleUV2ZW50KFFFdmVudDo6S2V5UHJlc3MsIGNvZGUsIG1vZGlmaWVycywga2V5VGV4dCk7Cisg
ICAgc2VuZE9yUXVldWVFdmVudChwcmVzc0V2ZW50KTsKKyAgICBRS2V5RXZlbnQqIHJlbGVhc2VF
dmVudCA9IG5ldyBRS2V5RXZlbnQoUUV2ZW50OjpLZXlSZWxlYXNlLCBjb2RlLCBtb2RpZmllcnMs
IGtleVRleHQpOworICAgIHNlbmRPclF1ZXVlRXZlbnQocmVsZWFzZUV2ZW50KTsKKworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6OnVwZGF0ZUNsaWNrQ291bnRGb3JCdXR0b24oaW50IGJ1dHRv
bikKK3sKKyAgICBpZiAobV90aW1lIC0gbV9jbGlja1RpbWUgPCBRQXBwbGljYXRpb246OmRvdWJs
ZUNsaWNrSW50ZXJ2YWwoKSAmJiBtX3Bvc2l0aW9uID09IG1fY2xpY2tQb3NpdGlvbiAmJiBidXR0
b24gPT0gbV9jbGlja0J1dHRvbikgeworICAgICAgICBtX2NsaWNrVGltZSA9IG1fdGltZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY2xpY2tUaW1lID0gbV90aW1lOworICAgIG1f
Y2xpY2tQb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRvbjsK
K30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBX
S0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQoreworICAgIFF0OjpLZXlib2FyZE1vZGlmaWVy
cyBtb2RpZmllcnMgPSBnZXRNb2RpZmllcnMod2tNb2RpZmllcnMpOworICAgIFF0OjpNb3VzZUJ1
dHRvbiBtb3VzZUJ1dHRvbiA9IGdldE1vdXNlQnV0dG9uKGJ1dHRvbik7CisKKyAgICB1cGRhdGVD
bGlja0NvdW50Rm9yQnV0dG9uKGJ1dHRvbik7CisKKyAgICBtX21vdXNlQnV0dG9ucyB8PSBtb3Vz
ZUJ1dHRvbjsKKworICAgIFFQb2ludCBtb3VzZVBvcyhtX3Bvc2l0aW9uLngsIG1fcG9zaXRpb24u
eSk7CisgICAgUU1vdXNlRXZlbnQqIGV2ZW50ID0gbmV3IFFNb3VzZUV2ZW50KFFFdmVudDo6TW91
c2VCdXR0b25QcmVzcywKKyAgICAgICAgbW91c2VQb3MsIG1vdXNlUG9zLCBtb3VzZUJ1dHRvbiwg
bV9tb3VzZUJ1dHRvbnMsIG1vZGlmaWVycyk7CisKKyAgICAvLyBXZSBhcmVuJ3QgZ2VuZXJhdGlu
ZyBNb3VzZUJ1dHRvbkRibENsaWNrIGV2ZW50cyBhcyB0aGV5IGFyZW4ndCB1c2VkLgorICAgIHNl
bmRPclF1ZXVlRXZlbnQoZXZlbnQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNl
VXAodW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKQoreworICAgIFF0OjpNb3VzZUJ1
dHRvbiBtb3VzZUJ1dHRvbiA9IGdldE1vdXNlQnV0dG9uKGJ1dHRvbik7CisgICAgbV9tb3VzZUJ1
dHRvbnMgJj0gfm1vdXNlQnV0dG9uOworCisgICAgUVBvaW50IG1vdXNlUG9zKG1fcG9zaXRpb24u
eCwgbV9wb3NpdGlvbi55KTsKKyAgICBRTW91c2VFdmVudCogZXZlbnQgPSBuZXcgUU1vdXNlRXZl
bnQoUUV2ZW50OjpNb3VzZUJ1dHRvblJlbGVhc2UsCisgICAgICAgIG1vdXNlUG9zLCBtb3VzZVBv
cywgbW91c2VCdXR0b24sIG1fbW91c2VCdXR0b25zLCBRdDo6Tm9Nb2RpZmllcik7CisKKyAgICBz
ZW5kT3JRdWV1ZUV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3Vz
ZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCit7CisgICAgbV9wb3NpdGlvbi54ID0geDsKKyAg
ICBtX3Bvc2l0aW9uLnkgPSB5OworCisgICAgUVBvaW50IG1vdXNlUG9zKG1fcG9zaXRpb24ueCwg
bV9wb3NpdGlvbi55KTsKKyAgICBRTW91c2VFdmVudCogZXZlbnQgPSBuZXcgUU1vdXNlRXZlbnQo
UUV2ZW50OjpNb3VzZU1vdmUsCisgICAgICAgIG1vdXNlUG9zLCBtb3VzZVBvcywgUXQ6Ok5vQnV0
dG9uLCBtX21vdXNlQnV0dG9ucywgUXQ6Ok5vTW9kaWZpZXIpOworCisgICAgc2VuZE9yUXVldWVF
dmVudChldmVudCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeShp
bnQsIGludCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6Y29udGludW91c01vdXNlU2Nyb2xsQnkoaW50LCBpbnQsIGJvb2wpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorfQorCit2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmxlYXBGb3J3YXJkKGludCBtcykKK3sKKyAgICBldmVudFF1ZXVlW2VuZE9mUXVldWVdLm1f
ZGVsYXkgPSBtczsKKyAgICBtX3RpbWUgKz0gbXM7Cit9CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQordm9pZCBFdmVudFNlbmRlclByb3h5OjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkK
K3sKKyAgICBjb25zdCBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmlzRW1wdHkoKSA/IDAgOiBtX3Rv
dWNoUG9pbnRzLmxhc3QoKS5pZCgpICsgMTsKKyAgICBjb25zdCBRUG9pbnRGIHBvcyh4LCB5KTsK
KyAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCBwb2ludChpZCk7CisgICAgcG9pbnQuc2V0UG9z
KHBvcyk7CisgICAgcG9pbnQuc2V0U3RhcnRQb3MocG9zKTsKKyAgICBwb2ludC5zZXRTdGF0ZShR
dDo6VG91Y2hQb2ludFByZXNzZWQpOworICAgIGlmICghbV90b3VjaFBvaW50UmFkaXVzLmlzTnVs
bCgpKQorICAgICAgICBwb2ludC5zZXRSZWN0KFFSZWN0Rihwb3MgLSBtX3RvdWNoUG9pbnRSYWRp
dXMsIHBvcyArIG1fdG91Y2hQb2ludFJhZGl1cykpOworICAgIG1fdG91Y2hQb2ludHMuYXBwZW5k
KHBvaW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVUb3VjaFBvaW50KGlu
dCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIEFTU0VSVChpbmRleCA+PSAwICYmIGluZGV4
IDwgbV90b3VjaFBvaW50cy5jb3VudCgpKTsKKyAgICBRUG9pbnRGIHBvcyh4LCB5KTsKKyAgICBR
VG91Y2hFdmVudDo6VG91Y2hQb2ludCAmcCA9IG1fdG91Y2hQb2ludHNbaW5kZXhdOworICAgIHAu
c2V0UG9zKHBvcyk7CisgICAgcC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludE1vdmVkKTsKKyAgICBp
ZiAoIW1fdG91Y2hQb2ludFJhZGl1cy5pc051bGwoKSkKKyAgICAgICAgcC5zZXRSZWN0KFFSZWN0
Rihwb3MgLSBtX3RvdWNoUG9pbnRSYWRpdXMsIHBvcyArIG1fdG91Y2hQb2ludFJhZGl1cykpOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnNldFRvdWNoTW9kaWZpZXIoV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllciwgYm9vbCBlbmFibGUpCit7CisgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJz
IG1vZCA9IGdldE1vZGlmaWVycyhtb2RpZmllcik7CisKKyAgICBpZiAoZW5hYmxlKQorICAgICAg
ICBtX3RvdWNoTW9kaWZpZXJzIHw9IG1vZDsKKyAgICBlbHNlCisgICAgICAgIG1fdG91Y2hNb2Rp
ZmllcnMgJj0gfm1vZDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpzZXRUb3VjaFBvaW50
UmFkaXVzKGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKK3sKKyAgICBtX3RvdWNoUG9pbnRSYWRp
dXMgPSBRUG9pbnQocmFkaXVzWCwgcmFkaXVzWSk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6dG91Y2hTdGFydCgpCit7CisgICAgaWYgKCFtX3RvdWNoQWN0aXZlKSB7CisgICAgICAgIHNl
bmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hCZWdpbik7CisgICAgICAgIG1fdG91Y2hBY3RpdmUg
PSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBzZW5kVG91Y2hFdmVudChRRXZlbnQ6OlRvdWNo
VXBkYXRlKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp0b3VjaE1vdmUoKQoreworICAg
IHNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hVcGRhdGUpOworfQorCit2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6OnRvdWNoRW5kKCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdG91Y2hQ
b2ludHMuY291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3RvdWNoUG9pbnRzW2ldLnN0YXRl
KCkgIT0gUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZCkgeworICAgICAgICAgICAgc2VuZFRvdWNoRXZl
bnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaEVuZCk7CisgICAgbV90b3Vj
aEFjdGl2ZSA9IGZhbHNlOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OnRvdWNoQ2FuY2Vs
KCkKK3sKKyAgICBzZW5kVG91Y2hFdmVudChRRXZlbnQ6OlRvdWNoQ2FuY2VsKTsKKyAgICBtX3Rv
dWNoQWN0aXZlID0gZmFsc2U7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y2xlYXJUb3Vj
aFBvaW50cygpCit7CisgICAgbV90b3VjaFBvaW50cy5jbGVhcigpOworICAgIG1fdG91Y2hNb2Rp
ZmllcnMgPSBRdDo6S2V5Ym9hcmRNb2RpZmllcnMoKTsKKyAgICBtX3RvdWNoQWN0aXZlID0gZmFs
c2U7CisgICAgbV90b3VjaFBvaW50UmFkaXVzID0gUVBvaW50KCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6cmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KQoreworICAgIGlmIChpbmRl
eCA8IDAgfHwgaW5kZXggPj0gbV90b3VjaFBvaW50cy5jb3VudCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3RvdWNoUG9pbnRzW2luZGV4XS5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFJlbGVh
c2VkKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpjYW5jZWxUb3VjaFBvaW50KGludCBp
bmRleCkKK3sKKyAgICAvLyBGSVhNRTogTm8gY2FuY2VsbGF0aW9uIHN0YXRlIGluIFF0IDUsIG1h
cHBlZCB0byByZWxlYXNlIGluc3RlYWQuCisgICAgLy8gUGxhdGZvcm1Ub3VjaEV2ZW50IGNvbnZl
cnNpb24gbGF0ZXIgd2lsbCBtYXAgYWxsIHRvdWNoIHBvaW50cyB0bworICAgIC8vIGNhbmNlbGxl
ZC4KKyAgICByZWxlYXNlVG91Y2hQb2ludChpbmRleCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQ
cm94eTo6c2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlIHR5cGUpCit7CisgICAgc3RhdGljIFFU
b3VjaERldmljZSogZGV2aWNlID0gMDsKKyAgICBpZiAoIWRldmljZSkgeworICAgICAgICBkZXZp
Y2UgPSBuZXcgUVRvdWNoRGV2aWNlOworICAgICAgICBkZXZpY2UtPnNldFR5cGUoUVRvdWNoRGV2
aWNlOjpUb3VjaFNjcmVlbik7CisgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OnJlZ2lz
dGVyVG91Y2hEZXZpY2UoZGV2aWNlKTsKKyAgICB9CisKKyAgICBRdDo6VG91Y2hQb2ludFN0YXRl
cyBldmVudFN0YXRlczsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdG91Y2hQb2ludHMuY291
bnQoKTsgaSsrKQorICAgICAgICBldmVudFN0YXRlcyB8PSBtX3RvdWNoUG9pbnRzW2ldLnN0YXRl
KCk7CisgICAgUVRvdWNoRXZlbnQgZXZlbnQodHlwZSwgZGV2aWNlLCBtX3RvdWNoTW9kaWZpZXJz
LCBldmVudFN0YXRlcyk7CisgICAgZXZlbnQuc2V0VG91Y2hQb2ludHMobV90b3VjaFBvaW50cyk7
CisgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+c2VuZEV2ZW50KCZldmVudCk7
CisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+OjpJdGVyYXRvciBpdCA9IG1fdG91
Y2hQb2ludHMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV90b3VjaFBvaW50cy5lbmQoKSkg
eworICAgICAgICBpZiAoaXQtPnN0YXRlKCkgPT0gUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZCkKKyAg
ICAgICAgICAgIGl0ID0gbV90b3VjaFBvaW50cy5lcmFzZShpdCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgaXQtPnNldFN0YXRlKFF0OjpUb3VjaFBvaW50U3RhdGlvbmFyeSk7CisgICAg
ICAgICAgICArK2l0OworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6c2VuZE9yUXVldWVFdmVudChRRXZlbnQqIGV2ZW50KQoreworICAgIGlmICgh
ZW5kT2ZRdWV1ZSAmJiAhZXZlbnRRdWV1ZVtlbmRPZlF1ZXVlXS5tX2RlbGF5KSB7CisgICAgICAg
IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnNlbmRFdmVudChldmVudCk7CisgICAg
ICAgIGRlbGV0ZSBldmVudDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV2ZW50UXVl
dWVbZW5kT2ZRdWV1ZSsrXS5tX2V2ZW50ID0gZXZlbnQ7CisgICAgcmVwbGF5U2F2ZWRFdmVudHMo
KTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjpyZXBsYXlTYXZlZEV2ZW50cygpCit7Cisg
ICAgaWYgKGlzUmVwbGF5aW5nRXZlbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICBpc1JlcGxh
eWluZ0V2ZW50cyA9IHRydWU7CisgICAgaW50IGkgPSAwOworCisgICAgd2hpbGUgKGkgPCBlbmRP
ZlF1ZXVlKSB7CisgICAgICAgIFdUUkV2ZW50UXVldWUmIGV2ID0gZXZlbnRRdWV1ZVtpXTsKKyAg
ICAgICAgaWYgKGV2Lm1fZGVsYXkpCisgICAgICAgICAgICBRVGVzdDo6cVdhaXQoZXYubV9kZWxh
eSk7CisgICAgICAgIGkrKzsKKyAgICAgICAgbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+c2VuZEV2ZW50KGV2Lm1fZXZlbnQpOworICAgICAgICBkZWxldGUgZXYubV9ldmVudDsKKyAg
ICAgICAgZXYubV9kZWxheSA9IDA7CisgICAgfQorCisgICAgZW5kT2ZRdWV1ZSA9IDA7CisgICAg
aXNSZXBsYXlpbmdFdmVudHMgPSBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMGIwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcApAQCAtMCwwICsx
LDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJw
YWdlX3AuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKKworI2luY2x1ZGUgPFFDb3Jl
QXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUV2ZW50TG9vcD4KKyNpbmNsdWRlIDxRUW1sUHJvcGVy
dHk+CisjaW5jbHVkZSA8UXRRdWljay9RUXVpY2tWaWV3PgorI2luY2x1ZGUgPFF0UXVpY2svcHJp
dmF0ZS9xcXVpY2t3aW5kb3dfcC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZVF0Lmg+Cisj
aW5jbHVkZSA8cXBhL3F3aW5kb3dzeXN0ZW1pbnRlcmZhY2UuaD4KKworbmFtZXNwYWNlIFdUUiB7
CisKK2NsYXNzIFdyYXBwZXJXaW5kb3cgOiBwdWJsaWMgUVF1aWNrVmlldyB7CisgICAgUV9PQkpF
Q1QKK3B1YmxpYzoKKyAgICBXcmFwcGVyV2luZG93KFFRdWlja1dlYlZpZXcqIHZpZXcpCisgICAg
ICAgIDogUVF1aWNrVmlldyhRVXJsKCJkYXRhOnRleHQvcGxhaW4saW1wb3J0IFF0UXVpY2sgMi4w
XG5JdGVtIHsgb2JqZWN0TmFtZTogJ3Jvb3QnIH0iKSkKKyAgICAgICAgLCBtX3ZpZXcodmlldykK
KyAgICB7CisgICAgICAgIGlmIChzdGF0dXMoKSA9PSBRUXVpY2tWaWV3OjpSZWFkeSkKKyAgICAg
ICAgICAgIGhhbmRsZVN0YXR1c0NoYW5nZWQoUVF1aWNrVmlldzo6UmVhZHkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChzdGF0dXNDaGFuZ2VkKFFRdWlj
a1ZpZXc6OlN0YXR1cykpLCBTTE9UKGhhbmRsZVN0YXR1c0NoYW5nZWQoUVF1aWNrVmlldzo6U3Rh
dHVzKSkpOworICAgIH0KKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgaGFuZGxlU3RhdHVz
Q2hhbmdlZChRUXVpY2tWaWV3OjpTdGF0dXMgc3RhdHVzKQorICAgIHsKKyAgICAgICAgaWYgKHN0
YXR1cyAhPSBRUXVpY2tWaWV3OjpSZWFkeSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBzZXRHZW9tZXRyeSgwLCAwLCA4MDAsIDYwMCk7CisKKyAgICAgICAgc2V0UmVzaXplTW9kZShR
UXVpY2tWaWV3OjpTaXplUm9vdE9iamVjdFRvVmlldyk7CisgICAgICAgIG1fdmlldy0+c2V0UGFy
ZW50SXRlbShyb290T2JqZWN0KCkpOworICAgICAgICBRUW1sUHJvcGVydHk6OndyaXRlKG1fdmll
dywgImFuY2hvcnMuZmlsbCIsIHFWYXJpYW50RnJvbVZhbHVlKHJvb3RPYmplY3QoKSkpOworCisg
ICAgICAgIGlmIChQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90RW5hYmxlZCgpKSB7Cisg
ICAgICAgICAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAgICAgICAgICAgIGNy
ZWF0ZSgpOworI2lmIFFUX1ZFUlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDUsIDEsIDApCisgICAg
ICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQodGhpcyktPnNldFJlbmRlcldpdGhvdXRT
aG93aW5nKHRydWUpOworI2Vsc2UKKyAgICAgICAgICAgIG1fdmlldy0+ZXhwZXJpbWVudGFsKCkt
PnNldFJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKHRydWUpOworI2VuZGlmCisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV92aWV3LT5leHBlcmltZW50YWwoKS0+c2V0UmVuZGVyVG9PZmZzY3Jl
ZW5CdWZmZXIodHJ1ZSk7CisKKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxl
V2luZG93QWN0aXZhdGVkKHRoaXMpOworICAgICAgICBtX3ZpZXctPnBhZ2UoKS0+c2V0Rm9jdXMo
dHJ1ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFFRdWlja1dlYlZpZXcqIG1fdmlldzsKK307
CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLUGFnZVJlZiAvKiByZWxhdGVkUGFn
ZSAqLywgV0tEaWN0aW9uYXJ5UmVmIG9wdGlvbnMpCisgICAgOiBtX3dpbmRvd0lzS2V5KHRydWUp
CisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKKyAgICAsIG1fbW9kYWxFdmVudExvb3AoMCkKK3sK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlRml4ZWRMYXlvdXRLZXkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZUZpeGVkTGF5b3V0IikpOworICAgIG1f
dXNpbmdGaXhlZExheW91dCA9IG9wdGlvbnMgPyBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2Fz
dDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkob3B0aW9ucywgdXNlRml4
ZWRMYXlvdXRLZXkuZ2V0KCkpKSkgOiBmYWxzZTsKKyAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVu
dGFsOjpzZXRGbGlja2FibGVWaWV3cG9ydEVuYWJsZWQobV91c2luZ0ZpeGVkTGF5b3V0KTsKKwor
ICAgIG1fdmlldyA9IG5ldyBRUXVpY2tXZWJWaWV3KGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZik7
CisgICAgbV92aWV3LT5zZXRBbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JMb2NhbEhvc3QodHJ1
ZSk7CisgICAgbV92aWV3LT5jb21wb25lbnRDb21wbGV0ZSgpOworCisgICAgbV93aW5kb3cgPSBu
ZXcgV3JhcHBlcldpbmRvdyhtX3ZpZXcpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9y
bVdlYlZpZXcoKQoreworICAgIGRlbGV0ZSBtX3dpbmRvdzsKKyAgICBpZiAobV9tb2RhbEV2ZW50
TG9vcCkKKyAgICAgICAgbV9tb2RhbEV2ZW50TG9vcC0+ZXhpdCgpOworfQorCit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKK3sK
KyAgICAvLyBJZiB3ZSBkbyBub3QgaGF2ZSBhIHBsYXRmb3JtIHdpbmRvdyB3ZSB3aWxsIG5ldmVy
IGdldCB0aGUgbmVjZXNzYXJ5CisgICAgLy8gcmVzaXplIGV2ZW50LCBzbyBzaW11bGF0ZSBpdCBp
biB0aGF0IGNhc2UgdG8gbWFrZSBzdXJlIHRoZSBxdWlja3ZpZXcgaXMKKyAgICAvLyByZXNpemVk
IHRvIHdoYXQgdGhlIGxheW91dCB0ZXN0IGV4cGVjdHMuCisgICAgaWYgKCFtX3dpbmRvdy0+aGFu
ZGxlKCkpIHsKKyAgICAgICAgUVJlY3QgbmV3R2VvbWV0cnkobV93aW5kb3ctPngoKSwgbV93aW5k
b3ctPnkoKSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6
OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKG1fd2luZG93LCBuZXdHZW9tZXRyeSk7CisgICAgICAgIFFX
aW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmZsdXNoV2luZG93U3lzdGVtRXZlbnRzKCk7CisgICAgfQor
CisgICAgbV93aW5kb3ctPnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKK30KKworV0tQYWdlUmVmIFBs
YXRmb3JtV2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJuIG1fdmlldy0+cGFnZVJlZigpOwor
fQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9jdXMoKQoreworICAgIFFXaW5kb3dTeXN0ZW1J
bnRlcmZhY2U6OmhhbmRsZVdpbmRvd0FjdGl2YXRlZChtX3dpbmRvdyk7CisgICAgbV92aWV3LT5z
ZXRGb2N1cyh0cnVlKTsKK30KKworV0tSZWN0IFBsYXRmb3JtV2ViVmlldzo6d2luZG93RnJhbWUo
KQoreworICAgIFFSZWN0IHdpbmRvd1JlY3QgPSBtX3dpbmRvdy0+Z2VvbWV0cnkoKTsKKyAgICBX
S1JlY3Qgd2tGcmFtZTsKKyAgICB3a0ZyYW1lLm9yaWdpbi54ID0gd2luZG93UmVjdC54KCk7Cisg
ICAgd2tGcmFtZS5vcmlnaW4ueSA9IHdpbmRvd1JlY3QueSgpOworICAgIHdrRnJhbWUuc2l6ZS53
aWR0aCA9IHdpbmRvd1JlY3Quc2l6ZSgpLndpZHRoKCk7CisgICAgd2tGcmFtZS5zaXplLmhlaWdo
dCA9IHdpbmRvd1JlY3Quc2l6ZSgpLmhlaWdodCgpOworICAgIHJldHVybiB3a0ZyYW1lOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IHdrUmVjdCkKK3sK
KyAgICBtX3dpbmRvdy0+c2V0R2VvbWV0cnkod2tSZWN0Lm9yaWdpbi54LCB3a1JlY3Qub3JpZ2lu
LnksIHdrUmVjdC5zaXplLndpZHRoLCB3a1JlY3Quc2l6ZS5oZWlnaHQpOworfQorCitib29sIFBs
YXRmb3JtV2ViVmlldzo6c2VuZEV2ZW50KFFFdmVudCogZXZlbnQpCit7CisgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnNlbmRFdmVudChtX3dpbmRvdywgZXZlbnQpOworfQorCit2b2lkIFBs
YXRmb3JtV2ViVmlldzo6cG9zdEV2ZW50KFFFdmVudCogZXZlbnQpCit7CisgICAgUUNvcmVBcHBs
aWNhdGlvbjo6cG9zdEV2ZW50KG1fd2luZG93LCBldmVudCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1X
ZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmll
dzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKK1dLUmV0YWluUHRyPFdLSW1h
Z2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCit7CisgICAgcmV0
dXJuIGFkb3B0V0soV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UobV93aW5kb3ctPmdyYWJXaW5kb3co
KSkpOworfQorCitib29sIFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RFbmFibGVkKCkK
K3sKKyAgICAvLyBXZSBuZWVkIGEgd2F5IHRvIGRpc2FibGUgVUkgc2lkZSByZW5kZXJpbmcgZm9y
IHRlc3RzIGJlY2F1c2UgaXQgaXMKKyAgICAvLyB0b28gc2xvdyB3aXRob3V0IGFwcHJvcHJpYXRl
IGhhcmR3YXJlLgorICAgIHN0YXRpYyBib29sIHJlc3VsdDsKKyAgICBzdGF0aWMgYm9vbCBoYXND
aGVja2VkID0gZmFsc2U7CisgICAgaWYgKCFoYXNDaGVja2VkKQorICAgICAgICByZXN1bHQgPSBx
Z2V0ZW52KCJRVF9XRUJLSVRfRElTQUJMRV9VSVBST0NFU1NfRFVNUFBJWEVMUyIpICE9ICIxIjsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitib29sIFBsYXRmb3JtV2ViVmlldzo6dmlld1N1cHBv
cnRzT3B0aW9ucyhXS0RpY3Rpb25hcnlSZWYgb3B0aW9ucykgY29uc3QKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdXNlRml4ZWRMYXlvdXRLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlVzZUZpeGVkTGF5b3V0IikpOworCisgICAgcmV0dXJuIG1fdXNp
bmdGaXhlZExheW91dCA9PSAob3B0aW9ucyA/IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0
PFdLQm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShvcHRpb25zLCB1c2VGaXhl
ZExheW91dEtleS5nZXQoKSkpKSA6IGZhbHNlKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OmRpZEluaXRpYWxpemVDbGllbnRzKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNp
bmNsdWRlICJQbGF0Zm9ybVdlYlZpZXdRdC5tb2MiCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1Rlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9xdC9UZXN0Q29udHJvbGxlclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45ZDM1MTVjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9UZXN0Q29udHJvbGxlclF0LmNwcApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdENvbnRy
b2xsZXIuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIldLU3Ry
aW5nUXQuaCIKKworI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlv
bj4KKyNpbmNsdWRlIDxRRXZlbnRMb29wPgorI2luY2x1ZGUgPFFGaWxlSW5mbz4KKyNpbmNsdWRl
IDxRTGlicmFyeT4KKyNpbmNsdWRlIDxRT2JqZWN0PgorI2luY2x1ZGUgPFFUaW1lcj4KKyNpbmNs
dWRlIDxRdEdsb2JhbD4KKyNpbmNsdWRlIDxxcXVpY2t3ZWJ2aWV3X3AuaD4KKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdUUiB7CisKK2NsYXNzIFRlc3RDb250cm9sbGVyOjpSdW5Mb29wIDogcHVibGljIFFPYmpl
Y3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUnVuTG9vcCgpOworCisgICAgdm9pZCBy
dW5VbnRpbChkb3VibGUgdGltZW91dCk7CisgICAgdm9pZCBub3RpZnlEb25lKCk7CisgICAgdm9p
ZCBydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKTsKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQg
dGltZXJGaXJlZCgpOworcHJpdmF0ZToKKyAgICBRRXZlbnRMb29wIG1fcnVuVW50aWxMb29wOwor
ICAgIFFFdmVudExvb3AgbV9tb2RhbExvb3A7CisgICAgUVRpbWVyIG1fcnVuVW50aWxMb29wVGlt
ZXI7CisgICAgYm9vbCBtX3J1blVudGlsTG9vcENsb3NlUGVuZGluZzsKK307CisKK1Rlc3RDb250
cm9sbGVyOjpSdW5Mb29wOjpSdW5Mb29wKCkKKyAgICA6IG1fcnVuVW50aWxMb29wQ2xvc2VQZW5k
aW5nKGZhbHNlKQoreworICAgIG1fcnVuVW50aWxMb29wVGltZXIuc2V0U2luZ2xlU2hvdCh0cnVl
KTsKKyAgICBRT2JqZWN0Ojpjb25uZWN0KCZtX3J1blVudGlsTG9vcFRpbWVyLCBTSUdOQUwodGlt
ZW91dCgpKSwgdGhpcywgU0xPVCh0aW1lckZpcmVkKCkpKTsKK30KKwordm9pZCBUZXN0Q29udHJv
bGxlcjo6UnVuTG9vcDo6cnVuVW50aWwoZG91YmxlIHRpbWVvdXQpCit7CisgICAgQVNTRVJUKCFt
X3J1blVudGlsTG9vcC5pc1J1bm5pbmcoKSk7CisgICAgaWYgKHRpbWVvdXQpIHsKKyAgICAgICAg
Y29uc3QgaW50IHRpbWVvdXRJbk1pbGxpU2VjcyA9IHRpbWVvdXQgKiAxMDAwOworICAgICAgICBt
X3J1blVudGlsTG9vcFRpbWVyLnN0YXJ0KHRpbWVvdXRJbk1pbGxpU2Vjcyk7CisgICAgfQorICAg
IG1fcnVuVW50aWxMb29wLmV4ZWMoUUV2ZW50TG9vcDo6RXhjbHVkZVVzZXJJbnB1dEV2ZW50cyk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OlJ1bkxvb3A6Om5vdGlmeURvbmUoKQoreworICAg
IGlmIChtX21vZGFsTG9vcC5pc1J1bm5pbmcoKSkgeworICAgICAgICAvLyBXYWl0IGZvciB0aGUg
bW9kYWwgbG9vcCBmaXJzdC4gV2Ugb25seSBraWxsIGl0IGlmIHdlIHRpbWVvdXQuCisgICAgICAg
IG1fcnVuVW50aWxMb29wQ2xvc2VQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fcnVuVW50aWxMb29wVGltZXIuc3RvcCgpOworICAgIG1fcnVuVW50aWxMb29w
LmV4aXQoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6UnVuTG9vcDo6dGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKG1fbW9kYWxMb29wLmlzUnVubmluZygpKSB7CisgICAgICAgIG1fcnVuVW50
aWxMb29wQ2xvc2VQZW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgbV9tb2RhbExvb3AuZXhpdCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9ydW5VbnRpbExvb3AuZXhpdCgpOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpSdW5Mb29wOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcq
IHZpZXcpCit7CisgICAgQVNTRVJUKCFtX21vZGFsTG9vcC5pc1J1bm5pbmcoKSk7CisgICAgdmll
dy0+c2V0TW9kYWxFdmVudExvb3AoJm1fbW9kYWxMb29wKTsKKyAgICBtX21vZGFsTG9vcC5leGVj
KFFFdmVudExvb3A6OkV4Y2x1ZGVVc2VySW5wdXRFdmVudHMpOworCisgICAgaWYgKG1fcnVuVW50
aWxMb29wQ2xvc2VQZW5kaW5nKQorICAgICAgICBtX3J1blVudGlsTG9vcC5leGl0KCk7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUoKQoreworICAgIG1fcnVuTG9vcC0+bm90
aWZ5RG9uZSgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUo
KQoreworICAgIG1fcnVuTG9vcCA9IG5ldyBSdW5Mb29wOworICAgIFFRdWlja1dlYlZpZXc6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybURl
c3Ryb3koKQoreworICAgIGRlbGV0ZSBtX3J1bkxvb3A7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgY29uZGl0aW9uLCBkb3VibGUgdGltZW91dCkKK3sK
KyAgICBVTlVTRURfUEFSQU0oY29uZGl0aW9uKTsKKyAgICBjb25zdCBib29sIHNob3VsZFRpbWVv
dXQgPSAhKHFnZXRlbnYoIlFUX1dFQktJVDJfREVCVUciKSA9PSAiMSIgfHwgdGltZW91dCA9PSBt
X25vVGltZW91dCk7CisgICAgbV9ydW5Mb29wLT5ydW5VbnRpbChzaG91bGRUaW1lb3V0ID8gdGlt
ZW91dCA6IDApOworfQorCitzdGF0aWMgYm9vbCBpc0V4aXN0aW5nTGlicmFyeShjb25zdCBRU3Ry
aW5nJiBwYXRoKQoreworI2lmIE9TKFdJTkRPV1MpCisgICAgY29uc3QgY2hhciogbGlicmFyeVN1
ZmZpeGVzW10gPSB7ICIuZGxsIiB9OworI2VsaWYgT1MoTUFDX09TX1gpCisgICAgY29uc3QgY2hh
ciogbGlicmFyeVN1ZmZpeGVzW10gPSB7ICIuYnVuZGxlIiwgIi5keWxpYiIsICIuc28iIH07Cisj
ZWxpZiBPUyhVTklYKQorICAgIGNvbnN0IGNoYXIqIGxpYnJhcnlTdWZmaXhlc1tdID0geyAiLnNv
IiB9OworI2Vsc2UKKyNlcnJvciBMaWJyYXJ5IHBhdGggc3VmZml4IHNob3VsZCBiZSBzcGVjaWZp
ZWQgZm9yIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaXplb2YobGlicmFyeVN1ZmZpeGVzKSAvIHNpemVvZihjb25zdCBjaGFyKik7ICsraSkgewor
ICAgICAgICBpZiAoUUxpYnJhcnk6OmlzTGlicmFyeShwYXRoICsgbGlicmFyeVN1ZmZpeGVzW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgp
Cit7CisgICAgUVN0cmluZyBwYXRoID0gUUxhdGluMVN0cmluZyhnZXRlbnYoIldUUl9JTkpFQ1RF
REJVTkRMRV9QQVRIIikpOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcGF0aCA9
IFFGaWxlSW5mbyhRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKSArICIvLi4v
bGliL2xpYldUUkluamVjdGVkQnVuZGxlIikuYWJzb2x1dGVGaWxlUGF0aCgpOworICAgIGlmICgh
aXNFeGlzdGluZ0xpYnJhcnkocGF0aCkpCisgICAgICAgIHFGYXRhbCgiQ2Fubm90IGZpbmQgdGhl
IGluamVjdGVkIGJ1bmRsZSBhdCAlc1xuIiwgcVByaW50YWJsZShwYXRoKSk7CisKKyAgICBtX2lu
amVjdGVkQnVuZGxlUGF0aC5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKHBhdGgpKTsK
K30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3Rvcnko
KQoreworICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhxZ2V0ZW52KCJRVFdFQktJVF9QTFVHSU5fUEFUSCIpLmNvbnN0RGF0YSgpKSk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQor
eworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqIHZp
ZXcpCit7CisgICAgc2hhcmVkKCkubV9ydW5Mb29wLT5ydW5Nb2RhbCh2aWV3KTsKK30KKworY29u
c3QgY2hhciogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNpbmNsdWRlICJU
ZXN0Q29udHJvbGxlclF0Lm1vYyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
cXQvVGVzdEludm9jYXRpb25RdC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJ
bnZvY2F0aW9uUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNmFh
ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZv
Y2F0aW9uUXQuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdEludm9jYXRpb24uaCIKKworI2luY2x1ZGUgIlBsYXRm
b3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8UUJ1
ZmZlcj4KKyNpbmNsdWRlIDxRQ3J5cHRvZ3JhcGhpY0hhc2g+CisjaW5jbHVkZSA8UXRHdWkvUVBh
aW50ZXI+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlUXQuaD4KKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0
aWMgdm9pZCBkdW1wSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSkKK3sKKyAgICBRQnVmZmVyIGJ1
ZmZlcjsKKyAgICBidWZmZXIub3BlbihRQnVmZmVyOjpXcml0ZU9ubHkpOworICAgIGltYWdlLnNh
dmUoJmJ1ZmZlciwgIlBORyIpOworICAgIGJ1ZmZlci5jbG9zZSgpOworICAgIGNvbnN0IFFCeXRl
QXJyYXkmIGRhdGEgPSBidWZmZXIuZGF0YSgpOworCisgICAgcHJpbnRmKCJDb250ZW50LVR5cGU6
ICVzXG4iLCAiaW1hZ2UvcG5nIik7CisgICAgcHJpbnRmKCJDb250ZW50LUxlbmd0aDogJWx1XG4i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihkYXRhLmxlbmd0aCgpKSk7CisKKyAgICBjb25z
dCBxdWludDMyIGJ5dGVzVG9Xcml0ZUluT25lQ2h1bmsgPSAxIDw8IDE1OworICAgIHF1aW50MzIg
ZGF0YVJlbWFpbmluZ1RvV3JpdGUgPSBkYXRhLmxlbmd0aCgpOworICAgIGNvbnN0IGNoYXIqIHB0
ciA9IGRhdGEuZGF0YSgpOworICAgIHdoaWxlIChkYXRhUmVtYWluaW5nVG9Xcml0ZSkgeworICAg
ICAgICBxdWludDMyIGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5rID0gcU1pbihkYXRhUmVtYWluaW5n
VG9Xcml0ZSwgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayk7CisgICAgICAgIHF1aW50MzIgYnl0ZXNX
cml0dGVuID0gZndyaXRlKHB0ciwgMSwgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmssIHN0ZG91dCk7
CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmspCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGF0YVJlbWFpbmluZ1RvV3JpdGUgLT0gYnl0ZXNX
cml0dGVuOworICAgICAgICBwdHIgKz0gYnl0ZXNXcml0dGVuOworICAgIH0KKworICAgIGZmbHVz
aChzdGRvdXQpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFy
ZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0
cykKK3sKKyAgICBRSW1hZ2UgaW1hZ2U7CisgICAgaWYgKFBsYXRmb3JtV2ViVmlldzo6d2luZG93
U25hcHNob3RFbmFibGVkKCkpIHsKKyAgICAgICAgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUltYWdl
KFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT53aW5kb3dTbmFwc2hvdElt
YWdlKCkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBpbWFnZSA9IFdLSW1hZ2VDcmVhdGVR
SW1hZ2UoaW1hZ2VSZWYpOworCisgICAgaWYgKHJlcGFpbnRSZWN0cykgeworICAgICAgICBRSW1h
Z2UgbWFzayhpbWFnZS5zaXplKCksIGltYWdlLmZvcm1hdCgpKTsKKyAgICAgICAgbWFzay5maWxs
KFFDb2xvcigwLCAwLCAwLCAwLjY2ICogMjU1KSk7CisKKyAgICAgICAgUVBhaW50ZXIgbWFza1Bh
aW50ZXIoJm1hc2spOworICAgICAgICBtYXNrUGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBh
aW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOworICAgICAgICBzaXplX3QgY291bnQgPSBX
S0FycmF5R2V0U2l6ZShyZXBhaW50UmVjdHMpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIFdLUmVjdCB3a1JlY3QgPSBXS1JlY3RHZXRW
YWx1ZShzdGF0aWNfY2FzdDxXS1JlY3RSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChyZXBhaW50
UmVjdHMsIGkpKSk7CisgICAgICAgICAgICBRUmVjdEYgcmVjdCh3a1JlY3Qub3JpZ2luLngsIHdr
UmVjdC5vcmlnaW4ueSwgd2tSZWN0LnNpemUud2lkdGgsIHdrUmVjdC5zaXplLmhlaWdodCk7Cisg
ICAgICAgICAgICBtYXNrUGFpbnRlci5maWxsUmVjdChyZWN0LCBRdDo6dHJhbnNwYXJlbnQpOwor
ICAgICAgICB9CisKKyAgICAgICAgUVBhaW50ZXIgcGFpbnRlcigmaW1hZ2UpOworICAgICAgICBw
YWludGVyLmRyYXdJbWFnZShpbWFnZS5yZWN0KCksIG1hc2spOworICAgIH0KKworICAgIFFDcnlw
dG9ncmFwaGljSGFzaCBoYXNoKFFDcnlwdG9ncmFwaGljSGFzaDo6TWQ1KTsKKyAgICBmb3IgKHVu
c2lnbmVkIHJvdyA9IDA7IHJvdyA8IGltYWdlLmhlaWdodCgpOyArK3JvdykKKyAgICAgICAgaGFz
aC5hZGREYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGltYWdlLmNvbnN0U2Nhbkxp
bmUocm93KSksIGltYWdlLmJ5dGVzUGVyTGluZSgpKTsKKworICAgIFFCeXRlQXJyYXkgYWN0dWFs
SGFzaCA9IGhhc2gucmVzdWx0KCkudG9IZXgoKTsKKyAgICBBU1NFUlQoYWN0dWFsSGFzaC5zaXpl
KCkgPT0gMzIpOworICAgIGlmICghY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJl
c3VsdHMoYWN0dWFsSGFzaCkpIHsKKyAgICAgICAgaW1hZ2Uuc2V0VGV4dCgiY2hlY2tzdW0iLCBh
Y3R1YWxIYXNoKTsKKyAgICAgICAgZHVtcEltYWdlKGltYWdlKTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJL
aXRUZXN0UnVubmVyLnFyYyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1
bm5lci5xcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFkMTYzYQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5l
ci5xcmMKQEAgLTAsMCArMSw1IEBACis8UkNDPgorICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvIj4K
KyAgICAgICAgPGZpbGU+cmVzb3VyY2VzL3VzZXIuY3NzPC9maWxlPgorICAgIDwvcXJlc291cmNl
PgorPC9SQ0M+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L21haW4uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hYzBlZTI0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9xdC9tYWluLmNwcApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlF0VGVzdFN1cHBvcnQuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJv
bGxlci5oIgorI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorCisjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpZiAhZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoUV9PU19VTklYKQorI2luY2x1ZGUg
PHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxRQXBw
bGljYXRpb24+CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRVGltZXI+CisKK2NsYXNz
IExhdW5jaGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisKK3B1YmxpYzoKKyAg
ICBMYXVuY2hlcihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCisgICAgICAgIDogbV9hcmdjKGFyZ2Mp
CisgICAgICAgICwgbV9hcmd2KGFyZ3YpCisgICAgeworICAgIH0KKworICAgIH5MYXVuY2hlcigp
CisgICAgeworICAgICAgICBkZWxldGUgbV9jb250cm9sbGVyOworICAgIH0KKworcHVibGljIFFf
U0xPVFM6CisgICAgdm9pZCBsYXVuY2goKQorICAgIHsKKyAgICAgICAgbV9jb250cm9sbGVyID0g
bmV3IFdUUjo6VGVzdENvbnRyb2xsZXIobV9hcmdjLCBjb25zdF9jYXN0PGNvbnN0IGNoYXIqKj4o
bV9hcmd2KSk7CisgICAgICAgIFFBcHBsaWNhdGlvbjo6ZXhpdCgpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBXVFI6OlRlc3RDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CisgICAgaW50IG1fYXJn
YzsKKyAgICBjaGFyKiogbV9hcmd2OworfTsKKworI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgZGVm
aW5lZChRX09TX1VOSVgpCitzdGF0aWMgdm9pZCBzaWdjb250SGFuZGxlcihpbnQpCit7Cit9Cisj
ZW5kaWYKKwordm9pZCBtZXNzYWdlSGFuZGxlcihRdE1zZ1R5cGUgdHlwZSwgY29uc3QgUU1lc3Nh
Z2VMb2dDb250ZXh0JiwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAodHlwZSA9
PSBRdENyaXRpY2FsTXNnKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHFQcmlu
dGFibGUobWVzc2FnZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRG8gbm90
aGluZworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisjaWYgIWRlZmlu
ZWQoTkRFQlVHKSAmJiBkZWZpbmVkKFFfT1NfVU5JWCkKKyAgICBpZiAocWdldGVudigiUVRfV0VC
S0lUX1BBVVNFX1VJX1BST0NFU1MiKSA9PSAiMSIpIHsKKyAgICAgICAgc3RydWN0IHNpZ2FjdGlv
biBuZXdBY3Rpb24sIG9sZEFjdGlvbjsKKyAgICAgICAgbmV3QWN0aW9uLnNhX2hhbmRsZXIgPSBz
aWdjb250SGFuZGxlcjsKKyAgICAgICAgc2lnZW1wdHlzZXQoJm5ld0FjdGlvbi5zYV9tYXNrKTsK
KyAgICAgICAgbmV3QWN0aW9uLnNhX2ZsYWdzID0gMDsKKyAgICAgICAgc2lnYWN0aW9uKFNJR0NP
TlQsICZuZXdBY3Rpb24sICZvbGRBY3Rpb24pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBh
dXNpbmcgVUkgcHJvY2VzcywgcGxlYXNlIGF0dGFjaCB0byBQSUQgJWQgYW5kIHNlbmQgc2lnbmFs
IFNJR0NPTlQuLi4gIiwgZ2V0cGlkKCkpOworICAgICAgICBwYXVzZSgpOworICAgICAgICBzaWdh
Y3Rpb24oU0lHQ09OVCwgJm9sZEFjdGlvbiwgMCk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
IE9LXG4iKTsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIFN1cHByZXNzIGRlYnVnIG91dHB1dCBm
cm9tIFF0IGlmIG5vdCBzdGFydGVkIHdpdGggLS12ZXJib3NlCisgICAgYm9vbCBzdXBwcmVzc1F0
RGVidWdPdXRwdXQgPSB0cnVlOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJnYzsgKytpKSB7
CisgICAgICAgIGlmICghcXN0cmNtcChhcmd2W2ldLCAiLS12ZXJib3NlIikpIHsKKyAgICAgICAg
ICAgIHN1cHByZXNzUXREZWJ1Z091dHB1dCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBIYXMgdG8gYmUgZG9uZSBiZWZvcmUgUUFwcGxpY2F0
aW9uIGlzIGNvbnN0cnVjdGVkIGluIGNhc2UKKyAgICAvLyBRQXBwbGljYXRpb24gaXRzZWxmIHBy
b2R1Y2VzIGRlYnVnIG91dHB1dC4KKyAgICBpZiAoc3VwcHJlc3NRdERlYnVnT3V0cHV0KSB7Cisg
ICAgICAgIHFJbnN0YWxsTWVzc2FnZUhhbmRsZXIobWVzc2FnZUhhbmRsZXIpOworICAgICAgICBp
ZiAocWdldGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9QUk9DRVNTX09VVFBVVCIpLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHFwdXRlbnYoIlFUX1dFQktJVF9TVVBQUkVTU19XRUJfUFJPQ0VT
U19PVVRQVVQiLCAiMSIpOworICAgIH0KKworICAgIHFwdXRlbnYoIlFUX1dFQktJVF9USEVNRV9O
QU1FIiwgInFzdHlsZSIpOworCisgICAgV2ViS2l0OjpRdFRlc3RTdXBwb3J0Ojppbml0aWFsaXpl
VGVzdEZvbnRzKCk7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2V0QXR0cmlidXRlKFF0OjpBQV9V
c2U5NkRwaSwgdHJ1ZSk7CisKKyAgICBRQXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOworICAg
IExhdW5jaGVyIGxhdW5jaGVyKGFyZ2MsIGFyZ3YpOworICAgIFFUaW1lcjo6c2luZ2xlU2hvdCgw
LCAmbGF1bmNoZXIsIFNMT1QobGF1bmNoKCkpKTsKKyAgICByZXR1cm4gYXBwLmV4ZWMoKTs7Cit9
CisKKyNpbmNsdWRlICJtYWluLm1vYyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvcXQvcmVzb3VyY2VzL3VzZXIuY3NzIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9yZXNv
dXJjZXMvdXNlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYzOTgx
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvcmVzb3VyY2Vz
L3VzZXIuY3NzCkBAIC0wLDAgKzEsNCBAQAorYm9keSB7CisgICAgZm9udC1zaXplOiA1MHB4Owor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMCk7Cit9ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURl
bGVnYXRlLmNwcCBiL1Rvb2xzL1dpbkxhdW5jaGVyL1ByaW50V2ViVUlEZWxlZ2F0ZS5jcHAKaW5k
ZXggNzk5ZmE2Zi4uNzIwYzdhMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRX
ZWJVSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdh
dGUuY3BwCkBAIC0xLDcgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQnJl
bnQgRnVsZ2hhbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
bGV4IENocmlzdGVuc2VuLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCwzMiArMzcsNiBAQAogCiBzdGF0aWMgY29uc3QgaW50IE1BUkdJ
TiA9IDIwOwogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFByaW50V2ViVUlEZWxlZ2F0ZTo6
Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0KElXZWJWaWV3KiwgSVdlYlVSTFJlcXVlc3QqIHJlcXVl
c3QsIElXZWJWaWV3KiopCi17Ci0gICAgaWYgKCFyZXF1ZXN0KQotICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwotCi0gICAgVENIQVIgZXhlY3V0YWJsZVBhdGhbTUFYX1BBVEhdOwotICAgIERXT1JE
IGxlbmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWUoR2V0TW9kdWxlSGFuZGxlKDApLCBleGVjdXRh
YmxlUGF0aCwgQVJSQVlTSVpFKGV4ZWN1dGFibGVQYXRoKSk7Ci0gICAgaWYgKCFsZW5ndGgpCi0g
ICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICBfYnN0cl90IHVybDsKLSAgICBIUkVTVUxUIGhy
ID0gcmVxdWVzdC0+VVJMKCZ1cmwuR2V0QlNUUigpKTsKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAgIHN0ZDo6d3N0cmluZyBjb21tYW5kID0gc3RkOjp3
c3RyaW5nKEwiXCIiKSArIGV4ZWN1dGFibGVQYXRoICsgTCJcIiAiICsgKGNvbnN0IHdjaGFyX3Qq
KXVybDsKLQotICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcHJvY2Vzc0luZm9ybWF0aW9uOwotICAg
IFNUQVJUVVBJTkZPVyBzdGFydHVwSW5mbzsKLSAgICBtZW1zZXQoJnN0YXJ0dXBJbmZvLCAwLCBz
aXplb2Yoc3RhcnR1cEluZm8pKTsKLSAgICBpZiAoITo6Q3JlYXRlUHJvY2Vzc1coMCwgKExQV1NU
Uiljb21tYW5kLmNfc3RyKCksIDAsIDAsIDAsIDAsIDAsIDAsICZzdGFydHVwSW5mbywgJnByb2Nl
c3NJbmZvcm1hdGlvbikpCi0gICAgICAgIHJldHVybiBFX0ZBSUw7Ci0KLSAgICByZXR1cm4gU19P
SzsKLX0KLQogSFJFU1VMVCBQcmludFdlYlVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJ
RCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQogewogICAgICpwcHZPYmplY3QgPSAwOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmggYi9Ub29scy9XaW5M
YXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuaAppbmRleCBkNGQ1MjIzLi45NzQ5YTk4IDEwMDY0
NAotLS0gYS9Ub29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuaAorKysgYi9Ub29s
cy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7CiAg
ICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpOwogCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVz
dChJV2ViVmlldyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlZpZXcqKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVdlYlZpZXdXaXRoUmVxdWVzdChJV2ViVmll
dyosIElXZWJVUkxSZXF1ZXN0KiwgSVdlYlZpZXcqKikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlZpZXdTaG93KElXZWJWaWV3
KikgeyByZXR1cm4gRV9OT1RJTVBMOyB9CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlZpZXdDbG9zZShJV2ViVmlldyopIHsgcmV0dXJuIEVfTk9USU1QTDsgfQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJWaWV3Rm9jdXMoSVdlYlZpZXcq
KSB7IHJldHVybiBFX05PVElNUEw7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlLy5xbWFrZS5j
YWNoZSBiL1Rvb2xzL3FtYWtlLy5xbWFrZS5jYWNoZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS8ucW1ha2UuY29uZiBi
L1Rvb2xzL3FtYWtlLy5xbWFrZS5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjJmMGRjODkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS8ucW1ha2UuY29uZgpA
QCAtMCwwICsxLDIgQEAKKyMgVGhpcyBmaWxlIGlzIG9ubHkgaGVyZSB0byBpc29sYXRlIHRoZSBj
b25maWd1cmUgcHJvamVjdAorIyBmcm9tIHRoZSByZXN0IG9mIHRoZSB0cmVlLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvcW1ha2UvUkVBRE1FIGIvVG9vbHMvcW1ha2UvUkVBRE1FCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYzE2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9x
bWFrZS9SRUFETUUKQEAgLTAsMCArMSw3OCBAQAorVGhlIHFtYWtlIGJ1aWxkIHN5c3RlbQorPT09
PT09PT09PT09PT09PT09PT09PQorCitCYXNpYyBzdHJ1Y3R1cmUKKy0tLS0tLS0tLS0tLS0tLQor
CitUaGUgcW1ha2UgYnVpbGQgaXMgc3BsaXQgaW50byB0aHJlZSBkaWZmZXJlbnQgZmlsZSB0eXBl
czoKKworICAgICogLnBybyBmaWxlczogVGhlc2UgZmlsZXMgcmVwcmVzZW50IHRvcCBsZXZlbCB0
YXJnZXRzIHRoYXQgY2FuIGJlCisgICAgYnVpbHQgaW5kaXZpZHVhbGx5LCBvciBhIGNvbGxlY3Rp
b24gb2Ygc3ViLXRhcmdldHMgdXNlZCBmb3IKKyAgICBvcmdhbml6aW5nIHRoZSBwcm9qZWN0Lgor
CisgICAgKiAucHJpIGZpbGVzOiBUaGVzZSBmaWxlcyBhcmUgaW5jbHVkZWQgZnJvbSB0b3AgbGV2
ZWwgdGFyZ2V0cywKKyAgICBhbmQgcmVwcmVzZW50ICdpbXBsZW1lbnRhdGlvbiBkZXRhaWxzJyBv
ZiBob3cgdGhlIHRhcmdldCBpcyBidWlsdC4KKworICAgICogLnByZiBmaWxlczogVGhlc2UgZmls
ZXMgdGFrZSBjYXJlIG9mIGdlbmVyaWMgYnVpbGQgcnVsZXMKKyAgICB0aGF0IGFwcGxpZXMgdG8g
YWxsIHRhcmdldHMsIG9yIHNwZWNpZmljICdmZWF0dXJlcycgdGhhdCBjYW4KKyAgICBiZSBsb2Fk
ZWQgb24gZGVtYW5kLgorCitUaGUgZmlyc3QgdHdvIGZpbGUgdHlwZXMgYXJlIHNwcmVhZCB0aHJv
dWdob3V0IHRoZSBzb3VyY2UgdHJlZSwgd2hpbGUKK3RoZSAucHJmIGZpbGVzIGFyZSBsb2NhdGVk
IGluICdUb29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzJyBhbmQgd2lsbAorZ2V0IGxvYWRlZCBi
eSBxbWFrZSBiYXNlZCBvbiBzZXR0aW5nIHRoZSBRTUFLRVBBVEggZW52aXJvbm1lbnQgdmFyaWFi
bGUuCisKKworUm9vdCBwcm9qZWN0IGZpbGUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSByb290
IHByb2plY3QgZmlsZSAnV2ViS2l0LnBybycgaXMgaGFuZHkgYm90aCBmb3IgbG9hZGluZyBXZWJL
aXQKK2luIFF0IENyZWF0b3IsIGFuZCBmb3IgYnVpbGRpbmcgUXRXZWJLaXQuIE5vcm1hbGx5IHlv
dSB3aWxsIGJ1aWxkCit1c2luZyBidWlsZC13ZWJraXQsIGJ1dCB5b3UgY2FuIGFsc28gcnVuIHFt
YWtlIGRpcmVjdGx5IG9uIHRoZSByb290Citwcm9qZWN0IGZpbGUuIEp1c3QgbWFrZSBzdXJlIHRv
IHNldCBRTUFLRVBBVEggZmlyc3QsIHNvIHRoYXQgdGhlCitjdXN0b20gbWtzcGVjcyBhcmUgcGlj
a2VkIHVwLgorCitGZWF0dXJlIGZpbGVzCistLS0tLS0tLS0tLS0tCisKK0ZlYXR1cmUgZmlsZXMg
KC5wcmYgZmlsZXMpIGFyZSB1c2VkIGluIHRoZSBmb2xsb3dpbmcgd2F5czoKKworICAgIDEuIEV2
ZXJ5IHRpbWUgcW1ha2UgcGFyc2VzIGEgcHJvamVjdCBmaWxlLCBpdCB3aWxsIGZpcnN0IGxvYWQK
KyAgICBhIHNwZWNpYWwgZmVhdHVyZSBmaWxlIGNhbGxlZCAnZGVmYXVsdHNfcHJlLnByZicsIHRo
ZW4gcGFyc2UKKyAgICB0aGUgcHJvamVjdCBmaWxlLCBhbmQgdGhlbiBsb2FkIGFub3RoZXIgc3Bl
Y2lhbCBmZWF0dXJlIGZpbGUKKyAgICBjYWxsZWQgJ2RlZmF1bHRzX3Bvc3QucHJmJy4gV2UgdXNl
IHRoZXNlIHNwZWNpYWwgZmlsZXMgdG8gc2V0CisgICAgZGVmYXVsdCBvcHRpb25zIHRoYXQgYWxs
IHByb2plY3QgZmlsZXMgdXNlLCBleHBvc2UgYSBmZXcgaGFuZHkKKyAgICBmdW5jdGlvbnMsIGFu
ZCB0byBwb3N0LXByb2Nlc3MgdGhlIGJ1aWxkIGNvbmZpZyBiYXNlZCBvbiB3aGF0CisgICAgdGhl
IHByb2plY3QgZmlsZSBkaWQuCisKKyAgICAyLiBEZXBlbmRlbmNpZXMgb24gb3RoZXIgdGFyZ2V0
cyAobGlicmFyaWVzKSBhcmUgZGVjbGFyZWQgYnkKKyAgICB1c2luZyBDT05GSUcrPW90aGVydGFy
Z2V0LiBUaGlzIHdpbGwgYWRkIHRoZSBjb3JyZWN0IGluY2x1ZGUKKyAgICBwYXRocyBhbmQgbGlu
a2VyIG9wdGlvbnMgdG8gdXNlIHRoZSBsaWJyYXJ5LgorCisgICAgMy4gT3B0aW9uYWwgZmVhdHVy
ZXMgY2FuIGJlIGVuYWJsZWQgYnkgcGFzc2luZyBDT05GSUcrPWZvbyBvbgorICAgIHRoZSBjb21t
YW5kIGxpbmUgd2hlbiBydW5uaW5nIHFtYWtlIG9uIHRoZSByb290IHByb2plY3QgZmlsZSwKKyAg
ICAob3IgYnkgcGFzc2luZyAtLW1ha2UtYXJncz0iQ09ORklHKz1mb28iIHRvIGJ1aWxkLXdlYmtp
dCkuIEZvcgorICAgIGV4YW1wbGUgJ0NPTkZJRys9dmFsZ3JpbmQnLgorCisKK0Rlcml2ZWQgc291
cmNlcworLS0tLS0tLS0tLS0tLS0tCisKK1NvbWUgdGFyZ2V0cyAoSmF2YVNjcmlwdENvcmUsIFdl
YkNvcmUsIGV0YykgcmVseSBvbiBnZW5lcmF0ZWQgZmlsZXMsCisoYWthLiBkZXJpdmVkIHNvdXJj
ZXMpLiBUaGVzZSBtdXN0IGJlIGdlbmVyYXRlZCBiZWZvcmUgdGhlIHJlYWwgdGFyZ2V0CitpcyBi
dWlsdC4gVGhpcyBpcyBhY2hpZXZlZCBieSBzcGxpdHRpbmcgdGhlIHRhcmdldCB1cCBpbnRvIHR3
byBzdWItCitwcm9qZWN0cywgb25lIGZvciB0aGUgZGVyaXZlZCBzb3VyY2VzIGFuZCBvbmUgZm9y
IHRoZSByZWFsIHRhcmdldCwKK2FuZCB0ZWxsaW5nIHFtYWtlIHRvIGJ1aWxkIHRoZW0gaW4gb3Jk
ZXIgdXNpbmcgQ09ORklHICs9IG9yZGVyZWQuCisKKworVGhlIFdFQktJVCB2YXJpYWJsZQorLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY3VzdG9tIHFtYWtlIHZhcmlhYmxlICdXRUJLSVQnIGlz
IHVzZWQgZm9yIHNpZ25hbGluZyB0aGF0IGEKK3RhcmdldCBkZXBlbmRzIGluIHNvbWUgd2F5IG9u
IG90aGVyIHN1YnByb2plY3Qgb2YgdGhlIFdlYktpdAorcHJvamVjdC4gRm9yIG5vdyB0aGlzIGlz
IGxpbWl0ZWQgdG8gdGhlIHNldCBvZiBpbnRlcm1lZGlhdGUKK2xpYnJhcmllczogd3RmLCBqYXZh
c2NyaXB0Y29yZSwgd2ViY29yZSwgYW5kIHdlYmtpdDIuCisKK0FkZGluZyBhIGRlcGVuZGVuY3kg
cmVzdWx0cyBpbiBhZGRpdGlvbmFsIGluY2x1ZGUgcGF0aHMgYmVpbmcKK2F2YWlsYWJsZSwgYW5k
IHBvdGVudGlhbGx5IGxpbmtpbmcgdG8gdGhlIGxpYnJhcnkuIFRoaXMgaXMKK2RlY2lkZWQgYnkg
dGhlIGJ1aWxkIHN5c3RlbSBiYXNlZCBvbiBjb25kaXRpb25zIHN1Y2ggYXMgd2hhdAora2luZCBv
ZiB0YXJnZXQgaXMgYmVpbmcgYnVpbHQgYW5kIHRoZSBnZW5lcmFsIGJ1aWxkIGNvbmZpZy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9SRUFETUUgYi9Ub29scy9xbWFrZS9j
b25maWcudGVzdHMvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRh
MzcwODgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvUkVBRE1F
CkBAIC0wLDAgKzEsNCBAQAorVGhpcyBkaXJlY3RvcnkgaXMgdXNlZCBmb3IgY29uZmlndXJlLXN0
eWxlIGNoZWNrcyB0aGF0IGFyZSBydW4gYnkKK3N5bmNxdCBkdXJpbmcgcHJvY2Vzc2luZyBvZiBj
b25maWd1cmUucHJvIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorCitOb3RlOiBUaGlzIGZlYXR1
cmUgaXMgYXZhaWxhYmxlIGluIFF0IDUgb25seS4KZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL2Nv
bmZpZy50ZXN0cy9mb250Y29uZmlnL2ZvbnRjb25maWcuY3BwIGIvVG9vbHMvcW1ha2UvY29uZmln
LnRlc3RzL2ZvbnRjb25maWcvZm9udGNvbmZpZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmQ0M2VkMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL2NvbmZp
Zy50ZXN0cy9mb250Y29uZmlnL2ZvbnRjb25maWcuY3BwCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgVW5pdmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29u
ZmlnLmg+CisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIEZjSW5pdCgpOworfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2ZvbnRjb25maWcvZm9udGNvbmZpZy5w
cm8gYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvZm9udGNvbmZpZy9mb250Y29uZmlnLnBybwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzA2ZmQxCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2ZvbnRjb25maWcvZm9udGNvbmZpZy5wcm8K
QEAgLTAsMCArMSw0IEBACitDT05GSUcgLT0gcXQKK1NPVVJDRVMgPSBmb250Y29uZmlnLmNwcAor
Q09ORklHICs9IGxpbmtfcGtnY29uZmlnCitQS0dDT05GSUcgKz0gZm9udGNvbmZpZwpkaWZmIC0t
Z2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2djY2RlcGVuZHMvZW1wdHkuY3BwIGIvVG9v
bHMvcW1ha2UvY29uZmlnLnRlc3RzL2djY2RlcGVuZHMvZW1wdHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL2Nv
bmZpZy50ZXN0cy9nY2NkZXBlbmRzL2djY2RlcGVuZHMucHJvIGIvVG9vbHMvcW1ha2UvY29uZmln
LnRlc3RzL2djY2RlcGVuZHMvZ2NjZGVwZW5kcy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uY2QwYTgxYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL2NvbmZp
Zy50ZXN0cy9nY2NkZXBlbmRzL2djY2RlcGVuZHMucHJvCkBAIC0wLDAgKzEsMzQgQEAKK1RFTVBM
QVRFID0gYXV4CitPQkpFQ1RTX0RJUiA9IG9iagorUU1BS0VfQ1hYRkxBR1MgKz0gLU1ECisKK2Jh
c2VfZmlsZW5hbWUgPSBlbXB0eQorb2JqZWN0X2ZpbGUgPSAkJE9CSkVDVFNfRElSLyQke2Jhc2Vf
ZmlsZW5hbWV9Lm8KK2RlcHNfZmlsZW5hbWUgPSAkJHtiYXNlX2ZpbGVuYW1lfS5kCisKK1NPVVJD
RVMgKz0gJCR7YmFzZV9maWxlbmFtZX0uY3BwCisKK3Rlc3QuY29tbWFuZHMgPSBcCisgICAgIyBF
YXJsaWVyIHRlYW1idWlsZGVyIGFuZCBpY2VjcmVhbSB2ZXJzaW9ucyB3b3VsZCBub3QKKyAgICAj
IHJlc3BlY3QgdGhlIC1vIGFyZ3VtZW50IGZvciB0aGUgLmQgZmlsZSwgc28gdGhlIGZpbGUKKyAg
ICAjIHdvdWxkIGVuZCB1cCBpbiB0aGUgcm9vdCBidWlsZCBkaXIuCisgICAgdGVzdCAhIC1mICQk
e2RlcHNfZmlsZW5hbWV9ICYmIFwKKyAgICBcCisgICAgIyBCdXQgaXQgc2hvdWxkIGVuZCB1cCBp
biB0aGUgT0JKRUNUU19ESVIKKyAgICB0ZXN0IC1mICQkT0JKRUNUU19ESVIvJCR7ZGVwc19maWxl
bmFtZX0gJiYgXAorICAgIFwKKyAgICAjIEljZWNyZWFtIDAuOS43IGFuZCBlYXJsaWVyIGRvZXMg
bm90IGVuc3VyZSB0aGF0IHRoZQorICAgICMgdGFyZ2V0IHJ1bGUgbWF0Y2hlcyB0aGUgcGF0aCBv
ZiB0aGUgLm8gZmlsZSwgc2luY2UKKyAgICAjIHRoZSBmaWxlIGlzIGNvbXBpbGVkIGludG8gdGhl
IGN1cnJlbnQgZGlyIGFuZCB0aGVuCisgICAgIyBtb3ZlZC4gVmVyaWZ5IHRoYXQgd2UgZG9uJ3Qg
aGl0IHRoYXQgY2FzZS4KKyAgICBncmVwIC1xIFwiJCR7b2JqZWN0X2ZpbGV9OlwiICQkT0JKRUNU
U19ESVIvJCR7ZGVwc19maWxlbmFtZX0gJiYgXAorICAgIFwKKyAgICAjIElmIGV2ZXJ5dGhpbmcg
aXMgYWxsIHJpZ2h0IHdlIG1hcmsgdGhlIHRlc3QgYXMgc3VjY2VlZGVkCisgICAgZWNobyBzdWNj
ZXNzID4gJCRiYXNlbmFtZShQV0QpCisKK3Rlc3QuZGVwZW5kcyA9ICQke29iamVjdF9maWxlfQor
UU1BS0VfRVhUUkFfVEFSR0VUUyArPSB0ZXN0CisKK2RlZmF1bHQudGFyZ2V0ID0gYWxsCitkZWZh
dWx0LmRlcGVuZHMgKz0gdGVzdAorUU1BS0VfRVhUUkFfVEFSR0VUUyArPSBkZWZhdWx0CmRpZmYg
LS1naXQgYS9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvZ2x4L2dseC5jcHAgYi9Ub29scy9xbWFr
ZS9jb25maWcudGVzdHMvZ2x4L2dseC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOWRjZmQxNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0
cy9nbHgvZ2x4LmNwcApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgPEdML2dseC5oPgorCitpbnQgbWFpbihpbnQsIGNoYXIqKikK
K3sKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOworICAgIGludCBpdGVt
cyA9IDA7CisgICAgKHZvaWQpZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSwgRGVmYXVsdFNjcmVl
bihkaXNwbGF5KSwgMCwgJml0ZW1zKTsKKyAgICBYQ2xvc2VEaXNwbGF5KGRpc3BsYXkpOworCisg
ICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvZ2x4
L2dseC5wcm8gYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvZ2x4L2dseC5wcm8KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU4MTAwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9nbHgvZ2x4LnBybwpAQCAtMCwwICsxLDQgQEAKK1NPVVJD
RVMgPSBnbHguY3BwCitPQkpFQ1RTX0RJUiA9IG9iagorTElCUyArPSAtbFgxMSAtbEdMCisKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9nbnVsZC9nbnVsZC5wcm8gYi9Ub29s
cy9xbWFrZS9jb25maWcudGVzdHMvZ251bGQvZ251bGQucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmMyMzlmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9j
b25maWcudGVzdHMvZ251bGQvZ251bGQucHJvCkBAIC0wLDAgKzEsNCBAQAorVEVNUExBVEUgPSBh
cHAKK1RBUkdFVCA9IGdudWxkCitTT1VSQ0VTID0gbWFpbi5jcHAKK1FNQUtFX0xGTEFHUyArPSAt
V2wsLS1uby1rZWVwLW1lbW9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3Rz
L2dudWxkL21haW4uY3BwIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2dudWxkL21haW4uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYTEzMzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvZ251bGQvbWFpbi5jcHAKQEAgLTAsMCAr
MSw1IEBACisKK2ludCBtYWluKCkKK3sKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rv
b2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJYY29tcG9zaXRlL2xpYlhjb21wb3NpdGUuY3BwIGIv
VG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYlhjb21wb3NpdGUvbGliWGNvbXBvc2l0ZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBlMTA1NAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJYY29tcG9zaXRlL2xpYlhjb21wb3Np
dGUuY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgorCitpbnQgbWFpbihp
bnQsIGNoYXIqKikKK3sKKyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOwor
ICAgIGludCBtYWpvclZlcnNpb247CisgICAgaW50IG1pbm9yVmVyc2lvbjsKKyAgICAodm9pZClY
Q29tcG9zaXRlUXVlcnlWZXJzaW9uKGRpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNp
b24pOworICAgIFhDbG9zZURpc3BsYXkoZGlzcGxheSk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGliWGNvbXBvc2l0ZS9saWJYY29tcG9z
aXRlLnBybyBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJYY29tcG9zaXRlL2xpYlhjb21w
b3NpdGUucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YzVjMjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGliWGNvbXBvc2l0ZS9s
aWJYY29tcG9zaXRlLnBybwpAQCAtMCwwICsxLDMgQEAKK1NPVVJDRVMgPSBsaWJYY29tcG9zaXRl
LmNwcAorT0JKRUNUU19ESVIgPSBvYmoKK0xJQlMgKz0gLWxYY29tcG9zaXRlIC1sWDExCmRpZmYg
LS1naXQgYS9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGliWHJlbmRlci9saWJYcmVuZGVyLmNw
cCBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJYcmVuZGVyL2xpYlhyZW5kZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMjQ1NWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGliWHJlbmRlci9saWJYcmVuZGVyLmNwcApA
QCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KKworaW50IG1haW4oaW50LCBjaGFyKiop
Cit7CisgICAgRGlzcGxheSogZGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKKyAgICBpbnQgZXZl
bnRCYXNlcDsKKyAgICBpbnQgZXJyb3JCYXNlcDsKKyAgICBpZiAoIVhSZW5kZXJRdWVyeUV4dGVu
c2lvbihkaXNwbGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICByZXR1cm4g
LTE7CisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL2NvbmZpZy50
ZXN0cy9saWJYcmVuZGVyL2xpYlhyZW5kZXIucHJvIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3Rz
L2xpYlhyZW5kZXIvbGliWHJlbmRlci5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYjNjYjFlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0
cy9saWJYcmVuZGVyL2xpYlhyZW5kZXIucHJvCkBAIC0wLDAgKzEsMyBAQAorU09VUkNFUyA9IGxp
YlhyZW5kZXIuY3BwCitPQkpFQ1RTX0RJUiA9IG9iagorTElCUyArPSAtbFhyZW5kZXIgLWxYMTEK
ZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJ3ZWJwL2xpYndlYnAuY3Bw
IGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYndlYnAvbGlid2VicC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0NjAzZAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJ3ZWJwL2xpYndlYnAuY3BwCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFpvbHRhbiBIb3J2YXRoICh6b2x0YW5Ad2Via2l0Lm9y
ZykgMjAxMiBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJ3ZWJwL2RlY29kZS5oIgorCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICBXZWJQ
RGVjb2RlckNvbmZpZyBjb25maWc7CisgICAgV2ViUEluaXREZWNvZGVyQ29uZmlnKCZjb25maWcp
OworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3Rz
L2xpYndlYnAvbGlid2VicC5wcm8gYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGlid2VicC9s
aWJ3ZWJwLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjU3MjUyCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYndlYnAvbGlid2Vi
cC5wcm8KQEAgLTAsMCArMSwzIEBACitTT1VSQ0VTID0gbGlid2VicC5jcHAKK09CSkVDVFNfRElS
ID0gb2JqCitMSUJTICs9IC1sd2VicApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRl
c3RzL2xpYnhtbDIvbGlieG1sMi5jcHAgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGlieG1s
Mi9saWJ4bWwyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTE3YjVi
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYnhtbDIvbGli
eG1sMi5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBVbml2
ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlIDxsaWJ4bWwveG1scmVhZGVyLmg+CisKK2ludCBtYWluKGludCwgY2hhcioq
KQoreworICAgIHhtbFRleHRSZWFkZXJTZXR1cCgwLCAwLCAwLCAwLCAwKTsKKyAgICByZXR1cm4g
MDsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYnhtbDIvbGli
eG1sMi5wcm8gYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGlieG1sMi9saWJ4bWwyLnBybwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDcyOTQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYnhtbDIvbGlieG1sMi5wcm8KQEAgLTAs
MCArMSw5IEBACitDT05GSUcgLT0gcXQKK1NPVVJDRVMgPSBsaWJ4bWwyLmNwcAorbWFjIHsKKyAg
ICBJTkNMVURFUEFUSCArPSAvdXNyL2luY2x1ZGUvbGlieG1sMgorICAgIExJQlMgKz0gLWx4bWwy
Cit9IGVsc2UgeworICAgIFBLR0NPTkZJRyArPSBsaWJ4bWwtMi4wCisgICAgQ09ORklHICs9IGxp
bmtfcGtnY29uZmlnCit9CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGli
eHNsdC9saWJ4c2x0LmNwcCBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJ4c2x0L2xpYnhz
bHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZGVkYjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGlieHNsdC9saWJ4c2x0LmNw
cApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkg
b2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgPGxpYnhzbHQveHNsdHV0aWxzLmg+CisKK2ludCBtYWluKGludCwgY2hhcioqKQorewor
ICAgIHhzbEFkZENhbGwoMCwgMCk7CisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL1Rv
b2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9saWJ4c2x0L2xpYnhzbHQucHJvIGIvVG9vbHMvcW1ha2Uv
Y29uZmlnLnRlc3RzL2xpYnhzbHQvbGlieHNsdC5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTk0MzQ4NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL2NvbmZp
Zy50ZXN0cy9saWJ4c2x0L2xpYnhzbHQucHJvCkBAIC0wLDAgKzEsOSBAQAorQ09ORklHIC09IHF0
CitTT1VSQ0VTID0gbGlieHNsdC5jcHAKK21hYyB7CisgICAgSU5DTFVERVBBVEggKz0gL3Vzci9p
bmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIKKyAgICBMSUJTICs9IC1seHNsdAor
fSBlbHNlIHsKKyAgICBQS0dDT05GSUcgKz0gbGlieHNsdAorICAgIENPTkZJRyArPSBsaW5rX3Br
Z2NvbmZpZworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYnpsaWIv
bGliemxpYi5jcHAgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGliemxpYi9saWJ6bGliLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmVhYjU3Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzL2xpYnpsaWIvbGliemxpYi5jcHAKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlIDx6bGliLmg+CisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgICh2b2lkKXpsaWJW
ZXJzaW9uKCk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9jb25m
aWcudGVzdHMvbGliemxpYi9saWJ6bGliLnBybyBiL1Rvb2xzL3FtYWtlL2NvbmZpZy50ZXN0cy9s
aWJ6bGliL2xpYnpsaWIucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgx
NmE0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9jb25maWcudGVzdHMvbGliemxp
Yi9saWJ6bGliLnBybwpAQCAtMCwwICsxLDMgQEAKK1NPVVJDRVMgPSBsaWJ6bGliLmNwcAorT0JK
RUNUU19ESVIgPSBvYmoKK0xJQlMgKz0gLWx6CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9kdW1w
LWZlYXR1cmVzLnBsIGIvVG9vbHMvcW1ha2UvZHVtcC1mZWF0dXJlcy5wbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDI2NDMwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
cW1ha2UvZHVtcC1mZWF0dXJlcy5wbApAQCAtMCwwICsxLDI3IEBACisjIS91c3IvYmluL3Blcmwg
LXcKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEZlYXR1cmVMaXN0OworCitm
b3JlYWNoIG15ICRmZWF0dXJlIChnZXRGZWF0dXJlT3B0aW9uTGlzdCgpKQoreworICAgIG5leHQg
aWYgJGZlYXR1cmUtPnsnb3B0aW9uJ30gZXEgJ3N5c3RlbS1tYWxsb2MnOworCisgICAgbXkgJGRl
c2MgPSAkZmVhdHVyZS0+eydkZXNjJ307CisgICAgJGRlc2MgPX4gcy9eVG9nZ2xlXHMvLzsKKyAg
ICAkZGVzYyA9fiBzL1xzc3VwcG9ydCQvLzsKKyAgICAkZGVzYyA9IHVjZmlyc3QoJGRlc2MpOwor
CisgICAgJGRlc2MgLj0gJyAnIC4gJy4nIHggKDMwIC0gbGVuZ3RoKCRkZXNjKSk7CisgICAgJGRl
c2MgPX4gcy9ccy9fL2c7CisKKyAgICBteSAkZGVmaW5lID0gJGZlYXR1cmUtPnsnZGVmaW5lJ307
CisgICAgJGRlZmluZSA9fiBzL15FTkFCTEVfLy87CisgICAgJGRlZmluZSA9IGxjKCRkZWZpbmUp
OworCisgICAgJGRlc2MgLj0gIj0kZGVmaW5lIjsKKworICAgIHByaW50ICIkZGVzYyAiCit9CmRp
ZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2NvbmZpZ3VyZS5wcmYgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2NvbmZpZ3VyZS5wcmYKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjI5NWY0NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvY29uZmlndXJlLnByZgpAQCAtMCwwICsxLDI3MiBAQAorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIFRoaXMgZmlsZSBkb2VzIGJhc2ljICdjb25maWd1cmUnIHN0eWxlIGNoZWNr
cyB0byBkZXRlcm1pbmUgdGhlCisjIHNldCBvZiBlbmFibGUvdXNlL2hhdmUgZGVmaW5lcyBhbmQg
dGhlaXIgdmFsdWVzLgorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2
aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoaXMgZmlsZSBpcyBy
ZWFkIGFmdGVyIC5xbWFrZS5jYWNoZSwgYnV0IGJlZm9yZSBjb21tYW5kIGxpbmUgb3B0aW9ucywK
KyMgd2hpY2ggbWVhbnMgd2UgbWlnaHQgaGF2ZSBhIGNvbmZpZyBmcm9tIGEgcHJldmlvdXMgYnVp
bGQuCisKK2xvYWQoZmVhdHVyZXMpCitsb2FkKGNvbmZpZ3VyZSkKKworV0VCS0lUX1RPT0xTX0NP
TkZJRyA9IFwKKyAgICBidWlsZF9kcnQgXAorICAgIGJ1aWxkX3d0ciBcCisgICAgYnVpbGRfaW1h
Z2VkaWZmIFwKKyAgICBidWlsZF90ZXN0X25wYXBpIFwKKyAgICBidWlsZF90ZXN0YnJvd3NlciBc
CisgICAgYnVpbGRfbWluaWJyb3dzZXIgXAorICAgIGJ1aWxkX3F0dGVzdHN1cHBvcnQKKworZGVm
aW5lVGVzdChydW5Db25maWd1cmUpIHsKKyAgICAhd2Via2l0X2NvbmZpZ3VyZWQ6IXByaW50X2Rl
ZmF1bHRzIHsKKyAgICAgICAgbG9nKCQke0VPTH1SdW5uaW5nIGNvbmZpZ3VyZSB0ZXN0cy4uLiQk
e0VPTH0kJHtFT0x9KQorICAgICAgICBRTUFLRV9DT05GSUdfVEVTVFNfRElSID0gJCRST09UX1dF
QktJVF9ESVIvVG9vbHMvcW1ha2UvY29uZmlnLnRlc3RzCisgICAgICAgIENPTkZJR19URVNUUyA9
ICQkZmlsZXMoJCRRTUFLRV9DT05GSUdfVEVTVFNfRElSLyoucHJvLCB0cnVlKQorICAgICAgICBm
b3IodGVzdCwgQ09ORklHX1RFU1RTKSB7CisgICAgICAgICAgICB0ZXN0ID0gJCRiYXNlbmFtZSh0
ZXN0KQorICAgICAgICAgICAgdGVzdCB+PSBzL1xcLnBybyQvLworICAgICAgICAgICAgcXRDb21w
aWxlVGVzdCgkJHRlc3QpCisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBDT05GSUcg
Kz0gc2tpcHBlZF9jb25maWdfdGVzdHMKKworICAgICAgICAjIFNhdmUgYW5kIHJlc2V0IGNvbmZp
Z3VyYXRpb24gZnJvbSAucW1ha2UuY2FjaGUsIHNvIHRoYXQgd2UgY2FuCisgICAgICAgICMgZGV0
ZWN0IGNoYW5nZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFib3J0IHRoZSBidWlsZC4KKyAg
ICAgICAgUFJFVklPVVNfV0VCS0lUX0NPTkZJRyA9ICQkV0VCS0lUX0NPTkZJRworICAgICAgICB1
bnNldChXRUJLSVRfQ09ORklHKQorICAgICAgICBleHBvcnQoUFJFVklPVVNfV0VCS0lUX0NPTkZJ
RykKKyAgICB9CisKKyAgICAjIFJ1bm5pbmcgZmVhdHVyZSBkZXRlY3Rpb24gaW5zaWRlIGEgZnVu
Y3Rpb24gZW5zdXJlcyB0aGF0IHdlIG9ubHkKKyAgICAjIGV4cG9ydCBXRUJLSVRfQ09ORklHLCBh
bmQgZG9uIG5vdCBtZXNzIHVwIGFueSBvdGhlciB2YXJpYWJsZXMuCisgICAgZGV0ZWN0RmVhdHVy
ZXMoKQorCisgICAgIyBTZXQgdXAgYSBiYXNlIGxpc3Qgb2Ygb3B0aW9uYWwgdGhpbmdzIHRvIGJ1
aWxkLCB3aGljaCB3ZSBsYXRlciBvbgorICAgICMgc2FuaXRpemUgYmFzZWQgb24gY29uc3RyYWlu
dHMgb2YgdGhlIHBsYXRmb3JtLgorCisgICAgV0VCS0lUX0NPTkZJRyArPSBcCisgICAgICAgIGJ1
aWxkX3dlYmtpdDEgXAorICAgICAgICBidWlsZF93ZWJraXQyIFwKKyAgICAgICAgYnVpbGRfdGVz
dHMgXAorICAgICAgICAkJFdFQktJVF9UT09MU19DT05GSUcKKworICAgICMgU2FuYXRpemUgV2Vi
S2l0MS9XZWJLaXQyLCBhcyBXZWJLaXQucHJvIHVzZXMgdGhlc2UgdHdvIG9wdGlvbnMKKyAgICAj
IHRvIGRldGVybWluZSB3aGljaCBwcm8tZmlsZXMgdG8gaW5jbHVkZS4gVGhlIHJlbWFpbmluZyBz
YW5pdGF6aW9uCisgICAgIyBpcyBkb25lIHdoZW4gZmluYWxpemluZyBjb25maWd1cmUuCisKKyAg
ICAhcXRIYXZlTW9kdWxlKHdpZGdldHMpIHsKKyAgICAgICAgQ09ORklHVVJFX1dBUk5JTkdTICs9
ICJNaXNzaW5nIFF0V2lkZ2V0cyBtb2R1bGUsIGRpc2FibGluZyBXZWJLaXQxIgorICAgICAgICBX
RUJLSVRfQ09ORklHIC09IGJ1aWxkX3dlYmtpdDEKKyAgICB9CisKKyAgICAjIFdlYktpdDIgcmVx
dWlyZXMgT3BlbkdMIFRleHR1cmVNYXBwZXIsIHdoaWNoIHJlcXVpcmVzIDNEIEdyYXBoaWNzCisg
ICAgIXVzZT8oM2RfZ3JhcGhpY3MpOiBXRUJLSVRfQ09ORklHIC09IGJ1aWxkX3dlYmtpdDIKKwor
ICAgIGV4cG9ydChDT05GSUcpCisgICAgZXhwb3J0KFdFQktJVF9DT05GSUcpCisgICAgZXhwb3J0
KENPTkZJR1VSRV9XQVJOSU5HUykKK30KKworZGVmaW5lUmVwbGFjZShjb25maWdFbmFibGVkKSB7
CisgICAgdHJ1ZVZhbHVlID0gJCQyCisgICAgaXNFbXB0eSh0cnVlVmFsdWUpOiB0cnVlVmFsdWUg
PSB5ZXMKKworICAgIGZhbHNlVmFsdWUgPSAkJDMKKyAgICBpc0VtcHR5KGZhbHNlVmFsdWUpOiBm
YWxzZVZhbHVlID0gbm8KKworICAgICQkMTogcmV0dXJuKCQkdHJ1ZVZhbHVlKQorICAgIHJldHVy
bigkJGZhbHNlVmFsdWUpCit9CisKKyMgVGhpcyBpcyBjYWxsZWQgZnJvbSBkZWZhdWx0X3Bvc3Qs
IGF0IHdoaWNoIHBvaW50IHdlJ3ZlIGFsc28gcGFyc2VkCisjIGNvbW1hbmQgbGluZSBvcHRpb25z
CitkZWZpbmVUZXN0KGZpbmFsaXplQ29uZmlndXJlKSB7CisKKyAgICAjIFNhbml0aXplIGNsYXNo
aW5nIG9wdGlvbnMKKyAgICBzYW50aXplRmVhdHVyZXMoKQorCisgICAgIyBTYW5pdGl6ZSBidWls
ZCBvcHRpb25zCisgICAgIXF0SGF2ZU1vZHVsZSh0ZXN0bGliKSB7CisgICAgICAgIENPTkZJR1VS
RV9XQVJOSU5HUyArPSAiTWlzc2luZyBRdFRlc3QgbW9kdWxlLCBkaXNhYmxpbmcgRHVtcFJlbmRl
clRyZWUsIFdlYktpdFRlc3RSdW5uZXIgYW5kIHRlc3RzIgorICAgICAgICBXRUJLSVRfQ09ORklH
IC09IGJ1aWxkX2RydCBidWlsZF93dHIgYnVpbGRfdGVzdHMKKyAgICB9CisKKyAgICB3aW4zMnwh
ZW5hYmxlPyhORVRTQ0FQRV9QTFVHSU5fQVBJKTogV0VCS0lUX0NPTkZJRyAtPSBidWlsZF90ZXN0
X25wYXBpCisKKyAgICB3aW4qIHsKKyAgICAgICAgV0VCS0lUX0NPTkZJRyAtPSBidWlsZF9kcnQK
KyAgICB9CisKKyAgICBwcm9kdWN0aW9uX2J1aWxkIHsKKyAgICAgICAgV0VCS0lUX0NPTkZJRyAt
PSAkJFdFQktJVF9UT09MU19DT05GSUcgYnVpbGRfdGVzdHMKKyAgICB9CisKKyAgICBwcmludF9k
ZWZhdWx0cyB7CisgICAgICAgIGxvZyhERUZJTkVTOiAkJGNvbmZpZ0RlZmluZXMoKSQke0VPTH0p
CisgICAgICAgIGVycm9yKERvbmUgY29tcHV0aW5nIGRlZmF1bHRzKQorICAgIH0KKworICAgICMg
U2FuaXR5IGNoZWNrcyB0aGF0IHdvdWxkIHByZXZlbnQgdXMgZnJvbSBidWlsZGluZyB0aGUgd2hv
bGUgcHJvamVjdCBhbHRvZ2V0aGVyLgorICAgICFtYWM6IWNvbnRhaW5zKFFUX0NPTkZJRyxpY3Up
IHsKKyAgICAgICAgYWRkUmVhc29uRm9yU2tpcHBpbmdCdWlsZCgiSUNVIGlzIHJlcXVpcmVkLiBU
byBidWlsZCBRdFdlYktpdCB3aXRoIFF0IDUgeW91IG5lZWQgdG8gYnVpbGQgUXQgNSB3aXRoIGxp
YklDVSBzdXBwb3J0LiBDaGVjayBmb3IgSUNVIHN1cHBvcnQgYmVpbmcgbWVudGlvbmVkIGluIHF0
YmFzZS9jb25maWcuc3VtbWFyeS4iKQorICAgIH0KKyAgICBwcm9kdWN0aW9uX2J1aWxkOmJsYWNr
YmVycnkgeworICAgICAgICBhZGRSZWFzb25Gb3JTa2lwcGluZ0J1aWxkKCJCdWlsZCBub3Qgc3Vw
cG9ydGVkIG9uIEJCMTAgeWV0LiIpCisgICAgfQorICAgIHJlcXVpcmVkUHJvZ3JhbXMgPSBncGVy
ZiBweXRob24gcGVybCBiaXNvbiBydWJ5IGZsZXgKKyAgICBmb3IocHJvZ3JhbSwgcmVxdWlyZWRQ
cm9ncmFtcyk6IFwKKyAgICAgICAgIXByb2dyYW1FeGlzdHNJblBhdGgoJCRwcm9ncmFtKTogXAor
ICAgICAgICAgICAgYWRkUmVhc29uRm9yU2tpcHBpbmdCdWlsZCgiTWlzc2luZyAkJHByb2dyYW0g
ZnJvbSBQQVRIIikKKworICAgICMgRGV0ZWN0IGNoYW5nZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24u
IENoYW5nZXMgbmVlZCBhIGNsZWFuIGJ1aWxkLgorICAgIHdlYmtpdF9jb25maWd1cmVkIHsKKyAg
ICAgICAgYWRkZWRfZmVhdHVyZXMgPSAkJFdFQktJVF9DT05GSUcKKyAgICAgICAgYWRkZWRfZmVh
dHVyZXMgLT0gJCRQUkVWSU9VU19XRUJLSVRfQ09ORklHCisKKyAgICAgICAgcmVtb3ZlZF9mZWF0
dXJlcyA9ICQkUFJFVklPVVNfV0VCS0lUX0NPTkZJRworICAgICAgICByZW1vdmVkX2ZlYXR1cmVz
IC09ICQkV0VCS0lUX0NPTkZJRworCisgICAgICAgICFpc0VtcHR5KGFkZGVkX2ZlYXR1cmVzKXwh
aXNFbXB0eShyZW1vdmVkX2ZlYXR1cmVzKSB7CisgICAgICAgICAgICBDT05GSUcgKz0gY29uZmln
dXJhdGlvbl9jaGFuZ2VkCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZWNvbmZpZ3VyZU1zZyA9
IFwKKyAgICAgICAgIlJlY29uZmlndXJhdGlvbiBsaWtlbHkgcmVxdWlyZXMgYSBjbGVhbiBidWls
ZC4gWW91JCR7UVVPVEV9dmUgYmVlbiB3YXJuZWQhIiBcCisgICAgICAgICJZb3UgbWF5IGV4ZWN1
dGUgJCR7UVVPVEV9bWFrZSB3aXBlY2xlYW4kJHtRVU9URX0gdG8gd2lwZSB0aGUgYnVpbGQgZGly
ZWN0b3J5LiIKKworICAgICMgQWRkIHRhcmdldCBmb3IgcmVjb25maWd1cmluZyB0aGUgYnVpbGQK
KyAgICByZWNvbmZpZ3VyZS50YXJnZXQgPSByZWNvbmZpZ3VyZQorICAgIGRvdWJsZV9xdW90ZSA9
ICQkZXNjYXBlX2V4cGFuZChcIikKKyAgICByZWNvbmZpZ3VyZS5jb21tYW5kcyA9IGVjaG8gPiAu
cW1ha2UuY2FjaGUgJiYgJChNQUtFKSAtZiAkKE1BS0VGSUxFKSBxbWFrZSAkJEVPQworICAgIHJl
Y29uZmlndXJlLmNvbW1hbmRzICs9IEBlY2hvICQke2RvdWJsZV9xdW90ZX1XQVJOSU5HOiAkJGpv
aW4ocmVjb25maWd1cmVNc2csXFxuLCwpXFxuJCR7ZG91YmxlX3F1b3RlfQorICAgIFFNQUtFX0VY
VFJBX1RBUkdFVFMgKz0gcmVjb25maWd1cmUKKyAgICBleHBvcnQocmVjb25maWd1cmUudGFyZ2V0
KQorICAgIGV4cG9ydChyZWNvbmZpZ3VyZS5jb21tYW5kcykKKyAgICBleHBvcnQoUU1BS0VfRVhU
UkFfVEFSR0VUUykKKworICAgICMgQWRkIHRhcmdldCBmb3Igd2lwaW5nIGNsZWFuIHRoZSBidWls
ZAorICAgIHdpcGVjbGVhbi50YXJnZXQgPSB3aXBlY2xlYW4KKyAgICB3aW5fY21kX3NoZWxsOiB3
aXBlY2xlYW4uY29tbWFuZHMgPSBGT1IgL0QgJSVwIElOICgqKSBETyBybWRpciAiJSVwIiAvcyAv
cQorICAgIGVsc2U6IHdpcGVjbGVhbi5jb21tYW5kcyA9ICQoQ09QWV9GSUxFKSAkKE1BS0VGSUxF
KSAuJChNQUtFRklMRSkgJiYgcm0gLVJmICogJiYgJChNT1ZFKSAuJChNQUtFRklMRSkgJChNQUtF
RklMRSkKKyAgICBRTUFLRV9FWFRSQV9UQVJHRVRTICs9IHdpcGVjbGVhbgorICAgIGV4cG9ydCh3
aXBlY2xlYW4udGFyZ2V0KQorICAgIGV4cG9ydCh3aXBlY2xlYW4uY29tbWFuZHMpCisgICAgZXhw
b3J0KFFNQUtFX0VYVFJBX1RBUkdFVFMpCisKKyAgICAjIFByaW50IGEgcHJldHRpZmllZCBkdW1w
IG9mIHRoZSBjb25maWd1cmF0aW9uLCBmb3IgZWFzaWVyIGRlYnVnZ2luZworICAgICF3ZWJraXRf
Y29uZmlndXJlZHxjb25maWd1cmF0aW9uX2NoYW5nZWR8YnVpbGRib3QgeworCisgICAgICAgIHNr
aXBwZWRfY29uZmlnX3Rlc3RzIHsKKyAgICAgICAgICAgIGxvZygkJHtFT0x9U2tpcHBpbmcgY29u
ZmlndXJlIHRlc3RzLiBFeGVjdXRlICQke1FVT1RFfW1ha2UgcmVjb25maWd1cmUkJHtRVU9URX0g
dG8gcmUtcnVuLiQke0VPTH0pCisgICAgICAgIH0KKworICAgICAgICBsZWZ0b3ZlckNvbmZpZyA9
ICQkV0VCS0lUX0NPTkZJRworCisgICAgICAgIGZvcihjb25maWcsIFdFQktJVF9DT05GSUcpIHsK
KyAgICAgICAgICAgIG1hdGNoID0gJCRmaW5kKGNvbmZpZywgIl5idWlsZF8iKQorICAgICAgICAg
ICAgIWlzRW1wdHkobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBidWlsZCArPSAkJHJlcGxhY2Uo
bWF0Y2gsIF5idWlsZF8sKQorICAgICAgICAgICAgICAgIGxlZnRvdmVyQ29uZmlnIC09ICQkY29u
ZmlnCisgICAgICAgICAgICAgICAgbmV4dCgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
YXRjaCA9ICQkZmluZChjb25maWcsICJeaGF2ZV8iKQorICAgICAgICAgICAgIWlzRW1wdHkobWF0
Y2gpIHsKKyAgICAgICAgICAgICAgICBoYXZlICs9ICQkcmVwbGFjZShtYXRjaCwgXmhhdmVfLCkK
KyAgICAgICAgICAgICAgICBsZWZ0b3ZlckNvbmZpZyAtPSAkJGNvbmZpZworICAgICAgICAgICAg
ICAgIG5leHQoKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF0Y2ggPSAkJGZpbmQoY29u
ZmlnLCAiXnVzZV8iKQorICAgICAgICAgICAgIWlzRW1wdHkobWF0Y2gpIHsKKyAgICAgICAgICAg
ICAgICB1c2UgKz0gJCRyZXBsYWNlKG1hdGNoLCBedXNlXywpCisgICAgICAgICAgICAgICAgbGVm
dG92ZXJDb25maWcgLT0gJCRjb25maWcKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHNjcmlwdHNfZGlyID0gJCR0b1N5c3RlbVBhdGgoJCRST09UX1dFQktJVF9ESVIvVG9vbHMv
U2NyaXB0cykKKyAgICAgICAgZmVhdHVyZXMgPSAkJHN5c3RlbShwZXJsIC1JICQke3NjcmlwdHNf
ZGlyfSAtSSAkJHtzY3JpcHRzX2Rpcn0kJHtRTUFLRV9ESVJfU0VQfXdlYmtpdHBlcmwgJCR0b1N5
c3RlbVBhdGgoJCRST09UX1dFQktJVF9ESVIvVG9vbHMvcW1ha2UvZHVtcC1mZWF0dXJlcy5wbCkp
CisgICAgICAgIGZvcihmZWF0dXJlLCBmZWF0dXJlcykgeworICAgICAgICAgICAgcGFydHMgPSAk
JHNwbGl0KGZlYXR1cmUsID0pCisgICAgICAgICAgICBkZXNjID0gJCRtZW1iZXIocGFydHMsIDAs
IDApCisgICAgICAgICAgICBkZXNjIH49IHMvXy8gLworICAgICAgICAgICAgdmFsdWUgPSAkJG1l
bWJlcihwYXJ0cywgMSwgMSkKKworICAgICAgICAgICAgY29udGFpbnMoV0VCS0lUX0NPTkZJRywg
JCR2YWx1ZSkgeworICAgICAgICAgICAgICAgIGxlZnRvdmVyQ29uZmlnIC09ICQkdmFsdWUKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHllcworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IG5vCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZlYXR1cmVD
b25maWd1cmF0aW9uICs9ICIkJGRlc2MgJCR2YWx1ZSQke0VPTH0iCisgICAgICAgIH0KKworICAg
ICAgICBsb2coJCR7RU9MfUZpbmFsIGNvbmZpZ3VyYXRpb246JCR7RU9MfSQke0VPTH0pCisKKyAg
ICAgICAgZGVidWc6IGJ1aWxkQ29uZmlnICs9IGRlYnVnCisgICAgICAgIHJlbGVhc2U6IGJ1aWxk
Q29uZmlnICs9IHJlbGVhc2UKKyAgICAgICAgYnVpbGRDb25maWcgPSAkJGpvaW4oYnVpbGRDb25m
aWcsLywsKQorICAgICAgICBkZWJ1ZzpyZWxlYXNlOmRlYnVnX2FuZF9yZWxlYXNlOmJ1aWxkQ29u
ZmlnICs9IChjb21iaW5lZCkKKworICAgICAgICBsb2coQnVpbGQgLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLiAkJGJ1aWxkJCR7RU9MfSkKKyAgICAgICAgbG9nKENvbmZpZ3VyYXRpb24gLi4uLi4u
Li4uLi4uLi4uLi4gJCRidWlsZENvbmZpZyQke0VPTH0pCisgICAgICAgIGxvZyhBbGwtaW4tb25l
IGZpbGVzIC4uLi4uLi4uLi4uLi4uICQkY29uZmlnRW5hYmxlZCh1c2VfYWxsX2luX29uZV9maWxl
cykkJEVPTCkKKyAgICAgICAgbG9nKEdOVW1ha2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gJCRj
b25maWdFbmFibGVkKEdOVW1ha2UpJCRFT0wpCisgICAgICAgIGxvZyhTdGF0aWMgbGlicyBhcyBz
aGFyZWQgLi4uLi4uLi4uICQkY29uZmlnRW5hYmxlZChmb3JjZV9zdGF0aWNfbGlic19hc19zaGFy
ZWQpJCRFT0wpCisgICAgICAgIGxvZyhTdGF0aWMgbGlicyBhcyB0aGluIGFyY2hpdmVzIC4uICQk
Y29uZmlnRW5hYmxlZChnbnVfdGhpbl9hcmNoaXZlcykkJEVPTCkKKyAgICAgICAgbG9nKFByb2R1
Y3Rpb24gYnVpbGQgLi4uLi4uLi4uLi4uLi4gJCRjb25maWdFbmFibGVkKHByb2R1Y3Rpb25fYnVp
bGQpJCRFT0wpCisgICAgICAgIGxvZygkJEVPTCkKKworICAgICAgICBsb2coSGF2ZSAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLiAkJGhhdmUkJHtFT0x9KQorICAgICAgICBsb2coVXNlIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLiAkJHVzZSQke0VPTH0pCisgICAgICAgIGxvZyhGZWF0dXJl
cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uICQke2xlZnRvdmVyQ29uZmlnfSQke0VPTH0pCisgICAg
ICAgIGxvZygkJEVPTCkKKworICAgICAgICBmb3IoZmVhdHVyZSwgZmVhdHVyZUNvbmZpZ3VyYXRp
b24pIHsKKyAgICAgICAgICAgIGxvZygkJGZlYXR1cmUpCisgICAgICAgIH0KKworICAgICAgICAh
aXNFbXB0eShDT05GSUdVUkVfV0FSTklOR1MpIHsKKyAgICAgICAgICAgIGxvZygiJCR7RU9MfUVu
Y291bnRlcmVkICQkc2l6ZShDT05GSUdVUkVfV0FSTklOR1MpIGNvbmZpZ3VyYXRpb24gd2Fybmlu
ZyhzKTokJHtFT0x9JCR7RU9MfSIpCisgICAgICAgICAgICBmb3Iod2FybiwgQ09ORklHVVJFX1dB
Uk5JTkdTKSB7CisgICAgICAgICAgICAgICAgbG9nKCIgISAkJHdhcm4kJHtFT0x9IikKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICFpc0VtcHR5KHNraXBCdWlsZFJlYXNvbikg
eworICAgICAgICAgICAgbG9nKCIkJHtFT0x9VGhlIFdlYktpdCBidWlsZCB3YXMgZGlzYWJsZWQg
Zm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uczogJCRza2lwQnVpbGRSZWFzb24gJCR7RU9MfSQke0VP
TH0iKQorICAgICAgICAgICAgU1VCRElSUz0KKyAgICAgICAgICAgIGV4cG9ydChTVUJESVJTKQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCIkJHtFT0x9V2ViS2l0IGlzIG5vdyBj
b25maWd1cmVkIGZvciBidWlsZGluZy4gSnVzdCBydW4gJ21ha2UnLiQke0VPTH0kJHtFT0x9IikK
KyAgICAgICAgfQorCisgICAgICAgIGNvbmZpZ3VyYXRpb25fY2hhbmdlZCB7CisgICAgICAgICAg
ICBsb2coV0FSTklORzogVGhlIGNvbmZpZ3VyYXRpb24gd2FzIGNoYW5nZWQgc2luY2UgdGhlIGxh
c3QgYnVpbGQ6JCR7RU9MfSQke0VPTH0pCisKKyAgICAgICAgICAgICFpc0VtcHR5KGFkZGVkX2Zl
YXR1cmVzKTogbG9nKCQke1RBQn1BZGRlZCBmZWF0dXJlKHMpOiAkJHthZGRlZF9mZWF0dXJlc30k
JHtFT0x9KQorICAgICAgICAgICAgIWlzRW1wdHkocmVtb3ZlZF9mZWF0dXJlcyk6IGxvZygkJHtU
QUJ9UmVtb3ZlZCBmZWF0dXJlKHMpOiAkJHtyZW1vdmVkX2ZlYXR1cmVzfSQke0VPTH0pCisKKyAg
ICAgICAgICAgIGxvZygkJGpvaW4ocmVjb25maWd1cmVNc2csJCR7RU9MfSwkJHtFT0x9LCQke0VP
TH0kJHtFT0x9KSkKKyAgICAgICAgfQorICAgIH0KKworICAgICMgQ2FjaGUgdGhlIHJlc3VsdCBm
b3IgYWxsIHRoZSBvdGhlciBwcm9qZWN0IGZpbGVzLCBhbmQgZm9yCisgICAgIyB0aGUgbmV4dCBi
dWlsZCwgc28gd2UgY2FuIGRldGVjdCBjaGFuZ2VzIHRvIHRoZSBjb25maWcuCisgICAgIXdlYmtp
dF9jb25maWd1cmVkfGNvbmZpZ3VyYXRpb25fY2hhbmdlZCB7CisgICAgICAgICFjb25maWd1cmF0
aW9uX2NoYW5nZWQ6IGNhY2hlKENPTkZJRywgYWRkLCAkJGxpc3Qod2Via2l0X2NvbmZpZ3VyZWQp
KQorCisgICAgICAgIG1zZyA9ICIkJHtFT0x9JCR7TElURVJBTF9IQVNIfSBDb25maWd1cmF0aW9u
IGNoYW5nZWQgJCRfREFURV8iCisgICAgICAgIHdyaXRlX2ZpbGUoJCRfUU1BS0VfQ0FDSEVfLCBt
c2csIGFwcGVuZCkKKworICAgICAgICAhY29uZmlndXJhdGlvbl9jaGFuZ2VkIHsKKyAgICAgICAg
ICAgIGNhY2hlKFdFQktJVF9DT05GSUcsIHNldCwgV0VCS0lUX0NPTkZJRykKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICFpc0VtcHR5KGFkZGVkX2ZlYXR1cmVzKTogY2FjaGUoV0VCS0lU
X0NPTkZJRywgYWRkLCBhZGRlZF9mZWF0dXJlcykKKyAgICAgICAgICAgICFpc0VtcHR5KHJlbW92
ZWRfZmVhdHVyZXMpOiBjYWNoZShXRUJLSVRfQ09ORklHLCBzdWIsIHJlbW92ZWRfZmVhdHVyZXMp
CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL2RlZmF1bHRfcG9zdC5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Rl
ZmF1bHRfcG9zdC5wcmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkyYWFh
NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZGVmYXVs
dF9wb3N0LnByZgpAQCAtMCwwICsxLDMxOCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFF0V2ViS2l0IGRl
ZmF1bHRzIGZvciBxbWFrZS4gVGhlc2UgcnVsZXMgYXJlIHBhcnNlZCBhZnRlciB0aGUKKyMgYWN0
dWFsIHByb2plY3QgZmlsZS4KKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBv
dmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBGbGFnIHRoYXQg
d2UncmUgbm93IGRvbmUgcHJvY2Vzc2luZyB0aGUgcHJvamVjdCBmaWxlLiBUaGlzIGFsbG93cwor
IyBhIGZlYXR1cmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBiZWluZyBwcm9jZXNzZWQgZHVlIHRv
IGEgbG9hZCgpCisjIG9yIGluY2x1ZGUoKSBhbmQgYSBDT05GSUcgKz0gZmVhdHVyZS4KK0NPTkZJ
RyArPSBjb25maWdfc3RlcAorCisjIEVuYWJsZSBkeW5hbWljIGluc3RlYWQgb2Ygc3RhdGljIGxp
YnJhcmllcyBmb3IgZGV2ZWxvcG1lbnQKKyMgQXZvaWQgaXQgd2l0aCBkZWJ1Z19hbmRfcmVsZWFz
ZSwgaXQgY2FuIGNhdXNlIHRoZSBhcHBsaWNhdGlvbiB0byBsb2FkIGJvdGggdGhlIGRlYnVnIGFu
ZCByZWxlYXNlCisjIGRlcGVuZGVudCBsaWJyYXJpZXMgd2hlbiB1c2luZyBmcmFtZXdvcmtzIG9u
IE1hYy4KKyFwcm9kdWN0aW9uX2J1aWxkOiFkZWJ1Z19hbmRfcmVsZWFzZTohYnVpbGRib3Q6IXdp
bio6IENPTkZJRyArPSBmb3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQKKworIyBEb24ndCBjcmVh
dGUgLnBybCBmaWxlcyBmb3IgaW50ZXJtZWRpYXRlIGxpYnJhcmllcyBiZWNhdXNlIHRoZWlyIGNv
bnRlbnRzIGdldCB1c2VkIHdoZW4gbGlua2luZyBhZ2FpbnN0CisjIHRoZW0sIGJyZWFraW5nICIt
V2wsLXdob2xlLWFyY2hpdmUgLWxNeUludGVybWVkaWF0ZUxpYiAtLVdsLC1uby13aG9sZS1hcmNo
aXZlIgorc3RhdGljbGliOiBDT05GSUcgLT0gY3JlYXRlX3BybAorCityb290X3Byb2plY3RfZmls
ZTogZmluYWxpemVDb25maWd1cmUoKQorCisjIFNhbml0aXplIGJ1aWxkIGNvbmZpZyBmb3Igc2lu
Z2xlLWNvbmZpZ3VyYXRpb24gYnVpbGRzCishZGVidWd8IXJlbGVhc2UgeworICAgICMgUmVtb3Zp
bmcgZGVidWdfYW5kX3JlbGVhc2UgY2F1c2VzIGlzc3VlcyB3aXRoIGxpYiBzdWZmaXhlcyB3aGVu
IGJ1aWxkaW5nIGRlYnVnIG9uIFdpbmRvd3MuCisgICAgIyBXb3JrIGFyb3VuZCBpdCBieSBvbmx5
IHJlbW92aW5nIGJ1aWxkX2FsbCwgYW5kIHN0aWxsIGNyZWF0ZSB0aGUgTWFrZWZpbGVzIGZvciBi
b3RoIGNvbmZpZ3VyYXRpb25zLgorICAgIHdpbjMyKjogQ09ORklHIC09IGJ1aWxkX2FsbAorICAg
IGVsc2U6IHsKKyAgICAgICAgQ09ORklHIC09IGRlYnVnX2FuZF9yZWxlYXNlCisgICAgICAgICMg
RGVmYXVsdCB0byByZWxlYXNlCisgICAgICAgICFkZWJ1ZzohcmVsZWFzZTogQ09ORklHICs9IHJl
bGVhc2UKKyAgICB9Cit9IGVsc2U6ZGVidWdfYW5kX3JlbGVhc2UgeworICAgICMgT25seSBidWls
ZCBhIHNpbmdsZSBpbnN0YW5jZSBvZiBlYWNoIGFwcGxpY2F0aW9uCisgICAgY29udGFpbnMoVEVN
UExBVEUsIGFwcCk6IWZvcmNlX2J1aWxkX2FsbCB7CisgICAgICAgIENPTkZJRyAtPSBidWlsZF9h
bGwKKyAgICB9Cit9CisKKyMgR2VuZXJhbCBkZWZhdWx0IGJ1aWxkIHR3ZWFrcworREVGSU5FUyAr
PSBcCisgICAgQlVJTERJTkdfUVRfXz0xCisKK0NPTkZJRyhyZWxlYXNlLCBkZWJ1Z3xyZWxlYXNl
KTogREVGSU5FUyAqPSBOREVCVUcKKworREVGSU5FUyArPSAkJGNvbmZpZ0RlZmluZXMoKQorCitJ
TkNMVURFUEFUSCArPSBcCisgICAgJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UgXAorICAgICQk
e1JPT1RfQlVJTERfRElSfS9Tb3VyY2UvaW5jbHVkZSBcCisgICAgJCR7UVQuc2NyaXB0LmluY2x1
ZGVzfQorCitDT05GSUcgLT0gd2Fybl9vbgorCishY29tcGlsaW5nX3RoaXJkcGFydHlfY29kZToq
LWcrKyo6IFFNQUtFX0NYWEZMQUdTID0gXAorICAgIC1XYWxsIFwKKyAgICAtV2V4dHJhIFwKKyAg
ICAtV3JldHVybi10eXBlIFwKKyAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcCisgICAgLVdjaGFy
LXN1YnNjcmlwdHMgXAorICAgIC1XZm9ybWF0LXNlY3VyaXR5IFwKKyAgICAtV3JldHVybi10eXBl
IFwKKyAgICAtV25vLXVudXNlZC1wYXJhbWV0ZXIgXAorICAgIC1Xbm8tc2lnbi1jb21wYXJlIFwK
KyAgICAtV25vLXN3aXRjaCBcCisgICAgLVduby1zd2l0Y2gtZW51bSBcCisgICAgLVd1bmRlZiBc
CisgICAgLVdtaXNzaW5nLW5vcmV0dXJuIFwKKyAgICAtV2luaXQtc2VsZiBcCisgICAgJCRRTUFL
RV9DWFhGTEFHUworCisjIFRlbXBsYXRlIGNvbmZpZ3VyYXRpb25zCitjb250YWlucyhURU1QTEFU
RSwgZGVyaXZlZCkgeworICAgICMgQSAobW9zdGx5KSBuby1vcCB0ZW1wbGF0ZQorICAgIFRFTVBM
QVRFID0gYXV4CisKKyAgICAjIFRyaWNrIHFtYWtlIGludG8gbm90IGdlbmVyYXRpbmcgYSBkZWZh
dWx0ICQoREVMX0ZJTEUpIHJ1bGUKKyAgICBDT05GSUcgKz0gY29tcGlsZV9saWJ0b29sCisKKyAg
ICBDT05GSUcgLT0gZGVidWdfYW5kX3JlbGVhc2UKKworICAgIGZha2VfZGVidWcudGFyZ2V0ID0g
ZGVidWcKKyAgICBmYWtlX2RlYnVnLmRlcGVuZHMgPSBmaXJzdAorICAgIFFNQUtFX0VYVFJBX1RB
UkdFVFMgKz0gZmFrZV9kZWJ1ZworICAgIGZha2VfcmVsZWFzZS50YXJnZXQgPSByZWxlYXNlCisg
ICAgZmFrZV9yZWxlYXNlLmRlcGVuZHMgPSBmaXJzdAorICAgIFFNQUtFX0VYVFJBX1RBUkdFVFMg
Kz0gZmFrZV9yZWxlYXNlCisKKyAgICAjIEEgbG90IG9mIG91ciBjb2RlIGdlbmVyYXRvcnMgcmVx
dWlyZSBHTlUgdG9vbHMsIHJlYWRpbHkgYXZhaWxhYmxlCisgICAgIyBvbiBMaW51eCBhbmQgTWFj
IE9TIFguIE9uIFdpbmRvd3Mgd2UgZG8gaGF2ZSBhIGNvbnZlbmllbmNlIGNvcHkgaW4KKyAgICAj
IFF0NSdzIHRvcC1sZXZlbCByZXBvc2l0b3J5LCBzbyBsZXQncyBhZGQgdGhhdCB0byB0aGUgUEFU
SCBpZiB3ZSBjYW4KKyAgICAjIGZpbmQgaXQuCisgICAgd2luMzIgeworICAgICAgICBHTlVUT09M
U19ESVI9JCRbUVRfSE9TVF9EQVRBXS8uLi9nbnV3aW4zMi9iaW4KKyAgICAgICAgZXhpc3RzKCQk
R05VVE9PTFNfRElSL2dwZXJmLmV4ZSkgeworICAgICAgICAgICAgR05VVE9PTFMgPSAiKHNldCAk
JGVzY2FwZV9leHBhbmQoXFxcIilQQVRIPSQkdG9TeXN0ZW1QYXRoKCQkR05VVE9PTFNfRElSKTsl
UEFUSCUkJGVzY2FwZV9leHBhbmQoXFxcIikpIgorICAgICAgICB9CisgICAgfQorCisgICAgZm9y
KGdlbmVyYXRvciwgR0VORVJBVE9SUykgeworICAgICAgICBldmFsKCQke2dlbmVyYXRvcn0uQ09O
RklHID0gdGFyZ2V0X3ByZWRlcHMgbm9fbGluaykKKyAgICAgICAgZXZhbCgkJHtnZW5lcmF0b3J9
LmRlcGVuZGVuY3lfdHlwZSA9IFRZUEVfQykKKworICAgICAgICBpc0VtcHR5KCQke2dlbmVyYXRv
cn0ub3V0cHV0X2Z1bmN0aW9uKSB7CisgICAgICAgICAgICBwcmVwZW5kRWFjaCgkJHtnZW5lcmF0
b3J9Lm91dHB1dCwgJCR7R0VORVJBVEVEX1NPVVJDRVNfREVTVERJUn0vKQorICAgICAgICB9CisK
KyAgICAgICAgc2NyaXB0ID0gJCRldmFsKCQke2dlbmVyYXRvcn0uc2NyaXB0KQorICAgICAgICBl
dmFsKCQke2dlbmVyYXRvcn0uZGVwZW5kcyArPSAkJHNjcmlwdCkKKworICAgICAgICBjb21tYW5k
cyA9ICQkZXZhbCgkJHtnZW5lcmF0b3J9LmNvbW1hbmRzKQorICAgICAgICAhaXNFbXB0eShjb21t
YW5kcyk6IWlzRW1wdHkoR05VVE9PTFMpIHsKKyAgICAgICAgICAgIGV2YWwoJCR7Z2VuZXJhdG9y
fS5jb21tYW5kcyA9ICQke0dOVVRPT0xTfSAmJiAkJHZhbF9lc2NhcGUoJCR7Z2VuZXJhdG9yfS5j
b21tYW5kcykpCisgICAgICAgIH0KKworICAgICAgICAhaXNFbXB0eSgkJHtnZW5lcmF0b3J9Lmlu
cHV0KSB7CisgICAgICAgICAgICAjIENvbXBpbGVyLXN0eWxlIGdlbmVyYXRvcgorICAgICAgICAg
ICAgUU1BS0VfRVhUUkFfQ09NUElMRVJTICs9ICQkZ2VuZXJhdG9yCisgICAgICAgICAgICBERUZB
VUxUX1RBUkdFVFMgKz0gY29tcGlsZXJfJCR7Z2VuZXJhdG9yfV9tYWtlX2FsbAorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgIyBSZWd1bGFyIHRhcmdldCBnZW5lcmF0b3IKKyAgICAgICAg
ICAgIFFNQUtFX0VYVFJBX1RBUkdFVFMgKz0gJCRnZW5lcmF0b3IKKyAgICAgICAgICAgIERFRkFV
TFRfVEFSR0VUUyArPSAkJGdlbmVyYXRvcgorICAgICAgICB9CisgICAgfQorfSBlbHNlIHsKKyAg
ICAjIE1ha2Ugc3VyZSB0aGUgZ2VuZXJhdGVkIHNvdXJjZXMgYXJlIGNvbXBpbGVkIGFzIHdlbGwK
KyAgICBmb3IoZ2VuZXJhdG9yLCBHRU5FUkFUT1JTKSB7CisgICAgICAgIHByZXBlbmRFYWNoKCQk
e2dlbmVyYXRvcn0uZXh0cmFfc291cmNlcywgJCR7R0VORVJBVEVEX1NPVVJDRVNfREVTVERJUn0v
KQorICAgICAgICBTT1VSQ0VTICs9ICQkZXZhbCgkJHtnZW5lcmF0b3J9LmV4dHJhX3NvdXJjZXMp
CisKKyAgICAgICAgaXNFcXVhbCgkJHtnZW5lcmF0b3J9LmFkZF9vdXRwdXRfdG9fc291cmNlcywg
ZmFsc2UpOiBuZXh0KCkKKworICAgICAgICBvdXRwdXQgPSAkJGV2YWwoJCR7Z2VuZXJhdG9yfS5v
dXRwdXQpCisgICAgICAgIGlucHV0ID0gJCRldmFsKCQke2dlbmVyYXRvcn0uaW5wdXQpCisgICAg
ICAgIGlucHV0X2ZpbGVzID0gJCRldmFsKCQkaW5wdXQpCisgICAgICAgIG91dHB1dF92YXJpYWJs
ZSA9ICQkZXZhbCgkJHtnZW5lcmF0b3J9LnZhcmlhYmxlX291dCkKKyAgICAgICAgaXNFbXB0eShv
dXRwdXRfdmFyaWFibGUpOiBvdXRwdXRfdmFyaWFibGUgPSBTT1VSQ0VTCisKKyAgICAgICAgaXNF
bXB0eSgkJHtnZW5lcmF0b3J9Lm91dHB1dF9mdW5jdGlvbikgeworICAgICAgICAgICAgcHJlcGVu
ZEVhY2gob3V0cHV0LCAkJHtHRU5FUkFURURfU09VUkNFU19ERVNURElSfS8pCisKKyAgICAgICAg
ICAgIGZvcihpbnB1dF9maWxlLCBpbnB1dF9maWxlcykgeworICAgICAgICAgICAgICAgIGJhc2Ug
PSAkJGJhc2VuYW1lKGlucHV0X2ZpbGUpCisgICAgICAgICAgICAgICAgYmFzZSB+PSBzL1xcLi4r
Ly8KKyAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZSA9ICQkcmVwbGFjZShvdXRwdXQsXFwkXFx7
UU1BS0VfRklMRV9CQVNFXFx9LCAkJGJhc2UpCisKKyAgICAgICAgICAgICAgICBldmFsKCQkb3V0
cHV0X3ZhcmlhYmxlICs9ICQkb3V0cHV0X2ZpbGUpCisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmdW5jdGlvbiA9ICQkZXZhbCgkJHtnZW5lcmF0b3J9Lm91dHB1
dF9mdW5jdGlvbikKKyAgICAgICAgICAgIGZvcihpbnB1dF9maWxlLCBpbnB1dF9maWxlcykgewor
ICAgICAgICAgICAgICAgIGV2YWwob3V0cHV0X2ZpbGUgPSBcJFwkJCRmdW5jdGlvblwoJCRpbnB1
dF9maWxlXCkpCisgICAgICAgICAgICAgICAgZXZhbCgkJG91dHB1dF92YXJpYWJsZSArPSAkJG91
dHB1dF9maWxlKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitjb250YWlu
cyhRVCwgd2Via2l0KXxjb250YWlucyhRVCwgd2Via2l0d2lkZ2V0cykgeworICAgICMgSW4gYWRk
aXRpb24gdG8gdGhlIG1haW4gc2hhcmVkIFF0V2ViS2l0IGxpYnJhcnkgd2UgYWxzbworICAgICMg
bmVlZCB0byBsaW5rIHRvIGFueSBpbnRlcm1lZGlhdGUgc2hhcmVkIGxpYnJhcmllcy4KKyAgICBm
b3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQgeworICAgICAgICBXRUJLSVQgKz0gd3RmIGphdmFz
Y3JpcHRjb3JlIHdlYmNvcmUKKyAgICAgICAgYnVpbGQ/KHdlYmtpdDEpOiBXRUJLSVQgKz0gd2Vi
a2l0MQorICAgICAgICBidWlsZD8od2Via2l0Mik6IFdFQktJVCArPSB3ZWJraXQyCisgICAgfQor
CisgICAgIyBGSVhNRTogUmVwbGFjZSB0aGlzIHdpdGggcHV0dGluZyB0aGUgaW50ZXJtZWRpYXRl
IGxpYnJhcmllcyBpbiB0aGUgcHJsIGZpbGUKK30KKworZGVmaW5lVGVzdChuZWVkVG9MaW5rKSB7
CisgICAgIyBUaGUgbWFpbiBkeW5hbWljIGxpYnJhcnkgYWx3YXlzIG5lZWRzIHRvIGxpbmsgaW4g
dGhlIGludGVybWVkaWF0ZSBsaWJyYXJpZXMKKyAgICBjcmVhdGluZ19tb2R1bGU6IHJldHVybih0
cnVlKQorCisgICAgZm9yY2Vfc3RhdGljX2xpYnNfYXNfc2hhcmVkIHsKKyAgICAgICAgIyBTbyBk
byB0aGUgaW5kaXZpZHVhbCBsaWJyYXJpZXMgaWYgdGhleSBhcmUgZHluYW1pYworICAgICAgICBj
b250YWlucyhsaWJyYXJpZXMsICQkVEFSR0VUKTogcmV0dXJuKHRydWUpCisKKyAgICAgICAgIyBP
ciBhbnl0aGluZyB0aGF0IHVzZXMgUXRXZWJLaXQgaW4gdGhpcyBzcGVjaWFsIGNvbmZpZworICAg
ICAgICBjb250YWlucyhRVCwgd2Via2l0KTogcmV0dXJuKHRydWUpCisgICAgfQorCisgICAgIyBM
YXN0bHksIHdlIGFsbG93IGFwcHMgKGpzYykgdG8gbGluayBkaXJlY3RseSB0byB0aGUgaW50ZXJt
ZWRpYXRlCisgICAgIyBsaWJyYXJpZXMgaW50ZWFkIG9mIHVzaW5nIHRoZSBleHBvcnRlZCBzeW1i
b2xzIGZyb20gUXRXZWJLaXQuCisgICAgY29udGFpbnMoVEVNUExBVEUsIGFwcCk6IWNvbnRhaW5z
KFFULCB3ZWJraXQpOiFjb250YWlucyhRVCwgd2Via2l0d2lkZ2V0cyk6IHJldHVybih0cnVlKQor
CisgICAgIyBBbnl0aGluZyBlbHNlIHNob3VsZCBqdXN0IGdldCBpbmNsdWRlIHBhdGhzLCBldGMs
IG5vdCBsaW5rCisgICAgcmV0dXJuKGZhbHNlKQorfQorCisjIE1ha2Ugc3VyZSB3ZSBoYXZlIGxv
YWRlZCB0aGUgcmVsZXZhbnQgbW9kdWxlcywgc28gdGhlIGluY2x1ZGUgcGF0aHMsCisjIGV0Yywg
YXJlIGNvcnJlY3QsIGFuZCB3ZSBjYW4gdXNlIFdFQktJVC5mb28uZGVwZW5kZW50X2xpYnMgYmVs
b3cuCitsb2FkKHdlYmtpdF9tb2R1bGVzKQorCisjIFdlIG1pZ2h0IG5lZWQgdG8gbGluayBhZ2Fp
bnN0IHRoZSBXZWJLaXQgaW50ZXJtZWRpYXRlIGxpYnJhcmllcworbmVlZFRvTGluaygpIHsKKyAg
ICBmb3IobGlicmFyeSwgV0VCS0lUKSB7CisgICAgICAgIGxpYnJhcnlfaWRlbnRpZmllciA9ICQk
bG93ZXIoJCRsaWJyYXJ5KQorICAgICAgICBsaW5rQWdhaW5zdExpYnJhcnkoJCRsaWJyYXJ5LCAk
JGV2YWwoV0VCS0lULiQke2xpYnJhcnlfaWRlbnRpZmllcn0ucm9vdF9zb3VyY2VfZGlyKSkKKyAg
ICAgICAgTElCUyArPSAkJGV2YWwoV0VCS0lULiQke2xpYnJhcnlfaWRlbnRpZmllcn0uZGVwZW5k
ZW50X2xpYnMpCisgICAgfQorfQorCitjcmVhdGluZ19tb2R1bGUgeworICAgICMgU2FuaXRpemUg
TElCUywgYXMgd2UgZG9uJ3Qgd2FudCBhbnkgb2YgdGhlc2UgbGlicmFyaWVzCisgICAgIyB0byBl
bmQgdXAgaW4gYXMgcHVibGljIEFQSSBkZXBlbmRlbmljZXMgaW4gdGhlIFF0V2ViS2l0IHBybCBm
aWxlLgorICAgIExJQlNfUFJJVkFURSArPSAkJExJQlMKKyAgICB1bnNldChMSUJTKQorICAgICMg
Q29weSBRdCBtb2R1bGUgZGVwZW5kZW5jaWVzIGZyb20gUVQgdG8gUVRfUFJJVkFURSB0byBlbnN1
cmUgdGhlCisgICAgIyBRdCBsaWJyYXJpZXMgYXJlIGxpbmtlZCBhZnRlciB0aGUgcHJpdmF0ZSBz
dGF0aWMgbGlicmFyaWVzIHRoYXQKKyAgICAjIGRlcGVuZCBvbiB0aGVtCisgICAgUVRfUFJJVkFU
RSArPSAkJFFUCit9CisKK2VxdWFscyhfUFJPX0ZJTEVfLCAkJHtST09UX1dFQktJVF9ESVJ9L1dl
YktpdC5wcm8pOiFpc0VtcHR5KE9WRVJSSURFX1NVQkRJUlMpIHsKKyAgICAjIFRoZSByb290IFdl
YktpdCBwcm9qZWN0IGZpbGUgaXMgdGhlIG9ubHkgb25lIHRoYXQgYWxsb3dzCisgICAgIyB5b3Ug
dG8gcGFzcyBhIHNldCBvZiBzdWJ0YXJnZXRzIG9uIHRoZSBjb21hbmQgbGluZS4KKyAgICBTVUJE
SVJTID0gJCRPVkVSUklERV9TVUJESVJTCit9CisKKyMgUmVtb3ZlIHN1YmRpcnMgdGhhdCBkbyBu
b3QgZXhpc3QKK2ZvcihzdWJkaXIsIFNVQkRJUlMpIHsKKyAgICBwYXRoID0gJCRldmFsKCQke3N1
YmRpcn0uZmlsZSkKKyAgICBpc0VtcHR5KHBhdGgpOiBwYXRoID0gJCRldmFsKCQke3N1YmRpcn0u
c3ViZGlyKQorICAgIGlzRW1wdHkocGF0aCk6IHBhdGggPSAkJHtzdWJkaXJ9CisgICAgIWV4aXN0
cygkJHtfUFJPX0ZJTEVfUFdEX30kJHtRTUFLRV9ESVJfU0VQfSQke3BhdGh9KSB7CisgICAgICAg
ICNtZXNzYWdlKFJlbW92aW5nIGludmFsaWQgc3VidGFyZ2V0ICQke3N1YmRpcn0gJCR7cGF0aH0p
CisgICAgICAgICNTVUJESVJTIC09ICQke3N1YmRpcn0KKyAgICB9Cit9CisKK3Jvb3RfcHJvamVj
dF9maWxlIHsKKyAgICAjIFR3ZWFrIGRvY3VtZW50YXRpb24gcnVsZXMgc28gdGhhdCB3ZSBvbmx5
IGdldCBkb2N1bWVudGF0aW9uCisgICAgIyBmb3IgdGhlIFF0V2ViS2l0IHN1YmRpciwgd2hpY2gg
bWVhbnMgd2UgZG9uJ3QgaGF2ZSB0byBydW4KKyAgICAjIHFtYWtlX2FsbCBhbmQgZ2VuZXJhdGUg
YWxsIHRoZSBkZXJpdmVkIHNvdXJjZXMsIGp1c3QgdG8KKyAgICAjIGJ1aWxkIGRvY3VtZW50YXRp
b24uCisgICAgcHJldmlvdXNfc3ViZGlyID0KKyAgICBkb2NfdGFyZ2V0cyA9IGRvY3MgaW5zdGFs
bF9kb2NzIHVuaW5zdGFsbF9kb2NzIHByZXBhcmVfZG9jcyBnZW5lcmF0ZV9kb2NzCisgICAgZm9y
KHN1YmRpciwgU1VCRElSUykgeworICAgICAgICBlcXVhbHMoc3ViZGlyLCBRdFdlYktpdCkgewor
ICAgICAgICAgICAgZm9yKGRvY190YXJnZXQsIGRvY190YXJnZXRzKSB7CisgICAgICAgICAgICAg
ICAgIyBTaW5jZSB3ZSB1c2UgQ09ORklHICs9IG9yZGVyZWQsIHdlIG5lZWQgdG8gcHJvdmlkZSBh
IGZha2UgZHVtbXkKKyAgICAgICAgICAgICAgICAjIGRvYy10YXJnZXQgZm9yIHRoZSBpbW1lZGlh
dGUgZGVwZW5kZW5jeSBvZiB0aGUgUXRXZWJLaXQgdGFyZ2V0LgorICAgICAgICAgICAgICAgIGR1
bW15X3RhcmdldCA9IHN1Yi0kJHJlcGxhY2UoJCR7cHJldmlvdXNfc3ViZGlyfS5maWxlLCBbXmEt
ekEtWjAtOV9dLCAtKS0kJHtkb2NfdGFyZ2V0fV9vcmRlcmVkCisgICAgICAgICAgICAgICAgJCR7
ZHVtbXlfdGFyZ2V0fS50YXJnZXQgPSAkJHtkdW1teV90YXJnZXR9CisgICAgICAgICAgICAgICAg
UU1BS0VfRVhUUkFfVEFSR0VUUyArPSAkJHtkdW1teV90YXJnZXR9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmV2aW91c19zdWJkaXIgPSAkJHN1YmRpciAj
IFNhdmUgZm9yIGxhdGVyCisKKyAgICAgICAgICAgICMgRm9yIGFsbCB0aGUgb3RoZXIgc3ViZGly
cywgd2UgZGlzYWJsZSBkb2NzIHRoZSByZWd1bGFyIHdheQorICAgICAgICAgICAgZm9yKGRvY190
YXJnZXQsIGRvY190YXJnZXRzKTogJCR7c3ViZGlyfS5DT05GSUcgKz0gbm9fJCR7ZG9jX3Rhcmdl
dH1fdGFyZ2V0CisgICAgICAgIH0KKyAgICB9Cit9CisKK2luY3JlbWVudGFsLnRhcmdldCA9IGlu
Y3JlbWVudGFsCitpbmNyZW1lbnRhbC5jb21tYW5kcyA9ICQoTUFLRSkgLWYgJChNQUtFRklMRSkg
cW1ha2VfYWxsICYmICQoTUFLRSkgLWYgJChNQUtFRklMRSkKK1FNQUtFX0VYVFJBX1RBUkdFVFMg
Kz0gaW5jcmVtZW50YWwKKworY29udGFpbnMoVEVNUExBVEUsIGxpYikgeworICAgICMgVHJpZ2dl
cnMgdGhlIHJpZ2h0IGV4cG9ydCBtYWNyb3MgZm9yIFdlYktpdCBpbnRlcm5hbHMKKyAgICBERUZJ
TkVTICs9IEJVSUxESU5HXyQke1RBUkdFVH0KKworICAgICMgVHJpZ2dlcnMgdGhlIHJpZ2h0IGV4
cG9ydCBtYWNybyBmb3IgdGhlIFF0V2ViS2l0IEFQSSAoc2VlIHF3ZWJraXRnbG9iYWwuaCkKKyAg
ICAhY29udGFpbnMoUVQsIHdlYmtpdCl8ZXF1YWxzKE1PRFVMRSwgd2Via2l0d2lkZ2V0cyk6IERF
RklORVMgKz0gQlVJTERJTkdfV0VCS0lUCisKKyAgICAjIFByZXZlbnQgbmFtZSBjbGFzaGVzIHdo
ZW4gYnVpbGRpbmcgYm90aCBkZWJ1ZyBhbmQgcmVsZWFzZS4gUXQ1J3MgbW9kdWxlCisgICAgIyBz
eXN0ZW0gYWxyZWFkeSB0YWtlcyBjYXJlIG9mIHRoaXMgZm9yIHRoZSB0b3AgbGV2ZWwgUXRXZWJL
aXQgbGlicmFyeS4KKyAgICAhcXRfaW5zdGFsbF9tb2R1bGU6ZGVidWdfYW5kX3JlbGVhc2U6IFRB
UkdFVCA9ICQkcXRMaWJyYXJ5VGFyZ2V0KCQkVEFSR0VUKQorCisgICAgZ251X3RoaW5fYXJjaGl2
ZXMgeworICAgICAgICAjIFJlcGxhY2UgdGhlIGhhcmRjb2RlZCBhcmNoaXZlciBjb21tYW5kIGxp
bmUKKyAgICAgICAgIyBvcHRpb25zIHRvIHVzZSBHTlUgYXIncyB0aGluIGFyY2hpdmUgZm9ybWF0
LgorICAgICAgICBBUl9DT01NQU5EID0gJCRzcGxpdChRTUFLRV9BUiwgIiAiKQorICAgICAgICBR
TUFLRV9BUiA9ICQkbWVtYmVyKEFSX0NPTU1BTkQsIDApIGNydVQKKyAgICB9CisKKyAgICBpc0Vt
cHR5KERFU1RESVIpOiBERVNURElSID0gJCR0YXJnZXRTdWJEaXIoKQorCisgICAgREVGSU5FUyAr
PSBRVF9BU0NJSV9DQVNUX1dBUk5JTkdTCisKKyAgICAhcGx1Z2luIHsKKyAgICAgICAgY29udGFp
bnMoUVRfQ09ORklHLCByZWR1Y2VfZXhwb3J0cyk6Q09ORklHICs9IGhpZGVfc3ltYm9scworICAg
ICAgICB1bml4OmNvbnRhaW5zKFFUX0NPTkZJRywgcmVkdWNlX3JlbG9jYXRpb25zKTpDT05GSUcg
Kz0gYnN5bWJvbGljX2Z1bmN0aW9ucworICAgIH0KK30KKworIyBSZW1vdmUgZHVwbGljYXRlZCBz
b3VyY2VzCitTT1VSQ0VTID0gJCR1bmlxdWUoU09VUkNFUykKK09CSkVDVElWRV9TT1VSQ0VTID0g
JCR1bmlxdWUoT0JKRUNUSVZFX1NPVVJDRVMpCisKKyMgU29tZW9uZSBtaWdodCByZW1vdmUgYSBo
ZWFkZXIgZnJvbSB0aGUgdHJlZSB3aXRob3V0IHRvdWNoaW5nCisjIHRoZSBjb3JyZXNwb25kaW5n
IHByb2plY3QgZmlsZSwgZm9yIGV4YW1wbGUgaWYgdGhlIHByb2plY3QKKyMgZmlsZSBuZXZlciBo
YWQgdGhlIGhlYWRlciBpbiBIRUFERVJTLiBJbiB0aGF0IGNhc2Ugd2UgZG9uJ3QKKyMgd2FudCB3
YXJuaW5ncyBmcm9tIG1ha2UgYWJvdXQgIk5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQiLgoraWdub3Jl
X21pc3NpbmdfaGVhZGVycy50YXJnZXQgPSAlLmgKK2lnbm9yZV9taXNzaW5nX2hlYWRlcnMuY29t
bWFuZHMgPSAkJHtNQUtFRklMRV9OT09QX0NPTU1BTkR9CitRTUFLRV9FWFRSQV9UQVJHRVRTICs9
IGlnbm9yZV9taXNzaW5nX2hlYWRlcnMKKworIyBPdmVycmlkZSBkZWZhdWx0IHRhcmdldAorYnVp
bGRfcGFzczpidWlsZF9hbGw6ZGVmYXVsdF90YXJnZXQudGFyZ2V0ID0gYWxsCitlbHNlOiBkZWZh
dWx0X3RhcmdldC50YXJnZXQgPSBmaXJzdAorZm9yKHRhcmdldCwgJCRsaXN0KCQkdW5pcXVlKERF
RkFVTFRfVEFSR0VUUykpKSB7CisgICAgZGVmYXVsdF90YXJnZXQuZGVwZW5kcyArPSAkJHRhcmdl
dAorfQorIWlzRW1wdHkoZGVmYXVsdF90YXJnZXQuZGVwZW5kcyk6IFFNQUtFX0VYVFJBX1RBUkdF
VFMgKz0gZGVmYXVsdF90YXJnZXQKKworIyBRdCdzIGRlYnVnX2FuZF9yZWxlYXNlIGNvbmZpZyB3
aWxsIHJlcGxhY2UgZXZlcnkgb2NjdXJhbmNlIG9mCisjIFJlbGVhc2Ugb3IgRGVidWcgaW4gdGhl
IGRlc3RpbmF0aW9uIGRpci4gVGhpcyBmYWlscyB3aGVuIHRoZQorIyBkZXNpbmF0aW9uIGRpciBp
cyBhYnNvbHV0ZSBhbmQgY29udGFpbnMgYSBzdGF0aWMgcGF0aCBjb21wb25lbnQKKyMgdGhhdCBh
bHNvIGNvbnRhaW5zIGVpdGhlciBvZiB0aG9zZSB0d28gd29yZHMsIHNvIHdlIG1ha2UgREVTVERJ
UgorIyByZWxhdGl2ZS4KK0RFU1RESVIgPSAkJHJlcGxhY2UoREVTVERJUiwgXiQkcmVfZXNjYXBl
KCQke1JPT1RfQlVJTERfRElSfSksICQke0JVSUxEX1JPT1RfUkVMQVRJVkVfVE9fT1VUX1BXRH0p
CisKK2xvYWQoZGVmYXVsdF9wb3N0KSAjIExvYWQgUXQncyBkZWZhdWx0cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9kZWZhdWx0X3ByZS5wcmYgYi9Ub29scy9xbWFr
ZS9ta3NwZWNzL2ZlYXR1cmVzL2RlZmF1bHRfcHJlLnByZgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jMjY5ODNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy9kZWZhdWx0X3ByZS5wcmYKQEAgLTAsMCArMSwxMDkgQEAKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBRdFdlYktpdCBkZWZhdWx0cyBmb3IgcW1ha2UuIFRoZXNlIHJ1bGVzIGFyZSBwYXJz
ZWQgYmVmb3JlIHRoZQorIyBhY3R1YWwgcHJvamVjdCBmaWxlLgorIworIyBTZWUgJ1Rvb2xzL3Ft
YWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCisjIEFsbG93IGVudmlyb25tZW50IHR3ZWFrcyB0byBwcmUtbG9hZGVkIC5xbWFrZS5j
YWNoZSBjb250ZW50CitlbnZfY2FjaGUgPSAkJChRTUFLRV9DQUNIRV9FVkFMKQorZXZhbCgkJGVu
dl9jYWNoZSkKKworbG9hZChmdW5jdGlvbnMpCisKKyMgRklYTUU6IEluIHRoaXMgY2FzZSB3ZSBw
cm9iYWJseSB3YW50IHRvIGV4aXQgZWFybHkgc28gdGhhdCB3ZQorIyBkb24ndCBsb2FkIGFsbCBv
ZiB0aGUgY3VzdG9tIGJ1aWxkIHR3ZWFrcyBuZWVkbGVzc2x5LgorcHJvX2ZpbGUgPSAkJF9QUk9f
RklMRV8gIyBDaGVja2luZyB0aGUgdmFyaWFibGUgZGlyZWN0bHkgZG9lcyBub3Qgd29yaworaXNF
bXB0eShwcm9fZmlsZSk6IENPTkZJRyArPSByZWN1cnNpdmVfaW5jbHVkZQorCisjIFJlc29sdmUg
cm9vdCBkaXJlY3RvcmllcyBmb3Igc291cmNlIGFuZCBidWlsZAorUk9PVF9XRUJLSVRfRElSID0g
JCRyZXBsYWNlKFBXRCwgL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMkLCkKK1dFQktJVF9T
VUJESVIgPSAkJHJlcGxhY2UoX1BST19GSUxFX1BXRF8sICQkcmVfZXNjYXBlKCQke1JPT1RfV0VC
S0lUX0RJUn0pLCkKK1JPT1RfQlVJTERfRElSID0gJCRyZXBsYWNlKE9VVF9QV0QsICQkcmVfZXNj
YXBlKCQke1dFQktJVF9TVUJESVJ9KSQsKQorCisjIE5vdyB3ZSdyZSByZWFkeSB0byBsb2FkIGRl
ZmF1bHRfcHJlIGZyb20gUXQKK2xvYWQoZGVmYXVsdF9wcmUpCisKK2VxdWFscyhPVVRfUFdELCAk
JHtST09UX0JVSUxEX0RJUn0pIHsKKyAgICAhcmVjdXJzaXZlX2luY2x1ZGU6Q09ORklHICs9IHJv
b3RfcHJvamVjdF9maWxlCisgICAgQlVJTERfUk9PVF9SRUxBVElWRV9UT19PVVRfUFdEID0gLgor
fSBlbHNlIHsKKyAgICBzdWJkaXJfcGFydHMgPSAkJHJlcGxhY2UoT1VUX1BXRCwgXiQkcmVfZXNj
YXBlKCQke1JPT1RfQlVJTERfRElSfSkvLCkKKyAgICBzdWJkaXJfcGFydHMgPSAkJHNwbGl0KHN1
YmRpcl9wYXJ0cywgLykKKyAgICBmb3Ioc3ViZGlyLCBzdWJkaXJfcGFydHMpIHsKKyAgICAgICAg
QlVJTERfUk9PVF9SRUxBVElWRV9UT19PVVRfUFdEICs9IC4uCisgICAgfQorICAgIEJVSUxEX1JP
T1RfUkVMQVRJVkVfVE9fT1VUX1BXRCA9ICQkam9pbihCVUlMRF9ST09UX1JFTEFUSVZFX1RPX09V
VF9QV0QsIC8pCit9CisKKyMgVHJ5IHRvIGRldGVjdCBpZiB3ZSdyZSBydW5uaW5nIHVuZGVyIFdp
bmRvd3MgY21kLmV4ZSBvciBub3QKK3dpbjMyOmlzRW1wdHkoTUlOR1dfSU5fU0hFTEwpOiBDT05G
SUcgKz0gd2luX2NtZF9zaGVsbAorCisjIERlZmF1bHQgbG9jYXRpb24gb2YgZ2VuZXJhdGVkIHNv
dXJjZXMKK0dFTkVSQVRFRF9TT1VSQ0VTX0RFU1RESVIgPSBnZW5lcmF0ZWQKKworUVVPVEUgPSAi
IgorRE9VQkxFX0VTQ0FQRURfUVVPVEUgPSAiIgorRVNDQVBFID0gIiIKK3dpbl9jbWRfc2hlbGwg
eworICAgIEVTQ0FQRSA9ICJeIgorfSBlbHNlIHsKKyAgICBRVU9URSA9ICJcJyIKKyAgICBET1VC
TEVfRVNDQVBFRF9RVU9URSA9ICJcXFwnIgorfQorRU9MID0gJCRlc2NhcGVfZXhwYW5kKFxcbikK
K0VPQyA9ICQkZXNjYXBlX2V4cGFuZChcXG5cXHQpCitUQUIgPSAkJGVzY2FwZV9leHBhbmQoXFx0
KQorCitNQUtFRklMRV9OT09QX0NPTU1BTkQgPSBAZWNobyAtbgord2luMzItbXN2Yyo6IE1BS0VG
SUxFX05PT1BfQ09NTUFORCA9IEBlY2hvID5OVUwKKworIyBTZXQgdXAgYSBkZWZhdWx0IHB5dGhv
biB2ZXJzaW9uCitzY3JhdGNoYm94OiBQWVRIT04gPSBweXRob24yLjYKK2Vsc2U6IFBZVEhPTiA9
IHB5dGhvbgorCisjIFdlIHVzZSBwcml2YXRlX3Rlc3RzIHRvIGRldGVjdCBkZXZlbG9wZXIgYnVp
bGQsIHNpbmNlIHRoZSBkZXN0ZGlyIHdpbGwKKyMgYWx3YXlzIGJlIG91ciB3ZWJraXQgYnVpbGQg
ZGlyLiBUaGlzIG1pZ2h0IGNoYW5nZSBhcyBjb25maWd1cmUgY2hhbmdlcy4KK2NvbnRhaW5zKFFU
X0NPTkZJRywgcHJpdmF0ZV90ZXN0cyk6IENPTkZJRyArPSBxdF9kZXZlbG9wZXJfYnVpbGQKKwor
IyBCeSBkZWZhdWx0IHdlIGVuYWJsZSAicHJvZHVjdGlvbiBidWlsZCIsIGFuZCBidWlsZC13ZWJr
aXQsIHdoaWNoIGlzCisjIHVzZWQgYnkgYm90cyBhbmQgZGV2ZWxvcGVycywgd2lsbCBkaXNhYmxl
IGl0LCB0byBlbmFibGUgd2FybmluZ3MgZXRjLgorQ09ORklHICs9IHByb2R1Y3Rpb25fYnVpbGQK
KworIyBSdW4gY29uZmlndXJlIGJlZm9yZSBtYWtpbmcgZGVjaXNpb25zIHRoYXQgZGVwZW5kIG9u
IHRoZSByZXN1bHQKK3Jvb3RfcHJvamVjdF9maWxlIHsKKyAgICBsb2FkKGNvbmZpZ3VyZSkKKyAg
ICBydW5Db25maWd1cmUoKQorfQorCit1bml4OmNvbmZpZ19nY2NkZXBlbmRzIHsKKyAgICAjIFdl
IGhhdmUgYSBjb21waWxlciB0aGF0IHN1cHBvcnRzIHRoZSAtTUQgb3B0aW9uIChhbmQgbmVpdGhl
cgorICAgICMgdGVhbWJ1aWxkZXIgbm9yIGljZWNyZWFtIGlzIG1lc3NpbmcgdXAgdGhlIC5kIGZp
bGUgb3V0cHV0KS4KKyAgICBDT05GSUcgKz0gR05VbWFrZSBnY2NfTURfZGVwZW5kcworfQorCisj
IFNldCBzb21lIGRlZmF1bHRzIGZvciBzcGVjaWZpYyBwbGF0Zm9ybXMKK0NPTkZJRyArPSBpbmNs
dWRlX3dlYmluc3BlY3RvcgorCisjIE1ha2Ugc3VyZSB3ZSBwcm9jZXNzIHRoZSBQS0dDT05GSUcg
dmFyaWFibGUgaWYgYXBwbGljYWJsZQorIW1hYzogQ09ORklHICs9IGxpbmtfcGtnY29uZmlnCisK
KyMgTGltaXQgdGhlIGNyZWF0aW9uIG9mIHRoaW4gYXJjaGl2ZXMgdG8gTGludXgsIHNpbmNlIG9u
bHkgR05VJ3MgYXIgc3VwcG9ydHMgaXQuCishZGVidWdfYW5kX3JlbGVhc2U6bGludXgtZysrKjog
Q09ORklHICs9IGdudV90aGluX2FyY2hpdmVzCisKKyMgUGljayB1cCBRdCdzIGRlZmF1bHRzIGZv
ciBkZWJ1Zy9yZWxlYXNlL2RlYnVnX2FuZF9yZWxlYXNlCitpZih3aW4zMnxtYWMpOiFtYWN4LXhj
b2RlIHsKKyAgICBjb250YWlucyhRVF9DT05GSUcsIGRlYnVnX2FuZF9yZWxlYXNlKTogQ09ORklH
ICs9IGRlYnVnX2FuZF9yZWxlYXNlCisgICAgY29udGFpbnMoUVRfQ09ORklHLCBidWlsZF9hbGwp
OiBDT05GSUcgKz0gYnVpbGRfYWxsCit9CisKKyMgV2ViS2l0IGRlcGVuZHMgb24gQysrMTEgbm93
LgorQ09ORklHICs9IGMrKzExCisKKyMgQSBuZXdlciB2ZXJzaW9uIG9mIGZsZXggaXMgcmVxdWly
ZWQgb24gV2luZG93cy4gQXQgdGhlIG1vbWVudCB0aGUgb25seQorIyBvbmUgdGhhdCBhcHBlYXJz
IHRvIHByb3ZpZGUgYmluYXJpZXMgYW5kIGlzIG5vdCBjeWd3aW4gaXMgd2luZmxleC4KK0ZMRVgg
PSBmbGV4Cit3aW4zMjogRkxFWCA9IHdpbl9mbGV4CisKK0JJTl9FWFRFTlNJT04gPQord2luMzI6
IEJJTl9FWFRFTlNJT04gPSAuZXhlCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL2ZlYXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVy
ZXMucHJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MzJmY2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgpA
QCAtMCwwICsxLDE3OCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgZmlsZSBkb2VzIGJhc2ljICdj
b25maWd1cmUnIHN0eWxlIGNoZWNrcyB0byBkZXRlcm1pbmUgdGhlCisjIHNldCBvZiBlbmFibGUv
dXNlL2hhdmUgZGVmaW5lcyBhbmQgdGhlaXIgdmFsdWVzLgorIworIyBTZWUgJ1Rvb2xzL3FtYWtl
L1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitkZWZpbmVUZXN0KGRldGVjdEZlYXR1cmVzKSB7CisKKyAgICAjIC0tLS0tLS0tLS0tLS0t
IEZpbGwgaW4gc3RhdGljIGRlZmF1bHRzIC0tLS0tLS0tLS0tLS0tCisKKyAgICBpbmNsdWRlKGZl
YXR1cmVzLnByaSkKKworICAgIGZvcihmZWF0dXJlLCBGRUFUVVJFX0RFRkFVTFRTKSB7CisgICAg
ICAgIGVuYWJsZWRGZWF0dXJlID0gJCRmaW5kKGZlYXR1cmUsID0xJCkKKyAgICAgICAgIWlzRW1w
dHkoZW5hYmxlZEZlYXR1cmUpIHsKKyAgICAgICAgbGluZSB+PSBzL14uK2luY2x1ZGUgXCIoLiop
XCIvXFwxLworICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmUgfj0gcy89MSQvLworICAgICAgICAg
ICAgZW5hYmxlZEZlYXR1cmUgfj0gcy9eRU5BQkxFXy8vCisgICAgICAgICAgICBXRUJLSVRfQ09O
RklHICs9ICQkbG93ZXIoJCRlbmFibGVkRmVhdHVyZSkKKyAgICAgICAgfQorICAgIH0KKworICAg
IFdFQktJVF9DT05GSUcgKz0gdXNlX3RpbGVkX2JhY2tpbmdfc3RvcmUKKyAgICBXRUJLSVRfQ09O
RklHICs9IHVzZV9jcm9zc19wbGF0Zm9ybV9jb250ZXh0X21lbnVzCisKKyAgICAjIC0tLS0tLS0t
LS0tLS0gUHJlcGFyZSBmb3IgZmVhdHVyZSBkZXRlY3Rpb24gLS0tLS0tLS0tLS0tLQorCisgICAg
IyAtLS0tLS0tLS0tIER5bmFtaWNhbGx5IGRldGVjdCBvcHRpb25hbCBmZWF0dXJlcyAtLS0tLS0t
LS0tLS0tCisgICAgIworICAgICMgUGxlYXNlIG5vdGU6IHN0YXRpYyBmZWF0dXJlIGRlZmF1bHRz
IGdvIGluIGZlYXR1cmVzLnByaQorICAgICMKKworICAgIHF0SGF2ZU1vZHVsZShxdWljayk6IFdF
QktJVF9DT05GSUcgKz0gaGF2ZV9xdHF1aWNrCisgICAgZWxzZTogQ09ORklHVVJFX1dBUk5JTkdT
ICs9ICJRdFF1aWNrIG1vZHVsZSBub3QgZm91bmQsIFFNTCBBUElzIHdpbGwgbm90IGJlIGJ1aWx0
IgorCisgICAgcXRIYXZlTW9kdWxlKHByaW50c3VwcG9ydCk6IFdFQktJVF9DT05GSUcgKz0gaGF2
ZV9xdHByaW50c3VwcG9ydAorICAgIHF0SGF2ZU1vZHVsZSh3aWRnZXRzKTogV0VCS0lUX0NPTkZJ
RyArPSBoYXZlX3FzdHlsZQorICAgIHF0SGF2ZU1vZHVsZSh0ZXN0bGliKTogV0VCS0lUX0NPTkZJ
RyArPSBoYXZlX3F0dGVzdGxpYgorICAgIHF0SGF2ZU1vZHVsZShwb3NpdGlvbmluZyk6IFdFQktJ
VF9DT05GSUcgKz0gaGF2ZV9xdHBvc2l0aW9uaW5nCisgICAgcXRIYXZlTW9kdWxlKHNlbnNvcnMp
OiBXRUJLSVRfQ09ORklHICs9IGhhdmVfcXRzZW5zb3JzCisKKyAgICBjb25maWdfbGlieG1sMjog
V0VCS0lUX0NPTkZJRyArPSB1c2VfbGlieG1sMgorICAgIGNvbmZpZ19saWJ4c2x0OiBXRUJLSVRf
Q09ORklHICs9IHhzbHQKKyAgICBjb25maWdfbGliemxpYjogV0VCS0lUX0NPTkZJRyArPSB1c2Vf
emxpYgorICAgIGNvbmZpZ19saWJ3ZWJwOiBXRUJLSVRfQ09ORklHICs9IHVzZV93ZWJwCisKKyAg
ICAjIFdlIGNhbid0IHVzZSBRdCdzIDNyZHBhcnR5IHNvdXJjZXMgZm9yIGxpYmpwZWcgYW5kIGxp
YnBuZyBvdXRzaWRlIG9mIHF0YmFzZSwgYnV0IGlmIFF0CisgICAgIyBpcyB1c2luZyB0aGUgc3lz
dGVtIGxpYnJhcmllcywgdXNlIHRoZW0gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIFdlYkNvcmUg
aW1hZ2UgZGVjb2RlcnMgYXMgd2VsbC4KKyAgICBjb250YWlucyhRVF9DT05GSUcsIHN5c3RlbS1q
cGVnKTogV0VCS0lUX0NPTkZJRyArPSB1c2VfbGlianBlZworICAgIGVsc2U6IENPTkZJR1VSRV9X
QVJOSU5HUyArPSAiSlBFRyBsaWJyYXJ5IG5vdCBmb3VuZCwgUUltYWdlRGVjb2RlciB3aWxsIGRl
Y29kZSBKUEVHIGltYWdlcyIKKworICAgIGNvbnRhaW5zKFFUX0NPTkZJRywgc3lzdGVtLXBuZyk6
IFdFQktJVF9DT05GSUcgKz0gdXNlX2xpYnBuZworICAgIGVsc2U6IENPTkZJR1VSRV9XQVJOSU5H
UyArPSAiUE5HIGxpYnJhcnkgbm90IGZvdW5kLCBRSW1hZ2VEZWNvZGVyIHdpbGwgZGVjb2RlIFBO
RyBpbWFnZXMiCisKKyAgICBsaW51eC0qIHsKKyAgICAgICAgY29uZmlnX2xpYlhjb21wb3NpdGU6
IFdFQktJVF9DT05GSUcgKz0gaGF2ZV94Y29tcG9zaXRlCisgICAgICAgIGNvbmZpZ19saWJYcmVu
ZGVyOiBXRUJLSVRfQ09ORklHICs9IGhhdmVfeHJlbmRlcgorCisgICAgICAgIGNvbmZpZ19nbHg6
IWNvbnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsZXMyKTogV0VCS0lUX0NPTkZJRyArPSBoYXZlX2ds
eAorCisgICAgICAgICMgV2UgbmVlZCBmb250Y29uZmlnIHRvIHNldCB1cCB0aGUgdGVzdCBmb250
cyBmb3IgRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGNvbmZp
Z19mb250Y29uZmlnOiBXRUJLSVRfQ09ORklHICs9IGhhdmVfZm9udGNvbmZpZworICAgIH0KKwor
ICAgICMgTmVzY2FwZSBwbHVnaW5zIHN1cHBvcnQgKE5QQVBJKQorICAgIHhsaWJBdmFpbGFibGUo
KSB7CisgICAgICAgIFdFQktJVF9DT05GSUcgKz0gXAorICAgICAgICAgICAgbmV0c2NhcGVfcGx1
Z2luX2FwaSBcCisgICAgICAgICAgICB1c2VfcGx1Z2luX2JhY2tlbmRfeGxpYgorCisgICAgICAg
ICMgV2ViS2l0MgorICAgICAgICBXRUJLSVRfQ09ORklHICs9IFwKKyAgICAgICAgICAgIHBsdWdp
bl9hcmNoaXRlY3R1cmVfeDExIFwKKyAgICAgICAgICAgIHBsdWdpbl9wcm9jZXNzCisKKyAgICB9
IGVsc2U6IHVuaXh8d2luMzItKjohZW1iZWRkZWQ6IXdpbmNlKiB7CisgICAgICAgIFdFQktJVF9D
T05GSUcgKz0gbmV0c2NhcGVfcGx1Z2luX2FwaQorICAgICAgICAjIFdlYktpdDIKKyAgICAgICAg
V0VCS0lUX0NPTkZJRyArPSBwbHVnaW5fYXJjaGl0ZWN0dXJlX3Vuc3VwcG9ydGVkCisgICAgfSBl
bHNlIHsKKyAgICAgICAgV0VCS0lUX0NPTkZJRyArPSBwbHVnaW5fYXJjaGl0ZWN0dXJlX3Vuc3Vw
cG9ydGVkCisgICAgfQorCisgICAgIyBFbmFibGUgdGhlIFVTRSgzRF9HUkFQSElDUykgZmxhZyB3
aGVuIFF0T3BlbkdMIGlzIGVuYWJsZWQuCisgICAgIyBEaXNhYmxlIG9uIFdpbmRvd3MgQ0UgZm9y
IG5vdywgYXMgQU5HTEUgd29uJ3QgY29tcGlsZS4KKyAgICAhd2luY2UqOmNvbnRhaW5zKFFUX0NP
TkZJRywgb3BlbmdsKTogV0VCS0lUX0NPTkZJRyArPSB1c2VfM2RfZ3JhcGhpY3MKKworICAgICMg
VGVtcG9yYXJpbHkgZGlzYWJsZSBGVFBESVIgb24gV2luZG93cyBDRSAobWlzc2luZyBmdW5jdGlv
bnMgZnJvbSB0aW1lLmgpCisgICAgd2luY2UqIHsKKyAgICAgICAgV0VCS0lUX0NPTkZJRyAtPSBm
dHBkaXIKKyAgICB9CisKKyAgICAjIFdlYkdMIHN1cHBvcnQgLSBvbmx5IGVuYWJsZWQgaWYgd2Ug
Y2FuIHVzZSAzRCBncmFwaGljcworICAgIHVzZT8oM2RfZ3JhcGhpY3MpOiBXRUJLSVRfQ09ORklH
ICs9IHdlYmdsCisKKyAgICAjIEVuYWJsZSBDU1Mgc2hhZGVycyB3aGVuIENTUyBmaWx0ZXJzIGFu
ZCBXZWJHTCBhcmUgZW5hYmxlZAorICAgIGVuYWJsZT8oY3NzX2ZpbHRlcnMpOmVuYWJsZT8od2Vi
Z2wpOiBXRUJLSVRfQ09ORklHICs9IGNzc19zaGFkZXJzCisKKyAgICAjIEhUTUw1IE1lZGlhIFN1
cHBvcnQgZm9yIG5vbi1NYWMgYnVpbGRzCisgICAgIW1hYyB7CisgICAgICAgICFjb250YWlucyhR
VF9DT05GSUcsIG5vLXBrZy1jb25maWcpIHsKKyAgICAgICAgICAgIHBhY2thZ2VzRXhpc3QoImds
aWItMi4wIGdpby0yLjAgZ3N0cmVhbWVyLTEuMCBnc3RyZWFtZXItcGx1Z2lucy1iYXNlLTEuMCIp
IHsKKyAgICAgICAgICAgICAgICBXRUJLSVRfQ09ORklHICs9IHZpZGVvIHVzZV9nc3RyZWFtZXIK
KyAgICAgICAgICAgIH0gZWxzZTogcGFja2FnZXNFeGlzdCgiZ2xpYi0yLjAgZ2lvLTIuMCBcJ2dz
dHJlYW1lci0wLjEwID49IDAuMTAuMzBcJyBcJ2dzdHJlYW1lci1wbHVnaW5zLWJhc2UtMC4xMCA+
PSAwLjEwLjMwXCciKSB7CisgICAgICAgICAgICAgICAgV0VCS0lUX0NPTkZJRyArPSB2aWRlbyB1
c2VfZ3N0cmVhbWVyIHVzZV9nc3RyZWFtZXIwMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgICFlbmFibGU/KHZpZGVvKTpxdEhhdmVNb2R1bGUobXVsdGltZWRpYXdpZGdl
dHMpIHsKKyAgICAgICAgV0VCS0lUX0NPTkZJRyArPSB2aWRlbyB1c2VfcXRfbXVsdGltZWRpYQor
ICAgIH0KKworICAgICFlbmFibGU/KHZpZGVvKSB7CisgICAgICAgIENPTkZJR1VSRV9XQVJOSU5H
UyArPSAiTWlzc2luZyBHU3RyZWFtZXIsIFFUS2l0IG9yIFF0TXVsdGltZWRpYSwgZGlzYWJsaW5n
IG1lZGlhIGVsZW1lbnQgc3VwcG9ydCIKKyAgICB9CisKKyAgICAjIFRyeSB0byB1c2UgYW4gc3lz
dGVtIHdpZGUgU1FsaXRlIGluc3RhbGxhdGlvbgorICAgIGlmKCFjb250YWlucyhRVF9DT05GSUcs
IG5vLXBrZy1jb25maWcpOnBhY2thZ2VzRXhpc3QoInNxbGl0ZTMiKSl8bWFjIHsKKyAgICAgICAg
V0VCS0lUX0NPTkZJRyArPSBoYXZlX3NxbGl0ZTMKKyAgICB9IGVsc2UgeworICAgICAgICBTUUxJ
VEUzU1JDRElSID0gJCQoU1FMSVRFM1NSQ0RJUikKKyAgICAgICAgaXNFbXB0eShTUUxJVEUzU1JD
RElSKTppc0VtcHR5KF9RTUFLRV9TVVBFUl9DQUNIRV8pOiBlcnJvcigiV2ViS2l0IHJlcXVpcmVz
IFNRTGl0ZS4gRWl0aGVyIG1ha2UgaXQgYXZhaWxhYmxlIHZpYSBwa2ctY29uZmlnLCBzZXQgJFNR
TElURTNTUkNESVIgb3IgYnVpbGQgV2ViS2l0IHVuZGVyIHF0NS5naXQuIikKKyAgICB9CisKKyAg
ICAjIEdhbWVwYWQgQVBJIFN1cHBvcnQKKyAgICBwYWNrYWdlc0V4aXN0KGxpYnVkZXYpOiBXRUJL
SVRfQ09ORklHICs9IGdhbWVwYWQKKworICAgICMgU3VwcG9ydCBmb3IgR3JhcGhpY3MgU3VyZmFj
ZQorICAgICMgR3JhcGhpY3NTdXJmYWNlIHJlcXVpcmVzIEdyYXBoaWNzQ29udGV4dDNEIGFuZCBo
ZW5jZSB1c2VfM2RfZ3JhcGhpY3MKKyAgICB1c2U/KDNkX2dyYXBoaWNzKSB7CisgICAgICAgIG1h
YzogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nfc3VyZmFjZQorICAgICAgICB3aW4zMjpj
b250YWlucyhRVF9DT05GSUcsIG9wZW5nbGVzMik6IFdFQktJVF9DT05GSUcgKz0gdXNlX2dyYXBo
aWNzX3N1cmZhY2UKKyAgICAgICAgaGF2ZT8oZ2x4KTpoYXZlPyh4Y29tcG9zaXRlKTpoYXZlPyh4
cmVuZGVyKTogV0VCS0lUX0NPTkZJRyArPSB1c2VfZ3JhcGhpY3Nfc3VyZmFjZSB1c2VfZ2x4Cisg
ICAgfQorCisgICAgIyBTbGlkZXIgVG91Y2ggaXMgc2Vuc2libGUgdG8gdXNlIHdoZW4gY29tcGls
aW5nIFdlYktpdDIKKyAgICBlbmFibGU/KHRvdWNoX2V2ZW50cyk6IFdFQktJVF9DT05GSUcgKz0g
dG91Y2hfc2xpZGVyCisKKworCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tIFNhbml0aXplIGZlYXR1
cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGV4cG9ydChXRUJLSVRfQ09ORklHKQorICAg
IGV4cG9ydChDT05GSUdVUkVfV0FSTklOR1MpCit9CisKK2RlZmluZVRlc3Qoc2FudGl6ZUZlYXR1
cmVzKSB7CisgICAgIyBJZiB3ZSBhcmUgZG9pbmcgYSBwcm9kdWN0aW9uX2J1aWxkIHdlIHNob3Vs
ZCBvbmx5IGVuYWJsZSBHZW9sb2NhdGlvbiBzdXBwb3J0IGlmIFF0UG9zaXRpb25pbmcgZXhpc3Rz
LiBJbiBkZXZlbG9wZXIgYnVpbGRzIHdlIGNhbiB1c2UgTW9jayBpbXBsZW1lbnRhdGlvbnMuCisg
ICAgcHJvZHVjdGlvbl9idWlsZDohaGF2ZT8ocXRwb3NpdGlvbmluZyk6IFdFQktJVF9DT05GSUcg
LT0gZ2VvbG9jYXRpb24KKworICAgICMgSWYgd2UgYXJlIGRvaW5nIGEgcHJvZHVjdGlvbl9idWls
ZCB3ZSBzaG91bGQgb25seSBlbmFibGUgT3JpZW50YXRpb24gc3VwcG9ydCBpZiBRdFNlbnNvcnMg
ZXhpc3RzLiBJbiBkZXZlbG9wZXIgYnVpbGRzIHdlIGNhbiB1c2UgTW9jayBpbXBsZW1lbnRhdGlv
bnMuCisgICAgcHJvZHVjdGlvbl9idWlsZDohaGF2ZT8ocXRzZW5zb3JzKTogV0VCS0lUX0NPTkZJ
RyAtPSBvcmllbnRhdGlvbl9ldmVudHMgZGV2aWNlX29yaWVudGF0aW9uCisKKyAgICAjIERpc2Fi
bGUgU1ZHIGZvbnRzIGlmIFNWRyBpcyBkaXNhYmxlZAorICAgICFlbmFibGU/KHN2Zyk6IFdFQktJ
VF9DT05GSUcgLT0gc3ZnX2ZvbnRzCisKKyAgICAjIEphdmFTY3JpcHQgZGVidWdnZXIgcmVxdWly
ZXMgdGhlIGluc3BlY3RvcgorICAgICFlbmFibGU/KGluc3BlY3Rvcik6IFdFQktJVF9DT05GSUcg
LT0gamF2YXNjcmlwdF9kZWJ1Z2dlciBpbnNwZWN0b3Jfc2VydmVyCisKKyAgICAjIERpc2FibGUg
YW5pbWF0ZWQgc21vb3RoIHNjcm9sbGluZyBpZiByZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZSBpcyBk
aXNhYmxlZAorICAgICFlbmFibGU/KHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lKTogV0VCS0lUX0NP
TkZJRyAtPSBzbW9vdGhfc2Nyb2xsaW5nCisKKyAgICAjIEZ1bGxzY3JlZW4gQVBJIHJlbGllcyBv
biBXZWJLaXQyCisgICAgIWJ1aWxkPyh3ZWJraXQyKTogV0VCS0lUX0NPTkZJRyAtPSBmdWxsc2Ny
ZWVuX2FwaQorCisgICAgIyBXSzIncyBwbHVnaW4gcHJvY2VzcyBjb2RlIHJlcXVpcmVzIE5QQVBJ
CisgICAgIWVuYWJsZT8obmV0c2NhcGVfcGx1Z2luX2FwaSk6IFdFQktJVF9DT05GSUcgLT0gcGx1
Z2luX3Byb2Nlc3MKKworICAgICMgV2ViIEF1ZGlvIHJlcXVpcmVzIEdTdHJlYW1lci4KKyAgICAh
dXNlPyhnc3RyZWFtZXIpOiBXRUJLSVRfQ09ORklHIC09IHdlYl9hdWRpbworCisgICAgIyBNaW5p
YnJvd3NlciBtdXN0IGJlIGFibGUgdG8gcXVlcnkgZm9yIFF0VGVzdFN1cHBvcnQKKyAgICBidWls
ZD8ocXR0ZXN0c3VwcG9ydCk6IFdFQktJVF9DT05GSUcgKz0gaGF2ZV9xdHRlc3RzdXBwb3J0CisK
KyAgICBleHBvcnQoV0VCS0lUX0NPTkZJRykKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21r
c3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJpIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJl
cy9mZWF0dXJlcy5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU5NDRk
MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVy
ZXMucHJpCkBAIC0wLDAgKzEsMTMyIEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhpcyBmaWxlIGNvbnRh
aW5zIGEgc3RhdGljIGxpc3Qgb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUKKyMgRU5BQkxF
X0ZPTyBmZWF0dXJlcyBvZiBXZWJLaXQuCisjCisjIElmIGEgZmVhdHVyZSBpcyBlbmFibGVkLCBp
dCBtb3N0IGxpa2VseSBkb2VzIG5vdCBoYXZlIGFueSBkZXRlY3Rpb24KKyMgaW4gZmVhdHVyZXMu
cHJmIGV4Y2VwdCBiYXNpYyBzYW5pdGF6aW9uLiBJZiBhIGZlYXR1cmUgaXMgZGlzYWJsZWQgaXQK
KyMgd2lsbCBoYXZlIGRldGVjdGlvbiBpbiBmZWF0dXJlcy5wcmYsIHVubGVzcyBpdCdzIHNvbWV0
aGluZyB3ZQorIyBjb21wbGV0ZWx5IGRpc2FibGUuCisjCisjIEZJWE1FOiBBZGQgd2FybmluZyBh
Ym91dCBhdXRvLWdlbmVyYXRpbmcgd2hlbiBGZWF0dXJlcy5weSBsYW5kCisjCisjIFNlZSAnVG9v
bHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK0ZFQVRVUkVfREVGQVVMVFMgPSBcCisgICAgRU5BQkxFXzNEX1JFTkRFUklO
Rz0xIFwKKyAgICBFTkFCTEVfOEJJVF9URVhUUlVOPTAgXAorICAgIEVOQUJMRV9BQ0NFTEVSQVRF
RF8yRF9DQU5WQVM9MCBcCisgICAgRU5BQkxFX0JBVFRFUllfU1RBVFVTPTAgXAorICAgIEVOQUJM
RV9CTE9CPTEgXAorICAgIEVOQUJMRV9DQU5WQVNfUEFUSD0xIFwKKyAgICBFTkFCTEVfQ0FOVkFT
X1BST1hZPTAgXAorICAgIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORz0xIFwKKyAgICBFTkFCTEVf
Q1NQX05FWFQ9MCBcCisgICAgRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSz0xIFwKKyAg
ICBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HPTEgXAorICAgIEVOQUJMRV9DU1NfREVWSUNFX0FEQVBU
QVRJT049MCBcCisgICAgRU5BQkxFX0NTU19FWENMVVNJT05TPTEgXAorICAgIEVOQUJMRV9DU1Nf
RklMVEVSUz0xIFwKKyAgICBFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OPTAgXAorICAgIEVO
QUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTj0wIFwKKyAgICBFTkFCTEVfQ1NTX0lNQUdFX1NFVD0x
IFwKKyAgICBFTkFCTEVfQ1NTX1JFR0lPTlM9MSBcCisgICAgRU5BQkxFX0NTU19TSEFERVJTPTAg
XAorICAgIEVOQUJMRV9DU1NfU0hBUEVTPTEgXAorICAgIEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lU
SU9OPTEgXAorICAgIEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQ9
MSBcCisgICAgRU5BQkxFX0NTU19WQVJJQUJMRVM9MCBcCisgICAgRU5BQkxFX0NTUzNfQ09ORElU
SU9OQUxfUlVMRVM9MCBcCisgICAgRU5BQkxFX0NTUzNfVEVYVD0wIFwKKyAgICBFTkFCTEVfQ1NT
M19URVhUX0xJTkVfQlJFQUs9MCBcCisgICAgRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUj0w
IFwKKyAgICBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ9MCBcCisgICAgRU5BQkxFX0RBVEFHUklE
PTAgXAorICAgIEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UPTEgXAorICAgIEVOQUJMRV9EQVRBX1RS
QU5TRkVSX0lURU1TPTAgXAorICAgIEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQ9MSBcCisgICAgRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTj0xIFwKKyAgICBFTkFCTEVfRElSRUNUT1JZX1VQTE9BRD0w
IFwKKyAgICBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I9MCBcCisgICAgRU5BQkxFX0RP
V05MT0FEX0FUVFJJQlVURT0wIFwKKyAgICBFTkFCTEVfRkFTVF9NT0JJTEVfU0NST0xMSU5HPTEg
XAorICAgIEVOQUJMRV9GSUxURVJTPTEgXAorICAgIEVOQUJMRV9GT05UX0xPQURfRVZFTlRTPTAg
XAorICAgIEVOQUJMRV9GVExfSklUPTAgXAorICAgIEVOQUJMRV9GVFBESVI9MSBcCisgICAgRU5B
QkxFX0ZVTExTQ1JFRU5fQVBJPTEgXAorICAgIEVOQUJMRV9HQU1FUEFEPTAgXAorICAgIEVOQUJM
RV9HRU9MT0NBVElPTj0xIFwKKyAgICBFTkFCTEVfR0VTVFVSRV9FVkVOVFM9MSBcCisgICAgRU5B
QkxFX0hJR0hfRFBJX0NBTlZBUz0wIFwKKyAgICBFTkFCTEVfSUNPTkRBVEFCQVNFPTEgXAorICAg
IEVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MSBcCisgICAgRU5BQkxFX0lOREVYRURfREFUQUJBU0U9
MCBcCisgICAgRU5BQkxFX0lOUFVUX1NQRUVDSD0wIFwKKyAgICBFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUj0xIFwKKyAgICBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFPTAgXAorICAgIEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEU9MCBcCisgICAgRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUVMT0NBTD0wIFwKKyAgICBFTkFCTEVfSU5QVVRfVFlQRV9NT05USD0wIFwKKyAgICBFTkFC
TEVfSU5QVVRfVFlQRV9USU1FPTAgXAorICAgIEVOQUJMRV9JTlBVVF9UWVBFX1dFRUs9MCBcCisg
ICAgRU5BQkxFX0lOU1BFQ1RPUj0xIFwKKyAgICBFTkFCTEVfSU5TUEVDVE9SX1NFUlZFUj0xIFwK
KyAgICBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUj0xIFwKKyAgICBFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVM9MCBcCisgICAgRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TPTEg
XAorICAgIEVOQUJMRV9MRUdBQ1lfVklFV1BPUlRfQURBUFRJT049MSBcCisgICAgRU5BQkxFX0xF
R0FDWV9WRU5ET1JfUFJFRklYRVM9MSBcCisgICAgRU5BQkxFX0xFR0FDWV9XRUJfQVVESU89MSBc
CisgICAgRU5BQkxFX0xJTktfUFJFRkVUQ0g9MSBcCisgICAgRU5BQkxFX01BVEhNTD0wIFwKKyAg
ICBFTkFCTEVfTUVESUFfQ0FQVFVSRT0wIFwKKyAgICBFTkFCTEVfTUVESUFfU09VUkNFPTAgXAor
ICAgIEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTPTAgXAorICAgIEVOQUJMRV9NRURJQV9TVFJFQU09
MCBcCisgICAgRU5BQkxFX01FVEVSX0VMRU1FTlQ9MSBcCisgICAgRU5BQkxFX01IVE1MPTEgXAor
ICAgIEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEU9MCBcCisgICAgRU5BQkxFX05BVklHQVRPUl9D
T05URU5UX1VUSUxTPTAgXAorICAgIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJPTAgXAorICAg
IEVOQUJMRV9ORVRXT1JLX0lORk89MCBcCisgICAgRU5BQkxFX05PU05JRkY9MCBcCisgICAgRU5B
QkxFX05PVElGSUNBVElPTlM9MSBcCisgICAgRU5BQkxFX09QRU5DTD0wIFwKKyAgICBFTkFCTEVf
T1JJRU5UQVRJT05fRVZFTlRTPTEgXAorICAgIEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJPTEg
XAorICAgIEVOQUJMRV9QRVJGT1JNQU5DRV9USU1FTElORT0wIFwKKyAgICBFTkFCTEVfUFJPR1JF
U1NfRUxFTUVOVD0xIFwKKyAgICBFTkFCTEVfUFJPTUlTRVM9MSBcCisgICAgRU5BQkxFX1BST1hJ
TUlUWV9FVkVOVFM9MCBcCisgICAgRU5BQkxFX1FVT1RBPTAgXAorICAgIEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZPTEgXAorICAgIEVOQUJMRV9SRVNPVVJDRV9USU1JTkc9MCBcCisgICAg
RU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FPTEgXAorICAgIEVOQUJMRV9TQ1JJUFRFRF9T
UEVFQ0g9MCBcCisgICAgRU5BQkxFX1NFQ0NPTVBfRklMVEVSUz0wIFwKKyAgICBFTkFCTEVfU0hB
RE9XX0RPTT0wIFwKKyAgICBFTkFCTEVfU0hBUkVEX1dPUktFUlM9MSBcCisgICAgRU5BQkxFX1NN
T09USF9TQ1JPTExJTkc9MSBcCisgICAgRU5BQkxFX1NRTF9EQVRBQkFTRT0xIFwKKyAgICBFTkFC
TEVfU1VCUElYRUxfTEFZT1VUPTEgXAorICAgIEVOQUJMRV9TVkc9MSBcCisgICAgRU5BQkxFX1NW
R19GT05UUz0xIFwKKyAgICBFTkFCTEVfVEVNUExBVEVfRUxFTUVOVD0wIFwKKyAgICBFTkFCTEVf
VEVYVF9BVVRPU0laSU5HPTAgXAorICAgIEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUj0wIFwK
KyAgICBFTkFCTEVfVE9VQ0hfQURKVVNUTUVOVD0xIFwKKyAgICBFTkFCTEVfVE9VQ0hfRVZFTlRT
PTEgXAorICAgIEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkc9MCBcCisgICAgRU5BQkxFX1VTRVJf
VElNSU5HPTAgXAorICAgIEVOQUJMRV9WSUJSQVRJT049MCBcCisgICAgRU5BQkxFX1ZJREVPPTAg
XAorICAgIEVOQUJMRV9WSURFT19UUkFDSz0wIFwKKyAgICBFTkFCTEVfVklFV19NT0RFX0NTU19N
RURJQT0xIFwKKyAgICBFTkFCTEVfV0VCR0w9MCBcCisgICAgRU5BQkxFX1dFQl9BVURJTz0wIFwK
KyAgICBFTkFCTEVfV0VCX1NPQ0tFVFM9MSBcCisgICAgRU5BQkxFX1dFQl9USU1JTkc9MSBcCisg
ICAgRU5BQkxFX1dPUktFUlM9MSBcCisgICAgRU5BQkxFX1hIUl9USU1FT1VUPTEgXAorICAgIEVO
QUJMRV9YU0xUPTAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9m
b3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9mb3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQucHJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmMzMzdjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL2ZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZC5wcmYKQEAgLTAsMCAr
MSwyMiBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZlYXR1cmUgdG8gYWxsb3cgc3BlZWRpbmcgdXAgbGlu
ayB0aW1lcyBmb3IgZGVidWcgYnVpbGRzIGJ5IGF2b2lkaW5nCisjIHJlLWxpbmtpbmcgdGhlIHN0
YXRpYyBsaWJyYXJpZXMgaW50byB0aGUgb25lIGJpZyBzaGFyZWQgbGlicmFyeS4KKyMKKyMgU2Vl
ICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVt
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworY29udGFpbnMoVEVNUExBVEUsIGxpYikgeworICAgIGNvbnRhaW5z
KENPTkZJRywgc3RhdGljbGliKSB7CisgICAgICAgIENPTkZJRyAtPSBoaWRlX3N5bWJvbHMKKyAg
ICAgICAgQ09ORklHIC09IHN0YXRpY2xpYgorICAgICAgICBDT05GSUcgKz0gcnBhdGgKKyAgICAg
ICAgUU1BS0VfQ1hYRkxBR1MgLT0gJCRRTUFLRV9DWFhGTEFHU19ISURFU1lNUworICAgICAgICBR
TUFLRV9DRkxBR1MgLT0gJCRRTUFLRV9DRkxBR1NfSElERVNZTVMKKyAgICAgICAgUU1BS0VfTEZM
QUdTIC09ICQkUU1BS0VfTEZMQUdTX0hJREVTWU1TCisgICAgICAgIFFNQUtFX09CSkVDVElWRV9D
RkxBR1MgLT0gJCRRTUFLRV9PQkpFQ1RJVkVfQ0ZMQUdTX0hJREVTWU1TCisgICAgICAgIERFU1RE
SVIgPSAkJHtST09UX0JVSUxEX0RJUn0vbGliCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIGluc3Rh
bGwtbmFtZSBvZiB0aGUgbGlicmFyaWVzIGFyZSBjb3JyZWN0IG9uIE1hYyBPUworICAgICAgICBt
YWN4OiBRTUFLRV9MRkxBR1NfU09OQU1FID0gJCRRTUFLRV9MRkxBR1NfU09OQU1FJCR7REVTVERJ
Un0vCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9m
dW5jdGlvbnMucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mdW5jdGlvbnMucHJm
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZGYwMDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Z1bmN0aW9ucy5wcmYKQEAgLTAs
MCArMSwzOTIgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGlzIGZpbGUgZGVmaW5lcyBhIGZldyB1c2Vm
dWwgZnVuY3Rpb25zIHRoYXQgYXJlIGV4cG9zZWQgdG8gdGhlCisjIHJlYWwgcHJvamVjdCBmaWxl
cy4KKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUg
YnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmaW5lUmVwbGFjZSh0b1Nhbml0aXplZFBh
dGgpIHsKKyAgICBwYXRoID0gJCQxCisgICAgd2luMzItbXN2Yyp8d2luY2UqIHsKKyAgICAgICAg
Y29tcG9uZW50cyA9ICQkc3BsaXQocGF0aCwgOikKKyAgICAgICAgY291bnQoY29tcG9uZW50cywg
Mik6IHBhdGggPSAkJGxvd2VyKCQkZmlyc3QoY29tcG9uZW50cykpOiQkbGFzdChjb21wb25lbnRz
KQorICAgICAgICByZXR1cm4oJCRyZXBsYWNlKHBhdGgsIFxcXFwsIC8pKQorICAgIH0gZWxzZSB7
CisgICAgICAgIHJldHVybigkJHBhdGgpCisgICAgfQorfQorCitkZWZpbmVSZXBsYWNlKHRvU3lz
dGVtUGF0aCkgeworICAgIHJldHVybigkJHJlcGxhY2UoMSwgWy9cXFxcXSwgJCR7UU1BS0VfRElS
X1NFUH0pKQorfQorCitkZWZpbmVSZXBsYWNlKHRvRXZhbHVhdGFibGVQYXRoKSB7CisgICAgcmV0
dXJuKCQkcmVwbGFjZSgxLCBcXFxcLCBcXFxcXFxcXCkpCit9CisKK2RlZmluZVJlcGxhY2UodGFy
Z2V0U3ViRGlyKSB7CisgICAgIyBUaGUgcGF0aHMgdG8gdGhlIGVsZW1lbnRzIG9mIHRoZSB0aGlu
IGFyY2hpdmUgYXJlIHN0b3JlZAorICAgICMgcmVsYXRpdmUgdG8gdGhlIGFyY2hpdmUgaXRzZWxm
LCB0aHVzIHdlIGhhdmUgdG8gcHJldmVudAorICAgICMgcW1ha2UgZnJvbSBtb3ZpbmcgdGhlIGFy
Y2hpdmUgYWZ0ZXIgY3JlYXRpb24uCisgICAgZ251X3RoaW5fYXJjaGl2ZXM6IHJldHVybigpCisg
ICAgZWxzZTogQ09ORklHKGRlYnVnLCBkZWJ1Z3xyZWxlYXNlKTogcmV0dXJuKGRlYnVnKQorICAg
IGVsc2U6IHJldHVybihyZWxlYXNlKQorfQorCitkZWZpbmVSZXBsYWNlKGNvbXB1dGVTdWJkaXJW
YXJpYWJsZXMpIHsKKyAgICB1bnNldChzdWJkaXIpCisgICAgc3ViZGlyID0gJCQxCisKKyAgICBz
Y29wZSA9ICQkc3ViZGlyCisgICAgcGF0aCA9ICQkZXZhbCgkJHtzdWJkaXJ9LmZpbGUpCisgICAg
aXNFbXB0eShwYXRoKTogcGF0aCA9ICQkZXZhbCgkJHtzdWJkaXJ9LnN1YmRpcikKKyAgICBpc0Vt
cHR5KHBhdGgpIHsKKyAgICAgICAgcGF0aCA9ICQke3N1YmRpcn0KKyAgICAgICAgIyBXZSBjYW4n
dCB1c2Ugc2NvcGUgYXMgYSB2YXJpYWJsZSBzY29wZSwgc28gdW5zZXQgaXQgZm9yCisgICAgICAg
ICMgbm93IGFuZCB3ZSdsbCBjb21wdXRlIGEgbmV3IHNjb3BlIGJhc2VkIG9uIHRoZSB0YXJnZXQu
CisgICAgICAgIHVuc2V0KHNjb3BlKQorICAgIH0KKworICAgICMgVGVjaG5pY2FsbHkgdGhpcyBj
b3VsZCBiZSBhIGRpcmVjdG9yeSwgYnV0IHdlIGFzc3VtZSBzYW5lIG5hbWluZy4KKyAgICBpc19m
aWxlID0gJCRmaW5kKHBhdGgsIFxcLnByW2lvXSQpCisgICAgaXNFbXB0eShpc19maWxlKSB7Cisg
ICAgICAgIHN1YmRpcmVjdG9yeSA9ICQkcGF0aAorICAgIH0gZWxzZSB7CisgICAgICAgIHN1YmRp
cmVjdG9yeSA9ICQkZGlybmFtZShwYXRoKQorICAgICAgICBmaWxlbmFtZSA9ICQkYmFzZW5hbWUo
cGF0aCkKKyAgICB9CisKKyAgICAjIE1ha2UgZGlyZWN0b3J5IHJlbGF0aXZlCisgICAgIWlzRW1w
dHkoc3ViZGlyZWN0b3J5KTpzdWJkaXJlY3RvcnkgPSAkJHJlcGxhY2Uoc3ViZGlyZWN0b3J5LCBe
JCRyZV9lc2NhcGUoJCR7X1BST19GSUxFX1BXRF99KS8sKQorCisgICAgIWlzRW1wdHkoc3ViZGly
ZWN0b3J5KSB7CisgICAgICAgIHN1YmRpcl9jb21tYW5kID0gY2QgJCR0b1N5c3RlbVBhdGgoJCR7
c3ViZGlyZWN0b3J5fSQke1FNQUtFX0RJUl9TRVB9KSAmJgorICAgIH0KKworICAgIHRhcmdldCA9
ICQkZXZhbCgkJHtzdWJkaXJ9LnRhcmdldCkKKyAgICBpc0VtcHR5KHRhcmdldCkgeworICAgICAg
ICBzYW5pdGl6ZWRQYXRoID0gJCR0b1Nhbml0aXplZFBhdGgoJCRwYXRoKQorICAgICAgICB0YXJn
ZXQgPSBzdWItJCRyZXBsYWNlKHNhbml0aXplZFBhdGgsIFteYS16QS1aMC05X10sIC0pCisgICAg
fQorCisgICAgaXNFbXB0eShzY29wZSk6IHNjb3BlID0gJCR0YXJnZXQKKworICAgIG1ha2VmaWxl
ID0gJCRldmFsKCQke3N1YmRpcn0ubWFrZWZpbGUpCisgICAgaXNFbXB0eShtYWtlZmlsZSkgewor
ICAgICAgICAhaXNFbXB0eShmaWxlbmFtZSkgeworICAgICAgICAgICAgZmlsZWJhc2UgPSAkJHJl
cGxhY2UoZmlsZW5hbWUsIFxcLi4qJCwpCisgICAgICAgICAgICBkaXJiYXNlID0gJCRiYXNlbmFt
ZShzdWJkaXJlY3RvcnkpCisgICAgICAgICAgICAhZXF1YWxzKGZpbGViYXNlLCAkJGRpcmJhc2Up
IHsKKyAgICAgICAgICAgICAgICBtYWtlZmlsZSA9ICQoTUFLRUZJTEUpLiQkZmlsZWJhc2UKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWFrZWZpbGUgPSAkKE1BS0VGSUxF
KQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWFrZWZpbGUg
PSAkKE1BS0VGSUxFKQorICAgICAgICB9CisgICAgfQorCisgICAgc3ViZGlyX2NvbW1hbmQgPSAk
JHRvRXZhbHVhdGFibGVQYXRoKCQkc3ViZGlyX2NvbW1hbmQpCisgICAgZXZhbCgkJHtzY29wZX0u
c3ViZGlyX2NvbW1hbmQgPSAkJHN1YmRpcl9jb21tYW5kKQorICAgIGV4cG9ydCgkJHtzY29wZX0u
c3ViZGlyX2NvbW1hbmQpCisKKyAgICBldmFsKCQke3Njb3BlfS50YXJnZXQgPSAkJHRhcmdldCkK
KyAgICBleHBvcnQoJCR7c2NvcGV9LnRhcmdldCkKKworICAgIGV2YWwoJCR7c2NvcGV9Lm1ha2Vm
aWxlID0gJCRtYWtlZmlsZSkKKyAgICBleHBvcnQoJCR7c2NvcGV9Lm1ha2VmaWxlKQorCisgICAg
cmV0dXJuKCQkc2NvcGUpCit9CisKKyMgUW1ha2UgaGFzIFFNQUtFX0ZJTEVfSU5fUEFUSCwgYnV0
IG5vdGhpbmcgZm9yIHRoZSBvdXQgZmlsZQorIyBUaGlzIGFsbG93cyB5b3UgZG8gZG8gJHtRTUFL
RV9GVU5DX0ZJTEVfT1VUX1BBVEh9CitkZWZpbmVSZXBsYWNlKFBBVEgpIHsKKyAgICByZXR1cm4o
JCRkaXJuYW1lKDEpKQorfQorCisjIFdlIG5lZWQgYm90aCB2ZXJzaW9ucywgaW4gY2FzZSB0aGUg
Zmlyc3Qgb25lIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nCitkZWZpbmVSZXBsYWNlKEZJTEVfT1VU
X1BBVEgpIHsKKyAgICByZXR1cm4oJCRkaXJuYW1lKDIpKQorfQorCisjIGFkZFN0cmljdFN1YmRp
ck9yZGVyQmV0d2VlbihmaXJzdFN1YmRpciwgc2Vjb25kU3ViZGlyKQorZGVmaW5lVGVzdChhZGRT
dHJpY3RTdWJkaXJPcmRlckJldHdlZW4pIHsKKyAgICB1bnNldChmaXJzdFN1YmRpcikKKyAgICB1
bnNldChzZWNvbmRTdWJkaXIpCisKKyAgICBmaXJzdFN1YmRpciA9ICQkMQorICAgIHNlY29uZFN1
YmRpciA9ICQkMgorCisgICAgZmlyc3RWYXJpYWJsZXMgPSAkJGNvbXB1dGVTdWJkaXJWYXJpYWJs
ZXMoJCR7Zmlyc3RTdWJkaXJ9KQorICAgIHNlY29uZFZhcmlhYmxlcyA9ICQkY29tcHV0ZVN1YmRp
clZhcmlhYmxlcygkJHtzZWNvbmRTdWJkaXJ9KQorCisgICAgIWNvbnRhaW5zKFRFTVBMQVRFLCBz
dWJkaXJzKSB7CisgICAgICAgIGVycm9yKCJTdHJpY3Qgc3ViZGlyIGRlcGVuZGVuY2llcyBjYW4g
b25seSBiZSB1c2VkIHdpdGggc3ViZGlycyB0ZW1wbGF0ZSIpCisgICAgfQorCisgICAgZmlyc3RT
dWJkaXJGaWxlID0gJCRldmFsKCQke2ZpcnN0U3ViZGlyfS5maWxlKQorICAgIHNlY29uZFN1YmRp
ckZpbGUgPSAkJGV2YWwoJCR7c2Vjb25kU3ViZGlyfS5maWxlKQorCisgICAgaXNFbXB0eShmaXJz
dFN1YmRpckZpbGUpfGlzRW1wdHkoc2Vjb25kU3ViZGlyRmlsZSkgeworICAgICAgICBlcnJvcigi
TWlzc2luZyBzdWJkaXIgZmlsZSAoJCRmaXJzdFN1YmRpckZpbGUsICQkc2Vjb25kU3ViZGlyRmls
ZSkiKQorICAgIH0KKworICAgICMgTWFrZSBzdXJlIHRoZSBvcmRlciBpcyByaWdodAorICAgIFNV
QkRJUlMgLT0gJCRzZWNvbmRTdWJkaXIKKyAgICBTVUJESVJTICs9ICQkc2Vjb25kU3ViZGlyCisg
ICAgTk9fUkVDVVJTSVZFX1FNQUtFX1NVQkRJUlMgKz0gJCRmaXJzdFN1YmRpciAkJHNlY29uZFN1
YmRpcgorICAgIENPTkZJRyAqPSBvcmRlcmVkCisKKyAgICBmaXJzdF9iYXNlX3RhcmdldCA9IHN1
Yi0kJHJlcGxhY2UoZmlyc3RTdWJkaXJGaWxlLCBbXmEtekEtWjAtOV9dLCAtKQorICAgIHNlY29u
ZF9iYXNlX3RhcmdldCA9IHN1Yi0kJHJlcGxhY2Uoc2Vjb25kU3ViZGlyRmlsZSwgW15hLXpBLVow
LTlfXSwgLSkKKworICAgICMgVXNlIGEgY3VzdG9tIHRhcmdldCBmb3IgbWFraW5nIHRoZSBkZXJp
dmVkIHNvdXJjZXMsIGFzIHRoZSBkZWZhdWx0IHRhcmdldAorICAgICMgd2lsbCBkbyAndGVzdCAt
ZiAkKE1BS0VGSUxFKS5EZXJpdmVkU291cmNlcyB8fCAkKFFNQUtFKSAuLi4nLCB3aGljaCBjbGFz
aGVzCisgICAgIyB3aXRoIHRoZSBxbWFrZS1ydW4gb2YgdGhlIC1xbWFrZV9hbGwgdGFyZ2V0LCBh
bmQgd2UgZW5kIHVwIHdpdGggYSByYWNlCisgICAgIyBhbmQgcG90ZW50aWFsbHkgaGFsZi13cml0
dGVuIG1ha2VmaWxlcy4gVGhlIGN1c3RvbSB0YXJnZXQgZGVwZW5kcyBleHBsaWNpdGx5CisgICAg
IyBvbiAtcW1ha2VfYWxsLCB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGEgbWFrZWZpbGUsIGFuZCB0
aGVuIGNhbGxzIG1ha2UuCisgICAgZGVyaXZlZF9tYWtlX2Zvcl9xbWFrZSA9ICQke2ZpcnN0X2Jh
c2VfdGFyZ2V0fS1tYWtlX2Zvcl9xbWFrZQorICAgIGV2YWwoJCR7ZGVyaXZlZF9tYWtlX2Zvcl9x
bWFrZX0uZGVwZW5kcyA9ICQke2ZpcnN0X2Jhc2VfdGFyZ2V0fS1xbWFrZV9hbGwpCisgICAgZXZh
bCgkJHtkZXJpdmVkX21ha2VfZm9yX3FtYWtlfS5jb21tYW5kcyA9ICQoTUFLRSkgLWYgJCRldmFs
KCQke2ZpcnN0U3ViZGlyfS5tYWtlZmlsZSkpCisgICAgUU1BS0VfRVhUUkFfVEFSR0VUUyArPSAk
JHtkZXJpdmVkX21ha2VfZm9yX3FtYWtlfQorCisgICAgIyBUaGlzIHRhcmdldCBlbnN1cmVzIHRo
YXQgcnVubmluZyAibWFrZSBxbWFrZV9hbGwiIHdpbGwgZm9yY2UgYm90aCBxbWFrZSBhbmQgbWFr
ZQorICAgICMgdG8gYmUgcnVuIG9uIHRoZSBkZXJpdmVkIHNvdXJjZXMgYmVmb3JlIHJ1bm5pbmcg
cW1ha2Ugb24gdGhlIHRhcmdldCwgc28gdGhhdAorICAgICMgcW1ha2UgY2FuIHBpY2sgdXAgdGhl
IHJpZ2h0IGRlcGVuZGVuY2llcyBmb3IgdGhlIHRhcmdldCBiYXNlZCBvbiB0aGUgZGVyaXZlZAor
ICAgICMgc291cmNlcyB0aGF0IHdlcmUgZ2VuZXJhdGVkLgorICAgIHRhcmdldF9tYWtlX3FtYWtl
ID0gJCR7c2Vjb25kX2Jhc2VfdGFyZ2V0fS1xbWFrZV9hbGwKKyAgICBldmFsKCQke3RhcmdldF9t
YWtlX3FtYWtlfS5kZXBlbmRzID0gJCR7ZGVyaXZlZF9tYWtlX2Zvcl9xbWFrZX0pCisgICAgUU1B
S0VfRVhUUkFfVEFSR0VUUyArPSAkJHt0YXJnZXRfbWFrZV9xbWFrZX0KKworICAgICMgTWFrZSB0
aGluZ3Mgd29yayBldmVuIGlmIHFtYWtlIC1yIGlzIHVzZWQuCisgICAgQ09ORklHICs9IGRvbnRf
cmVjdXJzZQorCisgICAgZXhwb3J0KFNVQkRJUlMpCisgICAgZXhwb3J0KE5PX1JFQ1VSU0lWRV9R
TUFLRV9TVUJESVJTKQorICAgIGV4cG9ydChDT05GSUcpCisgICAgZXhwb3J0KCQke3RhcmdldF9t
YWtlX3FtYWtlfS50YXJnZXQpCisgICAgZXhwb3J0KCQke3RhcmdldF9tYWtlX3FtYWtlfS5kZXBl
bmRzKQorICAgIGV4cG9ydCgkJHtkZXJpdmVkX21ha2VfZm9yX3FtYWtlfS5kZXBlbmRzKQorICAg
IGV4cG9ydCgkJHtkZXJpdmVkX21ha2VfZm9yX3FtYWtlfS5jb21tYW5kcykKKyAgICBleHBvcnQo
UU1BS0VfRVhUUkFfVEFSR0VUUykKKyAgICByZXR1cm4odHJ1ZSkKK30KKworIyBDaGVjayBpZiB3
ZSBoYXZlIHRoZSBnaXZlbiBRdCB2ZXJzaW9uLiBUaGUgbWFqb3IgdmVyc2lvbiBuZWVkcworIyB0
byBiZSBleGFjdCwgdGhlIG1pbm9yIGFuZCBwYXRjaCB2ZXJzaW9uIGlzIHNhbWUgb3IgaGlnaGVy
CitkZWZpbmVUZXN0KGhhdmVRdCkgeworICAgIGNvdW50KEFSR1MsIDEsIGxlc3NUaGFuKXxjb3Vu
dChBUkdTLCAzLCBncmVhdGVyVGhhbikgeworICAgICAgICBlcnJvcigiVW5leHBlY3RlZCBudW1i
ZXIgb2YgYXJndW1lbnRzOiBoYXZlUXQoJCRBUkdTKSIpCisgICAgfQorCisgICAgIWVxdWFscyhR
VF9NQUpPUl9WRVJTSU9OLCAkJDEpOiByZXR1cm4oZmFsc2UpCisKKyAgICBjb3VudChBUkdTLCAx
LCBncmVhdGVyVGhhbikgeworICAgICAgICBsZXNzVGhhbihRVF9NSU5PUl9WRVJTSU9OLCAkJDIp
OiByZXR1cm4oZmFsc2UpCisgICAgICAgIGdyZWF0ZXJUaGFuKFFUX01JTk9SX1ZFUlNJT04sICQk
Mik6IHJldHVybih0cnVlKQorCisgICAgICAgIGNvdW50KEFSR1MsIDIsIGdyZWF0ZXJUaGFuKSB7
CisgICAgICAgICAgICBsZXNzVGhhbihRVF9QQVRDSF9WRVJTSU9OLCAkJDMpOiByZXR1cm4oZmFs
c2UpCisgICAgICAgICAgICBncmVhdGVyVGhhbihRVF9QQVRDSF9WRVJTSU9OLCAkJDMpOiByZXR1
cm4odHJ1ZSkKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybih0cnVlKQorfQorCitkZWZp
bmVUZXN0KHByb2dyYW1FeGlzdHNJblBhdGgpIHsKKyAgICB3aW4zMjogcHJvZ3JhbSA9ICQkezF9
LmV4ZQorICAgIGVsc2U6IHByb2dyYW0gPSAkJDEKKworICAgIFBBVEggPSAiJCQoUEFUSCkiCisg
ICAgcGF0aHM9JCRzcGxpdChQQVRILCAkJFFNQUtFX0RJUkxJU1RfU0VQKQorCisgICAgR05VVE9P
TFNfRElSPSQkW1FUX0hPU1RfREFUQV0vLi4vZ251d2luMzIvYmluCisgICAgZXhpc3RzKCQkR05V
VE9PTFNfRElSKTogcGF0aHMgKz0gJCRHTlVUT09MU19ESVIKKworICAgIGZvcihwLCBwYXRocyk6
IGV4aXN0cygkJHAvJCRwcm9ncmFtKTpyZXR1cm4odHJ1ZSkKKyAgICByZXR1cm4oZmFsc2UpCit9
CisKK2RlZmluZVRlc3QoYWRkUmVhc29uRm9yU2tpcHBpbmdCdWlsZCkgeworICAgIHNraXBCdWls
ZFJlYXNvbiA9ICIkJHNraXBCdWlsZFJlYXNvbiQke0VPTH0gICAgKiAkJDEiCisgICAgZXhwb3J0
KHNraXBCdWlsZFJlYXNvbikKK30KKworZGVmaW5lVGVzdChwcmVwZW5kRWFjaCkgeworICAgIHVu
c2V0KHZhcmlhYmxlKQorICAgIHVuc2V0KHByZWZpeCkKKworICAgIHZhcmlhYmxlID0gJCQxCisg
ICAgcHJlZml4ID0gJCQyCisKKyAgICBvcmlnaW5hbF92YWx1ZXMgPSAkJHVuaXF1ZSgkJHZhcmlh
YmxlKQorCisgICAgZm9yKHZhbHVlLCBvcmlnaW5hbF92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVz
ICs9ICQke3ByZWZpeH0kJHt2YWx1ZX0KKyAgICB9CisKKyAgICBldmFsKCQkdmFyaWFibGUgPSAk
JHZhbHVlcykKKyAgICBleHBvcnQoJCR2YXJpYWJsZSkKKworICAgIHJldHVybih0cnVlKQorfQor
CitkZWZpbmVSZXBsYWNlKHJlc29sdmVGaW5hbExpYnJhcnlOYW1lKSB7CisgICAgIWRlYnVnX2Fu
ZF9yZWxlYXNlOiByZXR1cm4oJCQxKQorCisgICAgb3JpZ2luYWxfZnJhbWV3b3JrX25hbWUgPSAk
JFFNQUtFX0ZSQU1FV09SS19CVU5ETEVfTkFNRQorCisgICAgVEVNUExBVEUgPSBsaWIgIyBTbyB0
aGF0IHF0TGlicmFyeVRhcmdldCB3b3JrcworICAgIHRhcmdldCA9ICQkcXRMaWJyYXJ5VGFyZ2V0
KCQkMSkKKworICAgICMgcXRMaWJyYXJ5VGFyZ2V0IHdpbGwgZXhwb3J0IFFNQUtFX0ZSQU1FV09S
S19CVU5ETEVfTkFNRSwgd2hpY2ggZ2V0cworICAgICMgZXhwb3J0ZWQgbm90IG9ubHkgdG8gdGhp
cyBmdW5jdGlvbiBzY29wZSwgYnV0IHRvIG91ciBjYWxsIHNpdGUuCisgICAgUU1BS0VfRlJBTUVX
T1JLX0JVTkRMRV9OQU1FID0gJCRvcmlnaW5hbF9mcmFtZXdvcmtfbmFtZQorICAgIGV4cG9ydChR
TUFLRV9GUkFNRVdPUktfQlVORExFX05BTUUpCisKKyAgICByZXR1cm4oJCR0YXJnZXQpCit9CisK
K2RlZmluZVRlc3QobGlua0FnYWluc3RMaWJyYXJ5KSB7CisgICAgdW5zZXQodGFyZ2V0KQorICAg
IHRhcmdldCA9ICQkMQorCisgICAgdW5zZXQoc291cmNlX2RpcikKKyAgICBzb3VyY2VfZGlyID0g
JCQyCisKKyAgICBsaWJyYXJ5ID0gJCRsb3dlcigkJHRhcmdldCkKKworICAgIHRhcmdldCA9ICQk
cmVzb2x2ZUZpbmFsTGlicmFyeU5hbWUoJCR0YXJnZXQpCisKKyAgICBwYXRoID0gJCRyZXBsYWNl
KHNvdXJjZV9kaXIsICQkcmVfZXNjYXBlKCQke1JPT1RfV0VCS0lUX0RJUn0pLCAkJHtST09UX0JV
SUxEX0RJUn0pLyQkdGFyZ2V0U3ViRGlyKCkKKworICAgIGZvcmNlX3N0YXRpY19saWJzX2FzX3No
YXJlZCB7CisgICAgICAgICAgICBMSUJTICs9IC1MJCR7Uk9PVF9CVUlMRF9ESVJ9L2xpYiAtbCQk
dGFyZ2V0CisgICAgfSBlbHNlIHsKKworICAgICAgICBtYWMgeworICAgICAgICAgICAgTElCUyAr
PSAtV2wsLWZvcmNlX2xvYWQsJCR7cGF0aH0kJHtRTUFLRV9ESVJfU0VQfWxpYiQke3RhcmdldH0u
YQorICAgICAgICB9IGVsc2U6d2luMzItbXN2Yyp8d2luY2UqfHdpbjMyLWljYyB7CisgICAgICAg
ICAgICBMSUJTICs9IC9PUFQ6UkVGIC1sJCR0YXJnZXQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIENPTkZJRyAqPSBub19zbWFydF9saWJyYXJ5X21lcmdlCisgICAgICAgICAgICBMSUJT
ICs9IC1XbCwtd2hvbGUtYXJjaGl2ZSAtbCQkdGFyZ2V0IC1XbCwtbm8td2hvbGUtYXJjaGl2ZQor
ICAgICAgICB9CisKKyAgICAgICAgTElCUyArPSAtTCQkcGF0aAorCisgICAgICAgIHdpbjMyLW1z
dmMqfHdpbmNlKnx3aW4zMi1pY2MgeworICAgICAgICAgICAgUE9TVF9UQVJHRVRERVBTICs9ICQk
e3BhdGh9JCR7UU1BS0VfRElSX1NFUH0kJHt0YXJnZXR9LmxpYgorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgUE9TVF9UQVJHRVRERVBTICs9ICQke3BhdGh9JCR7UU1BS0VfRElSX1NFUH1s
aWIkJHt0YXJnZXR9LmEKKyAgICAgICAgfQorICAgIH0KKworICAgIGV4cG9ydChMSUJTKQorICAg
IGV4cG9ydChRTUFLRV9MSUJESVIpCisgICAgZXhwb3J0KFBPU1RfVEFSR0VUREVQUykKKyAgICBl
eHBvcnQoQ09ORklHKQorICAgIHJldHVybih0cnVlKQorfQorCitkZWZpbmVUZXN0KHhsaWJBdmFp
bGFibGUpIHsKKyAgICBjb250YWlucyhRVF9DT05GSUcsIHhjYi14bGliKSB7CisgICAgICAgIHJl
dHVybih0cnVlKQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybihmYWxzZSkKKyAgICB9Cit9
CisKK2RlZmluZVRlc3QoYnVpbGQ/KSB7CisgICAgY29udGFpbnMoV0VCS0lUX0NPTkZJRywgYnVp
bGRfJCRsb3dlcigkJDEpKTogcmV0dXJuKHRydWUpCisgICAgcmV0dXJuKGZhbHNlKQorfQorCitk
ZWZpbmVUZXN0KGhhdmU/KSB7CisgICAgY29udGFpbnMoV0VCS0lUX0NPTkZJRywgaGF2ZV8kJGxv
d2VyKCQkMSkpOiByZXR1cm4odHJ1ZSkKKyAgICByZXR1cm4oZmFsc2UpCit9CisKK2RlZmluZVRl
c3QodXNlPykgeworICAgIGNvbnRhaW5zKFdFQktJVF9DT05GSUcsIHVzZV8kJGxvd2VyKCQkMSkp
OiByZXR1cm4odHJ1ZSkKKyAgICByZXR1cm4oZmFsc2UpCit9CisKK2RlZmluZVRlc3QoZW5hYmxl
PykgeworICAgIGNvbnRhaW5zKFdFQktJVF9DT05GSUcsICQkbG93ZXIoJCQxKSk6IHJldHVybih0
cnVlKQorICAgIHJldHVybihmYWxzZSkKK30KKworIyBVc2VkIGJ5IGNvbmZpZ0RlZmluZXMgYmVs
b3cKK2luY2x1ZGUoZmVhdHVyZXMucHJpKQorCisjIFR1cm4gV2Via2l0IGNvbmZpZyBpbnRvIGRl
ZmluZXMKK2RlZmluZVJlcGxhY2UoY29uZmlnRGVmaW5lcykgeworICAgIHVuc2V0KGRlZmluZXMp
CisKKyAgICBhcmdzID0gJCRzcGxpdCgxLCB8KQorCisgICAgcG9zc2libGVfYXJncyA9IGVuYWJs
ZSBoYXZlIHVzZSBwbHVnaW5fYXJjaGl0ZWN0dXJlCisgICAgIWlzRW1wdHkoYXJncykgeworICAg
ICAgICBmb3IoYXJnLCBwb3NzaWJsZV9hcmdzKTogY29udGFpbnMoYXJncywgJCRhcmcpOiBDT05G
SUcgKz0gJCRhcmcKKyAgICB9IGVsc2UgeworICAgICAgICBDT05GSUcgKz0gJCRwb3NzaWJsZV9h
cmdzCisgICAgfQorCisgICAgZm9yKGNvbmZpZywgV0VCS0lUX0NPTkZJRykgeworICAgICAgICBt
YXRjaCA9ICQkZmluZChjb25maWcsICJeYnVpbGRfIikKKyAgICAgICAgIWlzRW1wdHkobWF0Y2gp
IHsKKyAgICAgICAgICAgICMgV2UgZG9uJ3QgdHJhbnNsYXRlIGJ1aWxkXyB0byBkZWZpbmVzCisg
ICAgICAgICAgICBuZXh0KCkKKyAgICAgICAgfQorICAgICAgICBtYXRjaCA9ICQkZmluZChjb25m
aWcsICJeaGF2ZV8iKQorICAgICAgICAhaXNFbXB0eShtYXRjaCkgeworICAgICAgICAgICAgaGF2
ZTogZGVmaW5lcyArPSAkJHVwcGVyKCQkY29uZmlnKT0xCisgICAgICAgICAgICBuZXh0KCkKKyAg
ICAgICAgfQorICAgICAgICBtYXRjaCA9ICQkZmluZChjb25maWcsICJecGx1Z2luX2FyY2hpdGVj
dHVyZV8iKQorICAgICAgICAhaXNFbXB0eShtYXRjaCkgeworICAgICAgICAgICAgcGx1Z2luX2Fy
Y2hpdGVjdHVyZTogZGVmaW5lcyArPSAkJHVwcGVyKCQkY29uZmlnKT0xCisgICAgICAgICAgICBu
ZXh0KCkKKyAgICAgICAgfQorICAgICAgICBtYXRjaCA9ICQkZmluZChjb25maWcsICJedXNlXyIp
CisgICAgICAgICFpc0VtcHR5KG1hdGNoKSB7CisgICAgICAgICAgICB1c2U6IGRlZmluZXMgKz0g
V1RGXyQkdXBwZXIoJCRjb25maWcpPTEKKyAgICAgICAgICAgIG5leHQoKQorICAgICAgICB9CisK
KyAgICAgICAgZW5hYmxlOiBkZWZpbmVzICs9IEVOQUJMRV8kJHVwcGVyKCQkY29uZmlnKT0xCisg
ICAgfQorCisgICAgIyBUbyBwcmV2ZW50IGNsYXNoZXMgd2l0aCBQbGF0Zm9ybS5oLCB3ZSBoYXZl
IHRvIGV4cGxpY2l0bHkKKyAgICAjIGRpc2FibGUgZmVhdHVyZXMgdGhhdCBhcmUgbm90IGVuYWJs
ZWQuCisgICAgZm9yKGRlZmluZSwgRkVBVFVSRV9ERUZBVUxUUykgeworICAgICAgICBhbnlGZWF0
dXJlRGVmaW5lID0gJCRmaW5kKGRlZmluZSwgPS4kKQorICAgICAgICBpc0VtcHR5KGFueUZlYXR1
cmVEZWZpbmUpOiBuZXh0KCkKKworICAgICAgICBlbmFibGVkRmVhdHVyZSA9ICQkcmVwbGFjZShh
bnlGZWF0dXJlRGVmaW5lLCA9LiQsID0xKQorICAgICAgICBkaXNhYmxlZEZlYXR1cmUgPSAkJHJl
cGxhY2UoYW55RmVhdHVyZURlZmluZSwgPS4kLCA9MCkKKworICAgICAgICAhY29udGFpbnMoZGVm
aW5lcywgJCRlbmFibGVkRmVhdHVyZSkgeworICAgICAgICAgICAgZGVmaW5lcyArPSAkJGRpc2Fi
bGVkRmVhdHVyZQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuKCQkZGVmaW5lcykKK30K
KworZGVmaW5lUmVwbGFjZShqYXZhc2NyaXB0RmVhdHVyZURlZmluZXMpIHsKKyAgICBkZWZpbmVz
ID0gTEFOR1VBR0VfSkFWQVNDUklQVD0xICQkY29uZmlnRGVmaW5lcyhlbmFibGUpCisgICAgcmV0
dXJuKCQkZGVmaW5lcykKK30KKworZGVmaW5lUmVwbGFjZShzZXRFbnZpcm9ubWVudFZhcmlhYmxl
KSB7CisgIHZhcmlhYmxlID0gJCQxCisgIHZhbHVlID0gJCQyCisgIHdpbl9jbWRfc2hlbGwgewor
ICAgICAgcmV0dXJuKChzZXQgXCIkJHZhcmlhYmxlPSQkdmFsdWVcIikpCisgIH0KKyAgcmV0dXJu
KGV4cG9ydCBcIiQkdmFyaWFibGU9JCR2YWx1ZVwiKQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy9ncHJvZi5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2dwcm9mLnByZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWI3OGMz
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9ncHJvZi5w
cmYKQEAgLTAsMCArMSwxMSBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgb3B0aW9uYWwgZmVhdHVy
ZSBmaWxlIGFkZHMgcnVsZXMgdGhhdCBtYWtlIHJ1bm5pbmcgZ3Byb2YKKyMgb24gUXRXZWJLaXQg
ZWFzaWVyLgorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9m
IHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitidWlsZD8od2Via2l0Mik6IGVycm9y
KCJXZWJLaXQyIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBncHJvZiIpCisKK1FNQUtFX0NYWEZMQUdT
ICs9IC1wZworUU1BS0VfTEZMQUdTICs9IC1wZwpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy9tYWMvZGVmYXVsdF9wb3N0LnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvbWFjL2RlZmF1bHRfcG9zdC5wcmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTU3OGE3MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3Mv
ZmVhdHVyZXMvbWFjL2RlZmF1bHRfcG9zdC5wcmYKQEAgLTAsMCArMSwxMCBAQAorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIE1hYyBPUyBYIHNwZWNpZmljIGRlZmF1bHRzCisjCisjIFNlZSAnVG9vbHMvcW1ha2Uv
UkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyMgV2UgZG9uJ3Qgd2FudCB2ZXJpZnkgYW5kIG90aGVyIHBsYXRmb3JtIG1hY3JvcyB0byBw
b2xsdXRlIHRoZSBuYW1lc3BhY2UKK0RFRklORVMgKz0gX19BU1NFUlRfTUFDUk9TX0RFRklORV9W
RVJTSU9OU19XSVRIT1VUX1VOREVSU0NPUkVTPTAKKworbG9hZChkZWZhdWx0X3Bvc3QpCmRpZmYg
LS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9kZWZhdWx0X3ByZS5wcmYg
Yi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9kZWZhdWx0X3ByZS5wcmYKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU3YmJjNAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvbWFjL2RlZmF1bHRfcHJlLnByZgpAQCAtMCww
ICsxLDEyIEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWFjIE9TIFggc3BlY2lmaWMgZGVmYXVsdHMKKyMK
KyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQg
c3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ09ORklHIC09IGFwcF9idW5kbGUKKworbG9hZChkZWZh
dWx0X3ByZSkKKworZGVidWc6IENPTkZJRyArPSB1c2VfYWxsX2luX29uZV9maWxlcworCmRpZmYg
LS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL21pbmltYWxfcXQucHJmIGIvVG9v
bHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9taW5pbWFsX3F0LnByZgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zNGUyZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy9taW5pbWFsX3F0LnByZgpAQCAtMCwwICsxLDMyIEBACisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgUHJldGVuZCB0aGF0IHdlIGFyZSBidWlsZGluZyBhZ2FpbnN0IGEgbWluaW1h
bCBRdCB2ZXJzaW9uCisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZp
ZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RFRklORVMgKj0gXAorICAg
IFFUX05PX0FOSU1BVElPTiBcCisgICAgUVRfTk9fQkVBUkVSTUFOQUdFTUVOVCBcCisgICAgUVRf
Tk9fQ0xJUEJPQVJEIFwKKyAgICBRVF9OT19DT01CT0JPWCBcCisgICAgUVRfTk9fQ09OQ1VSUkVO
VCBcCisgICAgUVRfTk9fQ1JBU0hIQU5ETEVSIFwKKyAgICBRVF9OT19DVVJTT1IgXAorICAgIFFU
X05PX0RFU0tUT1BTRVJWSUNFUyBcCisgICAgUVRfTk9fRklMRURJQUxPRyBcCisgICAgUVRfTk9f
R1JBUEhJQ1NFRkZFQ1QgXAorICAgIFFUX05PX0lNIFwKKyAgICBRVF9OT19JTlBVVERJQUxPRyBc
CisgICAgUVRfTk9fTElORUVESVQgXAorICAgIFFUX05PX01FU1NBR0VCT1ggXAorICAgIFFUX05P
X09QRU5TU0wgXAorICAgIFFUX05PX1BSSU5URVIgXAorICAgIFFUX05PX1FVVUlEX1NUUklORyBc
CisgICAgUVRfTk9fU0hPUlRDVVQgXAorICAgIFFUX05PX1NUWUxFX1NUWUxFU0hFRVQgXAorICAg
IFFUX05PX1NZU1RFTVRSQVlJQ09OIFwKKyAgICBRVF9OT19URU1QT1JBUllGSUxFIFwKKyAgICBR
VF9OT19UT09MVElQIFwKKyAgICBRVF9OT19VTkRPQ09NTUFORCBcCisgICAgUVRfTk9fVU5ET1NU
QUNLIFwKKyAgICBRVF9OT19YUkVOREVSCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL3Byb2R1Y3Rpb25fYnVpbGQucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9wcm9kdWN0aW9uX2J1aWxkLnByZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5jOTgwZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy9wcm9kdWN0aW9uX2J1aWxkLnByZgpAQCAtMCwwICsxLDE3IEBACisjIEFsbCBpbiBvbmUg
ZmlsZXMgcmVkdWNlIG1lbW9yeSB1c2FnZSBhdCBsaW5rIHRpbWUuIEF0IGNvbXBpbGVyIHRpbWUg
dGhlIGNvZGUKKyMgdmlzaWJpbGl0eSBmb3IgdGhlIGNvbXBpbGVyIGluY3JlYXNlcyBhbmQgZmFz
dGVyIG1vcmUgY29tcGFjdCBjb2RlIGNhbiBiZSBwcm9kdWNlZCwKKyMgc28gdHVybiBpdCBvbiBp
biBwcm9kdWN0aW9uIGJ1aWxkcy4KK0NPTkZJRyAqPSB1c2VfYWxsX2luX29uZV9maWxlcworCisj
IEJ1aWxkcyB3aXRoIGRlYnVnIGZsYWdzIHJlc3VsdCBpbiBhIGh1Z2UgYW1vdW50IG9mIHN5bWJv
bHMgd2l0aCB0aGUgR05VIHRvb2xjaGFpbiwKKyMgcmVzdWx0aW5nIGluIHRoZSBuZWVkIG9mIHNl
dmVyYWwgZ2lnYWJ5dGVzIG9mIG1lbW9yeSBhdCBsaW5rLXRpbWUuIFJlZHVjZSB0aGUgcHJlc3N1
cmUKKyMgYnkgY29tcGlsaW5nIGFueSBzdGF0aWMgbGlicmFyeSBsaWtlIFdURiBvciBKU0Mgd2l0
aCByZWxlYXNlIGZsYWdzIGluc3RlYWQgYW5kIGtlZXAgZGVidWcKKyMgc3ltYm9scyBmb3IgdGhl
IHN0YXRpYyBsaWJyYXJpZXMgdGhhdCBpbXBsZW1lbnQgQVBJLgorbGludXgtKnx3aW4zMi1nKysq
OmlmKENPTkZJRyhkZWJ1ZywgZGVidWd8cmVsZWFzZSl8Y29udGFpbnMoUVRfQ09ORklHLHNlcGFy
YXRlX2RlYnVnX2luZm8pKTpjb250YWlucyhURU1QTEFURSwgbGliKTpzdGF0aWNsaWIgeworICAg
ICFlcXVhbHMoVEFSR0VULCBXZWJLaXQyKTohZXF1YWxzKFRBUkdFVCwgV2ViS2l0V2lkZ2V0cykg
eworICAgICAgICBDT05GSUcgKz0gbm9fZGVidWdfaW5mbworICAgICAgICBDT05GSUcgLT0gc2Vw
YXJhdGVfZGVidWdfaW5mbworICAgICAgICBRTUFLRV9DRkxBR1MgKz0gJCRRTUFLRV9DRkxBR1Nf
UkVMRUFTRQorICAgICAgICBRTUFLRV9DWFhGTEFHUyArPSAkJFFNQUtFX0NYWEZMQUdTX1JFTEVB
U0UKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3Jw
YXRoLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvcnBhdGgucHJmCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYmM0MmYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3JwYXRoLnByZgpAQCAtMCwwICsxLDI1IEBACisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyMgU2V0IHJwYXRoIGZvciB0aGUgYXBwbGljYXRpb24vbGlicmFyeSB3ZSdy
ZSBidWlsZGluZworIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3
IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitlcXVhbHMoUk9PVF9CVUlMRF9E
SVIsICQkZGlybmFtZShERVNURElSKSk6IFJQQVRIRElSX1JFTEFUSVZFX1RPX0RFU1RESVIgPSAu
Li9saWIKKworbGludXgtKjohaXNFbXB0eShSUEFUSERJUl9SRUxBVElWRV9UT19ERVNURElSKSB7
CisgICAgIyBEbyB0aGUgcnBhdGggYnkgaGFuZCBzaW5jZSBpdCdzIG5vdCBwb3NzaWJsZSB0byB1
c2UgT1JJR0lOIGluIFFNQUtFX1JQQVRIRElSCisgICAgIyB0aGlzIGV4cGFuZHMgdG8gJE9SSUdJ
TiAoYWZ0ZXIgcW1ha2UgYW5kIG1ha2UpLCBpdCBkb2VzIE5PVCByZWFkIGEgcW1ha2UgdmFyLgor
ICAgIFFNQUtFX1JQQVRIRElSID0gXCRcJE9SSUdJTi8kJHtSUEFUSERJUl9SRUxBVElWRV9UT19E
RVNURElSfSAkJHtRTUFLRV9SUEFUSERJUn0KKyAgICBSUEFUSCA9ICQkam9pbihRTUFLRV9SUEFU
SERJUiwgIjoiKQorCisgICAgUU1BS0VfTEZMQUdTICs9IC1XbCwteixvcmlnaW4gXCctV2wsLXJw
YXRoLCQke1JQQVRIfVwnCisgICAgUU1BS0VfUlBBVEhESVIgPQorfSBlbHNlIHsKKyAgICBRTUFL
RV9SUEFUSERJUiA9ICQke1JPT1RfQlVJTERfRElSfS9saWIgJCR7UU1BS0VfUlBBVEhESVJ9Cit9
CisKKyMgRklYTUU6IEZvciBRdDUgdGhpcyB3aWxsIG9ubHkgZ2l2ZSBjb3JyZWN0IHJwYXRoIGZv
ciB0aGUgdG9vbHMgdGhhdCBjb21lIHdpdGggV2ViS2l0CisjIEFueSBjbGllbnQgYXBwbGljYXRp
b24gYnVpbHQgYWdhaW5zdCBhIGRldmVsb3Blci1idWlsZCBvZiBRdCArIFdlYktpdCAodGhhdCBk
b2VzCisjIFFUICs9IHdlYmtpdCkgd2lsbCBub3QgZ2V0IHRoZSBycGF0aCBwb2ludGluZyB0byB0
aGUgc3RhbmQtYWxvbmUgV2ViS2l0LWJ1aWxkLAorIyBhbmQgd2lsbCBoYXZlIHRvIHNldCBMRF9M
SUJSQVJZX1BBVEggb3IgZG8gdGhlaXIgb3duIHJwYXRoIGxvZ2ljLiBUaGlzIG5lZWRzCisjIHRv
IGJlIGZpeGVkIG9uIHRoZSBRdCBzaWRlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVj
cy9mZWF0dXJlcy91bml4L2RlZmF1bHRfcG9zdC5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL3VuaXgvZGVmYXVsdF9wb3N0LnByZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wYTFjNmI1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9m
ZWF0dXJlcy91bml4L2RlZmF1bHRfcG9zdC5wcmYKQEAgLTAsMCArMSwzMyBAQAorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIFVuaXggc3BlY2lmaWMgZGVmYXVsdHMKKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFE
TUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
IyBVc2UgU1NFMiBmbG9hdGluZyBwb2ludCBtYXRoIG9uIDMyIGJpdCBpbnN0ZWFkIG9mIHRoZSBk
ZWZhdWx0CisjIDM4NyB0byBtYWtlIGxheW91dCB0ZXN0IHJlc3VsdHMgc2FtZSBvbiAzMiBhbmQg
b24gNjQgYml0IGJ1aWxkcy4KKyMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjgxMCNjMzkgZm9yIGRldGFpbHMuCitsaW51eC1nKysqOmlzRXF1YWwoUVRfQVJD
SCxpMzg2KSB7CisgICAgUU1BS0VfQ0ZMQUdTICs9IC1tYXJjaD1wZW50aXVtNCAtbXNzZTIgLW1m
cG1hdGg9c3NlCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLW1hcmNoPXBlbnRpdW00IC1tc3NlMiAt
bWZwbWF0aD1zc2UKKworICAgICMgVXNlIHRoZSBzdGFicyBmb3JtYXQgZm9yIDMyIGJpdCBkZWJ1
ZyBidWlsZHMgdG8gbWFrZSB0aGUgb2JqZWN0IGZpbGVzIGEgYml0IHNtYWxsZXIuCisgICAgUU1B
S0VfQ1hYRkxBR1NfREVCVUcgLT0gLWcKKyAgICBRTUFLRV9DWFhGTEFHU19ERUJVRyArPSAtZ3N0
YWJzCit9CisKK2xpbnV4LSpnKysqIHsKKyAgICAhcHJvZHVjdGlvbl9idWlsZCB7CisgICAgICAg
ICMgVHJlYXQgd2FybmluZ3MgYXMgZXJyb3JzIG9uIHg4Ni9MaW51eC9HQ0MKKyAgICAgICAgaXNF
cXVhbChRVF9BUkNILHg4Nl82NCl8aXNFcXVhbChRVF9BUkNILGkzODYpOiBRTUFLRV9DWFhGTEFH
UyArPSAtV2Vycm9yCisgICAgfQorfQorCitjb250YWlucyhURU1QTEFURSwgYXBwKTogQ09ORklH
ICs9IHJwYXRoCisKK2lzRXF1YWwoUVRfQVJDSCxpMzg2KTpDT05GSUcoZGVidWcsIGRlYnVnfHJl
bGVhc2UpIHsKKyAgIyBNYWtlIGxkIG5vdCBjYWNoZSB0aGUgc3ltYm9sIHRhYmxlcyBvZiBpbnB1
dCBmaWxlcyBpbiBtZW1vcnkgdG8gYXZvaWQgbWVtb3J5IGV4aGF1c3Rpb24gZHVyaW5nIHRoZSBs
aW5raW5nIHBoYXNlLgorICBjb25maWdfZ251bGQ6IFFNQUtFX0xGTEFHUyArPSAtV2wsLS1uby1r
ZWVwLW1lbW9yeQorfQorCitsb2FkKGRlZmF1bHRfcG9zdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3Ft
YWtlL21rc3BlY3MvZmVhdHVyZXMvdW5peC9kZWZhdWx0X3ByZS5wcmYgYi9Ub29scy9xbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL3VuaXgvZGVmYXVsdF9wcmUucHJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmFhZmM0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL3VuaXgvZGVmYXVsdF9wcmUucHJmCkBAIC0wLDAgKzEsMjIgQEAKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBVbml4IHNwZWNpZmljIGRlZmF1bHRzCisjCisjIFNlZSAnVG9vbHMvcW1h
a2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK2xvYWQoZnVuY3Rpb25zKQorCitDT05GSUcgKz0gb2JqZWN0X3BhcmFsbGVsX3RvX3Nv
dXJjZQorCisjIEV4cG9zZSBpZiB3ZSBhcmUgYnVpbGRpbmcgaW5zaWRlIFNjcmF0Y2hib3gKK1NC
T1hfQ0hFQ0sgPSAkJChfU0JPWF9ESVIpCishaXNFbXB0eShTQk9YX0NIRUNLKTogQ09ORklHICs9
IHNjcmF0Y2hib3gKKworIyBJZiBRdCBpcyBjb25maWd1cmVkIHdpdGggZW1iZWRkZWQgb3IgUVBB
IHdlIHNldCBhIGNvbnZlbmllbmNlIGNvbmZpZworIyBmbGFnIHRoYXQgY2FuIGJlIHVzZWQgdG8g
dGVzdCBmb3IgZWl0aGVyIG9mIHRoZXNlIHNpdHVhdGlvbnMuCitjb250YWlucyhRVF9DT05GSUcs
IHFwYSl8Y29udGFpbnMoUVRfQ09ORklHLCBlbWJlZGRlZCk6IENPTkZJRyArPSBlbWJlZGRlZAor
CisjIFJlZHVjZSBsaW5raW5nIG1lbW9yeSBwcmVzc3VyZSBvbiAzMi1iaXQgZGVidWcgYnVpbGRz
IG9uIExpbnV4CitsaW51eC1nKysqOkNPTkZJRyhkZWJ1ZywgZGVidWd8cmVsZWFzZSk6aXNFcXVh
bChRVF9BUkNILGkzODYpOiBDT05GSUcgKz0gdXNlX2FsbF9pbl9vbmVfZmlsZXMKKworbG9hZChk
ZWZhdWx0X3ByZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvdW5p
eC9pY2MucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy91bml4L2ljYy5wcmYKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliZmRkZAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvdW5peC9pY2MucHJmCkBAIC0wLDAgKzEs
OCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgb3B0aW9uYWwgZmVhdHVyZSBmaWxlIGFkZHMgcnVs
ZXMgdGhhdCBjb21waWxlIHVzaW5nIEludGVsCisjIGNvbXBpbGVyIGVhc2llci4KKyMKKyMgU2Vl
ICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVt
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworUU1BS0VfQ1hYRkxBR1MgKz0gLXdkNjgsMTYxLDE3NSwxNzcsMjM5
LDQxMSw2NTQsODY0LDg3MywxMTI1LDIwODksMjE5NgpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2Uv
bWtzcGVjcy9mZWF0dXJlcy91c2VfYWxsX2luX29uZV9maWxlcy5wcmYgYi9Ub29scy9xbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL3VzZV9hbGxfaW5fb25lX2ZpbGVzLnByZgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5lMTZkY2ZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy91c2VfYWxsX2luX29uZV9maWxlcy5wcmYKQEAgLTAsMCArMSwy
OCBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgZmVhdHVyZSBlbmFibGVzIHRoZSB1c2Ugb2YgQWxs
SW5PbmUuY3BwIGZpbGVzIGJ5IGFkZGluZyB0aGVtCisjIHRvIFNPVVJDRVMgYW5kIHJlbW92aW5n
IHRoZSBzb3VyY2VzIHRoZSBjb3JyZXNwb25kaW5nIGZpbGVzIGluY2x1ZGUKKyMgZnJvbSBTT1VS
Q0VTLCB0byBhdm9pZCBkdXBsaWNhdGVkIGNvbXBpbGF0aW9uIHVuaXRzLgorIworIyBTZWUgJ1Rv
b2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisjIEdsb2JiaW5nIGFsbCBkb2VzIG5vdCB3b3JrIHlldCwgbm90IGFsbCBB
bGxJbk9uZSBmaWxlcyBidWlsZCByZWxpYWJseSB5ZXQuCisjIFNvIGluc3RlYWQgd2Ugc2VsZWN0
IHRoZW0gbWFudWFsbHkuCisjY29sbGVjdGlvbiA9ICQkZmlsZXMoJCRfUFJPX0ZJTEVfUFdEXy8q
QWxsSW5PbmUuY3BwLCB0cnVlKQorY29sbGVjdGlvbiA9ICQkQUxMX0lOX09ORV9TT1VSQ0VTCisK
K2Zvcihjb2xsZWN0aW9uRmlsZSwgY29sbGVjdGlvbikgeworICAgIGxpbmVzID0gJCRjYXQoJCRf
UFJPX0ZJTEVfUFdEXy8kJGNvbGxlY3Rpb25GaWxlLCBsaW5lcykKKyAgICBmb3IobGluZSwgbGlu
ZXMpIHsKKyAgICAgICAgbGluZSA9ICQkZmluZChsaW5lLCAiXi4raW5jbHVkZSBcIiguKilcIiIp
CisgICAgICAgIGlzRW1wdHkobGluZSk6IG5leHQoKQorICAgICAgICBsaW5lIH49IHMvXi4raW5j
bHVkZSBcIiguKilcIi9cXDEvCisgICAgICAgIHNvdXJjZSA9ICQkZGlybmFtZShjb2xsZWN0aW9u
RmlsZSkvJCRsaW5lCisgICAgICAgIGNvbnRhaW5zKFNPVVJDRVMsICQkc291cmNlKSB7CisgICAg
ICAgICAgICBTT1VSQ0VTIC09ICQkc291cmNlCisgICAgICAgICAgICB0b29rRnJvbVNvdXJjZXMg
PSB0cnVlCisgICAgICAgIH0KKyAgICB9CisgICAgIWlzRW1wdHkodG9va0Zyb21Tb3VyY2VzKTog
U09VUkNFUyAqPSAkJGNvbGxlY3Rpb25GaWxlCit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtl
L21rc3BlY3MvZmVhdHVyZXMvdmFsZ3JpbmQucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy92YWxncmluZC5wcmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE4
MTE1NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvdmFs
Z3JpbmQucHJmCkBAIC0wLDAgKzEsMTEgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGlzIG9wdGlvbmFs
IGZlYXR1cmUgZmlsZSBhZGRzIHJ1bGVzIHRoYXQgbWFrZSBydW5uaW5nIHZhbGdyaW5kCisjIG9u
IFF0V2ViS2l0IGVhc2llci4KKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBv
dmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUU1BS0VfQ1hYRkxB
R1MgKz0gLWcKK1FNQUtFX0xGTEFHUyArPSAtZworREVGSU5FUyArPSBVU0VfU1lTVEVNX01BTExP
Qz0xCitERUZJTkVTICs9IEVOQUJMRV9KSVQ9MApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy93ZWJraXRfbW9kdWxlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL3dlYmtpdF9tb2R1bGVzLnByZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xODkzODc4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0
dXJlcy93ZWJraXRfbW9kdWxlcy5wcmYKQEAgLTAsMCArMSw1MSBAQAorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IFVzZWQgZm9yIGFwcGx5aW5nIHRoZSBjb250ZW50IG9mIHRoZSBXRUJLSVQgdmFyaWFibGUgaW50
byB0aGUKKyMgZWZmZWN0IGVhY2ggbGlicmFyeS9tb2R1bGUgaGFzIG9uIHZhcmlhYmxlcyBzdWNo
IGFzIExJQlMgYW5kIFFULgorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JFQURNRScgZm9yIGFuIG92
ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFJlb3JkZXIgbGli
cmFyaWVzIHNvIHRoYXQgdGhlIGxpbmsgYW5kIGluY2x1ZGUgb3JkZXIgaXMgY29ycmVjdCwKKyMg
YW5kIG1ha2Ugc3VyZSB0aGUgY2FzZSBtYXRjaGVzIHRoZSBvcmlnaW5hbCBjYXNlLgorbGlicmFy
aWVzID0gV2ViS2l0MSBXZWJLaXQyIFdlYkNvcmUgQU5HTEUgSmF2YVNjcmlwdENvcmUgV1RGCitm
b3IobGlicmFyeSwgbGlicmFyaWVzKSB7CisgICAgY29udGFpbnMoV0VCS0lULCAkJGxvd2VyKCQk
bGlicmFyeSkpIHsKKyAgICAgICAgV0VCS0lUIC09ICQkbG93ZXIoJCRsaWJyYXJ5KQorICAgICAg
ICBXRUJLSVQgKj0gJCRsaWJyYXJ5CisgICAgfQorfQorCisjIExvYWQgdGhlIC5wcmkgZmlsZSBm
b3IgZWFjaCBsaWJyYXJ5LCB0byBwaWNrIHVwIExJQlMsIElOQ0xVREVTLAorIyBhbmQgb3RoZXIg
ZGVwZW5kZW5jaWVzIHRoZSBsaWJyYXJ5IGFkZHMuCitmb3IobGlicmFyeSwgV0VCS0lUKSB7Cisg
ICAgIyBKdWdnbGUgTElCUyB0byBrZWVwIHRoZSBzdGF0aWMgbGluayBvcmRlciBjb3JyZWN0Cisg
ICAgZXhpc3RpbmdfbGlicyA9ICQkTElCUworICAgIHVuc2V0KExJQlMpCisKKyAgICAjIFdlIGRl
ZmluaXRseSBuZWVkIGluY2x1ZGUgcGF0aHMgYW5kIHN1Y2ggKHRoaXMgd2lsbCBzZXQKKyAgICAj
IFNPVVJDRV9ESVIgdG8gdGhlIHJpZ2h0IHBhdGggc28gd2UgY2FuIHVzZSBpdCBiZWxvdykuCisg
ICAgbGlicmFyeV9pZGVudGlmaWVyID0gJCRsb3dlcigkJGxpYnJhcnkpCisgICAgaW5jbHVkZSgu
Li9tb2R1bGVzLyQke2xpYnJhcnlfaWRlbnRpZmllcn0ucHJmKQorCisgICAgIyBNb3JlIGp1Z2ds
aW5nLCBzbyB0aGF0IHdlIGNhbiBhZGQgdGhlIGRlcGVuZGVudCBsaWJzIGxhdGVyCisgICAgIyBv
biBpZiB3ZSBkZWNpZGUgdGhhdCB3ZSBuZWVkIHRvIGxpbmsgdG8gdGhlIGxpYnJhcnkuCisgICAg
ZXZhbChXRUJLSVQuJCR7bGlicmFyeV9pZGVudGlmaWVyfS5kZXBlbmRlbnRfbGlicyA9ICQkTElC
UykKKyAgICBMSUJTID0gJCRleGlzdGluZ19saWJzCisKKyAgICAjIEFueXRoaW5nIG5vdCBsaW5r
aW5nIGR5bmFtaWNhbGx5IHRvIFF0V2ViS2l0IHNob3VsZCBtYWtlIHN1cmUgdG8gaGF2ZSBpdHMg
ZXhwb3J0CisgICAgIyBtYWNyb3Mgc3luY2hyb25pemVkIHdpdGggdGhlIGNvZGUgdGhhdCBpdCB3
aWxsIGJlIGxpbmtlZCB3aXRoIHN0YXRpY2FsbHkuCisgICAgIWNvbnRhaW5zKFFULCB3ZWJraXQp
OiBERUZJTkVTICs9IFNUQVRJQ0FMTFlfTElOS0VEX1dJVEhfJCRsaWJyYXJ5Cit9CisKK2NyZWF0
aW5nX21vZHVsZSB7CisgICAgIyBTYW5pdGl6ZSBQS0dDT05GSUcgYXMgd2UgZG9uJ3Qgd2FudCBh
bnkgb2YgdGhlc2UgbGlicmFyaWVzCisgICAgIyB0byBlbmQgdXAgaW4gYXMgcHVibGljIEFQSSBk
ZXBlbmRlbmljZXMgaW4gdGhlIFF0V2ViS2l0IHBybCBmaWxlLgorICAgIFBLR0NPTkZJR19QUklW
QVRFICo9ICQkUEtHQ09ORklHCisgICAgdW5zZXQoUEtHQ09ORklHKQorCisgICAgIyBXZSBkbyBo
YXZlIGEgbGltaXRlZCBzdWJzZXQgb2YgUXQgbW9kdWxlcyBhcyBkZXBlbmRlbmNpZXMgZm9yIHVz
aW5nCisgICAgIyB0aGUgcHVibGljIFF0V2ViS2l0IEFQSS4gVGhlIHJlc3Qgb2YgdGhlIG1vZHVs
ZXMgZ28gaW50byBRVF9QUklWQVRFLgorICAgIFFUX1BSSVZBVEUgKj0gJCRRVAorICAgIFFUID0g
JCRRVF9BUElfREVQRU5EUworICAgIFFUX1BSSVZBVEUgLT0gJCRRVAorfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93aW4zMi9kZWZhdWx0X3Bvc3QucHJmIGIvVG9v
bHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93aW4zMi9kZWZhdWx0X3Bvc3QucHJmCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjJlODYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3dpbjMyL2RlZmF1bHRfcG9zdC5wcmYKQEAgLTAs
MCArMSw0MSBAQAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdpbjMyIHNwZWNpZmljIGRlZmF1bHRzCisjCisj
IFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5
c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgUGljayB1cCAzcmRwYXJ0eSBsaWJyYXJpZXMgZnJvbSBJ
TkNMVURFL0xJQiBqdXN0IGxpa2Ugd2l0aCBNU1ZDCit3aW4zMi1nKysqIHsKKyAgICBUTVBQQVRI
ICAgICAgICAgICAgPSAkJHF1b3RlKCQkKElOQ0xVREUpKQorICAgIFFNQUtFX0lOQ0RJUl9QT1NU
ICs9ICQkc3BsaXQoVE1QUEFUSCwiOyIpCisgICAgVE1QUEFUSCAgICAgICAgICAgID0gJCRxdW90
ZSgkJChMSUIpKQorICAgIFFNQUtFX0xJQkRJUl9QT1NUICs9ICQkc3BsaXQoVE1QUEFUSCwiOyIp
Cit9CisKKyMgRGlzYWJsZSBhIGZldyB3YXJuaW5ncy4gVGhlIHNhbWUgd2FybmluZ3MgYXJlIGFs
c28gZGlzYWJsZWQKKyMgaW4gV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1v
bi52c3Byb3BzCit3aW4zMi1tc3ZjKnx3aW5jZSo6IFFNQUtFX0NYWEZMQUdTICs9IC13ZDQyOTEg
LXdkNDM0NCAtd2Q0Mzk2IC13ZDQ1MDMgLXdkNDgwMCAtd2Q0ODE5IC13ZDQ5OTYKK3dpbjMyLWlj
YzogUU1BS0VfQ1hYRkxBR1MgKz0gLXdkODczCisKK2xvYWQoZGVmYXVsdF9wb3N0KQorCisjIFdo
ZW4gY3JlYXRpbmcgdGhlIHRhcmdldCBETEwsIGV4dHJhY3QgZXhwb3J0aW5nIGxpbmtlciBkaXJl
Y3RpdmVzIGZyb20KKyMgYWxsIHN0YXRpYyBsaWJyYXJpZXMgd2UncmUgbGlua2luZyBpbnRvIHRo
ZSBETEwgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZQorIyBhbHNvIGV4cG9ydGVkIGZyb20gdGhlIERM
TC4KK3NoYXJlZDpjb250YWlucyhURU1QTEFURSwgbGliKSB7CisgICAgZm9yKHRhcmdldCwgUE9T
VF9UQVJHRVRERVBTKSB7CisgICAgICAgIGxpYmRlcCA9ICQkZmluZCh0YXJnZXQsIC4qXFwubGli
KQorICAgICAgICAhaXNFbXB0eShsaWJkZXApOiBMSUJTV0lUSEVYUE9SVFMgKz0gJCRsaWJkZXAK
KyAgICB9Cit9CisKKyFpc0VtcHR5KExJQlNXSVRIRVhQT1JUUykgeworICAgIHN1ZmZpeCA9Cisg
ICAgQ09ORklHKGRlYnVnLCBkZWJ1Z3xyZWxlYXNlKTogc3VmZml4ID0gZAorICAgIGZvcndhcmRl
ZF9leHBvcnRzLnRhcmdldCA9IGZvcndhcmRlZC1leHBvcnRzJCR7c3VmZml4fS5jcHAKKyAgICBm
b3J3YXJkZWRfZXhwb3J0cy5jb21tYW5kcyA9IHB5dGhvbiAkJHtST09UX1dFQktJVF9ESVJ9JCR7
UU1BS0VfRElSX1NFUH1Ub29scyQke1FNQUtFX0RJUl9TRVB9U2NyaXB0cyQke1FNQUtFX0RJUl9T
RVB9Z2VuZXJhdGUtd2luMzItZXhwb3J0LWZvcndhcmRzICQkTElCU1dJVEhFWFBPUlRTICQkZm9y
d2FyZGVkX2V4cG9ydHMudGFyZ2V0CisgICAgZm9yd2FyZGVkX2V4cG9ydHMuZGVwZW5kcyA9ICQk
TElCU1dJVEhFWFBPUlRTCisgICAgUU1BS0VfRVhUUkFfVEFSR0VUUyArPSBmb3J3YXJkZWRfZXhw
b3J0cworICAgIEdFTkVSQVRFRF9TT1VSQ0VTICs9ICQkZm9yd2FyZGVkX2V4cG9ydHMudGFyZ2V0
Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2luMzIvZGVm
YXVsdF9wcmUucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy93aW4zMi9kZWZhdWx0
X3ByZS5wcmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMwNmMzYgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2luMzIvZGVmYXVs
dF9wcmUucHJmCkBAIC0wLDAgKzEsMTAgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBXaW5kb3dzIHNwZWNp
ZmljIGRlZmF1bHRzCisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZp
ZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2xvYWQoZGVmYXVsdF9wcmUp
CisKK2RlYnVnOiBDT05GSUcgKz0gdXNlX2FsbF9pbl9vbmVfZmlsZXMKKwpkaWZmIC0tZ2l0IGEv
VG9vbHMvcW1ha2UvbWtzcGVjcy9tb2R1bGVzL2FuZ2xlLnByZiBiL1Rvb2xzL3FtYWtlL21rc3Bl
Y3MvbW9kdWxlcy9hbmdsZS5wcmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTg2MzFhNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvbW9kdWxlcy9h
bmdsZS5wcmYKQEAgLTAsMCArMSw5IEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTW9kdWxlIGZpbGUgZm9y
IEFOR0xFLCB1c2VkIGJ5IHRhcmdldHMgdGhhdCBkZXBlbmQgb24gQU5HTEUKKyMKKyMgU2VlICdU
b29scy9xbWFrZS9SRUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworV0VCS0lULmFuZ2xlLnJvb3Rfc291cmNlX2RpciA9ICQke1JPT1RfV0VC
S0lUX0RJUn0vU291cmNlL1RoaXJkUGFydHkvQU5HTEUKKworaW5jbHVkZSgkJHtXRUJLSVQuYW5n
bGUucm9vdF9zb3VyY2VfZGlyfS9BTkdMRS5wcmkpCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9t
a3NwZWNzL21vZHVsZXMvamF2YXNjcmlwdGNvcmUucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9t
b2R1bGVzL2phdmFzY3JpcHRjb3JlLnByZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ZDk2NTZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9tb2R1
bGVzL2phdmFzY3JpcHRjb3JlLnByZgpAQCAtMCwwICsxLDEwIEBACisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
TW9kdWxlIGZpbGUgZm9yIEphdmFTY3JpcHRDb3JlLCB1c2VkIGJ5IHRhcmdldHMgdGhhdCBkZXBl
bmQgb24KKyMgSmF2YVNjcmlwdENvcmUKKyMKKyMgU2VlICdUb29scy9xbWFrZS9SRUFETUUnIGZv
ciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV0VCS0lU
LmphdmFzY3JpcHRjb3JlLnJvb3Rfc291cmNlX2RpciA9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291
cmNlL0phdmFTY3JpcHRDb3JlCisKK2luY2x1ZGUoJCR7V0VCS0lULmphdmFzY3JpcHRjb3JlLnJv
b3Rfc291cmNlX2Rpcn0vSmF2YVNjcmlwdENvcmUucHJpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1h
a2UvbWtzcGVjcy9tb2R1bGVzL3dlYmNvcmUucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9tb2R1
bGVzL3dlYmNvcmUucHJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZDE3
NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL21vZHVsZXMvd2ViY29y
ZS5wcmYKQEAgLTAsMCArMSw5IEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTW9kdWxlIGZpbGUgZm9yIFdl
YkNvcmUsIHVzZWQgYnkgdGFyZ2V0cyB0aGF0IGRlcGVuZCBvbiBXZWJDb3JlCisjCisjIFNlZSAn
VG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK1dFQktJVC53ZWJjb3JlLnJvb3Rfc291cmNlX2RpciA9ICQke1JPT1Rf
V0VCS0lUX0RJUn0vU291cmNlL1dlYkNvcmUKKworaW5jbHVkZSgkJHtXRUJLSVQud2ViY29yZS5y
b290X3NvdXJjZV9kaXJ9L1dlYkNvcmUucHJpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtz
cGVjcy9tb2R1bGVzL3dlYmtpdDEucHJmIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9tb2R1bGVzL3dl
YmtpdDEucHJmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYWI5YTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL21vZHVsZXMvd2Via2l0MS5wcmYK
QEAgLTAsMCArMSw5IEBACisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTW9kdWxlIGZpbGUgZm9yIFdlYktpdDEs
IHVzZWQgYnkgdGFyZ2V0cyB0aGF0IGRlcGVuZCBvbiBXZWJLaXQxCisjCisjIFNlZSAnVG9vbHMv
cW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK1dFQktJVC53ZWJraXQxLnJvb3Rfc291cmNlX2RpciA9ICQke1JPT1RfV0VCS0lU
X0RJUn0vU291cmNlL1dlYktpdAorCitpbmNsdWRlKCQke1dFQktJVC53ZWJraXQxLnJvb3Rfc291
cmNlX2Rpcn0vV2ViS2l0MS5wcmkpCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL21v
ZHVsZXMvd2Via2l0Mi5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL21vZHVsZXMvd2Via2l0Mi5w
cmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1MDIxNgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvbW9kdWxlcy93ZWJraXQyLnByZgpAQCAtMCww
ICsxLDkgQEAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNb2R1bGUgZmlsZSBmb3IgV2ViS2l0MiwgdXNlZCBi
eSB0YXJnZXRzIHRoYXQgZGVwZW5kIG9uIFdlYktpdDIKKyMKKyMgU2VlICdUb29scy9xbWFrZS9S
RUFETUUnIGZvciBhbiBvdmVydmlldyBvZiB0aGUgYnVpbGQgc3lzdGVtCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworV0VCS0lULndlYmtpdDIucm9vdF9zb3VyY2VfZGlyID0gJCR7Uk9PVF9XRUJLSVRfRElSfS9T
b3VyY2UvV2ViS2l0MgorCitpbmNsdWRlKCQke1dFQktJVC53ZWJraXQyLnJvb3Rfc291cmNlX2Rp
cn0vV2ViS2l0Mi5wcmkpCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL21vZHVsZXMv
d3RmLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvbW9kdWxlcy93dGYucHJmCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZGY3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9xbWFrZS9ta3NwZWNzL21vZHVsZXMvd3RmLnByZgpAQCAtMCwwICsxLDkgQEAKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBNb2R1bGUgZmlsZSBmb3IgV1RGLCB1c2VkIGJ5IHRhcmdldHMgdGhhdCBkZXBlbmQg
b24gV1RGCisjCisjIFNlZSAnVG9vbHMvcW1ha2UvUkVBRE1FJyBmb3IgYW4gb3ZlcnZpZXcgb2Yg
dGhlIGJ1aWxkIHN5c3RlbQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dFQktJVC53dGYucm9vdF9zb3VyY2Vf
ZGlyID0gJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV1RGCisKK2luY2x1ZGUoJCR7V0VCS0lU
Lnd0Zi5yb290X3NvdXJjZV9kaXJ9L1dURi5wcmkpCmRpZmYgLS1naXQgYS9XZWJLaXQucHJvIGIv
V2ViS2l0LnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzE2NzEyCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0LnBybwpAQCAtMCwwICsxLDYwIEBACisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgUm9vdCBwcm9qZWN0IGZpbGUsIHVzZWQgdG8gbG9hZCBXZWJLaXQgaW4gUXQgQ3JlYXRv
ciBhbmQgZm9yCisjIGJ1aWxkaW5nIFF0V2ViS2l0LgorIworIyBTZWUgJ1Rvb2xzL3FtYWtlL1JF
QURNRScgZm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBzeXN0ZW0KKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitURU1QTEFURSA9IHN1YmRpcnMKK0NPTkZJRyArPSBvcmRlcmVkCisKKyFlcXVhbHMoUVRfTUFK
T1JfVkVSU0lPTiwgNSk6IGVycm9yKCJCdWlsZGluZyBXZWJLaXQgd2l0aCBRdCB2ZXJzaW9ucyBv
bGRlciB0aGFuIDUuMCBpcyBub3Qgc3VwcG9ydGVkLiIpCisKK1dURi5maWxlID0gU291cmNlL1dU
Ri9XVEYucHJvCitXVEYubWFrZWZpbGUgPSBNYWtlZmlsZS5XVEYKK1NVQkRJUlMgKz0gV1RGCisK
K0phdmFTY3JpcHRDb3JlLmZpbGUgPSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJvCitKYXZhU2NyaXB0Q29yZS5tYWtlZmlsZSA9IE1ha2VmaWxlLkphdmFTY3JpcHRDb3Jl
CitTVUJESVJTICs9IEphdmFTY3JpcHRDb3JlCisKK3VzZT8oM0RfR1JBUEhJQ1MpIHsKKyAgICBB
TkdMRS5maWxlID0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucHJvCisgICAgQU5HTEUu
bWFrZWZpbGUgPSBNYWtlZmlsZS5BTkdMRQorICAgIFNVQkRJUlMgKz0gQU5HTEUKK30KKworV2Vi
Q29yZS5maWxlID0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KK1dlYkNvcmUubWFrZWZpbGUg
PSBNYWtlZmlsZS5XZWJDb3JlCitTVUJESVJTICs9IFdlYkNvcmUKKworYnVpbGQ/KHdlYmtpdDEp
IHsKKyAgICB3ZWJraXQxLmZpbGUgPSBTb3VyY2UvV2ViS2l0L1dlYktpdDEucHJvCisgICAgd2Vi
a2l0MS5tYWtlZmlsZSA9IE1ha2VmaWxlLldlYktpdDEKKyAgICBTVUJESVJTICs9IHdlYmtpdDEK
K30KKworYnVpbGQ/KHdlYmtpdDIpIHsKKyAgICB3ZWJraXQyLmZpbGUgPSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnBybworICAgIHdlYmtpdDIubWFrZWZpbGUgPSBNYWtlZmlsZS5XZWJLaXQyCisg
ICAgU1VCRElSUyArPSB3ZWJraXQyCit9CisKK1F0V2ViS2l0LmZpbGUgPSBTb3VyY2UvUXRXZWJL
aXQucHJvCitRdFdlYktpdC5tYWtlZmlsZSA9IE1ha2VmaWxlLlF0V2ViS2l0CitTVUJESVJTICs9
IFF0V2ViS2l0CisKKyFwcm9kdWN0aW9uX2J1aWxkIHsKKyAgICAjIE9ubHkgdGVzdGVkIG9uIExp
bnV4IHNvIGZhci4KKyAgICBsaW51eCogeworICAgICAgICBndGVzdC5maWxlID0gU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QvZ3Rlc3QucHJvCisgICAgICAgIGd0ZXN0Lm1ha2VmaWxlID0gTWFrZWZp
bGUuZ3Rlc3QKKyAgICAgICAgU1VCRElSUyArPSBndGVzdAorICAgIH0KK30KKworVG9vbHMuZmls
ZSA9IFRvb2xzL1Rvb2xzLnBybworVG9vbHMubWFrZWZpbGUgPSBNYWtlZmlsZS5Ub29scworU1VC
RElSUyArPSBUb29scworCisjIE51bWJlciBvZiB0aW1lcyBpbmNyZW1lbnRhbCBidWlsZHMgaGF2
ZSBmYWlsZWQ6IDEKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJL
aXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IDBmYWY0NGMuLjViOTg0YjYgMTAwNjQ0Ci0tLSBh
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxv
ZwpAQCAtMSwyMyArMSwzIEBACi0yMDEzLTEwLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+Ci0KLSAgICAgICAgRlRMIHNob3VsZCB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIExMVk0g
TUNKSVQgbWVtb3J5IG1hbmFnZXIgQVBJcyB0aGF0IHRha2UgYSBTZWN0aW9uTmFtZQotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTkzCi0KLSAgICAg
ICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCi0KLSAgICAgICAgKiBMTFZNSW5jbHVkZXNN
b3VudGFpbkxpb24udGFyLmJ6MjoKLSAgICAgICAgKiBMTFZNTGlicmFyaWVzTW91bnRhaW5MaW9u
LnRhci5iejI6Ci0KLTIwMTMtMTAtMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+Ci0KLSAgICAgICAgW1dpbl0gSW1wbGVtZW50IHRoZSBtZWRpYSBjb250cm9scyBpbiBKYXZh
U2NyaXB0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIyMTY2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgotCi0gICAgICAgICogd2lu
L3Rvb2xzL3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHM6IEFjdGl2YXRlIHRoZQotICAgICAg
ICBFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUIGZsYWcuCi0KIDIwMTMtMDktMjQgIEJlYXIg
VHJhdmlzICA8YmV0cmF2aXNAYWRvYmUuY29tPgogCiAgICAgICAgIERpc2FibGUgQ1NTX1NIQVBF
UyBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvTExWTUluY2x1ZGVzTW91
bnRhaW5MaW9uLnRhci5iejIgYi9XZWJLaXRMaWJyYXJpZXMvTExWTUluY2x1ZGVzTW91bnRhaW5M
aW9uLnRhci5iejIKaW5kZXggYWMxNjJjMC4uZjI0NjU2NCAxMDA2NDQKQmluYXJ5IGZpbGVzIGEv
V2ViS2l0TGlicmFyaWVzL0xMVk1JbmNsdWRlc01vdW50YWluTGlvbi50YXIuYnoyIGFuZCBiL1dl
YktpdExpYnJhcmllcy9MTFZNSW5jbHVkZXNNb3VudGFpbkxpb24udGFyLmJ6MiBkaWZmZXIKZGlm
ZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9MTFZNTGlicmFyaWVzTW91bnRhaW5MaW9uLnRhci5i
ejIgYi9XZWJLaXRMaWJyYXJpZXMvTExWTUxpYnJhcmllc01vdW50YWluTGlvbi50YXIuYnoyCmlu
ZGV4IDg1ZGE2NTYuLjlhZjNkM2IgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1dlYktpdExpYnJhcmll
cy9MTFZNTGlicmFyaWVzTW91bnRhaW5MaW9uLnRhci5iejIgYW5kIGIvV2ViS2l0TGlicmFyaWVz
L0xMVk1MaWJyYXJpZXNNb3VudGFpbkxpb24udGFyLmJ6MiBkaWZmZXIKZGlmZiAtLWdpdCBhL1dl
YktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcyBiL1dl
YktpdExpYnJhcmllcy93aW4vdG9vbHMvdnNwcm9wcy9GZWF0dXJlRGVmaW5lcy5wcm9wcwppbmRl
eCA0NDBiODlhLi4wYTBkOTBlIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvd2luL3Rvb2xz
L3ZzcHJvcHMvRmVhdHVyZURlZmluZXMucHJvcHMKKysrIGIvV2ViS2l0TGlicmFyaWVzL3dpbi90
b29scy92c3Byb3BzL0ZlYXR1cmVEZWZpbmVzLnByb3BzCkBAIC01Miw3ICs1Miw2IEBACiAgICAg
PEVOQUJMRV9MSU5LX1BSRUZFVENIIC8+DQogICAgIDxFTkFCTEVfTElOS19QUkVSRU5ERVIgLz4N
CiAgICAgPEVOQUJMRV9NQVRITUw+RU5BQkxFX01BVEhNTDwvRU5BQkxFX01BVEhNTD4NCi0gICAg
PEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQ+RU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQ
VDwvRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVD4NCiAgICAgPEVOQUJMRV9NRURJQV9TT1VS
Q0UgLz4NCiAgICAgPEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTPkVOQUJMRV9NRURJQV9TVEFUSVNU
SUNTPC9FTkFCTEVfTUVESUFfU1RBVElTVElDUz4NCiAgICAgPEVOQUJMRV9NRVRFUl9FTEVNRU5U
PkVOQUJMRV9NRVRFUl9FTEVNRU5UPC9FTkFCTEVfTUVURVJfRUxFTUVOVD4NCkBAIC05Miw3ICs5
MSw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4NCiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPg0KICAg
ICA8Q2xDb21waWxlPg0KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKEVOQUJMRV9J
RlJBTUVfU0VBTUxFU1MpOyQoRU5BQkxFX1BST01JU0VTKTskKEVOQUJMRV9SRVFVRVNUX0FOSU1B
VElPTl9GUkFNRSk7JChFTkFCTEVfM0RfUkVOREVSSU5HKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpOyQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORyk7JChFTkFC
TEVfQkxPQik7JChFTkFCTEVfQ0FOVkFTX1BST1hZKTskKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
Ryk7JChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUyk7JChFTkFCTEVfQ1NTX0lNQUdFX1NF
VCk7JChFTkFCTEVfQ1NTM19URVhUKTskKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUsp
OyQoRU5BQkxFX0NTU19GSUxURVJTKTskKEVOQUJMRV9DU1NfR1JJRF9MQVlPVVQpOyQoRU5BQkxF
X0NTU19TSEFERVJTKTskKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpOyQoRU5BQkxFX0NTU19SRUdJ
T05TKTskKEVOQUJMRV9DU1NfRVhDTFVTSU9OUyk7JChFTkFCTEVfQ1NTX1NIQVBFUyk7JChFTkFC
TEVfQ1NTX1NUSUNLWV9QT1NJVElPTik7JChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9O
U19UUkFOU0lUSU9OU19VTlBSRUZJWEVEKTskKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIp
OyQoRU5BQkxFX1NRTF9EQVRBQkFTRSk7JChFTkFCTEVfREFUQUdSSUQpOyQoRU5BQkxFX0RBVEFM
SVNUX0VMRU1FTlQpOyQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpOyQoRU5BQkxFX0RFVEFJ
TFNfRUxFTUVOVCk7JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKTskKEVOQUJMRV9ESVJFQ1RP
UllfVVBMT0FEKTskKEVOQUJMRV9GSUxURVJTKTskKEVOQUJMRV9GSUxFX1NZU1RFTSk7JChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpOyQoRU5BQkxFX0dBTUVQQUQpOyQoRU5BQkxFX0dFT0xPQ0FUSU9O
KTskKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORyk7JChFTkFCTEVfSElH
SF9EUElfQ0FOVkFTKTskKEVOQUJMRV9JQ09OREFUQUJBU0UpOyQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpOyQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpOyQoRU5BQkxFX0lOUFVUX1NQRUVDSCk7
JChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lO
Q09NUExFVEUpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCk7JChFTkFCTEVfSU5Q
VVRfVFlQRV9NT05USCk7JChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKTskKEVOQUJMRV9JTlBVVF9U
WVBFX1dFRUspOyQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpOyQoRU5BQkxFX0xFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKTskKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUyk7JChFTkFC
TEVfTElOS19QUkVGRVRDSCk7JChFTkFCTEVfTElOS19QUkVSRU5ERVIpOyQoRU5BQkxFX01BVEhN
TCk7JChFTkFCTEVfTUVURVJfRUxFTUVOVCk7JChFTkFCTEVfTUlDUk9EQVRBKTskKEVOQUJMRV9O
T1RJRklDQVRJT05TKTskKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKTskKEVOQUJMRV9QUk9H
UkVTU19FTEVNRU5UKTskKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKTskKEVOQUJMRV9RVU9UQSk7
JChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMpOyQoRU5BQkxFX1NDUklQVEVEX1NQRUVD
SCk7JChFTkFCTEVfU0hBRE9XX0RPTSk7JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpOyQoRU5BQkxF
X1NUWUxFX1NDT1BFRCk7JChFTkFCTEVfU1ZHKTskKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElO
R1MpOyQoRU5BQkxFX1NWR19GT05UUyk7JChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKTskKEVOQUJM
RV9URVhUX0FVVE9TSVpJTkcpOyQoRU5BQkxFX1VORE9fTUFOQUdFUik7JChFTkFCTEVfVklERU8p
OyQoRU5BQkxFX1ZJREVPX1RSQUNLKTskKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBKTskKEVO
QUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpOyQoRU5BQkxFX01FRElBX1NPVVJDRSk7JChFTkFC
TEVfTUVESUFfU1RBVElTVElDUyk7JChFTkFCTEVfV0VCX1NPQ0tFVFMpOyQoRU5BQkxFX1dFQl9U
SU1JTkcpOyQoRU5BQkxFX1dPUktFUlMpOyQoRU5BQkxFX1hTTFQpOyUoUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4NCisgICAgICA8UHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM+JChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKTskKEVOQUJMRV9QUk9NSVNFUyk7
JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpOyQoRU5BQkxFXzNEX1JFTkRFUklORyk7
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKTskKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpOyQoRU5BQkxFX0JMT0IpOyQoRU5BQkxFX0NBTlZBU19QUk9YWSk7JChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpOyQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMp
OyQoRU5BQkxFX0NTU19JTUFHRV9TRVQpOyQoRU5BQkxFX0NTUzNfVEVYVCk7JChFTkFCTEVfQ1NT
X0JPWF9ERUNPUkFUSU9OX0JSRUFLKTskKEVOQUJMRV9DU1NfRklMVEVSUyk7JChFTkFCTEVfQ1NT
X0dSSURfTEFZT1VUKTskKEVOQUJMRV9DU1NfU0hBREVSUyk7JChFTkFCTEVfQ1NTX0NPTVBPU0lU
SU5HKTskKEVOQUJMRV9DU1NfUkVHSU9OUyk7JChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpOyQoRU5B
QkxFX0NTU19TSEFQRVMpOyQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJT04pOyQoRU5BQkxFX0NT
U19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVFJBTlNJVElPTlNfVU5QUkVGSVhFRCk7JChFTkFCTEVf
Q1VTVE9NX1NDSEVNRV9IQU5ETEVSKTskKEVOQUJMRV9TUUxfREFUQUJBU0UpOyQoRU5BQkxFX0RB
VEFHUklEKTskKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKTskKEVOQUJMRV9EQVRBX1RSQU5TRkVS
X0lURU1TKTskKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpOyQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTik7JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCk7JChFTkFCTEVfRklMVEVSUyk7JChFTkFC
TEVfRklMRV9TWVNURU0pOyQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKTskKEVOQUJMRV9HQU1FUEFE
KTskKEVOQUJMRV9HRU9MT0NBVElPTik7JChFTkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RI
Uk9UVExJTkcpOyQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUyk7JChFTkFCTEVfSUNPTkRBVEFCQVNF
KTskKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKTsk
KEVOQUJMRV9JTlBVVF9TUEVFQ0gpOyQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSk7JChFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKTskKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FTE9DQUwpOyQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpOyQoRU5BQkxFX0lOUFVUX1RZUEVf
VElNRSk7JChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKTskKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSKTskKEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUyk7JChFTkFCTEVfTEVHQUNZ
X05PVElGSUNBVElPTlMpOyQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpOyQoRU5BQkxFX0xJTktfUFJF
UkVOREVSKTskKEVOQUJMRV9NQVRITUwpOyQoRU5BQkxFX01FVEVSX0VMRU1FTlQpOyQoRU5BQkxF
X01JQ1JPREFUQSk7JChFTkFCTEVfTk9USUZJQ0FUSU9OUyk7JChFTkFCTEVfUEFHRV9WSVNJQklM
SVRZX0FQSSk7JChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCk7JChFTkFCTEVfUFJPWElNSVRZX0VW
RU5UUyk7JChFTkFCTEVfUVVPVEEpOyQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKTsk
KEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpOyQoRU5BQkxFX1NIQURPV19ET00pOyQoRU5BQkxFX1NI
QVJFRF9XT1JLRVJTKTskKEVOQUJMRV9TVFlMRV9TQ09QRUQpOyQoRU5BQkxFX1NWRyk7JChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKTskKEVOQUJMRV9TVkdfRk9OVFMpOyQoRU5BQkxFX1NV
QlBJWEVMX0xBWU9VVCk7JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKTskKEVOQUJMRV9VTkRPX01B
TkFHRVIpOyQoRU5BQkxFX1ZJREVPKTskKEVOQUJMRV9WSURFT19UUkFDSyk7JChFTkFCTEVfVklF
V19NT0RFX0NTU19NRURJQSk7JChFTkFCTEVfTUVESUFfU09VUkNFKTskKEVOQUJMRV9NRURJQV9T
VEFUSVNUSUNTKTskKEVOQUJMRV9XRUJfU09DS0VUUyk7JChFTkFCTEVfV0VCX1RJTUlORyk7JChF
TkFCTEVfV09SS0VSUyk7JChFTkFCTEVfWFNMVCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8
L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPg0KICAgICA8L0NsQ29tcGlsZT4NCiAgIDwvSXRlbURl
ZmluaXRpb25Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQpAQCAtMzAwLDEwICsyOTksNiBAQAogICAg
ICAgPFZhbHVlPiQoRU5BQkxFX01BVEhNTCk8L1ZhbHVlPg0KICAgICAgIDxFbnZpcm9ubWVudFZh
cmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+DQogICAgIDwvQnVpbGRNYWNybz4NCi0g
ICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCI+DQot
ICAgICAgPFZhbHVlPiQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCk8L1ZhbHVlPg0KLSAg
ICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+DQotICAg
IDwvQnVpbGRNYWNybz4NCiAgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iRU5BQkxFX01FRElBX1NP
VVJDRSI+DQogICAgICAgPFZhbHVlPiQoRU5BQkxFX01FRElBX1NPVVJDRSk8L1ZhbHVlPg0KICAg
ICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlPnRydWU8L0Vudmlyb25tZW50VmFyaWFibGU+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213268</attachid>
            <date>2013-10-03 09:28:53 -0700</date>
            <delta_ts>2013-10-03 10:18:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>19313</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTkzZWUzLi4xMzMxZWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDkt
MjMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIGFkZCBzaGFwZS1tYXJnaW4gc3VwcG9ydCBmb3IgaW1hZ2UgdmFsdWVkIHNoYXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQg
dGhlIHNoYXBlLW91dHNpZGUgbWFyZ2luLWJvdW5kYXJ5IGlzIGNvbXB1dGVkIGNvcnJlY3RseSBm
b3IgaW1hZ2UgdmFsdWVkIHNoYXBlcy4KKworICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91
dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1t
YXJnaW4tMDAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNp
ZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTEwLTAyICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1Mg
U2hhcGVzXSBJbXBsZW1lbnQgdGhlIHNoYXBlLWltYWdlLXRocmVzaG9sZCBwcm9wZXJ0eQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hh
cGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy1pbWFnZS1tYXJnaW4tMDAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yYzYwZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
aGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFy
Z2luLTAwMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUg
Ymx1ZSByb3VuZGVkIHJlY3RhbmdsZS4KKworWAorCitYCitYCisKK1gKK1hYWFgKK1BBU1MgaW1h
Z2VTaGFwZVJlY3QoJ2EnKS50b3AgaXMgMAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCBp
cyA1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnYicpLmxlZnQgaXMgMzAwCitQQVNTIGltYWdlU2hh
cGVSZWN0KCdjJykudG9wIGlzIDc1CitQQVNTIGltYWdlU2hhcGVSZWN0KCdjJykubGVmdCBpcyAz
MDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGltYWdlU2hhcGVS
ZWN0KCdlJykudG9wIGlzIDE1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLmxlZnQgaXMgMAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAxLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1p
bWFnZS1tYXJnaW4tMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZTE5N2I3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDEuaHRt
bApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisgICAgZnVuY3Rpb24gaW1hZ2VTaGFwZVJlY3QoZWxlbWVudElkKSAKKyAgICB7Cisg
ICAgICAgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlLXNoYXBlIikuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgIHZhciByID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZWxlbWVudElkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgcmV0dXJu
IHtsZWZ0OiByLmxlZnQgLSBzLmxlZnQsIHRvcDogci50b3AgLSBzLnRvcCwgd2lkdGg6IHIud2lk
dGgsIGhlaWdodDogci5oZWlnaHR9OworICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKKyAgICAgIHZhciBxdWlldCA9IHRydWU7IC8vIFBBU1Mgb3V0cHV0IGRlcGVuZHMg
b24gaWYgc3VicGl4ZWwgbGF5b3V0IGhhcyBiZWVuIGVuYWJsZWQKKworICAgICAgc2hvdWxkQmUo
ImltYWdlU2hhcGVSZWN0KCdhJykudG9wIiwgIjAiKTsKKyAgICAgIHNob3VsZEJlQ2xvc2VUbygi
aW1hZ2VTaGFwZVJlY3QoJ2EnKS5sZWZ0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNob3Vs
ZEJlKCJpbWFnZVNoYXBlUmVjdCgnYicpLnRvcCIsICI1MCIpOworICAgICAgc2hvdWxkQmUoImlt
YWdlU2hhcGVSZWN0KCdiJykubGVmdCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUoImltYWdl
U2hhcGVSZWN0KCdjJykudG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJl
Y3QoJ2MnKS5sZWZ0IiwgIjMwMCIpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3Qo
J2QnKS50b3AiLCAiMTI1Iik7CisgICAgICBzaG91bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0
KCdkJykubGVmdCIsIDI5MiwgMSwgcXVpZXQpOworCisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFw
ZVJlY3QoJ2UnKS50b3AiLCAiMTUwIik7CisgICAgICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3Qo
J2UnKS5sZWZ0IiwgIjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgI2ltYWdl
LXNoYXBlIHsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIC13ZWJraXQtc2hhcGUtb3V0
c2lkZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI1MHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PSc1
MCcgeT0nNTAnIHdpZHRoPScyMDAnIGhlaWdodD0nNTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsK
KyAgICAgICAgLXdlYmtpdC1zaGFwZS1tYXJnaW46IDUwcHg7CisgICAgICAgIC13ZWJraXQtc2hh
cGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRh
dGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnJz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMzAwJyBoZWlnaHQ9JzE1MCcgcng9JzUwJyBy
eT0nNTAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6
IG5vLXJlcGVhdDsKKyAgICAgICAgd2lkdGg6IDM1MHB4OyAKKyAgICAgICAgaGVpZ2h0OiAyNTBw
eDsgCisgICAgfQorCisgICAgI2NvbnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwg
c2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBn
cmVlbiBjb250ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByb3VuZGVkIHJlY3Rhbmds
ZS48L3A+CisgIDxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmUiPgor
ICAgICAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPjwvZGl2PgorICAgICAgPHNwYW4gaWQ9ImEiPlg8
L3NwYW4+PGJyPjxicj48c3BhbiBpZD0iYiI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImMiPlg8L3Nw
YW4+PGJyPjxicj48c3BhbiBpZD0iZCI+WDwvc3Bhbj48YnI+PHNwYW4gaWQ9ImUiPlhYWFg8L3Nw
YW4+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxv
YXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODI2NjUyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWlt
YWdlLW1hcmdpbi0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCBy
ZXF1aXJlcyB0aGUgQWhlbSBmb250LiBUaGUgZ3JlZW4gY29udGVudCBzaG91bGQgd3JhcCBhcm91
bmQgdGhlIGJsdWUgcm91bmRlZCByZWN0YW5nbGUuCisKK1gKKworWAorWAorCitYCitYWFhYCitQ
QVNTIGltYWdlU2hhcGVSZWN0KCdhJykudG9wIGlzIDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2In
KS50b3AgaXMgNTAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2InKS5yaWdodCBpcyAzMDAKK1BBU1Mg
aW1hZ2VTaGFwZVJlY3QoJ2MnKS50b3AgaXMgNzUKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2MnKS5y
aWdodCBpcyAzMDAKK1BBU1MgaW1hZ2VTaGFwZVJlY3QoJ2QnKS50b3AgaXMgMTI1CitQQVNTIGlt
YWdlU2hhcGVSZWN0KCdlJykudG9wIGlzIDE1MAorUEFTUyBpbWFnZVNoYXBlUmVjdCgnZScpLnJp
Z2h0IGlzIDAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0
c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhkN2Y5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3No
YXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJn
aW4tMDAyLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGltYWdlU2hhcGVSZWN0KGVsZW1lbnRJZCkg
CisgICAgeworICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZS1z
aGFwZSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICB2YXIgciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAg
ICAgIHJldHVybiB7cmlnaHQ6IHMucmlnaHQgLSByLnJpZ2h0LCB0b3A6IHIudG9wIC0gcy50b3As
IHdpZHRoOiByLndpZHRoLCBoZWlnaHQ6IHIuaGVpZ2h0fTsKKyAgICB9CisKKyAgICB3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcXVpZXQgPSB0cnVlOyAvLyBQQVNTIG91
dHB1dCBkZXBlbmRzIG9uIGlmIHN1YnBpeGVsIGxheW91dCBoYXMgYmVlbiBlbmFibGVkCisKKyAg
ICAgIHNob3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnYScpLnRvcCIsICIwIik7CisgICAgICBzaG91
bGRCZUNsb3NlVG8oImltYWdlU2hhcGVSZWN0KCdhJykucmlnaHQiLCAyOTIsIDEsIHF1aWV0KTsK
KworICAgICAgc2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdiJykudG9wIiwgIjUwIik7CisgICAg
ICBzaG91bGRCZSgiaW1hZ2VTaGFwZVJlY3QoJ2InKS5yaWdodCIsICIzMDAiKTsKKworICAgICAg
c2hvdWxkQmUoImltYWdlU2hhcGVSZWN0KCdjJykudG9wIiwgIjc1Iik7CisgICAgICBzaG91bGRC
ZSgiaW1hZ2VTaGFwZVJlY3QoJ2MnKS5yaWdodCIsICIzMDAiKTsKKworICAgICAgc2hvdWxkQmUo
ImltYWdlU2hhcGVSZWN0KCdkJykudG9wIiwgIjEyNSIpOworICAgICAgc2hvdWxkQmVDbG9zZVRv
KCJpbWFnZVNoYXBlUmVjdCgnZCcpLnJpZ2h0IiwgMjkyLCAxLCBxdWlldCk7CisKKyAgICAgIHNo
b3VsZEJlKCJpbWFnZVNoYXBlUmVjdCgnZScpLnRvcCIsICIxNTAiKTsKKyAgICAgIHNob3VsZEJl
KCJpbWFnZVNoYXBlUmVjdCgnZScpLnJpZ2h0IiwgIjAiKTsKKyAgICB9OworPC9zY3JpcHQ+Cis8
c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAg
ICAtd2Via2l0LXNoYXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2
ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNTBweCcgaGVpZ2h0
PScxMDBweCc+PHJlY3QgeD0nNTAnIHk9JzUwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxs
PSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtbWFyZ2luOiA1MHB4Owor
ICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzMwMCcgaGVp
Z2h0PScxNTAnIHJ4PSc1MCcgcnk9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgICAgIHdpZHRoOiAzMDBweDsgCisg
ICAgICAgIGhlaWdodDogMjUwcHg7IAorICAgIH0KKworICAgICNjb250ZW50IHsKKyAgICAgICAg
Zm9udDogMjVweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gVGhlIGdyZWVuIGNvbnRl
bnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJvdW5kZWQgcmVjdGFuZ2xlLjwvcD4KKyAg
PGRpdiBpZD0iY29udGVudCI+CisgICAgICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+PC9kaXY+Cisg
ICAgICA8c3BhbiBpZD0iYSI+WDwvc3Bhbj48YnI+PGJyPjxzcGFuIGlkPSJiIj5YPC9zcGFuPjxi
cj48c3BhbiBpZD0iYyI+WDwvc3Bhbj48YnI+PGJyPjxzcGFuIGlkPSJkIj5YPC9zcGFuPjxicj48
c3BhbiBpZD0iZSI+WFhYWDwvc3Bhbj4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3No
YXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJn
aW4tMDAzLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRz
aWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM3MDUzYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRz
L3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cisg
ICAgI2NvbnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICBtYXJnaW46IDBweDsKKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzIwMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVj
dCB4PScwJyB5PScwJyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+
Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9u
dC4gVGhlIGdyZWVuIGNvbnRlbnQgc2hvdWxkIHdyYXAgYXJvdW5kIHRoZSBibHVlIHJlY3Rhbmds
ZS48L3A+CisgIDxwcmUgaWQ9ImNvbnRlbnQiPgorICAgICAgICBYCisgICAgICAgIFgKK1gKKyAg
PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3No
YXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJn
aW4tMDAzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWZsb2F0cy1pbWFnZS1tYXJnaW4tMDAzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZjg2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxv
YXRzLWltYWdlLW1hcmdpbi0wMDMuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAg
ZmxvYXQ6IGxlZnQ7CisgICAgICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJkYXRhOmlt
YWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycg
d2lkdGg9JzIwMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB4PScwJyB5PScwJyB3aWR0aD0nMjAw
JyBoZWlnaHQ9JzUwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgICAgIC13ZWJraXQtc2hh
cGUtbWFyZ2luOiAwcHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAw
OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4
LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjAwcHgnIGhl
aWdodD0nMTAwcHgnPjxyZWN0IHg9JzAnIHk9JzAnIHdpZHRoPScyMDAnIGhlaWdodD0nNTAnIGZp
bGw9J2JsdWUnLz48L3N2Zz4iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVh
dDsKKyAgICAgICAgd2lkdGg6IDUwMHB4OyAKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsgCisgICAg
fQorCisgICAgI2NvbnRlbnQgeworICAgICAgICBmb250OiAyNXB4LzEgQWhlbSwgc2Fucy1zZXJp
ZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHA+VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIFRoZSBncmVlbiBjb250
ZW50IHNob3VsZCB3cmFwIGFyb3VuZCB0aGUgYmx1ZSByZWN0YW5nbGUuPC9wPgorICA8ZGl2IGlk
PSJjb250ZW50Ij4KKyAgICAgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj48L2Rpdj4KKyAgICAgIFg8
YnI+WDxicj5YCisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvTWF0aEV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCmluZGV4
IDcwMWU3NDAuLjliMjIzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTI5Niw2ICsyOTYsMTEgQEAg
aW5saW5lIGludCBjbGFtcFRvSW50ZWdlcihkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIGNsYW1w
VG88aW50Pih2YWx1ZSk7CiB9CiAKK2lubGluZSBpbnQgY2xhbXBUb1Vuc2lnbmVkKGRvdWJsZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gY2xhbXBUbzx1bnNpZ25lZD4odmFsdWUpOworfQorCiBpbmxp
bmUgZmxvYXQgY2xhbXBUb0Zsb2F0KGRvdWJsZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gY2xhbXBU
bzxmbG9hdD4odmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgzMGU3NDQuLjI3NDc4N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMy0wOS0yMyAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIFNoYXBlc10gYWRkIHNoYXBlLW1hcmdpbiBzdXBwb3J0
IGZvciBpbWFnZSB2YWx1ZWQgc2hhcGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE2MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBzaGFwZS1tYXJn
aW4gYm91bmRhcnkgZm9yIGEgc2hhcGUtb3V0c2lkZSB3aG9zZQorICAgICAgICB2YWx1ZSBpcyBh
biBpbWFnZS4KKworICAgICAgICBUZXN0czogZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9h
dHMvc2hhcGUtb3V0c2lkZS1mbG9hdHMtaW1hZ2UtbWFyZ2luLTAwMS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy1pbWFnZS1tYXJnaW4tMDAyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhcGVzL3NoYXBl
LW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtZmxvYXRzLWltYWdlLW1hcmdpbi0wMDMuaHRt
bAorCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0
b3IpOiBJbnRlcm5hbCB1dGlsaXR5IHRoYXQgZ2VuZXJhdGVzIHRoZSBtYXJnaW4gaW50ZXJ2YWxz
IGZvciB0aGUgaW1hZ2UgaW50ZXJ2YWwgc3BlY2lmaWVkIHdpdGggc2V0KCkuCisgICAgICAgIChX
ZWJDb3JlOjpNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRJbnNlcnRpb25Qb2ludCk6IEZpbmQgdGhlIGluc2VydGlvbiBwb2ludCBpbmRleCBmb3Ig
dGhlIHRoZSBzcGVjaWZpZWQgWCB2YWx1ZSwgd2l0aGluIGEgdmVjdG9yIG9mIGludGVydmFscyBz
b3J0ZWQgYnkgWDEuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6dW5p
dGVNYXJnaW5JbnRlcnZhbCk6IERlc3RydWN0aXZlbHkgdW5pdGUgb25lIGludGVydmFsIHdpdGgg
YW4gZXhpc3Rpbmcgb25lLCBvciBhcHBlbmQgaXQuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJT
aGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMpOiBSZXR1cm4gdGhlIGxhemlseSBj
b21wdXRlZCB2YWx1ZSwgb3IgY3JlYXRlIGl0IHdpdGggY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2
YWxzKCkuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6CisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OnVuaXRlTWFyZ2luSW50ZXJ2YWwpOgorICAgICAgICAqIFdU
Ri93dGYvTWF0aEV4dHJhcy5oOiBBZGRlZCBjbGFtcFRvVW5zaWduZWQoKSBpbmxpbmUuCisKIDIw
MTMtMTAtMDIgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NT
UyBTaGFwZXNdIEltcGxlbWVudCB0aGUgc2hhcGUtaW1hZ2UtdGhyZXNob2xkIHByb3BlcnR5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4
IDg3Y2Q5OGEuLjA3MDU1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC0zNCw2ICszNCw0NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIE1hcmdpbkludGVydmFsR2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBNYXJn
aW5JbnRlcnZhbEdlbmVyYXRvcih1bnNpZ25lZCByYWRpdXMpOworICAgIHZvaWQgc2V0KGludCB5
LCBpbnQgeDEsIGludCB4Mik7CisgICAgSW50U2hhcGVJbnRlcnZhbCBpbnRlcnZhbEF0KGludCB5
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8aW50PiBtX3hJbnRlcmNlcHRzOworICAg
IGludCBtX3k7CisgICAgaW50IG1feDE7CisgICAgaW50IG1feDI7Cit9OworCitNYXJnaW5JbnRl
cnZhbEdlbmVyYXRvcjo6TWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IodW5zaWduZWQgcmFkaXVzKQor
ICAgIDogbV95KDApCisgICAgLCBtX3gxKDApCisgICAgLCBtX3gyKDApCit7CisgICAgbV94SW50
ZXJjZXB0cy5yZXNpemUocmFkaXVzICsgMSk7CisgICAgdW5zaWduZWQgcmFkaXVzU3F1YXJlZCA9
IHJhZGl1cyAqIHJhZGl1czsKKyAgICBmb3IgKHVuc2lnbmVkIHkgPSAwOyB5IDw9IHJhZGl1czsg
eSsrKQorICAgICAgICBtX3hJbnRlcmNlcHRzW3ldID0gc3FydChzdGF0aWNfY2FzdDxkb3VibGU+
KHJhZGl1c1NxdWFyZWQgLSB5ICogeSkpOworfQorCit2b2lkIE1hcmdpbkludGVydmFsR2VuZXJh
dG9yOjpzZXQoaW50IHksIGludCB4MSwgaW50IHgyKQoreworICAgIEFTU0VSVCh5ID49IDAgJiYg
eDEgPj0gMCAmJiB4MiA+IHgxKTsKKyAgICBtX3kgPSB5OworICAgIG1feDEgPSB4MTsKKyAgICBt
X3gyID0geDI7Cit9CisKK0ludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6
OmludGVydmFsQXQoaW50IHkpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgeEludGVyY2VwdHNJbmRl
eCA9IGFicyh5IC0gbV95KTsKKyAgICBpbnQgZHggPSAoeEludGVyY2VwdHNJbmRleCA+PSBtX3hJ
bnRlcmNlcHRzLnNpemUoKSkgPyAwIDogbV94SW50ZXJjZXB0c1t4SW50ZXJjZXB0c0luZGV4XTsK
KyAgICByZXR1cm4gSW50U2hhcGVJbnRlcnZhbChzdGQ6Om1heCgwLCBtX3gxIC0gZHgpLCBtX3gy
ICsgZHgpOworfQorCiB2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjphcHBlbmRJbnRlcnZhbChp
bnQgeSwgaW50IHgxLCBpbnQgeDIpCiB7CiAgICAgQVNTRVJUKHkgPj0gMCAmJiB5IDwgc2l6ZSgp
ICYmIHgxID49IDAgJiYgeDIgPiB4MSAmJiAobV9pbnRlcnZhbExpc3RzW3ldLmlzRW1wdHkoKSB8
fCB4MSA+IG1faW50ZXJ2YWxMaXN0c1t5XS5sYXN0KCkueDIoKSkpOwpAQCAtNDIsNiArODEsMjAg
QEAgdm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YXBwZW5kSW50ZXJ2YWwoaW50IHksIGludCB4
MSwgaW50IHgyKQogICAgIG1faW50ZXJ2YWxMaXN0c1t5XS5hcHBlbmQoSW50U2hhcGVJbnRlcnZh
bCh4MSwgeDIpKTsKIH0KIAordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6dW5pdGVNYXJnaW5J
bnRlcnZhbChpbnQgeSwgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWwpCit7CisgICAg
QVNTRVJUKG1faW50ZXJ2YWxMaXN0c1t5XS5zaXplKCkgPD0gMSk7IC8vIEVhY2ggbV9pbnRlcnZh
bExpc3RzIGVudHJ5IGhhcyAwIG9yIG9uZSBpbnRlcnZhbC4KKworICAgIGlmIChtX2ludGVydmFs
TGlzdHNbeV0uaXNFbXB0eSgpKQorICAgICAgICBtX2ludGVydmFsTGlzdHNbeV0uYXBwZW5kKGlu
dGVydmFsKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSW50U2hhcGVJbnRlcnZhbCYgcmVzdWx0SW50
ZXJ2YWwgPSBtX2ludGVydmFsTGlzdHNbeV1bMF07CisgICAgICAgIHJlc3VsdEludGVydmFsLnNl
dChzdGQ6Om1pbihyZXN1bHRJbnRlcnZhbC54MSgpLCBpbnRlcnZhbC54MSgpKSwgc3RkOjptYXgo
cmVzdWx0SW50ZXJ2YWwueDIoKSwgaW50ZXJ2YWwueDIoKSkpOworICAgIH0KKworICAgIG1fYm91
bmRzLnVuaXRlKEludFJlY3QoaW50ZXJ2YWwueDEoKSwgeSwgaW50ZXJ2YWwud2lkdGgoKSwgMSkp
OworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hhcGVJbnRlcnZhbHNDb250YWluKGNvbnN0IElu
dFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMsIGNvbnN0IEludFNoYXBlSW50ZXJ2YWwmIGludGVy
dmFsKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbnRlcnZhbHMuc2l6ZSgpOyBp
KyspIHsKQEAgLTE2NSwxNCArMjE4LDM3IEBAIHZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6Omdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBJbnRTaGFwZUludGVydmFsCiAgICAg
fQogfQogCisvLyBDdXJyZW50bHkgbGltaXRlZCB0byBjb21wdXRpbmcgdGhlIG1hcmdpbiBib3Vu
ZGFyeSBmb3Igc2hhcGUtb3V0c2lkZSBmb3IgZmxvYXRzLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OC4KK1Bhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMo
dW5zaWduZWQgbWFyZ2luKSBjb25zdAoreworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFs
cz4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKHNpemUoKSArIG1h
cmdpbikpOworICAgIE1hcmdpbkludGVydmFsR2VuZXJhdG9yIGludGVydmFsR2VuZXJhdG9yKG1h
cmdpbik7CisKKyAgICBmb3IgKGludCB5ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4
WSgpOyArK3kpIHsKKyAgICAgICAgY29uc3QgSW50U2hhcGVJbnRlcnZhbHMmIGludGVydmFsc0F0
WSA9IGdldEludGVydmFscyh5KTsKKyAgICAgICAgaWYgKGludGVydmFsc0F0WS5pc0VtcHR5KCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW50IG1hcmdpblkwID0gc3RkOjptYXgo
MCwgY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcih5IC0gbWFyZ2luKSk7CisgICAgICAgIGludCBtYXJn
aW5ZMSA9IHN0ZDo6bWluKHJlc3VsdC0+c2l6ZSgpIC0gMSwgY2xhbXBUb1Bvc2l0aXZlSW50ZWdl
cih5ICsgbWFyZ2luKSk7CisgICAgICAgIGludGVydmFsR2VuZXJhdG9yLnNldCh5LCBpbnRlcnZh
bHNBdFlbMF0ueDEoKSwgaW50ZXJ2YWxzQXRZLmxhc3QoKS54MigpKTsKKyAgICAgICAgZm9yIChp
bnQgbWFyZ2luWSA9IG1hcmdpblkwOyBtYXJnaW5ZIDw9IG1hcmdpblkxOyArK21hcmdpblkpCisg
ICAgICAgICAgICByZXN1bHQtPnVuaXRlTWFyZ2luSW50ZXJ2YWwobWFyZ2luWSwgaW50ZXJ2YWxH
ZW5lcmF0b3IuaW50ZXJ2YWxBdChtYXJnaW5ZKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7Cit9CisKIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFw
ZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+
PSAwKTsKICAgICBpZiAoIXNoYXBlTWFyZ2luKCkpCiAgICAgICAgIHJldHVybiAqbV9pbnRlcnZh
bHM7CiAKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbiwgc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCi0gICAgcmV0
dXJuICptX2ludGVydmFsczsKKyAgICB1bnNpZ25lZCBtYXJnaW5Cb3VuZGFyeVJhZGl1cyA9IHN0
ZDo6bWluKGNsYW1wVG9VbnNpZ25lZChjZWlsKHNoYXBlTWFyZ2luKCkpKSwgc3RkOjptYXgobV9p
bWFnZVNpemUud2lkdGgoKSwgbV9pbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBpZiAoIW1fbWFy
Z2luSW50ZXJ2YWxzKQorICAgICAgICBtX21hcmdpbkludGVydmFscyA9IG1faW50ZXJ2YWxzLT5j
b21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMobWFyZ2luQm91bmRhcnlSYWRpdXMpOworCisgICAg
cmV0dXJuICptX21hcmdpbkludGVydmFsczsKIH0KIAogY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZh
bHMmIFJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAppbmRleCBmMTc5YTcwLi5hYTViOGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCkBA
IC01MiwyNyArNTIsMzEgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMo
aW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxzJiByZXN1bHQpIGNvbnN0OwogICAgIHZv
aWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIEludFNoYXBlSW50ZXJ2YWxz
JiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsWShpbnQgbWlu
WSwgY29uc3QgSW50U2l6ZSYgbWluU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdDsKKyAg
ICBQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhbHModW5zaWduZWQgbWFyZ2luKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBpbnQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJ2YWxMaXN0cy5zaXplKCk7IH0KKwogICAgIGNvbnN0IElu
dFNoYXBlSW50ZXJ2YWxzJiBnZXRJbnRlcnZhbHMoaW50IHkpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoeSA+PSAwICYmIHkgPCBzaXplKCkpOwogICAgICAgICByZXR1cm4gbV9pbnRlcnZh
bExpc3RzW3ldOwogICAgIH0KKwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgSW50UmVjdCYpIGNv
bnN0OwogICAgIGJvb2wgZ2V0SW50ZXJ2YWxYMVZhbHVlcyhpbnQgbWluWSwgaW50IG1heFksIGlu
dCBtaW5JbnRlcnZhbFdpZHRoLCBWZWN0b3I8aW50PiYgcmVzdWx0KSBjb25zdDsKLQorICAgIHZv
aWQgdW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwgY29uc3QgSW50U2hhcGVJbnRlcnZhbCYpOwog
ICAgIEludFJlY3QgbV9ib3VuZHM7Ci0gICAgVmVjdG9yPEludFNoYXBlSW50ZXJ2YWxzID4gbV9p
bnRlcnZhbExpc3RzOworICAgIFZlY3RvcjxJbnRTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbExp
c3RzOwogfTsKIAogY2xhc3MgUmFzdGVyU2hhcGUgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBlKTsKIHB1YmxpYzoKLSAgICBSYXN0ZXJTaGFwZShQ
YXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMpCisgICAgUmFzdGVyU2hh
cGUoUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzLCBjb25zdCBJbnRT
aXplJiBpbWFnZVNpemUpCiAgICAgICAgIDogU2hhcGUoKQogICAgICAgICAsIG1faW50ZXJ2YWxz
KGludGVydmFscykKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgewogICAg
IH0KIApAQCAtODgsNiArOTIsOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJhc3RlclNoYXBlSW50
ZXJ2YWxzJiBwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3Q7CiAKICAgICBPd25QdHI8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxzOworICAgIG11dGFibGUgT3duUHRyPFJhc3RlclNoYXBl
SW50ZXJ2YWxzPiBtX21hcmdpbkludGVydmFsczsKKyAgICBJbnRTaXplIG1faW1hZ2VTaXplOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcAppbmRleCBlZGEzYWM4Li4xOTcwNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIFBhc3NPd25QdHI8
U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBm
bG9hdCB0aHJlc2hvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBPd25QdHI8UmFzdGVyU2hhcGU+
IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNl
KCkpKTsKKyAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3
IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCksIGltYWdlU2l6ZSkpOwogICAgIHJhc3Rl
clNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgcmFzdGVyU2hhcGUtPm1f
bWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOwogICAgIHJhc3RlclNoYXBl
LT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>